REDROOM
PHP 8.5.2
Path:
Logout
Edit File
Size: 415.86 KB
Close
//usr/share/mysql/czech/errmsg.sys
Text
Base64
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+F8AAIRgAADUYAAAemEAALphAADZYQAAXGIAAKxiAADvYgAAK2MAAHZjAAC9YwAA9WMAAF5kAACjZAAABmUAAHplAACbZQAA72UAAB9mAABuZgAAmmYAANBmAAAEZwAAMWcAAFtnAACTZwAAnWcAAKdnAADoZwAAImgAAG9oAACUaAAAsGgAACdpAABoaQAAx2kAABBqAABqagAAsWoAAOhqAAAdawAAXWsAAKBrAADmawAAR2wAAHhsAAC6bAAA62wAAEttAAB3bQAArG0AAPJtAAAqbgAAZG4AAJZuAADkbgAAJG8AAF9vAADBbwAA6G8AABpwAACJcAAAtnAAAPZwAAA6cQAAYHEAAJVxAADQcQAAK3IAAJVyAADQcgAADnMAADNzAABccwAAlHMAALVzAADqcwAAMnQAAKR0AADmdAAAIHUAAFt1AAB6dQAAnHUAAMR1AADzdQAAB3YAABl2AABPdgAAnHYAAPR2AAAIdwAAO3cAAHV3AAD2dwAAFXgAAFJ4AABqeAAAingAAJx4AADHeAAA73gAACx5AABHeQAAZ3kAAMF5AAD8eQAAKHoAAFF6AABtegAAi3oAAMt6AAAgewAAX3sAAIR7AADyewAAg3wAAON8AAAvfQAAgX0AAK99AADmfQAADX4AAB5+AABQfgAAaX4AALl+AAAifwAAPn8AAH1/AACpfwAAxn8AAPp/AAAbgAAAX4AAAL+AAADkgAAAFoEAAEiBAADkgQAAJ4IAAGWCAAChggAA4IIAABWDAABNgwAAyoMAAE6EAACChAAAsoQAABiFAAAohQAAQ4UAAF+FAABzhQAAkIUAALmFAADohQAAHoYAAF6GAACNhgAAy4YAAAqHAABBhwAAcYcAAKeHAADPhwAALIgAAFWIAACEiAAApogAAOaIAAAviQAAWokAAIuJAAC8iQAA1IkAAPeJAAAqigAAaIoAANaKAAD9igAAaosAAKaLAADaiwAADYwAAECMAABzjAAA4IwAAOmMAADvjAAA+YwAAAaNAAAQjQAAGI0AAECNAAB2jQAAlo0AALmNAADjjQAADI4AADeOAABijgAAg44AAMKOAADpjgAAD48AACiPAACGjwAA148AAACQAAA4kAAAYpAAAH+QAACpkAAA7pAAADyRAACDkQAAvJEAAEeSAADukgAAmZMAAEeUAADwlAAA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tksEAOtLBAA2TAQAOUwEAE5MBABlTAQAk0wEAL1MBAD4TAQAN00EAGRNBAAATgQALU4EAGNOBACQTgQAvU4EAAFPBAA3TwQAcE8EAAdQBABdUAQAjVAEAHRRBACnUQQAMVIEAO9SBADyUgQA9VIEADxTBACMUwQA9FMEACJUBAAlVAQAKFQEAD9UBABCVAQARVQEAEhUBABLVAQATlQEAFFUBAAAVQQAUlUEAKpVBAAGVgQAQ1YEAHVWBADjVgQAE1cEAEpXBABuVwQAh1cEAMRXBAAHWAQAgVgEAJlYBADEWAQAClkEAN9ZBABYWgQAlVoEAC9bBABpWwQAklsEAMhbBADLWwQAzlsEANFbBADUWwQA11sEANpbBADdWwQA4FsEAONbBADmWwQA6VsEAOxbBADvWwQA8lsEAPVbBAD4WwQA+1sEAP5bBAABXAQABFwEAAdcBAAKXAQADVwEABBcBAATXAQAFlwEABlcBAAcXAQAH1wEACJcBAAlXAQAKFwEACtcBAAuXAQAMVwEADRcBAA3XAQAOlwEAD1cBABAXAQAQ1wEAEZcBABJXAQATFwEAE9cBABSXAQAVVwEAFhcBABbXAQAXlwEAGFcBABkXAQAZ1wEAGpcBABtXAQAcFwEAHNcBAB2XAQAeVwEAHxcBAB/XAQAglwEAIVcBACIXAQAi1wEAI5cBACRXAQAlFwEAJdcBACaXAQAnVwEAKBcBACjXAQAplwEAKlcBACsXAQAr1wEALJcBAC1XAQAuFwEALtcBAC+XAQAwVwEAMRcBADHXAQAylwEAM1cBADQXAQA01wEANZcBADZXAQA3FwEAN9cBADiXAQA5VwEAOhcBADrXAQA7lwEAPFcBAD0XAQA91wEAPpcBAAZXQQAHF0EAB9dBACDXQQAhl0EAIldBACMXQQAj10EAJJdBACVXQQAmF0EAJtdBACeXQQAoV0EAKRdBACnXQQAql0EAK1dBACwXQQAs10EALZdBAC5XQQAvF0EAL9dBADCXQQAxV0EAMhdBADLXQQAzl0EANFdBADUXQQA110EANpdBADdXQQA4F0EAONdBADmXQQA6V0EAOxdBADvXQQA8l0EAPVdBAD4XQQA+10EAP5dBAABXgQABF4EAAdeBAAKXgQADV4EABBeBAATXgQAFl4EABleBAAcXgQAH14EACJeBAAlXgQAKF4EACteBAAuXgQAMV4EADReBAA3XgQAOl4EAD1eBABAXgQAQ14EAEZeBABJXgQATF4EAE9eBABSXgQAVV4EAFheBABbXgQAXl4EAGFeBABkXgQAZ14EAGpeBABtXgQAcF4EAHNeBAB2XgQAeV4EAHxeBAB/XgQAgl4EAIVeBACIXgQAi14EAI5eBACRXgQAlF4EAJdeBACaXgQAnV4EAKBeBACjXgQApl4EAKleBACsXgQAr14EALxeBAC/XgQAwl4EAMVeBADIXgQAy14EAM5eBADRXgQA1F4EANdeBADaXgQA3V4EAOBeBADjXgQA5l4EAOleBADsXgQA714EAPJeBAD1XgQA+F4EAPteBAD+XgQAAV8EAARfBAAHXwQACl8EAA1fBAAQXwQAE18EABZfBAAZXwQAHF8EAB9fBAAiXwQAJV8EAChfBAArXwQALl8EADFfBAA0XwQAN18EADpfBAA9XwQAQF8EAENfBABGXwQASV8EAExfBABPXwQAUl8EAFVfBABYXwQAW18EAF5fBABhXwQAZF8EAGdfBABqXwQAbV8EAHBfBABzXwQAdl8EAHlfBAB8XwQAf18EAIJfBAChXwQApF8EAKdfBACqXwQArV8EALBfBACzXwQAtl8EALlfBAC8XwQAv18EAMJfBADFXwQAyF8EAMtfBADOXwQA0V8EANRfBADXXwQA2l8EAN1fBADgXwQA418EAOZfBADpXwQA7F8EAO9fBADyXwQA9V8EAPhfBAD7XwQA/l8EAIJgBADtYAQAFWEEAHRhBADEYQQABGIEADRiBACBYgQAv2IEAO9iBAAgYwQAUGMEAJdjBAC2YwQAz2MEAOBjBAARZAQAQGQEAIVkBADEZAQABWUEACBlBABFZQQAZmUEAKllBADFZQQA5WUEAAZmBAA3ZgQAYmYEAIZmBADHZgQABGcEAC9nBACMZwQAqmcEAMVnBADlZwQAD2gEADZoBACZaAQA+WgEACBpBABcaQQAe2kEAOdpBAAdagQAYWoEAMFqBAA9awQAgmsEAJ1rBADNawQA8GsEABBsBAAwbAQAeGwEALFsBAAwbQQAX20EAI1tBACqbQQAy20EAGluBACkbgQA624EAO5uBADxbgQA9G4EAPduBAD6bgQA/W4EAABvBAADbwQABm8EAAlvBAC1bwQA028EANZvBAB9cAQAgHAEAKVwBADQcAQA8XAEAENxBABucQQAlnEEAAtyBAC9cwQAQnQEAF90BACkdAQA+nQEALJ1BAC6dgQAPHcEAFd3BACGdwQArXcEALB3BACzdwQADngEADR5BACUeQQAynoEAO96BAANewQAM3sEAHR7BAChewQAvHsEAL97BADCewQAxXsEAMh7BADLewQAznsEANF7BADUewQA13sEACB8BABKfAQATXwEAGt8BABufAQAo3wEAKZ8BADPfAQA0nwEAPx8BAD/fAQAAn0EAAV9BAAIfQQAC30EAA59BAARfQQAFH0EALp9BAC9fQQAwH0EAMN9BADGfQQAyX0EAPl9BAD8fQQA/30EAAJ+BAAFfgQACH4EAAt+BAAOfgQAEX4EABR+BAAXfgQAGn4EAB1+BAAgfgQAI34EACZ+BAApfgQALH4EAC9+BAAyfgQANX4EALJ+BAC1fgQAz34EAPJ+BAD1fgQAvX8EAMB/BADDfwQAxn8EAMl/BADMfwQAz38EANJ/BADVfwQA2H8EANt/BADefwQA4X8EAOR/BADnfwQA6n8EAO1/BADwfwQAUoAEAFWABAAYgQQApoEEAKmBBACsgQQAr4EEALKBBADugQQAGIIEAEeCBABnggQAnYIEALKCBADKggQAD4MEADqDBAB2gwQAsIMEAEyEBABPhAQAUoQEAFWEBABYhAQAW4QEAF6EBABhhAQAZIQEAGeEBABqhAQAjIQEANyEBADfhAQA64UEAO6FBADxhQQAIIYEAL6GBABahwQAPYgEAHuIBACbiQQAHYoEAJ2KBACHiwQA14sEAOyLBAAUjAQAN40EALGNBAA0jgQAWY4EAJKOBAC7jgQAfY8EAMmPBAAUkAQAKJAEADiQBABfkAQAk5AEALCQBADLkAQA55AEADaRBACCkQQAtpEEAOGRBADvkQQAEJIEALeSBAAqkwQAa5MEAIiTBADDkwQA4pMEAAuUBAA6lAQAaZQEAKCUBADZlAQAAZUEAFeVBADllQQAPZYEAD6WBACLlgQA6JYEADCXBACOlwQA8pcEAFKYBABimAQAZZgEAJGYBAC2mAQA15gEAPSYBAAYmQQAaJkEAH6ZBACimQQAapoEAK6aBAAdmwQAR5sEAF2bBACUmwQAuZsEAOebBAAonAQAXJwEAL+cBAADnQQAPp0EAG2dBADmnQQAKp4EAIaeBADlngQACp8EAC2fBABLnwQAZZ8EAGifBACwnwQA+Z8EACygBABKoAQAcaAEAI+gBACyoAQAtaAEAPKgBAAmoQQAKaEEACyhBAAvoQQAMqEEADWhBAA4oQQAO6EEAD6hBAC6oQQA9aEEAFaiBACLogQAx6IEAC+jBAC7owQANaQEAJukBADEpAQA/qQEACqlBABXpQQAiqUEAAimBABkpgQApaYEABmnBAClpwQAAqgEAIuoBACoqAQA76gEAEKpBACWqQQAz6kEADOqBAAGqwQALasEAG6rBACnqwQA1asEADSsBABlrAQAyawEAPGsBAASrQQANa0EAMOtBAD7rQQAq64EACevBACxrwQAVbAEANawBABJsQQAw7EEAPixBABrsgQAgLIEAJyyBADqsgQAPLMEAG+zBACTswQAt7MEAN6zBADhswQAWLQEAKG0BAC6tAQA2bQEAPu0BAAWtQQASrUEAAG2BABBtgQARLYEAGO2BACbtgQAq7YEALu2BAD3tgQALLcEAGO3BACutwQA87cEAGS4BACJuAQAwLgEADu5BABVuQQAkLkEAMi5BAABugQAVLoEAJ+6BAD8ugQAYrsEAJy7BADbuwQAF7wEAI+8BAAEvQQATr0EALa9BAANvgQAfr4EALW+BADsvgQAI78EAGu/BADXvwQAVsAEAMHABAAswQQAlMEEAA7CBAB+wgQA38IEACzDBAB/wwQAvsMEAA7EBABuxAQAtMQEANvEBABMxQQAhMUEAKLFBABIxgQAgcYEAM3GBAAXxwQAV8cEAInHBADNxwQAKMgEAJXIBACYyAQAysgEAALJBABeyQQAsckEAOjJBAASygQASsoEAG7KBAB9ygQA4coEAA3LBACCywQAnssEALrLBADPywQAD8wEAF3MBACdzAQA68wEAAzNBABEzQQAec0EAI/NBACkzQQAzM0EAPTNBAAkzgQAWs4EAKzOBADzzgQAg88EAK/QBAAC0QQAidEEAMnRBAA20gQAnNIEADzTBACy0wQAMtQEAMLUBADz1AQAQtUEAJrVBAAo1gQAltYEAOrWBABF1wQAX9cEAITXBACg1wQAttcEABfYBAAx2AQAWtgEAHfYBACs2AQAMtkEAHrZBACg2QQA09kEABPaBAAp2gQAl9oEANLaBAAX2wQATNsEALnbBADU2wQA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JWxkLiBQb3XFvmlqdGUgJ215c3FsZCAtLXRocmVhZF9zdGFjaz0jJyBrIHphZMOhbsOtIHbEm3TFocOtaG8gesOhc29ibsOta3UAViBPVVRFUiBKT0lOIGJ5bCBuYWxlemVuIGvFmcOtxb5vdsO9IG9ka2F6LiBQcm92xJvFmXRlIE9OIHBvZG3DrW5reQBUYWJsZSBoYW5kbGVyIGRvZXNuJ3Qgc3VwcG9ydCBOVUxMIGluIGdpdmVuIGluZGV4LiBQbGVhc2UgY2hhbmdlIGNvbHVtbiAnJS0uMTkycycgdG8gYmUgTk9UIE5VTEwgb3IgdXNlIGFub3RoZXIgaGFuZGxlcgBOZW1vaHUgbmHEjcOtc3QgZnVua2NpICclLS4xOTJzJwBOZW1vaHUgaW5pY2lhbGl6b3ZhdCBmdW5rY2kgJyUtLjE5MnMnOyAlLS4xOTJzAFBybyBzZMOtbGVub3Uga25paG92bnUgbmVqc291IHBvdm9sZW55IGNlc3R5AEZ1bmtjZSAnJS0uMTkycycgamnFviBleGlzdHVqZQBOZW1vaHUgb3RldsWZw610IHNkw61sZW5vdSBrbmlob3ZudSAnJS0uMTkycycgKGVycm5vOiAlZCAlLS4xOTJzKQBOZW1vaHUgbmFqw610IGZ1bmtjaSAnJS0uMTI4cycgdiBrbmlob3ZuxJsARnVua2NlICclLS4xOTJzJyBuZW7DrSBkZWZpbm92w6FuYQBTdHJvaiAnJS0uMjU1cycgamUgemFibG9rb3bDoW4ga3bFr2xpIG1ub2hhIGNoeWLDoW0gcMWZaSBwxZlpcG9qb3bDoW7DrS4gT2RibG9rdWpldGUgcG91xb5pdMOtbSAnbXlzcWxhZG1pbiBmbHVzaC1ob3N0cycAU3Ryb2ogJyUtLjI1NXMnIG5lbcOhIHBvdm9sZW5vIHNlIGsgdG9tdXRvIE15U1FMIHNlcnZlcnUgcMWZaXBvaml0AFBvdcW+w612w6F0ZSBNeVNRTCBqYWtvIGFub255bW7DrSB1xb5pdmF0ZWwgYSBhbm9ueW1uw60gdcW+aXZhdGVsw6kgbmVtYWrDrSBwb3ZvbGVubyBtxJtuaXQgaGVzbGEATmEgem3Em251IGhlc2VsIG9zdGF0bsOtbSBtdXPDrXRlIG3DrXQgcHLDoXZvIHByb3bDqXN0IHVwZGF0ZSB0YWJ1bGVrIHYgZGF0YWLDoXppIG15c3FsAFYgdGFidWxjZSB1c2VyIG5lbsOtIMW+w6FkbsO9IG9kcG92w61kYWrDrWPDrSDFmcOhZGVrAE5hbGV6ZW7DvWNoIMWZw6Fka8WvOiAlbGQgIFptxJtuxJtubzogJWxkICBWYXJvdsOhbsOtOiAlbGQATmVtb2h1IHZ5dHZvxZlpdCBub3bDvSB0aHJlYWQgKGVycm5vICVkKS4gUG9rdWQgamUgamXFoXTEmyBuxJtqYWvDoSB2b2xuw6EgcGFtxJvFpSwgcG9kw612ZWp0ZSBzZSBkbyBtYW51w6FsdSBuYSDEjcOhc3QgbyBjaHliw6FjaCBzcGVjaWZpY2vDvWNoIHBybyBqZWRub3RsaXbDqSBvcGVyYcSNbsOtIHN5c3TDqW15AFBvxI1ldCBzbG91cGPFryBuZW9kcG92w61kw6EgcG/EjXR1IGhvZG5vdCBuYSDFmcOhZGt1ICVsZABOZW1vaHUgem5vdnVvdGV2xZnDrXQgdGFidWxrdTogJyUtLjE5MnMATmVwbGF0bsOpIHXFvml0w60gaG9kbm90eSBOVUxMAFJlZ3Vsw6FybsOtIHbDvXJheiB2csOhdGlsIGNoeWJ1ICclLS42NHMnAFBva3VkIG5lbsOtIMW+w6FkbsOhIEdST1VQIEJZIGtsYXV6dWxlLCBuZW7DrSBkb3ZvbGVubyBzb3XEjWFzbsOpIHBvdcW+aXTDrSBHUk9VUCBwb2xvxb5layAoTUlOKCksTUFYKCksQ09VTlQoKS4uLikgcyBuZSBHUk9VUCBwb2xvxb5rYW1pAE5lZXhpc3R1amUgb2Rwb3bDrWRhasOtY8OtIGdyYW50IHBybyB1xb5pdmF0ZWxlICclLS40OHMnIG5hIHN0cm9qaSAnJS0uMjU1cycAJS0uMTI4cyBwxZnDrWtheiBuZXDFmcOtc3R1cG7DvSBwcm8gdcW+aXZhdGVsZTogJyUtLjQ4cydAJyUtLjY0cycgcHJvIHRhYnVsa3UgJyUtLjY0cycAJS0uMTZzIHDFmcOta2F6IG5lcMWZw61zdHVwbsO9IHBybyB1xb5pdmF0ZWxlOiAnJS0uNDhzJ0AnJS0uNjRzJyBwcm8gc2xvdXBlYyAnJS0uMTkycycgdiB0YWJ1bGNlICclLS4xOTJzJwBOZXBsYXRuw70gcMWZw61rYXogR1JBTlQvUkVWT0tFLiBQcm9zw61tLCBwxZllxI10xJt0ZSBzaSB2IG1hbnXDoWx1LCBqYWvDoSBwcml2aWxlZ2lhIGplIG1vxb5uw6kgcG91xb7DrXQuAEFyZ3VtZW50IHDFmcOta2F6dSBHUkFOVCB1xb5pdmF0ZWwgbmVibyBzdHJvaiBqZSBwxZnDrWxpxaEgZGxvdWjDvQBUYWJ1bGthICclLS4xOTJzLiUtLjE5MnMnIG5lZXhpc3R1amUATmVleGlzdHVqZSBvZHBvdsOtZGFqw61jw60gZ3JhbnQgcHJvIHXFvml2YXRlbGUgJyUtLjQ4cycgbmEgc3Ryb2ppICclLS4yNTVzJyBwcm8gdGFidWxrdSAnJS0uMTkycycAUG91xb5pdMO9IHDFmcOta2F6IG5lbsOtIHYgdMOpdG8gdmVyemkgTXlTUUwgcG92b2xlbgBWYcWhZSBzeW50YXhlIGplIG7Em2pha8OhIGRpdm7DoQBEZWxheWVkIGluc2VydCB0aHJlYWQgY291bGRuJ3QgZ2V0IHJlcXVlc3RlZCBsb2NrIGZvciB0YWJsZSAlLS4xOTJzAFRvbyBtYW55IGRlbGF5ZWQgdGhyZWFkcyBpbiB1c2UAWnJ1xaFlbm8gc3BvamVuw60gJWxkIGRvIGRhdGFiw6F6ZTogJyUtLjE5MnMnIHXFvml2YXRlbDogJyUtLjQ4cycgKCUtLjY0cykAWmppxaF0xJtuIHDFmcOtY2hvesOtIHBhY2tldCBkZWzFocOtIG5lxb4gJ21heF9hbGxvd2VkX3BhY2tldCcAWmppxaF0xJtuYSBjaHliYSBwxZlpIMSNdGVuw60geiByb3VyeSBzcG9qZW7DrQBaamnFoXTEm25hIGNoeWJhIGZjbnRsKCkAUMWZw61jaG96w60gcGFja2V0eSB2IGNoeWJuw6ltIHBvxZlhZMOtAE5lbW9odSByb3prb21wcmltb3ZhdCBrb211bmlrYcSNbsOtIHBhY2tldABaamnFoXTEm25hIGNoeWJhIHDFmWkgxI10ZW7DrSBrb211bmlrYcSNbsOtaG8gcGFja2V0dQBaamnFoXTEm24gdGltZW91dCBwxZlpIMSNdGVuw60ga29tdW5pa2HEjW7DrWhvIHBhY2tldHUAWmppxaF0xJtuYSBjaHliYSBwxZlpIHrDoXBpc3Uga29tdW5pa2HEjW7DrWhvIHBhY2tldHUAWmppxaF0xJtuIHRpbWVvdXQgcMWZaSB6w6FwaXN1IGtvbXVuaWthxI1uw61obyBwYWNrZXR1AFbDvXNsZWRuw70gxZlldMSbemVjIGplIGRlbMWhw60gbmXFviAnbWF4X2FsbG93ZWRfcGFja2V0JwBUeXAgcG91xb5pdMOpIHRhYnVsa3kgbmVwb2Rwb3J1amUgQkxPQi9URVhUIHNsb3VwY2UAVHlwIHBvdcW+aXTDqSB0YWJ1bGt5IG5lcG9kcG9ydWplIEFVVE9fSU5DUkVNRU5UIHNsb3VwY2UASU5TRVJUIERFTEFZRUQgY2FuJ3QgYmUgdXNlZCB3aXRoIHRhYmxlICclLS4xOTJzJyBiZWNhdXNlIGl0IGlzIGxvY2tlZCB3aXRoIExPQ0sgVEFCTEVTAE5lc3Byw6F2bsOpIGptw6lubyBzbG91cGNlICclLS4xMDBzJwBIYW5kbGVyIHBvdcW+aXTDqSB0YWJ1bGt5IG5ldW3DrSBpbmRleG92YXQgc2xvdXBjZSAnJS0uMTkycycAVsWhZWNobnkgdGFidWxreSB2IE1FUkdFIHRhYnVsY2UgbmVqc291IGRlZmlub3bDoW55IHN0ZWpuxJsAS3bFr2xpIHVuaXF1ZSBjb25zdHJhaW50dSBuZW1venUgemFwc2F0IGRvIHRhYnVsa3kgJyUtLjE5MnMnAEJMT0Igc2xvdXBlYyAnJS0uMTkycycgamUgcG91xb5pdCB2ZSBzcGVjaWZpa2FjaSBrbMOtxI1lIGJleiBkw6lsa3kAVsWhZWNobnkgxI3DoXN0aSBwcmltw6FybsOtaG8ga2zDrcSNZSBtdXNlasOtIGLDvXQgTk9UIE5VTEw7IHBva3VkIHBvdMWZZWJ1amV0ZSBOVUxMLCBwb3XFvmlqdGUgVU5JUVVFAFbDvXNsZWRlayBvYnNhaHVqZSB2w61jZSBuZcW+IGplZGVuIMWZw6FkZWsAVGVudG8gdHlwIHRhYnVsa3kgdnnFvmFkdWplIHByaW3DoXJuw60ga2zDrcSNAFRhdG8gdmVyemUgTXlTUUwgbmVuw60gemtvbXBpbG92w6FuYSBzIHBvZHBvcm91IFJBSUQAVXBkYXRlIHRhYnVsa3kgYmV6IFdIRVJFIHMga2zDrcSNZW0gbmVuw60gdiBtw7NkdSBiZXpwZcSNbsO9Y2ggdXBkYXRlIGRvdm9sZW5vLiAlcwBLbMOtxI0gJyUtLjE5MnMnIHYgdGFidWxjZSAnJS0uMTkycycgbmVleGlzdHVqZQBOZW1vaHUgb3RldsWZw610IHRhYnVsa3UASGFuZGxlciB0YWJ1bGt5IG5lcG9kcG9ydWplICVzAFByb3ZlZGVuw60gdG9ob3RvIHDFmcOta2F6dSBuZW7DrSB2IHRyYW5zYWtjaSBkb3ZvbGVubwBDaHliYSAlZCAtICclLS4xOTJzJyBwxZlpIENPTU1JVABDaHliYSAlZCAtICclLS4xOTJzJyBwxZlpIFJPTExCQUNLAENoeWJhICVkIHDFmWkgRkxVU0hfTE9HUwBDaHliYSAlZCBwxZlpIENIRUNLUE9JTlQAU3BvamVuw60gJXUgZG8gZGF0YWLDoXplOiAnJS0uMTkycycgdcW+aXZhdGVsOiAnJS0uNDhzJyBzdHJvajogJyUtLjI1NXMnICglLS42NHMpIGJ5bG8gcMWZZXJ1xaFlbm8ASGFuZGxlciB0YWJ1bGt5IG5lcG9kcG9ydWplIGJpbsOhcm7DrSBkdW1wAEJpbmxvZyBjbG9zZWQsIGNhbm5vdCBSRVNFVCBCSU5BUlkgTE9HUyBBTkQgR1RJRFMAUMWZZWJ1ZG92w6Fuw60gaW5kZXh1IGR1bXBudXTDqSB0YWJ1bGt5ICclLS4xOTJzJyBuZWJ5bG8gw7pzcMSbxaFuw6kAQ2h5YmEgbWFzdGVydTogJyUtLjY0cycAU8OtxaVvdsOhIGNoeWJhIHDFmWkgxI10ZW7DrSB6IG1hc3RlcnUAU8OtxaVvdsOhIGNoeWJhIHDFmWkgesOhcGlzdSBuYSBtYXN0ZXIAxb3DoWRuw70gc2xvdXBlYyBuZW3DoSB2eXR2b8WZZW4gZnVsbHRleHRvdsO9IGluZGV4AE5lbW9odSBwcm92w6lzdCB6YWRhbsO9IHDFmcOta2F6LCBwcm90b8W+ZSBleGlzdHVqw60gYWt0aXZuw60gemFtxI1lbsOpIHRhYnVsa3kgbmVibyBha3Rpdm7DrSB0cmFuc2FrY2UATmV6bsOhbcOhIHN5c3TDqW1vdsOhIHByb23Em25uw6EgJyUtLjY0cycAVGFidWxrYSAnJS0uMTkycycgamUgb3puYcSNZW5hIGpha28gcG9ydcWhZW7DoSBhIG3Em2xhIGJ5IGLDvXQgb3ByYXZlbmEAVGFidWxrYSAnJS0uMTkycycgamUgb3puYcSNZW5hIGpha28gcG9ydcWhZW7DoSBhIHBvc2xlZG7DrSAoYXV0b21hdGlja8OhPykgb3ByYXZhIHNlIG5lemRhxZlpbGEAU29tZSBub24tdHJhbnNhY3Rpb25hbCBjaGFuZ2VkIHRhYmxlcyBjb3VsZG4ndCBiZSByb2xsZWQgYmFjawBNdWx0aS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb24gcmVxdWlyZWQgbW9yZSB0aGFuICdtYXhfYmlubG9nX2NhY2hlX3NpemUnIGJ5dGVzIG9mIHN0b3JhZ2U7IGluY3JlYXNlIHRoaXMgbXlzcWxkIHZhcmlhYmxlIGFuZCB0cnkgYWdhaW4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIGEgcnVubmluZyByZXBsaWNhOyBydW4gU1RPUCBSRVBMSUNBIGZpcnN0AFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIGEgcnVubmluZyByZXBsaWNhOyBjb25maWd1cmUgcmVwbGljYSBhbmQgZG8gU1RBUlQgUkVQTElDQQBUaGUgc2VydmVyIGlzIG5vdCBjb25maWd1cmVkIGFzIHJlcGxpY2E7IGZpeCBpbiBjb25maWcgZmlsZSBvciB3aXRoIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8AQ291bGQgbm90IGluaXRpYWxpemUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmU7IG1vcmUgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBNeVNRTCBlcnJvciBsb2cAQ291bGQgbm90IGNyZWF0ZSByZXBsaWNhIHRocmVhZDsgY2hlY2sgc3lzdGVtIHJlc291cmNlcwBVc2VyICUtLjY0cyBhbHJlYWR5IGhhcyBtb3JlIHRoYW4gJ21heF91c2VyX2Nvbm5lY3Rpb25zJyBhY3RpdmUgY29ubmVjdGlvbnMAWW91IG1heSBvbmx5IHVzZSBjb25zdGFudCBleHByZXNzaW9ucyB3aXRoIFNFVABMb2NrIHdhaXQgdGltZW91dCBleGNlZWRlZDsgdHJ5IHJlc3RhcnRpbmcgdHJhbnNhY3Rpb24AVGhlIHRvdGFsIG51bWJlciBvZiBsb2NrcyBleGNlZWRzIHRoZSBsb2NrIHRhYmxlIHNpemUAVXBkYXRlIGxvY2tzIGNhbm5vdCBiZSBhY3F1aXJlZCBkdXJpbmcgYSBSRUFEIFVOQ09NTUlUVEVEIHRyYW5zYWN0aW9uAERST1AgREFUQUJBU0Ugbm90IGFsbG93ZWQgd2hpbGUgdGhyZWFkIGlzIGhvbGRpbmcgZ2xvYmFsIHJlYWQgbG9jawBDUkVBVEUgREFUQUJBU0Ugbm90IGFsbG93ZWQgd2hpbGUgdGhyZWFkIGlzIGhvbGRpbmcgZ2xvYmFsIHJlYWQgbG9jawBJbmNvcnJlY3QgYXJndW1lbnRzIHRvICVzACclLS40OHMnQCclLS42NHMnIGlzIG5vdCBhbGxvd2VkIHRvIGNyZWF0ZSBuZXcgdXNlcnMASW5jb3JyZWN0IHRhYmxlIGRlZmluaXRpb247IGFsbCBNRVJHRSB0YWJsZXMgbXVzdCBiZSBpbiB0aGUgc2FtZSBkYXRhYmFzZQBEZWFkbG9jayBmb3VuZCB3aGVuIHRyeWluZyB0byBnZXQgbG9jazsgdHJ5IHJlc3RhcnRpbmcgdHJhbnNhY3Rpb24AVGhlIHVzZWQgdGFibGUgdHlwZSBkb2Vzbid0IHN1cHBvcnQgRlVMTFRFWFQgaW5kZXhlcwBDYW5ub3QgYWRkIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQAQ2Fubm90IGFkZCBvciB1cGRhdGUgYSBjaGlsZCByb3c6IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBmYWlscwBDYW5ub3QgZGVsZXRlIG9yIHVwZGF0ZSBhIHBhcmVudCByb3c6IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBmYWlscwBFcnJvciBjb25uZWN0aW5nIHRvIHNvdXJjZTogJS0uMTI4cwBFcnJvciBydW5uaW5nIHF1ZXJ5IG9uIHNvdXJjZTogJS0uMTI4cwBFcnJvciB3aGVuIGV4ZWN1dGluZyBjb21tYW5kICVzOiAlLS4xMjhzAEluY29ycmVjdCB1c2FnZSBvZiAlcyBhbmQgJXMAVGhlIHVzZWQgU0VMRUNUIHN0YXRlbWVudHMgaGF2ZSBhIGRpZmZlcmVudCBudW1iZXIgb2YgY29sdW1ucwBDYW4ndCBleGVjdXRlIHRoZSBxdWVyeSBiZWNhdXNlIHlvdSBoYXZlIGEgY29uZmxpY3RpbmcgcmVhZCBsb2NrAE1peGluZyBvZiB0cmFuc2FjdGlvbmFsIGFuZCBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgaXMgZGlzYWJsZWQAT3B0aW9uICclcycgdXNlZCB0d2ljZSBpbiBzdGF0ZW1lbnQAVXNlciAnJS0uNjRzJyBoYXMgZXhjZWVkZWQgdGhlICclcycgcmVzb3VyY2UgKGN1cnJlbnQgdmFsdWU6ICVsZCkAQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgKGF0IGxlYXN0IG9uZSBvZikgdGhlICUtLjEyOHMgcHJpdmlsZWdlKHMpIGZvciB0aGlzIG9wZXJhdGlvbgBWYXJpYWJsZSAnJS0uNjRzJyBpcyBhIFNFU1NJT04gdmFyaWFibGUgYW5kIGNhbid0IGJlIHVzZWQgd2l0aCBTRVQgR0xPQkFMAFZhcmlhYmxlICclLS42NHMnIGlzIGEgR0xPQkFMIHZhcmlhYmxlIGFuZCBzaG91bGQgYmUgc2V0IHdpdGggU0VUIEdMT0JBTABWYXJpYWJsZSAnJS0uNjRzJyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZhbHVlAFZhcmlhYmxlICclLS42NHMnIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyUtLjIwMHMnAEluY29ycmVjdCBhcmd1bWVudCB0eXBlIHRvIHZhcmlhYmxlICclLS42NHMnAFZhcmlhYmxlICclLS42NHMnIGNhbiBvbmx5IGJlIHNldCwgbm90IHJlYWQASW5jb3JyZWN0IHVzYWdlL3BsYWNlbWVudCBvZiAnJXMnAFRoaXMgdmVyc2lvbiBvZiBNeVNRTCBkb2Vzbid0IHlldCBzdXBwb3J0ICclcycAR290IGZhdGFsIGVycm9yICVkIGZyb20gc291cmNlIHdoZW4gcmVhZGluZyBkYXRhIGZyb20gYmluYXJ5IGxvZzogJyUtLjUxMnMnAFJlcGxpY2EgU1FMIHRocmVhZCBpZ25vcmVkIHRoZSBxdWVyeSBiZWNhdXNlIG9mIHJlcGxpY2F0ZS0qLXRhYmxlIHJ1bGVzAFZhcmlhYmxlICclLS4xOTJzJyBpcyBhICVzIHZhcmlhYmxlAEluY29ycmVjdCBmb3JlaWduIGtleSBkZWZpbml0aW9uIGZvciAnJS0uMTkycyc6ICVzAEtleSByZWZlcmVuY2UgYW5kIHRhYmxlIHJlZmVyZW5jZSBkb24ndCBtYXRjaABPcGVyYW5kIHNob3VsZCBjb250YWluICVkIGNvbHVtbihzKQBTdWJxdWVyeSByZXR1cm5zIG1vcmUgdGhhbiAxIHJvdwBVbmtub3duIHByZXBhcmVkIHN0YXRlbWVudCBoYW5kbGVyICglLipzKSBnaXZlbiB0byAlcwBIZWxwIGRhdGFiYXNlIGlzIGNvcnJ1cHQgb3IgZG9lcyBub3QgZXhpc3QAQ3ljbGljIHJlZmVyZW5jZSBvbiBzdWJxdWVyaWVzAENvbnZlcnRpbmcgY29sdW1uICclcycgZnJvbSAlcyB0byAlcwBSZWZlcmVuY2UgJyUtLjY0cycgbm90IHN1cHBvcnRlZCAoJXMpAEV2ZXJ5IGRlcml2ZWQgdGFibGUgbXVzdCBoYXZlIGl0cyBvd24gYWxpYXMAU2VsZWN0ICV1IHdhcyByZWR1Y2VkIGR1cmluZyBvcHRpbWl6YXRpb24AVGFibGUgJyUtLjE5MnMnIGZyb20gb25lIG9mIHRoZSBTRUxFQ1RzIGNhbm5vdCBiZSB1c2VkIGluICUtLjMycwBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCByZXF1ZXN0ZWQgYnkgc2VydmVyOyBjb25zaWRlciB1cGdyYWRpbmcgTXlTUUwgY2xpZW50AEFsbCBwYXJ0cyBvZiBhIFNQQVRJQUwgaW5kZXggbXVzdCBiZSBOT1QgTlVMTABDT0xMQVRJT04gJyVzJyBpcyBub3QgdmFsaWQgZm9yIENIQVJBQ1RFUiBTRVQgJyVzJwBSZXBsaWNhIGlzIGFscmVhZHkgcnVubmluZwBSZXBsaWNhIGFscmVhZHkgaGFzIGJlZW4gc3RvcHBlZABVbmNvbXByZXNzZWQgZGF0YSBzaXplIHRvbyBsYXJnZTsgdGhlIG1heGltdW0gc2l6ZSBpcyAlZCAocHJvYmFibHksIGxlbmd0aCBvZiB1bmNvbXByZXNzZWQgZGF0YSB3YXMgY29ycnVwdGVkKQBaTElCOiBOb3QgZW5vdWdoIG1lbW9yeQBaTElCOiBOb3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIgKHByb2JhYmx5LCBsZW5ndGggb2YgdW5jb21wcmVzc2VkIGRhdGEgd2FzIGNvcnJ1cHRlZCkAWkxJQjogSW5wdXQgZGF0YSBjb3JydXB0ZWQAUm93ICV1IHdhcyBjdXQgYnkgR1JPVVBfQ09OQ0FUKCkAUm93ICVsZCBkb2Vzbid0IGNvbnRhaW4gZGF0YSBmb3IgYWxsIGNvbHVtbnMAUm93ICVsZCB3YXMgdHJ1bmNhdGVkOyBpdCBjb250YWluZWQgbW9yZSBkYXRhIHRoYW4gdGhlcmUgd2VyZSBpbnB1dCBjb2x1bW5zAENvbHVtbiBzZXQgdG8gZGVmYXVsdCB2YWx1ZTsgTlVMTCBzdXBwbGllZCB0byBOT1QgTlVMTCBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAE91dCBvZiByYW5nZSB2YWx1ZSBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABEYXRhIHRydW5jYXRlZCBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABVc2luZyBzdG9yYWdlIGVuZ2luZSAlcyBmb3IgdGFibGUgJyVzJwBJbGxlZ2FsIG1peCBvZiBjb2xsYXRpb25zICglcywlcykgYW5kICglcywlcykgZm9yIG9wZXJhdGlvbiAnJXMnAENhbm5vdCBkcm9wIG9uZSBvciBtb3JlIG9mIHRoZSByZXF1ZXN0ZWQgdXNlcnMAQ2FuJ3QgcmV2b2tlIGFsbCBwcml2aWxlZ2VzIGZvciBvbmUgb3IgbW9yZSBvZiB0aGUgcmVxdWVzdGVkIHVzZXJzAElsbGVnYWwgbWl4IG9mIGNvbGxhdGlvbnMgKCVzLCVzKSwgKCVzLCVzKSwgKCVzLCVzKSBmb3Igb3BlcmF0aW9uICclcycASWxsZWdhbCBtaXggb2YgY29sbGF0aW9ucyBmb3Igb3BlcmF0aW9uICclcycAVmFyaWFibGUgJyUtLjY0cycgaXMgbm90IGEgdmFyaWFibGUgY29tcG9uZW50IChjYW4ndCBiZSB1c2VkIGFzIFhYWFgudmFyaWFibGVfbmFtZSkAVW5rbm93biBjb2xsYXRpb246ICclLS42NHMnAFNTTCBwYXJhbWV0ZXJzIGluIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgYXJlIGlnbm9yZWQgYmVjYXVzZSB0aGlzIE15U1FMIHJlcGxpY2Egd2FzIGNvbXBpbGVkIHdpdGhvdXQgU1NMIHN1cHBvcnQ7IHRoZXkgY2FuIGJlIHVzZWQgbGF0ZXIgaWYgTXlTUUwgcmVwbGljYSB3aXRoIFNTTCBpcyBzdGFydGVkAFNlcnZlciBpcyBydW5uaW5nIGluIC0tc2VjdXJlLWF1dGggbW9kZSwgYnV0ICclcydAJyVzJyBoYXMgYSBwYXNzd29yZCBpbiB0aGUgb2xkIGZvcm1hdDsgcGxlYXNlIGNoYW5nZSB0aGUgcGFzc3dvcmQgdG8gdGhlIG5ldyBmb3JtYXQARmllbGQgb3IgcmVmZXJlbmNlICclLS4xOTJzJXMlLS4xOTJzJXMlLS4xOTJzJyBvZiBTRUxFQ1QgIyVkIHdhcyByZXNvbHZlZCBpbiBTRUxFQ1QgIyVkAEluY29ycmVjdCBwYXJhbWV0ZXIgb3IgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBmb3IgU1RBUlQgUkVQTElDQSBVTlRJTABJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgLS1za2lwLXJlcGxpY2Etc3RhcnQgd2hlbiBkb2luZyBzdGVwLWJ5LXN0ZXAgcmVwbGljYXRpb24gd2l0aCBTVEFSVCBSRVBMSUNBIFVOVElMOyBvdGhlcndpc2UsIHlvdSB3aWxsIGdldCBwcm9ibGVtcyBpZiB5b3UgZ2V0IGFuIHVuZXhwZWN0ZWQgcmVwbGljYSdzIG15c3FsZCByZXN0YXJ0AFNRTCB0aHJlYWQgaXMgbm90IHRvIGJlIHN0YXJ0ZWQgc28gVU5USUwgb3B0aW9ucyBhcmUgaWdub3JlZABJbmNvcnJlY3QgaW5kZXggbmFtZSAnJS0uMTAwcycASW5jb3JyZWN0IGNhdGFsb2cgbmFtZSAnJS0uMTAwcycAUXVlcnkgY2FjaGUgZmFpbGVkIHRvIHNldCBzaXplICVsdTsgbmV3IHF1ZXJ5IGNhY2hlIHNpemUgaXMgJWx1AENvbHVtbiAnJS0uMTkycycgY2Fubm90IGJlIHBhcnQgb2YgRlVMTFRFWFQgaW5kZXgAVW5rbm93biBrZXkgY2FjaGUgJyUtLjEwMHMnAE15U1FMIGlzIHN0YXJ0ZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlOyB5b3UgbXVzdCByZXN0YXJ0IGl0IHdpdGhvdXQgdGhpcyBzd2l0Y2ggZm9yIHRoaXMgZ3JhbnQgdG8gd29yawBVbmtub3duIHN0b3JhZ2UgZW5naW5lICclcycAJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkAFRoZSB0YXJnZXQgdGFibGUgJS0uMTAwcyBvZiB0aGUgJXMgaXMgbm90IHVwZGF0YWJsZQBUaGUgJyVzJyBmZWF0dXJlIGlzIGRpc2FibGVkOyB5b3UgbmVlZCBNeVNRTCBidWlsdCB3aXRoICclcycgdG8gaGF2ZSBpdCB3b3JraW5nAFRoZSBNeVNRTCBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIHRoZSAlcyBvcHRpb24gc28gaXQgY2Fubm90IGV4ZWN1dGUgdGhpcyBzdGF0ZW1lbnQAQ29sdW1uICclLS4xMDBzJyBoYXMgZHVwbGljYXRlZCB2YWx1ZSAnJS0uNjRzJyBpbiAlcwBUcnVuY2F0ZWQgaW5jb3JyZWN0ICUtLjY0cyB2YWx1ZTogJyUtLjEyOHMnAEluY29ycmVjdCB0YWJsZSBkZWZpbml0aW9uOyB0aGVyZSBjYW4gYmUgb25seSBvbmUgVElNRVNUQU1QIGNvbHVtbiB3aXRoIENVUlJFTlRfVElNRVNUQU1QIGluIERFRkFVTFQgb3IgT04gVVBEQVRFIGNsYXVzZQBJbnZhbGlkIE9OIFVQREFURSBjbGF1c2UgZm9yICclLS4xOTJzJyBjb2x1bW4AVGhpcyBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHByZXBhcmVkIHN0YXRlbWVudCBwcm90b2NvbCB5ZXQAR290IGVycm9yICVkICclLS4xMDBzJyBmcm9tICVzAEdvdCB0ZW1wb3JhcnkgZXJyb3IgJWQgJyUtLjEwMHMnIGZyb20gJXMAVW5rbm93biBvciBpbmNvcnJlY3QgdGltZSB6b25lOiAnJS0uNjRzJwBJbnZhbGlkIFRJTUVTVEFNUCB2YWx1ZSBpbiBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAEludmFsaWQgJXMgY2hhcmFjdGVyIHN0cmluZzogJyUuNjRzJwBSZXN1bHQgb2YgJXMoKSB3YXMgbGFyZ2VyIHRoYW4gbWF4X2FsbG93ZWRfcGFja2V0ICglbGQpIC0gdHJ1bmNhdGVkAENvbmZsaWN0aW5nIGRlY2xhcmF0aW9uczogJyVzJXMnIGFuZCAnJXMlcycAQ2FuJ3QgY3JlYXRlIGEgJXMgZnJvbSB3aXRoaW4gYW5vdGhlciBzdG9yZWQgcm91dGluZQAlcyAlcyBhbHJlYWR5IGV4aXN0cwAlcyAlcyBkb2VzIG5vdCBleGlzdABGYWlsZWQgdG8gRFJPUCAlcyAlcwBGYWlsZWQgdG8gQ1JFQVRFICVzICVzACVzIHdpdGggbm8gbWF0Y2hpbmcgbGFiZWw6ICVzAFJlZGVmaW5pbmcgbGFiZWwgJXMARW5kLWxhYmVsICVzIHdpdGhvdXQgbWF0Y2gAUmVmZXJyaW5nIHRvIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgJXMAUFJPQ0VEVVJFICVzIGNhbid0IHJldHVybiBhIHJlc3VsdCBzZXQgaW4gdGhlIGdpdmVuIGNvbnRleHQAUkVUVVJOIGlzIG9ubHkgYWxsb3dlZCBpbiBhIEZVTkNUSU9OACVzIGlzIG5vdCBhbGxvd2VkIGluIHN0b3JlZCBwcm9jZWR1cmVzAFRoZSB1cGRhdGUgbG9nIGlzIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIGJ5IHRoZSBiaW5hcnkgbG9nOyBTRVQgU1FMX0xPR19VUERBVEUgaGFzIGJlZW4gaWdub3JlZC4AVGhlIHVwZGF0ZSBsb2cgaXMgZGVwcmVjYXRlZCBhbmQgcmVwbGFjZWQgYnkgdGhlIGJpbmFyeSBsb2c7IFNFVCBTUUxfTE9HX1VQREFURSBoYXMgYmVlbiB0cmFuc2xhdGVkIHRvIFNFVCBTUUxfTE9HX0JJTi4AUXVlcnkgZXhlY3V0aW9uIHdhcyBpbnRlcnJ1cHRlZABJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgJXMgJXM7IGV4cGVjdGVkICV1LCBnb3QgJXUAVW5kZWZpbmVkIENPTkRJVElPTjogJXMATm8gUkVUVVJOIGZvdW5kIGluIEZVTkNUSU9OICVzAEZVTkNUSU9OICVzIGVuZGVkIHdpdGhvdXQgUkVUVVJOAEN1cnNvciBzdGF0ZW1lbnQgbXVzdCBiZSBhIFNFTEVDVABDdXJzb3IgU0VMRUNUIG11c3Qgbm90IGhhdmUgSU5UTwBVbmRlZmluZWQgQ1VSU09SOiAlcwBDdXJzb3IgaXMgYWxyZWFkeSBvcGVuAEN1cnNvciBpcyBub3Qgb3BlbgBVbmRlY2xhcmVkIHZhcmlhYmxlOiAlcwBJbmNvcnJlY3QgbnVtYmVyIG9mIEZFVENIIHZhcmlhYmxlcwBObyBkYXRhIC0gemVybyByb3dzIGZldGNoZWQsIHNlbGVjdGVkLCBvciBwcm9jZXNzZWQARHVwbGljYXRlIHBhcmFtZXRlcjogJXMARHVwbGljYXRlIHZhcmlhYmxlOiAlcwBEdXBsaWNhdGUgY29uZGl0aW9uOiAlcwBEdXBsaWNhdGUgY3Vyc29yOiAlcwBGYWlsZWQgdG8gQUxURVIgJXMgJXMAU3VicXVlcnkgdmFsdWUgbm90IHN1cHBvcnRlZAAlcyBpcyBub3QgYWxsb3dlZCBpbiBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlcgBWYXJpYWJsZSBvciBjb25kaXRpb24gZGVjbGFyYXRpb24gYWZ0ZXIgY3Vyc29yIG9yIGhhbmRsZXIgZGVjbGFyYXRpb24AQ3Vyc29yIGRlY2xhcmF0aW9uIGFmdGVyIGhhbmRsZXIgZGVjbGFyYXRpb24AQ2FzZSBub3QgZm91bmQgZm9yIENBU0Ugc3RhdGVtZW50AENvbmZpZ3VyYXRpb24gZmlsZSAnJS0uMTkycycgaXMgdG9vIGJpZwBNYWxmb3JtZWQgZmlsZSB0eXBlIGhlYWRlciBpbiBmaWxlICclLS4xOTJzJwBVbmV4cGVjdGVkIGVuZCBvZiBmaWxlIHdoaWxlIHBhcnNpbmcgY29tbWVudCAnJS0uMjAwcycARXJyb3Igd2hpbGUgcGFyc2luZyBwYXJhbWV0ZXIgJyUtLjE5MnMnIChsaW5lOiAnJS0uMTkycycpAFVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgd2hpbGUgc2tpcHBpbmcgdW5rbm93biBwYXJhbWV0ZXIgJyUtLjE5MnMnAEVYUExBSU4vU0hPVyBjYW4gbm90IGJlIGlzc3VlZDsgbGFja2luZyBwcml2aWxlZ2VzIGZvciB1bmRlcmx5aW5nIHRhYmxlAEZpbGUgJyUtLjE5MnMnIGhhcyB1bmtub3duIHR5cGUgJyUtLjY0cycgaW4gaXRzIGhlYWRlcgAnJS0uMTkycy4lLS4xOTJzJyBpcyBub3QgJXMAQ29sdW1uICclLS4xOTJzJyBpcyBub3QgdXBkYXRhYmxlAFZpZXcncyBTRUxFQ1QgY29udGFpbnMgYSBzdWJxdWVyeSBpbiB0aGUgRlJPTSBjbGF1c2UAVmlldydzIFNFTEVDVCBjb250YWlucyBhICclcycgY2xhdXNlAFZpZXcncyBTRUxFQ1QgY29udGFpbnMgYSB2YXJpYWJsZSBvciBwYXJhbWV0ZXIAVmlldydzIFNFTEVDVCByZWZlcnMgdG8gYSB0ZW1wb3JhcnkgdGFibGUgJyUtLjE5MnMnAEluIGRlZmluaXRpb24gb2YgdmlldywgZGVyaXZlZCB0YWJsZSBvciBjb21tb24gdGFibGUgZXhwcmVzc2lvbiwgU0VMRUNUIGxpc3QgYW5kIGNvbHVtbiBuYW1lcyBsaXN0IGhhdmUgZGlmZmVyZW50IGNvbHVtbiBjb3VudHMAVmlldyBtZXJnZSBhbGdvcml0aG0gY2FuJ3QgYmUgdXNlZCBoZXJlIGZvciBub3cgKGFzc3VtZWQgdW5kZWZpbmVkIGFsZ29yaXRobSkAVmlldyBiZWluZyB1cGRhdGVkIGRvZXMgbm90IGhhdmUgY29tcGxldGUga2V5IG9mIHVuZGVybHlpbmcgdGFibGUgaW4gaXQAVmlldyAnJS0uMTkycy4lLS4xOTJzJyByZWZlcmVuY2VzIGludmFsaWQgdGFibGUocykgb3IgY29sdW1uKHMpIG9yIGZ1bmN0aW9uKHMpIG9yIGRlZmluZXIvaW52b2tlciBvZiB2aWV3IGxhY2sgcmlnaHRzIHRvIHVzZSB0aGVtAENhbid0IGRyb3Agb3IgYWx0ZXIgYSAlcyBmcm9tIHdpdGhpbiBhbm90aGVyIHN0b3JlZCByb3V0aW5lAEdPVE8gaXMgbm90IGFsbG93ZWQgaW4gYSBzdG9yZWQgcHJvY2VkdXJlIGhhbmRsZXIAVHJpZ2dlciBhbHJlYWR5IGV4aXN0cwBUcmlnZ2VyIGRvZXMgbm90IGV4aXN0AFRyaWdnZXIncyAnJS0uMTkycycgaXMgdmlldyBvciB0ZW1wb3JhcnkgdGFibGUAVXBkYXRpbmcgb2YgJXMgcm93IGlzIG5vdCBhbGxvd2VkIGluICVzdHJpZ2dlcgBUaGVyZSBpcyBubyAlcyByb3cgaW4gJXMgdHJpZ2dlcgBGaWVsZCAnJS0uMTkycycgZG9lc24ndCBoYXZlIGEgZGVmYXVsdCB2YWx1ZQBEaXZpc2lvbiBieSAwAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJyBmb3IgY29sdW1uICclLjE5MnMnIGF0IHJvdyAlbGQASWxsZWdhbCAlcyAnJS0uMTkycycgdmFsdWUgZm91bmQgZHVyaW5nIHBhcnNpbmcAQ0hFQ0sgT1BUSU9OIG9uIG5vbi11cGRhdGFibGUgdmlldyAnJS0uMTkycy4lLS4xOTJzJwBDSEVDSyBPUFRJT04gZmFpbGVkICclLS4xOTJzLiUtLjE5MnMnACUtLjE2cyBjb21tYW5kIGRlbmllZCB0byB1c2VyICclLS40OHMnQCclLS42NHMnIGZvciByb3V0aW5lICclLS4xOTJzJwBGYWlsZWQgcHVyZ2luZyBvbGQgcmVsYXkgbG9nczogJXMAUGFzc3dvcmQgaGFzaCBzaG91bGQgYmUgYSAlZC1kaWdpdCBoZXhhZGVjaW1hbCBudW1iZXIAVGFyZ2V0IGxvZyBub3QgZm91bmQgaW4gYmlubG9nIGluZGV4AEkvTyBlcnJvciByZWFkaW5nIGxvZyBpbmRleCBmaWxlAFNlcnZlciBjb25maWd1cmF0aW9uIGRvZXMgbm90IHBlcm1pdCBiaW5sb2cgcHVyZ2UARmFpbGVkIG9uIGZzZWVrKCkARmF0YWwgZXJyb3IgZHVyaW5nIGxvZyBwdXJnZQBBIHB1cmdlYWJsZSBsb2cgaXMgaW4gdXNlLCB3aWxsIG5vdCBwdXJnZQBVbmtub3duIGVycm9yIGR1cmluZyBsb2cgcHVyZ2UARmFpbGVkIGluaXRpYWxpemluZyByZWxheSBsb2cgcG9zaXRpb246ICVzAFlvdSBhcmUgbm90IHVzaW5nIGJpbmFyeSBsb2dnaW5nAFRoZSAnJS0uNjRzJyBzeW50YXggaXMgcmVzZXJ2ZWQgZm9yIHB1cnBvc2VzIGludGVybmFsIHRvIHRoZSBNeVNRTCBzZXJ2ZXIAV1NBU3RhcnR1cCBGYWlsZWQAQ2FuJ3QgaGFuZGxlIHByb2NlZHVyZXMgd2l0aCBkaWZmZXJlbnQgZ3JvdXBzIHlldABTZWxlY3QgbXVzdCBoYXZlIGEgZ3JvdXAgd2l0aCB0aGlzIHByb2NlZHVyZQBDYW4ndCB1c2UgT1JERVIgY2xhdXNlIHdpdGggdGhpcyBwcm9jZWR1cmUAQmluYXJ5IGxvZ2dpbmcgYW5kIHJlcGxpY2F0aW9uIGZvcmJpZCBjaGFuZ2luZyB0aGUgZ2xvYmFsIHNlcnZlciAlcwBDYW4ndCBtYXAgZmlsZTogJS0uMjAwcywgZXJybm86ICVkAFdyb25nIG1hZ2ljIGluICUtLjY0cwBQcmVwYXJlZCBzdGF0ZW1lbnQgY29udGFpbnMgdG9vIG1hbnkgcGxhY2Vob2xkZXJzAEtleSBwYXJ0ICclLS4xOTJzJyBsZW5ndGggY2Fubm90IGJlIDAAVmlldyB0ZXh0IGNoZWNrc3VtIGZhaWxlZABDYW4gbm90IG1vZGlmeSBtb3JlIHRoYW4gb25lIGJhc2UgdGFibGUgdGhyb3VnaCBhIGpvaW4gdmlldyAnJS0uMTkycy4lLS4xOTJzJwBDYW4gbm90IGluc2VydCBpbnRvIGpvaW4gdmlldyAnJS0uMTkycy4lLS4xOTJzJyB3aXRob3V0IGZpZWxkcyBsaXN0AENhbiBub3QgZGVsZXRlIGZyb20gam9pbiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnAE9wZXJhdGlvbiAlcyBmYWlsZWQgZm9yICUuMjU2cwBYQUVSX05PVEE6IFVua25vd24gWElEAFhBRVJfSU5WQUw6IEludmFsaWQgYXJndW1lbnRzIChvciB1bnN1cHBvcnRlZCBjb21tYW5kKQBYQUVSX1JNRkFJTDogVGhlIGNvbW1hbmQgY2Fubm90IGJlIGV4ZWN1dGVkIHdoZW4gZ2xvYmFsIHRyYW5zYWN0aW9uIGlzIGluIHRoZSAgJS42NHMgc3RhdGUAWEFFUl9PVVRTSURFOiBTb21lIHdvcmsgaXMgZG9uZSBvdXRzaWRlIGdsb2JhbCB0cmFuc2FjdGlvbgBYQUVSX1JNRVJSOiBGYXRhbCBlcnJvciBvY2N1cnJlZCBpbiB0aGUgdHJhbnNhY3Rpb24gYnJhbmNoIC0gY2hlY2sgeW91ciBkYXRhIGZvciBjb25zaXN0ZW5jeQBYQV9SQlJPTExCQUNLOiBUcmFuc2FjdGlvbiBicmFuY2ggd2FzIHJvbGxlZCBiYWNrAFRoZXJlIGlzIG5vIHN1Y2ggZ3JhbnQgZGVmaW5lZCBmb3IgdXNlciAnJS0uNDhzJyBvbiBob3N0ICclLS4yNTVzJyBvbiByb3V0aW5lICclLS4xOTJzJwBGYWlsZWQgdG8gZ3JhbnQgRVhFQ1VURSBhbmQgQUxURVIgUk9VVElORSBwcml2aWxlZ2VzAEZhaWxlZCB0byByZXZva2UgYWxsIHByaXZpbGVnZXMgdG8gZHJvcHBlZCByb3V0aW5lAERhdGEgdG9vIGxvbmcgZm9yIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQAQmFkIFNRTFNUQVRFOiAnJXMnACVzOiByZWFkeSBmb3IgY29ubmVjdGlvbnMuIFZlcnNpb246ICclcycgIHNvY2tldDogJyVzJyAgcG9ydDogJWQgICVzAENhbid0IGxvYWQgdmFsdWUgZnJvbSBmaWxlIHdpdGggZml4ZWQgc2l6ZSByb3dzIHRvIHZhcmlhYmxlAFlvdSBhcmUgbm90IGFsbG93ZWQgdG8gY3JlYXRlIGEgdXNlciB3aXRoIEdSQU5UAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJyBmb3IgZnVuY3Rpb24gJS0uMzJzAFRhYmxlIGRlZmluaXRpb24gaGFzIGNoYW5nZWQsIHBsZWFzZSByZXRyeSB0cmFuc2FjdGlvbgBEdXBsaWNhdGUgaGFuZGxlciBkZWNsYXJlZCBpbiB0aGUgc2FtZSBibG9jawBPVVQgb3IgSU5PVVQgYXJndW1lbnQgJWQgZm9yIHJvdXRpbmUgJXMgaXMgbm90IGEgdmFyaWFibGUgb3IgTkVXIHBzZXVkby12YXJpYWJsZSBpbiBCRUZPUkUgdHJpZ2dlcgBOb3QgYWxsb3dlZCB0byByZXR1cm4gYSByZXN1bHQgc2V0IGZyb20gYSAlcwBDYW5ub3QgZ2V0IGdlb21ldHJ5IG9iamVjdCBmcm9tIGRhdGEgeW91IHNlbmQgdG8gdGhlIEdFT01FVFJZIGZpZWxkAEEgcm91dGluZSBmYWlsZWQgYW5kIGhhcyBuZWl0aGVyIE5PIFNRTCBub3IgUkVBRFMgU1FMIERBVEEgaW4gaXRzIGRlY2xhcmF0aW9uIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkOyBpZiBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgd2VyZSB1cGRhdGVkLCB0aGUgYmluYXJ5IGxvZyB3aWxsIG1pc3MgdGhlaXIgY2hhbmdlcwBUaGlzIGZ1bmN0aW9uIGhhcyBub25lIG9mIERFVEVSTUlOSVNUSUMsIE5PIFNRTCwgb3IgUkVBRFMgU1FMIERBVEEgaW4gaXRzIGRlY2xhcmF0aW9uIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkICh5b3UgKm1pZ2h0KiB3YW50IHRvIHVzZSB0aGUgbGVzcyBzYWZlIGxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnMgdmFyaWFibGUpAFlvdSBkbyBub3QgaGF2ZSB0aGUgU1VQRVIgcHJpdmlsZWdlIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkICh5b3UgKm1pZ2h0KiB3YW50IHRvIHVzZSB0aGUgbGVzcyBzYWZlIGxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnMgdmFyaWFibGUpAFlvdSBjYW4ndCBleGVjdXRlIGEgcHJlcGFyZWQgc3RhdGVtZW50IHdoaWNoIGhhcyBhbiBvcGVuIGN1cnNvciBhc3NvY2lhdGVkIHdpdGggaXQuIFJlc2V0IHRoZSBzdGF0ZW1lbnQgdG8gcmUtZXhlY3V0ZSBpdC4AVGhlIHN0YXRlbWVudCAoJWx1KSBoYXMgbm8gb3BlbiBjdXJzb3IuAEV4cGxpY2l0IG9yIGltcGxpY2l0IGNvbW1pdCBpcyBub3QgYWxsb3dlZCBpbiBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlci4ARmllbGQgb2YgdmlldyAnJS0uMTkycy4lLS4xOTJzJyB1bmRlcmx5aW5nIHRhYmxlIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAUmVjdXJzaXZlIHN0b3JlZCBmdW5jdGlvbnMgYW5kIHRyaWdnZXJzIGFyZSBub3QgYWxsb3dlZC4AVG9vIGJpZyBzY2FsZSAlZCBzcGVjaWZpZWQgZm9yIGNvbHVtbiAnJS0uMTkycycuIE1heGltdW0gaXMgJWx1LgBUb28tYmlnIHByZWNpc2lvbiAlZCBzcGVjaWZpZWQgZm9yICclLS4xOTJzJy4gTWF4aW11bSBpcyAlbHUuAEZvciBmbG9hdChNLEQpLCBkb3VibGUoTSxEKSBvciBkZWNpbWFsKE0sRCksIE0gbXVzdCBiZSA+PSBEIChjb2x1bW4gJyUtLjE5MnMnKS4AWW91IGNhbid0IGNvbWJpbmUgd3JpdGUtbG9ja2luZyBvZiBzeXN0ZW0gdGFibGVzIHdpdGggb3RoZXIgdGFibGVzIG9yIGxvY2sgdHlwZXMAVW5hYmxlIHRvIGNvbm5lY3QgdG8gZm9yZWlnbiBkYXRhIHNvdXJjZTogJS42NHMAVGhlcmUgd2FzIGEgcHJvYmxlbSBwcm9jZXNzaW5nIHRoZSBxdWVyeSBvbiB0aGUgZm9yZWlnbiBkYXRhIHNvdXJjZS4gRGF0YSBzb3VyY2UgZXJyb3I6ICUtLjY0cwBUaGUgZm9yZWlnbiBkYXRhIHNvdXJjZSB5b3UgYXJlIHRyeWluZyB0byByZWZlcmVuY2UgZG9lcyBub3QgZXhpc3QuIERhdGEgc291cmNlIGVycm9yOiAgJS0uNjRzAENhbid0IGNyZWF0ZSBmZWRlcmF0ZWQgdGFibGUuIFRoZSBkYXRhIHNvdXJjZSBjb25uZWN0aW9uIHN0cmluZyAnJS0uNjRzJyBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybWF0AFRoZSBkYXRhIHNvdXJjZSBjb25uZWN0aW9uIHN0cmluZyAnJS0uNjRzJyBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybWF0AENhbid0IGNyZWF0ZSBmZWRlcmF0ZWQgdGFibGUuIEZvcmVpZ24gZGF0YSBzcmMgZXJyb3I6ICAlLS42NHMAVHJpZ2dlciBpbiB3cm9uZyBzY2hlbWEAVGhyZWFkIHN0YWNrIG92ZXJydW46ICAlbGQgYnl0ZXMgdXNlZCBvZiBhICVsZCBieXRlIHN0YWNrLCBhbmQgJWxkIGJ5dGVzIG5lZWRlZC4gIFVzZSAnbXlzcWxkIC0tdGhyZWFkX3N0YWNrPSMnIHRvIHNwZWNpZnkgYSBiaWdnZXIgc3RhY2suAFJvdXRpbmUgYm9keSBmb3IgJyUtLjEwMHMnIGlzIHRvbyBsb25nAENhbm5vdCBkcm9wIGRlZmF1bHQga2V5Y2FjaGUARGlzcGxheSB3aWR0aCBvdXQgb2YgcmFuZ2UgZm9yIGNvbHVtbiAnJS0uMTkycycgKG1heCA9ICVsdSkAWEFFUl9EVVBJRDogVGhlIFhJRCBhbHJlYWR5IGV4aXN0cwBEYXRldGltZSBmdW5jdGlvbjogJS0uMzJzIGZpZWxkIG92ZXJmbG93AENhbid0IHVwZGF0ZSB0YWJsZSAnJS0uMTkycycgaW4gc3RvcmVkIGZ1bmN0aW9uL3RyaWdnZXIgYmVjYXVzZSBpdCBpcyBhbHJlYWR5IHVzZWQgYnkgc3RhdGVtZW50IHdoaWNoIGludm9rZWQgdGhpcyBzdG9yZWQgZnVuY3Rpb24vdHJpZ2dlci4AVGhlIGRlZmluaXRpb24gb2YgdGFibGUgJyUtLjE5MnMnIHByZXZlbnRzIG9wZXJhdGlvbiAlLjE5MnMgb24gdGFibGUgJyUtLjE5MnMnLgBUaGUgcHJlcGFyZWQgc3RhdGVtZW50IGNvbnRhaW5zIGEgc3RvcmVkIHJvdXRpbmUgY2FsbCB0aGF0IHJlZmVycyB0byB0aGF0IHNhbWUgc3RhdGVtZW50LiBJdCdzIG5vdCBhbGxvd2VkIHRvIGV4ZWN1dGUgYSBwcmVwYXJlZCBzdGF0ZW1lbnQgaW4gc3VjaCBhIHJlY3Vyc2l2ZSBtYW5uZXIATm90IGFsbG93ZWQgdG8gc2V0IGF1dG9jb21taXQgZnJvbSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAERlZmluZXIgaXMgbm90IGZ1bGx5IHF1YWxpZmllZABWaWV3ICclLS4xOTJzJy4nJS0uMTkycycgaGFzIG5vIGRlZmluZXIgaW5mb3JtYXRpb24gKG9sZCB0YWJsZSBmb3JtYXQpLiBDdXJyZW50IHVzZXIgaXMgdXNlZCBhcyBkZWZpbmVyLiBQbGVhc2UgcmVjcmVhdGUgdGhlIHZpZXchAFlvdSBuZWVkIHRoZSBTVVBFUiBwcml2aWxlZ2UgZm9yIGNyZWF0aW9uIHZpZXcgd2l0aCAnJS0uMTkycydAJyUtLjE5MnMnIGRlZmluZXIAVGhlIHVzZXIgc3BlY2lmaWVkIGFzIGEgZGVmaW5lciAoJyUtLjY0cydAJyUtLjY0cycpIGRvZXMgbm90IGV4aXN0AENoYW5naW5nIHNjaGVtYSBmcm9tICclLS4xOTJzJyB0byAnJS0uMTkycycgaXMgbm90IGFsbG93ZWQuAENhbm5vdCBkZWxldGUgb3IgdXBkYXRlIGEgcGFyZW50IHJvdzogYSBmb3JlaWduIGtleSBjb25zdHJhaW50IGZhaWxzJS4xOTJzAENhbm5vdCBhZGQgb3IgdXBkYXRlIGEgY2hpbGQgcm93OiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZmFpbHMlLjE5MnMAVmFyaWFibGUgJyUtLjY0cycgbXVzdCBiZSBxdW90ZWQgd2l0aCBgLi4uYCwgb3IgcmVuYW1lZABObyBkZWZpbmVyIGF0dHJpYnV0ZSBmb3IgdHJpZ2dlciAnJS0uMTkycycuJyUtLjE5MnMnLiBJdCdzIGRpc2FsbG93ZWQgdG8gY3JlYXRlIHRyaWdnZXIgd2l0aG91dCBkZWZpbmVyLgAnJS0uMTkycycgaGFzIGFuIG9sZCBmb3JtYXQsIHlvdSBzaG91bGQgcmUtY3JlYXRlIHRoZSAnJXMnIG9iamVjdChzKQBSZWN1cnNpdmUgbGltaXQgJWQgKGFzIHNldCBieSB0aGUgbWF4X3NwX3JlY3Vyc2lvbl9kZXB0aCB2YXJpYWJsZSkgd2FzIGV4Y2VlZGVkIGZvciByb3V0aW5lICUuMTkycwBGYWlsZWQgdG8gbG9hZCByb3V0aW5lICUtLjE5MnMuIFRoZSBkYXRhIGRpY3Rpb25hcnkgdGFibGUgbWlzc2luZywgY29ycnVwdCwgb3IgY29udGFpbnMgYmFkIGRhdGEgKGludGVybmFsIGNvZGUgJWQpAEluY29ycmVjdCByb3V0aW5lIG5hbWUgJyUtLjE5MnMnAFRhYmxlIHVwZ3JhZGUgcmVxdWlyZWQuIFBsZWFzZSBkbyAiUkVQQUlSIFRBQkxFIGAlLS42NHNgIiBvciBkdW1wL3JlbG9hZCB0byBmaXggaXQhAEFHR1JFR0FURSBpcyBub3Qgc3VwcG9ydGVkIGZvciBzdG9yZWQgZnVuY3Rpb25zAENhbid0IGNyZWF0ZSBtb3JlIHRoYW4gbWF4X3ByZXBhcmVkX3N0bXRfY291bnQgc3RhdGVtZW50cyAoY3VycmVudCB2YWx1ZTogJWx1KQBgJS0uMTkyc2AuYCUtLjE5MnNgIGNvbnRhaW5zIHZpZXcgcmVjdXJzaW9uAE5vbi1ncm91cGluZyBmaWVsZCAnJS0uMTkycycgaXMgdXNlZCBpbiAlLS42NHMgY2xhdXNlAFRoZSB1c2VkIHRhYmxlIHR5cGUgZG9lc24ndCBzdXBwb3J0IFNQQVRJQUwgaW5kZXhlcwBUcmlnZ2VycyBjYW4gbm90IGJlIGNyZWF0ZWQgb24gc3lzdGVtIHRhYmxlcwBMZWFkaW5nIHNwYWNlcyBhcmUgcmVtb3ZlZCBmcm9tIG5hbWUgJyVzJwBGYWlsZWQgdG8gcmVhZCBhdXRvLWluY3JlbWVudCB2YWx1ZSBmcm9tIHN0b3JhZ2UgZW5naW5lAHVzZXIgbmFtZQBob3N0IG5hbWUAU3RyaW5nICclLS43MHMnIGlzIHRvbyBsb25nIGZvciAlcyAoc2hvdWxkIGJlIG5vIGxvbmdlciB0aGFuICVkKQBUaGUgdGFyZ2V0IHRhYmxlICUtLjEwMHMgb2YgdGhlICVzIGlzIG5vdCBpbnNlcnRhYmxlLWludG8AVGFibGUgJyUtLjY0cycgaXMgZGlmZmVyZW50bHkgZGVmaW5lZCBvciBvZiBub24tTXlJU0FNIHR5cGUgb3IgZG9lc24ndCBleGlzdABUb28gaGlnaCBsZXZlbCBvZiBuZXN0aW5nIGZvciBzZWxlY3QATmFtZSAnJS0uNjRzJyBoYXMgYmVjb21lICcnAEZpcnN0IGNoYXJhY3RlciBvZiB0aGUgRklFTERTIFRFUk1JTkFURUQgc3RyaW5nIGlzIGFtYmlndW91czsgcGxlYXNlIHVzZSBub24tb3B0aW9uYWwgYW5kIG5vbi1lbXB0eSBGSUVMRFMgRU5DTE9TRUQgQlkAVGhlIGZvcmVpZ24gc2VydmVyLCAlcywgeW91IGFyZSB0cnlpbmcgdG8gY3JlYXRlIGFscmVhZHkgZXhpc3RzLgBUaGUgZm9yZWlnbiBzZXJ2ZXIgbmFtZSB5b3UgYXJlIHRyeWluZyB0byByZWZlcmVuY2UgZG9lcyBub3QgZXhpc3QuIERhdGEgc291cmNlIGVycm9yOiAgJS0uNjRzAFRhYmxlIHN0b3JhZ2UgZW5naW5lICclLS42NHMnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBvcHRpb24gJyUuNjRzJwBTeW50YXggZXJyb3I6ICUtLjY0cyBQQVJUSVRJT05JTkcgcmVxdWlyZXMgZGVmaW5pdGlvbiBvZiBWQUxVRVMgJS0uNjRzIGZvciBlYWNoIHBhcnRpdGlvbgBPbmx5ICUtLjY0cyBQQVJUSVRJT05JTkcgY2FuIHVzZSBWQUxVRVMgJS0uNjRzIGluIHBhcnRpdGlvbiBkZWZpbml0aW9uAE1BWFZBTFVFIGNhbiBvbmx5IGJlIHVzZWQgaW4gbGFzdCBwYXJ0aXRpb24gZGVmaW5pdGlvbgBTdWJwYXJ0aXRpb25zIGNhbiBvbmx5IGJlIGhhc2ggcGFydGl0aW9ucyBhbmQgYnkga2V5AE11c3QgZGVmaW5lIHN1YnBhcnRpdGlvbnMgb24gYWxsIHBhcnRpdGlvbnMgaWYgb24gb25lIHBhcnRpdGlvbgBXcm9uZyBudW1iZXIgb2YgcGFydGl0aW9ucyBkZWZpbmVkLCBtaXNtYXRjaCB3aXRoIHByZXZpb3VzIHNldHRpbmcAV3JvbmcgbnVtYmVyIG9mIHN1YnBhcnRpdGlvbnMgZGVmaW5lZCwgbWlzbWF0Y2ggd2l0aCBwcmV2aW91cyBzZXR0aW5nAENvbnN0YW50LCByYW5kb20gb3IgdGltZXpvbmUtZGVwZW5kZW50IGV4cHJlc3Npb25zIGluIChzdWIpcGFydGl0aW9uaW5nIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dlZABFeHByZXNzaW9uIGluIFJBTkdFL0xJU1QgVkFMVUVTIG11c3QgYmUgY29uc3RhbnQARmllbGQgaW4gbGlzdCBvZiBmaWVsZHMgZm9yIHBhcnRpdGlvbiBmdW5jdGlvbiBub3QgZm91bmQgaW4gdGFibGUATGlzdCBvZiBmaWVsZHMgaXMgb25seSBhbGxvd2VkIGluIEtFWSBwYXJ0aXRpb25zAFRoZSBwYXJ0aXRpb24gaW5mbyBpbiB0aGUgZnJtIGZpbGUgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB3aGF0IGNhbiBiZSB3cml0dGVuIGludG8gdGhlIGZybSBmaWxlAFRoZSAlLS4xOTJzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHdyb25nIHR5cGUARm9yICUtLjY0cyBwYXJ0aXRpb25zIGVhY2ggcGFydGl0aW9uIG11c3QgYmUgZGVmaW5lZABWQUxVRVMgTEVTUyBUSEFOIHZhbHVlIG11c3QgYmUgc3RyaWN0bHkgaW5jcmVhc2luZyBmb3IgZWFjaCBwYXJ0aXRpb24AVkFMVUVTIHZhbHVlIG11c3QgYmUgb2Ygc2FtZSB0eXBlIGFzIHBhcnRpdGlvbiBmdW5jdGlvbgBNdWx0aXBsZSBkZWZpbml0aW9uIG9mIHNhbWUgY29uc3RhbnQgaW4gbGlzdCBwYXJ0aXRpb25pbmcAUGFydGl0aW9uaW5nIGNhbiBub3QgYmUgdXNlZCBzdGFuZC1hbG9uZSBpbiBxdWVyeQBUaGUgbWl4IG9mIGhhbmRsZXJzIGluIHRoZSBwYXJ0aXRpb25zIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgdmVyc2lvbiBvZiBNeVNRTABGb3IgdGhlIHBhcnRpdGlvbmVkIGVuZ2luZSBpdCBpcyBuZWNlc3NhcnkgdG8gZGVmaW5lIGFsbCAlLS42NHMAVG9vIG1hbnkgcGFydGl0aW9ucyAoaW5jbHVkaW5nIHN1YnBhcnRpdGlvbnMpIHdlcmUgZGVmaW5lZABJdCBpcyBvbmx5IHBvc3NpYmxlIHRvIG1peCBSQU5HRS9MSVNUIHBhcnRpdGlvbmluZyB3aXRoIEhBU0gvS0VZIHBhcnRpdGlvbmluZyBmb3Igc3VicGFydGl0aW9uaW5nAEZhaWxlZCB0byBjcmVhdGUgc3BlY2lmaWMgaGFuZGxlciBmaWxlAEEgQkxPQiBmaWVsZCBpcyBub3QgYWxsb3dlZCBpbiBwYXJ0aXRpb24gZnVuY3Rpb24AQSAlLS4xOTJzIG11c3QgaW5jbHVkZSBhbGwgY29sdW1ucyBpbiB0aGUgdGFibGUncyBwYXJ0aXRpb25pbmcgZnVuY3Rpb24gKHByZWZpeGVkIGNvbHVtbnMgYXJlIG5vdCBjb25zaWRlcmVkKS4ATnVtYmVyIG9mICUtLjY0cyA9IDAgaXMgbm90IGFuIGFsbG93ZWQgdmFsdWUAUGFydGl0aW9uIG1hbmFnZW1lbnQgb24gYSBub3QgcGFydGl0aW9uZWQgdGFibGUgaXMgbm90IHBvc3NpYmxlAEZvcmVpZ24ga2V5cyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgaW4gY29uanVuY3Rpb24gd2l0aCBwYXJ0aXRpb25pbmcARXJyb3IgaW4gbGlzdCBvZiBwYXJ0aXRpb25zIHRvICUtLjY0cwBDYW5ub3QgcmVtb3ZlIGFsbCBwYXJ0aXRpb25zLCB1c2UgRFJPUCBUQUJMRSBpbnN0ZWFkAENPQUxFU0NFIFBBUlRJVElPTiBjYW4gb25seSBiZSB1c2VkIG9uIEhBU0gvS0VZIHBhcnRpdGlvbnMAUkVPUkdBTklaRSBQQVJUSVRJT04gY2FuIG9ubHkgYmUgdXNlZCB0byByZW9yZ2FuaXplIHBhcnRpdGlvbnMgbm90IHRvIGNoYW5nZSB0aGVpciBudW1iZXJzAFJFT1JHQU5JWkUgUEFSVElUSU9OIHdpdGhvdXQgcGFyYW1ldGVycyBjYW4gb25seSBiZSB1c2VkIG9uIGF1dG8tcGFydGl0aW9uZWQgdGFibGVzIHVzaW5nIEhBU0ggUEFSVElUSU9OcwAlLS42NHMgUEFSVElUSU9OIGNhbiBvbmx5IGJlIHVzZWQgb24gUkFOR0UvTElTVCBwYXJ0aXRpb25zAFRyeWluZyB0byBBZGQgcGFydGl0aW9uKHMpIHdpdGggd3JvbmcgbnVtYmVyIG9mIHN1YnBhcnRpdGlvbnMAQXQgbGVhc3Qgb25lIHBhcnRpdGlvbiBtdXN0IGJlIGFkZGVkAEF0IGxlYXN0IG9uZSBwYXJ0aXRpb24gbXVzdCBiZSBjb2FsZXNjZWQATW9yZSBwYXJ0aXRpb25zIHRvIHJlb3JnYW5pemUgdGhhbiB0aGVyZSBhcmUgcGFydGl0aW9ucwBEdXBsaWNhdGUgcGFydGl0aW9uIG5hbWUgJS0uMTkycwBJdCBpcyBub3QgYWxsb3dlZCB0byBzaHV0IG9mZiBiaW5sb2cgb24gdGhpcyBjb21tYW5kAFdoZW4gcmVvcmdhbml6aW5nIGEgc2V0IG9mIHBhcnRpdGlvbnMgdGhleSBtdXN0IGJlIGluIGNvbnNlY3V0aXZlIG9yZGVyAFJlb3JnYW5pemUgb2YgcmFuZ2UgcGFydGl0aW9ucyBjYW5ub3QgY2hhbmdlIHRvdGFsIHJhbmdlcyBleGNlcHQgZm9yIGxhc3QgcGFydGl0aW9uIHdoZXJlIGl0IGNhbiBleHRlbmQgdGhlIHJhbmdlAFBhcnRpdGlvbiBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lvbiBmb3IgdGhpcyBoYW5kbGVyAFBhcnRpdGlvbiBzdGF0ZSBjYW5ub3QgYmUgZGVmaW5lZCBmcm9tIENSRUFURS9BTFRFUiBUQUJMRQBUaGUgJS0uNjRzIGhhbmRsZXIgb25seSBzdXBwb3J0cyAzMiBiaXQgaW50ZWdlcnMgaW4gVkFMVUVTAFBsdWdpbiAnJS0uMTkycycgaXMgbm90IGxvYWRlZABJbmNvcnJlY3QgJS0uMzJzIHZhbHVlOiAnJS0uMTI4cycAVGFibGUgaGFzIG5vIHBhcnRpdGlvbiBmb3IgdmFsdWUgJS0uNjRzAEl0IGlzIG5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgJXMgbW9yZSB0aGFuIG9uY2UARmFpbGVkIHRvIGNyZWF0ZSAlcwBGYWlsZWQgdG8gZHJvcCAlcwBUaGUgaGFuZGxlciBkb2Vzbid0IHN1cHBvcnQgYXV0b2V4dGVuZCBvZiB0YWJsZXNwYWNlcwBBIHNpemUgcGFyYW1ldGVyIHdhcyBpbmNvcnJlY3RseSBzcGVjaWZpZWQsIGVpdGhlciBudW1iZXIgb3Igb24gdGhlIGZvcm0gMTBNAFRoZSBzaXplIG51bWJlciB3YXMgY29ycmVjdCBidXQgd2UgZG9uJ3QgYWxsb3cgdGhlIGRpZ2l0IHBhcnQgdG8gYmUgbW9yZSB0aGFuIDIgYmlsbGlvbgBGYWlsZWQgdG8gYWx0ZXI6ICVzAFdyaXRpbmcgb25lIHJvdyB0byB0aGUgcm93LWJhc2VkIGJpbmFyeSBsb2cgZmFpbGVkAFRhYmxlIGRlZmluaXRpb24gb24gc291cmNlIGFuZCByZXBsaWNhIGRvZXMgbm90IG1hdGNoOiAlcwBSZXBsaWNhIHJ1bm5pbmcgd2l0aCAtLWxvZy1yZXBsaWNhLXVwZGF0ZXMgbXVzdCB1c2Ugcm93LWJhc2VkIGJpbmFyeSBsb2dnaW5nIHRvIGJlIGFibGUgdG8gcmVwbGljYXRlIHJvdy1iYXNlZCBiaW5hcnkgbG9nIGV2ZW50cwBFdmVudCAnJS0uMTkycycgYWxyZWFkeSBleGlzdHMARmFpbGVkIHRvIHN0b3JlIGV2ZW50ICVzLiBFcnJvciBjb2RlICVkIGZyb20gc3RvcmFnZSBlbmdpbmUuAFVua25vd24gZXZlbnQgJyUtLjE5MnMnAEZhaWxlZCB0byBhbHRlciBldmVudCAnJS0uMTkycycARmFpbGVkIHRvIGRyb3AgJXMASU5URVJWQUwgaXMgZWl0aGVyIG5vdCBwb3NpdGl2ZSBvciB0b28gYmlnAEVORFMgaXMgZWl0aGVyIGludmFsaWQgb3IgYmVmb3JlIFNUQVJUUwBFdmVudCBleGVjdXRpb24gdGltZSBpcyBpbiB0aGUgcGFzdC4gRXZlbnQgaGFzIGJlZW4gZGlzYWJsZWQARmFpbGVkIHRvIG9wZW4gbXlzcWwuZXZlbnQATm8gZGF0ZXRpbWUgZXhwcmVzc2lvbiBwcm92aWRlZABDb2x1bW4gY291bnQgb2YgbXlzcWwuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gVGhlIHRhYmxlIGlzIHByb2JhYmx5IGNvcnJ1cHRlZABDYW5ub3QgbG9hZCBmcm9tIG15c3FsLiVzLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkAEZhaWxlZCB0byBkZWxldGUgdGhlIGV2ZW50IGZyb20gbXlzcWwuZXZlbnQARXJyb3IgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIGV2ZW50J3MgYm9keQBTYW1lIG9sZCBhbmQgbmV3IGV2ZW50IG5hbWUARGF0YSBmb3IgY29sdW1uICclcycgdG9vIGxvbmcAQ2Fubm90IGRyb3AgaW5kZXggJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50AFRoZSBzeW50YXggJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTXlTUUwgJXMuIFBsZWFzZSB1c2UgJXMgaW5zdGVhZABZb3UgY2FuJ3Qgd3JpdGUtbG9jayBhIGxvZyB0YWJsZS4gT25seSByZWFkIGFjY2VzcyBpcyBwb3NzaWJsZQBZb3UgY2FuJ3QgdXNlIGxvY2tzIHdpdGggbG9nIHRhYmxlcy4AVXBob2xkaW5nIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIGZvciB0YWJsZSAnJS4xOTJzJywgZW50cnkgJyUtLjE5MnMnLCBrZXkgJWQgd291bGQgbGVhZCB0byBhIGR1cGxpY2F0ZSBlbnRyeQBUaGUgY29sdW1uIGNvdW50IG9mIG15c3FsLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIENyZWF0ZWQgd2l0aCBNeVNRTCAlZCwgbm93IHJ1bm5pbmcgJWQuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AQ2Fubm90IHN3aXRjaCBvdXQgb2YgdGhlIHJvdy1iYXNlZCBiaW5hcnkgbG9nIGZvcm1hdCB3aGVuIHRoZSBzZXNzaW9uIGhhcyBvcGVuIHRlbXBvcmFyeSB0YWJsZXMAQ2Fubm90IGNoYW5nZSB0aGUgYmluYXJ5IGxvZ2dpbmcgZm9ybWF0IGluc2lkZSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAFRoZSBOREIgY2x1c3RlciBlbmdpbmUgZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgYmlubG9nIGZvcm1hdCBvbiB0aGUgZmx5IHlldABDYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSB0YWJsZSB3aXRoIHBhcnRpdGlvbnMAUGFydGl0aW9uIGNvbnN0YW50IGlzIG91dCBvZiBwYXJ0aXRpb24gZnVuY3Rpb24gZG9tYWluAFRoaXMgcGFydGl0aW9uIGZ1bmN0aW9uIGlzIG5vdCBhbGxvd2VkAEVycm9yIGluIERETCBsb2cATm90IGFsbG93ZWQgdG8gdXNlIE5VTEwgdmFsdWUgaW4gVkFMVUVTIExFU1MgVEhBTgBJbmNvcnJlY3QgcGFydGl0aW9uIG5hbWUAVHJhbnNhY3Rpb24gY2hhcmFjdGVyaXN0aWNzIGNhbid0IGJlIGNoYW5nZWQgd2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcwBBTFRFUiBUQUJMRSBjYXVzZXMgYXV0b19pbmNyZW1lbnQgcmVzZXF1ZW5jaW5nLCByZXN1bHRpbmcgaW4gZHVwbGljYXRlIGVudHJ5ICclLS4xOTJzJyBmb3Iga2V5ICclLS4xOTJzJwBJbnRlcm5hbCBzY2hlZHVsZXIgZXJyb3IgJWQARXJyb3IgZHVyaW5nIHN0YXJ0aW5nL3N0b3BwaW5nIG9mIHRoZSBzY2hlZHVsZXIuIEVycm9yIGNvZGUgJXUARW5naW5lIGNhbm5vdCBiZSB1c2VkIGluIHBhcnRpdGlvbmVkIHRhYmxlcwBDYW5ub3QgYWN0aXZhdGUgJyUtLjY0cycgbG9nAFRoZSBzZXJ2ZXIgd2FzIG5vdCBidWlsdCB3aXRoIHJvdy1iYXNlZCByZXBsaWNhdGlvbgBEZWNvZGluZyBvZiBiYXNlNjQgc3RyaW5nIGZhaWxlZABSZWN1cnNpb24gb2YgRVZFTlQgRERMIHN0YXRlbWVudHMgaXMgZm9yYmlkZGVuIHdoZW4gYm9keSBpcyBwcmVzZW50AENhbm5vdCBwcm9jZWVkIGJlY2F1c2Ugc3lzdGVtIHRhYmxlcyB1c2VkIGJ5IEV2ZW50IFNjaGVkdWxlciB3ZXJlIGZvdW5kIGRhbWFnZWQgYXQgc2VydmVyIHN0YXJ0AE9ubHkgaW50ZWdlcnMgYWxsb3dlZCBhcyBudW1iZXIgaGVyZQBUaGlzIHN0b3JhZ2UgZW5naW5lIGNhbm5vdCBiZSB1c2VkIGZvciBsb2cgdGFibGVzAFlvdSBjYW5ub3QgJyVzJyBhIGxvZyB0YWJsZSBpZiBsb2dnaW5nIGlzIGVuYWJsZWQAQ2Fubm90IHJlbmFtZSAnJXMnLiBXaGVuIGxvZ2dpbmcgZW5hYmxlZCwgcmVuYW1lIHRvL2Zyb20gbG9nIHRhYmxlIG11c3QgcmVuYW1lIHR3byB0YWJsZXM6IHRoZSBsb2cgdGFibGUgdG8gYW4gYXJjaGl2ZSB0YWJsZSBhbmQgYW5vdGhlciB0YWJsZSBiYWNrIHRvICclcycASW5jb3JyZWN0IHBhcmFtZXRlciBjb3VudCBpbiB0aGUgY2FsbCB0byBuYXRpdmUgZnVuY3Rpb24gJyUtLjE5MnMnAEluY29ycmVjdCBwYXJhbWV0ZXJzIGluIHRoZSBjYWxsIHRvIG5hdGl2ZSBmdW5jdGlvbiAnJS0uMTkycycASW5jb3JyZWN0IHBhcmFtZXRlcnMgaW4gdGhlIGNhbGwgdG8gc3RvcmVkIGZ1bmN0aW9uICUtLjE5MnMAVGhpcyBmdW5jdGlvbiAnJS0uMTkycycgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBuYXRpdmUgZnVuY3Rpb24AWnZvamVuw70ga2zDrcSNICclLS42NHMnICjEjcOtc2xvIGtsw63EjWUgJyUtLjM4NXMnKQBUb28gbWFueSBmaWxlcyBvcGVuZWQsIHBsZWFzZSBleGVjdXRlIHRoZSBjb21tYW5kIGFnYWluAEV2ZW50IGV4ZWN1dGlvbiB0aW1lIGlzIGluIHRoZSBwYXN0IGFuZCBPTiBDT01QTEVUSU9OIE5PVCBQUkVTRVJWRSBpcyBzZXQuIFRoZSBldmVudCB3YXMgZHJvcHBlZCBpbW1lZGlhdGVseSBhZnRlciBjcmVhdGlvbi4ARXZlbnQgZXhlY3V0aW9uIHRpbWUgaXMgaW4gdGhlIHBhc3QgYW5kIE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIGlzIHNldC4gVGhlIGV2ZW50IHdhcyBub3QgY2hhbmdlZC4gU3BlY2lmeSBhIHRpbWUgaW4gdGhlIGZ1dHVyZS4AVGhlIGluY2lkZW50ICVzIG9jY3VycmVkIG9uIHRoZSBzb3VyY2UuIE1lc3NhZ2U6ICVzAFRhYmxlIGhhcyBubyBwYXJ0aXRpb24gZm9yIHNvbWUgZXhpc3RpbmcgdmFsdWVzAFVuc2FmZSBzdGF0ZW1lbnQgd3JpdHRlbiB0byB0aGUgYmluYXJ5IGxvZyB1c2luZyBzdGF0ZW1lbnQgZm9ybWF0IHNpbmNlIEJJTkxPR19GT1JNQVQgPSBTVEFURU1FTlQuICVzAEZhdGFsIGVycm9yOiAlcwBSZWxheSBsb2cgcmVhZCBmYWlsdXJlOiAlcwBSZWxheSBsb2cgd3JpdGUgZmFpbHVyZTogJXMARmFpbGVkIHRvIGNyZWF0ZSAlcwBTb3VyY2UgY29tbWFuZCAlcyBmYWlsZWQ6ICVzAEJpbmFyeSBsb2dnaW5nIG5vdCBwb3NzaWJsZS4gTWVzc2FnZTogJXMAVmlldyBgJS0uNjRzYC5gJS0uNjRzYCBoYXMgbm8gY3JlYXRpb24gY29udGV4dABDcmVhdGlvbiBjb250ZXh0IG9mIHZpZXcgYCUtLjY0c2AuYCUtLjY0cycgaXMgaW52YWxpZABDcmVhdGlvbiBjb250ZXh0IG9mIHN0b3JlZCByb3V0aW5lIGAlLS42NHNgLmAlLS42NHNgIGlzIGludmFsaWQAQ29ycnVwdGVkIFRSRyBmaWxlIGZvciB0YWJsZSBgJS0uNjRzYC5gJS0uNjRzYABUcmlnZ2VycyBmb3IgdGFibGUgYCUtLjY0c2AuYCUtLjY0c2AgaGF2ZSBubyBjcmVhdGlvbiBjb250ZXh0AFRyaWdnZXIgY3JlYXRpb24gY29udGV4dCBvZiB0YWJsZSBgJS0uNjRzYC5gJS0uNjRzYCBpcyBpbnZhbGlkAENyZWF0aW9uIGNvbnRleHQgb2YgZXZlbnQgYCUtLjY0c2AuYCUtLjY0c2AgaXMgaW52YWxpZABDYW5ub3Qgb3BlbiB0YWJsZSBmb3IgdHJpZ2dlciBgJS0uNjRzYC5gJS0uNjRzYABDYW5ub3QgY3JlYXRlIHN0b3JlZCByb3V0aW5lIGAlLS42NHNgLiBDaGVjayB3YXJuaW5ncwBBbWJpZ3VvdXMgcmVwbGljYSBtb2RlcyBjb21iaW5hdGlvbi4gJXMAVGhlIEJJTkxPRyBzdGF0ZW1lbnQgb2YgdHlwZSBgJXNgIHdhcyBub3QgcHJlY2VkZWQgYnkgYSBmb3JtYXQgZGVzY3JpcHRpb24gQklOTE9HIHN0YXRlbWVudC4AQ29ycnVwdGVkIHJlcGxpY2F0aW9uIGV2ZW50IHdhcyBkZXRlY3RlZABJbnZhbGlkIGNvbHVtbiByZWZlcmVuY2UgKCUtLjY0cykgaW4gTE9BRCBEQVRBAEJlaW5nIHB1cmdlZCBsb2cgJXMgd2FzIG5vdCBmb3VuZABYQV9SQlRJTUVPVVQ6IFRyYW5zYWN0aW9uIGJyYW5jaCB3YXMgcm9sbGVkIGJhY2s6IHRvb2sgdG9vIGxvbmcAWEFfUkJERUFETE9DSzogVHJhbnNhY3Rpb24gYnJhbmNoIHdhcyByb2xsZWQgYmFjazogZGVhZGxvY2sgd2FzIGRldGVjdGVkAFByZXBhcmVkIHN0YXRlbWVudCBuZWVkcyB0byBiZSByZS1wcmVwYXJlZABERUxBWUVEIG9wdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0YWJsZSAnJS0uMTkycycAVGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlIGRvZXMgbm90IGV4aXN0ADwlLS42NHM+IG9wdGlvbiBpZ25vcmVkAEJ1aWx0LWluIHBsdWdpbnMgY2Fubm90IGJlIGRlbGV0ZWQAUGx1Z2luIGlzIGJ1c3kgYW5kIHdpbGwgYmUgdW5pbnN0YWxsZWQgb24gc2h1dGRvd24AJXMgdmFyaWFibGUgJyVzJyBpcyByZWFkLW9ubHkuIFVzZSBTRVQgJXMgdG8gYXNzaWduIHRoZSB2YWx1ZQBTdG9yYWdlIGVuZ2luZSAlcyBkb2VzIG5vdCBzdXBwb3J0IHJvbGxiYWNrIGZvciB0aGlzIHN0YXRlbWVudC4gVHJhbnNhY3Rpb24gcm9sbGVkIGJhY2sgYW5kIG11c3QgYmUgcmVzdGFydGVkAFVuZXhwZWN0ZWQgc291cmNlJ3MgaGVhcnRiZWF0IGRhdGE6ICVzAFRoZSByZXF1ZXN0ZWQgdmFsdWUgZm9yIHRoZSBoZWFydGJlYXQgcGVyaW9kIGlzIGVpdGhlciBuZWdhdGl2ZSBvciBleGNlZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgKCVzIHNlY29uZHMpLgBCYWQgc2NoZW1hIGZvciBteXNxbC5uZGJfcmVwbGljYXRpb24gdGFibGUuIE1lc3NhZ2U6ICUtLjY0cwBFcnJvciBpbiBwYXJzaW5nIGNvbmZsaWN0IGZ1bmN0aW9uLiBNZXNzYWdlOiAlLS42NHMAV3JpdGUgdG8gZXhjZXB0aW9ucyB0YWJsZSBmYWlsZWQuIE1lc3NhZ2U6ICUtLjEyOHMAQ29tbWVudCBmb3IgdGFibGUgJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkAQ29tbWVudCBmb3IgZmllbGQgJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkARlVOQ1RJT04gJXMgZG9lcyBub3QgZXhpc3QuIENoZWNrIHRoZSAnRnVuY3Rpb24gTmFtZSBQYXJzaW5nIGFuZCBSZXNvbHV0aW9uJyBzZWN0aW9uIGluIHRoZSBSZWZlcmVuY2UgTWFudWFsAERhdGFiYXNlAFRhYmxlAFBhcnRpdGlvbgBTdWJwYXJ0aXRpb24AVGVtcG9yYXJ5AFJlbmFtZWQAVG9vIG1hbnkgYWN0aXZlIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zAE5vbi1BU0NJSSBzZXBhcmF0b3IgYXJndW1lbnRzIGFyZSBub3QgZnVsbHkgc3VwcG9ydGVkAGRlYnVnIHN5bmMgcG9pbnQgd2FpdCB0aW1lZCBvdXQAZGVidWcgc3luYyBwb2ludCBoaXQgbGltaXQgcmVhY2hlZABEdXBsaWNhdGUgY29uZGl0aW9uIGluZm9ybWF0aW9uIGl0ZW0gJyVzJwBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIHdhcm5pbmcgY29uZGl0aW9uAFVuaGFuZGxlZCB1c2VyLWRlZmluZWQgbm90IGZvdW5kIGNvbmRpdGlvbgBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIGV4Y2VwdGlvbiBjb25kaXRpb24AUkVTSUdOQUwgd2hlbiBoYW5kbGVyIG5vdCBhY3RpdmUAU0lHTkFML1JFU0lHTkFMIGNhbiBvbmx5IHVzZSBhIENPTkRJVElPTiBkZWZpbmVkIHdpdGggU1FMU1RBVEUARGF0YSB0cnVuY2F0ZWQgZm9yIGNvbmRpdGlvbiBpdGVtICclcycARGF0YSB0b28gbG9uZyBmb3IgY29uZGl0aW9uIGl0ZW0gJyVzJwBVbmtub3duIGxvY2FsZTogJyUtLjY0cycAVGhlIHJlcXVlc3RlZCBzZXJ2ZXIgaWQgJWQgY2xhc2hlcyB3aXRoIHRoZSByZXBsaWNhIHN0YXJ0dXAgb3B0aW9uIC0tcmVwbGljYXRlLXNhbWUtc2VydmVyLWlkAFF1ZXJ5IGNhY2hlIGlzIGRpc2FibGVkOyByZXN0YXJ0IHRoZSBzZXJ2ZXIgd2l0aCBxdWVyeV9jYWNoZV90eXBlPTEgdG8gZW5hYmxlIGl0AER1cGxpY2F0ZSBwYXJ0aXRpb24gZmllbGQgbmFtZSAnJS0uMTkycycASW5jb25zaXN0ZW5jeSBpbiB1c2FnZSBvZiBjb2x1bW4gbGlzdHMgZm9yIHBhcnRpdGlvbmluZwBQYXJ0aXRpb24gY29sdW1uIHZhbHVlcyBvZiBpbmNvcnJlY3QgdHlwZQBUb28gbWFueSBmaWVsZHMgaW4gJyUtLjE5MnMnAENhbm5vdCB1c2UgTUFYVkFMVUUgYXMgdmFsdWUgaW4gVkFMVUVTIElOAENhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUgdmFsdWUgZm9yIHRoaXMgdHlwZSBvZiAlLS42NHMgcGFydGl0aW9uaW5nAFJvdyBleHByZXNzaW9ucyBpbiBWQUxVRVMgSU4gb25seSBhbGxvd2VkIGZvciBtdWx0aS1maWVsZCBjb2x1bW4gcGFydGl0aW9uaW5nAEZpZWxkICclLS4xOTJzJyBpcyBvZiBhIG5vdCBhbGxvd2VkIHR5cGUgZm9yIHRoaXMgdHlwZSBvZiBwYXJ0aXRpb25pbmcAVGhlIHRvdGFsIGxlbmd0aCBvZiB0aGUgcGFydGl0aW9uaW5nIGZpZWxkcyBpcyB0b28gbGFyZ2UAQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2UgYm90aCByb3ctaW5jYXBhYmxlIGVuZ2luZXMgYW5kIHN0YXRlbWVudC1pbmNhcGFibGUgZW5naW5lcyBhcmUgaW52b2x2ZWQuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIEJJTkxPR19GT1JNQVQgPSBST1cgYW5kIGF0IGxlYXN0IG9uZSB0YWJsZSB1c2VzIGEgc3RvcmFnZSBlbmdpbmUgbGltaXRlZCB0byBzdGF0ZW1lbnQtYmFzZWQgbG9nZ2luZy4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2Ugc3RhdGVtZW50IGlzIHVuc2FmZSwgc3RvcmFnZSBlbmdpbmUgaXMgbGltaXRlZCB0byBzdGF0ZW1lbnQtYmFzZWQgbG9nZ2luZywgYW5kIEJJTkxPR19GT1JNQVQgPSBNSVhFRC4gJXMAQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2Ugc3RhdGVtZW50IGlzIGluIHJvdyBmb3JtYXQgYW5kIGF0IGxlYXN0IG9uZSB0YWJsZSB1c2VzIGEgc3RvcmFnZSBlbmdpbmUgbGltaXRlZCB0byBzdGF0ZW1lbnQtYmFzZWQgbG9nZ2luZy4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2UgQklOTE9HX0ZPUk1BVCA9IFNUQVRFTUVOVCBhbmQgYXQgbGVhc3Qgb25lIHRhYmxlIHVzZXMgYSBzdG9yYWdlIGVuZ2luZSBsaW1pdGVkIHRvIHJvdy1iYXNlZCBsb2dnaW5nLiVzAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIHN0YXRlbWVudCBpcyBpbiByb3cgZm9ybWF0IGFuZCBCSU5MT0dfRk9STUFUID0gU1RBVEVNRU5ULgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBtb3JlIHRoYW4gb25lIGVuZ2luZSBpcyBpbnZvbHZlZCBhbmQgYXQgbGVhc3Qgb25lIGVuZ2luZSBpcyBzZWxmLWxvZ2dpbmcuAFRoZSBzdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIExJTUlUIGNsYXVzZS4gVGhpcyBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgc2V0IG9mIHJvd3MgaW5jbHVkZWQgY2Fubm90IGJlIHByZWRpY3RlZC4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIElOU0VSVCBERUxBWUVELiBUaGlzIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSB0aW1lcyB3aGVuIHJvd3MgYXJlIGluc2VydGVkIGNhbm5vdCBiZSBwcmVkaWN0ZWQuAFRoZSBzdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyB0aGUgZ2VuZXJhbCBsb2csIHNsb3cgcXVlcnkgbG9nLCBvciBwZXJmb3JtYW5jZV9zY2hlbWEgdGFibGUocykuIFRoaXMgaXMgdW5zYWZlIGJlY2F1c2Ugc3lzdGVtIHRhYmxlcyBtYXkgZGlmZmVyIG9uIHJlcGxpY2FzLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgaW52b2tlcyBhIHRyaWdnZXIgb3IgYSBzdG9yZWQgZnVuY3Rpb24gdGhhdCBpbnNlcnRzIGludG8gYW4gQVVUT19JTkNSRU1FTlQgY29sdW1uLiBJbnNlcnRlZCB2YWx1ZXMgY2Fubm90IGJlIGxvZ2dlZCBjb3JyZWN0bHkuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgVURGIHdoaWNoIG1heSBub3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIG9uIHRoZSByZXBsaWNhLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIHN5c3RlbSB2YXJpYWJsZSB0aGF0IG1heSBoYXZlIGEgZGlmZmVyZW50IHZhbHVlIG9uIHRoZSByZXBsaWNhLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIHN5c3RlbSBmdW5jdGlvbiB0aGF0IG1heSByZXR1cm4gYSBkaWZmZXJlbnQgdmFsdWUgb24gdGhlIHJlcGxpY2EuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCBhY2Nlc3NlcyBhIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlIGFmdGVyIGFjY2Vzc2luZyBhIHRyYW5zYWN0aW9uYWwgdGFibGUgd2l0aGluIHRoZSBzYW1lIHRyYW5zYWN0aW9uLgAlcyBTdGF0ZW1lbnQ6ICVzAENvbHVtbiAlZCBvZiB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJyBjYW5ub3QgYmUgY29udmVydGVkIGZyb20gdHlwZSAnJS0uMzJzJyB0byB0eXBlICclLS4zMnMnAENhbid0IGNyZWF0ZSBjb252ZXJzaW9uIHRhYmxlIGZvciB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJwBDYW5ub3QgbW9kaWZ5IEBAc2Vzc2lvbi5iaW5sb2dfZm9ybWF0IGluc2lkZSBhIHRyYW5zYWN0aW9uAFRoZSBwYXRoIHNwZWNpZmllZCBmb3IgJS42NHMgaXMgdG9vIGxvbmcuACclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAE5hdGl2ZSB0YWJsZSAnJS0uNjRzJy4nJS0uNjRzJyBoYXMgdGhlIHdyb25nIHN0cnVjdHVyZQBJbnZhbGlkIHBlcmZvcm1hbmNlX3NjaGVtYSB1c2FnZS4AVGFibGUgJyVzJy4nJXMnIHdhcyBza2lwcGVkIHNpbmNlIGl0cyBkZWZpbml0aW9uIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IGNvbmN1cnJlbnQgRERMIHN0YXRlbWVudABDYW5ub3QgbW9kaWZ5IEBAc2Vzc2lvbi5iaW5sb2dfZGlyZWN0X25vbl90cmFuc2FjdGlvbmFsX3VwZGF0ZXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24AQ2Fubm90IGNoYW5nZSB0aGUgYmlubG9nIGRpcmVjdCBmbGFnIGluc2lkZSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAEEgU1BBVElBTCBpbmRleCBtYXkgb25seSBjb250YWluIGEgZ2VvbWV0cmljYWwgdHlwZSBjb2x1bW4AQ29tbWVudCBmb3IgaW5kZXggJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkAV2FpdCBvbiBhIGxvY2sgd2FzIGFib3J0ZWQgZHVlIHRvIGEgcGVuZGluZyBleGNsdXNpdmUgbG9jawAlcyB2YWx1ZSBpcyBvdXQgb2YgcmFuZ2UgaW4gJyVzJwBBIHZhcmlhYmxlIG9mIGEgbm9uLWludGVnZXIgYmFzZWQgdHlwZSBpbiBMSU1JVCBjbGF1c2UATWl4aW5nIHNlbGYtbG9nZ2luZyBhbmQgbm9uLXNlbGYtbG9nZ2luZyBlbmdpbmVzIGluIGEgc3RhdGVtZW50IGlzIHVuc2FmZS4AU3RhdGVtZW50IGFjY2Vzc2VzIG5vbnRyYW5zYWN0aW9uYWwgdGFibGUgYXMgd2VsbCBhcyB0cmFuc2FjdGlvbmFsIG9yIHRlbXBvcmFyeSB0YWJsZSwgYW5kIHdyaXRlcyB0byBhbnkgb2YgdGhlbS4AQ2Fubm90IG1vZGlmeSBAQHNlc3Npb24uc3FsX2xvZ19iaW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24AQ2Fubm90IGNoYW5nZSB0aGUgc3FsX2xvZ19iaW4gaW5zaWRlIGEgc3RvcmVkIGZ1bmN0aW9uIG9yIHRyaWdnZXIARmFpbGVkIHRvIHJlYWQgZnJvbSB0aGUgLnBhciBmaWxlAFZBTFVFUyB2YWx1ZSBmb3IgcGFydGl0aW9uICclLS42NHMnIG11c3QgaGF2ZSB0eXBlIElOVABQxZnDrXN0dXAgcHJvIHXFvml2YXRlbGUgJyUtLjQ4cydAJyUtLjY0cycAU0VUIFBBU1NXT1JEIGhhcyBubyBzaWduaWZpY2FuY2UgZm9yIHVzZXJzIGF1dGhlbnRpY2F0aW5nIHZpYSBwbHVnaW5zAEdSQU5UIHdpdGggSURFTlRJRklFRCBXSVRIIGlzIGlsbGVnYWwgYmVjYXVzZSB0aGUgdXNlciAlLS4qcyBhbHJlYWR5IGV4aXN0cwBDYW5ub3QgdHJ1bmNhdGUgYSB0YWJsZSByZWZlcmVuY2VkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAoJS4xOTJzKQBQbHVnaW4gJyVzJyBpcyBmb3JjZV9wbHVzX3Blcm1hbmVudCBhbmQgY2FuIG5vdCBiZSB1bmxvYWRlZABUaGUgcmVxdWVzdGVkIHZhbHVlIGZvciB0aGUgaGVhcnRiZWF0IHBlcmlvZCBpcyBsZXNzIHRoYW4gMSBtaWxsaXNlY29uZC4gVGhlIHZhbHVlIGlzIHJlc2V0IHRvIDAsIG1lYW5pbmcgdGhhdCBoZWFydGJlYXRpbmcgd2lsbCBlZmZlY3RpdmVseSBiZSBkaXNhYmxlZC4AVGhlIHJlcXVlc3RlZCB2YWx1ZSBmb3IgdGhlIGhlYXJ0YmVhdCBwZXJpb2QgZXhjZWVkcyB0aGUgdmFsdWUgb2YgYHJlcGxpY2FfbmV0X3RpbWVvdXQnIHNlY29uZHMuIEEgc2Vuc2libGUgdmFsdWUgZm9yIHRoZSBwZXJpb2Qgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgdGltZW91dC4ATXVsdGktcm93IHN0YXRlbWVudHMgcmVxdWlyZWQgbW9yZSB0aGFuICdtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZScgYnl0ZXMgb2Ygc3RvcmFnZTsgaW5jcmVhc2UgdGhpcyBteXNxbGQgdmFyaWFibGUgYW5kIHRyeSBhZ2FpbgBQcmltYXJ5IGtleS9wYXJ0aXRpb24ga2V5IHVwZGF0ZSBpcyBub3QgYWxsb3dlZCBzaW5jZSB0aGUgdGFibGUgaXMgdXBkYXRlZCBib3RoIGFzICclLS4xOTJzJyBhbmQgJyUtLjE5MnMnLgBUYWJsZSByZWJ1aWxkIHJlcXVpcmVkLiBQbGVhc2UgZG8gIkFMVEVSIFRBQkxFIGAlLS42NHNgIEZPUkNFIiBvciBkdW1wL3JlbG9hZCB0byBmaXggaXQhAFRoZSB2YWx1ZSBvZiAnJXMnIHNob3VsZCBiZSBubyBsZXNzIHRoYW4gdGhlIHZhbHVlIG9mICclcycASW5kZXggY29sdW1uIHNpemUgdG9vIGxhcmdlLiBUaGUgbWF4aW11bSBjb2x1bW4gc2l6ZSBpcyAlbHUgYnl0ZXMuAFRyaWdnZXIgJyUtLjY0cycgaGFzIGFuIGVycm9yIGluIGl0cyBib2R5OiAnJS0uMjU2cycAVW5rbm93biB0cmlnZ2VyIGhhcyBhbiBlcnJvciBpbiBpdHMgYm9keTogJyUtLjI1NnMnAEluZGV4ICVzIGlzIGNvcnJ1cHRlZABVbmRvIGxvZyByZWNvcmQgaXMgdG9vIGJpZy4ASU5TRVJUIElHTk9SRS4uLiBTRUxFQ1QgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgaWdub3JlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAElOU0VSVC4uLiBTRUxFQ1QuLi4gT04gRFVQTElDQVRFIEtFWSBVUERBVEUgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgdXBkYXRlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAFJFUExBQ0UuLi4gU0VMRUNUIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBvcmRlciBpbiB3aGljaCByb3dzIGFyZSByZXRyaWV2ZWQgYnkgdGhlIFNFTEVDVCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIHJlcGxhY2VkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AQ1JFQVRFLi4uIElHTk9SRSBTRUxFQ1QgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgaWdub3JlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAENSRUFURS4uLiBSRVBMQUNFIFNFTEVDVCBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSByZXBsYWNlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAFVQREFURSBJR05PUkUgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHVwZGF0ZWQgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSBpZ25vcmVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AUGx1Z2luICclcycgaXMgbWFya2VkIGFzIG5vdCBkeW5hbWljYWxseSB1bmluc3RhbGxhYmxlLiBZb3UgaGF2ZSB0byBzdG9wIHRoZSBzZXJ2ZXIgdG8gdW5pbnN0YWxsIGl0LgBQbHVnaW4gJyVzJyBpcyBtYXJrZWQgYXMgbm90IGR5bmFtaWNhbGx5IGluc3RhbGxhYmxlLiBZb3UgaGF2ZSB0byBzdG9wIHRoZSBzZXJ2ZXIgdG8gaW5zdGFsbCBpdC4AU3RhdGVtZW50cyB3cml0aW5nIHRvIGEgdGFibGUgd2l0aCBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4gYWZ0ZXIgc2VsZWN0aW5nIGZyb20gYW5vdGhlciB0YWJsZSBhcmUgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBkZXRlcm1pbmVzIHdoYXQgKGlmIGFueSkgcm93cyB3aWxsIGJlIHdyaXR0ZW4uIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBDUkVBVEUgVEFCTEUuLi4gU0VMRUNULi4uICBvbiBhIHRhYmxlIHdpdGggYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBvcmRlciBpbiB3aGljaCByb3dzIGFyZSByZXRyaWV2ZWQgYnkgdGhlIFNFTEVDVCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIGluc2VydGVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4ASU5TRVJULi4uIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFICBvbiBhIHRhYmxlIHdpdGggbW9yZSB0aGFuIG9uZSBVTklRVUUgS0VZIGlzIHVuc2FmZQBUYWJsZSBpcyBiZWluZyB1c2VkIGluIGZvcmVpZ24ga2V5IGNoZWNrLgBTdG9yYWdlIGVuZ2luZSAnJXMnIGRvZXMgbm90IHN1cHBvcnQgc3lzdGVtIHRhYmxlcy4gWyVzLiVzXQBJTlNFUlQgaW50byBhdXRvaW5jcmVtZW50IGZpZWxkIHdoaWNoIGlzIG5vdCB0aGUgZmlyc3QgcGFydCBpbiB0aGUgY29tcG9zZWQgcHJpbWFyeSBrZXkgaXMgdW5zYWZlLgBDYW5ub3QgbG9hZCBmcm9tICVzLiVzLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkAFRoZSByZXF1ZXN0ZWQgdmFsdWUgJXMgZm9yIHRoZSBzb3VyY2UgZGVsYXkgZXhjZWVkcyB0aGUgbWF4aW11bSAldQBPbmx5IEZvcm1hdF9kZXNjcmlwdGlvbl9sb2dfZXZlbnQgYW5kIHJvdyBldmVudHMgYXJlIGFsbG93ZWQgaW4gQklOTE9HIHN0YXRlbWVudHMgKGJ1dCAlcyB3YXMgcHJvdmlkZWQpAE5vbiBtYXRjaGluZyBhdHRyaWJ1dGUgJyUtLjY0cycgYmV0d2VlbiBwYXJ0aXRpb24gYW5kIHRhYmxlAFRhYmxlIHRvIGV4Y2hhbmdlIHdpdGggcGFydGl0aW9uIGlzIHBhcnRpdGlvbmVkOiAnJS0uNjRzJwBUYWJsZSB0byBleGNoYW5nZSB3aXRoIHBhcnRpdGlvbiBpcyB0ZW1wb3Jhcnk6ICclLS42NHMnAFN1YnBhcnRpdGlvbmVkIHRhYmxlLCB1c2Ugc3VicGFydGl0aW9uIGluc3RlYWQgb2YgcGFydGl0aW9uAFVua25vd24gcGFydGl0aW9uICclLS42NHMnIGluIHRhYmxlICclLS42NHMnAFRhYmxlcyBoYXZlIGRpZmZlcmVudCBkZWZpbml0aW9ucwBGb3VuZCBhIHJvdyB0aGF0IGRvZXMgbm90IG1hdGNoIHRoZSBwYXJ0aXRpb24AT3B0aW9uIGJpbmxvZ19jYWNoZV9zaXplICglbHUpIGlzIGdyZWF0ZXIgdGhhbiBtYXhfYmlubG9nX2NhY2hlX3NpemUgKCVsdSk7IHNldHRpbmcgYmlubG9nX2NhY2hlX3NpemUgZXF1YWwgdG8gbWF4X2JpbmxvZ19jYWNoZV9zaXplLgBDYW5ub3QgdXNlICUtLjY0cyBhY2Nlc3Mgb24gaW5kZXggJyUtLjY0cycgZHVlIHRvIHR5cGUgb3IgY29sbGF0aW9uIGNvbnZlcnNpb24gb24gZmllbGQgJyUtLjY0cycAVGFibGUgdG8gZXhjaGFuZ2Ugd2l0aCBwYXJ0aXRpb24gaGFzIGZvcmVpZ24ga2V5IHJlZmVyZW5jZXM6ICclLS42NHMnAEtleSB2YWx1ZSAnJS0uMTkycycgd2FzIG5vdCBmb3VuZCBpbiB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJwBEYXRhIGZvciBjb2x1bW4gJyVzJyB0b28gbG9uZwBSZXBsaWNhdGlvbiBldmVudCBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbGVkIHdoaWxlIHJlYWRpbmcgZnJvbSBuZXR3b3JrLgBSZXBsaWNhdGlvbiBldmVudCBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbGVkIHdoaWxlIHJlYWRpbmcgZnJvbSBhIGxvZyBmaWxlLgBPcHRpb24gYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSAoJWx1KSBpcyBncmVhdGVyIHRoYW4gbWF4X2JpbmxvZ19zdG10X2NhY2hlX3NpemUgKCVsdSk7IHNldHRpbmcgYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSBlcXVhbCB0byBtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZS4AQ2FuJ3QgdXBkYXRlIHRhYmxlICclLS4xOTJzJyB3aGlsZSAnJS0uMTkycycgaXMgYmVpbmcgY3JlYXRlZC4AUEFSVElUSU9OICgpIGNsYXVzZSBvbiBub24gcGFydGl0aW9uZWQgdGFibGUARm91bmQgYSByb3cgbm90IG1hdGNoaW5nIHRoZSBnaXZlbiBwYXJ0aXRpb24gc2V0AHBhcnRpb24gJyUtLjY0cycgbmVleGlzdHVqZQBGYWlsdXJlIHdoaWxlIGNoYW5naW5nIHRoZSB0eXBlIG9mIHJlcGxpY2F0aW9uIHJlcG9zaXRvcnk6ICVzLgBUaGUgY3JlYXRpb24gb2Ygc29tZSB0ZW1wb3JhcnkgdGFibGVzIGNvdWxkIG5vdCBiZSByb2xsZWQgYmFjay4AU29tZSB0ZW1wb3JhcnkgdGFibGVzIHdlcmUgZHJvcHBlZCwgYnV0IHRoZXNlIG9wZXJhdGlvbnMgY291bGQgbm90IGJlIHJvbGxlZCBiYWNrLgAlcyBpcyBub3Qgc3VwcG9ydGVkIGluIG11bHRpLXRocmVhZGVkIHJlcGxpY2EgbW9kZS4gJXMAVGhlIG51bWJlciBvZiBtb2RpZmllZCBkYXRhYmFzZXMgZXhjZWVkcyB0aGUgbWF4aW11bSAlZDsgdGhlIGRhdGFiYXNlIG5hbWVzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXBsaWNhdGlvbiBldmVudCBtZXRhZGF0YS4AQ2Fubm90IGV4ZWN1dGUgdGhlIGN1cnJlbnQgZXZlbnQgZ3JvdXAgaW4gdGhlIHBhcmFsbGVsIG1vZGUuIEVuY291bnRlcmVkIGV2ZW50ICVzLCByZWxheS1sb2cgbmFtZSAlcywgcG9zaXRpb24gJXMgd2hpY2ggcHJldmVudHMgZXhlY3V0aW9uIG9mIHRoaXMgZXZlbnQgZ3JvdXAgaW4gcGFyYWxsZWwgbW9kZS4gUmVhc29uOiAlcy4AJXMARlVMTFRFWFQgaW5kZXggaXMgbm90IHN1cHBvcnRlZCBmb3IgcGFydGl0aW9uZWQgdGFibGVzLgBJbnZhbGlkIGNvbmRpdGlvbiBudW1iZXIAU2VuZGluZyBwYXNzd29yZHMgaW4gcGxhaW4gdGV4dCB3aXRob3V0IFNTTC9UTFMgaXMgZXh0cmVtZWx5IGluc2VjdXJlLgBTdG9yaW5nIE15U1FMIHVzZXIgbmFtZSBvciBwYXNzd29yZCBpbmZvcm1hdGlvbiBpbiB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5IGlzIG5vdCBzZWN1cmUgYW5kIGlzIHRoZXJlZm9yZSBub3QgcmVjb21tZW5kZWQuIFBsZWFzZSBjb25zaWRlciB1c2luZyB0aGUgVVNFUiBhbmQgUEFTU1dPUkQgY29ubmVjdGlvbiBvcHRpb25zIGZvciBTVEFSVCBSRVBMSUNBOyBzZWUgdGhlICdTVEFSVCBSRVBMSUNBIFN5bnRheCcgaW4gdGhlIE15U1FMIE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4ARm9yZWlnbiBrZXkgY29uc3RyYWludCBmb3IgdGFibGUgJyUuMTkycycsIHJlY29yZCAnJS0uMTkycycgd291bGQgbGVhZCB0byBhIGR1cGxpY2F0ZSBlbnRyeSBpbiB0YWJsZSAnJS4xOTJzJywga2V5ICclLjE5MnMnAEZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZm9yIHRhYmxlICclLjE5MnMnLCByZWNvcmQgJyUtLjE5MnMnIHdvdWxkIGxlYWQgdG8gYSBkdXBsaWNhdGUgZW50cnkgaW4gYSBjaGlsZCB0YWJsZQBTZXR0aW5nIGF1dGhlbnRpY2F0aW9uIG9wdGlvbnMgaXMgbm90IHBvc3NpYmxlIHdoZW4gb25seSB0aGUgUmVwbGljYSBTUUwgVGhyZWFkIGlzIGJlaW5nIHN0YXJ0ZWQuAFRoZSB0YWJsZSBkb2VzIG5vdCBoYXZlIEZVTExURVhUIGluZGV4IHRvIHN1cHBvcnQgdGhpcyBxdWVyeQBUaGUgc3lzdGVtIHZhcmlhYmxlICUuMjAwcyBjYW5ub3QgYmUgc2V0IGluIHN0b3JlZCBmdW5jdGlvbnMgb3IgdHJpZ2dlcnMuAFRoZSBzeXN0ZW0gdmFyaWFibGUgJS4yMDBzIGNhbm5vdCBiZSBzZXQgd2hlbiB0aGVyZSBpcyBhbiBvbmdvaW5nIHRyYW5zYWN0aW9uLgBUaGUgc3lzdGVtIHZhcmlhYmxlIEBAU0VTU0lPTi5HVElEX05FWFQgaGFzIHRoZSB2YWx1ZSAlLjIwMHMsIHdoaWNoIGlzIG5vdCBsaXN0ZWQgaW4gQEBTRVNTSU9OLkdUSURfTkVYVF9MSVNULgBUaGUgc3lzdGVtIHZhcmlhYmxlIEBAU0VTU0lPTi5HVElEX05FWFQgY2Fubm90IGNoYW5nZSBpbnNpZGUgYSB0cmFuc2FjdGlvbi4AVGhlIHN0YXRlbWVudCAnU0VUICUuMjAwcycgY2Fubm90IGludm9rZSBhIHN0b3JlZCBmdW5jdGlvbi4AVGhlIHN5c3RlbSB2YXJpYWJsZSBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBiZSAnQVVUT01BVElDJyB3aGVuIEBAU0VTU0lPTi5HVElEX05FWFRfTElTVCBpcyBub24tTlVMTC4AU2tpcHBpbmcgdHJhbnNhY3Rpb24gJS4yMDBzIGJlY2F1c2UgaXQgaGFzIGFscmVhZHkgYmVlbiBleGVjdXRlZCBhbmQgbG9nZ2VkLgBNYWxmb3JtZWQgR1RJRCBzZXQgc3BlY2lmaWNhdGlvbiAnJS4yMDBzJy4ATWFsZm9ybWVkIEdUSUQgc2V0IGVuY29kaW5nLgBNYWxmb3JtZWQgR1RJRCBzcGVjaWZpY2F0aW9uICclLjIwMHMnLgBJbXBvc3NpYmxlIHRvIGdlbmVyYXRlIEdUSUQ6IHRoZSBpbnRlZ2VyIGNvbXBvbmVudCByZWFjaGVkIHRoZSBtYXhpbXVtIHZhbHVlLiBSZXN0YXJ0IHRoZSBzZXJ2ZXIgd2l0aCBhIG5ldyBzZXJ2ZXJfdXVpZC4AUGFyYW1ldGVycyBTT1VSQ0VfTE9HX0ZJTEUsIFNPVVJDRV9MT0dfUE9TLCBSRUxBWV9MT0dfRklMRSBhbmQgUkVMQVlfTE9HX1BPUyBjYW5ub3QgYmUgc2V0IHdoZW4gU09VUkNFX0FVVE9fUE9TSVRJT04gaXMgYWN0aXZlLgBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMSBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudHMgd2l0aCBpbXBsaWNpdCBjb21taXQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gd2hlbiBAQFNFU1NJT04uR1RJRF9ORVhUID09ICdVVUlEOk5VTUJFUicuAEdUSURfTU9ERSA9IE9OIHJlcXVpcmVzIEVORk9SQ0VfR1RJRF9DT05TSVNURU5DWSA9IE9OLgBAQEdMT0JBTC5HVElEX01PREUgPSBPTiBvciBPTl9QRVJNSVNTSVZFIG9yIE9GRl9QRVJNSVNTSVZFIHJlcXVpcmVzIC0tbG9nLWJpbiBhbmQgLS1sb2ctcmVwbGljYS11cGRhdGVzLgBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBiZSBzZXQgdG8gVVVJRDpOVU1CRVIgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAEBAU0VTU0lPTi5HVElEX05FWFQgY2Fubm90IGJlIHNldCB0byBBTk9OWU1PVVMgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTi4AQEBTRVNTSU9OLkdUSURfTkVYVF9MSVNUIGNhbm5vdCBiZSBzZXQgdG8gYSBub24tTlVMTCB2YWx1ZSB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRi4ARm91bmQgYSBHdGlkX2xvZ19ldmVudCB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRi4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IFVwZGF0ZXMgdG8gbm9uLXRyYW5zYWN0aW9uYWwgdGFibGVzIGNhbiBvbmx5IGJlIGRvbmUgaW4gZWl0aGVyIGF1dG9jb21taXR0ZWQgc3RhdGVtZW50cyBvciBzaW5nbGUtc3RhdGVtZW50IHRyYW5zYWN0aW9ucywgYW5kIG5ldmVyIGluIHRoZSBzYW1lIHN0YXRlbWVudCBhcyB1cGRhdGVzIHRvIHRyYW5zYWN0aW9uYWwgdGFibGVzLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRBQkxFIC4uLiBTRUxFQ1QuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIGFuZCBEUk9QIFRFTVBPUkFSWSBUQUJMRSBjYW4gb25seSBiZSBleGVjdXRlZCBvdXRzaWRlIHRyYW5zYWN0aW9uYWwgY29udGV4dC4gIFRoZXNlIHN0YXRlbWVudHMgYXJlIGFsc28gbm90IGFsbG93ZWQgaW4gYSBmdW5jdGlvbiBvciB0cmlnZ2VyIGJlY2F1c2UgZnVuY3Rpb25zIGFuZCB0cmlnZ2VycyBhcmUgYWxzbyBjb25zaWRlcmVkIHRvIGJlIG11bHRpLXN0YXRlbWVudCB0cmFuc2FjdGlvbnMuAFRoZSB2YWx1ZSBvZiBAQEdMT0JBTC5HVElEX01PREUgY2FuIG9ubHkgYmUgY2hhbmdlZCBvbmUgc3RlcCBhdCBhIHRpbWU6IE9GRiA8LT4gT0ZGX1BFUk1JU1NJVkUgPC0+IE9OX1BFUk1JU1NJVkUgPC0+IE9OLiBBbHNvIG5vdGUgdGhhdCB0aGlzIHZhbHVlIG11c3QgYmUgc3RlcHBlZCB1cCBvciBkb3duIHNpbXVsdGFuZW91c2x5IG9uIGFsbCBzZXJ2ZXJzLiBTZWUgdGhlIE1hbnVhbCBmb3IgaW5zdHJ1Y3Rpb25zLgBDYW5ub3QgcmVwbGljYXRlIGJlY2F1c2UgdGhlIHNvdXJjZSBwdXJnZWQgcmVxdWlyZWQgYmluYXJ5IGxvZ3MuIFJlcGxpY2F0ZSB0aGUgbWlzc2luZyB0cmFuc2FjdGlvbnMgZnJvbSBlbHNld2hlcmUsIG9yIHByb3Zpc2lvbiBhIG5ldyByZXBsaWNhIGZyb20gYmFja3VwLiBDb25zaWRlciBpbmNyZWFzaW5nIHRoZSBzb3VyY2UncyBiaW5hcnkgbG9nIGV4cGlyYXRpb24gcGVyaW9kLiAlcwBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBiZSBjaGFuZ2VkIGJ5IGEgY2xpZW50IHRoYXQgb3ducyBhIEdUSUQuIFRoZSBjbGllbnQgb3ducyAlcy4gT3duZXJzaGlwIGlzIHJlbGVhc2VkIG9uIENPTU1JVCBvciBST0xMQkFDSy4AVW5rbm93biBFWFBMQUlOIGZvcm1hdCBuYW1lOiAnJXMnAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudCBpbiBhIFJFQUQgT05MWSB0cmFuc2FjdGlvbi4AQ29tbWVudCBmb3IgdGFibGUgcGFydGl0aW9uICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAFJlcGxpY2EgaXMgbm90IGNvbmZpZ3VyZWQgb3IgZmFpbGVkIHRvIGluaXRpYWxpemUgcHJvcGVybHkuIFlvdSBtdXN0IGF0IGxlYXN0IHNldCAtLXNlcnZlci1pZCB0byBlbmFibGUgZWl0aGVyIGEgc291cmNlIG9yIGEgcmVwbGljYS4gQWRkaXRpb25hbCBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZy4ASW5ub0RCIHByZXNlbnRseSBzdXBwb3J0cyBvbmUgRlVMTFRFWFQgaW5kZXggY3JlYXRpb24gYXQgYSB0aW1lAENhbm5vdCBjcmVhdGUgRlVMTFRFWFQgaW5kZXggb24gdGVtcG9yYXJ5IElubm9EQiB0YWJsZQBDb2x1bW4gJyUtLjE5MnMnIGlzIG9mIHdyb25nIHR5cGUgZm9yIGFuIElubm9EQiBGVUxMVEVYVCBpbmRleABJbmRleCAnJS0uMTkycycgaXMgb2Ygd3JvbmcgdHlwZSBmb3IgYW4gSW5ub0RCIEZVTExURVhUIGluZGV4AENyZWF0aW5nIGluZGV4ICclLS4xOTJzJyByZXF1aXJlZCBtb3JlIHRoYW4gJ2lubm9kYl9vbmxpbmVfYWx0ZXJfbG9nX21heF9zaXplJyBieXRlcyBvZiBtb2RpZmljYXRpb24gbG9nLiBQbGVhc2UgdHJ5IGFnYWluLgBVbmtub3duIEFMR09SSVRITSAnJXMnAFVua25vd24gTE9DSyB0eXBlICclcycAQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hlbiB0aGUgcmVwbGljYSB3YXMgc3RvcHBlZCB3aXRoIGFuIGVycm9yIG9yIGtpbGxlZCBpbiBNVEEgbW9kZS4gQ29uc2lkZXIgdXNpbmcgUkVTRVQgUkVQTElDQSBvciBTVEFSVCBSRVBMSUNBIFVOVElMLgBDYW5ub3QgcmVjb3ZlciBhZnRlciBSRVBMSUNBIGVycm9yZWQgb3V0IGluIHBhcmFsbGVsIGV4ZWN1dGlvbiBtb2RlLiBBZGRpdGlvbmFsIGVycm9yIG1lc3NhZ2VzIGNhbiBiZSBmb3VuZCBpbiB0aGUgTXlTUUwgZXJyb3IgbG9nLgBDYW5ub3QgY2xlYW4gdXAgd29ya2VyIGluZm8gdGFibGVzLiBBZGRpdGlvbmFsIGVycm9yIG1lc3NhZ2VzIGNhbiBiZSBmb3VuZCBpbiB0aGUgTXlTUUwgZXJyb3IgbG9nLgBDb2x1bW4gY291bnQgb2YgJXMuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gVGhlIHRhYmxlIGlzIHByb2JhYmx5IGNvcnJ1cHRlZABSZXBsaWNhIG11c3Qgc2lsZW50bHkgcmV0cnkgY3VycmVudCB0cmFuc2FjdGlvbgBUaGVyZSBpcyBhIGZvcmVpZ24ga2V5IGNoZWNrIHJ1bm5pbmcgb24gdGFibGUgJyUtLjE5MnMnLiBDYW5ub3QgZGlzY2FyZCB0aGUgdGFibGUuAFNjaGVtYSBtaXNtYXRjaCAoJXMpAFRhYmxlICclLS4xOTJzJyBpbiBzeXN0ZW0gdGFibGVzcGFjZQBJTyBSZWFkIGVycm9yOiAoJWx1LCAlcykgJXMASU8gV3JpdGUgZXJyb3I6ICglbHUsICVzKSAlcwBUYWJsZXNwYWNlIGlzIG1pc3NpbmcgZm9yIHRhYmxlICVzLgBUYWJsZXNwYWNlICclLS4xOTJzJyBleGlzdHMuAFRhYmxlc3BhY2UgaGFzIGJlZW4gZGlzY2FyZGVkIGZvciB0YWJsZSAnJS0uMTkycycASW50ZXJuYWwgZXJyb3I6ICVzAEFMVEVSIFRBQkxFICUtLjE5MnMgSU1QT1JUIFRBQkxFU1BBQ0UgZmFpbGVkIHdpdGggZXJyb3IgJWx1IDogJyVzJwBJbmRleCBjb3JydXB0OiAlcwBJbnZhbGlkIGRpc3BsYXkgd2lkdGguIFVzZSBZRUFSIGluc3RlYWQuAFlvdXIgcGFzc3dvcmQgZG9lcyBub3Qgc2F0aXNmeSB0aGUgY3VycmVudCBwb2xpY3kgcmVxdWlyZW1lbnRzAFlvdSBtdXN0IHJlc2V0IHlvdXIgcGFzc3dvcmQgdXNpbmcgQUxURVIgVVNFUiBzdGF0ZW1lbnQgYmVmb3JlIGV4ZWN1dGluZyB0aGlzIHN0YXRlbWVudC4ARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludC4gTWlzc2luZyBpbmRleCBmb3IgY29uc3RyYWludCAnJXMnIGluIHRoZSBmb3JlaWduIHRhYmxlICclcycARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludC4gTWlzc2luZyBpbmRleCBmb3IgY29uc3RyYWludCAnJXMnIGluIHRoZSByZWZlcmVuY2VkIHRhYmxlICclcycARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJXMnIHRvIHN5c3RlbSB0YWJsZXMARmFpbGVkIHRvIG9wZW4gdGhlIHJlZmVyZW5jZWQgdGFibGUgJyVzJwBGYWlsZWQgdG8gYWRkIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRhYmxlICclcycuIEluY29ycmVjdCBvcHRpb25zIGluIEZPUkVJR04gS0VZIGNvbnN0cmFpbnQgJyVzJwBEdXBsaWNhdGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBuYW1lICclcycAVGhlIHBhc3N3b3JkIGhhc2ggZG9lc24ndCBoYXZlIHRoZSBleHBlY3RlZCBmb3JtYXQuAENhbm5vdCBkcm9wIGNvbHVtbiAnJS0uMTkycyc6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnAENhbm5vdCBkcm9wIGNvbHVtbiAnJS0uMTkycyc6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIG9mIHRhYmxlICclLS4xOTJzJwBDb2x1bW4gJyUtLjE5MnMnIGNhbm5vdCBiZSBOT1QgTlVMTDogbmVlZGVkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycgU0VUIE5VTEwARHVwbGljYXRlIGluZGV4ICclLS42NHMnIGRlZmluZWQgb24gdGhlIHRhYmxlICclLS42NHMuJS0uNjRzJy4gVGhpcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIGRpc2FsbG93ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AQ2Fubm90IGNoYW5nZSBjb2x1bW4gJyUtLjE5MnMnOiB1c2VkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycAQ2Fubm90IGNoYW5nZSBjb2x1bW4gJyUtLjE5MnMnOiB1c2VkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycgb2YgdGFibGUgJyUtLjE5MnMnAENhbm5vdCBkZWxldGUgcm93cyBmcm9tIHRhYmxlIHdoaWNoIGlzIHBhcmVudCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIG9mIHRhYmxlICclLS4xOTJzJwBNYWxmb3JtZWQgY29tbXVuaWNhdGlvbiBwYWNrZXQuAFJ1bm5pbmcgaW4gcmVhZC1vbmx5IG1vZGUAV2hlbiBAQFNFU1NJT04uR1RJRF9ORVhUIGlzIHNldCB0byBhIEdUSUQsIHlvdSBtdXN0IGV4cGxpY2l0bHkgc2V0IGl0IHRvIGEgZGlmZmVyZW50IHZhbHVlIGFmdGVyIGEgQ09NTUlUIG9yIFJPTExCQUNLLiBQbGVhc2UgY2hlY2sgR1RJRF9ORVhUIHZhcmlhYmxlIG1hbnVhbCBwYWdlIGZvciBkZXRhaWxlZCBleHBsYW5hdGlvbi4gQ3VycmVudCBAQFNFU1NJT04uR1RJRF9ORVhUIGlzICclcycuAFRoZSBzeXN0ZW0gdmFyaWFibGUgJS4yMDBzIGNhbm5vdCBiZSBzZXQgaW4gc3RvcmVkIHByb2NlZHVyZXMuAEBAR0xPQkFMLkdUSURfUFVSR0VEIGNhbiBvbmx5IGJlIHNldCB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLgBAQEdMT0JBTC5HVElEX1BVUkdFRCBjYW4gb25seSBiZSBzZXQgd2hlbiBAQEdMT0JBTC5HVElEX0VYRUNVVEVEIGlzIGVtcHR5LgBAQEdMT0JBTC5HVElEX1BVUkdFRCBjYW4gb25seSBiZSBzZXQgd2hlbiB0aGVyZSBhcmUgbm8gb25nb2luZyB0cmFuc2FjdGlvbnMgKG5vdCBldmVuIGluIG90aGVyIGNsaWVudHMpLgBAQEdMT0JBTC5HVElEX1BVUkdFRCB3YXMgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJy4AQEBHTE9CQUwuR1RJRF9FWEVDVVRFRCB3YXMgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJy4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2UgQklOTE9HX0ZPUk1BVCA9IFNUQVRFTUVOVCwgYW5kIGJvdGggcmVwbGljYXRlZCBhbmQgbm9uIHJlcGxpY2F0ZWQgdGFibGVzIGFyZSB3cml0dGVuIHRvLgAlcyBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIG9wZXJhdGlvbi4gVHJ5ICVzLgAlcyBpcyBub3Qgc3VwcG9ydGVkLiBSZWFzb246ICVzLiBUcnkgJXMuAENPUFkgYWxnb3JpdGhtIHJlcXVpcmVzIGEgbG9jawBQYXJ0aXRpb24gc3BlY2lmaWMgb3BlcmF0aW9ucyBkbyBub3QgeWV0IHN1cHBvcnQgTE9DSy9BTEdPUklUSE0AQ29sdW1ucyBwYXJ0aWNpcGF0aW5nIGluIGEgZm9yZWlnbiBrZXkgYXJlIHJlbmFtZWQAQ2Fubm90IGNoYW5nZSBjb2x1bW4gdHlwZSBJTlBMQUNFAEFkZGluZyBmb3JlaWduIGtleXMgbmVlZHMgZm9yZWlnbl9rZXlfY2hlY2tzPU9GRgBDcmVhdGluZyB1bmlxdWUgaW5kZXhlcyB3aXRoIElHTk9SRSByZXF1aXJlcyBDT1BZIGFsZ29yaXRobSB0byByZW1vdmUgZHVwbGljYXRlIHJvd3MARHJvcHBpbmcgYSBwcmltYXJ5IGtleSBpcyBub3QgYWxsb3dlZCB3aXRob3V0IGFsc28gYWRkaW5nIGEgbmV3IHByaW1hcnkga2V5AEFkZGluZyBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4gcmVxdWlyZXMgYSBsb2NrAENhbm5vdCByZXBsYWNlIGhpZGRlbiBGVFNfRE9DX0lEIHdpdGggYSB1c2VyLXZpc2libGUgb25lAENhbm5vdCBkcm9wIG9yIHJlbmFtZSBGVFNfRE9DX0lEAEZ1bGx0ZXh0IGluZGV4IGNyZWF0aW9uIHJlcXVpcmVzIGEgbG9jawBzcWxfcmVwbGljYV9za2lwX2NvdW50ZXIgY2FuIG5vdCBiZSBzZXQgd2hlbiB0aGUgc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCBAQEdMT0JBTC5HVElEX01PREUgPSBPTi4gSW5zdGVhZCwgZm9yIGVhY2ggdHJhbnNhY3Rpb24gdGhhdCB5b3Ugd2FudCB0byBza2lwLCBnZW5lcmF0ZSBhbiBlbXB0eSB0cmFuc2FjdGlvbiB3aXRoIHRoZSBzYW1lIEdUSUQgYXMgdGhlIHRyYW5zYWN0aW9uAFpkdm9qZW7DvSBrbMOtxI0gKMSNw61zbG8ga2zDrcSNZSAnJS0uMTkycycpAExvbmcgZGF0YWJhc2UgbmFtZSBhbmQgaWRlbnRpZmllciBmb3Igb2JqZWN0IHJlc3VsdGVkIGluIHBhdGggbGVuZ3RoIGV4Y2VlZGluZyAlZCBjaGFyYWN0ZXJzLiBQYXRoOiAnJXMnLgBjYW5ub3Qgc2lsZW50bHkgY29udmVydCBOVUxMIHZhbHVlcywgYXMgcmVxdWlyZWQgaW4gdGhpcyBTUUxfTU9ERQBZb3VyIHBhc3N3b3JkIGhhcyBleHBpcmVkLiBUbyBsb2cgaW4geW91IG11c3QgY2hhbmdlIGl0IHVzaW5nIGEgY2xpZW50IHRoYXQgc3VwcG9ydHMgZXhwaXJlZCBwYXNzd29yZHMuAEZvdW5kIGEgcm93IGluIHdyb25nIHBhcnRpdGlvbiAlcwBDYW5ub3Qgc2NoZWR1bGUgZXZlbnQgJXMsIHJlbGF5LWxvZyBuYW1lICVzLCBwb3NpdGlvbiAlcyB0byBXb3JrZXIgdGhyZWFkIGJlY2F1c2UgaXRzIHNpemUgJWx1IGV4Y2VlZHMgJWx1IG9mIHJlcGxpY2FfcGVuZGluZ19qb2JzX3NpemVfbWF4LgBDYW5ub3QgQ1JFQVRFIEZVTExURVhUIElOREVYIFdJVEggUEFSU0VSIG9uIElubm9EQiB0YWJsZQBUaGUgYmluYXJ5IGxvZyBmaWxlICclcycgaXMgbG9naWNhbGx5IGNvcnJ1cHRlZDogJXMAZmlsZSAlcyB3YXMgbm90IHB1cmdlZCBiZWNhdXNlIGl0IHdhcyBiZWluZyByZWFkIGJ5ICVkIHRocmVhZChzKSwgcHVyZ2VkIG9ubHkgJWQgb3V0IG9mICVkIGZpbGVzLgBmaWxlICVzIHdhcyBub3QgcHVyZ2VkIGJlY2F1c2UgaXQgaXMgdGhlIGFjdGl2ZSBsb2cgZmlsZS4AQXV0by1pbmNyZW1lbnQgdmFsdWUgaW4gVVBEQVRFIGNvbmZsaWN0cyB3aXRoIGludGVybmFsbHkgZ2VuZXJhdGVkIHZhbHVlcwBSb3cgZXZlbnRzIGFyZSBub3QgbG9nZ2VkIGZvciAlcyBzdGF0ZW1lbnRzIHRoYXQgbW9kaWZ5IEJMQUNLSE9MRSB0YWJsZXMgaW4gcm93IGZvcm1hdC4gVGFibGUocyk6ICclLS4xOTJzJwBSZXBsaWNhIGZhaWxlZCB0byBpbml0aWFsaXplIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlIGZyb20gdGhlIHJlcG9zaXRvcnkAUmVwbGljYSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBhcHBsaWVyIG1ldGFkYXRhIHN0cnVjdHVyZSBmcm9tIHRoZSByZXBvc2l0b3J5AEFjY2VzcyBkZW5pZWQgdHJ5aW5nIHRvIGNoYW5nZSB0byB1c2VyICclLS40OHMnQCclLS42NHMnICh1c2luZyBwYXNzd29yZDogJXMpLiBEaXNjb25uZWN0aW5nLgBJbm5vREIgaXMgaW4gcmVhZCBvbmx5IG1vZGUuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIFNRTCB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIFNRTCB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgSU8gdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBJTyB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AT3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQuIFRoZSB0YWJsZSAnJS0uNjRzLiUtLjY0cycgaXMgbWlzc2luZywgY29ycnVwdCBvciBjb250YWlucyBiYWQgZGF0YS4AVGVtcG9yYXJ5IGZpbGUgd3JpdGUgZmFpbHVyZS4AVXBncmFkZSBpbmRleCBuYW1lIGZhaWxlZCwgcGxlYXNlIHVzZSBjcmVhdGUgaW5kZXgoYWx0ZXIgdGFibGUpIGFsZ29yaXRobSBjb3B5IHRvIHJlYnVpbGQgaW5kZXguAFRJTUUvVElNRVNUQU1QL0RBVEVUSU1FIGNvbHVtbnMgb2Ygb2xkIGZvcm1hdCBoYXZlIGJlZW4gdXBncmFkZWQgdG8gdGhlIG5ldyBmb3JtYXQuAE9wZXJhdGlvbiBub3QgYWxsb3dlZCB3aGVuIGlubm9kYl9mb3JjZV9yZWNvdmVyeSA+IDAuAFRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3Igc3VwcGxpZWQgdG8gJXMgaXMgdG9vIHNob3J0LiBNdXN0IGJlIGF0IGxlYXN0ICVkIGJ5dGVzIGxvbmcAUGx1Z2luICclcycgY2Fubm90IGJlIHVuaW5zdGFsbGVkIG5vdy4gJXMAQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50IGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgd3JpdHRlbiB0byB0aGUgYmluYXJ5IGxvZyBhcyBtdWx0aXBsZSBzdGF0ZW1lbnRzLCBhbmQgdGhpcyBpcyBub3QgYWxsb3dlZCB3aGVuIEBAU0VTU0lPTi5HVElEX05FWFQgPT0gJ1VVSUQ6TlVNQkVSJy4AUmVwbGljYSBoYXMgbW9yZSBHVElEcyB0aGFuIHRoZSBzb3VyY2UgaGFzLCB1c2luZyB0aGUgc291cmNlJ3MgU0VSVkVSX1VVSUQuIFRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIHRoZSBsYXN0IGJpbmFyeSBsb2cgZmlsZSB3YXMgdHJ1bmNhdGVkIG9yIGxvc3QsIGUuZy4sIGFmdGVyIGEgcG93ZXIgZmFpbHVyZSB3aGVuIHN5bmNfYmlubG9nICE9IDEuIFRoZSBzb3VyY2UgbWF5IGhhdmUgcm9sbGVkIGJhY2sgdHJhbnNhY3Rpb25zIHRoYXQgd2VyZSBhbHJlYWR5IHJlcGxpY2F0ZWQgdG8gdGhlIHJlcGxpY2EuIFJlcGxpY2F0ZSBhbnkgdHJhbnNhY3Rpb25zIHRoYXQgc291cmNlIGhhcyByb2xsZWQgYmFjayBmcm9tIHJlcGxpY2EgdG8gc291cmNlLCBhbmQvb3IgY29tbWl0IGVtcHR5IHRyYW5zYWN0aW9ucyBvbiBzb3VyY2UgdG8gYWNjb3VudCBmb3IgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGNvbW1pdHRlZCBvbiBzb3VyY2UgYnV0IGFyZSBub3QgaW5jbHVkZWQgaW4gR1RJRF9FWEVDVVRFRC4AVGhlIHRhYmxlICclcy4lcycgZG9lcyBub3QgaGF2ZSB0aGUgbmVjZXNzYXJ5IGtleShzKSBkZWZpbmVkIG9uIGl0LiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlIGRlZmluaXRpb24gYW5kIGNyZWF0ZSBpbmRleChzKSBhY2NvcmRpbmdseS4AU2V0dGluZyBuYW1lZF9waXBlX2Z1bGxfYWNjZXNzX2dyb3VwPSclcycgaXMgaW5zZWN1cmUuIENvbnNpZGVyIHVzaW5nIGEgV2luZG93cyBncm91cCB3aXRoIGZld2VyIG1lbWJlcnMuAEZpbGUgJXMgaXMgY29ycnVwdGVkAFF1ZXJ5IHBhcnRpYWxseSBjb21wbGV0ZWQgb24gdGhlIHNvdXJjZSAoZXJyb3Igb24gc291cmNlOiAlZCkgYW5kIHdhcyBhYm9ydGVkLiBUaGVyZSBpcyBhIGNoYW5jZSB0aGF0IHlvdXIgc291cmNlIGlzIGluY29uc2lzdGVudCBhdCB0aGlzIHBvaW50LiBJZiB5b3UgYXJlIHN1cmUgdGhhdCB5b3VyIHNvdXJjZSBpcyBvaywgcnVuIHRoaXMgcXVlcnkgbWFudWFsbHkgb24gdGhlIHJlcGxpY2EgYW5kIHRoZW4gcmVzdGFydCB0aGUgcmVwbGljYSB3aXRoIFNFVCBHTE9CQUwgU1FMX1JFUExJQ0FfU0tJUF9DT1VOVEVSPTE7IFNUQVJUIFJFUExJQ0E7LiBRdWVyeTonJXMnAFF1ZXJ5IGNhdXNlZCBkaWZmZXJlbnQgZXJyb3JzIG9uIHNvdXJjZSBhbmQgcmVwbGljYS4gRXJyb3Igb24gc291cmNlOiBtZXNzYWdlIChmb3JtYXQpPSclcycgZXJyb3IgY29kZT0lZDsgRXJyb3Igb24gcmVwbGljYTphY3R1YWwgbWVzc2FnZT0nJXMnLCBlcnJvciBjb2RlPSVkLiBEZWZhdWx0IGRhdGFiYXNlOiclcycuIFF1ZXJ5OiclcycAU3RvcmFnZSBlbmdpbmUgZm9yIHRhYmxlICclcycuJyVzJyBpcyBub3QgbG9hZGVkLgBHRVQgU1RBQ0tFRCBESUFHTk9TVElDUyB3aGVuIGhhbmRsZXIgbm90IGFjdGl2ZQAlcyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiBUaGUgc3RhdGVtZW50IHdhcyBjb252ZXJ0ZWQgdG8gJXMuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgZnVsbHRleHQgcGFyc2VyIHBsdWdpbiB3aGljaCBtYXkgbm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AQ2Fubm90IERJU0NBUkQvSU1QT1JUIHRhYmxlc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRlbXBvcmFyeSB0YWJsZQBGb3JlaWduIGtleSBjYXNjYWRlIGRlbGV0ZS91cGRhdGUgZXhjZWVkcyBtYXggZGVwdGggb2YgJWQuAFRoZSBjb2x1bW4gY291bnQgb2YgJXMuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gQ3JlYXRlZCB3aXRoIE15U1FMICVkLCBub3cgcnVubmluZyAlZC4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBUcmlnZ2VyICVzLiVzLiVzIGRvZXMgbm90IGhhdmUgQ1JFQVRFRCBhdHRyaWJ1dGUuAFJlZmVyZW5jZWQgdHJpZ2dlciAnJXMnIGZvciB0aGUgZ2l2ZW4gYWN0aW9uIHRpbWUgYW5kIGV2ZW50IHR5cGUgZG9lcyBub3QgZXhpc3QuAEVYUExBSU4gRk9SIENPTk5FQ1RJT04gY29tbWFuZCBpcyBzdXBwb3J0ZWQgb25seSBmb3IgU0VMRUNUL1VQREFURS9JTlNFUlQvREVMRVRFL1JFUExBQ0UASW52YWxpZCBzaXplIGZvciBjb2x1bW4gJyUtLjE5MnMnLgBUYWJsZSBzdG9yYWdlIGVuZ2luZSAnJS0uNjRzJyBmb3VuZCByZXF1aXJlZCBjcmVhdGUgb3B0aW9uIG1pc3NpbmcAT3V0IG9mIG1lbW9yeSBpbiBzdG9yYWdlIGVuZ2luZSAnJS0uNjRzJy4AVGhlIHBhc3N3b3JkIGZvciBhbm9ueW1vdXMgdXNlciBjYW5ub3QgYmUgZXhwaXJlZC4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIGEgcnVubmluZyByZXBsaWNhIHNxbCB0aHJlYWQ7IHJ1biBTVE9QIFJFUExJQ0EgU1FMX1RIUkVBRCBmaXJzdABDYW5ub3QgY3JlYXRlIEZVTExURVhUIGluZGV4IG9uIG1hdGVyaWFsaXplZCBzdWJxdWVyeQBVbmRvIExvZyBlcnJvcjogJXMASW52YWxpZCBhcmd1bWVudCBmb3IgbG9nYXJpdGhtAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2l0aCBhIHJ1bm5pbmcgcmVwbGljYSBpbyB0aHJlYWQ7IHJ1biBTVE9QIFJFUExJQ0EgSU9fVEhSRUFEIEZPUiBDSEFOTkVMICclcycgZmlyc3QuAFRoaXMgb3BlcmF0aW9uIG1heSBub3QgYmUgc2FmZSB3aGVuIHRoZSByZXBsaWNhIGhhcyB0ZW1wb3JhcnkgdGFibGVzLiBUaGUgdGFibGVzIHdpbGwgYmUga2VwdCBvcGVuIHVudGlsIHRoZSBzZXJ2ZXIgcmVzdGFydHMgb3IgdW50aWwgdGhlIHRhYmxlcyBhcmUgZGVsZXRlZCBieSBhbnkgcmVwbGljYXRlZCBEUk9QIHN0YXRlbWVudC4gU3VnZ2VzdCB0byB3YWl0IHVudGlsIHJlcGxpY2Ffb3Blbl90ZW1wX3RhYmxlcyA9IDAuAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gd2l0aCBhIFNPVVJDRV9MT0dfRklMRSBjbGF1c2UgYnV0IG5vIFNPVVJDRV9MT0dfUE9TIGNsYXVzZSBtYXkgbm90IGJlIHNhZmUuIFRoZSBvbGQgcG9zaXRpb24gdmFsdWUgbWF5IG5vdCBiZSB2YWxpZCBmb3IgdGhlIG5ldyBiaW5hcnkgbG9nIGZpbGUuAFF1ZXJ5IGV4ZWN1dGlvbiB3YXMgaW50ZXJydXB0ZWQsIG1heGltdW0gc3RhdGVtZW50IGV4ZWN1dGlvbiB0aW1lIGV4Y2VlZGVkAFNlbGVjdCBpcyBub3QgYSByZWFkIG9ubHkgc3RhdGVtZW50LCBkaXNhYmxpbmcgdGltZXIARHVwbGljYXRlIGVudHJ5ICclLS4xOTJzJy4AJyVzJyBtb2RlIG5vIGxvbmdlciBoYXMgYW55IGVmZmVjdC4gVXNlIFNUUklDVF9BTExfVEFCTEVTIG9yIFNUUklDVF9UUkFOU19UQUJMRVMgaW5zdGVhZC4ARXhwcmVzc2lvbiAjJXUgb2YgT1JERVIgQlkgY29udGFpbnMgYWdncmVnYXRlIGZ1bmN0aW9uIGFuZCBhcHBsaWVzIHRvIGEgVU5JT04sIEVYQ0VQVCBvciBJTlRFUlNFQ1QARXhwcmVzc2lvbiAjJXUgb2YgT1JERVIgQlkgY29udGFpbnMgYWdncmVnYXRlIGZ1bmN0aW9uIGFuZCBhcHBsaWVzIHRvIHRoZSByZXN1bHQgb2YgYSBub24tYWdncmVnYXRlZCBxdWVyeQBSZXBsaWNhIHdvcmtlciBoYXMgc3RvcHBlZCBhZnRlciBhdCBsZWFzdCBvbmUgcHJldmlvdXMgd29ya2VyIGVuY291bnRlcmVkIGFuIGVycm9yIHdoZW4gcmVwbGljYS1wcmVzZXJ2ZS1jb21taXQtb3JkZXIgd2FzIGVuYWJsZWQuIFRvIHByZXNlcnZlIGNvbW1pdCBvcmRlciwgdGhlIGxhc3QgdHJhbnNhY3Rpb24gZXhlY3V0ZWQgYnkgdGhpcyB0aHJlYWQgaGFzIG5vdCBiZWVuIGNvbW1pdHRlZC4gV2hlbiByZXN0YXJ0aW5nIHRoZSByZXBsaWNhIGFmdGVyIGZpeGluZyBhbnkgZmFpbGVkIHRocmVhZHMsIHlvdSBzaG91bGQgZml4IHRoaXMgd29ya2VyIGFzIHdlbGwuAHJlcGxpY2FfcHJlc2VydmVfY29tbWl0X29yZGVyIGlzIG5vdCBzdXBwb3J0ZWQgJXMuAFRoZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGluIG9mZmxpbmUgbW9kZQBCaW5hcnkgZ2VvbWV0cnkgZnVuY3Rpb24gJXMgZ2l2ZW4gdHdvIGdlb21ldHJpZXMgb2YgZGlmZmVyZW50IHNyaWRzOiAldSBhbmQgJXUsIHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gaWRlbnRpY2FsLgBDYWxsaW5nIGdlb21ldHJ5IGZ1bmN0aW9uICVzIHdpdGggdW5zdXBwb3J0ZWQgdHlwZXMgb2YgYXJndW1lbnRzLgBVbmtub3duIEdJUyBlcnJvciBvY2N1cnJlZCBpbiBmdW5jdGlvbiAlcy4AVW5rbm93biBleGNlcHRpb24gY2F1Z2h0IGluIEdJUyBmdW5jdGlvbiAlcy4ASW52YWxpZCBHSVMgZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlcy4AVGhlIGdlb21ldHJ5IGhhcyBubyBkYXRhIGluIGZ1bmN0aW9uICVzLgBVbmFibGUgdG8gY2FsY3VsYXRlIGNlbnRyb2lkIGJlY2F1c2UgZ2VvbWV0cnkgaXMgZW1wdHkgaW4gZnVuY3Rpb24gJXMuAEdlb21ldHJ5IG92ZXJsYXkgY2FsY3VsYXRpb24gZXJyb3I6IGdlb21ldHJ5IGRhdGEgaXMgaW52YWxpZCBpbiBmdW5jdGlvbiAlcy4AR2VvbWV0cnkgdHVybiBpbmZvIGNhbGN1bGF0aW9uIGVycm9yOiBnZW9tZXRyeSBkYXRhIGlzIGludmFsaWQgaW4gZnVuY3Rpb24gJXMuAEFuYWx5c2lzIHByb2NlZHVyZXMgb2YgaW50ZXJzZWN0aW9uIHBvaW50cyBpbnRlcnJ1cHRlZCB1bmV4cGVjdGVkbHkgaW4gZnVuY3Rpb24gJXMuAFVua25vd24gZXhjZXB0aW9uIHRocm93biBpbiBmdW5jdGlvbiAlcy4ATWVtb3J5IGFsbG9jYXRpb24gZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAERvbWFpbiBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ATGVuZ3RoIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBJbnZhbGlkIGFyZ3VtZW50IGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBPdXQgb2YgcmFuZ2UgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAE92ZXJmbG93IGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBSYW5nZSBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AVW5kZXJmbG93IGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBMb2dpYyBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AUnVudGltZSBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AVW5rbm93biBleGNlcHRpb246ICUtLjM4NHMgaW4gZnVuY3Rpb24gJXMuAEdlb21ldHJ5IGJ5dGUgc3RyaW5nIG11c3QgYmUgbGl0dGxlIGVuZGlhbi4AVGhlIHBhc3N3b3JkIHByb3ZpZGVkIGZvciB0aGUgcmVwbGljYXRpb24gdXNlciBleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiAzMiBjaGFyYWN0ZXJzAEluY29ycmVjdCB1c2VyLWxldmVsIGxvY2sgbmFtZSAnJS0uMTkycycuIFRoZSBuYW1lIGlzIGVtcHR5LCBOVUxMLCBvciBjYW4gbm90IGJlIGV4cHJlc3NlZCBpbiB0aGUgY3VycmVudCBjaGFyYWN0ZXItc2V0LgBEZWFkbG9jayBmb3VuZCB3aGVuIHRyeWluZyB0byBnZXQgdXNlci1sZXZlbCBsb2NrOyB0cnkgcm9sbGluZyBiYWNrIHRyYW5zYWN0aW9uL3JlbGVhc2luZyBsb2NrcyBhbmQgcmVzdGFydGluZyBsb2NrIGFjcXVpc2l0aW9uLgBSRVBMQUNFIGNhbm5vdCBiZSBleGVjdXRlZCBhcyBpdCByZXF1aXJlcyBkZWxldGluZyByb3dzIHRoYXQgYXJlIG5vdCBpbiB0aGUgdmlldwBEbyBub3Qgc3VwcG9ydCBvbmxpbmUgb3BlcmF0aW9uIG9uIHRhYmxlIHdpdGggR0lTIGluZGV4AFVzZXIgdmFyaWFibGUgbmFtZSAnJS0uMTAwcycgaXMgaWxsZWdhbABDYW5ub3QgJXMgd2hlbiBHVElEX01PREUgPSBPRkYuAENhbm5vdCAlcyBmcm9tIGEgcmVwbGljYSB0aHJlYWQuAEluY29ycmVjdCB0eXBlIGZvciBhcmd1bWVudCAlcyBpbiBmdW5jdGlvbiAlcy4ARXhwcmVzc2lvbiAjJXUgb2YgT1JERVIgQlkgY2xhdXNlIGlzIG5vdCBpbiBTRUxFQ1QgbGlzdCwgcmVmZXJlbmNlcyBjb2x1bW4gJyUtLjE5MnMnIHdoaWNoIGlzIG5vdCBpbiBTRUxFQ1QgbGlzdDsgdGhpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAlcwBFeHByZXNzaW9uICMldSBvZiBPUkRFUiBCWSBjbGF1c2UgaXMgbm90IGluIFNFTEVDVCBsaXN0LCBjb250YWlucyBhZ2dyZWdhdGUgZnVuY3Rpb247IHRoaXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJXMAU3VwcGxpZWQgZmlsdGVyIGxpc3QgY29udGFpbnMgYSB2YWx1ZSB3aGljaCBpcyBub3QgaW4gdGhlIHJlcXVpcmVkIGZvcm1hdCAnZGJfcGF0dGVybi50YWJsZV9wYXR0ZXJuJwBPSyBwYWNrZXQgdG9vIGxhcmdlAEludmFsaWQgSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiAlcwBJbnZhbGlkIEdlb0pTT04gZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogTWlzc2luZyByZXF1aXJlZCBtZW1iZXIgJyVzJwBJbnZhbGlkIEdlb0pTT04gZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogTWVtYmVyICclcycgbXVzdCBiZSBvZiB0eXBlICclcycASW52YWxpZCBHZW9KU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXMAVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGNvb3JkaW5hdGUgZGltZW5zaW9ucyBpbiBmdW5jdGlvbiAlczogRm91bmQgJXUsIGV4cGVjdGVkICV1AFJlcGxpY2EgY2hhbm5lbCAnJXMnIGRvZXMgbm90IGV4aXN0LgBBIHJlcGxpY2EgY2hhbm5lbCAnJXMnIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgZ2l2ZW4gaG9zdCBhbmQgcG9ydCBjb21iaW5hdGlvbi4AQ291bGRuJ3QgY3JlYXRlIGNoYW5uZWw6IENoYW5uZWwgbmFtZSBpcyBlaXRoZXIgaW52YWxpZCBvciB0b28gbG9uZy4AVG8gaGF2ZSBtdWx0aXBsZSBjaGFubmVscywgcmVwb3NpdG9yeSBjYW5ub3QgYmUgb2YgdHlwZSBGSUxFOyBQbGVhc2UgY2hlY2sgdGhlIHJlcG9zaXRvcnkgY29uZmlndXJhdGlvbiBhbmQgY29udmVydCB0aGVtIHRvIFRBQkxFLgBDYW5ub3QgZGVsZXRlIHJlcGxpY2EgaW5mbyBvYmplY3RzIGZvciBjaGFubmVsICclcycuAE11bHRpcGxlIGNoYW5uZWxzIGV4aXN0IG9uIHRoZSByZXBsaWNhLiBQbGVhc2UgcHJvdmlkZSBjaGFubmVsIG5hbWUgYXMgYW4gYXJndW1lbnQuAE1heGltdW0gbnVtYmVyIG9mIHJlcGxpY2F0aW9uIGNoYW5uZWxzIGFsbG93ZWQgZXhjZWVkZWQuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2l0aCBydW5uaW5nIHJlcGxpY2F0aW9uIHRocmVhZHM7IHJ1biBTVE9QIFJFUExJQ0EgRk9SIENIQU5ORUwgJyVzJyBmaXJzdABUaGlzIG9wZXJhdGlvbiByZXF1aXJlcyBydW5uaW5nIHJlcGxpY2F0aW9uIHRocmVhZHM7IGNvbmZpZ3VyZSByZXBsaWNhIGFuZCBydW4gU1RBUlQgUkVQTElDQSBGT1IgQ0hBTk5FTCAnJXMnAFJlcGxpY2F0aW9uIHRocmVhZChzKSBmb3IgY2hhbm5lbCAnJXMnIGFyZSBhbHJlYWR5IHJ1bm5uaW5nLgBSZXBsaWNhdGlvbiB0aHJlYWQocykgZm9yIGNoYW5uZWwgJyVzJyBhcmUgYWxyZWFkeSBzdG9wcGVkLgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdpdGggYSBydW5uaW5nIHJlcGxpY2Egc3FsIHRocmVhZDsgcnVuIFNUT1AgUkVQTElDQSBTUUxfVEhSRUFEIEZPUiBDSEFOTkVMICclcycgZmlyc3QuAFdoZW4gc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyID4gMCwgaXQgaXMgbm90IGFsbG93ZWQgdG8gc3RhcnQgbW9yZSB0aGFuIG9uZSBTUUwgdGhyZWFkIGJ5IHVzaW5nICdTVEFSVCBSRVBMSUNBIFtTUUxfVEhSRUFEXScuIFZhbHVlIG9mIHNxbF9yZXBsaWNhX3NraXBfY291bnRlciBjYW4gb25seSBiZSB1c2VkIGJ5IG9uZSBTUUwgdGhyZWFkIGF0IGEgdGltZS4gUGxlYXNlIHVzZSAnU1RBUlQgUkVQTElDQSBbU1FMX1RIUkVBRF0gRk9SIENIQU5ORUwnIHRvIHN0YXJ0IHRoZSBTUUwgdGhyZWFkIHdoaWNoIHdpbGwgdXNlIHRoZSB2YWx1ZSBvZiBzcWxfcmVwbGljYV9za2lwX2NvdW50ZXIuAEV4cHJlc3Npb24gIyV1IG9mICVzIGlzIG5vdCBpbiBHUk9VUCBCWSBjbGF1c2UgYW5kIGNvbnRhaW5zIG5vbmFnZ3JlZ2F0ZWQgY29sdW1uICclLS4xOTJzJyB3aGljaCBpcyBub3QgZnVuY3Rpb25hbGx5IGRlcGVuZGVudCBvbiBjb2x1bW5zIGluIEdST1VQIEJZIGNsYXVzZTsgdGhpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzcWxfbW9kZT1vbmx5X2Z1bGxfZ3JvdXBfYnkASW4gYWdncmVnYXRlZCBxdWVyeSB3aXRob3V0IEdST1VQIEJZLCBleHByZXNzaW9uICMldSBvZiAlcyBjb250YWlucyBub25hZ2dyZWdhdGVkIGNvbHVtbiAnJS0uMTkycyc7IHRoaXMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3FsX21vZGU9b25seV9mdWxsX2dyb3VwX2J5AFVwZGF0aW5nICclcycgaXMgZGVwcmVjYXRlZC4gSXQgd2lsbCBiZSBtYWRlIHJlYWQtb25seSBpbiBhIGZ1dHVyZSByZWxlYXNlLgBDaGFuZ2luZyBzcWwgbW9kZSAnJXMnIGlzIGRlcHJlY2F0ZWQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBEUk9QIERBVEFCQVNFIGZhaWxlZDsgc29tZSB0YWJsZXMgbWF5IGhhdmUgYmVlbiBkcm9wcGVkIGJ1dCB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5IHJlbWFpbnMuIFRoZSBHVElEIGhhcyBub3QgYmVlbiBhZGRlZCB0byBHVElEX0VYRUNVVEVEIGFuZCB0aGUgc3RhdGVtZW50IHdhcyBub3Qgd3JpdHRlbiB0byB0aGUgYmluYXJ5IGxvZy4gRml4IHRoaXMgYXMgZm9sbG93czogKDEpIHJlbW92ZSBhbGwgZmlsZXMgZnJvbSB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5ICUtLjE5MnM7ICgyKSBTRVQgR1RJRF9ORVhUPSclLS4xOTJzJzsgKDMpIERST1AgREFUQUJBU0UgYCUtLjE5MnNgLgBUaGUgc2VydmVyIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5IHRvIGJlIGFuIGFjdGl2ZSBtZW1iZXIgb2YgdGhlIGdyb3VwLiBQbGVhc2Ugc2VlIG1vcmUgZGV0YWlscyBvbiBlcnJvciBsb2cuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgZ3JvdXAgaXMgYWxyZWFkeSBydW5uaW5nLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgYXMgdGhlIGFwcGxpZXIgbW9kdWxlIGZhaWxlZCB0byBzdGFydC4AVGhlIFNUT1AgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogVGhlIGFwcGxpZXIgdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwgd2hpbGUgaXQgd2FzIGJ1c3kuIFRoZSBhcHBsaWVyIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgYXMgdGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBncm91cCBjb21tdW5pY2F0aW9uIGxheWVyLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgYXMgdGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gam9pbmluZyB0aGUgY29tbXVuaWNhdGlvbiBncm91cC4AVGhlIHRhYmxlIGRvZXMgbm90IGNvbXBseSB3aXRoIHRoZSByZXF1aXJlbWVudHMgYnkgYW4gZXh0ZXJuYWwgcGx1Z2luLgBDYW5ub3QgY2hhbmdlIHRoZSB2YWx1ZSBvZiB2YXJpYWJsZSAlcyB3aXRob3V0IGJpbmFyeSBsb2cgZm9ybWF0IGFzIFJPVy4ARXJyb3Igb24gb2JzZXJ2ZXIgd2hpbGUgcnVubmluZyByZXBsaWNhdGlvbiBob29rICclcycuAFBsdWdpbiBpbnN0cnVjdGVkIHRoZSBzZXJ2ZXIgdG8gcm9sbGJhY2sgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uAEV4cHJlc3Npb24gb2YgZ2VuZXJhdGVkIGNvbHVtbiAnJXMnIGNvbnRhaW5zIGEgZGlzYWxsb3dlZCBmdW5jdGlvbi4ASU5QTEFDRSBBREQgb3IgRFJPUCBvZiB2aXJ0dWFsIGNvbHVtbnMgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgQUxURVIgVEFCTEUgYWN0aW9ucwBDYW5ub3QgZGVmaW5lIGZvcmVpZ24ga2V5IHdpdGggJXMgY2xhdXNlIG9uIGEgZ2VuZXJhdGVkIGNvbHVtbi4AVGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgZ2VuZXJhdGVkIGNvbHVtbiAnJXMnIGluIHRhYmxlICclcycgaXMgbm90IGFsbG93ZWQuACclcycgaXMgbm90IHN1cHBvcnRlZCBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMuAEdlbmVyYXRlZCBjb2x1bW4gY2FuIHJlZmVyIG9ubHkgdG8gZ2VuZXJhdGVkIGNvbHVtbnMgZGVmaW5lZCBwcmlvciB0byBpdC4AQ29sdW1uICclcycgaGFzIGEgZ2VuZXJhdGVkIGNvbHVtbiBkZXBlbmRlbmN5LgBHZW5lcmF0ZWQgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGF1dG8taW5jcmVtZW50IGNvbHVtbi4AVGhlICclLS42NHMnIGZlYXR1cmUgaXMgbm90IGF2YWlsYWJsZTsgeW91IG5lZWQgdG8gcmVtb3ZlICclLS42NHMnIG9yIHVzZSBNeVNRTCBidWlsdCB3aXRoICclLS42NHMnAFNFVCBAQEdMT0JBTC5HVElEX01PREUgPSAlLS42NHMgaXMgbm90IGFsbG93ZWQgYmVjYXVzZSAlLS4zODRzLgBUaGUgcmVwbGljYXRpb24gcmVjZWl2ZXIgdGhyZWFkJS0uMTkycyBjYW5ub3Qgc3RhcnQgaW4gQVVUT19QT1NJVElPTiBtb2RlOiB0aGlzIHNlcnZlciB1c2VzIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRi4AQ2Fubm90IHJlcGxpY2F0ZSBhbm9ueW1vdXMgdHJhbnNhY3Rpb24gd2hlbiBBVVRPX1BPU0lUSU9OID0gMSwgYXQgZmlsZSAlLjUxMnMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCByZXBsaWNhdGUgYW5vbnltb3VzIHRyYW5zYWN0aW9uIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04sIGF0IGZpbGUgJS41MTJzLCBwb3NpdGlvbiAlbGxkLgBDYW5ub3QgcmVwbGljYXRlIEdUSUQtdHJhbnNhY3Rpb24gd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYsIGF0IGZpbGUgJS41MTJzLCBwb3NpdGlvbiAlbGxkLgBDYW5ub3Qgc2V0IEVORk9SQ0VfR1RJRF9DT05TSVNURU5DWSA9IE9OIGJlY2F1c2UgdGhlcmUgYXJlIG9uZ29pbmcgdHJhbnNhY3Rpb25zIHRoYXQgdmlvbGF0ZSBHVElEIGNvbnNpc3RlbmN5LgBUaGVyZSBhcmUgb25nb2luZyB0cmFuc2FjdGlvbnMgdGhhdCB2aW9sYXRlIEdUSUQgY29uc2lzdGVuY3kuAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycuIEFjY291bnQgaXMgbG9ja2VkLgBJbmNvcnJlY3QgdGFibGVzcGFjZSBuYW1lIGAlLS4xOTJzYABUYWJsZXNwYWNlIGAlLS4xOTJzYCBpcyBub3QgZW1wdHkuAEluY29ycmVjdCBGaWxlIE5hbWUgJyVzJy4ASW5jb25zaXN0ZW50IGludGVyc2VjdGlvbiBwb2ludHMuAE9wdGltaXplciBoaW50IHN5bnRheCBlcnJvcgBVbnN1cHBvcnRlZCBNQVhfRVhFQ1VUSU9OX1RJTUUATUFYX0VYRUNVVElPTl9USU1FIGhpbnQgaXMgc3VwcG9ydGVkIGJ5IHRvcC1sZXZlbCBzdGFuZGFsb25lIFNFTEVDVCBzdGF0ZW1lbnRzIG9ubHkASGludCAlcyBpcyBpZ25vcmVkIGFzIGNvbmZsaWN0aW5nL2R1cGxpY2F0ZWQAUXVlcnkgYmxvY2sgbmFtZSAlcyBpcyBub3QgZm91bmQgZm9yICVzIGhpbnQAVW5yZXNvbHZlZCBuYW1lICVzIGZvciAlcyBoaW50AFBsZWFzZSBkbyBub3QgbW9kaWZ5IHRoZSAlcyB0YWJsZS4gVGhpcyBpcyBhIG15c3FsIGludGVybmFsIHN5c3RlbSB0YWJsZSB0byBzdG9yZSBHVElEcyBmb3IgY29tbWl0dGVkIHRyYW5zYWN0aW9ucy4gTW9kaWZ5aW5nIGl0IGNhbiBsZWFkIHRvIGFuIGluY29uc2lzdGVudCBHVElEIHN0YXRlLgBDb21tYW5kIG5vdCBzdXBwb3J0ZWQgYnkgcGx1Z2dhYmxlIHByb3RvY29scwBJbmNvcnJlY3QgbG9ja2luZyBzZXJ2aWNlIGxvY2sgbmFtZSAnJS0uMTkycycuAERlYWRsb2NrIGZvdW5kIHdoZW4gdHJ5aW5nIHRvIGdldCBsb2NraW5nIHNlcnZpY2UgbG9jazsgdHJ5IHJlbGVhc2luZyBsb2NrcyBhbmQgcmVzdGFydGluZyBsb2NrIGFjcXVpc2l0aW9uLgBTZXJ2aWNlIGxvY2sgd2FpdCB0aW1lb3V0IGV4Y2VlZGVkLgBQYXJhbWV0ZXIgJXMgZXhjZWVkcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcG9pbnRzIGluIGEgZ2VvbWV0cnkgKCVsdSkgaW4gZnVuY3Rpb24gJXMuACdOT19aRVJPX0RBVEUnLCAnTk9fWkVST19JTl9EQVRFJyBhbmQgJ0VSUk9SX0ZPUl9ESVZJU0lPTl9CWV9aRVJPJyBzcWwgbW9kZXMgc2hvdWxkIGJlIHVzZWQgd2l0aCBzdHJpY3QgbW9kZS4gVGhleSB3aWxsIGJlIG1lcmdlZCB3aXRoIHN0cmljdCBtb2RlIGluIGEgZnV0dXJlIHJlbGVhc2UuAFZlcnNpb24gdG9rZW4gbWlzbWF0Y2ggZm9yICUuKnMuIENvcnJlY3QgdmFsdWUgJS4qcwBWZXJzaW9uIHRva2VuICUuKnMgbm90IGZvdW5kLgBWYXJpYWJsZSAlLS4xOTJzIGNhbm5vdCBiZSBjaGFuZ2VkIGJ5IGEgY2xpZW50IHRoYXQgb3ducyBhIEdUSUQuIFRoZSBjbGllbnQgb3ducyAlcy4gT3duZXJzaGlwIGlzIHJlbGVhc2VkIG9uIENPTU1JVCBvciBST0xMQkFDSy4AJS0uMTkycyBjYW5ub3QgYmUgcGVyZm9ybWVkIG9uIGNoYW5uZWwgJyUtLjE5MnMnLgBJbnZhbGlkIEpTT04gdGV4dDogIiVzIiBhdCBwb3NpdGlvbiAldSBpbiB2YWx1ZSBmb3IgY29sdW1uICclLS4yMDBzJyBhdCByb3cgJWxkLgBJbnZhbGlkIEpTT04gdGV4dCBpbiBhcmd1bWVudCAldSB0byBmdW5jdGlvbiAlczogIiVzIiBhdCBwb3NpdGlvbiAldS4lLS4wcwBUaGUgSlNPTiBiaW5hcnkgdmFsdWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgBJbnZhbGlkIEpTT04gcGF0aCBleHByZXNzaW9uLiBUaGUgZXJyb3IgaXMgYXJvdW5kIGNoYXJhY3RlciBwb3NpdGlvbiAldS4lLS4yMDBzAENhbm5vdCBjcmVhdGUgYSBKU09OIHZhbHVlIGZyb20gYSBzdHJpbmcgd2l0aCBDSEFSQUNURVIgU0VUICclcycuAEludmFsaWQgSlNPTiBjaGFyYWN0ZXIgZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogJyVzJzsgdXRmOCBpcyByZXF1aXJlZC4ASW52YWxpZCBkYXRhIHR5cGUgZm9yIEpTT04gZGF0YSBpbiBhcmd1bWVudCAldSB0byBmdW5jdGlvbiAlczsgYSBKU09OIHN0cmluZyBvciBKU09OIHR5cGUgaXMgcmVxdWlyZWQuAENhbm5vdCBDQVNUIHZhbHVlIHRvIEpTT04uAEEgcGF0aCBleHByZXNzaW9uIG11c3QgYmUgZW5jb2RlZCBpbiB0aGUgdXRmOCBjaGFyYWN0ZXIgc2V0LiBUaGUgcGF0aCBleHByZXNzaW9uICclLS4yMDBzJyBpcyBlbmNvZGVkIGluIGNoYXJhY3RlciBzZXQgJyUtLjIwMHMnLgBJbiB0aGlzIHNpdHVhdGlvbiwgcGF0aCBleHByZXNzaW9ucyBtYXkgbm90IGNvbnRhaW4gdGhlICogYW5kICoqIHRva2VucyBvciBhbiBhcnJheSByYW5nZS4AVGhlIEpTT04gdmFsdWUgaXMgdG9vIGJpZyB0byBiZSBzdG9yZWQgaW4gYSBKU09OIGNvbHVtbi4AVGhlIEpTT04gb2JqZWN0IGNvbnRhaW5zIGEga2V5IG5hbWUgdGhhdCBpcyB0b28gbG9uZy4ASlNPTiBjb2x1bW4gJyUtLjE5MnMnIHN1cHBvcnRzIGluZGV4aW5nIG9ubHkgdmlhIGdlbmVyYXRlZCBjb2x1bW5zIG9uIGEgc3BlY2lmaWVkIEpTT04gcGF0aC4AVGhlIHBhdGggZXhwcmVzc2lvbiAnJCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LgBUaGUgb25lT3JBbGwgYXJndW1lbnQgdG8gJXMgbWF5IHRha2UgdGhlc2UgdmFsdWVzOiAnb25lJyBvciAnYWxsJy4AT3V0IG9mIHJhbmdlIEpTT04gdmFsdWUgZm9yIENBU1QgdG8gJXMlLS4wcyBmcm9tIGNvbHVtbiAlcyBhdCByb3cgJWxkAEludmFsaWQgSlNPTiB2YWx1ZSBmb3IgQ0FTVCB0byAlcyUtLjBzIGZyb20gY29sdW1uICVzIGF0IHJvdyAlbGQAVGhlIEpTT04gZG9jdW1lbnQgZXhjZWVkcyB0aGUgbWF4aW11bSBkZXB0aC4ASlNPTiBkb2N1bWVudHMgbWF5IG5vdCBjb250YWluIE5VTEwgbWVtYmVyIG5hbWVzLgBDb25uZWN0aW9ucyB1c2luZyBpbnNlY3VyZSB0cmFuc3BvcnQgYXJlIHByb2hpYml0ZWQgd2hpbGUgLS1yZXF1aXJlX3NlY3VyZV90cmFuc3BvcnQ9T04uAE5vIHNlY3VyZSB0cmFuc3BvcnRzIChTU0wgb3IgU2hhcmVkIE1lbW9yeSkgYXJlIGNvbmZpZ3VyZWQsIHVuYWJsZSB0byBzZXQgLS1yZXF1aXJlX3NlY3VyZV90cmFuc3BvcnQ9T04uAFN0b3JhZ2UgZW5naW5lICVzIGlzIGRpc2FibGVkIChUYWJsZSBjcmVhdGlvbiBpcyBkaXNhbGxvd2VkKS4AQXV0aG9yaXphdGlvbiBJRCAlcyBkb2VzIG5vdCBleGlzdC4AQXV0aG9yaXphdGlvbiBJRCAlcyBhbHJlYWR5IGV4aXN0cy4AQWJvcnRlZCBieSBBdWRpdCBBUEkgKCclLS40OHMnOyVkKS4AQSBwYXRoIGV4cHJlc3Npb24gaXMgbm90IGEgcGF0aCB0byBhIGNlbGwgaW4gYW4gYXJyYXkuAEFub3RoZXIgYnVmZmVyIHBvb2wgcmVzaXplIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuAFRoZSAnJXMnIGZlYXR1cmUgaXMgZGlzYWJsZWQ7IHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgJyVzJwBTZXJ2ZXIgaXNuJ3QgYXZhaWxhYmxlAFNlc3Npb24gd2FzIGtpbGxlZABNZW1vcnkgY2FwYWNpdHkgb2YgJWxsdSBieXRlcyBmb3IgJyVzJyBleGNlZWRlZC4gJXMAUmFuZ2Ugb3B0aW1pemF0aW9uIHdhcyBub3QgZG9uZSBmb3IgdGhpcyBxdWVyeS4AUGFydGl0aW9uaW5nIHVwZ3JhZGUgcmVxdWlyZWQuIFBsZWFzZSBkdW1wL3JlbG9hZCB0byBmaXggaXQgb3IgZG86IEFMVEVSIFRBQkxFIGAlLS4xOTJzYC5gJS0uMTkyc2AgVVBHUkFERSBQQVJUSVRJT05JTkcAVGhlIGNsaWVudCBob2xkcyBvd25lcnNoaXAgb2YgdGhlIEdUSUQgJXMuIFRoZXJlZm9yZSwgV0FJVF9GT1JfRVhFQ1VURURfR1RJRF9TRVQgY2Fubm90IHdhaXQgZm9yIHRoaXMgR1RJRC4AQ2Fubm90IGFkZCBmb3JlaWduIGtleSBvbiB0aGUgYmFzZSBjb2x1bW4gb2YgaW5kZXhlZCB2aXJ0dWFsIGNvbHVtbi4AQ2Fubm90IGNyZWF0ZSBpbmRleCBvbiB2aXJ0dWFsIGNvbHVtbiB3aG9zZSBiYXNlIGNvbHVtbiBoYXMgZm9yZWlnbiBjb25zdHJhaW50LgBQbGVhc2UgZG8gbm90IG1vZGlmeSB0aGUgJXMgdGFibGUgd2l0aCBhbiBYQSB0cmFuc2FjdGlvbi4gVGhpcyBpcyBhbiBpbnRlcm5hbCBzeXN0ZW0gdGFibGUgdXNlZCB0byBzdG9yZSBHVElEcyBmb3IgY29tbWl0dGVkIHRyYW5zYWN0aW9ucy4gQWx0aG91Z2ggbW9kaWZ5aW5nIGl0IGNhbiBsZWFkIHRvIGFuIGluY29uc2lzdGVudCBHVElEIHN0YXRlLCBpZiBuZWNlc3NhcnkgeW91IGNhbiBtb2RpZnkgaXQgd2l0aCBhIG5vbi1YQSB0cmFuc2FjdGlvbi4ATG9jayBhY3F1aXNpdGlvbiByZWZ1c2VkIGJ5IHN0b3JhZ2UgZW5naW5lLgBBREQgQ09MVU1OIGNvbC4uLlZJUlRVQUwsIEFERCBJTkRFWChjb2wpAE1hc3RlciBrZXkgcm90YXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSBzdG9yYWdlIGVuZ2luZS4ARW5jcnlwdGlvbiBrZXkgcm90YXRpb24gZXJyb3IgcmVwb3J0ZWQgYnkgU0U6ICVzAFdyaXRlIHRvIGJpbmxvZyBmYWlsZWQuIEhvd2V2ZXIsIG1hc3RlciBrZXkgcm90YXRpb24gaGFzIGJlZW4gY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4AU3RvcmFnZSBlbmdpbmUgaXMgbm90IGF2YWlsYWJsZS4AVGhpcyB0YWJsZXNwYWNlIGNhbid0IGJlIGVuY3J5cHRlZC4ASW52YWxpZCBlbmNyeXB0aW9uIG9wdGlvbi4AQ2FuJ3QgZmluZCBtYXN0ZXIga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGluIHRoZSBzZXJ2ZXIgbG9nIGlmIGEga2V5cmluZyBpcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4AUGFyc2VyIGJhaWxlZCBvdXQgZm9yIHRoaXMgcXVlcnkuAENhbm5vdCBhbHRlciBlbmNyeXB0aW9uIGF0dHJpYnV0ZSBieSBpbnBsYWNlIGFsZ29yaXRobS4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSB1bmRlcmx5aW5nIGtleXJpbmcgc2VydmljZSByZXR1cm5lZCBhbiBlcnJvci4gUGxlYXNlIGNoZWNrIGlmIGEga2V5cmluZyBpcyBpbnN0YWxsZWQgYW5kIHRoYXQgcHJvdmlkZWQgYXJndW1lbnRzIGFyZSB2YWxpZCBmb3IgdGhlIGtleXJpbmcgeW91IGFyZSB1c2luZy4ASXQgc2VlbXMgdGhhdCB5b3VyIGRiIHNjaGVtYSBpcyBvbGQuIFRoZSAlcyBjb2x1bW4gaXMgNzcgY2hhcmFjdGVycyBsb25nIGFuZCBzaG91bGQgYmUgOTMgY2hhcmFjdGVycyBsb25nLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAFJFU0VUIEJJTkFSWSBMT0dTIEFORCBHVElEUyBpcyBub3QgYWxsb3dlZCBiZWNhdXNlICUtLjM4NHMuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgZ3JvdXAgYWxyZWFkeSBoYXMgOSBtZW1iZXJzLgBDYW5ub3QgYWRkIGZvcmVpZ24ga2V5IG9uIHRoZSBiYXNlIGNvbHVtbiBvZiBzdG9yZWQgY29sdW1uLiAAQ2Fubm90IGNvbXBsZXRlIHRoZSBvcGVyYXRpb24gYmVjYXVzZSB0YWJsZSBpcyByZWZlcmVuY2VkIGJ5IGFub3RoZXIgY29ubmVjdGlvbi4AVGhlIHBhcnRpdGlvbiBlbmdpbmUsIHVzZWQgYnkgdGFibGUgJyUtLjE5MnMuJS0uMTkycycsIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlIG5hdGl2ZSBwYXJ0aXRpb25pbmcgaW5zdGVhZC4AJS4xOTJzKGdlb21ldHJ5KSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHN0X3NyaWQoZ2VvbWV0cnksIDApIGluIGEgZnV0dXJlIHZlcnNpb24uIFVzZSAlLjE5MnMoc3RfYXN3a2IoZ2VvbWV0cnkpLCAwKSBpbnN0ZWFkLgAlLjE5MnMoZ2VvbWV0cnksIHNyaWQpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVwbGFjZWQgYnkgc3Rfc3JpZChnZW9tZXRyeSwgc3JpZCkgaW4gYSBmdXR1cmUgdmVyc2lvbi4gVXNlICUuMTkycyhzdF9hc3drYihnZW9tZXRyeSksIHNyaWQpIGluc3RlYWQuAFRoZSByZXNvdXJjZSBtYW5hZ2VyIGlzIG5vdCBhYmxlIHRvIGNvbW1pdCB0aGUgdHJhbnNhY3Rpb24gYnJhbmNoIGF0IHRoaXMgdGltZS4gUGxlYXNlIHJldHJ5IGxhdGVyLgBGdW5jdGlvbiAlcyBmYWlsZWQgZHVlIHRvOiAlcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IGlzIGJlaW5nIHVzZWQgaW5zaWRlIGEgWEEgdHJhbnNhY3Rpb24uIENvbmN1cnJlbnQgWEEgdHJhbnNhY3Rpb25zIG1heSBkZWFkbG9jayBvbiByZXBsaWNhcyB3aGVuIHJlcGxpY2F0ZWQgdXNpbmcgc3RhdGVtZW50cy4AJXMgVURGIGZhaWxlZDsgJXMAQ2FuIG5vdCBwZXJmb3JtIGtleXJpbmcgbWlncmF0aW9uIDogJXMAQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgJS0uMTI4cyBwcml2aWxlZ2VzIGZvciB0aGlzIG9wZXJhdGlvbgBLZXlyaW5nIG1pZ3JhdGlvbiAlcy4ARmFpbGVkIHRvIG9wZW4gdGhlICVzIGZpbHRlciB0YWJsZXMuAEZhaWxlZCB0byBvcGVuICclcy4lcycgJXMgdGFibGUuAE5vIGtleXJpbmcgcGx1Z2luIGluc3RhbGxlZC4AQXVkaXQgbG9nIGVuY3J5cHRpb24gcGFzc3dvcmQgaGFzIG5vdCBiZWVuIHNldDsgaXQgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4gVXNlIGF1ZGl0X2xvZ19lbmNyeXB0aW9uX3Bhc3N3b3JkX2dldCB0byBvYnRhaW4gdGhlIHBhc3N3b3JkIG9yIGF1ZGl0X2xvZ19lbmNyeXB0aW9uX3Bhc3N3b3JkX3NldCB0byBzZXQgYSBuZXcgb25lLgBDb3VsZCBub3QgY3JlYXRlIEFFUyBrZXkuIE9wZW5TU0wncyBFVlBfQnl0ZXNUb0tleSBmdW5jdGlvbiBmYWlsZWQuAEF1ZGl0IGxvZyBlbmNyeXB0aW9uIHBhc3N3b3JkIGNhbm5vdCBiZSBmZXRjaGVkIGZyb20gdGhlIGtleXJpbmcuIFBhc3N3b3JkIHVzZWQgc28gZmFyIGlzIHVzZWQgZm9yIGVuY3J5cHRpb24uAEF1ZGl0IExvZyBmaWx0ZXJpbmcgaGFzIG5vdCBiZWVuIGluc3RhbGxlZC4AUmVxdWVzdCBpZ25vcmVkIGZvciAnJXMnQCclcycuIFNVUEVSIHByaXZpbGVnZSBvciBBVURJVF9BRE1JTiByb2xlIG5lZWRlZCB0byBwZXJmb3JtIG9wZXJhdGlvbgBTVVBFUiBwcml2aWxlZ2Ugb3IgQVVESVRfQURNSU4gcm9sZSByZXF1aXJlZCBmb3IgJyVzJ0AnJXMnIHVzZXIuAENvdWxkIG5vdCByZWluaXRpYWxpemUgYXVkaXQgbG9nIGZpbHRlcnMuAEludmFsaWQgYXJndW1lbnQgdHlwZQBJbnZhbGlkIGFyZ3VtZW50IGNvdW50AGF1ZGl0X2xvZyBwbHVnaW4gaGFzIG5vdCBiZWVuIGluc3RhbGxlZCB1c2luZyBJTlNUQUxMIFBMVUdJTiBzeW50YXguAEludmFsaWQgIm1heF9hcnJheV9sZW5ndGgiIGFyZ3VtZW50IHR5cGUuAEludmFsaWQgIm1heF9hcnJheV9sZW5ndGgiIGFyZ3VtZW50IHZhbHVlLgAlcwBGaWx0ZXIgbmFtZSBjYW5ub3QgYmUgZW1wdHkuAFVzZXIgY2Fubm90IGJlIGVtcHR5LgBTcGVjaWZpZWQgZmlsdGVyIGhhcyBub3QgYmVlbiBmb3VuZC4ARmlyc3QgY2hhcmFjdGVyIG9mIHRoZSB1c2VyIG5hbWUgbXVzdCBiZSBhbHBoYW51bWVyaWMuAEludmFsaWQgY2hhcmFjdGVyIGluIHRoZSB1c2VyIG5hbWUuAEludmFsaWQgY2hhcmFjdGVyIGluIHRoZSBob3N0IG5hbWUuAFdpdGggdGhlIE1BWERCIFNRTCBtb2RlIGVuYWJsZWQsIFRJTUVTVEFNUCBpcyBpZGVudGljYWwgd2l0aCBEQVRFVElNRS4gVGhlIE1BWERCIFNRTCBtb2RlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgZGlzYWJsZSB0aGUgTUFYREIgU1FMIG1vZGUgYW5kIHVzZSBEQVRFVElNRSBpbnN0ZWFkLgBUaGUgdXNlIG9mIHJlcGxpY2F0aW9uIGZpbHRlcnMgd2l0aCBYQSB0cmFuc2FjdGlvbnMgaXMgbm90IHN1cHBvcnRlZCwgYW5kIGNhbiBsZWFkIHRvIGFuIHVuZGVmaW5lZCBzdGF0ZSBpbiB0aGUgcmVwbGljYS4AQ291bGQgbm90IG9wZW4gZmlsZSAnJXMnIGZvciBlcnJvciBsb2dnaW5nJXMlcwBHcm91cGluZyBvbiB0ZW1wb3JhbCBpcyBub24tZGV0ZXJtaW5pc3RpYyBmb3IgdGltZXpvbmVzIGhhdmluZyBEU1QuIFBsZWFzZSBjb25zaWRlciBzd2l0Y2hpbmcgdG8gVVRDIGZvciB0aGlzIHF1ZXJ5LgBDYW4ndCBzdGFydCBzZXJ2ZXIgOiBOYW1lZCBQaXBlICIlcyIgYWxyZWFkeSBpbiB1c2UuAFRoZSBzaXplIG9mIHdyaXRlc2V0IGRhdGEgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGV4Y2VlZHMgYSBsaW1pdCBpbXBvc2VkIGJ5IGFuIGV4dGVybmFsIGNvbXBvbmVudC4gSWYgdXNpbmcgR3JvdXAgUmVwbGljYXRpb24gY2hlY2sgJ2dyb3VwX3JlcGxpY2F0aW9uX3RyYW5zYWN0aW9uX3NpemVfbGltaXQnLgBBY2NlcHRlZCBhIGNvbm5lY3Rpb24gd2l0aCBkZXByZWNhdGVkIHByb3RvY29sICclcycgZm9yIGFjY291bnQgYCVzYEBgJXNgIGZyb20gaG9zdCBgJXNgLiBDbGllbnQgc3VwcGxpZWQgdXNlcm5hbWUgYCVzYABBIGRlcHJlY2F0ZWQgVExTIHZlcnNpb24gJXMgaXMgZW5hYmxlZC4gUGxlYXNlIHVzZSBUTFN2MS4yIG9yIGhpZ2hlci4AT3B0aW9uYWwgbmF0aXZlIHRhYmxlICclLS42NHMnLiclLS42NHMnIGhhcyB0aGUgd3Jvbmcgc3RydWN0dXJlIG9yIGlzIG1pc3NpbmcuAEtERiBtZXRob2QgbmFtZSBpcyBub3QgdmFsaWQuIFBsZWFzZSB1c2UgaGtkZiBvciBwYmtkZjJfaG1hYyBtZXRob2QgbmFtZQBGb3IgS0RGIG1ldGhvZCBwYmtkZjJfaG1hYyBpdGVyYXRpb25zIHZhbHVlIGxlc3MgdGhhbiAxMDAwIG9yIG1vcmUgdGhhbiA2NTUzNSBpcyBub3QgYWxsb3dlZCBkdWUgdG8gc2VjdXJpdHkgcmVhc29ucy4gUGxlYXNlIHByb3ZpZGUgaXRlcmF0aW9ucyA+PSAxMDAwIGFuZCBpdGVyYXRpb25zIDwgNjU1MzUAQUVTIGtleSBzaXplIHNob3VsZCBiZSAlZCBieXRlcyBsZW5ndGggb3Igc2VjdXJlIEtERiBtZXRob2RzIGhrZGYgb3IgcGJrZGYyX2htYWMgc2hvdWxkIGJlIHVzZWQsIHBsZWFzZSBwcm92aWRlIGV4YWN0IEFFUyBrZXkgc2l6ZSBvciB1c2UgS0RGIG1ldGhvZHMgZm9yIGJldHRlciBzZWN1cml0eS4AS0RGIG9wdGlvbiBzaXplIGlzIGludmFsaWQsIHBsZWFzZSBwcm92aWRlIHZhbGlkIHNpemUgPCAlZCBieXRlcyBhbmQgbm90IE5VTEwAQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBpcyBub3QgYWxsb3dlZCB3aXRoIFJPV19GT1JNQVQ9Q09NUFJFU1NFRCBvciBLRVlfQkxPQ0tfU0laRS4AVGhlIEFDTCBvcGVyYXRpb24gZmFpbGVkIGR1ZSB0byB0aGUgZm9sbG93aW5nIGVycm9yIGZyb20gU0U6IGVycmNvZGUgJWQgLSAlLjI1NnMAVGhpcyBzdG9yYWdlIGVuZ2luZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSAlcyBpbmRleCBhbGdvcml0aG0sIHN0b3JhZ2UgZW5naW5lIGRlZmF1bHQgd2FzIHVzZWQgaW5zdGVhZC4ARGF0YWJhc2UgJyUtLjE5MnMnIGRvZXNuJ3QgZXhpc3QAVG9vIG1hbnkgZW51bWVyYXRpb24gdmFsdWVzIGZvciBjb2x1bW4gJS4xOTJzLgBUb28gbG9uZyBlbnVtZXJhdGlvbi9zZXQgdmFsdWUgZm9yIGNvbHVtbiAlLjE5MnMuACVzIGRpY3Rpb25hcnkgb2JqZWN0IGlzIGludmFsaWQuICglLjE5MnMpAEZhaWxlZCB0byB1cGRhdGUgJS4xOTJzIGRpY3Rpb25hcnkgb2JqZWN0LgBEaWN0aW9uYXJ5IG9iamVjdCBpZCAoJWx1KSBkb2VzIG5vdCBleGlzdC4ARGljdGlvbmFyeSBvYmplY3QgbmFtZSAnJXMnIGlzIGludmFsaWQuICglLjE5MnMpAFRhYmxlc3BhY2UgJS0uMTkycyBkb2Vzbid0IGV4aXN0LgBDb21tZW50IGZvciByb3V0aW5lICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAEZhaWxlZCB0byBsb2FkIHJvdXRpbmUgJyUtLjY0cycuAEJpbmFyeSBvcGVyYW5kcyBvZiBiaXR3aXNlIG9wZXJhdG9ycyBtdXN0IGJlIG9mIGVxdWFsIGxlbmd0aABBZ2dyZWdhdGUgYml0d2lzZSBmdW5jdGlvbnMgY2Fubm90IGFjY2VwdCBhcmd1bWVudHMgbG9uZ2VyIHRoYW4gNTExIGJ5dGVzOyBjb25zaWRlciB1c2luZyB0aGUgU1VCU1RSSU5HKCkgZnVuY3Rpb24ASGludHMgYXJlbid0IHN1cHBvcnRlZCBpbiAlcwAlLjY0cyB2YWx1ZSBpcyBhIGdlb21ldHJ5IG9mIHVuZXhwZWN0ZWQgdHlwZSAlLjY0cyBpbiAlLjY0cy4AQ2FuJ3QgcGFyc2UgdGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBkZWZpbml0aW9uIG9mIFNSSUQgJXUuAFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gZGVmaW5pdGlvbiBmb3IgU1JJRCAldSBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBtYW5kYXRvcnkgJXMgKEVQU0cgJXUpIHByb2plY3Rpb24gcGFyYW1ldGVyLgBUaGVyZSdzIG5vIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuAEZ1bmN0aW9uICVzIGlzIG9ubHkgZGVmaW5lZCBmb3IgQ2FydGVzaWFuIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMsIGJ1dCBvbmUgb2YgaXRzIGFyZ3VtZW50cyBpcyBpbiBTUklEICV1LCB3aGljaCBpcyBub3QgQ2FydGVzaWFuLgBGdW5jdGlvbiAlcyBpcyBvbmx5IGRlZmluZWQgZm9yIENhcnRlc2lhbiBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLCBidXQgb25lIG9mIGl0cyBhcmd1bWVudHMgaXMgaW4gU1JJRCAldSwgd2hpY2ggaGFzIG5vdCBiZWVuIGRlZmluZWQuAEEgcHJpbWFyeSBrZXkgaW5kZXggY2Fubm90IGJlIGludmlzaWJsZQBVbmtub3duIGF1dGhvcml6YXRpb24gSUQgYCUuNjRzYEBgJS42NHNgAEZhaWxlZCB0byBncmFudCAlLjkwc2AgdG8gJS45MHMARmFpbGVkIHRvIG9wZW4gdGhlIHNlY3VyaXR5IHN5c3RlbSB0YWJsZXMARmFpbGVkIHRvIHNldCBkZWZhdWx0IHJvbGVzAENhbm5vdCBmaW5kIHNjaGVtYSBpbiBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJy4AQ2Fubm90IGFjcXVpcmUgc2NoZW1lIGxvYWQgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBmb3Igc2NoZW1hICclLjE5MnMnIGluIHNwZWNpZmllZCBVUk46ICclLjE5MnMnLgBDYW5ub3QgbG9hZCBjb21wb25lbnQgZnJvbSBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJy4AYCUuNjRzYEBgJS42NHNgIGlzIG5vdCBncmFudGVkIHRvIGAlLjY0c2BAYCUuNjRzYABDb3VsZCBub3QgcmV2b2tlIHJvbGUgZnJvbSBgJS42NHNgQGAlLjY0c2AAUmVuYW1pbmcgb2YgYSByb2xlIGlkZW50aWZpZXIgaXMgZm9yYmlkZGVuAENhbm5vdCBhY3F1aXJlIHNwZWNpZmllZCBzZXJ2aWNlIGltcGxlbWVudGF0aW9uOiAnJS4xOTJzJy4AQ2Fubm90IHNhdGlzZnkgZGVwZW5kZW5jeSBmb3Igc2VydmljZSAnJS4xOTJzJyByZXF1aXJlZCBieSBjb21wb25lbnQgJyUuMTkycycuAENhbm5vdCByZWdpc3RlciBzZXJ2aWNlIGltcGxlbWVudGF0aW9uICclLjE5MnMnIHByb3ZpZGVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJy4ASW5pdGlhbGl6YXRpb24gbWV0aG9kIHByb3ZpZGVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJyBmYWlsZWQuAENvbXBvbmVudCBzcGVjaWZpZWQgYnkgVVJOICclLjE5MnMnIHRvIHVubG9hZCBoYXMgbm90IGJlZW4gbG9hZGVkIGJlZm9yZS4ARGUtaW5pdGlhbGl6YXRpb24gbWV0aG9kIHByb3ZpZGVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJyBmYWlsZWQuAFJlbGVhc2Ugb2YgcHJldmlvdXNseSBhY3F1aXJlZCBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZhaWxlZC4AVW5yZWdpc3RyYXRpb24gb2Ygc2VydmljZSBpbXBsZW1lbnRhdGlvbiAnJS4xOTJzJyBwcm92aWRlZCBieSBjb21wb25lbnQgJyUuMTkycycgZmFpbGVkIGR1cmluZyB1bmxvYWRpbmcgb2YgdGhlIGNvbXBvbmVudC4AQ2Fubm90IHVubG9hZCBjb21wb25lbnQgZnJvbSBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJy4AVGhlIFBlcnNpc3RlbnQgRHluYW1pYyBMb2FkZXIgd2FzIHVzZWQgdG8gdW5sb2FkIGEgY29tcG9uZW50ICclLjE5MnMnLCBidXQgaXQgd2FzIG5vdCB1c2VkIHRvIGxvYWQgdGhhdCBjb21wb25lbnQgYmVmb3JlLgBUaGUgbXlzcWwuY29tcG9uZW50IHRhYmxlIGlzIG1pc3Npbmcgb3IgaGFzIGFuIGluY29ycmVjdCBkZWZpbml0aW9uLgBGYWlsZWQgdG8gbWFuaXB1bGF0ZSBjb21wb25lbnQgJyUuMTkycycgcGVyc2lzdGVuY2UgZGF0YS4gRXJyb3IgY29kZSAlZCBmcm9tIHN0b3JhZ2UgZW5naW5lLgBUaGUgY29tcG9uZW50IHdpdGggc3BlY2lmaWVkIFVSTjogJyUuMTkycycgd2FzIHNwZWNpZmllZCBpbiBncm91cCBtb3JlIHRoYW4gb25jZS4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgY2Fubm90IGJlIGNoYW5nZWQ6ICVzAENhbiBub3QgbG9jayB1c2VyIG1hbmFnZW1lbnQgY2FjaGVzIGZvciBwcm9jZXNzaW5nLgBUaGVyZSdzIG5vIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuAFZhcmlhYmxlcyBjYW5ub3QgYmUgcGVyc2lzdGVkLiBQbGVhc2UgcmV0cnkuAEluZm9ybWF0aW9uIHNjaGVtYSBxdWVyaWVzIGRvIG5vdCBzdXBwb3J0IHRoZSAnJXMnIGNsYXVzZS4AVW5hYmxlIHRvIHN0b3JlIGR5bmFtaWMgJXMgc3RhdGlzdGljcyBpbnRvIGRhdGEgZGljdGlvbmFyeS4AQWNjZXNzIHRvIHN5c3RlbSBzY2hlbWEgJyUuNjRzJyBpcyByZWplY3RlZC4AQWNjZXNzIHRvIHN5c3RlbSB0YWJsZXNwYWNlICclLjY0cycgaXMgcmVqZWN0ZWQuAEFjY2VzcyB0byAlLjY0cyAnJS42NHMuJS42NHMnIGlzIHJlamVjdGVkLgBkYXRhIGRpY3Rpb25hcnkgdGFibGUAc3lzdGVtIHRhYmxlAHRhYmxlAEludmFsaWQgb3B0aW9uIGtleSAnJS4xOTJzJyBpbiBmdW5jdGlvbiAlLjE5MnMuAEludmFsaWQgdmFsdWUgJyUuMTkycycgZm9yIG9wdGlvbiAnJS4xOTJzJyBpbiBmdW5jdGlvbiAnJS4xOTJzJy4AVGhlIHN0cmluZyAnJS4xOTJzJyBpcyBub3QgYSB2YWxpZCBrZXkgJWMgdmFsdWUgcGFpciBpbiBmdW5jdGlvbiAlLjE5MnMuAFRoZSBvcHRpb25zIGFyZ3VtZW50IGluIGZ1bmN0aW9uICUuMTkycyBzdGFydHMgd2l0aCB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgJyVjJy4AVGhlIG9wdGlvbnMgYXJndW1lbnQgaW4gZnVuY3Rpb24gJS4xOTJzIGVuZHMgd2l0aCB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgJyVjJy4AVGhlIG9wdGlvbnMgYXJndW1lbnQgaW4gZnVuY3Rpb24gJS4xOTJzIGNvbnRhaW5zIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBzZXF1ZW5jZSAnJS4xOTJzJy4ARHVwbGljYXRlIG9wdGlvbiBrZXkgJyUuMTkycycgaW4gZnVudGlvbiAnJS4xOTJzJy4AVGhlcmUncyBubyBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gd2l0aCBTUklEICV1LiBUaGUgYXhpcyBvcmRlciBpcyB1bmtub3duLgBBY2Nlc3MgdG8gbmF0aXZlIGZ1bmN0aW9uICclLjY0cycgaXMgcmVqZWN0ZWQuAFRoZSByZXF1ZXN0ZWQgdmFsdWUgJyVsbHUnIGZvciB0aGUgbmV4dCBiaW5hcnkgbG9nIGluZGV4IGlzIG91dCBvZiByYW5nZS4gUGxlYXNlIHVzZSBhIHZhbHVlIGJldHdlZW4gJzEnIGFuZCAnJWx1Jy4AVW5yZXNvbHZlZCB0YWJsZSBuYW1lICVzIGluIGxvY2tpbmcgY2xhdXNlLgBUYWJsZSAlcyBhcHBlYXJzIGluIG11bHRpcGxlIGxvY2tpbmcgY2xhdXNlcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgU0tJUCBMT0NLRUQuIFRoZSBzZXQgb2YgaW5zZXJ0ZWQgdmFsdWVzIGlzIG5vbi1kZXRlcm1pbmlzdGljLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBOT1dBSVQuIFdoZXRoZXIgdGhlIGNvbW1hbmQgd2lsbCBzdWNjZWVkIG9yIGZhaWwgaXMgbm90IGRldGVybWluaXN0aWMuAFN0YXRlbWVudCBhYm9ydGVkIGJlY2F1c2UgbG9jayhzKSBjb3VsZCBub3QgYmUgYWNxdWlyZWQgaW1tZWRpYXRlbHkgYW5kIE5PV0FJVCBpcyBzZXQuAFJlY3Vyc2l2ZSBDb21tb24gVGFibGUgRXhwcmVzc2lvbiAnJXMnIHNob3VsZCBjb250YWluIGEgVU5JT04AUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycgc2hvdWxkIGhhdmUgb25lIG9yIG1vcmUgbm9uLXJlY3Vyc2l2ZSBxdWVyeSBibG9ja3MgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgcmVjdXJzaXZlIG9uZXMAUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycgY2FuIGNvbnRhaW4gbmVpdGhlciBhZ2dyZWdhdGlvbiBub3Igd2luZG93IGZ1bmN0aW9ucyBpbiByZWN1cnNpdmUgcXVlcnkgYmxvY2sASW4gcmVjdXJzaXZlIHF1ZXJ5IGJsb2NrIG9mIFJlY3Vyc2l2ZSBDb21tb24gVGFibGUgRXhwcmVzc2lvbiAnJXMnLCB0aGUgcmVjdXJzaXZlIHRhYmxlIG11c3QgbmVpdGhlciBiZSBpbiB0aGUgcmlnaHQgYXJndW1lbnQgb2YgYSBMRUZUIEpPSU4sIG5vciBiZSBmb3JjZWQgdG8gYmUgbm9uLWZpcnN0IHdpdGggam9pbiBvcmRlciBoaW50cwBJbiByZWN1cnNpdmUgcXVlcnkgYmxvY2sgb2YgUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycsIHRoZSByZWN1cnNpdmUgdGFibGUgbXVzdCBiZSByZWZlcmVuY2VkIG9ubHkgb25jZSwgYW5kIG5vdCBpbiBhbnkgc3VicXVlcnkAJyVzJyByZXF1aXJlcyBAQGludGVybmFsX3RtcF9kaXNrX3N0b3JhZ2VfZW5naW5lPUlubm9EQgBXaW5kb3cgbmFtZSAnJXMnIGlzIG5vdCBkZWZpbmVkLgBUaGVyZSBpcyBhIGNpcmN1bGFyaXR5IGluIHRoZSB3aW5kb3cgZGVwZW5kZW5jeSBncmFwaC4AQSB3aW5kb3cgd2hpY2ggZGVwZW5kcyBvbiBhbm90aGVyIGNhbm5vdCBkZWZpbmUgcGFydGl0aW9uaW5nLgBXaW5kb3cgJyVzJyBoYXMgYSBmcmFtZSBkZWZpbml0aW9uLCBzbyBjYW5ub3QgYmUgcmVmZXJlbmNlZCBieSBhbm90aGVyIHdpbmRvdy4AV2luZG93ICclcycgY2Fubm90IGluaGVyaXQgJyVzJyBzaW5jZSBib3RoIGNvbnRhaW4gYW4gT1JERVIgQlkgY2xhdXNlLgBXaW5kb3cgJyVzJzogZnJhbWUgc3RhcnQgY2Fubm90IGJlIFVOQk9VTkRFRCBGT0xMT1dJTkcuAFdpbmRvdyAnJXMnOiBmcmFtZSBlbmQgY2Fubm90IGJlIFVOQk9VTkRFRCBQUkVDRURJTkcuAFdpbmRvdyAnJXMnOiBmcmFtZSBzdGFydCBvciBlbmQgaXMgbmVnYXRpdmUsIE5VTEwgb3Igb2Ygbm9uLWludGVncmFsIHR5cGUAV2luZG93ICclcycgd2l0aCBSQU5HRSBOIFBSRUNFRElORy9GT0xMT1dJTkcgZnJhbWUgcmVxdWlyZXMgZXhhY3RseSBvbmUgT1JERVIgQlkgZXhwcmVzc2lvbiwgb2YgbnVtZXJpYyBvciB0ZW1wb3JhbCB0eXBlAFdpbmRvdyAnJXMnIHdpdGggUkFOR0UgZnJhbWUgaGFzIE9SREVSIEJZIGV4cHJlc3Npb24gb2YgZGF0ZXRpbWUgdHlwZS4gT25seSBJTlRFUlZBTCBib3VuZCB2YWx1ZSBhbGxvd2VkLgBXaW5kb3cgJyVzJyB3aXRoIFJBTkdFIGZyYW1lIGhhcyBPUkRFUiBCWSBleHByZXNzaW9uIG9mIG51bWVyaWMgdHlwZSwgSU5URVJWQUwgYm91bmQgdmFsdWUgbm90IGFsbG93ZWQuAFdpbmRvdyAnJXMnIGhhcyBhIG5vbi1jb25zdGFudCBmcmFtZSBib3VuZC4AV2luZG93ICclcycgaXMgZGVmaW5lZCB0d2ljZS4AV2luZG93ICclcyc6IE9SREVSIEJZIG9yIFBBUlRJVElPTiBCWSB1c2VzIGxlZ2FjeSBwb3NpdGlvbiBpbmRpY2F0aW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQsIHVzZSBleHByZXNzaW9uLgBZb3UgY2Fubm90IHVzZSB0aGUgd2luZG93IGZ1bmN0aW9uICclcycgaW4gdGhpcyBjb250ZXh0LicAWW91IGNhbm5vdCB1c2UgdGhlIGFsaWFzICclcycgb2YgYW4gZXhwcmVzc2lvbiBjb250YWluaW5nIGEgd2luZG93IGZ1bmN0aW9uIGluIHRoaXMgY29udGV4dC4nAFlvdSBjYW5ub3QgbmVzdCBhIHdpbmRvdyBmdW5jdGlvbiBpbiB0aGUgc3BlY2lmaWNhdGlvbiBvZiB3aW5kb3cgJyVzJy4AV2luZG93ICclcyc6IElOVEVSVkFMIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBSQU5HRSBmcmFtZXMuAEFTQyBvciBERVNDIHdpdGggR1JPVVAgQlkgaXNuJ3QgYWxsb3dlZCB3aXRoIHdpbmRvdyBmdW5jdGlvbnM7IHB1dCBBU0Mgb3IgREVTQyBpbiBPUkRFUiBCWQBUbyBnZXQgaW5mb3JtYXRpb24gYWJvdXQgd2luZG93IGZ1bmN0aW9ucyB1c2UgRVhQTEFJTiBGT1JNQVQ9SlNPTgBXaW5kb3cgZnVuY3Rpb24gJyVzJyBpZ25vcmVzIHRoZSBmcmFtZSBjbGF1c2Ugb2Ygd2luZG93ICclcycgYW5kIGFnZ3JlZ2F0ZXMgb3ZlciB0aGUgd2hvbGUgcGFydGl0aW9uAFdpbmRvd2luZyByZXF1aXJlcyBAQGludGVybmFsX3RtcF9tZW1fc3RvcmFnZV9lbmdpbmU9VGVtcFRhYmxlLgBUb28gbWFueSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uICVzOiAlbHU7IG1heGltdW0gYWxsb3dlZCBpcyAlcy4AQXJndW1lbnQgIyV1IG9mIEdST1VQSU5HIGZ1bmN0aW9uIGlzIG5vdCBpbiBHUk9VUCBCWQBDb21tZW50IGZvciB0YWJsZXNwYWNlICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAFN0b3JhZ2UgZW5naW5lIGNhbid0IGRyb3AgdGFibGUgJyUtLjEyOXMnAFN0b3JhZ2UgZW5naW5lIGNhbid0IGRyb3AgdGFibGUgJyUtLjEyOXMnIGJlY2F1c2UgaXQgaXMgbWlzc2luZy4gVXNlIERST1AgVEFCTEUgSUYgRVhJU1RTIHRvIHJlbW92ZSBpdCBmcm9tIGRhdGEtZGljdGlvbmFyeS4ARHVwbGljYXRlIGZpbGUgbmFtZSBmb3IgdGFibGVzcGFjZSAnJS0uNjRzJwBQcm9ibGVtIHdoaWxlIGRyb3BwaW5nIGRhdGFiYXNlLiBDYW4ndCByZW1vdmUgZGF0YWJhc2UgZGlyZWN0b3J5ICglcykuIFBsZWFzZSByZW1vdmUgaXQgbWFudWFsbHkuAE5vIFNESSBmaWxlcyBtYXRjaGVkIHRoZSBwYXR0ZXJuICclcycAU2NoZW1hICclLjI1NnMnLCByZWZlcmVuY2VkIGluIFNESSwgZG9lcyBub3QgZXhpc3QuAFRhYmxlICclLjI1NnMuJS4yNTZzJywgcmVmZXJlbmNlZCBpbiBTREksIGFscmVhZHkgZXhpc3RzLgBJbXBvcnRlZCBteXNxbGRfdmVyc2lvbiAoJWxsdSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBjdXJyZW50ICglbGx1KQBJbXBvcnRlZCBkZCB2ZXJzaW9uICgldSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBjdXJyZW50ICgldSkASW1wb3J0ZWQgc2RpIHZlcnNpb24gKCVsbHUpIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggY3VycmVudCAoJWxsdSkASW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBoaW50ICVzAFZhcmlhYmxlICVzIGRvZXMgbm90IGV4aXN0IGluIHBlcnNpc3RlZCBjb25maWcgZmlsZQBMb25naXR1ZGUgJWYgaXMgb3V0IG9mIHJhbmdlIGluIGZ1bmN0aW9uICUuMTkycy4gSXQgbXVzdCBiZSB3aXRoaW4gKCVmLCAlZl0uAExhdGl0dWRlICVmIGlzIG91dCBvZiByYW5nZSBpbiBmdW5jdGlvbiAlLjE5MnMuIEl0IG11c3QgYmUgd2l0aGluIFslZiwgJWZdLgAlLjE5MnMoJS44MHMpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgZ2VvZ3JhcGhpYyBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLgBJbGxlZ2FsIHByaXZpbGVnZSBsZXZlbCBzcGVjaWZpZWQgZm9yICVzAEFjY2VzcyB0byBzeXN0ZW0gdmlldyBJTkZPUk1BVElPTl9TQ0hFTUEuJyUuNjRzJyBpcyByZWplY3RlZC4AVGhlIGxvZy1maWx0ZXIgY29tcG9uZW50ICIlcyIgZ290IGNvbmZ1c2VkIGF0ICIlcyIgLi4uAFBhcnRpdGlvbmluZyBleHByZXNzaW9uIGlzIHRvbyBsb25nLgBEUk9QIEZVTkNUSU9OIGNhbid0IGRyb3AgYSBkeW5hbWljYWxseSByZWdpc3RlcmVkIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgBVbmFibGUgdG8gc3RvcmUgY29sdW1uIHN0YXRpc3RpY3MgZm9yIGNvbHVtbiAnJS42NHMnIGluIHRhYmxlICclLjY0cycuJyUuNjRzJwBVbmFibGUgdG8gdXBkYXRlIGNvbHVtbiBzdGF0aXN0aWNzIGZvciBjb2x1bW4gJyUuNjRzJyBpbiB0YWJsZSAnJS42NHMnLiclLjY0cycAVW5hYmxlIHRvIHJlbW92ZSBjb2x1bW4gc3RhdGlzdGljcyBmb3IgY29sdW1uICclLjY0cycgaW4gdGFibGUgJyUuNjRzJy4nJS42NHMnAFVuYWJsZSB0byBidWlsZCBoaXN0b2dyYW0gc3RhdGlzdGljcyBmb3IgY29sdW1uICclLjY0cycgaW4gdGFibGUgJyUuNjRzJy4nJS42NHMnAFRoZSByb2xlICVzIGlzIGEgbWFuZGF0b3J5IHJvbGUgYW5kIGNhbid0IGJlIHJldm9rZWQgb3IgZHJvcHBlZC4gVGhlIHJlc3RyaWN0aW9uIGNhbiBiZSBsaWZ0ZWQgYnkgZXhjbHVkaW5nIHRoZSByb2xlIGlkZW50aWZpZXIgZnJvbSB0aGUgZ2xvYmFsIHZhcmlhYmxlIG1hbmRhdG9yeV9yb2xlcy4AVGFibGVzcGFjZSAnJS4xOTJzJyBkb2VzIG5vdCBoYXZlIGEgZmlsZSBuYW1lZCAnJS4xOTJzJwBBY2Nlc3MgZGVuaWVkOyB5b3UgbmVlZCAlLS4xMjhzIHByaXZpbGVnZXMgZm9yIHRoaXMgb3BlcmF0aW9uAFlvdSBuZWVkIHRoZSBTVVBFUiBwcml2aWxlZ2UgZm9yIGNvbW1hbmQgJyUtLjE5MnMnAFBhdGggaXMgd2l0aGluIHRoZSBjdXJyZW50IGRhdGEgZGlyZWN0b3J5ICclLS4xOTJzJwBDb25jdXJyZW50IERETCBpcyBwZXJmb3JtZWQgZHVyaW5nIGNsb25lIG9wZXJhdGlvbi4gUGxlYXNlIHRyeSBhZ2Fpbi4AVG9vIG1hbnkgY29uY3VycmVudCBjbG9uZSBvcGVyYXRpb25zLiBNYXhpbXVtIGFsbG93ZWQgLSAlZC4AVGhlIHRhYmxlIGluIHRyYW5zYWN0aW9uICVzIGRvZXMgbm90IGNvbXBseSB3aXRoIHRoZSByZXF1aXJlbWVudHMgYnkgYW4gZXh0ZXJuYWwgcGx1Z2luLgBSZWN1cnNpdmUgcXVlcnkgYWJvcnRlZCBhZnRlciAldSBpdGVyYXRpb25zLiBUcnkgaW5jcmVhc2luZyBAQGN0ZV9tYXhfcmVjdXJzaW9uX2RlcHRoIHRvIGEgbGFyZ2VyIHZhbHVlLgBWYXJpYWJsZSAlcyBjYW5ub3QgYmUgc2V0IHVzaW5nIFNFVF9WQVIgaGludC4AQ2Fubm90IHVzZSB0aGVzZSBjcmVkZW50aWFscyBmb3IgJyUuKnNAJS4qcycgYmVjYXVzZSB0aGV5IGNvbnRyYWRpY3QgdGhlIHBhc3N3b3JkIGhpc3RvcnkgcG9saWN5AE5vbi16ZXJvIHBhc3N3b3JkIGhpc3RvcnkgY2xhdXNlcyBpZ25vcmVkIGZvciB1c2VyICclcydAJyVzJyBhcyBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luICVzIGRvZXMgbm90IHN1cHBvcnQgcGFzc3dvcmQgaGlzdG9yeQBUaGUgY2xpZW50IGRvZXNuJ3Qgc3VwcG9ydCAlcwBUYWJsZXNwYWNlICclcycgd2FzIHNraXBwZWQgc2luY2UgaXRzIGRlZmluaXRpb24gaXMgYmVpbmcgbW9kaWZpZWQgYnkgY29uY3VycmVudCBEREwgc3RhdGVtZW50AEVuZ2luZSAnJS4xOTJzJyBkb2VzIG5vdCBtYXRjaCBzdG9yZWQgZW5naW5lICclLjE5MnMnIGZvciB0YWJsZXNwYWNlICclLjE5MnMnAFRoZSBTUklEIG9mIHRoZSBnZW9tZXRyeSBkb2VzIG5vdCBtYXRjaCB0aGUgU1JJRCBvZiB0aGUgY29sdW1uICclLjY0cycuIFRoZSBTUklEIG9mIHRoZSBnZW9tZXRyeSBpcyAlbHUsIGJ1dCB0aGUgU1JJRCBvZiB0aGUgY29sdW1uIGlzICVsdS4gQ29uc2lkZXIgY2hhbmdpbmcgdGhlIFNSSUQgb2YgdGhlIGdlb21ldHJ5IG9yIHRoZSBTUklEIHByb3BlcnR5IG9mIHRoZSBjb2x1bW4uAFRoZSBTUklEIHNwZWNpZmljYXRpb24gb24gdGhlIGNvbHVtbiAnJS42NHMnIGNhbm5vdCBiZSBjaGFuZ2VkIGJlY2F1c2UgdGhlcmUgaXMgYSBzcGF0aWFsIGluZGV4IG9uIHRoZSBjb2x1bW4uIFBsZWFzZSByZW1vdmUgdGhlIHNwYXRpYWwgaW5kZXggYmVmb3JlIGFsdGVyaW5nIHRoZSBTUklEIHNwZWNpZmljYXRpb24uAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucz0lLjE5MnMgd2lsbCBiZSBpZ25vcmVkIGFuZCB1cGRhdGVzIHdpbGwgYmUgd3JpdHRlbiBpbiBmdWxsIGZvcm1hdCB0byBiaW5hcnkgbG9nLgBXaGVuICUuMTkycywgdGhlIG9wdGlvbiBsb2dfYmluX3VzZV92MV9yb3dfZXZlbnRzPTEgd2lsbCBiZSBpZ25vcmVkIGFuZCByb3cgZXZlbnRzIHdpbGwgYmUgd3JpdHRlbiBpbiBuZXcgZm9ybWF0IHRvIGJpbmFyeSBsb2cuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucz0lLjE5MnMgd2lsbCBiZSB1c2VkIG9ubHkgZm9yIHRoZSBhZnRlci1pbWFnZS4gRnVsbCB2YWx1ZXMgd2lsbCBiZSB3cml0dGVuIGluIHRoZSBiZWZvcmUtaW1hZ2UsIHNvIHRoZSBzYXZpbmcgaW4gZGlzayBzcGFjZSBkdWUgdG8gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zIGlzIGxpbWl0ZWQgdG8gbGVzcyB0aGFuIDUwJSUuAENvdWxkIG5vdCBhcHBseSBKU09OIGRpZmYgaW4gdGFibGUgJS4qcywgY29sdW1uICVzLgBDb3JydXB0ZWQgSlNPTiBkaWZmIGZvciB0YWJsZSAlLipzLCBjb2x1bW4gJXMuAFJlc291cmNlIEdyb3VwICclLS4xOTJzJyBleGlzdHMAUmVzb3VyY2UgR3JvdXAgJyUtLjE5MnMnIGRvZXMgbm90IGV4aXN0LgBJbnZhbGlkIGNwdSBpZCAldQBJbnZhbGlkIFZDUFUgcmFuZ2UgJXUtJXUASW52YWxpZCB0aHJlYWQgcHJpb3JpdHkgdmFsdWUgJWQgZm9yICVzIHJlc291cmNlIGdyb3VwICVzLiBBbGxvd2VkIHJhbmdlIGlzIFslZCwgJWRdLgAlcyBvcGVyYXRpb24gaXMgZGlzYWxsb3dlZCBvbiAlcwBSZXNvdXJjZSBncm91cCAlcyBpcyBidXN5LgBSZXNvdXJjZSBncm91cCAlcyBpcyBkaXNhYmxlZC4ARmVhdHVyZSAlcyBpcyB1bnN1cHBvcnRlZCAoJXMpLgBBdHRyaWJ1dGUgJXMgaXMgaWdub3JlZCAoJXMpLgBJbnZhbGlkIHRocmVhZCBpZCAoJWxsdSkuAFVuYWJsZSB0byBiaW5kIHJlc291cmNlIGdyb3VwICVzIHdpdGggdGhyZWFkIGlkICglbGx1KS4oJXMpLgBPcHRpb24gRk9SQ0UgaW52YWxpZCBhcyBESVNBQkxFIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLgBUaGUgJXMgY29tbWFuZCBlbmNvdW50ZXJlZCBhIGZhaWx1cmUuICVzAEZhaWxlZCB0byAlcyBTREkgJyUuMTkycy4lLjE5MnMnIGluIHRhYmxlc3BhY2UgJyUuMTkycycuAE1pc3NpbmcgdmFsdWUgZm9yIEpTT05fVEFCTEUgY29sdW1uICclLjE5MnMnAENhbid0IHN0b3JlIGFuIGFycmF5IG9yIGFuIG9iamVjdCBpbiB0aGUgc2NhbGFyIEpTT05fVEFCTEUgY29sdW1uICclLjE5MnMnAEV2ZXJ5IHRhYmxlIGZ1bmN0aW9uIG11c3QgaGF2ZSBhbiBhbGlhcwBJTk5FUiBvciBMRUZUIEpPSU4gbXVzdCBiZSB1c2VkIGZvciBMQVRFUkFMIHJlZmVyZW5jZXMgbWFkZSBieSAnJS4xOTJzJwBWYWx1ZSBpcyBvdXQgb2YgcmFuZ2UgZm9yIEpTT05fVEFCTEUncyBjb2x1bW4gJyUuMTkycycATW9yZSB0aGFuIHN1cHBvcnRlZCAldSBORVNURUQgUEFUSHMgd2VyZSBmb3VuZCBpbiBKU09OX1RBQkxFICclLjE5MnMnAFRoZSBzZWxlY3RlZCBhdXRoZW50aWNhdGlvbiBtZXRob2QgJS4qcyBkb2VzIG5vdCBzdXBwb3J0IHBhc3N3b3JkIGV4cGlyYXRpb24ASW52YWxpZCBHZW9KU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6IE1lbWJlciAnY3JzJyBtdXN0IGJlIHNwZWNpZmllZCBpbiB0aGUgdG9wIGxldmVsIG9iamVjdC4AQ29sdW1uICclLS4xOTJzJyBjYW5ub3QgYmUgbnVsbABUaGUgc3BhdGlhbCBpbmRleCBvbiBjb2x1bW4gJyUuNjRzJyB3aWxsIG5vdCBiZSB1c2VkIGJ5IHRoZSBxdWVyeSBvcHRpbWl6ZXIgc2luY2UgdGhlIGNvbHVtbiBkb2VzIG5vdCBoYXZlIGFuIFNSSUQgYXR0cmlidXRlLiBDb25zaWRlciBhZGRpbmcgYW4gU1JJRCBhdHRyaWJ1dGUgdG8gdGhlIGNvbHVtbi4AQ3JlYXRlIHRhYmxlL3RhYmxlc3BhY2UgJyUtLjE5MnMnIGZhaWxlZCwgYXMgZGlzayBpcyBmdWxsAENvdWxkIG5vdCBwYXJzZSBhcmd1bWVudCB0byBkaWdlc3QgZnVuY3Rpb246ICIlcyIuAENvdWxkIG5vdCBwYXJzZSBhcmd1bWVudCB0byBkaWdlc3QgZnVuY3Rpb24uAFNjaGVtYSBkaXJlY3RvcnkgJyUuMTkycycgYWxyZWFkeSBleGlzdHMuIFRoaXMgbXVzdCBiZSByZXNvbHZlZCBtYW51YWxseSAoZS5nLiBieSBtb3ZpbmcgdGhlIHNjaGVtYSBkaXJlY3RvcnkgdG8gYW5vdGhlciBsb2NhdGlvbikuAFNjaGVtYSBkaXJlY3RvcnkgJyUuMTkycycgZG9lcyBub3QgZXhpc3QARmFpbGVkIHRvIGNyZWF0ZSBzY2hlbWEgZGlyZWN0b3J5ICclLjE5MnMnIChlcnJubzogJWQgLSAlcykAU2NoZW1hICclLjE5MnMnIGRvZXMgbm90IGV4aXN0LCBidXQgc2NoZW1hIGRpcmVjdG9yeSAnJS4xOTJzJyB3YXMgZm91bmQuIFRoaXMgbXVzdCBiZSByZXNvbHZlZCBtYW51YWxseSAoZS5nLiBieSBtb3ZpbmcgdGhlIHNjaGVtYSBkaXJlY3RvcnkgdG8gYW5vdGhlciBsb2NhdGlvbikuAEZ1bmN0aW9uICUuMTkycyBpcyBvbmx5IGRlZmluZWQgZm9yIFNSSUQgMCBhbmQgU1JJRCA0MzI2LgBUaGUgb3B0aW9uIGV4cGlyZV9sb2dzX2RheXMgYW5kIGJpbmxvZ19leHBpcmVfbG9nc19zZWNvbmRzIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyLiBQbGVhc2UgdXNlIGJpbmxvZ19leHBpcmVfbG9nc19zZWNvbmRzIHRvIHNldCB0aGUgZXhwaXJlIHRpbWUgKGV4cGlyZV9sb2dzX2RheXMgaXMgZGVwcmVjYXRlZCkAVGhlIHJlc3VsdCBzdHJpbmcgaXMgbGFyZ2VyIHRoYW4gdGhlIHJlc3VsdCBidWZmZXIuAElsbGVnYWwgYXJndW1lbnQgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uAEluZGV4IG91dCBvZiBib3VuZHMgaW4gcmVndWxhciBleHByZXNzaW9uIHNlYXJjaC4ASW50ZXJuYWwgZXJyb3IgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5LgBTeW50YXggZXJyb3IgaW4gcmVndWxhciBleHByZXNzaW9uIG9uIGxpbmUgJXUsIGNoYXJhY3RlciAldS4AVW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnMgYSBmZWF0dXJlIHRoYXQgaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgbGlicmFyeSB2ZXJzaW9uLgBNaXNtYXRjaGVkIHBhcmVudGhlc2lzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4ASW5jb3JyZWN0IGRlc2NyaXB0aW9uIG9mIGEge21pbixtYXh9IGludGVydmFsLgBUaGUgbWF4aW11bSBpcyBsZXNzIHRoYW4gdGhlIG1pbnVtdW0gaW4gYSB7bWluLG1heH0gaW50ZXJ2YWwuAEludmFsaWQgYmFjay1yZWZlcmVuY2UgaW4gcmVndWxhciBleHByZXNzaW9uLgBUaGUgbG9vay1iZWhpbmQgYXNzZXJ0aW9uIGV4Y2VlZHMgdGhlIGxpbWl0IGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4AVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucyBhbiB1bmNsb3NlZCBicmFja2V0IGV4cHJlc3Npb24uAFRoZSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnMgYW4gW3gteV0gY2hhcmFjdGVyIHJhbmdlIHdoZXJlIHggY29tZXMgYWZ0ZXIgeS4AT3ZlcmZsb3cgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBiYWNrdHJhY2sgc3RhY2suAFRpbWVvdXQgZXhjZWVkZWQgaW4gcmVndWxhciBleHByZXNzaW9uIG1hdGNoLgBUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gZXhjZWVkcyBsaW1pdHMgb24gc2l6ZSBvciBjb21wbGV4aXR5LgBWYWx1ZSBmb3IgJXMgZ290IGNvbmZ1c2luZyBhdCBvciBhcm91bmQgIiVzIi4gU3ludGF4IG1heSBiZSB3cm9uZywgY29tcG9uZW50IG1heSBub3QgYmUgSU5TVEFMTGVkLCBvciBhIGNvbXBvbmVudCB0aGF0IGRvZXMgbm90IHN1cHBvcnQgaW5zdGFuY2VzIG1heSBiZSBsaXN0ZWQgbW9yZSB0aGFuIG9uY2UuAFNldHRpbmcgYW4gZW1wdHkgJXMgcGlwZWxpbmUgZGlzYWJsZXMgZXJyb3IgbG9nZ2luZyEAZmlsdGVyICVzOiAlcwAlLjE5MnMoJS44MHMpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgQ2FydGVzaWFuIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMuACUuMTkycyglLjgwcykgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciBwcm9qZWN0ZWQgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcy4ASW52YWxpZCByYWRpdXMgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6IFJhZGl1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBSZXN0YXJ0IHNlcnZlciBmYWlsZWQgKCVzKS4ATWlzc2luZyBtYW5kYXRvcnkgYXR0cmlidXRlICVzLgBNdWx0aXBsZSBkZWZpbml0aW9ucyBvZiBhdHRyaWJ1dGUgJXMuAFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gbmFtZSBjYW4ndCBiZSBhbiBlbXB0eSBzdHJpbmcgb3Igc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4AVGhlIG9yZ2FuaXphdGlvbiBuYW1lIGNhbid0IGJlIGFuIGVtcHR5IHN0cmluZyBvciBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlLgBUaGVyZSBpcyBhbHJlYWR5IGEgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHdpdGggU1JJRCAldS4AVGhlcmUgaXMgYWxyZWFkeSBhIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuAFNSSUQgMCBpcyBub3QgbW9kaWZpYWJsZS4AVGhlIFNSSUQgcmFuZ2UgWyV1LCAldV0gaGFzIGJlZW4gcmVzZXJ2ZWQgZm9yIHN5c3RlbSB1c2UuIFNSU3MgaW4gdGhpcyByYW5nZSBtYXkgYmUgYWRkZWQsIG1vZGlmaWVkIG9yIHJlbW92ZWQgd2l0aG91dCB3YXJuaW5nIGR1cmluZyB1cGdyYWRlLgBDYW4ndCBtb2RpZnkgU1JJRCAldS4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNvbHVtbiBkZXBlbmRpbmcgb24gaXQuAEludmFsaWQgY2hhcmFjdGVyIGluIGF0dHJpYnV0ZSAlcy4AQXR0cmlidXRlICVzIGlzIHRvbyBsb25nLiBUaGUgbWF4aW11bSBsZW5ndGggaXMgJXUgY2hhcmFjdGVycy4AJ3V0ZjgnIGlzIGN1cnJlbnRseSBhbiBhbGlhcyBmb3IgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgYnV0IHdpbGwgYmUgYW4gYWxpYXMgZm9yIFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuAE5BVElPTkFML05DSEFSL05WQVJDSEFSIGltcGxpZXMgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgd2hpY2ggd2lsbCBiZSByZXBsYWNlZCBieSBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBDSEFSKHgpIENIQVJBQ1RFUiBTRVQgVVRGOE1CNCBpbiBvcmRlciB0byBiZSB1bmFtYmlndW91cy4ASW52YWxpZCBkZWZhdWx0IGNvbGxhdGlvbiAlczogdXRmOG1iNF8wOTAwX2FpX2NpIG9yIHV0ZjhtYjRfZ2VuZXJhbF9jaSBleHBlY3RlZABVbmFibGUgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBmb3IgY29sdW1uICclLS4xOTJzJzogJS0uMTkycy4AVGhlIHRhYmxlICclLS4xOTJzJyBtYXkgbm90IGJlIGNyZWF0ZWQgaW4gdGhlIHJlc2VydmVkIHRhYmxlc3BhY2UgJyUtLjE5MnMnLgBUaGlzIG9wdGlvbiBjYW5ub3QgYmUgc2V0ICVzLgBBIGNvbW1pdCBmb3IgYW4gYXRvbWljIERETCBzdGF0ZW1lbnQgd2FzIHVuc3VjY2Vzc2Z1bCBvbiB0aGUgc291cmNlIGFuZCB0aGUgcmVwbGljYS4gVGhlIHJlcGxpY2Egc3VwcG9ydHMgYXRvbWljIERETCBzdGF0ZW1lbnRzIGJ1dCB0aGUgc291cmNlIGRvZXMgbm90LCBzbyB0aGUgYWN0aW9uIHRha2VuIGJ5IHRoZSByZXBsaWNhIGFuZCBzb3VyY2UgbWlnaHQgZGlmZmVyLiBDaGVjayB0aGF0IHRoZWlyIHN0YXRlcyBoYXZlIG5vdCBkaXZlcmdlZCBiZWZvcmUgcHJvY2VlZGluZy4ARnVuY3Rpb24gJXMgaXMgb25seSBkZWZpbmVkIGZvciBnZW9ncmFwaGljIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMsIGJ1dCBvbmUgb2YgaXRzIGFyZ3VtZW50cyBpcyBpbiBTUklEICV1LCB3aGljaCBpcyBub3QgZ2VvZ3JhcGhpYy4ARnVuY3Rpb24gJXMgZW5jb3VudGVyZWQgYSBwb2x5Z29uIHRoYXQgd2FzIHRvbyBsYXJnZS4gUG9seWdvbnMgbXVzdCBjb3ZlciBsZXNzIHRoYW4gaGFsZiB0aGUgcGxhbmV0LgBTcGF0aWFsIGluZGV4ZXMgY2FuJ3QgYmUgcHJpbWFyeSBvciB1bmlxdWUgaW5kZXhlcy4AVGhlIGluZGV4IHR5cGUgJS4yMHMgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3BhdGlhbCBpbmRleGVzLgBDYW5ub3QgZHJvcCB0YWJsZSAnJXMnIHJlZmVyZW5jZWQgYnkgYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclcycgb24gdGFibGUgJyVzJy4AQSBwYXJhbWV0ZXIgb2YgZnVuY3Rpb24gJS4xOTJzIGNvbnRhaW5zIGEgZ2VvbWV0cnkgd2l0aCBsb25naXR1ZGUgJWYsIHdoaWNoIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSB3aXRoaW4gKCVmLCAlZl0uAEEgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uICUuMTkycyBjb250YWlucyBhIGdlb21ldHJ5IHdpdGggbGF0aXR1ZGUgJWYsIHdoaWNoIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSB3aXRoaW4gWyVmLCAlZl0uAEZvcmVpZ24ga2V5ICclcycgdXNlcyB2aXJ0dWFsIGNvbHVtbiAnJXMnIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuIE1pc3NpbmcgY29sdW1uICclcycgZm9yIGNvbnN0cmFpbnQgJyVzJyBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSAnJXMnACVzOiBDb3VsZCBub3QgYWRkIHN1cHByZXNzaW9uIHJ1bGUgZm9yIGNvZGUgIiVzIi4gUnVsZS1zZXQgbWF5IGJlIGZ1bGwsIG9yIGNvZGUgbWF5IG5vdCBjb3JyZXNwb25kIHRvIGFuIGVycm9yLWxvZyBtZXNzYWdlLgBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGRlZmluaXRpb24gZm9yIFNSSUQgJXUgc3BlY2lmaWVzIGludmFsaWQgZ2VvZ3JhcGhpYyBheGVzICclLjIwcycgYW5kICclLjIwcycuIE9uZSBheGlzIG11c3QgYmUgTk9SVEggb3IgU09VVEggYW5kIHRoZSBvdGhlciBtdXN0IGJlIEVBU1Qgb3IgV0VTVC4AVGhlIGxlbmd0aCBvZiB0aGUgc2VtaS1tYWpvciBheGlzIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIuAFRoZSBpbnZlcnNlIGZsYXR0ZW5pbmcgbXVzdCBiZSBsYXJnZXIgdGhhbiAxLjAsIG9yIDAuMCBpZiB0aGUgZWxsaXBzb2lkIGlzIGEgc3BoZXJlLgBUaGUgYW5ndWxhciB1bml0IGNvbnZlcnNpb24gZmFjdG9yIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIuAFRoZSBwcmltZSBtZXJpZGlhbiBtdXN0IGJlIHdpdGhpbiAoLTE4MCwgMTgwXSBkZWdyZWVzLCBzcGVjaWZpZWQgaW4gdGhlIFNSUyBhbmd1bGFyIHVuaXQuAFRyYW5zZm9ybWF0aW9uIGZyb20gU1JJRCAldSBpcyBub3Qgc3VwcG9ydGVkLgBUcmFuc2Zvcm1hdGlvbiB0byBTUklEICV1IGlzIG5vdCBzdXBwb3J0ZWQuAFRyYW5zZm9ybWF0aW9uIGZyb20gU1JJRCAldSBpcyBub3Qgc3VwcG9ydGVkLiBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGhhcyBubyBUT1dHUzg0IGNsYXVzZS4AVHJhbnNmb3JtYXRpb24gdG8gU1JJRCAldSBpcyBub3Qgc3VwcG9ydGVkLiBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGhhcyBubyBUT1dHUzg0IGNsYXVzZS4AQ2hhbmdpbmcgQEBzZXNzaW9uLmJpbmxvZ19mb3JtYXQgaXMgZGlzYWxsb3dlZCB3aGVuIHRoZSBzZXNzaW9uIGhhcyBvcGVuIHRlbXBvcmFyeSB0YWJsZShzKS4gWW91IGNvdWxkIHdhaXQgdW50aWwgdGhlc2UgdGVtcG9yYXJ5IHRhYmxlKHMpIGFyZSBkcm9wcGVkIGFuZCB0cnkgYWdhaW4uAENoYW5naW5nIEBAZ2xvYmFsLmJpbmxvZ19mb3JtYXQgb3IgQEBwZXJzaXN0LmJpbmxvZ19mb3JtYXQgaXMgZGlzYWxsb3dlZCB3aGVuIGFueSByZXBsaWNhdGlvbiBjaGFubmVsIGhhcyBvcGVuIHRlbXBvcmFyeSB0YWJsZShzKS4gWW91IGNvdWxkIHdhaXQgdW50aWwgUmVwbGljYV9vcGVuX3RlbXBfdGFibGVzID0gMCBhbmQgdHJ5IGFnYWluAENoYW5naW5nIEBAZ2xvYmFsLmJpbmxvZ19mb3JtYXQgb3IgQEBwZXJzaXN0LmJpbmxvZ19mb3JtYXQgaXMgZGlzYWxsb3dlZCB3aGVuIGFueSByZXBsaWNhdGlvbiBjaGFubmVsIGFwcGxpZXIgdGhyZWFkIGlzIHJ1bm5pbmcuIFlvdSBjb3VsZCBleGVjdXRlIFNUT1AgUkVQTElDQSBTUUxfVEhSRUFEIGFuZCB0cnkgYWdhaW4uAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIGFuZCBEUk9QIFRFTVBPUkFSWSBUQUJMRSBhcmUgbm90IGFsbG93ZWQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gb3IgaW5zaWRlIGEgcHJvY2VkdXJlIGluIGEgdHJhbnNhY3Rpb25hbCBjb250ZXh0IHdoZW4gQEBzZXNzaW9uLmJpbmxvZ19mb3JtYXQ9U1RBVEVNRU5ULgBYQTogRmFpbGVkIHRvIHRha2UgTURMIExvY2sgYmFja3VwIG9mIFBSRVBBUkVEIFhBIHRyYW5zYWN0aW9uIGR1cmluZyBjbGllbnQgZGlzY29ubmVjdC4AVW5hYmxlIHRvIGNyZWF0ZSBvciBjaGFuZ2UgYSB0YWJsZSB3aXRob3V0IGEgcHJpbWFyeSBrZXksIHdoZW4gdGhlIHN5c3RlbSB2YXJpYWJsZSAnc3FsX3JlcXVpcmVfcHJpbWFyeV9rZXknIGlzIHNldC4gQWRkIGEgcHJpbWFyeSBrZXkgdG8gdGhlIHRhYmxlIG9yIHVuc2V0IHRoaXMgdmFyaWFibGUgdG8gYXZvaWQgdGhpcyBtZXNzYWdlLiBOb3RlIHRoYXQgdGFibGVzIHdpdGhvdXQgYSBwcmltYXJ5IGtleSBjYW4gY2F1c2UgcGVyZm9ybWFuY2UgcHJvYmxlbXMgaW4gcm93LWJhc2VkIHJlcGxpY2F0aW9uLCBzbyBwbGVhc2UgY29uc3VsdCB5b3VyIERCQSBiZWZvcmUgY2hhbmdpbmcgdGhpcyBzZXR0aW5nLgBEYXRhIHRydW5jYXRlZCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJXMnIGF0IHJvdyAlbGQAVmFsdWUgaXMgb3V0IG9mIHJhbmdlIGZvciBmdW5jdGlvbmFsIGluZGV4ICclcycgYXQgcm93ICVsZABDYW5ub3QgY3JlYXRlIGEgZnVuY3Rpb25hbCBpbmRleCBvbiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIEpTT04gb3IgR0VPTUVUUlkgdmFsdWUuAEZ1bmN0aW9uYWwgaW5kZXggJyUuNjRzJyBjYW5ub3QgcmVmZXIgdG8gYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uLgBDYW5ub3QgZHJvcCBjb2x1bW4gJyUtLjY0cycgYmVjYXVzZSBpdCBpcyB1c2VkIGJ5IGEgZnVuY3Rpb25hbCBpbmRleC4gSW4gb3JkZXIgdG8gZHJvcCB0aGUgY29sdW1uLCB5b3UgbXVzdCByZW1vdmUgdGhlIGZ1bmN0aW9uYWwgaW5kZXguAFRoZSBwcmltYXJ5IGtleSBjYW5ub3QgYmUgYSBmdW5jdGlvbmFsIGluZGV4AENhbm5vdCBjcmVhdGUgYSBmdW5jdGlvbmFsIGluZGV4IG9uIGFuIGV4cHJlc3Npb24gdGhhdCByZXR1cm5zIGEgQkxPQiBvciBURVhULiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgQ0FTVC4ARXhwcmVzc2lvbiBvZiBmdW5jdGlvbmFsIGluZGV4ICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uLgBGdWxsdGV4dCBmdW5jdGlvbmFsIGluZGV4IGlzIG5vdCBzdXBwb3J0ZWQuAFNwYXRpYWwgZnVuY3Rpb25hbCBpbmRleCBpcyBub3Qgc3VwcG9ydGVkLgBUaGUgdXNlZCBzdG9yYWdlIGVuZ2luZSBjYW5ub3QgaW5kZXggdGhlIGV4cHJlc3Npb24gJyVzJy4ARnVuY3Rpb25hbCBpbmRleCBvbiBhIGNvbHVtbiBpcyBub3Qgc3VwcG9ydGVkLiBDb25zaWRlciB1c2luZyBhIHJlZ3VsYXIgaW5kZXggaW5zdGVhZC4ARXhwcmVzc2lvbiBvZiBnZW5lcmF0ZWQgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uOiAlcy4ARXhwcmVzc2lvbiBvZiBnZW5lcmF0ZWQgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGEgcm93IHZhbHVlLgBFeHByZXNzaW9uIG9mIGdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdXNlciBvciBzeXN0ZW0gdmFyaWFibGVzLgBDb2x1bW4gJyVzJyBvZiB0YWJsZSAnJXMnIGhhcyBhIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBkZXBlbmRlbmN5IGFuZCBjYW5ub3QgYmUgZHJvcHBlZCBvciByZW5hbWVkLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGEgY29sdW1uIGRlZmluZWQgYWZ0ZXIgaXQgaWYgdGhhdCBjb2x1bW4gaXMgYSBnZW5lcmF0ZWQgY29sdW1uIG9yIGhhcyBhbiBleHByZXNzaW9uIGFzIGRlZmF1bHQgdmFsdWUuAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uOiAlcy4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB0byBhIHJvdyB2YWx1ZS4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB1c2VyIG9yIHN5c3RlbSB2YXJpYWJsZXMuAERFRkFVTFQgZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgd2l0aCBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zACclcycgaXMgbm90IHN1cHBvcnRlZCBmb3IgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucy4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IEFMVEVSIFRBQkxFIC4uLiBBREQgQ09MVU1OIC4uIHdpdGggZXhwcmVzc2lvbiBhcyBERUZBVUxULgBDYW5ub3QgY2hhbmdlIHRhYmxlJ3Mgc3RvcmFnZSBlbmdpbmUgYmVjYXVzZSB0aGUgdGFibGUgcGFydGljaXBhdGVzIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludC4AU2V0dGluZyB1c2VyIHZhcmlhYmxlcyB3aXRoaW4gZXhwcmVzc2lvbnMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIGFsdGVybmF0aXZlczogJ1NFVCB2YXJpYWJsZT1leHByZXNzaW9uLCAuLi4nLCBvciAnU0VMRUNUIGV4cHJlc3Npb24ocykgSU5UTyB2YXJpYWJsZXMocyknLgAnJS0uNjRzJyBpcyBhIGNvbGxhdGlvbiBvZiB0aGUgZGVwcmVjYXRlZCBjaGFyYWN0ZXIgc2V0IFVURjhNQjMuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IHdpdGggYW4gYXBwcm9wcmlhdGUgY29sbGF0aW9uIGluc3RlYWQuAE5lc3RlZCBjb21tZW50IHN5bnRheCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AUmVmZXJlbmNpbmcgY29sdW1uICclcycgYW5kIHJlZmVyZW5jZWQgY29sdW1uICclcycgaW4gZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJXMnIGFyZSBpbmNvbXBhdGlibGUuAFRpbWVvdXQgZXhjZWVkZWQgZm9yIGhlbGQgc3RhdGVtZW50IHdoaWxlIG5ldyBHcm91cCBSZXBsaWNhdGlvbiBwcmltYXJ5IG1lbWJlciBpcyBhcHBseWluZyBiYWNrbG9nLgBIZWxkIHN0YXRlbWVudCBhYm9ydGVkIGJlY2F1c2UgR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIGdvdCBzaHV0IGRvd24gb3IgdGhyZWFkIHdhcyBraWxsZWQgd2hpbGUgbmV3IHByaW1hcnkgbWVtYmVyIHdhcyBhcHBseWluZyBiYWNrbG9nLgBIZWxkIHN0YXRlbWVudCB3YXMgYWJvcnRlZCBkdWUgdG8gbWVtYmVyIGJlaW5nIGluIGVycm9yIHN0YXRlLCB3aGlsZSBiYWNrbG9nIGlzIGJlaW5nIGFwcGxpZWQgZHVyaW5nIEdyb3VwIFJlcGxpY2F0aW9uIHByaW1hcnkgZWxlY3Rpb24uAEZhaWxlZCB0byBmZXRjaCBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAENhbid0IGZpbmQga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGluIHRoZSBzZXJ2ZXIgbG9nIGlmIGEga2V5cmluZyBpcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4ARmV0Y2hlZCBhbiBpbnZhbGlkIGtleSBmcm9tIGtleXJpbmcuAEVycm9yIHJlYWRpbmcgYSByZXBsaWNhdGlvbiBsb2cgZW5jcnlwdGlvbiBoZWFkZXI6ICVzLgBGYWlsZWQgdG8gcm90YXRlIHNvbWUgbG9ncyBhZnRlciBjaGFuZ2luZyBiaW5sb2cgZW5jcnlwdGlvbiBzZXR0aW5ncy4gUGxlYXNlIGZpeCB0aGUgcHJvYmxlbSBhbmQgcm90YXRlIHRoZSBsb2dzIG1hbnVhbGx5LgBLZXkgJXMgZXhpc3RzIHVuZXhwZWN0ZWQuAEZhaWxlZCB0byBnZW5lcmF0ZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHN0b3JlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gcmVtb3ZlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gY2hhbmdlIGJpbmxvZ19lbmNyeXB0aW9uIHZhbHVlLiAlLS44MHMuAFVuYWJsZSB0byByZWNvdmVyIGJpbmxvZyBlbmNyeXB0aW9uIG1hc3RlciBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4Ac2xvdyBxdWVyeSBsb2cgZmlsZSBmb3JtYXQgY2hhbmdlZCBhcyByZXF1ZXN0ZWQsIGJ1dCBzZXR0aW5nIHdpbGwgaGF2ZSBubyBlZmZlY3Qgd2hlbiBub3QgYWN0dWFsbHkgbG9nZ2luZyB0byBhIGZpbGUuAFRoZSBvcHRpb24gZ3JvdXBfcmVwbGljYXRpb25fY29uc2lzdGVuY3kgY2Fubm90IGJlIHVzZWQgb24gdGhlIGN1cnJlbnQgbWVtYmVyIHN0YXRlLgBFcnJvciB3aGlsZSB3YWl0aW5nIGZvciBncm91cCB0cmFuc2FjdGlvbnMgY29tbWl0IG9uIGdyb3VwX3JlcGxpY2F0aW9uX2NvbnNpc3RlbmN5PSAnQkVGT1JFJy4ARXJyb3Igd2hpbGUgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zIHdpdGggZ3JvdXBfcmVwbGljYXRpb25fY29uc2lzdGVuY3k9ICdBRlRFUicgdG8gY29tbWl0LgBUaGUgR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIGlzIHN0b3BwaW5nLCB0aGVyZWZvcmUgbmV3IHRyYW5zYWN0aW9ucyBhcmUgbm90IGFsbG93ZWQgdG8gc3RhcnQuAEV4cHJlc3Npb24gb2YgZnVuY3Rpb25hbCBpbmRleCAnJXMnIGNhbm5vdCByZWZlciB0byBhIHJvdyB2YWx1ZS4ARmFpbGVkIHRvIGVuY3J5cHQgY29udGVudCB0byB3cml0ZSBpbnRvIGJpbmxvZyBmaWxlOiAlcy4AUGFnZSBUcmFja2luZyBpcyBub3Qgc3RhcnRlZCB5ZXQuAFRyYWNraW5nIHdhcyBub3QgZW5hYmxlZCBmb3IgdGhlIExTTiByYW5nZSBzcGVjaWZpZWQAQ2Fubm90IHB1cmdlIGRhdGEgd2hlbiBjb25jdXJyZW50IGNsb25lIGlzIGluIHByb2dyZXNzLiBUcnkgbGF0ZXIuAENhbm5vdCByb3RhdGUgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHdoZW4gJ2JpbmxvZy1lbmNyeXB0aW9uJyBpcyBvZmYuAFVuYWJsZSB0byByZWNvdmVyIGJpbmFyeSBsb2cgbWFzdGVyIGtleSwgdGhlIGNvbWJpbmF0aW9uIG9mIG5ld19tYXN0ZXJfa2V5X3NlcW5vPSV1LCBtYXN0ZXJfa2V5X3NlcW5vPSV1IGFuZCBvbGRfbWFzdGVyX2tleV9zZXFubz0ldSBhcmUgd3JvbmcuAEZhaWxlZCB0byBvcGVyYXRlIGJpbmFyeSBsb2cgbWFzdGVyIGtleSBvbiBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuIFRoZSBzdGF0ZW1lbnQgaGFkIG5vIGVmZmVjdDogdGhlIG9sZCBiaW5hcnkgbG9nIG1hc3RlciBrZXkgaXMgc3RpbGwgaW4gdXNlLCB0aGUga2V5cmluZywgYmluYXJ5IGFuZCByZWxheSBsb2cgZmlsZXMgYXJlIHVuY2hhbmdlZCwgYW5kIHRoZSBzZXJ2ZXIgY291bGQgbm90IHN0YXJ0IHVzaW5nIGEgbmV3IGJpbmFyeSBsb2cgbWFzdGVyIGtleSBmb3IgZW5jcnlwdGluZyBuZXcgYmluYXJ5IGFuZCByZWxheSBsb2cgZmlsZXMuAEZhaWxlZCB0byByb3RhdGUgb25lIG9yIG1vcmUgYmluYXJ5IG9yIHJlbGF5IGxvZyBmaWxlcy4gQSBuZXcgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHdhcyBnZW5lcmF0ZWQgYW5kIHdpbGwgYmUgdXNlZCB0byBlbmNyeXB0IG5ldyBiaW5hcnkgYW5kIHJlbGF5IGxvZyBmaWxlcy4gVGhlcmUgbWF5IHN0aWxsIGV4aXN0IGJpbmFyeSBvciByZWxheSBsb2cgZmlsZXMgdXNpbmcgdGhlIHByZXZpb3VzIGJpbmFyeSBsb2cgbWFzdGVyIGtleS4AJXMuIEEgbmV3IGJpbmFyeSBsb2cgbWFzdGVyIGtleSB3YXMgZ2VuZXJhdGVkIGFuZCB3aWxsIGJlIHVzZWQgdG8gZW5jcnlwdCBuZXcgYmluYXJ5IGFuZCByZWxheSBsb2cgZmlsZXMuIFRoZXJlIG1heSBzdGlsbCBleGlzdCBiaW5hcnkgb3IgcmVsYXkgbG9nIGZpbGVzIHVzaW5nIHRoZSBwcmV2aW91cyBiaW5hcnkgbG9nIG1hc3RlciBrZXkuAEZhaWxlZCB0byByZW1vdmUgdW51c2VkIGJpbmFyeSBsb2cgZW5jcnlwdGlvbiBrZXlzIGZyb20gdGhlIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4gVGhlIHVudXNlZCBiaW5hcnkgbG9nIGVuY3J5cHRpb24ga2V5cyBtYXkgc3RpbGwgZXhpc3QgaW4gdGhlIGtleXJpbmcsIGFuZCB0aGV5IHdpbGwgYmUgcmVtb3ZlZCB1cG9uIHNlcnZlciByZXN0YXJ0IG9yIG5leHQgJ0FMVEVSIElOU1RBTkNFIFJPVEFURSBCSU5MT0cgTUFTVEVSIEtFWScgZXhlY3V0aW9uLgBGYWlsZWQgdG8gcmVtb3ZlIGF1eGlsaWFyeSBiaW5hcnkgbG9nIGVuY3J5cHRpb24ga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLiBUaGUgY2xlYW51cCBvZiB0aGUgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHJvdGF0aW9uIHByb2Nlc3MgZGlkIG5vdCBmaW5pc2ggYXMgZXhwZWN0ZWQgYW5kIHRoZSBjbGVhbnVwIHdpbGwgdGFrZSBwbGFjZSB1cG9uIHNlcnZlciByZXN0YXJ0IG9yIG5leHQgJ0FMVEVSIElOU1RBTkNFIFJPVEFURSBCSU5MT0cgTUFTVEVSIEtFWScgZXhlY3V0aW9uLgBBbiBleHByZXNzaW9uIG9mIG5vbi1ib29sZWFuIHR5cGUgc3BlY2lmaWVkIHRvIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycuAENvbHVtbiBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyByZWZlcmVuY2VzIG90aGVyIGNvbHVtbi4AQW4gZXhwcmVzc2lvbiBvZiBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNvbnRhaW5zIGRpc2FsbG93ZWQgZnVuY3Rpb246ICVzLgBBbiBleHByZXNzaW9uIG9mIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgY29udGFpbnMgZGlzYWxsb3dlZCBmdW5jdGlvbi4AQW4gZXhwcmVzc2lvbiBvZiBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNhbm5vdCByZWZlciB0byBhIHVzZXIgb3Igc3lzdGVtIHZhcmlhYmxlLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBjYW5ub3QgcmVmZXIgdG8gYSByb3cgdmFsdWUuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNhbm5vdCByZWZlciB0byBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4uAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGlzIHZpb2xhdGVkLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyByZWZlcnMgdG8gbm9uLWV4aXN0aW5nIGNvbHVtbiAnJS0uMTkycycuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGlzIG5vdCBmb3VuZCBpbiB0aGUgdGFibGUuAER1cGxpY2F0ZSBjaGVjayBjb25zdHJhaW50IG5hbWUgJyUtLjE5MnMnLgBDb2x1bW4gJyUtLjE5MnMnIGNhbm5vdCBiZSB1c2VkIGluIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycyc6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIHJlZmVyZW50aWFsIGFjdGlvbi4AQ3JlYXRpbmcgYW4gdW5lbmNyeXB0ZWQgdGFibGUgaW4gYSBkYXRhYmFzZSB3aXRoIGRlZmF1bHQgZW5jcnlwdGlvbiBlbmFibGVkLgBSZXF1ZXN0IHRvIGNyZWF0ZSAlcyB0YWJsZSB3aGlsZSB1c2luZyBhbiAlcyB0YWJsZXNwYWNlLgBUYWJsZSBlbmNyeXB0aW9uIGRpZmZlciBmcm9tIGl0cyBkYXRhYmFzZSBkZWZhdWx0IGVuY3J5cHRpb24sIGFuZCB1c2VyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlLgBEYXRhYmFzZSBkZWZhdWx0IGVuY3J5cHRpb24gZGlmZmVyIGZyb20gJ2RlZmF1bHRfdGFibGVfZW5jcnlwdGlvbicgc2V0dGluZywgYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAFRhYmxlc3BhY2UgZW5jcnlwdGlvbiBkaWZmZXIgZnJvbSAnZGVmYXVsdF90YWJsZV9lbmNyeXB0aW9uJyBzZXR0aW5nLCBhbmQgdXNlciBkb2Vzbid0IGhhdmUgZW5vdWdoIHByaXZpbGVnZS4AVGhpcyB0YWJsZXNwYWNlIGNhbid0IGJlIGVuY3J5cHRlZCwgYmVjYXVzZSBvbmUgb2YgdGFibGUncyBzY2hlbWEgaGFzIGRlZmF1bHQgZW5jcnlwdGlvbiBPRkYgYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAFRoaXMgdGFibGVzcGFjZSBjYW4ndCBiZSBkZWNyeXB0ZWQsIGJlY2F1c2Ugb25lIG9mIHRhYmxlJ3Mgc2NoZW1hIGhhcyBkZWZhdWx0IGVuY3J5cHRpb24gT04gYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAENhbm5vdCBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIHRhYmxlc3BhY2UgbmFtZWQgJyVzJy4AU291cmNlIHRhYmxlc3BhY2UgaXMgZW5jcnlwdGVkIGJ1dCB0YXJnZXQgdGFibGVzcGFjZSBpcyBub3QuAEVOQ1JZUFRJT04gY2xhdXNlIGlzIG5vdCB2YWxpZCBmb3IgJXMgdGFibGVzcGFjZS4ATXVsdGlwbGUgJXMgY2xhdXNlcwBHUkFOVCAuLi4gQVMgaXMgY3VycmVudGx5IHN1cHBvcnRlZCBvbmx5IGZvciBnbG9iYWwgcHJpdmlsZWdlcy4ARWl0aGVyIHNvbWUgb2YgdGhlIGF1dGhvcml6YXRpb24gSURzIGluIHRoZSBBUyBjbGF1c2UgYXJlIGludmFsaWQgb3IgdGhlIGN1cnJlbnQgdXNlciBsYWNrcyBwcml2aWxlZ2VzIHRvIGV4ZWN1dGUgdGhlIHN0YXRlbWVudC4AQ29sdW1uICclcycgaGFzIGEgZnVuY3Rpb25hbCBpbmRleCBkZXBlbmRlbmN5IGFuZCBjYW5ub3QgYmUgZHJvcHBlZCBvciByZW5hbWVkLgBQbHVnaW4gJyVzJyBpcyBub3QgdG8gYmUgdXNlZCBhcyBhbiAiZWFybHkiIHBsdWdpbi4gRG9uJ3QgYWRkIGl0IHRvIC0tZWFybHktcGx1Z2luLWxvYWQsIGtleXJpbmcgbWlncmF0aW9uIGV0Yy4AUmVkbyBsb2cgYXJjaGl2aW5nIHN0YXJ0IHByb2hpYml0cyBwYXRoIG5hbWUgaW4gJ3N1YmRpcicgYXJndW1lbnQAUmVkbyBsb2cgYXJjaGl2aW5nIHN0YXJ0IHRpbWVkIG91dABTZXJ2ZXIgdmFyaWFibGUgJ2lubm9kYl9yZWRvX2xvZ19hcmNoaXZlX2RpcnMnIGlzIE5VTEwgb3IgZW1wdHkATGFiZWwgJyUuMTkycycgbm90IGZvdW5kIGluIHNlcnZlciB2YXJpYWJsZSAnaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfZGlycycARGlyZWN0b3J5IGlzIGVtcHR5IGFmdGVyIGxhYmVsICclLjE5MnMnIGluIHNlcnZlciB2YXJpYWJsZSAnaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfZGlycycAUmVkbyBsb2cgYXJjaGl2ZSBkaXJlY3RvcnkgJyUuMTkycycgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGEgZGlyZWN0b3J5AFJlZG8gbG9nIGFyY2hpdmUgZGlyZWN0b3J5ICclLjE5MnMnIGlzIGluLCB1bmRlciwgb3Igb3ZlciBzZXJ2ZXIgZGlyZWN0b3J5ICclLjE5MnMnIC0gJyUuMTkycycAUmVkbyBsb2cgYXJjaGl2ZSBkaXJlY3RvcnkgJyUuMTkycycgaXMgYWNjZXNzaWJsZSB0byBhbGwgT1MgdXNlcnMAQ2Fubm90IGNyZWF0ZSByZWRvIGxvZyBhcmNoaXZlIGZpbGUgJyUuNTEycycgKE9TIGVycm5vOiAlZCAtICUuMTI4cykAUmVkbyBsb2cgYXJjaGl2aW5nIGhhcyBiZWVuIHN0YXJ0ZWQgb24gJyUuNTEycycgLSBDYWxsIGlubm9kYl9yZWRvX2xvZ19hcmNoaXZlX3N0b3AoKSBmaXJzdABSZWRvIGxvZyBhcmNoaXZpbmcgaXMgbm90IGFjdGl2ZQBSZWRvIGxvZyBhcmNoaXZpbmcgZmFpbGVkOiAlLjUxMnMAUmVkbyBsb2cgYXJjaGl2aW5nIGhhcyBub3QgYmVlbiBzdGFydGVkIGJ5IHRoaXMgc2Vzc2lvbgBSZWdleCBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ASW52YWxpZCBKU09OIHR5cGUgaW4gYXJndW1lbnQgJXUgdG8gZnVuY3Rpb24gJXM7IGFuICVzIGlzIHJlcXVpcmVkLgBDYW5ub3QgY29udmVydCBzdHJpbmcgJyUuNjRzJyBmcm9tICVzIHRvICVzAENvbHVtbiAnJXMnIGhhcyBhIHBhcnRpdGlvbmluZyBmdW5jdGlvbiBkZXBlbmRlbmN5IGFuZCBjYW5ub3QgYmUgZHJvcHBlZCBvciByZW5hbWVkLgBBVVRPX0lOQ1JFTUVOVCBzdXBwb3J0IGZvciBGTE9BVC9ET1VCTEUgY29sdW1ucyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgcmVtb3ZpbmcgQVVUT19JTkNSRU1FTlQgZnJvbSBjb2x1bW4gJyUtLjE5MnMnLgBDYW5ub3Qgc3RvcCB0aGUgcmVwbGljYSBTUUwgdGhyZWFkIHdoaWxlIHRoZSBpbnN0YW5jZSBpcyBsb2NrZWQgZm9yIGJhY2t1cC4gVHJ5IHJ1bm5pbmcgYFVOTE9DSyBJTlNUQU5DRWAgZmlyc3QuAFNwZWNpZnlpbmcgbnVtYmVyIG9mIGRpZ2l0cyBmb3IgZmxvYXRpbmcgcG9pbnQgZGF0YSB0eXBlcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVU5TSUdORUQgZm9yIGRlY2ltYWwgYW5kIGZsb2F0aW5nIHBvaW50IGRhdGEgdHlwZXMgaXMgZGVwcmVjYXRlZCBhbmQgc3VwcG9ydCBmb3IgaXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAEludGVnZXIgZGlzcGxheSB3aWR0aCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVGhlIFpFUk9GSUxMIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gVXNlIHRoZSBMUEFEIGZ1bmN0aW9uIHRvIHplcm8tcGFkIG51bWJlcnMsIG9yIHN0b3JlIHRoZSBmb3JtYXR0ZWQgbnVtYmVycyBpbiBhIENIQVIgY29sdW1uLgBDbG9uZSBEb25vciBFcnJvcjogJS41MTJzLgBDbG9uZSByZWNlaXZlZCB1bmV4cGVjdGVkIHJlc3BvbnNlIGZyb20gRG9ub3IgOiAlLjUxMnMuAENsb25lIERvbm9yIE15U1FMIHZlcnNpb246ICUuNjRzIGlzIGRpZmZlcmVudCBmcm9tIFJlY2lwaWVudCBNeVNRTCB2ZXJzaW9uICUuNjRzLgBDbG9uZSBEb25vciBPUzogJS42NHMgaXMgZGlmZmVyZW50IGZyb20gUmVjaXBpZW50IE9TOiAlLjY0cy4AQ2xvbmUgRG9ub3IgcGxhdGZvcm06ICUuNjRzIGlzIGRpZmZlcmVudCBmcm9tIFJlY2lwaWVudCBwbGF0Zm9ybTogJS42NHMuAENsb25lIERvbm9yIGNvbGxhdGlvbjogJS4xMjhzIGlzIHVuYXZhaWxhYmxlIGluIFJlY2lwaWVudC4AQ2xvbmUgQ29uZmlndXJhdGlvbiAlLjEyOHM6IERvbm9yIHZhbHVlOiAlLjEyOHMgaXMgZGlmZmVyZW50IGZyb20gUmVjaXBpZW50IHZhbHVlOiAlLjEyOHMuAENsb25lIHN5c3RlbSBjb25maWd1cmF0aW9uOiAlLjUxMnMAQ2xvbmUgRG9ub3IgcGx1Z2luICUuMTI4cyBpcyBub3QgYWN0aXZlIGluIFJlY2lwaWVudC4AQ2xvbmUgY2Fubm90IHVzZSBsb29wIGJhY2sgY29ubmVjdGlvbiB3aGlsZSBjbG9uaW5nIGludG8gY3VycmVudCBkYXRhIGRpcmVjdG9yeS4AQ2xvbmUgbmVlZHMgU1NMIGNvbm5lY3Rpb24gZm9yIGVuY3J5cHRlZCB0YWJsZS4AQ2xvbmUgZXN0aW1hdGVkIGRhdGFiYXNlIHNpemUgaXMgJS42NHMuIEF2YWlsYWJsZSBzcGFjZSAlLjY0cyBpcyBub3QgZW5vdWdoLgBDb25jdXJyZW50IGNsb25lIGluIHByb2dyZXNzLiBQbGVhc2UgdHJ5IGFmdGVyIGNsb25lIGlzIGNvbXBsZXRlLgBUaGUgY2xvbmUgb3BlcmF0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGVuICVzLgBDYW5ub3QgZ3JhbnQgcm9sZXMgdG8gYW4gYW5vbnltb3VzIHVzZXIuACVzAEVtcHR5IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgYXMgc2Vjb25kIHBhc3N3b3JkIGZvciB1c2VyICclcydAJyVzJy4AQWNjZXNzIGRlbmllZCBmb3IgQXV0aElkIGAlLjY0c2BAYCUuNjRzYCB0byBkYXRhYmFzZSAnJS0uMTkycycuAENhbm5vdCBzZXQgbWFuZGF0b3J5X3JvbGVzOiBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGhhcyAnJXMnIHByaXZpbGVnZS4AR3RpZCB0YWJsZSBpcyBub3QgcmVhZHkgdG8gYmUgdXNlZC4gVGFibGUgJyVzLiVzJyBjYW5ub3QgYmUgb3BlbmVkLgBUaGUgZ2VvbWV0cnkgcGFzc2VkIHRvIGZ1bmN0aW9uICVzIGlzIGluIFNSSUQgMCwgd2hpY2ggZG9lc24ndCBzcGVjaWZ5IGEgbGVuZ3RoIHVuaXQuIENhbid0IGNvbnZlcnQgdG8gJyVzJy4ARXJyb3IgaW5zdGFsbGluZyBwbHVnaW4gJyVzJzogJXMAU3RvcmFnZSBlbmdpbmUgY291bGQgbm90IGFsbG9jYXRlIHRlbXBvcmFyeSB0YWJsZXNwYWNlIGZvciB0aGlzIHNlc3Npb24uAEdvdCB1bmtub3duIGVycm9yOiAlZABDb3VsZCBub3QgY2hhbmdlIGNvbHVtbiAnJXMnIG9mIHRhYmxlICclcycuIFRoZSByZXN1bHRpbmcgc2l6ZSBvZiBpbmRleCAnJXMnIHdvdWxkIGV4Y2VlZCB0aGUgbWF4IGtleSBsZW5ndGggb2YgJWQgYnl0ZXMuAEEgY2FwdHVyZSBncm91cCBoYXMgYW4gaW52YWxpZCBuYW1lLgBGYWlsZWQgdG8gc2V0IHVwIFNTTCBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgU1NMIGxpYnJhcnkgZXJyb3I6ICVzAFNlY29uZGFyeSBlbmdpbmUgb3BlcmF0aW9uIGZhaWxlZC4gJXMuAERETHMgb24gYSB0YWJsZSB3aXRoIGEgc2Vjb25kYXJ5IGVuZ2luZSBkZWZpbmVkIGFyZSBub3QgYWxsb3dlZC4ASW5jb3JyZWN0IGN1cnJlbnQgcGFzc3dvcmQuIFNwZWNpZnkgdGhlIGNvcnJlY3QgcGFzc3dvcmQgd2hpY2ggaGFzIHRvIGJlIHJlcGxhY2VkLgBDdXJyZW50IHBhc3N3b3JkIG5lZWRzIHRvIGJlIHNwZWNpZmllZCBpbiB0aGUgUkVQTEFDRSBjbGF1c2UgaW4gb3JkZXIgdG8gY2hhbmdlIGl0LgBEbyBub3Qgc3BlY2lmeSB0aGUgY3VycmVudCBwYXNzd29yZCB3aGlsZSBjaGFuZ2luZyBpdCBmb3Igb3RoZXIgdXNlcnMuAEN1cnJlbnQgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBmb3IgdXNlciAnJXMnQCclcycgYmVjYXVzZSBhdXRoZW50aWNhdGlvbiBwbHVnaW4gaXMgYmVpbmcgY2hhbmdlZC4AQ3VycmVudCBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGZvciB1c2VyICclcydAJyVzJyBiZWNhdXNlIG5ldyBwYXNzd29yZCBpcyBlbXB0eS4AQXQgbGVhc3Qgb25lIHBhcnRpYWwgcmV2b2tlIGV4aXN0cyBvbiBhIGRhdGFiYXNlLiBUaGUgc3lzdGVtIHZhcmlhYmxlICdAQHBhcnRpYWxfcmV2b2tlcycgbXVzdCBiZSBzZXQgdG8gT04uAEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaXMgc2V0IGFzIG1hbmRhdG9yeV9yb2xlcy4gQ2Fubm90IGdyYW50IHRoZSAnJXMnIHByaXZpbGVnZS4AVGhlIHVzZSBvZiByZXBsaWNhdGlvbiBmaWx0ZXJzIHdpdGggWEEgdHJhbnNhY3Rpb25zIGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBjYW4gbGVhZCB0byBhbiB1bmRlZmluZWQgc3RhdGUgaW4gdGhlIHJlcGxpY2EuAHNxbF9tb2RlPTB4JTA4eCBpcyBub3Qgc3VwcG9ydGVkLgBJbnZhbGlkIG1hdGNoIG1vZGUgZmxhZyBpbiByZWd1bGFyIGV4cHJlc3Npb24uACclcycgcHJpdmlsZWdlIGZvciBkYXRhYmFzZSAnJXMnIGV4aXN0cyBib3RoIGFzIHBhcnRpYWwgcmV2b2tlIGFuZCBteXNxbC5kYiBzaW11bHRhbmVvdXNseS4gSXQgY291bGQgbWVhbiB0aGF0IHRoZSAnbXlzcWwnIHNjaGVtYSBpcyBjb3JydXB0ZWQuAFRoZXJlJ3Mgbm8gdW5pdCBvZiBtZWFzdXJlIG5hbWVkICclcycuAEludmFsaWQgSlNPTiB2YWx1ZSBmb3IgQ0FTVCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJy4AT3V0IG9mIHJhbmdlIEpTT04gdmFsdWUgZm9yIENBU1QgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycuAEV4Y2VlZGVkIG1heCBudW1iZXIgb2YgdmFsdWVzIHBlciByZWNvcmQgZm9yIG11bHRpLXZhbHVlZCBpbmRleCAnJS0uNjRzJyBieSAldSB2YWx1ZShzKS4ARXhjZWVkZWQgbWF4IHRvdGFsIGxlbmd0aCBvZiB2YWx1ZXMgcGVyIHJlY29yZCBmb3IgbXVsdGktdmFsdWVkIGluZGV4ICclLS42NHMnIGJ5ICV1IGJ5dGVzLgBEYXRhIHRvbyBsb25nIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnLgBDYW5ub3Qgc3RvcmUgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGluIGEgc2NhbGFyIGtleSBwYXJ0IG9mIHRoZSBpbmRleCAnJS4xOTJzJy4AQ2Fubm90IHVzZSBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnIGR1ZSB0byB0eXBlIG9yIGNvbGxhdGlvbiBjb252ZXJzaW9uLgBUaGUgZnVuY3Rpb24gJyVzJyBmYWlsZWQuICVzAENhbm5vdCB1cGRhdGUgR1RJRF9QVVJHRUQgd2l0aCB0aGUgR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIHJ1bm5pbmcAR3JvdXBpbmcgb24gdGVtcG9yYWwgaXMgbm9uLWRldGVybWluaXN0aWMgZm9yIHRpbWV6b25lcyBoYXZpbmcgRFNULiBQbGVhc2UgY29uc2lkZXIgc3dpdGNoaW5nIHRvIFVUQyBmb3IgdGhpcyBxdWVyeS4ATG9uZyBkYXRhYmFzZSBuYW1lIGFuZCBpZGVudGlmaWVyIGZvciBvYmplY3QgcmVzdWx0ZWQgaW4gYSBwYXRoIGxlbmd0aCB0b28gbG9uZyBmb3IgdGFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIHRoZSBwYXRoIGxpbWl0IGZvciB5b3VyIE9TLgBSZXF1ZXN0IGlnbm9yZWQgZm9yICclLjY0cydAJyUuNjRzJy4gUm9sZSBuZWVkZWQgdG8gcGVyZm9ybSBvcGVyYXRpb246ICclLjMycycAJ2F1ZGl0X2xvZycgcGFzc3dvcmQgaGFzIGJlZW4gY29waWVkIGludG8gJyUuMzJzJyBhbmQgd2lsbCBiZSByZW1vdmVkIHdpdGggZmlyc3QgcHVyZ2VkIHBhc3N3b3JkLgBTdGFydGVkIGF1dG8tcmVqb2luIHByb2NlZHVyZSBhdHRlbXB0ICVsdSBvZiAlbHUAQSBwbHVnaW4gd2FzIGxvYWRlZCBvciB1bmxvYWRlZCBkdXJpbmcgYSBxdWVyeSwgYSBzeXN0ZW0gdmFyaWFibGUgdGFibGUgd2FzIGNoYW5nZWQuAEEgcGx1Z2luIHdhcyBsb2FkZWQgb3IgdW5sb2FkZWQgZHVyaW5nIGEgcXVlcnksIGEgZ2xvYmFsIHN0YXR1cyB2YXJpYWJsZSB3YXMgY2hhbmdlZC4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHRvIHN0YXJ0IGl0cyBtZXNzYWdlIHNlcnZpY2UuAEludmFsaWQgU09VUkNFX0NPTVBSRVNTSU9OX0FMR09SSVRITVMgJyUuMTkycycgZm9yIGNoYW5uZWwgJyUuMTkycycuAEludmFsaWQgU09VUkNFX1pTVERfQ09NUFJFU1NJT05fTEVWRUwgJXUgZm9yIGNoYW5uZWwgJyUuMTkycycuAEludmFsaWQgY29tcHJlc3Npb24gYWxnb3JpdGhtICclLjE5MnMnLgBJbnZhbGlkIHpzdGQgY29tcHJlc3Npb24gbGV2ZWwgZm9yIGFsZ29yaXRobSAnJS4xOTJzJy4AU3BlY2lmaWVkIGNvbXByZXNzaW9uIGFsZ29yaXRobSBsaXN0ICclLjE5MnMnIGV4Y2VlZHMgdG90YWwgY291bnQgb2YgMyBmb3IgY2hhbm5lbCAnJS4xOTJzJy4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYGBAYCUuMjU1c2AsIGJ1dCBhbm9ueW1vdXMgdXNlcnMgYXJlIGRpc2FsbG93ZWQgZm9yIFBSSVZJTEVHRV9DSEVDS1NfVVNFUi4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCwgYnV0IHRoaXMgaXMgbm90IGFuIGV4aXN0aW5nIHVzZXIuAEludmFsaWQsIGNvcnJ1cHRlZCBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgd2FzIGZvdW5kIGluIHRoZSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFVzZSBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiB0byBjb3JyZWN0IHRoZSBjb25maWd1cmF0aW9uLgBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIHNldCB0byBgJS42NHNgQGAlLjI1NXNgLCBidXQgdGhpcyB1c2VyIGRvZXMgbm90IGhhdmUgUkVQTElDQVRJT05fQVBQTElFUiBwcml2aWxlZ2UuAER5bmFtaWMgcHJpdmlsZWdlICclcycgaXMgbm90IHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2VydmVyLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIGtleSBpcyBpbnZhbGlkLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIGtleSB0eXBlIGlzIGludmFsaWQuAEZ1bmN0aW9uICclcycgZmFpbGVkIGJlY2F1c2Uga2V5IGxlbmd0aCBpcyB0b28gbG9uZy4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSBrZXkgdHlwZSBpcyB0b28gbG9uZy4AJXMuAEludmFsaWQgY2hhcmFjdGVyIHNldCAnJXMnIHdhcyBzcGVjaWZpZWQuIEl0IG11c3QgYmUgZWl0aGVyIGNoYXJhY3RlciBzZXQgbmFtZSBvciBjb2xsYXRpb24gbmFtZSBhcyBzdXBwb3J0ZWQgYnkgc2VydmVyLgBJbnZhbGlkIGNoYXJhY3RlciBzZXQgJyVzJyB3YXMgc3BlY2lmaWVkLiBJdCBtdXN0IGJlIGEgY2hhcmFjdGVyIHNldCBuYW1lIGFzIHN1cHBvcnRlZCBieSBzZXJ2ZXIuAEludmFsaWQgY29sbGF0aW9uICclcycgd2FzIHNwZWNpZmllZC4gSXQgbXVzdCBiZSBhIGNvbGxhdGlvbiBuYW1lIGFzIHN1cHBvcnRlZCBieSBzZXJ2ZXIuAEludmFsaWQgZXh0ZW5zaW9uIGFyZ3VtZW50IHR5cGUgJyVzJyB3YXMgc3BlY2lmaWVkLiBSZWZlciB0aGUgTXlTUUwgbWFudWFsIGZvciB0aGUgdmFsaWQgVURGIGV4dGVuc2lvbiBhcmd1bWVudHMgdHlwZS4AVGFibGUgaGFzIG11bHRpcGxlIGNvbnN0cmFpbnRzIHdpdGggdGhlIG5hbWUgJyUtLjE5MnMnLiBQbGVhc2UgdXNlIGNvbnN0cmFpbnQgc3BlY2lmaWMgJyVzJyBjbGF1c2UuAENvbnN0cmFpbnQgJyUtLjE5MnMnIGRvZXMgbm90IGV4aXN0LgBBbHRlcmluZyBjb25zdHJhaW50IGVuZm9yY2VtZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoZSBjb25zdHJhaW50ICclLS4xOTJzJy4gRW5mb3JjZW1lbnQgc3RhdGUgYWx0ZXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhlIFBSSU1BUlksIFVOSVFVRSBhbmQgRk9SRUlHTiBLRVkgdHlwZSBjb25zdHJhaW50cy4ARWFjaCByb3cgb2YgYSBWQUxVRVMgY2xhdXNlIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgY29sdW1uLCB1bmxlc3Mgd2hlbiB1c2VkIGFzIHNvdXJjZSBpbiBhbiBJTlNFUlQgc3RhdGVtZW50LgBBIFZBTFVFUyBjbGF1c2UgY2Fubm90IHVzZSBERUZBVUxUIHZhbHVlcywgdW5sZXNzIHVzZWQgYXMgYSBzb3VyY2UgaW4gYW4gSU5TRVJUIHN0YXRlbWVudC4AVGhlIHF1ZXJ5IGRvZXMgbm90IGNvbXBseSB3aXRoIHZhcmlhYmxlIHJlcXVpcmVfcm93X2Zvcm1hdCByZXN0cmljdGlvbnMuAFRoZSByZXF1ZXN0ZWQgdmFsdWUgJXMgaXMgaW52YWxpZCBmb3IgUkVRVUlSRV9ST1dfRk9STUFULCBtdXN0IGJlIGVpdGhlciAwIG9yIDEuAEZhaWxlZCB0byBhY3F1aXJlIGxvY2sgb24gdXNlciBtYW5hZ2VtZW50IHNlcnZpY2UsIHVuYWJsZSB0byBkZXRlcm1pbmUgaWYgcm9sZSBgJXNgQGAlc2AgaXMgbWFuZGF0b3J5AEZhaWxlZCB0byBhY3F1aXJlIGxvY2sgb24gdXNlciBtYW5hZ2VtZW50IHNlcnZpY2UsIHVuYWJsZSB0byBmZXRjaCBtYW5kYXRvcnkgcm9sZSBsaXN0AExvYWRpbmcgbG9jYWwgZGF0YSBpcyBkaXNhYmxlZDsgdGhpcyBtdXN0IGJlIGVuYWJsZWQgb24gYm90aCB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgc2lkZXMARmFpbGVkIHRvIGltcG9ydCAlcyBiZWNhdXNlIHRoZSBDRkcgZmlsZSB2ZXJzaW9uICgldSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCB2ZXJzaW9uICgldSkAT3V0IG9mIG1lbW9yeQBDaGFyYWN0ZXIgc2V0IGNhbiBiZSBzZXQgb25seSBmb3IgdGhlIFVERiBhcmd1bWVudCB0eXBlIFNUUklORy4AQ2hhcmFjdGVyIHNldCBjYW4gYmUgc2V0IG9ubHkgZm9yIHRoZSBVREYgUkVUVVJOIHR5cGUgU1RSSU5HLgBNdWx0aXBsZSBJTlRPIGNsYXVzZXMgaW4gb25lIHF1ZXJ5IGJsb2NrLgBNaXNwbGFjZWQgSU5UTyBjbGF1c2UsIElOVE8gaXMgbm90IGFsbG93ZWQgaW5zaWRlIHN1YnF1ZXJpZXMsIGFuZCBtdXN0IGJlIHBsYWNlZCBhdCBlbmQgb2YgVU5JT04gY2xhdXNlcy4AQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJy4gQWNjb3VudCBpcyBibG9ja2VkIGZvciAlcyBkYXkocykgKCVzIGRheShzKSByZW1haW5pbmcpIGR1ZSB0byAldSBjb25zZWN1dGl2ZSBmYWlsZWQgbG9naW5zLgBVTlNJR05FRCBmb3IgdGhlIFlFQVIgZGF0YSB0eXBlIGlzIGRlcHJlY2F0ZWQgYW5kIHN1cHBvcnQgZm9yIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBDbG9uZSBuZWVkcyBtYXhfYWxsb3dlZF9wYWNrZXQgdmFsdWUgdG8gYmUgJXUgb3IgbW9yZS4gQ3VycmVudCB2YWx1ZSBpcyAldQBGYWlsZWQgdG8gJXMgc2RpIGZvciAlcy4lcyBpbiAlcyBkdWUgdG8gbWlzc2luZyByZWNvcmQuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIHVzZXMgY29sdW1uICclLS4xOTJzJywgaGVuY2UgY29sdW1uIGNhbm5vdCBiZSBkcm9wcGVkIG9yIHJlbmFtZWQuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgcnVubmluZzsgcnVuIFNUT1AgR1JPVVBfUkVQTElDQVRJT04gZmlyc3QAU3BlY2lmeWluZyBhbiBPTiBFTVBUWSBjbGF1c2UgYWZ0ZXIgdGhlIE9OIEVSUk9SIGNsYXVzZSBpbiBhIEpTT05fVEFCTEUgY29sdW1uIGRlZmluaXRpb24gaXMgZGVwcmVjYXRlZCBzeW50YXggYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBTcGVjaWZ5IE9OIEVNUFRZIGJlZm9yZSBPTiBFUlJPUiBpbnN0ZWFkLgBUaGUgSU5UTyBjbGF1c2UgaXMgZGVwcmVjYXRlZCBpbnNpZGUgcXVlcnkgYmxvY2tzIG9mIHF1ZXJ5IGV4cHJlc3Npb25zIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIG1vdmUgdGhlIElOVE8gY2xhdXNlIHRvIHRoZSBlbmQgb2Ygc3RhdGVtZW50IGluc3RlYWQuAFRoZSBWQUxVRVMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIEl0IGFsd2F5cyByZXR1cm5zIE5VTEwgaW4gdGhpcyBjb250ZXh0LiBJZiB5b3UgbWVhbnQgdG8gYWNjZXNzIGEgdmFsdWUgZnJvbSB0aGUgVkFMVUVTIGNsYXVzZSBvZiB0aGUgSU5TRVJUIHN0YXRlbWVudCwgY29uc2lkZXIgdXNpbmcgYW4gYWxpYXMgKElOU0VSVCBJTlRPIC4uLiBWQUxVRVMgKC4uLikgQVMgYWxpYXMpIGFuZCByZWZlcmVuY2UgYWxpYXMuY29sIGluc3RlYWQgb2YgVkFMVUVTKGNvbCkgaW4gdGhlIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIGNsYXVzZS4AU1FMX0NBTENfRk9VTkRfUk9XUyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgdHdvIHNlcGFyYXRlIHF1ZXJpZXMgaW5zdGVhZC4ARk9VTkRfUk9XUygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBDT1VOVCgqKSBpbnN0ZWFkLgBObyB2YWx1ZSB3YXMgZm91bmQgYnkgJyUuMTkycycgb24gdGhlIHNwZWNpZmllZCBwYXRoLgBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCBieSAnJS4xOTJzJyBvbiB0aGUgc3BlY2lmaWVkIHBhdGguAEhvc3RuYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAlZCBjaGFyYWN0ZXJzLgBDb2x1bW4gJyUuNjRzLiUuNjRzLiUuNjRzJyBoYXZpbmcgcHJlZml4IGtleSBwYXJ0ICclLjY0cygldSknIGlzIGlnbm9yZWQgYnkgdGhlIHBhcnRpdGlvbmluZyBmdW5jdGlvbi4gVXNlIG9mIHByZWZpeGVkIGNvbHVtbnMgaW4gdGhlIFBBUlRJVElPTiBCWSBLRVkoKSBjbGF1c2UgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgdXNlcm5hbWUgcHJvdmlkZWQgZm9yIHJlY292ZXJ5IGNoYW5uZWwgaXMgZW1wdHkuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgVVNFUiBvcHRpb24gd2FzIG5vdCBwcm92aWRlZCB3aXRoIFBBU1NXT1JEIGZvciByZWNvdmVyeSBjaGFubmVsLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIHBhc3N3b3JkIHByb3ZpZGVkIGZvciB0aGUgcmVjb3ZlcnkgY2hhbm5lbCBleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiAzMiBjaGFyYWN0ZXJzLgBTdGF0ZW1lbnQgcmVxdWlyZXMgYSB0cmFuc2Zvcm0gb2YgYSBzdWJxdWVyeSB0byBhIG5vbi1TRVQgb3BlcmF0aW9uIChsaWtlIElOMkVYSVNUUywgb3Igc3VicXVlcnktdG8tTEFURVJBTC1kZXJpdmVkLXRhYmxlKS4gVGhpcyBpcyBub3QgYWxsb3dlZCB3aXRoIG9wdGltaXplciBzd2l0Y2ggJ3N1YnF1ZXJ5X3RvX2Rlcml2ZWQnIG9uLgBJbnZhbGlkIGlucHV0IHZhbHVlIGZvciByZWNvdmVyeSBzb2NrZXQgZW5kcG9pbnRzICclcycuIFBsZWFzZSwgcHJvdmlkZSBhIHZhbGlkLCBjb21tYSBzZXBhcmF0ZWQsIGxpc3Qgb2YgZW5kcG9pbnRzIChJUDpwb3J0KS4AVGhlIHNlcnZlciBpcyBub3QgbGlzdGVuaW5nIG9uIGVuZHBvaW50ICclcycuIE9ubHkgZW5kcG9pbnRzIHRoYXQgdGhlIHNlcnZlciBpcyBsaXN0ZW5pbmcgb24gYXJlIHZhbGlkIHJlY292ZXJ5IGVuZHBvaW50cy4AVmFyaWFibGUgJyUtLjY0cycgY2Fubm90IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyUtLjIwMHMnLiAlLS4yMDBzAE9ubHkgQklOTE9HIElOU0VSVCwgQ09NTUlUIGFuZCBST0xMQkFDSyBzdGF0ZW1lbnRzIGFyZSBhbGxvd2VkIGFmdGVyIENSRUFURSBUQUJMRSB3aXRoIFNUQVJUIFRSQU5TQUNUSU9OIHN0YXRlbWVudC4ARm9yZWlnbiBrZXkgY3JlYXRpb24gaXMgbm90IGFsbG93ZWQgd2l0aCBDUkVBVEUgVEFCTEUgYXMgU0VMRUNUIGFuZCBDUkVBVEUgVEFCTEUgd2l0aCBTVEFSVCBUUkFOU0FDVElPTiBzdGF0ZW1lbnQuAFNUQVJUIFRSQU5TQUNUSU9OIGNsYXVzZSBjYW5ub3QgYmUgdXNlZCAlLjEyOHMASW52YWxpZCBqc29uIGF0dHJpYnV0ZSwgZXJyb3I6ICIlcyIgYXQgcG9zICV1OiAnJXMnAFN0b3JhZ2UgZW5naW5lICclcycgZG9lcyBub3Qgc3VwcG9ydCBFTkdJTkVfQVRUUklCVVRFLgBUaGUgdXNlciBhdHRyaWJ1dGUgbXVzdCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0AENhbm5vdCBwZXJmb3JtIG9wZXJhdGlvbiBhcyBJbm5vREIgcmVkbyBsb2dnaW5nIGlzIGRpc2FibGVkLiBQbGVhc2UgcmV0cnkgYWZ0ZXIgZW5hYmxpbmcgcmVkbyBsb2cgd2l0aCBBTFRFUiBJTlNUQU5DRQBDYW5ub3QgcGVyZm9ybSBvcGVyYXRpb24gYXMgSW5ub0RCIGlzIGFyY2hpdmluZyByZWRvIGxvZy4gUGxlYXNlIHJldHJ5IGFmdGVyIHN0b3BwaW5nIHJlZG8gYXJjaGl2ZSBieSBpbnZva2luZyBpbm5vZGJfcmVkb19sb2dfYXJjaGl2ZV9zdG9wKCkATm90IGVub3VnaCByZXNvdXJjZXMgdG8gY29tcGxldGUgbG9jayByZXF1ZXN0LgBFdmFsdWF0aW5nIGEgSlNPTiB2YWx1ZSBpbiBTUUwgYm9vbGVhbiBjb250ZXh0IGRvZXMgYW4gaW1wbGljaXQgY29tcGFyaXNvbiBhZ2FpbnN0IEpTT04gaW50ZWdlciAwOyBpZiB0aGlzIGlzIG5vdCB3aGF0IHlvdSB3YW50LCBjb25zaWRlciBjb252ZXJ0aW5nIEpTT04gdG8gYSBTUUwgbnVtZXJpYyB0eXBlIHdpdGggSlNPTl9WQUxVRSBSRVRVUk5JTkcAVGhlIGZ1bmN0aW9uICVzIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNoYXJhY3RlciBzZXQgJyVzJy4AQ29udmVyc2lvbiBmcm9tIGNvbGxhdGlvbiAlcyBpbnRvICVzIGltcG9zc2libGUgZm9yICVzAFNjaGVtYSAnJXMnIGlzIGluIHJlYWQgb25seSBtb2RlLgBGYWlsZWQgdG8gZW5hYmxlIEFzeW5jaHJvbm91cyBSZXBsaWNhdGlvbiBDb25uZWN0aW9uIEZhaWxvdmVyIGZlYXR1cmUuIFRoZSBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAxIGNhbiBvbmx5IGJlIHNldCB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLgBGYWlsZWQgdG8gZW5hYmxlIEFzeW5jaHJvbm91cyBSZXBsaWNhdGlvbiBDb25uZWN0aW9uIEZhaWxvdmVyIGZlYXR1cmUuIFRoZSBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAxIGNhbiBvbmx5IGJlIHNldCB3aGVuIFNPVVJDRV9BVVRPX1BPU0lUSU9OIG9wdGlvbiBvZiBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIGlzIGVuYWJsZWQuAFRoZSBAQEdMT0JBTC5HVElEX01PREUgPSAlLS42NHMgY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgQXN5bmNocm9ub3VzIFJlcGxpY2F0aW9uIENvbm5lY3Rpb24gRmFpbG92ZXIgaXMgZW5hYmxlZCBpLmUuIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDEuAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0FVVE9fUE9TSVRJT04gPSAwIGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIEFzeW5jaHJvbm91cyBSZXBsaWNhdGlvbiBDb25uZWN0aW9uIEZhaWxvdmVyIGlzIGVuYWJsZWQgaS5lLiBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAxLgBJbnZhbGlkIHVzZSBvZiBwYXJhbWV0ZXJzIGluICclcycAQ2hhcmFjdGVyIHNldCAnJXMnIGNhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggJyVzJyBpbiBjYWxsIHRvICVzLgBDaGFuZ2luZyAlcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIEZhbGxpbmcgYmFjayB0byB0aGUgZGVmYXVsdC4ASW52YWxpZCB0aW1lIHpvbmUgaW50ZXJ2YWw6ICclcycAQ2Fubm90IGNhc3QgdmFsdWUgdG8gJXMuAFRoZSBoeXBlcmdyYXBoIG9wdGltaXplciBkb2VzIG5vdCB5ZXQgc3VwcG9ydCAnJXMnAFRoZSBoeXBlcmdyYXBoIG9wdGltaXplciBpcyBoaWdobHkgZXhwZXJpbWVudGFsIGFuZCBpcyBtZWFudCBmb3IgdGVzdGluZyBvbmx5LiBEbyBub3QgZW5hYmxlIGl0IHVubGVzcyB5b3UgYXJlIGEgTXlTUUwgZGV2ZWxvcGVyLgBOb25lIG9mIHRoZSBsb2ctc2lua3Mgc2VsZWN0ZWQgd2l0aCAtLWxvZy1lcnJvci1zZXJ2aWNlcz0uLi4gcHJvdmlkZXMgYSBsb2ctcGFyc2VyLiBUaGUgc2VydmVyIHdpbGwgbm90IGJlIGFibGUgdG8gbWFrZSB0aGUgcHJldmlvdXMgcnVucycgZXJyb3ItbG9ncyBhdmFpbGFibGUgaW4gcGVyZm9ybWFuY2Vfc2NoZW1hLmVycm9yX2xvZy4ATm9uZSBvZiB0aGUgbG9nLXNpbmtzIHNlbGVjdGVkIGluIEBAZ2xvYmFsLmxvZ19lcnJvcl9zZXJ2aWNlcyBzdXBwb3J0cyB3cml0aW5nIHRvIHRoZSBwZXJmb3JtYW5jZSBzY2hlbWEuIFRoZSBzZXJ2ZXIgd2lsbCBub3QgYmUgYWJsZSB0byBtYWtlIHRoZSBjdXJyZW50IHJ1bnMnIGVycm9yIGV2ZW50cyBhdmFpbGFibGUgaW4gcGVyZm9ybWFuY2Vfc2NoZW1hLmVycm9yX2xvZy4gVG8gY2hhbmdlIHRoaXMsIGFkZCBhIGxvZy1zaW5rIHRoYXQgc3VwcG9ydHMgdGhlIHBlcmZvcm1hbmNlIHNjaGVtYSB0byBAQGdsb2JhbC5sb2dfZXJyb3Jfc2VydmljZXMuAEBAZ2xvYmFsLmxvZ19lcnJvcl9zZXJ2aWNlcyBsaXN0cyBtb3JlIHRoYW4gb25lIGxvZy1maWx0ZXIgc2VydmljZS4gVGhpcyBpcyBkaXNjb3VyYWdlZCBhcyBpdCB3aWxsIG1ha2UgaXQgaGFyZCB0byB1bmRlcnN0YW5kIHdoaWNoIHJ1bGUgaW4gd2hpY2ggZmlsdGVyIGFmZmVjdGVkIGEgbG9nLWV2ZW50LgBDb3VsZCBub3Qgb3BlbiBmaWxlICclcycgZm9yIGVycm9yIGxvZ2dpbmclcyVzAFVzZXIgJS4yNTZzIGlzIHJlZmVyZW5jZWQgYXMgYSBkZWZpbmVyIGFjY291bnQgaW4gJXMuAE9wZXJhdGlvbiAlcyBmYWlsZWQgZm9yICUuMjU2cyBhcyBpdCBpcyByZWZlcmVuY2VkIGFzIGEgZGVmaW5lciBhY2NvdW50IGluICVzLgBEZWNpbWFsIG51bWJlciBpbiByZWd1bGFyIGV4cHJlc3Npb24gaXMgdG9vIGxhcmdlLgBUaGUgdmFyaWFibGUgIiVzIiBoYXMgYSBub24taW50ZWdlciBiYXNlZCB0eXBlAFJlYWRzIHdpdGggc2VyaWFsaXphYmxlIGlzb2xhdGlvbi9TRUxFQ1QgRk9SIFNIQVJFIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBBQ0wgdGFibGVzLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVwZGF0ZXMgYSB0YWJsZSBkZXBlbmRpbmcgb24gQUNMIHRhYmxlIHJlYWQgb3BlcmF0aW9uLiBBcyBzdG9yYWdlIGVuZ2luZSByb3cgbG9ja3MgYXJlIHNraXBwZWQgZm9yIEFDTCB0YWJsZSwgaXQgbWF5IG5vdCBoYXZlIHNhbWUgZWZmZWN0IG9uIHNvdXJjZSBhbmQgcmVwbGljYS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgTW9uaXRvciB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIE1vbml0b3IgdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAFRoZSBSZXBsaWNhIE1vbml0b3IgdGhyZWFkIGZhaWxlZCB0byBzdGFydC4AUmVwbGljYXRpb24gY2Fubm90IHN0YXJ0JS4xOTJzIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4gYXMgdGhpcyBzZXJ2ZXIgdXNlcyBAQEdMT0JBTC5HVElEX01PREUgPD4gT04uAFRoZSBvcHRpb25zIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+IGFuZCBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIuAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4gY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgQEBHTE9CQUwuR1RJRF9NT0RFIDw+IE9OLgBUaGUgdmFsdWUgb2Ygc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyIHdpbGwgb25seSB0YWtlIGVmZmVjdCBmb3IgY2hhbm5lbHMgcnVubmluZyB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TIDw+IE9GRi4AVXNpbmcgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgY3JlYXRlcyBsaW1pdGF0aW9ucyBvbiB0aGUgcmVwbGljYXRpb24gdG9wb2xvZ3kgLSB5b3UgY2Fubm90IGZhaWwgb3ZlciBiZXR3ZWVuIGRvd25zdHJlYW0gYW5kIHVwc3RyZWFtIHNlcnZlcnMuIE9ubHkgdXNlIHRoaXMgb3B0aW9uIGlmIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBlbmFibGUgR1RJRHMgb24gdGhlIHNvdXJjZSwgZm9yIGluc3RhbmNlLCBiZWNhdXNlIG9mIGxhY2sgb2YgcGVybWlzc2lvbnMuIElmIHBvc3NpYmxlLCB1c2UgdGhlIHByb2NlZHVyZSBmb3IgZW5hYmxpbmcgR1RJRCB0cmFuc2FjdGlvbnMgb25saW5lIGluc3RlYWQsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4AV0FJVF9VTlRJTF9TUUxfVEhSRUFEX0FGVEVSX0dUSURTIGNhbm5vdCBiZSB1c2VkIG9uIGEgY2hhbm5lbCBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4AVGhlIFNRTF9BRlRFUl9HVElEUyBvciBTUUxfQkVGT1JFX0dUSURTIGNsYXVzZXMgZm9yIFNUQVJUIFJFUExJQ0EgY2Fubm90IGJlIHVzZWQgd2hlbiB0aGUgcmVwbGljYXRpb24gY2hhbm5lbCBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4uAFJlcGxpY2F0aW9uICclLjE5MnMnIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IDxVVUlEPiB3aGVyZSB0aGUgVVVJRCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZQBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gPFVVSUQ+IGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIHRoZSBVVUlEIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lLgBUaGUgZ3JvdXBfcmVwbGljYXRpb25fcmVjb3ZlcnkgY2hhbm5lbCBpcyBzdGlsbCBydW5uaW5nLCBtb3N0IGxpa2VseSBpdCBpcyB3YWl0aW5nIGZvciBhIGRhdGFiYXNlL3RhYmxlIGxvY2ssIHdoaWNoIGlzIHByZXZlbnRpbmcgdGhlIGNoYW5uZWwgZnJvbSBzdG9wcGluZy4gUGxlYXNlIGNoZWNrIGRhdGFiYXNlL3RhYmxlIGxvY2tzLCBpbmNsdWRpbmcgdGhlIG9uZXMgY3JlYXRlZCBieSBiYWNrdXAgdG9vbHMuAEFVVE9FWFRFTkRfU0laRSBzaG91bGQgYmUgYSBtdWx0aXBsZSBvZiAldU0ASW5ub0RCOiAiJXMiIG5vdCBhbGxvd2VkIHdpdGggZ2VuZXJhbCB0YWJsZXNwYWNlcwBBVVRPRVhURU5EX1NJWkUgdmFsdWUgc2hvdWxkIGJlIGJldHdlZW4gJXVNIGFuZCAldU0AQVVUT0VYVEVORF9TSVpFIGNsYXVzZSBpcyBub3QgdmFsaWQgZm9yICVzIHRhYmxlc3BhY2UuAFVzZXIgYWNjb3VudCAlcyBpcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGdyYW50ZWQgdG8gdGhlIHJvbGUgJXMuIFRoZSBHUkFOVCB3b3VsZCBjcmVhdGUgYSBsb29wAEEgdGFibGUgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSB2aXNpYmxlIGNvbHVtbi4AQ29tcHJlc3Npb24gZmFpbGVkIHdpdGggdGhlIGZvbGxvd2luZyBlcnJvciA6ICVzAFRoZSBwYXJhbWV0ZXIgbmV0d29ya19uYW1lc3BhY2UgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuIFBsZWFzZSB1c2UgdGhlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgY29tbWFuZCB0byBzZXQgY2hhbm5lbCBuZXR3b3JrX25hbWVzcGFjZSBwYXJhbWV0ZXIuAFRoZSBjbGllbnQgd2FzIGRpc2Nvbm5lY3RlZCBieSB0aGUgc2VydmVyIGJlY2F1c2Ugb2YgaW5hY3Rpdml0eS4gU2VlIHdhaXRfdGltZW91dCBhbmQgaW50ZXJhY3RpdmVfdGltZW91dCBmb3IgY29uZmlndXJpbmcgdGhpcyBiZWhhdmlvci4ASW52YWxpZCBjYXN0IGZyb20gJXMgdG8gJXMuAEludmFsaWQgY2FzdCBmcm9tICVzIHRvICVzLiBBIHBvbHlnb24gcmluZyBpcyBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uLgBBcmd1bWVudHMgdG8gZnVuY3Rpb24gJXMgY29udGFpbnMgZ2VvbWV0cmllcyB3aXRoIGRpZmZlcmVudCBTUklEczogJXUgYW5kICV1LiBBbGwgZ2VvbWV0cmllcyBtdXN0IGhhdmUgdGhlIHNhbWUgU1JJRC4AS2V5cmluZyByZWxvYWQgZmFpbGVkLiBQbGVhc2UgY2hlY2sgZXJyb3IgbG9nIGZvciBtb3JlIGRldGFpbHMuAFRhYmxlc3BhY2UgJyUuMTkycycgaXMgaW52YWxpZCBmb3IgU0RJIG9wZXJhdGlvbnMuAFZhbHVlIHRvbyBsb25nIHNldHRpbmcgU09VUkNFX0NPTVBSRVNTSU9OX0FMR09SSVRITVMgb3B0aW9uIHRvIGEgJWQgY2hhcnMgbG9uZyBzdHJpbmcgZm9yIGNoYW5uZWwgJyUuMTkycycuAEEgZGVwcmVjYXRlZCBUTFMgdmVyc2lvbiAlcyBpcyBlbmFibGVkIGZvciBjaGFubmVsICVzLiBQbGVhc2UgdXNlIFRMU3YxLjIgb3IgaGlnaGVyLgBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gPFVVSUQ+IGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIHRoZSBVVUlEIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkLgBSZXBsaWNhdGlvbiAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSA8VVVJRD4gd2hlcmUgdGhlIFVVSUQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQAVW5hYmxlIHRvIHJldHJpZXZlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgdmFyaWFibGUgZHVyaW5nIHNlcnZlciBjaGVja3Mgb24gcmVwbGljYXRpb24gb3BlcmF0aW9ucy4AQm90aCBhdWRpdF9sb2dfbWF4X3NpemUgYW5kIGF1ZGl0X2xvZ19wcnVuZV9zZWNvbmRzIGFyZSBzZXQgdG8gbm9uLXplcm8uIGF1ZGl0X2xvZ19tYXhfc2l6ZSB0YWtlcyBwcmVjZWRlbmNlIGFuZCBhdWRpdF9sb2dfcHJ1bmVfc2Vjb25kcyBpcyBpZ25vcmVkAGF1ZGl0X2xvZ19yb3RhdGVfb25fc2l6ZSBpcyBub3QgZ3JhbnVsYXIgZW5vdWdoIGZvciB0aGUgdmFsdWUgb2YgYXVkaXRfbG9nX21heF9zaXplIHN1cHBsaWVkLiBTaG91bGQgYmUgYXQgbGVhc3QgJWQgdGltZXMgc21hbGxlci4AQ3JlYXRlL0FsdGVyIHVzZXIgaGFzIGZhaWxlZCwgQ29uZmlndXJlZCB1c2VyIHJlYWxtIGFzIGF1dGhlbnRpY2F0aW9uIHN0cmluZyBpcyBlbXB0eSwgUGxlYXNlIG1ha2Ugc3VyZSB0byBjb25maWd1cmUgYXV0aGVudGljYXRpb24gc3RyaW5nIGFzIHVzZXIgcmVhbG0uAENhbm5vdCBpbnN0YWxsIHRoZSAlLjE5MnMgcGx1Z2luIHdoZW4gdGhlICUuMTkycyBwbHVnaW4gaXMgaW5zdGFsbGVkLgAlZCBlcnJvciBsb2dnaW5nIGNvbXBvbmVudChzKSBmYWlsZWQgdG8gZmx1c2guIEZvciBmaWxlLWJhc2VkIGxvZ3MgdGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIHBhdGggb3IgcGVybWlzc2lvbnMgb2YgdGhlIGxvZy1maWxlIGhhdmUgY2hhbmdlZC4gRmFpbHVyZSB0byBmbHVzaCBmaWxlZC1iYXNlZCBsb2dzIG1heSBhZmZlY3QgbG9nLXJvdGF0aW9uLgBUaGUgdW50aWwgY2xhdXNlIFNRTF9BRlRFUl9NVFNfR0FQUyBpcyBiZWluZyB1c2VkIGZvciBjaGFubmVsICclLjE5MnMnIHdoZW4gR1RJRF9NT0RFID0gT04gYW5kIFNPVVJDRV9BVVRPX1BPU0lUSU9OPTEgbWVhbmluZyB0aGUgc2VydmVyIGRpZCBub3QgY29tcHV0ZSBpbnRlcm5hbGx5IHdoYXQgZ2FwcyBtYXkgZXhpc3QgaW4gdGhlIHJlbGF5IGxvZyB0cmFuc2FjdGlvbiBleGVjdXRpb24uIFRvIGNsb3NlIGFueSBleGVjdXRpb24gZ2FwcyB1c2UgZWl0aGVyIHRoZSBTUUxfQkVGT1JFX0dUSURTIG9yIFNRTF9BRlRFUl9HVElEUyB1bnRpbCBjbGF1c2UuAEludmFsaWQgdGFyZ2V0IGZvciBhc3NpZ25tZW50IGluIElOU0VSVCBvciBVUERBVEUgc3RhdGVtZW50ICclLjE5MnMnLgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIG9uIGEgR3JvdXAgUmVwbGljYXRpb24gc2Vjb25kYXJ5IG1lbWJlciwgaXQgbXVzdCBiZSBkb25lIG9uIHRoZSBncm91cCBwcmltYXJ5LgBVbmFibGUgdG8gcHJvcGFnYXRlIHRoZSBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSIHZhbHVlIGZvciBjaGFubmVsICclcycgdG8gZ3JvdXAgcmVwbGljYXRpb24gbWVtYmVycy4gUGxlYXNlIHJldHJ5IHRoZSBvcGVyYXRpb24uAGF1ZGl0X2xvZ19mb3JtYXRfdW5peF90aW1lc3RhbXAgaXMgYXBwbGljYWJsZSBvbmx5IHdoZW4gYXVkaXRfbG9nX2Zvcm1hdCA9IEpTT04uAEludmFsaWQgcGx1Z2luICIlcyIgc3BlY2lmaWVkIGFzICVkIGZhY3RvciBkdXJpbmcgIiVzIi4ASURFTlRJRklFRCBCWSBjbGF1c2UgZHVyaW5nICIlcyIgbm90IHN1cHBvcnRlZCBmb3IgcGx1Z2luICIlcyIuAFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBsdWdpbiAiJXMiLgBBdXRoZW50aWNhdGlvbiBwbHVnaW4gcmVxdWlyZXMgcmVnaXN0cmF0aW9uLiBQbGVhc2UgcmVmZXIgQUxURVIgVVNFUiBzeW50YXggb3Igc2V0IC0tcmVnaXN0ZXItZmFjdG9yIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZG8gcmVnaXN0cmF0aW9uLgAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kIGV4aXN0cy4gUGxlYXNlIGRvIEFMVEVSIFVTRVIuLi4gRFJPUCAlZCBmYWN0b3IgYmVmb3JlIGRvaW5nIHRoaXMgb3BlcmF0aW9uIE9SIGRvIEFMVEVSIFVTRVIuLi4gTU9ESUZZICVkIGZhY3Rvci4uLiB0byBtb2RpZnkgZXhpc3RpbmcgJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZC4AJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBkb2Vzbid0IGV4aXN0LiBQbGVhc2UgZG8gQUxURVIgVVNFUi4uLiBBREQgJWQgZmFjdG9yLi4uIGJlZm9yZSBkb2luZyB0aGlzIG9wZXJhdGlvbi4AJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBkb2VzIG5vdCBtYXRjaCBhZ2FpbnN0IGF1dGhlbnRpY2F0aW9uIHBvbGljeS4gUGxlYXNlIHJlZmVyIEBAYXV0aGVudGljYXRpb25fcG9saWN5IHN5c3RlbSB2YXJpYWJsZS4AVGhlIHJlZ2lzdHJhdGlvbiBmb3IgJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBpcyBhbHJlYWR5IGNvbXBsZXRlZC4gWW91IGNhbm5vdCBwZXJmb3JtIHJlZ2lzdHJhdGlvbiBtdWx0aXBsZSB0aW1lcy4AVGhlIHJlZ2lzdHJhdGlvbiBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQgZm9yIHVzZXIgJyVzJ0AnJXMnLiBUaGUgb3BlcmF0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBpbiB1c2VyJ3Mgb3duIHNlc3Npb24uAEF1dGhlbnRpY2F0aW9uIHBsdWdpbidzIHJlZ2lzdHJhdGlvbiBmYWlsZWQuACVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2Qgc2hvdWxkIGJlIGFkZGVkIGJlZm9yZSAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kLgBBdXRoZW50aWNhdGlvbiBmYWN0b3Igc2hvdWxkIGJlIGRpZmZlcmVudC4AVGhlIG9wZXJhdGlvbiAiJXMiIGNhbm5vdCBiZSBwZXJmb3JtZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGNvbmZpZ3VyZWQgdG8gY29ubmVjdCB3aXRob3V0IGEgcGFzc3dvcmQuAEdUSURfT05MWSBjYW5ub3QgYmUgZW5hYmxlZCBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJy4gWW91IG5lZWQgR1RJRF9NT0RFID0gT04sIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMSBhbmQgUkVRVUlSRV9ST1dfRk9STUFUID0gMS4AUkVRVUlSRV9ST1dfRk9STUFUIGNhbm5vdCBiZSBkaXNhYmxlZCBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3aGVuIEdUSURfT05MWT0xLgBTT1VSQ0VfQVVUT19QT1NJVElPTiBjYW5ub3QgYmUgZGlzYWJsZWQgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2hlbiBHVElEX09OTFk9MS4AV2hlbiBkaXNhYmxpbmcgR1RJRF9PTkxZIGFuZCBTT1VSQ0VfQVVUT19QT1NJVElPTiBGT1IgQ0hBTk5FTCAnJS4xOTJzJyB5b3UgbXVzdCBwcm92aWRlIFNPVVJDRV9MT0dfRklMRSBhbmQgU09VUkNFX0xPR19QT1MgYXMgc291cmNlIHBvc2l0aW9ucyBhcmUgaW52YWxpZC4AV2hlbiBkaXNhYmxpbmcgU09VUkNFX0FVVE9fUE9TSVRJT04gRk9SIENIQU5ORUwgJyUuMTkycycgeW91IG11c3QgcHJvdmlkZSBTT1VSQ0VfTE9HX0ZJTEUgYW5kIFNPVVJDRV9MT0dfUE9TIGFzIHNvdXJjZSBwb3NpdGlvbnMgYXJlIGludmFsaWQuAFdoZW4gY29uZmlndXJpbmcgYSBncm91cCByZXBsaWNhdGlvbiBjaGFubmVsIHlvdSBtdXN0IGRvIGl0IHdoZW4gR1RJRF9NT0RFID0gT04uAFJlcGxpY2F0aW9uIGNhbm5vdCBzdGFydCUuMTkycyB3aXRoIEdUSURfT05MWSA9IDEgYXMgdGhpcyBzZXJ2ZXIgdXNlcyBAQEdMT0JBTC5HVElEX01PREUgPD4gT04uAFRoZSByZXBsaWNhdGlvbiBwb3NpdGlvbnMgcmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBtYXkgYmUgb3V0LW9mLWRhdGUgb24gY2hhbm5lbCAnJS4xOTJzJywgZHVlIHRvIHRoZSB1c2Ugb2YgR1RJRF9PTkxZPTEuIFRoZSBvdXQtb2YtZGF0ZSBwb3NpdGlvbnMgY2FuIHN0aWxsIGJlIHVzZWQgaW4gc29tZSBjYXNlcyBzbywgaW4gb3JkZXIgdG8gdXBkYXRlIHRoZW0sIHdlIHN1Z2dlc3QgdGhhdCB5b3Ugc3RhcnQgdGhlIHJlcGxpY2F0aW9uIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGF0IGxlYXN0IG9uZSB0cmFuc2FjdGlvbiwgd2hpY2ggd2lsbCBzZXQgdGhlIHBvc2l0aW9ucyB0byB2YWxpZCB2YWx1ZXMuAFNTTCBmaXBzIG1vZGUgZXJyb3I6ICVzACVzPSVsbHUgaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgWyVsbHUsJWxsdV0uICVsbHUgd2lsbCBiZSB1c2VkLgBNQVRDSCBkb2VzIG5vdCBzdXBwb3J0IFJPTExVUCBjb2x1bW5zLgBNaXNzaW5nIGxvY2FsZSByZXNvdXJjZSBpbiByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeS4AUmVndWxhciBleHByZXNzaW9uIGxpYnJhcnkgdXNlZCBkZWZhdWx0IChyb290KSBsb2NhbGUuAE1pc3NpbmcgZGF0YSBmaWxlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5LgAnJS0uNjRzJyBpcyBhIGNvbGxhdGlvbiBvZiB0aGUgZGVwcmVjYXRlZCBjaGFyYWN0ZXIgc2V0ICVzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgJXMgd2l0aCBhbiBhcHByb3ByaWF0ZSBjb2xsYXRpb24gaW5zdGVhZC4AVGhlICVzIHdhcyBjYWxsZWQgd2hlbiB0aGVyZSB3YXMgYWxyZWFkeSBhbm90aGVyIGNvbmN1cnJlbnQgY2FsbCB0byB0aGlzIHByb2NlZHVyZS4gTm8gYWN0aW9uIHdhcyB0YWtlbi4gV2FpdCBmb3Igb3RoZXIgY2FsbHMgdG8gJXMgdG8gZmluaXNoIGJlZm9yZSByZXRyeWluZy4AQ29ubmVjdGlvbiBjbG9zZWQuIEdsb2JhbCBjb25uZWN0aW9uIG1lbW9yeSBsaW1pdCAlbGx1IGJ5dGVzIGV4Y2VlZGVkLiBDb25zdW1lZCAlbGx1IGJ5dGVzLgBDb25uZWN0aW9uIGNsb3NlZC4gQ29ubmVjdGlvbiBtZW1vcnkgbGltaXQgJWxsdSBieXRlcyBleGNlZWRlZC4gQ29uc3VtZWQgJWxsdSBieXRlcy4ATmVlZCB0byByZWJ1aWxkIHRoZSB0YWJsZSB0byBjaGFuZ2UgY29sdW1uIHR5cGUAVGhpcyBmdW5jdGlvbiAnJS0uMTkycycgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBsb2FkYWJsZSBmdW5jdGlvbiAoVURGKS4gVG8gaW52b2tlIHRoZSBzdG9yZWQgZnVuY3Rpb24sIGl0IGlzIG5lY2Vzc2FyeSB0byBxdWFsaWZ5IGl0IHdpdGggdGhlIHNjaGVtYSBuYW1lLgBDb3VsZCBub3QgcHVyZ2UgYmluYXJ5IGxvZ3Mgc2luY2UgYW5vdGhlciBzZXNzaW9uIGlzIGV4ZWN1dGluZyBMT0NLIElOU1RBTkNFIEZPUiBCQUNLVVAuIFdhaXQgZm9yIHRoYXQgc2Vzc2lvbiB0byByZWxlYXNlIHRoZSBsb2NrLgBUb28gbWFueSB3aW5kb3dzIGluIFNFTEVDVDogJWQuIE1heGltdW0gYWxsb3dlZCBpcyAlZC4gVXNlIG5hbWVkIHdpbmRvd3MgdG8gc2hhcmUgd2luZG93cyBiZXR3ZWVuIHdpbmRvdyBmdW5jdGlvbnMuACVzAENvbW1lbnQgZm9yICVzICclcycgY29udGFpbnMgYW4gaW52YWxpZCAlcyBjaGFyYWN0ZXIgc3RyaW5nOiAnJS42NHMnLgBEZWZpbml0aW9uIG9mICVzICclLS4xOTJzLiUtLjE5MnMnIGNvbnRhaW5zIGFuIGludmFsaWQgJXMgY2hhcmFjdGVyIHN0cmluZzogJyUuNjRzJy4AQ2FuJ3QgZXhlY3V0ZSB0aGUgZ2l2ZW4gY29tbWFuZCB3aGVuIEBAU0VTU0lPTi5HVElEX05FWFQgPT0gJ1VVSUQ6TlVNQkVSJy4AWEE6IFRlbXBvcmFyeSB0YWJsZXMgY2Fubm90IGJlIGFjY2Vzc2VkIGluc2lkZSBYQSB0cmFuc2FjdGlvbnMgd2hlbiB4YV9kZXRhY2hfb25fcHJlcGFyZT1PTgBNYXhpbXVtIHJvdyB2ZXJzaW9ucyByZWFjaGVkIGZvciB0YWJsZSAlcy4gTm8gbW9yZSBjb2x1bW5zIGNhbiBiZSBhZGRlZCBvciBkcm9wcGVkIGluc3RhbnRseS4gUGxlYXNlIHVzZSBDT1BZL0lOUExBQ0UuAENvbHVtbiBjYW4ndCBiZSBhZGRlZCB3aXRoIEFMR09SSVRITT1JTlNUQU5UIGFzIGFmdGVyIHRoaXMgbWF4IHBvc3NpYmxlIHJvdyBzaXplIGNyb3NzZXMgbWF4IHBlcm1pc3NpYmxlIHJvdyBzaXplLiBUcnkgQUxHT1JJVEhNPUlOUExBQ0UvQ09QWS4AQWxsIHF1ZXJpZXMgaGF2ZSBiZWVuIGJsb2NrZWQgd2hpbGUgZnVuY3Rpb24gJ2dyb3VwX3JlcGxpY2F0aW9uX3NldF9hc19wcmltYXJ5KCknIGlzIGV4ZWN1dGluZy4gUGxlYXNlIHJlZmVyIHRpbWVvdXQgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uICdncm91cF9yZXBsaWNhdGlvbl9zZXRfYXNfcHJpbWFyeSgpJy4ARGVsaW1pdGVyICclcycgaW4gcG9zaXRpb24gJWQgaW4gZGF0ZXRpbWUgdmFsdWUgJyVzJyBhdCByb3cgJWQgaXMgZGVwcmVjYXRlZC4gUHJlZmVyIHRoZSBzdGFuZGFyZCAnJWMnLgBEZWxpbWl0ZXIgJyVzJyBpbiBwb3NpdGlvbiAlZCBpbiBkYXRldGltZSB2YWx1ZSAnJXMnIGF0IHJvdyAlZCBpcyBzdXBlcmZsdW91cyBhbmQgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHJlbW92ZS4AQ2Fubm90IHBlcnNpc3QgU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZSAnJXMnIGJlY2F1c2Uga2V5cmluZyBjb21wb25lbnQgc3VwcG9ydCBpcyB1bmF2YWlsYWJsZS4AU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZSAnJXMnIHdhcyBwZXJzaXN0ZWQgd2l0aG91dCBlbmNyeXB0aW9uLiBDb25zaWRlciByZXN0YXJ0aW5nIHNlcnZlciB3aXRoIGtleXJpbmcgY29tcG9uZW50IHN1cHBvcnQgdG8gcGVyc2lzdCBTRU5TSVRJVkUgdmFyaWFibGVzIHNlY3VyZWx5LgBUcmlnZ2VyICclLS4xOTJzJyBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgdGFibGUgJyUtLjE5MnMnLiclLS4xOTJzJy4AVHJpZ2dlciAnJS0uMTkycycuJyUtLjE5MnMnIGFscmVhZHkgZXhpc3RzIG9uIGEgZGlmZmVyZW50IHRhYmxlLiBUaGUgJ0lGIE5PVCBFWElTVFMnIGNsYXVzZSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgdHJpZ2dlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIHRhYmxlLgBUaGlzIGZ1bmN0aW9uICclLS4xOTJzJyBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIG5hdGl2ZSBmdW5jdGlvbi4gVGhlICdJRiBOT1QgRVhJU1RTJyBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aGlsZSBjcmVhdGluZyBhIGxvYWRhYmxlIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhIG5hdGl2ZSBmdW5jdGlvbi4AU0VUIFBBU1NXT1JEIGhhcyBubyBzaWduaWZpY2FuY2UgZm9yIHVzZXIgJyVzJ0AnJXMnIGFzIHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2QgdXNlZCBkb2Vzbid0IHN0b3JlIGF1dGhlbnRpY2F0aW9uIGRhdGEgaW4gdGhlIE15U1FMIHNlcnZlci4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIEFMVEVSIFVTRVIgaW5zdGVhZCBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgYXV0aGVudGljYXRpb24gcGFyYW1ldGVycy4AQ2Fubm90IHJlY292ZXIgZnJvbSBkZXRlY3Rfb25seSBkb3VibGV3cml0ZSBidWZmZXIgYXMgcGFnZSAldSBmcm9tIGJhdGNoIGRvdWJsZXdyaXRlIGZpbGUgaXMgY29ycnVwdGVkLgBEYXRhYmFzZSBwYWdlIGNvcnJ1cHRpb24gb2YgdGFibGVzcGFjZSAlcyBzcGFjZV9pZDogJXUgcGFnZV9udW06ICV1LiBDYW5ub3QgcmVjb3ZlciBpdCBmcm9tIHRoZSBkb3VibGV3cml0ZSBidWZmZXIgYmVjYXVzZSBpdCB3YXMgd3JpdHRlbiBpbiBkZXRlY3Rfb25seS1kb3VibGV3cml0ZSBtb2RlLgBMYXRpdHVkZSBvZiBvcmlnaW4gbXVzdCBiZSB3aXRoaW4gWy05MCwgOTBdIGRlZ3JlZXMsIHNwZWNpZmllZCBpbiB0aGUgU1JTIGFuZ3VsYXIgdW5pdC4ATG9uZ2l0dWRlIG9mIG9yaWdpbiBtdXN0IGJlIHdpdGhpbiAoLTE4MCwgMTgwXSBkZWdyZWVzLCBzcGVjaWZpZWQgaW4gdGhlIFNSUyBhbmd1bGFyIHVuaXQuAFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gZGVmaW5pdGlvbiBmb3IgU1JJRCAldSBjb250YWlucyB1bnVzZWQgcHJvamVjdGlvbiBwYXJhbWV0ZXIgIiVzIi4ARmFpbGVkIHRvIGdlbmVyYXRlIGludmlzaWJsZSBwcmltYXJ5IGtleS4gQ29sdW1uICdteV9yb3dfaWQnIGFscmVhZHkgZXhpc3RzLgBGYWlsZWQgdG8gZ2VuZXJhdGUgaW52aXNpYmxlIHByaW1hcnkga2V5LiBBdXRvLWluY3JlbWVudCBjb2x1bW4gYWxyZWFkeSBleGlzdHMuAEFsdGVyaW5nIGdlbmVyYXRlZCBpbnZpc2libGUgcHJpbWFyeSBrZXkgY29sdW1uICdteV9yb3dfaWQnIGlzIG5vdCBhbGxvd2VkLgBQbGVhc2UgZHJvcCBwcmltYXJ5IGtleSBjb2x1bW4gdG8gYmUgYWJsZSB0byBkcm9wIGdlbmVyYXRlZCBpbnZpc2libGUgcHJpbWFyeSBrZXkuAEdlbmVyYXRpbmcgYW4gaW52aXNpYmxlIHByaW1hcnkga2V5IGZvciBhIHRhYmxlIGNyZWF0ZWQgdXNpbmcgQ1JFQVRFIFRBQkxFIC4uLiBTRUxFQ1QgLi4uIGlzIGRpc2FsbG93ZWQgd2hlbiBiaW5sb2dfZm9ybWF0PVNUQVRFTUVOVC4gSXQgY2Fubm90IGJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgU0VMRUNUIHJldHJpZXZlcyByb3dzIGluIHRoZSBzYW1lIG9yZGVyIG9uIHNvdXJjZSBhbmQgcmVwbGljYS4gVGhlcmVmb3JlLCBpdCBjYW5ub3QgYmUgZ3VhcmFudGVlZCB0aGF0IHRoZSB2YWx1ZSBnZW5lcmF0ZWQgZm9yIHRoZSBnZW5lcmF0ZWQgaW1wbGljaXQgcHJpbWFyeSBrZXkgY29sdW1uIHdpbGwgYmUgdGhlIHNhbWUgb24gc291cmNlIGFuZCByZXBsaWNhIGZvciBhbGwgcm93cy4gVXNlIGJpbmxvZ19mb3JtYXQ9Uk9XIG9yIE1JWEVEIHRvIGV4ZWN1dGUgdGhpcyBzdGF0ZW1lbnQuAFRoZSBvcHRpb24gZXhwaXJlX2xvZ3NfZGF5cyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIG9wdGlvbiBiaW5sb2dfZXhwaXJlX2xvZ3Nfc2Vjb25kcy4gVG8gc2V0IG9uZSwgZmlyc3QgdW5zZXQgdGhlIG90aGVyIGJ5IHNldHRpbmcgaXQgdG8gMC4AUmVjdXJzaXZlIHRhYmxlIHJlZmVyZW5jZSBpbiBFWENFUFQgb3IgSU5URVJTRUNUIG9wZXJhbmQgaXMgbm90IGFsbG93ZWQuAEVycm9yIHdoZW4gdHJ5aW5nIHRvIGZldGNoIGluZm9ybWF0aW9uIGZyb20gc2VjdXJpdHkgY29udGV4dCBvYmplY3QsIHdoZW4gdHJ5aW5nIHRvIGNvbm5lY3QgdGhlIHNlcnZlci4ARXJyb3IgaW4gY29tbWFuZCBzZXJ2aWNlIGJhY2tlbmQgaW50ZXJmYWNlLCBiZWNhdXNlIG9mIDogIiVzIgBUaGUgUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciBjaGFubmVsICclLjE5MnMnIHdvdWxkIG5lZWQgRklMRSBwcml2aWxlZ2UgdG8gZXhlY3V0ZSBhIExPQUQgREFUQSBJTkZJTEUgc3RhdGVtZW50IHJlcGxpY2F0ZWQgaW4gc3RhdGVtZW50IGZvcm1hdC4gQ29uc2lkZXIgdXNpbmcgYmlubG9nX2Zvcm1hdD1ST1cgb24gc291cmNlLiBJZiB0aGUgcmVwbGljYXRlZCBldmVudHMgYXJlIHRydXN0ZWQsIHJlY292ZXIgZnJvbSB0aGUgZmFpbHVyZSBieSB0ZW1wb3JhcmlseSBncmFudGluZyBGSUxFIHRvIHRoZSBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIuAFRoZSAnU0VUIEdMT0JBTCBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzPSVzJyBjb21tYW5kIGVuY291bnRlcmVkIGEgZmFpbHVyZS4gJXMAVXNpbmcgJXMgYXMgdW5xdW90ZWQgaWRlbnRpZmllciBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHF1b3RlcyBvciByZW5hbWUgdGhlIGlkZW50aWZpZXIuAE1heCBudW1iZXIgb2YgZHVwbGljYXRlIHJvd3MgaW4gSU5URVJTRUNUIEFMTCBleGNlZWRlZC4AUXVlcnkgdGhyZWFkcyBjb3VudCgldSkgZXhjZWVkcyB0cmFuc2FjdGlvbiB0aHJlYWRzIGxpbWl0KCV1KSBwZXIgZ3JvdXAuIFBsZWFzZSB1c2UgcXVlcnkgdGhyZWFkcyBjb3VudCBwZXIgZ3JvdXAgc21hbGxlciBvciBlcXVhbCB0byBtYXggdHJhbnNhY3Rpb24gdGhyZWFkcyBsaW1pdCBwZXIgZ3JvdXAASW52YWxpZCB0aW1lc3RhbXAgZm9ybWF0IGluICVzIHVkZgBTSEFQRV9QUkVESUNUSU9OIFVERiAlcyBnb3QgZXJyb3IgYmVjYXVzZSBvZiAlcy4ASGVpZ2h0IHBhcmFtZXRlciBtdXN0IGJlIG5vbiBuZWdhdGl2ZS4AU2NhbGluZyBwYXJhbWV0ZXIgbXVzdCBiZSBub24gbmVnYXRpdmUuAFpvbmUgd2lkdGggcGFyYW1ldGVyIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEtNjAuAExhdGl0dWRlIG9mIG9yaWdpbiBtdXN0IGJlICstOTAgZGVncmVlcywgc3BlY2lmaWVkIGluIHRoZSBTUlMgYW5ndWxhciB1bml0LCBpbiBQb2xhciBTdGVyZW9ncmFwaGljICh2YXJpYW50IEEpIHByb2plY3Rpb24gbWV0aG9kIChFUFNHOjk4MTApLgBUaGUgY2xpZW50IGlzIHVzaW5nIGEgZGVwcmVjYXRlZCBDTElFTlRfTk9fU0NIRU1BIGNsaWVudCBvcHRpb24uIENMSUVOVF9OT19TQ0hFTUEgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFRhYmxlICclLS4xOTJzJyBpcyBub3QgZW1wdHkuAFRhYmxlICclLS4xOTJzJyBoYXMgbm8gcHJpbWFyeSBrZXkuAFRhYmxlICclLS4xOTJzJyBpcyBpbiBhIHNoYXJlZCB0YWJsZXNwYWNlLgBUYWJsZSAnJS0uMTkycycgaGFzIGluZGV4ZXMgb3RoZXIgdGhhbiBwcmltYXJ5IGtleS4AW0lOIFBSSU1BUlkgS0VZIE9SREVSXSBzcGVjaWZpZWQgYnV0IGRhdGEgbm90IHNvcnRlZDogJyUtLjY0cycAQnVsayBleGVjdXRvciBlcnJvcjogJXMAQnVsayByZWFkZXIgZmFpbGVkIHRvIGluaXRpYWxpemUgbGliY3VybABCdWxrIHJlYWRlciBnb3QgbGliY3VybCBlcnJvcjogJXMAQnVsayByZWFkZXIgZ290IGVycm9yIHJlc3BvbnNlIGZyb20gc2VydmVyOiAlbGQAQnVsayByZWFkZXIgZ290IGVycm9yIGluIGNvbW11bmljYXRpb24gd2l0aCBzb3VyY2Ugc2VydmVyLCBjaGVjayB0aGUgZXJyb3IgbG9nIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuAEJ1bGsgbG9hZGVyIGZhaWxlZCBpbiBJbm5vZGIgc3RvcmFnZSBlbmdpbmUsIGNoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4AQ1NWIGNvbHVtbiB0b28gYmlnIGZvciBsZWZ0b3ZlciBidWZmZXIuAEJ1bGsgbG9hZGVyIGNvbXBvbmVudCBlcnJvcjogJXMAVGhlIGZpcnN0IGZpbGUgYmVpbmcgbG9hZGVkIGNvbnRhaW5lZCBsZXNzIGxpbmVzIHRoYW4gdGhlIGlnbm9yZSBjbGF1c2UATWlzc2luZyBFTkNMT1NFRCBCWSBjaGFyYWN0ZXIgYXQgcm93ICVsZCBpbiBmaWxlICclcycuIEFkZCBPUFRJT05BTExZIHRvIHRoZSBFTkNMT1NFRCBCWSBjbGF1c2UgdG8gYWxsb3cgdGhpcyBpbnB1dC4AVGhlIG51bWJlciBvZiBpbnB1dCBjb2x1bW5zIHRoYXQgbmVlZCB0byBiZSBidWZmZXJlZCBmb3IgcGFyc2luZyBleGNlZWRlZCBwcmVkZWZpbmVkIGJ1ZmZlciBtYXggc2l6ZSBmb3IgZmlsZSAnJXMnLgBUaGUgY29sdW1uIGRhdGEgdGhhdCBuZWVkZWQgdG8gYmUgY29waWVkIGR1ZSB0byBlc2NhcGVkIGNoYXJhY3RlcnMgZXhjZWVkZWQgdGhlIHNpemUgb2YgdGhlIGludGVybmFsIGNvcHkgYnVmZmVyIGZvciBmaWxlICclcycuAFVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBEYXRhIGZvciBzb21lIGNvbHVtbnMgaXMgbWlzc2luZy4AVW5leHBlY3RlZCByb3cgdGVybWluYXRvciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4gRGF0YSBmb3Igc29tZSBjb2x1bW5zIGlzIG1pc3NpbmcuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBlbmRpbmcgRU5DTE9TRUQgQlkgY2hhcmFjdGVyIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgTlVMTCBlc2NhcGUgKFxOKSBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIGNvbHVtbiB0ZXJtaW5hdG9yIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJyByZXN1bHRpbmcgaW4gaW5jb21wbGV0ZSBlc2NhcGUgc2VxdWVuY2UuAExPQUQgQlVMSyBEQVRBIGludG8gdGFibGUgJyUtLjE5MnMnIGZhaWxlZDogJXMASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnIGZvciBjb2x1bW4gJyUtLjE5MnMnIGF0IHJvdyAlbGQgaW4gZmlsZSAnJS0uMTkycycATlVMTCBzdXBwbGllZCB0byBOT1QgTlVMTCBjb2x1bW4gJyVzJyBhdCByb3cgJWxkIGluIGZpbGUgJyUtLjE5MnMnAE9uIGEgR3JvdXAgUmVwbGljYXRpb24gY2hhbm5lbCwgc2V0dGluZyBSRVFVSVJFX1RBQkxFX1BSSU1BUllfS0VZX0NIRUNLIHRvICdHRU5FUkFURScgaXMgbm90IGFsbG93ZWQuAENhbm5vdCBjaGFuZ2UgdGhlICclcycgc3lzdGVtIHZhcmlhYmxlIGluIHJlYWQtb25seSBtb2RlLgBDb2x1bW4gY2FuJ3QgYmUgYWRkZWQgb3IgZHJvcHBlZCB3aXRoIEFMR09SSVRITT1JTlNUQU5UIGFzIGVpdGhlciBtYXggcG9zc2libGUgcm93IHNpemUgYWxyZWFkeSBjcm9zc2VzIG1heCBwZXJtaXNzaWJsZSByb3cgc2l6ZSBvciBtYXkgY3Jvc3MgaXQgYWZ0ZXIgYWRkLiBUcnkgQUxHT1JJVEhNPUlOUExBQ0UvQ09QWS4AQ29sdW1uIGNhbid0IGJlIGFkZGVkIHRvICclcycgd2l0aCBBTEdPUklUSE09SU5TVEFOVCBhbnltb3JlLiBQbGVhc2UgdHJ5IEFMR09SSVRITT1JTlBMQUNFL0NPUFkuAEZhaWxlZCB0byBzZXQgcGVyc2lzdGVkIG9wdGlvbnMuAFRoZSB2YWx1ZSBzdXBwbGllZCBmb3IgJXMgaW4gdGhlIFNFVCBsaXN0IGNhbm5vdCBiZSBudWxsAFRoZSBhc3NpZ25tZW50IG9mICVzIGluIFNFVCBkb2Vzbid0IG1hdGNoIGFueSBvZiB0aGUgdmFyaWFibGVzIHJlZ2lzdGVyZWQgYnkgdGhlIGNvbXBvbmVudChzKQAnJXMnIGlzIGEgdXNlciBkZWZpbmVkIGNvbGxhdGlvbi4gVXNlciBkZWZpbmVkIGNvbGxhdGlvbnMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBhIGNvbXBpbGVkIGNvbGxhdGlvbiBpbnN0ZWFkLgBVc2VyLWxldmVsIGxvY2sgbmFtZSAnJS0uMTkycycgc2hvdWxkIG5vdCBleGNlZWQgJWQgY2hhcmFjdGVycy4ASW1tZWRpYXRlbHkgc3RhcnRpbmcgdGhlIHZlcnNpb24gY29tbWVudCBhZnRlciB0aGUgdmVyc2lvbiBudW1iZXIgaXMgZGVwcmVjYXRlZCBhbmQgbWF5IGNoYW5nZSBiZWhhdmlvciBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgaW5zZXJ0IGEgd2hpdGUtc3BhY2UgY2hhcmFjdGVyIGFmdGVyIHRoZSB2ZXJzaW9uIG51bWJlci4AVGhlIG5ldyBwYXNzd29yZCBtdXN0IGhhdmUgYXQgbGVhc3QgJyV1JyBjaGFyYWN0ZXJzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBvbGQgcGFzc3dvcmQuIEl0IGhhcyBvbmx5ICcldScgY2hhcmFjdGVyKHMpIGRpZmZlcmVudC4gRm9yIHRoaXMgY29tcGFyaXNvbiwgdXBwZXJjYXNlIGxldHRlcnMgYW5kIGxvd2VyY2FzZSBsZXR0ZXJzIGFyZSBjb25zaWRlcmVkIHRvIGJlIGVxdWFsLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiAlcwBSdW5uaW5nIHJlY3Vyc2l2ZSBjYWxscyB0byBTUUwgZXhlY3V0aW9uIHNlcnZpY2UgaXMgbm90IHN1cHBvcnRlZAAlcwBMYW5ndWFnZSBjb21wb25lbnQ6IE5vdCBhdmFpbGFibGUuAExhbmd1YWdlIGNvbXBvbmVudDogVW5zdXBwb3J0ZWQgbGFuZ3VhZ2UgJyVzJwBMYW5ndWFnZSBjb21wb25lbnQ6IENhbm5vdCB1bmluc3RhbGwgZHVlIHRvIGNvbm5lY3RlZCBzZXNzaW9ucy4gUGxlYXNlIGRpc2Nvbm5lY3QgYWxsIHNlc3Npb25zIGFuZCB0cnkgYWdhaW4uAEFsdGVyaW5nIHRoZSBsYW5ndWFnZSBvZiBhbiBleGlzdGluZyByb3V0aW5lIGlzIG5vdCBwb3NzaWJsZS4ARVhQTEFJTiBBTkFMWVpFIGRvZXMgbm90IHN1cHBvcnQgdGhlIElOVE8gY2xhdXNlLgBFWFBMQUlOIElOVE8gZG9lcyBub3Qgc3VwcG9ydCBpbXBsaWNpdCBGT1JNQVQuAEVYUExBSU4gSU5UTyBkb2VzIG5vdCBzdXBwb3J0IEZPUk1BVD0lcy4AVHJ5aW5nIHRvIHBlcnNpc3QgYSBOVUxMIGludG8gYSB2YXJpYWJsZSAnJS0uMTkycycgdGhhdCdzIHNldHRhYmxlIG9ubHkgb24gY29tbWFuZCBsaW5lIGlzIG5vdCBzdXBwb3J0ZWQARVhQTEFJTiBGT1IgQ09OTkVDVElPTiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBJTlRPIGNsYXVzZS4ARW51bSBlbGVtZW50IG5hbWUgbGVuZ3RoICVsdSwgaXMgaW52YWxpZCBmb3IgY29sdW1uICVzAE51bWJlciBvZiBpbmRleGVzIGluIG1ldGEtZGF0YSBmaWxlIGlzIDAATnVtYmVyIG9mIGluZGV4ZXMgaW4gbWV0YS1kYXRhIGZpbGUgaXMgdG9vIGhpZ2g6ICVsbHUAREQgbWV0YWRhdGEgZm9yIElOU1RBTlQgRFJPUCBjb2x1bW4gJXMgaW4gdGFyZ2V0IHRhYmxlIGRvZXNuJ3QgbWF0Y2ggd2l0aCBDRkcuAEVudW0vU2V0IGVsZW1lbnQgbmFtZSBtaXNzaW5nIG51bGwgdGVybWluYXRvciBmb3IgY29sdW1uICclcycAJXMgJXMgJXp1LgBUaGUgcHJpdmlsZWdlICclcycgaXMgZGVwcmVjYXRlZC4AQnVsayBNdWx0aSBSZWFkZXI6IEZhaWxlZCB0byBvcGVuIGZpbGUAQnVsayBNdWx0aSBSZWFkZXI6IEZhaWxlZCB0byByZWFkIGZpbGUAQnVsayBNZXJnZSBMb2FkZXI6IEludmFsaWQgQ2h1bmsAQnVsayBNZXJnZSBMb2FkZXI6IE5vdCBhbGwgY2h1bmtzIGNvbnN1bWVkAEJ1bGsgd3JpdGVyIGZhaWxlZCB0byBpbml0aWFsaXplIGxpYmN1cmwAQnVsayB3cml0ZXIgZ290IGxpYmN1cmwgZXJyb3I6ICVzAEJ1bGsgU29ydGluZyBMb2FkZXI6IEZhaWxlZCB0byB3cml0ZSBkYXRhIHRvIHRlbXBvcmFyeSBmaWxlAEJ1bGsgU29ydGluZyBMb2FkZXI6IEludGVycnVwdGVkIHdoaWxlIHdhaXRpbmcAQnVsayBSZWFkZXI6IEZhaWxlZCB0byBhY2Nlc3MgZmlsZSAlcwBCdWxrIExvYWRlcjogVGFibGUgJyUtLjE5MnMnIGhhcyBpbnN0YW50bHkgYWRkZWQvZHJvcHBlZCBjb2x1bW5zLiBQbGVhc2UgVFJVTkNBVEUgVEFCTEUgYW5kIHJldHJ5LgBCdWxrIExvYWRlcjogTm90IGVub3VnaCBtZW1vcnkgYXZhaWxhYmxlLiBNZW1vcnkgbmVlZGVkIGZvciBsb2FkaW5nICVzIGRhdGE6ICVzIGZvciAldSB0aHJlYWRzLCAlcyB3aXRoIG1pbmltYWwgY29uZmlndXJhdGlvbi4gVG90YWwgY29uZmlndXJlZCBtZW1vcnkgaXMgJXMsIEF2YWlsYWJsZSBtZW1vcnkgaXMgJXMuAExPQUQgREFUQSB3aXRoIEJVTEsgQWxnb3JpdGhtIGlzIG5vdCBzdXBwb3J0ZWQgb24gYSB0YWJsZSB3aXRoIHNlY29uZGFyeSBlbmdpbmUuAEJ1bGsgcmVhZGVyIGVycm9yOiAlcwBGaWxlIG5vdCBmb3VuZCwgY2hlY2sgd2hldGhlciBpdCBleGlzdHM6ICVzAENvdWxkbid0IHJlc29sdmUgaG9zdDogJXMAQ2Fubm90IHN0YXJ0IHJlcGxpY2F0aW9uIGNoYW5uZWwgJyVzJyBiZWNhdXNlICVzLgAnJXMnIGlzIG5vdCBzdXBwb3J0ZWQAJyVzJyBpcyBzdXBwb3J0ZWQgd2l0aCBtYXhpbXVtICVkIGVsZW1lbnRzIGluIHRoZSBHUk9VUCBCWSBsaXN0ACclcycgZm9yICclcycgc3RvcmFnZSBlbmdpbmUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFFVQUxJRlkgY2xhdXNlIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgYSB3aW5kb3cgZnVuY3Rpb24uACclcycgY2FuIGJlIHVzZWQgb25seSBpZiB0aGUgaHlwZXJncmFwaCBvcHRpbWl6ZXIgaXMgZW5hYmxlZC4AQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgJS0uMjU2cyBwcml2aWxlZ2UocykgZm9yIHRoaXMgb3BlcmF0aW9uAEBAU0VTU0lPTi5HVElEX05FWFQgY2Fubm90IGJlIHNldCB0byBBVVRPTUFUSUM6PFRBRz4gd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYgb3IgT0ZGX1BFUk1JU1NJVkUAQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgc2V0IHRvIFVVSUQ6VEFHOk5VTUJFUiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRi4AQ29sdW1uICVkIG9mICVzIDogQ29sdW1uIGNvbnRhaW5zIG51bGwgYnV0IGl0IGlzIG5vdCBudWxsYWJsZS4AQ29sdW1uICVkIG9mICVzIDogQ29sdW1uIGlzIG1pc3NpbmcsIGJ1dCBpdCBpcyBub3QgbnVsbGFibGUgYW5kIG5vIGV4cGxpY2l0IGRlZmF1bHQgdmFsdWUgaXMgcHJvdmlkZWQuAENvbHVtbiAlZCBvZiAlcyA6IENvbHVtbiBpcyBlbXB0eS4AQ29sdW1uICVkIG9mICVzIDogQ29sdW1uIGlzIGVtcHR5LCBzZXR0aW5nIGRlZmF1bHQgdmFsdWUuAENvbHVtbiAlZCBvZiAlcyA6IEludmFsaWQgJXMgdmFsdWUuAENvbHVtbiAlZCBvZiAlcyA6IFVua25vd24gZXJyb3Igd2hpbGUgcGFyc2luZyBkZWNpbWFsLgBDb2x1bW4gJWQgb2YgJXMgOiBPdXQgb2YgbWVtb3J5IGxvYWRpbmcgZGVjaW1hbC4AQ29sdW1uICVkIG9mICVzIDogRnJhY3Rpb24gZXhjZWVkcyBzY2hlbWEsIHJvdW5kaW5nIHZhbHVlLgBDb2x1bW4gJWQgb2YgJXMgOiBkZWNpbWFsIHByZWNpc2lvbiBleGNlZWRzIHNjaGVtYS4AQ29sdW1uICVkIG9mICVzIDogJXMgZXhjZWVkcyBtaW4uAENvbHVtbiAlZCBvZiAlcyA6ICVzIGV4Y2VlZHMgbWF4LgBDb2x1bW4gJWQgb2YgJXMgOiAlcyBleGNlZWRzIG1pbiwgc2V0dGluZyB0byBtaW4gdmFsdWUgcG9zc2libGUuAENvbHVtbiAlZCBvZiAlcyA6ICVzIGV4Y2VlZHMgbWF4LCBzZXR0aW5nIHRvIG1heCB2YWx1ZSBwb3NzaWJsZS4AQ29sdW1uICVkIG9mICVzIDogUmVhbCB2YWx1ZSBpcyBOYU4uAENvbHVtbiAlZCBvZiAlcyA6ICVzIHZhbHVlIGlzIG91dCBvZiByYW5nZS4AQ29sdW1uICVkIG9mICVzIDogRXJyb3Igd2hpbGUgYXBwbHlpbmcgJXMgZm9ybWF0LgBDb2x1bW4gJWQgb2YgJXMgOiAlcyB2YWx1ZSB3YXMgdHJ1bmNhdGVkLgBDb2x1bW4gJWQgb2YgJXMgOiBDYW5ub3QgY29udmVydCBzdHJpbmcgJXMuAFJlc291cmNlIHByaW5jaXBhbCBlcnJvci4AQVdTIGF1dGhlbnRpY2F0aW9uIGVycm9yLgAlczolbHU6IFBhcnNpbmcgZXJyb3IgZm91bmQuICVzLgAlczogTWlzbWF0Y2ggaW4gdGhlIG51bWJlciBvZiBjb2x1bW5zLiBFeHBlY3RlZCAldSwgZm91bmQgJXUuACVzOiBNb3JlIHRoYW4gJXUgY29sdW1uKHMpIGZvdW5kLgBDb2x1bW4gJWQgaW4gJXM6IENoYXJzZXQgaXMgbm90IHN1cHBvcnRlZC4AQ29sdW1uICVkIGluICVzOiBEZWNpbWFsIGNvbnZlcnNpb24gZXJyb3IuAENvbHVtbiAlZCBpbiAlczogU3RyaW5nIGlzIHRvbyBsb25nLgBSZXNvdXJjZSBQcmluY2lwYWwgZW5kcG9pbnQgaXMgbm90IGNvbmZpZ3VyZWQuIENhbm5vdCBhY2Nlc3MgZm9sbG93aW5nIGJ1Y2tldHM6ICVzLgBObyBmaWxlcyBmb3VuZCBjb3JyZXNwb25kaW5nIHRvIHRoZSBmb2xsb3dpbmcgZGF0YSBsb2NhdGlvbnM6ICVzLgBGaWxlICVzIGlzIGVtcHR5LgBGaWxlICVzIHdhcyBub3QgcHJvY2Vzc2VkIChkdXBsaWNhdGUpLgBGaWxlICVzOiBBdnJvIHNjaGVtYSBkZXB0aCBleGNlZWRzIG1heCBhbGxvd2VkIGRlcHRoLgBGaWxlICVzOiBIZWFkZXIgZG9lcyBub3QgbWF0Y2ggb3RoZXIgZmlsZXMuAEZpbGUgJXM6IEVudW0gc3ltYm9sIGNhbid0IGNvbnZlcnQgdG8gY29sdW1uIGNoYXJzZXQuAEZpbGUgJXM6IEVudW0gc3ltYm9scyBhcmUgbm90IHRoZSBzYW1lLCBvciBhcmUgbm90IGluIHRoZSBzYW1lIG9yZGVyLgBDb2x1bW4gJWQgaW4gJXM6IEF2cm8gdmFsdWUgb2YgcGh5c2ljYWwgdHlwZSAlLipzIGxvZ2ljYWwgdHlwZSAlLipzIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gbXlzcWwgdHlwZSAlcy4ARmlsZSAlLipzOiBFbmRzIHVuZXhwZWN0ZWRseS4ARmlsZSAlLipzOiBGaWxlIGRhdGEgbWlnaHQgYmUgY29ycnVwdC4AQ29sdW1uICVkIGluICVzOiBJbnZhbGlkIHVuaW9uIGVuY291bnRlcmVkLiBVbmlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIHRvIHJlcHJlc2VudCBudWxsYWJsZSBjb2x1bW5zLiBPbmUgb2YgdGhlIHR3byB0eXBlcyBvZiB0aGUgdW5pb24gbXVzdCBiZSBudWxsLgBGaWxlICUuKnM6IEludmFsaWQgYXZybyBibG9jayBzaXplLgBGaWxlICUuKnM6IEludmFsaWQgQXZybyBibG9jayByZWNvcmQgY291bnQuAEZpbGUgJS4qczogQ2Fubm90IGxvY2F0ZSAlcyBzcGVjaWZpYyBtZXRhZGF0YS4gRWl0aGVyIHRoZSBmaWxlIGlzIGNvcnJ1cHRlZCBvciB0aGlzIGlzIG5vdCBhbiAlcyBmaWxlLgBGaWxlICUuKnM6IENvdWxkIG5vdCBwcm9jZXNzIEF2cm8gaGVhZGVyIG1ldGFkYXRhLiBUaGUgbWV0YWRhdGEgaXMgY29ycnVwdGVkIG9yIGludmFsaWQuAEZpbGUgJS4qczogTm8gc2NoZW1hIGluIEF2cm8gaGVhZGVyIG1ldGFkYXRhLgBGaWxlICUuKnM6IE5vIGNvZGVjIGluIEF2cm8gaGVhZGVyIG1ldGFkYXRhLgBGaWxlICUuKnM6IEludmFsaWQgbmFtZSBpbiBBdnJvIHNjaGVtYS4ARmlsZSAlLipzOiBFcnJvciBkZWNvZGluZyBBdnJvICUuKnMuICVzAENvbHVtbiAlZCBpbiAlczogU3RyaW5nIHdpdGggbm9uLXV0ZjggZmlsZSBlbmNvZGluZy4ARGlmZmVyZW5jZSBpbiBzY2hlbWEgYW1vbmcgUGFycXVldCBmaWxlcy4ARmlsZSAlczogU2l6ZSBvZiByb3cgZ3JvdXAgJWxkIGlzIGxhcmdlciB0aGFuIG1heGltdW0gYWxsb3dlZCBzaXplICglZCkuAEZpbGUgJXM6IENhbm5vdCBsb2NhdGUgb2Zmc2V0IG9mIHJvdyBncm91cCAlbGQgaW4gbWV0YWRhdGEuAENvbHVtbiAlZCBpbiBwYXJxdWV0IHRhYmxlIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gbXlzcWwgZm9ybWF0LgBDYW5ub3QgbG9jYXRlIHNjaGVtYSBpbiAlcy4ARm91bmQgZmlsZXMgd2l0aCBtaXNtYXRjaGVkIHNjaGVtYXMuAEluc3VmZmljaWVudCBtZW1vcnkuAFNraXBwZWQgJWx1IGxpbmUocykgZHVlIHRvIG1pc21hdGNoZWQgbnVtIG9mIGNvbHMuAFNraXBwZWQgJWx1IGZpbGUocykgZHVlIHRvIG1pc21hdGNoZWQgbnVtIG9mIGNvbHMuAEZpbGUgJXMgaXMgc2tpcHBlZCBiZWNhdXNlIGl0IGhhcyBubyB2YWxpZCBkYXRhLiBGaWxlIGlzIGVpdGhlciBlbXB0eSBvciBhbGwgcm93cyBhcmUgc2tpcHBlZC4ATm8gdmFsaWQgZGF0YSBmb3VuZCBmb3IgcHJvY2Vzc2luZy4ATm8gdmFsaWQgZmlsZXMgZm91bmQgZm9yIHByb2Nlc3NpbmcuAFVzZWQgZGVmYXVsdCBjb2x1bW4gbmFtZXMgZm9yIGNvbHVtbiBpbmRleChzKSAlcyBhcyB0aGV5IGFyZSAlcy4ARmlsZSAlczogVW5hYmxlIHRvIHJlYWQgUGFycXVldCBoZWFkZXIuAEdvdCBhbiBleGNlcHRpb24gd2hpbGUgdHJ5aW5nIHRvIHByb2Nlc3MgZmlsZSB0YXNrLgBGaWxlICUuKnM6IENvdWxkIG5vdCBwYXJzZSBhdnJvIGhlYWRlci4gUHJvYmFibHkgY29ycnVwdGVkIGF2cm8gZmlsZS4AUGFycXVldCByZWFkZXIgY2Fubm90IG9wZW4gJXMuICVzAEZpbGUgJS4qczogJXMARmlsZSAlLipzOiAlcwBUYWJsZXNhbXBsZSBwZXJjZW50YWdlIHNob3VsZCByYW5nZSBiZXR3ZWVuIDAgYW5kIDEwMC4AVGFibGVzYW1wbGUgY2FuIGJlIGFwcGxpZWQgb25seSBvbiBiYXNlIHRhYmxlcy4AUGFyYW1ldGVyIGluZGV4ICVsbHUgaXMgb3V0IG9mIHJhbmdlAFJlc3VsdCBzaXplIGxpbWl0IGV4Y2VlZGVkLgBMYW5ndWFnZSBjb21wb25lbnQ6IEludGVybmFsIGVycm9yLgBMYW5ndWFnZSBjb21wb25lbnQ6IENvbmN1cnJlbmN5IGxpbWl0ICglcykgaGFzIGJlZW4gcmVhY2hlZC4AJXM+ICVzACVzPiBUaW1lIHpvbmUgJXMgaXMgbm90IHN1cHBvcnRlZC4AJXM+IFRoZSBpZGVudGlmaWVyICclcycgaXMgYSByZXNlcnZlZCB3b3JkLgBMYW5ndWFnZSBjb21wb25lbnQ6IFN5c3RlbSB2YXJpYWJsZSAnJXMnIGNhbm5vdCBiZSBjb25maWd1cmVkIHdoZW4gY29tcG9uZW50IGlzIGFjdGl2ZS4AJXM+ICVzACVzPiAlcwBTdG9yZWQgcHJvZ3JhbSBzdGF0ZW1lbnQgaXMgcGFydGlhbGx5IGNvbXBsZXRlZC4gUmVzdWx0IHNldCBtaWdodCBub3QgY29udGFpbiBhbGwgdGhlIHJvd3MuAEV4ZWN1dGluZyBTUUwgc3RhdGVtZW50IHVzaW5nICVzIFN0YXRlbWVudCBIYW5kbGUgSW50ZXJmYWNlIGlzIG5vdCBhbGxvd2VkIHdpdGhpbiBzdG9yZWQgZnVuY3Rpb24sIHRyaWdnZXIgb3IgbG9hZGFibGUgZnVuY3Rpb24gKFVERikuAENvbHVtbiAlZCBvZiAlcyA6ICVzAEVuZ2luZSAlcyBjYW5ub3QgYmUgc2V0IGFzIGRlZmF1bHRfc3RvcmFnZV9lbmdpbmUuAENvbHVtbiAnJS42NHMuJS42NHMuJS42NHMnIGhhdmluZyBwcmVmaXgga2V5IHBhcnQgJyUuNjRzKCV1KScgaW4gdGhlIFBBUlRJVElPTiBCWSBLRVkoKSBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZC4ARm9yZWlnbiBrZXkgJyUuNjRzJyByZWZlcnMgdG8gbm9uLXVuaXF1ZSBrZXkgb3IgcGFydGlhbCBrZXkuIFRoaXMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuIE1pc3NpbmcgdW5pcXVlIGtleSBmb3IgY29uc3RyYWludCAnJXMnIGluIHRoZSByZWZlcmVuY2VkIHRhYmxlICclcycAQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJywgbWlzc2luZyBwcm94eSBwcml2aWxlZ2UuAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycsIHByb3hpZWQgdXNlciBkb2Vzbid0IGV4aXN0LgBVbmFibGUgdG8gYWNjZXNzIHRoZSBmb2xsb3dpbmcgZGF0YSBsb2NhdGlvbnM6ICVzAFpTVEQgZGVjb21wcmVzc2lvbiBmYWlsZWQ6ICVzACVzAEludmFsaWQganNvbiBmaWxlIGZvcm1hdCBzY2hlbWE6ICVzAEluZmVycmVkIGludmFsaWQgc2NoZW1hLiBBIHNpbmdsZSBjb2x1bW4gd2l0aCBKU09OIHR5cGUgaXMgdGhlIG9ubHkgdmFsaWQgc2NoZW1hIGZvciBKU09OIGZpbGUgZm9ybWF0LgBBbHRlcmVkIHRoZSBpbmZlcnJlZCBzY2hlbWEgdG8gYSBzaW5nbGUgSlNPTiBjb2x1bW4uAE5vbi1zY2FsYXIgKGUuZy4sIHZlY3RvcikgY29sdW1uICclLjY0cycgY2Fubm90IGJlIHVzZWQgYXMga2V5LgBDb2x1bW5zIGFnZ3JlZ2F0ZWQgd2l0aCBpbmNvbXBhdGlibGUgdHlwZXM6ICclLjY0cycsICclLjY0cycuAFZhbHVlIG9mIHR5cGUgJyUuMTZzLCBzaXplOiAlenUnIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gJ3ZlY3RvcicgdHlwZS4ARGF0YSBzaXplICglenUgQnl0ZXMsICV1IGRpbWVuc2lvbnMpIGV4Y2VlZHMgVkVDVE9SIG1heCAoJXp1IEJ5dGVzLCAldSBkaW1lbnNpb25zKSBmb3IgY29sdW1uOiAnJS42NHMnAERhdGEgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIHZhbGlkIHZlY3RvcjogJyUuKnMnAFRoaXMgc3RvcmFnZSBlbmdpbmUgaWdub3JlcyB0aGUgJXMgaW5kZXggYWxnb3JpdGhtLgBUaGUgdmFyaWFibGUgdGhyZWFkX3Bvb2xfbWF4X3RyYW5zYWN0aW9uc19saW1pdCBjYW5ub3QgYmUgc2V0IHRvIDAgd2hlbiB0aHJlYWRfcG9vbF9kZWRpY2F0ZWRfbGlzdGVybmVzIGlzIE9OLgBDYW4ndCBleGVjdXRlIHRoZSBxdWVyeSBiZWNhdXNlIHlvdSBoYXZlIGEgY29uZmxpY3RpbmcgYmFja3VwIGxvY2sAQ29tcHJlc3NlZCBjb2x1bW4gJyUtLjE5MnMnIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBrZXkgbGlzdABDYW4gbm90IGRlZmluZSBjb2x1bW4gJyUtLjE5MnMnIGluIGNvbXByZXNzZWQgZm9ybWF0AENvbXByZXNzaW9uIGRpY3Rpb25hcnkgJyUtLjE5MnMnIGFscmVhZHkgZXhpc3RzAENvbXByZXNzaW9uIGRpY3Rpb25hcnkgJyUtLjE5MnMnIGRvZXMgbm90IGV4aXN0AENvbXByZXNzaW9uIGRpY3Rpb25hcnkgbmFtZSAnJS0uMTkycycgaXMgdG9vIGxvbmcgKG1heCBsZW5ndGggPSAlbHUpAERhdGEgZm9yIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkgJyUtLjE5MnMnIGlzIHRvbyBsb25nIChtYXggbGVuZ3RoID0gJWx1KQBDb21wcmVzc2lvbiBkaWN0aW9uYXJ5ICclLS4xOTJzJyBpcyBpbiB1c2UAUmVkbyBsb2cgZW5jcnlwdGlvbiBtb2RlIGNhbid0IGJlIHN3aXRjaGVkIHdpdGhvdXQgc3RvcHBpbmcgdGhlIHNlcnZlciBhbmQgcmVjcmVhdGluZyB0aGUgcmVkbyBsb2dzLiBDdXJyZW50IG1vZGUgaXMgJXMsIHJlcXVlc3RlZCAlcy4AUmVkbyBsb2cga2V5IGdlbmVyYXRpb24gZmFpbGVkLgBGYWlsZWQgdG8gbG9hZCByZWRvIGtleSB2ZXJzaW9uICV1AENvdWxkbid0IGZldGNoIG5ld2x5IGdlbmVyYXRlZCByZWRvIGtleS4AQ291bGRuJ3QgcGFyc2Ugc3lzdGVtIGtleTogJXMAUmVkbyBsb2cgY2Fubm90IGJlIGVuY3J5cHRlZCBpZiB0aGUga2V5cmluZyBpcyBub3QgbG9hZGVkLgBVbmRvIGxvZyBjYW4ndCBiZSBlbmNyeXB0ZWQgaWYgdGhlIGtleXJpbmcgaXMgbm90IGxvYWRlZC4AVGFibGUgJXMgaXMgZW5jcnlwdGVkIGJ1dCBkZWNyeXB0aW9uIGZhaWxlZC4gU2VlbXMgdGhhdCB0aGUgZW5jcnlwdGlvbiBrZXkgZmV0Y2hlZCBmcm9tIGtleXJpbmcgaXMgbm90IHRoZSBjb3JyZWN0IG9uZS4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBrZXlyaW5nPwBUYWJsZXNwYWNlICVzIGlzIGZ1bGx5IG9yIHBhcnRpYWxseSBlbmNyeXB0ZWQgYnkgZW5jcnlwdGlvbiB0aHJlYWRzIGFuZCB0aHVzIGNhbm5vdCBiZSBleGNsdWRlZCBmcm9tIGVuY3J5cHRpb24gdGhyZWFkcy4gUGxlYXNlIGZpcnN0IGZpbmlzaCBvZmYgZW5jcnlwdGlvbi9kZWNyeXB0aW9uIGFuZCB0cnkgYWdhaW4uAFRhYmxlc3BhY2UgJXMgaXMgZW5jcnlwdGVkIGJ5IGVuY3J5cHRpb24gdGhyZWFkcyBhbmQgY2Fubm90IGJlIGV4cGxpY2l0bHkgZGVjcnlwdGVkLiBQbGVhc2UgdXNlIGRlZmF1bHQtdGFibGUtZW5jcnlwdGlvbj1PTkxJTkVfRlJPTV9LRVlSSU5HX1RPX1VORU5DUllQVEVEIHRvIGRlY3lwdCB0aGUgdGFibGVzcGFjZS4AVGFibGVzcGFjZSAlcyBpcyBlbmNyeXB0ZWQgYnkgZW5jcnlwdGlvbiB0aHJlYWRzIGFuZCBjYW5ub3QgYmUgQUxURVJlZCB0byBNYXN0ZXIgS2V5IGVuY3J5cHRpb24uIEluIG9yZGVyIHRvIGVuY3J5cHQgdGhpcyB0YWJsZXNwYWNlIHdpdGggTWFzdGVyIEtleSBlbmNyeXB0aW9uLCBmaXJzdCBkZWNyeXB0IHRoaXMgdGFibGVzcGFjZSB3aXRoIGVuY3J5cHRpb24gdGhyZWFkcy4ARGF0YWJhc2UgZGVmYXVsdCBlbmNyeXB0aW9uIGNhbm5vdCBiZSBzZXQgdG8gWSAoTWFzdGVyIEtleSBlbmNyeXB0aW9uKSB3aGlsZSBkZWZhdWx0X3RhYmxlX2VuY3J5cHRpb24gaXMgc2V0IHRvIE9OTElORV9UT19LRVlSSU5HLiBJdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGNyZWF0ZSBuZXcgTWFzdGVyIEtleSBlbmNyeXB0ZWQgdGFibGVzIGlmIHRoZSBpbnRlbnRpb24gaXMgdG8gcmUtZW5jcnlwdCB0aGVtIHRvIEtFWVJJTkcgZW5jcnlwdGlvbi4ARGF0YWJhc2UgZGVmYXVsdCBlbmNyeXB0aW9uIGNhbm5vdCBiZSBzZXQgdG8gTiAoZXhwbGljaXRseSByZXF1ZXN0IGZvciB0YWJsZXMgaW4gZGF0YWJhc2UgdG8gYmUgdW5lbmNyeXB0ZWQpIHdoaWxlIGRlZmF1bHRfdGFibGVfZW5jcnlwdGlvbiBpcyBzZXQgdG8gT05MSU5FX1RPX0tFWVJJTkcuIElmIHlvdSB3YW50IHRvIGV4Y2x1ZGUgdGFibGUgZnJvbSBiZWluZyBlbmNyeXB0ZWQgYnkgZW5jcnlwdGlvbiB0aHJlYWRzIHlvdSBjYW4gc3RpbGwgZG8gaXQgd2hpbGUgY3JlYXRpbmcgdGFibGUuIEZvciB0aGF0IHlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSBFTkNSWVBUSU9OPSdOJyB3aGlsZSBjcmVhdGluZyBhIHRhYmxlLgBUYWJsZXNwYWNlICVzIGNhbm5vdCBoYXZlIGl0cyBFTkNSWVBUSU9OIGFsdGVyZWQgYXMgaXQgaXMgYmVpbmcgY3VycmVudGx5IGVuY3J5cHRlZC9kZWNyeXB0ZWQgYnkgZW5jcnlwdGlvbiB0aHJlYWRzLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLgBFbmNyeXB0aW9uIG9wdGlvbiBpcyBub3QgYWxsb3dlZC4gJXMAVGhlIG51bWJlciBvZiByZWNvcmRzIGdlbmVyYXRlZCBieSBQRVJDT05BX1NFUVVFTkNFX1RBQkxFKCkgY2Fubm90IGV4Y2VlZCAlbGx1ICglbGx1IHJlcXVlc3RlZCkuIFRyeSBpbmNyZWFzaW5nIEBAdGZfc2VxdWVuY2VfdGFibGVfbWF4X3VwcGVyX2JvdW5kIHRvIGEgbGFyZ2VyIHZhbHVlLgBJbm5vREIgc3lzdGVtIGtleSAlbHUgY2Fubm90IGJlIHJvdGF0ZWQsIGJlY2F1c2UgaXQgZG9lcyBub3QgZXhpc3QuAElubm9EQiBzeXN0ZW0ga2V5IGNhbm5vdCBoYXZlIHZhbHVlIGdyZWF0ZXIgdGhhbiA0Mjk0OTY3Mjk0LgBDYW5ub3QgZ2VuZXJhdGUgbmV3IHZlcnNpb24gb2Ygc3lzdGVtIGtleSAlbHUuIEtleXJpbmcgcmVwb3J0ZWQgYW4gZXJyb3IuIFBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGF2YWlsYWJsZS4AVGhlIHJlcXVlc3RlZCB2YWx1ZSAlbHUgZm9yIHRoZSBlbmNyeXB0aW9uX2tleV9pZCBleGNlZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgJWx1AFdyYXBwZWQgVURGIGV4Y2VwdGlvbiBpbiBmdW5jdGlvbiAnJS0uMTkycyc7ICUtLjgwcwBNdWx0aSB0YWJsZSBkcm9wIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiAnJXMnIG9wdGlvbiBpcyBlbmFibGVkAFRoZSBudW1iZXIgb2YgcHJvdmlkZWQgZXJyb3IgY29kZXMgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkICVsdQBQcm92aWRlZCBlcnJvciBjb2RlIGlzIGJpZ2dlciB0aGFuIG1heGltdW0gYWxsb3dlZCAlbHUAVGhlIHJvbGUgJXMgaXMgYSBkeW5hbWljIHJvbGUgYW5kIGNhbid0IGJlIHJldm9rZWQgb3IgZHJvcHBlZC4gSXQgc2hvdWxkIGJlIG1hbmFnZWQgYnkgdGhlIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiBpbnN0ZWFkLgBUaGUgLS1zZWN1cmUtZmlsZS1wYXRoIGlzIGNvbmZpZ3VyZWQsICVzIG11c3QgYmUgc2V0IGFjY29yZGluZ2x5LgBLZXlzIGFyZSBvdXQgb3JkZXIgZHVyaW5nIGJ1bGsgbG9hZABCdWxrIGxvYWQgcm93cyBvdmVybGFwIGV4aXN0aW5nIHJvd3MAQ2FuJ3QgZXhlY3V0ZSB1cGRhdGVzIG9uIG1hc3RlciB3aXRoIGJpbmxvZ19mb3JtYXQgIT0gUk9XLgBNeVJvY2tzIHN1cHBvcnRzIG9ubHkgUkVBRCBDT01NSVRURUQgYW5kIFJFUEVBVEFCTEUgUkVBRCBpc29sYXRpb24gbGV2ZWxzLiBQbGVhc2UgY2hhbmdlIGZyb20gY3VycmVudCBpc29sYXRpb24gbGV2ZWwgJXMAV2hlbiB1bmlxdWUgY2hlY2tpbmcgaXMgZGlzYWJsZWQgaW4gTXlSb2NrcywgSU5TRVJULFVQREFURSxMT0FEIHN0YXRlbWVudHMgd2l0aCBjbGF1c2VzIHRoYXQgdXBkYXRlIG9yIHJlcGxhY2UgdGhlIGtleSAoaS5lLiBJTlNFUlQgT04gRFVQTElDQVRFIEtFWSBVUERBVEUsIFJFUExBQ0UpIGFyZSBub3QgYWxsb3dlZC4gUXVlcnk6ICVzAENhbid0IGV4ZWN1dGUgdXBkYXRlcyB3aGVuIHlvdSBzdGFydGVkIGEgdHJhbnNhY3Rpb24gd2l0aCBTVEFSVCBUUkFOU0FDVElPTiBXSVRIIENPTlNJU1RFTlQgW1JPQ0tTREJdIFNOQVBTSE9ULgBUaGlzIHRyYW5zYWN0aW9uIHdhcyByb2xsZWQgYmFjayBhbmQgY2Fubm90IGJlIGNvbW1pdHRlZC4gT25seSBzdXBwb3J0ZWQgb3BlcmF0aW9uIGlzIHRvIHJvbGwgaXQgYmFjaywgc28gYWxsIHBlbmRpbmcgY2hhbmdlcyB3aWxsIGJlIGRpc2NhcmRlZC4gUGxlYXNlIHJlc3RhcnQgYW5vdGhlciB0cmFuc2FjdGlvbi4ATXlSb2NrcyBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCBST0xMQkFDSyBUTyBTQVZFUE9JTlQgaWYgbW9kaWZ5aW5nIHJvd3MuAE9ubHkgUkVQRUFUQUJMRSBSRUFEIGlzb2xhdGlvbiBsZXZlbCBpcyBzdXBwb3J0ZWQgZm9yIFNUQVJUIFRSQU5TQUNUSU9OIFdJVEggQ09OU0lTVEVOVCBTTkFQU0hPVCBpbiBSb2Nrc0RCIFN0b3JhZ2UgRW5naW5lLgBVbnN1cHBvcnRlZCBjb2xsYXRpb24gb24gc3RyaW5nIGluZGV4ZWQgY29sdW1uICVzLiVzIFVzZSBiaW5hcnkgY29sbGF0aW9uICglcykuAFRhYmxlICclcycgZG9lcyBub3QgZXhpc3QsIGJ1dCBtZXRhZGF0YSBpbmZvcm1hdGlvbiBleGlzdHMgaW5zaWRlIE15Um9ja3MuIFRoaXMgaXMgYSBzaWduIG9mIGRhdGEgaW5jb25zaXN0ZW5jeS4ATXlSb2NrcyBmYWlsZWQgY3JlYXRpbmcgbmV3IGtleSBkZWZpbml0aW9ucyBkdXJpbmcgYWx0ZXIuAE15Um9ja3MgZmFpbGVkIHBvcHVsYXRpbmcgc2Vjb25kYXJ5IGtleSBkdXJpbmcgYWx0ZXIuAENvbHVtbiBmYW1pbHkgKCclLipzJykgZmxhZyAoJWQpIGlzIGRpZmZlcmVudCBmcm9tIGFuIGV4aXN0aW5nIGZsYWcgKCVkKS4gQXNzaWduIGEgbmV3IENGIGZsYWcsIG9yIGRvIG5vdCBjaGFuZ2UgZXhpc3RpbmcgQ0YgZmxhZy4AVFRMIHN1cHBvcnQgaXMgY3VycmVudGx5IGRpc2FibGVkIHdoZW4gdGFibGUgaGFzIGEgaGlkZGVuIFBLLgBUVEwgY29sdW1uICglcykgaW4gTXlSb2NrcyBtdXN0IGJlIGFuIHVuc2lnbmVkIG5vbi1udWxsIDY0LWJpdCBpbnRlZ2VyIG9yIG5vbi1udWxsIHRpbWVzdGFtcCwgZXhpc3QgaW5zaWRlIHRoZSB0YWJsZSwgYW5kIGhhdmUgYW4gYWNjb21wYW55aW5nIHR0bCBkdXJhdGlvbi4AVFRMIGR1cmF0aW9uICglcykgaW4gTXlSb2NrcyBtdXN0IGJlIGFuIHVuc2lnbmVkIG5vbi1udWxsIDY0LWJpdCBpbnRlZ2VyLgBUaGUgcGVyLWluZGV4IGNvbHVtbiBmYW1pbHkgb3B0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQuAENvbHVtbiBmYW1pbHkgKCclcycpIGlzIGJlaW5nIGRyb3BwZWQuAENhbm5vdCBkcm9wIENvbHVtbiBmYW1pbHkgKCclcycpIGJlY2F1c2UgaXQgaXMgaW4gdXNlIG9yIGRvZXMgbm90IGV4aXN0LgBQYXJzZXIgc2F3OiAlcwBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBib290c3RyYXAgKGVycm5vOiAlZCkAVHJpZ2dlciBmb3IgdGFibGUgJyVzJy4nJXMnOiBpbnZhbGlkICVzIHZhbHVlICglcykuAFdyb25nIHRyZWU6ICVzAEVycm9yOiBJbnZhbGlkICVzAFNraXAgcmUtcG9wdWxhdGluZyBjb2xsYXRpb25zIGFuZCBjaGFyYWN0ZXIgc2V0cyB0YWJsZXMgaW4gJXMlc3JlYWQtb25seSBtb2RlLgBVc2luZyBkYXRhIGRpY3Rpb25hcnkgd2l0aCB2ZXJzaW9uICclZCcuAEluc3RhbGxlZCBkYXRhIGRpY3Rpb25hcnkgd2l0aCB2ZXJzaW9uICVkAERhdGEgRGljdGlvbmFyeSB2ZXJzaW9uICclZCcgbm90IHN1cHBvcnRlZC4ARmFpbGVkIHRvIHNldCBzeXNsb2cgZmFjaWxpdHkgdG8gIiVzIiwgc2V0dGluZyB0byAiJXMiICglZCkgaW5zdGVhZC4AQ2Fubm90IG9wZW4gJXM7IGNoZWNrIHByaXZpbGVnZXMsIG9yIHJlbW92ZSBzeXNldmVudGxvZyBmcm9tIC0tbG9nLWVycm9yLXNlcnZpY2VzIQAgZWl0aGVyIHJlc3RhcnQgdGhlIHF1ZXJ5IGxvZ2dpbmcgYnkgdXNpbmcgIlNFVCBHTE9CQUwgU0xPV19RVUVSWV9MT0c9T04iIG9yACBlaXRoZXIgcmVzdGFydCB0aGUgcXVlcnkgbG9nZ2luZyBieSB1c2luZyAiU0VUIEdMT0JBTCBHRU5FUkFMX0xPRz1PTiIgb3IARmFpbGVkIHRvIHdyaXRlIHRvICVzOiAlcwBXaGlsZSBpbml0aWFsaXppbmcgZHVtcCB0aHJlYWQgZm9yIHJlcGxpY2Egd2l0aCAlcyA8JXM+LCBmb3VuZCBhIHpvbWJpZSBkdW1wIHRocmVhZCB3aXRoIHRoZSBzYW1lICVzLiBTb3VyY2UgaXMga2lsbGluZyB0aGUgem9tYmllIGR1bXAgdGhyZWFkKCV1KS4AR3RpZCB0YWJsZSBpcyBub3QgcmVhZHkgdG8gYmUgdXNlZC4gVGFibGUgJyVzLiVzJyBjYW5ub3QgYmUgb3BlbmVkLgBTeXN0ZW0gc2NoZW1hIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdC4ARXJyb3IgaW4gaW5pdGlhbGl6aW5nIGRpY3Rpb25hcnksIHVwZ3JhZGUgd2lsbCBkbyBhIGNsZWFudXAgYW5kIGV4aXQAVmlldyAnJXMnLiclcyc6IHVua25vd24gY2hhcnNldCBuYW1lIGFuZC9vciBjb2xsYXRpb24gbmFtZSAoY2xpZW50OiAnJXMnOyBjb25uZWN0aW9uOiAnJXMnKS4ARXJyb3IgaW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIGNoYXJhY3RlciBzZXQgbmFtZSBmb3IgdmlldyAlcy4lcy4ARGF0YSBEaWN0aW9uYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxlZC4ARmFpbGVkIHRvIHVwZGF0ZSBwbHVnaW4gbWV0YWRhdGEgaW4gZGljdGlvbmFyeSB0YWJsZXMuAEZhaWxlZCB0byBQb3B1bGF0ZSBERCB0YWJsZXMuAEVycm9yIGluIENyZWF0aW5nIFZpZXcgJXMuJXMAVW5hYmxlIHRvIHN0YXJ0IHNlcnZlci4gQ2Fubm90IGZpbmQgdGhlIG1ldGEgZGF0YSBmb3IgZGF0YSBkaWN0aW9uYXJ5IHRhYmxlICclcycuAERpY3Rpb25hcnkgY2FjaGUgbm90IGVtcHR5IGF0IHNodXRkb3duLgBEaWN0aW9uYXJ5IG9iamVjdHMgdXNlZCBidXQgbm90IHJlbGVhc2VkLgBEaWN0aW9uYXJ5IG9iamVjdHMgbGVmdCBpbiBkZWZhdWx0IHJlbGVhc2VyLgBEaWN0aW9uYXJ5IG9iamVjdCBhdXRvIHJlbGVhc2VyIG5vdCBkZWxldGVkAEVycm9yOiBVbmFibGUgdG8gY3JlYXRlIHByaW1hcnkgb2JqZWN0IGtleQBFcnJvcjogVW5hYmxlIHRvIGNyZWF0ZSBvYmplY3Qga2V5AENhbid0IGNyZWF0ZSBoYW5kbGVfbWFuYWdlciB0aHJlYWQgKGVycm5vPSAlZCkASXQgaXMgbm90IHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgdHlwZSBvZiB0aGUgcmVsYXkgbG9nJ3MgcmVwb3NpdG9yeSBiZWNhdXNlIHRoZXJlIGFyZSB3b3JrZXJzJyByZXBvc2l0b3JpZXMgd2l0aCBnYXBzLiBQbGVhc2UsIGZpeCB0aGUgZ2FwcyBmaXJzdCBiZWZvcmUgZG9pbmcgc3VjaCBjaGFuZ2UuAG9wdGlvbiAnZW5mb3JjZS1ndGlkLWNvbnNpc3RlbmN5JzogdmFsdWUgJyVzJyB3YXMgbm90IHJlY29nbml6ZWQuIFNldHRpbmcgZW5mb3JjZS1ndGlkLWNvbnNpc3RlbmN5IHRvIE9GRi4AQ2hhbmdlZCBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgZnJvbSAlcyB0byAlcy4AQ2hhbmdlZCBHVElEX01PREUgZnJvbSAlcyB0byAlcy4AJXMgaXMgc2V0IHRvIGEgZGlzYWJsZWQgc3RvcmFnZSBlbmdpbmUgJXMuAERlYnVnIHN5bmMgcG9pbnRzIGhpdDogICAgICAgICAgICAgICAgICAgJTIycwBEZWJ1ZyBzeW5jIHBvaW50cyBleGVjdXRlZDogICAgICAgICAgICAgICUyMnMARGVidWcgc3luYyBwb2ludHMgbWF4IGFjdGl2ZSBwZXIgdGhyZWFkOiAlMjJzAERlYnVnIFN5bmMgRmFjaWxpdHkgZGlzYWJsZWQgZHVlIHRvIGxhY2sgb2YgbWVtb3J5LgBDYW4ndCBpbml0IHRjIGxvZwBFdmVudCBTY2hlZHVsZXI6IENhbid0IGluaXRpYWxpemUgdGhlIGV4ZWN1dGlvbiBxdWV1ZQBFdmVudCBTY2hlZHVsZXI6IFB1cmdpbmcgdGhlIHF1ZXVlLiAldSBldmVudHMARXZlbnQgU2NoZWR1bGVyOiBMYXN0IGV4ZWN1dGlvbiBvZiAlcy4lcy4gJXMAJSpzAEV2ZW50IFNjaGVkdWxlcjogWyVzXS5bJXMuJXNdIGV2ZW50IGV4ZWN1dGlvbiBmYWlsZWQuAEV2ZW50IFNjaGVkdWxlcjogQ2Fubm90IGluaXRpYWxpemUgdGhlIHNjaGVkdWxlciB0aHJlYWQARXZlbnQgU2NoZWR1bGVyOiBTdG9wcGVkAEV2ZW50IHNjaGVkdWxlcjogRmFpbGVkIHRvIHN0YXJ0IHNjaGVkdWxlciwgQ2FuIG5vdCBjcmVhdGUgdGhyZWFkIGZvciBldmVudCBzY2hlZHVsZXIgKGVycm5vPSVkKQBFdmVudCBTY2hlZHVsZXI6IFdhaXRpbmcgZm9yIHRoZSBzY2hlZHVsZXIgdGhyZWFkIHRvIHJlcGx5AEV2ZW50IFNjaGVkdWxlcjogc2NoZWR1bGVyIHRocmVhZCBzdGFydGVkIHdpdGggaWQgJXUARXZlbnQgU2NoZWR1bGVyOiBTZXJpb3VzIGVycm9yIGR1cmluZyBnZXR0aW5nIG5leHQgZXZlbnQgdG8gZXhlY3V0ZS4gU3RvcHBpbmcARXZlbnRfc2NoZWR1bGVyOjpleGVjdXRlX3RvcDogQ2FuIG5vdCBjcmVhdGUgZXZlbnQgd29ya2VyIHRocmVhZCAoZXJybm89JWQpLiBTdG9wcGluZyBldmVudCBzY2hlZHVsZXIARXZlbnQgU2NoZWR1bGVyOiBLaWxsaW5nIHRoZSBzY2hlZHVsZXIgdGhyZWFkLCB0aHJlYWQgaWQgJXUASVAgYWRkcmVzcyAnJXMnIGNvdWxkIG5vdCBiZSByZXNvbHZlZDogJXMASG9zdCBuYW1lICclcycgY291bGQgbm90IGJlIHJlc29sdmVkOiAlcwBJUCBhZGRyZXNzICclcycgaGFzIGJlZW4gcmVzb2x2ZWQgdG8gdGhlIGhvc3QgbmFtZSAnJXMnLCB3aGljaCByZXNlbWJsZXMgSVB2NC1hZGRyZXNzIGl0c2VsZi4ASG9zdG5hbWUgJyVzJyBkb2VzIG5vdCByZXNvbHZlIHRvICclcycuAEhvc3RuYW1lICclcycgaGFzIHRoZSBmb2xsb3dpbmcgSVAgYWRkcmVzc2VzOgAgLSAlcwBEZWZpbmVyIGNsYXVzZSBpcyBtaXNzaW5nIGluIFRyaWdnZXIgb2YgVGFibGUgJXMuIFJlYnVpbGQgVHJpZ2dlciB0byBmaXggZGVmaW5lci4AQ2xpZW50IGNoYXJhY3RlciBzZXQgaXMgbWlzc2luZyBmb3IgdHJpZ2dlciBvZiB0YWJsZSAlcy4gVXNpbmcgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0LgBFcnJvciBpbiBwYXJzaW5nIHZpZXcgJXMuJXMARmFpbGVkIHRvIGJvb3RzdHJhcCBjb21wb25lbnRzIGluZnJhc3RydWN0dXJlLgBGYWlsZWQgdG8gc2h1dGRvd24gY29tcG9uZW50cyBpbmZyYXN0cnVjdHVyZS4ARmFpbGVkIHRvIGJvb3RzdHJhcCBwZXJzaXN0ZW50IGNvbXBvbmVudHMgbG9hZGVyLgBHaXZpbmcgJWQgY2xpZW50IHRocmVhZHMgYSBjaGFuY2UgdG8gZGllIGdyYWNlZnVsbHkAQ0EgY2VydGlmaWNhdGUgJXMgaXMgc2VsZiBzaWduZWQuAEZhaWxlZCB0byBzZXQgdXAgU1NMIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBTU0wgbGlicmFyeSBlcnJvcjogJXMARmFpbGVkIHRvIGdlbmVyYXRlIGEgc2VydmVyIFVVSUQgYmVjYXVzZSBpdCBpcyBmYWlsZWQgdG8gYWxsb2NhdGUgdGhlIFRIRC4AU2FsdGluZyB1dWlkIGdlbmVyYXRvciB2YXJpYWJsZXMsIGN1cnJlbnRfcGlkOiAlbHUsIHNlcnZlcl9zdGFydF90aW1lOiAlbHUsIGJ5dGVzX3NlbnQ6ICVsbHUsIABHZW5lcmF0ZWQgdXVpZDogJyVzJywgc2VydmVyX3N0YXJ0X3RpbWU6ICVsdSwgYnl0ZXNfc2VudDogJWxsdQBUaGUgc2VydmVyX3V1aWQgc3RvcmVkIGluIGF1dG8uY25mIGZpbGUgaXMgbm90IGEgdmFsaWQgVVVJRC4AR2FyYmFnZSBjaGFyYWN0ZXJzIGZvdW5kIGF0IHRoZSBlbmQgb2YgdGhlIHNlcnZlcl91dWlkIHZhbHVlIGluIGF1dG8uY25mIGZpbGUuIEl0IHNob3VsZCBiZSBvZiBsZW5ndGggJyVkJyAoVVVJRF9MRU5HVEgpLiBDbGVhciBpdCBhbmQgcmVzdGFydCB0aGUgc2VydmVyLiAATm8gZXhpc3RpbmcgVVVJRCBoYXMgYmVlbiBmb3VuZCwgc28gd2UgYXNzdW1lIHRoYXQgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGF0IHRoaXMgc2VydmVyIGhhcyBiZWVuIHN0YXJ0ZWQuIEdlbmVyYXRpbmcgYSBuZXcgVVVJRDogJXMuAEluaXRpYWxpemF0aW9uIG9mIHRoZSBzZXJ2ZXIncyBVVUlEIGZhaWxlZCBiZWNhdXNlIGl0IGNvdWxkIG5vdCBiZSByZWFkIGZyb20gdGhlIGF1dG8uY25mIGZpbGUuIElmIHRoaXMgaXMgYSBuZXcgc2VydmVyLCB0aGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkIGJlY2F1c2UgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBnZW5lcmF0ZSBhIG5ldyBVVUlELgBVbmtub3duL3Vuc3VwcG9ydGVkIHN0b3JhZ2UgZW5naW5lOiAlcwBVbnN1cHBvcnRlZCB2YWx1ZSAwIGZvciBzZWN1cmUtYXV0aABJbnZhbGlkIGluc3RydW1lbnQgbmFtZSBvciB2YWx1ZSBmb3IgcGVyZm9ybWFuY2Vfc2NoZW1hX2luc3RydW1lbnQgJyVzJy4AVGhlIHVzZSBvZiBJbm5vREIgaXMgbWFuZGF0b3J5IHNpbmNlIE15U1FMIDUuNy4gVGhlIGZvcm1lciBvcHRpb25zIGxpa2UgJy0taW5ub2RiPTAvMS9PRkYvT04nIG9yICctLXNraXAtaW5ub2RiJyBhcmUgaWdub3JlZC4AaWdub3JlLWJ1aWx0aW4taW5ub2RiIGlzIGlnbm9yZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgcmVsZWFzZXMuAEludmFsaWQgb2xkX3Bhc3N3b3JkcyBtb2RlOiAxLiBWYWxpZCB2YWx1ZXMgYXJlIDIgYW5kIDAALS12ZXJib3NlIGlzIGZvciB1c2Ugd2l0aCAtLWhlbHA7IGRpZCB5b3UgbWVhbiAtLWxvZy1lcnJvci12ZXJib3NpdHk/AG9wdGlvbnMgLS1sb2ctc2xvdy1hZG1pbi1zdGF0ZW1lbnRzLCAtLWxvZy1xdWVyaWVzLW5vdC11c2luZy1pbmRleGVzLCAtLWxvZy1zbG93LXJlcGxpY2Etc3RhdGVtZW50cyBhbmQgLS1sb2ctcXVlcnktZXJyb3JzIGhhdmUgbm8gZWZmZWN0IGlmIC0tc2xvdy1xdWVyeS1sb2cgaXMgbm90IHNldABuZXRfYnVmZmVyX2xlbmd0aCAoJWx1KSBpcyBzZXQgdG8gYmUgbGFyZ2VyIHRoYW4gbWF4X2FsbG93ZWRfcGFja2V0ICglbHUpLiBQbGVhc2UgcmVjdGlmeS4AVElNRVNUQU1QIHdpdGggaW1wbGljaXQgREVGQVVMVCB2YWx1ZSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIC0tZXhwbGljaXRfZGVmYXVsdHNfZm9yX3RpbWVzdGFtcCBzZXJ2ZXIgb3B0aW9uIChzZWUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzKS4ASW52YWxpZCBmdC1ib29sZWFuLXN5bnRheCBzdHJpbmc6ICVzACdOT19BVVRPX0NSRUFURV9VU0VSJyBzcWwgbW9kZSB3YXMgbm90IHNldC4AQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgY29ubmVjdGlvbiBoYW5kbGluZwBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0aHJlYWQgaGFuZGxpbmcAQ2FuJ3QgY3JlYXRlIHRlc3QgZmlsZSAlcwBDYW4ndCBzdGFydCBzZXJ2ZXI6IGNhbid0IGNyZWF0ZSBQSUQgZmlsZTogJXMAVW5hYmxlIHRvIGRlbGV0ZSBwaWQgZmlsZTogJXMAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgc2h1dGRvd24gcmVxdWVzdHMgKGVycm5vPSAlZCkARmFpbGVkIHRvIGFjY2VzcyBkaXJlY3RvcnkgZm9yIC0tJXMuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCBkaXJlY3RvcnkgZXhpc3RzIGFuZCBpcyBhY2Nlc3NpYmxlIGJ5IE15U1FMIFNlcnZlci4gU3VwcGxpZWQgdmFsdWUgOiAlcwBJZ25vcmluZyAtLSVzIHZhbHVlIGFzIHNlcnZlciBpcyBydW5uaW5nIHdpdGggLS1pbml0aWFsaXplKC1pbnNlY3VyZSkuAEluc2VjdXJlIGNvbmZpZ3VyYXRpb24gZm9yIC0tJXM6IEN1cnJlbnQgdmFsdWUgZG9lcyBub3QgcmVzdHJpY3QgbG9jYXRpb24gb2YgZ2VuZXJhdGVkIGZpbGVzLiBDb25zaWRlciBzZXR0aW5nIGl0IHRvIGEgdmFsaWQsIG5vbi1lbXB0eSBwYXRoLgAtLSVzIGlzIHNldCB0byBOVUxMLiBPcGVyYXRpb25zIHJlbGF0ZWQgdG8gaW1wb3J0aW5nIGFuZCBleHBvcnRpbmcgZGF0YSBhcmUgZGlzYWJsZWQASW5zZWN1cmUgY29uZmlndXJhdGlvbiBmb3IgLS0lczogJXMgaXMgYWNjZXNzaWJsZSB0aHJvdWdoIC0tJXMuIENvbnNpZGVyIGNob29zaW5nIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4ARmFpbGVkIHRvIGdldCBzdGF0IGZvciBkaXJlY3RvcnkgcG9pbnRlZCBvdXQgYnkgLS0lcwBJbnNlY3VyZSBjb25maWd1cmF0aW9uIGZvciAtLSVzOiBMb2NhdGlvbiBpcyBhY2Nlc3NpYmxlIHRvIGFsbCBPUyB1c2Vycy4gQ29uc2lkZXIgY2hvb3NpbmcgYSBkaWZmZXJlbnQgZGlyZWN0b3J5LgBWYWx1ZSBmb3IgLS0lcyBpcyBsb25nZXIgdGhhbiBtYXhpbXVtIGxpbWl0IG9mICVkAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIG5hbWVkIHBpcGVzIChlcnJubz0gJWQpAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIFRDUC9JUCAoZXJybm89ICVkKQBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBzaGFyZWQgbWVtb3J5IChlcnJubz0gJWQpAENhbid0IGNyZWF0ZSBpbnRlcnJ1cHQtdGhyZWFkIChlcnJvciAlZCwgZXJybm86ICVkKQBXb3JsZC13cml0YWJsZSBjb25maWcgZmlsZSAnJXMnIGhhcyBiZWVuIHJlbW92ZWQuAHNldHJsaW1pdCBjb3VsZCBub3QgY2hhbmdlIHRoZSBzaXplIG9mIGNvcmUgZmlsZXMgdG8gJ2luZmluaXR5JzsgIFdlIG1heSBub3QgYmUgYWJsZSB0byBnZW5lcmF0ZSBhIGNvcmUgZmlsZSBvbiBzaWduYWxzAFdyb25nIGRhdGUvdGltZSBmb3JtYXQgc3BlY2lmaWVyOiAlcwBDb3VsZCBub3QgYWxsb2NhdGUgcmVwbGljYXRpb24gYW5kIGJpbmxvZyBmaWx0ZXJzOiAlcwBDYW5ub3QgYWxsb2NhdGUgdGhlIGtleWNhY2hlAEN1cnJlbnQgdGltZSBoYXMgZ290IHBhc3QgeWVhciAyMDM4LiBWYWxpZGF0aW5nIGN1cnJlbnQgdGltZSB3aXRoICVkIGl0ZXJhdGlvbnMgYmVmb3JlIGluaXRpYXRpbmcgdGhlIG5vcm1hbCBzZXJ2ZXIgc2h1dGRvd24gcHJvY2Vzcy4ASXRlcmF0aW9uICVkOiBPYnRhaW5lZCB2YWxpZCBjdXJyZW50IHRpbWUgZnJvbSBzeXN0ZW0ASXRlcmF0aW9uICVkOiBDdXJyZW50IHRpbWUgb2J0YWluZWQgZnJvbSBzeXN0ZW0gaXMgZ3JlYXRlciB0aGFuIDIwMzgAVGhpcyBNeVNRTCBzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IGRhdGVzIGxhdGVyIHRoZW4gMjAzOAAlcyAobXlzcWxkICVzKSBzdGFydGluZyBhcyBwcm9jZXNzICVsdQBTaHV0dGluZyBkb3duIHJlcGxpY2EgdGhyZWFkcwBGb3JjZWZ1bGx5IGRpc2Nvbm5lY3RpbmcgJWQgcmVtYWluaW5nIGNsaWVudHMAQWJvcnRpbmcAQmlubG9nIGVuZABnZXRob3N0bmFtZSBmYWlsZWQsIHVzaW5nICclcycgYXMgaG9zdG5hbWUAT25lIGNhbiBvbmx5IHVzZSB0aGUgLS11c2VyIHN3aXRjaCBpZiBydW5uaW5nIGFzIHJvb3QARmF0YWwgZXJyb3I6IFBsZWFzZSByZWFkICJTZWN1cml0eSIgc2VjdGlvbiBvZiB0aGUgbWFudWFsIHRvIGZpbmQgb3V0IGhvdyB0byBydW4gbXlzcWxkIGFzIHJvb3QhAEZhdGFsIGVycm9yOiBDYW4ndCBjaGFuZ2UgdG8gcnVuIGFzIHVzZXIgJyVzJyA7ICBQbGVhc2UgY2hlY2sgdGhhdCB0aGUgdXNlciBleGlzdHMhAFNlcnZlciBpcyBzdGFydGVkIHdpdGggLS1yZXF1aXJlLXNlY3VyZS10cmFuc3BvcnQ9T04gYnV0IG5vIHNlY3VyZSB0cmFuc3BvcnRzIChTU0wgb3IgU2hhcmVkIE1lbW9yeSkgYXJlIGNvbmZpZ3VyZWQuAHNldGdpZDogJXMAc2V0dWlkOiAlcwBzZXRyZWdpZDogJXMAc2V0cmV1aWQ6ICVzAGNocm9vdDogJXMAVENQL0lQLCAtLXNoYXJlZC1tZW1vcnksIG9yIC0tbmFtZWQtcGlwZSBzaG91bGQgYmUgY29uZmlndXJlZCBvbiBOVCBPUwBDVFJMLUMgaWdub3JlZCBkdXJpbmcgc3RhcnR1cAAnJXMnIGNhbiBub3QgYmUgdXNlZCBhcyBjbGllbnQgY2hhcmFjdGVyIHNldC4gJyVzJyB3aWxsIGJlIHVzZWQgYXMgZGVmYXVsdCBjbGllbnQgY2hhcmFjdGVyIHNldC4AT3V0IG9mIG1lbW9yeQBGYWlsZWQgdG8gbG9jayBtZW1vcnkuIEVycm5vOiAlZABteV9pbml0KCkgZmFpbGVkLgBFeGVjdXRpb24gb2YgaW5pdF9maWxlICclcycgc3RhcnRlZC4ARXhlY3V0aW9uIG9mIGluaXRfZmlsZSAnJXMnIGVuZGVkLgBDaGFuZ2VkIGxpbWl0czogbWF4X29wZW5fZmlsZXM6ICVsdSAocmVxdWVzdGVkICVsdSkAQ291bGQgbm90IGluY3JlYXNlIG51bWJlciBvZiBtYXhfb3Blbl9maWxlcyB0byBtb3JlIHRoYW4gJWx1IChyZXF1ZXN0OiAlbHUpAENoYW5nZWQgbGltaXRzOiBtYXhfY29ubmVjdGlvbnM6ICVsdSAocmVxdWVzdGVkICVsdSkAQ2hhbmdlZCBsaW1pdHM6IHRhYmxlX29wZW5fY2FjaGU6ICVsdSAocmVxdWVzdGVkICVsdSkASWdub3JpbmcgdXNlciBjaGFuZ2UgdG8gJyVzJyBiZWNhdXNlIHRoZSB1c2VyIHdhcyBzZXQgdG8gJyVzJyBlYXJsaWVyIG9uIHRoZSBjb21tYW5kIGxpbmUAQ291bGQgbm90IGFkZCBkbyB0YWJsZSBydWxlICclcychAENvdWxkIG5vdCBhZGQgaWdub3JlIHRhYmxlIHJ1bGUgJyVzJyEAVGhlIHZhcmlhYmxlIHNlc3Npb25fdHJhY2tfc3lzdGVtX3ZhcmlhYmxlcyBlaXRoZXIgaGFzIGR1cGxpY2F0ZSB2YWx1ZXMgb3IgaW52YWxpZCB2YWx1ZXMuAFRvbyBtYW55IGFyZ3VtZW50cyAoZmlyc3QgZXh0cmEgaXMgJyVzJykuAFVzZSAtLXZlcmJvc2UgLS1oZWxwIHRvIGdldCBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMhAFVuYWJsZSB0byByZWFkIGVycm1zZy5zeXMgZmlsZQBDYW4ndCBpbml0IGRhdGFiYXNlcwBUaGVyZSB3ZXJlIG90aGVyIHZhbHVlcyBzcGVjaWZpZWQgdG8gbG9nLW91dHB1dCBiZXNpZGVzIE5PTkUuIERpc2FibGluZyBzbG93IGFuZCBnZW5lcmFsIGxvZ3MgYW55d2F5LgBDU1YgZW5naW5lIGlzIG5vdCBwcmVzZW50LCBmYWxsaW5nIGJhY2sgdG8gdGhlIGxvZyBmaWxlcwBCYWQgc3ludGF4IGluIHJlcGxpY2F0ZS1yZXdyaXRlLWRiIC0gbWlzc2luZyAnLT4nIQBCYWQgc3ludGF4IGluIHJlcGxpY2F0ZS1yZXdyaXRlLWRiIC0gZW1wdHkgRlJPTSBkYiEAQmFkIHN5bnRheCBpbiByZXBsaWNhdGUtcmV3cml0ZS1kYiAtIGVtcHR5IFRPIGRiIQBBbHRob3VnaCBhIHBhdGggd2FzIHNwZWNpZmllZCBmb3IgdGhlICVzLCBsb2cgdGFibGVzIGFyZSB1c2VkLiBUbyBlbmFibGUgbG9nZ2luZyB0byBmaWxlcyB1c2UgdGhlIC0tbG9nLW91dHB1dD1maWxlIG9wdGlvbi4ASW52YWxpZCB2YWx1ZSBmb3IgJXM6ICVzAFRoZSBzZXJ2ZXIgb3B0aW9uICdsb3dlcl9jYXNlX3RhYmxlX25hbWVzJyBpcyBjb25maWd1cmVkIHRvIHVzZSBjYXNlIHNlbnNpdGl2ZSB0YWJsZSBuYW1lcyBidXQgdGhlIGRhdGEgZGlyZWN0b3J5IGlzIG9uIGEgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbSB3aGljaCBpcyBhbiB1bnN1cHBvcnRlZCBjb21iaW5hdGlvbi4gUGxlYXNlIGNvbnNpZGVyIGVpdGhlciB1c2luZyBhIGNhc2Ugc2Vuc2l0aXZlIGZpbGUgc3lzdGVtIGZvciB5b3VyIGRhdGEgZGlyZWN0b3J5IG9yIHN3aXRjaGluZyB0byBhIGNhc2UtaW5zZW5zaXRpdmUgdGFibGUgbmFtZSBtb2RlLgBTZXR0aW5nIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXM9MiBiZWNhdXNlIGZpbGUgc3lzdGVtIGZvciAlcyBpcyBjYXNlIGluc2Vuc2l0aXZlAGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgd2FzIHNldCB0byAyLCBldmVuIHRob3VnaCB5b3VyIHRoZSBmaWxlIHN5c3RlbSAnJXMnIGlzIGNhc2Ugc2Vuc2l0aXZlLiAgTm93IHNldHRpbmcgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyB0byAwIHRvIGF2b2lkIGZ1dHVyZSBwcm9ibGVtcy4AWW91IG5lZWQgdG8gdXNlIC0tbG9nLWJpbiB0byBtYWtlICVzIHdvcmsuAFBhdGggJyVzJyBpcyBhIGRpcmVjdG9yeSBuYW1lLCBwbGVhc2Ugc3BlY2lmeSBhIGZpbGUgbmFtZSBmb3IgJXMgb3B0aW9uAE5vIGFyZ3VtZW50IHdhcyBwcm92aWRlZCB0byAtLWxvZy1iaW4sIGFuZCAtLWxvZy1iaW4taW5kZXggd2FzIG5vdCB1c2VkOyBzbyByZXBsaWNhdGlvbiBtYXkgYnJlYWsgd2hlbiB0aGlzIE15U1FMIHNlcnZlciBhY3RzIGFzIGEgc291cmNlIGFuZCBoYXMgaGlzIGhvc3RuYW1lIGNoYW5nZWQhISBQbGVhc2UgdXNlICctLWxvZy1iaW49JXMnIHRvIGF2b2lkIHRoaXMgcHJvYmxlbS4AWW91IGhhdmUgZW5hYmxlZCB0aGUgYmluYXJ5IGxvZywgYnV0IHlvdSBoYXZlbid0IHByb3ZpZGVkIHRoZSBtYW5kYXRvcnkgc2VydmVyLWlkLiBQbGVhc2UgcmVmZXIgdG8gdGhlIHByb3BlciBzZXJ2ZXIgc3RhcnQtdXAgcGFyYW1ldGVycyBkb2N1bWVudGF0aW9uAFVuYWJsZSB0byBjcmVhdGUgcmVwbGljYXRpb24gcGF0aCBuYW1lczogb3V0IG9mIG1lbW9yeSBvciBwYXRoIG5hbWVzIHRvbyBsb25nIChwYXRoIG5hbWUgZXhjZWVkcyAlZCBvciBmaWxlIG5hbWUgZXhjZWVkcyAlZCkuAEZhaWxlZCB0byBpbml0aWFsaXplIEdUSUQgc3RydWN0dXJlcy4ARmFpbGVkIHRvIGluaXRpYWxpemUgZWFybHkgcGx1Z2lucy4ARmFpbGVkIHRvIGluaXRpYWxpemUgYnVpbHRpbiBwbHVnaW5zLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkeW5hbWljIHBsdWdpbnMuAFBlcmZvcm1hbmNlIHNjaGVtYSBkaXNhYmxlZCAocmVhc29uOiBpbml0IGZhaWxlZCkuAEFza2VkIGZvciAlbHUgdGhyZWFkIHN0YWNrLCBidXQgZ290ICVsZABmYWlsZWQgdG8gc2V0IGRhdGFkaXIgdG8gJXMAQ2FuJ3QgcmVhZCBkYXRhIGRpcmVjdG9yeSdzIHN0YXRzICglZCk6ICVzLiBBc3N1bWluZyB0aGF0IGl0J3Mgbm90IG93bmVkIGJ5IHRoZSBzYW1lIHVzZXIvZ3JvdXAAQ2FuJ3QgY2hhbmdlIGRhdGEgZGlyZWN0b3J5IG93bmVyIHRvICVzAFNldHRpbmcgcGVyc2lzdGVudCBvcHRpb25zIGZhaWxlZC4ARmFpbGVkIHRvIHNhdmUgdGhlIHNldCBvZiBHbG9iYWwgVHJhbnNhY3Rpb24gSWRlbnRpZmllcnMgb2YgdGhlIGxhc3QgYmluYXJ5IGxvZyBpbnRvIHRoZSBteXNxbC5ndGlkX2V4ZWN1dGVkIHRhYmxlIHdoaWxlIHRoZSBzZXJ2ZXIgd2FzIHNodXR0aW5nIGRvd24uIFRoZSBuZXh0IHNlcnZlciByZXN0YXJ0IHdpbGwgbWFrZSBhbm90aGVyIGF0dGVtcHQgdG8gc2F2ZSBHbG9iYWwgVHJhbnNhY3Rpb24gSWRlbnRpZmllcnMgaW50byB0aGUgdGFibGUuAENhbid0IHN0YXJ0IHNlcnZlcjogSW52YWxpZCB2YWx1ZSBmb3IgLS1kZWZhdWx0LWF1dGhlbnRpY2F0aW9uLXBsdWdpbgBDb3VsZCBub3Qgam9pbiAlc3RocmVhZC4gZXJyb3I6JWQAQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYnVpbGRpbmcgZG9fdGFibGUgYW5kIGlnbm9yZV90YWJsZSBydWxlcyB0byBoYXNoZXMgZm9yIGdsb2JhbCByZXBsaWNhdGlvbiBmaWx0ZXIuAEVycm9yIG9wZW5pbmcgQ0EgY2VydGlmaWNhdGUgZmlsZQBFcnJvciBhY2Nlc3NpbmcgZGlyZWN0b3J5IHBvaW50ZWQgYnkgLS1zc2wtY2FwYXRoAEZvdW5kICVzLCAlcyBhbmQgJXMgaW4gZGF0YSBkaXJlY3RvcnkuIFRyeWluZyB0byBlbmFibGUgU1NMIHN1cHBvcnQgdXNpbmcgdGhlbS4ARmFpbGVkIHRvIGNyZWF0ZSAlcyhmaWxlOiAnJXMnLCBlcnJubyAlZCkARmFpbGVkIHRvIGluaXRpYWxpemUgdGltZXIgY29tcG9uZW50IChlcnJubyAlZCkuAHNlcnZlci1pZCBjb25maWd1cmVkIGlzIHRvbyBsYXJnZSB0byByZXByZXNlbnQgd2l0aCBzZXJ2ZXItaWQtYml0cyBjb25maWd1cmVkLgBEZWZhdWx0JXMgc3RvcmFnZSBlbmdpbmUgKCVzKSBpcyBub3QgYXZhaWxhYmxlAENvdWxkIG5vdCBvcGVuIGZpbGUgJyVzJyBmb3IgZXJyb3IgbG9nZ2luZyVzJXMASW52YWxpZCBsb2cgZmlsZSBuYW1lIGFmdGVyIGV4cGFuZGluZyBzeW1saW5rczogJyVzJwB1c2luZyAtLXJlcGxpY2F0ZS1zYW1lLXNlcnZlci1pZCBpbiBjb25qdW5jdGlvbiB3aXRoIC0tbG9nLXJlcGxpY2EtdXBkYXRlcyBpcyBpbXBvc3NpYmxlLCBpdCB3b3VsZCBsZWFkIHRvIGluZmluaXRlIGxvb3BzIGluIHRoaXMgc2VydmVyLgB1c2luZyAtLXJlcGxpY2F0ZS1zYW1lLXNlcnZlci1pZCBpbiBjb25qdW5jdGlvbiB3aXRoIC0tbG9nLXJlcGxpY2EtdXBkYXRlcyB3b3VsZCBsZWFkIHRvIGluZmluaXRlIGxvb3BzIGluIHRoaXMgc2VydmVyLiBIb3dldmVyIHRoaXMgd2lsbCBiZSBpZ25vcmVkIGFzIHRoZSAtLWxvZy1iaW4gb3B0aW9uIGlzIG5vdCBkZWZpbmVkIG9yIHlvdXIgc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCBnbG9iYWwgdHJhbnNhY3Rpb24gaWRlbnRpZXJzIGVuYWJsZWQuAE5EQiA6IFRhYmxlcyBub3QgYXZhaWxhYmxlIGFmdGVyICVsdSBzZWNvbmRzLiBDb25zaWRlciBpbmNyZWFzaW5nIC0tbmRiLXdhaXQtc2V0dXAgdmFsdWUAJXMAVW5hYmxlIHRvIHN0YXJ0IHNlcnZlci4gVGhlIGRhdGEgZGljdGlvbmFyeSB0YWJsZXNwYWNlICclcycgZG9lcyBub3QgZXhpc3QuAENvbm5lY3Rpb24gY29sbGF0aW9uIGlzIG1pc3NpbmcgZm9yIHRyaWdnZXIgb2YgdGFibGUgJXMuIFVzaW5nIGRlZmF1bHQgY29ubmVjdGlvbiBjb2xsYXRpb24uAERhdGFiYXNlIGNvbGxhdGlvbiBpcyBtaXNzaW5nIGZvciB0cmlnZ2VyIG9mIHRhYmxlICVzLiBVc2luZyBEZWZhdWx0IGNoYXJhY3RlciBzZXQuAEVycm9yIGluIE1lbW9yeSBhbGxvY2F0aW9uIGZvciBEZWZpbmVyICVzIGZvciBUcmlnZ2VyLgBFcnJvciBpbiByZWFkaW5nICVzLlRSRyBmaWxlLgBFcnJvciBpbiBwYXJzaW5nIFRyaWdnZXJzIGZyb20gJXMuVFJHIGZpbGUuAEVycm9yIGluIGNyZWF0aW5nIEREIGVudHJ5IGZvciBUcmlnZ2VyICVzLiVzAFJlc29sdmluZyBkZXBlbmRlbmN5IGZvciB0aGUgdmlldyAnJXMuJXMnIGZhaWxlZC4gVmlldyBpcyBubyBtb3JlIHZhbGlkIHRvIHVzZQAlcy4lcyBoYXMgbm8gZGVmaW5lciAoYXMgcGVyIGFuIG9sZCB2aWV3IGZvcm1hdCkuIEN1cnJlbnQgdXNlciBpcyB1c2VkIGFzIGRlZmluZXIuIFBsZWFzZSByZWNyZWF0ZSB0aGUgdmlldy4AUGx1Z2luICclcycgaW5pdCBmdW5jdGlvbiByZXR1cm5lZCBlcnJvci4ASW5pdGlhbGl6YXRpb24gb2YgdHJhbnNhY3Rpb24gZGVsZWdhdGVzIGZhaWxlZC4gUGxlYXNlIHJlcG9ydCBhIGJ1Zy4ASW5pdGlhbGl6YXRpb24gYmlubG9nIHN0b3JhZ2UgZGVsZWdhdGVzIGZhaWxlZC4gUGxlYXNlIHJlcG9ydCBhIGJ1Zy4ASW5pdGlhbGl6YXRpb24gb2YgYmlubG9nIHRyYW5zbWl0IGRlbGVnYXRlcyBmYWlsZWQuIFBsZWFzZSByZXBvcnQgYSBidWcuAEluaXRpYWxpemF0aW9uIGJpbmxvZyByZWxheSBJTyBkZWxlZ2F0ZXMgZmFpbGVkLiBQbGVhc2UgcmVwb3J0IGEgYnVnLgBSdW4gZnVuY3Rpb24gJy4uLicgaW4gcGx1Z2luICclcycgZmFpbGVkAG15c3FsX2hhX3JlYWQ6IEdvdCBlcnJvciAlZCB3aGVuIHJlYWRpbmcgdGFibGUgJyVzJwBTdG9yZWQgcm91dGluZSAnJXMnLiclcyc6IGludmFsaWQgdmFsdWUgaW4gY29sdW1uICVzLgBJbnZhbGlkIGNyZWF0aW9uIGNvbnRleHQgJyVzLiVzJy4AR290IGVycm9yICVkIHdoZW4gcmVhZGluZyB0YWJsZSAnJXMnAGxvYWRfZGVzX2ZpbGU6ICBGb3VuZCB3cm9uZyBrZXlfbnVtYmVyOiAlYwBGYWlsZWQgdG8gc2V0IHBlcnNpc3RlZCBvcHRpb25zLgBQZXJzaXN0ZWQgY29uZmlnIGZpbGUgaXMgY29ycnVwdC4gUGxlYXNlIGVuc3VyZSBteXNxbGQtYXV0by5jbmYgZmlsZSBpcyB2YWxpZCBKU09OLgBGb3VuZCBvcHRpb24gd2l0aG91dCBwcmVjZWRpbmcgZ3JvdXAgaW4gY29uZmlnIGZpbGUAVkFMR1JJTkRfRE9fUVVJQ0tfTEVBS19DSEVDSwBWQUxHUklORF9DT1VOVF9MRUFLUyByZXBvcnRzICVsdSBsZWFrZWQgYnl0ZXMgZm9yIHF1ZXJ5ICclLipzJwBMT0FEIERBVEEgSU5GSUxFIGluIHRoZSByZXBsaWNhIFNRTCBUaHJlYWQgY2FuIG9ubHkgcmVhZCBmcm9tIC0tcmVwbGljYS1sb2FkLXRtcGRpci4gUGxlYXNlLCByZXBvcnQgYSBidWcuAEdvdCB1bmtub3duIGVycm9yOiAlZABDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHVkZiBzdHJ1Y3R1cmVzAENhbid0IGFsbG9jIG1lbW9yeSBmb3IgdWRmIGZ1bmN0aW9uOiAnJS42NHMnAEludmFsaWQgcm93IGluIG15c3FsLmZ1bmMgdGFibGUgZm9yIGZ1bmN0aW9uICclLjY0cycAQ291bGQgbm90IG9wZW4gdGhlIG15c3FsLmZ1bmMgdGFibGUuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4ARm91bmQgJWQgcHJlcGFyZWQgdHJhbnNhY3Rpb24ocykgaW4gJXMARm91bmQgJWQgcHJlcGFyZWQgWEEgdHJhbnNhY3Rpb25zAGlnbm9yZSB4aWQgJXMAY29tbWl0IHhpZCAlcwByb2xsYmFjayB4aWQgJXMAU3RhcnRpbmcgWEEgY3Jhc2ggcmVjb3ZlcnkuLi4ALS10Yy1oZXVyaXN0aWMtcmVjb3ZlciByb2xsYmFjayBzdHJhdGVneSBpcyBub3Qgc2FmZSBvbiBzeXN0ZW1zIHdpdGggbW9yZSB0aGFuIG9uZSAyLXBoYXNlLWNvbW1pdC1jYXBhYmxlIHN0b3JhZ2UgZW5naW5lLiBBYm9ydGluZyBjcmFzaCByZWNvdmVyeS4ARm91bmQgJWQgcHJlcGFyZWQgdHJhbnNhY3Rpb25zISBJdCBtZWFucyB0aGF0IG15c3FsZCB3YXMgbm90IHNodXQgZG93biBwcm9wZXJseSBsYXN0IHRpbWUgYW5kIGNyaXRpY2FsIHJlY292ZXJ5IGluZm9ybWF0aW9uIChsYXN0IGJpbmxvZyBvciAlcyBmaWxlKSB3YXMgbWFudWFsbHkgZGVsZXRlZCBhZnRlciBhIGNyYXNoLiBZb3UgaGF2ZSB0byBzdGFydCBteXNxbGQgd2l0aCAtLXRjLWhldXJpc3RpYy1yZWNvdmVyIHN3aXRjaCB0byBjb21taXQgb3Igcm9sbGJhY2sgcGVuZGluZyB0cmFuc2FjdGlvbnMuAFhBIGNyYXNoIHJlY292ZXJ5IGZpbmlzaGVkLgBGYWlsZWQgdG8gY29sbGVjdCBHVElEIHRvIHNlbmQgaW4gdGhlIHJlc3BvbnNlIHBhY2tldCEATVlTUUwuREVGQVVMVF9ST0xFUyBjb3VsZG4ndCBiZSB1cGRhdGVkIGZvciBhdXRob3JpemF0aW9uIGlkZW50aWZpZXIgJXMARm9sbG93aW5nIHVzZXJzIHdlcmUgc3BlY2lmaWVkIGluIENSRUFURSBVU0VSIElGIE5PVCBFWElTVFMgYnV0IHRoZXkgYWxyZWFkeSBleGlzdC4gQ29ycmVzcG9uZGluZyBlbnRyeSBpbiBiaW5hcnkgbG9nIHVzZWQgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiBwbHVnaW4gJyVzJyB0byByZXdyaXRlIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIChpZiBhbnkpIGZvciB0aGVtOiAlcwBGb2xsb3dpbmcgdXNlcnMgd2VyZSBzcGVjaWZpZWQgaW4gQUxURVIgVVNFUiBJRiBFWElTVFMgYnV0IHRoZXkgZG8gbm90IGV4aXN0LiBDb3JyZXNwb25kaW5nIGVudHJ5IGluIGJpbmFyeSBsb2cgdXNlZCBkZWZhdWx0IGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAnJXMnIHRvIHJld3JpdGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gKGlmIGFueSkgZm9yIHRoZW06ICVzAFRhYmxlICclLTE5MnMnIGNvcnJ1cHRlZDogcm93IGluIHdyb25nIHBhcnRpdGlvbjogJXMgLS0gUGxlYXNlIFJFUEFJUiB0aGUgdGFibGUhAEdvdCBhbiBlcnJvciBmcm9tIHRocmVhZF9pZD0ldSwgJXM6JWQAR290IGFuIGVycm9yIGZyb20gdW5rbm93biB0aHJlYWQsICVzOiVkAFRvbyBtYW55IHN0b3JhZ2UgZW5naW5lcyEAU3RvcmFnZSBlbmdpbmUgJyVzJyBoYXMgY29uZmxpY3RpbmcgdHlwZWNvZGUuIEFzc2lnbmluZyB2YWx1ZSAlZC4AT3V0IG9mIG1lbW9yeSBvbiB0cmFuc2FjdGlvbiB3cml0ZSBzZXQgZXh0cmFjdGlvbgBVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBwbHVnaW4gJyVzJyBoYW5kbGVydG9uLgBTaGFyZWQgbWVtb3J5IHNldHRpbmcgdXAgbGlzdGVuZXIAQ2FuJ3QgY3JlYXRlIHNoYXJlZCBtZW1vcnkgc2VydmljZTogJXMuIDogJXMAQ2FuJ3QgY3JlYXRlIHNoYXJlZCBtZW1vcnkgY29ubmVjdGlvbjogJXMuIDogJXMAQ2FuJ3QgY3JlYXRlIGV2ZW50LCBsYXN0IGVycm9yPSV1AENhbid0IGNyZWF0ZSBuZXcgbmFtZWQgcGlwZSE6ICVzAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIG5ldyBjb25uZWN0aW9uKGVycm5vPSAlZCkARmFpbGVkIHRvIGNyZWF0ZSBhIHNvY2tldCBmb3IgJXMgJyVzJzogZXJybm86ICVkLgBTZXJ2ZXIgc29ja2V0IGNyZWF0ZWQgb24gSVA6ICclcycuAFNlcnZlciBob3N0bmFtZSAoYmluZC1hZGRyZXNzKTogJyVzJzsgcG9ydDogJWQASVB2NiBpcyBhdmFpbGFibGUuAElQdjYgaXMgbm90IGF2YWlsYWJsZS4AQ2FuJ3QgY3JlYXRlIElQIHNvY2tldDogJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyOiBjYW5ub3QgcmVzb2x2ZSBob3N0bmFtZSEARG8geW91IGFscmVhZHkgaGF2ZSBhbm90aGVyIG15c3FsZCBzZXJ2ZXIgcnVubmluZyBvbiBwb3J0OiAlZCA/AERvIHlvdSBhbHJlYWR5IGhhdmUgYW5vdGhlciBteXNxbGQgc2VydmVyIHJ1bm5pbmcgb24gc29ja2V0OiAlcyA/AEFub3RoZXIgcHJvY2VzcyB3aXRoIHBpZCAlZCBpcyB1c2luZyB1bml4IHNvY2tldCBmaWxlLgBGYWlsZWQgdG8gcmVzZXQgSVBWNl9WNk9OTFkgZmxhZyAoZXJyb3I6ICVkKS4gVGhlIHNlcnZlciB3aWxsIGxpc3RlbiB0byBJUHY2IGFkZHJlc3NlcyBvbmx5LgBSZXRyeWluZyBiaW5kIG9uIFRDUC9JUCBwb3J0ICV1AENhbid0IHN0YXJ0IHNlcnZlcjogQmluZCBvbiBUQ1AvSVAgcG9ydDogJXMARmFpbHMgdG8gcHJpbnQgb3V0IElQLWFkZHJlc3MuACAgLSAnJXMnIHJlc29sdmVzIHRvICclcyc7AENhbid0IHN0YXJ0IHNlcnZlcjogbGlzdGVuKCkgb24gVENQL0lQIHBvcnQ6ICVzAGxpc3RlbigpIG9uIFRDUC9JUCBmYWlsZWQgd2l0aCBlcnJvciAlZABUaGUgc29ja2V0IGZpbGUgcGF0aCBpcyB0b28gbG9uZyAoPiAldSk6ICVzAFVuYWJsZSB0byBzZXR1cCB1bml4IHNvY2tldCBsb2NrIGZpbGUuAENhbid0IHN0YXJ0IHNlcnZlcjogVU5JWCBTb2NrZXQgOiAlcwBDYW4ndCBzdGFydCBzZXJ2ZXIgOiBCaW5kIG9uIHVuaXggc29ja2V0OiAlcwBsaXN0ZW4oKSBvbiBVbml4IHNvY2tldCBmYWlsZWQgd2l0aCBlcnJvciAlZABVbmFibGUgdG8gY3JlYXRlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBhZnRlciByZXRyaWVzLgBDb3VsZCBub3QgY3JlYXRlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcy4AQ291bGQgbm90IG9wZW4gdW5peCBzb2NrZXQgbG9jayBmaWxlICVzLgBDb3VsZCBub3QgcmVhZCB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMuAFVuaXggc29ja2V0IGxvY2sgZmlsZSBpcyBlbXB0eSAlcy4ASW52YWxpZCBwaWQgaW4gdW5peCBzb2NrZXQgbG9jayBmaWxlICVzLgBDb3VsZCBub3Qgd3JpdGUgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGVycm5vICVkLgBDb3VsZCBub3QgcmVtb3ZlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBlcnJubyAlZC4AQ291bGQgbm90IHN5bmMgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGVycm5vICVkLgBDb3VsZCBub3QgY2xvc2UgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGVycm5vICVkLgBteXNxbGQ6IEdvdCBlcnJvciAlZCBmcm9tIHNlbGVjdABFcnJvciBpbiBhY2NlcHQ6ICVzAFJTQSAlcyBrZXkgZmlsZSBub3QgZm91bmQ6ICVzLiBTb21lIGF1dGhlbnRpY2F0aW9uIHBsdWdpbnMgd2lsbCBub3Qgd29yay4ARmFpbHVyZSB0byBwYXJzZSBSU0EgJXMga2V5IChmaWxlIGV4aXN0cyk6ICVzOiAlcwBGYWlsdXJlIHRvIHJlYWQga2V5IGZpbGU6ICVzAFJTQSBrZXkgZmlsZXMgbm90IGZvdW5kLiBTb21lIGF1dGhlbnRpY2F0aW9uIHBsdWdpbnMgd2lsbCBub3Qgd29yay4AQ29ubmVjdGlvbiBhdHRyaWJ1dGVzIG9mIGxlbmd0aCAlbHUgd2VyZSB0cnVuY2F0ZWQgKCVkIGJ5dGVzIGxvc3QpIGZvciBjb25uZWN0aW9uICVsbHUsIHVzZXIgJXNAJXMgKGFzICVzKSwgYXV0aDogJXMAWC41MDkgY2lwaGVycyBtaXNtYXRjaDogc2hvdWxkIGJlICclcycgYnV0IGlzICclcycAWC41MDkgaXNzdWVyIG1pc21hdGNoOiBzaG91bGQgYmUgJyVzJyBidXQgaXMgJyVzJwBYLjUwOSBzdWJqZWN0IG1pc21hdGNoOiBzaG91bGQgYmUgJyVzJyBidXQgaXMgJyVzJwBGYWlsZWQgdG8gYWN0aXZhdGUgZGVmYXVsdCByb2xlICVzIGZvciAlcwBDb3VsZCBub3QgZ2VuZXJhdGUgUlNBIHByaXZhdGUga2V5IHJlcXVpcmVkIGZvciBYLjUwOSBjZXJ0aWZpY2F0ZS4AQ291bGQgbm90IHdyaXRlIGtleSBmaWxlOiAlcwBDb3VsZCBub3Qgc2V0IGZpbGUgcGVybWlzc2lvbiBmb3IgJXMAQ291bGQgbm90IHJlYWQgQ0Ega2V5IGZpbGU6ICVzAENvdWxkIG5vdCByZWFkIENBIGNlcnRpZmljYXRlIGZpbGU6ICVzAENvdWxkIG5vdCBnZW5lcmF0ZSBYLjUwOSBjZXJ0aWZpY2F0ZS4AQ291bGQgbm90IHdyaXRlIGNlcnRpZmljYXRlIGZpbGU6ICVzAENvdWxkIG5vdCBnZW5lcmF0ZSBSU0EgUHJpdmF0ZS9QdWJsaWMga2V5IHBhaXIAQ291bGQgbm90IHdyaXRlIHByaXZhdGUga2V5IGZpbGU6ICVzAENvdWxkIG5vdCB3cml0ZSBwdWJsaWMga2V5IGZpbGU6ICVzAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgU1NMIGNlcnRpZmljYXRlcyBhcyBvcHRpb25zIHJlbGF0ZWQgdG8gU1NMIGFyZSBzcGVjaWZpZWQuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgU1NMIGNlcnRpZmljYXRlcyBhcyBjZXJ0aWZpY2F0ZSBmaWxlcyBhcmUgcHJlc2VudCBpbiBkYXRhIGRpcmVjdG9yeS4AQXV0byBnZW5lcmF0ZWQgU1NMIGNlcnRpZmljYXRlcyBhcmUgcGxhY2VkIGluIGRhdGEgZGlyZWN0b3J5LgBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFNTTCBjZXJ0aWZpY2F0ZXMgYXMgLS1hdXRvX2dlbmVyYXRlX2NlcnRzIGlzIHNldCB0byBPRkYuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgUlNBIGtleSBwYWlyIHRocm91Z2ggJXMgYXMgb3B0aW9ucyByZWxhdGVkIHRvIFJTQSBrZXlzIGFyZSBzcGVjaWZpZWQuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgUlNBIGtleSBwYWlyIHRocm91Z2ggJXMgYXMga2V5IGZpbGVzIGFyZSBwcmVzZW50IGluIGRhdGEgZGlyZWN0b3J5LgBBdXRvIGdlbmVyYXRlZCBSU0Ega2V5IGZpbGVzIHRocm91Z2ggJXMgYXJlIHBsYWNlZCBpbiBkYXRhIGRpcmVjdG9yeS4AU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBSU0Ega2V5IHBhaXIgYXMgJXMgaXMgc2V0IHRvIE9GRi4AJ3Byb3hpZXNfcHJpdicgZW50cnkgJyVzQCVzICVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4AVGhlIHBsdWdpbiAnJS4qcycgdXNlZCB0byBhdXRoZW50aWNhdGUgdXNlciAnJXMnQCclLipzJyBpcyBub3QgbG9hZGVkLiBOb2JvZHkgY2FuIGN1cnJlbnRseSBsb2dpbiB1c2luZyB0aGlzIGFjY291bnQuAFRoZSBwbHVnaW4gJyVzJyBpcyB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB1c2VyICclcydAJyUuKnMnLCAlcyBjb25maWd1cmVkLiBOb2JvZHkgY2FuIGN1cnJlbnRseSBsb2dpbiB1c2luZyB0aGlzIGFjY291bnQuAENvdWxkIG5vdCBsb2FkIG15c3FsLnJvbGVfZWRnZXMgYW5kIG15c3FsLmRlZmF1bHRfcm9sZXMgdGFibGVzLiBBQ0wgRERMcyB3aWxsIG5vdCB3b3JrIHVubGVzcyB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUgaXMgcGVyZm9ybWVkLgAndXNlcicgZW50cnkgJyVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4ARmF0YWwgZXJyb3I6IENvdWxkIG5vdCByZWFkIHRoZSBjb2x1bW4gJ2F1dGhlbnRpY2F0aW9uX3N0cmluZycgZnJvbSB0YWJsZSAnbXlzcWwudXNlcicuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AVXNlciBlbnRyeSAnJXMnQCclcycgaGFzIGEgZGVwcmVjYXRlZCBwcmUtNC4xIHBhc3N3b3JkLiBUaGUgdXNlciB3aWxsIGJlIGlnbm9yZWQgYW5kIG5vIG9uZSBjYW4gbG9naW4gd2l0aCB0aGlzIHVzZXIgYW55bW9yZS4AVXNlciBlbnRyeSAnJXMnQCclcycgaGFzIGFuIGVtcHR5IHBsdWdpbiB2YWx1ZS4gVGhlIHVzZXIgd2lsbCBiZSBpZ25vcmVkIGFuZCBubyBvbmUgY2FuIGxvZ2luIHdpdGggdGhpcyB1c2VyIGFueW1vcmUuAEZvdW5kIGludmFsaWQgcGFzc3dvcmQgZm9yIHVzZXI6ICclc0Alcyc7IElnbm9yaW5nIHVzZXIAJ3VzZXInIGVudHJ5ICclc0AlcycgaGFzIHRoZSBwYXNzd29yZCBpZ25vcmUgZmxhZyByYWlzZWQsIGJ1dCBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luIGRvZXNuJ3Qgc3VwcG9ydCBwYXNzd29yZCBleHBpcmF0aW9uLiBUaGUgdXNlciBpZCB3aWxsIGJlIGlnbm9yZWQuAFNvbWUgb2YgdGhlIHVzZXIgYWNjb3VudHMgd2l0aCBTVVBFUiBwcml2aWxlZ2VzIHdlcmUgZGlzYWJsZWQgYmVjYXVzZSBvZiBlbXB0eSBteXNxbC51c2VyLnBsdWdpbiB2YWx1ZS4gSWYgeW91IGFyZSB1cGdyYWRpbmcgZnJvbSBNeVNRTCA1LjYgdG8gTXlTUUwgNS43IGl0IG1lYW5zIHRoYXQgc3Vic3RpdHV0aW9uIGZvciB0aGUgZW1wdHkgcGx1Z2luIGNvbHVtbiB3YXMgbm90IHBvc3NpYmxlLiBQcm9iYWJseSBiZWNhdXNlIG9mIHByZSA0LjEgcGFzc3dvcmQgaGFzaC4gSWYgeW91ciBhY2NvdW50IGlzIGRpc2FibGVkIHlvdSB3aWxsIG5lZWQgdG8gcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuIEZvciBjb21wbGV0ZSBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHVwZ3JhZGUgTXlTUUwgdG8gYSBuZXcgdmVyc2lvbiBwbGVhc2Ugc2VlIHRoZSAnVXBncmFkaW5nIE15U1FMJyBzZWN0aW9uIGZyb20gdGhlIE15U1FMIG1hbnVhbC4ARm91bmQgYW4gZW50cnkgaW4gdGhlICdkYicgdGFibGUgd2l0aCBlbXB0eSBkYXRhYmFzZSBuYW1lOyBTa2lwcGVkACdkYicgZW50cnkgJyVzICVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4AJ2RiJyBlbnRyeSAnJXMgJXNAJXMnIGhhZCBkYXRhYmFzZSBpbiBtaXhlZCBjYXNlIHRoYXQgaGFzIGJlZW4gZm9yY2VkIHRvIGxvd2VyY2FzZSBiZWNhdXNlIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgaXMgc2V0LiBJdCB3aWxsIG5vdCBiZSBwb3NzaWJsZSB0byByZW1vdmUgdGhpcyBwcml2aWxlZ2UgdXNpbmcgUkVWT0tFLgBUaGUgc3lzdGVtIHRhYmxlIG15c3FsLnByb3hpZXNfcHJpdiBpcyBtaXNzaW5nLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAEZhdGFsIGVycm9yOiBDYW4ndCBvcGVuIGFuZCBsb2NrIHByaXZpbGVnZSB0YWJsZXM6ICVzAEZhdGFsOiBjYW4ndCBpbml0aWFsaXplIGdyYW50IHN1YnN5c3RlbSAtICclcycAJ3Byb2NzX3ByaXYnIGVudHJ5ICclcyAlc0AlcycgaWdub3JlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGUuACdwcm9jc19wcml2JyBlbnRyeSAnJXMnIGlnbm9yZWQsIGJhZCByb3V0aW5lIHR5cGUAJ3RhYmxlc19wcml2JyBlbnRyeSAnJXMgJXNAJXMnIGlnbm9yZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlLgBGYWlsZWQgdG8gYWRkICVzIGluIGV4dHJhX3VzZXJzLiBCaW5hcnkgbG9nIGVudHJ5IG1heSBtaXNzIHNvbWUgb2YgdGhlIHVzZXJzLgBVbmFibGUgdG8gc3RhcnQgc2VydmVyLiBUaGUgZGF0YSBkaWN0aW9uYXJ5IHNjaGVtYSAnJXMnIGRvZXMgbm90IGV4aXN0LgBVbmFibGUgdG8gc3RhcnQgc2VydmVyLiBUaGUgZGF0YSBkaWN0aW9uYXJ5IHRhYmxlICclcycgZG9lcyBub3QgZXhpc3QuAEZhaWxlZCB0byBpbml0aWFsaXplIEREIFN0b3JhZ2UgRW5naW5lAEZvdW5kIHBhcnRpYWxseSB1cGdyYWRlZCBERC4gQWJvcnRpbmcgdXBncmFkZSBhbmQgZGVsZXRpbmcgYWxsIEREIHRhYmxlcy4gU3RhcnQgdGhlIHVwZ3JhZGUgcHJvY2VzcyBhZ2Fpbi4ARm91bmQgLmZybSBmaWxlIHdpdGggc2FtZSBuYW1lIGFzIG9uZSBvZiB0aGUgRGljdGlvbmFyeSBUYWJsZXMuAENyZWF0ZWQgRGF0YSBEaWN0aW9uYXJ5IGZvciB1cGdyYWRlAENhbid0IGZpbmQgZXJyb3ItbWVzc2FnZSBmaWxlICclcycuIENoZWNrIGVycm9yLW1lc3NhZ2UgZmlsZSBsb2NhdGlvbiBhbmQgJ2xjLW1lc3NhZ2VzLWRpcicgY29uZmlndXJhdGlvbiBkaXJlY3RpdmUuAFVzaW5nIHByZSA1LjUgc2VtYW50aWNzIHRvIGxvYWQgZXJyb3IgbWVzc2FnZXMgZnJvbSAlcy4gSWYgdGhpcyBpcyBub3QgaW50ZW5kZWQsIHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB2YWxpZCB1c2FnZSBvZiAtLWxjLW1lc3NhZ2VzLWRpciBhbmQgLS1sYW5ndWFnZSBwYXJhbWV0ZXJzLgBFcnJvciBtZXNzYWdlIGZpbGUgJyVzJyBoYWQgb25seSAlZCBlcnJvciBtZXNzYWdlcywgYnV0IGl0IHNob3VsZCBjb250YWluIGF0IGxlYXN0ICVkIGVycm9yIG1lc3NhZ2VzLiBDaGVjayB0aGF0IHRoZSBhYm92ZSBmaWxlIGlzIHRoZSByaWdodCB2ZXJzaW9uIGZvciB0aGlzIHByb2dyYW0hAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBtZXNzYWdlZmlsZSAnJXMnAENhbid0IHJlYWQgZnJvbSBtZXNzYWdlZmlsZSAnJXMnAEZvdW5kIGluY29tcGF0aWJsZSBERUNJTUFMIGZpZWxkICclcycgaW4gJXM7IFBsZWFzZSBkbyAiQUxURVIgVEFCTEUgYCVzYCBGT1JDRSIgdG8gZml4IGl0IQBGb3VuZCBpbmNvbXBhdGlibGUgWUVBUih4KSBmaWVsZCAnJXMnIGluICVzOyBQbGVhc2UgZG8gIkFMVEVSIFRBQkxFIGAlc2AgRk9SQ0UiIHRvIGZpeCBpdCEAJyVzJyBoYWQgbm8gb3IgaW52YWxpZCBjaGFyYWN0ZXIgc2V0LCBhbmQgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0IGlzIG11bHRpLWJ5dGUsIHNvIGNoYXJhY3RlciBjb2x1bW4gc2l6ZXMgbWF5IGhhdmUgY2hhbmdlZABGb3VuZCB3cm9uZyBrZXkgZGVmaW5pdGlvbiBpbiAlczsgUGxlYXNlIGRvICJBTFRFUiBUQUJMRSBgJXNgIEZPUkNFICIgdG8gZml4IGl0IQBVbmFibGUgdG8gb3BlbiBmaWxlICVzAEVycm9yIGluIHJlYWRpbmcgZmlsZSAlcwBUYWJsZSAnJXMnIHdhcyBjcmVhdGVkIHdpdGggYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBNeVNRTCBhbmQgY2Fubm90IGJlIHJlYWQAVW5hYmxlIHRvIHJlYWQgdmlldyAlcwBGaWxlICVzIGhhcyB1bmtub3duIHR5cGUgaW4gaXRzIGhlYWRlci4ASW5jb3JyZWN0IGluZm9ybWF0aW9uIGluIGZpbGUgJXMAQ2FuJ3Qgb3BlbiBhbmQgbG9jayBwcml2aWxlZ2UgdGFibGVzOiAlcwBQbHVnaW4gJyVzJyBjYW5ub3Qgc3Vic2NyaWJlIHRvIE1ZU1FMX0FVRElUX0FVVEhPUklaQVRJT04gZXZlbnRzLiBDdXJyZW50bHkgbm90IHN1cHBvcnRlZC4AUGx1Z2luICclcycgaGFzIGludmFsaWQgZGF0YS4ARmF0YWwgZXJyb3I6IE9PTSB3aGlsZSBpbml0aWFsaXppbmcgdGltZSB6b25lcwBDYW4ndCBvcGVuIGFuZCBsb2NrIHRpbWUgem9uZSB0YWJsZTogJXMgdHJ5aW5nIHRvIGxpdmUgd2l0aG91dCB0aGVtAEZhdGFsIGVycm9yOiBPdXQgb2YgbWVtb3J5IHdoaWxlIGxvYWRpbmcgbXlzcWwudGltZV96b25lX2xlYXBfc2Vjb25kIHRhYmxlAEZhdGFsIGVycm9yOiBXaGlsZSBsb2FkaW5nIG15c3FsLnRpbWVfem9uZV9sZWFwX3NlY29uZCB0YWJsZTogdG9vIG11Y2ggbGVhcHMARmF0YWwgZXJyb3I6IEVycm9yIHdoaWxlIGxvYWRpbmcgbXlzcWwudGltZV96b25lX2xlYXBfc2Vjb25kIHRhYmxlAEZhdGFsIGVycm9yOiBJbGxlZ2FsIG9yIHVua25vd24gZGVmYXVsdCB0aW1lIHpvbmUgJyVzJwBDYW4ndCBmaW5kIGRlc2NyaXB0aW9uIG9mIHRpbWUgem9uZSAnJS4qcycAQ2FuJ3QgZmluZCBkZXNjcmlwdGlvbiBvZiB0aW1lIHpvbmUgJyV1JwBFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uX3R5cGUgdGFibGU6IHRvbyBiaWcgdHJhbnNpdGlvbiB0eXBlIGlkAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb25fdHlwZSB0YWJsZTogbm90IGVub3VnaCByb29tIGZvciBhYmJyZXZpYXRpb25zAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb25fdHlwZSB0YWJsZQBFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uIHRhYmxlOiB0b28gbXVjaCB0cmFuc2l0aW9ucwBFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uIHRhYmxlOiBiYWQgdHJhbnNpdGlvbiB0eXBlIGlkAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb24gdGFibGUAbG9hZGluZyB0aW1lIHpvbmUgd2l0aG91dCB0cmFuc2l0aW9uIHR5cGVzAE91dCBvZiBtZW1vcnkgd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24AVW5hYmxlIHRvIGJ1aWxkIG1rdGltZSBtYXAgZm9yIHRpbWUgem9uZQBPdXQgb2YgbWVtb3J5IHdoaWxlIGxvYWRpbmcgdGltZSB6b25lAEZhdGFsIGVycm9yOiBPdXQgb2YgbWVtb3J5IHdoaWxlIHNldHRpbmcgbmV3IHRpbWUgem9uZQBSZXBsaWNhIFNRTCB0aHJlYWQgaXMgc3RvcHBlZCBiZWNhdXNlIFVOVElMIGNvbmRpdGlvbiBpcyBiYWQoJXM6JWxsdSkuAFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCBpdHMgVU5USUwgcG9zaXRpb24gJWxsdQBSZXBsaWNhIFNRTCB0aHJlYWQgc3RvcHBlZCBiZWNhdXNlIFVOVElMIFNRTF9CRUZPUkVfR1RJRFMgJXMgaXMgYWxyZWFkeSBhcHBsaWVkAFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCBVTlRJTCBTUUxfQkVGT1JFX0dUSURTICVzAFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCBVTlRJTCBTUUxfQUZURVJfR1RJRFMgJXMAUmVwbGljYSBTUUwgdGhyZWFkIHN0b3BwZWQgYWNjb3JkaW5nIHRvIFVOVElMIFNRTF9BRlRFUl9NVFNfR0FQUyBhcyBpdCBoYXMgcHJvY2Vzc2VkIGFsbCBnYXAgdHJhbnNhY3Rpb25zIGxlZnQgZnJvbSB0aGUgcHJldmlvdXMgcmVwbGljYSBzZXNzaW9uLgBHcm91cCBSZXBsaWNhdGlvbiBwbHVnaW4gaXMgbm90IGluc3RhbGxlZC4AVGhlIHRyYW5zYWN0aW9uIG93bmVkIEdUSUQgaXMgYWxyZWFkeSBpbiB0aGUgJXMgdGFibGUsIHdoaWNoIGlzIGNhdXNlZCBieSBhbiBleHBsaWNpdCBtb2RpZnlpbmcgZnJvbSB1c2VyIGNsaWVudC4ARmFpbGVkIHRvIGRlbGV0ZSB0aGUgcm93OiAnJXMnIGZyb20gdGhlIGd0aWRfZXhlY3V0ZWQgdGFibGUuAEZhaWxlZCB0byBjb21wcmVzcyB0aGUgZ3RpZF9leGVjdXRlZCB0YWJsZS4ARmFpbGVkIHRvIGNvbXByZXNzIHRoZSBndGlkX2V4ZWN1dGVkIHRhYmxlLCBiZWNhdXNlIGl0IGlzIGZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgVEhELgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQgYXR0cmlidXRlIHdoZW4gY3JlYXRpbmcgY29tcHJlc3Npb24gdGhyZWFkLgBDYW4gbm90IGNyZWF0ZSB0aHJlYWQgdG8gY29tcHJlc3MgZ3RpZF9leGVjdXRlZCB0YWJsZSAoZXJybm89ICVkKQBDb3VsZCBub3Qgam9pbiBndGlkX2V4ZWN1dGVkIHRhYmxlIGNvbXByZXNzaW9uIHRocmVhZC4gZXJyb3I6JWQAQ2FuJ3Qgc3RhcnQgc2VydmVyIDogSW5pdGlhbGl6ZSBzZWN1cml0eSBkZXNjcmlwdG9yOiAlcwBDYW4ndCBzdGFydCBzZXJ2ZXIgOiBTZXQgc2VjdXJpdHkgZGVzY3JpcHRvcjogJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyIDogTmFtZWQgUGlwZSAiJXMiIGFscmVhZHkgaW4gdXNlLgBOREIgUmVwbGljYSA6IEF0IFNRTCB0aHJlYWQgc3RhcnQgYXBwbHlpbmcgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSBmcm9tIFNvdXJjZSBTZXJ2ZXJJZCAldSB3aGljaCBpcyBsb3dlciB0aGFuIHByZXZpb3VzbHkgYXBwbGllZCBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpLiAgR3JvdXAgU291cmNlIExvZyA6ICVzICBHcm91cCBTb3VyY2UgTG9nIFBvcyA6ICVsbHUuICBDaGVjayByZXBsaWNhIHBvc2l0aW9uaW5nLgBOREIgUmVwbGljYSA6IFNRTCB0aHJlYWQgc3RvcHBlZCBhcyBhcHBseWluZyBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIGZyb20gU291cmNlIFNlcnZlcklkICV1IHdoaWNoIGlzIGxvd2VyIHRoYW4gcHJldmlvdXNseSBhcHBsaWVkIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkuICBHcm91cCBTb3VyY2UgTG9nIDogJXMgIEdyb3VwIFNvdXJjZSBMb2cgUG9zIDogJWxsdQBOREIgUmVwbGljYSA6IFNRTCB0aHJlYWQgc3RvcHBlZCBhcyBhdHRlbXB0ZWQgdG8gcmVhcHBseSBhbHJlYWR5IGNvbW1pdHRlZCBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIGZyb20gc2VydmVyIGlkICV1LiAgR3JvdXAgU291cmNlIExvZyA6ICVzICBHcm91cCBTb3VyY2UgTG9nIFBvcyA6ICVsbHUuAE5EQiBSZXBsaWNhIDogU1FMIHRocmVhZCBzdG9wcGVkIGFzIGF0dGVtcHRpbmcgdG8gYXBwbHkgbmV3IGVwb2NoICVsbHUvJWxsdSAoJWxsdSkgd2hpbGUgbG93ZXIgcmVjZWl2ZWQgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSBoYXMgbm90IGJlZW4gY29tbWl0dGVkLiAgU291cmNlIHNlcnZlciBpZCA6ICV1LiAgR3JvdXAgU291cmNlIExvZyA6ICVzICBHcm91cCBTb3VyY2UgTG9nIFBvcyA6ICVsbHUuAE5EQiBSZXBsaWNhOiBtaXNzaW5nIGRhdGEgZm9yICVzIHRpbWVzdGFtcCBjb2x1bW4gJXUuAE5EQiBSZXBsaWNhOiBUYWJsZSAlcy4lcyBsb2dnaW5nIGV4Y2VwdGlvbnMgdG8gJXMuJXMATkRCIFJlcGxpY2E6IFRhYmxlICVzLiVzIDogJXMsIGxvdyBlcG9jaCByZXNvbHV0aW9uAEZvdW5kIHVuZXhwZWN0ZWQgZmllbGQgdHlwZSAldQBGYWlsZWQgdG8gY3JlYXRlIE5kYkluZm8ARmFpbGVkIHRvIGluaXQgTmRiSW5mbwBuZGJfc2VyaWFsaXplX2NvbmQ6IFVuZXhwZWN0ZWQgbWlzbWF0Y2ggb2YgZm91bmQgYW5kIGV4cGVjdGVkIG51bWJlciBvZiBmdW5jdGlvbiBhcmd1bWVudHMgJXUAJXMgLSAlcy4lcwAlcwBJbmZvIHRhYmxlIGlzIG5vdCByZWFkeSB0byBiZSB1c2VkLiBUYWJsZSAnJXMuJXMnIGNhbm5vdCBiZSBvcGVuZWQuAEluZm8gdGFibGUgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFRhYmxlICclcy4lcycgY2Fubm90IGJlIHNjYW5uZWQuAENvcnJ1cHRlZCB0YWJsZSAlcy4lcy4gQ2hlY2sgb3V0IHRhYmxlIGRlZmluaXRpb24uAEluZm8gdGFibGUgaGFzIGEgcHJvYmxlbSB3aXRoIGl0cyBrZXkgZmllbGQocykuIFRhYmxlICclcy4lcycgZXhwZWN0ZWQgZmllbGQgIyV1IHRvIGJlICclcycgYnV0IGZvdW5kICclcycgaW5zdGVhZC4AQ2hvb3Npbmcgd29ya2VyIGlkICVsdSwgdGhlIGZvbGxvd2luZyBpcyBnb2luZyB0byBiZSAlbHUAVHJhbnNhY3Rpb24gaXMgdGFnZ2VkIHdpdGggaW5jb25zaXN0ZW50IGxvZ2ljYWwgdGltZXN0YW1wczogc2VxdWVuY2VfbnVtYmVyICglbGxkKSA8PSBsYXN0X2NvbW1pdHRlZCAoJWxsZCkAVHJhbnNhY3Rpb24ncyBzZXF1ZW5jZSBudW1iZXIgaXMgaW5jb25zaXN0ZW50IHdpdGggdGhhdCBvZiBhIHByZWNlZGluZyBvbmU6IHNlcXVlbmNlX251bWJlciAoJWxsZCkgPD0gcHJldmlvdXMgc2VxdWVuY2VfbnVtYmVyICglbGxkKQBGb3IgdGhlIGNyZWF0aW9uIG9mIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIGFuZCBhcHBsaWVyIG1ldGFkYXRhIHJlcG9zaXRvcmllcyBtdXN0IGJlIHNldCB0byBUQUJMRQBGb3IgdGhlIGNyZWF0aW9uIG9mIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHRoZSBzZXJ2ZXIgaWQgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSAwAFJlcGxpY2E6IFdyb25nIHJlcG9zaXRvcnkuIFJlcG9zaXRvcnkgc2hvdWxkIGJlIFRBQkxFAEVycm9yIGNyZWF0aW5nIGNvbm5lY3Rpb24gbWV0YWRhdGE6ICVzLgBFcnJvciBjaGFuZ2luZyB0aGUgdHlwZSBvZiBjb25uZWN0aW9uIG1ldGFkYXRhJ3MgcmVwb3NpdG9yeTogJXMuAEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHJlbGF5IGxvZyByZXBvc2l0b3J5IGJlY2F1c2UgdGhlcmUgYXJlIHdvcmtlcnMgcmVwb3NpdG9yaWVzIHdpdGggcG9zc2libGUgZXhlY3V0aW9uIGdhcHMuIFRoZSB2YWx1ZSBvZiAtLXJlbGF5X2xvZ19pbmZvX3JlcG9zaXRvcnkgaXMgYWx0ZXJlZCB0byBvbmUgb2YgdGhlIGZvdW5kIFdvcmtlciByZXBvc2l0b3JpZXMuIFRoZSBnYXBzIGhhdmUgdG8gYmUgc29ydGVkIG91dCBiZWZvcmUgcmVzdW1pbmcgd2l0aCB0aGUgdHlwZSBjaGFuZ2UuAEVycm9yIGNyZWF0aW5nIGFwcGxpZXIgbWV0YWRhdGE6ICVzLgBFcnJvciBjaGFuZ2luZyB0aGUgdHlwZSBvZiBhcHBsaWVyIG1ldGFkYXRhJ3MgcmVwb3NpdG9yeTogJXMuAENvdWxkIG5vdCBkZWxldGUgZnJvbSBSZXBsaWNhIFdvcmtlcnMgaW5mbyByZXBvc2l0b3J5LgBDb3VsZCBub3Qgc3RvcmUgdGhlIHJlc2V0IFJlcGxpY2EgV29ya2VyIHN0YXRlIGludG8gdGhlIHJlcGxpY2EgaW5mbyByZXBvc2l0b3J5LgBFcnJvciBpbiBjaGVja2luZyAlcyByZXBvc2l0b3J5LgBSZXBsaWNhOiAlcwBSZXBsaWNhOiBDb3VsZCBub3QgY3JlYXRlIGNoYW5uZWwgbGlzdABSZXBsaWNhOiBUaGlzIHJlcGxpY2Egd2FzIGEgbXVsdGlzb3VyY2VkIHJlcGxpY2EgcHJldmlvdXNseSB3aGljaCBpcyBzdXBwb3J0ZWQgb25seSBieSBib3RoIFRBQkxFIGJhc2VkIGNvbm5lY3Rpb24gbWV0YWRhdGEgYW5kIGFwcGxpZXIgbWV0YWRhdGEgcmVwb3NpdG9yaWVzLiBGb3VuZCBvbmUgb3IgYm90aCBvZiB0aGUgaW5mbyByZXBvcyB0byBiZSB0eXBlIEZJTEUuIFNldCBib3RoIHJlcG9zIHRvIHR5cGUgVEFCTEUuAFJlcGxpY2E6IEZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSBmb3IgY2hhbm5lbCAnJXMnOyBpdHMgcmVjb3JkIG1heSBzdGlsbCBiZSBwcmVzZW50IGluIHRoZSBhcHBsaWVyIG1ldGFkYXRhIHJlcG9zaXRvcnksIGNvbnNpZGVyIGRlbGV0aW5nIGl0LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUlcwBSZXBsaWNhOiBGYWlsZWQgdG8gY3JlYXRlIGEgY2hhbm5lbCBmcm9tIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeS4ARmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbmZvIGZpbGUgKGZpbGUgJyVzJywgZXJybm8gJWQpAEZhaWxlZCB0byBjcmVhdGUgYSBjYWNoZSBvbiBpbmZvIGZpbGUgKGZpbGUgJyVzJykARmFpbGVkIHRvIG9wZW4gdGhlIGV4aXN0aW5nIGluZm8gZmlsZSAoZmlsZSAnJXMnLCBlcnJubyAlZCkAU2VydmVyIG92ZXJjb21lcyB0aGUgdGVtcG9yYXJ5ICdvdXQgb2YgbWVtb3J5JyBpbiAnJWQnIHRyaWVzIHdoaWxlIGFsbG9jYXRpbmcgYSBuZXcgY2h1bmsgb2YgaW50ZXJ2YWxzIGZvciBzdG9yaW5nIEdUSURzLgBVbmtub3duIGNvc3QgY29uc3RhbnQgIiVzIiBpbiBteXNxbC5zZXJ2ZXJfY29zdCB0YWJsZQBJbnZhbGlkIHZhbHVlIGZvciBjb3N0IGNvbnN0YW50ICIlcyIgaW4gbXlzcWwuc2VydmVyX2Nvc3QgdGFibGU6ICUuMWYAVW5rbm93biBjb3N0IGNvbnN0YW50ICIlcyIgaW4gbXlzcWwuZW5naW5lX2Nvc3QgdGFibGUAVW5rbm93biBzdG9yYWdlIGVuZ2luZSAiJXMiIGluIG15c3FsLmVuZ2luZV9jb3N0IHRhYmxlAEludmFsaWQgZGV2aWNlIHR5cGUgJWQgZm9yICIlcyIgc3RvcmFnZSBlbmdpbmUgZm9yIGNvc3QgY29uc3RhbnQgIiVzIiBpbiBteXNxbC5lbmdpbmVfY29zdCB0YWJsZQBJbnZhbGlkIHZhbHVlIGZvciBjb3N0IGNvbnN0YW50ICIlcyIgZm9yICIlcyIgc3RvcmFnZSBlbmdpbmUgYW5kIGRldmljZSB0eXBlICVkIGluIG15c3FsLmVuZ2luZV9jb3N0IHRhYmxlOiAlLjFmAEVycm9yIHdoaWxlIHJlYWRpbmcgZnJvbSBteXNxbC5zZXJ2ZXJfY29zdCB0YWJsZS4ARXJyb3Igd2hpbGUgcmVhZGluZyBmcm9tIG15c3FsLmVuZ2luZV9jb3N0IHRhYmxlLgBGYWlsZWQgdG8gb3BlbiBvcHRpbWl6ZXIgY29zdCBjb25zdGFudCB0YWJsZXMAVW5zdXBwb3J0ZWQgbm9uLWlnbm9yYWJsZSBldmVudCBmZWQgaW50byB0aGUgZXZlbnQgc3RyZWFtLgBHVElEX0xPR19FVkVOVCwgR1RJRF9UQUdHRURfTE9HX0VWRU5UIG9yIEFOT05ZTU9VU19HVElEX0xPR19FVkVOVCBpcyBub3QgZXhwZWN0ZWQgaW4gYW4gZXZlbnQgc3RyZWFtICVzLgBRVUVSWShCRUdJTikgaXMgbm90IGV4cGVjdGVkIGluIGFuIGV2ZW50IHN0cmVhbSBpbiB0aGUgbWlkZGxlIG9mIGEgJXMuAFFVRVJZKENPTU1JVCBvciBST0xMQkFDSykgb3IgWElEX0xPR19FVkVOVCBpcyBub3QgZXhwZWN0ZWQgaW4gYW4gZXZlbnQgc3RyZWFtICVzLgBRVUVSWShYQSBST0xMQkFDSykgaXMgbm90IGV4cGVjdGVkIGluIGFuIGV2ZW50IHN0cmVhbSAlcy4ARXZlbnQgU2NoZWR1bGVyOiBbJXNdLlslcy4lc10gZXhlY3V0aW9uIGZhaWxlZCwgZmFpbGVkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlci4ARXZlbnQgU2NoZWR1bGVyOiBbJXNdLlslcy4lc10gZXhlY3V0aW9uIGZhaWxlZCwgdXNlciBubyBsb25nZXIgaGFzIEVWRU5UIHByaXZpbGVnZS4ARXZlbnQgU2NoZWR1bGVyOiAlc2Vycm9yIGR1cmluZyBjb21waWxhdGlvbiBvZiAlcy4lcwBFdmVudCBTY2hlZHVsZXI6IERyb3BwaW5nICVzLiVzAE5kYiBzY2hlbWFbJXMuJXNdOiAlcwBJbiBSQlIgbW9kZSwgUmVwbGljYSByZWNlaXZlZCBpbmNvbXBhdGlibGUgREVDSU1BTCBmaWVsZCAob2xkLXN0eWxlIGRlY2ltYWwgZmllbGQpIGZyb20gU291cmNlIHdoaWxlIGNyZWF0aW5nIGNvbnZlcnNpb24gdGFibGUuIFBsZWFzZSBjb25zaWRlciBjaGFuZ2luZyBkYXRhdHlwZSBvbiBTb3VyY2UgdG8gbmV3IHN0eWxlIGRlY2ltYWwgYnkgZXhlY3V0aW5nIEFMVEVSIGNvbW1hbmQgZm9yIGNvbHVtbiBOYW1lOiAlcy4lcy4lcy4Acm9vdEBsb2NhbGhvc3QgaXMgY3JlYXRlZCB3aXRoIGFuIGVtcHR5IHBhc3N3b3JkICEgUGxlYXNlIGNvbnNpZGVyIHN3aXRjaGluZyBvZmYgdGhlIC0taW5pdGlhbGl6ZS1pbnNlY3VyZSBvcHRpb24uAEEgdGVtcG9yYXJ5IHBhc3N3b3JkIGlzIGdlbmVyYXRlZCBmb3Igcm9vdEBsb2NhbGhvc3Q6ICVzAEZhaWxlZCB0byBvcGVuIHRoZSBib290c3RyYXAgZmlsZSAlcwBCb290c3RyYXBwaW5nIGNvbXBsZXRlAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgYnV0IHRoZSBkYXRhIGRpcmVjdG9yeSBoYXMgZmlsZXMgaW4gaXQuIEFib3J0aW5nLgAtLWluaXRpYWxpemUgc3BlY2lmaWVkIG9uIGFuIGV4aXN0aW5nIGRhdGEgZGlyZWN0b3J5LgAtLWluaXRpYWxpemUgc3BlY2lmaWVkIGJ1dCB0aGUgZGF0YSBkaXJlY3RvcnkgZXhpc3RzIGFuZCB0aGUgcGF0aCBpcyB0b28gbG9uZy4gQWJvcnRpbmcuAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgYnV0IHRoZSBkYXRhIGRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIG5vdCB3cml0YWJsZS4gQWJvcnRpbmcuAENyZWF0aW5nIHRoZSBkYXRhIGRpcmVjdG9yeSAlcwBTdGFydCBiaW5sb2dfZHVtcCB0byBzb3VyY2VfdGhyZWFkX2lkKCV1KSByZXBsaWNhX3NlcnZlcigldSksIHBvcyglcywgJWxsdSkAc291cmNlIHNlbmRzIGhlYXJ0YmVhdCBtZXNzYWdlAHRoZSByZXN0IG9mIGhlYXJ0YmVhdCBpbmZvIHNraXBwZWQgLi4uAFNvdXJjZSBpcyBjb25maWd1cmVkIHRvIGxvZyByZXBsaWNhdGlvbiBldmVudHMgd2l0aCBjaGVja3N1bSwgYnV0IHdpbGwgbm90IHNlbmQgc3VjaCBldmVudHMgdG8gcmVwbGljYXMgdGhhdCBjYW5ub3QgcHJvY2VzcyB0aGVtAE5EQjogUXVlcnkgJyVzJyBmYWlsZWQsIGVycm9yOiAlZDogJXMAS2lsbGluZyB0aHJlYWQgJWx1AFBsdWdpbiAlcyBpcyBkZWluaXRpYWxpemluZyBhIHRocmVhZCBidXQgbGVmdCBhIHNlc3Npb24gYXR0YWNoZWQuIERldGFjaGluZyBpdCBmb3JjZWZ1bGx5LgBGYWlsZWQgdG8gZGV0YWNoIHRoZSBzZXNzaW9uLgBDbG9zZWQgZm9yY2VmdWxseSAldSBzZXNzaW9uJXMgbGVmdCBvcGVuZWQgYnkgcGx1Z2luICVzAEZhaWxlZCB0byBkZWNyZW1lbnQgdGhlIG51bWJlciBvZiB0aHJlYWRzAFBsdWdpbiAlcyBkaWQgbm90IGRlaW5pdGlhbGl6ZSAldSB0aHJlYWRzAEtpbGxlZCAldSB0aHJlYWRzIG9mIHBsdWdpbiAlcwBOREIgUmVwbGljYSA6IENvdWxkIG5vdCBkZXRlcm1pbmUgbWF4aW11bSByZXBsaWNhdGVkIGVwb2NoIGZyb20gJXMuJXMgYXQgUmVwbGljYSBzdGFydCwgZXJyb3IgJXUgJXMATkRCIFJlcGxpY2EgOiBNYXhSZXBsaWNhdGVkRXBvY2ggc2V0IHRvICVsbHUgKCV1LyV1KSBhdCBSZXBsaWNhIHN0YXJ0AE5EQjogTm9kZUlEIGlzICVsdSwgbWFuYWdlbWVudCBzZXJ2ZXIgJyVzOiVsdScAdGlkICV1OiBub2RlWyV1XSB0cmFuc2FjdGlvbl9oaW50PSV1LCB0cmFuc2FjdGlvbl9ub19oaW50PSV1AE5EQiBJbnRlcm5hbCBlcnJvcjogRGVmYXVsdCB2YWx1ZXMgZGlmZmVyIGZvciBjb2x1bW4gJXUsIG5kYl9kZWZhdWx0OiAlZABOREIgSW50ZXJuYWwgZXJyb3I6IENvbHVtbiAldSBoYXMgbmF0aXZlIGRlZmF1bHQsIGJ1dCBzaG91bGRuJ3QuIEZsYWdzPSV1LCB0eXBlPSV1AGZpZWxkWyBuYW1lOiAnJXMnLCB0eXBlOiAldSwgcmVhbF90eXBlOiAldSwgZmxhZ3M6IDB4JXgsIGlzX251bGw6ICVkXQBuZGJDb2xbbmFtZTogJyVzJywgdHlwZTogJXUsIGNvbHVtbl9ubzogJWQsIG51bGxhYmxlOiAlZF0AZml4X3VuaXF1ZV9pbmRleF9hdHRyX29yZGVyOiBteV9tYWxsb2MoJXUpIGZhaWx1cmUATkRCIFJlcGxpY2EgOiBNYWxmb3JtZWQgZXZlbnQgcmVjZWl2ZWQgb24gdGFibGUgJXMgY2Fubm90IHBhcnNlLiAgU3RvcHBpbmcgUmVwbGljYS4ATkRCIFJlcGxpY2EgOiBDb25mbGljdCBmdW5jdGlvbiAlcyBkZWZpbmVkIG9uIHRhYmxlICVzIHJlcXVpcmVzIG5kYl9yZXBsaWNhX2NvbmZsaWN0X3JvbGUgdmFyaWFibGUgdG8gYmUgc2V0LiAgU3RvcHBpbmcgcmVwbGljYS4ATkRCIFJlcGxpY2EgOiBUcmFuc2FjdGlvbmFsIGNvbmZsaWN0IGRldGVjdGlvbiBkZWZpbmVkIG9uIHRhYmxlICVzLCBidXQgZXZlbnRzIHJlY2VpdmVkIHdpdGhvdXQgdHJhbnNhY3Rpb24gaWRzLiAgQ2hlY2sgLS1uZGItbG9nLXRyYW5zYWN0aW9uLWlkIHNldHRpbmcgb24gdXBzdHJlYW0gQ2x1c3Rlci4ATkRCIFJlcGxpY2EgOiBCaW5sb2cgZXZlbnQgb24gdGFibGUgJXMgbWlzc2luZyBpbmZvIG5lY2Vzc2FyeSBmb3IgY29uZmxpY3QgZGV0ZWN0aW9uLiAgQ2hlY2sgYmlubG9nIGZvcm1hdCBvcHRpb25zIG9uIHVwc3RyZWFtIGNsdXN0ZXIuAEVycm9yICVsdSBpbiByZWFkQXV0b0luY3JlbWVudFZhbHVlKCk6ICVzAGZvdW5kIHVuY29tbWl0dGVkIGF1dG9jb21taXQrcmJ3ciB0cmFuc2FjdGlvbiwgY29tbWl0IHN0YXR1czogJWQATmRiIHJlcGxpY2EgcmV0cmllZCB0cmFuc2FjdGlvbiAldSB0aW1lKHMpIGluIHZhaW4uICBHaXZpbmcgdXAuAEVycm9yICVsdSBpbiA6OnVwZGF0ZV9jcmVhdGVfaW5mbygpOiAlcwBOREI6IGFsbG9jYXRpbmcgdGFibGUgc2hhcmUgZm9yICVzIGZhaWxlZABOREIgQmlubG9nOiAoJWQpJXMATkRCIEJpbmxvZzogQ1JFQVRFIFRBQkxFIEV2ZW50OiAlcwBOREIgQmlubG9nOiBGQUlMRUQgQ1JFQVRFIFRBQkxFIGV2ZW50IG9wZXJhdGlvbnMuIEV2ZW50OiAlcwBOREIgQmlubG9nOiBSRU5BTUUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IEZBSUxFRCBjcmVhdGUgZXZlbnQgb3BlcmF0aW9ucyBkdXJpbmcgUkVOQU1FLiBFdmVudCAlcwBVbmV4cGVjdGVkIHJlbmFtZSBjYXNlIGRldGVjdGVkLCBzcWxfY29tbWFuZDogJWQARXJyb3IgJWx1IGluIDo6Z2V0X2F1dG9faW5jcmVtZW50KCk6ICVzAENhbGxpbmcgbmRiY2x1c3Rlcl9jcmVhdGVfYmlubG9nX3NldHVwKCVzKSBpbiA6Om9wZW4AdGFibGUgJyVzJyBvcGVuZWQgcmVhZCBvbmx5AE5EQjogJy0taW5pdGlhbGl6ZScgLT4gbmRiY2x1c3RlciBwbHVnaW4gZGlzYWJsZWQATkRCOiBDaGFuZ2VkIGdsb2JhbCB2YWx1ZSBvZiBiaW5sb2dfZm9ybWF0IGZyb20gU1RBVEVNRU5UIHRvIE1JWEVEAE5EQl9TSEFSRTogdHJhaWxpbmcgc2hhcmUgJXMsIHJlbGVhc2VkIGJ5IGNsb3NlX2NhY2hlZF90YWJsZXMATkRCX1NIQVJFOiAlcyBhbHJlYWR5IGV4aXN0cyB1c2VfY291bnQ9JWQuIE1vdmluZyBhd2F5IGZvciBzYWZldHksIGJ1dCBwb3NzaWJsZSBtZW1sZWFrLgBoYW5kbGVfdHJhaWxpbmdfc2hhcmU6ICVzIHVzZV9jb3VudDogJXUAbmRiY2x1c3Rlcl9nZXRfc2hhcmU6ICVzIHVzZV9jb3VudDogJXUAbmRiY2x1c3Rlcl9yZWFsX2ZyZWVfc2hhcmU6ICVzIHVzZV9jb3VudDogJXUAbmRiY2x1c3Rlcl9yZWFsX2ZyZWVfc2hhcmU6ICVzLCBzdGlsbCBvcGVuIC0gaWdub3JlZCAnZnJlZScgKGxlYWtlZD8pAG5kYmNsdXN0ZXJfZnJlZV9zaGFyZTogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX21hcmtfc2hhcmVfZHJvcHBlZDogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX21hcmtfc2hhcmVfZHJvcHBlZDogZGVzdHJveXMgc2hhcmUgJXMAQ291bGQgbm90IGFsbG9jYXRlIFRoZF9uZGIgb2JqZWN0AE5EQiBCaW5sb2c6IE5kYiB0YWJsZXMgaW5pdGlhbGx5IHJlYWQgb25seS4AbmRiIHV0aWwgdGhyZWFkOiBtYWxsb2MgZmFpbHVyZSwgcXVlcnkgY2FjaGUgbm90IG1haW50YWluZWQgcHJvcGVybHkAVHJ5aW5nIHRvIHNldCBuZGJfcmVjdl90aHJlYWRfY3B1X21hc2sgdG8gaWxsZWdhbCB2YWx1ZSA9ICVzLCBpZ25vcmVkAFRyeWluZyB0byBzZXQgdG9vIG1hbnkgQ1BVJ3MgaW4gbmRiX3JlY3ZfdGhyZWFkX2NwdV9tYXNrLCBpZ25vcmVkIHRoaXMgdmFyaWFibGUsIGVycm9uZXVzIHZhbHVlID0gJXMAZGJ1Z19jaGVja19zaGFyZXMgb3BlbjoAICAlcy4lczogc3RhdGU6ICVzKCV1KSB1c2VfY291bnQ6ICV1AGRidWdfY2hlY2tfc2hhcmVzIGRyb3BwZWQ6AEludmFsaWQgKG9sZD8pIHRhYmxlIG9yIGRhdGFiYXNlIG5hbWUgJyVzJwBSZWNvdmVyaW5nIGFmdGVyIGEgY3Jhc2ggdXNpbmcgJXMAQ2Fubm90IHBlcmZvcm0gYXV0b21hdGljIGNyYXNoIHJlY292ZXJ5IHdoZW4gLS10Yy1oZXVyaXN0aWMtcmVjb3ZlciBpcyB1c2VkAEJhZCBtYWdpYyBoZWFkZXIgaW4gdGMgbG9nAFJlY292ZXJ5IGZhaWxlZCEgWW91IG11c3QgZW5hYmxlIGV4YWN0bHkgJWQgc3RvcmFnZSBlbmdpbmVzIHRoYXQgc3VwcG9ydCB0d28tcGhhc2UgY29tbWl0IHByb3RvY29sAENyYXNoIHJlY292ZXJ5IGZhaWxlZC4gRWl0aGVyIGNvcnJlY3QgdGhlIHByb2JsZW0gKGlmIGl0J3MsIGZvciBleGFtcGxlLCBvdXQgb2YgbWVtb3J5IGVycm9yKSBhbmQgcmVzdGFydCwgb3IgZGVsZXRlIHRjIGxvZyBhbmQgc3RhcnQgbXlzcWxkIHdpdGggLS10Yy1oZXVyaXN0aWMtcmVjb3Zlcj17Y29tbWl0fHJvbGxiYWNrfQBIZXVyaXN0aWMgY3Jhc2ggcmVjb3ZlcnkgbW9kZQBIZXVyaXN0aWMgY3Jhc2ggcmVjb3ZlcnkgZmFpbGVkAFBsZWFzZSByZXN0YXJ0IG15c3FsZCB3aXRob3V0IC0tdGMtaGV1cmlzdGljLXJlY292ZXIARmFpbGVkIHRvIGNyZWF0ZSBvciByZWNvdmVyIHJlcGxpY2F0aW9uIGluZm8gcmVwb3NpdG9yaWVzLgBEZXRlY3RlZCBtaXNjb25maWd1cmF0aW9uOiByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBjb25maWd1cmVkIHdpdGggQVVUT19QT1NJVElPTiA9IDEsIGJ1dCB0aGUgc2VydmVyIHdhcyBzdGFydGVkIHdpdGggLS1ndGlkLW1vZGU9b2ZmLiBFaXRoZXIgcmVjb25maWd1cmUgcmVwbGljYXRpb24gdXNpbmcgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDAgRk9SIENIQU5ORUwgJyUuMTkycycsIG9yIGNoYW5nZSBHVElEX01PREUgdG8gc29tZSB2YWx1ZSBvdGhlciB0aGFuIE9GRiwgYmVmb3JlIHN0YXJ0aW5nIHRoZSByZXBsaWNhIHJlY2VpdmVyIHRocmVhZC4AUmVwbGljYTogQ291bGQgbm90IHN0YXJ0IHJlcGxpY2EgZm9yIGNoYW5uZWwgJyVzJy4gb3BlcmF0aW9uIGRpc2NvbnRpbnVlZABSZXBsaWNhOiBDb3VsZCBub3Qgc3RvcCByZXBsaWNhIGZvciBjaGFubmVsICclcycgb3BlcmF0aW9uIGRpc2NvbnRpbnVlZABFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IENvdWxkIG5vdCBsb2NhdGUgcm90YXRlIGV2ZW50IGZyb20gdGhlIHNvdXJjZS4ARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiBFcnJvciByZWFkaW5nIGV2ZW50cyBmcm9tIHJlbGF5IGxvZzogJWQARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiBFcnJvciB3aGlsZSBmcmVlaW5nIElPX0NBQ0hFIG9iamVjdABSZWxheSBsb2cgcmVjb3Zlcnkgc2tpcHBlZCBmb3IgZ3JvdXAgcmVwbGljYXRpb24gY2hhbm5lbC4ARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiAlcwBFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IENvdWxkIG5vdCByZWFkIHJlbGF5IGxvZyBpbmRleCBmaWxlIGR1ZSB0byBhbiBJTyBlcnJvci4AUmVjb3ZlcnkgZnJvbSBzb3VyY2UgcG9zICVsZCBhbmQgZmlsZSAlcyVzLiBQcmV2aW91cyByZWxheSBsb2cgcG9zIGFuZCByZWxheSBsb2cgZmlsZSBoYWQgYmVlbiBzZXQgdG8gJWxsZCwgJXMgcmVzcGVjdGl2ZWx5LgBFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IHJlcGxpY2F0ZV9zYW1lX3NlcnZlcl9pZCBpcyBpbiB1c2UgYW5kIHNxbCB0aHJlYWQncyBwb3NpdGlvbnMgYXJlIG5vdCBpbml0aWFsaXplZCwgaGVuY2UgcmVsYXkgbG9nIHJlY292ZXJ5IGNhbm5vdCBoYXBwZW4uAE1UQSByZWNvdmVyeTogc3RhcnRpbmcgY29vcmRpbmF0b3IgdGhyZWFkIHRvIGZpbGwgTVRBIGdhcHMuAE1UQSByZWNvdmVyeTogZmFpbGVkIHRvIHN0YXJ0IHRoZSBjb29yZGluYXRvciB0aHJlYWQuIENoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4ATVRBIHJlY292ZXJ5OiBhdXRvbWF0aWMgcmVjb3ZlcnkgZmFpbGVkLiBFaXRoZXIgdGhlIHJlcGxpY2Egc2VydmVyIGhhZCBzdG9wcGVkIGR1ZSB0byBhbiBlcnJvciBkdXJpbmcgYW4gZWFybGllciBzZXNzaW9uIG9yIHJlbGF5IGxvZ3MgYXJlIGNvcnJ1cHRlZC5GaXggdGhlIGNhdXNlIG9mIHRoZSByZXBsaWNhIHNpZGUgZXJyb3IgYW5kIHJlc3RhcnQgdGhlIHJlcGxpY2Egc2VydmVyIG9yIGNvbnNpZGVyIHVzaW5nIFJFU0VUIFJFUExJQ0EuAEZhaWxlZCB0byBvcGVuIHRoZSByZWxheSBsb2cgJyVzJyAocmVsYXlfbG9nX3BvcyAlcykuAE1UQSByZWNvdmVyeTogY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4AU2VydmVyIGlkIG5vdCBzZXQsIHdpbGwgbm90IHN0YXJ0IHJlcGxpY2ElcwBDYW4ndCBjcmVhdGUgcmVwbGljYSB0aHJlYWQlcy4AVGhlIHJlcGxpY2EgSU8gdGhyZWFkJXMgd2FzIGtpbGxlZCB3aGlsZSBleGVjdXRpbmcgaW5pdGlhbGl6YXRpb24gcXVlcnkgJyVzJwBUaGUgc291cmNlJ3MgVVVJRCBoYXMgY2hhbmdlZCwgYWx0aG91Z2ggdGhpcyBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3MgeW91IGhhdmUgY2hhbmdlZCBpdCBtYW51YWxseS4gVGhlIG9sZCBVVUlEIHdhcyAlcy4ARm91bmQgYSBzb3VyY2Ugd2l0aCBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBvbGRlciB0aGFuIDUuMC4gV2l0aCBjaGVja3N1bXMgZW5hYmxlZCBvbiB0aGUgcmVwbGljYSwgcmVwbGljYXRpb24gbWlnaHQgbm90IHdvcmsgY29ycmVjdGx5LiBUbyBlbnN1cmUgY29ycmVjdCByZXBsaWNhdGlvbiwgcmVzdGFydCB0aGUgcmVwbGljYSBzZXJ2ZXIgd2l0aCAtLXJlcGxpY2Ffc3FsX3ZlcmlmeV9jaGVja3N1bT0wLgAiU0VMRUNUIFVOSVhfVElNRVNUQU1QKCkiIGZhaWxlZCBvbiBzb3VyY2UsIGRvIG5vdCB0cnVzdCBjb2x1bW4gU2Vjb25kc19CZWhpbmRfU291cmNlIG9mIFNIT1cgUkVQTElDQSBTVEFUVVMuIEVycm9yOiAlcyAoJWQpAEZhaWxlZCB0byBmbHVzaCBjb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkuAFRoZSBsZW5ndGggb2YgcmVwb3J0X2hvc3QgaXMgJXp1LiBJdCBpcyBsYXJnZXIgdGhhbiB0aGUgbWF4IGxlbmd0aCglZCksIHNvIHRoaXMgcmVwbGljYSBjYW5ub3QgYmUgcmVnaXN0ZXJlZCB0byB0aGUgc291cmNlJXMuAFRoZSBsZW5ndGggb2YgcmVwb3J0X3VzZXIgaXMgJXp1LiBJdCBpcyBsYXJnZXIgdGhhbiB0aGUgbWF4IGxlbmd0aCglZCksIHNvIHRoaXMgcmVwbGljYSBjYW5ub3QgYmUgcmVnaXN0ZXJlZCB0byB0aGUgc291cmNlJXMuAFRoZSBsZW5ndGggb2YgcmVwb3J0X3Bhc3N3b3JkIGlzICV6dS4gSXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heCBsZW5ndGgoJWQpLCBzbyB0aGlzIHJlcGxpY2EgY2Fubm90IGJlIHJlZ2lzdGVyZWQgdG8gdGhlIHNvdXJjZSVzLgBFcnJvciBvbiAlczogJWQgICVzLCB3aWxsIHJldHJ5IGluICVkIHNlY3MARXJyb3IgcmVhZGluZyBwYWNrZXQgZnJvbSBzZXJ2ZXIlczogJXMgKHNlcnZlcl9lcnJubz0lZCkAUmVwbGljYSVzOiByZWNlaXZlZCBlbmQgcGFja2V0IGZyb20gc2VydmVyIGR1ZSB0byBkdW1wIHRocmVhZCBiZWluZyBraWxsZWQgb24gc291cmNlLiBEdW1wIHRocmVhZHMgYXJlIGtpbGxlZCBmb3IgZXhhbXBsZSBkdXJpbmcgc291cmNlIHNodXRkb3duLCBleHBsaWNpdGx5IGJ5IGEgdXNlciwgb3Igd2hlbiB0aGUgc291cmNlIHJlY2VpdmVzIGEgYmlubG9nIHNlbmQgcmVxdWVzdCBmcm9tIGEgZHVwbGljYXRlIHNlcnZlciBVVUlEIDwlcz4gOiBFcnJvciAlcwBNdWx0aS10aHJlYWRlZCByZXBsaWNhIHN0YXRpc3RpY3Mlczogc2Vjb25kcyBlbGFwc2VkID0gJWx1OyBldmVudHMgYXNzaWduZWQgPSAlbGx1OyB3b3JrZXIgcXVldWVzIGZpbGxlZCBvdmVyIG92ZXJydW4gbGV2ZWwgPSAlbHU7IHdhaXRlZCBkdWUgYSBXb3JrZXIgcXVldWUgZnVsbCA9ICVsdTsgd2FpdGVkIGR1ZSB0aGUgdG90YWwgc2l6ZSA9ICVsdTsgd2FpdGVkIGF0IGNsb2NrIGNvbmZsaWN0cyA9ICVsbHUgd2FpdGVkIChjb3VudCkgd2hlbiBXb3JrZXJzIG9jY3VwaWVkID0gJWx1IHdhaXRlZCB3aGVuIFdvcmtlcnMgb2NjdXBpZWQgPSAlbGx1AFJlcGxpY2ElczogTVRBIFJlY292ZXJ5IGhhcyBjb21wbGV0ZWQgYXQgcmVsYXkgbG9nICVzLCBwb3NpdGlvbiAlbGx1IHNvdXJjZSBsb2cgJXMsIHBvc2l0aW9uICVsbHUuAEVycm9yIGluaXRpYWxpemluZyByZWxheSBsb2cgcG9zaXRpb24lczogJXMAUmVwbGljYSBJL08gdGhyZWFkJXM6IGNvbm5lY3RlZCB0byBzb3VyY2UgJyVzQCVzOiVkJyxyZXBsaWNhdGlvbiBzdGFydGVkIGluIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVzAFJlcGxpY2EgSS9PIHRocmVhZCVzIGtpbGxlZCB3aGlsZSBjb25uZWN0aW5nIHRvIHNvdXJjZQBSZXBsaWNhIEkvTyB0aHJlYWQgY291bGRuJ3QgcmVnaXN0ZXIgb24gc291cmNlAEZvcmNpbmcgdG8gcmVjb25uZWN0IHJlcGxpY2EgSS9PIHRocmVhZCVzAEZhaWxlZCBvbiByZXF1ZXN0X2R1bXAoKSVzAExvZyBlbnRyeSBvbiBzb3VyY2UgaXMgbG9uZ2VyIHRoYW4gcmVwbGljYV9tYXhfYWxsb3dlZF9wYWNrZXQgKCVsdSkgb24gcmVwbGljYS4gSWYgdGhlIGVudHJ5IGlzIGNvcnJlY3QsIHJlc3RhcnQgdGhlIHNlcnZlciB3aXRoIGEgaGlnaGVyIHZhbHVlIG9mIHJlcGxpY2FfbWF4X2FsbG93ZWRfcGFja2V0AFN0b3BwaW5nIHJlcGxpY2EgSS9PIHRocmVhZCBkdWUgdG8gb3V0LW9mLW1lbW9yeSBlcnJvciBmcm9tIHNvdXJjZQBSZXBsaWNhIEkvTyB0aHJlYWQgYWJvcnRlZCB3aGlsZSB3YWl0aW5nIGZvciByZWxheSBsb2cgc3BhY2UAUmVwbGljYSBJL08gdGhyZWFkIGV4aXRpbmclcywgcmVhZCB1cCB0byBsb2cgJyVzJywgcG9zaXRpb24gJXMARmFpbGVkIGR1cmluZyByZXBsaWNhIHdvcmtlciBpbml0aWFsaXphdGlvbiVzAFJlcGxpY2E6IE1UQSBncm91cCByZWNvdmVyeSBhcHBsaWVyIG1ldGFkYXRhIGJhc2VkIG9uIFdvcmtlci1JZCAlbHUsIGdyb3VwX3JlbGF5X2xvZ19uYW1lICVzLCBncm91cF9yZWxheV9sb2dfcG9zICVsbHUgZ3JvdXBfc291cmNlX2xvZ19uYW1lICVzLCBncm91cF9zb3VyY2VfbG9nX3BvcyAlbGx1AEVycm9yIGxvb2tpbmcgZm9yICVzLgBSZXBsaWNhOiBNVEEgZ3JvdXAgcmVjb3ZlcnkgYXBwbGllciBtZXRhZGF0YSBncm91cF9zb3VyY2VfbG9nX25hbWUgJXMsIGV2ZW50X3NvdXJjZV9sb2dfcG9zICVsbHUuAEVycm9yIGxvb2tpbmcgZm9yIGZpbGUgYWZ0ZXIgJXMuAFRoaXMgYW4gZXJyb3IgY250ICE9IG10YV9jaGVja3BvaW50X3BlcmlvZABGYWlsZWQgZHVyaW5nIHJlcGxpY2Egd29ya2VyIHRocmVhZCBjcmVhdGlvbiVzAEZhaWxlZCBkdXJpbmcgcmVwbGljYSB3b3JrZXIgdGhyZWFkIGNyZWF0aW9uJXMgKGVycm5vPSAlZCkARmFpbGVkIHRvIGluaXQgcGFydGl0aW9ucyBoYXNoAFJlcGxpY2EgU1FMIHRocmVhZCA6IE5EQiA6IFRhYmxlcyBub3QgYXZhaWxhYmxlIGFmdGVyICVsdSBzZWNvbmRzLiBDb25zaWRlciBpbmNyZWFzaW5nIC0tbmRiLXdhaXQtc2V0dXAgdmFsdWUAUmVwbGljYSBTUUwgdGhyZWFkJXMgaW5pdGlhbGl6ZWQsIHN0YXJ0aW5nIHJlcGxpY2F0aW9uIGluIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVzLCByZWxheSBsb2cgJyVzJyBwb3NpdGlvbjogJXMAJ1NRTF9SRVBMSUNBX1NLSVBfQ09VTlRFUj0lbGQnIGV4ZWN1dGVkIGF0IHJlbGF5X2xvZ19maWxlPSclcycsIHJlbGF5X2xvZ19wb3M9JyVsZCcsIHNvdXJjZV9sb2dfbmFtZT0nJXMnLCBzb3VyY2VfbG9nX3Bvcz0nJWxkJyBhbmQgbmV3IHBvc2l0aW9uIGF0IHJlbGF5X2xvZ19maWxlPSclcycsIHJlbGF5X2xvZ19wb3M9JyVsZCcsIHNvdXJjZV9sb2dfbmFtZT0nJXMnLCBzb3VyY2VfbG9nX3Bvcz0nJWxkJyAAUmVwbGljYSAoYWRkaXRpb25hbCBpbmZvKTogJXMgRXJyb3JfY29kZTogTVktJTA2ZABSZXBsaWNhOiAlcyBFcnJvcl9jb2RlOiBNWS0lMDZkAEVycm9yIGxvYWRpbmcgdXNlci1kZWZpbmVkIGxpYnJhcnksIHJlcGxpY2EgU1FMIHRocmVhZCBhYm9ydGVkLiBJbnN0YWxsIHRoZSBtaXNzaW5nIGxpYnJhcnksIGFuZCByZXN0YXJ0IHRoZSByZXBsaWNhIFNRTCB0aHJlYWQgd2l0aCAiU1RBUlQgUkVQTElDQSIuIFdlIHN0b3BwZWQgYXQgbG9nICclcycgcG9zaXRpb24gJXMARXJyb3IgcnVubmluZyBxdWVyeSwgcmVwbGljYSBTUUwgdGhyZWFkIGFib3J0ZWQuIEZpeCB0aGUgcHJvYmxlbSwgYW5kIHJlc3RhcnQgdGhlIHJlcGxpY2EgU1FMIHRocmVhZCB3aXRoICJTVEFSVCBSRVBMSUNBIi4gV2Ugc3RvcHBlZCBhdCBsb2cgJyVzJyBwb3NpdGlvbiAlcwBSZXBsaWNhIFNRTCB0aHJlYWQlcyBleGl0aW5nLCByZXBsaWNhdGlvbiBzdG9wcGVkIGluIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVzAFJlYWQgaW52YWxpZCBldmVudCBmcm9tIHNvdXJjZTogJyVzJywgc291cmNlIGNvdWxkIGJlIGNvcnJ1cHQgYnV0IGEgbW9yZSBsaWtlbHkgY2F1c2Ugb2YgdGhpcyBpcyBhIGJ1ZwBUaGUgcXVldWUgZXZlbnQgZmFpbGVkIGZvciBjaGFubmVsICclcycgYXMgaXRzIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZC4AQW4gdW5leHBlY3RlZCBldmVudCBzZXF1ZW5jZSB3YXMgZGV0ZWN0ZWQgYnkgdGhlIElPIHRocmVhZCB3aGlsZSBxdWV1aW5nIHRoZSBldmVudCByZWNlaXZlZCBmcm9tIHNvdXJjZSAnJXMnIGJpbmFyeSBsb2cgZmlsZSwgYXQgcG9zaXRpb24gJWxsdS4AJyVzJyBjYW4gbm90IGJlIHVzZWQgYXMgY2xpZW50IGNoYXJhY3RlciBzZXQuICclcycgd2lsbCBiZSB1c2VkIGFzIGRlZmF1bHQgY2xpZW50IGNoYXJhY3RlciBzZXQgd2hpbGUgY29ubmVjdGluZyB0byBzb3VyY2UuAFJlcGxpY2ElczogY29ubmVjdGVkIHRvIHNvdXJjZSAnJXNAJXM6JWQnLHJlcGxpY2F0aW9uIHJlc3VtZWQgaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMAbmV4dCBsb2cgJyVzJyBpcyBhY3RpdmUAbmV4dCBsb2cgJyVzJyBpcyBub3QgYWN0aXZlAFJlcGxpY2EgU1FMIHRocmVhZCVzOiBJL08gZXJyb3IgcmVhZGluZyBldmVudCAoZXJybm86ICVkICBjdXJfbG9nLT5lcnJvcjogJWQpAEVycm9yIHJlYWRpbmcgcmVsYXkgbG9nIGV2ZW50JXM6ICVzACdDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPJXMgZXhlY3V0ZWQnLiBQcmV2aW91cyBzdGF0ZSBzb3VyY2VfaG9zdD0nJXMnLCBzb3VyY2VfcG9ydD0gJXUsIHNvdXJjZV9sb2dfZmlsZT0nJXMnLCBzb3VyY2VfbG9nX3Bvcz0gJWxkLCBzb3VyY2VfYmluZD0nJXMnLiBOZXcgc3RhdGUgc291cmNlX2hvc3Q9JyVzJywgc291cmNlX3BvcnQ9ICV1LCBzb3VyY2VfbG9nX2ZpbGU9JyVzJywgc291cmNlX2xvZ19wb3M9ICVsZCwgc291cmNlX2JpbmQ9JyVzJy4AUmVwbGljYTogQ2Fubm90IGNyZWF0ZSBuZXcgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgd2hlbiByZXBvc2l0b3JpZXMgYXJlIG9mIHR5cGUgRklMRS4gQ29udmVydCByZXBsaWNhIHJlcG9zaXRvcmllcyB0byBUQUJMRSB0byByZXBsaWNhdGUgZnJvbSBtdWx0aXBsZSBzb3VyY2VzLgBsb2cgJXMgbGlzdGVkIGluIHRoZSBpbmRleCwgYnV0IGZhaWxlZCB0byBzdGF0LgBDb3VsZCBub3QgZmluZCBmaXJzdCBsb2cgd2hpbGUgY291bnRpbmcgcmVsYXkgbG9nIHNwYWNlLgBVbmFibGUgdG8gdXNlIHJlcGxpY2EncyB0ZW1wb3JhcnkgZGlyZWN0b3J5ICclcycuAFBhdGggJyVzJyBpcyBhIGRpcmVjdG9yeSBuYW1lLCBwbGVhc2Ugc3BlY2lmeSBhIGZpbGUgbmFtZSBmb3IgLS1yZWxheS1sb2cgb3B0aW9uLgBQYXRoICclcycgaXMgYSBkaXJlY3RvcnkgbmFtZSwgcGxlYXNlIHNwZWNpZnkgYSBmaWxlIG5hbWUgZm9yIC0tcmVsYXktbG9nLWluZGV4IG9wdGlvbi4ATmVpdGhlciAtLXJlbGF5LWxvZyBub3IgLS1yZWxheS1sb2ctaW5kZXggd2VyZSB1c2VkOyBzbyByZXBsaWNhdGlvbiBtYXkgYnJlYWsgd2hlbiB0aGlzIE15U1FMIHNlcnZlciBhY3RzIGFzIGEgcmVwbGljYSBhbmQgaGFzIGhpcyBob3N0bmFtZSBjaGFuZ2VkISEgUGxlYXNlIHVzZSAnLS1yZWxheS1sb2c9JXMnIHRvIGF2b2lkIHRoaXMgcHJvYmxlbS4ARmFpbGVkIGluIG9wZW5faW5kZXhfZmlsZSgpIGNhbGxlZCBmcm9tIFJlbGF5X2xvZ19pbmZvOjpybGlfaW5pdF9pbmZvKCkuAEZhaWxlZCBpbiBpbml0X2d0aWRfc2V0cygpIGNhbGxlZCBmcm9tIFJlbGF5X2xvZ19pbmZvOjpybGlfaW5pdF9pbmZvKCkuAEZhaWxlZCBpbiBvcGVuX2xvZygpIGNhbGxlZCBmcm9tIFJlbGF5X2xvZ19pbmZvOjpybGlfaW5pdF9pbmZvKCkuAEVycm9yIHdyaXRpbmcgcmVsYXkgbG9nIGNvbmZpZ3VyYXRpb24uAGdldF9uZGJfYmxvYnNfdmFsdWU6IG15X21hbGxvYygldSkgZmFpbGVkAE5EQjogVGhyZWFkIGlkICV1IHRpbWVkIG91dCAoMzBzKSB3YWl0aW5nIGZvciBlcG9jaCAldS8ldSB0byBiZSBoYW5kbGVkLiAgUHJvZ3Jlc3MgOiAldS8ldSAtPiAldS8ldS4ATkRCOiBJbmNvbnNpc3RlbmN5IGRldGVjdGVkIGluIGRpc3RyaWJ1dGVkIHByaXZpbGVnZSB0YWJsZXMuIFRhYmxlICclcy4lcycgaXMgbm90IGRpc3RyaWJ1dGVkAE5EQjogQ3JlYXRpbmcgJXMuJXMATkRCOiBGbHVzaGluZyAlcy4lcwBOREI6IENsZWFuaW5nIHN0cmF5IHRhYmxlcyBmcm9tIGRhdGFiYXNlICclcycATkRCOiBEaXNjb3ZlcmVkIG1pc3NpbmcgZGF0YWJhc2UgJyVzJwBOREI6IERpc2NvdmVyZWQgcmVtYWluaW5nIGRhdGFiYXNlICclcycATkRCOiBuZGJjbHVzdGVyX2ZpbmRfYWxsX2RhdGFiYXNlcyByZXRyeTogJXUgLSAlcwBOREI6IG5kYmNsdXN0ZXJfZmluZF9hbGxfZGF0YWJhc2VzIGZhaWw6ICV1IC0gJXMATkRCOiBza2lwcGluZyBzZXR1cCB0YWJsZSAlcy4lcywgaW4gc3RhdGUgJWQATkRCOiBmYWlsZWQgdG8gc2V0dXAgdGFibGUgJXMuJXMsIGVycm9yOiAlZCwgJXMATkRCOiBtaXNzaW5nIGZybSBmb3IgJXMuJXMsIGRpc2NvdmVyaW5nLi4uAE5EQjogbWlzbWF0Y2ggaW4gZnJtIGZvciAlcy4lcywgZGlzY292ZXJpbmcuLi4AbmRiX2JpbmxvZ19zZXR1cDogQ2xlYW4gdXAgbGVmdG92ZXJzAE5EQiAlczogd2FpdGluZyBtYXggJXUgc2VjIGZvciAlcyAlcy4gIGVwb2NoczogKCV1LyV1LCV1LyV1LCV1LyV1KSAgaW5qZWN0b3IgcHJvY19pbmZvOiAlcwBOREIgJXM6IHdhaXRpbmcgbWF4ICV1IHNlYyBmb3IgJXMgJXMuICBlcG9jaHM6ICgldS8ldSwldS8ldSwldS8ldSkgIGluamVjdG9yIHByb2NfaW5mbzogJXMgbWFwOiAleCUwOHgATkRCICVzOiBkaXN0cmlidXRpbmcgJXMgdGltZWQgb3V0LiBJZ25vcmluZy4uLgBOREIgJXM6IG5vdCB3YWl0aW5nIGZvciBkaXN0cmlidXRpbmcgJXMATkRCOiBkaXN0cmlidXRlZCAlcy4lcygldS8ldSkgdHlwZTogJXMoJXUpIHF1ZXJ5OiAnJXMnIHRvICV4JTA4eABOREI6IGRpc3RyaWJ1dGlvbiBvZiAlcy4lcygldS8ldSkgdHlwZTogJXMoJXUpIHF1ZXJ5OiAnJXMnIC0gY29tcGxldGUhAE5EQiBTY2hlbWEgZGlzdDogRGF0YSBub2RlOiAlZCBmYWlsZWQsIHN1YnNjcmliZXIgYml0bWFzayAleCUwOHgATkRCIFNjaGVtYSBkaXN0OiBEYXRhIG5vZGU6ICVkIHJlcG9ydHMgc3Vic2NyaWJlIGZyb20gbm9kZSAlZCwgc3Vic2NyaWJlciBiaXRtYXNrICV4JTA4eABOREIgU2NoZW1hIGRpc3Q6IERhdGEgbm9kZTogJWQgcmVwb3J0cyB1bnN1YnNjcmliZSBmcm9tIG5vZGUgJWQsIHN1YnNjcmliZXIgYml0bWFzayAleCUwOHgATkRCIEJpbmxvZzogQ291bGQgbm90IGRpc2NvdmVyIHRhYmxlICclcy4lcycgZnJvbSBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiBteV9lcnJubzogJWQATkRCOiB1bmtub3duIHZhbHVlIGZvciBiaW5sb2cgc2lnbmFsbGluZyAweCVYLCAlcyBub3QgbG9nZ2VkAE5EQjogcmVwbHkgdG8gJXMuJXMoJXUvJXUpIGZyb20gJXMgdG8gJXglMDh4AE5EQjogQ291bGQgbm90IHJlbGVhc2Ugc2xvY2sgb24gJyVzLiVzJywgRXJyb3IgY29kZTogJWQgTWVzc2FnZTogJXMATkRCIHNjaGVtYTogQ291bGQgbm90IGZpbmQgdGFibGUgJyVzLiVzJyBpbiBOREIATkRCOiBEaXNjYXJkaW5nIGV2ZW50Li4ubm8gb2JqOiAlcyAoJXUvJXUpAE5EQjogRGlzY2FyZGluZyBldmVudC4uLmtleTogJXMgbm9uIG1hdGNoaW5nIGlkL3ZlcnNpb24gWyV1LyV1XSAhPSBbJXUvJXVdAE5EQjogQ0xFQVJfU0xPQ0sga2V5OiAlcygldS8ldSkgJXglMDh4LCBmcm9tICVzIHRvICV4JTA4eABOREIgQmlubG9nOiBTa2lwcGluZyBsb2NhbGx5IGRlZmluZWQgdGFibGUgJyVzLiVzJyBmcm9tIGJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuAE5EQiBCaW5sb2c6IGhhbmRsaW5nIG9ubGluZSBhbHRlci9yZW5hbWUATkRCIEJpbmxvZzogRmFpbGVkIHRvIHJlLW9wZW4gc2hhZG93IHRhYmxlICVzLiVzAE5EQiBCaW5sb2c6IGhhbmRsaW5nIG9ubGluZSBhbHRlci9yZW5hbWUgZG9uZQBOREIgQmlubG9nOiBTa2lwcGluZyBkcm9wIG9mIGxvY2FsbHkgZGVmaW5lZCB0YWJsZSAnJXMuJXMnIGZyb20gYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4gAE5EQiBCaW5sb2c6IFNraXBwaW5nIHJlbmFtaW5nIGxvY2FsbHkgZGVmaW5lZCB0YWJsZSAnJXMuJXMnIGZyb20gYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4gAE5EQiBCaW5sb2c6IFNraXBwaW5nIGRyb3AgZGF0YWJhc2UgJyVzJyBzaW5jZSBpdCBjb250YWluZWQgbG9jYWwgdGFibGVzIGJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuIABHb3QgZGlzdF9wcml2IGV2ZW50OiAlcywgZmx1c2hpbmcgcHJpdmlsZWdlcwBOREI6IGdvdCBzY2hlbWEgZXZlbnQgb24gJXMuJXMoJXUvJXUpIHF1ZXJ5OiAnJXMnIHR5cGU6ICVzKCVkKSBub2RlOiAldSBzbG9jazogJXglMDh4AE5EQiBzY2hlbWE6IFNraXBwaW5nIG9sZCBzY2hlbWEgb3BlcmF0aW9uKFJFTkFNRV9UQUJMRV9ORVcpIG9uICVzLiVzAE5EQiBTY2hlbWEgZGlzdDogY2x1c3RlciBmYWlsdXJlIGF0IGVwb2NoICV1LyV1LgBOREIgQmlubG9nOiBuZGIgdGFibGVzIGluaXRpYWxseSByZWFkIG9ubHkgb24gcmVjb25uZWN0LgBOREIgU2NoZW1hIGRpc3Q6IHVua25vd24gZXZlbnQgJXUsIGlnbm9yaW5nLi4uAE5EQiBCaW5sb2c6IE9wZW5pbmcgbmRiX2JpbmxvZ19pbmRleDogJWQsICclcycATkRCIEJpbmxvZzogVW5hYmxlIHRvIGxvY2sgdGFibGUgbmRiX2JpbmxvZ19pbmRleABOREIgQmlubG9nOiBJbmplY3RpbmcgcmFuZG9tIHdyaXRlIGZhaWx1cmUATkRCIEJpbmxvZzogRmFpbGVkIHdyaXRpbmcgdG8gbmRiX2JpbmxvZ19pbmRleCBmb3IgZXBvY2ggJXUvJXUgIG9yaWdfc2VydmVyX2lkICV1IG9yaWdfZXBvY2ggJXUvJXUgd2l0aCBlcnJvciAlZC4ATkRCIEJpbmxvZzogV3JpdGluZyByb3cgKCVzKSB0byBuZGJfYmlubG9nX2luZGV4IC0gJXMATkRCIEJpbmxvZzogRmFpbGVkIGNvbW1pdHRpbmcgdHJhbnNhY3Rpb24gdG8gbmRiX2JpbmxvZ19pbmRleCB3aXRoIGVycm9yICVkLgBOREIgQmlubG9nOiBGYWlsZWQgd3JpdGluZyB0byBuZGJfYmlubG9nX2luZGV4IHRhYmxlIHdoaWxlIHJldHJ5aW5nIGFmdGVyIGtpbGwgZHVyaW5nIHNodXRkb3duAE5EQjogc2VydmVyIGlkIHNldCB0byB6ZXJvIC0gY2hhbmdlcyBsb2dnZWQgdG8gYmluIGxvZyB3aXRoIHNlcnZlciBpZCB6ZXJvIHdpbGwgYmUgbG9nZ2VkIHdpdGggYW5vdGhlciBzZXJ2ZXIgaWQgYnkgcmVwbGljYSBteXNxbGRzAE5EQjogc2VydmVyIGlkIHByb3ZpZGVkIGlzIHRvbyBsYXJnZSB0byBiZSByZXByZXNlbnRlZCBpbiBvcHRfc2VydmVyX2lkX2JpdHMgb3IgaXMgcmVzZXJ2ZWQATkRCOiAtLW5kYi1sb2ctdHJhbnNhY3Rpb24taWQgcmVxdWlyZXMgdjIgQmlubG9nIHJvdyBldmVudHMgYnV0IHNlcnZlciBpcyB1c2luZyB2MS4ATkRCOiBuZGItbG9nLWFwcGx5LXN0YXR1cyBmb3JjaW5nICVzLiVzIHRvIEZVTEwgVVNFX1dSSVRFAE5EQiBCaW5sb2c6ICVzACVzACVzAE5EQiBSZXBsaWNhOiBUYWJsZSAlcy4lcyA6IFBhcnNlIGVycm9yIG9uIGNvbmZsaWN0IGZuIDogJXMATkRCIFJlcGxpY2E6IFRhYmxlICVzLiVzIDogJXMATkRCIEJpbmxvZzogRmFpbGVkIHRvIGdldCB0YWJsZSAlcyBmcm9tIG5kYjogJXMsICVkAE5EQiBCaW5sb2c6IE5PVCBsb2dnaW5nICVzAE5EQiBCaW5sb2c6IEZBSUxFRCBDUkVBVEUgKERJU0NPVkVSKSBUQUJMRSBFdmVudDogJXMATkRCIEJpbmxvZzogQ1JFQVRFIChESVNDT1ZFUikgVEFCTEUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IERJU0NPVkVSIFRBQkxFIEV2ZW50OiAlcwBOREIgQmlubG9nOiBsb2dnaW5nIG9mIHRhYmxlICVzIHdpdGggQkxPQiBhdHRyaWJ1dGUgYW5kIG5vIFBLIGlzIG5vdCBzdXBwb3J0ZWQATkRCIEJpbmxvZzogVW5hYmxlIHRvIGNyZWF0ZSBldmVudCBpbiBkYXRhYmFzZS4gRXZlbnQ6ICVzICBFcnJvciBDb2RlOiAlZCAgTWVzc2FnZTogJXMATkRCIEJpbmxvZzogVW5hYmxlIHRvIGNyZWF0ZSBldmVudCBpbiBkYXRhYmFzZS4gIEF0dGVtcHQgdG8gY29ycmVjdCB3aXRoIGRyb3AgZmFpbGVkLiBFdmVudDogJXMgRXJyb3IgQ29kZTogJWQgTWVzc2FnZTogJXMATkRCIEJpbmxvZzogVW5hYmxlIHRvIGNyZWF0ZSBldmVudCBpbiBkYXRhYmFzZS4gIEF0dGVtcHQgdG8gY29ycmVjdCB3aXRoIGRyb3Agb2ssIGJ1dCBjcmVhdGUgZmFpbGVkLiBFdmVudDogJXMgRXJyb3IgQ29kZTogJWQgTWVzc2FnZTogJXMATkRCIEJpbmxvZzogZGlzY292ZXIgcmV1c2luZyBvbGQgZXYgb3AATkRCIEJpbmxvZzogQ3JlYXRpbmcgTmRiRXZlbnRPcGVyYXRpb24gZmFpbGVkIGZvciAlcwBOREIgQmlubG9nOiBDcmVhdGluZyBOZGJFdmVudE9wZXJhdGlvbiBibG9iIGZpZWxkICV1IGhhbmRsZXMgZmFpbGVkIChjb2RlPSVkKSBmb3IgJXMATkRCIEJpbmxvZzogbmRiZXZlbnQtPmV4ZWN1dGUgZmFpbGVkIGZvciAlczsgJWQgJXMATkRCIEJpbmxvZzogbG9nZ2luZyAlcyAoJXMsJXMpAE5EQiBCaW5sb2c6IFVuYWJsZSB0byBkcm9wIGV2ZW50IGluIGRhdGFiYXNlLiBFdmVudDogJXMgRXJyb3IgQ29kZTogJWQgTWVzc2FnZTogJXMATkRCICVzOiAlcyB0aW1lZCBvdXQuIElnbm9yaW5nLi4uAE5EQiBCaW5sb2c6IHVuaGFuZGxlZCBlcnJvciAlZCBmb3IgdGFibGUgJXMATkRCIEJpbmxvZzogY2x1c3RlciBmYWlsdXJlIGZvciAlcyBhdCBlcG9jaCAldS8ldS4ATkRCIEJpbmxvZzogdW5rbm93biBub24gZGF0YSBldmVudCAlZCBmb3IgJXMuIElnbm9yaW5nLi4uAE5EQjogQmlubG9nIEluamVjdG9yIGRpc2NhcmRpbmcgcm93IGV2ZW50IG1ldGEgZGF0YSBhcyBzZXJ2ZXIgaXMgdXNpbmcgdjEgcm93IGV2ZW50cy4gKCV1ICV4KQByZW1vdmVfYWxsX2V2ZW50X29wZXJhdGlvbnM6IFJlbWFpbmluZyBvcGVuIHRhYmxlczogACAgJXMuJXMsIHVzZV9jb3VudDogJXUATkRCOiBDb3VsZCBub3QgZ2V0IGFwcGx5IHN0YXR1cyBzaGFyZQBOREIgQmlubG9nOiBTZXJ2ZXIgc2h1dGRvd24gZGV0ZWN0ZWQgd2hpbGUgd2FpdGluZyBmb3IgbmRiY2x1c3RlciB0byBzdGFydC4uLgBOREIgQmlubG9nOiBjbHVzdGVyIGhhcyBiZWVuIHJlc3RhcnRlZCAtLWluaXRpYWwgb3Igd2l0aCBvbGRlciBmaWxlc3lzdGVtLiBuZGJfbGF0ZXN0X2hhbmRsZWRfYmlubG9nX2Vwb2NoOiAldS8ldSwgd2hpbGUgY3VycmVudCBlcG9jaDogJXUvJXUuIFJFU0VUIEJJTkFSWSBMT0dTIEFORCBHVElEUyBzaG91bGQgYmUgaXNzdWVkLiBSZXNldHRpbmcgbmRiX2xhdGVzdF9oYW5kbGVkX2JpbmxvZ19lcG9jaC4ATkRCIEJpbmxvZzogY2x1c3RlciBoYXMgcmVjb25uZWN0ZWQuIENoYW5nZXMgdG8gdGhlIGRhdGFiYXNlIHRoYXQgb2NjdXJyZWQgd2hpbGUgZGlzY29ubmVjdGVkIHdpbGwgbm90IGJlIGluIHRoZSBiaW5sb2cATkRCIEJpbmxvZzogc3RhcnRpbmcgbG9nIGF0IGVwb2NoICV1LyV1AE5EQiBCaW5sb2c6IG5kYiB0YWJsZXMgd3JpdGFibGUATkRCIEJpbmxvZzogU2VydmVyIHNodXRkb3duIGRldGVjdGVkLi4uAE5EQiBCaW5sb2c6IEp1c3QgbG9zdCBzY2hlbWEgY29ubmVjdGlvbiwgaGFuZ2luZyBhcm91bmQATkRCIEJpbmxvZzogLi4uYW5kIG9uIG91ciB3YXkATkRCOiBlcnJvciAlbHUgKCVzKSBvbiBoYW5kbGluZyBiaW5sb2cgc2NoZW1hIGV2ZW50AE5EQiBCaW5sb2c6IEZhaWxlZCB0byBpbmplY3QgYXBwbHkgc3RhdHVzIHdyaXRlIHJvdwBOREIgQmlubG9nOiBFcnJvciBkdXJpbmcgUk9MTEJBQ0sgb2YgR0NJICV1LyV1LiBFcnJvcjogJWQATkRCIEJpbmxvZzogRXJyb3IgZHVyaW5nIENPTU1JVCBvZiBHQ0kuIEVycm9yOiAlZABOREIgQmlubG9nOiBsYXRlc3QgdHJhbnNhY3Rpb24gaW4gZXBvY2ggJXUvJXUgbm90IGluIGJpbmxvZyBhcyBsYXRlc3QgaGFuZGxlZCBlcG9jaCBpcyAldS8ldQBOREIgQmlubG9nOiBSZWxlYXNlIGV4dHJhIHNoYXJlIHJlZmVyZW5jZXMATkRCIEJpbmxvZzogcmVtYWluaW5nIG9wZW4gdGFibGVzOiAAICAlcy4lcyBzdGF0ZTogJXUgdXNlX2NvdW50OiAldQBXcm9uZyB0cmVlOiBQYXJlbnQgZG9lc24ndCBwb2ludCBhdCBwYXJlbnQAV3JvbmcgdHJlZTogUm9vdCBzaG91bGQgYmUgYmxhY2sAV3JvbmcgdHJlZTogRm91bmQgdHdvIHJlZCBpbiBhIHJvdwBXcm9uZyB0cmVlOiBGb3VuZCByaWdodCA9PSBsZWZ0AFdyb25nIHRyZWU6IEluY29ycmVjdCBibGFjay1jb3VudDogJWQgLSAlZABVc2VfY291bnQ6IFdyb25nIGNvdW50ICVsdSBmb3Igb3JpZ2luICVwAFVzZV9jb3VudDogV3JvbmcgY291bnQgZm9yIGtleSBhdCAlcCwgJWx1IHNob3VsZCBiZSAlbHUAV3JvbmcgbnVtYmVyIG9mIGVsZW1lbnRzOiAldSAoc2hvdWxkIGJlICV1KSBmb3IgdHJlZSBhdCAlcABFcnJvciByZWFkaW5nIHJlcGxpY2Egd29ya2VyIGNvbmZpZ3VyYXRpb24ARXJyb3Igd3JpdGluZyByZXBsaWNhIHdvcmtlciBjb25maWd1cmF0aW9uAEZhaWxlZCB0byBvcGVuIHJlbGF5IGxvZyAlcywgZXJyb3I6ICVzAEVycm9yIHdoZW4gd29ya2VyIHJlYWQgcmVsYXkgbG9nIGV2ZW50cyxyZWxheSBsb2cgbmFtZSAlcywgcG9zaXRpb24gJWxsdQBGYWlsZWQgdG8gZmluZCBuZXh0IHJlbGF5IGxvZyB3aGVuIHJldHJ5aW5nIHRoZSB0cmFuc2FjdGlvbiwgY3VycmVudCByZWxheSBsb2cgaXMgJXMATXVsdGktdGhyZWFkZWQgcmVwbGljYTogQ29vcmRpbmF0b3IgaGFzIHdhaXRlZCAlbHUgdGltZXMgaGl0dGluZyByZXBsaWNhX3BlbmRpbmdfam9ic19zaXplX21heDsgY3VycmVudCBldmVudCBzaXplID0gJXp1LgBGYWlsZWQgdG8gd3JpdGUgdGhlIERST1Agc3RhdGVtZW50IGZvciB0ZW1wb3JhcnkgdGFibGVzIHRvIGJpbmFyeSBsb2cAV2hlbiBvcGVuaW5nIEhFQVAgdGFibGUsIGNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgdG8gd3JpdGUgJ0RFTEVURSBGUk9NIGAlc2AuYCVzYCcgdG8gdGhlIGJpbmFyeSBsb2cAQ291bGRuJ3QgcmVwYWlyIHRhYmxlOiAlcy4lcwBDb3VsZCBub3QgcmVtb3ZlIHRlbXBvcmFyeSB0YWJsZTogJyVzJywgZXJyb3I6ICVkAFN5c3RlbSB0YWJsZSAnJS4qcycgaXMgZXhwZWN0ZWQgdG8gYmUgdHJhbnNhY3Rpb25hbC4ARXJyb3Igd3JpdGluZyBzb3VyY2UgY29uZmlndXJhdGlvbi4ARXJyb3IgcmVhZGluZyBzb3VyY2UgY29uZmlndXJhdGlvbi4AU1NMIGluZm9ybWF0aW9uIGluIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkgYXJlIGlnbm9yZWQgYmVjYXVzZSB0aGlzIE15U1FMIHJlcGxpY2Egd2FzIGNvbXBpbGVkIHdpdGhvdXQgU1NMIHN1cHBvcnQuAFBsdWdpbiAnJXMnIG9mIHR5cGUgJXMgZmFpbGVkIGRlaW5pdGlhbGl6YXRpb24AUGx1Z2luICclcycgaGFzIHJlZl9jb3VudD0lZCBhZnRlciBkZWluaXRpYWxpemF0aW9uLgBTaHV0dGluZyBkb3duIHBsdWdpbiAnJXMnAFBsdWdpbiAnJXMnIHJlZ2lzdHJhdGlvbiBhcyBhICVzIGZhaWxlZC4AQ291bGQgbm90IG9wZW4gdGhlIG15c3FsLnBsdWdpbiB0YWJsZS4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBDb3VsZG4ndCBsb2FkIHBsdWdpbiBuYW1lZCAnJXMnIHdpdGggc29uYW1lICclcycuAHBsdWdpbi1sb2FkIHBhcmFtZXRlciB0b28gbG9uZwBQbHVnaW4gJyVzJyB3aWxsIGJlIGZvcmNlZCB0byBzaHV0ZG93bgBQbHVnaW4gJyVzJyBoYXMgcmVmX2NvdW50PSVkIGFmdGVyIHNodXRkb3duLgBVbmtub3duIHZhcmlhYmxlIHR5cGUgY29kZSAweCV4IGluIHBsdWdpbiAnJXMnLgBTZXJ2ZXIgdmFyaWFibGUgJXMgb2YgcGx1Z2luICVzIHdhcyBmb3JjZWQgdG8gYmUgcmVhZC1vbmx5OiBzdHJpbmcgdmFyaWFibGUgd2l0aG91dCB1cGRhdGVfZnVuYyBhbmQgUExVR0lOX1ZBUl9NRU1BTExPQyBmbGFnAE1pc3NpbmcgdmFyaWFibGUgbmFtZSBpbiBwbHVnaW4gJyVzJy4AVGhyZWFkIGxvY2FsIHZhcmlhYmxlICclcycgbm90IGFsbG9jYXRlZCBpbiBwbHVnaW4gJyVzJy4AT3V0IG9mIG1lbW9yeSBmb3IgcGx1Z2luICclcycuAEJhZCBvcHRpb25zIGZvciBwbHVnaW4gJyVzJy4AUGFyc2luZyBvcHRpb25zIGZvciBwbHVnaW4gJyVzJyBmYWlsZWQuAFBsdWdpbiAnJXMnIGlzIGRpc2FibGVkLgBQbHVnaW4gJyVzJyBoYXMgY29uZmxpY3Rpbmcgc3lzdGVtIHZhcmlhYmxlcwBTZXR0aW5nIHBlcnNpc3RlbnQgb3B0aW9ucyBmb3IgcGx1Z2luICclcycgZmFpbGVkLgBGYWlsZWQgb24gbXlfbmV0X3dyaXRlLCB3cml0aW5nIHRvIHN0ZGVyciBpbnN0ZWFkOiAlcwBSZXRyeWluZyByZXBhaXIgb2Y6ICclcycgd2l0aG91dCBxdWljawBSZXRyeWluZyByZXBhaXIgb2Y6ICclcycgd2l0aCBrZXljYWNoZQBGb3VuZCAlcyBvZiAlcyByb3dzIHdoZW4gcmVwYWlyaW5nICclcycAV2FybmluZzogT3B0aW1pemUgdGFibGUgZ290IGVycm5vICVkIG9uICVzLiVzLCByZXRyeWluZwBXYXJuaW5nOiBFbmFibGluZyBrZXlzIGdvdCBlcnJubyAlZCBvbiAlcy4lcywgcmV0cnlpbmcAQ2hlY2tpbmcgdGFibGU6ICAgJyVzJwBSZWNvdmVyaW5nIHRhYmxlOiAnJXMnAEVycm9yIGluIGNyZWF0aW5nIFRBQkxFX1NIQVJFIGZyb20gJXMuZnJtIGZpbGUuAFVuYWJsZSB0byBhY3F1aXJlIGxvY2sgb24gJXMuJXMARXJyb3IgaW4gYWxsb2NhdGlvbiBtZW1vcnkgZm9yIFRBQkxFIG9iamVjdC4ARXJyb3IgaW4gY3JlYXRpbmcgaGFuZGxlciBvYmplY3QgZm9yIHRhYmxlICVzLiVzAEVycm9yIGluIHNldHRpbmcgaGFuZGxlciByZWZlcmVuY2UgZm9yIHRhYmxlICVzLiVzAFVuYWJsZSB0byBhY3F1aXJlIGxvY2sgb24gdGFibGVzcGFjZSBuYW1lICVzAEVycm9yIGluIHByb2Nlc3NpbmcgZ2VuZXJhdGVkIGNvbHVtbnMgZm9yIHRhYmxlICVzLiVzAEVycm9yIGluIENyZWF0aW5nIEREIGVudHJ5IGZvciAlcy4lcwBFcnJvciBpbiBmZXRjaGluZyAlcy4lcyB0YWJsZSBkYXRhIGZyb20gZGljdGlvbmFyeQBFcnJvciBpbiBmaXhpbmcgU0UgZGF0YSBmb3IgJXMuJXMARXJyb3IgaW4gY3JlYXRpbmcgc3RvcmVkIHByb2dyYW0gJyVzLiVzJwBVbmFibGUgdG8gb3BlbiBkYi5vcHQgZmlsZSAlcy4gVXNpbmcgZGVmYXVsdCBDaGFyYWN0ZXIgc2V0LgBVbmFibGUgdG8gaW50aWFsaXplIElPIGNhY2hlIHRvIG9wZW4gZGIub3B0IGZpbGUgJXMuIABVbmFibGUgdG8gaWRlbnRpZnkgdGhlIGNoYXJzZXQgaW4gJXMuIFVzaW5nIGRlZmF1bHQgY2hhcmFjdGVyIHNldC4AZGIub3B0IGZpbGUgbm90IGZvdW5kIGZvciAlcyBkYXRhYmFzZS4gVXNpbmcgZGVmYXVsdCBDaGFyYWN0ZXIgc2V0LgBFdmVudCAnJXMnLiclcyc6IGludmFsaWQgdmFsdWUgaW4gY29sdW1uIG15c3FsLmV2ZW50LnRpbWVfem9uZS4ARXZlbnQgJyVzJy4nJXMnOiBoYXMgaW52YWxpZCB0aW1lIHpvbmUgdmFsdWUgAEV2ZW50ICclcycuJyVzJzogaW52YWxpZCB2YWx1ZSBpbiBjb2x1bW4gbXlzcWwuZXZlbnQuY2hhcmFjdGVyX3NldF9jbGllbnQuAEV2ZW50ICclcycuJyVzJzogaW52YWxpZCB2YWx1ZSBpbiBjb2x1bW4gbXlzcWwuZXZlbnQuY29sbGF0aW9uX2Nvbm5lY3Rpb24uAEZhaWxlZCB0byBvcGVuIG15c3FsLmV2ZW50IFRhYmxlLgBQYXJzaW5nICclcy4lcycgcm91dGluZSBib2R5IGZhaWxlZC4lcwBGYWlsZWQgdG8gb3BlbiBteXNxbC5wcm9jIFRhYmxlLgBGYWlsZWQgdG8gcmVhZCBteXNxbC5wcm9jIHRhYmxlLgBGb3VuZCAlcyBmaWxlIGluIG15c3FsIHNjaGVtYS4gREQgd2lsbCBjcmVhdGUgLmliZCBmaWxlIHdpdGggc2FtZSBuYW1lLiBQbGVhc2UgcmVuYW1lIHRhYmxlIGFuZCBzdGFydCB1cGdyYWRlIHByb2Nlc3MgYWdhaW4uAFVuYWJsZSB0byBvcGVuIHRoZSBkYXRhIGRpcmVjdG9yeSAlcyBkdXJpbmcgY2xlYW4gdXAgYWZ0ZXIgdXBncmFkZSBmYWlsZWQARmFpbGVkIHRvIHNldCBwYXRoICVzAEZhaWxlZCB0byBvcGVuIGRpciAlcwBOREI6IEZvdW5kIGVtcHR5IG5vZGVpZCBzcGVjaWZpZWQgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IENvdWxkIG5vdCBwYXJzZSAnJXMnIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBJbnZhbGlkIG5vZGVpZCAlZCBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogRm91bmQgZHVwbGljYXRlIG5vZGVpZCAlZCBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogVGhlIHNpemUgb2YgdGhlIGNsdXN0ZXIgY29ubmVjdGlvbiBwb29sIG11c3QgYmUgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBub2RlaWRzIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBUaGUgbm9kZWlkIHNwZWNpZmllZCBieSAtLW5kYi1ub2RlaWQgbXVzdCBiZSBlcXVhbCB0byB0aGUgZmlyc3Qgbm9kZWlkIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiB1c2luZyBub2RlaWQgJXUATkRCOiBmYWlsZWQgdG8gYWxsb2NhdGUgZ2xvYmFsIG5kYiBjbHVzdGVyIGNvbm5lY3Rpb24ATkRCOiBmYWlsZWQgdG8gYWxsb2NhdGUgZ2xvYmFsIG5kYiBvYmplY3QATkRCWyV1XTogdXNpbmcgbm9kZWlkICV1AE5EQlsldV06IGZhaWxlZCB0byBhbGxvY2F0ZSBjbHVzdGVyIGNvbm5lY3Qgb2JqZWN0AE5EQlsldV06IHN0YXJ0aW5nIGNvbm5lY3QgdGhyZWFkAE5EQlsldV06IE5vZGVJRDogJWQsICVzAE5EQlsldV06IGZhaWxlZCB0byBzdGFydCBjb25uZWN0IHRocmVhZABOREI6IGVycm9yICgldSkgJXMASWdub3JlZCByZWNlaXZlIHRocmVhZCBDUFUgbWFzaywgbWFzayB0b28gc2hvcnQsICV1IENQVXMgbmVlZGVkIGluIG1hc2ssIG9ubHkgJXUgQ1BVcyBwcm92aWRlZABFdmVudCBFcnJvcjogQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgY3JlYXRpbmcgcXVlcnkgc3RyaW5nLCBiZWZvcmUgd3JpdGluZyBpdCBpbnRvIGJpbmFyeSBsb2cuAEV2ZW50IFNjaGVkdWxlcjogRXJyb3Igd2hpbGUgbG9hZGluZyBmcm9tIGRpc2suAEV2ZW50IFNjaGVkdWxlcjogRXJyb3IgZ2V0dGluZyBldmVudCBvYmplY3QuAEV2ZW50IFNjaGVkdWxlcjogRXJyb3Igd2hpbGUgbG9hZGluZyBldmVudHMgZnJvbSBteXNxbC5ldmVudHMuVGhlIHRhYmxlIHByb2JhYmx5IGNvbnRhaW5zIGJhZCBkYXRhIG9yIGlzIGNvcnJ1cHRlZABVbmFibGUgdG8gb2J0YWluIGxvY2sgZm9yIGRyb3BwaW5nIGV2ZW50ICVzIGZyb20gc2NoZW1hICVzAFVuYWJsZSB0byBkcm9wIGV2ZW50ICVzIGZyb20gc2NoZW1hICVzAFNlcnZlciBvdmVyY29tZXMgdGhlIHRlbXBvcmFyeSAnb3V0IG9mIG1lbW9yeScgaW4gJyVkJyB0cmllcyB3aGlsZSBhdHRhY2hpbmcgdG8gc2Vzc2lvbiB0aHJlYWQgZHVyaW5nIHRoZSBncm91cCBjb21taXQgcGhhc2UuAFVuYWJsZSB0byByZXNpemUgYmlubG9nIElPQ0FDSEUgYXV4aWxpYXJ5IGZpbGUAZmlsZSAlcyB3YXMgbm90IHB1cmdlZCBiZWNhdXNlIGl0IHdhcyBiZWluZyByZWFkIGJ5IHRocmVhZCBudW1iZXIgJXUASS9PIGVycm9yIHJlYWRpbmcgdGhlIGhlYWRlciBmcm9tIHRoZSBiaW5hcnkgbG9nLCBlcnJubz0lZCwgaW8gY2FjaGUgY29kZT0lZABGYWlsZWQgdG8gb3BlbiBsb2cgKGZpbGUgJyVzJywgZXJybm8gJWQpAEZhaWxlZCB0byBjcmVhdGUgYSBjYWNoZSBvbiBsb2cgKGZpbGUgJyVzJykATG9nIGZpbGVuYW1lIGV4dGVuc2lvbiBudW1iZXIgZXhoYXVzdGVkOiAlMDZsdS4gUGxlYXNlIGZpeCB0aGlzIGJ5IGFyY2hpdmluZyBvbGQgbG9ncyBhbmQgdXBkYXRpbmcgdGhlIGluZGV4IGZpbGVzLgBMb2cgZmlsZW5hbWUgdG9vIGxhcmdlOiAlcyVzICglenUpLiBQbGVhc2UgZml4IHRoaXMgYnkgYXJjaGl2aW5nIG9sZCBsb2dzIGFuZCB1cGRhdGluZyB0aGUgaW5kZXggZmlsZXMuAE5leHQgbG9nIGV4dGVuc2lvbjogJWx1LiBSZW1haW5pbmcgbG9nIGZpbGVuYW1lIGV4dGVuc2lvbnM6ICVsdS4gUGxlYXNlIGNvbnNpZGVyIGFyY2hpdmluZyBzb21lIGxvZ3MuAENvdWxkIG5vdCBvcGVuICVzIGZvciBsb2dnaW5nIChlcnJvciAlZCkuIFR1cm5pbmcgbG9nZ2luZyBvZmYgZm9yIHRoZSB3aG9sZSBkdXJhdGlvbiBvZiB0aGUgTXlTUUwgc2VydmVyIHByb2Nlc3MuIFRvIHR1cm4gaXQgb24gYWdhaW46IGZpeCB0aGUgY2F1c2UsIHNodXRkb3duIHRoZSBNeVNRTCBzZXJ2ZXIgYW5kIHJlc3RhcnQgaXQuAE1ZU1FMX0JJTl9MT0c6Om9wZW5faW5kZXhfZmlsZSBmYWlsZWQgdG8gc3luYyB0aGUgaW5kZXggZmlsZS4ARXJyb3IgcmVhZGluZyBHVElEcyBmcm9tIHJlbGF5bG9nOiAlZAAlbHUgZXZlbnRzIHJlYWQgaW4gcmVsYXlsb2cgZmlsZSAnJXMnIGZvciB1cGRhdGluZyBSZXRyaWV2ZWRfR3RpZF9TZXQgYW5kL29yIElPIHRocmVhZCB0cmFuc2FjdGlvbiBwYXJzZXIgc3RhdGUuAEVycm9yIHJlYWRpbmcgR1RJRHMgZnJvbSBiaW5hcnkgbG9nOiAlZABSZWFkICVsdSBldmVudHMgZnJvbSBiaW5hcnkgbG9nIGZpbGUgJyVzJyB0byBkZXRlcm1pbmUgdGhlIEdUSURzIHB1cmdlZCBmcm9tIGJpbmFyeSBsb2dzLgBNWVNRTF9CSU5fTE9HOjpvcGVuIGZhaWxlZCB0byBnZW5lcmF0ZSBuZXcgZmlsZSBuYW1lLgBNWVNRTF9CSU5fTE9HOjpvcGVuIGZhaWxlZCB0byBzeW5jIHRoZSBpbmRleCBmaWxlLgBDb3VsZCBub3QgdXNlICVzIGZvciBsb2dnaW5nIChlcnJvciAlZCkuIFR1cm5pbmcgbG9nZ2luZyBvZmYgZm9yIHRoZSB3aG9sZSBkdXJhdGlvbiBvZiB0aGUgTXlTUUwgc2VydmVyIHByb2Nlc3MuIFRvIHR1cm4gaXQgb24gYWdhaW46IGZpeCB0aGUgY2F1c2UsIHNodXRkb3duIHRoZSBNeVNRTCBzZXJ2ZXIgYW5kIHJlc3RhcnQgaXQuAFdoaWxlIHJlYnVpbGRpbmcgaW5kZXggZmlsZSAlczogRmFpbGVkIHRvIGNsb3NlIHRoZSBpbmRleCBmaWxlLgBXaGlsZSByZWJ1aWxkaW5nIGluZGV4IGZpbGUgJXM6IEZhaWxlZCB0byBkZWxldGUgdGhlIGV4aXN0aW5nIGluZGV4IGZpbGUuIEl0IGNvdWxkIGJlIHRoYXQgZmlsZSBpcyBiZWluZyB1c2VkIGJ5IHNvbWUgb3RoZXIgcHJvY2Vzcy4AV2hpbGUgcmVidWlsZGluZyBpbmRleCBmaWxlICVzOiBGYWlsZWQgdG8gcmVuYW1lIHRoZSBuZXcgaW5kZXggZmlsZSB0byB0aGUgZXhpc3RpbmcgaW5kZXggZmlsZS4AQWZ0ZXIgcmVidWlsZGluZyB0aGUgaW5kZXggZmlsZSAlczogRmFpbGVkIHRvIG9wZW4gdGhlIGluZGV4IGZpbGUuAE1ZU1FMX0JJTl9MT0c6OmFkZF9sb2dfdG9faW5kZXggZmFpbGVkIHRvIGFwcGVuZCBsb2cgZmlsZSBuYW1lOiAlcywgdG8gY3Jhc2ggc2FmZSBpbmRleCBmaWxlLgBGYWlsZWQgdG8gbG9jYXRlIG9sZCBiaW5sb2cgb3IgcmVsYXkgbG9nIGZpbGVzAEZhaWxlZCB0byBkZWxldGUgZmlsZSAnJXMnAE1ZU1FMX0JJTl9MT0c6OnNldF9jcmFzaF9zYWZlX2luZGV4X2ZpbGVfbmFtZSBmYWlsZWQgdG8gc2V0IGZpbGUgbmFtZS4ATVlTUUxfQklOX0xPRzo6b3Blbl9jcmFzaF9zYWZlX2luZGV4X2ZpbGUgZmFpbGVkIHRvIG9wZW4gdGVtcG9yYXJ5IGluZGV4IGZpbGUuAG5leHQgbG9nIGVycm9yOiAlZCAgb2Zmc2V0OiAlcyAgbG9nOiAlcyBpbmNsdWRlZDogJWQAJXMgZmFpbGVkIHRvIG9wZW4gdGhlIGNyYXNoIHNhZmUgaW5kZXggZmlsZS4AJXMgZmFpbGVkIHRvIGNvcHkgaW5kZXggZmlsZSB0byBjcmFzaCBzYWZlIGluZGV4IGZpbGUuACVzIGZhaWxlZCB0byBjbG9zZSB0aGUgY3Jhc2ggc2FmZSBpbmRleCBmaWxlLgAlcyBmYWlsZWQgdG8gbW92ZSBjcmFzaCBzYWZlIGluZGV4IGZpbGUgdG8gaW5kZXggZmlsZS4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyB3YXMgY2FsbGVkIHdpdGggZmlsZSAlcyBub3QgbGlzdGVkIGluIHRoZSBpbmRleC4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyBmYWlsZWQgdG8gc3luYyB0aGUgaW5kZXggZmlsZS4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyBmYWlsZWQgdG8gY29weSAlcyB0byByZWdpc3RlciBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byBmbHVzaCByZWdpc3RlciBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byB1cGRhdGUgdGhlIGluZGV4IGZpbGUATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyBmYWlsZWQgdG8gcHJvY2VzcyByZWdpc3RlcmVkIGZpbGVzIHRoYXQgd291bGQgYmUgcHVyZ2VkLgBNWVNRTF9CSU5fTE9HOjpzZXRfcHVyZ2VfaW5kZXhfZmlsZV9uYW1lIGZhaWxlZCB0byBzZXQgZmlsZSBuYW1lLgBNWVNRTF9CSU5fTE9HOjpvcGVuX3B1cmdlX2luZGV4X2ZpbGUgZmFpbGVkIHRvIG9wZW4gcmVnaXN0ZXIgZmlsZS4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfaW5kZXhfZW50cnkgZmFpbGVkIHRvIHJlaW5pdCByZWdpc3RlciBmaWxlIGZvciByZWFkAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2luZGV4X2VudHJ5IGVycm9yICVkIHJlYWRpbmcgZnJvbSByZWdpc3RlciBmaWxlLgBGYWlsZWQgdG8gZXhlY3V0ZSBteXNxbF9maWxlX3N0YXQgb24gZmlsZSAnJXMnAEZhaWxlZCB0byBkZWxldGUgbG9nIGZpbGUgJyVzJzsgY29uc2lkZXIgZXhhbWluaW5nIGNvcnJlc3BvbmRlbmNlIG9mIHlvdXIgYmlubG9nIGluZGV4IGZpbGUgdG8gdGhlIGFjdHVhbCBiaW5sb2cgZmlsZXMARmFpbGVkIHRvIGRlbGV0ZSBmaWxlICclcycgYW5kIHJlYWQgdGhlIGJpbmxvZyBpbmRleCBmaWxlAEZhaWxlZCB0byBkZWxldGUgbG9nIGZpbGUgJyVzJwAlcyBBbiBpbmNpZGVudCBldmVudCBoYXMgYmVlbiB3cml0dGVuIHRvIHRoZSBiaW5hcnkgbG9nIHdoaWNoIHdpbGwgc3RvcCB0aGUgcmVwbGljYXMuAGZpbmRfbG9nX3BvcygpIGZhaWxlZCAoZXJyb3I6ICVkKQBSZWNvdmVyaW5nIGFmdGVyIGEgY3Jhc2ggdXNpbmcgJXMARmFpbGVkIHRvIG9wZW4gdGhlIGNyYXNoZWQgYmlubG9nIGZpbGUgd2hlbiBzb3VyY2Ugc2VydmVyIGlzIHJlY292ZXJpbmcgaXQuAEZhaWxlZCB0byB0cmltIHRoZSBjcmFzaGVkIGJpbmxvZyBmaWxlIHdoZW4gc291cmNlIHNlcnZlciBpcyByZWNvdmVyaW5nIGl0LgBDcmFzaGVkIGJpbmxvZyBmaWxlICVzIHNpemUgaXMgJWxsdSwgYnV0IHJlY292ZXJlZCB1cCB0byAlbGx1LiBCaW5sb2cgdHJpbW1lZCB0byAlbGx1IGJ5dGVzLgBGYWlsZWQgdG8gY2xlYXIgTE9HX0VWRU5UX0JJTkxPR19JTl9VU0VfRiBmb3IgdGhlIGNyYXNoZWQgYmlubG9nIGZpbGUgd2hlbiBzb3VyY2Ugc2VydmVyIGlzIHJlY292ZXJpbmcgaXQuAEZhaWxlZCB0byBydW4gJ2FmdGVyX3N5bmMnIGhvb2tzACVzIEhlbmNlIHR1cm5pbmcgbG9nZ2luZyBvZmYgZm9yIHRoZSB3aG9sZSBkdXJhdGlvbiBvZiB0aGUgTXlTUUwgc2VydmVyIHByb2Nlc3MuIFRvIHR1cm4gaXQgb24gYWdhaW46IGZpeCB0aGUgY2F1c2UsIHNodXRkb3duIHRoZSBNeVNRTCBzZXJ2ZXIgYW5kIHJlc3RhcnQgaXQuAEZhaWxlZCB0byBydW4gJ2FmdGVyX2ZsdXNoJyBob29rcwBDcmFzaCByZWNvdmVyeSBmYWlsZWQuIEVpdGhlciBjb3JyZWN0IHRoZSBwcm9ibGVtIChpZiBpdCdzLCBmb3IgZXhhbXBsZSwgb3V0IG9mIG1lbW9yeSBlcnJvcikgYW5kIHJlc3RhcnQsIG9yIGRlbGV0ZSAob3IgcmVuYW1lKSBiaW5hcnkgbG9nIGFuZCBzdGFydCBteXNxbGQgd2l0aCAtLXRjLWhldXJpc3RpYy1yZWNvdmVyPXtjb21taXR8cm9sbGJhY2t9AFRoZSBmb2xsb3dpbmcgd2FybmluZyB3YXMgc3VwcHJlc3NlZCAlZCB0aW1lcyBkdXJpbmcgdGhlIGxhc3QgJWQgc2Vjb25kcyBpbiB0aGUgZXJyb3IgbG9nAE5EQjogJXMATkRCICVzOiAlcwBOREI6IFVuYWJsZSB0byBwdXJnZSAlcy4lcyBGaWxlPSVzIChmYWlsZWQgdG8gc2V0dXAgdGhkKQBVbmtub3duIGNvbGxhdGlvbiAjJWx1LgBzeW50YXggZXJyb3IgaW4gaW5ub2RiX2xvZ19ncm91cF9ob21lX2RpcgBzeW50YXggZXJyb3IgaW4gaW5ub2RiX3VuZG9fZGlyZWN0b3J5AElubm9EQjogaW5ub2RiX2J1ZmZlcl9wb29sX2ZpbGVuYW1lIGNhbm5vdCBoYXZlIGNvbG9uICg6KSBpbiB0aGUgZmlsZSBuYW1lLgBJbm5vREI6IEludmFsaWQgcGFnZSBzaXplPSVsdS4ASW5ub0RCOiBpbm5vZGJfbWF4X2RpcnR5X3BhZ2VzX3BjdF9sd20gY2Fubm90IGJlIHNldCBoaWdoZXIgdGhhbiBpbm5vZGJfbWF4X2RpcnR5X3BhZ2VzX3BjdC4gU2V0dGluZyBpbm5vZGJfbWF4X2RpcnR5X3BhZ2VzX3BjdF9sd20gdG8gJWxmAElubm9EQjogaW5ub2RiX2lvX2NhcGFjaXR5IGNhbm5vdCBiZSBzZXQgaGlnaGVyIHRoYW4gaW5ub2RiX2lvX2NhcGFjaXR5X21heC4gU2V0dGluZyBpbm5vZGJfaW9fY2FwYWNpdHkgdG8gJWx1ACVzIGFuZCAlcyBmaWxlIG5hbWVzIHNlZW0gdG8gYmUgdGhlIHNhbWUuAFRyYW5zYWN0aW9uIG5vdCByZWdpc3RlcmVkIGZvciBNeVNRTCAyUEMsIGJ1dCB0cmFuc2FjdGlvbiBpcyBhY3RpdmUATXlTUUwgaXMgY2xvc2luZyBhIGNvbm5lY3Rpb24gdGhhdCBoYXMgYW4gYWN0aXZlIElubm9EQiB0cmFuc2FjdGlvbi4gJWxsdSByb3cgbW9kaWZpY2F0aW9ucyB3aWxsIHJvbGwgYmFjay4ASW5ub0RCOiBmYWlsIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgaW5kZXggdHJhbnNsYXRpb24gdGFibGUuIE51bWJlciBvZiBJbmRleDolbHUsIGFycmF5IHNpemU6JWx1AENhbm5vdCBmaW5kIGluZGV4ICVzIGluIElubm9EQiBpbmRleCBkaWN0aW9uYXJ5LgBGb3VuZCBpbmRleCAlcyB3aG9zZSBjb2x1bW4gaW5mbyBkb2VzIG5vdCBtYXRjaCB0aGF0IG9mIE15U1FMLgBGYWlsZWQgdG8gb3BlbiB0YWJsZSAlcy4AQnVpbGQgSW5ub0RCIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlIGZvciBUYWJsZSAlcyBmYWlsZWQAVGFibGUgJXMgaGFzIGEgcHJpbWFyeSBrZXkgaW4gSW5ub0RCIGRhdGEgZGljdGlvbmFyeSwgYnV0IG5vdCBpbiBNeVNRTCEAVGFibGUgJXMgaGFzIG5vIHByaW1hcnkga2V5IGluIElubm9EQiBkYXRhIGRpY3Rpb25hcnksIGJ1dCBoYXMgb25lIGluIE15U1FMISBJZiB5b3UgY3JlYXRlZCB0aGUgdGFibGUgd2l0aCBhIE15U1FMIHZlcnNpb24gPCAzLjIzLjU0IGFuZCBkaWQgbm90IGRlZmluZSBhIHByaW1hcnkga2V5LCBidXQgZGVmaW5lZCBhIHVuaXF1ZSBrZXkgd2l0aCBhbGwgbm9uLU5VTEwgY29sdW1ucywgdGhlbiBNeVNRTCBpbnRlcm5hbGx5IHRyZWF0cyB0aGF0IGtleSBhcyB0aGUgcHJpbWFyeSBrZXkuIFlvdSBjYW4gZml4IHRoaXMgZXJyb3IgYnkgZHVtcCArIERST1AgKyBDUkVBVEUgKyByZWltcG9ydCBvZiB0aGUgdGFibGUuAFRhYmxlICVzIGtleV91c2VkX29uX3NjYW4gaXMgJWx1IGV2ZW4gdGhvdWdoIHRoZXJlIGlzIG5vIHByaW1hcnkga2V5IGluc2lkZSBJbm5vREIuAFBhcnRpdGlvbiB0YWJsZSAlcyBvcGVuZWQgYWZ0ZXIgY29udmVydGluZyB0byBsb3dlciBjYXNlLiBUaGUgdGFibGUgbWF5IGhhdmUgYmVlbiBtb3ZlZCBmcm9tIGEgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbS4gUGxlYXNlIHJlY3JlYXRlIHRoZSB0YWJsZSBpbiB0aGUgY3VycmVudCBmaWxlIHN5c3RlbS4AQ2Fubm90IHJlcGxhY2UgZXJyb3IgbWVzc2FnZSAoJXMsJXMsJXMpICIlcyIgd2l0aCAiJXMiOyB3cm9uZyBudW1iZXIgb3IgdHlwZSBvZiAlJSBzdWJzaXR1dGlvbnMuAFRhYmxlIGZvciBlcnJvciBtZXNzYWdlIHJlcGxhY2VtZW50cyBjb3VsZCBub3QgYmUgZm91bmQgb3IgcmVhZCwgb3Igb25lIG9yIG1vcmUgcmVwbGFjZW1lbnRzIGNvdWxkIG5vdCBiZSBhcHBsaWVkLgAlczogJXMAVGFibGUgJyUtMTkycyc6IERlbGV0ZSBmcm9tIHBhcnQgJWQgZmFpbGVkIHdpdGggZXJyb3IgJWQuIEJ1dCBpdCB3YXMgYWxyZWFkeSBpbnNlcnRlZCBpbnRvIHBhcnQgJWQsIHdoZW4gbW92aW5nIHRoZSBtaXNwbGFjZWQgcm93ISBQbGVhc2UgbWFudWFsbHkgZml4IHRoZSBkdXBsaWNhdGUgcm93OiAlcwBDb21tYW5kICclcycgY2Fubm90IGJlIGFib3J0ZWQuIFRoZSB0cmlnZ2VyIGVycm9yIHdhcyAoJWQpIFslc106ICVzAEV2ZW50ICclcycgY2Fubm90IGJlIGFib3J0ZWQuIFRoZSB0cmlnZ2VyIGVycm9yIHdhcyAoJWQpIFslc106ICVzACVzLiBUaGUgdHJpZ2dlciBlcnJvciB3YXMgKCVkKSBbJXNdOiAlcwBSZXBsaWNhIFNRTDogQ29uZmlndXJhdGlvbiB3aXRoIG51bWJlciBvZiByZXBsaWNhdGlvbiBzb3VyY2VzID0gJXUnIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhcHBseWluZyB0byBOZGIAUmVwbGljYSBTUUw6IENvbmZpZ3VyYXRpb24gJ3JlcGxpY2FfcGFyYWxsZWxfd29ya2VycyA9ICVsdScgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGFwcGx5aW5nIHRvIE5kYgBOREIgJXM6IGRpc3RyaWJ1dGluZyAlcyBlcnI6ICV1AFN0b3JpbmcgTXlTUUwgdXNlciBuYW1lIG9yIHBhc3N3b3JkIGluZm9ybWF0aW9uIGluIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkgaXMgbm90IHNlY3VyZSBhbmQgaXMgdGhlcmVmb3JlIG5vdCByZWNvbW1lbmRlZC4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIHRoZSBVU0VSIGFuZCBQQVNTV09SRCBjb25uZWN0aW9uIG9wdGlvbnMgZm9yIFNUQVJUIFJFUExJQ0E7IHNlZSB0aGUgJ1NUQVJUIFJFUExJQ0EgU3ludGF4JyBpbiB0aGUgTXlTUUwgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgBGTFVTSCBSRUxBWSBMT0dTIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gY2hhbm5lbCAnJS0uMTkycycuAFJlcGxpY2EgY2hhbm5lbCAnJXMnIGRvZXMgbm90IGV4aXN0LgBDYW4ndCBmaW5kIHN5bWJvbCAnJS0uMTI4cycgaW4gbGlicmFyeS4AQ2FuJ3Qgb3BlbiBzaGFyZWQgbGlicmFyeSAnJS0uMTkycycgKGVycm5vOiAlZCAlLS4xOTJzKS4AVGhyZWFkIHByaW9yaXR5IGF0dHJpYnV0ZSBzZXR0aW5nIGluIFJlc291cmNlIEdyb3VwIFNRTCBzaGFsbCBiZSBpZ25vcmVkIGR1ZSB0byB1bnN1cHBvcnRlZCBwbGF0Zm9ybSBvciBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlLgBPcHRpb24gYmlubG9nX2NhY2hlX3NpemUgKCVsdSkgaXMgZ3JlYXRlciB0aGFuIG1heF9iaW5sb2dfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfY2FjaGVfc2l6ZSBlcXVhbCB0byBtYXhfYmlubG9nX2NhY2hlX3NpemUuAE9wdGlvbiBiaW5sb2dfc3RtdF9jYWNoZV9zaXplICglbHUpIGlzIGdyZWF0ZXIgdGhhbiBtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfc3RtdF9jYWNoZV9zaXplIGVxdWFsIHRvIG1heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplLgBDYW4ndCBnZW5lcmF0ZSBhIHVuaXF1ZSBsb2ctZmlsZW5hbWUgJS0uMjAwcy4oMS05OTkpLgBFcnJvciByZWFkaW5nIGZpbGUgJyUtLjIwMHMnIChlcnJubzogJWQgLSAlcykARXJyb3Igd3JpdGluZyBmaWxlICclLS4yMDBzJyAoZXJybm86ICVkIC0gJXMpACVzIFN0YXRlbWVudDogJXMAJXM6IEZvcmNpbmcgY2xvc2Ugb2YgdGhyZWFkICVsZCAgdXNlcjogJyUtLjQ4cycuACVzOiBTaHV0ZG93biBjb21wbGV0ZSAobXlzcWxkICVzKSAgJXMuAENhbm5vdCBoYXZlIHNhbWUgYmFzZSBuYW1lICclcycgZm9yIGJvdGggYmluYXJ5IGFuZCByZWxheSBsb2dzLiBQbGVhc2UgY2hlY2sgJXMgKGRlZmF1bHQgJyVzJyBpZiAtLWxvZy1iaW4gb3B0aW9uIGlzIG5vdCB1c2VkLCBkZWZhdWx0ICclcycgaWYgLS1sb2ctYmluIG9wdGlvbiBpcyB1c2VkIHdpdGhvdXQgYXJndW1lbnQpIGFuZCAlcyAoZGVmYXVsdCAnJXMnKSBvcHRpb25zIHRvIGVuc3VyZSB0aGV5IGRvIG5vdCBjb25mbGljdC4AR1RJRF9NT0RFID0gT04gcmVxdWlyZXMgRU5GT1JDRV9HVElEX0NPTlNJU1RFTkNZID0gT04uAFlvdSBoYXZlIG5vdCBwcm92aWRlZCBhIG1hbmRhdG9yeSBzZXJ2ZXItaWQuIFNlcnZlcnMgaW4gYSByZXBsaWNhdGlvbiB0b3BvbG9neSBtdXN0IGhhdmUgdW5pcXVlIHNlcnZlci1pZHMuIFBsZWFzZSByZWZlciB0byB0aGUgcHJvcGVyIHNlcnZlciBzdGFydC11cCBwYXJhbWV0ZXJzIGRvY3VtZW50YXRpb24uAEFib3J0ZWQgY29ubmVjdGlvbiAldSB0byBkYjogJyUtLjE5MnMnIHVzZXI6ICclLS40OHMnIGhvc3Q6ICclLS4yNTVzJyAoJS0uNjRzKS4AJ05PX1pFUk9fREFURScsICdOT19aRVJPX0lOX0RBVEUnIGFuZCAnRVJST1JfRk9SX0RJVklTSU9OX0JZX1pFUk8nIHNxbCBtb2RlcyBzaG91bGQgYmUgdXNlZCB3aXRoIHN0cmljdCBtb2RlLiBUaGV5IHdpbGwgYmUgbWVyZ2VkIHdpdGggc3RyaWN0IG1vZGUgaW4gYSBmdXR1cmUgcmVsZWFzZS4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgd2FzIGNoYW5nZWQgZnJvbSAnJXMnIHRvICclcycuAEBAR0xPQkFMLkdUSURfRVhFQ1VURUQgd2FzIGNoYW5nZWQgZnJvbSAnJXMnIHRvICclcycuACclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSB1c2UgJXMgaW5zdGVhZC4AVHJpZ2dlcnMgZm9yIHRhYmxlIGAlLS42NHNgLmAlLS42NHNgIGhhdmUgbm8gY3JlYXRpb24gY29udGV4dAAnJS0uMTkycycgaGFzIGFuIG9sZCBmb3JtYXQsIHlvdSBzaG91bGQgcmUtY3JlYXRlIHRoZSAnJXMnIG9iamVjdChzKQBWaWV3IGAlLS42NHNgLmAlLS42NHNgIGhhcyBubyBjcmVhdGlvbiBjb250ZXh0AExvbmcgZGF0YWJhc2UgbmFtZSBhbmQgaWRlbnRpZmllciBmb3Igb2JqZWN0IHJlc3VsdGVkIGluIGEgcGF0aCBsZW5ndGggdG9vIGxvbmcgZm9yIHRhYmxlICclcycuIFBsZWFzZSBjaGVjayB0aGUgcGF0aCBsaW1pdCBmb3IgeW91ciBPUy4AVGFibGUgdXBncmFkZSByZXF1aXJlZC4gUGxlYXNlIGRvICJSRVBBSVIgVEFCTEUgYCUtLjY0c2AiIG9yIGR1bXAvcmVsb2FkIHRvIGZpeCBpdCEAR290IGVycm9yICVkIC0gJyUtLjE5MnMnIGZyb20gc3RvcmFnZSBlbmdpbmUuAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycAQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJyAodXNpbmcgcGFzc3dvcmQ6ICVzKQBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnLiBBY2NvdW50IGlzIGxvY2tlZC4AWW91ciBwYXNzd29yZCBoYXMgZXhwaXJlZC4gVG8gbG9nIGluIHlvdSBtdXN0IGNoYW5nZSBpdCB1c2luZyBhIGNsaWVudCB0aGF0IHN1cHBvcnRzIGV4cGlyZWQgcGFzc3dvcmRzLgBTdG9yYWdlIGVuZ2luZSAnJXMnIGRvZXMgbm90IHN1cHBvcnQgc3lzdGVtIHRhYmxlcy4gWyVzLiVzXS4AU29ydCBhYm9ydGVkACVzOiByZWFkeSBmb3IgY29ubmVjdGlvbnMuIFZlcnNpb246ICclcycgIHNvY2tldDogJyVzJyAgcG9ydDogJWQgICVzLgBVbmtub3duIGxvY2FsZTogJyUtLjY0cycuAFVua25vd24gY29sbGF0aW9uOiAnJS0uNjRzJy4AT3V0IG9mIG1lbW9yeTsgY2hlY2sgaWYgbXlzcWxkIG9yIHNvbWUgb3RoZXIgcHJvY2VzcyB1c2VzIGFsbCBhdmFpbGFibGUgbWVtb3J5OyBpZiBub3QsIHlvdSBtYXkgaGF2ZSB0byB1c2UgJ3VsaW1pdCcgdG8gYWxsb3cgbXlzcWxkIHRvIHVzZSBtb3JlIG1lbW9yeSBvciB5b3UgY2FuIGFkZCBtb3JlIHN3YXAgc3BhY2UAT3V0IG9mIG1lbW9yeTsgcmVzdGFydCBzZXJ2ZXIgYW5kIHRyeSBhZ2FpbiAobmVlZGVkICVkIGJ5dGVzKQBDT0xMQVRJT04gJyVzJyBpcyBub3QgdmFsaWQgZm9yIENIQVJBQ1RFUiBTRVQgJyVzJwBGYWlsZWQgdG8gc2V0ICVzIGF0IG9yIGFyb3VuZCAiJXMiIC0tIHNlcnZpY2UgaXMgdmFsaWQsIGJ1dCBjYW4gbm90IGJlIGluaXRpYWxpemVkOyBwbGVhc2UgY2hlY2sgaXRzIGNvbmZpZ3VyYXRpb24gYW5kIG1ha2Ugc3VyZSBpdCBjYW4gcmVhZCBpdHMgaW5wdXQocykgYW5kIHdyaXRlIHRvIGl0cyBvdXRwdXQocykuAEdlbmVyYXRpbmcgYSBuZXcgVVVJRDogJXMuAEZhaWxlZCB0byBnZXQgYWJzb2x1dGUgcGF0aCBvZiBwcm9ncmFtIGV4ZWN1dGFibGUgJXMARmFpbGVkIHRvIGJvb3RzdHJhcCBwZXJmb3JtYW5jZSBzY2hlbWEgY29tcG9uZW50cyBpbmZyYXN0cnVjdHVyZS4ARmFpbGVkIHRvIGRlaW5pdCBwZXJmb3JtYW5jZSBzY2hlbWEgY29tcG9uZW50cyBpbmZyYXN0cnVjdHVyZS4AQ291bGQgbm90IG9wZW4gZHVwbGljYXRlIGZkIGZvciAlczogJXMuAFN5c3RlbSB2aWV3cyBpbml0aWFsaXphdGlvbiBmYWlsZWQuAFJlc291cmNlIGdyb3VwIHBvc3QgaW5pdGlhbGl6YXRpb24gZmFpbGVkLgBSZXNvdXJjZSBHcm91cCBzdWJzeXN0ZW0gaW5pdGlhbGl6YXRpb24gZmFpbGVkLgBGYWlsZWQgdG8gc3RhcnQgbXlzcWxkIGRhZW1vbi4gQ2hlY2sgbXlzcWxkIGVycm9yIGxvZy4AQ2Fubm90IGNoYW5nZSB0byByb290IGRpcmVjdG9yeTogJXMuAEZhaWxlZCB0byBib290c3RyYXAgcGVyc2lzdGVudCBwcml2aWxlZ2VzLgBCYXNlZGlyIHNldCB0byAlcy4AQ291bGQgbm90IGFkZCB3aWxkIGRvIHRhYmxlIHJ1bGUgJyVzJyEAQ291bGQgbm90IGFkZCB3aWxkIGlnbm9yZSB0YWJsZSBydWxlICclcychAFRoZSBwcml2aWxlZ2Ugc3lzdGVtIGZhaWxlZCB0byBpbml0aWFsaXplIGNvcnJlY3RseS4gRm9yIGNvbXBsZXRlIGluc3RydWN0aW9ucyBvbiBob3cgdG8gdXBncmFkZSBNeVNRTCB0byBhIG5ldyB2ZXJzaW9uIHBsZWFzZSBzZWUgdGhlICdVcGdyYWRpbmcgTXlTUUwnIHNlY3Rpb24gZnJvbSB0aGUgTXlTUUwgbWFudWFsLgBDYW5ub3Qgc2V0IHNlcnZpY2VzICIlcyIgcmVxdWVzdGVkIGluIC0tbG9nLWVycm9yLXNlcnZpY2VzLCB1c2luZyBkZWZhdWx0cy4AUGVyZm9ybWFuY2Ugc2NoZW1hIHRhYmxlcyBpbml0aWFsaXphdGlvbiBmYWlsZWQuAFRoZSB0cmFuc2FjdGlvbl93cml0ZV9zZXRfZXh0cmFjdGlvbiBtdXN0IGJlIHNldCB0byAlcyB3aGVuIGJpbmxvZ190cmFuc2FjdGlvbl9kZXBlbmRlbmN5X3RyYWNraW5nIGlzICVzLgBJbnZhbGlkIHJlcGxpY2F0aW9uIHRpbWVzdGFtcHM6IG9yaWdpbmFsIGNvbW1pdCB0aW1lc3RhbXAgaXMgbW9yZSByZWNlbnQgdGhhbiB0aGUgaW1tZWRpYXRlIGNvbW1pdCB0aW1lc3RhbXAuIFRoaXMgbWF5IGJlIGFuIGlzc3VlIGlmIGRlbGF5ZWQgcmVwbGljYXRpb24gaXMgYWN0aXZlLiBNYWtlIHN1cmUgdGhhdCBzZXJ2ZXJzIGhhdmUgdGhlaXIgY2xvY2tzIHNldCB0byB0aGUgY29ycmVjdCB0aW1lLiBObyBmdXJ0aGVyIG1lc3NhZ2Ugd2lsbCBiZSBlbWl0dGVkIHVudGlsIGFmdGVyIHRpbWVzdGFtcHMgYmVjb21lIHZhbGlkIGFnYWluLgBUaGUgcmVwbGljYXRpb24gdGltZXN0YW1wcyBoYXZlIHJldHVybmVkIHRvIG5vcm1hbCB2YWx1ZXMuACVzLgBGYWlsZWQgdG8gd3JpdGUgYW4gaW5jaWRlbnQgZXZlbnQgaW50byBzdG10X2NhY2hlLgBSZWxheWxvZyBmaWxlICVzIHNpemUgd2FzICVsbHUsIGJ1dCB3YXMgdHJ1bmNhdGVkIGF0ICVsbHUuAFVuYWJsZSB0byBwdXJnZSByZWxheSBsb2cgZmlsZXMuICVzOiVzLgBSZXBsaWNhOiBmYWlsZWQgaW4gY3JlYXRpbmcgZmlsdGVyIGZvciBjaGFubmVsICclcycuAFJlcGxpY2E6IGZhaWxlZCBpbiBjb3B5aW5nIHRoZSBnbG9iYWwgZmlsdGVycyB0byBpdHMgb3duIHBlci1jaGFubmVsIGZpbHRlcnMgb24gY29uZmlndXJhdGlvbiBmb3IgY2hhbm5lbCAnJXMnLgBUaGVyZSBhcmUgcGVyLWNoYW5uZWwgcmVwbGljYXRpb24gZmlsdGVyKHMpIGNvbmZpZ3VyZWQgZm9yIGNoYW5uZWwgJyUuMTkycycgd2hpY2ggZG9lcyBub3QgZXhpc3QuIFRoZSBmaWx0ZXIocykgaGF2ZSBiZWVuIGRpc2NhcmRlZC4AVGhlIHN5c3RlbSB0YWJsZSBteXNxbC5nbG9iYWxfZ3JhbnRzIGlzIG1pc3NpbmcuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AQUNMIHRhYmxlIG15c3FsLiUuKnMgbWlzc2luZy4gU29tZSBvcGVyYXRpb25zIG1heSBmYWlsLgBDYW4ndCBzZXQgbWFuZGF0b3J5X3JvbGUgJXNAJXM6IEFub255bW91cyBhdXRob3JpemF0aW9uIElEcyBhcmUgbm90IGFsbG93ZWQgYXMgcm9sZXMuAENhbid0IHNldCBtYW5kYXRvcnlfcm9sZTogVGhlcmUncyBubyBzdWNoIGF1dGhvcml6YXRpb24gSUQgJXNAJXMuAFRhYmxlICclLTE5MnMnIGZhaWxlZCB0byBtb3ZlL2luc2VydCBhIHJvdyBmcm9tIHBhcnQgJWQgaW50byBwYXJ0ICVkOiAlcy4AU2tpcHBlZCB1cGRhdGluZyByZXNvdXJjZSBncm91cCBtZXRhZGF0YSBpbiBJbm5vREIgcmVhZCBvbmx5IG1vZGUuAEZhaWxlZCB0byBwZXJzaXN0IHJlc291cmNlIGdyb3VwICVzIHRvIERhdGEgRGljdGlvbmFyeS4ARmFpbGVkIHRvIGRlc2VyaWFsaXplIHJlc291cmNlIGdyb3VwICVzLgBVcGRhdGUgb2YgcmVzb3VyY2UgZ3JvdXAgJXMgZmFpbGVkLgBWYWxpZGF0aW9uIG9mIHJlc291cmNlIGdyb3VwICVzIGZhaWxlZC4gUmVzb3VyY2UgZ3JvdXAgaXMgZGlzYWJsZWQuAFVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIFJlc291cmNlIEdyb3VwICVzLgBGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciByZXNvdXJjZSBncm91cCBoYXNoLgBGYWlsZWQgdG8gYWRkIHJlc291cmNlIGdyb3VwICVzIHRvIHJlc291cmNlIGdyb3VwIG1hcC4AUmVzb3VyY2UgZ3JvdXAgZmVhdHVyZSBpcyBkaXNhYmxlZC4gKFNlcnZlciBpcyBjb21waWxlZCB3aXRoIERJU0FCTEVfUFNJX1RIUkVBRCkuAFVuYWJsZSB0byBhcHBseSByZXNvdXJjZSBncm91cCBjb250cm9sbGVyICVzLgBVbmFibGUgdG8gYWNxdWlyZSBsb2NrIG9uIHRoZSByZXNvdXJjZSBncm91cCAlcy4gSGludCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAgc2hhbGwgYmUgaWdub3JlZC4AUEZTICVzIG5vdGlmaWNhdGlvbiBmdW5jdGlvbiByZWdpc3RyYXRpb24gZmFpbGVkLgBVbmFibGUgdG8gYmluZCB0aHJlYWQgaWQgJWxsdSB0byBjcHUgaWQgJXUgKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AVW5hYmxlIHRvIGJpbmQgdGhyZWFkIGlkICVsbHUgdG8gY3B1IGlkcyAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBVbmJpbmQgdGhyZWFkIGlkICVsbHUgZmFpbGVkLiAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBTZXR0aW5nIHRocmVhZCBwcmlvcml0eSAlZCB0byB0aHJlYWQgaWQgJWxsdSBmYWlsZWQuIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAFVuYWJsZSB0byBkZXRlcm1pbmUgQ0FQX1NZU19OSUNFIGNhcGFiaWxpdHkuACVzIGZhaWxlZDogRmFpbGVkIHRvIGdldCBoYW5kbGUgZm9yIHRocmVhZCAlbGx1LgBSZXRyaWV2YWwgb2YgdGhyZWFkIHByaW9yaXR5IHVuc3VwcG9ydGVkIG9uICVzLgBVbmFibGUgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgQ1BVcy4AUmVzb3VyY2UgZ3JvdXAgZmVhdHVyZSBzaGFsbCBub3QgYmUgYXZhaWxhYmxlLiBJbmNvbXBhdGlibGUgdGhyZWFkIGhhbmRsaW5nIG9wdGlvbi4ASW52YWxpZCB0aHJlYWQgcHJpb3JpdHkgJWQgZm9yIGEgJXMgcmVzb3VyY2UgZ3JvdXAuIEFsbG93ZWQgcmFuZ2UgaXMgWyVkLCAlZF0uAGJpbmRfdG9fY3B1IGZhaWxlZDogcHJvY2Vzc29yX2JpbmQgZm9yIGNwdWlkICV1IGZhaWxlZCAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBiaW5kX3RvX2NwdSBmYWlsZWQ6IHByb2Nlc3Nvcl9iaW5kIGZvciB0aHJlYWQgJSVsbHggd2l0aCBjcHUgaWQgJXUgKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AJXMgZmFpbGVkOiBwcm9jZXNzb3JfYWZmaW5pdHkgZmFpbGVkIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAEVycm9yIGluIHJlbmFtaW5nIG15c3FsX2luZGV4X3N0YXRzLmliZC4ARXJyb3IgaW4gb3BlbmluZyBkYXRhIGRpcmVjdG9yeSAlcy4ARXJyb3IgaW4gZmV0Y2hpbmcgbGlzdCBvZiB0YWJsZXNwYWNlcy4ARXJyb3IgaW4gYWNxdWlyaW5nIFRhYmxlc3BhY2UgZm9yIFNESSBpbnNlcnRpb24gJXMuAEVycm9yIGluIHJlc29sdmluZyBFbmdpbmUgbmFtZSBmb3IgdGFibGVzcGFjZSAlcyB3aXRoIGVuZ2luZSAlcy4ARXJyb3IgaW4gY3JlYXRpbmcgU0RJIGZvciAlcyB0YWJsZXNwYWNlLgBFcnJvciBpbiBzdG9yaW5nIFNESSBmb3IgJXMgdGFibGVzcGFjZS4ARXJyb3IgaW4gZmV0Y2hpbmcgbGlzdCBvZiB0YWJsZXMuAEZpbmlzaGVkIHBvcHVsYXRpbmcgRGF0YSBEaWN0aW9uYXJ5IHRhYmxlcyB3aXRoIGRhdGEuAENvdWxkIG5vdCBvcGVuIHRoZSB1cGdyYWRlIGluZm8gZmlsZSAnJXMnIGluIHRoZSBNeVNRTCBzZXJ2ZXJzIGRhdGFkaXIsIGVycm5vOiAlZC4AQ291bGQgbm90IGNsb3NlIHRoZSB1cGdyYWRlIGluZm8gZmlsZSAnJXMnIGluIHRoZSBNeVNRTCBzZXJ2ZXJzIGRhdGFkaXIsIGVycm5vOiAlZC4AR290IGVycm9yICVkIGZyb20gU0Ugd2hpbGUgbWlncmF0aW5nIHRhYmxlc3BhY2VzLgBFcnJvciBpbiBjcmVhdGluZyBUQUJMRSBzdGF0aXN0aWNzIGVudHJ5LiBGaXggc3RhdGlzdGljcyBkYXRhIGJ5IHVzaW5nIEFOQUxZWkUgY29tbWFuZC4ARmluaXNoZWQgbWlncmF0aW5nIFRBQkxFIHN0YXRpc3RpY3MgZGF0YS4ARXJyb3IgaW4gY3JlYXRpbmcgSW5kZXggc3RhdGlzdGljcyBlbnRyeS4gRml4IHN0YXRpc3RpY3MgZGF0YSBieSB1c2luZyBBTkFMWVpFIGNvbW1hbmQuAEZpbmlzaGVkIG1pZ3JhdGluZyBJTkRFWCBzdGF0aXN0aWNzIGRhdGEuAEZhaWxlZCB0byBmaW5kIHZhbGlkIGRhdGEgZGlyZWN0b3J5LgBTdGFydGluZyB1cGdyYWRlIG9mIGRhdGEgZGlyZWN0b3J5LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBERCBTdG9yYWdlIEVuZ2luZS4ARm91bmQgcGFydGlhbGx5IHVwZ3JhZGVkIERELiBBYm9ydGluZyB1cGdyYWRlIGFuZCBkZWxldGluZyBhbGwgREQgdGFibGVzLiBTdGFydCB0aGUgdXBncmFkZSBwcm9jZXNzIGFnYWluLgBGb3VuZCBwYXJ0aWFsbHkgdXBncmFkZWQgREQuIFVwZ3JhZGUgd2lsbCBjb250aW51ZSBhbmQgc3RhcnQgdGhlIHNlcnZlci4ARXJyb3IgaW4gdXBncmFkaW5nIGVuZ2luZSBsb2dzLgBFcnJvciBpbiB1cGRhdGluZyBTREkgaW5mb3JtYXRpb24uAFNraXAgdXBkYXRpbmcgJXMgbWV0YWRhdGEgaW4gSW5ub0RCIHJlYWQtb25seSBtb2RlLgBDcmVhdGVkIHN5c3RlbSB2aWV3cyB3aXRoIElfUyB2ZXJzaW9uICVkLgBVbmtub3duIGVycm9yIGRldGVjdGVkICVkIGluIGhhbmRsZXIuAEVycm9yIGluIExvZ19ldmVudDo6cmVhZF9sb2dfZXZlbnQoKTogJyVzJywgZGF0YV9sZW46ICVsdSwgZXZlbnRfdHlwZTogJWQuAFRoZSByb3cgZGF0YSBpcyBncmVhdGVyIHRoYW4gNEdCLCB3aGljaCBpcyB0b28gYmlnIHRvIHdyaXRlIHRvIHRoZSBiaW5hcnkgbG9nLgBVbmFibGUgdG8gY29uc3RydWN0IERST1AgRVZFTlQgU1FMIHF1ZXJ5IHN0cmluZy4AVW5hYmxlIHRvIGJpbmxvZyBkcm9wIGV2ZW50ICVzLiVzLgBGYWlsZWQgdG8gc3RhcnQgcmVwbGljYSB0aHJlYWRzIGZvciBjaGFubmVsICclcycuACVzJXMuAEZhaWxlZCByZWdpc3RlcmluZyBvbiBzb3VyY2UsIHJlY29ubmVjdGluZyB0byB0cnkgYWdhaW4sIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVzLiAlcy4AUmVwbGljYSBJL08gdGhyZWFkIGtpbGxlZCBkdXJpbmcgb3IgYWZ0ZXIgcmVjb25uZWN0LgBTb21lIG9mIHRoZSBjaGFubmVscyBhcmUgbm90IGNyZWF0ZWQvaW5pdGlhbGl6ZWQgcHJvcGVybHkuIENoZWNrIGZvciBhZGRpdGlvbmFsIG1lc3NhZ2VzIGFib3ZlLiBZb3Ugd2lsbCBub3QgYmUgYWJsZSB0byBzdGFydCByZXBsaWNhdGlvbiBvbiB0aG9zZSBjaGFubmVscyB1bnRpbCB0aGUgaXNzdWUgaXMgcmVzb2x2ZWQgYW5kIHRoZSBzZXJ2ZXIgcmVzdGFydGVkLgBGYWlsZWQgdG8gYWRkIGEgcmVwbGljYXRpb24gZmlsdGVyIGludG8gZmlsdGVyIG1hcCBmb3IgY2hhbm5lbCAnJS4xOTJzJy4AVGhlcmUgYXJlIHBlci1jaGFubmVsIHJlcGxpY2F0aW9uIGZpbHRlcihzKSBjb25maWd1cmVkIGZvciBncm91cCByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdoaWNoIGlzIGRpc2FsbG93ZWQuIFRoZSBmaWx0ZXIocykgaGF2ZSBiZWVuIGRpc2NhcmRlZC4AVGhlcmUgYXJlIHBlci1jaGFubmVsIHJlcGxpY2F0aW9uIGZpbHRlcihzKSBjb25maWd1cmVkIGZvciBjaGFubmVsICclLjE5MnMnIHdoaWNoIGRvZXMgbm90IGV4aXN0LiBUaGUgZmlsdGVyKHMpIGhhdmUgYmVlbiBkaXNjYXJkZWQuAEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGJ1aWxkaW5nIGRvX3RhYmxlIGFuZCBpZ25vcmVfdGFibGUgcnVsZXMgdG8gaGFzaGVzIGZvciBwZXItY2hhbm5lbCBmaWx0ZXIuAENsb25lIHBsdWdpbiBjYW5ub3QgYmUgbG9hZGVkLgBDbG9uZSBIYW5kbGVyIGV4aXN0cy4AQ291bGQgbm90IGNyZWF0ZSBDbG9uZSBIYW5kbGVyLgBUaGUgQ1lDTEUgdGltZXIgaXMgbm90IGF2YWlsYWJsZS4gV0FJVCBldmVudHMgaW4gdGhlIHBlcmZvcm1hbmNlX3NjaGVtYSB3aWxsIG5vdCBiZSB0aW1lZC4AVGhlIE5BTk9TRUNPTkQgdGltZXIgaXMgbm90IGF2YWlsYWJsZS4gSURMRS9TVEFHRS9TVEFURU1FTlQvVFJBTlNBQ1RJT04gZXZlbnRzIGluIHRoZSBwZXJmb3JtYW5jZV9zY2hlbWEgd2lsbCBub3QgYmUgdGltZWQuAFRoZSBNSUNST1NFQ09ORCB0aW1lciBpcyBub3QgYXZhaWxhYmxlLiBJRExFL1NUQUdFL1NUQVRFTUVOVC9UUkFOU0FDVElPTiBldmVudHMgaW4gdGhlIHBlcmZvcm1hbmNlX3NjaGVtYSB3aWxsIG5vdCBiZSB0aW1lZC4ARmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgJXp1IGNodW5rcyBlYWNoIG9mIHNpemUgJXp1IGZvciBidWZmZXIgJyVzJyBkdWUgdG8gb3ZlcmZsb3cuAEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXMgZm9yIGJ1ZmZlciAnJXMnIGR1ZSB0byBvdXQtb2YtbWVtb3J5LgBJbm5vREIgY291bGQgbm90IGZpbmQgaW5kZXggJXMga2V5IG5vICV1IGZvciB0YWJsZSAlcyB0aHJvdWdoIGl0cyBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZS4AQ2Fubm90IGZpbmQgaW5kZXggJXMgaW4gSW5ub0RCIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlLgBJbm5vREIgY291bGQgbm90IGZpbmQga2V5IG5vICV1IHdpdGggbmFtZSAlcyBmcm9tIGRpY3QgY2FjaGUgZm9yIHRhYmxlICVzLgBJbm5vREI6IGNoYW5nZV9hY3RpdmVfaW5kZXgoJXUpIGZhaWxlZC4AU3RvcmVkIHJlZiBsZW4gaXMgJWx1LCBidXQgdGFibGUgcmVmIGxlbiBpcyAlbHUuAE15U1FMIGlzIHRyeWluZyB0byBjcmVhdGUgYSBjb2x1bW4gcHJlZml4IGluZGV4IGZpZWxkLCBvbiBhbiBpbmFwcHJvcHJpYXRlIGRhdGEgdHlwZS4gVGFibGUgbmFtZSAlcywgY29sdW1uIG5hbWUgJXMuAENhbm5vdCBjcmVhdGUgdGFibGUgJXMuAEZvdW5kIGluZGV4ICVzIGluIElubm9EQiBpbmRleCBsaXN0IGJ1dCBub3QgaXRzIE15U1FMIGluZGV4IG51bWJlci4gSXQgY291bGQgYmUgYW4gSW5ub0RCIGludGVybmFsIGluZGV4LgBJbm5vREI6IFRhYmxlICVzIGNvbnRhaW5zICVsdSBpbmRleGVzIGluc2lkZSBJbm5vREIsIHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBudW1iZXIgb2YgaW5kZXhlcyAldSBkZWZpbmVkIGluIE15U1FMLgBUYWJsZSAlcyBjb250YWlucyBmZXdlciBpbmRleGVzIGluc2lkZSBJbm5vREIgdGhhbiBhcmUgZGVmaW5lZCBpbiB0aGUgTXlTUUwuIEhhdmUgeW91IG1peGVkIHVwIHdpdGggZGF0YSBkaWN0aW9uYXJ5IGZyb20gZGlmZmVyZW50IGluc3RhbGxhdGlvbj8ASW5kZXggJXMgb2YgJXMgaGFzICVsdSBjb2x1bW5zIHVuaXF1ZSBpbnNpZGUgSW5ub0RCLCBidXQgTXlTUUwgaXMgYXNraW5nIHN0YXRpc3RpY3MgZm9yICVsdSBjb2x1bW5zLiBIYXZlIHlvdSBtaXhlZCBkYXRhIGRpY3Rpb25hcnkgZnJvbSBkaWZmZXJlbnQgaW5zdGFsbGF0aW9uPwBNb25pdG9yIGNvdW50ZXIgJyVzJyBjYW5ub3QgYmUgdHVybmVkIG9uL29mZiBpbmRpdmlkdWFsbHkuIFBsZWFzZSB1c2UgaXRzIG1vZHVsZSBuYW1lIHRvIHR1cm4gb24vb2ZmIHRoZSBjb3VudGVycyBpbiB0aGUgbW9kdWxlIGFzIGEgZ3JvdXAuAERlZmF1bHQgdmFsdWUgaXMgbm90IGRlZmluZWQgZm9yIHRoaXMgc2V0IG9wdGlvbi4gUGxlYXNlIHNwZWNpZnkgY29ycmVjdCBjb3VudGVyIG9yIG1vZHVsZSBuYW1lLgBJbm5vREI6IE1vbml0b3IgJXMgaXMgYWxyZWFkeSBlbmFibGVkLgBJbnZhbGlkIG1vbml0b3IgY291bnRlciA6ICVzLgBMb2FkTGlicmFyeSgiJXMiKSBmYWlsZWQ6IEdldExhc3RFcnJvciByZXR1cm5zICVsdS4AJXMuACVzLgAlcy4AJXMuACVzLgAlcy4AVW5hYmxlIHRvIHdhaXQgZm9yIHByb2Nlc3MgJWxsZC4AVW5hYmxlIHRvIGRldGVybWluZSBpZiBkYWVtb24gaXMgcnVubmluZzogJXMgKHJjPSVkKS4AJXMAW0ZBVEFMXSBJbm5vREI6ICVzAFRoZSBzeW50YXggJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkLgBUaGUgc3ludGF4ICclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuACclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuACVzAEJpbmFyeSBsb2dnaW5nIG5vdCBwb3NzaWJsZS4gTWVzc2FnZTogJXMuAEZhaWxlZCB0byBzZXQgcGVyc2lzdGVkIG9wdGlvbnMuAENhbm5vdCBhY3F1aXJlIHNwZWNpZmllZCBzZXJ2aWNlIGltcGxlbWVudGF0aW9uOiAnJS4xOTJzJy4ASW52YWxpZCBWQ1BVIHJhbmdlICV1LSV1LgBJbnZhbGlkIGNwdSBpZCAldS4AR290IGVycm9yICVkIGR1cmluZyBGTFVTSF9MT0dTLgBQcm9ibGVtIHdoaWxlIGRyb3BwaW5nIGRhdGFiYXNlLiBDYW4ndCByZW1vdmUgZGF0YWJhc2UgZGlyZWN0b3J5ICglcykuIFBsZWFzZSByZW1vdmUgaXQgbWFudWFsbHkuAFRoZSBvcHRpb24gZXhwaXJlX2xvZ3NfZGF5cyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIG9wdGlvbiBiaW5sb2dfZXhwaXJlX2xvZ3Nfc2Vjb25kcy4gVGhlcmVmb3JlLCB2YWx1ZSBvZiBleHBpcmVfbG9nc19kYXlzIGlzIGlnbm9yZWQuAG1hbGZvcm1lZCBvciB2ZXJ5IG9sZCByZWxheSBsb2cgd2hpY2ggZG9lcyBub3QgaGF2ZSBGb3JtYXREZXNjcmlwdG9yLgBVcGdyYWRlIG9mIHZpZXcgJyVzLiVzJyBmYWlsZWQuIFJlLWNyZWF0ZSB0aGUgdmlldyB3aXRoIHRoZSBleHBsaWNpdCBjb2x1bW4gbmFtZSBsZXNzZXIgdGhhbiA2NCBjaGFyYWN0ZXJzLgBUYWJsZSB1cGdyYWRlIHJlcXVpcmVkIGZvciBgJS0uNjRzYC5gJS0uNjRzYC4gUGxlYXNlIGR1bXAvcmVsb2FkIHRhYmxlIHRvIGZpeCBpdCEARXJyb3IgaW4gdXBkYXRpbmcgdmVyc2lvbiBudW1iZXIgaW4gJXMgdGFibGVzcGFjZS4AS2V5cmluZyBtaWdyYXRpb24gZmFpbGVkLgBLZXlyaW5nIG1pZ3JhdGlvbiBzdWNjZXNzZnVsLgBSZWNlaXZlZCBSRVNUQVJUIGZyb20gdXNlciAlcy4gIFJlc3RhcnRpbmcgbXlzcWxkIChWZXJzaW9uOiAlcykuAERpZmZlcmVudCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIHNldHRpbmdzIGZvciBzZXJ2ZXIgKCcldScpIGFuZCBkYXRhIGRpY3Rpb25hcnkgKCcldScpLgBEYXRhIGRpY3Rpb25hcnkgaW5pdGlhbGl6aW5nIHZlcnNpb24gJyV1Jy4ARGF0YSBkaWN0aW9uYXJ5IHJlc3RhcnRpbmcgdmVyc2lvbiAnJXUnLgBEYXRhIGRpY3Rpb25hcnkgdXBncmFkaW5nIGZyb20gdmVyc2lvbiAnJXUnIHRvICcldScuAERhdGEgZGljdGlvbmFyeSB1cGdyYWRlIHByb2hpYml0ZWQgYnkgdGhlIGNvbW1hbmQgbGluZSBvcHRpb24gJy0tbm9fZGRfdXBncmFkZScuAFVwZ3JhZGluZyB0aGUgZGF0YSBkaWN0aW9uYXJ5IGZyb20gZGljdGlvbmFyeSB2ZXJzaW9uICcldScgaXMgbm90IHN1cHBvcnRlZC4AVXBncmFkaW5nIHRoZSBkYXRhIGRpY3Rpb25hcnkgZmFpbGVkLCB0ZW1wb3Jhcnkgc2NoZW1hIG5hbWUgJyUtLjE5MnMnIG5vdCBhdmFpbGFibGUuAERhdGEgZGljdGlvbmFyeSBtaW5vciBkb3duZ3JhZGUgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1Jy4ATWlub3IgZG93bmdyYWRlIG9mIHRoZSBEYXRhIGRpY3Rpb25hcnkgZnJvbSBkaWN0aW9uYXJ5IHZlcnNpb24gJyV1JyBpcyBub3Qgc3VwcG9ydGVkLgBObyBkYXRhIGRpY3Rpb25hcnkgdmVyc2lvbiBudW1iZXIgZm91bmQuAFRocmVhZCBwb29sIG5vdCBzdXBwb3J0ZWQsIHJlcXVpcmVzIGEgbWluaW11bSBvZiAlcy4AdGhyZWFkX3Bvb2xfc2l6ZT0wIG1lYW5zIHRocmVhZCBwb29sIGRpc2FibGVkLCBBbGxvd2VkIHJhbmdlIG9mIHRocmVhZF9wb29sX3NpemUgaXMgJWQtJWQuAHRocmVhZF9wb29sX3NpemU9JWx1IGlzIHRvbyBoaWdoLCAlZCBpcyBtYXhpbXVtLCB0aHJlYWQgcG9vbCBpcyBkaXNhYmxlZC4gQWxsb3dlZCByYW5nZSBvZiB0aHJlYWRfcG9vbF9zaXplIGlzICVkLSVkLgB0aHJlYWRfcG9vbF9hbGdvcml0aG0gY2FuIGJlIHNldCB0byAwIGFuZCAxLCAwIGluZGljYXRlcyB0aGUgZGVmYXVsdCBsb3cgY29uY3VycmVuY3kgYWxnb3JpdGhtLCAxIG1lYW5zIGEgaGlnaCBjb25jdXJyZW5jeSBhbGdvcml0aG0uAHRocmVhZF9wb29sX3N0YWxsX2xpbWl0IGNhbiBiZSAlZCBhdCBtaW5pbXVtIGFuZCAlZCBhdCBtYXhpbXVtLCBzbWFsbGVyIHZhbHVlcyB3b3VsZCByZW5kZXIgdGhlIHRocmVhZCBwb29sIGZhaXJseSB1c2VsZXNzIGFuZCBoaWdoZXIgdmFsdWVzIGNvdWxkIG1ha2UgaXQgcG9zc2libGUgdG8gaGF2ZSB1bmRldGVjdGVkIGRlYWRsb2NrIGlzc3VlcyBpbiB0aGUgTXlTUUwgU2VydmVyLgBJbnZhbGlkIHZhbHVlIG9mIHRocmVhZF9wb29sX3ByaW9fa2lja3VwX3RpbWVyIHNwZWNpZmllZC4gVmFsdWUgb2YgdGhyZWFkX3Bvb2xfcHJpb19raWNrdXBfdGltZXIgc2hvdWxkIGJlIGluIHJhbmdlIDAtNDI5NDk2NzI5NC4AdGhyZWFkX3Bvb2xfbWF4X3VudXNlZF90aHJlYWRzIGNhbm5vdCBiZSBzZXQgaGlnaGVyIHRoYW4gJWQuAEZhaWxlZCB0byBpbnN0YW50aWF0ZSB0aGUgY29ubmVjdGlvbiBoYW5kbGVyIG9iamVjdC4ARmFpbGVkIHRvIGluaXRpYWxpemUgdGhyZWFkIHBvb2wgcGx1Z2luLgBUaHJlYWQgcG9vbCBwbHVnaW4gc3RhcnRlZCBzdWNjZXNzZnVsbHkgd2l0aCBwYXJhbWV0ZXJzOiB0aHJlYWRfcG9vbF9zaXplID0gJWx1LCB0aHJlYWRfcG9vbF9hbGdvcml0aG0gPSAlcywgdGhyZWFkX3Bvb2xfc3RhbGxfbGltaXQgPSAldSwgdGhyZWFkX3Bvb2xfcHJpb19raWNrdXBfdGltZXIgPSAldSwgdGhyZWFkX3Bvb2xfbWF4X3VudXNlZF90aHJlYWRzID0gJXUsIHRocmVhZF9wb29sX2hpZ2hfcHJpb3JpdHlfY29ubmVjdGlvbiA9ICVkLgBDYW4ndCBzZXR1cCBjb25uZWN0aW9uIHRlYXJkb3duIHRocmVhZC1zcGVjaWZpYyBkYXRhLgBDcmVhdGlvbiBvZiBjb25uZWN0IGhhbmRsZXIgdGhyZWFkIGZhaWxlZC4ARmFpbGVkIHRvIGNyZWF0ZSB0aGQgYW5kIGF1dGhlbnRpY2F0ZSBjb25uZWN0aW9uLgBGYWlsZWQgdG8gcHJvY2VzcyBjb25uZWN0aW9uIGV2ZW50LgBDYW4ndCBjcmVhdGUgcG9vbCB0aHJlYWQgKGVycm9yICVkLCBlcnJubzogJWQpLgAlLipzLgB0cF9ncm91cF9sb3dfbGV2ZWxfaW5pdCgpIGZhaWxlZC4AUmVhcm0gZmFpbGVkIGV2ZW4gYWZ0ZXIgMzAgc2Vjb25kcywgY2FuJ3QgY29udGludWUgd2l0aG91dCBub3RpZnkgc29ja2V0LgAlczogJXMgYnVmZmVyIGlzIHRvbyBzbWFsbABNZWNhYiB2JXMgaXMgbm90IHN1cHBvcnRlZCwgdGhlIGxvd2VzdCB2ZXJzaW9uIHN1cHBvcnRlZCBpcyB2JXMuAE1lY2FiIHYlcyBpcyBub3QgdmVyaWZpZWQsIHRoZSBoaWdoZXN0IHZlcnNpb24gc3VwcG9ydGVkIGlzIHYlcy4ATWVjYWI6IFRyeWluZyBjcmVhdGVNb2RlbCglcykuAE1lY2FiOiBjcmVhdGVNb2RlbCgpIGZhaWxlZDogJXMuAE1lY2FiOiBjcmVhdGVUYWdnZXIoKSBmYWlsZWQ6ICVzLgBNZWNhYjogVW5zdXBwb3J0ZWQgZGljdGlvbmFyeSBjaGFyc2V0ICVzLgBNZWNhYjogTG9hZGVkIGRpY3Rpb25hcnkgY2hhcnNldCBpcyAlcy4ATWVjYWI6IHBhcnNlKCkgZmFpbGVkOiAlcy4ATWVjYWI6IHBhcnNlKCkgZmFpbGVkOiBvdXQgb2YgbWVtb3J5LgBNZWNhYjogY3JlYXRlTGF0dGljZSgpIGZhaWxlZDogJXMuAC0tLT4gJXMgZW50ZXIuADwtLS0gJXMgZXhpdCAoJWQpLgA8LS0tICVzIGV4aXQgKCVzKS4APC0tLSAlcyBleGl0LgBTZW1pLXN5bmMgcmVwbGljYXRpb24gaW5pdGlhbGl6ZWQgZm9yIHRyYW5zYWN0aW9ucy4AJXM6IHRyYW5zYWN0aW9uIG5vZGUgYWxsb2NhdGlvbiBmYWlsZWQgZm9yOiAoJXMsICVsdSkuACVzOiBiaW5sb2cgd3JpdGUgb3V0LW9mLW9yZGVyLCB0YWlsICglcywgJWx1KSwgbmV3IG5vZGUgKCVzLCAlbHUpLgAlczogaW5zZXJ0ICglcywgJWx1KSBpbiBlbnRyeSgldSkuACVzOiBwcm9iZSAoJXMsICVsdSkgaW4gZW50cnkoJXUpLgAlczogY2xlYXJlZCBhbGwgbm9kZXMuACVzOiBjbGVhcmVkICVkIG5vZGVzIGJhY2sgdW50aWwgcG9zICglcywgJWx1KS4AUmVhZCBzZW1pLXN5bmMgcmVwbHkgbWFnaWMgbnVtYmVyIGVycm9yLgBSZWFkIHNlbWktc3luYyByZXBseSBsZW5ndGggZXJyb3I6IHBhY2tldCBpcyB0b28gc21hbGwuAFJlYWQgc2VtaS1zeW5jIHJlcGx5IGJpbmxvZyBmaWxlIGxlbmd0aCB0b28gbGFyZ2UuACVzOiBHb3QgcmVwbHkoJXMsICVsdSkgZnJvbSBzZXJ2ZXIgJXUuACVzIGNhbGxlZCB0d2ljZS4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIGVuYWJsZWQgb24gdGhlIHNvdXJjZS4AQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSB0byBlbmFibGUgc2VtaS1zeW5jIG9uIHRoZSBzb3VyY2UuAFNlbWktc3luYyByZXBsaWNhdGlvbiBkaXNhYmxlZCBvbiB0aGUgc291cmNlLgBTRU1JU1lOQzogRm9yY2VkIHNodXRkb3duLiBTb21lIHVwZGF0ZXMgbWlnaHQgbm90IGJlIHJlcGxpY2F0ZWQuACVzOiBHb3QgcmVwbHkgYXQgKCVzLCAlbHUpLgAlczogc2lnbmFsIGFsbCB3YWl0aW5nIHRocmVhZHMuACVzOiB3YWl0IHBvcyAoJXMsICVsdSksIHJlcGwoJWQpLgAlczogQmlubG9nIHJlcGx5IGlzIGFoZWFkICglcywgJWx1KS4AJXM6IG1vdmUgYmFjayB3YWl0IHBvc2l0aW9uICglcywgJWx1KS4AJXM6IGluaXQgd2FpdCBwb3NpdGlvbiAoJXMsICVsdSkuACVzOiB3YWl0ICVsdSBtcyBmb3IgYmlubG9nIHNlbnQgKCVzLCAlbHUpLgBUaW1lb3V0IHdhaXRpbmcgZm9yIHJlcGx5IG9mIGJpbmxvZyAoZmlsZTogJXMsIHBvczogJWx1KSwgc2VtaS1zeW5jIHVwIHRvIGZpbGUgJXMsIHBvc2l0aW9uICVsdS4AQXNzZXNzbWVudCBvZiB3YWl0aW5nIHRpbWUgZm9yIGNvbW1pdFRyeCBmYWlsZWQgYXQgd2FpdCBwb3NpdGlvbiAoJXMsICVsdSkuAFNlbWktc3luYyByZXBsaWNhdGlvbiBzd2l0Y2hlZCBPRkYuAFNlbWktc3luYyByZXBsaWNhdGlvbiBzd2l0Y2hlZCBPTiBhdCAoJXMsICVsdSkuAE5vIGVub3VnaCBzcGFjZSBpbiB0aGUgcGFja2V0IGZvciBzZW1pLXN5bmMgZXh0cmEgaGVhZGVyLCBzZW1pLXN5bmMgcmVwbGljYXRpb24gZGlzYWJsZWQuACVzOiBzZXJ2ZXIoJWQpLCAoJXMsICVsdSkgc3luYyglZCksIHJlcGwoJWQpLgBTZW1pLXN5bmMgZmFpbGVkIHRvIGluc2VydCB0cmFueF9ub2RlIGZvciBiaW5sb2cgZmlsZTogJXMsIHBvc2l0aW9uOiAlbHUuACVzOiBUcmFuc2FjdGlvbiBza2lwcGVkIGF0ICglcywgJWx1KS4AU2VtaS1zeW5jIHNvdXJjZSBmYWlsZWQgb24gbmV0X2ZsdXNoKCkgYmVmb3JlIHdhaXRpbmcgZm9yIHJlcGxpY2EgcmVwbHkuAFRoZSByZWNlaXZlZCBhY2sgaXMgc21hbGxlciB0aGFuIG1fZ3JlYXRlc3RfYWNrLgBBZGQgdGhlIGFjayBpbnRvIHNsb3QgJXUuAFVwZGF0ZSBhbiBleHNpdGluZyBhY2sgaW4gc2xvdCAldS4ARmFpbGVkIHRvIHN0YXJ0IHNlbWktc3luYyBBQ0sgcmVjZWl2ZXIgdGhyZWFkLCAgY291bGQgbm90IGNyZWF0ZSB0aHJlYWQoZXJybm86JWQpLgBTdGFydGluZyBhY2sgcmVjZWl2ZXIgdGhyZWFkLgBGYWlsZWQgdG8gd2FpdCBvbiBzZW1pLXN5bmMgZHVtcCBzb2NrZXRzLCBlcnJvcjogZXJybm89JWQuAFN0b3BwaW5nIGFjayByZWNlaXZlciB0aHJlYWQuAEZhaWxlZCB0byByZWdpc3RlciByZXBsaWNhIHRvIHNlbWktc3luYyBBQ0sgcmVjZWl2ZXIgdGhyZWFkLgBTdGFydCAlcyBiaW5sb2dfZHVtcCB0byByZXBsaWNhIChzZXJ2ZXJfaWQ6ICVkKSwgcG9zKCVzLCAlbHUpLgBTdG9wICVzIGJpbmxvZ19kdW1wIHRvIHJlcGxpY2EgKHNlcnZlcl9pZDogJWQpLgB1bnJlZ2lzdGVyX3RyYW5zX29ic2VydmVyIGZhaWxlZC4AdW5yZWdpc3Rlcl9iaW5sb2dfc3RvcmFnZV9vYnNlcnZlciBmYWlsZWQuAHVucmVnaXN0ZXJfYmlubG9nX3RyYW5zbWl0X29ic2VydmVyIGZhaWxlZC4AdW5yZWdpc3Rlcl9yZXBsaWNhdG9yIE9LLgBTZW1pc3luYyByZXBsaWNhIHNvY2tldCBmZCBpcyAldS4gc2VsZWN0KCkgY2Fubm90IGhhbmRsZSBpZiB0aGUgc29ja2V0IGZkIGlzIGJpZ2dlciB0aGFuICV1IChGRF9TRVRTSVpFKS4AJXM6IHJlcGx5IC0gJWQuAE1pc3NpbmcgbWFnaWMgbnVtYmVyIGZvciBzZW1pLXN5bmMgcGFja2V0LCBwYWNrZXQgbGVuOiAlbHUuAFJlcGxpY2EgSS9PIHRocmVhZDogU3RhcnQgJXMgcmVwbGljYXRpb24gdG8gc291cmNlICclc0AlczolZCcgaW4gbG9nICclcycgYXQgcG9zaXRpb24gJWx1LgAlczogcmVwbHkgKCVzLCAlbHUpLgBTZW1pLXN5bmMgcmVwbGljYSBuZXRfZmx1c2goKSByZXBseSBmYWlsZWQuAFNlbWktc3luYyByZXBsaWNhIHNlbmQgcmVwbHkgZmFpbGVkOiAlcyAoJWQpLgBFeGVjdXRpb24gZmFpbGVkIG9uIHNvdXJjZTogJXM7IGVycm9yICVkAFNvdXJjZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBzZW1pLXN5bmMsIGZhbGxiYWNrIHRvIGFzeW5jaHJvbm91cyByZXBsaWNhdGlvbgBTZXQgJ3JwbF9zZW1pX3N5bmNfcmVwbGljYT0xJyBvbiBzb3VyY2UgZmFpbGVkAEZhaWxlZCB0byBzdG9wIGFjayByZWNlaXZlciB0aHJlYWQgb24gbXlfdGhyZWFkX2pvaW4sIGVycm5vKCVkKS4ARmFpbGVkIHRvIHJlYWQgdGhlIGZpcmV3YWxsIHRhYmxlcwBGYWlsZWQgdG8gcmVnaXN0ZXIgZHluYW1pYyBwcml2aWxlZ2VzAFN0YXRlbWVudCB3YXMgdHJ1bmNhdGVkIGFuZCBub3QgcmVjb3JkZWQ6ICVzAFN0YXRlbWVudCB3aXRoIG5vIHRleHQgd2FzIG5vdCByZWNvcmRlZABTVVNQSUNJT1VTIFNUQVRFTUVOVCBmcm9tICclcycuIFJlYXNvbjogJXMgU3RhdGVtZW50OiAlcwBBQ0NFU1MgREVOSUVEIGZvciAnJXMnLiBSZWFzb246ICVzIFN0YXRlbWVudDogJXMAU2tpcHBlZCB1bmtub3duIHVzZXIgbW9kZSAnJXMnAFJlbG9hZGluZyBjYWNoZSBmcm9tIGRpc2sARklSRVdBTEwgUkVTRVQgZm9yICclcycAQ291bnRlcnMgYXJlIHJlc2V0IHRvIHplcm8AJXMAQXVkaXQgTG9nIHBsdWdpbiBzdXBwb3J0cyBmaWx0ZXJpbmcgbW9kZSwgd2hpY2ggaGFzIG5vdCBiZWVuIGluc3RhbGxlZCB5ZXQuIEF1ZGl0IExvZyBwbHVnaW4gd2lsbCBydW4gaW4gdGhlIGxlZ2FjeSBtb2RlLCB3aGljaCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4AUHJldmlvdXNseSBleGNsdWRlIGxpc3QgaXMgdXNlZCwgbm93IHdlIHN0YXJ0IHVzaW5nIGluY2x1ZGUgbGlzdCwgZXhjbHVkZSBsaXN0IGlzIHNldCB0byBOVUxMLgBDYW5ub3Qgc2V0IGF1ZGl0X2xvZ19wb2xpY3kgc2ltdWx0YW5lb3VzbHkgd2l0aCBlaXRoZXIgYXVkaXRfbG9nX2Nvbm5lY3Rpb25fcG9saWN5IG9yICBhdWRpdF9sb2dfc3RhdGVtZW50X3BvbGljeSwgc2V0dGluZyBhdWRpdF9sb2dfY29ubmVjdGlvbl9wb2xpY3kgYW5kIGF1ZGl0X2xvZ19zdGF0ZW1lbnRfcG9saWN5IGJhc2VkIG9uIGF1ZGl0X2xvZ19wb2xpY3kuAEJvdGggaW5jbHVkZSBhbmQgZXhjbHVkZSBsaXN0cyBwcm92aWRlZCwgaW5jbHVkZSBsaXN0IGlzIHByZWZlcnJlZCwgZXhjbHVkZSBsaXN0IGlzIHNldCB0byBOVUxMLgBDb3VsZCBub3QgYWNjZXNzICclcycgZGlyZWN0b3J5LgBDb3VsZCBub3QgcmVuYW1lIGZpbGUgZnJvbSAnJXMnIHRvICclcycuAEZpbGUgJyVzJyBzaG91bGQgbm90IGV4aXN0LiBJdCBtYXkgYmUgaW5jb21wbGV0ZS4gVGhlIHNlcnZlciBjcmFzaGVkLgBDb3VsZCBub3QgcmVuYW1lIGZpbGUgZnJvbSAnJXMnIHRvICclcycuIFJlbW92ZSB0aGUgZmlsZSBtYW51YWxseS4ASW5jb21wbGV0ZSBmaWxlIHJlbmFtZWQgZnJvbSAnJXMnIHRvICclcycuAEVycm9yIHdyaXRpbmcgZmlsZSAnJS0uMjAwcycgKGVycm5vOiAlZCAtICVzKS4AQ291bGQgbm90IGluaXRpYWxpemUgYXVkaXQgbG9nIGZpbGUgZW5jcnlwdGlvbi4AQ291bGQgbm90IGluaXRpYWxpemUgYXVkaXQgbG9nIGZpbGUgY29tcHJlc3Npb24uAENvdWxkIG5vdCBjcmVhdGUgJyVzJyBmaWxlIGZvciBhdWRpdCBsb2dnaW5nLgBBdWRpdCBsb2cgZmlsZSAoJXMpIG11c3QgYmUgbWFudWFsbHkgcmVuYW1lZCBiZWZvcmUgYXVkaXRfbG9nX2ZsdXNoIGlzIHNldCB0byB0cnVlLgAlcwBFcnJvciBwYXJzaW5nIEpTT04gZXZlbnQuIEV2ZW50IG5vdCBhY2Nlc3NpYmxlLgBCdWZmZXIgaXMgdG9vIHNtYWxsIHRvIGhvbGQgSlNPTiBldmVudC4gTnVtYmVyIG9mIGV2ZW50cyBza2lwcGVkOiAlenUuAENvdWxkIG5vdCBvcGVuIEpTT04gZmlsZSBmb3IgcmVhZGluZy4gUmVhZGluZyBuZXh0IGZpbGUgaWYgZXhpc3RzLgBKU09OIGZpbGUgcGFyc2luZyBlcnJvci4gUmVhZGluZyBuZXh0IGZpbGUgaWYgZXhpc3RzAEludmFsaWQgY29sdW1uIGNvdW50IGluIHRoZSAnJXMuJXMnIHRhYmxlLgBJbnZhbGlkIGNvbHVtbiBkZWZpbml0aW9uIG9mIHRoZSAnJXMuJXMnIHRhYmxlLgBDb3VsZCBub3Qgc3RvcmUgZmllbGQgb2YgdGhlICVzIHRhYmxlLgBDb3VsZCBub3QgdXBkYXRlICVzIHRhYmxlLgBDb3VsZCBub3QgaW5zZXJ0IGludG8gJXMgdGFibGUuAENvdWxkIG5vdCBkZWxldGUgZnJvbSAlcyB0YWJsZS4AQ291bGQgbm90IGluaXRpYWxpemUgJXMgdGFibGUgZm9yIHJlYWRpbmcuAENvdWxkIG5vdCByZWFkICVzIHRhYmxlLgBDb3VsZCBub3QgY2xvc2UgJXMgdGFibGUgcmVhZGluZy4AQm90aCB1c2VyIGFuZCBob3N0IGNvbHVtbnMgb2YgJXMgdGFibGUgY2Fubm90IGJlIGVtcHR5LgBGaWx0ZXJuYW1lIGNvbHVtbiBvZiAlcyB0YWJsZSBjYW5ub3QgYmUgZW1wdHkuAERpY3Rpb25hcnkgZmlsZSBub3Qgc3BlY2lmaWVkAERpY3Rpb25hcnkgZmlsZSBub3QgbG9hZGVkAERpY3Rpb25hcnkgZmlsZSBzaXplIGV4Y2VlZGVkIE1BWF9ESUNUSU9OQVJZX0ZJTEVfTEVOR1RILCBub3QgbG9hZGVkAEV4Y2VwdGlvbiB3aGlsZSByZWFkaW5nIHRoZSBkaWN0aW9uYXJ5IGZpbGUAQ2FuJ3QgcmV0cmlldmUgdGhlICVzIGZyb20gdGhlIHNlY3VyaXR5IGNvbnRleHQAQ2FuJ3QgcmV0cmlldmUgdGhlIHNlY3VyaXR5IGNvbnRleHQARWZmZWN0aXZlIHZhbHVlIG9mIHZhbGlkYXRlX3Bhc3N3b3JkX2xlbmd0aCBpcyBjaGFuZ2VkLiBOZXcgdmFsdWUgaXMgJWQAJXMAUmV3cml0dGVuIHF1ZXJ5IGZhaWxlZCB0byBwYXJzZTolcwBTdGFydHVwIGZhaWxlZCB3aXRoIGVycm9yICIlcyIARXhpdGluZwBFeGl0IGRvbmUAVXNpbmcgU1NMIGNvbmZpZ3VyYXRpb24gZnJvbSBNeVNRTCBTZXJ2ZXIAVXNpbmcgU1NMIGNvbmZpZ3VyYXRpb24gZnJvbSBNeXNxbHggUGx1Z2luAE5laXRoZXIgTXlTUUwgU2VydmVyIG5vciBNeXNxbHggUGx1Z2luIGhhcyB2YWxpZCBTU0wgY29uZmlndXJhdGlvbgBVc2luZyAlcyBmb3IgVExTIGNvbm5lY3Rpb25zAEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoZSBVc2luZyBTZWN1cmUgQ29ubmVjdGlvbnMgd2l0aCBYIFBsdWdpbiBzZWN0aW9uIGluIHRoZSBNeVNRTCBkb2N1bWVudGF0aW9uACVzAEZhaWxlZCB0byBwYXJzZSBzdG9yZWQgYXV0aGVudGljYXRpb24gc3RyaW5nIGZvciAlcy4gUGxlYXNlIGNoZWNrIGlmIG15c3FsLnVzZXIgdGFibGUgbm90IGNvcnJ1cHRlZABFcnJvciBpbiBnZW5lcmF0aW5nIG11bHRpLXJvdW5kIGhhc2ggZm9yICVzLiBQbHVnaW4gY2FuIG5vdCBwZXJmb3JtIGF1dGhlbnRpY2F0aW9uIHdpdGhvdXQgaXQuIFRoaXMgbWF5IGJlIGEgdHJhbnNpZW50IHByb2JsZW0AQXV0aGVudGljYXRpb24gcmVxdWlyZXMgZWl0aGVyIFJTQSBrZXlzIG9yIFNTTCBlbmNyeXB0aW9uAFJTQSBrZXkgY2lwaGVyIGxlbmd0aCBvZiAldSBpcyB0b28gbG9uZy4gTWF4IHZhbHVlIGlzICV1AEZhaWxlZCB0byBvcGVuIHRoZSAlcyBmaWx0ZXIgdGFibGVzAEZhaWxlZCB0byBvcGVuICclcy4lcycgJXMgdGFibGUAJXMAJXMAJXMAUGFzc3dvcmQgc2FsdCBmb3IgdXNlciAnJXMnIGlzIGNvcnJ1cHQAT3V0IG9mIG1lbW9yeSBmb3IgY29tcG9uZW50IHN5c3RlbSB2YXJpYWJsZSAnJXMnLgB2YXJpYWJsZSAlcyBvZiBjb21wb25lbnQgJXMgd2FzIGZvcmNlZCB0byBiZSByZWFkLW9ubHk6IHN0cmluZyB2YXJpYWJsZSB3aXRob3V0IHVwZGF0ZV9mdW5jIGFuZCBQTFVHSU5fVkFSX01FTUFMTE9DIGZsYWcuAFVua25vd24gdmFyaWFibGUgdHlwZSBjb2RlIDB4JXggaW4gY29tcG9uZW50ICclcycuAFBhcnNpbmcgb3B0aW9ucyBmb3IgdmFyaWFibGUgJyVzJyBmYWlsZWQuAFNldHRpbmcgcGVyc2lzdGVudCBvcHRpb25zIGZvciBjb21wb25lbnQgdmFyaWFibGUgJyVzJyBmYWlsZWQuAFRoZSBsb2ctZmlsdGVyIGNvbXBvbmVudCAiJXMiIGdvdCBjb25mdXNlZCBhdCAiJXMiIChzdGF0ZTogJXMpIC4uLgBXYWl0aW5nIHVudGlsIEkvTyB0aHJlYWQgZm9yIGNoYW5uZWwgJyVzJyBmaW5pc2ggd3JpdGluZyB0byBkaXNrIGJlZm9yZSBzdG9wcGluZy4gRnJlZSBzb21lIGRpc2sgc3BhY2Ugb3IgdXNlICdLSUxMJyB0byBhYm9ydCBJL08gdGhyZWFkIG9wZXJhdGlvbi4gTm90aWNlIHRoYXQgYWJvcnRpbmcgdGhlIEkvTyB0aHJlYWQgd2hpbGUgcm90YXRpbmcgdGhlIHJlbGF5IGxvZyBtaWdodCBjb3JydXB0IHRoZSByZWxheSBsb2dzLCByZXF1aXJpbmcgYSBzZXJ2ZXIgcmVzdGFydCB0byBmaXggaXQuAENvdWxkIG5vdCB1c2UgJXMgZm9yIGxvZ2dpbmcgKGVycm9yICVkIC0gJXMpLiBUdXJuaW5nIGxvZ2dpbmcgb2ZmIGZvciB0aGUgc2VydmVyIHByb2Nlc3MuIFRvIHR1cm4gaXQgb24gYWdhaW46IGZpeCB0aGUgY2F1c2UsIHRoZW4lcyByZXN0YXJ0IHRoZSBNeVNRTCBzZXJ2ZXIuAFVuYWJsZSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGZvciBjb2x1bW4gJyUtLjE5MnMnOiAlLS4xOTJzLgAndXRmOCcgaXMgY3VycmVudGx5IGFuIGFsaWFzIGZvciB0aGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzLCB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuAE5BVElPTkFML05DSEFSL05WQVJDSEFSIGltcGxpZXMgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgd2hpY2ggd2lsbCBiZSByZXBsYWNlZCBieSBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBDSEFSKHgpIENIQVJBQ1RFUiBTRVQgVVRGOE1CNCBpbiBvcmRlciB0byBiZSB1bmFtYmlndW91cy4AQSBjb21taXQgZm9yIGFuIGF0b21pYyBEREwgc3RhdGVtZW50IHdhcyB1bnN1Y2Nlc3NmdWwgb24gdGhlIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuIFRoZSByZXBsaWNhIHN1cHBvcnRzIGF0b21pYyBEREwgc3RhdGVtZW50cyBidXQgdGhlIHNvdXJjZSBkb2VzIG5vdCwgc28gdGhlIGFjdGlvbiB0YWtlbiBieSB0aGUgcmVwbGljYSBhbmQgc291cmNlIG1pZ2h0IGRpZmZlci4gQ2hlY2sgdGhhdCB0aGVpciBzdGF0ZXMgaGF2ZSBub3QgZGl2ZXJnZWQgYmVmb3JlIHByb2NlZWRpbmcuAENvbmZpZ3VyaW5nIHBlcnNpc3RlZCBvcHRpb25zIGZhaWxlZDogIiVzIi4AVGhlIHN0b3JhZ2UgZW5naW5lICclLS4xOTJzJyBkb2VzIG5vdCBwcm92aWRlIGR5bmFtaWMgdGFibGUgc3RhdGlzdGljcwBUaGlzIG9wdGlvbiBjYW5ub3QgYmUgc2V0ICVzLgBUaGUgdGFibGUgJyUtLjE5MnMnIG1heSBub3QgYmUgY3JlYXRlZCBpbiB0aGUgcmVzZXJ2ZWQgdGFibGVzcGFjZSAnJS0uMTkycycuAFNTTCBmaXBzIG1vZGUgZXJyb3I6ICVzAGluaXRfY29ubmVjdCB2YXJpYWJsZSBpcyBpZ25vcmVkIGZvciB1c2VyOiAlcyBob3N0OiAlcyBkdWUgdG8gZXhwaXJlZCBwYXNzd29yZC4Ac3FsX21vZGU9MHglMDh4IGlzIG5vdCBzdXBwb3J0ZWQAT3V0IG9mIG1lbW9yeS4AV3JvbmcgY29sdW1uIGNvdW50IG9yIG5hbWVzIHdoZW4gbG9hZGluZyBydWxlcy4AU29tZSBydWxlcyBmYWlsZWQgdG8gbG9hZC4AR290IGVycm9yIGZyb20gc3RvcmFnZSBlbmdpbmUgd2hpbGUgcmVmcmVzaGluZyByZXdyaXRlIHJ1bGVzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBDb25uZWN0aW9uX2V2ZW50X2Nvb3JkaW5hdG9yAEZhaWxlZCB0byB1cGRhdGUgY29ubmVjdGlvbiBkZWxheSB0cmlnZ2VyZWQgc3RhdHMARmFpbGVkIHRvIHJlc2V0IGNvbm5lY3Rpb24gZGVsYXkgdHJpZ2dlcmVkIHN0YXRzAFVuZXhwZWN0ZWQgb3B0aW9uIHR5cGUgZm9yIGNvbm5lY3Rpb24gZGVsYXkuAEZhaWxlZCB0byBpbml0aWFsaXplIENvbm5lY3Rpb25fZGVsYXlfYWN0aW9uAENvdWxkIG5vdCBzZXQgJXMgZGVsYXkgZm9yIGNvbm5lY3Rpb24gZGVsYXkuAEZhaWxlZCB0byB1cGRhdGUgY29ubmVjdGlvbiBkZWxheSBoYXNoIGZvciBhY2NvdW50IDogJXMAJXM6IEZvcmNlIHN0b3BwaW5nIGNsaWVudCBiZWNhdXNlIGV4Y2VwdGlvbiBvY2N1cnJlZDogJXMAJXMuJXU6IE1heGltdW0gbnVtYmVyIG9mIGF1dGhlbnRpY2F0aW9uIGF0dGVtcHRzIHJlYWNoZWQsIGxvZ2luIGZhaWxlZC4ARXJyb3IgYWxsb2NhdGluZyBCdWZmZXJfcGFnZTogJXMARGV0ZWN0ZWQgJXUgaGFuZ2luZyBjbGllbnQocykARXJyb3IgYWNjZXB0aW5nIGNsaWVudABJbnRlcm5hbCBlcnJvciBzY2hlZHVsaW5nIGNsaWVudCBmb3IgZXhlY3V0aW9uAFByZXBhcmF0aW9uIG9mIEkvTyBpbnRlcmZhY2VzIGZhaWxlZCwgWCBQcm90b2NvbCB3b24ndCBiZSBhY2Nlc3NpYmxlAHNydl9zZXNzaW9uX2luaXRfdGhyZWFkIHJldHVybmVkIGVycm9yAFVuYWJsZSB0byB1c2UgdXNlciBteXNxbC5zZXNzaW9uIGFjY291bnQgd2hlbiBjb25uZWN0aW5nIHRoZSBzZXJ2ZXIgZm9yIGludGVybmFsIHBsdWdpbiByZXF1ZXN0cy4ARm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIFggUGx1Z2luIFVzZXIgQWNjb3VudCBzZWN0aW9uIGluIHRoZSBNeVNRTCBkb2N1bWVudGF0aW9uACVzOiBVbmV4cGVjdGVkIGV4Y2VwdGlvbiBkaXNwYXRjaGluZyBjb21tYW5kOiAlcwBFeGNlcHRpb24gaW4gcG9zdDogJXMASW50ZXJuYWwgZXJyb3Igc2NoZWR1bGluZyB0YXNrAEV4Y2VwdGlvbiBpbiBldmVudCBsb29wOiAiJXMiOiAlcwBTZXR1cCBvZiAlcyBmYWlsZWQsICVzACVzAEZhaWxlZCBhdCBTU0wgY29uZmlndXJhdGlvbjogIiVzIgBFcnJvciBkdXJpbmcgU1NMIGhhbmRzaGFrZSBmb3IgY2xpZW50IGNvbm5lY3Rpb24gKCVpKQAlczogRXJyb3IgZHVyaW5nIFNTTCBoYW5kc2hha2UAJXM6IEVycm9yIGNyZWF0aW5nIHNlc3Npb24gZm9yIGNvbm5lY3Rpb24gZnJvbSAlcwAlczogRXJyb3IgaW5pdGlhbGl6aW5nIHNlc3Npb24gZm9yIGNvbm5lY3Rpb246ICVzACVzOiBNZXNzYWdlIG9mIHNpemUgJXUgcmVjZWl2ZWQsIGV4Y2VlZGluZyB0aGUgbGltaXQgb2YgJWkATWVzc2FnZSBpcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQ6ICVzAFVuYWJsZSB0byBzZXQgbWluaW1hbCBudW1iZXIgb2Ygd29ya2VycyB0byAldTsgYWN0dWFsIHZhbHVlIGlzICVpAFVuYWJsZSB0byBhY2NlcHQgY29ubmVjdGlvbiwgZGlzY29ubmVjdGluZyBjbGllbnQAQWxsIEkvTyBpbnRlcmZhY2VzIGFyZSBkaXNhYmxlZCwgWCBQcm90b2NvbCB3b24ndCBiZSBhY2Nlc3NpYmxlACVzOiBJbnZhbGlkIG1lc3NhZ2UgJWkgcmVjZWl2ZWQgZHVyaW5nIGNsaWVudCBpbml0aWFsaXphdGlvbgAlczogY2xvc2luZyBjbGllbnQgYmVjYXVzZSBvZiBzaHV0ZG93biAoc3RhdGU6ICVpKQAlczogRXJyb3IgcmVhZGluZyBmcm9tIHNvY2tldCAlcyAoJWkpACVzOiBwZWVyIGRpc2Nvbm5lY3RlZCB3aGlsZSByZWFkaW5nIG1lc3NhZ2UgYm9keQBjbGllbnRfaWQ6JXMgLSAlcyB3aGlsZSByZWFkaW5nIGZyb20gc29ja2V0LCBjbG9zaW5nIGNvbm5lY3Rpb24AJXMuJXU6IEludmFsaWQgYXV0aGVudGljYXRpb24gbWV0aG9kICVzACVzOiBVbmV4cGVjdGVkIG1lc3NhZ2Ugb2YgdHlwZSAlaSByZWNlaXZlZCBkdXJpbmcgYXV0aGVudGljYXRpb24ARXJyb3Igd3JpdGluZyB0byBjbGllbnQ6ICVzICglaSkAU2NoZWR1bGVyICIlcyIgc3RhcnRlZC4AU2NoZWR1bGVyICIlcyIgc3RvcHBlZC4AUGxlYXNlIHNlZSB0aGUgTXlTUUwgZG9jdW1lbnRhdGlvbiBmb3IgJyVzJyBzeXN0ZW0gdmFyaWFibGVzIHRvIGZpeCB0aGUgZXJyb3IAWCBQbHVnaW4gcmVhZHkgZm9yIGNvbm5lY3Rpb25zLiAlcwBSZXRyeWluZyBgYmluZCgpYCBvbiBUQ1AvSVAgcG9ydCAlaQBTaHV0ZG93biB0cmlnZ2VyZWQgYnkgbXlzcWxkIGFib3J0IGZsYWcAVXNpbmcgJXMgYWNjb3VudCBmb3IgYXV0aGVudGljYXRpb24gd2hpY2ggaGFzIGFsbCByZXF1aXJlZCBwZXJtaXNzaW9ucwBVc2luZyBleGlzdGluZyAlcyBhY2NvdW50IGZvciBhdXRoZW50aWNhdGlvbi4gSW5jb21wbGV0ZSBncmFudHMgd2lsbCBiZSBmaXhlZABTZXJ2ZXIgc3RhcnRzIGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zAFN0b3BwZWQgaGFuZGxpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMAJXM6IENvdWxkIG5vdCBpbnRlcnJ1cHQgY2xpZW50IHNlc3Npb24AJXM6IHJlbGVhc2UgdHJpZ2dlcmVkIGJ5IHRpbWVvdXQgaW4gc3RhdGU6JWkASVB2NiBpcyBhdmFpbGFibGUAVU5JWCBzb2NrZXQgbm90IGNvbmZpZ3VyZWQAS2lsbCBjbGllbnQ6ICVpICVzAENvdWxkIG5vdCBnZXQgc2VjdXJpdHkgY29udGV4dCBmb3Igc2Vzc2lvbgBVbmFibGUgdG8gc3dpdGNoIHNlY3VyaXR5IGNvbnRleHQgdG8gcm9vdABFcnJvciBjbG9zaW5nIFNRTCBzZXNzaW9uAEVycm9yIGV4ZWN1dGluZyBhZG1pbiBjb21tYW5kICVzOiAlcwBFcnJvciBleGVjdXRpbmcgZW1wdHkgYWRtaW4gY29tbWFuZABVbmFibGUgdG8gcmV0cmlldmUgc3lzdGVtIHZhcmlhYmxlICclcycAVW5hYmxlIHRvIGdldCBjcmVhdGlvbiBzdG10IGZvciBjb2xsZWN0aW9uICclcyc7IHF1ZXJ5IHJlc3VsdCBzaXplOiAlbHUAVW5hYmxlIHRvIGdldCBlbmdpbmUgaW5mbyBmb3IgY29sbGVjdGlvbiAnJXMnOyBjcmVhdGlvbiBzdG10OiAlcwBFcnJvciBnZXR0aW5nIHJlc3VsdCBkYXRhOiAlcwBDYXBhYmlsaXR5IGV4cGlyZWQgcGFzc3dvcmQgZmFpbGVkIHdpdGggZXJyb3I6ICVzAEZhaWxlZCB0byBzZXQgU09fUkVVU0VBRERSIGZsYWcgKGVycm9yOiAlZCkuAENvdWxkIG5vdCBvcGVuIGludGVybmFsIE15U1FMIHNlc3Npb24AVW5hYmxlIHRvIHN3aXRjaCBjb250ZXh0IHRvIHVzZXIgJXMAQ2FuJ3QgdW5yZWdpc3RlciAnJXMnIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgAlczogZ2V0IHBlZXIgYWRkcmVzcyBmYWlsZWQsIGNhbid0IHJlc29sdmUgSVAgdG8gaG9zdG5hbWUAQ2FwYWJpbGl0eSBjbGllbnQgaW50ZXJhY3RpdmUgZmFpbGVkIHdpdGggZXJyb3I6ICVzAEZhaWxlZCB0byByZXNldCBJUFY2X1Y2T05MWSBmbGFnIChlcnJvcjogJWQpLiBUaGUgc2VydmVyIHdpbGwgbGlzdGVuIHRvIElQdjYgYWRkcmVzc2VzIG9ubHkuAEludmFsaWQga2V5IHR5cGUASW52YWxpZCBrZXkgbGVuZ3RoIGZvciBnaXZlbiBibG9jayBjaXBoZXIAQ291bGQgbm90IGNyZWF0ZSBrZXlyaW5nIGRpcmVjdG9yeS4gVGhlIGtleXJpbmdfZmlsZSB3aWxsIHN0YXkgdW51c2FibGUgdW50aWwgY29ycmVjdCBwYXRoIHRvIHRoZSBrZXlyaW5nIGRpcmVjdG9yeSBnZXRzIHByb3ZpZGVkAGtleXJpbmdfZmlsZSBpbml0aWFsaXphdGlvbiBmYWlsdXJlLiBQbGVhc2UgY2hlY2sgaWYgdGhlIGtleXJpbmdfZmlsZV9kYXRhIHBvaW50cyB0byByZWFkYWJsZSBrZXlyaW5nIGZpbGUgb3Iga2V5cmluZyBmaWxlIGNhbiBiZSBjcmVhdGVkIGluIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24uIFRoZSBrZXlyaW5nX2ZpbGUgd2lsbCBzdGF5IHVudXNhYmxlIHVudGlsIGNvcnJlY3QgcGF0aCB0byB0aGUga2V5cmluZyBmaWxlIGdldHMgcHJvdmlkZWQAa2V5cmluZ19maWxlIGluaXRpYWxpemF0aW9uIGZhaWx1cmUgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUgdGhlIHBsdWdpbi4ARmFpbGVkIHRvIGdlbmVyYXRlIGEga2V5IGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIGtleXJpbmdfZmlsZSBwbHVnaW4ARXJyb3Igd2hpbGUgJXMga2V5OiBpbnZhbGlkIGtleV90eXBlAEVycm9yIHdoaWxlICVzIGtleToga2V5X2lkIGNhbm5vdCBiZSBlbXB0eQBGYWlsZWQgdG8gJXMgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUgJXMgcGx1Z2luAEluY29ycmVjdCBLZXlyaW5nIGZpbGUARm91bmQgbWFsZm9ybWVkIGtleXJpbmcgYmFja3VwIGZpbGUgLSByZW1vdmluZyBpdABFcnJvciB3aGlsZSByZXN0b3Jpbmcga2V5cmluZyBmcm9tIGJhY2t1cCBmaWxlIGNhbm5vdCBvdmVyd3JpdGUga2V5cmluZyB3aXRoIGJhY2t1cABFcnJvciB3aGlsZSBmbHVzaGluZyBpbi1tZW1vcnkga2V5cmluZyBpbnRvIGtleXJpbmcgZmlsZQBFcnJvciB3aGlsZSByZWFkaW5nIHN0YXQgZm9yICVzLlBsZWFzZSBjaGVjayBpZiBmaWxlICVzIHdhcyBub3QgcmVtb3ZlZC4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHJlbW92ZSBmaWxlICVzIE9TIHJldHVuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHRydW5jYXRlIGZpbGUgJXMuIE9TIHJldHVuZWQgdGhpcyBlcnJvcjogJXMAVW5rbm93biBlcnJvciAlZABrZXlyaW5nX2ZpbGVfZGF0YSBjYW5ub3QgYmUgc2V0IHRvIG5ldyB2YWx1ZSBhcyB0aGUga2V5cmluZyBmaWxlIGNhbm5vdCBiZSBjcmVhdGVkL2FjY2Vzc2VkIGluIHRoZSBwcm92aWRlZCBwYXRoACVzAEVycm9yIHdoaWxlIGxvYWRpbmcga2V5cmluZyBjb250ZW50LiBUaGUga2V5cmluZyBtaWdodCBiZSBtYWxmb3JtZWQAQ291bGQgbm90IGZsdXNoIGtleXMgdG8ga2V5cmluZwBDb3VsZCBub3QgZmx1c2gga2V5cyB0byBrZXlyaW5nJ3MgYmFja3VwAEVycm9yIHdoaWxlIGZldGNoaW5nIGtleToga2V5X2lkIGNhbm5vdCBiZSBlbXB0eQBFcnJvciB3aGlsZSByZW1vdmluZyBrZXk6IGtleV9pZCBjYW5ub3QgYmUgZW1wdHkARm9yIGtleXJpbmdfb2t2IHRvIGJlIGluaXRpYWxpemVkLCBwbGVhc2UgcG9pbnQga2V5cmluZ19va3ZfY29uZl9kaXIgdmFyaWFibGUgdG8gYSBkaXJlY3Rvcnkgd2l0aCBPcmFjbGUgS2V5IFZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgc3NsIG1hdGVyaWFscwBrZXlyaW5nX29rdiBpbml0aWFsaXphdGlvbiBmYWlsdXJlLiBQbGVhc2UgY2hlY2sgdGhhdCB0aGUga2V5cmluZ19va3ZfY29uZl9kaXIgcG9pbnRzIHRvIGEgcmVhZGFibGUgZGlyZWN0b3J5IGFuZCB0aGF0IHRoZSBkaXJlY3RvcnkgY29udGFpbnMgT3JhY2xlIEtleSBWYXVsdCBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHNzbCBtYXRlcmlhbHMuIFBsZWFzZSBhbHNvIGNoZWNrIHRoYXQgT3JhY2xlIEtleSBWYXVsdCBpcyB1cCBhbmQgcnVubmluZy4Aa2V5cmluZ19va3YgaW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSB0aGUgcGx1Z2luAEludmFsaWQga2V5IHR5cGUASW52YWxpZCBrZXkgbGVuZ3RoIGZvciBnaXZlbiBibG9jayBjaXBoZXIARmFpbGVkIHRvIGdlbmVyYXRlIGEga2V5IGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIGtleXJpbmdfb2t2IHBsdWdpbgBDb3VsZCBub3QgZmluZCBlbnRyeSBmb3Igc2VydmVyIGluIGNvbmZpZ3VyYXRpb24gZmlsZSAlcwBDb3VsZCBub3QgZmluZCBlbnRyeSBmb3Igc3RhbmRieSBzZXJ2ZXIgaW4gY29uZmlndXJhdGlvbiBmaWxlICVzAENvdWxkIG5vdCBwYXJzZSB0aGUgJXMgZmlsZSBwcm92aWRlZABDb3VsZCBub3QgbG9hZCBrZXlzJyB1aWRzIGZyb20gdGhlIE9LViBzZXJ2ZXIAQ291bGQgbm90IGluaXRpYWxpemUgc3NsIGxheWVyAENvdWxkIG5vdCBpbml0aWFsaXplIE9LViBjbGllbnQAQ291bGQgbm90IGNvbm5lY3QgdG8gdGhlIE9LViBzZXJ2ZXIAQ291bGQgbm90IHJlbW92ZSB0aGUga2V5AENvdWxkIG5vdCBhZGQgYXR0cmlidXRlLCBhdHRyaWJ1dGVfbmFtZT0lcyBhdHRyaWJ1dGUgdmFsdWU9JXMAQ291bGQgbm90IGdlbmVyYXRlIHRoZSBrZXkuAENvdWxkIG5vdCBzdG9yZSB0aGUga2V5LgBDb3VsZCBub3QgYWN0aXZhdGUgdGhlIGtleS4AQ291bGQgbm90IGZldGNoIGdlbmVyYXRlZCBrZXkAQ291bGQgbm90IHN0b3JlL2dlbmVyYXRlIHRoZSBrZXkgLSBmYWlsZWQgdG8gc2V0IGtleSBhdHRyaWJ1dGUgeC1rZXktcmVhZHkAQ291bGQgbm90IHJldHJpZXZlIGtleSBzaWduYXR1cmUgZnJvbSBjdXN0b20gYXR0cmlidXRlcwBDb3VsZCBub3QgcmV0cmlldmUga2V5IGZyb20gT0tWAEVycm9yIGxvYWRpbmcgdHJ1c3Qgc3RvcmUARXJyb3Igc2V0dGluZyB0aGUgY2VydGlmaWNhdGUgZmlsZS4ARXJyb3Igc2V0dGluZyB0aGUga2V5IGZpbGUuAFByaXZhdGUga2V5IGRvZXMgbm90IG1hdGNoIHRoZSBjZXJ0aWZpY2F0ZSBwdWJsaWMga2V5AEluY29ycmVjdCBLZXlyaW5nIGZpbGUAS2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBkZWNyeXB0aW9uIGZhaWxlZC4gUGxlYXNlIHZlcmlmeSAtLWtleXJpbmctZW5jcnlwdGVkLWZpbGUtcGFzc3dvcmQgb3B0aW9uIHZhbHVlLgBGb3VuZCBtYWxmb3JtZWQga2V5cmluZyBiYWNrdXAgZmlsZSAtIHJlbW92aW5nIGl0AEVycm9yIHdoaWxlIHJlc3RvcmluZyBrZXlyaW5nIGZyb20gYmFja3VwIGZpbGUgY2Fubm90IG92ZXJ3cml0ZSBrZXlyaW5nIHdpdGggYmFja3VwAEVycm9yIHdoaWxlIGZsdXNoaW5nIGluLW1lbW9yeSBrZXlyaW5nIGludG8ga2V5cmluZyBmaWxlAEtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgZW5jcnlwdGlvbiBmYWlsZWQuIFBsZWFzZSB2ZXJpZnkgLS1rZXlyaW5nLWVuY3J5cHRlZC1maWxlLXBhc3N3b3JkIG9wdGlvbiB2YWx1ZS4Aa2V5cmluZ19lbmNyeXB0ZWRfZmlsZV9kYXRhIGNhbm5vdCBiZSBzZXQgdG8gbmV3IHZhbHVlIGFzIHRoZSBrZXlyaW5nIGZpbGUgY2Fubm90IGJlIGNyZWF0ZWQvYWNjZXNzZWQgaW4gdGhlIHByb3ZpZGVkIHBhdGgAQ291bGQgbm90IGNyZWF0ZSBrZXlyaW5nIGRpcmVjdG9yeSBUaGUga2V5cmluZ19lbmNyeXB0ZWRfZmlsZSB3aWxsIHN0YXkgdW51c2FibGUgdW50aWwgY29ycmVjdCBwYXRoIHRvIHRoZSBrZXlyaW5nIGRpcmVjdG9yeSBnZXRzIHByb3ZpZGVkAFRoZSBrZXlyaW5nX2VuY3J5cHRlZF9maWxlX3Bhc3N3b3JkIG11c3QgYmUgc2V0IHRvIGEgdmFsaWQgdmFsdWUuAFRvbyBsb25nIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGVfcGFzc3dvcmQgdmFsdWUuAGtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4gUGxlYXNlIGNoZWNrIGlmIHRoZSBrZXlyaW5nX2VuY3J5cHRlZF9maWxlX2RhdGEgcG9pbnRzIHRvIHJlYWRhYmxlIGtleXJpbmcgZmlsZSBvciBrZXlyaW5nIGZpbGUgY2FuIGJlIGNyZWF0ZWQgaW4gdGhlIHNwZWNpZmllZCBsb2NhdGlvbiBvciBwYXNzd29yZCB0byBkZWNyeXB0IGtleXJpbmcgZmlsZSBpcyBjb3JyZWN0LgBrZXlyaW5nX2VuY3J5cHRlZF9maWxlIGluaXRpYWxpemF0aW9uIGZhaWx1cmUgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUgdGhlIHBsdWdpbgBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBrZXkgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUga2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBwbHVnaW4Aa2V5cmluZ19hd3NfY21rX2lkIGNhbm5vdCBiZSBzZXQgdG8gdGhlIG5ldyB2YWx1ZSBhcyBBV1MgS01TIHNlZW1zIHRvIG5vdCB1bmRlcnN0YW5kIHRoZSBpZCBwcm92aWRlZC4gUGxlYXNlIGNoZWNrIHRoYXQgQ01LIGlkIHByb3ZpZGVkIGlzIGNvcnJlY3QuAGtleXJpbmdfYXdzX3JlZ2lvbiBjYW5ub3QgYmUgc2V0IHRvIHRoZSBuZXcgdmFsdWUgYXMgQVdTIEtNUyBzZWVtcyB0byBub3QgdW5kZXJzdGFuZCB0aGUgcmVnaW9uIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgdGhhdCByZWdpb24gcHJvdmlkZWQgaXMgY29ycmVjdC4AQ291bGQgbm90IG9wZW4ga2V5cmluZ19hd3MgY29uZmlndXJhdGlvbiBmaWxlOiAlcy4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHJlYWQgQVdTIGFjY2VzcyBrZXkgaWQgZnJvbSBrZXlyaW5nX2F3cyBjb25maWd1cmF0aW9uIGZpbGU6ICVzLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgcmVhZCBBV1MgYWNjZXNzIGtleSBmcm9tIGtleXJpbmdfYXdzIGNvbmZpZ3VyYXRpb24gZmlsZTogJXMuIE9TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAFBhdGggdG8ga2V5cmluZyBhd3MgY29uZmlndXJhdGlvbiBmaWxlIGNhbm5vdCBiZSBlbXB0eQBQYXRoIHRvIGtleXJpbmdfYXdzIHN0b3JhZ2UgZmlsZSBjYW5ub3QgYmUgZW1wdHkuAFVuYWJsZSB0byBjcmVhdGUvYWNjZXNzIGtleXJpbmcgZGlyZWN0b3J5LgBVbmFibGUgdG8gY3JlYXRlL2FjY2VzcyBrZXlyaW5nX2F3cyBzdG9yYWdlIGZpbGUuIFBsZWFzZSBjaGVjayBpZiBrZXlyaW5nX2F3c19kYXRhX2ZpbGUgcG9pbnRzIHRvIGxvY2F0aW9uIHdoZXJlIGtleXJpbmcgZmlsZSBjYW4gYmUgY3JlYXRlZC9hY2Nlc3NlZC4gUGxlYXNlIGFsc28gbWFrZSBzdXJlIHRoYXQgTXlTUUwgc2VydmVyJ3MgdXNlciBoYXMgaGlnaCBlbm91Z2ggcHJpdmlsZWdlcyB0byBhY2Nlc3MgdGhpcyBsb2NhdGlvbi4Aa2V5cmluZ19hd3MgaW5pdGlhbGl6YXRpb24gZmFpbGVkIGR1ZSB0byBpbnRlcm5hbCBlcnJvciB3aGVuIGluaXRpYWxpemluZyBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlIC0gJXMuIE9TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzOgBDb3VsZCBub3QgYWNjZXNzIGtleXJpbmdfYXdzIHN0b3JhZ2UgZmlsZSBpbiB0aGUgcGF0aCBwcm92aWRlZC4gUGxlYXNlIGNoZWNrIGlmIHRoZSBrZXlyaW5nX2F3cyBkaXJlY3RvcnkgY2FuIGJlIGFjY2Vzc2VkIGJ5IE15U1FMIFNlcnZlcgBrZXlyaW5nX2F3c19jbWtfaWQgaGFzIHRvIGJlIHNldABDb3VsZCBub3QgZ2V0IEFXUyBLTVMgY3JlZGVudGlhbHMgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBmaWxlAGtleXJpbmdfYXdzIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuAGtleXJpbmdfYXdzIGluaXRpYWxpemF0aW9uIGZhaWx1cmUgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUgdGhlIHBsdWdpbgBJbnZhbGlkIGtleSBsZW5ndGggZm9yIGdpdmVuIGJsb2NrIGNpcGhlcgBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBrZXkgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUga2V5cmluZ19maWxlIHBsdWdpbgBJbmNvcnJlY3QgS2V5cmluZyBmaWxlAEZvdW5kIG1hbGZvcm1lZCBrZXlyaW5nIGJhY2t1cCBmaWxlIC0gcmVtb3ZpbmcgaXQARXJyb3Igd2hpbGUgcmVzdG9yaW5nIGtleXJpbmcgZnJvbSBiYWNrdXAgZmlsZSBjYW5ub3Qgb3ZlcndyaXRlIGtleXJpbmcgd2l0aCBiYWNrdXAARXJyb3Igd2hpbGUgZmx1c2hpbmcgaW4tbWVtb3J5IGtleXJpbmcgaW50byBrZXlyaW5nIGZpbGUAV3JvbmcgcmVnaW9uAENvdWxkIG5vdCBjb25uZWN0IHRvIEFXUyBLTVMgd2l0aCB0aGUgY3JlZGVudGlhbHMgcHJvdmlkZWQuIFBsZWFzZSBtYWtlIHN1cmUgdGhleSBhcmUgY29ycmVjdC4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgZ2VuZXJhdGUgYSBuZXcga2V5LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCBlbmNyeXB0IGtleS4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgcmUtZW5jcnlwdCBrZXkuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IGRlY3J5cHQga2V5LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByb3RhdGUgdGhlIENNSy4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBUaGUgcmVxdWVzdGVkIEdUSUQgJyVzOiVsbGQnIHdhcyBhbHJlYWR5IHVzZWQsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIHJvbGxiYWNrLgBUaGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciB0aHJlYWQgd2FzIGtpbGxlZC4ARXJyb3IgYXQgZXZlbnQgaGFuZGxpbmchIEdvdCBlcnJvcjogJWQuAEVycm9yIHdoZW4gZXh0cmFjdGluZyBncm91cCBHVElEIGV4ZWN1dGlvbiBpbmZvcm1hdGlvbiwgc29tZSByZWNvdmVyeSBvcGVyYXRpb25zIG1heSBmYWNlIGZ1dHVyZSBpc3N1ZXMuAEFuIGVycm9yIG9jY3VycmVkIHdoZW4gdHJ5aW5nIHRvIHJlZHVjZSB0aGUgQ2VydGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBzaXplIGZvciB0cmFuc21pc3Npb24uAEZhaWxlZCB0byBjcmVhdGUgZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgYXBwbGllciBjYWNoZSEAVW5ibG9ja2luZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gdGhyZWFkIHdhaXRpbmcgZm9yIGFwcGxpZXIgdG8gc3RhcnQsIGFzIHRoZSBzdGFydCBncm91cCByZXBsaWNhdGlvbiB3YXMga2lsbGVkLgBUaGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBwaXBlbGluZSB3YXMgbm90IHByb3Blcmx5IGRpc3Bvc2VkLiBDaGVjayB0aGUgZXJyb3IgbG9nIGZvciBmdXJ0aGVyIGluZm8uAFRoZSBhcHBsaWVyIHRocmVhZCBleGVjdXRpb24gd2FzIGFib3J0ZWQuIFVuYWJsZSB0byBwcm9jZXNzIG1vcmUgdHJhbnNhY3Rpb25zLCB0aGlzIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAEZhdGFsIGVycm9yIGR1cmluZyBleGVjdXRpb24gb24gdGhlIEFwcGxpZXIgcHJvY2VzcyBvZiBHcm91cCBSZXBsaWNhdGlvbi4gVGhlIHNlcnZlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAEVycm9yIHN0b3BwaW5nIGFsbCByZXBsaWNhdGlvbiBjaGFubmVscyB3aGlsZSBzZXJ2ZXIgd2FzIGxlYXZpbmcgdGhlIGdyb3VwLiAlcwBFcnJvciBzZW5kaW5nIHNpbmdsZSBwcmltYXJ5IG1lc3NhZ2UgaW5mb3JtaW5nIHRoYXQgcHJpbWFyeSBkaWQgYXBwbHkgcmVsYXkgbG9ncy4ARXJyb3IgdXBkYXRpbmcgdHJhbnNhY3Rpb24gc25hcHNob3QgdmVyc2lvbiBhZnRlciB0cmFuc2FjdGlvbiBiZWluZyBwb3NpdGl2ZWx5IGNlcnRpZmllZC4ARXJyb3IgZmV0Y2hpbmcgdHJhbnNhY3Rpb24gc2lkbm8gYWZ0ZXIgdHJhbnNhY3Rpb24gYmVpbmcgcG9zaXRpdmVseSBjZXJ0aWZpZWQuAEJyb2FkY2FzdCBvZiBjb21taXR0ZWQgdHJhbnNhY3Rpb25zIG1lc3NhZ2UgZmFpbGVkLgBVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4AVW5hYmxlIHRvIGFkZCB0aGUgZ3JvdXBfc2lkIGluIHRoZSBncm91cF9ndGlkX3NpZF9tYXAgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4ARXJyb3IgdXBkYXRpbmcgZ3JvdXBfZ3RpZF9leGVjdXRlZCBHSVREIHNldCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBVbmFibGUgdG8gaGFuZGxlIHRoZSBkb25vcidzIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBjb25mbGljdCBkZXRlY3Rpb24gY29tcG9uZW50LiBQb3NzaWJsZSBvdXQgb2YgbWVtb3J5IGVycm9yLgBFcnJvciB3aGVuIGVzdGFibGlzaGluZyBhIHNlcnZlciBjb25uZWN0aW9uIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciBHVElEIGV4ZWN1dGVkIHNldC4gQ2VydGlmaWNhdGlvbiBtb2R1bGUgY2FuJ3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuAEVycm9yIHdoaWxlIGFkZGluZyB0aGUgc2VydmVyIEdUSUQgRVhFQ1VURUQgc2V0IHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGUgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIHJldHJpZXZlZCBzZXQgZm9yIGl0cyBhcHBsaWVyLiBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBjYW4ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4ARXJyb3Igd2hpbGUgYWRkaW5nIHRoZSBtZW1iZXIgcmV0cmlldmVkIHNldCB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBFcnJvciBkdXJpbmcgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byB1cGRhdGUgbGFzdCBjb25mbGljdCBmcmVlIHRyYW5zYWN0aW9uLCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgbm90IGJlIHRyYWNrZWQgb24gcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9zdGF0cy5sYXN0X2NvbmZsaWN0X2ZyZWVfdHJhbnNhY3Rpb24uAEVycm9yIHVwZGF0aW5nIHRyYW5zYWN0aW9uIHNuYXBzaG90IHZlcnNpb24gcmVmZXJlbmNlIGZvciBpbnRlcm5hbCBzdG9yYWdlLgBFcnJvciBmZXRjaGluZyB0cmFuc2FjdGlvbiBzaWRubyB3aGlsZSBhZGRpbmcgdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0LgBFcnJvciB3aGlsZSBlbnN1cmluZyB0aGUgc2lkbm8gYmUgcHJlc2VudCBpbiB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZC4ASW1wb3NzaWJsZSB0byBnZW5lcmF0ZSBHbG9iYWwgVHJhbnNhY3Rpb24gSWRlbnRpZmllcjogdGhlIGludGVnZXIgY29tcG9uZW50IHJlYWNoZWQgdGhlIG1heGltYWwgdmFsdWUuIFJlc3RhcnQgdGhlIGdyb3VwIHdpdGggYSBuZXcgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS4ASW52YWxpZCBzdGFibGUgdHJhbnNhY3Rpb25zIHNldC4ARXJyb3IgdXBkYXRpbmcgc3RhYmxlIHRyYW5zYWN0aW9ucyBzZXQuAFRoZXJlIHdhcyBhbiBlcnJvciB3aGVuIGZpbGxpbmcgdGhlIG1pc3NpbmcgR1RJRHMgb24gdGhlIGFwcGxpZXIgY2hhbm5lbCByZWNlaXZlZCBzZXQuIERlc3BpdGUgbm90IGNyaXRpY2FsLCBvbiB0aGUgbG9uZyBydW4gdGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWVzLgBTa2lwcGluZyB0aGUgY29tcHV0YXRpb24gb2YgdGhlIFRyYW5zYWN0aW9uc19jb21taXR0ZWRfYWxsX21lbWJlcnMgZmllbGQgYXMgYW4gb2xkZXIgaW5zdGFuY2Ugb2YgdGhpcyBjb21wdXRhdGlvbiBpcyBzdGlsbCBvbmdvaW5nLgBOdWxsIHBhY2tldCBvbiBjZXJ0aWZpZXIncyBxdWV1ZS4ARXJyb3IgcmVhZGluZyBHVElEcyBmcm9tIHRoZSBtZXNzYWdlLgBFcnJvciBwcm9jZXNzaW5nIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBFcnJvciBwcm9jZXNzaW5nIGludGVyc2VjdGlvbiBvZiBzdGFibGUgdHJhbnNhY3Rpb25zIHNldC4ARXJyb3Igc2V0dGluZyBzdGFibGUgdHJhbnNhY3Rpb25zIHNldC4ARXJyb3IgcmVhZGluZyBncm91cF9ndGlkX2V4dHJhY3RlZCBmcm9tIHRoZSBWaWV3X2NoYW5nZV9sb2dfZXZlbnQuAEVycm9yIHJlYWRpbmcgdGhlIHdyaXRlIHNldCBpdGVtICclcycgZnJvbSB0aGUgVmlld19jaGFuZ2VfbG9nX2V2ZW50LgBFcnJvciBkdXJpbmcgY2VydGlmaWNhdGlvbl9pbmZvIGluaXRpYWxpemF0aW9uLgBQcmltYXJ5IGhhZCBhcHBsaWVkIGFsbCByZWxheSBsb2dzLCBkaXNhYmxlZCBjb25mbGljdCBkZXRlY3Rpb24uAE1lc3NhZ2UgcmVjZWl2ZWQgd2hpbGUgdGhlIHBsdWdpbiBpcyBub3QgcmVhZHksIG1lc3NhZ2UgZGlzY2FyZGVkLgBNZXNzYWdlIHJlY2VpdmVkIHdpdGhvdXQgYSBwcm9wZXIgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllci4ARXJyb3IgcHJvY2Vzc2luZyBtZXNzYWdlIGluIENlcnRpZmllci4AVGhpcyBzZXJ2ZXIgd2FzIG5vdCBkZWNsYXJlZCBvbmxpbmUgc2luY2UgaXQgaXMgb24gc3RhdHVzICVzLgBUaGlzIHNlcnZlciB3YXMgZGVjbGFyZWQgb25saW5lIHdpdGhpbiB0aGUgcmVwbGljYXRpb24gZ3JvdXAuAFdoZW4gZGVjbGFyaW5nIHRoZSBwbHVnaW4gb25saW5lIGl0IHdhcyBub3QgcG9zc2libGUgdG8gZGlzYWJsZSB0aGUgc2VydmVyIHJlYWQgbW9kZSBzZXR0aW5ncy4gVHJ5IHRvIGRpc2FibGUgaXQgbWFudWFsbHkuAFRoZSBtZW1iZXIgd2l0aCBhZGRyZXNzICVzOiV1IHdhcyBkZWNsYXJlZCBvbmxpbmUgd2l0aGluIHRoZSByZXBsaWNhdGlvbiBncm91cC4ATWVtYmVyIHdpdGggYWRkcmVzcyAlczoldSBoYXMgYmVjb21lIHVucmVhY2hhYmxlLgBNZW1iZXIgd2l0aCBhZGRyZXNzICVzOiV1IGlzIHJlYWNoYWJsZSBhZ2Fpbi4AVGhpcyBzZXJ2ZXIgaXMgbm90IGFibGUgdG8gcmVhY2ggYSBtYWpvcml0eSBvZiBtZW1iZXJzIGluIHRoZSBncm91cC4gVGhpcyBzZXJ2ZXIgd2lsbCBub3cgYmxvY2sgYWxsIHVwZGF0ZXMuIFRoZSBzZXJ2ZXIgd2lsbCByZW1haW4gYmxvY2tlZCB1bnRpbCBjb250YWN0IHdpdGggdGhlIG1ham9yaXR5IGlzIHJlc3RvcmVkLiBJdCBpcyBwb3NzaWJsZSB0byB1c2UgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB0byBmb3JjZSBhIG5ldyBncm91cCBtZW1iZXJzaGlwLgBUaGlzIHNlcnZlciBpcyBub3QgYWJsZSB0byByZWFjaCBhIG1ham9yaXR5IG9mIG1lbWJlcnMgaW4gdGhlIGdyb3VwLiBUaGlzIHNlcnZlciB3aWxsIG5vdyBibG9jayBhbGwgdXBkYXRlcy4gVGhlIHNlcnZlciB3aWxsIHJlbWFpbiBibG9ja2VkIGZvciB0aGUgbmV4dCAlbHUgc2Vjb25kcy4gVW5sZXNzIGNvbnRhY3Qgd2l0aCB0aGUgbWFqb3JpdHkgaXMgcmVzdG9yZWQsIGFmdGVyIHRoaXMgdGltZSB0aGUgbWVtYmVyIHdpbGwgZXJyb3Igb3V0IGFuZCBsZWF2ZSB0aGUgZ3JvdXAuIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHRvIGZvcmNlIGEgbmV3IGdyb3VwIG1lbWJlcnNoaXAuAEEgZ3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2Ugd2FzIHJlY2VpdmVkIGJ1dCB0aGUgcGx1Z2luIGlzIGFscmVhZHkgbGVhdmluZyBkdWUgdG8gdGhlIGNvbmZpZ3VyZWQgdGltZW91dCBvbiBncm91cF9yZXBsaWNhdGlvbl91bnJlYWNoYWJsZV9tYWpvcml0eV90aW1lb3V0IG9wdGlvbi4AVGhlIG1lbWJlciBoYXMgcmVzdW1lZCBjb250YWN0IHdpdGggYSBtYWpvcml0eSBvZiB0aGUgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIFJlZ3VsYXIgb3BlcmF0aW9uIGlzIHJlc3RvcmVkIGFuZCB0cmFuc2FjdGlvbnMgYXJlIHVuYmxvY2tlZC4ATWVtYmVycyByZW1vdmVkIGZyb20gdGhlIGdyb3VwOiAlcwBQcmltYXJ5IHNlcnZlciB3aXRoIGFkZHJlc3MgJXMgbGVmdCB0aGUgZ3JvdXAuIEVsZWN0aW5nIG5ldyBQcmltYXJ5LgBNZW1iZXJzIGpvaW5lZCB0aGUgZ3JvdXA6ICVzAFRoZXJlIHdhcyBhIHByZXZpb3VzIHBsdWdpbiBlcnJvciB3aGlsZSB0aGUgbWVtYmVyIGpvaW5lZCB0aGUgZ3JvdXAuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAEdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlZCB0byAlcyBvbiB2aWV3ICVzLgBHcm91cCBtZW1iZXJzaGlwIGNoYW5nZWQ6IFRoaXMgbWVtYmVyIGhhcyBsZWZ0IHRoZSBncm91cC4ATWVtYmVyIHdhcyBleHBlbGxlZCBmcm9tIHRoZSBncm91cCBkdWUgdG8gbmV0d29yayBmYWlsdXJlcywgY2hhbmdpbmcgbWVtYmVyIHN0YXR1cyB0byBFUlJPUi4AVW5hYmxlIHRvIG9wZW4gc2Vzc2lvbiB0byAocmUpc2V0IHJlYWQgb25seSBtb2RlLiBTa2lwcGluZy4AQSBuZXcgcHJpbWFyeSB3aXRoIGFkZHJlc3MgJXM6JXUgd2FzIGVsZWN0ZWQuICVzAFVuYWJsZSB0byBkaXNhYmxlIHN1cGVyIHJlYWQgb25seSBmbGFnLiBUcnkgdG8gZGlzYWJsZSBpdCBtYW51YWxseQBVbmFibGUgdG8gc2V0IHN1cGVyIHJlYWQgb25seSBmbGFnLiBUcnkgdG8gc2V0IGl0IG1hbnVhbGx5LgBUaGlzIHNlcnZlciBpcyB3b3JraW5nIGFzIHByaW1hcnkgbWVtYmVyLgBUaGlzIHNlcnZlciBpcyB3b3JraW5nIGFzIHNlY29uZGFyeSBtZW1iZXIgd2l0aCBwcmltYXJ5IG1lbWJlciBhZGRyZXNzICVzOiV1LgBVbmFibGUgdG8gc2V0IGFueSBtZW1iZXIgYXMgcHJpbWFyeS4gTm8gc3VpdGFibGUgY2FuZGlkYXRlLgBFcnJvciB3aGVuIGFjdGl2YXRpbmcgc3VwZXJfcmVhZF9vbmx5IG1vZGUgb24gc3RhcnQuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAEdyb3VwIGNvbnRhaW5zICVsdSBtZW1iZXJzIHdoaWNoIGlzIGdyZWF0ZXIgdGhhbiBncm91cF9yZXBsaWNhdGlvbl9hdXRvX2luY3JlbWVudF9pbmNyZW1lbnQgdmFsdWUgb2YgJWx1LiBUaGlzIGNhbiBsZWFkIHRvIGEgaGlnaGVyIHRyYW5zYWN0aW9uYWwgYWJvcnQgcmF0ZS4ATWVtYmVyIHdpdGggYWRkcmVzcyAnJXM6JXUnIGRpZG4ndCBwcm92aWRlIGFueSBkYXRhIGR1cmluZyB0aGUgbGFzdCBncm91cCBjaGFuZ2UuIEdyb3VwIGluZm9ybWF0aW9uIGNhbiBiZSBvdXRkYXRlZCBhbmQgbGVhZCB0byBlcnJvcnMgb24gcmVjb3ZlcnkuAFRoZXJlIGlzIGFscmVhZHkgYSBtZW1iZXIgd2l0aCBzZXJ2ZXJfdXVpZCAlcy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIGluZm9ybWF0aW9uIGZvciBncm91cCBjaGFuZ2UuIE9wZXJhdGlvbnMgYW5kIGNoZWNrcyBtYWRlIHRvIGdyb3VwIGpvaW5lcnMgbWF5IGJlIGluY29tcGxldGUuAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciBHVElEIGV4ZWN1dGVkIHNldC4gT3BlcmF0aW9ucyBhbmQgY2hlY2tzIG1hZGUgdG8gZ3JvdXAgam9pbmVycyBtYXkgYmUgaW5jb21wbGV0ZS4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIHJldHJpZXZlZCBzZXQgZm9yIGl0cyBhcHBsaWVyLiBPcGVyYXRpb25zIGFuZCBjaGVja3MgbWFkZSB0byBncm91cCBqb2luZXJzIG1heSBiZSBpbmNvbXBsZXRlLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIGdyb3VwIGFscmVhZHkgaGFzIDkgbWVtYmVycy4ATWVtYmVyIHZlcnNpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGdyb3VwLgBUaGUgbWVtYmVyIGNvbnRhaW5zIHRyYW5zYWN0aW9ucyBub3QgcHJlc2VudCBpbiB0aGUgZ3JvdXAuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAEl0IHdhcyBub3QgcG9zc2libGUgdG8gYXNzZXNzIGlmIHRoZSBtZW1iZXIgaGFzIG1vcmUgdHJhbnNhY3Rpb25zIHRoYW4gdGhlIGdyb3VwLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBNZW1iZXIgdmVyc2lvbiBpcyBsb3dlciB0aGFuIHNvbWUgZ3JvdXAgbWVtYmVyLCBidXQgc2luY2Ugb3B0aW9uICdncm91cF9yZXBsaWNhdGlvbl9hbGxvd19sb2NhbF9sb3dlcl92ZXJzaW9uX2pvaW4gaXMgZW5hYmxlZCwgbWVtYmVyIHdpbGwgYmUgYWxsb3dlZCB0byBqb2luLgBFcnJvciBwcm9jZXNzaW5nIGxvY2FsIEdUSUQgc2V0cyB3aGVuIGNvbXBhcmluZyB0aGlzIG1lbWJlciB0cmFuc2FjdGlvbnMgYWdhaW5zdCB0aGUgZ3JvdXAuAFRoaXMgbWVtYmVyIGhhcyBtb3JlIGV4ZWN1dGVkIHRyYW5zYWN0aW9ucyB0aGFuIHRob3NlIHByZXNlbnQgaW4gdGhlIGdyb3VwLiBMb2NhbCB0cmFuc2FjdGlvbnM6ICVzID4gR3JvdXAgdHJhbnNhY3Rpb25zOiAlcwBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGdyb3VwX3JlcGxpY2F0aW9uX2d0aWRfYXNzaWdubWVudF9ibG9ja19zaXplIG9wdGlvbiB2YWx1ZSAnJWxsdScgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwICclbGx1Jy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AVGhlIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSB0cmFuc2FjdGlvbi13cml0ZS1zZXQtZXh0cmFjdGlvbiBvcHRpb24gdmFsdWUgJyVzJyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVzJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AVGhlIG1lbWJlciBjb25maWd1cmF0aW9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIGdyb3VwIGNvbmZpZ3VyYXRpb24uIFZhcmlhYmxlcyBzdWNoIGFzIGdyb3VwX3JlcGxpY2F0aW9uX3NpbmdsZV9wcmltYXJ5X21vZGUgb3IgZ3JvdXBfcmVwbGljYXRpb25fZW5mb3JjZV91cGRhdGVfZXZlcnl3aGVyZV9jaGVja3MgbXVzdCBoYXZlIHRoZSBzYW1lIHZhbHVlIG9uIGV2ZXJ5IHNlcnZlciBpbiB0aGUgZ3JvdXAuIChtZW1iZXIgY29uZmlndXJhdGlvbiBvcHRpb246IFslc10sIGdyb3VwIGNvbmZpZ3VyYXRpb24gb3B0aW9uOiBbJXNdKS4ARXJyb3Igc3RvcHBpbmcgYWxsIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHdoaWxlIHNlcnZlciB3YXMgbGVhdmluZyB0aGUgZ3JvdXAuICVzAERldGVjdGVkIHByZXZpb3VzIFJFU0VUIEJJTkFSWSBMT0dTIEFORCBHVElEUyBpbnZvY2F0aW9uIG9yIGFuIGlzc3VlIGV4aXN0cyBpbiB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciByZWxheSBsb2cuIFB1cmdpbmcgZXhpc3RpbmcgYXBwbGllciBsb2dzLgBVbmtub3duIGVycm9yIG9jY3VycmVkIHdoaWxlIHJlc2V0dGluZyBhcHBsaWVyJ3MgbW9kdWxlIGxvZ3MuAEZhaWxlZCB0byBzZXR1cCB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciB0aHJlYWQuAEVycm9yIHdoaWxlIHN0YXJ0aW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZABGYWlsZWQgdG8gc3RvcCB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciB0aHJlYWQuAEZhaWxlZCB0byBmZXRjaCB0cmFuc2FjdGlvbiBkYXRhIGNvbnRhaW5pbmcgcmVxdWlyZWQgdHJhbnNhY3Rpb24gaW5mbyBmb3IgYXBwbGllcgBDYW4ndCBzdGFydCByZXBsaWNhIElPIFRIUkVBRCBvZiBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSBhbmQgdGhlIHByaW1hcnkgbWVtYmVyIGlzIG5vdCBrbm93bi4AQ2FuJ3Qgc3RhcnQgcmVwbGljYSBJTyBUSFJFQUQgb2YgY2hhbm5lbCAnJXMnIHdoZW4gZ3JvdXAgcmVwbGljYXRpb24gaXMgcnVubmluZyB3aXRoIHNpbmdsZS1wcmltYXJ5IG1vZGUgb24gYSBzZWNvbmRhcnkgbWVtYmVyLgBDYW4ndCBzdGFydCByZXBsaWNhIFNRTCBUSFJFQUQgb2YgY2hhbm5lbCAnJXMnIHdoZW4gZ3JvdXAgcmVwbGljYXRpb24gaXMgcnVubmluZyB3aXRoIHNpbmdsZS1wcmltYXJ5IG1vZGUgYW5kIHRoZSBwcmltYXJ5IG1lbWJlciBpcyBub3Qga25vd24uAENhbid0IHN0YXJ0IHJlcGxpY2EgU1FMIFRIUkVBRCBvZiBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSBvbiBhIHNlY29uZGFyeSBtZW1iZXIuAFRhYmxlICVzIGRvZXMgbm90IHVzZSB0aGUgSW5ub0RCIHN0b3JhZ2UgZW5naW5lLiBUaGlzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JvdXAgUmVwbGljYXRpb24uAFRhYmxlICVzIGRvZXMgbm90IGhhdmUgYW55IFBSSU1BUlkgS0VZLiBUaGlzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JvdXAgUmVwbGljYXRpb24uAFRhYmxlICVzIGhhcyBhIGZvcmVpZ24ga2V5IHdpdGggJ0NBU0NBREUnLCAnU0VUIE5VTEwnIG9yICdTRVQgREVGQVVMVCcgY2xhdXNlLiBUaGlzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JvdXAgUmVwbGljYXRpb24uAGdyb3VwX3JlcGxpY2F0aW9uX2F1dG9faW5jcmVtZW50X2luY3JlbWVudCBpcyByZXNldCB0byAlbHUAYXV0b19pbmNyZW1lbnRfb2Zmc2V0IGlzIHJlc2V0IHRvICVsdQBncm91cF9yZXBsaWNhdGlvbl9hdXRvX2luY3JlbWVudF9pbmNyZW1lbnQgaXMgc2V0IHRvICVsdQBhdXRvX2luY3JlbWVudF9vZmZzZXQgaXMgc2V0IHRvICVsdQBGYWlsZWQgdG8gZmV0Y2ggdHJhbnNhY3Rpb24gY29udGV4dCBjb250YWluaW5nIHJlcXVpcmVkIHRyYW5zYWN0aW9uIGluZm8gZm9yIGNlcnRpZmljYXRpb24ARmFpbGVkIHRvIGZldGNoIEZvcm1hdF9kZXNjcmlwdGlvbl9sb2dfZXZlbnQgY29udGFpbmluZyByZXF1aXJlZCBzZXJ2ZXIgaW5mbyBmb3IgYXBwbGllcgBGYWlsZWQgdG8gZmV0Y2ggVHJhbnNhY3Rpb25fY29udGV4dF9sb2dfZXZlbnQgY29udGFpbmluZyByZXF1aXJlZCB0cmFuc2FjdGlvbiBpbmZvIGZvciBjZXJ0aWZpY2F0aW9uAEZhaWxlZCB0byByZWFkIHNuYXBzaG90IHZlcnNpb24gZnJvbSB0cmFuc2FjdGlvbiBjb250ZXh0IGV2ZW50IHJlcXVpcmVkIGZvciBjZXJ0aWZpY2F0aW9uAEZhaWxlZCB0byBmZXRjaCBHdGlkX2xvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIHRyYW5zYWN0aW9uIGluZm8gZm9yIGNlcnRpZmljYXRpb24AVW5hYmxlIHRvIHVwZGF0ZSBjZXJ0aWZpY2F0aW9uIHJlc3VsdCBvbiBzZXJ2ZXIgc2lkZSwgdGhyZWFkX2lkOiAlbHUAVW5hYmxlIHRvIGFkZCBndGlkIGluZm9ybWF0aW9uIHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIHNldCB3aGVuIGd0aWQgd2FzIHByb3ZpZGVkIGZvciBsb2NhbCB0cmFuc2FjdGlvbnMAVW5hYmxlIHRvIGFkZCBndGlkIGluZm9ybWF0aW9uIHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIHNldCB3aGVuIG5vIGd0aWQgd2FzIHByb3ZpZGVkIGZvciBsb2NhbCB0cmFuc2FjdGlvbnMARmFpbGVkIHRvIG5vdGlmeSBjZXJ0aWZpY2F0aW9uIG91dGNvbWUAVW5hYmxlIHRvIGFkZCBndGlkIGluZm9ybWF0aW9uIHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIHNldCB3aGVuIGd0aWQgd2FzIHByb3ZpZGVkIGZvciByZW1vdGUgdHJhbnNhY3Rpb25zAFVuYWJsZSB0byBhZGQgZ3RpZCBpbmZvcm1hdGlvbiB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBzZXQgd2hlbiBndGlkIHdhcyBub3QgcHJvdmlkZWQgZm9yIHJlbW90ZSB0cmFuc2FjdGlvbnMARmFpbGVkIHRvIGZldGNoIFZpZXdfY2hhbmdlX2xvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIGluZm8gZm9yIGNlcnRpZmljYXRpb24ARXJyb3Igd2hlbiBjb250YWN0aW5nIHRoZSBzZXJ2ZXIgdG8gZW5zdXJlIHRoZSBwcm9wZXIgbG9nZ2luZyBvZiBhIGdyb3VwIGNoYW5nZSBpbiB0aGUgYmlubG9nAFRpbWVvdXQgd2hlbiB3YWl0aW5nIGZvciB0aGUgc2VydmVyIHRvIGV4ZWN1dGUgbG9jYWwgdHJhbnNhY3Rpb25zIGluIG9yZGVyIGFzc3VyZSB0aGUgZ3JvdXAgY2hhbmdlIHByb3BlciBsb2dnaW5nAEZhaWxlZCB0byBmZXRjaCBMb2dfZXZlbnQgY29udGFpbmluZyByZXF1aXJlZCBzZXJ2ZXIgaW5mbyBmb3IgYXBwbGllcgBVbmFibGUgdG8gc3RhcnQgR3JvdXAgUmVwbGljYXRpb24uIFJlcGxpY2F0aW9uIGFwcGxpZXIgaW5mcmFzdHJ1Y3R1cmUgaXMgbm90IGluaXRpYWxpemVkIHNpbmNlIHRoZSBzZXJ2ZXIgd2FzIHN0YXJ0ZWQgd2l0aCAtLWluaXRpYWxpemUsIC0taW5pdGlhbGl6ZS1pbnNlY3VyZSBvciAtLXVwZ3JhZGU9TUlOSU1BTCBvbiBhIHNlcnZlciB1cGdyYWRlLgBGYWlsZWQgdG8gZXN0YWJsaXNoIGFuIGludGVybmFsIHNlcnZlciBjb25uZWN0aW9uIHRvIGV4ZWN1dGUgcGx1Z2luIG9wZXJhdGlvbnMAU2V0dGluZyBzdXBlcl9yZWFkX29ubHk9T04uAFNldHRpbmcgc3VwZXJfcmVhZF9vbmx5PU9GRi4Aa2lsbGVkIHNlc3Npb24gaWQ6ICVkIHN0YXR1czogJWQAa2lsbGVkIGZhaWxlZCBpZDogJWQgZmFpbGVkOiAlZABJbnRlcm5hbCBxdWVyeTogJXMgcmVzdWx0IGluIGVycm9yLiBFcnJvciBudW1iZXI6ICVsZABFcnJvciBjb3B5aW5nIGZyb20gZW1wdHkgc3RyaW5nIABRdWVyeSBleGVjdXRpb24gcmVzdWx0ZWQgaW4gZmFpbHVyZS4gZXJybm86ICVkAFVuYWJsZSB0byBjcmVhdGUgYSBzZXNzaW9uIGZvciBleGVjdXRpbmcgdGhlIHF1ZXJpZXMgb24gdGhlIHNlcnZlcgBUaGUgbWVtYmVyIHdpdGggYWRkcmVzcyAlczoldSBoYXMgdW5leHBlY3RlZGx5IGRpc2FwcGVhcmVkLCBraWxsaW5nIHRoZSBjdXJyZW50IGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGNvbm5lY3Rpb24ATWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyB3aGVuIHRyeWluZyB0byBjb25uZWN0IHRvIGEgZG9ub3IgcmVhY2hlZC4gQWJvcnRpbmcgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkuAEFsbCBkb25vcnMgbGVmdC4gQWJvcnRpbmcgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkuAEVzdGFibGlzaGluZyBncm91cCByZWNvdmVyeSBjb25uZWN0aW9uIHdpdGggYSBwb3NzaWJsZSBkb25vci4gQXR0ZW1wdCAlZC8lZABSZXRyeWluZyBncm91cCByZWNvdmVyeSBjb25uZWN0aW9uIHdpdGggYW5vdGhlciBkb25vci4gQXR0ZW1wdCAlZC8lZABObyB2YWxpZCBkb25vcnMgZXhpc3QgaW4gdGhlIGdyb3VwLCByZXRyeWluZwBFcnJvciB3aGVuIGNvbmZpZ3VyaW5nIHRoZSBhc3luY2hyb25vdXMgcmVjb3ZlcnkgY2hhbm5lbCBjb25uZWN0aW9uIHRvIHRoZSBkb25vci4ARXN0YWJsaXNoaW5nIGNvbm5lY3Rpb24gdG8gYSBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBkb25vciAlcyBhdCAlcyBwb3J0OiAlZC4ARXJyb3Igd2hpbGUgY3JlYXRpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGNoYW5uZWwgd2l0aCBkb25vciAlcyBhdCAlcyBwb3J0OiAlZC4AVGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gY29ubmVjdGluZyB0byB0aGUgZG9ub3Igc2VydmVyLiBQbGVhc2UgY2hlY2sgdGhhdCBncm91cF9yZXBsaWNhdGlvbl9yZWNvdmVyeSBjaGFubmVsIGNyZWRlbnRpYWxzIGFuZCBhbGwgTUVNQkVSX0hPU1QgY29sdW1uIHZhbHVlcyBvZiBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVycyB0YWJsZSBhcmUgY29ycmVjdCBhbmQgRE5TIHJlc29sdmFibGUuAEZvciBkZXRhaWxzIHBsZWFzZSBjaGVjayBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fY29ubmVjdGlvbl9zdGF0dXMgdGFibGUgYW5kIGVycm9yIGxvZyBtZXNzYWdlcyBvZiBSZXBsaWNhIEkvTyBmb3IgY2hhbm5lbCBncm91cF9yZXBsaWNhdGlvbl9yZWNvdmVyeS4ARXJyb3Igd2hpbGUgc3RhcnRpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGluY3JlbWVudGFsIHJlY292ZXJ5IHJlY2VpdmVyL2FwcGxpZXIgdGhyZWFkcwBUZXJtaW5hdGluZyBleGlzdGluZyBncm91cCByZXBsaWNhdGlvbiBkb25vciBjb25uZWN0aW9uIGFuZCBwdXJnaW5nIHRoZSBjb3JyZXNwb25kaW5nIGxvZ3MuAEVycm9yIHdoZW4gc3RvcHBpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGluY3JlbWVudGFsIHJlY292ZXJ5J3MgZG9ub3IgY29ubmVjdGlvbgBFcnJvciB3aGVuIHB1cmdpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5J3MgcmVsYXkgbG9ncwBVbmFibGUgdG8ga2lsbCB0aGUgY3VycmVudCBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBkb25vciBjb25uZWN0aW9uIGFmdGVyIGFuIGFwcGxpZXIgZXJyb3IuIEluY3JlbWVudGFsIHJlY292ZXJ5IHdpbGwgc2h1dGRvd24uAFVuYWJsZSB0byBraWxsIHRoZSBjdXJyZW50IGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGRvbm9yIGNvbm5lY3Rpb24gZHVyaW5nIGZhaWxvdmVyLiBJbmNyZW1lbnRhbCByZWNvdmVyeSB3aWxsIHNodXRkb3duLgBVbmV4cGVjdGVkIGVycm9yIHdoZW4gbm90aWZ5aW5nIGFuIGludGVybmFsIGNvbXBvbmVudCBuYW1lZCAlcyByZWdhcmRpbmcgYSBncm91cCBtZW1iZXJzaGlwIGV2ZW50LgBBbiB1bmRlZmluZWQgZXJyb3Igd2FzIGZvdW5kIHdoaWxlIGJyb2FkY2FzdGluZyBhbiBpbnRlcm5hbCBncm91cCBtZW1iZXJzaGlwIG5vdGlmaWNhdGlvbiEgVGhpcyBpcyBsaWtlbHkgdG8gaGFwcGVuIGlmIHlvdXIgY29tcG9uZW50cyBvciBwbHVnaW5zIGFyZSBub3QgcHJvcGVybHkgbG9hZGVkIG9yIGFyZSBtYWxmdW5jdGlvbmluZyEAQW4gdW5kZWZpbmVkIGVycm9yIHdhcyBmb3VuZCB3aGlsZSBicm9hZGNhc3RpbmcgYW4gaW50ZXJuYWwgZ3JvdXAgbWVtYmVyIHN0YXR1cyBub3RpZmljYXRpb24hIFRoaXMgaXMgbGlrZWx5IHRvIGhhcHBlbiBpZiB5b3VyIGNvbXBvbmVudHMgb3IgcGx1Z2lucyBhcmUgbm90IHByb3Blcmx5IGxvYWRlZCBvciBhcmUgbWFsZnVuY3Rpb25pbmchAE5vIG1lbW9yeSB0byBnZW5lcmF0ZSB3cml0ZSBpZGVudGlmaWNhdGlvbiBoYXNoAEJhc2UgNjQgZW5jb2Rpbmcgb2YgdGhlIHdyaXRlIGlkZW50aWZpY2F0aW9uIGhhc2ggZmFpbGVkAEJpbmxvZyBmb3JtYXQgc2hvdWxkIGJlIFJPVyBmb3IgR3JvdXAgUmVwbGljYXRpb24AYmlubG9nX2NoZWNrc3VtIHNob3VsZCBiZSBOT05FIGZvciBHcm91cCBSZXBsaWNhdGlvbgBBIHRyYW5zYWN0aW9uX3dyaXRlX3NldF9leHRyYWN0aW9uIGFsZ29yaXRobSBzaG91bGQgYmUgc2VsZWN0ZWQgd2hlbiBydW5uaW5nIEdyb3VwIFJlcGxpY2F0aW9uAFRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbCAodHhfaXNvbGF0aW9uKSBpcyBzZXQgdG8gU0VSSUFMSVpBQkxFLCB3aGljaCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEdyb3VwIFJlcGxpY2F0aW9uAFRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyBzdG9wcGluZy4AVHJhbnNhY3Rpb24gY2Fubm90IGJlIGV4ZWN1dGVkIHdoaWxlIEdyb3VwIFJlcGxpY2F0aW9uIGlzIHJlY292ZXJpbmcuIFRyeSBhZ2FpbiB3aGVuIHRoZSBzZXJ2ZXIgaXMgT05MSU5FLgBUcmFuc2FjdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgb24gRVJST1Igc3RhdGUuIENoZWNrIGZvciBlcnJvcnMgYW5kIHJlc3RhcnQgdGhlIHBsdWdpbgBUcmFuc2FjdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgT0ZGTElORS4gQ2hlY2sgZm9yIGVycm9ycyBhbmQgcmVzdGFydCB0aGUgcGx1Z2luAFdlIGNhbiBvbmx5IHVzZSBvbmUgY2FjaGUgdHlwZSBhdCBhIHRpbWUgb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gcmVpbml0IGJpbmxvZyBjYWNoZSBsb2cgZm9yIHJlYWQgb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gY3JlYXRlIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIGV4dHJhY3QgdGhlIHNldCBvZiBpdGVtcyB3cml0dGVuIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIGdhdGhlciB0aGUgc2V0IG9mIGl0ZW1zIHdyaXR0ZW4gZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gb24gc2Vzc2lvbiAldQBFcnJvciBvbiBzZXNzaW9uICV1LiBUcmFuc2FjdGlvbiBvZiBzaXplICVsbHUgZXhjZWVkcyBzcGVjaWZpZWQgbGltaXQgJWx1LiBUbyBpbmNyZWFzZSB0aGUgbGltaXQgcGxlYXNlIGFkanVzdCBncm91cF9yZXBsaWNhdGlvbl90cmFuc2FjdGlvbl9zaXplX2xpbWl0IG9wdGlvbi4ARXJyb3Igd2hpbGUgcmUtaW5pdGlhbGl6aW5nIGFuIGludGVybmFsIGNhY2hlLCBmb3IgcmVhZCBvcGVyYXRpb25zLCBvbiBzZXNzaW9uICV1AEVycm9yIHdoaWxlIGFwcGVuZGluZyBkYXRhIHRvIGFuIGludGVybmFsIGNhY2hlIG9uIHNlc3Npb24gJXUARXJyb3Igd2hpbGUgd3JpdGluZyB0byB0cmFuc2FjdGlvbiBtZXNzYWdlIG9uIHNlc3Npb24gJXUAVW5hYmxlIHRvIHJlZ2lzdGVyIGZvciBnZXR0aW5nIG5vdGlmaWNhdGlvbnMgcmVnYXJkaW5nIHRoZSBvdXRjb21lIG9mIHRoZSB0cmFuc2FjdGlvbiBvbiBzZXNzaW9uICV1AEVycm9yIGJyb2FkY2FzdGluZyB0cmFuc2FjdGlvbiB0byB0aGUgZ3JvdXAgb24gc2Vzc2lvbiAldS4gTWVzc2FnZSBpcyB0b28gYmlnLgBFcnJvciB3aGlsZSBicm9hZGNhc3RpbmcgdGhlIHRyYW5zYWN0aW9uIHRvIHRoZSBncm91cCBvbiBzZXNzaW9uICV1AEVycm9yIHdoaWxlIHdhaXRpbmcgZm9yIGNvbmZsaWN0IGRldGVjdGlvbiBwcm9jZWR1cmUgdG8gZmluaXNoIG9uIHNlc3Npb24gJXUARXJyb3Igd2hpbGUgcmUtaW5pdGlhbGl6aW5nIGFuIGludGVybmFsIGNhY2hlLCBmb3Igd3JpdGUgb3BlcmF0aW9ucywgb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gY3JlYXRlIGdyb3VwIHJlcGxpY2F0aW9uIGNvbW1pdCBjYWNoZSBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byByZWluaXQgZ3JvdXAgcmVwbGljYXRpb24gY29tbWl0IGNhY2hlIGZvciB3cml0ZSBvbiBzZXNzaW9uICV1AEEgcHJldmlvdXMgcmVjb3Zlcnkgc2Vzc2lvbiBpcyBzdGlsbCBydW5uaW5nLiBQbGVhc2Ugc3RvcCB0aGUgZ3JvdXAgcmVwbGljYXRpb24gcGx1Z2luIGFuZCB3YWl0IGZvciBpdCB0byBzdG9wAEZhdGFsIGVycm9yIGR1cmluZyB0aGUgaW5jcmVtZW50YWwgcmVjb3ZlcnkgcHJvY2VzcyBvZiBHcm91cCBSZXBsaWNhdGlvbi4gVGhlIHNlcnZlciB3aWxsIGxlYXZlIHRoZSBncm91cC4ARXJyb3Igc3RvcHBpbmcgYWxsIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHdoaWxlIHNlcnZlciB3YXMgbGVhdmluZyB0aGUgZ3JvdXAuICVzAFVuYWJsZSB0byBldmFsdWF0ZSB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBleGVjdXRpb24gc3RhdHVzLiBHcm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSB3aWxsIHNodXRkb3duIHRvIGF2b2lkIGRhdGEgY29ycnVwdGlvbi4AT25seSBvbmUgc2VydmVyIGFsaXZlLiBEZWNsYXJpbmcgdGhpcyBzZXJ2ZXIgYXMgb25saW5lIHdpdGhpbiB0aGUgcmVwbGljYXRpb24gZ3JvdXAARXJyb3Igd2hlbiBwcm9jZXNzaW5nIGNlcnRpZmljYXRpb24gaW5mb3JtYXRpb24gaW4gdGhlIGluY3JlbWVudGFsIHJlY292ZXJ5IHByb2Nlc3MAVW5hYmxlIHRvIGVuc3VyZSB0aGUgZXhlY3V0aW9uIG9mIGdyb3VwIHRyYW5zYWN0aW9ucyByZWNlaXZlZCBkdXJpbmcgcmVjb3ZlcnkuAEVycm9yIHdoaWxlIHNlbmRpbmcgbWVzc2FnZSBpbiB0aGUgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkgcHJvY2Vzcy4AVW5hYmxlIHRvIHJlYWQgdGhlIHNlcnZlciB2YWx1ZSBmb3IgdGhlIHN1cGVyX3JlYWRfb25seSB2YXJpYWJsZS4AVW5hYmxlIHRvIHJlYWQgdGhlIHNlcnZlciB2YWx1ZXMgZm9yIHRoZSByZWFkX29ubHkgYW5kIHN1cGVyX3JlYWRfb25seSB2YXJpYWJsZXMuAFVuYWJsZSB0byByZXNldCB0aGUgc2VydmVyIHJlYWQgbW9kZSBzZXR0aW5ncy4gVHJ5IHRvIHJlc2V0IHRoZW0gbWFudWFsbHkuAER1ZSB0byBhIHBsdWdpbiBlcnJvciwgc29tZSB0cmFuc2FjdGlvbnMgd2VyZSB1bmFibGUgdG8gYmUgY2VydGlmaWVkIGFuZCB3aWxsIG5vdyByb2xsYmFjay4ARXJyb3Igd2hlbiB0cnlpbmcgdG8gdW5ibG9jayBub24gY2VydGlmaWVkIG9yIGNvbnNpc3RlbnQgdHJhbnNhY3Rpb25zLiBDaGVjayBmb3IgY29uc2lzdGVuY3kgZXJyb3JzIHdoZW4gcmVzdGFydGluZyB0aGUgc2VydmljZQBUaGlzIHNlcnZlciBpcyB3b3JraW5nIGFzIHNlY29uZGFyeSBtZW1iZXIgd2l0aCBwcmltYXJ5IG1lbWJlciBhZGRyZXNzICVzOiV1LgBVbmFibGUgdG8gc3RhcnQgR3JvdXAgUmVwbGljYXRpb24uIFJlcGxpY2F0aW9uIGFwcGxpZXIgaW5mcmFzdHJ1Y3R1cmUgaXMgbm90IGluaXRpYWxpemVkIHNpbmNlIHRoZSBzZXJ2ZXIgd2FzIHN0YXJ0ZWQgd2l0aCBzZXJ2ZXJfaWQ9MC4gUGxlYXNlLCByZXN0YXJ0IHRoZSBzZXJ2ZXIgd2l0aCBzZXJ2ZXJfaWQgbGFyZ2VyIHRoYW4gMC4AZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyBtdXN0IGJlIGVtcHR5IG9uIGdyb3VwIHN0YXJ0LiBDdXJyZW50IHZhbHVlOiAnJXMnAEl0IHdhcyBub3QgcG9zc2libGUgdG8gZ3VhcmFudGVlIHRoZSBpbml0aWFsaXphdGlvbiBvZiBwbHVnaW4gc3RydWN0dXJlcyBvbiBzZXJ2ZXIgc3RhcnQAQ291bGQgbm90IGVuYWJsZSB0aGUgc2VydmVyIHJlYWQgb25seSBtb2RlIGFuZCBndWFyYW50ZWUgYSBzYWZlIHJlY292ZXJ5IGV4ZWN1dGlvbgBFcnJvciBvbiBncm91cCBjb21tdW5pY2F0aW9uIGVuZ2luZSBpbml0aWFsaXphdGlvbgBDYW4ndCBzdGFydCBncm91cCByZXBsaWNhdGlvbiBvbiBzZWNvbmRhcnkgbWVtYmVyIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSB3aGlsZSBhc3luY2hyb25vdXMgcmVwbGljYXRpb24gY2hhbm5lbHMgYXJlIHJ1bm5pbmcuAEVycm9yIG9uIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lIHN0YXJ0AFRpbWVvdXQgb24gd2FpdCBmb3IgdmlldyBhZnRlciBqb2luaW5nIGdyb3VwAEVycm9yIGNhbGxpbmcgZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzAE1lbWJlciBzZXJ2ZXJfdXVpZCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgZ3JvdXAuIFNlcnZlcl91dWlkICVzIG1hdGNoZXMgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSAlcy4ATWVtYmVyIGNvbmZpZ3VyYXRpb246IG1lbWJlcl9pZDogJWx1OyBtZW1iZXJfdXVpZDogIiVzIjsgc2luZ2xlLXByaW1hcnkgbW9kZTogIiVzIjsgZ3JvdXBfcmVwbGljYXRpb25fYXV0b19pbmNyZW1lbnRfaW5jcmVtZW50OiAlbHU7IGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQ6ICIlcyI7AFVuYWJsZSB0byBjb25maXJtIHdoZXRoZXIgdGhlIHNlcnZlciBoYXMgbGVmdCB0aGUgZ3JvdXAgb3Igbm90LiBDaGVjayBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVycyB0byBjaGVjayBncm91cCBtZW1iZXJzaGlwIGluZm9ybWF0aW9uLgBTa2lwcGluZyBsZWF2ZSBvcGVyYXRpb246IGNvbmN1cnJlbnQgYXR0ZW1wdCB0byBsZWF2ZSB0aGUgZ3JvdXAgaXMgb24tZ29pbmcuAFNraXBwaW5nIGxlYXZlIG9wZXJhdGlvbjogbWVtYmVyIGFscmVhZHkgbGVmdCB0aGUgZ3JvdXAuAEdvaW5nIHRvIHdhaXQgZm9yIHZpZXcgbW9kaWZpY2F0aW9uAFdoaWxlIGxlYXZpbmcgdGhlIGdyb3VwIGR1ZSB0byBhIHN0b3AsIHNodXRkb3duIG9yIGZhaWx1cmUgdGhlcmUgd2FzIGEgdGltZW91dCByZWNlaXZpbmcgYSB2aWV3IGNoYW5nZS4gVGhpcyBjYW4gbGVhZCB0byBhIHBvc3NpYmxlIGluY29uc2lzdGVudCBzdGF0ZS4gQ2hlY2sgdGhlIGxvZyBmb3IgbW9yZSBkZXRhaWxzAFJlcXVlc3RpbmcgdG8gbGVhdmUgdGhlIGdyb3VwIGRlc3BpdGUgb2Ygbm90IGJlaW5nIGEgbWVtYmVyAFBsdWdpbiAnZ3JvdXBfcmVwbGljYXRpb24nIGlzIHN0b3BwaW5nLgBQbHVnaW4gJ2dyb3VwX3JlcGxpY2F0aW9uJyBoYXMgYmVlbiBzdG9wcGVkLgBPbiBwbHVnaW4gc2h1dGRvd24gaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBlbmFibGUgdGhlIHNlcnZlciByZWFkIG9ubHkgbW9kZS4gTG9jYWwgdHJhbnNhY3Rpb25zIHdpbGwgYmUgYWNjZXB0ZWQgYW5kIGNvbW1pdHRlZC4AT24gc2h1dGRvd24gdGhlcmUgd2FzIGEgdGltZW91dCBvbiB0aGUgR3JvdXAgUmVwbGljYXRpb24gcmVjb3ZlcnkgbW9kdWxlIHRlcm1pbmF0aW9uLiBDaGVjayB0aGUgbG9nIGZvciBtb3JlIGRldGFpbHMAT24gc2h1dGRvd24gdGhlcmUgd2FzIGEgdGltZW91dCBvbiB0aGUgR3JvdXAgUmVwbGljYXRpb24gYXBwbGllciB0ZXJtaW5hdGlvbi4AVW5leHBlY3RlZCBmYWlsdXJlIHdoaWxlIHNodXR0aW5nIGRvd24gcmVnaXN0cnkgbW9kdWxlIQBGYWlsdXJlIGR1cmluZyBHcm91cCBSZXBsaWNhdGlvbiBoYW5kbGVyIGluaXRpYWxpemF0aW9uAEZhaWx1cmUgd2hlbiByZWdpc3RlcmluZyB0aGUgc2VydmVyIHN0YXRlIG9ic2VydmVycwBGYWlsdXJlIHdoZW4gcmVnaXN0ZXJpbmcgdGhlIHRyYW5zYWN0aW9ucyBzdGF0ZSBvYnNlcnZlcnMARmFpbHVyZSB3aGVuIHJlZ2lzdGVyaW5nIHRoZSBiaW5sb2cgc3RhdGUgb2JzZXJ2ZXJzAFVuYWJsZSB0byBzdGFydCBHcm91cCBSZXBsaWNhdGlvbiBvbiBib290AEZhaWx1cmUgd2hlbiBzdG9wcGluZyBHcm91cCBSZXBsaWNhdGlvbiBvbiBwbHVnaW4gdW5pbnN0YWxsAEZhaWx1cmUgd2hlbiB1bnJlZ2lzdGVyaW5nIHRoZSBzZXJ2ZXIgc3RhdGUgb2JzZXJ2ZXJzAEZhaWx1cmUgd2hlbiB1bnJlZ2lzdGVyaW5nIHRoZSB0cmFuc2FjdGlvbnMgc3RhdGUgb2JzZXJ2ZXJzAEZhaWx1cmUgd2hlbiB1bnJlZ2lzdGVyaW5nIHRoZSBiaW5sb2cgc3RhdGUgb2JzZXJ2ZXJzAEFsbCBHcm91cCBSZXBsaWNhdGlvbiBzZXJ2ZXIgb2JzZXJ2ZXJzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgdW5yZWdpc3RlcmVkAFVuYWJsZSB0byBwYXJzZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS4AVW5hYmxlIHRvIHBhcnNlIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lLgBDYW5ub3Qgc3RhcnQgdGhlIEdyb3VwIFJlcGxpY2F0aW9uIGFwcGxpZXIgYXMgYSBwcmV2aW91cyBzaHV0ZG93biBpcyBzdGlsbCBydW5uaW5nOiBUaGUgdGhyZWFkIHdpbGwgc3RvcCBvbmNlIGl0cyB0YXNrIGlzIGNvbXBsZXRlLgBVbmFibGUgdG8gaW5pdGlhbGl6ZSB0aGUgR3JvdXAgUmVwbGljYXRpb24gYXBwbGllciBtb2R1bGUuAEdyb3VwIFJlcGxpY2F0aW9uIGFwcGxpZXIgbW9kdWxlIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCEAR3JvdXAgY29tbXVuaWNhdGlvbiBTU0wgY29uZmlndXJhdGlvbjogZ3JvdXBfcmVwbGljYXRpb25fc3NsX21vZGU6ICIlcyI7IHNlcnZlcl9rZXlfZmlsZTogIiVzIjsgc2VydmVyX2NlcnRfZmlsZTogIiVzIjsgY2xpZW50X2tleV9maWxlOiAiJXMiOyBjbGllbnRfY2VydF9maWxlOiAiJXMiOyBjYV9maWxlOiAiJXMiOyBjYV9wYXRoOiAiJXMiOyBjaXBoZXI6ICIlcyI7IHRsc192ZXJzaW9uOiAiJXMiOyB0bHNfY2lwaGVyc3VpdGVzOiAiJXMiOyBjcmxfZmlsZTogIiVzIjsgY3JsX3BhdGg6ICIlcyI7IHNzbF9maXBzX21vZGU6ICIlcyIATXlTUUwgc2VydmVyIGRvZXMgbm90IGhhdmUgU1NMIHN1cHBvcnQgYW5kIGdyb3VwX3JlcGxpY2F0aW9uX3NzbF9tb2RlIGlzICIlcyIsIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIHdpbGwgYWJvcnQAR3JvdXAgY29tbXVuaWNhdGlvbiBTU0wgY29uZmlndXJhdGlvbjogZ3JvdXBfcmVwbGljYXRpb25fc3NsX21vZGU6ICIlcyIAVW5hYmxlIHRvIGluaXRpYWxpemUgdGhlIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lAEJpbmxvZyBtdXN0IGJlIGVuYWJsZWQgZm9yIEdyb3VwIFJlcGxpY2F0aW9uAEd0aWQgbW9kZSBzaG91bGQgYmUgT04gZm9yIEdyb3VwIFJlcGxpY2F0aW9uAExPR19SRVBMSUNBX1VQREFURVMgc2hvdWxkIGJlIE9OIGZvciBHcm91cCBSZXBsaWNhdGlvbgBFeHRyYWN0aW9uIG9mIHRyYW5zYWN0aW9uIHdyaXRlIHNldHMgcmVxdWlyZXMgYW4gaGFzaCBhbGdvcml0aG0gY29uZmlndXJhdGlvbi4gUGxlYXNlLCBkb3VibGUgY2hlY2sgdGhhdCB0aGUgcGFyYW1ldGVyIHRyYW5zYWN0aW9uLXdyaXRlLXNldC1leHRyYWN0aW9uIGlzIHNldCB0byBhIHZhbGlkIGFsZ29yaXRobS4AQXBwbGllciBtZXRhZGF0YSByZXBvc2l0b3J5IG11c3QgYmUgc2V0IHRvIFRBQkxFAENvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBtdXN0IGJlIHNldCB0byBUQUJMRS4ASW4gb3JkZXIgdG8gdXNlIHBhcmFsbGVsIGFwcGxpZXIgb24gR3JvdXAgUmVwbGljYXRpb24sIHBhcmFtZXRlciByZXBsaWNhLXBhcmFsbGVsLXR5cGUgbXVzdCBiZSBzZXQgdG8gJ0xPR0lDQUxfQ0xPQ0snLgBHcm91cCBSZXBsaWNhdGlvbiByZXF1aXJlcyByZXBsaWNhLXByZXNlcnZlLWNvbW1pdC1vcmRlciB0byBiZSBzZXQgdG8gT04gd2hlbiB1c2luZyBtb3JlIHRoYW4gMSBhcHBsaWVyIHRocmVhZHMuAEl0IGlzIG5vdCBhbGxvd2VkIHRvIHJ1biBzaW5nbGUgcHJpbWFyeSBtb2RlIHdpdGggJ2dyb3VwX3JlcGxpY2F0aW9uX2VuZm9yY2VfdXBkYXRlX2V2ZXJ5d2hlcmVfY2hlY2tzJyBlbmFibGVkLgBlcnJvcl9tZXNzYWdlOiAlcwBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSBvcHRpb24gaXMgbWFuZGF0b3J5AFRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICclcycgaXMgbm90IGEgdmFsaWQgVVVJRCwgaXRzIGxlbmd0aCBpcyB0b28gYmlnAFRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICclcycgaXMgbm90IGEgdmFsaWQgVVVJRABncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWluX3F1b3RhIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWF4X3F1b3RhAGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9taW5fcmVjb3ZlcnlfcXVvdGEgY2Fubm90IGJlIGxhcmdlciB0aGFuIGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9tYXhfcXVvdGEAZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21heF9xdW90YSBjYW5ub3QgYmUgc21hbGxlciB0aGFuIGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9taW5fcXVvdGEgb3IgZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21pbl9yZWNvdmVyeV9xdW90YQBUaGUgZ2l2ZW4gdmFsdWUgZm9yIHJlY292ZXJ5IHNzbCBvcHRpb24gJ2dyb3VwX3JlcGxpY2F0aW9uXyVzJyBpcyBpbnZhbGlkIGFzIGl0cyBsZW5ndGggaXMgYmV5b25kIHRoZSBsaW1pdABUaGVyZSBpcyBvbmUgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyBvcGVyYXRpb24gYWxyZWFkeSBvbmdvaW5nAGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgY2FuIG9ubHkgYmUgdXBkYXRlZCB3aGVuIEdyb3VwIFJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgYW5kIGEgbWFqb3JpdHkgb2YgdGhlIG1lbWJlcnMgYXJlIHVucmVhY2hhYmxlAEluaXRpYWxpemVkIGdyb3VwIGNvbW11bmljYXRpb24gd2l0aCBjb25maWd1cmF0aW9uOiBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lOiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9sb2NhbF9hZGRyZXNzOiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9zZWVkczogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fYm9vdHN0cmFwX2dyb3VwOiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9wb2xsX3NwaW5fbG9vcHM6ICVsdTsgZ3JvdXBfcmVwbGljYXRpb25fY29tcHJlc3Npb25fdGhyZXNob2xkOiAlbHU7IGdyb3VwX3JlcGxpY2F0aW9uX2lwX2FsbG93bGlzdDogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fY29tbXVuaWNhdGlvbl9kZWJ1Z19vcHRpb25zOiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9tZW1iZXJfZXhwZWxfdGltZW91dDogJyVsdSc7IGdyb3VwX3JlcGxpY2F0aW9uX2NvbW11bmljYXRpb25fbWF4X21lc3NhZ2Vfc2l6ZTogJWx1OyBncm91cF9yZXBsaWNhdGlvbl9tZXNzYWdlX2NhY2hlX3NpemU6ICclbHV1OyBncm91cF9yZXBsaWNhdGlvbl9jb21tdW5pY2F0aW9uX3N0YWNrOiAnJWx1JwBVbmtub3duIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgcGlwZWxpbmUgcmVxdWVzdGVkAFVuYWJsZSB0byBib290c3RyYXAgZ3JvdXAgcmVwbGljYXRpb24gZXZlbnQgaGFuZGxpbmcgaW5mcmFzdHJ1Y3R1cmUuIFVua25vd24gaGFuZGxlciB0eXBlOiAlZABPbmUgb2YgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgaGFuZGxlcnMgaXMgbnVsbCBkdWUgdG8gYW4gaW5pdGlhbGl6YXRpb24gZXJyb3IAQSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGhhbmRsZXIsIG1hcmtlZCBhcyB1bmlxdWUsIGlzIGFscmVhZHkgaW4gdXNlLgBBIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgaGFuZGxlciByb2xlLCB0aGF0IHdhcyBtYXJrZWQgYXMgdW5pcXVlLCBpcyBhbHJlYWR5IGluIHVzZS4ARXJyb3Igb24gZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBoYW5kbGVyIGluaXRpYWxpemF0aW9uAEVycm9yIHdoZW4gaW5pdGlhbGl6aW5nIGEgc2Vzc2lvbiB0aHJlYWQgZm9yIGludGVybmFsIHNlcnZlciBjb25uZWN0aW9uLgBFcnJvciBydW5uaW5nIGludGVybmFsIFNRTCBxdWVyeTogJXMuIFRoZSBpbnRlcm5hbCBzZXJ2ZXIgY29tbXVuaWNhdGlvbiBzZXNzaW9uIGlzIG5vdCBpbml0aWFsaXplZABFcnJvciBydW5uaW5nIGludGVybmFsIFNRTCBxdWVyeTogJXMuIFRoZSBpbnRlcm5hbCBzZXJ2ZXIgc2Vzc2lvbiB3YXMga2lsbGVkIG9yIHNlcnZlciBpcyBzaHV0dGluZyBkb3duLgBFcnJvciBydW5uaW5nIGludGVybmFsIFNRTCBxdWVyeTogJXMuIEdvdCBpbnRlcm5hbCBTUUwgZXJyb3I6ICVzKCVkKQBFcnJvciBydW5uaW5nIGludGVybmFsIFNRTCBxdWVyeTogJXMuIEludGVybmFsIGZhaWx1cmUuAEVycm9yLCBtYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIGV4Y2VlZGVkIHdoZW4gd2FpdGluZyBmb3IgdGhlIGludGVybmFsIHNlcnZlciBzZXNzaW9uIHN0YXRlIHRvIGJlIG9wZXJhdGluZwBFcnJvciB3aGVuIHRyeWluZyB0byBmZXRjaCBzZWN1cml0eSBjb250ZXh0IHdoZW4gY29udGFjdGluZyB0aGUgc2VydmVyIGZvciBpbnRlcm5hbCBwbHVnaW4gcmVxdWVzdHMuAFRoZXJlIHdhcyBhbiBlcnJvciB3aGVuIHRyeWluZyB0byBhY2Nlc3MgdGhlIHNlcnZlciB3aXRoIHVzZXI6ICVzLiBNYWtlIHN1cmUgdGhlIHVzZXIgaXMgcHJlc2VudCBpbiB0aGUgc2VydmVyIGFuZCB0aGF0IHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZSB3YXMgcnVuIGNvcnJlY3RseS4ARmFpbGVkIHRvIGVzdGFibGlzaCBhbiBpbnRlcm5hbCBzZXJ2ZXIgY29ubmVjdGlvbiB0byBleGVjdXRlIHBsdWdpbiBvcGVyYXRpb25zIHNpbmNlIHRoZSBzZXJ2ZXIgZG9lcyBub3QgaGF2ZSBhdmFpbGFibGUgY29ubmVjdGlvbnMsIHBsZWFzZSBpbmNyZWFzZSBAQEdMT0JBTC5NQVhfQ09OTkVDVElPTlMuIFNlcnZlciBlcnJvcjogJWkuAEZhaWxlZCB0byBlc3RhYmxpc2ggYW4gaW50ZXJuYWwgc2VydmVyIGNvbm5lY3Rpb24gdG8gZXhlY3V0ZSBwbHVnaW4gb3BlcmF0aW9ucy4gU2VydmVyIGVycm9yOiAlaS4gU2VydmVyIGVycm9yIG1lc3NhZ2U6ICVzAFRoaXMgbWVtYmVyIGNvdWxkIG5vdCByZWFjaCBhIG1ham9yaXR5IG9mIHRoZSBtZW1iZXJzIGZvciBtb3JlIHRoYW4gJWxkIHNlY29uZHMuIFRoZSBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwIGFzIGluc3RydWN0ZWQgYnkgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3VucmVhY2hhYmxlX21ham9yaXR5X3RpbWVvdXQgb3B0aW9uLgBUaGUgc2VydmVyIHdhcyBhdXRvbWF0aWNhbGx5IHNldCBpbnRvIHJlYWQgb25seSBtb2RlIGFmdGVyIGFuIGVycm9yIHdhcyBkZXRlY3RlZC4AVW5hYmxlIHRvIGxvZyBub3RpZmljYXRpb24gdG8gdGFibGUgKGVycm5vOiAlbHUpIChyZXM6ICVkKSEgTWVzc2FnZTogJXMARmFpbHVyZSBpbiBncm91cCBjb21tdW5pY2F0aW9uIGVuZ2luZSAnJXMnIGluaXRpYWxpemF0aW9uAFVuYWJsZSB0byBzZXQgdGhlIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lIGxvZ2dlcgBDdXJyZW50IGRlYnVnIG9wdGlvbnMgYXJlOiAnJXMnLgBTb21lIGRlYnVnIG9wdGlvbnMgaW4gJyVzJyBhcmUgbm90IHZhbGlkLgBFcnJvciBjYWxsaW5nIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcyB3aGlsZSB0cnlpbmcgdG8gbGVhdmUgdGhlIGdyb3VwAE1lbWJlciBpcyBub3QgT05MSU5FLCBpdCBpcyBub3QgcG9zc2libGUgdG8gZm9yY2UgYSBuZXcgZ3JvdXAgbWVtYmVyc2hpcABFcnJvciBjYWxsaW5nIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBFcnJvciBzZXR0aW5nIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgdmFsdWUgJyVzJyBvbiBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgdmFsdWUgJyVzJyB3YXMgc2V0IGluIHRoZSBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMAVGltZW91dCBvbiB3YWl0IGZvciB2aWV3IGFmdGVyIHNldHRpbmcgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB2YWx1ZSAnJXMnIGludG8gZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzAEJyb2FkY2FzdCBvZiBjb21taXR0ZWQgdHJhbnNhY3Rpb25zIG1lc3NhZ2UgZmFpbGVkLiBNZXNzYWdlIGlzIHRvbyBiaWcuAEVycm9yIHdoaWxlIHNlbmRpbmcgc3RhdHMgbWVzc2FnZQBGbG93IGNvbnRyb2wgLSB1cGRhdGUgbWVtYmVyIHN0YXRzOiAlcyBzdGF0cyBjZXJ0aWZpZXJfcXVldWUgJWQsIGFwcGxpZXJfcXVldWUgJWQgY2VydGlmaWVkICVsZCAoJWxkKSwgYXBwbGllZCAlbGQgKCVsZCksIGxvY2FsICVsZCAoJWxkKSwgcXVvdGEgJWxkICglbGQpIG1vZGU9JWQARmxvdyBjb250cm9sOiB0aHJvdHRsaW5nIHRvICVsZCBjb21taXRzIHBlciAlbGQgc2VjLCB3aXRoICVkIHdyaXRpbmcgYW5kICVkIG5vbi1yZWNvdmVyaW5nIG1lbWJlcnMsIG1pbiBjYXBhY2l0eSAlbGxkLCBsaW0gdGhyb3R0bGUgJWxsZABVbmFibGUgdG8gY29udmVydCBhIHBhY2tldCBpbnRvIGFuIGV2ZW50IG9uIHRoZSBhcHBsaWVyLiBFcnJvcjogJXMARmFpbGVkIHRvIGNyZWF0ZSBncm91cCByZXBsaWNhdGlvbiBwaXBlbGluZSBjYWNoZS4ARmFpbGVkIHRvIHJlaW5pdCBncm91cCByZXBsaWNhdGlvbiBwaXBlbGluZSBjYWNoZSBmb3Igd3JpdGUuAFVuYWJsZSB0byBjb252ZXJ0IHRoZSBldmVudCBpbnRvIGEgcGFja2V0IG9uIHRoZSBhcHBsaWVyLiBFcnJvcjogJXMARmFpbGVkIHRvIGZsdXNoIGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGNhY2hlLgBGYWlsZWQgdG8gcmVpbml0IGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGNhY2hlIGZvciByZWFkLgBFcnJvciBzdG9wcGluZyBhbGwgcmVwbGljYXRpb24gY2hhbm5lbHMgd2hpbGUgc2VydmVyIHdhcyBsZWF2aW5nIHRoZSBncm91cC4gR290IGVycm9yOiAlZC4gUGxlYXNlIGNoZWNrIHRoZSBlcnJvciBsb2cgZm9yIG1vcmUgZGV0YWlscy4AJXMAVGhlIHJlcGxpY2EgSU8gdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyBpcyB1bmJsb2NrZWQgYXMgdGhlIG1lbWJlciBpcyBkZWNsYXJlZCBPTkxJTkUgbm93LgBUaGUgcmVwbGljYSBJTyB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIHdpbGwgZXJyb3Igb3V0IGFzIHRoZSBtZW1iZXIgZmFpbGVkIHRvIGNvbWUgT05MSU5FLgBUaGUgcmVwbGljYSBhcHBsaWVyIHRocmVhZCBvZiBjaGFubmVsICclcycgaXMgdW5ibG9ja2VkIGFzIHRoZSBtZW1iZXIgaXMgZGVjbGFyZWQgT05MSU5FIG5vdy4AVGhlIHJlcGxpY2EgYXBwbGllciB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIHdpbGwgZXJyb3Igb3V0IGFzIHRoZSBtZW1iZXIgZmFpbGVkIHRvIGNvbWUgT05MSU5FLgBMREFQIGF1dGhlbnRpY2F0aW9uIGluaXRpYWxpemU6IGZhaWxlZCB0byBjcmVhdGUvIGdldCBjb25uZWN0aW9uIGZyb20gdGhlIHBvb2wuIABMREFQIGF1dGhlbnRpY2F0aW9uIGRlX2luaXRpYWxpemUgRmFpbGVkAFNraXBwaW5nIGdyb3VwIHNlYXJjaCwgTm8gZ3JvdXAgYXR0cmlidXRlIG1lbnRpb25lZABQb29sIG1heCBzaXplIGlzIDAsIGNvbm5lY3Rpb24gcG9vbCBpcyBkaXNhYmxlZABDb25uZWN0aW9uIHBvb2wgaW5pdGlhbGl6YXRpb24sIGZhaWxlZCB0byBjcmVhdGUgTERBUCBvYmplY3QgY3JlYXRvcgBDb25uZWN0aW9uIHBvb2wgaW5pdGlhbGl6YXRpb24sIGZhaWxlZCB0byBjcmVhdGUgTERBUCBvYmplY3QATERBUCBUTFMgY29uZmlndXJhdGlvbgBMREFQIFRMUyBjb25uZWN0aW9uAExEQVAgcG9vbCBpcyBub3QgY3JlYXRlZC4ATERBUCBwb29sIGlzIGluaXRpYWxpemluZwBMREFQIHBvb2wgaXMgZGUtaW5pdGlhbGl6aW5nAFBvb2wgbWF4IHNpemUgb2xkIGFuZCBuZXcgdmFsdWVzIGFyZSAwAExEQVAgcG9vbCBpcyByZS1pbml0aWFsaXppbmcAUGx1Zy1pbiBoYXMgZmFpbGVkIHRvIHdyaXRlIHRoZSBwYWNrZXQuAFNldHRpbmcgTERBUCB1c2VyIG5hbWUgYXMgOiAlcwBVc2VyIGF1dGhlbnRpY2F0aW9uIGRhdGE6ICVzIHNpemU6ICVsdQBVc2VyIGlzIGF1dGhlbnRpY2F0ZWQgYXM6ICVzIGV4dGVybmFsIHVzZXI6ICVzAEdyb3VwIHNlYXJjaCBpbmZvcm1hdGlvbiBiYXNlIEROOiAlcyBzY29wZTogJWQgZmlsdGVyOiAlcyBhdHRyaWJ1dGU6ICVzAFNwZWNpYWwgaGFuZGxpbmcgZm9yIGdyb3VwIHNlYXJjaCwge0dBfSBmb3VuZABHcm91cCBzZWFyY2ggc3BlY2lhbCBoYW5kbGluZywgZ3JvdXAgZnVsbCBETiBmb3VuZC4gAFVzZXIgJXMgaXMgbm90IG1lbWJlciBvZiBhbnkgZ3JvdXAuAFVzZXIgJXMgaXMgbWVtYmVyIG9mIG1vcmUgdGhhbiBvbmUgZ3JvdXAARm9yIHVzZXIgJXMgaGFzIG11bHRpcGxlIHVzZXIgZ3JvdXAgbmFtZXMuIFBsZWFzZSBjaGVjayBpZiBncm91cCBhdHRyaWJ1dGUgbmFtZSBpcyBjb3JyZWN0AFNlYXJjaGVkIGdyb3VwIG5hbWU6ICVzAExEQVAgYXV0aGVudGljYXRpb24gb2JqZWN0IGNyZWF0aW9uIHRpbWVfc3RhbXA6ICVzIGRuOiAlcwBDZXJ0aWZpY2F0ZSBuYW1lOiAlcwBGYWlsZWQgdG8gcG9vbCBkZS1pbml0aWFsaXplZDogcG9vbCBpcyBhbHJlYWR5IHJlY29uc3RydWN0aW5nAFBvb2wgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiBwb29sIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQAUG9vbCBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IHBvb2wgaXMgaW5pdGlhbGl6aW5nAFBvb2wgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiBwb29sIGlzIGRlLWluaXRpYWxpemluZwBGYWlsZWQgdG8gcG9vbCBkZWluaXRpYWxpemVkOiBwb29sIGlzIGFscmVhZHkgcmVjb25zdHJ1Y3RpbmcARmFpbGVkIHRvIHBvb2wgZGVpbml0aWFsaXplZCA6IHBvb2wgaXMgbm90IHJlYWR5AExkYXBfY29ubmVjdGlvbl9wb29sOjpnZXQ6IEZhaWxlZCB0byByZXR1cm4gY29ubmVjdGlvbiBhcyBwbHVnLWluIGlzIG5vdCByZWFkeS9pbml0aWFsaXppbmcvZGUtaW5pdGlhbGl6aW5nAENvbm5lY3Rpb24gcG9vbCBoYXMgZmFpbGVkIHRvIGluaXRpYWxpemVkAExkYXBfY29ubmV0aW9uX3Bvb2w6OmdldCBMREFQIG1heGltdW0gY29ubmVjdGlvbiBhbGxvd2VkIHNpemUgaXMgcmVhY2hlZC4gSW5jcmVhc2UgdGhlIG1heGltdW0gbGltaXQuAFNldCBtYXggcG9vbCBzaXplIGZhaWxlZC4AUGx1Zy1pbiBoYXMgZmFpbGVkIHRvIHJlYWQgdGhlIHBhY2tldCBmcm9tIGNsaWVudABMZGFwX2F1dGhlbnRpY2F0aW9uOjppbml0aWFsaXplOiBjcmVhdGluZyBuZXcgTERBUCBjb25uZWN0aW9uLiAATGRhcF9hdXRoZW50aWNhdGlvbjo6aW5pdGlhbGl6ZTogZ2V0dGluZyBjb25uZWN0aW9uIGZyb20gcG9vbC4gAExkYXBfYXV0aGVudGljYXRpb246OmRlX2luaXRpYWxpemUgcHV0dGluZyBiYWNrIGNvbm5lY3Rpb24gaW4gdGhlIHBvb2wATGRhcF9hdXRoZW50aWNhdGlvbjo6c2VhcmNoX3VzZXJfZ3JvdXAgbm8gZ3JvdXAgYXR0cmlidXRlIGZvdW5kAExkYXBfY29ubmV0aW9uX3Bvb2w6OnB1dCBsZGFwIGluZm8gbnVsbABMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6cHV0IGNvbm5lY3Rpb24gaXMgZnJlZWluZy4gAExkYXBfY29ubmVjdGlvbl9wb29sOjpwdXQgY29ubmVjdGlvbiBpbiBwdXNoZWQgaW4gdGhlIHBvb2wATGRhcF9jb25uZWN0aW9uX2NyZWF0b3I6OkxkYXBfY29ubmVjdGlvbl9jcmVhdG9yAHN0YXJ0aW5nIFRMUwBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6Z2V0OiAobGRhcF9pbmZvID09IE5VTEwpfHwgKCpsZGFwX2luZm8pAExkYXBfY29ubmVjdGlvbl9wb29sOjpkZWluaXQ6IGRlbGV0aW5nIGNvbm5lY3Rpb24ga2V5ICVzACBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6Z2V0IHBvb2xlZCBjb25uZWN0aW9uIGtleTogJXMATGRhcF9jb25uZWN0aW9uX3Bvb2w6OmdldCBjcmVhdGUgY29ubmVjdGlvbiBrZXk6ICVzAExEQVAgY29tbXVuaWNhdGlvbiBob3N0ICVzIHBvcnQgJXUAU2VuZGluZyBhdXRoZW50aWNhdGlvbiBtZXRob2QgdG8gY2xpZW50IDogJXMAU0FTTCByZXF1ZXN0IHJlY2VpdmVkIGZyb20gbXlzcWwgY2xpZW50OiAlcwBMZGFwX3Nhc2xfYXV0aGVudGljYXRpb246OnByb2Nlc3Nfc2FzbCByYzogJXMATGRhcF9zYXNsX2F1dGhlbnRpY2F0aW9uOjpwcm9jZXNzX3Nhc2wgc2FzbCBiaW5kIHN1Y2NlZWQuIGRuOiAlcyBtZXRob2Q6ICVzIHNlcnZlciBjcmVkZW50aWFsOiAlcwBMREFQIGF1dGhlbnRpY2F0aW9uIHN0YXJ0ZWQgZm9yIHVzZXIgbmFtZTogJXMAJXMATERBUCBhdXRoZW50aWNhdGlvbiBpbml0aWFsaXplIGlzIGZhaWxlZCB3aXRoOiAlcwBMREFQIGF1dGhlbnRpY2F0aW9uIGZhaWxlZCBvciBncm91cCByZXRyaWV2YWwgZmFpbGVkOiAlcwBTZWFyY2ggdXNlciBncm91cCBoYXMgZmFpbGVkOiAlcwBMREFQIHVzZXIgYmluZCBoYXMgZmFpbGVkOiAlcwBDb25uZWN0aW9uIHBvb2wgZ2V0OiBGYWlsZWQgdG8gY3JlYXRlIExEQVAgY29ubmVjdGlvbi4gJXMARmFpbGVkIHRvIGNyZWF0ZSBuZXcgTERBUCBjb25uZWN0aW9uOiAgJXMARmFpbGVkIHRvIGVzdGFibGlzaCBUTFMgY29ubmVjdGlvbjogICVzAEZhaWxlZCB0byBzZWFyY2ggdXNlciBmdWxsIGRuOiAlcwBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6cmVpbml0AFRoZSBwYXRoICclcycsIGZyb20gdGhlIE5PVElGWV9TT0NLRVQgZW52aXJvbm1lbnQgdmFyaWFibGUsIGlzIHRvbyBsb25nLiBBdCAldSBieXRlcyBpdCBleGNlZWRzIHRoZSBsaW1pdCBvZiAldSBieXRlcyBmb3IgYW4gQUZfVU5JWCBzb2NrZXQuAEZhaWxlZCB0byBjb25uZWN0IHRvIHN5c3RlbWQgbm90aWZpY2F0aW9uIHNvY2tldCBuYW1lZCAlcy4gRXJyb3I6ICclcycARmFpbGVkIHRvIHdyaXRlICclcycgdG8gc3lzdGVtZCBub3RpZmljYXRpb24uIEVycm9yOiAnJXMnAENhbm5vdCByZXBsaWNhdGUgdG8gc2VydmVyIHdpdGggc2VydmVyX3V1aWQ9JyUuMzZzJyBiZWNhdXNlIHRoZSBwcmVzZW50IHNlcnZlciBoYXMgcHVyZ2VkIHJlcXVpcmVkIGJpbmFyeSBsb2dzLiBUaGUgY29ubmVjdGluZyBzZXJ2ZXIgbmVlZHMgdG8gcmVwbGljYXRlIHRoZSBtaXNzaW5nIHRyYW5zYWN0aW9ucyBmcm9tIGVsc2V3aGVyZSwgb3IgYmUgcmVwbGFjZWQgYnkgYSBuZXcgc2VydmVyIGNyZWF0ZWQgZnJvbSBhIG1vcmUgcmVjZW50IGJhY2t1cC4gVG8gcHJldmVudCB0aGlzIGVycm9yIGluIHRoZSBmdXR1cmUsIGNvbnNpZGVyIGluY3JlYXNpbmcgdGhlIGJpbmFyeSBsb2cgZXhwaXJhdGlvbiBwZXJpb2Qgb24gdGhlIHByZXNlbnQgc2VydmVyLiAlcy4ASW5zZWN1cmUgY29uZmlndXJhdGlvbiBmb3IgLS1waWQtZmlsZTogTG9jYXRpb24gJyVzJyBpbiB0aGUgcGF0aCBpcyBhY2Nlc3NpYmxlIHRvIGFsbCBPUyB1c2Vycy4gQ29uc2lkZXIgY2hvb3NpbmcgYSBkaWZmZXJlbnQgZGlyZWN0b3J5LgBDYW4ndCBzdGFydCBzZXJ2ZXI6IGNhbid0IGNoZWNrIFBJRCBmaWxlcGF0aDogJXMAdmFsaWRhdGVfcGFzc3dvcmQgc3RhdHVzIHZhcmlhYmxlcyByZWdpc3RyYXRpb24gZmFpbGVkLgB2YWxpZGF0ZV9wYXNzd29yZCBzdGF0dXMgdmFyaWFibGVzIHVucmVnaXN0cmF0aW9uIGZhaWxlZC4ARGljdGlvbmFyeSBmaWxlIG9wZW4gZmFpbGVkAGdpdmVuIHBhc3N3b3JkIHN0cmluZyBjb3VsZCBiZSBudWxsAGZhaWxlZCB0byBjb252ZXJ0IHRoZSBwYXNzd29yZCBzdHJpbmcgdG8gbG93ZXIgY2FzZQBmYWlsZWQgdG8gY29udmVydCB0aGUgcGFzc3dvcmQgc3RyaW5nIGludG8gYSBidWZmZXIAbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIGZvciBzdHJpbmcgaGFuZGxlcgBTaW5jZSB0aGUgdmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5IGlzIG1lbnRpb25lZCBhcyBTdHJvbmcsIGRpY3Rpb25hcnkgZmlsZSBtdXN0IGJlIHNwZWNpZmllZABjb252ZXJ0X3RvX2J1ZmZlciBzZXJ2aWNlIGZhaWxlZAAlcyB2YXJpYWJsZSByZWdpc3RyYXRpb24gZmFpbGVkLgAlcyB2YXJpYWJsZSB1bnJlZ2lzdHJhdGlvbiBmYWlsZWQuAFBsZWFzZSBzcGVjaWZ5IG9wdGlvbnMgc3BlY2lmaWMgdG8ga2V5cmluZyBtaWdyYXRpb24uIEFueSBhZGRpdGlvbmFsIG9wdGlvbnMgY2FuIGJlIGlnbm9yZWQuIE5PVEU6IEFsdGhvdWdoIHNvbWUgb3B0aW9ucyBhcmUgdmFsaWQsIG1pZ3JhdGlvbiB0b29sIGNhbiBzdGlsbCByZXBvcnQgZXJyb3IgZXhhbXBsZTogcGx1Z2luIHZhcmlhYmxlcyBmb3Igd2hpY2ggcGx1Z2luIGlzIG5vdCBsb2FkZWQgeWV0LgBJbnZhbGlkIGRlZmF1bHQgY29sbGF0aW9uICVzOiB1dGY4bWI0XzA5MDBfYWlfY2kgb3IgdXRmOG1iNF9nZW5lcmFsX2NpIGV4cGVjdGVkACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEZhaWxlZCB0byBzZXQgTlVNQSBtZW1vcnkgcG9saWN5IG9mIGJ1ZmZlciBwb29sIHBhZ2UgZnJhbWVzIHdpdGggbWJpbmQoJXAsJXp1LCVzLC4uLiwuLi4sJXMpIGZhaWxlZCB3aXRoICVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFBhZ2Ugc3RpbGwgZml4ZWQgb3IgZGlydHkgYXQgc2h1dGRvd24uICVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFdhaXRlZCBmb3IgJXUgc2VjcyBmb3IgaGFzaCBpbmRleCByZWZfY291bnQgKCV6dSkgdG8gZHJvcCB0byAwLiBpbmRleDogIiVzIiB0YWJsZTogIiVzIgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBUYWJsZSBmbGFncyBhcmUgMHglbHggaW4gdGhlIGRhdGEgZGljdGlvbmFyeSBidXQgdGhlIGZsYWdzIGluIGZpbGUgJXMgIGFyZSAweCVsbHghAENhbid0IHJlYWQgZW5jcnlwdGlvbiBrZXkgZnJvbSBmaWxlICVzIQBDYW5ub3QgY2xvc2UgZmlsZSAlcywgYmVjYXVzZSBuX3BlbmRpbmdfZmx1c2hlcyAlenUAQ2Fubm90IGNsb3NlIGZpbGUgJXMsIGJlY2F1c2UgbW9kaWZpY2F0aW9uIGNvdW50ICVsbGQgIT0gZmx1c2ggY291bnQgJWxsZABDYW5ub3QgY2xvc2UgZmlsZSAlcywgYmVjYXVzZSBpdCBpcyBpbiB1c2UAT3BlbiBmaWxlIGxpc3QgbGVuIGluIHNoYXJkICV6dSBpcyAlbGx1AFRhYmxlc3BhY2UgJXMsIHdhaXRpbmcgZm9yIElPIHRvIHN0b3AgZm9yICVsbGQgc2Vjb25kcwAlcwAlcwAlcwAlcwAlcwBZb3UgbXVzdCByYWlzZSB0aGUgdmFsdWUgb2YgaW5ub2RiX29wZW5fZmlsZXMgaW4gbXkuY25mISBSZW1lbWJlciB0aGF0IElubm9EQiBrZWVwcyBhbGwgcmVkbyBsb2cgZmlsZXMgYW5kIGFsbCBzeXN0ZW0gdGFibGVzcGFjZSBmaWxlcyBvcGVuIGZvciB0aGUgd2hvbGUgdGltZSBteXNxbGQgaXMgcnVubmluZywgYW5kIG5lZWRzIHRvIG9wZW4gYWxzbyBzb21lIC5pYmQgZmlsZXMgaWYgdGhlIGZpbGUtcGVyLXRhYmxlIHN0b3JhZ2UgbW9kZWwgaXMgdXNlZC4gQ3VycmVudCBvcGVuIGZpbGVzICV6dSwgbWF4IGFsbG93ZWQgb3BlbiBmaWxlcyAlenUuAE1heCB0YWJsZXNwYWNlIGlkIGlzIHRvbyBoaWdoLCAlbHUAVHJ5aW5nIHRvIGFjY2VzcyBtaXNzaW5nIHRhYmxlc3BhY2UgJWx1AFRyeWluZyB0byBjbG9zZS9kZWxldGUgdGFibGVzcGFjZSAnJXMnIGJ1dCB0aGVyZSBhcmUgJWx1IHBlbmRpbmcgb3BlcmF0aW9ucyBvbiBpdC4AVHJ5aW5nIHRvIGRlbGV0ZS9jbG9zZSB0YWJsZXNwYWNlICclcycgYnV0IHRoZXJlIGFyZSAlbHUgZmx1c2hlcyBhbmQgJXp1IHBlbmRpbmcgSS9PJ3Mgb24gaXQuACVzAENhbm5vdCBkZWxldGUgdGFibGVzcGFjZSAlbHUgYmVjYXVzZSBpdCBpcyBub3QgZm91bmQgaW4gdGhlIHRhYmxlc3BhY2UgbWVtb3J5IGNhY2hlLgBXaGlsZSBkZWxldGluZyB0YWJsZXNwYWNlICVsdSBpbiBESVNDQVJEIFRBQkxFU1BBQ0UuIEZpbGUgcmVuYW1lL2RlbGV0ZSBmYWlsZWQ6ICVzAENhbm5vdCBkZWxldGUgdGFibGVzcGFjZSAlbHUgaW4gRElTQ0FSRCBUQUJMRVNQQUNFOiAlcwBDYW5ub3QgcmVuYW1lICclcycgdG8gJyVzJyBmb3Igc3BhY2UgSUQgJWx1IGJlY2F1c2UgdGhlIHNvdXJjZSBmaWxlIGRvZXMgbm90IGV4aXN0LgBDYW5ub3QgcmVuYW1lICclcycgdG8gJyVzJyBmb3Igc3BhY2UgSUQgJWx1IGJlY2F1c2UgdGhlIHRhcmdldCBmaWxlIGV4aXN0cy4gUmVtb3ZlIHRoZSB0YXJnZXQgZmlsZSBhbmQgdHJ5IGFnYWluLgBDYW5ub3QgcmVuYW1lIGZpbGUgJyVzJyAoc3BhY2UgaWQgJWx1KSByZXRyaWVkICVsbHUgdGltZXMuIFRoZXJlIGFyZSBlaXRoZXIgcGVuZGluZyBJT3Mgb3IgZmx1c2hlcyBvciB0aGUgZmlsZSBpcyBiZWluZyBleHRlbmRlZC4AQ2Fubm90IGZpbmQgc3BhY2UgaWQgJWx1IGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZSwgdGhvdWdoIHRoZSBmaWxlICclcycgaW4gYSByZW5hbWUgb3BlcmF0aW9uIHNob3VsZCBoYXZlIHRoYXQgSUQuAFJlbmFtZSB3YWl0aW5nIGZvciBJTyB0byByZXN1bWUAQ2Fubm90IGZpbmQgdGFibGVzcGFjZSBmb3IgJyVzJyBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUAQ2Fubm90IGZpbmQgdGFibGVzcGFjZSBmb3IgJyVzJyBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUAVGFibGVzcGFjZSAnJXMnIGlzIGFscmVhZHkgaW4gdGhlIHRhYmxlc3BhY2UgbWVtb3J5IGNhY2hlAENhbm5vdCBjcmVhdGUgZmlsZSAnJXMnAFRoZSBmaWxlICclcycgYWxyZWFkeSBleGlzdHMgdGhvdWdoIHRoZSBjb3JyZXNwb25kaW5nIHRhYmxlIGRpZCBub3QgZXhpc3QuIEhhdmUgeW91IG1vdmVkIElubm9EQiAuaWJkIGZpbGVzIGFyb3VuZCB3aXRob3V0IHVzaW5nIHRoZSBTUUwgY29tbWFuZHMgRElTQ0FSRCBUQUJMRVNQQUNFIGFuZCBJTVBPUlQgVEFCTEVTUEFDRSwgb3IgZGlkIG15c3FsZCBjcmFzaCBpbiB0aGUgbWlkZGxlIG9mIENSRUFURSBUQUJMRT8gWW91IGNhbiByZXNvbHZlIHRoZSBwcm9ibGVtIGJ5IHJlbW92aW5nIHRoZSBmaWxlICclcycgdW5kZXIgdGhlICdkYXRhZGlyJyBvZiBNeVNRTC4AcG9zaXhfZmFsbG9jYXRlKCk6IEZhaWxlZCB0byBwcmVhbGxvY2F0ZSBkYXRhIGZvciBmaWxlICVzLCBkZXNpcmVkIHNpemUgJWxsdSBPcGVyYXRpbmcgc3lzdGVtIGVycm9yIG51bWJlciAlZCAtICVzLiBDaGVjayB0aGF0IHRoZSBkaXNrIGlzIG5vdCBmdWxsIG9yIGEgZGlzayBxdW90YSBleGNlZWRlZC4gTWFrZSBzdXJlIHRoZSBmaWxlIHN5c3RlbSBzdXBwb3J0cyB0aGlzIGZ1bmN0aW9uLiBSZWZlciB0byB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBmb3Igb3BlcmF0aW5nIHN5c3RlbSBlcnJvciBjb2RlIGluZm9ybWF0aW9uLgBDb3VsZCBub3Qgd3JpdGUgdGhlIGZpcnN0IHBhZ2UgdG8gdGFibGVzcGFjZSAnJXMnAEZpbGUgZmx1c2ggb2YgdGFibGVzcGFjZSAnJXMnIGZhaWxlZABDb3VsZCBub3QgZmluZCBhIHZhbGlkIHRhYmxlc3BhY2UgZmlsZSBmb3IgYCVzYC4gJXMASWdub3JpbmcgZGF0YSBmaWxlICclcycgd2l0aCBzcGFjZSBJRCAlbHUuIEFub3RoZXIgZGF0YSBmaWxlIGNhbGxlZCAnJXMnIGV4aXN0cyB3aXRoIHRoZSBzYW1lIHNwYWNlIElEACVzACVzACVzACVzAENhbid0IHNldCBlbmNyeXB0aW9uIGluZm9ybWF0aW9uIGZvciB0YWJsZXNwYWNlICVzIQAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBUaGUgZGF0YWZpbGUgJyVzJyBmb3IgdGFibGVzcGFjZSAlcyBpcyBpbiBhbiB1bnByb3RlY3RlZCBsb2NhdGlvbi4gVGhpcyBmaWxlIGNhbm5vdCBiZSByZWNvdmVyZWQgYWZ0ZXIgYSBjcmFzaCB1bnRpbCB0aGlzIGxvY2F0aW9uIGlzIGFkZGVkIHRvIGlubm9kYl9kaXJlY3Rvcmllcy4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAU2NhbiBwYXRoICclcycgaXMgaWdub3JlZCBiZWNhdXNlICVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEEgZ2VuZXJhbCB0YWJsZXNwYWNlIGNhbm5vdCBiZSBsb2NhdGVkIHVuZGVyIHRoZSBkYXRhZGlyLiBDYW5ub3Qgb3BlbiBmaWxlICclcycuAEEgZmlsZS1wZXItdGFibGUgdGFibGVzcGFjZSBjYW5ub3QgYmUgbG9jYXRlZCBpbiB0aGUgZGF0YWRpci4gQ2Fubm90IG9wZW4gZmlsZSAnJXMnLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBDYW5ub3QgY3JlYXRlIGEgdGFibGVzcGFjZSBmb3IgdGFibGUgJXMgYmVjYXVzZSB0aGUgZGlyZWN0b3J5IGlzIG5vdCBhIHZhbGlkIGxvY2F0aW9uLiAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBpYnVmIGN1cnNvciByZXN0b3JhdGlvbiBmYWlscyEuIGlidWYgcmVjb3JkIGluc2VydGVkIHRvIHBhZ2UgJXM6JXMAJXMARmFpbGVkIHRvIHJlc3RvcmUgaWJ1ZiBwb3NpdGlvbi4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAQmxvY2tlZCBIaWdoIFByaW9yaXR5IFRyYW5zYWN0aW9uIChJRCAlbGx1LCBUaHJlYWQgSUQgJXMpIGZvcmNlcyByb2xsYmFjayBvZiB0aGUgYmxvY2tpbmcgdHJhbnNhY3Rpb24gKElEICVsbHUgLSAlcykuACVzACVzAEJsb2NrZWQgSGlnaCBQcmlvcml0eSBUcmFuc2FjdGlvbiAoVGhyZWFkIElEICVzKSB3YWtpbmcgdXAgdGhlIGJsb2NraW5nIHRyYW5zYWN0aW9uIChJRCAlbGx1KSBieSBwcmV0ZW5kaW5nIGl0J3MgYSBkZWFkbG9jayB2aWN0aW0uACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFRoZSB0cmFuc2FjdGlvbiBsb2cgc2l6ZSBpcyB0b28gbGFyZ2UgZm9yIGlubm9kYl9sb2dfYnVmZmVyX3NpemUgKCVsdSA+PSAlbHUgLyAyKS4gVHJ5aW5nIHRvIGV4dGVuZCBpdC4AaW5ub2RiX2xvZ19idWZmZXJfc2l6ZSB3YXMgZXh0ZW5kZWQgdG8gJWx1IGJ5dGVzLgBUaGUgdHJhbnNhY3Rpb24gbG9nIGZpbGVzIGFyZSB0b28gc21hbGwgZm9yIHRoZSBzaW5nbGUgdHJhbnNhY3Rpb24gbG9nIChzaXplPSVsdSkuIFNvLCB0aGUgbGFzdCBjaGVja3BvaW50IGFnZSBtaWdodCBleGNlZWQgdGhlIGxvZyBncm91cCBjYXBhY2l0eSAlbGx1LgBUaGUgYWdlIG9mIHRoZSBsYXN0IGNoZWNrcG9pbnQgaXMgJWxsdSwgd2hpY2ggZXhjZWVkcyB0aGUgbG9nIGdyb3VwIGNhcGFjaXR5ICVsbHUuAENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uIGliX2xvZ2ZpbGVzIGFyZSB0b28gc21hbGwgZm9yIGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kgJWx1LiBUaGUgY29tYmluZWQgc2l6ZSBvZiBpYl9sb2dmaWxlcyBzaG91bGQgYmUgYmlnZ2VyIHRoYW4gMjAwIGtCICogaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeS4gVG8gZ2V0IG15c3FsZCB0byBzdGFydCB1cCwgc2V0IGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kgaW4gbXkuY25mIHRvIGEgbG93ZXIgdmFsdWUsIGZvciBleGFtcGxlLCB0byA4LiBBZnRlciBhbiBFUlJPUi1GUkVFIHNodXRkb3duIG9mIG15c3FsZCB5b3UgY2FuIGFkanVzdCB0aGUgc2l6ZSBvZiBpYl9sb2dmaWxlcy4gJXMAUmVkbyBsb2cgd2FzIGVuY3J5cHRlZCwgYnV0IGtleXJpbmcgcGx1Z2luIGlzIG5vdCBsb2FkZWQuAFJlYWQgcmVkbyBsb2cgZW5jcnlwdGlvbiBtZXRhZGF0YSBzdWNjZXNzZnVsLgBDYW4ndCBzZXQgcmVkbyBsb2cgdGFibGVzcGFjZSBlbmNyeXB0aW9uIG1ldGFkYXRhLgBDYW5ub3QgcmVhZCB0aGUgZW5jcnlwdGlvbiBpbmZvcm1hdGlvbiBpbiBsb2cgZmlsZSBoZWFkZXIsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIHBsdWdpbiBsb2FkZWQgYW5kIHRoZSBrZXkgZmlsZSBleGlzdHMuAENhbid0IHNldCByZWRvIGxvZyB0YWJsZXNwYWNlIHRvIGJlIGVuY3J5cHRlZCBpbiByZWFkLW9ubHkgbW9kZS4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgdG8gYmUgZW5jcnlwdGVkLgBDYW4ndCBzZXQgcmVkbyBsb2cgdGFibGVzcGFjZSB0byBiZSBlbmNyeXB0ZWQuAFJlZG8gbG9nIGVuY3J5cHRpb24gaXMgZW5hYmxlZC4ARmx1c2ggd2FpdGluZyBmb3IgYXJjaGl2ZXIgdG8gY2F0Y2ggdXAgbGFnIExTTjogJWxsdQBGbHVzaCBvdmVyd3JpdGluZyBkYXRhIHRvIGFyY2hpdmUgLSB3YWl0IHRvbyBsb25nICgxIG1pbnV0ZSkgbGFnIExTTjogJWxsdQAlcwBTdGFydGluZyBzaHV0ZG93bi4uLgBXYWl0aW5nIGZvciAlcyB0byBleGl0AFdhaXRpbmcgZm9yICVsdSBhY3RpdmUgdHJhbnNhY3Rpb25zIHRvIGZpbmlzaABXYWl0aW5nIGZvciBtYXN0ZXIgdGhyZWFkIHRvIGJlIHN1c3BlbmRlZABXYWl0aW5nIGZvciBwYWdlX2NsZWFuZXIgdG8gZmluaXNoIGZsdXNoaW5nIG9mIGJ1ZmZlciBwb29sAFBlbmRpbmcgY2hlY2twb2ludF93cml0ZXM6ICVsdS4gUGVuZGluZyBsb2cgZmx1c2ggd3JpdGVzOiAlbHUuAFdhaXRpbmcgZm9yICVsdSBidWZmZXIgcGFnZSBJL09zIHRvIGNvbXBsZXRlAE15U1FMIGhhcyByZXF1ZXN0ZWQgYSB2ZXJ5IGZhc3Qgc2h1dGRvd24gd2l0aG91dCBmbHVzaGluZyB0aGUgSW5ub0RCIGJ1ZmZlciBwb29sIHRvIGRhdGEgZmlsZXMuIEF0IHRoZSBuZXh0IG15c3FsZCBzdGFydHVwIElubm9EQiB3aWxsIGRvIGEgY3Jhc2ggcmVjb3ZlcnkhAEJhY2tncm91bmQgdGhyZWFkICVzIHdva2UgdXAgZHVyaW5nIHNodXRkb3duAFdhaXRpbmcgZm9yIGFyY2hpdmVyIHRvIGZpbmlzaCBhcmNoaXZpbmcgcGFnZSBhbmQgbG9nAEJhY2tncm91bmQgdGhyZWFkICVzIHdva2UgdXAgZHVyaW5nIHNodXRkb3duAFdhaXRpbmcgZm9yIGRpcnR5IGJ1ZmZlciBwYWdlcyB0byBiZSBmbHVzaGVkAExvZyBzZXF1ZW5jZSBudW1iZXIgYXQgc2h1dGRvd24gJWxsdSBpcyBsb3dlciB0aGFuIGF0IHN0YXJ0dXAgJWxsdSEAV2FpdGluZyBmb3IgYXJjaGl2ZXIgdG8gZmluaXNoIGFyY2hpdmluZyBwYWdlIGFuZCBsb2cAIyMjIyMjIyMjIyMjIyMjIENPUlJVUFQgTE9HIFJFQ09SRCBGT1VORCAjIyMjIyMjIyMjIyMjIyMATG9nIHJlY29yZCB0eXBlICVkLCBwYWdlICVsdTolbHUuIExvZyBwYXJzaW5nIHByb2NlZWRlZCBzdWNjZXNzZnVsbHkgdXAgdG8gJWxsdS4gUHJldmlvdXMgbG9nIHJlY29yZCB0eXBlICVkLCBpcyBtdWx0aSAlbGx1IFJlY3Ygb2Zmc2V0ICV6ZCwgcHJldiAlbGx1AEhleCBkdW1wIHN0YXJ0aW5nICVsbHUgYnl0ZXMgYmVmb3JlIGFuZCBlbmRpbmcgJWxsdSBieXRlcyBhZnRlciB0aGUgY29ycnVwdGVkIHJlY29yZDoAU2V0IGlubm9kYl9mb3JjZV9yZWNvdmVyeSB0byBpZ25vcmUgdGhpcyBlcnJvci4AVGhlIHJlZG8gbG9nIGZpbGUgbWF5IGhhdmUgYmVlbiBjb3JydXB0IGFuZCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBsb2cgc2NhbiBkaWQgbm90IHByb2NlZWQgZmFyIGVub3VnaCBpbiByZWNvdmVyeSEgUGxlYXNlIHJ1biBDSEVDSyBUQUJMRSBvbiB5b3VyIElubm9EQiB0YWJsZXMgdG8gY2hlY2sgdGhhdCB0aGV5IGFyZSBvayEgSWYgbXlzcWxkIGNyYXNoZXMgYWZ0ZXIgdGhpcyByZWNvdmVyeTsgJXMAJWxsdSBwYWdlcyB3aXRoIGxvZyByZWNvcmRzIHdlcmUgbGVmdCB1bnByb2Nlc3NlZCEAVXBncmFkZSBhZnRlciBhIGNyYXNoIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMgcmVkbyBsb2cgd2FzIGNyZWF0ZWQgd2l0aCAlcywgYW5kIGl0IGFwcGVhcnMgY29ycnVwdGVkLiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgYXQgJXMAVXBncmFkZSBpcyBub3Qgc3VwcG9ydGVkIGFmdGVyIGEgY3Jhc2ggb3Igc2h1dGRvd24gd2l0aCBpbm5vZGJfZmFzdF9zaHV0ZG93biA9IDIuIFRoaXMgcmVkbyBsb2cgd2FzIGNyZWF0ZWQgd2l0aCAlcywgYW5kIGl0IGFwcGVhcnMgbG9naWNhbGx5IG5vbiBlbXB0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGF0ICVzACVzACVzAFJlZG8gbG9nIGZvcm1hdCBpcyB2JWx1LiBUaGUgcmVkbyBsb2cgd2FzIGNyZWF0ZWQgYmVmb3JlIE15U1FMIDguMC4zMC4AVW5rbm93biByZWRvIGxvZyBmb3JtYXQgKHYlbHUpIGluIGZpbGUgJXMuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBhdCAlcwBObyB2YWxpZCBjaGVja3BvaW50IGZvdW5kIChjb3JydXB0ZWQgcmVkbyBsb2cpLiBZb3UgY2FuIHRyeSAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT02IGFzIGEgbGFzdCByZXNvcnQuAEFwcGx5aW5nIGEgYmF0Y2ggb2YgJWxsdSByZWRvIGxvZyByZWNvcmRzIC4uLgAlcwAlcwBBcHBseSBiYXRjaCBjb21wbGV0ZWQhACVzACVzACVzACVzACVzACVzAEFuIG9wdGltaXplZCAod2l0aG91dCByZWRvIGxvZ2dpbmcpIERETCBvcGVyYXRpb24gaGFzIGJlZW4gcGVyZm9ybWVkLiBBbGwgbW9kaWZpZWQgcGFnZXMgbWF5IG5vdCBoYXZlIGJlZW4gZmx1c2hlZCB0byB0aGUgZGlzayB5ZXQuIFRoaXMgb2ZmbGluZSBiYWNrdXAgbWF5IG5vdCBiZSBjb25zaXN0ZW50LgBFeHRlbmRpbmcgdGFibGVzcGFjZSA6ICVsdSBzcGFjZSBuYW1lOiAlcyB0byBuZXcgc2l6ZTogJWx1IHBhZ2VzIGR1cmluZyByZWNvdmVyeS4AQ291bGQgbm90IGV4dGVuZCB0YWJsZXNwYWNlOiAlbHUgc3BhY2UgbmFtZTogJXMgdG8gbmV3IHNpemU6ICVsdSBwYWdlcyBkdXJpbmcgcmVjb3ZlcnkuAExvZyBibG9jayAlbHUgYXQgbHNuICVsbHUgaGFzIHZhbGlkIGhlYWRlciwgYnV0IGNoZWNrc3VtIGZpZWxkIGNvbnRhaW5zICVsdSwgc2hvdWxkIGJlICVsdS4AU2tpcHBlZCBuZWNlc3NhcnkgcmVkbyBsb2cgYXBwbHlpbmcsIC0taW5ub2RiLXJlYWQtb25seSBzZXQhAExvZyBzY2FuIHByb2dyZXNzZWQgcGFzdCB0aGUgY2hlY2twb2ludCBMU04gJWxsdS4ATG9nIHBhcnNpbmcgYnVmZmVyIG92ZXJmbG93LiBSZWNvdmVyeSBtYXkgaGF2ZSBmYWlsZWQhIFBsZWFzZSBzZXQgbG9nX2J1ZmZlcl9zaXplIHRvIGEgdmFsdWUgaGlnaGVyIHRoYW4gJWx1LgBTZXQgaW5ub2RiX2ZvcmNlX3JlY292ZXJ5IHRvIGlnbm9yZSB0aGlzIGVycm9yLgBEb2luZyByZWNvdmVyeTogc2Nhbm5lZCB1cCB0byBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUARGF0YWJhc2Ugd2FzIG5vdCBzaHV0ZG93biBub3JtYWxseSEAU3RhcnRpbmcgY3Jhc2ggcmVjb3ZlcnkuAFRoZSB1c2VyIGhhcyBzZXQgU1JWX0ZPUkNFX05PX0xPR19SRURPIG9uLCBza2lwcGluZyBsb2cgcmVkbwBDYW5ub3QgcmVzdG9yZSBmcm9tIG15c3FsYmFja3VwLCBJbm5vREIgcnVubmluZyBpbiByZWFkLW9ubHkgbW9kZSEAVGhlIHJlZG8gbG9nIGZpbGUgd2FzIGNyZWF0ZWQgYnkgbXlzcWxiYWNrdXAgLS1hcHBseS1sb2cgYXQgJXMuIFRoZSBmb2xsb3dpbmcgY3Jhc2ggcmVjb3ZlcnkgaXMgcGFydCBvZiBhIG5vcm1hbCByZXN0b3JlLgBPcGVuaW5nIGNsb25lZCBkYXRhYmFzZQBSZWRvIGxvZyBpcyBmcm9tIGFuIGVhcmxpZXIgdmVyc2lvbiwgdiVsdS4AUmVkbyBsb2cgZm9ybWF0IHYlbHUgbm90IHN1cHBvcnRlZC4gQ3VycmVudCBzdXBwb3J0ZWQgZm9ybWF0IGlzIHYlbHUuAEFyZSB5b3Ugc3VyZSB5b3UgYXJlIHVzaW5nIHRoZSByaWdodCByZWRvIGxvZyBmaWxlcyB0byBzdGFydCB1cCB0aGUgZGF0YWJhc2U/IExvZyBzZXF1ZW5jZSBudW1iZXIgaW4gdGhlIHJlZG8gbG9nIGZpbGVzIGlzICVsbHUsIGxlc3MgdGhhbiB0aGUgbG9nIHNlcXVlbmNlIG51bWJlciBpbiB0aGUgZmlyc3Qgc3lzdGVtIHRhYmxlc3BhY2UgZmlsZSBoZWFkZXIsICVsbHUuAFRoZSBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUgaW4gdGhlIHN5c3RlbSB0YWJsZXNwYWNlIGRvZXMgbm90IG1hdGNoIHRoZSBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUgaW4gdGhlIHJlZG8gbG9nIGZpbGVzIQBDYW4ndCBpbml0aWF0ZSBkYXRhYmFzZSByZWNvdmVyeSwgcnVubmluZyBpbiByZWFkLW9ubHktbW9kZS4AV2Ugc2Nhbm5lZCB0aGUgbG9nIHVwIHRvICVsbHUuIEEgY2hlY2twb2ludCB3YXMgYXQgJWxsdSBhbmQgdGhlIG1heGltdW0gTFNOIG9uIGEgZGF0YWJhc2UgcGFnZSB3YXMgJWxsdS4gSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgZGF0YWJhc2UgaXMgbm93IGNvcnJ1cHQhAFdhaXRpbmcgZm9yIHJlY3Zfd3JpdGVyIHRvIGZpbmlzaCBmbHVzaGluZyBvZiBidWZmZXIgcG9vbABSZWNvdmVyeSBwYXJzaW5nIGJ1ZmZlciBleHRlbmRlZCB0byAlenUuAE91dCBvZiBtZW1vcnkgd2hpbGUgcmVzaXppbmcgcmVjb3ZlcnkgcGFyc2luZyBidWZmZXIuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAENhbid0IGVuY3J5cHQgZGF0YSBvZiByZWRvIGxvZwAlcwAlcwBEZWNyeXB0aW9uIG9mIHJlZG8gbG9nIGJsb2NrIGF0IG9mZnNldCAlbGx1IGluIGZpbGUgJXMgZmFpbGVkIGJlY2F1c2UgdGhlcmUncyBubyBrZXlyaW5nIGNvbmZpZ3VyZWQAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMASU8gRXJyb3I6ICVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFdyaXRpbmcgdGFibGUgbWV0YWRhdGEgdG8gJyVzJwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBPbGQgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1IHdhcyBncmVhdGVyIHRoYW4gdGhlIG5ldyBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUuIFBsZWFzZSBzdWJtaXQgYSBidWcgcmVwb3J0IHRvIGh0dHA6Ly9idWdzLm15c3FsLmNvbQBTZW1hcGhvcmUgd2FpdCBoYXMgbGFzdGVkID4gJWxsdSBzZWNvbmRzLiBXZSBpbnRlbnRpb25hbGx5IGNyYXNoIHRoZSBzZXJ2ZXIgYmVjYXVzZSBpdCBhcHBlYXJzIHRvIGJlIGh1bmcuAFdhaXRpbmcgZm9yICVsbHUgdGFibGUocykgdG8gYmUgZHJvcHBlZABXYWl0aW5nIGZvciBjaGFuZ2UgYnVmZmVyIG1lcmdlIHRvIGNvbXBsZXRlIG51bWJlciBvZiBieXRlcyBvZiBjaGFuZ2UgYnVmZmVyIGp1c3QgbWVyZ2VkOiAlbGx1AENhbid0IHNldCB1bmRvIHRhYmxlc3BhY2UocykgdG8gYmUgZW5jcnlwdGVkIHNpbmNlIC0taW5ub2RiX3VuZG9fdGFibGVzcGFjZXM9MC4AQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZShzKSB0byBiZSBlbmNyeXB0ZWQgaW4gcmVhZC1vbmx5LW1vZGUuAENhbid0IHNldCB1bmRvIHRhYmxlc3BhY2UgJyVzJyB0byBiZSBlbmNyeXB0ZWQuAENhbid0IHNldCB1bmRvIHRhYmxlc3BhY2UgJyVzJyB0byBiZSBlbmNyeXB0ZWQuIEZhaWxlZCB0byB3cml0ZSBoZWFkZXIgcGFnZS4AQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZSAnJXMnIHRvIGJlIGVuY3J5cHRlZC4gRXJyb3IgJWQgLSAlcwBFbmNyeXB0aW9uIGlzIGVuYWJsZWQgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBDYW4ndCByb3RhdGUgZW5jcnlwdGlvbiBvbiB1bmRvIHRhYmxlc3BhY2UgJyVzJy4ARW5jcnlwdGlvbiBpcyBlbmFibGVkIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4Ab3NfZmlsZV9nZXRfc3RhdHVzKCkgZmFpbGVkIG9uICclcycuIENhbid0IGRldGVybWluZSBmaWxlIHBlcm1pc3Npb25zLgAlcyBjYW4ndCBiZSBvcGVuZWQgaW4gJXMgbW9kZS4AJyVzJyBub3QgYSByZWd1bGFyIGZpbGUuAENhbm5vdCBjcmVhdGUgJXMAU2V0dGluZyBmaWxlICVzIHNpemUgdG8gJWxsdSBNQi4gUHJvZ3Jlc3MgOiAldSUlAENhbm5vdCByZXNpemUgcmVkbyBsb2cgZmlsZSAlcyB0byAlbGx1IE1CICglcykAQ2Fubm90IGNyZWF0ZSByZWRvIGxvZyBmaWxlcyBpbiByZWFkLW9ubHkgbW9kZSAoLS1pbm5vZGItcmVhZC1vbmx5KS4AUmVkbyBsb2cgZW5jcnlwdGlvbiBpcyBlbmFibGVkLCBidXQgdGhlIGtleXJpbmcgaXMgbm90IGxvYWRlZC4ARmFpbGVkIHRvIGNyZWF0ZSByZWRvIGxvZyBmaWxlICVzIChlcnJvcjogJWQpIGZvciBzdGFydCBMU04gJWxsdQBSZW5hbWluZyBsb2cgZmlsZSAlcyB0byAlcwBOZXcgcmVkbyBsb2cgZmlsZXMgY3JlYXRlZCwgTFNOPSVsbHUAVW5hYmxlIHRvIG9wZW4gJyVzJyAoZXJyb3I6ICVkKS4AQ2Fubm90IGNyZWF0ZSBjb25zdHJ1Y3Rpb24gbG9nIGZpbGUgJyVzJyBmb3IgdW5kbyB0YWJsZXNwYWNlICclcycuAENyZWF0aW5nIFVORE8gVGFibGVzcGFjZSAlcwBTZXR0aW5nIGZpbGUgJXMgc2l6ZSB0byAlbGx1IE1CAFBoeXNpY2FsbHkgd3JpdGluZyB0aGUgZmlsZSBmdWxsAEVycm9yIGluIGNyZWF0aW5nICVzOiBwcm9iYWJseSBvdXQgb2YgZGlzayBzcGFjZQBDYW4ndCBzZXQgZW5jcnlwdGlvbiBtZXRhZGF0YSBmb3Igc3BhY2UgJXMAQ2Fubm90IHJlYWQgZmlyc3QgcGFnZSBvZiAnJXMnIC0gJXMAVW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUgd2FzIGJlaW5nIHRydW5jYXRlZCB3aGVuIG15c3FsZCBxdWl0LgBDYW5ub3QgcmVjb3ZlciBhIHRydW5jYXRlZCB1bmRvIHRhYmxlc3BhY2UgaW4gcmVhZC1vbmx5IG1vZGUAUmVjb25zdHJ1Y3RpbmcgdW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUuAENhbm5vdCBjcmVhdGUgJXMgYmVjYXVzZSAlcyBhbHJlYWR5IHVzZXMgU3BhY2UgSUQ9JWx1ISBEaWQgeW91IGNoYW5nZSBpbm5vZGJfdW5kb19kaXJlY3Rvcnk/AFVORE8gdGFibGVzcGFjZSAlcyBtdXN0IGJlICVzAEVycm9yIGNyZWF0aW5nIGZpbGUgZm9yICVzAEVycm9yIHJlYWRpbmcgZW5jcnlwdGlvbiBmb3IgJXMAVW5hYmxlIHRvIG9wZW4gdW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUAT3BlbmVkICVsbHUgZXhpc3RpbmcgdW5kbyB0YWJsZXNwYWNlcy4AQ2Fubm90IGNyZWF0ZSB1bmRvIHRhYmxlc3BhY2VzIHNpbmNlIGlubm9kYl8lcyBoYXMgYmVlbiBzZXQuIFVzaW5nICVsbHUgZXhpc3RpbmcgdW5kbyB0YWJsZXNwYWNlcy4AQ2Fubm90IGNvbnRpbnVlIElubm9EQiBzdGFydHVwIGluICVzIG1vZGUgYmVjYXVzZSB0aGVyZSBhcmUgbm8gZXhpc3RpbmcgdW5kbyB0YWJsZXNwYWNlcyBmb3VuZC4AQ291bGQgbm90IGNyZWF0ZSB1bmRvIHRhYmxlc3BhY2UgJyVzJy4ARXJyb3IgJWQgLSAlcyAtIG9wZW5pbmcgbmV3bHkgY3JlYXRlZCB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AQ3JlYXRlZCAlbGx1IHVuZG8gdGFibGVzcGFjZXMuAFVuYWJsZSB0byBjcmVhdGUgZW5jcnlwdGVkIHVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1LiBwbGVhc2UgY2hlY2sgaWYgdGhlIGtleXJpbmcgaXMgaW5pdGlhbGl6ZWQgY29ycmVjdGx5AEVuY3J5cHRpb24gaXMgZW5hYmxlZCBmb3IgdW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUuAFVuYWJsZSB0byBpbml0aWFsaXplIHRoZSBoZWFkZXIgcGFnZSBpbiB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdS4AQ2Fubm90IGRlbGV0ZSBvbGQgdW5kbyB0YWJsZXNwYWNlcyBiZWNhdXNlIHRoZXkgY29udGFpbiB1bmRvIGxvZ3MgZm9yIFhBIFBSRVBBUkVEIHRyYW5zYWN0aW9ucy4AVXBncmFkaW5nICV6dSBleGlzdGluZyB1bmRvIHRhYmxlc3BhY2VzIHRoYXQgd2VyZSB0cmFja2VkIGluIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSB0byAlbHUgbmV3IGluZGVwZW5kZW50IHVuZG8gdGFibGVzcGFjZXMuAERlbGV0aW5nICVsbHUgbmV3IGluZGVwZW5kZW50IHVuZG8gdGFibGVzcGFjZXMgdGhhdCB3ZSBqdXN0IGNyZWF0ZWQuAFdhaXRpbmcgZm9yIHB1cmdlIHRvIHN0YXJ0AENyZWF0aW5nIHNoYXJlZCB0YWJsZXNwYWNlIGZvciB0ZW1wb3JhcnkgdGFibGVzAFRoZSAlcyBkYXRhIGZpbGUgbXVzdCBiZSB3cml0YWJsZSEAQ291bGQgbm90IGNyZWF0ZSB0aGUgc2hhcmVkICVzLgBVbmFibGUgdG8gY3JlYXRlIHRoZSBzaGFyZWQgJXMuAFRoZSAlcyBkYXRhIGZpbGUgY2Fubm90IGJlIHJlLW9wZW5lZCBhZnRlciBjaGVja19maWxlX3NwZWMoKSBzdWNjZWVkZWQhACVkIHRocmVhZHMgY3JlYXRlZCBieSBJbm5vREIgaGFkIG5vdCBleGl0ZWQgYXQgc2h1dGRvd24hAElubm9EQiBEYXRhYmFzZSBjcmVhdGlvbiB3YXMgYWJvcnRlZCAlc3dpdGggZXJyb3IgJXMuIFlvdSBtYXkgbmVlZCB0byBkZWxldGUgdGhlIGliZGF0YTEgZmlsZSBiZWZvcmUgdHJ5aW5nIHRvIHN0YXJ0IHVwIGFnYWluLgBQbHVnaW4gaW5pdGlhbGl6YXRpb24gYWJvcnRlZCAlc3dpdGggZXJyb3IgJXMuAFdhaXRpbmcgZm9yICV6dSBidWZmZXIgcGFnZSBJL09zIHRvIGNvbXBsZXRlLgBQVU5DSCBIT0xFIHN1cHBvcnQgYXZhaWxhYmxlAFBVTkNIIEhPTEUgc3VwcG9ydCBub3QgYXZhaWxhYmxlAFNpemUgb2YgSW5ub0RCJ3MgdWxpbnQgaXMgJXp1IGJ1dCBzaXplIG9mIHZvaWQqIGlzICV6dS4gVGhlIHNpemVzIHNob3VsZCBiZSB0aGUgc2FtZSBzbyB0aGF0IG9uIGEgNjQtYml0IHBsYXRmb3JtcyB5b3UgY2FuIGFsbG9jYXRlIG1vcmUgdGhhbiA0IEdCIG9mIG1lbW9yeS4ARGF0YWJhc2UgdXBncmFkZSBjYW5ub3QgYmUgYWNjb21wbGlzaGVkIGluIHJlYWQtb25seSBtb2RlLgBEYXRhYmFzZSB1cGdyYWRlIGNhbm5vdCBiZSBhY2NvbXBsaXNoZWQgd2l0aCBpbm5vZGJfZm9yY2VfcmVjb3ZlcnkgPiAwACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAE15U1FMIHdhcyBidWlsdCB3aXRob3V0IGEgbWVtb3J5IGJhcnJpZXIgY2FwYWJpbGl0eSBvbiB0aGlzIGFyY2hpdGVjdHVyZSwgd2hpY2ggbWlnaHQgYWxsb3cgYSBtdXRleC9yd19sb2NrIHZpb2xhdGlvbiB1bmRlciBoaWdoIHRocmVhZCBjb25jdXJyZW5jeS4gVGhpcyBtYXkgY2F1c2UgYSBoYW5nLgBDb21wcmVzc2VkIHRhYmxlcyB1c2UgemxpYiAlcwAlcwBTdGFydHVwIGNhbGxlZCBzZWNvbmQgdGltZSBkdXJpbmcgdGhlIHByb2Nlc3MgbGlmZXRpbWUuIEluIHRoZSBNeVNRTCBFbWJlZGRlZCBTZXJ2ZXIgTGlicmFyeSB5b3UgY2Fubm90IGNhbGwgc2VydmVyX2luaXQoKSBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIHByb2Nlc3MgbGlmZXRpbWUuACVzAFVuYWJsZSB0byBjcmVhdGUgbW9uaXRvciBmaWxlICVzOiAlcwBEaXNhYmxpbmcgYmFja2dyb3VuZCBpYnVmIElPIHJlYWQgdGhyZWFkcy4AQ2Fubm90IGluaXRpYWxpemUgQUlPIHN1Yi1zeXN0ZW0ASW5pdGlhbGl6aW5nIGJ1ZmZlciBwb29sLCB0b3RhbCBzaXplID0gJWxmJWMsIGluc3RhbmNlcyA9ICVsdSwgY2h1bmsgc2l6ZSA9JWxmJWMgAENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBidWZmZXIgcG9vbABDb21wbGV0ZWQgaW5pdGlhbGl6YXRpb24gb2YgYnVmZmVyIHBvb2wAU21hbGwgYnVmZmVyIHBvb2wgc2l6ZSAoJWxsdU0pLCB0aGUgZmxzdF92YWxpZGF0ZSgpIGRlYnVnIGZ1bmN0aW9uIGNhbiBjYXVzZSBhIGRlYWRsb2NrIGlmIHRoZSBidWZmZXIgcG9vbCBmaWxscyB1cC4AQ291bGQgbm90IG9wZW4gb3IgY3JlYXRlIHRoZSBzeXN0ZW0gdGFibGVzcGFjZS4gSWYgeW91IHRyaWVkIHRvIGFkZCBuZXcgZGF0YSBmaWxlcyB0byB0aGUgc3lzdGVtIHRhYmxlc3BhY2UsIGFuZCBpdCBmYWlsZWQgaGVyZSwgeW91IHNob3VsZCBub3cgZWRpdCBpbm5vZGJfZGF0YV9maWxlX3BhdGggaW4gbXkuY25mIGJhY2sgdG8gd2hhdCBpdCB3YXMsIGFuZCByZW1vdmUgdGhlIG5ldyBpYmRhdGEgZmlsZXMgSW5ub0RCIGNyZWF0ZWQgaW4gdGhpcyBmYWlsZWQgYXR0ZW1wdC4gSW5ub0RCIG9ubHkgd3JvdGUgdGhvc2UgZmlsZXMgZnVsbCBvZiB6ZXJvcywgYnV0IGRpZCBub3QgeWV0IHVzZSB0aGVtIGluIGFueSB3YXkuIEJ1dCBiZSBjYXJlZnVsOiBkbyBub3QgcmVtb3ZlIG9sZCBkYXRhIGZpbGVzIHdoaWNoIGNvbnRhaW4geW91ciBwcmVjaW91cyBkYXRhIQBDYW5ub3QgY3JlYXRlIHJlZG8gbG9nIGZpbGVzIGJlY2F1c2UgZGF0YSBmaWxlcyBhcmUgY29ycnVwdCBvciB0aGUgZGF0YWJhc2Ugd2FzIG5vdCBzaHV0IGRvd24gY2xlYW5seSBhZnRlciBjcmVhdGluZyB0aGUgZGF0YSBmaWxlcy4AT25seSBvbmUgcmVkbyBsb2cgZmlsZSBmb3VuZABUaGUgcmVkbyBsb2cgZmlsZSAlcyBzaXplICVsbHUgaXMgbm90IGEgbXVsdGlwbGUgb2YgaW5ub2RiX3BhZ2Vfc2l6ZQBUaGUgcmVkbyBsb2cgZmlsZSAlcyBpcyBvZiBkaWZmZXJlbnQgc2l6ZSAlbGx1IGJ5dGVzIHRoYW4gb3RoZXIgbG9nIGZpbGVzICVsbHUgYnl0ZXMhAFVzZSAtLWlubm9kYi1kaXJlY3RvcmllcyB0byBmaW5kIHRoZSB0YWJsZXNwYWNlIGZpbGVzLiBJZiB0aGF0IGZhaWxzIHRoZW4gdXNlIC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5PTEgdG8gaWdub3JlIHRoaXMgYW5kIHRvIHBlcm1hbmVudGx5IGxvc2UgYWxsIGNoYW5nZXMgdG8gdGhlIG1pc3NpbmcgdGFibGVzcGFjZShzKQBUaGUgcmVkbyBsb2cgZmlsZSBtYXkgaGF2ZSBiZWVuIGNvcnJ1cHQgYW5kIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGxvZyBzY2FuIG9yIHBhcnNpbmcgZGlkIG5vdCBwcm9jZWVkIGZhciBlbm91Z2ggaW4gcmVjb3ZlcnkuIFBsZWFzZSBydW4gQ0hFQ0sgVEFCTEUgb24geW91ciBJbm5vREIgdGFibGVzIHRvIGNoZWNrIHRoYXQgdGhleSBhcmUgb2shIEl0IG1heSBiZSBzYWZlc3QgdG8gcmVjb3ZlciB5b3VyIElubm9EQiBkYXRhYmFzZSBmcm9tIGEgYmFja3VwIQBDYW5ub3QgcmVzaXplIHJlZG8gbG9nIGZpbGVzIGluIHJlYWQtb25seSBtb2RlLiBQcm92aWRlIC0taW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5ID49ICVsbHVNQiBvciBzdGFydCB3aXRob3V0IC0taW5ub2RiLXJlYWQtb25seS4AQ2Fubm90IG9wZW4gREQgdGFibGVzcGFjZS4AU3RhcnRpbmcgdG8gZGVsZXRlIGFuZCByZXdyaXRlIHJlZG8gbG9nIGZpbGVzLgBVbmRvIGZyb20gNS43IGZvdW5kLiBJdCB3aWxsIGJlIHB1cmdlZAAlcwAlcwBUYWJsZXNwYWNlIHNpemUgc3RvcmVkIGluIGhlYWRlciBpcyAlbHUgcGFnZXMsIGJ1dCB0aGUgc3VtIG9mIGRhdGEgZmlsZSBzaXplcyBpcyAlbHUgcGFnZXMAQ2Fubm90IHN0YXJ0IElubm9EQi4gVGhlIHRhaWwgb2YgdGhlIHN5c3RlbSB0YWJsZXNwYWNlIGlzIG1pc3NpbmcuIEhhdmUgeW91IGVkaXRlZCBpbm5vZGJfZGF0YV9maWxlX3BhdGggaW4gbXkuY25mIGluIGFuIGluYXBwcm9wcmlhdGUgd2F5LCByZW1vdmluZyBpYmRhdGEgZmlsZXMgZnJvbSB0aGVyZT8gWW91IGNhbiBzZXQgaW5ub2RiX2ZvcmNlX3JlY292ZXJ5PTEgaW4gbXkuY25mIHRvIGZvcmNlIGEgc3RhcnR1cCBpZiB5b3UgYXJlIHRyeWluZyB0byByZWNvdmVyIGEgYmFkbHkgY29ycnVwdCBkYXRhYmFzZS4AVGFibGVzcGFjZSBzaXplIHN0b3JlZCBpbiBoZWFkZXIgaXMgJWx1IHBhZ2VzLCBidXQgdGhlIHN1bSBvZiBkYXRhIGZpbGUgc2l6ZXMgaXMgb25seSAlbHUgcGFnZXMAQ2Fubm90IHN0YXJ0IElubm9EQi4gVGhlIHRhaWwgb2YgdGhlIHN5c3RlbSB0YWJsZXNwYWNlIGlzIG1pc3NpbmcuIEhhdmUgeW91IGVkaXRlZCBpbm5vZGJfZGF0YV9maWxlX3BhdGggaW4gbXkuY25mIGluIGFuIElubm9EQjogaW5hcHByb3ByaWF0ZSB3YXksIHJlbW92aW5nIGliZGF0YSBmaWxlcyBmcm9tIHRoZXJlPyBZb3UgY2FuIHNldCBpbm5vZGJfZm9yY2VfcmVjb3Zlcnk9MSBpbiBteS5jbmYgdG8gZm9yY2UgSW5ub0RCOiBhIHN0YXJ0dXAgaWYgeW91IGFyZSB0cnlpbmcgdG8gcmVjb3ZlciBhIGJhZGx5IGNvcnJ1cHQgZGF0YWJhc2UuACVzIHN0YXJ0ZWQ7IGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdQBXYWl0aW5nIGZvciBwdXJnZSB0byBjb21wbGV0ZQBXYWl0aW5nIGZvciBkaWN0X3N0YXRzX3RocmVhZCB0byBleGl0AFF1ZXJ5IGNvdW50ZXIgc2hvd3MgJWxsZCBxdWVyaWVzIHN0aWxsIGluc2lkZSBJbm5vREIgYXQgc2h1dGRvd24AU2h1dGRvd24gY29tcGxldGVkOyBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUAQ2Fubm90IGNvbnRpbnVlIG9wZXJhdGlvbi4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAVW5hYmxlIHRvIHJlYWQgdGhlIGV4aXN0aW5nIHVuZG8gdHJ1bmNhdGUgbG9nIGZpbGUgJyVzJy4gVGhlIGVycm9yIGlzICVzAFVuZG8gdGFibGVzcGFjZSAlcyBpcyBtYXJrZWQgZm9yIHRydW5jYXRlACVzAFRydW5jYXRpbmcgVU5ETyB0YWJsZXNwYWNlICVzACVzAENhbm5vdCBjcmVhdGUgdHJ1bmNhdGUgbG9nIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AJXMARmFpbGVkIHRvIHRydW5jYXRlIHVuZG8gdGFibGVzcGFjZSAnJXMnLgAlcwBDb21wbGV0ZWQgdHJ1bmNhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBUcnlpbmcgdG8gYWNjZXNzIHVwZGF0ZSB1bmRvIHJlYyBmaWVsZCAlbGx1IGluIGluZGV4ICVzIG9mIHRhYmxlICVzIGJ1dCBpbmRleCBoYXMgb25seSAlbGx1IGZpZWxkcy4gJXMuIFJ1biBhbHNvIENIRUNLIFRBQkxFICVzLiBuX2ZpZWxkcyA9ICVsbHUsIGkgPSAlbGx1LCBwdHIgPSAlcC4AJXMAJXMAJXMAJXMAJXMAUm9sbGJhY2sgb2Ygbm9uLXByZXBhcmVkIHRyYW5zYWN0aW9ucyBjb21wbGV0ZWQAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAQmxvY2tlZCBIaWdoIFByaW9yaXR5IFRyYW5zYWN0aW9uIChJRCAlbGx1LCBUaHJlYWQgSUQgJXMpIGtpbGxlZCB0aGUgYmxvY2tpbmcgdHJhbnNhY3Rpb24gKElEICVsbHUgLSAlcykgYnkgcm9sbGluZyBpdCBiYWNrLgAlcwBnZXR0aW1lb2ZkYXkoKSBmYWlsZWQ6ICVzAENhbid0IGNyZWF0ZSBVTkRPIHRhYmxlc3BhY2UgJXMgJXMAJXMAUmVzaXppbmcgcmVkbyBsb2cgZnJvbSAlbGx1TSB0byAlbGx1TSAoTFNOPSVsbHUpIHN5bmNocm9ub3VzbHkuIElmIHRoaXMgdGFrZXMgdG9vIGxvbmcsIGNvbnNpZGVyIHN0YXJ0aW5nIHRoZSBzZXJ2ZXIgd2l0aCBsYXJnZSAtLWlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSwgYW5kIHJlc2l6aW5nIHRoZSByZWRvIGxvZyBvbmxpbmUgdXNpbmcgU0VULgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBPdXQgb2Ygc3BhY2UgaW4gdGhlIHJlZG8gbG9nLiBDaGVja3BvaW50IExTTjogJWxsdS4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuACVzAExvZyB3cml0ZXIgd2FpdGVkIHRvbyBsb25nIGZvciByZWRvLWFyY2hpdmVyIHRvIGFkdmFuY2UgKDEgc2Vjb25kKS4gVGhlcmUgYXJlIHVuYXJjaGl2ZWQ6ICVsbHUgYnl0ZXMuIEFyY2hpdmVyIExTTjogJWxsdS4gQWJvcnRlZCB0aGUgcmVkby1hcmNoaXZlci4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuAExvZyB3cml0ZXIgaXMgd2FpdGluZyBmb3IgcmVkby1hcmNoaXZlciB0byBjYXRjaCB1cCB1bmFyY2hpdmVkOiAlbGx1IGJ5dGVzLiBBcmNoaXZlciBMU046ICVsbHUuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgAlcwAlcwAlcwAlcwBDYW4ndCBzZXQgcmVkbyBsb2cgZmlsZXMgdG8gYmUgZW5jcnlwdGVkIGluIHJlYWQtb25seSBtb2RlLgBDYW4ndCBzZXQgcmVkbyBsb2cgZmlsZXMgdG8gYmUgZW5jcnlwdGVkLgBDYW4ndCBzZXQgcmVkbyBsb2cgdGFibGVzcGFjZSB0byBiZSBlbmNyeXB0ZWQuAFJlZG8gbG9nIGVuY3J5cHRpb24gaXMgZW5hYmxlZC4AV2FpdGluZyBmb3IgYXJjaGl2ZXIgdG8gZmluaXNoIGFyY2hpdmluZyBwYWdlIGFuZCBsb2cAU3RhcnRpbmcgc2h1dGRvd24uLi4AV2FpdGluZyBmb3IgJXMgdG8gZXhpdC4AV2FpdGluZyBmb3Igcm9sbGJhY2sgb2YgJXp1IHJlY292ZXJlZCB0cmFuc2FjdGlvbnMsIGJlZm9yZSBzaHV0ZG93bi4AV2FpdGluZyBmb3IgbWFzdGVyIHRocmVhZCB0byBiZSBzdXNwZW5kZWQuAFdhaXRpbmcgZm9yIHBhZ2VfY2xlYW5lciB0byBmaW5pc2ggZmx1c2hpbmcgb2YgYnVmZmVyIHBvb2wuAFNodXRkb3duIGlzIHdhaXRpbmcgZm9yICV6dSBidWZmZXIgcGFnZSBJL09zIHRvIGNvbXBsZXRlLgBNeVNRTCBoYXMgcmVxdWVzdGVkIGEgdmVyeSBmYXN0IHNodXRkb3duIHdpdGhvdXQgZmx1c2hpbmcgdGhlIElubm9EQiBidWZmZXIgcG9vbCB0byBkYXRhIGZpbGVzLiBBdCB0aGUgbmV4dCBteXNxbGQgc3RhcnR1cCBJbm5vREIgd2lsbCBkbyBhIGNyYXNoIHJlY292ZXJ5IQAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBJbnZhbGlkIHJlZG8gbG9nIGhlYWRlciBjaGVja3N1bS4AVW5zdXBwb3J0ZWQgcmVkbyBsb2cgZm9ybWF0ICh2JWx1KS4gVGhlIHJlZG8gbG9nIHdhcyBjcmVhdGVkIGJlZm9yZSBNeVNRTCA1LjcuOQAlcwBDYW5ub3QgY29udGludWUgb3BlcmF0aW9uLiBUaGUgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5PSVsbHVNIGlzIHRvbyBzbWFsbCBmb3IgdGhlIGlubm9kYl90aHJlYWRfY29uY3VycmVuY3k9JWx1LiBUaGUgY2FwYWNpdHkgb2YgcmVkbyBzaG91bGQgYmUgPj0gJWxsdU0uIFRvIGdldCBteXNxbGQgcnVubmluZywgc2V0IGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kgdG8gYSBzbWFsbGVyIHZhbHVlIG9yIGluY3JlYXNlIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4gJXMAJXMAJXMAVXNlciBoYXMgc2V0IGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kgdG8gJWx1LgBTVE9QIFJFUExJQ0EgY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogUmVwbGljYSBTUUwgdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBTUUwgdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIElPIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsLCB0aHJlYWQgaXMgYnVzeSwgSU8gdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBVcGRhdGVzIHRvIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlcyBjYW4gb25seSBiZSBkb25lIGluIGVpdGhlciBhdXRvY29tbWl0dGVkIHN0YXRlbWVudHMgb3Igc2luZ2xlLXN0YXRlbWVudCB0cmFuc2FjdGlvbnMsIGFuZCBuZXZlciBpbiB0aGUgc2FtZSBzdGF0ZW1lbnQgYXMgdXBkYXRlcyB0byB0cmFuc2FjdGlvbmFsIHRhYmxlcy4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBUQUJMRSAuLi4gU0VMRUNULgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBhbmQgRFJPUCBURU1QT1JBUlkgVEFCTEUgY2FuIG9ubHkgYmUgZXhlY3V0ZWQgb3V0c2lkZSB0cmFuc2FjdGlvbmFsIGNvbnRleHQuICBUaGVzZSBzdGF0ZW1lbnRzIGFyZSBhbHNvIG5vdCBhbGxvd2VkIGluIGEgZnVuY3Rpb24gb3IgdHJpZ2dlciBiZWNhdXNlIGZ1bmN0aW9ucyBhbmQgdHJpZ2dlcnMgYXJlIGFsc28gY29uc2lkZXJlZCB0byBiZSBtdWx0aS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb25zLgBXaGVuICUuMTkycywgdGhlIG9wdGlvbiBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnM9JS4xOTJzIHdpbGwgYmUgaWdub3JlZCBhbmQgdXBkYXRlcyB3aWxsIGJlIHdyaXR0ZW4gaW4gZnVsbCBmb3JtYXQgdG8gYmluYXJ5IGxvZy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gbG9nX2Jpbl91c2VfdjFfcm93X2V2ZW50cz0xIHdpbGwgYmUgaWdub3JlZCBhbmQgcm93IGV2ZW50cyB3aWxsIGJlIHdyaXR0ZW4gaW4gbmV3IGZvcm1hdCB0byBiaW5hcnkgbG9nLgBXaGVuICUuMTkycywgdGhlIG9wdGlvbiBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnM9JS4xOTJzIHdpbGwgYmUgdXNlZCBvbmx5IGZvciB0aGUgYWZ0ZXItaW1hZ2UuIEZ1bGwgdmFsdWVzIHdpbGwgYmUgd3JpdHRlbiBpbiB0aGUgYmVmb3JlLWltYWdlLCBzbyB0aGUgc2F2aW5nIGluIGRpc2sgc3BhY2UgZHVlIHRvIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucyBpcyBsaW1pdGVkIHRvIGxlc3MgdGhhbiA1MCUlLgBBYm9ydGVkIGNvbm5lY3Rpb24gJXUgdG8gZGI6ICclLS4xOTJzJyB1c2VyOiAnJS0uNDhzJyBob3N0OiAnJS0uMjU1cycgKCUtLjY0cykuACVzOiBOb3JtYWwgc2h1dGRvd24uAENhbiBub3QgcGVyZm9ybSBrZXlyaW5nIG1pZ3JhdGlvbiA6ICVzLgBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgb3B0aW9uIHZhbHVlICcldScgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwICcldScuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuIElmIHRoZXJlIGlzIGV4aXN0aW5nIGRhdGEgb24gbWVtYmVyLCBpdCBtYXkgYmUgaW5jb21wYXRpYmxlIHdpdGggZ3JvdXAgaWYgaXQgd2FzIGNyZWF0ZWQgd2l0aCBhIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgdmFsdWUgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwLgBBbiBvdXQtb2YtbWVtb3J5IGVycm9yIG9jY3VycmVkIHdoaWxlIHNhdmluZyB0aGUgc2V0IG9mIEdUSURzIGZyb20gdGhlIGxhc3QgYmluYXJ5IGxvZyBpbnRvIHRoZSBteXNxbC5ndGlkX2V4ZWN1dGVkIHRhYmxlAFRoZSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIHNldHRpbmcgZm9yIHRoZSBkYXRhIGRpY3Rpb25hcnkgd2FzIG5vdCBmb3VuZC4gU3RhcnRpbmcgdGhlIHNlcnZlciB1c2luZyBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gJyV1Jy4AQSBjYXB0dXJlIGdyb3VwIGhhcyBhbiBpbnZhbGlkIG5hbWUuAFZhcmlhYmxlICclLS42NHMnIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyUtLjIwMHMnAFN0b3BwaW5nIHNlcnZpY2VzIGZhaWxlZCB3aXRoIGVycm9yICIlcyIAUXVlcnkgY2F1c2VkIGRpZmZlcmVudCBlcnJvcnMgb24gc291cmNlIGFuZCByZXBsaWNhLiBFcnJvciBvbiBzb3VyY2U6IG1lc3NhZ2UgKGZvcm1hdCk9JyVzJyBlcnJvciBjb2RlPSVkOyBFcnJvciBvbiByZXBsaWNhOmFjdHVhbCBtZXNzYWdlPSclcycsIGVycm9yIGNvZGU9JWQuIERlZmF1bHQgZGF0YWJhc2U6JyVzJy4gUXVlcnk6JyVzJwBHb3QgZmF0YWwgZXJyb3IgJWQgZnJvbSBzb3VyY2Ugd2hlbiByZWFkaW5nIGRhdGEgZnJvbSBiaW5hcnkgbG9nOiAnJS0uNTEycycAUmVwbGljYXRpb24gZXZlbnQgY2hlY2tzdW0gdmVyaWZpY2F0aW9uIGZhaWxlZCB3aGlsZSByZWFkaW5nIGZyb20gbmV0d29yay4ARmFpbGVkIHRvIGNyZWF0ZSAlcwBGYXRhbCBlcnJvcjogJXMAVW5leHBlY3RlZCBzb3VyY2UncyBoZWFydGJlYXQgZGF0YTogJXMAVGhlIGluY2lkZW50ICVzIG9jY3VycmVkIG9uIHRoZSBzb3VyY2UuIE1lc3NhZ2U6ICVzAFNvdXJjZSBjb21tYW5kICVzIGZhaWxlZDogJXMAUmVsYXkgbG9nIHJlYWQgZmFpbHVyZTogJXMAUmVsYXkgbG9nIHdyaXRlIGZhaWx1cmU6ICVzAFJlcGxpY2EgZmFpbGVkIHRvIGluaXRpYWxpemUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0aGUgcmVwb3NpdG9yeQBSZXBsaWNhIGZhaWxlZCB0byBpbml0aWFsaXplIGFwcGxpZXIgbWV0YWRhdGEgc3RydWN0dXJlIGZyb20gdGhlIHJlcG9zaXRvcnkAR290IGEgcGFja2V0IGJpZ2dlciB0aGFuICdtYXhfYWxsb3dlZF9wYWNrZXQnIGJ5dGVzAEFjY2VzcyB0byAlLjY0cyAnJS42NHMuJS42NHMnIGlzIHJlamVjdGVkLgBVbmtub3duIGVycm9yAFVua25vd24gc3lzdGVtIHZhcmlhYmxlICclLS42NHMnAEEgbWVzc2FnZSBpbnRlbmRlZCBmb3IgYSBjbGllbnQgY2Fubm90IGJlIHNlbnQgdGhlcmUgYXMgbm8gY2xpZW50LXNlc3Npb24gaXMgYXR0YWNoZWQuIFRoZXJlZm9yZSwgd2UncmUgc2VuZGluZyB0aGUgaW5mb3JtYXRpb24gdG8gdGhlIGVycm9yLWxvZyBpbnN0ZWFkOiBNWS0lMDZkIC0gJXMAQWJvcnRlZCBjb25uZWN0aW9uICV1IHRvIGRiOiAnJS0uMTkycycgdXNlcjogJyUtLjQ4cycgaG9zdDogJyUtLjI1NXMnICglLS42NHM7IGRpYWdub3N0aWNzIGFyZWE6IE1ZLSUwNmQgLSAlLS42NHMpAE91dCBvZiBzb3J0IG1lbW9yeSwgY29uc2lkZXIgaW5jcmVhc2luZyBzZXJ2ZXIgc29ydCBidWZmZXIgc2l6ZSEAVGhlIHRhYmxlICclLS4xOTJzJyBpcyBmdWxsIQBDcmVhdGUgdGFibGUvdGFibGVzcGFjZSAnJS0uMTkycycgZmFpbGVkLCBhcyBkaXNrIGlzIGZ1bGwuAEhhbmRsZXIgcmVwb3J0ZWQgZXJyb3IgJWQgLSAlcwBJbmNvcnJlY3QgaW5mb3JtYXRpb24gaW4gZmlsZTogJyUtLjIwMHMnAENhbid0IG9wZW4gZmlsZTogJyUtLjIwMHMnIChPUyBlcnJubzogJWQgLSAlcykAQ2FuJ3QgZmluZCBmaWxlOiAnJS0uMjAwcycgKE9TIGVycm5vOiAlZCAtICVzKQAnJS0uMTkycycgaXMgbG9ja2VkIGFnYWluc3QgY2hhbmdlIChPUyBlcnJubzogJWQgLSAlcykAQ2Fubm90IGxvYWQgZnJvbSAlcy4lcy4gVGhlIHRhYmxlIGlzIHByb2JhYmx5IGNvcnJ1cHRlZCEARXJyb3IgaW4gZGlhZ25vc3RpY3MgYXJlYTogTVktJTA2ZCAtICVzAEluY29ycmVjdCBkZWZpbml0aW9uIG9mIHRhYmxlICVzLiVzOiBleHBlY3RlZCBjb2x1bW4gJyVzJyBhdCBwb3NpdGlvbiAlZCwgZm91bmQgJyVzJy4AVGhlIGNvbHVtbiBjb3VudCBvZiAlcy4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBDcmVhdGVkIHdpdGggTXlTUUwgJWQsIG5vdyBydW5uaW5nICVkLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAENvbHVtbiBjb3VudCBvZiAlcy4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkLgAAUmVwbGljYSBTUUwgdGhyZWFkIGFib3J0ZWQuIENhbid0IGV4ZWN1dGUgaW5pdF9yZXBsaWNhIHF1ZXJ5LCBNWS0lMDZkIC0gJyVzJwBDb2x1bW4gJWQgb2YgdGFibGUgJyUtLjE5MnMuJS0uMTkycycgY2Fubm90IGJlIGNvbnZlcnRlZCBmcm9tIHR5cGUgJyUtLjMycycgdG8gdHlwZSAnJS0uMzJzJwBSZXBsaWNhIFNRTCB0aHJlYWQgaWdub3JlZCB0aGUgcXVlcnkgYmVjYXVzZSBvZiByZXBsaWNhdGUtKi10YWJsZSBydWxlcwBDYW5ub3QgcmVwbGljYXRlIGFub255bW91cyB0cmFuc2FjdGlvbiB3aGVuIEFVVE9fUE9TSVRJT04gPSAxLCBhdCBmaWxlICUuNDAwcywgcG9zaXRpb24gJWxsZC4AQ2Fubm90IHJlcGxpY2F0ZSBhbm9ueW1vdXMgdHJhbnNhY3Rpb24gd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTiwgYXQgZmlsZSAlLjQwMHMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCByZXBsaWNhdGUgR1RJRC10cmFuc2FjdGlvbiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRiwgYXQgZmlsZSAlLjQwMHMsIHBvc2l0aW9uICVsbGQuAFNpbXVsYXRlZCBlcnJvcgAlcwBBdWRpdCBMb2cgZmlsdGVyaW5nIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQuAEZhaWxlZCB0byBvcGVuIHRoZSAlcyBmaWx0ZXIgdGFibGVzLgBGYWlsZWQgdG8gb3BlbiAnJXMuJXMnICVzIHRhYmxlLgBGaWx0ZXIgbmFtZSBjYW5ub3QgYmUgZW1wdHkuAEludmFsaWQgY2hhcmFjdGVyIGluIHRoZSB1c2VyIG5hbWUuAFJlcXVlc3QgaWdub3JlZCBmb3IgJyVzJ0AnJXMnLiBTVVBFUiBvciBBVURJVF9BRE1JTiBuZWVkZWQgdG8gcGVyZm9ybSBvcGVyYXRpb24ATm8ga2V5cmluZyBpbnN0YWxsZWQuAEludmFsaWQgY2hhcmFjdGVyIGluIHRoZSBob3N0IG5hbWUuAEF1ZGl0IGxvZyBlbmNyeXB0aW9uIHBhc3N3b3JkIGhhcyBub3QgYmVlbiBzZXQ7IGl0IHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuIFVzZSBhdWRpdF9sb2dfZW5jcnlwdGlvbl9wYXNzd29yZF9nZXQgdG8gb2J0YWluIHRoZSBwYXNzd29yZCBvciBhdWRpdF9sb2dfZW5jcnlwdGlvbl9wYXNzd29yZF9zZXQgdG8gc2V0IGEgbmV3IG9uZS4AQ291bGQgbm90IGNyZWF0ZSBBRVMga2V5LiBPcGVuU1NMJ3MgRVZQX0J5dGVzVG9LZXkgZnVuY3Rpb24gZmFpbGVkLgBBdWRpdCBsb2cgZW5jcnlwdGlvbiBwYXNzd29yZCBjYW5ub3QgYmUgZmV0Y2hlZCBmcm9tIHRoZSBrZXlyaW5nLiBQYXNzd29yZCB1c2VkIHNvIGZhciBpcyB1c2VkIGZvciBlbmNyeXB0aW9uLgBDb3VsZCBub3QgcmVpbml0aWFsaXplIGF1ZGl0IGxvZyBmaWx0ZXJzLgBVc2VyIGNhbm5vdCBiZSBlbXB0eS4ARmlyc3QgY2hhcmFjdGVyIG9mIHRoZSB1c2VyIG5hbWUgbXVzdCBiZSBhbHBoYW51bWVyaWMuAFNwZWNpZmllZCBmaWx0ZXIgaGFzIG5vdCBiZWVuIGZvdW5kLgBDYW5ub3QgdXBncmFkZSBzZXJ2ZXIgZWFybGllciB0aGFuIDUuNyB0byA4LjAAJXMgKG15c3FsZCAlcykgaW5pdGlhbGl6aW5nIG9mIHNlcnZlciBpbiBwcm9ncmVzcyBhcyBwcm9jZXNzICVsdQAlcyAobXlzcWxkICVzKSBpbml0aWFsaXppbmcgb2Ygc2VydmVyIGhhcyBjb21wbGV0ZWQAQ2Fubm90IGJvb3Qgc2VydmVyIHZlcnNpb24gJWx1IG9uIGRhdGEgZGlyZWN0b3J5IGJ1aWx0IGJ5IHZlcnNpb24gJWxsdS4gRG93bmdyYWRlIGlzIG5vdCBzdXBwb3J0ZWQAUmVjZWl2ZWQgU0hVVERPV04gZnJvbSB1c2VyICVzLiBTaHV0dGluZyBkb3duIG15c3FsZCAoVmVyc2lvbjogJXMpLgBUaGUgcGx1Z2luIGVuY291bnRlcmVkIGEgY3JpdGljYWwgZXJyb3IgYW5kIHdpbGwgYWJvcnQ6ICVzAEludmFsaWQgbWF0Y2ggbW9kZSBmbGFnIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4AVGhlIHVzZSBvZiByZXBsaWNhdGlvbiBmaWx0ZXJzIHdpdGggWEEgdHJhbnNhY3Rpb25zIGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBjYW4gbGVhZCB0byBhbiB1bmRlZmluZWQgc3RhdGUgaW4gdGhlIHJlcGxpY2EuAENhbm5vdCB1cGRhdGUgR1RJRF9QVVJHRUQgd2l0aCB0aGUgR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIHJ1bm5pbmcAJyVzLiVzJyB0YWJsZSBkZWZpbml0aW9uIGhhcyBub3QgYmVlbiB1cGdyYWRlZDsgUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBFeGVjdXRpb24gb2Ygc2VydmVyLXNpZGUgU1FMIHN0YXRlbWVudCAnJXMnIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgPSAlZCwgZXJyb3IgbWVzc2FnZSA9ICclcycuAE5vIHBhdGhzIGFsbG93ZWQgZm9yIHNoYXJlZCBsaWJyYXJ5LgBGdW5jdGlvbiAnJS0uMTkycycgYWxyZWFkeSBleGlzdHMuAEdvdCBFcnJvcjogJWxkIGZyb20gU2V0RXZlbnQuAEVycm9yIGFsbG9jYXRpbmcgU1NMIEJJTy4AJXMAT25lIG9yIHNldmVyYWwgbG9jYXRpb25zIHdlcmUgaW5hY2Nlc3NpYmxlIHdoaWxlIGNoZWNraW5nIFBJRCBmaWxlcGF0aC4AQ3VycmVudGx5IHVua25vd24gdmFyaWFibGUgJyVzJyB3YXMgcmVhZCBmcm9tIHRoZSBwZXJzaXN0ZWQgY29uZmlnIGZpbGUuAEZhdGFsIGVycm9yIGluIGRlZmF1bHRzIGhhbmRsaW5nLiBQcm9ncmFtIGFib3J0ZWQhAER1cGxpY2F0ZSB2YXJpYWJsZSBuYW1lICclcycuAEZhaWxlZCB0byBpbml0aWFsaXplIHN5c3RlbSB2YXJpYWJsZXMuAFZhcmlhYmxlIG5hbWUgJyVzJyBub3QgZm91bmQuAFNvbWUgKCVkKSB0aHJlYWRzIGFyZSBzdGlsbCBhY3RpdmUAJXMAU291cmNlIHRhYmxlc3BhY2UgaXMgZW5jcnlwdGVkIGJ1dCB0YXJnZXQgdGFibGVzcGFjZSBpcyBub3QuAFdhaXRpbmcgZm9yIHRhYmxlc3BhY2VfYWx0ZXJfZW5jcnlwdF90aHJlYWQgdG8gZXhpdAAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlczogQ291bGQgbm90IGFkZCBzdXBwcmVzc2lvbiBydWxlIGZvciBjb2RlICIlcyIuIFJ1bGUtc2V0IG1heSBiZSBmdWxsLCBvciBjb2RlIG1heSBub3QgY29ycmVzcG9uZCB0byBhbiBlcnJvci1sb2cgbWVzc2FnZS4ASW52YWxpZCB2YWx1ZSBmb3IgY29tbWFuZCBsaW5lIG9wdGlvbiBiaW5kLWFkZHJlc3NlczogJyVzJwBJZ25vcmluZyB0aGUgQEBnbG9iYWwucmVsYXlfbG9nX3NwYWNlX2xpbWl0IG9wdGlvbiBiZWNhdXNlIEBAZ2xvYmFsLnJlbGF5X2xvZ19wdXJnZSBpcyBkaXNhYmxlZC4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIEdUSUQgZXhlY3V0aW9uIGluZm9ybWF0aW9uOiAlcwBNZXNzYWdlIHJlY2VpdmVkIHdpdGhvdXQgYSBwcm9wZXIgZ3JvdXAgY29vcmRpbmF0b3IgbW9kdWxlLgBBIG1lbWJlciBjYW5ub3Qgam9pbiB0aGUgZ3JvdXAgd2hpbGUgYSBncm91cCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbiAnJXMnIGlzIHJ1bm5pbmcgaW5pdGlhdGVkIGJ5ICclcycuAEEgbWVtYmVyIGlzIGpvaW5pbmcgdGhlIGdyb3VwIHdoaWxlIGEgZ3JvdXAgY29uZmlndXJhdGlvbiBvcGVyYXRpb24gJyVzJyBpcyBydW5uaW5nIGluaXRpYXRlZCBieSAnJXMnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4AQ2FuJ3Qgc3RhcnQgJXMgZm9yIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgYSBncm91cCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbiAnJXMnIGluaXRpYXRlZCBieSAnJXMnLgBBIHByaW1hcnkgZWxlY3Rpb24gd2FzIGludm9rZWQgYnV0IHRoZSByZXF1ZXN0ZWQgcHJpbWFyeSBtZW1iZXIgaXMgbm90IGluIHRoZSBncm91cC4gUmVxdWVzdCBpZ25vcmVkLgBFcnJvciB3aGlsZSBzZW5kaW5nIG1lc3NhZ2UuIENvbnRleHQ6ICVzAEVycm9yIHdoaWxlIGV4ZWN1dGluZyBhIGdyb3VwIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uOiAlcwBDb25maWd1cmF0aW9uIG9wZXJhdGlvbiAnJXMnIHRlcm1pbmF0ZWQuICVzAFN0YXJ0aW5nIGdyb3VwIG9wZXJhdGlvbiBsb2NhbCBleGVjdXRpb246ICVzAFRlcm1pbmF0aW9uIG9mIGdyb3VwIG9wZXJhdGlvbiBsb2NhbCBleGVjdXRpb246ICVzAEEgY29uZmlndXJhdGlvbiBjaGFuZ2Ugd2FzIGtpbGxlZCBpbiB0aGlzIG1lbWJlci4gVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAgYXMgaXRzIGNvbmZpZ3VyYXRpb24gbWF5IGhhdmUgZGl2ZXJnZWQuAFRoZXJlIHdhcyBhbiBpc3N1ZSBvbiB0aGUgcHJpbWFyeSBlbGVjdGlvbiBwcm9jZXNzOiAlcyBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4AVGhlcmUgd2FzIGFuIGlzc3VlIHdoZW4gc3RvcHBpbmcgYSBwcmV2aW91cyBlbGVjdGlvbiBwcm9jZXNzOiAlcwBJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGluaXRpYWxpemUgc3RhZ2UgbG9nZ2luZyBmb3IgdGhpcyB0YXNrLiBUaGUgb3BlcmF0aW9uIHdpbGwgc3RpbGwgcnVuIHdpdGhvdXQgc3RhZ2UgdHJhY2tpbmcuAENvdWxkIG5vdCBleGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgR3JvdXAgUmVwbGljYXRpb24gVURGIGZ1bmN0aW9uOiAlcy4gQ2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIGFscmVhZHkgcHJlc2VudCwgaWYgc28sIHRyeSB0byByZW1vdmUgaXQAQ291bGQgbm90IHVuaW5zdGFsbCBHcm91cCBSZXBsaWNhdGlvbiBVREYgZnVuY3Rpb25zLiBUcnkgdG8gcmVtb3ZlIHRoZW0gbWFudWFsbHkgaWYgcHJlc2VudC4AQ291bGQgbm90IGV4ZWN1dGUgdGhlIGluc3RhbGxhdGlvbiBvZiBHcm91cCBSZXBsaWNhdGlvbiBVREYgZnVuY3Rpb25zLiBDaGVjayBmb3Igb3RoZXIgZXJyb3JzIGluIHRoZSBsb2cgYW5kIHRyeSB0byByZWluc3RhbGwgdGhlIHBsdWdpbgBUaGUgZnVuY3Rpb24gJyVzJyBmYWlsZWQuICVzAERvIG5vdCBzcGVjaWZ5IHRoZSBjdXJyZW50IHBhc3N3b3JkIHdoaWxlIGNoYW5naW5nIGl0IGZvciBvdGhlciB1c2Vycy4ASW5jb3JyZWN0IGN1cnJlbnQgcGFzc3dvcmQuIFNwZWNpZnkgdGhlIGNvcnJlY3QgcGFzc3dvcmQgd2hpY2ggaGFzIHRvIGJlIHJlcGxhY2VkLgBDdXJyZW50IHBhc3N3b3JkIG5lZWRzIHRvIGJlIHNwZWNpZmllZCBpbiB0aGUgUkVQTEFDRSBjbGF1c2UgaW4gb3JkZXIgdG8gY2hhbmdlIGl0LgBWYXJpYWJsZSAnJS0uNjRzJyBjYW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICclLS4yMDBzJwAlcyB3YXMgdW5hYmxlIHRvIGNyZWF0ZSBhIG5ldyBXaW5kb3dzIHJlZ2lzdHJ5IGtleSAlcyBmb3IgJXM7IGNvbnRpbnVpbmcgdG8gdXNlIHRoZSBwcmV2aW91cyBpZGVudC4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBURU1QT1JBUlkgVEFCTEUgYW5kIERST1AgVEVNUE9SQVJZIFRBQkxFIGFyZSBub3QgYWxsb3dlZCBpbnNpZGUgYSB0cmFuc2FjdGlvbiBvciBpbnNpZGUgYSBwcm9jZWR1cmUgaW4gYSB0cmFuc2FjdGlvbmFsIGNvbnRleHQgd2hlbiBAQHNlc3Npb24uYmlubG9nX2Zvcm1hdD1TVEFURU1FTlQuAFNlY29uZGFyeSBlbmdpbmUgb3BlcmF0aW9uIGZhaWxlZC4gJXMuAERETHMgb24gYSB0YWJsZSB3aXRoIGEgc2Vjb25kYXJ5IGVuZ2luZSBkZWZpbmVkIGFyZSBub3QgYWxsb3dlZC4AVW5hYmxlIHRvIGFsbG9jYXRlIHRlbXBvcmFyeSB0YWJsZXNwYWNlIGZvciB0aGlzIHNlc3Npb24AVW5hYmxlIHRvIHN3aXRjaCBzZWN1cml0eSBjb250ZXh0IHRvIHVzZXI6ICVzAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBBTFRFUiBUQUJMRSAuLi4gQUREIENPTFVNTiAuLiB3aXRoIGV4cHJlc3Npb24gYXMgREVGQVVMVC4ARXJyb3IgaW4gcGFyc2luZyAlcyAnJXMnLiclcycgZHVyaW5nIHVwZ3JhZGUuICVzAFRoZSBkZXNpZ25hdGVkIGRhdGEgZGlyZWN0b3J5ICVzIGlzIHVudXNhYmxlLiBZb3UgY2FuIHJlbW92ZSBhbGwgZmlsZXMgdGhhdCB0aGUgc2VydmVyIGFkZGVkIHRvIGl0LgBHcm91cCBzZWFyY2ggcmViaW5kaW5nIHZpYSByb290IEROOiAlcyAARXJyb3IgaW5zdGFsbGluZyBwbHVnaW4gJyVzJzogJXMARXJyb3IgdW5pbnN0YWxsaW5nIHBsdWdpbiAnJXMnOiAlcwBQYXJ0aXRpb25lZCB0YWJsZSAnJXMnIGlzIG5vdCBhbGxvd2VkIHRvIHVzZSBzaGFyZWQgdGFibGVzcGFjZSAnJXMnLiBQbGVhc2UgbW92ZSBhbGwgcGFydGl0aW9ucyB0byBmaWxlLXBlci10YWJsZSB0YWJsZXNwYWNlcyBiZWZvcmUgdXBncmFkZS4AQ2Fubm90IGRldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgdGFibGVzcGFjZSBuYW1lZCAnJXMnLgAlczogJ3V0ZjgnIGlzIGN1cnJlbnRseSBhbiBhbGlhcyBmb3IgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgYnV0IHdpbGwgYmUgYW4gYWxpYXMgZm9yIFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuACVzOiBUaGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCBpbnN0ZWFkLgAlczogJyUtLjY0cycgaXMgYSBjb2xsYXRpb24gb2YgdGhlIGRlcHJlY2F0ZWQgY2hhcmFjdGVyIHNldCBVVEY4TUIzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCB3aXRoIGFuIGFwcHJvcHJpYXRlIGNvbGxhdGlvbiBpbnN0ZWFkLgBUaGUgU1NMIGxpYnJhcnkgZnVuY3Rpb24gJXMgZmFpbGVkLiBUaGlzIGlzIHR5cGljYWxseSBjYXVzZWQgYnkgdGhlIFNTTCBsaWJyYXJ5IGFscmVhZHkgYmVpbmcgdXNlZC4gQXMgYSByZXN1bHQgdGhlIFNTTCBtZW1vcnkgYWxsb2NhdGlvbiB3aWxsIG5vdCBiZSBpbnN0cnVtZW50ZWQuAERpc2FibGluZyBAQGNvcmVfZmlsZSBiZWNhdXNlIEBAaW5ub2RiX2J1ZmZlcl9wb29sX2luX2NvcmVfZmlsZSBpcyBkaXNhYmxlZCwgeWV0IE1BRFZfRE9OVERVTVAgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtAERpc2FibGluZyBAQGNvcmVfZmlsZSBiZWNhdXNlIEBAaW5ub2RiX2J1ZmZlcl9wb29sX2luX2NvcmVfZmlsZSBpcyBkaXNhYmxlZCwgeWV0IG1hZHZpc2UoJXAsJXp1LCVzKSBmYWlsZWQgd2l0aCAlcwBDb3VsZCBub3QgY2hhbmdlIGNvbHVtbiAnJXMnIG9mIHRhYmxlICclcycuIFRoZSByZXN1bHRpbmcgc2l6ZSBvZiBpbmRleCAnJXMnIHdvdWxkIGV4Y2VlZCB0aGUgbWF4IGtleSBsZW5ndGggb2YgJWQgYnl0ZXMuAHNxbF9tb2RlPTB4JTA4eCBoYXMgYmVlbiByZW1vdmVkIGFuZCB3aWxsIGJlIGlnbm9yZWQARmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgYSBwb29sIG9mIHNpemUgJXp1IGJ5dGVzLiBXaWxsIHdhaXQgZm9yICV6dSBzZWNvbmRzIGZvciBhIHRocmVhZCB0byBmcmVlIGEgcmVzb3VyY2UuAE51bWJlciBvZiBwb29sczogJXp1AFVzaW5nIHVuZG8gdGFibGVzcGFjZSAnJXMnLgAlcyBVbmFibGUgdG8gc2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0YWJsZXNwYWNlICclcycgdG8gdGhlIGRhdGEgZGljdGlvbmFyeQBDYW5ub3QgY3JlYXRlIHVuZG8gdGFibGVzcGFjZSAlcyBhdCAlcyBiZWNhdXNlICVkIHVuZG8gdGFibGVzcGFjZXMgYWxyZWFkeSBleGlzdC4ARXJyb3IgJWQgb3BlbmluZyBuZXdseSBjcmVhdGVkIHVuZG8gdGFibGVzcGFjZSAlcy4AU0RJIENvbXByZXNzaW9uIGZhaWxlZCwgWl9CVUZfRVJST1IAU0RJIENvbXByZXNzaW9uIGZhaWxlZCwgWl9NRU1fRVJST1IAU0RJIENvbXByZXNzaW9uIGZhaWxlZCwgWl9TVFJFQU1fRVJST1IAJXMARXhwZWN0ZWQgdG8gZmluZCB1bmRvIHRhYmxlc3BhY2UgJyVzJyBmb3IgU3BhY2UgSUQ9JWx1LCBidXQgZm91bmQgJyVzJyBpbnN0ZWFkISAgRGlkIHlvdSBjaGFuZ2UgaW5ub2RiX3VuZG9fZGlyZWN0b3J5PwBDYW5ub3QgdXNlICVzIGFzIGFuIHVuZG8gdGFibGVzcGFjZSBiZWNhdXNlIGl0IGRvZXMgbm90IGVuZCB3aXRoICcuaWJ1Jy4AaWJfdW5kb190cnVuY19lbXB0eV9maWxlAGliX3VuZG9fdHJ1bmNfYmVmb3JlX2RkX3VwZGF0ZQBpYl91bmRvX3RydW5jX2JlZm9yZV9kb25lX2xvZ2dpbmcAaWJfdW5kb190cnVuY19iZWZvcmVfcnNlZ3MAJXMgRmFpbGVkIHRvIGZpbmlzaCB0cnVuY2F0aW5nIFVuZG8gVGFibGVzcGFjZSAnJXMnAFRoZSBzZXR0aW5nIElOTk9EQl9VTkRPX1RBQkxFU1BBQ0VTIGlzIGRlcHJlY2F0ZWQgYW5kIGlzIG5vIGxvbmdlciB1c2VkLiAgSW5ub0RCIGFsd2F5cyBjcmVhdGVzIDIgdW5kbyB0YWJsZXNwYWNlcyB0byBzdGFydCB3aXRoLiBJZiB5b3UgbmVlZCBtb3JlLCBwbGVhc2UgdXNlIENSRUFURSBVTkRPIFRBQkxFU1BBQ0UuAFRoZSBkaXJlY3RvcnkgZm9yIHRhYmxlc3BhY2UgJXMgZG9lcyBub3QgZXhpc3Qgb3IgaXMgaW5jb3JyZWN0LgAlcwBDbG9uZSBkb25vciByZXBvcnRlZCA6ICUuNTEycy4AQ2xvbmUgcmVjZWl2ZWQgdW5leHBlY3RlZCByZXNwb25zZSBmcm9tIGRvbm9yIDogJS41MTJzLgBDbGllbnQ6ICUuNTEycy4AU2VydmVyOiAlLjUxMnMuAEZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBwZXJmb3JtYW5jZSBzY2hlbWEgdGFibGVzIHNlcnZpY2UuAEZhaWxlZCB0byBhZGQgdGhyZWFkIHBvb2wgcGVyZm9ybWFuY2Ugc2NoZW1hIHRhYmxlcy4ARmFpbGVkIHRvIHNldCBkYXRhZGlyIHRvICclLS4yMDBzJyAoT1MgZXJybm86ICVkIC0gJXMpAFRoZSBpbm5vZGJfdW5kb19kaXJlY3RvcnkgaXMgbm90IGFsbG93ZWQgdG8gYmUgYW4gYW5jZXN0b3Igb2YgdGhlIGRhdGFkaXIuAEZhaWxlZCB0byBmZXRjaCBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAENhbid0IGZpbmQga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGluIHRoZSBzZXJ2ZXIgbG9nIGlmIGEga2V5cmluZyBpcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4ARmV0Y2hlZCBhbiBpbnZhbGlkIGtleSBmcm9tIGtleXJpbmcuAEVycm9yIHJlYWRpbmcgYSByZXBsaWNhdGlvbiBsb2cgZW5jcnlwdGlvbiBoZWFkZXI6ICVzLgBGYWlsZWQgdG8gcm90YXRlIHNvbWUgbG9ncyBhZnRlciBjaGFuZ2luZyBiaW5sb2cgZW5jcnlwdGlvbiBzZXR0aW5ncy4gUGxlYXNlIGZpeCB0aGUgcHJvYmxlbSBhbmQgcm90YXRlIHRoZSBsb2dzIG1hbnVhbGx5LgBLZXkgJXMgZXhpc3RzIHVuZXhwZWN0ZWQuAEZhaWxlZCB0byBnZW5lcmF0ZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHN0b3JlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gcmVtb3ZlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBVbmFibGUgdG8gcmVjb3ZlciBiaW5sb2cgZW5jcnlwdGlvbiBtYXN0ZXIga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byBpbml0aWFsaXplIGJpbmxvZyBlbmNyeXB0aW9uLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byByb3RhdGUgYmlubG9nIGVuY3J5cHRpb24gbWFzdGVyIGtleSBhdCBzdGFydHVwLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAElnbm9yaW5nIGJpbmxvZ19yb3RhdGVfZW5jcnlwdGlvbl9tYXN0ZXJfa2V5X2F0X3N0YXJ0dXAgYmVjYXVzZSBiaW5sb2dfZW5jcnlwdGlvbiBvcHRpb24gaXMgZGlzYWJsZWQuAEludmFsaWQgdmFsdWUgZm9yIGNvbW1hbmQgbGluZSBvcHRpb24gYWRtaW4tYWRkcmVzczogJyVzJwBBZG1pbiBpbnRlcmZhY2UgcmVhZHkgZm9yIGNvbm5lY3Rpb25zLCBhZGRyZXNzOiAnJXMnICBwb3J0OiAlZABDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBhZG1pbiBjb25uZWN0aW9ucyAoZXJybm89ICVkKQBSRVRBSU4gQ1VSUkVOVCBQQVNTV09SRCBpZ25vcmVkIGZvciB1c2VyICclcydAJyVzJyBhcyBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luICVzIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcGFzc3dvcmRzLgBESVNDQVJEIE9MRCBQQVNTV09SRCBpZ25vcmVkIGZvciB1c2VyICclcydAJyVzJyBhcyBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luICVzIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcGFzc3dvcmRzLgBFbXB0eSBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGFzIHNlY29uZCBwYXNzd29yZCBmb3IgdXNlciAnJXMnQCclcycuAEN1cnJlbnQgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBmb3IgdXNlciAnJXMnQCclcycgYmVjYXVzZSBhdXRoZW50aWNhdGlvbiBwbHVnaW4gaXMgYmVpbmcgY2hhbmdlZC4AQ3VycmVudCBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGZvciB1c2VyICclcydAJyVzJyBiZWNhdXNlIG5ldyBwYXNzd29yZCBpcyBlbXB0eS4AQ2FuIG5vdCByZWFkIGFuZCBwcm9jZXNzIHZhbHVlIG9mIFVzZXJfYXR0cmlidXRlcyBjb2x1bW4gZnJvbSBteXNxbC51c2VyIHRhYmxlIGZvciB1c2VyOiAnJXNAJXMnOyBJZ25vcmluZyB1c2VyLgBTZWNvbmQgcGFzc3dvcmQgd2FzIHVzZWQgZm9yIGxvZ2luIGJ5IHVzZXI6ICclcydAJyVzJy4AU2Vjb25kIHBhc3N3b3JkIHdhcyB1c2VkIGZvciBsb2dpbiBieSB1c2VyOiAnJXMnQCclcycuAFNlY29uZCBwYXNzd29yZCB3YXMgdXNlZCBmb3IgbG9naW4gYnkgdXNlcjogJyVzJ0AnJXMnLgBFcnJvciBzZW5kaW5nIHRyYW5zYWN0aW9uICclczolbGxkJyBwcmVwYXJlZCBtZXNzYWdlIGZyb20gc2Vzc2lvbiAnJXUnLgBFcnJvciByZWxlYXNpbmcgdHJhbnNhY3Rpb24gJyVzOiVsbGQnIGZvciBjb21taXQgb24gc2Vzc2lvbiAnJXUnIGFmdGVyIGJlaW5nIHByZXBhcmVkIG9uIGFsbCBncm91cCBtZW1iZXJzLgBUcmFuc2FjdGlvbiAnJXM6JWxsZCcgYWxyZWFkeSBleGlzdHMgb24gR3JvdXAgUmVwbGljYXRpb24gY29uc2lzdGVuY3kgbWFuYWdlciB3aGlsZSBiZWluZyByZWdpc3RlcmVkIGFmdGVyIGNvbmZsaWN0IGRldGVjdGlvbi4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gJyVzOiVsbGQnIG9uIEdyb3VwIFJlcGxpY2F0aW9uIGNvbnNpc3RlbmN5IG1hbmFnZXIgYWZ0ZXIgY29uZmxpY3QgZGV0ZWN0aW9uLgBFcnJvciByZWdpc3RlcmluZyB0cmFuc2FjdGlvbiAnJXM6JWxsZCcgZnJvbSBzZXNzaW9uICcldScgdG8gd2FpdCBmb3IgYmVpbmcgcHJlcGFyZWQgb24gYWxsIGdyb3VwIG1lbWJlcnMuAEVycm9yIG9uIHRyYW5zYWN0aW9uICclczolbGxkJyBmcm9tIHNlc3Npb24gJyV1JyB3aGlsZSB3YWl0aW5nIGZvciBiZWluZyBwcmVwYXJlZCBvbiBhbGwgZ3JvdXAgbWVtYmVycy4AVHJhbnNhY3Rpb24gJyVzOiVsbGQnIGRvZXMgbm90IGV4aXN0IG9uIEdyb3VwIFJlcGxpY2F0aW9uIGNvbnNpc3RlbmN5IG1hbmFnZXIgd2hpbGUgcmVjZWl2aW5nIHJlbW90ZSB0cmFuc2FjdGlvbiBwcmVwYXJlLgBFcnJvciByZWxlYXNpbmcgdHJhbnNhY3Rpb24gJyVzOiVsbGQnIGZvciBleGVjdXRpb24gb24gc2Vzc2lvbiAnJXUnIGFmdGVyIGl0cyBkZXBlbmRlbmNpZXMgZGlkIGNvbXBsZXRlIGNvbW1pdC4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gZnJvbSBzZXNzaW9uICcldScgdG8gd2FpdCBmb3IgaXRzIGRlcGVuZGVuY2llcyB0byBjb21wbGV0ZSBjb21taXQuAEVycm9yIG9uIHNlc3Npb24gJyV1JyB3aGlsZSB3YWl0aW5nIGZvciBpdHMgZGVwZW5kZW5jaWVzIHRvIGNvbXBsZXRlIGNvbW1pdC4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gZnJvbSBzZXNzaW9uICcldScgdG8gd2FpdCBmb3Igc3luYyBiZWZvcmUgZXhlY3V0aW9uLgBFcnJvciBzZW5kaW5nIHN5bmMgYmVmb3JlIGV4ZWN1dGlvbiBtZXNzYWdlIGZyb20gc2Vzc2lvbiAnJXUnLgBFcnJvciBvbiB0cmFuc2FjdGlvbiBmcm9tIHNlc3Npb24gJyV1JyB3aGlsZSB3YWl0aW5nIGZvciBzeW5jIGJlZm9yZSBleGVjdXRpb24uAEVycm9yIHJlbGVhc2luZyB0cmFuc2FjdGlvbiBmb3IgZXhlY3V0aW9uIG9uIHNlc3Npb24gJyV1JyBhZnRlciB3YWl0IGZvciBzeW5jIGJlZm9yZSBleGVjdXRpb24uAEVycm9yIHdhaXRpbmcgZm9yIGdyb3VwIGV4ZWN1dGVkIHRyYW5zYWN0aW9ucyBjb21taXQgb24gc2Vzc2lvbiAnJXUnLgBUaGVyZSdzIG5vIHVuaXQgb2YgbWVhc3VyZSBuYW1lZCAnJXMnLgBUaGUgZnVuY3Rpb24gJXMgdXNlcyAlcyBhcyBhIHVuaXQsIGJ1dCB3YXMgcGFzc2VkIGdlb21ldHJ5IHdpdGhvdXQgdW5pdHMgKCJTUklEIDAiKS4gQ29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuAENvdWxkIG5vdCBwYXJzZSBrZXktdmFsdWUgcGFpcnMgaW4gcHJvcGVydHkgc3RyaW5nICclcycAUHJvcGVydHkga2V5ICclcycgaXMgaW52YWxpZC4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoZSBncm91cF9yZXBsaWNhdGlvbl9hcHBsaWVyIGNoYW5uZWwgcmVjZWl2ZWQgdHJhbnNhY3Rpb25zIHNldC4gVW5hYmxlIHRvIGVuc3VyZSB0aGUgZXhlY3V0aW9uIG9mIGdyb3VwIHRyYW5zYWN0aW9ucyByZWNlaXZlZCBkdXJpbmcgcmVjb3ZlcnkuAEZhaWxlZCB0byBlbmNyeXB0IGNvbnRlbnQgdG8gd3JpdGUgaW50byBiaW5sb2cgZmlsZTogJXMuAENhbm5vdCBnZXQgdGhlIHNlcnZlciB2ZXJzaW9uIG51bWJlciBmcm9tIHRoZSBkaWN0aW9uYXJ5IHRhYmxlc3BhY2UgaGVhZGVyLgBDYW5ub3Qgc2V0IHRoZSBzZXJ2ZXIgdmVyc2lvbiBudW1iZXIgaW4gdGhlIGRpY3Rpb25hcnkgdGFibGVzcGFjZSBoZWFkZXIuAFVwZ3JhZGluZyB0aGUgc2VydmVyIGZyb20gc2VydmVyIHZlcnNpb24gJyV1JyBpcyBub3Qgc3VwcG9ydGVkLgBNeVNRTCBzZXJ2ZXIgdXBncmFkaW5nIGZyb20gdmVyc2lvbiAnJXUnIHRvICcldScuAFRoZSBjZXJ0aWZpY2F0aW9uIGluZm9ybWF0aW9uIGNvdWxkIG5vdCBiZSBzZXQgaW4gdGhpcyBzZXJ2ZXI6ICclcycAQSByZXF1ZXN0IHRvIGZvcmNlIGEgbmV3IGdyb3VwIG1lbWJlcnNoaXAgd2FzIGlzc3VlZCB3aGVuIHRoZSBtZW1iZXIgaXMgbGVhdmluZyB0aGUgZ3JvdXAuAFRyaWdnZXIgJXMuJXMgZm9yIHRhYmxlICVzLiVzIGlzIGxpc3RlZCBpbiB3cm9uZyBvcmRlci4gUGxlYXNlIGRyb3AgYW5kIHJlY3JlYXRlIGFsbCB0cmlnZ2VycyBmb3IgdGhlIHRhYmxlLgAlcwBTcGVjaWFsIGhhbmRsaW5nIGZvciBncm91cCBzZWFyY2gsIHtHQX0gbm90IGZvdW5kAFVzZXIgZ3JvdXAgcmV0cmlldmFsOiBVc2VyIG9iamVjdCBoYXMgZ3JvdXAgaW5mb3JtYXRpb24AR3JvdXAgaW5mb3JtYXRpb24gZm91bmQgaW4gbXVsdGlwbGUgdXNlciBvYmplY3RzLiBTZWFyY2ggZmlsdGVyIGNvbmZpZ3VyYXRpb24gaXMgaW5jb3JyZWN0LgBVc2VyIGdyb3VwIHJldHJpZXZhbDogbm8gZ3JvdXAgYXR0cmlidXRlIGZvdW5kLiBJbmNvcnJlY3QgZ3JvdXAgc2VhcmNoIGF0dHJpYnV0ZS4gAFVzZXIgZ3JvdXAgcmV0cmlldmFsOiBHcm91cCBhdHRyaWJ1dGUgdmFsdWVzIGlzIE5VTEwuIABVc2VyIGdyb3VwIHJldHJpZXZhbDogcGFyc2luZyBETiBmYWlsZWQuIABVc2VyIGdyb3VwIHJldHJpZXZhbDogR3JvdXAgb2JqZWN0IGhhcyB1c2VyIGluZm9ybWF0aW9uAFJlc2VydmVkIHBvcnQgZm9yIGxkYXBzIHVzaW5nIGxkYXBzAEdldCB1c2VyIHByb3h5AEdldCB1c2VyIHByb3h5OiBVc2VyIGRvZXNuJ3QgYmVsb25ncyB0byBhbnkgZ3JvdXAsIHVzZXIgbmFtZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYXV0aGVudGljYXRlZCB1c2VyLgBHZXQgdXNlciBwcm94eTogY29uZmlndXJlZCBtYXBwaW5nIGluZm86ICVzAEdldCB1c2VyIHByb3h5OiBVc2VyIGRvZXNuJ3QgaGF2ZSBncm91cCBtYXBwaW5nIGluZm9ybWF0aW9uLCBGaXJzdCBMREFQIGdyb3VwIHdpbGwgYmUgdHJlYXRlZCBhcyBhdXRoZW50aWNhdGVkIHVzZXIuAFByb2Nlc3MgZ3JvdXAgcHJveHkgbWFwcGluZwBDaGVjayBkZWxpbWl0ZXIgYWZ0ZXIgcXVvdGUAUHJvY2Vzc2luZyBkZWxpbWl0ZXIAUHJvY2Vzc2luZyBkZWxpbWl0ZXIsIHNlcGFyYXRvciA9IG5vdCBmb3VuZCwgcmVzZXR0aW5nIHBvc2l0aW9uAFByb2Nlc3NpbmcgZGVsaW1pdGVyLCBmYWlsZWQgdG8gZ2V0IGRhdGEgZm9yID0gc2VwYXJhdG9yIHRyeSBmb3Igc2VwYXJhdG9yICwuAFByb2Nlc3NpbmcgZGVsaW1pdGVyLCBzZXBhcmF0b3IgLCBub3QgZm91bmQsIHJlc2V0dGluZyBwb3NpdGlvbgBQcm9jZXNzaW5nIGRlbGltaXRlcjogTm8gbWFwcGluZyBzZXBhcmF0b3IgaXMgZm91bmQsIGVuZCBvZiBncm91cCBpbmZvcm1hdGlvbgBHZXR0aW5nIG5leHQgbWFwcGluZyBpbmZvcm1hdGlvbgBQYXJzaW5nIG1hcHBpbmcsIGN1cnJlbnQgc3RhdGU6ICVkICBkZWxpbWl0ZXIgY2hhcjogJWMgAFBhcnNpbmcgbWFwcGluZyBpbmZvLCBMREFQIGdyb3VwOiAlcyBNeVNRTCBwcm94eTogJXMATWFwcGluZyBwYXJzaW5nIGVycm9yAFRyaW1taW5nIGxlZnQgc3BhY2VzAENoZWNraW5nIGlmIGN1cnJlbnQgY2hhcmFjdGVycyBpcyBxdW90ZQBOb3QgZGVzaXJlZCBzdGF0ZSBvciB1bi1kZWZpbmVkIHN0YXRlcy4ASW52YWxpZCB2YWx1ZSBmb3IgbmFtZWRfcGlwZV9mdWxsX2FjY2Vzc19ncm91cC4AUmV0cnkgdGhlIHN0YXRlbWVudCB1c2luZyBhIHNlY29uZGFyeSBzdG9yYWdlIGVuZ2luZS4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkAENhbm5vdCBzZXQgbWFuZGF0b3J5X3JvbGVzOiBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGhhcyAnJXMnIHByaXZpbGVnZS4AVW5hYmxlIHRvIHJlY292ZXIgYmluYXJ5IGxvZyBtYXN0ZXIga2V5LCB0aGUgY29tYmluYXRpb24gb2YgbmV3X21hc3Rlcl9rZXlfc2Vxbm89JXUsIG1hc3Rlcl9rZXlfc2Vxbm89JXUgYW5kIG9sZF9tYXN0ZXJfa2V5X3NlcW5vPSV1IGFyZSB3cm9uZy4ARmFpbGVkIHRvIHJlbW92ZSBhdXhpbGlhcnkgYmluYXJ5IGxvZyBlbmNyeXB0aW9uIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4gVGhlIGNsZWFudXAgb2YgdGhlIGJpbmFyeSBsb2cgbWFzdGVyIGtleSByb3RhdGlvbiBwcm9jZXNzIGRpZCBub3QgZmluaXNoIGFzIGV4cGVjdGVkIGFuZCB0aGUgY2xlYW51cCB3aWxsIHRha2UgcGxhY2UgdXBvbiBzZXJ2ZXIgcmVzdGFydCBvciBuZXh0ICdBTFRFUiBJTlNUQU5DRSBST1RBVEUgQklOTE9HIE1BU1RFUiBLRVknIGV4ZWN1dGlvbi4AQXV0aElkIGAlLjY0c2BAYCUuNjRzYCBpcyBzZXQgYXMgbWFuZGF0b3J5X3JvbGVzLiBDYW5ub3QgZ3JhbnQgdGhlICclcycgcHJpdmlsZWdlLgAnJXMnIHByaXZpbGVnZSBmb3IgZGF0YWJhc2UgJyVzJyBleGlzdHMgYm90aCBhcyBwYXJ0aWFsIHJldm9rZSBhbmQgbXlzcWwuZGIgc2ltdWx0YW5lb3VzbHkuIEl0IGNvdWxkIG1lYW4gJ215c3FsJyBzY2hlbWEgaXMgY29ycnVwdGVkLgBBY2Nlc3MgZGVuaWVkIGZvciBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIHRvIGRhdGFiYXNlICclLS4xOTJzJy4AQXQgbGVhc3Qgb25lIHBhcnRpYWwgcmV2b2tlIGV4aXN0cyBvbiBhIGRhdGFiYXNlLiBUaGUgc3lzdGVtIHZhcmlhYmxlICdAQHBhcnRpYWxfcmV2b2tlcycgbXVzdCBiZSBzZXQgdG8gT04uAEF0IGxlYXN0IG9uZSBwYXJ0aWFsIHJldm9rZSBleGlzdHMgb24gYSBkYXRhYmFzZS4gVHVybmluZyBPTiB0aGUgc3lzdGVtIHZhcmlhYmxlICdAQHBhcnRpYWxfcmV2b2tlcycuAEZvciB1c2VyICclcydAJyVzJywgb25lIG9yIG1vcmUgcHJpdmlsZWdlcyBncmFudGVkIHRocm91Z2ggbXlzcWwuZGIgZm9yIGRhdGFiYXNlICclcycsIGNvbmZsaWN0IHdpdGggcGFydGlhbCByZXZva2UuIEl0IGNvdWxkIG1lYW4gJ215c3FsJyBzY2hlbWEgaXMgY29ycnVwdGVkLgBGb3IgdXNlciAlcywgaWdub3JlZCByZXN0cmljdGlvbnMgZm9yIHByaXZpbGVnZShzKSAnJXMnIGZvciBkYXRhYmFzZSAnJXMnIGFzIHRoZXNlIGFyZSBub3QgdmFsaWQgZGF0YWJhc2UgcHJpdmlsZWdlcy4ARm9yIHVzZXIgJXMsIGlnbm9yZWQgcmVzdHJpY3Rpb25zIGZvciBwcml2aWxlZ2UocykgJyVzJyBmb3IgZGF0YWJhc2UgJyVzJyBhcyBjb3JyZXNwb25kaW5nIGdsb2JhbCBwcml2aWxlZ2UocykgYXJlIG5vdCBncmFudGVkLgAnJXMnIGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIGdyb3VwX3JlcGxpY2F0aW9uX2NvbW11bmljYXRpb25fcHJvdG9jb2xfam9pbiwgcGxlYXNlIHVzZSBhIE15U1FMIHZlcnNpb24gYmV0d2VlbiA1LjcuMTQgYW5kIHRoaXMgc2VydmVyJ3MgdmVyc2lvbgBTdGFydGVkIGF1dG8tcmVqb2luIHByb2NlZHVyZSBhdHRlbXB0ICVsdSBvZiAlbHUAVGltZW91dCB3aGlsZSB3YWl0aW5nIGZvciBhIHZpZXcgY2hhbmdlIGV2ZW50IGR1cmluZyB0aGUgYXV0by1yZWpvaW4gcHJvY2VkdXJlAEF1dG8tcmVqb2luIHByb2NlZHVyZSBhdHRlbXB0ICVsdSBvZiAlbHUgZmluaXNoZWQuIE1lbWJlciB3YXMlcyBhYmxlIHRvIGpvaW4gdGhlIGdyb3VwLgBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGRlZmF1bHRfdGFibGVfZW5jcnlwdGlvbiBvcHRpb24gdmFsdWUgJyVkJyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVkJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AU2VydmVyIHNodXR0aW5nIGRvd24gYmVjYXVzZSB1cGdyYWRlIGlzIHJlcXVpcmVkLCB5ZXQgcHJvaGliaXRlZCBieSB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiAnLS11cGdyYWRlPU5PTkUnLgBTZXJ2ZXIgdXBncmFkZSBpcyByZXF1aXJlZCwgYnV0IHNraXBwZWQgYnkgY29tbWFuZCBsaW5lIG9wdGlvbiAnLS11cGdyYWRlPU1JTklNQUwnLgBTZXJ2ZXIgdXBncmFkZSBzdGFydGVkIHdpdGggdmVyc2lvbiAlZCwgYnV0IHNlcnZlciB1cGdyYWRlIG9mIHZlcnNpb24gJWQgaXMgc3RpbGwgcGVuZGluZy4ARmFpbGVkIHRvIHVwZ3JhZGUgc2VydmVyLgBTZXJ2ZXIgdXBncmFkZSBmcm9tICclZCcgdG8gJyVkJyAlcy4AVGFibGUgJyVzJyByZXF1aXJlcyByZXBhaXIuAFRhYmxlICclcycgcmVwYWlyICVzLgBDb3VsZCBub3Qgb3BlbiBzZXJ2ZXIgdXBncmFkZSBpbmZvIGZpbGUgJyVzJyBmb3Igd3JpdGluZy4gUGxlYXNlIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyB3cml0YWJsZS4AVXBncmFkaW5nIHRoZSBzeXMgc2NoZW1hLgBSdW5uaW5nIHF1ZXJpZXMgdG8gdXBncmFkZSBNeVNRTCBzZXJ2ZXIuAFVwZ3JhZGluZyBzeXN0ZW0gdGFibGUgZGF0YS4ARm91bmQgZW1wdHkgc3lzIGRhdGFiYXNlLiBJbnN0YWxsaW5nIHRoZSBzeXMgc2NoZW1hLgBBIHN5cyBzY2hlbWEgZXhpc3RzIHdpdGggbm8gc3lzLnZlcnNpb24gdmlldy4gSWYgeW91IGhhdmUgYSB1c2VyIGNyZWF0ZWQgc3lzIHNjaGVtYSwgdGhpcyBtdXN0IGJlIHJlbmFtZWQgZm9yIHRoZSB1cGdyYWRlIHRvIHN1Y2NlZWQuAEEgc3lzIHNjaGVtYSBleGlzdHMgd2l0aCBhIHN5cy52ZXJzaW9uIHZpZXcsIGJ1dCBpdCByZXR1cm5zIG5vIHJlc3VsdHMuAEZvdW5kIG91dGRhdGVkIHN5cyBzY2hlbWEgdmVyc2lvbiAlcy4AVGhlIHN5cyBzY2hlbWEgaXMgYWxyZWFkeSB1cCB0byBkYXRlICh2ZXJzaW9uICVzKS4ARm91bmQgJWQgc3lzICVzLCBidXQgZXhwZWN0ZWQgJWQuIFJlLWluc3RhbGxpbmcgdGhlIHN5cyBzY2hlbWEuAENoZWNraW5nICclcycgc2NoZW1hLgBUb28gbWFueSBjb25jdXJyZW50IHRyYW5zYWN0aW9ucyB3aGlsZSBjbGVhcmluZyB0aGUgRERMIExvZy4gUGxlYXNlIGluY3JlYXNlIHRoZSBudW1iZXIgb2YgUm9sbGJhY2sgU2VnbWVudHMuAEVycm9yIGluIERETCBMb2cgcmVjb3ZlcnkgZHVyaW5nIFBvc3QtUmVjb3ZlcnkgcHJvY2Vzc2luZy4ARXJyb3IgaW4gUG9zdC1UYWJsZXNwYWNlLUVuY3J5cHRpb24gZHVyaW5nIFBvc3QtUmVjb3ZlcnkgcHJvY2Vzc2luZy4ARXJyb3IgaW4gRExMIExvZyBjbGVhbnVwIGR1cmluZyBQb3N0LURETCBwcm9jZXNzaW5nLgAnJXMnIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgc3lzdGVtIGZ1bmN0aW9uIHRoYXQgbWF5IHJldHVybiBhIGRpZmZlcmVudCB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AVXBncmFkZSBvZiBoZWxwIHRhYmxlcyAlcy4ARXJyb3Igd2hlbiB3YWl0aW5nIGZvciB0aGUgc2VydmVyIHRvIGV4ZWN1dGUgbG9jYWwgdHJhbnNhY3Rpb25zIGluIG9yZGVyIGFzc3VyZSB0aGUgZ3JvdXAgY2hhbmdlIHByb3BlciBsb2dnaW5nAFVuYWJsZSB0byBsb2cgdGhlIGdyb3VwIGNoYW5nZSBWaWV3IGxvZyBldmVudCBpbiBpdHMgZXhhY3Rpb24gcG9zaXRpb24gaW4gdGhlIGxvZy4gVGhpcyB3aWxsIG5vdCBob3dldmVyIGFmZmVjdCB0aGUgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgcHJvY2VzcyBvciB0aGUgb3ZlcmFsbCBwbHVnaW4gcHJvY2Vzcy4AQ2Fubm90IGdyYW50IHJvbGVzIHRvIGFuIGFub255bW91cyB1c2VyLgBVbmFibGUgdG8gY3JlYXRlIGEgbmV3IGJpbmxvZyBmaWxlOiBUYWJsZSBgbXlzcWwuZ3RpZF9leGVjdXRlZGAgY291bGRuJ3QgYmUgb3BlbmVkLiAlcwBOZXR3b3JrIE5hbWVzcGFjZXMgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtAFVua25vd24gbmV0d29yayBuYW1lc3BhY2UgJyVzJwBOZXR3b3JrIG5hbWVzcGFjZSBub3QgYWxsb3dlZCBmb3Igd2lsZGNhcmQgaW50ZXJmYWNlIGFkZHJlc3MAc2V0bnMoKSBmYWlsZWQgd2l0aCBlcnJvciAnJXMnAFdpbGRjYXJkIGFkZHJlc3MgdmFsdWUgbm90IGFsbG93ZWQgZm9yIG11bHRpdmFsdWVkIGJpbmQgYWRkcmVzcwBUaGUgcGF0aCB0byBhIHNwZWNpYWwgbmV0d29yayBuYW1lc3BhY2UgZmlsZSBpcyB0b28gbG9uZy4gKGdvdCAldSA+IG1heCAldSkAQ2Fubm90IGNyZWF0ZSB0YWJsZXNwYWNlICclcycuIFRoZSBmaWxlcGF0aCBpcyB0b28gbG9uZyBmb3IgdGhpcyBPUy4AVGhlIGxhc3QgYmxvY2sgb2YgcmVkbyBoYWQgY29ycnVwdGVkIGZpcnN0X3JlY19ncm91cCBhbmQgYmVjYW1lIGZpeGVkICgldSAtPiAldSkuAERhdGEgZGljdGlvbmFyeSB1cGdyYWRlIGZyb20gdmVyc2lvbiAnJXUnIHRvICcldScgY29tcGxldGVkLgBTZXJ2ZXIgU1NMIGNlcnRpZmljYXRlIGRvZXNuJ3QgdmVyaWZ5OiAlcwBUcnVuY2F0ZWQgYSB1c2VyIG5hbWUgZm9yICVzIHRoYXQgd2FzIHRvbyBsb25nIHdoaWxlIHJlYWRpbmcgdGhlIHBlcnNpc3RlZCB2YXJpYWJsZXMgZmlsZQBUcnVuY2F0ZWQgYSBob3N0IG5hbWUgZm9yICVzIHRoYXQgd2FzIHRvbyBsb25nIHdoaWxlIHJlYWRpbmcgdGhlIHBlcnNpc3RlZCB2YXJpYWJsZXMgZmlsZQBUaGUgd2FpdF90aW1lb3V0IHBlcmlvZCB3YXMgZXhjZWVkZWQsIHRoZSBpZGxlIHRpbWUgc2luY2UgbGFzdCBjb21tYW5kIHdhcyB0b28gbG9uZy4AJyVzJyBmb3VuZCBub3QgZW5jcnlwdGVkIHdoaWxlICclcycgaXMgT04uIFRyeWluZyB0byBlbmNyeXB0IGl0IG5vdy4AQ0xPQ0tfTU9OT1RPTklDIGlzIHVuc3VwcG9ydGVkLCBzbyBkbyBub3QgY2hhbmdlIHRoZSBzeXN0ZW0gdGltZSB3aGVuIE15U1FMIGlzIHJ1bm5pbmcgIQBjbG9ja19nZXR0aW1lKCkgZmFpbGVkOiAlcwBQbHVnaW4gJyVzJyBpcyBub3QgdG8gYmUgdXNlZCBhcyBhbiAiZWFybHkiIHBsdWdpbi4gRG9uJ3QgYWRkIGl0IHRvIC0tZWFybHktcGx1Z2luLWxvYWQsIGtleXJpbmcgbWlncmF0aW9uIGV0Yy4AUGx1Z2luICclcycgaXMgbWFya2VkIGFzIG5vdCBkeW5hbWljYWxseSBpbnN0YWxsYWJsZS4gWW91IGhhdmUgdG8gc3RvcCB0aGUgc2VydmVyIHRvIGluc3RhbGwgaXQuAFNRTF9DQUxDX0ZPVU5EX1JPV1MgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIHR3byBzZXBhcmF0ZSBxdWVyaWVzIGluc3RlYWQuAEZPVU5EX1JPV1MoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgQ09VTlQoKikgaW5zdGVhZC4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCBpbnZva2VzIGEgdHJpZ2dlciBvciBhIHN0b3JlZCBmdW5jdGlvbiB0aGF0IG1vZGlmaWVzIGEgdGFibGUgdGhhdCBoYXMgYSBjb2x1bW4gd2l0aCBhIERFRkFVTFQgZXhwcmVzc2lvbiB0aGF0IG1heSByZXR1cm4gYSBkaWZmZXJlbnQgdmFsdWUgb24gdGhlIHJlcGxpY2EuAE1lbWJlciB2ZXJzaW9uIGlzIHJlYWQgY29tcGF0aWJsZSB3aXRoIHRoZSBncm91cC4ATG9jayBvcmRlciBkaXNhYmxlZCAocmVhc29uOiBpbml0IGZhaWxlZCkuAEtleXJpbmcgSUQgdGltZXN0YW1wIHZhbHVlIGlzIGludmFsaWQ6ICclcycAQ2Fubm90IHByb2Nlc3MgYXVkaXQgbG9nIGZpbGUuIEZpbGUgbmFtZSB0aW1lc3RhbXAgdmFsdWUgaXMgbWlzc2luZyBvciBpbnZhbGlkOiAnJXMnAENhbm5vdCBwcm9jZXNzIGF1ZGl0IGxvZyBmaWxlLiBGaWxlIG5hbWUgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBmb3JtYXQ6ICclcycAQ2Fubm90IHByb2Nlc3MgYXVkaXQgbG9nIGZpbGUuIEZpbGUgbmFtZSBrZXlyaW5nIElEIHZhbHVlIGlzIG1pc3Npbmc6ICclcycAQXVkaXQgbG9nIGZpbGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZDogJyVzJwBDb3VsZCBub3Qgb3BlbiBhdWRpdCBsb2cgZmlsZSBmb3IgcmVhZGluZzogJyVzJwBJbnZhbGlkIGF1ZGl0IGxvZyBmaWxlIGNvbnRlbnQ6ICclcycAQ2Fubm90IHJlYWQgcGFzc3dvcmQ6ICclLjMycycuAENhbm5vdCBzdG9yZSBwYXNzd29yZDogJyUuMzJzJy4AQ2Fubm90IHJlbW92ZSBwYXNzd29yZDogJyUuMzJzJy4AJ2F1ZGl0X2xvZycgcGFzc3dvcmQgaGFzIGJlZW4gY29waWVkIGludG8gJyUuMzJzJyBhbmQgd2lsbCBiZSByZW1vdmVkIHdpdGggZmlyc3QgcHVyZ2VkIHBhc3N3b3JkLgBSZXF1ZXN0IGlnbm9yZWQgZm9yICclLjY0cydAJyUuNjRzJy4gUm9sZSBuZWVkZWQgdG8gcGVyZm9ybSBvcGVyYXRpb246ICclLjMycycAQ2FuJ3Qgc3RvcmUgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGluIGEgc2NhbGFyIGtleSBwYXJ0IG9mIHRoZSBpbmRleCAnJS4xOTJzJwBDYW5ub3QgdXNlIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycgZHVlIHRvIHR5cGUgb3IgY29sbGF0aW9uIGNvbnZlcnNpb24ARXhjZWVkZWQgbWF4IG51bWJlciBvZiB2YWx1ZXMgcGVyIHJlY29yZCBmb3IgbXVsdGktdmFsdWVkIGluZGV4ICclLS42NHMnIGJ5ICV1IHZhbHVlKHMpAEV4Y2VlZGVkIG1heCB0b3RhbCBsZW5ndGggb2YgdmFsdWVzIHBlciByZWNvcmQgZm9yIG11bHRpLXZhbHVlZCBpbmRleCAnJS0uNjRzJyBieSAldSBieXRlcwBEYXRhIHRvbyBsb25nIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnAEludmFsaWQgSlNPTiB2YWx1ZSBmb3IgQ0FTVCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJwBPdXQgb2YgcmFuZ2UgSlNPTiB2YWx1ZSBmb3IgQ0FTVCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJwBFbXB0eSB1c2VyIGRuIG9yIHBhc3N3b3JkIGlzIG5vdCBhbGxvd2VkLCBub3QgYXR0ZW1wdGluZyBMREFQIGJpbmQuAEdyb3VwaW5nIG9uIHRlbXBvcmFsIGlzIG5vbi1kZXRlcm1pbmlzdGljIGZvciB0aW1lem9uZXMgaGF2aW5nIERTVC4gUGxlYXNlIGNvbnNpZGVyIHN3aXRjaGluZyB0byBVVEMgZm9yIHRoaXMgcXVlcnkuAFRoZSBjdXJyZW50IGxheW91dCBvZiB0aGUgQUNMIHRhYmxlcyBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBzZXJ2ZXIncyBleHBlY3RlZCBsYXlvdXQuIFRoZXkncmUgZWl0aGVyIGFsdGVyZWQsIG1pc3Npbmcgb3Igbm90IHVwZ3JhZGVkIGZyb20gYSBwcmV2aW91cyB2ZXJzaW9uLiBIb3dldmVyIGEgYmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZWFkIGRhdGEgZnJvbSB0aGVzZSB0YWJsZXMgd2lsbCBzdGlsbCBiZSBtYWRlLgBMT0NLX09SREVSOiBGYWlsZWQgdG8gd3JpdGUgdG8gZmlsZSA8JXM+LgBMT0NLX09SREVSOiBGYWlsZWQgdG8gcmVhZCBmcm9tIGZpbGUgPCVzPi4ATE9DS19PUkRFUiBtZXNzYWdlOiAlcwBMb2NrIG9yZGVyIGRlcGVuZGVuY2llcyBmaWxlIDwlcz4gKCVkOiVkKSAtICglZDolZCkgOiAlcwBMb2NrIG9yZGVyIHNjYW5uZXI6ICglZDolZCkgLSAoJWQ6JWQpIDogJXMAVGhlIG5ld2x5IGNyZWF0ZWQgZGF0YSBkaXJlY3RvcnkgJXMgYnkgLS1pbml0aWFsaXplIGlzIHVudXNhYmxlLiBZb3UgY2FuIHJlbW92ZSBpdC4ATm8uIG9mIEItdHJlZSBsZXZlbCBjcmVhdGVkIGZvciBpbmRleCAlcyBoYXMgY3Jvc3NlZCB0aGUgcGVybWlzc2libGUgbGltaXQuIElmIGRlYnVnIG9wdGlvbiBpbm5vZGJfbGltaXRfb3B0aW1pc3RpY19pbnNlcnRfZGVidWcgaXMgYmVpbmcgdXNlZCB0cnkgdHdlYWtpbmcgaXQgdG8gaW5jbHVkZSBtb3JlIHJlY29yZHMgaW4gYSBwYWdlLgAlcwAlcwAlcwBDbG9uZSByZW1vdmluZyBhbGwgdXNlciBkYXRhIGZvciBwcm92aXNpb25pbmc6ICVzAE5vbiBpbm5vZGIgdGFibGU6ICVzLiVzIGlzIG5vdCBjbG9uZWQgYW5kIGlzIGVtcHR5LgBDbG9uZSBzaHV0dGluZyBkb3duIHNlcnZlciBhcyBSRVNUQVJUIGZhaWxlZC4gUGxlYXNlIHN0YXJ0IHNlcnZlciB0byBjb21wbGV0ZSBjbG9uZSBvcGVyYXRpb24uAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciBHVElEIHB1cmdlZCBzZXQuIE9wZXJhdGlvbnMgYW5kIGNoZWNrcyBtYWRlIHRvIGdyb3VwIGpvaW5lcnMgbWF5IGJlIGluY29tcGxldGUuAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIGNvbmZpZ3VyaW5nIHRoZSByZW1vdGUgY2xvbmluZyBwcm9jZXNzOiAlcwBUaGVyZSB3YXMgYW4gaXNzdWUgd2hlbiBjbG9uaW5nIGZyb20gYW5vdGhlciBzZXJ2ZXI6ICVzAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIHRyeWluZyB0byBldmFsdWF0ZSB0aGUgYmVzdCBkaXN0cmlidXRlZCByZWNvdmVyeSBzdHJhdGVneSB3aGlsZSBqb2luaW5nLiVzAE5vIHZhbGlkIG9yIE9OTElORSBtZW1iZXJzIGV4aXN0IHRvIGdldCB0aGUgbWlzc2luZyBkYXRhIGZyb20gdGhlIGdyb3VwLiBGb3IgY2xvbmluZyBjaGVjayBpZiBkb25vcnMgb2YgdGhlIHNhbWUgdmVyc2lvbiBhbmQgd2l0aCBjbG9uZSBwbHVnaW4gaW5zdGFsbGVkIGV4aXN0LiBGb3IgaW5jcmVtZW50YWwgcmVjb3ZlcnkgY2hlY2sgaWYgeW91IGhhdmUgZG9ub3JzIHdoZXJlIHRoZSByZXF1aXJlZCBkYXRhIHdhcyBub3QgcHVyZ2VkIGZyb20gdGhlIGJpbmFyeSBsb2dzLgBUaGUgZ3JvdXAgcmVwbGljYXRpb24gcGx1Z2luIGNvdWxkIG5vdCBraWxsIHRoZSBwbHVnaW4gcm91dGluZSBmb3IgJXMuICVzAFRoaXMgbWVtYmVyIHdpbGwgc3RhcnQgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgdXNpbmcgY2xvbmUuIEl0IGlzIGR1ZSB0byB0aGUgbnVtYmVyIG9mIG1pc3NpbmcgdHJhbnNhY3Rpb25zIGJlaW5nIGhpZ2hlciB0aGFuIHRoZSBjb25maWd1cmVkIHRocmVzaG9sZCBvZiAlbGx1LgBUaGlzIG1lbWJlciB3aWxsIHN0YXJ0IGRpc3RyaWJ1dGVkIHJlY292ZXJ5IHVzaW5nIGNsb25lLiBJdCBpcyBkdWUgdG8gbm8gT05MSU5FIG1lbWJlciBoYXMgdGhlIG1pc3NpbmcgZGF0YSBmb3IgcmVjb3ZlcmluZyBpbiBpdHMgYmluYXJ5IGxvZ3MuAERpc3RyaWJ1dGVkIHJlY292ZXJ5IHdpbGwgdHJhbnNmZXIgZGF0YSB1c2luZzogJXMARHVlIHRvIHNvbWUgaXNzdWUgb24gdGhlIHByZXZpb3VzIHN0ZXAgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgaXMgbm93IGV4ZWN1dGluZzogJXMARHVlIHRvIGEgY3JpdGljYWwgY2xvbmluZyBlcnJvciBvciBsYWNrIG9mIGRvbm9ycywgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgY2Fubm90IGJlIGV4ZWN1dGVkLiBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4AVGhlICclcycgdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyB3aWxsIGVycm9yIG91dCBhcyB0aGUgc2VydmVyIHdpbGwgYXR0ZW1wdCB0byBjbG9uZSBhbm90aGVyIHNlcnZlcgBVbmtub3duIHRhYmxlICclLS4xMjlzJwBMb25nIGRhdGFiYXNlIG5hbWUgYW5kIGlkZW50aWZpZXIgZm9yIG9iamVjdCByZXN1bHRlZCBpbiBwYXRoIGxlbmd0aCBleGNlZWRpbmcgJWQgY2hhcmFjdGVycy4gUGF0aDogJyVzJy4AWEE6IEZhaWxlZCB0byB0YWtlIE1ETCBMb2NrIGJhY2t1cCBvZiBQUkVQQVJFRCBYQSB0cmFuc2FjdGlvbiBkdXJpbmcgY2xpZW50IGRpc2Nvbm5lY3QuAFNVUEVSIHByaXZpbGVnZSBvciBBVURJVF9BRE1JTiByb2xlIHJlcXVpcmVkIGZvciAnJXMnQCclcycgdXNlci4ASW52YWxpZCBhcmd1bWVudCB0eXBlAEludmFsaWQgYXJndW1lbnQgY291bnQAYXVkaXRfbG9nIHBsdWdpbiBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHVzaW5nIElOU1RBTEwgUExVR0lOIHN5bnRheC4ASW52YWxpZCAibWF4X2FycmF5X2xlbmd0aCIgYXJndW1lbnQgdHlwZS4ARmFpbGVkIHRvIHdyaXRlIHRvICVzOiAlcyAoJXMpAFVwZ3JhZGluZyBmcm9tIHNlcnZlciB2ZXJzaW9uICVkIHdpdGggcGFydGl0aW9uZWQgdGFibGVzIGFuZCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID09IDEgb24gYSBjYXNlIHNlbnNpdGl2ZSBmaWxlIHN5c3RlbSBtYXkgY2F1c2UgaXNzdWVzLCBhbmQgaXMgdGhlcmVmb3JlIHByb2hpYml0ZWQuIFRvIHVwZ3JhZGUgYW55d2F5LCByZXN0YXJ0IHRoZSBuZXcgc2VydmVyIHZlcnNpb24gd2l0aCB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiAndXBncmFkZT1GT1JDRScuIFdoZW4gdXBncmFkZSBpcyBjb21wbGV0ZWQsIHBsZWFzZSBleGVjdXRlICdSRU5BTUUgVEFCTEUgPHBhcnRfdGFibGVfbmFtZT4gVE8gPG5ld190YWJsZV9uYW1lPjsgUkVOQU1FIFRBQkxFIDxuZXdfdGFibGVfbmFtZT4gVE8gPHBhcnRfdGFibGVfbmFtZT47JyBmb3IgZWFjaCBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGVzLiBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgBJbmNvcnJlY3QgZW52aXJvbm1lbnQgdmFyaWFibGUgJXMsIGludmFsaWQgcG9ydDogJXMAVGhlIHNlcnZlciB3YXMgYXV0b21hdGljYWxseSBzZXQgaW50byBvZmZsaW5lIG1vZGUgYWZ0ZXIgYW4gZXJyb3Igd2FzIGRldGVjdGVkLgBBIG1lc3NhZ2Ugc2VudCB0aHJvdWdoIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBtZXNzYWdlIGRlbGl2ZXIgc2VydmljZSB3YXMgbm90IGRlbGl2ZXJlZCBzdWNjZXNzZnVsbHkuIFRoZSBzZXJ2ZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLiBUcnkgdG8gYWRkIHRoZSBzZXJ2ZXIgYmFjayB0byB0aGUgZ3JvdXAgYW5kIGNoZWNrIGlmIHRoZSBwcm9ibGVtIHBlcnNpc3RzLCBvciBjaGVjayBwcmV2aW91cyBtZXNzYWdlcyBpbiB0aGUgbG9nIGZvciBoaW50cyBvZiB3aGF0IGNvdWxkIGJlIHRoZSBwcm9ibGVtLgBJbnZhbGlkIFNPVVJDRV9DT01QUkVTU0lPTl9BTEdPUklUSE1TICclLjE5MnMnIGZvdW5kIGluIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFJlc2V0dGluZyB0byAndW5jb21wcmVzc2VkJyAobm8gY29tcHJlc3Npb24pLgBJbnZhbGlkIFNPVVJDRV9aU1REX0NPTVBSRVNTSU9OX0xFVkVMIGZvdW5kIGluIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFJlc2V0dGluZyB0byAldS4AT3B0aW9uIC0tcHJvdG9jb2wtY29tcHJlc3Npb24tYWxnb3JpdGhtcyBpcyByZXNldCB0byBkZWZhdWx0IHZhbHVlLgBGYXRhbCBlcnJvciB3aGlsZSBjb21wcmVzc2luZyBvdXRnb2luZyBkYXRhIC0gJXMAJXMAVW5rbm93biBrZXlyaW5nX2F3c19yZWdpb24gJyUuMTkycycuIENvbm5lY3Rpb24gdG8gQVdTIEtNUyBtYXkgZmFpbC4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCwgYnV0IHRoaXMgaXMgbm90IGFuIGV4aXN0aW5nIHVzZXIuIENvcnJlY3QgdGhpcyBiZWZvcmUgc3RhcnRpbmcgcmVwbGljYXRpb24gdGhyZWFkcy4ASW52YWxpZCwgY29ycnVwdGVkIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiB3YXMgZm91bmQgaW4gdGhlIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcmVwb3NpdG9yeSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4gVXNlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gUFJJVklMRUdFX0NIRUNLU19VU0VSIHRvIGNvcnJlY3QgdGhlIGNvbmZpZ3VyYXRpb24uAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgc2V0IHRvIGAlLjY0c2BAYCUuMjU1c2AsIGJ1dCB0aGlzIHVzZXIgZG9lcyBub3QgaGF2ZSBSRVBMSUNBVElPTl9BUFBMSUVSIHByaXZpbGVnZS4gQ29ycmVjdCB0aGlzIGJlZm9yZSBzdGFydGluZyB0aGUgcmVwbGljYXRpb24gdGhyZWFkcy4AVGhlIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3b3VsZCBuZWVkIEZJTEUgcHJpdmlsZWdlIHRvIGV4ZWN1dGUgYSBMT0FEIERBVEEgSU5GSUxFIHN0YXRlbWVudCByZXBsaWNhdGVkIGluIHN0YXRlbWVudCBmb3JtYXQuIENvbnNpZGVyIHVzaW5nIGJpbmxvZ19mb3JtYXQ9Uk9XIG9uIHNvdXJjZS4gSWYgdGhlIHJlcGxpY2F0ZWQgZXZlbnRzIGFyZSB0cnVzdGVkLCByZWNvdmVyIGZyb20gdGhlIGZhaWx1cmUgYnkgdGVtcG9yYXJpbHkgZ3JhbnRpbmcgRklMRSB0byB0aGUgUFJJVklMRUdFX0NIRUNLU19VU0VSLgBSZXBsaWNhIFNRTCB0aHJlYWQlcyBpbml0aWFsaXplZCwgc3RhcnRpbmcgcmVwbGljYXRpb24gaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMsIHJlbGF5IGxvZyAnJXMnIHBvc2l0aW9uOiAlcywgdXNlcjogJyUuNjRzJ0AnJS4yNTVzJywgcm9sZXM6ICUuNTEycwBDYW5ub3QgZ2VuZXJhdGUgcGFzc3dvcmQ6ICclLjMycycARmFpbGVkIHRvIGdlbmVyYXRlIGEgcmFuZG9tIHBhc3N3b3JkIGZvciByb290LiBQcm9iYWJhYmx5IG5vdCBlbm91Z2ggZW50aHJvcHkuAElnbm9yaW5nIC0tcGx1Z2luLWxvYWRbX2FkZF0gbGlzdCBhcyB0aGUgc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCAtLWluaXRpYWxpemUoLWluc2VjdXJlKS4AQ2Fubm90IHNldCBtYW5kYXRvcnlfcm9sZXM6IEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaGFzICclcycgcHJpdmlsZWdlLiBBdXRoSWQocykgc2V0IGluIHRoZSBtYW5kYXRvcnlfcm9sZXMgYXJlIGlnbm9yZWQuAERpcmVjdG9yeSAnJXMnIHdpbGwgbm90IGJlIHNjYW5uZWQgYmVjYXVzZSBpdCBpcyBhIGhpZGRlbiBkaXJlY3RvcnkuAFNlcnZlciB3YXMgbm90IGFibGUgdG8gZmluZCBhIHJvdGF0ZSBldmVudCBmcm9tIHNvdXJjZSBzZXJ2ZXIgdG8gaW5pdGlhbGl6ZSByZWxheSBsb2cgcmVjb3ZlcnkgZm9yIGNoYW5uZWwgJyVzJy4gU2tpcHBpbmcgcmVsYXkgbG9nIHJlY292ZXJ5IGZvciB0aGUgY2hhbm5lbC4AUm9sbGluZyBiYWNrIExPQiBmb3IgdHJhbnNhY3Rpb24gJWxsdSB1bmRvIG51bWJlciAlbGx1IDogY3VycmVudCBpbmRleCBsZW5ndGggJWxsdS4gKGl0ZXJhdGlvbiAlbGx1KQBFcnJvciBpbiBwcm9jZXNzaW5nIChwb3NzaWJseSBkZXByZWNhdGVkKSBleHByZXNzaW9uIG9yIGZ1bmN0aW9uICclLjEyOHMnIGZvciBnZW5lcmF0ZWQgY29sdW1uICUuNjRzLiUuNjRzLiUuNjRzAFRoZSBxdWV1ZSBldmVudCBmYWlsZWQgZm9yIGNoYW5uZWwgJyVzJyBhcyBhbiBpbnZhbGlkIGV2ZW50IGFjY29yZGluZyB0byBSRVFVSVJFX1JPV19GT1JNQVQgd2FzIGZvdW5kLgBUaGUgYXBwbGljYXRpb24gb2YgcmVsYXkgZXZlbnRzIGZhaWxlZCBmb3IgY2hhbm5lbCAnJXMnIGFzIGFuIGludmFsaWQgZXZlbnQgYWNjb3JkaW5nIHRvIFJFUVVJUkVfUk9XX0ZPUk1BVCB3YXMgZm91bmQuAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBjYW4ndCBiZSBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCB1bmxlc3MgUkVRVUlSRV9ST1dfRk9STUFUIGlzIGFsc28gc2V0IHRvICVkLgBBbiB1bmV4cGVjdGVkIGV2ZW50IHNlcXVlbmNlIHdhcyBkZXRlY3RlZCBieSB0aGUgU1FMIHRocmVhZCB3aGlsZSBhcHBseWluZyBhbiBldmVudC4AVXBkYXRpbmcgcGFydGl0aW9uIGZpbGUgbmFtZSAnJXMnIHRvICclcycgYW5kIGFsbCBvdGhlciBwYXJ0aXRpb24gZmlsZXMgZHVyaW5nIHVwZ3JhZGUAVXBkYXRpbmcgcGFydGl0aW9uIGZpbGUgbmFtZSAnJXMnIHRvICclcycgYW5kIGFsbCBvdGhlciBwYXJ0aXRpb24gZmlsZXMgZHVyaW5nIGRvd25ncmFkZQBVcGRhdGluZyBwYXJ0aXRpb24gZmlsZSBuYW1lICclcycgdG8gJyVzJyBmb3IgaW1wb3J0AFVuYWJsZSB0byBvcGVuIHBhcnRpdGlvbiBmaWxlIHdpdGggbmV3IG5hbWUgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGlubm9kYl9kaXJlY3RvcmllcyBpcyBzZXQgdG8gaW5jbHVkZSBhbGwgZXh0ZXJuYWwgZmlsZSBwYXRocwAlcyBERCBJRDogJWxsdSAtIFBhcnRpdGlvbiB0YWJsZXNwYWNlICV1LCBuYW1lICclcycgaXMgY29ycmVjdGVkIHRvICclcycAJXMgREQgSUQ6ICVsbHUgLSBUYWJsZXNwYWNlICV1LCBuYW1lICclcycsICclcycgaXMgbW92ZWQgdG8gJyVzJwAlcyBERCBJRDogJWxsdSAtIFBhcnRpdGlvbiB0YWJsZXNwYWNlICV1LCBuYW1lICclcycsICclcycgaXMgdXBkYXRlZCB0byAnJXMnACVzIFRvbyBtYW55IGZpbGVzIGhhdmUgYmVlbiBtb3ZlZCwgZGlzYWJsaW5nIGxvZ2dpbmcgb2YgZGV0YWlsZWQgbWVzc2FnZXMARWxlY3RlZCBwcmltYXJ5IG1lbWJlciAlczogJXMAU2NoZW1hIG5hbWUgJyVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycyBpcyBub3QgYWxsb3dlZCB3aXRoIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSAxLgBUYWJsZSBuYW1lICclcy4lcycgY29udGFpbmluZyB1cHBlciBjYXNlIGNoYXJhY3RlcnMgaXMgbm90IGFsbG93ZWQgd2l0aCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gMS4AU2NoZW1hIG5hbWUgJyVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycywgdXNlZCBieSBmb3JlaWduIGtleSAnJXMnIGluIHRhYmxlICclcy4lcycsIGlzIG5vdCBhbGxvd2VkIHdpdGggbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IDEuAFRhYmxlIG5hbWUgJyVzLiVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycywgdXNlZCBieSBmb3JlaWduIGtleSAnJXMnIGluIHRhYmxlICclcy4lcycsIGlzIG5vdCBhbGxvd2VkIHdpdGggbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IDEuAFRhYmxlIFBhcnRpdGlvbjogJXMgaXMgbm90IGZvdW5kIGluIElubm9EQiBkaWN0aW9uYXJ5AEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycuIEFjY291bnQgaXMgYmxvY2tlZCBmb3IgJXMgZGF5KHMpICglcyBkYXkocykgcmVtYWluaW5nKSBkdWUgdG8gJXUgY29uc2VjdXRpdmUgZmFpbGVkIGxvZ2lucy4gVXNlIEZMVVNIIFBSSVZJTEVHRVMgb3IgQUxURVIgVVNFUiB0byByZXNldC4AJXMAVXBncmFkZSBjYW5ub3QgcHJvY2VlZCBkdWUgdG8gYW4gZXhpc3RpbmcgcHJlcGFyZWQgWEEgdHJhbnNhY3Rpb24uAENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGtleV9pbmZvIHdoZW4gbWlncmF0aW5nIHRhYmxlICVzLiVzAEFwcGxpZXIgbWV0YWRhdGEgaW5mb3JtYXRpb24gZm9yIGNoYW5uZWwgJyVzJyB3YXMgZm91bmQgYWZ0ZXIgYSBjbG9uZSBvcGVyYXRpb24uIFJlbGF5IGxvZyByZWNvdmVyeSB3aWxsIGJlIGV4ZWN1dGVkIHRvIGFkanVzdCBwb3NpdGlvbnMgYW5kIGZpbGUgaW5mb3JtYXRpb24gZm9yIHRoaXMgbmV3IHNlcnZlci4gU2hvdWxkIHRoYXQgYXV0b21hdGljIHByb2NlZHVyZSBmYWlsIHBsZWFzZSBhZGp1c3QgdGhlIHBvc2l0aW9ucyB0aHJvdWdoICdDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPJwBGYWlsZWQgdG8gZGVsZXRlIDUuNyB1bmRvIHRhYmxlc3BhY2U6ICVzIGR1cmluZyB1cGdyYWRlAEVtcHR5IGRvdWJsZXdyaXRlIGZpbGU6ICVzAFVzaW5nICclcycgZm9yIGRvdWJsZXdyaXRlAEVycm9yIHJlYWRpbmcgZG91Ymxld3JpdGUgYnVmZmVyIGZyb20gdGhlIHN5c3RlbSB0YWJsZXNwYWNlAENhbm5vdCBjcmVhdGUgZG91Ymxld3JpdGUgYnVmZmVyOiB5b3UgbXVzdCBpbmNyZWFzZSB5b3VyIGJ1ZmZlciBwb29sIHNpemUuIENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uAFRoZSBwYWdlIGluIHRoZSBkb3VibGV3cml0ZSBmaWxlIGlzIGNvcnJ1cHQuIENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uIFlvdSBjYW4gdHJ5IHRvIHJlY292ZXIgdGhlIGRhdGFiYXNlIHdpdGggaW5ub2RiX2ZvcmNlX3JlY292ZXJ5PTYAVGhlIGRvdWJsZXdyaXRlIGZpbGVuYW1lICclcycgaXMgaW5jb3JyZWN0LgAlcwBEb3VibGV3cml0ZSBmaWxlIGNyZWF0ZSBmYWlsZWQ6ICVzAERCTFdSVGhyZWFkOiBwdGhyZWFkX3NldGFmZmluaXR5KCkgZmFpbGVkIQAlcwAlcwBEb3VibGV3cml0ZSBmaWxlIHJlYWQgZmFpbGVkOiAlcwBEdW1wIG9mIHRoZSBkYXRhIGZpbGUgcGFnZToAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMARG91Ymxld3JpdGUgbG9hZCBmaWxlICVzIHNpemUgJWxsdSBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgY29uZmlndXJlZCBwYWdlIHNpemUgJXp1AERvdWJsZXdyaXRlIGZpbGUgJXMgdHJ1bmNhdGUgZmFpbGVkAERvdWJsZXdyaXRlIGZpbGUgJXMgZmFpbGVkIHRvIHdyaXQgemVyb3MARG91Ymxld3JpdGUgb3BlbiBvciBjcmVhdGUgZmlsZSAlcyBzaXplICVsbHUgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGNvbmZpZ3VyZWQgcGFnZSBzaXplICV6dQAlcwAlcwAlcwAlcwAlcwBDb3VsZCBub3QgZmx1c2ggYWxsIEdUSURzIGR1cmluZyBzbG93IHNodXRkb3duLiBXaWxsIHJlY292ZXIgR1RJRHMgd2hlbiBzZXJ2ZXIgcmVzdGFydHMuAEZhaWxlZCB0byBkZWxldGUgNS43IHN0YXQgdGFibGVzcGFjZTogJXMgZHVyaW5nIHVwZ3JhZGUASW5zdGFsbGluZyBuZGJpbmZvIHNjaGVtYSB2ZXJzaW9uICVzAEluc3RhbGxlZCBuZGJpbmZvIHNjaGVtYSBpcyBjdXJyZW50LiBOb3QgdXBncmFkaW5nLgBGYWlsZWQgdG8gdXBncmFkZSBuZGJpbmZvIHNjaGVtYS4AJXMASW5ub0RCIGluaXRpYWxpemF0aW9uIGhhcyBzdGFydGVkLgBJbm5vREIgaW5pdGlhbGl6YXRpb24gaGFzIGVuZGVkLgBDb3VsZCBub3QgZmluZCBhcHByb3ByaWF0ZSByZXNldCBwb2ludHMuAFVuYWJsZSB0byBmbHVzaC4gUGFnZSBhcmNoaXZpbmcgZGF0YSBtYXkgYmUgY29ycnVwdCBpbiBjYXNlIG9mIGEgY3Jhc2guAFBhZ2UgYXJjaGl2ZXIncyBkb3VibGV3cml0ZSBidWZmZXIgZm9yICVsZCBpcyBub3QgdmFsaWQuAFBhZ2UgYXJjaGl2ZXIgc3lzdGVtJ3MgcmVjb3ZlcnkgZmFpbGVkLgBJbnZhbGlkIGFyY2hpdmVkIGZpbGUgbmFtZSBmb3JtYXQuIFRoZSBhcmNoaXZlZCBmaWxlIGlzIHN1cHBvc2VkIHRvIGhhdmUgdGhlIGZvcm1hdCAlcyArIFswLTldKi4AWCBQbHVnaW5zIFVOSVggc29ja2V0IG11c3QgdXNlIGRpZmZlcmVudCBmaWxlIHRoYW4gTXlTUUwgc2VydmVyLiBYIFBsdWdpbiB3b24ndCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggVU5JWCBzb2NrZXQAJXMAQ29sdW1uICclLjY0cy4lLjY0cy4lLjY0cycgaGF2aW5nIHByZWZpeCBrZXkgcGFydCAnJS42NHMoJXUpJyBpcyBpZ25vcmVkIGJ5IHRoZSBwYXJ0aXRpb25pbmcgZnVuY3Rpb24uIFVzZSBvZiBwcmVmaXhlZCBjb2x1bW5zIGluIHRoZSBQQVJUSVRJT04gQlkgS0VZKCkgY2xhdXNlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBVbmRvIFRydW5jYXRpb24gaXMgb2NjdXJyaW5nIHRvbyBvZnRlbi4gQ29uc2lkZXIgaW5jcmVhc2luZyAtLWlubm9kYi1tYXgtdW5kby1sb2ctc2l6ZS4AUGx1Z2luICdncm91cF9yZXBsaWNhdGlvbicgaXMgc3RhcnRpbmcuAENhbm5vdCBjcmVhdGUgdGFibGVzcGFjZSAlcyBiZWNhdXNlIHRoZSBkaXJlY3RvcnkgaXMgbm90IGEgdmFsaWQgbG9jYXRpb24uICVzAFNjYW5uZWQgZmlsZSAnJXMnIGZvciB0YWJsZXNwYWNlICVzIGNhbm5vdCBiZSBvcGVuZWQgYmVjYXVzZSBpdCBpcyBub3QgaW4gYSBzdWItZGlyZWN0b3J5IG5hbWVkIGZvciB0aGUgc2NoZW1hLgBDYW5ub3QgZmluZCB1bmRvIHRhYmxlc3BhY2UgJXMgd2l0aCBmaWxlbmFtZSAnJXMnIGFzIGluZGljYXRlZCBieSB0aGUgRGF0YSBEaWN0aW9uYXJ5LiBEaWQgeW91IG1vdmUgb3IgZGVsZXRlIHRoaXMgdGFibGVzcGFjZT8gQW55IHVuZG8gbG9ncyBpbiBpdCBjYW5ub3QgYmUgdXNlZC4ASW52YWxpZCBpbnB1dCB2YWx1ZSBmb3IgcmVjb3Zlcnkgc29ja2V0IGVuZHBvaW50cyAnJXMnLiBQbGVhc2UsIHByb3ZpZGUgYSB2YWxpZCwgY29tbWEgc2VwYXJhdGVkLCBsaXN0IG9mIGVuZHBvaW50cyAoSVA6cG9ydCkuAFRoZSBzZXJ2ZXIgaXMgbm90IGxpc3RlbmluZyBvbiBlbmRwb2ludCAnJXMnLiBPbmx5IGVuZHBvaW50cyB0aGF0IHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nIG9uIGFyZSB2YWxpZCByZWNvdmVyeSBlbmRwb2ludHMuAFJlY2VpdmVkIGludmFsaWQgcmVjb3ZlcnkgZW5kcG9pbnRzIGNvbmZpZ3VyYXRpb24gZnJvbSBkb25vci4gVGhpcyBtZW1iZXIgaXMgbm90IGEgdmFsaWQgZG9ub3IgZm9yIHJlY292ZXJ5LCBzbyBpdCB3aWxsIGJlIHNraXBwZWQuAEZhaWxlZCB0byByZXRyaWV2ZSBJUCBhZGRyZXNzZXMgZnJvbSBlbmFibGVkIGhvc3QgbmV0d29yayBpbnRlcmZhY2VzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBUTFMgZm9yIGNoYW5uZWw6ICVzLiBTZWUgYmVsb3cgZm9yIHRoZSBkZXNjcmlwdGlvbiBvZiBleGFjdCBpc3N1ZS4AVmFsaWRhdGlvbiBvZiB2YWx1ZSAnJXMnIHNldCB0byBgTXlzcWx4X2JpbmRfYWRkcmVzc2AgZmFpbGVkOiAlcy4gU2tpcHBpbmcgdGhpcyB2YWx1ZS4AVmFsdWUgJyVzJyBzZXQgdG8gYE15c3FseF9iaW5kX2FkZHJlc3NgLCBYIFBsdWdpbiBjYW4ndCBiaW5kIHRvIGl0LiBTa2lwcGluZyB0aGlzIHZhbHVlLgBTZXJ2ZXIgd2FzIGtpbGxlZCB3aGVuIElubm9EQiByZWRvIGxvZ2dpbmcgd2FzIGRpc2FibGVkLiBEYXRhIGZpbGVzIGNvdWxkIGJlIGNvcnJ1cHQuIFlvdSBjYW4gdHJ5IHRvIHJlc3RhcnQgdGhlIGRhdGFiYXNlIHdpdGggaW5ub2RiX2ZvcmNlX3JlY292ZXJ5PTYASW5ub0RCIGNhbm5vdCBkbyBjb2xkIHNodXRkb3duICdpbm5vZGJfZmFzdF9zaHV0ZG93biA9IDInIGFuZCBpcyBmb3JjaW5nICdpbm5vZGJfZmFzdF9zaHV0ZG93biA9IDEnIGFzIHJlZG8gbG9nZ2luZyBpcyBkaXNhYmxlZC4gSW5ub0RCIHdvdWxkIGZsdXNoIGFsbCBkaXJ0eSBwYWdlcyB0byBlbnN1cmUgcGh5c2ljYWwgZGF0YSBjb25zaXN0ZW5jeS4ASW5ub0RCIHJlZG8gbG9nZ2luZyBpcyBkaXNhYmxlZC4gQWxsIGRhdGEgY291bGQgYmUgbG9zdCBpbiBjYXNlIG9mIGEgc2VydmVyIGNyYXNoLgBJbm5vREIgcmVkbyBsb2dnaW5nIGlzIGVuYWJsZWQuIERhdGEgaXMgbm93IHNhZmUgYW5kIGNhbiBiZSByZWNvdmVyZWQgaW4gY2FzZSBvZiBhIHNlcnZlciBjcmFzaC4AQ2hhbm5lbCAlcyBjb25maWd1cmVkIHRvIHN1cHBvcnQgVExTLiBFbmNyeXB0ZWQgY29ubmVjdGlvbnMgYXJlIG5vdyBzdXBwb3J0ZWQgZm9yIHRoaXMgY2hhbm5lbC4ATm8gVExTIGNvbmZpZ3VyYXRpb24gd2FzIGdpdmVuIGZvciBjaGFubmVsICVzOyByZS11c2luZyBUTFMgY29uZmlndXJhdGlvbiBvZiBjaGFubmVsICVzLgBTa2lwcGluZyBJbm5vREIgdGFibGVzcGFjZSBwYXRoIHZhbGlkYXRpb24uIE1hbnVhbGx5IG1vdmVkIHRhYmxlc3BhY2UgZmlsZXMgd2lsbCBub3QgYmUgZGV0ZWN0ZWQhAFVwZ3JhZGUgZmFpbGVkIGJlY2F1c2UgZGF0YWJhc2UgY29udGFpbnMgZGlzY2FyZGVkIHRhYmxlc3BhY2VzLgBUaGUgdXNlciBuYW1lICclcycgZXhjZWVkcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCBjaGFyYWN0ZXJzICVkIGFuZCBpcyB0cnVua2F0ZWQuAFRoZSBob3N0IG5hbWUgJyVzJyBleGNlZWRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGxvd2VkIGNoYXJhY3RlcnMgJWQgYW5kIGlzIHRydW5rYXRlZC4AUm9sbGJhY2sgb2Ygbm9uLXByZXBhcmVkIHRyYW5zYWN0aW9ucyBub3QgY29tcGxldGVkLCBkdWUgdG8gZmFzdCBzaHV0ZG93bgBGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ3JvbGVfZWRnZXMnIHRhYmxlIHdpdGggZW1wdHkgYXV0aG9yaXphdGlvbiBJRDsgU2tpcHBlZABGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ3JvbGVfZWRnZXMnIHRhYmxlIHdpdGggdW5rbm93biBhdXRob3JpemF0aW9uIElEICclcyc7IFNraXBwZWQARm91bmQgYW4gZW50cnkgaW4gdGhlICdkZWZhdWx0X3JvbGVzJyB0YWJsZSB3aXRoIGVtcHR5IGF1dGhvcml6YXRpb24gSUQ7IFNraXBwZWQARm91bmQgYW4gZW50cnkgaW4gdGhlICdkZWZhdWx0X3JvbGVzJyB0YWJsZSB3aXRoIHVua25vd24gYXV0aG9yaXphdGlvbiBJRCAnJXMnOyBTa2lwcGVkAENvdWxkbid0IGluc2VydCBlbnRyeSBpbiBkZGwgbG9nIGZvciBkZGwuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFRoZSBzdGF0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgaXMgc2V0IHRvIGFjdGl2ZSBpbXBsaWNpdGx5LgBUaGUgc3RhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGlzIHNldCB0byAnYWN0aXZlJyBieSBBTFRFUiBUQUJMRVNQQUNFLgBUaGUgc3RhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGlzIHNldCB0byAnaW5hY3RpdmUnIGJ5IEFMVEVSIFRBQkxFU1BBQ0UuAFRoZSBzdGF0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgaXMgc2V0IHRvICdlbXB0eScuAERlbGF5aW5nIHRydW5jYXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBkdWUgdG8gY2xvbmUgYWN0aXZpdHkuAERlbGF5aW5nIHRydW5jYXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBkdWUgdG8gYSBtZXRhZGF0YSBsb2NrLgBJbmplY3RlZCBkZWJ1ZyBjcmFzaCBwb2ludDogJXMASW5qZWN0ZWQgZGVidWcgZmFpbHVyZSBwb2ludDogJXMAVGltZW91dCB3aGlsZSB3YWl0aW5nIGZvciBhIHZpZXcgY2hhbmdlIGV2ZW50IGR1cmluZyB0aGUgbGVhdmUgc3RlcCBiZWZvcmUgYSBhdXRvLXJlam9pbiBhdHRlbXB0LgBGYWlsZWQgdG8gYXV0b21hdGljYWxseSByZS1jb25uZWN0IHRvIGEgZGlmZmVyZW50IHNvdXJjZSwgZm9yIGNoYW5uZWwgJyVzJywgYmVjYXVzZSAlcy4gVG8gZml4IHRoaXMgJXMuAENvdWxkIG5vdCBleGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgVURGIGZ1bmN0aW9ucy4gQ2hlY2sgZm9yIG90aGVyIGVycm9ycyBpbiB0aGUgbG9nAENvdWxkIG5vdCBleGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgVURGIGZ1bmN0aW9uOiAlcy4gQ2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIGFscmVhZHkgcHJlc2VudCwgaWYgc28sIHRyeSB0byByZW1vdmUgaXQuAENvdWxkIG5vdCB1bmluc3RhbGwgVURGIGZ1bmN0aW9ucy4gVHJ5IHRvIHJlbW92ZSB0aGVtIG1hbnVhbGx5IGlmIHByZXNlbnQuAEFuIGVtcHR5IG9yIGlsbGVnYWwgcHJpdmlsZWdlIGlkZW50aWZpZXIgd2FzIGlnbm9yZWQgd2hlbiBnbG9iYWwgcHJpdmlsZWdlcyB3ZXJlIHJlYWQgZnJvbSBkaXNrLgAlcwBBIHRtcGRpciB0ZW1wb3JhcnkgcGF0aCAiJXMiIGlzIHRvbyBsb25nICg+ICV6dSkgZm9yIHRoaXMgT1MuIFRoaXMgd291bGQgbm90IGxlYXZlIGVub3VnaCBzcGFjZSBmb3IgYSB0ZW1wb3JhcnkgZmlsZW5hbWUgb2YgbGVuZ3RoICV6dSB3aXRoaW4gaXQuAEVycm9yLWxvZyBkZXN0aW5hdGlvbiAiJXMiIGlzIG5vdCBhIGZpbGUuIENhbiBub3QgcmVzdG9yZSBlcnJvciBsb2cgbWVzc2FnZXMgZnJvbSBwcmV2aW91cyBydW4uAE5vbmUgb2YgdGhlIGxvZy1zaW5rcyBzZWxlY3RlZCB3aXRoIC0tbG9nLWVycm9yLXNlcnZpY2VzPS4uLiBwcm92aWRlcyBhIGxvZy1wYXJzZXIuIFRoZSBzZXJ2ZXIgd2lsbCBub3QgYmUgYWJsZSB0byBtYWtlIHRoZSBwcmV2aW91cyBydW5zJyBlcnJvci1sb2dzIGF2YWlsYWJsZSBpbiBwZXJmb3JtYW5jZV9zY2hlbWEuZXJyb3JfbG9nLgBUaGUgc2NoZW1hICIlLjY0cyIgcmVmZXJlbmNlZCBieSAlLjE2cyAiJS4xMjhzIiBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNsZWFuIHVwIGFueSBvcnBoYW4gJS4xNnMgYmVmb3JlIHVwZ3JhZGluZy4AQ3JlYXRlZCB1bmRvIHRhYmxlc3BhY2UgJyVzJy4ARHJvcHBlZCB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AVGhlIElubm9EQiBFbmNyeXB0aW9uIE1hc3RlciBLZXkgaGFzIGJlZW4gcm90YXRlZCBpbiAlZCB0YWJsZXNwYWNlcy4ARmFpbGVkIHRvIGRlY29tcHJlc3MgYSBEQkxXUiBwYWdlIChlcnI9JWQpLiAgVGhlIG9yaWdpbmFsIHNpemUgaXMgJWQuIFJlcG9ydGluZyB0aGUgZGJsd3IgcGFnZSBhcyBjb3JydXB0ZWQuAERlY3J5cHRpbmcgYSBwYWdlIGluIGRvdWJsZXdyaXRlIGZpbGUgZmFpbGVkOiAlcy4ARW5jcnlwdGlvbiBrZXkgbWlzc2luZzogJXMuAEkvTyBlcnJvciB3aGlsZSB3cml0aW5nIHRvIGZpbGU6ICVzLiBSZXRyeWluZyAuLi4ARmFpbGVkIHRvIHdyaXRlIGRhdGEgdG8gZmlsZTogJXMATG9nIGNvbXBvbmVudCAlcyBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4AVGhlIE1vbml0b3IgSU8gdGhyZWFkIGZhaWxlZCB0byBjb25uZWN0IHRvIHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJywgdGhlbmNlIGl0IHdpbGwgdHJ5IHRvIGNvbm5lY3QgdG8gYW5vdGhlciBzb3VyY2UuAFRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJyBoYXMgam9pbmVkIHRoZSBncm91cCAoZ3JvdXBfbmFtZTogJXMpLCBhbmQgc28gYWRkZWQgaXRzIGVudHJ5IGludG8gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAFRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJyBoYXMgbGVmdCB0aGUgZ3JvdXAgKGdyb3VwX25hbWU6ICVzKSwgYW5kIHNvIHJlbW92ZWQgaXRzIGVudHJ5IGZyb20gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAFRoZSBNb25pdG9yIElPIHRocmVhZCBkZXRlY3RlZCB0aGF0IHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZG9lcyBub3QgYmVsb25nIHRvIHRoZSBncm91cCBtYWpvcml0eSwgdGhlbmNlIHRoZSBjaGFubmVsICclcycgd2lsbCB0cnkgdG8gY29ubmVjdCB0byBhbm90aGVyIHNvdXJjZS4AVGhlIElPIHRocmVhZCBkZXRlY3RlZCB0aGF0IHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZG9lcyBub3QgYmVsb25nIHRvIHRoZSBncm91cCBtYWpvcml0eSwgdGhlbmNlIHRoZSBjaGFubmVsICclcycgd2lsbCB0cnkgdG8gY29ubmVjdCB0byBhbm90aGVyIHNvdXJjZS4AJXMgb24gdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnLgBSZXBsaWNhIE1vbml0b3IgSU8gdGhyZWFkIGV4aXRpbmcuAFRoZSBncm91cCAoZ3JvdXBfbmFtZTogJXMpIGZvciB0aGUgY2hhbm5lbCAnJXMnIGhhcyBiZWVuIHJlbW92ZWQsIGFuZCBzbyByZW1vdmVkIGl0cyBlbnRyeSBmcm9tIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX21hbmFnZWQgYW5kIGFsbCB0aGUgZ3JvdXAgbWVtYmVycyBmcm9tIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyIHRhYmxlLgBUaGUgZ3JvdXAgKGdyb3VwX25hbWU6ICVzKSBmb3IgdGhlIGNoYW5uZWwgJyVzJyBoYXMgYmVlbiBhZGRlZCwgYW5kIHNvIGFkZGVkIGl0cyBlbnRyeSBpbiByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3Zlcl9tYW5hZ2VkIGFuZCBzb3VyY2UgdG8gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAEVycm9yIHJlYWRpbmcgZmFpbG92ZXIgc291cmNlcyBmb3IgY2hhbm5lbCAnJXMnIGZyb20gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAEVycm9yICVzIHRoZSBjaGFubmVsICclcycsIHRoZSBvcGVyYXRpb24gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJldHJpZWQuAFJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TPSclcycsIHdoaWNoIGlzIGludmFsaWQgd2hlbiBHVElEX01PREUgPD4gT04uIElmIHlvdSBpbnRlbmQgdG8gdXNlIEdUSURfTU9ERSA9IE9OIGV2ZXJ5d2hlcmUsIGNoYW5nZSB0byBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IE9GRiBhbmQgdXNlIHRoZSBwcm9jZWR1cmUgZm9yIGVuYWJsaW5nIEdUSURzIG9ubGluZSAoc2VlIHRoZSBkb2N1bWVudGF0aW9uKS4gSWYgeW91IGludGVuZCB0byB1c2UgR1RJRHMgb24gdGhpcyByZXBsaWNhIGFuZCBjYW5ub3QgZW5hYmxlIEdUSURzIG9uIHRoZSBzb3VyY2UsIGVuYWJsZSBHVElEX01PREUgPSBPTiBhbmQgbGVhdmUgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4uIElmIHlvdSBpbnRlbmQgdG8gbm90IHVzZSBHVElEcyBhdCBhbGwgaW4gdGhlIHJlcGxpY2F0aW9uIHRvcG9sb2d5LCBjaGFuZ2UgdG8gQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlM9T0ZGIGFuZCBsZWF2ZSBHVElEX01PREUgPSAnJXMnLgBSZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUz0nJXMnIHdoaWNoIGlzIGVxdWFsIHRvIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuIFRvIGZpeCB0aGlzIGlzc3VlLCBlaXRoZXIgY2hhbmdlIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICBvciB1c2UgYSBkaWZmZXJlbnQgdmFsdWUgZm9yIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TLgBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSAnJXMnIGlzIHRoZSBzYW1lIGFzIHRoZSBVVUlEIHZhbHVlIGZvciBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyBpbiBhIHNlcnZlciBjaGFubmVsAFRoZSBpbnRlZ2VyIGNvbXBvbmVudCBvZiB0aGUgR1RJRCBudW1iZXIgaXMgaGlnaC4gU3VnZ2VzdCByZXN0YXJ0aW5nIHRoZSBzZXJ2ZXIgd2l0aCBhIG5ldyBzZXJ2ZXJfdXVpZCB0byBwcmV2ZW50IGl0IGZyb20gcmVhY2hpbmcgdGhlIG1heGltdW0gbnVtYmVyIDJeNjMtMSwgd2hpY2ggd2lsbCBtYWtlIGl0IGltcG9zc2libGUgdG8gd3JpdGUgdGhlIGJpbmFyeSBsb2cgYW5kIGludm9rZSB0aGUgYmVoYXZpb3Igc3BlY2lmaWVkIGJ5IGJpbmxvZ19lcnJvcl9hY3Rpb24uACVzACVzACVzACVzOiBXYXJuaW5nIExldmVsIDEgKCVsbHUgTWlCKTogbW91bnQgcG9pbnQgPSAnJXMnLCBhdmFpbGFibGUgPSAlbGx1IE1pQiwgdG90YWwgPSAlbGx1IE1pQiwgdXNlZCA9ICUuMmYlJSwgbG93IGxpbWl0ID0gJWxsdSBNaUIsIGNyaXRpY2FsIGxldmVsID0gJWxsdSBNaUIAJXM6IFdhcm5pbmcgTGV2ZWwgMiAoJWxsdSBNaUIpOiBtb3VudCBwb2ludCA9ICclcycsIGF2YWlsYWJsZSA9ICVsbHUgTWlCLCB0b3RhbCA9ICVsbHUgTWlCLCB1c2VkID0gJS4yZiUlLCBsb3cgbGltaXQgPSAlbGx1IE1pQiwgY3JpdGljYWwgbGV2ZWwgPSAlbGx1IE1pQgAlczogV2FybmluZyBMZXZlbCAzICglbGx1IE1pQik6IG1vdW50IHBvaW50ID0gJyVzJywgYXZhaWxhYmxlID0gJWxsdSBNaUIsIHRvdGFsID0gJWxsdSBNaUIsIHVzZWQgPSAlLjJmJSUsIGxvdyBsaW1pdCA9ICVsbHUgTWlCLCBjcml0aWNhbCBsZXZlbCA9ICVsbHUgTWlCAElubm9EQjogU2l6ZSBvZiB0YWJsZXNwYWNlICVzIGlzIG1vcmUgdGhhbiB0aGUgbWF4aW11bSBzaXplIGFsbG93ZWQuAFRoZSBncm91cF9yZXBsaWNhdGlvbl9hcHBsaWVyIGNoYW5uZWwgaXMgc3RpbGwgcnVubmluZywgbW9zdCBsaWtlbHkgaXQgaXMgd2FpdGluZyBmb3IgYSBkYXRhYmFzZS90YWJsZSBsb2NrLCB3aGljaCBpcyBwcmV2ZW50aW5nIHRoZSBjaGFubmVsIGZyb20gc3RvcHBpbmcuIFBsZWFzZSBjaGVjayBkYXRhYmFzZS90YWJsZSBsb2NrcywgaW5jbHVkaW5nIHRoZSBvbmVzIGNyZWF0ZWQgYnkgYmFja3VwIHRvb2xzLgBEZXRlY3RlZCBtaXNjb25maWd1cmF0aW9uOiByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBjb25maWd1cmVkIHdpdGggU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDEsIGJ1dCB0aGUgc2VydmVyIHdhcyBzdGFydGVkIHdpdGggYSB2YWx1ZSBvdGhlciB0aGVuIC0tZ3RpZC1tb2RlID0gT04uIEVpdGhlciByZWNvbmZpZ3VyZSByZXBsaWNhdGlvbiB1c2luZyBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAwIEZPUiBDSEFOTkVMICclLjE5MnMnLCBvciBjaGFuZ2UgR1RJRF9NT0RFIHRvIHZhbHVlIE9OLCBiZWZvcmUgc3RhcnRpbmcgdGhlIHJlcGxpY2EgcmVjZWl2ZXIgdGhyZWFkLgBDb3VsZCBub3QgYWNxdWlyZSByZXF1aXJlZCBjb21wb25lbnQgc2VydmljZXMuAEF1dG9tYXRpYyByZWdpc3RyYXRpb24gb2YgZnVuY3Rpb24ocykgZmFpbGVkLgBBdXRvbWF0aWMgcmVnaXN0cmF0aW9uIG9mIFBlcmZvcm1hbmNlIHNjaGVtYSB0YWJsZShzKSBmYWlsZWQuACVzAEZhaWxlZCB0byBhdXRvLXBydW5lIGZpbGUgJyVzJywgRXJyb3IgKCVkKTogJXMARmlsZSAnJXMnIGF1dG8tcHJ1bmVkAFJlY2VpdmVkIGFuIGVycm9yIHdoaWxlIHByb2Nlc3NpbmcgY29tcG9uZW50cyBmcm9tIG1hbmlmZXN0IGZpbGU6ICVzAFJlY2VpdmVkIGFuIGVycm9yIHdoaWxlIHVubG9hZGluZyBjb21wb25lbnRzIHJlYWQgZnJvbSBtYW5pZmVzdCBmaWxlOiAlcwBNYW5pZmVzdCBmaWxlICclcycgaXMgbm90IHJlYWQtb25seS4gRm9yIGJldHRlciBzZWN1cml0eSwgcGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoZSBmaWxlIGlzIHJlYWQtb25seS4ATm8gc3VpdGFibGUgJyVzJyBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZvdW5kIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuAEtleXJpbmcgY29tcG9uZW50IGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4AVGhlIGNvbXBvbmVudCBpcyBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIEVycm9yOiAlcy4gTWFrZSBzdXJlIHRoYXQgY29uZmlndXJhdGlvbiBpcyBwcm9wZXIgYW5kIHVzZSBBTFRFUiBJTlNUQU5DRSBSRUxPQUQgS0VZUklORyB0byByZWluaXRpYWxpemUgdGhlIGNvbXBvbmVudC4AS2V5cmluZyBjb21wb25lbnQgZW5jb3VudGVyZWQgYW4gZXhjZXB0aW9uIHdoaWxlIGV4ZWN1dGluZyA6ICclcycgQVBJIG9mIHNlcnZpY2U6ICclcycARmFpbGVkIHRvIGFsbG9jYXRlZCBtZW1vcnkgZm9yICclcycgd2hpbGUgZXhlY3V0aW5nOiAnJXMnIEFQSSBvZiBzZXJ2aWNlOiAnJXMnAEVtcHR5IG9yIDAgdmFsdWVzIGZvciBBRVMgZW5jcnlwdGlvbiBtb2RlIGFuZC9vciBibG9jayBzaXplIGFyZSBub3QgcGVybWl0dGVkLgBBIHZhbGlkIGRhdGEgaWRlbnRpZmllciBpcyByZXF1aXJlZCBpbiBvcmRlciB0byBmZXRjaCB0aGUga2V5IHJlcXVpcmVkIGZvciB0aGUgQUVTIG9wZXJhdGlvbi4AS2V5IGlkZW50aWZpZWQgYnkgRGF0YSBJRDogJyVzJyBhbmQgQXV0aCBJRDogJyVzJyBpcyBub3Qgb2YgdHlwZSBBRVMuAEVuY291bnRlcmVkIGVycm9yOiAnJXMnIHdoaWxlIGV4ZWN1dGluZyAnJXMnIEFQSSBvZiBrZXlyaW5nX2FlcyBzZXJ2aWNlLiBLZXkgZGV0YWlscyBhcmUgRGF0YSBJRDogJyVzJyBhbmQgQXV0aCBJRDogJyVzJy4AQ291bGQgbm90IGZpbmQgdGhlIGRhdGEgY29ycmVzcG9uZGluZyB0byBEYXRhIElEOiAnJXMnLCBBdXRoIElEOiAnJXMnLgBNYXhpbXVtIHBlcm1pc3NpYmxlIHNpemUgb2YgZGF0YSBpcyAnJXp1JyBiaXRzAEVycm9yIHdyaXRpbmcgZGF0YSBmb3IgRGF0YSBJRDogJyVzJywgQXV0aCBJRDogJyVzJy4gRWl0aGVyIGRhdGEgYWxyZWFkeSBleGlzdHMgd2l0aCBzYW1lIGlkZW50aWZpZXIgb3Iga2V5cmluZyBiYWNrZW5kIGVuY291bnRlcmVkIGFuIGVycm9yLgBFcnJvciByZW1vdmluZyBkYXRhIGZvciBEYXRhIElEOiAnJXMnLCBBdXRoIElEOiAnJXMnLiBFaXRoZXIgZGF0YSBkb2VzIG5vdCBleGlzdHMgd2l0aCBzYW1lIGlkZW50aWZpZXIgb3Iga2V5cmluZyBiYWNrZW5kIGVuY291bnRlcmVkIGFuIGVycm9yLgBFcnJvciBnZW5lcmF0aW5nIGRhdGEgZm9yIERhdGEgSUQ6ICclcycsIEF1dGggSUQ6ICclcycuIEVpdGhlciBkYXRhIGFscmVhZHkgZXhpc3RzIHdpdGggc2FtZSBpZGVudGlmaWVyIG9yIGtleXJpbmcgYmFja2VuZCBlbmNvdW50ZXJlZCBhbiBlcnJvci4ARmFpbGVkIHRvIGdldCBtZXRhZGF0YSBmcm9tIGN1cnJlbnQga2V5cyBtZXRhZGF0YSBpdGVyYXRvciBwb3NpdGlvbi4AS2V5IGFuZCB2YWx1ZSBsZW5ndGggcGFyYW1ldGVycyBtdXN0IG5vdCBiZSBudWxsLgBJbm5vZGIgY291bGQgbm90IGFjcXVpcmUgc2VydmljZSA6ICVzAENvbHVtbiAlcyBvZiB0eXBlIEdFT01FVFJZIGlzIGluIG9sZCAoNS42KSBmb3JtYXQgd2hpY2ggY291bGQgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLiBUbyBjaGFuZ2UgdGhlIGZvcm1hdCB0byBsYXRlc3QsIHBsZWFzZSBjb25zaWRlciByZWJ1aWxkaW5nIHRoZSB0YWJsZSBhZnRlciB0aGUgdXBncmFkZS4AJ3dhaXRfdGltZW91dCcgcGVyaW9kIG9mICVzIHNlY29uZHMgd2FzIGV4Y2VlZGVkIGZvciAlcy4gVGhlIGlkbGUgdGltZSBzaW5jZSBsYXN0IGNvbW1hbmQgd2FzIHRvbyBsb25nLgBUaGUgbWVtYmVyIGFjdGlvbiAiJXMiIGZvciBldmVudCAiJXMiIHdpdGggcHJpb3JpdHkgIiV1IiB3aWxsIGJlIHJ1bi4AVGhlIG1lbWJlciBhY3Rpb24gIiVzIiBmb3IgZXZlbnQgIiVzIiB3aXRoIHByaW9yaXR5ICIldSIgZmFpbGVkLCB0aGlzIGVycm9yIGlzIGlnbm9yZWQgYXMgaW5zdHJ1Y3RlZC4gUGxlYXNlIGNoZWNrIHByZXZpb3VzIG1lc3NhZ2VzIGluIHRoZSBlcnJvciBsb2cgZm9yIGhpbnRzIGFib3V0IHdoYXQgY291bGQgaGF2ZSBjYXVzZWQgdGhpcyBmYWlsdXJlLgBUaGUgbWVtYmVyIGFjdGlvbiAiJXMiIGZvciBldmVudCAiJXMiIHdpdGggcHJpb3JpdHkgIiV1IiBmYWlsZWQuIFBsZWFzZSBjaGVjayBwcmV2aW91cyBtZXNzYWdlcyBpbiB0aGUgZXJyb3IgbG9nIGZvciBoaW50cyBhYm91dCB3aGF0IGNvdWxkIGhhdmUgY2F1c2VkIHRoaXMgZmFpbHVyZS4AVW5hYmxlIHRvIHBhcnNlIHRoZSBtZW1iZXIgYWN0aW9ucyBjb25maWd1cmF0aW9uIHNlbnQgYnkgdGhlIHByaW1hcnkuAFVuYWJsZSB0byB1cGRhdGUgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgb25lIHNlbnQgYnkgdGhlIHByaW1hcnkuIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBVbmFibGUgdG8gcmVhZCB0aGUgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiBkdXJpbmcgZ3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2UuIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBUaGlzIG1lbWJlciBqb2luZWQgYSBncm91cCBvbiB3aGljaCBhbGwgbWVtYmVycyBkbyBub3Qgc3VwcG9ydCBtZW1iZXIgYWN0aW9ucywgYXMgc3VjaCBpdCBkaWQgcmVzZXQgaXRzIG1lbWJlciBjb25maWd1cmF0aW9uIHRvIHRoZSBkZWZhdWx0IG9uZS4AVW5hYmxlIHRvIHJlc2V0IHRvIG1lbWJlciBhY3Rpb25zIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvbiBtZW1iZXIgam9pbi4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9hY3Rpb25zJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFVuYWJsZSB0byBwYXJzZSB0aGUgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiBzZW50IGJ5IHRoZSBncm91cCBvbiBtZW1iZXIgam9pbi4AVW5hYmxlIHRvIHVwZGF0ZSB0aGUgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiBvbiBtZW1iZXIgam9pbi4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9hY3Rpb25zJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFRoZSBncm91cCBtZW1iZXJzIHdlcmUgdW5hYmxlIHRvIHNlbmQgdGhlaXIgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbi4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9hY3Rpb25zJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicgb24gYWxsIG1lbWJlcnMuAE1lbWJlciBhY3Rpb24gZW5hYmxlZDogIiVzIiwgdHlwZTogIiVzIiwgZXZlbnQ6ICIlcyIsIHByaW9yaXR5OiAiJXUiLCBlcnJvcl9oYW5kbGluZzogIiVzIi4ATWVtYmVyIGFjdGlvbiBkaXNhYmxlZDogIiVzIiwgdHlwZTogIiVzIiwgZXZlbnQ6ICIlcyIsIHByaW9yaXR5OiAiJXUiLCBlcnJvcl9oYW5kbGluZzogIiVzIi4ATWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiB3YXMgcmVzZXQuAEFjY2VwdGVkIGEgY29ubmVjdGlvbiB3aXRoIGRlcHJlY2F0ZWQgcHJvdG9jb2wgJyVzJyBmb3IgYWNjb3VudCBgJXNgQGAlc2AgZnJvbSBob3N0IGAlc2AuIENsaWVudCBzdXBwbGllZCB1c2VybmFtZSBgJXNgAEEgZGVwcmVjYXRlZCBUTFMgdmVyc2lvbiAlcyBpcyBlbmFibGVkIGZvciBjaGFubmVsICVzAFVzZXIgcHJvZmlsZSAnJXMnIGxvYWRlZC4gRmlyZXdhbGwgdXNlciBwcm9maWxlcyBhcmUgZGVwcmVjYXRlZCwgY29uc2lkZXIgbWlncmF0aW5nIHRvIGdyb3VwIHByb2ZpbGVzLgBJbnZhbGlkIGlucHV0IHZhbHVlIGZvciBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkICclcycuIFBsZWFzZSwgcHJvdmlkZSBhIHZhbGlkIFVVSUQuAFZhcmlhYmxlICdncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkJyBjYW5ub3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnJXMnLiBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIFVVSUQgb2YgJ2dyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUnIGZvciB0aGUgVVVJRCBvZiBWaWV3X2NoYW5nZV9sb2dfZXZlbnRzLCBwbGVhc2Ugc2V0ICdncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkJyB0byBBVVRPTUFUSUMuAGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgJyVzJywgd2hpY2ggaXMgdGhlIHNhbWUgYXMgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZC4gUGxlYXNlIGNoYW5nZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIHRvIEFVVE9NQVRJQwBUaGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCAnJXMnIGlzIHRoZSBzYW1lIGFzIHRoZSBVVUlEIHZhbHVlIGZvciBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyBpbiBhIHNlcnZlciBjaGFubmVsAGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgaXMgaW5jb21wYXRpYmxlIHdpdGggZ3JvdXAuIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgJXMgbWF0Y2hlcyBzZXJ2ZXJfdXVpZCAlcy4AVGhlIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIG9wdGlvbiB2YWx1ZSAnJXMnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJXMnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBSZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUz0nJXMnIHdoaWNoIGlzIGVxdWFsIHRvIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQuIFRvIGZpeCB0aGlzIGlzc3VlLCBlaXRoZXIgY2hhbmdlIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIG9yIHVzZSBhIGRpZmZlcmVudCB2YWx1ZSBmb3IgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMuAFVuYWJsZSB0byBwYXJzZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZC4AVW5hYmxlIHRvIGdlbmVyYXRlIHNpZG5vIGZvciBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkLgBVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4ARXJyb3IgdXBkYXRpbmcgZ3JvdXBfZ3RpZF9leGVjdXRlZCBHVElEIHNldCB3aXRoIHZpZXcgY2hhbmdlIHV1aWQgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4AVW5hYmxlIHRvIGFkZCB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCBzaWRubyBpbiB0aGUgZ3JvdXBfZ3RpZF9zaWRfbWFwIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byBoYW5kbGUgdGhlIGRvbm9yJ3MgdmlldyBjaGFuZ2UgdXVpZCB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiB3aGVuIGluaXRpYWxpemluZyB0aGUgY29uZmxpY3QgZGV0ZWN0aW9uIGNvbXBvbmVudC4gUG9zc2libGUgb3V0IG9mIG1lbW9yeSBlcnJvci4AVW5hYmxlIHRvIHJldHJpZXZlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgZHVyaW5nIHNlcnZlciBjaGVja3Mgb24gcmVwbGljYXRpb24gb3BlcmF0aW9ucy4AQm90aCBhdWRpdF9sb2dfbWF4X3NpemUgYW5kIGF1ZGl0X2xvZ19wcnVuZV9zZWNvbmRzIGFyZSBzZXQgdG8gbm9uLXplcm8uIGF1ZGl0X2xvZ19tYXhfc2l6ZSB0YWtlcyBwcmVjZWRlbmNlIGFuZCBhdWRpdF9sb2dfcHJ1bmVfc2Vjb25kcyBpcyBpZ25vcmVkAGF1ZGl0X2xvZ19yb3RhdGVfb25fc2l6ZSBpcyBub3QgZ3JhbnVsYXIgZW5vdWdoIGZvciB0aGUgdmFsdWUgb2YgYXVkaXRfbG9nX21heF9zaXplIHN1cHBsaWVkLiBTaG91bGQgYmUgYXQgbGVhc3QgJWQgdGltZXMgc21hbGxlci4ASW52YWxpZCB0YWJsZSBkZWZpbml0aW9uIGZvciAnJXMuJXMnLgAlcwBDYW5ub3QgaW5zdGFsbCB0aGUgJS4xOTJzIHBsdWdpbiB3aGVuIHRoZSAlLjE5MnMgcGx1Z2luIGlzIGluc3RhbGxlZC4AVGhlIHZhcmlhYmxlICVzIGhhcyBiZWVuIHJlbmFtZWQgdG8gJXMsIGFuZCB0aGUgb2xkIG5hbWUgZGVwcmVjYXRlZC4gT25seSB0aGUgb2xkIG5hbWUgd2FzIGZvdW5kIGluIHRoZSBwZXJzaXN0ZWQgdmFyaWFibGUgZmlsZS4gTmV4dCB0aW1lIHRoZSBmaWxlIGlzIHNhdmVkLCBib3RoIG5hbWVzIHdpbGwgYmUgc3RvcmVkLiBJc3N1ZSBhbnkgU0VUIFBFUlNJU1QgY29tbWFuZCB0byBzYXZlIHRoZSBmaWxlLCBnZXQgcmlkIG9mIHRoaXMgd2FybmluZywgYW5kIHByZXBhcmUgdGhlIHBlcnNpc3RlZCBjb25maWd1cmF0aW9uIGZvciB3aGVuIHRoZSB2YXJpYWJsZSBpcyByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uACVkIGVycm9yIGxvZ2dpbmcgY29tcG9uZW50KHMpIGZhaWxlZCB0byBmbHVzaC4gRm9yIGZpbGUtYmFzZWQgbG9ncyB0aGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgcGF0aCBvciBwZXJtaXNzaW9ucyBvZiB0aGUgbG9nLWZpbGUgaGF2ZSBjaGFuZ2VkLiBGYWlsdXJlIHRvIGZsdXNoIGZpbGVkLWJhc2VkIGxvZ3MgbWF5IGFmZmVjdCBsb2ctcm90YXRpb24uAFRhYmxlc3BhY2Uga2V5IGZvciAlcyBoYXMgYmVlbiByZS1lbmNyeXB0ZWQgdXNpbmcgdGhlIGxhdGVzdCBJbm5vREIgbWFzdGVyIGtleS4gSG93ZXZlciwgd2UgcmVjb21tZW5kIHRoYXQgeW91IHJlYnVpbGQgdGhlIHRhYmxlIGZvciBiZXR0ZXIgc2VjdXJpdHkuAFRhYmxlc3BhY2Uga2V5IGZvciAlcyBoYXMgYmVlbiByZS1lbmNyeXB0ZWQgdXNpbmcgdGhlIGxhdGVzdCBJbm5vREIgbWFzdGVyIGtleS4gSG93ZXZlciwgd2UgcmVjb21tZW5kIHRoYXQgeW91IHJlZW5jcnlwdCB0aGUgdGFibGVzcGFjZSBmb3IgYmV0dGVyIHNlY3VyaXR5LgBQYWdlIEFyY2hpdmVyJ3MgZG91Ymxld3JpdGUgYnVmZmVyIGluaXRpYWxpc2F0aW9uIGZhaWxlZC4gUGFnZSB0cmFja2luZyBpcyBhdCByaXNrIG9mIGxvc2luZyB0cmFja2VkIGluZm9ybWF0aW9uLgBUaGVyZSBpcyBub3QgZW5vdWdoIGZyZWUgc3BhY2UgaW4gdGhlIHJlZG8gbG9nIGR1cmluZyByZWNvdmVyeSB0byBwZXJmb3JtIHBlbmRpbmcgaWJ1ZiBtZXJnZXMuIFBsZWFzZSByZXRyeSBzdGFydGluZyBNeVNRTCB3aXRoIC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5PTQuAFRoZXJlIGlzIG5vdCBlbm91Z2ggZnJlZSBzcGFjZSBpbiB0aGUgcmVkbyBsb2cgZHVyaW5nIHJlY292ZXJ5LCByZXN0b3JlIGZyb20gYmFja3VwIChvciByZXRyeSB3aXRoIC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5PTYpLgBhdWRpdF9sb2dfZm9ybWF0X3VuaXhfdGltZXN0YW1wIGlzIGFwcGxpY2FibGUgb25seSB3aGVuIGF1ZGl0X2xvZ19mb3JtYXQgPSBKU09OLgBSZXRyeSB0aGUgc3RhdGVtZW50IHVzaW5nIHRoZSBwcmltYXJ5IHN0b3JhZ2UgZW5naW5lLgBQYXJhbGxlbCBpbml0aWFsaXphdGlvbiBvZiByc2VnIGNvbXBsZXRlAFRpbWUgdGFrZW4gdG8gaW5pdGlhbGl6ZSByc2VnIHVzaW5nICV1IHRocmVhZDogJXUgbXMuAERETCBmYWlsZWQgdG8gY3JlYXRlIGEgdGhyZWFkIHRvIGxvYWQgYW4gaW5kZXgsIGZhbGwgYmFjayB0byBzaW5nbGUgdGhyZWFkAERlYnVnX2NoZWNrX25vX2xhdGNoaW5nIGZhaWxlZCwgc2xvdC0+dHlwZT0lZABGYWlsZWQgdG8gZXN0YWJsaXNoIE15U1FMIGNsaWVudCBjb25uZWN0aW9uIGluIEdyb3VwIFJlcGxpY2F0aW9uLiBFcnJvciBlc3RhYmxpc2hpbmcgY29ubmVjdGlvbi4gUGxlYXNlIHJlZmVyIHRvIHRoZSBtYW51YWwgdG8gbWFrZSBzdXJlIHRoYXQgeW91IGNvbmZpZ3VyZWQgR3JvdXAgUmVwbGljYXRpb24gcHJvcGVybHkgdG8gd29yayB3aXRoIE15U1FMIFByb3RvY29sIGNvbm5lY3Rpb25zLgBGYWlsZWQgdG8gZXN0YWJsaXNoIE15U1FMIGNsaWVudCBjb25uZWN0aW9uIGluIEdyb3VwIFJlcGxpY2F0aW9uLiBFcnJvciBzZW5kaW5nIGNvbm5lY3Rpb24gZGVsZWdhdGlvbiBjb21tYW5kLiBQbGVhc2UgcmVmZXIgdG8gdGhlIG1hbnVhbCB0byBtYWtlIHN1cmUgdGhhdCB5b3UgY29uZmlndXJlZCBHcm91cCBSZXBsaWNhdGlvbiBwcm9wZXJseSB0byB3b3JrIHdpdGggTXlTUUwgUHJvdG9jb2wgY29ubmVjdGlvbnMuAFVuYWJsZSB0byByZWFkIHRoZSByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBjb25maWd1cmF0aW9uIGR1cmluZyBncm91cCBtZW1iZXJzaGlwIGNoYW5nZS4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyJywgJ215c3FsLnJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX21hbmFnZWQnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVGhpcyBtZW1iZXIgam9pbmVkIGEgZ3JvdXAgb24gd2hpY2ggYWxsIG1lbWJlcnMgZG8gbm90IHN1cHBvcnQgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgaW50ZWdyYXRpb24gb24gR3JvdXAgUmVwbGljYXRpb24sIGFzIHN1Y2ggaXQgZGlkIHJlc2V0IGl0cyByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBjb25maWd1cmF0aW9uIHRvIHRoZSBkZWZhdWx0IG9uZS4AVW5hYmxlIHRvIHJlc2V0IHRvIHJlcGxpY2F0aW9uIGZhaWxvdmVyIGNoYW5uZWxzIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvbiBtZW1iZXIgam9pbi4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyJywgJ215c3FsLnJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX21hbmFnZWQnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVW5hYmxlIHRvIHBhcnNlIHRoZSByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBjb25maWd1cmF0aW9uIHNlbnQgYnkgdGhlIGdyb3VwIG9uIG1lbWJlciBqb2luLgBVbmFibGUgdG8gc2V0IFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgb24gYSBub24tZXhpc3RlbnQgb3IgbWlzY29uZmlndXJlZCByZXBsaWNhdGlvbiBjaGFubmVsICclcycsIHBsZWFzZSBjcmVhdGUgdGhlIGNoYW5uZWwgYW5kIHJlam9pbiB0aGUgc2VydmVyIHRvIHRoZSBncm91cC4AVW5hYmxlIHRvIHJlZ2lzdGVyIHRoZSBsaXN0ZW5lciAncmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXJfY29uZmlndXJhdGlvbicgdG8gdGhlIHNlcnZpY2UgJ2dyb3VwX3JlcGxpY2F0aW9uX21lc3NhZ2Vfc2VydmljZV9yZWN2Jy4AVGhpcyBzZXJ2ZXIgaXMgbm90IGFibGUgdG8gcmVhY2ggYSBtYWpvcml0eSBvZiBtZW1iZXJzIGluIHRoZSBncm91cC4gVGhpcyBzZXJ2ZXIgd2lsbCBza2lwIHRoZSByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBoYW5kbGluZyB1bnRpbCB0aGlzIHNlcnZlciBpcyBiYWNrIHRvIHRoZSBncm91cCBtYWpvcml0eS4AVGhpcyBzZXJ2ZXIgaXMgYmFjayB0byB0aGUgZ3JvdXAgbWFqb3JpdHkuIFJlcGxpY2F0aW9uIGZhaWxvdmVyIGNoYW5uZWxzIGhhbmRsaW5nIGlzIHJlc3VtZWQuAEVycm9yIGluY3JlbWVudGluZyBtZW1iZXIgYWN0aW9uIGNvbmZpZ3VyYXRpb24gdmVyc2lvbiBmb3IgJXMuJXMgdGFibGUuAFRoZSAnJXMnIHRocmVhZCBvZiBjaGFubmVsICclcycgd2lsbCBlcnJvciBvdXQgYXMgdGhpcyBzZXJ2ZXIgaXMgYSBncm91cCBzZWNvbmRhcnkuAENsb25lIERETCBOb3RpZmljYXRpb246ICVzAENsb25lIERETCBBUFBMWTogJXMAQ2xvbmUgRERMIEludmFsaWRhdGUgOiAlcwBFbmNyeXB0aW9uIGtleSBpcyBsb2FkZWQgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBJZ25vcmluZyBlbmNyeXB0aW9uIElORk8gc2l6ZSBpbiByZWRvIGxvZzogJXp1LCBleHBlY3RlZDogJXp1AE9wdGlvbiAtLWF1dGhlbnRpY2F0aW9uLXBvbGljeSBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4gUGxlYXNlIGNoZWNrIGlmIHRoZSBzcGVjaWZpZWQgYXV0aGVudGljYXRpb24gcGx1Z2lucyBhcmUgdmFsaWQuAFNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIGR1cmluZyByZWdpc3RyYXRpb24uAEJ1ZmZlciB0b28gc21hbGwgdG8gaG9sZCByZWdpc3RyYXRpb24gY2hhbGxlbmdlIHJlc3BvbnNlLgBGSURPIGRldmljZSBhdXRoZW50aWNhdG9yIGRhdGEgY29ycnVwdC4ARklETyBkZXZpY2Ugc2lnbmF0dXJlIGNvcnJ1cHQuAFNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIGR1cmluZyBhdXRoZW50aWNhdGlvbi4AT3V0IG9mIG1lbW9yeS4AQ2FuJ3QgaW5pdGlhbGl6ZSBsb2dnaW5nIHNlcnZpY2UuAFJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEdUSURfT05MWT0xLCB3aGljaCBpcyBpbnZhbGlkIHdoZW4gR1RJRF9NT0RFIDw+IE9OLiBJZiB5b3UgaW50ZW5kIHRvIGRpc2FibGUgR1RJRHMgaW4gdGhlIHJlcGxpY2F0aW9uIHRvcG9sb2d5LCBjaGFuZ2UgR1RJRF9PTkxZIHRvIDAuAFRoZSByZXBsaWNhdGlvbiBwb3NpdGlvbnMgcmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBtYXkgYmUgb3V0LW9mLWRhdGUgb24gY2hhbm5lbCAnJS4xOTJzJywgZHVlIHRvIHRoZSB1c2Ugb2YgR1RJRF9PTkxZPTEuIFRoZSBvdXQtb2YtZGF0ZSBwb3NpdGlvbnMgY2FuIHN0aWxsIGJlIHVzZWQgaW4gc29tZSBjYXNlcyBzbywgaW4gb3JkZXIgdG8gdXBkYXRlIHRoZW0sIHdlIHN1Z2dlc3QgdGhhdCB5b3Ugc3RhcnQgdGhlIHJlcGxpY2F0aW9uIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGF0IGxlYXN0IG9uZSB0cmFuc2FjdGlvbiwgd2hpY2ggd2lsbCBzZXQgdGhlIHBvc2l0aW9ucyB0byB2YWxpZCB2YWx1ZXMuAENvdWxkIG5vdCBvcGVuIHJlbGF5IGxvZzogJXMAQXV0aGVudGljYXRpb24gcGx1Z2luIG5vdCBpbml0aWFsaXplZC4AQ2Fubm90IHVzZSB0aGUgZ2VuZXJhdGVkIHByaXZhdGUga2V5IGZpbGUuAFVuYXZhaWxhYmxlIHB1YmxpYyBrZXkgd2l0aCBmaW5nZXJwcmludCAlcyBmb3IgdXNlciAlcyBpbiB0ZW5hbmN5ICVzIC4AQ2Fubm90IG9idGFpbiB0aGUgT0NJIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgSU1EUyBzZXJ2aWNlLgBDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgSUFNIHNlcnZpY2UuAEludmFsaWQgYXV0aGVudGljYXRpb24gc3RyaW5nIGRldGFpbHMgZm9yIHVzZXI6IGAlc2BAYCVzYC4ATm9uZSBvZiB0aGUgZ3JvdXBzIHJldHVybmVkIGJ5IElBTSBtYXRjaGVzIGFueSBvZiB0aGUgZW50cmllcyBmcm9tIGF1dGhlbnRpY2F0aW9uIHN0cmluZy4AVXNlciBpcyBub3QgcGFydCBvZiBhbnkgZ3JvdXBzLiBIb3dldmVyLCBhY2NvdW50IGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGdyb3VwIG1hcHBpbmcuAFJlY2VpdmVkIE9wZW5TU0wgZXJyb3I6ICVzIHdoaWxlIGF1dGhlbnRpY2F0aW5nIHVzZXIgJXMgd2l0aCBmaW5nZXJwcmludCAlcyBpbiB0ZW5hbmN5ICVzIC4AJXM6IFdhcm5pbmcgTGV2ZWwgMSAoJWxsdSBNaUIpOiBhdmFpbGFibGU9JWxsdSBNaUIsIHRvdGFsPSVsbHUgTWlCLCB1c2VkPSUuMmYlJSwgbXlzcWxkPSVsbHUgTWlCACVzOiBXYXJuaW5nIExldmVsIDIgKCVsbHUgTWlCKTogYXZhaWxhYmxlPSVsbHUgTWlCLCB0b3RhbD0lbGx1IE1pQiwgdXNlZD0lLjJmJSUsIG15c3FsZD0lbGx1IE1pQgAlczogV2FybmluZyBMZXZlbCAzICglbGx1IE1pQik6IGF2YWlsYWJsZT0lbGx1IE1pQiwgdG90YWw9JWxsdSBNaUIsIHVzZWQ9JS4yZiUlLCBteXNxbGQ9JWxsdSBNaUIAVGhlIG1lbWJlciAlczoldSwgd2l0aCBVVUlEOiAlcywgd2FzIHNldCBhcyB0aGUgc2luZ2xlIHByZWZlcnJlZCBjb25zZW5zdXMgbGVhZGVyLgBTb21ldGhpbmcgd2VudCB3cm9uZyB0cnlpbmcgdG8gc2V0IHRoZSBtZW1iZXIgJXM6JXUsIHdpdGggVVVJRDogJXMsIGFzIHRoZSBzaW5nbGUgcHJlZmVycmVkIGNvbnNlbnN1cyBsZWFkZXIuIFBsZWFzZSBxdWVyeSB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX2NvbW11bmljYXRpb25faW5mb3JtYXRpb24gdGFibGUgdG8gc2VlIHdoZXRoZXIgdGhlIG9wZXJhdGlvbiB0b29rIGVmZmVjdCwgaS5lLiB3aGV0aGVyIHRoZSBwcmVmZXJyZWQgY29uc2Vuc3VzIGxlYWRlciBtYXRjaGVzIHRoZSBjdXJyZW50IHByaW1hcnkuIElmIG5vdCwgY29uc2lkZXIgZWxlY3RpbmcgYSBkaWZmZXJlbnQgcHJpbWFyeSB0byB0cnkgYWdhaW4uIFBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbG9nIGFuZCBHQ1NfREVCVUdfVFJBQ0UgZm9yIG1vcmUgaW5mb3JtYXRpb24gdGhhdCBtYXkgaGVscCB1bmRlcnN0YW5kaW5nIHdoYXQgd2VudCB3cm9uZy4AQWxsIG1lbWJlcnMgd2VyZSBzZXQgYXMgY29uc2Vuc3VzIGxlYWRlcnMuAFNvbWV0aGluZyB3ZW50IHdyb25nIHRyeWluZyB0byBzZXQgYWxsIG1lbWJlcnMgYXMgY29uc2Vuc3VzIGxlYWRlcnMuIFBsZWFzZSBxdWVyeSB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX2NvbW11bmljYXRpb25faW5mb3JtYXRpb24gdGFibGUgdG8gc2VlIHdoZXRoZXIgdGhlIG9wZXJhdGlvbiB0b29rIGVmZmVjdCwgaS5lLiB3aGV0aGVyIHRoZSBjb25zZW5zdXMgbGVhZGVycyBtYXRjaCBhbGwgbWVtYmVycy4gSWYgbm90LCBjb25zaWRlciByZXNldHRpbmcgdGhlIGdyb3VwIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdG8gYSB2ZXJzaW9uIDwgOC4wLjIyLCBvciBzd2l0Y2ggdG8gc2luZ2xlLXByaW1hcnkgbW9kZSBhbmQgYmFjayBhZ2FpbiB0byBtdWx0aS1wcmltYXJ5IG1vZGUsIHRvIHRyeSBhZ2Fpbi4gUGxlYXNlIGNoZWNrIHRoZSBlcnJvciBsb2cgYW5kIEdDU19ERUJVR19UUkFDRSBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0aGF0IG1heSBoZWxwIHVuZGVyc3RhbmRpbmcgd2hhdCB3ZW50IHdyb25nLgBUaGlzIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBncm91cF9yZXBsaWNhdGlvbl9wYXhvc19zaW5nbGVfbGVhZGVyIG9wdGlvbiB2YWx1ZSBvZiAnJWQnIHRoYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwJ3MgdmFsdWUgKCclZCcpLiBUaGlzIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ASW52YWxpZCBhbmQvb3IgY29ycnVwdGVkIG11bHRpIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGluIFVzZXJfYXR0cmlidXRlcyBjb2x1bW4gaW4gbXlzcWwudXNlciB0YWJsZS4gIiVzIi4AUGx1Z2luICclLS4xOTJzJyBpcyBub3QgbG9hZGVkOyBJZ25vcmluZyB1c2VyACVzOiBUaGUgY2hhcmFjdGVyIHNldCAlcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nICVzIGluc3RlYWQuACVzOiAnJS0uNjRzJyBpcyBhIGNvbGxhdGlvbiBvZiB0aGUgZGVwcmVjYXRlZCBjaGFyYWN0ZXIgc2V0ICVzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgJXMgd2l0aCBhbiBhcHByb3ByaWF0ZSBjb2xsYXRpb24gaW5zdGVhZC4ATWlzc2luZyBkYXRhIGRpcmVjdG9yeSBmb3IgSUNVIHJlZ3VsYXIgZXhwcmVzc2lvbnM6ICVzLgBNb3JlIHRoYW4gOTAlJSBvZiBmaWxlcyBvcGVuZWQgb3V0IG9mIHRoZSBpbm5vZGJfb3Blbl9maWxlcyBsaW1pdCBhcmUgZmlsZXMgdGhhdCBhcmUgbm90IGVhc3kgdG8gY2xvc2UuIFRoZSBwZXJmb3JtYW5jZSBvZiBzeXN0ZW0gbWF5IGRlZ3JhZGUuIENvbnNpZGVyIGluY3JlYXNpbmcgdmFsdWUgb2YgdGhlIGlubm9kYl9vcGVuX2ZpbGVzIHN5c3RlbSB2YXJpYWJsZS4gVGhlcmUgYXJlICV6dSBzdWNoIGZpbGVzIG9wZW5lZCBvdXQgb2YgdGhlIHRvdGFsIGxpbWl0IGZvciBhbGwgZmlsZXMgb3BlbmVkIG9mICV6dS4AVHJ5aW5nIHRvIG9wZW4gYSBmaWxlIGZvciAlbGxkIHNlY29uZHMuIENvbmZpZ3VyYXRpb24gb25seSBhbGxvd3MgZm9yICV6dSBvcGVuIGZpbGVzLiBDb25zaWRlciBzZXR0aW5nIGlubm9iYXNlX29wZW5fZmlsZXMgaGlnaGVyLgBDb25uZWN0aW9uIGNsb3NlZC4gR2xvYmFsIGNvbm5lY3Rpb24gbWVtb3J5IGxpbWl0ICVsbHUgYnl0ZXMgZXhjZWVkZWQuIENvbnN1bWVkICVsbHUgYnl0ZXMuAENvbm5lY3Rpb24gY2xvc2VkLiBDb25uZWN0aW9uIG1lbW9yeSBsaW1pdCAlbGx1IGJ5dGVzIGV4Y2VlZGVkLiBDb25zdW1lZCAlbGx1IGJ5dGVzLgBBdWRpdCBMb2cgaXMgZGlzYWJsZWQuIEVuYWJsZSBpdCB3aXRoIGF1ZGl0X2xvZ19kaXNhYmxlID0gZmFsc2UuAE9wdGlvbiAtLXRscy12ZXJzaW9uIG9yIC0tYWRtaW4tdGxzLXZlcnNpb24gaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUgJXMuAFJlbGF5IGxvZyByZWNvdmVyeSBvbiBjaGFubmVsIHdpdGggR1RJRF9PTkxZPTEuIFRoZSBjaGFubmVsIHdpbGwgc3dpdGNoIHRvIGEgbmV3IHJlbGF5IGxvZyBhbmQgdGhlIEdUSUQgcHJvdG9jb2wgd2lsbCBiZSB1c2VkIHRvIHJlcGxpY2F0ZSB1bmFwcGxpZWQgdHJhbnNhY3Rpb25zLgBOdW1iZXIgb2YgU1RBTkRCWV9TRVJWRVIgdmFsdWVzIGV4Y2VlZGVkIG1heGltdW0gbGltaXQgb2YgNjQuAFNvdXJjZSBrZXlyaW5nIGRvZXMgbm90IGhhdmUgYW55IGtleXMgdG8gbWlncmF0ZS4AQ2Fubm90IHBlcnNpc3QgU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZXMgYmVjYXVzZSBrZXlyaW5nIGNvbXBvbmVudCBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlIGFuZCBwZXJzaXN0X3NlbnNpdGl2ZV92YXJpYWJsZXNfaW5fcGxhaW50ZXh0IGlzIHNldCB0byBPRkYuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCBrZXlyaW5nIHNlcnZpY2VzIGFyZSBhY3RpdmUgYW5kIHJlcXVpcmVkIGtleXMgYXJlIGF2YWlsYWJsZS4AQ2Fubm90IGludGVycHJldCBwZXJzaXN0ZWQgU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZXMuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCBrZXlyaW5nIHNlcnZpY2VzIGFyZSBhY3RpdmUgYW5kIHJlcXVpcmVkIGtleXMgYXJlIGF2YWlsYWJsZS4AS2V5cmluZyBoYXMgdG8gYmUgbG9hZGVkIHRocm91Z2ggbWFuaWZlc3QgZmlsZSBpbiBvcmRlciB0byBzdXBwb3J0IHNlY3VyZSBzdG9yYWdlIGZvciBwZXJzaXN0ZWQgdmFyaWFibGVzAENvdWxkIG5vdCBmaW5kIG1hc3RlciBrZXkgJXMgaW4ga2V5cmluZwBBIG5ldyBtYXN0ZXIga2V5ICVzIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQARmFpbGVkIHRvIGVuY3J5cHQgJXMgdXNpbmcgJXMARmFpbGVkIHRvIGRlY3J5cHQgJXMgdXNpbmcgJXMAUGVyc2lzdGluZyBTRU5TSVRJVkUgdmFyaWFibGVzIGluIGVuY3J5cHRlZCBmb3JtIHJlcXVpcmVzIGtleXJpbmcgY29tcG9uZW50IGxvYWRlZCB0aHJvdWdoIG1hbmlmZXN0IGZpbGUuAFVzaW5nIGplbWFsbG9jLmRsbCBmb3IgbXlfbWFsbG9jIGFuZCB1dDo6bWFsbG9jIGV0Yy4AJXMuACVzLgAlcy4AUGFzc3dvcmQgZm9yIHRoZSBhY2NvdW50ICclLS40OHMnQCclLS42NHMnIGhhcyBleHBpcmVkLiBUbyBsb2cgaW4sIGVpdGhlciBjaGFuZ2UgaXQgdXNpbmcgYSBjbGllbnQgdGhhdCBzdXBwb3J0cyBleHBpcmVkIHBhc3N3b3JkcyBvciBzZW5kIHRoZSBjaGFuZ2UgcmVxdWVzdCB0byBhbiBhZG1pbmlzdHJhdG9yLgBUaHJlYWQgcG9vbCBwbHVnaW4gc3RhcnRlZCBzdWNjZXNzZnVsbHkgd2l0aCBwYXJhbWV0ZXJzOiAlcwB0aHJlYWRfcG9vbF9kZWRpY2F0ZWRfbGlzdGVuZXJzIGNhbm5vdCBiZSBzZXQgdW5sZXNzIHRocmVhZF9wb29sX21heF90cmFuc2FjdGlvbnNfbGltaXQgPiAwACVzACVzAFRoZSByZWRvIGxvZyBmaWxlICVzIGlzIGVtcHR5LCB3aGljaCBpbmRpY2F0ZXMgaXQgd2FzIG5vdCBnZW5lcmF0ZWQgYnkgSW5ub0RCIG9yIGJlY29tZSBjb3JydXB0ZWQuIFBsZWFzZSByZXN0b3JlIHRoZSBjb3JyZWN0IGZpbGUgb3IgdHJ5IHJlY292ZXJpbmcgd2l0aG91dCB0aGUgcmVkbyBmaWxlcywgaW4gcmVhZC1vbmx5IG1vZGUsIGJ5IHByb3ZpZGluZyAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT02LgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBpcyBzbWFsbGVyIHRoYW4gJWxsdSBieXRlcywgd2hpY2ggaW5kaWNhdGVzIGl0IHdhcyBub3QgZ2VuZXJhdGVkIGJ5IElubm9EQiBvciBiZWNvbWUgY29ycnVwdGVkLiBQbGVhc2UgcmVzdG9yZSB0aGUgY29ycmVjdCBmaWxlLgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBpcyBsYXJnZXIgdGhhbiAlbGx1IGJ5dGVzLCB3aGljaCBpbmRpY2F0ZXMgaXQgd2FzIG5vdCBnZW5lcmF0ZWQgYnkgSW5ub0RCIG9yIGJlY29tZSBjb3JydXB0ZWQuIFBsZWFzZSByZXN0b3JlIHRoZSBjb3JyZWN0IGZpbGUuAEZhaWxlZCB0byByZWFkIGhlYWRlciBvZiB0aGUgcmVkbyBsb2cgZmlsZSAlcwAtLWluaXRpYWxpemUgc3BlY2lmaWVkIGJ1dCB0aGUgcmVkbyBsb2cgZGlyZWN0b3J5ICVzIGhhcyByZWRvIGxvZyBmaWxlcyBpbnNpZGUuIEFib3J0aW5nLgBGYWlsZWQgdG8gbGlzdCByZWRvIGxvZyBmaWxlcyBpbiB0aGUgcmVkbyBsb2cgZGlyZWN0b3J5ICVzAE5laXRoZXIgZm91bmQgJXMgc3ViZGlyZWN0b3J5LCBub3IgJXMqIGZpbGVzIGluICVzAENhbm5vdCByZXN0b3JlIGNsb25lZCBkYXRhIGRpcmVjdG9yeSwgSW5ub0RCIHJ1bm5pbmcgaW4gcmVhZC1vbmx5IG1vZGUhAEVycm9yICVkIGVuY291bnRlcmVkIHdoZW4gd3JpdGluZyB0byB0aGUgcmVkbyBsb2cgZmlsZTogJXMuAFJlZG8gbG9nIHdyaXRlciBpcyB3YWl0aW5nIGZvciBhIG5ldyByZWRvIGxvZyBmaWxlLiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4ARm91bmQgY2hlY2twb2ludCBMU04gJWxsdSBpbiBhIHJlZG8gbG9nIGZpbGUgJXMsIGJ1dCB0aGUgZmlsZSByZXByZXNlbnRzIHJhbmdlIG9mIExTTiB2YWx1ZXMgWyVsbHUsICVsbHUpLCBzbyB0aGUgZmlsZSBpcyBjb3JydXB0ZWQuAFJlZG8gbG9nIGlzIHJ1bm5pbmcgb3V0IG9mIGZyZWUgc3BhY2UsIHBhdXNpbmcgdXNlciB0aHJlYWRzLi4uIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgBSZWRvIGxvZyByZWNsYWltZWQgc29tZSBmcmVlIHNwYWNlLCByZXN1bWluZyB1c2VyIHRocmVhZHMuAElnbm9yZWQgZGVwcmVjYXRlZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpbm5vZGJfbG9nX2ZpbGVfc2l6ZS4gVXNlZCBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgaW5zdGVhZC4ASWdub3JlZCBkZXByZWNhdGVkIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGlubm9kYl9sb2dfZmlsZXNfaW5fZ3JvdXAuIFVzZWQgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5IGluc3RlYWQuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMgd2hlbiBpbm5vZGItZm9yY2UtcmVjb3ZlcnkgPiAwLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIGluIHJlYWQtb25seSBtb2RlICgtLWlubm9kYi1yZWFkLW9ubHkpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIG9uIGNsb25lZCBkYXRhIGRpcmVjdG9yeS4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcyBiZWNhdXNlIHRoZXkgYXJlIG1hcmtlZCBhcyB1bmluaXRpYWxpemVkLiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIHdoZW4gdGhlIHJlZG8gbG9nIGlzIGNvcnJ1cHRlZC4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcyB3aGVuIHRoZXJlIGlzIG5vbi1wZXJzaXN0ZWQgREQgbWV0YWRhdGEgaW4gcmVkby4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcywgYmVjYXVzZSBJbm5vREIgZmFpbGVkIHRvIHJlYWNoIHN0YXRlIGluIHdoaWNoIHJlZG8gbG9nIGlzIGxvZ2ljYWxseSBlbXB0eS4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4ARmFpbGVkIHRvIHJlc2l6ZSB0aGUgcmVkbyBsb2cgc3luY2hyb25vdXNseSwgYmVjYXVzZSBJbm5vREIgZmFpbGVkIHRvIHJlYWNoIHN0YXRlIGluIHdoaWNoIHJlZG8gbG9nIGlzIGxvZ2ljYWxseSBlbXB0eS4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AVGhlIHJlZG8gbG9nIGZpbGUgJXMgY29tZXMgZnJvbSBvdGhlciBkYXRhIGRpcmVjdG9yeSB0aGFuIHJlZG8gbG9nIGZpbGUgJXMuAFRoZSByZWRvIGxvZyBmaWxlICVzIGhhcyBpbnZhbGlkIHN0YXJ0X2xzbiAlbGx1LgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBoYXMgc3RhcnRfbHNuICVsbHUgYnV0IGV4cGVjdGVkICVsbHUgKGVuZF9sc24gb2YgdGhlIHByZXZpb3VzIHJlZG8gbG9nIGZpbGUpLgBNaXNzaW5nIHJlZG8gbG9nIGZpbGUgJXMgKHdpdGggc3RhcnRfbHNuID0gJWxsdSkuAFRoZSBsYXRlc3QgZm91bmQgY2hlY2twb2ludCBpcyBhdCBsc24gPSAlbGx1IGluIHJlZG8gbG9nIGZpbGUgJXMuAFVzZXIgaGFzIHNldCBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgdG8gJWxsdU0uAFJlZG8gbG9nIGhhcyBiZWVuIHJlcXVlc3RlZCB0byByZXNpemUgZnJvbSAlbGx1TSB0byAlbGx1TS4AUmVkbyBsb2cgcmVzaXplIGhhcyBiZWVuIGNhbmNlbGxlZC4AUmVkbyBsb2cgaGFzIGJlZW4gcmVzaXplZCB0byAlbGx1TS4AVXBncmFkaW5nIHJlZG8gbG9nOiAlbGx1TSwgTFNOPSVsbHUuAE1hcmtlZCB0aGUgY3VycmVudCByZWRvIGxvZyBmaWxlICVzIGFzIGluY29tcGxldGUuAEZhaWxlZCB0byByZW1vdmUgcmVkbyBsb2cgZmlsZSAlcy4ARmFpbGVkIHRvIHJlbmFtZSAlcyB3aGVuIGNyZWF0aW5nIHJlZG8gbG9nIGZpbGUgJXMgKGVycm9yOiAlZCkAUmVkbyBsb2cgZmlsZXMgY3JlYXRlZCBieSB1bmtub3duIGNyZWF0b3IgJXMuAEZvdW5kIGV4aXN0aW5nIHJlZG8gbG9nIGZpbGVzLCBidXQgYXQgbGVhc3Qgb25lIGlzIG1pc3NpbmcuIEl0IGlzIHVua25vd24gaWYgcmVjb3ZlcnkgY291bGQgcmVhY2ggcGh5c2ljYWxseSBjb25zaXN0ZW50IHN0YXRlLiBQbGVhc2UgY29uc2lkZXIgcmVzdG9yaW5nIGZyb20gYmFja3VwIG9yIHByb3ZpZGluZyAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeSA+IDAuAEZvdW5kIHJlZG8gbG9nIGZpbGUgJXMgd2hpY2ggaGFzIGZvcm1hdCAodiVsdSkgYW5kIGlzIHN0b3JlZCBvdXRzaWRlICNpbm5vZGJfcmVkby4ARm91bmQgcmVkbyBsb2cgZmlsZSAlcyB3aGljaCBoYXMgZm9ybWF0ICh2JWx1KSBhbmQgaXMgc3RvcmVkIGluc2lkZSAjaW5ub2RiX3JlZG8uAEZvdW5kIHJlZG8gbG9nIGZpbGVzIHdpdGggZGlmZmVyZW50IGZvcm1hdHM6ICVzIGhhcyBmb3JtYXQgdiVsdSwgJXMgaGFzIGZvcm1hdCB2JWx1LgBNaXNzaW5nIGliX2xvZ2ZpbGUwIGluIHRoZSBkaXJlY3RvcnkgJXMuAEZhaWxlZCB0byBpbml0aWFsaXplIHNlcnZpY2VzIHJlcXVpcmVkIHRvIGhhbmRsZSByZWRvIGxvZyBQRlMgdGFibGVzLgBGYWlsZWQgdG8gY3JlYXRlIHJlZG8gbG9nIFBGUyB0YWJsZXMuAFRydW5jYXRpbmcgcmVkbyBsb2cgZmlsZSAlcy4uLgBGYWlsZWQgdG8gcmVzaXplIHVudXNlZCByZWRvIGxvZyBmaWxlICVzIHRvICVsbHUgTUIgKCVzKS4ARmFpbGVkIHRvIHJlbW92ZSB1bnVzZWQgcmVkbyBsb2cgZmlsZSAlcy4ARmFpbGVkIHRvIHJlbmFtZSB1bnVzZWQgcmVkbyBsb2cgZmlsZSAlcyB0byAlcy4ARmFpbGVkIHRvIG1hcmsgdW51c2VkIHJlZG8gbG9nIGZpbGUgJXMgYXMgaW4gdXNlIChieSByZW5hbWluZyB0byAlcykuAEZhaWxlZCB0byBtYXJrIHJlZG8gbG9nIGZpbGUgJXMgYXMgdW51c2VkIChieSByZW5hbWluZyB0byAlcykuAE9wdGlvbiBpbm5vZGJfZGVkaWNhdGVkX3NlcnZlciBpcyBpZ25vcmVkIGZvciBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHksIGJlY2F1c2UgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LCBpbm5vZGJfbG9nX2ZpbGVfc2l6ZSBvciBpbm5vZGJfbG9nX2ZpbGVzX2luX2dyb3VwIGlzIHNwZWNpZmllZCBleHBsaWNpdGx5LiBSZWRvIGxvZyBjYXBhY2l0eTogJWxsdU0uAERlcHJlY2F0ZWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGlubm9kYl9sb2dfZmlsZV9zaXplIGFuZC9vciBpbm5vZGJfbG9nX2ZpbGVzX2luX2dyb3VwIGhhdmUgYmVlbiB1c2VkIHRvIGNvbXB1dGUgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5PSVsbHUuIFBsZWFzZSB1c2UgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5IGluc3RlYWQuAFRoaXMgbWVtYmVyIHdhcyB1bmFibGUgdG8gbG9nIHRoZSBWaWV3X2NoYW5nZV9sb2dfZXZlbnQgaW50byB0aGUgYmluYXJ5IGxvZywgaGVuY2UgaXQgd2lsbCBsZWF2ZSB0aGUgZ3JvdXAuIFBsZWFzZSBjaGVjayB0aGF0IHRoZXJlIGlzIGF2YWlsYWJsZSBkaXNrIHNwYWNlIGFuZCBhZGQgdGhlIG1lbWJlciBiYWNrIHRvIHRoZSBncm91cC4ARm91bmQgaW52YWxpZCBldmVudCBzZXF1ZW5jZSB3aGlsZSByZWNvdmVyaW5nIGZyb20gYmluYXJ5IGxvZyBmaWxlICclcycsIGJldHdlZW4gcG9zaXRpb25zICVsbHUgYW5kICVsbHU6ICVzLiBUaGUgcmVjb3ZlcnkgcHJvY2VzcyB3YXMgc3RvcHBlZCBlYXJseSBhbmQgbm8gdHJhbnNhY3Rpb24gd2FzIHJlY292ZXJlZC4gU2lkZSBlZmZlY3RzIG1heSBiZSB0cmFuc2FjdGlvbnMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlIGJldHdlZW4gdGhlIGJpbmFyeSBsb2cgYW5kIHRoZSBzdG9yYWdlIGVuZ2luZXMsIG9yIHRyYW5zYWN0aW9ucyBrZXB0IGJ5IHN0b3JhZ2UgZW5naW5lcyBpbiBhIHByZXBhcmVkIHN0YXRlIChwb3NzaWJseSBob2xkaW5nIGxvY2tzKS4gRWl0aGVyIGZpeCB0aGUgaXNzdWVzIHdpdGggdGhlIGJpbmFyeSBsb2cgb3IsIHRvIHJlbGVhc2UgcG9zc2libHkgYWNxdWlyZWQgbG9ja3MsIGRpc2FibGUgdGhlIGJpbmFyeSBsb2cgZHVyaW5nIHNlcnZlciByZWNvdmVyeS4gTm90ZSB0aGF0IGRpc2FibGluZyB0aGUgYmluYXJ5IGxvZyBtYXkgbGVhZCB0byBsb3NzIG9mIHRyYW5zYWN0aW9ucyB0aGF0IHdlcmUgYWxyZWFkeSBhY2tub3dsZWRnZWQgYXMgc3VjY2Vzc2Z1bCB0byBjbGllbnQgY29ubmVjdGlvbnMgYW5kIG1heSBoYXZlIGJlZW4gcmVwbGljYXRlZCB0byBvdGhlciBzZXJ2ZXJzIGluIHRoZSB0b3BvbG9neS4AU3RvcmFnZSBlbmdpbmVzIGZhaWxlZCB0byByZWNvdmVyIG9uZSBvciBtb3JlIHRyYW5zYWN0aW9ucy4gVGhlIHJlY292ZXJ5IHByb2Nlc3Mgd2FzIHN0b3BwZWQgZWFybHksIGNoZWNrIHByZXZpb3VzIG1lc3NhZ2VzIGZvciB0aGUgZGV0YWlscyBvbiBmYWlsZWQgdHJhbnNhY3Rpb25zLiBTaWRlIGVmZmVjdHMgbWF5IGJlIHRyYW5zYWN0aW9ucyBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgYmV0d2VlbiB0aGUgYmluYXJ5IGxvZyBhbmQgdGhlIHN0b3JhZ2UgZW5naW5lcywgb3IgdHJhbnNhY3Rpb25zIGtlcHQgYnkgc3RvcmFnZSBlbmdpbmVzIGluIGEgcHJlcGFyZWQgc3RhdGUgKHBvc3NpYmx5IGhvbGRpbmcgbG9ja3MpLiBFaXRoZXIgZml4IHRoZSBpc3N1ZXMgd2l0aCB0aGUgc3RvcmFnZSBlbmdpbmUgKG91dC1vZi1tZW1vcnksIG5vIGRpc2sgc3BhY2UsIGV0Yykgb3IsIHRvIHJlbGVhc2UgcG9zc2libHkgYWNxdWlyZWQgbG9ja3MgaGVsZCBieSBYQSB0cmFuc2FjdGlvbnMsIGRpc2FibGUgdGhlIGJpbmFyeSBsb2cgZHVyaW5nIHNlcnZlciByZWNvdmVyeSBhbmQgY2hlY2sgY29uc2lzdGVuY3kgYmV0d2VlbiBzdG9yYWdlIGVuZ2luZXMgYW5kIGJpbmFyeSBsb2cgZmlsZXMuAENyYXNoIHJlY292ZXJ5IGZpbmlzaGVkIGluICVzIGVuZ2luZS4gJXMARmFpbGVkIHRvIGNvbW1pdCAlcyBpbiAlcywgd2l0aCBmYWlsdXJlIGNvZGUgJXMuAEZhaWxlZCB0byByb2xsYmFjayAlcyBpbiAlcywgd2l0aCBmYWlsdXJlIGNvZGUgJXMuAEZhaWxlZCB0byBwcmVwYXJlICVzIGluICVzLCB3aXRoIGZhaWx1cmUgY29kZSAlcy4AQ2Fubm90IHJlZ2lzdGVyIHZhcmlhYmxlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCBpcyBub3QgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IGFub3RoZXIgY29tcG9uZW50LgBDYW5ub3QgdW5yZWdpc3RlciB2YXJpYWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgd2FzIHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gdGhlIGZpcnN0IHBsYWNlLgBDYW5ub3QgcmVnaXN0ZXIgZnVuY3Rpb24gJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQuAENhbm5vdCB1bnJlZ2lzdGVyIGZ1bmN0aW9uICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAEludmFsaWQgYXJndW1lbnRzIHRvIGZ1bmN0aW9uICclcycuIEV4cGVjdGVkIHZhbHVlczogJXMuAEludmFsaWQgYWxnb3JpdGhtIHZhbHVlICclLjIwcycgaW4gZnVuY3Rpb24gJXMuAEludmFsaWQga2V5IGxlbmd0aCAnJWQnIGZvciBmdW5jdGlvbiAnJXMnIHdpdGggYWxnb3JpdGhtICclLjIwcycuIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgYmV0d2VlbiBbJWQsICVkXS4ARmFpbGVkIHRvIGdlbmVyYXRlIHByaXZhdGUga2V5IG9mIGxlbmd0aCAnJWQnIHdpdGggYWxnb3JpdGhtICclLjIwcycgaW4gZnVuY3Rpb24gJyVzJy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGJlZW4gbG9nZ2VkIGJlZm9yZSB0aGlzIG1lc3NhZ2UuAEZhaWxlZCB0byBnZW5lcmF0ZSBwdWJsaWMga2V5IHdpdGggYWxnb3JpdGhtICclLjIwcycgZm9yIGdpdmVuIHByaXZhdGUga2V5IGluIGZ1bmN0aW9uICclcycuIE1vcmUgZGV0YWlscyBhYm91dCB0aGUgZXJyb3Igd291bGQgaGF2ZSBiZWVuIGxvZ2dlZCBiZWZvcmUgdGhpcyBtZXNzYWdlLgBJbnZhbGlkIGRhdGEgbGVuZ3RoICclZCcgKGluIGJ5dGVzKSBmb3IgZnVuY3Rpb24gJyVzJyB3aXRoIGFsZ29yaXRobSAnJS4yMHMnLiBUaGUgbWF4aW11bSBzdXBwb3J0IGRhdGEgbGVuZ3RoIGZvciBnaXZlbiBwcml2YXRlIGtleSBpcyAlZCAoaW4gYnl0ZXMpLgBDb3VsZCBub3QgZW5jcnlwdCBkYXRhIGluIGZ1bmN0aW9uICclcycgdXNpbmcgYWxnb3JpdGhtICclLjIwcycuIERhdGEgbGVuZ3RoIHdhcyAnJWQnIGJ5dGVzLiBNb3JlIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yIHdvdWxkIGhhdmUgYmVlbiBsb2dnZWQgYmVmb3JlIHRoaXMgbWVzc2FnZS4AQ291bGQgbm90IGRlY3J5cHQgZGF0YSBpbiBmdW5jdGlvbiAnJXMnIHVzaW5nIGFsZ29yaXRobSAnJS4yMHMnLiBEYXRhIGxlbmd0aCB3YXMgJyVkJyBieXRlcy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGJlZW4gbG9nZ2VkIGJlZm9yZSB0aGlzIG1lc3NhZ2UuAENvdWxkIG5vdCBzaWduIGRhdGEgaW4gZnVuY3Rpb24gJyVzJyB1c2luZyBhbGdvcml0aG0gJyUuMjBzJyBhbmQgZGlnZXN0IHR5cGUgJyUuMjBzJy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGxvZ2dlZCBiZWZvcmUgdGhpcyBtZXNzYWdlLgBSZWNlaXZlZCBPcGVuU1NMIGVycm9yIGluIGZ1bmN0aW9uICclcycgZm9yIGFsZ29yaXRobSAnJXMnOiAnJXMnAEluIGZ1bmN0aW9uICclcycgd2l0aCBhbGdvcml0aG0gJyVzJzogaW5zdWZmaWNpZW50IG91dHB1dCBidWZmZXIgbGVuZ3RoICclenUnLiBSZXF1aXJlZCBsZW5ndGggJyV6dScuACVzJXMAU2V0dGluZyBzZXNzaW9uIHZhbHVlcyBmb3Igc3lzdGVtIHZhcmlhYmxlcyBvbmx5IG1ha2VzIHNlbnNlIGluIGEgdXNlciBzZXNzaW9uIChmYWlsZWQgdG8gc2V0ICclLjI1NnMnKS4AQnVpbGRJRFtzaGExXT0lcwBGYWlsZWQgdG8gcmVnaXN0ZXIgZHluYW1pYyBwcml2aWxlZ2UgJXMuAFJlZG8gbG9nIHdyaXRlciBpcyB3YWl0aW5nIGZvciAlcyByZWRvIGxvZyBjb25zdW1lciB3aGljaCBpcyBjdXJyZW50bHkgcmVhZGluZyBMU049JWxsdSBwcmV2ZW50aW5nIHJlY2xhbWF0aW9uIG9mIHN1YnNlcXVlbnQgcG9ydGlvbiBvZiB0aGUgcmVkbyBsb2cuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgAlcwBSZWNvdmVyeTogR2VuZXJhdGluZyBpbmRleCBpbmZvcm1hdGlvbiBmb3IgSU5TVEFOVCBEREwgVGFibGUgaW4gOC4wLjI5IGZvcm1hdABGYWlsZWQgdG8gc3dpdGNoIHJlc291cmNlIGdyb3VwLiAlcwBGYWlsZWQgdG8gc3dpdGNoIHJlc291cmNlIGdyb3VwLiBDb3VsZCBub3QgYWNxdWlyZSByZXNvdXJjZSBncm91cHMgZ2xvYmFsIGxvY2suAEZhaWxlZCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAuIENvdWxkIG5vdCBhY3F1aXJlIGxvY2sgb24gcmVzb3VyY2UgZ3JvdXAgJXMuAEZhaWxlZCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAuIFVuYWJsZSB0byBhcHBseSByZXNvdXJjZSBncm91cCBjb250cm9sbGVyICVzLgBGYWlsZWQgdG8gY2xlYXIgaW5zdGFudCBkcm9wIGNvbHVtbiBtZXRhZGF0YSBmb3IgdGFibGUgJXMAQ2Fubm90IG9wZW4gc2lnbmluZyBrZXkgZmlsZSAlcy4AT3V0IG9mIG1lbW9yeSEgQ2Fubm90IGNyZWF0ZSBwcml2YXRlIGtleS4AQ2Fubm90IHJlYWQgc2lnbmluZyBrZXkgZmlsZSAlcy4ASW5jb21wbGV0ZSBrZXk6IG1pc3NpbmcgTmFtZS9UeXBlIGZvciB0aGUgS2V5OiAlcy4ARHVwbGljYXRlIGtleSBmb3VuZCBpbiBrZXlyaW5nIHdpdGggTmFtZTogJXMgYW5kIE93bmVyOiAlcy4ARXJyb3IgcGFyc2luZyBKU09OIHJlc3BvbnNlICVzLgBJbnZhbGlkIEpTT04gcmVzcG9uc2UhAEhUVFAgcmVxdWVzdCBmYWlsZWQgd2l0aCBlcnJvcjogJyVzJwBWYXJpYWJsZSB0aHJlYWRfcG9vbC4lcyB3YXMgdXBkYXRlZDogJXMAJXMAU3RhdHVzIGNvZGUgJXU6IENvbXBsZXRlZABTdGF0dXMgY29kZSAldTogJXUlJSBjb21wbGV0ZQBTdGF0dXMgY29kZSAldTogJXMASW52YWxpZCB2YWx1ZSBzZXQgdG8gdGhyZWFkX3Bvb2xfcXVlcnlfdGhyZWFkc19wZXJfZ3JvdXAuIFZhbGlkIHZhbHVlIHJhbmdlIGlzICV1IC0gJXUuAFF1ZXJ5IHRocmVhZHMgY291bnQoJXUpIGV4Y2VlZHMgdHJhbnNhY3Rpb24gdGhyZWFkcyBsaW1pdCgldSkgcGVyIGdyb3VwLiBQbGVhc2UgdXNlIHF1ZXJ5IHRocmVhZHMgY291bnQgcGVyIGdyb3VwIHNtYWxsZXIgb3IgZXF1YWwgdG8gbWF4IHRyYW5zYWN0aW9uIHRocmVhZHMgbGltaXQgcGVyIGdyb3VwAEZvdW5kIHBhZ2UgdHlwZSBtaXNtYXRjaC4gRXhwZWN0ZWQgJXUsIGZvdW5kICV1LCBpbiBwYWdlOiBzcGFjZV9pZD0lbHUgcGFnZV9ubz0gJWx1AHByZWFkZXI6IHRocmVhZF9pZD0lenUsIG5fdGhyZWFkcz0lenUsIG5fY3R4PSV6dSwgb25lX3JhbmdlX3Blcl90aHJlYWQ9JXMsIG5faW5kZXg9JXp1LCBpbmRleF9saXN0PSVzLCBlcnI9JXp1AGJ1bGtsb2FkOiBzcGFjZV9pZD0lenUsIHRhYmxlPSVzLCBpbmRleD0lcywgaGVpZ2h0PSV6dSwgbl9leHRlbnRzPSV6dSwgbl9wYWdlcz0lenUAYnVsa2ZsdXNoZXI6IHNsZWVwX2NvdW50PSV6dSwgc2xlZXBfZHVyYXRpb249JXp1IG1pbGxpc2Vjb25kcywgdG90YWxfc2xlZXA9JXp1IG1pbGxpc2Vjb25kcywgcGFnZXNfZmx1c2hlZD0lenUAJXM6IE92ZXIgNjcgcGVyY2VudCBvZiB0aGUgYnVmZmVyIHBvb2wgKGN1cnJfc2l6ZT0lenUgTUIpIGlzIG9jY3VwaWVkIGJ5IGxvY2sgaGVhcHMgb3IgdGhlIGFkYXB0aXZlIGhhc2ggaW5kZXggb3IgQlVGX0JMT0NLX01FTU9SWSBwYWdlcy4gQ2hlY2sgdGhhdCB5b3VyIHRyYW5zYWN0aW9ucyBkbyBub3Qgc2V0IHRvbyBtYW55IHJvdyBsb2Nrcy4gTWF5YmUgeW91IHNob3VsZCBtYWtlIHRoZSBidWZmZXIgcG9vbCBiaWdnZXI/LiBTdGFydGluZyB0aGUgSW5ub0RCIE1vbml0b3IgdG8gcHJpbnQgZGlhZ25vc3RpY3MuACVzOiBPdmVyIDk1IHBlcmNlbnQgb2YgdGhlIGJ1ZmZlciBwb29sIChjdXJyX3NpemU9JXp1IE1CKSBpcyBvY2N1cGllZCBieSBsb2NrIGhlYXBzIG9yIHRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4IG9yIEJVRl9CTE9DS19NRU1PUlkgcGFnZXMuIENoZWNrIHRoYXQgeW91ciB0cmFuc2FjdGlvbnMgZG8gbm90IHNldCB0b28gbWFueSByb3cgbG9ja3MuIE1heWJlIHlvdSBzaG91bGQgbWFrZSB0aGUgYnVmZmVyIHBvb2wgYmlnZ2VyPy4gV2UgaW50ZW50aW9uYWxseSBnZW5lcmF0ZSBhIHNlZyBmYXVsdCB0byBwcmludCBhIHN0YWNrIHRyYWNlIG9uIExpbnV4IQAlczogdGFibGU9JXMsIGluZGV4PSVzLCBuX3VuaXE9JXp1LCBuX2ZpZWxkcz0lenUsIGxocz0oJXMpLCByaHM9KCVzKQBGYWlsZWQgdG8gYXBwbHkgcm93IGV2ZW50IHdpdGggJWQgY29sdW1ucywgb3JpZ2luYXRpbmcgZnJvbSBhIHNlcnZlciBvZiB2ZXJzaW9uICVzIG9uIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnLCB3aGljaCBoYXMgJWQgY29sdW1ucywgb25lIG9mIHdoaWNoIGlzIGEgZ2VuZXJhdGVkIGltcGxpY2l0IHByaW1hcnkga2V5LiBSZXBsaWNhdGlvbiBpcyB1bnN1cHBvcnRlZCB3aGVuIHRoZSBzb3VyY2Ugc2VydmVyIGlzIG9sZGVyIHRoYW4gOC4wLjMwLCB0aGUgcmVwbGljYSB0YWJsZSBoYXMgYSBnZW5lcmF0ZWQgaW1wbGljaXQgcHJpbWFyeSBrZXksIGFuZCB0aGVyZSBpcyBhIGRpZmZlcmVuY2UgaW4gY29sdW1uIGNvdW50LCBub3QgY291bnRpbmcgdGhlIHJlcGxpY2EncyBnZW5lcmF0ZWQgaW1wbGljaXQgcHJpbWFyeSBrZXkuIEFsaWduIHRoZSB0YWJsZSBzY2hlbWFzIG9uIHNvdXJjZSBhbmQgcmVwbGljYSwgYW5kIHJlc3RhcnQgcmVwbGljYXRpb24uAEJ1bGsgZXhlY3V0b3I6ICVzAEJ1bGsgbG9hZGVyOiAlcwBUaGUgZmlyc3QgZmlsZSBiZWluZyBsb2FkZWQgY29udGFpbmVkIGxlc3MgbGluZXMgdGhhbiB0aGUgaWdub3JlIGNsYXVzZQBCdWxrIHJlYWRlcjogJXMAQnVsayByZWFkZXIgZmFpbGVkIHRvIGluaXRpYWxpemUgbGliY3VybABCdWxrIHJlYWRlciBnb3QgbGliY3VybCBlcnJvcjogJXMAQnVsayByZWFkZXIgZ290IGVycm9yIHJlc3BvbnNlIGZyb20gc2VydmVyOiAlbGQAQnVsayByZWFkZXIgZ290IGVycm9yIGluIGNvbW11bmljYXRpb24gd2l0aCBzb3VyY2Ugc2VydmVyLCBjaGVjayB0aGUgZXJyb3IgbG9nIGZvciBhZGRpdGlvbmFsIGRldGFpbHMATWlzc2luZyBFTkNMT1NFRCBCWSBjaGFyYWN0ZXIgYXQgcm93ICVsZCBpbiBmaWxlICVzLiBBZGQgT1BUSU9OQUxMWSB0byB0aGUgRU5DTE9TRUQgQlkgY2xhdXNlIHRvIGFsbG93IHRoaXMgaW5wdXQuAFRoZSBudW1iZXIgb2YgaW5wdXQgY29sdW1ucyB0aGF0IG5lZWQgdG8gYmUgYnVmZmVyZWQgZm9yIHBhcnNpbmcgZXhjZWVkZWQgcHJlZGVmaW5lZCBidWZmZXIgbWF4IHNpemUgZm9yIGZpbGUgJyVzJy4AVGhlIGNvbHVtbiBkYXRhIHRoYXQgbmVlZGVkIHRvIGJlIGNvcGllZCBkdWUgdG8gZXNjYXBlZCBjaGFyYWN0ZXJzIGV4Y2VlZGVkIHRoZSBzaXplIG9mIHRoZSBpbnRlcm5hbCBjb3B5IGJ1ZmZlciBmb3IgZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4gRGF0YSBmb3Igc29tZSBjb2x1bW5zIGlzIG1pc3NpbmcuAFVuZXhwZWN0ZWQgcm93IHRlcm1pbmF0b3IgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuIERhdGEgZm9yIHNvbWUgY29sdW1ucyBpcyBtaXNzaW5nLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgZW5kaW5nIEVOQ0xPU0VEIEJZIGNoYXJhY3RlciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIE5VTEwgZXNjYXBlIChcTikgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBjb2x1bW4gdGVybWluYXRvciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycgcmVzdWx0aW5nIGluIGluY29tcGxldGUgZXNjYXBlIHNlcXVlbmNlLgBJbmNvcnJlY3QgJS0uMzJzIHZhbHVlOiAnJS0uMTI4cycgZm9yIGNvbHVtbiAnJS0uMTkycycgYXQgcm93ICVsZCBpbiBmaWxlICclLS4xOTJzJwBOVUxMIHN1cHBsaWVkIHRvIE5PVCBOVUxMIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQgaW4gZmlsZSAnJS0uMTkycycAJXM6IExPQUQgQlVMSyBEQVRBIHRocmVhZCBmYWlsdXJlIChlcnI9JWx1KSwgdGFibGU9JXMsIGluZGV4PSVzACVzOiBGYWlsZWQgdG8gbWVyZ2Ugc3ViLXRyZWVzIGluIExPQUQgQlVMSyBEQVRBLCB0YWJsZT0lcywgaW5kZXg9JXMsIGRldGFpbHM9JXMATE9BRCBCVUxLIERBVEE6IEJ1ZmZlciBwb29sIHNpemUgaXMgJXp1LiBSZWR1Y2luZyBjb25jdXJyZW5jeSBmcm9tICV6dSB0byAlenUuIHRhYmxlPSVzLgBDKysgRXhjZXB0aW9uIGNhdWdodCB3aGlsZSAlcyB0aGUgJXMgcGx1Z2luOiBbJXNdAFJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gYXBwZWFycyB0byBiZSBjb3JydXB0ZWQuIE9uIEdyb3VwIFJlcGxpY2F0aW9uIGNoYW5uZWwgJyVzJywgc2V0dGluZyBSRVFVSVJFX1RBQkxFX1BSSU1BUllfS0VZX0NIRUNLIHRvICdHRU5FUkFURScgaXMgbm90IGFsbG93ZWQuIFJ1biBSRVNFVCBSRVBMSUNBIEFMTCB0byByZXNldCBpdC4AUmVjb3JkIGhhcyBib3RoIGluc3RhbnQgYW5kIHZlcnNpb24gYml0IHNldC4AVGhpcyBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZ3JvdXBfcmVwbGljYXRpb25fcGF4b3Nfc2luZ2xlX2xlYWRlciBvcHRpb24gdmFsdWUgb2YgMSBhbmQgaXQgaXMgdHJ5aW5nIHRvIGpvaW4gYSBncm91cCB3aXRoIENvbW11bmljYXRpb24gUHJvdG9jb2wgVmVyc2lvbiBiZWxvdyA4LjAuMjcuIEluIG9yZGVyIHRvIGpvaW4gdGhpcyBncm91cCwgZ3JvdXBfcmVwbGljYXRpb25fcGF4b3Nfc2luZ2xlX2xlYWRlciB2YWx1ZSBtdXN0IGJlIGNvbmZpZ3VyZWQgdG8gdGhlIHZhbHVlIDAuIFRoaXMgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBJZ25vcmVkIHRoZSBpbm5vZGItcmVkby1sb2ctY2FwYWNpdHkgb3B0aW9uIGluIHRoZSBJbm5vZGIgcmVhZC1vbmx5IG1vZGUuIFNlcnZlciBpcyB1c2luZyBhY3RpdmUgcmVkbyBsb2cgZmlsZXMuAFVuZXhwZWN0ZWQgSU5TVEFOVExZIEFkZGVkIC8gRHJvcHBlZCBjb2x1bW46ICclcycgYXQgcG9zaXRpb24gJWx1IGZvciBUYWJsZSAnJXMnLCBJbmRleCAnJXMnIHdoaWxlIGdldHRpbmcgUHJpbWFyeSBLZXkgZm9yIHJvdyBsb2dnaW5nACVzAENvbHVtbiBuYW1lICVzIGFuZCBpbnRlcm5hbGx5IGdlbmVyYXRlZCBJTlNUQU5UIERST1AgY29sdW1uIG5hbWUgJXMgaXMgY2F1c2luZyBhIGNvbmZsaWN0LgBGaWVsZCBudW1iZXI6ICVsbHUgdG9vIGxhcmdlLCBUb3RhbCBmaWVsZHMgaW4gUmVjb3JkOiAlenUuACVzAFRoZSBjb25uZWN0aW9uIGhhcyB0aW1lZCBvdXQgYWZ0ZXIgJWx1IHJldHJpZXMgY29ubmVjdGluZyB0byAnJXNAJXM6JWQnJXMsIGFuZCB0aGVyZWZvcmUgdGhlIE15U1FMIHNlcnZlciBpcyBnb2luZyB0byBhdHRlbXB0IGFuIGFzeW5jaHJvbm91cyByZXBsaWNhdGlvbiBjb25uZWN0aW9uIGZhaWxvdmVyLCB0byAnJXNAJXM6JWQnAFRoZSBSZXBsaWNhIHdoaWNoIHdhcyBjb25uZWN0ZWQgdG8gc291cmNlICclczolZCcsIGlzIG5vdyBjb25uZWN0ZWQgdG8gbmV3IHNvdXJjZSAnJXM6JWQnLCBidXQgc3RpbGwgaGFzIHRoZSBzYW1lIHNlcnZlcl91dWlkICVzLgBUaGUgc2VydmVyX3V1aWQgZm9yIHNvdXJjZSBzZXJ2ZXIgJyVzOiVkJyBoYXMgY2hhbmdlZCBmcm9tICVzIHRvICVzLiBUaGlzIHNob3VsZCBub3QgaGFwcGVuIHVubGVzcyB5b3UgaGF2ZSBjaGFuZ2VkIGl0IG1hbnVhbGx5LgBUaGUgc291cmNlIHNlcnZlciBoYXMgY2hhbmdlZCBmcm9tICclczolZCcgd2l0aCBzZXJ2ZXJfdXVpZCAlcywgdG8gJyVzOiVkJyB3aXRoIHNlcnZlcl91dWlkICVzLgBSZXBsaWNhIHJlY2VpdmVyIHRocmVhZCVzOiBjb25uZWN0ZWQgdG8gc291cmNlICclc0AlczolZCcgd2l0aCBzZXJ2ZXJfdXVpZD0lcywgc2VydmVyX2lkPSVkLiBTdGFydGluZyByZXBsaWNhdGlvbiBmcm9tIGZpbGUgJyVzJywgcG9zaXRpb24gJyVzJy4AUmVwbGljYSByZWNlaXZlciB0aHJlYWQlczogY29ubmVjdGVkIHRvIHNvdXJjZSAnJXNAJXM6JWQnIHdpdGggc2VydmVyX3V1aWQ9JXMsIHNlcnZlcl9pZD0lZC4gU3RhcnRpbmcgR1RJRC1iYXNlZCByZXBsaWNhdGlvbi4ATG9hZGVyOjpidWlsZF9hbGwoKTogQ29tcGxldGVkIGJ1aWxkaW5nICV6dSBpbmRleGVzIGZvciBvbGRfdGFibGU9JXMsIG5ld190YWJsZT0lcywgZXJyPSV6dS4AQnVpbGRlcjo6ZmluaXNoKCk6IENvbXBsZXRlZCBidWlsZGluZyBpbmRleD0lcyBvZiB0YWJsZT0lcywgZXJyPSV6dS4AJXM6ICclcycgaXMgYSB1c2VyIGRlZmluZWQgY29sbGF0aW9uLiBVc2VyIGRlZmluZWQgY29sbGF0aW9ucyBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIGEgY29tcGlsZWQgY29sbGF0aW9uIGluc3RlYWQuAEJ1aWxkZXI6OmluaXQoKTogSW5pdGlhbGl6ZSBmb3IgYnVpbGRpbmcgaW5kZXg9JXMgb2YgdGFibGU9JXMsIG5fdGhyZWFkcz0lenUsIHNvcnQgYnVmZmVyIHNpemU9JXp1IGJ5dGVzLCBpL28gYnVmZmVyIHNpemU9JXp1IGJ5dGVzLgBTRUxFQ1QgQ09VTlQoKikgRlJPTSB0YWJsZT0lcywgbl90aHJlYWRzPSV6dSwgbl9wYXJ0aXRpb25zPSV6dS4ASW5kZXggbG9nIHZlcnNpb24gJXUgZGlkIG5vdCBtYXRjaC4gTWF4IGluZGV4IHZlcnNpb24gaXMgJXUuIFJlY292ZXJ5IGNhbid0IGNvbnRpbnVlLiBQbGVhc2UgbWFrZSBzdXJlIHNlcnZlciBpcyBub3Qgc3RhcnRpbmcgdXAgd2l0aCB0aGUgZGF0YWRpciBnZW5lcmF0ZWQgaW4gZnV0dXJlIHZlcnNpb24uAE11bHRpcGxlIGtleXJpbmcgY29tcG9uZW50IFVSTnMgJyVzJyBmb3VuZCBpbiBtYW5pZmVzdCBmaWxlICclcycuIE9ubHkgb25lIGtleXJpbmcgY29tcG9uZW50IGNhbiBiZSBsb2FkZWQgYXQgYSB0aW1lLgBQbHVnaW4gJ2dyb3VwX3JlcGxpY2F0aW9uJyBoYXMgYmVlbiBzdGFydGVkLgBNaW5pbXVtIHJlY29yZCBmbGFnIGlzIHdyb25nbHkgc2V0IHRvIHJlYyBvbiBwYWdlICclbHUnIGF0IGxldmVsICclbHUnIGZvciBpbmRleCAnJXMnIG9mIHRhYmxlICclcycuAE1pbmltdW0gcmVjb3JkIGZsYWcgaXMgbm90IHNldCB0byBmaXJzdCByZWMgb24gcGFnZSAnJWx1JyBhdCBsZXZlbCAnJWx1JyBmb3IgaW5kZXggJyVzJyBvZiB0YWJsZSAnJXMnLgBTdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCBzbG90ICclZCcgZm9yIGNvbXBvbmVudCAnJXMnLgBTdWNjZXNzZnVsbHkgZGUtcmVnaXN0ZXJlZCBzbG90ICclZCcgZnJvbSBjb21wb25lbnQgJyVzJy4AQ2Fubm90IGZyZWUgcmVzb3VyY2VzIHN0b3JlZCBieSBjb21wb25lbnQgJyVzJyBpbiB0aHJlYWQgd2l0aCBJRDogJyVkJy4gQ29tcG9uZW50IGZhaWxlZCB0byBmcmVlIHJlcXVpcmVkIHJlc291cmNlcy4AVHJhbnNhY3Rpb24gSUQ6ICVsdSBmb3VuZCBmb3IgcmVzdXJyZWN0aW5nIGluc2VydHMAVHJhbnNhY3Rpb24gSUQ6ICVsdSBmb3VuZCBmb3IgcmVzdXJyZWN0aW5nIHVwZGF0ZXMASWRlbnRpZmllZCB0YWJsZSBJRDogJWx1IHRvIGFjcXVpcmUgbG9jawBBY3F1aXJlZCBsb2NrIG9uIHRhYmxlIElEOiAlbHUsIG5hbWU6ICVzAFJlY29yZHMgcmVhZDogJWx1IC0gUGFnZXMgcmVhZDogJWx1AFRvdGFsIHJlY29yZHMgcmVzdXJyZWN0ZWQ6ICVsdSAtIFRvdGFsIHBhZ2VzIHJlYWQ6ICVsdSAtIFRvdGFsIHRhYmxlcyBhY3F1aXJlZDogJWx1AFJlc3VycmVjdGVkICVsdSB0cmFuc2FjdGlvbnMgZG9pbmcgaW5zZXJ0cy4AUmVzdXJyZWN0ZWQgJWx1IHRyYW5zYWN0aW9ucyBkb2luZyB1cGRhdGVzLgBJbnZhbGlkIHNlY3VyaXR5IHRva2VuIHByb3ZpZGVkIGJ5ICclcycgZm9yICclcydAJyVzJzogJXMuAFVua25vd24gdXNlci90ZW5hbmN5ICh1c2VyOiAlcyB0ZW5hbmN5OiAlcykgZm91bmQgaW4gc2VjdXJpdHkgdG9rZW4gcHJvdmlkZWQgYnkgJyVzJyBmb3IgJyVzJ0AnJXMnLgBWZXJpZmljYXRpb24gZmFpbGVkIGZvciBzZWN1cml0eSB0b2tlbiBwcm92aWRlZCBieSAnJXMnIGZvciAnJXMnQCclcycgOiAlcy4AQ291bGQgbm90IGRvd25sb2FkIElERFAgUHVibGljIGtleS4gUGxlYXNlIGNoZWNrIGlmIHNlY3VyaXR5IHRva2VuIHByb3ZpZGVkIGJ5ICclcycgZm9yICclcydAJyVzJyBpcyB2YWxpZC4ATm9uZSBvZiB0aGUgZ3JvdXBzIGV4dHJhY3RlZCBmcm9tIHNlY3VyaXR5IHRva2VuIG1hdGNoZXMgYW55IG9mIHRoZSBlbnRyaWVzIGZyb20gYXV0aGVudGljYXRpb24gc3RyaW5nLgBDYW5ub3QgcmVnaXN0ZXIgdmFyaWFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgYW5vdGhlciBjb21wb25lbnQuAENhbm5vdCB1bnJlZ2lzdGVyIHZhcmlhYmxlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAENhbm5vdCByZWdpc3RlciBmdW5jdGlvbiAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgaXMgbm90IGFscmVhZHkgcmVnaXN0ZXJlZCBieSBhbm90aGVyIGNvbXBvbmVudC4AQ2Fubm90IHVucmVnaXN0ZXIgZnVuY3Rpb24gJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IHdhcyByZWdpc3RlcmVkIHByb3Blcmx5IGluIHRoZSBmaXJzdCBwbGFjZS4AQ2Fubm90IHJlZ2lzdGVyIHByaXZpbGVnZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgaXMgbm90IGFscmVhZHkgcmVnaXN0ZXJlZC4AQ2Fubm90IHVucmVnaXN0ZXIgcHJpdmlsZWdlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAEVycm9yIHdoaWxlIGV4ZWN1dGluZyBVREYgJXMuAEVycm9yIHdoaWxlIGV4ZWN1dGluZyBVREYgJXM6ICVzLgAlcyBmYWlsZWQuACVzIGZhaWxlZCB3aXRoICV1LgBMb2NrIGZhaWxlZCBhdCAlcyA6ICV1LgBMb2NrIGZyb20gJXMgOiAldSBmYWlsZWQgdG8gdW5sb2NrLgBNYXNraW5nIGNvbXBvbmVudCBlcnJvcjogJyVzJy4AJXMgZmFpbGVkLgAlcyBmYWlsZWQgYmVjYXVzZSAlcy4AQ3JlYXRpb24gb2YgcmFuZG9tIGNvbnRleHQgZmFpbGVkLgBDcmVhdGlvbiBvZiByYW5kb20gY29udGV4dCBmYWlsZWQgYmVjYXVzZSAlcy4AQ2Fubm90IGFjY2VzcyAlcy4lcyB0YWJsZS4AQ2Fubm90IHJlY292ZXIgZnJvbSBkZXRlY3Rfb25seSBkb3VibGV3cml0ZSBidWZmZXIgYXMgcGFnZSAldSBmcm9tIGJhdGNoIGRvdWJsZXdyaXRlIGZpbGUgaXMgY29ycnVwdGVkLgBEYXRhYmFzZSBwYWdlIGNvcnJ1cHRpb24gb2YgdGFibGVzcGFjZSAlcyBzcGFjZV9pZDogJXUgcGFnZV9udW06ICV1LiBDYW5ub3QgcmVjb3ZlciBpdCBmcm9tIHRoZSBkb3VibGV3cml0ZSBidWZmZXIgYmVjYXVzZSBpdCB3YXMgd3JpdHRlbiBpbiBkZXRlY3Rfb25seS1kb3VibGV3cml0ZSBtb2RlLgBpbml0X2Nvbm5lY3QgdmFyaWFibGUgaXMgaWdub3JlZCBmb3IgdXNlcjogJXMgaG9zdDogJXMgZHVlIHRvIG11bHRpLWZhY3RvciByZWdpc3RyYXRpb24gcmVxdWlyZWQgc2FuZGJveGluZwBFeGVjdXRpb24gb2YgYWx0ZXIgdGFibGUgJXMgJXMgZmFpbGVkIGJlY2F1c2UgJXMuAFRQIGNvbm4gKHBvcnQ6IG1hbmFnZWQoZGVsdGEpLCBhY3RpdmUsIG9wZW5lZCwgY2xvc2VkLCBhZGRlZCwgZHJvcHBlZCk6ICVzAFNjaGVkdWxlZCBydW4gb2YgdGFzayAlcyBmYWlsZWQASW52YWxpZCBmbHVzaCBpbnRlcnZhbCBzcGVjaWZpZWQ6ICVsdS4gVmFsaWQgdmFsdWVzIGFyZSAwIChvZmYpIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlZC4gQWRqdXN0aW5nIHRvICVkAENvdWxkIG5vdCBwdXJnZSBiaW5hcnkgbG9ncyBzaW5jZSBhbm90aGVyIHNlc3Npb24gaXMgZXhlY3V0aW5nIExPQ0sgSU5TVEFOQ0UgRk9SIEJBQ0tVUC4gV2FpdCBmb3IgdGhhdCBzZXNzaW9uIHRvIHJlbGVhc2UgdGhlIGxvY2suAE11bHRpLXZhbHVlcyBjYW5ub3QgYmUgY29udmVydGVkIHRvIE15U1FMIGZvcm1hdDogJXMASGVhcCByZXF1aXJlZCB0byBjb252ZXJ0IGNvbHVtbnMgaXMgbm90IHByZXNlbnQuAE15U1FMIHNlcnZlciBkb3duZ3JhZGluZyBmcm9tIHZlcnNpb24gJyV1JyB0byAnJXUnLgBJbnZhbGlkIE15U1FMIHNlcnZlciBkb3duZ3JhZGU6IENhbm5vdCBkb3duZ3JhZGUgZnJvbSAldSB0byAldS4gVGFyZ2V0IE15U1FMIHNlcnZlciB2ZXJzaW9uIGlzIGxvd2VyIHRoYW4gdGhlIHNlcnZlciBkb3duZ3JhZGUgdGhyZXNob2xkICV1LgBJbnZhbGlkIE15U1FMIHNlcnZlciB1cGdyYWRlOiBDYW5ub3QgdXBncmFkZSBmcm9tICV1IHRvICV1LiBUYXJnZXQgTXlTUUwgc2VydmVyIHZlcnNpb24gaXMgbG93ZXIgdGhhbiB0aGUgc2VydmVyIHVwZ3JhZGUgdGhyZXNob2xkICV1LgBJbnZhbGlkIE15U1FMIHNlcnZlciB1cGdyYWRlOiBDYW5ub3QgdXBncmFkZSBmcm9tICV1IHRvICV1LiBVcGdyYWRlIHRvIG5leHQgbWFqb3IgdmVyc2lvbiBpcyBvbmx5IGFsbG93ZWQgZnJvbSB0aGUgbGFzdCBMVFMgcmVsZWFzZSwgd2hpY2ggdmVyc2lvbiAldSBpcyBub3QuAEludmFsaWQgTXlTUUwgc2VydmVyIGRvd25ncmFkZTogQ2Fubm90IGRvd25ncmFkZSBmcm9tICV1IHRvICV1LiBEb3duZ3JhZGUgaXMgb25seSBwZXJtaXR0ZWQgYmV0d2VlbiBwYXRjaCByZWxlYXNlcy4ARmFpbGVkIHRvIGdldCB0aGUgZGF0YSBkaWN0aW9uYXJ5IHByb3BlcnR5ICVzLgBGYWlsZWQgdG8gc2V0IHRoZSBkYXRhIGRpY3Rpb25hcnkgcHJvcGVydHkgJXMuAFNlcnZlciBkb3duZ3JhZGUgZnJvbSAnJWQnIHRvICclZCcgJXMuACVzIGluZm9ybWF0aW9uIHNjaGVtYSBmcm9tIHZlcnNpb24gJXUgdG8gJXUuACVzIHBlcmZvcm1hbmNlIHNjaGVtYSBmcm9tIHZlcnNpb24gJXUgdG8gJXUuAFZhbHVlIGZvciBvcHRpb24gJyVzJyBjb250YWlucyBjaXBoZXIgJyVzJyB0aGF0IGlzIGVpdGhlciBibG9ja2VkIG9yIGRlcHJlY2F0ZWQgKGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZSkuIFBsZWFzZSByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgBEREwgZmFpbGVkIGFzIEJ1aWxkZXIgaXMgYWxyZWFkeSBmcmVlZC4gQnVpbGRlcjogc3RhdGU9JXUsIGVycm9yX3N0YXRlPSV1LiBJbmRleDogaWQ9JXp1LCBuYW1lPSclcycsIHNwYWNlX2lkPSV1LCBwYWdlPSV1LiBUYWJsZTogb2xkX25hbWU9JyVzJywgbmV3X25hbWU9JyVzJy4ATWVtYmVyIGlkZW50aWZpZWQgJXM6ICclcycgZG9lcyBub3QgZXhpc3Qgb24gR3JvdXAgUmVwbGljYXRpb24gbWVtYmVyc2hpcCBkdXJpbmcgJXMuAERlcHJlY2F0ZWQgJyVzJyB1c2VkICVzIHRpbWVzLCBsYXN0IHRpbWUgdXNlZCAnJXMnLgBXYWl0aW5nIGZvciAldSBjb25uZWN0aW9ucyB0byBiZSBjbG9zZWQuAFdhaXRpbmcgZm9yIFRIRHMgaW4gcGFydGl0aW9uICV1IHRvIGJlIGNsb3NlZCwgJXUgc3RpbGwgbGVmdC4gJXUgVEhEcyBsZWZ0IGluIHRvdGFsIGZvciBhbGwgcGFydGl0aW9ucy4ASW5kZXggJXMgb2YgJXMuJXMgZXhjZWVkcyBsaW1pdCBvZiAlbHUgYnl0ZXMgcGVyIGNvbHVtbi4ARmFpbGVkIHRvIHVwZGF0ZSBkYXRhIGRpcmVjdG9yeSBmbGFnIGZvciBkZCB0YWJsZSB3aXRoIHRhYmxlc3BhY2UgaWQgJyVsbHUnIHdoZW4gaWJkIGZpbGUgZm9yICclcycgaXMgbW92ZWQgdG8gbmV3IGxvY2F0aW9uICclcycgZHVyaW5nIHNlcnZlciBzaHV0ZG93bgAlcyBERCBJRDogJWxsdSAtIFRhYmxlc3BhY2UgJXUsIG5hbWUgJyVzJywgZm91bmQgYXQgJyVzJyBvdXRzaWRlIGRlZmF1bHQgZGF0YSBkaXJlY3RvcnkuIEl0IGlzIGVpdGhlciBtb3ZlZCBvciBpcyBjcmVhdGVkIHdpdGggJ0RBVEEgRElSRUNUT1JZJwBVcG9uIHJlY29ubmVjdGlvbiB3aXRoIHRoZSByZXBsaWNhLCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIGR1bXAgdGhyZWFkIGZvciAlcyA8JXM+LCBhbiBleGlzdGluZyBkdW1wIHRocmVhZCB3aXRoIHRoZSBzYW1lICVzIHdhcyBkZXRlY3RlZC4gVGhlIHNvdXJjZSBpcyB0ZXJtaW5hdGluZyB0aGUgcHJldmlvdXMgZHVtcCB0aHJlYWQgKCV1KSwgd2hpY2ggaXMgbm9ybWFsIGFuZCBleHBlY3RlZC4AVGhlIHRyYW5zYWN0aW9uICclLS4xOTJzJyB3aWxsIGNvbW1pdCBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0IHRvIGl0cyBzb3VyY2UgdG8gZm9sbG93IHRoZSBncm91cCBnbG9iYWwgb3JkZXIuAENhbiBub3Qgb3BlbiB0YWJsZSBgJXNgLmAlc2A7IGZ1bmN0aW9ucyBpbiBjb25zdHJhaW50cywgcGFydGl0aW9ucywgb3IgdmlydHVhbCBjb2x1bW5zIG1heSBoYXZlIGZhaWxlZC4AJXMARmFpbGVkIHRvIGNyZWF0ZSB0aGUgR3JvdXAgUmVwbGljYXRpb24gY2VydGlmaWVyIGJyb2FkY2FzdCB0aHJlYWQgKFRIRF9jZXJ0aWZpZXJfYnJvYWRjYXN0KS4AVGhlIEdyb3VwIFJlcGxpY2F0aW9uIGNlcnRpZmllciBicm9hZGNhc3QgdGhyZWFkIChUSERfY2VydGlmaWVyX2Jyb2FkY2FzdCkgc3RhcnRlZC4AVGhlIEdyb3VwIFJlcGxpY2F0aW9uIGNlcnRpZmllciBicm9hZGNhc3QgdGhyZWFkIChUSERfY2VydGlmaWVyX2Jyb2FkY2FzdCkgc3RvcHBlZC4AVGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgdGhyZWFkIGhhcyByZWNlaXZlZCBLSUxMIHJlcXVlc3QuAFRocmVhZHMgYXJlIHVuYWJsZSB0byByZXNlcnZlIHNwYWNlIGluIHJlZG8gbG9nIHdoaWNoIGNhbid0IGJlIHJlY2xhaW1lZCBkdWUgdG8gdGhlICclcycgY29uc3VtZXIgc3RpbGwgbGFnZ2luZyBiZWhpbmQgYXQgTFNOID0gJWxsdS4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuAFRoZSByZWRvIGxvZyBhcmNoaXZlciBpcyBhYm9ydGVkIGFzIGl0IHdhcyBsYWdnaW5nIGJlaGluZCBhdCBMU04gPSAlbGx1IGFuZCB1bmFibGUgdG8gYWR2YW5jZSBmb3IgbW9yZSB0aGFuIDIgc2Vjb25kcy4gQ29uc2lkZXIgaW5jcmVhc2luZyB0aGUgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgBUcnlpbmcgdG8gYWRkIG9yIGRyb3AgY29sdW1uKHMpIGluIHRhYmxlICclcycgZm9yIHdoaWNoIHRoZSBjdXJyZW50IHJlY29yZCBzaXplIGlzICV6dSB3aGljaCBpcyBtb3JlIHRoYW4gdGhlIG1heGltdW0gYWxsb3dlZCBzaXplICglenUpIGZvciBhIHJlY29yZC4gVGhlcmVmb3JlIEFERCBvciBEUk9QIGNvbHVtbiB3aXRoIEFMR09SSVRITSA9IElOU1RBTlQgaXMgbm90IGFsbG93ZWQuAENhbm5vdCBhZGQgJXp1IGZpZWxkKHMpIGluIHRhYmxlICclcycgYmVjYXVzZSBhZnRlciBhZGRpbmcgaXQsIHRoZSByZWNvcmQgc2l6ZSB3b3VsZCBiZSAlenUgd2hpY2ggaXMgbW9yZSB0aGFuIHRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSAoJXp1KSBmb3IgYSByZWNvcmQuACVzACVzACVzAGJ1bGtmbHVzaGVyOiBGYWlsZWQgdG8gcHVuY2ggaG9sZTogdGFibGU9JXMsIGluZGV4PSVzLCBzcGFjZV9pZD0lenUsIHBhZ2Vfbm89JXp1LCBkaXNrX3BhZ2Vfc2l6ZT0lenUsIGhvbGVfc2l6ZT0lenUsIGZpbGU9JXMsIGVycj0lenUAJXMgYXMgdGhlIGNsaWVudCBzZXNzaW9uIHdhcyBraWxsZWQuAENhbm5vdCBvcGVuIGNlcnRpZmljYXRlICVzLiBQbGVhc2UgY2hlY2sgdGhlIGNlcmlmaWNhdGUAQ2VydGlmaWNhdGUgdmFsaWRhdGlvbiBoYXMgZmFpbGVkLiBTdG9wcGluZyB0aGUgc2VydmVyIGFzIHRscy1jZXJ0aWZpY2F0ZXMtZW5mb3JjZWQtdmFsaWRhdGlvbiBpcyBlbmFibGVkAENBIGNlcnRpZmljYXRlL2NlcnRmaWNhdGVzIGlzIGludmFsaWQuIFBsZWFzZSBjaGVjayBsb2dzIGZvciBtb3JlIGRldGFpbHMuAEludGVybmFsIFRMUyBlcnJvciAlczolczolZDolcwBGYWlsZWQgdG8gc2V0IHVwIFRMUy4gQ2hlY2sgbG9ncyBmb3IgZGV0YWlscwBTZXJ2ZXIgY2VydGlmaWNhdGUgJXMgdmVyaWZpY2F0aW9uIGhhcyBmYWlsZWQuIENoZWNrIGxvZ3MgZm9yIG1vcmUgZGV0YWlscwBGYWlsZWQgdG8gdmFsaWRhdGUgY2VydGlmaWNhdGUgJXMgYmVjYXVzZSAlcwAlcwAlcwAlcwBNeVNRTCBTZXJ2ZXIgLSBzdGFydC4ATXlTUUwgU2VydmVyIC0gZW5kLgBNeVNRTCBTZXJ2ZXIgSW5pdGlhbGl6YXRpb24gLSBzdGFydC4ATXlTUUwgU2VydmVyIEluaXRpYWxpemF0aW9uIC0gZW5kLgBNeVNRTCBTZXJ2ZXI6IFBsdWdpbnMgU2h1dGRvd24gLSBzdGFydC4ATXlTUUwgU2VydmVyOiBQbHVnaW5zIFNodXRkb3duIC0gZW5kLgBNeVNRTCBTZXJ2ZXI6IENvbXBvbmVudHMgU2h1dGRvd24gLSBzdGFydC4ATXlTUUwgU2VydmVyOiBDb21wb25lbnRzIFNodXRkb3duIC0gZW5kICh3aXRoIHJldHVybiB2YWx1ZSA9ICVkKS4ATXlTUUwgU2VydmVyOiBDbG9zaW5nIENvbm5lY3Rpb25zIC0gc3RhcnQuAE15U1FMIFNlcnZlcjogQ2xvc2luZyBDb25uZWN0aW9ucyAtIGVuZC4AV2FpdGluZyBmb3IgZm9yY2VmdWwgZGlzY29ubmVjdGlvbiBvZiBUaHJlYWQgKElEICVsZCkgdG8gZW5kLgBXYWl0aW5nIGZvciBmb3JjZWZ1bCBkaXNjb25uZWN0aW9uIG9mICVsZCB0aHJlYWQocykgdG8gZW5kLgBGYWlsZWQgdG8gYWNjZXB0IGEgTXlTUUwgY29ubmVjdGlvbiBmb3IgR3JvdXAgUmVwbGljYXRpb24uICVzLiBQbGVhc2UgcmV0cnkuAEludmFsaWQgdmFsdWUgb2YgYXJndW1lbnQgJXMgKCVzKS4ASWdub3JpbmcgYSBub24tZGVmYXVsdCB2YWx1ZSBmb3IgJXMgZHVyaW5nIC0taW5pdGlhbGl6ZS4AQXV0b21hdGljIHJlZ2lzdHJhdGlvbiBvZiB0aGUgc2NoZWR1bGVyIGZhaWxlZC4ASW52YWxpZCByZWxvYWQgaW50ZXJ2YWwgc3BlY2lmaWVkOiAlbHUuIFZhbGlkIHZhbHVlcyBhcmUgMCAob2ZmKSBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJWQuIEFkanVzdGluZyB0byAlZC4AJyVzJyAoZ3JhbnRlZCB0byAnJXNAJXMnKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AQnVsayBNdWx0aSBSZWFkZXI6ICVzAEJ1bGsgTWVyZ2UgTG9hZGVyOiAlcwBCdWxrIFNvcnRpbmcgTG9hZGVyOiAlcwBCdWxrIFdyaXRlcjogJXMAQnVsayB3cml0ZXIgZmFpbGVkIHRvIGluaXRpYWxpemUgbGliY3VybABCdWxrIHdyaXRlciBnb3QgbGliY3VybCBlcnJvcjogJXMARGV0ZWN0ZWQgd3JvbmcgcGFnZV9pZDogYnVmX2Jsb2NrX3Rbc3BhY2VfaWQ9JXp1LCBwYWdlX25vPSV6dV0sIGJ1Zl9mcmFtZV90W3NwYWNlX2lkPSV6dSwgcGFnZV9ubz0lenVdLCBmaWxlPSVzAEZpeGVkIHdyb25nIHBhZ2VfaWQgd2l0aCBzeW5jIHJlYWQ6IGJ1Zl9ibG9ja190W3NwYWNlX2lkPSV6dSwgcGFnZV9ubz0lenVdLCBidWZfZnJhbWVfdFtzcGFjZV9pZD0lenUsIHBhZ2Vfbm89JXp1XSwgZmlsZT0lcywgcmV0cnk9JXp1AFdyb25nIHBhZ2VfaWQgYWZ0ZXIgc3luYyByZWFkOiBidWZfYmxvY2tfdFtzcGFjZV9pZD0lenUsIHBhZ2Vfbm89JXp1XSwgYnVmX2ZyYW1lX3Rbc3BhY2VfaWQ9JXp1LCBwYWdlX25vPSV6dV0sIGZpbGU9JXMsIHJldHJ5PSV6dQBTeW5jIHJlYWQgdG8gZml4IHdyb25nIHBhZ2VfaWQgZmFpbGVkOiBidWZfYmxvY2tfdFtzcGFjZV9pZD0lenUsIHBhZ2Vfbm89JXp1XSwgZmlsZT0lcywgZXJyPSV6dSwgcmV0cnk9JXp1AENhbm5vdCBzdGFydCByZXBsaWNhdGlvbiBjaGFubmVsICclcycgYmVjYXVzZSAlcy4AVGhlIGNlcnRpZmljYXRpb24gaW5mb3JtYXRpb24sIHBhcnQgb2YgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIHRvIHRoZSBuZXcgbWVtYmVyIGpvaW4gdGhlIGdyb3VwLCBpcyB0b28gYmlnIGFuZCBjYW5ub3QgYmUgc2VuZC4gUGxlYXNlIHdhaXQgdW50aWwgdGhlIHZhbHVlIG9mIHRoZSBjb2x1bW4gQ09VTlRfVFJBTlNBQ1RJT05TX1JPV1NfVkFMSURBVElORyBvZiB0aGUgdGFibGUgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9zdGF0cyBkZWNyZWFzZXMgYW5kIHRyeSB0byBqb2luIHRoZSBuZXcgbWVtYmVyIGFnYWluLgBUaGUgbWVtYmVyICVzOiV1IHdpbGwgYmUgdGhlIG9uZSBzZW5kaW5nIHRoZSByZWNvdmVyeSBtZXRhZGF0YSBtZXNzYWdlLgBUaGlzIG1lbWJlciAlczoldSB3aWxsIGJlIHRoZSBvbmUgc2VuZGluZyB0aGUgcmVjb3ZlcnkgbWV0YWRhdGEgbWVzc2FnZS4ARXJyb3IgaW5pdGlhbGl6aW5nIHRoZSAlcyBjb21wcmVzc2lvbiBjb250ZXh0LiBEYXRhIGNhbm5vdCBiZSBjb21wcmVzc2VkLgBFcnJvciB3aGlsZSBjb21wcmVzc2luZyBkYXRhIHVzaW5nICVzIGNvbXByZXNzaW9uLiBEYXRhIGNhbm5vdCBiZSBkZWNvbXByZXNzZWQuAEVycm9yIHVua25vd24gQ29tcHJlc3Npb24gTGlicmFyeSByZXF1ZXN0ZWQuAEVycm9yIHdoaWxlIGNvbXByZXNzaW5nIGRhdGEgdXNpbmcgJXMgY29tcHJlc3Npb24uIFRoZSBvcGVyYXRpb24gY291bGQgbm90IGJlIHBlcmZvcm1lZCBhcyBidWZmZXIgc2l6ZSBleGNlZWRlZCBjb25maWd1cmVkIG1heGltdW0gc2l6ZS4gUGxlYXNlIHdhaXQgdW50aWwgdGhlIHZhbHVlIG9mIHRoZSBjb2x1bW4gQ09VTlRfVFJBTlNBQ1RJT05TX1JPV1NfVkFMSURBVElORyBvZiB0aGUgdGFibGUgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9zdGF0cyBkZWNyZWFzZXMgYW5kIHRyeSB0byBqb2luIHRoZSBuZXcgbWVtYmVyIGFnYWluLgBFcnJvciB3aGlsZSBjb21wcmVzc2luZyBkYXRhIHVzaW5nICVzIGNvbXByZXNzaW9uLiBUaGUgb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkLgBFcnJvciBpbml0aWFsaXppbmcgdGhlICVzIGRlY29tcHJlc3Npb24gY29udGV4dC4gRGF0YSBjYW5ub3QgYmUgZGVjb21wcmVzc2VkLgBFcnJvciB3aGlsZSBkZWNvbXByZXNzaW5nIGRhdGEgdXNpbmcgJXMgY29tcHJlc3Npb24uIFRoZSBvcGVyYXRpb24gY291bGQgbm90IGJlIHBlcmZvcm1lZCBhcyBidWZmZXIgc2l6ZSBleGNlZWRlZCBjb25maWd1cmVkIG1heGltdW0gc2l6ZS4gUGxlYXNlIHdhaXQgdW50aWwgdGhlIHZhbHVlIG9mIHRoZSBjb2x1bW4gQ09VTlRfVFJBTlNBQ1RJT05TX1JPV1NfVkFMSURBVElORyBvZiB0aGUgdGFibGUgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9zdGF0cyBkZWNyZWFzZXMgYW5kIHRyeSB0byBqb2luIHRoZSBuZXcgbWVtYmVyIGFnYWluLgBFcnJvciB3aGlsZSBkZWNvbXByZXNzaW5nIGRhdGEgdXNpbmcgJXMgY29tcHJlc3Npb24uIFRoZSBvcGVyYXRpb24gY291bGQgbm90IGJlIHBlcmZvcm1lZCBhcyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuAEVycm9yIHdoaWxlIGRlY29tcHJlc3NpbmcgZGF0YSB1c2luZyAlcyBjb21wcmVzc2lvbi4gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGFzIGFsbCB0aGUgaW5wdXQgcHJvdmlkZWQgdG8gZGVjb21wcmVzcyBpcyBjb25zdW1lZCwgYnV0IHRoZSBkZWNvbXByZXNzZWQgb3V0cHV0IHByb2R1Y2VkIGlzIGxlc3MgdGhhbiByZXF1aXJlZC4ARXJyb3Igd2hpbGUgZGVjb21wcmVzc2luZyBkYXRhIHVzaW5nICVzIGNvbXByZXNzaW9uLiBUaGUgb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQgYXMgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgcmVwb3J0ZWQgYW4gZXJyb3IuAEVycm9yIHdoaWxlIGRlY29tcHJlc3NpbmcgZGF0YSB1c2luZyAlcyBjb21wcmVzc2lvbi4gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGFzIG5vIG1vcmUgaW5wdXQgYnl0ZXMgcmVtYWluaW5nIHRvIGRlY29tcHJlc3MuIFRoZSBkZWNvbXByZXNzZWQgb3V0cHV0IGhhcyBub3QgYmVlbiBjaGFuZ2VkLgBFcnJvciB3aGlsZSBkZWNvbXByZXNzaW5nIGRhdGEgdXNpbmcgJXMgY29tcHJlc3Npb24uIERhdGEgY2Fubm90IGJlIGRlY29tcHJlc3NlZC4AVmlld19jaGFuZ2VfbG9nX2V2ZW50IHdpbGwgbm90IGJlIGxvZ2dlZCBmdXJ0aGVyIG9uIHRoZSBiaW5hcnkgbG9nLCBhcyBhbGwgbWVtYmVycyBvZiB0aGUgZ3JvdXAgYXJlIDguMy4wIG9yIGdyZWF0ZXIuAEVycm9yIHdoaWxlIHBhcnNpbmcgc2VyaWFsemVkIENlcnRpZmljYXRpb25faW5mbyBmcm9tIHJlY2VpdmVkIFJlY292ZXJ5IE1ldGFkYXRhIHRvIFByb3RvYnVmIGZvcm1hdCB1c2luZyBQcm90b2J1ZiBsaWJyYXJ5LgBFcnJvciB3aGlsZSBzZXJpYWxpemluZyAlIGRhdGEgdXNpbmcgUHJvdG9idWYgbGlicmFyeS4ARXJyb3IgcmVjZWl2ZWQgd2hpbGUgdGhlIFJlY292ZXJ5IHRocmVhZCB3YXMgd2FpdGluZyBmb3IgdGhlIFJlY292ZXJ5IE1ldGFkYXRhLiBUaGUgUmVjb3Zlcnkgd2lsbCBiZSB0ZXJtaW5hdGVkLgBFcnJvciBmZXRjaGluZyBBRlRFUl9HVElEUyBmcm9tIFJlY292ZXJ5IE1ldGFkYXRhIGJ5IFJlY292ZXJ5IHRocmVhZC4gVGhlIFJlY292ZXJ5IHRocmVhZCB0aW1lb3V0IGFmdGVyIHdhaXRpbmcgZm9yICVkIHNlY29uZHMuIFRoZSBSZWNvdmVyeSB3aWxsIGJlIHRlcm1pbmF0ZWQuAEVycm9yIHdoaWxlIGRlY29kaW5nIHRoZSByZWNlaXZlZCBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlLiBUaGUgcmVjZWl2ZWQgcGF5bG9hZCBpcyBlbXB0eSB3aGljaCBjb3VsZCBiZSBkdWUgdG8gZXJyb3IgaW4gZGVjb2Rpbmcgb2YgcmVjZWl2ZWQgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZS4gVGhlIGpvaW5pbmcgbWVtYmVyIHdpbGwgbGVhdmUgdGhlIGdyb3VwLgBUaGUgJXMgcGF5bG9hZCB0eXBlIG9mIHRoZSByZWNlaXZlZCBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlIGlzIGVtcHR5LgBFcnJvciByZWFkaW5nIGd0aWRfZXhlY3V0ZWQgZnJvbSB0aGUgcmVjZWl2ZWQgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZS4ARXJyb3Igd2hpbGUgZGVjb2RpbmcgdGhlIHJlY2VpdmVkIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UuAFRoZSBncm91cCB3YXMgdW5hYmxlIHRvIHNlbmQgdGhlIFJlY292ZXJ5IE1ldGFkYXRhIHRvIGEgam9pbmluZyBtZW1iZXIuAEVycm9yIHdoaWxlIHNhdmluZyBjb3B5IG9mIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UuAEVycm9yIHdoaWxlIHByb2Nlc3NpbmcgcmVjZWl2ZWQgQ2VydGlmaWNhdGlvbiBJbmZvcm1hdGlvbiBmcm9tIHRoZSBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlLgBFcnJvciBDZXJ0aWZpY2F0aW9uIEluZm9ybWF0aW9uIHBhY2tldCBmcm9tIHRoZSByZWNlaXZlZCBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlIGlzIGVtcHR5LgBFcnJvciB3aGlsZSBzZW5kaW5nIFJlY292ZXJ5IG1ldGFkYXRhIGVycm9yIG1lc3NhZ2UuIElmIHRoaXMgaXMgYSB0ZW1wb3JhcnkgZmFpbHVyZSBvZiBzZW5kIG1lc3NhZ2UgYW5kIG1lbWJlciBpdHNlbGYgaGFzbid0IGxlZnQgdGhlIGdyb3VwLCB0aGVuIGpvaW5lciB3aWxsIHRpbWVvdXQgd2FpdGluZyBmb3IgUmVjb3ZlcnkgbWV0YWRhdGEgbWVzc2FnZS4gSWYgdGhpcyBpcyBhIHBlcm1hbmVudCBmYWlsdXJlLCB0aGUgbWVtYmVyIHdpbGwgbGVhdmUgdGhlIGdyb3VwIGFuZCBhbm90aGVyIG1lbWJlciB3aWxsIHNlbmQgdGhlIFJlY292ZXJ5IG1ldGFkYXRhIG1lc3NhZ2UuAEVycm9yIHdoZW4gdHJhbnNmZXJyaW5nIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UgdG8gUmVjb3ZlcnkuIFRoZSBqb2luaW5nIG1lbWJlciB3aWxsIGxlYXZlIHRoZSBncm91cC4ARXJyb3IgQ2VydGlmaWNhdGlvbiBtb2R1bGUgd2Fzbid0IHByb3Blcmx5IGluaXRpYWxpemVkLgBFcnJvciBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlIG1vZHVsZSB3YXNuJ3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuAEVycm9yIHdoaWxlICVzLiBUaGUgb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkLgBUaGUgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgaXMgc2tpcHBlZCBhcyB0aGUgam9pbmVyJ3MgZ3RpZCBleGVjdXRlZCBzZXQgJXMgYWxyZWFkeSBoYXMgYWxsIHRoZSB0cmFuc2FjdGlvbnMgb2YgdGhlIGRvbm9yJ3MgZ3RpZCBzZXQgJXMuAEVycm9yIGluIEdyb3VwIFJlcGxpY2F0aW9uIFJlY292ZXJ5IHdoaWxlIGdldHRpbmcgbWVtYmVyJ3MgZ2xvYmFsIEdUSUQgZXhlY3V0ZWQgc2V0LgBFcnJvciBpbiBHcm91cCBSZXBsaWNhdGlvbiBSZWNvdmVyeSB3aGlsZSBhZGRpbmcgR1RJRHMgaW4gc3RyaW5nIGZvcm1hdCB0byBHdGlkX3NldC4ARXJyb3IgY29tcHV0aW5nIHRoZSBjdXJyZW50IFJlY292ZXJ5IG1ldGFkYXRhIHNlbmRlci4gQ2hlY2sgaWYgdGhpcyBNRU1CRVIgaXMgbm90IGxlYXZpbmcgdGhlIGdyb3VwIGFuZCB0aGUgam9pbmVyIGlzIGFibGUgdG8gc3VjY2Vzc2Z1bGx5IGZldGNoIHRoZSByZWNvdmVyeSBtZXRhZGF0YSBvciBub3QuAEVycm9yIGluIHRoZSByZWNlaXZlZCBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlIHRoZSBudW1iZXIgb2YgY29tcHJlc3NlZCBDZXJ0aWZpY2F0aW9uIEluZm9ybWF0aW9uIHBhY2tldCBjb3VudCBtaXNtYXRjaCB3aXRoIHRoZSBudW1iZXIgb2Ygc2VudCBjb21wcmVzc2VkIENlcnRpZmljYXRpb24gSW5mb3JtYXRpb24gcGFja2V0cy4ARXJyb3Igd2hpbGUgZW5jb2RpbmcgQ2VydGlmaWNhdGlvbiBJbmZvcm1hdGlvbiBmb3IgdGhlIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UuAFRoZXJlIGFyZSBubyB2YWxpZCByZWNvdmVyeSBtZXRhZGF0YSBkb25vcnMuIFRoZSBqb2luaW5nIG1lbWJlciB3aWxsIGxlYXZlIHRoZSBncm91cC4ATm8gZG9ub3IgYXZhaWxhYmxlIHRvIHByb3ZpZGUgdGhlIGNlcnRpZmljYXRpb24gaW5mb3JtYXRpb24sIHBhcnQgb2YgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIHRvIHRoZSBuZXcgbWVtYmVyIGpvaW4gdGhlIGdyb3VwLiBQbGVhc2Ugd2FpdCB1bnRpbCB0aGVyZSBhcmUgT05MSU5FIG1lbWJlcnMgb24gdGhlIGdyb3VwIGFuZCB0cnkgdG8gam9pbiB0aGUgbmV3IG1lbWJlciBhZ2Fpbi4AVGhlIGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGlzIGNvbXBsZXRlLCBqb2luZXIgZ3RpZCBleGVjdXRlZCBzZXQgaGFzIGFsbCB0aGUgdHJhbnNhY3Rpb25zIG9mIHRoZSBkb25vcidzIGd0aWQgc2V0ICVzLgBUaGUgTW9uaXRvciBJTyB0aHJlYWQgZW5jb3VudGVyZWQgYW4gZXJyb3Igd2hpbGUgZXhlY3V0aW5nIHRoZSBxdWVyeSB0byBjaGVjayBjb25uZWN0aW9uIHRvIHRoZSBzb3VyY2Ugc2VydmVyLiBFcnJvcjogJXMuIFRoZSBxdWVyeSBmYWlsZWQgdG8gZXhlY3V0ZSBvbiB0aGUgc291cmNlIChob3N0OiVzIHBvcnQ6JXUgbmV0d29ya19uYW1lc3BhY2U6JXMpIGZvciBjaGFubmVsICclcycuAFRoZSBNb25pdG9yIElPIHRocmVhZCBmYWlsZWQgdG8gZGV0ZWN0IGlmIHRoZSBzb3VyY2UgYmVsb25ncyB0byB0aGUgZ3JvdXAgbWFqb3JpdHkuIEVycm9yOiAlcy4gVGhlIHF1ZXJ5IGZhaWxlZCB0byBleGVjdXRlIG9uIHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJy4AVGhlIHJlcGxpY2EgSU8gdGhyZWFkIGZhaWxlZCB0byBkZXRlY3QgaWYgdGhlIHNvdXJjZSBiZWxvbmdzIHRvIHRoZSBncm91cCBtYWpvcml0eS4gRXJyb3I6ICVzLiBUaGUgcXVlcnkgZmFpbGVkIHRvIGV4ZWN1dGUgb24gdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnLgBUaGUgTW9uaXRvciBJTyB0aHJlYWQgZmFpbGVkIHRvIGdldCBncm91cCBtZW1iZXJzaGlwIGRldGFpbHMuIEVycm9yOiAlcy4gVGhlIHF1ZXJ5IGZhaWxlZCB0byBleGVjdXRlIG9uIHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJy4AVGFibGVzcGFjZSAnJXUnIG1lbnRpb25lZCBpbiB0aGUgcmVkbyBsb2cgaXMgY29ycnVwdGVkIGluIGEgd2F5IGl0IGlzIHVucmVjb3ZlcmFibGUgYnkgZG91YmxlLXdyaXRlIGJ1ZmZlciwgc28gZnVydGhlciByZWRvIGxvZyByZWNvdmVyeSBpcyBub3QgcG9zc2libGUhACVzOiBGYWlsZWQgdG8gc2F2ZSBzdGF0aXN0aWNzIGZvciB0YWJsZT0lcyBlcnI9JXp1AEludmFsaWQgZmx1c2ggaW50ZXJ2YWwgc3BlY2lmaWVkOiAlbHUuIFZhbGlkIHZhbHVlcyBhcmUgMCAob2ZmKSBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJWQuIEFkanVzdGluZyB0byAlZC4AQ2Fubm90IHJlZ2lzdGVyIHZhcmlhYmxlICclcycuJyVzJy4ATWFza2luZyBjb21wb25lbnQgZmFpbGVkIHRvIHJlZ2lzdGVyIG5vdGlmaWNhdGlvbiBzZXJ2aWNlLiBQZXJpb2RpY2FsIG1hc2tpbmcgZGljdGlvbmFyaWVzIGZsdXNoIHdpbGwgbm90IHdvcmsuAEZhaWxlZCB0byBkZWNvZGUgR3JvdXAgUmVwbGljYXRpb24gbWVzc2FnZTogJXMuIFJlYXNvbiA6ICVzAFRoZSBBcHBsaWVyIHByb2Nlc3Mgb2YgR3JvdXAgUmVwbGljYXRpb24gZm91bmQgYW4gZXJyb3IgYW5kIHdhcyByZXF1ZXN0ZWQgdG8gc3RvcDogJXMAQ2Fubm90IGluc3RhbGwgdGhlIGNvbXBvbmVudC4AQ2Fubm90IHVuaW5zdGFsbCB0aGUgbGFuZ3VhZ2UgY29tcG9uZW50OiAlcy4AQ2FsbGluZyBjb21wb25lbnQgc2VydmljZTogJXMuAEludGVybmFsIGVycm9yIHdoaWxlICVzLgBJbnRlcm5hbCBWTSBBUEkgZnVuY3Rpb24gZmFpbGVkOiAlcy4ASW50ZXJuYWwgVk0gZXJyb3Igd2hpbGUgJXMuAFRoZSByZXNvdXJjZSBsaW1pdCBoYXMgYmVlbiBleGNlZWRlZC4gRGV0YWlsczogJXMuAFZhbHVlIGZvciBvcHRpb24gJyVzJyBjb250YWlucyBjaXBoZXIgJyVzJyB0aGF0IGlzIGJsb2NrZWQuIFBsZWFzZSByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgYWxsb3dlZCBjaXBoZXJzLgBLZXlyaW5nIGZpbGUgcGF0aCBpcyBlbXB0eSBpbiBjb25maWd1cmF0aW9uIGZpbGUuAEZhaWxlZCB0byByZWFkIGtleXJpbmcgZmlsZTogJXMuAEZhaWxlZCB0byBkZWNyeXB0IGtleXJpbmcgZmlsZTogJXMuAFRoZSBrZXlyaW5nIGZpbGUgY29udGVudCBpcyBub3QgaW4gYSB2YWxpZCBKU09OIGZvcm1hdC4ARmFpbGVkIHRvIGV4dHJhY3QgYSB2YWxpZCBKU09OIGRhdGEgZnJvbSBrZXlyaW5nIGZpbGUuAEZhaWxlZCB0byBleHRyYWN0IGtleSBmcm9tIGtleXJpbmcgZmlsZSBKU09OIGRhdGEuAEtleXJpbmcgY29tcG9uZW50IGlzIG5vdCBpbml0aWFsaXplZC4AUHJvdmlkZWQgRGF0YSBJRCBpcyBlbXB0eS4ARmFpbGVkIHRvIGluaXRpYWxpemUgbWV0YWRhdGEgaXRlcmF0b3IuAEZhaWxlZCB0byBpbml0aWFsaXplIGtleSByZWFkZXIgaXRlcmF0b3IuAEZhaWxlZCB0byByZWFkIGtleSBmcm9tIGtleSByZWFkZXIgaXRlcmF0b3IuACUqcwBTdWJtaXQgYSBkZXRhaWxlZCBidWcgcmVwb3J0IHRvIGh0dHA6Ly9idWdzLm15c3FsLmNvbQBBVVRPX0lOQ1JFTUVOVCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggRE9VQkxFL0ZMT0FUIGZpZWxkLiBQbGVhc2UgY29uc2lkZXIgZml4aW5nIChTY2hlbWE6JXMsIFRhYmxlOiVzLCBDb2x1bW46JXMpLgBEb3duZ3JhZGluZyB0aGUgc3lzIHNjaGVtYS4ARG93bmdyYWRlIG9mIGhlbHAgdGFibGVzICVzLgBDb3VsZCBub3QgZmluZCBkYXRhIHBvaW50ZWQgYnkgZGF0YV9pZDogJXMsIGF1dGhfaWQ6ICVzLiBTa2lwcGluZy4ARmFpbGVkIHRvIGRlYWxsb2NhdGUgcmVhZGVyX29iamVjdC4AQSBjb25uZWN0aW9uIGZyb20gJXMgd2FzIGNsb3NlZCBieSB0aGUgc2VydmVyIGR1ZSB0byBhIHRpbWVvdXQgaW4gdGhlIGNvbW11bmljYXRpb24gbGF5ZXIgKHZpbzolZCwgcGFja2V0OiVkKSAlbGQgc2Vjb25kcyBhZnRlciB0aGUgbGFzdCBjb21tYW5kIHN0YXJ0ZWQuIEN1cnJlbnRseSBjb25maWd1cmVkIHdhaXRfdGltZW91dCBpcyAlbGQgc2Vjb25kcy4AVGhlIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBncm91cF9yZXBsaWNhdGlvbl9wcmVlbXB0aXZlX2dhcmJhZ2VfY29sbGVjdGlvbiBvcHRpb24gdmFsdWUgJyVkJyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVkJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AU3RpbGwgcm9sbGluZyBiYWNrIHRyYW5zYWN0aW9uICVsbHU7ICVsbHUgdW5kbyByZWNvcmRzIHJvbGxlZCBiYWNrIG91dCBvZiAlbGx1IHRvdGFsICglbHUlJSBjb21wbGV0ZSkuIFRyYW5zYWN0aW9uIGluZm86IGxhc3Qgc3RhdGU6ICVzAFN0aWxsIHJvbGxpbmcgYmFjayB0cmFuc2FjdGlvbiAlbGx1OyAlbGx1IHVuZG8gcmVjb3JkcyByb2xsZWQgYmFjayBvdXQgb2YgJWxsdSB0b3RhbCAoJWx1JSUgY29tcGxldGUpLgBJbnZhbGlkIGZvcm1hdCBvZiBmaWxlICclcycuAFJlbGF5IGxvZyBzYW5pdGl6YXRpb246ICVzAEZvcmVpZ24ga2V5ICclLjY0cycgb24gdGFibGUgJyUuNjRzJy4nJS42NHMnIHJlZmVycyB0byBub24tdW5pcXVlIGtleSBvciBwYXJ0aWFsIGtleS4gVGhpcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4ARGlzYWJsaW5nIE1UTCBpbiB0aHJlYWQgZ3JvdXAgJXUgc2luY2UgaXQgaGFzICV1ICg9TVRMIHBlciBncm91cCkgbG9uZyBydW5uaW5nIHRyYW5zYWN0aW9ucy4AUmUtZW5hYmxpbmcgTVRMIGluIHRocmVhZCBncm91cCAldSBzaW5jZSBpdCBpcyBkb3duIHRvICV1IGxvbmcgcnVubmluZyB0cmFuc2FjdGlvbnMuAENvbHVtbiAnJS42NHMuJS42NHMuJS42NHMnIGhhdmluZyBwcmVmaXgga2V5IHBhcnQgJyUuNjRzKCV1KScgaW4gdGhlIFBBUlRJVElPTiBCWSBLRVkoKSBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZC4ATG9naW4gdXNlcjogJXNAJXMgKGV4dGVybmFsOiAlcykgYXV0aGVudGljYXRlZCBhczogJXMAQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJXMnQCclcycsIG1pc3NpbmcgcHJveHkgcHJpdmlsZWdlIHRvICclcycuAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyVzJ0AnJXMnLCBwcm94aWVkIHVzZXIgJyVzJyBkb2Vzbid0IGV4aXN0LgBEaXN0cmlidXRlZCByZWNvdmVyeSB3aWxsIHdhaXQgdW50aWwgdGhlIHRyYW5zYWN0aW9ucyAnJXMnIGNvbnRhaW5lZCBvbiB0aGUgJ2dyb3VwX3JlcGxpY2F0aW9uX2FwcGxpZXInIGNoYW5uZWwgYXJlIGFwcGxpZWQuAERpc3RyaWJ1dGVkIHJlY292ZXJ5IGZpbmlzaGVkIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlvbnMgJyVzJyBjb250YWluZWQgb24gdGhlICdncm91cF9yZXBsaWNhdGlvbl9hcHBsaWVyJyBjaGFubmVsLgBaU1REIGRlY29tcHJlc3Npb24gZmFpbGVkOiAlcwAlcwBVc2luZyBpbm5vZGJfZmx1c2hfbWV0aG9kPSVzAEJ1bGsgU2Nhbm5lcjogJXMAQ29tYmluaW5nIHRoZSBzdG9yYWdlIGVuZ2luZXMgJS42NHMgYW5kICUuNjRzIGlzIGRlcHJlY2F0ZWQsIGJ1dCB0aGUgc3RhdGVtZW50IG9yIHRyYW5zYWN0aW9uIHVwZGF0ZXMgYm90aCB0aGUgJS42NHMgdGFibGUgJS42NHMuJS42NHMgYW5kIHRoZSAlLjY0cyB0YWJsZSAlLjY0cy4lLjY0cy4ARmFpbGVkIHRvIHVwZGF0ZSBkYXRhIGRpcmVjdG9yeSBmbGFnIGZvciBkZCB0YWJsZSB3aXRoIHRhYmxlc3BhY2UgaWQgJyVsbHUnIHdoZW4gaWJkIGZpbGUgZm9yICclcycgaXMgbW92ZWQgdG8gbmV3IGxvY2F0aW9uICclcycgZHVyaW5nIHNlcnZlciBzaHV0ZG93bgAlcyBERCBJRDogJWxsdSAtIFRhYmxlc3BhY2UgJXUsIG5hbWUgJyVzJywgZm91bmQgYXQgJyVzJyBvdXRzaWRlIGRlZmF1bHQgZGF0YSBkaXJlY3RvcnksIGJ1dCBERCBtaXNzZXMgaW5mbyBhYm91dCBEQVRBIERJUkVDVE9SWQBVcG9uIHJlY29ubmVjdGlvbiB3aXRoIHRoZSByZXBsaWNhLCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIGR1bXAgdGhyZWFkIGZvciAlcyA8JXM+LCBhbiBleGlzdGluZyBkdW1wIHRocmVhZCB3aXRoIHRoZSBzYW1lICVzIHdhcyBkZXRlY3RlZC4gVGhlIHNvdXJjZSBpcyB0ZXJtaW5hdGluZyB0aGUgcHJldmlvdXMgZHVtcCB0aHJlYWQgKCV1KSwgd2hpY2ggaXMgbm9ybWFsIGFuZCBleHBlY3RlZC4AVGhlIHRyYW5zYWN0aW9uICclLS4xOTJzJyB3aWxsIGNvbW1pdCBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0IHRvIGl0cyBzb3VyY2UgdG8gZm9sbG93IHRoZSBncm91cCBnbG9iYWwgb3JkZXIuAFRlbXB0YWJsZTogJXMARmFpbGVkIHRvIHJlY3JlYXRlIGEgY2FjaGUgb24gaW5mbyBmaWxlIChmaWxlICclcycpACVzACVzAENhbm5vdCBjcmVhdGUgY29tcHJlc3Npb24gZGljdGlvbmFyeSB0YWJsZXMgaW4gJXMlc3JlYWQtb25seSBtb2RlLgAlcwAlcwBUYWJsZSAlcyBpcyBlbmNyeXB0ZWQgYnV0IGRlY3J5cHRpb24gZmFpbGVkLiBTZWVtcyB0aGF0IHRoZSBlbmNyeXB0aW9uIGtleSBmZXRjaGVkIGZyb20ga2V5cmluZyBpcyBub3QgdGhlIGNvcnJlY3Qgb25lLiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IGtleXJpbmc/AFRhYmxlc3BhY2UgaWQgJXUgaW4gZmlsZSAlcyBpcyBlbmNyeXB0ZWQgYnV0IGtleXJpbmcgb3IgdXNlZCBrZXlfaWQgJXUgaXMgbm90IGF2YWlsYWJsZS4gQ2FuJ3QgY29udGludWUgcmVhZGluZyB0YWJsZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGNvcnJlY3Qga2V5cmluZy4AV2FpdGluZyBmb3Iga2V5cmluZyBlbmNyeXB0aW9uIHRocmVhZHMgdG8gZXhpdAAlcwBLZXkgcm90YXRpb24gb2YgZW5jcnlwdGVkIHNlc3Npb24gdGVtcG9yYXJ5IHRhYmxlc3BhY2UgJXMgZmFpbGVkACVzAFVwZ3JhZGUgaXMgbm90IHBvc3NpYmxlIGFzIHRoZXJlIGFyZSB0YWJsZXMgdGhhdCBhcmUgS0VSWUlORyBlbmNyeXB0ZWQuIEtFWVJJTkcgZW5jcnlwdGlvbiBpcyBzdGlsbCBleHBlcmltZW50YWwgZmVhdHVyZSBpbiB0aGUgdmVyc2lvbiB5b3UgYXJlIHVwZ3JhZGluZyBmcm9tLiBUbyB1cGdyYWRlIHBsZWFzZSBkZWNyeXB0IHRoZSB0YWJsZXMgZW5jcnlwdGVkIHdpdGggS0VZUklORyBlbmNyeXB0aW9uLgBSZWRvIGxvZyBlbmNyeXB0aW9uIG1vZGUgY2FuJ3QgYmUgc3dpdGNoZWQgd2l0aG91dCBzdG9wcGluZyB0aGUgc2VydmVyIGFuZCByZWNyZWF0aW5nIHRoZSByZWRvIGxvZ3MuIEN1cnJlbnQgbW9kZSBpcyAlcywgcmVxdWVzdGVkICVzLgBSZWRvIGxvZyBrZXkgZ2VuZXJhdGlvbiBmYWlsZWQuAEZhaWxlZCB0byBlbmNyeXB0IHJlZG8gbG9nIHRhYmxlc3BhY2UuAEZhaWxlZCB0byBsb2FkIHJlZG8ga2V5IHZlcnNpb24gJXUAQ291bGRuJ3QgZmV0Y2ggbmV3bHkgZ2VuZXJhdGVkIHJlZG8ga2V5LgBDb3VsZG4ndCBwYXJzZSBzeXN0ZW0ga2V5OiAlcwBSZWRvIGxvZyBjYW5ub3QgYmUgZW5jcnlwdGVkIGlmIHRoZSBrZXlyaW5nIGlzIG5vdCBsb2FkZWQuAFVuZG8gbG9nIGNhbid0IGJlIGVuY3J5cHRlZCBpZiB0aGUga2V5cmluZyBpcyBub3QgbG9hZGVkLgBDb3VsZG4ndCBmZXRjaCBkZWZhdWx0IHBlcmNvbmFfcmVkbyBrZXkuIFBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIG9wZXJhdGlvbmFsLgBVcGdyYWRlIGNhbm5vdCBjb250aW51ZSBhcyByZWRvIGlzIGVuY3J5cHRlZCB3aXRoIG9sZCwgZXhwZXJpbWVudGFsIHZlcnNpb24gb2YgS0VZUklORyBlbmNyeXB0aW9uLiBQbGVhc2UgcGVyZm9ybSBzbG93IHNodXRkb3duIGFuZCByZW1vdmUgb2xkIHJlZG8gbG9nIGZpbGVzIGJlZm9yZSB1cGdyYWRpbmcuAFRhYmxlc3BhY2UgaWQgJXUgaW4gZmlsZSAlcyBpcyBlbmNyeXB0ZWQuIEFsdGhvdWdoIHNlcnZlciBtYW5hZ2VkIHRvIGZpbmQga2V5X2lkPSV1IGluIGtleXJpbmcgdG8gZGVjcnlwdCBpdCwgc29tZSB2ZXJzaW9ucyBvZiB0aGlzIGtleSwgdGhhdCBhcmUgbmVlZGVkIHRvIGRlY3J5cHQgdGhpcyBzcGFjZSwgYXJlIG1pc3NpbmcuIE1heWJlIHlvdSBhcmUgdXNpbmcgYW4gb2xkIGtleXJpbmc/IENhbid0IGNvbnRpbnVlIHJlYWRpbmcgdGFibGUuIFBsZWFzZSBwcm92aWRlIHRoZSBjb3JyZWN0IGtleXJpbmcuAFRhYmxlc3BhY2UgaWQgJXUgaW4gZmlsZSAlcyBpcyBlbmNyeXB0ZWQuIEFsdGhvdWdoIHNlcnZlciBtYW5hZ2VkIHRvIGZpbmQgYWxsIG5lZWRlZCB2ZXJzaW9ucyBvZiBrZXlfaWQ9JXUgaW4ga2V5cmluZyB0byBkZWNyeXB0IGl0LCB0aGUgcHJvdmlkZWQgdmVyc2lvbnMgYXJlIGVpdGhlciBpbmNvcnJlY3Qgb3IgY29ycnVwdGVkLiBDYW4ndCBjb250aW51ZSByZWFkaW5nIHRhYmxlLiBQbGVhc2UgcHJvdmlkZSB0aGUgY29ycmVjdCBrZXlyaW5nLgBUYWJsZXNwYWNlIGlkICV1IGlzIGVuY3J5cHRlZCBidXQga2V5cmluZyBvciB1c2VkIGtleV9pZCAldSBpcyBub3QgYXZhaWxhYmxlLiBDYW4ndCBjb250aW51ZSByZWFkaW5nIHRhYmxlLiBQbGVhc2UgcHJvdmlkZSB0aGUgY29ycmVjdCBrZXlyaW5nLgBUYWJsZXNwYWNlIGlkICV1IGlzIGVuY3J5cHRlZC4gQWx0aG91Z2ggc2VydmVyIG1hbmFnZWQgdG8gZmluZCBrZXlfaWQ9JXUgaW4ga2V5cmluZyB0byBkZWNyeXB0IGl0LCBzb21lIHZlcnNpb25zIG9mIHRoaXMga2V5LCB0aGF0IGFyZSBuZWVkZWQgdG8gZGVjcnlwdCB0aGlzIHNwYWNlLCBhcmUgbWlzc2luZy4gTWF5YmUgeW91IGFyZSB1c2luZyBhbiBvbGQga2V5cmluZz8gQ2FuJ3QgY29udGludWUgcmVhZGluZyB0YWJsZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGNvcnJlY3Qga2V5cmluZy4AVGFibGVzcGFjZSBpZCAldSBpcyBlbmNyeXB0ZWQuIEFsdGhvdWdoIHNlcnZlciBtYW5hZ2VkIHRvIGZpbmQgYWxsIG5lZWRlZCB2ZXJzaW9ucyBvZiBrZXlfaWQ9JXUgaW4ga2V5cmluZyB0byBkZWNyeXB0IGl0LCB0aGUgcHJvdmlkZWQgdmVyc2lvbnMgYXJlIGVpdGhlciBpbmNvcnJlY3Qgb3IgY29ycnVwdGVkLiBDYW4ndCBjb250aW51ZSByZWFkaW5nIHRhYmxlLiBQbGVhc2UgcHJvdmlkZSB0aGUgY29ycmVjdCBrZXlyaW5nLgBEZWxheWluZyB0cnVuY2F0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgZHVlIHRvIGxvY2sgdGFibGVzIGZvciBiYWNrdXAuAFggcGx1Z2luIGZhaWxlZCB0byByZWdpc3RlciBTU0wgcmVsb2FkIGNhbGxiYWNrLiBBTFRFUiBJTlNUQU5DRSBSRUxPQUQgVExTIHdpbGwgaGF2ZSBubyBlZmZlY3Qgb24gdGhlIHBsdWdpbi4AS2V5cmluZyBjb25maWd1cmF0aW9uIGRvZXNuJ3QgZXhpc3RzOiAlcwBLZXlyaW5nIGNvbmZpZ3VyYXRpb24gSlNPTiBwYXJzZSBlcnJvcjogJXMgKCVsdSkAVGFibGUgJyVzLiVzJyByZXF1aXJlcyB0aGUgJyVzJyBzdG9yYWdlIGVuZ2luZSwgd2hpY2ggd2FzIHJlbW92ZWQgaW4gUGVyY29uYSBTZXJ2ZXIgOC4wLjI4AC0tJXMgaXMgc2V0IHRvIE5VTEwuIER5bmFtaWMgbG9nIGZpbGVzIGNhbiBiZSBzYXZlZCBhbnl3aGVyZSwgcG9zc2libHkgb3ZlcndyaXRpbmcgb3RoZXIgZmlsZXMuAEtNUyBjb21tdW5pY2F0aW9uIGVycm9yOiAlcwBVcGdyYWRlIGZhaWxlZCwgcmVjcmVhdGluZyByZWRvIGxvZ3Mgd2l0aCBwcmV2aW91cyB2ZXJzaW9uAENvdWxkIG5vdCBhZGQgZXZlbnQgcnVsZSAnJXMnIHRvIC0tcmVwbGljYS1lbmFibGUtZXZlbnQuICVzAEZsb3cgY29udHJvbCBhdXRvIGV2aWN0IHRpbWVvdXQgcmVhY2hlZC4gVGhlIHNlcnZlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAFRtcF90YWJsZV9zaXplIGlzIHNldCBiZWxvdyAxTWlCLiBUaGUgVEVNUFRBQkxFIGVuZ2luZSByZXF1aXJlcyBhdCBsZWFzdCAxTWlCIHRhYmxlIHNpemUsIGFuZCB3aWxsIHVzZSB0aGF0IHZhbHVlIGluc3RlYWQuIFBsZWFzZSBpbmNyZWFzZSB0aGUgbGltaXQgdG8gc2lsZW5jZSB0aGlzIHdhcm5pbmcuAEZhaWxpbmcgY29ubmVjdGlvbiBhdHRlbXB0cyB0aHJlc2hvbGQgcmVhY2hlZCBmb3IgJXMARmFpbGluZyBjb25uZWN0aW9uIGF0dGVtcHRzIHRocmVzaG9sZCByZWFjaGVkIGZvciAlcywgZnVydGhlciBtZXNzYWdlcyB3aWxsIGJlIHN1cHByZXNzZWQgZm9yIG5leHQgJWxsdSBzZWNvbmRzAERlbGF5ZWQgJWxsdSBjb25uZWN0aW9uIGF0dGVtcHRzIGR1cmluZyBsYXN0ICVsbHUgc2Vjb25kcwBUaGUgLS1zZWN1cmUtZmlsZS1wYXRoIGlzIGNvbmZpZ3VyZWQsICVzIG11c3QgYmUgc2V0IGFjY29yZGluZ2x5LgBJbml0aWFsaXppbmcgQXVkaXQgRXZlbnQgRmlsdGVyLi4uAFVuaW5zdGFsbGVkIEF1ZGl0IEV2ZW50IEZpbHRlcgBGYWlsZWQgdG8gY2hlY2svZ2VuZXJhdGUgZW5jcnlwdGlvbiBwYXNzd29yZABGYWlsZWQgdG8gaW5pdCBBVURJVF9BQk9SVF9FWEVNUFQgcHJpdmlsZWdlAEZhaWxlZCB0byBjcmVhdGUgVURGcyBoYW5kbGVyIGluc3RhbmNlAEZhaWxlZCB0byBpbml0IFVERnMARmFpbGVkIHRvIGNyZWF0ZSBhdWRpdCBydWxlIHJlZ2lzdHJ5IGluc3RhbmNlAEZhaWxlZCB0byBpbml0IHJlY29yZCBmb3JtYXR0ZXIARmFpbGVkIHRvIGluaXQgbG9nIHdyaXRlcgBDYW5ub3Qgb3BlbiBsb2cgd3JpdGVyLCBlcnJvcjogJXMARmFpbGVkIHRvIGNyZWF0ZSBsb2cgcmVhZGVyIGluc3RhbmNlAEZhaWxlZCB0byBpbml0IGNvbXBvbmVudABBdWRpdCBMb2cgRmlsdGVyIGlzIGRpc2FibGVkLiBFbmFibGUgaXQgd2l0aCBhdWRpdF9sb2dfZmlsdGVyLmRpc2FibGUgPSBmYWxzZS4ARmFpbGVkIHRvIGNoZWNrIGZpbHRlcmluZyBydWxlIG5hbWUgZXhpc3RlbmNlAEZhaWxlZCB0byByZW1vdmUgZmlsdGVyICclcycgZnJvbSB1c2VycyB0YWJsZQBGYWlsZWQgdG8gcmVtb3ZlIGZpbHRlciAnJXMnAEZhaWxlZCB0byBjaGVjayBmaWx0ZXJpbmcgcnVsZSBuYW1lIGV4aXN0ZW5jZQBVbmtub3duIGZpbHRlcmluZyBydWxlIG5hbWUgJyVzJwBGYWlsZWQgdG8gc2V0ICclcycgZmlsdGVyaW5nIHJ1bGUgZm9yIHVzZXIgJyVzQCVzJwBGYWlsZWQgdG8gcmVtb3ZlIGZpbHRlciBmb3IgdXNlciAnJXNAJXMnIGZyb20gdXNlcnMgdGFibGUATG9nIHJvdGF0aW9uIGZhaWxlZDogJyVzJwBGYWlsZWQgdG8gcmVnaXN0ZXIgc3RhdHVzIHZhcmlhYmxlcwBGYWlsZWQgdG8gdW5yZWdpc3RlciBzdGF0dXMgdmFyaWFibGVzAEZhaWxlZCB0byByZWdpc3RlciAlcy4lcyBzeXN0ZW0gdmFyaWFibGUARmFpbGVkIHRvIHVucmVnaXN0ZXIgJXMuJXMgc3lzdGVtIHZhcmlhYmxlAEZhaWxlZCB0byBjaGVjayAlcyB2YXJpYWJsZSBzb3VyY2UAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHRoZSAnbG9nJyBtZW1iZXIgbXVzdCBiZSBvZiB0eXBlIGJvb2wAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsICdjbGFzcycgYXJyYXkgZWxlbWVudCBtdXN0IGJlIG9mIG9iamVjdCB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCAnY2xhc3MnIG11c3QgYmUgYW4gb2JqZWN0IG9yIGFuIGFycmF5AFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBubyBuYW1lIHByb3ZpZGVkIGZvciBldmVudCBjbGFzcwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgJ2Fib3J0JyBjb25kaXRpb24gc2hvdWxkIGJlIHNldCBmb3Igc3ViY2xhc3Mgb25seQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgJ2xvZycgbXVzdCBiZSBvZiBib29sIHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGZhaWxlZCB0byBwYXJzZSAncHJpbnQnIHJlcGxhY2VtZW50IHJ1bGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHJlcGxhY2VtZW50IHJ1bGUgbm90IGV4cGVjdGVkIGZvciBldmVudCBjbGFzcwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgdGhlcmUgbXVzdCBiZSBubyAnZXZlbnQnIGluIGNhc2UgY2xhc3MgbmFtZXMgcHJvdmlkZWQgYXMgYW4gYXJyYXkgb2Ygc3RyaW5ncwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgZXZlbnQgY2xhc3MgbmFtZSB3aXRoaW4gYW4gYXJyYXkgc2hvdWxkIGJlIG9mIGEgc3RyaW5nIHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGV2ZW50IGNsYXNzIG5hbWUgdHlwZSBtdXN0IGJlIGVpdGhlciBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgJ2V2ZW50JyBhcnJheSBlbGVtZW50IG11c3QgYmUgb2Ygb2JqZWN0IHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHR5cGUgb2YgJ2V2ZW50JyBtdXN0IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgYW4gYXJyYXkgb2Ygb2JqZWN0cwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgJ2Fib3J0JyBtdXN0IGJlIG9mIGJvb2wgb3Igb2JqZWN0IHR5cGUARXZlbnQgZmllbGQgJyVzJyBjYW5ub3QgYmUgcmVwbGFjZWQAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHRoZXJlIG11c3QgYmUgb25seSBvbmUgY29uZGl0aW9uIHNwZWNpZmllZCBmb3IgJ2xvZycgZmllbGQAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHRoZSAnbG9nJyBjb25kaXRpb24gbmFtZSBtdXN0IGJlIG9mIHN0cmluZyB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB1bmtub3duICdsb2cnIGNvbmRpdGlvbiBuYW1lICclcycAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGNvbmRpdGlvbiBkZWZpbml0aW9uICdmaWVsZCcgbXVzdCBiZSBvZiBvYmplY3QgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgZXZlbnQgZmllbGQgZGVmaW5pdGlvbiAnZmllbGQnIG11c3QgaGF2ZSBmaWVsZCAnbmFtZScgYW5kICd2YWx1ZScgcHJvdmlkZWQgYXMgc3RyaW5ncwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgY29uZGl0aW9uIGRlZmluaXRpb24gJ2FuZCcgbXVzdCBiZSBvZiBhcnJheSB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBhIG1lbWJlciBvZiAnYW5kJyBjb25kaXRpb24gbXVzdCBiZSBvZiBvYmplY3QgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgdGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IHR3byBmaWVsZHMgcHJvdmlkZWQgZm9yICdhbmQnIGNvbmRpdGlvbgBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgY29uZGl0aW9uIGRlZmluaXRpb24gJ29yJyBtdXN0IGJlIG9mIGFycmF5IHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGEgbWVtYmVyIG9mICdvcicgY29uZGl0aW9uIG11c3QgYmUgb2Ygb2JqZWN0IHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZmllbGRzIHByb3ZpZGVkIGZvciAnb3InIGNvbmRpdGlvbgBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgY29uZGl0aW9uIGRlZmluaXRpb24gJ25vdCcgbXVzdCBiZSBvZiBvYmplY3QgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgY29uZGl0aW9uIGRlZmluaXRpb24gJ3ZhcmlhYmxlJyBtdXN0IGJlIG9mIG9iamVjdCB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBldmVudCBmaWVsZCBkZWZpbml0aW9uICd2YXJpYWJsZScgbXVzdCBoYXZlIGZpZWxkICduYW1lJyBhbmQgJ3ZhbHVlJyBwcm92aWRlZCBhcyBzdHJpbmdzAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCAnZnVuY3Rpb24nIG11c3QgYmUgb2Ygb2JqZWN0IHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIG1pc3NpbmcgJ2Z1bmN0aW9uJyBuYW1lIG9yIG5vdCBhIHN0cmluZwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgdW5rbm93biBmdW5jdGlvbiBuYW1lICclcycAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHdyb25nIGZ1bmN0aW9uIGFyZ3MgZm9ybWF0IHByb3ZpZGVkAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBpbnZhbGlkIGFyZ3VtZW50cyBmb3IgJyVzJyBmdW5jdGlvbgBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgbm8gbmFtZSBwcm92aWRlZCBmb3IgZXZlbnQgc3ViY2xhc3MAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGV2ZW50IHN1YmNsYXNzIG5hbWUgd2l0aGluIGFuIGFycmF5IHNob3VsZCBiZSBvZiBhIHN0cmluZyB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBldmVudCBzdWJjbGFzcyBuYW1lIHR5cGUgbXVzdCBiZSBlaXRoZXIgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHRoZXJlIG11c3QgYmUgb25seSBvbmUgY29uZGl0aW9uIHByb3ZpZGVkLCAnbG9nJyBvciAnYWJvcnQnAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB1bmtub3duIHRhZyAnJXMnAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBiYWQgZm9ybWF0IGZvciAnJXMnIGFjdGlvbgBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgZmFpbGVkIHRvIHBhcnNlICdmaWx0ZXInIHJlcGxhY2VtZW50IHJ1bGUARVJST1I6IEludGVybmFsIGVycm9yAFdyb25nIGFyZ3VtZW50OiBpbmNvcnJlY3QgcnVsZSBkZWZpbml0aW9uICclcycARmFpbGVkIHRvIGNoZWNrIGZpbHRlcmluZyBydWxlIG5hbWUgZXhpc3RlbmNlAEZpbHRlcmluZyBydWxlIHdpdGggdGhlIG5hbWUgJyVzJyBhbHJlYWR5IGV4aXN0cwBGYWlsZWQgdG8gaW5zZXJ0IGZpbHRlcmluZyBydWxlICclcycsICclcycAVW5leHBlY3RlZCBldmVudCB0eXBlIGZvciByZXBsYWNlX2ZpZWxkIGFjdGlvbgBBIEZJUFMtYXBwcm92ZWQgdmVyc2lvbiBvZiB0aGUgT3BlblNTTCBjcnlwdG9ncmFwaGljIGxpYnJhcnkgaGFzIGJlZW4gZGV0ZWN0ZWQgaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0gd2l0aCBhIHByb3Blcmx5IGNvbmZpZ3VyZWQgRklQUyBtb2R1bGUgYXZhaWxhYmxlIGZvciBsb2FkaW5nLiBQZXJjb25hIFNlcnZlciBmb3IgTXlTUUwgd2lsbCBsb2FkIHRoaXMgbW9kdWxlIGFuZCBydW4gaW4gRklQUyBtb2RlLgA=
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 1
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
errmsg.sys
415.86 KB
lrw-r--r--
2025-12-16 08:06:46
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).