Q29tcGlsaW5nIEZyZWVUeXBlIDIgd2l0aCBQdXJlQyBjb21waWxlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpbU2VlIGJlbG93IGZvciBhIEdlcm1hbiB2ZXJzaW9uLl0KClRvIGNvbXBpbGUgRnJlZVR5cGUgMiBhcyBhIGxpYnJhcnkgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIG11c3QgYmUgYXBwbGllZDoKCi0gQWxsICouYyBmaWxlcyBtdXN0IHN0YXJ0IHdpdGggYW4gdXBwZXJjYXNlIGxldHRlci4KICAoSW4gY2FzZSBHRU1TQ1JJUFQgaXMgYXZhaWxhYmxlOgogIFNpbXBseSBkcmFnIHRoZSB3aG9sZSBGcmVlVHlwZSAyIGRpcmVjdG9yeSB0byB0aGUgZmlsZSBgRk5hbWVzLlNJQycuKQoKLSBZb3UgaGF2ZSB0byBjaGFuZ2UgdGhlIElOQ0xVREUgZGlyZWN0b3J5IGluIFB1cmVDJ3MgY29tcGlsZXIgb3B0aW9ucwogIHRvIGNvbnRhaW4gYm90aCB0aGUgYElOQ0xVREUnIGFuZCBgZnJlZXR5cGUyXGluY2x1ZGUnIGRpcmVjdG9yeS4KICBFeGFtcGxlOgoKICAgIElOQ0xVREU7RTpcZnJlZXR5cGUyXGluY2x1ZGUKCi0gVGhlIGZpbGUgYGZyZWV0eXBlMi9pbmNsdWRlL0Z0MmJ1aWxkLmgnIG11c3QgYmUgcGF0Y2hlZCBhcyBmb2xsb3dzIHRvCiAgaW5jbHVkZSBBVEFSSS5IOgoKICAgICNpZm5kZWYgRlQyX0JVSUxEX0dFTkVSSUNfSF8KICAgICNkZWZpbmUgRlQyX0JVSUxEX0dFTkVSSUNfSF8KCiAgICAjaW5jbHVkZSAiQVRBUkkuSCIKCgoKQ29tcGlsaWVyZW4gdm9uIEZyZWVUeXBlIDIgbWl0IFB1cmVDCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKVW0gRnJlZVR5cGUgMiBhbHMgZWluZSBCaWJsaW90aGVrIChsaWJyYXJ5KSB6dSBjb21waWxpZXJlbiwgbXVzcyBmb2xnZW5kZXMKZ2WEbmRlcnQgd2VyZGVuOgoKLSBBbGxlICouYy1maWxlcyBtgXNzZW4gbWl0IGVpbmVtIEdST1NTQlVDSFNUQUJFTiBiZWdpbm5lbi4KICAoRmFsbHMgR0VNU0NSSVBUIHp1ciBWZXJmgWd1bmcgc3RlaHQ6CiAgRGVuIGtvbXBsZXR0ZW4gT3JkbmVyIGZyZWV0eXBlMiBhdWYgZGllIERhdGVpIGBGTmFtZXMuU0lDJyBkcmFnZ2VuLikKCi0gSW4gZGVuIENvbXBpbGVyLU9wdGlvbmVuIHZvbiBQdXJlQyBtdXNzIGRhcyBJTkNMVURFIGRpcmVjdG9yeSBhdWYgSU5DTFVERQogIHVuZCBmcmVldHlwZTJcaW5jbHVkZSB2ZXJ3ZWlzZW4uIFouQi46CgogICAgSU5DTFVERTtFOlxmcmVldHlwZTJcaW5jbHVkZQoKLSBJbiBkZXIgRGF0ZWkgZnJlZXR5cGUyL2luY2x1ZGUvRnQyYnVpbGQuaCBtdXNzIHp1IEJlZ2lubgogIGVpbiAjaW5jbHVkZSAiQVRBUkkuSCIgd2llIGZvbGd0IGVpbmdlZoFndCB3ZXJkZW46CgogICAgI2lmbmRlZiBGVDJfQlVJTERfR0VORVJJQ19IXwogICAgI2RlZmluZSBGVDJfQlVJTERfR0VORVJJQ19IXwoKICAgICNpbmNsdWRlICJBVEFSSS5IIgoKLS0tIGVuZCBvZiBSRUFETUUuVFhUIC0tLQo=