Li4gU2VxdWVuY2VzL0NsYXNzZXMvL2xpc3RfYyB8ODAKCmxpc3RfYwo9PT09PT0KCkRlc2NyaXB0aW9uCi0tLS0tLS0tLS0tCgpgYGxpc3RfY2BgIGlzIGFuIHxJbnRlZ3JhbCBTZXF1ZW5jZSBXcmFwcGVyfCBmb3IgfGxpc3R8LiBBcyBzdWNoLCBpdCBzaGFyZXMKYWxsIHxsaXN0fCBjaGFyYWN0ZXJpc3RpY3MgYW5kIHJlcXVpcmVtZW50cywgYW5kIGRpZmZlcnMgb25seSBpbiB0aGUgd2F5IHRoZSAKb3JpZ2luYWwgc2VxdWVuY2UgY29udGVudCBpcyBzcGVjaWZpZWQuCgpIZWFkZXIKLS0tLS0tCgorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IFNlcXVlbmNlIGZvcm0gICAgIHwgSGVhZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwp8IFZhcmlhZGljICAgICAgICAgIHwgYGAjaW5jbHVkZSA8Ym9vc3QvbXBsL2xpc3RfYy5ocHA+YGAgICAgICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IE51bWJlcmVkICAgICAgICAgIHwgYGAjaW5jbHVkZSA8Ym9vc3QvbXBsL2xpc3QvbGlzdGBgXCAqbipcIGBgX2MuaHBwPmBgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwoKCk1vZGVsIG9mCi0tLS0tLS0tCgoqIHxJbnRlZ3JhbCBTZXF1ZW5jZSBXcmFwcGVyfAoqIHxWYXJpYWRpYyBTZXF1ZW5jZXwKKiB8Rm9yd2FyZCBTZXF1ZW5jZXwKKiB8RXh0ZW5zaWJsZSBTZXF1ZW5jZXwKKiB8RnJvbnQgRXh0ZW5zaWJsZSBTZXF1ZW5jZXwKCgpFeHByZXNzaW9uIHNlbWFudGljcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKfFNlbWFudGljcyBkaXNjbGFpbWVyLi4ufCB8bGlzdHwuCgouLiB3b3JrYXJvdW5kIHN1YnN0aXR1dGlvbiBidWcgKHNob3VsZCBiZSByZXBsYWNlOjogbGlzdFwgKm4qXCBfYzxULFwgfGMxLi4uY258PikKLi4gfGxpc3RuX2M8VCwuLi4+fCByZXBsYWNlOjogbGlzdFwgKm4qXCBfYzxULFwgKmMqXCA6c3ViOmAxYCxcICpjKlwgOnN1YjpgMmAsLi4uIFwgKmMqXCA6c3ViOmBuYFwgPgoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBFeHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2VtYW50aWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCAuLiBwYXJzZWQtbGl0ZXJhbDo6ICAgICAgICAgICAgICAgICAgIHwgQSB8bGlzdHwgb2YgaW50ZWdyYWwgY29uc3RhbnQgd3JhcHBlcnMgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBpbnRlZ3JhbF9jPFQsYGBcIHxjMXxcIGBgPmBgLCAgICAgICAgICAgICAgIHwKfCAgICBsaXN0X2M8VCxcIHxjMS4uLmNufD4gICAgICAgICAgICAgIHwgYGBpbnRlZ3JhbF9jPFQsYGBcIHxjMnxcIGBgPmBgLCAuLi4gICAgICAgICAgIHwKfCAgICB8bGlzdG5fYzxULC4uLj58ICAgICAgICAgICAgICAgICAgIHwgYGBpbnRlZ3JhbF9jPFQsYGBcIHxjbnxcIGBgPmBgOyAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VlIHxJbnRlZ3JhbCBTZXF1ZW5jZSBXcmFwcGVyfC4gICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAuLiBwYXJzZWQtbGl0ZXJhbDo6ICAgICAgICAgICAgICAgICAgIHwgSWRlbnRpY2FsIHRvIGBgbGlzdGBgXCAqbipcIGBgPGBgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBpbnRlZ3JhbF9jPFQsYGBcIHxjMXxcIGBgPmBgLCAgICAgICAgICAgICAgIHwKfCAgICBsaXN0X2M8VCxcIHxjMS4uLmNufD46OnR5cGUgICAgICAgIHwgYGBpbnRlZ3JhbF9jPFQsYGBcIHxjMnxcIGBgPmBgLCAuLi4gICAgICAgICAgIHwKfCAgICB8bGlzdG5fYzxULC4uLj58Ojp0eXBlICAgICAgICAgICAgIHwgYGBpbnRlZ3JhbF9jPFQsYGBcIHxjbnxcIGBgPmBgIGBgPmBgOyAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VlIHxJbnRlZ3JhbCBTZXF1ZW5jZSBXcmFwcGVyfC4gICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAuLiBwYXJzZWQtbGl0ZXJhbDo6ICAgICAgICAgICAgICAgICAgIHwgSWRlbnRpY2FsIHRvIGBgVGBgOyBzZWUgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfEludGVncmFsIFNlcXVlbmNlIFdyYXBwZXJ8LiAgICAgICAgICAgICAgICAgIHwKfCAgIGxpc3RfYzxULFwgfGMxLi4uY258Pjo6dmFsdWVfdHlwZSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgIHxsaXN0bl9jPFQsLi4uPnw6OnZhbHVlX3R5cGUgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgpFeGFtcGxlCi0tLS0tLS0KCi4uIHBhcnNlZC1saXRlcmFsOjoKICAgIAogICAgdHlwZWRlZiBsaXN0X2M8aW50LDEsMiwzLDUsNywxMiwxOSwzMT4gZmlib25hY2NpOwogICAgdHlwZWRlZiBwdXNoX2Zyb250PGZpYm9uYWNjaSxpbnRfPDE+ID46OnR5cGUgZmlib25hY2NpMjsKICAgIAogICAgQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTiggZnJvbnQ8Zmlib25hY2NpMj46OnR5cGU6OnZhbHVlLCA9PSwgMSApOwoKClNlZSBhbHNvCi0tLS0tLS0tCgp8U2VxdWVuY2VzfCwgfEludGVncmFsIFNlcXVlbmNlIFdyYXBwZXJ8LCB8bGlzdHwsIHxpbnRlZ3JhbF9jfCwgfHZlY3Rvcl9jfCwgfHNldF9jfCwgfHJhbmdlX2N8CgoKLi4gY29weXJpZ2h0OjogQ29weXJpZ2h0IKkgIDIwMDEtMjAwOSBBbGVrc2V5IEd1cnRvdm95IGFuZCBEYXZpZCBBYnJhaGFtcwogICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCiAgIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQo=