{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"nft","params":"","code":"Y29uc3QgQ09OVFJBQ1RfTkFNRT0ibmZ0IixVVElMSVRZX1RPS0VOX1NZTUJPTD0iQkVFIixNQVhfTlVNX0FVVEhPUklaRURfSVNTVUVSUz0xMCxNQVhfTlVNX0xPQ0tFRF9UT0tFTl9UWVBFUz0xMCxNQVhfU1lNQk9MX0xFTkdUSD0xMCxNQVhfREFUQV9QUk9QRVJUWV9MRU5HVEg9MTAwLE1BWF9OVU1fTkZUU19JU1NVQUJMRT0xMCxNQVhfTlVNX05GVFNfRURJVEFCTEU9NTAsTUFYX05VTV9ORlRTX09QRVJBQkxFPTUwLE1BWF9OVU1fQ09OVEFJTkVSX05GVFNfT1BFUkFCTEU9MSxSRVNFUlZFRF9TWU1CT0xTPXtDRUxMOiJiZWdnYXJzIixRVVNUOiJzaW1wbGVnYW1lIixURVNURVJBOiJhZ2dyb2VkIixTUVJMOiJzdHVmZmJ5c3BlbmNlciIsQ1JBRlQ6ImltbWFudWVsOTQiLENHVUxMOiJjZ3VsbCIsTkZUOiJjYWRhd2ciLFJBUkU6ImJlZ2dhcnMiLExJQzoibGljdG9rZW4iLE1FTUJFUjoibWVtYmVydG9rZW4iLENPRkZFRToiYzBmZjMzYSIsUk9DSzoiYmVnZ2FycyIsTU9OU1RFUlM6InNpbXBsZWdhbWUiLFNFVFM6Imxvb3RraXQuZ2FtZXMiLFBIT1RPRlQ6Ind3d2llYmUiLEJFRVI6ImRldGxldiIsU1BJUjoic3BpbnZlc3QiLElGRzoibGlvbjIwMCIsR1VJTERTOiJzaW1wbGVnYW1lIixGQ0FSRDoibGlvbjIwMCIsUFhMOiJwaXhlbG5mdCIsQ09XOiJzdHVmZmJ5c3BlbmNlciIsTE9PT1Q6InN0dWZmYnlzcGVuY2VyIixTUE9SVFNNT006InNwb3J0c3Rlc3RlciIsU1dUOiJzYXRyZW4ifTthY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoIm5mdHMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJuZnRzIixbInN5bWJvbCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLFsic3ltYm9sIiwiY29tcGxldGVUaW1lc3RhbXAiXSk7Y29uc3QgcGFyYW1zPXtuZnRDcmVhdGlvbkZlZToiMTAwIixuZnRJc3N1YW5jZUZlZTp7IkJFRSI6IjAuMDAxIixQQUw6IjAuMDAxIn0sZGF0YVByb3BlcnR5Q3JlYXRpb25GZWU6IjEwMCIsZW5hYmxlRGVsZWdhdGlvbkZlZToiMTAwMCJ9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX19LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtuZnRDcmVhdGlvbkZlZTpuZnRDcmVhdGlvbkZlZSxuZnRJc3N1YW5jZUZlZTpuZnRJc3N1YW5jZUZlZSxkYXRhUHJvcGVydHlDcmVhdGlvbkZlZTpkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSxlbmFibGVEZWxlZ2F0aW9uRmVlOmVuYWJsZURlbGVnYXRpb25GZWV9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtuZnRDcmVhdGlvbkZlZSYmInN0cmluZyI9PXR5cGVvZiBuZnRDcmVhdGlvbkZlZSYmIWFwaS5CaWdOdW1iZXIobmZ0Q3JlYXRpb25GZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobmZ0Q3JlYXRpb25GZWUpLmd0ZSgwKSYmKHBhcmFtcy5uZnRDcmVhdGlvbkZlZT1uZnRDcmVhdGlvbkZlZSksbmZ0SXNzdWFuY2VGZWUmJiJvYmplY3QiPT10eXBlb2YgbmZ0SXNzdWFuY2VGZWUmJihwYXJhbXMubmZ0SXNzdWFuY2VGZWU9bmZ0SXNzdWFuY2VGZWUpLGRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlJiYic3RyaW5nIj09dHlwZW9mIGRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlJiYhYXBpLkJpZ051bWJlcihkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSkuZ3RlKDApJiYocGFyYW1zLmRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlPWRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlKSxlbmFibGVEZWxlZ2F0aW9uRmVlJiYic3RyaW5nIj09dHlwZW9mIGVuYWJsZURlbGVnYXRpb25GZWUmJiFhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkuZ3RlKDApJiYocGFyYW1zLmVuYWJsZURlbGVnYXRpb25GZWU9ZW5hYmxlRGVsZWdhdGlvbkZlZSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfTtjb25zdCBpc1Rva2VuVHJhbnNmZXJWZXJpZmllZD0ocmVzdWx0LGZyb20sdG8sc3ltYm9sLHF1YW50aXR5LGV2ZW50U3RyKT0+ISh2b2lkIDAhPT1yZXN1bHQuZXJyb3JzfHwhcmVzdWx0LmV2ZW50c3x8dm9pZCAwPT09cmVzdWx0LmV2ZW50cy5maW5kKChlbD0+InRva2VucyI9PT1lbC5jb250cmFjdCYmZWwuZXZlbnQ9PT1ldmVudFN0ciYmZWwuZGF0YS5mcm9tPT09ZnJvbSYmZWwuZGF0YS50bz09PXRvJiZlbC5kYXRhLnF1YW50aXR5PT09cXVhbnRpdHkmJmVsLmRhdGEuc3ltYm9sPT09c3ltYm9sKSkpLGNhbGN1bGF0ZUJhbGFuY2U9KGJhbGFuY2UscXVhbnRpdHkscHJlY2lzaW9uLGFkZCk9PmFkZD9hcGkuQmlnTnVtYmVyKGJhbGFuY2UpLnBsdXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKTphcGkuQmlnTnVtYmVyKGJhbGFuY2UpLm1pbnVzKHF1YW50aXR5KS50b0ZpeGVkKHByZWNpc2lvbiksY291bnREZWNpbWFscz12YWx1ZT0+YXBpLkJpZ051bWJlcih2YWx1ZSkuZHAoKSxjb250YWluc0R1cGxpY2F0ZXM9YXJyPT5uZXcgU2V0KGFycikuc2l6ZSE9PWFyci5sZW5ndGgsaXNWYWxpZEhpdmVBY2NvdW50TGVuZ3RoPWFjY291bnQ9PmFjY291bnQubGVuZ3RoPj0zJiZhY2NvdW50Lmxlbmd0aDw9MTYsaXNWYWxpZENvbnRyYWN0TGVuZ3RoPWNvbnRyYWN0PT5jb250cmFjdC5sZW5ndGg+PTMmJmNvbnRyYWN0Lmxlbmd0aDw9NTAsaXNWYWxpZEFjY291bnRzQXJyYXk9YXJyPT57bGV0IHZhbGlkQ29udGVudHM9ITA7cmV0dXJuIGFyci5mb3JFYWNoKChhY2NvdW50PT57InN0cmluZyI9PXR5cGVvZiBhY2NvdW50JiZpc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGgoYWNjb3VudCl8fCh2YWxpZENvbnRlbnRzPSExKX0pKSx2YWxpZENvbnRlbnRzfSxpc1ZhbGlkQ29udHJhY3RzQXJyYXk9YXJyPT57bGV0IHZhbGlkQ29udGVudHM9ITA7cmV0dXJuIGFyci5mb3JFYWNoKChjb250cmFjdD0+eyJzdHJpbmciPT10eXBlb2YgY29udHJhY3QmJmlzVmFsaWRDb250cmFjdExlbmd0aChjb250cmFjdCl8fCh2YWxpZENvbnRlbnRzPSExKX0pKSx2YWxpZENvbnRlbnRzfSxpc1ZhbGlkRGF0YVByb3BlcnRpZXM9KGZyb20sZnJvbVR5cGUsbmZ0LHByb3BlcnRpZXMpPT57Y29uc3QgcHJvcGVydHlDb3VudD1PYmplY3Qua2V5cyhwcm9wZXJ0aWVzKS5sZW5ndGgsbmZ0UHJvcGVydHlDb3VudD1PYmplY3Qua2V5cyhuZnQucHJvcGVydGllcykubGVuZ3RoO2lmKCFhcGkuYXNzZXJ0KHByb3BlcnR5Q291bnQ8PW5mdFByb3BlcnR5Q291bnQsImNhbm5vdCBzZXQgbW9yZSBkYXRhIHByb3BlcnRpZXMgdGhhbiBORlQgaGFzIikpcmV0dXJuITE7Zm9yKGNvbnN0W25hbWUsZGF0YV1vZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSl7bGV0IHZhbGlkQ29udGVudHM9ITE7aWYoYXBpLmFzc2VydChuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUmJmFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMobmFtZSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD0yNSwiaW52YWxpZCBkYXRhIHByb3BlcnR5IG5hbWU6IGxldHRlcnMgJiBudW1iZXJzIG9ubHksIG1heCBsZW5ndGggb2YgMjUiKSYmYXBpLmFzc2VydChuYW1lIGluIG5mdC5wcm9wZXJ0aWVzLCJkYXRhIHByb3BlcnR5IG11c3QgZXhpc3QiKSl7Y29uc3QgcHJvcGVydHlTY2hlbWE9bmZ0LnByb3BlcnRpZXNbbmFtZV07YXBpLmFzc2VydChudWxsIT1kYXRhJiYodHlwZW9mIGRhdGE9PT1wcm9wZXJ0eVNjaGVtYS50eXBlfHwibnVtYmVyIj09PXByb3BlcnR5U2NoZW1hLnR5cGUmJiJzdHJpbmciPT10eXBlb2YgZGF0YSYmIWFwaS5CaWdOdW1iZXIoZGF0YSkuaXNOYU4oKSksYGRhdGEgcHJvcGVydHkgdHlwZSBtaXNtYXRjaDogZXhwZWN0ZWQgJHtwcm9wZXJ0eVNjaGVtYS50eXBlfSBidXQgZ290ICR7dHlwZW9mIGRhdGF9IGZvciBwcm9wZXJ0eSAke25hbWV9YCkmJmFwaS5hc3NlcnQoInN0cmluZyIhPXR5cGVvZiBkYXRhfHxkYXRhLmxlbmd0aDw9MTAwLCJzdHJpbmcgcHJvcGVydHkgbWF4IGxlbmd0aCBpcyAxMDAgY2hhcmFjdGVycyIpJiZhcGkuYXNzZXJ0KCJjb250cmFjdCI9PT1mcm9tVHlwZSYmcHJvcGVydHlTY2hlbWEuYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHMuaW5jbHVkZXMoZnJvbSl8fCJ1c2VyIj09PWZyb21UeXBlJiZwcm9wZXJ0eVNjaGVtYS5hdXRob3JpemVkRWRpdGluZ0FjY291bnRzLmluY2x1ZGVzKGZyb20pLCJub3QgYWxsb3dlZCB0byBzZXQgZGF0YSBwcm9wZXJ0aWVzIikmJih2YWxpZENvbnRlbnRzPSEwLCJudW1iZXIiPT09cHJvcGVydHlTY2hlbWEudHlwZSYmInN0cmluZyI9PXR5cGVvZiBkYXRhJiYocHJvcGVydGllc1tuYW1lXT1hcGkuQmlnTnVtYmVyKGRhdGEpLnRvTnVtYmVyKCkpKX1pZighdmFsaWRDb250ZW50cylyZXR1cm4hMX1yZXR1cm4hMH0saXNWYWxpZERhdGFQcm9wZXJ0aWVzQXJyYXk9KGZyb20sZnJvbVR5cGUsbmZ0LGFycik9Pnt0cnl7Zm9yKGxldCBpPTA7aTxhcnIubGVuZ3RoO2krPTEpe2xldCB2YWxpZENvbnRlbnRzPSExO2NvbnN0e2lkOmlkLHByb3BlcnRpZXM6cHJvcGVydGllc309YXJyW2ldO2lmKGFwaS5hc3NlcnQoaWQmJiJzdHJpbmciPT10eXBlb2YgaWQmJiFhcGkuQmlnTnVtYmVyKGlkKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGlkKS5ndCgwKSYmcHJvcGVydGllcyYmIm9iamVjdCI9PXR5cGVvZiBwcm9wZXJ0aWVzLCJpbnZhbGlkIGRhdGEgcHJvcGVydGllcyIpJiZpc1ZhbGlkRGF0YVByb3BlcnRpZXMoZnJvbSxmcm9tVHlwZSxuZnQscHJvcGVydGllcykmJih2YWxpZENvbnRlbnRzPSEwKSwhdmFsaWRDb250ZW50cylyZXR1cm4hMX19Y2F0Y2goZSl7cmV0dXJuITF9cmV0dXJuITB9LGlzVmFsaWROZnRJZEFycmF5PWFycj0+e3RyeXtsZXQgaW5zdGFuY2VDb3VudD0wO2ZvcihsZXQgaT0wO2k8YXJyLmxlbmd0aDtpKz0xKXtsZXQgdmFsaWRDb250ZW50cz0hMTtjb25zdHtzeW1ib2w6c3ltYm9sLGlkczppZHN9PWFycltpXTtpZihhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmFwaS52YWxpZGF0b3IuaXNBbHBoYShzeW1ib2wpJiZhcGkudmFsaWRhdG9yLmlzVXBwZXJjYXNlKHN5bWJvbCkmJnN5bWJvbC5sZW5ndGg+MCYmc3ltYm9sLmxlbmd0aDw9MTAmJmlkcyYmIm9iamVjdCI9PXR5cGVvZiBpZHMmJkFycmF5LmlzQXJyYXkoaWRzKSwiaW52YWxpZCBuZnQgbGlzdCIpJiYoaW5zdGFuY2VDb3VudCs9aWRzLmxlbmd0aCxhcGkuYXNzZXJ0KGluc3RhbmNlQ291bnQ8PTUwLCJjYW5ub3Qgb3BlcmF0ZSBvbiBtb3JlIHRoYW4gNTAgTkZUIGluc3RhbmNlcyBhdCBvbmNlIikpKXtmb3IobGV0IGo9MDtqPGlkcy5sZW5ndGg7ais9MSl7Y29uc3QgaWQ9aWRzW2pdO2lmKCFhcGkuYXNzZXJ0KGlkJiYic3RyaW5nIj09dHlwZW9mIGlkJiYhYXBpLkJpZ051bWJlcihpZCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihpZCkuZ3QoMCksImludmFsaWQgbmZ0IGxpc3QiKSlyZXR1cm4hMX12YWxpZENvbnRlbnRzPSEwfWlmKCF2YWxpZENvbnRlbnRzKXJldHVybiExfX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH0saXNWYWxpZFRva2VuQmFza2V0PWFzeW5jKGJhc2tldCxiYWxhbmNlVGFibGVOYW1lLGFjY291bnROYW1lLGZlZVN5bWJvbCxmZWVRdWFudGl0eSk9Pnt0cnl7aWYoT2JqZWN0LmtleXMoYmFza2V0KS5sZW5ndGg+MTApcmV0dXJuITE7Zm9yKGNvbnN0W3N5bWJvbCxxdWFudGl0eV1vZiBPYmplY3QuZW50cmllcyhiYXNrZXQpKXtsZXQgdmFsaWRDb250ZW50cz0hMTtpZigic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmYXBpLnZhbGlkYXRvci5pc0FscGhhKHN5bWJvbCkmJmFwaS52YWxpZGF0b3IuaXNVcHBlcmNhc2Uoc3ltYm9sKSYmc3ltYm9sLmxlbmd0aD4wJiZzeW1ib2wubGVuZ3RoPD0xMCl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYodG9rZW4mJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCkmJmNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24pe2NvbnN0IGZpbmFsUXVhbnRpdHk9c3ltYm9sPT09ZmVlU3ltYm9sP2NhbGN1bGF0ZUJhbGFuY2UocXVhbnRpdHksZmVlUXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKTpxdWFudGl0eSxiYXNrZXRUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLGJhbGFuY2VUYWJsZU5hbWUse2FjY291bnQ6YWNjb3VudE5hbWUsc3ltYm9sOnN5bWJvbH0pO2Jhc2tldFRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcihiYXNrZXRUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGZpbmFsUXVhbnRpdHkpJiYodmFsaWRDb250ZW50cz0hMCl9fWlmKCF2YWxpZENvbnRlbnRzKXJldHVybiExfX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH0sdHJhbnNmZXJBbmRWZXJpZnlOZnRzPWFzeW5jKGZyb20sZnJvbVR5cGUsdG8sdG9UeXBlLG5mdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm8pPT57Y29uc3QgcmVzdWx0cz17c3VjY2VzczpbXSxmYWlsOltdfSxmaW5hbEZyb21UeXBlPSJ1c2VyIj09PWZyb21UeXBlPyJ1IjoiYyIsZmluYWxUb1R5cGU9InVzZXIiPT09dG9UeXBlPyJ1IjoiYyI7YXdhaXQgYWN0aW9ucy50cmFuc2Zlcih7ZnJvbVR5cGU6ZnJvbVR5cGUsdG86dG8sdG9UeXBlOnRvVHlwZSxuZnRzOm5mdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleSxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99KTtjb25zdCBsb2dzPWFwaS5sb2dzKCksdG9rZW5NYXA9e30sY291bnRlZE1hcD17fTtpZihsb2dzLmV2ZW50cylmb3IobGV0IGk9MDtpPGxvZ3MuZXZlbnRzLmxlbmd0aDtpKz0xKXtjb25zdCBldj1sb2dzLmV2ZW50c1tpXTtpZihldi5jb250cmFjdCYmZXYuZXZlbnQmJmV2LmRhdGEmJiJuZnQiPT09ZXYuY29udHJhY3QmJiJ0cmFuc2ZlciI9PT1ldi5ldmVudCYmZXYuZGF0YS5mcm9tPT09ZnJvbSYmZXYuZGF0YS5mcm9tVHlwZT09PWZpbmFsRnJvbVR5cGUmJmV2LmRhdGEudG89PT10byYmZXYuZGF0YS50b1R5cGU9PT1maW5hbFRvVHlwZSl7dG9rZW5NYXBbZXYuZGF0YS5zeW1ib2wrIi0iK2V2LmRhdGEuaWRdPTF9fWZvcihsZXQgaW5kZXg9MDtpbmRleDxuZnRzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3R7c3ltYm9sOnN5bWJvbCxpZHM6aWRzfT1uZnRzW2luZGV4XSxzdWNjZXNzPVtdLGZhaWw9W107Zm9yKGxldCBqPTA7ajxpZHMubGVuZ3RoO2orPTEpe2NvbnN0IGlucHV0S2V5PXN5bWJvbCsiLSIraWRzW2pdO2lucHV0S2V5IGluIGNvdW50ZWRNYXB8fChpbnB1dEtleSBpbiB0b2tlbk1hcD9zdWNjZXNzLnB1c2goaWRzW2pdLnRvU3RyaW5nKCkpOmZhaWwucHVzaChpZHNbal0udG9TdHJpbmcoKSksY291bnRlZE1hcFtpbnB1dEtleV09MSl9c3VjY2Vzcy5sZW5ndGg+MCYmcmVzdWx0cy5zdWNjZXNzLnB1c2goe3N5bWJvbDpzeW1ib2wsaWRzOnN1Y2Nlc3N9KSxmYWlsLmxlbmd0aD4wJiZyZXN1bHRzLmZhaWwucHVzaCh7c3ltYm9sOnN5bWJvbCxpZHM6ZmFpbH0pfXJldHVybiByZXN1bHRzfTthY3Rpb25zLnVwZGF0ZVVybD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dXJsOnVybCxzeW1ib2w6c3ltYm9sfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdXJsJiYic3RyaW5nIj09dHlwZW9mIHVybCwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydCh1cmwubGVuZ3RoPD0yNTUsImludmFsaWQgdXJsOiBtYXggbGVuZ3RoIG9mIDI1NSIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0JiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl0cnl7Y29uc3QgbWV0YWRhdGE9SlNPTi5wYXJzZShuZnQubWV0YWRhdGEpO2FwaS5hc3NlcnQobWV0YWRhdGEmJm1ldGFkYXRhLnVybCwiYW4gZXJyb3Igb2NjdXJlZCB3aGVuIHRyeWluZyB0byB1cGRhdGUgdGhlIHVybCIpJiYobWV0YWRhdGEudXJsPXVybCxuZnQubWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpLGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCkpfWNhdGNoKGUpe319fSxhY3Rpb25zLnVwZGF0ZU1ldGFkYXRhPWFzeW5jIHBheWxvYWQ9Pntjb25zdHttZXRhZGF0YTptZXRhZGF0YSxzeW1ib2w6c3ltYm9sfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmbWV0YWRhdGEmJiJvYmplY3QiPT10eXBlb2YgbWV0YWRhdGEsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXRyeXtjb25zdCBmaW5hbE1ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG1ldGFkYXRhKTthcGkuYXNzZXJ0KGZpbmFsTWV0YWRhdGEubGVuZ3RoPD0xZTMsImludmFsaWQgbWV0YWRhdGE6IG1heCBsZW5ndGggb2YgMTAwMCIpJiYobmZ0Lm1ldGFkYXRhPWZpbmFsTWV0YWRhdGEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSl9Y2F0Y2goZSl7fX19LGFjdGlvbnMudXBkYXRlTmFtZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bmFtZTpuYW1lLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChuYW1lLCIgIikpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9NTAsImludmFsaWQgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7bmZ0JiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmKG5mdC5uYW1lPW5hbWUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSl9fSxhY3Rpb25zLnVwZGF0ZU9yZ05hbWU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e29yZ05hbWU6b3JnTmFtZSxzeW1ib2w6c3ltYm9sfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmb3JnTmFtZSYmInN0cmluZyI9PXR5cGVvZiBvcmdOYW1lLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3Qob3JnTmFtZSwiICIpKSYmb3JnTmFtZS5sZW5ndGg+MCYmb3JnTmFtZS5sZW5ndGg8PTUwLCJpbnZhbGlkIG9yZyBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDUwIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtuZnQmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiYobmZ0Lm9yZ05hbWU9b3JnTmFtZSxhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixuZnQpKX19LGFjdGlvbnMudXBkYXRlUHJvZHVjdE5hbWU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3Byb2R1Y3ROYW1lOnByb2R1Y3ROYW1lLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZwcm9kdWN0TmFtZSYmInN0cmluZyI9PXR5cGVvZiBwcm9kdWN0TmFtZSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KHByb2R1Y3ROYW1lLCIgIikpJiZwcm9kdWN0TmFtZS5sZW5ndGg+MCYmcHJvZHVjdE5hbWUubGVuZ3RoPD01MCwiaW52YWxpZCBwcm9kdWN0IG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO25mdCYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJihuZnQucHJvZHVjdE5hbWU9cHJvZHVjdE5hbWUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSl9fSxhY3Rpb25zLmFkZEF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2FjY291bnRzOmFjY291bnRzLHN5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZhY2NvdW50cyYmIm9iamVjdCI9PXR5cGVvZiBhY2NvdW50cyYmQXJyYXkuaXNBcnJheShhY2NvdW50cyksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYWNjb3VudHMubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgaXNzdWluZyBhY2NvdW50cyIpKXtjb25zdCB2YWxpZENvbnRlbnRzPWlzVmFsaWRBY2NvdW50c0FycmF5KGFjY291bnRzKTtpZihhcGkuYXNzZXJ0KHZhbGlkQ29udGVudHMsImludmFsaWQgYWNjb3VudCBsaXN0Iikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQpe2NvbnN0IHNhbml0aXplZExpc3Q9W107aWYoYWNjb3VudHMuZm9yRWFjaCgoYWNjb3VudD0+e2NvbnN0IGZpbmFsQWNjb3VudD1hY2NvdW50LnRyaW0oKS50b0xvd2VyQ2FzZSgpO2xldCBpc0R1cGxpY2F0ZT0hMTtmb3IobGV0IGk9MDtpPG5mdC5hdXRob3JpemVkSXNzdWluZ0FjY291bnRzLmxlbmd0aDtpKz0xKWlmKGZpbmFsQWNjb3VudD09PW5mdC5hdXRob3JpemVkSXNzdWluZ0FjY291bnRzW2ldKXtpc0R1cGxpY2F0ZT0hMDticmVha31pc0R1cGxpY2F0ZXx8c2FuaXRpemVkTGlzdC5wdXNoKGZpbmFsQWNjb3VudCl9KSksYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQoIWNvbnRhaW5zRHVwbGljYXRlcyhzYW5pdGl6ZWRMaXN0KSwiY2Fubm90IGFkZCB0aGUgc2FtZSBhY2NvdW50IHR3aWNlIikmJmFwaS5hc3NlcnQobmZ0LmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMubGVuZ3RoK3Nhbml0aXplZExpc3QubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgaXNzdWluZyBhY2NvdW50cyIpKXtjb25zdCBmaW5hbEFjY291bnRMaXN0PW5mdC5hdXRob3JpemVkSXNzdWluZ0FjY291bnRzLmNvbmNhdChzYW5pdGl6ZWRMaXN0KTtuZnQuYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cz1maW5hbEFjY291bnRMaXN0LGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCl9fX19fSxhY3Rpb25zLmFkZEF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtjb250cmFjdHM6Y29udHJhY3RzLHN5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZjb250cmFjdHMmJiJvYmplY3QiPT10eXBlb2YgY29udHJhY3RzJiZBcnJheS5pc0FycmF5KGNvbnRyYWN0cyksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoY29udHJhY3RzLmxlbmd0aDw9MTAsImNhbm5vdCBoYXZlIG1vcmUgdGhhbiAxMCBhdXRob3JpemVkIGlzc3VpbmcgY29udHJhY3RzIikpe2NvbnN0IHZhbGlkQ29udGVudHM9aXNWYWxpZENvbnRyYWN0c0FycmF5KGNvbnRyYWN0cyk7aWYoYXBpLmFzc2VydCh2YWxpZENvbnRlbnRzLCJpbnZhbGlkIGNvbnRyYWN0IGxpc3QiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCl7Y29uc3Qgc2FuaXRpemVkTGlzdD1bXTtpZihjb250cmFjdHMuZm9yRWFjaCgoY29udHJhY3Q9Pntjb25zdCBmaW5hbENvbnRyYWN0PWNvbnRyYWN0LnRyaW0oKTtsZXQgaXNEdXBsaWNhdGU9ITE7Zm9yKGxldCBpPTA7aTxuZnQuYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMubGVuZ3RoO2krPTEpaWYoZmluYWxDb250cmFjdD09PW5mdC5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0c1tpXSl7aXNEdXBsaWNhdGU9ITA7YnJlYWt9aXNEdXBsaWNhdGV8fHNhbml0aXplZExpc3QucHVzaChmaW5hbENvbnRyYWN0KX0pKSxhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCghY29udGFpbnNEdXBsaWNhdGVzKHNhbml0aXplZExpc3QpLCJjYW5ub3QgYWRkIHRoZSBzYW1lIGNvbnRyYWN0IHR3aWNlIikmJmFwaS5hc3NlcnQobmZ0LmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzLmxlbmd0aCtzYW5pdGl6ZWRMaXN0Lmxlbmd0aDw9MTAsImNhbm5vdCBoYXZlIG1vcmUgdGhhbiAxMCBhdXRob3JpemVkIGlzc3VpbmcgY29udHJhY3RzIikpe2NvbnN0IGZpbmFsQ29udHJhY3RMaXN0PW5mdC5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cy5jb25jYXQoc2FuaXRpemVkTGlzdCk7bmZ0LmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzPWZpbmFsQ29udHJhY3RMaXN0LGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCl9fX19fSxhY3Rpb25zLnJlbW92ZUF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2FjY291bnRzOmFjY291bnRzLHN5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZhY2NvdW50cyYmIm9iamVjdCI9PXR5cGVvZiBhY2NvdW50cyYmQXJyYXkuaXNBcnJheShhY2NvdW50cyksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYWNjb3VudHMubGVuZ3RoPD0xMCwiY2Fubm90IHJlbW92ZSBtb3JlIHRoYW4gMTAgYXV0aG9yaXplZCBpc3N1aW5nIGFjY291bnRzIikpe2NvbnN0IHZhbGlkQ29udGVudHM9aXNWYWxpZEFjY291bnRzQXJyYXkoYWNjb3VudHMpO2lmKGFwaS5hc3NlcnQodmFsaWRDb250ZW50cywiaW52YWxpZCBhY2NvdW50IGxpc3QiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe2NvbnN0IGZpbmFsQWNjb3VudExpc3Q9bmZ0LmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMuZmlsdGVyKChjdXJyZW50VmFsdWU9Pntmb3IobGV0IGk9MDtpPGFjY291bnRzLmxlbmd0aDtpKz0xKXtpZihjdXJyZW50VmFsdWU9PT1hY2NvdW50c1tpXS50cmltKCkudG9Mb3dlckNhc2UoKSlyZXR1cm4hMX1yZXR1cm4hMH0pKTtuZnQuYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cz1maW5hbEFjY291bnRMaXN0LGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCl9fX19LGFjdGlvbnMucmVtb3ZlQXV0aG9yaXplZElzc3VpbmdDb250cmFjdHM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2NvbnRyYWN0czpjb250cmFjdHMsc3ltYm9sOnN5bWJvbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmNvbnRyYWN0cyYmIm9iamVjdCI9PXR5cGVvZiBjb250cmFjdHMmJkFycmF5LmlzQXJyYXkoY29udHJhY3RzKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChjb250cmFjdHMubGVuZ3RoPD0xMCwiY2Fubm90IHJlbW92ZSBtb3JlIHRoYW4gMTAgYXV0aG9yaXplZCBpc3N1aW5nIGNvbnRyYWN0cyIpKXtjb25zdCB2YWxpZENvbnRlbnRzPWlzVmFsaWRDb250cmFjdHNBcnJheShjb250cmFjdHMpO2lmKGFwaS5hc3NlcnQodmFsaWRDb250ZW50cywiaW52YWxpZCBjb250cmFjdCBsaXN0Iikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtjb25zdCBmaW5hbENvbnRyYWN0TGlzdD1uZnQuYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMuZmlsdGVyKChjdXJyZW50VmFsdWU9Pntmb3IobGV0IGk9MDtpPGNvbnRyYWN0cy5sZW5ndGg7aSs9MSl7aWYoY3VycmVudFZhbHVlPT09Y29udHJhY3RzW2ldLnRyaW0oKSlyZXR1cm4hMX1yZXR1cm4hMH0pKTtuZnQuYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHM9ZmluYWxDb250cmFjdExpc3QsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KX19fX0sYWN0aW9ucy50cmFuc2Zlck93bmVyc2hpcD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx0bzp0byxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnRvJiYic3RyaW5nIj09dHlwZW9mIHRvLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0JiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCkudG9Mb3dlckNhc2UoKTthcGkuYXNzZXJ0KGlzVmFsaWRIaXZlQWNjb3VudExlbmd0aChmaW5hbFRvKSwiaW52YWxpZCB0byIpJiYobmZ0Lmlzc3Vlcj1maW5hbFRvLGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCksYXBpLmVtaXQoInRyYW5zZmVyT3duZXJzaGlwIix7ZnJvbTphcGkuc2VuZGVyLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbH0pKX19fSxhY3Rpb25zLmVuYWJsZURlbGVnYXRpb249YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdW5kZWxlZ2F0aW9uQ29vbGRvd246dW5kZWxlZ2F0aW9uQ29vbGRvd24saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtlbmFibGVEZWxlZ2F0aW9uRmVlOmVuYWJsZURlbGVnYXRpb25GZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOlVUSUxJVFlfVE9LRU5fU1lNQk9MfSksYXV0aG9yaXplZD0hIWFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkubHRlKDApfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGVuYWJsZURlbGVnYXRpb25GZWUpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZCwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIGZlZXMiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCwiaW52YWxpZCBzeW1ib2wiKSYmYXBpLmFzc2VydCh1bmRlbGVnYXRpb25Db29sZG93biYmTnVtYmVyLmlzSW50ZWdlcih1bmRlbGVnYXRpb25Db29sZG93bikmJnVuZGVsZWdhdGlvbkNvb2xkb3duPjAmJnVuZGVsZWdhdGlvbkNvb2xkb3duPD0xODI1MCwidW5kZWxlZ2F0aW9uQ29vbGRvd24gbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTgyNTAiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PW5mdCwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW5mdC5kZWxlZ2F0aW9uRW5hYmxlZHx8ITE9PT1uZnQuZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gYWxyZWFkeSBlbmFibGVkIikpe2lmKGFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkuZ3QoMCkpe2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDpVVElMSVRZX1RPS0VOX1NZTUJPTCxxdWFudGl0eTplbmFibGVEZWxlZ2F0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZighaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGFwaS5zZW5kZXIsIm51bGwiLFVUSUxJVFlfVE9LRU5fU1lNQk9MLGVuYWJsZURlbGVnYXRpb25GZWUsInRyYW5zZmVyIikpcmV0dXJuITF9cmV0dXJuIG5mdC5kZWxlZ2F0aW9uRW5hYmxlZD0hMCxuZnQudW5kZWxlZ2F0aW9uQ29vbGRvd249dW5kZWxlZ2F0aW9uQ29vbGRvd24sYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSwhMH19cmV0dXJuITF9LGFjdGlvbnMudXBkYXRlUHJvcGVydHlEZWZpbml0aW9uPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLG5hbWU6bmFtZSxuZXdOYW1lOm5ld05hbWUsdHlwZTp0eXBlLGlzUmVhZE9ubHk6aXNSZWFkT25seSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJm5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKG5hbWUpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9MjUsImludmFsaWQgbmFtZTogbGV0dGVycyAmIG51bWJlcnMgb25seSwgbWF4IGxlbmd0aCBvZiAyNSIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW5ld05hbWV8fCJzdHJpbmciPT10eXBlb2YgbmV3TmFtZSYmYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhuZXdOYW1lKSYmbmV3TmFtZS5sZW5ndGg+MCYmbmV3TmFtZS5sZW5ndGg8PTI1LCJpbnZhbGlkIG5ldyBuYW1lOiBsZXR0ZXJzICYgbnVtYmVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDI1IikmJmFwaS5hc3NlcnQodm9pZCAwPT09dHlwZXx8InN0cmluZyI9PXR5cGVvZiB0eXBlJiYoIm51bWJlciI9PT10eXBlfHwic3RyaW5nIj09PXR5cGV8fCJib29sZWFuIj09PXR5cGUpLCJpbnZhbGlkIHR5cGU6IG11c3QgYmUgbnVtYmVyLCBzdHJpbmcsIG9yIGJvb2xlYW4iKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1pc1JlYWRPbmx5fHwiYm9vbGVhbiI9PXR5cGVvZiBpc1JlYWRPbmx5LCJpbnZhbGlkIGlzUmVhZE9ubHk6IG11c3QgYmUgdHJ1ZSBvciBmYWxzZSIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0JiZhcGkuYXNzZXJ0KDA9PT1uZnQuc3VwcGx5LCJjYW5ub3QgY2hhbmdlIGRhdGEgcHJvcGVydHkgZGVmaW5pdGlvbjsgdG9rZW5zIGFscmVhZHkgaXNzdWVkIikmJmFwaS5hc3NlcnQobmFtZSBpbiBuZnQucHJvcGVydGllcywicHJvcGVydHkgbXVzdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7aWYodm9pZCAwIT09bmV3TmFtZSl7aWYodm9pZCAwIT09bmZ0Lmdyb3VwQnkmJm5mdC5ncm91cEJ5Lmxlbmd0aD4wJiYhYXBpLmFzc2VydCghbmZ0Lmdyb3VwQnkuaW5jbHVkZXMobmFtZSksImNhbm5vdCBjaGFuZ2UgZGF0YSBwcm9wZXJ0eSBuYW1lOyBwcm9wZXJ0eSBpcyBwYXJ0IG9mIGdyb3VwQnkiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydChuZXdOYW1lIT09bmFtZSwibmV3IG5hbWUgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSBvbGQgbmFtZSIpfHwhYXBpLmFzc2VydCghKG5ld05hbWUgaW4gbmZ0LnByb3BlcnRpZXMpLCJ0aGVyZSBpcyBhbHJlYWR5IGEgZGF0YSBwcm9wZXJ0eSB3aXRoIHRoZSBnaXZlbiBuZXcgbmFtZSIpKXJldHVybiExfWxldCBzaG91bGRVcGRhdGU9ITE7Y29uc3Qgb3JpZ2luYWxUeXBlPW5mdC5wcm9wZXJ0aWVzW25hbWVdLnR5cGUsb3JpZ2luYWxJc1JlYWRPbmx5PW5mdC5wcm9wZXJ0aWVzW25hbWVdLmlzUmVhZE9ubHk7cmV0dXJuIHZvaWQgMCE9PXR5cGUmJnR5cGUhPT1vcmlnaW5hbFR5cGUmJihuZnQucHJvcGVydGllc1tuYW1lXS50eXBlPXR5cGUsc2hvdWxkVXBkYXRlPSEwKSx2b2lkIDAhPT1pc1JlYWRPbmx5JiZpc1JlYWRPbmx5IT09b3JpZ2luYWxJc1JlYWRPbmx5JiYobmZ0LnByb3BlcnRpZXNbbmFtZV0uaXNSZWFkT25seT1pc1JlYWRPbmx5LHNob3VsZFVwZGF0ZT0hMCksdm9pZCAwIT09bmV3TmFtZSYmbmV3TmFtZSE9PW5hbWUmJihuZnQucHJvcGVydGllc1tuZXdOYW1lXT1uZnQucHJvcGVydGllc1tuYW1lXSxkZWxldGUgbmZ0LnByb3BlcnRpZXNbbmFtZV0sc2hvdWxkVXBkYXRlPSEwKSxzaG91bGRVcGRhdGUmJihhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixuZnQpLGFwaS5lbWl0KCJ1cGRhdGVQcm9wZXJ0eURlZmluaXRpb24iLHtzeW1ib2w6c3ltYm9sLG9yaWdpbmFsTmFtZTpuYW1lLG9yaWdpbmFsVHlwZTpvcmlnaW5hbFR5cGUsb3JpZ2luYWxJc1JlYWRPbmx5Om9yaWdpbmFsSXNSZWFkT25seSxuZXdOYW1lOm5ld05hbWUsbmV3VHlwZTp0eXBlLG5ld0lzUmVhZE9ubHk6aXNSZWFkT25seX0pKSwhMH19cmV0dXJuITF9LGFjdGlvbnMuYWRkUHJvcGVydHk9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsbmFtZTpuYW1lLHR5cGU6dHlwZSxpc1JlYWRPbmx5OmlzUmVhZE9ubHksYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50czphdXRob3JpemVkRWRpdGluZ0FjY291bnRzLGF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzOmF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7ZGF0YVByb3BlcnR5Q3JlYXRpb25GZWU6ZGF0YVByb3BlcnR5Q3JlYXRpb25GZWV9PXBhcmFtcztpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUmJih2b2lkIDA9PT1pc1JlYWRPbmx5fHwiYm9vbGVhbiI9PXR5cGVvZiBpc1JlYWRPbmx5KSYmKHZvaWQgMD09PWF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHN8fGF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHMmJiJvYmplY3QiPT10eXBlb2YgYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50cyYmQXJyYXkuaXNBcnJheShhdXRob3JpemVkRWRpdGluZ0FjY291bnRzKSkmJih2b2lkIDA9PT1hdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0c3x8YXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHMmJiJvYmplY3QiPT10eXBlb2YgYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHMmJkFycmF5LmlzQXJyYXkoYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHMpKSYmdHlwZSYmInN0cmluZyI9PXR5cGVvZiB0eXBlLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMobmFtZSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD0yNSwiaW52YWxpZCBuYW1lOiBsZXR0ZXJzICYgbnVtYmVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDI1IikmJmFwaS5hc3NlcnQoIm51bWJlciI9PT10eXBlfHwic3RyaW5nIj09PXR5cGV8fCJib29sZWFuIj09PXR5cGUsImludmFsaWQgdHlwZTogbXVzdCBiZSBudW1iZXIsIHN0cmluZywgb3IgYm9vbGVhbiIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0JiZhcGkuYXNzZXJ0KCEobmFtZSBpbiBuZnQucHJvcGVydGllcyksImNhbm5vdCBhZGQgdGhlIHNhbWUgcHJvcGVydHkgdHdpY2UiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe2lmKE9iamVjdC5rZXlzKG5mdC5wcm9wZXJ0aWVzKS5sZW5ndGg+PTMpe2NvbnN0IHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6VVRJTElUWV9UT0tFTl9TWU1CT0x9KSxhdXRob3JpemVkQ3JlYXRpb249ISFhcGkuQmlnTnVtYmVyKGRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlKS5sdGUoMCl8fHV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUoZGF0YVByb3BlcnR5Q3JlYXRpb25GZWUpO2lmKCFhcGkuYXNzZXJ0KGF1dGhvcml6ZWRDcmVhdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBjcmVhdGlvbiBmZWVzIikpcmV0dXJuITE7aWYoYXBpLkJpZ051bWJlcihkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSkuZ3QoMCkpe2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDpVVElMSVRZX1RPS0VOX1NZTUJPTCxxdWFudGl0eTpkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7aWYoIWlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxhcGkuc2VuZGVyLCJudWxsIixVVElMSVRZX1RPS0VOX1NZTUJPTCxkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSwidHJhbnNmZXIiKSlyZXR1cm4hMX19Y29uc3QgbmV3UHJvcGVydHk9e3R5cGU6dHlwZSxpc1JlYWRPbmx5OnZvaWQgMCE9PWlzUmVhZE9ubHkmJmlzUmVhZE9ubHksYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50czp2b2lkIDA9PT1hdXRob3JpemVkRWRpdGluZ0FjY291bnRzP1thcGkuc2VuZGVyXTpbXSxhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0czpbXX07cmV0dXJuIG5mdC5wcm9wZXJ0aWVzW25hbWVdPW5ld1Byb3BlcnR5LGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCksKGF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHN8fGF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzKSYmYXdhaXQgYWN0aW9ucy5zZXRQcm9wZXJ0eVBlcm1pc3Npb25zKHtzeW1ib2w6c3ltYm9sLG5hbWU6bmFtZSxhY2NvdW50czphdXRob3JpemVkRWRpdGluZ0FjY291bnRzLGNvbnRyYWN0czphdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksITB9fXJldHVybiExfSxhY3Rpb25zLnNldFByb3BlcnR5UGVybWlzc2lvbnM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsbmFtZTpuYW1lLGFjY291bnRzOmFjY291bnRzLGNvbnRyYWN0czpjb250cmFjdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUmJih2b2lkIDA9PT1hY2NvdW50c3x8YWNjb3VudHMmJiJvYmplY3QiPT10eXBlb2YgYWNjb3VudHMmJkFycmF5LmlzQXJyYXkoYWNjb3VudHMpKSYmKHZvaWQgMD09PWNvbnRyYWN0c3x8Y29udHJhY3RzJiYib2JqZWN0Ij09dHlwZW9mIGNvbnRyYWN0cyYmQXJyYXkuaXNBcnJheShjb250cmFjdHMpKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKG5hbWUpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9MjUsImludmFsaWQgbmFtZTogbGV0dGVycyAmIG51bWJlcnMgb25seSwgbWF4IGxlbmd0aCBvZiAyNSIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PWFjY291bnRzfHxhY2NvdW50cy5sZW5ndGg8PTEwLCJjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gMTAgYXV0aG9yaXplZCBhY2NvdW50cyIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PWNvbnRyYWN0c3x8Y29udHJhY3RzLmxlbmd0aDw9MTAsImNhbm5vdCBoYXZlIG1vcmUgdGhhbiAxMCBhdXRob3JpemVkIGNvbnRyYWN0cyIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PWFjY291bnRzfHxpc1ZhbGlkQWNjb3VudHNBcnJheShhY2NvdW50cyksImludmFsaWQgYWNjb3VudCBsaXN0IikmJmFwaS5hc3NlcnQodm9pZCAwPT09Y29udHJhY3RzfHxpc1ZhbGlkQ29udHJhY3RzQXJyYXkoY29udHJhY3RzKSwiaW52YWxpZCBjb250cmFjdCBsaXN0Iikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQobmFtZSBpbiBuZnQucHJvcGVydGllcywicHJvcGVydHkgbXVzdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7bGV0IHNhbml0aXplZEFjY291bnRMaXN0PVtdLHNhbml0aXplZENvbnRyYWN0TGlzdD1bXTtpZihhY2NvdW50cyYmKHNhbml0aXplZEFjY291bnRMaXN0PWFjY291bnRzLm1hcCgoYWNjb3VudD0+YWNjb3VudC50cmltKCkudG9Mb3dlckNhc2UoKSkpKSxjb250cmFjdHMmJihzYW5pdGl6ZWRDb250cmFjdExpc3Q9Y29udHJhY3RzLm1hcCgoY29udHJhY3Q9PmNvbnRyYWN0LnRyaW0oKSkpKSxhcGkuYXNzZXJ0KHZvaWQgMD09PWFjY291bnRzfHwhY29udGFpbnNEdXBsaWNhdGVzKHNhbml0aXplZEFjY291bnRMaXN0KSwiY2Fubm90IGFkZCB0aGUgc2FtZSBhY2NvdW50IHR3aWNlIikmJmFwaS5hc3NlcnQodm9pZCAwPT09Y29udHJhY3RzfHwhY29udGFpbnNEdXBsaWNhdGVzKHNhbml0aXplZENvbnRyYWN0TGlzdCksImNhbm5vdCBhZGQgdGhlIHNhbWUgY29udHJhY3QgdHdpY2UiKSl7bGV0IHNob3VsZFVwZGF0ZT0hMTthY2NvdW50cyYmKG5mdC5wcm9wZXJ0aWVzW25hbWVdLmF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHM9c2FuaXRpemVkQWNjb3VudExpc3Qsc2hvdWxkVXBkYXRlPSEwKSxjb250cmFjdHMmJihuZnQucHJvcGVydGllc1tuYW1lXS5hdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0cz1zYW5pdGl6ZWRDb250cmFjdExpc3Qsc2hvdWxkVXBkYXRlPSEwKSxzaG91bGRVcGRhdGUmJmF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCl9fX19LGFjdGlvbnMuc2V0R3JvdXBCeT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxwcm9wZXJ0aWVzOnByb3BlcnRpZXMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZwcm9wZXJ0aWVzJiYib2JqZWN0Ij09dHlwZW9mIHByb3BlcnRpZXMmJkFycmF5LmlzQXJyYXkocHJvcGVydGllcyksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQpe2NvbnN0IG5mdFByb3BlcnR5Q291bnQ9T2JqZWN0LmtleXMobmZ0LnByb3BlcnRpZXMpLmxlbmd0aDtpZihhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1uZnQuZ3JvdXBCeXx8MD09PW5mdC5ncm91cEJ5Lmxlbmd0aCwibGlzdCBpcyBhbHJlYWR5IHNldCIpJiZhcGkuYXNzZXJ0KHByb3BlcnRpZXMubGVuZ3RoPD1uZnRQcm9wZXJ0eUNvdW50LCJjYW5ub3Qgc2V0IG1vcmUgZGF0YSBwcm9wZXJ0aWVzIHRoYW4gTkZUIGhhcyIpJiZhcGkuYXNzZXJ0KCFjb250YWluc0R1cGxpY2F0ZXMocHJvcGVydGllcyksImxpc3QgY2Fubm90IGNvbnRhaW4gZHVwbGljYXRlcyIpKXtmb3IobGV0IGk9MDtpPHByb3BlcnRpZXMubGVuZ3RoO2krPTEpe2NvbnN0IG5hbWU9cHJvcGVydGllc1tpXTtpZighYXBpLmFzc2VydChuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUmJm5hbWUgaW4gbmZ0LnByb3BlcnRpZXMsImRhdGEgcHJvcGVydHkgbXVzdCBleGlzdCIpKXJldHVybiExfXJldHVybiBuZnQuZ3JvdXBCeT1wcm9wZXJ0aWVzLGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCksITB9fX1yZXR1cm4hMX0sYWN0aW9ucy5zZXRQcm9wZXJ0aWVzPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGZyb21UeXBlOmZyb21UeXBlLG5mdHM6bmZ0cyxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQsZmluYWxGcm9tVHlwZT12b2lkIDA9PT1mcm9tVHlwZT8idXNlciI6ZnJvbVR5cGU7aWYoYXBpLmFzc2VydChuZnRzJiYib2JqZWN0Ij09dHlwZW9mIG5mdHMmJkFycmF5LmlzQXJyYXkobmZ0cykmJmZpbmFsRnJvbVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZmluYWxGcm9tVHlwZSYmWyJ1c2VyIiwiY29udHJhY3QiXS5pbmNsdWRlcyhmaW5hbEZyb21UeXBlKSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmKGNhbGxpbmdDb250cmFjdEluZm98fHZvaWQgMD09PWNhbGxpbmdDb250cmFjdEluZm8mJiJ1c2VyIj09PWZpbmFsRnJvbVR5cGUpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KG5mdHMubGVuZ3RoPD01MCwiY2Fubm90IHNldCBwcm9wZXJ0aWVzIG9uIG1vcmUgdGhhbiA1MCBORlQgaW5zdGFuY2VzIGF0IG9uY2UiKSl7Y29uc3QgZmluYWxGcm9tPSJ1c2VyIj09PWZpbmFsRnJvbVR5cGU/YXBpLnNlbmRlcjpjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PW5mdCwic3ltYm9sIGRvZXMgbm90IGV4aXN0Iikpe2lmKCFpc1ZhbGlkRGF0YVByb3BlcnRpZXNBcnJheShmaW5hbEZyb20sZmluYWxGcm9tVHlwZSxuZnQsbmZ0cykpcmV0dXJuITE7Y29uc3QgaW5zdGFuY2VUYWJsZU5hbWU9c3ltYm9sKyJpbnN0YW5jZXMiO2ZvcihsZXQgaT0wO2k8bmZ0cy5sZW5ndGg7aSs9MSl7Y29uc3R7aWQ6aWQscHJvcGVydGllczpwcm9wZXJ0aWVzfT1uZnRzW2ldO2lmKDA9PT1PYmplY3Qua2V5cyhwcm9wZXJ0aWVzKS5sZW5ndGgpY29udGludWU7Y29uc3QgbmZ0SW5zdGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoaW5zdGFuY2VUYWJsZU5hbWUse19pZDphcGkuQmlnTnVtYmVyKGlkKS50b051bWJlcigpfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0SW5zdGFuY2UsIm5mdCBpbnN0YW5jZSBkb2VzIG5vdCBleGlzdCIpKXtsZXQgc2hvdWxkVXBkYXRlPSExO2Zvcihjb25zdFtuYW1lLGRhdGFdb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykpe2xldCBvbGRQcm9wZXJ0eT1udWxsO25mdC5wcm9wZXJ0aWVzW25hbWVdLmlzUmVhZE9ubHk/YXBpLmFzc2VydCghKG5hbWUgaW4gbmZ0SW5zdGFuY2UucHJvcGVydGllcyksImNhbm5vdCBlZGl0IHJlYWQtb25seSBwcm9wZXJ0aWVzIikmJihuZnRJbnN0YW5jZS5wcm9wZXJ0aWVzW25hbWVdPWRhdGEsc2hvdWxkVXBkYXRlPSEwKToob2xkUHJvcGVydHk9bmZ0SW5zdGFuY2UucHJvcGVydGllc1tuYW1lXSxuZnRJbnN0YW5jZS5wcm9wZXJ0aWVzW25hbWVdPWRhdGEsc2hvdWxkVXBkYXRlPSEwKSxzaG91bGRVcGRhdGUmJm9sZFByb3BlcnR5IT09ZGF0YSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVOZnRTZXRQcm9wZXJ0eSIse3N5bWJvbDpzeW1ib2wsbmZ0Om5mdEluc3RhbmNlLHByb3BlcnR5TmFtZTpuYW1lLG9sZFZhbHVlOm9sZFByb3BlcnR5fSl9c2hvdWxkVXBkYXRlJiZhd2FpdCBhcGkuZGIudXBkYXRlKGluc3RhbmNlVGFibGVOYW1lLG5mdEluc3RhbmNlKX19cmV0dXJuITB9fXJldHVybiExfSxhY3Rpb25zLmJ1cm49YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2Zyb21UeXBlOmZyb21UeXBlLG5mdHM6bmZ0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZCxmaW5hbEZyb21UeXBlPXZvaWQgMD09PWZyb21UeXBlPyJ1c2VyIjpmcm9tVHlwZTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChmaW5hbEZyb21UeXBlJiYic3RyaW5nIj09dHlwZW9mIGZpbmFsRnJvbVR5cGUmJlsidXNlciIsImNvbnRyYWN0Il0uaW5jbHVkZXMoZmluYWxGcm9tVHlwZSkmJihjYWxsaW5nQ29udHJhY3RJbmZvfHx2b2lkIDA9PT1jYWxsaW5nQ29udHJhY3RJbmZvJiYidXNlciI9PT1maW5hbEZyb21UeXBlKSYmbmZ0cyYmIm9iamVjdCI9PXR5cGVvZiBuZnRzJiZBcnJheS5pc0FycmF5KG5mdHMpLCJpbnZhbGlkIHBhcmFtcyIpJiZpc1ZhbGlkTmZ0SWRBcnJheShuZnRzKSl7Y29uc3QgZmluYWxGcm9tPSJ1c2VyIj09PWZpbmFsRnJvbVR5cGU/YXBpLnNlbmRlcjpjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWU7bGV0IGNvbnRhaW5lckNvdW50PTAsdG9rZW5Db3VudD0wLGlzRmlyc3RJbnN0YW5jZUNvbnRhaW5lcj0hMTtmb3IobGV0IGk9MDtpPG5mdHMubGVuZ3RoO2krPTEpe2NvbnN0e3N5bWJvbDpzeW1ib2wsaWRzOmlkc309bmZ0c1tpXSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0KXtjb25zdCBpbnN0YW5jZVRhYmxlTmFtZT1zeW1ib2wrImluc3RhbmNlcyI7Zm9yKGxldCBqPTA7ajxpZHMubGVuZ3RoO2orPTEpe2NvbnN0IGlkPWlkc1tqXSxuZnRJbnN0YW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZShpbnN0YW5jZVRhYmxlTmFtZSx7X2lkOmFwaS5CaWdOdW1iZXIoaWQpLnRvTnVtYmVyKCl9KTtpZihuZnRJbnN0YW5jZSl7bGV0IGlzQnVybkF1dGhvcml6ZWQ9ITA7aWYobmZ0SW5zdGFuY2UubG9ja2VkTmZ0cyYmbmZ0SW5zdGFuY2UubG9ja2VkTmZ0cy5sZW5ndGg+MD8oMD09PXRva2VuQ291bnQmJihpc0ZpcnN0SW5zdGFuY2VDb250YWluZXI9ITApLGNvbnRhaW5lckNvdW50Kz0xLChjb250YWluZXJDb3VudD4xfHwhaXNGaXJzdEluc3RhbmNlQ29udGFpbmVyKSYmKGlzQnVybkF1dGhvcml6ZWQ9ITEpKTppc0ZpcnN0SW5zdGFuY2VDb250YWluZXImJihpc0J1cm5BdXRob3JpemVkPSExKSx0b2tlbkNvdW50Kz0xLG5mdEluc3RhbmNlLmFjY291bnQ9PT1maW5hbEZyb20mJigidSI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYidXNlciI9PT1maW5hbEZyb21UeXBlfHwiYyI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSkmJnZvaWQgMD09PW5mdEluc3RhbmNlLmRlbGVnYXRlZFRvJiZpc0J1cm5BdXRob3JpemVkKXtjb25zdCBmaW5hbExvY2tUb2tlbnM9e307bGV0IGlzVHJhbnNmZXJTdWNjZXNzPSEwO2Zvcihjb25zdFtsb2Nrc3ltYm9sLHF1YW50aXR5XW9mIE9iamVjdC5lbnRyaWVzKG5mdEluc3RhbmNlLmxvY2tlZFRva2Vucykpe2NvbnN0IHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoZmluYWxGcm9tLGxvY2tzeW1ib2wscXVhbnRpdHksZmluYWxGcm9tVHlwZSk7aXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLCJuZnQiLGZpbmFsRnJvbSxsb2Nrc3ltYm9sLHF1YW50aXR5LCJ0cmFuc2ZlckZyb21Db250cmFjdCIpfHwoZmluYWxMb2NrVG9rZW5zW2xvY2tzeW1ib2xdPXF1YW50aXR5LGlzVHJhbnNmZXJTdWNjZXNzPSExKX1hcGkuYXNzZXJ0KGlzVHJhbnNmZXJTdWNjZXNzLGB1bmFibGUgdG8gcmVsZWFzZSBsb2NrZWQgdG9rZW5zIGluOiAke3N5bWJvbH0sIGlkICR7aWR9YCk7Y29uc3Qgb3JpZ0xvY2tOZnRzPW5mdEluc3RhbmNlLmxvY2tlZE5mdHMmJm5mdEluc3RhbmNlLmxvY2tlZE5mdHMubGVuZ3RoPjA/bmZ0SW5zdGFuY2UubG9ja2VkTmZ0czpbXTtpZihpc1RyYW5zZmVyU3VjY2VzcyYmbmZ0SW5zdGFuY2UubG9ja2VkTmZ0cyYmbmZ0SW5zdGFuY2UubG9ja2VkTmZ0cy5sZW5ndGg+MCl7Y29uc3QgcmVzPWF3YWl0IHRyYW5zZmVyQW5kVmVyaWZ5TmZ0cygibmZ0IiwiY29udHJhY3QiLGZpbmFsRnJvbSxmaW5hbEZyb21UeXBlLG5mdEluc3RhbmNlLmxvY2tlZE5mdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5LHtuYW1lOiJuZnQifSk7bmZ0SW5zdGFuY2UubG9ja2VkTmZ0cz1yZXMuZmFpbCxuZnRJbnN0YW5jZS5sb2NrZWROZnRzLmxlbmd0aD4wJiYoaXNUcmFuc2ZlclN1Y2Nlc3M9ITEpLGFwaS5hc3NlcnQoaXNUcmFuc2ZlclN1Y2Nlc3MsYHVuYWJsZSB0byByZWxlYXNlIGxvY2tlZCBORlQgaW5zdGFuY2VzIGluOiAke3N5bWJvbH0sIGlkICR7aWR9YCl9Y29uc3Qgb3JpZ093bmVkQnk9bmZ0SW5zdGFuY2Uub3duZWRCeSxvcmlnTG9ja1Rva2Vucz1uZnRJbnN0YW5jZS5sb2NrZWRUb2tlbnM7bmZ0SW5zdGFuY2UubG9ja2VkVG9rZW5zPWZpbmFsTG9ja1Rva2Vucyxpc1RyYW5zZmVyU3VjY2VzcyYmKG5mdEluc3RhbmNlLnByZXZpb3VzQWNjb3VudD1uZnRJbnN0YW5jZS5hY2NvdW50LG5mdEluc3RhbmNlLnByZXZpb3VzT3duZWRCeT1uZnRJbnN0YW5jZS5vd25lZEJ5LG5mdEluc3RhbmNlLmFjY291bnQ9Im51bGwiLG5mdEluc3RhbmNlLm93bmVkQnk9InUiLG5mdC5jaXJjdWxhdGluZ1N1cHBseS09MSksYXdhaXQgYXBpLmRiLnVwZGF0ZShpbnN0YW5jZVRhYmxlTmFtZSxuZnRJbnN0YW5jZSksaXNUcmFuc2ZlclN1Y2Nlc3MmJmFwaS5lbWl0KCJidXJuIix7YWNjb3VudDpmaW5hbEZyb20sb3duZWRCeTpvcmlnT3duZWRCeSx1bmxvY2tlZFRva2VuczpvcmlnTG9ja1Rva2Vucyx1bmxvY2tlZE5mdHM6b3JpZ0xvY2tOZnRzLHN5bWJvbDpzeW1ib2wsaWQ6aWR9KX19fWF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCl9fX19LGFjdGlvbnMudHJhbnNmZXI9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2Zyb21UeXBlOmZyb21UeXBlLHRvOnRvLHRvVHlwZTp0b1R5cGUsbmZ0czpuZnRzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkLHR5cGVzPVsidXNlciIsImNvbnRyYWN0Il0sZmluYWxUb1R5cGU9dm9pZCAwPT09dG9UeXBlPyJ1c2VyIjp0b1R5cGUsZmluYWxGcm9tVHlwZT12b2lkIDA9PT1mcm9tVHlwZT8idXNlciI6ZnJvbVR5cGU7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZmluYWxGcm9tVHlwZSYmInN0cmluZyI9PXR5cGVvZiBmaW5hbEZyb21UeXBlJiZ0eXBlcy5pbmNsdWRlcyhmaW5hbEZyb21UeXBlKSYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJmZpbmFsVG9UeXBlJiYic3RyaW5nIj09dHlwZW9mIGZpbmFsVG9UeXBlJiZ0eXBlcy5pbmNsdWRlcyhmaW5hbFRvVHlwZSkmJihjYWxsaW5nQ29udHJhY3RJbmZvfHx2b2lkIDA9PT1jYWxsaW5nQ29udHJhY3RJbmZvJiYidXNlciI9PT1maW5hbEZyb21UeXBlKSYmbmZ0cyYmIm9iamVjdCI9PXR5cGVvZiBuZnRzJiZBcnJheS5pc0FycmF5KG5mdHMpLCJpbnZhbGlkIHBhcmFtcyIpJiZpc1ZhbGlkTmZ0SWRBcnJheShuZnRzKSl7Y29uc3QgZmluYWxUbz0idXNlciI9PT1maW5hbFRvVHlwZT90by50cmltKCkudG9Mb3dlckNhc2UoKTp0by50cmltKCksdG9WYWxpZD0idXNlciI9PT1maW5hbFRvVHlwZT9pc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGgoZmluYWxUbyk6aXNWYWxpZENvbnRyYWN0TGVuZ3RoKGZpbmFsVG8pLGZpbmFsRnJvbT0idXNlciI9PT1maW5hbEZyb21UeXBlP2FwaS5zZW5kZXI6Y2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lO2lmKGFwaS5hc3NlcnQodG9WYWxpZCwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KCEoZmluYWxUb1R5cGU9PT1maW5hbEZyb21UeXBlJiZmaW5hbFRvPT09ZmluYWxGcm9tKSwiY2Fubm90IHRyYW5zZmVyIHRvIHNlbGYiKSYmYXBpLmFzc2VydCghKCJ1c2VyIj09PWZpbmFsVG9UeXBlJiYibnVsbCI9PT1maW5hbFRvKSwiY2Fubm90IHRyYW5zZmVyIHRvIG51bGw7IHVzZSBidXJuIGFjdGlvbiBpbnN0ZWFkIikpZm9yKGxldCBpPTA7aTxuZnRzLmxlbmd0aDtpKz0xKXtjb25zdHtzeW1ib2w6c3ltYm9sLGlkczppZHN9PW5mdHNbaV07aWYoYXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSkpe2NvbnN0IGluc3RhbmNlVGFibGVOYW1lPXN5bWJvbCsiaW5zdGFuY2VzIjtmb3IobGV0IGo9MDtqPGlkcy5sZW5ndGg7ais9MSl7Y29uc3QgaWQ9aWRzW2pdLG5mdEluc3RhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKGluc3RhbmNlVGFibGVOYW1lLHtfaWQ6YXBpLkJpZ051bWJlcihpZCkudG9OdW1iZXIoKX0pO2lmKG5mdEluc3RhbmNlJiZuZnRJbnN0YW5jZS5hY2NvdW50PT09ZmluYWxGcm9tJiYoInUiPT09bmZ0SW5zdGFuY2Uub3duZWRCeSYmInVzZXIiPT09ZmluYWxGcm9tVHlwZXx8ImMiPT09bmZ0SW5zdGFuY2Uub3duZWRCeSYmImNvbnRyYWN0Ij09PWZpbmFsRnJvbVR5cGUpJiZ2b2lkIDA9PT1uZnRJbnN0YW5jZS5kZWxlZ2F0ZWRUbyYmIW5mdEluc3RhbmNlLnNvdWxCb3VuZCl7Y29uc3Qgb3JpZ093bmVkQnk9bmZ0SW5zdGFuY2Uub3duZWRCeSxuZXdPd25lZEJ5PSJ1c2VyIj09PWZpbmFsVG9UeXBlPyJ1IjoiYyI7bmZ0SW5zdGFuY2UucHJldmlvdXNBY2NvdW50PW5mdEluc3RhbmNlLmFjY291bnQsbmZ0SW5zdGFuY2UucHJldmlvdXNPd25lZEJ5PW5mdEluc3RhbmNlLm93bmVkQnksbmZ0SW5zdGFuY2UuYWNjb3VudD1maW5hbFRvLG5mdEluc3RhbmNlLm93bmVkQnk9bmV3T3duZWRCeSxhd2FpdCBhcGkuZGIudXBkYXRlKGluc3RhbmNlVGFibGVOYW1lLG5mdEluc3RhbmNlKSxhcGkuZW1pdCgidHJhbnNmZXIiLHtmcm9tOmZpbmFsRnJvbSxmcm9tVHlwZTpvcmlnT3duZWRCeSx0bzpmaW5hbFRvLHRvVHlwZTpuZXdPd25lZEJ5LHN5bWJvbDpzeW1ib2wsaWQ6aWR9KX19fX19fSxhY3Rpb25zLmRlbGVnYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtmcm9tVHlwZTpmcm9tVHlwZSx0bzp0byx0b1R5cGU6dG9UeXBlLG5mdHM6bmZ0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZCx0eXBlcz1bInVzZXIiLCJjb250cmFjdCJdLGZpbmFsVG9UeXBlPXZvaWQgMD09PXRvVHlwZT8idXNlciI6dG9UeXBlLGZpbmFsRnJvbVR5cGU9dm9pZCAwPT09ZnJvbVR5cGU/InVzZXIiOmZyb21UeXBlO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGZpbmFsRnJvbVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZmluYWxGcm9tVHlwZSYmdHlwZXMuaW5jbHVkZXMoZmluYWxGcm9tVHlwZSkmJnRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZmaW5hbFRvVHlwZSYmInN0cmluZyI9PXR5cGVvZiBmaW5hbFRvVHlwZSYmdHlwZXMuaW5jbHVkZXMoZmluYWxUb1R5cGUpJiYoY2FsbGluZ0NvbnRyYWN0SW5mb3x8dm9pZCAwPT09Y2FsbGluZ0NvbnRyYWN0SW5mbyYmInVzZXIiPT09ZmluYWxGcm9tVHlwZSkmJm5mdHMmJiJvYmplY3QiPT10eXBlb2YgbmZ0cyYmQXJyYXkuaXNBcnJheShuZnRzKSwiaW52YWxpZCBwYXJhbXMiKSYmaXNWYWxpZE5mdElkQXJyYXkobmZ0cykpe2NvbnN0IGZpbmFsVG89InVzZXIiPT09ZmluYWxUb1R5cGU/dG8udHJpbSgpLnRvTG93ZXJDYXNlKCk6dG8udHJpbSgpLHRvVmFsaWQ9InVzZXIiPT09ZmluYWxUb1R5cGU/aXNWYWxpZEhpdmVBY2NvdW50TGVuZ3RoKGZpbmFsVG8pOmlzVmFsaWRDb250cmFjdExlbmd0aChmaW5hbFRvKSxmaW5hbEZyb209InVzZXIiPT09ZmluYWxGcm9tVHlwZT9hcGkuc2VuZGVyOmNhbGxpbmdDb250cmFjdEluZm8ubmFtZTtpZihhcGkuYXNzZXJ0KHRvVmFsaWQsImludmFsaWQgdG8iKSYmYXBpLmFzc2VydCghKGZpbmFsVG9UeXBlPT09ZmluYWxGcm9tVHlwZSYmZmluYWxUbz09PWZpbmFsRnJvbSksImNhbm5vdCBkZWxlZ2F0ZSB0byBzZWxmIikmJmFwaS5hc3NlcnQoISgidXNlciI9PT1maW5hbFRvVHlwZSYmIm51bGwiPT09ZmluYWxUbyksImNhbm5vdCBkZWxlZ2F0ZSB0byBudWxsIikpZm9yKGxldCBpPTA7aTxuZnRzLmxlbmd0aDtpKz0xKXtjb25zdHtzeW1ib2w6c3ltYm9sLGlkczppZHN9PW5mdHNbaV0sbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCYmYXBpLmFzc2VydCghMD09PW5mdC5kZWxlZ2F0aW9uRW5hYmxlZCxgZGVsZWdhdGlvbiBub3QgZW5hYmxlZCBmb3IgJHtzeW1ib2x9YCkpe2NvbnN0IGluc3RhbmNlVGFibGVOYW1lPXN5bWJvbCsiaW5zdGFuY2VzIjtmb3IobGV0IGo9MDtqPGlkcy5sZW5ndGg7ais9MSl7Y29uc3QgaWQ9aWRzW2pdLG5mdEluc3RhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKGluc3RhbmNlVGFibGVOYW1lLHtfaWQ6YXBpLkJpZ051bWJlcihpZCkudG9OdW1iZXIoKX0pO2lmKG5mdEluc3RhbmNlJiZuZnRJbnN0YW5jZS5hY2NvdW50PT09ZmluYWxGcm9tJiYoInUiPT09bmZ0SW5zdGFuY2Uub3duZWRCeSYmInVzZXIiPT09ZmluYWxGcm9tVHlwZXx8ImMiPT09bmZ0SW5zdGFuY2Uub3duZWRCeSYmImNvbnRyYWN0Ij09PWZpbmFsRnJvbVR5cGUpJiZ2b2lkIDA9PT1uZnRJbnN0YW5jZS5kZWxlZ2F0ZWRUbyYmIW5mdEluc3RhbmNlLnNvdWxCb3VuZCl7Y29uc3QgbmV3T3duZWRCeT0idXNlciI9PT1maW5hbFRvVHlwZT8idSI6ImMiLG5ld0RlbGVnYXRpb249e2FjY291bnQ6ZmluYWxUbyxvd25lZEJ5Om5ld093bmVkQnl9O25mdEluc3RhbmNlLmRlbGVnYXRlZFRvPW5ld0RlbGVnYXRpb24sYXdhaXQgYXBpLmRiLnVwZGF0ZShpbnN0YW5jZVRhYmxlTmFtZSxuZnRJbnN0YW5jZSksYXBpLmVtaXQoImRlbGVnYXRlIix7ZnJvbTpmaW5hbEZyb20sZnJvbVR5cGU6bmZ0SW5zdGFuY2Uub3duZWRCeSx0bzpmaW5hbFRvLHRvVHlwZTpuZXdPd25lZEJ5LHN5bWJvbDpzeW1ib2wsaWQ6aWR9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZU5mdERlbGVnYXRpb25DaGFuZ2UiLHtzeW1ib2w6c3ltYm9sLG5mdDpuZnRJbnN0YW5jZSxhZGQ6ITB9KX19fX19fSxhY3Rpb25zLnVuZGVsZWdhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2Zyb21UeXBlOmZyb21UeXBlLG5mdHM6bmZ0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZCxmaW5hbEZyb21UeXBlPXZvaWQgMD09PWZyb21UeXBlPyJ1c2VyIjpmcm9tVHlwZTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChmaW5hbEZyb21UeXBlJiYic3RyaW5nIj09dHlwZW9mIGZpbmFsRnJvbVR5cGUmJlsidXNlciIsImNvbnRyYWN0Il0uaW5jbHVkZXMoZmluYWxGcm9tVHlwZSkmJihjYWxsaW5nQ29udHJhY3RJbmZvfHx2b2lkIDA9PT1jYWxsaW5nQ29udHJhY3RJbmZvJiYidXNlciI9PT1maW5hbEZyb21UeXBlKSYmbmZ0cyYmIm9iamVjdCI9PXR5cGVvZiBuZnRzJiZBcnJheS5pc0FycmF5KG5mdHMpLCJpbnZhbGlkIHBhcmFtcyIpJiZpc1ZhbGlkTmZ0SWRBcnJheShuZnRzKSl7Y29uc3QgZmluYWxGcm9tPSJ1c2VyIj09PWZpbmFsRnJvbVR5cGU/YXBpLnNlbmRlcjpjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKTtmb3IobGV0IGk9MDtpPG5mdHMubGVuZ3RoO2krPTEpe2NvbnN0e3N5bWJvbDpzeW1ib2wsaWRzOmlkc309bmZ0c1tpXSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0JiZhcGkuYXNzZXJ0KCEwPT09bmZ0LmRlbGVnYXRpb25FbmFibGVkLGBkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIGZvciAke3N5bWJvbH1gKSl7Y29uc3QgY29vbGRvd25QZXJpb2RNaWxsaXNlYz0yNCpuZnQudW5kZWxlZ2F0aW9uQ29vbGRvd24qMzYwMCoxZTMsY29tcGxldGVUaW1lc3RhbXA9YmxvY2tEYXRlLmdldFRpbWUoKStjb29sZG93blBlcmlvZE1pbGxpc2VjLGluc3RhbmNlVGFibGVOYW1lPXN5bWJvbCsiaW5zdGFuY2VzIix1bmRlbGVnYXRpb249e3N5bWJvbDpzeW1ib2wsaWRzOltdLGNvbXBsZXRlVGltZXN0YW1wOmNvbXBsZXRlVGltZXN0YW1wfTtmb3IobGV0IGo9MDtqPGlkcy5sZW5ndGg7ais9MSl7Y29uc3QgaWQ9aWRzW2pdLG5mdEluc3RhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKGluc3RhbmNlVGFibGVOYW1lLHtfaWQ6YXBpLkJpZ051bWJlcihpZCkudG9OdW1iZXIoKX0pO25mdEluc3RhbmNlJiZuZnRJbnN0YW5jZS5hY2NvdW50PT09ZmluYWxGcm9tJiYoInUiPT09bmZ0SW5zdGFuY2Uub3duZWRCeSYmInVzZXIiPT09ZmluYWxGcm9tVHlwZXx8ImMiPT09bmZ0SW5zdGFuY2Uub3duZWRCeSYmImNvbnRyYWN0Ij09PWZpbmFsRnJvbVR5cGUpJiZuZnRJbnN0YW5jZS5kZWxlZ2F0ZWRUbyYmdm9pZCAwPT09bmZ0SW5zdGFuY2UuZGVsZWdhdGVkVG8udW5kZWxlZ2F0ZUF0JiYobmZ0SW5zdGFuY2UuZGVsZWdhdGVkVG8udW5kZWxlZ2F0ZUF0PWNvbXBsZXRlVGltZXN0YW1wLHVuZGVsZWdhdGlvbi5pZHMucHVzaChuZnRJbnN0YW5jZS5faWQpLGF3YWl0IGFwaS5kYi51cGRhdGUoaW5zdGFuY2VUYWJsZU5hbWUsbmZ0SW5zdGFuY2UpLGFwaS5lbWl0KCJ1bmRlbGVnYXRlU3RhcnQiLHtmcm9tOm5mdEluc3RhbmNlLmRlbGVnYXRlZFRvLmFjY291bnQsZnJvbVR5cGU6bmZ0SW5zdGFuY2UuZGVsZWdhdGVkVG8ub3duZWRCeSxzeW1ib2w6c3ltYm9sLGlkOmlkfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVOZnREZWxlZ2F0aW9uQ2hhbmdlIix7c3ltYm9sOnN5bWJvbCxuZnQ6bmZ0SW5zdGFuY2UsYWRkOiExfSkpfXVuZGVsZWdhdGlvbi5pZHMubGVuZ3RoPjAmJmF3YWl0IGFwaS5kYi5pbnNlcnQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix1bmRlbGVnYXRpb24pfX19fTtjb25zdCBwcm9jZXNzVW5kZWxlZ2F0aW9uPWFzeW5jIHVuZGVsZWdhdGlvbj0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsaWRzOmlkc309dW5kZWxlZ2F0aW9uLGluc3RhbmNlVGFibGVOYW1lPXN5bWJvbCsiaW5zdGFuY2VzIixpbnN0YW5jZXM9YXdhaXQgYXBpLmRiLmZpbmQoaW5zdGFuY2VUYWJsZU5hbWUse19pZDp7JGluOmlkc319LDUwLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8aW5zdGFuY2VzLmxlbmd0aDtpKz0xKWRlbGV0ZSBpbnN0YW5jZXNbaV0uZGVsZWdhdGVkVG8sYXdhaXQgYXBpLmRiLnVwZGF0ZShpbnN0YW5jZVRhYmxlTmFtZSxpbnN0YW5jZXNbaV0se2RlbGVnYXRlZFRvOiIifSk7YXdhaXQgYXBpLmRiLnJlbW92ZSgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHVuZGVsZWdhdGlvbiksYXBpLmVtaXQoInVuZGVsZWdhdGVEb25lIix7c3ltYm9sOnN5bWJvbCxpZHM6aWRzfSl9O2FjdGlvbnMuY2hlY2tQZW5kaW5nVW5kZWxlZ2F0aW9ucz1hc3luYygpPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApLmdldFRpbWUoKTtsZXQgcGVuZGluZ1VuZGVsZWdhdGlvbnM9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix7Y29tcGxldGVUaW1lc3RhbXA6eyRsdGU6dGltZXN0YW1wfX0pLG5iUGVuZGluZ1VuZGVsZWdhdGlvbnM9cGVuZGluZ1VuZGVsZWdhdGlvbnMubGVuZ3RoO2Zvcig7bmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz4wOyl7Zm9yKGxldCBpbmRleD0wO2luZGV4PG5iUGVuZGluZ1VuZGVsZWdhdGlvbnM7aW5kZXgrPTEpe2NvbnN0IHBlbmRpbmdVbmRlbGVnYXRpb249cGVuZGluZ1VuZGVsZWdhdGlvbnNbaW5kZXhdO2F3YWl0IHByb2Nlc3NVbmRlbGVnYXRpb24ocGVuZGluZ1VuZGVsZWdhdGlvbil9cGVuZGluZ1VuZGVsZWdhdGlvbnM9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix7Y29tcGxldGVUaW1lc3RhbXA6eyRsdGU6dGltZXN0YW1wfX0pLG5iUGVuZGluZ1VuZGVsZWdhdGlvbnM9cGVuZGluZ1VuZGVsZWdhdGlvbnMubGVuZ3RofX19LGFjdGlvbnMuY3JlYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuYW1lOm5hbWUsb3JnTmFtZTpvcmdOYW1lLHByb2R1Y3ROYW1lOnByb2R1Y3ROYW1lLHN5bWJvbDpzeW1ib2wsdXJsOnVybCxtYXhTdXBwbHk6bWF4U3VwcGx5LGF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHM6YXV0aG9yaXplZElzc3VpbmdBY2NvdW50cyxhdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0czphdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse25mdENyZWF0aW9uRmVlOm5mdENyZWF0aW9uRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpVVElMSVRZX1RPS0VOX1NZTUJPTH0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hIWFwaS5CaWdOdW1iZXIobmZ0Q3JlYXRpb25GZWUpLmx0ZSgwKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShuZnRDcmVhdGlvbkZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkQ3JlYXRpb24sInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgY3JlYXRpb24gZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUmJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJih2b2lkIDA9PT11cmx8fHVybCYmInN0cmluZyI9PXR5cGVvZiB1cmwpJiYodm9pZCAwPT09b3JnTmFtZXx8b3JnTmFtZSYmInN0cmluZyI9PXR5cGVvZiBvcmdOYW1lKSYmKHZvaWQgMD09PXByb2R1Y3ROYW1lfHxwcm9kdWN0TmFtZSYmInN0cmluZyI9PXR5cGVvZiBwcm9kdWN0TmFtZSkmJih2b2lkIDA9PT1hdXRob3JpemVkSXNzdWluZ0FjY291bnRzfHxhdXRob3JpemVkSXNzdWluZ0FjY291bnRzJiYib2JqZWN0Ij09dHlwZW9mIGF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMmJkFycmF5LmlzQXJyYXkoYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cykpJiYodm9pZCAwPT09YXV0aG9yaXplZElzc3VpbmdDb250cmFjdHN8fGF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzJiYib2JqZWN0Ij09dHlwZW9mIGF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzJiZBcnJheS5pc0FycmF5KGF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzKSkmJih2b2lkIDA9PT1tYXhTdXBwbHl8fG1heFN1cHBseSYmInN0cmluZyI9PXR5cGVvZiBtYXhTdXBwbHkmJiFhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkuaXNOYU4oKSksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhKHN5bWJvbCkmJmFwaS52YWxpZGF0b3IuaXNVcHBlcmNhc2Uoc3ltYm9sKSYmc3ltYm9sLmxlbmd0aD4wJiZzeW1ib2wubGVuZ3RoPD0xMCwiaW52YWxpZCBzeW1ib2w6IHVwcGVyY2FzZSBsZXR0ZXJzIG9ubHksIG1heCBsZW5ndGggb2YgMTAiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1SRVNFUlZFRF9TWU1CT0xTW3N5bWJvbF18fGFwaS5zZW5kZXI9PT1SRVNFUlZFRF9TWU1CT0xTW3N5bWJvbF0sImNhbm5vdCB1c2UgdGhpcyBzeW1ib2wiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KG5hbWUsIiAiKSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD01MCwiaW52YWxpZCBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDUwIikmJmFwaS5hc3NlcnQodm9pZCAwPT09b3JnTmFtZXx8YXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChvcmdOYW1lLCIgIikpJiZvcmdOYW1lLmxlbmd0aD4wJiZvcmdOYW1lLmxlbmd0aDw9NTAsImludmFsaWQgb3JnIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1wcm9kdWN0TmFtZXx8YXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChwcm9kdWN0TmFtZSwiICIpKSYmcHJvZHVjdE5hbWUubGVuZ3RoPjAmJnByb2R1Y3ROYW1lLmxlbmd0aDw9NTAsImludmFsaWQgcHJvZHVjdCBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDUwIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dXJsfHx1cmwubGVuZ3RoPD0yNTUsImludmFsaWQgdXJsOiBtYXggbGVuZ3RoIG9mIDI1NSIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW1heFN1cHBseXx8YXBpLkJpZ051bWJlcihtYXhTdXBwbHkpLmd0KDApLCJtYXhTdXBwbHkgbXVzdCBiZSBwb3NpdGl2ZSIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW1heFN1cHBseXx8YXBpLkJpZ051bWJlcihtYXhTdXBwbHkpLmx0ZShOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiksYG1heFN1cHBseSBtdXN0IGJlIGxvd2VyIHRoYW4gJHtOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn1gKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbD09PW5mdCwic3ltYm9sIGFscmVhZHkgZXhpc3RzIikpe2lmKGFwaS5CaWdOdW1iZXIobmZ0Q3JlYXRpb25GZWUpLmd0KDApKXtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6VVRJTElUWV9UT0tFTl9TWU1CT0wscXVhbnRpdHk6bmZ0Q3JlYXRpb25GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2lmKCFpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsYXBpLnNlbmRlciwibnVsbCIsVVRJTElUWV9UT0tFTl9TWU1CT0wsbmZ0Q3JlYXRpb25GZWUsInRyYW5zZmVyIikpcmV0dXJuITF9Y29uc3QgZmluYWxNYXhTdXBwbHk9dm9pZCAwPT09bWF4U3VwcGx5PzA6YXBpLkJpZ051bWJlcihtYXhTdXBwbHkpLmludGVnZXJWYWx1ZShhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLnRvTnVtYmVyKCksZmluYWxPcmdOYW1lPXZvaWQgMD09PW9yZ05hbWU/IiI6b3JnTmFtZSxmaW5hbFByb2R1Y3ROYW1lPXZvaWQgMD09PXByb2R1Y3ROYW1lPyIiOnByb2R1Y3ROYW1lO2xldCBtZXRhZGF0YT17dXJsOnZvaWQgMD09PXVybD8iIjp1cmx9O21ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG1ldGFkYXRhKTtjb25zdCBpbml0aWFsQWNjb3VudExpc3Q9dm9pZCAwPT09YXV0aG9yaXplZElzc3VpbmdBY2NvdW50cz9bYXBpLnNlbmRlcl06W10sbmV3TmZ0PXtpc3N1ZXI6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sLG5hbWU6bmFtZSxvcmdOYW1lOmZpbmFsT3JnTmFtZSxwcm9kdWN0TmFtZTpmaW5hbFByb2R1Y3ROYW1lLG1ldGFkYXRhOm1ldGFkYXRhLG1heFN1cHBseTpmaW5hbE1heFN1cHBseSxzdXBwbHk6MCxjaXJjdWxhdGluZ1N1cHBseTowLGRlbGVnYXRpb25FbmFibGVkOiExLHVuZGVsZWdhdGlvbkNvb2xkb3duOjAsYXV0aG9yaXplZElzc3VpbmdBY2NvdW50czppbml0aWFsQWNjb3VudExpc3QsYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHM6W10scHJvcGVydGllczp7fSxncm91cEJ5OltdfSxpbnN0YW5jZVRhYmxlTmFtZT1zeW1ib2wrImluc3RhbmNlcyI7cmV0dXJuITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoaW5zdGFuY2VUYWJsZU5hbWUpJiZhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoaW5zdGFuY2VUYWJsZU5hbWUsWyJhY2NvdW50Iiwib3duZWRCeSJdKSxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJuZnRzIixuZXdOZnQpLHZvaWQgMCE9PWF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMmJmF3YWl0IGFjdGlvbnMuYWRkQXV0aG9yaXplZElzc3VpbmdBY2NvdW50cyh7YWNjb3VudHM6YXV0aG9yaXplZElzc3VpbmdBY2NvdW50cyxzeW1ib2w6c3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSx2b2lkIDAhPT1hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cyYmYXdhaXQgYWN0aW9ucy5hZGRBdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cyh7Y29udHJhY3RzOmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzLHN5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLCEwfX1yZXR1cm4hMX0sYWN0aW9ucy5pc3N1ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxmcm9tVHlwZTpmcm9tVHlwZSx0bzp0byx0b1R5cGU6dG9UeXBlLGZlZVN5bWJvbDpmZWVTeW1ib2wsbG9ja1Rva2Vuczpsb2NrVG9rZW5zLGxvY2tOZnRzOmxvY2tOZnRzLHNvdWxCb3VuZDpzb3VsQm91bmQscHJvcGVydGllczpwcm9wZXJ0aWVzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkLHR5cGVzPVsidXNlciIsImNvbnRyYWN0Il0sZmluYWxUb1R5cGU9dm9pZCAwPT09dG9UeXBlPyJ1c2VyIjp0b1R5cGUsZmluYWxGcm9tVHlwZT12b2lkIDA9PT1mcm9tVHlwZT8idXNlciI6ZnJvbVR5cGUscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bmZ0SXNzdWFuY2VGZWU6bmZ0SXNzdWFuY2VGZWV9PXBhcmFtcztpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZmaW5hbEZyb21UeXBlJiYic3RyaW5nIj09dHlwZW9mIGZpbmFsRnJvbVR5cGUmJnR5cGVzLmluY2x1ZGVzKGZpbmFsRnJvbVR5cGUpJiYoY2FsbGluZ0NvbnRyYWN0SW5mb3x8dm9pZCAwPT09Y2FsbGluZ0NvbnRyYWN0SW5mbyYmInVzZXIiPT09ZmluYWxGcm9tVHlwZSkmJnRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZmaW5hbFRvVHlwZSYmInN0cmluZyI9PXR5cGVvZiBmaW5hbFRvVHlwZSYmdHlwZXMuaW5jbHVkZXMoZmluYWxUb1R5cGUpJiZmZWVTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgZmVlU3ltYm9sJiZmZWVTeW1ib2wgaW4gbmZ0SXNzdWFuY2VGZWUmJih2b2lkIDA9PT1wcm9wZXJ0aWVzfHxwcm9wZXJ0aWVzJiYib2JqZWN0Ij09dHlwZW9mIHByb3BlcnRpZXMpJiYodm9pZCAwPT09bG9ja1Rva2Vuc3x8bG9ja1Rva2VucyYmIm9iamVjdCI9PXR5cGVvZiBsb2NrVG9rZW5zKSYmKHZvaWQgMD09PWxvY2tOZnRzfHxsb2NrTmZ0cyYmIm9iamVjdCI9PXR5cGVvZiBsb2NrTmZ0cyYmQXJyYXkuaXNBcnJheShsb2NrTmZ0cykpJiYodm9pZCAwPT09c291bEJvdW5kfHwiYm9vbGVhbiI9PXR5cGVvZiBzb3VsQm91bmQpLCJpbnZhbGlkIHBhcmFtcyIpJiYodm9pZCAwPT09bG9ja05mdHN8fGlzVmFsaWROZnRJZEFycmF5KGxvY2tOZnRzKSkpe2NvbnN0IGZpbmFsVG89InVzZXIiPT09ZmluYWxUb1R5cGU/dG8udHJpbSgpLnRvTG93ZXJDYXNlKCk6dG8udHJpbSgpLHRvVmFsaWQ9InVzZXIiPT09ZmluYWxUb1R5cGU/aXNWYWxpZEhpdmVBY2NvdW50TGVuZ3RoKGZpbmFsVG8pOmlzVmFsaWRDb250cmFjdExlbmd0aChmaW5hbFRvKSxmaW5hbEZyb209InVzZXIiPT09ZmluYWxGcm9tVHlwZT9hcGkuc2VuZGVyOmNhbGxpbmdDb250cmFjdEluZm8ubmFtZSxiYWxhbmNlVGFibGVOYW1lPSJ1c2VyIj09PWZpbmFsRnJvbVR5cGU/ImJhbGFuY2VzIjoiY29udHJhY3RzQmFsYW5jZXMiO2lmKGFwaS5hc3NlcnQodG9WYWxpZCwiaW52YWxpZCB0byIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSksZmVlVG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6ZmVlU3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChudWxsIT09ZmVlVG9rZW4sImZlZSBzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSl7Y29uc3QgaW5zdGFuY2VUYWJsZU5hbWU9c3ltYm9sKyJpbnN0YW5jZXMiO2lmKGFwaS5hc3NlcnQoImNvbnRyYWN0Ij09PWZpbmFsRnJvbVR5cGUmJm5mdC5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cy5pbmNsdWRlcyhmaW5hbEZyb20pfHwidXNlciI9PT1maW5hbEZyb21UeXBlJiZuZnQuYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cy5pbmNsdWRlcyhmaW5hbEZyb20pLCJub3QgYWxsb3dlZCB0byBpc3N1ZSB0b2tlbnMiKSYmYXBpLmFzc2VydCgwPT09bmZ0Lm1heFN1cHBseXx8bmZ0LnN1cHBseTxuZnQubWF4U3VwcGx5LCJtYXggc3VwcGx5IGxpbWl0IHJlYWNoZWQiKSl7Y29uc3QgcHJvcGVydHlDb3VudD1PYmplY3Qua2V5cyhuZnQucHJvcGVydGllcykubGVuZ3RoLHByb3BlcnR5RmVlPWFwaS5CaWdOdW1iZXIobmZ0SXNzdWFuY2VGZWVbZmVlU3ltYm9sXSkubXVsdGlwbGllZEJ5KHByb3BlcnR5Q291bnQpLGlzc3VhbmNlRmVlPWNhbGN1bGF0ZUJhbGFuY2UobmZ0SXNzdWFuY2VGZWVbZmVlU3ltYm9sXSxwcm9wZXJ0eUZlZSxmZWVUb2tlbi5wcmVjaXNpb24sITApLGZlZVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsYmFsYW5jZVRhYmxlTmFtZSx7YWNjb3VudDpmaW5hbEZyb20sc3ltYm9sOmZlZVN5bWJvbH0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hIWFwaS5CaWdOdW1iZXIoaXNzdWFuY2VGZWUpLmx0ZSgwKXx8ZmVlVG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKGZlZVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUoaXNzdWFuY2VGZWUpO2lmKGxvY2tUb2tlbnMpe2NvbnN0IGlzTG9ja1ZhbGlkPWF3YWl0IGlzVmFsaWRUb2tlbkJhc2tldChsb2NrVG9rZW5zLGJhbGFuY2VUYWJsZU5hbWUsZmluYWxGcm9tLGZlZVN5bWJvbCxpc3N1YW5jZUZlZSk7aWYoIWFwaS5hc3NlcnQoaXNMb2NrVmFsaWQsImludmFsaWQgYmFza2V0IG9mIHRva2VucyB0byBsb2NrIChjYW5ub3QgbG9jayBtb3JlIHRoYW4gMTAgdG9rZW4gdHlwZXM7IGlzc3VpbmcgYWNjb3VudCBtdXN0IGhhdmUgZW5vdWdoIGJhbGFuY2UpIikpcmV0dXJuITF9bGV0IGZpbmFsUHJvcGVydGllcz17fTtpZih2b2lkIDAhPT1wcm9wZXJ0aWVzKXt0cnl7aWYoIWlzVmFsaWREYXRhUHJvcGVydGllcyhmaW5hbEZyb20sZmluYWxGcm9tVHlwZSxuZnQscHJvcGVydGllcykpcmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITF9ZmluYWxQcm9wZXJ0aWVzPXByb3BlcnRpZXN9aWYoYXBpLmFzc2VydChhdXRob3JpemVkQ3JlYXRpb24sInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgaXNzdWFuY2UgZmVlcyIpKXtpZihhcGkuQmlnTnVtYmVyKGlzc3VhbmNlRmVlKS5ndCgwKSlpZigiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSl7Y29uc3QgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2Vuc0Zyb21DYWxsaW5nQ29udHJhY3QoIm51bGwiLGZlZVN5bWJvbCxpc3N1YW5jZUZlZSwidXNlciIpO2lmKCFhcGkuYXNzZXJ0KGlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxmaW5hbEZyb20sIm51bGwiLGZlZVN5bWJvbCxpc3N1YW5jZUZlZSwidHJhbnNmZXJGcm9tQ29udHJhY3QiKSwidW5hYmxlIHRvIHRyYW5zZmVyIGlzc3VhbmNlIGZlZSIpKXJldHVybiExfWVsc2V7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOmZlZVN5bWJvbCxxdWFudGl0eTppc3N1YW5jZUZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7aWYoIWFwaS5hc3NlcnQoaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGZpbmFsRnJvbSwibnVsbCIsZmVlU3ltYm9sLGlzc3VhbmNlRmVlLCJ0cmFuc2ZlciIpLCJ1bmFibGUgdG8gdHJhbnNmZXIgaXNzdWFuY2UgZmVlIikpcmV0dXJuITF9Y29uc3QgZmluYWxMb2NrVG9rZW5zPXt9O2lmKGxvY2tUb2tlbnMpZm9yKGNvbnN0W2xvY2tzeW1ib2wscXVhbnRpdHldb2YgT2JqZWN0LmVudHJpZXMobG9ja1Rva2VucykpaWYoImNvbnRyYWN0Ij09PWZpbmFsRnJvbVR5cGUpe2NvbnN0IHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnNGcm9tQ2FsbGluZ0NvbnRyYWN0KCJuZnQiLGxvY2tzeW1ib2wscXVhbnRpdHksImNvbnRyYWN0Iik7aXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGZpbmFsRnJvbSwibmZ0Iixsb2Nrc3ltYm9sLHF1YW50aXR5LCJ0cmFuc2ZlckZyb21Db250cmFjdCIpJiYoZmluYWxMb2NrVG9rZW5zW2xvY2tzeW1ib2xdPXF1YW50aXR5KX1lbHNle2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyVG9Db250cmFjdCIse3RvOiJuZnQiLHN5bWJvbDpsb2Nrc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsZmluYWxGcm9tLCJuZnQiLGxvY2tzeW1ib2wscXVhbnRpdHksInRyYW5zZmVyVG9Db250cmFjdCIpJiYoZmluYWxMb2NrVG9rZW5zW2xvY2tzeW1ib2xdPXF1YW50aXR5KX1sZXQgZmluYWxMb2NrTmZ0cz1bXTtpZihsb2NrTmZ0cyYmbG9ja05mdHMubGVuZ3RoPjApe2ZpbmFsTG9ja05mdHM9KGF3YWl0IHRyYW5zZmVyQW5kVmVyaWZ5TmZ0cyhmaW5hbEZyb20sZmluYWxGcm9tVHlwZSwibmZ0IiwiY29udHJhY3QiLGxvY2tOZnRzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleSxjYWxsaW5nQ29udHJhY3RJbmZvKSkuc3VjY2Vzc31jb25zdCBvd25lZEJ5PSJ1c2VyIj09PWZpbmFsVG9UeXBlPyJ1IjoiYyI7bGV0IG5ld0luc3RhbmNlPXt9O25ld0luc3RhbmNlPWZpbmFsTG9ja05mdHMubGVuZ3RoPjA/e2FjY291bnQ6ZmluYWxUbyxzb3VsQm91bmQ6ISFzb3VsQm91bmQsb3duZWRCeTpvd25lZEJ5LGxvY2tlZFRva2VuczpmaW5hbExvY2tUb2tlbnMsbG9ja2VkTmZ0czpmaW5hbExvY2tOZnRzLHByb3BlcnRpZXM6ZmluYWxQcm9wZXJ0aWVzfTp7YWNjb3VudDpmaW5hbFRvLHNvdWxCb3VuZDohIXNvdWxCb3VuZCxvd25lZEJ5Om93bmVkQnksbG9ja2VkVG9rZW5zOmZpbmFsTG9ja1Rva2Vucyxwcm9wZXJ0aWVzOmZpbmFsUHJvcGVydGllc307Y29uc3QgcmVzdWx0PWF3YWl0IGFwaS5kYi5pbnNlcnQoaW5zdGFuY2VUYWJsZU5hbWUsbmV3SW5zdGFuY2UpO3JldHVybiBuZnQuc3VwcGx5Kz0xLCJudWxsIj09PWZpbmFsVG8mJiJjb250cmFjdCIhPT1maW5hbFRvVHlwZXx8KG5mdC5jaXJjdWxhdGluZ1N1cHBseSs9MSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSxhcGkuZW1pdCgiaXNzdWUiLHtmcm9tOmZpbmFsRnJvbSxmcm9tVHlwZTpmaW5hbEZyb21UeXBlLHRvOmZpbmFsVG8sdG9UeXBlOmZpbmFsVG9UeXBlLHN5bWJvbDpzeW1ib2wsbG9ja2VkVG9rZW5zOmZpbmFsTG9ja1Rva2Vucyxsb2NrZWROZnRzOmZpbmFsTG9ja05mdHMsc291bEJvdW5kOiEhc291bEJvdW5kLHByb3BlcnRpZXM6ZmluYWxQcm9wZXJ0aWVzLGlkOnJlc3VsdC5faWR9KSwhMH19fX19cmV0dXJuITF9LGFjdGlvbnMuaXNzdWVNdWx0aXBsZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7aW5zdGFuY2VzOmluc3RhbmNlcyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChpbnN0YW5jZXMmJiJvYmplY3QiPT10eXBlb2YgaW5zdGFuY2VzJiZBcnJheS5pc0FycmF5KGluc3RhbmNlcyksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoaW5zdGFuY2VzLmxlbmd0aDw9MTAsImNhbm5vdCBpc3N1ZSBtb3JlIHRoYW4gMTAgTkZUIGluc3RhbmNlcyBhdCBvbmNlIikpe2xldCBjb250YWluZXJDb3VudD0wO2lmKGluc3RhbmNlcy5mb3JFYWNoKChpbnN0YW5jZT0+e2luc3RhbmNlJiZpbnN0YW5jZS5sb2NrTmZ0cyYmKGNvbnRhaW5lckNvdW50Kz0xKX0pKSxhcGkuYXNzZXJ0KGNvbnRhaW5lckNvdW50PD0xLCJjYW5ub3QgaXNzdWUgbW9yZSB0aGFuIDEgY29udGFpbmVyIE5GVCBpbnN0YW5jZXMgYXQgb25jZSIpJiZhcGkuYXNzZXJ0KDA9PT1jb250YWluZXJDb3VudHx8Y29udGFpbmVyQ291bnQ9PT1pbnN0YW5jZXMubGVuZ3RoLCJjYW5ub3QgaXNzdWUgYSBtaXggb2YgY29udGFpbmVyIGFuZCBub24tY29udGFpbmVyIE5GVCBpbnN0YW5jZXMgc2ltdWx0YW5lb3VzbHkiKSlmb3IobGV0IGk9MDtpPGluc3RhbmNlcy5sZW5ndGg7aSs9MSlpZihpbnN0YW5jZXNbaV0pe2NvbnN0e3N5bWJvbDpzeW1ib2wsZnJvbVR5cGU6ZnJvbVR5cGUsdG86dG8sdG9UeXBlOnRvVHlwZSxmZWVTeW1ib2w6ZmVlU3ltYm9sLGxvY2tUb2tlbnM6bG9ja1Rva2Vucyxzb3VsQm91bmQ6c291bEJvdW5kLGxvY2tOZnRzOmxvY2tOZnRzLHByb3BlcnRpZXM6cHJvcGVydGllc309aW5zdGFuY2VzW2ldO2F3YWl0IGFjdGlvbnMuaXNzdWUoe3N5bWJvbDpzeW1ib2wsZnJvbVR5cGU6ZnJvbVR5cGUsdG86dG8sdG9UeXBlOnRvVHlwZSxmZWVTeW1ib2w6ZmVlU3ltYm9sLGxvY2tUb2tlbnM6bG9ja1Rva2Vucyxzb3VsQm91bmQ6c291bEJvdW5kLGxvY2tOZnRzOmxvY2tOZnRzLHByb3BlcnRpZXM6cHJvcGVydGllcyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb30pfX19Ow=="}}}