REDROOM
PHP 7.4.33
Path:
Logout
Edit File
Size: 379.75 KB
Close
//usr/share/mysql-8.0/czech/errmsg.sys
Text
Base64
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TisEAFErBABUKwQAVysEAForBABdKwQAYCsEAGMrBABmKwQAaSsEAGwrBABvKwQAcisEAHUrBAB4KwQAeysEAH4rBACBKwQAhCsEAIcrBACKKwQAjSsEAJArBACTKwQAlisEAJkrBACcKwQAnysEAKIrBAClKwQAqCsEAKsrBACuKwQAsSsEALQrBAC3KwQAuisEAL0rBADAKwQAwysEAMYrBADJKwQAzCsEAM8rBADSKwQA1SsEANgrBADbKwQA3isEAOErBADkKwQA5ysEAOorBADtKwQA8CsEAPMrBAD2KwQA+SsEAPwrBAD/KwQAAiwEAAUsBAAILAQACywEAA4sBAARLAQAFCwEABcsBAAaLAQAHSwEACAsBAAjLAQAJiwEACksBAAsLAQALywEADIsBAA1LAQAOCwEADssBAA+LAQAQSwEAEQsBABHLAQASiwEAE0sBABQLAQAUywEAFYsBABZLAQAXCwEAF8sBABiLAQAZSwEAGgsBABrLAQAbiwEAHEsBAB0LAQAdywEAHosBAB9LAQAgCwEAIMsBACGLAQAiSwEAIwsBACPLAQAkiwEAJUsBACYLAQAmywEAJ4sBAChLAQApCwEAKcsBACqLAQArSwEALAsBACzLAQAtiwEALksBAC8LAQAvywEAMIsBADFLAQAyCwEAMssBADOLAQA0SwEANQsBADXLAQA2iwEAN0sBADgLAQA4ywEAOYsBADpLAQA7CwEAO8sBADyLAQA9SwEAPgsBAD7LAQA/iwEAAEtBAAELQQABy0EAAotBAANLQQAEC0EABMtBAAWLQQAGS0EABwtBAAfLQQAIi0EACUtBAAoLQQAKy0EAC4tBAAxLQQANC0EADctBAA6LQQAPS0EAEAtBABDLQQARi0EAEktBABMLQQATy0EAFItBABVLQQA2S0EAEQuBABsLgQAyy4EABsvBABbLwQAiy8EANgvBAAWMAQARjAEAHcwBACnMAQA7jAEAA0xBAAmMQQANzEEAGgxBACXMQQA3DEEABsyBABcMgQAdzIEAJwyBAC9MgQAADMEABwzBAA8MwQAXTMEAI4zBAC5MwQA3TMEAB40BABbNAQAhjQEAOM0BAABNQQAHDUEADw1BABmNQQAjTUEAPA1BABQNgQAdzYEALM2BADSNgQAPjcEAHQ3BAC4NwQAGDgEAJQ4BADZOAQA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eKEEAKmhBAD4oQQAUKIEAN6iBABMowQAoKMEAPujBAAVpAQAOqQEAFakBABspAQAzaQEAOekBAAQpQQALaUEAGKlBADopQQAMKYEAFamBACJpgQAyaYEAN+mBABNpwQAiKcEAM2nBAACqAQAb6gEAIqoBAD6qAQAsKkEANmpBAAwqgQAZaoEAISqBADBqgQA4KoEACCrBABsqwQAsasEAAOsBABArAQAaqwEAMSsBAAerQQAc60EALitBAARrgQALK4EAJyuBAD9rgQAda8EANqvBACYsAQAyrAEAPWwBAAhsQQAdrEEAMOxBAAOsgQAQ7IEAHOyBACYsgQAt7IEANeyBAD4sgQAWrMEAKmzBAD2swQAP7QEAJe0BADytAQAHrUEAFi1BACXtQQA27UEAFC2BABBtwQAa7cEAJa3BACttwQA5rcEABG4BABluAQAJ7kEACq5BAAtuQQAMLkEAGK5BACWuQQA9bkEAGe6BACqugQA4roEAEW7BABUvAQAnrwEADu9BADKvQQA/L0EAE2+BADOvgQAML8EAEi/BACyvwQACsAEAEvABABhwAQAeMAEAL3ABADnwAQABsEEAPzCBAAwwwQAgMMEAKPEBAAqxQQAi8UEAM/FBAAAxgQAA8YEAEjGBADwxgQAuscEAH/IBAC2yQQATMoEAG7KBAC9ygQAFssEAI/LBADUywQAcswEANfMBABIzQQAr80EACbOBACrzgQAAM8EAFfPBACwzwQA5c8EAGTQBACt0AQA7tAEADvRBACF0QQAo9EEAAXSBABp0gQA99IEAIfTBAC90wQAcNQEAHPUBAC21AQA+NQEABPWBABL1gQAZtYEAIHWBAC91gQAI9cEAKzXBADY1wQA29cEAP7XBAAp2AQALNgEAC/YBABQ2AQAbNgEAG/YBABy2AQAddgEAHjYBAB72AQAftgEAIHYBACE2AQAh9gEAIrYBACN2AQAkNgEAJPYBACW2AQAmdgEAJzYBACf2AQA9NgEABjZBABB2QQAmNkEAJvZBACe2QQAodkEAKTZBACn2QQAANoEADjaBABd2gQAkdoEALPaBAC22gQA2doEAPraBAAj2wQAa9sEAKTbBADM2wQALdwEAJ/cBACi3AQAed0EANHdBAD53QQAR94EALfeBABa3wQA2N8EAFPgBADX4AQAHeEEAHXhBADM4QQA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w6Fzb2Juw61rdQBWIE9VVEVSIEpPSU4gYnlsIG5hbGV6ZW4ga8WZw63Fvm92w70gb2RrYXouIFByb3bEm8WZdGUgT04gcG9kbcOtbmt5AFRhYmxlIGhhbmRsZXIgZG9lc24ndCBzdXBwb3J0IE5VTEwgaW4gZ2l2ZW4gaW5kZXguIFBsZWFzZSBjaGFuZ2UgY29sdW1uICclLS4xOTJzJyB0byBiZSBOT1QgTlVMTCBvciB1c2UgYW5vdGhlciBoYW5kbGVyAE5lbW9odSBuYcSNw61zdCBmdW5rY2kgJyUtLjE5MnMnAE5lbW9odSBpbmljaWFsaXpvdmF0IGZ1bmtjaSAnJS0uMTkycyc7ICUtLjE5MnMAUHJvIHNkw61sZW5vdSBrbmlob3ZudSBuZWpzb3UgcG92b2xlbnkgY2VzdHkARnVua2NlICclLS4xOTJzJyBqacW+IGV4aXN0dWplAE5lbW9odSBvdGV2xZnDrXQgc2TDrWxlbm91IGtuaWhvdm51ICclLS4xOTJzJyAoZXJybm86ICVkICUtLjEyOHMpAE5lbW9odSBuYWrDrXQgZnVua2NpICclLS4xMjhzJyB2IGtuaWhvdm7EmwBGdW5rY2UgJyUtLjE5MnMnIG5lbsOtIGRlZmlub3bDoW5hAFN0cm9qICclLS4yNTVzJyBqZSB6YWJsb2tvdsOhbiBrdsWvbGkgbW5vaGEgY2h5YsOhbSBwxZlpIHDFmWlwb2pvdsOhbsOtLiBPZGJsb2t1amV0ZSBwb3XFvml0w61tICdteXNxbGFkbWluIGZsdXNoLWhvc3RzJwBTdHJvaiAnJS0uMjU1cycgbmVtw6EgcG92b2xlbm8gc2UgayB0b211dG8gTXlTUUwgc2VydmVydSBwxZlpcG9qaXQAUG91xb7DrXbDoXRlIE15U1FMIGpha28gYW5vbnltbsOtIHXFvml2YXRlbCBhIGFub255bW7DrSB1xb5pdmF0ZWzDqSBuZW1hasOtIHBvdm9sZW5vIG3Em25pdCBoZXNsYQBOYSB6bcSbbnUgaGVzZWwgb3N0YXRuw61tIG11c8OtdGUgbcOtdCBwcsOhdm8gcHJvdsOpc3QgdXBkYXRlIHRhYnVsZWsgdiBkYXRhYsOhemkgbXlzcWwAViB0YWJ1bGNlIHVzZXIgbmVuw60gxb7DoWRuw70gb2Rwb3bDrWRhasOtY8OtIMWZw6FkZWsATmFsZXplbsO9Y2ggxZnDoWRrxa86ICVsZCAgWm3Em27Em25vOiAlbGQgIFZhcm92w6Fuw606ICVsZABOZW1vaHUgdnl0dm/FmWl0IG5vdsO9IHRocmVhZCAoZXJybm8gJWQpLiBQb2t1ZCBqZSBqZcWhdMSbIG7Em2pha8OhIHZvbG7DoSBwYW3Em8WlLCBwb2TDrXZlanRlIHNlIGRvIG1hbnXDoWx1IG5hIMSNw6FzdCBvIGNoeWLDoWNoIHNwZWNpZmlja8O9Y2ggcHJvIGplZG5vdGxpdsOpIG9wZXJhxI1uw60gc3lzdMOpbXkAUG/EjWV0IHNsb3VwY8WvIG5lb2Rwb3bDrWTDoSBwb8SNdHUgaG9kbm90IG5hIMWZw6Fka3UgJWxkAE5lbW9odSB6bm92dW90ZXbFmcOtdCB0YWJ1bGt1OiAnJS0uMTkycwBOZXBsYXRuw6kgdcW+aXTDrSBob2Rub3R5IE5VTEwAUmVndWzDoXJuw60gdsO9cmF6IHZyw6F0aWwgY2h5YnUgJyUtLjY0cycAUG9rdWQgbmVuw60gxb7DoWRuw6EgR1JPVVAgQlkga2xhdXp1bGUsIG5lbsOtIGRvdm9sZW5vIHNvdcSNYXNuw6kgcG91xb5pdMOtIEdST1VQIHBvbG/FvmVrIChNSU4oKSxNQVgoKSxDT1VOVCgpLi4uKSBzIG5lIEdST1VQIHBvbG/FvmthbWkATmVleGlzdHVqZSBvZHBvdsOtZGFqw61jw60gZ3JhbnQgcHJvIHXFvml2YXRlbGUgJyUtLjQ4cycgbmEgc3Ryb2ppICclLS4yNTVzJwAlLS4xMjhzIHDFmcOta2F6IG5lcMWZw61zdHVwbsO9IHBybyB1xb5pdmF0ZWxlOiAnJS0uNDhzJ0AnJS0uNjRzJyBwcm8gdGFidWxrdSAnJS0uNjRzJwAlLS4xNnMgcMWZw61rYXogbmVwxZnDrXN0dXBuw70gcHJvIHXFvml2YXRlbGU6ICclLS40OHMnQCclLS42NHMnIHBybyBzbG91cGVjICclLS4xOTJzJyB2IHRhYnVsY2UgJyUtLjE5MnMnAE5lcGxhdG7DvSBwxZnDrWtheiBHUkFOVC9SRVZPS0UuIFByb3PDrW0sIHDFmWXEjXTEm3RlIHNpIHYgbWFudcOhbHUsIGpha8OhIHByaXZpbGVnaWEgamUgbW/Fvm7DqSBwb3XFvsOtdC4AQXJndW1lbnQgcMWZw61rYXp1IEdSQU5UIHXFvml2YXRlbCBuZWJvIHN0cm9qIGplIHDFmcOtbGnFoSBkbG91aMO9AFRhYnVsa2EgJyUtLjE5MnMuJS0uMTkycycgbmVleGlzdHVqZQBOZWV4aXN0dWplIG9kcG92w61kYWrDrWPDrSBncmFudCBwcm8gdcW+aXZhdGVsZSAnJS0uNDhzJyBuYSBzdHJvamkgJyUtLjI1NXMnIHBybyB0YWJ1bGt1ICclLS4xOTJzJwBQb3XFvml0w70gcMWZw61rYXogbmVuw60gdiB0w6l0byB2ZXJ6aSBNeVNRTCBwb3ZvbGVuAFZhxaFlIHN5bnRheGUgamUgbsSbamFrw6EgZGl2bsOhAERlbGF5ZWQgaW5zZXJ0IHRocmVhZCBjb3VsZG4ndCBnZXQgcmVxdWVzdGVkIGxvY2sgZm9yIHRhYmxlICUtLjE5MnMAVG9vIG1hbnkgZGVsYXllZCB0aHJlYWRzIGluIHVzZQBacnXFoWVubyBzcG9qZW7DrSAlbGQgZG8gZGF0YWLDoXplOiAnJS0uMTkycycgdcW+aXZhdGVsOiAnJS0uNDhzJyAoJS0uNjRzKQBaamnFoXTEm24gcMWZw61jaG96w60gcGFja2V0IGRlbMWhw60gbmXFviAnbWF4X2FsbG93ZWRfcGFja2V0JwBaamnFoXTEm25hIGNoeWJhIHDFmWkgxI10ZW7DrSB6IHJvdXJ5IHNwb2plbsOtAFpqacWhdMSbbmEgY2h5YmEgZmNudGwoKQBQxZnDrWNob3rDrSBwYWNrZXR5IHYgY2h5Ym7DqW0gcG/FmWFkw60ATmVtb2h1IHJvemtvbXByaW1vdmF0IGtvbXVuaWthxI1uw60gcGFja2V0AFpqacWhdMSbbmEgY2h5YmEgcMWZaSDEjXRlbsOtIGtvbXVuaWthxI1uw61obyBwYWNrZXR1AFpqacWhdMSbbiB0aW1lb3V0IHDFmWkgxI10ZW7DrSBrb211bmlrYcSNbsOtaG8gcGFja2V0dQBaamnFoXTEm25hIGNoeWJhIHDFmWkgesOhcGlzdSBrb211bmlrYcSNbsOtaG8gcGFja2V0dQBaamnFoXTEm24gdGltZW91dCBwxZlpIHrDoXBpc3Uga29tdW5pa2HEjW7DrWhvIHBhY2tldHUAVsO9c2xlZG7DvSDFmWV0xJt6ZWMgamUgZGVsxaHDrSBuZcW+ICdtYXhfYWxsb3dlZF9wYWNrZXQnAFR5cCBwb3XFvml0w6kgdGFidWxreSBuZXBvZHBvcnVqZSBCTE9CL1RFWFQgc2xvdXBjZQBUeXAgcG91xb5pdMOpIHRhYnVsa3kgbmVwb2Rwb3J1amUgQVVUT19JTkNSRU1FTlQgc2xvdXBjZQBJTlNFUlQgREVMQVlFRCBjYW4ndCBiZSB1c2VkIHdpdGggdGFibGUgJyUtLjE5MnMnIGJlY2F1c2UgaXQgaXMgbG9ja2VkIHdpdGggTE9DSyBUQUJMRVMATmVzcHLDoXZuw6kgam3DqW5vIHNsb3VwY2UgJyUtLjEwMHMnAEhhbmRsZXIgcG91xb5pdMOpIHRhYnVsa3kgbmV1bcOtIGluZGV4b3ZhdCBzbG91cGNlICclLS4xOTJzJwBWxaFlY2hueSB0YWJ1bGt5IHYgTUVSR0UgdGFidWxjZSBuZWpzb3UgZGVmaW5vdsOhbnkgc3Rlam7EmwBLdsWvbGkgdW5pcXVlIGNvbnN0cmFpbnR1IG5lbW96dSB6YXBzYXQgZG8gdGFidWxreSAnJS0uMTkycycAQkxPQiBzbG91cGVjICclLS4xOTJzJyBqZSBwb3XFvml0IHZlIHNwZWNpZmlrYWNpIGtsw63EjWUgYmV6IGTDqWxreQBWxaFlY2hueSDEjcOhc3RpIHByaW3DoXJuw61obyBrbMOtxI1lIG11c2Vqw60gYsO9dCBOT1QgTlVMTDsgcG9rdWQgcG90xZllYnVqZXRlIE5VTEwsIHBvdcW+aWp0ZSBVTklRVUUAVsO9c2xlZGVrIG9ic2FodWplIHbDrWNlIG5lxb4gamVkZW4gxZnDoWRlawBUZW50byB0eXAgdGFidWxreSB2ecW+YWR1amUgcHJpbcOhcm7DrSBrbMOtxI0AVGF0byB2ZXJ6ZSBNeVNRTCBuZW7DrSB6a29tcGlsb3bDoW5hIHMgcG9kcG9yb3UgUkFJRABVcGRhdGUgdGFidWxreSBiZXogV0hFUkUgcyBrbMOtxI1lbSBuZW7DrSB2IG3Ds2R1IGJlenBlxI1uw71jaCB1cGRhdGUgZG92b2xlbm8uICVzAEtsw63EjSAnJS0uMTkycycgdiB0YWJ1bGNlICclLS4xOTJzJyBuZWV4aXN0dWplAE5lbW9odSBvdGV2xZnDrXQgdGFidWxrdQBIYW5kbGVyIHRhYnVsa3kgbmVwb2Rwb3J1amUgJXMAUHJvdmVkZW7DrSB0b2hvdG8gcMWZw61rYXp1IG5lbsOtIHYgdHJhbnNha2NpIGRvdm9sZW5vAENoeWJhICVkIC0gJyUtLjE5MnMnIHDFmWkgQ09NTUlUAENoeWJhICVkIC0gJyUtLjE5MnMnIHDFmWkgUk9MTEJBQ0sAQ2h5YmEgJWQgcMWZaSBGTFVTSF9MT0dTAENoeWJhICVkIHDFmWkgQ0hFQ0tQT0lOVABTcG9qZW7DrSAldSBkbyBkYXRhYsOhemU6ICclLS4xOTJzJyB1xb5pdmF0ZWw6ICclLS40OHMnIHN0cm9qOiAnJS0uMjU1cycgKCUtLjY0cykgYnlsbyBwxZllcnXFoWVubwBIYW5kbGVyIHRhYnVsa3kgbmVwb2Rwb3J1amUgYmluw6FybsOtIGR1bXAAQmlubG9nIGNsb3NlZCwgY2Fubm90IFJFU0VUIFNPVVJDRQBQxZllYnVkb3bDoW7DrSBpbmRleHUgZHVtcG51dMOpIHRhYnVsa3kgJyUtLjE5MnMnIG5lYnlsbyDDunNwxJvFoW7DqQBDaHliYSBtYXN0ZXJ1OiAnJS0uNjRzJwBTw63FpW92w6EgY2h5YmEgcMWZaSDEjXRlbsOtIHogbWFzdGVydQBTw63FpW92w6EgY2h5YmEgcMWZaSB6w6FwaXN1IG5hIG1hc3RlcgDFvcOhZG7DvSBzbG91cGVjIG5lbcOhIHZ5dHZvxZllbiBmdWxsdGV4dG92w70gaW5kZXgATmVtb2h1IHByb3bDqXN0IHphZGFuw70gcMWZw61rYXosIHByb3Rvxb5lIGV4aXN0dWrDrSBha3Rpdm7DrSB6YW3EjWVuw6kgdGFidWxreSBuZWJvIGFrdGl2bsOtIHRyYW5zYWtjZQBOZXpuw6Ftw6Egc3lzdMOpbW92w6EgcHJvbcSbbm7DoSAnJS0uNjRzJwBUYWJ1bGthICclLS4xOTJzJyBqZSBvem5hxI1lbmEgamFrbyBwb3J1xaFlbsOhIGEgbcSbbGEgYnkgYsO9dCBvcHJhdmVuYQBUYWJ1bGthICclLS4xOTJzJyBqZSBvem5hxI1lbmEgamFrbyBwb3J1xaFlbsOhIGEgcG9zbGVkbsOtIChhdXRvbWF0aWNrw6E/KSBvcHJhdmEgc2UgbmV6ZGHFmWlsYQBTb21lIG5vbi10cmFuc2FjdGlvbmFsIGNoYW5nZWQgdGFibGVzIGNvdWxkbid0IGJlIHJvbGxlZCBiYWNrAE11bHRpLXN0YXRlbWVudCB0cmFuc2FjdGlvbiByZXF1aXJlZCBtb3JlIHRoYW4gJ21heF9iaW5sb2dfY2FjaGVfc2l6ZScgYnl0ZXMgb2Ygc3RvcmFnZTsgaW5jcmVhc2UgdGhpcyBteXNxbGQgdmFyaWFibGUgYW5kIHRyeSBhZ2FpbgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdpdGggYSBydW5uaW5nIHJlcGxpY2E7IHJ1biBTVE9QIFJFUExJQ0EgZmlyc3QAVGhpcyBvcGVyYXRpb24gcmVxdWlyZXMgYSBydW5uaW5nIHJlcGxpY2E7IGNvbmZpZ3VyZSByZXBsaWNhIGFuZCBkbyBTVEFSVCBSRVBMSUNBAFRoZSBzZXJ2ZXIgaXMgbm90IGNvbmZpZ3VyZWQgYXMgcmVwbGljYTsgZml4IGluIGNvbmZpZyBmaWxlIG9yIHdpdGggQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTwBDb3VsZCBub3QgaW5pdGlhbGl6ZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZTsgbW9yZSBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZwBDb3VsZCBub3QgY3JlYXRlIHJlcGxpY2EgdGhyZWFkOyBjaGVjayBzeXN0ZW0gcmVzb3VyY2VzAFVzZXIgJS0uNjRzIGFscmVhZHkgaGFzIG1vcmUgdGhhbiAnbWF4X3VzZXJfY29ubmVjdGlvbnMnIGFjdGl2ZSBjb25uZWN0aW9ucwBZb3UgbWF5IG9ubHkgdXNlIGNvbnN0YW50IGV4cHJlc3Npb25zIHdpdGggU0VUAExvY2sgd2FpdCB0aW1lb3V0IGV4Y2VlZGVkOyB0cnkgcmVzdGFydGluZyB0cmFuc2FjdGlvbgBUaGUgdG90YWwgbnVtYmVyIG9mIGxvY2tzIGV4Y2VlZHMgdGhlIGxvY2sgdGFibGUgc2l6ZQBVcGRhdGUgbG9ja3MgY2Fubm90IGJlIGFjcXVpcmVkIGR1cmluZyBhIFJFQUQgVU5DT01NSVRURUQgdHJhbnNhY3Rpb24ARFJPUCBEQVRBQkFTRSBub3QgYWxsb3dlZCB3aGlsZSB0aHJlYWQgaXMgaG9sZGluZyBnbG9iYWwgcmVhZCBsb2NrAENSRUFURSBEQVRBQkFTRSBub3QgYWxsb3dlZCB3aGlsZSB0aHJlYWQgaXMgaG9sZGluZyBnbG9iYWwgcmVhZCBsb2NrAEluY29ycmVjdCBhcmd1bWVudHMgdG8gJXMAJyUtLjQ4cydAJyUtLjY0cycgaXMgbm90IGFsbG93ZWQgdG8gY3JlYXRlIG5ldyB1c2VycwBJbmNvcnJlY3QgdGFibGUgZGVmaW5pdGlvbjsgYWxsIE1FUkdFIHRhYmxlcyBtdXN0IGJlIGluIHRoZSBzYW1lIGRhdGFiYXNlAERlYWRsb2NrIGZvdW5kIHdoZW4gdHJ5aW5nIHRvIGdldCBsb2NrOyB0cnkgcmVzdGFydGluZyB0cmFuc2FjdGlvbgBUaGUgdXNlZCB0YWJsZSB0eXBlIGRvZXNuJ3Qgc3VwcG9ydCBGVUxMVEVYVCBpbmRleGVzAENhbm5vdCBhZGQgZm9yZWlnbiBrZXkgY29uc3RyYWludABDYW5ub3QgYWRkIG9yIHVwZGF0ZSBhIGNoaWxkIHJvdzogYSBmb3JlaWduIGtleSBjb25zdHJhaW50IGZhaWxzAENhbm5vdCBkZWxldGUgb3IgdXBkYXRlIGEgcGFyZW50IHJvdzogYSBmb3JlaWduIGtleSBjb25zdHJhaW50IGZhaWxzAEVycm9yIGNvbm5lY3RpbmcgdG8gc291cmNlOiAlLS4xMjhzAEVycm9yIHJ1bm5pbmcgcXVlcnkgb24gc291cmNlOiAlLS4xMjhzAEVycm9yIHdoZW4gZXhlY3V0aW5nIGNvbW1hbmQgJXM6ICUtLjEyOHMASW5jb3JyZWN0IHVzYWdlIG9mICVzIGFuZCAlcwBUaGUgdXNlZCBTRUxFQ1Qgc3RhdGVtZW50cyBoYXZlIGEgZGlmZmVyZW50IG51bWJlciBvZiBjb2x1bW5zAENhbid0IGV4ZWN1dGUgdGhlIHF1ZXJ5IGJlY2F1c2UgeW91IGhhdmUgYSBjb25mbGljdGluZyByZWFkIGxvY2sATWl4aW5nIG9mIHRyYW5zYWN0aW9uYWwgYW5kIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlcyBpcyBkaXNhYmxlZABPcHRpb24gJyVzJyB1c2VkIHR3aWNlIGluIHN0YXRlbWVudABVc2VyICclLS42NHMnIGhhcyBleGNlZWRlZCB0aGUgJyVzJyByZXNvdXJjZSAoY3VycmVudCB2YWx1ZTogJWxkKQBBY2Nlc3MgZGVuaWVkOyB5b3UgbmVlZCAoYXQgbGVhc3Qgb25lIG9mKSB0aGUgJS0uMTI4cyBwcml2aWxlZ2UocykgZm9yIHRoaXMgb3BlcmF0aW9uAFZhcmlhYmxlICclLS42NHMnIGlzIGEgU0VTU0lPTiB2YXJpYWJsZSBhbmQgY2FuJ3QgYmUgdXNlZCB3aXRoIFNFVCBHTE9CQUwAVmFyaWFibGUgJyUtLjY0cycgaXMgYSBHTE9CQUwgdmFyaWFibGUgYW5kIHNob3VsZCBiZSBzZXQgd2l0aCBTRVQgR0xPQkFMAFZhcmlhYmxlICclLS42NHMnIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAVmFyaWFibGUgJyUtLjY0cycgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnJS0uMjAwcycASW5jb3JyZWN0IGFyZ3VtZW50IHR5cGUgdG8gdmFyaWFibGUgJyUtLjY0cycAVmFyaWFibGUgJyUtLjY0cycgY2FuIG9ubHkgYmUgc2V0LCBub3QgcmVhZABJbmNvcnJlY3QgdXNhZ2UvcGxhY2VtZW50IG9mICclcycAVGhpcyB2ZXJzaW9uIG9mIE15U1FMIGRvZXNuJ3QgeWV0IHN1cHBvcnQgJyVzJwBHb3QgZmF0YWwgZXJyb3IgJWQgZnJvbSBzb3VyY2Ugd2hlbiByZWFkaW5nIGRhdGEgZnJvbSBiaW5hcnkgbG9nOiAnJS0uNTEycycAUmVwbGljYSBTUUwgdGhyZWFkIGlnbm9yZWQgdGhlIHF1ZXJ5IGJlY2F1c2Ugb2YgcmVwbGljYXRlLSotdGFibGUgcnVsZXMAVmFyaWFibGUgJyUtLjE5MnMnIGlzIGEgJXMgdmFyaWFibGUASW5jb3JyZWN0IGZvcmVpZ24ga2V5IGRlZmluaXRpb24gZm9yICclLS4xOTJzJzogJXMAS2V5IHJlZmVyZW5jZSBhbmQgdGFibGUgcmVmZXJlbmNlIGRvbid0IG1hdGNoAE9wZXJhbmQgc2hvdWxkIGNvbnRhaW4gJWQgY29sdW1uKHMpAFN1YnF1ZXJ5IHJldHVybnMgbW9yZSB0aGFuIDEgcm93AFVua25vd24gcHJlcGFyZWQgc3RhdGVtZW50IGhhbmRsZXIgKCUuKnMpIGdpdmVuIHRvICVzAEhlbHAgZGF0YWJhc2UgaXMgY29ycnVwdCBvciBkb2VzIG5vdCBleGlzdABDeWNsaWMgcmVmZXJlbmNlIG9uIHN1YnF1ZXJpZXMAQ29udmVydGluZyBjb2x1bW4gJyVzJyBmcm9tICVzIHRvICVzAFJlZmVyZW5jZSAnJS0uNjRzJyBub3Qgc3VwcG9ydGVkICglcykARXZlcnkgZGVyaXZlZCB0YWJsZSBtdXN0IGhhdmUgaXRzIG93biBhbGlhcwBTZWxlY3QgJXUgd2FzIHJlZHVjZWQgZHVyaW5nIG9wdGltaXphdGlvbgBUYWJsZSAnJS0uMTkycycgZnJvbSBvbmUgb2YgdGhlIFNFTEVDVHMgY2Fubm90IGJlIHVzZWQgaW4gJS0uMzJzAENsaWVudCBkb2VzIG5vdCBzdXBwb3J0IGF1dGhlbnRpY2F0aW9uIHByb3RvY29sIHJlcXVlc3RlZCBieSBzZXJ2ZXI7IGNvbnNpZGVyIHVwZ3JhZGluZyBNeVNRTCBjbGllbnQAQWxsIHBhcnRzIG9mIGEgU1BBVElBTCBpbmRleCBtdXN0IGJlIE5PVCBOVUxMAENPTExBVElPTiAnJXMnIGlzIG5vdCB2YWxpZCBmb3IgQ0hBUkFDVEVSIFNFVCAnJXMnAFJlcGxpY2EgaXMgYWxyZWFkeSBydW5uaW5nAFJlcGxpY2EgYWxyZWFkeSBoYXMgYmVlbiBzdG9wcGVkAFVuY29tcHJlc3NlZCBkYXRhIHNpemUgdG9vIGxhcmdlOyB0aGUgbWF4aW11bSBzaXplIGlzICVkIChwcm9iYWJseSwgbGVuZ3RoIG9mIHVuY29tcHJlc3NlZCBkYXRhIHdhcyBjb3JydXB0ZWQpAFpMSUI6IE5vdCBlbm91Z2ggbWVtb3J5AFpMSUI6IE5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciAocHJvYmFibHksIGxlbmd0aCBvZiB1bmNvbXByZXNzZWQgZGF0YSB3YXMgY29ycnVwdGVkKQBaTElCOiBJbnB1dCBkYXRhIGNvcnJ1cHRlZABSb3cgJXUgd2FzIGN1dCBieSBHUk9VUF9DT05DQVQoKQBSb3cgJWxkIGRvZXNuJ3QgY29udGFpbiBkYXRhIGZvciBhbGwgY29sdW1ucwBSb3cgJWxkIHdhcyB0cnVuY2F0ZWQ7IGl0IGNvbnRhaW5lZCBtb3JlIGRhdGEgdGhhbiB0aGVyZSB3ZXJlIGlucHV0IGNvbHVtbnMAQ29sdW1uIHNldCB0byBkZWZhdWx0IHZhbHVlOyBOVUxMIHN1cHBsaWVkIHRvIE5PVCBOVUxMIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQAT3V0IG9mIHJhbmdlIHZhbHVlIGZvciBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAERhdGEgdHJ1bmNhdGVkIGZvciBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAFVzaW5nIHN0b3JhZ2UgZW5naW5lICVzIGZvciB0YWJsZSAnJXMnAElsbGVnYWwgbWl4IG9mIGNvbGxhdGlvbnMgKCVzLCVzKSBhbmQgKCVzLCVzKSBmb3Igb3BlcmF0aW9uICclcycAQ2Fubm90IGRyb3Agb25lIG9yIG1vcmUgb2YgdGhlIHJlcXVlc3RlZCB1c2VycwBDYW4ndCByZXZva2UgYWxsIHByaXZpbGVnZXMgZm9yIG9uZSBvciBtb3JlIG9mIHRoZSByZXF1ZXN0ZWQgdXNlcnMASWxsZWdhbCBtaXggb2YgY29sbGF0aW9ucyAoJXMsJXMpLCAoJXMsJXMpLCAoJXMsJXMpIGZvciBvcGVyYXRpb24gJyVzJwBJbGxlZ2FsIG1peCBvZiBjb2xsYXRpb25zIGZvciBvcGVyYXRpb24gJyVzJwBWYXJpYWJsZSAnJS0uNjRzJyBpcyBub3QgYSB2YXJpYWJsZSBjb21wb25lbnQgKGNhbid0IGJlIHVzZWQgYXMgWFhYWC52YXJpYWJsZV9uYW1lKQBVbmtub3duIGNvbGxhdGlvbjogJyUtLjY0cycAU1NMIHBhcmFtZXRlcnMgaW4gQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBhcmUgaWdub3JlZCBiZWNhdXNlIHRoaXMgTXlTUUwgcmVwbGljYSB3YXMgY29tcGlsZWQgd2l0aG91dCBTU0wgc3VwcG9ydDsgdGhleSBjYW4gYmUgdXNlZCBsYXRlciBpZiBNeVNRTCByZXBsaWNhIHdpdGggU1NMIGlzIHN0YXJ0ZWQAU2VydmVyIGlzIHJ1bm5pbmcgaW4gLS1zZWN1cmUtYXV0aCBtb2RlLCBidXQgJyVzJ0AnJXMnIGhhcyBhIHBhc3N3b3JkIGluIHRoZSBvbGQgZm9ybWF0OyBwbGVhc2UgY2hhbmdlIHRoZSBwYXNzd29yZCB0byB0aGUgbmV3IGZvcm1hdABGaWVsZCBvciByZWZlcmVuY2UgJyUtLjE5MnMlcyUtLjE5MnMlcyUtLjE5MnMnIG9mIFNFTEVDVCAjJWQgd2FzIHJlc29sdmVkIGluIFNFTEVDVCAjJWQASW5jb3JyZWN0IHBhcmFtZXRlciBvciBjb21iaW5hdGlvbiBvZiBwYXJhbWV0ZXJzIGZvciBTVEFSVCBSRVBMSUNBIFVOVElMAEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSAtLXNraXAtcmVwbGljYS1zdGFydCB3aGVuIGRvaW5nIHN0ZXAtYnktc3RlcCByZXBsaWNhdGlvbiB3aXRoIFNUQVJUIFJFUExJQ0EgVU5USUw7IG90aGVyd2lzZSwgeW91IHdpbGwgZ2V0IHByb2JsZW1zIGlmIHlvdSBnZXQgYW4gdW5leHBlY3RlZCByZXBsaWNhJ3MgbXlzcWxkIHJlc3RhcnQAU1FMIHRocmVhZCBpcyBub3QgdG8gYmUgc3RhcnRlZCBzbyBVTlRJTCBvcHRpb25zIGFyZSBpZ25vcmVkAEluY29ycmVjdCBpbmRleCBuYW1lICclLS4xMDBzJwBJbmNvcnJlY3QgY2F0YWxvZyBuYW1lICclLS4xMDBzJwBRdWVyeSBjYWNoZSBmYWlsZWQgdG8gc2V0IHNpemUgJWx1OyBuZXcgcXVlcnkgY2FjaGUgc2l6ZSBpcyAlbHUAQ29sdW1uICclLS4xOTJzJyBjYW5ub3QgYmUgcGFydCBvZiBGVUxMVEVYVCBpbmRleABVbmtub3duIGtleSBjYWNoZSAnJS0uMTAwcycATXlTUUwgaXMgc3RhcnRlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGU7IHlvdSBtdXN0IHJlc3RhcnQgaXQgd2l0aG91dCB0aGlzIHN3aXRjaCBmb3IgdGhpcyBncmFudCB0byB3b3JrAFVua25vd24gc3RvcmFnZSBlbmdpbmUgJyVzJwAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlICVzIGluc3RlYWQAVGhlIHRhcmdldCB0YWJsZSAlLS4xMDBzIG9mIHRoZSAlcyBpcyBub3QgdXBkYXRhYmxlAFRoZSAnJXMnIGZlYXR1cmUgaXMgZGlzYWJsZWQ7IHlvdSBuZWVkIE15U1FMIGJ1aWx0IHdpdGggJyVzJyB0byBoYXZlIGl0IHdvcmtpbmcAVGhlIE15U1FMIHNlcnZlciBpcyBydW5uaW5nIHdpdGggdGhlICVzIG9wdGlvbiBzbyBpdCBjYW5ub3QgZXhlY3V0ZSB0aGlzIHN0YXRlbWVudABDb2x1bW4gJyUtLjEwMHMnIGhhcyBkdXBsaWNhdGVkIHZhbHVlICclLS42NHMnIGluICVzAFRydW5jYXRlZCBpbmNvcnJlY3QgJS0uNjRzIHZhbHVlOiAnJS0uMTI4cycASW5jb3JyZWN0IHRhYmxlIGRlZmluaXRpb247IHRoZXJlIGNhbiBiZSBvbmx5IG9uZSBUSU1FU1RBTVAgY29sdW1uIHdpdGggQ1VSUkVOVF9USU1FU1RBTVAgaW4gREVGQVVMVCBvciBPTiBVUERBVEUgY2xhdXNlAEludmFsaWQgT04gVVBEQVRFIGNsYXVzZSBmb3IgJyUtLjE5MnMnIGNvbHVtbgBUaGlzIGNvbW1hbmQgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgcHJlcGFyZWQgc3RhdGVtZW50IHByb3RvY29sIHlldABHb3QgZXJyb3IgJWQgJyUtLjEwMHMnIGZyb20gJXMAR290IHRlbXBvcmFyeSBlcnJvciAlZCAnJS0uMTAwcycgZnJvbSAlcwBVbmtub3duIG9yIGluY29ycmVjdCB0aW1lIHpvbmU6ICclLS42NHMnAEludmFsaWQgVElNRVNUQU1QIHZhbHVlIGluIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQASW52YWxpZCAlcyBjaGFyYWN0ZXIgc3RyaW5nOiAnJS42NHMnAFJlc3VsdCBvZiAlcygpIHdhcyBsYXJnZXIgdGhhbiBtYXhfYWxsb3dlZF9wYWNrZXQgKCVsZCkgLSB0cnVuY2F0ZWQAQ29uZmxpY3RpbmcgZGVjbGFyYXRpb25zOiAnJXMlcycgYW5kICclcyVzJwBDYW4ndCBjcmVhdGUgYSAlcyBmcm9tIHdpdGhpbiBhbm90aGVyIHN0b3JlZCByb3V0aW5lACVzICVzIGFscmVhZHkgZXhpc3RzACVzICVzIGRvZXMgbm90IGV4aXN0AEZhaWxlZCB0byBEUk9QICVzICVzAEZhaWxlZCB0byBDUkVBVEUgJXMgJXMAJXMgd2l0aCBubyBtYXRjaGluZyBsYWJlbDogJXMAUmVkZWZpbmluZyBsYWJlbCAlcwBFbmQtbGFiZWwgJXMgd2l0aG91dCBtYXRjaABSZWZlcnJpbmcgdG8gdW5pbml0aWFsaXplZCB2YXJpYWJsZSAlcwBQUk9DRURVUkUgJXMgY2FuJ3QgcmV0dXJuIGEgcmVzdWx0IHNldCBpbiB0aGUgZ2l2ZW4gY29udGV4dABSRVRVUk4gaXMgb25seSBhbGxvd2VkIGluIGEgRlVOQ1RJT04AJXMgaXMgbm90IGFsbG93ZWQgaW4gc3RvcmVkIHByb2NlZHVyZXMAVGhlIHVwZGF0ZSBsb2cgaXMgZGVwcmVjYXRlZCBhbmQgcmVwbGFjZWQgYnkgdGhlIGJpbmFyeSBsb2c7IFNFVCBTUUxfTE9HX1VQREFURSBoYXMgYmVlbiBpZ25vcmVkLgBUaGUgdXBkYXRlIGxvZyBpcyBkZXByZWNhdGVkIGFuZCByZXBsYWNlZCBieSB0aGUgYmluYXJ5IGxvZzsgU0VUIFNRTF9MT0dfVVBEQVRFIGhhcyBiZWVuIHRyYW5zbGF0ZWQgdG8gU0VUIFNRTF9MT0dfQklOLgBRdWVyeSBleGVjdXRpb24gd2FzIGludGVycnVwdGVkAEluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciAlcyAlczsgZXhwZWN0ZWQgJXUsIGdvdCAldQBVbmRlZmluZWQgQ09ORElUSU9OOiAlcwBObyBSRVRVUk4gZm91bmQgaW4gRlVOQ1RJT04gJXMARlVOQ1RJT04gJXMgZW5kZWQgd2l0aG91dCBSRVRVUk4AQ3Vyc29yIHN0YXRlbWVudCBtdXN0IGJlIGEgU0VMRUNUAEN1cnNvciBTRUxFQ1QgbXVzdCBub3QgaGF2ZSBJTlRPAFVuZGVmaW5lZCBDVVJTT1I6ICVzAEN1cnNvciBpcyBhbHJlYWR5IG9wZW4AQ3Vyc29yIGlzIG5vdCBvcGVuAFVuZGVjbGFyZWQgdmFyaWFibGU6ICVzAEluY29ycmVjdCBudW1iZXIgb2YgRkVUQ0ggdmFyaWFibGVzAE5vIGRhdGEgLSB6ZXJvIHJvd3MgZmV0Y2hlZCwgc2VsZWN0ZWQsIG9yIHByb2Nlc3NlZABEdXBsaWNhdGUgcGFyYW1ldGVyOiAlcwBEdXBsaWNhdGUgdmFyaWFibGU6ICVzAER1cGxpY2F0ZSBjb25kaXRpb246ICVzAER1cGxpY2F0ZSBjdXJzb3I6ICVzAEZhaWxlZCB0byBBTFRFUiAlcyAlcwBTdWJxdWVyeSB2YWx1ZSBub3Qgc3VwcG9ydGVkACVzIGlzIG5vdCBhbGxvd2VkIGluIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAFZhcmlhYmxlIG9yIGNvbmRpdGlvbiBkZWNsYXJhdGlvbiBhZnRlciBjdXJzb3Igb3IgaGFuZGxlciBkZWNsYXJhdGlvbgBDdXJzb3IgZGVjbGFyYXRpb24gYWZ0ZXIgaGFuZGxlciBkZWNsYXJhdGlvbgBDYXNlIG5vdCBmb3VuZCBmb3IgQ0FTRSBzdGF0ZW1lbnQAQ29uZmlndXJhdGlvbiBmaWxlICclLS4xOTJzJyBpcyB0b28gYmlnAE1hbGZvcm1lZCBmaWxlIHR5cGUgaGVhZGVyIGluIGZpbGUgJyUtLjE5MnMnAFVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgd2hpbGUgcGFyc2luZyBjb21tZW50ICclLS4yMDBzJwBFcnJvciB3aGlsZSBwYXJzaW5nIHBhcmFtZXRlciAnJS0uMTkycycgKGxpbmU6ICclLS4xOTJzJykAVW5leHBlY3RlZCBlbmQgb2YgZmlsZSB3aGlsZSBza2lwcGluZyB1bmtub3duIHBhcmFtZXRlciAnJS0uMTkycycARVhQTEFJTi9TSE9XIGNhbiBub3QgYmUgaXNzdWVkOyBsYWNraW5nIHByaXZpbGVnZXMgZm9yIHVuZGVybHlpbmcgdGFibGUARmlsZSAnJS0uMTkycycgaGFzIHVua25vd24gdHlwZSAnJS0uNjRzJyBpbiBpdHMgaGVhZGVyACclLS4xOTJzLiUtLjE5MnMnIGlzIG5vdCAlcwBDb2x1bW4gJyUtLjE5MnMnIGlzIG5vdCB1cGRhdGFibGUAVmlldydzIFNFTEVDVCBjb250YWlucyBhIHN1YnF1ZXJ5IGluIHRoZSBGUk9NIGNsYXVzZQBWaWV3J3MgU0VMRUNUIGNvbnRhaW5zIGEgJyVzJyBjbGF1c2UAVmlldydzIFNFTEVDVCBjb250YWlucyBhIHZhcmlhYmxlIG9yIHBhcmFtZXRlcgBWaWV3J3MgU0VMRUNUIHJlZmVycyB0byBhIHRlbXBvcmFyeSB0YWJsZSAnJS0uMTkycycASW4gZGVmaW5pdGlvbiBvZiB2aWV3LCBkZXJpdmVkIHRhYmxlIG9yIGNvbW1vbiB0YWJsZSBleHByZXNzaW9uLCBTRUxFQ1QgbGlzdCBhbmQgY29sdW1uIG5hbWVzIGxpc3QgaGF2ZSBkaWZmZXJlbnQgY29sdW1uIGNvdW50cwBWaWV3IG1lcmdlIGFsZ29yaXRobSBjYW4ndCBiZSB1c2VkIGhlcmUgZm9yIG5vdyAoYXNzdW1lZCB1bmRlZmluZWQgYWxnb3JpdGhtKQBWaWV3IGJlaW5nIHVwZGF0ZWQgZG9lcyBub3QgaGF2ZSBjb21wbGV0ZSBrZXkgb2YgdW5kZXJseWluZyB0YWJsZSBpbiBpdABWaWV3ICclLS4xOTJzLiUtLjE5MnMnIHJlZmVyZW5jZXMgaW52YWxpZCB0YWJsZShzKSBvciBjb2x1bW4ocykgb3IgZnVuY3Rpb24ocykgb3IgZGVmaW5lci9pbnZva2VyIG9mIHZpZXcgbGFjayByaWdodHMgdG8gdXNlIHRoZW0AQ2FuJ3QgZHJvcCBvciBhbHRlciBhICVzIGZyb20gd2l0aGluIGFub3RoZXIgc3RvcmVkIHJvdXRpbmUAR09UTyBpcyBub3QgYWxsb3dlZCBpbiBhIHN0b3JlZCBwcm9jZWR1cmUgaGFuZGxlcgBUcmlnZ2VyIGFscmVhZHkgZXhpc3RzAFRyaWdnZXIgZG9lcyBub3QgZXhpc3QAVHJpZ2dlcidzICclLS4xOTJzJyBpcyB2aWV3IG9yIHRlbXBvcmFyeSB0YWJsZQBVcGRhdGluZyBvZiAlcyByb3cgaXMgbm90IGFsbG93ZWQgaW4gJXN0cmlnZ2VyAFRoZXJlIGlzIG5vICVzIHJvdyBpbiAlcyB0cmlnZ2VyAEZpZWxkICclLS4xOTJzJyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZhbHVlAERpdmlzaW9uIGJ5IDAASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnIGZvciBjb2x1bW4gJyUuMTkycycgYXQgcm93ICVsZABJbGxlZ2FsICVzICclLS4xOTJzJyB2YWx1ZSBmb3VuZCBkdXJpbmcgcGFyc2luZwBDSEVDSyBPUFRJT04gb24gbm9uLXVwZGF0YWJsZSB2aWV3ICclLS4xOTJzLiUtLjE5MnMnAENIRUNLIE9QVElPTiBmYWlsZWQgJyUtLjE5MnMuJS0uMTkycycAJS0uMTZzIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycgZm9yIHJvdXRpbmUgJyUtLjE5MnMnAEZhaWxlZCBwdXJnaW5nIG9sZCByZWxheSBsb2dzOiAlcwBQYXNzd29yZCBoYXNoIHNob3VsZCBiZSBhICVkLWRpZ2l0IGhleGFkZWNpbWFsIG51bWJlcgBUYXJnZXQgbG9nIG5vdCBmb3VuZCBpbiBiaW5sb2cgaW5kZXgASS9PIGVycm9yIHJlYWRpbmcgbG9nIGluZGV4IGZpbGUAU2VydmVyIGNvbmZpZ3VyYXRpb24gZG9lcyBub3QgcGVybWl0IGJpbmxvZyBwdXJnZQBGYWlsZWQgb24gZnNlZWsoKQBGYXRhbCBlcnJvciBkdXJpbmcgbG9nIHB1cmdlAEEgcHVyZ2VhYmxlIGxvZyBpcyBpbiB1c2UsIHdpbGwgbm90IHB1cmdlAFVua25vd24gZXJyb3IgZHVyaW5nIGxvZyBwdXJnZQBGYWlsZWQgaW5pdGlhbGl6aW5nIHJlbGF5IGxvZyBwb3NpdGlvbjogJXMAWW91IGFyZSBub3QgdXNpbmcgYmluYXJ5IGxvZ2dpbmcAVGhlICclLS42NHMnIHN5bnRheCBpcyByZXNlcnZlZCBmb3IgcHVycG9zZXMgaW50ZXJuYWwgdG8gdGhlIE15U1FMIHNlcnZlcgBXU0FTdGFydHVwIEZhaWxlZABDYW4ndCBoYW5kbGUgcHJvY2VkdXJlcyB3aXRoIGRpZmZlcmVudCBncm91cHMgeWV0AFNlbGVjdCBtdXN0IGhhdmUgYSBncm91cCB3aXRoIHRoaXMgcHJvY2VkdXJlAENhbid0IHVzZSBPUkRFUiBjbGF1c2Ugd2l0aCB0aGlzIHByb2NlZHVyZQBCaW5hcnkgbG9nZ2luZyBhbmQgcmVwbGljYXRpb24gZm9yYmlkIGNoYW5naW5nIHRoZSBnbG9iYWwgc2VydmVyICVzAENhbid0IG1hcCBmaWxlOiAlLS4yMDBzLCBlcnJubzogJWQAV3JvbmcgbWFnaWMgaW4gJS0uNjRzAFByZXBhcmVkIHN0YXRlbWVudCBjb250YWlucyB0b28gbWFueSBwbGFjZWhvbGRlcnMAS2V5IHBhcnQgJyUtLjE5MnMnIGxlbmd0aCBjYW5ub3QgYmUgMABWaWV3IHRleHQgY2hlY2tzdW0gZmFpbGVkAENhbiBub3QgbW9kaWZ5IG1vcmUgdGhhbiBvbmUgYmFzZSB0YWJsZSB0aHJvdWdoIGEgam9pbiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnAENhbiBub3QgaW5zZXJ0IGludG8gam9pbiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnIHdpdGhvdXQgZmllbGRzIGxpc3QAQ2FuIG5vdCBkZWxldGUgZnJvbSBqb2luIHZpZXcgJyUtLjE5MnMuJS0uMTkycycAT3BlcmF0aW9uICVzIGZhaWxlZCBmb3IgJS4yNTZzAFhBRVJfTk9UQTogVW5rbm93biBYSUQAWEFFUl9JTlZBTDogSW52YWxpZCBhcmd1bWVudHMgKG9yIHVuc3VwcG9ydGVkIGNvbW1hbmQpAFhBRVJfUk1GQUlMOiBUaGUgY29tbWFuZCBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hlbiBnbG9iYWwgdHJhbnNhY3Rpb24gaXMgaW4gdGhlICAlLjY0cyBzdGF0ZQBYQUVSX09VVFNJREU6IFNvbWUgd29yayBpcyBkb25lIG91dHNpZGUgZ2xvYmFsIHRyYW5zYWN0aW9uAFhBRVJfUk1FUlI6IEZhdGFsIGVycm9yIG9jY3VycmVkIGluIHRoZSB0cmFuc2FjdGlvbiBicmFuY2ggLSBjaGVjayB5b3VyIGRhdGEgZm9yIGNvbnNpc3RlbmN5AFhBX1JCUk9MTEJBQ0s6IFRyYW5zYWN0aW9uIGJyYW5jaCB3YXMgcm9sbGVkIGJhY2sAVGhlcmUgaXMgbm8gc3VjaCBncmFudCBkZWZpbmVkIGZvciB1c2VyICclLS40OHMnIG9uIGhvc3QgJyUtLjI1NXMnIG9uIHJvdXRpbmUgJyUtLjE5MnMnAEZhaWxlZCB0byBncmFudCBFWEVDVVRFIGFuZCBBTFRFUiBST1VUSU5FIHByaXZpbGVnZXMARmFpbGVkIHRvIHJldm9rZSBhbGwgcHJpdmlsZWdlcyB0byBkcm9wcGVkIHJvdXRpbmUARGF0YSB0b28gbG9uZyBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABCYWQgU1FMU1RBVEU6ICclcycAJXM6IHJlYWR5IGZvciBjb25uZWN0aW9ucy4gVmVyc2lvbjogJyVzJyAgc29ja2V0OiAnJXMnICBwb3J0OiAlZCAgJXMAQ2FuJ3QgbG9hZCB2YWx1ZSBmcm9tIGZpbGUgd2l0aCBmaXhlZCBzaXplIHJvd3MgdG8gdmFyaWFibGUAWW91IGFyZSBub3QgYWxsb3dlZCB0byBjcmVhdGUgYSB1c2VyIHdpdGggR1JBTlQASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnIGZvciBmdW5jdGlvbiAlLS4zMnMAVGFibGUgZGVmaW5pdGlvbiBoYXMgY2hhbmdlZCwgcGxlYXNlIHJldHJ5IHRyYW5zYWN0aW9uAER1cGxpY2F0ZSBoYW5kbGVyIGRlY2xhcmVkIGluIHRoZSBzYW1lIGJsb2NrAE9VVCBvciBJTk9VVCBhcmd1bWVudCAlZCBmb3Igcm91dGluZSAlcyBpcyBub3QgYSB2YXJpYWJsZSBvciBORVcgcHNldWRvLXZhcmlhYmxlIGluIEJFRk9SRSB0cmlnZ2VyAE5vdCBhbGxvd2VkIHRvIHJldHVybiBhIHJlc3VsdCBzZXQgZnJvbSBhICVzAENhbm5vdCBnZXQgZ2VvbWV0cnkgb2JqZWN0IGZyb20gZGF0YSB5b3Ugc2VuZCB0byB0aGUgR0VPTUVUUlkgZmllbGQAQSByb3V0aW5lIGZhaWxlZCBhbmQgaGFzIG5laXRoZXIgTk8gU1FMIG5vciBSRUFEUyBTUUwgREFUQSBpbiBpdHMgZGVjbGFyYXRpb24gYW5kIGJpbmFyeSBsb2dnaW5nIGlzIGVuYWJsZWQ7IGlmIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlcyB3ZXJlIHVwZGF0ZWQsIHRoZSBiaW5hcnkgbG9nIHdpbGwgbWlzcyB0aGVpciBjaGFuZ2VzAFRoaXMgZnVuY3Rpb24gaGFzIG5vbmUgb2YgREVURVJNSU5JU1RJQywgTk8gU1FMLCBvciBSRUFEUyBTUUwgREFUQSBpbiBpdHMgZGVjbGFyYXRpb24gYW5kIGJpbmFyeSBsb2dnaW5nIGlzIGVuYWJsZWQgKHlvdSAqbWlnaHQqIHdhbnQgdG8gdXNlIHRoZSBsZXNzIHNhZmUgbG9nX2Jpbl90cnVzdF9mdW5jdGlvbl9jcmVhdG9ycyB2YXJpYWJsZSkAWW91IGRvIG5vdCBoYXZlIHRoZSBTVVBFUiBwcml2aWxlZ2UgYW5kIGJpbmFyeSBsb2dnaW5nIGlzIGVuYWJsZWQgKHlvdSAqbWlnaHQqIHdhbnQgdG8gdXNlIHRoZSBsZXNzIHNhZmUgbG9nX2Jpbl90cnVzdF9mdW5jdGlvbl9jcmVhdG9ycyB2YXJpYWJsZSkAWW91IGNhbid0IGV4ZWN1dGUgYSBwcmVwYXJlZCBzdGF0ZW1lbnQgd2hpY2ggaGFzIGFuIG9wZW4gY3Vyc29yIGFzc29jaWF0ZWQgd2l0aCBpdC4gUmVzZXQgdGhlIHN0YXRlbWVudCB0byByZS1leGVjdXRlIGl0LgBUaGUgc3RhdGVtZW50ICglbHUpIGhhcyBubyBvcGVuIGN1cnNvci4ARXhwbGljaXQgb3IgaW1wbGljaXQgY29tbWl0IGlzIG5vdCBhbGxvd2VkIGluIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyLgBGaWVsZCBvZiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnIHVuZGVybHlpbmcgdGFibGUgZG9lc24ndCBoYXZlIGEgZGVmYXVsdCB2YWx1ZQBSZWN1cnNpdmUgc3RvcmVkIGZ1bmN0aW9ucyBhbmQgdHJpZ2dlcnMgYXJlIG5vdCBhbGxvd2VkLgBUb28gYmlnIHNjYWxlICVkIHNwZWNpZmllZCBmb3IgY29sdW1uICclLS4xOTJzJy4gTWF4aW11bSBpcyAlbHUuAFRvby1iaWcgcHJlY2lzaW9uICVkIHNwZWNpZmllZCBmb3IgJyUtLjE5MnMnLiBNYXhpbXVtIGlzICVsdS4ARm9yIGZsb2F0KE0sRCksIGRvdWJsZShNLEQpIG9yIGRlY2ltYWwoTSxEKSwgTSBtdXN0IGJlID49IEQgKGNvbHVtbiAnJS0uMTkycycpLgBZb3UgY2FuJ3QgY29tYmluZSB3cml0ZS1sb2NraW5nIG9mIHN5c3RlbSB0YWJsZXMgd2l0aCBvdGhlciB0YWJsZXMgb3IgbG9jayB0eXBlcwBVbmFibGUgdG8gY29ubmVjdCB0byBmb3JlaWduIGRhdGEgc291cmNlOiAlLjY0cwBUaGVyZSB3YXMgYSBwcm9ibGVtIHByb2Nlc3NpbmcgdGhlIHF1ZXJ5IG9uIHRoZSBmb3JlaWduIGRhdGEgc291cmNlLiBEYXRhIHNvdXJjZSBlcnJvcjogJS0uNjRzAFRoZSBmb3JlaWduIGRhdGEgc291cmNlIHlvdSBhcmUgdHJ5aW5nIHRvIHJlZmVyZW5jZSBkb2VzIG5vdCBleGlzdC4gRGF0YSBzb3VyY2UgZXJyb3I6ICAlLS42NHMAQ2FuJ3QgY3JlYXRlIGZlZGVyYXRlZCB0YWJsZS4gVGhlIGRhdGEgc291cmNlIGNvbm5lY3Rpb24gc3RyaW5nICclLS42NHMnIGlzIG5vdCBpbiB0aGUgY29ycmVjdCBmb3JtYXQAVGhlIGRhdGEgc291cmNlIGNvbm5lY3Rpb24gc3RyaW5nICclLS42NHMnIGlzIG5vdCBpbiB0aGUgY29ycmVjdCBmb3JtYXQAQ2FuJ3QgY3JlYXRlIGZlZGVyYXRlZCB0YWJsZS4gRm9yZWlnbiBkYXRhIHNyYyBlcnJvcjogICUtLjY0cwBUcmlnZ2VyIGluIHdyb25nIHNjaGVtYQBUaHJlYWQgc3RhY2sgb3ZlcnJ1bjogICVsZCBieXRlcyB1c2VkIG9mIGEgJWxkIGJ5dGUgc3RhY2ssIGFuZCAlbGQgYnl0ZXMgbmVlZGVkLiAgVXNlICdteXNxbGQgLS10aHJlYWRfc3RhY2s9IycgdG8gc3BlY2lmeSBhIGJpZ2dlciBzdGFjay4AUm91dGluZSBib2R5IGZvciAnJS0uMTAwcycgaXMgdG9vIGxvbmcAQ2Fubm90IGRyb3AgZGVmYXVsdCBrZXljYWNoZQBEaXNwbGF5IHdpZHRoIG91dCBvZiByYW5nZSBmb3IgY29sdW1uICclLS4xOTJzJyAobWF4ID0gJWx1KQBYQUVSX0RVUElEOiBUaGUgWElEIGFscmVhZHkgZXhpc3RzAERhdGV0aW1lIGZ1bmN0aW9uOiAlLS4zMnMgZmllbGQgb3ZlcmZsb3cAQ2FuJ3QgdXBkYXRlIHRhYmxlICclLS4xOTJzJyBpbiBzdG9yZWQgZnVuY3Rpb24vdHJpZ2dlciBiZWNhdXNlIGl0IGlzIGFscmVhZHkgdXNlZCBieSBzdGF0ZW1lbnQgd2hpY2ggaW52b2tlZCB0aGlzIHN0b3JlZCBmdW5jdGlvbi90cmlnZ2VyLgBUaGUgZGVmaW5pdGlvbiBvZiB0YWJsZSAnJS0uMTkycycgcHJldmVudHMgb3BlcmF0aW9uICUuMTkycyBvbiB0YWJsZSAnJS0uMTkycycuAFRoZSBwcmVwYXJlZCBzdGF0ZW1lbnQgY29udGFpbnMgYSBzdG9yZWQgcm91dGluZSBjYWxsIHRoYXQgcmVmZXJzIHRvIHRoYXQgc2FtZSBzdGF0ZW1lbnQuIEl0J3Mgbm90IGFsbG93ZWQgdG8gZXhlY3V0ZSBhIHByZXBhcmVkIHN0YXRlbWVudCBpbiBzdWNoIGEgcmVjdXJzaXZlIG1hbm5lcgBOb3QgYWxsb3dlZCB0byBzZXQgYXV0b2NvbW1pdCBmcm9tIGEgc3RvcmVkIGZ1bmN0aW9uIG9yIHRyaWdnZXIARGVmaW5lciBpcyBub3QgZnVsbHkgcXVhbGlmaWVkAFZpZXcgJyUtLjE5MnMnLiclLS4xOTJzJyBoYXMgbm8gZGVmaW5lciBpbmZvcm1hdGlvbiAob2xkIHRhYmxlIGZvcm1hdCkuIEN1cnJlbnQgdXNlciBpcyB1c2VkIGFzIGRlZmluZXIuIFBsZWFzZSByZWNyZWF0ZSB0aGUgdmlldyEAWW91IG5lZWQgdGhlIFNVUEVSIHByaXZpbGVnZSBmb3IgY3JlYXRpb24gdmlldyB3aXRoICclLS4xOTJzJ0AnJS0uMTkycycgZGVmaW5lcgBUaGUgdXNlciBzcGVjaWZpZWQgYXMgYSBkZWZpbmVyICgnJS0uNjRzJ0AnJS0uNjRzJykgZG9lcyBub3QgZXhpc3QAQ2hhbmdpbmcgc2NoZW1hIGZyb20gJyUtLjE5MnMnIHRvICclLS4xOTJzJyBpcyBub3QgYWxsb3dlZC4AQ2Fubm90IGRlbGV0ZSBvciB1cGRhdGUgYSBwYXJlbnQgcm93OiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZmFpbHMgKCUuMTkycykAQ2Fubm90IGFkZCBvciB1cGRhdGUgYSBjaGlsZCByb3c6IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBmYWlscyAoJS4xOTJzKQBWYXJpYWJsZSAnJS0uNjRzJyBtdXN0IGJlIHF1b3RlZCB3aXRoIGAuLi5gLCBvciByZW5hbWVkAE5vIGRlZmluZXIgYXR0cmlidXRlIGZvciB0cmlnZ2VyICclLS4xOTJzJy4nJS0uMTkycycuIEl0J3MgZGlzYWxsb3dlZCB0byBjcmVhdGUgdHJpZ2dlciB3aXRob3V0IGRlZmluZXIuACclLS4xOTJzJyBoYXMgYW4gb2xkIGZvcm1hdCwgeW91IHNob3VsZCByZS1jcmVhdGUgdGhlICclcycgb2JqZWN0KHMpAFJlY3Vyc2l2ZSBsaW1pdCAlZCAoYXMgc2V0IGJ5IHRoZSBtYXhfc3BfcmVjdXJzaW9uX2RlcHRoIHZhcmlhYmxlKSB3YXMgZXhjZWVkZWQgZm9yIHJvdXRpbmUgJS4xOTJzAEZhaWxlZCB0byBsb2FkIHJvdXRpbmUgJS0uMTkycy4gVGhlIGRhdGEgZGljdGlvbmFyeSB0YWJsZSBtaXNzaW5nLCBjb3JydXB0LCBvciBjb250YWlucyBiYWQgZGF0YSAoaW50ZXJuYWwgY29kZSAlZCkASW5jb3JyZWN0IHJvdXRpbmUgbmFtZSAnJS0uMTkycycAVGFibGUgdXBncmFkZSByZXF1aXJlZC4gUGxlYXNlIGRvICJSRVBBSVIgVEFCTEUgYCUtLjY0c2AiIG9yIGR1bXAvcmVsb2FkIHRvIGZpeCBpdCEAQUdHUkVHQVRFIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN0b3JlZCBmdW5jdGlvbnMAQ2FuJ3QgY3JlYXRlIG1vcmUgdGhhbiBtYXhfcHJlcGFyZWRfc3RtdF9jb3VudCBzdGF0ZW1lbnRzIChjdXJyZW50IHZhbHVlOiAlbHUpAGAlLS4xOTJzYC5gJS0uMTkyc2AgY29udGFpbnMgdmlldyByZWN1cnNpb24ATm9uLWdyb3VwaW5nIGZpZWxkICclLS4xOTJzJyBpcyB1c2VkIGluICUtLjY0cyBjbGF1c2UAVGhlIHVzZWQgdGFibGUgdHlwZSBkb2Vzbid0IHN1cHBvcnQgU1BBVElBTCBpbmRleGVzAFRyaWdnZXJzIGNhbiBub3QgYmUgY3JlYXRlZCBvbiBzeXN0ZW0gdGFibGVzAExlYWRpbmcgc3BhY2VzIGFyZSByZW1vdmVkIGZyb20gbmFtZSAnJXMnAEZhaWxlZCB0byByZWFkIGF1dG8taW5jcmVtZW50IHZhbHVlIGZyb20gc3RvcmFnZSBlbmdpbmUAdXNlciBuYW1lAGhvc3QgbmFtZQBTdHJpbmcgJyUtLjcwcycgaXMgdG9vIGxvbmcgZm9yICVzIChzaG91bGQgYmUgbm8gbG9uZ2VyIHRoYW4gJWQpAFRoZSB0YXJnZXQgdGFibGUgJS0uMTAwcyBvZiB0aGUgJXMgaXMgbm90IGluc2VydGFibGUtaW50bwBUYWJsZSAnJS0uNjRzJyBpcyBkaWZmZXJlbnRseSBkZWZpbmVkIG9yIG9mIG5vbi1NeUlTQU0gdHlwZSBvciBkb2Vzbid0IGV4aXN0AFRvbyBoaWdoIGxldmVsIG9mIG5lc3RpbmcgZm9yIHNlbGVjdABOYW1lICclLS42NHMnIGhhcyBiZWNvbWUgJycARmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBGSUVMRFMgVEVSTUlOQVRFRCBzdHJpbmcgaXMgYW1iaWd1b3VzOyBwbGVhc2UgdXNlIG5vbi1vcHRpb25hbCBhbmQgbm9uLWVtcHR5IEZJRUxEUyBFTkNMT1NFRCBCWQBUaGUgZm9yZWlnbiBzZXJ2ZXIsICVzLCB5b3UgYXJlIHRyeWluZyB0byBjcmVhdGUgYWxyZWFkeSBleGlzdHMuAFRoZSBmb3JlaWduIHNlcnZlciBuYW1lIHlvdSBhcmUgdHJ5aW5nIHRvIHJlZmVyZW5jZSBkb2VzIG5vdCBleGlzdC4gRGF0YSBzb3VyY2UgZXJyb3I6ICAlLS42NHMAVGFibGUgc3RvcmFnZSBlbmdpbmUgJyUtLjY0cycgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9wdGlvbiAnJS42NHMnAFN5bnRheCBlcnJvcjogJS0uNjRzIFBBUlRJVElPTklORyByZXF1aXJlcyBkZWZpbml0aW9uIG9mIFZBTFVFUyAlLS42NHMgZm9yIGVhY2ggcGFydGl0aW9uAE9ubHkgJS0uNjRzIFBBUlRJVElPTklORyBjYW4gdXNlIFZBTFVFUyAlLS42NHMgaW4gcGFydGl0aW9uIGRlZmluaXRpb24ATUFYVkFMVUUgY2FuIG9ubHkgYmUgdXNlZCBpbiBsYXN0IHBhcnRpdGlvbiBkZWZpbml0aW9uAFN1YnBhcnRpdGlvbnMgY2FuIG9ubHkgYmUgaGFzaCBwYXJ0aXRpb25zIGFuZCBieSBrZXkATXVzdCBkZWZpbmUgc3VicGFydGl0aW9ucyBvbiBhbGwgcGFydGl0aW9ucyBpZiBvbiBvbmUgcGFydGl0aW9uAFdyb25nIG51bWJlciBvZiBwYXJ0aXRpb25zIGRlZmluZWQsIG1pc21hdGNoIHdpdGggcHJldmlvdXMgc2V0dGluZwBXcm9uZyBudW1iZXIgb2Ygc3VicGFydGl0aW9ucyBkZWZpbmVkLCBtaXNtYXRjaCB3aXRoIHByZXZpb3VzIHNldHRpbmcAQ29uc3RhbnQsIHJhbmRvbSBvciB0aW1lem9uZS1kZXBlbmRlbnQgZXhwcmVzc2lvbnMgaW4gKHN1YilwYXJ0aXRpb25pbmcgZnVuY3Rpb24gYXJlIG5vdCBhbGxvd2VkAEV4cHJlc3Npb24gaW4gUkFOR0UvTElTVCBWQUxVRVMgbXVzdCBiZSBjb25zdGFudABGaWVsZCBpbiBsaXN0IG9mIGZpZWxkcyBmb3IgcGFydGl0aW9uIGZ1bmN0aW9uIG5vdCBmb3VuZCBpbiB0YWJsZQBMaXN0IG9mIGZpZWxkcyBpcyBvbmx5IGFsbG93ZWQgaW4gS0VZIHBhcnRpdGlvbnMAVGhlIHBhcnRpdGlvbiBpbmZvIGluIHRoZSBmcm0gZmlsZSBpcyBub3QgY29uc2lzdGVudCB3aXRoIHdoYXQgY2FuIGJlIHdyaXR0ZW4gaW50byB0aGUgZnJtIGZpbGUAVGhlICUtLjE5MnMgZnVuY3Rpb24gcmV0dXJucyB0aGUgd3JvbmcgdHlwZQBGb3IgJS0uNjRzIHBhcnRpdGlvbnMgZWFjaCBwYXJ0aXRpb24gbXVzdCBiZSBkZWZpbmVkAFZBTFVFUyBMRVNTIFRIQU4gdmFsdWUgbXVzdCBiZSBzdHJpY3RseSBpbmNyZWFzaW5nIGZvciBlYWNoIHBhcnRpdGlvbgBWQUxVRVMgdmFsdWUgbXVzdCBiZSBvZiBzYW1lIHR5cGUgYXMgcGFydGl0aW9uIGZ1bmN0aW9uAE11bHRpcGxlIGRlZmluaXRpb24gb2Ygc2FtZSBjb25zdGFudCBpbiBsaXN0IHBhcnRpdGlvbmluZwBQYXJ0aXRpb25pbmcgY2FuIG5vdCBiZSB1c2VkIHN0YW5kLWFsb25lIGluIHF1ZXJ5AFRoZSBtaXggb2YgaGFuZGxlcnMgaW4gdGhlIHBhcnRpdGlvbnMgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIE15U1FMAEZvciB0aGUgcGFydGl0aW9uZWQgZW5naW5lIGl0IGlzIG5lY2Vzc2FyeSB0byBkZWZpbmUgYWxsICUtLjY0cwBUb28gbWFueSBwYXJ0aXRpb25zIChpbmNsdWRpbmcgc3VicGFydGl0aW9ucykgd2VyZSBkZWZpbmVkAEl0IGlzIG9ubHkgcG9zc2libGUgdG8gbWl4IFJBTkdFL0xJU1QgcGFydGl0aW9uaW5nIHdpdGggSEFTSC9LRVkgcGFydGl0aW9uaW5nIGZvciBzdWJwYXJ0aXRpb25pbmcARmFpbGVkIHRvIGNyZWF0ZSBzcGVjaWZpYyBoYW5kbGVyIGZpbGUAQSBCTE9CIGZpZWxkIGlzIG5vdCBhbGxvd2VkIGluIHBhcnRpdGlvbiBmdW5jdGlvbgBBICUtLjE5MnMgbXVzdCBpbmNsdWRlIGFsbCBjb2x1bW5zIGluIHRoZSB0YWJsZSdzIHBhcnRpdGlvbmluZyBmdW5jdGlvbiAocHJlZml4ZWQgY29sdW1ucyBhcmUgbm90IGNvbnNpZGVyZWQpLgBOdW1iZXIgb2YgJS0uNjRzID0gMCBpcyBub3QgYW4gYWxsb3dlZCB2YWx1ZQBQYXJ0aXRpb24gbWFuYWdlbWVudCBvbiBhIG5vdCBwYXJ0aXRpb25lZCB0YWJsZSBpcyBub3QgcG9zc2libGUARm9yZWlnbiBrZXlzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHBhcnRpdGlvbmluZwBFcnJvciBpbiBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gJS0uNjRzAENhbm5vdCByZW1vdmUgYWxsIHBhcnRpdGlvbnMsIHVzZSBEUk9QIFRBQkxFIGluc3RlYWQAQ09BTEVTQ0UgUEFSVElUSU9OIGNhbiBvbmx5IGJlIHVzZWQgb24gSEFTSC9LRVkgcGFydGl0aW9ucwBSRU9SR0FOSVpFIFBBUlRJVElPTiBjYW4gb25seSBiZSB1c2VkIHRvIHJlb3JnYW5pemUgcGFydGl0aW9ucyBub3QgdG8gY2hhbmdlIHRoZWlyIG51bWJlcnMAUkVPUkdBTklaRSBQQVJUSVRJT04gd2l0aG91dCBwYXJhbWV0ZXJzIGNhbiBvbmx5IGJlIHVzZWQgb24gYXV0by1wYXJ0aXRpb25lZCB0YWJsZXMgdXNpbmcgSEFTSCBQQVJUSVRJT05zACUtLjY0cyBQQVJUSVRJT04gY2FuIG9ubHkgYmUgdXNlZCBvbiBSQU5HRS9MSVNUIHBhcnRpdGlvbnMAVHJ5aW5nIHRvIEFkZCBwYXJ0aXRpb24ocykgd2l0aCB3cm9uZyBudW1iZXIgb2Ygc3VicGFydGl0aW9ucwBBdCBsZWFzdCBvbmUgcGFydGl0aW9uIG11c3QgYmUgYWRkZWQAQXQgbGVhc3Qgb25lIHBhcnRpdGlvbiBtdXN0IGJlIGNvYWxlc2NlZABNb3JlIHBhcnRpdGlvbnMgdG8gcmVvcmdhbml6ZSB0aGFuIHRoZXJlIGFyZSBwYXJ0aXRpb25zAER1cGxpY2F0ZSBwYXJ0aXRpb24gbmFtZSAlLS4xOTJzAEl0IGlzIG5vdCBhbGxvd2VkIHRvIHNodXQgb2ZmIGJpbmxvZyBvbiB0aGlzIGNvbW1hbmQAV2hlbiByZW9yZ2FuaXppbmcgYSBzZXQgb2YgcGFydGl0aW9ucyB0aGV5IG11c3QgYmUgaW4gY29uc2VjdXRpdmUgb3JkZXIAUmVvcmdhbml6ZSBvZiByYW5nZSBwYXJ0aXRpb25zIGNhbm5vdCBjaGFuZ2UgdG90YWwgcmFuZ2VzIGV4Y2VwdCBmb3IgbGFzdCBwYXJ0aXRpb24gd2hlcmUgaXQgY2FuIGV4dGVuZCB0aGUgcmFuZ2UAUGFydGl0aW9uIGZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uIGZvciB0aGlzIGhhbmRsZXIAUGFydGl0aW9uIHN0YXRlIGNhbm5vdCBiZSBkZWZpbmVkIGZyb20gQ1JFQVRFL0FMVEVSIFRBQkxFAFRoZSAlLS42NHMgaGFuZGxlciBvbmx5IHN1cHBvcnRzIDMyIGJpdCBpbnRlZ2VycyBpbiBWQUxVRVMAUGx1Z2luICclLS4xOTJzJyBpcyBub3QgbG9hZGVkAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJwBUYWJsZSBoYXMgbm8gcGFydGl0aW9uIGZvciB2YWx1ZSAlLS42NHMASXQgaXMgbm90IGFsbG93ZWQgdG8gc3BlY2lmeSAlcyBtb3JlIHRoYW4gb25jZQBGYWlsZWQgdG8gY3JlYXRlICVzAEZhaWxlZCB0byBkcm9wICVzAFRoZSBoYW5kbGVyIGRvZXNuJ3Qgc3VwcG9ydCBhdXRvZXh0ZW5kIG9mIHRhYmxlc3BhY2VzAEEgc2l6ZSBwYXJhbWV0ZXIgd2FzIGluY29ycmVjdGx5IHNwZWNpZmllZCwgZWl0aGVyIG51bWJlciBvciBvbiB0aGUgZm9ybSAxME0AVGhlIHNpemUgbnVtYmVyIHdhcyBjb3JyZWN0IGJ1dCB3ZSBkb24ndCBhbGxvdyB0aGUgZGlnaXQgcGFydCB0byBiZSBtb3JlIHRoYW4gMiBiaWxsaW9uAEZhaWxlZCB0byBhbHRlcjogJXMAV3JpdGluZyBvbmUgcm93IHRvIHRoZSByb3ctYmFzZWQgYmluYXJ5IGxvZyBmYWlsZWQAVGFibGUgZGVmaW5pdGlvbiBvbiBzb3VyY2UgYW5kIHJlcGxpY2EgZG9lcyBub3QgbWF0Y2g6ICVzAFJlcGxpY2EgcnVubmluZyB3aXRoIC0tbG9nLXJlcGxpY2EtdXBkYXRlcyBtdXN0IHVzZSByb3ctYmFzZWQgYmluYXJ5IGxvZ2dpbmcgdG8gYmUgYWJsZSB0byByZXBsaWNhdGUgcm93LWJhc2VkIGJpbmFyeSBsb2cgZXZlbnRzAEV2ZW50ICclLS4xOTJzJyBhbHJlYWR5IGV4aXN0cwBGYWlsZWQgdG8gc3RvcmUgZXZlbnQgJXMuIEVycm9yIGNvZGUgJWQgZnJvbSBzdG9yYWdlIGVuZ2luZS4AVW5rbm93biBldmVudCAnJS0uMTkycycARmFpbGVkIHRvIGFsdGVyIGV2ZW50ICclLS4xOTJzJwBGYWlsZWQgdG8gZHJvcCAlcwBJTlRFUlZBTCBpcyBlaXRoZXIgbm90IHBvc2l0aXZlIG9yIHRvbyBiaWcARU5EUyBpcyBlaXRoZXIgaW52YWxpZCBvciBiZWZvcmUgU1RBUlRTAEV2ZW50IGV4ZWN1dGlvbiB0aW1lIGlzIGluIHRoZSBwYXN0LiBFdmVudCBoYXMgYmVlbiBkaXNhYmxlZABGYWlsZWQgdG8gb3BlbiBteXNxbC5ldmVudABObyBkYXRldGltZSBleHByZXNzaW9uIHByb3ZpZGVkAENvbHVtbiBjb3VudCBvZiBteXNxbC4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkAENhbm5vdCBsb2FkIGZyb20gbXlzcWwuJXMuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQARmFpbGVkIHRvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSBteXNxbC5ldmVudABFcnJvciBkdXJpbmcgY29tcGlsYXRpb24gb2YgZXZlbnQncyBib2R5AFNhbWUgb2xkIGFuZCBuZXcgZXZlbnQgbmFtZQBEYXRhIGZvciBjb2x1bW4gJyVzJyB0b28gbG9uZwBDYW5ub3QgZHJvcCBpbmRleCAnJS0uMTkycyc6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQAVGhlIHN5bnRheCAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNeVNRTCAlcy4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkAFlvdSBjYW4ndCB3cml0ZS1sb2NrIGEgbG9nIHRhYmxlLiBPbmx5IHJlYWQgYWNjZXNzIGlzIHBvc3NpYmxlAFlvdSBjYW4ndCB1c2UgbG9ja3Mgd2l0aCBsb2cgdGFibGVzLgBVcGhvbGRpbmcgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgZm9yIHRhYmxlICclLjE5MnMnLCBlbnRyeSAnJS0uMTkycycsIGtleSAlZCB3b3VsZCBsZWFkIHRvIGEgZHVwbGljYXRlIGVudHJ5AFRoZSBjb2x1bW4gY291bnQgb2YgbXlzcWwuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gQ3JlYXRlZCB3aXRoIE15U1FMICVkLCBub3cgcnVubmluZyAlZC4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBDYW5ub3Qgc3dpdGNoIG91dCBvZiB0aGUgcm93LWJhc2VkIGJpbmFyeSBsb2cgZm9ybWF0IHdoZW4gdGhlIHNlc3Npb24gaGFzIG9wZW4gdGVtcG9yYXJ5IHRhYmxlcwBDYW5ub3QgY2hhbmdlIHRoZSBiaW5hcnkgbG9nZ2luZyBmb3JtYXQgaW5zaWRlIGEgc3RvcmVkIGZ1bmN0aW9uIG9yIHRyaWdnZXIAVGhlIE5EQiBjbHVzdGVyIGVuZ2luZSBkb2VzIG5vdCBzdXBwb3J0IGNoYW5naW5nIHRoZSBiaW5sb2cgZm9ybWF0IG9uIHRoZSBmbHkgeWV0AENhbm5vdCBjcmVhdGUgdGVtcG9yYXJ5IHRhYmxlIHdpdGggcGFydGl0aW9ucwBQYXJ0aXRpb24gY29uc3RhbnQgaXMgb3V0IG9mIHBhcnRpdGlvbiBmdW5jdGlvbiBkb21haW4AVGhpcyBwYXJ0aXRpb24gZnVuY3Rpb24gaXMgbm90IGFsbG93ZWQARXJyb3IgaW4gRERMIGxvZwBOb3QgYWxsb3dlZCB0byB1c2UgTlVMTCB2YWx1ZSBpbiBWQUxVRVMgTEVTUyBUSEFOAEluY29ycmVjdCBwYXJ0aXRpb24gbmFtZQBUcmFuc2FjdGlvbiBjaGFyYWN0ZXJpc3RpY3MgY2FuJ3QgYmUgY2hhbmdlZCB3aGlsZSBhIHRyYW5zYWN0aW9uIGlzIGluIHByb2dyZXNzAEFMVEVSIFRBQkxFIGNhdXNlcyBhdXRvX2luY3JlbWVudCByZXNlcXVlbmNpbmcsIHJlc3VsdGluZyBpbiBkdXBsaWNhdGUgZW50cnkgJyUtLjE5MnMnIGZvciBrZXkgJyUtLjE5MnMnAEludGVybmFsIHNjaGVkdWxlciBlcnJvciAlZABFcnJvciBkdXJpbmcgc3RhcnRpbmcvc3RvcHBpbmcgb2YgdGhlIHNjaGVkdWxlci4gRXJyb3IgY29kZSAldQBFbmdpbmUgY2Fubm90IGJlIHVzZWQgaW4gcGFydGl0aW9uZWQgdGFibGVzAENhbm5vdCBhY3RpdmF0ZSAnJS0uNjRzJyBsb2cAVGhlIHNlcnZlciB3YXMgbm90IGJ1aWx0IHdpdGggcm93LWJhc2VkIHJlcGxpY2F0aW9uAERlY29kaW5nIG9mIGJhc2U2NCBzdHJpbmcgZmFpbGVkAFJlY3Vyc2lvbiBvZiBFVkVOVCBEREwgc3RhdGVtZW50cyBpcyBmb3JiaWRkZW4gd2hlbiBib2R5IGlzIHByZXNlbnQAQ2Fubm90IHByb2NlZWQgYmVjYXVzZSBzeXN0ZW0gdGFibGVzIHVzZWQgYnkgRXZlbnQgU2NoZWR1bGVyIHdlcmUgZm91bmQgZGFtYWdlZCBhdCBzZXJ2ZXIgc3RhcnQAT25seSBpbnRlZ2VycyBhbGxvd2VkIGFzIG51bWJlciBoZXJlAFRoaXMgc3RvcmFnZSBlbmdpbmUgY2Fubm90IGJlIHVzZWQgZm9yIGxvZyB0YWJsZXMAWW91IGNhbm5vdCAnJXMnIGEgbG9nIHRhYmxlIGlmIGxvZ2dpbmcgaXMgZW5hYmxlZABDYW5ub3QgcmVuYW1lICclcycuIFdoZW4gbG9nZ2luZyBlbmFibGVkLCByZW5hbWUgdG8vZnJvbSBsb2cgdGFibGUgbXVzdCByZW5hbWUgdHdvIHRhYmxlczogdGhlIGxvZyB0YWJsZSB0byBhbiBhcmNoaXZlIHRhYmxlIGFuZCBhbm90aGVyIHRhYmxlIGJhY2sgdG8gJyVzJwBJbmNvcnJlY3QgcGFyYW1ldGVyIGNvdW50IGluIHRoZSBjYWxsIHRvIG5hdGl2ZSBmdW5jdGlvbiAnJS0uMTkycycASW5jb3JyZWN0IHBhcmFtZXRlcnMgaW4gdGhlIGNhbGwgdG8gbmF0aXZlIGZ1bmN0aW9uICclLS4xOTJzJwBJbmNvcnJlY3QgcGFyYW1ldGVycyBpbiB0aGUgY2FsbCB0byBzdG9yZWQgZnVuY3Rpb24gJS0uMTkycwBUaGlzIGZ1bmN0aW9uICclLS4xOTJzJyBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIG5hdGl2ZSBmdW5jdGlvbgBadm9qZW7DvSBrbMOtxI0gJyUtLjY0cycgKMSNw61zbG8ga2zDrcSNZSAnJS0uMzg1cycpAFRvbyBtYW55IGZpbGVzIG9wZW5lZCwgcGxlYXNlIGV4ZWN1dGUgdGhlIGNvbW1hbmQgYWdhaW4ARXZlbnQgZXhlY3V0aW9uIHRpbWUgaXMgaW4gdGhlIHBhc3QgYW5kIE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIGlzIHNldC4gVGhlIGV2ZW50IHdhcyBkcm9wcGVkIGltbWVkaWF0ZWx5IGFmdGVyIGNyZWF0aW9uLgBFdmVudCBleGVjdXRpb24gdGltZSBpcyBpbiB0aGUgcGFzdCBhbmQgT04gQ09NUExFVElPTiBOT1QgUFJFU0VSVkUgaXMgc2V0LiBUaGUgZXZlbnQgd2FzIG5vdCBjaGFuZ2VkLiBTcGVjaWZ5IGEgdGltZSBpbiB0aGUgZnV0dXJlLgBUaGUgaW5jaWRlbnQgJXMgb2NjdXJyZWQgb24gdGhlIHNvdXJjZS4gTWVzc2FnZTogJXMAVGFibGUgaGFzIG5vIHBhcnRpdGlvbiBmb3Igc29tZSBleGlzdGluZyB2YWx1ZXMAVW5zYWZlIHN0YXRlbWVudCB3cml0dGVuIHRvIHRoZSBiaW5hcnkgbG9nIHVzaW5nIHN0YXRlbWVudCBmb3JtYXQgc2luY2UgQklOTE9HX0ZPUk1BVCA9IFNUQVRFTUVOVC4gJXMARmF0YWwgZXJyb3I6ICVzAFJlbGF5IGxvZyByZWFkIGZhaWx1cmU6ICVzAFJlbGF5IGxvZyB3cml0ZSBmYWlsdXJlOiAlcwBGYWlsZWQgdG8gY3JlYXRlICVzAFNvdXJjZSBjb21tYW5kICVzIGZhaWxlZDogJXMAQmluYXJ5IGxvZ2dpbmcgbm90IHBvc3NpYmxlLiBNZXNzYWdlOiAlcwBWaWV3IGAlLS42NHNgLmAlLS42NHNgIGhhcyBubyBjcmVhdGlvbiBjb250ZXh0AENyZWF0aW9uIGNvbnRleHQgb2YgdmlldyBgJS0uNjRzYC5gJS0uNjRzJyBpcyBpbnZhbGlkAENyZWF0aW9uIGNvbnRleHQgb2Ygc3RvcmVkIHJvdXRpbmUgYCUtLjY0c2AuYCUtLjY0c2AgaXMgaW52YWxpZABDb3JydXB0ZWQgVFJHIGZpbGUgZm9yIHRhYmxlIGAlLS42NHNgLmAlLS42NHNgAFRyaWdnZXJzIGZvciB0YWJsZSBgJS0uNjRzYC5gJS0uNjRzYCBoYXZlIG5vIGNyZWF0aW9uIGNvbnRleHQAVHJpZ2dlciBjcmVhdGlvbiBjb250ZXh0IG9mIHRhYmxlIGAlLS42NHNgLmAlLS42NHNgIGlzIGludmFsaWQAQ3JlYXRpb24gY29udGV4dCBvZiBldmVudCBgJS0uNjRzYC5gJS0uNjRzYCBpcyBpbnZhbGlkAENhbm5vdCBvcGVuIHRhYmxlIGZvciB0cmlnZ2VyIGAlLS42NHNgLmAlLS42NHNgAENhbm5vdCBjcmVhdGUgc3RvcmVkIHJvdXRpbmUgYCUtLjY0c2AuIENoZWNrIHdhcm5pbmdzAEFtYmlndW91cyByZXBsaWNhIG1vZGVzIGNvbWJpbmF0aW9uLiAlcwBUaGUgQklOTE9HIHN0YXRlbWVudCBvZiB0eXBlIGAlc2Agd2FzIG5vdCBwcmVjZWRlZCBieSBhIGZvcm1hdCBkZXNjcmlwdGlvbiBCSU5MT0cgc3RhdGVtZW50LgBDb3JydXB0ZWQgcmVwbGljYXRpb24gZXZlbnQgd2FzIGRldGVjdGVkAEludmFsaWQgY29sdW1uIHJlZmVyZW5jZSAoJS0uNjRzKSBpbiBMT0FEIERBVEEAQmVpbmcgcHVyZ2VkIGxvZyAlcyB3YXMgbm90IGZvdW5kAFhBX1JCVElNRU9VVDogVHJhbnNhY3Rpb24gYnJhbmNoIHdhcyByb2xsZWQgYmFjazogdG9vayB0b28gbG9uZwBYQV9SQkRFQURMT0NLOiBUcmFuc2FjdGlvbiBicmFuY2ggd2FzIHJvbGxlZCBiYWNrOiBkZWFkbG9jayB3YXMgZGV0ZWN0ZWQAUHJlcGFyZWQgc3RhdGVtZW50IG5lZWRzIHRvIGJlIHJlLXByZXBhcmVkAERFTEFZRUQgb3B0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlICclLS4xOTJzJwBUaGUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgZG9lcyBub3QgZXhpc3QAPCUtLjY0cz4gb3B0aW9uIGlnbm9yZWQAQnVpbHQtaW4gcGx1Z2lucyBjYW5ub3QgYmUgZGVsZXRlZABQbHVnaW4gaXMgYnVzeSBhbmQgd2lsbCBiZSB1bmluc3RhbGxlZCBvbiBzaHV0ZG93bgAlcyB2YXJpYWJsZSAnJXMnIGlzIHJlYWQtb25seS4gVXNlIFNFVCAlcyB0byBhc3NpZ24gdGhlIHZhbHVlAFN0b3JhZ2UgZW5naW5lICVzIGRvZXMgbm90IHN1cHBvcnQgcm9sbGJhY2sgZm9yIHRoaXMgc3RhdGVtZW50LiBUcmFuc2FjdGlvbiByb2xsZWQgYmFjayBhbmQgbXVzdCBiZSByZXN0YXJ0ZWQAVW5leHBlY3RlZCBzb3VyY2UncyBoZWFydGJlYXQgZGF0YTogJXMAVGhlIHJlcXVlc3RlZCB2YWx1ZSBmb3IgdGhlIGhlYXJ0YmVhdCBwZXJpb2QgaXMgZWl0aGVyIG5lZ2F0aXZlIG9yIGV4Y2VlZHMgdGhlIG1heGltdW0gYWxsb3dlZCAoJXMgc2Vjb25kcykuAEJhZCBzY2hlbWEgZm9yIG15c3FsLm5kYl9yZXBsaWNhdGlvbiB0YWJsZS4gTWVzc2FnZTogJS0uNjRzAEVycm9yIGluIHBhcnNpbmcgY29uZmxpY3QgZnVuY3Rpb24uIE1lc3NhZ2U6ICUtLjY0cwBXcml0ZSB0byBleGNlcHRpb25zIHRhYmxlIGZhaWxlZC4gTWVzc2FnZTogJS0uMTI4cwBDb21tZW50IGZvciB0YWJsZSAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBDb21tZW50IGZvciBmaWVsZCAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBGVU5DVElPTiAlcyBkb2VzIG5vdCBleGlzdC4gQ2hlY2sgdGhlICdGdW5jdGlvbiBOYW1lIFBhcnNpbmcgYW5kIFJlc29sdXRpb24nIHNlY3Rpb24gaW4gdGhlIFJlZmVyZW5jZSBNYW51YWwARGF0YWJhc2UAVGFibGUAUGFydGl0aW9uAFN1YnBhcnRpdGlvbgBUZW1wb3JhcnkAUmVuYW1lZABUb28gbWFueSBhY3RpdmUgY29uY3VycmVudCB0cmFuc2FjdGlvbnMATm9uLUFTQ0lJIHNlcGFyYXRvciBhcmd1bWVudHMgYXJlIG5vdCBmdWxseSBzdXBwb3J0ZWQAZGVidWcgc3luYyBwb2ludCB3YWl0IHRpbWVkIG91dABkZWJ1ZyBzeW5jIHBvaW50IGhpdCBsaW1pdCByZWFjaGVkAER1cGxpY2F0ZSBjb25kaXRpb24gaW5mb3JtYXRpb24gaXRlbSAnJXMnAFVuaGFuZGxlZCB1c2VyLWRlZmluZWQgd2FybmluZyBjb25kaXRpb24AVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBub3QgZm91bmQgY29uZGl0aW9uAFVuaGFuZGxlZCB1c2VyLWRlZmluZWQgZXhjZXB0aW9uIGNvbmRpdGlvbgBSRVNJR05BTCB3aGVuIGhhbmRsZXIgbm90IGFjdGl2ZQBTSUdOQUwvUkVTSUdOQUwgY2FuIG9ubHkgdXNlIGEgQ09ORElUSU9OIGRlZmluZWQgd2l0aCBTUUxTVEFURQBEYXRhIHRydW5jYXRlZCBmb3IgY29uZGl0aW9uIGl0ZW0gJyVzJwBEYXRhIHRvbyBsb25nIGZvciBjb25kaXRpb24gaXRlbSAnJXMnAFVua25vd24gbG9jYWxlOiAnJS0uNjRzJwBUaGUgcmVxdWVzdGVkIHNlcnZlciBpZCAlZCBjbGFzaGVzIHdpdGggdGhlIHJlcGxpY2Egc3RhcnR1cCBvcHRpb24gLS1yZXBsaWNhdGUtc2FtZS1zZXJ2ZXItaWQAUXVlcnkgY2FjaGUgaXMgZGlzYWJsZWQ7IHJlc3RhcnQgdGhlIHNlcnZlciB3aXRoIHF1ZXJ5X2NhY2hlX3R5cGU9MSB0byBlbmFibGUgaXQARHVwbGljYXRlIHBhcnRpdGlvbiBmaWVsZCBuYW1lICclLS4xOTJzJwBJbmNvbnNpc3RlbmN5IGluIHVzYWdlIG9mIGNvbHVtbiBsaXN0cyBmb3IgcGFydGl0aW9uaW5nAFBhcnRpdGlvbiBjb2x1bW4gdmFsdWVzIG9mIGluY29ycmVjdCB0eXBlAFRvbyBtYW55IGZpZWxkcyBpbiAnJS0uMTkycycAQ2Fubm90IHVzZSBNQVhWQUxVRSBhcyB2YWx1ZSBpbiBWQUxVRVMgSU4AQ2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSB2YWx1ZSBmb3IgdGhpcyB0eXBlIG9mICUtLjY0cyBwYXJ0aXRpb25pbmcAUm93IGV4cHJlc3Npb25zIGluIFZBTFVFUyBJTiBvbmx5IGFsbG93ZWQgZm9yIG11bHRpLWZpZWxkIGNvbHVtbiBwYXJ0aXRpb25pbmcARmllbGQgJyUtLjE5MnMnIGlzIG9mIGEgbm90IGFsbG93ZWQgdHlwZSBmb3IgdGhpcyB0eXBlIG9mIHBhcnRpdGlvbmluZwBUaGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBwYXJ0aXRpb25pbmcgZmllbGRzIGlzIHRvbyBsYXJnZQBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBib3RoIHJvdy1pbmNhcGFibGUgZW5naW5lcyBhbmQgc3RhdGVtZW50LWluY2FwYWJsZSBlbmdpbmVzIGFyZSBpbnZvbHZlZC4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2UgQklOTE9HX0ZPUk1BVCA9IFJPVyBhbmQgYXQgbGVhc3Qgb25lIHRhYmxlIHVzZXMgYSBzdG9yYWdlIGVuZ2luZSBsaW1pdGVkIHRvIHN0YXRlbWVudC1iYXNlZCBsb2dnaW5nLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBzdGF0ZW1lbnQgaXMgdW5zYWZlLCBzdG9yYWdlIGVuZ2luZSBpcyBsaW1pdGVkIHRvIHN0YXRlbWVudC1iYXNlZCBsb2dnaW5nLCBhbmQgQklOTE9HX0ZPUk1BVCA9IE1JWEVELiAlcwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBzdGF0ZW1lbnQgaXMgaW4gcm93IGZvcm1hdCBhbmQgYXQgbGVhc3Qgb25lIHRhYmxlIHVzZXMgYSBzdG9yYWdlIGVuZ2luZSBsaW1pdGVkIHRvIHN0YXRlbWVudC1iYXNlZCBsb2dnaW5nLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBCSU5MT0dfRk9STUFUID0gU1RBVEVNRU5UIGFuZCBhdCBsZWFzdCBvbmUgdGFibGUgdXNlcyBhIHN0b3JhZ2UgZW5naW5lIGxpbWl0ZWQgdG8gcm93LWJhc2VkIGxvZ2dpbmcuJXMAQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2Ugc3RhdGVtZW50IGlzIGluIHJvdyBmb3JtYXQgYW5kIEJJTkxPR19GT1JNQVQgPSBTVEFURU1FTlQuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIG1vcmUgdGhhbiBvbmUgZW5naW5lIGlzIGludm9sdmVkIGFuZCBhdCBsZWFzdCBvbmUgZW5naW5lIGlzIHNlbGYtbG9nZ2luZy4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgTElNSVQgY2xhdXNlLiBUaGlzIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBzZXQgb2Ygcm93cyBpbmNsdWRlZCBjYW5ub3QgYmUgcHJlZGljdGVkLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgSU5TRVJUIERFTEFZRUQuIFRoaXMgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIHRpbWVzIHdoZW4gcm93cyBhcmUgaW5zZXJ0ZWQgY2Fubm90IGJlIHByZWRpY3RlZC4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIHRoZSBnZW5lcmFsIGxvZywgc2xvdyBxdWVyeSBsb2csIG9yIHBlcmZvcm1hbmNlX3NjaGVtYSB0YWJsZShzKS4gVGhpcyBpcyB1bnNhZmUgYmVjYXVzZSBzeXN0ZW0gdGFibGVzIG1heSBkaWZmZXIgb24gcmVwbGljYXMuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCBpbnZva2VzIGEgdHJpZ2dlciBvciBhIHN0b3JlZCBmdW5jdGlvbiB0aGF0IGluc2VydHMgaW50byBhbiBBVVRPX0lOQ1JFTUVOVCBjb2x1bW4uIEluc2VydGVkIHZhbHVlcyBjYW5ub3QgYmUgbG9nZ2VkIGNvcnJlY3RseS4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBVREYgd2hpY2ggbWF5IG5vdCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgb24gdGhlIHJlcGxpY2EuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgc3lzdGVtIHZhcmlhYmxlIHRoYXQgbWF5IGhhdmUgYSBkaWZmZXJlbnQgdmFsdWUgb24gdGhlIHJlcGxpY2EuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgc3lzdGVtIGZ1bmN0aW9uIHRoYXQgbWF5IHJldHVybiBhIGRpZmZlcmVudCB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IGFjY2Vzc2VzIGEgbm9uLXRyYW5zYWN0aW9uYWwgdGFibGUgYWZ0ZXIgYWNjZXNzaW5nIGEgdHJhbnNhY3Rpb25hbCB0YWJsZSB3aXRoaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24uACVzIFN0YXRlbWVudDogJXMAQ29sdW1uICVkIG9mIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZnJvbSB0eXBlICclLS4zMnMnIHRvIHR5cGUgJyUtLjMycycAQ2FuJ3QgY3JlYXRlIGNvbnZlcnNpb24gdGFibGUgZm9yIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnAENhbm5vdCBtb2RpZnkgQEBzZXNzaW9uLmJpbmxvZ19mb3JtYXQgaW5zaWRlIGEgdHJhbnNhY3Rpb24AVGhlIHBhdGggc3BlY2lmaWVkIGZvciAlLjY0cyBpcyB0b28gbG9uZy4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4ATmF0aXZlIHRhYmxlICclLS42NHMnLiclLS42NHMnIGhhcyB0aGUgd3Jvbmcgc3RydWN0dXJlAEludmFsaWQgcGVyZm9ybWFuY2Vfc2NoZW1hIHVzYWdlLgBUYWJsZSAnJXMnLiclcycgd2FzIHNraXBwZWQgc2luY2UgaXRzIGRlZmluaXRpb24gaXMgYmVpbmcgbW9kaWZpZWQgYnkgY29uY3VycmVudCBEREwgc3RhdGVtZW50AENhbm5vdCBtb2RpZnkgQEBzZXNzaW9uLmJpbmxvZ19kaXJlY3Rfbm9uX3RyYW5zYWN0aW9uYWxfdXBkYXRlcyBpbnNpZGUgYSB0cmFuc2FjdGlvbgBDYW5ub3QgY2hhbmdlIHRoZSBiaW5sb2cgZGlyZWN0IGZsYWcgaW5zaWRlIGEgc3RvcmVkIGZ1bmN0aW9uIG9yIHRyaWdnZXIAQSBTUEFUSUFMIGluZGV4IG1heSBvbmx5IGNvbnRhaW4gYSBnZW9tZXRyaWNhbCB0eXBlIGNvbHVtbgBDb21tZW50IGZvciBpbmRleCAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBXYWl0IG9uIGEgbG9jayB3YXMgYWJvcnRlZCBkdWUgdG8gYSBwZW5kaW5nIGV4Y2x1c2l2ZSBsb2NrACVzIHZhbHVlIGlzIG91dCBvZiByYW5nZSBpbiAnJXMnAEEgdmFyaWFibGUgb2YgYSBub24taW50ZWdlciBiYXNlZCB0eXBlIGluIExJTUlUIGNsYXVzZQBNaXhpbmcgc2VsZi1sb2dnaW5nIGFuZCBub24tc2VsZi1sb2dnaW5nIGVuZ2luZXMgaW4gYSBzdGF0ZW1lbnQgaXMgdW5zYWZlLgBTdGF0ZW1lbnQgYWNjZXNzZXMgbm9udHJhbnNhY3Rpb25hbCB0YWJsZSBhcyB3ZWxsIGFzIHRyYW5zYWN0aW9uYWwgb3IgdGVtcG9yYXJ5IHRhYmxlLCBhbmQgd3JpdGVzIHRvIGFueSBvZiB0aGVtLgBDYW5ub3QgbW9kaWZ5IEBAc2Vzc2lvbi5zcWxfbG9nX2JpbiBpbnNpZGUgYSB0cmFuc2FjdGlvbgBDYW5ub3QgY2hhbmdlIHRoZSBzcWxfbG9nX2JpbiBpbnNpZGUgYSBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlcgBGYWlsZWQgdG8gcmVhZCBmcm9tIHRoZSAucGFyIGZpbGUAVkFMVUVTIHZhbHVlIGZvciBwYXJ0aXRpb24gJyUtLjY0cycgbXVzdCBoYXZlIHR5cGUgSU5UAFDFmcOtc3R1cCBwcm8gdcW+aXZhdGVsZSAnJS0uNDhzJ0AnJS0uNjRzJwBTRVQgUEFTU1dPUkQgaGFzIG5vIHNpZ25pZmljYW5jZSBmb3IgdXNlcnMgYXV0aGVudGljYXRpbmcgdmlhIHBsdWdpbnMAR1JBTlQgd2l0aCBJREVOVElGSUVEIFdJVEggaXMgaWxsZWdhbCBiZWNhdXNlIHRoZSB1c2VyICUtLipzIGFscmVhZHkgZXhpc3RzAENhbm5vdCB0cnVuY2F0ZSBhIHRhYmxlIHJlZmVyZW5jZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICglLjE5MnMpAFBsdWdpbiAnJXMnIGlzIGZvcmNlX3BsdXNfcGVybWFuZW50IGFuZCBjYW4gbm90IGJlIHVubG9hZGVkAFRoZSByZXF1ZXN0ZWQgdmFsdWUgZm9yIHRoZSBoZWFydGJlYXQgcGVyaW9kIGlzIGxlc3MgdGhhbiAxIG1pbGxpc2Vjb25kLiBUaGUgdmFsdWUgaXMgcmVzZXQgdG8gMCwgbWVhbmluZyB0aGF0IGhlYXJ0YmVhdGluZyB3aWxsIGVmZmVjdGl2ZWx5IGJlIGRpc2FibGVkLgBUaGUgcmVxdWVzdGVkIHZhbHVlIGZvciB0aGUgaGVhcnRiZWF0IHBlcmlvZCBleGNlZWRzIHRoZSB2YWx1ZSBvZiBgcmVwbGljYV9uZXRfdGltZW91dCcgc2Vjb25kcy4gQSBzZW5zaWJsZSB2YWx1ZSBmb3IgdGhlIHBlcmlvZCBzaG91bGQgYmUgbGVzcyB0aGFuIHRoZSB0aW1lb3V0LgBNdWx0aS1yb3cgc3RhdGVtZW50cyByZXF1aXJlZCBtb3JlIHRoYW4gJ21heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplJyBieXRlcyBvZiBzdG9yYWdlOyBpbmNyZWFzZSB0aGlzIG15c3FsZCB2YXJpYWJsZSBhbmQgdHJ5IGFnYWluAFByaW1hcnkga2V5L3BhcnRpdGlvbiBrZXkgdXBkYXRlIGlzIG5vdCBhbGxvd2VkIHNpbmNlIHRoZSB0YWJsZSBpcyB1cGRhdGVkIGJvdGggYXMgJyUtLjE5MnMnIGFuZCAnJS0uMTkycycuAFRhYmxlIHJlYnVpbGQgcmVxdWlyZWQuIFBsZWFzZSBkbyAiQUxURVIgVEFCTEUgYCUtLjY0c2AgRk9SQ0UiIG9yIGR1bXAvcmVsb2FkIHRvIGZpeCBpdCEAVGhlIHZhbHVlIG9mICclcycgc2hvdWxkIGJlIG5vIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgJyVzJwBJbmRleCBjb2x1bW4gc2l6ZSB0b28gbGFyZ2UuIFRoZSBtYXhpbXVtIGNvbHVtbiBzaXplIGlzICVsdSBieXRlcy4AVHJpZ2dlciAnJS0uNjRzJyBoYXMgYW4gZXJyb3IgaW4gaXRzIGJvZHk6ICclLS4yNTZzJwBVbmtub3duIHRyaWdnZXIgaGFzIGFuIGVycm9yIGluIGl0cyBib2R5OiAnJS0uMjU2cycASW5kZXggJXMgaXMgY29ycnVwdGVkAFVuZG8gbG9nIHJlY29yZCBpcyB0b28gYmlnLgBJTlNFUlQgSUdOT1JFLi4uIFNFTEVDVCBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSBpZ25vcmVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4ASU5TRVJULi4uIFNFTEVDVC4uLiBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSB1cGRhdGVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AUkVQTEFDRS4uLiBTRUxFQ1QgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgcmVwbGFjZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBDUkVBVEUuLi4gSUdOT1JFIFNFTEVDVCBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSBpZ25vcmVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AQ1JFQVRFLi4uIFJFUExBQ0UgU0VMRUNUIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBvcmRlciBpbiB3aGljaCByb3dzIGFyZSByZXRyaWV2ZWQgYnkgdGhlIFNFTEVDVCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIHJlcGxhY2VkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AVVBEQVRFIElHTk9SRSBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgdXBkYXRlZCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIGlnbm9yZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBQbHVnaW4gJyVzJyBpcyBtYXJrZWQgYXMgbm90IGR5bmFtaWNhbGx5IHVuaW5zdGFsbGFibGUuIFlvdSBoYXZlIHRvIHN0b3AgdGhlIHNlcnZlciB0byB1bmluc3RhbGwgaXQuAFBsdWdpbiAnJXMnIGlzIG1hcmtlZCBhcyBub3QgZHluYW1pY2FsbHkgaW5zdGFsbGFibGUuIFlvdSBoYXZlIHRvIHN0b3AgdGhlIHNlcnZlciB0byBpbnN0YWxsIGl0LgBTdGF0ZW1lbnRzIHdyaXRpbmcgdG8gYSB0YWJsZSB3aXRoIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbiBhZnRlciBzZWxlY3RpbmcgZnJvbSBhbm90aGVyIHRhYmxlIGFyZSB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGRldGVybWluZXMgd2hhdCAoaWYgYW55KSByb3dzIHdpbGwgYmUgd3JpdHRlbi4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAENSRUFURSBUQUJMRS4uLiBTRUxFQ1QuLi4gIG9uIGEgdGFibGUgd2l0aCBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4gaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgaW5zZXJ0ZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBJTlNFUlQuLi4gT04gRFVQTElDQVRFIEtFWSBVUERBVEUgIG9uIGEgdGFibGUgd2l0aCBtb3JlIHRoYW4gb25lIFVOSVFVRSBLRVkgaXMgdW5zYWZlAFRhYmxlIGlzIGJlaW5nIHVzZWQgaW4gZm9yZWlnbiBrZXkgY2hlY2suAFN0b3JhZ2UgZW5naW5lICclcycgZG9lcyBub3Qgc3VwcG9ydCBzeXN0ZW0gdGFibGVzLiBbJXMuJXNdAElOU0VSVCBpbnRvIGF1dG9pbmNyZW1lbnQgZmllbGQgd2hpY2ggaXMgbm90IHRoZSBmaXJzdCBwYXJ0IGluIHRoZSBjb21wb3NlZCBwcmltYXJ5IGtleSBpcyB1bnNhZmUuAENhbm5vdCBsb2FkIGZyb20gJXMuJXMuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAVGhlIHJlcXVlc3RlZCB2YWx1ZSAlcyBmb3IgdGhlIHNvdXJjZSBkZWxheSBleGNlZWRzIHRoZSBtYXhpbXVtICV1AE9ubHkgRm9ybWF0X2Rlc2NyaXB0aW9uX2xvZ19ldmVudCBhbmQgcm93IGV2ZW50cyBhcmUgYWxsb3dlZCBpbiBCSU5MT0cgc3RhdGVtZW50cyAoYnV0ICVzIHdhcyBwcm92aWRlZCkATm9uIG1hdGNoaW5nIGF0dHJpYnV0ZSAnJS0uNjRzJyBiZXR3ZWVuIHBhcnRpdGlvbiBhbmQgdGFibGUAVGFibGUgdG8gZXhjaGFuZ2Ugd2l0aCBwYXJ0aXRpb24gaXMgcGFydGl0aW9uZWQ6ICclLS42NHMnAFRhYmxlIHRvIGV4Y2hhbmdlIHdpdGggcGFydGl0aW9uIGlzIHRlbXBvcmFyeTogJyUtLjY0cycAU3VicGFydGl0aW9uZWQgdGFibGUsIHVzZSBzdWJwYXJ0aXRpb24gaW5zdGVhZCBvZiBwYXJ0aXRpb24AVW5rbm93biBwYXJ0aXRpb24gJyUtLjY0cycgaW4gdGFibGUgJyUtLjY0cycAVGFibGVzIGhhdmUgZGlmZmVyZW50IGRlZmluaXRpb25zAEZvdW5kIGEgcm93IHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHBhcnRpdGlvbgBPcHRpb24gYmlubG9nX2NhY2hlX3NpemUgKCVsdSkgaXMgZ3JlYXRlciB0aGFuIG1heF9iaW5sb2dfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfY2FjaGVfc2l6ZSBlcXVhbCB0byBtYXhfYmlubG9nX2NhY2hlX3NpemUuAENhbm5vdCB1c2UgJS0uNjRzIGFjY2VzcyBvbiBpbmRleCAnJS0uNjRzJyBkdWUgdG8gdHlwZSBvciBjb2xsYXRpb24gY29udmVyc2lvbiBvbiBmaWVsZCAnJS0uNjRzJwBUYWJsZSB0byBleGNoYW5nZSB3aXRoIHBhcnRpdGlvbiBoYXMgZm9yZWlnbiBrZXkgcmVmZXJlbmNlczogJyUtLjY0cycAS2V5IHZhbHVlICclLS4xOTJzJyB3YXMgbm90IGZvdW5kIGluIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnAERhdGEgZm9yIGNvbHVtbiAnJXMnIHRvbyBsb25nAFJlcGxpY2F0aW9uIGV2ZW50IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2hpbGUgcmVhZGluZyBmcm9tIG5ldHdvcmsuAFJlcGxpY2F0aW9uIGV2ZW50IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2hpbGUgcmVhZGluZyBmcm9tIGEgbG9nIGZpbGUuAE9wdGlvbiBiaW5sb2dfc3RtdF9jYWNoZV9zaXplICglbHUpIGlzIGdyZWF0ZXIgdGhhbiBtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfc3RtdF9jYWNoZV9zaXplIGVxdWFsIHRvIG1heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplLgBDYW4ndCB1cGRhdGUgdGFibGUgJyUtLjE5MnMnIHdoaWxlICclLS4xOTJzJyBpcyBiZWluZyBjcmVhdGVkLgBQQVJUSVRJT04gKCkgY2xhdXNlIG9uIG5vbiBwYXJ0aXRpb25lZCB0YWJsZQBGb3VuZCBhIHJvdyBub3QgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhcnRpdGlvbiBzZXQAcGFydGlvbiAnJS0uNjRzJyBuZWV4aXN0dWplAEZhaWx1cmUgd2hpbGUgY2hhbmdpbmcgdGhlIHR5cGUgb2YgcmVwbGljYXRpb24gcmVwb3NpdG9yeTogJXMuAFRoZSBjcmVhdGlvbiBvZiBzb21lIHRlbXBvcmFyeSB0YWJsZXMgY291bGQgbm90IGJlIHJvbGxlZCBiYWNrLgBTb21lIHRlbXBvcmFyeSB0YWJsZXMgd2VyZSBkcm9wcGVkLCBidXQgdGhlc2Ugb3BlcmF0aW9ucyBjb3VsZCBub3QgYmUgcm9sbGVkIGJhY2suACVzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gbXVsdGktdGhyZWFkZWQgcmVwbGljYSBtb2RlLiAlcwBUaGUgbnVtYmVyIG9mIG1vZGlmaWVkIGRhdGFiYXNlcyBleGNlZWRzIHRoZSBtYXhpbXVtICVkOyB0aGUgZGF0YWJhc2UgbmFtZXMgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcGxpY2F0aW9uIGV2ZW50IG1ldGFkYXRhLgBDYW5ub3QgZXhlY3V0ZSB0aGUgY3VycmVudCBldmVudCBncm91cCBpbiB0aGUgcGFyYWxsZWwgbW9kZS4gRW5jb3VudGVyZWQgZXZlbnQgJXMsIHJlbGF5LWxvZyBuYW1lICVzLCBwb3NpdGlvbiAlcyB3aGljaCBwcmV2ZW50cyBleGVjdXRpb24gb2YgdGhpcyBldmVudCBncm91cCBpbiBwYXJhbGxlbCBtb2RlLiBSZWFzb246ICVzLgAlcwBGVUxMVEVYVCBpbmRleCBpcyBub3Qgc3VwcG9ydGVkIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMuAEludmFsaWQgY29uZGl0aW9uIG51bWJlcgBTZW5kaW5nIHBhc3N3b3JkcyBpbiBwbGFpbiB0ZXh0IHdpdGhvdXQgU1NML1RMUyBpcyBleHRyZW1lbHkgaW5zZWN1cmUuAFN0b3JpbmcgTXlTUUwgdXNlciBuYW1lIG9yIHBhc3N3b3JkIGluZm9ybWF0aW9uIGluIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkgaXMgbm90IHNlY3VyZSBhbmQgaXMgdGhlcmVmb3JlIG5vdCByZWNvbW1lbmRlZC4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIHRoZSBVU0VSIGFuZCBQQVNTV09SRCBjb25uZWN0aW9uIG9wdGlvbnMgZm9yIFNUQVJUIFJFUExJQ0E7IHNlZSB0aGUgJ1NUQVJUIFJFUExJQ0EgU3ludGF4JyBpbiB0aGUgTXlTUUwgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgBGb3JlaWduIGtleSBjb25zdHJhaW50IGZvciB0YWJsZSAnJS4xOTJzJywgcmVjb3JkICclLS4xOTJzJyB3b3VsZCBsZWFkIHRvIGEgZHVwbGljYXRlIGVudHJ5IGluIHRhYmxlICclLjE5MnMnLCBrZXkgJyUuMTkycycARm9yZWlnbiBrZXkgY29uc3RyYWludCBmb3IgdGFibGUgJyUuMTkycycsIHJlY29yZCAnJS0uMTkycycgd291bGQgbGVhZCB0byBhIGR1cGxpY2F0ZSBlbnRyeSBpbiBhIGNoaWxkIHRhYmxlAFNldHRpbmcgYXV0aGVudGljYXRpb24gb3B0aW9ucyBpcyBub3QgcG9zc2libGUgd2hlbiBvbmx5IHRoZSBSZXBsaWNhIFNRTCBUaHJlYWQgaXMgYmVpbmcgc3RhcnRlZC4AVGhlIHRhYmxlIGRvZXMgbm90IGhhdmUgRlVMTFRFWFQgaW5kZXggdG8gc3VwcG9ydCB0aGlzIHF1ZXJ5AFRoZSBzeXN0ZW0gdmFyaWFibGUgJS4yMDBzIGNhbm5vdCBiZSBzZXQgaW4gc3RvcmVkIGZ1bmN0aW9ucyBvciB0cmlnZ2Vycy4AVGhlIHN5c3RlbSB2YXJpYWJsZSAlLjIwMHMgY2Fubm90IGJlIHNldCB3aGVuIHRoZXJlIGlzIGFuIG9uZ29pbmcgdHJhbnNhY3Rpb24uAFRoZSBzeXN0ZW0gdmFyaWFibGUgQEBTRVNTSU9OLkdUSURfTkVYVCBoYXMgdGhlIHZhbHVlICUuMjAwcywgd2hpY2ggaXMgbm90IGxpc3RlZCBpbiBAQFNFU1NJT04uR1RJRF9ORVhUX0xJU1QuAFRoZSBzeXN0ZW0gdmFyaWFibGUgQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgY2hhbmdlIGluc2lkZSBhIHRyYW5zYWN0aW9uLgBUaGUgc3RhdGVtZW50ICdTRVQgJS4yMDBzJyBjYW5ub3QgaW52b2tlIGEgc3RvcmVkIGZ1bmN0aW9uLgBUaGUgc3lzdGVtIHZhcmlhYmxlIEBAU0VTU0lPTi5HVElEX05FWFQgY2Fubm90IGJlICdBVVRPTUFUSUMnIHdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVF9MSVNUIGlzIG5vbi1OVUxMLgBTa2lwcGluZyB0cmFuc2FjdGlvbiAlLjIwMHMgYmVjYXVzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIGV4ZWN1dGVkIGFuZCBsb2dnZWQuAE1hbGZvcm1lZCBHVElEIHNldCBzcGVjaWZpY2F0aW9uICclLjIwMHMnLgBNYWxmb3JtZWQgR1RJRCBzZXQgZW5jb2RpbmcuAE1hbGZvcm1lZCBHVElEIHNwZWNpZmljYXRpb24gJyUuMjAwcycuAEltcG9zc2libGUgdG8gZ2VuZXJhdGUgR1RJRDogdGhlIGludGVnZXIgY29tcG9uZW50IHJlYWNoZWQgdGhlIG1heGltdW0gdmFsdWUuIFJlc3RhcnQgdGhlIHNlcnZlciB3aXRoIGEgbmV3IHNlcnZlcl91dWlkLgBQYXJhbWV0ZXJzIFNPVVJDRV9MT0dfRklMRSwgU09VUkNFX0xPR19QT1MsIFJFTEFZX0xPR19GSUxFIGFuZCBSRUxBWV9MT0dfUE9TIGNhbm5vdCBiZSBzZXQgd2hlbiBTT1VSQ0VfQVVUT19QT1NJVElPTiBpcyBhY3RpdmUuAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0FVVE9fUE9TSVRJT04gPSAxIGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRi4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50cyB3aXRoIGltcGxpY2l0IGNvbW1pdCBpbnNpZGUgYSB0cmFuc2FjdGlvbiB3aGVuIEBAU0VTU0lPTi5HVElEX05FWFQgPT0gJ1VVSUQ6TlVNQkVSJy4AR1RJRF9NT0RFID0gT04gcmVxdWlyZXMgRU5GT1JDRV9HVElEX0NPTlNJU1RFTkNZID0gT04uAEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OIG9yIE9OX1BFUk1JU1NJVkUgb3IgT0ZGX1BFUk1JU1NJVkUgcmVxdWlyZXMgLS1sb2ctYmluIGFuZCAtLWxvZy1yZXBsaWNhLXVwZGF0ZXMuAEBAU0VTU0lPTi5HVElEX05FWFQgY2Fubm90IGJlIHNldCB0byBVVUlEOk5VTUJFUiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRi4AQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgc2V0IHRvIEFOT05ZTU9VUyB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLgBAQFNFU1NJT04uR1RJRF9ORVhUX0xJU1QgY2Fubm90IGJlIHNldCB0byBhIG5vbi1OVUxMIHZhbHVlIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBGb3VuZCBhIEd0aWRfbG9nX2V2ZW50IHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogVXBkYXRlcyB0byBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgY2FuIG9ubHkgYmUgZG9uZSBpbiBlaXRoZXIgYXV0b2NvbW1pdHRlZCBzdGF0ZW1lbnRzIG9yIHNpbmdsZS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb25zLCBhbmQgbmV2ZXIgaW4gdGhlIHNhbWUgc3RhdGVtZW50IGFzIHVwZGF0ZXMgdG8gdHJhbnNhY3Rpb25hbCB0YWJsZXMuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEFCTEUgLi4uIFNFTEVDVC4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBURU1QT1JBUlkgVEFCTEUgYW5kIERST1AgVEVNUE9SQVJZIFRBQkxFIGNhbiBvbmx5IGJlIGV4ZWN1dGVkIG91dHNpZGUgdHJhbnNhY3Rpb25hbCBjb250ZXh0LiAgVGhlc2Ugc3RhdGVtZW50cyBhcmUgYWxzbyBub3QgYWxsb3dlZCBpbiBhIGZ1bmN0aW9uIG9yIHRyaWdnZXIgYmVjYXVzZSBmdW5jdGlvbnMgYW5kIHRyaWdnZXJzIGFyZSBhbHNvIGNvbnNpZGVyZWQgdG8gYmUgbXVsdGktc3RhdGVtZW50IHRyYW5zYWN0aW9ucy4AVGhlIHZhbHVlIG9mIEBAR0xPQkFMLkdUSURfTU9ERSBjYW4gb25seSBiZSBjaGFuZ2VkIG9uZSBzdGVwIGF0IGEgdGltZTogT0ZGIDwtPiBPRkZfUEVSTUlTU0lWRSA8LT4gT05fUEVSTUlTU0lWRSA8LT4gT04uIEFsc28gbm90ZSB0aGF0IHRoaXMgdmFsdWUgbXVzdCBiZSBzdGVwcGVkIHVwIG9yIGRvd24gc2ltdWx0YW5lb3VzbHkgb24gYWxsIHNlcnZlcnMuIFNlZSB0aGUgTWFudWFsIGZvciBpbnN0cnVjdGlvbnMuAENhbm5vdCByZXBsaWNhdGUgYmVjYXVzZSB0aGUgc291cmNlIHB1cmdlZCByZXF1aXJlZCBiaW5hcnkgbG9ncy4gUmVwbGljYXRlIHRoZSBtaXNzaW5nIHRyYW5zYWN0aW9ucyBmcm9tIGVsc2V3aGVyZSwgb3IgcHJvdmlzaW9uIGEgbmV3IHJlcGxpY2EgZnJvbSBiYWNrdXAuIENvbnNpZGVyIGluY3JlYXNpbmcgdGhlIHNvdXJjZSdzIGJpbmFyeSBsb2cgZXhwaXJhdGlvbiBwZXJpb2QuICVzAEBAU0VTU0lPTi5HVElEX05FWFQgY2Fubm90IGJlIGNoYW5nZWQgYnkgYSBjbGllbnQgdGhhdCBvd25zIGEgR1RJRC4gVGhlIGNsaWVudCBvd25zICVzLiBPd25lcnNoaXAgaXMgcmVsZWFzZWQgb24gQ09NTUlUIG9yIFJPTExCQUNLLgBVbmtub3duIEVYUExBSU4gZm9ybWF0IG5hbWU6ICclcycAQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50IGluIGEgUkVBRCBPTkxZIHRyYW5zYWN0aW9uLgBDb21tZW50IGZvciB0YWJsZSBwYXJ0aXRpb24gJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkAUmVwbGljYSBpcyBub3QgY29uZmlndXJlZCBvciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBwcm9wZXJseS4gWW91IG11c3QgYXQgbGVhc3Qgc2V0IC0tc2VydmVyLWlkIHRvIGVuYWJsZSBlaXRoZXIgYSBzb3VyY2Ugb3IgYSByZXBsaWNhLiBBZGRpdGlvbmFsIGVycm9yIG1lc3NhZ2VzIGNhbiBiZSBmb3VuZCBpbiB0aGUgTXlTUUwgZXJyb3IgbG9nLgBJbm5vREIgcHJlc2VudGx5IHN1cHBvcnRzIG9uZSBGVUxMVEVYVCBpbmRleCBjcmVhdGlvbiBhdCBhIHRpbWUAQ2Fubm90IGNyZWF0ZSBGVUxMVEVYVCBpbmRleCBvbiB0ZW1wb3JhcnkgSW5ub0RCIHRhYmxlAENvbHVtbiAnJS0uMTkycycgaXMgb2Ygd3JvbmcgdHlwZSBmb3IgYW4gSW5ub0RCIEZVTExURVhUIGluZGV4AEluZGV4ICclLS4xOTJzJyBpcyBvZiB3cm9uZyB0eXBlIGZvciBhbiBJbm5vREIgRlVMTFRFWFQgaW5kZXgAQ3JlYXRpbmcgaW5kZXggJyUtLjE5MnMnIHJlcXVpcmVkIG1vcmUgdGhhbiAnaW5ub2RiX29ubGluZV9hbHRlcl9sb2dfbWF4X3NpemUnIGJ5dGVzIG9mIG1vZGlmaWNhdGlvbiBsb2cuIFBsZWFzZSB0cnkgYWdhaW4uAFVua25vd24gQUxHT1JJVEhNICclcycAVW5rbm93biBMT0NLIHR5cGUgJyVzJwBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIGNhbm5vdCBiZSBleGVjdXRlZCB3aGVuIHRoZSByZXBsaWNhIHdhcyBzdG9wcGVkIHdpdGggYW4gZXJyb3Igb3Iga2lsbGVkIGluIE1UQSBtb2RlLiBDb25zaWRlciB1c2luZyBSRVNFVCBSRVBMSUNBIG9yIFNUQVJUIFJFUExJQ0EgVU5USUwuAENhbm5vdCByZWNvdmVyIGFmdGVyIFJFUExJQ0EgZXJyb3JlZCBvdXQgaW4gcGFyYWxsZWwgZXhlY3V0aW9uIG1vZGUuIEFkZGl0aW9uYWwgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBNeVNRTCBlcnJvciBsb2cuAENhbm5vdCBjbGVhbiB1cCB3b3JrZXIgaW5mbyB0YWJsZXMuIEFkZGl0aW9uYWwgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBNeVNRTCBlcnJvciBsb2cuAENvbHVtbiBjb3VudCBvZiAlcy4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkAFJlcGxpY2EgbXVzdCBzaWxlbnRseSByZXRyeSBjdXJyZW50IHRyYW5zYWN0aW9uAFRoZXJlIGlzIGEgZm9yZWlnbiBrZXkgY2hlY2sgcnVubmluZyBvbiB0YWJsZSAnJS0uMTkycycuIENhbm5vdCBkaXNjYXJkIHRoZSB0YWJsZS4AU2NoZW1hIG1pc21hdGNoICglcykAVGFibGUgJyUtLjE5MnMnIGluIHN5c3RlbSB0YWJsZXNwYWNlAElPIFJlYWQgZXJyb3I6ICglbHUsICVzKSAlcwBJTyBXcml0ZSBlcnJvcjogKCVsdSwgJXMpICVzAFRhYmxlc3BhY2UgaXMgbWlzc2luZyBmb3IgdGFibGUgJXMuAFRhYmxlc3BhY2UgJyUtLjE5MnMnIGV4aXN0cy4AVGFibGVzcGFjZSBoYXMgYmVlbiBkaXNjYXJkZWQgZm9yIHRhYmxlICclLS4xOTJzJwBJbnRlcm5hbCBlcnJvcjogJXMAQUxURVIgVEFCTEUgJS0uMTkycyBJTVBPUlQgVEFCTEVTUEFDRSBmYWlsZWQgd2l0aCBlcnJvciAlbHUgOiAnJXMnAEluZGV4IGNvcnJ1cHQ6ICVzAEludmFsaWQgZGlzcGxheSB3aWR0aC4gVXNlIFlFQVIgaW5zdGVhZC4AWW91ciBwYXNzd29yZCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVudHMAWW91IG11c3QgcmVzZXQgeW91ciBwYXNzd29yZCB1c2luZyBBTFRFUiBVU0VSIHN0YXRlbWVudCBiZWZvcmUgZXhlY3V0aW5nIHRoaXMgc3RhdGVtZW50LgBGYWlsZWQgdG8gYWRkIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50LiBNaXNzaW5nIGluZGV4IGZvciBjb25zdHJhaW50ICclcycgaW4gdGhlIGZvcmVpZ24gdGFibGUgJyVzJwBGYWlsZWQgdG8gYWRkIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50LiBNaXNzaW5nIGluZGV4IGZvciBjb25zdHJhaW50ICclcycgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUgJyVzJwBGYWlsZWQgdG8gYWRkIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclcycgdG8gc3lzdGVtIHRhYmxlcwBGYWlsZWQgdG8gb3BlbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSAnJXMnAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGFibGUgJyVzJy4gSW5jb3JyZWN0IG9wdGlvbnMgaW4gRk9SRUlHTiBLRVkgY29uc3RyYWludCAnJXMnAER1cGxpY2F0ZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG5hbWUgJyVzJwBUaGUgcGFzc3dvcmQgaGFzaCBkb2Vzbid0IGhhdmUgdGhlIGV4cGVjdGVkIGZvcm1hdC4AQ2Fubm90IGRyb3AgY29sdW1uICclLS4xOTJzJzogbmVlZGVkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycAQ2Fubm90IGRyb3AgY29sdW1uICclLS4xOTJzJzogbmVlZGVkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycgb2YgdGFibGUgJyUtLjE5MnMnAENvbHVtbiAnJS0uMTkycycgY2Fubm90IGJlIE5PVCBOVUxMOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyBTRVQgTlVMTABEdXBsaWNhdGUgaW5kZXggJyUtLjY0cycgZGVmaW5lZCBvbiB0aGUgdGFibGUgJyUtLjY0cy4lLS42NHMnLiBUaGlzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgZGlzYWxsb3dlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBDYW5ub3QgY2hhbmdlIGNvbHVtbiAnJS0uMTkycyc6IHVzZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJwBDYW5ub3QgY2hhbmdlIGNvbHVtbiAnJS0uMTkycyc6IHVzZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyBvZiB0YWJsZSAnJS0uMTkycycAQ2Fubm90IGRlbGV0ZSByb3dzIGZyb20gdGFibGUgd2hpY2ggaXMgcGFyZW50IGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycgb2YgdGFibGUgJyUtLjE5MnMnAE1hbGZvcm1lZCBjb21tdW5pY2F0aW9uIHBhY2tldC4AUnVubmluZyBpbiByZWFkLW9ubHkgbW9kZQBXaGVuIEBAU0VTU0lPTi5HVElEX05FWFQgaXMgc2V0IHRvIGEgR1RJRCwgeW91IG11c3QgZXhwbGljaXRseSBzZXQgaXQgdG8gYSBkaWZmZXJlbnQgdmFsdWUgYWZ0ZXIgYSBDT01NSVQgb3IgUk9MTEJBQ0suIFBsZWFzZSBjaGVjayBHVElEX05FWFQgdmFyaWFibGUgbWFudWFsIHBhZ2UgZm9yIGRldGFpbGVkIGV4cGxhbmF0aW9uLiBDdXJyZW50IEBAU0VTU0lPTi5HVElEX05FWFQgaXMgJyVzJy4AVGhlIHN5c3RlbSB2YXJpYWJsZSAlLjIwMHMgY2Fubm90IGJlIHNldCBpbiBzdG9yZWQgcHJvY2VkdXJlcy4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgY2FuIG9ubHkgYmUgc2V0IHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04uAEBAR0xPQkFMLkdUSURfUFVSR0VEIGNhbiBvbmx5IGJlIHNldCB3aGVuIEBAR0xPQkFMLkdUSURfRVhFQ1VURUQgaXMgZW1wdHkuAEBAR0xPQkFMLkdUSURfUFVSR0VEIGNhbiBvbmx5IGJlIHNldCB3aGVuIHRoZXJlIGFyZSBubyBvbmdvaW5nIHRyYW5zYWN0aW9ucyAobm90IGV2ZW4gaW4gb3RoZXIgY2xpZW50cykuAEBAR0xPQkFMLkdUSURfUFVSR0VEIHdhcyBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnLgBAQEdMT0JBTC5HVElEX0VYRUNVVEVEIHdhcyBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBCSU5MT0dfRk9STUFUID0gU1RBVEVNRU5ULCBhbmQgYm90aCByZXBsaWNhdGVkIGFuZCBub24gcmVwbGljYXRlZCB0YWJsZXMgYXJlIHdyaXR0ZW4gdG8uACVzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgb3BlcmF0aW9uLiBUcnkgJXMuACVzIGlzIG5vdCBzdXBwb3J0ZWQuIFJlYXNvbjogJXMuIFRyeSAlcy4AQ09QWSBhbGdvcml0aG0gcmVxdWlyZXMgYSBsb2NrAFBhcnRpdGlvbiBzcGVjaWZpYyBvcGVyYXRpb25zIGRvIG5vdCB5ZXQgc3VwcG9ydCBMT0NLL0FMR09SSVRITQBDb2x1bW5zIHBhcnRpY2lwYXRpbmcgaW4gYSBmb3JlaWduIGtleSBhcmUgcmVuYW1lZABDYW5ub3QgY2hhbmdlIGNvbHVtbiB0eXBlIElOUExBQ0UAQWRkaW5nIGZvcmVpZ24ga2V5cyBuZWVkcyBmb3JlaWduX2tleV9jaGVja3M9T0ZGAENyZWF0aW5nIHVuaXF1ZSBpbmRleGVzIHdpdGggSUdOT1JFIHJlcXVpcmVzIENPUFkgYWxnb3JpdGhtIHRvIHJlbW92ZSBkdXBsaWNhdGUgcm93cwBEcm9wcGluZyBhIHByaW1hcnkga2V5IGlzIG5vdCBhbGxvd2VkIHdpdGhvdXQgYWxzbyBhZGRpbmcgYSBuZXcgcHJpbWFyeSBrZXkAQWRkaW5nIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbiByZXF1aXJlcyBhIGxvY2sAQ2Fubm90IHJlcGxhY2UgaGlkZGVuIEZUU19ET0NfSUQgd2l0aCBhIHVzZXItdmlzaWJsZSBvbmUAQ2Fubm90IGRyb3Agb3IgcmVuYW1lIEZUU19ET0NfSUQARnVsbHRleHQgaW5kZXggY3JlYXRpb24gcmVxdWlyZXMgYSBsb2NrAHNxbF9yZXBsaWNhX3NraXBfY291bnRlciBjYW4gbm90IGJlIHNldCB3aGVuIHRoZSBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLiBJbnN0ZWFkLCBmb3IgZWFjaCB0cmFuc2FjdGlvbiB0aGF0IHlvdSB3YW50IHRvIHNraXAsIGdlbmVyYXRlIGFuIGVtcHR5IHRyYW5zYWN0aW9uIHdpdGggdGhlIHNhbWUgR1RJRCBhcyB0aGUgdHJhbnNhY3Rpb24AWmR2b2plbsO9IGtsw63EjSAoxI3DrXNsbyBrbMOtxI1lICclLS4xOTJzJykATG9uZyBkYXRhYmFzZSBuYW1lIGFuZCBpZGVudGlmaWVyIGZvciBvYmplY3QgcmVzdWx0ZWQgaW4gcGF0aCBsZW5ndGggZXhjZWVkaW5nICVkIGNoYXJhY3RlcnMuIFBhdGg6ICclcycuAGNhbm5vdCBzaWxlbnRseSBjb252ZXJ0IE5VTEwgdmFsdWVzLCBhcyByZXF1aXJlZCBpbiB0aGlzIFNRTF9NT0RFAFlvdXIgcGFzc3dvcmQgaGFzIGV4cGlyZWQuIFRvIGxvZyBpbiB5b3UgbXVzdCBjaGFuZ2UgaXQgdXNpbmcgYSBjbGllbnQgdGhhdCBzdXBwb3J0cyBleHBpcmVkIHBhc3N3b3Jkcy4ARm91bmQgYSByb3cgaW4gd3JvbmcgcGFydGl0aW9uICVzAENhbm5vdCBzY2hlZHVsZSBldmVudCAlcywgcmVsYXktbG9nIG5hbWUgJXMsIHBvc2l0aW9uICVzIHRvIFdvcmtlciB0aHJlYWQgYmVjYXVzZSBpdHMgc2l6ZSAlbHUgZXhjZWVkcyAlbHUgb2YgcmVwbGljYV9wZW5kaW5nX2pvYnNfc2l6ZV9tYXguAENhbm5vdCBDUkVBVEUgRlVMTFRFWFQgSU5ERVggV0lUSCBQQVJTRVIgb24gSW5ub0RCIHRhYmxlAFRoZSBiaW5hcnkgbG9nIGZpbGUgJyVzJyBpcyBsb2dpY2FsbHkgY29ycnVwdGVkOiAlcwBmaWxlICVzIHdhcyBub3QgcHVyZ2VkIGJlY2F1c2UgaXQgd2FzIGJlaW5nIHJlYWQgYnkgJWQgdGhyZWFkKHMpLCBwdXJnZWQgb25seSAlZCBvdXQgb2YgJWQgZmlsZXMuAGZpbGUgJXMgd2FzIG5vdCBwdXJnZWQgYmVjYXVzZSBpdCBpcyB0aGUgYWN0aXZlIGxvZyBmaWxlLgBBdXRvLWluY3JlbWVudCB2YWx1ZSBpbiBVUERBVEUgY29uZmxpY3RzIHdpdGggaW50ZXJuYWxseSBnZW5lcmF0ZWQgdmFsdWVzAFJvdyBldmVudHMgYXJlIG5vdCBsb2dnZWQgZm9yICVzIHN0YXRlbWVudHMgdGhhdCBtb2RpZnkgQkxBQ0tIT0xFIHRhYmxlcyBpbiByb3cgZm9ybWF0LiBUYWJsZShzKTogJyUtLjE5MnMnAFJlcGxpY2EgZmFpbGVkIHRvIGluaXRpYWxpemUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0aGUgcmVwb3NpdG9yeQBSZXBsaWNhIGZhaWxlZCB0byBpbml0aWFsaXplIGFwcGxpZXIgbWV0YWRhdGEgc3RydWN0dXJlIGZyb20gdGhlIHJlcG9zaXRvcnkAQWNjZXNzIGRlbmllZCB0cnlpbmcgdG8gY2hhbmdlIHRvIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycgKHVzaW5nIHBhc3N3b3JkOiAlcykuIERpc2Nvbm5lY3RpbmcuAElubm9EQiBpcyBpbiByZWFkIG9ubHkgbW9kZS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgU1FMIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsLCB0aHJlYWQgaXMgYnVzeSwgU1FMIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBTVE9QIFJFUExJQ0EgY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogUmVwbGljYSBJTyB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIElPIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBPcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZC4gVGhlIHRhYmxlICclLS42NHMuJS0uNjRzJyBpcyBtaXNzaW5nLCBjb3JydXB0IG9yIGNvbnRhaW5zIGJhZCBkYXRhLgBUZW1wb3JhcnkgZmlsZSB3cml0ZSBmYWlsdXJlLgBVcGdyYWRlIGluZGV4IG5hbWUgZmFpbGVkLCBwbGVhc2UgdXNlIGNyZWF0ZSBpbmRleChhbHRlciB0YWJsZSkgYWxnb3JpdGhtIGNvcHkgdG8gcmVidWlsZCBpbmRleC4AVElNRS9USU1FU1RBTVAvREFURVRJTUUgY29sdW1ucyBvZiBvbGQgZm9ybWF0IGhhdmUgYmVlbiB1cGdyYWRlZCB0byB0aGUgbmV3IGZvcm1hdC4AT3BlcmF0aW9uIG5vdCBhbGxvd2VkIHdoZW4gaW5ub2RiX2ZvcmNlX3JlY292ZXJ5ID4gMC4AVGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciBzdXBwbGllZCB0byAlcyBpcyB0b28gc2hvcnQuIE11c3QgYmUgYXQgbGVhc3QgJWQgYnl0ZXMgbG9uZwBQbHVnaW4gJyVzJyBjYW5ub3QgYmUgdW5pbnN0YWxsZWQgbm93LiAlcwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQgYmVjYXVzZSBpdCBuZWVkcyB0byBiZSB3cml0dGVuIHRvIHRoZSBiaW5hcnkgbG9nIGFzIG11bHRpcGxlIHN0YXRlbWVudHMsIGFuZCB0aGlzIGlzIG5vdCBhbGxvd2VkIHdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCA9PSAnVVVJRDpOVU1CRVInLgBSZXBsaWNhIGhhcyBtb3JlIEdUSURzIHRoYW4gdGhlIHNvdXJjZSBoYXMsIHVzaW5nIHRoZSBzb3VyY2UncyBTRVJWRVJfVVVJRC4gVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgdGhlIGxhc3QgYmluYXJ5IGxvZyBmaWxlIHdhcyB0cnVuY2F0ZWQgb3IgbG9zdCwgZS5nLiwgYWZ0ZXIgYSBwb3dlciBmYWlsdXJlIHdoZW4gc3luY19iaW5sb2cgIT0gMS4gVGhlIHNvdXJjZSBtYXkgaGF2ZSByb2xsZWQgYmFjayB0cmFuc2FjdGlvbnMgdGhhdCB3ZXJlIGFscmVhZHkgcmVwbGljYXRlZCB0byB0aGUgcmVwbGljYS4gUmVwbGljYXRlIGFueSB0cmFuc2FjdGlvbnMgdGhhdCBzb3VyY2UgaGFzIHJvbGxlZCBiYWNrIGZyb20gcmVwbGljYSB0byBzb3VyY2UsIGFuZC9vciBjb21taXQgZW1wdHkgdHJhbnNhY3Rpb25zIG9uIHNvdXJjZSB0byBhY2NvdW50IGZvciB0cmFuc2FjdGlvbnMgdGhhdCBoYXZlIGJlZW4gY29tbWl0dGVkIG9uIHNvdXJjZSBidXQgYXJlIG5vdCBpbmNsdWRlZCBpbiBHVElEX0VYRUNVVEVELgBUaGUgdGFibGUgJyVzLiVzJyBkb2VzIG5vdCBoYXZlIHRoZSBuZWNlc3Nhcnkga2V5KHMpIGRlZmluZWQgb24gaXQuIFBsZWFzZSBjaGVjayB0aGUgdGFibGUgZGVmaW5pdGlvbiBhbmQgY3JlYXRlIGluZGV4KHMpIGFjY29yZGluZ2x5LgBTZXR0aW5nIG5hbWVkX3BpcGVfZnVsbF9hY2Nlc3NfZ3JvdXA9JyVzJyBpcyBpbnNlY3VyZS4gQ29uc2lkZXIgdXNpbmcgYSBXaW5kb3dzIGdyb3VwIHdpdGggZmV3ZXIgbWVtYmVycy4ARmlsZSAlcyBpcyBjb3JydXB0ZWQAUXVlcnkgcGFydGlhbGx5IGNvbXBsZXRlZCBvbiB0aGUgc291cmNlIChlcnJvciBvbiBzb3VyY2U6ICVkKSBhbmQgd2FzIGFib3J0ZWQuIFRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgeW91ciBzb3VyY2UgaXMgaW5jb25zaXN0ZW50IGF0IHRoaXMgcG9pbnQuIElmIHlvdSBhcmUgc3VyZSB0aGF0IHlvdXIgc291cmNlIGlzIG9rLCBydW4gdGhpcyBxdWVyeSBtYW51YWxseSBvbiB0aGUgcmVwbGljYSBhbmQgdGhlbiByZXN0YXJ0IHRoZSByZXBsaWNhIHdpdGggU0VUIEdMT0JBTCBTUUxfUkVQTElDQV9TS0lQX0NPVU5URVI9MTsgU1RBUlQgUkVQTElDQTsuIFF1ZXJ5OiclcycAUXVlcnkgY2F1c2VkIGRpZmZlcmVudCBlcnJvcnMgb24gc291cmNlIGFuZCByZXBsaWNhLiBFcnJvciBvbiBzb3VyY2U6IG1lc3NhZ2UgKGZvcm1hdCk9JyVzJyBlcnJvciBjb2RlPSVkOyBFcnJvciBvbiByZXBsaWNhOmFjdHVhbCBtZXNzYWdlPSclcycsIGVycm9yIGNvZGU9JWQuIERlZmF1bHQgZGF0YWJhc2U6JyVzJy4gUXVlcnk6JyVzJwBTdG9yYWdlIGVuZ2luZSBmb3IgdGFibGUgJyVzJy4nJXMnIGlzIG5vdCBsb2FkZWQuAEdFVCBTVEFDS0VEIERJQUdOT1NUSUNTIHdoZW4gaGFuZGxlciBub3QgYWN0aXZlACVzIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIFRoZSBzdGF0ZW1lbnQgd2FzIGNvbnZlcnRlZCB0byAlcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBmdWxsdGV4dCBwYXJzZXIgcGx1Z2luIHdoaWNoIG1heSBub3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIG9uIHRoZSByZXBsaWNhLgBDYW5ub3QgRElTQ0FSRC9JTVBPUlQgdGFibGVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGVtcG9yYXJ5IHRhYmxlAEZvcmVpZ24ga2V5IGNhc2NhZGUgZGVsZXRlL3VwZGF0ZSBleGNlZWRzIG1heCBkZXB0aCBvZiAlZC4AVGhlIGNvbHVtbiBjb3VudCBvZiAlcy4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBDcmVhdGVkIHdpdGggTXlTUUwgJWQsIG5vdyBydW5uaW5nICVkLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAFRyaWdnZXIgJXMuJXMuJXMgZG9lcyBub3QgaGF2ZSBDUkVBVEVEIGF0dHJpYnV0ZS4AUmVmZXJlbmNlZCB0cmlnZ2VyICclcycgZm9yIHRoZSBnaXZlbiBhY3Rpb24gdGltZSBhbmQgZXZlbnQgdHlwZSBkb2VzIG5vdCBleGlzdC4ARVhQTEFJTiBGT1IgQ09OTkVDVElPTiBjb21tYW5kIGlzIHN1cHBvcnRlZCBvbmx5IGZvciBTRUxFQ1QvVVBEQVRFL0lOU0VSVC9ERUxFVEUvUkVQTEFDRQBJbnZhbGlkIHNpemUgZm9yIGNvbHVtbiAnJS0uMTkycycuAFRhYmxlIHN0b3JhZ2UgZW5naW5lICclLS42NHMnIGZvdW5kIHJlcXVpcmVkIGNyZWF0ZSBvcHRpb24gbWlzc2luZwBPdXQgb2YgbWVtb3J5IGluIHN0b3JhZ2UgZW5naW5lICclLS42NHMnLgBUaGUgcGFzc3dvcmQgZm9yIGFub255bW91cyB1c2VyIGNhbm5vdCBiZSBleHBpcmVkLgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdpdGggYSBydW5uaW5nIHJlcGxpY2Egc3FsIHRocmVhZDsgcnVuIFNUT1AgUkVQTElDQSBTUUxfVEhSRUFEIGZpcnN0AENhbm5vdCBjcmVhdGUgRlVMTFRFWFQgaW5kZXggb24gbWF0ZXJpYWxpemVkIHN1YnF1ZXJ5AFVuZG8gTG9nIGVycm9yOiAlcwBJbnZhbGlkIGFyZ3VtZW50IGZvciBsb2dhcml0aG0AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIGEgcnVubmluZyByZXBsaWNhIGlvIHRocmVhZDsgcnVuIFNUT1AgUkVQTElDQSBJT19USFJFQUQgRk9SIENIQU5ORUwgJyVzJyBmaXJzdC4AVGhpcyBvcGVyYXRpb24gbWF5IG5vdCBiZSBzYWZlIHdoZW4gdGhlIHJlcGxpY2EgaGFzIHRlbXBvcmFyeSB0YWJsZXMuIFRoZSB0YWJsZXMgd2lsbCBiZSBrZXB0IG9wZW4gdW50aWwgdGhlIHNlcnZlciByZXN0YXJ0cyBvciB1bnRpbCB0aGUgdGFibGVzIGFyZSBkZWxldGVkIGJ5IGFueSByZXBsaWNhdGVkIERST1Agc3RhdGVtZW50LiBTdWdnZXN0IHRvIHdhaXQgdW50aWwgcmVwbGljYV9vcGVuX3RlbXBfdGFibGVzID0gMC4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyB3aXRoIGEgU09VUkNFX0xPR19GSUxFIGNsYXVzZSBidXQgbm8gU09VUkNFX0xPR19QT1MgY2xhdXNlIG1heSBub3QgYmUgc2FmZS4gVGhlIG9sZCBwb3NpdGlvbiB2YWx1ZSBtYXkgbm90IGJlIHZhbGlkIGZvciB0aGUgbmV3IGJpbmFyeSBsb2cgZmlsZS4AUXVlcnkgZXhlY3V0aW9uIHdhcyBpbnRlcnJ1cHRlZCwgbWF4aW11bSBzdGF0ZW1lbnQgZXhlY3V0aW9uIHRpbWUgZXhjZWVkZWQAU2VsZWN0IGlzIG5vdCBhIHJlYWQgb25seSBzdGF0ZW1lbnQsIGRpc2FibGluZyB0aW1lcgBEdXBsaWNhdGUgZW50cnkgJyUtLjE5MnMnLgAnJXMnIG1vZGUgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LiBVc2UgU1RSSUNUX0FMTF9UQUJMRVMgb3IgU1RSSUNUX1RSQU5TX1RBQkxFUyBpbnN0ZWFkLgBFeHByZXNzaW9uICMldSBvZiBPUkRFUiBCWSBjb250YWlucyBhZ2dyZWdhdGUgZnVuY3Rpb24gYW5kIGFwcGxpZXMgdG8gYSBVTklPTiwgRVhDRVBUIG9yIElOVEVSU0VDVABFeHByZXNzaW9uICMldSBvZiBPUkRFUiBCWSBjb250YWlucyBhZ2dyZWdhdGUgZnVuY3Rpb24gYW5kIGFwcGxpZXMgdG8gdGhlIHJlc3VsdCBvZiBhIG5vbi1hZ2dyZWdhdGVkIHF1ZXJ5AFJlcGxpY2Egd29ya2VyIGhhcyBzdG9wcGVkIGFmdGVyIGF0IGxlYXN0IG9uZSBwcmV2aW91cyB3b3JrZXIgZW5jb3VudGVyZWQgYW4gZXJyb3Igd2hlbiByZXBsaWNhLXByZXNlcnZlLWNvbW1pdC1vcmRlciB3YXMgZW5hYmxlZC4gVG8gcHJlc2VydmUgY29tbWl0IG9yZGVyLCB0aGUgbGFzdCB0cmFuc2FjdGlvbiBleGVjdXRlZCBieSB0aGlzIHRocmVhZCBoYXMgbm90IGJlZW4gY29tbWl0dGVkLiBXaGVuIHJlc3RhcnRpbmcgdGhlIHJlcGxpY2EgYWZ0ZXIgZml4aW5nIGFueSBmYWlsZWQgdGhyZWFkcywgeW91IHNob3VsZCBmaXggdGhpcyB3b3JrZXIgYXMgd2VsbC4AcmVwbGljYV9wcmVzZXJ2ZV9jb21taXRfb3JkZXIgaXMgbm90IHN1cHBvcnRlZCAlcy4AVGhlIHNlcnZlciBpcyBjdXJyZW50bHkgaW4gb2ZmbGluZSBtb2RlAEJpbmFyeSBnZW9tZXRyeSBmdW5jdGlvbiAlcyBnaXZlbiB0d28gZ2VvbWV0cmllcyBvZiBkaWZmZXJlbnQgc3JpZHM6ICV1IGFuZCAldSwgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBpZGVudGljYWwuAENhbGxpbmcgZ2VvbWV0cnkgZnVuY3Rpb24gJXMgd2l0aCB1bnN1cHBvcnRlZCB0eXBlcyBvZiBhcmd1bWVudHMuAFVua25vd24gR0lTIGVycm9yIG9jY3VycmVkIGluIGZ1bmN0aW9uICVzLgBVbmtub3duIGV4Y2VwdGlvbiBjYXVnaHQgaW4gR0lTIGZ1bmN0aW9uICVzLgBJbnZhbGlkIEdJUyBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzLgBUaGUgZ2VvbWV0cnkgaGFzIG5vIGRhdGEgaW4gZnVuY3Rpb24gJXMuAFVuYWJsZSB0byBjYWxjdWxhdGUgY2VudHJvaWQgYmVjYXVzZSBnZW9tZXRyeSBpcyBlbXB0eSBpbiBmdW5jdGlvbiAlcy4AR2VvbWV0cnkgb3ZlcmxheSBjYWxjdWxhdGlvbiBlcnJvcjogZ2VvbWV0cnkgZGF0YSBpcyBpbnZhbGlkIGluIGZ1bmN0aW9uICVzLgBHZW9tZXRyeSB0dXJuIGluZm8gY2FsY3VsYXRpb24gZXJyb3I6IGdlb21ldHJ5IGRhdGEgaXMgaW52YWxpZCBpbiBmdW5jdGlvbiAlcy4AQW5hbHlzaXMgcHJvY2VkdXJlcyBvZiBpbnRlcnNlY3Rpb24gcG9pbnRzIGludGVycnVwdGVkIHVuZXhwZWN0ZWRseSBpbiBmdW5jdGlvbiAlcy4AVW5rbm93biBleGNlcHRpb24gdGhyb3duIGluIGZ1bmN0aW9uICVzLgBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ARG9tYWluIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBMZW5ndGggZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAEludmFsaWQgYXJndW1lbnQgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAE91dCBvZiByYW5nZSBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AT3ZlcmZsb3cgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAFJhbmdlIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBVbmRlcmZsb3cgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAExvZ2ljIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBSdW50aW1lIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBVbmtub3duIGV4Y2VwdGlvbjogJS0uMzg0cyBpbiBmdW5jdGlvbiAlcy4AR2VvbWV0cnkgYnl0ZSBzdHJpbmcgbXVzdCBiZSBsaXR0bGUgZW5kaWFuLgBUaGUgcGFzc3dvcmQgcHJvdmlkZWQgZm9yIHRoZSByZXBsaWNhdGlvbiB1c2VyIGV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIDMyIGNoYXJhY3RlcnMASW5jb3JyZWN0IHVzZXItbGV2ZWwgbG9jayBuYW1lICclLS4xOTJzJy4gVGhlIG5hbWUgaXMgZW1wdHksIE5VTEwsIG9yIGNhbiBub3QgYmUgZXhwcmVzc2VkIGluIHRoZSBjdXJyZW50IGNoYXJhY3Rlci1zZXQuAERlYWRsb2NrIGZvdW5kIHdoZW4gdHJ5aW5nIHRvIGdldCB1c2VyLWxldmVsIGxvY2s7IHRyeSByb2xsaW5nIGJhY2sgdHJhbnNhY3Rpb24vcmVsZWFzaW5nIGxvY2tzIGFuZCByZXN0YXJ0aW5nIGxvY2sgYWNxdWlzaXRpb24uAFJFUExBQ0UgY2Fubm90IGJlIGV4ZWN1dGVkIGFzIGl0IHJlcXVpcmVzIGRlbGV0aW5nIHJvd3MgdGhhdCBhcmUgbm90IGluIHRoZSB2aWV3AERvIG5vdCBzdXBwb3J0IG9ubGluZSBvcGVyYXRpb24gb24gdGFibGUgd2l0aCBHSVMgaW5kZXgAVXNlciB2YXJpYWJsZSBuYW1lICclLS4xMDBzJyBpcyBpbGxlZ2FsAENhbm5vdCAlcyB3aGVuIEdUSURfTU9ERSA9IE9GRi4AQ2Fubm90ICVzIGZyb20gYSByZXBsaWNhIHRocmVhZC4ASW5jb3JyZWN0IHR5cGUgZm9yIGFyZ3VtZW50ICVzIGluIGZ1bmN0aW9uICVzLgBFeHByZXNzaW9uICMldSBvZiBPUkRFUiBCWSBjbGF1c2UgaXMgbm90IGluIFNFTEVDVCBsaXN0LCByZWZlcmVuY2VzIGNvbHVtbiAnJS0uMTkycycgd2hpY2ggaXMgbm90IGluIFNFTEVDVCBsaXN0OyB0aGlzIGlzIGluY29tcGF0aWJsZSB3aXRoICVzAEV4cHJlc3Npb24gIyV1IG9mIE9SREVSIEJZIGNsYXVzZSBpcyBub3QgaW4gU0VMRUNUIGxpc3QsIGNvbnRhaW5zIGFnZ3JlZ2F0ZSBmdW5jdGlvbjsgdGhpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAlcwBTdXBwbGllZCBmaWx0ZXIgbGlzdCBjb250YWlucyBhIHZhbHVlIHdoaWNoIGlzIG5vdCBpbiB0aGUgcmVxdWlyZWQgZm9ybWF0ICdkYl9wYXR0ZXJuLnRhYmxlX3BhdHRlcm4nAE9LIHBhY2tldCB0b28gbGFyZ2UASW52YWxpZCBKU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6ICVzAEludmFsaWQgR2VvSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiBNaXNzaW5nIHJlcXVpcmVkIG1lbWJlciAnJXMnAEludmFsaWQgR2VvSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiBNZW1iZXIgJyVzJyBtdXN0IGJlIG9mIHR5cGUgJyVzJwBJbnZhbGlkIEdlb0pTT04gZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlcwBVbnN1cHBvcnRlZCBudW1iZXIgb2YgY29vcmRpbmF0ZSBkaW1lbnNpb25zIGluIGZ1bmN0aW9uICVzOiBGb3VuZCAldSwgZXhwZWN0ZWQgJXUAUmVwbGljYSBjaGFubmVsICclcycgZG9lcyBub3QgZXhpc3QuAEEgcmVwbGljYSBjaGFubmVsICclcycgYWxyZWFkeSBleGlzdHMgZm9yIHRoZSBnaXZlbiBob3N0IGFuZCBwb3J0IGNvbWJpbmF0aW9uLgBDb3VsZG4ndCBjcmVhdGUgY2hhbm5lbDogQ2hhbm5lbCBuYW1lIGlzIGVpdGhlciBpbnZhbGlkIG9yIHRvbyBsb25nLgBUbyBoYXZlIG11bHRpcGxlIGNoYW5uZWxzLCByZXBvc2l0b3J5IGNhbm5vdCBiZSBvZiB0eXBlIEZJTEU7IFBsZWFzZSBjaGVjayB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIGFuZCBjb252ZXJ0IHRoZW0gdG8gVEFCTEUuAENhbm5vdCBkZWxldGUgcmVwbGljYSBpbmZvIG9iamVjdHMgZm9yIGNoYW5uZWwgJyVzJy4ATXVsdGlwbGUgY2hhbm5lbHMgZXhpc3Qgb24gdGhlIHJlcGxpY2EuIFBsZWFzZSBwcm92aWRlIGNoYW5uZWwgbmFtZSBhcyBhbiBhcmd1bWVudC4ATWF4aW11bSBudW1iZXIgb2YgcmVwbGljYXRpb24gY2hhbm5lbHMgYWxsb3dlZCBleGNlZWRlZC4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIHJ1bm5pbmcgcmVwbGljYXRpb24gdGhyZWFkczsgcnVuIFNUT1AgUkVQTElDQSBGT1IgQ0hBTk5FTCAnJXMnIGZpcnN0AFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIHJ1bm5pbmcgcmVwbGljYXRpb24gdGhyZWFkczsgY29uZmlndXJlIHJlcGxpY2EgYW5kIHJ1biBTVEFSVCBSRVBMSUNBIEZPUiBDSEFOTkVMICclcycAUmVwbGljYXRpb24gdGhyZWFkKHMpIGZvciBjaGFubmVsICclcycgYXJlIGFscmVhZHkgcnVubm5pbmcuAFJlcGxpY2F0aW9uIHRocmVhZChzKSBmb3IgY2hhbm5lbCAnJXMnIGFyZSBhbHJlYWR5IHN0b3BwZWQuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2l0aCBhIHJ1bm5pbmcgcmVwbGljYSBzcWwgdGhyZWFkOyBydW4gU1RPUCBSRVBMSUNBIFNRTF9USFJFQUQgRk9SIENIQU5ORUwgJyVzJyBmaXJzdC4AV2hlbiBzcWxfcmVwbGljYV9za2lwX2NvdW50ZXIgPiAwLCBpdCBpcyBub3QgYWxsb3dlZCB0byBzdGFydCBtb3JlIHRoYW4gb25lIFNRTCB0aHJlYWQgYnkgdXNpbmcgJ1NUQVJUIFJFUExJQ0EgW1NRTF9USFJFQURdJy4gVmFsdWUgb2Ygc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyIGNhbiBvbmx5IGJlIHVzZWQgYnkgb25lIFNRTCB0aHJlYWQgYXQgYSB0aW1lLiBQbGVhc2UgdXNlICdTVEFSVCBSRVBMSUNBIFtTUUxfVEhSRUFEXSBGT1IgQ0hBTk5FTCcgdG8gc3RhcnQgdGhlIFNRTCB0aHJlYWQgd2hpY2ggd2lsbCB1c2UgdGhlIHZhbHVlIG9mIHNxbF9yZXBsaWNhX3NraXBfY291bnRlci4ARXhwcmVzc2lvbiAjJXUgb2YgJXMgaXMgbm90IGluIEdST1VQIEJZIGNsYXVzZSBhbmQgY29udGFpbnMgbm9uYWdncmVnYXRlZCBjb2x1bW4gJyUtLjE5MnMnIHdoaWNoIGlzIG5vdCBmdW5jdGlvbmFsbHkgZGVwZW5kZW50IG9uIGNvbHVtbnMgaW4gR1JPVVAgQlkgY2xhdXNlOyB0aGlzIGlzIGluY29tcGF0aWJsZSB3aXRoIHNxbF9tb2RlPW9ubHlfZnVsbF9ncm91cF9ieQBJbiBhZ2dyZWdhdGVkIHF1ZXJ5IHdpdGhvdXQgR1JPVVAgQlksIGV4cHJlc3Npb24gIyV1IG9mICVzIGNvbnRhaW5zIG5vbmFnZ3JlZ2F0ZWQgY29sdW1uICclLS4xOTJzJzsgdGhpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzcWxfbW9kZT1vbmx5X2Z1bGxfZ3JvdXBfYnkAVXBkYXRpbmcgJyVzJyBpcyBkZXByZWNhdGVkLiBJdCB3aWxsIGJlIG1hZGUgcmVhZC1vbmx5IGluIGEgZnV0dXJlIHJlbGVhc2UuAENoYW5naW5nIHNxbCBtb2RlICclcycgaXMgZGVwcmVjYXRlZC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAERST1AgREFUQUJBU0UgZmFpbGVkOyBzb21lIHRhYmxlcyBtYXkgaGF2ZSBiZWVuIGRyb3BwZWQgYnV0IHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgcmVtYWlucy4gVGhlIEdUSUQgaGFzIG5vdCBiZWVuIGFkZGVkIHRvIEdUSURfRVhFQ1VURUQgYW5kIHRoZSBzdGF0ZW1lbnQgd2FzIG5vdCB3cml0dGVuIHRvIHRoZSBiaW5hcnkgbG9nLiBGaXggdGhpcyBhcyBmb2xsb3dzOiAoMSkgcmVtb3ZlIGFsbCBmaWxlcyBmcm9tIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgJS0uMTkyczsgKDIpIFNFVCBHVElEX05FWFQ9JyUtLjE5MnMnOyAoMykgRFJPUCBEQVRBQkFTRSBgJS0uMTkyc2AuAFRoZSBzZXJ2ZXIgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkgdG8gYmUgYW4gYWN0aXZlIG1lbWJlciBvZiB0aGUgZ3JvdXAuIFBsZWFzZSBzZWUgbW9yZSBkZXRhaWxzIG9uIGVycm9yIGxvZy4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSBncm91cCBpcyBhbHJlYWR5IHJ1bm5pbmcuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBhcyB0aGUgYXBwbGllciBtb2R1bGUgZmFpbGVkIHRvIHN0YXJ0LgBUaGUgU1RPUCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBUaGUgYXBwbGllciB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCB3aGlsZSBpdCB3YXMgYnVzeS4gVGhlIGFwcGxpZXIgdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBhcyB0aGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBpbml0aWFsaXppbmcgdGhlIGdyb3VwIGNvbW11bmljYXRpb24gbGF5ZXIuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBhcyB0aGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBqb2luaW5nIHRoZSBjb21tdW5pY2F0aW9uIGdyb3VwLgBUaGUgdGFibGUgZG9lcyBub3QgY29tcGx5IHdpdGggdGhlIHJlcXVpcmVtZW50cyBieSBhbiBleHRlcm5hbCBwbHVnaW4uAENhbm5vdCBjaGFuZ2UgdGhlIHZhbHVlIG9mIHZhcmlhYmxlICVzIHdpdGhvdXQgYmluYXJ5IGxvZyBmb3JtYXQgYXMgUk9XLgBFcnJvciBvbiBvYnNlcnZlciB3aGlsZSBydW5uaW5nIHJlcGxpY2F0aW9uIGhvb2sgJyVzJy4AUGx1Z2luIGluc3RydWN0ZWQgdGhlIHNlcnZlciB0byByb2xsYmFjayB0aGUgY3VycmVudCB0cmFuc2FjdGlvbi4ARXhwcmVzc2lvbiBvZiBnZW5lcmF0ZWQgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uLgBJTlBMQUNFIEFERCBvciBEUk9QIG9mIHZpcnR1YWwgY29sdW1ucyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciBBTFRFUiBUQUJMRSBhY3Rpb25zAENhbm5vdCBkZWZpbmUgZm9yZWlnbiBrZXkgd2l0aCAlcyBjbGF1c2Ugb24gYSBnZW5lcmF0ZWQgY29sdW1uLgBUaGUgdmFsdWUgc3BlY2lmaWVkIGZvciBnZW5lcmF0ZWQgY29sdW1uICclcycgaW4gdGFibGUgJyVzJyBpcyBub3QgYWxsb3dlZC4AJyVzJyBpcyBub3Qgc3VwcG9ydGVkIGZvciBnZW5lcmF0ZWQgY29sdW1ucy4AR2VuZXJhdGVkIGNvbHVtbiBjYW4gcmVmZXIgb25seSB0byBnZW5lcmF0ZWQgY29sdW1ucyBkZWZpbmVkIHByaW9yIHRvIGl0LgBDb2x1bW4gJyVzJyBoYXMgYSBnZW5lcmF0ZWQgY29sdW1uIGRlcGVuZGVuY3kuAEdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYXV0by1pbmNyZW1lbnQgY29sdW1uLgBUaGUgJyUtLjY0cycgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlOyB5b3UgbmVlZCB0byByZW1vdmUgJyUtLjY0cycgb3IgdXNlIE15U1FMIGJ1aWx0IHdpdGggJyUtLjY0cycAU0VUIEBAR0xPQkFMLkdUSURfTU9ERSA9ICUtLjY0cyBpcyBub3QgYWxsb3dlZCBiZWNhdXNlICUtLjM4NHMuAFRoZSByZXBsaWNhdGlvbiByZWNlaXZlciB0aHJlYWQlLS4xOTJzIGNhbm5vdCBzdGFydCBpbiBBVVRPX1BPU0lUSU9OIG1vZGU6IHRoaXMgc2VydmVyIHVzZXMgQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBDYW5ub3QgcmVwbGljYXRlIGFub255bW91cyB0cmFuc2FjdGlvbiB3aGVuIEFVVE9fUE9TSVRJT04gPSAxLCBhdCBmaWxlICUuNTEycywgcG9zaXRpb24gJWxsZC4AQ2Fubm90IHJlcGxpY2F0ZSBhbm9ueW1vdXMgdHJhbnNhY3Rpb24gd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTiwgYXQgZmlsZSAlLjUxMnMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCByZXBsaWNhdGUgR1RJRC10cmFuc2FjdGlvbiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRiwgYXQgZmlsZSAlLjUxMnMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCBzZXQgRU5GT1JDRV9HVElEX0NPTlNJU1RFTkNZID0gT04gYmVjYXVzZSB0aGVyZSBhcmUgb25nb2luZyB0cmFuc2FjdGlvbnMgdGhhdCB2aW9sYXRlIEdUSUQgY29uc2lzdGVuY3kuAFRoZXJlIGFyZSBvbmdvaW5nIHRyYW5zYWN0aW9ucyB0aGF0IHZpb2xhdGUgR1RJRCBjb25zaXN0ZW5jeS4AQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJy4gQWNjb3VudCBpcyBsb2NrZWQuAEluY29ycmVjdCB0YWJsZXNwYWNlIG5hbWUgYCUtLjE5MnNgAFRhYmxlc3BhY2UgYCUtLjE5MnNgIGlzIG5vdCBlbXB0eS4ASW5jb3JyZWN0IEZpbGUgTmFtZSAnJXMnLgBJbmNvbnNpc3RlbnQgaW50ZXJzZWN0aW9uIHBvaW50cy4AT3B0aW1pemVyIGhpbnQgc3ludGF4IGVycm9yAFVuc3VwcG9ydGVkIE1BWF9FWEVDVVRJT05fVElNRQBNQVhfRVhFQ1VUSU9OX1RJTUUgaGludCBpcyBzdXBwb3J0ZWQgYnkgdG9wLWxldmVsIHN0YW5kYWxvbmUgU0VMRUNUIHN0YXRlbWVudHMgb25seQBIaW50ICVzIGlzIGlnbm9yZWQgYXMgY29uZmxpY3RpbmcvZHVwbGljYXRlZABRdWVyeSBibG9jayBuYW1lICVzIGlzIG5vdCBmb3VuZCBmb3IgJXMgaGludABVbnJlc29sdmVkIG5hbWUgJXMgZm9yICVzIGhpbnQAUGxlYXNlIGRvIG5vdCBtb2RpZnkgdGhlICVzIHRhYmxlLiBUaGlzIGlzIGEgbXlzcWwgaW50ZXJuYWwgc3lzdGVtIHRhYmxlIHRvIHN0b3JlIEdUSURzIGZvciBjb21taXR0ZWQgdHJhbnNhY3Rpb25zLiBNb2RpZnlpbmcgaXQgY2FuIGxlYWQgdG8gYW4gaW5jb25zaXN0ZW50IEdUSUQgc3RhdGUuAENvbW1hbmQgbm90IHN1cHBvcnRlZCBieSBwbHVnZ2FibGUgcHJvdG9jb2xzAEluY29ycmVjdCBsb2NraW5nIHNlcnZpY2UgbG9jayBuYW1lICclLS4xOTJzJy4ARGVhZGxvY2sgZm91bmQgd2hlbiB0cnlpbmcgdG8gZ2V0IGxvY2tpbmcgc2VydmljZSBsb2NrOyB0cnkgcmVsZWFzaW5nIGxvY2tzIGFuZCByZXN0YXJ0aW5nIGxvY2sgYWNxdWlzaXRpb24uAFNlcnZpY2UgbG9jayB3YWl0IHRpbWVvdXQgZXhjZWVkZWQuAFBhcmFtZXRlciAlcyBleGNlZWRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwb2ludHMgaW4gYSBnZW9tZXRyeSAoJWx1KSBpbiBmdW5jdGlvbiAlcy4AJ05PX1pFUk9fREFURScsICdOT19aRVJPX0lOX0RBVEUnIGFuZCAnRVJST1JfRk9SX0RJVklTSU9OX0JZX1pFUk8nIHNxbCBtb2RlcyBzaG91bGQgYmUgdXNlZCB3aXRoIHN0cmljdCBtb2RlLiBUaGV5IHdpbGwgYmUgbWVyZ2VkIHdpdGggc3RyaWN0IG1vZGUgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVmVyc2lvbiB0b2tlbiBtaXNtYXRjaCBmb3IgJS4qcy4gQ29ycmVjdCB2YWx1ZSAlLipzAFZlcnNpb24gdG9rZW4gJS4qcyBub3QgZm91bmQuAFZhcmlhYmxlICUtLjE5MnMgY2Fubm90IGJlIGNoYW5nZWQgYnkgYSBjbGllbnQgdGhhdCBvd25zIGEgR1RJRC4gVGhlIGNsaWVudCBvd25zICVzLiBPd25lcnNoaXAgaXMgcmVsZWFzZWQgb24gQ09NTUlUIG9yIFJPTExCQUNLLgAlLS4xOTJzIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gY2hhbm5lbCAnJS0uMTkycycuAEludmFsaWQgSlNPTiB0ZXh0OiAiJXMiIGF0IHBvc2l0aW9uICV1IGluIHZhbHVlIGZvciBjb2x1bW4gJyUtLjIwMHMnLgBJbnZhbGlkIEpTT04gdGV4dCBpbiBhcmd1bWVudCAldSB0byBmdW5jdGlvbiAlczogIiVzIiBhdCBwb3NpdGlvbiAldS4lLS4wcwBUaGUgSlNPTiBiaW5hcnkgdmFsdWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgBJbnZhbGlkIEpTT04gcGF0aCBleHByZXNzaW9uLiBUaGUgZXJyb3IgaXMgYXJvdW5kIGNoYXJhY3RlciBwb3NpdGlvbiAldS4lLS4yMDBzAENhbm5vdCBjcmVhdGUgYSBKU09OIHZhbHVlIGZyb20gYSBzdHJpbmcgd2l0aCBDSEFSQUNURVIgU0VUICclcycuAEludmFsaWQgSlNPTiBjaGFyYWN0ZXIgZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogJyVzJzsgdXRmOCBpcyByZXF1aXJlZC4ASW52YWxpZCBkYXRhIHR5cGUgZm9yIEpTT04gZGF0YSBpbiBhcmd1bWVudCAldSB0byBmdW5jdGlvbiAlczsgYSBKU09OIHN0cmluZyBvciBKU09OIHR5cGUgaXMgcmVxdWlyZWQuAENhbm5vdCBDQVNUIHZhbHVlIHRvIEpTT04uAEEgcGF0aCBleHByZXNzaW9uIG11c3QgYmUgZW5jb2RlZCBpbiB0aGUgdXRmOCBjaGFyYWN0ZXIgc2V0LiBUaGUgcGF0aCBleHByZXNzaW9uICclLS4yMDBzJyBpcyBlbmNvZGVkIGluIGNoYXJhY3RlciBzZXQgJyUtLjIwMHMnLgBJbiB0aGlzIHNpdHVhdGlvbiwgcGF0aCBleHByZXNzaW9ucyBtYXkgbm90IGNvbnRhaW4gdGhlICogYW5kICoqIHRva2VucyBvciBhbiBhcnJheSByYW5nZS4AVGhlIEpTT04gdmFsdWUgaXMgdG9vIGJpZyB0byBiZSBzdG9yZWQgaW4gYSBKU09OIGNvbHVtbi4AVGhlIEpTT04gb2JqZWN0IGNvbnRhaW5zIGEga2V5IG5hbWUgdGhhdCBpcyB0b28gbG9uZy4ASlNPTiBjb2x1bW4gJyUtLjE5MnMnIHN1cHBvcnRzIGluZGV4aW5nIG9ubHkgdmlhIGdlbmVyYXRlZCBjb2x1bW5zIG9uIGEgc3BlY2lmaWVkIEpTT04gcGF0aC4AVGhlIHBhdGggZXhwcmVzc2lvbiAnJCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LgBUaGUgb25lT3JBbGwgYXJndW1lbnQgdG8gJXMgbWF5IHRha2UgdGhlc2UgdmFsdWVzOiAnb25lJyBvciAnYWxsJy4AT3V0IG9mIHJhbmdlIEpTT04gdmFsdWUgZm9yIENBU1QgdG8gJXMlLS4wcyBmcm9tIGNvbHVtbiAlcyBhdCByb3cgJWxkAEludmFsaWQgSlNPTiB2YWx1ZSBmb3IgQ0FTVCB0byAlcyUtLjBzIGZyb20gY29sdW1uICVzIGF0IHJvdyAlbGQAVGhlIEpTT04gZG9jdW1lbnQgZXhjZWVkcyB0aGUgbWF4aW11bSBkZXB0aC4ASlNPTiBkb2N1bWVudHMgbWF5IG5vdCBjb250YWluIE5VTEwgbWVtYmVyIG5hbWVzLgBDb25uZWN0aW9ucyB1c2luZyBpbnNlY3VyZSB0cmFuc3BvcnQgYXJlIHByb2hpYml0ZWQgd2hpbGUgLS1yZXF1aXJlX3NlY3VyZV90cmFuc3BvcnQ9T04uAE5vIHNlY3VyZSB0cmFuc3BvcnRzIChTU0wgb3IgU2hhcmVkIE1lbW9yeSkgYXJlIGNvbmZpZ3VyZWQsIHVuYWJsZSB0byBzZXQgLS1yZXF1aXJlX3NlY3VyZV90cmFuc3BvcnQ9T04uAFN0b3JhZ2UgZW5naW5lICVzIGlzIGRpc2FibGVkIChUYWJsZSBjcmVhdGlvbiBpcyBkaXNhbGxvd2VkKS4AQXV0aG9yaXphdGlvbiBJRCAlcyBkb2VzIG5vdCBleGlzdC4AQXV0aG9yaXphdGlvbiBJRCAlcyBhbHJlYWR5IGV4aXN0cy4AQWJvcnRlZCBieSBBdWRpdCBBUEkgKCclLS40OHMnOyVkKS4AQSBwYXRoIGV4cHJlc3Npb24gaXMgbm90IGEgcGF0aCB0byBhIGNlbGwgaW4gYW4gYXJyYXkuAEFub3RoZXIgYnVmZmVyIHBvb2wgcmVzaXplIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuAFRoZSAnJXMnIGZlYXR1cmUgaXMgZGlzYWJsZWQ7IHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgJyVzJwBTZXJ2ZXIgaXNuJ3QgYXZhaWxhYmxlAFNlc3Npb24gd2FzIGtpbGxlZABNZW1vcnkgY2FwYWNpdHkgb2YgJWxsdSBieXRlcyBmb3IgJyVzJyBleGNlZWRlZC4gJXMAUmFuZ2Ugb3B0aW1pemF0aW9uIHdhcyBub3QgZG9uZSBmb3IgdGhpcyBxdWVyeS4AUGFydGl0aW9uaW5nIHVwZ3JhZGUgcmVxdWlyZWQuIFBsZWFzZSBkdW1wL3JlbG9hZCB0byBmaXggaXQgb3IgZG86IEFMVEVSIFRBQkxFIGAlLS4xOTJzYC5gJS0uMTkyc2AgVVBHUkFERSBQQVJUSVRJT05JTkcAVGhlIGNsaWVudCBob2xkcyBvd25lcnNoaXAgb2YgdGhlIEdUSUQgJXMuIFRoZXJlZm9yZSwgV0FJVF9GT1JfRVhFQ1VURURfR1RJRF9TRVQgY2Fubm90IHdhaXQgZm9yIHRoaXMgR1RJRC4AQ2Fubm90IGFkZCBmb3JlaWduIGtleSBvbiB0aGUgYmFzZSBjb2x1bW4gb2YgaW5kZXhlZCB2aXJ0dWFsIGNvbHVtbi4AQ2Fubm90IGNyZWF0ZSBpbmRleCBvbiB2aXJ0dWFsIGNvbHVtbiB3aG9zZSBiYXNlIGNvbHVtbiBoYXMgZm9yZWlnbiBjb25zdHJhaW50LgBQbGVhc2UgZG8gbm90IG1vZGlmeSB0aGUgJXMgdGFibGUgd2l0aCBhbiBYQSB0cmFuc2FjdGlvbi4gVGhpcyBpcyBhbiBpbnRlcm5hbCBzeXN0ZW0gdGFibGUgdXNlZCB0byBzdG9yZSBHVElEcyBmb3IgY29tbWl0dGVkIHRyYW5zYWN0aW9ucy4gQWx0aG91Z2ggbW9kaWZ5aW5nIGl0IGNhbiBsZWFkIHRvIGFuIGluY29uc2lzdGVudCBHVElEIHN0YXRlLCBpZiBuZWNlc3NhcnkgeW91IGNhbiBtb2RpZnkgaXQgd2l0aCBhIG5vbi1YQSB0cmFuc2FjdGlvbi4ATG9jayBhY3F1aXNpdGlvbiByZWZ1c2VkIGJ5IHN0b3JhZ2UgZW5naW5lLgBBREQgQ09MVU1OIGNvbC4uLlZJUlRVQUwsIEFERCBJTkRFWChjb2wpAE1hc3RlciBrZXkgcm90YXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSBzdG9yYWdlIGVuZ2luZS4ARW5jcnlwdGlvbiBrZXkgcm90YXRpb24gZXJyb3IgcmVwb3J0ZWQgYnkgU0U6ICVzAFdyaXRlIHRvIGJpbmxvZyBmYWlsZWQuIEhvd2V2ZXIsIG1hc3RlciBrZXkgcm90YXRpb24gaGFzIGJlZW4gY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4AU3RvcmFnZSBlbmdpbmUgaXMgbm90IGF2YWlsYWJsZS4AVGhpcyB0YWJsZXNwYWNlIGNhbid0IGJlIGVuY3J5cHRlZC4ASW52YWxpZCBlbmNyeXB0aW9uIG9wdGlvbi4AQ2FuJ3QgZmluZCBtYXN0ZXIga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGluIHRoZSBzZXJ2ZXIgbG9nIGlmIGEga2V5cmluZyBpcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4AUGFyc2VyIGJhaWxlZCBvdXQgZm9yIHRoaXMgcXVlcnkuAENhbm5vdCBhbHRlciBlbmNyeXB0aW9uIGF0dHJpYnV0ZSBieSBpbnBsYWNlIGFsZ29yaXRobS4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSB1bmRlcmx5aW5nIGtleXJpbmcgc2VydmljZSByZXR1cm5lZCBhbiBlcnJvci4gUGxlYXNlIGNoZWNrIGlmIGEga2V5cmluZyBpcyBpbnN0YWxsZWQgYW5kIHRoYXQgcHJvdmlkZWQgYXJndW1lbnRzIGFyZSB2YWxpZCBmb3IgdGhlIGtleXJpbmcgeW91IGFyZSB1c2luZy4ASXQgc2VlbXMgdGhhdCB5b3VyIGRiIHNjaGVtYSBpcyBvbGQuIFRoZSAlcyBjb2x1bW4gaXMgNzcgY2hhcmFjdGVycyBsb25nIGFuZCBzaG91bGQgYmUgOTMgY2hhcmFjdGVycyBsb25nLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAFJFU0VUIFNPVVJDRSBpcyBub3QgYWxsb3dlZCBiZWNhdXNlICUtLjM4NHMuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgZ3JvdXAgYWxyZWFkeSBoYXMgOSBtZW1iZXJzLgBDYW5ub3QgYWRkIGZvcmVpZ24ga2V5IG9uIHRoZSBiYXNlIGNvbHVtbiBvZiBzdG9yZWQgY29sdW1uLiAAQ2Fubm90IGNvbXBsZXRlIHRoZSBvcGVyYXRpb24gYmVjYXVzZSB0YWJsZSBpcyByZWZlcmVuY2VkIGJ5IGFub3RoZXIgY29ubmVjdGlvbi4AVGhlIHBhcnRpdGlvbiBlbmdpbmUsIHVzZWQgYnkgdGFibGUgJyUtLjE5MnMuJS0uMTkycycsIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlIG5hdGl2ZSBwYXJ0aXRpb25pbmcgaW5zdGVhZC4AJS4xOTJzKGdlb21ldHJ5KSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHN0X3NyaWQoZ2VvbWV0cnksIDApIGluIGEgZnV0dXJlIHZlcnNpb24uIFVzZSAlLjE5MnMoc3RfYXN3a2IoZ2VvbWV0cnkpLCAwKSBpbnN0ZWFkLgAlLjE5MnMoZ2VvbWV0cnksIHNyaWQpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVwbGFjZWQgYnkgc3Rfc3JpZChnZW9tZXRyeSwgc3JpZCkgaW4gYSBmdXR1cmUgdmVyc2lvbi4gVXNlICUuMTkycyhzdF9hc3drYihnZW9tZXRyeSksIHNyaWQpIGluc3RlYWQuAFRoZSByZXNvdXJjZSBtYW5hZ2VyIGlzIG5vdCBhYmxlIHRvIGNvbW1pdCB0aGUgdHJhbnNhY3Rpb24gYnJhbmNoIGF0IHRoaXMgdGltZS4gUGxlYXNlIHJldHJ5IGxhdGVyLgBGdW5jdGlvbiAlcyBmYWlsZWQgZHVlIHRvOiAlcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IGlzIGJlaW5nIHVzZWQgaW5zaWRlIGEgWEEgdHJhbnNhY3Rpb24uIENvbmN1cnJlbnQgWEEgdHJhbnNhY3Rpb25zIG1heSBkZWFkbG9jayBvbiByZXBsaWNhcyB3aGVuIHJlcGxpY2F0ZWQgdXNpbmcgc3RhdGVtZW50cy4AJXMgVURGIGZhaWxlZDsgJXMAQ2FuIG5vdCBwZXJmb3JtIGtleXJpbmcgbWlncmF0aW9uIDogJXMAQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgJS0uMTI4cyBwcml2aWxlZ2VzIGZvciB0aGlzIG9wZXJhdGlvbgBLZXlyaW5nIG1pZ3JhdGlvbiAlcy4ARmFpbGVkIHRvIG9wZW4gdGhlICVzIGZpbHRlciB0YWJsZXMuAEZhaWxlZCB0byBvcGVuICclcy4lcycgJXMgdGFibGUuAE5vIGtleXJpbmcgcGx1Z2luIGluc3RhbGxlZC4AQXVkaXQgbG9nIGVuY3J5cHRpb24gcGFzc3dvcmQgaGFzIG5vdCBiZWVuIHNldDsgaXQgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4gVXNlIGF1ZGl0X2xvZ19lbmNyeXB0aW9uX3Bhc3N3b3JkX2dldCB0byBvYnRhaW4gdGhlIHBhc3N3b3JkIG9yIGF1ZGl0X2xvZ19lbmNyeXB0aW9uX3Bhc3N3b3JkX3NldCB0byBzZXQgYSBuZXcgb25lLgBDb3VsZCBub3QgY3JlYXRlIEFFUyBrZXkuIE9wZW5TU0wncyBFVlBfQnl0ZXNUb0tleSBmdW5jdGlvbiBmYWlsZWQuAEF1ZGl0IGxvZyBlbmNyeXB0aW9uIHBhc3N3b3JkIGNhbm5vdCBiZSBmZXRjaGVkIGZyb20gdGhlIGtleXJpbmcuIFBhc3N3b3JkIHVzZWQgc28gZmFyIGlzIHVzZWQgZm9yIGVuY3J5cHRpb24uAEF1ZGl0IExvZyBmaWx0ZXJpbmcgaGFzIG5vdCBiZWVuIGluc3RhbGxlZC4AUmVxdWVzdCBpZ25vcmVkIGZvciAnJXMnQCclcycuIFNVUEVSIHByaXZpbGVnZSBvciBBVURJVF9BRE1JTiByb2xlIG5lZWRlZCB0byBwZXJmb3JtIG9wZXJhdGlvbgBTVVBFUiBwcml2aWxlZ2Ugb3IgQVVESVRfQURNSU4gcm9sZSByZXF1aXJlZCBmb3IgJyVzJ0AnJXMnIHVzZXIuAENvdWxkIG5vdCByZWluaXRpYWxpemUgYXVkaXQgbG9nIGZpbHRlcnMuAEludmFsaWQgYXJndW1lbnQgdHlwZQBJbnZhbGlkIGFyZ3VtZW50IGNvdW50AGF1ZGl0X2xvZyBwbHVnaW4gaGFzIG5vdCBiZWVuIGluc3RhbGxlZCB1c2luZyBJTlNUQUxMIFBMVUdJTiBzeW50YXguAEludmFsaWQgIm1heF9hcnJheV9sZW5ndGgiIGFyZ3VtZW50IHR5cGUuAEludmFsaWQgIm1heF9hcnJheV9sZW5ndGgiIGFyZ3VtZW50IHZhbHVlLgAlcwBGaWx0ZXIgbmFtZSBjYW5ub3QgYmUgZW1wdHkuAFVzZXIgY2Fubm90IGJlIGVtcHR5LgBTcGVjaWZpZWQgZmlsdGVyIGhhcyBub3QgYmVlbiBmb3VuZC4ARmlyc3QgY2hhcmFjdGVyIG9mIHRoZSB1c2VyIG5hbWUgbXVzdCBiZSBhbHBoYW51bWVyaWMuAEludmFsaWQgY2hhcmFjdGVyIGluIHRoZSB1c2VyIG5hbWUuAEludmFsaWQgY2hhcmFjdGVyIGluIHRoZSBob3N0IG5hbWUuAFdpdGggdGhlIE1BWERCIFNRTCBtb2RlIGVuYWJsZWQsIFRJTUVTVEFNUCBpcyBpZGVudGljYWwgd2l0aCBEQVRFVElNRS4gVGhlIE1BWERCIFNRTCBtb2RlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgZGlzYWJsZSB0aGUgTUFYREIgU1FMIG1vZGUgYW5kIHVzZSBEQVRFVElNRSBpbnN0ZWFkLgBUaGUgdXNlIG9mIHJlcGxpY2F0aW9uIGZpbHRlcnMgd2l0aCBYQSB0cmFuc2FjdGlvbnMgaXMgbm90IHN1cHBvcnRlZCwgYW5kIGNhbiBsZWFkIHRvIGFuIHVuZGVmaW5lZCBzdGF0ZSBpbiB0aGUgcmVwbGljYS4AQ291bGQgbm90IG9wZW4gZmlsZSAnJXMnIGZvciBlcnJvciBsb2dnaW5nJXMlcwBHcm91cGluZyBvbiB0ZW1wb3JhbCBpcyBub24tZGV0ZXJtaW5pc3RpYyBmb3IgdGltZXpvbmVzIGhhdmluZyBEU1QuIFBsZWFzZSBjb25zaWRlciBzd2l0Y2hpbmcgdG8gVVRDIGZvciB0aGlzIHF1ZXJ5LgBDYW4ndCBzdGFydCBzZXJ2ZXIgOiBOYW1lZCBQaXBlICIlcyIgYWxyZWFkeSBpbiB1c2UuAFRoZSBzaXplIG9mIHdyaXRlc2V0IGRhdGEgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGV4Y2VlZHMgYSBsaW1pdCBpbXBvc2VkIGJ5IGFuIGV4dGVybmFsIGNvbXBvbmVudC4gSWYgdXNpbmcgR3JvdXAgUmVwbGljYXRpb24gY2hlY2sgJ2dyb3VwX3JlcGxpY2F0aW9uX3RyYW5zYWN0aW9uX3NpemVfbGltaXQnLgBBY2NlcHRlZCBhIGNvbm5lY3Rpb24gd2l0aCBkZXByZWNhdGVkIHByb3RvY29sICclcycgZm9yIGFjY291bnQgYCVzYEBgJXNgIGZyb20gaG9zdCBgJXNgLiBDbGllbnQgc3VwcGxpZWQgdXNlcm5hbWUgYCVzYABBIGRlcHJlY2F0ZWQgVExTIHZlcnNpb24gJXMgaXMgZW5hYmxlZC4gUGxlYXNlIHVzZSBUTFN2MS4yIG9yIGhpZ2hlci4AT3B0aW9uYWwgbmF0aXZlIHRhYmxlICclLS42NHMnLiclLS42NHMnIGhhcyB0aGUgd3Jvbmcgc3RydWN0dXJlIG9yIGlzIG1pc3NpbmcuAEtERiBtZXRob2QgbmFtZSBpcyBub3QgdmFsaWQuIFBsZWFzZSB1c2UgaGtkZiBvciBwYmtkZjJfaG1hYyBtZXRob2QgbmFtZQBGb3IgS0RGIG1ldGhvZCBwYmtkZjJfaG1hYyBpdGVyYXRpb25zIHZhbHVlIGxlc3MgdGhhbiAxMDAwIG9yIG1vcmUgdGhhbiA2NTUzNSBpcyBub3QgYWxsb3dlZCBkdWUgdG8gc2VjdXJpdHkgcmVhc29ucy4gUGxlYXNlIHByb3ZpZGUgaXRlcmF0aW9ucyA+PSAxMDAwIGFuZCBpdGVyYXRpb25zIDwgNjU1MzUAQUVTIGtleSBzaXplIHNob3VsZCBiZSAlZCBieXRlcyBsZW5ndGggb3Igc2VjdXJlIEtERiBtZXRob2RzIGhrZGYgb3IgcGJrZGYyX2htYWMgc2hvdWxkIGJlIHVzZWQsIHBsZWFzZSBwcm92aWRlIGV4YWN0IEFFUyBrZXkgc2l6ZSBvciB1c2UgS0RGIG1ldGhvZHMgZm9yIGJldHRlciBzZWN1cml0eS4AS0RGIG9wdGlvbiBzaXplIGlzIGludmFsaWQsIHBsZWFzZSBwcm92aWRlIHZhbGlkIHNpemUgPCAlZCBieXRlcyBhbmQgbm90IE5VTEwAQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBpcyBub3QgYWxsb3dlZCB3aXRoIFJPV19GT1JNQVQ9Q09NUFJFU1NFRCBvciBLRVlfQkxPQ0tfU0laRS4AVGhlIEFDTCBvcGVyYXRpb24gZmFpbGVkIGR1ZSB0byB0aGUgZm9sbG93aW5nIGVycm9yIGZyb20gU0U6IGVycmNvZGUgJWQgLSAlLjI1NnMAVGhpcyBzdG9yYWdlIGVuZ2luZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSAlcyBpbmRleCBhbGdvcml0aG0sIHN0b3JhZ2UgZW5naW5lIGRlZmF1bHQgd2FzIHVzZWQgaW5zdGVhZC4ARGF0YWJhc2UgJyUtLjE5MnMnIGRvZXNuJ3QgZXhpc3QAVG9vIG1hbnkgZW51bWVyYXRpb24gdmFsdWVzIGZvciBjb2x1bW4gJS4xOTJzLgBUb28gbG9uZyBlbnVtZXJhdGlvbi9zZXQgdmFsdWUgZm9yIGNvbHVtbiAlLjE5MnMuACVzIGRpY3Rpb25hcnkgb2JqZWN0IGlzIGludmFsaWQuICglLjE5MnMpAEZhaWxlZCB0byB1cGRhdGUgJS4xOTJzIGRpY3Rpb25hcnkgb2JqZWN0LgBEaWN0aW9uYXJ5IG9iamVjdCBpZCAoJWx1KSBkb2VzIG5vdCBleGlzdC4ARGljdGlvbmFyeSBvYmplY3QgbmFtZSAnJXMnIGlzIGludmFsaWQuICglLjE5MnMpAFRhYmxlc3BhY2UgJS0uMTkycyBkb2Vzbid0IGV4aXN0LgBDb21tZW50IGZvciByb3V0aW5lICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAEZhaWxlZCB0byBsb2FkIHJvdXRpbmUgJyUtLjY0cycuAEJpbmFyeSBvcGVyYW5kcyBvZiBiaXR3aXNlIG9wZXJhdG9ycyBtdXN0IGJlIG9mIGVxdWFsIGxlbmd0aABBZ2dyZWdhdGUgYml0d2lzZSBmdW5jdGlvbnMgY2Fubm90IGFjY2VwdCBhcmd1bWVudHMgbG9uZ2VyIHRoYW4gNTExIGJ5dGVzOyBjb25zaWRlciB1c2luZyB0aGUgU1VCU1RSSU5HKCkgZnVuY3Rpb24ASGludHMgYXJlbid0IHN1cHBvcnRlZCBpbiAlcwAlLjY0cyB2YWx1ZSBpcyBhIGdlb21ldHJ5IG9mIHVuZXhwZWN0ZWQgdHlwZSAlLjY0cyBpbiAlLjY0cy4AQ2FuJ3QgcGFyc2UgdGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBkZWZpbml0aW9uIG9mIFNSSUQgJXUuAFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gZGVmaW5pdGlvbiBmb3IgU1JJRCAldSBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBtYW5kYXRvcnkgJXMgKEVQU0cgJXUpIHByb2plY3Rpb24gcGFyYW1ldGVyLgBUaGVyZSdzIG5vIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuAEZ1bmN0aW9uICVzIGlzIG9ubHkgZGVmaW5lZCBmb3IgQ2FydGVzaWFuIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMsIGJ1dCBvbmUgb2YgaXRzIGFyZ3VtZW50cyBpcyBpbiBTUklEICV1LCB3aGljaCBpcyBub3QgQ2FydGVzaWFuLgBGdW5jdGlvbiAlcyBpcyBvbmx5IGRlZmluZWQgZm9yIENhcnRlc2lhbiBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLCBidXQgb25lIG9mIGl0cyBhcmd1bWVudHMgaXMgaW4gU1JJRCAldSwgd2hpY2ggaGFzIG5vdCBiZWVuIGRlZmluZWQuAEEgcHJpbWFyeSBrZXkgaW5kZXggY2Fubm90IGJlIGludmlzaWJsZQBVbmtub3duIGF1dGhvcml6YXRpb24gSUQgYCUuNjRzYEBgJS42NHNgAEZhaWxlZCB0byBncmFudCAlLjkwc2AgdG8gJS45MHMARmFpbGVkIHRvIG9wZW4gdGhlIHNlY3VyaXR5IHN5c3RlbSB0YWJsZXMARmFpbGVkIHRvIHNldCBkZWZhdWx0IHJvbGVzAENhbm5vdCBmaW5kIHNjaGVtYSBpbiBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJy4AQ2Fubm90IGFjcXVpcmUgc2NoZW1lIGxvYWQgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBmb3Igc2NoZW1hICclLjE5MnMnIGluIHNwZWNpZmllZCBVUk46ICclLjE5MnMnLgBDYW5ub3QgbG9hZCBjb21wb25lbnQgZnJvbSBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJy4AYCUuNjRzYEBgJS42NHNgIGlzIG5vdCBncmFudGVkIHRvIGAlLjY0c2BAYCUuNjRzYABDb3VsZCBub3QgcmV2b2tlIHJvbGUgZnJvbSBgJS42NHNgQGAlLjY0c2AAUmVuYW1pbmcgb2YgYSByb2xlIGlkZW50aWZpZXIgaXMgZm9yYmlkZGVuAENhbm5vdCBhY3F1aXJlIHNwZWNpZmllZCBzZXJ2aWNlIGltcGxlbWVudGF0aW9uOiAnJS4xOTJzJy4AQ2Fubm90IHNhdGlzZnkgZGVwZW5kZW5jeSBmb3Igc2VydmljZSAnJS4xOTJzJyByZXF1aXJlZCBieSBjb21wb25lbnQgJyUuMTkycycuAENhbm5vdCByZWdpc3RlciBzZXJ2aWNlIGltcGxlbWVudGF0aW9uICclLjE5MnMnIHByb3ZpZGVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJy4ASW5pdGlhbGl6YXRpb24gbWV0aG9kIHByb3ZpZGVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJyBmYWlsZWQuAENvbXBvbmVudCBzcGVjaWZpZWQgYnkgVVJOICclLjE5MnMnIHRvIHVubG9hZCBoYXMgbm90IGJlZW4gbG9hZGVkIGJlZm9yZS4ARGUtaW5pdGlhbGl6YXRpb24gbWV0aG9kIHByb3ZpZGVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJyBmYWlsZWQuAFJlbGVhc2Ugb2YgcHJldmlvdXNseSBhY3F1aXJlZCBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZhaWxlZC4AVW5yZWdpc3RyYXRpb24gb2Ygc2VydmljZSBpbXBsZW1lbnRhdGlvbiAnJS4xOTJzJyBwcm92aWRlZCBieSBjb21wb25lbnQgJyUuMTkycycgZmFpbGVkIGR1cmluZyB1bmxvYWRpbmcgb2YgdGhlIGNvbXBvbmVudC4AQ2Fubm90IHVubG9hZCBjb21wb25lbnQgZnJvbSBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJy4AVGhlIFBlcnNpc3RlbnQgRHluYW1pYyBMb2FkZXIgd2FzIHVzZWQgdG8gdW5sb2FkIGEgY29tcG9uZW50ICclLjE5MnMnLCBidXQgaXQgd2FzIG5vdCB1c2VkIHRvIGxvYWQgdGhhdCBjb21wb25lbnQgYmVmb3JlLgBUaGUgbXlzcWwuY29tcG9uZW50IHRhYmxlIGlzIG1pc3Npbmcgb3IgaGFzIGFuIGluY29ycmVjdCBkZWZpbml0aW9uLgBGYWlsZWQgdG8gbWFuaXB1bGF0ZSBjb21wb25lbnQgJyUuMTkycycgcGVyc2lzdGVuY2UgZGF0YS4gRXJyb3IgY29kZSAlZCBmcm9tIHN0b3JhZ2UgZW5naW5lLgBUaGUgY29tcG9uZW50IHdpdGggc3BlY2lmaWVkIFVSTjogJyUuMTkycycgd2FzIHNwZWNpZmllZCBpbiBncm91cCBtb3JlIHRoYW4gb25jZS4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgY2Fubm90IGJlIGNoYW5nZWQ6ICVzAENhbiBub3QgbG9jayB1c2VyIG1hbmFnZW1lbnQgY2FjaGVzIGZvciBwcm9jZXNzaW5nLgBUaGVyZSdzIG5vIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuAFZhcmlhYmxlcyBjYW5ub3QgYmUgcGVyc2lzdGVkLiBQbGVhc2UgcmV0cnkuAEluZm9ybWF0aW9uIHNjaGVtYSBxdWVyaWVzIGRvIG5vdCBzdXBwb3J0IHRoZSAnJXMnIGNsYXVzZS4AVW5hYmxlIHRvIHN0b3JlIGR5bmFtaWMgJXMgc3RhdGlzdGljcyBpbnRvIGRhdGEgZGljdGlvbmFyeS4AQWNjZXNzIHRvIHN5c3RlbSBzY2hlbWEgJyUuNjRzJyBpcyByZWplY3RlZC4AQWNjZXNzIHRvIHN5c3RlbSB0YWJsZXNwYWNlICclLjY0cycgaXMgcmVqZWN0ZWQuAEFjY2VzcyB0byAlLjY0cyAnJS42NHMuJS42NHMnIGlzIHJlamVjdGVkLgBkYXRhIGRpY3Rpb25hcnkgdGFibGUAc3lzdGVtIHRhYmxlAHRhYmxlAEludmFsaWQgb3B0aW9uIGtleSAnJS4xOTJzJyBpbiBmdW5jdGlvbiAlLjE5MnMuAEludmFsaWQgdmFsdWUgJyUuMTkycycgZm9yIG9wdGlvbiAnJS4xOTJzJyBpbiBmdW5jdGlvbiAnJS4xOTJzJy4AVGhlIHN0cmluZyAnJS4xOTJzJyBpcyBub3QgYSB2YWxpZCBrZXkgJWMgdmFsdWUgcGFpciBpbiBmdW5jdGlvbiAlLjE5MnMuAFRoZSBvcHRpb25zIGFyZ3VtZW50IGluIGZ1bmN0aW9uICUuMTkycyBzdGFydHMgd2l0aCB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgJyVjJy4AVGhlIG9wdGlvbnMgYXJndW1lbnQgaW4gZnVuY3Rpb24gJS4xOTJzIGVuZHMgd2l0aCB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgJyVjJy4AVGhlIG9wdGlvbnMgYXJndW1lbnQgaW4gZnVuY3Rpb24gJS4xOTJzIGNvbnRhaW5zIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBzZXF1ZW5jZSAnJS4xOTJzJy4ARHVwbGljYXRlIG9wdGlvbiBrZXkgJyUuMTkycycgaW4gZnVudGlvbiAnJS4xOTJzJy4AVGhlcmUncyBubyBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gd2l0aCBTUklEICV1LiBUaGUgYXhpcyBvcmRlciBpcyB1bmtub3duLgBBY2Nlc3MgdG8gbmF0aXZlIGZ1bmN0aW9uICclLjY0cycgaXMgcmVqZWN0ZWQuAFRoZSByZXF1ZXN0ZWQgdmFsdWUgJyVsbHUnIGZvciB0aGUgbmV4dCBiaW5hcnkgbG9nIGluZGV4IGlzIG91dCBvZiByYW5nZS4gUGxlYXNlIHVzZSBhIHZhbHVlIGJldHdlZW4gJzEnIGFuZCAnJWx1Jy4AVW5yZXNvbHZlZCB0YWJsZSBuYW1lICVzIGluIGxvY2tpbmcgY2xhdXNlLgBUYWJsZSAlcyBhcHBlYXJzIGluIG11bHRpcGxlIGxvY2tpbmcgY2xhdXNlcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgU0tJUCBMT0NLRUQuIFRoZSBzZXQgb2YgaW5zZXJ0ZWQgdmFsdWVzIGlzIG5vbi1kZXRlcm1pbmlzdGljLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBOT1dBSVQuIFdoZXRoZXIgdGhlIGNvbW1hbmQgd2lsbCBzdWNjZWVkIG9yIGZhaWwgaXMgbm90IGRldGVybWluaXN0aWMuAFN0YXRlbWVudCBhYm9ydGVkIGJlY2F1c2UgbG9jayhzKSBjb3VsZCBub3QgYmUgYWNxdWlyZWQgaW1tZWRpYXRlbHkgYW5kIE5PV0FJVCBpcyBzZXQuAFJlY3Vyc2l2ZSBDb21tb24gVGFibGUgRXhwcmVzc2lvbiAnJXMnIHNob3VsZCBjb250YWluIGEgVU5JT04AUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycgc2hvdWxkIGhhdmUgb25lIG9yIG1vcmUgbm9uLXJlY3Vyc2l2ZSBxdWVyeSBibG9ja3MgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgcmVjdXJzaXZlIG9uZXMAUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycgY2FuIGNvbnRhaW4gbmVpdGhlciBhZ2dyZWdhdGlvbiBub3Igd2luZG93IGZ1bmN0aW9ucyBpbiByZWN1cnNpdmUgcXVlcnkgYmxvY2sASW4gcmVjdXJzaXZlIHF1ZXJ5IGJsb2NrIG9mIFJlY3Vyc2l2ZSBDb21tb24gVGFibGUgRXhwcmVzc2lvbiAnJXMnLCB0aGUgcmVjdXJzaXZlIHRhYmxlIG11c3QgbmVpdGhlciBiZSBpbiB0aGUgcmlnaHQgYXJndW1lbnQgb2YgYSBMRUZUIEpPSU4sIG5vciBiZSBmb3JjZWQgdG8gYmUgbm9uLWZpcnN0IHdpdGggam9pbiBvcmRlciBoaW50cwBJbiByZWN1cnNpdmUgcXVlcnkgYmxvY2sgb2YgUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycsIHRoZSByZWN1cnNpdmUgdGFibGUgbXVzdCBiZSByZWZlcmVuY2VkIG9ubHkgb25jZSwgYW5kIG5vdCBpbiBhbnkgc3VicXVlcnkAJyVzJyByZXF1aXJlcyBAQGludGVybmFsX3RtcF9kaXNrX3N0b3JhZ2VfZW5naW5lPUlubm9EQgBXaW5kb3cgbmFtZSAnJXMnIGlzIG5vdCBkZWZpbmVkLgBUaGVyZSBpcyBhIGNpcmN1bGFyaXR5IGluIHRoZSB3aW5kb3cgZGVwZW5kZW5jeSBncmFwaC4AQSB3aW5kb3cgd2hpY2ggZGVwZW5kcyBvbiBhbm90aGVyIGNhbm5vdCBkZWZpbmUgcGFydGl0aW9uaW5nLgBXaW5kb3cgJyVzJyBoYXMgYSBmcmFtZSBkZWZpbml0aW9uLCBzbyBjYW5ub3QgYmUgcmVmZXJlbmNlZCBieSBhbm90aGVyIHdpbmRvdy4AV2luZG93ICclcycgY2Fubm90IGluaGVyaXQgJyVzJyBzaW5jZSBib3RoIGNvbnRhaW4gYW4gT1JERVIgQlkgY2xhdXNlLgBXaW5kb3cgJyVzJzogZnJhbWUgc3RhcnQgY2Fubm90IGJlIFVOQk9VTkRFRCBGT0xMT1dJTkcuAFdpbmRvdyAnJXMnOiBmcmFtZSBlbmQgY2Fubm90IGJlIFVOQk9VTkRFRCBQUkVDRURJTkcuAFdpbmRvdyAnJXMnOiBmcmFtZSBzdGFydCBvciBlbmQgaXMgbmVnYXRpdmUsIE5VTEwgb3Igb2Ygbm9uLWludGVncmFsIHR5cGUAV2luZG93ICclcycgd2l0aCBSQU5HRSBOIFBSRUNFRElORy9GT0xMT1dJTkcgZnJhbWUgcmVxdWlyZXMgZXhhY3RseSBvbmUgT1JERVIgQlkgZXhwcmVzc2lvbiwgb2YgbnVtZXJpYyBvciB0ZW1wb3JhbCB0eXBlAFdpbmRvdyAnJXMnIHdpdGggUkFOR0UgZnJhbWUgaGFzIE9SREVSIEJZIGV4cHJlc3Npb24gb2YgZGF0ZXRpbWUgdHlwZS4gT25seSBJTlRFUlZBTCBib3VuZCB2YWx1ZSBhbGxvd2VkLgBXaW5kb3cgJyVzJyB3aXRoIFJBTkdFIGZyYW1lIGhhcyBPUkRFUiBCWSBleHByZXNzaW9uIG9mIG51bWVyaWMgdHlwZSwgSU5URVJWQUwgYm91bmQgdmFsdWUgbm90IGFsbG93ZWQuAFdpbmRvdyAnJXMnIGhhcyBhIG5vbi1jb25zdGFudCBmcmFtZSBib3VuZC4AV2luZG93ICclcycgaXMgZGVmaW5lZCB0d2ljZS4AV2luZG93ICclcyc6IE9SREVSIEJZIG9yIFBBUlRJVElPTiBCWSB1c2VzIGxlZ2FjeSBwb3NpdGlvbiBpbmRpY2F0aW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQsIHVzZSBleHByZXNzaW9uLgBZb3UgY2Fubm90IHVzZSB0aGUgd2luZG93IGZ1bmN0aW9uICclcycgaW4gdGhpcyBjb250ZXh0LicAWW91IGNhbm5vdCB1c2UgdGhlIGFsaWFzICclcycgb2YgYW4gZXhwcmVzc2lvbiBjb250YWluaW5nIGEgd2luZG93IGZ1bmN0aW9uIGluIHRoaXMgY29udGV4dC4nAFlvdSBjYW5ub3QgbmVzdCBhIHdpbmRvdyBmdW5jdGlvbiBpbiB0aGUgc3BlY2lmaWNhdGlvbiBvZiB3aW5kb3cgJyVzJy4AV2luZG93ICclcyc6IElOVEVSVkFMIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBSQU5HRSBmcmFtZXMuAEFTQyBvciBERVNDIHdpdGggR1JPVVAgQlkgaXNuJ3QgYWxsb3dlZCB3aXRoIHdpbmRvdyBmdW5jdGlvbnM7IHB1dCBBU0Mgb3IgREVTQyBpbiBPUkRFUiBCWQBUbyBnZXQgaW5mb3JtYXRpb24gYWJvdXQgd2luZG93IGZ1bmN0aW9ucyB1c2UgRVhQTEFJTiBGT1JNQVQ9SlNPTgBXaW5kb3cgZnVuY3Rpb24gJyVzJyBpZ25vcmVzIHRoZSBmcmFtZSBjbGF1c2Ugb2Ygd2luZG93ICclcycgYW5kIGFnZ3JlZ2F0ZXMgb3ZlciB0aGUgd2hvbGUgcGFydGl0aW9uAFdpbmRvd2luZyByZXF1aXJlcyBAQGludGVybmFsX3RtcF9tZW1fc3RvcmFnZV9lbmdpbmU9VGVtcFRhYmxlLgBUb28gbWFueSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uICVzOiAlbHU7IG1heGltdW0gYWxsb3dlZCBpcyAlcy4AQXJndW1lbnQgIyV1IG9mIEdST1VQSU5HIGZ1bmN0aW9uIGlzIG5vdCBpbiBHUk9VUCBCWQBDb21tZW50IGZvciB0YWJsZXNwYWNlICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAFN0b3JhZ2UgZW5naW5lIGNhbid0IGRyb3AgdGFibGUgJyUtLjEyOXMnAFN0b3JhZ2UgZW5naW5lIGNhbid0IGRyb3AgdGFibGUgJyUtLjEyOXMnIGJlY2F1c2UgaXQgaXMgbWlzc2luZy4gVXNlIERST1AgVEFCTEUgSUYgRVhJU1RTIHRvIHJlbW92ZSBpdCBmcm9tIGRhdGEtZGljdGlvbmFyeS4ARHVwbGljYXRlIGZpbGUgbmFtZSBmb3IgdGFibGVzcGFjZSAnJS0uNjRzJwBQcm9ibGVtIHdoaWxlIGRyb3BwaW5nIGRhdGFiYXNlLiBDYW4ndCByZW1vdmUgZGF0YWJhc2UgZGlyZWN0b3J5ICglcykuIFBsZWFzZSByZW1vdmUgaXQgbWFudWFsbHkuAE5vIFNESSBmaWxlcyBtYXRjaGVkIHRoZSBwYXR0ZXJuICclcycAU2NoZW1hICclLjI1NnMnLCByZWZlcmVuY2VkIGluIFNESSwgZG9lcyBub3QgZXhpc3QuAFRhYmxlICclLjI1NnMuJS4yNTZzJywgcmVmZXJlbmNlZCBpbiBTREksIGFscmVhZHkgZXhpc3RzLgBJbXBvcnRlZCBteXNxbGRfdmVyc2lvbiAoJWxsdSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBjdXJyZW50ICglbGx1KQBJbXBvcnRlZCBkZCB2ZXJzaW9uICgldSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBjdXJyZW50ICgldSkASW1wb3J0ZWQgc2RpIHZlcnNpb24gKCVsbHUpIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggY3VycmVudCAoJWxsdSkASW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBoaW50ICVzAFZhcmlhYmxlICVzIGRvZXMgbm90IGV4aXN0IGluIHBlcnNpc3RlZCBjb25maWcgZmlsZQBMb25naXR1ZGUgJWYgaXMgb3V0IG9mIHJhbmdlIGluIGZ1bmN0aW9uICUuMTkycy4gSXQgbXVzdCBiZSB3aXRoaW4gKCVmLCAlZl0uAExhdGl0dWRlICVmIGlzIG91dCBvZiByYW5nZSBpbiBmdW5jdGlvbiAlLjE5MnMuIEl0IG11c3QgYmUgd2l0aGluIFslZiwgJWZdLgAlLjE5MnMoJS44MHMpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgZ2VvZ3JhcGhpYyBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLgBJbGxlZ2FsIHByaXZpbGVnZSBsZXZlbCBzcGVjaWZpZWQgZm9yICVzAEFjY2VzcyB0byBzeXN0ZW0gdmlldyBJTkZPUk1BVElPTl9TQ0hFTUEuJyUuNjRzJyBpcyByZWplY3RlZC4AVGhlIGxvZy1maWx0ZXIgY29tcG9uZW50ICIlcyIgZ290IGNvbmZ1c2VkIGF0ICIlcyIgLi4uAFBhcnRpdGlvbmluZyBleHByZXNzaW9uIGlzIHRvbyBsb25nLgBEUk9QIEZVTkNUSU9OIGNhbid0IGRyb3AgYSBkeW5hbWljYWxseSByZWdpc3RlcmVkIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgBVbmFibGUgdG8gc3RvcmUgY29sdW1uIHN0YXRpc3RpY3MgZm9yIGNvbHVtbiAnJS42NHMnIGluIHRhYmxlICclLjY0cycuJyUuNjRzJwBVbmFibGUgdG8gdXBkYXRlIGNvbHVtbiBzdGF0aXN0aWNzIGZvciBjb2x1bW4gJyUuNjRzJyBpbiB0YWJsZSAnJS42NHMnLiclLjY0cycAVW5hYmxlIHRvIHJlbW92ZSBjb2x1bW4gc3RhdGlzdGljcyBmb3IgY29sdW1uICclLjY0cycgaW4gdGFibGUgJyUuNjRzJy4nJS42NHMnAFVuYWJsZSB0byBidWlsZCBoaXN0b2dyYW0gc3RhdGlzdGljcyBmb3IgY29sdW1uICclLjY0cycgaW4gdGFibGUgJyUuNjRzJy4nJS42NHMnAFRoZSByb2xlICVzIGlzIGEgbWFuZGF0b3J5IHJvbGUgYW5kIGNhbid0IGJlIHJldm9rZWQgb3IgZHJvcHBlZC4gVGhlIHJlc3RyaWN0aW9uIGNhbiBiZSBsaWZ0ZWQgYnkgZXhjbHVkaW5nIHRoZSByb2xlIGlkZW50aWZpZXIgZnJvbSB0aGUgZ2xvYmFsIHZhcmlhYmxlIG1hbmRhdG9yeV9yb2xlcy4AVGFibGVzcGFjZSAnJS4xOTJzJyBkb2VzIG5vdCBoYXZlIGEgZmlsZSBuYW1lZCAnJS4xOTJzJwBBY2Nlc3MgZGVuaWVkOyB5b3UgbmVlZCAlLS4xMjhzIHByaXZpbGVnZXMgZm9yIHRoaXMgb3BlcmF0aW9uAFlvdSBuZWVkIHRoZSBTVVBFUiBwcml2aWxlZ2UgZm9yIGNvbW1hbmQgJyUtLjE5MnMnAFBhdGggaXMgd2l0aGluIHRoZSBjdXJyZW50IGRhdGEgZGlyZWN0b3J5ICclLS4xOTJzJwBDb25jdXJyZW50IERETCBpcyBwZXJmb3JtZWQgZHVyaW5nIGNsb25lIG9wZXJhdGlvbi4gUGxlYXNlIHRyeSBhZ2Fpbi4AVG9vIG1hbnkgY29uY3VycmVudCBjbG9uZSBvcGVyYXRpb25zLiBNYXhpbXVtIGFsbG93ZWQgLSAlZC4AVGhlIHRhYmxlIGluIHRyYW5zYWN0aW9uICVzIGRvZXMgbm90IGNvbXBseSB3aXRoIHRoZSByZXF1aXJlbWVudHMgYnkgYW4gZXh0ZXJuYWwgcGx1Z2luLgBSZWN1cnNpdmUgcXVlcnkgYWJvcnRlZCBhZnRlciAldSBpdGVyYXRpb25zLiBUcnkgaW5jcmVhc2luZyBAQGN0ZV9tYXhfcmVjdXJzaW9uX2RlcHRoIHRvIGEgbGFyZ2VyIHZhbHVlLgBWYXJpYWJsZSAlcyBjYW5ub3QgYmUgc2V0IHVzaW5nIFNFVF9WQVIgaGludC4AQ2Fubm90IHVzZSB0aGVzZSBjcmVkZW50aWFscyBmb3IgJyUuKnNAJS4qcycgYmVjYXVzZSB0aGV5IGNvbnRyYWRpY3QgdGhlIHBhc3N3b3JkIGhpc3RvcnkgcG9saWN5AE5vbi16ZXJvIHBhc3N3b3JkIGhpc3RvcnkgY2xhdXNlcyBpZ25vcmVkIGZvciB1c2VyICclcydAJyVzJyBhcyBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luICVzIGRvZXMgbm90IHN1cHBvcnQgcGFzc3dvcmQgaGlzdG9yeQBUaGUgY2xpZW50IGRvZXNuJ3Qgc3VwcG9ydCAlcwBUYWJsZXNwYWNlICclcycgd2FzIHNraXBwZWQgc2luY2UgaXRzIGRlZmluaXRpb24gaXMgYmVpbmcgbW9kaWZpZWQgYnkgY29uY3VycmVudCBEREwgc3RhdGVtZW50AEVuZ2luZSAnJS4xOTJzJyBkb2VzIG5vdCBtYXRjaCBzdG9yZWQgZW5naW5lICclLjE5MnMnIGZvciB0YWJsZXNwYWNlICclLjE5MnMnAFRoZSBTUklEIG9mIHRoZSBnZW9tZXRyeSBkb2VzIG5vdCBtYXRjaCB0aGUgU1JJRCBvZiB0aGUgY29sdW1uICclLjY0cycuIFRoZSBTUklEIG9mIHRoZSBnZW9tZXRyeSBpcyAlbHUsIGJ1dCB0aGUgU1JJRCBvZiB0aGUgY29sdW1uIGlzICVsdS4gQ29uc2lkZXIgY2hhbmdpbmcgdGhlIFNSSUQgb2YgdGhlIGdlb21ldHJ5IG9yIHRoZSBTUklEIHByb3BlcnR5IG9mIHRoZSBjb2x1bW4uAFRoZSBTUklEIHNwZWNpZmljYXRpb24gb24gdGhlIGNvbHVtbiAnJS42NHMnIGNhbm5vdCBiZSBjaGFuZ2VkIGJlY2F1c2UgdGhlcmUgaXMgYSBzcGF0aWFsIGluZGV4IG9uIHRoZSBjb2x1bW4uIFBsZWFzZSByZW1vdmUgdGhlIHNwYXRpYWwgaW5kZXggYmVmb3JlIGFsdGVyaW5nIHRoZSBTUklEIHNwZWNpZmljYXRpb24uAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucz0lLjE5MnMgd2lsbCBiZSBpZ25vcmVkIGFuZCB1cGRhdGVzIHdpbGwgYmUgd3JpdHRlbiBpbiBmdWxsIGZvcm1hdCB0byBiaW5hcnkgbG9nLgBXaGVuICUuMTkycywgdGhlIG9wdGlvbiBsb2dfYmluX3VzZV92MV9yb3dfZXZlbnRzPTEgd2lsbCBiZSBpZ25vcmVkIGFuZCByb3cgZXZlbnRzIHdpbGwgYmUgd3JpdHRlbiBpbiBuZXcgZm9ybWF0IHRvIGJpbmFyeSBsb2cuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucz0lLjE5MnMgd2lsbCBiZSB1c2VkIG9ubHkgZm9yIHRoZSBhZnRlci1pbWFnZS4gRnVsbCB2YWx1ZXMgd2lsbCBiZSB3cml0dGVuIGluIHRoZSBiZWZvcmUtaW1hZ2UsIHNvIHRoZSBzYXZpbmcgaW4gZGlzayBzcGFjZSBkdWUgdG8gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zIGlzIGxpbWl0ZWQgdG8gbGVzcyB0aGFuIDUwJSUuAENvdWxkIG5vdCBhcHBseSBKU09OIGRpZmYgaW4gdGFibGUgJS4qcywgY29sdW1uICVzLgBDb3JydXB0ZWQgSlNPTiBkaWZmIGZvciB0YWJsZSAlLipzLCBjb2x1bW4gJXMuAFJlc291cmNlIEdyb3VwICclLS4xOTJzJyBleGlzdHMAUmVzb3VyY2UgR3JvdXAgJyUtLjE5MnMnIGRvZXMgbm90IGV4aXN0LgBJbnZhbGlkIGNwdSBpZCAldQBJbnZhbGlkIFZDUFUgcmFuZ2UgJXUtJXUASW52YWxpZCB0aHJlYWQgcHJpb3JpdHkgdmFsdWUgJWQgZm9yICVzIHJlc291cmNlIGdyb3VwICVzLiBBbGxvd2VkIHJhbmdlIGlzIFslZCwgJWRdLgAlcyBvcGVyYXRpb24gaXMgZGlzYWxsb3dlZCBvbiAlcwBSZXNvdXJjZSBncm91cCAlcyBpcyBidXN5LgBSZXNvdXJjZSBncm91cCAlcyBpcyBkaXNhYmxlZC4ARmVhdHVyZSAlcyBpcyB1bnN1cHBvcnRlZCAoJXMpLgBBdHRyaWJ1dGUgJXMgaXMgaWdub3JlZCAoJXMpLgBJbnZhbGlkIHRocmVhZCBpZCAoJWxsdSkuAFVuYWJsZSB0byBiaW5kIHJlc291cmNlIGdyb3VwICVzIHdpdGggdGhyZWFkIGlkICglbGx1KS4oJXMpLgBPcHRpb24gRk9SQ0UgaW52YWxpZCBhcyBESVNBQkxFIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLgBUaGUgJXMgY29tbWFuZCBlbmNvdW50ZXJlZCBhIGZhaWx1cmUuICVzAEZhaWxlZCB0byAlcyBTREkgJyUuMTkycy4lLjE5MnMnIGluIHRhYmxlc3BhY2UgJyUuMTkycycuAE1pc3NpbmcgdmFsdWUgZm9yIEpTT05fVEFCTEUgY29sdW1uICclLjE5MnMnAENhbid0IHN0b3JlIGFuIGFycmF5IG9yIGFuIG9iamVjdCBpbiB0aGUgc2NhbGFyIEpTT05fVEFCTEUgY29sdW1uICclLjE5MnMnAEV2ZXJ5IHRhYmxlIGZ1bmN0aW9uIG11c3QgaGF2ZSBhbiBhbGlhcwBJTk5FUiBvciBMRUZUIEpPSU4gbXVzdCBiZSB1c2VkIGZvciBMQVRFUkFMIHJlZmVyZW5jZXMgbWFkZSBieSAnJS4xOTJzJwBWYWx1ZSBpcyBvdXQgb2YgcmFuZ2UgZm9yIEpTT05fVEFCTEUncyBjb2x1bW4gJyUuMTkycycATW9yZSB0aGFuIHN1cHBvcnRlZCAldSBORVNURUQgUEFUSHMgd2VyZSBmb3VuZCBpbiBKU09OX1RBQkxFICclLjE5MnMnAFRoZSBzZWxlY3RlZCBhdXRoZW50aWNhdGlvbiBtZXRob2QgJS4qcyBkb2VzIG5vdCBzdXBwb3J0IHBhc3N3b3JkIGV4cGlyYXRpb24ASW52YWxpZCBHZW9KU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6IE1lbWJlciAnY3JzJyBtdXN0IGJlIHNwZWNpZmllZCBpbiB0aGUgdG9wIGxldmVsIG9iamVjdC4AQ29sdW1uICclLS4xOTJzJyBjYW5ub3QgYmUgbnVsbABUaGUgc3BhdGlhbCBpbmRleCBvbiBjb2x1bW4gJyUuNjRzJyB3aWxsIG5vdCBiZSB1c2VkIGJ5IHRoZSBxdWVyeSBvcHRpbWl6ZXIgc2luY2UgdGhlIGNvbHVtbiBkb2VzIG5vdCBoYXZlIGFuIFNSSUQgYXR0cmlidXRlLiBDb25zaWRlciBhZGRpbmcgYW4gU1JJRCBhdHRyaWJ1dGUgdG8gdGhlIGNvbHVtbi4AQ3JlYXRlIHRhYmxlL3RhYmxlc3BhY2UgJyUtLjE5MnMnIGZhaWxlZCwgYXMgZGlzayBpcyBmdWxsAENvdWxkIG5vdCBwYXJzZSBhcmd1bWVudCB0byBkaWdlc3QgZnVuY3Rpb246ICIlcyIuAENvdWxkIG5vdCBwYXJzZSBhcmd1bWVudCB0byBkaWdlc3QgZnVuY3Rpb24uAFNjaGVtYSBkaXJlY3RvcnkgJyUuMTkycycgYWxyZWFkeSBleGlzdHMuIFRoaXMgbXVzdCBiZSByZXNvbHZlZCBtYW51YWxseSAoZS5nLiBieSBtb3ZpbmcgdGhlIHNjaGVtYSBkaXJlY3RvcnkgdG8gYW5vdGhlciBsb2NhdGlvbikuAFNjaGVtYSBkaXJlY3RvcnkgJyUuMTkycycgZG9lcyBub3QgZXhpc3QARmFpbGVkIHRvIGNyZWF0ZSBzY2hlbWEgZGlyZWN0b3J5ICclLjE5MnMnIChlcnJubzogJWQgLSAlcykAU2NoZW1hICclLjE5MnMnIGRvZXMgbm90IGV4aXN0LCBidXQgc2NoZW1hIGRpcmVjdG9yeSAnJS4xOTJzJyB3YXMgZm91bmQuIFRoaXMgbXVzdCBiZSByZXNvbHZlZCBtYW51YWxseSAoZS5nLiBieSBtb3ZpbmcgdGhlIHNjaGVtYSBkaXJlY3RvcnkgdG8gYW5vdGhlciBsb2NhdGlvbikuAEZ1bmN0aW9uICUuMTkycyBpcyBvbmx5IGRlZmluZWQgZm9yIFNSSUQgMCBhbmQgU1JJRCA0MzI2LgBUaGUgb3B0aW9uIGV4cGlyZV9sb2dzX2RheXMgYW5kIGJpbmxvZ19leHBpcmVfbG9nc19zZWNvbmRzIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyLiBQbGVhc2UgdXNlIGJpbmxvZ19leHBpcmVfbG9nc19zZWNvbmRzIHRvIHNldCB0aGUgZXhwaXJlIHRpbWUgKGV4cGlyZV9sb2dzX2RheXMgaXMgZGVwcmVjYXRlZCkAVGhlIHJlc3VsdCBzdHJpbmcgaXMgbGFyZ2VyIHRoYW4gdGhlIHJlc3VsdCBidWZmZXIuAElsbGVnYWwgYXJndW1lbnQgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uAEluZGV4IG91dCBvZiBib3VuZHMgaW4gcmVndWxhciBleHByZXNzaW9uIHNlYXJjaC4ASW50ZXJuYWwgZXJyb3IgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5LgBTeW50YXggZXJyb3IgaW4gcmVndWxhciBleHByZXNzaW9uIG9uIGxpbmUgJXUsIGNoYXJhY3RlciAldS4AVW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnMgYSBmZWF0dXJlIHRoYXQgaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgbGlicmFyeSB2ZXJzaW9uLgBNaXNtYXRjaGVkIHBhcmVudGhlc2lzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4ASW5jb3JyZWN0IGRlc2NyaXB0aW9uIG9mIGEge21pbixtYXh9IGludGVydmFsLgBUaGUgbWF4aW11bSBpcyBsZXNzIHRoYW4gdGhlIG1pbnVtdW0gaW4gYSB7bWluLG1heH0gaW50ZXJ2YWwuAEludmFsaWQgYmFjay1yZWZlcmVuY2UgaW4gcmVndWxhciBleHByZXNzaW9uLgBUaGUgbG9vay1iZWhpbmQgYXNzZXJ0aW9uIGV4Y2VlZHMgdGhlIGxpbWl0IGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4AVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucyBhbiB1bmNsb3NlZCBicmFja2V0IGV4cHJlc3Npb24uAFRoZSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnMgYW4gW3gteV0gY2hhcmFjdGVyIHJhbmdlIHdoZXJlIHggY29tZXMgYWZ0ZXIgeS4AT3ZlcmZsb3cgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBiYWNrdHJhY2sgc3RhY2suAFRpbWVvdXQgZXhjZWVkZWQgaW4gcmVndWxhciBleHByZXNzaW9uIG1hdGNoLgBUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gZXhjZWVkcyBsaW1pdHMgb24gc2l6ZSBvciBjb21wbGV4aXR5LgBWYWx1ZSBmb3IgJXMgZ290IGNvbmZ1c2luZyBhdCBvciBhcm91bmQgIiVzIi4gU3ludGF4IG1heSBiZSB3cm9uZywgY29tcG9uZW50IG1heSBub3QgYmUgSU5TVEFMTGVkLCBvciBhIGNvbXBvbmVudCB0aGF0IGRvZXMgbm90IHN1cHBvcnQgaW5zdGFuY2VzIG1heSBiZSBsaXN0ZWQgbW9yZSB0aGFuIG9uY2UuAFNldHRpbmcgYW4gZW1wdHkgJXMgcGlwZWxpbmUgZGlzYWJsZXMgZXJyb3IgbG9nZ2luZyEAZmlsdGVyICVzOiAlcwAlLjE5MnMoJS44MHMpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgQ2FydGVzaWFuIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMuACUuMTkycyglLjgwcykgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciBwcm9qZWN0ZWQgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcy4ASW52YWxpZCByYWRpdXMgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6IFJhZGl1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBSZXN0YXJ0IHNlcnZlciBmYWlsZWQgKCVzKS4ATWlzc2luZyBtYW5kYXRvcnkgYXR0cmlidXRlICVzLgBNdWx0aXBsZSBkZWZpbml0aW9ucyBvZiBhdHRyaWJ1dGUgJXMuAFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gbmFtZSBjYW4ndCBiZSBhbiBlbXB0eSBzdHJpbmcgb3Igc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4AVGhlIG9yZ2FuaXphdGlvbiBuYW1lIGNhbid0IGJlIGFuIGVtcHR5IHN0cmluZyBvciBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlLgBUaGVyZSBpcyBhbHJlYWR5IGEgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHdpdGggU1JJRCAldS4AVGhlcmUgaXMgYWxyZWFkeSBhIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuAFNSSUQgMCBpcyBub3QgbW9kaWZpYWJsZS4AVGhlIFNSSUQgcmFuZ2UgWyV1LCAldV0gaGFzIGJlZW4gcmVzZXJ2ZWQgZm9yIHN5c3RlbSB1c2UuIFNSU3MgaW4gdGhpcyByYW5nZSBtYXkgYmUgYWRkZWQsIG1vZGlmaWVkIG9yIHJlbW92ZWQgd2l0aG91dCB3YXJuaW5nIGR1cmluZyB1cGdyYWRlLgBDYW4ndCBtb2RpZnkgU1JJRCAldS4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNvbHVtbiBkZXBlbmRpbmcgb24gaXQuAEludmFsaWQgY2hhcmFjdGVyIGluIGF0dHJpYnV0ZSAlcy4AQXR0cmlidXRlICVzIGlzIHRvbyBsb25nLiBUaGUgbWF4aW11bSBsZW5ndGggaXMgJXUgY2hhcmFjdGVycy4AJ3V0ZjgnIGlzIGN1cnJlbnRseSBhbiBhbGlhcyBmb3IgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgYnV0IHdpbGwgYmUgYW4gYWxpYXMgZm9yIFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuAE5BVElPTkFML05DSEFSL05WQVJDSEFSIGltcGxpZXMgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgd2hpY2ggd2lsbCBiZSByZXBsYWNlZCBieSBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBDSEFSKHgpIENIQVJBQ1RFUiBTRVQgVVRGOE1CNCBpbiBvcmRlciB0byBiZSB1bmFtYmlndW91cy4ASW52YWxpZCBkZWZhdWx0IGNvbGxhdGlvbiAlczogdXRmOG1iNF8wOTAwX2FpX2NpIG9yIHV0ZjhtYjRfZ2VuZXJhbF9jaSBleHBlY3RlZABVbmFibGUgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBmb3IgY29sdW1uICclLS4xOTJzJzogJS0uMTkycy4AVGhlIHRhYmxlICclLS4xOTJzJyBtYXkgbm90IGJlIGNyZWF0ZWQgaW4gdGhlIHJlc2VydmVkIHRhYmxlc3BhY2UgJyUtLjE5MnMnLgBUaGlzIG9wdGlvbiBjYW5ub3QgYmUgc2V0ICVzLgBBIGNvbW1pdCBmb3IgYW4gYXRvbWljIERETCBzdGF0ZW1lbnQgd2FzIHVuc3VjY2Vzc2Z1bCBvbiB0aGUgc291cmNlIGFuZCB0aGUgcmVwbGljYS4gVGhlIHJlcGxpY2Egc3VwcG9ydHMgYXRvbWljIERETCBzdGF0ZW1lbnRzIGJ1dCB0aGUgc291cmNlIGRvZXMgbm90LCBzbyB0aGUgYWN0aW9uIHRha2VuIGJ5IHRoZSByZXBsaWNhIGFuZCBzb3VyY2UgbWlnaHQgZGlmZmVyLiBDaGVjayB0aGF0IHRoZWlyIHN0YXRlcyBoYXZlIG5vdCBkaXZlcmdlZCBiZWZvcmUgcHJvY2VlZGluZy4ARnVuY3Rpb24gJXMgaXMgb25seSBkZWZpbmVkIGZvciBnZW9ncmFwaGljIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMsIGJ1dCBvbmUgb2YgaXRzIGFyZ3VtZW50cyBpcyBpbiBTUklEICV1LCB3aGljaCBpcyBub3QgZ2VvZ3JhcGhpYy4ARnVuY3Rpb24gJXMgZW5jb3VudGVyZWQgYSBwb2x5Z29uIHRoYXQgd2FzIHRvbyBsYXJnZS4gUG9seWdvbnMgbXVzdCBjb3ZlciBsZXNzIHRoYW4gaGFsZiB0aGUgcGxhbmV0LgBTcGF0aWFsIGluZGV4ZXMgY2FuJ3QgYmUgcHJpbWFyeSBvciB1bmlxdWUgaW5kZXhlcy4AVGhlIGluZGV4IHR5cGUgJS4yMHMgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3BhdGlhbCBpbmRleGVzLgBDYW5ub3QgZHJvcCB0YWJsZSAnJXMnIHJlZmVyZW5jZWQgYnkgYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclcycgb24gdGFibGUgJyVzJy4AQSBwYXJhbWV0ZXIgb2YgZnVuY3Rpb24gJS4xOTJzIGNvbnRhaW5zIGEgZ2VvbWV0cnkgd2l0aCBsb25naXR1ZGUgJWYsIHdoaWNoIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSB3aXRoaW4gKCVmLCAlZl0uAEEgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uICUuMTkycyBjb250YWlucyBhIGdlb21ldHJ5IHdpdGggbGF0aXR1ZGUgJWYsIHdoaWNoIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSB3aXRoaW4gWyVmLCAlZl0uAEZvcmVpZ24ga2V5ICclcycgdXNlcyB2aXJ0dWFsIGNvbHVtbiAnJXMnIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuIE1pc3NpbmcgY29sdW1uICclcycgZm9yIGNvbnN0cmFpbnQgJyVzJyBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSAnJXMnACVzOiBDb3VsZCBub3QgYWRkIHN1cHByZXNzaW9uIHJ1bGUgZm9yIGNvZGUgIiVzIi4gUnVsZS1zZXQgbWF5IGJlIGZ1bGwsIG9yIGNvZGUgbWF5IG5vdCBjb3JyZXNwb25kIHRvIGFuIGVycm9yLWxvZyBtZXNzYWdlLgBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGRlZmluaXRpb24gZm9yIFNSSUQgJXUgc3BlY2lmaWVzIGludmFsaWQgZ2VvZ3JhcGhpYyBheGVzICclLjIwcycgYW5kICclLjIwcycuIE9uZSBheGlzIG11c3QgYmUgTk9SVEggb3IgU09VVEggYW5kIHRoZSBvdGhlciBtdXN0IGJlIEVBU1Qgb3IgV0VTVC4AVGhlIGxlbmd0aCBvZiB0aGUgc2VtaS1tYWpvciBheGlzIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIuAFRoZSBpbnZlcnNlIGZsYXR0ZW5pbmcgbXVzdCBiZSBsYXJnZXIgdGhhbiAxLjAsIG9yIDAuMCBpZiB0aGUgZWxsaXBzb2lkIGlzIGEgc3BoZXJlLgBUaGUgYW5ndWxhciB1bml0IGNvbnZlcnNpb24gZmFjdG9yIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIuAFRoZSBwcmltZSBtZXJpZGlhbiBtdXN0IGJlIHdpdGhpbiAoLTE4MCwgMTgwXSBkZWdyZWVzLCBzcGVjaWZpZWQgaW4gdGhlIFNSUyBhbmd1bGFyIHVuaXQuAFRyYW5zZm9ybWF0aW9uIGZyb20gU1JJRCAldSBpcyBub3Qgc3VwcG9ydGVkLgBUcmFuc2Zvcm1hdGlvbiB0byBTUklEICV1IGlzIG5vdCBzdXBwb3J0ZWQuAFRyYW5zZm9ybWF0aW9uIGZyb20gU1JJRCAldSBpcyBub3Qgc3VwcG9ydGVkLiBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGhhcyBubyBUT1dHUzg0IGNsYXVzZS4AVHJhbnNmb3JtYXRpb24gdG8gU1JJRCAldSBpcyBub3Qgc3VwcG9ydGVkLiBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGhhcyBubyBUT1dHUzg0IGNsYXVzZS4AQ2hhbmdpbmcgQEBzZXNzaW9uLmJpbmxvZ19mb3JtYXQgaXMgZGlzYWxsb3dlZCB3aGVuIHRoZSBzZXNzaW9uIGhhcyBvcGVuIHRlbXBvcmFyeSB0YWJsZShzKS4gWW91IGNvdWxkIHdhaXQgdW50aWwgdGhlc2UgdGVtcG9yYXJ5IHRhYmxlKHMpIGFyZSBkcm9wcGVkIGFuZCB0cnkgYWdhaW4uAENoYW5naW5nIEBAZ2xvYmFsLmJpbmxvZ19mb3JtYXQgb3IgQEBwZXJzaXN0LmJpbmxvZ19mb3JtYXQgaXMgZGlzYWxsb3dlZCB3aGVuIGFueSByZXBsaWNhdGlvbiBjaGFubmVsIGhhcyBvcGVuIHRlbXBvcmFyeSB0YWJsZShzKS4gWW91IGNvdWxkIHdhaXQgdW50aWwgUmVwbGljYV9vcGVuX3RlbXBfdGFibGVzID0gMCBhbmQgdHJ5IGFnYWluAENoYW5naW5nIEBAZ2xvYmFsLmJpbmxvZ19mb3JtYXQgb3IgQEBwZXJzaXN0LmJpbmxvZ19mb3JtYXQgaXMgZGlzYWxsb3dlZCB3aGVuIGFueSByZXBsaWNhdGlvbiBjaGFubmVsIGFwcGxpZXIgdGhyZWFkIGlzIHJ1bm5pbmcuIFlvdSBjb3VsZCBleGVjdXRlIFNUT1AgUkVQTElDQSBTUUxfVEhSRUFEIGFuZCB0cnkgYWdhaW4uAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIGFuZCBEUk9QIFRFTVBPUkFSWSBUQUJMRSBhcmUgbm90IGFsbG93ZWQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gb3IgaW5zaWRlIGEgcHJvY2VkdXJlIGluIGEgdHJhbnNhY3Rpb25hbCBjb250ZXh0IHdoZW4gQEBzZXNzaW9uLmJpbmxvZ19mb3JtYXQ9U1RBVEVNRU5ULgBYQTogRmFpbGVkIHRvIHRha2UgTURMIExvY2sgYmFja3VwIG9mIFBSRVBBUkVEIFhBIHRyYW5zYWN0aW9uIGR1cmluZyBjbGllbnQgZGlzY29ubmVjdC4AVW5hYmxlIHRvIGNyZWF0ZSBvciBjaGFuZ2UgYSB0YWJsZSB3aXRob3V0IGEgcHJpbWFyeSBrZXksIHdoZW4gdGhlIHN5c3RlbSB2YXJpYWJsZSAnc3FsX3JlcXVpcmVfcHJpbWFyeV9rZXknIGlzIHNldC4gQWRkIGEgcHJpbWFyeSBrZXkgdG8gdGhlIHRhYmxlIG9yIHVuc2V0IHRoaXMgdmFyaWFibGUgdG8gYXZvaWQgdGhpcyBtZXNzYWdlLiBOb3RlIHRoYXQgdGFibGVzIHdpdGhvdXQgYSBwcmltYXJ5IGtleSBjYW4gY2F1c2UgcGVyZm9ybWFuY2UgcHJvYmxlbXMgaW4gcm93LWJhc2VkIHJlcGxpY2F0aW9uLCBzbyBwbGVhc2UgY29uc3VsdCB5b3VyIERCQSBiZWZvcmUgY2hhbmdpbmcgdGhpcyBzZXR0aW5nLgBEYXRhIHRydW5jYXRlZCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJXMnIGF0IHJvdyAlbGQAVmFsdWUgaXMgb3V0IG9mIHJhbmdlIGZvciBmdW5jdGlvbmFsIGluZGV4ICclcycgYXQgcm93ICVsZABDYW5ub3QgY3JlYXRlIGEgZnVuY3Rpb25hbCBpbmRleCBvbiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIEpTT04gb3IgR0VPTUVUUlkgdmFsdWUuAEZ1bmN0aW9uYWwgaW5kZXggJyUuNjRzJyBjYW5ub3QgcmVmZXIgdG8gYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uLgBDYW5ub3QgZHJvcCBjb2x1bW4gJyUtLjY0cycgYmVjYXVzZSBpdCBpcyB1c2VkIGJ5IGEgZnVuY3Rpb25hbCBpbmRleC4gSW4gb3JkZXIgdG8gZHJvcCB0aGUgY29sdW1uLCB5b3UgbXVzdCByZW1vdmUgdGhlIGZ1bmN0aW9uYWwgaW5kZXguAFRoZSBwcmltYXJ5IGtleSBjYW5ub3QgYmUgYSBmdW5jdGlvbmFsIGluZGV4AENhbm5vdCBjcmVhdGUgYSBmdW5jdGlvbmFsIGluZGV4IG9uIGFuIGV4cHJlc3Npb24gdGhhdCByZXR1cm5zIGEgQkxPQiBvciBURVhULiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgQ0FTVC4ARXhwcmVzc2lvbiBvZiBmdW5jdGlvbmFsIGluZGV4ICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uLgBGdWxsdGV4dCBmdW5jdGlvbmFsIGluZGV4IGlzIG5vdCBzdXBwb3J0ZWQuAFNwYXRpYWwgZnVuY3Rpb25hbCBpbmRleCBpcyBub3Qgc3VwcG9ydGVkLgBUaGUgdXNlZCBzdG9yYWdlIGVuZ2luZSBjYW5ub3QgaW5kZXggdGhlIGV4cHJlc3Npb24gJyVzJy4ARnVuY3Rpb25hbCBpbmRleCBvbiBhIGNvbHVtbiBpcyBub3Qgc3VwcG9ydGVkLiBDb25zaWRlciB1c2luZyBhIHJlZ3VsYXIgaW5kZXggaW5zdGVhZC4ARXhwcmVzc2lvbiBvZiBnZW5lcmF0ZWQgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uOiAlcy4ARXhwcmVzc2lvbiBvZiBnZW5lcmF0ZWQgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGEgcm93IHZhbHVlLgBFeHByZXNzaW9uIG9mIGdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdXNlciBvciBzeXN0ZW0gdmFyaWFibGVzLgBDb2x1bW4gJyVzJyBvZiB0YWJsZSAnJXMnIGhhcyBhIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBkZXBlbmRlbmN5IGFuZCBjYW5ub3QgYmUgZHJvcHBlZCBvciByZW5hbWVkLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGEgY29sdW1uIGRlZmluZWQgYWZ0ZXIgaXQgaWYgdGhhdCBjb2x1bW4gaXMgYSBnZW5lcmF0ZWQgY29sdW1uIG9yIGhhcyBhbiBleHByZXNzaW9uIGFzIGRlZmF1bHQgdmFsdWUuAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uOiAlcy4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB0byBhIHJvdyB2YWx1ZS4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB1c2VyIG9yIHN5c3RlbSB2YXJpYWJsZXMuAERFRkFVTFQgZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgd2l0aCBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zACclcycgaXMgbm90IHN1cHBvcnRlZCBmb3IgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucy4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IEFMVEVSIFRBQkxFIC4uLiBBREQgQ09MVU1OIC4uIHdpdGggZXhwcmVzc2lvbiBhcyBERUZBVUxULgBDYW5ub3QgY2hhbmdlIHRhYmxlJ3Mgc3RvcmFnZSBlbmdpbmUgYmVjYXVzZSB0aGUgdGFibGUgcGFydGljaXBhdGVzIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludC4AU2V0dGluZyB1c2VyIHZhcmlhYmxlcyB3aXRoaW4gZXhwcmVzc2lvbnMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIGFsdGVybmF0aXZlczogJ1NFVCB2YXJpYWJsZT1leHByZXNzaW9uLCAuLi4nLCBvciAnU0VMRUNUIGV4cHJlc3Npb24ocykgSU5UTyB2YXJpYWJsZXMocyknLgAnJS0uNjRzJyBpcyBhIGNvbGxhdGlvbiBvZiB0aGUgZGVwcmVjYXRlZCBjaGFyYWN0ZXIgc2V0IFVURjhNQjMuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IHdpdGggYW4gYXBwcm9wcmlhdGUgY29sbGF0aW9uIGluc3RlYWQuAE5lc3RlZCBjb21tZW50IHN5bnRheCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AUmVmZXJlbmNpbmcgY29sdW1uICclcycgYW5kIHJlZmVyZW5jZWQgY29sdW1uICclcycgaW4gZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJXMnIGFyZSBpbmNvbXBhdGlibGUuAFRpbWVvdXQgZXhjZWVkZWQgZm9yIGhlbGQgc3RhdGVtZW50IHdoaWxlIG5ldyBHcm91cCBSZXBsaWNhdGlvbiBwcmltYXJ5IG1lbWJlciBpcyBhcHBseWluZyBiYWNrbG9nLgBIZWxkIHN0YXRlbWVudCBhYm9ydGVkIGJlY2F1c2UgR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIGdvdCBzaHV0IGRvd24gb3IgdGhyZWFkIHdhcyBraWxsZWQgd2hpbGUgbmV3IHByaW1hcnkgbWVtYmVyIHdhcyBhcHBseWluZyBiYWNrbG9nLgBIZWxkIHN0YXRlbWVudCB3YXMgYWJvcnRlZCBkdWUgdG8gbWVtYmVyIGJlaW5nIGluIGVycm9yIHN0YXRlLCB3aGlsZSBiYWNrbG9nIGlzIGJlaW5nIGFwcGxpZWQgZHVyaW5nIEdyb3VwIFJlcGxpY2F0aW9uIHByaW1hcnkgZWxlY3Rpb24uAEZhaWxlZCB0byBmZXRjaCBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAENhbid0IGZpbmQga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGluIHRoZSBzZXJ2ZXIgbG9nIGlmIGEga2V5cmluZyBpcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4ARmV0Y2hlZCBhbiBpbnZhbGlkIGtleSBmcm9tIGtleXJpbmcuAEVycm9yIHJlYWRpbmcgYSByZXBsaWNhdGlvbiBsb2cgZW5jcnlwdGlvbiBoZWFkZXI6ICVzLgBGYWlsZWQgdG8gcm90YXRlIHNvbWUgbG9ncyBhZnRlciBjaGFuZ2luZyBiaW5sb2cgZW5jcnlwdGlvbiBzZXR0aW5ncy4gUGxlYXNlIGZpeCB0aGUgcHJvYmxlbSBhbmQgcm90YXRlIHRoZSBsb2dzIG1hbnVhbGx5LgBLZXkgJXMgZXhpc3RzIHVuZXhwZWN0ZWQuAEZhaWxlZCB0byBnZW5lcmF0ZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHN0b3JlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gcmVtb3ZlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gY2hhbmdlIGJpbmxvZ19lbmNyeXB0aW9uIHZhbHVlLiAlLS44MHMuAFVuYWJsZSB0byByZWNvdmVyIGJpbmxvZyBlbmNyeXB0aW9uIG1hc3RlciBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4Ac2xvdyBxdWVyeSBsb2cgZmlsZSBmb3JtYXQgY2hhbmdlZCBhcyByZXF1ZXN0ZWQsIGJ1dCBzZXR0aW5nIHdpbGwgaGF2ZSBubyBlZmZlY3Qgd2hlbiBub3QgYWN0dWFsbHkgbG9nZ2luZyB0byBhIGZpbGUuAFRoZSBvcHRpb24gZ3JvdXBfcmVwbGljYXRpb25fY29uc2lzdGVuY3kgY2Fubm90IGJlIHVzZWQgb24gdGhlIGN1cnJlbnQgbWVtYmVyIHN0YXRlLgBFcnJvciB3aGlsZSB3YWl0aW5nIGZvciBncm91cCB0cmFuc2FjdGlvbnMgY29tbWl0IG9uIGdyb3VwX3JlcGxpY2F0aW9uX2NvbnNpc3RlbmN5PSAnQkVGT1JFJy4ARXJyb3Igd2hpbGUgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zIHdpdGggZ3JvdXBfcmVwbGljYXRpb25fY29uc2lzdGVuY3k9ICdBRlRFUicgdG8gY29tbWl0LgBUaGUgR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIGlzIHN0b3BwaW5nLCB0aGVyZWZvcmUgbmV3IHRyYW5zYWN0aW9ucyBhcmUgbm90IGFsbG93ZWQgdG8gc3RhcnQuAEV4cHJlc3Npb24gb2YgZnVuY3Rpb25hbCBpbmRleCAnJXMnIGNhbm5vdCByZWZlciB0byBhIHJvdyB2YWx1ZS4ARmFpbGVkIHRvIGVuY3J5cHQgY29udGVudCB0byB3cml0ZSBpbnRvIGJpbmxvZyBmaWxlOiAlcy4AUGFnZSBUcmFja2luZyBpcyBub3Qgc3RhcnRlZCB5ZXQuAFRyYWNraW5nIHdhcyBub3QgZW5hYmxlZCBmb3IgdGhlIExTTiByYW5nZSBzcGVjaWZpZWQAQ2Fubm90IHB1cmdlIGRhdGEgd2hlbiBjb25jdXJyZW50IGNsb25lIGlzIGluIHByb2dyZXNzLiBUcnkgbGF0ZXIuAENhbm5vdCByb3RhdGUgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHdoZW4gJ2JpbmxvZy1lbmNyeXB0aW9uJyBpcyBvZmYuAFVuYWJsZSB0byByZWNvdmVyIGJpbmFyeSBsb2cgbWFzdGVyIGtleSwgdGhlIGNvbWJpbmF0aW9uIG9mIG5ld19tYXN0ZXJfa2V5X3NlcW5vPSV1LCBtYXN0ZXJfa2V5X3NlcW5vPSV1IGFuZCBvbGRfbWFzdGVyX2tleV9zZXFubz0ldSBhcmUgd3JvbmcuAEZhaWxlZCB0byBvcGVyYXRlIGJpbmFyeSBsb2cgbWFzdGVyIGtleSBvbiBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuIFRoZSBzdGF0ZW1lbnQgaGFkIG5vIGVmZmVjdDogdGhlIG9sZCBiaW5hcnkgbG9nIG1hc3RlciBrZXkgaXMgc3RpbGwgaW4gdXNlLCB0aGUga2V5cmluZywgYmluYXJ5IGFuZCByZWxheSBsb2cgZmlsZXMgYXJlIHVuY2hhbmdlZCwgYW5kIHRoZSBzZXJ2ZXIgY291bGQgbm90IHN0YXJ0IHVzaW5nIGEgbmV3IGJpbmFyeSBsb2cgbWFzdGVyIGtleSBmb3IgZW5jcnlwdGluZyBuZXcgYmluYXJ5IGFuZCByZWxheSBsb2cgZmlsZXMuAEZhaWxlZCB0byByb3RhdGUgb25lIG9yIG1vcmUgYmluYXJ5IG9yIHJlbGF5IGxvZyBmaWxlcy4gQSBuZXcgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHdhcyBnZW5lcmF0ZWQgYW5kIHdpbGwgYmUgdXNlZCB0byBlbmNyeXB0IG5ldyBiaW5hcnkgYW5kIHJlbGF5IGxvZyBmaWxlcy4gVGhlcmUgbWF5IHN0aWxsIGV4aXN0IGJpbmFyeSBvciByZWxheSBsb2cgZmlsZXMgdXNpbmcgdGhlIHByZXZpb3VzIGJpbmFyeSBsb2cgbWFzdGVyIGtleS4AJXMuIEEgbmV3IGJpbmFyeSBsb2cgbWFzdGVyIGtleSB3YXMgZ2VuZXJhdGVkIGFuZCB3aWxsIGJlIHVzZWQgdG8gZW5jcnlwdCBuZXcgYmluYXJ5IGFuZCByZWxheSBsb2cgZmlsZXMuIFRoZXJlIG1heSBzdGlsbCBleGlzdCBiaW5hcnkgb3IgcmVsYXkgbG9nIGZpbGVzIHVzaW5nIHRoZSBwcmV2aW91cyBiaW5hcnkgbG9nIG1hc3RlciBrZXkuAEZhaWxlZCB0byByZW1vdmUgdW51c2VkIGJpbmFyeSBsb2cgZW5jcnlwdGlvbiBrZXlzIGZyb20gdGhlIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4gVGhlIHVudXNlZCBiaW5hcnkgbG9nIGVuY3J5cHRpb24ga2V5cyBtYXkgc3RpbGwgZXhpc3QgaW4gdGhlIGtleXJpbmcsIGFuZCB0aGV5IHdpbGwgYmUgcmVtb3ZlZCB1cG9uIHNlcnZlciByZXN0YXJ0IG9yIG5leHQgJ0FMVEVSIElOU1RBTkNFIFJPVEFURSBCSU5MT0cgTUFTVEVSIEtFWScgZXhlY3V0aW9uLgBGYWlsZWQgdG8gcmVtb3ZlIGF1eGlsaWFyeSBiaW5hcnkgbG9nIGVuY3J5cHRpb24ga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLiBUaGUgY2xlYW51cCBvZiB0aGUgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHJvdGF0aW9uIHByb2Nlc3MgZGlkIG5vdCBmaW5pc2ggYXMgZXhwZWN0ZWQgYW5kIHRoZSBjbGVhbnVwIHdpbGwgdGFrZSBwbGFjZSB1cG9uIHNlcnZlciByZXN0YXJ0IG9yIG5leHQgJ0FMVEVSIElOU1RBTkNFIFJPVEFURSBCSU5MT0cgTUFTVEVSIEtFWScgZXhlY3V0aW9uLgBBbiBleHByZXNzaW9uIG9mIG5vbi1ib29sZWFuIHR5cGUgc3BlY2lmaWVkIHRvIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycuAENvbHVtbiBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyByZWZlcmVuY2VzIG90aGVyIGNvbHVtbi4AQW4gZXhwcmVzc2lvbiBvZiBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNvbnRhaW5zIGRpc2FsbG93ZWQgZnVuY3Rpb246ICVzLgBBbiBleHByZXNzaW9uIG9mIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgY29udGFpbnMgZGlzYWxsb3dlZCBmdW5jdGlvbi4AQW4gZXhwcmVzc2lvbiBvZiBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNhbm5vdCByZWZlciB0byBhIHVzZXIgb3Igc3lzdGVtIHZhcmlhYmxlLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBjYW5ub3QgcmVmZXIgdG8gYSByb3cgdmFsdWUuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNhbm5vdCByZWZlciB0byBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4uAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGlzIHZpb2xhdGVkLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyByZWZlcnMgdG8gbm9uLWV4aXN0aW5nIGNvbHVtbiAnJS0uMTkycycuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGlzIG5vdCBmb3VuZCBpbiB0aGUgdGFibGUuAER1cGxpY2F0ZSBjaGVjayBjb25zdHJhaW50IG5hbWUgJyUtLjE5MnMnLgBDb2x1bW4gJyUtLjE5MnMnIGNhbm5vdCBiZSB1c2VkIGluIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycyc6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIHJlZmVyZW50aWFsIGFjdGlvbi4AQ3JlYXRpbmcgYW4gdW5lbmNyeXB0ZWQgdGFibGUgaW4gYSBkYXRhYmFzZSB3aXRoIGRlZmF1bHQgZW5jcnlwdGlvbiBlbmFibGVkLgBSZXF1ZXN0IHRvIGNyZWF0ZSAlcyB0YWJsZSB3aGlsZSB1c2luZyBhbiAlcyB0YWJsZXNwYWNlLgBUYWJsZSBlbmNyeXB0aW9uIGRpZmZlciBmcm9tIGl0cyBkYXRhYmFzZSBkZWZhdWx0IGVuY3J5cHRpb24sIGFuZCB1c2VyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlLgBEYXRhYmFzZSBkZWZhdWx0IGVuY3J5cHRpb24gZGlmZmVyIGZyb20gJ2RlZmF1bHRfdGFibGVfZW5jcnlwdGlvbicgc2V0dGluZywgYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAFRhYmxlc3BhY2UgZW5jcnlwdGlvbiBkaWZmZXIgZnJvbSAnZGVmYXVsdF90YWJsZV9lbmNyeXB0aW9uJyBzZXR0aW5nLCBhbmQgdXNlciBkb2Vzbid0IGhhdmUgZW5vdWdoIHByaXZpbGVnZS4AVGhpcyB0YWJsZXNwYWNlIGNhbid0IGJlIGVuY3J5cHRlZCwgYmVjYXVzZSBvbmUgb2YgdGFibGUncyBzY2hlbWEgaGFzIGRlZmF1bHQgZW5jcnlwdGlvbiBPRkYgYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAFRoaXMgdGFibGVzcGFjZSBjYW4ndCBiZSBkZWNyeXB0ZWQsIGJlY2F1c2Ugb25lIG9mIHRhYmxlJ3Mgc2NoZW1hIGhhcyBkZWZhdWx0IGVuY3J5cHRpb24gT04gYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAENhbm5vdCBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIHRhYmxlc3BhY2UgbmFtZWQgJyVzJy4AU291cmNlIHRhYmxlc3BhY2UgaXMgZW5jcnlwdGVkIGJ1dCB0YXJnZXQgdGFibGVzcGFjZSBpcyBub3QuAEVOQ1JZUFRJT04gY2xhdXNlIGlzIG5vdCB2YWxpZCBmb3IgJXMgdGFibGVzcGFjZS4ATXVsdGlwbGUgJXMgY2xhdXNlcwBHUkFOVCAuLi4gQVMgaXMgY3VycmVudGx5IHN1cHBvcnRlZCBvbmx5IGZvciBnbG9iYWwgcHJpdmlsZWdlcy4ARWl0aGVyIHNvbWUgb2YgdGhlIGF1dGhvcml6YXRpb24gSURzIGluIHRoZSBBUyBjbGF1c2UgYXJlIGludmFsaWQgb3IgdGhlIGN1cnJlbnQgdXNlciBsYWNrcyBwcml2aWxlZ2VzIHRvIGV4ZWN1dGUgdGhlIHN0YXRlbWVudC4AQ29sdW1uICclcycgaGFzIGEgZnVuY3Rpb25hbCBpbmRleCBkZXBlbmRlbmN5IGFuZCBjYW5ub3QgYmUgZHJvcHBlZCBvciByZW5hbWVkLgBQbHVnaW4gJyVzJyBpcyBub3QgdG8gYmUgdXNlZCBhcyBhbiAiZWFybHkiIHBsdWdpbi4gRG9uJ3QgYWRkIGl0IHRvIC0tZWFybHktcGx1Z2luLWxvYWQsIGtleXJpbmcgbWlncmF0aW9uIGV0Yy4AUmVkbyBsb2cgYXJjaGl2aW5nIHN0YXJ0IHByb2hpYml0cyBwYXRoIG5hbWUgaW4gJ3N1YmRpcicgYXJndW1lbnQAUmVkbyBsb2cgYXJjaGl2aW5nIHN0YXJ0IHRpbWVkIG91dABTZXJ2ZXIgdmFyaWFibGUgJ2lubm9kYl9yZWRvX2xvZ19hcmNoaXZlX2RpcnMnIGlzIE5VTEwgb3IgZW1wdHkATGFiZWwgJyUuMTkycycgbm90IGZvdW5kIGluIHNlcnZlciB2YXJpYWJsZSAnaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfZGlycycARGlyZWN0b3J5IGlzIGVtcHR5IGFmdGVyIGxhYmVsICclLjE5MnMnIGluIHNlcnZlciB2YXJpYWJsZSAnaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfZGlycycAUmVkbyBsb2cgYXJjaGl2ZSBkaXJlY3RvcnkgJyUuMTkycycgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGEgZGlyZWN0b3J5AFJlZG8gbG9nIGFyY2hpdmUgZGlyZWN0b3J5ICclLjE5MnMnIGlzIGluLCB1bmRlciwgb3Igb3ZlciBzZXJ2ZXIgZGlyZWN0b3J5ICclLjE5MnMnIC0gJyUuMTkycycAUmVkbyBsb2cgYXJjaGl2ZSBkaXJlY3RvcnkgJyUuMTkycycgaXMgYWNjZXNzaWJsZSB0byBhbGwgT1MgdXNlcnMAQ2Fubm90IGNyZWF0ZSByZWRvIGxvZyBhcmNoaXZlIGZpbGUgJyUuNTEycycgKE9TIGVycm5vOiAlZCAtICUuMTI4cykAUmVkbyBsb2cgYXJjaGl2aW5nIGhhcyBiZWVuIHN0YXJ0ZWQgb24gJyUuNTEycycgLSBDYWxsIGlubm9kYl9yZWRvX2xvZ19hcmNoaXZlX3N0b3AoKSBmaXJzdABSZWRvIGxvZyBhcmNoaXZpbmcgaXMgbm90IGFjdGl2ZQBSZWRvIGxvZyBhcmNoaXZpbmcgZmFpbGVkOiAlLjUxMnMAUmVkbyBsb2cgYXJjaGl2aW5nIGhhcyBub3QgYmVlbiBzdGFydGVkIGJ5IHRoaXMgc2Vzc2lvbgBSZWdleCBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ASW52YWxpZCBKU09OIHR5cGUgaW4gYXJndW1lbnQgJXUgdG8gZnVuY3Rpb24gJXM7IGFuICVzIGlzIHJlcXVpcmVkLgBDYW5ub3QgY29udmVydCBzdHJpbmcgJyUuNjRzJyBmcm9tICVzIHRvICVzAENvbHVtbiAnJXMnIGhhcyBhIHBhcnRpdGlvbmluZyBmdW5jdGlvbiBkZXBlbmRlbmN5IGFuZCBjYW5ub3QgYmUgZHJvcHBlZCBvciByZW5hbWVkLgBBVVRPX0lOQ1JFTUVOVCBzdXBwb3J0IGZvciBGTE9BVC9ET1VCTEUgY29sdW1ucyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgcmVtb3ZpbmcgQVVUT19JTkNSRU1FTlQgZnJvbSBjb2x1bW4gJyUtLjE5MnMnLgBDYW5ub3Qgc3RvcCB0aGUgcmVwbGljYSBTUUwgdGhyZWFkIHdoaWxlIHRoZSBpbnN0YW5jZSBpcyBsb2NrZWQgZm9yIGJhY2t1cC4gVHJ5IHJ1bm5pbmcgYFVOTE9DSyBJTlNUQU5DRWAgZmlyc3QuAFNwZWNpZnlpbmcgbnVtYmVyIG9mIGRpZ2l0cyBmb3IgZmxvYXRpbmcgcG9pbnQgZGF0YSB0eXBlcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVU5TSUdORUQgZm9yIGRlY2ltYWwgYW5kIGZsb2F0aW5nIHBvaW50IGRhdGEgdHlwZXMgaXMgZGVwcmVjYXRlZCBhbmQgc3VwcG9ydCBmb3IgaXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAEludGVnZXIgZGlzcGxheSB3aWR0aCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVGhlIFpFUk9GSUxMIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gVXNlIHRoZSBMUEFEIGZ1bmN0aW9uIHRvIHplcm8tcGFkIG51bWJlcnMsIG9yIHN0b3JlIHRoZSBmb3JtYXR0ZWQgbnVtYmVycyBpbiBhIENIQVIgY29sdW1uLgBDbG9uZSBEb25vciBFcnJvcjogJS41MTJzLgBDbG9uZSByZWNlaXZlZCB1bmV4cGVjdGVkIHJlc3BvbnNlIGZyb20gRG9ub3IgOiAlLjUxMnMuAENsb25lIERvbm9yIE15U1FMIHZlcnNpb246ICUuNjRzIGlzIGRpZmZlcmVudCBmcm9tIFJlY2lwaWVudCBNeVNRTCB2ZXJzaW9uICUuNjRzLgBDbG9uZSBEb25vciBPUzogJS42NHMgaXMgZGlmZmVyZW50IGZyb20gUmVjaXBpZW50IE9TOiAlLjY0cy4AQ2xvbmUgRG9ub3IgcGxhdGZvcm06ICUuNjRzIGlzIGRpZmZlcmVudCBmcm9tIFJlY2lwaWVudCBwbGF0Zm9ybTogJS42NHMuAENsb25lIERvbm9yIGNvbGxhdGlvbjogJS4xMjhzIGlzIHVuYXZhaWxhYmxlIGluIFJlY2lwaWVudC4AQ2xvbmUgQ29uZmlndXJhdGlvbiAlLjEyOHM6IERvbm9yIHZhbHVlOiAlLjEyOHMgaXMgZGlmZmVyZW50IGZyb20gUmVjaXBpZW50IHZhbHVlOiAlLjEyOHMuAENsb25lIHN5c3RlbSBjb25maWd1cmF0aW9uOiAlLjUxMnMAQ2xvbmUgRG9ub3IgcGx1Z2luICUuMTI4cyBpcyBub3QgYWN0aXZlIGluIFJlY2lwaWVudC4AQ2xvbmUgY2Fubm90IHVzZSBsb29wIGJhY2sgY29ubmVjdGlvbiB3aGlsZSBjbG9uaW5nIGludG8gY3VycmVudCBkYXRhIGRpcmVjdG9yeS4AQ2xvbmUgbmVlZHMgU1NMIGNvbm5lY3Rpb24gZm9yIGVuY3J5cHRlZCB0YWJsZS4AQ2xvbmUgZXN0aW1hdGVkIGRhdGFiYXNlIHNpemUgaXMgJS42NHMuIEF2YWlsYWJsZSBzcGFjZSAlLjY0cyBpcyBub3QgZW5vdWdoLgBDb25jdXJyZW50IGNsb25lIGluIHByb2dyZXNzLiBQbGVhc2UgdHJ5IGFmdGVyIGNsb25lIGlzIGNvbXBsZXRlLgBUaGUgY2xvbmUgb3BlcmF0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGVuICVzLgBDYW5ub3QgZ3JhbnQgcm9sZXMgdG8gYW4gYW5vbnltb3VzIHVzZXIuACVzAEVtcHR5IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgYXMgc2Vjb25kIHBhc3N3b3JkIGZvciB1c2VyICclcydAJyVzJy4AQWNjZXNzIGRlbmllZCBmb3IgQXV0aElkIGAlLjY0c2BAYCUuNjRzYCB0byBkYXRhYmFzZSAnJS0uMTkycycuAENhbm5vdCBzZXQgbWFuZGF0b3J5X3JvbGVzOiBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGhhcyAnJXMnIHByaXZpbGVnZS4AR3RpZCB0YWJsZSBpcyBub3QgcmVhZHkgdG8gYmUgdXNlZC4gVGFibGUgJyVzLiVzJyBjYW5ub3QgYmUgb3BlbmVkLgBUaGUgZ2VvbWV0cnkgcGFzc2VkIHRvIGZ1bmN0aW9uICVzIGlzIGluIFNSSUQgMCwgd2hpY2ggZG9lc24ndCBzcGVjaWZ5IGEgbGVuZ3RoIHVuaXQuIENhbid0IGNvbnZlcnQgdG8gJyVzJy4ARXJyb3IgaW5zdGFsbGluZyBwbHVnaW4gJyVzJzogJXMAU3RvcmFnZSBlbmdpbmUgY291bGQgbm90IGFsbG9jYXRlIHRlbXBvcmFyeSB0YWJsZXNwYWNlIGZvciB0aGlzIHNlc3Npb24uAEdvdCB1bmtub3duIGVycm9yOiAlZABDb3VsZCBub3QgY2hhbmdlIGNvbHVtbiAnJXMnIG9mIHRhYmxlICclcycuIFRoZSByZXN1bHRpbmcgc2l6ZSBvZiBpbmRleCAnJXMnIHdvdWxkIGV4Y2VlZCB0aGUgbWF4IGtleSBsZW5ndGggb2YgJWQgYnl0ZXMuAEEgY2FwdHVyZSBncm91cCBoYXMgYW4gaW52YWxpZCBuYW1lLgBGYWlsZWQgdG8gc2V0IHVwIFNTTCBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgU1NMIGxpYnJhcnkgZXJyb3I6ICVzAFNlY29uZGFyeSBlbmdpbmUgb3BlcmF0aW9uIGZhaWxlZC4gJXMuAERETHMgb24gYSB0YWJsZSB3aXRoIGEgc2Vjb25kYXJ5IGVuZ2luZSBkZWZpbmVkIGFyZSBub3QgYWxsb3dlZC4ASW5jb3JyZWN0IGN1cnJlbnQgcGFzc3dvcmQuIFNwZWNpZnkgdGhlIGNvcnJlY3QgcGFzc3dvcmQgd2hpY2ggaGFzIHRvIGJlIHJlcGxhY2VkLgBDdXJyZW50IHBhc3N3b3JkIG5lZWRzIHRvIGJlIHNwZWNpZmllZCBpbiB0aGUgUkVQTEFDRSBjbGF1c2UgaW4gb3JkZXIgdG8gY2hhbmdlIGl0LgBEbyBub3Qgc3BlY2lmeSB0aGUgY3VycmVudCBwYXNzd29yZCB3aGlsZSBjaGFuZ2luZyBpdCBmb3Igb3RoZXIgdXNlcnMuAEN1cnJlbnQgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBmb3IgdXNlciAnJXMnQCclcycgYmVjYXVzZSBhdXRoZW50aWNhdGlvbiBwbHVnaW4gaXMgYmVpbmcgY2hhbmdlZC4AQ3VycmVudCBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGZvciB1c2VyICclcydAJyVzJyBiZWNhdXNlIG5ldyBwYXNzd29yZCBpcyBlbXB0eS4AQXQgbGVhc3Qgb25lIHBhcnRpYWwgcmV2b2tlIGV4aXN0cyBvbiBhIGRhdGFiYXNlLiBUaGUgc3lzdGVtIHZhcmlhYmxlICdAQHBhcnRpYWxfcmV2b2tlcycgbXVzdCBiZSBzZXQgdG8gT04uAEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaXMgc2V0IGFzIG1hbmRhdG9yeV9yb2xlcy4gQ2Fubm90IGdyYW50IHRoZSAnJXMnIHByaXZpbGVnZS4AVGhlIHVzZSBvZiByZXBsaWNhdGlvbiBmaWx0ZXJzIHdpdGggWEEgdHJhbnNhY3Rpb25zIGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBjYW4gbGVhZCB0byBhbiB1bmRlZmluZWQgc3RhdGUgaW4gdGhlIHJlcGxpY2EuAHNxbF9tb2RlPTB4JTA4eCBpcyBub3Qgc3VwcG9ydGVkLgBJbnZhbGlkIG1hdGNoIG1vZGUgZmxhZyBpbiByZWd1bGFyIGV4cHJlc3Npb24uACclcycgcHJpdmlsZWdlIGZvciBkYXRhYmFzZSAnJXMnIGV4aXN0cyBib3RoIGFzIHBhcnRpYWwgcmV2b2tlIGFuZCBteXNxbC5kYiBzaW11bHRhbmVvdXNseS4gSXQgY291bGQgbWVhbiB0aGF0IHRoZSAnbXlzcWwnIHNjaGVtYSBpcyBjb3JydXB0ZWQuAFRoZXJlJ3Mgbm8gdW5pdCBvZiBtZWFzdXJlIG5hbWVkICclcycuAEludmFsaWQgSlNPTiB2YWx1ZSBmb3IgQ0FTVCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJy4AT3V0IG9mIHJhbmdlIEpTT04gdmFsdWUgZm9yIENBU1QgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycuAEV4Y2VlZGVkIG1heCBudW1iZXIgb2YgdmFsdWVzIHBlciByZWNvcmQgZm9yIG11bHRpLXZhbHVlZCBpbmRleCAnJS0uNjRzJyBieSAldSB2YWx1ZShzKS4ARXhjZWVkZWQgbWF4IHRvdGFsIGxlbmd0aCBvZiB2YWx1ZXMgcGVyIHJlY29yZCBmb3IgbXVsdGktdmFsdWVkIGluZGV4ICclLS42NHMnIGJ5ICV1IGJ5dGVzLgBEYXRhIHRvbyBsb25nIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnLgBDYW5ub3Qgc3RvcmUgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGluIGEgc2NhbGFyIGtleSBwYXJ0IG9mIHRoZSBpbmRleCAnJS4xOTJzJy4AQ2Fubm90IHVzZSBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnIGR1ZSB0byB0eXBlIG9yIGNvbGxhdGlvbiBjb252ZXJzaW9uLgBUaGUgZnVuY3Rpb24gJyVzJyBmYWlsZWQuICVzAENhbm5vdCB1cGRhdGUgR1RJRF9QVVJHRUQgd2l0aCB0aGUgR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIHJ1bm5pbmcAR3JvdXBpbmcgb24gdGVtcG9yYWwgaXMgbm9uLWRldGVybWluaXN0aWMgZm9yIHRpbWV6b25lcyBoYXZpbmcgRFNULiBQbGVhc2UgY29uc2lkZXIgc3dpdGNoaW5nIHRvIFVUQyBmb3IgdGhpcyBxdWVyeS4ATG9uZyBkYXRhYmFzZSBuYW1lIGFuZCBpZGVudGlmaWVyIGZvciBvYmplY3QgcmVzdWx0ZWQgaW4gYSBwYXRoIGxlbmd0aCB0b28gbG9uZyBmb3IgdGFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIHRoZSBwYXRoIGxpbWl0IGZvciB5b3VyIE9TLgBSZXF1ZXN0IGlnbm9yZWQgZm9yICclLjY0cydAJyUuNjRzJy4gUm9sZSBuZWVkZWQgdG8gcGVyZm9ybSBvcGVyYXRpb246ICclLjMycycAJ2F1ZGl0X2xvZycgcGFzc3dvcmQgaGFzIGJlZW4gY29waWVkIGludG8gJyUuMzJzJyBhbmQgd2lsbCBiZSByZW1vdmVkIHdpdGggZmlyc3QgcHVyZ2VkIHBhc3N3b3JkLgBTdGFydGVkIGF1dG8tcmVqb2luIHByb2NlZHVyZSBhdHRlbXB0ICVsdSBvZiAlbHUAQSBwbHVnaW4gd2FzIGxvYWRlZCBvciB1bmxvYWRlZCBkdXJpbmcgYSBxdWVyeSwgYSBzeXN0ZW0gdmFyaWFibGUgdGFibGUgd2FzIGNoYW5nZWQuAEEgcGx1Z2luIHdhcyBsb2FkZWQgb3IgdW5sb2FkZWQgZHVyaW5nIGEgcXVlcnksIGEgZ2xvYmFsIHN0YXR1cyB2YXJpYWJsZSB3YXMgY2hhbmdlZC4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHRvIHN0YXJ0IGl0cyBtZXNzYWdlIHNlcnZpY2UuAEludmFsaWQgU09VUkNFX0NPTVBSRVNTSU9OX0FMR09SSVRITVMgJyUuMTkycycgZm9yIGNoYW5uZWwgJyUuMTkycycuAEludmFsaWQgU09VUkNFX1pTVERfQ09NUFJFU1NJT05fTEVWRUwgJXUgZm9yIGNoYW5uZWwgJyUuMTkycycuAEludmFsaWQgY29tcHJlc3Npb24gYWxnb3JpdGhtICclLjE5MnMnLgBJbnZhbGlkIHpzdGQgY29tcHJlc3Npb24gbGV2ZWwgZm9yIGFsZ29yaXRobSAnJS4xOTJzJy4AU3BlY2lmaWVkIGNvbXByZXNzaW9uIGFsZ29yaXRobSBsaXN0ICclLjE5MnMnIGV4Y2VlZHMgdG90YWwgY291bnQgb2YgMyBmb3IgY2hhbm5lbCAnJS4xOTJzJy4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYGBAYCUuMjU1c2AsIGJ1dCBhbm9ueW1vdXMgdXNlcnMgYXJlIGRpc2FsbG93ZWQgZm9yIFBSSVZJTEVHRV9DSEVDS1NfVVNFUi4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCwgYnV0IHRoaXMgaXMgbm90IGFuIGV4aXN0aW5nIHVzZXIuAEludmFsaWQsIGNvcnJ1cHRlZCBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgd2FzIGZvdW5kIGluIHRoZSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFVzZSBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiB0byBjb3JyZWN0IHRoZSBjb25maWd1cmF0aW9uLgBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIHNldCB0byBgJS42NHNgQGAlLjI1NXNgLCBidXQgdGhpcyB1c2VyIGRvZXMgbm90IGhhdmUgUkVQTElDQVRJT05fQVBQTElFUiBwcml2aWxlZ2UuAER5bmFtaWMgcHJpdmlsZWdlICclcycgaXMgbm90IHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2VydmVyLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIGtleSBpcyBpbnZhbGlkLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIGtleSB0eXBlIGlzIGludmFsaWQuAEZ1bmN0aW9uICclcycgZmFpbGVkIGJlY2F1c2Uga2V5IGxlbmd0aCBpcyB0b28gbG9uZy4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSBrZXkgdHlwZSBpcyB0b28gbG9uZy4AJXMuAEludmFsaWQgY2hhcmFjdGVyIHNldCAnJXMnIHdhcyBzcGVjaWZpZWQuIEl0IG11c3QgYmUgZWl0aGVyIGNoYXJhY3RlciBzZXQgbmFtZSBvciBjb2xsYXRpb24gbmFtZSBhcyBzdXBwb3J0ZWQgYnkgc2VydmVyLgBJbnZhbGlkIGNoYXJhY3RlciBzZXQgJyVzJyB3YXMgc3BlY2lmaWVkLiBJdCBtdXN0IGJlIGEgY2hhcmFjdGVyIHNldCBuYW1lIGFzIHN1cHBvcnRlZCBieSBzZXJ2ZXIuAEludmFsaWQgY29sbGF0aW9uICclcycgd2FzIHNwZWNpZmllZC4gSXQgbXVzdCBiZSBhIGNvbGxhdGlvbiBuYW1lIGFzIHN1cHBvcnRlZCBieSBzZXJ2ZXIuAEludmFsaWQgZXh0ZW5zaW9uIGFyZ3VtZW50IHR5cGUgJyVzJyB3YXMgc3BlY2lmaWVkLiBSZWZlciB0aGUgTXlTUUwgbWFudWFsIGZvciB0aGUgdmFsaWQgVURGIGV4dGVuc2lvbiBhcmd1bWVudHMgdHlwZS4AVGFibGUgaGFzIG11bHRpcGxlIGNvbnN0cmFpbnRzIHdpdGggdGhlIG5hbWUgJyUtLjE5MnMnLiBQbGVhc2UgdXNlIGNvbnN0cmFpbnQgc3BlY2lmaWMgJyVzJyBjbGF1c2UuAENvbnN0cmFpbnQgJyUtLjE5MnMnIGRvZXMgbm90IGV4aXN0LgBBbHRlcmluZyBjb25zdHJhaW50IGVuZm9yY2VtZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoZSBjb25zdHJhaW50ICclLS4xOTJzJy4gRW5mb3JjZW1lbnQgc3RhdGUgYWx0ZXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhlIFBSSU1BUlksIFVOSVFVRSBhbmQgRk9SRUlHTiBLRVkgdHlwZSBjb25zdHJhaW50cy4ARWFjaCByb3cgb2YgYSBWQUxVRVMgY2xhdXNlIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgY29sdW1uLCB1bmxlc3Mgd2hlbiB1c2VkIGFzIHNvdXJjZSBpbiBhbiBJTlNFUlQgc3RhdGVtZW50LgBBIFZBTFVFUyBjbGF1c2UgY2Fubm90IHVzZSBERUZBVUxUIHZhbHVlcywgdW5sZXNzIHVzZWQgYXMgYSBzb3VyY2UgaW4gYW4gSU5TRVJUIHN0YXRlbWVudC4AVGhlIHF1ZXJ5IGRvZXMgbm90IGNvbXBseSB3aXRoIHZhcmlhYmxlIHJlcXVpcmVfcm93X2Zvcm1hdCByZXN0cmljdGlvbnMuAFRoZSByZXF1ZXN0ZWQgdmFsdWUgJXMgaXMgaW52YWxpZCBmb3IgUkVRVUlSRV9ST1dfRk9STUFULCBtdXN0IGJlIGVpdGhlciAwIG9yIDEuAEZhaWxlZCB0byBhY3F1aXJlIGxvY2sgb24gdXNlciBtYW5hZ2VtZW50IHNlcnZpY2UsIHVuYWJsZSB0byBkZXRlcm1pbmUgaWYgcm9sZSBgJXNgQGAlc2AgaXMgbWFuZGF0b3J5AEZhaWxlZCB0byBhY3F1aXJlIGxvY2sgb24gdXNlciBtYW5hZ2VtZW50IHNlcnZpY2UsIHVuYWJsZSB0byBmZXRjaCBtYW5kYXRvcnkgcm9sZSBsaXN0AExvYWRpbmcgbG9jYWwgZGF0YSBpcyBkaXNhYmxlZDsgdGhpcyBtdXN0IGJlIGVuYWJsZWQgb24gYm90aCB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgc2lkZXMARmFpbGVkIHRvIGltcG9ydCAlcyBiZWNhdXNlIHRoZSBDRkcgZmlsZSB2ZXJzaW9uICgldSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCB2ZXJzaW9uICgldSkAT3V0IG9mIG1lbW9yeQBDaGFyYWN0ZXIgc2V0IGNhbiBiZSBzZXQgb25seSBmb3IgdGhlIFVERiBhcmd1bWVudCB0eXBlIFNUUklORy4AQ2hhcmFjdGVyIHNldCBjYW4gYmUgc2V0IG9ubHkgZm9yIHRoZSBVREYgUkVUVVJOIHR5cGUgU1RSSU5HLgBNdWx0aXBsZSBJTlRPIGNsYXVzZXMgaW4gb25lIHF1ZXJ5IGJsb2NrLgBNaXNwbGFjZWQgSU5UTyBjbGF1c2UsIElOVE8gaXMgbm90IGFsbG93ZWQgaW5zaWRlIHN1YnF1ZXJpZXMsIGFuZCBtdXN0IGJlIHBsYWNlZCBhdCBlbmQgb2YgVU5JT04gY2xhdXNlcy4AQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJy4gQWNjb3VudCBpcyBibG9ja2VkIGZvciAlcyBkYXkocykgKCVzIGRheShzKSByZW1haW5pbmcpIGR1ZSB0byAldSBjb25zZWN1dGl2ZSBmYWlsZWQgbG9naW5zLgBVTlNJR05FRCBmb3IgdGhlIFlFQVIgZGF0YSB0eXBlIGlzIGRlcHJlY2F0ZWQgYW5kIHN1cHBvcnQgZm9yIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBDbG9uZSBuZWVkcyBtYXhfYWxsb3dlZF9wYWNrZXQgdmFsdWUgdG8gYmUgJXUgb3IgbW9yZS4gQ3VycmVudCB2YWx1ZSBpcyAldQBGYWlsZWQgdG8gJXMgc2RpIGZvciAlcy4lcyBpbiAlcyBkdWUgdG8gbWlzc2luZyByZWNvcmQuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIHVzZXMgY29sdW1uICclLS4xOTJzJywgaGVuY2UgY29sdW1uIGNhbm5vdCBiZSBkcm9wcGVkIG9yIHJlbmFtZWQuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgcnVubmluZzsgcnVuIFNUT1AgR1JPVVBfUkVQTElDQVRJT04gZmlyc3QAU3BlY2lmeWluZyBhbiBPTiBFTVBUWSBjbGF1c2UgYWZ0ZXIgdGhlIE9OIEVSUk9SIGNsYXVzZSBpbiBhIEpTT05fVEFCTEUgY29sdW1uIGRlZmluaXRpb24gaXMgZGVwcmVjYXRlZCBzeW50YXggYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBTcGVjaWZ5IE9OIEVNUFRZIGJlZm9yZSBPTiBFUlJPUiBpbnN0ZWFkLgBUaGUgSU5UTyBjbGF1c2UgaXMgZGVwcmVjYXRlZCBpbnNpZGUgcXVlcnkgYmxvY2tzIG9mIHF1ZXJ5IGV4cHJlc3Npb25zIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIG1vdmUgdGhlIElOVE8gY2xhdXNlIHRvIHRoZSBlbmQgb2Ygc3RhdGVtZW50IGluc3RlYWQuAFRoZSBWQUxVRVMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIEl0IGFsd2F5cyByZXR1cm5zIE5VTEwgaW4gdGhpcyBjb250ZXh0LiBJZiB5b3UgbWVhbnQgdG8gYWNjZXNzIGEgdmFsdWUgZnJvbSB0aGUgVkFMVUVTIGNsYXVzZSBvZiB0aGUgSU5TRVJUIHN0YXRlbWVudCwgY29uc2lkZXIgdXNpbmcgYW4gYWxpYXMgKElOU0VSVCBJTlRPIC4uLiBWQUxVRVMgKC4uLikgQVMgYWxpYXMpIGFuZCByZWZlcmVuY2UgYWxpYXMuY29sIGluc3RlYWQgb2YgVkFMVUVTKGNvbCkgaW4gdGhlIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIGNsYXVzZS4AU1FMX0NBTENfRk9VTkRfUk9XUyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgdHdvIHNlcGFyYXRlIHF1ZXJpZXMgaW5zdGVhZC4ARk9VTkRfUk9XUygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBDT1VOVCgqKSBpbnN0ZWFkLgBObyB2YWx1ZSB3YXMgZm91bmQgYnkgJyUuMTkycycgb24gdGhlIHNwZWNpZmllZCBwYXRoLgBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCBieSAnJS4xOTJzJyBvbiB0aGUgc3BlY2lmaWVkIHBhdGguAEhvc3RuYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAlZCBjaGFyYWN0ZXJzLgBDb2x1bW4gJyUuNjRzLiUuNjRzLiUuNjRzJyBoYXZpbmcgcHJlZml4IGtleSBwYXJ0ICclLjY0cygldSknIGlzIGlnbm9yZWQgYnkgdGhlIHBhcnRpdGlvbmluZyBmdW5jdGlvbi4gVXNlIG9mIHByZWZpeGVkIGNvbHVtbnMgaW4gdGhlIFBBUlRJVElPTiBCWSBLRVkoKSBjbGF1c2UgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgdXNlcm5hbWUgcHJvdmlkZWQgZm9yIHJlY292ZXJ5IGNoYW5uZWwgaXMgZW1wdHkuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgVVNFUiBvcHRpb24gd2FzIG5vdCBwcm92aWRlZCB3aXRoIFBBU1NXT1JEIGZvciByZWNvdmVyeSBjaGFubmVsLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIHBhc3N3b3JkIHByb3ZpZGVkIGZvciB0aGUgcmVjb3ZlcnkgY2hhbm5lbCBleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiAzMiBjaGFyYWN0ZXJzLgBTdGF0ZW1lbnQgcmVxdWlyZXMgYSB0cmFuc2Zvcm0gb2YgYSBzdWJxdWVyeSB0byBhIG5vbi1TRVQgb3BlcmF0aW9uIChsaWtlIElOMkVYSVNUUywgb3Igc3VicXVlcnktdG8tTEFURVJBTC1kZXJpdmVkLXRhYmxlKS4gVGhpcyBpcyBub3QgYWxsb3dlZCB3aXRoIG9wdGltaXplciBzd2l0Y2ggJ3N1YnF1ZXJ5X3RvX2Rlcml2ZWQnIG9uAEludmFsaWQgaW5wdXQgdmFsdWUgZm9yIHJlY292ZXJ5IHNvY2tldCBlbmRwb2ludHMgJyVzJy4gUGxlYXNlLCBwcm92aWRlIGEgdmFsaWQsIGNvbW1hIHNlcGFyYXRlZCwgbGlzdCBvZiBlbmRwb2ludHMgKElQOnBvcnQpAFRoZSBzZXJ2ZXIgaXMgbm90IGxpc3RlbmluZyBvbiBlbmRwb2ludCAnJXMnLiBPbmx5IGVuZHBvaW50cyB0aGF0IHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nIG9uIGFyZSB2YWxpZCByZWNvdmVyeSBlbmRwb2ludHMuAFZhcmlhYmxlICclLS42NHMnIGNhbm5vdCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICclLS4yMDBzJy4gJS0uMjAwcwBPbmx5IEJJTkxPRyBJTlNFUlQsIENPTU1JVCBhbmQgUk9MTEJBQ0sgc3RhdGVtZW50cyBhcmUgYWxsb3dlZCBhZnRlciBDUkVBVEUgVEFCTEUgd2l0aCBTVEFSVCBUUkFOU0FDVElPTiBzdGF0ZW1lbnQuAEZvcmVpZ24ga2V5IGNyZWF0aW9uIGlzIG5vdCBhbGxvd2VkIHdpdGggQ1JFQVRFIFRBQkxFIGFzIFNFTEVDVCBhbmQgQ1JFQVRFIFRBQkxFIHdpdGggU1RBUlQgVFJBTlNBQ1RJT04gc3RhdGVtZW50LgBTVEFSVCBUUkFOU0FDVElPTiBjbGF1c2UgY2Fubm90IGJlIHVzZWQgJS4xMjhzAEludmFsaWQganNvbiBhdHRyaWJ1dGUsIGVycm9yOiAiJXMiIGF0IHBvcyAldTogJyVzJwBTdG9yYWdlIGVuZ2luZSAnJXMnIGRvZXMgbm90IHN1cHBvcnQgRU5HSU5FX0FUVFJJQlVURS4AVGhlIHVzZXIgYXR0cmlidXRlIG11c3QgYmUgYSB2YWxpZCBKU09OIG9iamVjdABDYW5ub3QgcGVyZm9ybSBvcGVyYXRpb24gYXMgSW5ub0RCIHJlZG8gbG9nZ2luZyBpcyBkaXNhYmxlZC4gUGxlYXNlIHJldHJ5IGFmdGVyIGVuYWJsaW5nIHJlZG8gbG9nIHdpdGggQUxURVIgSU5TVEFOQ0UAQ2Fubm90IHBlcmZvcm0gb3BlcmF0aW9uIGFzIElubm9EQiBpcyBhcmNoaXZpbmcgcmVkbyBsb2cuIFBsZWFzZSByZXRyeSBhZnRlciBzdG9wcGluZyByZWRvIGFyY2hpdmUgYnkgaW52b2tpbmcgaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfc3RvcCgpAE5vdCBlbm91Z2ggcmVzb3VyY2VzIHRvIGNvbXBsZXRlIGxvY2sgcmVxdWVzdC4ARXZhbHVhdGluZyBhIEpTT04gdmFsdWUgaW4gU1FMIGJvb2xlYW4gY29udGV4dCBkb2VzIGFuIGltcGxpY2l0IGNvbXBhcmlzb24gYWdhaW5zdCBKU09OIGludGVnZXIgMDsgaWYgdGhpcyBpcyBub3Qgd2hhdCB5b3Ugd2FudCwgY29uc2lkZXIgY29udmVydGluZyBKU09OIHRvIGEgU1FMIG51bWVyaWMgdHlwZSB3aXRoIEpTT05fVkFMVUUgUkVUVVJOSU5HAFRoZSBmdW5jdGlvbiAlcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjaGFyYWN0ZXIgc2V0ICclcycuAENvbnZlcnNpb24gZnJvbSBjb2xsYXRpb24gJXMgaW50byAlcyBpbXBvc3NpYmxlIGZvciAlcwBTY2hlbWEgJyVzJyBpcyBpbiByZWFkIG9ubHkgbW9kZS4ARmFpbGVkIHRvIGVuYWJsZSBBc3luY2hyb25vdXMgUmVwbGljYXRpb24gQ29ubmVjdGlvbiBGYWlsb3ZlciBmZWF0dXJlLiBUaGUgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMSBjYW4gb25seSBiZSBzZXQgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTi4ARmFpbGVkIHRvIGVuYWJsZSBBc3luY2hyb25vdXMgUmVwbGljYXRpb24gQ29ubmVjdGlvbiBGYWlsb3ZlciBmZWF0dXJlLiBUaGUgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMSBjYW4gb25seSBiZSBzZXQgd2hlbiBTT1VSQ0VfQVVUT19QT1NJVElPTiBvcHRpb24gb2YgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBpcyBlbmFibGVkLgBUaGUgQEBHTE9CQUwuR1RJRF9NT0RFID0gJS0uNjRzIGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIEFzeW5jaHJvbm91cyBSZXBsaWNhdGlvbiBDb25uZWN0aW9uIEZhaWxvdmVyIGlzIGVuYWJsZWQgaS5lLiBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAxLgBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMCBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSBBc3luY2hyb25vdXMgUmVwbGljYXRpb24gQ29ubmVjdGlvbiBGYWlsb3ZlciBpcyBlbmFibGVkIGkuZS4gQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMS4ASW52YWxpZCB1c2Ugb2YgcGFyYW1ldGVycyBpbiAnJXMnAENoYXJhY3RlciBzZXQgJyVzJyBjYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoICclcycgaW4gY2FsbCB0byAlcy4AQ2hhbmdpbmcgJXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiBGYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQuAEludmFsaWQgdGltZSB6b25lIGludGVydmFsOiAnJXMnAENhbm5vdCBjYXN0IHZhbHVlIHRvICVzLgBUaGUgaHlwZXJncmFwaCBvcHRpbWl6ZXIgZG9lcyBub3QgeWV0IHN1cHBvcnQgJyVzJwBUaGUgaHlwZXJncmFwaCBvcHRpbWl6ZXIgaXMgaGlnaGx5IGV4cGVyaW1lbnRhbCBhbmQgaXMgbWVhbnQgZm9yIHRlc3Rpbmcgb25seS4gRG8gbm90IGVuYWJsZSBpdCB1bmxlc3MgeW91IGFyZSBhIE15U1FMIGRldmVsb3Blci4ATm9uZSBvZiB0aGUgbG9nLXNpbmtzIHNlbGVjdGVkIHdpdGggLS1sb2ctZXJyb3Itc2VydmljZXM9Li4uIHByb3ZpZGVzIGEgbG9nLXBhcnNlci4gVGhlIHNlcnZlciB3aWxsIG5vdCBiZSBhYmxlIHRvIG1ha2UgdGhlIHByZXZpb3VzIHJ1bnMnIGVycm9yLWxvZ3MgYXZhaWxhYmxlIGluIHBlcmZvcm1hbmNlX3NjaGVtYS5lcnJvcl9sb2cuAE5vbmUgb2YgdGhlIGxvZy1zaW5rcyBzZWxlY3RlZCBpbiBAQGdsb2JhbC5sb2dfZXJyb3Jfc2VydmljZXMgc3VwcG9ydHMgd3JpdGluZyB0byB0aGUgcGVyZm9ybWFuY2Ugc2NoZW1hLiBUaGUgc2VydmVyIHdpbGwgbm90IGJlIGFibGUgdG8gbWFrZSB0aGUgY3VycmVudCBydW5zJyBlcnJvciBldmVudHMgYXZhaWxhYmxlIGluIHBlcmZvcm1hbmNlX3NjaGVtYS5lcnJvcl9sb2cuIFRvIGNoYW5nZSB0aGlzLCBhZGQgYSBsb2ctc2luayB0aGF0IHN1cHBvcnRzIHRoZSBwZXJmb3JtYW5jZSBzY2hlbWEgdG8gQEBnbG9iYWwubG9nX2Vycm9yX3NlcnZpY2VzLgBAQGdsb2JhbC5sb2dfZXJyb3Jfc2VydmljZXMgbGlzdHMgbW9yZSB0aGFuIG9uZSBsb2ctZmlsdGVyIHNlcnZpY2UuIFRoaXMgaXMgZGlzY291cmFnZWQgYXMgaXQgd2lsbCBtYWtlIGl0IGhhcmQgdG8gdW5kZXJzdGFuZCB3aGljaCBydWxlIGluIHdoaWNoIGZpbHRlciBhZmZlY3RlZCBhIGxvZy1ldmVudC4AQ291bGQgbm90IG9wZW4gZmlsZSAnJXMnIGZvciBlcnJvciBsb2dnaW5nJXMlcwBVc2VyICUuMjU2cyBpcyByZWZlcmVuY2VkIGFzIGEgZGVmaW5lciBhY2NvdW50IGluICVzLgBPcGVyYXRpb24gJXMgZmFpbGVkIGZvciAlLjI1NnMgYXMgaXQgaXMgcmVmZXJlbmNlZCBhcyBhIGRlZmluZXIgYWNjb3VudCBpbiAlcy4ARGVjaW1hbCBudW1iZXIgaW4gcmVndWxhciBleHByZXNzaW9uIGlzIHRvbyBsYXJnZS4AVGhlIHZhcmlhYmxlICIlcyIgaGFzIGEgbm9uLWludGVnZXIgYmFzZWQgdHlwZQBSZWFkcyB3aXRoIHNlcmlhbGl6YWJsZSBpc29sYXRpb24vU0VMRUNUIEZPUiBTSEFSRSBhcmUgbm90IHN1cHBvcnRlZCBmb3IgQUNMIHRhYmxlcy4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1cGRhdGVzIGEgdGFibGUgZGVwZW5kaW5nIG9uIEFDTCB0YWJsZSByZWFkIG9wZXJhdGlvbi4gQXMgc3RvcmFnZSBlbmdpbmUgcm93IGxvY2tzIGFyZSBza2lwcGVkIGZvciBBQ0wgdGFibGUsIGl0IG1heSBub3QgaGF2ZSBzYW1lIGVmZmVjdCBvbiBzb3VyY2UgYW5kIHJlcGxpY2EuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIE1vbml0b3IgdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBNb25pdG9yIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBUaGUgUmVwbGljYSBNb25pdG9yIHRocmVhZCBmYWlsZWQgdG8gc3RhcnQuAFJlcGxpY2F0aW9uIGNhbm5vdCBzdGFydCUuMTkycyB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+IGFzIHRoaXMgc2VydmVyIHVzZXMgQEBHTE9CQUwuR1RJRF9NT0RFIDw+IE9OLgBUaGUgb3B0aW9ucyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPiBhbmQgU09VUkNFX0FVVE9fUE9TSVRJT04gPSAxIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyLgBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+IGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIEBAR0xPQkFMLkdUSURfTU9ERSA8PiBPTi4AVGhlIHZhbHVlIG9mIHNxbF9yZXBsaWNhX3NraXBfY291bnRlciB3aWxsIG9ubHkgdGFrZSBlZmZlY3QgZm9yIGNoYW5uZWxzIHJ1bm5pbmcgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA8PiBPRkYuAFVzaW5nIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TIGNyZWF0ZXMgbGltaXRhdGlvbnMgb24gdGhlIHJlcGxpY2F0aW9uIHRvcG9sb2d5IC0geW91IGNhbm5vdCBmYWlsIG92ZXIgYmV0d2VlbiBkb3duc3RyZWFtIGFuZCB1cHN0cmVhbSBzZXJ2ZXJzLiBPbmx5IHVzZSB0aGlzIG9wdGlvbiBpZiBpdCBpcyBub3QgcG9zc2libGUgdG8gZW5hYmxlIEdUSURzIG9uIHRoZSBzb3VyY2UsIGZvciBpbnN0YW5jZSwgYmVjYXVzZSBvZiBsYWNrIG9mIHBlcm1pc3Npb25zLiBJZiBwb3NzaWJsZSwgdXNlIHRoZSBwcm9jZWR1cmUgZm9yIGVuYWJsaW5nIEdUSUQgdHJhbnNhY3Rpb25zIG9ubGluZSBpbnN0ZWFkLCBhcyBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uAFdBSVRfVU5USUxfU1FMX1RIUkVBRF9BRlRFUl9HVElEUyBjYW5ub3QgYmUgdXNlZCBvbiBhIGNoYW5uZWwgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+AFRoZSBTUUxfQUZURVJfR1RJRFMgb3IgU1FMX0JFRk9SRV9HVElEUyBjbGF1c2VzIGZvciBTVEFSVCBSRVBMSUNBIGNhbm5vdCBiZSB1c2VkIHdoZW4gdGhlIHJlcGxpY2F0aW9uIGNoYW5uZWwgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+LgBSZXBsaWNhdGlvbiAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSA8VVVJRD4gd2hlcmUgdGhlIFVVSUQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUAQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IDxVVUlEPiBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSB0aGUgVVVJRCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS4AVGhlIGdyb3VwX3JlcGxpY2F0aW9uX3JlY292ZXJ5IGNoYW5uZWwgaXMgc3RpbGwgcnVubmluZywgbW9zdCBsaWtlbHkgaXQgaXMgd2FpdGluZyBmb3IgYSBkYXRhYmFzZS90YWJsZSBsb2NrLCB3aGljaCBpcyBwcmV2ZW50aW5nIHRoZSBjaGFubmVsIGZyb20gc3RvcHBpbmcuIFBsZWFzZSBjaGVjayBkYXRhYmFzZS90YWJsZSBsb2NrcywgaW5jbHVkaW5nIHRoZSBvbmVzIGNyZWF0ZWQgYnkgYmFja3VwIHRvb2xzLgBBVVRPRVhURU5EX1NJWkUgc2hvdWxkIGJlIGEgbXVsdGlwbGUgb2YgJXVNAElubm9EQjogIiVzIiBub3QgYWxsb3dlZCB3aXRoIGdlbmVyYWwgdGFibGVzcGFjZXMAQVVUT0VYVEVORF9TSVpFIHZhbHVlIHNob3VsZCBiZSBiZXR3ZWVuICV1TSBhbmQgJXVNAEFVVE9FWFRFTkRfU0laRSBjbGF1c2UgaXMgbm90IHZhbGlkIGZvciAlcyB0YWJsZXNwYWNlLgBVc2VyIGFjY291bnQgJXMgaXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBncmFudGVkIHRvIHRoZSByb2xlICVzLiBUaGUgR1JBTlQgd291bGQgY3JlYXRlIGEgbG9vcABBIHRhYmxlIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgdmlzaWJsZSBjb2x1bW4uAENvbXByZXNzaW9uIGZhaWxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgZXJyb3IgOiAlcwBUaGUgcGFyYW1ldGVyIG5ldHdvcmtfbmFtZXNwYWNlIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLiBQbGVhc2UgdXNlIHRoZSBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIGNvbW1hbmQgdG8gc2V0IGNoYW5uZWwgbmV0d29ya19uYW1lc3BhY2UgcGFyYW1ldGVyLgBUaGUgY2xpZW50IHdhcyBkaXNjb25uZWN0ZWQgYnkgdGhlIHNlcnZlciBiZWNhdXNlIG9mIGluYWN0aXZpdHkuIFNlZSB3YWl0X3RpbWVvdXQgYW5kIGludGVyYWN0aXZlX3RpbWVvdXQgZm9yIGNvbmZpZ3VyaW5nIHRoaXMgYmVoYXZpb3IuAEludmFsaWQgY2FzdCBmcm9tICVzIHRvICVzLgBJbnZhbGlkIGNhc3QgZnJvbSAlcyB0byAlcy4gQSBwb2x5Z29uIHJpbmcgaXMgaW4gdGhlIHdyb25nIGRpcmVjdGlvbi4AQXJndW1lbnRzIHRvIGZ1bmN0aW9uICVzIGNvbnRhaW5zIGdlb21ldHJpZXMgd2l0aCBkaWZmZXJlbnQgU1JJRHM6ICV1IGFuZCAldS4gQWxsIGdlb21ldHJpZXMgbXVzdCBoYXZlIHRoZSBzYW1lIFNSSUQuAEtleXJpbmcgcmVsb2FkIGZhaWxlZC4gUGxlYXNlIGNoZWNrIGVycm9yIGxvZyBmb3IgbW9yZSBkZXRhaWxzLgBUYWJsZXNwYWNlICclLjE5MnMnIGlzIGludmFsaWQgZm9yIFNESSBvcGVyYXRpb25zLgBWYWx1ZSB0b28gbG9uZyBzZXR0aW5nIFNPVVJDRV9DT01QUkVTU0lPTl9BTEdPUklUSE1TIG9wdGlvbiB0byBhICVkIGNoYXJzIGxvbmcgc3RyaW5nIGZvciBjaGFubmVsICclLjE5MnMnLgBBIGRlcHJlY2F0ZWQgVExTIHZlcnNpb24gJXMgaXMgZW5hYmxlZCBmb3IgY2hhbm5lbCAlcy4gUGxlYXNlIHVzZSBUTFN2MS4yIG9yIGhpZ2hlci4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IDxVVUlEPiBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSB0aGUgVVVJRCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZC4AUmVwbGljYXRpb24gJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gPFVVSUQ+IHdoZXJlIHRoZSBVVUlEIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkAFVuYWJsZSB0byByZXRyaWV2ZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIHZhcmlhYmxlIGR1cmluZyBzZXJ2ZXIgY2hlY2tzIG9uIHJlcGxpY2F0aW9uIG9wZXJhdGlvbnMuAEJvdGggYXVkaXRfbG9nX21heF9zaXplIGFuZCBhdWRpdF9sb2dfcHJ1bmVfc2Vjb25kcyBhcmUgc2V0IHRvIG5vbi16ZXJvLiBhdWRpdF9sb2dfbWF4X3NpemUgdGFrZXMgcHJlY2VkZW5jZSBhbmQgYXVkaXRfbG9nX3BydW5lX3NlY29uZHMgaXMgaWdub3JlZABhdWRpdF9sb2dfcm90YXRlX29uX3NpemUgaXMgbm90IGdyYW51bGFyIGVub3VnaCBmb3IgdGhlIHZhbHVlIG9mIGF1ZGl0X2xvZ19tYXhfc2l6ZSBzdXBwbGllZC4gU2hvdWxkIGJlIGF0IGxlYXN0ICVkIHRpbWVzIHNtYWxsZXIuAENyZWF0ZS9BbHRlciB1c2VyIGhhcyBmYWlsZWQsIENvbmZpZ3VyZWQgdXNlciByZWFsbSBhcyBhdXRoZW50aWNhdGlvbiBzdHJpbmcgaXMgZW1wdHksIFBsZWFzZSBtYWtlIHN1cmUgdG8gY29uZmlndXJlIGF1dGhlbnRpY2F0aW9uIHN0cmluZyBhcyB1c2VyIHJlYWxtLgBDYW5ub3QgaW5zdGFsbCB0aGUgJS4xOTJzIHBsdWdpbiB3aGVuIHRoZSAlLjE5MnMgcGx1Z2luIGlzIGluc3RhbGxlZC4AJWQgZXJyb3IgbG9nZ2luZyBjb21wb25lbnQocykgZmFpbGVkIHRvIGZsdXNoLiBGb3IgZmlsZS1iYXNlZCBsb2dzIHRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBwYXRoIG9yIHBlcm1pc3Npb25zIG9mIHRoZSBsb2ctZmlsZSBoYXZlIGNoYW5nZWQuIEZhaWx1cmUgdG8gZmx1c2ggZmlsZWQtYmFzZWQgbG9ncyBtYXkgYWZmZWN0IGxvZy1yb3RhdGlvbi4AVGhlIHVudGlsIGNsYXVzZSBTUUxfQUZURVJfTVRTX0dBUFMgaXMgYmVpbmcgdXNlZCBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3aGVuIEdUSURfTU9ERSA9IE9OIGFuZCBTT1VSQ0VfQVVUT19QT1NJVElPTj0xIG1lYW5pbmcgdGhlIHNlcnZlciBkaWQgbm90IGNvbXB1dGUgaW50ZXJuYWxseSB3aGF0IGdhcHMgbWF5IGV4aXN0IGluIHRoZSByZWxheSBsb2cgdHJhbnNhY3Rpb24gZXhlY3V0aW9uLiBUbyBjbG9zZSBhbnkgZXhlY3V0aW9uIGdhcHMgdXNlIGVpdGhlciB0aGUgU1FMX0JFRk9SRV9HVElEUyBvciBTUUxfQUZURVJfR1RJRFMgdW50aWwgY2xhdXNlLgBJbnZhbGlkIHRhcmdldCBmb3IgYXNzaWdubWVudCBpbiBJTlNFUlQgb3IgVVBEQVRFIHN0YXRlbWVudCAnJS4xOTJzJy4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCBvbiBhIEdyb3VwIFJlcGxpY2F0aW9uIHNlY29uZGFyeSBtZW1iZXIsIGl0IG11c3QgYmUgZG9uZSBvbiB0aGUgZ3JvdXAgcHJpbWFyeS4AVW5hYmxlIHRvIHByb3BhZ2F0ZSB0aGUgU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiB2YWx1ZSBmb3IgY2hhbm5lbCAnJXMnIHRvIGdyb3VwIHJlcGxpY2F0aW9uIG1lbWJlcnMuIFBsZWFzZSByZXRyeSB0aGUgb3BlcmF0aW9uLgBhdWRpdF9sb2dfZm9ybWF0X3VuaXhfdGltZXN0YW1wIGlzIGFwcGxpY2FibGUgb25seSB3aGVuIGF1ZGl0X2xvZ19mb3JtYXQgPSBKU09OLgBJbnZhbGlkIHBsdWdpbiAiJXMiIHNwZWNpZmllZCBhcyAlZCBmYWN0b3IgZHVyaW5nICIlcyIuAElERU5USUZJRUQgQlkgY2xhdXNlIGR1cmluZyAiJXMiIG5vdCBzdXBwb3J0ZWQgZm9yIHBsdWdpbiAiJXMiLgBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBwbHVnaW4gIiVzIi4AQXV0aGVudGljYXRpb24gcGx1Z2luIHJlcXVpcmVzIHJlZ2lzdHJhdGlvbi4gUGxlYXNlIHJlZmVyIEFMVEVSIFVTRVIgc3ludGF4IG9yIHNldCAtLWZpZG8tcmVnaXN0ZXItZmFjdG9yIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZG8gcmVnaXN0cmF0aW9uLgAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kIGV4aXN0cy4gUGxlYXNlIGRvIEFMVEVSIFVTRVIuLi4gRFJPUCAlZCBmYWN0b3IgYmVmb3JlIGRvaW5nIHRoaXMgb3BlcmF0aW9uIE9SIGRvIEFMVEVSIFVTRVIuLi4gTU9ESUZZICVkIGZhY3Rvci4uLiB0byBtb2RpZnkgZXhpc3RpbmcgJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZC4AJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBkb2Vzbid0IGV4aXN0LiBQbGVhc2UgZG8gQUxURVIgVVNFUi4uLiBBREQgJWQgZmFjdG9yLi4uIGJlZm9yZSBkb2luZyB0aGlzIG9wZXJhdGlvbi4AJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBkb2VzIG5vdCBtYXRjaCBhZ2FpbnN0IGF1dGhlbnRpY2F0aW9uIHBvbGljeS4gUGxlYXNlIHJlZmVyIEBAYXV0aGVudGljYXRpb25fcG9saWN5IHN5c3RlbSB2YXJpYWJsZS4AVGhlIHJlZ2lzdHJhdGlvbiBmb3IgJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBpcyBhbHJlYWR5IGNvbXBsZXRlZC4gWW91IGNhbm5vdCBwZXJmb3JtIHJlZ2lzdHJhdGlvbiBtdWx0aXBsZSB0aW1lcy4AVGhlIHJlZ2lzdHJhdGlvbiBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQgZm9yIHVzZXIgJyVzJ0AnJXMnLiBUaGUgb3BlcmF0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBpbiB1c2VyJ3Mgb3duIHNlc3Npb24uAEF1dGhlbnRpY2F0aW9uIHBsdWdpbidzIHJlZ2lzdHJhdGlvbiBmYWlsZWQuACVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2Qgc2hvdWxkIGJlIGFkZGVkIGJlZm9yZSAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kLgBBdXRoZW50aWNhdGlvbiBmYWN0b3Igc2hvdWxkIGJlIGRpZmZlcmVudC4AVGhlIG9wZXJhdGlvbiAiJXMiIGNhbm5vdCBiZSBwZXJmb3JtZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGNvbmZpZ3VyZWQgdG8gY29ubmVjdCB3aXRob3V0IGEgcGFzc3dvcmQuAEdUSURfT05MWSBjYW5ub3QgYmUgZW5hYmxlZCBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJy4gWW91IG5lZWQgR1RJRF9NT0RFID0gT04sIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMSBhbmQgUkVRVUlSRV9ST1dfRk9STUFUID0gMS4AUkVRVUlSRV9ST1dfRk9STUFUIGNhbm5vdCBiZSBkaXNhYmxlZCBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3aGVuIEdUSURfT05MWT0xLgBTT1VSQ0VfQVVUT19QT1NJVElPTiBjYW5ub3QgYmUgZGlzYWJsZWQgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2hlbiBHVElEX09OTFk9MS4AV2hlbiBkaXNhYmxpbmcgR1RJRF9PTkxZIGFuZCBTT1VSQ0VfQVVUT19QT1NJVElPTiBGT1IgQ0hBTk5FTCAnJS4xOTJzJyB5b3UgbXVzdCBwcm92aWRlIFNPVVJDRV9MT0dfRklMRSBhbmQgU09VUkNFX0xPR19QT1MgYXMgc291cmNlIHBvc2l0aW9ucyBhcmUgaW52YWxpZC4AV2hlbiBkaXNhYmxpbmcgU09VUkNFX0FVVE9fUE9TSVRJT04gRk9SIENIQU5ORUwgJyUuMTkycycgeW91IG11c3QgcHJvdmlkZSBTT1VSQ0VfTE9HX0ZJTEUgYW5kIFNPVVJDRV9MT0dfUE9TIGFzIHNvdXJjZSBwb3NpdGlvbnMgYXJlIGludmFsaWQuAFdoZW4gY29uZmlndXJpbmcgYSBncm91cCByZXBsaWNhdGlvbiBjaGFubmVsIHlvdSBtdXN0IGRvIGl0IHdoZW4gR1RJRF9NT0RFID0gT04uAFJlcGxpY2F0aW9uIGNhbm5vdCBzdGFydCUuMTkycyB3aXRoIEdUSURfT05MWSA9IDEgYXMgdGhpcyBzZXJ2ZXIgdXNlcyBAQEdMT0JBTC5HVElEX01PREUgPD4gT04uAFRoZSByZXBsaWNhdGlvbiBwb3NpdGlvbnMgcmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBtYXkgYmUgb3V0LW9mLWRhdGUgb24gY2hhbm5lbCAnJS4xOTJzJywgZHVlIHRvIHRoZSB1c2Ugb2YgR1RJRF9PTkxZPTEuIFRoZSBvdXQtb2YtZGF0ZSBwb3NpdGlvbnMgY2FuIHN0aWxsIGJlIHVzZWQgaW4gc29tZSBjYXNlcyBzbywgaW4gb3JkZXIgdG8gdXBkYXRlIHRoZW0sIHdlIHN1Z2dlc3QgdGhhdCB5b3Ugc3RhcnQgdGhlIHJlcGxpY2F0aW9uIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGF0IGxlYXN0IG9uZSB0cmFuc2FjdGlvbiwgd2hpY2ggd2lsbCBzZXQgdGhlIHBvc2l0aW9ucyB0byB2YWxpZCB2YWx1ZXMuAFNTTCBmaXBzIG1vZGUgZXJyb3I6ICVzACVzPSVsbHUgaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgWyVsbHUsJWxsdV0uICVsbHUgd2lsbCBiZSB1c2VkLgBNQVRDSCBkb2VzIG5vdCBzdXBwb3J0IFJPTExVUCBjb2x1bW5zLgBNaXNzaW5nIGxvY2FsZSByZXNvdXJjZSBpbiByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeS4AUmVndWxhciBleHByZXNzaW9uIGxpYnJhcnkgdXNlZCBkZWZhdWx0IChyb290KSBsb2NhbGUuAE1pc3NpbmcgZGF0YSBmaWxlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5LgAnJS0uNjRzJyBpcyBhIGNvbGxhdGlvbiBvZiB0aGUgZGVwcmVjYXRlZCBjaGFyYWN0ZXIgc2V0ICVzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgJXMgd2l0aCBhbiBhcHByb3ByaWF0ZSBjb2xsYXRpb24gaW5zdGVhZC4AVGhlICVzIHdhcyBjYWxsZWQgd2hlbiB0aGVyZSB3YXMgYWxyZWFkeSBhbm90aGVyIGNvbmN1cnJlbnQgY2FsbCB0byB0aGlzIHByb2NlZHVyZS4gTm8gYWN0aW9uIHdhcyB0YWtlbi4gV2FpdCBmb3Igb3RoZXIgY2FsbHMgdG8gJXMgdG8gZmluaXNoIGJlZm9yZSByZXRyeWluZy4AQ29ubmVjdGlvbiBjbG9zZWQuIEdsb2JhbCBjb25uZWN0aW9uIG1lbW9yeSBsaW1pdCAlbGx1IGJ5dGVzIGV4Y2VlZGVkLiBDb25zdW1lZCAlbGx1IGJ5dGVzLgBDb25uZWN0aW9uIGNsb3NlZC4gQ29ubmVjdGlvbiBtZW1vcnkgbGltaXQgJWxsdSBieXRlcyBleGNlZWRlZC4gQ29uc3VtZWQgJWxsdSBieXRlcy4ATmVlZCB0byByZWJ1aWxkIHRoZSB0YWJsZSB0byBjaGFuZ2UgY29sdW1uIHR5cGUAVGhpcyBmdW5jdGlvbiAnJS0uMTkycycgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBsb2FkYWJsZSBmdW5jdGlvbiAoVURGKS4gVG8gaW52b2tlIHRoZSBzdG9yZWQgZnVuY3Rpb24sIGl0IGlzIG5lY2Vzc2FyeSB0byBxdWFsaWZ5IGl0IHdpdGggdGhlIHNjaGVtYSBuYW1lLgBDb3VsZCBub3QgcHVyZ2UgYmluYXJ5IGxvZ3Mgc2luY2UgYW5vdGhlciBzZXNzaW9uIGlzIGV4ZWN1dGluZyBMT0NLIElOU1RBTkNFIEZPUiBCQUNLVVAuIFdhaXQgZm9yIHRoYXQgc2Vzc2lvbiB0byByZWxlYXNlIHRoZSBsb2NrLgBUb28gbWFueSB3aW5kb3dzIGluIFNFTEVDVDogJWQuIE1heGltdW0gYWxsb3dlZCBpcyAlZC4gVXNlIG5hbWVkIHdpbmRvd3MgdG8gc2hhcmUgd2luZG93cyBiZXR3ZWVuIHdpbmRvdyBmdW5jdGlvbnMuACVzAENvbW1lbnQgZm9yICVzICclcycgY29udGFpbnMgYW4gaW52YWxpZCAlcyBjaGFyYWN0ZXIgc3RyaW5nOiAnJS42NHMnLgBEZWZpbml0aW9uIG9mICVzICclLS4xOTJzLiUtLjE5MnMnIGNvbnRhaW5zIGFuIGludmFsaWQgJXMgY2hhcmFjdGVyIHN0cmluZzogJyUuNjRzJy4AQ2FuJ3QgZXhlY3V0ZSB0aGUgZ2l2ZW4gY29tbWFuZCB3aGVuIEBAU0VTU0lPTi5HVElEX05FWFQgPT0gJ1VVSUQ6TlVNQkVSJy4AWEE6IFRlbXBvcmFyeSB0YWJsZXMgY2Fubm90IGJlIGFjY2Vzc2VkIGluc2lkZSBYQSB0cmFuc2FjdGlvbnMgd2hlbiB4YV9kZXRhY2hfb25fcHJlcGFyZT1PTgBNYXhpbXVtIHJvdyB2ZXJzaW9ucyByZWFjaGVkIGZvciB0YWJsZSAlcy4gTm8gbW9yZSBjb2x1bW5zIGNhbiBiZSBhZGRlZCBvciBkcm9wcGVkIGluc3RhbnRseS4gUGxlYXNlIHVzZSBDT1BZL0lOUExBQ0UuAENvbHVtbiBjYW4ndCBiZSBhZGRlZCB3aXRoIEFMR09SSVRITT1JTlNUQU5UIGFzIGFmdGVyIHRoaXMgbWF4IHBvc3NpYmxlIHJvdyBzaXplIGNyb3NzZXMgbWF4IHBlcm1pc3NpYmxlIHJvdyBzaXplLiBUcnkgQUxHT1JJVEhNPUlOUExBQ0UvQ09QWS4AQWxsIHF1ZXJpZXMgaGF2ZSBiZWVuIGJsb2NrZWQgd2hpbGUgZnVuY3Rpb24gJ2dyb3VwX3JlcGxpY2F0aW9uX3NldF9hc19wcmltYXJ5KCknIGlzIGV4ZWN1dGluZy4gUGxlYXNlIHJlZmVyIHRpbWVvdXQgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uICdncm91cF9yZXBsaWNhdGlvbl9zZXRfYXNfcHJpbWFyeSgpJy4ARGVsaW1pdGVyICclcycgaW4gcG9zaXRpb24gJWQgaW4gZGF0ZXRpbWUgdmFsdWUgJyVzJyBhdCByb3cgJWQgaXMgZGVwcmVjYXRlZC4gUHJlZmVyIHRoZSBzdGFuZGFyZCAnJWMnLgBEZWxpbWl0ZXIgJyVzJyBpbiBwb3NpdGlvbiAlZCBpbiBkYXRldGltZSB2YWx1ZSAnJXMnIGF0IHJvdyAlZCBpcyBzdXBlcmZsdW91cyBhbmQgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHJlbW92ZS4AQ2Fubm90IHBlcnNpc3QgU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZSAnJXMnIGJlY2F1c2Uga2V5cmluZyBjb21wb25lbnQgc3VwcG9ydCBpcyB1bmF2YWlsYWJsZS4AU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZSAnJXMnIHdhcyBwZXJzaXN0ZWQgd2l0aG91dCBlbmNyeXB0aW9uLiBDb25zaWRlciByZXN0YXJ0aW5nIHNlcnZlciB3aXRoIGtleXJpbmcgY29tcG9uZW50IHN1cHBvcnQgdG8gcGVyc2lzdCBTRU5TSVRJVkUgdmFyaWFibGVzIHNlY3VyZWx5LgBUcmlnZ2VyICclLS4xOTJzJyBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgdGFibGUgJyUtLjE5MnMnLiclLS4xOTJzJy4AVHJpZ2dlciAnJS0uMTkycycuJyUtLjE5MnMnIGFscmVhZHkgZXhpc3RzIG9uIGEgZGlmZmVyZW50IHRhYmxlLiBUaGUgJ0lGIE5PVCBFWElTVFMnIGNsYXVzZSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgdHJpZ2dlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIHRhYmxlLgBUaGlzIGZ1bmN0aW9uICclLS4xOTJzJyBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIG5hdGl2ZSBmdW5jdGlvbi4gVGhlICdJRiBOT1QgRVhJU1RTJyBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aGlsZSBjcmVhdGluZyBhIGxvYWRhYmxlIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhIG5hdGl2ZSBmdW5jdGlvbi4AU0VUIFBBU1NXT1JEIGhhcyBubyBzaWduaWZpY2FuY2UgZm9yIHVzZXIgJyVzJ0AnJXMnIGFzIHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2QgdXNlZCBkb2Vzbid0IHN0b3JlIGF1dGhlbnRpY2F0aW9uIGRhdGEgaW4gdGhlIE15U1FMIHNlcnZlci4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIEFMVEVSIFVTRVIgaW5zdGVhZCBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgYXV0aGVudGljYXRpb24gcGFyYW1ldGVycy4AQ2Fubm90IHJlY292ZXIgZnJvbSBkZXRlY3Rfb25seSBkb3VibGV3cml0ZSBidWZmZXIgYXMgcGFnZSAldSBmcm9tIGJhdGNoIGRvdWJsZXdyaXRlIGZpbGUgaXMgY29ycnVwdGVkLgBEYXRhYmFzZSBwYWdlIGNvcnJ1cHRpb24gb2YgdGFibGVzcGFjZSAlcyBzcGFjZV9pZDogJXUgcGFnZV9udW06ICV1LiBDYW5ub3QgcmVjb3ZlciBpdCBmcm9tIHRoZSBkb3VibGV3cml0ZSBidWZmZXIgYmVjYXVzZSBpdCB3YXMgd3JpdHRlbiBpbiBkZXRlY3Rfb25seS1kb3VibGV3cml0ZSBtb2RlLgBMYXRpdHVkZSBvZiBvcmlnaW4gbXVzdCBiZSB3aXRoaW4gWy05MCwgOTBdIGRlZ3JlZXMsIHNwZWNpZmllZCBpbiB0aGUgU1JTIGFuZ3VsYXIgdW5pdC4ATG9uZ2l0dWRlIG9mIG9yaWdpbiBtdXN0IGJlIHdpdGhpbiAoLTE4MCwgMTgwXSBkZWdyZWVzLCBzcGVjaWZpZWQgaW4gdGhlIFNSUyBhbmd1bGFyIHVuaXQuAFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gZGVmaW5pdGlvbiBmb3IgU1JJRCAldSBjb250YWlucyB1bnVzZWQgcHJvamVjdGlvbiBwYXJhbWV0ZXIgIiVzIi4ARmFpbGVkIHRvIGdlbmVyYXRlIGludmlzaWJsZSBwcmltYXJ5IGtleS4gQ29sdW1uICdteV9yb3dfaWQnIGFscmVhZHkgZXhpc3RzLgBGYWlsZWQgdG8gZ2VuZXJhdGUgaW52aXNpYmxlIHByaW1hcnkga2V5LiBBdXRvLWluY3JlbWVudCBjb2x1bW4gYWxyZWFkeSBleGlzdHMuAEFsdGVyaW5nIGdlbmVyYXRlZCBpbnZpc2libGUgcHJpbWFyeSBrZXkgY29sdW1uICdteV9yb3dfaWQnIGlzIG5vdCBhbGxvd2VkLgBQbGVhc2UgZHJvcCBwcmltYXJ5IGtleSBjb2x1bW4gdG8gYmUgYWJsZSB0byBkcm9wIGdlbmVyYXRlZCBpbnZpc2libGUgcHJpbWFyeSBrZXkuAEdlbmVyYXRpbmcgYW4gaW52aXNpYmxlIHByaW1hcnkga2V5IGZvciBhIHRhYmxlIGNyZWF0ZWQgdXNpbmcgQ1JFQVRFIFRBQkxFIC4uLiBTRUxFQ1QgLi4uIGlzIGRpc2FsbG93ZWQgd2hlbiBiaW5sb2dfZm9ybWF0PVNUQVRFTUVOVC4gSXQgY2Fubm90IGJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgU0VMRUNUIHJldHJpZXZlcyByb3dzIGluIHRoZSBzYW1lIG9yZGVyIG9uIHNvdXJjZSBhbmQgcmVwbGljYS4gVGhlcmVmb3JlLCBpdCBjYW5ub3QgYmUgZ3VhcmFudGVlZCB0aGF0IHRoZSB2YWx1ZSBnZW5lcmF0ZWQgZm9yIHRoZSBnZW5lcmF0ZWQgaW1wbGljaXQgcHJpbWFyeSBrZXkgY29sdW1uIHdpbGwgYmUgdGhlIHNhbWUgb24gc291cmNlIGFuZCByZXBsaWNhIGZvciBhbGwgcm93cy4gVXNlIGJpbmxvZ19mb3JtYXQ9Uk9XIG9yIE1JWEVEIHRvIGV4ZWN1dGUgdGhpcyBzdGF0ZW1lbnQuAFRoZSBvcHRpb24gZXhwaXJlX2xvZ3NfZGF5cyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIG9wdGlvbiBiaW5sb2dfZXhwaXJlX2xvZ3Nfc2Vjb25kcy4gVG8gc2V0IG9uZSwgZmlyc3QgdW5zZXQgdGhlIG90aGVyIGJ5IHNldHRpbmcgaXQgdG8gMC4AUmVjdXJzaXZlIHRhYmxlIHJlZmVyZW5jZSBpbiBFWENFUFQgb3IgSU5URVJTRUNUIG9wZXJhbmQgaXMgbm90IGFsbG93ZWQuAEVycm9yIHdoZW4gdHJ5aW5nIHRvIGZldGNoIGluZm9ybWF0aW9uIGZyb20gc2VjdXJpdHkgY29udGV4dCBvYmplY3QsIHdoZW4gdHJ5aW5nIHRvIGNvbm5lY3QgdGhlIHNlcnZlci4ARXJyb3IgaW4gY29tbWFuZCBzZXJ2aWNlIGJhY2tlbmQgaW50ZXJmYWNlLCBiZWNhdXNlIG9mIDogIiVzIgBUaGUgUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciBjaGFubmVsICclLjE5MnMnIHdvdWxkIG5lZWQgRklMRSBwcml2aWxlZ2UgdG8gZXhlY3V0ZSBhIExPQUQgREFUQSBJTkZJTEUgc3RhdGVtZW50IHJlcGxpY2F0ZWQgaW4gc3RhdGVtZW50IGZvcm1hdC4gQ29uc2lkZXIgdXNpbmcgYmlubG9nX2Zvcm1hdD1ST1cgb24gc291cmNlLiBJZiB0aGUgcmVwbGljYXRlZCBldmVudHMgYXJlIHRydXN0ZWQsIHJlY292ZXIgZnJvbSB0aGUgZmFpbHVyZSBieSB0ZW1wb3JhcmlseSBncmFudGluZyBGSUxFIHRvIHRoZSBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIuAFRoZSAnU0VUIEdMT0JBTCBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzPSVzJyBjb21tYW5kIGVuY291bnRlcmVkIGEgZmFpbHVyZS4gJXMAVXNpbmcgJXMgYXMgdW5xdW90ZWQgaWRlbnRpZmllciBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHF1b3RlcyBvciByZW5hbWUgdGhlIGlkZW50aWZpZXIuAE1heCBudW1iZXIgb2YgZHVwbGljYXRlIHJvd3MgaW4gSU5URVJTRUNUIEFMTCBleGNlZWRlZC4AUXVlcnkgdGhyZWFkcyBjb3VudCgldSkgZXhjZWVkcyB0cmFuc2FjdGlvbiB0aHJlYWRzIGxpbWl0KCV1KSBwZXIgZ3JvdXAuIFBsZWFzZSB1c2UgcXVlcnkgdGhyZWFkcyBjb3VudCBwZXIgZ3JvdXAgc21hbGxlciBvciBlcXVhbCB0byBtYXggdHJhbnNhY3Rpb24gdGhyZWFkcyBsaW1pdCBwZXIgZ3JvdXAASW52YWxpZCB0aW1lc3RhbXAgZm9ybWF0IGluICVzIHVkZgBTSEFQRV9QUkVESUNUSU9OIFVERiAlcyBnb3QgZXJyb3IgYmVjYXVzZSBvZiAlcy4ASGVpZ2h0IHBhcmFtZXRlciBtdXN0IGJlIG5vbiBuZWdhdGl2ZS4AU2NhbGluZyBwYXJhbWV0ZXIgbXVzdCBiZSBub24gbmVnYXRpdmUuAFpvbmUgd2lkdGggcGFyYW1ldGVyIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEtNjAuAExhdGl0dWRlIG9mIG9yaWdpbiBtdXN0IGJlICstOTAgZGVncmVlcywgc3BlY2lmaWVkIGluIHRoZSBTUlMgYW5ndWxhciB1bml0LCBpbiBQb2xhciBTdGVyZW9ncmFwaGljICh2YXJpYW50IEEpIHByb2plY3Rpb24gbWV0aG9kIChFUFNHOjk4MTApLgBUaGUgY2xpZW50IGlzIHVzaW5nIGEgZGVwcmVjYXRlZCBDTElFTlRfTk9fU0NIRU1BIGNsaWVudCBvcHRpb24uIENMSUVOVF9OT19TQ0hFTUEgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFRhYmxlICclLS4xOTJzJyBpcyBub3QgZW1wdHkuAFRhYmxlICclLS4xOTJzJyBoYXMgbm8gcHJpbWFyeSBrZXkuAFRhYmxlICclLS4xOTJzJyBpcyBpbiBhIHNoYXJlZCB0YWJsZXNwYWNlLgBUYWJsZSAnJS0uMTkycycgaGFzIGluZGV4ZXMgb3RoZXIgdGhhbiBwcmltYXJ5IGtleS4AW0lOIFBSSU1BUlkgS0VZIE9SREVSXSBzcGVjaWZpZWQgYnV0IGRhdGEgbm90IHNvcnRlZDogTE9BRCBCVUxLIERBVEEgaW50byB0YWJsZSAnJS0uMTkycycgZmFpbGVkOiAlcwBCdWxrIGV4ZWN1dG9yIGVycm9yOiAlcwBCdWxrIHJlYWRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBsaWJjdXJsAEJ1bGsgcmVhZGVyIGdvdCBsaWJjdXJsIGVycm9yOiAlcwBCdWxrIHJlYWRlciBnb3QgZXJyb3IgcmVzcG9uc2UgZnJvbSBzZXJ2ZXI6ICVsZABCdWxrIHJlYWRlciBnb3QgZXJyb3IgaW4gY29tbXVuaWNhdGlvbiB3aXRoIHNvdXJjZSBzZXJ2ZXIsIGNoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4AQnVsayBsb2FkZXIgZmFpbGVkLCBteXNxbF9sb2FkLT5sb2FkIHJldHVybmVkIGFuIGVycm9yLCBjaGVjayB0aGUgZXJyb3IgbG9nIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuAENTViBjb2x1bW4gdG9vIGJpZyBmb3IgbGVmdG92ZXIgYnVmZmVyLgBCdWxrIGxvYWRlciBjb21wb25lbnQgZXJyb3I6ICVzAFRoZSBmaXJzdCBmaWxlIGJlaW5nIGxvYWRlZCBjb250YWluZWQgbGVzcyBsaW5lcyB0aGFuIHRoZSBpZ25vcmUgY2xhdXNlAE1pc3NpbmcgRU5DTE9TRUQgQlkgY2hhcmFjdGVyIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBBZGQgT1BUSU9OQUxMWSB0byB0aGUgRU5DTE9TRUQgQlkgY2xhdXNlIHRvIGFsbG93IHRoaXMgaW5wdXQuAFRoZSBudW1iZXIgb2YgaW5wdXQgY29sdW1ucyB0aGF0IG5lZWQgdG8gYmUgYnVmZmVyZWQgZm9yIHBhcnNpbmcgZXhjZWVkZWQgcHJlZGVmaW5lZCBidWZmZXIgbWF4IHNpemUgZm9yIGZpbGUgJyVzJy4AVGhlIGNvbHVtbiBkYXRhIHRoYXQgbmVlZGVkIHRvIGJlIGNvcGllZCBkdWUgdG8gZXNjYXBlZCBjaGFyYWN0ZXJzIGV4Y2VlZGVkIHRoZSBzaXplIG9mIHRoZSBpbnRlcm5hbCBjb3B5IGJ1ZmZlciBmb3IgZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4gRGF0YSBmb3Igc29tZSBjb2x1bW5zIGlzIG1pc3NpbmcuAFVuZXhwZWN0ZWQgcm93IHRlcm1pbmF0b3IgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuIERhdGEgZm9yIHNvbWUgY29sdW1ucyBpcyBtaXNzaW5nLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgZW5kaW5nIEVOQ0xPU0VEIEJZIGNoYXJhY3RlciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIE5VTEwgZXNjYXBlIChOKSBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIGNvbHVtbiB0ZXJtaW5hdG9yIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJyByZXN1bHRpbmcgaW4gaW5jb21wbGV0ZSBlc2NhcGUgc2VxdWVuY2UuAExPQUQgQlVMSyBEQVRBIGludG8gdGFibGUgJyUtLjE5MnMnIGZhaWxlZDogJXMASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnIGZvciBjb2x1bW4gJyUtLjE5MnMnIGF0IHJvdyAlbGQgaW4gZmlsZSAnJS0uMTkycycATlVMTCBzdXBwbGllZCB0byBOT1QgTlVMTCBjb2x1bW4gJyVzJyBhdCByb3cgJWxkIGluIGZpbGUgJyUtLjE5MnMnAE9uIGEgR3JvdXAgUmVwbGljYXRpb24gY2hhbm5lbCwgc2V0dGluZyBSRVFVSVJFX1RBQkxFX1BSSU1BUllfS0VZX0NIRUNLIHRvICdHRU5FUkFURScgaXMgbm90IGFsbG93ZWQuAENhbm5vdCBjaGFuZ2UgdGhlICclcycgc3lzdGVtIHZhcmlhYmxlIGluIHJlYWQtb25seSBtb2RlLgBDb2x1bW4gY2FuJ3QgYmUgYWRkZWQgb3IgZHJvcHBlZCB3aXRoIEFMR09SSVRITT1JTlNUQU5UIGFzIGVpdGhlciBtYXggcG9zc2libGUgcm93IHNpemUgYWxyZWFkeSBjcm9zc2VzIG1heCBwZXJtaXNzaWJsZSByb3cgc2l6ZSBvciBtYXkgY3Jvc3MgaXQgYWZ0ZXIgYWRkLiBUcnkgQUxHT1JJVEhNPUlOUExBQ0UvQ09QWS4AQ29sdW1uIGNhbid0IGJlIGFkZGVkIHRvICclcycgd2l0aCBBTEdPUklUSE09SU5TVEFOVCBhbnltb3JlLiBQbGVhc2UgdHJ5IEFMR09SSVRITT1JTlBMQUNFL0NPUFkuAEZhaWxlZCB0byBzZXQgcGVyc2lzdGVkIG9wdGlvbnMuAFRoZSB2YWx1ZSBzdXBwbGllZCBmb3IgJXMgaW4gdGhlIFNFVCBsaXN0IGNhbm5vdCBiZSBudWxsAFRoZSBhc3NpZ25tZW50IG9mICVzIGluIFNFVCBkb2Vzbid0IG1hdGNoIGFueSBvZiB0aGUgdmFyaWFibGVzIHJlZ2lzdGVyZWQgYnkgdGhlIGNvbXBvbmVudChzKQAnJXMnIGlzIGEgdXNlciBkZWZpbmVkIGNvbGxhdGlvbi4gVXNlciBkZWZpbmVkIGNvbGxhdGlvbnMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBhIGNvbXBpbGVkIGNvbGxhdGlvbiBpbnN0ZWFkLgBVc2VyLWxldmVsIGxvY2sgbmFtZSAnJS0uMTkycycgc2hvdWxkIG5vdCBleGNlZWQgJWQgY2hhcmFjdGVycy4ASW1tZWRpYXRlbHkgc3RhcnRpbmcgdGhlIHZlcnNpb24gY29tbWVudCBhZnRlciB0aGUgdmVyc2lvbiBudW1iZXIgaXMgZGVwcmVjYXRlZCBhbmQgbWF5IGNoYW5nZSBiZWhhdmlvciBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgaW5zZXJ0IGEgd2hpdGUtc3BhY2UgY2hhcmFjdGVyIGFmdGVyIHRoZSB2ZXJzaW9uIG51bWJlci4AVGhlIG5ldyBwYXNzd29yZCBtdXN0IGhhdmUgYXQgbGVhc3QgJyV1JyBjaGFyYWN0ZXJzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBvbGQgcGFzc3dvcmQuIEl0IGhhcyBvbmx5ICcldScgY2hhcmFjdGVyKHMpIGRpZmZlcmVudC4gRm9yIHRoaXMgY29tcGFyaXNvbiwgdXBwZXJjYXNlIGxldHRlcnMgYW5kIGxvd2VyY2FzZSBsZXR0ZXJzIGFyZSBjb25zaWRlcmVkIHRvIGJlIGVxdWFsLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiAlcwBQYXJzZXIgc2F3OiAlcwBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBib290c3RyYXAgKGVycm5vOiAlZCkAVHJpZ2dlciBmb3IgdGFibGUgJyVzJy4nJXMnOiBpbnZhbGlkICVzIHZhbHVlICglcykuAFdyb25nIHRyZWU6ICVzAEVycm9yOiBJbnZhbGlkICVzAFNraXAgcmUtcG9wdWxhdGluZyBjb2xsYXRpb25zIGFuZCBjaGFyYWN0ZXIgc2V0cyB0YWJsZXMgaW4gJXMlc3JlYWQtb25seSBtb2RlLgBVc2luZyBkYXRhIGRpY3Rpb25hcnkgd2l0aCB2ZXJzaW9uICclZCcuAEluc3RhbGxlZCBkYXRhIGRpY3Rpb25hcnkgd2l0aCB2ZXJzaW9uICVkAERhdGEgRGljdGlvbmFyeSB2ZXJzaW9uICclZCcgbm90IHN1cHBvcnRlZC4ARmFpbGVkIHRvIHNldCBzeXNsb2cgZmFjaWxpdHkgdG8gIiVzIiwgc2V0dGluZyB0byAiJXMiICglZCkgaW5zdGVhZC4AQ2Fubm90IG9wZW4gJXM7IGNoZWNrIHByaXZpbGVnZXMsIG9yIHJlbW92ZSBzeXNldmVudGxvZyBmcm9tIC0tbG9nLWVycm9yLXNlcnZpY2VzIQAgZWl0aGVyIHJlc3RhcnQgdGhlIHF1ZXJ5IGxvZ2dpbmcgYnkgdXNpbmcgIlNFVCBHTE9CQUwgU0xPV19RVUVSWV9MT0c9T04iIG9yACBlaXRoZXIgcmVzdGFydCB0aGUgcXVlcnkgbG9nZ2luZyBieSB1c2luZyAiU0VUIEdMT0JBTCBHRU5FUkFMX0xPRz1PTiIgb3IARmFpbGVkIHRvIHdyaXRlIHRvICVzOiAlcwBXaGlsZSBpbml0aWFsaXppbmcgZHVtcCB0aHJlYWQgZm9yIHJlcGxpY2Egd2l0aCAlcyA8JXM+LCBmb3VuZCBhIHpvbWJpZSBkdW1wIHRocmVhZCB3aXRoIHRoZSBzYW1lICVzLiBTb3VyY2UgaXMga2lsbGluZyB0aGUgem9tYmllIGR1bXAgdGhyZWFkKCV1KS4AR3RpZCB0YWJsZSBpcyBub3QgcmVhZHkgdG8gYmUgdXNlZC4gVGFibGUgJyVzLiVzJyBjYW5ub3QgYmUgb3BlbmVkLgBTeXN0ZW0gc2NoZW1hIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdC4ARXJyb3IgaW4gaW5pdGlhbGl6aW5nIGRpY3Rpb25hcnksIHVwZ3JhZGUgd2lsbCBkbyBhIGNsZWFudXAgYW5kIGV4aXQAVmlldyAnJXMnLiclcyc6IHVua25vd24gY2hhcnNldCBuYW1lIGFuZC9vciBjb2xsYXRpb24gbmFtZSAoY2xpZW50OiAnJXMnOyBjb25uZWN0aW9uOiAnJXMnKS4ARXJyb3IgaW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIGNoYXJhY3RlciBzZXQgbmFtZSBmb3IgdmlldyAlcy4lcy4ARGF0YSBEaWN0aW9uYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxlZC4ARmFpbGVkIHRvIHVwZGF0ZSBwbHVnaW4gbWV0YWRhdGEgaW4gZGljdGlvbmFyeSB0YWJsZXMuAEZhaWxlZCB0byBQb3B1bGF0ZSBERCB0YWJsZXMuAEVycm9yIGluIENyZWF0aW5nIFZpZXcgJXMuJXMAVW5hYmxlIHRvIHN0YXJ0IHNlcnZlci4gQ2Fubm90IGZpbmQgdGhlIG1ldGEgZGF0YSBmb3IgZGF0YSBkaWN0aW9uYXJ5IHRhYmxlICclcycuAERpY3Rpb25hcnkgY2FjaGUgbm90IGVtcHR5IGF0IHNodXRkb3duLgBEaWN0aW9uYXJ5IG9iamVjdHMgdXNlZCBidXQgbm90IHJlbGVhc2VkLgBEaWN0aW9uYXJ5IG9iamVjdHMgbGVmdCBpbiBkZWZhdWx0IHJlbGVhc2VyLgBEaWN0aW9uYXJ5IG9iamVjdCBhdXRvIHJlbGVhc2VyIG5vdCBkZWxldGVkAEVycm9yOiBVbmFibGUgdG8gY3JlYXRlIHByaW1hcnkgb2JqZWN0IGtleQBFcnJvcjogVW5hYmxlIHRvIGNyZWF0ZSBvYmplY3Qga2V5AENhbid0IGNyZWF0ZSBoYW5kbGVfbWFuYWdlciB0aHJlYWQgKGVycm5vPSAlZCkASXQgaXMgbm90IHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgdHlwZSBvZiB0aGUgcmVsYXkgbG9nJ3MgcmVwb3NpdG9yeSBiZWNhdXNlIHRoZXJlIGFyZSB3b3JrZXJzJyByZXBvc2l0b3JpZXMgd2l0aCBnYXBzLiBQbGVhc2UsIGZpeCB0aGUgZ2FwcyBmaXJzdCBiZWZvcmUgZG9pbmcgc3VjaCBjaGFuZ2UuAG9wdGlvbiAnZW5mb3JjZS1ndGlkLWNvbnNpc3RlbmN5JzogdmFsdWUgJyVzJyB3YXMgbm90IHJlY29nbml6ZWQuIFNldHRpbmcgZW5mb3JjZS1ndGlkLWNvbnNpc3RlbmN5IHRvIE9GRi4AQ2hhbmdlZCBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgZnJvbSAlcyB0byAlcy4AQ2hhbmdlZCBHVElEX01PREUgZnJvbSAlcyB0byAlcy4AJXMgaXMgc2V0IHRvIGEgZGlzYWJsZWQgc3RvcmFnZSBlbmdpbmUgJXMuAERlYnVnIHN5bmMgcG9pbnRzIGhpdDogICAgICAgICAgICAgICAgICAgJTIycwBEZWJ1ZyBzeW5jIHBvaW50cyBleGVjdXRlZDogICAgICAgICAgICAgICUyMnMARGVidWcgc3luYyBwb2ludHMgbWF4IGFjdGl2ZSBwZXIgdGhyZWFkOiAlMjJzAERlYnVnIFN5bmMgRmFjaWxpdHkgZGlzYWJsZWQgZHVlIHRvIGxhY2sgb2YgbWVtb3J5LgBDYW4ndCBpbml0IHRjIGxvZwBFdmVudCBTY2hlZHVsZXI6IENhbid0IGluaXRpYWxpemUgdGhlIGV4ZWN1dGlvbiBxdWV1ZQBFdmVudCBTY2hlZHVsZXI6IFB1cmdpbmcgdGhlIHF1ZXVlLiAldSBldmVudHMARXZlbnQgU2NoZWR1bGVyOiBMYXN0IGV4ZWN1dGlvbiBvZiAlcy4lcy4gJXMAJSpzAEV2ZW50IFNjaGVkdWxlcjogWyVzXS5bJXMuJXNdIGV2ZW50IGV4ZWN1dGlvbiBmYWlsZWQuAEV2ZW50IFNjaGVkdWxlcjogQ2Fubm90IGluaXRpYWxpemUgdGhlIHNjaGVkdWxlciB0aHJlYWQARXZlbnQgU2NoZWR1bGVyOiBTdG9wcGVkAEV2ZW50IHNjaGVkdWxlcjogRmFpbGVkIHRvIHN0YXJ0IHNjaGVkdWxlciwgQ2FuIG5vdCBjcmVhdGUgdGhyZWFkIGZvciBldmVudCBzY2hlZHVsZXIgKGVycm5vPSVkKQBFdmVudCBTY2hlZHVsZXI6IFdhaXRpbmcgZm9yIHRoZSBzY2hlZHVsZXIgdGhyZWFkIHRvIHJlcGx5AEV2ZW50IFNjaGVkdWxlcjogc2NoZWR1bGVyIHRocmVhZCBzdGFydGVkIHdpdGggaWQgJXUARXZlbnQgU2NoZWR1bGVyOiBTZXJpb3VzIGVycm9yIGR1cmluZyBnZXR0aW5nIG5leHQgZXZlbnQgdG8gZXhlY3V0ZS4gU3RvcHBpbmcARXZlbnRfc2NoZWR1bGVyOjpleGVjdXRlX3RvcDogQ2FuIG5vdCBjcmVhdGUgZXZlbnQgd29ya2VyIHRocmVhZCAoZXJybm89JWQpLiBTdG9wcGluZyBldmVudCBzY2hlZHVsZXIARXZlbnQgU2NoZWR1bGVyOiBLaWxsaW5nIHRoZSBzY2hlZHVsZXIgdGhyZWFkLCB0aHJlYWQgaWQgJXUASVAgYWRkcmVzcyAnJXMnIGNvdWxkIG5vdCBiZSByZXNvbHZlZDogJXMASG9zdCBuYW1lICclcycgY291bGQgbm90IGJlIHJlc29sdmVkOiAlcwBJUCBhZGRyZXNzICclcycgaGFzIGJlZW4gcmVzb2x2ZWQgdG8gdGhlIGhvc3QgbmFtZSAnJXMnLCB3aGljaCByZXNlbWJsZXMgSVB2NC1hZGRyZXNzIGl0c2VsZi4ASG9zdG5hbWUgJyVzJyBkb2VzIG5vdCByZXNvbHZlIHRvICclcycuAEhvc3RuYW1lICclcycgaGFzIHRoZSBmb2xsb3dpbmcgSVAgYWRkcmVzc2VzOgAgLSAlcwBEZWZpbmVyIGNsYXVzZSBpcyBtaXNzaW5nIGluIFRyaWdnZXIgb2YgVGFibGUgJXMuIFJlYnVpbGQgVHJpZ2dlciB0byBmaXggZGVmaW5lci4AQ2xpZW50IGNoYXJhY3RlciBzZXQgaXMgbWlzc2luZyBmb3IgdHJpZ2dlciBvZiB0YWJsZSAlcy4gVXNpbmcgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0LgBFcnJvciBpbiBwYXJzaW5nIHZpZXcgJXMuJXMARmFpbGVkIHRvIGJvb3RzdHJhcCBjb21wb25lbnRzIGluZnJhc3RydWN0dXJlLgBGYWlsZWQgdG8gc2h1dGRvd24gY29tcG9uZW50cyBpbmZyYXN0cnVjdHVyZS4ARmFpbGVkIHRvIGJvb3RzdHJhcCBwZXJzaXN0ZW50IGNvbXBvbmVudHMgbG9hZGVyLgBHaXZpbmcgJWQgY2xpZW50IHRocmVhZHMgYSBjaGFuY2UgdG8gZGllIGdyYWNlZnVsbHkAQ0EgY2VydGlmaWNhdGUgJXMgaXMgc2VsZiBzaWduZWQuAEZhaWxlZCB0byBzZXQgdXAgU1NMIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBTU0wgbGlicmFyeSBlcnJvcjogJXMARmFpbGVkIHRvIGdlbmVyYXRlIGEgc2VydmVyIFVVSUQgYmVjYXVzZSBpdCBpcyBmYWlsZWQgdG8gYWxsb2NhdGUgdGhlIFRIRC4AU2FsdGluZyB1dWlkIGdlbmVyYXRvciB2YXJpYWJsZXMsIGN1cnJlbnRfcGlkOiAlbHUsIHNlcnZlcl9zdGFydF90aW1lOiAlbHUsIGJ5dGVzX3NlbnQ6ICVsbHUsIABHZW5lcmF0ZWQgdXVpZDogJyVzJywgc2VydmVyX3N0YXJ0X3RpbWU6ICVsdSwgYnl0ZXNfc2VudDogJWxsdQBUaGUgc2VydmVyX3V1aWQgc3RvcmVkIGluIGF1dG8uY25mIGZpbGUgaXMgbm90IGEgdmFsaWQgVVVJRC4AR2FyYmFnZSBjaGFyYWN0ZXJzIGZvdW5kIGF0IHRoZSBlbmQgb2YgdGhlIHNlcnZlcl91dWlkIHZhbHVlIGluIGF1dG8uY25mIGZpbGUuIEl0IHNob3VsZCBiZSBvZiBsZW5ndGggJyVkJyAoVVVJRF9MRU5HVEgpLiBDbGVhciBpdCBhbmQgcmVzdGFydCB0aGUgc2VydmVyLiAATm8gZXhpc3RpbmcgVVVJRCBoYXMgYmVlbiBmb3VuZCwgc28gd2UgYXNzdW1lIHRoYXQgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGF0IHRoaXMgc2VydmVyIGhhcyBiZWVuIHN0YXJ0ZWQuIEdlbmVyYXRpbmcgYSBuZXcgVVVJRDogJXMuAEluaXRpYWxpemF0aW9uIG9mIHRoZSBzZXJ2ZXIncyBVVUlEIGZhaWxlZCBiZWNhdXNlIGl0IGNvdWxkIG5vdCBiZSByZWFkIGZyb20gdGhlIGF1dG8uY25mIGZpbGUuIElmIHRoaXMgaXMgYSBuZXcgc2VydmVyLCB0aGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkIGJlY2F1c2UgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBnZW5lcmF0ZSBhIG5ldyBVVUlELgBVbmtub3duL3Vuc3VwcG9ydGVkIHN0b3JhZ2UgZW5naW5lOiAlcwBVbnN1cHBvcnRlZCB2YWx1ZSAwIGZvciBzZWN1cmUtYXV0aABJbnZhbGlkIGluc3RydW1lbnQgbmFtZSBvciB2YWx1ZSBmb3IgcGVyZm9ybWFuY2Vfc2NoZW1hX2luc3RydW1lbnQgJyVzJwBUaGUgdXNlIG9mIElubm9EQiBpcyBtYW5kYXRvcnkgc2luY2UgTXlTUUwgNS43LiBUaGUgZm9ybWVyIG9wdGlvbnMgbGlrZSAnLS1pbm5vZGI9MC8xL09GRi9PTicgb3IgJy0tc2tpcC1pbm5vZGInIGFyZSBpZ25vcmVkLgBpZ25vcmUtYnVpbHRpbi1pbm5vZGIgaXMgaWdub3JlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSByZWxlYXNlcy4ASW52YWxpZCBvbGRfcGFzc3dvcmRzIG1vZGU6IDEuIFZhbGlkIHZhbHVlcyBhcmUgMiBhbmQgMAAtLXZlcmJvc2UgaXMgZm9yIHVzZSB3aXRoIC0taGVscDsgZGlkIHlvdSBtZWFuIC0tbG9nLWVycm9yLXZlcmJvc2l0eT8Ab3B0aW9ucyAtLWxvZy1zbG93LWFkbWluLXN0YXRlbWVudHMsIC0tbG9nLXF1ZXJpZXMtbm90LXVzaW5nLWluZGV4ZXMgYW5kIC0tbG9nLXNsb3ctcmVwbGljYS1zdGF0ZW1lbnRzIGhhdmUgbm8gZWZmZWN0IGlmIC0tc2xvdy1xdWVyeS1sb2cgaXMgbm90IHNldABuZXRfYnVmZmVyX2xlbmd0aCAoJWx1KSBpcyBzZXQgdG8gYmUgbGFyZ2VyIHRoYW4gbWF4X2FsbG93ZWRfcGFja2V0ICglbHUpLiBQbGVhc2UgcmVjdGlmeS4AVElNRVNUQU1QIHdpdGggaW1wbGljaXQgREVGQVVMVCB2YWx1ZSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIC0tZXhwbGljaXRfZGVmYXVsdHNfZm9yX3RpbWVzdGFtcCBzZXJ2ZXIgb3B0aW9uIChzZWUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzKS4ASW52YWxpZCBmdC1ib29sZWFuLXN5bnRheCBzdHJpbmc6ICVzACdOT19BVVRPX0NSRUFURV9VU0VSJyBzcWwgbW9kZSB3YXMgbm90IHNldC4AQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgY29ubmVjdGlvbiBoYW5kbGluZwBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0aHJlYWQgaGFuZGxpbmcAQ2FuJ3QgY3JlYXRlIHRlc3QgZmlsZSAlcwBDYW4ndCBzdGFydCBzZXJ2ZXI6IGNhbid0IGNyZWF0ZSBQSUQgZmlsZTogJXMAVW5hYmxlIHRvIGRlbGV0ZSBwaWQgZmlsZTogJXMAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgc2h1dGRvd24gcmVxdWVzdHMgKGVycm5vPSAlZCkARmFpbGVkIHRvIGFjY2VzcyBkaXJlY3RvcnkgZm9yIC0tc2VjdXJlLWZpbGUtcHJpdi4gUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IGRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIGFjY2Vzc2libGUgYnkgTXlTUUwgU2VydmVyLiBTdXBwbGllZCB2YWx1ZSA6ICVzAElnbm9yaW5nIC0tc2VjdXJlLWZpbGUtcHJpdiB2YWx1ZSBhcyBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIC0taW5pdGlhbGl6ZSgtaW5zZWN1cmUpLgBJbnNlY3VyZSBjb25maWd1cmF0aW9uIGZvciAtLXNlY3VyZS1maWxlLXByaXY6IEN1cnJlbnQgdmFsdWUgZG9lcyBub3QgcmVzdHJpY3QgbG9jYXRpb24gb2YgZ2VuZXJhdGVkIGZpbGVzLiBDb25zaWRlciBzZXR0aW5nIGl0IHRvIGEgdmFsaWQsIG5vbi1lbXB0eSBwYXRoLgAtLXNlY3VyZS1maWxlLXByaXYgaXMgc2V0IHRvIE5VTEwuIE9wZXJhdGlvbnMgcmVsYXRlZCB0byBpbXBvcnRpbmcgYW5kIGV4cG9ydGluZyBkYXRhIGFyZSBkaXNhYmxlZABJbnNlY3VyZSBjb25maWd1cmF0aW9uIGZvciAtLXNlY3VyZS1maWxlLXByaXY6ICVzIGlzIGFjY2Vzc2libGUgdGhyb3VnaCAtLXNlY3VyZS1maWxlLXByaXYuIENvbnNpZGVyIGNob29zaW5nIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4ARmFpbGVkIHRvIGdldCBzdGF0IGZvciBkaXJlY3RvcnkgcG9pbnRlZCBvdXQgYnkgLS1zZWN1cmUtZmlsZS1wcml2AEluc2VjdXJlIGNvbmZpZ3VyYXRpb24gZm9yIC0tc2VjdXJlLWZpbGUtcHJpdjogTG9jYXRpb24gaXMgYWNjZXNzaWJsZSB0byBhbGwgT1MgdXNlcnMuIENvbnNpZGVyIGNob29zaW5nIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4AVmFsdWUgZm9yIC0tc2VjdXJlLWZpbGUtcHJpdiBpcyBsb25nZXIgdGhhbiBtYXhpbXVtIGxpbWl0IG9mICVkAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIG5hbWVkIHBpcGVzIChlcnJubz0gJWQpAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIFRDUC9JUCAoZXJybm89ICVkKQBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBzaGFyZWQgbWVtb3J5IChlcnJubz0gJWQpAENhbid0IGNyZWF0ZSBpbnRlcnJ1cHQtdGhyZWFkIChlcnJvciAlZCwgZXJybm86ICVkKQBXb3JsZC13cml0YWJsZSBjb25maWcgZmlsZSAnJXMnIGhhcyBiZWVuIHJlbW92ZWQuAHNldHJsaW1pdCBjb3VsZCBub3QgY2hhbmdlIHRoZSBzaXplIG9mIGNvcmUgZmlsZXMgdG8gJ2luZmluaXR5JzsgIFdlIG1heSBub3QgYmUgYWJsZSB0byBnZW5lcmF0ZSBhIGNvcmUgZmlsZSBvbiBzaWduYWxzAFdyb25nIGRhdGUvdGltZSBmb3JtYXQgc3BlY2lmaWVyOiAlcwBDb3VsZCBub3QgYWxsb2NhdGUgcmVwbGljYXRpb24gYW5kIGJpbmxvZyBmaWx0ZXJzOiAlcwBDYW5ub3QgYWxsb2NhdGUgdGhlIGtleWNhY2hlAEN1cnJlbnQgdGltZSBoYXMgZ290IHBhc3QgeWVhciAyMDM4LiBWYWxpZGF0aW5nIGN1cnJlbnQgdGltZSB3aXRoICVkIGl0ZXJhdGlvbnMgYmVmb3JlIGluaXRpYXRpbmcgdGhlIG5vcm1hbCBzZXJ2ZXIgc2h1dGRvd24gcHJvY2Vzcy4ASXRlcmF0aW9uICVkOiBPYnRhaW5lZCB2YWxpZCBjdXJyZW50IHRpbWUgZnJvbSBzeXN0ZW0ASXRlcmF0aW9uICVkOiBDdXJyZW50IHRpbWUgb2J0YWluZWQgZnJvbSBzeXN0ZW0gaXMgZ3JlYXRlciB0aGFuIDIwMzgAVGhpcyBNeVNRTCBzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IGRhdGVzIGxhdGVyIHRoZW4gMjAzOAAlcyAobXlzcWxkICVzKSBzdGFydGluZyBhcyBwcm9jZXNzICVsdQBTaHV0dGluZyBkb3duIHJlcGxpY2EgdGhyZWFkcwBGb3JjZWZ1bGx5IGRpc2Nvbm5lY3RpbmcgJWQgcmVtYWluaW5nIGNsaWVudHMAQWJvcnRpbmcAQmlubG9nIGVuZABnZXRob3N0bmFtZSBmYWlsZWQsIHVzaW5nICclcycgYXMgaG9zdG5hbWUAT25lIGNhbiBvbmx5IHVzZSB0aGUgLS11c2VyIHN3aXRjaCBpZiBydW5uaW5nIGFzIHJvb3QARmF0YWwgZXJyb3I6IFBsZWFzZSByZWFkICJTZWN1cml0eSIgc2VjdGlvbiBvZiB0aGUgbWFudWFsIHRvIGZpbmQgb3V0IGhvdyB0byBydW4gbXlzcWxkIGFzIHJvb3QhAEZhdGFsIGVycm9yOiBDYW4ndCBjaGFuZ2UgdG8gcnVuIGFzIHVzZXIgJyVzJyA7ICBQbGVhc2UgY2hlY2sgdGhhdCB0aGUgdXNlciBleGlzdHMhAFNlcnZlciBpcyBzdGFydGVkIHdpdGggLS1yZXF1aXJlLXNlY3VyZS10cmFuc3BvcnQ9T04gYnV0IG5vIHNlY3VyZSB0cmFuc3BvcnRzIChTU0wgb3IgU2hhcmVkIE1lbW9yeSkgYXJlIGNvbmZpZ3VyZWQuAHNldGdpZDogJXMAc2V0dWlkOiAlcwBzZXRyZWdpZDogJXMAc2V0cmV1aWQ6ICVzAGNocm9vdDogJXMAVENQL0lQLCAtLXNoYXJlZC1tZW1vcnksIG9yIC0tbmFtZWQtcGlwZSBzaG91bGQgYmUgY29uZmlndXJlZCBvbiBOVCBPUwBDVFJMLUMgaWdub3JlZCBkdXJpbmcgc3RhcnR1cAAnJXMnIGNhbiBub3QgYmUgdXNlZCBhcyBjbGllbnQgY2hhcmFjdGVyIHNldC4gJyVzJyB3aWxsIGJlIHVzZWQgYXMgZGVmYXVsdCBjbGllbnQgY2hhcmFjdGVyIHNldC4AT3V0IG9mIG1lbW9yeQBGYWlsZWQgdG8gbG9jayBtZW1vcnkuIEVycm5vOiAlZABteV9pbml0KCkgZmFpbGVkLgBFeGVjdXRpb24gb2YgaW5pdF9maWxlICclcycgc3RhcnRlZC4ARXhlY3V0aW9uIG9mIGluaXRfZmlsZSAnJXMnIGVuZGVkLgBDaGFuZ2VkIGxpbWl0czogbWF4X29wZW5fZmlsZXM6ICVsdSAocmVxdWVzdGVkICVsdSkAQ291bGQgbm90IGluY3JlYXNlIG51bWJlciBvZiBtYXhfb3Blbl9maWxlcyB0byBtb3JlIHRoYW4gJWx1IChyZXF1ZXN0OiAlbHUpAENoYW5nZWQgbGltaXRzOiBtYXhfY29ubmVjdGlvbnM6ICVsdSAocmVxdWVzdGVkICVsdSkAQ2hhbmdlZCBsaW1pdHM6IHRhYmxlX29wZW5fY2FjaGU6ICVsdSAocmVxdWVzdGVkICVsdSkASWdub3JpbmcgdXNlciBjaGFuZ2UgdG8gJyVzJyBiZWNhdXNlIHRoZSB1c2VyIHdhcyBzZXQgdG8gJyVzJyBlYXJsaWVyIG9uIHRoZSBjb21tYW5kIGxpbmUAQ291bGQgbm90IGFkZCBkbyB0YWJsZSBydWxlICclcychAENvdWxkIG5vdCBhZGQgaWdub3JlIHRhYmxlIHJ1bGUgJyVzJyEAVGhlIHZhcmlhYmxlIHNlc3Npb25fdHJhY2tfc3lzdGVtX3ZhcmlhYmxlcyBlaXRoZXIgaGFzIGR1cGxpY2F0ZSB2YWx1ZXMgb3IgaW52YWxpZCB2YWx1ZXMuAFRvbyBtYW55IGFyZ3VtZW50cyAoZmlyc3QgZXh0cmEgaXMgJyVzJykuAFVzZSAtLXZlcmJvc2UgLS1oZWxwIHRvIGdldCBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMhAFVuYWJsZSB0byByZWFkIGVycm1zZy5zeXMgZmlsZQBDYW4ndCBpbml0IGRhdGFiYXNlcwBUaGVyZSB3ZXJlIG90aGVyIHZhbHVlcyBzcGVjaWZpZWQgdG8gbG9nLW91dHB1dCBiZXNpZGVzIE5PTkUuIERpc2FibGluZyBzbG93IGFuZCBnZW5lcmFsIGxvZ3MgYW55d2F5LgBDU1YgZW5naW5lIGlzIG5vdCBwcmVzZW50LCBmYWxsaW5nIGJhY2sgdG8gdGhlIGxvZyBmaWxlcwBCYWQgc3ludGF4IGluIHJlcGxpY2F0ZS1yZXdyaXRlLWRiIC0gbWlzc2luZyAnLT4nIQBCYWQgc3ludGF4IGluIHJlcGxpY2F0ZS1yZXdyaXRlLWRiIC0gZW1wdHkgRlJPTSBkYiEAQmFkIHN5bnRheCBpbiByZXBsaWNhdGUtcmV3cml0ZS1kYiAtIGVtcHR5IFRPIGRiIQBBbHRob3VnaCBhIHBhdGggd2FzIHNwZWNpZmllZCBmb3IgdGhlICVzLCBsb2cgdGFibGVzIGFyZSB1c2VkLiBUbyBlbmFibGUgbG9nZ2luZyB0byBmaWxlcyB1c2UgdGhlIC0tbG9nLW91dHB1dD1maWxlIG9wdGlvbi4ASW52YWxpZCB2YWx1ZSBmb3IgJXM6ICVzAFRoZSBzZXJ2ZXIgb3B0aW9uICdsb3dlcl9jYXNlX3RhYmxlX25hbWVzJyBpcyBjb25maWd1cmVkIHRvIHVzZSBjYXNlIHNlbnNpdGl2ZSB0YWJsZSBuYW1lcyBidXQgdGhlIGRhdGEgZGlyZWN0b3J5IGlzIG9uIGEgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbSB3aGljaCBpcyBhbiB1bnN1cHBvcnRlZCBjb21iaW5hdGlvbi4gUGxlYXNlIGNvbnNpZGVyIGVpdGhlciB1c2luZyBhIGNhc2Ugc2Vuc2l0aXZlIGZpbGUgc3lzdGVtIGZvciB5b3VyIGRhdGEgZGlyZWN0b3J5IG9yIHN3aXRjaGluZyB0byBhIGNhc2UtaW5zZW5zaXRpdmUgdGFibGUgbmFtZSBtb2RlLgBTZXR0aW5nIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXM9MiBiZWNhdXNlIGZpbGUgc3lzdGVtIGZvciAlcyBpcyBjYXNlIGluc2Vuc2l0aXZlAGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgd2FzIHNldCB0byAyLCBldmVuIHRob3VnaCB5b3VyIHRoZSBmaWxlIHN5c3RlbSAnJXMnIGlzIGNhc2Ugc2Vuc2l0aXZlLiAgTm93IHNldHRpbmcgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyB0byAwIHRvIGF2b2lkIGZ1dHVyZSBwcm9ibGVtcy4AWW91IG5lZWQgdG8gdXNlIC0tbG9nLWJpbiB0byBtYWtlICVzIHdvcmsuAFBhdGggJyVzJyBpcyBhIGRpcmVjdG9yeSBuYW1lLCBwbGVhc2Ugc3BlY2lmeSBhIGZpbGUgbmFtZSBmb3IgJXMgb3B0aW9uAE5vIGFyZ3VtZW50IHdhcyBwcm92aWRlZCB0byAtLWxvZy1iaW4sIGFuZCAtLWxvZy1iaW4taW5kZXggd2FzIG5vdCB1c2VkOyBzbyByZXBsaWNhdGlvbiBtYXkgYnJlYWsgd2hlbiB0aGlzIE15U1FMIHNlcnZlciBhY3RzIGFzIGEgc291cmNlIGFuZCBoYXMgaGlzIGhvc3RuYW1lIGNoYW5nZWQhISBQbGVhc2UgdXNlICctLWxvZy1iaW49JXMnIHRvIGF2b2lkIHRoaXMgcHJvYmxlbS4AWW91IGhhdmUgZW5hYmxlZCB0aGUgYmluYXJ5IGxvZywgYnV0IHlvdSBoYXZlbid0IHByb3ZpZGVkIHRoZSBtYW5kYXRvcnkgc2VydmVyLWlkLiBQbGVhc2UgcmVmZXIgdG8gdGhlIHByb3BlciBzZXJ2ZXIgc3RhcnQtdXAgcGFyYW1ldGVycyBkb2N1bWVudGF0aW9uAFVuYWJsZSB0byBjcmVhdGUgcmVwbGljYXRpb24gcGF0aCBuYW1lczogb3V0IG9mIG1lbW9yeSBvciBwYXRoIG5hbWVzIHRvbyBsb25nIChwYXRoIG5hbWUgZXhjZWVkcyAlZCBvciBmaWxlIG5hbWUgZXhjZWVkcyAlZCkuAEZhaWxlZCB0byBpbml0aWFsaXplIEdUSUQgc3RydWN0dXJlcy4ARmFpbGVkIHRvIGluaXRpYWxpemUgZWFybHkgcGx1Z2lucy4ARmFpbGVkIHRvIGluaXRpYWxpemUgYnVpbHRpbiBwbHVnaW5zLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkeW5hbWljIHBsdWdpbnMuAFBlcmZvcm1hbmNlIHNjaGVtYSBkaXNhYmxlZCAocmVhc29uOiBpbml0IGZhaWxlZCkuAEFza2VkIGZvciAlbHUgdGhyZWFkIHN0YWNrLCBidXQgZ290ICVsZABmYWlsZWQgdG8gc2V0IGRhdGFkaXIgdG8gJXMAQ2FuJ3QgcmVhZCBkYXRhIGRpcmVjdG9yeSdzIHN0YXRzICglZCk6ICVzLiBBc3N1bWluZyB0aGF0IGl0J3Mgbm90IG93bmVkIGJ5IHRoZSBzYW1lIHVzZXIvZ3JvdXAAQ2FuJ3QgY2hhbmdlIGRhdGEgZGlyZWN0b3J5IG93bmVyIHRvICVzAFNldHRpbmcgcGVyc2lzdGVudCBvcHRpb25zIGZhaWxlZC4ARmFpbGVkIHRvIHNhdmUgdGhlIHNldCBvZiBHbG9iYWwgVHJhbnNhY3Rpb24gSWRlbnRpZmllcnMgb2YgdGhlIGxhc3QgYmluYXJ5IGxvZyBpbnRvIHRoZSBteXNxbC5ndGlkX2V4ZWN1dGVkIHRhYmxlIHdoaWxlIHRoZSBzZXJ2ZXIgd2FzIHNodXR0aW5nIGRvd24uIFRoZSBuZXh0IHNlcnZlciByZXN0YXJ0IHdpbGwgbWFrZSBhbm90aGVyIGF0dGVtcHQgdG8gc2F2ZSBHbG9iYWwgVHJhbnNhY3Rpb24gSWRlbnRpZmllcnMgaW50byB0aGUgdGFibGUuAENhbid0IHN0YXJ0IHNlcnZlcjogSW52YWxpZCB2YWx1ZSBmb3IgLS1kZWZhdWx0LWF1dGhlbnRpY2F0aW9uLXBsdWdpbgBDb3VsZCBub3Qgam9pbiAlc3RocmVhZC4gZXJyb3I6JWQAQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYnVpbGRpbmcgZG9fdGFibGUgYW5kIGlnbm9yZV90YWJsZSBydWxlcyB0byBoYXNoZXMgZm9yIGdsb2JhbCByZXBsaWNhdGlvbiBmaWx0ZXIuAEVycm9yIG9wZW5pbmcgQ0EgY2VydGlmaWNhdGUgZmlsZQBFcnJvciBhY2Nlc3NpbmcgZGlyZWN0b3J5IHBvaW50ZWQgYnkgLS1zc2wtY2FwYXRoAEZvdW5kICVzLCAlcyBhbmQgJXMgaW4gZGF0YSBkaXJlY3RvcnkuIFRyeWluZyB0byBlbmFibGUgU1NMIHN1cHBvcnQgdXNpbmcgdGhlbS4ARmFpbGVkIHRvIGNyZWF0ZSAlcyhmaWxlOiAnJXMnLCBlcnJubyAlZCkARmFpbGVkIHRvIGluaXRpYWxpemUgdGltZXIgY29tcG9uZW50IChlcnJubyAlZCkuAHNlcnZlci1pZCBjb25maWd1cmVkIGlzIHRvbyBsYXJnZSB0byByZXByZXNlbnQgd2l0aCBzZXJ2ZXItaWQtYml0cyBjb25maWd1cmVkLgBEZWZhdWx0JXMgc3RvcmFnZSBlbmdpbmUgKCVzKSBpcyBub3QgYXZhaWxhYmxlAENvdWxkIG5vdCBvcGVuIGZpbGUgJyVzJyBmb3IgZXJyb3IgbG9nZ2luZyVzJXMASW52YWxpZCBsb2cgZmlsZSBuYW1lIGFmdGVyIGV4cGFuZGluZyBzeW1saW5rczogJyVzJwB1c2luZyAtLXJlcGxpY2F0ZS1zYW1lLXNlcnZlci1pZCBpbiBjb25qdW5jdGlvbiB3aXRoIC0tbG9nLXJlcGxpY2EtdXBkYXRlcyBpcyBpbXBvc3NpYmxlLCBpdCB3b3VsZCBsZWFkIHRvIGluZmluaXRlIGxvb3BzIGluIHRoaXMgc2VydmVyLgB1c2luZyAtLXJlcGxpY2F0ZS1zYW1lLXNlcnZlci1pZCBpbiBjb25qdW5jdGlvbiB3aXRoIC0tbG9nLXJlcGxpY2EtdXBkYXRlcyB3b3VsZCBsZWFkIHRvIGluZmluaXRlIGxvb3BzIGluIHRoaXMgc2VydmVyLiBIb3dldmVyIHRoaXMgd2lsbCBiZSBpZ25vcmVkIGFzIHRoZSAtLWxvZy1iaW4gb3B0aW9uIGlzIG5vdCBkZWZpbmVkIG9yIHlvdXIgc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCBnbG9iYWwgdHJhbnNhY3Rpb24gaWRlbnRpZXJzIGVuYWJsZWQuAE5EQiA6IFRhYmxlcyBub3QgYXZhaWxhYmxlIGFmdGVyICVsdSBzZWNvbmRzLiBDb25zaWRlciBpbmNyZWFzaW5nIC0tbmRiLXdhaXQtc2V0dXAgdmFsdWUAJXMAVW5hYmxlIHRvIHN0YXJ0IHNlcnZlci4gVGhlIGRhdGEgZGljdGlvbmFyeSB0YWJsZXNwYWNlICclcycgZG9lcyBub3QgZXhpc3QuAENvbm5lY3Rpb24gY29sbGF0aW9uIGlzIG1pc3NpbmcgZm9yIHRyaWdnZXIgb2YgdGFibGUgJXMuIFVzaW5nIGRlZmF1bHQgY29ubmVjdGlvbiBjb2xsYXRpb24uAERhdGFiYXNlIGNvbGxhdGlvbiBpcyBtaXNzaW5nIGZvciB0cmlnZ2VyIG9mIHRhYmxlICVzLiBVc2luZyBEZWZhdWx0IGNoYXJhY3RlciBzZXQuAEVycm9yIGluIE1lbW9yeSBhbGxvY2F0aW9uIGZvciBEZWZpbmVyICVzIGZvciBUcmlnZ2VyLgBFcnJvciBpbiByZWFkaW5nICVzLlRSRyBmaWxlLgBFcnJvciBpbiBwYXJzaW5nIFRyaWdnZXJzIGZyb20gJXMuVFJHIGZpbGUuAEVycm9yIGluIGNyZWF0aW5nIEREIGVudHJ5IGZvciBUcmlnZ2VyICVzLiVzAFJlc29sdmluZyBkZXBlbmRlbmN5IGZvciB0aGUgdmlldyAnJXMuJXMnIGZhaWxlZC4gVmlldyBpcyBubyBtb3JlIHZhbGlkIHRvIHVzZQAlcy4lcyBoYXMgbm8gZGVmaW5lciAoYXMgcGVyIGFuIG9sZCB2aWV3IGZvcm1hdCkuIEN1cnJlbnQgdXNlciBpcyB1c2VkIGFzIGRlZmluZXIuIFBsZWFzZSByZWNyZWF0ZSB0aGUgdmlldy4AUGx1Z2luICclcycgaW5pdCBmdW5jdGlvbiByZXR1cm5lZCBlcnJvci4ASW5pdGlhbGl6YXRpb24gb2YgdHJhbnNhY3Rpb24gZGVsZWdhdGVzIGZhaWxlZC4gUGxlYXNlIHJlcG9ydCBhIGJ1Zy4ASW5pdGlhbGl6YXRpb24gYmlubG9nIHN0b3JhZ2UgZGVsZWdhdGVzIGZhaWxlZC4gUGxlYXNlIHJlcG9ydCBhIGJ1Zy4ASW5pdGlhbGl6YXRpb24gb2YgYmlubG9nIHRyYW5zbWl0IGRlbGVnYXRlcyBmYWlsZWQuIFBsZWFzZSByZXBvcnQgYSBidWcuAEluaXRpYWxpemF0aW9uIGJpbmxvZyByZWxheSBJTyBkZWxlZ2F0ZXMgZmFpbGVkLiBQbGVhc2UgcmVwb3J0IGEgYnVnLgBSdW4gZnVuY3Rpb24gJy4uLicgaW4gcGx1Z2luICclcycgZmFpbGVkAG15c3FsX2hhX3JlYWQ6IEdvdCBlcnJvciAlZCB3aGVuIHJlYWRpbmcgdGFibGUgJyVzJwBTdG9yZWQgcm91dGluZSAnJXMnLiclcyc6IGludmFsaWQgdmFsdWUgaW4gY29sdW1uICVzLgBJbnZhbGlkIGNyZWF0aW9uIGNvbnRleHQgJyVzLiVzJy4AR290IGVycm9yICVkIHdoZW4gcmVhZGluZyB0YWJsZSAnJXMnAGxvYWRfZGVzX2ZpbGU6ICBGb3VuZCB3cm9uZyBrZXlfbnVtYmVyOiAlYwBGYWlsZWQgdG8gc2V0IHBlcnNpc3RlZCBvcHRpb25zLgBQZXJzaXN0ZWQgY29uZmlnIGZpbGUgaXMgY29ycnVwdC4gUGxlYXNlIGVuc3VyZSBteXNxbGQtYXV0by5jbmYgZmlsZSBpcyB2YWxpZCBKU09OLgBGb3VuZCBvcHRpb24gd2l0aG91dCBwcmVjZWRpbmcgZ3JvdXAgaW4gY29uZmlnIGZpbGUAVkFMR1JJTkRfRE9fUVVJQ0tfTEVBS19DSEVDSwBWQUxHUklORF9DT1VOVF9MRUFLUyByZXBvcnRzICVsdSBsZWFrZWQgYnl0ZXMgZm9yIHF1ZXJ5ICclLipzJwBMT0FEIERBVEEgSU5GSUxFIGluIHRoZSByZXBsaWNhIFNRTCBUaHJlYWQgY2FuIG9ubHkgcmVhZCBmcm9tIC0tcmVwbGljYS1sb2FkLXRtcGRpci4gUGxlYXNlLCByZXBvcnQgYSBidWcuAEdvdCB1bmtub3duIGVycm9yOiAlZABDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHVkZiBzdHJ1Y3R1cmVzAENhbid0IGFsbG9jIG1lbW9yeSBmb3IgdWRmIGZ1bmN0aW9uOiAnJS42NHMnAEludmFsaWQgcm93IGluIG15c3FsLmZ1bmMgdGFibGUgZm9yIGZ1bmN0aW9uICclLjY0cycAQ291bGQgbm90IG9wZW4gdGhlIG15c3FsLmZ1bmMgdGFibGUuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4ARm91bmQgJWQgcHJlcGFyZWQgdHJhbnNhY3Rpb24ocykgaW4gJXMARm91bmQgJWQgcHJlcGFyZWQgWEEgdHJhbnNhY3Rpb25zAGlnbm9yZSB4aWQgJXMAY29tbWl0IHhpZCAlcwByb2xsYmFjayB4aWQgJXMAU3RhcnRpbmcgWEEgY3Jhc2ggcmVjb3ZlcnkuLi4ALS10Yy1oZXVyaXN0aWMtcmVjb3ZlciByb2xsYmFjayBzdHJhdGVneSBpcyBub3Qgc2FmZSBvbiBzeXN0ZW1zIHdpdGggbW9yZSB0aGFuIG9uZSAyLXBoYXNlLWNvbW1pdC1jYXBhYmxlIHN0b3JhZ2UgZW5naW5lLiBBYm9ydGluZyBjcmFzaCByZWNvdmVyeS4ARm91bmQgJWQgcHJlcGFyZWQgdHJhbnNhY3Rpb25zISBJdCBtZWFucyB0aGF0IG15c3FsZCB3YXMgbm90IHNodXQgZG93biBwcm9wZXJseSBsYXN0IHRpbWUgYW5kIGNyaXRpY2FsIHJlY292ZXJ5IGluZm9ybWF0aW9uIChsYXN0IGJpbmxvZyBvciAlcyBmaWxlKSB3YXMgbWFudWFsbHkgZGVsZXRlZCBhZnRlciBhIGNyYXNoLiBZb3UgaGF2ZSB0byBzdGFydCBteXNxbGQgd2l0aCAtLXRjLWhldXJpc3RpYy1yZWNvdmVyIHN3aXRjaCB0byBjb21taXQgb3Igcm9sbGJhY2sgcGVuZGluZyB0cmFuc2FjdGlvbnMuAFhBIGNyYXNoIHJlY292ZXJ5IGZpbmlzaGVkLgBGYWlsZWQgdG8gY29sbGVjdCBHVElEIHRvIHNlbmQgaW4gdGhlIHJlc3BvbnNlIHBhY2tldCEATVlTUUwuREVGQVVMVF9ST0xFUyBjb3VsZG4ndCBiZSB1cGRhdGVkIGZvciBhdXRob3JpemF0aW9uIGlkZW50aWZpZXIgJXMARm9sbG93aW5nIHVzZXJzIHdlcmUgc3BlY2lmaWVkIGluIENSRUFURSBVU0VSIElGIE5PVCBFWElTVFMgYnV0IHRoZXkgYWxyZWFkeSBleGlzdC4gQ29ycmVzcG9uZGluZyBlbnRyeSBpbiBiaW5hcnkgbG9nIHVzZWQgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiBwbHVnaW4gJyVzJyB0byByZXdyaXRlIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIChpZiBhbnkpIGZvciB0aGVtOiAlcwBGb2xsb3dpbmcgdXNlcnMgd2VyZSBzcGVjaWZpZWQgaW4gQUxURVIgVVNFUiBJRiBFWElTVFMgYnV0IHRoZXkgZG8gbm90IGV4aXN0LiBDb3JyZXNwb25kaW5nIGVudHJ5IGluIGJpbmFyeSBsb2cgdXNlZCBkZWZhdWx0IGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAnJXMnIHRvIHJld3JpdGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gKGlmIGFueSkgZm9yIHRoZW06ICVzAFRhYmxlICclLTE5MnMnIGNvcnJ1cHRlZDogcm93IGluIHdyb25nIHBhcnRpdGlvbjogJXMgLS0gUGxlYXNlIFJFUEFJUiB0aGUgdGFibGUhAEdvdCBhbiBlcnJvciBmcm9tIHRocmVhZF9pZD0ldSwgJXM6JWQAR290IGFuIGVycm9yIGZyb20gdW5rbm93biB0aHJlYWQsICVzOiVkAFRvbyBtYW55IHN0b3JhZ2UgZW5naW5lcyEAU3RvcmFnZSBlbmdpbmUgJyVzJyBoYXMgY29uZmxpY3RpbmcgdHlwZWNvZGUuIEFzc2lnbmluZyB2YWx1ZSAlZC4AT3V0IG9mIG1lbW9yeSBvbiB0cmFuc2FjdGlvbiB3cml0ZSBzZXQgZXh0cmFjdGlvbgBVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBwbHVnaW4gJyVzJyBoYW5kbGVydG9uLgBTaGFyZWQgbWVtb3J5IHNldHRpbmcgdXAgbGlzdGVuZXIAQ2FuJ3QgY3JlYXRlIHNoYXJlZCBtZW1vcnkgc2VydmljZTogJXMuIDogJXMAQ2FuJ3QgY3JlYXRlIHNoYXJlZCBtZW1vcnkgY29ubmVjdGlvbjogJXMuIDogJXMAQ2FuJ3QgY3JlYXRlIGV2ZW50LCBsYXN0IGVycm9yPSV1AENhbid0IGNyZWF0ZSBuZXcgbmFtZWQgcGlwZSE6ICVzAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIG5ldyBjb25uZWN0aW9uKGVycm5vPSAlZCkARmFpbGVkIHRvIGNyZWF0ZSBhIHNvY2tldCBmb3IgJXMgJyVzJzogZXJybm86ICVkLgBTZXJ2ZXIgc29ja2V0IGNyZWF0ZWQgb24gSVA6ICclcycuAFNlcnZlciBob3N0bmFtZSAoYmluZC1hZGRyZXNzKTogJyVzJzsgcG9ydDogJWQASVB2NiBpcyBhdmFpbGFibGUuAElQdjYgaXMgbm90IGF2YWlsYWJsZS4AQ2FuJ3QgY3JlYXRlIElQIHNvY2tldDogJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyOiBjYW5ub3QgcmVzb2x2ZSBob3N0bmFtZSEARG8geW91IGFscmVhZHkgaGF2ZSBhbm90aGVyIG15c3FsZCBzZXJ2ZXIgcnVubmluZyBvbiBwb3J0OiAlZCA/AERvIHlvdSBhbHJlYWR5IGhhdmUgYW5vdGhlciBteXNxbGQgc2VydmVyIHJ1bm5pbmcgb24gc29ja2V0OiAlcyA/AEFub3RoZXIgcHJvY2VzcyB3aXRoIHBpZCAlZCBpcyB1c2luZyB1bml4IHNvY2tldCBmaWxlLgBGYWlsZWQgdG8gcmVzZXQgSVBWNl9WNk9OTFkgZmxhZyAoZXJyb3I6ICVkKS4gVGhlIHNlcnZlciB3aWxsIGxpc3RlbiB0byBJUHY2IGFkZHJlc3NlcyBvbmx5LgBSZXRyeWluZyBiaW5kIG9uIFRDUC9JUCBwb3J0ICV1AENhbid0IHN0YXJ0IHNlcnZlcjogQmluZCBvbiBUQ1AvSVAgcG9ydDogJXMARmFpbHMgdG8gcHJpbnQgb3V0IElQLWFkZHJlc3MuACAgLSAnJXMnIHJlc29sdmVzIHRvICclcyc7AENhbid0IHN0YXJ0IHNlcnZlcjogbGlzdGVuKCkgb24gVENQL0lQIHBvcnQ6ICVzAGxpc3RlbigpIG9uIFRDUC9JUCBmYWlsZWQgd2l0aCBlcnJvciAlZABUaGUgc29ja2V0IGZpbGUgcGF0aCBpcyB0b28gbG9uZyAoPiAldSk6ICVzAFVuYWJsZSB0byBzZXR1cCB1bml4IHNvY2tldCBsb2NrIGZpbGUuAENhbid0IHN0YXJ0IHNlcnZlcjogVU5JWCBTb2NrZXQgOiAlcwBDYW4ndCBzdGFydCBzZXJ2ZXIgOiBCaW5kIG9uIHVuaXggc29ja2V0OiAlcwBsaXN0ZW4oKSBvbiBVbml4IHNvY2tldCBmYWlsZWQgd2l0aCBlcnJvciAlZABVbmFibGUgdG8gY3JlYXRlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBhZnRlciByZXRyaWVzLgBDb3VsZCBub3QgY3JlYXRlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcy4AQ291bGQgbm90IG9wZW4gdW5peCBzb2NrZXQgbG9jayBmaWxlICVzLgBDb3VsZCBub3QgcmVhZCB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMuAFVuaXggc29ja2V0IGxvY2sgZmlsZSBpcyBlbXB0eSAlcy4ASW52YWxpZCBwaWQgaW4gdW5peCBzb2NrZXQgbG9jayBmaWxlICVzLgBDb3VsZCBub3Qgd3JpdGUgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGVycm5vICVkLgBDb3VsZCBub3QgcmVtb3ZlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBlcnJubyAlZC4AQ291bGQgbm90IHN5bmMgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGVycm5vICVkLgBDb3VsZCBub3QgY2xvc2UgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGVycm5vICVkLgBteXNxbGQ6IEdvdCBlcnJvciAlZCBmcm9tIHNlbGVjdABFcnJvciBpbiBhY2NlcHQ6ICVzAFJTQSAlcyBrZXkgZmlsZSBub3QgZm91bmQ6ICVzLiBTb21lIGF1dGhlbnRpY2F0aW9uIHBsdWdpbnMgd2lsbCBub3Qgd29yay4ARmFpbHVyZSB0byBwYXJzZSBSU0EgJXMga2V5IChmaWxlIGV4aXN0cyk6ICVzOiAlcwBGYWlsdXJlIHRvIHJlYWQga2V5IGZpbGU6ICVzAFJTQSBrZXkgZmlsZXMgbm90IGZvdW5kLiBTb21lIGF1dGhlbnRpY2F0aW9uIHBsdWdpbnMgd2lsbCBub3Qgd29yay4AQ29ubmVjdGlvbiBhdHRyaWJ1dGVzIG9mIGxlbmd0aCAlbHUgd2VyZSB0cnVuY2F0ZWQgKCVkIGJ5dGVzIGxvc3QpIGZvciBjb25uZWN0aW9uICVsbHUsIHVzZXIgJXNAJXMgKGFzICVzKSwgYXV0aDogJXMAWC41MDkgY2lwaGVycyBtaXNtYXRjaDogc2hvdWxkIGJlICclcycgYnV0IGlzICclcycAWC41MDkgaXNzdWVyIG1pc21hdGNoOiBzaG91bGQgYmUgJyVzJyBidXQgaXMgJyVzJwBYLjUwOSBzdWJqZWN0IG1pc21hdGNoOiBzaG91bGQgYmUgJyVzJyBidXQgaXMgJyVzJwBGYWlsZWQgdG8gYWN0aXZhdGUgZGVmYXVsdCByb2xlICVzIGZvciAlcwBDb3VsZCBub3QgZ2VuZXJhdGUgUlNBIHByaXZhdGUga2V5IHJlcXVpcmVkIGZvciBYLjUwOSBjZXJ0aWZpY2F0ZS4AQ291bGQgbm90IHdyaXRlIGtleSBmaWxlOiAlcwBDb3VsZCBub3Qgc2V0IGZpbGUgcGVybWlzc2lvbiBmb3IgJXMAQ291bGQgbm90IHJlYWQgQ0Ega2V5IGZpbGU6ICVzAENvdWxkIG5vdCByZWFkIENBIGNlcnRpZmljYXRlIGZpbGU6ICVzAENvdWxkIG5vdCBnZW5lcmF0ZSBYLjUwOSBjZXJ0aWZpY2F0ZS4AQ291bGQgbm90IHdyaXRlIGNlcnRpZmljYXRlIGZpbGU6ICVzAENvdWxkIG5vdCBnZW5lcmF0ZSBSU0EgUHJpdmF0ZS9QdWJsaWMga2V5IHBhaXIAQ291bGQgbm90IHdyaXRlIHByaXZhdGUga2V5IGZpbGU6ICVzAENvdWxkIG5vdCB3cml0ZSBwdWJsaWMga2V5IGZpbGU6ICVzAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgU1NMIGNlcnRpZmljYXRlcyBhcyBvcHRpb25zIHJlbGF0ZWQgdG8gU1NMIGFyZSBzcGVjaWZpZWQuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgU1NMIGNlcnRpZmljYXRlcyBhcyBjZXJ0aWZpY2F0ZSBmaWxlcyBhcmUgcHJlc2VudCBpbiBkYXRhIGRpcmVjdG9yeS4AQXV0byBnZW5lcmF0ZWQgU1NMIGNlcnRpZmljYXRlcyBhcmUgcGxhY2VkIGluIGRhdGEgZGlyZWN0b3J5LgBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFNTTCBjZXJ0aWZpY2F0ZXMgYXMgLS1hdXRvX2dlbmVyYXRlX2NlcnRzIGlzIHNldCB0byBPRkYuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgUlNBIGtleSBwYWlyIHRocm91Z2ggJXMgYXMgb3B0aW9ucyByZWxhdGVkIHRvIFJTQSBrZXlzIGFyZSBzcGVjaWZpZWQuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgUlNBIGtleSBwYWlyIHRocm91Z2ggJXMgYXMga2V5IGZpbGVzIGFyZSBwcmVzZW50IGluIGRhdGEgZGlyZWN0b3J5LgBBdXRvIGdlbmVyYXRlZCBSU0Ega2V5IGZpbGVzIHRocm91Z2ggJXMgYXJlIHBsYWNlZCBpbiBkYXRhIGRpcmVjdG9yeS4AU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBSU0Ega2V5IHBhaXIgYXMgJXMgaXMgc2V0IHRvIE9GRi4AJ3Byb3hpZXNfcHJpdicgZW50cnkgJyVzQCVzICVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4AVGhlIHBsdWdpbiAnJS4qcycgdXNlZCB0byBhdXRoZW50aWNhdGUgdXNlciAnJXMnQCclLipzJyBpcyBub3QgbG9hZGVkLiBOb2JvZHkgY2FuIGN1cnJlbnRseSBsb2dpbiB1c2luZyB0aGlzIGFjY291bnQuAFRoZSBwbHVnaW4gJyVzJyBpcyB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB1c2VyICclcydAJyUuKnMnLCAlcyBjb25maWd1cmVkLiBOb2JvZHkgY2FuIGN1cnJlbnRseSBsb2dpbiB1c2luZyB0aGlzIGFjY291bnQuAENvdWxkIG5vdCBsb2FkIG15c3FsLnJvbGVfZWRnZXMgYW5kIG15c3FsLmRlZmF1bHRfcm9sZXMgdGFibGVzLiBBQ0wgRERMcyB3aWxsIG5vdCB3b3JrIHVubGVzcyB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUgaXMgcGVyZm9ybWVkLgAndXNlcicgZW50cnkgJyVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4ARmF0YWwgZXJyb3I6IENvdWxkIG5vdCByZWFkIHRoZSBjb2x1bW4gJ2F1dGhlbnRpY2F0aW9uX3N0cmluZycgZnJvbSB0YWJsZSAnbXlzcWwudXNlcicuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AVXNlciBlbnRyeSAnJXMnQCclcycgaGFzIGEgZGVwcmVjYXRlZCBwcmUtNC4xIHBhc3N3b3JkLiBUaGUgdXNlciB3aWxsIGJlIGlnbm9yZWQgYW5kIG5vIG9uZSBjYW4gbG9naW4gd2l0aCB0aGlzIHVzZXIgYW55bW9yZS4AVXNlciBlbnRyeSAnJXMnQCclcycgaGFzIGFuIGVtcHR5IHBsdWdpbiB2YWx1ZS4gVGhlIHVzZXIgd2lsbCBiZSBpZ25vcmVkIGFuZCBubyBvbmUgY2FuIGxvZ2luIHdpdGggdGhpcyB1c2VyIGFueW1vcmUuAEZvdW5kIGludmFsaWQgcGFzc3dvcmQgZm9yIHVzZXI6ICclc0Alcyc7IElnbm9yaW5nIHVzZXIAJ3VzZXInIGVudHJ5ICclc0AlcycgaGFzIHRoZSBwYXNzd29yZCBpZ25vcmUgZmxhZyByYWlzZWQsIGJ1dCBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luIGRvZXNuJ3Qgc3VwcG9ydCBwYXNzd29yZCBleHBpcmF0aW9uLiBUaGUgdXNlciBpZCB3aWxsIGJlIGlnbm9yZWQuAFNvbWUgb2YgdGhlIHVzZXIgYWNjb3VudHMgd2l0aCBTVVBFUiBwcml2aWxlZ2VzIHdlcmUgZGlzYWJsZWQgYmVjYXVzZSBvZiBlbXB0eSBteXNxbC51c2VyLnBsdWdpbiB2YWx1ZS4gSWYgeW91IGFyZSB1cGdyYWRpbmcgZnJvbSBNeVNRTCA1LjYgdG8gTXlTUUwgNS43IGl0IG1lYW5zIHRoYXQgc3Vic3RpdHV0aW9uIGZvciB0aGUgZW1wdHkgcGx1Z2luIGNvbHVtbiB3YXMgbm90IHBvc3NpYmxlLiBQcm9iYWJseSBiZWNhdXNlIG9mIHByZSA0LjEgcGFzc3dvcmQgaGFzaC4gSWYgeW91ciBhY2NvdW50IGlzIGRpc2FibGVkIHlvdSB3aWxsIG5lZWQgdG8gcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuIEZvciBjb21wbGV0ZSBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHVwZ3JhZGUgTXlTUUwgdG8gYSBuZXcgdmVyc2lvbiBwbGVhc2Ugc2VlIHRoZSAnVXBncmFkaW5nIE15U1FMJyBzZWN0aW9uIGZyb20gdGhlIE15U1FMIG1hbnVhbC4ARm91bmQgYW4gZW50cnkgaW4gdGhlICdkYicgdGFibGUgd2l0aCBlbXB0eSBkYXRhYmFzZSBuYW1lOyBTa2lwcGVkACdkYicgZW50cnkgJyVzICVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4AJ2RiJyBlbnRyeSAnJXMgJXNAJXMnIGhhZCBkYXRhYmFzZSBpbiBtaXhlZCBjYXNlIHRoYXQgaGFzIGJlZW4gZm9yY2VkIHRvIGxvd2VyY2FzZSBiZWNhdXNlIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgaXMgc2V0LiBJdCB3aWxsIG5vdCBiZSBwb3NzaWJsZSB0byByZW1vdmUgdGhpcyBwcml2aWxlZ2UgdXNpbmcgUkVWT0tFLgBUaGUgc3lzdGVtIHRhYmxlIG15c3FsLnByb3hpZXNfcHJpdiBpcyBtaXNzaW5nLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAEZhdGFsIGVycm9yOiBDYW4ndCBvcGVuIGFuZCBsb2NrIHByaXZpbGVnZSB0YWJsZXM6ICVzAEZhdGFsOiBjYW4ndCBpbml0aWFsaXplIGdyYW50IHN1YnN5c3RlbSAtICclcycAJ3Byb2NzX3ByaXYnIGVudHJ5ICclcyAlc0AlcycgaWdub3JlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGUuACdwcm9jc19wcml2JyBlbnRyeSAnJXMnIGlnbm9yZWQsIGJhZCByb3V0aW5lIHR5cGUAJ3RhYmxlc19wcml2JyBlbnRyeSAnJXMgJXNAJXMnIGlnbm9yZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlLgBGYWlsZWQgdG8gYWRkICVzIGluIGV4dHJhX3VzZXJzLiBCaW5hcnkgbG9nIGVudHJ5IG1heSBtaXNzIHNvbWUgb2YgdGhlIHVzZXJzLgBVbmFibGUgdG8gc3RhcnQgc2VydmVyLiBUaGUgZGF0YSBkaWN0aW9uYXJ5IHNjaGVtYSAnJXMnIGRvZXMgbm90IGV4aXN0LgBVbmFibGUgdG8gc3RhcnQgc2VydmVyLiBUaGUgZGF0YSBkaWN0aW9uYXJ5IHRhYmxlICclcycgZG9lcyBub3QgZXhpc3QuAEZhaWxlZCB0byBpbml0aWFsaXplIEREIFN0b3JhZ2UgRW5naW5lAEZvdW5kIHBhcnRpYWxseSB1cGdyYWRlZCBERC4gQWJvcnRpbmcgdXBncmFkZSBhbmQgZGVsZXRpbmcgYWxsIEREIHRhYmxlcy4gU3RhcnQgdGhlIHVwZ3JhZGUgcHJvY2VzcyBhZ2Fpbi4ARm91bmQgLmZybSBmaWxlIHdpdGggc2FtZSBuYW1lIGFzIG9uZSBvZiB0aGUgRGljdGlvbmFyeSBUYWJsZXMuAENyZWF0ZWQgRGF0YSBEaWN0aW9uYXJ5IGZvciB1cGdyYWRlAENhbid0IGZpbmQgZXJyb3ItbWVzc2FnZSBmaWxlICclcycuIENoZWNrIGVycm9yLW1lc3NhZ2UgZmlsZSBsb2NhdGlvbiBhbmQgJ2xjLW1lc3NhZ2VzLWRpcicgY29uZmlndXJhdGlvbiBkaXJlY3RpdmUuAFVzaW5nIHByZSA1LjUgc2VtYW50aWNzIHRvIGxvYWQgZXJyb3IgbWVzc2FnZXMgZnJvbSAlcy4gSWYgdGhpcyBpcyBub3QgaW50ZW5kZWQsIHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB2YWxpZCB1c2FnZSBvZiAtLWxjLW1lc3NhZ2VzLWRpciBhbmQgLS1sYW5ndWFnZSBwYXJhbWV0ZXJzLgBFcnJvciBtZXNzYWdlIGZpbGUgJyVzJyBoYWQgb25seSAlZCBlcnJvciBtZXNzYWdlcywgYnV0IGl0IHNob3VsZCBjb250YWluIGF0IGxlYXN0ICVkIGVycm9yIG1lc3NhZ2VzLiBDaGVjayB0aGF0IHRoZSBhYm92ZSBmaWxlIGlzIHRoZSByaWdodCB2ZXJzaW9uIGZvciB0aGlzIHByb2dyYW0hAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBtZXNzYWdlZmlsZSAnJXMnAENhbid0IHJlYWQgZnJvbSBtZXNzYWdlZmlsZSAnJXMnAEZvdW5kIGluY29tcGF0aWJsZSBERUNJTUFMIGZpZWxkICclcycgaW4gJXM7IFBsZWFzZSBkbyAiQUxURVIgVEFCTEUgYCVzYCBGT1JDRSIgdG8gZml4IGl0IQBGb3VuZCBpbmNvbXBhdGlibGUgWUVBUih4KSBmaWVsZCAnJXMnIGluICVzOyBQbGVhc2UgZG8gIkFMVEVSIFRBQkxFIGAlc2AgRk9SQ0UiIHRvIGZpeCBpdCEAJyVzJyBoYWQgbm8gb3IgaW52YWxpZCBjaGFyYWN0ZXIgc2V0LCBhbmQgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0IGlzIG11bHRpLWJ5dGUsIHNvIGNoYXJhY3RlciBjb2x1bW4gc2l6ZXMgbWF5IGhhdmUgY2hhbmdlZABGb3VuZCB3cm9uZyBrZXkgZGVmaW5pdGlvbiBpbiAlczsgUGxlYXNlIGRvICJBTFRFUiBUQUJMRSBgJXNgIEZPUkNFICIgdG8gZml4IGl0IQBVbmFibGUgdG8gb3BlbiBmaWxlICVzAEVycm9yIGluIHJlYWRpbmcgZmlsZSAlcwBUYWJsZSAnJXMnIHdhcyBjcmVhdGVkIHdpdGggYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBNeVNRTCBhbmQgY2Fubm90IGJlIHJlYWQAVW5hYmxlIHRvIHJlYWQgdmlldyAlcwBGaWxlICVzIGhhcyB1bmtub3duIHR5cGUgaW4gaXRzIGhlYWRlci4ASW5jb3JyZWN0IGluZm9ybWF0aW9uIGluIGZpbGUgJXMAQ2FuJ3Qgb3BlbiBhbmQgbG9jayBwcml2aWxlZ2UgdGFibGVzOiAlcwBQbHVnaW4gJyVzJyBjYW5ub3Qgc3Vic2NyaWJlIHRvIE1ZU1FMX0FVRElUX0FVVEhPUklaQVRJT04gZXZlbnRzLiBDdXJyZW50bHkgbm90IHN1cHBvcnRlZC4AUGx1Z2luICclcycgaGFzIGludmFsaWQgZGF0YS4ARmF0YWwgZXJyb3I6IE9PTSB3aGlsZSBpbml0aWFsaXppbmcgdGltZSB6b25lcwBDYW4ndCBvcGVuIGFuZCBsb2NrIHRpbWUgem9uZSB0YWJsZTogJXMgdHJ5aW5nIHRvIGxpdmUgd2l0aG91dCB0aGVtAEZhdGFsIGVycm9yOiBPdXQgb2YgbWVtb3J5IHdoaWxlIGxvYWRpbmcgbXlzcWwudGltZV96b25lX2xlYXBfc2Vjb25kIHRhYmxlAEZhdGFsIGVycm9yOiBXaGlsZSBsb2FkaW5nIG15c3FsLnRpbWVfem9uZV9sZWFwX3NlY29uZCB0YWJsZTogdG9vIG11Y2ggbGVhcHMARmF0YWwgZXJyb3I6IEVycm9yIHdoaWxlIGxvYWRpbmcgbXlzcWwudGltZV96b25lX2xlYXBfc2Vjb25kIHRhYmxlAEZhdGFsIGVycm9yOiBJbGxlZ2FsIG9yIHVua25vd24gZGVmYXVsdCB0aW1lIHpvbmUgJyVzJwBDYW4ndCBmaW5kIGRlc2NyaXB0aW9uIG9mIHRpbWUgem9uZSAnJS4qcycAQ2FuJ3QgZmluZCBkZXNjcmlwdGlvbiBvZiB0aW1lIHpvbmUgJyV1JwBFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uX3R5cGUgdGFibGU6IHRvbyBiaWcgdHJhbnNpdGlvbiB0eXBlIGlkAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb25fdHlwZSB0YWJsZTogbm90IGVub3VnaCByb29tIGZvciBhYmJyZXZpYXRpb25zAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb25fdHlwZSB0YWJsZQBFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uIHRhYmxlOiB0b28gbXVjaCB0cmFuc2l0aW9ucwBFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uIHRhYmxlOiBiYWQgdHJhbnNpdGlvbiB0eXBlIGlkAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb24gdGFibGUAbG9hZGluZyB0aW1lIHpvbmUgd2l0aG91dCB0cmFuc2l0aW9uIHR5cGVzAE91dCBvZiBtZW1vcnkgd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24AVW5hYmxlIHRvIGJ1aWxkIG1rdGltZSBtYXAgZm9yIHRpbWUgem9uZQBPdXQgb2YgbWVtb3J5IHdoaWxlIGxvYWRpbmcgdGltZSB6b25lAEZhdGFsIGVycm9yOiBPdXQgb2YgbWVtb3J5IHdoaWxlIHNldHRpbmcgbmV3IHRpbWUgem9uZQBSZXBsaWNhIFNRTCB0aHJlYWQgaXMgc3RvcHBlZCBiZWNhdXNlIFVOVElMIGNvbmRpdGlvbiBpcyBiYWQoJXM6JWxsdSkuAFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCBpdHMgVU5USUwgcG9zaXRpb24gJWxsdQBSZXBsaWNhIFNRTCB0aHJlYWQgc3RvcHBlZCBiZWNhdXNlIFVOVElMIFNRTF9CRUZPUkVfR1RJRFMgJXMgaXMgYWxyZWFkeSBhcHBsaWVkAFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCBVTlRJTCBTUUxfQkVGT1JFX0dUSURTICVzAFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCBVTlRJTCBTUUxfQUZURVJfR1RJRFMgJXMAUmVwbGljYSBTUUwgdGhyZWFkIHN0b3BwZWQgYWNjb3JkaW5nIHRvIFVOVElMIFNRTF9BRlRFUl9NVFNfR0FQUyBhcyBpdCBoYXMgcHJvY2Vzc2VkIGFsbCBnYXAgdHJhbnNhY3Rpb25zIGxlZnQgZnJvbSB0aGUgcHJldmlvdXMgcmVwbGljYSBzZXNzaW9uLgBHcm91cCBSZXBsaWNhdGlvbiBwbHVnaW4gaXMgbm90IGluc3RhbGxlZC4AVGhlIHRyYW5zYWN0aW9uIG93bmVkIEdUSUQgaXMgYWxyZWFkeSBpbiB0aGUgJXMgdGFibGUsIHdoaWNoIGlzIGNhdXNlZCBieSBhbiBleHBsaWNpdCBtb2RpZnlpbmcgZnJvbSB1c2VyIGNsaWVudC4ARmFpbGVkIHRvIGRlbGV0ZSB0aGUgcm93OiAnJXMnIGZyb20gdGhlIGd0aWRfZXhlY3V0ZWQgdGFibGUuAEZhaWxlZCB0byBjb21wcmVzcyB0aGUgZ3RpZF9leGVjdXRlZCB0YWJsZS4ARmFpbGVkIHRvIGNvbXByZXNzIHRoZSBndGlkX2V4ZWN1dGVkIHRhYmxlLCBiZWNhdXNlIGl0IGlzIGZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgVEhELgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQgYXR0cmlidXRlIHdoZW4gY3JlYXRpbmcgY29tcHJlc3Npb24gdGhyZWFkLgBDYW4gbm90IGNyZWF0ZSB0aHJlYWQgdG8gY29tcHJlc3MgZ3RpZF9leGVjdXRlZCB0YWJsZSAoZXJybm89ICVkKQBDb3VsZCBub3Qgam9pbiBndGlkX2V4ZWN1dGVkIHRhYmxlIGNvbXByZXNzaW9uIHRocmVhZC4gZXJyb3I6JWQAQ2FuJ3Qgc3RhcnQgc2VydmVyIDogSW5pdGlhbGl6ZSBzZWN1cml0eSBkZXNjcmlwdG9yOiAlcwBDYW4ndCBzdGFydCBzZXJ2ZXIgOiBTZXQgc2VjdXJpdHkgZGVzY3JpcHRvcjogJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyIDogTmFtZWQgUGlwZSAiJXMiIGFscmVhZHkgaW4gdXNlLgBOREIgUmVwbGljYSA6IEF0IFNRTCB0aHJlYWQgc3RhcnQgYXBwbHlpbmcgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSBmcm9tIFNvdXJjZSBTZXJ2ZXJJZCAldSB3aGljaCBpcyBsb3dlciB0aGFuIHByZXZpb3VzbHkgYXBwbGllZCBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpLiAgR3JvdXAgU291cmNlIExvZyA6ICVzICBHcm91cCBTb3VyY2UgTG9nIFBvcyA6ICVsbHUuICBDaGVjayByZXBsaWNhIHBvc2l0aW9uaW5nLgBOREIgUmVwbGljYSA6IFNRTCB0aHJlYWQgc3RvcHBlZCBhcyBhcHBseWluZyBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIGZyb20gU291cmNlIFNlcnZlcklkICV1IHdoaWNoIGlzIGxvd2VyIHRoYW4gcHJldmlvdXNseSBhcHBsaWVkIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkuICBHcm91cCBTb3VyY2UgTG9nIDogJXMgIEdyb3VwIFNvdXJjZSBMb2cgUG9zIDogJWxsdQBOREIgUmVwbGljYSA6IFNRTCB0aHJlYWQgc3RvcHBlZCBhcyBhdHRlbXB0ZWQgdG8gcmVhcHBseSBhbHJlYWR5IGNvbW1pdHRlZCBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIGZyb20gc2VydmVyIGlkICV1LiAgR3JvdXAgU291cmNlIExvZyA6ICVzICBHcm91cCBTb3VyY2UgTG9nIFBvcyA6ICVsbHUuAE5EQiBSZXBsaWNhIDogU1FMIHRocmVhZCBzdG9wcGVkIGFzIGF0dGVtcHRpbmcgdG8gYXBwbHkgbmV3IGVwb2NoICVsbHUvJWxsdSAoJWxsdSkgd2hpbGUgbG93ZXIgcmVjZWl2ZWQgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSBoYXMgbm90IGJlZW4gY29tbWl0dGVkLiAgU291cmNlIHNlcnZlciBpZCA6ICV1LiAgR3JvdXAgU291cmNlIExvZyA6ICVzICBHcm91cCBTb3VyY2UgTG9nIFBvcyA6ICVsbHUuAE5EQiBSZXBsaWNhOiBtaXNzaW5nIGRhdGEgZm9yICVzIHRpbWVzdGFtcCBjb2x1bW4gJXUuAE5EQiBSZXBsaWNhOiBUYWJsZSAlcy4lcyBsb2dnaW5nIGV4Y2VwdGlvbnMgdG8gJXMuJXMATkRCIFJlcGxpY2E6IFRhYmxlICVzLiVzIDogJXMsIGxvdyBlcG9jaCByZXNvbHV0aW9uAEZvdW5kIHVuZXhwZWN0ZWQgZmllbGQgdHlwZSAldQBGYWlsZWQgdG8gY3JlYXRlIE5kYkluZm8ARmFpbGVkIHRvIGluaXQgTmRiSW5mbwBuZGJfc2VyaWFsaXplX2NvbmQ6IFVuZXhwZWN0ZWQgbWlzbWF0Y2ggb2YgZm91bmQgYW5kIGV4cGVjdGVkIG51bWJlciBvZiBmdW5jdGlvbiBhcmd1bWVudHMgJXUAJXMgLSAlcy4lcwAlcwBJbmZvIHRhYmxlIGlzIG5vdCByZWFkeSB0byBiZSB1c2VkLiBUYWJsZSAnJXMuJXMnIGNhbm5vdCBiZSBvcGVuZWQuAEluZm8gdGFibGUgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFRhYmxlICclcy4lcycgY2Fubm90IGJlIHNjYW5uZWQuAENvcnJ1cHRlZCB0YWJsZSAlcy4lcy4gQ2hlY2sgb3V0IHRhYmxlIGRlZmluaXRpb24uAEluZm8gdGFibGUgaGFzIGEgcHJvYmxlbSB3aXRoIGl0cyBrZXkgZmllbGQocykuIFRhYmxlICclcy4lcycgZXhwZWN0ZWQgZmllbGQgIyV1IHRvIGJlICclcycgYnV0IGZvdW5kICclcycgaW5zdGVhZC4AQ2hvb3Npbmcgd29ya2VyIGlkICVsdSwgdGhlIGZvbGxvd2luZyBpcyBnb2luZyB0byBiZSAlbHUAVHJhbnNhY3Rpb24gaXMgdGFnZ2VkIHdpdGggaW5jb25zaXN0ZW50IGxvZ2ljYWwgdGltZXN0YW1wczogc2VxdWVuY2VfbnVtYmVyICglbGxkKSA8PSBsYXN0X2NvbW1pdHRlZCAoJWxsZCkAVHJhbnNhY3Rpb24ncyBzZXF1ZW5jZSBudW1iZXIgaXMgaW5jb25zaXN0ZW50IHdpdGggdGhhdCBvZiBhIHByZWNlZGluZyBvbmU6IHNlcXVlbmNlX251bWJlciAoJWxsZCkgPD0gcHJldmlvdXMgc2VxdWVuY2VfbnVtYmVyICglbGxkKQBGb3IgdGhlIGNyZWF0aW9uIG9mIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIGFuZCBhcHBsaWVyIG1ldGFkYXRhIHJlcG9zaXRvcmllcyBtdXN0IGJlIHNldCB0byBUQUJMRQBGb3IgdGhlIGNyZWF0aW9uIG9mIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHRoZSBzZXJ2ZXIgaWQgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSAwAFJlcGxpY2E6IFdyb25nIHJlcG9zaXRvcnkuIFJlcG9zaXRvcnkgc2hvdWxkIGJlIFRBQkxFAEVycm9yIGNyZWF0aW5nIGNvbm5lY3Rpb24gbWV0YWRhdGE6ICVzLgBFcnJvciBjaGFuZ2luZyB0aGUgdHlwZSBvZiBjb25uZWN0aW9uIG1ldGFkYXRhJ3MgcmVwb3NpdG9yeTogJXMuAEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHJlbGF5IGxvZyByZXBvc2l0b3J5IGJlY2F1c2UgdGhlcmUgYXJlIHdvcmtlcnMgcmVwb3NpdG9yaWVzIHdpdGggcG9zc2libGUgZXhlY3V0aW9uIGdhcHMuIFRoZSB2YWx1ZSBvZiAtLXJlbGF5X2xvZ19pbmZvX3JlcG9zaXRvcnkgaXMgYWx0ZXJlZCB0byBvbmUgb2YgdGhlIGZvdW5kIFdvcmtlciByZXBvc2l0b3JpZXMuIFRoZSBnYXBzIGhhdmUgdG8gYmUgc29ydGVkIG91dCBiZWZvcmUgcmVzdW1pbmcgd2l0aCB0aGUgdHlwZSBjaGFuZ2UuAEVycm9yIGNyZWF0aW5nIGFwcGxpZXIgbWV0YWRhdGE6ICVzLgBFcnJvciBjaGFuZ2luZyB0aGUgdHlwZSBvZiBhcHBsaWVyIG1ldGFkYXRhJ3MgcmVwb3NpdG9yeTogJXMuAENvdWxkIG5vdCBkZWxldGUgZnJvbSBSZXBsaWNhIFdvcmtlcnMgaW5mbyByZXBvc2l0b3J5LgBDb3VsZCBub3Qgc3RvcmUgdGhlIHJlc2V0IFJlcGxpY2EgV29ya2VyIHN0YXRlIGludG8gdGhlIHJlcGxpY2EgaW5mbyByZXBvc2l0b3J5LgBFcnJvciBpbiBjaGVja2luZyAlcyByZXBvc2l0b3J5IGluZm8gdHlwZSBvZiAlcy4AUmVwbGljYTogJXMAUmVwbGljYTogQ291bGQgbm90IGNyZWF0ZSBjaGFubmVsIGxpc3QAUmVwbGljYTogVGhpcyByZXBsaWNhIHdhcyBhIG11bHRpc291cmNlZCByZXBsaWNhIHByZXZpb3VzbHkgd2hpY2ggaXMgc3VwcG9ydGVkIG9ubHkgYnkgYm90aCBUQUJMRSBiYXNlZCBjb25uZWN0aW9uIG1ldGFkYXRhIGFuZCBhcHBsaWVyIG1ldGFkYXRhIHJlcG9zaXRvcmllcy4gRm91bmQgb25lIG9yIGJvdGggb2YgdGhlIGluZm8gcmVwb3MgdG8gYmUgdHlwZSBGSUxFLiBTZXQgYm90aCByZXBvcyB0byB0eXBlIFRBQkxFLgBSZXBsaWNhOiBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgZm9yIGNoYW5uZWwgJyVzJzsgaXRzIHJlY29yZCBtYXkgc3RpbGwgYmUgcHJlc2VudCBpbiB0aGUgYXBwbGllciBtZXRhZGF0YSByZXBvc2l0b3J5LCBjb25zaWRlciBkZWxldGluZyBpdC4ARmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlJXMAUmVwbGljYTogRmFpbGVkIHRvIGNyZWF0ZSBhIGNoYW5uZWwgZnJvbSBjb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkuAEZhaWxlZCB0byBjcmVhdGUgYSBuZXcgaW5mbyBmaWxlIChmaWxlICclcycsIGVycm5vICVkKQBGYWlsZWQgdG8gY3JlYXRlIGEgY2FjaGUgb24gaW5mbyBmaWxlIChmaWxlICclcycpAEZhaWxlZCB0byBvcGVuIHRoZSBleGlzdGluZyBpbmZvIGZpbGUgKGZpbGUgJyVzJywgZXJybm8gJWQpAFNlcnZlciBvdmVyY29tZXMgdGhlIHRlbXBvcmFyeSAnb3V0IG9mIG1lbW9yeScgaW4gJyVkJyB0cmllcyB3aGlsZSBhbGxvY2F0aW5nIGEgbmV3IGNodW5rIG9mIGludGVydmFscyBmb3Igc3RvcmluZyBHVElEcy4AVW5rbm93biBjb3N0IGNvbnN0YW50ICIlcyIgaW4gbXlzcWwuc2VydmVyX2Nvc3QgdGFibGUASW52YWxpZCB2YWx1ZSBmb3IgY29zdCBjb25zdGFudCAiJXMiIGluIG15c3FsLnNlcnZlcl9jb3N0IHRhYmxlOiAlLjFmAFVua25vd24gY29zdCBjb25zdGFudCAiJXMiIGluIG15c3FsLmVuZ2luZV9jb3N0IHRhYmxlAFVua25vd24gc3RvcmFnZSBlbmdpbmUgIiVzIiBpbiBteXNxbC5lbmdpbmVfY29zdCB0YWJsZQBJbnZhbGlkIGRldmljZSB0eXBlICVkIGZvciAiJXMiIHN0b3JhZ2UgZW5naW5lIGZvciBjb3N0IGNvbnN0YW50ICIlcyIgaW4gbXlzcWwuZW5naW5lX2Nvc3QgdGFibGUASW52YWxpZCB2YWx1ZSBmb3IgY29zdCBjb25zdGFudCAiJXMiIGZvciAiJXMiIHN0b3JhZ2UgZW5naW5lIGFuZCBkZXZpY2UgdHlwZSAlZCBpbiBteXNxbC5lbmdpbmVfY29zdCB0YWJsZTogJS4xZgBFcnJvciB3aGlsZSByZWFkaW5nIGZyb20gbXlzcWwuc2VydmVyX2Nvc3QgdGFibGUuAEVycm9yIHdoaWxlIHJlYWRpbmcgZnJvbSBteXNxbC5lbmdpbmVfY29zdCB0YWJsZS4ARmFpbGVkIHRvIG9wZW4gb3B0aW1pemVyIGNvc3QgY29uc3RhbnQgdGFibGVzAFVuc3VwcG9ydGVkIG5vbi1pZ25vcmFibGUgZXZlbnQgZmVkIGludG8gdGhlIGV2ZW50IHN0cmVhbS4AR1RJRF9MT0dfRVZFTlQgb3IgQU5PTllNT1VTX0dUSURfTE9HX0VWRU5UIGlzIG5vdCBleHBlY3RlZCBpbiBhbiBldmVudCBzdHJlYW0gJXMuAFFVRVJZKEJFR0lOKSBpcyBub3QgZXhwZWN0ZWQgaW4gYW4gZXZlbnQgc3RyZWFtIGluIHRoZSBtaWRkbGUgb2YgYSAlcy4AUVVFUlkoQ09NTUlUIG9yIFJPTExCQUNLKSBvciBYSURfTE9HX0VWRU5UIGlzIG5vdCBleHBlY3RlZCBpbiBhbiBldmVudCBzdHJlYW0gJXMuAFFVRVJZKFhBIFJPTExCQUNLKSBpcyBub3QgZXhwZWN0ZWQgaW4gYW4gZXZlbnQgc3RyZWFtICVzLgBFdmVudCBTY2hlZHVsZXI6IFslc10uWyVzLiVzXSBleGVjdXRpb24gZmFpbGVkLCBmYWlsZWQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyLgBFdmVudCBTY2hlZHVsZXI6IFslc10uWyVzLiVzXSBleGVjdXRpb24gZmFpbGVkLCB1c2VyIG5vIGxvbmdlciBoYXMgRVZFTlQgcHJpdmlsZWdlLgBFdmVudCBTY2hlZHVsZXI6ICVzZXJyb3IgZHVyaW5nIGNvbXBpbGF0aW9uIG9mICVzLiVzAEV2ZW50IFNjaGVkdWxlcjogRHJvcHBpbmcgJXMuJXMATmRiIHNjaGVtYVslcy4lc106ICVzAEluIFJCUiBtb2RlLCBSZXBsaWNhIHJlY2VpdmVkIGluY29tcGF0aWJsZSBERUNJTUFMIGZpZWxkIChvbGQtc3R5bGUgZGVjaW1hbCBmaWVsZCkgZnJvbSBTb3VyY2Ugd2hpbGUgY3JlYXRpbmcgY29udmVyc2lvbiB0YWJsZS4gUGxlYXNlIGNvbnNpZGVyIGNoYW5naW5nIGRhdGF0eXBlIG9uIFNvdXJjZSB0byBuZXcgc3R5bGUgZGVjaW1hbCBieSBleGVjdXRpbmcgQUxURVIgY29tbWFuZCBmb3IgY29sdW1uIE5hbWU6ICVzLiVzLiVzLgByb290QGxvY2FsaG9zdCBpcyBjcmVhdGVkIHdpdGggYW4gZW1wdHkgcGFzc3dvcmQgISBQbGVhc2UgY29uc2lkZXIgc3dpdGNoaW5nIG9mZiB0aGUgLS1pbml0aWFsaXplLWluc2VjdXJlIG9wdGlvbi4AQSB0ZW1wb3JhcnkgcGFzc3dvcmQgaXMgZ2VuZXJhdGVkIGZvciByb290QGxvY2FsaG9zdDogJXMARmFpbGVkIHRvIG9wZW4gdGhlIGJvb3RzdHJhcCBmaWxlICVzAEJvb3RzdHJhcHBpbmcgY29tcGxldGUALS1pbml0aWFsaXplIHNwZWNpZmllZCBidXQgdGhlIGRhdGEgZGlyZWN0b3J5IGhhcyBmaWxlcyBpbiBpdC4gQWJvcnRpbmcuAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgb24gYW4gZXhpc3RpbmcgZGF0YSBkaXJlY3RvcnkuAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgYnV0IHRoZSBkYXRhIGRpcmVjdG9yeSBleGlzdHMgYW5kIHRoZSBwYXRoIGlzIHRvbyBsb25nLiBBYm9ydGluZy4ALS1pbml0aWFsaXplIHNwZWNpZmllZCBidXQgdGhlIGRhdGEgZGlyZWN0b3J5IGV4aXN0cyBhbmQgaXMgbm90IHdyaXRhYmxlLiBBYm9ydGluZy4AQ3JlYXRpbmcgdGhlIGRhdGEgZGlyZWN0b3J5ICVzAFN0YXJ0IGJpbmxvZ19kdW1wIHRvIHNvdXJjZV90aHJlYWRfaWQoJXUpIHJlcGxpY2Ffc2VydmVyKCV1KSwgcG9zKCVzLCAlbGx1KQBzb3VyY2Ugc2VuZHMgaGVhcnRiZWF0IG1lc3NhZ2UAdGhlIHJlc3Qgb2YgaGVhcnRiZWF0IGluZm8gc2tpcHBlZCAuLi4AU291cmNlIGlzIGNvbmZpZ3VyZWQgdG8gbG9nIHJlcGxpY2F0aW9uIGV2ZW50cyB3aXRoIGNoZWNrc3VtLCBidXQgd2lsbCBub3Qgc2VuZCBzdWNoIGV2ZW50cyB0byByZXBsaWNhcyB0aGF0IGNhbm5vdCBwcm9jZXNzIHRoZW0ATkRCOiBRdWVyeSAnJXMnIGZhaWxlZCwgZXJyb3I6ICVkOiAlcwBLaWxsaW5nIHRocmVhZCAlbHUAUGx1Z2luICVzIGlzIGRlaW5pdGlhbGl6aW5nIGEgdGhyZWFkIGJ1dCBsZWZ0IGEgc2Vzc2lvbiBhdHRhY2hlZC4gRGV0YWNoaW5nIGl0IGZvcmNlZnVsbHkuAEZhaWxlZCB0byBkZXRhY2ggdGhlIHNlc3Npb24uAENsb3NlZCBmb3JjZWZ1bGx5ICV1IHNlc3Npb24lcyBsZWZ0IG9wZW5lZCBieSBwbHVnaW4gJXMARmFpbGVkIHRvIGRlY3JlbWVudCB0aGUgbnVtYmVyIG9mIHRocmVhZHMAUGx1Z2luICVzIGRpZCBub3QgZGVpbml0aWFsaXplICV1IHRocmVhZHMAS2lsbGVkICV1IHRocmVhZHMgb2YgcGx1Z2luICVzAE5EQiBSZXBsaWNhIDogQ291bGQgbm90IGRldGVybWluZSBtYXhpbXVtIHJlcGxpY2F0ZWQgZXBvY2ggZnJvbSAlcy4lcyBhdCBSZXBsaWNhIHN0YXJ0LCBlcnJvciAldSAlcwBOREIgUmVwbGljYSA6IE1heFJlcGxpY2F0ZWRFcG9jaCBzZXQgdG8gJWxsdSAoJXUvJXUpIGF0IFJlcGxpY2Egc3RhcnQATkRCOiBOb2RlSUQgaXMgJWx1LCBtYW5hZ2VtZW50IHNlcnZlciAnJXM6JWx1JwB0aWQgJXU6IG5vZGVbJXVdIHRyYW5zYWN0aW9uX2hpbnQ9JXUsIHRyYW5zYWN0aW9uX25vX2hpbnQ9JXUATkRCIEludGVybmFsIGVycm9yOiBEZWZhdWx0IHZhbHVlcyBkaWZmZXIgZm9yIGNvbHVtbiAldSwgbmRiX2RlZmF1bHQ6ICVkAE5EQiBJbnRlcm5hbCBlcnJvcjogQ29sdW1uICV1IGhhcyBuYXRpdmUgZGVmYXVsdCwgYnV0IHNob3VsZG4ndC4gRmxhZ3M9JXUsIHR5cGU9JXUAZmllbGRbIG5hbWU6ICclcycsIHR5cGU6ICV1LCByZWFsX3R5cGU6ICV1LCBmbGFnczogMHgleCwgaXNfbnVsbDogJWRdAG5kYkNvbFtuYW1lOiAnJXMnLCB0eXBlOiAldSwgY29sdW1uX25vOiAlZCwgbnVsbGFibGU6ICVkXQBmaXhfdW5pcXVlX2luZGV4X2F0dHJfb3JkZXI6IG15X21hbGxvYygldSkgZmFpbHVyZQBOREIgUmVwbGljYSA6IE1hbGZvcm1lZCBldmVudCByZWNlaXZlZCBvbiB0YWJsZSAlcyBjYW5ub3QgcGFyc2UuICBTdG9wcGluZyBSZXBsaWNhLgBOREIgUmVwbGljYSA6IENvbmZsaWN0IGZ1bmN0aW9uICVzIGRlZmluZWQgb24gdGFibGUgJXMgcmVxdWlyZXMgbmRiX3JlcGxpY2FfY29uZmxpY3Rfcm9sZSB2YXJpYWJsZSB0byBiZSBzZXQuICBTdG9wcGluZyByZXBsaWNhLgBOREIgUmVwbGljYSA6IFRyYW5zYWN0aW9uYWwgY29uZmxpY3QgZGV0ZWN0aW9uIGRlZmluZWQgb24gdGFibGUgJXMsIGJ1dCBldmVudHMgcmVjZWl2ZWQgd2l0aG91dCB0cmFuc2FjdGlvbiBpZHMuICBDaGVjayAtLW5kYi1sb2ctdHJhbnNhY3Rpb24taWQgc2V0dGluZyBvbiB1cHN0cmVhbSBDbHVzdGVyLgBOREIgUmVwbGljYSA6IEJpbmxvZyBldmVudCBvbiB0YWJsZSAlcyBtaXNzaW5nIGluZm8gbmVjZXNzYXJ5IGZvciBjb25mbGljdCBkZXRlY3Rpb24uICBDaGVjayBiaW5sb2cgZm9ybWF0IG9wdGlvbnMgb24gdXBzdHJlYW0gY2x1c3Rlci4ARXJyb3IgJWx1IGluIHJlYWRBdXRvSW5jcmVtZW50VmFsdWUoKTogJXMAZm91bmQgdW5jb21taXR0ZWQgYXV0b2NvbW1pdCtyYndyIHRyYW5zYWN0aW9uLCBjb21taXQgc3RhdHVzOiAlZABOZGIgcmVwbGljYSByZXRyaWVkIHRyYW5zYWN0aW9uICV1IHRpbWUocykgaW4gdmFpbi4gIEdpdmluZyB1cC4ARXJyb3IgJWx1IGluIDo6dXBkYXRlX2NyZWF0ZV9pbmZvKCk6ICVzAE5EQjogYWxsb2NhdGluZyB0YWJsZSBzaGFyZSBmb3IgJXMgZmFpbGVkAE5EQiBCaW5sb2c6ICglZCklcwBOREIgQmlubG9nOiBDUkVBVEUgVEFCTEUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IEZBSUxFRCBDUkVBVEUgVEFCTEUgZXZlbnQgb3BlcmF0aW9ucy4gRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IFJFTkFNRSBFdmVudDogJXMATkRCIEJpbmxvZzogRkFJTEVEIGNyZWF0ZSBldmVudCBvcGVyYXRpb25zIGR1cmluZyBSRU5BTUUuIEV2ZW50ICVzAFVuZXhwZWN0ZWQgcmVuYW1lIGNhc2UgZGV0ZWN0ZWQsIHNxbF9jb21tYW5kOiAlZABFcnJvciAlbHUgaW4gOjpnZXRfYXV0b19pbmNyZW1lbnQoKTogJXMAQ2FsbGluZyBuZGJjbHVzdGVyX2NyZWF0ZV9iaW5sb2dfc2V0dXAoJXMpIGluIDo6b3BlbgB0YWJsZSAnJXMnIG9wZW5lZCByZWFkIG9ubHkATkRCOiAnLS1pbml0aWFsaXplJyAtPiBuZGJjbHVzdGVyIHBsdWdpbiBkaXNhYmxlZABOREI6IENoYW5nZWQgZ2xvYmFsIHZhbHVlIG9mIGJpbmxvZ19mb3JtYXQgZnJvbSBTVEFURU1FTlQgdG8gTUlYRUQATkRCX1NIQVJFOiB0cmFpbGluZyBzaGFyZSAlcywgcmVsZWFzZWQgYnkgY2xvc2VfY2FjaGVkX3RhYmxlcwBOREJfU0hBUkU6ICVzIGFscmVhZHkgZXhpc3RzIHVzZV9jb3VudD0lZC4gTW92aW5nIGF3YXkgZm9yIHNhZmV0eSwgYnV0IHBvc3NpYmxlIG1lbWxlYWsuAGhhbmRsZV90cmFpbGluZ19zaGFyZTogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX2dldF9zaGFyZTogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX3JlYWxfZnJlZV9zaGFyZTogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX3JlYWxfZnJlZV9zaGFyZTogJXMsIHN0aWxsIG9wZW4gLSBpZ25vcmVkICdmcmVlJyAobGVha2VkPykAbmRiY2x1c3Rlcl9mcmVlX3NoYXJlOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfbWFya19zaGFyZV9kcm9wcGVkOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfbWFya19zaGFyZV9kcm9wcGVkOiBkZXN0cm95cyBzaGFyZSAlcwBDb3VsZCBub3QgYWxsb2NhdGUgVGhkX25kYiBvYmplY3QATkRCIEJpbmxvZzogTmRiIHRhYmxlcyBpbml0aWFsbHkgcmVhZCBvbmx5LgBuZGIgdXRpbCB0aHJlYWQ6IG1hbGxvYyBmYWlsdXJlLCBxdWVyeSBjYWNoZSBub3QgbWFpbnRhaW5lZCBwcm9wZXJseQBUcnlpbmcgdG8gc2V0IG5kYl9yZWN2X3RocmVhZF9jcHVfbWFzayB0byBpbGxlZ2FsIHZhbHVlID0gJXMsIGlnbm9yZWQAVHJ5aW5nIHRvIHNldCB0b28gbWFueSBDUFUncyBpbiBuZGJfcmVjdl90aHJlYWRfY3B1X21hc2ssIGlnbm9yZWQgdGhpcyB2YXJpYWJsZSwgZXJyb25ldXMgdmFsdWUgPSAlcwBkYnVnX2NoZWNrX3NoYXJlcyBvcGVuOgAgICVzLiVzOiBzdGF0ZTogJXMoJXUpIHVzZV9jb3VudDogJXUAZGJ1Z19jaGVja19zaGFyZXMgZHJvcHBlZDoASW52YWxpZCAob2xkPykgdGFibGUgb3IgZGF0YWJhc2UgbmFtZSAnJXMnAFJlY292ZXJpbmcgYWZ0ZXIgYSBjcmFzaCB1c2luZyAlcwBDYW5ub3QgcGVyZm9ybSBhdXRvbWF0aWMgY3Jhc2ggcmVjb3Zlcnkgd2hlbiAtLXRjLWhldXJpc3RpYy1yZWNvdmVyIGlzIHVzZWQAQmFkIG1hZ2ljIGhlYWRlciBpbiB0YyBsb2cAUmVjb3ZlcnkgZmFpbGVkISBZb3UgbXVzdCBlbmFibGUgZXhhY3RseSAlZCBzdG9yYWdlIGVuZ2luZXMgdGhhdCBzdXBwb3J0IHR3by1waGFzZSBjb21taXQgcHJvdG9jb2wAQ3Jhc2ggcmVjb3ZlcnkgZmFpbGVkLiBFaXRoZXIgY29ycmVjdCB0aGUgcHJvYmxlbSAoaWYgaXQncywgZm9yIGV4YW1wbGUsIG91dCBvZiBtZW1vcnkgZXJyb3IpIGFuZCByZXN0YXJ0LCBvciBkZWxldGUgdGMgbG9nIGFuZCBzdGFydCBteXNxbGQgd2l0aCAtLXRjLWhldXJpc3RpYy1yZWNvdmVyPXtjb21taXR8cm9sbGJhY2t9AEhldXJpc3RpYyBjcmFzaCByZWNvdmVyeSBtb2RlAEhldXJpc3RpYyBjcmFzaCByZWNvdmVyeSBmYWlsZWQAUGxlYXNlIHJlc3RhcnQgbXlzcWxkIHdpdGhvdXQgLS10Yy1oZXVyaXN0aWMtcmVjb3ZlcgBGYWlsZWQgdG8gY3JlYXRlIG9yIHJlY292ZXIgcmVwbGljYXRpb24gaW5mbyByZXBvc2l0b3JpZXMuAERldGVjdGVkIG1pc2NvbmZpZ3VyYXRpb246IHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIGNvbmZpZ3VyZWQgd2l0aCBBVVRPX1BPU0lUSU9OID0gMSwgYnV0IHRoZSBzZXJ2ZXIgd2FzIHN0YXJ0ZWQgd2l0aCAtLWd0aWQtbW9kZT1vZmYuIEVpdGhlciByZWNvbmZpZ3VyZSByZXBsaWNhdGlvbiB1c2luZyBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMCBGT1IgQ0hBTk5FTCAnJS4xOTJzJywgb3IgY2hhbmdlIEdUSURfTU9ERSB0byBzb21lIHZhbHVlIG90aGVyIHRoYW4gT0ZGLCBiZWZvcmUgc3RhcnRpbmcgdGhlIHJlcGxpY2EgcmVjZWl2ZXIgdGhyZWFkLgBSZXBsaWNhOiBDb3VsZCBub3Qgc3RhcnQgcmVwbGljYSBmb3IgY2hhbm5lbCAnJXMnLiBvcGVyYXRpb24gZGlzY29udGludWVkAFJlcGxpY2E6IENvdWxkIG5vdCBzdG9wIHJlcGxpY2EgZm9yIGNoYW5uZWwgJyVzJyBvcGVyYXRpb24gZGlzY29udGludWVkAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogQ291bGQgbm90IGxvY2F0ZSByb3RhdGUgZXZlbnQgZnJvbSB0aGUgc291cmNlLgBFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IEVycm9yIHJlYWRpbmcgZXZlbnRzIGZyb20gcmVsYXkgbG9nOiAlZABFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IEVycm9yIHdoaWxlIGZyZWVpbmcgSU9fQ0FDSEUgb2JqZWN0AFJlbGF5IGxvZyByZWNvdmVyeSBza2lwcGVkIGZvciBncm91cCByZXBsaWNhdGlvbiBjaGFubmVsLgBFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6ICVzAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogQ291bGQgbm90IHJlYWQgcmVsYXkgbG9nIGluZGV4IGZpbGUgZHVlIHRvIGFuIElPIGVycm9yLgBSZWNvdmVyeSBmcm9tIHNvdXJjZSBwb3MgJWxkIGFuZCBmaWxlICVzJXMuIFByZXZpb3VzIHJlbGF5IGxvZyBwb3MgYW5kIHJlbGF5IGxvZyBmaWxlIGhhZCBiZWVuIHNldCB0byAlbGxkLCAlcyByZXNwZWN0aXZlbHkuAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogcmVwbGljYXRlX3NhbWVfc2VydmVyX2lkIGlzIGluIHVzZSBhbmQgc3FsIHRocmVhZCdzIHBvc2l0aW9ucyBhcmUgbm90IGluaXRpYWxpemVkLCBoZW5jZSByZWxheSBsb2cgcmVjb3ZlcnkgY2Fubm90IGhhcHBlbi4ATVRBIHJlY292ZXJ5OiBzdGFydGluZyBjb29yZGluYXRvciB0aHJlYWQgdG8gZmlsbCBNVEEgZ2Fwcy4ATVRBIHJlY292ZXJ5OiBmYWlsZWQgdG8gc3RhcnQgdGhlIGNvb3JkaW5hdG9yIHRocmVhZC4gQ2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgBNVEEgcmVjb3Zlcnk6IGF1dG9tYXRpYyByZWNvdmVyeSBmYWlsZWQuIEVpdGhlciB0aGUgcmVwbGljYSBzZXJ2ZXIgaGFkIHN0b3BwZWQgZHVlIHRvIGFuIGVycm9yIGR1cmluZyBhbiBlYXJsaWVyIHNlc3Npb24gb3IgcmVsYXkgbG9ncyBhcmUgY29ycnVwdGVkLkZpeCB0aGUgY2F1c2Ugb2YgdGhlIHJlcGxpY2Egc2lkZSBlcnJvciBhbmQgcmVzdGFydCB0aGUgcmVwbGljYSBzZXJ2ZXIgb3IgY29uc2lkZXIgdXNpbmcgUkVTRVQgUkVQTElDQS4ARmFpbGVkIHRvIG9wZW4gdGhlIHJlbGF5IGxvZyAnJXMnIChyZWxheV9sb2dfcG9zICVzKS4ATVRBIHJlY292ZXJ5OiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgBTZXJ2ZXIgaWQgbm90IHNldCwgd2lsbCBub3Qgc3RhcnQgcmVwbGljYSVzAENhbid0IGNyZWF0ZSByZXBsaWNhIHRocmVhZCVzLgBUaGUgcmVwbGljYSBJTyB0aHJlYWQlcyB3YXMga2lsbGVkIHdoaWxlIGV4ZWN1dGluZyBpbml0aWFsaXphdGlvbiBxdWVyeSAnJXMnAFRoZSBzb3VyY2UncyBVVUlEIGhhcyBjaGFuZ2VkLCBhbHRob3VnaCB0aGlzIHNob3VsZCBub3QgaGFwcGVuIHVubGVzcyB5b3UgaGF2ZSBjaGFuZ2VkIGl0IG1hbnVhbGx5LiBUaGUgb2xkIFVVSUQgd2FzICVzLgBGb3VuZCBhIHNvdXJjZSB3aXRoIE15U1FMIHNlcnZlciB2ZXJzaW9uIG9sZGVyIHRoYW4gNS4wLiBXaXRoIGNoZWNrc3VtcyBlbmFibGVkIG9uIHRoZSByZXBsaWNhLCByZXBsaWNhdGlvbiBtaWdodCBub3Qgd29yayBjb3JyZWN0bHkuIFRvIGVuc3VyZSBjb3JyZWN0IHJlcGxpY2F0aW9uLCByZXN0YXJ0IHRoZSByZXBsaWNhIHNlcnZlciB3aXRoIC0tcmVwbGljYV9zcWxfdmVyaWZ5X2NoZWNrc3VtPTAuACJTRUxFQ1QgVU5JWF9USU1FU1RBTVAoKSIgZmFpbGVkIG9uIHNvdXJjZSwgZG8gbm90IHRydXN0IGNvbHVtbiBTZWNvbmRzX0JlaGluZF9Tb3VyY2Ugb2YgU0hPVyBSRVBMSUNBIFNUQVRVUy4gRXJyb3I6ICVzICglZCkARmFpbGVkIHRvIGZsdXNoIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeS4AVGhlIGxlbmd0aCBvZiByZXBvcnRfaG9zdCBpcyAlenUuIEl0IGlzIGxhcmdlciB0aGFuIHRoZSBtYXggbGVuZ3RoKCVkKSwgc28gdGhpcyByZXBsaWNhIGNhbm5vdCBiZSByZWdpc3RlcmVkIHRvIHRoZSBzb3VyY2Ulcy4AVGhlIGxlbmd0aCBvZiByZXBvcnRfdXNlciBpcyAlenUuIEl0IGlzIGxhcmdlciB0aGFuIHRoZSBtYXggbGVuZ3RoKCVkKSwgc28gdGhpcyByZXBsaWNhIGNhbm5vdCBiZSByZWdpc3RlcmVkIHRvIHRoZSBzb3VyY2Ulcy4AVGhlIGxlbmd0aCBvZiByZXBvcnRfcGFzc3dvcmQgaXMgJXp1LiBJdCBpcyBsYXJnZXIgdGhhbiB0aGUgbWF4IGxlbmd0aCglZCksIHNvIHRoaXMgcmVwbGljYSBjYW5ub3QgYmUgcmVnaXN0ZXJlZCB0byB0aGUgc291cmNlJXMuAEVycm9yIG9uICVzOiAlZCAgJXMsIHdpbGwgcmV0cnkgaW4gJWQgc2VjcwBFcnJvciByZWFkaW5nIHBhY2tldCBmcm9tIHNlcnZlciVzOiAlcyAoc2VydmVyX2Vycm5vPSVkKQBSZXBsaWNhJXM6IHJlY2VpdmVkIGVuZCBwYWNrZXQgZnJvbSBzZXJ2ZXIgZHVlIHRvIGR1bXAgdGhyZWFkIGJlaW5nIGtpbGxlZCBvbiBzb3VyY2UuIER1bXAgdGhyZWFkcyBhcmUga2lsbGVkIGZvciBleGFtcGxlIGR1cmluZyBzb3VyY2Ugc2h1dGRvd24sIGV4cGxpY2l0bHkgYnkgYSB1c2VyLCBvciB3aGVuIHRoZSBzb3VyY2UgcmVjZWl2ZXMgYSBiaW5sb2cgc2VuZCByZXF1ZXN0IGZyb20gYSBkdXBsaWNhdGUgc2VydmVyIFVVSUQgPCVzPiA6IEVycm9yICVzAE11bHRpLXRocmVhZGVkIHJlcGxpY2Egc3RhdGlzdGljcyVzOiBzZWNvbmRzIGVsYXBzZWQgPSAlbHU7IGV2ZW50cyBhc3NpZ25lZCA9ICVsbHU7IHdvcmtlciBxdWV1ZXMgZmlsbGVkIG92ZXIgb3ZlcnJ1biBsZXZlbCA9ICVsdTsgd2FpdGVkIGR1ZSBhIFdvcmtlciBxdWV1ZSBmdWxsID0gJWx1OyB3YWl0ZWQgZHVlIHRoZSB0b3RhbCBzaXplID0gJWx1OyB3YWl0ZWQgYXQgY2xvY2sgY29uZmxpY3RzID0gJWxsdSB3YWl0ZWQgKGNvdW50KSB3aGVuIFdvcmtlcnMgb2NjdXBpZWQgPSAlbHUgd2FpdGVkIHdoZW4gV29ya2VycyBvY2N1cGllZCA9ICVsbHUAUmVwbGljYSVzOiBNVEEgUmVjb3ZlcnkgaGFzIGNvbXBsZXRlZCBhdCByZWxheSBsb2cgJXMsIHBvc2l0aW9uICVsbHUgc291cmNlIGxvZyAlcywgcG9zaXRpb24gJWxsdS4ARXJyb3IgaW5pdGlhbGl6aW5nIHJlbGF5IGxvZyBwb3NpdGlvbiVzOiAlcwBSZXBsaWNhIEkvTyB0aHJlYWQlczogY29ubmVjdGVkIHRvIHNvdXJjZSAnJXNAJXM6JWQnLHJlcGxpY2F0aW9uIHN0YXJ0ZWQgaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMAUmVwbGljYSBJL08gdGhyZWFkJXMga2lsbGVkIHdoaWxlIGNvbm5lY3RpbmcgdG8gc291cmNlAFJlcGxpY2EgSS9PIHRocmVhZCBjb3VsZG4ndCByZWdpc3RlciBvbiBzb3VyY2UARm9yY2luZyB0byByZWNvbm5lY3QgcmVwbGljYSBJL08gdGhyZWFkJXMARmFpbGVkIG9uIHJlcXVlc3RfZHVtcCgpJXMATG9nIGVudHJ5IG9uIHNvdXJjZSBpcyBsb25nZXIgdGhhbiByZXBsaWNhX21heF9hbGxvd2VkX3BhY2tldCAoJWx1KSBvbiByZXBsaWNhLiBJZiB0aGUgZW50cnkgaXMgY29ycmVjdCwgcmVzdGFydCB0aGUgc2VydmVyIHdpdGggYSBoaWdoZXIgdmFsdWUgb2YgcmVwbGljYV9tYXhfYWxsb3dlZF9wYWNrZXQAU3RvcHBpbmcgcmVwbGljYSBJL08gdGhyZWFkIGR1ZSB0byBvdXQtb2YtbWVtb3J5IGVycm9yIGZyb20gc291cmNlAFJlcGxpY2EgSS9PIHRocmVhZCBhYm9ydGVkIHdoaWxlIHdhaXRpbmcgZm9yIHJlbGF5IGxvZyBzcGFjZQBSZXBsaWNhIEkvTyB0aHJlYWQgZXhpdGluZyVzLCByZWFkIHVwIHRvIGxvZyAnJXMnLCBwb3NpdGlvbiAlcwBGYWlsZWQgZHVyaW5nIHJlcGxpY2Egd29ya2VyIGluaXRpYWxpemF0aW9uJXMAUmVwbGljYTogTVRBIGdyb3VwIHJlY292ZXJ5IGFwcGxpZXIgbWV0YWRhdGEgYmFzZWQgb24gV29ya2VyLUlkICVsdSwgZ3JvdXBfcmVsYXlfbG9nX25hbWUgJXMsIGdyb3VwX3JlbGF5X2xvZ19wb3MgJWxsdSBncm91cF9zb3VyY2VfbG9nX25hbWUgJXMsIGdyb3VwX3NvdXJjZV9sb2dfcG9zICVsbHUARXJyb3IgbG9va2luZyBmb3IgJXMuAFJlcGxpY2E6IE1UQSBncm91cCByZWNvdmVyeSBhcHBsaWVyIG1ldGFkYXRhIGdyb3VwX3NvdXJjZV9sb2dfbmFtZSAlcywgZXZlbnRfc291cmNlX2xvZ19wb3MgJWxsdS4ARXJyb3IgbG9va2luZyBmb3IgZmlsZSBhZnRlciAlcy4AVGhpcyBhbiBlcnJvciBjbnQgIT0gbXRhX2NoZWNrcG9pbnRfcGVyaW9kAEZhaWxlZCBkdXJpbmcgcmVwbGljYSB3b3JrZXIgdGhyZWFkIGNyZWF0aW9uJXMARmFpbGVkIGR1cmluZyByZXBsaWNhIHdvcmtlciB0aHJlYWQgY3JlYXRpb24lcyAoZXJybm89ICVkKQBGYWlsZWQgdG8gaW5pdCBwYXJ0aXRpb25zIGhhc2gAUmVwbGljYSBTUUwgdGhyZWFkIDogTkRCIDogVGFibGVzIG5vdCBhdmFpbGFibGUgYWZ0ZXIgJWx1IHNlY29uZHMuIENvbnNpZGVyIGluY3JlYXNpbmcgLS1uZGItd2FpdC1zZXR1cCB2YWx1ZQBSZXBsaWNhIFNRTCB0aHJlYWQlcyBpbml0aWFsaXplZCwgc3RhcnRpbmcgcmVwbGljYXRpb24gaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMsIHJlbGF5IGxvZyAnJXMnIHBvc2l0aW9uOiAlcwAnU1FMX1JFUExJQ0FfU0tJUF9DT1VOVEVSPSVsZCcgZXhlY3V0ZWQgYXQgcmVsYXlfbG9nX2ZpbGU9JyVzJywgcmVsYXlfbG9nX3Bvcz0nJWxkJywgc291cmNlX2xvZ19uYW1lPSclcycsIHNvdXJjZV9sb2dfcG9zPSclbGQnIGFuZCBuZXcgcG9zaXRpb24gYXQgcmVsYXlfbG9nX2ZpbGU9JyVzJywgcmVsYXlfbG9nX3Bvcz0nJWxkJywgc291cmNlX2xvZ19uYW1lPSclcycsIHNvdXJjZV9sb2dfcG9zPSclbGQnIABSZXBsaWNhIChhZGRpdGlvbmFsIGluZm8pOiAlcyBFcnJvcl9jb2RlOiBNWS0lMDZkAFJlcGxpY2E6ICVzIEVycm9yX2NvZGU6IE1ZLSUwNmQARXJyb3IgbG9hZGluZyB1c2VyLWRlZmluZWQgbGlicmFyeSwgcmVwbGljYSBTUUwgdGhyZWFkIGFib3J0ZWQuIEluc3RhbGwgdGhlIG1pc3NpbmcgbGlicmFyeSwgYW5kIHJlc3RhcnQgdGhlIHJlcGxpY2EgU1FMIHRocmVhZCB3aXRoICJTVEFSVCBSRVBMSUNBIi4gV2Ugc3RvcHBlZCBhdCBsb2cgJyVzJyBwb3NpdGlvbiAlcwBFcnJvciBydW5uaW5nIHF1ZXJ5LCByZXBsaWNhIFNRTCB0aHJlYWQgYWJvcnRlZC4gRml4IHRoZSBwcm9ibGVtLCBhbmQgcmVzdGFydCB0aGUgcmVwbGljYSBTUUwgdGhyZWFkIHdpdGggIlNUQVJUIFJFUExJQ0EiLiBXZSBzdG9wcGVkIGF0IGxvZyAnJXMnIHBvc2l0aW9uICVzAFJlcGxpY2EgU1FMIHRocmVhZCVzIGV4aXRpbmcsIHJlcGxpY2F0aW9uIHN0b3BwZWQgaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMAUmVhZCBpbnZhbGlkIGV2ZW50IGZyb20gc291cmNlOiAnJXMnLCBzb3VyY2UgY291bGQgYmUgY29ycnVwdCBidXQgYSBtb3JlIGxpa2VseSBjYXVzZSBvZiB0aGlzIGlzIGEgYnVnAFRoZSBxdWV1ZSBldmVudCBmYWlsZWQgZm9yIGNoYW5uZWwgJyVzJyBhcyBpdHMgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkLgBBbiB1bmV4cGVjdGVkIGV2ZW50IHNlcXVlbmNlIHdhcyBkZXRlY3RlZCBieSB0aGUgSU8gdGhyZWFkIHdoaWxlIHF1ZXVpbmcgdGhlIGV2ZW50IHJlY2VpdmVkIGZyb20gc291cmNlICclcycgYmluYXJ5IGxvZyBmaWxlLCBhdCBwb3NpdGlvbiAlbGx1LgAnJXMnIGNhbiBub3QgYmUgdXNlZCBhcyBjbGllbnQgY2hhcmFjdGVyIHNldC4gJyVzJyB3aWxsIGJlIHVzZWQgYXMgZGVmYXVsdCBjbGllbnQgY2hhcmFjdGVyIHNldCB3aGlsZSBjb25uZWN0aW5nIHRvIHNvdXJjZS4AUmVwbGljYSVzOiBjb25uZWN0ZWQgdG8gc291cmNlICclc0AlczolZCcscmVwbGljYXRpb24gcmVzdW1lZCBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcwBuZXh0IGxvZyAnJXMnIGlzIGFjdGl2ZQBuZXh0IGxvZyAnJXMnIGlzIG5vdCBhY3RpdmUAUmVwbGljYSBTUUwgdGhyZWFkJXM6IEkvTyBlcnJvciByZWFkaW5nIGV2ZW50IChlcnJubzogJWQgIGN1cl9sb2ctPmVycm9yOiAlZCkARXJyb3IgcmVhZGluZyByZWxheSBsb2cgZXZlbnQlczogJXMAJ0NIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8lcyBleGVjdXRlZCcuIFByZXZpb3VzIHN0YXRlIHNvdXJjZV9ob3N0PSclcycsIHNvdXJjZV9wb3J0PSAldSwgc291cmNlX2xvZ19maWxlPSclcycsIHNvdXJjZV9sb2dfcG9zPSAlbGQsIHNvdXJjZV9iaW5kPSclcycuIE5ldyBzdGF0ZSBzb3VyY2VfaG9zdD0nJXMnLCBzb3VyY2VfcG9ydD0gJXUsIHNvdXJjZV9sb2dfZmlsZT0nJXMnLCBzb3VyY2VfbG9nX3Bvcz0gJWxkLCBzb3VyY2VfYmluZD0nJXMnLgBSZXBsaWNhOiBDYW5ub3QgY3JlYXRlIG5ldyBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSB3aGVuIHJlcG9zaXRvcmllcyBhcmUgb2YgdHlwZSBGSUxFLiBDb252ZXJ0IHJlcGxpY2EgcmVwb3NpdG9yaWVzIHRvIFRBQkxFIHRvIHJlcGxpY2F0ZSBmcm9tIG11bHRpcGxlIHNvdXJjZXMuAGxvZyAlcyBsaXN0ZWQgaW4gdGhlIGluZGV4LCBidXQgZmFpbGVkIHRvIHN0YXQuAENvdWxkIG5vdCBmaW5kIGZpcnN0IGxvZyB3aGlsZSBjb3VudGluZyByZWxheSBsb2cgc3BhY2UuAFVuYWJsZSB0byB1c2UgcmVwbGljYSdzIHRlbXBvcmFyeSBkaXJlY3RvcnkgJyVzJy4AUGF0aCAnJXMnIGlzIGEgZGlyZWN0b3J5IG5hbWUsIHBsZWFzZSBzcGVjaWZ5IGEgZmlsZSBuYW1lIGZvciAtLXJlbGF5LWxvZyBvcHRpb24uAFBhdGggJyVzJyBpcyBhIGRpcmVjdG9yeSBuYW1lLCBwbGVhc2Ugc3BlY2lmeSBhIGZpbGUgbmFtZSBmb3IgLS1yZWxheS1sb2ctaW5kZXggb3B0aW9uLgBOZWl0aGVyIC0tcmVsYXktbG9nIG5vciAtLXJlbGF5LWxvZy1pbmRleCB3ZXJlIHVzZWQ7IHNvIHJlcGxpY2F0aW9uIG1heSBicmVhayB3aGVuIHRoaXMgTXlTUUwgc2VydmVyIGFjdHMgYXMgYSByZXBsaWNhIGFuZCBoYXMgaGlzIGhvc3RuYW1lIGNoYW5nZWQhISBQbGVhc2UgdXNlICctLXJlbGF5LWxvZz0lcycgdG8gYXZvaWQgdGhpcyBwcm9ibGVtLgBGYWlsZWQgaW4gb3Blbl9pbmRleF9maWxlKCkgY2FsbGVkIGZyb20gUmVsYXlfbG9nX2luZm86OnJsaV9pbml0X2luZm8oKS4ARmFpbGVkIGluIGluaXRfZ3RpZF9zZXRzKCkgY2FsbGVkIGZyb20gUmVsYXlfbG9nX2luZm86OnJsaV9pbml0X2luZm8oKS4ARmFpbGVkIGluIG9wZW5fbG9nKCkgY2FsbGVkIGZyb20gUmVsYXlfbG9nX2luZm86OnJsaV9pbml0X2luZm8oKS4ARXJyb3Igd3JpdGluZyByZWxheSBsb2cgY29uZmlndXJhdGlvbi4AZ2V0X25kYl9ibG9ic192YWx1ZTogbXlfbWFsbG9jKCV1KSBmYWlsZWQATkRCOiBUaHJlYWQgaWQgJXUgdGltZWQgb3V0ICgzMHMpIHdhaXRpbmcgZm9yIGVwb2NoICV1LyV1IHRvIGJlIGhhbmRsZWQuICBQcm9ncmVzcyA6ICV1LyV1IC0+ICV1LyV1LgBOREI6IEluY29uc2lzdGVuY3kgZGV0ZWN0ZWQgaW4gZGlzdHJpYnV0ZWQgcHJpdmlsZWdlIHRhYmxlcy4gVGFibGUgJyVzLiVzJyBpcyBub3QgZGlzdHJpYnV0ZWQATkRCOiBDcmVhdGluZyAlcy4lcwBOREI6IEZsdXNoaW5nICVzLiVzAE5EQjogQ2xlYW5pbmcgc3RyYXkgdGFibGVzIGZyb20gZGF0YWJhc2UgJyVzJwBOREI6IERpc2NvdmVyZWQgbWlzc2luZyBkYXRhYmFzZSAnJXMnAE5EQjogRGlzY292ZXJlZCByZW1haW5pbmcgZGF0YWJhc2UgJyVzJwBOREI6IG5kYmNsdXN0ZXJfZmluZF9hbGxfZGF0YWJhc2VzIHJldHJ5OiAldSAtICVzAE5EQjogbmRiY2x1c3Rlcl9maW5kX2FsbF9kYXRhYmFzZXMgZmFpbDogJXUgLSAlcwBOREI6IHNraXBwaW5nIHNldHVwIHRhYmxlICVzLiVzLCBpbiBzdGF0ZSAlZABOREI6IGZhaWxlZCB0byBzZXR1cCB0YWJsZSAlcy4lcywgZXJyb3I6ICVkLCAlcwBOREI6IG1pc3NpbmcgZnJtIGZvciAlcy4lcywgZGlzY292ZXJpbmcuLi4ATkRCOiBtaXNtYXRjaCBpbiBmcm0gZm9yICVzLiVzLCBkaXNjb3ZlcmluZy4uLgBuZGJfYmlubG9nX3NldHVwOiBDbGVhbiB1cCBsZWZ0b3ZlcnMATkRCICVzOiB3YWl0aW5nIG1heCAldSBzZWMgZm9yICVzICVzLiAgZXBvY2hzOiAoJXUvJXUsJXUvJXUsJXUvJXUpICBpbmplY3RvciBwcm9jX2luZm86ICVzAE5EQiAlczogd2FpdGluZyBtYXggJXUgc2VjIGZvciAlcyAlcy4gIGVwb2NoczogKCV1LyV1LCV1LyV1LCV1LyV1KSAgaW5qZWN0b3IgcHJvY19pbmZvOiAlcyBtYXA6ICV4JTA4eABOREIgJXM6IGRpc3RyaWJ1dGluZyAlcyB0aW1lZCBvdXQuIElnbm9yaW5nLi4uAE5EQiAlczogbm90IHdhaXRpbmcgZm9yIGRpc3RyaWJ1dGluZyAlcwBOREI6IGRpc3RyaWJ1dGVkICVzLiVzKCV1LyV1KSB0eXBlOiAlcygldSkgcXVlcnk6ICclcycgdG8gJXglMDh4AE5EQjogZGlzdHJpYnV0aW9uIG9mICVzLiVzKCV1LyV1KSB0eXBlOiAlcygldSkgcXVlcnk6ICclcycgLSBjb21wbGV0ZSEATkRCIFNjaGVtYSBkaXN0OiBEYXRhIG5vZGU6ICVkIGZhaWxlZCwgc3Vic2NyaWJlciBiaXRtYXNrICV4JTA4eABOREIgU2NoZW1hIGRpc3Q6IERhdGEgbm9kZTogJWQgcmVwb3J0cyBzdWJzY3JpYmUgZnJvbSBub2RlICVkLCBzdWJzY3JpYmVyIGJpdG1hc2sgJXglMDh4AE5EQiBTY2hlbWEgZGlzdDogRGF0YSBub2RlOiAlZCByZXBvcnRzIHVuc3Vic2NyaWJlIGZyb20gbm9kZSAlZCwgc3Vic2NyaWJlciBiaXRtYXNrICV4JTA4eABOREIgQmlubG9nOiBDb3VsZCBub3QgZGlzY292ZXIgdGFibGUgJyVzLiVzJyBmcm9tIGJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuIG15X2Vycm5vOiAlZABOREI6IHVua25vd24gdmFsdWUgZm9yIGJpbmxvZyBzaWduYWxsaW5nIDB4JVgsICVzIG5vdCBsb2dnZWQATkRCOiByZXBseSB0byAlcy4lcygldS8ldSkgZnJvbSAlcyB0byAleCUwOHgATkRCOiBDb3VsZCBub3QgcmVsZWFzZSBzbG9jayBvbiAnJXMuJXMnLCBFcnJvciBjb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgc2NoZW1hOiBDb3VsZCBub3QgZmluZCB0YWJsZSAnJXMuJXMnIGluIE5EQgBOREI6IERpc2NhcmRpbmcgZXZlbnQuLi5ubyBvYmo6ICVzICgldS8ldSkATkRCOiBEaXNjYXJkaW5nIGV2ZW50Li4ua2V5OiAlcyBub24gbWF0Y2hpbmcgaWQvdmVyc2lvbiBbJXUvJXVdICE9IFsldS8ldV0ATkRCOiBDTEVBUl9TTE9DSyBrZXk6ICVzKCV1LyV1KSAleCUwOHgsIGZyb20gJXMgdG8gJXglMDh4AE5EQiBCaW5sb2c6IFNraXBwaW5nIGxvY2FsbHkgZGVmaW5lZCB0YWJsZSAnJXMuJXMnIGZyb20gYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4ATkRCIEJpbmxvZzogaGFuZGxpbmcgb25saW5lIGFsdGVyL3JlbmFtZQBOREIgQmlubG9nOiBGYWlsZWQgdG8gcmUtb3BlbiBzaGFkb3cgdGFibGUgJXMuJXMATkRCIEJpbmxvZzogaGFuZGxpbmcgb25saW5lIGFsdGVyL3JlbmFtZSBkb25lAE5EQiBCaW5sb2c6IFNraXBwaW5nIGRyb3Agb2YgbG9jYWxseSBkZWZpbmVkIHRhYmxlICclcy4lcycgZnJvbSBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiAATkRCIEJpbmxvZzogU2tpcHBpbmcgcmVuYW1pbmcgbG9jYWxseSBkZWZpbmVkIHRhYmxlICclcy4lcycgZnJvbSBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiAATkRCIEJpbmxvZzogU2tpcHBpbmcgZHJvcCBkYXRhYmFzZSAnJXMnIHNpbmNlIGl0IGNvbnRhaW5lZCBsb2NhbCB0YWJsZXMgYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4gAEdvdCBkaXN0X3ByaXYgZXZlbnQ6ICVzLCBmbHVzaGluZyBwcml2aWxlZ2VzAE5EQjogZ290IHNjaGVtYSBldmVudCBvbiAlcy4lcygldS8ldSkgcXVlcnk6ICclcycgdHlwZTogJXMoJWQpIG5vZGU6ICV1IHNsb2NrOiAleCUwOHgATkRCIHNjaGVtYTogU2tpcHBpbmcgb2xkIHNjaGVtYSBvcGVyYXRpb24oUkVOQU1FX1RBQkxFX05FVykgb24gJXMuJXMATkRCIFNjaGVtYSBkaXN0OiBjbHVzdGVyIGZhaWx1cmUgYXQgZXBvY2ggJXUvJXUuAE5EQiBCaW5sb2c6IG5kYiB0YWJsZXMgaW5pdGlhbGx5IHJlYWQgb25seSBvbiByZWNvbm5lY3QuAE5EQiBTY2hlbWEgZGlzdDogdW5rbm93biBldmVudCAldSwgaWdub3JpbmcuLi4ATkRCIEJpbmxvZzogT3BlbmluZyBuZGJfYmlubG9nX2luZGV4OiAlZCwgJyVzJwBOREIgQmlubG9nOiBVbmFibGUgdG8gbG9jayB0YWJsZSBuZGJfYmlubG9nX2luZGV4AE5EQiBCaW5sb2c6IEluamVjdGluZyByYW5kb20gd3JpdGUgZmFpbHVyZQBOREIgQmlubG9nOiBGYWlsZWQgd3JpdGluZyB0byBuZGJfYmlubG9nX2luZGV4IGZvciBlcG9jaCAldS8ldSAgb3JpZ19zZXJ2ZXJfaWQgJXUgb3JpZ19lcG9jaCAldS8ldSB3aXRoIGVycm9yICVkLgBOREIgQmlubG9nOiBXcml0aW5nIHJvdyAoJXMpIHRvIG5kYl9iaW5sb2dfaW5kZXggLSAlcwBOREIgQmlubG9nOiBGYWlsZWQgY29tbWl0dGluZyB0cmFuc2FjdGlvbiB0byBuZGJfYmlubG9nX2luZGV4IHdpdGggZXJyb3IgJWQuAE5EQiBCaW5sb2c6IEZhaWxlZCB3cml0aW5nIHRvIG5kYl9iaW5sb2dfaW5kZXggdGFibGUgd2hpbGUgcmV0cnlpbmcgYWZ0ZXIga2lsbCBkdXJpbmcgc2h1dGRvd24ATkRCOiBzZXJ2ZXIgaWQgc2V0IHRvIHplcm8gLSBjaGFuZ2VzIGxvZ2dlZCB0byBiaW4gbG9nIHdpdGggc2VydmVyIGlkIHplcm8gd2lsbCBiZSBsb2dnZWQgd2l0aCBhbm90aGVyIHNlcnZlciBpZCBieSByZXBsaWNhIG15c3FsZHMATkRCOiBzZXJ2ZXIgaWQgcHJvdmlkZWQgaXMgdG9vIGxhcmdlIHRvIGJlIHJlcHJlc2VudGVkIGluIG9wdF9zZXJ2ZXJfaWRfYml0cyBvciBpcyByZXNlcnZlZABOREI6IC0tbmRiLWxvZy10cmFuc2FjdGlvbi1pZCByZXF1aXJlcyB2MiBCaW5sb2cgcm93IGV2ZW50cyBidXQgc2VydmVyIGlzIHVzaW5nIHYxLgBOREI6IG5kYi1sb2ctYXBwbHktc3RhdHVzIGZvcmNpbmcgJXMuJXMgdG8gRlVMTCBVU0VfV1JJVEUATkRCIEJpbmxvZzogJXMAJXMAJXMATkRCIFJlcGxpY2E6IFRhYmxlICVzLiVzIDogUGFyc2UgZXJyb3Igb24gY29uZmxpY3QgZm4gOiAlcwBOREIgUmVwbGljYTogVGFibGUgJXMuJXMgOiAlcwBOREIgQmlubG9nOiBGYWlsZWQgdG8gZ2V0IHRhYmxlICVzIGZyb20gbmRiOiAlcywgJWQATkRCIEJpbmxvZzogTk9UIGxvZ2dpbmcgJXMATkRCIEJpbmxvZzogRkFJTEVEIENSRUFURSAoRElTQ09WRVIpIFRBQkxFIEV2ZW50OiAlcwBOREIgQmlubG9nOiBDUkVBVEUgKERJU0NPVkVSKSBUQUJMRSBFdmVudDogJXMATkRCIEJpbmxvZzogRElTQ09WRVIgVEFCTEUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IGxvZ2dpbmcgb2YgdGFibGUgJXMgd2l0aCBCTE9CIGF0dHJpYnV0ZSBhbmQgbm8gUEsgaXMgbm90IHN1cHBvcnRlZABOREIgQmlubG9nOiBVbmFibGUgdG8gY3JlYXRlIGV2ZW50IGluIGRhdGFiYXNlLiBFdmVudDogJXMgIEVycm9yIENvZGU6ICVkICBNZXNzYWdlOiAlcwBOREIgQmlubG9nOiBVbmFibGUgdG8gY3JlYXRlIGV2ZW50IGluIGRhdGFiYXNlLiAgQXR0ZW1wdCB0byBjb3JyZWN0IHdpdGggZHJvcCBmYWlsZWQuIEV2ZW50OiAlcyBFcnJvciBDb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgQmlubG9nOiBVbmFibGUgdG8gY3JlYXRlIGV2ZW50IGluIGRhdGFiYXNlLiAgQXR0ZW1wdCB0byBjb3JyZWN0IHdpdGggZHJvcCBvaywgYnV0IGNyZWF0ZSBmYWlsZWQuIEV2ZW50OiAlcyBFcnJvciBDb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgQmlubG9nOiBkaXNjb3ZlciByZXVzaW5nIG9sZCBldiBvcABOREIgQmlubG9nOiBDcmVhdGluZyBOZGJFdmVudE9wZXJhdGlvbiBmYWlsZWQgZm9yICVzAE5EQiBCaW5sb2c6IENyZWF0aW5nIE5kYkV2ZW50T3BlcmF0aW9uIGJsb2IgZmllbGQgJXUgaGFuZGxlcyBmYWlsZWQgKGNvZGU9JWQpIGZvciAlcwBOREIgQmlubG9nOiBuZGJldmVudC0+ZXhlY3V0ZSBmYWlsZWQgZm9yICVzOyAlZCAlcwBOREIgQmlubG9nOiBsb2dnaW5nICVzICglcywlcykATkRCIEJpbmxvZzogVW5hYmxlIHRvIGRyb3AgZXZlbnQgaW4gZGF0YWJhc2UuIEV2ZW50OiAlcyBFcnJvciBDb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgJXM6ICVzIHRpbWVkIG91dC4gSWdub3JpbmcuLi4ATkRCIEJpbmxvZzogdW5oYW5kbGVkIGVycm9yICVkIGZvciB0YWJsZSAlcwBOREIgQmlubG9nOiBjbHVzdGVyIGZhaWx1cmUgZm9yICVzIGF0IGVwb2NoICV1LyV1LgBOREIgQmlubG9nOiB1bmtub3duIG5vbiBkYXRhIGV2ZW50ICVkIGZvciAlcy4gSWdub3JpbmcuLi4ATkRCOiBCaW5sb2cgSW5qZWN0b3IgZGlzY2FyZGluZyByb3cgZXZlbnQgbWV0YSBkYXRhIGFzIHNlcnZlciBpcyB1c2luZyB2MSByb3cgZXZlbnRzLiAoJXUgJXgpAHJlbW92ZV9hbGxfZXZlbnRfb3BlcmF0aW9uczogUmVtYWluaW5nIG9wZW4gdGFibGVzOiAAICAlcy4lcywgdXNlX2NvdW50OiAldQBOREI6IENvdWxkIG5vdCBnZXQgYXBwbHkgc3RhdHVzIHNoYXJlAE5EQiBCaW5sb2c6IFNlcnZlciBzaHV0ZG93biBkZXRlY3RlZCB3aGlsZSB3YWl0aW5nIGZvciBuZGJjbHVzdGVyIHRvIHN0YXJ0Li4uAE5EQiBCaW5sb2c6IGNsdXN0ZXIgaGFzIGJlZW4gcmVzdGFydGVkIC0taW5pdGlhbCBvciB3aXRoIG9sZGVyIGZpbGVzeXN0ZW0uIG5kYl9sYXRlc3RfaGFuZGxlZF9iaW5sb2dfZXBvY2g6ICV1LyV1LCB3aGlsZSBjdXJyZW50IGVwb2NoOiAldS8ldS4gUkVTRVQgU09VUkNFIHNob3VsZCBiZSBpc3N1ZWQuIFJlc2V0dGluZyBuZGJfbGF0ZXN0X2hhbmRsZWRfYmlubG9nX2Vwb2NoLgBOREIgQmlubG9nOiBjbHVzdGVyIGhhcyByZWNvbm5lY3RlZC4gQ2hhbmdlcyB0byB0aGUgZGF0YWJhc2UgdGhhdCBvY2N1cnJlZCB3aGlsZSBkaXNjb25uZWN0ZWQgd2lsbCBub3QgYmUgaW4gdGhlIGJpbmxvZwBOREIgQmlubG9nOiBzdGFydGluZyBsb2cgYXQgZXBvY2ggJXUvJXUATkRCIEJpbmxvZzogbmRiIHRhYmxlcyB3cml0YWJsZQBOREIgQmlubG9nOiBTZXJ2ZXIgc2h1dGRvd24gZGV0ZWN0ZWQuLi4ATkRCIEJpbmxvZzogSnVzdCBsb3N0IHNjaGVtYSBjb25uZWN0aW9uLCBoYW5naW5nIGFyb3VuZABOREIgQmlubG9nOiAuLi5hbmQgb24gb3VyIHdheQBOREI6IGVycm9yICVsdSAoJXMpIG9uIGhhbmRsaW5nIGJpbmxvZyBzY2hlbWEgZXZlbnQATkRCIEJpbmxvZzogRmFpbGVkIHRvIGluamVjdCBhcHBseSBzdGF0dXMgd3JpdGUgcm93AE5EQiBCaW5sb2c6IEVycm9yIGR1cmluZyBST0xMQkFDSyBvZiBHQ0kgJXUvJXUuIEVycm9yOiAlZABOREIgQmlubG9nOiBFcnJvciBkdXJpbmcgQ09NTUlUIG9mIEdDSS4gRXJyb3I6ICVkAE5EQiBCaW5sb2c6IGxhdGVzdCB0cmFuc2FjdGlvbiBpbiBlcG9jaCAldS8ldSBub3QgaW4gYmlubG9nIGFzIGxhdGVzdCBoYW5kbGVkIGVwb2NoIGlzICV1LyV1AE5EQiBCaW5sb2c6IFJlbGVhc2UgZXh0cmEgc2hhcmUgcmVmZXJlbmNlcwBOREIgQmlubG9nOiByZW1haW5pbmcgb3BlbiB0YWJsZXM6IAAgICVzLiVzIHN0YXRlOiAldSB1c2VfY291bnQ6ICV1AFdyb25nIHRyZWU6IFBhcmVudCBkb2Vzbid0IHBvaW50IGF0IHBhcmVudABXcm9uZyB0cmVlOiBSb290IHNob3VsZCBiZSBibGFjawBXcm9uZyB0cmVlOiBGb3VuZCB0d28gcmVkIGluIGEgcm93AFdyb25nIHRyZWU6IEZvdW5kIHJpZ2h0ID09IGxlZnQAV3JvbmcgdHJlZTogSW5jb3JyZWN0IGJsYWNrLWNvdW50OiAlZCAtICVkAFVzZV9jb3VudDogV3JvbmcgY291bnQgJWx1IGZvciBvcmlnaW4gJXAAVXNlX2NvdW50OiBXcm9uZyBjb3VudCBmb3Iga2V5IGF0ICVwLCAlbHUgc2hvdWxkIGJlICVsdQBXcm9uZyBudW1iZXIgb2YgZWxlbWVudHM6ICV1IChzaG91bGQgYmUgJXUpIGZvciB0cmVlIGF0ICVwAEVycm9yIHJlYWRpbmcgcmVwbGljYSB3b3JrZXIgY29uZmlndXJhdGlvbgBFcnJvciB3cml0aW5nIHJlcGxpY2Egd29ya2VyIGNvbmZpZ3VyYXRpb24ARmFpbGVkIHRvIG9wZW4gcmVsYXkgbG9nICVzLCBlcnJvcjogJXMARXJyb3Igd2hlbiB3b3JrZXIgcmVhZCByZWxheSBsb2cgZXZlbnRzLHJlbGF5IGxvZyBuYW1lICVzLCBwb3NpdGlvbiAlbGx1AEZhaWxlZCB0byBmaW5kIG5leHQgcmVsYXkgbG9nIHdoZW4gcmV0cnlpbmcgdGhlIHRyYW5zYWN0aW9uLCBjdXJyZW50IHJlbGF5IGxvZyBpcyAlcwBNdWx0aS10aHJlYWRlZCByZXBsaWNhOiBDb29yZGluYXRvciBoYXMgd2FpdGVkICVsdSB0aW1lcyBoaXR0aW5nIHJlcGxpY2FfcGVuZGluZ19qb2JzX3NpemVfbWF4OyBjdXJyZW50IGV2ZW50IHNpemUgPSAlenUuAEZhaWxlZCB0byB3cml0ZSB0aGUgRFJPUCBzdGF0ZW1lbnQgZm9yIHRlbXBvcmFyeSB0YWJsZXMgdG8gYmluYXJ5IGxvZwBXaGVuIG9wZW5pbmcgSEVBUCB0YWJsZSwgY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSB0byB3cml0ZSAnREVMRVRFIEZST00gYCVzYC5gJXNgJyB0byB0aGUgYmluYXJ5IGxvZwBDb3VsZG4ndCByZXBhaXIgdGFibGU6ICVzLiVzAENvdWxkIG5vdCByZW1vdmUgdGVtcG9yYXJ5IHRhYmxlOiAnJXMnLCBlcnJvcjogJWQAU3lzdGVtIHRhYmxlICclLipzJyBpcyBleHBlY3RlZCB0byBiZSB0cmFuc2FjdGlvbmFsLgBFcnJvciB3cml0aW5nIHNvdXJjZSBjb25maWd1cmF0aW9uLgBFcnJvciByZWFkaW5nIHNvdXJjZSBjb25maWd1cmF0aW9uLgBTU0wgaW5mb3JtYXRpb24gaW4gdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBhcmUgaWdub3JlZCBiZWNhdXNlIHRoaXMgTXlTUUwgcmVwbGljYSB3YXMgY29tcGlsZWQgd2l0aG91dCBTU0wgc3VwcG9ydC4AUGx1Z2luICclcycgb2YgdHlwZSAlcyBmYWlsZWQgZGVpbml0aWFsaXphdGlvbgBQbHVnaW4gJyVzJyBoYXMgcmVmX2NvdW50PSVkIGFmdGVyIGRlaW5pdGlhbGl6YXRpb24uAFNodXR0aW5nIGRvd24gcGx1Z2luICclcycAUGx1Z2luICclcycgcmVnaXN0cmF0aW9uIGFzIGEgJXMgZmFpbGVkLgBDb3VsZCBub3Qgb3BlbiB0aGUgbXlzcWwucGx1Z2luIHRhYmxlLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAENvdWxkbid0IGxvYWQgcGx1Z2luIG5hbWVkICclcycgd2l0aCBzb25hbWUgJyVzJy4AcGx1Z2luLWxvYWQgcGFyYW1ldGVyIHRvbyBsb25nAFBsdWdpbiAnJXMnIHdpbGwgYmUgZm9yY2VkIHRvIHNodXRkb3duAFBsdWdpbiAnJXMnIGhhcyByZWZfY291bnQ9JWQgYWZ0ZXIgc2h1dGRvd24uAFVua25vd24gdmFyaWFibGUgdHlwZSBjb2RlIDB4JXggaW4gcGx1Z2luICclcycuAFNlcnZlciB2YXJpYWJsZSAlcyBvZiBwbHVnaW4gJXMgd2FzIGZvcmNlZCB0byBiZSByZWFkLW9ubHk6IHN0cmluZyB2YXJpYWJsZSB3aXRob3V0IHVwZGF0ZV9mdW5jIGFuZCBQTFVHSU5fVkFSX01FTUFMTE9DIGZsYWcATWlzc2luZyB2YXJpYWJsZSBuYW1lIGluIHBsdWdpbiAnJXMnLgBUaHJlYWQgbG9jYWwgdmFyaWFibGUgJyVzJyBub3QgYWxsb2NhdGVkIGluIHBsdWdpbiAnJXMnLgBPdXQgb2YgbWVtb3J5IGZvciBwbHVnaW4gJyVzJy4AQmFkIG9wdGlvbnMgZm9yIHBsdWdpbiAnJXMnLgBQYXJzaW5nIG9wdGlvbnMgZm9yIHBsdWdpbiAnJXMnIGZhaWxlZC4AUGx1Z2luICclcycgaXMgZGlzYWJsZWQuAFBsdWdpbiAnJXMnIGhhcyBjb25mbGljdGluZyBzeXN0ZW0gdmFyaWFibGVzAFNldHRpbmcgcGVyc2lzdGVudCBvcHRpb25zIGZvciBwbHVnaW4gJyVzJyBmYWlsZWQuAEZhaWxlZCBvbiBteV9uZXRfd3JpdGUsIHdyaXRpbmcgdG8gc3RkZXJyIGluc3RlYWQ6ICVzAFJldHJ5aW5nIHJlcGFpciBvZjogJyVzJyB3aXRob3V0IHF1aWNrAFJldHJ5aW5nIHJlcGFpciBvZjogJyVzJyB3aXRoIGtleWNhY2hlAEZvdW5kICVzIG9mICVzIHJvd3Mgd2hlbiByZXBhaXJpbmcgJyVzJwBXYXJuaW5nOiBPcHRpbWl6ZSB0YWJsZSBnb3QgZXJybm8gJWQgb24gJXMuJXMsIHJldHJ5aW5nAFdhcm5pbmc6IEVuYWJsaW5nIGtleXMgZ290IGVycm5vICVkIG9uICVzLiVzLCByZXRyeWluZwBDaGVja2luZyB0YWJsZTogICAnJXMnAFJlY292ZXJpbmcgdGFibGU6ICclcycARXJyb3IgaW4gY3JlYXRpbmcgVEFCTEVfU0hBUkUgZnJvbSAlcy5mcm0gZmlsZS4AVW5hYmxlIHRvIGFjcXVpcmUgbG9jayBvbiAlcy4lcwBFcnJvciBpbiBhbGxvY2F0aW9uIG1lbW9yeSBmb3IgVEFCTEUgb2JqZWN0LgBFcnJvciBpbiBjcmVhdGluZyBoYW5kbGVyIG9iamVjdCBmb3IgdGFibGUgJXMuJXMARXJyb3IgaW4gc2V0dGluZyBoYW5kbGVyIHJlZmVyZW5jZSBmb3IgdGFibGUgJXMuJXMAVW5hYmxlIHRvIGFjcXVpcmUgbG9jayBvbiB0YWJsZXNwYWNlIG5hbWUgJXMARXJyb3IgaW4gcHJvY2Vzc2luZyBnZW5lcmF0ZWQgY29sdW1ucyBmb3IgdGFibGUgJXMuJXMARXJyb3IgaW4gQ3JlYXRpbmcgREQgZW50cnkgZm9yICVzLiVzAEVycm9yIGluIGZldGNoaW5nICVzLiVzIHRhYmxlIGRhdGEgZnJvbSBkaWN0aW9uYXJ5AEVycm9yIGluIGZpeGluZyBTRSBkYXRhIGZvciAlcy4lcwBFcnJvciBpbiBjcmVhdGluZyBzdG9yZWQgcHJvZ3JhbSAnJXMuJXMnAFVuYWJsZSB0byBvcGVuIGRiLm9wdCBmaWxlICVzLiBVc2luZyBkZWZhdWx0IENoYXJhY3RlciBzZXQuAFVuYWJsZSB0byBpbnRpYWxpemUgSU8gY2FjaGUgdG8gb3BlbiBkYi5vcHQgZmlsZSAlcy4gAFVuYWJsZSB0byBpZGVudGlmeSB0aGUgY2hhcnNldCBpbiAlcy4gVXNpbmcgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0LgBkYi5vcHQgZmlsZSBub3QgZm91bmQgZm9yICVzIGRhdGFiYXNlLiBVc2luZyBkZWZhdWx0IENoYXJhY3RlciBzZXQuAEV2ZW50ICclcycuJyVzJzogaW52YWxpZCB2YWx1ZSBpbiBjb2x1bW4gbXlzcWwuZXZlbnQudGltZV96b25lLgBFdmVudCAnJXMnLiclcyc6IGhhcyBpbnZhbGlkIHRpbWUgem9uZSB2YWx1ZSAARXZlbnQgJyVzJy4nJXMnOiBpbnZhbGlkIHZhbHVlIGluIGNvbHVtbiBteXNxbC5ldmVudC5jaGFyYWN0ZXJfc2V0X2NsaWVudC4ARXZlbnQgJyVzJy4nJXMnOiBpbnZhbGlkIHZhbHVlIGluIGNvbHVtbiBteXNxbC5ldmVudC5jb2xsYXRpb25fY29ubmVjdGlvbi4ARmFpbGVkIHRvIG9wZW4gbXlzcWwuZXZlbnQgVGFibGUuAFBhcnNpbmcgJyVzLiVzJyByb3V0aW5lIGJvZHkgZmFpbGVkLiVzAEZhaWxlZCB0byBvcGVuIG15c3FsLnByb2MgVGFibGUuAEZhaWxlZCB0byByZWFkIG15c3FsLnByb2MgdGFibGUuAEZvdW5kICVzIGZpbGUgaW4gbXlzcWwgc2NoZW1hLiBERCB3aWxsIGNyZWF0ZSAuaWJkIGZpbGUgd2l0aCBzYW1lIG5hbWUuIFBsZWFzZSByZW5hbWUgdGFibGUgYW5kIHN0YXJ0IHVwZ3JhZGUgcHJvY2VzcyBhZ2Fpbi4AVW5hYmxlIHRvIG9wZW4gdGhlIGRhdGEgZGlyZWN0b3J5ICVzIGR1cmluZyBjbGVhbiB1cCBhZnRlciB1cGdyYWRlIGZhaWxlZABGYWlsZWQgdG8gc2V0IHBhdGggJXMARmFpbGVkIHRvIG9wZW4gZGlyICVzAE5EQjogRm91bmQgZW1wdHkgbm9kZWlkIHNwZWNpZmllZCBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogQ291bGQgbm90IHBhcnNlICclcycgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IEludmFsaWQgbm9kZWlkICVkIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBGb3VuZCBkdXBsaWNhdGUgbm9kZWlkICVkIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBUaGUgc2l6ZSBvZiB0aGUgY2x1c3RlciBjb25uZWN0aW9uIHBvb2wgbXVzdCBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIG5vZGVpZHMgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IFRoZSBub2RlaWQgc3BlY2lmaWVkIGJ5IC0tbmRiLW5vZGVpZCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBmaXJzdCBub2RlaWQgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IHVzaW5nIG5vZGVpZCAldQBOREI6IGZhaWxlZCB0byBhbGxvY2F0ZSBnbG9iYWwgbmRiIGNsdXN0ZXIgY29ubmVjdGlvbgBOREI6IGZhaWxlZCB0byBhbGxvY2F0ZSBnbG9iYWwgbmRiIG9iamVjdABOREJbJXVdOiB1c2luZyBub2RlaWQgJXUATkRCWyV1XTogZmFpbGVkIHRvIGFsbG9jYXRlIGNsdXN0ZXIgY29ubmVjdCBvYmplY3QATkRCWyV1XTogc3RhcnRpbmcgY29ubmVjdCB0aHJlYWQATkRCWyV1XTogTm9kZUlEOiAlZCwgJXMATkRCWyV1XTogZmFpbGVkIHRvIHN0YXJ0IGNvbm5lY3QgdGhyZWFkAE5EQjogZXJyb3IgKCV1KSAlcwBJZ25vcmVkIHJlY2VpdmUgdGhyZWFkIENQVSBtYXNrLCBtYXNrIHRvbyBzaG9ydCwgJXUgQ1BVcyBuZWVkZWQgaW4gbWFzaywgb25seSAldSBDUFVzIHByb3ZpZGVkAEV2ZW50IEVycm9yOiBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBjcmVhdGluZyBxdWVyeSBzdHJpbmcsIGJlZm9yZSB3cml0aW5nIGl0IGludG8gYmluYXJ5IGxvZy4ARXZlbnQgU2NoZWR1bGVyOiBFcnJvciB3aGlsZSBsb2FkaW5nIGZyb20gZGlzay4ARXZlbnQgU2NoZWR1bGVyOiBFcnJvciBnZXR0aW5nIGV2ZW50IG9iamVjdC4ARXZlbnQgU2NoZWR1bGVyOiBFcnJvciB3aGlsZSBsb2FkaW5nIGV2ZW50cyBmcm9tIG15c3FsLmV2ZW50cy5UaGUgdGFibGUgcHJvYmFibHkgY29udGFpbnMgYmFkIGRhdGEgb3IgaXMgY29ycnVwdGVkAFVuYWJsZSB0byBvYnRhaW4gbG9jayBmb3IgZHJvcHBpbmcgZXZlbnQgJXMgZnJvbSBzY2hlbWEgJXMAVW5hYmxlIHRvIGRyb3AgZXZlbnQgJXMgZnJvbSBzY2hlbWEgJXMAU2VydmVyIG92ZXJjb21lcyB0aGUgdGVtcG9yYXJ5ICdvdXQgb2YgbWVtb3J5JyBpbiAnJWQnIHRyaWVzIHdoaWxlIGF0dGFjaGluZyB0byBzZXNzaW9uIHRocmVhZCBkdXJpbmcgdGhlIGdyb3VwIGNvbW1pdCBwaGFzZS4AVW5hYmxlIHRvIHJlc2l6ZSBiaW5sb2cgSU9DQUNIRSBhdXhpbGlhcnkgZmlsZQBmaWxlICVzIHdhcyBub3QgcHVyZ2VkIGJlY2F1c2UgaXQgd2FzIGJlaW5nIHJlYWQgYnkgdGhyZWFkIG51bWJlciAldQBJL08gZXJyb3IgcmVhZGluZyB0aGUgaGVhZGVyIGZyb20gdGhlIGJpbmFyeSBsb2csIGVycm5vPSVkLCBpbyBjYWNoZSBjb2RlPSVkAEZhaWxlZCB0byBvcGVuIGxvZyAoZmlsZSAnJXMnLCBlcnJubyAlZCkARmFpbGVkIHRvIGNyZWF0ZSBhIGNhY2hlIG9uIGxvZyAoZmlsZSAnJXMnKQBMb2cgZmlsZW5hbWUgZXh0ZW5zaW9uIG51bWJlciBleGhhdXN0ZWQ6ICUwNmx1LiBQbGVhc2UgZml4IHRoaXMgYnkgYXJjaGl2aW5nIG9sZCBsb2dzIGFuZCB1cGRhdGluZyB0aGUgaW5kZXggZmlsZXMuAExvZyBmaWxlbmFtZSB0b28gbGFyZ2U6ICVzJXMgKCV6dSkuIFBsZWFzZSBmaXggdGhpcyBieSBhcmNoaXZpbmcgb2xkIGxvZ3MgYW5kIHVwZGF0aW5nIHRoZSBpbmRleCBmaWxlcy4ATmV4dCBsb2cgZXh0ZW5zaW9uOiAlbHUuIFJlbWFpbmluZyBsb2cgZmlsZW5hbWUgZXh0ZW5zaW9uczogJWx1LiBQbGVhc2UgY29uc2lkZXIgYXJjaGl2aW5nIHNvbWUgbG9ncy4AQ291bGQgbm90IG9wZW4gJXMgZm9yIGxvZ2dpbmcgKGVycm9yICVkKS4gVHVybmluZyBsb2dnaW5nIG9mZiBmb3IgdGhlIHdob2xlIGR1cmF0aW9uIG9mIHRoZSBNeVNRTCBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgc2h1dGRvd24gdGhlIE15U1FMIHNlcnZlciBhbmQgcmVzdGFydCBpdC4ATVlTUUxfQklOX0xPRzo6b3Blbl9pbmRleF9maWxlIGZhaWxlZCB0byBzeW5jIHRoZSBpbmRleCBmaWxlLgBFcnJvciByZWFkaW5nIEdUSURzIGZyb20gcmVsYXlsb2c6ICVkACVsdSBldmVudHMgcmVhZCBpbiByZWxheWxvZyBmaWxlICclcycgZm9yIHVwZGF0aW5nIFJldHJpZXZlZF9HdGlkX1NldCBhbmQvb3IgSU8gdGhyZWFkIHRyYW5zYWN0aW9uIHBhcnNlciBzdGF0ZS4ARXJyb3IgcmVhZGluZyBHVElEcyBmcm9tIGJpbmFyeSBsb2c6ICVkAFJlYWQgJWx1IGV2ZW50cyBmcm9tIGJpbmFyeSBsb2cgZmlsZSAnJXMnIHRvIGRldGVybWluZSB0aGUgR1RJRHMgcHVyZ2VkIGZyb20gYmluYXJ5IGxvZ3MuAE1ZU1FMX0JJTl9MT0c6Om9wZW4gZmFpbGVkIHRvIGdlbmVyYXRlIG5ldyBmaWxlIG5hbWUuAE1ZU1FMX0JJTl9MT0c6Om9wZW4gZmFpbGVkIHRvIHN5bmMgdGhlIGluZGV4IGZpbGUuAENvdWxkIG5vdCB1c2UgJXMgZm9yIGxvZ2dpbmcgKGVycm9yICVkKS4gVHVybmluZyBsb2dnaW5nIG9mZiBmb3IgdGhlIHdob2xlIGR1cmF0aW9uIG9mIHRoZSBNeVNRTCBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgc2h1dGRvd24gdGhlIE15U1FMIHNlcnZlciBhbmQgcmVzdGFydCBpdC4AV2hpbGUgcmVidWlsZGluZyBpbmRleCBmaWxlICVzOiBGYWlsZWQgdG8gY2xvc2UgdGhlIGluZGV4IGZpbGUuAFdoaWxlIHJlYnVpbGRpbmcgaW5kZXggZmlsZSAlczogRmFpbGVkIHRvIGRlbGV0ZSB0aGUgZXhpc3RpbmcgaW5kZXggZmlsZS4gSXQgY291bGQgYmUgdGhhdCBmaWxlIGlzIGJlaW5nIHVzZWQgYnkgc29tZSBvdGhlciBwcm9jZXNzLgBXaGlsZSByZWJ1aWxkaW5nIGluZGV4IGZpbGUgJXM6IEZhaWxlZCB0byByZW5hbWUgdGhlIG5ldyBpbmRleCBmaWxlIHRvIHRoZSBleGlzdGluZyBpbmRleCBmaWxlLgBBZnRlciByZWJ1aWxkaW5nIHRoZSBpbmRleCBmaWxlICVzOiBGYWlsZWQgdG8gb3BlbiB0aGUgaW5kZXggZmlsZS4ATVlTUUxfQklOX0xPRzo6YWRkX2xvZ190b19pbmRleCBmYWlsZWQgdG8gYXBwZW5kIGxvZyBmaWxlIG5hbWU6ICVzLCB0byBjcmFzaCBzYWZlIGluZGV4IGZpbGUuAEZhaWxlZCB0byBsb2NhdGUgb2xkIGJpbmxvZyBvciByZWxheSBsb2cgZmlsZXMARmFpbGVkIHRvIGRlbGV0ZSBmaWxlICclcycATVlTUUxfQklOX0xPRzo6c2V0X2NyYXNoX3NhZmVfaW5kZXhfZmlsZV9uYW1lIGZhaWxlZCB0byBzZXQgZmlsZSBuYW1lLgBNWVNRTF9CSU5fTE9HOjpvcGVuX2NyYXNoX3NhZmVfaW5kZXhfZmlsZSBmYWlsZWQgdG8gb3BlbiB0ZW1wb3JhcnkgaW5kZXggZmlsZS4AbmV4dCBsb2cgZXJyb3I6ICVkICBvZmZzZXQ6ICVzICBsb2c6ICVzIGluY2x1ZGVkOiAlZAAlcyBmYWlsZWQgdG8gb3BlbiB0aGUgY3Jhc2ggc2FmZSBpbmRleCBmaWxlLgAlcyBmYWlsZWQgdG8gY29weSBpbmRleCBmaWxlIHRvIGNyYXNoIHNhZmUgaW5kZXggZmlsZS4AJXMgZmFpbGVkIHRvIGNsb3NlIHRoZSBjcmFzaCBzYWZlIGluZGV4IGZpbGUuACVzIGZhaWxlZCB0byBtb3ZlIGNyYXNoIHNhZmUgaW5kZXggZmlsZSB0byBpbmRleCBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIHdhcyBjYWxsZWQgd2l0aCBmaWxlICVzIG5vdCBsaXN0ZWQgaW4gdGhlIGluZGV4LgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byBzeW5jIHRoZSBpbmRleCBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byBjb3B5ICVzIHRvIHJlZ2lzdGVyIGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIGZsdXNoIHJlZ2lzdGVyIGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIHVwZGF0ZSB0aGUgaW5kZXggZmlsZQBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byBwcm9jZXNzIHJlZ2lzdGVyZWQgZmlsZXMgdGhhdCB3b3VsZCBiZSBwdXJnZWQuAE1ZU1FMX0JJTl9MT0c6OnNldF9wdXJnZV9pbmRleF9maWxlX25hbWUgZmFpbGVkIHRvIHNldCBmaWxlIG5hbWUuAE1ZU1FMX0JJTl9MT0c6Om9wZW5fcHVyZ2VfaW5kZXhfZmlsZSBmYWlsZWQgdG8gb3BlbiByZWdpc3RlciBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9pbmRleF9lbnRyeSBmYWlsZWQgdG8gcmVpbml0IHJlZ2lzdGVyIGZpbGUgZm9yIHJlYWQATVlTUUxfQklOX0xPRzo6cHVyZ2VfaW5kZXhfZW50cnkgZXJyb3IgJWQgcmVhZGluZyBmcm9tIHJlZ2lzdGVyIGZpbGUuAEZhaWxlZCB0byBleGVjdXRlIG15c3FsX2ZpbGVfc3RhdCBvbiBmaWxlICclcycARmFpbGVkIHRvIGRlbGV0ZSBsb2cgZmlsZSAnJXMnOyBjb25zaWRlciBleGFtaW5pbmcgY29ycmVzcG9uZGVuY2Ugb2YgeW91ciBiaW5sb2cgaW5kZXggZmlsZSB0byB0aGUgYWN0dWFsIGJpbmxvZyBmaWxlcwBGYWlsZWQgdG8gZGVsZXRlIGZpbGUgJyVzJyBhbmQgcmVhZCB0aGUgYmlubG9nIGluZGV4IGZpbGUARmFpbGVkIHRvIGRlbGV0ZSBsb2cgZmlsZSAnJXMnACVzIEFuIGluY2lkZW50IGV2ZW50IGhhcyBiZWVuIHdyaXR0ZW4gdG8gdGhlIGJpbmFyeSBsb2cgd2hpY2ggd2lsbCBzdG9wIHRoZSByZXBsaWNhcy4AZmluZF9sb2dfcG9zKCkgZmFpbGVkIChlcnJvcjogJWQpAFJlY292ZXJpbmcgYWZ0ZXIgYSBjcmFzaCB1c2luZyAlcwBGYWlsZWQgdG8gb3BlbiB0aGUgY3Jhc2hlZCBiaW5sb2cgZmlsZSB3aGVuIHNvdXJjZSBzZXJ2ZXIgaXMgcmVjb3ZlcmluZyBpdC4ARmFpbGVkIHRvIHRyaW0gdGhlIGNyYXNoZWQgYmlubG9nIGZpbGUgd2hlbiBzb3VyY2Ugc2VydmVyIGlzIHJlY292ZXJpbmcgaXQuAENyYXNoZWQgYmlubG9nIGZpbGUgJXMgc2l6ZSBpcyAlbGx1LCBidXQgcmVjb3ZlcmVkIHVwIHRvICVsbHUuIEJpbmxvZyB0cmltbWVkIHRvICVsbHUgYnl0ZXMuAEZhaWxlZCB0byBjbGVhciBMT0dfRVZFTlRfQklOTE9HX0lOX1VTRV9GIGZvciB0aGUgY3Jhc2hlZCBiaW5sb2cgZmlsZSB3aGVuIHNvdXJjZSBzZXJ2ZXIgaXMgcmVjb3ZlcmluZyBpdC4ARmFpbGVkIHRvIHJ1biAnYWZ0ZXJfc3luYycgaG9va3MAJXMgSGVuY2UgdHVybmluZyBsb2dnaW5nIG9mZiBmb3IgdGhlIHdob2xlIGR1cmF0aW9uIG9mIHRoZSBNeVNRTCBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgc2h1dGRvd24gdGhlIE15U1FMIHNlcnZlciBhbmQgcmVzdGFydCBpdC4ARmFpbGVkIHRvIHJ1biAnYWZ0ZXJfZmx1c2gnIGhvb2tzAENyYXNoIHJlY292ZXJ5IGZhaWxlZC4gRWl0aGVyIGNvcnJlY3QgdGhlIHByb2JsZW0gKGlmIGl0J3MsIGZvciBleGFtcGxlLCBvdXQgb2YgbWVtb3J5IGVycm9yKSBhbmQgcmVzdGFydCwgb3IgZGVsZXRlIChvciByZW5hbWUpIGJpbmFyeSBsb2cgYW5kIHN0YXJ0IG15c3FsZCB3aXRoIC0tdGMtaGV1cmlzdGljLXJlY292ZXI9e2NvbW1pdHxyb2xsYmFja30AVGhlIGZvbGxvd2luZyB3YXJuaW5nIHdhcyBzdXBwcmVzc2VkICVkIHRpbWVzIGR1cmluZyB0aGUgbGFzdCAlZCBzZWNvbmRzIGluIHRoZSBlcnJvciBsb2cATkRCOiAlcwBOREIgJXM6ICVzAE5EQjogVW5hYmxlIHRvIHB1cmdlICVzLiVzIEZpbGU9JXMgKGZhaWxlZCB0byBzZXR1cCB0aGQpAFVua25vd24gY29sbGF0aW9uICMlbHUuAHN5bnRheCBlcnJvciBpbiBpbm5vZGJfbG9nX2dyb3VwX2hvbWVfZGlyAHN5bnRheCBlcnJvciBpbiBpbm5vZGJfdW5kb19kaXJlY3RvcnkASW5ub0RCOiBpbm5vZGJfYnVmZmVyX3Bvb2xfZmlsZW5hbWUgY2Fubm90IGhhdmUgY29sb24gKDopIGluIHRoZSBmaWxlIG5hbWUuAElubm9EQjogSW52YWxpZCBwYWdlIHNpemU9JWx1LgBJbm5vREI6IGlubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0X2x3bSBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIGlubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0LiBTZXR0aW5nIGlubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0X2x3bSB0byAlbGYASW5ub0RCOiBpbm5vZGJfaW9fY2FwYWNpdHkgY2Fubm90IGJlIHNldCBoaWdoZXIgdGhhbiBpbm5vZGJfaW9fY2FwYWNpdHlfbWF4LiBTZXR0aW5nIGlubm9kYl9pb19jYXBhY2l0eSB0byAlbHUAJXMgYW5kICVzIGZpbGUgbmFtZXMgc2VlbSB0byBiZSB0aGUgc2FtZS4AVHJhbnNhY3Rpb24gbm90IHJlZ2lzdGVyZWQgZm9yIE15U1FMIDJQQywgYnV0IHRyYW5zYWN0aW9uIGlzIGFjdGl2ZQBNeVNRTCBpcyBjbG9zaW5nIGEgY29ubmVjdGlvbiB0aGF0IGhhcyBhbiBhY3RpdmUgSW5ub0RCIHRyYW5zYWN0aW9uLiAlbGx1IHJvdyBtb2RpZmljYXRpb25zIHdpbGwgcm9sbCBiYWNrLgBJbm5vREI6IGZhaWwgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZS4gTnVtYmVyIG9mIEluZGV4OiVsdSwgYXJyYXkgc2l6ZTolbHUAQ2Fubm90IGZpbmQgaW5kZXggJXMgaW4gSW5ub0RCIGluZGV4IGRpY3Rpb25hcnkuAEZvdW5kIGluZGV4ICVzIHdob3NlIGNvbHVtbiBpbmZvIGRvZXMgbm90IG1hdGNoIHRoYXQgb2YgTXlTUUwuAEZhaWxlZCB0byBvcGVuIHRhYmxlICVzLgBCdWlsZCBJbm5vREIgaW5kZXggdHJhbnNsYXRpb24gdGFibGUgZm9yIFRhYmxlICVzIGZhaWxlZABUYWJsZSAlcyBoYXMgYSBwcmltYXJ5IGtleSBpbiBJbm5vREIgZGF0YSBkaWN0aW9uYXJ5LCBidXQgbm90IGluIE15U1FMIQBUYWJsZSAlcyBoYXMgbm8gcHJpbWFyeSBrZXkgaW4gSW5ub0RCIGRhdGEgZGljdGlvbmFyeSwgYnV0IGhhcyBvbmUgaW4gTXlTUUwhIElmIHlvdSBjcmVhdGVkIHRoZSB0YWJsZSB3aXRoIGEgTXlTUUwgdmVyc2lvbiA8IDMuMjMuNTQgYW5kIGRpZCBub3QgZGVmaW5lIGEgcHJpbWFyeSBrZXksIGJ1dCBkZWZpbmVkIGEgdW5pcXVlIGtleSB3aXRoIGFsbCBub24tTlVMTCBjb2x1bW5zLCB0aGVuIE15U1FMIGludGVybmFsbHkgdHJlYXRzIHRoYXQga2V5IGFzIHRoZSBwcmltYXJ5IGtleS4gWW91IGNhbiBmaXggdGhpcyBlcnJvciBieSBkdW1wICsgRFJPUCArIENSRUFURSArIHJlaW1wb3J0IG9mIHRoZSB0YWJsZS4AVGFibGUgJXMga2V5X3VzZWRfb25fc2NhbiBpcyAlbHUgZXZlbiB0aG91Z2ggdGhlcmUgaXMgbm8gcHJpbWFyeSBrZXkgaW5zaWRlIElubm9EQi4AUGFydGl0aW9uIHRhYmxlICVzIG9wZW5lZCBhZnRlciBjb252ZXJ0aW5nIHRvIGxvd2VyIGNhc2UuIFRoZSB0YWJsZSBtYXkgaGF2ZSBiZWVuIG1vdmVkIGZyb20gYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtLiBQbGVhc2UgcmVjcmVhdGUgdGhlIHRhYmxlIGluIHRoZSBjdXJyZW50IGZpbGUgc3lzdGVtLgBDYW5ub3QgcmVwbGFjZSBlcnJvciBtZXNzYWdlICglcywlcywlcykgIiVzIiB3aXRoICIlcyI7IHdyb25nIG51bWJlciBvciB0eXBlIG9mICUlIHN1YnNpdHV0aW9ucy4AVGFibGUgZm9yIGVycm9yIG1lc3NhZ2UgcmVwbGFjZW1lbnRzIGNvdWxkIG5vdCBiZSBmb3VuZCBvciByZWFkLCBvciBvbmUgb3IgbW9yZSByZXBsYWNlbWVudHMgY291bGQgbm90IGJlIGFwcGxpZWQuACVzOiAlcwBUYWJsZSAnJS0xOTJzJzogRGVsZXRlIGZyb20gcGFydCAlZCBmYWlsZWQgd2l0aCBlcnJvciAlZC4gQnV0IGl0IHdhcyBhbHJlYWR5IGluc2VydGVkIGludG8gcGFydCAlZCwgd2hlbiBtb3ZpbmcgdGhlIG1pc3BsYWNlZCByb3chIFBsZWFzZSBtYW51YWxseSBmaXggdGhlIGR1cGxpY2F0ZSByb3c6ICVzAENvbW1hbmQgJyVzJyBjYW5ub3QgYmUgYWJvcnRlZC4gVGhlIHRyaWdnZXIgZXJyb3Igd2FzICglZCkgWyVzXTogJXMARXZlbnQgJyVzJyBjYW5ub3QgYmUgYWJvcnRlZC4gVGhlIHRyaWdnZXIgZXJyb3Igd2FzICglZCkgWyVzXTogJXMAJXMuIFRoZSB0cmlnZ2VyIGVycm9yIHdhcyAoJWQpIFslc106ICVzAFJlcGxpY2EgU1FMOiBDb25maWd1cmF0aW9uIHdpdGggbnVtYmVyIG9mIHJlcGxpY2F0aW9uIHNvdXJjZXMgPSAldScgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGFwcGx5aW5nIHRvIE5kYgBSZXBsaWNhIFNRTDogQ29uZmlndXJhdGlvbiAncmVwbGljYV9wYXJhbGxlbF93b3JrZXJzID0gJWx1JyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gYXBwbHlpbmcgdG8gTmRiAE5EQiAlczogZGlzdHJpYnV0aW5nICVzIGVycjogJXUAU3RvcmluZyBNeVNRTCB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgaW5mb3JtYXRpb24gaW4gdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBpcyBub3Qgc2VjdXJlIGFuZCBpcyB0aGVyZWZvcmUgbm90IHJlY29tbWVuZGVkLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgdGhlIFVTRVIgYW5kIFBBU1NXT1JEIGNvbm5lY3Rpb24gb3B0aW9ucyBmb3IgU1RBUlQgUkVQTElDQTsgc2VlIHRoZSAnU1RBUlQgUkVQTElDQSBTeW50YXgnIGluIHRoZSBNeVNRTCBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEZMVVNIIFJFTEFZIExPR1MgY2Fubm90IGJlIHBlcmZvcm1lZCBvbiBjaGFubmVsICclLS4xOTJzJy4AUmVwbGljYSBjaGFubmVsICclcycgZG9lcyBub3QgZXhpc3QuAENhbid0IGZpbmQgc3ltYm9sICclLS4xMjhzJyBpbiBsaWJyYXJ5LgBDYW4ndCBvcGVuIHNoYXJlZCBsaWJyYXJ5ICclLS4xOTJzJyAoZXJybm86ICVkICUtLjEyOHMpLgBUaHJlYWQgcHJpb3JpdHkgYXR0cmlidXRlIHNldHRpbmcgaW4gUmVzb3VyY2UgR3JvdXAgU1FMIHNoYWxsIGJlIGlnbm9yZWQgZHVlIHRvIHVuc3VwcG9ydGVkIHBsYXRmb3JtIG9yIGluc3VmZmljaWVudCBwcml2aWxlZ2UuAE9wdGlvbiBiaW5sb2dfY2FjaGVfc2l6ZSAoJWx1KSBpcyBncmVhdGVyIHRoYW4gbWF4X2JpbmxvZ19jYWNoZV9zaXplICglbHUpOyBzZXR0aW5nIGJpbmxvZ19jYWNoZV9zaXplIGVxdWFsIHRvIG1heF9iaW5sb2dfY2FjaGVfc2l6ZS4AT3B0aW9uIGJpbmxvZ19zdG10X2NhY2hlX3NpemUgKCVsdSkgaXMgZ3JlYXRlciB0aGFuIG1heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplICglbHUpOyBzZXR0aW5nIGJpbmxvZ19zdG10X2NhY2hlX3NpemUgZXF1YWwgdG8gbWF4X2JpbmxvZ19zdG10X2NhY2hlX3NpemUuAENhbid0IGdlbmVyYXRlIGEgdW5pcXVlIGxvZy1maWxlbmFtZSAlLS4yMDBzLigxLTk5OSkuAEVycm9yIHJlYWRpbmcgZmlsZSAnJS0uMjAwcycgKGVycm5vOiAlZCAtICVzKQBFcnJvciB3cml0aW5nIGZpbGUgJyUtLjIwMHMnIChlcnJubzogJWQgLSAlcykAJXMgU3RhdGVtZW50OiAlcwAlczogRm9yY2luZyBjbG9zZSBvZiB0aHJlYWQgJWxkICB1c2VyOiAnJS0uNDhzJy4AJXM6IFNodXRkb3duIGNvbXBsZXRlIChteXNxbGQgJXMpICAlcy4AQ2Fubm90IGhhdmUgc2FtZSBiYXNlIG5hbWUgJyVzJyBmb3IgYm90aCBiaW5hcnkgYW5kIHJlbGF5IGxvZ3MuIFBsZWFzZSBjaGVjayAlcyAoZGVmYXVsdCAnJXMnIGlmIC0tbG9nLWJpbiBvcHRpb24gaXMgbm90IHVzZWQsIGRlZmF1bHQgJyVzJyBpZiAtLWxvZy1iaW4gb3B0aW9uIGlzIHVzZWQgd2l0aG91dCBhcmd1bWVudCkgYW5kICVzIChkZWZhdWx0ICclcycpIG9wdGlvbnMgdG8gZW5zdXJlIHRoZXkgZG8gbm90IGNvbmZsaWN0LgBHVElEX01PREUgPSBPTiByZXF1aXJlcyBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgPSBPTi4AWW91IGhhdmUgbm90IHByb3ZpZGVkIGEgbWFuZGF0b3J5IHNlcnZlci1pZC4gU2VydmVycyBpbiBhIHJlcGxpY2F0aW9uIHRvcG9sb2d5IG11c3QgaGF2ZSB1bmlxdWUgc2VydmVyLWlkcy4gUGxlYXNlIHJlZmVyIHRvIHRoZSBwcm9wZXIgc2VydmVyIHN0YXJ0LXVwIHBhcmFtZXRlcnMgZG9jdW1lbnRhdGlvbi4AQWJvcnRlZCBjb25uZWN0aW9uICV1IHRvIGRiOiAnJS0uMTkycycgdXNlcjogJyUtLjQ4cycgaG9zdDogJyUtLjI1NXMnICglLS42NHMpLgAnTk9fWkVST19EQVRFJywgJ05PX1pFUk9fSU5fREFURScgYW5kICdFUlJPUl9GT1JfRElWSVNJT05fQllfWkVSTycgc3FsIG1vZGVzIHNob3VsZCBiZSB1c2VkIHdpdGggc3RyaWN0IG1vZGUuIFRoZXkgd2lsbCBiZSBtZXJnZWQgd2l0aCBzdHJpY3QgbW9kZSBpbiBhIGZ1dHVyZSByZWxlYXNlLgBAQEdMT0JBTC5HVElEX1BVUkdFRCB3YXMgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJy4AQEBHTE9CQUwuR1RJRF9FWEVDVVRFRCB3YXMgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJy4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkLgBUcmlnZ2VycyBmb3IgdGFibGUgYCUtLjY0c2AuYCUtLjY0c2AgaGF2ZSBubyBjcmVhdGlvbiBjb250ZXh0ACclLS4xOTJzJyBoYXMgYW4gb2xkIGZvcm1hdCwgeW91IHNob3VsZCByZS1jcmVhdGUgdGhlICclcycgb2JqZWN0KHMpAFZpZXcgYCUtLjY0c2AuYCUtLjY0c2AgaGFzIG5vIGNyZWF0aW9uIGNvbnRleHQATG9uZyBkYXRhYmFzZSBuYW1lIGFuZCBpZGVudGlmaWVyIGZvciBvYmplY3QgcmVzdWx0ZWQgaW4gYSBwYXRoIGxlbmd0aCB0b28gbG9uZyBmb3IgdGFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIHRoZSBwYXRoIGxpbWl0IGZvciB5b3VyIE9TLgBUYWJsZSB1cGdyYWRlIHJlcXVpcmVkLiBQbGVhc2UgZG8gIlJFUEFJUiBUQUJMRSBgJS0uNjRzYCIgb3IgZHVtcC9yZWxvYWQgdG8gZml4IGl0IQBHb3QgZXJyb3IgJWQgLSAnJS0uMTkycycgZnJvbSBzdG9yYWdlIGVuZ2luZS4AQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJwBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnICh1c2luZyBwYXNzd29yZDogJXMpAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycuIEFjY291bnQgaXMgbG9ja2VkLgBZb3VyIHBhc3N3b3JkIGhhcyBleHBpcmVkLiBUbyBsb2cgaW4geW91IG11c3QgY2hhbmdlIGl0IHVzaW5nIGEgY2xpZW50IHRoYXQgc3VwcG9ydHMgZXhwaXJlZCBwYXNzd29yZHMuAFN0b3JhZ2UgZW5naW5lICclcycgZG9lcyBub3Qgc3VwcG9ydCBzeXN0ZW0gdGFibGVzLiBbJXMuJXNdLgBTb3J0IGFib3J0ZWQAJXM6IHJlYWR5IGZvciBjb25uZWN0aW9ucy4gVmVyc2lvbjogJyVzJyAgc29ja2V0OiAnJXMnICBwb3J0OiAlZCAgJXMuAFVua25vd24gbG9jYWxlOiAnJS0uNjRzJy4AVW5rbm93biBjb2xsYXRpb246ICclLS42NHMnLgBPdXQgb2YgbWVtb3J5OyBjaGVjayBpZiBteXNxbGQgb3Igc29tZSBvdGhlciBwcm9jZXNzIHVzZXMgYWxsIGF2YWlsYWJsZSBtZW1vcnk7IGlmIG5vdCwgeW91IG1heSBoYXZlIHRvIHVzZSAndWxpbWl0JyB0byBhbGxvdyBteXNxbGQgdG8gdXNlIG1vcmUgbWVtb3J5IG9yIHlvdSBjYW4gYWRkIG1vcmUgc3dhcCBzcGFjZQBPdXQgb2YgbWVtb3J5OyByZXN0YXJ0IHNlcnZlciBhbmQgdHJ5IGFnYWluIChuZWVkZWQgJWQgYnl0ZXMpAENPTExBVElPTiAnJXMnIGlzIG5vdCB2YWxpZCBmb3IgQ0hBUkFDVEVSIFNFVCAnJXMnAEZhaWxlZCB0byBzZXQgJXMgYXQgb3IgYXJvdW5kICIlcyIgLS0gc2VydmljZSBpcyB2YWxpZCwgYnV0IGNhbiBub3QgYmUgaW5pdGlhbGl6ZWQ7IHBsZWFzZSBjaGVjayBpdHMgY29uZmlndXJhdGlvbiBhbmQgbWFrZSBzdXJlIGl0IGNhbiByZWFkIGl0cyBpbnB1dChzKSBhbmQgd3JpdGUgdG8gaXRzIG91dHB1dChzKS4AR2VuZXJhdGluZyBhIG5ldyBVVUlEOiAlcy4ARmFpbGVkIHRvIGdldCBhYnNvbHV0ZSBwYXRoIG9mIHByb2dyYW0gZXhlY3V0YWJsZSAlcwBGYWlsZWQgdG8gYm9vdHN0cmFwIHBlcmZvcm1hbmNlIHNjaGVtYSBjb21wb25lbnRzIGluZnJhc3RydWN0dXJlLgBGYWlsZWQgdG8gZGVpbml0IHBlcmZvcm1hbmNlIHNjaGVtYSBjb21wb25lbnRzIGluZnJhc3RydWN0dXJlLgBDb3VsZCBub3Qgb3BlbiBkdXBsaWNhdGUgZmQgZm9yICVzOiAlcy4AU3lzdGVtIHZpZXdzIGluaXRpYWxpemF0aW9uIGZhaWxlZC4AUmVzb3VyY2UgZ3JvdXAgcG9zdCBpbml0aWFsaXphdGlvbiBmYWlsZWQuAFJlc291cmNlIEdyb3VwIHN1YnN5c3RlbSBpbml0aWFsaXphdGlvbiBmYWlsZWQuAEZhaWxlZCB0byBzdGFydCBteXNxbGQgZGFlbW9uLiBDaGVjayBteXNxbGQgZXJyb3IgbG9nLgBDYW5ub3QgY2hhbmdlIHRvIHJvb3QgZGlyZWN0b3J5OiAlcy4ARmFpbGVkIHRvIGJvb3RzdHJhcCBwZXJzaXN0ZW50IHByaXZpbGVnZXMuAEJhc2VkaXIgc2V0IHRvICVzLgBDb3VsZCBub3QgYWRkIHdpbGQgZG8gdGFibGUgcnVsZSAnJXMnIQBDb3VsZCBub3QgYWRkIHdpbGQgaWdub3JlIHRhYmxlIHJ1bGUgJyVzJyEAVGhlIHByaXZpbGVnZSBzeXN0ZW0gZmFpbGVkIHRvIGluaXRpYWxpemUgY29ycmVjdGx5LiBGb3IgY29tcGxldGUgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byB1cGdyYWRlIE15U1FMIHRvIGEgbmV3IHZlcnNpb24gcGxlYXNlIHNlZSB0aGUgJ1VwZ3JhZGluZyBNeVNRTCcgc2VjdGlvbiBmcm9tIHRoZSBNeVNRTCBtYW51YWwuAENhbm5vdCBzZXQgc2VydmljZXMgIiVzIiByZXF1ZXN0ZWQgaW4gLS1sb2ctZXJyb3Itc2VydmljZXMsIHVzaW5nIGRlZmF1bHRzLgBQZXJmb3JtYW5jZSBzY2hlbWEgdGFibGVzIGluaXRpYWxpemF0aW9uIGZhaWxlZC4AVGhlIHRyYW5zYWN0aW9uX3dyaXRlX3NldF9leHRyYWN0aW9uIG11c3QgYmUgc2V0IHRvICVzIHdoZW4gYmlubG9nX3RyYW5zYWN0aW9uX2RlcGVuZGVuY3lfdHJhY2tpbmcgaXMgJXMuAEludmFsaWQgcmVwbGljYXRpb24gdGltZXN0YW1wczogb3JpZ2luYWwgY29tbWl0IHRpbWVzdGFtcCBpcyBtb3JlIHJlY2VudCB0aGFuIHRoZSBpbW1lZGlhdGUgY29tbWl0IHRpbWVzdGFtcC4gVGhpcyBtYXkgYmUgYW4gaXNzdWUgaWYgZGVsYXllZCByZXBsaWNhdGlvbiBpcyBhY3RpdmUuIE1ha2Ugc3VyZSB0aGF0IHNlcnZlcnMgaGF2ZSB0aGVpciBjbG9ja3Mgc2V0IHRvIHRoZSBjb3JyZWN0IHRpbWUuIE5vIGZ1cnRoZXIgbWVzc2FnZSB3aWxsIGJlIGVtaXR0ZWQgdW50aWwgYWZ0ZXIgdGltZXN0YW1wcyBiZWNvbWUgdmFsaWQgYWdhaW4uAFRoZSByZXBsaWNhdGlvbiB0aW1lc3RhbXBzIGhhdmUgcmV0dXJuZWQgdG8gbm9ybWFsIHZhbHVlcy4AJXMuAEZhaWxlZCB0byB3cml0ZSBhbiBpbmNpZGVudCBldmVudCBpbnRvIHN0bXRfY2FjaGUuAFJlbGF5bG9nIGZpbGUgJXMgc2l6ZSB3YXMgJWxsdSwgYnV0IHdhcyB0cnVuY2F0ZWQgYXQgJWxsdS4AVW5hYmxlIHRvIHB1cmdlIHJlbGF5IGxvZyBmaWxlcy4gJXM6JXMuAFJlcGxpY2E6IGZhaWxlZCBpbiBjcmVhdGluZyBmaWx0ZXIgZm9yIGNoYW5uZWwgJyVzJy4AUmVwbGljYTogZmFpbGVkIGluIGNvcHlpbmcgdGhlIGdsb2JhbCBmaWx0ZXJzIHRvIGl0cyBvd24gcGVyLWNoYW5uZWwgZmlsdGVycyBvbiBjb25maWd1cmF0aW9uIGZvciBjaGFubmVsICclcycuAFRoZXJlIGFyZSBwZXItY2hhbm5lbCByZXBsaWNhdGlvbiBmaWx0ZXIocykgY29uZmlndXJlZCBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3aGljaCBkb2VzIG5vdCBleGlzdC4gVGhlIGZpbHRlcihzKSBoYXZlIGJlZW4gZGlzY2FyZGVkLgBUaGUgc3lzdGVtIHRhYmxlIG15c3FsLmdsb2JhbF9ncmFudHMgaXMgbWlzc2luZy4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBBQ0wgdGFibGUgbXlzcWwuJS4qcyBtaXNzaW5nLiBTb21lIG9wZXJhdGlvbnMgbWF5IGZhaWwuAENhbid0IHNldCBtYW5kYXRvcnlfcm9sZSAlc0AlczogQW5vbnltb3VzIGF1dGhvcml6YXRpb24gSURzIGFyZSBub3QgYWxsb3dlZCBhcyByb2xlcy4AQ2FuJ3Qgc2V0IG1hbmRhdG9yeV9yb2xlOiBUaGVyZSdzIG5vIHN1Y2ggYXV0aG9yaXphdGlvbiBJRCAlc0Alcy4AVGFibGUgJyUtMTkycycgZmFpbGVkIHRvIG1vdmUvaW5zZXJ0IGEgcm93IGZyb20gcGFydCAlZCBpbnRvIHBhcnQgJWQ6ICVzLgBTa2lwcGVkIHVwZGF0aW5nIHJlc291cmNlIGdyb3VwIG1ldGFkYXRhIGluIElubm9EQiByZWFkIG9ubHkgbW9kZS4ARmFpbGVkIHRvIHBlcnNpc3QgcmVzb3VyY2UgZ3JvdXAgJXMgdG8gRGF0YSBEaWN0aW9uYXJ5LgBGYWlsZWQgdG8gZGVzZXJpYWxpemUgcmVzb3VyY2UgZ3JvdXAgJXMuAFVwZGF0ZSBvZiByZXNvdXJjZSBncm91cCAlcyBmYWlsZWQuAFZhbGlkYXRpb24gb2YgcmVzb3VyY2UgZ3JvdXAgJXMgZmFpbGVkLiBSZXNvdXJjZSBncm91cCBpcyBkaXNhYmxlZC4AVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgUmVzb3VyY2UgR3JvdXAgJXMuAEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHJlc291cmNlIGdyb3VwIGhhc2guAEZhaWxlZCB0byBhZGQgcmVzb3VyY2UgZ3JvdXAgJXMgdG8gcmVzb3VyY2UgZ3JvdXAgbWFwLgBSZXNvdXJjZSBncm91cCBmZWF0dXJlIGlzIGRpc2FibGVkLiAoU2VydmVyIGlzIGNvbXBpbGVkIHdpdGggRElTQUJMRV9QU0lfVEhSRUFEKS4AVW5hYmxlIHRvIGFwcGx5IHJlc291cmNlIGdyb3VwIGNvbnRyb2xsZXIgJXMuAFVuYWJsZSB0byBhY3F1aXJlIGxvY2sgb24gdGhlIHJlc291cmNlIGdyb3VwICVzLiBIaW50IHRvIHN3aXRjaCByZXNvdXJjZSBncm91cCBzaGFsbCBiZSBpZ25vcmVkLgBQRlMgJXMgbm90aWZpY2F0aW9uIGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbiBmYWlsZWQuAFVuYWJsZSB0byBiaW5kIHRocmVhZCBpZCAlbGx1IHRvIGNwdSBpZCAldSAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBVbmFibGUgdG8gYmluZCB0aHJlYWQgaWQgJWxsdSB0byBjcHUgaWRzIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAFVuYmluZCB0aHJlYWQgaWQgJWxsdSBmYWlsZWQuIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAFNldHRpbmcgdGhyZWFkIHByaW9yaXR5ICVkIHRvIHRocmVhZCBpZCAlbGx1IGZhaWxlZC4gKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AVW5hYmxlIHRvIGRldGVybWluZSBDQVBfU1lTX05JQ0UgY2FwYWJpbGl0eS4AJXMgZmFpbGVkOiBGYWlsZWQgdG8gZ2V0IGhhbmRsZSBmb3IgdGhyZWFkICVsbHUuAFJldHJpZXZhbCBvZiB0aHJlYWQgcHJpb3JpdHkgdW5zdXBwb3J0ZWQgb24gJXMuAFVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBDUFVzLgBSZXNvdXJjZSBncm91cCBmZWF0dXJlIHNoYWxsIG5vdCBiZSBhdmFpbGFibGUuIEluY29tcGF0aWJsZSB0aHJlYWQgaGFuZGxpbmcgb3B0aW9uLgBJbnZhbGlkIHRocmVhZCBwcmlvcml0eSAlZCBmb3IgYSAlcyByZXNvdXJjZSBncm91cC4gQWxsb3dlZCByYW5nZSBpcyBbJWQsICVkXS4AYmluZF90b19jcHUgZmFpbGVkOiBwcm9jZXNzb3JfYmluZCBmb3IgY3B1aWQgJXUgZmFpbGVkIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAGJpbmRfdG9fY3B1IGZhaWxlZDogcHJvY2Vzc29yX2JpbmQgZm9yIHRocmVhZCAlJWxseCB3aXRoIGNwdSBpZCAldSAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgAlcyBmYWlsZWQ6IHByb2Nlc3Nvcl9hZmZpbml0eSBmYWlsZWQgKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4ARXJyb3IgaW4gcmVuYW1pbmcgbXlzcWxfaW5kZXhfc3RhdHMuaWJkLgBFcnJvciBpbiBvcGVuaW5nIGRhdGEgZGlyZWN0b3J5ICVzLgBFcnJvciBpbiBmZXRjaGluZyBsaXN0IG9mIHRhYmxlc3BhY2VzLgBFcnJvciBpbiBhY3F1aXJpbmcgVGFibGVzcGFjZSBmb3IgU0RJIGluc2VydGlvbiAlcy4ARXJyb3IgaW4gcmVzb2x2aW5nIEVuZ2luZSBuYW1lIGZvciB0YWJsZXNwYWNlICVzIHdpdGggZW5naW5lICVzLgBFcnJvciBpbiBjcmVhdGluZyBTREkgZm9yICVzIHRhYmxlc3BhY2UuAEVycm9yIGluIHN0b3JpbmcgU0RJIGZvciAlcyB0YWJsZXNwYWNlLgBFcnJvciBpbiBmZXRjaGluZyBsaXN0IG9mIHRhYmxlcy4ARmluaXNoZWQgcG9wdWxhdGluZyBEYXRhIERpY3Rpb25hcnkgdGFibGVzIHdpdGggZGF0YS4AQ291bGQgbm90IG9wZW4gdGhlIHVwZ3JhZGUgaW5mbyBmaWxlICclcycgaW4gdGhlIE15U1FMIHNlcnZlcnMgZGF0YWRpciwgZXJybm86ICVkLgBDb3VsZCBub3QgY2xvc2UgdGhlIHVwZ3JhZGUgaW5mbyBmaWxlICclcycgaW4gdGhlIE15U1FMIHNlcnZlcnMgZGF0YWRpciwgZXJybm86ICVkLgBHb3QgZXJyb3IgJWQgZnJvbSBTRSB3aGlsZSBtaWdyYXRpbmcgdGFibGVzcGFjZXMuAEVycm9yIGluIGNyZWF0aW5nIFRBQkxFIHN0YXRpc3RpY3MgZW50cnkuIEZpeCBzdGF0aXN0aWNzIGRhdGEgYnkgdXNpbmcgQU5BTFlaRSBjb21tYW5kLgBGaW5pc2hlZCBtaWdyYXRpbmcgVEFCTEUgc3RhdGlzdGljcyBkYXRhLgBFcnJvciBpbiBjcmVhdGluZyBJbmRleCBzdGF0aXN0aWNzIGVudHJ5LiBGaXggc3RhdGlzdGljcyBkYXRhIGJ5IHVzaW5nIEFOQUxZWkUgY29tbWFuZC4ARmluaXNoZWQgbWlncmF0aW5nIElOREVYIHN0YXRpc3RpY3MgZGF0YS4ARmFpbGVkIHRvIGZpbmQgdmFsaWQgZGF0YSBkaXJlY3RvcnkuAFN0YXJ0aW5nIHVwZ3JhZGUgb2YgZGF0YSBkaXJlY3RvcnkuAEZhaWxlZCB0byBpbml0aWFsaXplIEREIFN0b3JhZ2UgRW5naW5lLgBGb3VuZCBwYXJ0aWFsbHkgdXBncmFkZWQgREQuIEFib3J0aW5nIHVwZ3JhZGUgYW5kIGRlbGV0aW5nIGFsbCBERCB0YWJsZXMuIFN0YXJ0IHRoZSB1cGdyYWRlIHByb2Nlc3MgYWdhaW4uAEZvdW5kIHBhcnRpYWxseSB1cGdyYWRlZCBERC4gVXBncmFkZSB3aWxsIGNvbnRpbnVlIGFuZCBzdGFydCB0aGUgc2VydmVyLgBFcnJvciBpbiB1cGdyYWRpbmcgZW5naW5lIGxvZ3MuAEVycm9yIGluIHVwZGF0aW5nIFNESSBpbmZvcm1hdGlvbi4AU2tpcCB1cGRhdGluZyAlcyBtZXRhZGF0YSBpbiBJbm5vREIgcmVhZC1vbmx5IG1vZGUuAENyZWF0ZWQgc3lzdGVtIHZpZXdzIHdpdGggSV9TIHZlcnNpb24gJWQuAFVua25vd24gZXJyb3IgZGV0ZWN0ZWQgJWQgaW4gaGFuZGxlci4ARXJyb3IgaW4gTG9nX2V2ZW50OjpyZWFkX2xvZ19ldmVudCgpOiAnJXMnLCBkYXRhX2xlbjogJWx1LCBldmVudF90eXBlOiAlZC4AVGhlIHJvdyBkYXRhIGlzIGdyZWF0ZXIgdGhhbiA0R0IsIHdoaWNoIGlzIHRvbyBiaWcgdG8gd3JpdGUgdG8gdGhlIGJpbmFyeSBsb2cuAFVuYWJsZSB0byBjb25zdHJ1Y3QgRFJPUCBFVkVOVCBTUUwgcXVlcnkgc3RyaW5nLgBVbmFibGUgdG8gYmlubG9nIGRyb3AgZXZlbnQgJXMuJXMuAEZhaWxlZCB0byBzdGFydCByZXBsaWNhIHRocmVhZHMgZm9yIGNoYW5uZWwgJyVzJy4AJXMlcy4ARmFpbGVkIHJlZ2lzdGVyaW5nIG9uIHNvdXJjZSwgcmVjb25uZWN0aW5nIHRvIHRyeSBhZ2FpbiwgbG9nICclcycgYXQgcG9zaXRpb24gJXMuICVzLgBSZXBsaWNhIEkvTyB0aHJlYWQga2lsbGVkIGR1cmluZyBvciBhZnRlciByZWNvbm5lY3QuAFNvbWUgb2YgdGhlIGNoYW5uZWxzIGFyZSBub3QgY3JlYXRlZC9pbml0aWFsaXplZCBwcm9wZXJseS4gQ2hlY2sgZm9yIGFkZGl0aW9uYWwgbWVzc2FnZXMgYWJvdmUuIFlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIHN0YXJ0IHJlcGxpY2F0aW9uIG9uIHRob3NlIGNoYW5uZWxzIHVudGlsIHRoZSBpc3N1ZSBpcyByZXNvbHZlZCBhbmQgdGhlIHNlcnZlciByZXN0YXJ0ZWQuAEZhaWxlZCB0byBhZGQgYSByZXBsaWNhdGlvbiBmaWx0ZXIgaW50byBmaWx0ZXIgbWFwIGZvciBjaGFubmVsICclLjE5MnMnLgBUaGVyZSBhcmUgcGVyLWNoYW5uZWwgcmVwbGljYXRpb24gZmlsdGVyKHMpIGNvbmZpZ3VyZWQgZm9yIGdyb3VwIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2hpY2ggaXMgZGlzYWxsb3dlZC4gVGhlIGZpbHRlcihzKSBoYXZlIGJlZW4gZGlzY2FyZGVkLgBUaGVyZSBhcmUgcGVyLWNoYW5uZWwgcmVwbGljYXRpb24gZmlsdGVyKHMpIGNvbmZpZ3VyZWQgZm9yIGNoYW5uZWwgJyUuMTkycycgd2hpY2ggZG9lcyBub3QgZXhpc3QuIFRoZSBmaWx0ZXIocykgaGF2ZSBiZWVuIGRpc2NhcmRlZC4AQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYnVpbGRpbmcgZG9fdGFibGUgYW5kIGlnbm9yZV90YWJsZSBydWxlcyB0byBoYXNoZXMgZm9yIHBlci1jaGFubmVsIGZpbHRlci4AQ2xvbmUgcGx1Z2luIGNhbm5vdCBiZSBsb2FkZWQuAENsb25lIEhhbmRsZXIgZXhpc3RzLgBDb3VsZCBub3QgY3JlYXRlIENsb25lIEhhbmRsZXIuAFRoZSBDWUNMRSB0aW1lciBpcyBub3QgYXZhaWxhYmxlLiBXQUlUIGV2ZW50cyBpbiB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hIHdpbGwgbm90IGJlIHRpbWVkLgBUaGUgTkFOT1NFQ09ORCB0aW1lciBpcyBub3QgYXZhaWxhYmxlLiBJRExFL1NUQUdFL1NUQVRFTUVOVC9UUkFOU0FDVElPTiBldmVudHMgaW4gdGhlIHBlcmZvcm1hbmNlX3NjaGVtYSB3aWxsIG5vdCBiZSB0aW1lZC4AVGhlIE1JQ1JPU0VDT05EIHRpbWVyIGlzIG5vdCBhdmFpbGFibGUuIElETEUvU1RBR0UvU1RBVEVNRU5UL1RSQU5TQUNUSU9OIGV2ZW50cyBpbiB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hIHdpbGwgbm90IGJlIHRpbWVkLgBGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciAlenUgY2h1bmtzIGVhY2ggb2Ygc2l6ZSAlenUgZm9yIGJ1ZmZlciAnJXMnIGR1ZSB0byBvdmVyZmxvdy4ARmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlcyBmb3IgYnVmZmVyICclcycgZHVlIHRvIG91dC1vZi1tZW1vcnkuAElubm9EQiBjb3VsZCBub3QgZmluZCBpbmRleCAlcyBrZXkgbm8gJXUgZm9yIHRhYmxlICVzIHRocm91Z2ggaXRzIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlLgBDYW5ub3QgZmluZCBpbmRleCAlcyBpbiBJbm5vREIgaW5kZXggdHJhbnNsYXRpb24gdGFibGUuAElubm9EQiBjb3VsZCBub3QgZmluZCBrZXkgbm8gJXUgd2l0aCBuYW1lICVzIGZyb20gZGljdCBjYWNoZSBmb3IgdGFibGUgJXMuAElubm9EQjogY2hhbmdlX2FjdGl2ZV9pbmRleCgldSkgZmFpbGVkLgBTdG9yZWQgcmVmIGxlbiBpcyAlbHUsIGJ1dCB0YWJsZSByZWYgbGVuIGlzICVsdS4ATXlTUUwgaXMgdHJ5aW5nIHRvIGNyZWF0ZSBhIGNvbHVtbiBwcmVmaXggaW5kZXggZmllbGQsIG9uIGFuIGluYXBwcm9wcmlhdGUgZGF0YSB0eXBlLiBUYWJsZSBuYW1lICVzLCBjb2x1bW4gbmFtZSAlcy4AQ2Fubm90IGNyZWF0ZSB0YWJsZSAlcy4ARm91bmQgaW5kZXggJXMgaW4gSW5ub0RCIGluZGV4IGxpc3QgYnV0IG5vdCBpdHMgTXlTUUwgaW5kZXggbnVtYmVyLiBJdCBjb3VsZCBiZSBhbiBJbm5vREIgaW50ZXJuYWwgaW5kZXguAElubm9EQjogVGFibGUgJXMgY29udGFpbnMgJWx1IGluZGV4ZXMgaW5zaWRlIElubm9EQiwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gdGhlIG51bWJlciBvZiBpbmRleGVzICV1IGRlZmluZWQgaW4gTXlTUUwuAFRhYmxlICVzIGNvbnRhaW5zIGZld2VyIGluZGV4ZXMgaW5zaWRlIElubm9EQiB0aGFuIGFyZSBkZWZpbmVkIGluIHRoZSBNeVNRTC4gSGF2ZSB5b3UgbWl4ZWQgdXAgd2l0aCBkYXRhIGRpY3Rpb25hcnkgZnJvbSBkaWZmZXJlbnQgaW5zdGFsbGF0aW9uPwBJbmRleCAlcyBvZiAlcyBoYXMgJWx1IGNvbHVtbnMgdW5pcXVlIGluc2lkZSBJbm5vREIsIGJ1dCBNeVNRTCBpcyBhc2tpbmcgc3RhdGlzdGljcyBmb3IgJWx1IGNvbHVtbnMuIEhhdmUgeW91IG1peGVkIGRhdGEgZGljdGlvbmFyeSBmcm9tIGRpZmZlcmVudCBpbnN0YWxsYXRpb24/AE1vbml0b3IgY291bnRlciAnJXMnIGNhbm5vdCBiZSB0dXJuZWQgb24vb2ZmIGluZGl2aWR1YWxseS4gUGxlYXNlIHVzZSBpdHMgbW9kdWxlIG5hbWUgdG8gdHVybiBvbi9vZmYgdGhlIGNvdW50ZXJzIGluIHRoZSBtb2R1bGUgYXMgYSBncm91cC4ARGVmYXVsdCB2YWx1ZSBpcyBub3QgZGVmaW5lZCBmb3IgdGhpcyBzZXQgb3B0aW9uLiBQbGVhc2Ugc3BlY2lmeSBjb3JyZWN0IGNvdW50ZXIgb3IgbW9kdWxlIG5hbWUuAElubm9EQjogTW9uaXRvciAlcyBpcyBhbHJlYWR5IGVuYWJsZWQuAEludmFsaWQgbW9uaXRvciBjb3VudGVyIDogJXMuAExvYWRMaWJyYXJ5KCIlcyIpIGZhaWxlZDogR2V0TGFzdEVycm9yIHJldHVybnMgJWx1LgAlcy4AJXMuACVzLgAlcy4AJXMuACVzLgBVbmFibGUgdG8gd2FpdCBmb3IgcHJvY2VzcyAlbGxkLgBVbmFibGUgdG8gZGV0ZXJtaW5lIGlmIGRhZW1vbiBpcyBydW5uaW5nOiAlcyAocmM9JWQpLgAlcwBbRkFUQUxdIElubm9EQjogJXMAVGhlIHN5bnRheCAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlICVzIGluc3RlYWQuAFRoZSBzeW50YXggJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AJXMAQmluYXJ5IGxvZ2dpbmcgbm90IHBvc3NpYmxlLiBNZXNzYWdlOiAlcy4ARmFpbGVkIHRvIHNldCBwZXJzaXN0ZWQgb3B0aW9ucy4AQ2Fubm90IGFjcXVpcmUgc3BlY2lmaWVkIHNlcnZpY2UgaW1wbGVtZW50YXRpb246ICclLjE5MnMnLgBJbnZhbGlkIFZDUFUgcmFuZ2UgJXUtJXUuAEludmFsaWQgY3B1IGlkICV1LgBHb3QgZXJyb3IgJWQgZHVyaW5nIEZMVVNIX0xPR1MuAFByb2JsZW0gd2hpbGUgZHJvcHBpbmcgZGF0YWJhc2UuIENhbid0IHJlbW92ZSBkYXRhYmFzZSBkaXJlY3RvcnkgKCVzKS4gUGxlYXNlIHJlbW92ZSBpdCBtYW51YWxseS4AVGhlIG9wdGlvbiBleHBpcmVfbG9nc19kYXlzIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggb3B0aW9uIGJpbmxvZ19leHBpcmVfbG9nc19zZWNvbmRzLiBUaGVyZWZvcmUsIHZhbHVlIG9mIGV4cGlyZV9sb2dzX2RheXMgaXMgaWdub3JlZC4AbWFsZm9ybWVkIG9yIHZlcnkgb2xkIHJlbGF5IGxvZyB3aGljaCBkb2VzIG5vdCBoYXZlIEZvcm1hdERlc2NyaXB0b3IuAFVwZ3JhZGUgb2YgdmlldyAnJXMuJXMnIGZhaWxlZC4gUmUtY3JlYXRlIHRoZSB2aWV3IHdpdGggdGhlIGV4cGxpY2l0IGNvbHVtbiBuYW1lIGxlc3NlciB0aGFuIDY0IGNoYXJhY3RlcnMuAFRhYmxlIHVwZ3JhZGUgcmVxdWlyZWQgZm9yIGAlLS42NHNgLmAlLS42NHNgLiBQbGVhc2UgZHVtcC9yZWxvYWQgdGFibGUgdG8gZml4IGl0IQBFcnJvciBpbiB1cGRhdGluZyB2ZXJzaW9uIG51bWJlciBpbiAlcyB0YWJsZXNwYWNlLgBLZXlyaW5nIG1pZ3JhdGlvbiBmYWlsZWQuAEtleXJpbmcgbWlncmF0aW9uIHN1Y2Nlc3NmdWwuAFJlY2VpdmVkIFJFU1RBUlQgZnJvbSB1c2VyICVzLiAgUmVzdGFydGluZyBteXNxbGQgKFZlcnNpb246ICVzKS4ARGlmZmVyZW50IGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgc2V0dGluZ3MgZm9yIHNlcnZlciAoJyV1JykgYW5kIGRhdGEgZGljdGlvbmFyeSAoJyV1JykuAERhdGEgZGljdGlvbmFyeSBpbml0aWFsaXppbmcgdmVyc2lvbiAnJXUnLgBEYXRhIGRpY3Rpb25hcnkgcmVzdGFydGluZyB2ZXJzaW9uICcldScuAERhdGEgZGljdGlvbmFyeSB1cGdyYWRpbmcgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1Jy4ARGF0YSBkaWN0aW9uYXJ5IHVwZ3JhZGUgcHJvaGliaXRlZCBieSB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiAnLS1ub19kZF91cGdyYWRlJy4AVXBncmFkaW5nIHRoZSBkYXRhIGRpY3Rpb25hcnkgZnJvbSBkaWN0aW9uYXJ5IHZlcnNpb24gJyV1JyBpcyBub3Qgc3VwcG9ydGVkLgBVcGdyYWRpbmcgdGhlIGRhdGEgZGljdGlvbmFyeSBmYWlsZWQsIHRlbXBvcmFyeSBzY2hlbWEgbmFtZSAnJS0uMTkycycgbm90IGF2YWlsYWJsZS4ARGF0YSBkaWN0aW9uYXJ5IG1pbm9yIGRvd25ncmFkZSBmcm9tIHZlcnNpb24gJyV1JyB0byAnJXUnLgBNaW5vciBkb3duZ3JhZGUgb2YgdGhlIERhdGEgZGljdGlvbmFyeSBmcm9tIGRpY3Rpb25hcnkgdmVyc2lvbiAnJXUnIGlzIG5vdCBzdXBwb3J0ZWQuAE5vIGRhdGEgZGljdGlvbmFyeSB2ZXJzaW9uIG51bWJlciBmb3VuZC4AVGhyZWFkIHBvb2wgbm90IHN1cHBvcnRlZCwgcmVxdWlyZXMgYSBtaW5pbXVtIG9mICVzLgB0aHJlYWRfcG9vbF9zaXplPTAgbWVhbnMgdGhyZWFkIHBvb2wgZGlzYWJsZWQsIEFsbG93ZWQgcmFuZ2Ugb2YgdGhyZWFkX3Bvb2xfc2l6ZSBpcyAlZC0lZC4AdGhyZWFkX3Bvb2xfc2l6ZT0lbHUgaXMgdG9vIGhpZ2gsICVkIGlzIG1heGltdW0sIHRocmVhZCBwb29sIGlzIGRpc2FibGVkLiBBbGxvd2VkIHJhbmdlIG9mIHRocmVhZF9wb29sX3NpemUgaXMgJWQtJWQuAHRocmVhZF9wb29sX2FsZ29yaXRobSBjYW4gYmUgc2V0IHRvIDAgYW5kIDEsIDAgaW5kaWNhdGVzIHRoZSBkZWZhdWx0IGxvdyBjb25jdXJyZW5jeSBhbGdvcml0aG0sIDEgbWVhbnMgYSBoaWdoIGNvbmN1cnJlbmN5IGFsZ29yaXRobS4AdGhyZWFkX3Bvb2xfc3RhbGxfbGltaXQgY2FuIGJlICVkIGF0IG1pbmltdW0gYW5kICVkIGF0IG1heGltdW0sIHNtYWxsZXIgdmFsdWVzIHdvdWxkIHJlbmRlciB0aGUgdGhyZWFkIHBvb2wgZmFpcmx5IHVzZWxlc3MgYW5kIGhpZ2hlciB2YWx1ZXMgY291bGQgbWFrZSBpdCBwb3NzaWJsZSB0byBoYXZlIHVuZGV0ZWN0ZWQgZGVhZGxvY2sgaXNzdWVzIGluIHRoZSBNeVNRTCBTZXJ2ZXIuAEludmFsaWQgdmFsdWUgb2YgdGhyZWFkX3Bvb2xfcHJpb19raWNrdXBfdGltZXIgc3BlY2lmaWVkLiBWYWx1ZSBvZiB0aHJlYWRfcG9vbF9wcmlvX2tpY2t1cF90aW1lciBzaG91bGQgYmUgaW4gcmFuZ2UgMC00Mjk0OTY3Mjk0LgB0aHJlYWRfcG9vbF9tYXhfdW51c2VkX3RocmVhZHMgY2Fubm90IGJlIHNldCBoaWdoZXIgdGhhbiAlZC4ARmFpbGVkIHRvIGluc3RhbnRpYXRlIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgb2JqZWN0LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQgcG9vbCBwbHVnaW4uAFRocmVhZCBwb29sIHBsdWdpbiBzdGFydGVkIHN1Y2Nlc3NmdWxseSB3aXRoIHBhcmFtZXRlcnM6IHRocmVhZF9wb29sX3NpemUgPSAlbHUsIHRocmVhZF9wb29sX2FsZ29yaXRobSA9ICVzLCB0aHJlYWRfcG9vbF9zdGFsbF9saW1pdCA9ICV1LCB0aHJlYWRfcG9vbF9wcmlvX2tpY2t1cF90aW1lciA9ICV1LCB0aHJlYWRfcG9vbF9tYXhfdW51c2VkX3RocmVhZHMgPSAldSwgdGhyZWFkX3Bvb2xfaGlnaF9wcmlvcml0eV9jb25uZWN0aW9uID0gJWQuAENhbid0IHNldHVwIGNvbm5lY3Rpb24gdGVhcmRvd24gdGhyZWFkLXNwZWNpZmljIGRhdGEuAENyZWF0aW9uIG9mIGNvbm5lY3QgaGFuZGxlciB0aHJlYWQgZmFpbGVkLgBGYWlsZWQgdG8gY3JlYXRlIHRoZCBhbmQgYXV0aGVudGljYXRlIGNvbm5lY3Rpb24uAEZhaWxlZCB0byBwcm9jZXNzIGNvbm5lY3Rpb24gZXZlbnQuAENhbid0IGNyZWF0ZSBwb29sIHRocmVhZCAoZXJyb3IgJWQsIGVycm5vOiAlZCkuACUuKnMuAHRwX2dyb3VwX2xvd19sZXZlbF9pbml0KCkgZmFpbGVkLgBSZWFybSBmYWlsZWQgZXZlbiBhZnRlciAzMCBzZWNvbmRzLCBjYW4ndCBjb250aW51ZSB3aXRob3V0IG5vdGlmeSBzb2NrZXQuACVzOiAlcyBidWZmZXIgaXMgdG9vIHNtYWxsAE1lY2FiIHYlcyBpcyBub3Qgc3VwcG9ydGVkLCB0aGUgbG93ZXN0IHZlcnNpb24gc3VwcG9ydGVkIGlzIHYlcy4ATWVjYWIgdiVzIGlzIG5vdCB2ZXJpZmllZCwgdGhlIGhpZ2hlc3QgdmVyc2lvbiBzdXBwb3J0ZWQgaXMgdiVzLgBNZWNhYjogVHJ5aW5nIGNyZWF0ZU1vZGVsKCVzKS4ATWVjYWI6IGNyZWF0ZU1vZGVsKCkgZmFpbGVkOiAlcy4ATWVjYWI6IGNyZWF0ZVRhZ2dlcigpIGZhaWxlZDogJXMuAE1lY2FiOiBVbnN1cHBvcnRlZCBkaWN0aW9uYXJ5IGNoYXJzZXQgJXMuAE1lY2FiOiBMb2FkZWQgZGljdGlvbmFyeSBjaGFyc2V0IGlzICVzLgBNZWNhYjogcGFyc2UoKSBmYWlsZWQ6ICVzLgBNZWNhYjogcGFyc2UoKSBmYWlsZWQ6IG91dCBvZiBtZW1vcnkuAE1lY2FiOiBjcmVhdGVMYXR0aWNlKCkgZmFpbGVkOiAlcy4ALS0tPiAlcyBlbnRlci4APC0tLSAlcyBleGl0ICglZCkuADwtLS0gJXMgZXhpdCAoJXMpLgA8LS0tICVzIGV4aXQuAFNlbWktc3luYyByZXBsaWNhdGlvbiBpbml0aWFsaXplZCBmb3IgdHJhbnNhY3Rpb25zLgAlczogdHJhbnNhY3Rpb24gbm9kZSBhbGxvY2F0aW9uIGZhaWxlZCBmb3I6ICglcywgJWx1KS4AJXM6IGJpbmxvZyB3cml0ZSBvdXQtb2Ytb3JkZXIsIHRhaWwgKCVzLCAlbHUpLCBuZXcgbm9kZSAoJXMsICVsdSkuACVzOiBpbnNlcnQgKCVzLCAlbHUpIGluIGVudHJ5KCV1KS4AJXM6IHByb2JlICglcywgJWx1KSBpbiBlbnRyeSgldSkuACVzOiBjbGVhcmVkIGFsbCBub2Rlcy4AJXM6IGNsZWFyZWQgJWQgbm9kZXMgYmFjayB1bnRpbCBwb3MgKCVzLCAlbHUpLgBSZWFkIHNlbWktc3luYyByZXBseSBtYWdpYyBudW1iZXIgZXJyb3IuAFJlYWQgc2VtaS1zeW5jIHJlcGx5IGxlbmd0aCBlcnJvcjogcGFja2V0IGlzIHRvbyBzbWFsbC4AUmVhZCBzZW1pLXN5bmMgcmVwbHkgYmlubG9nIGZpbGUgbGVuZ3RoIHRvbyBsYXJnZS4AJXM6IEdvdCByZXBseSglcywgJWx1KSBmcm9tIHNlcnZlciAldS4AJXMgY2FsbGVkIHR3aWNlLgBTZW1pLXN5bmMgcmVwbGljYXRpb24gZW5hYmxlZCBvbiB0aGUgc291cmNlLgBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IHRvIGVuYWJsZSBzZW1pLXN5bmMgb24gdGhlIHNvdXJjZS4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIGRpc2FibGVkIG9uIHRoZSBzb3VyY2UuAFNFTUlTWU5DOiBGb3JjZWQgc2h1dGRvd24uIFNvbWUgdXBkYXRlcyBtaWdodCBub3QgYmUgcmVwbGljYXRlZC4AJXM6IEdvdCByZXBseSBhdCAoJXMsICVsdSkuACVzOiBzaWduYWwgYWxsIHdhaXRpbmcgdGhyZWFkcy4AJXM6IHdhaXQgcG9zICglcywgJWx1KSwgcmVwbCglZCkuACVzOiBCaW5sb2cgcmVwbHkgaXMgYWhlYWQgKCVzLCAlbHUpLgAlczogbW92ZSBiYWNrIHdhaXQgcG9zaXRpb24gKCVzLCAlbHUpLgAlczogaW5pdCB3YWl0IHBvc2l0aW9uICglcywgJWx1KS4AJXM6IHdhaXQgJWx1IG1zIGZvciBiaW5sb2cgc2VudCAoJXMsICVsdSkuAFRpbWVvdXQgd2FpdGluZyBmb3IgcmVwbHkgb2YgYmlubG9nIChmaWxlOiAlcywgcG9zOiAlbHUpLCBzZW1pLXN5bmMgdXAgdG8gZmlsZSAlcywgcG9zaXRpb24gJWx1LgBBc3Nlc3NtZW50IG9mIHdhaXRpbmcgdGltZSBmb3IgY29tbWl0VHJ4IGZhaWxlZCBhdCB3YWl0IHBvc2l0aW9uICglcywgJWx1KS4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIHN3aXRjaGVkIE9GRi4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIHN3aXRjaGVkIE9OIGF0ICglcywgJWx1KS4ATm8gZW5vdWdoIHNwYWNlIGluIHRoZSBwYWNrZXQgZm9yIHNlbWktc3luYyBleHRyYSBoZWFkZXIsIHNlbWktc3luYyByZXBsaWNhdGlvbiBkaXNhYmxlZC4AJXM6IHNlcnZlciglZCksICglcywgJWx1KSBzeW5jKCVkKSwgcmVwbCglZCkuAFNlbWktc3luYyBmYWlsZWQgdG8gaW5zZXJ0IHRyYW54X25vZGUgZm9yIGJpbmxvZyBmaWxlOiAlcywgcG9zaXRpb246ICVsdS4AJXM6IFRyYW5zYWN0aW9uIHNraXBwZWQgYXQgKCVzLCAlbHUpLgBTZW1pLXN5bmMgc291cmNlIGZhaWxlZCBvbiBuZXRfZmx1c2goKSBiZWZvcmUgd2FpdGluZyBmb3IgcmVwbGljYSByZXBseS4AVGhlIHJlY2VpdmVkIGFjayBpcyBzbWFsbGVyIHRoYW4gbV9ncmVhdGVzdF9hY2suAEFkZCB0aGUgYWNrIGludG8gc2xvdCAldS4AVXBkYXRlIGFuIGV4c2l0aW5nIGFjayBpbiBzbG90ICV1LgBGYWlsZWQgdG8gc3RhcnQgc2VtaS1zeW5jIEFDSyByZWNlaXZlciB0aHJlYWQsICBjb3VsZCBub3QgY3JlYXRlIHRocmVhZChlcnJubzolZCkuAFN0YXJ0aW5nIGFjayByZWNlaXZlciB0aHJlYWQuAEZhaWxlZCB0byB3YWl0IG9uIHNlbWktc3luYyBkdW1wIHNvY2tldHMsIGVycm9yOiBlcnJubz0lZC4AU3RvcHBpbmcgYWNrIHJlY2VpdmVyIHRocmVhZC4ARmFpbGVkIHRvIHJlZ2lzdGVyIHJlcGxpY2EgdG8gc2VtaS1zeW5jIEFDSyByZWNlaXZlciB0aHJlYWQuAFN0YXJ0ICVzIGJpbmxvZ19kdW1wIHRvIHJlcGxpY2EgKHNlcnZlcl9pZDogJWQpLCBwb3MoJXMsICVsdSkuAFN0b3AgJXMgYmlubG9nX2R1bXAgdG8gcmVwbGljYSAoc2VydmVyX2lkOiAlZCkuAHVucmVnaXN0ZXJfdHJhbnNfb2JzZXJ2ZXIgZmFpbGVkLgB1bnJlZ2lzdGVyX2JpbmxvZ19zdG9yYWdlX29ic2VydmVyIGZhaWxlZC4AdW5yZWdpc3Rlcl9iaW5sb2dfdHJhbnNtaXRfb2JzZXJ2ZXIgZmFpbGVkLgB1bnJlZ2lzdGVyX3JlcGxpY2F0b3IgT0suAFNlbWlzeW5jIHJlcGxpY2Egc29ja2V0IGZkIGlzICV1LiBzZWxlY3QoKSBjYW5ub3QgaGFuZGxlIGlmIHRoZSBzb2NrZXQgZmQgaXMgYmlnZ2VyIHRoYW4gJXUgKEZEX1NFVFNJWkUpLgAlczogcmVwbHkgLSAlZC4ATWlzc2luZyBtYWdpYyBudW1iZXIgZm9yIHNlbWktc3luYyBwYWNrZXQsIHBhY2tldCBsZW46ICVsdS4AUmVwbGljYSBJL08gdGhyZWFkOiBTdGFydCAlcyByZXBsaWNhdGlvbiB0byBzb3VyY2UgJyVzQCVzOiVkJyBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlbHUuACVzOiByZXBseSAoJXMsICVsdSkuAFNlbWktc3luYyByZXBsaWNhIG5ldF9mbHVzaCgpIHJlcGx5IGZhaWxlZC4AU2VtaS1zeW5jIHJlcGxpY2Egc2VuZCByZXBseSBmYWlsZWQ6ICVzICglZCkuAEV4ZWN1dGlvbiBmYWlsZWQgb24gc291cmNlOiAlczsgZXJyb3IgJWQAU291cmNlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHNlbWktc3luYywgZmFsbGJhY2sgdG8gYXN5bmNocm9ub3VzIHJlcGxpY2F0aW9uAFNldCAncnBsX3NlbWlfc3luY19yZXBsaWNhPTEnIG9uIHNvdXJjZSBmYWlsZWQARmFpbGVkIHRvIHN0b3AgYWNrIHJlY2VpdmVyIHRocmVhZCBvbiBteV90aHJlYWRfam9pbiwgZXJybm8oJWQpLgBGYWlsZWQgdG8gcmVhZCB0aGUgZmlyZXdhbGwgdGFibGVzAEZhaWxlZCB0byByZWdpc3RlciBkeW5hbWljIHByaXZpbGVnZXMAU3RhdGVtZW50IHdhcyB0cnVuY2F0ZWQgYW5kIG5vdCByZWNvcmRlZDogJXMAU3RhdGVtZW50IHdpdGggbm8gdGV4dCB3YXMgbm90IHJlY29yZGVkAFNVU1BJQ0lPVVMgU1RBVEVNRU5UIGZyb20gJyVzJy4gUmVhc29uOiAlcyBTdGF0ZW1lbnQ6ICVzAEFDQ0VTUyBERU5JRUQgZm9yICclcycuIFJlYXNvbjogJXMgU3RhdGVtZW50OiAlcwBTa2lwcGVkIHVua25vd24gdXNlciBtb2RlICclcycAUmVsb2FkaW5nIGNhY2hlIGZyb20gZGlzawBGSVJFV0FMTCBSRVNFVCBmb3IgJyVzJwBDb3VudGVycyBhcmUgcmVzZXQgdG8gemVybwAlcwBBdWRpdCBMb2cgcGx1Z2luIHN1cHBvcnRzIGZpbHRlcmluZyBtb2RlLCB3aGljaCBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHlldC4gQXVkaXQgTG9nIHBsdWdpbiB3aWxsIHJ1biBpbiB0aGUgbGVnYWN5IG1vZGUsIHdoaWNoIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLgBQcmV2aW91c2x5IGV4Y2x1ZGUgbGlzdCBpcyB1c2VkLCBub3cgd2Ugc3RhcnQgdXNpbmcgaW5jbHVkZSBsaXN0LCBleGNsdWRlIGxpc3QgaXMgc2V0IHRvIE5VTEwuAENhbm5vdCBzZXQgYXVkaXRfbG9nX3BvbGljeSBzaW11bHRhbmVvdXNseSB3aXRoIGVpdGhlciBhdWRpdF9sb2dfY29ubmVjdGlvbl9wb2xpY3kgb3IgIGF1ZGl0X2xvZ19zdGF0ZW1lbnRfcG9saWN5LCBzZXR0aW5nIGF1ZGl0X2xvZ19jb25uZWN0aW9uX3BvbGljeSBhbmQgYXVkaXRfbG9nX3N0YXRlbWVudF9wb2xpY3kgYmFzZWQgb24gYXVkaXRfbG9nX3BvbGljeS4AQm90aCBpbmNsdWRlIGFuZCBleGNsdWRlIGxpc3RzIHByb3ZpZGVkLCBpbmNsdWRlIGxpc3QgaXMgcHJlZmVycmVkLCBleGNsdWRlIGxpc3QgaXMgc2V0IHRvIE5VTEwuAENvdWxkIG5vdCBhY2Nlc3MgJyVzJyBkaXJlY3RvcnkuAENvdWxkIG5vdCByZW5hbWUgZmlsZSBmcm9tICclcycgdG8gJyVzJy4ARmlsZSAnJXMnIHNob3VsZCBub3QgZXhpc3QuIEl0IG1heSBiZSBpbmNvbXBsZXRlLiBUaGUgc2VydmVyIGNyYXNoZWQuAENvdWxkIG5vdCByZW5hbWUgZmlsZSBmcm9tICclcycgdG8gJyVzJy4gUmVtb3ZlIHRoZSBmaWxlIG1hbnVhbGx5LgBJbmNvbXBsZXRlIGZpbGUgcmVuYW1lZCBmcm9tICclcycgdG8gJyVzJy4ARXJyb3Igd3JpdGluZyBmaWxlICclLS4yMDBzJyAoZXJybm86ICVkIC0gJXMpLgBDb3VsZCBub3QgaW5pdGlhbGl6ZSBhdWRpdCBsb2cgZmlsZSBlbmNyeXB0aW9uLgBDb3VsZCBub3QgaW5pdGlhbGl6ZSBhdWRpdCBsb2cgZmlsZSBjb21wcmVzc2lvbi4AQ291bGQgbm90IGNyZWF0ZSAnJXMnIGZpbGUgZm9yIGF1ZGl0IGxvZ2dpbmcuAEF1ZGl0IGxvZyBmaWxlICglcykgbXVzdCBiZSBtYW51YWxseSByZW5hbWVkIGJlZm9yZSBhdWRpdF9sb2dfZmx1c2ggaXMgc2V0IHRvIHRydWUuACVzAEVycm9yIHBhcnNpbmcgSlNPTiBldmVudC4gRXZlbnQgbm90IGFjY2Vzc2libGUuAEJ1ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCBKU09OIGV2ZW50LiBOdW1iZXIgb2YgZXZlbnRzIHNraXBwZWQ6ICV6dS4AQ291bGQgbm90IG9wZW4gSlNPTiBmaWxlIGZvciByZWFkaW5nLiBSZWFkaW5nIG5leHQgZmlsZSBpZiBleGlzdHMuAEpTT04gZmlsZSBwYXJzaW5nIGVycm9yLiBSZWFkaW5nIG5leHQgZmlsZSBpZiBleGlzdHMASW52YWxpZCBjb2x1bW4gY291bnQgaW4gdGhlICclcy4lcycgdGFibGUuAEludmFsaWQgY29sdW1uIGRlZmluaXRpb24gb2YgdGhlICclcy4lcycgdGFibGUuAENvdWxkIG5vdCBzdG9yZSBmaWVsZCBvZiB0aGUgJXMgdGFibGUuAENvdWxkIG5vdCB1cGRhdGUgJXMgdGFibGUuAENvdWxkIG5vdCBpbnNlcnQgaW50byAlcyB0YWJsZS4AQ291bGQgbm90IGRlbGV0ZSBmcm9tICVzIHRhYmxlLgBDb3VsZCBub3QgaW5pdGlhbGl6ZSAlcyB0YWJsZSBmb3IgcmVhZGluZy4AQ291bGQgbm90IHJlYWQgJXMgdGFibGUuAENvdWxkIG5vdCBjbG9zZSAlcyB0YWJsZSByZWFkaW5nLgBCb3RoIHVzZXIgYW5kIGhvc3QgY29sdW1ucyBvZiAlcyB0YWJsZSBjYW5ub3QgYmUgZW1wdHkuAEZpbHRlcm5hbWUgY29sdW1uIG9mICVzIHRhYmxlIGNhbm5vdCBiZSBlbXB0eS4ARGljdGlvbmFyeSBmaWxlIG5vdCBzcGVjaWZpZWQARGljdGlvbmFyeSBmaWxlIG5vdCBsb2FkZWQARGljdGlvbmFyeSBmaWxlIHNpemUgZXhjZWVkZWQgTUFYX0RJQ1RJT05BUllfRklMRV9MRU5HVEgsIG5vdCBsb2FkZWQARXhjZXB0aW9uIHdoaWxlIHJlYWRpbmcgdGhlIGRpY3Rpb25hcnkgZmlsZQBDYW4ndCByZXRyaWV2ZSB0aGUgJXMgZnJvbSB0aGUgc2VjdXJpdHkgY29udGV4dABDYW4ndCByZXRyaWV2ZSB0aGUgc2VjdXJpdHkgY29udGV4dABFZmZlY3RpdmUgdmFsdWUgb2YgdmFsaWRhdGVfcGFzc3dvcmRfbGVuZ3RoIGlzIGNoYW5nZWQuIE5ldyB2YWx1ZSBpcyAlZAAlcwBSZXdyaXR0ZW4gcXVlcnkgZmFpbGVkIHRvIHBhcnNlOiVzAFN0YXJ0dXAgZmFpbGVkIHdpdGggZXJyb3IgIiVzIgBFeGl0aW5nAEV4aXQgZG9uZQBVc2luZyBTU0wgY29uZmlndXJhdGlvbiBmcm9tIE15U1FMIFNlcnZlcgBVc2luZyBTU0wgY29uZmlndXJhdGlvbiBmcm9tIE15c3FseCBQbHVnaW4ATmVpdGhlciBNeVNRTCBTZXJ2ZXIgbm9yIE15c3FseCBQbHVnaW4gaGFzIHZhbGlkIFNTTCBjb25maWd1cmF0aW9uAFVzaW5nICVzIGZvciBUTFMgY29ubmVjdGlvbnMARm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIFVzaW5nIFNlY3VyZSBDb25uZWN0aW9ucyB3aXRoIFggUGx1Z2luIHNlY3Rpb24gaW4gdGhlIE15U1FMIGRvY3VtZW50YXRpb24AJXMARmFpbGVkIHRvIHBhcnNlIHN0b3JlZCBhdXRoZW50aWNhdGlvbiBzdHJpbmcgZm9yICVzLiBQbGVhc2UgY2hlY2sgaWYgbXlzcWwudXNlciB0YWJsZSBub3QgY29ycnVwdGVkAEVycm9yIGluIGdlbmVyYXRpbmcgbXVsdGktcm91bmQgaGFzaCBmb3IgJXMuIFBsdWdpbiBjYW4gbm90IHBlcmZvcm0gYXV0aGVudGljYXRpb24gd2l0aG91dCBpdC4gVGhpcyBtYXkgYmUgYSB0cmFuc2llbnQgcHJvYmxlbQBBdXRoZW50aWNhdGlvbiByZXF1aXJlcyBlaXRoZXIgUlNBIGtleXMgb3IgU1NMIGVuY3J5cHRpb24AUlNBIGtleSBjaXBoZXIgbGVuZ3RoIG9mICV1IGlzIHRvbyBsb25nLiBNYXggdmFsdWUgaXMgJXUARmFpbGVkIHRvIG9wZW4gdGhlICVzIGZpbHRlciB0YWJsZXMARmFpbGVkIHRvIG9wZW4gJyVzLiVzJyAlcyB0YWJsZQAlcwAlcwAlcwBQYXNzd29yZCBzYWx0IGZvciB1c2VyICclcycgaXMgY29ycnVwdABPdXQgb2YgbWVtb3J5IGZvciBjb21wb25lbnQgc3lzdGVtIHZhcmlhYmxlICclcycuAHZhcmlhYmxlICVzIG9mIGNvbXBvbmVudCAlcyB3YXMgZm9yY2VkIHRvIGJlIHJlYWQtb25seTogc3RyaW5nIHZhcmlhYmxlIHdpdGhvdXQgdXBkYXRlX2Z1bmMgYW5kIFBMVUdJTl9WQVJfTUVNQUxMT0MgZmxhZy4AVW5rbm93biB2YXJpYWJsZSB0eXBlIGNvZGUgMHgleCBpbiBjb21wb25lbnQgJyVzJy4AUGFyc2luZyBvcHRpb25zIGZvciB2YXJpYWJsZSAnJXMnIGZhaWxlZC4AU2V0dGluZyBwZXJzaXN0ZW50IG9wdGlvbnMgZm9yIGNvbXBvbmVudCB2YXJpYWJsZSAnJXMnIGZhaWxlZC4AVGhlIGxvZy1maWx0ZXIgY29tcG9uZW50ICIlcyIgZ290IGNvbmZ1c2VkIGF0ICIlcyIgKHN0YXRlOiAlcykgLi4uAFdhaXRpbmcgdW50aWwgSS9PIHRocmVhZCBmb3IgY2hhbm5lbCAnJXMnIGZpbmlzaCB3cml0aW5nIHRvIGRpc2sgYmVmb3JlIHN0b3BwaW5nLiBGcmVlIHNvbWUgZGlzayBzcGFjZSBvciB1c2UgJ0tJTEwnIHRvIGFib3J0IEkvTyB0aHJlYWQgb3BlcmF0aW9uLiBOb3RpY2UgdGhhdCBhYm9ydGluZyB0aGUgSS9PIHRocmVhZCB3aGlsZSByb3RhdGluZyB0aGUgcmVsYXkgbG9nIG1pZ2h0IGNvcnJ1cHQgdGhlIHJlbGF5IGxvZ3MsIHJlcXVpcmluZyBhIHNlcnZlciByZXN0YXJ0IHRvIGZpeCBpdC4AQ291bGQgbm90IHVzZSAlcyBmb3IgbG9nZ2luZyAoZXJyb3IgJWQgLSAlcykuIFR1cm5pbmcgbG9nZ2luZyBvZmYgZm9yIHRoZSBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgdGhlbiVzIHJlc3RhcnQgdGhlIE15U1FMIHNlcnZlci4AVW5hYmxlIHRvIGNvbGxlY3QgaW5mb3JtYXRpb24gZm9yIGNvbHVtbiAnJS0uMTkycyc6ICUtLjE5MnMuACd1dGY4JyBpcyBjdXJyZW50bHkgYW4gYWxpYXMgZm9yIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgVVRGOE1CNCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCBpbiBvcmRlciB0byBiZSB1bmFtYmlndW91cy4ATkFUSU9OQUwvTkNIQVIvTlZBUkNIQVIgaW1wbGllcyB0aGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzLCB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIENIQVIoeCkgQ0hBUkFDVEVSIFNFVCBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgBBIGNvbW1pdCBmb3IgYW4gYXRvbWljIERETCBzdGF0ZW1lbnQgd2FzIHVuc3VjY2Vzc2Z1bCBvbiB0aGUgc291cmNlIGFuZCB0aGUgcmVwbGljYS4gVGhlIHJlcGxpY2Egc3VwcG9ydHMgYXRvbWljIERETCBzdGF0ZW1lbnRzIGJ1dCB0aGUgc291cmNlIGRvZXMgbm90LCBzbyB0aGUgYWN0aW9uIHRha2VuIGJ5IHRoZSByZXBsaWNhIGFuZCBzb3VyY2UgbWlnaHQgZGlmZmVyLiBDaGVjayB0aGF0IHRoZWlyIHN0YXRlcyBoYXZlIG5vdCBkaXZlcmdlZCBiZWZvcmUgcHJvY2VlZGluZy4AQ29uZmlndXJpbmcgcGVyc2lzdGVkIG9wdGlvbnMgZmFpbGVkOiAiJXMiLgBUaGUgc3RvcmFnZSBlbmdpbmUgJyUtLjE5MnMnIGRvZXMgbm90IHByb3ZpZGUgZHluYW1pYyB0YWJsZSBzdGF0aXN0aWNzAFRoaXMgb3B0aW9uIGNhbm5vdCBiZSBzZXQgJXMuAFRoZSB0YWJsZSAnJS0uMTkycycgbWF5IG5vdCBiZSBjcmVhdGVkIGluIHRoZSByZXNlcnZlZCB0YWJsZXNwYWNlICclLS4xOTJzJy4AU1NMIGZpcHMgbW9kZSBlcnJvcjogJXMAaW5pdF9jb25uZWN0IHZhcmlhYmxlIGlzIGlnbm9yZWQgZm9yIHVzZXI6ICVzIGhvc3Q6ICVzIGR1ZSB0byBleHBpcmVkIHBhc3N3b3JkLgBzcWxfbW9kZT0weCUwOHggaXMgbm90IHN1cHBvcnRlZABPdXQgb2YgbWVtb3J5LgBXcm9uZyBjb2x1bW4gY291bnQgb3IgbmFtZXMgd2hlbiBsb2FkaW5nIHJ1bGVzLgBTb21lIHJ1bGVzIGZhaWxlZCB0byBsb2FkLgBHb3QgZXJyb3IgZnJvbSBzdG9yYWdlIGVuZ2luZSB3aGlsZSByZWZyZXNoaW5nIHJld3JpdGUgcnVsZXMuAEZhaWxlZCB0byBpbml0aWFsaXplIENvbm5lY3Rpb25fZXZlbnRfY29vcmRpbmF0b3IARmFpbGVkIHRvIHVwZGF0ZSBjb25uZWN0aW9uIGRlbGF5IHRyaWdnZXJlZCBzdGF0cwBGYWlsZWQgdG8gcmVzZXQgY29ubmVjdGlvbiBkZWxheSB0cmlnZ2VyZWQgc3RhdHMAVW5leHBlY3RlZCBvcHRpb24gdHlwZSBmb3IgY29ubmVjdGlvbiBkZWxheS4ARmFpbGVkIHRvIGluaXRpYWxpemUgQ29ubmVjdGlvbl9kZWxheV9hY3Rpb24AQ291bGQgbm90IHNldCAlcyBkZWxheSBmb3IgY29ubmVjdGlvbiBkZWxheS4ARmFpbGVkIHRvIHVwZGF0ZSBjb25uZWN0aW9uIGRlbGF5IGhhc2ggZm9yIGFjY291bnQgOiAlcwAlczogRm9yY2Ugc3RvcHBpbmcgY2xpZW50IGJlY2F1c2UgZXhjZXB0aW9uIG9jY3VycmVkOiAlcwAlcy4ldTogTWF4aW11bSBudW1iZXIgb2YgYXV0aGVudGljYXRpb24gYXR0ZW1wdHMgcmVhY2hlZCwgbG9naW4gZmFpbGVkLgBFcnJvciBhbGxvY2F0aW5nIEJ1ZmZlcl9wYWdlOiAlcwBEZXRlY3RlZCAldSBoYW5naW5nIGNsaWVudChzKQBFcnJvciBhY2NlcHRpbmcgY2xpZW50AEludGVybmFsIGVycm9yIHNjaGVkdWxpbmcgY2xpZW50IGZvciBleGVjdXRpb24AUHJlcGFyYXRpb24gb2YgSS9PIGludGVyZmFjZXMgZmFpbGVkLCBYIFByb3RvY29sIHdvbid0IGJlIGFjY2Vzc2libGUAc3J2X3Nlc3Npb25faW5pdF90aHJlYWQgcmV0dXJuZWQgZXJyb3IAVW5hYmxlIHRvIHVzZSB1c2VyIG15c3FsLnNlc3Npb24gYWNjb3VudCB3aGVuIGNvbm5lY3RpbmcgdGhlIHNlcnZlciBmb3IgaW50ZXJuYWwgcGx1Z2luIHJlcXVlc3RzLgBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZSB0aGUgWCBQbHVnaW4gVXNlciBBY2NvdW50IHNlY3Rpb24gaW4gdGhlIE15U1FMIGRvY3VtZW50YXRpb24AJXM6IFVuZXhwZWN0ZWQgZXhjZXB0aW9uIGRpc3BhdGNoaW5nIGNvbW1hbmQ6ICVzAEV4Y2VwdGlvbiBpbiBwb3N0OiAlcwBJbnRlcm5hbCBlcnJvciBzY2hlZHVsaW5nIHRhc2sARXhjZXB0aW9uIGluIGV2ZW50IGxvb3A6ICIlcyI6ICVzAFNldHVwIG9mICVzIGZhaWxlZCwgJXMAJXMARmFpbGVkIGF0IFNTTCBjb25maWd1cmF0aW9uOiAiJXMiAEVycm9yIGR1cmluZyBTU0wgaGFuZHNoYWtlIGZvciBjbGllbnQgY29ubmVjdGlvbiAoJWkpACVzOiBFcnJvciBkdXJpbmcgU1NMIGhhbmRzaGFrZQAlczogRXJyb3IgY3JlYXRpbmcgc2Vzc2lvbiBmb3IgY29ubmVjdGlvbiBmcm9tICVzACVzOiBFcnJvciBpbml0aWFsaXppbmcgc2Vzc2lvbiBmb3IgY29ubmVjdGlvbjogJXMAJXM6IE1lc3NhZ2Ugb2Ygc2l6ZSAldSByZWNlaXZlZCwgZXhjZWVkaW5nIHRoZSBsaW1pdCBvZiAlaQBNZXNzYWdlIGlzIG5vdCBwcm9wZXJseSBpbml0aWFsaXplZDogJXMAVW5hYmxlIHRvIHNldCBtaW5pbWFsIG51bWJlciBvZiB3b3JrZXJzIHRvICV1OyBhY3R1YWwgdmFsdWUgaXMgJWkAVW5hYmxlIHRvIGFjY2VwdCBjb25uZWN0aW9uLCBkaXNjb25uZWN0aW5nIGNsaWVudABBbGwgSS9PIGludGVyZmFjZXMgYXJlIGRpc2FibGVkLCBYIFByb3RvY29sIHdvbid0IGJlIGFjY2Vzc2libGUAJXM6IEludmFsaWQgbWVzc2FnZSAlaSByZWNlaXZlZCBkdXJpbmcgY2xpZW50IGluaXRpYWxpemF0aW9uACVzOiBjbG9zaW5nIGNsaWVudCBiZWNhdXNlIG9mIHNodXRkb3duIChzdGF0ZTogJWkpACVzOiBFcnJvciByZWFkaW5nIGZyb20gc29ja2V0ICVzICglaSkAJXM6IHBlZXIgZGlzY29ubmVjdGVkIHdoaWxlIHJlYWRpbmcgbWVzc2FnZSBib2R5AGNsaWVudF9pZDolcyAtICVzIHdoaWxlIHJlYWRpbmcgZnJvbSBzb2NrZXQsIGNsb3NpbmcgY29ubmVjdGlvbgAlcy4ldTogSW52YWxpZCBhdXRoZW50aWNhdGlvbiBtZXRob2QgJXMAJXM6IFVuZXhwZWN0ZWQgbWVzc2FnZSBvZiB0eXBlICVpIHJlY2VpdmVkIGR1cmluZyBhdXRoZW50aWNhdGlvbgBFcnJvciB3cml0aW5nIHRvIGNsaWVudDogJXMgKCVpKQBTY2hlZHVsZXIgIiVzIiBzdGFydGVkLgBTY2hlZHVsZXIgIiVzIiBzdG9wcGVkLgBQbGVhc2Ugc2VlIHRoZSBNeVNRTCBkb2N1bWVudGF0aW9uIGZvciAnJXMnIHN5c3RlbSB2YXJpYWJsZXMgdG8gZml4IHRoZSBlcnJvcgBYIFBsdWdpbiByZWFkeSBmb3IgY29ubmVjdGlvbnMuICVzAFJldHJ5aW5nIGBiaW5kKClgIG9uIFRDUC9JUCBwb3J0ICVpAFNodXRkb3duIHRyaWdnZXJlZCBieSBteXNxbGQgYWJvcnQgZmxhZwBVc2luZyAlcyBhY2NvdW50IGZvciBhdXRoZW50aWNhdGlvbiB3aGljaCBoYXMgYWxsIHJlcXVpcmVkIHBlcm1pc3Npb25zAFVzaW5nIGV4aXN0aW5nICVzIGFjY291bnQgZm9yIGF1dGhlbnRpY2F0aW9uLiBJbmNvbXBsZXRlIGdyYW50cyB3aWxsIGJlIGZpeGVkAFNlcnZlciBzdGFydHMgaGFuZGxpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMAU3RvcHBlZCBoYW5kbGluZyBpbmNvbWluZyBjb25uZWN0aW9ucwAlczogQ291bGQgbm90IGludGVycnVwdCBjbGllbnQgc2Vzc2lvbgAlczogcmVsZWFzZSB0cmlnZ2VyZWQgYnkgdGltZW91dCBpbiBzdGF0ZTolaQBJUHY2IGlzIGF2YWlsYWJsZQBVTklYIHNvY2tldCBub3QgY29uZmlndXJlZABLaWxsIGNsaWVudDogJWkgJXMAQ291bGQgbm90IGdldCBzZWN1cml0eSBjb250ZXh0IGZvciBzZXNzaW9uAFVuYWJsZSB0byBzd2l0Y2ggc2VjdXJpdHkgY29udGV4dCB0byByb290AEVycm9yIGNsb3NpbmcgU1FMIHNlc3Npb24ARXJyb3IgZXhlY3V0aW5nIGFkbWluIGNvbW1hbmQgJXM6ICVzAEVycm9yIGV4ZWN1dGluZyBlbXB0eSBhZG1pbiBjb21tYW5kAFVuYWJsZSB0byByZXRyaWV2ZSBzeXN0ZW0gdmFyaWFibGUgJyVzJwBVbmFibGUgdG8gZ2V0IGNyZWF0aW9uIHN0bXQgZm9yIGNvbGxlY3Rpb24gJyVzJzsgcXVlcnkgcmVzdWx0IHNpemU6ICVsdQBVbmFibGUgdG8gZ2V0IGVuZ2luZSBpbmZvIGZvciBjb2xsZWN0aW9uICclcyc7IGNyZWF0aW9uIHN0bXQ6ICVzAEVycm9yIGdldHRpbmcgcmVzdWx0IGRhdGE6ICVzAENhcGFiaWxpdHkgZXhwaXJlZCBwYXNzd29yZCBmYWlsZWQgd2l0aCBlcnJvcjogJXMARmFpbGVkIHRvIHNldCBTT19SRVVTRUFERFIgZmxhZyAoZXJyb3I6ICVkKS4AQ291bGQgbm90IG9wZW4gaW50ZXJuYWwgTXlTUUwgc2Vzc2lvbgBVbmFibGUgdG8gc3dpdGNoIGNvbnRleHQgdG8gdXNlciAlcwBDYW4ndCB1bnJlZ2lzdGVyICclcycgdXNlciBkZWZpbmVkIGZ1bmN0aW9uACVzOiBnZXQgcGVlciBhZGRyZXNzIGZhaWxlZCwgY2FuJ3QgcmVzb2x2ZSBJUCB0byBob3N0bmFtZQBDYXBhYmlsaXR5IGNsaWVudCBpbnRlcmFjdGl2ZSBmYWlsZWQgd2l0aCBlcnJvcjogJXMARmFpbGVkIHRvIHJlc2V0IElQVjZfVjZPTkxZIGZsYWcgKGVycm9yOiAlZCkuIFRoZSBzZXJ2ZXIgd2lsbCBsaXN0ZW4gdG8gSVB2NiBhZGRyZXNzZXMgb25seS4ASW52YWxpZCBrZXkgdHlwZQBJbnZhbGlkIGtleSBsZW5ndGggZm9yIGdpdmVuIGJsb2NrIGNpcGhlcgBDb3VsZCBub3QgY3JlYXRlIGtleXJpbmcgZGlyZWN0b3J5LiBUaGUga2V5cmluZ19maWxlIHdpbGwgc3RheSB1bnVzYWJsZSB1bnRpbCBjb3JyZWN0IHBhdGggdG8gdGhlIGtleXJpbmcgZGlyZWN0b3J5IGdldHMgcHJvdmlkZWQAa2V5cmluZ19maWxlIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuIFBsZWFzZSBjaGVjayBpZiB0aGUga2V5cmluZ19maWxlX2RhdGEgcG9pbnRzIHRvIHJlYWRhYmxlIGtleXJpbmcgZmlsZSBvciBrZXlyaW5nIGZpbGUgY2FuIGJlIGNyZWF0ZWQgaW4gdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4gVGhlIGtleXJpbmdfZmlsZSB3aWxsIHN0YXkgdW51c2FibGUgdW50aWwgY29ycmVjdCBwYXRoIHRvIHRoZSBrZXlyaW5nIGZpbGUgZ2V0cyBwcm92aWRlZABrZXlyaW5nX2ZpbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSB0aGUgcGx1Z2luLgBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBrZXkgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUga2V5cmluZ19maWxlIHBsdWdpbgBFcnJvciB3aGlsZSAlcyBrZXk6IGludmFsaWQga2V5X3R5cGUARXJyb3Igd2hpbGUgJXMga2V5OiBrZXlfaWQgY2Fubm90IGJlIGVtcHR5AEZhaWxlZCB0byAlcyBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSAlcyBwbHVnaW4ASW5jb3JyZWN0IEtleXJpbmcgZmlsZQBGb3VuZCBtYWxmb3JtZWQga2V5cmluZyBiYWNrdXAgZmlsZSAtIHJlbW92aW5nIGl0AEVycm9yIHdoaWxlIHJlc3RvcmluZyBrZXlyaW5nIGZyb20gYmFja3VwIGZpbGUgY2Fubm90IG92ZXJ3cml0ZSBrZXlyaW5nIHdpdGggYmFja3VwAEVycm9yIHdoaWxlIGZsdXNoaW5nIGluLW1lbW9yeSBrZXlyaW5nIGludG8ga2V5cmluZyBmaWxlAEVycm9yIHdoaWxlIHJlYWRpbmcgc3RhdCBmb3IgJXMuUGxlYXNlIGNoZWNrIGlmIGZpbGUgJXMgd2FzIG5vdCByZW1vdmVkLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgcmVtb3ZlIGZpbGUgJXMgT1MgcmV0dW5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgdHJ1bmNhdGUgZmlsZSAlcy4gT1MgcmV0dW5lZCB0aGlzIGVycm9yOiAlcwBVbmtub3duIGVycm9yICVkAGtleXJpbmdfZmlsZV9kYXRhIGNhbm5vdCBiZSBzZXQgdG8gbmV3IHZhbHVlIGFzIHRoZSBrZXlyaW5nIGZpbGUgY2Fubm90IGJlIGNyZWF0ZWQvYWNjZXNzZWQgaW4gdGhlIHByb3ZpZGVkIHBhdGgAJXMARXJyb3Igd2hpbGUgbG9hZGluZyBrZXlyaW5nIGNvbnRlbnQuIFRoZSBrZXlyaW5nIG1pZ2h0IGJlIG1hbGZvcm1lZABDb3VsZCBub3QgZmx1c2gga2V5cyB0byBrZXlyaW5nAENvdWxkIG5vdCBmbHVzaCBrZXlzIHRvIGtleXJpbmcncyBiYWNrdXAARXJyb3Igd2hpbGUgZmV0Y2hpbmcga2V5OiBrZXlfaWQgY2Fubm90IGJlIGVtcHR5AEVycm9yIHdoaWxlIHJlbW92aW5nIGtleToga2V5X2lkIGNhbm5vdCBiZSBlbXB0eQBGb3Iga2V5cmluZ19va3YgdG8gYmUgaW5pdGlhbGl6ZWQsIHBsZWFzZSBwb2ludCBrZXlyaW5nX29rdl9jb25mX2RpciB2YXJpYWJsZSB0byBhIGRpcmVjdG9yeSB3aXRoIE9yYWNsZSBLZXkgVmF1bHQgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBzc2wgbWF0ZXJpYWxzAGtleXJpbmdfb2t2IGluaXRpYWxpemF0aW9uIGZhaWx1cmUuIFBsZWFzZSBjaGVjayB0aGF0IHRoZSBrZXlyaW5nX29rdl9jb25mX2RpciBwb2ludHMgdG8gYSByZWFkYWJsZSBkaXJlY3RvcnkgYW5kIHRoYXQgdGhlIGRpcmVjdG9yeSBjb250YWlucyBPcmFjbGUgS2V5IFZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgc3NsIG1hdGVyaWFscy4gUGxlYXNlIGFsc28gY2hlY2sgdGhhdCBPcmFjbGUgS2V5IFZhdWx0IGlzIHVwIGFuZCBydW5uaW5nLgBrZXlyaW5nX29rdiBpbml0aWFsaXphdGlvbiBmYWlsdXJlIGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIHRoZSBwbHVnaW4ASW52YWxpZCBrZXkgdHlwZQBJbnZhbGlkIGtleSBsZW5ndGggZm9yIGdpdmVuIGJsb2NrIGNpcGhlcgBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBrZXkgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUga2V5cmluZ19va3YgcGx1Z2luAENvdWxkIG5vdCBmaW5kIGVudHJ5IGZvciBzZXJ2ZXIgaW4gY29uZmlndXJhdGlvbiBmaWxlICVzAENvdWxkIG5vdCBmaW5kIGVudHJ5IGZvciBzdGFuZGJ5IHNlcnZlciBpbiBjb25maWd1cmF0aW9uIGZpbGUgJXMAQ291bGQgbm90IHBhcnNlIHRoZSAlcyBmaWxlIHByb3ZpZGVkAENvdWxkIG5vdCBsb2FkIGtleXMnIHVpZHMgZnJvbSB0aGUgT0tWIHNlcnZlcgBDb3VsZCBub3QgaW5pdGlhbGl6ZSBzc2wgbGF5ZXIAQ291bGQgbm90IGluaXRpYWxpemUgT0tWIGNsaWVudABDb3VsZCBub3QgY29ubmVjdCB0byB0aGUgT0tWIHNlcnZlcgBDb3VsZCBub3QgcmVtb3ZlIHRoZSBrZXkAQ291bGQgbm90IGFkZCBhdHRyaWJ1dGUsIGF0dHJpYnV0ZV9uYW1lPSVzIGF0dHJpYnV0ZSB2YWx1ZT0lcwBDb3VsZCBub3QgZ2VuZXJhdGUgdGhlIGtleS4AQ291bGQgbm90IHN0b3JlIHRoZSBrZXkuAENvdWxkIG5vdCBhY3RpdmF0ZSB0aGUga2V5LgBDb3VsZCBub3QgZmV0Y2ggZ2VuZXJhdGVkIGtleQBDb3VsZCBub3Qgc3RvcmUvZ2VuZXJhdGUgdGhlIGtleSAtIGZhaWxlZCB0byBzZXQga2V5IGF0dHJpYnV0ZSB4LWtleS1yZWFkeQBDb3VsZCBub3QgcmV0cmlldmUga2V5IHNpZ25hdHVyZSBmcm9tIGN1c3RvbSBhdHRyaWJ1dGVzAENvdWxkIG5vdCByZXRyaWV2ZSBrZXkgZnJvbSBPS1YARXJyb3IgbG9hZGluZyB0cnVzdCBzdG9yZQBFcnJvciBzZXR0aW5nIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlLgBFcnJvciBzZXR0aW5nIHRoZSBrZXkgZmlsZS4AUHJpdmF0ZSBrZXkgZG9lcyBub3QgbWF0Y2ggdGhlIGNlcnRpZmljYXRlIHB1YmxpYyBrZXkASW5jb3JyZWN0IEtleXJpbmcgZmlsZQBLZXlyaW5nX2VuY3J5cHRlZF9maWxlIGRlY3J5cHRpb24gZmFpbGVkLiBQbGVhc2UgdmVyaWZ5IC0ta2V5cmluZy1lbmNyeXB0ZWQtZmlsZS1wYXNzd29yZCBvcHRpb24gdmFsdWUuAEZvdW5kIG1hbGZvcm1lZCBrZXlyaW5nIGJhY2t1cCBmaWxlIC0gcmVtb3ZpbmcgaXQARXJyb3Igd2hpbGUgcmVzdG9yaW5nIGtleXJpbmcgZnJvbSBiYWNrdXAgZmlsZSBjYW5ub3Qgb3ZlcndyaXRlIGtleXJpbmcgd2l0aCBiYWNrdXAARXJyb3Igd2hpbGUgZmx1c2hpbmcgaW4tbWVtb3J5IGtleXJpbmcgaW50byBrZXlyaW5nIGZpbGUAS2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBlbmNyeXB0aW9uIGZhaWxlZC4gUGxlYXNlIHZlcmlmeSAtLWtleXJpbmctZW5jcnlwdGVkLWZpbGUtcGFzc3dvcmQgb3B0aW9uIHZhbHVlLgBrZXlyaW5nX2VuY3J5cHRlZF9maWxlX2RhdGEgY2Fubm90IGJlIHNldCB0byBuZXcgdmFsdWUgYXMgdGhlIGtleXJpbmcgZmlsZSBjYW5ub3QgYmUgY3JlYXRlZC9hY2Nlc3NlZCBpbiB0aGUgcHJvdmlkZWQgcGF0aABDb3VsZCBub3QgY3JlYXRlIGtleXJpbmcgZGlyZWN0b3J5IFRoZSBrZXlyaW5nX2VuY3J5cHRlZF9maWxlIHdpbGwgc3RheSB1bnVzYWJsZSB1bnRpbCBjb3JyZWN0IHBhdGggdG8gdGhlIGtleXJpbmcgZGlyZWN0b3J5IGdldHMgcHJvdmlkZWQAVGhlIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGVfcGFzc3dvcmQgbXVzdCBiZSBzZXQgdG8gYSB2YWxpZCB2YWx1ZS4AVG9vIGxvbmcga2V5cmluZ19lbmNyeXB0ZWRfZmlsZV9wYXNzd29yZCB2YWx1ZS4Aa2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBpbml0aWFsaXphdGlvbiBmYWlsdXJlLiBQbGVhc2UgY2hlY2sgaWYgdGhlIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGVfZGF0YSBwb2ludHMgdG8gcmVhZGFibGUga2V5cmluZyBmaWxlIG9yIGtleXJpbmcgZmlsZSBjYW4gYmUgY3JlYXRlZCBpbiB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uIG9yIHBhc3N3b3JkIHRvIGRlY3J5cHQga2V5cmluZyBmaWxlIGlzIGNvcnJlY3QuAGtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSB0aGUgcGx1Z2luAEZhaWxlZCB0byBnZW5lcmF0ZSBhIGtleSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSBrZXlyaW5nX2VuY3J5cHRlZF9maWxlIHBsdWdpbgBrZXlyaW5nX2F3c19jbWtfaWQgY2Fubm90IGJlIHNldCB0byB0aGUgbmV3IHZhbHVlIGFzIEFXUyBLTVMgc2VlbXMgdG8gbm90IHVuZGVyc3RhbmQgdGhlIGlkIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgdGhhdCBDTUsgaWQgcHJvdmlkZWQgaXMgY29ycmVjdC4Aa2V5cmluZ19hd3NfcmVnaW9uIGNhbm5vdCBiZSBzZXQgdG8gdGhlIG5ldyB2YWx1ZSBhcyBBV1MgS01TIHNlZW1zIHRvIG5vdCB1bmRlcnN0YW5kIHRoZSByZWdpb24gcHJvdmlkZWQuIFBsZWFzZSBjaGVjayB0aGF0IHJlZ2lvbiBwcm92aWRlZCBpcyBjb3JyZWN0LgBDb3VsZCBub3Qgb3BlbiBrZXlyaW5nX2F3cyBjb25maWd1cmF0aW9uIGZpbGU6ICVzLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgcmVhZCBBV1MgYWNjZXNzIGtleSBpZCBmcm9tIGtleXJpbmdfYXdzIGNvbmZpZ3VyYXRpb24gZmlsZTogJXMuIE9TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByZWFkIEFXUyBhY2Nlc3Mga2V5IGZyb20ga2V5cmluZ19hd3MgY29uZmlndXJhdGlvbiBmaWxlOiAlcy4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAUGF0aCB0byBrZXlyaW5nIGF3cyBjb25maWd1cmF0aW9uIGZpbGUgY2Fubm90IGJlIGVtcHR5AFBhdGggdG8ga2V5cmluZ19hd3Mgc3RvcmFnZSBmaWxlIGNhbm5vdCBiZSBlbXB0eS4AVW5hYmxlIHRvIGNyZWF0ZS9hY2Nlc3Mga2V5cmluZyBkaXJlY3RvcnkuAFVuYWJsZSB0byBjcmVhdGUvYWNjZXNzIGtleXJpbmdfYXdzIHN0b3JhZ2UgZmlsZS4gUGxlYXNlIGNoZWNrIGlmIGtleXJpbmdfYXdzX2RhdGFfZmlsZSBwb2ludHMgdG8gbG9jYXRpb24gd2hlcmUga2V5cmluZyBmaWxlIGNhbiBiZSBjcmVhdGVkL2FjY2Vzc2VkLiBQbGVhc2UgYWxzbyBtYWtlIHN1cmUgdGhhdCBNeVNRTCBzZXJ2ZXIncyB1c2VyIGhhcyBoaWdoIGVub3VnaCBwcml2aWxlZ2VzIHRvIGFjY2VzcyB0aGlzIGxvY2F0aW9uLgBrZXlyaW5nX2F3cyBpbml0aWFsaXphdGlvbiBmYWlsZWQgZHVlIHRvIGludGVybmFsIGVycm9yIHdoZW4gaW5pdGlhbGl6aW5nIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUgLSAlcy4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXM6AENvdWxkIG5vdCBhY2Nlc3Mga2V5cmluZ19hd3Mgc3RvcmFnZSBmaWxlIGluIHRoZSBwYXRoIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgaWYgdGhlIGtleXJpbmdfYXdzIGRpcmVjdG9yeSBjYW4gYmUgYWNjZXNzZWQgYnkgTXlTUUwgU2VydmVyAGtleXJpbmdfYXdzX2Nta19pZCBoYXMgdG8gYmUgc2V0AENvdWxkIG5vdCBnZXQgQVdTIEtNUyBjcmVkZW50aWFscyBmcm9tIHRoZSBjb25maWd1cmF0aW9uIGZpbGUAa2V5cmluZ19hd3MgaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4Aa2V5cmluZ19hd3MgaW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSB0aGUgcGx1Z2luAEludmFsaWQga2V5IGxlbmd0aCBmb3IgZ2l2ZW4gYmxvY2sgY2lwaGVyAEZhaWxlZCB0byBnZW5lcmF0ZSBhIGtleSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSBrZXlyaW5nX2ZpbGUgcGx1Z2luAEluY29ycmVjdCBLZXlyaW5nIGZpbGUARm91bmQgbWFsZm9ybWVkIGtleXJpbmcgYmFja3VwIGZpbGUgLSByZW1vdmluZyBpdABFcnJvciB3aGlsZSByZXN0b3Jpbmcga2V5cmluZyBmcm9tIGJhY2t1cCBmaWxlIGNhbm5vdCBvdmVyd3JpdGUga2V5cmluZyB3aXRoIGJhY2t1cABFcnJvciB3aGlsZSBmbHVzaGluZyBpbi1tZW1vcnkga2V5cmluZyBpbnRvIGtleXJpbmcgZmlsZQBXcm9uZyByZWdpb24AQ291bGQgbm90IGNvbm5lY3QgdG8gQVdTIEtNUyB3aXRoIHRoZSBjcmVkZW50aWFscyBwcm92aWRlZC4gUGxlYXNlIG1ha2Ugc3VyZSB0aGV5IGFyZSBjb3JyZWN0LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCBnZW5lcmF0ZSBhIG5ldyBrZXkuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IGVuY3J5cHQga2V5LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByZS1lbmNyeXB0IGtleS4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgZGVjcnlwdCBrZXkuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHJvdGF0ZSB0aGUgQ01LLiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAFRoZSByZXF1ZXN0ZWQgR1RJRCAnJXM6JWxsZCcgd2FzIGFscmVhZHkgdXNlZCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgcm9sbGJhY2suAFRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZCB3YXMga2lsbGVkLgBFcnJvciBhdCBldmVudCBoYW5kbGluZyEgR290IGVycm9yOiAlZC4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIGdyb3VwIEdUSUQgZXhlY3V0aW9uIGluZm9ybWF0aW9uLCBzb21lIHJlY292ZXJ5IG9wZXJhdGlvbnMgbWF5IGZhY2UgZnV0dXJlIGlzc3Vlcy4AQW4gZXJyb3Igb2NjdXJyZWQgd2hlbiB0cnlpbmcgdG8gcmVkdWNlIHRoZSBDZXJ0aWZpY2F0aW9uIGluZm9ybWF0aW9uIHNpemUgZm9yIHRyYW5zbWlzc2lvbi4ARmFpbGVkIHRvIGNyZWF0ZSBncm91cCByZXBsaWNhdGlvbiBwaXBlbGluZSBhcHBsaWVyIGNhY2hlIQBVbmJsb2NraW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiB0aHJlYWQgd2FpdGluZyBmb3IgYXBwbGllciB0byBzdGFydCwgYXMgdGhlIHN0YXJ0IGdyb3VwIHJlcGxpY2F0aW9uIHdhcyBraWxsZWQuAFRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHBpcGVsaW5lIHdhcyBub3QgcHJvcGVybHkgZGlzcG9zZWQuIENoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGZ1cnRoZXIgaW5mby4AVGhlIGFwcGxpZXIgdGhyZWFkIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4gVW5hYmxlIHRvIHByb2Nlc3MgbW9yZSB0cmFuc2FjdGlvbnMsIHRoaXMgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4ARmF0YWwgZXJyb3IgZHVyaW5nIGV4ZWN1dGlvbiBvbiB0aGUgQXBwbGllciBwcm9jZXNzIG9mIEdyb3VwIFJlcGxpY2F0aW9uLiBUaGUgc2VydmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4ARXJyb3Igc3RvcHBpbmcgYWxsIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHdoaWxlIHNlcnZlciB3YXMgbGVhdmluZyB0aGUgZ3JvdXAuICVzAEVycm9yIHNlbmRpbmcgc2luZ2xlIHByaW1hcnkgbWVzc2FnZSBpbmZvcm1pbmcgdGhhdCBwcmltYXJ5IGRpZCBhcHBseSByZWxheSBsb2dzLgBFcnJvciB1cGRhdGluZyB0cmFuc2FjdGlvbiBzbmFwc2hvdCB2ZXJzaW9uIGFmdGVyIHRyYW5zYWN0aW9uIGJlaW5nIHBvc2l0aXZlbHkgY2VydGlmaWVkLgBFcnJvciBmZXRjaGluZyB0cmFuc2FjdGlvbiBzaWRubyBhZnRlciB0cmFuc2FjdGlvbiBiZWluZyBwb3NpdGl2ZWx5IGNlcnRpZmllZC4AQnJvYWRjYXN0IG9mIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMgbWVzc2FnZSBmYWlsZWQuAFVuYWJsZSB0byBwYXJzZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBVbmFibGUgdG8gYWRkIHRoZSBncm91cF9zaWQgaW4gdGhlIGdyb3VwX2d0aWRfc2lkX21hcCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBFcnJvciB1cGRhdGluZyBncm91cF9ndGlkX2V4ZWN1dGVkIEdJVEQgc2V0IGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byBoYW5kbGUgdGhlIGRvbm9yJ3MgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gd2hlbiBpbml0aWFsaXppbmcgdGhlIGNvbmZsaWN0IGRldGVjdGlvbiBjb21wb25lbnQuIFBvc3NpYmxlIG91dCBvZiBtZW1vcnkgZXJyb3IuAEVycm9yIHdoZW4gZXN0YWJsaXNoaW5nIGEgc2VydmVyIGNvbm5lY3Rpb24gZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIEdUSUQgZXhlY3V0ZWQgc2V0LiBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBjYW4ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4ARXJyb3Igd2hpbGUgYWRkaW5nIHRoZSBzZXJ2ZXIgR1RJRCBFWEVDVVRFRCBzZXQgdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZSBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhpcyBtZW1iZXIgcmV0cmlldmVkIHNldCBmb3IgaXRzIGFwcGxpZXIuIENlcnRpZmljYXRpb24gbW9kdWxlIGNhbid0IGJlIHByb3Blcmx5IGluaXRpYWxpemVkLgBFcnJvciB3aGlsZSBhZGRpbmcgdGhlIG1lbWJlciByZXRyaWV2ZWQgc2V0IHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIGR1cmluZyBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4AVW5hYmxlIHRvIHVwZGF0ZSBsYXN0IGNvbmZsaWN0IGZyZWUgdHJhbnNhY3Rpb24sIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBub3QgYmUgdHJhY2tlZCBvbiBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX3N0YXRzLmxhc3RfY29uZmxpY3RfZnJlZV90cmFuc2FjdGlvbi4ARXJyb3IgdXBkYXRpbmcgdHJhbnNhY3Rpb24gc25hcHNob3QgdmVyc2lvbiByZWZlcmVuY2UgZm9yIGludGVybmFsIHN0b3JhZ2UuAEVycm9yIGZldGNoaW5nIHRyYW5zYWN0aW9uIHNpZG5vIHdoaWxlIGFkZGluZyB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBzZXQuAEVycm9yIHdoaWxlIGVuc3VyaW5nIHRoZSBzaWRubyBiZSBwcmVzZW50IGluIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkLgBJbXBvc3NpYmxlIHRvIGdlbmVyYXRlIEdsb2JhbCBUcmFuc2FjdGlvbiBJZGVudGlmaWVyOiB0aGUgaW50ZWdlciBjb21wb25lbnQgcmVhY2hlZCB0aGUgbWF4aW1hbCB2YWx1ZS4gUmVzdGFydCB0aGUgZ3JvdXAgd2l0aCBhIG5ldyBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lLgBJbnZhbGlkIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBFcnJvciB1cGRhdGluZyBzdGFibGUgdHJhbnNhY3Rpb25zIHNldC4AVGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gZmlsbGluZyB0aGUgbWlzc2luZyBHVElEcyBvbiB0aGUgYXBwbGllciBjaGFubmVsIHJlY2VpdmVkIHNldC4gRGVzcGl0ZSBub3QgY3JpdGljYWwsIG9uIHRoZSBsb25nIHJ1biB0aGlzIG1heSBjYXVzZSBwZXJmb3JtYW5jZSBpc3N1ZXMuAFNraXBwaW5nIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgVHJhbnNhY3Rpb25zX2NvbW1pdHRlZF9hbGxfbWVtYmVycyBmaWVsZCBhcyBhbiBvbGRlciBpbnN0YW5jZSBvZiB0aGlzIGNvbXB1dGF0aW9uIGlzIHN0aWxsIG9uZ29pbmcuAE51bGwgcGFja2V0IG9uIGNlcnRpZmllcidzIHF1ZXVlLgBFcnJvciByZWFkaW5nIEdUSURzIGZyb20gdGhlIG1lc3NhZ2UuAEVycm9yIHByb2Nlc3Npbmcgc3RhYmxlIHRyYW5zYWN0aW9ucyBzZXQuAEVycm9yIHByb2Nlc3NpbmcgaW50ZXJzZWN0aW9uIG9mIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBFcnJvciBzZXR0aW5nIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBFcnJvciByZWFkaW5nIGdyb3VwX2d0aWRfZXh0cmFjdGVkIGZyb20gdGhlIFZpZXdfY2hhbmdlX2xvZ19ldmVudC4ARXJyb3IgcmVhZGluZyB0aGUgd3JpdGUgc2V0IGl0ZW0gJyVzJyBmcm9tIHRoZSBWaWV3X2NoYW5nZV9sb2dfZXZlbnQuAEVycm9yIGR1cmluZyBjZXJ0aWZpY2F0aW9uX2luZm8gaW5pdGlhbGl6YXRpb24uAFByaW1hcnkgaGFkIGFwcGxpZWQgYWxsIHJlbGF5IGxvZ3MsIGRpc2FibGVkIGNvbmZsaWN0IGRldGVjdGlvbi4ATWVzc2FnZSByZWNlaXZlZCB3aGlsZSB0aGUgcGx1Z2luIGlzIG5vdCByZWFkeSwgbWVzc2FnZSBkaXNjYXJkZWQuAE1lc3NhZ2UgcmVjZWl2ZWQgd2l0aG91dCBhIHByb3BlciBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyLgBFcnJvciBwcm9jZXNzaW5nIG1lc3NhZ2UgaW4gQ2VydGlmaWVyLgBUaGlzIHNlcnZlciB3YXMgbm90IGRlY2xhcmVkIG9ubGluZSBzaW5jZSBpdCBpcyBvbiBzdGF0dXMgJXMuAFRoaXMgc2VydmVyIHdhcyBkZWNsYXJlZCBvbmxpbmUgd2l0aGluIHRoZSByZXBsaWNhdGlvbiBncm91cC4AV2hlbiBkZWNsYXJpbmcgdGhlIHBsdWdpbiBvbmxpbmUgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSBzZXJ2ZXIgcmVhZCBtb2RlIHNldHRpbmdzLiBUcnkgdG8gZGlzYWJsZSBpdCBtYW51YWxseS4AVGhlIG1lbWJlciB3aXRoIGFkZHJlc3MgJXM6JXUgd2FzIGRlY2xhcmVkIG9ubGluZSB3aXRoaW4gdGhlIHJlcGxpY2F0aW9uIGdyb3VwLgBNZW1iZXIgd2l0aCBhZGRyZXNzICVzOiV1IGhhcyBiZWNvbWUgdW5yZWFjaGFibGUuAE1lbWJlciB3aXRoIGFkZHJlc3MgJXM6JXUgaXMgcmVhY2hhYmxlIGFnYWluLgBUaGlzIHNlcnZlciBpcyBub3QgYWJsZSB0byByZWFjaCBhIG1ham9yaXR5IG9mIG1lbWJlcnMgaW4gdGhlIGdyb3VwLiBUaGlzIHNlcnZlciB3aWxsIG5vdyBibG9jayBhbGwgdXBkYXRlcy4gVGhlIHNlcnZlciB3aWxsIHJlbWFpbiBibG9ja2VkIHVudGlsIGNvbnRhY3Qgd2l0aCB0aGUgbWFqb3JpdHkgaXMgcmVzdG9yZWQuIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHRvIGZvcmNlIGEgbmV3IGdyb3VwIG1lbWJlcnNoaXAuAFRoaXMgc2VydmVyIGlzIG5vdCBhYmxlIHRvIHJlYWNoIGEgbWFqb3JpdHkgb2YgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIFRoaXMgc2VydmVyIHdpbGwgbm93IGJsb2NrIGFsbCB1cGRhdGVzLiBUaGUgc2VydmVyIHdpbGwgcmVtYWluIGJsb2NrZWQgZm9yIHRoZSBuZXh0ICVsdSBzZWNvbmRzLiBVbmxlc3MgY29udGFjdCB3aXRoIHRoZSBtYWpvcml0eSBpcyByZXN0b3JlZCwgYWZ0ZXIgdGhpcyB0aW1lIHRoZSBtZW1iZXIgd2lsbCBlcnJvciBvdXQgYW5kIGxlYXZlIHRoZSBncm91cC4gSXQgaXMgcG9zc2libGUgdG8gdXNlIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgdG8gZm9yY2UgYSBuZXcgZ3JvdXAgbWVtYmVyc2hpcC4AQSBncm91cCBtZW1iZXJzaGlwIGNoYW5nZSB3YXMgcmVjZWl2ZWQgYnV0IHRoZSBwbHVnaW4gaXMgYWxyZWFkeSBsZWF2aW5nIGR1ZSB0byB0aGUgY29uZmlndXJlZCB0aW1lb3V0IG9uIGdyb3VwX3JlcGxpY2F0aW9uX3VucmVhY2hhYmxlX21ham9yaXR5X3RpbWVvdXQgb3B0aW9uLgBUaGUgbWVtYmVyIGhhcyByZXN1bWVkIGNvbnRhY3Qgd2l0aCBhIG1ham9yaXR5IG9mIHRoZSBtZW1iZXJzIGluIHRoZSBncm91cC4gUmVndWxhciBvcGVyYXRpb24gaXMgcmVzdG9yZWQgYW5kIHRyYW5zYWN0aW9ucyBhcmUgdW5ibG9ja2VkLgBNZW1iZXJzIHJlbW92ZWQgZnJvbSB0aGUgZ3JvdXA6ICVzAFByaW1hcnkgc2VydmVyIHdpdGggYWRkcmVzcyAlcyBsZWZ0IHRoZSBncm91cC4gRWxlY3RpbmcgbmV3IFByaW1hcnkuAE1lbWJlcnMgam9pbmVkIHRoZSBncm91cDogJXMAVGhlcmUgd2FzIGEgcHJldmlvdXMgcGx1Z2luIGVycm9yIHdoaWxlIHRoZSBtZW1iZXIgam9pbmVkIHRoZSBncm91cC4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AR3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2VkIHRvICVzIG9uIHZpZXcgJXMuAEdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlZDogVGhpcyBtZW1iZXIgaGFzIGxlZnQgdGhlIGdyb3VwLgBNZW1iZXIgd2FzIGV4cGVsbGVkIGZyb20gdGhlIGdyb3VwIGR1ZSB0byBuZXR3b3JrIGZhaWx1cmVzLCBjaGFuZ2luZyBtZW1iZXIgc3RhdHVzIHRvIEVSUk9SLgBVbmFibGUgdG8gb3BlbiBzZXNzaW9uIHRvIChyZSlzZXQgcmVhZCBvbmx5IG1vZGUuIFNraXBwaW5nLgBBIG5ldyBwcmltYXJ5IHdpdGggYWRkcmVzcyAlczoldSB3YXMgZWxlY3RlZC4gJXMAVW5hYmxlIHRvIGRpc2FibGUgc3VwZXIgcmVhZCBvbmx5IGZsYWcuIFRyeSB0byBkaXNhYmxlIGl0IG1hbnVhbGx5AFVuYWJsZSB0byBzZXQgc3VwZXIgcmVhZCBvbmx5IGZsYWcuIFRyeSB0byBzZXQgaXQgbWFudWFsbHkuAFRoaXMgc2VydmVyIGlzIHdvcmtpbmcgYXMgcHJpbWFyeSBtZW1iZXIuAFRoaXMgc2VydmVyIGlzIHdvcmtpbmcgYXMgc2Vjb25kYXJ5IG1lbWJlciB3aXRoIHByaW1hcnkgbWVtYmVyIGFkZHJlc3MgJXM6JXUuAFVuYWJsZSB0byBzZXQgYW55IG1lbWJlciBhcyBwcmltYXJ5LiBObyBzdWl0YWJsZSBjYW5kaWRhdGUuAEVycm9yIHdoZW4gYWN0aXZhdGluZyBzdXBlcl9yZWFkX29ubHkgbW9kZSBvbiBzdGFydC4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AR3JvdXAgY29udGFpbnMgJWx1IG1lbWJlcnMgd2hpY2ggaXMgZ3JlYXRlciB0aGFuIGdyb3VwX3JlcGxpY2F0aW9uX2F1dG9faW5jcmVtZW50X2luY3JlbWVudCB2YWx1ZSBvZiAlbHUuIFRoaXMgY2FuIGxlYWQgdG8gYSBoaWdoZXIgdHJhbnNhY3Rpb25hbCBhYm9ydCByYXRlLgBNZW1iZXIgd2l0aCBhZGRyZXNzICclczoldScgZGlkbid0IHByb3ZpZGUgYW55IGRhdGEgZHVyaW5nIHRoZSBsYXN0IGdyb3VwIGNoYW5nZS4gR3JvdXAgaW5mb3JtYXRpb24gY2FuIGJlIG91dGRhdGVkIGFuZCBsZWFkIHRvIGVycm9ycyBvbiByZWNvdmVyeS4AVGhlcmUgaXMgYWxyZWFkeSBhIG1lbWJlciB3aXRoIHNlcnZlcl91dWlkICVzLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gZm9yIGdyb3VwIGNoYW5nZS4gT3BlcmF0aW9ucyBhbmQgY2hlY2tzIG1hZGUgdG8gZ3JvdXAgam9pbmVycyBtYXkgYmUgaW5jb21wbGV0ZS4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIEdUSUQgZXhlY3V0ZWQgc2V0LiBPcGVyYXRpb25zIGFuZCBjaGVja3MgbWFkZSB0byBncm91cCBqb2luZXJzIG1heSBiZSBpbmNvbXBsZXRlLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhpcyBtZW1iZXIgcmV0cmlldmVkIHNldCBmb3IgaXRzIGFwcGxpZXIuIE9wZXJhdGlvbnMgYW5kIGNoZWNrcyBtYWRlIHRvIGdyb3VwIGpvaW5lcnMgbWF5IGJlIGluY29tcGxldGUuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgZ3JvdXAgYWxyZWFkeSBoYXMgOSBtZW1iZXJzLgBNZW1iZXIgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgZ3JvdXAuAFRoZSBtZW1iZXIgY29udGFpbnMgdHJhbnNhY3Rpb25zIG5vdCBwcmVzZW50IGluIHRoZSBncm91cC4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ASXQgd2FzIG5vdCBwb3NzaWJsZSB0byBhc3Nlc3MgaWYgdGhlIG1lbWJlciBoYXMgbW9yZSB0cmFuc2FjdGlvbnMgdGhhbiB0aGUgZ3JvdXAuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAE1lbWJlciB2ZXJzaW9uIGlzIGxvd2VyIHRoYW4gc29tZSBncm91cCBtZW1iZXIsIGJ1dCBzaW5jZSBvcHRpb24gJ2dyb3VwX3JlcGxpY2F0aW9uX2FsbG93X2xvY2FsX2xvd2VyX3ZlcnNpb25fam9pbiBpcyBlbmFibGVkLCBtZW1iZXIgd2lsbCBiZSBhbGxvd2VkIHRvIGpvaW4uAEVycm9yIHByb2Nlc3NpbmcgbG9jYWwgR1RJRCBzZXRzIHdoZW4gY29tcGFyaW5nIHRoaXMgbWVtYmVyIHRyYW5zYWN0aW9ucyBhZ2FpbnN0IHRoZSBncm91cC4AVGhpcyBtZW1iZXIgaGFzIG1vcmUgZXhlY3V0ZWQgdHJhbnNhY3Rpb25zIHRoYW4gdGhvc2UgcHJlc2VudCBpbiB0aGUgZ3JvdXAuIExvY2FsIHRyYW5zYWN0aW9uczogJXMgPiBHcm91cCB0cmFuc2FjdGlvbnM6ICVzAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZ3JvdXBfcmVwbGljYXRpb25fZ3RpZF9hc3NpZ25tZW50X2Jsb2NrX3NpemUgb3B0aW9uIHZhbHVlICclbGx1JyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVsbHUnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIHRyYW5zYWN0aW9uLXdyaXRlLXNldC1leHRyYWN0aW9uIG9wdGlvbiB2YWx1ZSAnJXMnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJXMnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBUaGUgbWVtYmVyIGNvbmZpZ3VyYXRpb24gaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgZ3JvdXAgY29uZmlndXJhdGlvbi4gVmFyaWFibGVzIHN1Y2ggYXMgZ3JvdXBfcmVwbGljYXRpb25fc2luZ2xlX3ByaW1hcnlfbW9kZSBvciBncm91cF9yZXBsaWNhdGlvbl9lbmZvcmNlX3VwZGF0ZV9ldmVyeXdoZXJlX2NoZWNrcyBtdXN0IGhhdmUgdGhlIHNhbWUgdmFsdWUgb24gZXZlcnkgc2VydmVyIGluIHRoZSBncm91cC4gKG1lbWJlciBjb25maWd1cmF0aW9uIG9wdGlvbjogWyVzXSwgZ3JvdXAgY29uZmlndXJhdGlvbiBvcHRpb246IFslc10pLgBFcnJvciBzdG9wcGluZyBhbGwgcmVwbGljYXRpb24gY2hhbm5lbHMgd2hpbGUgc2VydmVyIHdhcyBsZWF2aW5nIHRoZSBncm91cC4gJXMARGV0ZWN0ZWQgcHJldmlvdXMgUkVTRVQgU09VUkNFIGludm9jYXRpb24gb3IgYW4gaXNzdWUgZXhpc3RzIGluIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHJlbGF5IGxvZy4gUHVyZ2luZyBleGlzdGluZyBhcHBsaWVyIGxvZ3MuAFVua25vd24gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcmVzZXR0aW5nIGFwcGxpZXIncyBtb2R1bGUgbG9ncy4ARmFpbGVkIHRvIHNldHVwIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZC4ARXJyb3Igd2hpbGUgc3RhcnRpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgdGhyZWFkAEZhaWxlZCB0byBzdG9wIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZC4ARmFpbGVkIHRvIGZldGNoIHRyYW5zYWN0aW9uIGRhdGEgY29udGFpbmluZyByZXF1aXJlZCB0cmFuc2FjdGlvbiBpbmZvIGZvciBhcHBsaWVyAENhbid0IHN0YXJ0IHJlcGxpY2EgSU8gVEhSRUFEIG9mIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIGFuZCB0aGUgcHJpbWFyeSBtZW1iZXIgaXMgbm90IGtub3duLgBDYW4ndCBzdGFydCByZXBsaWNhIElPIFRIUkVBRCBvZiBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSBvbiBhIHNlY29uZGFyeSBtZW1iZXIuAENhbid0IHN0YXJ0IHJlcGxpY2EgU1FMIFRIUkVBRCBvZiBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSBhbmQgdGhlIHByaW1hcnkgbWVtYmVyIGlzIG5vdCBrbm93bi4AQ2FuJ3Qgc3RhcnQgcmVwbGljYSBTUUwgVEhSRUFEIG9mIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIG9uIGEgc2Vjb25kYXJ5IG1lbWJlci4AVGFibGUgJXMgZG9lcyBub3QgdXNlIHRoZSBJbm5vREIgc3RvcmFnZSBlbmdpbmUuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBHcm91cCBSZXBsaWNhdGlvbi4AVGFibGUgJXMgZG9lcyBub3QgaGF2ZSBhbnkgUFJJTUFSWSBLRVkuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBHcm91cCBSZXBsaWNhdGlvbi4AVGFibGUgJXMgaGFzIGEgZm9yZWlnbiBrZXkgd2l0aCAnQ0FTQ0FERScsICdTRVQgTlVMTCcgb3IgJ1NFVCBERUZBVUxUJyBjbGF1c2UuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBHcm91cCBSZXBsaWNhdGlvbi4AZ3JvdXBfcmVwbGljYXRpb25fYXV0b19pbmNyZW1lbnRfaW5jcmVtZW50IGlzIHJlc2V0IHRvICVsdQBhdXRvX2luY3JlbWVudF9vZmZzZXQgaXMgcmVzZXQgdG8gJWx1AGdyb3VwX3JlcGxpY2F0aW9uX2F1dG9faW5jcmVtZW50X2luY3JlbWVudCBpcyBzZXQgdG8gJWx1AGF1dG9faW5jcmVtZW50X29mZnNldCBpcyBzZXQgdG8gJWx1AEZhaWxlZCB0byBmZXRjaCB0cmFuc2FjdGlvbiBjb250ZXh0IGNvbnRhaW5pbmcgcmVxdWlyZWQgdHJhbnNhY3Rpb24gaW5mbyBmb3IgY2VydGlmaWNhdGlvbgBGYWlsZWQgdG8gZmV0Y2ggRm9ybWF0X2Rlc2NyaXB0aW9uX2xvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIHNlcnZlciBpbmZvIGZvciBhcHBsaWVyAEZhaWxlZCB0byBmZXRjaCBUcmFuc2FjdGlvbl9jb250ZXh0X2xvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIHRyYW5zYWN0aW9uIGluZm8gZm9yIGNlcnRpZmljYXRpb24ARmFpbGVkIHRvIHJlYWQgc25hcHNob3QgdmVyc2lvbiBmcm9tIHRyYW5zYWN0aW9uIGNvbnRleHQgZXZlbnQgcmVxdWlyZWQgZm9yIGNlcnRpZmljYXRpb24ARmFpbGVkIHRvIGZldGNoIEd0aWRfbG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgdHJhbnNhY3Rpb24gaW5mbyBmb3IgY2VydGlmaWNhdGlvbgBVbmFibGUgdG8gdXBkYXRlIGNlcnRpZmljYXRpb24gcmVzdWx0IG9uIHNlcnZlciBzaWRlLCB0aHJlYWRfaWQ6ICVsdQBVbmFibGUgdG8gYWRkIGd0aWQgaW5mb3JtYXRpb24gdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0IHdoZW4gZ3RpZCB3YXMgcHJvdmlkZWQgZm9yIGxvY2FsIHRyYW5zYWN0aW9ucwBVbmFibGUgdG8gYWRkIGd0aWQgaW5mb3JtYXRpb24gdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0IHdoZW4gbm8gZ3RpZCB3YXMgcHJvdmlkZWQgZm9yIGxvY2FsIHRyYW5zYWN0aW9ucwBGYWlsZWQgdG8gbm90aWZ5IGNlcnRpZmljYXRpb24gb3V0Y29tZQBVbmFibGUgdG8gYWRkIGd0aWQgaW5mb3JtYXRpb24gdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0IHdoZW4gZ3RpZCB3YXMgcHJvdmlkZWQgZm9yIHJlbW90ZSB0cmFuc2FjdGlvbnMAVW5hYmxlIHRvIGFkZCBndGlkIGluZm9ybWF0aW9uIHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIHNldCB3aGVuIGd0aWQgd2FzIG5vdCBwcm92aWRlZCBmb3IgcmVtb3RlIHRyYW5zYWN0aW9ucwBGYWlsZWQgdG8gZmV0Y2ggVmlld19jaGFuZ2VfbG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgaW5mbyBmb3IgY2VydGlmaWNhdGlvbgBFcnJvciB3aGVuIGNvbnRhY3RpbmcgdGhlIHNlcnZlciB0byBlbnN1cmUgdGhlIHByb3BlciBsb2dnaW5nIG9mIGEgZ3JvdXAgY2hhbmdlIGluIHRoZSBiaW5sb2cAVGltZW91dCB3aGVuIHdhaXRpbmcgZm9yIHRoZSBzZXJ2ZXIgdG8gZXhlY3V0ZSBsb2NhbCB0cmFuc2FjdGlvbnMgaW4gb3JkZXIgYXNzdXJlIHRoZSBncm91cCBjaGFuZ2UgcHJvcGVyIGxvZ2dpbmcARmFpbGVkIHRvIGZldGNoIExvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIHNlcnZlciBpbmZvIGZvciBhcHBsaWVyAFVuYWJsZSB0byBzdGFydCBHcm91cCBSZXBsaWNhdGlvbi4gUmVwbGljYXRpb24gYXBwbGllciBpbmZyYXN0cnVjdHVyZSBpcyBub3QgaW5pdGlhbGl6ZWQgc2luY2UgdGhlIHNlcnZlciB3YXMgc3RhcnRlZCB3aXRoIC0taW5pdGlhbGl6ZSwgLS1pbml0aWFsaXplLWluc2VjdXJlIG9yIC0tdXBncmFkZT1NSU5JTUFMIG9uIGEgc2VydmVyIHVwZ3JhZGUuAEZhaWxlZCB0byBlc3RhYmxpc2ggYW4gaW50ZXJuYWwgc2VydmVyIGNvbm5lY3Rpb24gdG8gZXhlY3V0ZSBwbHVnaW4gb3BlcmF0aW9ucwBTZXR0aW5nIHN1cGVyX3JlYWRfb25seT1PTi4AU2V0dGluZyBzdXBlcl9yZWFkX29ubHk9T0ZGLgBraWxsZWQgc2Vzc2lvbiBpZDogJWQgc3RhdHVzOiAlZABraWxsZWQgZmFpbGVkIGlkOiAlZCBmYWlsZWQ6ICVkAEludGVybmFsIHF1ZXJ5OiAlcyByZXN1bHQgaW4gZXJyb3IuIEVycm9yIG51bWJlcjogJWxkAEVycm9yIGNvcHlpbmcgZnJvbSBlbXB0eSBzdHJpbmcgAFF1ZXJ5IGV4ZWN1dGlvbiByZXN1bHRlZCBpbiBmYWlsdXJlLiBlcnJubzogJWQAVW5hYmxlIHRvIGNyZWF0ZSBhIHNlc3Npb24gZm9yIGV4ZWN1dGluZyB0aGUgcXVlcmllcyBvbiB0aGUgc2VydmVyAFRoZSBtZW1iZXIgd2l0aCBhZGRyZXNzICVzOiV1IGhhcyB1bmV4cGVjdGVkbHkgZGlzYXBwZWFyZWQsIGtpbGxpbmcgdGhlIGN1cnJlbnQgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgY29ubmVjdGlvbgBNYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIHdoZW4gdHJ5aW5nIHRvIGNvbm5lY3QgdG8gYSBkb25vciByZWFjaGVkLiBBYm9ydGluZyBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeS4AQWxsIGRvbm9ycyBsZWZ0LiBBYm9ydGluZyBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeS4ARXN0YWJsaXNoaW5nIGdyb3VwIHJlY292ZXJ5IGNvbm5lY3Rpb24gd2l0aCBhIHBvc3NpYmxlIGRvbm9yLiBBdHRlbXB0ICVkLyVkAFJldHJ5aW5nIGdyb3VwIHJlY292ZXJ5IGNvbm5lY3Rpb24gd2l0aCBhbm90aGVyIGRvbm9yLiBBdHRlbXB0ICVkLyVkAE5vIHZhbGlkIGRvbm9ycyBleGlzdCBpbiB0aGUgZ3JvdXAsIHJldHJ5aW5nAEVycm9yIHdoZW4gY29uZmlndXJpbmcgdGhlIGFzeW5jaHJvbm91cyByZWNvdmVyeSBjaGFubmVsIGNvbm5lY3Rpb24gdG8gdGhlIGRvbm9yLgBFc3RhYmxpc2hpbmcgY29ubmVjdGlvbiB0byBhIGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGRvbm9yICVzIGF0ICVzIHBvcnQ6ICVkLgBFcnJvciB3aGlsZSBjcmVhdGluZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgY2hhbm5lbCB3aXRoIGRvbm9yICVzIGF0ICVzIHBvcnQ6ICVkLgBUaGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBkb25vciBzZXJ2ZXIuIFBsZWFzZSBjaGVjayB0aGF0IGdyb3VwX3JlcGxpY2F0aW9uX3JlY292ZXJ5IGNoYW5uZWwgY3JlZGVudGlhbHMgYW5kIGFsbCBNRU1CRVJfSE9TVCBjb2x1bW4gdmFsdWVzIG9mIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJzIHRhYmxlIGFyZSBjb3JyZWN0IGFuZCBETlMgcmVzb2x2YWJsZS4ARm9yIGRldGFpbHMgcGxlYXNlIGNoZWNrIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9jb25uZWN0aW9uX3N0YXR1cyB0YWJsZSBhbmQgZXJyb3IgbG9nIG1lc3NhZ2VzIG9mIFJlcGxpY2EgSS9PIGZvciBjaGFubmVsIGdyb3VwX3JlcGxpY2F0aW9uX3JlY292ZXJ5LgBFcnJvciB3aGlsZSBzdGFydGluZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkgcmVjZWl2ZXIvYXBwbGllciB0aHJlYWRzAFRlcm1pbmF0aW5nIGV4aXN0aW5nIGdyb3VwIHJlcGxpY2F0aW9uIGRvbm9yIGNvbm5lY3Rpb24gYW5kIHB1cmdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbG9ncy4ARXJyb3Igd2hlbiBzdG9wcGluZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkncyBkb25vciBjb25uZWN0aW9uAEVycm9yIHdoZW4gcHVyZ2luZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkncyByZWxheSBsb2dzAFVuYWJsZSB0byBraWxsIHRoZSBjdXJyZW50IGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGRvbm9yIGNvbm5lY3Rpb24gYWZ0ZXIgYW4gYXBwbGllciBlcnJvci4gSW5jcmVtZW50YWwgcmVjb3Zlcnkgd2lsbCBzaHV0ZG93bi4AVW5hYmxlIHRvIGtpbGwgdGhlIGN1cnJlbnQgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgZG9ub3IgY29ubmVjdGlvbiBkdXJpbmcgZmFpbG92ZXIuIEluY3JlbWVudGFsIHJlY292ZXJ5IHdpbGwgc2h1dGRvd24uAFVuZXhwZWN0ZWQgZXJyb3Igd2hlbiBub3RpZnlpbmcgYW4gaW50ZXJuYWwgY29tcG9uZW50IG5hbWVkICVzIHJlZ2FyZGluZyBhIGdyb3VwIG1lbWJlcnNoaXAgZXZlbnQuAEFuIHVuZGVmaW5lZCBlcnJvciB3YXMgZm91bmQgd2hpbGUgYnJvYWRjYXN0aW5nIGFuIGludGVybmFsIGdyb3VwIG1lbWJlcnNoaXAgbm90aWZpY2F0aW9uISBUaGlzIGlzIGxpa2VseSB0byBoYXBwZW4gaWYgeW91ciBjb21wb25lbnRzIG9yIHBsdWdpbnMgYXJlIG5vdCBwcm9wZXJseSBsb2FkZWQgb3IgYXJlIG1hbGZ1bmN0aW9uaW5nIQBBbiB1bmRlZmluZWQgZXJyb3Igd2FzIGZvdW5kIHdoaWxlIGJyb2FkY2FzdGluZyBhbiBpbnRlcm5hbCBncm91cCBtZW1iZXIgc3RhdHVzIG5vdGlmaWNhdGlvbiEgVGhpcyBpcyBsaWtlbHkgdG8gaGFwcGVuIGlmIHlvdXIgY29tcG9uZW50cyBvciBwbHVnaW5zIGFyZSBub3QgcHJvcGVybHkgbG9hZGVkIG9yIGFyZSBtYWxmdW5jdGlvbmluZyEATm8gbWVtb3J5IHRvIGdlbmVyYXRlIHdyaXRlIGlkZW50aWZpY2F0aW9uIGhhc2gAQmFzZSA2NCBlbmNvZGluZyBvZiB0aGUgd3JpdGUgaWRlbnRpZmljYXRpb24gaGFzaCBmYWlsZWQAQmlubG9nIGZvcm1hdCBzaG91bGQgYmUgUk9XIGZvciBHcm91cCBSZXBsaWNhdGlvbgBiaW5sb2dfY2hlY2tzdW0gc2hvdWxkIGJlIE5PTkUgZm9yIEdyb3VwIFJlcGxpY2F0aW9uAEEgdHJhbnNhY3Rpb25fd3JpdGVfc2V0X2V4dHJhY3Rpb24gYWxnb3JpdGhtIHNob3VsZCBiZSBzZWxlY3RlZCB3aGVuIHJ1bm5pbmcgR3JvdXAgUmVwbGljYXRpb24AVHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsICh0eF9pc29sYXRpb24pIGlzIHNldCB0byBTRVJJQUxJWkFCTEUsIHdoaWNoIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JvdXAgUmVwbGljYXRpb24AVHJhbnNhY3Rpb24gY2Fubm90IGJlIGV4ZWN1dGVkIHdoaWxlIEdyb3VwIFJlcGxpY2F0aW9uIGlzIHN0b3BwaW5nLgBUcmFuc2FjdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgcmVjb3ZlcmluZy4gVHJ5IGFnYWluIHdoZW4gdGhlIHNlcnZlciBpcyBPTkxJTkUuAFRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyBvbiBFUlJPUiBzdGF0ZS4gQ2hlY2sgZm9yIGVycm9ycyBhbmQgcmVzdGFydCB0aGUgcGx1Z2luAFRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyBPRkZMSU5FLiBDaGVjayBmb3IgZXJyb3JzIGFuZCByZXN0YXJ0IHRoZSBwbHVnaW4AV2UgY2FuIG9ubHkgdXNlIG9uZSBjYWNoZSB0eXBlIGF0IGEgdGltZSBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byByZWluaXQgYmlubG9nIGNhY2hlIGxvZyBmb3IgcmVhZCBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byBjcmVhdGUgdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gZXh0cmFjdCB0aGUgc2V0IG9mIGl0ZW1zIHdyaXR0ZW4gZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gZ2F0aGVyIHRoZSBzZXQgb2YgaXRlbXMgd3JpdHRlbiBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBvbiBzZXNzaW9uICV1AEVycm9yIG9uIHNlc3Npb24gJXUuIFRyYW5zYWN0aW9uIG9mIHNpemUgJWxsdSBleGNlZWRzIHNwZWNpZmllZCBsaW1pdCAlbHUuIFRvIGluY3JlYXNlIHRoZSBsaW1pdCBwbGVhc2UgYWRqdXN0IGdyb3VwX3JlcGxpY2F0aW9uX3RyYW5zYWN0aW9uX3NpemVfbGltaXQgb3B0aW9uLgBFcnJvciB3aGlsZSByZS1pbml0aWFsaXppbmcgYW4gaW50ZXJuYWwgY2FjaGUsIGZvciByZWFkIG9wZXJhdGlvbnMsIG9uIHNlc3Npb24gJXUARXJyb3Igd2hpbGUgYXBwZW5kaW5nIGRhdGEgdG8gYW4gaW50ZXJuYWwgY2FjaGUgb24gc2Vzc2lvbiAldQBFcnJvciB3aGlsZSB3cml0aW5nIHRvIHRyYW5zYWN0aW9uIG1lc3NhZ2Ugb24gc2Vzc2lvbiAldQBVbmFibGUgdG8gcmVnaXN0ZXIgZm9yIGdldHRpbmcgbm90aWZpY2F0aW9ucyByZWdhcmRpbmcgdGhlIG91dGNvbWUgb2YgdGhlIHRyYW5zYWN0aW9uIG9uIHNlc3Npb24gJXUARXJyb3IgYnJvYWRjYXN0aW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBncm91cCBvbiBzZXNzaW9uICV1LiBNZXNzYWdlIGlzIHRvbyBiaWcuAEVycm9yIHdoaWxlIGJyb2FkY2FzdGluZyB0aGUgdHJhbnNhY3Rpb24gdG8gdGhlIGdyb3VwIG9uIHNlc3Npb24gJXUARXJyb3Igd2hpbGUgd2FpdGluZyBmb3IgY29uZmxpY3QgZGV0ZWN0aW9uIHByb2NlZHVyZSB0byBmaW5pc2ggb24gc2Vzc2lvbiAldQBFcnJvciB3aGlsZSByZS1pbml0aWFsaXppbmcgYW4gaW50ZXJuYWwgY2FjaGUsIGZvciB3cml0ZSBvcGVyYXRpb25zLCBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byBjcmVhdGUgZ3JvdXAgcmVwbGljYXRpb24gY29tbWl0IGNhY2hlIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIHJlaW5pdCBncm91cCByZXBsaWNhdGlvbiBjb21taXQgY2FjaGUgZm9yIHdyaXRlIG9uIHNlc3Npb24gJXUAQSBwcmV2aW91cyByZWNvdmVyeSBzZXNzaW9uIGlzIHN0aWxsIHJ1bm5pbmcuIFBsZWFzZSBzdG9wIHRoZSBncm91cCByZXBsaWNhdGlvbiBwbHVnaW4gYW5kIHdhaXQgZm9yIGl0IHRvIHN0b3AARmF0YWwgZXJyb3IgZHVyaW5nIHRoZSBpbmNyZW1lbnRhbCByZWNvdmVyeSBwcm9jZXNzIG9mIEdyb3VwIFJlcGxpY2F0aW9uLiBUaGUgc2VydmVyIHdpbGwgbGVhdmUgdGhlIGdyb3VwLgBFcnJvciBzdG9wcGluZyBhbGwgcmVwbGljYXRpb24gY2hhbm5lbHMgd2hpbGUgc2VydmVyIHdhcyBsZWF2aW5nIHRoZSBncm91cC4gJXMAVW5hYmxlIHRvIGV2YWx1YXRlIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGV4ZWN1dGlvbiBzdGF0dXMuIEdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IHdpbGwgc2h1dGRvd24gdG8gYXZvaWQgZGF0YSBjb3JydXB0aW9uLgBPbmx5IG9uZSBzZXJ2ZXIgYWxpdmUuIERlY2xhcmluZyB0aGlzIHNlcnZlciBhcyBvbmxpbmUgd2l0aGluIHRoZSByZXBsaWNhdGlvbiBncm91cABFcnJvciB3aGVuIHByb2Nlc3NpbmcgY2VydGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBpbiB0aGUgaW5jcmVtZW50YWwgcmVjb3ZlcnkgcHJvY2VzcwBVbmFibGUgdG8gZW5zdXJlIHRoZSBleGVjdXRpb24gb2YgZ3JvdXAgdHJhbnNhY3Rpb25zIHJlY2VpdmVkIGR1cmluZyByZWNvdmVyeS4ARXJyb3Igd2hpbGUgc2VuZGluZyBtZXNzYWdlIGluIHRoZSBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeSBwcm9jZXNzLgBVbmFibGUgdG8gcmVhZCB0aGUgc2VydmVyIHZhbHVlIGZvciB0aGUgc3VwZXJfcmVhZF9vbmx5IHZhcmlhYmxlLgBVbmFibGUgdG8gcmVhZCB0aGUgc2VydmVyIHZhbHVlcyBmb3IgdGhlIHJlYWRfb25seSBhbmQgc3VwZXJfcmVhZF9vbmx5IHZhcmlhYmxlcy4AVW5hYmxlIHRvIHJlc2V0IHRoZSBzZXJ2ZXIgcmVhZCBtb2RlIHNldHRpbmdzLiBUcnkgdG8gcmVzZXQgdGhlbSBtYW51YWxseS4ARHVlIHRvIGEgcGx1Z2luIGVycm9yLCBzb21lIHRyYW5zYWN0aW9ucyB3ZXJlIHVuYWJsZSB0byBiZSBjZXJ0aWZpZWQgYW5kIHdpbGwgbm93IHJvbGxiYWNrLgBFcnJvciB3aGVuIHRyeWluZyB0byB1bmJsb2NrIG5vbiBjZXJ0aWZpZWQgb3IgY29uc2lzdGVudCB0cmFuc2FjdGlvbnMuIENoZWNrIGZvciBjb25zaXN0ZW5jeSBlcnJvcnMgd2hlbiByZXN0YXJ0aW5nIHRoZSBzZXJ2aWNlAFRoaXMgc2VydmVyIGlzIHdvcmtpbmcgYXMgc2Vjb25kYXJ5IG1lbWJlciB3aXRoIHByaW1hcnkgbWVtYmVyIGFkZHJlc3MgJXM6JXUuAFVuYWJsZSB0byBzdGFydCBHcm91cCBSZXBsaWNhdGlvbi4gUmVwbGljYXRpb24gYXBwbGllciBpbmZyYXN0cnVjdHVyZSBpcyBub3QgaW5pdGlhbGl6ZWQgc2luY2UgdGhlIHNlcnZlciB3YXMgc3RhcnRlZCB3aXRoIHNlcnZlcl9pZD0wLiBQbGVhc2UsIHJlc3RhcnQgdGhlIHNlcnZlciB3aXRoIHNlcnZlcl9pZCBsYXJnZXIgdGhhbiAwLgBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIG11c3QgYmUgZW1wdHkgb24gZ3JvdXAgc3RhcnQuIEN1cnJlbnQgdmFsdWU6ICclcycASXQgd2FzIG5vdCBwb3NzaWJsZSB0byBndWFyYW50ZWUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHBsdWdpbiBzdHJ1Y3R1cmVzIG9uIHNlcnZlciBzdGFydABDb3VsZCBub3QgZW5hYmxlIHRoZSBzZXJ2ZXIgcmVhZCBvbmx5IG1vZGUgYW5kIGd1YXJhbnRlZSBhIHNhZmUgcmVjb3ZlcnkgZXhlY3V0aW9uAEVycm9yIG9uIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lIGluaXRpYWxpemF0aW9uAENhbid0IHN0YXJ0IGdyb3VwIHJlcGxpY2F0aW9uIG9uIHNlY29uZGFyeSBtZW1iZXIgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIHdoaWxlIGFzeW5jaHJvbm91cyByZXBsaWNhdGlvbiBjaGFubmVscyBhcmUgcnVubmluZy4ARXJyb3Igb24gZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUgc3RhcnQAVGltZW91dCBvbiB3YWl0IGZvciB2aWV3IGFmdGVyIGpvaW5pbmcgZ3JvdXAARXJyb3IgY2FsbGluZyBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMATWVtYmVyIHNlcnZlcl91dWlkIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBncm91cC4gU2VydmVyX3V1aWQgJXMgbWF0Y2hlcyBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICVzLgBNZW1iZXIgY29uZmlndXJhdGlvbjogbWVtYmVyX2lkOiAlbHU7IG1lbWJlcl91dWlkOiAiJXMiOyBzaW5nbGUtcHJpbWFyeSBtb2RlOiAiJXMiOyBncm91cF9yZXBsaWNhdGlvbl9hdXRvX2luY3JlbWVudF9pbmNyZW1lbnQ6ICVsdTsgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZDogIiVzIjsAVW5hYmxlIHRvIGNvbmZpcm0gd2hldGhlciB0aGUgc2VydmVyIGhhcyBsZWZ0IHRoZSBncm91cCBvciBub3QuIENoZWNrIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJzIHRvIGNoZWNrIGdyb3VwIG1lbWJlcnNoaXAgaW5mb3JtYXRpb24uAFNraXBwaW5nIGxlYXZlIG9wZXJhdGlvbjogY29uY3VycmVudCBhdHRlbXB0IHRvIGxlYXZlIHRoZSBncm91cCBpcyBvbi1nb2luZy4AU2tpcHBpbmcgbGVhdmUgb3BlcmF0aW9uOiBtZW1iZXIgYWxyZWFkeSBsZWZ0IHRoZSBncm91cC4AR29pbmcgdG8gd2FpdCBmb3IgdmlldyBtb2RpZmljYXRpb24AV2hpbGUgbGVhdmluZyB0aGUgZ3JvdXAgZHVlIHRvIGEgc3RvcCwgc2h1dGRvd24gb3IgZmFpbHVyZSB0aGVyZSB3YXMgYSB0aW1lb3V0IHJlY2VpdmluZyBhIHZpZXcgY2hhbmdlLiBUaGlzIGNhbiBsZWFkIHRvIGEgcG9zc2libGUgaW5jb25zaXN0ZW50IHN0YXRlLiBDaGVjayB0aGUgbG9nIGZvciBtb3JlIGRldGFpbHMAUmVxdWVzdGluZyB0byBsZWF2ZSB0aGUgZ3JvdXAgZGVzcGl0ZSBvZiBub3QgYmVpbmcgYSBtZW1iZXIAUGx1Z2luICdncm91cF9yZXBsaWNhdGlvbicgaXMgc3RvcHBpbmcuAFBsdWdpbiAnZ3JvdXBfcmVwbGljYXRpb24nIGhhcyBiZWVuIHN0b3BwZWQuAE9uIHBsdWdpbiBzaHV0ZG93biBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIGVuYWJsZSB0aGUgc2VydmVyIHJlYWQgb25seSBtb2RlLiBMb2NhbCB0cmFuc2FjdGlvbnMgd2lsbCBiZSBhY2NlcHRlZCBhbmQgY29tbWl0dGVkLgBPbiBzaHV0ZG93biB0aGVyZSB3YXMgYSB0aW1lb3V0IG9uIHRoZSBHcm91cCBSZXBsaWNhdGlvbiByZWNvdmVyeSBtb2R1bGUgdGVybWluYXRpb24uIENoZWNrIHRoZSBsb2cgZm9yIG1vcmUgZGV0YWlscwBPbiBzaHV0ZG93biB0aGVyZSB3YXMgYSB0aW1lb3V0IG9uIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBhcHBsaWVyIHRlcm1pbmF0aW9uLgBVbmV4cGVjdGVkIGZhaWx1cmUgd2hpbGUgc2h1dHRpbmcgZG93biByZWdpc3RyeSBtb2R1bGUhAEZhaWx1cmUgZHVyaW5nIEdyb3VwIFJlcGxpY2F0aW9uIGhhbmRsZXIgaW5pdGlhbGl6YXRpb24ARmFpbHVyZSB3aGVuIHJlZ2lzdGVyaW5nIHRoZSBzZXJ2ZXIgc3RhdGUgb2JzZXJ2ZXJzAEZhaWx1cmUgd2hlbiByZWdpc3RlcmluZyB0aGUgdHJhbnNhY3Rpb25zIHN0YXRlIG9ic2VydmVycwBGYWlsdXJlIHdoZW4gcmVnaXN0ZXJpbmcgdGhlIGJpbmxvZyBzdGF0ZSBvYnNlcnZlcnMAVW5hYmxlIHRvIHN0YXJ0IEdyb3VwIFJlcGxpY2F0aW9uIG9uIGJvb3QARmFpbHVyZSB3aGVuIHN0b3BwaW5nIEdyb3VwIFJlcGxpY2F0aW9uIG9uIHBsdWdpbiB1bmluc3RhbGwARmFpbHVyZSB3aGVuIHVucmVnaXN0ZXJpbmcgdGhlIHNlcnZlciBzdGF0ZSBvYnNlcnZlcnMARmFpbHVyZSB3aGVuIHVucmVnaXN0ZXJpbmcgdGhlIHRyYW5zYWN0aW9ucyBzdGF0ZSBvYnNlcnZlcnMARmFpbHVyZSB3aGVuIHVucmVnaXN0ZXJpbmcgdGhlIGJpbmxvZyBzdGF0ZSBvYnNlcnZlcnMAQWxsIEdyb3VwIFJlcGxpY2F0aW9uIHNlcnZlciBvYnNlcnZlcnMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSB1bnJlZ2lzdGVyZWQAVW5hYmxlIHRvIHBhcnNlIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lLgBVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuAENhbm5vdCBzdGFydCB0aGUgR3JvdXAgUmVwbGljYXRpb24gYXBwbGllciBhcyBhIHByZXZpb3VzIHNodXRkb3duIGlzIHN0aWxsIHJ1bm5pbmc6IFRoZSB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgaXRzIHRhc2sgaXMgY29tcGxldGUuAFVuYWJsZSB0byBpbml0aWFsaXplIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBhcHBsaWVyIG1vZHVsZS4AR3JvdXAgUmVwbGljYXRpb24gYXBwbGllciBtb2R1bGUgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIQBHcm91cCBjb21tdW5pY2F0aW9uIFNTTCBjb25maWd1cmF0aW9uOiBncm91cF9yZXBsaWNhdGlvbl9zc2xfbW9kZTogIiVzIjsgc2VydmVyX2tleV9maWxlOiAiJXMiOyBzZXJ2ZXJfY2VydF9maWxlOiAiJXMiOyBjbGllbnRfa2V5X2ZpbGU6ICIlcyI7IGNsaWVudF9jZXJ0X2ZpbGU6ICIlcyI7IGNhX2ZpbGU6ICIlcyI7IGNhX3BhdGg6ICIlcyI7IGNpcGhlcjogIiVzIjsgdGxzX3ZlcnNpb246ICIlcyI7IHRsc19jaXBoZXJzdWl0ZXM6ICIlcyI7IGNybF9maWxlOiAiJXMiOyBjcmxfcGF0aDogIiVzIjsgc3NsX2ZpcHNfbW9kZTogIiVzIgBNeVNRTCBzZXJ2ZXIgZG9lcyBub3QgaGF2ZSBTU0wgc3VwcG9ydCBhbmQgZ3JvdXBfcmVwbGljYXRpb25fc3NsX21vZGUgaXMgIiVzIiwgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gd2lsbCBhYm9ydABHcm91cCBjb21tdW5pY2F0aW9uIFNTTCBjb25maWd1cmF0aW9uOiBncm91cF9yZXBsaWNhdGlvbl9zc2xfbW9kZTogIiVzIgBVbmFibGUgdG8gaW5pdGlhbGl6ZSB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUAQmlubG9nIG11c3QgYmUgZW5hYmxlZCBmb3IgR3JvdXAgUmVwbGljYXRpb24AR3RpZCBtb2RlIHNob3VsZCBiZSBPTiBmb3IgR3JvdXAgUmVwbGljYXRpb24ATE9HX1JFUExJQ0FfVVBEQVRFUyBzaG91bGQgYmUgT04gZm9yIEdyb3VwIFJlcGxpY2F0aW9uAEV4dHJhY3Rpb24gb2YgdHJhbnNhY3Rpb24gd3JpdGUgc2V0cyByZXF1aXJlcyBhbiBoYXNoIGFsZ29yaXRobSBjb25maWd1cmF0aW9uLiBQbGVhc2UsIGRvdWJsZSBjaGVjayB0aGF0IHRoZSBwYXJhbWV0ZXIgdHJhbnNhY3Rpb24td3JpdGUtc2V0LWV4dHJhY3Rpb24gaXMgc2V0IHRvIGEgdmFsaWQgYWxnb3JpdGhtLgBBcHBsaWVyIG1ldGFkYXRhIHJlcG9zaXRvcnkgbXVzdCBiZSBzZXQgdG8gVEFCTEUAQ29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5IG11c3QgYmUgc2V0IHRvIFRBQkxFLgBJbiBvcmRlciB0byB1c2UgcGFyYWxsZWwgYXBwbGllciBvbiBHcm91cCBSZXBsaWNhdGlvbiwgcGFyYW1ldGVyIHJlcGxpY2EtcGFyYWxsZWwtdHlwZSBtdXN0IGJlIHNldCB0byAnTE9HSUNBTF9DTE9DSycuAEdyb3VwIFJlcGxpY2F0aW9uIHJlcXVpcmVzIHJlcGxpY2EtcHJlc2VydmUtY29tbWl0LW9yZGVyIHRvIGJlIHNldCB0byBPTiB3aGVuIHVzaW5nIG1vcmUgdGhhbiAxIGFwcGxpZXIgdGhyZWFkcy4ASXQgaXMgbm90IGFsbG93ZWQgdG8gcnVuIHNpbmdsZSBwcmltYXJ5IG1vZGUgd2l0aCAnZ3JvdXBfcmVwbGljYXRpb25fZW5mb3JjZV91cGRhdGVfZXZlcnl3aGVyZV9jaGVja3MnIGVuYWJsZWQuAGVycm9yX21lc3NhZ2U6ICVzAFRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lIG9wdGlvbiBpcyBtYW5kYXRvcnkAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgJyVzJyBpcyBub3QgYSB2YWxpZCBVVUlELCBpdHMgbGVuZ3RoIGlzIHRvbyBiaWcAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgJyVzJyBpcyBub3QgYSB2YWxpZCBVVUlEAGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9taW5fcXVvdGEgY2Fubm90IGJlIGxhcmdlciB0aGFuIGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9tYXhfcXVvdGEAZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21pbl9yZWNvdmVyeV9xdW90YSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21heF9xdW90YQBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWF4X3F1b3RhIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21pbl9xdW90YSBvciBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWluX3JlY292ZXJ5X3F1b3RhAFRoZSBnaXZlbiB2YWx1ZSBmb3IgcmVjb3Zlcnkgc3NsIG9wdGlvbiAnZ3JvdXBfcmVwbGljYXRpb25fJXMnIGlzIGludmFsaWQgYXMgaXRzIGxlbmd0aCBpcyBiZXlvbmQgdGhlIGxpbWl0AFRoZXJlIGlzIG9uZSBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIG9wZXJhdGlvbiBhbHJlYWR5IG9uZ29pbmcAZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyBjYW4gb25seSBiZSB1cGRhdGVkIHdoZW4gR3JvdXAgUmVwbGljYXRpb24gaXMgcnVubmluZyBhbmQgYSBtYWpvcml0eSBvZiB0aGUgbWVtYmVycyBhcmUgdW5yZWFjaGFibGUASW5pdGlhbGl6ZWQgZ3JvdXAgY29tbXVuaWNhdGlvbiB3aXRoIGNvbmZpZ3VyYXRpb246IGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWU6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX2xvY2FsX2FkZHJlc3M6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX3NlZWRzOiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9ib290c3RyYXBfZ3JvdXA6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX3BvbGxfc3Bpbl9sb29wczogJWx1OyBncm91cF9yZXBsaWNhdGlvbl9jb21wcmVzc2lvbl90aHJlc2hvbGQ6ICVsdTsgZ3JvdXBfcmVwbGljYXRpb25faXBfYWxsb3dsaXN0OiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9jb21tdW5pY2F0aW9uX2RlYnVnX29wdGlvbnM6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX21lbWJlcl9leHBlbF90aW1lb3V0OiAnJWx1JzsgZ3JvdXBfcmVwbGljYXRpb25fY29tbXVuaWNhdGlvbl9tYXhfbWVzc2FnZV9zaXplOiAlbHU7IGdyb3VwX3JlcGxpY2F0aW9uX21lc3NhZ2VfY2FjaGVfc2l6ZTogJyVsdXU7IGdyb3VwX3JlcGxpY2F0aW9uX2NvbW11bmljYXRpb25fc3RhY2s6ICclbHUnAFVua25vd24gZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBwaXBlbGluZSByZXF1ZXN0ZWQAVW5hYmxlIHRvIGJvb3RzdHJhcCBncm91cCByZXBsaWNhdGlvbiBldmVudCBoYW5kbGluZyBpbmZyYXN0cnVjdHVyZS4gVW5rbm93biBoYW5kbGVyIHR5cGU6ICVkAE9uZSBvZiB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBoYW5kbGVycyBpcyBudWxsIGR1ZSB0byBhbiBpbml0aWFsaXphdGlvbiBlcnJvcgBBIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgaGFuZGxlciwgbWFya2VkIGFzIHVuaXF1ZSwgaXMgYWxyZWFkeSBpbiB1c2UuAEEgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBoYW5kbGVyIHJvbGUsIHRoYXQgd2FzIG1hcmtlZCBhcyB1bmlxdWUsIGlzIGFscmVhZHkgaW4gdXNlLgBFcnJvciBvbiBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGhhbmRsZXIgaW5pdGlhbGl6YXRpb24ARXJyb3Igd2hlbiBpbml0aWFsaXppbmcgYSBzZXNzaW9uIHRocmVhZCBmb3IgaW50ZXJuYWwgc2VydmVyIGNvbm5lY3Rpb24uAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gVGhlIGludGVybmFsIHNlcnZlciBjb21tdW5pY2F0aW9uIHNlc3Npb24gaXMgbm90IGluaXRpYWxpemVkAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gVGhlIGludGVybmFsIHNlcnZlciBzZXNzaW9uIHdhcyBraWxsZWQgb3Igc2VydmVyIGlzIHNodXR0aW5nIGRvd24uAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gR290IGludGVybmFsIFNRTCBlcnJvcjogJXMoJWQpAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gSW50ZXJuYWwgZmFpbHVyZS4ARXJyb3IsIG1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgZXhjZWVkZWQgd2hlbiB3YWl0aW5nIGZvciB0aGUgaW50ZXJuYWwgc2VydmVyIHNlc3Npb24gc3RhdGUgdG8gYmUgb3BlcmF0aW5nAEVycm9yIHdoZW4gdHJ5aW5nIHRvIGZldGNoIHNlY3VyaXR5IGNvbnRleHQgd2hlbiBjb250YWN0aW5nIHRoZSBzZXJ2ZXIgZm9yIGludGVybmFsIHBsdWdpbiByZXF1ZXN0cy4AVGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyB0aGUgc2VydmVyIHdpdGggdXNlcjogJXMuIE1ha2Ugc3VyZSB0aGUgdXNlciBpcyBwcmVzZW50IGluIHRoZSBzZXJ2ZXIgYW5kIHRoYXQgdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlIHdhcyBydW4gY29ycmVjdGx5LgBGYWlsZWQgdG8gZXN0YWJsaXNoIGFuIGludGVybmFsIHNlcnZlciBjb25uZWN0aW9uIHRvIGV4ZWN1dGUgcGx1Z2luIG9wZXJhdGlvbnMgc2luY2UgdGhlIHNlcnZlciBkb2VzIG5vdCBoYXZlIGF2YWlsYWJsZSBjb25uZWN0aW9ucywgcGxlYXNlIGluY3JlYXNlIEBAR0xPQkFMLk1BWF9DT05ORUNUSU9OUy4gU2VydmVyIGVycm9yOiAlaS4ARmFpbGVkIHRvIGVzdGFibGlzaCBhbiBpbnRlcm5hbCBzZXJ2ZXIgY29ubmVjdGlvbiB0byBleGVjdXRlIHBsdWdpbiBvcGVyYXRpb25zLiBTZXJ2ZXIgZXJyb3I6ICVpLiBTZXJ2ZXIgZXJyb3IgbWVzc2FnZTogJXMAVGhpcyBtZW1iZXIgY291bGQgbm90IHJlYWNoIGEgbWFqb3JpdHkgb2YgdGhlIG1lbWJlcnMgZm9yIG1vcmUgdGhhbiAlbGQgc2Vjb25kcy4gVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAgYXMgaW5zdHJ1Y3RlZCBieSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdW5yZWFjaGFibGVfbWFqb3JpdHlfdGltZW91dCBvcHRpb24uAFRoZSBzZXJ2ZXIgd2FzIGF1dG9tYXRpY2FsbHkgc2V0IGludG8gcmVhZCBvbmx5IG1vZGUgYWZ0ZXIgYW4gZXJyb3Igd2FzIGRldGVjdGVkLgBVbmFibGUgdG8gbG9nIG5vdGlmaWNhdGlvbiB0byB0YWJsZSAoZXJybm86ICVsdSkgKHJlczogJWQpISBNZXNzYWdlOiAlcwBGYWlsdXJlIGluIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lICclcycgaW5pdGlhbGl6YXRpb24AVW5hYmxlIHRvIHNldCB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUgbG9nZ2VyAEN1cnJlbnQgZGVidWcgb3B0aW9ucyBhcmU6ICclcycuAFNvbWUgZGVidWcgb3B0aW9ucyBpbiAnJXMnIGFyZSBub3QgdmFsaWQuAEVycm9yIGNhbGxpbmcgZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzIHdoaWxlIHRyeWluZyB0byBsZWF2ZSB0aGUgZ3JvdXAATWVtYmVyIGlzIG5vdCBPTkxJTkUsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBmb3JjZSBhIG5ldyBncm91cCBtZW1iZXJzaGlwAEVycm9yIGNhbGxpbmcgZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzAEVycm9yIHNldHRpbmcgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB2YWx1ZSAnJXMnIG9uIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB2YWx1ZSAnJXMnIHdhcyBzZXQgaW4gdGhlIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBUaW1lb3V0IG9uIHdhaXQgZm9yIHZpZXcgYWZ0ZXIgc2V0dGluZyBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHZhbHVlICclcycgaW50byBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMAQnJvYWRjYXN0IG9mIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMgbWVzc2FnZSBmYWlsZWQuIE1lc3NhZ2UgaXMgdG9vIGJpZy4ARXJyb3Igd2hpbGUgc2VuZGluZyBzdGF0cyBtZXNzYWdlAEZsb3cgY29udHJvbCAtIHVwZGF0ZSBtZW1iZXIgc3RhdHM6ICVzIHN0YXRzIGNlcnRpZmllcl9xdWV1ZSAlZCwgYXBwbGllcl9xdWV1ZSAlZCBjZXJ0aWZpZWQgJWxkICglbGQpLCBhcHBsaWVkICVsZCAoJWxkKSwgbG9jYWwgJWxkICglbGQpLCBxdW90YSAlbGQgKCVsZCkgbW9kZT0lZABGbG93IGNvbnRyb2w6IHRocm90dGxpbmcgdG8gJWxkIGNvbW1pdHMgcGVyICVsZCBzZWMsIHdpdGggJWQgd3JpdGluZyBhbmQgJWQgbm9uLXJlY292ZXJpbmcgbWVtYmVycywgbWluIGNhcGFjaXR5ICVsbGQsIGxpbSB0aHJvdHRsZSAlbGxkAFVuYWJsZSB0byBjb252ZXJ0IGEgcGFja2V0IGludG8gYW4gZXZlbnQgb24gdGhlIGFwcGxpZXIuIEVycm9yOiAlcwBGYWlsZWQgdG8gY3JlYXRlIGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGNhY2hlLgBGYWlsZWQgdG8gcmVpbml0IGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGNhY2hlIGZvciB3cml0ZS4AVW5hYmxlIHRvIGNvbnZlcnQgdGhlIGV2ZW50IGludG8gYSBwYWNrZXQgb24gdGhlIGFwcGxpZXIuIEVycm9yOiAlcwBGYWlsZWQgdG8gZmx1c2ggZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgY2FjaGUuAEZhaWxlZCB0byByZWluaXQgZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgY2FjaGUgZm9yIHJlYWQuAEVycm9yIHN0b3BwaW5nIGFsbCByZXBsaWNhdGlvbiBjaGFubmVscyB3aGlsZSBzZXJ2ZXIgd2FzIGxlYXZpbmcgdGhlIGdyb3VwLiBHb3QgZXJyb3I6ICVkLiBQbGVhc2UgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgbW9yZSBkZXRhaWxzLgAlcwBUaGUgcmVwbGljYSBJTyB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIGlzIHVuYmxvY2tlZCBhcyB0aGUgbWVtYmVyIGlzIGRlY2xhcmVkIE9OTElORSBub3cuAFRoZSByZXBsaWNhIElPIHRocmVhZCBvZiBjaGFubmVsICclcycgd2lsbCBlcnJvciBvdXQgYXMgdGhlIG1lbWJlciBmYWlsZWQgdG8gY29tZSBPTkxJTkUuAFRoZSByZXBsaWNhIGFwcGxpZXIgdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyBpcyB1bmJsb2NrZWQgYXMgdGhlIG1lbWJlciBpcyBkZWNsYXJlZCBPTkxJTkUgbm93LgBUaGUgcmVwbGljYSBhcHBsaWVyIHRocmVhZCBvZiBjaGFubmVsICclcycgd2lsbCBlcnJvciBvdXQgYXMgdGhlIG1lbWJlciBmYWlsZWQgdG8gY29tZSBPTkxJTkUuAExEQVAgYXV0aGVudGljYXRpb24gaW5pdGlhbGl6ZTogZmFpbGVkIHRvIGNyZWF0ZS8gZ2V0IGNvbm5lY3Rpb24gZnJvbSB0aGUgcG9vbC4gAExEQVAgYXV0aGVudGljYXRpb24gZGVfaW5pdGlhbGl6ZSBGYWlsZWQAU2tpcHBpbmcgZ3JvdXAgc2VhcmNoLCBObyBncm91cCBhdHRyaWJ1dGUgbWVudGlvbmVkAFBvb2wgbWF4IHNpemUgaXMgMCwgY29ubmVjdGlvbiBwb29sIGlzIGRpc2FibGVkAENvbm5lY3Rpb24gcG9vbCBpbml0aWFsaXphdGlvbiwgZmFpbGVkIHRvIGNyZWF0ZSBMREFQIG9iamVjdCBjcmVhdG9yAENvbm5lY3Rpb24gcG9vbCBpbml0aWFsaXphdGlvbiwgZmFpbGVkIHRvIGNyZWF0ZSBMREFQIG9iamVjdABMREFQIFRMUyBjb25maWd1cmF0aW9uAExEQVAgVExTIGNvbm5lY3Rpb24ATERBUCBwb29sIGlzIG5vdCBjcmVhdGVkLgBMREFQIHBvb2wgaXMgaW5pdGlhbGl6aW5nAExEQVAgcG9vbCBpcyBkZS1pbml0aWFsaXppbmcAUG9vbCBtYXggc2l6ZSBvbGQgYW5kIG5ldyB2YWx1ZXMgYXJlIDAATERBUCBwb29sIGlzIHJlLWluaXRpYWxpemluZwBQbHVnLWluIGhhcyBmYWlsZWQgdG8gd3JpdGUgdGhlIHBhY2tldC4AU2V0dGluZyBMREFQIHVzZXIgbmFtZSBhcyA6ICVzAFVzZXIgYXV0aGVudGljYXRpb24gZGF0YTogJXMgc2l6ZTogJWx1AFVzZXIgaXMgYXV0aGVudGljYXRlZCBhczogJXMgZXh0ZXJuYWwgdXNlcjogJXMAR3JvdXAgc2VhcmNoIGluZm9ybWF0aW9uIGJhc2UgRE46ICVzIHNjb3BlOiAlZCBmaWx0ZXI6ICVzIGF0dHJpYnV0ZTogJXMAU3BlY2lhbCBoYW5kbGluZyBmb3IgZ3JvdXAgc2VhcmNoLCB7R0F9IGZvdW5kAEdyb3VwIHNlYXJjaCBzcGVjaWFsIGhhbmRsaW5nLCBncm91cCBmdWxsIEROIGZvdW5kLiAAVXNlciAlcyBpcyBub3QgbWVtYmVyIG9mIGFueSBncm91cC4AVXNlciAlcyBpcyBtZW1iZXIgb2YgbW9yZSB0aGFuIG9uZSBncm91cABGb3IgdXNlciAlcyBoYXMgbXVsdGlwbGUgdXNlciBncm91cCBuYW1lcy4gUGxlYXNlIGNoZWNrIGlmIGdyb3VwIGF0dHJpYnV0ZSBuYW1lIGlzIGNvcnJlY3QAU2VhcmNoZWQgZ3JvdXAgbmFtZTogJXMATERBUCBhdXRoZW50aWNhdGlvbiBvYmplY3QgY3JlYXRpb24gdGltZV9zdGFtcDogJXMgZG46ICVzAENlcnRpZmljYXRlIG5hbWU6ICVzAEZhaWxlZCB0byBwb29sIGRlLWluaXRpYWxpemVkOiBwb29sIGlzIGFscmVhZHkgcmVjb25zdHJ1Y3RpbmcAUG9vbCBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IHBvb2wgaXMgYWxyZWFkeSBpbml0aWFsaXplZABQb29sIGluaXRpYWxpemF0aW9uIGZhaWxlZDogcG9vbCBpcyBpbml0aWFsaXppbmcAUG9vbCBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IHBvb2wgaXMgZGUtaW5pdGlhbGl6aW5nAEZhaWxlZCB0byBwb29sIGRlaW5pdGlhbGl6ZWQ6IHBvb2wgaXMgYWxyZWFkeSByZWNvbnN0cnVjdGluZwBGYWlsZWQgdG8gcG9vbCBkZWluaXRpYWxpemVkIDogcG9vbCBpcyBub3QgcmVhZHkATGRhcF9jb25uZWN0aW9uX3Bvb2w6OmdldDogRmFpbGVkIHRvIHJldHVybiBjb25uZWN0aW9uIGFzIHBsdWctaW4gaXMgbm90IHJlYWR5L2luaXRpYWxpemluZy9kZS1pbml0aWFsaXppbmcAQ29ubmVjdGlvbiBwb29sIGhhcyBmYWlsZWQgdG8gaW5pdGlhbGl6ZWQATGRhcF9jb25uZXRpb25fcG9vbDo6Z2V0IExEQVAgbWF4aW11bSBjb25uZWN0aW9uIGFsbG93ZWQgc2l6ZSBpcyByZWFjaGVkLiBJbmNyZWFzZSB0aGUgbWF4aW11bSBsaW1pdC4AU2V0IG1heCBwb29sIHNpemUgZmFpbGVkLgBQbHVnLWluIGhhcyBmYWlsZWQgdG8gcmVhZCB0aGUgcGFja2V0IGZyb20gY2xpZW50AExkYXBfYXV0aGVudGljYXRpb246OmluaXRpYWxpemU6IGNyZWF0aW5nIG5ldyBMREFQIGNvbm5lY3Rpb24uIABMZGFwX2F1dGhlbnRpY2F0aW9uOjppbml0aWFsaXplOiBnZXR0aW5nIGNvbm5lY3Rpb24gZnJvbSBwb29sLiAATGRhcF9hdXRoZW50aWNhdGlvbjo6ZGVfaW5pdGlhbGl6ZSBwdXR0aW5nIGJhY2sgY29ubmVjdGlvbiBpbiB0aGUgcG9vbABMZGFwX2F1dGhlbnRpY2F0aW9uOjpzZWFyY2hfdXNlcl9ncm91cCBubyBncm91cCBhdHRyaWJ1dGUgZm91bmQATGRhcF9jb25uZXRpb25fcG9vbDo6cHV0IGxkYXAgaW5mbyBudWxsAExkYXBfY29ubmVjdGlvbl9wb29sOjpwdXQgY29ubmVjdGlvbiBpcyBmcmVlaW5nLiAATGRhcF9jb25uZWN0aW9uX3Bvb2w6OnB1dCBjb25uZWN0aW9uIGluIHB1c2hlZCBpbiB0aGUgcG9vbABMZGFwX2Nvbm5lY3Rpb25fY3JlYXRvcjo6TGRhcF9jb25uZWN0aW9uX2NyZWF0b3IAc3RhcnRpbmcgVExTAExkYXBfY29ubmVjdGlvbl9wb29sOjpnZXQ6IChsZGFwX2luZm8gPT0gTlVMTCl8fCAoKmxkYXBfaW5mbykATGRhcF9jb25uZWN0aW9uX3Bvb2w6OmRlaW5pdDogZGVsZXRpbmcgY29ubmVjdGlvbiBrZXkgJXMAIExkYXBfY29ubmVjdGlvbl9wb29sOjpnZXQgcG9vbGVkIGNvbm5lY3Rpb24ga2V5OiAlcwBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6Z2V0IGNyZWF0ZSBjb25uZWN0aW9uIGtleTogJXMATERBUCBjb21tdW5pY2F0aW9uIGhvc3QgJXMgcG9ydCAldQBTZW5kaW5nIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB0byBjbGllbnQgOiAlcwBTQVNMIHJlcXVlc3QgcmVjZWl2ZWQgZnJvbSBteXNxbCBjbGllbnQ6ICVzAExkYXBfc2FzbF9hdXRoZW50aWNhdGlvbjo6cHJvY2Vzc19zYXNsIHJjOiAlcwBMZGFwX3Nhc2xfYXV0aGVudGljYXRpb246OnByb2Nlc3Nfc2FzbCBzYXNsIGJpbmQgc3VjY2VlZC4gZG46ICVzIG1ldGhvZDogJXMgc2VydmVyIGNyZWRlbnRpYWw6ICVzAExEQVAgYXV0aGVudGljYXRpb24gc3RhcnRlZCBmb3IgdXNlciBuYW1lOiAlcwAlcwBMREFQIGF1dGhlbnRpY2F0aW9uIGluaXRpYWxpemUgaXMgZmFpbGVkIHdpdGg6ICVzAExEQVAgYXV0aGVudGljYXRpb24gZmFpbGVkIG9yIGdyb3VwIHJldHJpZXZhbCBmYWlsZWQ6ICVzAFNlYXJjaCB1c2VyIGdyb3VwIGhhcyBmYWlsZWQ6ICVzAExEQVAgdXNlciBiaW5kIGhhcyBmYWlsZWQ6ICVzAENvbm5lY3Rpb24gcG9vbCBnZXQ6IEZhaWxlZCB0byBjcmVhdGUgTERBUCBjb25uZWN0aW9uLiAlcwBGYWlsZWQgdG8gY3JlYXRlIG5ldyBMREFQIGNvbm5lY3Rpb246ICAlcwBGYWlsZWQgdG8gZXN0YWJsaXNoIFRMUyBjb25uZWN0aW9uOiAgJXMARmFpbGVkIHRvIHNlYXJjaCB1c2VyIGZ1bGwgZG46ICVzAExkYXBfY29ubmVjdGlvbl9wb29sOjpyZWluaXQAVGhlIHBhdGggJyVzJywgZnJvbSB0aGUgTk9USUZZX1NPQ0tFVCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgaXMgdG9vIGxvbmcuIEF0ICV1IGJ5dGVzIGl0IGV4Y2VlZHMgdGhlIGxpbWl0IG9mICV1IGJ5dGVzIGZvciBhbiBBRl9VTklYIHNvY2tldC4ARmFpbGVkIHRvIGNvbm5lY3QgdG8gc3lzdGVtZCBub3RpZmljYXRpb24gc29ja2V0IG5hbWVkICVzLiBFcnJvcjogJyVzJwBGYWlsZWQgdG8gd3JpdGUgJyVzJyB0byBzeXN0ZW1kIG5vdGlmaWNhdGlvbi4gRXJyb3I6ICclcycAQ2Fubm90IHJlcGxpY2F0ZSB0byBzZXJ2ZXIgd2l0aCBzZXJ2ZXJfdXVpZD0nJS4zNnMnIGJlY2F1c2UgdGhlIHByZXNlbnQgc2VydmVyIGhhcyBwdXJnZWQgcmVxdWlyZWQgYmluYXJ5IGxvZ3MuIFRoZSBjb25uZWN0aW5nIHNlcnZlciBuZWVkcyB0byByZXBsaWNhdGUgdGhlIG1pc3NpbmcgdHJhbnNhY3Rpb25zIGZyb20gZWxzZXdoZXJlLCBvciBiZSByZXBsYWNlZCBieSBhIG5ldyBzZXJ2ZXIgY3JlYXRlZCBmcm9tIGEgbW9yZSByZWNlbnQgYmFja3VwLiBUbyBwcmV2ZW50IHRoaXMgZXJyb3IgaW4gdGhlIGZ1dHVyZSwgY29uc2lkZXIgaW5jcmVhc2luZyB0aGUgYmluYXJ5IGxvZyBleHBpcmF0aW9uIHBlcmlvZCBvbiB0aGUgcHJlc2VudCBzZXJ2ZXIuICVzLgBJbnNlY3VyZSBjb25maWd1cmF0aW9uIGZvciAtLXBpZC1maWxlOiBMb2NhdGlvbiAnJXMnIGluIHRoZSBwYXRoIGlzIGFjY2Vzc2libGUgdG8gYWxsIE9TIHVzZXJzLiBDb25zaWRlciBjaG9vc2luZyBhIGRpZmZlcmVudCBkaXJlY3RvcnkuAENhbid0IHN0YXJ0IHNlcnZlcjogY2FuJ3QgY2hlY2sgUElEIGZpbGVwYXRoOiAlcwB2YWxpZGF0ZV9wYXNzd29yZCBzdGF0dXMgdmFyaWFibGVzIHJlZ2lzdHJhdGlvbiBmYWlsZWQuAHZhbGlkYXRlX3Bhc3N3b3JkIHN0YXR1cyB2YXJpYWJsZXMgdW5yZWdpc3RyYXRpb24gZmFpbGVkLgBEaWN0aW9uYXJ5IGZpbGUgb3BlbiBmYWlsZWQAZ2l2ZW4gcGFzc3dvcmQgc3RyaW5nIGNvdWxkIGJlIG51bGwAZmFpbGVkIHRvIGNvbnZlcnQgdGhlIHBhc3N3b3JkIHN0cmluZyB0byBsb3dlciBjYXNlAGZhaWxlZCB0byBjb252ZXJ0IHRoZSBwYXNzd29yZCBzdHJpbmcgaW50byBhIGJ1ZmZlcgBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQgZm9yIHN0cmluZyBoYW5kbGVyAFNpbmNlIHRoZSB2YWxpZGF0ZV9wYXNzd29yZF9wb2xpY3kgaXMgbWVudGlvbmVkIGFzIFN0cm9uZywgZGljdGlvbmFyeSBmaWxlIG11c3QgYmUgc3BlY2lmaWVkAGNvbnZlcnRfdG9fYnVmZmVyIHNlcnZpY2UgZmFpbGVkACVzIHZhcmlhYmxlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuACVzIHZhcmlhYmxlIHVucmVnaXN0cmF0aW9uIGZhaWxlZC4AUGxlYXNlIHNwZWNpZnkgb3B0aW9ucyBzcGVjaWZpYyB0byBrZXlyaW5nIG1pZ3JhdGlvbi4gQW55IGFkZGl0aW9uYWwgb3B0aW9ucyBjYW4gYmUgaWdub3JlZC4gTk9URTogQWx0aG91Z2ggc29tZSBvcHRpb25zIGFyZSB2YWxpZCwgbWlncmF0aW9uIHRvb2wgY2FuIHN0aWxsIHJlcG9ydCBlcnJvciBleGFtcGxlOiBwbHVnaW4gdmFyaWFibGVzIGZvciB3aGljaCBwbHVnaW4gaXMgbm90IGxvYWRlZCB5ZXQuAEludmFsaWQgZGVmYXVsdCBjb2xsYXRpb24gJXM6IHV0ZjhtYjRfMDkwMF9haV9jaSBvciB1dGY4bWI0X2dlbmVyYWxfY2kgZXhwZWN0ZWQAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMARmFpbGVkIHRvIHNldCBOVU1BIG1lbW9yeSBwb2xpY3kgb2YgYnVmZmVyIHBvb2wgcGFnZSBmcmFtZXMgd2l0aCBtYmluZCglcCwlenUsJXMsLi4uLC4uLiwlcykgZmFpbGVkIHdpdGggJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAUGFnZSBzdGlsbCBmaXhlZCBvciBkaXJ0eSBhdCBzaHV0ZG93bi4gJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAV2FpdGVkIGZvciAldSBzZWNzIGZvciBoYXNoIGluZGV4IHJlZl9jb3VudCAoJXp1KSB0byBkcm9wIHRvIDAuIGluZGV4OiAiJXMiIHRhYmxlOiAiJXMiACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFRhYmxlIGZsYWdzIGFyZSAweCVseCBpbiB0aGUgZGF0YSBkaWN0aW9uYXJ5IGJ1dCB0aGUgZmxhZ3MgaW4gZmlsZSAlcyAgYXJlIDB4JWxseCEAQ2FuJ3QgcmVhZCBlbmNyeXB0aW9uIGtleSBmcm9tIGZpbGUgJXMhAENhbm5vdCBjbG9zZSBmaWxlICVzLCBiZWNhdXNlIG5fcGVuZGluZ19mbHVzaGVzICV6dQBDYW5ub3QgY2xvc2UgZmlsZSAlcywgYmVjYXVzZSBtb2RpZmljYXRpb24gY291bnQgJWxsZCAhPSBmbHVzaCBjb3VudCAlbGxkAENhbm5vdCBjbG9zZSBmaWxlICVzLCBiZWNhdXNlIGl0IGlzIGluIHVzZQBPcGVuIGZpbGUgbGlzdCBsZW4gaW4gc2hhcmQgJXp1IGlzICVsbHUAVGFibGVzcGFjZSAlcywgd2FpdGluZyBmb3IgSU8gdG8gc3RvcCBmb3IgJWxsZCBzZWNvbmRzACVzACVzACVzACVzACVzAFlvdSBtdXN0IHJhaXNlIHRoZSB2YWx1ZSBvZiBpbm5vZGJfb3Blbl9maWxlcyBpbiBteS5jbmYhIFJlbWVtYmVyIHRoYXQgSW5ub0RCIGtlZXBzIGFsbCByZWRvIGxvZyBmaWxlcyBhbmQgYWxsIHN5c3RlbSB0YWJsZXNwYWNlIGZpbGVzIG9wZW4gZm9yIHRoZSB3aG9sZSB0aW1lIG15c3FsZCBpcyBydW5uaW5nLCBhbmQgbmVlZHMgdG8gb3BlbiBhbHNvIHNvbWUgLmliZCBmaWxlcyBpZiB0aGUgZmlsZS1wZXItdGFibGUgc3RvcmFnZSBtb2RlbCBpcyB1c2VkLiBDdXJyZW50IG9wZW4gZmlsZXMgJXp1LCBtYXggYWxsb3dlZCBvcGVuIGZpbGVzICV6dS4ATWF4IHRhYmxlc3BhY2UgaWQgaXMgdG9vIGhpZ2gsICVsdQBUcnlpbmcgdG8gYWNjZXNzIG1pc3NpbmcgdGFibGVzcGFjZSAlbHUAVHJ5aW5nIHRvIGNsb3NlL2RlbGV0ZSB0YWJsZXNwYWNlICclcycgYnV0IHRoZXJlIGFyZSAlbHUgcGVuZGluZyBvcGVyYXRpb25zIG9uIGl0LgBUcnlpbmcgdG8gZGVsZXRlL2Nsb3NlIHRhYmxlc3BhY2UgJyVzJyBidXQgdGhlcmUgYXJlICVsdSBmbHVzaGVzIGFuZCAlenUgcGVuZGluZyBJL08ncyBvbiBpdC4AJXMAQ2Fubm90IGRlbGV0ZSB0YWJsZXNwYWNlICVsdSBiZWNhdXNlIGl0IGlzIG5vdCBmb3VuZCBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUuAFdoaWxlIGRlbGV0aW5nIHRhYmxlc3BhY2UgJWx1IGluIERJU0NBUkQgVEFCTEVTUEFDRS4gRmlsZSByZW5hbWUvZGVsZXRlIGZhaWxlZDogJXMAQ2Fubm90IGRlbGV0ZSB0YWJsZXNwYWNlICVsdSBpbiBESVNDQVJEIFRBQkxFU1BBQ0U6ICVzAENhbm5vdCByZW5hbWUgJyVzJyB0byAnJXMnIGZvciBzcGFjZSBJRCAlbHUgYmVjYXVzZSB0aGUgc291cmNlIGZpbGUgZG9lcyBub3QgZXhpc3QuAENhbm5vdCByZW5hbWUgJyVzJyB0byAnJXMnIGZvciBzcGFjZSBJRCAlbHUgYmVjYXVzZSB0aGUgdGFyZ2V0IGZpbGUgZXhpc3RzLiBSZW1vdmUgdGhlIHRhcmdldCBmaWxlIGFuZCB0cnkgYWdhaW4uAENhbm5vdCByZW5hbWUgZmlsZSAnJXMnIChzcGFjZSBpZCAlbHUpIHJldHJpZWQgJWxsdSB0aW1lcy4gVGhlcmUgYXJlIGVpdGhlciBwZW5kaW5nIElPcyBvciBmbHVzaGVzIG9yIHRoZSBmaWxlIGlzIGJlaW5nIGV4dGVuZGVkLgBDYW5ub3QgZmluZCBzcGFjZSBpZCAlbHUgaW4gdGhlIHRhYmxlc3BhY2UgbWVtb3J5IGNhY2hlLCB0aG91Z2ggdGhlIGZpbGUgJyVzJyBpbiBhIHJlbmFtZSBvcGVyYXRpb24gc2hvdWxkIGhhdmUgdGhhdCBJRC4AUmVuYW1lIHdhaXRpbmcgZm9yIElPIHRvIHJlc3VtZQBDYW5ub3QgZmluZCB0YWJsZXNwYWNlIGZvciAnJXMnIGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZQBDYW5ub3QgZmluZCB0YWJsZXNwYWNlIGZvciAnJXMnIGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZQBUYWJsZXNwYWNlICclcycgaXMgYWxyZWFkeSBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUAQ2Fubm90IGNyZWF0ZSBmaWxlICclcycAVGhlIGZpbGUgJyVzJyBhbHJlYWR5IGV4aXN0cyB0aG91Z2ggdGhlIGNvcnJlc3BvbmRpbmcgdGFibGUgZGlkIG5vdCBleGlzdC4gSGF2ZSB5b3UgbW92ZWQgSW5ub0RCIC5pYmQgZmlsZXMgYXJvdW5kIHdpdGhvdXQgdXNpbmcgdGhlIFNRTCBjb21tYW5kcyBESVNDQVJEIFRBQkxFU1BBQ0UgYW5kIElNUE9SVCBUQUJMRVNQQUNFLCBvciBkaWQgbXlzcWxkIGNyYXNoIGluIHRoZSBtaWRkbGUgb2YgQ1JFQVRFIFRBQkxFPyBZb3UgY2FuIHJlc29sdmUgdGhlIHByb2JsZW0gYnkgcmVtb3ZpbmcgdGhlIGZpbGUgJyVzJyB1bmRlciB0aGUgJ2RhdGFkaXInIG9mIE15U1FMLgBwb3NpeF9mYWxsb2NhdGUoKTogRmFpbGVkIHRvIHByZWFsbG9jYXRlIGRhdGEgZm9yIGZpbGUgJXMsIGRlc2lyZWQgc2l6ZSAlbGx1IE9wZXJhdGluZyBzeXN0ZW0gZXJyb3IgbnVtYmVyICVkIC0gJXMuIENoZWNrIHRoYXQgdGhlIGRpc2sgaXMgbm90IGZ1bGwgb3IgYSBkaXNrIHF1b3RhIGV4Y2VlZGVkLiBNYWtlIHN1cmUgdGhlIGZpbGUgc3lzdGVtIHN1cHBvcnRzIHRoaXMgZnVuY3Rpb24uIFJlZmVyIHRvIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGZvciBvcGVyYXRpbmcgc3lzdGVtIGVycm9yIGNvZGUgaW5mb3JtYXRpb24uAENvdWxkIG5vdCB3cml0ZSB0aGUgZmlyc3QgcGFnZSB0byB0YWJsZXNwYWNlICclcycARmlsZSBmbHVzaCBvZiB0YWJsZXNwYWNlICclcycgZmFpbGVkAENvdWxkIG5vdCBmaW5kIGEgdmFsaWQgdGFibGVzcGFjZSBmaWxlIGZvciBgJXNgLiAlcwBJZ25vcmluZyBkYXRhIGZpbGUgJyVzJyB3aXRoIHNwYWNlIElEICVsdS4gQW5vdGhlciBkYXRhIGZpbGUgY2FsbGVkICclcycgZXhpc3RzIHdpdGggdGhlIHNhbWUgc3BhY2UgSUQAJXMAJXMAJXMAJXMAQ2FuJ3Qgc2V0IGVuY3J5cHRpb24gaW5mb3JtYXRpb24gZm9yIHRhYmxlc3BhY2UgJXMhACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFRoZSBkYXRhZmlsZSAnJXMnIGZvciB0YWJsZXNwYWNlICVzIGlzIGluIGFuIHVucHJvdGVjdGVkIGxvY2F0aW9uLiBUaGlzIGZpbGUgY2Fubm90IGJlIHJlY292ZXJlZCBhZnRlciBhIGNyYXNoIHVudGlsIHRoaXMgbG9jYXRpb24gaXMgYWRkZWQgdG8gaW5ub2RiX2RpcmVjdG9yaWVzLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBTY2FuIHBhdGggJyVzJyBpcyBpZ25vcmVkIGJlY2F1c2UgJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAQSBnZW5lcmFsIHRhYmxlc3BhY2UgY2Fubm90IGJlIGxvY2F0ZWQgdW5kZXIgdGhlIGRhdGFkaXIuIENhbm5vdCBvcGVuIGZpbGUgJyVzJy4AQSBmaWxlLXBlci10YWJsZSB0YWJsZXNwYWNlIGNhbm5vdCBiZSBsb2NhdGVkIGluIHRoZSBkYXRhZGlyLiBDYW5ub3Qgb3BlbiBmaWxlICclcycuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAENhbm5vdCBjcmVhdGUgYSB0YWJsZXNwYWNlIGZvciB0YWJsZSAlcyBiZWNhdXNlIHRoZSBkaXJlY3RvcnkgaXMgbm90IGEgdmFsaWQgbG9jYXRpb24uICVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEJsb2NrZWQgSGlnaCBQcmlvcml0eSBUcmFuc2FjdGlvbiAoSUQgJWxsdSwgVGhyZWFkIElEICVzKSBmb3JjZXMgcm9sbGJhY2sgb2YgdGhlIGJsb2NraW5nIHRyYW5zYWN0aW9uIChJRCAlbGx1IC0gJXMpLgAlcwAlcwBCbG9ja2VkIEhpZ2ggUHJpb3JpdHkgVHJhbnNhY3Rpb24gKFRocmVhZCBJRCAlcykgd2FraW5nIHVwIHRoZSBibG9ja2luZyB0cmFuc2FjdGlvbiAoSUQgJWxsdSkgYnkgcHJldGVuZGluZyBpdCdzIGEgZGVhZGxvY2sgdmljdGltLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBUaGUgdHJhbnNhY3Rpb24gbG9nIHNpemUgaXMgdG9vIGxhcmdlIGZvciBpbm5vZGJfbG9nX2J1ZmZlcl9zaXplICglbHUgPj0gJWx1IC8gMikuIFRyeWluZyB0byBleHRlbmQgaXQuAGlubm9kYl9sb2dfYnVmZmVyX3NpemUgd2FzIGV4dGVuZGVkIHRvICVsdSBieXRlcy4AVGhlIHRyYW5zYWN0aW9uIGxvZyBmaWxlcyBhcmUgdG9vIHNtYWxsIGZvciB0aGUgc2luZ2xlIHRyYW5zYWN0aW9uIGxvZyAoc2l6ZT0lbHUpLiBTbywgdGhlIGxhc3QgY2hlY2twb2ludCBhZ2UgbWlnaHQgZXhjZWVkIHRoZSBsb2cgZ3JvdXAgY2FwYWNpdHkgJWxsdS4AVGhlIGFnZSBvZiB0aGUgbGFzdCBjaGVja3BvaW50IGlzICVsbHUsIHdoaWNoIGV4Y2VlZHMgdGhlIGxvZyBncm91cCBjYXBhY2l0eSAlbGx1LgBDYW5ub3QgY29udGludWUgb3BlcmF0aW9uLiBpYl9sb2dmaWxlcyBhcmUgdG9vIHNtYWxsIGZvciBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5ICVsdS4gVGhlIGNvbWJpbmVkIHNpemUgb2YgaWJfbG9nZmlsZXMgc2hvdWxkIGJlIGJpZ2dlciB0aGFuIDIwMCBrQiAqIGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kuIFRvIGdldCBteXNxbGQgdG8gc3RhcnQgdXAsIHNldCBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5IGluIG15LmNuZiB0byBhIGxvd2VyIHZhbHVlLCBmb3IgZXhhbXBsZSwgdG8gOC4gQWZ0ZXIgYW4gRVJST1ItRlJFRSBzaHV0ZG93biBvZiBteXNxbGQgeW91IGNhbiBhZGp1c3QgdGhlIHNpemUgb2YgaWJfbG9nZmlsZXMuICVzAFJlZG8gbG9nIHdhcyBlbmNyeXB0ZWQsIGJ1dCBrZXlyaW5nIHBsdWdpbiBpcyBub3QgbG9hZGVkLgBSZWFkIHJlZG8gbG9nIGVuY3J5cHRpb24gbWV0YWRhdGEgc3VjY2Vzc2Z1bC4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgZW5jcnlwdGlvbiBtZXRhZGF0YS4AQ2Fubm90IHJlYWQgdGhlIGVuY3J5cHRpb24gaW5mb3JtYXRpb24gaW4gbG9nIGZpbGUgaGVhZGVyLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBwbHVnaW4gbG9hZGVkIGFuZCB0aGUga2V5IGZpbGUgZXhpc3RzLgBDYW4ndCBzZXQgcmVkbyBsb2cgdGFibGVzcGFjZSB0byBiZSBlbmNyeXB0ZWQgaW4gcmVhZC1vbmx5IG1vZGUuAENhbid0IHNldCByZWRvIGxvZyB0YWJsZXNwYWNlIHRvIGJlIGVuY3J5cHRlZC4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgdG8gYmUgZW5jcnlwdGVkLgBSZWRvIGxvZyBlbmNyeXB0aW9uIGlzIGVuYWJsZWQuAEZsdXNoIHdhaXRpbmcgZm9yIGFyY2hpdmVyIHRvIGNhdGNoIHVwIGxhZyBMU046ICVsbHUARmx1c2ggb3ZlcndyaXRpbmcgZGF0YSB0byBhcmNoaXZlIC0gd2FpdCB0b28gbG9uZyAoMSBtaW51dGUpIGxhZyBMU046ICVsbHUAJXMAU3RhcnRpbmcgc2h1dGRvd24uLi4AV2FpdGluZyBmb3IgJXMgdG8gZXhpdABXYWl0aW5nIGZvciAlbHUgYWN0aXZlIHRyYW5zYWN0aW9ucyB0byBmaW5pc2gAV2FpdGluZyBmb3IgbWFzdGVyIHRocmVhZCB0byBiZSBzdXNwZW5kZWQAV2FpdGluZyBmb3IgcGFnZV9jbGVhbmVyIHRvIGZpbmlzaCBmbHVzaGluZyBvZiBidWZmZXIgcG9vbABQZW5kaW5nIGNoZWNrcG9pbnRfd3JpdGVzOiAlbHUuIFBlbmRpbmcgbG9nIGZsdXNoIHdyaXRlczogJWx1LgBXYWl0aW5nIGZvciAlbHUgYnVmZmVyIHBhZ2UgSS9PcyB0byBjb21wbGV0ZQBNeVNRTCBoYXMgcmVxdWVzdGVkIGEgdmVyeSBmYXN0IHNodXRkb3duIHdpdGhvdXQgZmx1c2hpbmcgdGhlIElubm9EQiBidWZmZXIgcG9vbCB0byBkYXRhIGZpbGVzLiBBdCB0aGUgbmV4dCBteXNxbGQgc3RhcnR1cCBJbm5vREIgd2lsbCBkbyBhIGNyYXNoIHJlY292ZXJ5IQBCYWNrZ3JvdW5kIHRocmVhZCAlcyB3b2tlIHVwIGR1cmluZyBzaHV0ZG93bgBXYWl0aW5nIGZvciBhcmNoaXZlciB0byBmaW5pc2ggYXJjaGl2aW5nIHBhZ2UgYW5kIGxvZwBCYWNrZ3JvdW5kIHRocmVhZCAlcyB3b2tlIHVwIGR1cmluZyBzaHV0ZG93bgBXYWl0aW5nIGZvciBkaXJ0eSBidWZmZXIgcGFnZXMgdG8gYmUgZmx1c2hlZABMb2cgc2VxdWVuY2UgbnVtYmVyIGF0IHNodXRkb3duICVsbHUgaXMgbG93ZXIgdGhhbiBhdCBzdGFydHVwICVsbHUhAFdhaXRpbmcgZm9yIGFyY2hpdmVyIHRvIGZpbmlzaCBhcmNoaXZpbmcgcGFnZSBhbmQgbG9nACMjIyMjIyMjIyMjIyMjIyBDT1JSVVBUIExPRyBSRUNPUkQgRk9VTkQgIyMjIyMjIyMjIyMjIyMjAExvZyByZWNvcmQgdHlwZSAlZCwgcGFnZSAlbHU6JWx1LiBMb2cgcGFyc2luZyBwcm9jZWVkZWQgc3VjY2Vzc2Z1bGx5IHVwIHRvICVsbHUuIFByZXZpb3VzIGxvZyByZWNvcmQgdHlwZSAlZCwgaXMgbXVsdGkgJWxsdSBSZWN2IG9mZnNldCAlemQsIHByZXYgJWxsdQBIZXggZHVtcCBzdGFydGluZyAlbGx1IGJ5dGVzIGJlZm9yZSBhbmQgZW5kaW5nICVsbHUgYnl0ZXMgYWZ0ZXIgdGhlIGNvcnJ1cHRlZCByZWNvcmQ6AFNldCBpbm5vZGJfZm9yY2VfcmVjb3ZlcnkgdG8gaWdub3JlIHRoaXMgZXJyb3IuAFRoZSByZWRvIGxvZyBmaWxlIG1heSBoYXZlIGJlZW4gY29ycnVwdCBhbmQgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbG9nIHNjYW4gZGlkIG5vdCBwcm9jZWVkIGZhciBlbm91Z2ggaW4gcmVjb3ZlcnkhIFBsZWFzZSBydW4gQ0hFQ0sgVEFCTEUgb24geW91ciBJbm5vREIgdGFibGVzIHRvIGNoZWNrIHRoYXQgdGhleSBhcmUgb2shIElmIG15c3FsZCBjcmFzaGVzIGFmdGVyIHRoaXMgcmVjb3Zlcnk7ICVzACVsbHUgcGFnZXMgd2l0aCBsb2cgcmVjb3JkcyB3ZXJlIGxlZnQgdW5wcm9jZXNzZWQhAFVwZ3JhZGUgYWZ0ZXIgYSBjcmFzaCBpcyBub3Qgc3VwcG9ydGVkLiBUaGlzIHJlZG8gbG9nIHdhcyBjcmVhdGVkIHdpdGggJXMsIGFuZCBpdCBhcHBlYXJzIGNvcnJ1cHRlZC4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGF0ICVzAFVwZ3JhZGUgaXMgbm90IHN1cHBvcnRlZCBhZnRlciBhIGNyYXNoIG9yIHNodXRkb3duIHdpdGggaW5ub2RiX2Zhc3Rfc2h1dGRvd24gPSAyLiBUaGlzIHJlZG8gbG9nIHdhcyBjcmVhdGVkIHdpdGggJXMsIGFuZCBpdCBhcHBlYXJzIGxvZ2ljYWxseSBub24gZW1wdHkuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBhdCAlcwAlcwAlcwBSZWRvIGxvZyBmb3JtYXQgaXMgdiVsdS4gVGhlIHJlZG8gbG9nIHdhcyBjcmVhdGVkIGJlZm9yZSBNeVNRTCA4LjAuMzAuAFVua25vd24gcmVkbyBsb2cgZm9ybWF0ICh2JWx1KSBpbiBmaWxlICVzLiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgYXQgJXMATm8gdmFsaWQgY2hlY2twb2ludCBmb3VuZCAoY29ycnVwdGVkIHJlZG8gbG9nKS4gWW91IGNhbiB0cnkgLS1pbm5vZGItZm9yY2UtcmVjb3Zlcnk9NiBhcyBhIGxhc3QgcmVzb3J0LgBBcHBseWluZyBhIGJhdGNoIG9mICVsbHUgcmVkbyBsb2cgcmVjb3JkcyAuLi4AJXMAJXMAQXBwbHkgYmF0Y2ggY29tcGxldGVkIQAlcwAlcwAlcwAlcwAlcwAlcwBBbiBvcHRpbWl6ZWQod2l0aG91dCByZWRvIGxvZ2dpbmcpIERETCBvcGVyYXRpb24gaGFzIGJlZW4gcGVyZm9ybWVkLiBBbGwgbW9kaWZpZWQgcGFnZXMgbWF5IG5vdCBoYXZlIGJlZW4gZmx1c2hlZCB0byB0aGUgZGlzayB5ZXQuClRoaXMgb2ZmbGluZSBiYWNrdXAgbWF5IG5vdCBiZSBjb25zaXN0ZW50AEV4dGVuZGluZyB0YWJsZXNwYWNlIDogJWx1IHNwYWNlIG5hbWU6ICVzIHRvIG5ldyBzaXplOiAlbHUgcGFnZXMgZHVyaW5nIHJlY292ZXJ5LgBDb3VsZCBub3QgZXh0ZW5kIHRhYmxlc3BhY2U6ICVsdSBzcGFjZSBuYW1lOiAlcyB0byBuZXcgc2l6ZTogJWx1IHBhZ2VzIGR1cmluZyByZWNvdmVyeS4ATG9nIGJsb2NrICVsdSBhdCBsc24gJWxsdSBoYXMgdmFsaWQgaGVhZGVyLCBidXQgY2hlY2tzdW0gZmllbGQgY29udGFpbnMgJWx1LCBzaG91bGQgYmUgJWx1LgBSZWNvdmVyeSBza2lwcGVkLCAtLWlubm9kYi1yZWFkLW9ubHkgc2V0IQBMb2cgc2NhbiBwcm9ncmVzc2VkIHBhc3QgdGhlIGNoZWNrcG9pbnQgTFNOICVsbHUuAExvZyBwYXJzaW5nIGJ1ZmZlciBvdmVyZmxvdy4gUmVjb3ZlcnkgbWF5IGhhdmUgZmFpbGVkISBQbGVhc2Ugc2V0IGxvZ19idWZmZXJfc2l6ZSB0byBhIHZhbHVlIGhpZ2hlciB0aGFuICVsdS4AU2V0IGlubm9kYl9mb3JjZV9yZWNvdmVyeSB0byBpZ25vcmUgdGhpcyBlcnJvci4ARG9pbmcgcmVjb3Zlcnk6IHNjYW5uZWQgdXAgdG8gbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1AERhdGFiYXNlIHdhcyBub3Qgc2h1dGRvd24gbm9ybWFsbHkhAFN0YXJ0aW5nIGNyYXNoIHJlY292ZXJ5LgBUaGUgdXNlciBoYXMgc2V0IFNSVl9GT1JDRV9OT19MT0dfUkVETyBvbiwgc2tpcHBpbmcgbG9nIHJlZG8AQ2Fubm90IHJlc3RvcmUgZnJvbSBteXNxbGJhY2t1cCwgSW5ub0RCIHJ1bm5pbmcgaW4gcmVhZC1vbmx5IG1vZGUhAFRoZSByZWRvIGxvZyBmaWxlIHdhcyBjcmVhdGVkIGJ5IG15c3FsYmFja3VwIC0tYXBwbHktbG9nIGF0ICVzLiBUaGUgZm9sbG93aW5nIGNyYXNoIHJlY292ZXJ5IGlzIHBhcnQgb2YgYSBub3JtYWwgcmVzdG9yZS4AT3BlbmluZyBjbG9uZWQgZGF0YWJhc2UAUmVkbyBsb2cgaXMgZnJvbSBhbiBlYXJsaWVyIHZlcnNpb24sIHYlbHUuAFJlZG8gbG9nIGZvcm1hdCB2JWx1IG5vdCBzdXBwb3J0ZWQuIEN1cnJlbnQgc3VwcG9ydGVkIGZvcm1hdCBpcyB2JWx1LgBBcmUgeW91IHN1cmUgeW91IGFyZSB1c2luZyB0aGUgcmlnaHQgcmVkbyBsb2cgZmlsZXMgdG8gc3RhcnQgdXAgdGhlIGRhdGFiYXNlPyBMb2cgc2VxdWVuY2UgbnVtYmVyIGluIHRoZSByZWRvIGxvZyBmaWxlcyBpcyAlbGx1LCBsZXNzIHRoYW4gdGhlIGxvZyBzZXF1ZW5jZSBudW1iZXIgaW4gdGhlIGZpcnN0IHN5c3RlbSB0YWJsZXNwYWNlIGZpbGUgaGVhZGVyLCAlbGx1LgBUaGUgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1IGluIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSBkb2VzIG5vdCBtYXRjaCB0aGUgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1IGluIHRoZSByZWRvIGxvZyBmaWxlcyEAQ2FuJ3QgaW5pdGlhdGUgZGF0YWJhc2UgcmVjb3ZlcnksIHJ1bm5pbmcgaW4gcmVhZC1vbmx5LW1vZGUuAFdlIHNjYW5uZWQgdGhlIGxvZyB1cCB0byAlbGx1LiBBIGNoZWNrcG9pbnQgd2FzIGF0ICVsbHUgYW5kIHRoZSBtYXhpbXVtIExTTiBvbiBhIGRhdGFiYXNlIHBhZ2Ugd2FzICVsbHUuIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGRhdGFiYXNlIGlzIG5vdyBjb3JydXB0IQBXYWl0aW5nIGZvciByZWN2X3dyaXRlciB0byBmaW5pc2ggZmx1c2hpbmcgb2YgYnVmZmVyIHBvb2wAUmVjb3ZlcnkgcGFyc2luZyBidWZmZXIgZXh0ZW5kZWQgdG8gJXp1LgBPdXQgb2YgbWVtb3J5IHdoaWxlIHJlc2l6aW5nIHJlY292ZXJ5IHBhcnNpbmcgYnVmZmVyLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBDYW4ndCBlbmNyeXB0IGRhdGEgb2YgcmVkbyBsb2cAJXMAJXMARGVjcnlwdGlvbiBvZiByZWRvIGxvZyBibG9jayBhdCBvZmZzZXQgJWxsdSBpbiBmaWxlICVzIGZhaWxlZCBiZWNhdXNlIHRoZXJlJ3Mgbm8ga2V5cmluZyBjb25maWd1cmVkACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAE9sZCBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUgd2FzIGdyZWF0ZXIgdGhhbiB0aGUgbmV3IGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdS4gUGxlYXNlIHN1Ym1pdCBhIGJ1ZyByZXBvcnQgdG8gaHR0cDovL2J1Z3MubXlzcWwuY29tAFNlbWFwaG9yZSB3YWl0IGhhcyBsYXN0ZWQgPiAlbGx1IHNlY29uZHMuIFdlIGludGVudGlvbmFsbHkgY3Jhc2ggdGhlIHNlcnZlciBiZWNhdXNlIGl0IGFwcGVhcnMgdG8gYmUgaHVuZy4AV2FpdGluZyBmb3IgJWxsdSB0YWJsZShzKSB0byBiZSBkcm9wcGVkAFdhaXRpbmcgZm9yIGNoYW5nZSBidWZmZXIgbWVyZ2UgdG8gY29tcGxldGUgbnVtYmVyIG9mIGJ5dGVzIG9mIGNoYW5nZSBidWZmZXIganVzdCBtZXJnZWQ6ICVsbHUAQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZShzKSB0byBiZSBlbmNyeXB0ZWQgc2luY2UgLS1pbm5vZGJfdW5kb190YWJsZXNwYWNlcz0wLgBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlKHMpIHRvIGJlIGVuY3J5cHRlZCBpbiByZWFkLW9ubHktbW9kZS4AQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZSAnJXMnIHRvIGJlIGVuY3J5cHRlZC4AQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZSAnJXMnIHRvIGJlIGVuY3J5cHRlZC4gRmFpbGVkIHRvIHdyaXRlIGhlYWRlciBwYWdlLgBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlICclcycgdG8gYmUgZW5jcnlwdGVkLiBFcnJvciAlZCAtICVzAEVuY3J5cHRpb24gaXMgZW5hYmxlZCBmb3IgdW5kbyB0YWJsZXNwYWNlICclcycuAENhbid0IHJvdGF0ZSBlbmNyeXB0aW9uIG9uIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBFbmNyeXB0aW9uIGlzIGVuYWJsZWQgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBvc19maWxlX2dldF9zdGF0dXMoKSBmYWlsZWQgb24gJyVzJy4gQ2FuJ3QgZGV0ZXJtaW5lIGZpbGUgcGVybWlzc2lvbnMuACVzIGNhbid0IGJlIG9wZW5lZCBpbiAlcyBtb2RlLgAnJXMnIG5vdCBhIHJlZ3VsYXIgZmlsZS4AQ2Fubm90IGNyZWF0ZSAlcwBTZXR0aW5nIGZpbGUgJXMgc2l6ZSB0byAlbGx1IE1CLiBQcm9ncmVzcyA6ICV1JSUAQ2Fubm90IHJlc2l6ZSByZWRvIGxvZyBmaWxlICVzIHRvICVsbHUgTUIgKCVzKQBDYW5ub3QgY3JlYXRlIHJlZG8gbG9nIGZpbGVzIGluIHJlYWQtb25seSBtb2RlICgtLWlubm9kYi1yZWFkLW9ubHkpLgBSZWRvIGxvZyBlbmNyeXB0aW9uIGlzIGVuYWJsZWQsIGJ1dCB0aGUga2V5cmluZyBpcyBub3QgbG9hZGVkLgBGYWlsZWQgdG8gY3JlYXRlIHJlZG8gbG9nIGZpbGUgJXMgKGVycm9yOiAlZCkgZm9yIHN0YXJ0IExTTiAlbGx1AFJlbmFtaW5nIGxvZyBmaWxlICVzIHRvICVzAE5ldyByZWRvIGxvZyBmaWxlcyBjcmVhdGVkLCBMU049JWxsdQBVbmFibGUgdG8gb3BlbiAnJXMnIChlcnJvcjogJWQpLgBDYW5ub3QgY3JlYXRlIGNvbnN0cnVjdGlvbiBsb2cgZmlsZSAnJXMnIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AQ3JlYXRpbmcgVU5ETyBUYWJsZXNwYWNlICVzAFNldHRpbmcgZmlsZSAlcyBzaXplIHRvICVsbHUgTUIAUGh5c2ljYWxseSB3cml0aW5nIHRoZSBmaWxlIGZ1bGwARXJyb3IgaW4gY3JlYXRpbmcgJXM6IHByb2JhYmx5IG91dCBvZiBkaXNrIHNwYWNlAENhbid0IHNldCBlbmNyeXB0aW9uIG1ldGFkYXRhIGZvciBzcGFjZSAlcwBDYW5ub3QgcmVhZCBmaXJzdCBwYWdlIG9mICclcycgLSAlcwBVbmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdSB3YXMgYmVpbmcgdHJ1bmNhdGVkIHdoZW4gbXlzcWxkIHF1aXQuAENhbm5vdCByZWNvdmVyIGEgdHJ1bmNhdGVkIHVuZG8gdGFibGVzcGFjZSBpbiByZWFkLW9ubHkgbW9kZQBSZWNvbnN0cnVjdGluZyB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdS4AQ2Fubm90IGNyZWF0ZSAlcyBiZWNhdXNlICVzIGFscmVhZHkgdXNlcyBTcGFjZSBJRD0lbHUhIERpZCB5b3UgY2hhbmdlIGlubm9kYl91bmRvX2RpcmVjdG9yeT8AVU5ETyB0YWJsZXNwYWNlICVzIG11c3QgYmUgJXMARXJyb3IgY3JlYXRpbmcgZmlsZSBmb3IgJXMARXJyb3IgcmVhZGluZyBlbmNyeXB0aW9uIGZvciAlcwBVbmFibGUgdG8gb3BlbiB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdQBPcGVuZWQgJWxsdSBleGlzdGluZyB1bmRvIHRhYmxlc3BhY2VzLgBDYW5ub3QgY3JlYXRlIHVuZG8gdGFibGVzcGFjZXMgc2luY2UgaW5ub2RiXyVzIGhhcyBiZWVuIHNldC4gVXNpbmcgJWxsdSBleGlzdGluZyB1bmRvIHRhYmxlc3BhY2VzLgBDYW5ub3QgY29udGludWUgSW5ub0RCIHN0YXJ0dXAgaW4gJXMgbW9kZSBiZWNhdXNlIHRoZXJlIGFyZSBubyBleGlzdGluZyB1bmRvIHRhYmxlc3BhY2VzIGZvdW5kLgBDb3VsZCBub3QgY3JlYXRlIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBFcnJvciAlZCAtICVzIC0gb3BlbmluZyBuZXdseSBjcmVhdGVkIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBDcmVhdGVkICVsbHUgdW5kbyB0YWJsZXNwYWNlcy4AVW5hYmxlIHRvIGNyZWF0ZSBlbmNyeXB0ZWQgdW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUuIHBsZWFzZSBjaGVjayBpZiB0aGUga2V5cmluZyBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkARW5jcnlwdGlvbiBpcyBlbmFibGVkIGZvciB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdS4AVW5hYmxlIHRvIGluaXRpYWxpemUgdGhlIGhlYWRlciBwYWdlIGluIHVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1LgBDYW5ub3QgZGVsZXRlIG9sZCB1bmRvIHRhYmxlc3BhY2VzIGJlY2F1c2UgdGhleSBjb250YWluIHVuZG8gbG9ncyBmb3IgWEEgUFJFUEFSRUQgdHJhbnNhY3Rpb25zLgBVcGdyYWRpbmcgJXp1IGV4aXN0aW5nIHVuZG8gdGFibGVzcGFjZXMgdGhhdCB3ZXJlIHRyYWNrZWQgaW4gdGhlIHN5c3RlbSB0YWJsZXNwYWNlIHRvICVsdSBuZXcgaW5kZXBlbmRlbnQgdW5kbyB0YWJsZXNwYWNlcy4ARGVsZXRpbmcgJWxsdSBuZXcgaW5kZXBlbmRlbnQgdW5kbyB0YWJsZXNwYWNlcyB0aGF0IHdlIGp1c3QgY3JlYXRlZC4AV2FpdGluZyBmb3IgcHVyZ2UgdG8gc3RhcnQAQ3JlYXRpbmcgc2hhcmVkIHRhYmxlc3BhY2UgZm9yIHRlbXBvcmFyeSB0YWJsZXMAVGhlICVzIGRhdGEgZmlsZSBtdXN0IGJlIHdyaXRhYmxlIQBDb3VsZCBub3QgY3JlYXRlIHRoZSBzaGFyZWQgJXMuAFVuYWJsZSB0byBjcmVhdGUgdGhlIHNoYXJlZCAlcy4AVGhlICVzIGRhdGEgZmlsZSBjYW5ub3QgYmUgcmUtb3BlbmVkIGFmdGVyIGNoZWNrX2ZpbGVfc3BlYygpIHN1Y2NlZWRlZCEAJWQgdGhyZWFkcyBjcmVhdGVkIGJ5IElubm9EQiBoYWQgbm90IGV4aXRlZCBhdCBzaHV0ZG93biEASW5ub0RCIERhdGFiYXNlIGNyZWF0aW9uIHdhcyBhYm9ydGVkICVzd2l0aCBlcnJvciAlcy4gWW91IG1heSBuZWVkIHRvIGRlbGV0ZSB0aGUgaWJkYXRhMSBmaWxlIGJlZm9yZSB0cnlpbmcgdG8gc3RhcnQgdXAgYWdhaW4uAFBsdWdpbiBpbml0aWFsaXphdGlvbiBhYm9ydGVkICVzd2l0aCBlcnJvciAlcy4AV2FpdGluZyBmb3IgJXp1IGJ1ZmZlciBwYWdlIEkvT3MgdG8gY29tcGxldGUuAFBVTkNIIEhPTEUgc3VwcG9ydCBhdmFpbGFibGUAUFVOQ0ggSE9MRSBzdXBwb3J0IG5vdCBhdmFpbGFibGUAU2l6ZSBvZiBJbm5vREIncyB1bGludCBpcyAlenUgYnV0IHNpemUgb2Ygdm9pZCogaXMgJXp1LiBUaGUgc2l6ZXMgc2hvdWxkIGJlIHRoZSBzYW1lIHNvIHRoYXQgb24gYSA2NC1iaXQgcGxhdGZvcm1zIHlvdSBjYW4gYWxsb2NhdGUgbW9yZSB0aGFuIDQgR0Igb2YgbWVtb3J5LgBEYXRhYmFzZSB1cGdyYWRlIGNhbm5vdCBiZSBhY2NvbXBsaXNoZWQgaW4gcmVhZC1vbmx5IG1vZGUuAERhdGFiYXNlIHVwZ3JhZGUgY2Fubm90IGJlIGFjY29tcGxpc2hlZCB3aXRoIGlubm9kYl9mb3JjZV9yZWNvdmVyeSA+IDAAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMATXlTUUwgd2FzIGJ1aWx0IHdpdGhvdXQgYSBtZW1vcnkgYmFycmllciBjYXBhYmlsaXR5IG9uIHRoaXMgYXJjaGl0ZWN0dXJlLCB3aGljaCBtaWdodCBhbGxvdyBhIG11dGV4L3J3X2xvY2sgdmlvbGF0aW9uIHVuZGVyIGhpZ2ggdGhyZWFkIGNvbmN1cnJlbmN5LiBUaGlzIG1heSBjYXVzZSBhIGhhbmcuAENvbXByZXNzZWQgdGFibGVzIHVzZSB6bGliICVzACVzAFN0YXJ0dXAgY2FsbGVkIHNlY29uZCB0aW1lIGR1cmluZyB0aGUgcHJvY2VzcyBsaWZldGltZS4gSW4gdGhlIE15U1FMIEVtYmVkZGVkIFNlcnZlciBMaWJyYXJ5IHlvdSBjYW5ub3QgY2FsbCBzZXJ2ZXJfaW5pdCgpIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgcHJvY2VzcyBsaWZldGltZS4AJXMAVW5hYmxlIHRvIGNyZWF0ZSBtb25pdG9yIGZpbGUgJXM6ICVzAERpc2FibGluZyBiYWNrZ3JvdW5kIGlidWYgSU8gcmVhZCB0aHJlYWRzLgBDYW5ub3QgaW5pdGlhbGl6ZSBBSU8gc3ViLXN5c3RlbQBJbml0aWFsaXppbmcgYnVmZmVyIHBvb2wsIHRvdGFsIHNpemUgPSAlbGYlYywgaW5zdGFuY2VzID0gJWx1LCBjaHVuayBzaXplID0lbGYlYyAAQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGJ1ZmZlciBwb29sAENvbXBsZXRlZCBpbml0aWFsaXphdGlvbiBvZiBidWZmZXIgcG9vbABTbWFsbCBidWZmZXIgcG9vbCBzaXplICglbGx1TSksIHRoZSBmbHN0X3ZhbGlkYXRlKCkgZGVidWcgZnVuY3Rpb24gY2FuIGNhdXNlIGEgZGVhZGxvY2sgaWYgdGhlIGJ1ZmZlciBwb29sIGZpbGxzIHVwLgBDb3VsZCBub3Qgb3BlbiBvciBjcmVhdGUgdGhlIHN5c3RlbSB0YWJsZXNwYWNlLiBJZiB5b3UgdHJpZWQgdG8gYWRkIG5ldyBkYXRhIGZpbGVzIHRvIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSwgYW5kIGl0IGZhaWxlZCBoZXJlLCB5b3Ugc2hvdWxkIG5vdyBlZGl0IGlubm9kYl9kYXRhX2ZpbGVfcGF0aCBpbiBteS5jbmYgYmFjayB0byB3aGF0IGl0IHdhcywgYW5kIHJlbW92ZSB0aGUgbmV3IGliZGF0YSBmaWxlcyBJbm5vREIgY3JlYXRlZCBpbiB0aGlzIGZhaWxlZCBhdHRlbXB0LiBJbm5vREIgb25seSB3cm90ZSB0aG9zZSBmaWxlcyBmdWxsIG9mIHplcm9zLCBidXQgZGlkIG5vdCB5ZXQgdXNlIHRoZW0gaW4gYW55IHdheS4gQnV0IGJlIGNhcmVmdWw6IGRvIG5vdCByZW1vdmUgb2xkIGRhdGEgZmlsZXMgd2hpY2ggY29udGFpbiB5b3VyIHByZWNpb3VzIGRhdGEhAENhbm5vdCBjcmVhdGUgcmVkbyBsb2cgZmlsZXMgYmVjYXVzZSBkYXRhIGZpbGVzIGFyZSBjb3JydXB0IG9yIHRoZSBkYXRhYmFzZSB3YXMgbm90IHNodXQgZG93biBjbGVhbmx5IGFmdGVyIGNyZWF0aW5nIHRoZSBkYXRhIGZpbGVzLgBPbmx5IG9uZSByZWRvIGxvZyBmaWxlIGZvdW5kAFRoZSByZWRvIGxvZyBmaWxlICVzIHNpemUgJWxsdSBpcyBub3QgYSBtdWx0aXBsZSBvZiBpbm5vZGJfcGFnZV9zaXplAFRoZSByZWRvIGxvZyBmaWxlICVzIGlzIG9mIGRpZmZlcmVudCBzaXplICVsbHUgYnl0ZXMgdGhhbiBvdGhlciBsb2cgZmlsZXMgJWxsdSBieXRlcyEAVXNlIC0taW5ub2RiLWRpcmVjdG9yaWVzIHRvIGZpbmQgdGhlIHRhYmxlc3BhY2UgZmlsZXMuIElmIHRoYXQgZmFpbHMgdGhlbiB1c2UgLS1pbm5vZGItZm9yY2UtcmVjb3Zlcnk9MSB0byBpZ25vcmUgdGhpcyBhbmQgdG8gcGVybWFuZW50bHkgbG9zZSBhbGwgY2hhbmdlcyB0byB0aGUgbWlzc2luZyB0YWJsZXNwYWNlKHMpAFRoZSByZWRvIGxvZyBmaWxlIG1heSBoYXZlIGJlZW4gY29ycnVwdCBhbmQgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbG9nIHNjYW4gb3IgcGFyc2luZyBkaWQgbm90IHByb2NlZWQgZmFyIGVub3VnaCBpbiByZWNvdmVyeS4gUGxlYXNlIHJ1biBDSEVDSyBUQUJMRSBvbiB5b3VyIElubm9EQiB0YWJsZXMgdG8gY2hlY2sgdGhhdCB0aGV5IGFyZSBvayEgSXQgbWF5IGJlIHNhZmVzdCB0byByZWNvdmVyIHlvdXIgSW5ub0RCIGRhdGFiYXNlIGZyb20gYSBiYWNrdXAhAENhbm5vdCByZXNpemUgcmVkbyBsb2cgZmlsZXMgaW4gcmVhZC1vbmx5IG1vZGUuIFByb3ZpZGUgLS1pbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgPj0gJWxsdU1CIG9yIHN0YXJ0IHdpdGhvdXQgLS1pbm5vZGItcmVhZC1vbmx5LgBDYW5ub3Qgb3BlbiBERCB0YWJsZXNwYWNlLgBTdGFydGluZyB0byBkZWxldGUgYW5kIHJld3JpdGUgcmVkbyBsb2cgZmlsZXMuAFVuZG8gZnJvbSA1LjcgZm91bmQuIEl0IHdpbGwgYmUgcHVyZ2VkACVzACVzAFRhYmxlc3BhY2Ugc2l6ZSBzdG9yZWQgaW4gaGVhZGVyIGlzICVsdSBwYWdlcywgYnV0IHRoZSBzdW0gb2YgZGF0YSBmaWxlIHNpemVzIGlzICVsdSBwYWdlcwBDYW5ub3Qgc3RhcnQgSW5ub0RCLiBUaGUgdGFpbCBvZiB0aGUgc3lzdGVtIHRhYmxlc3BhY2UgaXMgbWlzc2luZy4gSGF2ZSB5b3UgZWRpdGVkIGlubm9kYl9kYXRhX2ZpbGVfcGF0aCBpbiBteS5jbmYgaW4gYW4gaW5hcHByb3ByaWF0ZSB3YXksIHJlbW92aW5nIGliZGF0YSBmaWxlcyBmcm9tIHRoZXJlPyBZb3UgY2FuIHNldCBpbm5vZGJfZm9yY2VfcmVjb3Zlcnk9MSBpbiBteS5jbmYgdG8gZm9yY2UgYSBzdGFydHVwIGlmIHlvdSBhcmUgdHJ5aW5nIHRvIHJlY292ZXIgYSBiYWRseSBjb3JydXB0IGRhdGFiYXNlLgBUYWJsZXNwYWNlIHNpemUgc3RvcmVkIGluIGhlYWRlciBpcyAlbHUgcGFnZXMsIGJ1dCB0aGUgc3VtIG9mIGRhdGEgZmlsZSBzaXplcyBpcyBvbmx5ICVsdSBwYWdlcwBDYW5ub3Qgc3RhcnQgSW5ub0RCLiBUaGUgdGFpbCBvZiB0aGUgc3lzdGVtIHRhYmxlc3BhY2UgaXMgbWlzc2luZy4gSGF2ZSB5b3UgZWRpdGVkIGlubm9kYl9kYXRhX2ZpbGVfcGF0aCBpbiBteS5jbmYgaW4gYW4gSW5ub0RCOiBpbmFwcHJvcHJpYXRlIHdheSwgcmVtb3ZpbmcgaWJkYXRhIGZpbGVzIGZyb20gdGhlcmU/IFlvdSBjYW4gc2V0IGlubm9kYl9mb3JjZV9yZWNvdmVyeT0xIGluIG15LmNuZiB0byBmb3JjZSBJbm5vREI6IGEgc3RhcnR1cCBpZiB5b3UgYXJlIHRyeWluZyB0byByZWNvdmVyIGEgYmFkbHkgY29ycnVwdCBkYXRhYmFzZS4AJXMgc3RhcnRlZDsgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1AFdhaXRpbmcgZm9yIHB1cmdlIHRvIGNvbXBsZXRlAFdhaXRpbmcgZm9yIGRpY3Rfc3RhdHNfdGhyZWFkIHRvIGV4aXQAUXVlcnkgY291bnRlciBzaG93cyAlbGxkIHF1ZXJpZXMgc3RpbGwgaW5zaWRlIElubm9EQiBhdCBzaHV0ZG93bgBTaHV0ZG93biBjb21wbGV0ZWQ7IGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdQBDYW5ub3QgY29udGludWUgb3BlcmF0aW9uLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBVbmFibGUgdG8gcmVhZCB0aGUgZXhpc3RpbmcgdW5kbyB0cnVuY2F0ZSBsb2cgZmlsZSAnJXMnLiBUaGUgZXJyb3IgaXMgJXMAVW5kbyB0YWJsZXNwYWNlICVzIGlzIG1hcmtlZCBmb3IgdHJ1bmNhdGUAJXMAVHJ1bmNhdGluZyBVTkRPIHRhYmxlc3BhY2UgJXMAJXMAQ2Fubm90IGNyZWF0ZSB0cnVuY2F0ZSBsb2cgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgAlcwBGYWlsZWQgdG8gdHJ1bmNhdGUgdW5kbyB0YWJsZXNwYWNlICclcycuACVzAENvbXBsZXRlZCB0cnVuY2F0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFJvbGxiYWNrIG9mIG5vbi1wcmVwYXJlZCB0cmFuc2FjdGlvbnMgY29tcGxldGVkACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEJsb2NrZWQgSGlnaCBQcmlvcml0eSBUcmFuc2FjdGlvbiAoSUQgJWxsdSwgVGhyZWFkIElEICVzKSBraWxsZWQgdGhlIGJsb2NraW5nIHRyYW5zYWN0aW9uIChJRCAlbGx1IC0gJXMpIGJ5IHJvbGxpbmcgaXQgYmFjay4AJXMAZ2V0dGltZW9mZGF5KCkgZmFpbGVkOiAlcwBDYW4ndCBjcmVhdGUgVU5ETyB0YWJsZXNwYWNlICVzICVzACVzAFJlc2l6aW5nIHJlZG8gbG9nIGZyb20gJWxsdU0gdG8gJWxsdU0gKExTTj0lbGx1KSBzeW5jaHJvbm91c2x5LiBJZiB0aGlzIHRha2VzIHRvbyBsb25nLCBjb25zaWRlciBzdGFydGluZyB0aGUgc2VydmVyIHdpdGggbGFyZ2UgLS1pbm5vZGJfcmVkb19sb2dfY2FwYWNpdHksIGFuZCByZXNpemluZyB0aGUgcmVkbyBsb2cgb25saW5lIHVzaW5nIFNFVC4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAT3V0IG9mIHNwYWNlIGluIHRoZSByZWRvIGxvZy4gQ2hlY2twb2ludCBMU046ICVsbHUuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgAlcwBMb2cgd3JpdGVyIHdhaXRlZCB0b28gbG9uZyBmb3IgcmVkby1hcmNoaXZlciB0byBhZHZhbmNlICgxIHNlY29uZCkuIFRoZXJlIGFyZSB1bmFyY2hpdmVkOiAlbGx1IGJ5dGVzLiBBcmNoaXZlciBMU046ICVsbHUuIEFib3J0ZWQgdGhlIHJlZG8tYXJjaGl2ZXIuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgBMb2cgd3JpdGVyIGlzIHdhaXRpbmcgZm9yIHJlZG8tYXJjaGl2ZXIgdG8gY2F0Y2ggdXAgdW5hcmNoaXZlZDogJWxsdSBieXRlcy4gQXJjaGl2ZXIgTFNOOiAlbGx1LiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4AJXMAJXMAJXMAJXMAQ2FuJ3Qgc2V0IHJlZG8gbG9nIGZpbGVzIHRvIGJlIGVuY3J5cHRlZCBpbiByZWFkLW9ubHkgbW9kZS4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIGZpbGVzIHRvIGJlIGVuY3J5cHRlZC4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgdG8gYmUgZW5jcnlwdGVkLgBSZWRvIGxvZyBlbmNyeXB0aW9uIGlzIGVuYWJsZWQuAFdhaXRpbmcgZm9yIGFyY2hpdmVyIHRvIGZpbmlzaCBhcmNoaXZpbmcgcGFnZSBhbmQgbG9nAFN0YXJ0aW5nIHNodXRkb3duLi4uAFdhaXRpbmcgZm9yICVzIHRvIGV4aXQuAFdhaXRpbmcgZm9yIHJvbGxiYWNrIG9mICV6dSByZWNvdmVyZWQgdHJhbnNhY3Rpb25zLCBiZWZvcmUgc2h1dGRvd24uAFdhaXRpbmcgZm9yIG1hc3RlciB0aHJlYWQgdG8gYmUgc3VzcGVuZGVkLgBXYWl0aW5nIGZvciBwYWdlX2NsZWFuZXIgdG8gZmluaXNoIGZsdXNoaW5nIG9mIGJ1ZmZlciBwb29sLgBTaHV0ZG93biBpcyB3YWl0aW5nIGZvciAlenUgYnVmZmVyIHBhZ2UgSS9PcyB0byBjb21wbGV0ZS4ATXlTUUwgaGFzIHJlcXVlc3RlZCBhIHZlcnkgZmFzdCBzaHV0ZG93biB3aXRob3V0IGZsdXNoaW5nIHRoZSBJbm5vREIgYnVmZmVyIHBvb2wgdG8gZGF0YSBmaWxlcy4gQXQgdGhlIG5leHQgbXlzcWxkIHN0YXJ0dXAgSW5ub0RCIHdpbGwgZG8gYSBjcmFzaCByZWNvdmVyeSEAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMASW52YWxpZCByZWRvIGxvZyBoZWFkZXIgY2hlY2tzdW0uAFVuc3VwcG9ydGVkIHJlZG8gbG9nIGZvcm1hdCAodiVsdSkuIFRoZSByZWRvIGxvZyB3YXMgY3JlYXRlZCBiZWZvcmUgTXlTUUwgNS43LjkAJXMAQ2Fubm90IGNvbnRpbnVlIG9wZXJhdGlvbi4gVGhlIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eT0lbGx1TSBpcyB0b28gc21hbGwgZm9yIHRoZSBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5PSVsdS4gVGhlIGNhcGFjaXR5IG9mIHJlZG8gc2hvdWxkIGJlID49ICVsbHVNLiBUbyBnZXQgbXlzcWxkIHJ1bm5pbmcsIHNldCBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5IHRvIGEgc21hbGxlciB2YWx1ZSBvciBpbmNyZWFzZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuICVzACVzACVzAFVzZXIgaGFzIHNldCBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5IHRvICVsdS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgU1FMIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsLCB0aHJlYWQgaXMgYnVzeSwgU1FMIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBTVE9QIFJFUExJQ0EgY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogUmVwbGljYSBJTyB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIElPIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogVXBkYXRlcyB0byBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgY2FuIG9ubHkgYmUgZG9uZSBpbiBlaXRoZXIgYXV0b2NvbW1pdHRlZCBzdGF0ZW1lbnRzIG9yIHNpbmdsZS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb25zLCBhbmQgbmV2ZXIgaW4gdGhlIHNhbWUgc3RhdGVtZW50IGFzIHVwZGF0ZXMgdG8gdHJhbnNhY3Rpb25hbCB0YWJsZXMuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEFCTEUgLi4uIFNFTEVDVC4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBURU1QT1JBUlkgVEFCTEUgYW5kIERST1AgVEVNUE9SQVJZIFRBQkxFIGNhbiBvbmx5IGJlIGV4ZWN1dGVkIG91dHNpZGUgdHJhbnNhY3Rpb25hbCBjb250ZXh0LiAgVGhlc2Ugc3RhdGVtZW50cyBhcmUgYWxzbyBub3QgYWxsb3dlZCBpbiBhIGZ1bmN0aW9uIG9yIHRyaWdnZXIgYmVjYXVzZSBmdW5jdGlvbnMgYW5kIHRyaWdnZXJzIGFyZSBhbHNvIGNvbnNpZGVyZWQgdG8gYmUgbXVsdGktc3RhdGVtZW50IHRyYW5zYWN0aW9ucy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIGlnbm9yZWQgYW5kIHVwZGF0ZXMgd2lsbCBiZSB3cml0dGVuIGluIGZ1bGwgZm9ybWF0IHRvIGJpbmFyeSBsb2cuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGxvZ19iaW5fdXNlX3YxX3Jvd19ldmVudHM9MSB3aWxsIGJlIGlnbm9yZWQgYW5kIHJvdyBldmVudHMgd2lsbCBiZSB3cml0dGVuIGluIG5ldyBmb3JtYXQgdG8gYmluYXJ5IGxvZy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIHVzZWQgb25seSBmb3IgdGhlIGFmdGVyLWltYWdlLiBGdWxsIHZhbHVlcyB3aWxsIGJlIHdyaXR0ZW4gaW4gdGhlIGJlZm9yZS1pbWFnZSwgc28gdGhlIHNhdmluZyBpbiBkaXNrIHNwYWNlIGR1ZSB0byBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnMgaXMgbGltaXRlZCB0byBsZXNzIHRoYW4gNTAlJS4AQWJvcnRlZCBjb25uZWN0aW9uICV1IHRvIGRiOiAnJS0uMTkycycgdXNlcjogJyUtLjQ4cycgaG9zdDogJyUtLjI1NXMnICglLS42NHMpLgAlczogTm9ybWFsIHNodXRkb3duLgBDYW4gbm90IHBlcmZvcm0ga2V5cmluZyBtaWdyYXRpb24gOiAlcy4AVGhlIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIG9wdGlvbiB2YWx1ZSAnJXUnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJXUnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLiBJZiB0aGVyZSBpcyBleGlzdGluZyBkYXRhIG9uIG1lbWJlciwgaXQgbWF5IGJlIGluY29tcGF0aWJsZSB3aXRoIGdyb3VwIGlmIGl0IHdhcyBjcmVhdGVkIHdpdGggYSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIHZhbHVlIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cC4AQW4gb3V0LW9mLW1lbW9yeSBlcnJvciBvY2N1cnJlZCB3aGlsZSBzYXZpbmcgdGhlIHNldCBvZiBHVElEcyBmcm9tIHRoZSBsYXN0IGJpbmFyeSBsb2cgaW50byB0aGUgbXlzcWwuZ3RpZF9leGVjdXRlZCB0YWJsZQBUaGUgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyBzZXR0aW5nIGZvciB0aGUgZGF0YSBkaWN0aW9uYXJ5IHdhcyBub3QgZm91bmQuIFN0YXJ0aW5nIHRoZSBzZXJ2ZXIgdXNpbmcgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9ICcldScuAEEgY2FwdHVyZSBncm91cCBoYXMgYW4gaW52YWxpZCBuYW1lLgBWYXJpYWJsZSAnJS0uNjRzJyBjYW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICclLS4yMDBzJwBTdG9wcGluZyBzZXJ2aWNlcyBmYWlsZWQgd2l0aCBlcnJvciAiJXMiAFF1ZXJ5IGNhdXNlZCBkaWZmZXJlbnQgZXJyb3JzIG9uIHNvdXJjZSBhbmQgcmVwbGljYS4gRXJyb3Igb24gc291cmNlOiBtZXNzYWdlIChmb3JtYXQpPSclcycgZXJyb3IgY29kZT0lZDsgRXJyb3Igb24gcmVwbGljYTphY3R1YWwgbWVzc2FnZT0nJXMnLCBlcnJvciBjb2RlPSVkLiBEZWZhdWx0IGRhdGFiYXNlOiclcycuIFF1ZXJ5OiclcycAR290IGZhdGFsIGVycm9yICVkIGZyb20gc291cmNlIHdoZW4gcmVhZGluZyBkYXRhIGZyb20gYmluYXJ5IGxvZzogJyUtLjUxMnMnAFJlcGxpY2F0aW9uIGV2ZW50IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2hpbGUgcmVhZGluZyBmcm9tIG5ldHdvcmsuAEZhaWxlZCB0byBjcmVhdGUgJXMARmF0YWwgZXJyb3I6ICVzAFVuZXhwZWN0ZWQgc291cmNlJ3MgaGVhcnRiZWF0IGRhdGE6ICVzAFRoZSBpbmNpZGVudCAlcyBvY2N1cnJlZCBvbiB0aGUgc291cmNlLiBNZXNzYWdlOiAlcwBTb3VyY2UgY29tbWFuZCAlcyBmYWlsZWQ6ICVzAFJlbGF5IGxvZyByZWFkIGZhaWx1cmU6ICVzAFJlbGF5IGxvZyB3cml0ZSBmYWlsdXJlOiAlcwBSZXBsaWNhIGZhaWxlZCB0byBpbml0aWFsaXplIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlIGZyb20gdGhlIHJlcG9zaXRvcnkAUmVwbGljYSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBhcHBsaWVyIG1ldGFkYXRhIHN0cnVjdHVyZSBmcm9tIHRoZSByZXBvc2l0b3J5AEdvdCBhIHBhY2tldCBiaWdnZXIgdGhhbiAnbWF4X2FsbG93ZWRfcGFja2V0JyBieXRlcwBBY2Nlc3MgdG8gJS42NHMgJyUuNjRzLiUuNjRzJyBpcyByZWplY3RlZC4AVW5rbm93biBlcnJvcgBVbmtub3duIHN5c3RlbSB2YXJpYWJsZSAnJS0uNjRzJwBBIG1lc3NhZ2UgaW50ZW5kZWQgZm9yIGEgY2xpZW50IGNhbm5vdCBiZSBzZW50IHRoZXJlIGFzIG5vIGNsaWVudC1zZXNzaW9uIGlzIGF0dGFjaGVkLiBUaGVyZWZvcmUsIHdlJ3JlIHNlbmRpbmcgdGhlIGluZm9ybWF0aW9uIHRvIHRoZSBlcnJvci1sb2cgaW5zdGVhZDogTVktJTA2ZCAtICVzAEFib3J0ZWQgY29ubmVjdGlvbiAldSB0byBkYjogJyUtLjE5MnMnIHVzZXI6ICclLS40OHMnIGhvc3Q6ICclLS4yNTVzJyAoJS0uNjRzOyBkaWFnbm9zdGljcyBhcmVhOiBNWS0lMDZkIC0gJS0uNjRzKQBPdXQgb2Ygc29ydCBtZW1vcnksIGNvbnNpZGVyIGluY3JlYXNpbmcgc2VydmVyIHNvcnQgYnVmZmVyIHNpemUhAFRoZSB0YWJsZSAnJS0uMTkycycgaXMgZnVsbCEAQ3JlYXRlIHRhYmxlL3RhYmxlc3BhY2UgJyUtLjE5MnMnIGZhaWxlZCwgYXMgZGlzayBpcyBmdWxsLgBIYW5kbGVyIHJlcG9ydGVkIGVycm9yICVkIC0gJXMASW5jb3JyZWN0IGluZm9ybWF0aW9uIGluIGZpbGU6ICclLS4yMDBzJwBDYW4ndCBvcGVuIGZpbGU6ICclLS4yMDBzJyAoT1MgZXJybm86ICVkIC0gJXMpAENhbid0IGZpbmQgZmlsZTogJyUtLjIwMHMnIChPUyBlcnJubzogJWQgLSAlcykAJyUtLjE5MnMnIGlzIGxvY2tlZCBhZ2FpbnN0IGNoYW5nZSAoT1MgZXJybm86ICVkIC0gJXMpAENhbm5vdCBsb2FkIGZyb20gJXMuJXMuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQhAEVycm9yIGluIGRpYWdub3N0aWNzIGFyZWE6IE1ZLSUwNmQgLSAlcwBJbmNvcnJlY3QgZGVmaW5pdGlvbiBvZiB0YWJsZSAlcy4lczogZXhwZWN0ZWQgY29sdW1uICclcycgYXQgcG9zaXRpb24gJWQsIGZvdW5kICclcycuAFRoZSBjb2x1bW4gY291bnQgb2YgJXMuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gQ3JlYXRlZCB3aXRoIE15U1FMICVkLCBub3cgcnVubmluZyAlZC4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBDb2x1bW4gY291bnQgb2YgJXMuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gVGhlIHRhYmxlIGlzIHByb2JhYmx5IGNvcnJ1cHRlZAAiAFJlcGxpY2EgU1FMIHRocmVhZCBhYm9ydGVkLiBDYW4ndCBleGVjdXRlIGluaXRfcmVwbGljYSBxdWVyeSwgTVktJTA2ZCAtICclcycAQ29sdW1uICVkIG9mIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZnJvbSB0eXBlICclLS4zMnMnIHRvIHR5cGUgJyUtLjMycycAUmVwbGljYSBTUUwgdGhyZWFkIGlnbm9yZWQgdGhlIHF1ZXJ5IGJlY2F1c2Ugb2YgcmVwbGljYXRlLSotdGFibGUgcnVsZXMAQ2Fubm90IHJlcGxpY2F0ZSBhbm9ueW1vdXMgdHJhbnNhY3Rpb24gd2hlbiBBVVRPX1BPU0lUSU9OID0gMSwgYXQgZmlsZSAlLjQwMHMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCByZXBsaWNhdGUgYW5vbnltb3VzIHRyYW5zYWN0aW9uIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04sIGF0IGZpbGUgJS40MDBzLCBwb3NpdGlvbiAlbGxkLgBDYW5ub3QgcmVwbGljYXRlIEdUSUQtdHJhbnNhY3Rpb24gd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYsIGF0IGZpbGUgJS40MDBzLCBwb3NpdGlvbiAlbGxkLgBTaW11bGF0ZWQgZXJyb3IAJXMAQXVkaXQgTG9nIGZpbHRlcmluZyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkLgBGYWlsZWQgdG8gb3BlbiB0aGUgJXMgZmlsdGVyIHRhYmxlcy4ARmFpbGVkIHRvIG9wZW4gJyVzLiVzJyAlcyB0YWJsZS4ARmlsdGVyIG5hbWUgY2Fubm90IGJlIGVtcHR5LgBJbnZhbGlkIGNoYXJhY3RlciBpbiB0aGUgdXNlciBuYW1lLgBSZXF1ZXN0IGlnbm9yZWQgZm9yICclcydAJyVzJy4gU1VQRVIgb3IgQVVESVRfQURNSU4gbmVlZGVkIHRvIHBlcmZvcm0gb3BlcmF0aW9uAE5vIGtleXJpbmcgaW5zdGFsbGVkLgBJbnZhbGlkIGNoYXJhY3RlciBpbiB0aGUgaG9zdCBuYW1lLgBBdWRpdCBsb2cgZW5jcnlwdGlvbiBwYXNzd29yZCBoYXMgbm90IGJlZW4gc2V0OyBpdCB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LiBVc2UgYXVkaXRfbG9nX2VuY3J5cHRpb25fcGFzc3dvcmRfZ2V0IHRvIG9idGFpbiB0aGUgcGFzc3dvcmQgb3IgYXVkaXRfbG9nX2VuY3J5cHRpb25fcGFzc3dvcmRfc2V0IHRvIHNldCBhIG5ldyBvbmUuAENvdWxkIG5vdCBjcmVhdGUgQUVTIGtleS4gT3BlblNTTCdzIEVWUF9CeXRlc1RvS2V5IGZ1bmN0aW9uIGZhaWxlZC4AQXVkaXQgbG9nIGVuY3J5cHRpb24gcGFzc3dvcmQgY2Fubm90IGJlIGZldGNoZWQgZnJvbSB0aGUga2V5cmluZy4gUGFzc3dvcmQgdXNlZCBzbyBmYXIgaXMgdXNlZCBmb3IgZW5jcnlwdGlvbi4AQ291bGQgbm90IHJlaW5pdGlhbGl6ZSBhdWRpdCBsb2cgZmlsdGVycy4AVXNlciBjYW5ub3QgYmUgZW1wdHkuAEZpcnN0IGNoYXJhY3RlciBvZiB0aGUgdXNlciBuYW1lIG11c3QgYmUgYWxwaGFudW1lcmljLgBTcGVjaWZpZWQgZmlsdGVyIGhhcyBub3QgYmVlbiBmb3VuZC4AQ2Fubm90IHVwZ3JhZGUgc2VydmVyIGVhcmxpZXIgdGhhbiA1LjcgdG8gOC4wACVzIChteXNxbGQgJXMpIGluaXRpYWxpemluZyBvZiBzZXJ2ZXIgaW4gcHJvZ3Jlc3MgYXMgcHJvY2VzcyAlbHUAJXMgKG15c3FsZCAlcykgaW5pdGlhbGl6aW5nIG9mIHNlcnZlciBoYXMgY29tcGxldGVkAENhbm5vdCBib290IHNlcnZlciB2ZXJzaW9uICVsdSBvbiBkYXRhIGRpcmVjdG9yeSBidWlsdCBieSB2ZXJzaW9uICVsbHUuIERvd25ncmFkZSBpcyBub3Qgc3VwcG9ydGVkAFJlY2VpdmVkIFNIVVRET1dOIGZyb20gdXNlciAlcy4gU2h1dHRpbmcgZG93biBteXNxbGQgKFZlcnNpb246ICVzKS4AVGhlIHBsdWdpbiBlbmNvdW50ZXJlZCBhIGNyaXRpY2FsIGVycm9yIGFuZCB3aWxsIGFib3J0OiAlcwBJbnZhbGlkIG1hdGNoIG1vZGUgZmxhZyBpbiByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSB1c2Ugb2YgcmVwbGljYXRpb24gZmlsdGVycyB3aXRoIFhBIHRyYW5zYWN0aW9ucyBpcyBub3Qgc3VwcG9ydGVkLCBhbmQgY2FuIGxlYWQgdG8gYW4gdW5kZWZpbmVkIHN0YXRlIGluIHRoZSByZXBsaWNhLgBDYW5ub3QgdXBkYXRlIEdUSURfUFVSR0VEIHdpdGggdGhlIEdyb3VwIFJlcGxpY2F0aW9uIHBsdWdpbiBydW5uaW5nACclcy4lcycgdGFibGUgZGVmaW5pdGlvbiBoYXMgbm90IGJlZW4gdXBncmFkZWQ7IFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4ARXhlY3V0aW9uIG9mIHNlcnZlci1zaWRlIFNRTCBzdGF0ZW1lbnQgJyVzJyBmYWlsZWQgd2l0aCBlcnJvciBjb2RlID0gJWQsIGVycm9yIG1lc3NhZ2UgPSAnJXMnLgBObyBwYXRocyBhbGxvd2VkIGZvciBzaGFyZWQgbGlicmFyeS4ARnVuY3Rpb24gJyUtLjE5MnMnIGFscmVhZHkgZXhpc3RzLgBHb3QgRXJyb3I6ICVsZCBmcm9tIFNldEV2ZW50LgBFcnJvciBhbGxvY2F0aW5nIFNTTCBCSU8uACVzAE9uZSBvciBzZXZlcmFsIGxvY2F0aW9ucyB3ZXJlIGluYWNjZXNzaWJsZSB3aGlsZSBjaGVja2luZyBQSUQgZmlsZXBhdGguAEN1cnJlbnRseSB1bmtub3duIHZhcmlhYmxlICclcycgd2FzIHJlYWQgZnJvbSB0aGUgcGVyc2lzdGVkIGNvbmZpZyBmaWxlLgBGYXRhbCBlcnJvciBpbiBkZWZhdWx0cyBoYW5kbGluZy4gUHJvZ3JhbSBhYm9ydGVkIQBEdXBsaWNhdGUgdmFyaWFibGUgbmFtZSAnJXMnLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBzeXN0ZW0gdmFyaWFibGVzLgBWYXJpYWJsZSBuYW1lICclcycgbm90IGZvdW5kLgBTb21lICglZCkgdGhyZWFkcyBhcmUgc3RpbGwgYWN0aXZlACVzAFNvdXJjZSB0YWJsZXNwYWNlIGlzIGVuY3J5cHRlZCBidXQgdGFyZ2V0IHRhYmxlc3BhY2UgaXMgbm90LgBXYWl0aW5nIGZvciB0YWJsZXNwYWNlX2FsdGVyX2VuY3J5cHRfdGhyZWFkIHRvIGV4aXQAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXM6IENvdWxkIG5vdCBhZGQgc3VwcHJlc3Npb24gcnVsZSBmb3IgY29kZSAiJXMiLiBSdWxlLXNldCBtYXkgYmUgZnVsbCwgb3IgY29kZSBtYXkgbm90IGNvcnJlc3BvbmQgdG8gYW4gZXJyb3ItbG9nIG1lc3NhZ2UuAEludmFsaWQgdmFsdWUgZm9yIGNvbW1hbmQgbGluZSBvcHRpb24gYmluZC1hZGRyZXNzZXM6ICclcycASWdub3JpbmcgdGhlIEBAZ2xvYmFsLnJlbGF5X2xvZ19zcGFjZV9saW1pdCBvcHRpb24gYmVjYXVzZSBAQGdsb2JhbC5yZWxheV9sb2dfcHVyZ2UgaXMgZGlzYWJsZWQuAEVycm9yIHdoZW4gZXh0cmFjdGluZyBHVElEIGV4ZWN1dGlvbiBpbmZvcm1hdGlvbjogJXMATWVzc2FnZSByZWNlaXZlZCB3aXRob3V0IGEgcHJvcGVyIGdyb3VwIGNvb3JkaW5hdG9yIG1vZHVsZS4AQSBtZW1iZXIgY2Fubm90IGpvaW4gdGhlIGdyb3VwIHdoaWxlIGEgZ3JvdXAgY29uZmlndXJhdGlvbiBvcGVyYXRpb24gJyVzJyBpcyBydW5uaW5nIGluaXRpYXRlZCBieSAnJXMnLgBBIG1lbWJlciBpcyBqb2luaW5nIHRoZSBncm91cCB3aGlsZSBhIGdyb3VwIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uICclcycgaXMgcnVubmluZyBpbml0aWF0ZWQgYnkgJyVzJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAENhbid0IHN0YXJ0ICVzIGZvciBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIGEgZ3JvdXAgY29uZmlndXJhdGlvbiBvcGVyYXRpb24gJyVzJyBpbml0aWF0ZWQgYnkgJyVzJy4AQSBwcmltYXJ5IGVsZWN0aW9uIHdhcyBpbnZva2VkIGJ1dCB0aGUgcmVxdWVzdGVkIHByaW1hcnkgbWVtYmVyIGlzIG5vdCBpbiB0aGUgZ3JvdXAuIFJlcXVlc3QgaWdub3JlZC4ARXJyb3Igd2hpbGUgc2VuZGluZyBtZXNzYWdlLiBDb250ZXh0OiAlcwBFcnJvciB3aGlsZSBleGVjdXRpbmcgYSBncm91cCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbjogJXMAQ29uZmlndXJhdGlvbiBvcGVyYXRpb24gJyVzJyB0ZXJtaW5hdGVkLiAlcwBTdGFydGluZyBncm91cCBvcGVyYXRpb24gbG9jYWwgZXhlY3V0aW9uOiAlcwBUZXJtaW5hdGlvbiBvZiBncm91cCBvcGVyYXRpb24gbG9jYWwgZXhlY3V0aW9uOiAlcwBBIGNvbmZpZ3VyYXRpb24gY2hhbmdlIHdhcyBraWxsZWQgaW4gdGhpcyBtZW1iZXIuIFRoZSBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwIGFzIGl0cyBjb25maWd1cmF0aW9uIG1heSBoYXZlIGRpdmVyZ2VkLgBUaGVyZSB3YXMgYW4gaXNzdWUgb24gdGhlIHByaW1hcnkgZWxlY3Rpb24gcHJvY2VzczogJXMgVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIHN0b3BwaW5nIGEgcHJldmlvdXMgZWxlY3Rpb24gcHJvY2VzczogJXMASXQgd2FzIG5vdCBwb3NzaWJsZSB0byBpbml0aWFsaXplIHN0YWdlIGxvZ2dpbmcgZm9yIHRoaXMgdGFzay4gVGhlIG9wZXJhdGlvbiB3aWxsIHN0aWxsIHJ1biB3aXRob3V0IHN0YWdlIHRyYWNraW5nLgBDb3VsZCBub3QgZXhlY3V0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIEdyb3VwIFJlcGxpY2F0aW9uIFVERiBmdW5jdGlvbjogJXMuIENoZWNrIGlmIHRoZSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQsIGlmIHNvLCB0cnkgdG8gcmVtb3ZlIGl0AENvdWxkIG5vdCB1bmluc3RhbGwgR3JvdXAgUmVwbGljYXRpb24gVURGIGZ1bmN0aW9ucy4gVHJ5IHRvIHJlbW92ZSB0aGVtIG1hbnVhbGx5IGlmIHByZXNlbnQuAENvdWxkIG5vdCBleGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgR3JvdXAgUmVwbGljYXRpb24gVURGIGZ1bmN0aW9ucy4gQ2hlY2sgZm9yIG90aGVyIGVycm9ycyBpbiB0aGUgbG9nIGFuZCB0cnkgdG8gcmVpbnN0YWxsIHRoZSBwbHVnaW4AVGhlIGZ1bmN0aW9uICclcycgZmFpbGVkLiAlcwBEbyBub3Qgc3BlY2lmeSB0aGUgY3VycmVudCBwYXNzd29yZCB3aGlsZSBjaGFuZ2luZyBpdCBmb3Igb3RoZXIgdXNlcnMuAEluY29ycmVjdCBjdXJyZW50IHBhc3N3b3JkLiBTcGVjaWZ5IHRoZSBjb3JyZWN0IHBhc3N3b3JkIHdoaWNoIGhhcyB0byBiZSByZXBsYWNlZC4AQ3VycmVudCBwYXNzd29yZCBuZWVkcyB0byBiZSBzcGVjaWZpZWQgaW4gdGhlIFJFUExBQ0UgY2xhdXNlIGluIG9yZGVyIHRvIGNoYW5nZSBpdC4AVmFyaWFibGUgJyUtLjY0cycgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnJS0uMjAwcycAJXMgd2FzIHVuYWJsZSB0byBjcmVhdGUgYSBuZXcgV2luZG93cyByZWdpc3RyeSBrZXkgJXMgZm9yICVzOyBjb250aW51aW5nIHRvIHVzZSB0aGUgcHJldmlvdXMgaWRlbnQuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIGFuZCBEUk9QIFRFTVBPUkFSWSBUQUJMRSBhcmUgbm90IGFsbG93ZWQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gb3IgaW5zaWRlIGEgcHJvY2VkdXJlIGluIGEgdHJhbnNhY3Rpb25hbCBjb250ZXh0IHdoZW4gQEBzZXNzaW9uLmJpbmxvZ19mb3JtYXQ9U1RBVEVNRU5ULgBTZWNvbmRhcnkgZW5naW5lIG9wZXJhdGlvbiBmYWlsZWQuICVzLgBERExzIG9uIGEgdGFibGUgd2l0aCBhIHNlY29uZGFyeSBlbmdpbmUgZGVmaW5lZCBhcmUgbm90IGFsbG93ZWQuAFVuYWJsZSB0byBhbGxvY2F0ZSB0ZW1wb3JhcnkgdGFibGVzcGFjZSBmb3IgdGhpcyBzZXNzaW9uAFVuYWJsZSB0byBzd2l0Y2ggc2VjdXJpdHkgY29udGV4dCB0byB1c2VyOiAlcwBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQUxURVIgVEFCTEUgLi4uIEFERCBDT0xVTU4gLi4gd2l0aCBleHByZXNzaW9uIGFzIERFRkFVTFQuAEVycm9yIGluIHBhcnNpbmcgJXMgJyVzJy4nJXMnIGR1cmluZyB1cGdyYWRlLiAlcwBUaGUgZGVzaWduYXRlZCBkYXRhIGRpcmVjdG9yeSAlcyBpcyB1bnVzYWJsZS4gWW91IGNhbiByZW1vdmUgYWxsIGZpbGVzIHRoYXQgdGhlIHNlcnZlciBhZGRlZCB0byBpdC4AR3JvdXAgc2VhcmNoIHJlYmluZGluZyB2aWEgcm9vdCBETjogJXMgAEVycm9yIGluc3RhbGxpbmcgcGx1Z2luICclcyc6ICVzAEVycm9yIHVuaW5zdGFsbGluZyBwbHVnaW4gJyVzJzogJXMAUGFydGl0aW9uZWQgdGFibGUgJyVzJyBpcyBub3QgYWxsb3dlZCB0byB1c2Ugc2hhcmVkIHRhYmxlc3BhY2UgJyVzJy4gUGxlYXNlIG1vdmUgYWxsIHBhcnRpdGlvbnMgdG8gZmlsZS1wZXItdGFibGUgdGFibGVzcGFjZXMgYmVmb3JlIHVwZ3JhZGUuAENhbm5vdCBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIHRhYmxlc3BhY2UgbmFtZWQgJyVzJy4AJXM6ICd1dGY4JyBpcyBjdXJyZW50bHkgYW4gYWxpYXMgZm9yIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIGJ1dCB3aWxsIGJlIGFuIGFsaWFzIGZvciBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgAlczogVGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgaW5zdGVhZC4AJXM6ICclLS42NHMnIGlzIGEgY29sbGF0aW9uIG9mIHRoZSBkZXByZWNhdGVkIGNoYXJhY3RlciBzZXQgVVRGOE1CMy4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgd2l0aCBhbiBhcHByb3ByaWF0ZSBjb2xsYXRpb24gaW5zdGVhZC4AVGhlIFNTTCBsaWJyYXJ5IGZ1bmN0aW9uICVzIGZhaWxlZC4gVGhpcyBpcyB0eXBpY2FsbHkgY2F1c2VkIGJ5IHRoZSBTU0wgbGlicmFyeSBhbHJlYWR5IGJlaW5nIHVzZWQuIEFzIGEgcmVzdWx0IHRoZSBTU0wgbWVtb3J5IGFsbG9jYXRpb24gd2lsbCBub3QgYmUgaW5zdHJ1bWVudGVkLgBEaXNhYmxpbmcgQEBjb3JlX2ZpbGUgYmVjYXVzZSBAQGlubm9kYl9idWZmZXJfcG9vbF9pbl9jb3JlX2ZpbGUgaXMgZGlzYWJsZWQsIHlldCBNQURWX0RPTlREVU1QIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQBEaXNhYmxpbmcgQEBjb3JlX2ZpbGUgYmVjYXVzZSBAQGlubm9kYl9idWZmZXJfcG9vbF9pbl9jb3JlX2ZpbGUgaXMgZGlzYWJsZWQsIHlldCBtYWR2aXNlKCVwLCV6dSwlcykgZmFpbGVkIHdpdGggJXMAQ291bGQgbm90IGNoYW5nZSBjb2x1bW4gJyVzJyBvZiB0YWJsZSAnJXMnLiBUaGUgcmVzdWx0aW5nIHNpemUgb2YgaW5kZXggJyVzJyB3b3VsZCBleGNlZWQgdGhlIG1heCBrZXkgbGVuZ3RoIG9mICVkIGJ5dGVzLgBzcWxfbW9kZT0weCUwOHggaGFzIGJlZW4gcmVtb3ZlZCBhbmQgd2lsbCBiZSBpZ25vcmVkAEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgcG9vbCBvZiBzaXplICV6dSBieXRlcy4gV2lsbCB3YWl0IGZvciAlenUgc2Vjb25kcyBmb3IgYSB0aHJlYWQgdG8gZnJlZSBhIHJlc291cmNlLgBOdW1iZXIgb2YgcG9vbHM6ICV6dQBVc2luZyB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AJXMgVW5hYmxlIHRvIHNhdmUgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGFibGVzcGFjZSAnJXMnIHRvIHRoZSBkYXRhIGRpY3Rpb25hcnkAQ2Fubm90IGNyZWF0ZSB1bmRvIHRhYmxlc3BhY2UgJXMgYXQgJXMgYmVjYXVzZSAlZCB1bmRvIHRhYmxlc3BhY2VzIGFscmVhZHkgZXhpc3QuAEVycm9yICVkIG9wZW5pbmcgbmV3bHkgY3JlYXRlZCB1bmRvIHRhYmxlc3BhY2UgJXMuAFNESSBDb21wcmVzc2lvbiBmYWlsZWQsIFpfQlVGX0VSUk9SAFNESSBDb21wcmVzc2lvbiBmYWlsZWQsIFpfTUVNX0VSUk9SAFNESSBDb21wcmVzc2lvbiBmYWlsZWQsIFpfU1RSRUFNX0VSUk9SACVzAEV4cGVjdGVkIHRvIGZpbmQgdW5kbyB0YWJsZXNwYWNlICclcycgZm9yIFNwYWNlIElEPSVsdSwgYnV0IGZvdW5kICclcycgaW5zdGVhZCEgIERpZCB5b3UgY2hhbmdlIGlubm9kYl91bmRvX2RpcmVjdG9yeT8AQ2Fubm90IHVzZSAlcyBhcyBhbiB1bmRvIHRhYmxlc3BhY2UgYmVjYXVzZSBpdCBkb2VzIG5vdCBlbmQgd2l0aCAnLmlidScuAGliX3VuZG9fdHJ1bmNfZW1wdHlfZmlsZQBpYl91bmRvX3RydW5jX2JlZm9yZV9kZF91cGRhdGUAaWJfdW5kb190cnVuY19iZWZvcmVfZG9uZV9sb2dnaW5nAGliX3VuZG9fdHJ1bmNfYmVmb3JlX3JzZWdzACVzIEZhaWxlZCB0byBmaW5pc2ggdHJ1bmNhdGluZyBVbmRvIFRhYmxlc3BhY2UgJyVzJwBUaGUgc2V0dGluZyBJTk5PREJfVU5ET19UQUJMRVNQQUNFUyBpcyBkZXByZWNhdGVkIGFuZCBpcyBubyBsb25nZXIgdXNlZC4gIElubm9EQiBhbHdheXMgY3JlYXRlcyAyIHVuZG8gdGFibGVzcGFjZXMgdG8gc3RhcnQgd2l0aC4gSWYgeW91IG5lZWQgbW9yZSwgcGxlYXNlIHVzZSBDUkVBVEUgVU5ETyBUQUJMRVNQQUNFLgBUaGUgZGlyZWN0b3J5IGZvciB0YWJsZXNwYWNlICVzIGRvZXMgbm90IGV4aXN0IG9yIGlzIGluY29ycmVjdC4AJXMAQ2xvbmUgZG9ub3IgcmVwb3J0ZWQgOiAlLjUxMnMuAENsb25lIHJlY2VpdmVkIHVuZXhwZWN0ZWQgcmVzcG9uc2UgZnJvbSBkb25vciA6ICUuNTEycy4AQ2xpZW50OiAlLjUxMnMuAFNlcnZlcjogJS41MTJzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcGVyZm9ybWFuY2Ugc2NoZW1hIHRhYmxlcyBzZXJ2aWNlLgBGYWlsZWQgdG8gYWRkIHRocmVhZCBwb29sIHBlcmZvcm1hbmNlIHNjaGVtYSB0YWJsZXMuAEZhaWxlZCB0byBzZXQgZGF0YWRpciB0byAnJS0uMjAwcycgKE9TIGVycm5vOiAlZCAtICVzKQBUaGUgaW5ub2RiX3VuZG9fZGlyZWN0b3J5IGlzIG5vdCBhbGxvd2VkIHRvIGJlIGFuIGFuY2VzdG9yIG9mIHRoZSBkYXRhZGlyLgBGYWlsZWQgdG8gZmV0Y2gga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBDYW4ndCBmaW5kIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpbiB0aGUgc2VydmVyIGxvZyBpZiBhIGtleXJpbmcgaXMgbG9hZGVkIGFuZCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuAEZldGNoZWQgYW4gaW52YWxpZCBrZXkgZnJvbSBrZXlyaW5nLgBFcnJvciByZWFkaW5nIGEgcmVwbGljYXRpb24gbG9nIGVuY3J5cHRpb24gaGVhZGVyOiAlcy4ARmFpbGVkIHRvIHJvdGF0ZSBzb21lIGxvZ3MgYWZ0ZXIgY2hhbmdpbmcgYmlubG9nIGVuY3J5cHRpb24gc2V0dGluZ3MuIFBsZWFzZSBmaXggdGhlIHByb2JsZW0gYW5kIHJvdGF0ZSB0aGUgbG9ncyBtYW51YWxseS4AS2V5ICVzIGV4aXN0cyB1bmV4cGVjdGVkLgBGYWlsZWQgdG8gZ2VuZXJhdGUga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byBzdG9yZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHJlbW92ZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4AVW5hYmxlIHRvIHJlY292ZXIgYmlubG9nIGVuY3J5cHRpb24gbWFzdGVyIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBiaW5sb2cgZW5jcnlwdGlvbiwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gcm90YXRlIGJpbmxvZyBlbmNyeXB0aW9uIG1hc3RlciBrZXkgYXQgc3RhcnR1cCwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBJZ25vcmluZyBiaW5sb2dfcm90YXRlX2VuY3J5cHRpb25fbWFzdGVyX2tleV9hdF9zdGFydHVwIGJlY2F1c2UgYmlubG9nX2VuY3J5cHRpb24gb3B0aW9uIGlzIGRpc2FibGVkLgBJbnZhbGlkIHZhbHVlIGZvciBjb21tYW5kIGxpbmUgb3B0aW9uIGFkbWluLWFkZHJlc3M6ICclcycAQWRtaW4gaW50ZXJmYWNlIHJlYWR5IGZvciBjb25uZWN0aW9ucywgYWRkcmVzczogJyVzJyAgcG9ydDogJWQAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgYWRtaW4gY29ubmVjdGlvbnMgKGVycm5vPSAlZCkAUkVUQUlOIENVUlJFTlQgUEFTU1dPUkQgaWdub3JlZCBmb3IgdXNlciAnJXMnQCclcycgYXMgaXRzIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAlcyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIHBhc3N3b3Jkcy4ARElTQ0FSRCBPTEQgUEFTU1dPUkQgaWdub3JlZCBmb3IgdXNlciAnJXMnQCclcycgYXMgaXRzIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAlcyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIHBhc3N3b3Jkcy4ARW1wdHkgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBhcyBzZWNvbmQgcGFzc3dvcmQgZm9yIHVzZXIgJyVzJ0AnJXMnLgBDdXJyZW50IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGJlY2F1c2UgYXV0aGVudGljYXRpb24gcGx1Z2luIGlzIGJlaW5nIGNoYW5nZWQuAEN1cnJlbnQgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBmb3IgdXNlciAnJXMnQCclcycgYmVjYXVzZSBuZXcgcGFzc3dvcmQgaXMgZW1wdHkuAENhbiBub3QgcmVhZCBhbmQgcHJvY2VzcyB2YWx1ZSBvZiBVc2VyX2F0dHJpYnV0ZXMgY29sdW1uIGZyb20gbXlzcWwudXNlciB0YWJsZSBmb3IgdXNlcjogJyVzQCVzJzsgSWdub3JpbmcgdXNlci4AU2Vjb25kIHBhc3N3b3JkIHdhcyB1c2VkIGZvciBsb2dpbiBieSB1c2VyOiAnJXMnQCclcycuAFNlY29uZCBwYXNzd29yZCB3YXMgdXNlZCBmb3IgbG9naW4gYnkgdXNlcjogJyVzJ0AnJXMnLgBTZWNvbmQgcGFzc3dvcmQgd2FzIHVzZWQgZm9yIGxvZ2luIGJ5IHVzZXI6ICclcydAJyVzJy4ARXJyb3Igc2VuZGluZyB0cmFuc2FjdGlvbiAnJWQ6JWxsZCcgcHJlcGFyZWQgbWVzc2FnZSBmcm9tIHNlc3Npb24gJyV1Jy4ARXJyb3IgcmVsZWFzaW5nIHRyYW5zYWN0aW9uICclZDolbGxkJyBmb3IgY29tbWl0IG9uIHNlc3Npb24gJyV1JyBhZnRlciBiZWluZyBwcmVwYXJlZCBvbiBhbGwgZ3JvdXAgbWVtYmVycy4AVHJhbnNhY3Rpb24gJyVkOiVsbGQnIGFscmVhZHkgZXhpc3RzIG9uIEdyb3VwIFJlcGxpY2F0aW9uIGNvbnNpc3RlbmN5IG1hbmFnZXIgd2hpbGUgYmVpbmcgcmVnaXN0ZXJlZCBhZnRlciBjb25mbGljdCBkZXRlY3Rpb24uAEVycm9yIHJlZ2lzdGVyaW5nIHRyYW5zYWN0aW9uICclZDolbGxkJyBvbiBHcm91cCBSZXBsaWNhdGlvbiBjb25zaXN0ZW5jeSBtYW5hZ2VyIGFmdGVyIGNvbmZsaWN0IGRldGVjdGlvbi4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gJyVkOiVsbGQnIGZyb20gc2Vzc2lvbiAnJXUnIHRvIHdhaXQgZm9yIGJlaW5nIHByZXBhcmVkIG9uIGFsbCBncm91cCBtZW1iZXJzLgBFcnJvciBvbiB0cmFuc2FjdGlvbiAnJWQ6JWxsZCcgZnJvbSBzZXNzaW9uICcldScgd2hpbGUgd2FpdGluZyBmb3IgYmVpbmcgcHJlcGFyZWQgb24gYWxsIGdyb3VwIG1lbWJlcnMuAFRyYW5zYWN0aW9uICclZDolbGxkJyBkb2VzIG5vdCBleGlzdCBvbiBHcm91cCBSZXBsaWNhdGlvbiBjb25zaXN0ZW5jeSBtYW5hZ2VyIHdoaWxlIHJlY2VpdmluZyByZW1vdGUgdHJhbnNhY3Rpb24gcHJlcGFyZS4ARXJyb3IgcmVsZWFzaW5nIHRyYW5zYWN0aW9uICclZDolbGxkJyBmb3IgZXhlY3V0aW9uIG9uIHNlc3Npb24gJyV1JyBhZnRlciBpdHMgZGVwZW5kZW5jaWVzIGRpZCBjb21wbGV0ZSBjb21taXQuAEVycm9yIHJlZ2lzdGVyaW5nIHRyYW5zYWN0aW9uIGZyb20gc2Vzc2lvbiAnJXUnIHRvIHdhaXQgZm9yIGl0cyBkZXBlbmRlbmNpZXMgdG8gY29tcGxldGUgY29tbWl0LgBFcnJvciBvbiBzZXNzaW9uICcldScgd2hpbGUgd2FpdGluZyBmb3IgaXRzIGRlcGVuZGVuY2llcyB0byBjb21wbGV0ZSBjb21taXQuAEVycm9yIHJlZ2lzdGVyaW5nIHRyYW5zYWN0aW9uIGZyb20gc2Vzc2lvbiAnJXUnIHRvIHdhaXQgZm9yIHN5bmMgYmVmb3JlIGV4ZWN1dGlvbi4ARXJyb3Igc2VuZGluZyBzeW5jIGJlZm9yZSBleGVjdXRpb24gbWVzc2FnZSBmcm9tIHNlc3Npb24gJyV1Jy4ARXJyb3Igb24gdHJhbnNhY3Rpb24gZnJvbSBzZXNzaW9uICcldScgd2hpbGUgd2FpdGluZyBmb3Igc3luYyBiZWZvcmUgZXhlY3V0aW9uLgBFcnJvciByZWxlYXNpbmcgdHJhbnNhY3Rpb24gZm9yIGV4ZWN1dGlvbiBvbiBzZXNzaW9uICcldScgYWZ0ZXIgd2FpdCBmb3Igc3luYyBiZWZvcmUgZXhlY3V0aW9uLgBFcnJvciB3YWl0aW5nIGZvciBncm91cCBleGVjdXRlZCB0cmFuc2FjdGlvbnMgY29tbWl0IG9uIHNlc3Npb24gJyV1Jy4AVGhlcmUncyBubyB1bml0IG9mIG1lYXN1cmUgbmFtZWQgJyVzJy4AVGhlIGZ1bmN0aW9uICVzIHVzZXMgJXMgYXMgYSB1bml0LCBidXQgd2FzIHBhc3NlZCBnZW9tZXRyeSB3aXRob3V0IHVuaXRzICgiU1JJRCAwIikuIENvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLgBDb3VsZCBub3QgcGFyc2Uga2V5LXZhbHVlIHBhaXJzIGluIHByb3BlcnR5IHN0cmluZyAnJXMnAFByb3BlcnR5IGtleSAnJXMnIGlzIGludmFsaWQuAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGUgZ3JvdXBfcmVwbGljYXRpb25fYXBwbGllciBjaGFubmVsIHJlY2VpdmVkIHRyYW5zYWN0aW9ucyBzZXQuIFVuYWJsZSB0byBlbnN1cmUgdGhlIGV4ZWN1dGlvbiBvZiBncm91cCB0cmFuc2FjdGlvbnMgcmVjZWl2ZWQgZHVyaW5nIHJlY292ZXJ5LgBGYWlsZWQgdG8gZW5jcnlwdCBjb250ZW50IHRvIHdyaXRlIGludG8gYmlubG9nIGZpbGU6ICVzLgBDYW5ub3QgZ2V0IHRoZSBzZXJ2ZXIgdmVyc2lvbiBudW1iZXIgZnJvbSB0aGUgZGljdGlvbmFyeSB0YWJsZXNwYWNlIGhlYWRlci4AQ2Fubm90IHNldCB0aGUgc2VydmVyIHZlcnNpb24gbnVtYmVyIGluIHRoZSBkaWN0aW9uYXJ5IHRhYmxlc3BhY2UgaGVhZGVyLgBVcGdyYWRpbmcgdGhlIHNlcnZlciBmcm9tIHNlcnZlciB2ZXJzaW9uICcldScgaXMgbm90IHN1cHBvcnRlZC4ATXlTUUwgc2VydmVyIHVwZ3JhZGluZyBmcm9tIHZlcnNpb24gJyV1JyB0byAnJXUnLgBUaGUgY2VydGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBjb3VsZCBub3QgYmUgc2V0IGluIHRoaXMgc2VydmVyOiAnJXMnAEEgcmVxdWVzdCB0byBmb3JjZSBhIG5ldyBncm91cCBtZW1iZXJzaGlwIHdhcyBpc3N1ZWQgd2hlbiB0aGUgbWVtYmVyIGlzIGxlYXZpbmcgdGhlIGdyb3VwLgBUcmlnZ2VyICVzLiVzIGZvciB0YWJsZSAlcy4lcyBpcyBsaXN0ZWQgaW4gd3Jvbmcgb3JkZXIuIFBsZWFzZSBkcm9wIGFuZCByZWNyZWF0ZSBhbGwgdHJpZ2dlcnMgZm9yIHRoZSB0YWJsZS4AJXMAU3BlY2lhbCBoYW5kbGluZyBmb3IgZ3JvdXAgc2VhcmNoLCB7R0F9IG5vdCBmb3VuZABVc2VyIGdyb3VwIHJldHJpZXZhbDogVXNlciBvYmplY3QgaGFzIGdyb3VwIGluZm9ybWF0aW9uAEdyb3VwIGluZm9ybWF0aW9uIGZvdW5kIGluIG11bHRpcGxlIHVzZXIgb2JqZWN0cy4gU2VhcmNoIGZpbHRlciBjb25maWd1cmF0aW9uIGlzIGluY29ycmVjdC4AVXNlciBncm91cCByZXRyaWV2YWw6IG5vIGdyb3VwIGF0dHJpYnV0ZSBmb3VuZC4gSW5jb3JyZWN0IGdyb3VwIHNlYXJjaCBhdHRyaWJ1dGUuIABVc2VyIGdyb3VwIHJldHJpZXZhbDogR3JvdXAgYXR0cmlidXRlIHZhbHVlcyBpcyBOVUxMLiAAVXNlciBncm91cCByZXRyaWV2YWw6IHBhcnNpbmcgRE4gZmFpbGVkLiAAVXNlciBncm91cCByZXRyaWV2YWw6IEdyb3VwIG9iamVjdCBoYXMgdXNlciBpbmZvcm1hdGlvbgBSZXNlcnZlZCBwb3J0IGZvciBsZGFwcyB1c2luZyBsZGFwcwBHZXQgdXNlciBwcm94eQBHZXQgdXNlciBwcm94eTogVXNlciBkb2Vzbid0IGJlbG9uZ3MgdG8gYW55IGdyb3VwLCB1c2VyIG5hbWUgd2lsbCBiZSB0cmVhdGVkIGFzIGF1dGhlbnRpY2F0ZWQgdXNlci4AR2V0IHVzZXIgcHJveHk6IGNvbmZpZ3VyZWQgbWFwcGluZyBpbmZvOiAlcwBHZXQgdXNlciBwcm94eTogVXNlciBkb2Vzbid0IGhhdmUgZ3JvdXAgbWFwcGluZyBpbmZvcm1hdGlvbiwgRmlyc3QgTERBUCBncm91cCB3aWxsIGJlIHRyZWF0ZWQgYXMgYXV0aGVudGljYXRlZCB1c2VyLgBQcm9jZXNzIGdyb3VwIHByb3h5IG1hcHBpbmcAQ2hlY2sgZGVsaW1pdGVyIGFmdGVyIHF1b3RlAFByb2Nlc3NpbmcgZGVsaW1pdGVyAFByb2Nlc3NpbmcgZGVsaW1pdGVyLCBzZXBhcmF0b3IgPSBub3QgZm91bmQsIHJlc2V0dGluZyBwb3NpdGlvbgAiUHJvY2Vzc2luZyBkZWxpbWl0ZXIsIGZhaWxlZCB0byBnZXQgZGF0YSBmb3IgPSBzZXBhcmF0b3IgdHJ5IGZvciBzZXBhcmF0b3IgLC4iAFByb2Nlc3NpbmcgZGVsaW1pdGVyLCBzZXBhcmF0b3IgLCBub3QgZm91bmQsIHJlc2V0dGluZyBwb3NpdGlvbgBQcm9jZXNzaW5nIGRlbGltaXRlcjogTm8gbWFwcGluZyBzZXBhcmF0b3IgaXMgZm91bmQsIGVuZCBvZiBncm91cCBpbmZvcm1hdGlvbgBHZXR0aW5nIG5leHQgbWFwcGluZyBpbmZvcm1hdGlvbgBQYXJzaW5nIG1hcHBpbmcsIGN1cnJlbnQgc3RhdGU6ICVkICBkZWxpbWl0ZXIgY2hhcjogJWMgAFBhcnNpbmcgbWFwcGluZyBpbmZvLCBMREFQIGdyb3VwOiAlcyBNeVNRTCBwcm94eTogJXMATWFwcGluZyBwYXJzaW5nIGVycm9yAFRyaW1taW5nIGxlZnQgc3BhY2VzAENoZWNraW5nIGlmIGN1cnJlbnQgY2hhcmFjdGVycyBpcyBxdW90ZQBOb3QgZGVzaXJlZCBzdGF0ZSBvciB1bi1kZWZpbmVkIHN0YXRlcy4ASW52YWxpZCB2YWx1ZSBmb3IgbmFtZWRfcGlwZV9mdWxsX2FjY2Vzc19ncm91cC4AUmV0cnkgdGhlIHN0YXRlbWVudCB1c2luZyBhIHNlY29uZGFyeSBzdG9yYWdlIGVuZ2luZS4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkAENhbm5vdCBzZXQgbWFuZGF0b3J5X3JvbGVzOiBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGhhcyAnJXMnIHByaXZpbGVnZS4AVW5hYmxlIHRvIHJlY292ZXIgYmluYXJ5IGxvZyBtYXN0ZXIga2V5LCB0aGUgY29tYmluYXRpb24gb2YgbmV3X21hc3Rlcl9rZXlfc2Vxbm89JXUsIG1hc3Rlcl9rZXlfc2Vxbm89JXUgYW5kIG9sZF9tYXN0ZXJfa2V5X3NlcW5vPSV1IGFyZSB3cm9uZy4ARmFpbGVkIHRvIHJlbW92ZSBhdXhpbGlhcnkgYmluYXJ5IGxvZyBlbmNyeXB0aW9uIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4gVGhlIGNsZWFudXAgb2YgdGhlIGJpbmFyeSBsb2cgbWFzdGVyIGtleSByb3RhdGlvbiBwcm9jZXNzIGRpZCBub3QgZmluaXNoIGFzIGV4cGVjdGVkIGFuZCB0aGUgY2xlYW51cCB3aWxsIHRha2UgcGxhY2UgdXBvbiBzZXJ2ZXIgcmVzdGFydCBvciBuZXh0ICdBTFRFUiBJTlNUQU5DRSBST1RBVEUgQklOTE9HIE1BU1RFUiBLRVknIGV4ZWN1dGlvbi4AQXV0aElkIGAlLjY0c2BAYCUuNjRzYCBpcyBzZXQgYXMgbWFuZGF0b3J5X3JvbGVzLiBDYW5ub3QgZ3JhbnQgdGhlICclcycgcHJpdmlsZWdlLgAnJXMnIHByaXZpbGVnZSBmb3IgZGF0YWJhc2UgJyVzJyBleGlzdHMgYm90aCBhcyBwYXJ0aWFsIHJldm9rZSBhbmQgbXlzcWwuZGIgc2ltdWx0YW5lb3VzbHkuIEl0IGNvdWxkIG1lYW4gJ215c3FsJyBzY2hlbWEgaXMgY29ycnVwdGVkLgBBY2Nlc3MgZGVuaWVkIGZvciBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIHRvIGRhdGFiYXNlICclLS4xOTJzJy4AQXQgbGVhc3Qgb25lIHBhcnRpYWwgcmV2b2tlIGV4aXN0cyBvbiBhIGRhdGFiYXNlLiBUaGUgc3lzdGVtIHZhcmlhYmxlICdAQHBhcnRpYWxfcmV2b2tlcycgbXVzdCBiZSBzZXQgdG8gT04uAEF0IGxlYXN0IG9uZSBwYXJ0aWFsIHJldm9rZSBleGlzdHMgb24gYSBkYXRhYmFzZS4gVHVybmluZyBPTiB0aGUgc3lzdGVtIHZhcmlhYmxlICdAQHBhcnRpYWxfcmV2b2tlcycuAEZvciB1c2VyICclcydAJyVzJywgb25lIG9yIG1vcmUgcHJpdmlsZWdlcyBncmFudGVkIHRocm91Z2ggbXlzcWwuZGIgZm9yIGRhdGFiYXNlICclcycsIGNvbmZsaWN0IHdpdGggcGFydGlhbCByZXZva2UuIEl0IGNvdWxkIG1lYW4gJ215c3FsJyBzY2hlbWEgaXMgY29ycnVwdGVkLgBGb3IgdXNlciAlcywgaWdub3JlZCByZXN0cmljdGlvbnMgZm9yIHByaXZpbGVnZShzKSAnJXMnIGZvciBkYXRhYmFzZSAnJXMnIGFzIHRoZXNlIGFyZSBub3QgdmFsaWQgZGF0YWJhc2UgcHJpdmlsZWdlcy4ARm9yIHVzZXIgJXMsIGlnbm9yZWQgcmVzdHJpY3Rpb25zIGZvciBwcml2aWxlZ2UocykgJyVzJyBmb3IgZGF0YWJhc2UgJyVzJyBhcyBjb3JyZXNwb25kaW5nIGdsb2JhbCBwcml2aWxlZ2UocykgYXJlIG5vdCBncmFudGVkLgAnJXMnIGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIGdyb3VwX3JlcGxpY2F0aW9uX2NvbW11bmljYXRpb25fcHJvdG9jb2xfam9pbiwgcGxlYXNlIHVzZSBhIE15U1FMIHZlcnNpb24gYmV0d2VlbiA1LjcuMTQgYW5kIHRoaXMgc2VydmVyJ3MgdmVyc2lvbgBTdGFydGVkIGF1dG8tcmVqb2luIHByb2NlZHVyZSBhdHRlbXB0ICVsdSBvZiAlbHUAVGltZW91dCB3aGlsZSB3YWl0aW5nIGZvciBhIHZpZXcgY2hhbmdlIGV2ZW50IGR1cmluZyB0aGUgYXV0by1yZWpvaW4gcHJvY2VkdXJlAEF1dG8tcmVqb2luIHByb2NlZHVyZSBhdHRlbXB0ICVsdSBvZiAlbHUgZmluaXNoZWQuIE1lbWJlciB3YXMlcyBhYmxlIHRvIGpvaW4gdGhlIGdyb3VwLgBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGRlZmF1bHRfdGFibGVfZW5jcnlwdGlvbiBvcHRpb24gdmFsdWUgJyVkJyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVkJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AU2VydmVyIHNodXR0aW5nIGRvd24gYmVjYXVzZSB1cGdyYWRlIGlzIHJlcXVpcmVkLCB5ZXQgcHJvaGliaXRlZCBieSB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiAnLS11cGdyYWRlPU5PTkUnLgBTZXJ2ZXIgdXBncmFkZSBpcyByZXF1aXJlZCwgYnV0IHNraXBwZWQgYnkgY29tbWFuZCBsaW5lIG9wdGlvbiAnLS11cGdyYWRlPU1JTklNQUwnLgBTZXJ2ZXIgdXBncmFkZSBzdGFydGVkIHdpdGggdmVyc2lvbiAlZCwgYnV0IHNlcnZlciB1cGdyYWRlIG9mIHZlcnNpb24gJWQgaXMgc3RpbGwgcGVuZGluZy4ARmFpbGVkIHRvIHVwZ3JhZGUgc2VydmVyLgBTZXJ2ZXIgdXBncmFkZSBmcm9tICclZCcgdG8gJyVkJyAlcy4AVGFibGUgJyVzJyByZXF1aXJlcyByZXBhaXIuAFRhYmxlICclcycgcmVwYWlyICVzLgBDb3VsZCBub3Qgb3BlbiBzZXJ2ZXIgdXBncmFkZSBpbmZvIGZpbGUgJyVzJyBmb3Igd3JpdGluZy4gUGxlYXNlIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyB3cml0YWJsZS4AVXBncmFkaW5nIHRoZSBzeXMgc2NoZW1hLgBSdW5uaW5nIHF1ZXJpZXMgdG8gdXBncmFkZSBNeVNRTCBzZXJ2ZXIuAFVwZ3JhZGluZyBzeXN0ZW0gdGFibGUgZGF0YS4ARm91bmQgZW1wdHkgc3lzIGRhdGFiYXNlLiBJbnN0YWxsaW5nIHRoZSBzeXMgc2NoZW1hLgBBIHN5cyBzY2hlbWEgZXhpc3RzIHdpdGggbm8gc3lzLnZlcnNpb24gdmlldy4gSWYgeW91IGhhdmUgYSB1c2VyIGNyZWF0ZWQgc3lzIHNjaGVtYSwgdGhpcyBtdXN0IGJlIHJlbmFtZWQgZm9yIHRoZSB1cGdyYWRlIHRvIHN1Y2NlZWQuAEEgc3lzIHNjaGVtYSBleGlzdHMgd2l0aCBhIHN5cy52ZXJzaW9uIHZpZXcsIGJ1dCBpdCByZXR1cm5zIG5vIHJlc3VsdHMuAEZvdW5kIG91dGRhdGVkIHN5cyBzY2hlbWEgdmVyc2lvbiAlcy4AVGhlIHN5cyBzY2hlbWEgaXMgYWxyZWFkeSB1cCB0byBkYXRlICh2ZXJzaW9uICVzKS4ARm91bmQgJWQgc3lzICVzLCBidXQgZXhwZWN0ZWQgJWQuIFJlLWluc3RhbGxpbmcgdGhlIHN5cyBzY2hlbWEuAENoZWNraW5nICclcycgc2NoZW1hLgBUb28gbWFueSBjb25jdXJyZW50IHRyYW5zYWN0aW9ucyB3aGlsZSBjbGVhcmluZyB0aGUgRERMIExvZy4gUGxlYXNlIGluY3JlYXNlIHRoZSBudW1iZXIgb2YgUm9sbGJhY2sgU2VnbWVudHMuAEVycm9yIGluIERETCBMb2cgcmVjb3ZlcnkgZHVyaW5nIFBvc3QtUmVjb3ZlcnkgcHJvY2Vzc2luZy4ARXJyb3IgaW4gUG9zdC1UYWJsZXNwYWNlLUVuY3J5cHRpb24gZHVyaW5nIFBvc3QtUmVjb3ZlcnkgcHJvY2Vzc2luZy4ARXJyb3IgaW4gRExMIExvZyBjbGVhbnVwIGR1cmluZyBQb3N0LURETCBwcm9jZXNzaW5nLgAnJXMnIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgc3lzdGVtIGZ1bmN0aW9uIHRoYXQgbWF5IHJldHVybiBhIGRpZmZlcmVudCB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AVXBncmFkZSBvZiBoZWxwIHRhYmxlcyAlcy4ARXJyb3Igd2hlbiB3YWl0aW5nIGZvciB0aGUgc2VydmVyIHRvIGV4ZWN1dGUgbG9jYWwgdHJhbnNhY3Rpb25zIGluIG9yZGVyIGFzc3VyZSB0aGUgZ3JvdXAgY2hhbmdlIHByb3BlciBsb2dnaW5nAFVuYWJsZSB0byBsb2cgdGhlIGdyb3VwIGNoYW5nZSBWaWV3IGxvZyBldmVudCBpbiBpdHMgZXhhY3Rpb24gcG9zaXRpb24gaW4gdGhlIGxvZy4gVGhpcyB3aWxsIG5vdCBob3dldmVyIGFmZmVjdCB0aGUgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgcHJvY2VzcyBvciB0aGUgb3ZlcmFsbCBwbHVnaW4gcHJvY2Vzcy4AQ2Fubm90IGdyYW50IHJvbGVzIHRvIGFuIGFub255bW91cyB1c2VyLgBVbmFibGUgdG8gY3JlYXRlIGEgbmV3IGJpbmxvZyBmaWxlOiBUYWJsZSBgbXlzcWwuZ3RpZF9leGVjdXRlZGAgY291bGRuJ3QgYmUgb3BlbmVkLiAlcwBOZXR3b3JrIE5hbWVzcGFjZXMgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtAFVua25vd24gbmV0d29yayBuYW1lc3BhY2UgJyVzJwBOZXR3b3JrIG5hbWVzcGFjZSBub3QgYWxsb3dlZCBmb3Igd2lsZGNhcmQgaW50ZXJmYWNlIGFkZHJlc3MAc2V0bnMoKSBmYWlsZWQgd2l0aCBlcnJvciAnJXMnAFdpbGRjYXJkIGFkZHJlc3MgdmFsdWUgbm90IGFsbG93ZWQgZm9yIG11bHRpdmFsdWVkIGJpbmQgYWRkcmVzcwBUaGUgcGF0aCB0byBhIHNwZWNpYWwgbmV0d29yayBuYW1lc3BhY2UgZmlsZSBpcyB0b28gbG9uZy4gKGdvdCAldSA+IG1heCAldSkAQ2Fubm90IGNyZWF0ZSB0YWJsZXNwYWNlICclcycuIFRoZSBmaWxlcGF0aCBpcyB0b28gbG9uZyBmb3IgdGhpcyBPUy4AVGhlIGxhc3QgYmxvY2sgb2YgcmVkbyBoYWQgY29ycnVwdGVkIGZpcnN0X3JlY19ncm91cCBhbmQgYmVjYW1lIGZpeGVkICgldSAtPiAldSkuAERhdGEgZGljdGlvbmFyeSB1cGdyYWRlIGZyb20gdmVyc2lvbiAnJXUnIHRvICcldScgY29tcGxldGVkLgBTZXJ2ZXIgU1NMIGNlcnRpZmljYXRlIGRvZXNuJ3QgdmVyaWZ5OiAlcwBUcnVuY2F0ZWQgYSB1c2VyIG5hbWUgZm9yICVzIHRoYXQgd2FzIHRvbyBsb25nIHdoaWxlIHJlYWRpbmcgdGhlIHBlcnNpc3RlZCB2YXJpYWJsZXMgZmlsZQBUcnVuY2F0ZWQgYSBob3N0IG5hbWUgZm9yICVzIHRoYXQgd2FzIHRvbyBsb25nIHdoaWxlIHJlYWRpbmcgdGhlIHBlcnNpc3RlZCB2YXJpYWJsZXMgZmlsZQBUaGUgd2FpdF90aW1lb3V0IHBlcmlvZCB3YXMgZXhjZWVkZWQsIHRoZSBpZGxlIHRpbWUgc2luY2UgbGFzdCBjb21tYW5kIHdhcyB0b28gbG9uZy4AJyVzJyBmb3VuZCBub3QgZW5jcnlwdGVkIHdoaWxlICclcycgaXMgT04uIFRyeWluZyB0byBlbmNyeXB0IGl0IG5vdy4AQ0xPQ0tfTU9OT1RPTklDIGlzIHVuc3VwcG9ydGVkLCBzbyBkbyBub3QgY2hhbmdlIHRoZSBzeXN0ZW0gdGltZSB3aGVuIE15U1FMIGlzIHJ1bm5pbmcgIQBjbG9ja19nZXR0aW1lKCkgZmFpbGVkOiAlcwBQbHVnaW4gJyVzJyBpcyBub3QgdG8gYmUgdXNlZCBhcyBhbiAiZWFybHkiIHBsdWdpbi4gRG9uJ3QgYWRkIGl0IHRvIC0tZWFybHktcGx1Z2luLWxvYWQsIGtleXJpbmcgbWlncmF0aW9uIGV0Yy4AUGx1Z2luICclcycgaXMgbWFya2VkIGFzIG5vdCBkeW5hbWljYWxseSBpbnN0YWxsYWJsZS4gWW91IGhhdmUgdG8gc3RvcCB0aGUgc2VydmVyIHRvIGluc3RhbGwgaXQuAFNRTF9DQUxDX0ZPVU5EX1JPV1MgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIHR3byBzZXBhcmF0ZSBxdWVyaWVzIGluc3RlYWQuAEZPVU5EX1JPV1MoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgQ09VTlQoKikgaW5zdGVhZC4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCBpbnZva2VzIGEgdHJpZ2dlciBvciBhIHN0b3JlZCBmdW5jdGlvbiB0aGF0IG1vZGlmaWVzIGEgdGFibGUgdGhhdCBoYXMgYSBjb2x1bW4gd2l0aCBhIERFRkFVTFQgZXhwcmVzc2lvbiB0aGF0IG1heSByZXR1cm4gYSBkaWZmZXJlbnQgdmFsdWUgb24gdGhlIHJlcGxpY2EuAE1lbWJlciB2ZXJzaW9uIGlzIHJlYWQgY29tcGF0aWJsZSB3aXRoIHRoZSBncm91cC4ATG9jayBvcmRlciBkaXNhYmxlZCAocmVhc29uOiBpbml0IGZhaWxlZCkuAEtleXJpbmcgSUQgdGltZXN0YW1wIHZhbHVlIGlzIGludmFsaWQ6ICclcycAQ2Fubm90IHByb2Nlc3MgYXVkaXQgbG9nIGZpbGUuIEZpbGUgbmFtZSB0aW1lc3RhbXAgdmFsdWUgaXMgbWlzc2luZyBvciBpbnZhbGlkOiAnJXMnAENhbm5vdCBwcm9jZXNzIGF1ZGl0IGxvZyBmaWxlLiBGaWxlIG5hbWUgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBmb3JtYXQ6ICclcycAQ2Fubm90IHByb2Nlc3MgYXVkaXQgbG9nIGZpbGUuIEZpbGUgbmFtZSBrZXlyaW5nIElEIHZhbHVlIGlzIG1pc3Npbmc6ICclcycAQXVkaXQgbG9nIGZpbGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZDogJyVzJwBDb3VsZCBub3Qgb3BlbiBhdWRpdCBsb2cgZmlsZSBmb3IgcmVhZGluZzogJyVzJwBJbnZhbGlkIGF1ZGl0IGxvZyBmaWxlIGNvbnRlbnQ6ICclcycAQ2Fubm90IHJlYWQgcGFzc3dvcmQ6ICclLjMycycuAENhbm5vdCBzdG9yZSBwYXNzd29yZDogJyUuMzJzJy4AQ2Fubm90IHJlbW92ZSBwYXNzd29yZDogJyUuMzJzJy4AJ2F1ZGl0X2xvZycgcGFzc3dvcmQgaGFzIGJlZW4gY29waWVkIGludG8gJyUuMzJzJyBhbmQgd2lsbCBiZSByZW1vdmVkIHdpdGggZmlyc3QgcHVyZ2VkIHBhc3N3b3JkLgBSZXF1ZXN0IGlnbm9yZWQgZm9yICclLjY0cydAJyUuNjRzJy4gUm9sZSBuZWVkZWQgdG8gcGVyZm9ybSBvcGVyYXRpb246ICclLjMycycAQ2FuJ3Qgc3RvcmUgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGluIGEgc2NhbGFyIGtleSBwYXJ0IG9mIHRoZSBpbmRleCAnJS4xOTJzJwBDYW5ub3QgdXNlIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycgZHVlIHRvIHR5cGUgb3IgY29sbGF0aW9uIGNvbnZlcnNpb24ARXhjZWVkZWQgbWF4IG51bWJlciBvZiB2YWx1ZXMgcGVyIHJlY29yZCBmb3IgbXVsdGktdmFsdWVkIGluZGV4ICclLS42NHMnIGJ5ICV1IHZhbHVlKHMpAEV4Y2VlZGVkIG1heCB0b3RhbCBsZW5ndGggb2YgdmFsdWVzIHBlciByZWNvcmQgZm9yIG11bHRpLXZhbHVlZCBpbmRleCAnJS0uNjRzJyBieSAldSBieXRlcwBEYXRhIHRvbyBsb25nIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnAEludmFsaWQgSlNPTiB2YWx1ZSBmb3IgQ0FTVCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJwBPdXQgb2YgcmFuZ2UgSlNPTiB2YWx1ZSBmb3IgQ0FTVCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJwBFbXB0eSB1c2VyIGRuIG9yIHBhc3N3b3JkIGlzIG5vdCBhbGxvd2VkLCBub3QgYXR0ZW1wdGluZyBMREFQIGJpbmQuAEdyb3VwaW5nIG9uIHRlbXBvcmFsIGlzIG5vbi1kZXRlcm1pbmlzdGljIGZvciB0aW1lem9uZXMgaGF2aW5nIERTVC4gUGxlYXNlIGNvbnNpZGVyIHN3aXRjaGluZyB0byBVVEMgZm9yIHRoaXMgcXVlcnkuAFRoZSBjdXJyZW50IGxheW91dCBvZiB0aGUgQUNMIHRhYmxlcyBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBzZXJ2ZXIncyBleHBlY3RlZCBsYXlvdXQuIFRoZXkncmUgZWl0aGVyIGFsdGVyZWQsIG1pc3Npbmcgb3Igbm90IHVwZ3JhZGVkIGZyb20gYSBwcmV2aW91cyB2ZXJzaW9uLiBIb3dldmVyIGEgYmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZWFkIGRhdGEgZnJvbSB0aGVzZSB0YWJsZXMgd2lsbCBzdGlsbCBiZSBtYWRlLgBMT0NLX09SREVSOiBGYWlsZWQgdG8gd3JpdGUgdG8gZmlsZSA8JXM+LgBMT0NLX09SREVSOiBGYWlsZWQgdG8gcmVhZCBmcm9tIGZpbGUgPCVzPi4ATE9DS19PUkRFUiBtZXNzYWdlOiAlcwBMb2NrIG9yZGVyIGRlcGVuZGVuY2llcyBmaWxlIDwlcz4gKCVkOiVkKSAtICglZDolZCkgOiAlcwBMb2NrIG9yZGVyIHNjYW5uZXI6ICglZDolZCkgLSAoJWQ6JWQpIDogJXMAVGhlIG5ld2x5IGNyZWF0ZWQgZGF0YSBkaXJlY3RvcnkgJXMgYnkgLS1pbml0aWFsaXplIGlzIHVudXNhYmxlLiBZb3UgY2FuIHJlbW92ZSBpdC4ATm8uIG9mIEItdHJlZSBsZXZlbCBjcmVhdGVkIGZvciBpbmRleCAlcyBoYXMgY3Jvc3NlZCB0aGUgcGVybWlzc2libGUgbGltaXQuIElmIGRlYnVnIG9wdGlvbiBpbm5vZGJfbGltaXRfb3B0aW1pc3RpY19pbnNlcnRfZGVidWcgaXMgYmVpbmcgdXNlZCB0cnkgdHdlYWtpbmcgaXQgdG8gaW5jbHVkZSBtb3JlIHJlY29yZHMgaW4gYSBwYWdlLgAlcwAlcwAlcwBDbG9uZSByZW1vdmluZyBhbGwgdXNlciBkYXRhIGZvciBwcm92aXNpb25pbmc6ICVzAE5vbiBpbm5vZGIgdGFibGU6ICVzLiVzIGlzIG5vdCBjbG9uZWQgYW5kIGlzIGVtcHR5LgBDbG9uZSBzaHV0dGluZyBkb3duIHNlcnZlciBhcyBSRVNUQVJUIGZhaWxlZC4gUGxlYXNlIHN0YXJ0IHNlcnZlciB0byBjb21wbGV0ZSBjbG9uZSBvcGVyYXRpb24uAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciBHVElEIHB1cmdlZCBzZXQuIE9wZXJhdGlvbnMgYW5kIGNoZWNrcyBtYWRlIHRvIGdyb3VwIGpvaW5lcnMgbWF5IGJlIGluY29tcGxldGUuAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIGNvbmZpZ3VyaW5nIHRoZSByZW1vdGUgY2xvbmluZyBwcm9jZXNzOiAlcwBUaGVyZSB3YXMgYW4gaXNzdWUgd2hlbiBjbG9uaW5nIGZyb20gYW5vdGhlciBzZXJ2ZXI6ICVzAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIHRyeWluZyB0byBldmFsdWF0ZSB0aGUgYmVzdCBkaXN0cmlidXRlZCByZWNvdmVyeSBzdHJhdGVneSB3aGlsZSBqb2luaW5nLiVzAE5vIHZhbGlkIG9yIE9OTElORSBtZW1iZXJzIGV4aXN0IHRvIGdldCB0aGUgbWlzc2luZyBkYXRhIGZyb20gdGhlIGdyb3VwLiBGb3IgY2xvbmluZyBjaGVjayBpZiBkb25vcnMgb2YgdGhlIHNhbWUgdmVyc2lvbiBhbmQgd2l0aCBjbG9uZSBwbHVnaW4gaW5zdGFsbGVkIGV4aXN0LiBGb3IgaW5jcmVtZW50YWwgcmVjb3ZlcnkgY2hlY2sgaWYgeW91IGhhdmUgZG9ub3JzIHdoZXJlIHRoZSByZXF1aXJlZCBkYXRhIHdhcyBub3QgcHVyZ2VkIGZyb20gdGhlIGJpbmFyeSBsb2dzLgBUaGUgZ3JvdXAgcmVwbGljYXRpb24gcGx1Z2luIGNvdWxkIG5vdCBraWxsIHRoZSBwbHVnaW4gcm91dGluZSBmb3IgJXMuICVzAFRoaXMgbWVtYmVyIHdpbGwgc3RhcnQgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgdXNpbmcgY2xvbmUuIEl0IGlzIGR1ZSB0byB0aGUgbnVtYmVyIG9mIG1pc3NpbmcgdHJhbnNhY3Rpb25zIGJlaW5nIGhpZ2hlciB0aGFuIHRoZSBjb25maWd1cmVkIHRocmVzaG9sZCBvZiAlbGx1LgBUaGlzIG1lbWJlciB3aWxsIHN0YXJ0IGRpc3RyaWJ1dGVkIHJlY292ZXJ5IHVzaW5nIGNsb25lLiBJdCBpcyBkdWUgdG8gbm8gT05MSU5FIG1lbWJlciBoYXMgdGhlIG1pc3NpbmcgZGF0YSBmb3IgcmVjb3ZlcmluZyBpbiBpdHMgYmluYXJ5IGxvZ3MuAERpc3RyaWJ1dGVkIHJlY292ZXJ5IHdpbGwgdHJhbnNmZXIgZGF0YSB1c2luZzogJXMARHVlIHRvIHNvbWUgaXNzdWUgb24gdGhlIHByZXZpb3VzIHN0ZXAgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgaXMgbm93IGV4ZWN1dGluZzogJXMARHVlIHRvIGEgY3JpdGljYWwgY2xvbmluZyBlcnJvciBvciBsYWNrIG9mIGRvbm9ycywgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgY2Fubm90IGJlIGV4ZWN1dGVkLiBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4AVGhlICclcycgdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyB3aWxsIGVycm9yIG91dCBhcyB0aGUgc2VydmVyIHdpbGwgYXR0ZW1wdCB0byBjbG9uZSBhbm90aGVyIHNlcnZlcgBVbmtub3duIHRhYmxlICclLS4xMjlzJwBMb25nIGRhdGFiYXNlIG5hbWUgYW5kIGlkZW50aWZpZXIgZm9yIG9iamVjdCByZXN1bHRlZCBpbiBwYXRoIGxlbmd0aCBleGNlZWRpbmcgJWQgY2hhcmFjdGVycy4gUGF0aDogJyVzJy4AWEE6IEZhaWxlZCB0byB0YWtlIE1ETCBMb2NrIGJhY2t1cCBvZiBQUkVQQVJFRCBYQSB0cmFuc2FjdGlvbiBkdXJpbmcgY2xpZW50IGRpc2Nvbm5lY3QuAFNVUEVSIHByaXZpbGVnZSBvciBBVURJVF9BRE1JTiByb2xlIHJlcXVpcmVkIGZvciAnJXMnQCclcycgdXNlci4ASW52YWxpZCBhcmd1bWVudCB0eXBlAEludmFsaWQgYXJndW1lbnQgY291bnQAYXVkaXRfbG9nIHBsdWdpbiBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHVzaW5nIElOU1RBTEwgUExVR0lOIHN5bnRheC4ASW52YWxpZCAibWF4X2FycmF5X2xlbmd0aCIgYXJndW1lbnQgdHlwZS4ARmFpbGVkIHRvIHdyaXRlIHRvICVzOiAlcyAoJXMpAFVwZ3JhZGluZyBmcm9tIHNlcnZlciB2ZXJzaW9uICVkIHdpdGggcGFydGl0aW9uZWQgdGFibGVzIGFuZCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID09IDEgb24gYSBjYXNlIHNlbnNpdGl2ZSBmaWxlIHN5c3RlbSBtYXkgY2F1c2UgaXNzdWVzLCBhbmQgaXMgdGhlcmVmb3JlIHByb2hpYml0ZWQuIFRvIHVwZ3JhZGUgYW55d2F5LCByZXN0YXJ0IHRoZSBuZXcgc2VydmVyIHZlcnNpb24gd2l0aCB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiAndXBncmFkZT1GT1JDRScuIFdoZW4gdXBncmFkZSBpcyBjb21wbGV0ZWQsIHBsZWFzZSBleGVjdXRlICdSRU5BTUUgVEFCTEUgPHBhcnRfdGFibGVfbmFtZT4gVE8gPG5ld190YWJsZV9uYW1lPjsgUkVOQU1FIFRBQkxFIDxuZXdfdGFibGVfbmFtZT4gVE8gPHBhcnRfdGFibGVfbmFtZT47JyBmb3IgZWFjaCBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGVzLiBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgBJbmNvcnJlY3QgZW52aXJvbm1lbnQgdmFyaWFibGUgJXMsIGludmFsaWQgcG9ydDogJXMAVGhlIHNlcnZlciB3YXMgYXV0b21hdGljYWxseSBzZXQgaW50byBvZmZsaW5lIG1vZGUgYWZ0ZXIgYW4gZXJyb3Igd2FzIGRldGVjdGVkLgBBIG1lc3NhZ2Ugc2VudCB0aHJvdWdoIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBtZXNzYWdlIGRlbGl2ZXIgc2VydmljZSB3YXMgbm90IGRlbGl2ZXJlZCBzdWNjZXNzZnVsbHkuIFRoZSBzZXJ2ZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLiBUcnkgdG8gYWRkIHRoZSBzZXJ2ZXIgYmFjayB0byB0aGUgZ3JvdXAgYW5kIGNoZWNrIGlmIHRoZSBwcm9ibGVtIHBlcnNpc3RzLCBvciBjaGVjayBwcmV2aW91cyBtZXNzYWdlcyBpbiB0aGUgbG9nIGZvciBoaW50cyBvZiB3aGF0IGNvdWxkIGJlIHRoZSBwcm9ibGVtLgBJbnZhbGlkIFNPVVJDRV9DT01QUkVTU0lPTl9BTEdPUklUSE1TICclLjE5MnMnIGZvdW5kIGluIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFJlc2V0dGluZyB0byAndW5jb21wcmVzc2VkJyAobm8gY29tcHJlc3Npb24pLgBJbnZhbGlkIFNPVVJDRV9aU1REX0NPTVBSRVNTSU9OX0xFVkVMIGZvdW5kIGluIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFJlc2V0dGluZyB0byAldS4AT3B0aW9uIC0tcHJvdG9jb2wtY29tcHJlc3Npb24tYWxnb3JpdGhtcyBpcyByZXNldCB0byBkZWZhdWx0IHZhbHVlLgBGYXRhbCBlcnJvciB3aGlsZSBjb21wcmVzc2luZyBvdXRnb2luZyBkYXRhIC0gJXMAJXMAVW5rbm93biBrZXlyaW5nX2F3c19yZWdpb24gJyUuMTkycycuIENvbm5lY3Rpb24gdG8gQVdTIEtNUyBtYXkgZmFpbC4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCwgYnV0IHRoaXMgaXMgbm90IGFuIGV4aXN0aW5nIHVzZXIuIENvcnJlY3QgdGhpcyBiZWZvcmUgc3RhcnRpbmcgcmVwbGljYXRpb24gdGhyZWFkcy4ASW52YWxpZCwgY29ycnVwdGVkIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiB3YXMgZm91bmQgaW4gdGhlIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcmVwb3NpdG9yeSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4gVXNlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gUFJJVklMRUdFX0NIRUNLU19VU0VSIHRvIGNvcnJlY3QgdGhlIGNvbmZpZ3VyYXRpb24uAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgc2V0IHRvIGAlLjY0c2BAYCUuMjU1c2AsIGJ1dCB0aGlzIHVzZXIgZG9lcyBub3QgaGF2ZSBSRVBMSUNBVElPTl9BUFBMSUVSIHByaXZpbGVnZS4gQ29ycmVjdCB0aGlzIGJlZm9yZSBzdGFydGluZyB0aGUgcmVwbGljYXRpb24gdGhyZWFkcy4AVGhlIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3b3VsZCBuZWVkIEZJTEUgcHJpdmlsZWdlIHRvIGV4ZWN1dGUgYSBMT0FEIERBVEEgSU5GSUxFIHN0YXRlbWVudCByZXBsaWNhdGVkIGluIHN0YXRlbWVudCBmb3JtYXQuIENvbnNpZGVyIHVzaW5nIGJpbmxvZ19mb3JtYXQ9Uk9XIG9uIHNvdXJjZS4gSWYgdGhlIHJlcGxpY2F0ZWQgZXZlbnRzIGFyZSB0cnVzdGVkLCByZWNvdmVyIGZyb20gdGhlIGZhaWx1cmUgYnkgdGVtcG9yYXJpbHkgZ3JhbnRpbmcgRklMRSB0byB0aGUgUFJJVklMRUdFX0NIRUNLU19VU0VSLgBSZXBsaWNhIFNRTCB0aHJlYWQlcyBpbml0aWFsaXplZCwgc3RhcnRpbmcgcmVwbGljYXRpb24gaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMsIHJlbGF5IGxvZyAnJXMnIHBvc2l0aW9uOiAlcywgdXNlcjogJyUuNjRzJ0AnJS4yNTVzJywgcm9sZXM6ICUuNTEycwBDYW5ub3QgZ2VuZXJhdGUgcGFzc3dvcmQ6ICclLjMycycARmFpbGVkIHRvIGdlbmVyYXRlIGEgcmFuZG9tIHBhc3N3b3JkIGZvciByb290LiBQcm9iYWJhYmx5IG5vdCBlbm91Z2ggZW50aHJvcHkuAElnbm9yaW5nIC0tcGx1Z2luLWxvYWRbX2FkZF0gbGlzdCBhcyB0aGUgc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCAtLWluaXRpYWxpemUoLWluc2VjdXJlKS4AQ2Fubm90IHNldCBtYW5kYXRvcnlfcm9sZXM6IEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaGFzICclcycgcHJpdmlsZWdlLiBBdXRoSWQocykgc2V0IGluIHRoZSBtYW5kYXRvcnlfcm9sZXMgYXJlIGlnbm9yZWQuAERpcmVjdG9yeSAnJXMnIHdpbGwgbm90IGJlIHNjYW5uZWQgYmVjYXVzZSBpdCBpcyBhIGhpZGRlbiBkaXJlY3RvcnkuAFNlcnZlciB3YXMgbm90IGFibGUgdG8gZmluZCBhIHJvdGF0ZSBldmVudCBmcm9tIHNvdXJjZSBzZXJ2ZXIgdG8gaW5pdGlhbGl6ZSByZWxheSBsb2cgcmVjb3ZlcnkgZm9yIGNoYW5uZWwgJyVzJy4gU2tpcHBpbmcgcmVsYXkgbG9nIHJlY292ZXJ5IGZvciB0aGUgY2hhbm5lbC4AUm9sbGluZyBiYWNrIExPQiBmb3IgdHJhbnNhY3Rpb24gJWxsdSB1bmRvIG51bWJlciAlbGx1IDogY3VycmVudCBpbmRleCBsZW5ndGggJWxsdS4gKGl0ZXJhdGlvbiAlbGx1KQBFcnJvciBpbiBwcm9jZXNzaW5nIChwb3NzaWJseSBkZXByZWNhdGVkKSBleHByZXNzaW9uIG9yIGZ1bmN0aW9uICclLjEyOHMnIGZvciBnZW5lcmF0ZWQgY29sdW1uICUuNjRzLiUuNjRzLiUuNjRzAFRoZSBxdWV1ZSBldmVudCBmYWlsZWQgZm9yIGNoYW5uZWwgJyVzJyBhcyBhbiBpbnZhbGlkIGV2ZW50IGFjY29yZGluZyB0byBSRVFVSVJFX1JPV19GT1JNQVQgd2FzIGZvdW5kLgBUaGUgYXBwbGljYXRpb24gb2YgcmVsYXkgZXZlbnRzIGZhaWxlZCBmb3IgY2hhbm5lbCAnJXMnIGFzIGFuIGludmFsaWQgZXZlbnQgYWNjb3JkaW5nIHRvIFJFUVVJUkVfUk9XX0ZPUk1BVCB3YXMgZm91bmQuAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBjYW4ndCBiZSBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCB1bmxlc3MgUkVRVUlSRV9ST1dfRk9STUFUIGlzIGFsc28gc2V0IHRvICVkLgBBbiB1bmV4cGVjdGVkIGV2ZW50IHNlcXVlbmNlIHdhcyBkZXRlY3RlZCBieSB0aGUgU1FMIHRocmVhZCB3aGlsZSBhcHBseWluZyBhbiBldmVudC4AVXBkYXRpbmcgcGFydGl0aW9uIGZpbGUgbmFtZSAnJXMnIHRvICclcycgYW5kIGFsbCBvdGhlciBwYXJ0aXRpb24gZmlsZXMgZHVyaW5nIHVwZ3JhZGUAVXBkYXRpbmcgcGFydGl0aW9uIGZpbGUgbmFtZSAnJXMnIHRvICclcycgYW5kIGFsbCBvdGhlciBwYXJ0aXRpb24gZmlsZXMgZHVyaW5nIGRvd25ncmFkZQBVcGRhdGluZyBwYXJ0aXRpb24gZmlsZSBuYW1lICclcycgdG8gJyVzJyBmb3IgaW1wb3J0AFVuYWJsZSB0byBvcGVuIHBhcnRpdGlvbiBmaWxlIHdpdGggbmV3IG5hbWUgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGlubm9kYl9kaXJlY3RvcmllcyBpcyBzZXQgdG8gaW5jbHVkZSBhbGwgZXh0ZXJuYWwgZmlsZSBwYXRocwAlcyBERCBJRDogJWxsdSAtIFBhcnRpdGlvbiB0YWJsZXNwYWNlICV1LCBuYW1lICclcycgaXMgY29ycmVjdGVkIHRvICclcycAJXMgREQgSUQ6ICVsbHUgLSBUYWJsZXNwYWNlICV1LCBuYW1lICclcycsICclcycgaXMgbW92ZWQgdG8gJyVzJwAlcyBERCBJRDogJWxsdSAtIFBhcnRpdGlvbiB0YWJsZXNwYWNlICV1LCBuYW1lICclcycsICclcycgaXMgdXBkYXRlZCB0byAnJXMnACVzIFRvbyBtYW55IGZpbGVzIGhhdmUgYmVlbiBtb3ZlZCwgZGlzYWJsaW5nIGxvZ2dpbmcgb2YgZGV0YWlsZWQgbWVzc2FnZXMARWxlY3RlZCBwcmltYXJ5IG1lbWJlciAlczogJXMAU2NoZW1hIG5hbWUgJyVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycyBpcyBub3QgYWxsb3dlZCB3aXRoIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSAxLgBUYWJsZSBuYW1lICclcy4lcycgY29udGFpbmluZyB1cHBlciBjYXNlIGNoYXJhY3RlcnMgaXMgbm90IGFsbG93ZWQgd2l0aCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gMS4AU2NoZW1hIG5hbWUgJyVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycywgdXNlZCBieSBmb3JlaWduIGtleSAnJXMnIGluIHRhYmxlICclcy4lcycsIGlzIG5vdCBhbGxvd2VkIHdpdGggbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IDEuAFRhYmxlIG5hbWUgJyVzLiVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycywgdXNlZCBieSBmb3JlaWduIGtleSAnJXMnIGluIHRhYmxlICclcy4lcycsIGlzIG5vdCBhbGxvd2VkIHdpdGggbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IDEuAFRhYmxlIFBhcnRpdGlvbjogJXMgaXMgbm90IGZvdW5kIGluIElubm9EQiBkaWN0aW9uYXJ5AEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycuIEFjY291bnQgaXMgYmxvY2tlZCBmb3IgJXMgZGF5KHMpICglcyBkYXkocykgcmVtYWluaW5nKSBkdWUgdG8gJXUgY29uc2VjdXRpdmUgZmFpbGVkIGxvZ2lucy4gVXNlIEZMVVNIIFBSSVZJTEVHRVMgb3IgQUxURVIgVVNFUiB0byByZXNldC4AJXMAVXBncmFkZSBjYW5ub3QgcHJvY2VlZCBkdWUgdG8gYW4gZXhpc3RpbmcgcHJlcGFyZWQgWEEgdHJhbnNhY3Rpb24uAENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGtleV9pbmZvIHdoZW4gbWlncmF0aW5nIHRhYmxlICVzLiVzAEFwcGxpZXIgbWV0YWRhdGEgaW5mb3JtYXRpb24gZm9yIGNoYW5uZWwgJyVzJyB3YXMgZm91bmQgYWZ0ZXIgYSBjbG9uZSBvcGVyYXRpb24uIFJlbGF5IGxvZyByZWNvdmVyeSB3aWxsIGJlIGV4ZWN1dGVkIHRvIGFkanVzdCBwb3NpdGlvbnMgYW5kIGZpbGUgaW5mb3JtYXRpb24gZm9yIHRoaXMgbmV3IHNlcnZlci4gU2hvdWxkIHRoYXQgYXV0b21hdGljIHByb2NlZHVyZSBmYWlsIHBsZWFzZSBhZGp1c3QgdGhlIHBvc2l0aW9ucyB0aHJvdWdoICdDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPJwBGYWlsZWQgdG8gZGVsZXRlIDUuNyB1bmRvIHRhYmxlc3BhY2U6ICVzIGR1cmluZyB1cGdyYWRlAEVtcHR5IGRvdWJsZXdyaXRlIGZpbGU6ICVzAFVzaW5nICclcycgZm9yIGRvdWJsZXdyaXRlAEVycm9yIHJlYWRpbmcgZG91Ymxld3JpdGUgYnVmZmVyIGZyb20gdGhlIHN5c3RlbSB0YWJsZXNwYWNlAENhbm5vdCBjcmVhdGUgZG91Ymxld3JpdGUgYnVmZmVyOiB5b3UgbXVzdCBpbmNyZWFzZSB5b3VyIGJ1ZmZlciBwb29sIHNpemUuIENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uAFRoZSBwYWdlIGluIHRoZSBkb3VibGV3cml0ZSBmaWxlIGlzIGNvcnJ1cHQuIENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uIFlvdSBjYW4gdHJ5IHRvIHJlY292ZXIgdGhlIGRhdGFiYXNlIHdpdGggaW5ub2RiX2ZvcmNlX3JlY292ZXJ5PTYAVGhlIGRvdWJsZXdyaXRlIGZpbGVuYW1lICclcycgaXMgaW5jb3JyZWN0LgAlcwBEb3VibGV3cml0ZSBmaWxlIGNyZWF0ZSBmYWlsZWQ6ICVzAERCTFdSVGhyZWFkOiBwdGhyZWFkX3NldGFmZmluaXR5KCkgZmFpbGVkIQAlcwAlcwBEb3VibGV3cml0ZSBmaWxlIHJlYWQgZmFpbGVkOiAlcwBEdW1wIG9mIHRoZSBkYXRhIGZpbGUgcGFnZToAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMARG91Ymxld3JpdGUgbG9hZCBmaWxlICVzIHNpemUgJWx1IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBjb25maWd1cmVkIHBhZ2Ugc2l6ZSAlbHUiAERvdWJsZXdyaXRlIGZpbGUgJXMgdHJ1bmNhdGUgZmFpbGVkAERvdWJsZXdyaXRlIGZpbGUgJXMgZmFpbGVkIHRvIHdyaXQgemVyb3MARG91Ymxld3JpdGUgY3JlYXRlIGZpbGUgJXMgc2l6ZSAlbHUgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGNvbmZpZ3VyZWQgcGFnZSBzaXplICVsdSIAJXMAJXMAJXMAJXMAJXMAQ291bGQgbm90IGZsdXNoIGFsbCBHVElEcyBkdXJpbmcgc2xvdyBzaHV0ZG93bi4gV2lsbCByZWNvdmVyIEdUSURzIHdoZW4gc2VydmVyIHJlc3RhcnRzLgBGYWlsZWQgdG8gZGVsZXRlIDUuNyBzdGF0IHRhYmxlc3BhY2U6ICVzIGR1cmluZyB1cGdyYWRlAEluc3RhbGxpbmcgbmRiaW5mbyBzY2hlbWEgdmVyc2lvbiAlcwBJbnN0YWxsZWQgbmRiaW5mbyBzY2hlbWEgaXMgY3VycmVudC4gTm90IHVwZ3JhZGluZy4ARmFpbGVkIHRvIHVwZ3JhZGUgbmRiaW5mbyBzY2hlbWEuACVzAElubm9EQiBpbml0aWFsaXphdGlvbiBoYXMgc3RhcnRlZC4ASW5ub0RCIGluaXRpYWxpemF0aW9uIGhhcyBlbmRlZC4AQ291bGQgbm90IGZpbmQgYXBwcm9wcmlhdGUgcmVzZXQgcG9pbnRzLgBVbmFibGUgdG8gZmx1c2guIFBhZ2UgYXJjaGl2aW5nIGRhdGEgbWF5IGJlIGNvcnJ1cHQgaW4gY2FzZSBvZiBhIGNyYXNoLgBQYWdlIGFyY2hpdmVyJ3MgZG91Ymxld3JpdGUgYnVmZmVyIGZvciAlbGQgaXMgbm90IHZhbGlkLgBQYWdlIGFyY2hpdmVyIHN5c3RlbSdzIHJlY292ZXJ5IGZhaWxlZC4ASW52YWxpZCBhcmNoaXZlZCBmaWxlIG5hbWUgZm9ybWF0LiBUaGUgYXJjaGl2ZWQgZmlsZSBpcyBzdXBwb3NlZCB0byBoYXZlIHRoZSBmb3JtYXQgJXMgKyBbMC05XSouAFggUGx1Z2lucyBVTklYIHNvY2tldCBtdXN0IHVzZSBkaWZmZXJlbnQgZmlsZSB0aGFuIE15U1FMIHNlcnZlci4gWCBQbHVnaW4gd29uJ3QgYmUgYWNjZXNzaWJsZSB0aHJvdWdoIFVOSVggc29ja2V0ACVzAENvbHVtbiAnJS42NHMuJS42NHMuJS42NHMnIGhhdmluZyBwcmVmaXgga2V5IHBhcnQgJyUuNjRzKCV1KScgaXMgaWdub3JlZCBieSB0aGUgcGFydGl0aW9uaW5nIGZ1bmN0aW9uLiBVc2Ugb2YgcHJlZml4ZWQgY29sdW1ucyBpbiB0aGUgUEFSVElUSU9OIEJZIEtFWSgpIGNsYXVzZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVW5kbyBUcnVuY2F0aW9uIGlzIG9jY3VycmluZyB0b28gb2Z0ZW4uIENvbnNpZGVyIGluY3JlYXNpbmcgLS1pbm5vZGItbWF4LXVuZG8tbG9nLXNpemUuAFBsdWdpbiAnZ3JvdXBfcmVwbGljYXRpb24nIGlzIHN0YXJ0aW5nLgBDYW5ub3QgY3JlYXRlIHRhYmxlc3BhY2UgJXMgYmVjYXVzZSB0aGUgZGlyZWN0b3J5IGlzIG5vdCBhIHZhbGlkIGxvY2F0aW9uLiAlcwBTY2FubmVkIGZpbGUgJyVzJyBmb3IgdGFibGVzcGFjZSAlcyBjYW5ub3QgYmUgb3BlbmVkIGJlY2F1c2UgaXQgaXMgbm90IGluIGEgc3ViLWRpcmVjdG9yeSBuYW1lZCBmb3IgdGhlIHNjaGVtYS4AQ2Fubm90IGZpbmQgdW5kbyB0YWJsZXNwYWNlICVzIHdpdGggZmlsZW5hbWUgJyVzJyBhcyBpbmRpY2F0ZWQgYnkgdGhlIERhdGEgRGljdGlvbmFyeS4gRGlkIHlvdSBtb3ZlIG9yIGRlbGV0ZSB0aGlzIHRhYmxlc3BhY2U/IEFueSB1bmRvIGxvZ3MgaW4gaXQgY2Fubm90IGJlIHVzZWQuAEludmFsaWQgaW5wdXQgdmFsdWUgZm9yIHJlY292ZXJ5IHNvY2tldCBlbmRwb2ludHMgJyVzJy4gUGxlYXNlLCBwcm92aWRlIGEgdmFsaWQsIGNvbW1hIHNlcGFyYXRlZCwgbGlzdCBvZiBlbmRwb2ludHMgKElQOnBvcnQpAFRoZSBzZXJ2ZXIgaXMgbm90IGxpc3RlbmluZyBvbiBlbmRwb2ludCAnJXMnLiBPbmx5IGVuZHBvaW50cyB0aGF0IHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nIG9uIGFyZSB2YWxpZCByZWNvdmVyeSBlbmRwb2ludHMuAFJlY2VpdmVkIGludmFsaWQgcmVjb3ZlcnkgZW5kcG9pbnRzIGNvbmZpZ3VyYXRpb24gZnJvbSBkb25vci4gVGhpcyBtZW1iZXIgaXMgbm90IGEgdmFsaWQgZG9ub3IgZm9yIHJlY292ZXJ5LCBzbyBpdCB3aWxsIGJlIHNraXBwZWQuAEZhaWxlZCB0byByZXRyaWV2ZSBJUCBhZGRyZXNzZXMgZnJvbSBlbmFibGVkIGhvc3QgbmV0d29yayBpbnRlcmZhY2VzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBUTFMgZm9yIGNoYW5uZWw6ICVzLiBTZWUgYmVsb3cgZm9yIHRoZSBkZXNjcmlwdGlvbiBvZiBleGFjdCBpc3N1ZS4AVmFsaWRhdGlvbiBvZiB2YWx1ZSAnJXMnIHNldCB0byBgTXlzcWx4X2JpbmRfYWRkcmVzc2AgZmFpbGVkOiAlcy4gU2tpcHBpbmcgdGhpcyB2YWx1ZS4AVmFsdWUgJyVzJyBzZXQgdG8gYE15c3FseF9iaW5kX2FkZHJlc3NgLCBYIFBsdWdpbiBjYW4ndCBiaW5kIHRvIGl0LiBTa2lwcGluZyB0aGlzIHZhbHVlLgBTZXJ2ZXIgd2FzIGtpbGxlZCB3aGVuIElubm9EQiByZWRvIGxvZ2dpbmcgd2FzIGRpc2FibGVkLiBEYXRhIGZpbGVzIGNvdWxkIGJlIGNvcnJ1cHQuIFlvdSBjYW4gdHJ5IHRvIHJlc3RhcnQgdGhlIGRhdGFiYXNlIHdpdGggaW5ub2RiX2ZvcmNlX3JlY292ZXJ5PTYASW5ub0RCIGNhbm5vdCBkbyBjb2xkIHNodXRkb3duICdpbm5vZGJfZmFzdF9zaHV0ZG93biA9IDInIGFuZCBpcyBmb3JjaW5nICdpbm5vZGJfZmFzdF9zaHV0ZG93biA9IDEnIGFzIHJlZG8gbG9nZ2luZyBpcyBkaXNhYmxlZC4gSW5ub0RCIHdvdWxkIGZsdXNoIGFsbCBkaXJ0eSBwYWdlcyB0byBlbnN1cmUgcGh5c2ljYWwgZGF0YSBjb25zaXN0ZW5jeS4ASW5ub0RCIHJlZG8gbG9nZ2luZyBpcyBkaXNhYmxlZC4gQWxsIGRhdGEgY291bGQgYmUgbG9zdCBpbiBjYXNlIG9mIGEgc2VydmVyIGNyYXNoLgBJbm5vREIgcmVkbyBsb2dnaW5nIGlzIGVuYWJsZWQuIERhdGEgaXMgbm93IHNhZmUgYW5kIGNhbiBiZSByZWNvdmVyZWQgaW4gY2FzZSBvZiBhIHNlcnZlciBjcmFzaC4AQ2hhbm5lbCAlcyBjb25maWd1cmVkIHRvIHN1cHBvcnQgVExTLiBFbmNyeXB0ZWQgY29ubmVjdGlvbnMgYXJlIG5vdyBzdXBwb3J0ZWQgZm9yIHRoaXMgY2hhbm5lbC4ATm8gVExTIGNvbmZpZ3VyYXRpb24gd2FzIGdpdmVuIGZvciBjaGFubmVsICVzOyByZS11c2luZyBUTFMgY29uZmlndXJhdGlvbiBvZiBjaGFubmVsICVzLgBTa2lwcGluZyBJbm5vREIgdGFibGVzcGFjZSBwYXRoIHZhbGlkYXRpb24uIE1hbnVhbGx5IG1vdmVkIHRhYmxlc3BhY2UgZmlsZXMgd2lsbCBub3QgYmUgZGV0ZWN0ZWQhAFVwZ3JhZGUgZmFpbGVkIGJlY2F1c2UgZGF0YWJhc2UgY29udGFpbnMgZGlzY2FyZGVkIHRhYmxlc3BhY2VzLgBUaGUgdXNlciBuYW1lICclcycgZXhjZWVkcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCBjaGFyYWN0ZXJzICVkIGFuZCBpcyB0cnVua2F0ZWQuAFRoZSBob3N0IG5hbWUgJyVzJyBleGNlZWRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGxvd2VkIGNoYXJhY3RlcnMgJWQgYW5kIGlzIHRydW5rYXRlZC4AUm9sbGJhY2sgb2Ygbm9uLXByZXBhcmVkIHRyYW5zYWN0aW9ucyBub3QgY29tcGxldGVkLCBkdWUgdG8gZmFzdCBzaHV0ZG93bgBGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ3JvbGVfZWRnZXMnIHRhYmxlIHdpdGggZW1wdHkgYXV0aG9yaXphdGlvbiBJRDsgU2tpcHBlZABGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ3JvbGVfZWRnZXMnIHRhYmxlIHdpdGggdW5rbm93biBhdXRob3JpemF0aW9uIElEICclcyc7IFNraXBwZWQARm91bmQgYW4gZW50cnkgaW4gdGhlICdkZWZhdWx0X3JvbGVzJyB0YWJsZSB3aXRoIGVtcHR5IGF1dGhvcml6YXRpb24gSUQ7IFNraXBwZWQARm91bmQgYW4gZW50cnkgaW4gdGhlICdkZWZhdWx0X3JvbGVzJyB0YWJsZSB3aXRoIHVua25vd24gYXV0aG9yaXphdGlvbiBJRCAnJXMnOyBTa2lwcGVkAENvdWxkbid0IGluc2VydCBlbnRyeSBpbiBkZGwgbG9nIGZvciBkZGwuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFRoZSBzdGF0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgaXMgc2V0IHRvIGFjdGl2ZSBpbXBsaWNpdGx5LgBUaGUgc3RhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGlzIHNldCB0byAnYWN0aXZlJyBieSBBTFRFUiBUQUJMRVNQQUNFLgBUaGUgc3RhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGlzIHNldCB0byAnaW5hY3RpdmUnIGJ5IEFMVEVSIFRBQkxFU1BBQ0UuAFRoZSBzdGF0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgaXMgc2V0IHRvICdlbXB0eScuAERlbGF5aW5nIHRydW5jYXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBkdWUgdG8gY2xvbmUgYWN0aXZpdHkuAERlbGF5aW5nIHRydW5jYXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBkdWUgdG8gYSBtZXRhZGF0YSBsb2NrLgBJbmplY3RlZCBkZWJ1ZyBjcmFzaCBwb2ludDogJXMASW5qZWN0ZWQgZGVidWcgZmFpbHVyZSBwb2ludDogJXMAVGltZW91dCB3aGlsZSB3YWl0aW5nIGZvciBhIHZpZXcgY2hhbmdlIGV2ZW50IGR1cmluZyB0aGUgbGVhdmUgc3RlcCBiZWZvcmUgYSBhdXRvLXJlam9pbiBhdHRlbXB0LgBGYWlsZWQgdG8gYXV0b21hdGljYWxseSByZS1jb25uZWN0IHRvIGEgZGlmZmVyZW50IHNvdXJjZSwgZm9yIGNoYW5uZWwgJyVzJywgYmVjYXVzZSAlcy4gVG8gZml4IHRoaXMgJXMuAENvdWxkIG5vdCBleGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgVURGIGZ1bmN0aW9ucy4gQ2hlY2sgZm9yIG90aGVyIGVycm9ycyBpbiB0aGUgbG9nAENvdWxkIG5vdCBleGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgVURGIGZ1bmN0aW9uOiAlcy4gQ2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIGFscmVhZHkgcHJlc2VudCwgaWYgc28sIHRyeSB0byByZW1vdmUgaXQuAENvdWxkIG5vdCB1bmluc3RhbGwgVURGIGZ1bmN0aW9ucy4gVHJ5IHRvIHJlbW92ZSB0aGVtIG1hbnVhbGx5IGlmIHByZXNlbnQuAEFuIGVtcHR5IG9yIGlsbGVnYWwgcHJpdmlsZWdlIGlkZW50aWZpZXIgd2FzIGlnbm9yZWQgd2hlbiBnbG9iYWwgcHJpdmlsZWdlcyB3ZXJlIHJlYWQgZnJvbSBkaXNrLgAlcwBBIHRtcGRpciB0ZW1wb3JhcnkgcGF0aCAiJXMiIGlzIHRvbyBsb25nICg+ICV6dSkgZm9yIHRoaXMgT1MuIFRoaXMgd291bGQgbm90IGxlYXZlIGVub3VnaCBzcGFjZSBmb3IgYSB0ZW1wb3JhcnkgZmlsZW5hbWUgb2YgbGVuZ3RoICV6dSB3aXRoaW4gaXQuAEVycm9yLWxvZyBkZXN0aW5hdGlvbiAiJXMiIGlzIG5vdCBhIGZpbGUuIENhbiBub3QgcmVzdG9yZSBlcnJvciBsb2cgbWVzc2FnZXMgZnJvbSBwcmV2aW91cyBydW4uAE5vbmUgb2YgdGhlIGxvZy1zaW5rcyBzZWxlY3RlZCB3aXRoIC0tbG9nLWVycm9yLXNlcnZpY2VzPS4uLiBwcm92aWRlcyBhIGxvZy1wYXJzZXIuIFRoZSBzZXJ2ZXIgd2lsbCBub3QgYmUgYWJsZSB0byBtYWtlIHRoZSBwcmV2aW91cyBydW5zJyBlcnJvci1sb2dzIGF2YWlsYWJsZSBpbiBwZXJmb3JtYW5jZV9zY2hlbWEuZXJyb3JfbG9nLgBUaGUgc2NoZW1hICIlLjY0cyIgcmVmZXJlbmNlZCBieSAlLjE2cyAiJS4xMjhzIiBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNsZWFuIHVwIGFueSBvcnBoYW4gJS4xNnMgYmVmb3JlIHVwZ3JhZGluZy4AQ3JlYXRlZCB1bmRvIHRhYmxlc3BhY2UgJyVzJy4ARHJvcHBlZCB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AVGhlIElubm9EQiBFbmNyeXB0aW9uIE1hc3RlciBLZXkgaGFzIGJlZW4gcm90YXRlZCBpbiAlZCB0YWJsZXNwYWNlcy4ARmFpbGVkIHRvIGRlY29tcHJlc3MgYSBEQkxXUiBwYWdlIChlcnI9JWQpLiAgVGhlIG9yaWdpbmFsIHNpemUgaXMgJWQuIFJlcG9ydGluZyB0aGUgZGJsd3IgcGFnZSBhcyBjb3JydXB0ZWQuAERlY3J5cHRpbmcgYSBwYWdlIGluIGRvdWJsZXdyaXRlIGZpbGUgZmFpbGVkOiAlcy4ARW5jcnlwdGlvbiBrZXkgbWlzc2luZzogJXMuAEkvTyBlcnJvciB3aGlsZSB3cml0aW5nIHRvIGZpbGU6ICVzLiBSZXRyeWluZyAuLi4ARmFpbGVkIHRvIHdyaXRlIGRhdGEgdG8gZmlsZTogJXMATG9nIGNvbXBvbmVudCAlcyBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4AVGhlIE1vbml0b3IgSU8gdGhyZWFkIGZhaWxlZCB0byBjb25uZWN0IHRvIHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJywgdGhlbmNlIGl0IHdpbGwgdHJ5IHRvIGNvbm5lY3QgdG8gYW5vdGhlciBzb3VyY2UuAFRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJyBoYXMgam9pbmVkIHRoZSBncm91cCAoZ3JvdXBfbmFtZTogJXMpLCBhbmQgc28gYWRkZWQgaXRzIGVudHJ5IGludG8gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAFRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJyBoYXMgbGVmdCB0aGUgZ3JvdXAgKGdyb3VwX25hbWU6ICVzKSwgYW5kIHNvIHJlbW92ZWQgaXRzIGVudHJ5IGZyb20gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAFRoZSBNb25pdG9yIElPIHRocmVhZCBkZXRlY3RlZCB0aGF0IHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZG9lcyBub3QgYmVsb25nIHRvIHRoZSBncm91cCBtYWpvcml0eSwgdGhlbmNlIHRoZSBjaGFubmVsICclcycgd2lsbCB0cnkgdG8gY29ubmVjdCB0byBhbm90aGVyIHNvdXJjZS4AVGhlIElPIHRocmVhZCBkZXRlY3RlZCB0aGF0IHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZG9lcyBub3QgYmVsb25nIHRvIHRoZSBncm91cCBtYWpvcml0eSwgdGhlbmNlIHRoZSBjaGFubmVsICclcycgd2lsbCB0cnkgdG8gY29ubmVjdCB0byBhbm90aGVyIHNvdXJjZS4AJXMgb24gdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnLgBSZXBsaWNhIE1vbml0b3IgSU8gdGhyZWFkIGV4aXRpbmcuAFRoZSBncm91cCAoZ3JvdXBfbmFtZTogJXMpIGZvciB0aGUgY2hhbm5lbCAnJXMnIGhhcyBiZWVuIHJlbW92ZWQsIGFuZCBzbyByZW1vdmVkIGl0cyBlbnRyeSBmcm9tIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX21hbmFnZWQgYW5kIGFsbCB0aGUgZ3JvdXAgbWVtYmVycyBmcm9tIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyIHRhYmxlLgBUaGUgZ3JvdXAgKGdyb3VwX25hbWU6ICVzKSBmb3IgdGhlIGNoYW5uZWwgJyVzJyBoYXMgYmVlbiBhZGRlZCwgYW5kIHNvIGFkZGVkIGl0cyBlbnRyeSBpbiByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3Zlcl9tYW5hZ2VkIGFuZCBzb3VyY2UgdG8gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAEVycm9yIHJlYWRpbmcgZmFpbG92ZXIgc291cmNlcyBmb3IgY2hhbm5lbCAnJXMnIGZyb20gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAEVycm9yICVzIHRoZSBjaGFubmVsICclcycsIHRoZSBvcGVyYXRpb24gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJldHJpZWQuAFJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TPSclcycsIHdoaWNoIGlzIGludmFsaWQgd2hlbiBHVElEX01PREUgPD4gT04uIElmIHlvdSBpbnRlbmQgdG8gdXNlIEdUSURfTU9ERSA9IE9OIGV2ZXJ5d2hlcmUsIGNoYW5nZSB0byBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IE9GRiBhbmQgdXNlIHRoZSBwcm9jZWR1cmUgZm9yIGVuYWJsaW5nIEdUSURzIG9ubGluZSAoc2VlIHRoZSBkb2N1bWVudGF0aW9uKS4gSWYgeW91IGludGVuZCB0byB1c2UgR1RJRHMgb24gdGhpcyByZXBsaWNhIGFuZCBjYW5ub3QgZW5hYmxlIEdUSURzIG9uIHRoZSBzb3VyY2UsIGVuYWJsZSBHVElEX01PREUgPSBPTiBhbmQgbGVhdmUgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4uIElmIHlvdSBpbnRlbmQgdG8gbm90IHVzZSBHVElEcyBhdCBhbGwgaW4gdGhlIHJlcGxpY2F0aW9uIHRvcG9sb2d5LCBjaGFuZ2UgdG8gQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlM9T0ZGIGFuZCBsZWF2ZSBHVElEX01PREUgPSAnJXMnLgBSZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUz0nJXMnIHdoaWNoIGlzIGVxdWFsIHRvIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuIFRvIGZpeCB0aGlzIGlzc3VlLCBlaXRoZXIgY2hhbmdlIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICBvciB1c2UgYSBkaWZmZXJlbnQgdmFsdWUgZm9yIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TLgBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSAnJXMnIGlzIHRoZSBzYW1lIGFzIHRoZSBVVUlEIHZhbHVlIGZvciBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyBpbiBhIHNlcnZlciBjaGFubmVsAFRoZSBpbnRlZ2VyIGNvbXBvbmVudCBvZiB0aGUgR1RJRCBudW1iZXIgaXMgaGlnaC4gU3VnZ2VzdCByZXN0YXJ0aW5nIHRoZSBzZXJ2ZXIgd2l0aCBhIG5ldyBzZXJ2ZXJfdXVpZCB0byBwcmV2ZW50IGl0IGZyb20gcmVhY2hpbmcgdGhlIG1heGltdW0gbnVtYmVyIDJeNjMtMSwgd2hpY2ggd2lsbCBtYWtlIGl0IGltcG9zc2libGUgdG8gd3JpdGUgdGhlIGJpbmFyeSBsb2cgYW5kIGludm9rZSB0aGUgYmVoYXZpb3Igc3BlY2lmaWVkIGJ5IGJpbmxvZ19lcnJvcl9hY3Rpb24uACVzACVzACVzACVzOiBXYXJuaW5nIExldmVsIDEgKCVsbHUgTWlCKTogbW91bnQgcG9pbnQgPSAnJXMnLCBhdmFpbGFibGUgPSAlbGx1IE1pQiwgdG90YWwgPSAlbGx1IE1pQiwgdXNlZCA9ICUuMmYlJSwgbG93IGxpbWl0ID0gJWxsdSBNaUIsIGNyaXRpY2FsIGxldmVsID0gJWxsdSBNaUIAJXM6IFdhcm5pbmcgTGV2ZWwgMiAoJWxsdSBNaUIpOiBtb3VudCBwb2ludCA9ICclcycsIGF2YWlsYWJsZSA9ICVsbHUgTWlCLCB0b3RhbCA9ICVsbHUgTWlCLCB1c2VkID0gJS4yZiUlLCBsb3cgbGltaXQgPSAlbGx1IE1pQiwgY3JpdGljYWwgbGV2ZWwgPSAlbGx1IE1pQgAlczogV2FybmluZyBMZXZlbCAzICglbGx1IE1pQik6IG1vdW50IHBvaW50ID0gJyVzJywgYXZhaWxhYmxlID0gJWxsdSBNaUIsIHRvdGFsID0gJWxsdSBNaUIsIHVzZWQgPSAlLjJmJSUsIGxvdyBsaW1pdCA9ICVsbHUgTWlCLCBjcml0aWNhbCBsZXZlbCA9ICVsbHUgTWlCAElubm9EQjogU2l6ZSBvZiB0YWJsZXNwYWNlICVzIGlzIG1vcmUgdGhhbiB0aGUgbWF4aW11bSBzaXplIGFsbG93ZWQuAFRoZSBncm91cF9yZXBsaWNhdGlvbl9hcHBsaWVyIGNoYW5uZWwgaXMgc3RpbGwgcnVubmluZywgbW9zdCBsaWtlbHkgaXQgaXMgd2FpdGluZyBmb3IgYSBkYXRhYmFzZS90YWJsZSBsb2NrLCB3aGljaCBpcyBwcmV2ZW50aW5nIHRoZSBjaGFubmVsIGZyb20gc3RvcHBpbmcuIFBsZWFzZSBjaGVjayBkYXRhYmFzZS90YWJsZSBsb2NrcywgaW5jbHVkaW5nIHRoZSBvbmVzIGNyZWF0ZWQgYnkgYmFja3VwIHRvb2xzLgBEZXRlY3RlZCBtaXNjb25maWd1cmF0aW9uOiByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBjb25maWd1cmVkIHdpdGggU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDEsIGJ1dCB0aGUgc2VydmVyIHdhcyBzdGFydGVkIHdpdGggYSB2YWx1ZSBvdGhlciB0aGVuIC0tZ3RpZC1tb2RlID0gT04uIEVpdGhlciByZWNvbmZpZ3VyZSByZXBsaWNhdGlvbiB1c2luZyBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAwIEZPUiBDSEFOTkVMICclLjE5MnMnLCBvciBjaGFuZ2UgR1RJRF9NT0RFIHRvIHZhbHVlIE9OLCBiZWZvcmUgc3RhcnRpbmcgdGhlIHJlcGxpY2EgcmVjZWl2ZXIgdGhyZWFkLgBDb3VsZCBub3QgYWNxdWlyZSByZXF1aXJlZCBjb21wb25lbnQgc2VydmljZXMuAEF1dG9tYXRpYyByZWdpc3RyYXRpb24gb2YgZnVuY3Rpb24ocykgZmFpbGVkLgBBdXRvbWF0aWMgcmVnaXN0cmF0aW9uIG9mIFBlcmZvcm1hbmNlIHNjaGVtYSB0YWJsZShzKSBmYWlsZWQuACVzAEZhaWxlZCB0byBhdXRvLXBydW5lIGZpbGUgJyVzJywgRXJyb3IgKCVkKTogJXMARmlsZSAnJXMnIGF1dG8tcHJ1bmVkAFJlY2VpdmVkIGFuIGVycm9yIHdoaWxlIHByb2Nlc3NpbmcgY29tcG9uZW50cyBmcm9tIG1hbmlmZXN0IGZpbGU6ICVzAFJlY2VpdmVkIGFuIGVycm9yIHdoaWxlIHVubG9hZGluZyBjb21wb25lbnRzIHJlYWQgZnJvbSBtYW5pZmVzdCBmaWxlOiAlcwBNYW5pZmVzdCBmaWxlICclcycgaXMgbm90IHJlYWQtb25seS4gRm9yIGJldHRlciBzZWN1cml0eSwgcGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoZSBmaWxlIGlzIHJlYWQtb25seS4ATm8gc3VpdGFibGUgJyVzJyBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZvdW5kIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuAEtleXJpbmcgY29tcG9uZW50IGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4AVGhlIGNvbXBvbmVudCBpcyBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIE1ha2Ugc3VyZSB0aGF0IGNvbmZpZ3VyYXRpb24gaXMgcHJvcGVyIGFuZCB1c2UgQUxURVIgSU5TVEFOQ0UgUkVMT0FEIEtFWVJJTkcgdG8gcmVpbml0aWFsaXplIHRoZSBjb21wb25lbnQuAEtleXJpbmcgY29tcG9uZW50IGVuY291bnRlcmVkIGFuIGV4Y2VwdGlvbiB3aGlsZSBleGVjdXRpbmcgOiAnJXMnIEFQSSBvZiBzZXJ2aWNlOiAnJXMnAEZhaWxlZCB0byBhbGxvY2F0ZWQgbWVtb3J5IGZvciAnJXMnIHdoaWxlIGV4ZWN1dGluZzogJyVzJyBBUEkgb2Ygc2VydmljZTogJyVzJwBFbXB0eSBvciAwIHZhbHVlcyBmb3IgQUVTIGVuY3J5cHRpb24gbW9kZSBhbmQvb3IgYmxvY2sgc2l6ZSBhcmUgbm90IHBlcm1pdHRlZC4AQSB2YWxpZCBkYXRhIGlkZW50aWZpZXIgaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG8gZmV0Y2ggdGhlIGtleSByZXF1aXJlZCBmb3IgdGhlIEFFUyBvcGVyYXRpb24uAEtleSBpZGVudGlmaWVkIGJ5IERhdGEgSUQ6ICclcycgYW5kIEF1dGggSUQ6ICclcycgaXMgbm90IG9mIHR5cGUgQUVTLgBFbmNvdW50ZXJlZCBlcnJvcjogJyVzJyB3aGlsZSBleGVjdXRpbmcgJyVzJyBBUEkgb2Yga2V5cmluZ19hZXMgc2VydmljZS4gS2V5IGRldGFpbHMgYXJlIERhdGEgSUQ6ICclcycgYW5kIEF1dGggSUQ6ICclcycuAENvdWxkIG5vdCBmaW5kIHRoZSBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gRGF0YSBJRDogJyVzJywgQXV0aCBJRDogJyVzJy4ATWF4aW11bSBwZXJtaXNzaWJsZSBzaXplIG9mIGRhdGEgaXMgJyV6dScgYml0cwBFcnJvciB3cml0aW5nIGRhdGEgZm9yIERhdGEgSUQ6ICclcycsIEF1dGggSUQ6ICclcycuIEVpdGhlciBkYXRhIGFscmVhZHkgZXhpc3RzIHdpdGggc2FtZSBpZGVudGlmaWVyIG9yIGtleXJpbmcgYmFja2VuZCBlbmNvdW50ZXJlZCBhbiBlcnJvci4ARXJyb3IgcmVtb3ZpbmcgZGF0YSBmb3IgRGF0YSBJRDogJyVzJywgQXV0aCBJRDogJyVzJy4gRWl0aGVyIGRhdGEgZG9lcyBub3QgZXhpc3RzIHdpdGggc2FtZSBpZGVudGlmaWVyIG9yIGtleXJpbmcgYmFja2VuZCBlbmNvdW50ZXJlZCBhbiBlcnJvci4ARXJyb3IgZ2VuZXJhdGluZyBkYXRhIGZvciBEYXRhIElEOiAnJXMnLCBBdXRoIElEOiAnJXMnLiBFaXRoZXIgZGF0YSBhbHJlYWR5IGV4aXN0cyB3aXRoIHNhbWUgaWRlbnRpZmllciBvciBrZXlyaW5nIGJhY2tlbmQgZW5jb3VudGVyZWQgYW4gZXJyb3IuAEZhaWxlZCB0byBnZXQgbWV0YWRhdGEgZnJvbSBjdXJyZW50IGtleXMgbWV0YWRhdGEgaXRlcmF0b3IgcG9zaXRpb24uAEtleSBhbmQgdmFsdWUgbGVuZ3RoIHBhcmFtZXRlcnMgbXVzdCBub3QgYmUgbnVsbC4ASW5ub2RiIGNvdWxkIG5vdCBhY3F1aXJlIHNlcnZpY2UgOiAlcwBDb2x1bW4gJXMgb2YgdHlwZSBHRU9NRVRSWSBpcyBpbiBvbGQgKDUuNikgZm9ybWF0IHdoaWNoIGNvdWxkIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS4gVG8gY2hhbmdlIHRoZSBmb3JtYXQgdG8gbGF0ZXN0LCBwbGVhc2UgY29uc2lkZXIgcmVidWlsZGluZyB0aGUgdGFibGUgYWZ0ZXIgdGhlIHVwZ3JhZGUuACd3YWl0X3RpbWVvdXQnIHBlcmlvZCBvZiAlcyBzZWNvbmRzIHdhcyBleGNlZWRlZCBmb3IgJXMuIFRoZSBpZGxlIHRpbWUgc2luY2UgbGFzdCBjb21tYW5kIHdhcyB0b28gbG9uZy4AVGhlIG1lbWJlciBhY3Rpb24gIiVzIiBmb3IgZXZlbnQgIiVzIiB3aXRoIHByaW9yaXR5ICIldSIgd2lsbCBiZSBydW4uAFRoZSBtZW1iZXIgYWN0aW9uICIlcyIgZm9yIGV2ZW50ICIlcyIgd2l0aCBwcmlvcml0eSAiJXUiIGZhaWxlZCwgdGhpcyBlcnJvciBpcyBpZ25vcmVkIGFzIGluc3RydWN0ZWQuIFBsZWFzZSBjaGVjayBwcmV2aW91cyBtZXNzYWdlcyBpbiB0aGUgZXJyb3IgbG9nIGZvciBoaW50cyBhYm91dCB3aGF0IGNvdWxkIGhhdmUgY2F1c2VkIHRoaXMgZmFpbHVyZS4AVGhlIG1lbWJlciBhY3Rpb24gIiVzIiBmb3IgZXZlbnQgIiVzIiB3aXRoIHByaW9yaXR5ICIldSIgZmFpbGVkLiBQbGVhc2UgY2hlY2sgcHJldmlvdXMgbWVzc2FnZXMgaW4gdGhlIGVycm9yIGxvZyBmb3IgaGludHMgYWJvdXQgd2hhdCBjb3VsZCBoYXZlIGNhdXNlZCB0aGlzIGZhaWx1cmUuAFVuYWJsZSB0byBwYXJzZSB0aGUgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiBzZW50IGJ5IHRoZSBwcmltYXJ5LgBVbmFibGUgdG8gdXBkYXRlIHRoZSBtZW1iZXIgYWN0aW9ucyBjb25maWd1cmF0aW9uIHdpdGggdGhlIG9uZSBzZW50IGJ5IHRoZSBwcmltYXJ5LiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlcyAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX2FjdGlvbnMnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVW5hYmxlIHRvIHJlYWQgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gZHVyaW5nIGdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlLiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlcyAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX2FjdGlvbnMnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVGhpcyBtZW1iZXIgam9pbmVkIGEgZ3JvdXAgb24gd2hpY2ggYWxsIG1lbWJlcnMgZG8gbm90IHN1cHBvcnQgbWVtYmVyIGFjdGlvbnMsIGFzIHN1Y2ggaXQgZGlkIHJlc2V0IGl0cyBtZW1iZXIgY29uZmlndXJhdGlvbiB0byB0aGUgZGVmYXVsdCBvbmUuAFVuYWJsZSB0byByZXNldCB0byBtZW1iZXIgYWN0aW9ucyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb24gbWVtYmVyIGpvaW4uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBVbmFibGUgdG8gcGFyc2UgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gc2VudCBieSB0aGUgZ3JvdXAgb24gbWVtYmVyIGpvaW4uAFVuYWJsZSB0byB1cGRhdGUgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gb24gbWVtYmVyIGpvaW4uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBUaGUgZ3JvdXAgbWVtYmVycyB3ZXJlIHVuYWJsZSB0byBzZW5kIHRoZWlyIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nIG9uIGFsbCBtZW1iZXJzLgBNZW1iZXIgYWN0aW9uIGVuYWJsZWQ6ICIlcyIsIHR5cGU6ICIlcyIsIGV2ZW50OiAiJXMiLCBwcmlvcml0eTogIiV1IiwgZXJyb3JfaGFuZGxpbmc6ICIlcyIuAE1lbWJlciBhY3Rpb24gZGlzYWJsZWQ6ICIlcyIsIHR5cGU6ICIlcyIsIGV2ZW50OiAiJXMiLCBwcmlvcml0eTogIiV1IiwgZXJyb3JfaGFuZGxpbmc6ICIlcyIuAE1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gd2FzIHJlc2V0LgBBY2NlcHRlZCBhIGNvbm5lY3Rpb24gd2l0aCBkZXByZWNhdGVkIHByb3RvY29sICclcycgZm9yIGFjY291bnQgYCVzYEBgJXNgIGZyb20gaG9zdCBgJXNgLiBDbGllbnQgc3VwcGxpZWQgdXNlcm5hbWUgYCVzYABBIGRlcHJlY2F0ZWQgVExTIHZlcnNpb24gJXMgaXMgZW5hYmxlZCBmb3IgY2hhbm5lbCAlcwBVc2VyIHByb2ZpbGUgJyVzJyBsb2FkZWQuIEZpcmV3YWxsIHVzZXIgcHJvZmlsZXMgYXJlIGRlcHJlY2F0ZWQsIGNvbnNpZGVyIG1pZ3JhdGluZyB0byBncm91cCBwcm9maWxlcy4ASW52YWxpZCBpbnB1dCB2YWx1ZSBmb3IgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCAnJXMnLiBQbGVhc2UsIHByb3ZpZGUgYSB2YWxpZCBVVUlELgBWYXJpYWJsZSAnZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCcgY2Fubm90IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyVzJy4gSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBVVUlEIG9mICdncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lJyBmb3IgdGhlIFVVSUQgb2YgVmlld19jaGFuZ2VfbG9nX2V2ZW50cywgcGxlYXNlIHNldCAnZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCcgdG8gQVVUT01BVElDLgBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICclcycsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQuIFBsZWFzZSBjaGFuZ2UgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCB0byBBVVRPTUFUSUMAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgJyVzJyBpcyB0aGUgc2FtZSBhcyB0aGUgVVVJRCB2YWx1ZSBmb3IgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgaW4gYSBzZXJ2ZXIgY2hhbm5lbABncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIGlzIGluY29tcGF0aWJsZSB3aXRoIGdyb3VwLiBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkICVzIG1hdGNoZXMgc2VydmVyX3V1aWQgJXMuAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCBvcHRpb24gdmFsdWUgJyVzJyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVzJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AUmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlM9JyVzJyB3aGljaCBpcyBlcXVhbCB0byBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkLiBUbyBmaXggdGhpcyBpc3N1ZSwgZWl0aGVyIGNoYW5nZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCBvciB1c2UgYSBkaWZmZXJlbnQgdmFsdWUgZm9yIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TLgBVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQuAFVuYWJsZSB0byBnZW5lcmF0ZSBzaWRubyBmb3IgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZC4AVW5hYmxlIHRvIHBhcnNlIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIHVwZGF0aW5nIGdyb3VwX2d0aWRfZXhlY3V0ZWQgR1RJRCBzZXQgd2l0aCB2aWV3IGNoYW5nZSB1dWlkIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byBhZGQgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgc2lkbm8gaW4gdGhlIGdyb3VwX2d0aWRfc2lkX21hcCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBVbmFibGUgdG8gaGFuZGxlIHRoZSBkb25vcidzIHZpZXcgY2hhbmdlIHV1aWQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gd2hlbiBpbml0aWFsaXppbmcgdGhlIGNvbmZsaWN0IGRldGVjdGlvbiBjb21wb25lbnQuIFBvc3NpYmxlIG91dCBvZiBtZW1vcnkgZXJyb3IuAFVuYWJsZSB0byByZXRyaWV2ZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIGR1cmluZyBzZXJ2ZXIgY2hlY2tzIG9uIHJlcGxpY2F0aW9uIG9wZXJhdGlvbnMuAEJvdGggYXVkaXRfbG9nX21heF9zaXplIGFuZCBhdWRpdF9sb2dfcHJ1bmVfc2Vjb25kcyBhcmUgc2V0IHRvIG5vbi16ZXJvLiBhdWRpdF9sb2dfbWF4X3NpemUgdGFrZXMgcHJlY2VkZW5jZSBhbmQgYXVkaXRfbG9nX3BydW5lX3NlY29uZHMgaXMgaWdub3JlZABhdWRpdF9sb2dfcm90YXRlX29uX3NpemUgaXMgbm90IGdyYW51bGFyIGVub3VnaCBmb3IgdGhlIHZhbHVlIG9mIGF1ZGl0X2xvZ19tYXhfc2l6ZSBzdXBwbGllZC4gU2hvdWxkIGJlIGF0IGxlYXN0ICVkIHRpbWVzIHNtYWxsZXIuAEludmFsaWQgdGFibGUgZGVmaW5pdGlvbiBmb3IgJyVzLiVzJy4AJXMAQ2Fubm90IGluc3RhbGwgdGhlICUuMTkycyBwbHVnaW4gd2hlbiB0aGUgJS4xOTJzIHBsdWdpbiBpcyBpbnN0YWxsZWQuAFRoZSB2YXJpYWJsZSAlcyBoYXMgYmVlbiByZW5hbWVkIHRvICVzLCBhbmQgdGhlIG9sZCBuYW1lIGRlcHJlY2F0ZWQuIE9ubHkgdGhlIG9sZCBuYW1lIHdhcyBmb3VuZCBpbiB0aGUgcGVyc2lzdGVkIHZhcmlhYmxlIGZpbGUuIE5leHQgdGltZSB0aGUgZmlsZSBpcyBzYXZlZCwgYm90aCBuYW1lcyB3aWxsIGJlIHN0b3JlZC4gSXNzdWUgYW55IFNFVCBQRVJTSVNUIGNvbW1hbmQgdG8gc2F2ZSB0aGUgZmlsZSwgZ2V0IHJpZCBvZiB0aGlzIHdhcm5pbmcsIGFuZCBwcmVwYXJlIHRoZSBwZXJzaXN0ZWQgY29uZmlndXJhdGlvbiBmb3Igd2hlbiB0aGUgdmFyaWFibGUgaXMgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLgAlZCBlcnJvciBsb2dnaW5nIGNvbXBvbmVudChzKSBmYWlsZWQgdG8gZmx1c2guIEZvciBmaWxlLWJhc2VkIGxvZ3MgdGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIHBhdGggb3IgcGVybWlzc2lvbnMgb2YgdGhlIGxvZy1maWxlIGhhdmUgY2hhbmdlZC4gRmFpbHVyZSB0byBmbHVzaCBmaWxlZC1iYXNlZCBsb2dzIG1heSBhZmZlY3QgbG9nLXJvdGF0aW9uLgBUYWJsZXNwYWNlIGtleSBmb3IgJXMgaGFzIGJlZW4gcmUtZW5jcnlwdGVkIHVzaW5nIHRoZSBsYXRlc3QgSW5ub0RCIG1hc3RlciBrZXkuIEhvd2V2ZXIsIHdlIHJlY29tbWVuZCB0aGF0IHlvdSByZWJ1aWxkIHRoZSB0YWJsZSBmb3IgYmV0dGVyIHNlY3VyaXR5LgBUYWJsZXNwYWNlIGtleSBmb3IgJXMgaGFzIGJlZW4gcmUtZW5jcnlwdGVkIHVzaW5nIHRoZSBsYXRlc3QgSW5ub0RCIG1hc3RlciBrZXkuIEhvd2V2ZXIsIHdlIHJlY29tbWVuZCB0aGF0IHlvdSByZWVuY3J5cHQgdGhlIHRhYmxlc3BhY2UgZm9yIGJldHRlciBzZWN1cml0eS4AUGFnZSBBcmNoaXZlcidzIGRvdWJsZXdyaXRlIGJ1ZmZlciBpbml0aWFsaXNhdGlvbiBmYWlsZWQuIFBhZ2UgdHJhY2tpbmcgaXMgYXQgcmlzayBvZiBsb3NpbmcgdHJhY2tlZCBpbmZvcm1hdGlvbi4AVGhlcmUgaXMgbm90IGVub3VnaCBmcmVlIHNwYWNlIGluIHRoZSByZWRvIGxvZyBkdXJpbmcgcmVjb3ZlcnkgdG8gcGVyZm9ybSBwZW5kaW5nIGlidWYgbWVyZ2VzLiBQbGVhc2UgcmV0cnkgc3RhcnRpbmcgTXlTUUwgd2l0aCAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT00LgBUaGVyZSBpcyBub3QgZW5vdWdoIGZyZWUgc3BhY2UgaW4gdGhlIHJlZG8gbG9nIGR1cmluZyByZWNvdmVyeSwgcmVzdG9yZSBmcm9tIGJhY2t1cCAob3IgcmV0cnkgd2l0aCAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT02KS4AYXVkaXRfbG9nX2Zvcm1hdF91bml4X3RpbWVzdGFtcCBpcyBhcHBsaWNhYmxlIG9ubHkgd2hlbiBhdWRpdF9sb2dfZm9ybWF0ID0gSlNPTi4AUmV0cnkgdGhlIHN0YXRlbWVudCB1c2luZyB0aGUgcHJpbWFyeSBzdG9yYWdlIGVuZ2luZS4AUGFyYWxsZWwgaW5pdGlhbGl6YXRpb24gb2YgcnNlZyBjb21wbGV0ZQBUaW1lIHRha2VuIHRvIGluaXRpYWxpemUgcnNlZyB1c2luZyAldSB0aHJlYWQ6ICV1IG1zLgBEREwgZmFpbGVkIHRvIGNyZWF0ZSBhIHRocmVhZCB0byBsb2FkIGFuIGluZGV4LCBmYWxsIGJhY2sgdG8gc2luZ2xlIHRocmVhZABEZWJ1Z19jaGVja19ub19sYXRjaGluZyBmYWlsZWQsIHNsb3QtPnR5cGU9JWQARmFpbGVkIHRvIGVzdGFibGlzaCBNeVNRTCBjbGllbnQgY29ubmVjdGlvbiBpbiBHcm91cCBSZXBsaWNhdGlvbi4gRXJyb3IgZXN0YWJsaXNoaW5nIGNvbm5lY3Rpb24uIFBsZWFzZSByZWZlciB0byB0aGUgbWFudWFsIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdSBjb25maWd1cmVkIEdyb3VwIFJlcGxpY2F0aW9uIHByb3Blcmx5IHRvIHdvcmsgd2l0aCBNeVNRTCBQcm90b2NvbCBjb25uZWN0aW9ucy4ARmFpbGVkIHRvIGVzdGFibGlzaCBNeVNRTCBjbGllbnQgY29ubmVjdGlvbiBpbiBHcm91cCBSZXBsaWNhdGlvbi4gRXJyb3Igc2VuZGluZyBjb25uZWN0aW9uIGRlbGVnYXRpb24gY29tbWFuZC4gUGxlYXNlIHJlZmVyIHRvIHRoZSBtYW51YWwgdG8gbWFrZSBzdXJlIHRoYXQgeW91IGNvbmZpZ3VyZWQgR3JvdXAgUmVwbGljYXRpb24gcHJvcGVybHkgdG8gd29yayB3aXRoIE15U1FMIFByb3RvY29sIGNvbm5lY3Rpb25zLgBVbmFibGUgdG8gcmVhZCB0aGUgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgY29uZmlndXJhdGlvbiBkdXJpbmcgZ3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2UuIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlcicsICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3Zlcl9tYW5hZ2VkJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFRoaXMgbWVtYmVyIGpvaW5lZCBhIGdyb3VwIG9uIHdoaWNoIGFsbCBtZW1iZXJzIGRvIG5vdCBzdXBwb3J0IHJlcGxpY2F0aW9uIGZhaWxvdmVyIGNoYW5uZWxzIGludGVncmF0aW9uIG9uIEdyb3VwIFJlcGxpY2F0aW9uLCBhcyBzdWNoIGl0IGRpZCByZXNldCBpdHMgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgY29uZmlndXJhdGlvbiB0byB0aGUgZGVmYXVsdCBvbmUuAFVuYWJsZSB0byByZXNldCB0byByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb24gbWVtYmVyIGpvaW4uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlcicsICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3Zlcl9tYW5hZ2VkJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFVuYWJsZSB0byBwYXJzZSB0aGUgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgY29uZmlndXJhdGlvbiBzZW50IGJ5IHRoZSBncm91cCBvbiBtZW1iZXIgam9pbi4AVW5hYmxlIHRvIHNldCBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSIG9uIGEgbm9uLWV4aXN0ZW50IG9yIG1pc2NvbmZpZ3VyZWQgcmVwbGljYXRpb24gY2hhbm5lbCAnJXMnLCBwbGVhc2UgY3JlYXRlIHRoZSBjaGFubmVsIGFuZCByZWpvaW4gdGhlIHNlcnZlciB0byB0aGUgZ3JvdXAuAFVuYWJsZSB0byByZWdpc3RlciB0aGUgbGlzdGVuZXIgJ3JlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX2NvbmZpZ3VyYXRpb24nIHRvIHRoZSBzZXJ2aWNlICdncm91cF9yZXBsaWNhdGlvbl9tZXNzYWdlX3NlcnZpY2VfcmVjdicuAFRoaXMgc2VydmVyIGlzIG5vdCBhYmxlIHRvIHJlYWNoIGEgbWFqb3JpdHkgb2YgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIFRoaXMgc2VydmVyIHdpbGwgc2tpcCB0aGUgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgaGFuZGxpbmcgdW50aWwgdGhpcyBzZXJ2ZXIgaXMgYmFjayB0byB0aGUgZ3JvdXAgbWFqb3JpdHkuAFRoaXMgc2VydmVyIGlzIGJhY2sgdG8gdGhlIGdyb3VwIG1ham9yaXR5LiBSZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBoYW5kbGluZyBpcyByZXN1bWVkLgBFcnJvciBpbmNyZW1lbnRpbmcgbWVtYmVyIGFjdGlvbiBjb25maWd1cmF0aW9uIHZlcnNpb24gZm9yICVzLiVzIHRhYmxlLgBUaGUgJyVzJyB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIHdpbGwgZXJyb3Igb3V0IGFzIHRoaXMgc2VydmVyIGlzIGEgZ3JvdXAgc2Vjb25kYXJ5LgBDbG9uZSBEREwgTm90aWZpY2F0aW9uOiAlcwBDbG9uZSBEREwgQVBQTFk6ICVzAENsb25lIERETCBJbnZhbGlkYXRlIDogJXMARW5jcnlwdGlvbiBrZXkgaXMgbG9hZGVkIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4ASWdub3JpbmcgZW5jcnlwdGlvbiBJTkZPIHNpemUgaW4gcmVkbyBsb2c6ICV6dSwgZXhwZWN0ZWQ6ICV6dQBPcHRpb24gLS1hdXRoZW50aWNhdGlvbi1wb2xpY3kgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuIFBsZWFzZSBjaGVjayBpZiB0aGUgc3BlY2lmaWVkIGF1dGhlbnRpY2F0aW9uIHBsdWdpbnMgYXJlIHZhbGlkLgBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCBkdXJpbmcgcmVnaXN0cmF0aW9uLgBCdWZmZXIgdG9vIHNtYWxsIHRvIGhvbGQgcmVnaXN0cmF0aW9uIGNoYWxsZW5nZSByZXNwb25zZS4ARklETyBkZXZpY2UgYXV0aGVudGljYXRvciBkYXRhIGNvcnJ1cHQuAEZJRE8gZGV2aWNlIHNpZ25hdHVyZSBjb3JydXB0LgBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCBkdXJpbmcgYXV0aGVudGljYXRpb24uAE91dCBvZiBtZW1vcnkuAENhbid0IGluaXRpYWxpemUgbG9nZ2luZyBzZXJ2aWNlAFJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEdUSURfT05MWT0xLCB3aGljaCBpcyBpbnZhbGlkIHdoZW4gR1RJRF9NT0RFIDw+IE9OLiBJZiB5b3UgaW50ZW5kIHRvIGRpc2FibGUgR1RJRHMgaW4gdGhlIHJlcGxpY2F0aW9uIHRvcG9sb2d5LCBjaGFuZ2UgR1RJRF9PTkxZIHRvIDAuAFRoZSByZXBsaWNhdGlvbiBwb3NpdGlvbnMgcmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBtYXkgYmUgb3V0LW9mLWRhdGUgb24gY2hhbm5lbCAnJS4xOTJzJywgZHVlIHRvIHRoZSB1c2Ugb2YgR1RJRF9PTkxZPTEuIFRoZSBvdXQtb2YtZGF0ZSBwb3NpdGlvbnMgY2FuIHN0aWxsIGJlIHVzZWQgaW4gc29tZSBjYXNlcyBzbywgaW4gb3JkZXIgdG8gdXBkYXRlIHRoZW0sIHdlIHN1Z2dlc3QgdGhhdCB5b3Ugc3RhcnQgdGhlIHJlcGxpY2F0aW9uIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGF0IGxlYXN0IG9uZSB0cmFuc2FjdGlvbiwgd2hpY2ggd2lsbCBzZXQgdGhlIHBvc2l0aW9ucyB0byB2YWxpZCB2YWx1ZXMuAENvdWxkIG5vdCBvcGVuIHJlbGF5IGxvZzogJXMAQXV0aGVudGljYXRpb24gcGx1Z2luIG5vdCBpbml0aWFsaXplZC4AQ2Fubm90IHVzZSB0aGUgZ2VuZXJhdGVkIHByaXZhdGUga2V5IGZpbGUuAFVuYXZhaWxhYmxlIHB1YmxpYyBrZXkgd2l0aCBmaW5nZXJwcmludCAlcyBmb3IgdXNlciAlcyBpbiB0ZW5hbmN5ICVzIC4AQ2Fubm90IG9idGFpbiB0aGUgT0NJIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgSU1EUyBzZXJ2aWNlLgBDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgSUFNIHNlcnZpY2UuAEludmFsaWQgYXV0aGVudGljYXRpb24gc3RyaW5nIGRldGFpbHMgZm9yIHVzZXI6IGAlc2BAYCVzYC4ATm9uZSBvZiB0aGUgZ3JvdXBzIHJldHVybmVkIGJ5IElBTSBtYXRjaGVzIGFueSBvZiB0aGUgZW50cmllcyBmcm9tIGF1dGhlbnRpY2F0aW9uIHN0cmluZy4AVXNlciBpcyBub3QgcGFydCBvZiBhbnkgZ3JvdXBzLiBIb3dldmVyLCBhY2NvdW50IGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGdyb3VwIG1hcHBpbmcuAFJlY2VpdmVkIE9wZW5TU0wgZXJyb3I6ICVzIHdoaWxlIGF1dGhlbnRpY2F0aW5nIHVzZXIgJXMgd2l0aCBmaW5nZXJwcmludCAlcyBpbiB0ZW5hbmN5ICVzIC4AJXM6IFdhcm5pbmcgTGV2ZWwgMSAoJWxsdSBNaUIpOiBhdmFpbGFibGU9JWxsdSBNaUIsIHRvdGFsPSVsbHUgTWlCLCB1c2VkPSUuMmYlJSwgbXlzcWxkPSVsbHUgTWlCACVzOiBXYXJuaW5nIExldmVsIDIgKCVsbHUgTWlCKTogYXZhaWxhYmxlPSVsbHUgTWlCLCB0b3RhbD0lbGx1IE1pQiwgdXNlZD0lLjJmJSUsIG15c3FsZD0lbGx1IE1pQgAlczogV2FybmluZyBMZXZlbCAzICglbGx1IE1pQik6IGF2YWlsYWJsZT0lbGx1IE1pQiwgdG90YWw9JWxsdSBNaUIsIHVzZWQ9JS4yZiUlLCBteXNxbGQ9JWxsdSBNaUIAVGhlIG1lbWJlciAlczoldSwgd2l0aCBVVUlEOiAlcywgd2FzIHNldCBhcyB0aGUgc2luZ2xlIHByZWZlcnJlZCBjb25zZW5zdXMgbGVhZGVyLgBTb21ldGhpbmcgd2VudCB3cm9uZyB0cnlpbmcgdG8gc2V0IHRoZSBtZW1iZXIgJXM6JXUsIHdpdGggVVVJRDogJXMsIGFzIHRoZSBzaW5nbGUgcHJlZmVycmVkIGNvbnNlbnN1cyBsZWFkZXIuIFBsZWFzZSBxdWVyeSB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX2NvbW11bmljYXRpb25faW5mb3JtYXRpb24gdGFibGUgdG8gc2VlIHdoZXRoZXIgdGhlIG9wZXJhdGlvbiB0b29rIGVmZmVjdCwgaS5lLiB3aGV0aGVyIHRoZSBwcmVmZXJyZWQgY29uc2Vuc3VzIGxlYWRlciBtYXRjaGVzIHRoZSBjdXJyZW50IHByaW1hcnkuIElmIG5vdCwgY29uc2lkZXIgZWxlY3RpbmcgYSBkaWZmZXJlbnQgcHJpbWFyeSB0byB0cnkgYWdhaW4uIFBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbG9nIGFuZCBHQ1NfREVCVUdfVFJBQ0UgZm9yIG1vcmUgaW5mb3JtYXRpb24gdGhhdCBtYXkgaGVscCB1bmRlcnN0YW5kaW5nIHdoYXQgd2VudCB3cm9uZy4AQWxsIG1lbWJlcnMgd2VyZSBzZXQgYXMgY29uc2Vuc3VzIGxlYWRlcnMuAFNvbWV0aGluZyB3ZW50IHdyb25nIHRyeWluZyB0byBzZXQgYWxsIG1lbWJlcnMgYXMgY29uc2Vuc3VzIGxlYWRlcnMuIFBsZWFzZSBxdWVyeSB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX2NvbW11bmljYXRpb25faW5mb3JtYXRpb24gdGFibGUgdG8gc2VlIHdoZXRoZXIgdGhlIG9wZXJhdGlvbiB0b29rIGVmZmVjdCwgaS5lLiB3aGV0aGVyIHRoZSBjb25zZW5zdXMgbGVhZGVycyBtYXRjaCBhbGwgbWVtYmVycy4gSWYgbm90LCBjb25zaWRlciByZXNldHRpbmcgdGhlIGdyb3VwIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdG8gYSB2ZXJzaW9uIDwgOC4wLjIyLCBvciBzd2l0Y2ggdG8gc2luZ2xlLXByaW1hcnkgbW9kZSBhbmQgYmFjayBhZ2FpbiB0byBtdWx0aS1wcmltYXJ5IG1vZGUsIHRvIHRyeSBhZ2Fpbi4gUGxlYXNlIGNoZWNrIHRoZSBlcnJvciBsb2cgYW5kIEdDU19ERUJVR19UUkFDRSBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0aGF0IG1heSBoZWxwIHVuZGVyc3RhbmRpbmcgd2hhdCB3ZW50IHdyb25nLgBUaGlzIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBncm91cF9yZXBsaWNhdGlvbl9wYXhvc19zaW5nbGVfbGVhZGVyIG9wdGlvbiB2YWx1ZSBvZiAnJWQnIHRoYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwJ3MgdmFsdWUgKCclZCcpLiBUaGlzIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ASW52YWxpZCBhbmQvb3IgY29ycnVwdGVkIG11bHRpIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGluIFVzZXJfYXR0cmlidXRlcyBjb2x1bW4gaW4gbXlzcWwudXNlciB0YWJsZS4gIiVzIi4AUGx1Z2luICclLS4xOTJzJyBpcyBub3QgbG9hZGVkOyBJZ25vcmluZyB1c2VyACVzOiBUaGUgY2hhcmFjdGVyIHNldCAlcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nICVzIGluc3RlYWQuACVzOiAnJS0uNjRzJyBpcyBhIGNvbGxhdGlvbiBvZiB0aGUgZGVwcmVjYXRlZCBjaGFyYWN0ZXIgc2V0ICVzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgJXMgd2l0aCBhbiBhcHByb3ByaWF0ZSBjb2xsYXRpb24gaW5zdGVhZC4ATWlzc2luZyBkYXRhIGRpcmVjdG9yeSBmb3IgSUNVIHJlZ3VsYXIgZXhwcmVzc2lvbnM6ICVzLgBNb3JlIHRoYW4gOTAlJSBvZiBmaWxlcyBvcGVuZWQgb3V0IG9mIHRoZSBpbm5vZGJfb3Blbl9maWxlcyBsaW1pdCBhcmUgZmlsZXMgdGhhdCBhcmUgbm90IGVhc3kgdG8gY2xvc2UuIFRoZSBwZXJmb3JtYW5jZSBvZiBzeXN0ZW0gbWF5IGRlZ3JhZGUuIENvbnNpZGVyIGluY3JlYXNpbmcgdmFsdWUgb2YgdGhlIGlubm9kYl9vcGVuX2ZpbGVzIHN5c3RlbSB2YXJpYWJsZS4gVGhlcmUgYXJlICV6dSBzdWNoIGZpbGVzIG9wZW5lZCBvdXQgb2YgdGhlIHRvdGFsIGxpbWl0IGZvciBhbGwgZmlsZXMgb3BlbmVkIG9mICV6dS4AVHJ5aW5nIHRvIG9wZW4gYSBmaWxlIGZvciAlbGxkIHNlY29uZHMuIENvbmZpZ3VyYXRpb24gb25seSBhbGxvd3MgZm9yICV6dSBvcGVuIGZpbGVzLiBDb25zaWRlciBzZXR0aW5nIGlubm9iYXNlX29wZW5fZmlsZXMgaGlnaGVyLgBDb25uZWN0aW9uIGNsb3NlZC4gR2xvYmFsIGNvbm5lY3Rpb24gbWVtb3J5IGxpbWl0ICVsbHUgYnl0ZXMgZXhjZWVkZWQuIENvbnN1bWVkICVsbHUgYnl0ZXMuAENvbm5lY3Rpb24gY2xvc2VkLiBDb25uZWN0aW9uIG1lbW9yeSBsaW1pdCAlbGx1IGJ5dGVzIGV4Y2VlZGVkLiBDb25zdW1lZCAlbGx1IGJ5dGVzLgBBdWRpdCBMb2cgaXMgZGlzYWJsZWQuIEVuYWJsZSBpdCB3aXRoIGF1ZGl0X2xvZ19kaXNhYmxlID0gZmFsc2UuAE9wdGlvbiAtLXRscy12ZXJzaW9uIG9yIC0tYWRtaW4tdGxzLXZlcnNpb24gaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUgJXMuAFJlbGF5IGxvZyByZWNvdmVyeSBvbiBjaGFubmVsIHdpdGggR1RJRF9PTkxZPTEuIFRoZSBjaGFubmVsIHdpbGwgc3dpdGNoIHRvIGEgbmV3IHJlbGF5IGxvZyBhbmQgdGhlIEdUSUQgcHJvdG9jb2wgd2lsbCBiZSB1c2VkIHRvIHJlcGxpY2F0ZSB1bmFwcGxpZWQgdHJhbnNhY3Rpb25zLgBOdW1iZXIgb2YgU1RBTkRCWV9TRVJWRVIgdmFsdWVzIGV4Y2VlZGVkIG1heGltdW0gbGltaXQgb2YgNjQuAFNvdXJjZSBrZXlyaW5nIGRvZXMgbm90IGhhdmUgYW55IGtleXMgdG8gbWlncmF0ZS4AQ2Fubm90IHBlcnNpc3QgU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZXMgYmVjYXVzZSBrZXlyaW5nIGNvbXBvbmVudCBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlIGFuZCBwZXJzaXN0X3NlbnNpdGl2ZV92YXJpYWJsZXNfaW5fcGxhaW50ZXh0IGlzIHNldCB0byBPRkYuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCBrZXlyaW5nIHNlcnZpY2VzIGFyZSBhY3RpdmUgYW5kIHJlcXVpcmVkIGtleXMgYXJlIGF2YWlsYWJsZS4AQ2Fubm90IGludGVycHJldCBwZXJzaXN0ZWQgU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZXMuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCBrZXlyaW5nIHNlcnZpY2VzIGFyZSBhY3RpdmUgYW5kIHJlcXVpcmVkIGtleXMgYXJlIGF2YWlsYWJsZS4AS2V5cmluZyBoYXMgdG8gYmUgbG9hZGVkIHRocm91Z2ggbWFuaWZlc3QgZmlsZSBpbiBvcmRlciB0byBzdXBwb3J0IHNlY3VyZSBzdG9yYWdlIGZvciBwZXJzaXN0ZWQgdmFyaWFibGVzAENvdWxkIG5vdCBmaW5kIG1hc3RlciBrZXkgJXMgaW4ga2V5cmluZwBBIG5ldyBtYXN0ZXIga2V5ICVzIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQARmFpbGVkIHRvIGVuY3J5cHQgJXMgdXNpbmcgJXMARmFpbGVkIHRvIGRlY3J5cHQgJXMgdXNpbmcgJXMAUGVyc2lzdGluZyBTRU5TSVRJVkUgdmFyaWFibGVzIGluIGVuY3J5cHRlZCBmb3JtIHJlcXVpcmVzIGtleXJpbmcgY29tcG9uZW50IGxvYWRlZCB0aHJvdWdoIG1hbmlmZXN0IGZpbGUuAFVzaW5nIGplbWFsbG9jLmRsbCBmb3IgbXlfbWFsbG9jIGFuZCB1dDo6bWFsbG9jIGV0Yy4AJXMuACVzLgAlcy4AUGFzc3dvcmQgZm9yIHRoZSBhY2NvdW50ICclLS40OHMnQCclLS42NHMnIGhhcyBleHBpcmVkLiBUbyBsb2cgaW4sIGVpdGhlciBjaGFuZ2UgaXQgdXNpbmcgYSBjbGllbnQgdGhhdCBzdXBwb3J0cyBleHBpcmVkIHBhc3N3b3JkcyBvciBzZW5kIHRoZSBjaGFuZ2UgcmVxdWVzdCB0byBhbiBhZG1pbmlzdHJhdG9yLgBUaHJlYWQgcG9vbCBwbHVnaW4gc3RhcnRlZCBzdWNjZXNzZnVsbHkgd2l0aCBwYXJhbWV0ZXJzOiAlcwB0aHJlYWRfcG9vbF9kZWRpY2F0ZWRfbGlzdGVuZXJzIGNhbm5vdCBiZSBzZXQgdW5sZXNzIHRocmVhZF9wb29sX21heF90cmFuc2FjdGlvbnNfbGltaXQgPiAwACVzACVzAFRoZSByZWRvIGxvZyBmaWxlICVzIGlzIGVtcHR5LCB3aGljaCBpbmRpY2F0ZXMgaXQgd2FzIG5vdCBnZW5lcmF0ZWQgYnkgSW5ub0RCIG9yIGJlY29tZSBjb3JydXB0ZWQuIFBsZWFzZSByZXN0b3JlIHRoZSBjb3JyZWN0IGZpbGUgb3IgdHJ5IHJlY292ZXJpbmcgd2l0aG91dCB0aGUgcmVkbyBmaWxlcywgaW4gcmVhZC1vbmx5IG1vZGUsIGJ5IHByb3ZpZGluZyAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT02LgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBpcyBzbWFsbGVyIHRoYW4gJWxsdSBieXRlcywgd2hpY2ggaW5kaWNhdGVzIGl0IHdhcyBub3QgZ2VuZXJhdGVkIGJ5IElubm9EQiBvciBiZWNvbWUgY29ycnVwdGVkLiBQbGVhc2UgcmVzdG9yZSB0aGUgY29ycmVjdCBmaWxlLgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBpcyBsYXJnZXIgdGhhbiAlbGx1IGJ5dGVzLCB3aGljaCBpbmRpY2F0ZXMgaXQgd2FzIG5vdCBnZW5lcmF0ZWQgYnkgSW5ub0RCIG9yIGJlY29tZSBjb3JydXB0ZWQuIFBsZWFzZSByZXN0b3JlIHRoZSBjb3JyZWN0IGZpbGUuAEZhaWxlZCB0byByZWFkIGhlYWRlciBvZiB0aGUgcmVkbyBsb2cgZmlsZSAlcwAtLWluaXRpYWxpemUgc3BlY2lmaWVkIGJ1dCB0aGUgcmVkbyBsb2cgZGlyZWN0b3J5ICVzIGhhcyByZWRvIGxvZyBmaWxlcyBpbnNpZGUuIEFib3J0aW5nLgBGYWlsZWQgdG8gbGlzdCByZWRvIGxvZyBmaWxlcyBpbiB0aGUgcmVkbyBsb2cgZGlyZWN0b3J5ICVzAE5laXRoZXIgZm91bmQgJXMgc3ViZGlyZWN0b3J5LCBub3IgJXMqIGZpbGVzIGluICVzAENhbm5vdCByZXN0b3JlIGNsb25lZCBkYXRhIGRpcmVjdG9yeSwgSW5ub0RCIHJ1bm5pbmcgaW4gcmVhZC1vbmx5IG1vZGUhAEVycm9yICVkIGVuY291bnRlcmVkIHdoZW4gd3JpdGluZyB0byB0aGUgcmVkbyBsb2cgZmlsZTogJXMuAFJlZG8gbG9nIHdyaXRlciBpcyB3YWl0aW5nIGZvciBhIG5ldyByZWRvIGxvZyBmaWxlLiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4ARm91bmQgY2hlY2twb2ludCBMU04gJWxsdSBpbiBhIHJlZG8gbG9nIGZpbGUgJXMsIGJ1dCB0aGUgZmlsZSByZXByZXNlbnRzIHJhbmdlIG9mIExTTiB2YWx1ZXMgWyVsbHUsICVsbHUpLCBzbyB0aGUgZmlsZSBpcyBjb3JydXB0ZWQuAFJlZG8gbG9nIGlzIHJ1bm5pbmcgb3V0IG9mIGZyZWUgc3BhY2UsIHBhdXNpbmcgdXNlciB0aHJlYWRzLi4uIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgBSZWRvIGxvZyByZWNsYWltZWQgc29tZSBmcmVlIHNwYWNlLCByZXN1bWluZyB1c2VyIHRocmVhZHMuAElnbm9yZWQgZGVwcmVjYXRlZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpbm5vZGJfbG9nX2ZpbGVfc2l6ZS4gVXNlZCBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgaW5zdGVhZC4ASWdub3JlZCBkZXByZWNhdGVkIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGlubm9kYl9sb2dfZmlsZXNfaW5fZ3JvdXAuIFVzZWQgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5IGluc3RlYWQuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMgd2hlbiBpbm5vZGItZm9yY2UtcmVjb3ZlcnkgPiAwLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIGluIHJlYWQtb25seSBtb2RlICgtLWlubm9kYi1yZWFkLW9ubHkpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIG9uIGNsb25lZCBkYXRhIGRpcmVjdG9yeS4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcyBiZWNhdXNlIHRoZXkgYXJlIG1hcmtlZCBhcyB1bmluaXRpYWxpemVkLiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIHdoZW4gdGhlIHJlZG8gbG9nIGlzIGNvcnJ1cHRlZC4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcyB3aGVuIHRoZXJlIGlzIG5vbi1wZXJzaXN0ZWQgREQgbWV0YWRhdGEgaW4gcmVkby4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcywgYmVjYXVzZSBJbm5vREIgZmFpbGVkIHRvIHJlYWNoIHN0YXRlIGluIHdoaWNoIHJlZG8gbG9nIGlzIGxvZ2ljYWxseSBlbXB0eS4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4ARmFpbGVkIHRvIHJlc2l6ZSB0aGUgcmVkbyBsb2cgc3luY2hyb25vdXNseSwgYmVjYXVzZSBJbm5vREIgZmFpbGVkIHRvIHJlYWNoIHN0YXRlIGluIHdoaWNoIHJlZG8gbG9nIGlzIGxvZ2ljYWxseSBlbXB0eS4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AVGhlIHJlZG8gbG9nIGZpbGUgJXMgY29tZXMgZnJvbSBvdGhlciBkYXRhIGRpcmVjdG9yeSB0aGFuIHJlZG8gbG9nIGZpbGUgJXMuAFRoZSByZWRvIGxvZyBmaWxlICVzIGhhcyBpbnZhbGlkIHN0YXJ0X2xzbiAlbGx1LgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBoYXMgc3RhcnRfbHNuICVsbHUgYnV0IGV4cGVjdGVkICVsbHUgKGVuZF9sc24gb2YgdGhlIHByZXZpb3VzIHJlZG8gbG9nIGZpbGUpLgBNaXNzaW5nIHJlZG8gbG9nIGZpbGUgJXMgKHdpdGggc3RhcnRfbHNuID0gJWxsdSkuAFRoZSBsYXRlc3QgZm91bmQgY2hlY2twb2ludCBpcyBhdCBsc24gPSAlbGx1IGluIHJlZG8gbG9nIGZpbGUgJXMuAFVzZXIgaGFzIHNldCBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgdG8gJWxsdU0uAFJlZG8gbG9nIGhhcyBiZWVuIHJlcXVlc3RlZCB0byByZXNpemUgZnJvbSAlbGx1TSB0byAlbGx1TS4AUmVkbyBsb2cgcmVzaXplIGhhcyBiZWVuIGNhbmNlbGxlZC4AUmVkbyBsb2cgaGFzIGJlZW4gcmVzaXplZCB0byAlbGx1TS4AVXBncmFkaW5nIHJlZG8gbG9nOiAlbGx1TSwgTFNOPSVsbHUuAE1hcmtlZCB0aGUgY3VycmVudCByZWRvIGxvZyBmaWxlICVzIGFzIGluY29tcGxldGUuAEZhaWxlZCB0byByZW1vdmUgcmVkbyBsb2cgZmlsZSAlcy4ARmFpbGVkIHRvIHJlbmFtZSAlcyB3aGVuIGNyZWF0aW5nIHJlZG8gbG9nIGZpbGUgJXMgKGVycm9yOiAlZCkAUmVkbyBsb2cgZmlsZXMgY3JlYXRlZCBieSB1bmtub3duIGNyZWF0b3IgJXMuAEZvdW5kIGV4aXN0aW5nIHJlZG8gbG9nIGZpbGVzLCBidXQgYXQgbGVhc3Qgb25lIGlzIG1pc3NpbmcuIEl0IGlzIHVua25vd24gaWYgcmVjb3ZlcnkgY291bGQgcmVhY2ggcGh5c2ljYWxseSBjb25zaXN0ZW50IHN0YXRlLiBQbGVhc2UgY29uc2lkZXIgcmVzdG9yaW5nIGZyb20gYmFja3VwIG9yIHByb3ZpZGluZyAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeSA+IDAuAEZvdW5kIHJlZG8gbG9nIGZpbGUgJXMgd2hpY2ggaGFzIGZvcm1hdCAodiVsdSkgYW5kIGlzIHN0b3JlZCBvdXRzaWRlICNpbm5vZGJfcmVkby4ARm91bmQgcmVkbyBsb2cgZmlsZSAlcyB3aGljaCBoYXMgZm9ybWF0ICh2JWx1KSBhbmQgaXMgc3RvcmVkIGluc2lkZSAjaW5ub2RiX3JlZG8uAEZvdW5kIHJlZG8gbG9nIGZpbGVzIHdpdGggZGlmZmVyZW50IGZvcm1hdHM6ICVzIGhhcyBmb3JtYXQgdiVsdSwgJXMgaGFzIGZvcm1hdCB2JWx1LgBNaXNzaW5nIGliX2xvZ2ZpbGUwIGluIHRoZSBkaXJlY3RvcnkgJXMuAEZhaWxlZCB0byBpbml0aWFsaXplIHNlcnZpY2VzIHJlcXVpcmVkIHRvIGhhbmRsZSByZWRvIGxvZyBQRlMgdGFibGVzLgBGYWlsZWQgdG8gY3JlYXRlIHJlZG8gbG9nIFBGUyB0YWJsZXMuAFRydW5jYXRpbmcgcmVkbyBsb2cgZmlsZSAlcy4uLgBGYWlsZWQgdG8gcmVzaXplIHVudXNlZCByZWRvIGxvZyBmaWxlICVzIHRvICVsbHUgTUIgKCVzKS4ARmFpbGVkIHRvIHJlbW92ZSB1bnVzZWQgcmVkbyBsb2cgZmlsZSAlcy4ARmFpbGVkIHRvIHJlbmFtZSB1bnVzZWQgcmVkbyBsb2cgZmlsZSAlcyB0byAlcy4ARmFpbGVkIHRvIG1hcmsgdW51c2VkIHJlZG8gbG9nIGZpbGUgJXMgYXMgaW4gdXNlIChieSByZW5hbWluZyB0byAlcykuAEZhaWxlZCB0byBtYXJrIHJlZG8gbG9nIGZpbGUgJXMgYXMgdW51c2VkIChieSByZW5hbWluZyB0byAlcykuAE9wdGlvbiBpbm5vZGJfZGVkaWNhdGVkX3NlcnZlciBpcyBpZ25vcmVkIGZvciBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHksIGJlY2F1c2UgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LCBpbm5vZGJfbG9nX2ZpbGVfc2l6ZSBvciBpbm5vZGJfbG9nX2ZpbGVzX2luX2dyb3VwIGlzIHNwZWNpZmllZCBleHBsaWNpdGx5LiBSZWRvIGxvZyBjYXBhY2l0eTogJWxsdU0uAERlcHJlY2F0ZWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGlubm9kYl9sb2dfZmlsZV9zaXplIGFuZC9vciBpbm5vZGJfbG9nX2ZpbGVzX2luX2dyb3VwIGhhdmUgYmVlbiB1c2VkIHRvIGNvbXB1dGUgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5PSVsbHUuIFBsZWFzZSB1c2UgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5IGluc3RlYWQuAFRoaXMgbWVtYmVyIHdhcyB1bmFibGUgdG8gbG9nIHRoZSBWaWV3X2NoYW5nZV9sb2dfZXZlbnQgaW50byB0aGUgYmluYXJ5IGxvZywgaGVuY2UgaXQgd2lsbCBsZWF2ZSB0aGUgZ3JvdXAuIFBsZWFzZSBjaGVjayB0aGF0IHRoZXJlIGlzIGF2YWlsYWJsZSBkaXNrIHNwYWNlIGFuZCBhZGQgdGhlIG1lbWJlciBiYWNrIHRvIHRoZSBncm91cC4ARm91bmQgaW52YWxpZCBldmVudCBzZXF1ZW5jZSB3aGlsZSByZWNvdmVyaW5nIGZyb20gYmluYXJ5IGxvZyBmaWxlICclcycsIGJldHdlZW4gcG9zaXRpb25zICVsbHUgYW5kICVsbHU6ICVzLiBUaGUgcmVjb3ZlcnkgcHJvY2VzcyB3YXMgc3RvcHBlZCBlYXJseSBhbmQgbm8gdHJhbnNhY3Rpb24gd2FzIHJlY292ZXJlZC4gU2lkZSBlZmZlY3RzIG1heSBiZSB0cmFuc2FjdGlvbnMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlIGJldHdlZW4gdGhlIGJpbmFyeSBsb2cgYW5kIHRoZSBzdG9yYWdlIGVuZ2luZXMsIG9yIHRyYW5zYWN0aW9ucyBrZXB0IGJ5IHN0b3JhZ2UgZW5naW5lcyBpbiBhIHByZXBhcmVkIHN0YXRlIChwb3NzaWJseSBob2xkaW5nIGxvY2tzKS4gRWl0aGVyIGZpeCB0aGUgaXNzdWVzIHdpdGggdGhlIGJpbmFyeSBsb2cgb3IsIHRvIHJlbGVhc2UgcG9zc2libHkgYWNxdWlyZWQgbG9ja3MsIGRpc2FibGUgdGhlIGJpbmFyeSBsb2cgZHVyaW5nIHNlcnZlciByZWNvdmVyeS4gTm90ZSB0aGF0IGRpc2FibGluZyB0aGUgYmluYXJ5IGxvZyBtYXkgbGVhZCB0byBsb3NzIG9mIHRyYW5zYWN0aW9ucyB0aGF0IHdlcmUgYWxyZWFkeSBhY2tub3dsZWRnZWQgYXMgc3VjY2Vzc2Z1bCB0byBjbGllbnQgY29ubmVjdGlvbnMgYW5kIG1heSBoYXZlIGJlZW4gcmVwbGljYXRlZCB0byBvdGhlciBzZXJ2ZXJzIGluIHRoZSB0b3BvbG9neS4AU3RvcmFnZSBlbmdpbmVzIGZhaWxlZCB0byByZWNvdmVyIG9uZSBvciBtb3JlIHRyYW5zYWN0aW9ucy4gVGhlIHJlY292ZXJ5IHByb2Nlc3Mgd2FzIHN0b3BwZWQgZWFybHksIGNoZWNrIHByZXZpb3VzIG1lc3NhZ2VzIGZvciB0aGUgZGV0YWlscyBvbiBmYWlsZWQgdHJhbnNhY3Rpb25zLiBTaWRlIGVmZmVjdHMgbWF5IGJlIHRyYW5zYWN0aW9ucyBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgYmV0d2VlbiB0aGUgYmluYXJ5IGxvZyBhbmQgdGhlIHN0b3JhZ2UgZW5naW5lcywgb3IgdHJhbnNhY3Rpb25zIGtlcHQgYnkgc3RvcmFnZSBlbmdpbmVzIGluIGEgcHJlcGFyZWQgc3RhdGUgKHBvc3NpYmx5IGhvbGRpbmcgbG9ja3MpLiBFaXRoZXIgZml4IHRoZSBpc3N1ZXMgd2l0aCB0aGUgc3RvcmFnZSBlbmdpbmUgKG91dC1vZi1tZW1vcnksIG5vIGRpc2sgc3BhY2UsIGV0Yykgb3IsIHRvIHJlbGVhc2UgcG9zc2libHkgYWNxdWlyZWQgbG9ja3MgaGVsZCBieSBYQSB0cmFuc2FjdGlvbnMsIGRpc2FibGUgdGhlIGJpbmFyeSBsb2cgZHVyaW5nIHNlcnZlciByZWNvdmVyeSBhbmQgY2hlY2sgY29uc2lzdGVuY3kgYmV0d2VlbiBzdG9yYWdlIGVuZ2luZXMgYW5kIGJpbmFyeSBsb2cgZmlsZXMuAENyYXNoIHJlY292ZXJ5IGZpbmlzaGVkIGluICVzIGVuZ2luZS4gJXMARmFpbGVkIHRvIGNvbW1pdCAlcyBpbiAlcywgd2l0aCBmYWlsdXJlIGNvZGUgJXMuAEZhaWxlZCB0byByb2xsYmFjayAlcyBpbiAlcywgd2l0aCBmYWlsdXJlIGNvZGUgJXMuAEZhaWxlZCB0byBwcmVwYXJlICVzIGluICVzLCB3aXRoIGZhaWx1cmUgY29kZSAlcy4AQ2Fubm90IHJlZ2lzdGVyIHZhcmlhYmxlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCBpcyBub3QgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IGFub3RoZXIgY29tcG9uZW50LgBDYW5ub3QgdW5yZWdpc3RlciB2YXJpYWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgd2FzIHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gdGhlIGZpcnN0IHBsYWNlLgBDYW5ub3QgcmVnaXN0ZXIgZnVuY3Rpb24gJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQuAENhbm5vdCB1bnJlZ2lzdGVyIGZ1bmN0aW9uICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAEludmFsaWQgYXJndW1lbnRzIHRvIGZ1bmN0aW9uICclcycuIEV4cGVjdGVkIHZhbHVlczogJXMuAEludmFsaWQgYWxnb3JpdGhtIHZhbHVlICclLjIwcycgaW4gZnVuY3Rpb24gJXMuAEludmFsaWQga2V5IGxlbmd0aCAnJWQnIGZvciBmdW5jdGlvbiAnJXMnIHdpdGggYWxnb3JpdGhtICclLjIwcycuIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgYmV0d2VlbiBbJWQsICVkXS4ARmFpbGVkIHRvIGdlbmVyYXRlIHByaXZhdGUga2V5IG9mIGxlbmd0aCAnJWQnIHdpdGggYWxnb3JpdGhtICclLjIwcycgaW4gZnVuY3Rpb24gJyVzJy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGJlZW4gbG9nZ2VkIGJlZm9yZSB0aGlzIG1lc3NhZ2UuAEZhaWxlZCB0byBnZW5lcmF0ZSBwdWJsaWMga2V5IHdpdGggYWxnb3JpdGhtICclLjIwcycgZm9yIGdpdmVuIHByaXZhdGUga2V5IGluIGZ1bmN0aW9uICclcycuIE1vcmUgZGV0YWlscyBhYm91dCB0aGUgZXJyb3Igd291bGQgaGF2ZSBiZWVuIGxvZ2dlZCBiZWZvcmUgdGhpcyBtZXNzYWdlLgBJbnZhbGlkIGRhdGEgbGVuZ3RoICclZCcgKGluIGJ5dGVzKSBmb3IgZnVuY3Rpb24gJyVzJyB3aXRoIGFsZ29yaXRobSAnJS4yMHMnLiBUaGUgbWF4aW11bSBzdXBwb3J0IGRhdGEgbGVuZ3RoIGZvciBnaXZlbiBwcml2YXRlIGtleSBpcyAlZCAoaW4gYnl0ZXMpLgBDb3VsZCBub3QgZW5jcnlwdCBkYXRhIGluIGZ1bmN0aW9uICclcycgdXNpbmcgYWxnb3JpdGhtICclLjIwcycuIERhdGEgbGVuZ3RoIHdhcyAnJWQnIGJ5dGVzLiBNb3JlIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yIHdvdWxkIGhhdmUgYmVlbiBsb2dnZWQgYmVmb3JlIHRoaXMgbWVzc2FnZS4AQ291bGQgbm90IGRlY3J5cHQgZGF0YSBpbiBmdW5jdGlvbiAnJXMnIHVzaW5nIGFsZ29yaXRobSAnJS4yMHMnLiBEYXRhIGxlbmd0aCB3YXMgJyVkJyBieXRlcy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGJlZW4gbG9nZ2VkIGJlZm9yZSB0aGlzIG1lc3NhZ2UuAENvdWxkIG5vdCBzaWduIGRhdGEgaW4gZnVuY3Rpb24gJyVzJyB1c2luZyBhbGdvcml0aG0gJyUuMjBzJyBhbmQgZGlnZXN0IHR5cGUgJyUuMjBzJy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGxvZ2dlZCBiZWZvcmUgdGhpcyBtZXNzYWdlLgBSZWNlaXZlZCBPcGVuU1NMIGVycm9yIGluIGZ1bmN0aW9uICclcycgZm9yIGFsZ29yaXRobSAnJXMnOiAnJXMnAEluIGZ1bmN0aW9uICclcycgd2l0aCBhbGdvcml0aG0gJyVzJzogaW5zdWZmaWNpZW50IG91dHB1dCBidWZmZXIgbGVuZ3RoICclenUnLiBSZXF1aXJlZCBsZW5ndGggJyV6dScuACVzJXMAU2V0dGluZyBzZXNzaW9uIHZhbHVlcyBmb3Igc3lzdGVtIHZhcmlhYmxlcyBvbmx5IG1ha2VzIHNlbnNlIGluIGEgdXNlciBzZXNzaW9uIChmYWlsZWQgdG8gc2V0ICclLjI1NnMnKS4AQnVpbGRJRFtzaGExXT0lcwBGYWlsZWQgdG8gcmVnaXN0ZXIgZHluYW1pYyBwcml2aWxlZ2UgJXMuAFJlZG8gbG9nIHdyaXRlciBpcyB3YWl0aW5nIGZvciAlcyByZWRvIGxvZyBjb25zdW1lciB3aGljaCBpcyBjdXJyZW50bHkgcmVhZGluZyBMU049JWxsdSBwcmV2ZW50aW5nIHJlY2xhbWF0aW9uIG9mIHN1YnNlcXVlbnQgcG9ydGlvbiBvZiB0aGUgcmVkbyBsb2cuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgAlcwBSZWNvdmVyeTogR2VuZXJhdGluZyBpbmRleCBpbmZvcm1hdGlvbiBmb3IgSU5TVEFOVCBEREwgVGFibGUgaW4gOC4wLjI5IGZvcm1hdABGYWlsZWQgdG8gc3dpdGNoIHJlc291cmNlIGdyb3VwLiAlcwBGYWlsZWQgdG8gc3dpdGNoIHJlc291cmNlIGdyb3VwLiBDb3VsZCBub3QgYWNxdWlyZSByZXNvdXJjZSBncm91cHMgZ2xvYmFsIGxvY2suAEZhaWxlZCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAuIENvdWxkIG5vdCBhY3F1aXJlIGxvY2sgb24gcmVzb3VyY2UgZ3JvdXAgJXMuAEZhaWxlZCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAuIFVuYWJsZSB0byBhcHBseSByZXNvdXJjZSBncm91cCBjb250cm9sbGVyICVzLgBGYWlsZWQgdG8gY2xlYXIgaW5zdGFudCBkcm9wIGNvbHVtbiBtZXRhZGF0YSBmb3IgdGFibGUgJXMAQ2Fubm90IG9wZW4gc2lnbmluZyBrZXkgZmlsZSAlcy4AT3V0IG9mIG1lbW9yeSEgQ2Fubm90IGNyZWF0ZSBwcml2YXRlIGtleS4AQ2Fubm90IHJlYWQgc2lnbmluZyBrZXkgZmlsZSAlcy4ASW5jb21wbGV0ZSBrZXk6IG1pc3NpbmcgTmFtZS9UeXBlIGZvciB0aGUgS2V5OiAlcy4ARHVwbGljYXRlIGtleSBmb3VuZCBpbiBrZXlyaW5nIHdpdGggTmFtZTogJXMgYW5kIE93bmVyOiAlcy4ARXJyb3IgcGFyc2luZyBKU09OIHJlc3BvbnNlICVzLgBJbnZhbGlkIEpTT04gcmVzcG9uc2UhAEhUVFAgcmVxdWVzdCBmYWlsZWQgd2l0aCBlcnJvcjogJyVzJwBWYXJpYWJsZSB0aHJlYWRfcG9vbC4lcyB3YXMgdXBkYXRlZDogJXMAJXMAU3RhdHVzIGNvZGUgJXU6IENvbXBsZXRlZABTdGF0dXMgY29kZSAldTogJXUlJSBjb21wbGV0ZQBTdGF0dXMgY29kZSAldTogJXMASW52YWxpZCB2YWx1ZSBzZXQgdG8gdGhyZWFkX3Bvb2xfcXVlcnlfdGhyZWFkc19wZXJfZ3JvdXAuIFZhbGlkIHZhbHVlIHJhbmdlIGlzICV1IC0gJXUuAFF1ZXJ5IHRocmVhZHMgY291bnQoJXUpIGV4Y2VlZHMgdHJhbnNhY3Rpb24gdGhyZWFkcyBsaW1pdCgldSkgcGVyIGdyb3VwLiBQbGVhc2UgdXNlIHF1ZXJ5IHRocmVhZHMgY291bnQgcGVyIGdyb3VwIHNtYWxsZXIgb3IgZXF1YWwgdG8gbWF4IHRyYW5zYWN0aW9uIHRocmVhZHMgbGltaXQgcGVyIGdyb3VwAEZvdW5kIHBhZ2UgdHlwZSBtaXNtYXRjaC4gRXhwZWN0ZWQgJXUsIGZvdW5kICV1LCBpbiBwYWdlOiBzcGFjZV9pZD0lbHUgcGFnZV9ubz0gJWx1AHByZWFkZXI6IHNwYWNlX2lkPSV6dSwgdGFibGU9JXMsIGluZGV4PSVzLCBzY2FuX2N0eD0lenUsIGN0eD0lenUsIHRocmVhZF9pZD0lenUsIG5fdGhyZWFkcz0lenUAYnVsa2xvYWQ6IHNwYWNlX2lkPSV6dSwgdGFibGU9JXMsIGluZGV4PSVzLCBoZWlnaHQ9JXp1LCBuX2V4dGVudHM9JXp1LCBuX3BhZ2VzPSV6dQBidWxrZmx1c2hlcjogc2xlZXBfY291bnQ9JXp1LCBzbGVlcF9kdXJhdGlvbj0lenUgbWlsbGlzZWNvbmRzLCB0b3RhbF9zbGVlcD0lenUgbWlsbGlzZWNvbmRzLCBwYWdlc19mbHVzaGVkPSV6dQAlczogT3ZlciA2NyBwZXJjZW50IG9mIHRoZSBidWZmZXIgcG9vbCAoY3Vycl9zaXplPSV6dSBNQikgaXMgb2NjdXBpZWQgYnkgbG9jayBoZWFwcyBvciB0aGUgYWRhcHRpdmUgaGFzaCBpbmRleCBvciBCVUZfQkxPQ0tfTUVNT1JZIHBhZ2VzLiBDaGVjayB0aGF0IHlvdXIgdHJhbnNhY3Rpb25zIGRvIG5vdCBzZXQgdG9vIG1hbnkgcm93IGxvY2tzLiBNYXliZSB5b3Ugc2hvdWxkIG1ha2UgdGhlIGJ1ZmZlciBwb29sIGJpZ2dlcj8uIFN0YXJ0aW5nIHRoZSBJbm5vREIgTW9uaXRvciB0byBwcmludCBkaWFnbm9zdGljcy4AJXM6IE92ZXIgOTUgcGVyY2VudCBvZiB0aGUgYnVmZmVyIHBvb2wgKGN1cnJfc2l6ZT0lenUgTUIpIGlzIG9jY3VwaWVkIGJ5IGxvY2sgaGVhcHMgb3IgdGhlIGFkYXB0aXZlIGhhc2ggaW5kZXggb3IgQlVGX0JMT0NLX01FTU9SWSBwYWdlcy4gQ2hlY2sgdGhhdCB5b3VyIHRyYW5zYWN0aW9ucyBkbyBub3Qgc2V0IHRvbyBtYW55IHJvdyBsb2Nrcy4gTWF5YmUgeW91IHNob3VsZCBtYWtlIHRoZSBidWZmZXIgcG9vbCBiaWdnZXI/LiBXZSBpbnRlbnRpb25hbGx5IGdlbmVyYXRlIGEgc2VnIGZhdWx0IHRvIHByaW50IGEgc3RhY2sgdHJhY2Ugb24gTGludXghACVzOiB0YWJsZT0lcywgaW5kZXg9JXMsIG5fdW5pcT0lenUsIG5fZmllbGRzPSV6dSwgbGhzPSglcyksIHJocz0oJXMpAEZhaWxlZCB0byBhcHBseSByb3cgZXZlbnQgd2l0aCAlZCBjb2x1bW5zLCBvcmlnaW5hdGluZyBmcm9tIGEgc2VydmVyIG9mIHZlcnNpb24gJXMgb24gdGFibGUgJyUtLjE5MnMuJS0uMTkycycsIHdoaWNoIGhhcyAlZCBjb2x1bW5zLCBvbmUgb2Ygd2hpY2ggaXMgYSBnZW5lcmF0ZWQgaW1wbGljaXQgcHJpbWFyeSBrZXkuIFJlcGxpY2F0aW9uIGlzIHVuc3VwcG9ydGVkIHdoZW4gdGhlIHNvdXJjZSBzZXJ2ZXIgaXMgb2xkZXIgdGhhbiA4LjAuMzAsIHRoZSByZXBsaWNhIHRhYmxlIGhhcyBhIGdlbmVyYXRlZCBpbXBsaWNpdCBwcmltYXJ5IGtleSwgYW5kIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBpbiBjb2x1bW4gY291bnQsIG5vdCBjb3VudGluZyB0aGUgcmVwbGljYSdzIGdlbmVyYXRlZCBpbXBsaWNpdCBwcmltYXJ5IGtleS4gQWxpZ24gdGhlIHRhYmxlIHNjaGVtYXMgb24gc291cmNlIGFuZCByZXBsaWNhLCBhbmQgcmVzdGFydCByZXBsaWNhdGlvbi4AQnVsayBleGVjdXRvcjogJXMAQnVsayBsb2FkZXI6ICVzAFRoZSBmaXJzdCBmaWxlIGJlaW5nIGxvYWRlZCBjb250YWluZWQgbGVzcyBsaW5lcyB0aGFuIHRoZSBpZ25vcmUgY2xhdXNlAEJ1bGsgcmVhZGVyOiAlcwBCdWxrIHJlYWRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBsaWJjdXJsAEJ1bGsgcmVhZGVyIGdvdCBsaWJjdXJsIGVycm9yOiAlcwBCdWxrIHJlYWRlciBnb3QgZXJyb3IgcmVzcG9uc2UgZnJvbSBzZXJ2ZXI6ICVsZABCdWxrIHJlYWRlciBnb3QgZXJyb3IgaW4gY29tbXVuaWNhdGlvbiB3aXRoIHNvdXJjZSBzZXJ2ZXIsIGNoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGFkZGl0aW9uYWwgZGV0YWlscwBNaXNzaW5nIEVOQ0xPU0VEIEJZIGNoYXJhY3RlciBhdCByb3cgJWxkIGluIGZpbGUgJXMuIEFkZCBPUFRJT05BTExZIHRvIHRoZSBFTkNMT1NFRCBCWSBjbGF1c2UgdG8gYWxsb3cgdGhpcyBpbnB1dC4AVGhlIG51bWJlciBvZiBpbnB1dCBjb2x1bW5zIHRoYXQgbmVlZCB0byBiZSBidWZmZXJlZCBmb3IgcGFyc2luZyBleGNlZWRlZCBwcmVkZWZpbmVkIGJ1ZmZlciBtYXggc2l6ZSBmb3IgZmlsZSAnJXMnLgBUaGUgY29sdW1uIGRhdGEgdGhhdCBuZWVkZWQgdG8gYmUgY29waWVkIGR1ZSB0byBlc2NhcGVkIGNoYXJhY3RlcnMgZXhjZWVkZWQgdGhlIHNpemUgb2YgdGhlIGludGVybmFsIGNvcHkgYnVmZmVyIGZvciBmaWxlICclcycuAFVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBEYXRhIGZvciBzb21lIGNvbHVtbnMgaXMgbWlzc2luZy4AVW5leHBlY3RlZCByb3cgdGVybWluYXRvciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4gRGF0YSBmb3Igc29tZSBjb2x1bW5zIGlzIG1pc3NpbmcuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBlbmRpbmcgRU5DTE9TRUQgQlkgY2hhcmFjdGVyIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgTlVMTCBlc2NhcGUgKE4pIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgY29sdW1uIHRlcm1pbmF0b3IgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnIHJlc3VsdGluZyBpbiBpbmNvbXBsZXRlIGVzY2FwZSBzZXF1ZW5jZS4ASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnIGZvciBjb2x1bW4gJyUtLjE5MnMnIGF0IHJvdyAlbGQgaW4gZmlsZSAnJS0uMTkycycATlVMTCBzdXBwbGllZCB0byBOT1QgTlVMTCBjb2x1bW4gJyVzJyBhdCByb3cgJWxkIGluIGZpbGUgJyUtLjE5MnMnACVzOiBMT0FEIEJVTEsgREFUQSB0aHJlYWQgZmFpbHVyZSAoZXJyPSVsdSksIHRhYmxlPSVzLCBpbmRleD0lcwAlczogRmFpbGVkIHRvIG1lcmdlIHN1Yi10cmVlcyBpbiBMT0FEIEJVTEsgREFUQSwgdGFibGU9JXMsIGluZGV4PSVzLCBkZXRhaWxzPSVzAExPQUQgQlVMSyBEQVRBOiBCdWZmZXIgcG9vbCBzaXplIGlzICV6dS4gUmVkdWNpbmcgY29uY3VycmVuY3kgZnJvbSAlenUgdG8gJXp1LiB0YWJsZT0lcy4AQysrIEV4Y2VwdGlvbiBjYXVnaHQgd2hpbGUgJXMgdGhlICVzIHBsdWdpbjogWyVzXQBSZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGFwcGVhcnMgdG8gYmUgY29ycnVwdGVkLiBPbiBHcm91cCBSZXBsaWNhdGlvbiBjaGFubmVsICclcycsIHNldHRpbmcgUkVRVUlSRV9UQUJMRV9QUklNQVJZX0tFWV9DSEVDSyB0byAnR0VORVJBVEUnIGlzIG5vdCBhbGxvd2VkLiBSdW4gUkVTRVQgUkVQTElDQSBBTEwgdG8gcmVzZXQgaXQuAFJlY29yZCBoYXMgYm90aCBpbnN0YW50IGFuZCB2ZXJzaW9uIGJpdCBzZXQuAFRoaXMgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGdyb3VwX3JlcGxpY2F0aW9uX3BheG9zX3NpbmdsZV9sZWFkZXIgb3B0aW9uIHZhbHVlIG9mIDEgYW5kIGl0IGlzIHRyeWluZyB0byBqb2luIGEgZ3JvdXAgd2l0aCBDb21tdW5pY2F0aW9uIFByb3RvY29sIFZlcnNpb24gYmVsb3cgOC4wLjI3LiBJbiBvcmRlciB0byBqb2luIHRoaXMgZ3JvdXAsIGdyb3VwX3JlcGxpY2F0aW9uX3BheG9zX3NpbmdsZV9sZWFkZXIgdmFsdWUgbXVzdCBiZSBjb25maWd1cmVkIHRvIHRoZSB2YWx1ZSAwLiBUaGlzIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ASWdub3JlZCB0aGUgaW5ub2RiLXJlZG8tbG9nLWNhcGFjaXR5IG9wdGlvbiBpbiB0aGUgSW5ub2RiIHJlYWQtb25seSBtb2RlLiBTZXJ2ZXIgaXMgdXNpbmcgYWN0aXZlIHJlZG8gbG9nIGZpbGVzLgBVbmV4cGVjdGVkIElOU1RBTlRMWSBBZGRlZCAvIERyb3BwZWQgY29sdW1uOiAnJXMnIGF0IHBvc2l0aW9uICVsdSBmb3IgVGFibGUgJyVzJywgSW5kZXggJyVzJyB3aGlsZSBnZXR0aW5nIFByaW1hcnkgS2V5IGZvciByb3cgbG9nZ2luZwAlcwBDb2x1bW4gbmFtZSAlcyBhbmQgaW50ZXJuYWxseSBnZW5lcmF0ZWQgSU5TVEFOVCBEUk9QIGNvbHVtbiBuYW1lICVzIGlzIGNhdXNpbmcgYSBjb25mbGljdC4ARmllbGQgbnVtYmVyOiAlbGx1IHRvbyBsYXJnZSwgVG90YWwgZmllbGRzIGluIFJlY29yZDogJXp1LgAlcwBUaGUgY29ubmVjdGlvbiBoYXMgdGltZWQgb3V0IGFmdGVyICVsdSByZXRyaWVzIGNvbm5lY3RpbmcgdG8gJyVzQCVzOiVkJyVzLCBhbmQgdGhlcmVmb3JlIHRoZSBNeVNRTCBzZXJ2ZXIgaXMgZ29pbmcgdG8gYXR0ZW1wdCBhbiBhc3luY2hyb25vdXMgcmVwbGljYXRpb24gY29ubmVjdGlvbiBmYWlsb3ZlciwgdG8gJyVzQCVzOiVkJwBUaGUgUmVwbGljYSB3aGljaCB3YXMgY29ubmVjdGVkIHRvIHNvdXJjZSAnJXM6JWQnLCBpcyBub3cgY29ubmVjdGVkIHRvIG5ldyBzb3VyY2UgJyVzOiVkJywgYnV0IHN0aWxsIGhhcyB0aGUgc2FtZSBzZXJ2ZXJfdXVpZCAlcy4AVGhlIHNlcnZlcl91dWlkIGZvciBzb3VyY2Ugc2VydmVyICclczolZCcgaGFzIGNoYW5nZWQgZnJvbSAlcyB0byAlcy4gVGhpcyBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3MgeW91IGhhdmUgY2hhbmdlZCBpdCBtYW51YWxseS4AVGhlIHNvdXJjZSBzZXJ2ZXIgaGFzIGNoYW5nZWQgZnJvbSAnJXM6JWQnIHdpdGggc2VydmVyX3V1aWQgJXMsIHRvICclczolZCcgd2l0aCBzZXJ2ZXJfdXVpZCAlcy4AUmVwbGljYSByZWNlaXZlciB0aHJlYWQlczogY29ubmVjdGVkIHRvIHNvdXJjZSAnJXNAJXM6JWQnIHdpdGggc2VydmVyX3V1aWQ9JXMsIHNlcnZlcl9pZD0lZC4gU3RhcnRpbmcgcmVwbGljYXRpb24gZnJvbSBmaWxlICclcycsIHBvc2l0aW9uICclcycuAFJlcGxpY2EgcmVjZWl2ZXIgdGhyZWFkJXM6IGNvbm5lY3RlZCB0byBzb3VyY2UgJyVzQCVzOiVkJyB3aXRoIHNlcnZlcl91dWlkPSVzLCBzZXJ2ZXJfaWQ9JWQuIFN0YXJ0aW5nIEdUSUQtYmFzZWQgcmVwbGljYXRpb24uAExvYWRlcjo6YnVpbGRfYWxsKCk6IENvbXBsZXRlZCBidWlsZGluZyAlenUgaW5kZXhlcyBmb3Igb2xkX3RhYmxlPSVzLCBuZXdfdGFibGU9JXMsIGVycj0lenUuAEJ1aWxkZXI6OmZpbmlzaCgpOiBDb21wbGV0ZWQgYnVpbGRpbmcgaW5kZXg9JXMgb2YgdGFibGU9JXMsIGVycj0lenUuACVzOiAnJXMnIGlzIGEgdXNlciBkZWZpbmVkIGNvbGxhdGlvbi4gVXNlciBkZWZpbmVkIGNvbGxhdGlvbnMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBhIGNvbXBpbGVkIGNvbGxhdGlvbiBpbnN0ZWFkLgBCdWlsZGVyOjppbml0KCk6IEluaXRpYWxpemUgZm9yIGJ1aWxkaW5nIGluZGV4PSVzIG9mIHRhYmxlPSVzLCBuX3RocmVhZHM9JXp1LCBzb3J0IGJ1ZmZlciBzaXplPSV6dSBieXRlcywgaS9vIGJ1ZmZlciBzaXplPSV6dSBieXRlcy4AU0VMRUNUIENPVU5UKCopIEZST00gdGFibGU9JXMsIG5fdGhyZWFkcz0lenUsIG5fcGFydGl0aW9ucz0lenUuAEluZGV4IGxvZyB2ZXJzaW9uICV1IGRpZCBub3QgbWF0Y2guIE1heCBpbmRleCB2ZXJzaW9uIGlzICV1LiBSZWNvdmVyeSBjYW4ndCBjb250aW51ZS4gUGxlYXNlIG1ha2Ugc3VyZSBzZXJ2ZXIgaXMgbm90IHN0YXJ0aW5nIHVwIHdpdGggdGhlIGRhdGFkaXIgZ2VuZXJhdGVkIGluIGZ1dHVyZSB2ZXJzaW9uLgBNdWx0aXBsZSBrZXlyaW5nIGNvbXBvbmVudCBVUk5zICclcycgZm91bmQgaW4gbWFuaWZlc3QgZmlsZSAnJXMnLiBPbmx5IG9uZSBrZXlyaW5nIGNvbXBvbmVudCBjYW4gYmUgbG9hZGVkIGF0IGEgdGltZS4AUGx1Z2luICdncm91cF9yZXBsaWNhdGlvbicgaGFzIGJlZW4gc3RhcnRlZC4ATWluaW11bSByZWNvcmQgZmxhZyBpcyB3cm9uZ2x5IHNldCB0byByZWMgb24gcGFnZSAnJWx1JyBhdCBsZXZlbCAnJWx1JyBmb3IgaW5kZXggJyVzJyBvZiB0YWJsZSAnJXMnLgBNaW5pbXVtIHJlY29yZCBmbGFnIGlzIG5vdCBzZXQgdG8gZmlyc3QgcmVjIG9uIHBhZ2UgJyVsdScgYXQgbGV2ZWwgJyVsdScgZm9yIGluZGV4ICclcycgb2YgdGFibGUgJyVzJy4AU3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQgc2xvdCAnJWQnIGZvciBjb21wb25lbnQgJyVzJy4AU3VjY2Vzc2Z1bGx5IGRlLXJlZ2lzdGVyZWQgc2xvdCAnJWQnIGZyb20gY29tcG9uZW50ICclcycuAENhbm5vdCBmcmVlIHJlc291cmNlcyBzdG9yZWQgYnkgY29tcG9uZW50ICclcycgaW4gdGhyZWFkIHdpdGggSUQ6ICclZCcuIENvbXBvbmVudCBmYWlsZWQgdG8gZnJlZSByZXF1aXJlZCByZXNvdXJjZXMuAFRyYW5zYWN0aW9uIElEOiAlbHUgZm91bmQgZm9yIHJlc3VycmVjdGluZyBpbnNlcnRzAFRyYW5zYWN0aW9uIElEOiAlbHUgZm91bmQgZm9yIHJlc3VycmVjdGluZyB1cGRhdGVzAElkZW50aWZpZWQgdGFibGUgSUQ6ICVsdSB0byBhY3F1aXJlIGxvY2sAQWNxdWlyZWQgbG9jayBvbiB0YWJsZSBJRDogJWx1LCBuYW1lOiAlcwBSZWNvcmRzIHJlYWQ6ICVsdSAtIFBhZ2VzIHJlYWQ6ICVsdQBUb3RhbCByZWNvcmRzIHJlc3VycmVjdGVkOiAlbHUgLSBUb3RhbCBwYWdlcyByZWFkOiAlbHUgLSBUb3RhbCB0YWJsZXMgYWNxdWlyZWQ6ICVsdQBSZXN1cnJlY3RlZCAlbHUgdHJhbnNhY3Rpb25zIGRvaW5nIGluc2VydHMuAFJlc3VycmVjdGVkICVsdSB0cmFuc2FjdGlvbnMgZG9pbmcgdXBkYXRlcy4ASW52YWxpZCBzZWN1cml0eSB0b2tlbiBwcm92aWRlZCBieSAnJXMnIGZvciAnJXMnQCclcyc6ICVzLgBVbmtub3duIHVzZXIvdGVuYW5jeSAodXNlcjogJXMgdGVuYW5jeTogJXMpIGZvdW5kIGluIHNlY3VyaXR5IHRva2VuIHByb3ZpZGVkIGJ5ICclcycgZm9yICclcydAJyVzJy4AVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3Igc2VjdXJpdHkgdG9rZW4gcHJvdmlkZWQgYnkgJyVzJyBmb3IgJyVzJ0AnJXMnIDogJXMuAENvdWxkIG5vdCBkb3dubG9hZCBJRERQIFB1YmxpYyBrZXkuIFBsZWFzZSBjaGVjayBpZiBzZWN1cml0eSB0b2tlbiBwcm92aWRlZCBieSAnJXMnIGZvciAnJXMnQCclcycgaXMgdmFsaWQuAE5vbmUgb2YgdGhlIGdyb3VwcyBleHRyYWN0ZWQgZnJvbSBzZWN1cml0eSB0b2tlbiBtYXRjaGVzIGFueSBvZiB0aGUgZW50cmllcyBmcm9tIGF1dGhlbnRpY2F0aW9uIHN0cmluZy4AQ2Fubm90IHJlZ2lzdGVyIHZhcmlhYmxlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCBpcyBub3QgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IGFub3RoZXIgY29tcG9uZW50LgBDYW5ub3QgdW5yZWdpc3RlciB2YXJpYWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgd2FzIHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gdGhlIGZpcnN0IHBsYWNlLgBDYW5ub3QgcmVnaXN0ZXIgZnVuY3Rpb24gJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgYW5vdGhlciBjb21wb25lbnQuAENhbm5vdCB1bnJlZ2lzdGVyIGZ1bmN0aW9uICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAENhbm5vdCByZWdpc3RlciBwcml2aWxlZ2UgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQuAENhbm5vdCB1bnJlZ2lzdGVyIHByaXZpbGVnZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgd2FzIHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gdGhlIGZpcnN0IHBsYWNlLgBFcnJvciB3aGlsZSBleGVjdXRpbmcgVURGICVzLgBFcnJvciB3aGlsZSBleGVjdXRpbmcgVURGICVzOiAlcy4AJXMgZmFpbGVkLgAlcyBmYWlsZWQgd2l0aCAldS4ATG9jayBmYWlsZWQgYXQgJXMgOiAldS4ATG9jayBmcm9tICVzIDogJXUgZmFpbGVkIHRvIHVubG9jay4ATWFza2luZyBjb21wb25lbnQgZXJyb3I6ICclcycuACVzIGZhaWxlZC4AJXMgZmFpbGVkIGJlY2F1c2UgJXMuAENyZWF0aW9uIG9mIHJhbmRvbSBjb250ZXh0IGZhaWxlZC4AQ3JlYXRpb24gb2YgcmFuZG9tIGNvbnRleHQgZmFpbGVkIGJlY2F1c2UgJXMuAENhbm5vdCBhY2Nlc3MgJXMuJXMgdGFibGUuAENhbm5vdCByZWNvdmVyIGZyb20gZGV0ZWN0X29ubHkgZG91Ymxld3JpdGUgYnVmZmVyIGFzIHBhZ2UgJXUgZnJvbSBiYXRjaCBkb3VibGV3cml0ZSBmaWxlIGlzIGNvcnJ1cHRlZC4ARGF0YWJhc2UgcGFnZSBjb3JydXB0aW9uIG9mIHRhYmxlc3BhY2UgJXMgc3BhY2VfaWQ6ICV1IHBhZ2VfbnVtOiAldS4gQ2Fubm90IHJlY292ZXIgaXQgZnJvbSB0aGUgZG91Ymxld3JpdGUgYnVmZmVyIGJlY2F1c2UgaXQgd2FzIHdyaXR0ZW4gaW4gZGV0ZWN0X29ubHktZG91Ymxld3JpdGUgbW9kZS4AaW5pdF9jb25uZWN0IHZhcmlhYmxlIGlzIGlnbm9yZWQgZm9yIHVzZXI6ICVzIGhvc3Q6ICVzIGR1ZSB0byBtdWx0aS1mYWN0b3IgcmVnaXN0cmF0aW9uIHJlcXVpcmVkIHNhbmRib3hpbmcARXhlY3V0aW9uIG9mIGFsdGVyIHRhYmxlICVzICVzIGZhaWxlZCBiZWNhdXNlICVzLgBUUCBjb25uIChwb3J0OiBtYW5hZ2VkKGRlbHRhKSwgYWN0aXZlLCBvcGVuZWQsIGNsb3NlZCwgYWRkZWQsIGRyb3BwZWQpOiAlcwBTY2hlZHVsZWQgcnVuIG9mIHRhc2sgJXMgZmFpbGVkAEludmFsaWQgZmx1c2ggaW50ZXJ2YWwgc3BlY2lmaWVkOiAlbHUuIFZhbGlkIHZhbHVlcyBhcmUgMCAob2ZmKSBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJWQuIEFkanVzdGluZyB0byAlZABDb3VsZCBub3QgcHVyZ2UgYmluYXJ5IGxvZ3Mgc2luY2UgYW5vdGhlciBzZXNzaW9uIGlzIGV4ZWN1dGluZyBMT0NLIElOU1RBTkNFIEZPUiBCQUNLVVAuIFdhaXQgZm9yIHRoYXQgc2Vzc2lvbiB0byByZWxlYXNlIHRoZSBsb2NrLgBNdWx0aS12YWx1ZXMgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBNeVNRTCBmb3JtYXQ6ICVzAEhlYXAgcmVxdWlyZWQgdG8gY29udmVydCBjb2x1bW5zIGlzIG5vdCBwcmVzZW50LgBNeVNRTCBzZXJ2ZXIgZG93bmdyYWRpbmcgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1Jy4ASW52YWxpZCBNeVNRTCBzZXJ2ZXIgZG93bmdyYWRlOiBDYW5ub3QgZG93bmdyYWRlIGZyb20gJXUgdG8gJXUuIFRhcmdldCBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBpcyBsb3dlciB0aGFuIHRoZSBzZXJ2ZXIgZG93bmdyYWRlIHRocmVzaG9sZCAldS4ASW52YWxpZCBNeVNRTCBzZXJ2ZXIgdXBncmFkZTogQ2Fubm90IHVwZ3JhZGUgZnJvbSAldSB0byAldS4gVGFyZ2V0IE15U1FMIHNlcnZlciB2ZXJzaW9uIGlzIGxvd2VyIHRoYW4gdGhlIHNlcnZlciB1cGdyYWRlIHRocmVzaG9sZCAldS4ASW52YWxpZCBNeVNRTCBzZXJ2ZXIgdXBncmFkZTogQ2Fubm90IHVwZ3JhZGUgZnJvbSAldSB0byAldS4gVXBncmFkZSB0byBuZXh0IG1ham9yIHZlcnNpb24gaXMgb25seSBhbGxvd2VkIGZyb20gdGhlIGxhc3QgTFRTIHJlbGVhc2UsIHdoaWNoIHZlcnNpb24gJXUgaXMgbm90LgBJbnZhbGlkIE15U1FMIHNlcnZlciBkb3duZ3JhZGU6IENhbm5vdCBkb3duZ3JhZGUgZnJvbSAldSB0byAldS4gRG93bmdyYWRlIGlzIG9ubHkgcGVybWl0dGVkIGJldHdlZW4gcGF0Y2ggcmVsZWFzZXMuAEZhaWxlZCB0byBnZXQgdGhlIGRhdGEgZGljdGlvbmFyeSBwcm9wZXJ0eSAlcy4ARmFpbGVkIHRvIHNldCB0aGUgZGF0YSBkaWN0aW9uYXJ5IHByb3BlcnR5ICVzLgBTZXJ2ZXIgZG93bmdyYWRlIGZyb20gJyVkJyB0byAnJWQnICVzLgAlcyBpbmZvcm1hdGlvbiBzY2hlbWEgZnJvbSB2ZXJzaW9uICV1IHRvICV1LgAlcyBwZXJmb3JtYW5jZSBzY2hlbWEgZnJvbSB2ZXJzaW9uICV1IHRvICV1LgBWYWx1ZSBmb3Igb3B0aW9uICclcycgY29udGFpbnMgY2lwaGVyICclcycgdGhhdCBpcyBlaXRoZXIgYmxvY2tlZCBvciBkZXByZWNhdGVkIChhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UpLiBQbGVhc2UgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy4ARERMIGZhaWxlZCBhcyBCdWlsZGVyIGlzIGFscmVhZHkgZnJlZWQuIEJ1aWxkZXI6IHN0YXRlPSV1LCBlcnJvcl9zdGF0ZT0ldS4gSW5kZXg6IGlkPSV6dSwgbmFtZT0nJXMnLCBzcGFjZV9pZD0ldSwgcGFnZT0ldS4gVGFibGU6IG9sZF9uYW1lPSclcycsIG5ld19uYW1lPSclcycuAE1lbWJlciBpZGVudGlmaWVkICVzOiAnJXMnIGRvZXMgbm90IGV4aXN0IG9uIEdyb3VwIFJlcGxpY2F0aW9uIG1lbWJlcnNoaXAgZHVyaW5nICVzLgBEZXByZWNhdGVkICclcycgdXNlZCAlcyB0aW1lcywgbGFzdCB0aW1lIHVzZWQgJyVzJy4AV2FpdGluZyBmb3IgJXUgY29ubmVjdGlvbnMgdG8gYmUgY2xvc2VkLgBXYWl0aW5nIGZvciBUSERzIGluIHBhcnRpdGlvbiAldSB0byBiZSBjbG9zZWQsICV1IHN0aWxsIGxlZnQuICV1IFRIRHMgbGVmdCBpbiB0b3RhbCBmb3IgYWxsIHBhcnRpdGlvbnMuAEluZGV4ICVzIG9mICVzLiVzIGV4Y2VlZHMgbGltaXQgb2YgJWx1IGJ5dGVzIHBlciBjb2x1bW4uAEZhaWxlZCB0byB1cGRhdGUgZGF0YSBkaXJlY3RvcnkgZmxhZyBmb3IgZGQgdGFibGUgd2l0aCB0YWJsZXNwYWNlIGlkICclbGx1JyB3aGVuIGliZCBmaWxlIGZvciAnJXMnIGlzIG1vdmVkIHRvIG5ldyBsb2NhdGlvbiAnJXMnIGR1cmluZyBzZXJ2ZXIgc2h1dGRvd24AJXMgREQgSUQ6ICVsbHUgLSBUYWJsZXNwYWNlICV1LCBuYW1lICclcycsIGZvdW5kIGF0ICclcycgb3V0c2lkZSBkZWZhdWx0IGRhdGEgZGlyZWN0b3J5LCBidXQgREQgbWlzc2VzIGluZm8gYWJvdXQgREFUQSBESVJFQ1RPUlkAVXBvbiByZWNvbm5lY3Rpb24gd2l0aCB0aGUgcmVwbGljYSwgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBkdW1wIHRocmVhZCBmb3IgJXMgPCVzPiwgYW4gZXhpc3RpbmcgZHVtcCB0aHJlYWQgd2l0aCB0aGUgc2FtZSAlcyB3YXMgZGV0ZWN0ZWQuIFRoZSBzb3VyY2UgaXMgdGVybWluYXRpbmcgdGhlIHByZXZpb3VzIGR1bXAgdGhyZWFkICgldSksIHdoaWNoIGlzIG5vcm1hbCBhbmQgZXhwZWN0ZWQuAFRoZSB0cmFuc2FjdGlvbiAnJS0uMTkycycgd2lsbCBjb21taXQgb3V0IG9mIG9yZGVyIHdpdGggcmVzcGVjdCB0byBpdHMgc291cmNlIHRvIGZvbGxvdyB0aGUgZ3JvdXAgZ2xvYmFsIG9yZGVyLgBDYW4gbm90IG9wZW4gdGFibGUgYCVzYC5gJXNgOyBmdW5jdGlvbnMgaW4gY29uc3RyYWludHMsIHBhcnRpdGlvbnMsIG9yIHZpcnR1YWwgY29sdW1ucyBtYXkgaGF2ZSBmYWlsZWQuACVzAEZhaWxlZCB0byBjcmVhdGUgdGhlIEdyb3VwIFJlcGxpY2F0aW9uIGNlcnRpZmllciBicm9hZGNhc3QgdGhyZWFkIChUSERfY2VydGlmaWVyX2Jyb2FkY2FzdCkuAFRoZSBHcm91cCBSZXBsaWNhdGlvbiBjZXJ0aWZpZXIgYnJvYWRjYXN0IHRocmVhZCAoVEhEX2NlcnRpZmllcl9icm9hZGNhc3QpIHN0YXJ0ZWQuAFRoZSBHcm91cCBSZXBsaWNhdGlvbiBjZXJ0aWZpZXIgYnJvYWRjYXN0IHRocmVhZCAoVEhEX2NlcnRpZmllcl9icm9hZGNhc3QpIHN0b3BwZWQuAA==
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
379.75 KB
lrw-r--r--
2025-03-31 09:54:51
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).