1688054433
waR3U4bTeM%3A4cd32e8a22517fde6d556b2b04a9aced-dd1416d55f9416486323dd588b16c0b7
s:53824:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MTk6IlRva2VuaXplcyBDU1MgY29kZS4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvciI6NDp7czo3OiIAKgBuYW1lIjtzOjY6ImF1dGhvciI7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JOYW1lIjtzOjEzOiJHcmVnIFNoZXJ3b29kIjtzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvckVtYWlsIjtzOjE5OiJnc2hlcndvb2RAc3F1aXoubmV0IjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tjt9aToxO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo5OiJjb3B5cmlnaHQiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjQ0OiIyMDA2LTIwMTUgU3F1aXogUHR5IEx0ZCAoQUJOIDc3IDA4NCA2NzAgNjAwKSI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6NzoibGljZW5zZSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6ODA6Imh0dHBzOi8vZ2l0aHViLmNvbS9zcXVpemxhYnMvUEhQX0NvZGVTbmlmZmVyL2Jsb2IvbWFzdGVyL2xpY2VuY2UudHh0IEJTRCBMaWNlbmNlIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MDoiIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTowOnt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiJkZDE0MTZkNTVmOTQxNjQ4NjMyM2RkNTg4YjE2YzBiNyI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjc6IkNTUy5waHAiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czo1NToidmVuZG9yL3NxdWl6bGFicy9waHBfY29kZXNuaWZmZXIvc3JjL1Rva2VuaXplcnMvQ1NTLnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6MjIyMDM6Ijw/cGhwCi8qKgogKiBUb2tlbml6ZXMgQ1NTIGNvZGUuCiAqCiAqIEBhdXRob3IgICAgR3JlZyBTaGVyd29vZCA8Z3NoZXJ3b29kQHNxdWl6Lm5ldD4KICogQGNvcHlyaWdodCAyMDA2LTIwMTUgU3F1aXogUHR5IEx0ZCAoQUJOIDc3IDA4NCA2NzAgNjAwKQogKiBAbGljZW5zZSAgIGh0dHBzOi8vZ2l0aHViLmNvbS9zcXVpemxhYnMvUEhQX0NvZGVTbmlmZmVyL2Jsb2IvbWFzdGVyL2xpY2VuY2UudHh0IEJTRCBMaWNlbmNlCiAqLwoKbmFtZXNwYWNlIFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzOwoKdXNlIFBIUF9Db2RlU25pZmZlclxDb25maWc7CnVzZSBQSFBfQ29kZVNuaWZmZXJcRXhjZXB0aW9uc1xUb2tlbml6ZXJFeGNlcHRpb247CnVzZSBQSFBfQ29kZVNuaWZmZXJcVXRpbDsKCmNsYXNzIENTUyBleHRlbmRzIFBIUAp7CgoKICAgIC8qKgogICAgICogSW5pdGlhbGlzZSB0aGUgdG9rZW5pemVyLgogICAgICoKICAgICAqIFByZS1jaGVja3MgdGhlIGNvbnRlbnQgdG8gc2VlIGlmIGl0IGxvb2tzIG1pbmlmaWVkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAkY29udGVudCBUaGUgY29udGVudCB0byB0b2tlbml6ZSwKICAgICAqIEBwYXJhbSBcUEhQX0NvZGVTbmlmZmVyXENvbmZpZyAkY29uZmlnICBUaGUgY29uZmlnIGRhdGEgZm9yIHRoZSBydW4uCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgJGVvbENoYXIgVGhlIEVPTCBjaGFyIHVzZWQgaW4gdGhlIGNvbnRlbnQuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKiBAdGhyb3dzIFxQSFBfQ29kZVNuaWZmZXJcRXhjZXB0aW9uc1xUb2tlbml6ZXJFeGNlcHRpb24gSWYgdGhlIGZpbGUgYXBwZWFycyB0byBiZSBtaW5pZmllZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjb250ZW50LCBDb25maWcgJGNvbmZpZywgJGVvbENoYXI9J1xuJykKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmlzTWluaWZpZWRDb250ZW50KCRjb250ZW50LCAkZW9sQ2hhcikgPT09IHRydWUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFRva2VuaXplckV4Y2VwdGlvbignRmlsZSBhcHBlYXJzIHRvIGJlIG1pbmlmaWVkIGFuZCBjYW5ub3QgYmUgcHJvY2Vzc2VkJyk7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRjb250ZW50LCAkY29uZmlnLCAkZW9sQ2hhcik7CgogICAgfS8vZW5kIF9fY29uc3RydWN0KCkKCgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRva2VucyB3aGVuIGdpdmVuIHNvbWUgQ1NTIGNvZGUuCiAgICAgKgogICAgICogVXNlcyB0aGUgUEhQIHRva2VuaXplciB0byBkbyBhbGwgdGhlIHRyaWNreSB3b3JrCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nIFRoZSBzdHJpbmcgdG8gdG9rZW5pemUuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9rZW5pemUoJHN0cmluZykKICAgIHsKICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgZWNobyAiXHQqKiogU1RBUlQgQ1NTIFRPS0VOSVpJTkcgMVNUIFBBU1MgKioqIi5QSFBfRU9MOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIGNvbnRlbnQgZG9lc24ndCBoYXZlIGFuIEVPTCBjaGFyIG9uIHRoZSBlbmQsIGFkZCBvbmUgc28KICAgICAgICAvLyB0aGUgb3BlbiBhbmQgY2xvc2UgdGFncyB3ZSBhZGQgYXJlIHBhcnNlZCBjb3JyZWN0bHkuCiAgICAgICAgJGVvbEFkZGVkID0gZmFsc2U7CiAgICAgICAgaWYgKHN1YnN0cigkc3RyaW5nLCAoc3RybGVuKCR0aGlzLT5lb2xDaGFyKSAqIC0xKSkgIT09ICR0aGlzLT5lb2xDaGFyKSB7CiAgICAgICAgICAgICRzdHJpbmcgIC49ICR0aGlzLT5lb2xDaGFyOwogICAgICAgICAgICAkZW9sQWRkZWQgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJHN0cmluZyA9IHN0cl9yZXBsYWNlKCc8P3BocCcsICdeUEhQQ1NfQ1NTX1RfT1BFTl9UQUdeJywgJHN0cmluZyk7CiAgICAgICAgJHN0cmluZyA9IHN0cl9yZXBsYWNlKCc/PicsICdeUEhQQ1NfQ1NTX1RfQ0xPU0VfVEFHXicsICRzdHJpbmcpOwogICAgICAgICR0b2tlbnMgPSBwYXJlbnQ6OnRva2VuaXplKCc8P3BocCAnLiRzdHJpbmcuJz8+Jyk7CgogICAgICAgICRmaW5hbFRva2VucyAgICA9IFtdOwogICAgICAgICRmaW5hbFRva2Vuc1swXSA9IFsKICAgICAgICAgICAgJ2NvZGUnICAgID0+IFRfT1BFTl9UQUcsCiAgICAgICAgICAgICd0eXBlJyAgICA9PiAnVF9PUEVOX1RBRycsCiAgICAgICAgICAgICdjb250ZW50JyA9PiAnJywKICAgICAgICBdOwoKICAgICAgICAkbmV3U3RhY2tQdHIgICAgICA9IDE7CiAgICAgICAgJG51bVRva2VucyAgICAgICAgPSBjb3VudCgkdG9rZW5zKTsKICAgICAgICAkbXVsdGlMaW5lQ29tbWVudCA9IGZhbHNlOwogICAgICAgIGZvciAoJHN0YWNrUHRyID0gMTsgJHN0YWNrUHRyIDwgJG51bVRva2VuczsgJHN0YWNrUHRyKyspIHsKICAgICAgICAgICAgJHRva2VuID0gJHRva2Vuc1skc3RhY2tQdHJdOwoKICAgICAgICAgICAgLy8gQ1NTIGZpbGVzIGRvbid0IGhhdmUgbGlzdHMsIGJyZWFrcyBldGMsIHNvIGNvbnZlcnQgdGhlc2UgdG8KICAgICAgICAgICAgLy8gc3RhbmRhcmQgc3RyaW5ncyBlYXJseSBzbyB0aGV5IGNhbiBiZSBjb252ZXJ0ZWQgaW50byBUX1NUWUxFCiAgICAgICAgICAgIC8vIHRva2VucyBhbmQgam9pbmVkIHdpdGggb3RoZXIgc3RyaW5ncyBpZiBuZWVkZWQuCiAgICAgICAgICAgIGlmICgkdG9rZW5bJ2NvZGUnXSA9PT0gVF9CUkVBSwogICAgICAgICAgICAgICAgfHwgJHRva2VuWydjb2RlJ10gPT09IFRfTElTVAogICAgICAgICAgICAgICAgfHwgJHRva2VuWydjb2RlJ10gPT09IFRfREVGQVVMVAogICAgICAgICAgICAgICAgfHwgJHRva2VuWydjb2RlJ10gPT09IFRfU1dJVENICiAgICAgICAgICAgICAgICB8fCAkdG9rZW5bJ2NvZGUnXSA9PT0gVF9GT1IKICAgICAgICAgICAgICAgIHx8ICR0b2tlblsnY29kZSddID09PSBUX0ZPUkVBQ0gKICAgICAgICAgICAgICAgIHx8ICR0b2tlblsnY29kZSddID09PSBUX1dISUxFCiAgICAgICAgICAgICAgICB8fCAkdG9rZW5bJ2NvZGUnXSA9PT0gVF9ERUMKICAgICAgICAgICAgICAgIHx8ICR0b2tlblsnY29kZSddID09PSBUX05FVwogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICR0b2tlblsndHlwZSddID0gJ1RfU1RSSU5HJzsKICAgICAgICAgICAgICAgICR0b2tlblsnY29kZSddID0gVF9TVFJJTkc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0b2tlblsnY29udGVudCddID0gc3RyX3JlcGxhY2UoJ15QSFBDU19DU1NfVF9PUEVOX1RBR14nLCAnPD9waHAnLCAkdG9rZW5bJ2NvbnRlbnQnXSk7CiAgICAgICAgICAgICR0b2tlblsnY29udGVudCddID0gc3RyX3JlcGxhY2UoJ15QSFBDU19DU1NfVF9DTE9TRV9UQUdeJywgJz8+JywgJHRva2VuWydjb250ZW50J10pOwoKICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAkdHlwZSAgICA9ICR0b2tlblsndHlwZSddOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBVdGlsXENvbW1vbjo6cHJlcGFyZUZvck91dHB1dCgkdG9rZW5bJ2NvbnRlbnQnXSk7CiAgICAgICAgICAgICAgICBlY2hvICJcdFByb2Nlc3MgdG9rZW4gJHN0YWNrUHRyOiAkdHlwZSA9PiAkY29udGVudCIuUEhQX0VPTDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0b2tlblsnY29kZSddID09PSBUX0JJVFdJU0VfWE9SCiAgICAgICAgICAgICAgICAmJiAkdG9rZW5zWygkc3RhY2tQdHIgKyAxKV1bJ2NvbnRlbnQnXSA9PT0gJ1BIUENTX0NTU19UX09QRU5fVEFHJwogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRjb250ZW50ID0gJzw/cGhwJzsKICAgICAgICAgICAgICAgIGZvciAoJHN0YWNrUHRyICs9IDM7ICRzdGFja1B0ciA8ICRudW1Ub2tlbnM7ICRzdGFja1B0cisrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJHN0YWNrUHRyXVsnY29kZSddID09PSBUX0JJVFdJU0VfWE9SCiAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNbKCRzdGFja1B0ciArIDEpXVsnY29udGVudCddID09PSAnUEhQQ1NfQ1NTX1RfQ0xPU0VfVEFHJwogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGVuZCB0YWcgYW5kIGlnbm9yZSB0aGUgKiB3ZSBwdXQgYXQgdGhlIGVuZC4KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgIC49ICc/Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdGFja1B0ciArPSAyOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCAuPSAkdG9rZW5zWyRzdGFja1B0cl1bJ2NvbnRlbnQnXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdD0+IEZvdW5kIGVtYmVkZGVkIFBIUCBjb2RlOiAiOwogICAgICAgICAgICAgICAgICAgICRjbGVhbkNvbnRlbnQgPSBVdGlsXENvbW1vbjo6cHJlcGFyZUZvck91dHB1dCgkY29udGVudCk7CiAgICAgICAgICAgICAgICAgICAgZWNobyAkY2xlYW5Db250ZW50LlBIUF9FT0w7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGZpbmFsVG9rZW5zWyRuZXdTdGFja1B0cl0gPSBbCiAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgID0+ICdUX0VNQkVEREVEX1BIUCcsCiAgICAgICAgICAgICAgICAgICAgJ2NvZGUnICAgID0+IFRfRU1CRURERURfUEhQLAogICAgICAgICAgICAgICAgICAgICdjb250ZW50JyA9PiAkY29udGVudCwKICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgJG5ld1N0YWNrUHRyKys7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICBpZiAoJHRva2VuWydjb2RlJ10gPT09IFRfR09UT19MQUJFTCkgewogICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGVzZSBiYWNrIHRvIFRfU1RSSU5HIGZvbGxvd2VkIGJ5IFRfQ09MT04gc28gd2UgY2FuCiAgICAgICAgICAgICAgICAvLyBtb3JlIGVhc2lseSBwcm9jZXNzIHN0eWxlIGRlZmluaXRpb25zLgogICAgICAgICAgICAgICAgJGZpbmFsVG9rZW5zWyRuZXdTdGFja1B0cl0gPSBbCiAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgID0+ICdUX1NUUklORycsCiAgICAgICAgICAgICAgICAgICAgJ2NvZGUnICAgID0+IFRfU1RSSU5HLAogICAgICAgICAgICAgICAgICAgICdjb250ZW50JyA9PiBzdWJzdHIoJHRva2VuWydjb250ZW50J10sIDAsIC0xKSwKICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAkbmV3U3RhY2tQdHIrKzsKICAgICAgICAgICAgICAgICRmaW5hbFRva2Vuc1skbmV3U3RhY2tQdHJdID0gWwogICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICA9PiAnVF9DT0xPTicsCiAgICAgICAgICAgICAgICAgICAgJ2NvZGUnICAgID0+IFRfQ09MT04sCiAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQnID0+ICc6JywKICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAkbmV3U3RhY2tQdHIrKzsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRva2VuWydjb2RlJ10gPT09IFRfRlVOQ1RJT04pIHsKICAgICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBubyBmdW5jdGlvbnMgaW4gQ1NTLCBzbyBjb252ZXJ0IHRoaXMgdG8gYSBzdHJpbmcuCiAgICAgICAgICAgICAgICAkZmluYWxUb2tlbnNbJG5ld1N0YWNrUHRyXSA9IFsKICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgPT4gJ1RfU1RSSU5HJywKICAgICAgICAgICAgICAgICAgICAnY29kZScgICAgPT4gVF9TVFJJTkcsCiAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQnID0+ICR0b2tlblsnY29udGVudCddLAogICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAkbmV3U3RhY2tQdHIrKzsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRva2VuWydjb2RlJ10gPT09IFRfQ09NTUVOVAogICAgICAgICAgICAgICAgJiYgc3Vic3RyKCR0b2tlblsnY29udGVudCddLCAwLCAyKSA9PT0gJy8qJwogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIC8vIE11bHRpLWxpbmUgY29tbWVudC4gUmVjb3JkIGl0IHNvIHdlIGNhbiBpZ25vcmUgb3RoZXIKICAgICAgICAgICAgICAgIC8vIGNvbW1lbnQgdGFncyB1bnRpbCB3ZSBnZXQgb3V0IG9mIHRoaXMgb25lLgogICAgICAgICAgICAgICAgJG11bHRpTGluZUNvbW1lbnQgPSB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRva2VuWydjb2RlJ10gPT09IFRfQ09NTUVOVAogICAgICAgICAgICAgICAgJiYgJG11bHRpTGluZUNvbW1lbnQgPT09IGZhbHNlCiAgICAgICAgICAgICAgICAmJiAoc3Vic3RyKCR0b2tlblsnY29udGVudCddLCAwLCAyKSA9PT0gJy8vJwogICAgICAgICAgICAgICAgfHwgJHRva2VuWydjb250ZW50J11bMF0gPT09ICcjJykKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkY29udGVudCA9IGx0cmltKCR0b2tlblsnY29udGVudCddLCAnIy8nKTsKCiAgICAgICAgICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IFBIUDcrIHN5bnRheCBlcnJvcnMgYnkgc3RyaXBwaW5nCiAgICAgICAgICAgICAgICAvLyBsZWFkaW5nIHplcm9zIHNvIHRoZSBjb250ZW50IGRvZXNuJ3QgbG9vayBsaWtlIGFuIGludmFsaWQgaW50LgogICAgICAgICAgICAgICAgJGxlYWRpbmdaZXJvID0gZmFsc2U7CiAgICAgICAgICAgICAgICBpZiAoJGNvbnRlbnRbMF0gPT09ICcwJykgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50ICAgICA9ICcxJy4kY29udGVudDsKICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ1plcm8gPSB0cnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjb21tZW50VG9rZW5zID0gcGFyZW50Ojp0b2tlbml6ZSgnPD9waHAgJy4kY29udGVudC4nPz4nKTsKCiAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYW5kIGxhc3QgdG9rZW5zIGFyZSB0aGUgb3Blbi9jbG9zZSB0YWdzLgogICAgICAgICAgICAgICAgYXJyYXlfc2hpZnQoJGNvbW1lbnRUb2tlbnMpOwogICAgICAgICAgICAgICAgYXJyYXlfcG9wKCRjb21tZW50VG9rZW5zKTsKCiAgICAgICAgICAgICAgICBpZiAoJGxlYWRpbmdaZXJvID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbW1lbnRUb2tlbnNbMF1bJ2NvbnRlbnQnXSA9IHN1YnN0cigkY29tbWVudFRva2Vuc1swXVsnY29udGVudCddLCAxKTsKICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9IHN1YnN0cigkY29udGVudCwgMSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCR0b2tlblsnY29udGVudCddWzBdID09PSAnIycpIHsKICAgICAgICAgICAgICAgICAgICAvLyBUaGUgIyBjaGFyYWN0ZXIgaXMgbm90IGEgY29tbWVudCBpbiBDU1MgZmlsZXMsIHNvCiAgICAgICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIHdoYXQgaXQgbWVhbnMgaW4gdGhpcyBjb250ZXh0LgogICAgICAgICAgICAgICAgICAgICRmaXJzdENvbnRlbnQgPSAkY29tbWVudFRva2Vuc1swXVsnY29udGVudCddOwoKICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgY29udGVudCBpcyBqdXN0IGEgbnVtYmVyLCBpdCBpcyBwcm9iYWJseSBhCiAgICAgICAgICAgICAgICAgICAgLy8gY29sb3VyIGxpa2UgOEZCN0RCLCB3aGljaCBQSFAgc3BsaXRzIGludG8gOCBhbmQgRkI3REIuCiAgICAgICAgICAgICAgICAgICAgaWYgKCgkY29tbWVudFRva2Vuc1swXVsnY29kZSddID09PSBUX0xOVU1CRVIKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGNvbW1lbnRUb2tlbnNbMF1bJ2NvZGUnXSA9PT0gVF9ETlVNQkVSKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkY29tbWVudFRva2Vuc1sxXVsnY29kZSddID09PSBUX1NUUklORwogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAkZmlyc3RDb250ZW50IC49ICRjb21tZW50VG9rZW5zWzFdWydjb250ZW50J107CiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3NoaWZ0KCRjb21tZW50VG9rZW5zKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmaXJzdCBjb250ZW50IGxvb2tzIGxpa2UgYSBjb2xvdXIgYW5kIG5vdCBhIGNsYXNzCiAgICAgICAgICAgICAgICAgICAgLy8gZGVmaW5pdGlvbiwgam9pbiB0aGUgdG9rZW5zIHRvZ2V0aGVyLgogICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXltBQkNERUYwLTldKyQvaScsICRmaXJzdENvbnRlbnQpID09PSAxCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRjb21tZW50VG9rZW5zWzFdWydjb250ZW50J10gIT09ICctJwogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9zaGlmdCgkY29tbWVudFRva2Vucyk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdvcmsgb3V0IHdoYXQgd2UgdHJpbW1lZCBvZmYgYWJvdmUgYW5kIHJlbWVtYmVyIHRvIHJlLWFkZCBpdC4KICAgICAgICAgICAgICAgICAgICAgICAgJHRyaW1tZWQgPSBzdWJzdHIoJHRva2VuWydjb250ZW50J10sIDAsIChzdHJsZW4oJHRva2VuWydjb250ZW50J10pIC0gc3RybGVuKCRjb250ZW50KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAkZmluYWxUb2tlbnNbJG5ld1N0YWNrUHRyXSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICA9PiAnVF9DT0xPVVInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvZGUnICAgID0+IFRfQ09MT1VSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQnID0+ICR0cmltbWVkLiRmaXJzdENvbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbmFsVG9rZW5zWyRuZXdTdGFja1B0cl0gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgPT4gJ1RfSEFTSCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29kZScgICAgPT4gVF9IQVNILAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQnID0+ICcjJywKICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRmaW5hbFRva2Vuc1skbmV3U3RhY2tQdHJdID0gWwogICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgPT4gJ1RfU1RSSU5HJywKICAgICAgICAgICAgICAgICAgICAgICAgJ2NvZGUnICAgID0+IFRfU1RSSU5HLAogICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudCcgPT4gJy8vJywKICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICAgICAgJG5ld1N0YWNrUHRyKys7CgogICAgICAgICAgICAgICAgYXJyYXlfc3BsaWNlKCR0b2tlbnMsICRzdGFja1B0ciwgMSwgJGNvbW1lbnRUb2tlbnMpOwogICAgICAgICAgICAgICAgJG51bVRva2VucyA9IGNvdW50KCR0b2tlbnMpOwogICAgICAgICAgICAgICAgJHN0YWNrUHRyLS07CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICBpZiAoJHRva2VuWydjb2RlJ10gPT09IFRfQ09NTUVOVAogICAgICAgICAgICAgICAgJiYgc3Vic3RyKCR0b2tlblsnY29udGVudCddLCAtMikgPT09ICcqLycKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAvLyBNdWx0aS1saW5lIGNvbW1lbnQgaXMgZG9uZS4KICAgICAgICAgICAgICAgICRtdWx0aUxpbmVDb21tZW50ID0gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRmaW5hbFRva2Vuc1skbmV3U3RhY2tQdHJdID0gJHRva2VuOwogICAgICAgICAgICAkbmV3U3RhY2tQdHIrKzsKICAgICAgICB9Ly9lbmQgZm9yCgogICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICBlY2hvICJcdCoqKiBFTkQgQ1NTIFRPS0VOSVpJTkcgMVNUIFBBU1MgKioqIi5QSFBfRU9MOwogICAgICAgICAgICBlY2hvICJcdCoqKiBTVEFSVCBDU1MgVE9LRU5JWklORyAyTkQgUEFTUyAqKioiLlBIUF9FT0w7CiAgICAgICAgfQoKICAgICAgICAvLyBBIGZsYWcgdG8gaW5kaWNhdGUgaWYgd2UgYXJlIGluc2lkZSBhIHN0eWxlIGRlZmluaXRpb24sCiAgICAgICAgLy8gd2hpY2ggaXMgZGVmaW5lZCB1c2luZyBjdXJseSBicmFjZXMuCiAgICAgICAgJGluU3R5bGVEZWYgPSBmYWxzZTsKCiAgICAgICAgLy8gQSBmbGFnIHRvIGluZGljYXRlIGlmIGFuIEF0LXJ1bGUgbGlrZSAiQG1lZGlhIiBpcyB1c2VkLCB3aGljaCB3aWxsIHJlc3VsdAogICAgICAgIC8vIGluIG5lc3RlZCBjdXJseSBicmFja2V0cy4KICAgICAgICAkYXNwZXJhbmRTdGFydCA9IGZhbHNlOwoKICAgICAgICAkbnVtVG9rZW5zID0gY291bnQoJGZpbmFsVG9rZW5zKTsKICAgICAgICBmb3IgKCRzdGFja1B0ciA9IDA7ICRzdGFja1B0ciA8ICRudW1Ub2tlbnM7ICRzdGFja1B0cisrKSB7CiAgICAgICAgICAgICR0b2tlbiA9ICRmaW5hbFRva2Vuc1skc3RhY2tQdHJdOwoKICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAkdHlwZSAgICA9ICR0b2tlblsndHlwZSddOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBVdGlsXENvbW1vbjo6cHJlcGFyZUZvck91dHB1dCgkdG9rZW5bJ2NvbnRlbnQnXSk7CiAgICAgICAgICAgICAgICBlY2hvICJcdFByb2Nlc3MgdG9rZW4gJHN0YWNrUHRyOiAkdHlwZSA9PiAkY29udGVudCIuUEhQX0VPTDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc3dpdGNoICgkdG9rZW5bJ2NvZGUnXSkgewogICAgICAgICAgICBjYXNlIFRfT1BFTl9DVVJMWV9CUkFDS0VUOgogICAgICAgICAgICAgICAgLy8gT3BlbmluZyBjdXJseSBicmFja2V0cyBmb3IgYW4gQXQtcnVsZSBkbyBub3Qgc3RhcnQgYSBzdHlsZQogICAgICAgICAgICAgICAgLy8gZGVmaW5pdGlvbi4gV2UgYWxzbyByZXNldCB0aGUgYXNwZXJhbmQgZmxhZyBoZXJlIGJlY2F1c2UgdGhlIG5leHQKICAgICAgICAgICAgICAgIC8vIG9wZW5pbmcgY3VybHkgYnJhY2tldCBjb3VsZCBiZSBpbmRlZWQgdGhlIHN0YXJ0IG9mIGEgc3R5bGUKICAgICAgICAgICAgICAgIC8vIGRlZmluaXRpb24uCiAgICAgICAgICAgICAgICBpZiAoJGFzcGVyYW5kU3RhcnQgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpblN0eWxlRGVmID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdFx0KiBzdHlsZSBkZWZpbml0aW9uIGNsb3NlZCAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFzcGVyYW5kU3RhcnQgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0XHQqIGF0LXJ1bGUgZGVmaW5pdGlvbiBjbG9zZWQgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGluU3R5bGVEZWYgICAgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAkYXNwZXJhbmRTdGFydCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkaW5TdHlsZURlZiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0XHQqIHN0eWxlIGRlZmluaXRpb24gb3BlbmVkICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgVF9DTE9TRV9DVVJMWV9CUkFDS0VUOgogICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRpblN0eWxlRGVmID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0XHQqIHN0eWxlIGRlZmluaXRpb24gY2xvc2VkICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJGFzcGVyYW5kU3RhcnQgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdCogYXQtcnVsZSBkZWZpbml0aW9uIGNsb3NlZCAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkaW5TdHlsZURlZiAgICA9IGZhbHNlOwogICAgICAgICAgICAgICAgJGFzcGVyYW5kU3RhcnQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIFRfTUlOVVM6CiAgICAgICAgICAgICAgICAvLyBNaW51cyBzaWducyBhcmUgb2Z0ZW4gdXNlZCBpbnN0ZWFkIG9mIHNwYWNlcyBpbnNpZGUKICAgICAgICAgICAgICAgIC8vIGNsYXNzIG5hbWVzLCBJRHMgYW5kIHN0eWxlcy4KICAgICAgICAgICAgICAgIGlmICgkZmluYWxUb2tlbnNbKCRzdGFja1B0ciArIDEpXVsnY29kZSddID09PSBUX1NUUklORykgewogICAgICAgICAgICAgICAgICAgIGlmICgkZmluYWxUb2tlbnNbKCRzdGFja1B0ciAtIDEpXVsnY29kZSddID09PSBUX1NUUklORykgewogICAgICAgICAgICAgICAgICAgICAgICAkbmV3Q29udGVudCA9ICRmaW5hbFRva2Vuc1soJHN0YWNrUHRyIC0gMSldWydjb250ZW50J10uJy0nLiRmaW5hbFRva2Vuc1soJHN0YWNrUHRyICsgMSldWydjb250ZW50J107CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0XHQqIHRva2VuIGlzIGEgc3RyaW5nIGpvaW5lcjsgaWdub3JpbmcgdGhpcyBhbmQgcHJldmlvdXMgdG9rZW4iLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2xkID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJGZpbmFsVG9rZW5zWygkc3RhY2tQdHIgKyAxKV1bJ2NvbnRlbnQnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV3ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJG5ld0NvbnRlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdD0+IHRva2VuICIuKCRzdGFja1B0ciArIDEpLiIgY29udGVudCBjaGFuZ2VkIGZyb20gXCIkb2xkXCIgdG8gXCIkbmV3XCIiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRmaW5hbFRva2Vuc1soJHN0YWNrUHRyICsgMSldWydjb250ZW50J10gPSAkbmV3Q29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGZpbmFsVG9rZW5zWyRzdGFja1B0cl0pOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkZmluYWxUb2tlbnNbKCRzdGFja1B0ciAtIDEpXSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5ld0NvbnRlbnQgPSAnLScuJGZpbmFsVG9rZW5zWygkc3RhY2tQdHIgKyAxKV1bJ2NvbnRlbnQnXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRmaW5hbFRva2Vuc1soJHN0YWNrUHRyICsgMSldWydjb250ZW50J10gPSAkbmV3Q29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGZpbmFsVG9rZW5zWyRzdGFja1B0cl0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbmFsVG9rZW5zWygkc3RhY2tQdHIgKyAxKV1bJ2NvZGUnXSA9PT0gVF9MTlVNQkVSKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhleSBjYW4gYWxzbyBiZSB1c2VkIHRvIHByb3ZpZGUgbmVnYXRpdmUgbnVtYmVycy4KICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdCogdG9rZW4gaXMgcGFydCBvZiBhIG5lZ2F0aXZlIG51bWJlcjsgYWRkaW5nIGNvbnRlbnQgdG8gbmV4dCB0b2tlbiBhbmQgaWdub3JpbmcgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBVdGlsXENvbW1vbjo6cHJlcGFyZUZvck91dHB1dCgkZmluYWxUb2tlbnNbKCRzdGFja1B0ciArIDEpXVsnY29udGVudCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdD0+IHRva2VuICIuKCRzdGFja1B0ciArIDEpLiIgY29udGVudCBjaGFuZ2VkIGZyb20gXCIkY29udGVudFwiIHRvIFwiLSRjb250ZW50XCIiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkZmluYWxUb2tlbnNbKCRzdGFja1B0ciArIDEpXVsnY29udGVudCddID0gJy0nLiRmaW5hbFRva2Vuc1soJHN0YWNrUHRyICsgMSldWydjb250ZW50J107CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGZpbmFsVG9rZW5zWyRzdGFja1B0cl0pOwogICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBUX0NPTE9OOgogICAgICAgICAgICAgICAgLy8gT25seSBpbnRlcmVzdGVkIGluIGNvbG9ucyB0aGF0IGFyZSBkZWZpbmluZyBzdHlsZXMuCiAgICAgICAgICAgICAgICBpZiAoJGluU3R5bGVEZWYgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yICgkeCA9ICgkc3RhY2tQdHIgLSAxKTsgJHggPj0gMDsgJHgtLSkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldChVdGlsXFRva2Vuczo6JGVtcHR5VG9rZW5zWyRmaW5hbFRva2Vuc1skeF1bJ2NvZGUnXV0pID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkZmluYWxUb2tlbnNbJHhdWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdD0+IHRva2VuICR4IGNoYW5nZWQgZnJvbSAkdHlwZSB0byBUX1NUWUxFIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRmaW5hbFRva2Vuc1skeF1bJ3R5cGUnXSA9ICdUX1NUWUxFJzsKICAgICAgICAgICAgICAgICRmaW5hbFRva2Vuc1skeF1bJ2NvZGUnXSA9IFRfU1RZTEU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBUX1NUUklORzoKICAgICAgICAgICAgICAgIGlmIChzdHJ0b2xvd2VyKCR0b2tlblsnY29udGVudCddKSA9PT0gJ3VybCcpIHsKICAgICAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBuZXh0IGNvbnRlbnQuCiAgICAgICAgICAgICAgICAgICAgZm9yICgkeCA9ICgkc3RhY2tQdHIgKyAxKTsgJHggPCAkbnVtVG9rZW5zOyAkeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldChVdGlsXFRva2Vuczo6JGVtcHR5VG9rZW5zWyRmaW5hbFRva2Vuc1skeF1bJ2NvZGUnXV0pID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIE5lZWRzIHRvIGJlIGluIHRoZSBmb3JtYXQgInVybCgiIGZvciBpdCB0byBiZSBhIFVSTC4KICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbmFsVG9rZW5zWyR4XVsnY29kZSddICE9PSBUX09QRU5fUEFSRU5USEVTSVMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGVudCBpc24ndCBlbXB0eS4KICAgICAgICAgICAgICAgICAgICBmb3IgKCR5ID0gKCR4ICsgMSk7ICR5IDwgJG51bVRva2VuczsgJHkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoVXRpbFxUb2tlbnM6OiRlbXB0eVRva2Vuc1skZmluYWxUb2tlbnNbJHldWydjb2RlJ11dKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbmFsVG9rZW5zWyR5XVsnY29kZSddID09PSBUX0NMT1NFX1BBUkVOVEhFU0lTKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkaSA9ICgkc3RhY2tQdHIgKyAxKTsgJGkgPD0gJHk7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlICAgID0gJGZpbmFsVG9rZW5zWyRpXVsndHlwZSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBVdGlsXENvbW1vbjo6cHJlcGFyZUZvck91dHB1dCgkZmluYWxUb2tlbnNbJGldWydjb250ZW50J10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRQcm9jZXNzIHRva2VuICRpOiAkdHlwZSA9PiAkY29udGVudCIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdCogdG9rZW4gc3RhcnRzIGEgVVJMICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvLyBKb2luIGFsbCB0aGUgY29udGVudCB0b2dldGhlciBpbnNpZGUgdGhlIHVybCgpIHN0YXRlbWVudC4KICAgICAgICAgICAgICAgICAgICAkbmV3Q29udGVudCA9ICcnOwogICAgICAgICAgICAgICAgICAgIGZvciAoJGkgPSAoJHggKyAyKTsgJGkgPCAkbnVtVG9rZW5zOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmluYWxUb2tlbnNbJGldWydjb2RlJ10gPT09IFRfQ0xPU0VfUEFSRU5USEVTSVMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkbmV3Q29udGVudCAuPSAkZmluYWxUb2tlbnNbJGldWydjb250ZW50J107CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBVdGlsXENvbW1vbjo6cHJlcGFyZUZvck91dHB1dCgkZmluYWxUb2tlbnNbJGldWydjb250ZW50J10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdD0+IHRva2VuICRpIGFkZGVkIHRvIFVSTCBzdHJpbmcgYW5kIGlnbm9yZWQ6ICRjb250ZW50Ii5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkZmluYWxUb2tlbnNbJGldKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRzdGFja1B0ciA9ICRpOwoKICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY29udGVudCBpbnNpZGUgdGhlICJ1cmwoKSIgaXMgaW4gZG91YmxlIHF1b3RlcwogICAgICAgICAgICAgICAgICAgIC8vIHRoZXJlIHdpbGwgb25seSBiZSBvbmUgdG9rZW4gYW5kIHNvIHdlIGRvbid0IGhhdmUgdG8gZG8KICAgICAgICAgICAgICAgICAgICAvLyBhbnl0aGluZyBleGNlcHQgY2hhbmdlIGl0cyB0eXBlLiBJZiBpdCBpcyBub3QgZW1wdHksCiAgICAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBkbyBzb21lIHRva2VuIG1lcmdpbmcuCiAgICAgICAgICAgICAgICAgICAgJGZpbmFsVG9rZW5zWygkeCArIDEpXVsndHlwZSddID0gJ1RfVVJMJzsKICAgICAgICAgICAgICAgICAgICAkZmluYWxUb2tlbnNbKCR4ICsgMSldWydjb2RlJ10gPSBUX1VSTDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRuZXdDb250ZW50ICE9PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAkZmluYWxUb2tlbnNbKCR4ICsgMSldWydjb250ZW50J10gLj0gJG5ld0NvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBVdGlsXENvbW1vbjo6cHJlcGFyZUZvck91dHB1dCgkZmluYWxUb2tlbnNbKCR4ICsgMSldWydjb250ZW50J10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdD0+IHRva2VuIGNvbnRlbnQgY2hhbmdlZCB0bzogJGNvbnRlbnQiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaW5hbFRva2Vuc1skc3RhY2tQdHJdWydjb250ZW50J11bMF0gPT09ICctJwogICAgICAgICAgICAgICAgICAgICYmICRmaW5hbFRva2Vuc1soJHN0YWNrUHRyICsgMSldWydjb2RlJ10gPT09IFRfU1RSSU5HCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGZpbmFsVG9rZW5zWygkc3RhY2tQdHIgLSAxKV0pID09PSB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRmaW5hbFRva2Vuc1soJHN0YWNrUHRyIC0gMSldWydjb2RlJ10gPT09IFRfU1RSSU5HCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXdDb250ZW50ID0gJGZpbmFsVG9rZW5zWygkc3RhY2tQdHIgLSAxKV1bJ2NvbnRlbnQnXS4kZmluYWxUb2tlbnNbJHN0YWNrUHRyXVsnY29udGVudCddLiRmaW5hbFRva2Vuc1soJHN0YWNrUHRyICsgMSldWydjb250ZW50J107CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0XHQqIHRva2VuIGlzIGEgc3RyaW5nIGpvaW5lcjsgaWdub3JpbmcgdGhpcyBhbmQgcHJldmlvdXMgdG9rZW4iLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2xkID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJGZpbmFsVG9rZW5zWygkc3RhY2tQdHIgKyAxKV1bJ2NvbnRlbnQnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV3ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJG5ld0NvbnRlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdD0+IHRva2VuICIuKCRzdGFja1B0ciArIDEpLiIgY29udGVudCBjaGFuZ2VkIGZyb20gXCIkb2xkXCIgdG8gXCIkbmV3XCIiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRmaW5hbFRva2Vuc1soJHN0YWNrUHRyICsgMSldWydjb250ZW50J10gPSAkbmV3Q29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGZpbmFsVG9rZW5zWyRzdGFja1B0cl0pOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkZmluYWxUb2tlbnNbKCRzdGFja1B0ciAtIDEpXSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5ld0NvbnRlbnQgPSAkZmluYWxUb2tlbnNbJHN0YWNrUHRyXVsnY29udGVudCddLiRmaW5hbFRva2Vuc1soJHN0YWNrUHRyICsgMSldWydjb250ZW50J107CgogICAgICAgICAgICAgICAgICAgICAgICAkZmluYWxUb2tlbnNbKCRzdGFja1B0ciArIDEpXVsnY29udGVudCddID0gJG5ld0NvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRmaW5hbFRva2Vuc1skc3RhY2tQdHJdKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIFRfQVNQRVJBTkQ6CiAgICAgICAgICAgICAgICAkYXNwZXJhbmRTdGFydCA9IHRydWU7CiAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICJcdFx0KiBhdC1ydWxlIGRlZmluaXRpb24gb3BlbmVkICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIC8vIE5vdGhpbmcgc3BlY2lhbCB0byBiZSBkb25lIHdpdGggdGhpcyB0b2tlbi4KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9Ly9lbmQgc3dpdGNoCiAgICAgICAgfS8vZW5kIGZvcgoKICAgICAgICAvLyBSZXNldCB0aGUgYXJyYXkga2V5cyB0byBhdm9pZCBnYXBzLgogICAgICAgICRmaW5hbFRva2VucyA9IGFycmF5X3ZhbHVlcygkZmluYWxUb2tlbnMpOwogICAgICAgICRudW1Ub2tlbnMgICA9IGNvdW50KCRmaW5hbFRva2Vucyk7CgogICAgICAgIC8vIEJsYW5rIG91dCB0aGUgY29udGVudCBvZiB0aGUgZW5kIHRhZy4KICAgICAgICAkZmluYWxUb2tlbnNbKCRudW1Ub2tlbnMgLSAxKV1bJ2NvbnRlbnQnXSA9ICcnOwoKICAgICAgICBpZiAoJGVvbEFkZGVkID09PSB0cnVlKSB7CiAgICAgICAgICAgIC8vIFN0cmlwIG9mZiB0aGUgZXh0cmEgRU9MIGNoYXIgd2UgYWRkZWQgZm9yIHRva2VuaXppbmcuCiAgICAgICAgICAgICRmaW5hbFRva2Vuc1soJG51bVRva2VucyAtIDIpXVsnY29udGVudCddID0gc3Vic3RyKAogICAgICAgICAgICAgICAgJGZpbmFsVG9rZW5zWygkbnVtVG9rZW5zIC0gMildWydjb250ZW50J10sCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKHN0cmxlbigkdGhpcy0+ZW9sQ2hhcikgKiAtMSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkZmluYWxUb2tlbnNbKCRudW1Ub2tlbnMgLSAyKV1bJ2NvbnRlbnQnXSA9PT0gJycpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRmaW5hbFRva2Vuc1soJG51bVRva2VucyAtIDIpXSk7CiAgICAgICAgICAgICAgICAkZmluYWxUb2tlbnMgPSBhcnJheV92YWx1ZXMoJGZpbmFsVG9rZW5zKTsKICAgICAgICAgICAgICAgICRudW1Ub2tlbnMgICA9IGNvdW50KCRmaW5hbFRva2Vucyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICBlY2hvICJcdCoqKiBFTkQgQ1NTIFRPS0VOSVpJTkcgMk5EIFBBU1MgKioqIi5QSFBfRU9MOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmaW5hbFRva2VuczsKCiAgICB9Ly9lbmQgdG9rZW5pemUoKQoKCiAgICAvKioKICAgICAqIFBlcmZvcm1zIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBhZnRlciBtYWluIHRva2VuaXppbmcuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9jZXNzQWRkaXRpb25hbCgpCiAgICB7CiAgICAgICAgLyoKICAgICAgICAgICAgV2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRoZSBQSFAgdmVyc2lvbiB0bwogICAgICAgICAgICBydW4gZHVyaW5nIENTUyBwcm9jZXNzaW5nIGJlY2F1c2UgaXQgaXMgd2FzdGVkIHByb2Nlc3NpbmcgdGltZS4KICAgICAgICAqLwoKICAgIH0vL2VuZCBwcm9jZXNzQWRkaXRpb25hbCgpCgoKfS8vZW5kIGNsYXNzCiI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjE6e3M6Mjc6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVycyI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnMiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMDoiVG9rZW5pemVycyI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YToxOntzOjMxOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcQ1NTIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXyI6MTM6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjMxOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcQ1NTIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MzoiQ1NTIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwYXJlbnQiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozMToiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFBIUCI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjM6IlBIUCI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBpbXBsZW1lbnRzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AY29uc3RhbnRzIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcHJvcGVydGllcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGhvZHMiO2E6Mzp7czo0NjoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXENTUzo6X19jb25zdHJ1Y3QoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjI1OiJJbml0aWFsaXNlIHRoZSB0b2tlbml6ZXIuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjUxOiJQcmUtY2hlY2tzIHRoZSBjb250ZW50IHRvIHNlZSBpZiBpdCBsb29rcyBtaW5pZmllZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTo1OntpOjA7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6NzoiY29udGVudCI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyNDoiVGhlIGNvbnRlbnQgdG8gdG9rZW5pemUsIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToxO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjY6ImNvbmZpZyI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyMzoiXFBIUF9Db2RlU25pZmZlclxDb25maWciO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo2OiJDb25maWciO319czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyODoiVGhlIGNvbmZpZyBkYXRhIGZvciB0aGUgcnVuLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo3OiJlb2xDaGFyIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjMzOiJUaGUgRU9MIGNoYXIgdXNlZCBpbiB0aGUgY29udGVudC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjM7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcVm9pZF8iOjA6e31zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjQ7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcVGhyb3dzIjozOntzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NjoiXFBIUF9Db2RlU25pZmZlclxFeGNlcHRpb25zXFRva2VuaXplckV4Y2VwdGlvbiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE4OiJUb2tlbml6ZXJFeGNlcHRpb24iO319czo3OiIAKgBuYW1lIjtzOjY6InRocm93cyI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MzU6IklmIHRoZSBmaWxlIGFwcGVhcnMgdG8gYmUgbWluaWZpZWQuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MjY6IlBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTozOntzOjY6IkNvbmZpZyI7czoyMjoiUEhQX0NvZGVTbmlmZmVyXENvbmZpZyI7czoxODoiVG9rZW5pemVyRXhjZXB0aW9uIjtzOjQ1OiJQSFBfQ29kZVNuaWZmZXJcRXhjZXB0aW9uc1xUb2tlbml6ZXJFeGNlcHRpb24iO3M6NDoiVXRpbCI7czoyMDoiUEhQX0NvZGVTbmlmZmVyXFV0aWwiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NjoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXENTUzo6X19jb25zdHJ1Y3QoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjExOiJfX2NvbnN0cnVjdCI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTozOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo3OiJjb250ZW50IjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NjoiY29uZmlnIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MjM6IlxQSFBfQ29kZVNuaWZmZXJcQ29uZmlnIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NjoiQ29uZmlnIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjc6ImVvbENoYXIiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtzOjU6IidcXG4nIjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MzI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6NDM6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xDU1M6OnRva2VuaXplKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1MjoiQ3JlYXRlcyBhbiBhcnJheSBvZiB0b2tlbnMgd2hlbiBnaXZlbiBzb21lIENTUyBjb2RlLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo0ODoiVXNlcyB0aGUgUEhQIHRva2VuaXplciB0byBkbyBhbGwgdGhlIHRyaWNreSB3b3JrIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mjp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjY6InN0cmluZyI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyMzoiVGhlIHN0cmluZyB0byB0b2tlbml6ZS4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjE7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjEwNztzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQzOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcQ1NTOjp0b2tlbml6ZSgpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoidG9rZW5pemUiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MTp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6Njoic3RyaW5nIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo1MTk7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX1zOjUyOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcQ1NTOjpwcm9jZXNzQWRkaXRpb25hbCgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTM6IlBlcmZvcm1zIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBhZnRlciBtYWluIHRva2VuaXppbmcuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6MTA3O3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTI6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xDU1M6OnByb2Nlc3NBZGRpdGlvbmFsKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNzoicHJvY2Vzc0FkZGl0aW9uYWwiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTI3O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTM0O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e319fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwB1c2VkVHJhaXRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjE2O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTM3O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRhZGF0YSI7YTowOnt9fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGludGVyZmFjZXMiO2E6MDp7fXM6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAdHJhaXRzIjthOjA6e31zOjQwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGVudW1zIjthOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG1ldGFkYXRhIjthOjA6e319";