REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 228.95 KB
Close
//lib/python2.7/site-packages/pkg_resources/_vendor/pyparsing.pyc
Text
Base64
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bWVudHMgCihMeycrJzxQYXJzZXJFbGVtZW50Ll9fYWRkX18+fSBvcGVyYXRvciBnaXZlcyBMe0FuZH0gZXhwcmVzc2lvbnMsIHN0cmluZ3MgYXJlIGF1dG8tY29udmVydGVkIHRvCkx7TGl0ZXJhbH0gZXhwcmVzc2lvbnMpOjoKCiAgICBmcm9tIHB5cGFyc2luZyBpbXBvcnQgV29yZCwgYWxwaGFzCgogICAgIyBkZWZpbmUgZ3JhbW1hciBvZiBhIGdyZWV0aW5nCiAgICBncmVldCA9IFdvcmQoYWxwaGFzKSArICIsIiArIFdvcmQoYWxwaGFzKSArICIhIgoKICAgIGhlbGxvID0gIkhlbGxvLCBXb3JsZCEiCiAgICBwcmludCAoaGVsbG8sICItPiIsIGdyZWV0LnBhcnNlU3RyaW5nKGhlbGxvKSkKClRoZSBwcm9ncmFtIG91dHB1dHMgdGhlIGZvbGxvd2luZzo6CgogICAgSGVsbG8sIFdvcmxkISAtPiBbJ0hlbGxvJywgJywnLCAnV29ybGQnLCAnISddCgpUaGUgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBncmFtbWFyIGlzIHF1aXRlIHJlYWRhYmxlLCBvd2luZyB0byB0aGUgc2VsZi1leHBsYW5hdG9yeQpjbGFzcyBuYW1lcywgYW5kIHRoZSB1c2Ugb2YgJysnLCAnfCcgYW5kICdeJyBvcGVyYXRvcnMuCgpUaGUgTHtQYXJzZVJlc3VsdHN9IG9iamVjdCByZXR1cm5lZCBmcm9tIEx7UGFyc2VyRWxlbWVudC5wYXJzZVN0cmluZzxQYXJzZXJFbGVtZW50LnBhcnNlU3RyaW5nPn0gY2FuIGJlIGFjY2Vzc2VkIGFzIGEgbmVzdGVkIGxpc3QsIGEgZGljdGlvbmFyeSwgb3IgYW4Kb2JqZWN0IHdpdGggbmFtZWQgYXR0cmlidXRlcy4KClRoZSBweXBhcnNpbmcgbW9kdWxlIGhhbmRsZXMgc29tZSBvZiB0aGUgcHJvYmxlbXMgdGhhdCBhcmUgdHlwaWNhbGx5IHZleGluZyB3aGVuIHdyaXRpbmcgdGV4dCBwYXJzZXJzOgogLSBleHRyYSBvciBtaXNzaW5nIHdoaXRlc3BhY2UgKHRoZSBhYm92ZSBwcm9ncmFtIHdpbGwgYWxzbyBoYW5kbGUgIkhlbGxvLFdvcmxkISIsICJIZWxsbyAgLCAgV29ybGQgICEiLCBldGMuKQogLSBxdW90ZWQgc3RyaW5ncwogLSBlbWJlZGRlZCBjb21tZW50cwpzBgAAADIuMS4xMHMVAAAAMDcgT2N0IDIwMTYgMDE6MzEgVVRDcyoAAABQYXVsIE1jR3VpcmUgPHB0bWNnQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD5p/////04oAQAAAHQDAAAAcmVmKAEAAAB0CAAAAGRhdGV0aW1lKAEAAAB0BQAAAFJMb2NrKAEAAAB0CwAAAE9yZGVyZWREaWN0dAMAAABBbmR0DwAAAENhc2VsZXNzS2V5d29yZHQPAAAAQ2FzZWxlc3NMaXRlcmFsdAoAAABDaGFyc05vdEludAcAAABDb21iaW5ldAQAAABEaWN0dAQAAABFYWNodAUAAABFbXB0eXQKAAAARm9sbG93ZWRCeXQHAAAARm9yd2FyZHQKAAAAR29Ub0NvbHVtbnQFAAAAR3JvdXB0BwAAAEtleXdvcmR0BwAAAExpbmVFbmR0CQAAAExpbmVTdGFydHQHAAAATGl0ZXJhbHQKAAAATWF0Y2hGaXJzdHQHAAAATm9NYXRjaHQGAAAATm90QW55dAkAAABPbmVPck1vcmV0CAAAAE9ubHlPbmNldAgAAABPcHRpb25hbHQCAAAAT3J0EgAAAFBhcnNlQmFzZUV4Y2VwdGlvbnQTAAAAUGFyc2VFbGVtZW50RW5oYW5jZXQOAAAAUGFyc2VFeGNlcHRpb250DwAAAFBhcnNlRXhwcmVzc2lvbnQTAAAAUGFyc2VGYXRhbEV4Y2VwdGlvbnQMAAAAUGFyc2VSZXN1bHRzdBQAAABQYXJzZVN5bnRheEV4Y2VwdGlvbnQNAAAAUGFyc2VyRWxlbWVudHQMAAAAUXVvdGVkU3RyaW5ndBkAAABSZWN1cnNpdmVHcmFtbWFyRXhjZXB0aW9udAUAAABSZWdleHQGAAAAU2tpcFRvdAkAAABTdHJpbmdFbmR0CwAAAFN0cmluZ1N0YXJ0dAgAAABTdXBwcmVzc3QFAAAAVG9rZW50DgAAAFRva2VuQ29udmVydGVydAUAAABXaGl0ZXQEAAAAV29yZHQHAAAAV29yZEVuZHQJAAAAV29yZFN0YXJ0dAoAAABaZXJvT3JNb3JldAkAAABhbHBoYW51bXN0BgAAAGFscGhhc3QKAAAAYWxwaGFzOGJpdHQLAAAAYW55Q2xvc2VUYWd0CgAAAGFueU9wZW5UYWd0DQAAAGNTdHlsZUNvbW1lbnR0AwAAAGNvbHQSAAAAY29tbWFTZXBhcmF0ZWRMaXN0dBAAAABjb21tb25IVE1MRW50aXR5dAwAAABjb3VudGVkQXJyYXl0DwAAAGNwcFN0eWxlQ29tbWVudHQPAAAAZGJsUXVvdGVkU3RyaW5ndA8AAABkYmxTbGFzaENvbW1lbnR0DQAAAGRlbGltaXRlZExpc3R0BgAAAGRpY3RPZnQOAAAAZG93bmNhc2VUb2tlbnN0BQAAAGVtcHR5dAcAAABoZXhudW1zdAsAAABodG1sQ29tbWVudHQQAAAAamF2YVN0eWxlQ29tbWVudHQEAAAAbGluZXQHAAAAbGluZUVuZHQJAAAAbGluZVN0YXJ0dAYAAABsaW5lbm90DAAAAG1ha2VIVE1MVGFnc3QLAAAAbWFrZVhNTFRhZ3N0DgAAAG1hdGNoT25seUF0Q29sdBEAAABtYXRjaFByZXZpb3VzRXhwcnQUAAAAbWF0Y2hQcmV2aW91c0xpdGVyYWx0CgAAAG5lc3RlZEV4cHJ0DwAAAG51bGxEZWJ1Z0FjdGlvbnQEAAAAbnVtc3QFAAAAb25lT2Z0BwAAAG9wQXNzb2N0EgAAAG9wZXJhdG9yUHJlY2VkZW5jZXQKAAAAcHJpbnRhYmxlc3QIAAAAcHVuYzhiaXR0EgAAAHB5dGhvblN0eWxlQ29tbWVudHQMAAAAcXVvdGVkU3RyaW5ndAwAAAByZW1vdmVRdW90ZXN0EQAAAHJlcGxhY2VIVE1MRW50aXR5dAsAAAByZXBsYWNlV2l0aHQKAAAAcmVzdE9mTGluZXQPAAAAc2dsUXVvdGVkU3RyaW5ndAYAAABzcmFuZ2V0CQAAAHN0cmluZ0VuZHQLAAAAc3RyaW5nU3RhcnR0EAAAAHRyYWNlUGFyc2VBY3Rpb250DQAAAHVuaWNvZGVTdHJpbmd0DAAAAHVwY2FzZVRva2Vuc3QNAAAAd2l0aEF0dHJpYnV0ZXQNAAAAaW5kZW50ZWRCbG9ja3QPAAAAb3JpZ2luYWxUZXh0Rm9ydAcAAAB1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cw4AAABlAABaAQBkAABaAgBSUygBAAAAc98AAABqdXN0IGxpa2UgTHtQYXJzZUZhdGFsRXhjZXB0aW9ufSwgYnV0IHRocm93biBpbnRlcm5hbGx5IHdoZW4gYW4KICAgICAgIEx7RXJyb3JTdG9wPEFuZC5fRXJyb3JTdG9wPn0gKCctJyBvcGVyYXRvcikgaW5kaWNhdGVzIHRoYXQgcGFyc2luZyBpcyB0byBzdG9wIAogICAgICAgaW1tZWRpYXRlbHkgYmVjYXVzZSBhbiB1bmJhY2t0cmFja2FibGUgc3ludGF4IGVycm9yIGhhcyBiZWVuIGZvdW5kKAMAAABSjwAAAFKQAAAAUrEAAAAoAAAAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSIQAAAAgBAABzBAAAAAYDBgFjAAAAAAAAAAABAAAAQgAAAHMgAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAZAIAhAAAWgQAUlMoAwAAAHNaAAAAZXhjZXB0aW9uIHRocm93biBieSBMe1BhcnNlckVsZW1lbnQudmFsaWRhdGV9IGlmIHRoZSBncmFtbWFyIGNvdWxkIGJlIGltcHJvcGVybHkgcmVjdXJzaXZlYwIAAAACAAAAAgAAAEMAAABzDQAAAHwBAHwAAF8AAGQAAFMoAQAAAE4oAQAAAHQRAAAAcGFyc2VFbGVtZW50VHJhY2UoAgAAAFKcAAAAdBAAAABwYXJzZUVsZW1lbnRMaXN0KAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKeAAAAHQEAAHMCAAAAAAFjAQAAAAEAAAACAAAAQwAAAHMLAAAAZAEAfAAAagAAFlMoAgAAAE5zHQAAAFJlY3Vyc2l2ZUdyYW1tYXJFeGNlcHRpb246ICVzKAEAAABSswAAACgBAAAAUpwAAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5n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eCAoQ3tyZXN1bHRzWzBdLCByZXN1bHRzWzFdfSwgZXRjLikKICAgICAgIC0gYnkgYXR0cmlidXRlIChDe3Jlc3VsdHMuPHJlc3VsdHNOYW1lPn0gLSBzZWUgTHtQYXJzZXJFbGVtZW50LnNldFJlc3VsdHNOYW1lfSkKCiAgICBFeGFtcGxlOjoKICAgICAgICBpbnRlZ2VyID0gV29yZChudW1zKQogICAgICAgIGRhdGVfc3RyID0gKGludGVnZXIuc2V0UmVzdWx0c05hbWUoInllYXIiKSArICcvJyAKICAgICAgICAgICAgICAgICAgICAgICAgKyBpbnRlZ2VyLnNldFJlc3VsdHNOYW1lKCJtb250aCIpICsgJy8nIAogICAgICAgICAgICAgICAgICAgICAgICArIGludGVnZXIuc2V0UmVzdWx0c05hbWUoImRheSIpKQogICAgICAgICMgZXF1aXZhbGVudCBmb3JtOgogICAgICAgICMgZGF0ZV9zdHIgPSBpbnRlZ2VyKCJ5ZWFyIikgKyAnLycgKyBpbnRlZ2VyKCJtb250aCIpICsgJy8nICsgaW50ZWdlcigiZGF5IikKCiAgICAgICAgIyBwYXJzZVN0cmluZyByZXR1cm5zIGEgUGFyc2VSZXN1bHRzIG9iamVjdAogICAgICAgIHJlc3VsdCA9IGRhdGVfc3RyLnBhcnNlU3RyaW5nKCIxOTk5LzEyLzMxIikKCiAgICAgICAgZGVmIHRlc3QocywgZm49cmVwcik6CiAgICAgICAgICAgIHByaW50KCIlcyAtPiAlcyIgJSAocywgZm4oZXZhbChzKSkpKQogICAgICAgIHRlc3QoImxpc3QocmVzdWx0KSIpCiAgICAgICAgdGVzdCgicmVzdWx0WzBdIikKICAgICAgICB0ZXN0KCJyZXN1bHRbJ21vbnRoJ10iKQogICAgICAgIHRlc3QoInJlc3VsdC5kYXkiKQogICAgICAgIHRlc3QoIidtb250aCcgaW4gcmVzdWx0IikKICAgICAgICB0ZXN0KCInbWludXRlcycgaW4gcmVzdWx0IikKICAgICAgICB0ZXN0KCJyZXN1bHQuZHVtcCgpIiwgc3RyKQogICAgcHJpbnRzOjoKICAgICAgICBsaXN0KHJlc3VsdCkgLT4g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YWxwaGFzKQogICAgICAgICAgICBwYXR0ID0gbGFiZWwoIkxBQkVMIikgKyBPbmVPck1vcmUoV29yZChudW1zKSkKICAgICAgICAgICAgcHJpbnQocGF0dC5wYXJzZVN0cmluZygiQUFCIDEyMyAzMjEiKS5kdW1wKCkpCgogICAgICAgICAgICAjIFVzZSBwb3AoKSBpbiBhIHBhcnNlIGFjdGlvbiB0byByZW1vdmUgbmFtZWQgcmVzdWx0IChub3RlIHRoYXQgY29ycmVzcG9uZGluZyB2YWx1ZSBpcyBub3QKICAgICAgICAgICAgIyByZW1vdmVkIGZyb20gbGlzdCBmb3JtIG9mIHJlc3VsdHMpCiAgICAgICAgICAgIGRlZiByZW1vdmVfTEFCRUwodG9rZW5zKToKICAgICAgICAgICAgICAgIHRva2Vucy5wb3AoIkxBQkVMIikKICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbnMKICAgICAgICAgICAgcGF0dC5hZGRQYXJzZUFjdGlvbihyZW1vdmVfTEFCRUwpCiAgICAgICAgICAgIHByaW50KHBhdHQucGFyc2VTdHJpbmcoIkFBQiAxMjMgMzIxIikuZHVtcCgpKQogICAgICAgIHByaW50czo6CiAgICAgICAgICAgIFsnQUFCJywgJzEyMycsICczMjEnXQogICAgICAgICAgICAtIExBQkVMOiBBQUIKCiAgICAgICAgICAgIFsnQUFCJywgJzEyMycsICczMjEnXQogICAgICAgIGn/////dAcAAABkZWZhdWx0aQAAAABzLQAAAHBvcCgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJyVzJ2kBAAAATigFAAAAUuEAAABS1AAAAFJzAAAAUm8AAABS3QAAACgIAAAAUpwAAABSmwAAAHQGAAAAa3dhcmdzUtoAAABS1wAAAHQFAAAAaW5kZXhSfQAAAHQMAAAAZGVmYXVsdHZhbHVlKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQDAAAAcG9w6AEAAHMeAAAAACIGAQwBGQEMARMCFAETARIBEAEKAQoBBwEEAgoBYwMAAAADAAAAAgAAAEMAAABzHAAAAHwBAHwAAGsGAHIUAHwAAHwBABlTfAIAU2QBAFMoAgAAAHNpAgAACiAgICAgICAgUmV0dXJucyBuYW1lZCByZXN1bHQgbWF0Y2hpbmcgdGhlIGdpdmVuIGtleSwgb3IgaWYgdGhlcmUgaXMgbm8KICAgICAgICBzdWNoIG5hbWUsIHRoZW4gcmV0dXJucyB0aGUgZ2l2ZW4gQ3tkZWZhdWx0VmFsdWV9IG9yIEN7Tm9uZX0gaWYgbm8KICAgICAgICBDe2RlZmF1bHRWYWx1ZX0gaXMgc3BlY2lmaWVkLgoKICAgICAgICBTaW1pbGFyIHRvIEN7ZGljdC5nZXQoKX0uCiAgICAgICAgCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgIGludGVnZXIgPSBXb3JkKG51bXMpCiAgICAgICAgICAgIGRhdGVfc3RyID0gaW50ZWdlcigieWVhciIpICsgJy8nICsgaW50ZWdlcigibW9udGgiKSArICcvJyArIGludGVnZXIoImRheSIpICAgICAgICAgICAKCiAgICAgICAgICAgIHJlc3VsdCA9IGRhdGVfc3RyLnBhcnNlU3RyaW5nKCIxOTk5LzEyLzMxIikKICAgICAgICAgICAgcHJpbnQocmVzdWx0LmdldCgieWVhciIpKSAjIC0+ICcxOTk5JwogICAgICAgICAgICBwcmludChyZXN1bHQuZ2V0KCJob3VyIiwgIm5vdCBzcGVjaWZpZWQiKSkgIyAtPiAnbm90IHNwZWNpZmllZCcKICAgICAgICAgICAgcHJpbnQocmVzdWx0LmdldCgiaG91ciIpKSAjIC0+IE5vbmUKICAgICAgICBOKAAAAAAoAwAAAFKcAAAAdAMAAABrZXl0DAAAAGRlZmF1bHRWYWx1ZSgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlS2AAAABwCAABzBgAAAAARDAEIAmMDAAAACAAAAAcAAABDAAAAc3cAAAB8AABqAABqAQB8AQB8AgCDAgABeF0AfAAAagIAagMAgwAARF1MAFwCAH0DAH0EAHg9AHQEAHwEAIMBAERdLwBcAgB9BQBcAgB9BgB9BwB0BQB8BgB8BwB8BwB8AQBrBAAXgwIAfAQAfAUAPHE8AFdxIwBXZAEAUygCAAAAcx8CAAAKICAgICAgICBJbnNlcnRzIG5ldyBlbGVtZW50IGF0IGxvY2F0aW9uIGluZGV4IGluIHRoZSBsaXN0IG9mIHBhcnNlZCB0b2tlbnMuCiAgICAgICAgCiAgICAgICAgU2ltaWxhciB0byBDe2xpc3QuaW5zZXJ0KCl9LgoKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgcHJpbnQoT25lT3JNb3JlKFdvcmQobnVtcykpLnBhcnNlU3RyaW5nKCIwIDEyMyAzMjEiKSkgIyAtPiBbJzAnLCAnMTIzJywgJzMyMSddCgogICAgICAgICAgICAjIHVzZSBhIHBhcnNlIGFjdGlvbiB0byBpbnNlcnQgdGhlIHBhcnNlIGxvY2F0aW9uIGluIHRoZSBmcm9udCBvZiB0aGUgcGFyc2VkIHJlc3VsdHMKICAgICAgICAgICAgZGVmIGluc2VydF9sb2NuKGxvY24sIHRva2Vucyk6CiAgICAgICAgICAgICAgICB0b2tlbnMuaW5zZXJ0KDAsIGxvY24pCiAgICAgICAgICAgIHByaW50KE9uZU9yTW9yZShXb3JkKG51bXMpKS5hZGRQYXJzZUFjdGlvbihpbnNlcnRfbG9jbikucGFyc2VTdHJpbmcoIjAgMTIzIDMyMSIpKSAjIC0+IFswLCAnMCcsICcxMjMnLCAnMzIxJ10KICAgICAgICBOKAYAAABSzQAAAHQGAAAAaW5zZXJ0UtAAAABS4QAAAFLiAAAAUrUAAAAoCAAAAFKcAAAAUv0AAAB0BgAAAGluc1N0clLCAAAAUuUAAABS2gAAAFLnAAAAUugAAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UgIBAAAyAgAAcwgAAAAADhMCHAEfAWMCAAAAAgAAAAIAAABDAAAAcxQAAAB8AABqAABqAQB8AQCDAQABZAEAUygCAAAAc/4BAAAKICAgICAgICBBZGQgc2luZ2xlIGVsZW1lbnQgdG8gZW5kIG9mIFBhcnNlUmVzdWx0cyBsaXN0IG9mIGVsZW1lbnRzLgoKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgcHJpbnQoT25lT3JNb3JlKFdvcmQobnVtcykpLnBhcnNlU3RyaW5nKCIwIDEyMyAzMjEiKSkgIyAtPiBbJzAnLCAnMTIzJywgJzMyMSddCiAgICAgICAgICAgIAogICAgICAgICAgICAjIHVzZSBhIHBhcnNlIGFjdGlvbiB0byBjb21wdXRlIHRoZSBzdW0gb2YgdGhlIHBhcnNlZCBpbnRlZ2VycywgYW5kIGFkZCBpdCB0byB0aGUgZW5kCiAgICAgICAgICAgIGRlZiBhcHBlbmRfc3VtKHRva2Vucyk6CiAgICAgICAgICAgICAgICB0b2tlbnMuYXBwZW5kKHN1bShtYXAoaW50LCB0b2tlbnMpKSkKICAgICAgICAgICAgcHJpbnQoT25lT3JNb3JlKFdvcmQobnVtcykpLmFkZFBhcnNlQWN0aW9uKGFwcGVuZF9zdW0pLnBhcnNlU3RyaW5nKCIwIDEyMyAzMjEiKSkgIyAtPiBbJzAnLCAnMTIzJywgJzMyMScsIDQ0NF0KICAgICAgICBOKAIAAABSzQAAAHQGAAAAYXBwZW5kKAIAAABSnAAAAHQEAAAAaXRlbSgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSBAEAAEYCAABzAgAAAAAMYwIAAAACAAAAAwAAAEMAAABzMAAAAHQAAHwBAHQBAIMCAHIcAHwAAHwBADd9AABuEAB8AABqAgBqAwB8AQCDAQABZAEAUygCAAAAcxQCAAAKICAgICAgICBBZGQgc2VxdWVuY2Ugb2YgZWxlbWVudHMgdG8gZW5kIG9mIFBhcnNlUmVzdWx0cyBsaXN0IG9mIGVsZW1lbnRzLgoKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgcGF0dCA9IE9uZU9yTW9yZShXb3JkKGFscGhhcykpCiAgICAgICAgICAgIAogICAgICAgICAgICAjIHVzZSBhIHBhcnNlIGFjdGlvbiB0byBhcHBlbmQgdGhlIHJldmVyc2Ugb2YgdGhlIG1hdGNoZWQgc3RyaW5ncywgdG8gbWFrZSBhIHBhbGluZHJvbWUKICAgICAgICAgICAgZGVmIG1ha2VfcGFsaW5kcm9tZSh0b2tlbnMpOgogICAgICAgICAgICAgICAgdG9rZW5zLmV4dGVuZChyZXZlcnNlZChbdFs6Oi0xXSBmb3IgdCBpbiB0b2tlbnNdKSkKICAgICAgICAgICAgICAgIHJldHVybiAnJy5qb2luKHRva2VucykKICAgICAgICAgICAgcHJpbnQocGF0dC5hZGRQYXJzZUFjdGlvbihtYWtlX3BhbGluZHJvbWUpLnBhcnNlU3RyaW5nKCJsc2tkaiBzZGxramYgbGtzZCIpKSAjIC0+ICdsc2tkanNkbGtqZmxrc2Rkc2tsZmprbGRzamRrc2wnCiAgICAgICAgTigEAAAAUnMAAABSIAAAAFLNAAAAdAYAAABleHRlbmQoAgAAAFKcAAAAdAcAAABpdGVtc2VxKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIGAQAAVAIAAHMGAAAAAA0PAQ0CYwEAAAABAAAAAQAAAEMAAABzGAAAAHwAAGoAADJ8AABqAQBqAgCDAAABZAEAUygCAAAAczcAAAAKICAgICAgICBDbGVhciBhbGwgZWxlbWVudHMgYW5kIHJlc3VsdHMgbmFtZXMuCiAgICAgICAgTigDAAAAUs0AAABS0AAAAHQFAAAAY2xlYXIoAQAAAFKcAAAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIIAQAAZgIAAHMEAAAAAAQHAWMCAAAAAwAAAAUAAABDAAAAc4UAAAB5DAB8AAB8AQAZU1duEgAEdAAAawoAciAAAQEBZAEAU1h8AQB8AABqAQBrBgByfQB8AQB8AABqAgBrBwByUgB8AABqAQB8AQAZZAIAGWQDABlTdAMAZwAAfAAAagEAfAEAGURdEAB9AgB8AgBkAwAZXgIAcWMAgwEAU24EAGQBAFNkAABTKAQAAABOUnIAAABp/////2kAAAAAKAQAAABS0wAAAFLQAAAAUskAAABSIAAAACgDAAAAUpwAAABSwgAAAFLXAAAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKlAAAAbQIAAHMSAAAAAAEDAQwBDQEFAg8BDwETAisCYwIAAAADAAAAAgAAAEMAAABzGgAAAHwAAGoAAIMAAH0CAHwCAHwBADd9AgB8AgBTKAEAAABOKAEAAABS0gAAACgDAAAAUpwAAAB0BQAAAG90aGVyUn0AAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAcAAABfX2FkZF9fewIAAHMGAAAAAAEMAQoBYwIAAAAIAAAACQAAAAMAAABz9QAAAHwBAGoAAHLMAHQBAHwAAGoCAIMBAIkAAIcAAGYBAGQBAIYAAH0CAHwBAGoAAGoDAIMAAH0DAGcAAHwDAERdPABcAgB9BAB9BQB8BQBEXSkAfQYAfAQAdAQAfAYAZAIAGXwCAHwGAGQDABmDAQCDAgBmAgBeAwBxTQBxPQB9BwB4SgB8BwBEXT8AXAIAfQQAfQYAfAYAfAAAfAQAPHQFAHwGAGQCABl0BgCDAgByhgB0BwB8AACDAQB8BgBkAgAZXwgAcYYAcYYAV24AAHwAAARqAgB8AQBqAgA3Al8CAHwAAGoJAGoKAHwBAGoJAIMBAAF8AABTKAQAAABOYwEAAAABAAAAAgAAABMAAABzGAAAAHwAAGQBAGsAAHIQAIgAAFN8AACIAAAXUygCAAAATmkAAAAAKAAAAAAoAQAAAHQBAAAAYSgBAAAAdAYAAABvZmZzZXQoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJxAAAAgwIAAFJyAAAAaQAAAABpAQAAACgLAAAAUtAAAABS3QAAAFLNAAAAUuEAAABStQAAAFJzAAAAUiAAAABS2QAAAFLIAAAAUskAAAB0BgAAAHVwZGF0ZSgIAAAAUpwAAABSCQEAAHQJAAAAYWRkb2Zmc2V0dAoAAABvdGhlcml0ZW1zUtoAAAB0BQAAAHZsaXN0UtcAAAB0DgAAAG90aGVyZGljdGl0ZW1zKAAAAAAoAQAAAFIMAQAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAgAAABfX2lhZGRfX4ACAABzGgAAAAABCQEPAQ8BDwEDAUYBEwEKARMBHQISARMBYwIAAAACAAAAAwAAAEMAAABzMQAAAHQAAHwBAHQBAIMCAHIlAHwBAGQBAGsCAHIlAHwAAGoCAIMAAFN8AQB8AAAXU2QAAFMoAgAAAE5pAAAAACgDAAAAUnMAAABSbwAAAFLSAAAAKAIAAABSnAAAAFIJAQAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQIAAAAX19yYWRkX1+QAgAAcwYAAAAAARsCCgNjAQAAAAEAAAAEAAAAQwAAAHMgAAAAZAEAdAAAfAAAagEAgwEAdAAAfAAAagIAgwEAZgIAFlMoAgAAAE5zCAAAACglcywgJXMpKAMAAABSuwAAAFLNAAAAUtAAAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKnAAAAmAIAAHMCAAAAAAFjAQAAAAEAAAAEAAAAQwAAAHMiAAAAZAEAZAIAagAAZAMAhAAAfAAAagEARIMBAIMBABdkBAAXUygFAAAATnQBAAAAW3MCAAAALCBjAQAAAAIAAAAEAAAAcwAAAHM2AAAAfAAAXSwAfQEAdAAAfAEAdAEAgwIAciQAdAIAfAEAgwEAbgkAdAMAfAEAgwEAVgFxAwBkAABTKAEAAABOKAQAAABScwAAAFIgAAAAUn8AAABSuwAAACgCAAAAUoAAAABSuQAAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlzCQAAADxnZW5leHByPpwCAABzAgAAAAYAdAEAAABdKAIAAABSqAAAAFLNAAAAKAEAAABSnAAAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSpgAAAJsCAABzAgAAAAABUnIAAABjAgAAAAQAAAAEAAAAQwAAAHNvAAAAZwAAfQIAeGIAfAAAagAARF1XAH0DAHwCAHIyAHwBAHIyAHwCAGoBAHwBAIMBAAFuAAB0AgB8AwB0AwCDAgByVAB8AgB8AwBqBACDAAA3fQIAcRAAfAIAagEAdAUAfAMAgwEAgwEAAXEQAFd8AgBTKAEAAABOKAYAAABSzQAAAFIEAQAAUnMAAABSIAAAAHQNAAAAX2FzU3RyaW5nTGlzdFJ/AAAAKAQAAABSnAAAAHQDAAAAc2VwdAMAAABvdXRSBQEAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSFgEAAJ4CAABzEAAAAAABBgEQAQwBEAEPARMCFwFjAQAAAAIAAAAFAAAAQwAAAHM1AAAAZwAAfAAAagAARF0nAH0BAHQBAHwBAHQCAIMCAHIrAHwBAGoDAIMAAG4DAHwBAF4CAHEKAFMoAQAAAHODAgAACiAgICAgICAgUmV0dXJucyB0aGUgcGFyc2UgcmVzdWx0cyBhcyBhIG5lc3RlZCBsaXN0IG9mIG1hdGNoaW5nIHRva2VucywgYWxsIGNvbnZlcnRlZCB0byBzdHJpbmdzLgoKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgcGF0dCA9IE9uZU9yTW9yZShXb3JkKGFscGhhcykpCiAgICAgICAgICAgIHJlc3VsdCA9IHBhdHQucGFyc2VTdHJpbmcoInNsZGtqIGxzZGtqIHNsZGtqIikKICAgICAgICAgICAgIyBldmVuIHRob3VnaCB0aGUgcmVzdWx0IHByaW50cyBpbiBzdHJpbmctbGlrZSBmb3JtLCBpdCBpcyBhY3R1YWxseSBhIHB5cGFyc2luZyBQYXJzZVJlc3VsdHMKICAgICAgICAgICAgcHJpbnQodHlwZShyZXN1bHQpLCByZXN1bHQpICMgLT4gPGNsYXNzICdweXBhcnNpbmcuUGFyc2VSZXN1bHRzJz4gWydzbGRraicsICdsc2RraicsICdzbGRraiddCiAgICAgICAgICAgIAogICAgICAgICAgICAjIFVzZSBhc0xpc3QoKSB0byBjcmVhdGUgYW4gYWN0dWFsIGxpc3QKICAgICAgICAgICAgcmVzdWx0X2xpc3QgPSByZXN1bHQuYXNMaXN0KCkKICAgICAgICAgICAgcHJpbnQodHlwZShyZXN1bHRfbGlzdCksIHJlc3VsdF9saXN0KSAjIC0+IDxjbGFzcyAnbGlzdCc+IFsnc2xka2onLCAnbHNka2onLCAnc2xka2onXQogICAgICAgICgEAAAAUs0AAABScwAAAFIgAAAAUsMAAAAoAgAAAFKcAAAAdAMAAAByZXMoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UsMAAACpAgAAcwIAAAAADmMBAAAAAgAAAAMAAAADAAAAc0cAAAB0AAByEgB8AABqAQB9AQBuCQB8AABqAgB9AQCHAABmAQBkAQCGAACJAAB0AwCHAABmAQBkAgCGAAB8AQCDAABEgwEAgwEAUygDAAAAc8MDAAAKICAgICAgICBSZXR1cm5zIHRoZSBuYW1lZCBwYXJzZSByZXN1bHRzIGFzIGEgbmVzdGVkIGRpY3Rpb25hcnkuCgogICAgICAgIEV4YW1wbGU6OgogICAgICAgICAgICBpbnRlZ2VyID0gV29yZChudW1zKQogICAgICAgICAgICBkYXRlX3N0ciA9IGludGVnZXIoInllYXIiKSArICcvJyArIGludGVnZXIoIm1vbnRoIikgKyAnLycgKyBpbnRlZ2VyKCJkYXkiKQogICAgICAgICAgICAKICAgICAgICAgICAgcmVzdWx0ID0gZGF0ZV9zdHIucGFyc2VTdHJpbmcoJzEyLzMxLzE5OTknKQogICAgICAgICAgICBwcmludCh0eXBlKHJlc3VsdCksIHJlcHIocmVzdWx0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IEV4YW1wbGU6OgogICAgICAgICAgICBpbnRlZ2VyID0gV29yZChudW1zKQogICAgICAgICAgICBzc25fZXhwciA9IFJlZ2V4KHIiXGRcZFxkLVxkXGQtXGRcZFxkXGQiKQogICAgICAgICAgICBob3VzZV9udW1iZXJfZXhwciA9IFN1cHByZXNzKCcjJykgKyBXb3JkKG51bXMsIGFscGhhbnVtcykKICAgICAgICAgICAgdXNlcl9kYXRhID0gKEdyb3VwKGhvdXNlX251bWJlcl9leHByKSgiaG91c2VfbnVtYmVyIikgCiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JvdXAoc3NuX2V4cHIpKCJzc24iKQogICAgICAgICAgICAgICAgICAgICAgICB8IEdyb3VwKGludGVnZXIpKCJhZ2UiKSkKICAgICAgICAgICAgdXNlcl9pbmZvID0gT25lT3JNb3JlKHVzZXJfZGF0YSkKICAgICAgICAgICAgCiAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfaW5mby5wYXJzZVN0cmluZygiMjIgMTExLTIyLTMzMzMgIzIyMUIiKQogICAgICAgICAgICBmb3IgaXRlbSBpbiByZXN1bHQ6CiAgICAgICAgICAgICAgICBwcmludChpdGVtLmdldE5hbWUoKSwgJzonLCBpdGVtWzBdKQogICAgICAgIHByaW50czo6CiAgICAgICAgICAgIGFnZSA6IDIyCiAgICAgICAgICAgIHNzbiA6IDExMS0yMi0zMzMzCiAgICAgICAgICAgIGhvdXNlX251bWJlciA6IDIyMUIKICAgICAgICBpAQAAAGkAAAAAaf////9OKAIAAABpAAAAAGn/////KAoAAABSxwAAAFLIAAAAdBUAAABfUGFyc2VSZXN1bHRzX19sb29rdXBSlwAAAFLdAAAAUtAAAAB0BAAAAG5leHRS7QAAAFL3AAAAUvUAAAAoAgAAAFKcAAAAdAMAAABwYXIoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAcAAABnZXROYW1lKwMAAHMYAAAAABYJAQcBCQEMAQYBDQIHARIB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AABzLAAAAAASBgEGAR0BBgEMARwBEwEGARABHgEPAQYBIAIWAhoBFgEGARkBDwFCAj8CYwEAAAADAAAABAAAAE8AAABzHQAAAHQAAGoAAHwAAGoBAIMAAHwBAHwCAI4BAAFkAQBTKAIAAABz9QIAAAogICAgICAgIFByZXR0eS1wcmludGVyIGZvciBwYXJzZWQgcmVzdWx0cyBhcyBhIGxpc3QsIHVzaW5nIHRoZSBDe3BwcmludH0gbW9kdWxlLgogICAgICAgIEFjY2VwdHMgYWRkaXRpb25hbCBwb3NpdGlvbmFsIG9yIGtleXdvcmQgYXJncyBhcyBkZWZpbmVkIGZvciB0aGUgCiAgICAgICAgQ3twcHJpbnQucHByaW50fSBtZXRob2QuIChVe2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3BwcmludC5odG1sI3BwcmludC5wcHJpbnR9KQoKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgaWRlbnQgPSBXb3JkKGFscGhhcywgYWxwaGFudW1zKQogICAgICAgICAgICBudW0gPSBXb3JkKG51bXMpCiAgICAgICAgICAgIGZ1bmMgPSBGb3J3YXJkKCkKICAgICAgICAgICAgdGVybSA9IGlkZW50IHwgbnVtIHwgR3JvdXAoJygnICsgZnVuYyArICcpJykKICAgICAgICAgICAgZnVuYyA8PD0gaWRlbnQgKyBHcm91cChPcHRpb25hbChkZWxpbWl0ZWRMaXN0KHRlcm0pKSkKICAgICAgICAgICAgcmVzdWx0ID0gZnVuYy5wYXJzZVN0cmluZygiZm5hIGEsYiwoZm5iIGMsZCwyMDApLDEwMCIpCiAgICAgICAgICAgIHJlc3VsdC5wcHJpbnQod2lkdGg9NDApCiAgICAgICAgcHJpbnRzOjoKICAgICAgICAgICAgWydmbmEnLAogICAgICAgICAgICAgWydhJywKICAgICAgICAgICAgICAnYicsCiAgICAgICAgICAgICAgWycoJywgJ2ZuYicsIFsnYycsICdkJywgJzIwMCddLCAnKSddLAogICAgICAgICAgICAgICcxMDAnXV0KICAgICAgICBOKAIAAAB0BgAAAHBwcmludFLDAAAAKAMAAABSnAAA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IHNlcGFyYXRvcnMuCiAgIFRoZSBmaXJzdCBjb2x1bW4gaXMgbnVtYmVyIDEuCgogICBOb3RlOiB0aGUgZGVmYXVsdCBwYXJzaW5nIGJlaGF2aW9yIGlzIHRvIGV4cGFuZCB0YWJzIGluIHRoZSBpbnB1dCBzdHJpbmcKICAgYmVmb3JlIHN0YXJ0aW5nIHRoZSBwYXJzaW5nIHByb2Nlc3MuICBTZWUgTHtJe1BhcnNlckVsZW1lbnQucGFyc2VTdHJpbmd9PFBhcnNlckVsZW1lbnQucGFyc2VTdHJpbmc+fSBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICBvbiBwYXJzaW5nIHN0cmluZ3MgY29udGFpbmluZyBDezxUQUI+fXMsIGFuZCBzdWdnZXN0ZWQgbWV0aG9kcyB0byBtYWludGFpbiBhCiAgIGNvbnNpc3RlbnQgdmlldyBvZiB0aGUgcGFyc2VkIHN0cmluZywgdGhlIHBhcnNlIGxvY2F0aW9uLCBhbmQgbGluZSBhbmQgY29sdW1uCiAgIHBvc2l0aW9ucyB3aXRoaW4gdGhlIHBhcnNlZCBzdHJpbmcuCiAgIGkAAAAAaQEAAABzAQAAAAooAgAAAFLdAAAAdAUAAAByZmluZCgDAAAAUpYAAAB0BAAAAHN0cmdShAAAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSNwAAALEDAABzBAAAAAAKBgFjAgAAAAIAAAAEAAAAQwAAAHMXAAAAfAEAagAAZAEAZAIAfAAAgwMAZAMAF1MoBAAAAHMHAgAAUmV0dXJucyBjdXJyZW50IGxpbmUgbnVtYmVyIHdpdGhpbiBhIHN0cmluZywgY291bnRpbmcgbmV3bGluZXMgYXMgbGluZSBzZXBhcmF0b3JzLgogICBUaGUgZmlyc3QgbGluZSBpcyBudW1iZXIgMS4KCiAgIE5vdGU6IHRoZSBkZWZhdWx0IHBhcnNpbmcgYmVoYXZpb3IgaXMgdG8gZXhwYW5kIHRhYnMgaW4gdGhlIGlucHV0IHN0cmluZwogICBiZWZvcmUgc3RhcnRpbmcgdGhlIHBhcnNpbmcgcHJvY2Vzcy4gIFNl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Z2luYWwgQ3tQYXJzZXJFbGVtZW50fSBvYmplY3Q7CiAgICAgICAgdGhpcyBpcyBzbyB0aGF0IHRoZSBjbGllbnQgY2FuIGRlZmluZSBhIGJhc2ljIGVsZW1lbnQsIHN1Y2ggYXMgYW4KICAgICAgICBpbnRlZ2VyLCBhbmQgcmVmZXJlbmNlIGl0IGluIG11bHRpcGxlIHBsYWNlcyB3aXRoIGRpZmZlcmVudCBuYW1lcy4KCiAgICAgICAgWW91IGNhbiBhbHNvIHNldCByZXN1bHRzIG5hbWVzIHVzaW5nIHRoZSBhYmJyZXZpYXRlZCBzeW50YXgsCiAgICAgICAgQ3tleHByKCJuYW1lIil9IGluIHBsYWNlIG9mIEN7ZXhwci5zZXRSZXN1bHRzTmFtZSgibmFtZSIpfSAtIAogICAgICAgIHNlZSBMe0l7X19jYWxsX199PF9fY2FsbF9fPn0uCgogICAgICAgIEV4YW1wbGU6OgogICAgICAgICAgICBkYXRlX3N0ciA9IChpbnRlZ2VyLnNldFJlc3VsdHNOYW1lKCJ5ZWFyIikgKyAnLycgCiAgICAgICAgICAgICAgICAgICAgICAgICsgaW50ZWdlci5zZXRSZXN1bHRzTmFtZSgibW9udGgiKSArICcvJyAKICAgICAgICAgICAgICAgICAgICAgICAgKyBpbnRlZ2VyLnNldFJlc3VsdHNOYW1lKCJkYXkiKSkKCiAgICAgICAgICAgICMgZXF1aXZhbGVudCBmb3JtOgogICAgICAgICAgICBkYXRlX3N0ciA9IGludGVnZXIoInllYXIiKSArICcvJyArIGludGVnZXIoIm1vbnRoIikgKyAnLycgKyBpbnRlZ2VyKCJkYXkiKQogICAgICAgIHQBAAAAKmn/////KAUAAABS0gAAAHQIAAAAZW5kc3dpdGhSvwAAAFJuAQAAUnoBAAAoBAAAAFKcAAAAUsIAAAB0DgAAAGxpc3RBbGxNYXRjaGVzdAcAAABuZXdzZWxmKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQOAAAAc2V0UmVzdWx0c05hbWWdBAAAcw4AAAAAFAwBDwEKAQkBCQEKAWMCAAAAAwAAAAQAAAADAAAAc2EAAAB8AQByOQB8AABqAACJAAB0AQB0AQCHAABmAQBkAQCGAgB9AgCIAAB8AgBfAgB8AgB8AABfAABuJAB0AwB8AABqAABkAgCDAgByXQB8AABqAABqAgB8AABfAABuAAB8AABTKAMAAABzpgAAAE1ldGhvZCB0byBpbnZva2UgdGhlIFB5dGhvbiBwZGIgZGVidWdnZXIgd2hlbiB0aGlzIGVsZW1lbnQgaXMKICAgICAgICAgICBhYm91dCB0byBiZSBwYXJzZWQuIFNldCBDe2JyZWFrRmxhZ30gdG8gVHJ1ZSB0byBlbmFibGUsIEZhbHNlIHRvCiAgICAgICAgICAgZGlzYWJsZS4KICAgICAgICBjBAAAAAUAAAAFAAAAEwAAAHMpAAAAZAEAZAAAbAAAfQQAfAQAagEAgwAAAYgAAHwAAHwBAHwCAHwDAIMEAFMoAgAAAE5p/////ygCAAAAdAMAAABwZGJ0CQAAAHNldF90cmFjZSgFAAAAUkUBAABSlgAAAHQJAAAAZG9BY3Rpb25zdAwAAABjYWxsUHJlUGFyc2VSiAEAACgBAAAAdAwAAABfcGFyc2VNZXRob2QoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQHAAAAYnJlYWtlcsAEAABzBgAAAAABDAEKAXQUAAAAX29yaWdpbmFsUGFyc2VNZXRob2QoBAAAAHQGAAAAX3BhcnNlUr8AAABSjgEAAFLxAAAAKAMAAABSnAAAAHQJAAAAYnJlYWtGbGFnUo0BAAAoAAAAACgBAAAAUowBAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CAAAAHNldEJyZWFruQQAAHMQAAAAAAUGAQkBFQQJAQwCEgESAWMBAAAAAwAAAAUAAABPAAAAczcAAAB0AAB0AQB0AgB0AAB8AQCDAQCDAgCDAQB8AABfAwB8AgBqBABkAQB0BQCDAgB8AABfBgB8AABTKAIAAABzCwcAAAogICAgICAgIERlZmluZSBhY3Rpb24gdG8gcGVyZm9ybSB3aGVuIHN1Y2Nlc3NmdWxseSBtYXRjaGluZyBwYXJzZSBlbGVtZW50IGRlZmluaXRpb24uCiAgICAgICAgUGFyc2UgYWN0aW9uIGZuIGlzIGEgY2FsbGFibGUgbWV0aG9kIHdpdGggMC0zIGFyZ3VtZW50cywgY2FsbGVkIGFzIEN7Zm4ocyxsb2MsdG9rcyl9LAogICAgICAgIEN7Zm4obG9jLHRva3MpfSwgQ3tmbih0b2tzKX0sIG9yIGp1c3QgQ3tmbigpfSwgd2hlcmU6CiAgICAgICAgIC0gcyAgID0gdGhlIG9yaWdpbmFsIHN0cmluZyBiZWluZyBwYXJzZWQgKHNlZSBub3RlIGJlbG93KQogICAgICAgICAtIGxvYyA9IHRoZSBsb2NhdGlvbiBvZiB0aGUgbWF0Y2hpbmcgc3Vic3RyaW5nCiAgICAgICAgIC0gdG9rcyA9IGEgbGlzdCBvZiB0aGUgbWF0Y2hlZCB0b2tlbnMsIHBhY2thZ2VkIGFzIGEgQ3tMe1BhcnNlUmVzdWx0c319IG9iamVjdAogICAgICAgIElmIHRoZSBmdW5jdGlvbnMgaW4gZm5zIG1vZGlmeSB0aGUgdG9rZW5zLCB0aGV5IGNhbiByZXR1cm4gdGhlbSBhcyB0aGUgcmV0dXJuCiAgICAgICAgdmFsdWUgZnJvbSBmbiwgYW5kIHRoZSBtb2RpZmllZCBsaXN0IG9mIHRva2VucyB3aWxsIHJlcGxhY2UgdGhlIG9yaWdpbmFsLgogICAgICAgIE90aGVyd2lzZSwgZm4gZG9lcyBub3QgbmVlZCB0byByZXR1cm4gYW55IHZhbHVlLgoKICAgICAgICBPcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50czoKICAgICAgICAgLSBjYWxsRHVyaW5nVHJ5ID0gKGRlZmF1bHQ9Q3tGYWxzZX0pIGluZGljYXRlIGlmIHBhcnNlIGFjdGlvbiBzaG91bGQgYmUgcnVuIGR1cmluZyBsb29rYWhlYWRzIGFuZCBhbHRlcm5hdGUgdGVzdGluZwoKICAgICAgICBOb3RlOiB0aGUgZGVmYXVsdCBwYXJzaW5nIGJlaGF2aW9yIGlzIHRvIGV4cGFuZCB0YWJzIGluIHRoZSBpbnB1dCBzdHJpbmcK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dGlvbiBjYWxsIHNpZ25hdHVyZXMuIFVubGlrZSBDe3NldFBhcnNlQWN0aW9ufSwgCiAgICAgICAgZnVuY3Rpb25zIHBhc3NlZCB0byBDe2FkZENvbmRpdGlvbn0gbmVlZCB0byByZXR1cm4gYm9vbGVhbiBzdWNjZXNzL2ZhaWwgb2YgdGhlIGNvbmRpdGlvbi4KCiAgICAgICAgT3B0aW9uYWwga2V5d29yZCBhcmd1bWVudHM6CiAgICAgICAgIC0gbWVzc2FnZSA9IGRlZmluZSBhIGN1c3RvbSBtZXNzYWdlIHRvIGJlIHVzZWQgaW4gdGhlIHJhaXNlZCBleGNlcHRpb24KICAgICAgICAgLSBmYXRhbCAgID0gaWYgVHJ1ZSwgd2lsbCByYWlzZSBQYXJzZUZhdGFsRXhjZXB0aW9uIHRvIHN0b3AgcGFyc2luZyBpbW1lZGlhdGVseTsgb3RoZXJ3aXNlIHdpbGwgcmFpc2UgUGFyc2VFeGNlcHRpb24KICAgICAgICAgCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgIGludGVnZXIgPSBXb3JkKG51bXMpLnNldFBhcnNlQWN0aW9uKGxhbWJkYSB0b2tzOiBpbnQodG9rc1swXSkpCiAgICAgICAgICAgIHllYXJfaW50ID0gaW50ZWdlci5jb3B5KCkKICAgICAgICAgICAgeWVhcl9pbnQuYWRkQ29uZGl0aW9uKGxhbWJkYSB0b2tzOiB0b2tzWzBdID49IDIwMDAsIG1lc3NhZ2U9Ik9ubHkgc3VwcG9ydCB5ZWFycyAyMDAwIGFuZCBsYXRlciIpCiAgICAgICAgICAgIGRhdGVfc3RyID0geWVhcl9pbnQgKyAnLycgKyBpbnRlZ2VyICsgJy8nICsgaW50ZWdlcgoKICAgICAgICAgICAgcmVzdWx0ID0gZGF0ZV9zdHIucGFyc2VTdHJpbmcoIjE5OTkvMTIvMzEiKSAgIyAtPiBFeGNlcHRpb246IE9ubHkgc3VwcG9ydCB5ZWFycyAyMDAwIGFuZCBsYXRlciAoYXQgY2hhciAwKSwgKGxpbmU6MSwgY29sOjEpCiAgICAgICAgdAcAAABtZXNzYWdlcx0AAABmYWlsZWQgdXNlci1kZWZpbmVkIGNvbmRpdGlvbnQFAAAA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dmFsaWQgcmVzdWx0cyBhbmQgcGFyc2luZyBleGNlcHRpb25zLgogICAgICAgICAgIAogICAgICAgICAgIFBhcmFtZXRlcnM6CiAgICAgICAgICAgIC0gY2FjaGVfc2l6ZV9saW1pdCAtIChkZWZhdWx0PUN7MTI4fSkgLSBpZiBhbiBpbnRlZ2VyIHZhbHVlIGlzIHByb3ZpZGVkCiAgICAgICAgICAgICAgd2lsbCBsaW1pdCB0aGUgc2l6ZSBvZiB0aGUgcGFja3JhdCBjYWNoZTsgaWYgTm9uZSBpcyBwYXNzZWQsIHRoZW4KICAgICAgICAgICAgICB0aGUgY2FjaGUgc2l6ZSB3aWxsIGJlIHVuYm91bmRlZDsgaWYgMCBpcyBwYXNzZWQsIHRoZSBjYWNoZSB3aWxsCiAgICAgICAgICAgICAgYmUgZWZmZWN0aXZlbHkgZGlzYWJsZWQuCiAgICAgICAgICAgIAogICAgICAgICAgIFRoaXMgc3BlZWR1cCBtYXkgYnJlYWsgZXhpc3RpbmcgcHJvZ3JhbXMgdGhhdCB1c2UgcGFyc2UgYWN0aW9ucyB0aGF0CiAgICAgICAgICAgaGF2ZSBzaWRlLWVmZmVjdHMuICBGb3IgdGhpcyByZWFzb24sIHBhY2tyYXQgcGFyc2luZyBpcyBkaXNhYmxlZCB3aGVuCiAgICAgICAgICAgeW91IGZpcnN0IGltcG9ydCBweXBhcnNpbmcuICBUbyBhY3RpdmF0ZSB0aGUgcGFja3JhdCBmZWF0dXJlLCB5b3VyCiAgICAgICAgICAgcHJvZ3JhbSBtdXN0IGNhbGwgdGhlIGNsYXNzIG1ldGhvZCBDe1BhcnNlckVsZW1lbnQuZW5hYmxlUGFja3JhdCgpfS4gIElmCiAgICAgICAgICAgeW91ciBwcm9ncmFtIHVzZXMgQ3twc3ljb30gdG8gImNvbXBpbGUgYXMgeW91IGdvIiwgeW91IG11c3QgY2FsbAogICAgICAgICAgIEN7ZW5hYmxlUGFja3JhdH0gYmVmb3JlIGNhbGxpbmcgQ3twc3ljby5mdWxsKCl9LiAgSWYgeW91IGRvIG5vdCBkbyB0aGlzLAogICAgICAgICAgIFB5dGhvbiB3aWxsIGNyYXNoLiAgRm9yIGJlc3QgcmVzdWx0cywgY2FsbCBDe2VuYWJsZVBhY2tyYXQoKX0gaW1tZWRpYXRlbHkKICAgICAgICAgICBhZnRlciBpbXBvcnRpbmcgcHlwYXJzaW5nLgogICAgICAgICAgIAogICAgICAgICAgIEV4YW1wbGU6OgogICAgICAgICAgICAgICBpbXBvcnQgcHlwYXJzaW5nCiAgICAgICAgICAgICAgIHB5cGFyc2luZy5QYXJzZXJFbGVtZW50LmVuYWJsZVBhY2tyYXQoKQogICAgICAgIE4oCQAAAFIiAAAAdA8AAABfcGFja3JhdEVuYWJsZWRSvwAAAFKXAAAAUq8BAABSvgEAAFK1AQAAUsMBAABSjwEAACgBAAAAdBAAAABjYWNoZV9zaXplX2xpbWl0KAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQNAAAAZW5hYmxlUGFja3JhdAAGAABzDAAAAAAbCQEJAQwBEgISAWMDAAAACAAAAAUAAABDAAAAc+AAAAB0AABqAQCDAAABfAAAagIAcyAAfAAAagMAgwAAAW4AAHgbAHwAAGoEAERdEAB9AwB8AwBqAwCDAAABcSoAV3wAAGoFAHNWAHwBAGoGAIMAAH0BAG4AAHlXAHwAAGoHAHwBAGQBAIMCAFwCAH0EAH0FAHwCAHKsAHwAAGoIAHwBAHwEAIMCAH0EAHQJAIMAAHQKAIMAABd9BgB8BgBqBwB8AQB8BACDAgABbgAAV24oAAR0CwBrCgBy1wABfQcAAXQAAGoMAHLOAIIAAHHcAHwHAIIBAG4FAFh8BQBTZAIAUygDAAAAc0IFAAAKICAgICAgICBFeGVjdXRlIHRoZSBwYXJzZSBleHByZXNzaW9uIHdpdGggdGhlIGdpdmVuIHN0cmluZy4KICAgICAgICBUaGlzIGlzIHRoZSBtYWluIGludGVyZmFjZSB0byB0aGUgY2xpZW50IGNvZGUsIG9uY2UgdGhlIGNvbXBsZXRlCiAgICAgICAgZXhwcmVzc2lvbiBoYXMgYmVlbiBidWlsdC4KCiAgICAgICAgSWYgeW91IHdhbnQgdGhlIGdyYW1tYXIgdG8gcmVxdWlyZSB0aGF0IHRoZSBlbnRpcmUgaW5wdXQgc3RyaW5nIGJlCiAgICAgICAgc3VjY2Vzc2Z1bGx5IHBhcnNlZCwgdGhlbiBzZXQgQ3twYXJzZUFsbH0gdG8gVHJ1ZSAoZXF1aXZhbGVudCB0byBlbmRpbmcKICAgICAgICB0aGUgZ3JhbW1hciB3aXRoIEN7THtTdHJpbmdFbmQoKX19KS4KCiAgICAgICAgTm90ZTogQ3twYXJzZVN0cmluZ30gaW1wbGljaXRseSBjYWxscyBDe2V4cGFuZHRhYnMoKX0gb24gdGhlIGlucHV0IHN0cmluZywKICAgICAgICBpbiBvcmRlciB0byByZXBvcnQgcHJvcGVyIGNvbHVtbiBudW1iZXJzIGluIHBhcnNlIGFjdGlvbnMuCiAgICAgICAgSWYgdGhlIGlucHV0IHN0cmluZyBjb250YWlucyB0YWJzIGFuZAogICAgICAgIHRoZSBncmFtbWFyIHVzZXMgcGFyc2UgYWN0aW9ucyB0aGF0IHVzZSB0aGUgQ3tsb2N9IGFyZ3VtZW50IHRvIGluZGV4IGludG8gdGhlCiAgICAgICAgc3RyaW5nIGJlaW5nIHBhcnNlZCwgeW91IGNhbiBlbnN1cmUgeW91IGhhdmUgYSBjb25zaXN0ZW50IHZpZXcgb2YgdGhlIGlucHV0CiAgICAgICAgc3RyaW5nIGJ5OgogICAgICAgICAtIGNhbGxpbmcgQ3twYXJzZVdpdGhUYWJzfSBvbiB5b3VyIGdyYW1tYXIgYmVmb3JlIGNhbGxpbmcgQ3twYXJzZVN0cmluZ30KICAgICAgICAgICAoc2VlIEx7SXtwYXJzZVdpdGhUYWJzfTxwYXJzZVdpdGhUYWJzPn0pCiAgICAgICAgIC0gZGVmaW5lIHlvdXIgcGFyc2UgYWN0aW9uIHVzaW5nIHRoZSBmdWxsIEN7KHMsbG9jLHRva3MpfSBzaWduYXR1cmUsIGFuZAogICAgICAgICAgIHJlZmVyZW5jZSB0aGUgaW5wdXQgc3RyaW5nIHVzaW5nIHRoZSBwYXJzZSBhY3Rpb24ncyBDe3N9IGFyZ3VtZW50CiAgICAgICAgIC0gZXhwbGljdGx5IGV4cGFuZCB0aGUgdGFicyBpbiB5b3VyIGlucHV0IHN0cmluZyBiZWZvcmUgY2FsbGluZwogICAgICAgICAgIEN7cGFyc2VTdHJpbmd9CiAgICAgICAgCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgIFdvcmQoJ2EnKS5wYXJzZVN0cmluZygnYWFhYWFiYWFhJykgICMgLT4gWydhYWFhYSddCiAgICAgICAgICAgIFdvcmQoJ2EnKS5wYXJzZVN0cmluZygnYWFhYWFiYWFhJywgcGFyc2VBbGw9VHJ1ZSkgICMgLT4gRXhjZXB0aW9uOiBFeHBlY3RlZCBlbmQgb2YgdGV4dAogICAgICAgIGkAAAAATigNAAAAUiIAAABSxAEAAFJ3AQAAdAoAAABzdHJlYW1saW5lUnUBAABSdAEAAHQKAAAAZXhwYW5kdGFic1KPAQAAUqIBAABSCwAAAFInAAAAUhsAAAB0EgAAAHZlcmJvc2Vfc3RhY2t0cmFjZSgIAAAAUpwAAABSRQEAAHQIAAAAcGFyc2VBbGxSnQEAAFKWAAAAUqkBAAB0AgAAAHNlUkwBAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAsAAABwYXJzZVN0cmluZyMGAABzJAAAAAAbCgEJAQ0CEAEOAQkBDwEDARgBBgESARABFwEPAQkBBgMKAmMEAAAADwAAAAUAAABjAAAAc5IBAAB8AABqAABzFgB8AABqAQCDAAABbgAAeBsAfAAAagIARF0QAH0EAHwEAGoBAIMAAAFxIABXfAAAagMAc1IAdAQAfAEAgwEAagUAgwAAfQEAbgAAdAYAfAEAgwEAfQUAZAEAfQYAfAAAagcAfQcAfAAAaggAfQgAdAkAagoAgwAAAWQBAH0JAHndAHjWAHwGAHwFAGsBAHJhAXwJAHwCAGsAAHJhAXkuAHwHAHwBAHwGAIMCAH0KAHwIAHwBAHwKAGQCAHQLAIMCAVwCAH0LAH0MAFduGwAEdAwAawoAcu8AAQEBfAoAZAMAF30GAHGMAFh8CwB8BgBrBAByVAF8CQBkAwA3fQkAfAwAfAoAfAsAZgMAVgF8AwBySwF8BwB8AQB8BgCDAgB9DQB8DQB8BgBrBAByPgF8CwB9BgBxUQF8BgBkAwA3fQYAcV4BfAsAfQYAcYwAfAoAZAMAF30GAHGMAFdXbigABHQNAGsKAHKNAQF9DgABdAkAag4AcoQBggAAcY4BfA4AggEAbgEAWGQEAFMoBQAAAHOGBAAACiAgICAgICAgU2NhbiB0aGUgaW5wdXQgc3RyaW5nIGZvciBleHByZXNzaW9uIG1hdGNoZXMuICBFYWNoIG1hdGNoIHdpbGwgcmV0dXJuIHRoZQogICAgICAgIG1hdGNoaW5nIHRva2Vucywgc3RhcnQgbG9jYXRpb24sIGFuZCBlbmQgbG9jYXRpb24uICBNYXkgYmUgY2FsbGVkIHdpdGggb3B0aW9uYWwKICAgICAgICBDe21heE1hdGNoZXN9IGFyZ3VtZW50LCB0byBjbGlwIHNjYW5uaW5nIGFmdGVyICduJyBtYXRjaGVzIGFyZSBmb3VuZC4gIElmCiAgICAgICAgQ3tvdmVybGFwfSBpcyBzcGVjaWZpZWQsIHRoZW4gb3ZlcmxhcHBpbmcgbWF0Y2hlcyB3aWxsIGJlIHJlcG9ydGVkLgoKICAgICAgICBOb3RlIHRoYXQgdGhlIHN0YXJ0IGFuZCBlbmQgbG9jYXRpb25zIGFyZSByZXBvcnRlZCByZWxhdGl2ZSB0byB0aGUgc3RyaW5nCiAgICAgICAgYmVpbmcgcGFyc2VkLiAgU2VlIEx7SXtwYXJzZVN0cmluZ308cGFyc2VTdHJpbmc+fSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwYXJzaW5nCiAgICAgICAgc3RyaW5ncyB3aXRoIGVtYmVkZGVkIHRhYnMuCgogICAgICAgIEV4YW1wbGU6OgogICAgICAgICAgICBzb3VyY2UgPSAic2xkamYxMjNsc2RqamtmMzQ1c2xka2pmODc5bGtqc2ZkOTg3IgogICAgICAgICAgICBwcmludChzb3VyY2UpCiAgICAgICAgICAgIGZvciB0b2tlbnMsc3RhcnQsZW5kIGluIFdvcmQoYWxwaGFzKS5zY2FuU3RyaW5nKHNvdXJjZSk6CiAgICAgICAgICAgICAgICBwcmludCgnICcqc3RhcnQgKyAnXicqKGVuZC1zdGFydCkpCiAgICAgICAgICAgICAgICBwcmludCgnICcqc3RhcnQgKyB0b2tlbnNbMF0pCiAgICAgICAgCiAgICAgICAgcHJpbnRzOjoKICAgICAgICAKICAgICAgICAgICAgc2xkamYxMjNsc2RqamtmMzQ1c2xka2pmODc5bGtqc2ZkOTg3CiAgICAgICAgICAgIF5eXl5eCiAgICAgICAgICAgIHNsZGpmCiAgICAgICAgICAgICAgICAgICAgXl5eXl5eXgogICAgICAgICAgICAgICAgICAgIGxzZGpqa2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsZGtqZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGtqc2ZkCiAgICAgICAgaQAAAABSiwEAAGkBAAAATigPAAAAUncBAABSyAEAAFJ1AQAAUnQBAABSfwAAAFLJAQAAUt0AAABSogEAAFKPAQAAUiIAAABSxAEAAFLGAAAAUh0AAABSGwAAAFLKAQAAKA8AAABSnAAAAFJFAQAAdAoAAABtYXhNYXRjaGVzdAcAAABvdmVybGFwUp0BAABSoQEAAFKWAAAAdAoAAABwcmVwYXJzZUZudAcAAABwYXJzZUZudAcAAABtYXRjaGVzUqcBAAB0BwAAAG5leHRMb2NSqQEAAHQHAAAAbmV4dGxvY1JMAQAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQKAAAAc2NhblN0cmluZ1UGAABzQgAAAAAeCQENARABDgIJARUBDAEGAQkBCQEKAQYBAwEbAQMBDwEfAQ0BDgIMAQoBDgEGAQ8BDAEJAg0CCQISAQ8BCQEGA2MCAAAACQAAAAUAAABDAAAAcyUBAABnAAB9AgBkAQB9AwB0AAB8AABfAQB54QB4jgB8AABqAgB8AQCDAQBEXX0AXAMAfQQAfQUAfQYAfAIAagMAfAEAfAMAfAUAIYMBAAF8BABynwB0BAB8BAB0BQCDAgBycwB8AgB8BABqBgCDAAA3fQIAcZ8AdAQAfAQAdAcAgwIAco8AfAIAfAQAN30CAHGfAHwCAGoDAHwEAIMBAAFuAAB8BgB9AwBxKABXfAIAagMAfAEAfAMAH4MBAAFnAAB8AgBEXRIAfQcAfAcAcsEAfAcAXgIAccEAfQIAZAIAaggAdAkAdAoAdAsAfAIAgwEAgwIAgwEAU1duKAAEdAwAawoAciABAX0IAAF0DQBqDgByFwGCAABxIQF8CACCAQBuAQBYZAMAUygEAAAAc2YDAAAKICAgICAgICBFeHRlbnNpb24gdG8gQ3tMe3NjYW5TdHJpbmd9fSwgdG8gbW9kaWZ5IG1hdGNoaW5nIHRleHQgd2l0aCBtb2RpZmllZCB0b2tlbnMgdGhhdCBtYXkKICAgICAgICBiZSByZXR1cm5lZCBmcm9tIGEgcGFyc2UgYWN0aW9uLiAgVG8gdXNlIEN7dHJhbnNmb3JtU3RyaW5nfSwgZGVmaW5lIGEgZ3JhbW1hciBhbmQKICAgICAgICBhdHRhY2ggYSBwYXJzZSBhY3Rpb24gdG8gaXQgdGhhdCBtb2RpZmllcyB0aGUgcmV0dXJuZWQgdG9rZW4gbGlzdC4KICAgICAgICBJbnZva2luZyBDe3RyYW5zZm9ybVN0cmluZygpfSBvbiBhIHRhcmdldCBzdHJpbmcgd2lsbCB0aGVuIHNjYW4gZm9yIG1hdGNoZXMsCiAgICAgICAgYW5kIHJlcGxhY2UgdGhlIG1hdGNoZWQgdGV4dCBwYXR0ZXJucyBhY2NvcmRpbmcgdG8gdGhlIGxvZ2ljIGluIHRoZSBwYXJzZQogICAgICAgIGFjdGlvbi4gIEN7dHJhbnNmb3JtU3RyaW5nKCl9IHJldHVybnMgdGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBzdHJpbmcuCiAgICAgICAgCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgIHdkID0gV29yZChhbHBoYXMpCiAgICAgICAgICAgIHdkLnNldFBhcnNlQWN0aW9uKGxhbWJkYSB0b2tzOiB0b2tzWzBdLnRpdGxlKCkpCiAgICAgICAgICAgIAogICAgICAgICAgICBwcmludCh3ZC50cmFuc2Zvcm1TdHJpbmcoIm5vdyBpcyB0aGUgd2ludGVyIG9mIG91ciBkaXNjb250ZW50IG1hZGUgZ2xvcmlvdXMgc3VtbWVyIGJ5IHRoaXMgc3VuIG9mIHlvcmsuIikpCiAgICAgICAgUHJpbnRzOjoKICAgICAgICAgICAgTm93IElzIFRoZSBXaW50ZXIgT2YgT3VyIERpc2NvbnRlbnQgTWFkZSBHbG9yaW91cyBTdW1tZXIgQnkgVGhpcyBTdW4gT2YgWW9yay4KICAgICAgICBpAAAAAFJyAAAATigPAAAAUr8AAABSdAEAAFLVAQAAUgQBAABScwAAAFIgAAAAUsMAAABSzAAAAFKoAAAAUpIBAABSfwAAAHQIAAAAX2ZsYXR0ZW5SGwAAAFIiAAAAUsoBAAAoCQAAAFKcAAAAUkUBAABSGAEAAHQFAAAAbGFzdEVScAAAAFKEAAAAUp0BAAB0AQAAAG9STAEAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSewAAAJwGAABzKAAAAAARBgEGAwkBAwEfARQBBgEPARMBDwENAhABCgERAR8BIAEPAQkBBgNjAwAAAAcAAAAGAAAAQwAAAHNlAAAAeTYAdAAAZwAAfAAAagEAfAEAfAIAgwIARF0VAFwDAH0DAH0EAH0FAHwDAF4CAHEZAIMBAFNXbigABHQCAGsKAHJgAAF9BgABdAMAagQAclcAggAAcWEAfAYAggEAbgEAWGQBAFMoAgAAAHN+AgAACiAgICAgICAgQW5vdGhlciBleHRlbnNpb24gdG8gQ3tMe3NjYW5TdHJpbmd9fSwgc2ltcGxpZnlpbmcgdGhlIGFjY2VzcyB0byB0aGUgdG9rZW5zIGZvdW5kCiAgICAgICAgdG8gbWF0Y2ggdGhlIGdpdmVuIHBhcnNlIGV4cHJlc3Npb24uICBNYXkgYmUgY2FsbGVkIHdpdGggb3B0aW9uYWwKICAgICAgICBDe21heE1hdGNoZXN9IGFyZ3VtZW50LCB0byBjbGlwIHNlYXJjaGluZyBhZnRlciAnbicgbWF0Y2hlcyBhcmUgZm91bmQuCiAgICAgICAgCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgICMgYSBjYXBpdGFsaXplZCB3b3JkIHN0YXJ0cyB3aXRoIGFuIHVwcGVyY2FzZSBsZXR0ZXIsIGZvbGxvd2VkIGJ5IHplcm8gb3IgbW9yZSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgICAgICBjYXBfd29yZCA9IFdvcmQoYWxwaGFzLnVwcGVyKCksIGFscGhhcy5sb3dlcigpKQogICAgICAgICAgICAKICAgICAgICAgICAgcHJpbnQoY2FwX3dvcmQuc2VhcmNoU3RyaW5nKCJNb3JlIHRoYW4gSXJvbiwgbW9yZSB0aGFuIExlYWQsIG1vcmUgdGhhbiBHb2xkIEkgbmVlZCBFbGVjdHJpY2l0eSIpKQogICAgICAgIHByaW50czo6CiAgICAgICAgICAgIFsnTW9yZScsICdJcm9uJywgJ0xlYWQnLCAnR29sZCcsICdJJ10KICAgICAgICBOKAUAAABSIAAAAFLVAQAAUhsAAABSIgAAAFLKAQAAKAcAAABSnAAAAFJFAQAAUs4BAABScAAAAFKEAAAAUp0BAABSTAEAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0DAAAAHNlYXJjaFN0cmluZ8cGAABzDAAAAAAOAwE2AQ8BCQEGA2MEAAAACQAAAAQAAABjAAAAc2YAAABkAQB9BABkAQB9BQB4SgB8AABqAAB8AQBkAgB8AgCDAQFEXTMAXAMAfQYAfQcAfQgAfAEAfAUAfAcAIVYBfAMAck8AfAYAZAEAGVYBbgAAfAgAfQUAcSIAV3wBAHwFAB9WAWQDAFMoBAAAAHNbAgAACiAgICAgICAgR2VuZXJhdG9yIG1ldGhvZCB0byBzcGxpdCBhIHN0cmluZyB1c2luZyB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBhcyBhIHNlcGFyYXRvci4KICAgICAgICBNYXkgYmUgY2FsbGVkIHdpdGggb3B0aW9uYWwgQ3ttYXhzcGxpdH0gYXJndW1lbnQsIHRvIGxpbWl0IHRoZSBudW1iZXIgb2Ygc3BsaXRzOwogICAgICAgIGFuZCB0aGUgb3B0aW9uYWwgQ3tpbmNsdWRlU2VwYXJhdG9yc30gYXJndW1lbnQgKGRlZmF1bHQ9Q3tGYWxzZX0pLCBpZiB0aGUgc2VwYXJhdGluZwogICAgICAgIG1hdGNoaW5nIHRleHQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBzcGxpdCByZXN1bHRzLgogICAgICAgIAogICAgICAgIEV4YW1wbGU6OiAgICAgICAgCiAgICAgICAgICAgIHB1bmMgPSBvbmVPZihsaXN0KCIuLDs6Ly0hPyIpKQogICAgICAgICAgICBwcmludChsaXN0KHB1bmMuc3BsaXQoIlRoaXMsIHRoaXM/LCB0aGlzIHNlbnRlbmNlLCBpcyBiYWRseSBwdW5jdHVhdGVkISIpKSkKICAgICAgICBwcmludHM6OgogICAgICAgICAgICBbJ1RoaXMnLCAnIHRoaXMnLCAnJywgJyB0aGlzIHNlbnRlbmNlJywgJyBpcyBiYWRseSBwdW5jdHVhdGVkJywgJyddCiAgICAgICAgaQAAAABSzgEAAE4oAQAAAFLVAQAAKAkAAABSnAAAAFJFAQAAdAgAAABtYXhzcGxpdHQRAAAAaW5jbHVkZVNlcGFyYXRvcnN0BgAAAHNwbGl0c3QEAAAAbGFzdFJwAAAAUoQAAABSnQEAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlShQAAAN4GAABzEAAAAAANBgEGASUBDAEGAQwBCgFjAgAAAAIAAAAFAAAAQwAAAHNkAAAAdAAAfAEAdAEAgwIAciEAdAIAagMAfAEAgwEAfQEAbgAAdAAAfAEAdAIAgwIAc1QAdAQAagUAZAEAdAYAfAEAgwEAFnQHAGQCAGQDAIMCAQFkBABTdAkAfAAAfAEAZwIAgwEAUygFAAAAc5YBAAAKICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiArIG9wZXJhdG9yIC0gcmV0dXJucyBDe0x7QW5kfX0uIEFkZGluZyBzdHJpbmdzIHRvIGEgUGFyc2VyRWxlbWVudAogICAgICAgIGNvbnZlcnRzIHRoZW0gdG8gTHtMaXRlcmFsfXMgYnkgZGVmYXVsdC4KICAgICAgICAKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgZ3JlZXQgPSBXb3JkKGFscGhhcykgKyAiLCIgKyBXb3JkKGFscGhhcykgKyAiISIKICAgICAgICAgICAgaGVsbG8gPSAiSGVsbG8sIFdvcmxkISIKICAgICAgICAgICAgcHJpbnQgKGhlbGxvLCAiLT4iLCBncmVldC5wYXJzZVN0cmluZyhoZWxsbykpCiAgICAgICAgUHJpbnRzOjoKICAgICAgICAgICAgSGVsbG8sIFdvcmxkISAtPiBbJ0hlbGxvJywgJywnLCAnV29ybGQnLCAnISddCiAgICAgICAgczQAAABDYW5ub3QgY29tYmluZSBlbGVtZW50IG9mIHR5cGUgJXMgd2l0aCBQYXJzZXJFbGVtZW50dAoAAABzdGFja2xldmVsaQIAAABOKAoAAABScwAAAFLRAAAAUiIAAABSaQEAAHQIAAAAd2FybmluZ3N0BAAAAHdhcm5SrwAAAHQNAAAAU3ludGF4V2FybmluZ1KXAAAAUgQAAAAoAgAAAFKcAAAAUgkBAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UgoBAAD0BgAAcw4AAAAADA8BEgEPARMBDQEEAWMCAAAAAgAAAAUAAABDAAAAc1wAAAB0AAB8AQB0AQCDAgByIQB0AgBqAwB8AQCDAQB9AQBuAAB0AAB8AQB0AgCDAgBzVAB0BABqBQBkAQB0BgB8AQCDAQAWdAcAZAIAZAMAgwIBAWQEAFN8AQB8AAAXUygFAAAAc10AAAAKICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiArIG9wZXJhdG9yIHdoZW4gbGVmdCBvcGVyYW5kIGlzIG5vdCBhIEN7THtQYXJzZXJFbGVtZW50fX0KICAgICAgICBzNAAAAENhbm5vdCBjb21iaW5lIGVsZW1lbnQgb2YgdHlwZSAlcyB3aXRoIFBhcnNlckVsZW1lbnRS3gEAAGkCAAAATigJAAAAUnMAAABS0QAAAFIiAAAAUmkBAABS3wEAAFLgAQAAUq8AAABS4QEAAFKXAAAAKAIAAABSnAAAAFIJAQAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVITAQAACAcAAHMOAAAAAAQPARIBDwETAQ0BBAFjAgAAAAIAAAAFAAAAQwAAAHNtAAAAdAAAfAEAdAEAgwIAciEAdAIAagMAfAEAgwEAfQEAbgAAdAAAfAEAdAIAgwIAc1QAdAQAagUAZAEAdAYAfAEAgwEAFnQHAGQCAGQDAIMCAQFkBABTdAkAfAAAdAkAagoAgwAAfAEAZwMAgwEAUygFAAAAc1EAAAAKICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiAtIG9wZXJhdG9yLCByZXR1cm5zIEN7THtBbmR9fSB3aXRoIGVycm9yIHN0b3AKICAgICAgICBzNAAAAENhbm5vdCBjb21iaW5lIGVsZW1lbnQgb2YgdHlwZSAlcyB3aXRoIFBhcnNlckVsZW1lbnRS3gEAAGkCAAAATigLAAAAUnMAAABS0QAAAFIiAAAAUmkBAABS3wEAAFLgAQAAUq8AAABS4QEAAFKXAAAAUgQAAAB0CgAAAF9FcnJvclN0b3AoAgAAAFKcAAAAUgkBAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAcAAABfX3N1Yl9fFAcAAHMOAAAAAAQPARIBDwETAQ0BBAFjAgAAAAIAAAAFAAAAQwAAAHNcAAAAdAAAfAEAdAEAgwIAciEAdAIAagMAfAEAgwEAfQEAbgAAdAAAfAEAdAIAgwIAc1QAdAQAagUAZAEAdAYAfAEAgwEAFnQHAGQCAGQDAIMCAQFkBABTfAEAfAAAGFMoBQAAAHNdAAAACiAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgLSBvcGVyYXRvciB3aGVuIGxlZnQgb3BlcmFuZCBpcyBub3QgYSBDe0x7UGFyc2VyRWxlbWVudH19CiAgICAgICAgczQAAABDYW5ub3QgY29tYmluZSBlbGVtZW50IG9mIHR5cGUgJXMgd2l0aCBQYXJzZXJFbGVtZW50Ut4BAABpAgAAAE4oCQAAAFJzAAAAUtEAAABSIgAAAFJpAQAAUt8BAABS4AEAAFKvAAAAUuEBAABSlwAAACgCAAAAUpwAAABSCQEAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CAAAAF9fcnN1Yl9fIAcAAHMOAAAAAAQPARIBDwETAQ0BBAFjAgAAAAUAAAAGAAAAAwAAAHNFAgAAdAAAfAEAdAEAgwIAch8AfAEAZAEAAn0CAH0DAG4tAXQAAHwBAHQCAIMCAHI3AXwBAGQLABdkAgAgfQEAfAEAZAEAGWQKAGsIAHJfAGQBAHwBAGQDABlmAgB9AQBuAAB0AAB8AQBkAQAZdAEAgwIAcs8AfAEAZAMAGWQKAGsIAHLPAHwBAGQBABlkAQBrAgBynAB0BACIAQCDAQBTfAEAZAEAGWQDAGsCAHK2AHQFAIgBAIMBAFOIAQB8AQBkAQAZFHQEAIgBAIMBABdTcUwBdAAAfAEAZAEAGXQBAIMCAHIOAXQAAHwBAGQDABl0AQCDAgByDgF8AQBcAgB9AgB9AwB8AwB8AgA4fQMAcUwBdAYAZAQAdAcAfAEAZAEAGYMBAHQHAHwBAGQDABmDAQCDAwCCAQBuFQB0BgBkBQB0BwB8AQCDAQCDAgCCAQB8AgBkAQBrAAByZwF0CABkBgCDAQCCAQBuAAB8AwBkAQBrAAByggF0CABkBwCDAQCCAQBuAAB8AgB8AwAEA2sCAG+ZAWQBAGsCAG4CAAIBcq0BdAgAZAgAgwEAggEAbgAAfAMAchkChwAAhwEAZgIAZAkAhgAAiQAAfAIAcgoCfAIAZAMAawIAcuoBiAEAiAAAfAMAgwEAF30EAHEWAnQJAIgBAGcBAHwCABSDAQCIAAB8AwCDAQAXfQQAcUECiAAAfAMAgwEAfQQAbigAfAIAZAMAawIAci4CiAEAfQQAbhMAdAkAiAEAZwEAfAIAFIMBAH0EAHwEAFMoDAAAAHPlAwAACiAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgKiBvcGVyYXRvciwgYWxsb3dzIHVzZSBvZiBDe2V4cHIgKiAzfSBpbiBwbGFjZSBvZgogICAgICAgIEN7ZXhwciArIGV4cHIgKyBleHByfS4gIEV4cHJlc3Npb25zIG1heSBhbHNvIG1lIG11bHRpcGxpZWQgYnkgYSAyLWludGVnZXIKICAgICAgICB0dXBsZSwgc2ltaWxhciB0byBDe3ttaW4sbWF4fX0gbXVsdGlwbGllcnMgaW4gcmVndWxhciBleHByZXNzaW9ucy4gIFR1cGxlcwogICAgICAgIG1heSBhbHNvIGluY2x1ZGUgQ3tOb25lfSBhcyBpbjoKICAgICAgICAgLSBDe2V4cHIqKG4sTm9uZSl9IG9yIEN7ZXhwcioobiwpfSBpcyBlcXVpdmFsZW50CiAgICAgICAgICAgICAgdG8gQ3tleHByKm4gKyBMe1plcm9Pck1vcmV9KGV4cHIpfQogICAgICAgICAgICAgIChyZWFkIGFzICJhdCBsZWFzdCBuIGluc3RhbmNlcyBvZiBDe2V4cHJ9IikKICAgICAgICAgLSBDe2V4cHIqKE5vbmUsbil9IGlzIGVxdWl2YWxlbnQgdG8gQ3tleHByKigwLG4pfQogICAgICAgICAgICAgIChyZWFkIGFzICIwIHRvIG4gaW5zdGFuY2VzIG9mIEN7ZXhwcn0iKQogICAgICAgICAtIEN7ZXhwciooTm9uZSxOb25lKX0gaXMgZXF1aXZhbGVudCB0byBDe0x7WmVyb09yTW9yZX0oZXhwcil9CiAgICAgICAgIC0gQ3tleHByKigxLE5vbmUpfSBpcyBlcXVpdmFsZW50IHRvIEN7THtPbmVPck1vcmV9KGV4cHIpfQoKICAgICAgICBOb3RlIHRoYXQgQ3tleHByKihOb25lLG4pfSBkb2VzIG5vdCByYWlzZSBhbiBleGNlcHRpb24gaWYKICAgICAgICBtb3JlIHRoYW4gbiBleHBycyBleGlzdCBpbiB0aGUgaW5wdXQgc3RyZWFtOyB0aGF0IGlzLAogICAgICAgIEN7ZXhwciooTm9uZSxuKX0gZG9lcyBub3QgZW5mb3JjZSBhIG1heGltdW0gbnVtYmVyIG9mIGV4cHIKICAgICAgICBvY2N1cnJlbmNlcy4gIElmIHRoaXMgYmVoYXZpb3IgaXMgZGVzaXJlZCwgdGhlbiB3cml0ZQogICAgICAgIEN7ZXhwciooTm9uZSxuKSArIH5leHByfQogICAgICAgIGkAAAAAaQIAAABpAQAAAHM3AAAAY2Fubm90IG11bHRpcGx5ICdQYXJzZXJFbGVtZW50JyBhbmQgKCclcycsJyVzJykgb2JqZWN0c3MwAAAAY2Fubm90IG11bHRpcGx5ICdQYXJzZXJFbGVtZW50JyBhbmQgJyVzJyBvYmplY3Rzcy8AAABjYW5ub3QgbXVsdGlwbHkgUGFyc2VyRWxlbWVudCBieSBuZWdhdGl2ZSB2YWx1ZXNAAAAAc2Vjb25kIHR1cGxlIHZhbHVlIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byBmaXJzdCB0dXBsZSB2YWx1ZXMrAAAAY2Fubm90IG11bHRpcGx5IFBhcnNlckVsZW1lbnQgYnkgMCBvciAoMCwwKWMBAAAAAQAAAAUAAAATAAAAczIAAAB8AABkAQBrBAByJAB0AACIAQCIAAB8AABkAQAYgwEAF4MBAFN0AACIAQCDAQBTZAAAUygCAAAATmkBAAAAKAEAAABSGQAAACgBAAAAdAEAAABuKAIAAAB0EAAAAG1ha2VPcHRpb25hbExpc3RSnAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UuYBAABdBwAAcwYAAAAAAQwBGAJOKAIAAABOTigKAAAAUnMAAABSbwAAAHQFAAAAdHVwbGVSlwAAAFIwAAAAUhcAAABS1AAAAFKvAAAAdAoAAABWYWx1ZUVycm9yUgQAAAAoBQAAAFKcAAAAUgkBAAB0CwAAAG1pbkVsZW1lbnRzdAsAAABvcHRFbGVtZW50c1J9AAAAKAAAAAAoAgAAAFLmAQAAUpwAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0BwAAAF9fbXVsX18sBwAAc0QAAAAAFA8BEAEPAQ4BEAETASMBEAEKARABCgIZASYBDAENAikCFQIMAQ8BDAEPARwBDwIGARIFBgEMARMCIAIPAgwBCQITAWMCAAAAAgAAAAIAAABDAAAAcw0AAAB8AABqAAB8AQCDAQBTKAEAAABOKAEAAABS6wEAACgCAAAAUpwAAABSCQEAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CAAAAF9fcm11bF9fcAcAAHMCAAAAAAFjAgAAAAIAAAAFAAAAQwAAAHNkAAAAdAAAfAEAdAEAgwIAciEAdAIAagMAfAEAgwEAfQEAbgAAdAAAfAEAdAIAgwIAc1QAdAQAagUAZAEAdAYAfAEAgwEAFnQHAGQCAGQDAIMCAQFkBABTdAkAfAAAfAEAZwIAgwEAUygFAAAAc0kAAAAKICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiB8IG9wZXJhdG9yIC0gcmV0dXJucyBDe0x7TWF0Y2hGaXJzdH19CiAgICAgICAgczQAAABDYW5ub3QgY29tYmluZSBlbGVtZW50IG9mIHR5cGUgJXMgd2l0aCBQYXJzZXJFbGVtZW50Ut4BAABpAgAAAE4oCgAAAFJzAAAAUtEAAABSIgAAAFJpAQAAUt8BAABS4AEAAFKvAAAAUuEBAABSlwAAAFIUAAAAKAIAAABSnAAAAFIJAQAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQGAAAAX19vcl9fcwcAAHMOAAAAAAQPARIBDwETAQ0BBAFjAgAAAAIAAAAFAAAAQwAAAHNcAAAAdAAAfAEAdAEAgwIAciEAdAIAagMAfAEAgwEAfQEAbgAAdAAAfAEAdAIAgwIAc1QAdAQAagUAZAEAdAYAfAEAgwEAFnQHAGQCAGQDAIMCAQFkBABTfAEAfAAAQlMoBQAAAHNdAAAACiAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgfCBvcGVyYXRvciB3aGVuIGxlZnQgb3BlcmFuZCBpcyBub3QgYSBDe0x7UGFyc2VyRWxlbWVudH19CiAgICAgICAgczQAAABDYW5ub3QgY29tYmluZSBlbGVtZW50IG9mIHR5cGUgJXMgd2l0aCBQYXJzZXJFbGVtZW50Ut4BAABpAgAAAE4oCQAAAFJzAAAAUtEAAABSIgAAAFJpAQAAUt8BAABS4AEAAFKvAAAAUuEBAABSlwAAACgCAAAAUpwAAABSCQEAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0BwAAAF9fcm9yX19/BwAAcw4AAAAABA8BEgEPARMBDQEEAWMCAAAAAgAAAAUAAABDAAAAc2QAAAB0AAB8AQB0AQCDAgByIQB0AgBqAwB8AQCDAQB9AQBuAAB0AAB8AQB0AgCDAgBzVAB0BABqBQBkAQB0BgB8AQCDAQAWdAcAZAIAZAMAgwIBAWQEAFN0CQB8AAB8AQBnAgCDAQBTKAUAAABzQQAAAAogICAgICAgIEltcGxlbWVudGF0aW9uIG9mIF4gb3BlcmF0b3IgLSByZXR1cm5zIEN7THtPcn19CiAgICAgICAgczQAAABDYW5ub3QgY29tYmluZSBlbGVtZW50IG9mIHR5cGUgJXMgd2l0aCBQYXJzZXJFbGVtZW50Ut4BAABpAgAAAE4oCgAAAFJzAAAAUtEAAABSIgAAAFJpAQAAUt8BAABS4AEAAFKvAAAAUuEBAABSlwAAAFIaAAAAKAIAAABSnAAAAFIJAQAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQHAAAAX194b3JfX4sHAABzDgAAAAAEDwESAQ8BEwENAQQBYwIAAAACAAAABQAAAEMAAABzXAAAAHQAAHwBAHQBAIMCAHIhAHQCAGoDAHwBAIMBAH0BAG4AAHQAAHwBAHQCAIMCAHNUAHQEAGoFAGQBAHQGAHwBAIMBABZ0BwBkAgBkAwCDAgEBZAQAU3wBAHwAAEFTKAUAAABzXQAAAAogICAgICAgIEltcGxlbWVudGF0aW9uIG9mIF4gb3BlcmF0b3Igd2hlbiBsZWZ0IG9wZXJhbmQgaXMgbm90IGEgQ3tMe1BhcnNlckVsZW1lbnR9fQogICAgICAgIHM0AAAAQ2Fubm90IGNvbWJpbmUgZWxlbWVudCBvZiB0eXBlICVzIHdpdGggUGFyc2VyRWxlbWVudFLeAQAAaQIAAABOKAkAAABScwAAAFLRAAAAUiIAAABSaQEAAFLfAQAAUuABAABSrwAAAFLhAQAAUpcAAAAoAgAAAFKcAAAAUgkBAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAgAAABfX3J4b3JfX5cHAABzDgAAAAAEDwESAQ8BEwENAQQBYwIAAAACAAAABQAAAEMAAABzZAAAAHQAAHwBAHQBAIMCAHIhAHQCAGoDAHwBAIMBAH0BAG4AAHQAAHwBAHQCAIMCAHNUAHQEAGoFAGQBAHQGAHwBAIMBABZ0BwBkAgBkAwCDAgEBZAQAU3QJAHwAAHwBAGcCAIMBAFMoBQAAAHNDAAAACiAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgJiBvcGVyYXRvciAtIHJldHVybnMgQ3tMe0VhY2h9fQogICAgICAgIHM0AAAAQ2Fubm90IGNvbWJpbmUgZWxlbWVudCBvZiB0eXBlICVzIHdpdGggUGFyc2VyRWxlbWVudFLeAQAAaQIAAABOKAoAAABScwAAAFLRAAAAUiIAAABSaQEAAFLfAQAAUuABAABSrwAAAFLhAQAAUpcAAABSCgAAACgCAAAAUpwAAABSCQEAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0BwAAAF9fYW5kX1+jBwAAcw4AAAAABA8BEgEPARMBDQEEAWMCAAAAAgAAAAUAAABDAAAAc1wAAAB0AAB8AQB0AQCDAgByIQB0AgBqAwB8AQCDAQB9AQBuAAB0AAB8AQB0AgCDAgBzVAB0BABqBQBkAQB0BgB8AQCDAQAWdAcAZAIAZAMAgwIBAWQEAFN8AQB8AABAUygFAAAAc10AAAAKICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiAmIG9wZXJhdG9yIHdoZW4gbGVmdCBvcGVyYW5kIGlzIG5vdCBhIEN7THtQYXJzZXJFbGVtZW50fX0KICAgICAgICBzNAAAAENhbm5vdCBjb21iaW5lIGVsZW1lbnQgb2YgdHlwZSAlcyB3aXRoIFBhcnNlckVsZW1lbnRS3gEAAGkCAAAATigJAAAAUnMAAABS0QAAAFIiAAAAUmkBAABS3wEAAFLgAQAAUq8AAABS4QEAAFKXAAAAKAIAAABSnAAAAFIJAQAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQIAAAAX19yYW5kX1+vBwAAcw4AAAAABA8BEgEPARMBDQEEAWMBAAAAAQAAAAIAAABDAAAAcwoAAAB0AAB8AACDAQBTKAEAAABzRQAAAAogICAgICAgIEltcGxlbWVudGF0aW9uIG9mIH4gb3BlcmF0b3IgLSByZXR1cm5zIEN7THtOb3RBbnl9fQogICAgICAgICgBAAAAUhYAAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQKAAAAX19pbnZlcnRfX7sHAABzAgAAAAAEYwIAAAACAAAAAgAAAEMAAABzJwAAAHwBAGQBAGsJAHIZAHwAAGoBAHwBAIMBAFN8AABqAgCDAABTZAEAUygCAAAAcw0CAAAKICAgICAgICBTaG9ydGN1dCBmb3IgQ3tMe3NldFJlc3VsdHNOYW1lfX0sIHdpdGggQ3tsaXN0QWxsTWF0Y2hlcz1GYWxzZX0uCiAgICAgICAgCiAgICAgICAgSWYgQ3tuYW1lfSBpcyBnaXZlbiB3aXRoIGEgdHJhaWxpbmcgQ3snKid9IGNoYXJhY3RlciwgdGhlbiBDe2xpc3RBbGxNYXRjaGVzfSB3aWxsIGJlCiAgICAgICAgcGFzc2VkIGFzIEN7VHJ1ZX0uCiAgICAgICAgICAgCiAgICAgICAgSWYgQ3tuYW1lfSBpcyBvbWl0dGVkLCBzYW1lIGFzIGNhbGxpbmcgQ3tMe2NvcHl9fS4KCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgICMgdGhlc2UgYXJlIGVxdWl2YWxlbnQKICAgICAgICAgICAgdXNlcmRhdGEgPSBXb3JkKGFscGhhcykuc2V0UmVzdWx0c05hbWUoIm5hbWUiKSArIFdvcmQobnVtcysiLSIpLnNldFJlc3VsdHNOYW1lKCJzb2NzZWNubyIpCiAgICAgICAgICAgIHVzZXJkYXRhID0gV29yZChhbHBoYXMpKCJuYW1lIikgKyBXb3JkKG51bXMrIi0iKSgic29jc2Vjbm8iKSAgICAgICAgICAgICAKICAgICAgICBOKAMAAABSlwAAAFKHAQAAUtIAAAAoAgAAAFKcAAAAUsIAAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAgAAABfX2NhbGxfX8EHAABzBgAAAAAODAENAmMBAAAAAQAAAAIAAABDAAAAcwoAAAB0AAB8AACDAQBTKAEAAABziAAAAAogICAgICAgIFN1cHByZXNzZXMgdGhlIG91dHB1dCBvZiB0aGlzIEN7UGFyc2VyRWxlbWVudH07IHVzZWZ1bCB0byBrZWVwIHB1bmN0dWF0aW9uIGZyb20KICAgICAgICBjbHV0dGVyaW5nIHVwIHJldHVybmVkIG91dHB1dC4KICAgICAgICAoAQAAAFIpAAAAKAEAAABSnAAAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CAAAAHN1cHByZXNz1AcAAHMCAAAAAAVjAQAAAAEAAAACAAAAQwAAAHMNAAAAdAAAfAAAXwEAfAAAUygBAAAAcwgBAAAKICAgICAgICBEaXNhYmxlcyB0aGUgc2tpcHBpbmcgb2Ygd2hpdGVzcGFjZSBiZWZvcmUgbWF0Y2hpbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlCiAgICAgICAgQ3tQYXJzZXJFbGVtZW50fSdzIGRlZmluZWQgcGF0dGVybi4gIFRoaXMgaXMgbm9ybWFsbHkgb25seSB1c2VkIGludGVybmFsbHkgYnkKICAgICAgICB0aGUgcHlwYXJzaW5nIG1vZHVsZSwgYnV0IG1heSBiZSBuZWVkZWQgaW4gc29tZSB3aGl0ZXNwYWNlLXNlbnNpdGl2ZSBncmFtbWFycy4KICAgICAgICAoAgAAAFLGAAAAUnABAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQPAAAAbGVhdmVXaGl0ZXNwYWNl2wcAAHMEAAAAAAYJAWMCAAAAAgAA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dCBsb2MgMTEoMSwxMikKICAgICAgICAgICAgRXhjZXB0aW9uIHJhaXNlZDpFeHBlY3RlZCBhbHBoYXdvcmQgKGF0IGNoYXIgMTIpLCAobGluZToxLCBjb2w6MTMpCiAgICAgICAgICAgIE1hdGNoIGFscGhhd29yZCBhdCBsb2MgMTUoMSwxNikKICAgICAgICAgICAgRXhjZXB0aW9uIHJhaXNlZDpFeHBlY3RlZCBhbHBoYXdvcmQgKGF0IGNoYXIgMTUpLCAobGluZToxLCBjb2w6MTYpCgogICAgICAgIFRoZSBvdXRwdXQgc2hvd24gaXMgdGhhdCBwcm9kdWNlZCBieSB0aGUgZGVmYXVsdCBkZWJ1ZyBhY3Rpb25zIC0gY3VzdG9tIGRlYnVnIGFjdGlvbnMgY2FuIGJlCiAgICAgICAgc3BlY2lmaWVkIHVzaW5nIEx7c2V0RGVidWdBY3Rpb25zfS4gUHJpb3IgdG8gYXR0ZW1wdGluZwogICAgICAgIHRvIG1hdGNoIHRoZSBDe3dkfSBleHByZXNzaW9uLCB0aGUgZGVidWdnaW5nIG1lc3NhZ2UgQ3siTWF0Y2ggPGV4cHJuYW1lPiBhdCBsb2MgPG4+KDxsaW5lPiw8Y29sPikifQogICAgICAgIGlzIHNob3duLiBUaGVuIGlmIHRoZSBwYXJzZSBzdWNjZWVkcywgYSBDeyJNYXRjaGVkIn0gbWVzc2FnZSBpcyBzaG93biwgb3IgYW4gQ3siRXhjZXB0aW9uIHJhaXNlZCJ9CiAgICAgICAgbWVzc2FnZSBpcyBzaG93bi4gQWxzbyBub3RlIHRoZSB1c2Ugb2YgTHtzZXROYW1lfSB0byBhc3NpZ24gYSBodW1hbi1yZWFkYWJsZSBuYW1lIHRvIHRoZSBleHByZXNzaW9uLAogICAgICAgIHdoaWNoIG1ha2VzIGRlYnVnZ2luZyBhbmQgZXhjZXB0aW9uIG1lc3NhZ2VzIGVhc2llciB0byB1bmRlcnN0YW5kIC0gZm9yIGluc3RhbmNlLCB0aGUgZGVmYXVsdAogICAgICAgIG5hbWUgY3JlYXRlZCBmb3IgdGhlIEN7V29yZH0gZXhwcmVzc2lvbiB3aXRob3V0IGNhbGxpbmcgQ3tzZXROYW1lfSBpcyBDeyJXOihBQkNELi4u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QWxsIC0gKGRlZmF1bHQ9Q3tUcnVlfSkgLSBmbGFnIHRvIHBhc3MgdG8gQ3tMe3BhcnNlU3RyaW5nfX0gd2hlbiBydW5uaW5nIHRlc3RzICAgICAgICAgICAKICAgICAgICAgLSBjb21tZW50IC0gKGRlZmF1bHQ9Q3snIyd9KSAtIGV4cHJlc3Npb24gZm9yIGluZGljYXRpbmcgZW1iZWRkZWQgY29tbWVudHMgaW4gdGhlIHRlc3QgCiAgICAgICAgICAgICAgc3RyaW5nOyBwYXNzIE5vbmUgdG8gZGlzYWJsZSBjb21tZW50IGZpbHRlcmluZwogICAgICAgICAtIGZ1bGxEdW1wIC0gKGRlZmF1bHQ9Q3tUcnVlfSkgLSBkdW1wIHJlc3VsdHMgYXMgbGlzdCBmb2xsb3dlZCBieSByZXN1bHRzIG5hbWVzIGluIG5lc3RlZCBvdXRsaW5lOwogICAgICAgICAgICAgIGlmIEZhbHNlLCBvbmx5IGR1bXAgbmVzdGVkIGxpc3QKICAgICAgICAgLSBwcmludFJlc3VsdHMgLSAoZGVmYXVsdD1De1RydWV9KSBwcmludHMgdGVzdCBvdXRwdXQgdG8gc3Rkb3V0CiAgICAgICAgIC0gZmFpbHVyZVRlc3RzIC0gKGRlZmF1bHQ9Q3tGYWxzZX0pIGluZGljYXRlcyBpZiB0aGVzZSB0ZXN0cyBhcmUgZXhwZWN0ZWQgdG8gZmFpbCBwYXJzaW5nCgogICAgICAgIFJldHVybnM6IGEgKHN1Y2Nlc3MsIHJlc3VsdHMpIHR1cGxlLCB3aGVyZSBzdWNjZXNzIGluZGljYXRlcyB0aGF0IGFsbCB0ZXN0cyBzdWNjZWVkZWQKICAgICAgICAob3IgZmFpbGVkIGlmIEN7ZmFpbHVyZVRlc3RzfSBpcyBUcnVlKSwgYW5kIHRoZSByZXN1bHRzIGNvbnRhaW4gYSBsaXN0IG9mIGxpbmVzIG9mIGVhY2ggCiAgICAgICAgdGVzdCdzIG91dHB1dAogICAgICAgIAogICAgICAgIEV4YW1wbGU6OgogICAgICAgICAgICBudW1iZXJfZXhwciA9IHB5cGFyc2luZ19jb21tb24ubnVtYmVyLmNvcHkoKQoKICAgICAgICAgICAgcmVzdWx0ID0gbnVtYmVyX2V4cHIucnVuVGVzdHMoJycnCiAgICAgICAgICAgICAgICAjIHVuc2lnbmVkIGludGVnZXIKICAgICAgICAgICAgICAgIDEwMAogICAgICAgICAgICAgICAgIyBuZWdhdGl2ZSBpbnRlZ2VyCiAgICAgICAgICAgICAgICAtMTAwCiAgICAgICAgICAgICAgICAjIGZsb2F0IHdpdGggc2NpZW50aWZpYyBub3RhdGlvbgogICAgICAgICAgICAgICAgNi4wMmUyMwogICAgICAgICAgICAgICAgIyBpbnRlZ2VyIHdpdGggc2NpZW50aWZpYyBub3RhdGlvbgogICAgICAgICAgICAgICAgMWUtMTIKICAgICAgICAgICAgICAgICcnJykKICAgICAgICAgICAgcHJpbnQoIlN1Y2Nlc3MiIGlmIHJlc3VsdFswXSBlbHNlICJGYWlsZWQhIikKCiAgICAgICAgICAgIHJlc3VsdCA9IG51bWJlcl9leHByLnJ1blRlc3RzKCcnJwogICAgICAgICAgICAgICAgIyBzdHJheSBjaGFyYWN0ZXIKICAgICAgICAgICAgICAgIDEwMFoKICAgICAgICAgICAgICAgICMgbWlzc2luZyBsZWFkaW5nIGRpZ2l0IGJlZm9yZSAnLicKICAgICAgICAgICAgICAgIC0uMTAwCiAgICAgICAgICAgICAgICAjIHRvbyBtYW55ICcuJwogICAgICAgICAgICAgICAgMy4xNC4xNTkKICAgICAgICAgICAgICAgICcnJywgZmFpbHVyZVRlc3RzPVRydWUpCiAgICAgICAgICAgIHByaW50KCJTdWNjZXNzIiBpZiByZXN1bHRbMF0gZWxzZSAiRmFpbGVkISIpCiAgICAgICAgcHJpbnRzOjoKICAgICAgICAgICAgIyB1bnNpZ25lZCBpbnRlZ2VyCiAgICAgICAgICAgIDEwMAogICAgICAgICAgICBbMTAwXQoKICAgICAgICAgICAgIyBuZWdhdGl2ZSBpbnRlZ2VyCiAgICAgICAgICAgIC0xMDAKICAgICAgICAgICAgWy0xMDBdCgogICAgICAgICAgICAjIGZsb2F0IHdpdGggc2NpZW50aWZpYyBub3RhdGlvbgogICAgICAgICAgICA2LjAyZTIzCiAgICAgICAgICAgIFs2LjAyZSsyM10KCiAgICAgICAgICAgICMgaW50ZWdlciB3aXRoIHNjaWVudGlmaWMgbm90YXRpb24KICAgICAgICAgICAgMWUtMTIKICAgICAgICAgICAgWzFlLTEyXQoKICAgICAgICAgICAgU3VjY2VzcwogICAgICAgICAgICAKICAgICAgICAgICAgIyBzdHJheSBjaGFyYWN0ZXIKICAgICAgICAgICAgMTAwWgogICAgICAgICAgICAgICBeCiAgICAgICAgICAgIEZBSUw6IEV4cGVjdGVkIGVuZCBvZiB0ZXh0IChhdCBjaGFyIDMpLCAobGluZToxLCBjb2w6NCkKCiAgICAgICAgICAgICMgbWlzc2luZyBsZWFkaW5nIGRpZ2l0IGJlZm9yZSAnLicKICAgICAgICAgICAgLS4xMDAKICAgICAgICAgICAgXgogICAgICAgICAgICBGQUlMOiBFeHBlY3RlZCB7cmVhbCBudW1iZXIgd2l0aCBzY2llbnRpZmljIG5vdGF0aW9uIHwgcmVhbCBudW1iZXIgfCBzaWduZWQgaW50ZWdlcn0gKGF0IGNoYXIgMCksIChsaW5lOjEsIGNvbDoxKQoKICAgICAgICAgICAgIyB0b28gbWFueSAnLicKICAgICAgICAgICAgMy4xNC4xNTkKICAgICAgICAgICAgICAgIF4KICAgICAgICAgICAgRkFJTDogRXhwZWN0ZWQgZW5kIG9mIHRleHQgKGF0IGNoYXIgNCksIChsaW5lOjEsIGNvbDo1KQoKICAgICAgICAgICAgU3VjY2VzcwoKICAgICAgICBFYWNoIHRlc3Qgc3RyaW5nIG11c3QgYmUgb24gYSBzaW5nbGUgbGluZS4gSWYgeW91IHdhbnQgdG8gdGVzdCBhIHN0cmluZyB0aGF0IHNwYW5zIG11bHRpcGxlCiAgICAgICAgbGluZXMsIGNyZWF0ZSBhIHRlc3QgbGlrZSB0aGlzOjoKCiAgICAgICAgICAgIGV4cHIucnVuVGVzdChyInRoaXMgaXMgYSB0ZXN0XG4gb2Ygc3RyaW5ncyB0aGF0IHNwYW5zIFxuIDMgbGluZXMiKQogICAgICAgIAogICAgICAgIChOb3RlIHRoYXQgdGhpcyBpcyBhIHJhdyBz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ICAgIAogICAgVGhlIHJlc3VsdHMgZnJvbSBhIHN1Y2Nlc3NmdWwgcGFyc2Ugd2lsbCBjb250YWluIHRoZSBtYXRjaGVkIHRleHQgZnJvbSB0aGUgaW5wdXQgc3RyaW5nIGFuZCB0aGUgZm9sbG93aW5nIG5hbWVkIHJlc3VsdHM6CiAgICAgLSBDe21pc21hdGNoZXN9IC0gYSBsaXN0IG9mIHRoZSBwb3NpdGlvbnMgd2l0aGluIHRoZSBtYXRjaF9zdHJpbmcgd2hlcmUgbWlzbWF0Y2hlcyB3ZXJlIGZvdW5kCiAgICAgLSBDe29yaWdpbmFsfSAtIHRoZSBvcmlnaW5hbCBtYXRjaF9zdHJpbmcgdXNlZCB0byBjb21wYXJlIGFnYWluc3QgdGhlIGlucHV0IHN0cmluZwogICAgCiAgICBJZiBDe21pc21hdGNoZXN9IGlzIGFuIGVtcHR5IGxpc3QsIHRoZW4gdGhlIG1hdGNoIHdhcyBhbiBleGFjdCBtYXRjaC4KICAgIAogICAgRXhhbXBsZTo6CiAgICAgICAgcGF0dCA9IENsb3NlTWF0Y2goIkFUQ0FUQ0dBQVRHR0EiKQogICAgICAgIHBhdHQucGFyc2VTdHJpbmcoIkFUQ0FUQ0dBQVhHR0EiKSAjIC0+IChbJ0FUQ0FUQ0dBQVhHR0EnXSwgeydtaXNtYXRjaGVzJzogW1s5XV0sICdvcmlnaW5hbCc6IFsnQVRDQVRDR0FBVEdHQSddfSkKICAgICAgICBwYXR0LnBhcnNlU3RyaW5nKCJBVENBWENHQUFYR0dBIikgIyAtPiBFeGNlcHRpb246IEV4cGVjdGVkICdBVENBVENHQUFUR0dBJyAod2l0aCB1cCB0byAxIG1pc21hdGNoZXMpIChhdCBjaGFyIDApLCAobGluZToxLCBjb2w6MSkKCiAgICAgICAgIyBleGFjdCBtYXRjaAogICAgICAgIHBhdHQucGFyc2VTdHJpbmcoIkFUQ0FUQ0dBQVRHR0EiKSAjIC0+IChbJ0FUQ0FUQ0dBQVRHR0EnXSwgeydtaXNtYXRjaGVzJzogW1tdXSwgJ29yaWdpbmFsJzogWydBVENBVENHQUFUR0dBJ119KQoKICAgICAgICAjIGNsb3NlIG1hdGNoIGFsbG93aW5nIHVwIHRvIDIg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b3IgQ3ttaW59IGlzIDEgKGEKICAgIG1pbmltdW0gdmFsdWUgPCAxIGlzIG5vdCB2YWxpZCk7IHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgQ3ttYXh9IGFuZCBDe2V4YWN0fQogICAgYXJlIDAsIG1lYW5pbmcgbm8gbWF4aW11bSBvciBleGFjdCBsZW5ndGggcmVzdHJpY3Rpb24uIEFuIG9wdGlvbmFsCiAgICBDe2V4Y2x1ZGVDaGFyc30gcGFyYW1ldGVyIGNhbiBsaXN0IGNoYXJhY3RlcnMgdGhhdCBtaWdodCBiZSBmb3VuZCBpbiAKICAgIHRoZSBpbnB1dCBDe2JvZHlDaGFyc30gc3RyaW5nOyB1c2VmdWwgdG8gZGVmaW5lIGEgd29yZCBvZiBhbGwgcHJpbnRhYmxlcwogICAgZXhjZXB0IGZvciBvbmUgb3IgdHdvIGNoYXJhY3RlcnMsIGZvciBpbnN0YW5jZS4KICAgIAogICAgTHtzcmFuZ2V9IGlzIHVzZWZ1bCBmb3IgZGVmaW5pbmcgY3VzdG9tIGNoYXJhY3RlciBzZXQgc3RyaW5ncyBmb3IgZGVmaW5pbmcgCiAgICBDe1dvcmR9IGV4cHJlc3Npb25zLCB1c2luZyByYW5nZSBub3RhdGlvbiBmcm9tIHJlZ3VsYXIgZXhwcmVzc2lvbiBjaGFyYWN0ZXIgc2V0cy4KICAgIAogICAgQSBjb21tb24gbWlzdGFrZSBpcyB0byB1c2UgQ3tXb3JkfSB0byBtYXRjaCBhIHNwZWNpZmljIGxpdGVyYWwgc3RyaW5nLCBhcyBpbiAKICAgIEN7V29yZCgiQWRkcmVzcyIpfS4gUmVtZW1iZXIgdGhhdCBDe1dvcmR9IHVzZXMgdGhlIHN0cmluZyBhcmd1bWVudCB0byBkZWZpbmUKICAgIEl7c2V0c30gb2YgbWF0Y2hhYmxlIGNoYXJhY3RlcnMuIFRoaXMgZXhwcmVzc2lvbiB3b3VsZCBtYXRjaCAiQWRkIiwgIkFBQSIsCiAgICAiZEFyZWQiLCBvciBhbnkgb3RoZXIgd29yZCBtYWRlIHVwIG9mIHRoZSBjaGFyYWN0ZXJzICdBJywgJ2QnLCAncicsICdlJywgYW5kICdzJy4KICAgIFRvIG1hdGNoIGFuIGV4YWN0IGxpdGVyYWwgc3RyaW5nLCB1c2UgTHtMaXRlcmFsfSBvciBMe0tleXdvcmR9LgoKICAgIHB5cGFyc2luZyBpbmNsdWRlcyBoZWxwZXIgc3RyaW5ncyBmb3IgYnVpbGRpbmcgV29yZHM6CiAgICAgLSBMe2FscGhhc30KICAgICAtIEx7bnVtc30KICAgICAtIEx7YWxwaGFudW1zfQogICAgIC0gTHtoZXhudW1zfQogICAgIC0gTHthbHBoYXM4Yml0fSAoYWxwaGFiZXRpYyBjaGFyYWN0ZXJzIGluIEFTQ0lJIHJhbmdlIDEyOC0yNTUgLSBhY2NlbnRlZCwgdGlsZGVkLCB1bWxhdXRlZCwgZXRjLikKICAgICAtIEx7cHVuYzhiaXR9IChub24tYWxwaGFiZXRpYyBjaGFyYWN0ZXJzIGluIEFTQ0lJIHJhbmdlIDEyOC0yNTUgLSBjdXJyZW5jeSwgc3ltYm9scywgc3VwZXJzY3JpcHRzLCBkaWFjcml0aWNhbHMsIGV0Yy4pCiAgICAgLSBMe3ByaW50YWJsZXN9IChhbnkgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyKQoKICAgIEV4YW1wbGU6OgogICAgICAgICMgYSB3b3JkIGNvbXBvc2VkIG9mIGRpZ2l0cwogICAgICAgIGludGVnZXIgPSBXb3JkKG51bXMpICMgZXF1aXZhbGVudCB0byBXb3JkKCIwMTIzNDU2Nzg5Iikgb3IgV29yZChzcmFuZ2UoIjAtOSIpKQogICAgICAgIAogICAgICAgICMgYSB3b3JkIHdpdGggYSBsZWFkaW5nIGNhcGl0YWwsIGFuZCB6ZXJvIG9yIG1vcmUgbG93ZXJjYXNlCiAgICAgICAgY2FwaXRhbF93b3JkID0gV29yZChhbHBoYXMudXBwZXIoKSwgYWxwaGFzLmxvd2VyKCkpCgogICAgICAgICMgaG9zdG5hbWVzIGFyZSBhbHBoYW51bWVyaWMsIHdpdGggbGVhZGluZyBhbHBoYSwgYW5kICctJwogICAgICAgIGhvc3RuYW1lID0gV29yZChhbHBoYXMsIGFscGhhbnVtcysnLScpCiAgICAgICAgCiAgICAgICAgIyByb21hbiBudW1lcmFsIChub3QgYSBzdHJpY3QgcGFyc2VyLCBhY2Nl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IG1hdGNoaW5nIHN0cmluZ3MgdGhhdCBhcmUgZGVsaW1pdGVkIGJ5IHF1b3RpbmcgY2hhcmFjdGVycy4KICAgIAogICAgRGVmaW5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKICAgICAgICAtIHF1b3RlQ2hhciAtIHN0cmluZyBvZiBvbmUgb3IgbW9yZSBjaGFyYWN0ZXJzIGRlZmluaW5nIHRoZSBxdW90ZSBkZWxpbWl0aW5nIHN0cmluZwogICAgICAgIC0gZXNjQ2hhciAtIGNoYXJhY3RlciB0byBlc2NhcGUgcXVvdGVzLCB0eXBpY2FsbHkgYmFja3NsYXNoIChkZWZhdWx0PUN7Tm9uZX0pCiAgICAgICAgLSBlc2NRdW90ZSAtIHNwZWNpYWwgcXVvdGUgc2VxdWVuY2UgdG8gZXNjYXBlIGFuIGVtYmVkZGVkIHF1b3RlIHN0cmluZyAoc3VjaCBhcyBTUUwncyAiIiB0byBlc2NhcGUgYW4gZW1iZWRkZWQgIikgKGRlZmF1bHQ9Q3tOb25lfSkKICAgICAgICAtIG11bHRpbGluZSAtIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHF1b3RlcyBjYW4gc3BhbiBtdWx0aXBsZSBsaW5lcyAoZGVmYXVsdD1De0ZhbHNlfSkKICAgICAgICAtIHVucXVvdGVSZXN1bHRzIC0gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1hdGNoZWQgdGV4dCBzaG91bGQgYmUgdW5xdW90ZWQgKGRlZmF1bHQ9Q3tUcnVlfSkKICAgICAgICAtIGVuZFF1b3RlQ2hhciAtIHN0cmluZyBvZiBvbmUgb3IgbW9yZSBjaGFyYWN0ZXJzIGRlZmluaW5nIHRoZSBlbmQgb2YgdGhlIHF1b3RlIGRlbGltaXRlZCBzdHJpbmcgKGRlZmF1bHQ9Q3tOb25lfSA9PiBzYW1lIGFzIHF1b3RlQ2hhcikKICAgICAgICAtIGNvbnZlcnRXaGl0ZXNwYWNlRXNjYXBlcyAtIGNvbnZlcnQgZXNjYXBlZCB3aGl0ZXNwYWNlIChDeydcdCd9LCBDeydcbid9LCBldGMuKSB0byBhY3R1YWwgd2hpdGVzcGFjZSAoZGVmYXVsdD1De1Ry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InkiKSkoInBvc24iKQogICAgICAgIGNvbG9yX2F0dHIgPSAiY29sb3I6IiArIGNvbG9yKCJjb2xvciIpCiAgICAgICAgc2l6ZV9hdHRyID0gInNpemU6IiArIGludGVnZXIoInNpemUiKQoKICAgICAgICAjIHVzZSBFYWNoICh1c2luZyBvcGVyYXRvciAnJicpIHRvIGFjY2VwdCBhdHRyaWJ1dGVzIGluIGFueSBvcmRlciAKICAgICAgICAjIChzaGFwZSBhbmQgcG9zbiBhcmUgcmVxdWlyZWQsIGNvbG9yIGFuZCBzaXplIGFyZSBvcHRpb25hbCkKICAgICAgICBzaGFwZV9zcGVjID0gc2hhcGVfYXR0ciAmIHBvc25fYXR0ciAmIE9wdGlvbmFsKGNvbG9yX2F0dHIpICYgT3B0aW9uYWwoc2l6ZV9hdHRyKQoKICAgICAgICBzaGFwZV9zcGVjLnJ1blRlc3RzKCcnJwogICAgICAgICAgICBzaGFwZTogU1FVQVJFIGNvbG9yOiBCTEFDSyBwb3NuOiAxMDAsIDEyMAogICAgICAgICAgICBzaGFwZTogQ0lSQ0xFIHNpemU6IDUwIGNvbG9yOiBCTFVFIHBvc246IDUwLDgwCiAgICAgICAgICAgIGNvbG9yOkdSRUVOIHNpemU6MjAgc2hhcGU6VFJJQU5HTEUgcG9zbjoyMCw0MAogICAgICAgICAgICAnJycKICAgICAgICAgICAgKQogICAgcHJpbnRzOjoKICAgICAgICBzaGFwZTogU1FVQVJFIGNvbG9yOiBCTEFDSyBwb3NuOiAxMDAsIDEyMAogICAgICAgIFsnc2hhcGU6JywgJ1NRVUFSRScsICdjb2xvcjonLCAnQkxBQ0snLCAncG9zbjonLCBbJzEwMCcsICcsJywgJzEyMCddXQogICAgICAgIC0gY29sb3I6IEJMQUNLCiAgICAgICAgLSBwb3NuOiBbJzEwMCcsICcsJywgJzEyMCddCiAgICAgICAgICAtIHg6IDEwMAogICAgICAgICAgLSB5OiAxMjAKICAgICAgICAtIHNoYXBlOiBTUVVBUkUKCgogICAgICAgIHNoYXBlOiBDSVJDTEUgc2l6ZTogNTAgY29sb3I6IEJMVUUgcG9zbjogNTAsODAKICAgICAg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ACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSpgAAAJwOAABzDgAAAAABAwEXAQ0BBAIeASUBKA0AAABSjwAAAFKQAAAAUrEAAABSxgAAAFKeAAAAUr8AAABSowEAAFL2AQAAUvkBAABSyAEAAFIAAgAAUgICAABSpgAAACgAAAAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIcAAAAWg4AAHMSAAAABgMGAQwSDAYJBwkMCQYJBwwGYwAAAAAAAAAAAgAAAEIAAABzIwAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAGUEAGQCAIQBAFoFAFJTKAMAAABz9QIAAAogICAgTG9va2FoZWFkIG1hdGNoaW5nIG9mIHRoZSBnaXZlbiBwYXJzZSBleHByZXNzaW9uLiAgQ3tGb2xsb3dlZEJ5fQogICAgZG9lcyBJe25vdH0gYWR2YW5jZSB0aGUgcGFyc2luZyBwb3NpdGlvbiB3aXRoaW4gdGhlIGlucHV0IHN0cmluZywgaXQgb25seQogICAgdmVyaWZpZXMgdGhhdCB0aGUgc3BlY2lmaWVkIHBhcnNlIGV4cHJlc3Npb24gbWF0Y2hlcyBhdCB0aGUgY3VycmVudAogICAgcG9zaXRpb24uICBDe0ZvbGxvd2VkQnl9IGFsd2F5cyByZXR1cm5zIGEgbnVsbCB0b2tlbiBsaXN0LgoKICAgIEV4YW1wbGU6OgogICAgICAgICMgdXNlIEZvbGxvd2VkQnkgdG8gbWF0Y2ggYSBsYWJlbCBvbmx5IGlmIGl0IGlzIGZvbGxvd2VkIGJ5IGEgJzonCiAgICAgICAgZGF0YV93b3JkID0gV29yZChhbHBoYXMpCiAgICAgICAgbGFiZWwgPSBkYXRhX3dvcmQgKyBGb2xsb3dlZEJ5KCc6JykKICAgICAgICBhdHRyX2V4cHIgPSBHcm91cChsYWJlbCArIFN1cHByZXNzKCc6JykgKyBPbmVPck1vcmUoZGF0YV93b3JkLCBzdG9wT249bGFiZWwp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aW9uIHRoYXQgbXVzdCBtYXRjaCBvbmUgb3IgbW9yZSB0aW1lcwogICAgIC0gc3RvcE9uIC0gKGRlZmF1bHQ9Q3tOb25lfSkgLSBleHByZXNzaW9uIGZvciBhIHRlcm1pbmF0aW5nIHNlbnRpbmVsCiAgICAgICAgICAob25seSByZXF1aXJlZCBpZiB0aGUgc2VudGluZWwgd291bGQgb3JkaW5hcmlseSBtYXRjaCB0aGUgcmVwZXRpdGlvbiAKICAgICAgICAgIGV4cHJlc3Npb24pICAgICAgICAgIAoKICAgIEV4YW1wbGU6OgogICAgICAgIGRhdGFfd29yZCA9IFdvcmQoYWxwaGFzKQogICAgICAgIGxhYmVsID0gZGF0YV93b3JkICsgRm9sbG93ZWRCeSgnOicpCiAgICAgICAgYXR0cl9leHByID0gR3JvdXAobGFiZWwgKyBTdXBwcmVzcygnOicpICsgT25lT3JNb3JlKGRhdGFfd29yZCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQoKICAgICAgICB0ZXh0ID0gInNoYXBlOiBTUVVBUkUgcG9zbjogdXBwZXIgbGVmdCBjb2xvcjogQkxBQ0siCiAgICAgICAgT25lT3JNb3JlKGF0dHJfZXhwcikucGFyc2VTdHJpbmcodGV4dCkucHByaW50KCkgICMgRmFpbCEgcmVhZCAnY29sb3InIGFzIGRhdGEgaW5zdGVhZCBvZiBuZXh0IGxhYmVsIC0+IFtbJ3NoYXBlJywgJ1NRVUFSRSBjb2xvciddXQoKICAgICAgICAjIHVzZSBzdG9wT24gYXR0cmlidXRlIGZvciBPbmVPck1vcmUgdG8gYXZvaWQgcmVhZGluZyBsYWJlbCBzdHJpbmcgYXMgcGFydCBvZiB0aGUgZGF0YQogICAgICAgIGF0dHJfZXhwciA9IEdyb3VwKGxhYmVsICsgU3VwcHJlc3MoJzonKSArIE9uZU9yTW9yZShkYXRhX3dvcmQsIHN0b3BPbj1sYWJlbCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQogICAgICAgIE9uZU9yTW9yZShhdHRyX2V4cHIpLnBhcnNlU3RyaW5nKHRleHQpLnBwcmludCgpICMgQmV0dGVyIC0+IFtbJ3NoYXBlJywg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cHJlc3Npb24gaXMgbm90IGZvdW5kLgoKICAgIEV4YW1wbGU6OgogICAgICAgICMgVVMgcG9zdGFsIGNvZGUgY2FuIGJlIGEgNS1kaWdpdCB6aXAsIHBsdXMgb3B0aW9uYWwgNC1kaWdpdCBxdWFsaWZpZXIKICAgICAgICB6aXAgPSBDb21iaW5lKFdvcmQobnVtcywgZXhhY3Q9NSkgKyBPcHRpb25hbCgnLScgKyBXb3JkKG51bXMsIGV4YWN0PTQpKSkKICAgICAgICB6aXAucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgdHJhZGl0aW9uYWwgWklQIGNvZGUKICAgICAgICAgICAgMTIzNDUKICAgICAgICAgICAgCiAgICAgICAgICAgICMgWklQKzQgZm9ybQogICAgICAgICAgICAxMjEwMS0wMDAxCiAgICAgICAgICAgIAogICAgICAgICAgICAjIGludmFsaWQgWklQCiAgICAgICAgICAgIDk4NzY1LQogICAgICAgICAgICAnJycpCiAgICBwcmludHM6OgogICAgICAgICMgdHJhZGl0aW9uYWwgWklQIGNvZGUKICAgICAgICAxMjM0NQogICAgICAgIFsnMTIzNDUnXQoKICAgICAgICAjIFpJUCs0IGZvcm0KICAgICAgICAxMjEwMS0wMDAxCiAgICAgICAgWycxMjEwMS0wMDAxJ10KCiAgICAgICAgIyBpbnZhbGlkIFpJUAogICAgICAgIDk4NzY1LQogICAgICAgICAgICAgXgogICAgICAgIEZBSUw6IEV4cGVjdGVkIGVuZCBvZiB0ZXh0IChhdCBjaGFyIDUpLCAobGluZToxLCBjb2w6NikKICAgIGMDAAAAAwAAAAQAAABDAAAAc0EAAAB0AAB0AQB8AACDAgBqAgB8AQBkAQB0AwCDAQEBfAAAagQAagUAfAAAXwUAfAIAfAAAXwYAdAcAfAAAXwgAZAAAUygCAAAATlJ/AQAAKAkAAABSCwIAAFIZAAAAUp4AAABSxgAAAFJGAQAAUm8BAABSAQEAAFK/AAAAUnMBAAAoAwAAAFKcAAAAUkYBAABS+wAAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSngAAAHQPAABzCAAAAAABHAEPAQkBYwQAAAAFAAAABgAAAEMAAABzpAAAAHkoAHwAAGoAAGoBAHwBAHwCAHwDAGQBAHQCAIMDAVwCAH0CAH0EAFdubwAEdAMAdAQAZgIAawoAcpkAAQEBfAAAagUAdAYAawkAcpAAfAAAagAAagcAcoEAdAgAfAAAagUAZwEAgwEAfQQAfAAAagUAfAQAfAAAagAAagcAPHGWAHwAAGoFAGcBAH0EAHGaAGcAAH0EAG4BAFh8AgB8BABmAgBTKAIAAABOUosBAAAoCQAAAFJGAQAAUo8BAABSxgAAAFIdAAAAUtUAAABSAQEAAHQTAAAAX29wdGlvbmFsTm90TWF0Y2hlZFJuAQAAUiAAAAAoBQAAAFKcAAAAUkUBAABSlgAAAFKKAQAAUqkBAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UqMBAAB6DwAAcxQAAAAAAQMBKAETAQ8BDAESARYCDwIKAWMBAAAAAQAAAAMAAABDAAAAc0kAAAB0AAB8AABkAQCDAgByFgB8AABqAQBTfAAAagIAZAAAawgAckIAZAIAdAQAfAAAagUAgwEAF2QDABd8AABfAgBuAAB8AABqAgBTKAQAAABOUsIAAABSFAEAAFIVAQAAKAYAAABS8QAAAFLCAAAAUm0BAABSlwAAAFJ/AAAAUkYBAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKmAAAAiA8AAHMKAAAAAAEPAQcCDwEdAigIAAAAUo8AAABSkAAAAFKxAAAAUqkCAABSngAAAFK/AAAAUqMBAABSpgAAACgAAAAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIZAAAAUQ8AAHMIAAAABiIGAQwGDA5jAAAAAAAAAAAEAAAAQgAAAHMsAAAAZQAAWgEAZAAAWgIAZQMAZAMAZAMAZAEAhAMAWgUAZQYAZAIAhAEAWgcAUlMoBAAAAHP/CQAACiAgICBUb2tlbiBmb3Igc2tpcHBpbmcgb3ZlciBhbGwgdW5kZWZpbmVkIHRleHQgdW50aWwgdGhlIG1hdGNoZWQgZXhwcmVzc2lvbiBpcyBmb3VuZC4KCiAgICBQYXJhbWV0ZXJzOgogICAgIC0gZXhwciAtIHRhcmdldCBleHByZXNzaW9uIG1hcmtpbmcgdGhlIGVuZCBvZiB0aGUgZGF0YSB0byBiZSBza2lwcGVkCiAgICAgLSBpbmNsdWRlIC0gKGRlZmF1bHQ9Q3tGYWxzZX0pIGlmIFRydWUsIHRoZSB0YXJnZXQgZXhwcmVzc2lvbiBpcyBhbHNvIHBhcnNlZCAKICAgICAgICAgICh0aGUgc2tpcHBlZCB0ZXh0IGFuZCB0YXJnZXQgZXhwcmVzc2lvbiBhcmUgcmV0dXJuZWQgYXMgYSAyLWVsZW1lbnQgbGlzdCkuCiAgICAgLSBpZ25vcmUgLSAoZGVmYXVsdD1De05vbmV9KSB1c2VkIHRvIGRlZmluZSBncmFtbWFycyAodHlwaWNhbGx5IHF1b3RlZCBzdHJpbmdzIGFuZCAKICAgICAgICAgIGNvbW1lbnRzKSB0aGF0IG1pZ2h0IGNvbnRhaW4gZmFsc2UgbWF0Y2hlcyB0byB0aGUgdGFyZ2V0IGV4cHJlc3Npb24KICAgICAtIGZhaWxPbiAtIChkZWZhdWx0PUN7Tm9uZX0pIGRlZmluZSBleHByZXNzaW9ucyB0aGF0IGFyZSBub3QgYWxsb3dlZCB0byBiZSAKICAgICAgICAgIGluY2x1ZGVkIGluIHRoZSBza2lwcGVkIHRlc3Q7IGlmIGZvdW5kIGJlZm9yZSB0aGUgdGFyZ2V0IGV4cHJlc3Npb24gaXMgZm91bmQsIAogICAgICAgICAgdGhlIFNraXBUbyBpcyBub3QgYSBtYXRjaAoKICAgIEV4YW1wbGU6OgogICAgICAgIHJlcG9ydCA9ICcnJwogICAgICAgICAgICBPdXRzdGFuZGluZyBJc3N1ZXMgUmVwb3J0IC0gMSBKYW4gMjAwMAoKICAgICAgICAgICAgICAgIyB8IFNldmVyaXR5IHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgRGF5cyBPcGVuCiAgICAgICAgICAgIC0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQogICAgICAgICAgICAgMTAxIHwgQ3JpdGljYWwgfCBJbnRlcm1pdHRlbnQgc3lzdGVtIGNyYXNoICAgICAgICAgICAgICAgICB8ICAgICAgICAgIDYKICAgICAgICAgICAgICA5NCB8IENvc21ldGljIHwgU3BlbGxpbmcgZXJyb3Igb24gTG9naW4gKCdsb2d8bicpICAgICAgICAgfCAgICAgICAgIDE0CiAgICAgICAgICAgICAgNzkgfCBNaW5vciAgICB8IFN5c3RlbSBzbG93IHdoZW4gcnVubmluZyB0b28gbWFueSByZXBvcnRzIHwgICAgICAgICA0NwogICAgICAgICAgICAnJycKICAgICAgICBpbnRlZ2VyID0gV29yZChudW1zKQogICAgICAgIFNFUCA9IFN1cHByZXNzKCd8JykKICAgICAgICAjIHVzZSBTa2lwVG8gdG8gc2ltcGx5IG1hdGNoIGV2ZXJ5dGhpbmcgdXAgdW50aWwgdGhlIG5leHQgU0VQCiAgICAgICAgIyAtIGlnbm9yZSBxdW90ZWQgc3RyaW5ncywgc28gdGhhdCBhICd8JyBjaGFyYWN0ZXIgaW5zaWRlIGEgcXVvdGVkIHN0cmluZyBkb2VzIG5vdCBtYXRjaAogICAgICAgICMgLSBwYXJzZSBhY3Rpb24gd2lsbCBjYWxsIHRva2VuLnN0cmlwKCkgZm9yIGVhY2ggbWF0Y2hlZCB0b2tlbiwgaS5lLiwgdGhlIGRlc2NyaXB0aW9uIGJvZHkKICAgICAgICBzdHJpbmdfZGF0YSA9IFNraXBUbyhTRVAsIGlnbm9yZT1xdW90ZWRTdHJpbmcpCiAgICAgICAgc3RyaW5nX2RhdGEuc2V0UGFyc2VBY3Rpb24odG9rZW5NYXAoc3RyLnN0cmlwKSkKICAgICAgICB0aWNrZXRfZXhwciA9IChpbnRlZ2VyKCJpc3N1ZV9udW0iKSArIFNFUCAKICAgICAgICAgICAgICAgICAgICAgICsgc3RyaW5nX2RhdGEoInNldiIpICsgU0VQIAogICAgICAgICAgICAgICAgICAgICAgKyBzdHJpbmdfZGF0YSgiZGVzYyIpICsgU0VQIAogICAgICAgICAgICAgICAgICAgICAgKyBpbnRlZ2VyKCJkYXlzX29wZW4iKSkKICAgICAgICAKICAgICAgICBmb3IgdGt0IGluIHRpY2tldF9leHByLnNlYXJjaFN0cmluZyhyZXBvcnQpOgogICAgICAgICAgICBwcmludCB0a3QuZHVtcCgpCiAgICBwcmludHM6OgogICAgICAgIFsnMTAxJywgJ0NyaXRpY2FsJywgJ0ludGVybWl0dGVudCBzeXN0ZW0gY3Jhc2gnLCAnNiddCiAgICAgICAgLSBkYXlzX29wZW46IDYKICAgICAgICAtIGRlc2M6IEludGVybWl0dGVudCBzeXN0ZW0gY3Jhc2gKICAgICAgICAtIGlzc3VlX251bTogMTAxCiAgICAgICAgLSBzZXY6IENyaXRpY2FsCiAgICAgICAgWyc5NCcsICdDb3NtZXRpYycsICJTcGVsbGluZyBlcnJvciBvbiBMb2dpbiAoJ2xvZ3xuJykiLCAnMTQnXQogICAgICAgIC0gZGF5c19vcGVuOiAxNAogICAgICAgIC0gZGVzYzogU3BlbGxpbmcgZXJyb3Igb24gTG9naW4gKCdsb2d8bicpCiAgICAgICAgLSBpc3N1ZV9udW06IDk0CiAgICAgICAgLSBzZXY6IENvc21ldGljCiAgICAgICAgWyc3OScsICdNaW5vcicsICdTeXN0ZW0gc2xvdyB3aGVuIHJ1bm5pbmcgdG9vIG1hbnkgcmVwb3J0cycsICc0NyddCiAgICAgICAgLSBkYXlzX29wZW46IDQ3CiAgICAgICAgLSBkZXNjOiBTeXN0ZW0gc2xvdyB3aGVuIHJ1bm5pbmcgdG9vIG1hbnkgcmVwb3J0cwogICAgICAgIC0gaXNzdWVfbnVtOiA3OQogICAgICAgIC0gc2V2OiBNaW5vcgogICAgYwUAAAAFAAAAAwAAAEMAAABzigAAAHQAAHQBAHwAAIMCAGoCAHwBAIMBAAF8AwB8AABfAwB0BAB8AABfBQB0BgB8AABfBwB8AgB8AABfCAB0BgB8AABf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AABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSpQEAAJ8QAABzAgAAAAABKAUAAABSjwAAAFKQAAAAUrEAAABSngAAAFKlAQAAKAAAAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Ug8AAACNEAAAcwYAAAAGDQYBCQRjAAAAAAAAAAABAAAAQgAAAHMgAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAZAIAhAAAWgQAUlMoAwAAAHNXBgAACiAgICBDb252ZXJ0ZXIgdG8gcmV0dXJuIGEgcmVwZXRpdGl2ZSBleHByZXNzaW9uIGFzIGEgbGlzdCwgYnV0IGFsc28gYXMgYSBkaWN0aW9uYXJ5LgogICAgRWFjaCBlbGVtZW50IGNhbiBhbHNvIGJlIHJlZmVyZW5jZWQgdXNpbmcgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBleHByZXNzaW9uIGFzIGl0cyBrZXkuCiAgICBVc2VmdWwgZm9yIHRhYnVsYXIgcmVwb3J0IHNjcmFwaW5nIHdoZW4gdGhlIGZpcnN0IGNvbHVtbiBjYW4gYmUgdXNlZCBhcyBhIGl0ZW0ga2V5LgoKICAgIEV4YW1wbGU6OgogICAgICAgIGRhdGFfd29yZCA9IFdvcmQoYWxwaGFzKQogICAgICAgIGxhYmVsID0gZGF0YV93b3JkICsgRm9sbG93ZWRCeSgnOicpCiAgICAgICAgYXR0cl9leHByID0gR3JvdXAobGFiZWwgKyBTdXBwcmVzcygnOicpICsgT25lT3JNb3JlKGRhdGFfd29yZCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQoKICAgICAgICB0ZXh0ID0gInNoYXBlOiBTUVVBUkUgcG9zbjogdXBwZXIgbGVmdCBjb2xvcjogbGlnaHQgYmx1ZSB0ZXh0dXJlOiBidXJsYXAiCiAgICAgICAgYXR0cl9leHByID0gKGxhYmVsICsgU3VwcHJlc3MoJzonKSArIE9uZU9yTW9yZShkYXRhX3dvcmQsIHN0b3BPbj1sYWJlbCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQogICAgICAgIAogICAgICAgICMgcHJpbnQgYXR0cmlidXRlcyBhcyBwbGFpbiBncm91cHMKICAgICAgICBwcmludChPbmVPck1vcmUoYXR0cl9leHByKS5wYXJzZVN0cmluZyh0ZXh0KS5kdW1wKCkpCiAgICAgICAgCiAgICAgICAgIyBpbnN0ZWFkIG9mIE9uZU9yTW9yZShleHByKSwgcGFyc2UgdXNpbmcgRGljdChPbmVPck1vcmUoR3JvdXAoZXhwcikpKSAtIERpY3Qgd2lsbCBhdXRvLWFzc2lnbiBuYW1lcwogICAgICAgIHJlc3VsdCA9IERpY3QoT25lT3JNb3JlKEdyb3VwKGF0dHJfZXhwcikpKS5wYXJzZVN0cmluZyh0ZXh0KQogICAgICAgIHByaW50KHJlc3VsdC5kdW1wKCkpCiAgICAgICAgCiAgICAgICAgIyBhY2Nlc3MgbmFtZWQgZmllbGRzIGFzIGRpY3QgZW50cmllcywgb3Igb3V0cHV0IGFzIGRpY3QKICAgICAgICBwcmludChyZXN1bHRbJ3NoYXBlJ10pICAgICAgICAKICAgICAgICBwcmludChyZXN1bHQuYXNEaWN0KCkpCiAgICBwcmludHM6OgogICAgICAgIFsnc2hhcGUnLCAnU1FVQVJFJywgJ3Bvc24nLCAndXBwZXIgbGVmdCcsICdjb2xvcicsICdsaWdodCBibHVlJywgJ3RleHR1cmUnLCAnYnVybGFwJ10KCiAgICAgICAgW1snc2hhcGUnLCAnU1FVQVJFJ10sIFsncG9zbicsICd1cHBlciBsZWZ0J10sIFsnY29sb3InLCAnbGlnaHQgYmx1ZSddLCBbJ3RleHR1cmUnLCAnYnVybGFwJ11dCiAgICAgICAgLSBjb2xvcjogbGlnaHQgYmx1ZQogICAgICAgIC0gcG9zbjogdXBwZXIgbGVmdAogICAgICAgIC0gc2hhcGU6IFNRVUFSRQogICAgICAgIC0gdGV4dHVyZTogYnVybGFwCiAgICAgICAgU1FVQVJFCiAgICAgICAgeydjb2xvcic6ICdsaWdodCBibHVlJywgJ3Bvc24nOiAndXBwZXIgbGVmdCcsICd0ZXh0dXJl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AgB8AAB8AQAXgwEAgwEAgwEAUygBAAAAc9wFAAAKICAgIEhlbHBlciB0byBlYXNpbHkgYW5kIGNsZWFybHkgZGVmaW5lIGEgZGljdGlvbmFyeSBieSBzcGVjaWZ5aW5nIHRoZSByZXNwZWN0aXZlIHBhdHRlcm5zCiAgICBmb3IgdGhlIGtleSBhbmQgdmFsdWUuICBUYWtlcyBjYXJlIG9mIGRlZmluaW5nIHRoZSBDe0x7RGljdH19LCBDe0x7WmVyb09yTW9yZX19LCBhbmQgQ3tMe0dyb3VwfX0gdG9rZW5zCiAgICBpbiB0aGUgcHJvcGVyIG9yZGVyLiAgVGhlIGtleSBwYXR0ZXJuIGNhbiBpbmNsdWRlIGRlbGltaXRpbmcgbWFya2VycyBvciBwdW5jdHVhdGlvbiwKICAgIGFzIGxvbmcgYXMgdGhleSBhcmUgc3VwcHJlc3NlZCwgdGhlcmVieSBsZWF2aW5nIHRoZSBzaWduaWZpY2FudCBrZXkgdGV4dC4gIFRoZSB2YWx1ZQogICAgcGF0dGVybiBjYW4gaW5jbHVkZSBuYW1lZCByZXN1bHRzLCBzbyB0aGF0IHRoZSBDe0RpY3R9IHJlc3VsdHMgY2FuIGluY2x1ZGUgbmFtZWQgdG9rZW4KICAgIGZpZWxkcy4KCiAgICBFeGFtcGxlOjoKICAgICAgICB0ZXh0ID0gInNoYXBlOiBTUVVBUkUgcG9zbjogdXBwZXIgbGVmdCBjb2xvcjogbGlnaHQgYmx1ZSB0ZXh0dXJlOiBidXJsYXAiCiAgICAgICAgYXR0cl9leHByID0gKGxhYmVsICsgU3VwcHJlc3MoJzonKSArIE9uZU9yTW9yZShkYXRhX3dvcmQsIHN0b3BPbj1sYWJlbCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQogICAgICAgIHByaW50KE9uZU9yTW9yZShhdHRyX2V4cHIpLnBhcnNlU3RyaW5nKHRleHQpLmR1bXAoKSkKICAgICAgICAKICAgICAgICBhdHRyX2xhYmVsID0gbGFiZWwKICAgICAgICBhdHRyX3ZhbHVlID0gU3VwcHJlc3MoJzonKSArIE9uZU9yTW9yZShkYXRhX3dvcmQsIHN0b3BPbj1sYWJlbCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pCgogICAgICAgICMgc2ltaWxhciB0byBEaWN0LCBidXQgc2ltcGxlciBjYWxsIGZvcm1hdAogICAgICAgIHJlc3VsdCA9IGRpY3RPZihhdHRyX2xhYmVsLCBhdHRyX3ZhbHVlKS5wYXJzZVN0cmluZyh0ZXh0KQogICAgICAgIHByaW50KHJlc3VsdC5kdW1wKCkpCiAgICAgICAgcHJpbnQocmVzdWx0WydzaGFwZSddKQogICAgICAgIHByaW50KHJlc3VsdC5zaGFwZSkgICMgb2JqZWN0IGF0dHJpYnV0ZSBhY2Nlc3Mgd29ya3MgdG9vCiAgICAgICAgcHJpbnQocmVzdWx0LmFzRGljdCgpKQogICAgcHJpbnRzOjoKICAgICAgICBbWydzaGFwZScsICdTUVVBUkUnXSwgWydwb3NuJywgJ3VwcGVyIGxlZnQnXSwgWydjb2xvcicsICdsaWdodCBibHVlJ10sIFsndGV4dHVyZScsICdidXJsYXAnXV0KICAgICAgICAtIGNvbG9yOiBsaWdodCBibHVlCiAgICAgICAgLSBwb3NuOiB1cHBlciBsZWZ0CiAgICAgICAgLSBzaGFwZTogU1FVQVJFCiAgICAgICAgLSB0ZXh0dXJlOiBidXJsYXAKICAgICAgICBTUVVBUkUKICAgICAgICBTUVVBUkUKICAgICAgICB7J2NvbG9yJzogJ2xpZ2h0IGJsdWUnLCAnc2hhcGUnOiAnU1FVQVJFJywgJ3Bvc24nOiAndXBwZXIgbGVmdCcsICd0ZXh0dXJlJzogJ2J1cmxhcCd9CiAgICAoAwAAAFIJAAAAUjAAAABSDwAAACgCAAAAUgABAABS5wAAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSPwAAAP0RAABzAgAAAAAhYwIAAAAGAAAAAwAAAEMAAABzfAAAAHQAAIMAAGoBAGQBAIQAAIMBAH0CAHwCAGoCAIMAAH0DAHQDAHwDAF8EAHwCAGQCAIMBAHwAABd8AwBkAwCDAQAXfQQAfAEAclYAZAQAhAAAfQUAbgkAZAUAhAAAfQUAfAQAagEAfAUAgwEAAXwAAGoFAHwEAF8FAHwEAFMoBgAAAHONBAAACiAgICBIZWxwZXIgdG8gcmV0dXJuIHRoZSBvcmlnaW5hbCwgdW50b2tlbml6ZWQgdGV4dCBmb3IgYSBnaXZlbiBleHByZXNzaW9uLiAgVXNlZnVsIHRvCiAgICByZXN0b3JlIHRoZSBwYXJzZWQgZmllbGRzIG9mIGFuIEhUTUwgc3RhcnQgdGFnIGludG8gdGhlIHJhdyB0YWcgdGV4dCBpdHNlbGYsIG9yIHRvCiAgICByZXZlcnQgc2VwYXJhdGUgdG9rZW5zIHdpdGggaW50ZXJ2ZW5pbmcgd2hpdGVzcGFjZSBiYWNrIHRvIHRoZSBvcmlnaW5hbCBtYXRjaGluZwogICAgaW5wdXQgdGV4dC4gQnkgZGVmYXVsdCwgcmV0dXJucyBhc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIHBhcnNlZCB0ZXh0LiAgCiAgICAgICAKICAgIElmIHRoZSBvcHRpb25hbCBDe2FzU3RyaW5nfSBhcmd1bWVudCBpcyBwYXNzZWQgYXMgQ3tGYWxzZX0sIHRoZW4gdGhlIHJldHVybiB2YWx1ZSBpcyBhIAogICAgQ3tMe1BhcnNlUmVzdWx0c319IGNvbnRhaW5pbmcgYW55IHJlc3VsdHMgbmFtZXMgdGhhdCB3ZXJlIG9yaWdpbmFsbHkgbWF0Y2hlZCwgYW5kIGEgCiAgICBzaW5nbGUgdG9rZW4gY29udGFpbmluZyB0aGUgb3JpZ2luYWwgbWF0Y2hlZCB0ZXh0IGZyb20gdGhlIGlucHV0IHN0cmluZy4gIFNvIGlmIAogICAgdGhlIGV4cHJlc3Npb24gcGFzc2VkIHRvIEN7THtvcmlnaW5hbFRleHRGb3J9fSBjb250YWlucyBleHByZXNzaW9ucyB3aXRoIGRlZmluZWQKICAgIHJlc3VsdHMgbmFtZXMsIHlvdSBtdXN0IHNldCBDe2FzU3RyaW5nfSB0byBDe0ZhbHNlfSBpZiB5b3Ugd2FudCB0byBwcmVzZXJ2ZSB0aG9zZQogICAgcmVzdWx0cyBuYW1lIHZhbHVlcy4KCiAgICBFeGFtcGxlOjoKICAgICAgICBzcmMgPSAidGhpcyBpcyB0ZXN0IDxiPiBib2xkIDxpPnRleHQ8L2k+IDwvYj4g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IyAtPiBbMzI0LCAyMzQsIG5hbiwgMjM0XQogICAgYwMAAAADAAAAAQAAABMAAABzBwAAAIgAAGcBAFMoAQAAAE4oAAAAACgDAAAAUoQAAABSTgEAAFJwAAAAKAEAAAB0BwAAAHJlcGxTdHIoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJxAAAAoBIAAFJyAAAAKAAAAAAoAQAAAFL6AgAAKAAAAAAoAQAAAFL6AgAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UloAAACUEgAAcwIAAAAADGMDAAAAAwAAAAMAAABDAAAAcw8AAAB8AgBkAQAZZAIAZAMAIVMoBAAAAHMVAgAACiAgICBIZWxwZXIgcGFyc2UgYWN0aW9uIGZvciByZW1vdmluZyBxdW90YXRpb24gbWFya3MgZnJvbSBwYXJzZWQgcXVvdGVkIHN0cmluZ3MuCgogICAgRXhhbXBsZTo6CiAgICAgICAgIyBieSBkZWZhdWx0LCBxdW90YXRpb24gbWFya3MgYXJlIGluY2x1ZGVkIGluIHBhcnNlZCByZXN1bHRzCiAgICAgICAgcXVvdGVkU3RyaW5nLnBhcnNlU3RyaW5nKCInTm93IGlzIHRoZSBXaW50ZXIgb2Ygb3VyIERpc2NvbnRlbnQnIikgIyAtPiBbIidOb3cgaXMgdGhlIFdpbnRlciBvZiBvdXIgRGlzY29udGVudCciXQoKICAgICAgICAjIHVzZSByZW1vdmVRdW90ZXMgdG8gc3RyaXAgcXVvdGF0aW9uIG1hcmtzIGZyb20gcGFyc2VkIHJlc3VsdHMKICAgICAgICBxdW90ZWRTdHJpbmcuc2V0UGFyc2VBY3Rpb24ocmVtb3ZlUXVvdGVzKQogICAgICAgIHF1b3RlZFN0cmluZy5wYXJzZVN0cmluZygiJ05vdyBpcyB0aGUgV2ludGVyIG9mIG91ciBEaXNjb250ZW50JyIpICMgLT4gWyJOb3cgaXMgdGhlIFdpbnRlciBvZiBvdXIgRGlzY29udGVudCJdCiAgICBpAAAA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IGZvciB0aGUgb3BlbmluZyBhbmQgY2xvc2luZyB0YWdzIGFzIGEgMi10dXBsZQogICAgICAgIGEsYV9lbmQgPSBtYWtlSFRNTFRhZ3MoIkEiKQogICAgICAgIGxpbmtfZXhwciA9IGEgKyBTa2lwVG8oYV9lbmQpKCJsaW5rX3RleHQiKSArIGFfZW5kCiAgICAgICAgCiAgICAgICAgZm9yIGxpbmsgaW4gbGlua19leHByLnNlYXJjaFN0cmluZyh0ZXh0KToKICAgICAgICAgICAgIyBhdHRyaWJ1dGVzIGluIHRoZSA8QT4gdGFnIChsaWtlICJocmVmIiBzaG93biBoZXJlKSBhcmUgYWxzbyBhY2Nlc3NpYmxlIGFzIG5hbWVkIHJlc3VsdHMKICAgICAgICAgICAgcHJpbnQobGluay5saW5rX3RleHQsICctPicsIGxpbmsuaHJlZikKICAgIHByaW50czo6CiAgICAgICAgcHlwYXJzaW5nIC0+IGh0dHA6Ly9weXBhcnNpbmcud2lraXNwYWNlcy5jb20KICAgICgCAAAAUgsDAABSxgAAACgBAAAAUgMDAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UkkAAAD/EgAAcwIAAAAAEWMBAAAAAQAAAAMAAABDAAAAcw0AAAB0AAB8AAB0AQCDAgBTKAEAAABzugAAAAogICAgSGVscGVyIHRvIGNvbnN0cnVjdCBvcGVuaW5nIGFuZCBjbG9zaW5nIHRhZyBleHByZXNzaW9ucyBmb3IgWE1MLCBnaXZlbiBhIHRhZyBuYW1lLiBNYXRjaGVzCiAgICB0YWdzIG9ubHkgaW4gdGhlIGdpdmVuIHVwcGVyL2xvd2VyIGNhc2UuCgogICAgRXhhbXBsZTogc2ltaWxhciB0byBMe21ha2VIVE1MVGFnc30KICAgICgCAAAAUgsDAABSvwAAACgBAAAAUgMDAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UkoAAAASEwAAcwIAAAAAB2MAAAAABQAAAAQAAAAPAAAAc1QAAAB8AAByEAB8AAAeiQAAbgwAfAEAagAAgwAAiQAAZwAAiAAARF0YAFwCAH0CAH0DAHwCAHwDAGYCAF4CAHEjAIkAAIcAAGYBAGQBAIYAAH0EAHwEAFMoAgAAAHM8CAAACiAgICBIZWxwZXIgdG8gY3JlYXRlIGEgdmFsaWRhdGluZyBwYXJzZSBhY3Rpb24gdG8gYmUgdXNlZCB3aXRoIHN0YXJ0IHRhZ3MgY3JlYXRlZAogICAgd2l0aCBDe0x7bWFrZVhNTFRhZ3N9fSBvciBDe0x7bWFrZUhUTUxUYWdzfX0uIFVzZSBDe3dpdGhBdHRyaWJ1dGV9IHRvIHF1YWxpZnkgYSBzdGFydGluZyB0YWcKICAgIHdpdGggYSByZXF1aXJlZCBhdHRyaWJ1dGUgdmFsdWUsIHRvIGF2b2lkIGZhbHNlIG1hdGNoZXMgb24gY29tbW9uIHRhZ3Mgc3VjaCBhcwogICAgQ3s8VEQ+fSBvciBDezxESVY+fS4KCiAgICBDYWxsIEN7d2l0aEF0dHJpYnV0ZX0gd2l0aCBhIHNlcmllcyBvZiBhdHRyaWJ1dGUgbmFtZXMgYW5kIHZhbHVlcy4gU3BlY2lmeSB0aGUgbGlzdAogICAgb2YgZmlsdGVyIGF0dHJpYnV0ZXMgbmFtZXMgYW5kIHZhbHVlcyBhczoKICAgICAtIGtleXdvcmQgYXJndW1lbnRzLCBhcyBpbiBDeyhhbGlnbj0icmlnaHQiKX0sIG9yCiAgICAgLSBhcyBhbiBleHBsaWNpdCBkaWN0IHdpdGggQ3sqKn0gb3BlcmF0b3IsIHdoZW4gYW4gYXR0cmlidXRlIG5hbWUgaXMgYWxzbyBhIFB5dGhvbgogICAgICAgICAgcmVzZXJ2ZWQgd29yZCwgYXMgaW4gQ3sqKnsiY2xhc3MiOiJDdXN0b21lciIsICJhbGlnbiI6InJpZ2h0In19CiAgICAgLSBhIGxpc3Qgb2YgbmFtZS12YWx1ZSB0dXBsZXMsIGFzIGluICggKCJuczE6Y2xhc3MiLCAiQ3VzdG9tZXIiKSwgKCJuczI6YWxpZ24iLCJyaWdodCIpICkKICAgIEZvciBhdHRyaWJ1dGUgbmFtZXMgd2l0aCBhIG5hbWVzcGFjZSBwcmVmaXgsIHlvdSBtdXN0IHVzZSB0aGUgc2Vjb25kIGZvcm0uICBBdHRyaWJ1dGUKICAgIG5hbWVzIGFyZSBtYXRjaGVkIGluc2Vuc2l0aXZlIHRvIHVwcGVyL2xvd2VyIGNhc2UuCiAgICAgICAKICAgIElmIGp1c3QgdGVzdGluZyBmb3IgQ3tjbGFzc30gKHdpdGggb3Igd2l0aG91dCBhIG5hbWVzcGFjZSksIHVzZSBDe0x7d2l0aENsYXNzfX0uCgogICAgVG8gdmVyaWZ5IHRoYXQgdGhlIGF0dHJpYnV0ZSBleGlzdHMsIGJ1dCB3aXRob3V0IHNwZWNpZnlpbmcgYSB2YWx1ZSwgcGFzcwogICAgQ3t3aXRoQXR0cmlidXRlLkFOWV9WQUxVRX0gYXMgdGhlIHZhbHVlLgoKICAgIEV4YW1wbGU6OgogICAgICAgIGh0bWwgPSAnJycKICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgU29tZSB0ZXh0CiAgICAgICAgICAgIDxkaXYgdHlwZT0iZ3JpZCI+MSA0IDAgMSAwPC9kaXY+CiAgICAgICAgICAgIDxkaXYgdHlwZT0iZ3JhcGgiPjEsMyAyLDMgMSwxPC9kaXY+CiAgICAgICAgICAgIDxkaXY+dGhpcyBoYXMgbm8gdHlwZTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICcnJwogICAgICAgIGRpdixkaXZfZW5kID0gbWFrZUhUTUxUYWdzKCJkaXYiKQoKICAgICAgICAjIG9ubHkgbWF0Y2ggZGl2IHRhZyBoYXZpbmcgYSB0eXBlIGF0dHJpYnV0ZSB3aXRoIHZhbHVlICJncmlkIgogICAgICAgIGRpdl9ncmlkID0gZGl2KCkuc2V0UGFyc2VBY3Rpb24od2l0aEF0dHJpYnV0ZSh0eXBlPSJncmlkIikpCiAgICAgICAgZ3JpZF9leHByID0gZGl2X2dyaWQgKyBTa2lwVG8oZGl2IHwgZGl2X2VuZCkoImJvZHkiKQogICAgICAgIGZvciBncmlkX2hlYWRlciBpbiBncmlkX2V4cHIuc2VhcmNoU3RyaW5nKGh0bWwpOgogICAgICAgICAgICBwcmludChncmlkX2hlYWRlci5ib2R5KQogICAgICAgIAogICAgICAgICMgY29uc3RydWN0IGEgbWF0Y2ggd2l0aCBhbnkgZGl2IHRhZyBoYXZpbmcgYSB0eXBlIGF0dHJpYnV0ZSwgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUKICAgICAgICBkaXZfYW55X3R5cGUgPSBkaXYoKS5zZXRQYXJzZUFjdGlvbih3aXRoQXR0cmlidXRlKHR5cGU9d2l0aEF0dHJpYnV0ZS5BTllfVkFMVUUpKQogICAgICAgIGRpdl9leHByID0gZGl2X2FueV90eXBlICsgU2tpcFRvKGRpdiB8IGRpdl9lbmQpKCJib2R5IikKICAgICAgICBmb3IgZGl2X2hlYWRlciBpbiBkaXZfZXhwci5zZWFyY2hTdHJpbmcoaHRtbCk6CiAgICAgICAgICAgIHByaW50KGRpdl9oZWFkZXIuYm9keSkKICAgIHByaW50czo6CiAgICAgICAgMSA0IDAgMSAwCgogICAgICAgIDEgNCAwIDEgMAogICAgICAgIDEsMyAyLDMgMSwxCiAgICBjAwAAAAUAAAAIAAAAEwAAAHOFAAAAeH4AiAAARF12AFwCAH0DAH0EAHwDAHwCAGsHAHI4AHQAAHwAAHwBAGQBAHwDABeDAwCCAQBuAAB8BAB0AQBqAgBrAwByBwB8AgB8AwAZfAQAawMAcgcAdAAAfAAAfAEAZAIAfAMAfAIAfAMAGXwEAGYDABaDAwCCAQBxBwBxBwBXZAAAUygDAAAATnMWAAAAbm8gbWF0Y2hpbmcgYXR0cmlidXRlIHMrAAAAYXR0cmlidXRlICclcycgaGFzIHZhbHVlICclcycsIG11c3QgYmUgJyVzJygDAAAAUh0AAABSYwAAAHQJAAAAQU5ZX1ZBTFVFKAUAAABShAAAAFJOAQAAUqkBAAB0CAAAAGF0dHJOYW1ldAkAAABhdHRyVmFsdWUoAQAAAHQFAAAAYXR0cnMoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKZAQAAUhMAAHMMAAAAAAETAQwBGQEfAQwBKAEAAABS4QAAACgFAAAAUpsAAAB0CAAAAGF0dHJEaWN0UtoAAABS1wAAAFKZAQAAKAAAAAAoAQAAAFIPAwAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UmMAAAAbEwAAcwwAAAAAMgYBCgIMASUBDwdjAgAAAAMAAAAEAAAAQwAAAHMnAAAAfAEAchAAZAEAfAEAFm4DAGQCAH0CAHQAAGkBAHwAAHwCADaNAABTKAMAAABz4wMAAAogICAgU2ltcGxpZmllZCB2ZXJzaW9uIG9mIEN7THt3aXRoQXR0cmlidXRlfX0gd2hlbiBtYXRjaGluZyBvbiBhIGRpdiBjbGFzcyAtIG1hZGUKICAgIGRpZmZpY3VsdCBiZWNhdXNlIEN7Y2xhc3N9IGlzIGEgcmVzZXJ2ZWQgd29yZCBpbiBQeXRob24uCgogICAgRXhhbXBsZTo6CiAgICAgICAgaHRtbCA9ICcnJwogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICBTb21lIHRleHQKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCI+MSA0IDAgMSAwPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyYXBoIj4xLDMgMiwzIDEsMTwvZGl2PgogICAgICAgICAgICA8ZGl2PnRoaXMgJmx0O2RpdiZndDsgaGFzIG5vIGNsYXNzPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgJycnCiAgICAgICAgZGl2LGRpdl9lbmQgPSBtYWtlSFRNTFRhZ3MoImRpdiIpCiAgICAgICAgZGl2X2dyaWQgPSBkaXYoKS5zZXRQYXJzZUFjdGlvbih3aXRoQ2xhc3MoImdyaWQiKSkKICAgICAgICAKICAgICAgICBncmlkX2V4cHIgPSBkaXZfZ3JpZCArIFNraXBUbyhkaXYgfCBkaXZfZW5kKSgiYm9keSIpCiAgICAgICAgZm9yIGdyaWRfaGVhZGVyIGluIGdyaWRfZXhwci5zZWFyY2hTdHJpbmcoaHRtbCk6CiAgICAgICAgICAgIHByaW50KGdyaWRfaGVhZGVyLmJvZHkpCiAgICAgICAgCiAgICAgICAgZGl2X2FueV90eXBlID0gZGl2KCkuc2V0UGFyc2VBY3Rpb24od2l0aENsYXNzKHdpdGhBdHRyaWJ1dGUuQU5ZX1ZBTFVFKSkKICAgICAgICBkaXZfZXhwciA9IGRpdl9hbnlfdHlwZSArIFNraXBUbyhkaXYgfCBkaXZfZW5kKSgiYm9keSIpCiAgICAgICAgZm9yIGRpdl9oZWFkZXIgaW4gZGl2X2V4cHIuc2VhcmNoU3RyaW5nKGh0bWwpOgogICAgICAgICAgICBwcmludChkaXZfaGVhZGVyLmJvZHkpCiAgICBwcmludHM6OgogICAgICAgIDEgNCAwIDEgMAoKICAgICAgICAxIDQgMCAxIDAKICAgICAgICAxLDMgMiwzIDEsMQogICAgcwgAAAAlczpjbGFzc3QFAAAAY2xhc3MoAQAAAFJjAAAAKAMAAAB0CQAAAGNsYXNzbmFtZXQJAAAAbmFtZXNwYWNldAkAAABjbGFzc2F0dHIoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UmkAAABcEwAAcwQAAAAAIBYBdAEAAAAoUlkCAABjBAAAABEAAAAHAAAAQwAAAHM8AwAAdAAAgwAAfQQAfAAAfAIAfAQAF3wDABdCfQUAeBADdAEAfAEAgwEARF0CA1wCAH0GAH0HAHwHAGQLABdkAQAgXAQAfQgAfQkAfQoAfQsAfAkAZAIAawAAcmQAZAMAfAgAFm4HAGQEAHwIABZ9DAB8CQBkAgBrAgBytgB8CABkCgBrCABzmAB0AwB8CACDAQBkBQBrAwBypwB0BABkBgCDAQCCAQBuAAB8CABcAgB9DQB9DgBuAAB0AACDAABqBQB8DACDAQB9DwB8CgB0BgBqBwBrAgByzAF8CQBkBwBrAgByCgF0CAB8BQB8CAAXgwEAdAkAfAUAdAoAfAgAgwEAF4MBABd9EABx9wJ8CQBkBQBrAgByeAF8CABkCgBrCQByUQF0CAB8BQB8CAAXfAUAF4MBAHQJAHwFAHQKAHwIAHwFABeDAQAXgwEAF30QAHHJAXQIAHwFAHwFABeDAQB0CQB8BQB0CgB8BQCDAQAXgwEAF30QAHH3AnwJAGQCAGsCAHK9AXQIAHwFAHwNABd8BQAXfA4AF3wFABeDAQB0CQB8BQB8DQAXfAUAF3wOABd8BQAXgwEAF30QAHH3AnQEAGQIAIMBAIIBAG4rAXwKAHQGAGoLAGsCAHLrAnwJAGQHAGsCAHIpAnQMAHwIAHQNAIMCAHMFAnQNAHwIAIMBAH0IAG4AAHQIAHwIAGoOAHwPABeDAQB0CQB8CAB8DwAXgwEAF30QAHH3AnwJAGQFAGsCAHKXAnwIAGQKAGsJAHJwAnQIAHwFAHwIABd8DwAXgwEAdAkAfAUAdAoAfAgAfA8AF4MBABeDAQAXfRAAcegCdAgAfAUAfA8AF4MBAHQJAHwFAHQKAHwPAIMBABeDAQAXfRAAcfcCfAkAZAIAawIActwCdAgAfAUAfA0AF3wPABd8DgAXfA8AF4MBAHQJAHwFAHwNABd8DwAXfA4AF3wPABeDAQAXfRAAcfcCdAQAZAgAgwEAggEAbgwAdAQAZAkAgwEAggEAfAsAcg0DfBAAag8AfAsAgwEAAW4AAHwPAHwQAGoFAHwMAIMBAHwFAEJLfQ8AfA8AfQUAcSgAV3wEAHwFAEt9BAB8BABTKAwAAABznAkAAAogICAgSGVscGVyIG1ldGhvZCBmb3IgY29uc3RydWN0aW5nIGdyYW1tYXJzIG9mIGV4cHJlc3Npb25zIG1hZGUgdXAgb2YKICAgIG9wZXJhdG9ycyB3b3JraW5nIGluIGEgcHJlY2VkZW5jZSBoaWVyYXJjaHkuICBPcGVyYXRvcnMgbWF5IGJlIHVuYXJ5IG9yCiAgICBiaW5hcnksIGxlZnQtIG9yIHJpZ2h0LWFzc29jaWF0aXZlLiAgUGFyc2UgYWN0aW9ucyBjYW4gYWxzbyBiZSBhdHRhY2hlZAogICAgdG8gb3BlcmF0b3IgZXhwcmVzc2lvbnMuIFRoZSBnZW5lcmF0ZWQgcGFyc2VyIHdpbGwgYWxzbyByZWNvZ25pemUgdGhlIHVzZSAKICAgIG9mIHBhcmVudGhlc2VzIHRvIG92ZXJyaWRlIG9wZXJhdG9yIHByZWNlZGVuY2VzIChzZWUgZXhhbXBsZSBiZWxvdykuCiAgICAKICAgIE5vdGU6IGlmIHlvdSBkZWZpbmUgYSBkZWVwIG9wZXJhdG9yIGxpc3QsIHlvdSBtYXkgc2VlIHBlcmZvcm1hbmNlIGlzc3VlcwogICAgd2hlbiB1c2luZyBpbmZpeE5vdGF0aW9uLiBTZWUgTHtQYXJzZXJFbGVtZW50LmVuYWJsZVBhY2tyYXR9IGZvciBhCiAgICBtZWNoYW5pc20gdG8gcG90ZW50aWFsbHkgaW1wcm92ZSB5b3VyIHBhcnNlciBwZXJmb3JtYW5jZS4KCiAgICBQYXJhbWV0ZXJzOgogICAgIC0gYmFzZUV4cHIgLSBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgbW9zdCBiYXNpYyBlbGVtZW50IGZvciB0aGUgbmVzdGVkCiAgICAgLSBvcExpc3QgLSBsaXN0IG9mIHR1cGxlcywgb25lIGZvciBlYWNoIG9wZXJhdG9yIHByZWNlZGVuY2UgbGV2ZWwgaW4gdGhlCiAgICAgIGV4cHJlc3Npb24gZ3JhbW1hcjsgZWFjaCB0dXBsZSBpcyBvZiB0aGUgZm9ybQogICAgICAob3BFeHByLCBudW1UZXJtcywgcmlnaHRMZWZ0QXNzb2MsIHBhcnNlQWN0aW9uKSwgd2hlcmU6CiAgICAgICAtIG9wRXhwciBpcyB0aGUgcHlwYXJzaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBvcGVyYXRvcjsKICAgICAgICAgIG1heSBhbHNvIGJlIGEgc3RyaW5nLCB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIExpdGVyYWw7CiAgICAgICAgICBpZiBudW1UZXJtcyBpcyAzLCBvcEV4cHIgaXMgYSB0dXBsZSBvZiB0d28gZXhwcmVzc2lvbnMsIGZvciB0aGUKICAgICAgICAgIHR3byBvcGVyYXRvcnMgc2VwYXJhdGluZyB0aGUgMyB0ZXJtcwogICAgICAgLSBudW1UZXJtcyBpcyB0aGUgbnVtYmVyIG9mIHRlcm1zIGZvciB0aGlzIG9wZXJhdG9yIChtdXN0CiAgICAgICAgICBiZSAxLCAyLCBvciAzKQogICAgICAgLSByaWdodExlZnRBc3NvYyBpcyB0aGUgaW5kaWNhdG9yIHdoZXRoZXIgdGhlIG9wZXJhdG9yIGlzCiAgICAgICAgICByaWdodCBvciBsZWZ0IGFzc29jaWF0aXZlLCB1c2luZyB0aGUgcHlwYXJzaW5nLWRlZmluZWQKICAgICAgICAgIGNvbnN0YW50cyBDe29wQXNzb2MuUklHSFR9IGFuZCBDe29wQXNzb2MuTEVGVH0uCiAgICAgICAtIHBhcnNlQWN0aW9uIGlzIHRoZSBwYXJzZSBhY3Rpb24gdG8gYmUgYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgICBleHByZXNzaW9ucyBtYXRjaGluZyB0aGlzIG9wZXJhdG9yIGV4cHJlc3Npb24gKHRoZQogICAgICAgICAgcGFyc2UgYWN0aW9uIHR1cGxlIG1lbWJlciBtYXkgYmUgb21pdHRlZCkKICAgICAtIGxwYXIgLSBleHByZXNzaW9uIGZvciBtYXRjaGluZyBsZWZ0LXBhcmVudGhlc2VzIChkZWZhdWx0PUN7U3VwcHJlc3MoJygnKX0pCiAgICAgLSBycGFyIC0gZXhwcmVzc2lvbiBmb3IgbWF0Y2hpbmcgcmlnaHQtcGFyZW50aGVzZXMgKGRlZmF1bHQ9Q3tTdXBwcmVzcygnKScpfSkKCiAgICBFeGFtcGxlOjoKICAgICAgICAjIHNpbXBsZSBleGFtcGxlIG9mIGZvdXItZnVuY3Rpb24gYXJpdGhtZXRpYyB3aXRoIGludHMgYW5kIHZhcmlhYmxlIG5hbWVzCiAgICAgICAgaW50ZWdlciA9IHB5cGFyc2luZ19jb21tb24uc2lnbmVkX2ludGVnZXIKICAgICAgICB2YXJuYW1lID0gcHlwYXJzaW5nX2NvbW1vbi5pZGVudGlmaWVyIAogICAgICAgIAogICAgICAgIGFyaXRoX2V4cHIgPSBpbmZpeE5vdGF0aW9uKGludGVnZXIgfCB2YXJuYW1lLAogICAgICAgICAgICBbCiAgICAgICAgICAgICgnLScsIDEsIG9wQXNzb2MuUklHSFQpLAogICAgICAgICAgICAob25lT2YoJyogLycpLCAyLCBvcEFzc29jLkxFRlQpLAogICAgICAgICAgICAob25lT2YoJysgLScpLCAyLCBvcEFzc29jLkxFRlQpLAogICAgICAgICAgICBdKQogICAgICAgIAogICAgICAgIGFyaXRoX2V4cHIucnVuVGVzdHMoJycnCiAgICAgICAgICAgIDUrMyo2CiAgICAgICAgICAgICg1KzMpKjYKICAgICAgICAgICAgLTItLTExCiAgICAg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bmluZyBhbmQgY2xvc2luZwogICAgZGVsaW1pdGVycyAoIigiIGFuZCAiKSIgYXJlIHRoZSBkZWZhdWx0KS4KCiAgICBQYXJhbWV0ZXJzOgogICAgIC0gb3BlbmVyIC0gb3BlbmluZyBjaGFyYWN0ZXIgZm9yIGEgbmVzdGVkIGxpc3QgKGRlZmF1bHQ9Q3siKCJ9KTsgY2FuIGFsc28gYmUgYSBweXBhcnNpbmcgZXhwcmVzc2lvbgogICAgIC0gY2xvc2VyIC0gY2xvc2luZyBjaGFyYWN0ZXIgZm9yIGEgbmVzdGVkIGxpc3QgKGRlZmF1bHQ9Q3siKSJ9KTsgY2FuIGFsc28gYmUgYSBweXBhcnNpbmcgZXhwcmVzc2lvbgogICAgIC0gY29udGVudCAtIGV4cHJlc3Npb24gZm9yIGl0ZW1zIHdpdGhpbiB0aGUgbmVzdGVkIGxpc3RzIChkZWZhdWx0PUN7Tm9uZX0pCiAgICAgLSBpZ25vcmVFeHByIC0gZXhwcmVzc2lvbiBmb3IgaWdub3Jpbmcgb3BlbmluZyBhbmQgY2xvc2luZyBkZWxpbWl0ZXJzIChkZWZhdWx0PUN7cXVvdGVkU3RyaW5nfSkKCiAgICBJZiBhbiBleHByZXNzaW9uIGlzIG5vdCBwcm92aWRlZCBmb3IgdGhlIGNvbnRlbnQgYXJndW1lbnQsIHRoZSBuZXN0ZWQKICAgIGV4cHJlc3Npb24gd2lsbCBjYXB0dXJlIGFsbCB3aGl0ZXNwYWNlLWRlbGltaXRlZCBjb250ZW50IGJldHdlZW4gZGVsaW1pdGVycwogICAgYXMgYSBsaXN0IG9mIHNlcGFyYXRlIHZhbHVlcy4KCiAgICBVc2UgdGhlIEN7aWdub3JlRXhwcn0gYXJndW1lbnQgdG8gZGVmaW5lIGV4cHJlc3Npb25zIHRoYXQgbWF5IGNvbnRhaW4KICAgIG9wZW5pbmcgb3IgY2xvc2luZyBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIG9wZW5pbmcKICAgIG9yIGNsb3NpbmcgY2hhcmFjdGVycyBmb3IgbmVzdGluZywgc3VjaCBhcyBxdW90ZWRTdHJpbmcgb3IgYSBjb21tZW50CiAgICBleHByZXNzaW9uLiAgU3BlY2lmeSBtdWx0aXBsZSBleHByZXNzaW9ucyB1c2luZyBhbiBDe0x7T3J9fSBvciBDe0x7TWF0Y2hGaXJzdH19LgogICAgVGhlIGRlZmF1bHQgaXMgTHtxdW90ZWRTdHJpbmd9LCBidXQgaWYgbm8gZXhwcmVzc2lvbnMgYXJlIHRvIGJlIGlnbm9yZWQsCiAgICB0aGVuIHBhc3MgQ3tOb25lfSBmb3IgdGhpcyBhcmd1bWVudC4KCiAgICBFeGFtcGxlOjoKICAgICAgICBkYXRhX3R5cGUgPSBvbmVPZigidm9pZCBpbnQgc2hvcnQgbG9uZyBjaGFyIGZsb2F0IGRvdWJsZSIpCiAgICAgICAgZGVjbF9kYXRhX3R5cGUgPSBDb21iaW5lKGRhdGFfdHlwZSArIE9wdGlvbmFsKFdvcmQoJyonKSkpCiAgICAgICAgaWRlbnQgPSBXb3JkKGFscGhhcysnXycsIGFscGhhbnVtcysnXycpCiAgICAgICAgbnVtYmVyID0gcHlwYXJzaW5nX2NvbW1vbi5udW1iZXIKICAgICAgICBhcmcgPSBHcm91cChkZWNsX2RhdGFfdHlwZSArIGlkZW50KQogICAgICAgIExQQVIsUlBBUiA9IG1hcChTdXBwcmVzcywgIigpIikKCiAgICAgICAgY29kZV9ib2R5ID0gbmVzdGVkRXhwcigneycsICd9JywgaWdub3JlRXhwcj0ocXVvdGVkU3RyaW5nIHwgY1N0eWxlQ29tbWVudCkpCgogICAgICAgIGNfZnVuY3Rpb24gPSAoZGVjbF9kYXRhX3R5cGUoInR5cGUiKSAKICAgICAgICAgICAgICAgICAgICAgICsgaWRlbnQoIm5hbWUiKQogICAgICAgICAgICAgICAgICAgICAgKyBMUEFSICsgT3B0aW9uYWwoZGVsaW1pdGVkTGlzdChhcmcpLCBbXSkoImFyZ3MiKSArIFJQQVIgCiAgICAgICAgICAgICAgICAgICAgICArIGNvZGVfYm9keSgiYm9keSIpKQogICAgICAgIGNfZnVuY3Rpb24uaWdub3JlKGNTdHlsZUNvbW1lbnQpCiAgICAgICAgCiAgICAgICAgc291cmNlX2NvZGUgPSAnJycKICAgICAgICAgICAgaW50IGlzX29kZChpbnQgeCkgeyAKICAgICAgICAgICAgICAgIHJldHVybiAoeCUyKTsgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICBpbnQgZGVjX3RvX2hleChjaGFyIGhjaGFyKSB7IAogICAgICAgICAgICAgICAgaWYgKGhjaGFyID49ICcwJyAmJiBoY2hhciA8PSAnOScpIHsgCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChvcmQoaGNoYXIpLW9yZCgnMCcpKTsgCiAgICAgICAgICAgICAgICB9IGVsc2UgeyAKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDEwK29yZChoY2hhciktb3JkKCdBJykpOwogICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgfQogICAgICAgICcnJwogICAgICAgIGZvciBmdW5jIGluIGNfZnVuY3Rpb24uc2VhcmNoU3RyaW5nKHNvdXJjZV9jb2RlKToKICAgICAgICAgICAgcHJpbnQoIiUobmFtZSlzICglKHR5cGUpcykgYXJnczogJShhcmdzKXMiICUgZnVuYykKCiAgICBwcmludHM6OgogICAgICAgIGlzX29kZCAoaW50KSBhcmdzOiBbWydpbnQnLCAneCddXQogICAgICAgIGRlY190b19oZXggKGludCkgYXJnczogW1snY2hhcicsICdoY2hhciddXQogICAgcy4AAABvcGVuaW5nIGFuZCBjbG9zaW5nIHN0cmluZ3MgY2Fubm90IGJlIHRoZSBzYW1laQEAAABSSwIAAGMBAAAAAQAAAAIAAABTAAAAcw4AAAB8AABkAQAZagAAgwAAUygCAAAATmkAAAAAKAEAAABSqQAAACgBAAAAUnAAAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UnEAAAA5FAAAUnIAAABjAQAAAAEAAAACAAAAUwAAAHMOAAAAfAAAZAEAGWoAAIMAAFMoAgAAAE5pAAAAACgBAAAAUqkAAAAoAQAAAFJwAAAAKAAAAAAoAAAAAHNDAAAAL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJxAAAAPBQAAFJyAAAAYwEAAAABAAAAAgAAAFMAAABzDgAAAHwAAGQBABlqAACDAABTKAIAAABOaQAAAAAoAQAAAFKpAAAAKAEAAABScAAAACgAAAAAKAAAAABzQwAAAC91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlScQAAAEIUAABScgAAAGMBAAAAAQAAAAIAAABTAAAAcw4AAAB8AABkAQAZagAAgwAAUygCAAAATmkAAAAAKAEAAABSqQAAACgBAAAAUnAAAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UnEAAABGFAAAUnIAAABzTwAAAG9wZW5pbmcgYW5kIGNsb3NpbmcgYXJndW1lbnRzIG11c3QgYmUgc3RyaW5ncyBpZiBubyBjb250ZW50IGV4cHJlc3Npb24gaXMgZ2l2ZW5zFgAAAG5lc3RlZCAlcyVzIGV4cHJlc3Npb25OKBMAAABS6AEAAFKXAAAAUnMAAABS0QAAAFLdAAAAUggAAABSFwAAAFIHAAAAUiIAAABSZgEAAFJ6AAAAUkEAAABS0gAAAFITAAAAUg0AAABSDwAAAFIpAAAAUjAAAABSggEAACgFAAAAdAYAAABvcGVuZXJ0BgAAAGNsb3NlcnQHAAAAY29udGVudFKqAgAAUn0AAAAoAAAAACgAAAAAc0MAAAAvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Uk4AAAD3EwAAczQAAAAAOgwBDwEMAR4BJAEMAQoBJAEPAiABEAIMAQYBGgEcAQ8CGwEcAQ8CDwEJAQwBNQIuARcBYwMAAAALAAAABgAAAAMAAABzNQEAAIcAAGYBAGQBAIYAAH0DAIcAAGYBAGQCAIYAAH0EAIcAAGYBAGQDAIYAAH0FAHQAAHQBAIMAAGoCAGQEAIMBAGoDAIMAAIMBAH0GAHQEAIMAAHQEAIMAAGoFAHwEAIMBABdqBgBkBQCDAQB9BwB0BACDAABqBQB8AwCDAQBqBgBkBgCDAQB9CAB0BACDAABqBQB8BQCDAQBqBgBkBwCDAQB9CQB8AgBy5AB0BwB0CAB8BgCDAQB8BwAXdAAAfAgAdAcAfAAAgwEAF3QIAHwGAIMBABeDAQAXfAkAF4MBAH0KAG4wAHQHAHQIAHwGAIMBAHQAAHwIAHQHAHwAAIMBABd0CAB8BgCDAQAXgwEAF4MBAH0KAHwAAGoJAHQKAHQBAIMAABeDAQABfAoAagYAZAgAgwEAUygJAAAAcwoJAAAKICAgIEhlbHBlciBtZXRob2QgZm9yIGRlZmluaW5nIHNwYWNlLWRlbGltaXRlZCBpbmRlbnRhdGlvbiBibG9ja3MsIHN1Y2ggYXMKICAgIHRob3NlIHVzZWQgdG8gZGVmaW5lIGJsb2NrIHN0YXRlbWVudHMgaW4gUHl0aG9uIHNvdXJjZSBjb2RlLgoKICAgIFBhcmFtZXRlcnM6CiAgICAgLSBibG9ja1N0YXRlbWVudEV4cHIgLSBleHByZXNzaW9uIGRlZmluaW5nIHN5bnRheCBvZiBzdGF0ZW1lbnQgdGhhdAogICAgICAgICAgICBpcyByZXBlYXRlZCB3aXRoaW4gdGhlIGluZGVudGVkIGJsb2NrCiAgICAgLSBpbmRlbnRTdGFjayAtIGxpc3QgY3JlYXRlZCBieSBjYWxsZXIgdG8gbWFuYWdlIGluZGVudGF0aW9uIHN0YWNrCiAgICAgICAgICAgIChtdWx0aXBsZSBzdGF0ZW1lbnRXaXRoSW5kZW50ZWRCbG9jayBleHByZXNzaW9ucyB3aXRoaW4gYSBzaW5nbGUgZ3JhbW1hcgogICAgICAgICAgICBzaG91bGQgc2hhcmUgYSBjb21tb24gaW5kZW50U3RhY2spCiAgICAgLSBpbmRlbnQgLSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBibG9jayBtdXN0IGJlIGluZGVudGVkIGJleW9uZCB0aGUKICAgICAgICAgICAgdGhlIGN1cnJlbnQgbGV2ZWw7IHNldCB0byBGYWxzZSBmb3IgYmxvY2sgb2YgbGVmdC1tb3N0IHN0YXRlbWVudHMKICAgICAgICAgICAgKGRlZmF1bHQ9Q3tUcnVlfSkKCiAgICBBIHZhbGlkIGJsb2NrIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgQ3tibG9ja1N0YXRlbWVudH0uCgogICAgRXhhbXBsZTo6CiAgICAgICAgZGF0YSA9ICcnJwogICAgICAgIGRlZiBBKHopOgogICAgICAgICAgQTEKICAgICAgICAgIEIgPSAxMDAKICAgICAgICAgIEcgPSBBMgogICAgICAgICAgQTIKICAgICAgICAgIEEzCiAgICAgICAgQgogICAgICAgIGRlZiBCQihhLGIsYyk6CiAgICAgICAgICBCQjEKICAgICAgICAgIGRlZiBCQkEoKToKICAgICAgICAgICAgYmJhMQogICAgICAgICAgICBiYmEyCiAgICAgICAgICAgIGJiYTMKICAgICAgICBDCiAgICAgICAgRAogICAgICAgIGRlZiBzcGFtKHgseSk6CiAgICAgICAgICAgICBkZWYgZWdncyh6KToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgJycnCgoKICAgICAgICBpbmRlbnRTdGFjayA9IFsxXQogICAgICAgIHN0bXQgPSBGb3J3YXJkKCkKCiAgICAgICAgaWRlbnRpZmllciA9IFdvcmQoYWxwaGFzLCBhbHBoYW51bXMpCiAgICAgICAgZnVuY0RlY2wgPSAoImRlZiIgKyBpZGVudGlmaWVyICsgR3JvdXAoICIoIiArIE9wdGlvbmFsKCBkZWxpbWl0ZWRMaXN0KGlkZW50aWZpZXIpICkgKyAiKSIgKSArICI6IikKICAgICAgICBmdW5jX2JvZHkgPSBpbmRlbnRlZEJsb2NrKHN0bXQsIGluZGVudFN0YWNrKQogICAgICAgIGZ1bmNEZWYgPSBHcm91cCggZnVuY0RlY2wgKyBmdW5jX2JvZHkgKQoKICAgICAgICBydmFsdWUgPSBGb3J3YXJkKCkKICAgICAgICBmdW5jQ2FsbCA9IEdyb3VwKGlkZW50aWZpZXIgKyAiKCIgKyBPcHRpb25hbChkZWxpbWl0ZWRMaXN0KHJ2YWx1ZSkpICsgIikiKQogICAgICAgIHJ2YWx1ZSA8PCAoZnVuY0NhbGwgfCBpZGVudGlmaWVyIHwgV29yZChudW1zKSkKICAgICAgICBhc3NpZ25tZW50ID0gR3JvdXAoaWRlbnRpZmllciArICI9IiArIHJ2YWx1ZSkKICAgICAgICBzdG10IDw8ICggZnVuY0RlZiB8IGFzc2lnbm1lbnQgfCBpZGVudGlmaWVyICkKCiAgICAgICAgbW9kdWxlX2JvZHkgPSBPbmVPck1vcmUoc3RtdCkKCiAgICAgICAgcGFyc2VUcmVlID0gbW9kdWxlX2JvZHkucGFyc2VTdHJpbmcoZGF0YSkKICAgICAgICBwYXJzZVRyZWUucHByaW50KCkKICAgIHByaW50czo6CiAgICAgICAgW1snZGVmJywKICAgICAgICAgICdBJywKICAgICAgICAgIFsnKCcsICd6JywgJyknXSwKICAgICAgICAgICc6JywKICAgICAgICAgIFtbJ0ExJ10sIFtbJ0InLCAnPScsICcxMDAnXV0sIFtbJ0cnLCAnPScsICdBMiddXSwgWydBMiddLCBbJ0EzJ11dXSwKICAgICAgICAgJ0InLAogICAgICAgICBbJ2RlZicsCiAgICAgICAgICAnQkInLAogICAgICAgICAgWycoJywgJ2EnLCAnYicsICdjJywgJyknXSwKICAgICAgICAgICc6JywKICAgICAgICAgIFtbJ0JCMSddLCBbWydkZWYnLCAnQkJBJywgWycoJywgJyknXSwgJzonLCBbWydiYmExJ10sIFsnYmJhMiddLCBbJ2JiYTMnXV1dXV1dLAogICAgICAgICAnQycsCiAgICAgICAgICdEJywKICAgICAgICAgWydkZWYnLAogICAgICAgICAgJ3NwYW0nLAogICAgICAgICAgWycoJywgJ3gnLCAneScsICcpJ10sCiAgICAgICAgICAnOicsCiAgICAgICAgICBbW1snZGVmJywgJ2VnZ3MnLCBbJygnLCAneicsICcpJ10sICc6JywgW1sncGFzcyddXV1dXV1dIAogICAgYwMAAAAEAAAABAAAABMAAABzcwAAAHwBAHQAAHwAAIMBAGsFAHIWAGQAAFN0AQB8AQB8AACDAgB9AwB8AwCIAABkAQAZawMAcm8AfAMAiAAAZAEAGWsEAHJaAHQCAHwAAHwBAGQCAIMDAIIBAG4AAHQDAHwAAHwBAGQDAIMDAIIBAG4AAGQAAFMoBAAAAE5p/////3MPAAAA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ZDAAZC8AgwEBF2UTAGU2AGQxAIMBAIMBABeDAQCDAQBqGQCDAABqCgBkMgCDAQBaNwBlOABlEwBlOQBqOgCDAABlNwBCZDMAZDQAgwEBgwEAagoAZDUAgwEAWjsAZSgAZQMAZDYAhAAAgwEAgwEAWjwAZSgAZQMAZDcAhAAAgwEAgwEAWj0AUlMoOgAAAHOuCgAACiAgICBIZXJlIGFyZSBzb21lIGNvbW1vbiBsb3ctbGV2ZWwgZXhwcmVzc2lvbnMgdGhhdCBtYXkgYmUgdXNlZnVsIGluIGp1bXAtc3RhcnRpbmcgcGFyc2VyIGRldmVsb3BtZW50OgogICAgIC0gbnVtZXJpYyBmb3JtcyAoTHtpbnRlZ2VyczxpbnRlZ2VyPn0sIEx7cmVhbHM8cmVhbD59LCBMe3NjaWVudGlmaWMgbm90YXRpb248c2NpX3JlYWw+fSkKICAgICAtIGNvbW1vbiBMe3Byb2dyYW1taW5nIGlkZW50aWZpZXJzPGlkZW50aWZpZXI+fQogICAgIC0gbmV0d29yayBhZGRyZXNzZXMgKEx7TUFDPG1hY19hZGRyZXNzPn0sIEx7SVB2NDxpcHY0X2FkZHJlc3M+fSwgTHtJUHY2PGlwdjZfYWRkcmVzcz59KQogICAgIC0gSVNPODYwMSBMe2RhdGVzPGlzbzg2MDFfZGF0ZT59IGFuZCBMe2RhdGV0aW1lPGlzbzg2MDFfZGF0ZXRpbWU+fQogICAgIC0gTHtVVUlEPHV1aWQ+fQogICAgIC0gTHtjb21tYS1zZXBhcmF0ZWQgbGlzdDxjb21tYV9zZXBhcmF0ZWRfbGlzdD59CiAgICBQYXJzZSBhY3Rpb25zOgogICAgIC0gQ3tMe2NvbnZlcnRUb0ludGVnZXJ9fQogICAgIC0gQ3tMe2NvbnZlcnRUb0Zsb2F0fX0KICAgICAtIEN7THtjb252ZXJ0VG9EYXRlfX0KICAgICAtIEN7THtjb252ZXJ0VG9EYXRldGltZX19CiAgICAgLSBDe0x7c3RyaXBIVE1MVGFnc319CiAgICAgLSBDe0x7dXBjYXNlVG9rZW5zfX0KICAgICAtIEN7THtkb3duY2FzZVRva2Vuc319CgogICAgRXhhbXBsZTo6CiAgICAgICAgcHlwYXJzaW5nX2NvbW1vbi5udW1iZXIucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgYW55IGludCBvciByZWFsIG51bWJlciwgcmV0dXJuZWQgYXMgdGhlIGFwcHJvcHJpYXRlIHR5cGUKICAgICAgICAgICAgMTAwCiAgICAgICAgICAgIC0xMDAKICAgICAgICAgICAgKzEwMAogICAgICAgICAgICAzLjE0MTU5CiAgICAgICAgICAgIDYuMDJlMjMKICAgICAgICAgICAgMWUtMTIKICAgICAgICAgICAgJycnKQoKICAgICAgICBweXBhcnNpbmdfY29tbW9uLmZudW1iZXIucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgYW55IGludCBvciByZWFsIG51bWJlciwgcmV0dXJuZWQgYXMgZmxvYXQKICAgICAgICAgICAgMTAwCiAgICAgICAgICAgIC0xMDAKICAgICAgICAgICAgKzEwMAogICAgICAgICAgICAzLjE0MTU5CiAgICAgICAgICAgIDYuMDJlMjMKICAgICAgICAgICAgMWUtMTIKICAgICAgICAgICAgJycnKQoKICAgICAgICBweXBhcnNpbmdfY29tbW9uLmhleF9pbnRlZ2VyLnJ1blRlc3RzKCcnJwogICAgICAgICAgICAjIGhleCBudW1iZXJzCiAgICAgICAgICAgIDEwMAogICAgICAgICAgICBGRgogICAgICAgICAgICAnJycpCgogICAgICAgIHB5cGFyc2luZ19jb21tb24uZnJhY3Rpb24ucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgZnJhY3Rpb25zCiAgICAgICAgICAgIDEvMgogICAgICAgICAgICAtMy80CiAgICAgICAgICAgICcnJykKCiAgICAgICAgcHlwYXJzaW5nX2NvbW1vbi5taXhlZF9pbnRlZ2VyLnJ1blRlc3RzKCcnJwogICAgICAgICAgICAjIG1peGVkIGZyYWN0aW9ucwogICAgICAgICAgICAxCiAgICAgICAgICAgIDEvMgogICAgICAgICAgICAtMy80CiAgICAgICAgICAgIDEtMy80CiAgICAgICAgICAgICcnJykKCiAgICAgICAgaW1wb3J0IHV1aWQKICAgICAgICBweXBhcnNpbmdfY29tbW9uLnV1aWQuc2V0UGFyc2VBY3Rpb24odG9rZW5NYXAodXVpZC5VVUlEKSkKICAgICAgICBweXBhcnNpbmdfY29tbW9uLnV1aWQucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgdXVpZAogICAgICAgICAgICAxMjM0NTY3OC0xMjM0LTU2NzgtMTIzNC01Njc4MTIzNDU2NzgKICAgICAgICAgICAgJycnKQogICAgcHJpbnRzOjoKICAgICAgICAjIGFueSBpbnQgb3IgcmVhbCBudW1iZXIsIHJldHVybmVkIGFzIHRoZSBhcHByb3ByaWF0ZSB0eXBlCiAgICAgICAgMTAwCiAgICAgICAgWzEwMF0KCiAgICAgICAgLTEwMAogICAgICAgIFstMTAwXQoKICAgICAgICArMTAwCiAgICAgICAgWzEwMF0KCiAgICAgICAgMy4xNDE1OQogICAgICAgIFszLjE0MTU5XQoKICAgICAgICA2LjAyZTIzCiAgICAgICAgWzYuMDJlKzIzXQoKICAgICAgICAxZS0xMgogICAgICAgIFsxZS0xMl0KCiAgICAgICAgIyBhbnkgaW50IG9yIHJlYWwgbnVtYmVyLCByZXR1cm5lZCBhcyBmbG9hdAogICAgICAgIDEwMAogICAgICAgIFsxMDAuMF0KCiAgICAgICAgLTEwMAogICAgICAgIFstMTAwLjBdCgogICAgICAgICsxMDAKICAgICAgICBbMTAwLjBdCgogICAgICAgIDMuMTQxNTkKICAgICAgICBbMy4xNDE1OV0KCiAgICAgICAgNi4wMmUyMwogICAgICAgIFs2LjAyZSsyM10KCiAgICAgICAgMWUtMTIKICAgICAgICBbMWUtMTJdCgogICAgICAgICMgaGV4IG51bWJlcnMKICAgICAgICAxMDAKICAgICAgICBbMjU2XQoKICAgICAgICBGRgogICAgICAgIFsyNTVdCgogICAgICAgICMgZnJhY3Rpb25zCiAgICAgICAgMS8yCiAgICAgICAgWzAuNV0KCiAgICAgICAgLTMvNAogICAgICAgIFstMC43NV0KCiAgICAgICAgIyBtaXhlZCBmcmFjdGlvbnMKICAgICAgICAxCiAgICAgICAgWzFdCgogICAgICAgIDEvMgogICAgICAgIFswLjVd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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 1 × Files: 12
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
packaging
DIR
-
drwxr-xr-x
2024-06-15 07:05:23
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
appdirs.py
21.85 KB
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
appdirs.pyc
20.35 KB
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
appdirs.pyo
20.35 KB
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pyparsing.py
224.48 KB
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pyparsing.pyc
228.95 KB
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pyparsing.pyo
228.95 KB
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
six.py
29.39 KB
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
six.pyc
31.09 KB
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
six.pyo
31.09 KB
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.py
0 B
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.pyc
153 B
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.pyo
153 B
lrw-r--r--
2024-04-10 05:04:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).