Li4gSXRlcmF0b3JzL0NvbmNlcHRzLy9CaWRpcmVjdGlvbmFsIEl0ZXJhdG9yIHwyMAoKQmlkaXJlY3Rpb25hbCBJdGVyYXRvcgo9PT09PT09PT09PT09PT09PT09PT09CgpEZXNjcmlwdGlvbgotLS0tLS0tLS0tLQoKQSB8QmlkaXJlY3Rpb25hbCBJdGVyYXRvcnwgaXMgYSB8Rm9yd2FyZCBJdGVyYXRvcnwgdGhhdCBwcm92aWRlcyBhIHdheSB0byAKb2J0YWluIGFuIGl0ZXJhdG9yIHRvIHRoZSBwcmV2aW91cyBlbGVtZW50IGluIGEgc2VxdWVuY2UuIAoKUmVmaW5lbWVudCBvZgotLS0tLS0tLS0tLS0tCgp8Rm9yd2FyZCBJdGVyYXRvcnwKCkRlZmluaXRpb25zCi0tLS0tLS0tLS0tCgoqIGEgYmlkaXJlY3Rpb25hbCBpdGVyYXRvciBgYGlgYCBpcyBgZGVjcmVtZW50YWJsZWAgaWYgdGhlcmUgaXMgYSAicHJldmlvdXMiIAogIGl0ZXJhdG9yLCB0aGF0IGlzLCBpZiBgYHByaW9yPGk+Ojp0eXBlYGAgZXhwcmVzc2lvbiBpcyB3ZWxsLWRlZmluZWQ7IAogIGl0ZXJhdG9ycyBwb2ludGluZyB0byB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgc2VxdWVuY2UgYXJlIG5vdCAKICBkZWNyZW1lbnRhYmxlLiAKIAoKRXhwcmVzc2lvbiByZXF1aXJlbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkluIGFkZGl0aW9uIHRvIHRoZSByZXF1aXJlbWVudHMgZGVmaW5lZCBpbiB8Rm9yd2FyZCBJdGVyYXRvcnwsIAp0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50cyBtdXN0IGJlIG1ldC4gCgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgRXhwcmVzc2lvbiAgICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb21wbGV4aXR5ICAgICAgICAgICAgICAgIHwKKz09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09Kwp8IGBgbmV4dDxpPjo6dHlwZWBgICAgICB8IHxCaWRpcmVjdGlvbmFsIEl0ZXJhdG9yfCAgICAgICAgICAgICAgICAgIHwgQW1vcnRpemVkIGNvbnN0YW50IHRpbWUgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYHByaW9yPGk+Ojp0eXBlYGAgICAgfCB8QmlkaXJlY3Rpb25hbCBJdGVyYXRvcnwgICAgICAgICAgICAgICAgICB8IEFtb3J0aXplZCBjb25zdGFudCB0aW1lICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgYGBpOjpjYXRlZ29yeWBgICAgICAgIHwgfEludGVncmFsIENvbnN0YW50fCwgY29udmVydGlibGUgICAgICAgICAgfCBDb25zdGFudCB0aW1lICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgfCB0byBgYGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnYGAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgoKRXhwcmVzc2lvbiBzZW1hbnRpY3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi4uIHBhcnNlZC1saXRlcmFsOjoKCiAgICB0eXBlZGVmIHByaW9yPGk+Ojp0eXBlIGo7Cgo6UHJlY29uZGl0aW9uOgogICAgYGBpYGAgaXMgZGVjcmVtZW50YWJsZSAKCjpTZW1hbnRpY3M6CiAgICBgYGpgYCBpcyBhbiBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgcHJldmlvdXMgZWxlbWVudCBvZiB0aGUgCiAgICBzZXF1ZW5jZQoKOlBvc3Rjb25kaXRpb246CiAgICBgYGpgYCBpcyBkZXJlZmVyZW5jZWFibGUgYW5kIGluY3JlbWVudGFibGUgCgoKSW52YXJpYW50cwotLS0tLS0tLS0tCgpGb3IgYW55IGJpZGlyZWN0aW9uYWwgaXRlcmF0b3JzIGBgaWBgIGFuZCBgYGpgYCB0aGUgZm9sbG93aW5nIGludmFyaWFudHMgCmFsd2F5cyBob2xkOiAKCiogSWYgYGBpYGAgaXMgaW5jcmVtZW50YWJsZSwgdGhlbiBgYHByaW9yPCBuZXh0PGk+Ojp0eXBlID46OnR5cGVgYCBpcyBhIG51bGwgCiAgb3BlcmF0aW9uOyBzaW1pbGFybHksIGlmIGBgaWBgIGlzIGRlY3JlbWVudGFibGUsIGBgbmV4dDwgcHJpb3I8aT46OnR5cGUgPjo6dHlwZWBgCiAgaXMgYSBudWxsIG9wZXJhdGlvbi4gCgoKU2VlIGFsc28KLS0tLS0tLS0KCnxJdGVyYXRvcnN8LCB8Rm9yd2FyZCBJdGVyYXRvcnwsIHxSYW5kb20gQWNjZXNzIEl0ZXJhdG9yfCwgfEJpZGlyZWN0aW9uYWwgU2VxdWVuY2V8LCB8cHJpb3J8CgoKLi4gY29weXJpZ2h0OjogQ29weXJpZ2h0IKkgIDIwMDEtMjAwOSBBbGVrc2V5IEd1cnRvdm95IGFuZCBEYXZpZCBBYnJhaGFtcwogICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCiAgIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQo=