ICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgIGNvbW1vbnMtZGJjcC0xLjMvMS40IFJFTEVBU0UgTk9URVMKClRoaXMgcmVsZWFzZSBpbmNsdWRlcyBuZXcgZmVhdHVyZXMgYXMgd2VsbCBhcyBidWcgZml4ZXMgYW5kIGVuaGFuY2VtZW50cy4gU29tZSBidWcgZml4ZXMgY2hhbmdlIHNlbWFudGljcwooZS5nLiBjb25uZWN0aW9uIGNsb3NlIGlzIG5vdyBpZGVtcG90ZW50KS4gIFRoZSAxLjMgYW5kIDEuNCByZWxlYXNlcyBvZiBEQkNQIGFyZSBidWlsdCBmcm9tIHRoZSBzYW1lIHNvdXJjZXMuClZlcnNpb24gMS40IHN1cHBvcnRzIEpEQkMgNCwgc28gcmVxdWlyZXMgSkRLIDEuNi4gIFZlcnNpb24gMS4zIHN1cHBvcnRzIEpEQkMgMyBhbmQgaGFzIEpESyAxLjQgYXMgaXRzIG1pbmltdW0KSkRLIHJlcXVpcmVtZW50LiAgT3RoZXIgdGhhbiBzdXBwb3J0IGZvciB0aGUgYWRkZWQgbWV0aG9kcyBpbiBKREJDIDQsIHRoZXJlIGlzIG5vdGhpbmcgbmV3IG9yIGRpZmZlcmVudCBpbgpEQkNQIDEuNCB2cy4gREJDUCAxLjMuIEFwcGxpY2F0aW9ucyBydW5uaW5nIHVuZGVyIEpESyAxLjQtMS41IG11c3QgdXNlIERCQ1AgMS4zLiAgQXBwbGljYXRpb25zIHJ1bm5pbmcgdW5kZXIKSkRLIDEuNiBtYXkgdXNlIERCQ1AgMS40LgoKQ2hhbmdlcyBzaW5jZSBEQkNQIDEuMi4yIGluY2x1ZGU6CgpOZXcgZmVhdHVyZXM6Cm8gIERCQ1AtMjA0OiAgTWFkZSBQb29saW5nQ29ubmVjdGlvbiBwb29sIENhbGxhYmxlU3RhdGVtZW50cy4gV2hlbiBCYXNpY0RhdGFTb3VyY2UncyAKICAgICAgICBwb29sUHJlcGFyZWRTdGF0ZW1lbnRzIHByb3BlcnR5IGlzIHRydWUsIENhbGxhYmxlU3RhdGVtZW50cyBhcmUgbm93CiAgICAgICAgcG9vbGVkIGFsb25nIHdpdGggUHJlcGFyZWRTdGF0ZW1lbnRzLiBUaGUgbWF4T3BlblByZXBhcmVkU3RhdGVtZW50cwogICAgICAgIHByb3BlcnR5IGxpbWl0cyB0aGUgY29tYmluZWQgbnVtYmVyIG9mIENhbGxhYmxlIGFuZCBQcmVwYXJlZCBzdGF0ZW1lbnRzCiAgICAgICAgdGhhdCBjYW4gYmUgaW4gdXNlIGF0IGEgZ2l2ZW4gdGltZS4gVGhhbmtzIHRvIFdlaSBDaGVuLiAKbyAgREJDUC0yMjY6ICBBZGRlZCBhIHZhbGlkYXRpb25RdWVyeVRpbWVvdXQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gQmFzaWNEYXRhU291cmNlCiAgICAgICAgYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIHRpbWVvdXQgdmFsdWUgKGluIHNlY29uZHMpIGZvciBjb25uZWN0aW9uCiAgICAgICAgdmFsaWRhdGlvbiBxdWVyaWVzLiAKbyAgREJDUC0xNzU6ICBBZGRlZCBhIGNvbm5lY3Rpb25Jbml0U3FscyBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0byBCYXNpY0RhdGFTb3VyY2UKICAgICAgICBhbGxvd2luZyB0aGUgdXNlciB0byBzcGVjaWZ5IGEgY29sbGVjdGlvbiBvZiBTUUwgc3RhdGVtZW50cyB0byBleGVjdXRlCiAgICAgICAgb25lIHRpbWUgd2hlbiBhIHBoeXNpY2FsIGRhdGFiYXNlIGNvbm5lY3Rpb24gaXMgZmlyc3Qgb3BlbmVkLiBUaGFua3MgdG8gSmlyaSBNZWxpY2huYSBhbmQgSmVyb21lIExhY29zdGUuIApvICBEQkNQLTIyODogIEFkZGVkIHN1cHBvcnQgZm9yIHBvb2xpbmcgbWFuYWdlZCBjb25uZWN0aW9ucy4gVGhhbmtzIHRvIERhaW4gU3VuZHN0cm9tLiAKbyAgREJDUC0yMzA6ICBBZGRlZCBCYXNpY01hbmFnZWREYXRhU291cmNlLCBleHRlbmRpbmcgQmFzaWNEYXRhU291cmNlLgogICAgICAgIEFsc28gaW1wcm92ZWQgZXh0ZW5zaWJpbGl0eSBvZiBCYXNpY0RhdGFTb3VyY2UgYnkgZW5jYXBzdWxhdGluZwogICAgICAgIG1ldGhvZHMgdG8gY3JlYXRlIG9iamVjdCBwb29sLCBjb25uZWN0aW9uIGZhY3RvcnkgYW5kIGRhdGFzb3VyY2UKICAgICAgICBpbnN0YW5jZSBwcmV2aW91c2x5IGVtYmVkZGVkIGluIGNyZWF0ZURhdGFTb3VyY2UuIFRoYW5rcyB0byBEYWluIFN1bmRzdHJvbS4gCgpGaXhlZCBCdWdzOgpvICBEQkNQLTMwMzogIEVuc3VyZSBTdGF0ZW1lbnQuZ2V0R2VuZXJhdGVkS2V5cygpIHdvcmtzIGNvcnJlY3RseSB3aXRoIHRoZSBDUERTCiAgICAgICAgYWRhcHRlci4gVGhhbmtzIHRvIERhdmUgT3hsZXkuIApvICBEQkNQLTMwMjogIFJlbW92ZWQgaW5jb3JyZWN0bHkgYWR2ZXJ0aXNlZCBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGZyb20KICAgICAgICBKT0NMQ29udGVudEhhbmRsZXIuQ29uc3RydWN0b3JEZXRhaWxzLmNyZWF0ZU9iamVjdCgpLiBUaGFua3MgdG8gU2ViYXN0aWFuIEJhemxleS4gCm8gIERCQ1AtODogIEhhbmRsZSB1c2VyIHBhc3N3b3JkIGNoYW5nZXMgZm9yIEluc3RhbmNlS2V5RGF0YVNvdXJjZXMuIApvICBEQkNQLTI5NDogIEFkZGVkIFBvb2xhYmxlTWFuYWdlZENvbm5lY3Rpb24gYW5kIFBvb2xhYmxlTWFuYWdlZENvbm5lY3Rpb25GYWN0b3J5IHNvIHRoYXQKICAgICAgICBwb29sZWQgbWFuYWdlZCBjb25uZWN0aW9ucyBjYW4gdW5yZWdpc3RlciB0aGVtc2VsdmVzIGZyb20gdHJhbnNhY3Rpb24gcmVnaXN0cmllcywKICAgICAgICBhdm9pZGluZyByZXNvdXJjZSBsZWFrcy4gVGhhbmtzIHRvIFBoaWxpcHBlIE1vdWF3YWQuIApvICBQb29sYWJsZUNvbm5lY3Rpb25GYWN0b3J5Lm1ha2VPYmplY3QoKSBpcyBubyBsb25nZXIgc3luY2hyb25pemVkLiBUaGlzCiAgICAgICAgcHJvdmlkZXMgaW1wcm92ZWQgcmVzcG9uc2UgdGltZXMgd2hlbiBsb2FkIHNwaWtlcyBhdCB0aGUgY29zdCBvZiBhCiAgICAgICAgZmFzdGVyIHJpc2UgaW4gZGF0YWJhc2Ugc2VydmVyIGxvYWQuIFRoaXMgY2hhbmdlIHdhcyBtYWRlIGFzIGEgcGFydGlhbAogICAgICAgIGZpeCBmb3IgREJDUC0yMTIgYWx0aG91Z2ggaXQgZG9lcyBub3QgZnVsbHkgYWRkcmVzcyB0aGF0IGlzc3VlLiAKbyAgREJDUC0yNDI6ICBSZXZlcnRlZCBEZWxlZ2F0aW5nQ29ubmVjdGlvbiBjbG9zZSB0byAxLjIuMiB2ZXJzaW9uIHRvIGVuc3VyZQogICAgICAgIG9wZW4gc3RhdGVtZW50cyBhcmUgY2xvc2VkIGJlZm9yZSB0aGUgdW5kZXJseWluZyBjb25uZWN0aW9uIGlzIGNsb3NlZC4gCm8gIEFkZCBzb21lIHRlc3QgY2FzZXMgdGhhdCB3ZXJlIG1pc3NpbmcgZnJvbSB0aGUgVGVzdEFsbCB0ZXN0IHN1aXRlLiAKbyAgREJDUC0yMzU6ICBSZWZhY3RvciBEZWxlZ2F0aW5nQ29ubmVjdGlvbiBhbmQgTWFuYWdlZENvbm5lY3Rpb24gZW5hYmxlIG92ZXJyaWRkZW4KICAgICAgICBlcXVhbHMoKSBhbmQgaGFzaGNvZGUoKSB0byB3b3JrIGNvcnJlY3RseS4gCm8gIERCQ1AtMjE1OiAgTW9kaWZpZWQgQmFzaWNEYXRhU291cmNlRmFjdG9yeSB0byBjb21wbGV0ZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcG9vbAogICAgICAgIGJ5IGNyZWF0aW5nIGluaXRpYWxTaXplIGNvbm5lY3Rpb25zIHJhdGhlciB0aGFuIGxlYXZpbmcgdGhpcyB0byBsYXp5CiAgICAgICAgaW5pdGlhbGl6YXRpb24gd2hlbiB0aGUgcG9vbCBpcyB1c2VkLiAKbyAgREJDUC0yNTM6ICBFbGltaW5hdGVkIG1hc2tlZCBfc3RtdCBmaWVsZCBpbiBkZXNjZW5kZW50cyBvZiBEZWxlZ2F0aW5nU3RhdGVtZW50LiAKbyAgREJDUC0xOTE6ICBNb2RpZmllZCBEQkNQIHNvdXJjZXMgdG8gc3VwcG9ydCBjb21waWxhdGlvbiB1bmRlciBKREsgMS40LTEuNgogICAgICAgIHVzaW5nIEFudCBmbGFncyB0byBkbyBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gVGhhbmtzIHRvIE1pY2hhZWwgSGV1ZXIgYW5kIEouIERhdmlkIEJldXRlbC4gCm8gIERCQ1AtMjcyOiAgQWRkZWQgYSBzdGF0aWMgaW5pdGlhbGl6ZXIgdG8gQmFzaWNEYXRhc291cmNlIHRoYXQgY2FsbHMKICAgICAgICBEcml2ZXJNYW5hZ2VyLmdldERyaXZlcnMoKSB0byBmb3JjZSBpbml0aWFsaXphdGlvbiBiZWZvcmUgd2UgZXZlciBkbwogICAgICAgIGFueXRoaW5nIHRoYXQgbWlnaHQgdXNlIENsYXNzLmZvck5hbWUoKSB0byBsb2FkIChhbmQgcmVnaXN0ZXIpIGEgSkRCQwogICAgICAgIGRyaXZlci4gCm8gIERCQ1AtNDogIEVsaW1pbmF0ZWQgZGlyZWN0IFN5c3RlbS5vdXQgY2FsbHMgaW4gQWJhbmRvbmVkVHJhY2UuIApvICBEQkNQLTI2NDogIE1vZGlmaWVkIERlbGVnYXRpbmdTdGF0bWVudCBjbG9zZSB0byBjbGVhciBvcGVuIGJhdGNoZXMuIApvICBEQkNQLTI1NTogIEVsaW1pbmF0ZWQgdW51c2VkIHByaXZhdGUgInBhcmVudCIgZmllbGQgaW4gQWJhbmRvbmVkVHJhY2UuIApvICBEQkNQLTI3MzogIEZpeGVkIGVycm9ycyBoYW5kbGluZyBib29sZWFuLXZhbHVlZCBSZWZlcmVuY2UgcHJvcGVydGllcyBpbiAKICAgICAgICBJbnN0YW5jZUtleU9iamVjdEZhY3RvcnksIERyaXZlckFkYXB0ZXJDUERTIHRoYXQgd2VyZSBjYXVzaW5nIAogICAgICAgIHRlc3RPbkJvcnJvdyBhbmQgcG9vbFByZXBhcmVkU3RhdGVtZW50cyBwcm9wZXJ0aWVzIHRvIGJlIGluY29ycmVjdGx5CiAgICAgICAgc2V0IHdoZW4gY3JlYXRpbmcgb2JqZWN0cyBmcm9tIGphdmF4Lm5hbWluZy5SZWZlcmVuY2UgaW5zdGFuY2VzLiBUaGFua3MgdG8gTWFyayBMaW4uIApvICBEQkNQLTI3MTogIE1hZGUgcHJpdmF0ZSBpbnN0YW5jZSBmaWVsZHMgb2YgQWJhbmRvbmVkVHJhY2Ugdm9sYXRpbGUgKHBhcmVudCwKICAgICAgICBjcmVhdGVkQnksIGxhc3RVc2VkLCBjcmVhdGVkVGltZSkgb3IgZmluYWwgKHRyYWNlKS4gVGhhbmtzIHRvIFNlYmFzdGlhbiBCYXpsZXkuIApvICBEQkNQLTI3MDogIE5hcnJvd2VkIHN5bmNocm9uaXphdGlvbiBpbiBBYmFuZG9uZWRUcmFjZSB0byByZXNvbHZlIGFuIEV2aWN0b3IgZGVhZGxvY2suIFRoYW5rcyB0byBGaWxpcCBIYW5pay4gCm8gIERCQ1AtMjE4OiAgQ29ycmVjdGVkIEphdmFkb2MgdG8gc3RhdGUgdGhhdCBnZXRMb2dpblRpbWVvdXQgYW5kIHNldExvZ2luVGltZW91dCBhcmUKICAgICAgICBOT1Qgc3VwcG9ydGVkIGJ5IEJhc2ljRGF0YVNvdXJjZS4gCm8gIERCQ1AtMjIxOiAgQmFzaWNEYXRhU291cmNlLmNsb3NlKCkgbm93IHBlcm1hbmVudGx5IG1hcmtzIHRoZSBkYXRhIHNvdXJjZSBhcyBjbG9zZWQsCiAgICAgICAgYW5kIG5vIG5ldyBjb25uZWN0aW9ucyBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgZGF0YSBzb3VyY2UuIEF0IGNsb3NlIGFsbAogICAgICAgIGlkbGUgY29ubmVjdGlvbnMgYXJlIGRlc3Ryb3llZCBhbmQgdGhlIG1ldGhvZCByZXR1cm5zLiAgQXMgdGhlIHJlbWFpbmluZwogICAgICAgIGFjdGl2ZSBjb25uZWN0aW9ucyBhcmUgY2xvc2VkLCB0aGV5IGFyZSBkZXN0cm95ZWQuIApvICBEQkNQLTI0MTogIEVsaW1pbmF0ZWQgcG90ZW50aWFsIHNvdXJjZXMgb2YgTnVsbFBvaW50ZXJFeGNlcHRpb25zIGluIAogICAgICAgIFBvb2xpbmdDb25uZWN0aW9uLiAKbyAgREJDUC0yMTY6ICBJbXByb3ZlZCBlcnJvciByZWNvdmVyeSBhbmQgbGlzdGVuZXIgY2xlYW51cCBpbiAKICAgICAgICBLZXllZENQRFNDb25uZWN0aW9uRmFjdG9yeS4gU3Vic3RpdHV0ZWQgY2FsbHMgdG8gZGVzdHJveU9iamVjdCB3aXRoCiAgICAgICAgIF9wb29sLmludmFsaWRhdGVPYmplY3Qgb24gZXJyb3IgdG8gZW5zdXJlIHBvb2wgYWN0aXZlIGNvdW50IGlzCiAgICAgICAgZGVjcmVtZW50ZWQgb24gZXJyb3IgZXZlbnRzLiBFbnN1cmVkIHRoYXQgZXZlbnRzIGZyb20gY2xvc2VkIG9yIGludmFsaWQKICAgICAgICBjb25uZWN0aW9ucyBhcmUgaWdub3JlZCBhbmQgbGlzdGVuZXJzIGFyZSBjbGVhbmVkIHVwLiBUaGFua3MgdG8gTWFyY29zIFNhbnouIApvICBEQkNQLTI0NTogIEZpeGVkIGVycm9yIGluIFNoYXJlZFBvb2xEYXRhU291cmNlIGNhdXNpbmcgaW5jb3JyZWN0IHBhc3N3b3JkcyB0byBiZSAKICAgICAgICBzdG9yZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLiBUaGFua3MgdG8gTWljaGFlbCBEcmVjaHNlbC4gCm8gIERCQ1AtMjM3OiAgQWRkZWQgZXhjZXB0aW9uIGhhbmRsZXIgdG8gZW5zdXJlIHRoYXQgUG9vbGVkQ29ubmVjdGlvbnMgYXJlIG5vdAogICAgICAgIG9ycGhhbmVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBzZXRVcERlZmF1bHRzIG9yIGNsZWFyV2FybmluZ3MgaW4gCiAgICAgICAgSW50YW5jZUtleURhdGFTb3VyY2UuZ2V0Q29ubmVjdGlvbi4gVGhhbmtzIHRvIE9saXZlciBNYXR6LiAKbyAgREJDUC0yNTI6ICBNYWRlIGdldFBvb2wgc3luY2hyb25pemVkIGluIFBvb2xhYmxlQ29ubmVjdGlvbkZhY3RvcnkuCiAgICAgICAgRml4ZXMgaW5jb25zaXN0ZW50IHN5bmNocm9uaXphdGlvbiBhY2Nlc3NpbmcgX3Bvb2wuIFRoYW5rcyB0byBGaW5kQnVncy4gCm8gIERCQ1AtMjUyOiAgRml4ZWQgaW5jb25zaXN0ZW50IHN5bmNocm9uaXphdGlvbiBvbiBfcm9sbGJhY2tBZnRlclZhbGlkYXRpb24sCiAgICAgICAgX3ZhbGlkYXRpb25RdWVyeSBhbmQgX3Bvb2wgaW4gQ1BEU0Nvbm5lY3Rpb25GYWN0b3J5IGFuZCAKICAgICAgICBLZXllZENQRFNDb25uZWN0aW9uRmFjdG9yeSBieSBtYWtpbmcgdGhlIGZpcnN0IHR3byB2b2xhdGlsZSBhbmQgbWFraW5nCiAgICAgICAgYm90aCBnZXR0ZXIgYW5kIHNldHRlciBmb3IgX3Bvb2wgc3luY2hyb25pemVkLiBUaGFua3MgdG8gRmluZEJ1Z3MuIAoKQ2hhbmdlczoKbyAgREJDUC0zMDU6ICBVc2UgYW4gQVBJIHNwZWNpZmljIGV4Y2VwdGlvbiBmb3IgbG9nZ2luZyBhYmFuZG9uZWQgb2JqZWN0cyB0byBtYWtlCiAgICAgICAgc2Nhbm5pbmcgdGhlIGxvZ3MgZm9yIHRoZXNlIGV4Y2VwdGlvbnMgc2ltcGxlciBhbmQgdG8gcHJvdmlkZSBhIGJldHRlcgogICAgICAgIG1lc3NhZ2UgdGhhdCBpbmNsdWRlcyB0aGUgY3JlYXRpb24gdGltZSBvZiB0aGUgYWJhbmRvbmVkIG9iamVjdC4gVGhhbmtzIHRvIENocmlzdG9waGVyIFNjaHVsdHouIApvICBEQkNQLTIwMzogIE1ha2UgdGhlIGNsYXNzIGxvYWRlciB1c2VkIHRvIGxvYWQgdGhlIEpEQkMgZHJpdmVyIGNvbmZpZ3VyYWJsZSBmb3IgdGhlCiAgICAgICAgQmFzaWNEYXRhc291cmNlLiBUaGFua3MgdG8gTWFyayBHcmFuZC4gCm8gIERCQ1AtMjg5OiAgTWFkZSBYQURhdGFTb3VyY2UgY29uZmlndXJhYmxlIGluIEJhc2ljTWFuYWdlZERhdGFTb3VyY2UuIFRoYW5rcyB0byBNYXJjIEthbm5lZ2ll32VyLiAKbyAgREJDUC0yNzY6ICBBZGRlZCBjb25uZWN0aW9uUHJvcGVydGllcyBwcm9wZXJ0eSB0byBEcml2ZXJBZGFwdGVyQ1BEUy4gCm8gIERCQ1AtMjY1OiAgQWRkIGEgRGVsZWdhdGluZ0RhdGFiYXNlTWV0YURhdGEgdG8gdHJhY2sgUmVzdWx0U2V0cyByZXR1cm5lZCBmcm9tCiAgICAgICAgRGF0YWJhc2VNZXRhRGF0YSBvYmplY3RzLiAKbyAgREJDUC0yMTE6ICBBZGRlZCBNYXZlbiAyIHBvbS54bWwuIFJlbW92ZWQgYSBibG9jayBvZiBjb2RlIGZyb20gVGVzdEpPQ0xlZCB0aGF0IHNldAogICAgICAgIHRoZSBYZXJjZXMgcGFyc2VyIG1hbnVhbGx5LiBUaGlzIHdhcyB0byBzdXBwb3J0IGVhcmx5IEpES3MuIFRoZSAxLjMKICAgICAgICB2ZXJzaW9uIG9mIERCQ1AgcmVxdWlyZXMgSkRLIDEuNCsuIApvICBEQkNQLTIzMzogIENoYW5nZWQgYmVoYXZpb3IgdG8gYWxsb3cgQ29ubmVjdGlvbiwgU3RhdGVtZW50LCBQcmVwYXJlZFN0YXRlbWVudCwKICAgICAgICBDYWxsYWJsZVN0YXRlbWVudCBhbmQgUmVzdWx0U2V0IHRvIGJlIGNsb3NlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGZpcnN0CiAgICAgICAgdGltZSBjbG9zZSBpcyBjYWxsZWQgdGhlIHJlc291cmNlIGlzIGNsb3NlZCBhbmQgYW55IHN1YnNlcXVlbnQgY2FsbHMKICAgICAgICBoYXZlIG5vIGVmZmVjdC4gVGhpcyBiZWhhdmlvciBpcyByZXF1aXJlZCBhcyBwZXIgdGhlIEphdmFEb2NzIGZvciB0aGVzZQogICAgICAgIGNsYXNzZXMuIEFsc28gYWRkZWQgdGVzdHMgZm9yIGNsb3NpbmcgYWxsIHR5cGVzIG11bHRpcGxlIHRpbWVzIGFuZAogICAgICAgIHVwZGF0ZWQgYW55IHRlc3RzIHRoYXQgaW5jb3JyZWN0bHkgYXNzZXJ0IHRoYXQgYSByZXNvdXJjZSBjYW4gbm90IGJlCiAgICAgICAgY2xvc2VkIG1vcmUgdGhlbiBvbmNlLiAgRml4ZXMgREJDUC0zLCBEQkNQLTUsIERCQ1AtMjMgYW5kIERCQ1AtMTM0LiBUaGFua3MgdG8gRGFpbiBTdW5kc3Ryb20uIApvICBEQkNQLTExOiAgTW9kaWZpZWQgUG9vbGluZ0RhdGFTb3VyY2UsIFBvb2xpbmdEcml2ZXIgYW5kIERlbGVnYXRpbmdTdGF0ZW1lbnQgdG8KICAgICAgICBhc3N1cmUgdGhhdCBhbGwgcmV0dXJuZWQgU3RhdGVtZW50cywgUHJlcGFyZWRTdGF0ZW1lbnRzLCAKICAgICAgICBDYWxsYWJsZVN0YXRlbWVudHMgYW5kIFJlc3VsdFNldHMgYXJlIHdyYXBwZWQgd2l0aCBhIGRlbGVnYXRpbmcgb2JqZWN0LAogICAgICAgIHdoaWNoIGFscmVhZHkgcHJvcGVybHkgaGFuZGxlIHRoZSBiYWNrIHBvaW50ZXJzIGZvciBDb25uZWN0aW9uIGFuZAogICAgICAgIFN0YXRlbWVudC4gIEFsc28gYWRkZWQgdGVzdHMgdG8gdG8gYXNzdXJlIHRoYXQgdGhlICpzYW1lKiBvYmplY3QgdXNlZCAKICAgICAgICB0byBjcmVhdGUgdGhlIHN0YXRlbWVudCBvciByZXN1bHQgc2V0IGlzIHJldHVybmVkICBmcm9tIGVpdGhlciAKICAgICAgICBnZXRDb25uZWN0aW9uKCkgb3IgZ2V0U3RhdGVtZW50KCkuIFRoYW5rcyB0byBEYWluIFN1bmRzdHJvbS4gCm8gIERCQ1AtMTQzOiAgU1FMTmVzdGVkRXhjZXB0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVwbGFjZWQgaW4gREJDUCAxLjQgd2l0aAogICAgICAgIFNRTEV4Y2VwdGlvbiBhbmQgc3RhbmRhcmQgSmF2YSBleGNlcHRpb24gY2hhaW5pbmcuIAoKIApGb3IgY29tcGxldGUgaW5mb3JtYXRpb24gb24gY29tbW9ucy1kYmNwLCBpbmNsdWRpbmcgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBzdWJtaXQgYnVnIHJlcG9ydHMsCnBhdGNoZXMsIG9yIHN1Z2dlc3Rpb25zIGZvciBpbXByb3ZlbWVudCwgc2VlIHRoZSBjb21tb25zLWRiY3Agd2Vic2l0ZToKCmh0dHA6Ly9jb21tb25zLmFwYWNoZS5vcmcvZGJjcC8KCgo=