beedollar Smart Contract

in #hive-enginelast month

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"beedollar","params":"","code":"Y29uc3QgVVRJTElUWV9UT0tFTl9TWU1CT0w9IkJFRSIsVVRJTElUWV9UT0tFTl9QUkVDSVNJT049OCxCRUVEX1BSRUNJU0lPTj00O2FjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHttaW5Db252ZXJ0aWJsZUFtb3VudDptaW5Db252ZXJ0aWJsZUFtb3VudCxmZWVQZXJjZW50YWdlOmZlZVBlcmNlbnRhZ2V9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTttaW5Db252ZXJ0aWJsZUFtb3VudCYmInN0cmluZyI9PXR5cGVvZiBtaW5Db252ZXJ0aWJsZUFtb3VudCYmIWFwaS5CaWdOdW1iZXIobWluQ29udmVydGlibGVBbW91bnQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobWluQ29udmVydGlibGVBbW91bnQpLmd0ZSgwKSYmKHBhcmFtcy5taW5Db252ZXJ0aWJsZUFtb3VudD1taW5Db252ZXJ0aWJsZUFtb3VudCksZmVlUGVyY2VudGFnZSYmInN0cmluZyI9PXR5cGVvZiBmZWVQZXJjZW50YWdlJiYhYXBpLkJpZ051bWJlcihmZWVQZXJjZW50YWdlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGZlZVBlcmNlbnRhZ2UpLmd0ZSgwKSYmKHBhcmFtcy5mZWVQZXJjZW50YWdlPWZlZVBlcmNlbnRhZ2UpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX07Y29uc3QgY291bnREZWNpbWFscz12YWx1ZT0+YXBpLkJpZ051bWJlcih2YWx1ZSkuZHAoKSxpc1Rva2VuVHJhbnNmZXJWZXJpZmllZD0ocmVzdWx0LGZyb20sdG8sc3ltYm9sLHF1YW50aXR5LGV2ZW50U3RyKT0+ISh2b2lkIDAhPT1yZXN1bHQuZXJyb3JzfHwhcmVzdWx0LmV2ZW50c3x8dm9pZCAwPT09cmVzdWx0LmV2ZW50cy5maW5kKChlbD0+InRva2VucyI9PT1lbC5jb250cmFjdCYmZWwuZXZlbnQ9PT1ldmVudFN0ciYmZWwuZGF0YS5mcm9tPT09ZnJvbSYmZWwuZGF0YS50bz09PXRvJiZhcGkuQmlnTnVtYmVyKGVsLmRhdGEucXVhbnRpdHkpLmVxKHF1YW50aXR5KSYmZWwuZGF0YS5zeW1ib2w9PT1zeW1ib2wpKSksdmVyaWZ5VXRpbGl0eVRva2VuQmFsYW5jZT1hc3luYyhhbW91bnQsYWNjb3VudCk9PntpZihhcGkuQmlnTnVtYmVyKGFtb3VudCkubHRlKDApKXJldHVybiEwO2NvbnN0IHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6IkJFRSJ9KTtyZXR1cm4hKCF1dGlsaXR5VG9rZW5CYWxhbmNlfHwhYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShhbW91bnQpKX0sYnVyblV0aWxpdHlUb2tlbnM9YXN5bmMoYW1vdW50LGlzU2lnbmVkV2l0aEFjdGl2ZUtleSk9PntpZihhcGkuQmlnTnVtYmVyKGFtb3VudCkuZ3QoMCkpe2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTphbW91bnQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2lmKCFpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsYXBpLnNlbmRlciwibnVsbCIsIkJFRSIsYW1vdW50LCJ0cmFuc2ZlciIpKXJldHVybiExfXJldHVybiEwfTthY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoInBhcmFtcyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2NvbnN0IHBhcmFtcz17bWluQ29udmVydGlibGVBbW91bnQ6IjEiLGZlZVBlcmNlbnRhZ2U6IjAuMDEifTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwYXJhbXMiLHBhcmFtcyl9aWYoIWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOiJCRUVEIn0pKXtjb25zdCB0b2tlblByb3BzPXtuYW1lOiJCZWVEIixzeW1ib2w6IkJFRUQiLHVybDoiaHR0cHM6Ly90cmliYWxkZXguY29tIixwcmVjaXNpb246NCxtYXhTdXBwbHk6YCR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YH0sdXBkYXRlRGF0YT17c3ltYm9sOiJCRUVEIixtZXRhZGF0YTp7dXJsOiJodHRwczovL3RyaWJhbGRleC5jb20iLGljb246Imh0dHBzOi8vY2RuLnRyaWJhbGRleC5jb20vdHJpYmFsZGV4L3Rva2VuLWljb25zL0JFRS5wbmciLGRlc2M6IkJFRUQgaXMgdGhlIG5hdGl2ZSBzdGFibGVjb2luIGZvciB0aGUgSGl2ZSBFbmdpbmUgcGxhdGZvcm0uIFlvdSBjYW4gbWludCBuZXcgQkVFRCBieSBidXJuaW5nIEJFRS4ifX07YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJjcmVhdGUiLHRva2VuUHJvcHMpLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidXBkYXRlTWV0YWRhdGEiLHVwZGF0ZURhdGEpfX0sYWN0aW9ucy5jb252ZXJ0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxxdHlBc0JpZ051bT1hcGkuQmlnTnVtYmVyKHF1YW50aXR5KTtpZihhcGkuYXNzZXJ0KHF0eUFzQmlnTnVtLmd0ZShwYXJhbXMubWluQ29udmVydGlibGVBbW91bnQpLGBhbW91bnQgdG8gY29udmVydCBtdXN0IGJlID49ICR7cGFyYW1zLm1pbkNvbnZlcnRpYmxlQW1vdW50fWApJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD04LCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikpe2NvbnN0IGhhc0Vub3VnaEJhbGFuY2U9YXdhaXQgdmVyaWZ5VXRpbGl0eVRva2VuQmFsYW5jZShxdWFudGl0eSxhcGkuc2VuZGVyKTtpZighYXBpLmFzc2VydChoYXNFbm91Z2hCYWxhbmNlLCJub3QgZW5vdWdoIGJhbGFuY2UiKSlyZXR1cm4hMTtjb25zdCBmZWVQZXJjZW50YWdlPWFwaS5CaWdOdW1iZXIocGFyYW1zLmZlZVBlcmNlbnRhZ2UpO2xldCBmZWU9IjAiLGZpbmFsUXR5PXF0eUFzQmlnTnVtO2ZlZVBlcmNlbnRhZ2UuZ3QoMCkmJihmZWU9cXR5QXNCaWdOdW0ubXVsdGlwbGllZEJ5KGZlZVBlcmNlbnRhZ2UpLnRvRml4ZWQoOCxhcGkuQmlnTnVtYmVyLlJPVU5EX1VQKSxhcGkuQmlnTnVtYmVyKGZlZSkubHQoIjAuMDAwMDAwMDEiKSYmKGZlZT0iMC4wMDAwMDAwMSIpLGZpbmFsUXR5PXF0eUFzQmlnTnVtLm1pbnVzKGZlZSkpO2NvbnN0IGJlZVBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJtYXJrZXRwb29scyIsInBvb2xzIix7dG9rZW5QYWlyOiJTV0FQLkhJVkU6QkVFIn0pLGhiZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJtYXJrZXRwb29scyIsInBvb2xzIix7dG9rZW5QYWlyOiJTV0FQLkhJVkU6U1dBUC5IQkQifSksYmVlUHJpY2VJbkhpdmU9YmVlUG9vbCYmYmVlUG9vbC5xdW90ZVByaWNlP2JlZVBvb2wucXVvdGVQcmljZToiMCIsaGl2ZVByaWNlSW5IQkQ9aGJkUG9vbCYmaGJkUG9vbC5iYXNlUHJpY2U/aGJkUG9vbC5iYXNlUHJpY2U6IjAiLGJlZVByaWNlSW5Eb2xsYXJzPWFwaS5CaWdOdW1iZXIoYmVlUHJpY2VJbkhpdmUpLm11bHRpcGxpZWRCeShoaXZlUHJpY2VJbkhCRCkudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYmVlZFRvSXNzdWU9ZmluYWxRdHkubXVsdGlwbGllZEJ5KGJlZVByaWNlSW5Eb2xsYXJzKS50b0ZpeGVkKDQsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTtyZXR1cm4hIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiZWVkVG9Jc3N1ZSkuZ3RlKCIwLjAwMDEiKSxgcmVzdWx0aW5nIHRva2VuIGlzc3VhbmNlIGlzIHRvbyBzbWFsbDsgQkVFIHByaWNlIGlzICR7YmVlUHJpY2VJbkRvbGxhcnN9YCkmJighIWF3YWl0IGJ1cm5VdGlsaXR5VG9rZW5zKHF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleSkmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsImlzc3VlIix7dG86YXBpLnNlbmRlcixzeW1ib2w6IkJFRUQiLHF1YW50aXR5OmJlZWRUb0lzc3VlfSksYXBpLmVtaXQoImJlZUNvbnZlcnNpb24iLHt0bzphcGkuc2VuZGVyLGZlZTpmZWUsYmVlOmZpbmFsUXR5LnRvRml4ZWQoOCksYmVlZDpiZWVkVG9Jc3N1ZSxiZWVQcmljZUluVVNEOmJlZVByaWNlSW5Eb2xsYXJzfSksITApKX19cmV0dXJuITF9Ow=="}}}

Sort:  

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"botcontroller","params":"","code":"Y29uc3QgVVRJTElUWV9UT0tFTl9TWU1CT0w9IkJFRSIsQkFTRV9TWU1CT0w9IlNXQVAuSElWRSIsQkFTRV9TWU1CT0xfUFJFQ0lTSU9OPTgsQ0hBSU5fVFlQRT0iSElWRSI7YWN0aW9ucy51cGRhdGVQYXJhbXM9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0e2Jhc2ljRmVlOmJhc2ljRmVlLGJhc2ljU2V0dGluZ3NGZWU6YmFzaWNTZXR0aW5nc0ZlZSxwcmVtaXVtRmVlOnByZW1pdW1GZWUscHJlbWl1bUJhc2VTdGFrZTpwcmVtaXVtQmFzZVN0YWtlLHN0YWtlUGVyTWFya2V0OnN0YWtlUGVyTWFya2V0LGJhc2ljRHVyYXRpb25CbG9ja3M6YmFzaWNEdXJhdGlvbkJsb2NrcyxiYXNpY0Nvb2xkb3duQmxvY2tzOmJhc2ljQ29vbGRvd25CbG9ja3MsYmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3M6YmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3MscHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2NrczpwcmVtaXVtTWluVGlja0ludGVydmFsQmxvY2tzLGJhc2ljTWF4VGlja3NQZXJCbG9jazpiYXNpY01heFRpY2tzUGVyQmxvY2sscHJlbWl1bU1heFRpY2tzUGVyQmxvY2s6cHJlbWl1bU1heFRpY2tzUGVyQmxvY2t9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtiYXNpY0ZlZSYmInN0cmluZyI9PXR5cGVvZiBiYXNpY0ZlZSYmIWFwaS5CaWdOdW1iZXIoYmFzaWNGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoYmFzaWNGZWUpLmd0ZSgwKSYmKHBhcmFtcy5iYXNpY0ZlZT1iYXNpY0ZlZSksYmFzaWNTZXR0aW5nc0ZlZSYmInN0cmluZyI9PXR5cGVvZiBiYXNpY1NldHRpbmdzRmVlJiYhYXBpLkJpZ051bWJlcihiYXNpY1NldHRpbmdzRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGJhc2ljU2V0dGluZ3NGZWUpLmd0ZSgwKSYmKHBhcmFtcy5iYXNpY1NldHRpbmdzRmVlPWJhc2ljU2V0dGluZ3NGZWUpLHByZW1pdW1GZWUmJiJzdHJpbmciPT10eXBlb2YgcHJlbWl1bUZlZSYmIWFwaS5CaWdOdW1iZXIocHJlbWl1bUZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihwcmVtaXVtRmVlKS5ndGUoMCkmJihwYXJhbXMucHJlbWl1bUZlZT1wcmVtaXVtRmVlKSxwcmVtaXVtQmFzZVN0YWtlJiYic3RyaW5nIj09dHlwZW9mIHByZW1pdW1CYXNlU3Rha2UmJiFhcGkuQmlnTnVtYmVyKHByZW1pdW1CYXNlU3Rha2UpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocHJlbWl1bUJhc2VTdGFrZSkuZ3RlKDApJiYocGFyYW1zLnByZW1pdW1CYXNlU3Rha2U9cHJlbWl1bUJhc2VTdGFrZSksc3Rha2VQZXJNYXJrZXQmJiJzdHJpbmciPT10eXBlb2Ygc3Rha2VQZXJNYXJrZXQmJiFhcGkuQmlnTnVtYmVyKHN0YWtlUGVyTWFya2V0KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHN0YWtlUGVyTWFya2V0KS5ndGUoMCkmJihwYXJhbXMuc3Rha2VQZXJNYXJrZXQ9c3Rha2VQZXJNYXJrZXQpLGJhc2ljRHVyYXRpb25CbG9ja3MmJiJudW1iZXIiPT10eXBlb2YgYmFzaWNEdXJhdGlvbkJsb2NrcyYmTnVtYmVyLmlzSW50ZWdlcihiYXNpY0R1cmF0aW9uQmxvY2tzKSYmYmFzaWNEdXJhdGlvbkJsb2Nrcz49MCYmKHBhcmFtcy5iYXNpY0R1cmF0aW9uQmxvY2tzPWJhc2ljRHVyYXRpb25CbG9ja3MpLGJhc2ljQ29vbGRvd25CbG9ja3MmJiJudW1iZXIiPT10eXBlb2YgYmFzaWNDb29sZG93bkJsb2NrcyYmTnVtYmVyLmlzSW50ZWdlcihiYXNpY0Nvb2xkb3duQmxvY2tzKSYmYmFzaWNDb29sZG93bkJsb2Nrcz49MCYmKHBhcmFtcy5iYXNpY0Nvb2xkb3duQmxvY2tzPWJhc2ljQ29vbGRvd25CbG9ja3MpLGJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzJiYibnVtYmVyIj09dHlwZW9mIGJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzJiZOdW1iZXIuaXNJbnRlZ2VyKGJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzKSYmYmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3M+PTAmJihwYXJhbXMuYmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3M9YmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3MpLHByZW1pdW1NaW5UaWNrSW50ZXJ2YWxCbG9ja3MmJiJudW1iZXIiPT10eXBlb2YgcHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2NrcyYmTnVtYmVyLmlzSW50ZWdlcihwcmVtaXVtTWluVGlja0ludGVydmFsQmxvY2tzKSYmcHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2Nrcz49MCYmKHBhcmFtcy5wcmVtaXVtTWluVGlja0ludGVydmFsQmxvY2tzPXByZW1pdW1NaW5UaWNrSW50ZXJ2YWxCbG9ja3MpLGJhc2ljTWF4VGlja3NQZXJCbG9jayYmIm51bWJlciI9PXR5cGVvZiBiYXNpY01heFRpY2tzUGVyQmxvY2smJk51bWJlci5pc0ludGVnZXIoYmFzaWNNYXhUaWNrc1BlckJsb2NrKSYmYmFzaWNNYXhUaWNrc1BlckJsb2NrPj0wJiYocGFyYW1zLmJhc2ljTWF4VGlja3NQZXJCbG9jaz1iYXNpY01heFRpY2tzUGVyQmxvY2spLHByZW1pdW1NYXhUaWNrc1BlckJsb2NrJiYibnVtYmVyIj09dHlwZW9mIHByZW1pdW1NYXhUaWNrc1BlckJsb2NrJiZOdW1iZXIuaXNJbnRlZ2VyKHByZW1pdW1NYXhUaWNrc1BlckJsb2NrKSYmcHJlbWl1bU1heFRpY2tzUGVyQmxvY2s+PTAmJihwYXJhbXMucHJlbWl1bU1heFRpY2tzUGVyQmxvY2s9cHJlbWl1bU1heFRpY2tzUGVyQmxvY2spLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX07Y29uc3QgZ2V0Q3VycmVudFRpbWVzdGFtcD0oKT0+e2NvbnN0IGJsb2NrVGltZXN0YW1wPWFwaS5oaXZlQmxvY2tUaW1lc3RhbXA7cmV0dXJuIG5ldyBEYXRlKGAke2Jsb2NrVGltZXN0YW1wfS4wMDBaYCkuZ2V0VGltZSgpfSx1cGdyYWRlVXNlclNjaGVtYT1hc3luYygpPT57Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtsZXQgdXNlcnNUb0NoZWNrPWF3YWl0IGFwaS5kYi5maW5kKCJ1c2VycyIse3RpbWVMaW1pdEJsb2Nrczp7JGV4aXN0czohMH19KSxuYlVzZXJzPXVzZXJzVG9DaGVjay5sZW5ndGg7Zm9yKDtuYlVzZXJzPjA7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJVc2VycztpbmRleCs9MSl7Y29uc3QgdXNlcj11c2Vyc1RvQ2hlY2tbaW5kZXhdO3VzZXIubGFzdFRpY2tUaW1lc3RhbXA9Z2V0Q3VycmVudFRpbWVzdGFtcCgpLHVzZXIubGFzdFRpY2tCbG9jaz1hcGkuYmxvY2tOdW1iZXIsdXNlci50aW1lTGltaXQ9MypwYXJhbXMuYmFzaWNEdXJhdGlvbkJsb2NrcyoxZTMsZGVsZXRlIHVzZXIudGltZUxpbWl0QmxvY2tzLGF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyLHt0aW1lTGltaXRCbG9ja3M6IiJ9KX11c2Vyc1RvQ2hlY2s9YXdhaXQgYXBpLmRiLmZpbmQoInVzZXJzIix7dGltZUxpbWl0QmxvY2tzOnskZXhpc3RzOiEwfX0pLG5iVXNlcnM9dXNlcnNUb0NoZWNrLmxlbmd0aH19LHVwZ3JhZGVNYXJrZXRTY2hlbWE9YXN5bmMoKT0+e2xldCBta3RzVG9DaGVjaz1hd2FpdCBhcGkuZGIuZmluZCgibWFya2V0cyIse3BsYWNlQXRCaWRXYWxsOnskZXhpc3RzOiExfX0pLG5iTWt0cz1ta3RzVG9DaGVjay5sZW5ndGg7Zm9yKDtuYk1rdHM+MDspe2ZvcihsZXQgaW5kZXg9MDtpbmRleDxuYk1rdHM7aW5kZXgrPTEpe2NvbnN0IG1hcmtldD1ta3RzVG9DaGVja1tpbmRleF07bWFya2V0LnBsYWNlQXRCaWRXYWxsPSIxMDAwMCIsbWFya2V0LnBsYWNlQXRTZWxsV2FsbD0iMTAwMDAiLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1hcmtldHMiLG1hcmtldCl9bWt0c1RvQ2hlY2s9YXdhaXQgYXBpLmRiLmZpbmQoIm1hcmtldHMiLHtwbGFjZUF0QmlkV2FsbDp7JGV4aXN0czohMX19KSxuYk1rdHM9bWt0c1RvQ2hlY2subGVuZ3RofX0saXNUb2tlblRyYW5zZmVyVmVyaWZpZWQ9KHJlc3VsdCxmcm9tLHRvLHN5bWJvbCxxdWFudGl0eSxldmVudFN0cik9PiEodm9pZCAwIT09cmVzdWx0LmVycm9yc3x8IXJlc3VsdC5ldmVudHN8fHZvaWQgMD09PXJlc3VsdC5ldmVudHMuZmluZCgoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJmVsLmV2ZW50PT09ZXZlbnRTdHImJmVsLmRhdGEuZnJvbT09PWZyb20mJmVsLmRhdGEudG89PT10byYmYXBpLkJpZ051bWJlcihlbC5kYXRhLnF1YW50aXR5KS5lcShxdWFudGl0eSkmJmVsLmRhdGEuc3ltYm9sPT09c3ltYm9sKSkpLGNvdW50RGVjaW1hbHM9dmFsdWU9PmFwaS5CaWdOdW1iZXIodmFsdWUpLmRwKCksdmVyaWZ5VXRpbGl0eVRva2VuU3Rha2U9YXN5bmMoYW1vdW50LGFjY291bnQpPT57aWYoYXBpLkJpZ051bWJlcihhbW91bnQpLmx0ZSgwKSlyZXR1cm4hMDtjb25zdCB1dGlsaXR5VG9rZW5TdGFrZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDoiQkVFIn0pO3JldHVybiEoIXV0aWxpdHlUb2tlblN0YWtlfHwhYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5TdGFrZS5zdGFrZSkuZ3RlKGFtb3VudCkpfSx2ZXJpZnlVdGlsaXR5VG9rZW5CYWxhbmNlPWFzeW5jKGFtb3VudCxhY2NvdW50KT0+e2lmKGFwaS5CaWdOdW1iZXIoYW1vdW50KS5sdGUoMCkpcmV0dXJuITA7Y29uc3QgdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDoiQkVFIn0pO3JldHVybiEoIXV0aWxpdHlUb2tlbkJhbGFuY2V8fCFhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGFtb3VudCkpfSxidXJuRmVlPWFzeW5jKGFtb3VudCxpc1NpZ25lZFdpdGhBY3RpdmVLZXkpPT57aWYoYXBpLkJpZ051bWJlcihhbW91bnQpLmd0KDApKXtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6YW1vdW50LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZighaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGFwaS5zZW5kZXIsIm51bGwiLCJCRUUiLGFtb3VudCwidHJhbnNmZXIiKSlyZXR1cm4hMX1yZXR1cm4hMH07YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ1c2VycyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInVzZXJzIixbImFjY291bnQiLCJsYXN0VGlja0Jsb2NrIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgibWFya2V0cyIsWyJhY2NvdW50Iiwic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGFyYW1zIik7Y29uc3QgcGFyYW1zPXtiYXNpY0ZlZToiMTAwIixiYXNpY1NldHRpbmdzRmVlOiIxIixwcmVtaXVtRmVlOiIxMDAiLHByZW1pdW1CYXNlU3Rha2U6IjEwMDAiLHN0YWtlUGVyTWFya2V0OiIyMDAiLGJhc2ljRHVyYXRpb25CbG9ja3M6NDAzMjAwLGJhc2ljQ29vbGRvd25CbG9ja3M6NDAzMjAwLGJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzOjIwMCxwcmVtaXVtTWluVGlja0ludGVydmFsQmxvY2tzOjEwMCxiYXNpY01heFRpY2tzUGVyQmxvY2s6MjAscHJlbWl1bU1heFRpY2tzUGVyQmxvY2s6MzB9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX1lbHNlIGF3YWl0IHVwZ3JhZGVVc2VyU2NoZW1hKCksYXdhaXQgdXBncmFkZU1hcmtldFNjaGVtYSgpfTtjb25zdCB0aWNrVXNlcnM9YXN5bmMocGFyYW1zLHVzZXJzLGN1cnJlbnRUaW1lc3RhbXAsdHhJZFByZWZpeCk9Pntjb25zdCBtYXJrZXRMaXN0PVtdO2ZvcihsZXQgaT0wO2k8dXNlcnMubGVuZ3RoO2krPTEpe2NvbnN0IHVzZXI9dXNlcnNbaV07bGV0IHVzZXJCYWxhbmNlPW51bGw7aWYodXNlci5pc1ByZW1pdW0pe3VzZXJCYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OnVzZXIuYWNjb3VudCxzeW1ib2w6IkJFRSJ9KTt1c2VyQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1c2VyQmFsYW5jZS5zdGFrZSkuZ3RlKHBhcmFtcy5wcmVtaXVtQmFzZVN0YWtlKXx8KHVzZXIuaXNQcmVtaXVtPSExKX1lbHNle2NvbnN0IHRpY2tJbnRlcnZhbD1jdXJyZW50VGltZXN0YW1wLXVzZXIubGFzdFRpY2tUaW1lc3RhbXA7dXNlci50aW1lTGltaXQtPXRpY2tJbnRlcnZhbCx1c2VyLnRpbWVMaW1pdDw9MCYmKHVzZXIudGltZUxpbWl0PTAsdXNlci5pc09uQ29vbGRvd249ITAsdXNlci5pc0VuYWJsZWQ9ITEpfWlmKHVzZXIubGFzdFRpY2tCbG9jaz1hcGkuYmxvY2tOdW1iZXIsdXNlci5sYXN0VGlja1RpbWVzdGFtcD1jdXJyZW50VGltZXN0YW1wLCF1c2VyLmlzRW5hYmxlZHx8dXNlci5lbmFibGVkTWFya2V0czwxKXthd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlcik7Y29udGludWV9Y29uc3QgYXV0aG9yaXplZEFjdGlvbj11c2VyLmlzUHJlbWl1bXx8MT09PXVzZXIubWFya2V0cztsZXQgaGFzRW5vdWdoU3Rha2VGb3JNYXJrZXRzPSExO2lmKGF1dGhvcml6ZWRBY3Rpb24pe3VzZXJCYWxhbmNlfHwodXNlckJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6dXNlci5hY2NvdW50LHN5bWJvbDoiQkVFIn0pKTtsZXQgcmVxdWlyZWRTdGFrZT1hcGkuQmlnTnVtYmVyKHBhcmFtcy5zdGFrZVBlck1hcmtldCkubXVsdGlwbGllZEJ5KHVzZXIubWFya2V0cyk7dXNlci5pc1ByZW1pdW0mJihyZXF1aXJlZFN0YWtlPXJlcXVpcmVkU3Rha2UucGx1cyhwYXJhbXMucHJlbWl1bUJhc2VTdGFrZSkpLGhhc0Vub3VnaFN0YWtlRm9yTWFya2V0cz11c2VyQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1c2VyQmFsYW5jZS5zdGFrZSkuZ3RlKHJlcXVpcmVkU3Rha2UpfWNvbnN0IG1hcmtldHM9YXdhaXQgYXBpLmRiLmZpbmQoIm1hcmtldHMiLHthY2NvdW50OnVzZXIuYWNjb3VudCxpc0VuYWJsZWQ6ITB9LHVzZXIubWFya2V0cywwLFt7aW5kZXg6InN5bWJvbCIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYoYXV0aG9yaXplZEFjdGlvbiYmaGFzRW5vdWdoU3Rha2VGb3JNYXJrZXRzKWF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyKSxtYXJrZXRzLmZvckVhY2goKG09Pnt1c2VyLmlzUHJlbWl1bXx8KG0uc3RyYXRlZ3k9MSksbWFya2V0TGlzdC5wdXNoKG0pfSkpO2Vsc2V7Zm9yKGxldCBqPTA7ajxtYXJrZXRzLmxlbmd0aDtqKz0xKXtjb25zdCBtYXJrZXQ9bWFya2V0c1tqXTttYXJrZXQuaXNFbmFibGVkPSExLHVzZXIuaXNQcmVtaXVtfHwobWFya2V0LnN0cmF0ZWd5PTEpLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1hcmtldHMiLG1hcmtldCl9dXNlci5lbmFibGVkTWFya2V0cz0wLGF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyKX19bWFya2V0TGlzdC5sZW5ndGg+MCYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtYXJrZXRtYWtlciIsInRpY2siLHttYXJrZXRzOm1hcmtldExpc3QsdHhJZEJhc2U6YCR7dHhJZFByZWZpeH0tJHthcGkuYmxvY2tOdW1iZXJ9LSR7YXBpLnRyYW5zYWN0aW9uSWR9YH0pfTthY3Rpb25zLnRpY2s9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxjdXJyZW50VGltZXN0YW1wPWdldEN1cnJlbnRUaW1lc3RhbXAoKSxjdXRvZmZCYXNpYz1jdXJyZW50VGltZXN0YW1wLTMqcGFyYW1zLmJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzKjFlMyxjdXRvZmZQcmVtaXVtPWN1cnJlbnRUaW1lc3RhbXAtMypwYXJhbXMucHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2NrcyoxZTMscGVuZGluZ0Jhc2ljVGlja3M9YXdhaXQgYXBpLmRiLmZpbmQoInVzZXJzIix7aXNFbmFibGVkOiEwLGlzUHJlbWl1bTohMSxsYXN0VGlja1RpbWVzdGFtcDp7JGx0ZTpjdXRvZmZCYXNpY319LHBhcmFtcy5iYXNpY01heFRpY2tzUGVyQmxvY2ssMCxbe2luZGV4OiJsYXN0VGlja0Jsb2NrIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTthd2FpdCB0aWNrVXNlcnMocGFyYW1zLHBlbmRpbmdCYXNpY1RpY2tzLGN1cnJlbnRUaW1lc3RhbXAsIk1NLUIiKTtjb25zdCBwZW5kaW5nUHJlbWl1bVRpY2tzPWF3YWl0IGFwaS5kYi5maW5kKCJ1c2VycyIse2lzRW5hYmxlZDohMCxpc1ByZW1pdW06ITAsbGFzdFRpY2tUaW1lc3RhbXA6eyRsdGU6Y3V0b2ZmUHJlbWl1bX19LHBhcmFtcy5wcmVtaXVtTWF4VGlja3NQZXJCbG9jaywwLFt7aW5kZXg6Imxhc3RUaWNrQmxvY2siLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2F3YWl0IHRpY2tVc2VycyhwYXJhbXMscGVuZGluZ1ByZW1pdW1UaWNrcyxjdXJyZW50VGltZXN0YW1wLCJNTS1QIil9fSxhY3Rpb25zLnVwZ3JhZGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxoYXNFbm91Z2hTdGFrZT1hd2FpdCB2ZXJpZnlVdGlsaXR5VG9rZW5TdGFrZShwYXJhbXMucHJlbWl1bUJhc2VTdGFrZSxhcGkuc2VuZGVyKTtpZihhcGkuYXNzZXJ0KGhhc0Vub3VnaFN0YWtlLCJ5b3UgZG8gbm90IGhhdmUgZW5vdWdoIHRva2VucyBzdGFrZWQiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5Iikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsIT09dXNlciwidXNlciBub3QgcmVnaXN0ZXJlZCIpJiZhcGkuYXNzZXJ0KCF1c2VyLmlzUHJlbWl1bSwidXNlciBpcyBhbHJlYWR5IHByZW1pdW0iKSl7aWYoIXVzZXIuaXNQcmVtaXVtRmVlUGFpZCl7Y29uc3QgYXV0aG9yaXplZFVwZ3JhZGU9YXdhaXQgdmVyaWZ5VXRpbGl0eVRva2VuQmFsYW5jZShwYXJhbXMucHJlbWl1bUZlZSxhcGkuc2VuZGVyKTtpZighYXBpLmFzc2VydChhdXRob3JpemVkVXBncmFkZSwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBwcmVtaXVtIHVwZ3JhZGUgZmVlIikpcmV0dXJuITE7aWYoIWF3YWl0IGJ1cm5GZWUocGFyYW1zLnByZW1pdW1GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5KSlyZXR1cm4hMX1yZXR1cm4gdXNlci5pc1ByZW1pdW1GZWVQYWlkPSEwLHVzZXIuaXNQcmVtaXVtPSEwLHVzZXIuaXNPbkNvb2xkb3duJiYodXNlci50aW1lTGltaXQ9MypwYXJhbXMuYmFzaWNEdXJhdGlvbkJsb2NrcyoxZTMpLHVzZXIuaXNPbkNvb2xkb3duPSExLHVzZXIubGFzdFRpY2tCbG9jaz1hcGkuYmxvY2tOdW1iZXIsdXNlci5sYXN0VGlja1RpbWVzdGFtcD1nZXRDdXJyZW50VGltZXN0YW1wKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidXNlcnMiLHVzZXIpLGFwaS5lbWl0KCJ1cGdyYWRlIix7YWNjb3VudDphcGkuc2VuZGVyfSksITB9fXJldHVybiExfSxhY3Rpb25zLnR1cm5PZmY9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5Iikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsIT09dXNlciwidXNlciBub3QgcmVnaXN0ZXJlZCIpJiZhcGkuYXNzZXJ0KHVzZXIuaXNFbmFibGVkLCJhY2NvdW50IGFscmVhZHkgdHVybmVkIG9mZiIpKXtjb25zdCBjdXJyZW50VGltZXN0YW1wPWdldEN1cnJlbnRUaW1lc3RhbXAoKTtpZighdXNlci5pc1ByZW1pdW0pe2NvbnN0IHRpY2tJbnRlcnZhbD1jdXJyZW50VGltZXN0YW1wLXVzZXIubGFzdFRpY2tUaW1lc3RhbXA7dXNlci50aW1lTGltaXQtPXRpY2tJbnRlcnZhbCx1c2VyLnRpbWVMaW1pdDw9MCYmKHVzZXIudGltZUxpbWl0PTAsdXNlci5pc09uQ29vbGRvd249ITApfXVzZXIuaXNFbmFibGVkPSExLHVzZXIubGFzdFRpY2tCbG9jaz1hcGkuYmxvY2tOdW1iZXIsdXNlci5sYXN0VGlja1RpbWVzdGFtcD1jdXJyZW50VGltZXN0YW1wLGF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyKSxhcGkuZW1pdCgidHVybk9mZiIse2FjY291bnQ6YXBpLnNlbmRlcn0pfX19LGFjdGlvbnMudHVybk9uPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5Iikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsIT09dXNlciwidXNlciBub3QgcmVnaXN0ZXJlZCIpKXtjb25zdCBjdXJyZW50VGltZXN0YW1wPWdldEN1cnJlbnRUaW1lc3RhbXAoKSx0aWNrSW50ZXJ2YWw9Y3VycmVudFRpbWVzdGFtcC11c2VyLmxhc3RUaWNrVGltZXN0YW1wO2FwaS5hc3NlcnQoIXVzZXIuaXNFbmFibGVkLCJhY2NvdW50IGFscmVhZHkgdHVybmVkIG9uIikmJmFwaS5hc3NlcnQodXNlci5pc1ByZW1pdW18fCF1c2VyLmlzT25Db29sZG93bnx8dXNlci5pc09uQ29vbGRvd24mJnRpY2tJbnRlcnZhbD49MypwYXJhbXMuYmFzaWNDb29sZG93bkJsb2NrcyoxZTMsImNvb2xkb3duIGR1cmF0aW9uIG5vdCBleHBpcmVkIikmJih1c2VyLmlzRW5hYmxlZD0hMCx1c2VyLmlzT25Db29sZG93biYmKHVzZXIudGltZUxpbWl0PTMqcGFyYW1zLmJhc2ljRHVyYXRpb25CbG9ja3MqMWUzKSx1c2VyLmlzT25Db29sZG93bj0hMSx1c2VyLmxhc3RUaWNrQmxvY2s9YXBpLmJsb2NrTnVtYmVyLHVzZXIubGFzdFRpY2tUaW1lc3RhbXA9Y3VycmVudFRpbWVzdGFtcCxhd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlciksYXBpLmVtaXQoInR1cm5PbiIse2FjY291bnQ6YXBpLnNlbmRlcn0pKX19fSxhY3Rpb25zLmRpc2FibGVNYXJrZXQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiYiU1dBUC5ISVZFIiE9PXN5bWJvbCwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdXNlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidXNlcnMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11c2VyLCJ1c2VyIG5vdCByZWdpc3RlcmVkIikpe2NvbnN0IG1hcmtldD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFya2V0cyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7YXBpLmFzc2VydChudWxsIT09bWFya2V0LCJtYXJrZXQgbXVzdCBleGlzdCIpJiZtYXJrZXQuaXNFbmFibGVkJiYobWFya2V0LmlzRW5hYmxlZD0hMSxhd2FpdCBhcGkuZGIudXBkYXRlKCJtYXJrZXRzIixtYXJrZXQpLHVzZXIuZW5hYmxlZE1hcmtldHMtPTEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidXNlcnMiLHVzZXIpLGFwaS5lbWl0KCJkaXNhYmxlTWFya2V0Iix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KSl9fX0sYWN0aW9ucy5lbmFibGVNYXJrZXQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiYiU1dBUC5ISVZFIiE9PXN5bWJvbCwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdXNlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidXNlcnMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11c2VyLCJ1c2VyIG5vdCByZWdpc3RlcmVkIikpe2NvbnN0IG1hcmtldD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFya2V0cyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bWFya2V0LCJtYXJrZXQgbXVzdCBleGlzdCIpJiYhbWFya2V0LmlzRW5hYmxlZCl7Y29uc3QgYXV0aG9yaXplZEFjdGlvbj11c2VyLmlzUHJlbWl1bXx8MT09PXVzZXIubWFya2V0cztpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWRBY3Rpb24sInVzZXIgaGFzIHRvbyBtYW55IG1hcmtldHM7IHByZW1pdW0gdXBncmFkZSByZXF1aXJlZCIpKXtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2xldCByZXF1aXJlZFN0YWtlPWFwaS5CaWdOdW1iZXIocGFyYW1zLnN0YWtlUGVyTWFya2V0KS5tdWx0aXBsaWVkQnkodXNlci5tYXJrZXRzKTt1c2VyLmlzUHJlbWl1bSYmKHJlcXVpcmVkU3Rha2U9cmVxdWlyZWRTdGFrZS5wbHVzKHBhcmFtcy5wcmVtaXVtQmFzZVN0YWtlKSk7Y29uc3QgaGFzRW5vdWdoU3Rha2U9YXdhaXQgdmVyaWZ5VXRpbGl0eVRva2VuU3Rha2UocmVxdWlyZWRTdGFrZSxhcGkuc2VuZGVyKTthcGkuYXNzZXJ0KGhhc0Vub3VnaFN0YWtlLCJtdXN0IHN0YWtlIG1vcmUgQkVFIHRvIGVuYWJsZSBtYXJrZXQiKSYmKG1hcmtldC5pc0VuYWJsZWQ9ITAsdXNlci5pc1ByZW1pdW18fChtYXJrZXQuc3RyYXRlZ3k9MSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWFya2V0cyIsbWFya2V0KSx1c2VyLmVuYWJsZWRNYXJrZXRzKz0xLGF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyKSxhcGkuZW1pdCgiZW5hYmxlTWFya2V0Iix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KSl9fX19fSxhY3Rpb25zLnJlbW92ZU1hcmtldD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJiJTV0FQLkhJVkUiIT09c3ltYm9sLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB1c2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ1c2VycyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVzZXIsInVzZXIgbm90IHJlZ2lzdGVyZWQiKSl7Y29uc3QgbWFya2V0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYXJrZXRzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTthcGkuYXNzZXJ0KG51bGwhPT1tYXJrZXQsIm1hcmtldCBtdXN0IGV4aXN0IikmJih1c2VyLm1hcmtldHMtPTEsbWFya2V0LmlzRW5hYmxlZCYmKHVzZXIuZW5hYmxlZE1hcmtldHMtPTEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJtYXJrZXRzIixtYXJrZXQpLGFwaS5lbWl0KCJyZW1vdmVNYXJrZXQiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pKX19fTtjb25zdCB1cGRhdGVNYXJrZXRJbnRlcm5hbD1hc3luYyhwYXlsb2FkLG1hcmtldCxzaG91bGRQYXlGZWUscGFyYW1zKT0+e2NvbnN0e3N0cmF0ZWd5OnN0cmF0ZWd5LG1heEJpZFByaWNlOm1heEJpZFByaWNlLG1pblNlbGxQcmljZTptaW5TZWxsUHJpY2UsbWF4QmFzZVRvU3BlbmQ6bWF4QmFzZVRvU3BlbmQsbWluQmFzZVRvU3BlbmQ6bWluQmFzZVRvU3BlbmQsbWF4VG9rZW5zVG9TZWxsOm1heFRva2Vuc1RvU2VsbCxtaW5Ub2tlbnNUb1NlbGw6bWluVG9rZW5zVG9TZWxsLHByaWNlSW5jcmVtZW50OnByaWNlSW5jcmVtZW50LG1pblNwcmVhZDptaW5TcHJlYWQsbWF4RGlzdEZyb21OZXh0Om1heERpc3RGcm9tTmV4dCxpZ25vcmVPcmRlclF0eUx0Omlnbm9yZU9yZGVyUXR5THQscGxhY2VBdEJpZFdhbGw6cGxhY2VBdEJpZFdhbGwscGxhY2VBdFNlbGxXYWxsOnBsYWNlQXRTZWxsV2FsbH09cGF5bG9hZDtpZih2b2lkIDA9PT1zdHJhdGVneSYmdm9pZCAwPT09bWF4QmlkUHJpY2UmJnZvaWQgMD09PW1pblNlbGxQcmljZSYmdm9pZCAwPT09bWF4QmFzZVRvU3BlbmQmJnZvaWQgMD09PW1pbkJhc2VUb1NwZW5kJiZ2b2lkIDA9PT1tYXhUb2tlbnNUb1NlbGwmJnZvaWQgMD09PW1pblRva2Vuc1RvU2VsbCYmdm9pZCAwPT09cHJpY2VJbmNyZW1lbnQmJnZvaWQgMD09PW1pblNwcmVhZCYmdm9pZCAwPT09bWF4RGlzdEZyb21OZXh0JiZ2b2lkIDA9PT1pZ25vcmVPcmRlclF0eUx0JiZ2b2lkIDA9PT1wbGFjZUF0QmlkV2FsbCYmdm9pZCAwPT09cGxhY2VBdFNlbGxXYWxsKXJldHVybiExO2lmKGFwaS5hc3NlcnQodm9pZCAwPT09bWF4QmlkUHJpY2V8fG1heEJpZFByaWNlJiYic3RyaW5nIj09dHlwZW9mIG1heEJpZFByaWNlJiYhYXBpLkJpZ051bWJlcihtYXhCaWRQcmljZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihtYXhCaWRQcmljZSkuZ3QoMCkmJmNvdW50RGVjaW1hbHMobWF4QmlkUHJpY2UpPD04LCJpbnZhbGlkIG1heEJpZFByaWNlIikmJmFwaS5hc3NlcnQodm9pZCAwPT09bWluU2VsbFByaWNlfHxtaW5TZWxsUHJpY2UmJiJzdHJpbmciPT10eXBlb2YgbWluU2VsbFByaWNlJiYhYXBpLkJpZ051bWJlcihtaW5TZWxsUHJpY2UpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobWluU2VsbFByaWNlKS5ndCgwKSYmY291bnREZWNpbWFscyhtaW5TZWxsUHJpY2UpPD04LCJpbnZhbGlkIG1pblNlbGxQcmljZSIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW1heEJhc2VUb1NwZW5kfHxtYXhCYXNlVG9TcGVuZCYmInN0cmluZyI9PXR5cGVvZiBtYXhCYXNlVG9TcGVuZCYmIWFwaS5CaWdOdW1iZXIobWF4QmFzZVRvU3BlbmQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobWF4QmFzZVRvU3BlbmQpLmd0KDApJiZjb3VudERlY2ltYWxzKG1heEJhc2VUb1NwZW5kKTw9OCwiaW52YWxpZCBtYXhCYXNlVG9TcGVuZCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW1pbkJhc2VUb1NwZW5kfHxtaW5CYXNlVG9TcGVuZCYmInN0cmluZyI9PXR5cGVvZiBtaW5CYXNlVG9TcGVuZCYmIWFwaS5CaWdOdW1iZXIobWluQmFzZVRvU3BlbmQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobWluQmFzZVRvU3BlbmQpLmd0KDApJiZjb3VudERlY2ltYWxzKG1pbkJhc2VUb1NwZW5kKTw9OCwiaW52YWxpZCBtaW5CYXNlVG9TcGVuZCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW1heFRva2Vuc1RvU2VsbHx8bWF4VG9rZW5zVG9TZWxsJiYic3RyaW5nIj09dHlwZW9mIG1heFRva2Vuc1RvU2VsbCYmIWFwaS5CaWdOdW1iZXIobWF4VG9rZW5zVG9TZWxsKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKG1heFRva2Vuc1RvU2VsbCkuZ3QoMCkmJmNvdW50RGVjaW1hbHMobWF4VG9rZW5zVG9TZWxsKTw9bWFya2V0LnByZWNpc2lvbiwiaW52YWxpZCBtYXhUb2tlbnNUb1NlbGwiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1taW5Ub2tlbnNUb1NlbGx8fG1pblRva2Vuc1RvU2VsbCYmInN0cmluZyI9PXR5cGVvZiBtaW5Ub2tlbnNUb1NlbGwmJiFhcGkuQmlnTnVtYmVyKG1pblRva2Vuc1RvU2VsbCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihtaW5Ub2tlbnNUb1NlbGwpLmd0KDApJiZjb3VudERlY2ltYWxzKG1pblRva2Vuc1RvU2VsbCk8PW1hcmtldC5wcmVjaXNpb24sImludmFsaWQgbWluVG9rZW5zVG9TZWxsIikmJmFwaS5hc3NlcnQodm9pZCAwPT09cHJpY2VJbmNyZW1lbnR8fHByaWNlSW5jcmVtZW50JiYic3RyaW5nIj09dHlwZW9mIHByaWNlSW5jcmVtZW50JiYhYXBpLkJpZ051bWJlcihwcmljZUluY3JlbWVudCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihwcmljZUluY3JlbWVudCkuZ3QoMCkmJmNvdW50RGVjaW1hbHMocHJpY2VJbmNyZW1lbnQpPD04LCJpbnZhbGlkIHByaWNlSW5jcmVtZW50IikmJmFwaS5hc3NlcnQodm9pZCAwPT09bWluU3ByZWFkfHxtaW5TcHJlYWQmJiJzdHJpbmciPT10eXBlb2YgbWluU3ByZWFkJiYhYXBpLkJpZ051bWJlcihtaW5TcHJlYWQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobWluU3ByZWFkKS5ndCgwKSYmY291bnREZWNpbWFscyhtaW5TcHJlYWQpPD04LCJpbnZhbGlkIG1pblNwcmVhZCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW1heERpc3RGcm9tTmV4dHx8bWF4RGlzdEZyb21OZXh0JiYic3RyaW5nIj09dHlwZW9mIG1heERpc3RGcm9tTmV4dCYmIWFwaS5CaWdOdW1iZXIobWF4RGlzdEZyb21OZXh0KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKG1heERpc3RGcm9tTmV4dCkuZ3QoMCkmJmNvdW50RGVjaW1hbHMobWF4RGlzdEZyb21OZXh0KTw9OCwiaW52YWxpZCBtYXhEaXN0RnJvbU5leHQiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1pZ25vcmVPcmRlclF0eUx0fHxpZ25vcmVPcmRlclF0eUx0JiYic3RyaW5nIj09dHlwZW9mIGlnbm9yZU9yZGVyUXR5THQmJiFhcGkuQmlnTnVtYmVyKGlnbm9yZU9yZGVyUXR5THQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoaWdub3JlT3JkZXJRdHlMdCkuZ3QoMCkmJmNvdW50RGVjaW1hbHMoaWdub3JlT3JkZXJRdHlMdCk8PW1hcmtldC5wcmVjaXNpb24sImludmFsaWQgaWdub3JlT3JkZXJRdHlMdCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXBsYWNlQXRCaWRXYWxsfHxwbGFjZUF0QmlkV2FsbCYmInN0cmluZyI9PXR5cGVvZiBwbGFjZUF0QmlkV2FsbCYmIWFwaS5CaWdOdW1iZXIocGxhY2VBdEJpZFdhbGwpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocGxhY2VBdEJpZFdhbGwpLmd0KDApJiZjb3VudERlY2ltYWxzKHBsYWNlQXRCaWRXYWxsKTw9bWFya2V0LnByZWNpc2lvbiwiaW52YWxpZCBwbGFjZUF0QmlkV2FsbCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXBsYWNlQXRTZWxsV2FsbHx8cGxhY2VBdFNlbGxXYWxsJiYic3RyaW5nIj09dHlwZW9mIHBsYWNlQXRTZWxsV2FsbCYmIWFwaS5CaWdOdW1iZXIocGxhY2VBdFNlbGxXYWxsKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHBsYWNlQXRTZWxsV2FsbCkuZ3QoMCkmJmNvdW50RGVjaW1hbHMocGxhY2VBdFNlbGxXYWxsKTw9bWFya2V0LnByZWNpc2lvbiwiaW52YWxpZCBwbGFjZUF0U2VsbFdhbGwiKSl7aWYoc2hvdWxkUGF5RmVlJiYhYXdhaXQgYnVybkZlZShwYXJhbXMuYmFzaWNTZXR0aW5nc0ZlZSwhMCkpcmV0dXJuITE7Y29uc3QgdXBkYXRlPXthY2NvdW50Om1hcmtldC5hY2NvdW50LHN5bWJvbDptYXJrZXQuc3ltYm9sfTtyZXR1cm4gdm9pZCAwIT09c3RyYXRlZ3kmJnN0cmF0ZWd5PjAmJih1cGRhdGUub2xkU3RyYXRlZ3k9bWFya2V0LnN0cmF0ZWd5LG1hcmtldC5zdHJhdGVneT1zdHJhdGVneSx1cGRhdGUubmV3U3RyYXRlZ3k9c3RyYXRlZ3kpLG1heEJpZFByaWNlJiYodXBkYXRlLm9sZE1heEJpZFByaWNlPW1hcmtldC5tYXhCaWRQcmljZSxtYXJrZXQubWF4QmlkUHJpY2U9bWF4QmlkUHJpY2UsdXBkYXRlLm5ld01heEJpZFByaWNlPW1heEJpZFByaWNlKSxtaW5TZWxsUHJpY2UmJih1cGRhdGUub2xkTWluU2VsbFByaWNlPW1hcmtldC5taW5TZWxsUHJpY2UsbWFya2V0Lm1pblNlbGxQcmljZT1taW5TZWxsUHJpY2UsdXBkYXRlLm5ld01pblNlbGxQcmljZT1taW5TZWxsUHJpY2UpLG1heEJhc2VUb1NwZW5kJiYodXBkYXRlLm9sZE1heEJhc2VUb1NwZW5kPW1hcmtldC5tYXhCYXNlVG9TcGVuZCxtYXJrZXQubWF4QmFzZVRvU3BlbmQ9bWF4QmFzZVRvU3BlbmQsdXBkYXRlLm5ld01heEJhc2VUb1NwZW5kPW1heEJhc2VUb1NwZW5kKSxtaW5CYXNlVG9TcGVuZCYmKHVwZGF0ZS5vbGRNaW5CYXNlVG9TcGVuZD1tYXJrZXQubWluQmFzZVRvU3BlbmQsbWFya2V0Lm1pbkJhc2VUb1NwZW5kPW1pbkJhc2VUb1NwZW5kLHVwZGF0ZS5uZXdNaW5CYXNlVG9TcGVuZD1taW5CYXNlVG9TcGVuZCksbWF4VG9rZW5zVG9TZWxsJiYodXBkYXRlLm9sZE1heFRva2Vuc1RvU2VsbD1tYXJrZXQubWF4VG9rZW5zVG9TZWxsLG1hcmtldC5tYXhUb2tlbnNUb1NlbGw9bWF4VG9rZW5zVG9TZWxsLHVwZGF0ZS5uZXdNYXhUb2tlbnNUb1NlbGw9bWF4VG9rZW5zVG9TZWxsKSxtaW5Ub2tlbnNUb1NlbGwmJih1cGRhdGUub2xkTWluVG9rZW5zVG9TZWxsPW1hcmtldC5taW5Ub2tlbnNUb1NlbGwsbWFya2V0Lm1pblRva2Vuc1RvU2VsbD1taW5Ub2tlbnNUb1NlbGwsdXBkYXRlLm5ld01pblRva2Vuc1RvU2VsbD1taW5Ub2tlbnNUb1NlbGwpLHByaWNlSW5jcmVtZW50JiYodXBkYXRlLm9sZFByaWNlSW5jcmVtZW50PW1hcmtldC5wcmljZUluY3JlbWVudCxtYXJrZXQucHJpY2VJbmNyZW1lbnQ9cHJpY2VJbmNyZW1lbnQsdXBkYXRlLm5ld1ByaWNlSW5jcmVtZW50PXByaWNlSW5jcmVtZW50KSxtaW5TcHJlYWQmJih1cGRhdGUub2xkTWluU3ByZWFkPW1hcmtldC5taW5TcHJlYWQsbWFya2V0Lm1pblNwcmVhZD1taW5TcHJlYWQsdXBkYXRlLm5ld01pblNwcmVhZD1taW5TcHJlYWQpLG1heERpc3RGcm9tTmV4dCYmKHVwZGF0ZS5vbGRNYXhEaXN0RnJvbU5leHQ9bWFya2V0Lm1heERpc3RGcm9tTmV4dCxtYXJrZXQubWF4RGlzdEZyb21OZXh0PW1heERpc3RGcm9tTmV4dCx1cGRhdGUubmV3TWF4RGlzdEZyb21OZXh0PW1heERpc3RGcm9tTmV4dCksaWdub3JlT3JkZXJRdHlMdCYmKHVwZGF0ZS5vbGRJZ25vcmVPcmRlclF0eUx0PW1hcmtldC5pZ25vcmVPcmRlclF0eUx0LG1hcmtldC5pZ25vcmVPcmRlclF0eUx0PWlnbm9yZU9yZGVyUXR5THQsdXBkYXRlLm5ld0lnbm9yZU9yZGVyUXR5THQ9aWdub3JlT3JkZXJRdHlMdCkscGxhY2VBdEJpZFdhbGwmJih1cGRhdGUub2xkUGxhY2VBdEJpZFdhbGw9bWFya2V0LnBsYWNlQXRCaWRXYWxsLG1hcmtldC5wbGFjZUF0QmlkV2FsbD1wbGFjZUF0QmlkV2FsbCx1cGRhdGUubmV3UGxhY2VBdEJpZFdhbGw9cGxhY2VBdEJpZFdhbGwpLHBsYWNlQXRTZWxsV2FsbCYmKHVwZGF0ZS5vbGRQbGFjZUF0U2VsbFdhbGw9bWFya2V0LnBsYWNlQXRTZWxsV2FsbCxtYXJrZXQucGxhY2VBdFNlbGxXYWxsPXBsYWNlQXRTZWxsV2FsbCx1cGRhdGUubmV3UGxhY2VBdFNlbGxXYWxsPXBsYWNlQXRTZWxsV2FsbCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWFya2V0cyIsbWFya2V0KSxhcGkuZW1pdCgidXBkYXRlTWFya2V0Iix1cGRhdGUpLCEwfXJldHVybiExfTthY3Rpb25zLnVwZGF0ZU1hcmtldD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxzdHJhdGVneTpzdHJhdGVneSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHN0cmF0VHlwZXM9WzEsMiwzXTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiYiU1dBUC5ISVZFIiE9PXN5bWJvbCwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdXNlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidXNlcnMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11c2VyLCJ1c2VyIG5vdCByZWdpc3RlcmVkIikmJmFwaS5hc3NlcnQodm9pZCAwPT09c3RyYXRlZ3l8fCJudW1iZXIiPT10eXBlb2Ygc3RyYXRlZ3kmJk51bWJlci5pc0ludGVnZXIoc3RyYXRlZ3kpJiZzdHJhdFR5cGVzLmluY2x1ZGVzKHN0cmF0ZWd5KSYmdXNlci5pc1ByZW1pdW0sImludmFsaWQgcGFyYW1zIG9yIHVzZXIgbm90IHByZW1pdW0iKSl7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtsZXQgYXV0aG9yaXplZEFjdGlvbj0hMTtpZihhdXRob3JpemVkQWN0aW9uPSEhdXNlci5pc1ByZW1pdW18fGF3YWl0IHZlcmlmeVV0aWxpdHlUb2tlbkJhbGFuY2UocGFyYW1zLmJhc2ljU2V0dGluZ3NGZWUsYXBpLnNlbmRlciksYXBpLmFzc2VydChhdXRob3JpemVkQWN0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHNldHRpbmdzIGNoYW5nZSBmZWUiKSl7Y29uc3QgbWFya2V0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYXJrZXRzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1tYXJrZXQsIm1hcmtldCBtdXN0IGV4aXN0Iikpe3JldHVybiBhd2FpdCB1cGRhdGVNYXJrZXRJbnRlcm5hbChwYXlsb2FkLG1hcmtldCwhdXNlci5pc1ByZW1pdW0scGFyYW1zKX19fX1yZXR1cm4hMX0sYWN0aW9ucy5hZGRNYXJrZXQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsc3RyYXRlZ3k6c3RyYXRlZ3ksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxzdHJhdFR5cGVzPVsxLDIsM107aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNXQVAuSElWRSIhPT1zeW1ib2wsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsIT09dXNlciwidXNlciBub3QgcmVnaXN0ZXJlZCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXN0cmF0ZWd5fHwibnVtYmVyIj09dHlwZW9mIHN0cmF0ZWd5JiZOdW1iZXIuaXNJbnRlZ2VyKHN0cmF0ZWd5KSYmc3RyYXRUeXBlcy5pbmNsdWRlcyhzdHJhdGVneSkmJnVzZXIuaXNQcmVtaXVtLCJpbnZhbGlkIHBhcmFtcyBvciB1c2VyIG5vdCBwcmVtaXVtIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgbXVzdCBleGlzdCIpKXtjb25zdCBtYXJrZXQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hcmtldHMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbD09PW1hcmtldCwibWFya2V0IGFscmVhZHkgYWRkZWQiKSl7Y29uc3QgYXV0aG9yaXplZEFkZGl0aW9uPXVzZXIuaXNQcmVtaXVtfHwwPT09dXNlci5tYXJrZXRzO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZEFkZGl0aW9uLCJub3QgYWxsb3dlZCB0byBhZGQgYW5vdGhlciBtYXJrZXQiKSl7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtsZXQgcmVxdWlyZWRTdGFrZT1hcGkuQmlnTnVtYmVyKHBhcmFtcy5zdGFrZVBlck1hcmtldCkubXVsdGlwbGllZEJ5KHVzZXIubWFya2V0cysxKTt1c2VyLmlzUHJlbWl1bSYmKHJlcXVpcmVkU3Rha2U9cmVxdWlyZWRTdGFrZS5wbHVzKHBhcmFtcy5wcmVtaXVtQmFzZVN0YWtlKSk7Y29uc3QgaGFzRW5vdWdoU3Rha2U9YXdhaXQgdmVyaWZ5VXRpbGl0eVRva2VuU3Rha2UocmVxdWlyZWRTdGFrZSxhcGkuc2VuZGVyKTtpZihhcGkuYXNzZXJ0KGhhc0Vub3VnaFN0YWtlLCJtdXN0IHN0YWtlIG1vcmUgQkVFIHRvIGFkZCBhIG1hcmtldCIpKXtjb25zdCBuZXdNYXJrZXQ9e2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sLHByZWNpc2lvbjp0b2tlbi5wcmVjaXNpb24sc3RyYXRlZ3k6MSxtYXhCaWRQcmljZToiMTAwMCIsbWluU2VsbFByaWNlOiIwLjAwMDAwMDAxIixtYXhCYXNlVG9TcGVuZDoiMTAwIixtaW5CYXNlVG9TcGVuZDoiMSIsbWF4VG9rZW5zVG9TZWxsOiIxMDAiLG1pblRva2Vuc1RvU2VsbDoiMSIscHJpY2VJbmNyZW1lbnQ6IjAuMDAwMDEiLG1pblNwcmVhZDoiMC4wMDAwMDAwMSIsbWF4RGlzdEZyb21OZXh0OiIwLjAwMDEiLGlnbm9yZU9yZGVyUXR5THQ6IjUwIixwbGFjZUF0QmlkV2FsbDoiMTAwMDAiLHBsYWNlQXRTZWxsV2FsbDoiMTAwMDAiLGlzRW5hYmxlZDohMCxjcmVhdGlvblRpbWVzdGFtcDpnZXRDdXJyZW50VGltZXN0YW1wKCksY3JlYXRpb25CbG9jazphcGkuYmxvY2tOdW1iZXJ9LGFkZGVkTWFya2V0PWF3YWl0IGFwaS5kYi5pbnNlcnQoIm1hcmtldHMiLG5ld01hcmtldCk7YXBpLmVtaXQoImFkZE1hcmtldCIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSksdXNlci5tYXJrZXRzKz0xLHVzZXIuZW5hYmxlZE1hcmtldHMrPTEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidXNlcnMiLHVzZXIpLGF3YWl0IHVwZGF0ZU1hcmtldEludGVybmFsKHBheWxvYWQsYWRkZWRNYXJrZXQsITEscGFyYW1zKX19fX19fX0sYWN0aW9ucy5yZWdpc3Rlcj1hc3luYyBwYXlsb2FkPT57Y29uc3R7aXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLGF1dGhvcml6ZWRSZWdpc3RyYXRpb249YXdhaXQgdmVyaWZ5VXRpbGl0eVRva2VuQmFsYW5jZShwYXJhbXMuYmFzaWNGZWUsYXBpLnNlbmRlcik7aWYoYXBpLmFzc2VydChhdXRob3JpemVkUmVnaXN0cmF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHJlZ2lzdHJhdGlvbiBmZWUiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5Iikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsPT09dXNlciwidXNlciBhbHJlYWR5IHJlZ2lzdGVyZWQiKSl7aWYoIWF3YWl0IGJ1cm5GZWUocGFyYW1zLmJhc2ljRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleSkpcmV0dXJuITE7Y29uc3QgY3JlYXRpb25UaW1lc3RhbXA9Z2V0Q3VycmVudFRpbWVzdGFtcCgpLG5ld1VzZXI9e2FjY291bnQ6YXBpLnNlbmRlcixpc1ByZW1pdW06ITEsaXNQcmVtaXVtRmVlUGFpZDohMSxpc09uQ29vbGRvd246ITEsaXNFbmFibGVkOiEwLG1hcmtldHM6MCxlbmFibGVkTWFya2V0czowLHRpbWVMaW1pdDozKnBhcmFtcy5iYXNpY0R1cmF0aW9uQmxvY2tzKjFlMyxsYXN0VGlja1RpbWVzdGFtcDpjcmVhdGlvblRpbWVzdGFtcCxsYXN0VGlja0Jsb2NrOmFwaS5ibG9ja051bWJlcixjcmVhdGlvblRpbWVzdGFtcDpjcmVhdGlvblRpbWVzdGFtcCxjcmVhdGlvbkJsb2NrOmFwaS5ibG9ja051bWJlcn07cmV0dXJuIGF3YWl0IGFwaS5kYi5pbnNlcnQoInVzZXJzIixuZXdVc2VyKSxhcGkuZW1pdCgicmVnaXN0ZXIiLHthY2NvdW50OmFwaS5zZW5kZXJ9KSwhMH19cmV0dXJuITF9Ow=="}}}

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"crittermanager","params":"","code":"Y29uc3QgQ09OVFJBQ1RfTkFNRT0iY3JpdHRlcm1hbmFnZXIiLENSSVRURVJfQ1JFQVRPUj0iY3J5cHRvbWFuY2VyIixVVElMSVRZX1RPS0VOX1NZTUJPTD0iQkVFIixDUklUVEVSU19QRVJfUEFDSz01O2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygicGFyYW1zIikpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGFyYW1zIik7Y29uc3QgcGFyYW1zPXtlZGl0aW9uTWFwcGluZzp7IkJFRSI6MSxBTFBIQToyLEJFVEE6M319O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX19O2NvbnN0IGlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkPShyZXN1bHQsZnJvbSx0byxzeW1ib2wscXVhbnRpdHksZXZlbnRTdHIpPT4hKHZvaWQgMCE9PXJlc3VsdC5lcnJvcnN8fCFyZXN1bHQuZXZlbnRzfHx2b2lkIDA9PT1yZXN1bHQuZXZlbnRzLmZpbmQoKGVsPT4idG9rZW5zIj09PWVsLmNvbnRyYWN0JiZlbC5ldmVudD09PWV2ZW50U3RyJiZlbC5kYXRhLmZyb209PT1mcm9tJiZlbC5kYXRhLnRvPT09dG8mJmFwaS5CaWdOdW1iZXIoZWwuZGF0YS5xdWFudGl0eSkuZXEocXVhbnRpdHkpJiZlbC5kYXRhLnN5bWJvbD09PXN5bWJvbCkpKTthY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBwYXlsb2FkPT57aWYoImNyeXB0b21hbmNlciIhPT1hcGkuc2VuZGVyKXJldHVybjtjb25zdHtlZGl0aW9uTWFwcGluZzplZGl0aW9uTWFwcGluZ309cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2VkaXRpb25NYXBwaW5nJiYib2JqZWN0Ij09dHlwZW9mIGVkaXRpb25NYXBwaW5nJiYocGFyYW1zLmVkaXRpb25NYXBwaW5nPWVkaXRpb25NYXBwaW5nKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9LGFjdGlvbnMuY3JlYXRlTmZ0PWFzeW5jIHBheWxvYWQ9PntpZigiY3J5cHRvbWFuY2VyIiE9PWFwaS5zZW5kZXIpcmV0dXJuO2NvbnN0e2lzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQsbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDoiQ1JJVFRFUiJ9KTthcGkuYXNzZXJ0KG51bGw9PT1uZnQsIkNSSVRURVIgYWxyZWFkeSBleGlzdHMiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImNyZWF0ZSIse25hbWU6Ik1pc2NoaWV2b3VzIENyeXB0byBDcml0dGVycyIsc3ltYm9sOiJDUklUVEVSIixhdXRob3JpemVkSXNzdWluZ0FjY291bnRzOltdLGF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzOltDT05UUkFDVF9OQU1FXSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJuZnQiLCJhZGRQcm9wZXJ0eSIse3N5bWJvbDoiQ1JJVFRFUiIsbmFtZToiZWRpdGlvbiIsdHlwZToibnVtYmVyIixpc1JlYWRPbmx5OiEwLGF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHM6W10sYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHM6W0NPTlRSQUNUX05BTUVdLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImFkZFByb3BlcnR5Iix7c3ltYm9sOiJDUklUVEVSIixuYW1lOiJ0eXBlIix0eXBlOiJudW1iZXIiLGlzUmVhZE9ubHk6ITAsYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50czpbXSxhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0czpbQ09OVFJBQ1RfTkFNRV0saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibmZ0IiwiYWRkUHJvcGVydHkiLHtzeW1ib2w6IkNSSVRURVIiLG5hbWU6InJhcml0eSIsdHlwZToibnVtYmVyIixpc1JlYWRPbmx5OiEwLGF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHM6W10sYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHM6W0NPTlRSQUNUX05BTUVdLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImFkZFByb3BlcnR5Iix7c3ltYm9sOiJDUklUVEVSIixuYW1lOiJpc0dvbGRGb2lsIix0eXBlOiJib29sZWFuIixpc1JlYWRPbmx5OiEwLGF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHM6W10sYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHM6W0NPTlRSQUNUX05BTUVdLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImFkZFByb3BlcnR5Iix7c3ltYm9sOiJDUklUVEVSIixuYW1lOiJuYW1lIix0eXBlOiJzdHJpbmciLGF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHM6W10sYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHM6W0NPTlRSQUNUX05BTUVdLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImFkZFByb3BlcnR5Iix7c3ltYm9sOiJDUklUVEVSIixuYW1lOiJ4cCIsdHlwZToibnVtYmVyIixhdXRob3JpemVkRWRpdGluZ0FjY291bnRzOltdLGF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzOltDT05UUkFDVF9OQU1FXSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJuZnQiLCJhZGRQcm9wZXJ0eSIse3N5bWJvbDoiQ1JJVFRFUiIsbmFtZToiaHAiLHR5cGU6Im51bWJlciIsYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50czpbXSxhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0czpbQ09OVFJBQ1RfTkFNRV0saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pKX0sYWN0aW9ucy51cGRhdGVOYW1lPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpZDppZCxuYW1lOm5hbWV9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChpZCYmInN0cmluZyI9PXR5cGVvZiBpZCYmIWFwaS5CaWdOdW1iZXIoaWQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoaWQpLmd0KDApJiZuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChuYW1lLCIgIikpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9MjUsImludmFsaWQgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiAyNSIpKXtjb25zdCBpbnN0YW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIkNSSVRURVJpbnN0YW5jZXMiLHtfaWQ6YXBpLkJpZ051bWJlcihpZCkudG9OdW1iZXIoKX0pO2luc3RhbmNlJiZhcGkuYXNzZXJ0KGluc3RhbmNlLmFjY291bnQ9PT1hcGkuc2VuZGVyJiYidSI9PT1pbnN0YW5jZS5vd25lZEJ5LCJtdXN0IGJlIHRoZSB0b2tlbiBob2xkZXIiKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJuZnQiLCJzZXRQcm9wZXJ0aWVzIix7c3ltYm9sOiJDUklUVEVSIixmcm9tVHlwZToiY29udHJhY3QiLG5mdHM6W3tpZDppZCxwcm9wZXJ0aWVzOntuYW1lOm5hbWV9fV19KX19O2NvbnN0IGdlbmVyYXRlUmFuZG9tQ3JpdHRlcj0oZWRpdGlvbix0byk9Pntjb25zdCB0eXBlPU1hdGguZmxvb3IoMTAqYXBpLnJhbmRvbSgpKSsxO2xldCByYXJpdHk9MCxyYXJpdHlSb2xsPU1hdGguZmxvb3IoMWUzKmFwaS5yYW5kb20oKSkrMTtyYXJpdHlSb2xsPjk5NT9yYXJpdHk9MzpyYXJpdHlSb2xsPjkwMD9yYXJpdHk9MjpyYXJpdHlSb2xsPjcwMCYmKHJhcml0eT0xKTtsZXQgaXNHb2xkRm9pbD0hMTtyYXJpdHlSb2xsPU1hdGguZmxvb3IoMTAwKmFwaS5yYW5kb20oKSkrMSxyYXJpdHlSb2xsPjk1JiYoaXNHb2xkRm9pbD0hMCk7cmV0dXJue3N5bWJvbDoiQ1JJVFRFUiIsZnJvbVR5cGU6ImNvbnRyYWN0Iix0bzp0byxmZWVTeW1ib2w6VVRJTElUWV9UT0tFTl9TWU1CT0wscHJvcGVydGllczp7ZWRpdGlvbjplZGl0aW9uLHR5cGU6dHlwZSxyYXJpdHk6cmFyaXR5LGlzR29sZEZvaWw6aXNHb2xkRm9pbCxuYW1lOiIiLHhwOjAsaHA6MTAwfX19O2FjdGlvbnMuaGF0Y2g9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3BhY2tTeW1ib2w6cGFja1N5bWJvbCxwYWNrczpwYWNrcyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2VkaXRpb25NYXBwaW5nOmVkaXRpb25NYXBwaW5nfT1wYXJhbXM7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQocGFja1N5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBwYWNrU3ltYm9sJiZwYWNrU3ltYm9sIGluIGVkaXRpb25NYXBwaW5nLCJpbnZhbGlkIHBhY2sgc3ltYm9sIikmJmFwaS5hc3NlcnQocGFja3MmJiJudW1iZXIiPT10eXBlb2YgcGFja3MmJnBhY2tzPj0xJiZwYWNrczw9MTAmJk51bWJlci5pc0ludGVnZXIocGFja3MpLCJwYWNrcyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxMCIpKXtjb25zdCBwYXltZW50VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnBhY2tTeW1ib2x9KSxhdXRob3JpemVkPXBheW1lbnRUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIocGF5bWVudFRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUocGFja3MpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZCwieW91IG11c3QgaGF2ZSBlbm91Z2ggcGFjayB0b2tlbnMiKSl7Y29uc3QgY3JpdHRlcnNUb0hhdGNoPTUqcGFja3MsbmZ0UGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwicGFyYW1zIix7fSkse25mdElzc3VhbmNlRmVlOm5mdElzc3VhbmNlRmVlfT1uZnRQYXJhbXMsdG90YWxJc3N1YW5jZUZlZT1hcGkuQmlnTnVtYmVyKG5mdElzc3VhbmNlRmVlW1VUSUxJVFlfVE9LRU5fU1lNQk9MXSkubXVsdGlwbGllZEJ5KDgpLm11bHRpcGxpZWRCeShjcml0dGVyc1RvSGF0Y2gpLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJjb250cmFjdHNCYWxhbmNlcyIse2FjY291bnQ6Q09OVFJBQ1RfTkFNRSxzeW1ib2w6VVRJTElUWV9UT0tFTl9TWU1CT0x9KSxjYW5BZmZvcmRJc3N1YW5jZT11dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHRvdGFsSXNzdWFuY2VGZWUpO2lmKGFwaS5hc3NlcnQoY2FuQWZmb3JkSXNzdWFuY2UsImNvbnRyYWN0IGNhbm5vdCBhZmZvcmQgaXNzdWFuY2UiKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOnBhY2tTeW1ib2wscXVhbnRpdHk6cGFja3MudG9TdHJpbmcoKSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7aWYoIWFwaS5hc3NlcnQoaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGFwaS5zZW5kZXIsIm51bGwiLHBhY2tTeW1ib2wscGFja3MudG9TdHJpbmcoKSwidHJhbnNmZXIiKSwidW5hYmxlIHRvIHRyYW5zZmVyIHBhY2sgdG9rZW5zIikpcmV0dXJuITE7Zm9yKGxldCBpPTA7aTxwYWNrcztpKz0xKXtjb25zdCBpbnN0YW5jZXM9W107Zm9yKGxldCBqPTA7ajw1O2orPTEpaW5zdGFuY2VzLnB1c2goZ2VuZXJhdGVSYW5kb21Dcml0dGVyKGVkaXRpb25NYXBwaW5nW3BhY2tTeW1ib2xdLGFwaS5zZW5kZXIpKTthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImlzc3VlTXVsdGlwbGUiLHtpbnN0YW5jZXM6aW5zdGFuY2VzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KX1yZXR1cm4hMH19fXJldHVybiExfTs="}}}

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"distribution","params":"","code":"Y29uc3QgRGlzdFN0cmF0ZWd5PVsiZml4ZWQiLCJwb29sIl07YXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVNaW5QYXlvdXQodG9rZW5NaW5QYXlvdXQpe2lmKCFhcGkuYXNzZXJ0KHRva2VuTWluUGF5b3V0JiZBcnJheS5pc0FycmF5KHRva2VuTWluUGF5b3V0KSwidG9rZW5NaW5QYXlvdXQgbXVzdCBiZSBhbiBhcnJheSIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KHRva2VuTWluUGF5b3V0Lmxlbmd0aD49MSwic3BlY2lmeSBhdCBsZWFzdCBvbmUgbWluaW11bSBwYXlvdXQgY29uZmlndXJhdGlvbiIpKXJldHVybiExO2NvbnN0IHRva2VuTWluUGF5b3V0U3ltYm9scz1uZXcgU2V0O2ZvcihsZXQgaT0wO2k8dG9rZW5NaW5QYXlvdXQubGVuZ3RoO2krPTEpe2NvbnN0IHRva2VuTWluUGF5b3V0Q29uZmlnPXRva2VuTWluUGF5b3V0W2ldO2lmKCFhcGkuYXNzZXJ0KHRva2VuTWluUGF5b3V0Q29uZmlnJiZ0b2tlbk1pblBheW91dENvbmZpZy5zeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgdG9rZW5NaW5QYXlvdXRDb25maWcuc3ltYm9sLCJ0b2tlbk1pblBheW91dCBpbnZhbGlkIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQoIXRva2VuTWluUGF5b3V0U3ltYm9scy5oYXModG9rZW5NaW5QYXlvdXRDb25maWcuc3ltYm9sKSwidG9rZW5NaW5QYXlvdXQgY2Fubm90IGhhdmUgZHVwbGljYXRlIHN5bWJvbHMiKSlyZXR1cm4hMTtpZih0b2tlbk1pblBheW91dFN5bWJvbHMuYWRkKHRva2VuTWluUGF5b3V0Q29uZmlnLnN5bWJvbCksIWFwaS5hc3NlcnQodG9rZW5NaW5QYXlvdXRDb25maWcucXVhbnRpdHkmJmFwaS5CaWdOdW1iZXIodG9rZW5NaW5QYXlvdXRDb25maWcucXVhbnRpdHkpLmRwKCk8PTMmJmFwaS5CaWdOdW1iZXIodG9rZW5NaW5QYXlvdXRDb25maWcucXVhbnRpdHkpLmd0ZSgwKSwiaW52YWxpZCBxdWFudGl0eSIpKXJldHVybiExfXJldHVybiEwfWFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlUmVjaXBpZW50cyhwYXJhbXMsdG9rZW5SZWNpcGllbnRzKXtpZighYXBpLmFzc2VydCh0b2tlblJlY2lwaWVudHMmJkFycmF5LmlzQXJyYXkodG9rZW5SZWNpcGllbnRzKSwidG9rZW5SZWNpcGllbnRzIG11c3QgYmUgYW4gYXJyYXkiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydCh0b2tlblJlY2lwaWVudHMubGVuZ3RoPj0xJiZ0b2tlblJlY2lwaWVudHMubGVuZ3RoPD1wYXJhbXMubWF4VHJhbnNmZXJMaW1pdCxgMS0ke3BhcmFtcy5tYXhUcmFuc2ZlckxpbWl0fSB0b2tlblJlY2lwaWVudHMgYXJlIHN1cHBvcnRlZGApKXJldHVybiExO2NvbnN0IHRva2VuUmVjaXBpZW50c0FjY291bnRzPW5ldyBTZXQ7bGV0IHRva2VuUmVjaXBpZW50c1RvdGFsU2hhcmU9MDtmb3IobGV0IGk9MDtpPHRva2VuUmVjaXBpZW50cy5sZW5ndGg7aSs9MSl7Y29uc3QgdG9rZW5SZWNpcGllbnRzQ29uZmlnPXRva2VuUmVjaXBpZW50c1tpXTtpZighYXBpLmFzc2VydCh0b2tlblJlY2lwaWVudHNDb25maWcmJnRva2VuUmVjaXBpZW50c0NvbmZpZy5hY2NvdW50JiYic3RyaW5nIj09dHlwZW9mIHRva2VuUmVjaXBpZW50c0NvbmZpZy5hY2NvdW50LCJ0b2tlblJlY2lwaWVudHMgaW52YWxpZCIpJiYhYXBpLmFzc2VydCh0b2tlblJlY2lwaWVudHNDb25maWcuYWNjb3VudC5sZW5ndGg+PTMmJnRva2VuUmVjaXBpZW50c0NvbmZpZy5hY2NvdW50Lmxlbmd0aDw9MTYsImludmFsaWQgYWNjb3VudCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KCF0b2tlblJlY2lwaWVudHNBY2NvdW50cy5oYXModG9rZW5SZWNpcGllbnRzQ29uZmlnLmFjY291bnQpLCJ0b2tlblJlY2lwaWVudHMgY2Fubm90IGhhdmUgZHVwbGljYXRlIGFjY291bnRzIikpcmV0dXJuITE7aWYodG9rZW5SZWNpcGllbnRzQWNjb3VudHMuYWRkKHRva2VuUmVjaXBpZW50c0NvbmZpZy5hY2NvdW50KSwhYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKHRva2VuUmVjaXBpZW50c0NvbmZpZy5wY3QpJiZ0b2tlblJlY2lwaWVudHNDb25maWcucGN0Pj0xJiZ0b2tlblJlY2lwaWVudHNDb25maWcucGN0PD0xMDAsInRva2VuUmVjaXBpZW50cyBwY3QgbXVzdCBiZSBhbiBpbnRlZ2VyIGZyb20gMSB0byAxMDAiKSlyZXR1cm4hMTtpZih0b2tlblJlY2lwaWVudHNUb3RhbFNoYXJlKz10b2tlblJlY2lwaWVudHNDb25maWcucGN0LCFhcGkuYXNzZXJ0KFsidXNlciIsImNvbnRyYWN0Il0uaW5jbHVkZXModG9rZW5SZWNpcGllbnRzQ29uZmlnLnR5cGUpLCJ0b2tlblJlY2lwaWVudHMgdHlwZSBtdXN0IGJlIHVzZXIgb3IgY29udHJhY3QiKSlyZXR1cm4hMTtpZigiY29udHJhY3QiPT09dG9rZW5SZWNpcGllbnRzQ29uZmlnLnR5cGUmJiFhcGkuYXNzZXJ0KCJvYmplY3QiPT10eXBlb2YgdG9rZW5SZWNpcGllbnRzQ29uZmlnLmNvbnRyYWN0UGF5bG9hZCwiY29udHJhY3QgcmVjaXBpZW50cyBtdXN0IGhhdmUgY29udHJhY3RQYXlsb2FkIikpcmV0dXJuITF9cmV0dXJuISFhcGkuYXNzZXJ0KDEwMD09PXRva2VuUmVjaXBpZW50c1RvdGFsU2hhcmUsInRva2VuUmVjaXBpZW50cyBwY3QgbXVzdCB0b3RhbCAxMDAiKX1mdW5jdGlvbiB2YWxpZGF0ZUluY29taW5nVG9rZW4oZGlzdCxzeW1ib2wpe2ZvcihsZXQgaT0wO2k8ZGlzdC50b2tlbk1pblBheW91dC5sZW5ndGg7aSs9MSlpZihkaXN0LnRva2VuTWluUGF5b3V0W2ldLnN5bWJvbD09PXN5bWJvbClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiB2YWxpZGF0ZUJvbnVzQ3VydmUob2JqKXtpZighYXBpLmFzc2VydCgib2JqZWN0Ij09dHlwZW9mIG9iaiYmIk9iamVjdCI9PT1vYmouY29uc3RydWN0b3IubmFtZSwiaW52YWxpZCBib251c0N1cnZlIHNldHRpbmdzIikpcmV0dXJuITE7aWYoInBlcmlvZEJvbnVzUGN0ImluIG9ianx8Im51bVBlcmlvZHMiaW4gb2JqKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIG9iai5wZXJpb2RCb251c1BjdCYmYXBpLkJpZ051bWJlcihvYmoucGVyaW9kQm9udXNQY3QpLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKG9iai5wZXJpb2RCb251c1BjdCkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIob2JqLnBlcmlvZEJvbnVzUGN0KS5sdCgxMDApJiYic3RyaW5nIj09dHlwZW9mIG9iai5udW1QZXJpb2RzJiZhcGkuQmlnTnVtYmVyKG9iai5udW1QZXJpb2RzKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihvYmoubnVtUGVyaW9kcykuZ3QoMCkmJmFwaS5CaWdOdW1iZXIob2JqLm51bVBlcmlvZHMpLmx0KDU1NTUpLCJpbnZhbGlkIGJvbnVzQ3VydmUgc2V0dGluZ3MiKSlyZXR1cm4hMX1lbHNlIGlmKCFhcGkuYXNzZXJ0KDA9PT1PYmplY3Qua2V5cyhvYmopLmxlbmd0aCwiaW52YWxpZCBib251c0N1cnZlIHNldHRpbmdzIikpcmV0dXJuITE7cmV0dXJuITB9YXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVQb29sKHRva2VuUGFpcil7cmV0dXJuIG51bGwhPT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm1hcmtldHBvb2xzIiwicG9vbHMiLHt0b2tlblBhaXI6dG9rZW5QYWlyfSl9YXN5bmMgZnVuY3Rpb24gdXBkYXRlVG9rZW5CYWxhbmNlcyhkaXN0LHRva2VuLHF1YW50aXR5KXtjb25zdCB1cERpc3Q9ZGlzdDtpZih1cERpc3QudG9rZW5CYWxhbmNlcyl7Y29uc3QgdEluZGV4PXVwRGlzdC50b2tlbkJhbGFuY2VzLmZpbmRJbmRleCgodD0+dC5zeW1ib2w9PT10b2tlbi5zeW1ib2wpKTstMT09PXRJbmRleD91cERpc3QudG9rZW5CYWxhbmNlcy5wdXNoKHtzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSk6dXBEaXN0LnRva2VuQmFsYW5jZXNbdEluZGV4XS5xdWFudGl0eT1hcGkuQmlnTnVtYmVyKHVwRGlzdC50b2tlbkJhbGFuY2VzW3RJbmRleF0ucXVhbnRpdHkpLnBsdXMocXVhbnRpdHkpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTil9ZWxzZSB1cERpc3QudG9rZW5CYWxhbmNlcz1be3N5bWJvbDp0b2tlbi5zeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9XTthd2FpdCBhcGkuZGIudXBkYXRlKCJiYXRjaGVzIix1cERpc3QpfWFzeW5jIGZ1bmN0aW9uIGdldEVmZmVjdGl2ZVNoYXJlcyhwYXJhbXMsZGlzdCxscCl7Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSx0aW1lRGlmZj1hcGkuQmlnTnVtYmVyKGJsb2NrRGF0ZS5nZXRUaW1lKCkpLm1pbnVzKGxwLnRpbWVGYWN0b3IpO2lmKHRpbWVEaWZmLmx0ZSgzNjAwKnBhcmFtcy5kaXN0VGlja0hvdXJzKjFlMykpcmV0dXJuIGxwLnNoYXJlcztsZXQgbXVsdGlwbGllcj1hcGkuQmlnTnVtYmVyKCIxIik7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBkaXN0LmJvbnVzQ3VydmUubnVtUGVyaW9kcyYmKG11bHRpcGxpZXI9dGltZURpZmYubHQocGFyYW1zLmRpc3RUaWNrSG91cnMqZGlzdC5ib251c0N1cnZlLm51bVBlcmlvZHMqMzYwMCoxZTMpP2FwaS5CaWdOdW1iZXIoZGlzdC5ib251c0N1cnZlLnBlcmlvZEJvbnVzUGN0KS5kaXZpZGVkQnkoIjEwMCIpLnRpbWVzKHRpbWVEaWZmLmRpdmlkZWRCeSgzNjAwKnBhcmFtcy5kaXN0VGlja0hvdXJzKjFlMykuZHAoMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKS5wbHVzKG11bHRpcGxpZXIpOmFwaS5CaWdOdW1iZXIoZGlzdC5ib251c0N1cnZlLnBlcmlvZEJvbnVzUGN0KS5kaXZpZGVkQnkoIjEwMCIpLnRpbWVzKGRpc3QuYm9udXNDdXJ2ZS5udW1QZXJpb2RzKS5wbHVzKG11bHRpcGxpZXIpKSxhcGkuQmlnTnVtYmVyKGxwLnNoYXJlcykudGltZXMobXVsdGlwbGllcil9YXN5bmMgZnVuY3Rpb24gZ2V0UG9vbFJlY2lwaWVudHMocGFyYW1zLGRpc3Qpe2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCksbWluSG9sZFRpbWU9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS5taW51cygzNjAwKnBhcmFtcy5kaXN0VGlja0hvdXJzKjFlMykudG9OdW1iZXIoKSxyZXN1bHQ9W107bGV0IG9mZnNldD0wLHByb2Nlc3NRdWVyeT1bXTtjb25zdCBwb29sPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibWFya2V0cG9vbHMiLCJwb29scyIse3Rva2VuUGFpcjpkaXN0LnRva2VuUGFpcn0pO2lmKCFwb29sfHxwb29sLnRvdGFsU2hhcmVzPD0wKXJldHVybiByZXN1bHQ7Zm9yKDtudWxsIT09cHJvY2Vzc1F1ZXJ5JiZwcm9jZXNzUXVlcnkubGVuZ3RoPT09cGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0fHwwPT09b2Zmc2V0Oyl7cHJvY2Vzc1F1ZXJ5PWF3YWl0IGFwaS5kYi5maW5kSW5UYWJsZSgibWFya2V0cG9vbHMiLCJsaXF1aWRpdHlQb3NpdGlvbnMiLHt0b2tlblBhaXI6ZGlzdC50b2tlblBhaXIsYWNjb3VudDp7JG5pbjpkaXN0LmV4Y2x1ZGVBY2NvdW50fSx0aW1lRmFjdG9yOnskbHRlOm1pbkhvbGRUaW1lfX0scGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0LG9mZnNldCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTxwcm9jZXNzUXVlcnkubGVuZ3RoO2krPTEpe2NvbnN0IGxwPXByb2Nlc3NRdWVyeVtpXTtscC5lZmZTaGFyZXM9YXdhaXQgZ2V0RWZmZWN0aXZlU2hhcmVzKHBhcmFtcyxkaXN0LGxwKSxyZXN1bHQucHVzaChscCl9b2Zmc2V0Kz1wYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXR9cmV0dXJuIHJlc3VsdH1hc3luYyBmdW5jdGlvbiBwYXlSZWNpcGllbnQoYWNjb3VudCxzeW1ib2wscXVhbnRpdHksdHlwZT0idXNlciIsY29udHJhY3RQYXlsb2FkPW51bGwpe2lmKGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApKXtjb25zdCByZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFjY291bnQsc3ltYm9sLHF1YW50aXR5LHR5cGUpO3JldHVybiJjb250cmFjdCI9PT10eXBlJiZjb250cmFjdFBheWxvYWQmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdChhY2NvdW50LCJyZWNlaXZlRGlzdFRva2VucyIse2RhdGE6Y29udHJhY3RQYXlsb2FkLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSwhcmVzLmVycm9yc3x8KGFwaS5kZWJ1ZyhgRXJyb3IgcGF5aW5nIG91dCBkaXN0cmlidXRpb24gb2YgJHtxdWFudGl0eX0gJHtzeW1ib2x9IHRvICR7YWNjb3VudH0gKFRYSUQgJHthcGkudHJhbnNhY3Rpb25JZH0pOiBcbiR7cmVzLmVycm9yc31gKSwhMSl9cmV0dXJuITF9YXN5bmMgZnVuY3Rpb24gcnVuRGlzdHJpYnV0aW9uKGRpc3QscGFyYW1zLGZsdXNoPSExKXtjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApLHVwRGlzdD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRpc3QpKSxwYXlUb2tlbnM9ZGlzdC50b2tlbkJhbGFuY2VzLmZpbHRlcigoZD0+YXBpLkJpZ051bWJlcihkLnF1YW50aXR5KS5ndCgwKSkpO2lmKHBheVRva2Vucy5sZW5ndGg+MClpZigiZml4ZWQiPT09ZGlzdC5zdHJhdGVneSl7Y29uc3R7dG9rZW5SZWNpcGllbnRzOnRva2VuUmVjaXBpZW50c309ZGlzdDtmb3IoO3Rva2VuUmVjaXBpZW50cy5sZW5ndGg+MDspe2NvbnN0IHRyPXRva2VuUmVjaXBpZW50cy5zaGlmdCgpO2ZvcihsZXQgaT0wO2k8cGF5VG9rZW5zLmxlbmd0aDtpKz0xKXtjb25zdCBwYXlUb2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwYXlUb2tlbnNbaV0uc3ltYm9sfSksbWluUGF5b3V0PWRpc3QudG9rZW5NaW5QYXlvdXQuZmluZCgocD0+cC5zeW1ib2w9PT1wYXlUb2tlbnNbaV0uc3ltYm9sKSk7aWYoYXBpLkJpZ051bWJlcihwYXlUb2tlbnNbaV0ucXVhbnRpdHkpLmd0KG1pblBheW91dC5xdWFudGl0eSl8fGZsdXNoKXtjb25zdCBwYXlvdXRTaGFyZT1hcGkuQmlnTnVtYmVyKHBheVRva2Vuc1tpXS5xdWFudGl0eSkubXVsdGlwbGllZEJ5KHRyLnBjdCkuZGl2aWRlZEJ5KDEwMCkuZGl2aWRlZEJ5KGRpc3QubnVtVGlja3NMZWZ0KS50b0ZpeGVkKHBheVRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pO2lmKGFwaS5CaWdOdW1iZXIocGF5b3V0U2hhcmUpLmd0KDApJiZhd2FpdCBwYXlSZWNpcGllbnQodHIuYWNjb3VudCxwYXlUb2tlbnNbaV0uc3ltYm9sLHBheW91dFNoYXJlLHRyLnR5cGUsdHIuY29udHJhY3RQYXlsb2FkfHxudWxsKSl7Y29uc3QgdGJJbmRleD11cERpc3QudG9rZW5CYWxhbmNlcy5maW5kSW5kZXgoKGI9PmIuc3ltYm9sPT09cGF5VG9rZW5zW2ldLnN5bWJvbCkpO3VwRGlzdC50b2tlbkJhbGFuY2VzW3RiSW5kZXhdLnF1YW50aXR5PWFwaS5CaWdOdW1iZXIodXBEaXN0LnRva2VuQmFsYW5jZXNbdGJJbmRleF0ucXVhbnRpdHkpLm1pbnVzKHBheW91dFNoYXJlKS50b0ZpeGVkKHBheVRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGFwaS5lbWl0KCJwYXltZW50Iix7ZGlzdElkOmRpc3QuX2lkLHRva2VuUGFpcjpkaXN0LnRva2VuUGFpcixzeW1ib2w6cGF5VG9rZW5zW2ldLnN5bWJvbCxhY2NvdW50OnRyLmFjY291bnQscXVhbnRpdHk6cGF5b3V0U2hhcmV9KX19fX19ZWxzZSBpZigicG9vbCI9PT1kaXN0LnN0cmF0ZWd5KXtjb25zdCB0b2tlblJlY2lwaWVudHM9YXdhaXQgZ2V0UG9vbFJlY2lwaWVudHMocGFyYW1zLGRpc3QpLHNoYXJlVG90YWw9dG9rZW5SZWNpcGllbnRzLnJlZHVjZSgoKGFjYyxjdXIpPT5hY2MucGx1cyhjdXIuZWZmU2hhcmVzKSksYXBpLkJpZ051bWJlcigwKSk7aWYoYXBpLmFzc2VydChzaGFyZVRvdGFsLmd0KDApLCJubyBsaXF1aWRpdHkgc2hhcmVzIGZvciB0aGlzIHRva2VuUGFpciIpKXtsZXQgcGF5VHhDb3VudD0wO2NvbnN0IHN0b3JlUGVuZGluZz1bXTtmb3IoO3Rva2VuUmVjaXBpZW50cy5sZW5ndGg+MDspe2NvbnN0IHRyPXRva2VuUmVjaXBpZW50cy5zaGlmdCgpLHBheW91dFNoYXJlPWFwaS5CaWdOdW1iZXIodHIuZWZmU2hhcmVzKS5kaXZpZGVkQnkoc2hhcmVUb3RhbCk7Zm9yKGxldCBpPTA7aTxwYXlUb2tlbnMubGVuZ3RoO2krPTEpe2NvbnN0IHBheVRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnBheVRva2Vuc1tpXS5zeW1ib2x9KSxwYXlvdXRRdHk9YXBpLkJpZ051bWJlcihwYXlUb2tlbnNbaV0ucXVhbnRpdHkpLm11bHRpcGxpZWRCeShwYXlvdXRTaGFyZSkuZGl2aWRlZEJ5KGRpc3QubnVtVGlja3NMZWZ0KS50b0ZpeGVkKHBheVRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pO2lmKGFwaS5CaWdOdW1iZXIocGF5b3V0UXR5KS5ndCgwKSl7bGV0IHBheVJlc3VsdD0hMCxwYXlOb3c9ITA7aWYocGF5VHhDb3VudDxwYXJhbXMubWF4VHJhbnNmZXJMaW1pdD9wYXlSZXN1bHQ9YXdhaXQgcGF5UmVjaXBpZW50KHRyLmFjY291bnQscGF5VG9rZW5zW2ldLnN5bWJvbCxwYXlvdXRRdHkpOihwYXlOb3c9ITEsc3RvcmVQZW5kaW5nLnB1c2goe2Rpc3RJZDpkaXN0Ll9pZCxhY2NvdW50OnRyLmFjY291bnQsc3ltYm9sOnBheVRva2Vuc1tpXS5zeW1ib2wscXVhbnRpdHk6cGF5b3V0UXR5fSkpLHBheVJlc3VsdCl7Y29uc3QgdGJJbmRleD11cERpc3QudG9rZW5CYWxhbmNlcy5maW5kSW5kZXgoKGI9PmIuc3ltYm9sPT09cGF5VG9rZW5zW2ldLnN5bWJvbCkpO3VwRGlzdC50b2tlbkJhbGFuY2VzW3RiSW5kZXhdLnF1YW50aXR5PWFwaS5CaWdOdW1iZXIodXBEaXN0LnRva2VuQmFsYW5jZXNbdGJJbmRleF0ucXVhbnRpdHkpLm1pbnVzKHBheW91dFF0eSkudG9GaXhlZChwYXlUb2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxwYXlOb3cmJmFwaS5lbWl0KCJwYXltZW50Iix7ZGlzdElkOmRpc3QuX2lkLHRva2VuUGFpcjpkaXN0LnRva2VuUGFpcixzeW1ib2w6cGF5VG9rZW5zW2ldLnN5bWJvbCxhY2NvdW50OnRyLmFjY291bnQscXVhbnRpdHk6cGF5b3V0UXR5fSl9cGF5VHhDb3VudCs9MX19fXN0b3JlUGVuZGluZy5sZW5ndGg+MCYmYXdhaXQgYXBpLmRiLmluc2VydCgicGVuZGluZ1BheW1lbnRzIix7ZHVlVGltZTpibG9ja0RhdGUuZ2V0VGltZSgpLGFjY291bnRzOnN0b3JlUGVuZGluZ30pfX11cERpc3QubnVtVGlja3NMZWZ0LT0xLHVwRGlzdC5sYXN0VGlja1RpbWU9YmxvY2tEYXRlLmdldFRpbWUoKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYXRjaGVzIix1cERpc3QpfWFzeW5jIGZ1bmN0aW9uIHJ1blBlbmRpbmdQYXkocGVuZGluZ1BheSxwYXJhbXMpe2ZvcihsZXQgaT1NYXRoLm1pbihwYXJhbXMubWF4VHJhbnNmZXJMaW1pdCxwZW5kaW5nUGF5LmFjY291bnRzLmxlbmd0aCktMTtpPj0wO2ktPTEpe2NvbnN0IHA9cGVuZGluZ1BheS5hY2NvdW50c1tpXTthd2FpdCBwYXlSZWNpcGllbnQocC5hY2NvdW50LHAuc3ltYm9sLHAucXVhbnRpdHkpJiYocGVuZGluZ1BheS5hY2NvdW50cy5zcGxpY2UoaSwxKSxhcGkuZW1pdCgicGF5bWVudCIsey4uLnAscGVuZGluZzohMH0pKX0wPT09cGVuZGluZ1BheS5hY2NvdW50cy5sZW5ndGg/YXdhaXQgYXBpLmRiLnJlbW92ZSgicGVuZGluZ1BheW1lbnRzIixwZW5kaW5nUGF5KTphd2FpdCBhcGkuZGIudXBkYXRlKCJwZW5kaW5nUGF5bWVudHMiLHBlbmRpbmdQYXkpfWFjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygiYmF0Y2hlcyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImJhdGNoZXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2NvbnN0IHBhcmFtcz17ZGlzdENyZWF0aW9uRmVlOiI1MDAiLGRpc3RVcGRhdGVGZWU6IjI1MCJ9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX1lbHNle2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYocGFyYW1zLnVwZGF0ZUluZGV4KXtpZigxPT09cGFyYW1zLnVwZGF0ZUluZGV4KXtjb25zdCBjbGVhclBlbmRpbmc9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdQYXltZW50cyIse30pO2ZvcihsZXQgaT0wO2k8Y2xlYXJQZW5kaW5nLmxlbmd0aDtpKz0xKWF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdQYXltZW50cyIsY2xlYXJQZW5kaW5nW2ldKTtjb25zdCBzeW5jRGlzdHM9YXdhaXQgYXBpLmRiLmZpbmQoImJhdGNoZXMiLHt9KTtmb3IobGV0IGk9MDtpPHN5bmNEaXN0cy5sZW5ndGg7aSs9MSl7Y29uc3QgZGlzdD1zeW5jRGlzdHNbaV07aWYoZGlzdC50b2tlbkJhbGFuY2VzKXtsZXQgdXBkYXRlPSExO2NvbnN0IGhpdmVJbmRleD1kaXN0LnRva2VuQmFsYW5jZXMuZmluZEluZGV4KCh0PT4iU1dBUC5ISVZFIj09PXQuc3ltYm9sKSk7LTEhPT1oaXZlSW5kZXgmJihkaXN0LnRva2VuQmFsYW5jZXNbaGl2ZUluZGV4XS5xdWFudGl0eT1hcGkuQmlnTnVtYmVyKCIwIikudG9GaXhlZCg4KSx1cGRhdGU9ITApO2NvbnN0IHNpbUluZGV4PWRpc3QudG9rZW5CYWxhbmNlcy5maW5kSW5kZXgoKHQ9PiJTSU0iPT09dC5zeW1ib2wpKTstMSE9PXNpbUluZGV4JiYoZGlzdC50b2tlbkJhbGFuY2VzW3NpbUluZGV4XS5xdWFudGl0eT1hcGkuQmlnTnVtYmVyKCIwIikudG9GaXhlZCgzKSx1cGRhdGU9ITApLHVwZGF0ZSYmYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmF0Y2hlcyIsZGlzdCl9fXBhcmFtcy51cGRhdGVJbmRleD0yLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX19ZWxzZSBhd2FpdCBhcGkuZGIuYWRkSW5kZXhlcygiYmF0Y2hlcyIsW3tuYW1lOiJsYXN0VGlja1RpbWUiLGluZGV4OntsYXN0VGlja1RpbWU6MX19XSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwZW5kaW5nUGF5bWVudHMiLFsiZHVlVGltZSJdKSxwYXJhbXMuZGlzdFRpY2tIb3Vycz0iMjQiLHBhcmFtcy5tYXhEaXN0cmlidXRpb25zTGltaXQ9MSxwYXJhbXMubWF4VHJhbnNmZXJMaW1pdD01MCxwYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXQ9MWUzLHBhcmFtcy51cGRhdGVJbmRleD0xLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX19LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtkaXN0Q3JlYXRpb25GZWU6ZGlzdENyZWF0aW9uRmVlLGRpc3RVcGRhdGVGZWU6ZGlzdFVwZGF0ZUZlZSxkaXN0VGlja0hvdXJzOmRpc3RUaWNrSG91cnMsbWF4RGlzdHJpYnV0aW9uc0xpbWl0Om1heERpc3RyaWJ1dGlvbnNMaW1pdCxtYXhUcmFuc2ZlckxpbWl0Om1heFRyYW5zZmVyTGltaXQscHJvY2Vzc1F1ZXJ5TGltaXQ6cHJvY2Vzc1F1ZXJ5TGltaXR9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihkaXN0Q3JlYXRpb25GZWUpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgZGlzdENyZWF0aW9uRmVlJiYhYXBpLkJpZ051bWJlcihkaXN0Q3JlYXRpb25GZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoZGlzdENyZWF0aW9uRmVlKS5ndGUoMCksImludmFsaWQgZGlzdENyZWF0aW9uRmVlIikpcmV0dXJuO3BhcmFtcy5kaXN0Q3JlYXRpb25GZWU9ZGlzdENyZWF0aW9uRmVlfWlmKGRpc3RVcGRhdGVGZWUpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgZGlzdFVwZGF0ZUZlZSYmIWFwaS5CaWdOdW1iZXIoZGlzdFVwZGF0ZUZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihkaXN0VXBkYXRlRmVlKS5ndGUoMCksImludmFsaWQgZGlzdFVwZGF0ZUZlZSIpKXJldHVybjtwYXJhbXMuZGlzdFVwZGF0ZUZlZT1kaXN0VXBkYXRlRmVlfWlmKGRpc3RUaWNrSG91cnMpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgZGlzdFRpY2tIb3VycyYmYXBpLkJpZ051bWJlcihkaXN0VGlja0hvdXJzKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihkaXN0VGlja0hvdXJzKS5ndGUoMSksImludmFsaWQgZGlzdFRpY2tIb3VycyIpKXJldHVybjtwYXJhbXMuZGlzdFRpY2tIb3Vycz1kaXN0VGlja0hvdXJzfWlmKG1heERpc3RyaWJ1dGlvbnNMaW1pdCl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBtYXhEaXN0cmlidXRpb25zTGltaXQmJmFwaS5CaWdOdW1iZXIobWF4RGlzdHJpYnV0aW9uc0xpbWl0KS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihtYXhEaXN0cmlidXRpb25zTGltaXQpLmd0ZSgxKSwiaW52YWxpZCBtYXhEaXN0cmlidXRpb25zTGltaXQiKSlyZXR1cm47cGFyYW1zLm1heERpc3RyaWJ1dGlvbnNMaW1pdD1hcGkuQmlnTnVtYmVyKG1heERpc3RyaWJ1dGlvbnNMaW1pdCkudG9OdW1iZXIoKX1pZihtYXhUcmFuc2ZlckxpbWl0KXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIG1heFRyYW5zZmVyTGltaXQmJmFwaS5CaWdOdW1iZXIobWF4VHJhbnNmZXJMaW1pdCkuaXNJbnRlZ2VyKCkmJmFwaS5CaWdOdW1iZXIobWF4VHJhbnNmZXJMaW1pdCkuZ3RlKDEpLCJpbnZhbGlkIG1heFRyYW5zZmVyTGltaXQiKSlyZXR1cm47cGFyYW1zLm1heFRyYW5zZmVyTGltaXQ9YXBpLkJpZ051bWJlcihtYXhUcmFuc2ZlckxpbWl0KS50b051bWJlcigpfWlmKHByb2Nlc3NRdWVyeUxpbWl0KXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHByb2Nlc3NRdWVyeUxpbWl0JiZhcGkuQmlnTnVtYmVyKHByb2Nlc3NRdWVyeUxpbWl0KS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihwcm9jZXNzUXVlcnlMaW1pdCkuZ3RlKDEpLCJpbnZhbGlkIHByb2Nlc3NRdWVyeUxpbWl0IikpcmV0dXJuO3BhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdD1hcGkuQmlnTnVtYmVyKHByb2Nlc3NRdWVyeUxpbWl0KS50b051bWJlcigpfWF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX0sYWN0aW9ucy5jcmVhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N0cmF0ZWd5OnN0cmF0ZWd5LG51bVRpY2tzOm51bVRpY2tzLGV4Y2x1ZGVBY2NvdW50OmV4Y2x1ZGVBY2NvdW50LHRva2VuUGFpcjp0b2tlblBhaXIsYm9udXNDdXJ2ZTpib251c0N1cnZlLHRva2VuTWluUGF5b3V0OnRva2VuTWluUGF5b3V0LHRva2VuUmVjaXBpZW50czp0b2tlblJlY2lwaWVudHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtkaXN0Q3JlYXRpb25GZWU6ZGlzdENyZWF0aW9uRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hKCFhcGkuQmlnTnVtYmVyKGRpc3RDcmVhdGlvbkZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShkaXN0Q3JlYXRpb25GZWUpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZSIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSB0cmFuc2FjdGlvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHN0cmF0ZWd5JiYtMSE9PURpc3RTdHJhdGVneS5pbmRleE9mKHN0cmF0ZWd5KSwiaW52YWxpZCBzdHJhdGVneSIpJiZhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgbnVtVGlja3MmJmFwaS5CaWdOdW1iZXIobnVtVGlja3MpLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKG51bVRpY2tzKS5ndCgwKSYmYXBpLkJpZ051bWJlcihudW1UaWNrcykubHRlKDU1NTUpLCJudW1UaWNrcyBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgNTU1NSIpKXtjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApLG5ld0Rpc3Q9e3N0cmF0ZWd5OnN0cmF0ZWd5LG51bVRpY2tzOm51bVRpY2tzLG51bVRpY2tzTGVmdDphcGkuQmlnTnVtYmVyKG51bVRpY2tzKS50b051bWJlcigpLGFjdGl2ZTohMSxjcmVhdG9yOmFwaS5zZW5kZXIsbGFzdFRpY2tUaW1lOmJsb2NrRGF0ZS5nZXRUaW1lKCl9O2lmKCJmaXhlZCI9PT1zdHJhdGVneSYmYXdhaXQgdmFsaWRhdGVNaW5QYXlvdXQodG9rZW5NaW5QYXlvdXQpJiZhd2FpdCB2YWxpZGF0ZVJlY2lwaWVudHMocGFyYW1zLHRva2VuUmVjaXBpZW50cykpbmV3RGlzdC50b2tlbk1pblBheW91dD10b2tlbk1pblBheW91dCxuZXdEaXN0LnRva2VuUmVjaXBpZW50cz10b2tlblJlY2lwaWVudHM7ZWxzZXtpZigicG9vbCIhPT1zdHJhdGVneSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoYXdhaXQgdmFsaWRhdGVQb29sKHRva2VuUGFpciksImludmFsaWQgdG9rZW5QYWlyIikpcmV0dXJuO2lmKHZvaWQgMCE9PWV4Y2x1ZGVBY2NvdW50JiYhYXBpLmFzc2VydChBcnJheS5pc0FycmF5KGV4Y2x1ZGVBY2NvdW50KSwiZXhjbHVkZUFjY291bnQgbXVzdCBiZSBhbiBhcnJheSIpKXJldHVybjtpZih2b2lkIDAhPT1ib251c0N1cnZlJiYhdmFsaWRhdGVCb251c0N1cnZlKGJvbnVzQ3VydmUpKXJldHVybjtuZXdEaXN0LnRva2VuUGFpcj10b2tlblBhaXIsbmV3RGlzdC5leGNsdWRlQWNjb3VudD1leGNsdWRlQWNjb3VudHx8W10sbmV3RGlzdC5ib251c0N1cnZlPWJvbnVzQ3VydmV8fHt9fWNvbnN0IGNyZWF0ZWREaXN0PWF3YWl0IGFwaS5kYi5pbnNlcnQoImJhdGNoZXMiLG5ld0Rpc3QpO2FwaS5zZW5kZXIhPT1hcGkub3duZXImJmFwaS5CaWdOdW1iZXIoZGlzdENyZWF0aW9uRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6ZGlzdENyZWF0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhcGkuZW1pdCgiY3JlYXRlIix7aWQ6Y3JlYXRlZERpc3QuX2lkfSl9fSxhY3Rpb25zLnVwZGF0ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7aWQ6aWQsbnVtVGlja3M6bnVtVGlja3MsZXhjbHVkZUFjY291bnQ6ZXhjbHVkZUFjY291bnQsdG9rZW5QYWlyOnRva2VuUGFpcixib251c0N1cnZlOmJvbnVzQ3VydmUsdG9rZW5NaW5QYXlvdXQ6dG9rZW5NaW5QYXlvdXQsdG9rZW5SZWNpcGllbnRzOnRva2VuUmVjaXBpZW50cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2Rpc3RVcGRhdGVGZWU6ZGlzdFVwZGF0ZUZlZX09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxhdXRob3JpemVkQ3JlYXRpb249ISghYXBpLkJpZ051bWJlcihkaXN0VXBkYXRlRmVlKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGRpc3RVcGRhdGVGZWUpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHVwZGF0ZSBmZWUiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5Iikpe2NvbnN0IGV4RGlzdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmF0Y2hlcyIse19pZDppZH0pO2lmKGFwaS5hc3NlcnQoZXhEaXN0LCJkaXN0cmlidXRpb24gbm90IGZvdW5kIikmJmFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PWFwaS5vd25lcnx8YXBpLnNlbmRlcj09PWV4RGlzdC5jcmVhdG9yLCJtdXN0IGJlIG93bmVyIG9yIGNyZWF0b3IiKSl7aWYobnVtVGlja3MmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBudW1UaWNrcyYmYXBpLkJpZ051bWJlcihudW1UaWNrcykuaXNJbnRlZ2VyKCkmJmFwaS5CaWdOdW1iZXIobnVtVGlja3MpLmd0KDApJiZhcGkuQmlnTnVtYmVyKG51bVRpY2tzKS5sdGUoNTU1NSksIm51bVRpY2tzIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA1NTU1IikmJihleERpc3QubnVtVGlja3M9bnVtVGlja3MsZXhEaXN0Lm51bVRpY2tzTGVmdD1hcGkuQmlnTnVtYmVyKG51bVRpY2tzKS50b051bWJlcigpKSwiZml4ZWQiPT09ZXhEaXN0LnN0cmF0ZWd5KXtpZighYXdhaXQgdmFsaWRhdGVNaW5QYXlvdXQodG9rZW5NaW5QYXlvdXQpfHwhYXdhaXQgdmFsaWRhdGVSZWNpcGllbnRzKHBhcmFtcyx0b2tlblJlY2lwaWVudHMpKXJldHVybjtleERpc3QudG9rZW5NaW5QYXlvdXQ9dG9rZW5NaW5QYXlvdXQsZXhEaXN0LnRva2VuUmVjaXBpZW50cz10b2tlblJlY2lwaWVudHN9ZWxzZXtpZigicG9vbCIhPT1leERpc3Quc3RyYXRlZ3kpcmV0dXJuO3ZvaWQgMCE9PWV4Y2x1ZGVBY2NvdW50JiZhcGkuYXNzZXJ0KEFycmF5LmlzQXJyYXkoZXhjbHVkZUFjY291bnQpLCJleGNsdWRlQWNjb3VudCBtdXN0IGJlIGFuIGFycmF5IikmJihleERpc3QuZXhjbHVkZUFjY291bnQ9ZXhjbHVkZUFjY291bnQpLHZvaWQgMCE9PXRva2VuUGFpciYmYXBpLmFzc2VydChhd2FpdCB2YWxpZGF0ZVBvb2wodG9rZW5QYWlyKSwiaW52YWxpZCB0b2tlblBhaXIiKSYmKGV4RGlzdC50b2tlblBhaXI9dG9rZW5QYWlyKSx2b2lkIDAhPT1ib251c0N1cnZlJiZ2YWxpZGF0ZUJvbnVzQ3VydmUoYm9udXNDdXJ2ZSkmJihleERpc3QuYm9udXNDdXJ2ZT1ib251c0N1cnZlKX1hd2FpdCBhcGkuZGIudXBkYXRlKCJiYXRjaGVzIixleERpc3QpLGFwaS5zZW5kZXIhPT1hcGkub3duZXImJmFwaS5CaWdOdW1iZXIoZGlzdFVwZGF0ZUZlZSkuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmRpc3RVcGRhdGVGZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLGFwaS5lbWl0KCJ1cGRhdGUiLHtpZDpleERpc3QuX2lkfSl9fX0sYWN0aW9ucy5zZXRBY3RpdmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lkOmlkLGFjdGl2ZTphY3RpdmUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IGRpc3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhdGNoZXMiLHtfaWQ6aWR9KTthcGkuYXNzZXJ0KGRpc3QsImRpc3RyaWJ1dGlvbiBpZCBub3QgZm91bmQiKSYmYXBpLmFzc2VydChkaXN0LmNyZWF0b3I9PT1hcGkuc2VuZGVyfHxhcGkub3duZXI9PT1hcGkuc2VuZGVyLCJ5b3UgbXVzdCBiZSB0aGUgY3JlYXRvciBvZiB0aGlzIGRpc3RyaWJ1dGlvbiIpJiYoZGlzdC5hY3RpdmU9ISFhY3RpdmUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmF0Y2hlcyIsZGlzdCksYXBpLmVtaXQoInNldEFjdGl2ZSIse2lkOmRpc3QuX2lkLGFjdGl2ZTpkaXN0LmFjdGl2ZX0pKX0sYWN0aW9ucy5kZXBvc2l0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpZDppZCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQsZGVwVG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpfHwhYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiZhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwiaW52YWxpZCBxdWFudGl0eSIpfHwhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5kcCgpPD1kZXBUb2tlbi5wcmVjaXNpb24sInF1YW50aXR5IHByZWNpc2lvbiBtaXNtYXRjaCIpKXJldHVybjtjb25zdCBkaXN0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYXRjaGVzIix7X2lkOmlkfSk7aWYoYXBpLmFzc2VydChkaXN0LCJkaXN0cmlidXRpb24gaWQgbm90IGZvdW5kIikmJmFwaS5hc3NlcnQoZGlzdC5hY3RpdmUsImRpc3RyaWJ1dGlvbiBtdXN0IGJlIGFjdGl2ZSB0byBkZXBvc2l0Iikpe2lmKCJmaXhlZCI9PT1kaXN0LnN0cmF0ZWd5JiYhYXBpLmFzc2VydCh2YWxpZGF0ZUluY29taW5nVG9rZW4oZGlzdCxzeW1ib2wpLGAke3N5bWJvbH0gaXMgbm90IGFjY2VwdGVkIGJ5IHRoaXMgZGlzdHJpYnV0aW9uYCkpcmV0dXJuO2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyVG9Db250cmFjdCIse3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdG86ImRpc3RyaWJ1dGlvbiJ9KTt2b2lkIDA9PT1yZXMuZXJyb3JzJiZyZXMuZXZlbnRzJiZ2b2lkIDAhPT1yZXMuZXZlbnRzLmZpbmQoKGVsPT4idG9rZW5zIj09PWVsLmNvbnRyYWN0JiYidHJhbnNmZXJUb0NvbnRyYWN0Ij09PWVsLmV2ZW50JiZlbC5kYXRhLmZyb209PT1hcGkuc2VuZGVyJiYiZGlzdHJpYnV0aW9uIj09PWVsLmRhdGEudG8mJmFwaS5CaWdOdW1iZXIoZWwuZGF0YS5xdWFudGl0eSkuZXEocXVhbnRpdHkpKSkmJihhd2FpdCB1cGRhdGVUb2tlbkJhbGFuY2VzKGRpc3QsZGVwVG9rZW4scXVhbnRpdHkpLGFwaS5lbWl0KCJkZXBvc2l0Iix7ZGlzdElkOmlkLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fSxhY3Rpb25zLnJlY2VpdmVEdGZUb2tlbnM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2RhdGE6ZGF0YSxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZDtpZighYXBpLmFzc2VydChjYWxsaW5nQ29udHJhY3RJbmZvJiYidG9rZW5mdW5kcyI9PT1jYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsIm5vdCBhdXRob3JpemVkIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KCJvYmplY3QiPT10eXBlb2YgZGF0YSYmIk9iamVjdCI9PT1kYXRhLmNvbnN0cnVjdG9yLm5hbWUmJiJkaXN0SWQiaW4gZGF0YSYmInN0cmluZyI9PXR5cGVvZiBkYXRhLmRpc3RJZCYmYXBpLkJpZ051bWJlcihkYXRhLmRpc3RJZCkuaXNJbnRlZ2VyKCksImludmFsaWQgRFRGIHBheWxvYWQiKSlyZXR1cm47Y29uc3QgZGlzdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmF0Y2hlcyIse19pZDphcGkuQmlnTnVtYmVyKGRhdGEuZGlzdElkKS50b051bWJlcigpfSk7aWYoYXBpLmFzc2VydChkaXN0LCJkaXN0cmlidXRpb24gaWQgbm90IGZvdW5kIikmJmFwaS5hc3NlcnQoZGlzdC5hY3RpdmUsImRpc3RyaWJ1dGlvbiBtdXN0IGJlIGFjdGl2ZSB0byBkZXBvc2l0Iikpe2lmKCJmaXhlZCI9PT1kaXN0LnN0cmF0ZWd5JiYhYXBpLmFzc2VydCh2YWxpZGF0ZUluY29taW5nVG9rZW4oZGlzdCxzeW1ib2wpLGAke3N5bWJvbH0gaXMgbm90IGFjY2VwdGVkIGJ5IHRoaXMgZGlzdHJpYnV0aW9uYCkpcmV0dXJuO2NvbnN0IGRlcFRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2F3YWl0IHVwZGF0ZVRva2VuQmFsYW5jZXMoZGlzdCxkZXBUb2tlbixxdWFudGl0eSksYXBpLmVtaXQoInJlY2VpdmVEdGZUb2tlbnMiLHtkaXN0SWQ6ZGF0YS5kaXN0SWQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pfX0sYWN0aW9ucy5mbHVzaD1hc3luYyBwYXlsb2FkPT57Y29uc3R7aWQ6aWQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxkaXN0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYXRjaGVzIix7X2lkOmlkfSk7aWYoYXBpLmFzc2VydChkaXN0LCJkaXN0cmlidXRpb24gaWQgbm90IGZvdW5kIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIHRyYW5zYWN0aW9uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGFwaS5zZW5kZXI9PT1hcGkub3duZXJ8fGFwaS5zZW5kZXI9PT1kaXN0LmNyZWF0b3IsIm11c3QgYmUgb3duZXIgb3IgY3JlYXRvciIpKXtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2Rpc3QubnVtVGlja3NMZWZ0PTEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmF0Y2hlcyIsZGlzdCksYXdhaXQgcnVuRGlzdHJpYnV0aW9uKGRpc3QscGFyYW1zLCEwKSxhcGkuZW1pdCgiZmx1c2giLHtkaXN0SWQ6ZGlzdC5faWR9KX19LGFjdGlvbnMuY2hlY2tQZW5kaW5nRGlzdHJpYnV0aW9ucz1hc3luYygpPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLGJsb2NrRGF0ZT1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCksdGlja1RpbWU9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS5taW51cygzNjAwKnBhcmFtcy5kaXN0VGlja0hvdXJzKjFlMykudG9OdW1iZXIoKSxwZW5kaW5nRGlzdHM9YXdhaXQgYXBpLmRiLmZpbmQoImJhdGNoZXMiLHthY3RpdmU6ITAsbnVtVGlja3NMZWZ0OnskZ3Q6MH0sInRva2VuQmFsYW5jZXMuMCI6eyRleGlzdHM6ITB9LGxhc3RUaWNrVGltZTp7JGx0ZTp0aWNrVGltZX19LHBhcmFtcy5tYXhEaXN0cmlidXRpb25zTGltaXQsMCxbe2luZGV4OiJsYXN0VGlja1RpbWUiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2lmKHBlbmRpbmdEaXN0cy5sZW5ndGg+MClmb3IobGV0IGk9MDtpPHBlbmRpbmdEaXN0cy5sZW5ndGg7aSs9MSlhd2FpdCBydW5EaXN0cmlidXRpb24ocGVuZGluZ0Rpc3RzW2ldLHBhcmFtcyk7ZWxzZXtjb25zdCBwZW5kaW5nUGF5PWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nUGF5bWVudHMiLHtkdWVUaW1lOnskbHQ6YmxvY2tEYXRlLmdldFRpbWUoKX19LHBhcmFtcy5tYXhEaXN0cmlidXRpb25zTGltaXQsMCxbe2luZGV4OiJkdWVUaW1lIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtpZihwZW5kaW5nUGF5Lmxlbmd0aD4wKWZvcihsZXQgaT0wO2k8cGVuZGluZ1BheS5sZW5ndGg7aSs9MSlhd2FpdCBydW5QZW5kaW5nUGF5KHBlbmRpbmdQYXlbaV0scGFyYW1zKX19fTs="}}}

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"hivepegged","params":"","code":"Y29uc3QgaW5pdGlhdGVXaXRoZHJhd2FsPWFzeW5jKGlkLHJlY2lwaWVudCxxdWFudGl0eSxtZW1vKT0+e2NvbnN0IHdpdGhkcmF3YWw9e307d2l0aGRyYXdhbC5pZD1pZCx3aXRoZHJhd2FsLnR5cGU9IkhJVkUiLHdpdGhkcmF3YWwucmVjaXBpZW50PXJlY2lwaWVudCx3aXRoZHJhd2FsLm1lbW89bWVtbyx3aXRoZHJhd2FsLnF1YW50aXR5PXF1YW50aXR5LGF3YWl0IGFwaS5kYi5pbnNlcnQoIndpdGhkcmF3YWxzIix3aXRoZHJhd2FsKX07YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+eyExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ3aXRoZHJhd2FscyIpJiZhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoIndpdGhkcmF3YWxzIil9LGFjdGlvbnMuYnV5PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyZWNpcGllbnQ6cmVjaXBpZW50LGFtb3VudEhJVkVIQkQ6YW1vdW50SElWRUhCRCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKHJlY2lwaWVudD09PWFwaS5vd25lciYmcmVjaXBpZW50JiZhbW91bnRISVZFSEJEJiZpc1NpZ25lZFdpdGhBY3RpdmVLZXkpe2NvbnN0IHJlcz1hbW91bnRISVZFSEJELnNwbGl0KCIgIiksdW5pdD1yZXNbMV07aWYoYXBpLmFzc2VydCgiSElWRSI9PT11bml0LCJvbmx5IEhJVkUgY2FuIGJlIHVzZWQiKSl7bGV0IHF1YW50aXR5VG9TZW5kPXJlc1swXSxmZWU9YXBpLkJpZ051bWJlcihxdWFudGl0eVRvU2VuZCkubXVsdGlwbGllZEJ5KCIwLjAwNzUiKS50b0ZpeGVkKDMpO2lmKGFwaS5CaWdOdW1iZXIoZmVlKS5sdCgiMC4wMDEiKSYmKGZlZT0iMC4wMDEiKSxxdWFudGl0eVRvU2VuZD1hcGkuQmlnTnVtYmVyKHF1YW50aXR5VG9TZW5kKS5taW51cyhmZWUpLnRvRml4ZWQoMyksYXBpLkJpZ051bWJlcihxdWFudGl0eVRvU2VuZCkuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdEFzT3duZXIoInRva2VucyIsInRyYW5zZmVyIix7c3ltYm9sOiJTV0FQLkhJVkUiLHF1YW50aXR5OnF1YW50aXR5VG9TZW5kLHRvOmFwaS5zZW5kZXJ9KSxhcGkuQmlnTnVtYmVyKGZlZSkuZ3QoMCkpe2NvbnN0IG1lbW89YGZlZSB0eCAke2FwaS50cmFuc2FjdGlvbklkfWA7YXdhaXQgaW5pdGlhdGVXaXRoZHJhd2FsKGAke2FwaS50cmFuc2FjdGlvbklkfS1mZWVgLCJoaXZlLWVuZ2luZSIsZmVlLG1lbW8pfX19fSxhY3Rpb25zLndpdGhkcmF3PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQocXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpJiZpc1NpZ25lZFdpdGhBY3RpdmVLZXkmJmFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmRwKCk8PTMsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3RlKC4wMDIpLCJtaW5pbXVtIHdpdGhkcmF3YWwgaXMgMC4wMDIiKSl7bGV0IGZlZT1hcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5tdWx0aXBsaWVkQnkoIjAuMDA3NSIpLnRvRml4ZWQoMyk7YXBpLkJpZ051bWJlcihmZWUpLmx0KCIwLjAwMSIpJiYoZmVlPSIwLjAwMSIpO2NvbnN0IHF1YW50aXR5VG9TZW5kPWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLm1pbnVzKGZlZSkudG9GaXhlZCgzKTtpZihhcGkuQmlnTnVtYmVyKHF1YW50aXR5VG9TZW5kKS5ndCgwKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHtzeW1ib2w6IlNXQVAuSElWRSIscXVhbnRpdHk6cXVhbnRpdHksdG86YXBpLm93bmVyfSk7aWYodm9pZCAwPT09cmVzLmVycm9ycyYmcmVzLmV2ZW50cyYmdm9pZCAwIT09cmVzLmV2ZW50cy5maW5kKChlbD0+InRva2VucyI9PT1lbC5jb250cmFjdCYmInRyYW5zZmVyIj09PWVsLmV2ZW50JiZlbC5kYXRhLmZyb209PT1hcGkuc2VuZGVyJiZlbC5kYXRhLnRvPT09YXBpLm93bmVyJiZhcGkuQmlnTnVtYmVyKGVsLmRhdGEucXVhbnRpdHkpLmVxKHF1YW50aXR5KSYmIlNXQVAuSElWRSI9PT1lbC5kYXRhLnN5bWJvbCkpKXtsZXQgbWVtbz1gd2l0aGRyYXdhbCB0eCAke2FwaS50cmFuc2FjdGlvbklkfWA7YXdhaXQgaW5pdGlhdGVXaXRoZHJhd2FsKGFwaS50cmFuc2FjdGlvbklkLGFwaS5zZW5kZXIscXVhbnRpdHlUb1NlbmQsbWVtbyksYXBpLkJpZ051bWJlcihmZWUpLmd0KDApJiYobWVtbz1gZmVlIHR4ICR7YXBpLnRyYW5zYWN0aW9uSWR9YCxhd2FpdCBpbml0aWF0ZVdpdGhkcmF3YWwoYCR7YXBpLnRyYW5zYWN0aW9uSWR9LWZlZWAsImhpdmUtZW5naW5lIixmZWUsbWVtbykpfX19fSxhY3Rpb25zLnJlbW92ZVdpdGhkcmF3YWw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lkOmlkLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLnNlbmRlcj09PWFwaS5vd25lciYmaWQmJmlzU2lnbmVkV2l0aEFjdGl2ZUtleSl7Y29uc3Qgd2l0aGRyYXdhbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0aGRyYXdhbHMiLHtpZDppZH0pO3dpdGhkcmF3YWwmJmF3YWl0IGFwaS5kYi5yZW1vdmUoIndpdGhkcmF3YWxzIix3aXRoZHJhd2FsKX19Ow=="}}}

Congratulations @hive-engine! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

You published more than 150 posts.
Your next target is to reach 200 posts.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"market","params":"","code":"Y29uc3QgSElWRV9QRUdHRURfU1lNQk9MPSJTV0FQLkhJVkUiLEhJVkVfUEVHR0VEX1NZTUJPTF9QUkVTSUNJT049OCxDT05UUkFDVF9OQU1FPSJtYXJrZXQiLE1BWF9BTExPV0VEX09QRU5fT1JERVJTPTIwMCxPUkRFUl9GRVRDSF9MSU1JVD0yNSxBQ0NPVU5UX0JMQUNLTElTVD17c3Vuc2V0amVzdXM6MSx3YWl0aW5nZm9ybG92ZToxLHRoZW5pZ2h0czoxLHRoZWRheXM6MSx0ZW1wOjEsc2hhZ2dyb2VkOjEsc2hhZ2d5dGhlc2Vjb25kOjF9LGlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkPShyZXN1bHQsZnJvbSx0byxzeW1ib2wscXVhbnRpdHksZXZlbnRTdHIpPT4hKHZvaWQgMCE9PXJlc3VsdC5lcnJvcnN8fCFyZXN1bHQuZXZlbnRzfHx2b2lkIDA9PT1yZXN1bHQuZXZlbnRzLmZpbmQoKGVsPT4idG9rZW5zIj09PWVsLmNvbnRyYWN0JiZlbC5ldmVudD09PWV2ZW50U3RyJiZlbC5kYXRhLmZyb209PT1mcm9tJiZlbC5kYXRhLnRvPT09dG8mJmFwaS5CaWdOdW1iZXIoZWwuZGF0YS5xdWFudGl0eSkuZXEocXVhbnRpdHkpJiZlbC5kYXRhLnN5bWJvbD09PXN5bWJvbCkpKSxjb3VudE9wZW5PcmRlcnM9YXN5bmMgYWNjb3VudD0+YXdhaXQgYXBpLmRiLmNvdW50KCJzZWxsQm9vayIse2FjY291bnQ6YWNjb3VudH0pK2F3YWl0IGFwaS5kYi5jb3VudCgiYnV5Qm9vayIse2FjY291bnQ6YWNjb3VudH0pLGdldE1ldHJpYz1hc3luYyBzeW1ib2w9PntsZXQgbWV0cmljPWF3YWl0IGFwaS5kYi5maW5kT25lKCJtZXRyaWNzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG51bGw9PT1tZXRyaWMpe21ldHJpYz17fSxtZXRyaWMuc3ltYm9sPXN5bWJvbCxtZXRyaWMudm9sdW1lPSIwIixtZXRyaWMudm9sdW1lRXhwaXJhdGlvbj0wLG1ldHJpYy5sYXN0UHJpY2U9IjAiLG1ldHJpYy5sb3dlc3RBc2s9IjAiLG1ldHJpYy5oaWdoZXN0QmlkPSIwIixtZXRyaWMubGFzdERheVByaWNlPSIwIixtZXRyaWMubGFzdERheVByaWNlRXhwaXJhdGlvbj0wLG1ldHJpYy5wcmljZUNoYW5nZUhpdmU9IjAiLG1ldHJpYy5wcmljZUNoYW5nZVBlcmNlbnQ9IjAiO3JldHVybiBhd2FpdCBhcGkuZGIuaW5zZXJ0KCJtZXRyaWNzIixtZXRyaWMpfXJldHVybiBtZXRyaWN9LHVwZGF0ZVZvbHVtZU1ldHJpYz1hc3luYyhzeW1ib2wscXVhbnRpdHksYWRkPSEwKT0+e2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCksdGltZXN0YW1wU2VjPWJsb2NrRGF0ZS5nZXRUaW1lKCkvMWUzLG1ldHJpYz1hd2FpdCBnZXRNZXRyaWMoc3ltYm9sKTshMD09PWFkZD8obWV0cmljLnZvbHVtZUV4cGlyYXRpb248dGltZXN0YW1wU2VjJiYobWV0cmljLnZvbHVtZT0iMC4wMDAiKSxtZXRyaWMudm9sdW1lPWFwaS5CaWdOdW1iZXIobWV0cmljLnZvbHVtZSkucGx1cyhxdWFudGl0eSkudG9GaXhlZCg4KSxtZXRyaWMudm9sdW1lRXhwaXJhdGlvbj1ibG9ja0RhdGUuc2V0VVRDRGF0ZShibG9ja0RhdGUuZ2V0VVRDRGF0ZSgpKzEpLzFlMyk6bWV0cmljLnZvbHVtZT1hcGkuQmlnTnVtYmVyKG1ldHJpYy52b2x1bWUpLm1pbnVzKHF1YW50aXR5KS50b0ZpeGVkKDgpLGFwaS5CaWdOdW1iZXIobWV0cmljLnZvbHVtZSkubHQoMCkmJihtZXRyaWMudm9sdW1lPSIwLjAwMCIpLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1ldHJpY3MiLG1ldHJpYyl9LHVwZGF0ZVByaWNlTWV0cmljcz1hc3luYyhzeW1ib2wscHJpY2UpPT57Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSx0aW1lc3RhbXBTZWM9YmxvY2tEYXRlLmdldFRpbWUoKS8xZTMsbWV0cmljPWF3YWl0IGdldE1ldHJpYyhzeW1ib2wpO21ldHJpYy5sYXN0UHJpY2U9cHJpY2UsbWV0cmljLmxhc3REYXlQcmljZUV4cGlyYXRpb248dGltZXN0YW1wU2VjPyhtZXRyaWMubGFzdERheVByaWNlPXByaWNlLG1ldHJpYy5sYXN0RGF5UHJpY2VFeHBpcmF0aW9uPWJsb2NrRGF0ZS5zZXRVVENEYXRlKGJsb2NrRGF0ZS5nZXRVVENEYXRlKCkrMSkvMWUzLG1ldHJpYy5wcmljZUNoYW5nZUhpdmU9IjAiLG1ldHJpYy5wcmljZUNoYW5nZVBlcmNlbnQ9IjAlIik6KG1ldHJpYy5wcmljZUNoYW5nZUhpdmU9YXBpLkJpZ051bWJlcihwcmljZSkubWludXMobWV0cmljLmxhc3REYXlQcmljZSkudG9GaXhlZCg4KSxtZXRyaWMucHJpY2VDaGFuZ2VQZXJjZW50PWAke2FwaS5CaWdOdW1iZXIobWV0cmljLnByaWNlQ2hhbmdlSGl2ZSkuZGl2aWRlZEJ5KG1ldHJpYy5sYXN0RGF5UHJpY2UpLm11bHRpcGxpZWRCeSgxMDApLnRvRml4ZWQoMil9JWApLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1ldHJpY3MiLG1ldHJpYyl9LHVwZGF0ZUJpZE1ldHJpYz1hc3luYyBzeW1ib2w9Pntjb25zdCBtZXRyaWM9YXdhaXQgZ2V0TWV0cmljKHN5bWJvbCksYnV5T3JkZXJCb29rPWF3YWl0IGFwaS5kYi5maW5kKCJidXlCb29rIix7c3ltYm9sOnN5bWJvbH0sMSwwLFt7aW5kZXg6InByaWNlRGVjIixkZXNjZW5kaW5nOiEwfV0pO2J1eU9yZGVyQm9vay5sZW5ndGg+MD9tZXRyaWMuaGlnaGVzdEJpZD1idXlPcmRlckJvb2tbMF0ucHJpY2U6bWV0cmljLmhpZ2hlc3RCaWQ9IjAiLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1ldHJpY3MiLG1ldHJpYyl9LHVwZGF0ZUFza01ldHJpYz1hc3luYyBzeW1ib2w9Pntjb25zdCBtZXRyaWM9YXdhaXQgZ2V0TWV0cmljKHN5bWJvbCksc2VsbE9yZGVyQm9vaz1hd2FpdCBhcGkuZGIuZmluZCgic2VsbEJvb2siLHtzeW1ib2w6c3ltYm9sfSwxLDAsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITF9XSk7c2VsbE9yZGVyQm9vay5sZW5ndGg+MD9tZXRyaWMubG93ZXN0QXNrPXNlbGxPcmRlckJvb2tbMF0ucHJpY2U6bWV0cmljLmxvd2VzdEFzaz0iMCIsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWV0cmljcyIsbWV0cmljKX0sdXBkYXRlVHJhZGVzSGlzdG9yeT1hc3luYyh0eXBlLGJ1eWVyLHNlbGxlcixzeW1ib2wscXVhbnRpdHkscHJpY2Usdm9sdW1lLGJ1eVR4SWQsc2VsbFR4SWQpPT57Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSx0aW1lc3RhbXBTZWM9YmxvY2tEYXRlLmdldFRpbWUoKS8xZTMsdGltZXN0YW1wTWludXMyNGhycz1ibG9ja0RhdGUuc2V0VVRDRGF0ZShibG9ja0RhdGUuZ2V0VVRDRGF0ZSgpLTEpLzFlMztsZXQgdHJhZGVzVG9EZWxldGU9YXdhaXQgYXBpLmRiLmZpbmQoInRyYWRlc0hpc3RvcnkiLHtzeW1ib2w6c3ltYm9sLHRpbWVzdGFtcDp7JGx0OnRpbWVzdGFtcE1pbnVzMjRocnN9fSksbmJUcmFkZXNUb0RlbGV0ZT10cmFkZXNUb0RlbGV0ZS5sZW5ndGg7Zm9yKDtuYlRyYWRlc1RvRGVsZXRlPjA7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJUcmFkZXNUb0RlbGV0ZTtpbmRleCs9MSl7Y29uc3QgdHJhZGU9dHJhZGVzVG9EZWxldGVbaW5kZXhdO2F3YWl0IHVwZGF0ZVZvbHVtZU1ldHJpYyh0cmFkZS5zeW1ib2wsdHJhZGUudm9sdW1lLCExKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJ0cmFkZXNIaXN0b3J5Iix0cmFkZSl9dHJhZGVzVG9EZWxldGU9YXdhaXQgYXBpLmRiLmZpbmQoInRyYWRlc0hpc3RvcnkiLHtzeW1ib2w6c3ltYm9sLHRpbWVzdGFtcDp7JGx0OnRpbWVzdGFtcE1pbnVzMjRocnN9fSksbmJUcmFkZXNUb0RlbGV0ZT10cmFkZXNUb0RlbGV0ZS5sZW5ndGh9Y29uc3QgbmV3VHJhZGU9e307bmV3VHJhZGUudHlwZT10eXBlLG5ld1RyYWRlLmJ1eWVyPWJ1eWVyLG5ld1RyYWRlLnNlbGxlcj1zZWxsZXIsbmV3VHJhZGUuc3ltYm9sPXN5bWJvbCxuZXdUcmFkZS5xdWFudGl0eT1xdWFudGl0eSxuZXdUcmFkZS5wcmljZT1wcmljZSxuZXdUcmFkZS50aW1lc3RhbXA9dGltZXN0YW1wU2VjLG5ld1RyYWRlLnZvbHVtZT12b2x1bWUsbmV3VHJhZGUuYnV5VHhJZD1idXlUeElkLG5ld1RyYWRlLnNlbGxUeElkPXNlbGxUeElkLGF3YWl0IGFwaS5kYi5pbnNlcnQoInRyYWRlc0hpc3RvcnkiLG5ld1RyYWRlKSxhd2FpdCB1cGRhdGVQcmljZU1ldHJpY3Moc3ltYm9sLHByaWNlKX0sY291bnREZWNpbWFscz12YWx1ZT0+YXBpLkJpZ051bWJlcih2YWx1ZSkuZHAoKSxyZW1vdmVCYWRPcmRlcnM9YXN5bmMoKT0+e2xldCBuYk9yZGVyc1RvRGVsZXRlPTAsbmJPcmRlcnNEZWxldGVkPTAsb3JkZXJzVG9EZWxldGU9YXdhaXQgYXBpLmRiLmZpbmQoImJ1eUJvb2siLHt0b2tlbnNMb2NrZWQ6eyRpbjpbIjAuMDAwMDAwMDAiXX19LDFlMywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobmJPcmRlcnNUb0RlbGV0ZT1vcmRlcnNUb0RlbGV0ZS5sZW5ndGg7bmJPcmRlcnNUb0RlbGV0ZT4wJiZuYk9yZGVyc0RlbGV0ZWQ8NWUzOyl7Zm9yKGxldCBpbmRleD0wO2luZGV4PG5iT3JkZXJzVG9EZWxldGU7aW5kZXgrPTEpe25iT3JkZXJzRGVsZXRlZCs9MTtjb25zdCBvcmRlcj1vcmRlcnNUb0RlbGV0ZVtpbmRleF07YXdhaXQgYXBpLmRiLnJlbW92ZSgiYnV5Qm9vayIsb3JkZXIpLGF3YWl0IHVwZGF0ZUJpZE1ldHJpYyhvcmRlci5zeW1ib2wpfW9yZGVyc1RvRGVsZXRlPWF3YWl0IGFwaS5kYi5maW5kKCJidXlCb29rIix7dG9rZW5zTG9ja2VkOnskaW46WyIwLjAwMDAwMDAwIl19fSwxZTMsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSksbmJPcmRlcnNUb0RlbGV0ZT1vcmRlcnNUb0RlbGV0ZS5sZW5ndGh9fSxyZW1vdmVCbGFja2xpc3RlZE9yZGVycz1hc3luYyh0eXBlLHRhcmdldEFjY291bnQpPT57Y29uc3QgdGFibGU9ImJ1eSI9PT10eXBlPyJidXlCb29rIjoic2VsbEJvb2siO2xldCBuYk9yZGVyc1RvRGVsZXRlPTAsbmJPcmRlcnNEZWxldGVkPTAsb3JkZXJzVG9EZWxldGU9YXdhaXQgYXBpLmRiLmZpbmQodGFibGUse2FjY291bnQ6dGFyZ2V0QWNjb3VudH0sMWUzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihuYk9yZGVyc1RvRGVsZXRlPW9yZGVyc1RvRGVsZXRlLmxlbmd0aDtuYk9yZGVyc1RvRGVsZXRlPjAmJm5iT3JkZXJzRGVsZXRlZDw1ZTM7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJPcmRlcnNUb0RlbGV0ZTtpbmRleCs9MSl7bmJPcmRlcnNEZWxldGVkKz0xO2NvbnN0IG9yZGVyPW9yZGVyc1RvRGVsZXRlW2luZGV4XTthd2FpdCBhcGkuZGIucmVtb3ZlKHRhYmxlLG9yZGVyKSwic2VsbCI9PT10eXBlP2F3YWl0IHVwZGF0ZUFza01ldHJpYyhvcmRlci5zeW1ib2wpOmF3YWl0IHVwZGF0ZUJpZE1ldHJpYyhvcmRlci5zeW1ib2wpfW9yZGVyc1RvRGVsZXRlPWF3YWl0IGFwaS5kYi5maW5kKHRhYmxlLHthY2NvdW50OnRhcmdldEFjY291bnR9LDFlMywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxuYk9yZGVyc1RvRGVsZXRlPW9yZGVyc1RvRGVsZXRlLmxlbmd0aH19LHJlbW92ZUJsYWNrbGlzdGVkT3JkZXJzQmF0Y2g9YXN5bmModHlwZSxzeW1ib2wsdGFyZ2V0QWNjb3VudCxxdHkpPT57Y29uc3QgdGFibGU9ImJ1eSI9PT10eXBlPyJidXlCb29rIjoic2VsbEJvb2siO2xldCBuYk9yZGVyc1RvRGVsZXRlPTA7Y29uc3Qgb3JkZXJzVG9EZWxldGU9YXdhaXQgYXBpLmRiLmZpbmQodGFibGUse2FjY291bnQ6dGFyZ2V0QWNjb3VudCxzeW1ib2w6c3ltYm9sfSxxdHksMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYobmJPcmRlcnNUb0RlbGV0ZT1vcmRlcnNUb0RlbGV0ZS5sZW5ndGgsbmJPcmRlcnNUb0RlbGV0ZT4wKXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJPcmRlcnNUb0RlbGV0ZTtpbmRleCs9MSl7Y29uc3Qgb3JkZXI9b3JkZXJzVG9EZWxldGVbaW5kZXhdO2F3YWl0IGFwaS5kYi5yZW1vdmUodGFibGUsb3JkZXIpfSJzZWxsIj09PXR5cGU/YXdhaXQgdXBkYXRlQXNrTWV0cmljKHN5bWJvbCk6YXdhaXQgdXBkYXRlQmlkTWV0cmljKHN5bWJvbCl9fSxyZW1vdmVFeHBpcmVkT3JkZXJzPWFzeW5jIHRhYmxlPT57Y29uc3QgdGltZXN0YW1wU2VjPWFwaS5CaWdOdW1iZXIobmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApLmdldFRpbWUoKSkuZGl2aWRlZEJ5KDFlMykudG9OdW1iZXIoKTtsZXQgbmJPcmRlcnNUb0RlbGV0ZT0wLG9yZGVyc1RvRGVsZXRlPWF3YWl0IGFwaS5kYi5maW5kKHRhYmxlLHtleHBpcmF0aW9uOnskbHRlOnRpbWVzdGFtcFNlY319KTtmb3IobmJPcmRlcnNUb0RlbGV0ZT1vcmRlcnNUb0RlbGV0ZS5sZW5ndGg7bmJPcmRlcnNUb0RlbGV0ZT4wOyl7Zm9yKGxldCBpbmRleD0wO2luZGV4PG5iT3JkZXJzVG9EZWxldGU7aW5kZXgrPTEpe2NvbnN0IG9yZGVyPW9yZGVyc1RvRGVsZXRlW2luZGV4XTtsZXQgcXVhbnRpdHksc3ltYm9sOyJidXlCb29rIj09PXRhYmxlPyhzeW1ib2w9IlNXQVAuSElWRSIscXVhbnRpdHk9b3JkZXIudG9rZW5zTG9ja2VkKTooc3ltYm9sPW9yZGVyLnN5bWJvbCxxdWFudGl0eT1vcmRlci5xdWFudGl0eSksYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKG9yZGVyLmFjY291bnQsc3ltYm9sLHF1YW50aXR5LCJ1c2VyIiksYXdhaXQgYXBpLmRiLnJlbW92ZSh0YWJsZSxvcmRlciksImJ1eUJvb2siPT09dGFibGU/KGFwaS5lbWl0KCJvcmRlckV4cGlyZWQiLHt0eXBlOiJidXkiLHR4SWQ6b3JkZXIudHhJZH0pLGF3YWl0IHVwZGF0ZUFza01ldHJpYyhvcmRlci5zeW1ib2wpKTooYXBpLmVtaXQoIm9yZGVyRXhwaXJlZCIse3R5cGU6InNlbGwiLHR4SWQ6b3JkZXIudHhJZH0pLGF3YWl0IHVwZGF0ZUJpZE1ldHJpYyhvcmRlci5zeW1ib2wpKX1vcmRlcnNUb0RlbGV0ZT1hd2FpdCBhcGkuZGIuZmluZCh0YWJsZSx7ZXhwaXJhdGlvbjp7JGx0ZTp0aW1lc3RhbXBTZWN9fSksbmJPcmRlcnNUb0RlbGV0ZT1vcmRlcnNUb0RlbGV0ZS5sZW5ndGh9fTthY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57ITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoImJ1eUJvb2siKT8oYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJidXlCb29rIixbInN5bWJvbCIsImFjY291bnQiLCJwcmljZURlYyIsImV4cGlyYXRpb24iLCJ0eElkIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgic2VsbEJvb2siLFsic3ltYm9sIiwiYWNjb3VudCIsInByaWNlRGVjIiwiZXhwaXJhdGlvbiIsInR4SWQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0cmFkZXNIaXN0b3J5IixbInN5bWJvbCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoIm1ldHJpY3MiLFsic3ltYm9sIl0pKTphd2FpdCByZW1vdmVCYWRPcmRlcnMoKX0sYWN0aW9ucy5jYW5jZWw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCx0eXBlOnR5cGUsaWQ6aWQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxmaW5hbEFjY291bnQ9dm9pZCAwPT09YWNjb3VudHx8Im51bGwiIT09YXBpLnNlbmRlcj9hcGkuc2VuZGVyOmFjY291bnQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleXx8Im51bGwiPT09YXBpLnNlbmRlciwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodHlwZSYmWyJidXkiLCJzZWxsIl0uaW5jbHVkZXModHlwZSkmJmlkLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0YWJsZT0iYnV5Ij09PXR5cGU/ImJ1eUJvb2siOiJzZWxsQm9vayI7bGV0IG9yZGVyPW51bGw7aWYoInN0cmluZyI9PXR5cGVvZiBpZCYmaWQubGVuZ3RoPDUwP29yZGVyPWF3YWl0IGFwaS5kYi5maW5kT25lKHRhYmxlLHt0eElkOmlkfSk6Im51bWJlciI9PXR5cGVvZiBpZCYmTnVtYmVyLmlzSW50ZWdlcihpZCkmJmlkPjAmJihvcmRlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSh0YWJsZSx7X2lkOmlkfSkpLGFwaS5hc3NlcnQobnVsbCE9PW9yZGVyLCJvcmRlciBkb2VzIG5vdCBleGlzdCBvciBpbnZhbGlkIHBhcmFtcyIpJiZvcmRlci5hY2NvdW50PT09ZmluYWxBY2NvdW50KXtsZXQgcXVhbnRpdHksc3ltYm9sOyJidXkiPT09dHlwZT8oc3ltYm9sPSJTV0FQLkhJVkUiLHF1YW50aXR5PW9yZGVyLnRva2Vuc0xvY2tlZCk6KHN5bWJvbD1vcmRlci5zeW1ib2wscXVhbnRpdHk9b3JkZXIucXVhbnRpdHkpLGF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhmaW5hbEFjY291bnQsc3ltYm9sLHF1YW50aXR5LCJ1c2VyIiksYXdhaXQgYXBpLmRiLnJlbW92ZSh0YWJsZSxvcmRlciksInNlbGwiPT09dHlwZT9hd2FpdCB1cGRhdGVBc2tNZXRyaWMob3JkZXIuc3ltYm9sKTphd2FpdCB1cGRhdGVCaWRNZXRyaWMob3JkZXIuc3ltYm9sKX19fTtjb25zdCBmaW5kTWF0Y2hpbmdTZWxsT3JkZXJzPWFzeW5jKG9yZGVyLHRva2VuUHJlY2lzaW9uKT0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHByaWNlRGVjOnByaWNlRGVjfT1vcmRlcixidXlPcmRlcj1vcmRlcjtsZXQgb2Zmc2V0PTAsdm9sdW1lVHJhZGVkPTAsbnVtRGVsZXRlZD0wO2F3YWl0IHJlbW92ZUV4cGlyZWRPcmRlcnMoInNlbGxCb29rIik7bGV0IHNlbGxPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoInNlbGxCb29rIix7c3ltYm9sOnN5bWJvbCxwcmljZURlYzp7JGx0ZTpwcmljZURlY319LDI1LG9mZnNldCxbe2luZGV4OiJwcmljZURlYyIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7ZG97Y29uc3QgbmJPcmRlcnM9c2VsbE9yZGVyQm9vay5sZW5ndGg7bGV0IGluYz0wO2Zvcig7aW5jPG5iT3JkZXJzJiZhcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5ndCgwKTspe2NvbnN0IHNlbGxPcmRlcj1zZWxsT3JkZXJCb29rW2luY107aWYoYXBpLkJpZ051bWJlcihidXlPcmRlci5xdWFudGl0eSkubHRlKHNlbGxPcmRlci5xdWFudGl0eSkpe2xldCBxdHlUb2tlbnNUb1NlbmQ9YXBpLkJpZ051bWJlcihzZWxsT3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShidXlPcmRlci5xdWFudGl0eSkudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfVVApO2lmKGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndChidXlPcmRlci50b2tlbnNMb2NrZWQpJiYocXR5VG9rZW5zVG9TZW5kPWJ1eU9yZGVyLnRva2Vuc0xvY2tlZCksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucXVhbnRpdHkpLmd0KDApLCJ0aGUgb3JkZXIgY2Fubm90IGJlIGZpbGxlZCIpKXtsZXQgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhY2NvdW50LHN5bWJvbCxidXlPcmRlci5xdWFudGl0eSwidXNlciIpO3Jlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKGBUWElEOiAke2J1eU9yZGVyLnR4SWR9YCksYXBpLmRlYnVnKGFjY291bnQpLGFwaS5kZWJ1ZyhzeW1ib2wpLGFwaS5kZWJ1ZyhidXlPcmRlci5xdWFudGl0eSkpLHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoc2VsbE9yZGVyLmFjY291bnQsIlNXQVAuSElWRSIscXR5VG9rZW5zVG9TZW5kLCJ1c2VyIikscmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoYFRYSUQ6ICR7YnV5T3JkZXIudHhJZH1gKSxhcGkuZGVidWcoc2VsbE9yZGVyLmFjY291bnQpLGFwaS5kZWJ1ZygiU1dBUC5ISVZFIiksYXBpLmRlYnVnKHF0eVRva2Vuc1RvU2VuZCkpO2NvbnN0IHF0eUxlZnRTZWxsT3JkZXI9YXBpLkJpZ051bWJlcihzZWxsT3JkZXIucXVhbnRpdHkpLm1pbnVzKGJ1eU9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKHRva2VuUHJlY2lzaW9uKSxuYlRva2Vuc1RvRmlsbE9yZGVyPWFwaS5CaWdOdW1iZXIoc2VsbE9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkocXR5TGVmdFNlbGxPcmRlcikudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7YXBpLkJpZ051bWJlcihxdHlMZWZ0U2VsbE9yZGVyKS5ndCgwKSYmYXBpLkJpZ051bWJlcihuYlRva2Vuc1RvRmlsbE9yZGVyKS5ndGUoIjAuMDAwMDAwMDEiKT8oc2VsbE9yZGVyLnF1YW50aXR5PXF0eUxlZnRTZWxsT3JkZXIsYXdhaXQgYXBpLmRiLnVwZGF0ZSgic2VsbEJvb2siLHNlbGxPcmRlcikpOihhcGkuQmlnTnVtYmVyKHF0eUxlZnRTZWxsT3JkZXIpLmd0KDApJiZhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoc2VsbE9yZGVyLmFjY291bnQsc3ltYm9sLHF0eUxlZnRTZWxsT3JkZXIsInVzZXIiKSxhcGkuZW1pdCgib3JkZXJDbG9zZWQiLHthY2NvdW50OnNlbGxPcmRlci5hY2NvdW50LHR5cGU6InNlbGwiLHR4SWQ6c2VsbE9yZGVyLnR4SWR9KSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJzZWxsQm9vayIsc2VsbE9yZGVyKSxudW1EZWxldGVkKyspO2NvbnN0IHRva2Vuc1RvVW5sb2NrPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIudG9rZW5zTG9ja2VkKS5taW51cyhxdHlUb2tlbnNUb1NlbmQpLnRvRml4ZWQoOCk7YXBpLkJpZ051bWJlcih0b2tlbnNUb1VubG9jaykuZ3QoMCkmJmF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhY2NvdW50LCJTV0FQLkhJVkUiLHRva2Vuc1RvVW5sb2NrLCJ1c2VyIiksYXdhaXQgdXBkYXRlVHJhZGVzSGlzdG9yeSgiYnV5IixhY2NvdW50LHNlbGxPcmRlci5hY2NvdW50LHN5bWJvbCxidXlPcmRlci5xdWFudGl0eSxzZWxsT3JkZXIucHJpY2UscXR5VG9rZW5zVG9TZW5kLGJ1eU9yZGVyLnR4SWQsc2VsbE9yZGVyLnR4SWQpLHZvbHVtZVRyYWRlZD1hcGkuQmlnTnVtYmVyKHZvbHVtZVRyYWRlZCkucGx1cyhxdHlUb2tlbnNUb1NlbmQpLGJ1eU9yZGVyLnF1YW50aXR5PSIwIixhd2FpdCBhcGkuZGIucmVtb3ZlKCJidXlCb29rIixidXlPcmRlciksYXBpLmVtaXQoIm9yZGVyQ2xvc2VkIix7YWNjb3VudDpidXlPcmRlci5hY2NvdW50LHR5cGU6ImJ1eSIsdHhJZDpidXlPcmRlci50eElkfSl9fWVsc2V7bGV0IHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHNlbGxPcmRlci5xdWFudGl0eSkudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfVVApO2lmKGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndChidXlPcmRlci50b2tlbnNMb2NrZWQpJiYocXR5VG9rZW5zVG9TZW5kPWJ1eU9yZGVyLnRva2Vuc0xvY2tlZCksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucXVhbnRpdHkpLmd0KDApLCJ0aGUgb3JkZXIgY2Fubm90IGJlIGZpbGxlZCIpKXtsZXQgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhY2NvdW50LHN5bWJvbCxzZWxsT3JkZXIucXVhbnRpdHksInVzZXIiKTtyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZyhgVFhJRDogJHtidXlPcmRlci50eElkfWApLGFwaS5kZWJ1ZyhhY2NvdW50KSxhcGkuZGVidWcoc3ltYm9sKSxhcGkuZGVidWcoc2VsbE9yZGVyLnF1YW50aXR5KSkscmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhzZWxsT3JkZXIuYWNjb3VudCwiU1dBUC5ISVZFIixxdHlUb2tlbnNUb1NlbmQsInVzZXIiKSxyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZyhgVFhJRDogJHtidXlPcmRlci50eElkfWApLGFwaS5kZWJ1ZyhzZWxsT3JkZXIuYWNjb3VudCksYXBpLmRlYnVnKCJTV0FQLkhJVkUiKSxhcGkuZGVidWcocXR5VG9rZW5zVG9TZW5kKSksYXdhaXQgYXBpLmRiLnJlbW92ZSgic2VsbEJvb2siLHNlbGxPcmRlciksbnVtRGVsZXRlZCsrLGFwaS5lbWl0KCJvcmRlckNsb3NlZCIse2FjY291bnQ6c2VsbE9yZGVyLmFjY291bnQsdHlwZToic2VsbCIsdHhJZDpzZWxsT3JkZXIudHhJZH0pLGJ1eU9yZGVyLnRva2Vuc0xvY2tlZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCkubWludXMocXR5VG9rZW5zVG9TZW5kKS50b0ZpeGVkKDgpLGJ1eU9yZGVyLnF1YW50aXR5PWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucXVhbnRpdHkpLm1pbnVzKHNlbGxPcmRlci5xdWFudGl0eSkudG9GaXhlZCh0b2tlblByZWNpc2lvbik7Y29uc3QgbmJUb2tlbnNUb0ZpbGxPcmRlcj1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoYnV5T3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pO2FwaS5CaWdOdW1iZXIobmJUb2tlbnNUb0ZpbGxPcmRlcikubHQoIjAuMDAwMDAwMDEiKSYmKGFwaS5CaWdOdW1iZXIoYnV5T3JkZXIudG9rZW5zTG9ja2VkKS5ndCgwKSYmYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFjY291bnQsIlNXQVAuSElWRSIsYnV5T3JkZXIudG9rZW5zTG9ja2VkLCJ1c2VyIiksYnV5T3JkZXIucXVhbnRpdHk9IjAiLGF3YWl0IGFwaS5kYi5yZW1vdmUoImJ1eUJvb2siLGJ1eU9yZGVyKSxhcGkuZW1pdCgib3JkZXJDbG9zZWQiLHthY2NvdW50OmJ1eU9yZGVyLmFjY291bnQsdHlwZToiYnV5Iix0eElkOmJ1eU9yZGVyLnR4SWR9KSksYXdhaXQgdXBkYXRlVHJhZGVzSGlzdG9yeSgiYnV5IixhY2NvdW50LHNlbGxPcmRlci5hY2NvdW50LHN5bWJvbCxzZWxsT3JkZXIucXVhbnRpdHksc2VsbE9yZGVyLnByaWNlLHF0eVRva2Vuc1RvU2VuZCxidXlPcmRlci50eElkLHNlbGxPcmRlci50eElkKSx2b2x1bWVUcmFkZWQ9YXBpLkJpZ051bWJlcih2b2x1bWVUcmFkZWQpLnBsdXMocXR5VG9rZW5zVG9TZW5kKX19aW5jKz0xfW9mZnNldCs9MjUtbnVtRGVsZXRlZCxhcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5ndCgwKSYmKHNlbGxPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoInNlbGxCb29rIix7c3ltYm9sOnN5bWJvbCxwcmljZURlYzp7JGx0ZTpwcmljZURlY319LDI1LG9mZnNldCxbe2luZGV4OiJwcmljZURlYyIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSksbnVtRGVsZXRlZD0wKX13aGlsZShzZWxsT3JkZXJCb29rLmxlbmd0aD4wJiZhcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5ndCgwKSk7YXBpLkJpZ051bWJlcihidXlPcmRlci5xdWFudGl0eSkuZ3QoMCkmJmF3YWl0IGFwaS5kYi51cGRhdGUoImJ1eUJvb2siLGJ1eU9yZGVyKSxhcGkuQmlnTnVtYmVyKHZvbHVtZVRyYWRlZCkuZ3QoMCkmJmF3YWl0IHVwZGF0ZVZvbHVtZU1ldHJpYyhzeW1ib2wsdm9sdW1lVHJhZGVkKSxhd2FpdCB1cGRhdGVBc2tNZXRyaWMoc3ltYm9sKSxhd2FpdCB1cGRhdGVCaWRNZXRyaWMoc3ltYm9sKX0sZmluZE1hdGNoaW5nQnV5T3JkZXJzPWFzeW5jKG9yZGVyLHRva2VuUHJlY2lzaW9uKT0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHByaWNlRGVjOnByaWNlRGVjfT1vcmRlcixzZWxsT3JkZXI9b3JkZXI7bGV0IG9mZnNldD0wLHZvbHVtZVRyYWRlZD0wLG51bURlbGV0ZWQ9MDthd2FpdCByZW1vdmVFeHBpcmVkT3JkZXJzKCJidXlCb29rIik7bGV0IGJ1eU9yZGVyQm9vaz1hd2FpdCBhcGkuZGIuZmluZCgiYnV5Qm9vayIse3N5bWJvbDpzeW1ib2wscHJpY2VEZWM6eyRndGU6cHJpY2VEZWN9fSwyNSxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITB9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2Rve2NvbnN0IG5iT3JkZXJzPWJ1eU9yZGVyQm9vay5sZW5ndGg7bGV0IGluYz0wO2Zvcig7aW5jPG5iT3JkZXJzJiZhcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkuZ3QoMCk7KXtjb25zdCBidXlPcmRlcj1idXlPcmRlckJvb2tbaW5jXTtpZihhcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkubHRlKGJ1eU9yZGVyLnF1YW50aXR5KSl7bGV0IHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoc2VsbE9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTtpZihhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoYnV5T3JkZXIudG9rZW5zTG9ja2VkKSYmKHF0eVRva2Vuc1RvU2VuZD1idXlPcmRlci50b2tlbnNMb2NrZWQpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmd0KDApJiZhcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkuZ3QoMCksInRoZSBvcmRlciBjYW5ub3QgYmUgZmlsbGVkIikpe2xldCByZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGJ1eU9yZGVyLmFjY291bnQsc3ltYm9sLHNlbGxPcmRlci5xdWFudGl0eSwidXNlciIpO3Jlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKGBUWElEOiAke3NlbGxPcmRlci50eElkfWApLGFwaS5kZWJ1ZyhidXlPcmRlci5hY2NvdW50KSxhcGkuZGVidWcoc3ltYm9sKSxhcGkuZGVidWcoc2VsbE9yZGVyLnF1YW50aXR5KSkscmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhY2NvdW50LCJTV0FQLkhJVkUiLHF0eVRva2Vuc1RvU2VuZCwidXNlciIpLHJlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKGBUWElEOiAke3NlbGxPcmRlci50eElkfWApLGFwaS5kZWJ1ZyhhY2NvdW50KSxhcGkuZGVidWcoIlNXQVAuSElWRSIpLGFwaS5kZWJ1ZyhxdHlUb2tlbnNUb1NlbmQpKTtjb25zdCBxdHlMZWZ0QnV5T3JkZXI9YXBpLkJpZ051bWJlcihidXlPcmRlci5xdWFudGl0eSkubWludXMoc2VsbE9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKHRva2VuUHJlY2lzaW9uKSxidXlPcmRlcnRva2Vuc0xvY2tlZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCkubWludXMocXR5VG9rZW5zVG9TZW5kKS50b0ZpeGVkKDgpLG5iVG9rZW5zVG9GaWxsT3JkZXI9YXBpLkJpZ051bWJlcihidXlPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHF0eUxlZnRCdXlPcmRlcikudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7YXBpLkJpZ051bWJlcihxdHlMZWZ0QnV5T3JkZXIpLmd0KDApJiZhcGkuQmlnTnVtYmVyKG5iVG9rZW5zVG9GaWxsT3JkZXIpLmd0ZSgiMC4wMDAwMDAwMSIpPyhidXlPcmRlci5xdWFudGl0eT1xdHlMZWZ0QnV5T3JkZXIsYnV5T3JkZXIudG9rZW5zTG9ja2VkPWJ1eU9yZGVydG9rZW5zTG9ja2VkLGF3YWl0IGFwaS5kYi51cGRhdGUoImJ1eUJvb2siLGJ1eU9yZGVyKSk6KGFwaS5CaWdOdW1iZXIoYnV5T3JkZXJ0b2tlbnNMb2NrZWQpLmd0KDApJiZhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYnV5T3JkZXIuYWNjb3VudCwiU1dBUC5ISVZFIixidXlPcmRlcnRva2Vuc0xvY2tlZCwidXNlciIpLGFwaS5lbWl0KCJvcmRlckNsb3NlZCIse2FjY291bnQ6YnV5T3JkZXIuYWNjb3VudCx0eXBlOiJidXkiLHR4SWQ6YnV5T3JkZXIudHhJZH0pLGF3YWl0IGFwaS5kYi5yZW1vdmUoImJ1eUJvb2siLGJ1eU9yZGVyKSxudW1EZWxldGVkKyspLGF3YWl0IHVwZGF0ZVRyYWRlc0hpc3RvcnkoInNlbGwiLGJ1eU9yZGVyLmFjY291bnQsYWNjb3VudCxzeW1ib2wsc2VsbE9yZGVyLnF1YW50aXR5LGJ1eU9yZGVyLnByaWNlLHF0eVRva2Vuc1RvU2VuZCxidXlPcmRlci50eElkLHNlbGxPcmRlci50eElkKSx2b2x1bWVUcmFkZWQ9YXBpLkJpZ051bWJlcih2b2x1bWVUcmFkZWQpLnBsdXMocXR5VG9rZW5zVG9TZW5kKSxzZWxsT3JkZXIucXVhbnRpdHk9MCxhd2FpdCBhcGkuZGIucmVtb3ZlKCJzZWxsQm9vayIsc2VsbE9yZGVyKSxhcGkuZW1pdCgib3JkZXJDbG9zZWQiLHthY2NvdW50OnNlbGxPcmRlci5hY2NvdW50LHR5cGU6InNlbGwiLHR4SWQ6c2VsbE9yZGVyLnR4SWR9KX19ZWxzZXtsZXQgcXR5VG9rZW5zVG9TZW5kPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShidXlPcmRlci5xdWFudGl0eSkudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7aWYoYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmd0KGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCkmJihxdHlUb2tlbnNUb1NlbmQ9YnV5T3JkZXIudG9rZW5zTG9ja2VkKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndCgwKSYmYXBpLkJpZ051bWJlcihzZWxsT3JkZXIucXVhbnRpdHkpLmd0KDApLCJ0aGUgb3JkZXIgY2Fubm90IGJlIGZpbGxlZCIpKXtsZXQgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhidXlPcmRlci5hY2NvdW50LHN5bWJvbCxidXlPcmRlci5xdWFudGl0eSwidXNlciIpO3Jlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKGBUWElEOiAke3NlbGxPcmRlci50eElkfWApLGFwaS5kZWJ1ZyhidXlPcmRlci5hY2NvdW50KSxhcGkuZGVidWcoc3ltYm9sKSxhcGkuZGVidWcoYnV5T3JkZXIucXVhbnRpdHkpKSxyZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFjY291bnQsIlNXQVAuSElWRSIscXR5VG9rZW5zVG9TZW5kLCJ1c2VyIikscmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoYFRYSUQ6ICR7c2VsbE9yZGVyLnR4SWR9YCksYXBpLmRlYnVnKGFjY291bnQpLGFwaS5kZWJ1ZygiU1dBUC5ISVZFIiksYXBpLmRlYnVnKHF0eVRva2Vuc1RvU2VuZCkpO2NvbnN0IGJ1eU9yZGVydG9rZW5zTG9ja2VkPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIudG9rZW5zTG9ja2VkKS5taW51cyhxdHlUb2tlbnNUb1NlbmQpLnRvRml4ZWQoOCk7YXBpLkJpZ051bWJlcihidXlPcmRlcnRva2Vuc0xvY2tlZCkuZ3QoMCkmJmF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhidXlPcmRlci5hY2NvdW50LCJTV0FQLkhJVkUiLGJ1eU9yZGVydG9rZW5zTG9ja2VkLCJ1c2VyIiksYXdhaXQgYXBpLmRiLnJlbW92ZSgiYnV5Qm9vayIsYnV5T3JkZXIpLG51bURlbGV0ZWQrKyxhcGkuZW1pdCgib3JkZXJDbG9zZWQiLHthY2NvdW50OmJ1eU9yZGVyLmFjY291bnQsdHlwZToiYnV5Iix0eElkOmJ1eU9yZGVyLnR4SWR9KSxzZWxsT3JkZXIucXVhbnRpdHk9YXBpLkJpZ051bWJlcihzZWxsT3JkZXIucXVhbnRpdHkpLm1pbnVzKGJ1eU9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKHRva2VuUHJlY2lzaW9uKTtjb25zdCBuYlRva2Vuc1RvRmlsbE9yZGVyPWFwaS5CaWdOdW1iZXIoc2VsbE9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoc2VsbE9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTthcGkuQmlnTnVtYmVyKG5iVG9rZW5zVG9GaWxsT3JkZXIpLmx0KCIwLjAwMDAwMDAxIikmJihhcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkuZ3QoMCkmJmF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhY2NvdW50LHN5bWJvbCxzZWxsT3JkZXIucXVhbnRpdHksInVzZXIiKSxzZWxsT3JkZXIucXVhbnRpdHk9IjAiLGF3YWl0IGFwaS5kYi5yZW1vdmUoInNlbGxCb29rIixzZWxsT3JkZXIpLGFwaS5lbWl0KCJvcmRlckNsb3NlZCIse2FjY291bnQ6c2VsbE9yZGVyLmFjY291bnQsdHlwZToic2VsbCIsdHhJZDpzZWxsT3JkZXIudHhJZH0pKSxhd2FpdCB1cGRhdGVUcmFkZXNIaXN0b3J5KCJzZWxsIixidXlPcmRlci5hY2NvdW50LGFjY291bnQsc3ltYm9sLGJ1eU9yZGVyLnF1YW50aXR5LGJ1eU9yZGVyLnByaWNlLHF0eVRva2Vuc1RvU2VuZCxidXlPcmRlci50eElkLHNlbGxPcmRlci50eElkKSx2b2x1bWVUcmFkZWQ9YXBpLkJpZ051bWJlcih2b2x1bWVUcmFkZWQpLnBsdXMocXR5VG9rZW5zVG9TZW5kKX19aW5jKz0xfW9mZnNldCs9MjUtbnVtRGVsZXRlZCxhcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkuZ3QoMCkmJihidXlPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoImJ1eUJvb2siLHtzeW1ib2w6c3ltYm9sLHByaWNlRGVjOnskZ3RlOnByaWNlRGVjfX0sMjUsb2Zmc2V0LFt7aW5kZXg6InByaWNlRGVjIixkZXNjZW5kaW5nOiEwfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxudW1EZWxldGVkPTApfXdoaWxlKGJ1eU9yZGVyQm9vay5sZW5ndGg+MCYmYXBpLkJpZ051bWJlcihzZWxsT3JkZXIucXVhbnRpdHkpLmd0KDApKTthcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkuZ3QoMCkmJmF3YWl0IGFwaS5kYi51cGRhdGUoInNlbGxCb29rIixzZWxsT3JkZXIpLGFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5ndCgwKSYmYXdhaXQgdXBkYXRlVm9sdW1lTWV0cmljKHN5bWJvbCx2b2x1bWVUcmFkZWQpLGF3YWl0IHVwZGF0ZUFza01ldHJpYyhzeW1ib2wpLGF3YWl0IHVwZGF0ZUJpZE1ldHJpYyhzeW1ib2wpfTthY3Rpb25zLmJ1eT1hc3luYyBwYXlsb2FkPT57Y29uc3R7YWNjb3VudDphY2NvdW50LHR4SWQ6dHhJZCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHByaWNlOnByaWNlLGV4cGlyYXRpb246ZXhwaXJhdGlvbixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLGZpbmFsQWNjb3VudD12b2lkIDA9PT1hY2NvdW50fHwibnVsbCIhPT1hcGkuc2VuZGVyP2FwaS5zZW5kZXI6YWNjb3VudCxmaW5hbFR4SWQ9dm9pZCAwPT09dHhJZHx8Im51bGwiIT09YXBpLnNlbmRlcj9hcGkudHJhbnNhY3Rpb25JZDp0eElkO2lmKDEhPT1BQ0NPVU5UX0JMQUNLTElTVFtmaW5hbEFjY291bnRdJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5fHwibnVsbCI9PT1hcGkuc2VuZGVyLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChwcmljZSYmInN0cmluZyI9PXR5cGVvZiBwcmljZSYmIWFwaS5CaWdOdW1iZXIocHJpY2UpLmlzTmFOKCkmJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJiJTV0FQLkhJVkUiIT09c3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCkmJmZpbmFsVHhJZCYmInN0cmluZyI9PXR5cGVvZiBmaW5hbFR4SWQmJmZpbmFsVHhJZC5sZW5ndGg+MCYmKHZvaWQgMD09PWV4cGlyYXRpb258fGV4cGlyYXRpb24mJk51bWJlci5pc0ludGVnZXIoZXhwaXJhdGlvbikmJmV4cGlyYXRpb24+MCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG9wZW5PcmRlcnM9YXdhaXQgY291bnRPcGVuT3JkZXJzKGZpbmFsQWNjb3VudCk7aWYoYXBpLmFzc2VydChvcGVuT3JkZXJzPDIwMCwidG9vIG1hbnkgb3BlbiBvcmRlcnMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydCh0b2tlbiYmYXBpLkJpZ051bWJlcihwcmljZSkuZ3QoMCkmJmNvdW50RGVjaW1hbHMocHJpY2UpPD04JiZjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBuYlRva2Vuc1RvTG9ja1Jhdz1hcGkuQmlnTnVtYmVyKHByaWNlKS5tdWx0aXBsaWVkQnkocXVhbnRpdHkpO2lmKGFwaS5hc3NlcnQobmJUb2tlbnNUb0xvY2tSYXcuZ3RlKCIwLjAwMDAwMDAxIiksIm9yZGVyIGNhbm5vdCBiZSBwbGFjZWQgYXMgaXQgY2Fubm90IGJlIGZpbGxlZCIpKXtjb25zdCBuYlRva2Vuc1RvTG9jaz1uYlRva2Vuc1RvTG9ja1Jhdy50b0ZpeGVkKDgsYXBpLkJpZ051bWJlci5ST1VORF9VUCkscmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXJUb0NvbnRyYWN0Iix7ZnJvbTpmaW5hbEFjY291bnQsc3ltYm9sOiJTV0FQLkhJVkUiLHF1YW50aXR5Om5iVG9rZW5zVG9Mb2NrLHRvOiJtYXJrZXQifSk7aWYoaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGZpbmFsQWNjb3VudCwibWFya2V0IiwiU1dBUC5ISVZFIixuYlRva2Vuc1RvTG9jaywidHJhbnNmZXJUb0NvbnRyYWN0Iikpe2NvbnN0IHRpbWVzdGFtcFNlYz1hcGkuQmlnTnVtYmVyKG5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKS5nZXRUaW1lKCkpLmRpdmlkZWRCeSgxZTMpLnRvTnVtYmVyKCksb3JkZXI9e307b3JkZXIudHhJZD1maW5hbFR4SWQsb3JkZXIudGltZXN0YW1wPXRpbWVzdGFtcFNlYyxvcmRlci5hY2NvdW50PWZpbmFsQWNjb3VudCxvcmRlci5zeW1ib2w9c3ltYm9sLG9yZGVyLnF1YW50aXR5PWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKSxvcmRlci5wcmljZT1hcGkuQmlnTnVtYmVyKHByaWNlKS50b0ZpeGVkKDgpLG9yZGVyLnByaWNlRGVjPXskbnVtYmVyRGVjaW1hbDpvcmRlci5wcmljZX0sb3JkZXIudG9rZW5zTG9ja2VkPW5iVG9rZW5zVG9Mb2NrLG9yZGVyLmV4cGlyYXRpb249dm9pZCAwPT09ZXhwaXJhdGlvbnx8ZXhwaXJhdGlvbj4yNTkyZTM/dGltZXN0YW1wU2VjKzI1OTJlMzp0aW1lc3RhbXBTZWMrZXhwaXJhdGlvbjtjb25zdCBvcmRlckluRGI9YXdhaXQgYXBpLmRiLmluc2VydCgiYnV5Qm9vayIsb3JkZXIpO2F3YWl0IGZpbmRNYXRjaGluZ1NlbGxPcmRlcnMob3JkZXJJbkRiLHRva2VuLnByZWNpc2lvbil9fX19fX0sYWN0aW9ucy5zZWxsPWFzeW5jIHBheWxvYWQ9Pntjb25zdHthY2NvdW50OmFjY291bnQsdHhJZDp0eElkLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHkscHJpY2U6cHJpY2UsZXhwaXJhdGlvbjpleHBpcmF0aW9uLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQsZmluYWxBY2NvdW50PXZvaWQgMD09PWFjY291bnR8fCJudWxsIiE9PWFwaS5zZW5kZXI/YXBpLnNlbmRlcjphY2NvdW50LGZpbmFsVHhJZD12b2lkIDA9PT10eElkfHwibnVsbCIhPT1hcGkuc2VuZGVyP2FwaS50cmFuc2FjdGlvbklkOnR4SWQ7aWYoMSE9PUFDQ09VTlRfQkxBQ0tMSVNUW2ZpbmFsQWNjb3VudF0mJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXl8fCJudWxsIj09PWFwaS5zZW5kZXIsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHByaWNlJiYic3RyaW5nIj09dHlwZW9mIHByaWNlJiYhYXBpLkJpZ051bWJlcihwcmljZSkuaXNOYU4oKSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNXQVAuSElWRSIhPT1zeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSYmZmluYWxUeElkJiYic3RyaW5nIj09dHlwZW9mIGZpbmFsVHhJZCYmZmluYWxUeElkLmxlbmd0aD4wJiYodm9pZCAwPT09ZXhwaXJhdGlvbnx8ZXhwaXJhdGlvbiYmTnVtYmVyLmlzSW50ZWdlcihleHBpcmF0aW9uKSYmZXhwaXJhdGlvbj4wKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3Qgb3Blbk9yZGVycz1hd2FpdCBjb3VudE9wZW5PcmRlcnMoZmluYWxBY2NvdW50KTtpZihhcGkuYXNzZXJ0KG9wZW5PcmRlcnM8MjAwLCJ0b28gbWFueSBvcGVuIG9yZGVycyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KHRva2VuJiZhcGkuQmlnTnVtYmVyKHByaWNlKS5ndCgwKSYmY291bnREZWNpbWFscyhwcmljZSk8PTgmJmNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5iVG9rZW5zVG9GaWxsT3JkZXJSYXc9YXBpLkJpZ051bWJlcihwcmljZSkubXVsdGlwbGllZEJ5KHF1YW50aXR5KTtpZihhcGkuYXNzZXJ0KG5iVG9rZW5zVG9GaWxsT3JkZXJSYXcuZ3RlKCIwLjAwMDAwMDAxIiksIm9yZGVyIGNhbm5vdCBiZSBwbGFjZWQgYXMgaXQgY2Fubm90IGJlIGZpbGxlZCIpKXtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtmcm9tOmZpbmFsQWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHRvOiJtYXJrZXQifSk7aWYoaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGZpbmFsQWNjb3VudCwibWFya2V0IixzeW1ib2wscXVhbnRpdHksInRyYW5zZmVyVG9Db250cmFjdCIpKXtjb25zdCB0aW1lc3RhbXBTZWM9YXBpLkJpZ051bWJlcihuZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCkuZ2V0VGltZSgpKS5kaXZpZGVkQnkoMWUzKS50b051bWJlcigpLG9yZGVyPXt9O29yZGVyLnR4SWQ9ZmluYWxUeElkLG9yZGVyLnRpbWVzdGFtcD10aW1lc3RhbXBTZWMsb3JkZXIuYWNjb3VudD1maW5hbEFjY291bnQsb3JkZXIuc3ltYm9sPXN5bWJvbCxvcmRlci5xdWFudGl0eT1hcGkuQmlnTnVtYmVyKHF1YW50aXR5KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksb3JkZXIucHJpY2U9YXBpLkJpZ051bWJlcihwcmljZSkudG9GaXhlZCg4KSxvcmRlci5wcmljZURlYz17JG51bWJlckRlY2ltYWw6b3JkZXIucHJpY2V9LG9yZGVyLmV4cGlyYXRpb249dm9pZCAwPT09ZXhwaXJhdGlvbnx8ZXhwaXJhdGlvbj4yNTkyZTM/dGltZXN0YW1wU2VjKzI1OTJlMzp0aW1lc3RhbXBTZWMrZXhwaXJhdGlvbjtjb25zdCBvcmRlckluRGI9YXdhaXQgYXBpLmRiLmluc2VydCgic2VsbEJvb2siLG9yZGVyKTthd2FpdCBmaW5kTWF0Y2hpbmdCdXlPcmRlcnMob3JkZXJJbkRiLHRva2VuLnByZWNpc2lvbil9fX19fX0sYWN0aW9ucy5tYXJrZXRCdXk9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQsZmluYWxBY2NvdW50PXZvaWQgMD09PWFjY291bnR8fCJudWxsIiE9PWFwaS5zZW5kZXI/YXBpLnNlbmRlcjphY2NvdW50O2xldCBudW1EZWxldGVkPTA7aWYoMSE9PUFDQ09VTlRfQkxBQ0tMSVNUW2ZpbmFsQWNjb3VudF0mJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXl8fCJudWxsIj09PWFwaS5zZW5kZXIsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiYiU1dBUC5ISVZFIiE9PXN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydCh0b2tlbiYmY291bnREZWNpbWFscyhxdWFudGl0eSk8PTgsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHJlc3VsdD1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyVG9Db250cmFjdCIse2Zyb206ZmluYWxBY2NvdW50LHN5bWJvbDoiU1dBUC5ISVZFIixxdWFudGl0eTpxdWFudGl0eSx0bzoibWFya2V0In0pO2lmKGlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlc3VsdCxmaW5hbEFjY291bnQsIm1hcmtldCIsIlNXQVAuSElWRSIscXVhbnRpdHksInRyYW5zZmVyVG9Db250cmFjdCIpKXtsZXQgaGl2ZVJlbWFpbmluZz1xdWFudGl0eSxvZmZzZXQ9MCx2b2x1bWVUcmFkZWQ9MDthd2FpdCByZW1vdmVFeHBpcmVkT3JkZXJzKCJzZWxsQm9vayIpO2xldCBzZWxsT3JkZXJCb29rPWF3YWl0IGFwaS5kYi5maW5kKCJzZWxsQm9vayIse3N5bWJvbDpzeW1ib2x9LDI1LG9mZnNldCxbe2luZGV4OiJwcmljZURlYyIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7ZG97Y29uc3QgbmJPcmRlcnM9c2VsbE9yZGVyQm9vay5sZW5ndGg7bGV0IGluYz0wO2Zvcig7aW5jPG5iT3JkZXJzJiZhcGkuQmlnTnVtYmVyKGhpdmVSZW1haW5pbmcpLmd0KDApOyl7Y29uc3Qgc2VsbE9yZGVyPXNlbGxPcmRlckJvb2tbaW5jXSxxdHlUb2tlbnNUb1NlbmQ9YXBpLkJpZ051bWJlcihoaXZlUmVtYWluaW5nKS5kaXZpZGVkQnkoc2VsbE9yZGVyLnByaWNlKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pO2lmKGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5sdGUoc2VsbE9yZGVyLnF1YW50aXR5KSYmYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmd0KDApKXtpZihhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndCgwKSYmYXBpLkJpZ051bWJlcihoaXZlUmVtYWluaW5nKS5ndCgwKSwidGhlIG9yZGVyIGNhbm5vdCBiZSBmaWxsZWQiKSl7bGV0IHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoZmluYWxBY2NvdW50LHN5bWJvbCxxdHlUb2tlbnNUb1NlbmQsInVzZXIiKTtyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZyhgVFhJRDogJHthcGkudHJhbnNhY3Rpb25JZH1gKSxhcGkuZGVidWcoZmluYWxBY2NvdW50KSxhcGkuZGVidWcoc3ltYm9sKSxhcGkuZGVidWcocXR5VG9rZW5zVG9TZW5kKSkscmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhzZWxsT3JkZXIuYWNjb3VudCwiU1dBUC5ISVZFIixoaXZlUmVtYWluaW5nLCJ1c2VyIikscmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoYFRYSUQ6ICR7YXBpLnRyYW5zYWN0aW9uSWR9YCksYXBpLmRlYnVnKHNlbGxPcmRlci5hY2NvdW50KSxhcGkuZGVidWcoIlNXQVAuSElWRSIpLGFwaS5kZWJ1ZyhoaXZlUmVtYWluaW5nKSk7Y29uc3QgcXR5TGVmdFNlbGxPcmRlcj1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkubWludXMocXR5VG9rZW5zVG9TZW5kKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksbmJUb2tlbnNUb0ZpbGxPcmRlcj1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHF0eUxlZnRTZWxsT3JkZXIpLnRvRml4ZWQoOCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pO2FwaS5CaWdOdW1iZXIocXR5TGVmdFNlbGxPcmRlcikuZ3QoMCkmJmFwaS5CaWdOdW1iZXIobmJUb2tlbnNUb0ZpbGxPcmRlcikuZ3RlKCIwLjAwMDAwMDAxIik/KHNlbGxPcmRlci5xdWFudGl0eT1xdHlMZWZ0U2VsbE9yZGVyLGF3YWl0IGFwaS5kYi51cGRhdGUoInNlbGxCb29rIixzZWxsT3JkZXIpKTooYXBpLkJpZ051bWJlcihxdHlMZWZ0U2VsbE9yZGVyKS5ndCgwKSYmYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKHNlbGxPcmRlci5hY2NvdW50LHN5bWJvbCxxdHlMZWZ0U2VsbE9yZGVyLCJ1c2VyIiksYXdhaXQgYXBpLmRiLnJlbW92ZSgic2VsbEJvb2siLHNlbGxPcmRlciksbnVtRGVsZXRlZCsrKSxhd2FpdCB1cGRhdGVUcmFkZXNIaXN0b3J5KCJidXkiLGZpbmFsQWNjb3VudCxzZWxsT3JkZXIuYWNjb3VudCxzeW1ib2wscXR5VG9rZW5zVG9TZW5kLHNlbGxPcmRlci5wcmljZSxoaXZlUmVtYWluaW5nLGFwaS50cmFuc2FjdGlvbklkLHNlbGxPcmRlci50eElkKSx2b2x1bWVUcmFkZWQ9YXBpLkJpZ051bWJlcih2b2x1bWVUcmFkZWQpLnBsdXMoaGl2ZVJlbWFpbmluZyksaGl2ZVJlbWFpbmluZz0iMCJ9fWVsc2UgaWYoYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmd0KDApKXtsZXQgcXR5SGl2ZVRvU2VuZD1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHNlbGxPcmRlci5xdWFudGl0eSkudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfVVApO2lmKGFwaS5CaWdOdW1iZXIocXR5SGl2ZVRvU2VuZCkuZ3QoaGl2ZVJlbWFpbmluZykmJihxdHlIaXZlVG9TZW5kPWhpdmVSZW1haW5pbmcpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdHlIaXZlVG9TZW5kKS5ndCgwKSYmYXBpLkJpZ051bWJlcihoaXZlUmVtYWluaW5nKS5ndCgwKSwidGhlIG9yZGVyIGNhbm5vdCBiZSBmaWxsZWQiKSl7bGV0IHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoZmluYWxBY2NvdW50LHN5bWJvbCxzZWxsT3JkZXIucXVhbnRpdHksInVzZXIiKTtyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZyhgVFhJRDogJHthcGkudHJhbnNhY3Rpb25JZH1gKSxhcGkuZGVidWcoZmluYWxBY2NvdW50KSxhcGkuZGVidWcoc3ltYm9sKSxhcGkuZGVidWcoc2VsbE9yZGVyLnF1YW50aXR5KSkscmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhzZWxsT3JkZXIuYWNjb3VudCwiU1dBUC5ISVZFIixxdHlIaXZlVG9TZW5kLCJ1c2VyIikscmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoYFRYSUQ6ICR7YXBpLnRyYW5zYWN0aW9uSWR9YCksYXBpLmRlYnVnKHNlbGxPcmRlci5hY2NvdW50KSxhcGkuZGVidWcoIlNXQVAuSElWRSIpLGFwaS5kZWJ1ZyhxdHlIaXZlVG9TZW5kKSksYXdhaXQgYXBpLmRiLnJlbW92ZSgic2VsbEJvb2siLHNlbGxPcmRlciksbnVtRGVsZXRlZCsrLGhpdmVSZW1haW5pbmc9YXBpLkJpZ051bWJlcihoaXZlUmVtYWluaW5nKS5taW51cyhxdHlIaXZlVG9TZW5kKS50b0ZpeGVkKDgpLGF3YWl0IHVwZGF0ZVRyYWRlc0hpc3RvcnkoImJ1eSIsZmluYWxBY2NvdW50LHNlbGxPcmRlci5hY2NvdW50LHN5bWJvbCxzZWxsT3JkZXIucXVhbnRpdHksc2VsbE9yZGVyLnByaWNlLHF0eUhpdmVUb1NlbmQsYXBpLnRyYW5zYWN0aW9uSWQsc2VsbE9yZGVyLnR4SWQpLHZvbHVtZVRyYWRlZD1hcGkuQmlnTnVtYmVyKHZvbHVtZVRyYWRlZCkucGx1cyhxdHlIaXZlVG9TZW5kKX19aW5jKz0xfW9mZnNldCs9MjUtbnVtRGVsZXRlZCxhcGkuQmlnTnVtYmVyKGhpdmVSZW1haW5pbmcpLmd0KDApJiYoc2VsbE9yZGVyQm9vaz1hd2FpdCBhcGkuZGIuZmluZCgic2VsbEJvb2siLHtzeW1ib2w6c3ltYm9sfSwyNSxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pLG51bURlbGV0ZWQ9MCl9d2hpbGUoc2VsbE9yZGVyQm9vay5sZW5ndGg+MCYmYXBpLkJpZ051bWJlcihoaXZlUmVtYWluaW5nKS5ndCgwKSk7YXBpLkJpZ051bWJlcihoaXZlUmVtYWluaW5nKS5ndCgwKSYmYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGZpbmFsQWNjb3VudCwiU1dBUC5ISVZFIixoaXZlUmVtYWluaW5nLCJ1c2VyIiksYXBpLkJpZ051bWJlcih2b2x1bWVUcmFkZWQpLmd0KDApJiZhd2FpdCB1cGRhdGVWb2x1bWVNZXRyaWMoc3ltYm9sLHZvbHVtZVRyYWRlZCksYXdhaXQgdXBkYXRlQXNrTWV0cmljKHN5bWJvbCksYXdhaXQgdXBkYXRlQmlkTWV0cmljKHN5bWJvbCl9fX19LGFjdGlvbnMubWFya2V0U2VsbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxmaW5hbEFjY291bnQ9dm9pZCAwPT09YWNjb3VudHx8Im51bGwiIT09YXBpLnNlbmRlcj9hcGkuc2VuZGVyOmFjY291bnQ7bGV0IG51bURlbGV0ZWQ9MDtpZigxIT09QUNDT1VOVF9CTEFDS0xJU1RbZmluYWxBY2NvdW50XSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleXx8Im51bGwiPT09YXBpLnNlbmRlciwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJiJTV0FQLkhJVkUiIT09c3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KHRva2VuJiZjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCByZXN1bHQ9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtmcm9tOmZpbmFsQWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHRvOiJtYXJrZXQifSk7aWYoaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzdWx0LGZpbmFsQWNjb3VudCwibWFya2V0IixzeW1ib2wscXVhbnRpdHksInRyYW5zZmVyVG9Db250cmFjdCIpKXtsZXQgdG9rZW5zUmVtYWluaW5nPXF1YW50aXR5LG9mZnNldD0wLHZvbHVtZVRyYWRlZD0wO2F3YWl0IHJlbW92ZUV4cGlyZWRPcmRlcnMoImJ1eUJvb2siKTtsZXQgYnV5T3JkZXJCb29rPWF3YWl0IGFwaS5kYi5maW5kKCJidXlCb29rIix7c3ltYm9sOnN5bWJvbH0sMjUsb2Zmc2V0LFt7aW5kZXg6InByaWNlRGVjIixkZXNjZW5kaW5nOiEwfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtkb3tjb25zdCBuYk9yZGVycz1idXlPcmRlckJvb2subGVuZ3RoO2xldCBpbmM9MDtmb3IoO2luYzxuYk9yZGVycyYmYXBpLkJpZ051bWJlcih0b2tlbnNSZW1haW5pbmcpLmd0KDApOyl7Y29uc3QgYnV5T3JkZXI9YnV5T3JkZXJCb29rW2luY107aWYoYXBpLkJpZ051bWJlcih0b2tlbnNSZW1haW5pbmcpLmx0ZShidXlPcmRlci5xdWFudGl0eSkpe2xldCBxdHlUb2tlbnNUb1NlbmQ9YXBpLkJpZ051bWJlcihidXlPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHRva2Vuc1JlbWFpbmluZykudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7aWYoYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmd0KGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCkmJihxdHlUb2tlbnNUb1NlbmQ9YnV5T3JkZXIudG9rZW5zTG9ja2VkKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndCgwKSYmYXBpLkJpZ051bWJlcih0b2tlbnNSZW1haW5pbmcpLmd0KDApLCJ0aGUgb3JkZXIgY2Fubm90IGJlIGZpbGxlZCIpKXtsZXQgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhidXlPcmRlci5hY2NvdW50LHN5bWJvbCx0b2tlbnNSZW1haW5pbmcsInVzZXIiKTtyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZyhgVFhJRDogJHthcGkudHJhbnNhY3Rpb25JZH1gKSxhcGkuZGVidWcoYnV5T3JkZXIuYWNjb3VudCksYXBpLmRlYnVnKHN5bWJvbCksYXBpLmRlYnVnKHRva2Vuc1JlbWFpbmluZykpLHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoZmluYWxBY2NvdW50LCJTV0FQLkhJVkUiLHF0eVRva2Vuc1RvU2VuZCwidXNlciIpLHJlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKGBUWElEOiAke2FwaS50cmFuc2FjdGlvbklkfWApLGFwaS5kZWJ1ZyhmaW5hbEFjY291bnQpLGFwaS5kZWJ1ZygiU1dBUC5ISVZFIiksYXBpLmRlYnVnKHF0eVRva2Vuc1RvU2VuZCkpO2NvbnN0IHF0eUxlZnRCdXlPcmRlcj1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5taW51cyh0b2tlbnNSZW1haW5pbmcpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKSxidXlPcmRlcnRva2Vuc0xvY2tlZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCkubWludXMocXR5VG9rZW5zVG9TZW5kKS50b0ZpeGVkKDgpLG5iVG9rZW5zVG9GaWxsT3JkZXI9YXBpLkJpZ051bWJlcihidXlPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHF0eUxlZnRCdXlPcmRlcikudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7YXBpLkJpZ051bWJlcihxdHlMZWZ0QnV5T3JkZXIpLmd0KDApJiZhcGkuQmlnTnVtYmVyKG5iVG9rZW5zVG9GaWxsT3JkZXIpLmd0ZSgiMC4wMDAwMDAwMSIpPyhidXlPcmRlci5xdWFudGl0eT1xdHlMZWZ0QnV5T3JkZXIsYnV5T3JkZXIudG9rZW5zTG9ja2VkPWJ1eU9yZGVydG9rZW5zTG9ja2VkLGF3YWl0IGFwaS5kYi51cGRhdGUoImJ1eUJvb2siLGJ1eU9yZGVyKSk6KGFwaS5CaWdOdW1iZXIoYnV5T3JkZXJ0b2tlbnNMb2NrZWQpLmd0KDApJiZhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYnV5T3JkZXIuYWNjb3VudCwiU1dBUC5ISVZFIixidXlPcmRlcnRva2Vuc0xvY2tlZCwidXNlciIpLGF3YWl0IGFwaS5kYi5yZW1vdmUoImJ1eUJvb2siLGJ1eU9yZGVyKSxudW1EZWxldGVkKyspLGF3YWl0IHVwZGF0ZVRyYWRlc0hpc3RvcnkoInNlbGwiLGJ1eU9yZGVyLmFjY291bnQsZmluYWxBY2NvdW50LHN5bWJvbCx0b2tlbnNSZW1haW5pbmcsYnV5T3JkZXIucHJpY2UscXR5VG9rZW5zVG9TZW5kLGJ1eU9yZGVyLnR4SWQsYXBpLnRyYW5zYWN0aW9uSWQpLHZvbHVtZVRyYWRlZD1hcGkuQmlnTnVtYmVyKHZvbHVtZVRyYWRlZCkucGx1cyhxdHlUb2tlbnNUb1NlbmQpLHRva2Vuc1JlbWFpbmluZz0wfX1lbHNle2xldCBxdHlUb2tlbnNUb1NlbmQ9YXBpLkJpZ051bWJlcihidXlPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KGJ1eU9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTtpZihhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoYnV5T3JkZXIudG9rZW5zTG9ja2VkKSYmKHF0eVRva2Vuc1RvU2VuZD1idXlPcmRlci50b2tlbnNMb2NrZWQpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmd0KDApJiZhcGkuQmlnTnVtYmVyKHRva2Vuc1JlbWFpbmluZykuZ3QoMCksInRoZSBvcmRlciBjYW5ub3QgYmUgZmlsbGVkIikpe2xldCByZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGJ1eU9yZGVyLmFjY291bnQsc3ltYm9sLGJ1eU9yZGVyLnF1YW50aXR5LCJ1c2VyIik7cmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoYFRYSUQ6ICR7YXBpLnRyYW5zYWN0aW9uSWR9YCksYXBpLmRlYnVnKGJ1eU9yZGVyLmFjY291bnQpLGFwaS5kZWJ1ZyhzeW1ib2wpLGFwaS5kZWJ1ZyhidXlPcmRlci5xdWFudGl0eSkpLHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoZmluYWxBY2NvdW50LCJTV0FQLkhJVkUiLHF0eVRva2Vuc1RvU2VuZCwidXNlciIpLHJlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKGBUWElEOiAke2FwaS50cmFuc2FjdGlvbklkfWApLGFwaS5kZWJ1ZyhmaW5hbEFjY291bnQpLGFwaS5kZWJ1ZygiU1dBUC5ISVZFIiksYXBpLmRlYnVnKHF0eVRva2Vuc1RvU2VuZCkpO2NvbnN0IGJ1eU9yZGVydG9rZW5zTG9ja2VkPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIudG9rZW5zTG9ja2VkKS5taW51cyhxdHlUb2tlbnNUb1NlbmQpLnRvRml4ZWQoOCk7YXBpLkJpZ051bWJlcihidXlPcmRlcnRva2Vuc0xvY2tlZCkuZ3QoMCkmJmF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhidXlPcmRlci5hY2NvdW50LCJTV0FQLkhJVkUiLGJ1eU9yZGVydG9rZW5zTG9ja2VkLCJ1c2VyIiksYXdhaXQgYXBpLmRiLnJlbW92ZSgiYnV5Qm9vayIsYnV5T3JkZXIpLG51bURlbGV0ZWQrKyx0b2tlbnNSZW1haW5pbmc9YXBpLkJpZ051bWJlcih0b2tlbnNSZW1haW5pbmcpLm1pbnVzKGJ1eU9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksYXdhaXQgdXBkYXRlVHJhZGVzSGlzdG9yeSgic2VsbCIsYnV5T3JkZXIuYWNjb3VudCxmaW5hbEFjY291bnQsc3ltYm9sLGJ1eU9yZGVyLnF1YW50aXR5LGJ1eU9yZGVyLnByaWNlLHF0eVRva2Vuc1RvU2VuZCxidXlPcmRlci50eElkLGFwaS50cmFuc2FjdGlvbklkKSx2b2x1bWVUcmFkZWQ9YXBpLkJpZ051bWJlcih2b2x1bWVUcmFkZWQpLnBsdXMocXR5VG9rZW5zVG9TZW5kKX19aW5jKz0xfW9mZnNldCs9MjUtbnVtRGVsZXRlZCxhcGkuQmlnTnVtYmVyKHRva2Vuc1JlbWFpbmluZykuZ3QoMCkmJihidXlPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoImJ1eUJvb2siLHtzeW1ib2w6c3ltYm9sfSwyNSxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITB9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pLG51bURlbGV0ZWQ9MCl9d2hpbGUoYnV5T3JkZXJCb29rLmxlbmd0aD4wJiZhcGkuQmlnTnVtYmVyKHRva2Vuc1JlbWFpbmluZykuZ3QoMCkpO2FwaS5CaWdOdW1iZXIodG9rZW5zUmVtYWluaW5nKS5ndCgwKSYmYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGZpbmFsQWNjb3VudCxzeW1ib2wsdG9rZW5zUmVtYWluaW5nLCJ1c2VyIiksYXBpLkJpZ051bWJlcih2b2x1bWVUcmFkZWQpLmd0KDApJiZhd2FpdCB1cGRhdGVWb2x1bWVNZXRyaWMoc3ltYm9sLHZvbHVtZVRyYWRlZCksYXdhaXQgdXBkYXRlQXNrTWV0cmljKHN5bWJvbCksYXdhaXQgdXBkYXRlQmlkTWV0cmljKHN5bWJvbCl9fX19LGFjdGlvbnMudGljaz1hc3luYygpPT57fTs="}}}

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"marketpools","params":"","code":"Y29uc3QgVHJhZGVUeXBlPVsiZXhhY3RJbnB1dCIsImV4YWN0T3V0cHV0Il07ZnVuY3Rpb24gZ2V0UXVvdGUoYW1vdW50LGxpcXVpZGl0eUluLGxpcXVpZGl0eU91dCl7cmV0dXJuISghYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGFtb3VudCkuZ3QoMCksImluc3VmZmljaWVudCBhbW91bnQiKXx8IWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihsaXF1aWRpdHlJbikuZ3QoMCkmJmFwaS5CaWdOdW1iZXIobGlxdWlkaXR5T3V0KS5ndCgwKSwiaW5zdWZmaWNpZW50IGxpcXVpZGl0eSIpKSYmYXBpLkJpZ051bWJlcihhbW91bnQpLnRpbWVzKGxpcXVpZGl0eU91dCkuZGl2aWRlZEJ5KGxpcXVpZGl0eUluKX1mdW5jdGlvbiBnZXRBbW91bnRJbihwYXJhbXMsYW1vdW50T3V0LGxpcXVpZGl0eUluLGxpcXVpZGl0eU91dCl7aWYoIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihhbW91bnRPdXQpLmd0KDApLCJpbnN1ZmZpY2llbnQgb3V0cHV0IGFtb3VudCIpfHwhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGxpcXVpZGl0eUluKS5ndCgwKSYmYXBpLkJpZ051bWJlcihsaXF1aWRpdHlPdXQpLmd0KDApJiZhcGkuQmlnTnVtYmVyKGFtb3VudE91dCkubHQobGlxdWlkaXR5T3V0KSwiaW5zdWZmaWNpZW50IGxpcXVpZGl0eSIpKXJldHVybiExO2NvbnN0IG51bT1hcGkuQmlnTnVtYmVyKGxpcXVpZGl0eUluKS50aW1lcyhhbW91bnRPdXQpLGRlbj1hcGkuQmlnTnVtYmVyKGxpcXVpZGl0eU91dCkubWludXMoYW1vdW50T3V0KS50aW1lcyhwYXJhbXMudHJhZGVGZWVNdWwpO3JldHVybiBudW0uZGl2aWRlZEJ5KGRlbil9ZnVuY3Rpb24gZ2V0QW1vdW50T3V0KHBhcmFtcyxhbW91bnRJbixsaXF1aWRpdHlJbixsaXF1aWRpdHlPdXQpe2lmKCFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYW1vdW50SW4pLmd0KDApLCJpbnN1ZmZpY2llbnQgb3V0cHV0IGFtb3VudCIpfHwhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGxpcXVpZGl0eUluKS5ndCgwKSYmYXBpLkJpZ051bWJlcihsaXF1aWRpdHlPdXQpLmd0KDApLCJpbnN1ZmZpY2llbnQgbGlxdWlkaXR5IikpcmV0dXJuITE7Y29uc3QgYW1vdW50SW5XaXRoRmVlPWFwaS5CaWdOdW1iZXIoYW1vdW50SW4pLnRpbWVzKHBhcmFtcy50cmFkZUZlZU11bCksbnVtPWFwaS5CaWdOdW1iZXIoYW1vdW50SW5XaXRoRmVlKS50aW1lcyhsaXF1aWRpdHlPdXQpLGRlbj1hcGkuQmlnTnVtYmVyKGxpcXVpZGl0eUluKS5wbHVzKGFtb3VudEluV2l0aEZlZSksYW1vdW50T3V0PW51bS5kaXZpZGVkQnkoZGVuKTtyZXR1cm4hIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihhbW91bnRPdXQpLmx0KGxpcXVpZGl0eU91dCksImluc3VmZmljaWVudCBsaXF1aWRpdHkiKSYmYW1vdW50T3V0fWFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlT3JhY2xlKHBvb2wsbmV3UHJpY2UsbWF4RGV2aWF0aW9uPWFwaS5CaWdOdW1iZXIoIjAuMDEiKSl7Y29uc3RbYmFzZVN5bWJvbCxxdW90ZVN5bWJvbF09cG9vbC50b2tlblBhaXIuc3BsaXQoIjoiKSxiYXNlTWV0cmljcz0iU1dBUC5ISVZFIiE9PWJhc2VTeW1ib2w/YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJtYXJrZXQiLCJtZXRyaWNzIix7c3ltYm9sOmJhc2VTeW1ib2x9KTp7bGFzdFByaWNlOjF9LHF1b3RlTWV0cmljcz0iU1dBUC5ISVZFIiE9PXF1b3RlU3ltYm9sP2F3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibWFya2V0IiwibWV0cmljcyIse3N5bWJvbDpxdW90ZVN5bWJvbH0pOntsYXN0UHJpY2U6MX07aWYoIWJhc2VNZXRyaWNzfHwhcXVvdGVNZXRyaWNzKXJldHVybiBudWxsO2NvbnN0IG9yYWNsZT1hcGkuQmlnTnVtYmVyKGJhc2VNZXRyaWNzLmxhc3RQcmljZSkuZGl2aWRlZEJ5KHF1b3RlTWV0cmljcy5sYXN0UHJpY2UpLGRldj1hcGkuQmlnTnVtYmVyKG5ld1ByaWNlKS5taW51cyhvcmFjbGUpLmFicygpLmRpdmlkZWRCeShvcmFjbGUpO3JldHVybiEhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGRldikubHRlKG1heERldmlhdGlvbiksImV4Y2VlZGVkIG1heCBkZXZpYXRpb24gZnJvbSBvcmRlciBib29rIil9YXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVUb2tlblBhaXIodG9rZW5QYWlyKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHRva2VuUGFpciYmLTEhPT10b2tlblBhaXIuaW5kZXhPZigiOiIpLCJpbnZhbGlkIHRva2VuUGFpciBmb3JtYXQiKSlyZXR1cm4hMTtjb25zdFtiYXNlU3ltYm9sLHF1b3RlU3ltYm9sXT10b2tlblBhaXIuc3BsaXQoIjoiKTtyZXR1cm4hIShhcGkuYXNzZXJ0KGJhc2VTeW1ib2whPT1xdW90ZVN5bWJvbCwidG9rZW5QYWlyIGNhbm5vdCBiZSB0aGUgc2FtZSB0b2tlbiIpJiZhcGkuYXNzZXJ0KGF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmJhc2VTeW1ib2x9KSwiYmFzZVN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnF1b3RlU3ltYm9sfSksInF1b3RlU3ltYm9sIGRvZXMgbm90IGV4aXN0IikpfWFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlUG9vbCh0b2tlblBhaXIpe2NvbnN0W2Jhc2VTeW1ib2wscXVvdGVTeW1ib2xdPXRva2VuUGFpci5zcGxpdCgiOiIpLHBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvb2xzIix7dG9rZW5QYWlyOnRva2VuUGFpcn0pLHJldlBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvb2xzIix7dG9rZW5QYWlyOltxdW90ZVN5bWJvbCxiYXNlU3ltYm9sXS5qb2luKCI6Iil9KTtyZXR1cm4hIWFwaS5hc3NlcnQobnVsbD09PXBvb2wmJm51bGw9PT1yZXZQb29sLCJhIHBvb2wgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgdG9rZW5QYWlyIil9YXN5bmMgZnVuY3Rpb24gdXBkYXRlUG9vbFN0YXRzKHBvb2wsYmFzZUFkanVzdGVkLHF1b3RlQWRqdXN0ZWQsc2hhcmVzQWRqdXN0ZWQsc3dhcCl7Y29uc3QgdVBvb2w9cG9vbDt1UG9vbC5iYXNlUXVhbnRpdHk9YXBpLkJpZ051bWJlcihwb29sLmJhc2VRdWFudGl0eSkucGx1cyhiYXNlQWRqdXN0ZWQpLnRvRml4ZWQocG9vbC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKSx1UG9vbC5xdW90ZVF1YW50aXR5PWFwaS5CaWdOdW1iZXIocG9vbC5xdW90ZVF1YW50aXR5KS5wbHVzKHF1b3RlQWRqdXN0ZWQpLnRvRml4ZWQocG9vbC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKSxhcGkuQmlnTnVtYmVyKHVQb29sLmJhc2VRdWFudGl0eSkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIodVBvb2wucXVvdGVRdWFudGl0eSkuZ3QoMCkmJih1UG9vbC5iYXNlUHJpY2U9YXBpLkJpZ051bWJlcih1UG9vbC5xdW90ZVF1YW50aXR5KS5kaXZpZGVkQnkodVBvb2wuYmFzZVF1YW50aXR5KS50b0ZpeGVkKHBvb2wucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksdVBvb2wucXVvdGVQcmljZT1hcGkuQmlnTnVtYmVyKHVQb29sLmJhc2VRdWFudGl0eSkuZGl2aWRlZEJ5KHVQb29sLnF1b3RlUXVhbnRpdHkpLnRvRml4ZWQocG9vbC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSksc2hhcmVzQWRqdXN0ZWQmJih1UG9vbC50b3RhbFNoYXJlcz1hcGkuQmlnTnVtYmVyKHBvb2wudG90YWxTaGFyZXMpLnBsdXMoc2hhcmVzQWRqdXN0ZWQpKSxzd2FwJiYodVBvb2wuYmFzZVZvbHVtZT1hcGkuQmlnTnVtYmVyKHVQb29sLmJhc2VWb2x1bWUpLnBsdXMoTWF0aC5hYnMoYmFzZUFkanVzdGVkKSkudG9GaXhlZChwb29sLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHVQb29sLnF1b3RlVm9sdW1lPWFwaS5CaWdOdW1iZXIodVBvb2wucXVvdGVWb2x1bWUpLnBsdXMoTWF0aC5hYnMocXVvdGVBZGp1c3RlZCkpLnRvRml4ZWQocG9vbC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9vbHMiLHVQb29sKX1hY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoInBvb2xzIikpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicG9vbHMiLFsidG9rZW5QYWlyIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgibGlxdWlkaXR5UG9zaXRpb25zIixbImFjY291bnQiLCJ0b2tlblBhaXIiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKTtjb25zdCBwYXJhbXM9e3Bvb2xDcmVhdGlvbkZlZToiMTAwMCJ9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX1lbHNle2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYocGFyYW1zLnVwZGF0ZUluZGV4KTE9PT1wYXJhbXMudXBkYXRlSW5kZXgmJihwYXJhbXMudHJhZGVGZWVNdWw9IjAuOTk3NSIscGFyYW1zLnVwZGF0ZUluZGV4PTIsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpKTtlbHNle2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCk7bGV0IGxwVXBkYXRlPWF3YWl0IGFwaS5kYi5maW5kKCJsaXF1aWRpdHlQb3NpdGlvbnMiLHt0aW1lRmFjdG9yOnskZXhpc3RzOiExfX0pO2Zvcig7bHBVcGRhdGUubGVuZ3RoPjA7KXtmb3IobGV0IGk9MDtpPGxwVXBkYXRlLmxlbmd0aDtpKz0xKXtjb25zdCBscD1scFVwZGF0ZVtpXTtscC50aW1lRmFjdG9yPWJsb2NrRGF0ZS5nZXRUaW1lKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibGlxdWlkaXR5UG9zaXRpb25zIixscCl9bHBVcGRhdGU9YXdhaXQgYXBpLmRiLmZpbmQoImxpcXVpZGl0eVBvc2l0aW9ucyIse3RpbWVGYWN0b3I6eyRleGlzdHM6ITF9fSl9cGFyYW1zLnVwZGF0ZUluZGV4PTEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfX19LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtwb29sQ3JlYXRpb25GZWU6cG9vbENyZWF0aW9uRmVlfT1wYXlsb2FkO2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYocG9vbENyZWF0aW9uRmVlKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHBvb2xDcmVhdGlvbkZlZSYmIWFwaS5CaWdOdW1iZXIocG9vbENyZWF0aW9uRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHBvb2xDcmVhdGlvbkZlZSkuZ3RlKDApLCJpbnZhbGlkIHBvb2xDcmVhdGlvbkZlZSIpKXJldHVybjtwYXJhbXMucG9vbENyZWF0aW9uRmVlPXBvb2xDcmVhdGlvbkZlZX1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9LGFjdGlvbnMuY3JlYXRlUG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG9rZW5QYWlyOnRva2VuUGFpcixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse3Bvb2xDcmVhdGlvbkZlZTpwb29sQ3JlYXRpb25GZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZENyZWF0aW9uPSEoIWFwaS5CaWdOdW1iZXIocG9vbENyZWF0aW9uRmVlKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHBvb2xDcmVhdGlvbkZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkQ3JlYXRpb24sInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgY3JlYXRpb24gZmVlIikmJmF3YWl0IHZhbGlkYXRlVG9rZW5QYWlyKHRva2VuUGFpcikmJmF3YWl0IHZhbGlkYXRlUG9vbCh0b2tlblBhaXIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSB0cmFuc2FjdGlvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSl7Y29uc3RbYmFzZVN5bWJvbCxxdW90ZVN5bWJvbF09dG9rZW5QYWlyLnNwbGl0KCI6IiksYmFzZVRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmJhc2VTeW1ib2x9KSxxdW90ZVRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnF1b3RlU3ltYm9sfSksbmV3UG9vbD17dG9rZW5QYWlyOnRva2VuUGFpcixiYXNlUXVhbnRpdHk6MCxiYXNlVm9sdW1lOjAsYmFzZVByaWNlOjAscXVvdGVRdWFudGl0eTowLHF1b3RlVm9sdW1lOjAscXVvdGVQcmljZTowLHRvdGFsU2hhcmVzOjAscHJlY2lzaW9uOk1hdGgubWF4KGJhc2VUb2tlbi5wcmVjaXNpb24scXVvdGVUb2tlbi5wcmVjaXNpb24pLGNyZWF0b3I6YXBpLnNlbmRlcn07YXdhaXQgYXBpLmRiLmluc2VydCgicG9vbHMiLG5ld1Bvb2wpLGFwaS5zZW5kZXIhPT1hcGkub3duZXImJmFwaS5CaWdOdW1iZXIocG9vbENyZWF0aW9uRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6cG9vbENyZWF0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhcGkuZW1pdCgiY3JlYXRlUG9vbCIse3Rva2VuUGFpcjp0b2tlblBhaXJ9KX19LGFjdGlvbnMuY3JlYXRlUmV3YXJkUG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG9rZW5QYWlyOnRva2VuUGFpcixsb3R0ZXJ5V2lubmVyczpsb3R0ZXJ5V2lubmVycyxsb3R0ZXJ5SW50ZXJ2YWxIb3Vyczpsb3R0ZXJ5SW50ZXJ2YWxIb3Vycyxsb3R0ZXJ5QW1vdW50OmxvdHRlcnlBbW91bnQsbWluZWRUb2tlbjptaW5lZFRva2VuLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibWluaW5nIiwicGFyYW1zIix7fSkse3Bvb2xDcmVhdGlvbkZlZTpwb29sQ3JlYXRpb25GZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZENyZWF0aW9uPSEoIWFwaS5CaWdOdW1iZXIocG9vbENyZWF0aW9uRmVlKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHBvb2xDcmVhdGlvbkZlZSkscG9vbFBvc2l0aW9ucz1hd2FpdCBhcGkuZGIuZmluZCgibGlxdWlkaXR5UG9zaXRpb25zIix7dG9rZW5QYWlyOnRva2VuUGFpcn0pO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZSIpJiZhd2FpdCB2YWxpZGF0ZVRva2VuUGFpcih0b2tlblBhaXIpJiZhcGkuYXNzZXJ0KHBvb2xQb3NpdGlvbnMmJnBvb2xQb3NpdGlvbnMubGVuZ3RoPjAsInBvb2wgbXVzdCBoYXZlIGxpcXVpZGl0eSBwb3NpdGlvbnMiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5Iikpe2NvbnN0IHJld2FyZFBvb2xJZD1gJHttaW5lZFRva2VufTpFWFQtJHt0b2tlblBhaXIucmVwbGFjZSgiOiIsIiIpfWAscmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiY3JlYXRlUG9vbCIse2xvdHRlcnlXaW5uZXJzOmxvdHRlcnlXaW5uZXJzLGxvdHRlcnlJbnRlcnZhbEhvdXJzOmxvdHRlcnlJbnRlcnZhbEhvdXJzLGxvdHRlcnlBbW91bnQ6bG90dGVyeUFtb3VudCxtaW5lZFRva2VuOm1pbmVkVG9rZW4sZXh0ZXJuYWxNaW5lcnM6dG9rZW5QYWlyfSk7dm9pZCAwPT09cmVzLmVycm9ycyYmcmVzLmV2ZW50cyYmdm9pZCAwIT09cmVzLmV2ZW50cy5maW5kKChlbD0+Im1pbmluZyI9PT1lbC5jb250cmFjdCYmImNyZWF0ZVBvb2wiPT09ZWwuZXZlbnQpKSYmKGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwic2V0QWN0aXZlIix7aWQ6cmV3YXJkUG9vbElkLGFjdGl2ZTohMH0pLGFwaS5lbWl0KCJjcmVhdGVSZXdhcmRQb29sIix7dG9rZW5QYWlyOnRva2VuUGFpcixyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkfSkpfX0sYWN0aW9ucy51cGRhdGVSZXdhcmRQb29sPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0b2tlblBhaXI6dG9rZW5QYWlyLGxvdHRlcnlXaW5uZXJzOmxvdHRlcnlXaW5uZXJzLGxvdHRlcnlJbnRlcnZhbEhvdXJzOmxvdHRlcnlJbnRlcnZhbEhvdXJzLGxvdHRlcnlBbW91bnQ6bG90dGVyeUFtb3VudCxtaW5lZFRva2VuOm1pbmVkVG9rZW4saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJtaW5pbmciLCJwYXJhbXMiLHt9KSx7cG9vbFVwZGF0ZUZlZTpwb29sVXBkYXRlRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGF1dGhvcml6ZWRVcGRhdGU9ISghYXBpLkJpZ051bWJlcihwb29sVXBkYXRlRmVlKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHBvb2xVcGRhdGVGZWUpLHBvb2xQb3NpdGlvbnM9YXdhaXQgYXBpLmRiLmZpbmQoImxpcXVpZGl0eVBvc2l0aW9ucyIse3Rva2VuUGFpcjp0b2tlblBhaXJ9KTtpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWRVcGRhdGUsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgdXBkYXRlIGZlZSIpJiZhd2FpdCB2YWxpZGF0ZVRva2VuUGFpcih0b2tlblBhaXIpJiZhcGkuYXNzZXJ0KHBvb2xQb3NpdGlvbnMmJnBvb2xQb3NpdGlvbnMubGVuZ3RoPjAsInBvb2wgbXVzdCBoYXZlIGxpcXVpZGl0eSBwb3NpdGlvbnMiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5Iikpe2NvbnN0IHJld2FyZFBvb2xJZD1gJHttaW5lZFRva2VufTpFWFQtJHt0b2tlblBhaXIucmVwbGFjZSgiOiIsIiIpfWAscmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwidXBkYXRlUG9vbCIse2lkOnJld2FyZFBvb2xJZCxsb3R0ZXJ5V2lubmVyczpsb3R0ZXJ5V2lubmVycyxsb3R0ZXJ5SW50ZXJ2YWxIb3Vyczpsb3R0ZXJ5SW50ZXJ2YWxIb3Vycyxsb3R0ZXJ5QW1vdW50OmxvdHRlcnlBbW91bnR9KTt2b2lkIDA9PT1yZXMuZXJyb3JzJiZyZXMuZXZlbnRzJiZ2b2lkIDAhPT1yZXMuZXZlbnRzLmZpbmQoKGVsPT4ibWluaW5nIj09PWVsLmNvbnRyYWN0JiYidXBkYXRlUG9vbCI9PT1lbC5ldmVudCkpJiZhcGkuZW1pdCgidXBkYXRlUmV3YXJkUG9vbCIse3Rva2VuUGFpcjp0b2tlblBhaXIscmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZH0pfX0sYWN0aW9ucy5zZXRSZXdhcmRQb29sQWN0aXZlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0b2tlblBhaXI6dG9rZW5QYWlyLG1pbmVkVG9rZW46bWluZWRUb2tlbixhY3RpdmU6YWN0aXZlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpfHwhYXdhaXQgdmFsaWRhdGVUb2tlblBhaXIodG9rZW5QYWlyKSlyZXR1cm47Y29uc3QgcmV3YXJkUG9vbElkPWAke21pbmVkVG9rZW59OkVYVC0ke3Rva2VuUGFpci5yZXBsYWNlKCI6IiwiIil9YDt2b2lkIDA9PT0oYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJzZXRBY3RpdmUiLHtpZDpyZXdhcmRQb29sSWQsYWN0aXZlOmFjdGl2ZX0pKS5lcnJvcnMmJmFwaS5lbWl0KCJzZXRSZXdhcmRQb29sQWN0aXZlIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY3RpdmU6YWN0aXZlfSl9LGFjdGlvbnMuYWRkTGlxdWlkaXR5PWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0b2tlblBhaXI6dG9rZW5QYWlyLGJhc2VRdWFudGl0eTpiYXNlUXVhbnRpdHkscXVvdGVRdWFudGl0eTpxdW90ZVF1YW50aXR5LG1heFByaWNlSW1wYWN0Om1heFByaWNlSW1wYWN0LG1heERldmlhdGlvbjptYXhEZXZpYXRpb24saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIHRyYW5zYWN0aW9uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgYmFzZVF1YW50aXR5JiZhcGkuQmlnTnVtYmVyKGJhc2VRdWFudGl0eSkuZ3QoMCksImludmFsaWQgYmFzZVF1YW50aXR5IikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBxdW90ZVF1YW50aXR5JiZhcGkuQmlnTnVtYmVyKHF1b3RlUXVhbnRpdHkpLmd0KDApLCJpbnZhbGlkIHF1b3RlUXVhbnRpdHkiKSYmYXdhaXQgdmFsaWRhdGVUb2tlblBhaXIodG9rZW5QYWlyKSkpcmV0dXJuO2xldCBhZGRQcmljZUltcGFjdD1hcGkuQmlnTnVtYmVyKCIwLjAxIik7aWYobWF4UHJpY2VJbXBhY3Qpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgbWF4UHJpY2VJbXBhY3QmJmFwaS5CaWdOdW1iZXIobWF4UHJpY2VJbXBhY3QpLmd0KDApJiZhcGkuQmlnTnVtYmVyKG1heFByaWNlSW1wYWN0KS5kcCgpPD0zLCJtYXhQcmljZUltcGFjdCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIikpcmV0dXJuO2FkZFByaWNlSW1wYWN0PWFwaS5CaWdOdW1iZXIobWF4UHJpY2VJbXBhY3QpLmRpdmlkZWRCeSgxMDApfWxldCBhZGREZXZpYXRpb249YXBpLkJpZ051bWJlcigiMC4wMSIpO2lmKG1heERldmlhdGlvbil7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBtYXhEZXZpYXRpb24mJmFwaS5CaWdOdW1iZXIobWF4RGV2aWF0aW9uKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihtYXhEZXZpYXRpb24pLmd0ZSgwKSwibWF4RGV2aWF0aW9uIG11c3QgYmUgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCIpKXJldHVybjthZGREZXZpYXRpb249YXBpLkJpZ051bWJlcihtYXhEZXZpYXRpb24pLmRpdmlkZWRCeSgxMDApfWNvbnN0W2Jhc2VTeW1ib2wscXVvdGVTeW1ib2xdPXRva2VuUGFpci5zcGxpdCgiOiIpLGJhc2VUb2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpiYXNlU3ltYm9sfSkscXVvdGVUb2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpxdW90ZVN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFzZVF1YW50aXR5KS5kcCgpPD1iYXNlVG9rZW4ucHJlY2lzaW9uLCJiYXNlUXVhbnRpdHkgcHJlY2lzaW9uIG1pc21hdGNoIil8fCFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVvdGVRdWFudGl0eSkuZHAoKTw9cXVvdGVUb2tlbi5wcmVjaXNpb24sInF1b3RlUXVhbnRpdHkgcHJlY2lzaW9uIG1pc21hdGNoIikpcmV0dXJuO2NvbnN0IHBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvb2xzIix7dG9rZW5QYWlyOnRva2VuUGFpcn0pO2lmKGFwaS5hc3NlcnQocG9vbCwibm8gZXhpc3RpbmcgcG9vbCBmb3IgdG9rZW5QYWlyIikpe2lmKGFwaS5CaWdOdW1iZXIocG9vbC5iYXNlUXVhbnRpdHkpLmVxKDApJiZhcGkuQmlnTnVtYmVyKHBvb2wucXVvdGVRdWFudGl0eSkuZXEoMCkmJmFkZERldmlhdGlvbi5ndCgwKSYmITE9PT1hd2FpdCB2YWxpZGF0ZU9yYWNsZShwb29sLGFwaS5CaWdOdW1iZXIocXVvdGVRdWFudGl0eSkuZGl2aWRlZEJ5KGJhc2VRdWFudGl0eSksYWRkRGV2aWF0aW9uKSlyZXR1cm47bGV0IGFtb3VudEFkanVzdGVkO2NvbnN0IGJhc2VNaW49YXBpLkJpZ051bWJlcihiYXNlUXVhbnRpdHkpLnRpbWVzKGFwaS5CaWdOdW1iZXIoIjEiKS5taW51cyhhZGRQcmljZUltcGFjdCkpLHF1b3RlTWluPWFwaS5CaWdOdW1iZXIocXVvdGVRdWFudGl0eSkudGltZXMoYXBpLkJpZ051bWJlcigiMSIpLm1pbnVzKGFkZFByaWNlSW1wYWN0KSk7aWYoYXBpLkJpZ051bWJlcihwb29sLmJhc2VRdWFudGl0eSkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIocG9vbC5xdW90ZVF1YW50aXR5KS5ndCgwKSl7Y29uc3QgcXVvdGVPcHRpbWFsPWdldFF1b3RlKGJhc2VRdWFudGl0eSxwb29sLmJhc2VRdWFudGl0eSxwb29sLnF1b3RlUXVhbnRpdHkpLnRvRml4ZWQocXVvdGVUb2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKTtpZihhcGkuQmlnTnVtYmVyKHF1b3RlT3B0aW1hbCkubHRlKHF1b3RlUXVhbnRpdHkpKXtpZighYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1b3RlT3B0aW1hbCkuZ3RlKHF1b3RlTWluKSwiZXhjZWVkZWQgbWF4IHByaWNlIGltcGFjdCBmb3IgYWRkaW5nIGxpcXVpZGl0eSIpKXJldHVybjthbW91bnRBZGp1c3RlZD1bYmFzZVF1YW50aXR5LHF1b3RlT3B0aW1hbF19ZWxzZXtjb25zdCBiYXNlT3B0aW1hbD1nZXRRdW90ZShxdW90ZVF1YW50aXR5LHBvb2wucXVvdGVRdWFudGl0eSxwb29sLmJhc2VRdWFudGl0eSkudG9GaXhlZChiYXNlVG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCk7aWYoYXBpLkJpZ051bWJlcihiYXNlT3B0aW1hbCkubHRlKGJhc2VRdWFudGl0eSkpe2lmKCFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFzZU9wdGltYWwpLmd0ZShiYXNlTWluKSwiZXhjZWVkZWQgbWF4IHByaWNlIGltcGFjdCBmb3IgYWRkaW5nIGxpcXVpZGl0eSIpKXJldHVybjthbW91bnRBZGp1c3RlZD1bYmFzZU9wdGltYWwscXVvdGVRdWFudGl0eV19fX1lbHNlIGFtb3VudEFkanVzdGVkPVtiYXNlUXVhbnRpdHkscXVvdGVRdWFudGl0eV07Y29uc3Qgc2VuZGVyQmFzZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpiYXNlU3ltYm9sfSksc2VuZGVyUXVvdGU9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6cXVvdGVTeW1ib2x9KSxzZW5kZXJGdW5kZWQ9c2VuZGVyQmFzZSYmc2VuZGVyUXVvdGUmJmFwaS5CaWdOdW1iZXIoc2VuZGVyQmFzZS5iYWxhbmNlKS5ndGUoYW1vdW50QWRqdXN0ZWRbMF0pJiZhcGkuQmlnTnVtYmVyKHNlbmRlclF1b3RlLmJhbGFuY2UpLmd0ZShhbW91bnRBZGp1c3RlZFsxXSk7aWYoIWFwaS5hc3NlcnQoc2VuZGVyRnVuZGVkLCJpbnN1ZmZpY2llbnQgdG9rZW4gYmFsYW5jZSIpKXJldHVybjtsZXQgbmV3U2hhcmVzO2lmKG5ld1NoYXJlcz1hcGkuQmlnTnVtYmVyKHBvb2wudG90YWxTaGFyZXMpLmVxKDApP2FwaS5CaWdOdW1iZXIoYW1vdW50QWRqdXN0ZWRbMF0pLnRpbWVzKGFtb3VudEFkanVzdGVkWzFdKS5zcXJ0KCk6YXBpLkJpZ051bWJlci5taW4oYXBpLkJpZ051bWJlcihhbW91bnRBZGp1c3RlZFswXSkudGltZXMocG9vbC50b3RhbFNoYXJlcykuZGl2aWRlZEJ5KHBvb2wuYmFzZVF1YW50aXR5KSxhcGkuQmlnTnVtYmVyKGFtb3VudEFkanVzdGVkWzFdKS50aW1lcyhwb29sLnRvdGFsU2hhcmVzKS5kaXZpZGVkQnkocG9vbC5xdW90ZVF1YW50aXR5KSksIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihuZXdTaGFyZXMpLmd0KDApLCJpbnN1ZmZpY2llbnQgbGlxdWlkaXR5IGNyZWF0ZWQiKSlyZXR1cm47Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSxscD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibGlxdWlkaXR5UG9zaXRpb25zIix7YWNjb3VudDphcGkuc2VuZGVyLHRva2VuUGFpcjp0b2tlblBhaXJ9KTtpZihscCl7Y29uc3QgZXhpc3RpbmdTaGFyZXM9bHAuc2hhcmVzLGZpbmFsU2hhcmVzPWFwaS5CaWdOdW1iZXIobHAuc2hhcmVzKS5wbHVzKG5ld1NoYXJlcyksdGltZVBhc3NlZD1hcGkuQmlnTnVtYmVyKGJsb2NrRGF0ZS5nZXRUaW1lKCkpLm1pbnVzKGxwLnRpbWVGYWN0b3IpLmFicygpLGRpZmZTaGFyZXM9YXBpLkJpZ051bWJlcihmaW5hbFNoYXJlcykubWludXMoZXhpc3RpbmdTaGFyZXMpLmFicygpLmRpdmlkZWRCeShhcGkuQmlnTnVtYmVyLm1heChmaW5hbFNoYXJlcyxleGlzdGluZ1NoYXJlcykpLHRpbWVPZmZzZXQ9YXBpLkJpZ051bWJlcih0aW1lUGFzc2VkKS50aW1lcyhkaWZmU2hhcmVzKTtscC5zaGFyZXM9ZmluYWxTaGFyZXMsbHAudGltZUZhY3Rvcj1hcGkuQmlnTnVtYmVyLm1pbihhcGkuQmlnTnVtYmVyKGxwLnRpbWVGYWN0b3IpLnBsdXModGltZU9mZnNldCkuZHAoMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVApLGJsb2NrRGF0ZS5nZXRUaW1lKCkpLnRvTnVtYmVyKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibGlxdWlkaXR5UG9zaXRpb25zIixscCl9ZWxzZXtjb25zdCBuZXdscD17YWNjb3VudDphcGkuc2VuZGVyLHRva2VuUGFpcjp0b2tlblBhaXIsc2hhcmVzOm5ld1NoYXJlcyx0aW1lRmFjdG9yOmJsb2NrRGF0ZS5nZXRUaW1lKCl9O2F3YWl0IGFwaS5kYi5pbnNlcnQoImxpcXVpZGl0eVBvc2l0aW9ucyIsbmV3bHApfWNvbnN0IGJhc2VSZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtzeW1ib2w6YmFzZVN5bWJvbCxxdWFudGl0eTphbW91bnRBZGp1c3RlZFswXSx0bzoibWFya2V0cG9vbHMifSkscXVvdGVSZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtzeW1ib2w6cXVvdGVTeW1ib2wscXVhbnRpdHk6YW1vdW50QWRqdXN0ZWRbMV0sdG86Im1hcmtldHBvb2xzIn0pO2lmKCFhcGkuYXNzZXJ0KHZvaWQgMD09PWJhc2VSZXMuZXJyb3JzJiZ2b2lkIDA9PT1xdW90ZVJlcy5lcnJvcnMsImRlcG9zaXQgdHJhbnNmZXIgZXJyb3JzIikpcmV0dXJuO2F3YWl0IHVwZGF0ZVBvb2xTdGF0cyhwb29sLGFtb3VudEFkanVzdGVkWzBdLGFtb3VudEFkanVzdGVkWzFdLG5ld1NoYXJlcywhMSksYXBpLmVtaXQoImFkZExpcXVpZGl0eSIse2Jhc2VTeW1ib2w6YmFzZVN5bWJvbCxxdW90ZVN5bWJvbDpxdW90ZVN5bWJvbH0pfX0sYWN0aW9ucy5yZW1vdmVMaXF1aWRpdHk9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3Rva2VuUGFpcjp0b2tlblBhaXIsc2hhcmVzT3V0OnNoYXJlc091dCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSB0cmFuc2FjdGlvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKXx8IWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBzaGFyZXNPdXQmJmFwaS5CaWdOdW1iZXIoc2hhcmVzT3V0KS5ndCgwKSYmYXBpLkJpZ051bWJlcihzaGFyZXNPdXQpLmx0ZSgxMDApJiZhcGkuQmlnTnVtYmVyKHNoYXJlc091dCkuZHAoKTw9MywiaW52YWxpZCBzaGFyZXNPdXQsIG11c3QgYmUgPiAwIDw9IDEwMCIpfHwhYXdhaXQgdmFsaWRhdGVUb2tlblBhaXIodG9rZW5QYWlyKSlyZXR1cm47Y29uc3RbYmFzZVN5bWJvbCxxdW90ZVN5bWJvbF09dG9rZW5QYWlyLnNwbGl0KCI6IiksYmFzZVRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmJhc2VTeW1ib2x9KSxxdW90ZVRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnF1b3RlU3ltYm9sfSkscG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHt0b2tlblBhaXI6dG9rZW5QYWlyfSk7aWYoYXBpLmFzc2VydChwb29sLCJubyBleGlzdGluZyBwb29sIGZvciB0b2tlblBhaXIiKSl7Y29uc3QgbHA9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImxpcXVpZGl0eVBvc2l0aW9ucyIse2FjY291bnQ6YXBpLnNlbmRlcix0b2tlblBhaXI6dG9rZW5QYWlyfSk7aWYoYXBpLmFzc2VydChscCwibm8gZXhpc3RpbmcgbGlxdWlkaXR5IHBvc2l0aW9uIikpe2NvbnN0IHNoYXJlc0RlbHRhPWFwaS5CaWdOdW1iZXIobHAuc2hhcmVzKS50aW1lcyhzaGFyZXNPdXQpLmRpdmlkZWRCeSgxMDApLGJhc2VPdXQ9YXBpLkJpZ051bWJlcihzaGFyZXNEZWx0YSkudGltZXMocG9vbC5iYXNlUXVhbnRpdHkpLmRpdmlkZWRCeShwb29sLnRvdGFsU2hhcmVzKS50b0ZpeGVkKGJhc2VUb2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxxdW90ZU91dD1hcGkuQmlnTnVtYmVyKHNoYXJlc0RlbHRhKS50aW1lcyhwb29sLnF1b3RlUXVhbnRpdHkpLmRpdmlkZWRCeShwb29sLnRvdGFsU2hhcmVzKS50b0ZpeGVkKHF1b3RlVG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7aWYoIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYXNlT3V0KS5ndCgwKSYmYXBpLkJpZ051bWJlcihxdW90ZU91dCkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIocG9vbC5iYXNlUXVhbnRpdHkpLmd0ZShiYXNlT3V0KSYmYXBpLkJpZ051bWJlcihwb29sLnF1b3RlUXVhbnRpdHkpLmd0ZShxdW90ZU91dCksImluc3VmZmljaWVudCBsaXF1aWRpdHkiKSlyZXR1cm47bHAuc2hhcmVzPWFwaS5CaWdOdW1iZXIobHAuc2hhcmVzKS5taW51cyhzaGFyZXNEZWx0YSksYXBpLkJpZ051bWJlcihscC5zaGFyZXMpLmVxKDApP2F3YWl0IGFwaS5kYi5yZW1vdmUoImxpcXVpZGl0eVBvc2l0aW9ucyIsbHApOmF3YWl0IGFwaS5kYi51cGRhdGUoImxpcXVpZGl0eVBvc2l0aW9ucyIsbHApO2NvbnN0IGJhc2VSZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFwaS5zZW5kZXIsYmFzZVN5bWJvbCxiYXNlT3V0LCJ1c2VyIikscXVvdGVSZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFwaS5zZW5kZXIscXVvdGVTeW1ib2wscXVvdGVPdXQsInVzZXIiKTtpZighYXBpLmFzc2VydCh2b2lkIDA9PT1iYXNlUmVzLmVycm9ycyYmdm9pZCAwPT09cXVvdGVSZXMuZXJyb3JzLCJ3aXRoZHJhd2FsIHRyYW5zZmVyIGVycm9ycyIpKXJldHVybjthd2FpdCB1cGRhdGVQb29sU3RhdHMocG9vbCxhcGkuQmlnTnVtYmVyKGJhc2VPdXQpLm5lZ2F0ZWQoKSxhcGkuQmlnTnVtYmVyKHF1b3RlT3V0KS5uZWdhdGVkKCksYXBpLkJpZ051bWJlcihzaGFyZXNEZWx0YSkubmVnYXRlZCgpLCExKSxhcGkuZW1pdCgicmVtb3ZlTGlxdWlkaXR5Iix7YmFzZVN5bWJvbDpiYXNlU3ltYm9sLHF1b3RlU3ltYm9sOnF1b3RlU3ltYm9sfSl9fX0sYWN0aW9ucy5zd2FwVG9rZW5zPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0b2tlblBhaXI6dG9rZW5QYWlyLHRva2VuU3ltYm9sOnRva2VuU3ltYm9sLHRva2VuQW1vdW50OnRva2VuQW1vdW50LHRyYWRlVHlwZTp0cmFkZVR5cGUsbWluQW1vdW50T3V0Om1pbkFtb3VudE91dCxtYXhBbW91bnRJbjptYXhBbW91bnRJbixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCEoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiB0b2tlblN5bWJvbCwiaW52YWxpZCB0b2tlbiIpJiZhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgdG9rZW5BbW91bnQmJmFwaS5CaWdOdW1iZXIodG9rZW5BbW91bnQpLmd0KDApLCJpbnN1ZmZpY2llbnQgdG9rZW5BbW91bnQiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHRyYWRlVHlwZSYmLTEhPT1UcmFkZVR5cGUuaW5kZXhPZih0cmFkZVR5cGUpLCJpbnZhbGlkIHRyYWRlVHlwZSIpJiZhd2FpdCB2YWxpZGF0ZVRva2VuUGFpcih0b2tlblBhaXIpKSlyZXR1cm47aWYobWluQW1vdW50T3V0JiYhYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIG1pbkFtb3VudE91dCYmYXBpLkJpZ051bWJlcihtaW5BbW91bnRPdXQpLmd0KDApLCJpbnN1ZmZpY2llbnQgbWluQW1vdW50T3V0IikpcmV0dXJuO2lmKG1heEFtb3VudEluJiYhYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIG1heEFtb3VudEluJiZhcGkuQmlnTnVtYmVyKG1heEFtb3VudEluKS5ndCgwKSwiaW5zdWZmaWNpZW50IG1heEFtb3VudEluIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KCEobWluQW1vdW50T3V0JiZtYXhBbW91bnRJbiksInNwZWNpZnkgbWluQW1vdW50T3V0IG9yIG1heEFtb3VudEluIGJ1dCBub3QgYm90aCIpKXJldHVybjtjb25zdFtiYXNlU3ltYm9sLHF1b3RlU3ltYm9sXT10b2tlblBhaXIuc3BsaXQoIjoiKSxwb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse3Rva2VuUGFpcjp0b2tlblBhaXJ9KTtpZighYXBpLmFzc2VydChwb29sLCJubyBleGlzdGluZyBwb29sIGZvciB0b2tlblBhaXIiKSlyZXR1cm47bGV0IGxpcXVpZGl0eUluLGxpcXVpZGl0eU91dCxzeW1ib2xJbixzeW1ib2xPdXQ7KCJleGFjdElucHV0Ij09PXRyYWRlVHlwZT90b2tlblN5bWJvbD09PWJhc2VTeW1ib2w6dG9rZW5TeW1ib2whPT1iYXNlU3ltYm9sKT8obGlxdWlkaXR5SW49cG9vbC5iYXNlUXVhbnRpdHksbGlxdWlkaXR5T3V0PXBvb2wucXVvdGVRdWFudGl0eSxzeW1ib2xJbj1iYXNlU3ltYm9sLHN5bWJvbE91dD1xdW90ZVN5bWJvbCk6KGxpcXVpZGl0eUluPXBvb2wucXVvdGVRdWFudGl0eSxsaXF1aWRpdHlPdXQ9cG9vbC5iYXNlUXVhbnRpdHksc3ltYm9sSW49cXVvdGVTeW1ib2wsc3ltYm9sT3V0PWJhc2VTeW1ib2wpO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSksdG9rZW5Jbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2xJbn0pLHRva2VuT3V0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbE91dH0pLHNlbmRlckJhc2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sSW59KTtsZXQgdG9rZW5QYWlyRGVsdGEsdG9rZW5QYWlyRmVlLHRva2VuUXVhbnRpdHksc2VuZGVyQmFzZUZ1bmRlZD0hMTtpZigiZXhhY3RJbnB1dCI9PT10cmFkZVR5cGUpe2NvbnN0IHRva2VuQW1vdW50QWRqdXN0ZWQ9YXBpLkJpZ051bWJlcihnZXRBbW91bnRPdXQocGFyYW1zLHRva2VuQW1vdW50LGxpcXVpZGl0eUluLGxpcXVpZGl0eU91dCkpO2lmKCF0b2tlbkFtb3VudEFkanVzdGVkLmlzRmluaXRlKCkpcmV0dXJuO2lmKHNlbmRlckJhc2VGdW5kZWQ9c2VuZGVyQmFzZSYmYXBpLkJpZ051bWJlcihzZW5kZXJCYXNlLmJhbGFuY2UpLmd0ZSh0b2tlbkFtb3VudCksdG9rZW5QYWlyRGVsdGE9dG9rZW5TeW1ib2w9PT1iYXNlU3ltYm9sP1t0b2tlbkFtb3VudCxhcGkuQmlnTnVtYmVyKHRva2VuQW1vdW50QWRqdXN0ZWQpLm5lZ2F0ZWQoKV06W2FwaS5CaWdOdW1iZXIodG9rZW5BbW91bnRBZGp1c3RlZCkubmVnYXRlZCgpLHRva2VuQW1vdW50XSx0b2tlblBhaXJGZWU9e3N5bWJvbDpzeW1ib2xPdXQsYW1vdW50OmFwaS5CaWdOdW1iZXIodG9rZW5BbW91bnRBZGp1c3RlZCkuZGl2aWRlZEJ5KHBhcmFtcy50cmFkZUZlZU11bCkubWludXModG9rZW5BbW91bnRBZGp1c3RlZCkudG9GaXhlZCh0b2tlbk91dC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKX0sdG9rZW5RdWFudGl0eT17aW46dG9rZW5BbW91bnQsb3V0OnRva2VuQW1vdW50QWRqdXN0ZWR9LCFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodG9rZW5RdWFudGl0eS5pbikuZHAoKTw9dG9rZW5Jbi5wcmVjaXNpb24sInN5bWJvbEluIHByZWNpc2lvbiBtaXNtYXRjaCIpKXJldHVybn1lbHNlIGlmKCJleGFjdE91dHB1dCI9PT10cmFkZVR5cGUpe2NvbnN0IHRva2VuQW1vdW50QWRqdXN0ZWQ9YXBpLkJpZ051bWJlcihnZXRBbW91bnRJbihwYXJhbXMsdG9rZW5BbW91bnQsbGlxdWlkaXR5SW4sbGlxdWlkaXR5T3V0KSk7aWYoIXRva2VuQW1vdW50QWRqdXN0ZWQuaXNGaW5pdGUoKSlyZXR1cm47aWYoc2VuZGVyQmFzZUZ1bmRlZD1zZW5kZXJCYXNlJiZhcGkuQmlnTnVtYmVyKHNlbmRlckJhc2UuYmFsYW5jZSkuZ3RlKHRva2VuQW1vdW50QWRqdXN0ZWQudG9GaXhlZCh0b2tlbkluLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVApKSx0b2tlblBhaXJEZWx0YT10b2tlblN5bWJvbD09PWJhc2VTeW1ib2w/W2FwaS5CaWdOdW1iZXIodG9rZW5BbW91bnQpLm5lZ2F0ZWQoKSx0b2tlbkFtb3VudEFkanVzdGVkXTpbdG9rZW5BbW91bnRBZGp1c3RlZCxhcGkuQmlnTnVtYmVyKHRva2VuQW1vdW50KS5uZWdhdGVkKCldLHRva2VuUGFpckZlZT17c3ltYm9sOnN5bWJvbEluLGFtb3VudDphcGkuQmlnTnVtYmVyKHRva2VuQW1vdW50QWRqdXN0ZWQpLmRpdmlkZWRCeShwYXJhbXMudHJhZGVGZWVNdWwpLm1pbnVzKHRva2VuQW1vdW50QWRqdXN0ZWQpLnRvRml4ZWQodG9rZW5Jbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKX0sdG9rZW5RdWFudGl0eT17aW46dG9rZW5BbW91bnRBZGp1c3RlZCxvdXQ6dG9rZW5BbW91bnR9LCFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodG9rZW5RdWFudGl0eS5vdXQpLmRwKCk8PXRva2VuT3V0LnByZWNpc2lvbiwic3ltYm9sT3V0IHByZWNpc2lvbiBtaXNtYXRjaCIpKXJldHVybn1pZighYXBpLmFzc2VydChzZW5kZXJCYXNlRnVuZGVkLCJpbnN1ZmZpY2llbnQgaW5wdXQgYmFsYW5jZSIpKXJldHVybjtpZih0b2tlblF1YW50aXR5LmluPWFwaS5CaWdOdW1iZXIodG9rZW5RdWFudGl0eS5pbikuZHAodG9rZW5Jbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9DRUlMKSx0b2tlblF1YW50aXR5Lm91dD1hcGkuQmlnTnVtYmVyKHRva2VuUXVhbnRpdHkub3V0KS5kcCh0b2tlbk91dC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSwhYXBpLmFzc2VydCh0b2tlblF1YW50aXR5LmluLmd0KDApLCJzeW1ib2xJbiBwcmVjaXNpb24gbWlzbWF0Y2giKXx8IWFwaS5hc3NlcnQodG9rZW5RdWFudGl0eS5vdXQuZ3QoMCksInN5bWJvbE91dCBwcmVjaXNpb24gbWlzbWF0Y2giKSlyZXR1cm47aWYobWluQW1vdW50T3V0KXtpZighYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG1pbkFtb3VudE91dCkuZHAoKTw9dG9rZW5PdXQucHJlY2lzaW9uLCJtaW5BbW91bnRPdXQgcHJlY2lzaW9uIG1pc21hdGNoIikpcmV0dXJuO3Rva2VuUXVhbnRpdHkubWluT3V0PWFwaS5CaWdOdW1iZXIobWluQW1vdW50T3V0KX1pZihtYXhBbW91bnRJbil7aWYoIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihtYXhBbW91bnRJbikuZHAoKTw9dG9rZW5Jbi5wcmVjaXNpb24sIm1heEFtb3VudEluIHByZWNpc2lvbiBtaXNtYXRjaCIpKXJldHVybjt0b2tlblF1YW50aXR5Lm1heEluPWFwaS5CaWdOdW1iZXIobWF4QW1vdW50SW4pfWlmKHZvaWQgMCE9PXRva2VuUXVhbnRpdHkubWluT3V0JiYhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHRva2VuUXVhbnRpdHkub3V0KS5ndGUodG9rZW5RdWFudGl0eS5taW5PdXQpLCJleGNlZWRlZCBtYXggc2xpcHBhZ2UgZm9yIHN3YXAiKSlyZXR1cm47aWYodm9pZCAwIT09dG9rZW5RdWFudGl0eS5tYXhJbiYmIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0b2tlblF1YW50aXR5LmluKS5sdGUodG9rZW5RdWFudGl0eS5tYXhJbiksImV4Y2VlZGVkIG1heCBzbGlwcGFnZSBmb3Igc3dhcCIpKXJldHVybjtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtzeW1ib2w6c3ltYm9sSW4scXVhbnRpdHk6dG9rZW5RdWFudGl0eS5pbi50b0ZpeGVkKCksdG86Im1hcmtldHBvb2xzIn0pO3ZvaWQgMD09PXJlcy5lcnJvcnMmJnJlcy5ldmVudHMmJnZvaWQgMCE9PXJlcy5ldmVudHMuZmluZCgoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJiJ0cmFuc2ZlclRvQ29udHJhY3QiPT09ZWwuZXZlbnQmJmVsLmRhdGEuZnJvbT09PWFwaS5zZW5kZXImJiJtYXJrZXRwb29scyI9PT1lbC5kYXRhLnRvJiZhcGkuQmlnTnVtYmVyKGVsLmRhdGEucXVhbnRpdHkpLmVxKHRva2VuUXVhbnRpdHkuaW4pKSkmJihhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYXBpLnNlbmRlcixzeW1ib2xPdXQsdG9rZW5RdWFudGl0eS5vdXQudG9GaXhlZCgpLCJ1c2VyIiksYXdhaXQgdXBkYXRlUG9vbFN0YXRzKHBvb2wsdG9rZW5QYWlyRGVsdGFbMF0sdG9rZW5QYWlyRGVsdGFbMV0sITEsITApLGFwaS5lbWl0KCJzd2FwVG9rZW5zIix7c3ltYm9sSW46c3ltYm9sSW4sc3ltYm9sT3V0OnN5bWJvbE91dCxmZWU6dG9rZW5QYWlyRmVlfSkpfTs="}}}

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"nft","params":"","code":"Y29uc3QgQ09OVFJBQ1RfTkFNRT0ibmZ0IixVVElMSVRZX1RPS0VOX1NZTUJPTD0iQkVFIixNQVhfTlVNX0FVVEhPUklaRURfSVNTVUVSUz0xMCxNQVhfTlVNX0xPQ0tFRF9UT0tFTl9UWVBFUz0xMCxNQVhfU1lNQk9MX0xFTkdUSD0xMCxNQVhfREFUQV9QUk9QRVJUWV9MRU5HVEg9MTAwLE1BWF9OVU1fTkZUU19JU1NVQUJMRT0xMCxNQVhfTlVNX05GVFNfRURJVEFCTEU9NTAsTUFYX05VTV9ORlRTX09QRVJBQkxFPTUwLE1BWF9OVU1fQ09OVEFJTkVSX05GVFNfT1BFUkFCTEU9MSxSRVNFUlZFRF9TWU1CT0xTPXtDRUxMOiJiZWdnYXJzIixRVVNUOiJzaW1wbGVnYW1lIixURVNURVJBOiJhZ2dyb2VkIixTUVJMOiJzdHVmZmJ5c3BlbmNlciIsQ1JBRlQ6ImltbWFudWVsOTQiLENHVUxMOiJjZ3VsbCIsTkZUOiJjYWRhd2ciLFJBUkU6ImJlZ2dhcnMiLExJQzoibGljdG9rZW4iLE1FTUJFUjoibWVtYmVydG9rZW4iLENPRkZFRToiYzBmZjMzYSIsUk9DSzoiYmVnZ2FycyIsTU9OU1RFUlM6InNpbXBsZWdhbWUiLFNFVFM6Imxvb3RraXQuZ2FtZXMiLFBIT1RPRlQ6Ind3d2llYmUiLEJFRVI6ImRldGxldiIsU1BJUjoic3BpbnZlc3QiLElGRzoibGlvbjIwMCIsR1VJTERTOiJzaW1wbGVnYW1lIixGQ0FSRDoibGlvbjIwMCIsUFhMOiJwaXhlbG5mdCIsQ09XOiJzdHVmZmJ5c3BlbmNlciIsTE9PT1Q6InN0dWZmYnlzcGVuY2VyIixTUE9SVFNNT006InNwb3J0c3Rlc3RlciIsU1dUOiJzYXRyZW4ifTthY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoIm5mdHMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJuZnRzIixbInN5bWJvbCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLFsic3ltYm9sIiwiY29tcGxldGVUaW1lc3RhbXAiXSk7Y29uc3QgcGFyYW1zPXtuZnRDcmVhdGlvbkZlZToiMTAwIixuZnRJc3N1YW5jZUZlZTp7IkJFRSI6IjAuMDAxIixQQUw6IjAuMDAxIn0sZGF0YVByb3BlcnR5Q3JlYXRpb25GZWU6IjEwMCIsZW5hYmxlRGVsZWdhdGlvbkZlZToiMTAwMCJ9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX19LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtuZnRDcmVhdGlvbkZlZTpuZnRDcmVhdGlvbkZlZSxuZnRJc3N1YW5jZUZlZTpuZnRJc3N1YW5jZUZlZSxkYXRhUHJvcGVydHlDcmVhdGlvbkZlZTpkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSxlbmFibGVEZWxlZ2F0aW9uRmVlOmVuYWJsZURlbGVnYXRpb25GZWV9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtuZnRDcmVhdGlvbkZlZSYmInN0cmluZyI9PXR5cGVvZiBuZnRDcmVhdGlvbkZlZSYmIWFwaS5CaWdOdW1iZXIobmZ0Q3JlYXRpb25GZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobmZ0Q3JlYXRpb25GZWUpLmd0ZSgwKSYmKHBhcmFtcy5uZnRDcmVhdGlvbkZlZT1uZnRDcmVhdGlvbkZlZSksbmZ0SXNzdWFuY2VGZWUmJiJvYmplY3QiPT10eXBlb2YgbmZ0SXNzdWFuY2VGZWUmJihwYXJhbXMubmZ0SXNzdWFuY2VGZWU9bmZ0SXNzdWFuY2VGZWUpLGRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlJiYic3RyaW5nIj09dHlwZW9mIGRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlJiYhYXBpLkJpZ051bWJlcihkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSkuZ3RlKDApJiYocGFyYW1zLmRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlPWRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlKSxlbmFibGVEZWxlZ2F0aW9uRmVlJiYic3RyaW5nIj09dHlwZW9mIGVuYWJsZURlbGVnYXRpb25GZWUmJiFhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkuZ3RlKDApJiYocGFyYW1zLmVuYWJsZURlbGVnYXRpb25GZWU9ZW5hYmxlRGVsZWdhdGlvbkZlZSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfTtjb25zdCBpc1Rva2VuVHJhbnNmZXJWZXJpZmllZD0ocmVzdWx0LGZyb20sdG8sc3ltYm9sLHF1YW50aXR5LGV2ZW50U3RyKT0+ISh2b2lkIDAhPT1yZXN1bHQuZXJyb3JzfHwhcmVzdWx0LmV2ZW50c3x8dm9pZCAwPT09cmVzdWx0LmV2ZW50cy5maW5kKChlbD0+InRva2VucyI9PT1lbC5jb250cmFjdCYmZWwuZXZlbnQ9PT1ldmVudFN0ciYmZWwuZGF0YS5mcm9tPT09ZnJvbSYmZWwuZGF0YS50bz09PXRvJiZhcGkuQmlnTnVtYmVyKGVsLmRhdGEucXVhbnRpdHkpLmVxKHF1YW50aXR5KSYmZWwuZGF0YS5zeW1ib2w9PT1zeW1ib2wpKSksY2FsY3VsYXRlQmFsYW5jZT0oYmFsYW5jZSxxdWFudGl0eSxwcmVjaXNpb24sYWRkKT0+YWRkP2FwaS5CaWdOdW1iZXIoYmFsYW5jZSkucGx1cyhxdWFudGl0eSkudG9GaXhlZChwcmVjaXNpb24pOmFwaS5CaWdOdW1iZXIoYmFsYW5jZSkubWludXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKSxjb3VudERlY2ltYWxzPXZhbHVlPT5hcGkuQmlnTnVtYmVyKHZhbHVlKS5kcCgpLGNvbnRhaW5zRHVwbGljYXRlcz1hcnI9Pm5ldyBTZXQoYXJyKS5zaXplIT09YXJyLmxlbmd0aCxpc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGg9YWNjb3VudD0+YWNjb3VudC5sZW5ndGg+PTMmJmFjY291bnQubGVuZ3RoPD0xNixpc1ZhbGlkQ29udHJhY3RMZW5ndGg9Y29udHJhY3Q9PmNvbnRyYWN0Lmxlbmd0aD49MyYmY29udHJhY3QubGVuZ3RoPD01MCxpc1ZhbGlkQWNjb3VudHNBcnJheT1hcnI9PntsZXQgdmFsaWRDb250ZW50cz0hMDtyZXR1cm4gYXJyLmZvckVhY2goKGFjY291bnQ9Pnsic3RyaW5nIj09dHlwZW9mIGFjY291bnQmJmlzVmFsaWRIaXZlQWNjb3VudExlbmd0aChhY2NvdW50KXx8KHZhbGlkQ29udGVudHM9ITEpfSkpLHZhbGlkQ29udGVudHN9LGlzVmFsaWRDb250cmFjdHNBcnJheT1hcnI9PntsZXQgdmFsaWRDb250ZW50cz0hMDtyZXR1cm4gYXJyLmZvckVhY2goKGNvbnRyYWN0PT57InN0cmluZyI9PXR5cGVvZiBjb250cmFjdCYmaXNWYWxpZENvbnRyYWN0TGVuZ3RoKGNvbnRyYWN0KXx8KHZhbGlkQ29udGVudHM9ITEpfSkpLHZhbGlkQ29udGVudHN9LGlzVmFsaWREYXRhUHJvcGVydGllcz0oZnJvbSxmcm9tVHlwZSxuZnQscHJvcGVydGllcyk9Pntjb25zdCBwcm9wZXJ0eUNvdW50PU9iamVjdC5rZXlzKHByb3BlcnRpZXMpLmxlbmd0aCxuZnRQcm9wZXJ0eUNvdW50PU9iamVjdC5rZXlzKG5mdC5wcm9wZXJ0aWVzKS5sZW5ndGg7aWYoIWFwaS5hc3NlcnQocHJvcGVydHlDb3VudDw9bmZ0UHJvcGVydHlDb3VudCwiY2Fubm90IHNldCBtb3JlIGRhdGEgcHJvcGVydGllcyB0aGFuIE5GVCBoYXMiKSlyZXR1cm4hMTtmb3IoY29uc3RbbmFtZSxkYXRhXW9mIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpKXtsZXQgdmFsaWRDb250ZW50cz0hMTtpZihhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhuYW1lKSYmbmFtZS5sZW5ndGg+MCYmbmFtZS5sZW5ndGg8PTI1LCJpbnZhbGlkIGRhdGEgcHJvcGVydHkgbmFtZTogbGV0dGVycyAmIG51bWJlcnMgb25seSwgbWF4IGxlbmd0aCBvZiAyNSIpJiZhcGkuYXNzZXJ0KG5hbWUgaW4gbmZ0LnByb3BlcnRpZXMsImRhdGEgcHJvcGVydHkgbXVzdCBleGlzdCIpKXtjb25zdCBwcm9wZXJ0eVNjaGVtYT1uZnQucHJvcGVydGllc1tuYW1lXTthcGkuYXNzZXJ0KG51bGwhPWRhdGEmJih0eXBlb2YgZGF0YT09PXByb3BlcnR5U2NoZW1hLnR5cGV8fCJudW1iZXIiPT09cHJvcGVydHlTY2hlbWEudHlwZSYmInN0cmluZyI9PXR5cGVvZiBkYXRhJiYhYXBpLkJpZ051bWJlcihkYXRhKS5pc05hTigpKSxgZGF0YSBwcm9wZXJ0eSB0eXBlIG1pc21hdGNoOiBleHBlY3RlZCAke3Byb3BlcnR5U2NoZW1hLnR5cGV9IGJ1dCBnb3QgJHt0eXBlb2YgZGF0YX0gZm9yIHByb3BlcnR5ICR7bmFtZX1gKSYmYXBpLmFzc2VydCgic3RyaW5nIiE9dHlwZW9mIGRhdGF8fGRhdGEubGVuZ3RoPD0xMDAsInN0cmluZyBwcm9wZXJ0eSBtYXggbGVuZ3RoIGlzIDEwMCBjaGFyYWN0ZXJzIikmJmFwaS5hc3NlcnQoImNvbnRyYWN0Ij09PWZyb21UeXBlJiZwcm9wZXJ0eVNjaGVtYS5hdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0cy5pbmNsdWRlcyhmcm9tKXx8InVzZXIiPT09ZnJvbVR5cGUmJnByb3BlcnR5U2NoZW1hLmF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHMuaW5jbHVkZXMoZnJvbSksIm5vdCBhbGxvd2VkIHRvIHNldCBkYXRhIHByb3BlcnRpZXMiKSYmKHZhbGlkQ29udGVudHM9ITAsIm51bWJlciI9PT1wcm9wZXJ0eVNjaGVtYS50eXBlJiYic3RyaW5nIj09dHlwZW9mIGRhdGEmJihwcm9wZXJ0aWVzW25hbWVdPWFwaS5CaWdOdW1iZXIoZGF0YSkudG9OdW1iZXIoKSkpfWlmKCF2YWxpZENvbnRlbnRzKXJldHVybiExfXJldHVybiEwfSxpc1ZhbGlkRGF0YVByb3BlcnRpZXNBcnJheT0oZnJvbSxmcm9tVHlwZSxuZnQsYXJyKT0+e3RyeXtmb3IobGV0IGk9MDtpPGFyci5sZW5ndGg7aSs9MSl7bGV0IHZhbGlkQ29udGVudHM9ITE7Y29uc3R7aWQ6aWQscHJvcGVydGllczpwcm9wZXJ0aWVzfT1hcnJbaV07aWYoYXBpLmFzc2VydChpZCYmInN0cmluZyI9PXR5cGVvZiBpZCYmIWFwaS5CaWdOdW1iZXIoaWQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoaWQpLmd0KDApJiZwcm9wZXJ0aWVzJiYib2JqZWN0Ij09dHlwZW9mIHByb3BlcnRpZXMsImludmFsaWQgZGF0YSBwcm9wZXJ0aWVzIikmJmlzVmFsaWREYXRhUHJvcGVydGllcyhmcm9tLGZyb21UeXBlLG5mdCxwcm9wZXJ0aWVzKSYmKHZhbGlkQ29udGVudHM9ITApLCF2YWxpZENvbnRlbnRzKXJldHVybiExfX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH0saXNWYWxpZE5mdElkQXJyYXk9YXJyPT57dHJ5e2xldCBpbnN0YW5jZUNvdW50PTA7Zm9yKGxldCBpPTA7aTxhcnIubGVuZ3RoO2krPTEpe2xldCB2YWxpZENvbnRlbnRzPSExO2NvbnN0e3N5bWJvbDpzeW1ib2wsaWRzOmlkc309YXJyW2ldO2lmKGFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmYXBpLnZhbGlkYXRvci5pc0FscGhhKHN5bWJvbCkmJmFwaS52YWxpZGF0b3IuaXNVcHBlcmNhc2Uoc3ltYm9sKSYmc3ltYm9sLmxlbmd0aD4wJiZzeW1ib2wubGVuZ3RoPD0xMCYmaWRzJiYib2JqZWN0Ij09dHlwZW9mIGlkcyYmQXJyYXkuaXNBcnJheShpZHMpLCJpbnZhbGlkIG5mdCBsaXN0IikmJihpbnN0YW5jZUNvdW50Kz1pZHMubGVuZ3RoLGFwaS5hc3NlcnQoaW5zdGFuY2VDb3VudDw9NTAsImNhbm5vdCBvcGVyYXRlIG9uIG1vcmUgdGhhbiA1MCBORlQgaW5zdGFuY2VzIGF0IG9uY2UiKSkpe2ZvcihsZXQgaj0wO2o8aWRzLmxlbmd0aDtqKz0xKXtjb25zdCBpZD1pZHNbal07aWYoIWFwaS5hc3NlcnQoaWQmJiJzdHJpbmciPT10eXBlb2YgaWQmJiFhcGkuQmlnTnVtYmVyKGlkKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGlkKS5ndCgwKSwiaW52YWxpZCBuZnQgbGlzdCIpKXJldHVybiExfXZhbGlkQ29udGVudHM9ITB9aWYoIXZhbGlkQ29udGVudHMpcmV0dXJuITF9fWNhdGNoKGUpe3JldHVybiExfXJldHVybiEwfSxpc1ZhbGlkVG9rZW5CYXNrZXQ9YXN5bmMoYmFza2V0LGJhbGFuY2VUYWJsZU5hbWUsYWNjb3VudE5hbWUsZmVlU3ltYm9sLGZlZVF1YW50aXR5KT0+e3RyeXtpZihPYmplY3Qua2V5cyhiYXNrZXQpLmxlbmd0aD4xMClyZXR1cm4hMTtmb3IoY29uc3Rbc3ltYm9sLHF1YW50aXR5XW9mIE9iamVjdC5lbnRyaWVzKGJhc2tldCkpe2xldCB2YWxpZENvbnRlbnRzPSExO2lmKCJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZhcGkudmFsaWRhdG9yLmlzQWxwaGEoc3ltYm9sKSYmYXBpLnZhbGlkYXRvci5pc1VwcGVyY2FzZShzeW1ib2wpJiZzeW1ib2wubGVuZ3RoPjAmJnN5bWJvbC5sZW5ndGg8PTEwKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbiYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSYmY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbil7Y29uc3QgZmluYWxRdWFudGl0eT1zeW1ib2w9PT1mZWVTeW1ib2w/Y2FsY3VsYXRlQmFsYW5jZShxdWFudGl0eSxmZWVRdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApOnF1YW50aXR5LGJhc2tldFRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsYmFsYW5jZVRhYmxlTmFtZSx7YWNjb3VudDphY2NvdW50TmFtZSxzeW1ib2w6c3ltYm9sfSk7YmFza2V0VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKGJhc2tldFRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUoZmluYWxRdWFudGl0eSkmJih2YWxpZENvbnRlbnRzPSEwKX19aWYoIXZhbGlkQ29udGVudHMpcmV0dXJuITF9fWNhdGNoKGUpe3JldHVybiExfXJldHVybiEwfSx0cmFuc2ZlckFuZFZlcmlmeU5mdHM9YXN5bmMoZnJvbSxmcm9tVHlwZSx0byx0b1R5cGUsbmZ0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbyk9Pntjb25zdCByZXN1bHRzPXtzdWNjZXNzOltdLGZhaWw6W119LGZpbmFsRnJvbVR5cGU9InVzZXIiPT09ZnJvbVR5cGU/InUiOiJjIixmaW5hbFRvVHlwZT0idXNlciI9PT10b1R5cGU/InUiOiJjIjthd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHtmcm9tVHlwZTpmcm9tVHlwZSx0bzp0byx0b1R5cGU6dG9UeXBlLG5mdHM6bmZ0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb30pO2NvbnN0IGxvZ3M9YXBpLmxvZ3MoKSx0b2tlbk1hcD17fSxjb3VudGVkTWFwPXt9O2lmKGxvZ3MuZXZlbnRzKWZvcihsZXQgaT0wO2k8bG9ncy5ldmVudHMubGVuZ3RoO2krPTEpe2NvbnN0IGV2PWxvZ3MuZXZlbnRzW2ldO2lmKGV2LmNvbnRyYWN0JiZldi5ldmVudCYmZXYuZGF0YSYmIm5mdCI9PT1ldi5jb250cmFjdCYmInRyYW5zZmVyIj09PWV2LmV2ZW50JiZldi5kYXRhLmZyb209PT1mcm9tJiZldi5kYXRhLmZyb21UeXBlPT09ZmluYWxGcm9tVHlwZSYmZXYuZGF0YS50bz09PXRvJiZldi5kYXRhLnRvVHlwZT09PWZpbmFsVG9UeXBlKXt0b2tlbk1hcFtldi5kYXRhLnN5bWJvbCsiLSIrZXYuZGF0YS5pZF09MX19Zm9yKGxldCBpbmRleD0wO2luZGV4PG5mdHMubGVuZ3RoO2luZGV4Kz0xKXtjb25zdHtzeW1ib2w6c3ltYm9sLGlkczppZHN9PW5mdHNbaW5kZXhdLHN1Y2Nlc3M9W10sZmFpbD1bXTtmb3IobGV0IGo9MDtqPGlkcy5sZW5ndGg7ais9MSl7Y29uc3QgaW5wdXRLZXk9c3ltYm9sKyItIitpZHNbal07aW5wdXRLZXkgaW4gY291bnRlZE1hcHx8KGlucHV0S2V5IGluIHRva2VuTWFwP3N1Y2Nlc3MucHVzaChpZHNbal0udG9TdHJpbmcoKSk6ZmFpbC5wdXNoKGlkc1tqXS50b1N0cmluZygpKSxjb3VudGVkTWFwW2lucHV0S2V5XT0xKX1zdWNjZXNzLmxlbmd0aD4wJiZyZXN1bHRzLnN1Y2Nlc3MucHVzaCh7c3ltYm9sOnN5bWJvbCxpZHM6c3VjY2Vzc30pLGZhaWwubGVuZ3RoPjAmJnJlc3VsdHMuZmFpbC5wdXNoKHtzeW1ib2w6c3ltYm9sLGlkczpmYWlsfSl9cmV0dXJuIHJlc3VsdHN9O2FjdGlvbnMudXBkYXRlVXJsPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt1cmw6dXJsLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ1cmwmJiJzdHJpbmciPT10eXBlb2YgdXJsLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KHVybC5sZW5ndGg8PTI1NSwiaW52YWxpZCB1cmw6IG1heCBsZW5ndGggb2YgMjU1Iikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXRyeXtjb25zdCBtZXRhZGF0YT1KU09OLnBhcnNlKG5mdC5tZXRhZGF0YSk7YXBpLmFzc2VydChtZXRhZGF0YSYmbWV0YWRhdGEudXJsLCJhbiBlcnJvciBvY2N1cmVkIHdoZW4gdHJ5aW5nIHRvIHVwZGF0ZSB0aGUgdXJsIikmJihtZXRhZGF0YS51cmw9dXJsLG5mdC5tZXRhZGF0YT1KU09OLnN0cmluZ2lmeShtZXRhZGF0YSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSl9Y2F0Y2goZSl7fX19LGFjdGlvbnMudXBkYXRlTWV0YWRhdGE9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e21ldGFkYXRhOm1ldGFkYXRhLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZtZXRhZGF0YSYmIm9iamVjdCI9PXR5cGVvZiBtZXRhZGF0YSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpdHJ5e2NvbnN0IGZpbmFsTWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpO2FwaS5hc3NlcnQoZmluYWxNZXRhZGF0YS5sZW5ndGg8PTFlMywiaW52YWxpZCBtZXRhZGF0YTogbWF4IGxlbmd0aCBvZiAxMDAwIikmJihuZnQubWV0YWRhdGE9ZmluYWxNZXRhZGF0YSxhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixuZnQpKX1jYXRjaChlKXt9fX0sYWN0aW9ucy51cGRhdGVOYW1lPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuYW1lOm5hbWUsc3ltYm9sOnN5bWJvbH09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJm5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KG5hbWUsIiAiKSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD01MCwiaW52YWxpZCBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDUwIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtuZnQmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiYobmZ0Lm5hbWU9bmFtZSxhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixuZnQpKX19LGFjdGlvbnMudXBkYXRlT3JnTmFtZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7b3JnTmFtZTpvcmdOYW1lLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZvcmdOYW1lJiYic3RyaW5nIj09dHlwZW9mIG9yZ05hbWUsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChvcmdOYW1lLCIgIikpJiZvcmdOYW1lLmxlbmd0aD4wJiZvcmdOYW1lLmxlbmd0aDw9NTAsImludmFsaWQgb3JnIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO25mdCYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJihuZnQub3JnTmFtZT1vcmdOYW1lLGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCkpfX0sYWN0aW9ucy51cGRhdGVQcm9kdWN0TmFtZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7cHJvZHVjdE5hbWU6cHJvZHVjdE5hbWUsc3ltYm9sOnN5bWJvbH09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnByb2R1Y3ROYW1lJiYic3RyaW5nIj09dHlwZW9mIHByb2R1Y3ROYW1lLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QocHJvZHVjdE5hbWUsIiAiKSkmJnByb2R1Y3ROYW1lLmxlbmd0aD4wJiZwcm9kdWN0TmFtZS5sZW5ndGg8PTUwLCJpbnZhbGlkIHByb2R1Y3QgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7bmZ0JiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmKG5mdC5wcm9kdWN0TmFtZT1wcm9kdWN0TmFtZSxhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixuZnQpKX19LGFjdGlvbnMuYWRkQXV0aG9yaXplZElzc3VpbmdBY2NvdW50cz1hc3luYyBwYXlsb2FkPT57Y29uc3R7YWNjb3VudHM6YWNjb3VudHMsc3ltYm9sOnN5bWJvbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmFjY291bnRzJiYib2JqZWN0Ij09dHlwZW9mIGFjY291bnRzJiZBcnJheS5pc0FycmF5KGFjY291bnRzKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChhY2NvdW50cy5sZW5ndGg8PTEwLCJjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gMTAgYXV0aG9yaXplZCBpc3N1aW5nIGFjY291bnRzIikpe2NvbnN0IHZhbGlkQ29udGVudHM9aXNWYWxpZEFjY291bnRzQXJyYXkoYWNjb3VudHMpO2lmKGFwaS5hc3NlcnQodmFsaWRDb250ZW50cywiaW52YWxpZCBhY2NvdW50IGxpc3QiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCl7Y29uc3Qgc2FuaXRpemVkTGlzdD1bXTtpZihhY2NvdW50cy5mb3JFYWNoKChhY2NvdW50PT57Y29uc3QgZmluYWxBY2NvdW50PWFjY291bnQudHJpbSgpLnRvTG93ZXJDYXNlKCk7bGV0IGlzRHVwbGljYXRlPSExO2ZvcihsZXQgaT0wO2k8bmZ0LmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMubGVuZ3RoO2krPTEpaWYoZmluYWxBY2NvdW50PT09bmZ0LmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHNbaV0pe2lzRHVwbGljYXRlPSEwO2JyZWFrfWlzRHVwbGljYXRlfHxzYW5pdGl6ZWRMaXN0LnB1c2goZmluYWxBY2NvdW50KX0pKSxhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCghY29udGFpbnNEdXBsaWNhdGVzKHNhbml0aXplZExpc3QpLCJjYW5ub3QgYWRkIHRoZSBzYW1lIGFjY291bnQgdHdpY2UiKSYmYXBpLmFzc2VydChuZnQuYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cy5sZW5ndGgrc2FuaXRpemVkTGlzdC5sZW5ndGg8PTEwLCJjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gMTAgYXV0aG9yaXplZCBpc3N1aW5nIGFjY291bnRzIikpe2NvbnN0IGZpbmFsQWNjb3VudExpc3Q9bmZ0LmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMuY29uY2F0KHNhbml0aXplZExpc3QpO25mdC5hdXRob3JpemVkSXNzdWluZ0FjY291bnRzPWZpbmFsQWNjb3VudExpc3QsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KX19fX19LGFjdGlvbnMuYWRkQXV0aG9yaXplZElzc3VpbmdDb250cmFjdHM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2NvbnRyYWN0czpjb250cmFjdHMsc3ltYm9sOnN5bWJvbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmNvbnRyYWN0cyYmIm9iamVjdCI9PXR5cGVvZiBjb250cmFjdHMmJkFycmF5LmlzQXJyYXkoY29udHJhY3RzKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChjb250cmFjdHMubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgaXNzdWluZyBjb250cmFjdHMiKSl7Y29uc3QgdmFsaWRDb250ZW50cz1pc1ZhbGlkQ29udHJhY3RzQXJyYXkoY29udHJhY3RzKTtpZihhcGkuYXNzZXJ0KHZhbGlkQ29udGVudHMsImludmFsaWQgY29udHJhY3QgbGlzdCIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0KXtjb25zdCBzYW5pdGl6ZWRMaXN0PVtdO2lmKGNvbnRyYWN0cy5mb3JFYWNoKChjb250cmFjdD0+e2NvbnN0IGZpbmFsQ29udHJhY3Q9Y29udHJhY3QudHJpbSgpO2xldCBpc0R1cGxpY2F0ZT0hMTtmb3IobGV0IGk9MDtpPG5mdC5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cy5sZW5ndGg7aSs9MSlpZihmaW5hbENvbnRyYWN0PT09bmZ0LmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzW2ldKXtpc0R1cGxpY2F0ZT0hMDticmVha31pc0R1cGxpY2F0ZXx8c2FuaXRpemVkTGlzdC5wdXNoKGZpbmFsQ29udHJhY3QpfSkpLGFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiZhcGkuYXNzZXJ0KCFjb250YWluc0R1cGxpY2F0ZXMoc2FuaXRpemVkTGlzdCksImNhbm5vdCBhZGQgdGhlIHNhbWUgY29udHJhY3QgdHdpY2UiKSYmYXBpLmFzc2VydChuZnQuYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMubGVuZ3RoK3Nhbml0aXplZExpc3QubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgaXNzdWluZyBjb250cmFjdHMiKSl7Y29uc3QgZmluYWxDb250cmFjdExpc3Q9bmZ0LmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzLmNvbmNhdChzYW5pdGl6ZWRMaXN0KTtuZnQuYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHM9ZmluYWxDb250cmFjdExpc3QsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KX19fX19LGFjdGlvbnMucmVtb3ZlQXV0aG9yaXplZElzc3VpbmdBY2NvdW50cz1hc3luYyBwYXlsb2FkPT57Y29uc3R7YWNjb3VudHM6YWNjb3VudHMsc3ltYm9sOnN5bWJvbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmFjY291bnRzJiYib2JqZWN0Ij09dHlwZW9mIGFjY291bnRzJiZBcnJheS5pc0FycmF5KGFjY291bnRzKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChhY2NvdW50cy5sZW5ndGg8PTEwLCJjYW5ub3QgcmVtb3ZlIG1vcmUgdGhhbiAxMCBhdXRob3JpemVkIGlzc3VpbmcgYWNjb3VudHMiKSl7Y29uc3QgdmFsaWRDb250ZW50cz1pc1ZhbGlkQWNjb3VudHNBcnJheShhY2NvdW50cyk7aWYoYXBpLmFzc2VydCh2YWxpZENvbnRlbnRzLCJpbnZhbGlkIGFjY291bnQgbGlzdCIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0JiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7Y29uc3QgZmluYWxBY2NvdW50TGlzdD1uZnQuYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cy5maWx0ZXIoKGN1cnJlbnRWYWx1ZT0+e2ZvcihsZXQgaT0wO2k8YWNjb3VudHMubGVuZ3RoO2krPTEpe2lmKGN1cnJlbnRWYWx1ZT09PWFjY291bnRzW2ldLnRyaW0oKS50b0xvd2VyQ2FzZSgpKXJldHVybiExfXJldHVybiEwfSkpO25mdC5hdXRob3JpemVkSXNzdWluZ0FjY291bnRzPWZpbmFsQWNjb3VudExpc3QsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KX19fX0sYWN0aW9ucy5yZW1vdmVBdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cz1hc3luYyBwYXlsb2FkPT57Y29uc3R7Y29udHJhY3RzOmNvbnRyYWN0cyxzeW1ib2w6c3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmY29udHJhY3RzJiYib2JqZWN0Ij09dHlwZW9mIGNvbnRyYWN0cyYmQXJyYXkuaXNBcnJheShjb250cmFjdHMpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGNvbnRyYWN0cy5sZW5ndGg8PTEwLCJjYW5ub3QgcmVtb3ZlIG1vcmUgdGhhbiAxMCBhdXRob3JpemVkIGlzc3VpbmcgY29udHJhY3RzIikpe2NvbnN0IHZhbGlkQ29udGVudHM9aXNWYWxpZENvbnRyYWN0c0FycmF5KGNvbnRyYWN0cyk7aWYoYXBpLmFzc2VydCh2YWxpZENvbnRlbnRzLCJpbnZhbGlkIGNvbnRyYWN0IGxpc3QiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe2NvbnN0IGZpbmFsQ29udHJhY3RMaXN0PW5mdC5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cy5maWx0ZXIoKGN1cnJlbnRWYWx1ZT0+e2ZvcihsZXQgaT0wO2k8Y29udHJhY3RzLmxlbmd0aDtpKz0xKXtpZihjdXJyZW50VmFsdWU9PT1jb250cmFjdHNbaV0udHJpbSgpKXJldHVybiExfXJldHVybiEwfSkpO25mdC5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cz1maW5hbENvbnRyYWN0TGlzdCxhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixuZnQpfX19fSxhY3Rpb25zLnRyYW5zZmVyT3duZXJzaGlwPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHRvOnRvLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8sImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKS50b0xvd2VyQ2FzZSgpO2FwaS5hc3NlcnQoaXNWYWxpZEhpdmVBY2NvdW50TGVuZ3RoKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikmJihuZnQuaXNzdWVyPWZpbmFsVG8sYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSxhcGkuZW1pdCgidHJhbnNmZXJPd25lcnNoaXAiLHtmcm9tOmFwaS5zZW5kZXIsdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sfSkpfX19LGFjdGlvbnMuZW5hYmxlRGVsZWdhdGlvbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx1bmRlbGVnYXRpb25Db29sZG93bjp1bmRlbGVnYXRpb25Db29sZG93bixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2VuYWJsZURlbGVnYXRpb25GZWU6ZW5hYmxlRGVsZWdhdGlvbkZlZX09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6VVRJTElUWV9UT0tFTl9TWU1CT0x9KSxhdXRob3JpemVkPSEhYXBpLkJpZ051bWJlcihlbmFibGVEZWxlZ2F0aW9uRmVlKS5sdGUoMCl8fHV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUoZW5hYmxlRGVsZWdhdGlvbkZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KHVuZGVsZWdhdGlvbkNvb2xkb3duJiZOdW1iZXIuaXNJbnRlZ2VyKHVuZGVsZWdhdGlvbkNvb2xkb3duKSYmdW5kZWxlZ2F0aW9uQ29vbGRvd24+MCYmdW5kZWxlZ2F0aW9uQ29vbGRvd248PTE4MjUwLCJ1bmRlbGVnYXRpb25Db29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQodm9pZCAwPT09bmZ0LmRlbGVnYXRpb25FbmFibGVkfHwhMT09PW5mdC5kZWxlZ2F0aW9uRW5hYmxlZCwiZGVsZWdhdGlvbiBhbHJlYWR5IGVuYWJsZWQiKSl7aWYoYXBpLkJpZ051bWJlcihlbmFibGVEZWxlZ2F0aW9uRmVlKS5ndCgwKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOlVUSUxJVFlfVE9LRU5fU1lNQk9MLHF1YW50aXR5OmVuYWJsZURlbGVnYXRpb25GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2lmKCFpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsYXBpLnNlbmRlciwibnVsbCIsVVRJTElUWV9UT0tFTl9TWU1CT0wsZW5hYmxlRGVsZWdhdGlvbkZlZSwidHJhbnNmZXIiKSlyZXR1cm4hMX1yZXR1cm4gbmZ0LmRlbGVnYXRpb25FbmFibGVkPSEwLG5mdC51bmRlbGVnYXRpb25Db29sZG93bj11bmRlbGVnYXRpb25Db29sZG93bixhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixuZnQpLCEwfX1yZXR1cm4hMX0sYWN0aW9ucy51cGRhdGVQcm9wZXJ0eURlZmluaXRpb249YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsbmFtZTpuYW1lLG5ld05hbWU6bmV3TmFtZSx0eXBlOnR5cGUsaXNSZWFkT25seTppc1JlYWRPbmx5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmbmFtZSYmInN0cmluZyI9PXR5cGVvZiBuYW1lLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMobmFtZSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD0yNSwiaW52YWxpZCBuYW1lOiBsZXR0ZXJzICYgbnVtYmVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDI1IikmJmFwaS5hc3NlcnQodm9pZCAwPT09bmV3TmFtZXx8InN0cmluZyI9PXR5cGVvZiBuZXdOYW1lJiZhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKG5ld05hbWUpJiZuZXdOYW1lLmxlbmd0aD4wJiZuZXdOYW1lLmxlbmd0aDw9MjUsImludmFsaWQgbmV3IG5hbWU6IGxldHRlcnMgJiBudW1iZXJzIG9ubHksIG1heCBsZW5ndGggb2YgMjUiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT10eXBlfHwic3RyaW5nIj09dHlwZW9mIHR5cGUmJigibnVtYmVyIj09PXR5cGV8fCJzdHJpbmciPT09dHlwZXx8ImJvb2xlYW4iPT09dHlwZSksImludmFsaWQgdHlwZTogbXVzdCBiZSBudW1iZXIsIHN0cmluZywgb3IgYm9vbGVhbiIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PWlzUmVhZE9ubHl8fCJib29sZWFuIj09dHlwZW9mIGlzUmVhZE9ubHksImludmFsaWQgaXNSZWFkT25seTogbXVzdCBiZSB0cnVlIG9yIGZhbHNlIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQoMD09PW5mdC5zdXBwbHksImNhbm5vdCBjaGFuZ2UgZGF0YSBwcm9wZXJ0eSBkZWZpbml0aW9uOyB0b2tlbnMgYWxyZWFkeSBpc3N1ZWQiKSYmYXBpLmFzc2VydChuYW1lIGluIG5mdC5wcm9wZXJ0aWVzLCJwcm9wZXJ0eSBtdXN0IGV4aXN0IikmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtpZih2b2lkIDAhPT1uZXdOYW1lKXtpZih2b2lkIDAhPT1uZnQuZ3JvdXBCeSYmbmZ0Lmdyb3VwQnkubGVuZ3RoPjAmJiFhcGkuYXNzZXJ0KCFuZnQuZ3JvdXBCeS5pbmNsdWRlcyhuYW1lKSwiY2Fubm90IGNoYW5nZSBkYXRhIHByb3BlcnR5IG5hbWU7IHByb3BlcnR5IGlzIHBhcnQgb2YgZ3JvdXBCeSIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KG5ld05hbWUhPT1uYW1lLCJuZXcgbmFtZSBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIG9sZCBuYW1lIil8fCFhcGkuYXNzZXJ0KCEobmV3TmFtZSBpbiBuZnQucHJvcGVydGllcyksInRoZXJlIGlzIGFscmVhZHkgYSBkYXRhIHByb3BlcnR5IHdpdGggdGhlIGdpdmVuIG5ldyBuYW1lIikpcmV0dXJuITF9bGV0IHNob3VsZFVwZGF0ZT0hMTtjb25zdCBvcmlnaW5hbFR5cGU9bmZ0LnByb3BlcnRpZXNbbmFtZV0udHlwZSxvcmlnaW5hbElzUmVhZE9ubHk9bmZ0LnByb3BlcnRpZXNbbmFtZV0uaXNSZWFkT25seTtyZXR1cm4gdm9pZCAwIT09dHlwZSYmdHlwZSE9PW9yaWdpbmFsVHlwZSYmKG5mdC5wcm9wZXJ0aWVzW25hbWVdLnR5cGU9dHlwZSxzaG91bGRVcGRhdGU9ITApLHZvaWQgMCE9PWlzUmVhZE9ubHkmJmlzUmVhZE9ubHkhPT1vcmlnaW5hbElzUmVhZE9ubHkmJihuZnQucHJvcGVydGllc1tuYW1lXS5pc1JlYWRPbmx5PWlzUmVhZE9ubHksc2hvdWxkVXBkYXRlPSEwKSx2b2lkIDAhPT1uZXdOYW1lJiZuZXdOYW1lIT09bmFtZSYmKG5mdC5wcm9wZXJ0aWVzW25ld05hbWVdPW5mdC5wcm9wZXJ0aWVzW25hbWVdLGRlbGV0ZSBuZnQucHJvcGVydGllc1tuYW1lXSxzaG91bGRVcGRhdGU9ITApLHNob3VsZFVwZGF0ZSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCksYXBpLmVtaXQoInVwZGF0ZVByb3BlcnR5RGVmaW5pdGlvbiIse3N5bWJvbDpzeW1ib2wsb3JpZ2luYWxOYW1lOm5hbWUsb3JpZ2luYWxUeXBlOm9yaWdpbmFsVHlwZSxvcmlnaW5hbElzUmVhZE9ubHk6b3JpZ2luYWxJc1JlYWRPbmx5LG5ld05hbWU6bmV3TmFtZSxuZXdUeXBlOnR5cGUsbmV3SXNSZWFkT25seTppc1JlYWRPbmx5fSkpLCEwfX1yZXR1cm4hMX0sYWN0aW9ucy5hZGRQcm9wZXJ0eT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxuYW1lOm5hbWUsdHlwZTp0eXBlLGlzUmVhZE9ubHk6aXNSZWFkT25seSxhdXRob3JpemVkRWRpdGluZ0FjY291bnRzOmF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHMsYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHM6YXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtkYXRhUHJvcGVydHlDcmVhdGlvbkZlZTpkYXRhUHJvcGVydHlDcmVhdGlvbkZlZX09cGFyYW1zO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJm5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmKHZvaWQgMD09PWlzUmVhZE9ubHl8fCJib29sZWFuIj09dHlwZW9mIGlzUmVhZE9ubHkpJiYodm9pZCAwPT09YXV0aG9yaXplZEVkaXRpbmdBY2NvdW50c3x8YXV0aG9yaXplZEVkaXRpbmdBY2NvdW50cyYmIm9iamVjdCI9PXR5cGVvZiBhdXRob3JpemVkRWRpdGluZ0FjY291bnRzJiZBcnJheS5pc0FycmF5KGF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHMpKSYmKHZvaWQgMD09PWF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzfHxhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0cyYmIm9iamVjdCI9PXR5cGVvZiBhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0cyYmQXJyYXkuaXNBcnJheShhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0cykpJiZ0eXBlJiYic3RyaW5nIj09dHlwZW9mIHR5cGUsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhuYW1lKSYmbmFtZS5sZW5ndGg+MCYmbmFtZS5sZW5ndGg8PTI1LCJpbnZhbGlkIG5hbWU6IGxldHRlcnMgJiBudW1iZXJzIG9ubHksIG1heCBsZW5ndGggb2YgMjUiKSYmYXBpLmFzc2VydCgibnVtYmVyIj09PXR5cGV8fCJzdHJpbmciPT09dHlwZXx8ImJvb2xlYW4iPT09dHlwZSwiaW52YWxpZCB0eXBlOiBtdXN0IGJlIG51bWJlciwgc3RyaW5nLCBvciBib29sZWFuIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQoIShuYW1lIGluIG5mdC5wcm9wZXJ0aWVzKSwiY2Fubm90IGFkZCB0aGUgc2FtZSBwcm9wZXJ0eSB0d2ljZSIpJiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7aWYoT2JqZWN0LmtleXMobmZ0LnByb3BlcnRpZXMpLmxlbmd0aD49Myl7Y29uc3QgdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpVVElMSVRZX1RPS0VOX1NZTUJPTH0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hIWFwaS5CaWdOdW1iZXIoZGF0YVByb3BlcnR5Q3JlYXRpb25GZWUpLmx0ZSgwKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSk7aWYoIWFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZXMiKSlyZXR1cm4hMTtpZihhcGkuQmlnTnVtYmVyKGRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlKS5ndCgwKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOlVUSUxJVFlfVE9LRU5fU1lNQk9MLHF1YW50aXR5OmRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZighaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGFwaS5zZW5kZXIsIm51bGwiLFVUSUxJVFlfVE9LRU5fU1lNQk9MLGRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlLCJ0cmFuc2ZlciIpKXJldHVybiExfX1jb25zdCBuZXdQcm9wZXJ0eT17dHlwZTp0eXBlLGlzUmVhZE9ubHk6dm9pZCAwIT09aXNSZWFkT25seSYmaXNSZWFkT25seSxhdXRob3JpemVkRWRpdGluZ0FjY291bnRzOnZvaWQgMD09PWF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHM/W2FwaS5zZW5kZXJdOltdLGF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzOltdfTtyZXR1cm4gbmZ0LnByb3BlcnRpZXNbbmFtZV09bmV3UHJvcGVydHksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSwoYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50c3x8YXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHMpJiZhd2FpdCBhY3Rpb25zLnNldFByb3BlcnR5UGVybWlzc2lvbnMoe3N5bWJvbDpzeW1ib2wsbmFtZTpuYW1lLGFjY291bnRzOmF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHMsY29udHJhY3RzOmF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSwhMH19cmV0dXJuITF9LGFjdGlvbnMuc2V0UHJvcGVydHlQZXJtaXNzaW9ucz1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxuYW1lOm5hbWUsYWNjb3VudHM6YWNjb3VudHMsY29udHJhY3RzOmNvbnRyYWN0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJm5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmKHZvaWQgMD09PWFjY291bnRzfHxhY2NvdW50cyYmIm9iamVjdCI9PXR5cGVvZiBhY2NvdW50cyYmQXJyYXkuaXNBcnJheShhY2NvdW50cykpJiYodm9pZCAwPT09Y29udHJhY3RzfHxjb250cmFjdHMmJiJvYmplY3QiPT10eXBlb2YgY29udHJhY3RzJiZBcnJheS5pc0FycmF5KGNvbnRyYWN0cykpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMobmFtZSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD0yNSwiaW52YWxpZCBuYW1lOiBsZXR0ZXJzICYgbnVtYmVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDI1IikmJmFwaS5hc3NlcnQodm9pZCAwPT09YWNjb3VudHN8fGFjY291bnRzLmxlbmd0aDw9MTAsImNhbm5vdCBoYXZlIG1vcmUgdGhhbiAxMCBhdXRob3JpemVkIGFjY291bnRzIikmJmFwaS5hc3NlcnQodm9pZCAwPT09Y29udHJhY3RzfHxjb250cmFjdHMubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgY29udHJhY3RzIikmJmFwaS5hc3NlcnQodm9pZCAwPT09YWNjb3VudHN8fGlzVmFsaWRBY2NvdW50c0FycmF5KGFjY291bnRzKSwiaW52YWxpZCBhY2NvdW50IGxpc3QiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1jb250cmFjdHN8fGlzVmFsaWRDb250cmFjdHNBcnJheShjb250cmFjdHMpLCJpbnZhbGlkIGNvbnRyYWN0IGxpc3QiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCYmYXBpLmFzc2VydChuYW1lIGluIG5mdC5wcm9wZXJ0aWVzLCJwcm9wZXJ0eSBtdXN0IGV4aXN0IikmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtsZXQgc2FuaXRpemVkQWNjb3VudExpc3Q9W10sc2FuaXRpemVkQ29udHJhY3RMaXN0PVtdO2lmKGFjY291bnRzJiYoc2FuaXRpemVkQWNjb3VudExpc3Q9YWNjb3VudHMubWFwKChhY2NvdW50PT5hY2NvdW50LnRyaW0oKS50b0xvd2VyQ2FzZSgpKSkpLGNvbnRyYWN0cyYmKHNhbml0aXplZENvbnRyYWN0TGlzdD1jb250cmFjdHMubWFwKChjb250cmFjdD0+Y29udHJhY3QudHJpbSgpKSkpLGFwaS5hc3NlcnQodm9pZCAwPT09YWNjb3VudHN8fCFjb250YWluc0R1cGxpY2F0ZXMoc2FuaXRpemVkQWNjb3VudExpc3QpLCJjYW5ub3QgYWRkIHRoZSBzYW1lIGFjY291bnQgdHdpY2UiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1jb250cmFjdHN8fCFjb250YWluc0R1cGxpY2F0ZXMoc2FuaXRpemVkQ29udHJhY3RMaXN0KSwiY2Fubm90IGFkZCB0aGUgc2FtZSBjb250cmFjdCB0d2ljZSIpKXtsZXQgc2hvdWxkVXBkYXRlPSExO2FjY291bnRzJiYobmZ0LnByb3BlcnRpZXNbbmFtZV0uYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50cz1zYW5pdGl6ZWRBY2NvdW50TGlzdCxzaG91bGRVcGRhdGU9ITApLGNvbnRyYWN0cyYmKG5mdC5wcm9wZXJ0aWVzW25hbWVdLmF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzPXNhbml0aXplZENvbnRyYWN0TGlzdCxzaG91bGRVcGRhdGU9ITApLHNob3VsZFVwZGF0ZSYmYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KX19fX0sYWN0aW9ucy5zZXRHcm91cEJ5PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHByb3BlcnRpZXM6cHJvcGVydGllcyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnByb3BlcnRpZXMmJiJvYmplY3QiPT10eXBlb2YgcHJvcGVydGllcyYmQXJyYXkuaXNBcnJheShwcm9wZXJ0aWVzKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCl7Y29uc3QgbmZ0UHJvcGVydHlDb3VudD1PYmplY3Qua2V5cyhuZnQucHJvcGVydGllcykubGVuZ3RoO2lmKGFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW5mdC5ncm91cEJ5fHwwPT09bmZ0Lmdyb3VwQnkubGVuZ3RoLCJsaXN0IGlzIGFscmVhZHkgc2V0IikmJmFwaS5hc3NlcnQocHJvcGVydGllcy5sZW5ndGg8PW5mdFByb3BlcnR5Q291bnQsImNhbm5vdCBzZXQgbW9yZSBkYXRhIHByb3BlcnRpZXMgdGhhbiBORlQgaGFzIikmJmFwaS5hc3NlcnQoIWNvbnRhaW5zRHVwbGljYXRlcyhwcm9wZXJ0aWVzKSwibGlzdCBjYW5ub3QgY29udGFpbiBkdXBsaWNhdGVzIikpe2ZvcihsZXQgaT0wO2k8cHJvcGVydGllcy5sZW5ndGg7aSs9MSl7Y29uc3QgbmFtZT1wcm9wZXJ0aWVzW2ldO2lmKCFhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmbmFtZSBpbiBuZnQucHJvcGVydGllcywiZGF0YSBwcm9wZXJ0eSBtdXN0IGV4aXN0IikpcmV0dXJuITF9cmV0dXJuIG5mdC5ncm91cEJ5PXByb3BlcnRpZXMsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSwhMH19fXJldHVybiExfSxhY3Rpb25zLnNldFByb3BlcnRpZXM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsZnJvbVR5cGU6ZnJvbVR5cGUsbmZ0czpuZnRzLGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZCxmaW5hbEZyb21UeXBlPXZvaWQgMD09PWZyb21UeXBlPyJ1c2VyIjpmcm9tVHlwZTtpZihhcGkuYXNzZXJ0KG5mdHMmJiJvYmplY3QiPT10eXBlb2YgbmZ0cyYmQXJyYXkuaXNBcnJheShuZnRzKSYmZmluYWxGcm9tVHlwZSYmInN0cmluZyI9PXR5cGVvZiBmaW5hbEZyb21UeXBlJiZbInVzZXIiLCJjb250cmFjdCJdLmluY2x1ZGVzKGZpbmFsRnJvbVR5cGUpJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiYoY2FsbGluZ0NvbnRyYWN0SW5mb3x8dm9pZCAwPT09Y2FsbGluZ0NvbnRyYWN0SW5mbyYmInVzZXIiPT09ZmluYWxGcm9tVHlwZSksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQobmZ0cy5sZW5ndGg8PTUwLCJjYW5ub3Qgc2V0IHByb3BlcnRpZXMgb24gbW9yZSB0aGFuIDUwIE5GVCBpbnN0YW5jZXMgYXQgb25jZSIpKXtjb25zdCBmaW5hbEZyb209InVzZXIiPT09ZmluYWxGcm9tVHlwZT9hcGkuc2VuZGVyOmNhbGxpbmdDb250cmFjdEluZm8ubmFtZSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSl7aWYoIWlzVmFsaWREYXRhUHJvcGVydGllc0FycmF5KGZpbmFsRnJvbSxmaW5hbEZyb21UeXBlLG5mdCxuZnRzKSlyZXR1cm4hMTtjb25zdCBpbnN0YW5jZVRhYmxlTmFtZT1zeW1ib2wrImluc3RhbmNlcyI7Zm9yKGxldCBpPTA7aTxuZnRzLmxlbmd0aDtpKz0xKXtjb25zdHtpZDppZCxwcm9wZXJ0aWVzOnByb3BlcnRpZXN9PW5mdHNbaV07aWYoMD09PU9iamVjdC5rZXlzKHByb3BlcnRpZXMpLmxlbmd0aCljb250aW51ZTtjb25zdCBuZnRJbnN0YW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZShpbnN0YW5jZVRhYmxlTmFtZSx7X2lkOmFwaS5CaWdOdW1iZXIoaWQpLnRvTnVtYmVyKCl9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnRJbnN0YW5jZSwibmZ0IGluc3RhbmNlIGRvZXMgbm90IGV4aXN0Iikpe2xldCBzaG91bGRVcGRhdGU9ITE7Zm9yKGNvbnN0W25hbWUsZGF0YV1vZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSl7bGV0IG9sZFByb3BlcnR5PW51bGw7bmZ0LnByb3BlcnRpZXNbbmFtZV0uaXNSZWFkT25seT9hcGkuYXNzZXJ0KCEobmFtZSBpbiBuZnRJbnN0YW5jZS5wcm9wZXJ0aWVzKSwiY2Fubm90IGVkaXQgcmVhZC1vbmx5IHByb3BlcnRpZXMiKSYmKG5mdEluc3RhbmNlLnByb3BlcnRpZXNbbmFtZV09ZGF0YSxzaG91bGRVcGRhdGU9ITApOihvbGRQcm9wZXJ0eT1uZnRJbnN0YW5jZS5wcm9wZXJ0aWVzW25hbWVdLG5mdEluc3RhbmNlLnByb3BlcnRpZXNbbmFtZV09ZGF0YSxzaG91bGRVcGRhdGU9ITApLHNob3VsZFVwZGF0ZSYmb2xkUHJvcGVydHkhPT1kYXRhJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZU5mdFNldFByb3BlcnR5Iix7c3ltYm9sOnN5bWJvbCxuZnQ6bmZ0SW5zdGFuY2UscHJvcGVydHlOYW1lOm5hbWUsb2xkVmFsdWU6b2xkUHJvcGVydHl9KX1zaG91bGRVcGRhdGUmJmF3YWl0IGFwaS5kYi51cGRhdGUoaW5zdGFuY2VUYWJsZU5hbWUsbmZ0SW5zdGFuY2UpfX1yZXR1cm4hMH19cmV0dXJuITF9LGFjdGlvbnMuYnVybj1hc3luYyBwYXlsb2FkPT57Y29uc3R7ZnJvbVR5cGU6ZnJvbVR5cGUsbmZ0czpuZnRzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkLGZpbmFsRnJvbVR5cGU9dm9pZCAwPT09ZnJvbVR5cGU/InVzZXIiOmZyb21UeXBlO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGZpbmFsRnJvbVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZmluYWxGcm9tVHlwZSYmWyJ1c2VyIiwiY29udHJhY3QiXS5pbmNsdWRlcyhmaW5hbEZyb21UeXBlKSYmKGNhbGxpbmdDb250cmFjdEluZm98fHZvaWQgMD09PWNhbGxpbmdDb250cmFjdEluZm8mJiJ1c2VyIj09PWZpbmFsRnJvbVR5cGUpJiZuZnRzJiYib2JqZWN0Ij09dHlwZW9mIG5mdHMmJkFycmF5LmlzQXJyYXkobmZ0cyksImludmFsaWQgcGFyYW1zIikmJmlzVmFsaWROZnRJZEFycmF5KG5mdHMpKXtjb25zdCBmaW5hbEZyb209InVzZXIiPT09ZmluYWxGcm9tVHlwZT9hcGkuc2VuZGVyOmNhbGxpbmdDb250cmFjdEluZm8ubmFtZTtsZXQgY29udGFpbmVyQ291bnQ9MCx0b2tlbkNvdW50PTAsaXNGaXJzdEluc3RhbmNlQ29udGFpbmVyPSExO2ZvcihsZXQgaT0wO2k8bmZ0cy5sZW5ndGg7aSs9MSl7Y29uc3R7c3ltYm9sOnN5bWJvbCxpZHM6aWRzfT1uZnRzW2ldLG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQpe2NvbnN0IGluc3RhbmNlVGFibGVOYW1lPXN5bWJvbCsiaW5zdGFuY2VzIjtmb3IobGV0IGo9MDtqPGlkcy5sZW5ndGg7ais9MSl7Y29uc3QgaWQ9aWRzW2pdLG5mdEluc3RhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKGluc3RhbmNlVGFibGVOYW1lLHtfaWQ6YXBpLkJpZ051bWJlcihpZCkudG9OdW1iZXIoKX0pO2lmKG5mdEluc3RhbmNlKXtsZXQgaXNCdXJuQXV0aG9yaXplZD0hMDtpZihuZnRJbnN0YW5jZS5sb2NrZWROZnRzJiZuZnRJbnN0YW5jZS5sb2NrZWROZnRzLmxlbmd0aD4wPygwPT09dG9rZW5Db3VudCYmKGlzRmlyc3RJbnN0YW5jZUNvbnRhaW5lcj0hMCksY29udGFpbmVyQ291bnQrPTEsKGNvbnRhaW5lckNvdW50PjF8fCFpc0ZpcnN0SW5zdGFuY2VDb250YWluZXIpJiYoaXNCdXJuQXV0aG9yaXplZD0hMSkpOmlzRmlyc3RJbnN0YW5jZUNvbnRhaW5lciYmKGlzQnVybkF1dGhvcml6ZWQ9ITEpLHRva2VuQ291bnQrPTEsbmZ0SW5zdGFuY2UuYWNjb3VudD09PWZpbmFsRnJvbSYmKCJ1Ij09PW5mdEluc3RhbmNlLm93bmVkQnkmJiJ1c2VyIj09PWZpbmFsRnJvbVR5cGV8fCJjIj09PW5mdEluc3RhbmNlLm93bmVkQnkmJiJjb250cmFjdCI9PT1maW5hbEZyb21UeXBlKSYmdm9pZCAwPT09bmZ0SW5zdGFuY2UuZGVsZWdhdGVkVG8mJmlzQnVybkF1dGhvcml6ZWQpe2NvbnN0IGZpbmFsTG9ja1Rva2Vucz17fTtsZXQgaXNUcmFuc2ZlclN1Y2Nlc3M9ITA7Zm9yKGNvbnN0W2xvY2tzeW1ib2wscXVhbnRpdHldb2YgT2JqZWN0LmVudHJpZXMobmZ0SW5zdGFuY2UubG9ja2VkVG9rZW5zKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhmaW5hbEZyb20sbG9ja3N5bWJvbCxxdWFudGl0eSxmaW5hbEZyb21UeXBlKTtpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsIm5mdCIsZmluYWxGcm9tLGxvY2tzeW1ib2wscXVhbnRpdHksInRyYW5zZmVyRnJvbUNvbnRyYWN0Iil8fChmaW5hbExvY2tUb2tlbnNbbG9ja3N5bWJvbF09cXVhbnRpdHksaXNUcmFuc2ZlclN1Y2Nlc3M9ITEpfWFwaS5hc3NlcnQoaXNUcmFuc2ZlclN1Y2Nlc3MsYHVuYWJsZSB0byByZWxlYXNlIGxvY2tlZCB0b2tlbnMgaW46ICR7c3ltYm9sfSwgaWQgJHtpZH1gKTtjb25zdCBvcmlnTG9ja05mdHM9bmZ0SW5zdGFuY2UubG9ja2VkTmZ0cyYmbmZ0SW5zdGFuY2UubG9ja2VkTmZ0cy5sZW5ndGg+MD9uZnRJbnN0YW5jZS5sb2NrZWROZnRzOltdO2lmKGlzVHJhbnNmZXJTdWNjZXNzJiZuZnRJbnN0YW5jZS5sb2NrZWROZnRzJiZuZnRJbnN0YW5jZS5sb2NrZWROZnRzLmxlbmd0aD4wKXtjb25zdCByZXM9YXdhaXQgdHJhbnNmZXJBbmRWZXJpZnlOZnRzKCJuZnQiLCJjb250cmFjdCIsZmluYWxGcm9tLGZpbmFsRnJvbVR5cGUsbmZ0SW5zdGFuY2UubG9ja2VkTmZ0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXkse25hbWU6Im5mdCJ9KTtuZnRJbnN0YW5jZS5sb2NrZWROZnRzPXJlcy5mYWlsLG5mdEluc3RhbmNlLmxvY2tlZE5mdHMubGVuZ3RoPjAmJihpc1RyYW5zZmVyU3VjY2Vzcz0hMSksYXBpLmFzc2VydChpc1RyYW5zZmVyU3VjY2VzcyxgdW5hYmxlIHRvIHJlbGVhc2UgbG9ja2VkIE5GVCBpbnN0YW5jZXMgaW46ICR7c3ltYm9sfSwgaWQgJHtpZH1gKX1jb25zdCBvcmlnT3duZWRCeT1uZnRJbnN0YW5jZS5vd25lZEJ5LG9yaWdMb2NrVG9rZW5zPW5mdEluc3RhbmNlLmxvY2tlZFRva2VucztuZnRJbnN0YW5jZS5sb2NrZWRUb2tlbnM9ZmluYWxMb2NrVG9rZW5zLGlzVHJhbnNmZXJTdWNjZXNzJiYobmZ0SW5zdGFuY2UucHJldmlvdXNBY2NvdW50PW5mdEluc3RhbmNlLmFjY291bnQsbmZ0SW5zdGFuY2UucHJldmlvdXNPd25lZEJ5PW5mdEluc3RhbmNlLm93bmVkQnksbmZ0SW5zdGFuY2UuYWNjb3VudD0ibnVsbCIsbmZ0SW5zdGFuY2Uub3duZWRCeT0idSIsbmZ0LmNpcmN1bGF0aW5nU3VwcGx5LT0xKSxhd2FpdCBhcGkuZGIudXBkYXRlKGluc3RhbmNlVGFibGVOYW1lLG5mdEluc3RhbmNlKSxpc1RyYW5zZmVyU3VjY2VzcyYmYXBpLmVtaXQoImJ1cm4iLHthY2NvdW50OmZpbmFsRnJvbSxvd25lZEJ5Om9yaWdPd25lZEJ5LHVubG9ja2VkVG9rZW5zOm9yaWdMb2NrVG9rZW5zLHVubG9ja2VkTmZ0czpvcmlnTG9ja05mdHMsc3ltYm9sOnN5bWJvbCxpZDppZH0pfX19YXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KX19fX0sYWN0aW9ucy50cmFuc2Zlcj1hc3luYyBwYXlsb2FkPT57Y29uc3R7ZnJvbVR5cGU6ZnJvbVR5cGUsdG86dG8sdG9UeXBlOnRvVHlwZSxuZnRzOm5mdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleSxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQsdHlwZXM9WyJ1c2VyIiwiY29udHJhY3QiXSxmaW5hbFRvVHlwZT12b2lkIDA9PT10b1R5cGU/InVzZXIiOnRvVHlwZSxmaW5hbEZyb21UeXBlPXZvaWQgMD09PWZyb21UeXBlPyJ1c2VyIjpmcm9tVHlwZTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChmaW5hbEZyb21UeXBlJiYic3RyaW5nIj09dHlwZW9mIGZpbmFsRnJvbVR5cGUmJnR5cGVzLmluY2x1ZGVzKGZpbmFsRnJvbVR5cGUpJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmZmluYWxUb1R5cGUmJiJzdHJpbmciPT10eXBlb2YgZmluYWxUb1R5cGUmJnR5cGVzLmluY2x1ZGVzKGZpbmFsVG9UeXBlKSYmKGNhbGxpbmdDb250cmFjdEluZm98fHZvaWQgMD09PWNhbGxpbmdDb250cmFjdEluZm8mJiJ1c2VyIj09PWZpbmFsRnJvbVR5cGUpJiZuZnRzJiYib2JqZWN0Ij09dHlwZW9mIG5mdHMmJkFycmF5LmlzQXJyYXkobmZ0cyksImludmFsaWQgcGFyYW1zIikmJmlzVmFsaWROZnRJZEFycmF5KG5mdHMpKXtjb25zdCBmaW5hbFRvPSJ1c2VyIj09PWZpbmFsVG9UeXBlP3RvLnRyaW0oKS50b0xvd2VyQ2FzZSgpOnRvLnRyaW0oKSx0b1ZhbGlkPSJ1c2VyIj09PWZpbmFsVG9UeXBlP2lzVmFsaWRIaXZlQWNjb3VudExlbmd0aChmaW5hbFRvKTppc1ZhbGlkQ29udHJhY3RMZW5ndGgoZmluYWxUbyksZmluYWxGcm9tPSJ1c2VyIj09PWZpbmFsRnJvbVR5cGU/YXBpLnNlbmRlcjpjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWU7aWYoYXBpLmFzc2VydCh0b1ZhbGlkLCJpbnZhbGlkIHRvIikmJmFwaS5hc3NlcnQoIShmaW5hbFRvVHlwZT09PWZpbmFsRnJvbVR5cGUmJmZpbmFsVG89PT1maW5hbEZyb20pLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpJiZhcGkuYXNzZXJ0KCEoInVzZXIiPT09ZmluYWxUb1R5cGUmJiJudWxsIj09PWZpbmFsVG8pLCJjYW5ub3QgdHJhbnNmZXIgdG8gbnVsbDsgdXNlIGJ1cm4gYWN0aW9uIGluc3RlYWQiKSlmb3IobGV0IGk9MDtpPG5mdHMubGVuZ3RoO2krPTEpe2NvbnN0e3N5bWJvbDpzeW1ib2wsaWRzOmlkc309bmZ0c1tpXTtpZihhd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KSl7Y29uc3QgaW5zdGFuY2VUYWJsZU5hbWU9c3ltYm9sKyJpbnN0YW5jZXMiO2ZvcihsZXQgaj0wO2o8aWRzLmxlbmd0aDtqKz0xKXtjb25zdCBpZD1pZHNbal0sbmZ0SW5zdGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoaW5zdGFuY2VUYWJsZU5hbWUse19pZDphcGkuQmlnTnVtYmVyKGlkKS50b051bWJlcigpfSk7aWYobmZ0SW5zdGFuY2UmJm5mdEluc3RhbmNlLmFjY291bnQ9PT1maW5hbEZyb20mJigidSI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYidXNlciI9PT1maW5hbEZyb21UeXBlfHwiYyI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSkmJnZvaWQgMD09PW5mdEluc3RhbmNlLmRlbGVnYXRlZFRvJiYhbmZ0SW5zdGFuY2Uuc291bEJvdW5kKXtjb25zdCBvcmlnT3duZWRCeT1uZnRJbnN0YW5jZS5vd25lZEJ5LG5ld093bmVkQnk9InVzZXIiPT09ZmluYWxUb1R5cGU/InUiOiJjIjtuZnRJbnN0YW5jZS5wcmV2aW91c0FjY291bnQ9bmZ0SW5zdGFuY2UuYWNjb3VudCxuZnRJbnN0YW5jZS5wcmV2aW91c093bmVkQnk9bmZ0SW5zdGFuY2Uub3duZWRCeSxuZnRJbnN0YW5jZS5hY2NvdW50PWZpbmFsVG8sbmZ0SW5zdGFuY2Uub3duZWRCeT1uZXdPd25lZEJ5LGF3YWl0IGFwaS5kYi51cGRhdGUoaW5zdGFuY2VUYWJsZU5hbWUsbmZ0SW5zdGFuY2UpLGFwaS5lbWl0KCJ0cmFuc2ZlciIse2Zyb206ZmluYWxGcm9tLGZyb21UeXBlOm9yaWdPd25lZEJ5LHRvOmZpbmFsVG8sdG9UeXBlOm5ld093bmVkQnksc3ltYm9sOnN5bWJvbCxpZDppZH0pfX19fX19LGFjdGlvbnMuZGVsZWdhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2Zyb21UeXBlOmZyb21UeXBlLHRvOnRvLHRvVHlwZTp0b1R5cGUsbmZ0czpuZnRzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkLHR5cGVzPVsidXNlciIsImNvbnRyYWN0Il0sZmluYWxUb1R5cGU9dm9pZCAwPT09dG9UeXBlPyJ1c2VyIjp0b1R5cGUsZmluYWxGcm9tVHlwZT12b2lkIDA9PT1mcm9tVHlwZT8idXNlciI6ZnJvbVR5cGU7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZmluYWxGcm9tVHlwZSYmInN0cmluZyI9PXR5cGVvZiBmaW5hbEZyb21UeXBlJiZ0eXBlcy5pbmNsdWRlcyhmaW5hbEZyb21UeXBlKSYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJmZpbmFsVG9UeXBlJiYic3RyaW5nIj09dHlwZW9mIGZpbmFsVG9UeXBlJiZ0eXBlcy5pbmNsdWRlcyhmaW5hbFRvVHlwZSkmJihjYWxsaW5nQ29udHJhY3RJbmZvfHx2b2lkIDA9PT1jYWxsaW5nQ29udHJhY3RJbmZvJiYidXNlciI9PT1maW5hbEZyb21UeXBlKSYmbmZ0cyYmIm9iamVjdCI9PXR5cGVvZiBuZnRzJiZBcnJheS5pc0FycmF5KG5mdHMpLCJpbnZhbGlkIHBhcmFtcyIpJiZpc1ZhbGlkTmZ0SWRBcnJheShuZnRzKSl7Y29uc3QgZmluYWxUbz0idXNlciI9PT1maW5hbFRvVHlwZT90by50cmltKCkudG9Mb3dlckNhc2UoKTp0by50cmltKCksdG9WYWxpZD0idXNlciI9PT1maW5hbFRvVHlwZT9pc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGgoZmluYWxUbyk6aXNWYWxpZENvbnRyYWN0TGVuZ3RoKGZpbmFsVG8pLGZpbmFsRnJvbT0idXNlciI9PT1maW5hbEZyb21UeXBlP2FwaS5zZW5kZXI6Y2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lO2lmKGFwaS5hc3NlcnQodG9WYWxpZCwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KCEoZmluYWxUb1R5cGU9PT1maW5hbEZyb21UeXBlJiZmaW5hbFRvPT09ZmluYWxGcm9tKSwiY2Fubm90IGRlbGVnYXRlIHRvIHNlbGYiKSYmYXBpLmFzc2VydCghKCJ1c2VyIj09PWZpbmFsVG9UeXBlJiYibnVsbCI9PT1maW5hbFRvKSwiY2Fubm90IGRlbGVnYXRlIHRvIG51bGwiKSlmb3IobGV0IGk9MDtpPG5mdHMubGVuZ3RoO2krPTEpe2NvbnN0e3N5bWJvbDpzeW1ib2wsaWRzOmlkc309bmZ0c1tpXSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0JiZhcGkuYXNzZXJ0KCEwPT09bmZ0LmRlbGVnYXRpb25FbmFibGVkLGBkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIGZvciAke3N5bWJvbH1gKSl7Y29uc3QgaW5zdGFuY2VUYWJsZU5hbWU9c3ltYm9sKyJpbnN0YW5jZXMiO2ZvcihsZXQgaj0wO2o8aWRzLmxlbmd0aDtqKz0xKXtjb25zdCBpZD1pZHNbal0sbmZ0SW5zdGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoaW5zdGFuY2VUYWJsZU5hbWUse19pZDphcGkuQmlnTnVtYmVyKGlkKS50b051bWJlcigpfSk7aWYobmZ0SW5zdGFuY2UmJm5mdEluc3RhbmNlLmFjY291bnQ9PT1maW5hbEZyb20mJigidSI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYidXNlciI9PT1maW5hbEZyb21UeXBlfHwiYyI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSkmJnZvaWQgMD09PW5mdEluc3RhbmNlLmRlbGVnYXRlZFRvJiYhbmZ0SW5zdGFuY2Uuc291bEJvdW5kKXtjb25zdCBuZXdPd25lZEJ5PSJ1c2VyIj09PWZpbmFsVG9UeXBlPyJ1IjoiYyIsbmV3RGVsZWdhdGlvbj17YWNjb3VudDpmaW5hbFRvLG93bmVkQnk6bmV3T3duZWRCeX07bmZ0SW5zdGFuY2UuZGVsZWdhdGVkVG89bmV3RGVsZWdhdGlvbixhd2FpdCBhcGkuZGIudXBkYXRlKGluc3RhbmNlVGFibGVOYW1lLG5mdEluc3RhbmNlKSxhcGkuZW1pdCgiZGVsZWdhdGUiLHtmcm9tOmZpbmFsRnJvbSxmcm9tVHlwZTpuZnRJbnN0YW5jZS5vd25lZEJ5LHRvOmZpbmFsVG8sdG9UeXBlOm5ld093bmVkQnksc3ltYm9sOnN5bWJvbCxpZDppZH0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlTmZ0RGVsZWdhdGlvbkNoYW5nZSIse3N5bWJvbDpzeW1ib2wsbmZ0Om5mdEluc3RhbmNlLGFkZDohMH0pfX19fX19LGFjdGlvbnMudW5kZWxlZ2F0ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7ZnJvbVR5cGU6ZnJvbVR5cGUsbmZ0czpuZnRzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkLGZpbmFsRnJvbVR5cGU9dm9pZCAwPT09ZnJvbVR5cGU/InVzZXIiOmZyb21UeXBlO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGZpbmFsRnJvbVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZmluYWxGcm9tVHlwZSYmWyJ1c2VyIiwiY29udHJhY3QiXS5pbmNsdWRlcyhmaW5hbEZyb21UeXBlKSYmKGNhbGxpbmdDb250cmFjdEluZm98fHZvaWQgMD09PWNhbGxpbmdDb250cmFjdEluZm8mJiJ1c2VyIj09PWZpbmFsRnJvbVR5cGUpJiZuZnRzJiYib2JqZWN0Ij09dHlwZW9mIG5mdHMmJkFycmF5LmlzQXJyYXkobmZ0cyksImludmFsaWQgcGFyYW1zIikmJmlzVmFsaWROZnRJZEFycmF5KG5mdHMpKXtjb25zdCBmaW5hbEZyb209InVzZXIiPT09ZmluYWxGcm9tVHlwZT9hcGkuc2VuZGVyOmNhbGxpbmdDb250cmFjdEluZm8ubmFtZSxibG9ja0RhdGU9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApO2ZvcihsZXQgaT0wO2k8bmZ0cy5sZW5ndGg7aSs9MSl7Y29uc3R7c3ltYm9sOnN5bWJvbCxpZHM6aWRzfT1uZnRzW2ldLG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQoITA9PT1uZnQuZGVsZWdhdGlvbkVuYWJsZWQsYGRlbGVnYXRpb24gbm90IGVuYWJsZWQgZm9yICR7c3ltYm9sfWApKXtjb25zdCBjb29sZG93blBlcmlvZE1pbGxpc2VjPTI0Km5mdC51bmRlbGVnYXRpb25Db29sZG93biozNjAwKjFlMyxjb21wbGV0ZVRpbWVzdGFtcD1ibG9ja0RhdGUuZ2V0VGltZSgpK2Nvb2xkb3duUGVyaW9kTWlsbGlzZWMsaW5zdGFuY2VUYWJsZU5hbWU9c3ltYm9sKyJpbnN0YW5jZXMiLHVuZGVsZWdhdGlvbj17c3ltYm9sOnN5bWJvbCxpZHM6W10sY29tcGxldGVUaW1lc3RhbXA6Y29tcGxldGVUaW1lc3RhbXB9O2ZvcihsZXQgaj0wO2o8aWRzLmxlbmd0aDtqKz0xKXtjb25zdCBpZD1pZHNbal0sbmZ0SW5zdGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoaW5zdGFuY2VUYWJsZU5hbWUse19pZDphcGkuQmlnTnVtYmVyKGlkKS50b051bWJlcigpfSk7bmZ0SW5zdGFuY2UmJm5mdEluc3RhbmNlLmFjY291bnQ9PT1maW5hbEZyb20mJigidSI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYidXNlciI9PT1maW5hbEZyb21UeXBlfHwiYyI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSkmJm5mdEluc3RhbmNlLmRlbGVnYXRlZFRvJiZ2b2lkIDA9PT1uZnRJbnN0YW5jZS5kZWxlZ2F0ZWRUby51bmRlbGVnYXRlQXQmJihuZnRJbnN0YW5jZS5kZWxlZ2F0ZWRUby51bmRlbGVnYXRlQXQ9Y29tcGxldGVUaW1lc3RhbXAsdW5kZWxlZ2F0aW9uLmlkcy5wdXNoKG5mdEluc3RhbmNlLl9pZCksYXdhaXQgYXBpLmRiLnVwZGF0ZShpbnN0YW5jZVRhYmxlTmFtZSxuZnRJbnN0YW5jZSksYXBpLmVtaXQoInVuZGVsZWdhdGVTdGFydCIse2Zyb206bmZ0SW5zdGFuY2UuZGVsZWdhdGVkVG8uYWNjb3VudCxmcm9tVHlwZTpuZnRJbnN0YW5jZS5kZWxlZ2F0ZWRUby5vd25lZEJ5LHN5bWJvbDpzeW1ib2wsaWQ6aWR9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZU5mdERlbGVnYXRpb25DaGFuZ2UiLHtzeW1ib2w6c3ltYm9sLG5mdDpuZnRJbnN0YW5jZSxhZGQ6ITF9KSl9dW5kZWxlZ2F0aW9uLmlkcy5sZW5ndGg+MCYmYXdhaXQgYXBpLmRiLmluc2VydCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHVuZGVsZWdhdGlvbil9fX19O2NvbnN0IHByb2Nlc3NVbmRlbGVnYXRpb249YXN5bmMgdW5kZWxlZ2F0aW9uPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxpZHM6aWRzfT11bmRlbGVnYXRpb24saW5zdGFuY2VUYWJsZU5hbWU9c3ltYm9sKyJpbnN0YW5jZXMiLGluc3RhbmNlcz1hd2FpdCBhcGkuZGIuZmluZChpbnN0YW5jZVRhYmxlTmFtZSx7X2lkOnskaW46aWRzfX0sNTAsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTxpbnN0YW5jZXMubGVuZ3RoO2krPTEpZGVsZXRlIGluc3RhbmNlc1tpXS5kZWxlZ2F0ZWRUbyxhd2FpdCBhcGkuZGIudXBkYXRlKGluc3RhbmNlVGFibGVOYW1lLGluc3RhbmNlc1tpXSx7ZGVsZWdhdGVkVG86IiJ9KTthd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsdW5kZWxlZ2F0aW9uKSxhcGkuZW1pdCgidW5kZWxlZ2F0ZURvbmUiLHtzeW1ib2w6c3ltYm9sLGlkczppZHN9KX07YWN0aW9ucy5jaGVja1BlbmRpbmdVbmRlbGVnYXRpb25zPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCkuZ2V0VGltZSgpO2xldCBwZW5kaW5nVW5kZWxlZ2F0aW9ucz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHtjb21wbGV0ZVRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSksbmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz1wZW5kaW5nVW5kZWxlZ2F0aW9ucy5sZW5ndGg7Zm9yKDtuYlBlbmRpbmdVbmRlbGVnYXRpb25zPjA7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJQZW5kaW5nVW5kZWxlZ2F0aW9ucztpbmRleCs9MSl7Y29uc3QgcGVuZGluZ1VuZGVsZWdhdGlvbj1wZW5kaW5nVW5kZWxlZ2F0aW9uc1tpbmRleF07YXdhaXQgcHJvY2Vzc1VuZGVsZWdhdGlvbihwZW5kaW5nVW5kZWxlZ2F0aW9uKX1wZW5kaW5nVW5kZWxlZ2F0aW9ucz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHtjb21wbGV0ZVRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSksbmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz1wZW5kaW5nVW5kZWxlZ2F0aW9ucy5sZW5ndGh9fX0sYWN0aW9ucy5jcmVhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25hbWU6bmFtZSxvcmdOYW1lOm9yZ05hbWUscHJvZHVjdE5hbWU6cHJvZHVjdE5hbWUsc3ltYm9sOnN5bWJvbCx1cmw6dXJsLG1heFN1cHBseTptYXhTdXBwbHksYXV0aG9yaXplZElzc3VpbmdBY2NvdW50czphdXRob3JpemVkSXNzdWluZ0FjY291bnRzLGF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzOmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bmZ0Q3JlYXRpb25GZWU6bmZ0Q3JlYXRpb25GZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOlVUSUxJVFlfVE9LRU5fU1lNQk9MfSksYXV0aG9yaXplZENyZWF0aW9uPSEhYXBpLkJpZ051bWJlcihuZnRDcmVhdGlvbkZlZSkubHRlKDApfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKG5mdENyZWF0aW9uRmVlKTtpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWRDcmVhdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBjcmVhdGlvbiBmZWVzIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmKHZvaWQgMD09PXVybHx8dXJsJiYic3RyaW5nIj09dHlwZW9mIHVybCkmJih2b2lkIDA9PT1vcmdOYW1lfHxvcmdOYW1lJiYic3RyaW5nIj09dHlwZW9mIG9yZ05hbWUpJiYodm9pZCAwPT09cHJvZHVjdE5hbWV8fHByb2R1Y3ROYW1lJiYic3RyaW5nIj09dHlwZW9mIHByb2R1Y3ROYW1lKSYmKHZvaWQgMD09PWF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHN8fGF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMmJiJvYmplY3QiPT10eXBlb2YgYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cyYmQXJyYXkuaXNBcnJheShhdXRob3JpemVkSXNzdWluZ0FjY291bnRzKSkmJih2b2lkIDA9PT1hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0c3x8YXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMmJiJvYmplY3QiPT10eXBlb2YgYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMmJkFycmF5LmlzQXJyYXkoYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMpKSYmKHZvaWQgMD09PW1heFN1cHBseXx8bWF4U3VwcGx5JiYic3RyaW5nIj09dHlwZW9mIG1heFN1cHBseSYmIWFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5pc05hTigpKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGEoc3ltYm9sKSYmYXBpLnZhbGlkYXRvci5pc1VwcGVyY2FzZShzeW1ib2wpJiZzeW1ib2wubGVuZ3RoPjAmJnN5bWJvbC5sZW5ndGg8PTEwLCJpbnZhbGlkIHN5bWJvbDogdXBwZXJjYXNlIGxldHRlcnMgb25seSwgbWF4IGxlbmd0aCBvZiAxMCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PVJFU0VSVkVEX1NZTUJPTFNbc3ltYm9sXXx8YXBpLnNlbmRlcj09PVJFU0VSVkVEX1NZTUJPTFNbc3ltYm9sXSwiY2Fubm90IHVzZSB0aGlzIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QobmFtZSwiICIpKSYmbmFtZS5sZW5ndGg+MCYmbmFtZS5sZW5ndGg8PTUwLCJpbnZhbGlkIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1vcmdOYW1lfHxhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KG9yZ05hbWUsIiAiKSkmJm9yZ05hbWUubGVuZ3RoPjAmJm9yZ05hbWUubGVuZ3RoPD01MCwiaW52YWxpZCBvcmcgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXByb2R1Y3ROYW1lfHxhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KHByb2R1Y3ROYW1lLCIgIikpJiZwcm9kdWN0TmFtZS5sZW5ndGg+MCYmcHJvZHVjdE5hbWUubGVuZ3RoPD01MCwiaW52YWxpZCBwcm9kdWN0IG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT11cmx8fHVybC5sZW5ndGg8PTI1NSwiaW52YWxpZCB1cmw6IG1heCBsZW5ndGggb2YgMjU1IikmJmFwaS5hc3NlcnQodm9pZCAwPT09bWF4U3VwcGx5fHxhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkuZ3QoMCksIm1heFN1cHBseSBtdXN0IGJlIHBvc2l0aXZlIikmJmFwaS5hc3NlcnQodm9pZCAwPT09bWF4U3VwcGx5fHxhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkubHRlKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSxgbWF4U3VwcGx5IG11c3QgYmUgbG93ZXIgdGhhbiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWApKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsPT09bmZ0LCJzeW1ib2wgYWxyZWFkeSBleGlzdHMiKSl7aWYoYXBpLkJpZ051bWJlcihuZnRDcmVhdGlvbkZlZSkuZ3QoMCkpe2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDpVVElMSVRZX1RPS0VOX1NZTUJPTCxxdWFudGl0eTpuZnRDcmVhdGlvbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7aWYoIWlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxhcGkuc2VuZGVyLCJudWxsIixVVElMSVRZX1RPS0VOX1NZTUJPTCxuZnRDcmVhdGlvbkZlZSwidHJhbnNmZXIiKSlyZXR1cm4hMX1jb25zdCBmaW5hbE1heFN1cHBseT12b2lkIDA9PT1tYXhTdXBwbHk/MDphcGkuQmlnTnVtYmVyKG1heFN1cHBseSkuaW50ZWdlclZhbHVlKGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTikudG9OdW1iZXIoKSxmaW5hbE9yZ05hbWU9dm9pZCAwPT09b3JnTmFtZT8iIjpvcmdOYW1lLGZpbmFsUHJvZHVjdE5hbWU9dm9pZCAwPT09cHJvZHVjdE5hbWU/IiI6cHJvZHVjdE5hbWU7bGV0IG1ldGFkYXRhPXt1cmw6dm9pZCAwPT09dXJsPyIiOnVybH07bWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpO2NvbnN0IGluaXRpYWxBY2NvdW50TGlzdD12b2lkIDA9PT1hdXRob3JpemVkSXNzdWluZ0FjY291bnRzP1thcGkuc2VuZGVyXTpbXSxuZXdOZnQ9e2lzc3VlcjphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2wsbmFtZTpuYW1lLG9yZ05hbWU6ZmluYWxPcmdOYW1lLHByb2R1Y3ROYW1lOmZpbmFsUHJvZHVjdE5hbWUsbWV0YWRhdGE6bWV0YWRhdGEsbWF4U3VwcGx5OmZpbmFsTWF4U3VwcGx5LHN1cHBseTowLGNpcmN1bGF0aW5nU3VwcGx5OjAsZGVsZWdhdGlvbkVuYWJsZWQ6ITEsdW5kZWxlZ2F0aW9uQ29vbGRvd246MCxhdXRob3JpemVkSXNzdWluZ0FjY291bnRzOmluaXRpYWxBY2NvdW50TGlzdCxhdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0czpbXSxwcm9wZXJ0aWVzOnt9LGdyb3VwQnk6W119LGluc3RhbmNlVGFibGVOYW1lPXN5bWJvbCsiaW5zdGFuY2VzIjtyZXR1cm4hMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cyhpbnN0YW5jZVRhYmxlTmFtZSkmJmF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZShpbnN0YW5jZVRhYmxlTmFtZSxbImFjY291bnQiLCJvd25lZEJ5Il0pLGF3YWl0IGFwaS5kYi5pbnNlcnQoIm5mdHMiLG5ld05mdCksdm9pZCAwIT09YXV0aG9yaXplZElzc3VpbmdBY2NvdW50cyYmYXdhaXQgYWN0aW9ucy5hZGRBdXRob3JpemVkSXNzdWluZ0FjY291bnRzKHthY2NvdW50czphdXRob3JpemVkSXNzdWluZ0FjY291bnRzLHN5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLHZvaWQgMCE9PWF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzJiZhd2FpdCBhY3Rpb25zLmFkZEF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzKHtjb250cmFjdHM6YXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMsc3ltYm9sOnN5bWJvbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksITB9fXJldHVybiExfSxhY3Rpb25zLmlzc3VlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGZyb21UeXBlOmZyb21UeXBlLHRvOnRvLHRvVHlwZTp0b1R5cGUsZmVlU3ltYm9sOmZlZVN5bWJvbCxsb2NrVG9rZW5zOmxvY2tUb2tlbnMsbG9ja05mdHM6bG9ja05mdHMsc291bEJvdW5kOnNvdWxCb3VuZCxwcm9wZXJ0aWVzOnByb3BlcnRpZXMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleSxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQsdHlwZXM9WyJ1c2VyIiwiY29udHJhY3QiXSxmaW5hbFRvVHlwZT12b2lkIDA9PT10b1R5cGU/InVzZXIiOnRvVHlwZSxmaW5hbEZyb21UeXBlPXZvaWQgMD09PWZyb21UeXBlPyJ1c2VyIjpmcm9tVHlwZSxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtuZnRJc3N1YW5jZUZlZTpuZnRJc3N1YW5jZUZlZX09cGFyYW1zO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmZpbmFsRnJvbVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZmluYWxGcm9tVHlwZSYmdHlwZXMuaW5jbHVkZXMoZmluYWxGcm9tVHlwZSkmJihjYWxsaW5nQ29udHJhY3RJbmZvfHx2b2lkIDA9PT1jYWxsaW5nQ29udHJhY3RJbmZvJiYidXNlciI9PT1maW5hbEZyb21UeXBlKSYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJmZpbmFsVG9UeXBlJiYic3RyaW5nIj09dHlwZW9mIGZpbmFsVG9UeXBlJiZ0eXBlcy5pbmNsdWRlcyhmaW5hbFRvVHlwZSkmJmZlZVN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBmZWVTeW1ib2wmJmZlZVN5bWJvbCBpbiBuZnRJc3N1YW5jZUZlZSYmKHZvaWQgMD09PXByb3BlcnRpZXN8fHByb3BlcnRpZXMmJiJvYmplY3QiPT10eXBlb2YgcHJvcGVydGllcykmJih2b2lkIDA9PT1sb2NrVG9rZW5zfHxsb2NrVG9rZW5zJiYib2JqZWN0Ij09dHlwZW9mIGxvY2tUb2tlbnMpJiYodm9pZCAwPT09bG9ja05mdHN8fGxvY2tOZnRzJiYib2JqZWN0Ij09dHlwZW9mIGxvY2tOZnRzJiZBcnJheS5pc0FycmF5KGxvY2tOZnRzKSkmJih2b2lkIDA9PT1zb3VsQm91bmR8fCJib29sZWFuIj09dHlwZW9mIHNvdWxCb3VuZCksImludmFsaWQgcGFyYW1zIikmJih2b2lkIDA9PT1sb2NrTmZ0c3x8aXNWYWxpZE5mdElkQXJyYXkobG9ja05mdHMpKSl7Y29uc3QgZmluYWxUbz0idXNlciI9PT1maW5hbFRvVHlwZT90by50cmltKCkudG9Mb3dlckNhc2UoKTp0by50cmltKCksdG9WYWxpZD0idXNlciI9PT1maW5hbFRvVHlwZT9pc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGgoZmluYWxUbyk6aXNWYWxpZENvbnRyYWN0TGVuZ3RoKGZpbmFsVG8pLGZpbmFsRnJvbT0idXNlciI9PT1maW5hbEZyb21UeXBlP2FwaS5zZW5kZXI6Y2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lLGJhbGFuY2VUYWJsZU5hbWU9InVzZXIiPT09ZmluYWxGcm9tVHlwZT8iYmFsYW5jZXMiOiJjb250cmFjdHNCYWxhbmNlcyI7aWYoYXBpLmFzc2VydCh0b1ZhbGlkLCJpbnZhbGlkIHRvIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KSxmZWVUb2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpmZWVTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnQsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG51bGwhPT1mZWVUb2tlbiwiZmVlIHN5bWJvbCBkb2VzIG5vdCBleGlzdCIpKXtjb25zdCBpbnN0YW5jZVRhYmxlTmFtZT1zeW1ib2wrImluc3RhbmNlcyI7aWYoYXBpLmFzc2VydCgiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSYmbmZ0LmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzLmluY2x1ZGVzKGZpbmFsRnJvbSl8fCJ1c2VyIj09PWZpbmFsRnJvbVR5cGUmJm5mdC5hdXRob3JpemVkSXNzdWluZ0FjY291bnRzLmluY2x1ZGVzKGZpbmFsRnJvbSksIm5vdCBhbGxvd2VkIHRvIGlzc3VlIHRva2VucyIpJiZhcGkuYXNzZXJ0KDA9PT1uZnQubWF4U3VwcGx5fHxuZnQuc3VwcGx5PG5mdC5tYXhTdXBwbHksIm1heCBzdXBwbHkgbGltaXQgcmVhY2hlZCIpKXtjb25zdCBwcm9wZXJ0eUNvdW50PU9iamVjdC5rZXlzKG5mdC5wcm9wZXJ0aWVzKS5sZW5ndGgscHJvcGVydHlGZWU9YXBpLkJpZ051bWJlcihuZnRJc3N1YW5jZUZlZVtmZWVTeW1ib2xdKS5tdWx0aXBsaWVkQnkocHJvcGVydHlDb3VudCksaXNzdWFuY2VGZWU9Y2FsY3VsYXRlQmFsYW5jZShuZnRJc3N1YW5jZUZlZVtmZWVTeW1ib2xdLHByb3BlcnR5RmVlLGZlZVRva2VuLnByZWNpc2lvbiwhMCksZmVlVG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIixiYWxhbmNlVGFibGVOYW1lLHthY2NvdW50OmZpbmFsRnJvbSxzeW1ib2w6ZmVlU3ltYm9sfSksYXV0aG9yaXplZENyZWF0aW9uPSEhYXBpLkJpZ051bWJlcihpc3N1YW5jZUZlZSkubHRlKDApfHxmZWVUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIoZmVlVG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShpc3N1YW5jZUZlZSk7aWYobG9ja1Rva2Vucyl7Y29uc3QgaXNMb2NrVmFsaWQ9YXdhaXQgaXNWYWxpZFRva2VuQmFza2V0KGxvY2tUb2tlbnMsYmFsYW5jZVRhYmxlTmFtZSxmaW5hbEZyb20sZmVlU3ltYm9sLGlzc3VhbmNlRmVlKTtpZighYXBpLmFzc2VydChpc0xvY2tWYWxpZCwiaW52YWxpZCBiYXNrZXQgb2YgdG9rZW5zIHRvIGxvY2sgKGNhbm5vdCBsb2NrIG1vcmUgdGhhbiAxMCB0b2tlbiB0eXBlczsgaXNzdWluZyBhY2NvdW50IG11c3QgaGF2ZSBlbm91Z2ggYmFsYW5jZSkiKSlyZXR1cm4hMX1sZXQgZmluYWxQcm9wZXJ0aWVzPXt9O2lmKHZvaWQgMCE9PXByb3BlcnRpZXMpe3RyeXtpZighaXNWYWxpZERhdGFQcm9wZXJ0aWVzKGZpbmFsRnJvbSxmaW5hbEZyb21UeXBlLG5mdCxwcm9wZXJ0aWVzKSlyZXR1cm4hMX1jYXRjaChlKXtyZXR1cm4hMX1maW5hbFByb3BlcnRpZXM9cHJvcGVydGllc31pZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWRDcmVhdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBpc3N1YW5jZSBmZWVzIikpe2lmKGFwaS5CaWdOdW1iZXIoaXNzdWFuY2VGZWUpLmd0KDApKWlmKCJjb250cmFjdCI9PT1maW5hbEZyb21UeXBlKXtjb25zdCByZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zRnJvbUNhbGxpbmdDb250cmFjdCgibnVsbCIsZmVlU3ltYm9sLGlzc3VhbmNlRmVlLCJ1c2VyIik7aWYoIWFwaS5hc3NlcnQoaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGZpbmFsRnJvbSwibnVsbCIsZmVlU3ltYm9sLGlzc3VhbmNlRmVlLCJ0cmFuc2ZlckZyb21Db250cmFjdCIpLCJ1bmFibGUgdG8gdHJhbnNmZXIgaXNzdWFuY2UgZmVlIikpcmV0dXJuITF9ZWxzZXtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6ZmVlU3ltYm9sLHF1YW50aXR5Omlzc3VhbmNlRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZighYXBpLmFzc2VydChpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsZmluYWxGcm9tLCJudWxsIixmZWVTeW1ib2wsaXNzdWFuY2VGZWUsInRyYW5zZmVyIiksInVuYWJsZSB0byB0cmFuc2ZlciBpc3N1YW5jZSBmZWUiKSlyZXR1cm4hMX1jb25zdCBmaW5hbExvY2tUb2tlbnM9e307aWYobG9ja1Rva2Vucylmb3IoY29uc3RbbG9ja3N5bWJvbCxxdWFudGl0eV1vZiBPYmplY3QuZW50cmllcyhsb2NrVG9rZW5zKSlpZigiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSl7Y29uc3QgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2Vuc0Zyb21DYWxsaW5nQ29udHJhY3QoIm5mdCIsbG9ja3N5bWJvbCxxdWFudGl0eSwiY29udHJhY3QiKTtpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsZmluYWxGcm9tLCJuZnQiLGxvY2tzeW1ib2wscXVhbnRpdHksInRyYW5zZmVyRnJvbUNvbnRyYWN0IikmJihmaW5hbExvY2tUb2tlbnNbbG9ja3N5bWJvbF09cXVhbnRpdHkpfWVsc2V7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXJUb0NvbnRyYWN0Iix7dG86Im5mdCIsc3ltYm9sOmxvY2tzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2lzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxmaW5hbEZyb20sIm5mdCIsbG9ja3N5bWJvbCxxdWFudGl0eSwidHJhbnNmZXJUb0NvbnRyYWN0IikmJihmaW5hbExvY2tUb2tlbnNbbG9ja3N5bWJvbF09cXVhbnRpdHkpfWxldCBmaW5hbExvY2tOZnRzPVtdO2lmKGxvY2tOZnRzJiZsb2NrTmZ0cy5sZW5ndGg+MCl7ZmluYWxMb2NrTmZ0cz0oYXdhaXQgdHJhbnNmZXJBbmRWZXJpZnlOZnRzKGZpbmFsRnJvbSxmaW5hbEZyb21UeXBlLCJuZnQiLCJjb250cmFjdCIsbG9ja05mdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm8pKS5zdWNjZXNzfWNvbnN0IG93bmVkQnk9InVzZXIiPT09ZmluYWxUb1R5cGU/InUiOiJjIjtsZXQgbmV3SW5zdGFuY2U9e307bmV3SW5zdGFuY2U9ZmluYWxMb2NrTmZ0cy5sZW5ndGg+MD97YWNjb3VudDpmaW5hbFRvLHNvdWxCb3VuZDohIXNvdWxCb3VuZCxvd25lZEJ5Om93bmVkQnksbG9ja2VkVG9rZW5zOmZpbmFsTG9ja1Rva2Vucyxsb2NrZWROZnRzOmZpbmFsTG9ja05mdHMscHJvcGVydGllczpmaW5hbFByb3BlcnRpZXN9OnthY2NvdW50OmZpbmFsVG8sc291bEJvdW5kOiEhc291bEJvdW5kLG93bmVkQnk6b3duZWRCeSxsb2NrZWRUb2tlbnM6ZmluYWxMb2NrVG9rZW5zLHByb3BlcnRpZXM6ZmluYWxQcm9wZXJ0aWVzfTtjb25zdCByZXN1bHQ9YXdhaXQgYXBpLmRiLmluc2VydChpbnN0YW5jZVRhYmxlTmFtZSxuZXdJbnN0YW5jZSk7cmV0dXJuIG5mdC5zdXBwbHkrPTEsIm51bGwiPT09ZmluYWxUbyYmImNvbnRyYWN0IiE9PWZpbmFsVG9UeXBlfHwobmZ0LmNpcmN1bGF0aW5nU3VwcGx5Kz0xKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixuZnQpLGFwaS5lbWl0KCJpc3N1ZSIse2Zyb206ZmluYWxGcm9tLGZyb21UeXBlOmZpbmFsRnJvbVR5cGUsdG86ZmluYWxUbyx0b1R5cGU6ZmluYWxUb1R5cGUsc3ltYm9sOnN5bWJvbCxsb2NrZWRUb2tlbnM6ZmluYWxMb2NrVG9rZW5zLGxvY2tlZE5mdHM6ZmluYWxMb2NrTmZ0cyxzb3VsQm91bmQ6ISFzb3VsQm91bmQscHJvcGVydGllczpmaW5hbFByb3BlcnRpZXMsaWQ6cmVzdWx0Ll9pZH0pLCEwfX19fX1yZXR1cm4hMX0sYWN0aW9ucy5pc3N1ZU11bHRpcGxlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpbnN0YW5jZXM6aW5zdGFuY2VzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGluc3RhbmNlcyYmIm9iamVjdCI9PXR5cGVvZiBpbnN0YW5jZXMmJkFycmF5LmlzQXJyYXkoaW5zdGFuY2VzKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChpbnN0YW5jZXMubGVuZ3RoPD0xMCwiY2Fubm90IGlzc3VlIG1vcmUgdGhhbiAxMCBORlQgaW5zdGFuY2VzIGF0IG9uY2UiKSl7bGV0IGNvbnRhaW5lckNvdW50PTA7aWYoaW5zdGFuY2VzLmZvckVhY2goKGluc3RhbmNlPT57aW5zdGFuY2UmJmluc3RhbmNlLmxvY2tOZnRzJiYoY29udGFpbmVyQ291bnQrPTEpfSkpLGFwaS5hc3NlcnQoY29udGFpbmVyQ291bnQ8PTEsImNhbm5vdCBpc3N1ZSBtb3JlIHRoYW4gMSBjb250YWluZXIgTkZUIGluc3RhbmNlcyBhdCBvbmNlIikmJmFwaS5hc3NlcnQoMD09PWNvbnRhaW5lckNvdW50fHxjb250YWluZXJDb3VudD09PWluc3RhbmNlcy5sZW5ndGgsImNhbm5vdCBpc3N1ZSBhIG1peCBvZiBjb250YWluZXIgYW5kIG5vbi1jb250YWluZXIgTkZUIGluc3RhbmNlcyBzaW11bHRhbmVvdXNseSIpKWZvcihsZXQgaT0wO2k8aW5zdGFuY2VzLmxlbmd0aDtpKz0xKWlmKGluc3RhbmNlc1tpXSl7Y29uc3R7c3ltYm9sOnN5bWJvbCxmcm9tVHlwZTpmcm9tVHlwZSx0bzp0byx0b1R5cGU6dG9UeXBlLGZlZVN5bWJvbDpmZWVTeW1ib2wsbG9ja1Rva2Vuczpsb2NrVG9rZW5zLHNvdWxCb3VuZDpzb3VsQm91bmQsbG9ja05mdHM6bG9ja05mdHMscHJvcGVydGllczpwcm9wZXJ0aWVzfT1pbnN0YW5jZXNbaV07YXdhaXQgYWN0aW9ucy5pc3N1ZSh7c3ltYm9sOnN5bWJvbCxmcm9tVHlwZTpmcm9tVHlwZSx0bzp0byx0b1R5cGU6dG9UeXBlLGZlZVN5bWJvbDpmZWVTeW1ib2wsbG9ja1Rva2Vuczpsb2NrVG9rZW5zLHNvdWxCb3VuZDpzb3VsQm91bmQsbG9ja05mdHM6bG9ja05mdHMscHJvcGVydGllczpwcm9wZXJ0aWVzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfSl9fX07"}}}

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"nftairdrops","params":"","code":"Y29uc3QgQ09OVFJBQ1RfTkFNRT0ibmZ0YWlyZHJvcHMiLFVUSUxJVFlfVE9LRU5fU1lNQk9MPSJCRUUiLFVUSUxJVFlfVE9LRU5fUFJFQ0lTSU9OPTgsQUxMT1dFRF9UT19UWVBFUz1bInVzZXIiLCJjb250cmFjdCJdLEFMTE9XRURfRlJPTV9UWVBFUz1bInVzZXIiLCJjb250cmFjdCJdLGlzVmFsaWRBY2NvdW50TmFtZT0obmFtZSxhY2NvdW50VHlwZSk9PiEhQUxMT1dFRF9UT19UWVBFUy5pbmNsdWRlcyhhY2NvdW50VHlwZSkmJigiY29udHJhY3QiPT09YWNjb3VudFR5cGU/YXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhuYW1lKSYmbmFtZS5sZW5ndGg+PTMmJm5hbWUubGVuZ3RoPD01MDphcGkuaXNWYWxpZEFjY291bnROYW1lKG5hbWUpKSxhcnJheUhhc0R1cGxpY2F0ZXM9YXJyPT5uZXcgU2V0KGFycikuc2l6ZSE9PWFyci5sZW5ndGgsdG9rZW5UcmFuc2ZlclZlcmlmaWVkPSh7dHJhbnNhY3Rpb246dHJhbnNhY3Rpb24sZnJvbTpmcm9tLGZyb21UeXBlOmZyb21UeXBlLHRvOnRvLHRvVHlwZTp0b1R5cGUscXVhbnRpdHk6cXVhbnRpdHl9KT0+e2NvbnN0e2Vycm9yczplcnJvcnMsZXZlbnRzOmV2ZW50c309dHJhbnNhY3Rpb247bGV0IGV2ZW50VHlwZT0idHJhbnNmZXIiO3JldHVybiJjb250cmFjdCI9PT1mcm9tVHlwZT9ldmVudFR5cGU9InRyYW5zZmVyRnJvbUNvbnRyYWN0IjoiY29udHJhY3QiPT09dG9UeXBlJiYoZXZlbnRUeXBlPSJ0cmFuc2ZlclRvQ29udHJhY3QiKSwhKHZvaWQgMCE9PWVycm9yc3x8IWV2ZW50c3x8dm9pZCAwPT09ZXZlbnRzLmZpbmQoKGVsPT4idG9rZW5zIj09PWVsLmNvbnRyYWN0JiZlbC5ldmVudD09PWV2ZW50VHlwZSYmIkJFRSI9PT1lbC5kYXRhLnN5bWJvbCYmZWwuZGF0YS5mcm9tPT09ZnJvbSYmZWwuZGF0YS50bz09PXRvJiZhcGkuQmlnTnVtYmVyKGVsLmRhdGEucXVhbnRpdHkpLmVxKHF1YW50aXR5KSkpKX0sbmZ0VHJhbnNmZXJWZXJpZmllZD1hc3luYyh7c3ltYm9sOnN5bWJvbCx0bzp0byx0b1R5cGU6dG9UeXBlLGlkczppZHN9KT0+e2NvbnN0IG5ld093bmVkQnk9ImNvbnRyYWN0Ij09PXRvVHlwZT8iYyI6InUiO3JldHVybiBudWxsPT09YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLHN5bWJvbCsiaW5zdGFuY2VzIix7X2lkOnskaW46aWRzLm1hcCgoeD0+YXBpLkJpZ051bWJlcih4KS50b051bWJlcigpKSl9LCRvcjpbe2FjY291bnQ6eyRuZTp0b319LHtvd25lZEJ5OnskbmU6bmV3T3duZWRCeX19XX0pfSxidXJuRmVlPWFzeW5jKHtmcm9tOmZyb20sZnJvbVR5cGU6ZnJvbVR5cGUscXVhbnRpdHk6cXVhbnRpdHl9KT0+e2lmKGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmVxKDApKXJldHVybiEwO2xldCB0cmFuc2FjdGlvbj1udWxsO3JldHVybiB0cmFuc2FjdGlvbj0iY29udHJhY3QiPT09ZnJvbVR5cGU/YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zRnJvbUNhbGxpbmdDb250cmFjdCgibnVsbCIsIkJFRSIscXVhbnRpdHksInVzZXIiKTphd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7ZnJvbTpmcm9tLHRvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6cXVhbnRpdHl9KSx0b2tlblRyYW5zZmVyVmVyaWZpZWQoe3RyYW5zYWN0aW9uOnRyYW5zYWN0aW9uLGZyb206ZnJvbSxmcm9tVHlwZTpmcm9tVHlwZSx0bzoibnVsbCIsdG9UeXBlOiJ1c2VyIixxdWFudGl0eTpxdWFudGl0eX0pfSxyZXNlcnZlTkZUcz1hc3luYyh7ZnJvbVR5cGU6ZnJvbVR5cGUsc3ltYm9sOnN5bWJvbCxpZHM6aWRzLGJhdGNoU2l6ZTpiYXRjaFNpemV9KT0+e2ZvcihsZXQgaT0wLG49aWRzLmxlbmd0aDtpPG47aSs9YmF0Y2hTaXplKXtpZih2b2lkIDAhPT0oYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJuZnQiLCJ0cmFuc2ZlciIse2Zyb21UeXBlOmZyb21UeXBlLHRvOiJuZnRhaXJkcm9wcyIsdG9UeXBlOiJjb250cmFjdCIsbmZ0czpbe3N5bWJvbDpzeW1ib2wsaWRzOmlkcy5zbGljZShpLGkrYmF0Y2hTaXplKX1dLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTohMH0pKS5lcnJvcnMpcmV0dXJuITF9cmV0dXJuIG5mdFRyYW5zZmVyVmVyaWZpZWQoe3N5bWJvbDpzeW1ib2wsdG86Im5mdGFpcmRyb3BzIix0b1R5cGU6ImNvbnRyYWN0IixpZHM6aWRzfSl9LHJlaW1idXJzZU5GVHM9YXN5bmMoe3RvOnRvLHRvVHlwZTp0b1R5cGUsc3ltYm9sOnN5bWJvbCxpZHM6aWRzLGJhdGNoU2l6ZTpiYXRjaFNpemV9KT0+e2NvbnN0IHJlc2VydmVkTmZ0cz1bXTtmb3IobGV0IGk9MCxuPWlkcy5sZW5ndGg7aTxuO2krPTFlMyl7Y29uc3QgbmZ0c0luQ29udHJhY3Q9YXdhaXQgYXBpLmRiLmZpbmRJblRhYmxlKCJuZnQiLHN5bWJvbCsiaW5zdGFuY2VzIix7X2lkOnskaW46aWRzLm1hcCgoeD0+YXBpLkJpZ051bWJlcih4KS50b051bWJlcigpKSl9LGFjY291bnQ6Im5mdGFpcmRyb3BzIixvd25lZEJ5OiJjIn0sMWUzLGksW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO3Jlc2VydmVkTmZ0cy5wdXNoKC4uLm5mdHNJbkNvbnRyYWN0Lm1hcCgoeD0+YXBpLkJpZ051bWJlcih4Ll9pZCkudG9TdHJpbmcoKSkpKX1mb3IobGV0IGk9MCxuPXJlc2VydmVkTmZ0cy5sZW5ndGg7aTxuO2krPWJhdGNoU2l6ZSlhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsInRyYW5zZmVyIix7ZnJvbVR5cGU6ImNvbnRyYWN0Iix0bzp0byx0b1R5cGU6dG9UeXBlLG5mdHM6W3tzeW1ib2w6c3ltYm9sLGlkczpyZXNlcnZlZE5mdHMuc2xpY2UoaSxpK2JhdGNoU2l6ZSl9XSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6ITB9KTtyZXR1cm4gbmZ0VHJhbnNmZXJWZXJpZmllZCh7c3ltYm9sOnN5bWJvbCx0bzp0byx0b1R5cGU6dG9UeXBlLGlkczpyZXNlcnZlZE5mdHN9KX0scGFyc2VBbmRWYWxpZGF0ZUFpcmRyb3A9YXN5bmMoe3N5bWJvbDpzeW1ib2wsc2VuZGVyOnNlbmRlcixzZW5kZXJUeXBlOnNlbmRlclR5cGUsbGlzdDpsaXN0LHN0YXJ0QmxvY2tOdW1iZXI6c3RhcnRCbG9ja051bWJlcixzb2Z0RmFpbDpzb2Z0RmFpbD0hMCxwYXJhbXM6cGFyYW1zfSk9Pntjb25zdCBpbnN0YW5jZVRhYmxlTmFtZT1zeW1ib2wrImluc3RhbmNlcyIsYWlyZHJvcD17aXNWYWxpZDohMSxzb2Z0RmFpbDohMSE9PXNvZnRGYWlsLGJsb2NrTnVtYmVyOnN0YXJ0QmxvY2tOdW1iZXJ8fGFwaS5ibG9ja051bWJlcisxLGFpcmRyb3BJZDphcGkudHJhbnNhY3Rpb25JZCxzeW1ib2w6c3ltYm9sLGZyb206c2VuZGVyLGZyb21UeXBlOnNlbmRlclR5cGUsbGlzdDpsaXN0LG5mdElkczpbXSx0b3RhbEZlZTpudWxsfTtpZihhcGkuYXNzZXJ0KHBhcmFtcy5lbmFibGVkRnJvbVR5cGVzLmluY2x1ZGVzKHNlbmRlclR5cGUpLCJpbnZhbGlkIGZyb21UeXBlIikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmFwaS52YWxpZGF0b3IuaXNBbHBoYShzeW1ib2wpJiZhcGkudmFsaWRhdG9yLmlzVXBwZXJjYXNlKHN5bWJvbCkmJnN5bWJvbC5sZW5ndGg+MCYmbnVsbCE9PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpzeW1ib2x9KSwiaW52YWxpZCBzeW1ib2wiKSYmYXBpLmFzc2VydChBcnJheS5pc0FycmF5KGxpc3QpJiZsaXN0Lmxlbmd0aD4wJiZhcGkuYXNzZXJ0KGxpc3QubGVuZ3RoPD1wYXJhbXMubWF4VHJhbnNhY3Rpb25zUGVyQWlyZHJvcCwiZXhjZWVkZWQgYWlyZHJvcCB0cmFuc2FjdGlvbnMgbGltaXQiKSYmbGlzdC5ldmVyeSgoKGVsZW1lbnQsaW5kZXgpPT57aWYoIm9iamVjdCI9PXR5cGVvZiBlbGVtZW50KXtjb25zdHt0bzp0byxpZHM6aWRzfT1lbGVtZW50LHRvVHlwZT1lbGVtZW50LnRvVHlwZXx8InVzZXIiO2lmKGFwaS5hc3NlcnQoaXNWYWxpZEFjY291bnROYW1lKHRvLHRvVHlwZSksYGludmFsaWQgYWNjb3VudCAke3RvfSBhdCBpbmRleCAke2luZGV4fWApJiZhcGkuYXNzZXJ0KEFycmF5LmlzQXJyYXkoaWRzKSYmaWRzLmxlbmd0aD4wJiZpZHMubGVuZ3RoPD1wYXJhbXMubWF4VHJhbnNhY3Rpb25zUGVyQWNjb3VudCYmaWRzLmV2ZXJ5KChpPT4ic3RyaW5nIj09dHlwZW9mIGkmJmFwaS5CaWdOdW1iZXIoaSkuZ3QoMCkpKSxgaW52YWxpZCBuZnQgaWRzIGFycmF5IGZvciBhY2NvdW50ICR7dG99IGF0IGluZGV4ICR7aW5kZXh9YCkmJmFwaS5hc3NlcnQoYWlyZHJvcC5uZnRJZHMubGVuZ3RoPHBhcmFtcy5tYXhUcmFuc2FjdGlvbnNQZXJBaXJkcm9wLCJleGNlZWRlZCBhaXJkcm9wIHRyYW5zYWN0aW9ucyBsaW1pdCIpKXJldHVybiBhaXJkcm9wLm5mdElkcy5wdXNoKC4uLmlkcyksITB9cmV0dXJuITF9KSksImludmFsaWQgbGlzdCIpJiZhcGkuYXNzZXJ0KCFhcnJheUhhc0R1cGxpY2F0ZXMoYWlyZHJvcC5uZnRJZHMpLCJhaXJkcm9wIGxpc3QgY29udGFpbnMgZHVwbGljYXRlIG5mdHMiKSl7Y29uc3Qgb3duZWRCeVR5cGU9ImNvbnRyYWN0Ij09PXNlbmRlclR5cGU/ImMiOiJ1IixyZXN1bHQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLGluc3RhbmNlVGFibGVOYW1lLHtfaWQ6eyRpbjphaXJkcm9wLm5mdElkcy5tYXAoKHg9PmFwaS5CaWdOdW1iZXIoeCkudG9OdW1iZXIoKSkpfSwkb3I6W3thY2NvdW50OnskbmU6c2VuZGVyfX0se293bmVkQnk6eyRuZTpvd25lZEJ5VHlwZX19LHtkZWxlZ2F0ZWRUbzp7JGV4aXN0czohMH19LHtzb3VsQm91bmQ6ITB9XX0pO2FwaS5hc3NlcnQobnVsbD09PXJlc3VsdCwiY2Fubm90IGFpcmRyb3AgbmZ0cyB0aGF0IGFyZSBkZWxlZ2F0ZWQgb3Igbm90IG93bmVkIGJ5IHRoaXMgYWNjb3VudCBvciBzb3VsQm91bmQiKSYmYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGFpcmRyb3AuYmxvY2tOdW1iZXIpJiZhaXJkcm9wLmJsb2NrTnVtYmVyPmFwaS5ibG9ja051bWJlciwiaW52YWxpZCBzdGFydEJsb2NrTnVtYmVyIikmJihhaXJkcm9wLnRvdGFsRmVlPWFwaS5CaWdOdW1iZXIocGFyYW1zLmZlZVBlclRyYW5zYWN0aW9uKS50aW1lcyhhaXJkcm9wLm5mdElkcy5sZW5ndGgpLnRvRml4ZWQoOCksYWlyZHJvcC5pc1ZhbGlkPSEwKX1yZXR1cm4gYWlyZHJvcH0scHJvY2Vzc0FpcmRyb3A9YXN5bmMoYWlyZHJvcCxiYXRjaFNpemUpPT57Y29uc3R7c29mdEZhaWw6c29mdEZhaWwsc3ltYm9sOnN5bWJvbCxsaXN0Omxpc3QsbmZ0SWRzOm5mdElkc309YWlyZHJvcCxwcm9jZXNzZWQ9W10sZmFpbGVkPVtdO2ZvcihsZXQgaT1saXN0Lmxlbmd0aC0xO2k+PTA7aS09MSl7Y29uc3R7dG86dG8sdG9UeXBlOnRvVHlwZSxpZHM6aWRzfT1saXN0LnBvcCgpLGJhdGNoPWlkcy5zcGxpY2UoMCxiYXRjaFNpemUtcHJvY2Vzc2VkLmxlbmd0aCk7aWYoaWRzLmxlbmd0aD4wJiZsaXN0LnB1c2goe3RvOnRvLHRvVHlwZTp0b1R5cGUsaWRzOmlkc30pLGJhdGNoLmxlbmd0aD4wKXtjb25zdCB0cmFuc2Zlcj1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsInRyYW5zZmVyIix7ZnJvbVR5cGU6ImNvbnRyYWN0Iix0bzp0byx0b1R5cGU6dG9UeXBlLG5mdHM6W3tzeW1ib2w6c3ltYm9sLGlkczpiYXRjaH1dLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTohMH0pO2lmKHZvaWQgMCE9PXRyYW5zZmVyLmVycm9ycyl7Y29uc3Qgc3VjY2Vzcz10cmFuc2Zlci5ldmVudHM/dHJhbnNmZXIuZXZlbnRzLm1hcCgoeD0+eC5kYXRhLmlkKSk6W107ZmFpbGVkLnB1c2goLi4uYmF0Y2guZmlsdGVyKCh4PT4hc3VjY2Vzcy5pbmNsdWRlcyh4KSkpKX1pZihmYWlsZWQubGVuZ3RoPjAmJiEwIT09c29mdEZhaWwpe2FpcmRyb3AuaXNWYWxpZD0hMTticmVha319aWYocHJvY2Vzc2VkLnB1c2goLi4uYmF0Y2gpPj1iYXRjaFNpemUpYnJlYWt9cmV0dXJuIDA9PT1saXN0Lmxlbmd0aCYmKGFpcmRyb3AuaXNWYWxpZD0hMSksbmZ0SWRzLnNwbGljZSgwLG5mdElkcy5sZW5ndGgsLi4ubmZ0SWRzLmZpbHRlcigoeD0+ZmFpbGVkLmluY2x1ZGVzKHgpfHwhcHJvY2Vzc2VkLmluY2x1ZGVzKHgpKSkpLHByb2Nlc3NlZC5sZW5ndGh9O2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygicGVuZGluZ0FpcmRyb3BzIikpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ0FpcmRyb3BzIixbImFpcmRyb3BJZCIsInN5bWJvbCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2NvbnN0IHBhcmFtcz17ZmVlUGVyVHJhbnNhY3Rpb246IjAuMSIsbWF4VHJhbnNhY3Rpb25zUGVyQWlyZHJvcDoxZTQsbWF4VHJhbnNhY3Rpb25zUGVyQWNjb3VudDo1MCxtYXhUcmFuc2FjdGlvbnNQZXJCbG9jazo1MDAsbWF4QWlyZHJvcHNQZXJCbG9jazoxLHByb2Nlc3NpbmdCYXRjaFNpemU6NTAsZW5hYmxlZEZyb21UeXBlczpbInVzZXIiXX07YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfX0sYWN0aW9ucy51cGRhdGVQYXJhbXM9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PWFwaS5vd25lciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3R7ZmVlUGVyVHJhbnNhY3Rpb246ZmVlUGVyVHJhbnNhY3Rpb24sbWF4VHJhbnNhY3Rpb25zUGVyQWlyZHJvcDptYXhUcmFuc2FjdGlvbnNQZXJBaXJkcm9wLG1heFRyYW5zYWN0aW9uc1BlckFjY291bnQ6bWF4VHJhbnNhY3Rpb25zUGVyQWNjb3VudCxtYXhUcmFuc2FjdGlvbnNQZXJCbG9jazptYXhUcmFuc2FjdGlvbnNQZXJCbG9jayxtYXhBaXJkcm9wc1BlckJsb2NrOm1heEFpcmRyb3BzUGVyQmxvY2sscHJvY2Vzc2luZ0JhdGNoU2l6ZTpwcm9jZXNzaW5nQmF0Y2hTaXplLGVuYWJsZWRGcm9tVHlwZXM6ZW5hYmxlZEZyb21UeXBlc309cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO3ZvaWQgMCE9PWZlZVBlclRyYW5zYWN0aW9uJiZhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgZmVlUGVyVHJhbnNhY3Rpb24mJiFhcGkuQmlnTnVtYmVyKGZlZVBlclRyYW5zYWN0aW9uKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGZlZVBlclRyYW5zYWN0aW9uKS5ndGUoMCksImludmFsaWQgZmVlUGVyVHJhbnNhY3Rpb24iKSYmKHBhcmFtcy5mZWVQZXJUcmFuc2FjdGlvbj1mZWVQZXJUcmFuc2FjdGlvbiksdm9pZCAwIT09bWF4VHJhbnNhY3Rpb25zUGVyQWlyZHJvcCYmYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1heFRyYW5zYWN0aW9uc1BlckFpcmRyb3ApJiZtYXhUcmFuc2FjdGlvbnNQZXJBaXJkcm9wPjAsImludmFsaWQgbWF4VHJhbnNhY3Rpb25zUGVyQWlyZHJvcCIpJiYocGFyYW1zLm1heFRyYW5zYWN0aW9uc1BlckFpcmRyb3A9bWF4VHJhbnNhY3Rpb25zUGVyQWlyZHJvcCksdm9pZCAwIT09bWF4VHJhbnNhY3Rpb25zUGVyQWNjb3VudCYmYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1heFRyYW5zYWN0aW9uc1BlckFjY291bnQpJiZtYXhUcmFuc2FjdGlvbnNQZXJBY2NvdW50PjAmJm1heFRyYW5zYWN0aW9uc1BlckFjY291bnQ8PXBhcmFtcy5tYXhUcmFuc2FjdGlvbnNQZXJBaXJkcm9wLCJpbnZhbGlkIG1heFRyYW5zYWN0aW9uc1BlckFjY291bnQiKSYmKHBhcmFtcy5tYXhUcmFuc2FjdGlvbnNQZXJBY2NvdW50PW1heFRyYW5zYWN0aW9uc1BlckFjY291bnQpLHZvaWQgMCE9PW1heFRyYW5zYWN0aW9uc1BlckJsb2NrJiZhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIobWF4VHJhbnNhY3Rpb25zUGVyQmxvY2spJiZtYXhUcmFuc2FjdGlvbnNQZXJCbG9jaz4wLCJpbnZhbGlkIG1heFRyYW5zYWN0aW9uc1BlckJsb2NrIikmJihwYXJhbXMubWF4VHJhbnNhY3Rpb25zUGVyQmxvY2s9bWF4VHJhbnNhY3Rpb25zUGVyQmxvY2spLHZvaWQgMCE9PW1heEFpcmRyb3BzUGVyQmxvY2smJmFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihtYXhBaXJkcm9wc1BlckJsb2NrKSYmbWF4QWlyZHJvcHNQZXJCbG9jaz4wLCJpbnZhbGlkIG1heEFpcmRyb3BzUGVyQmxvY2siKSYmKHBhcmFtcy5tYXhBaXJkcm9wc1BlckJsb2NrPW1heEFpcmRyb3BzUGVyQmxvY2spLHZvaWQgMCE9PXByb2Nlc3NpbmdCYXRjaFNpemUmJmFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihwcm9jZXNzaW5nQmF0Y2hTaXplKSYmcHJvY2Vzc2luZ0JhdGNoU2l6ZT4wLCJpbnZhbGlkIHByb2Nlc3NpbmdCYXRjaFNpemUiKSYmKHBhcmFtcy5wcm9jZXNzaW5nQmF0Y2hTaXplPXByb2Nlc3NpbmdCYXRjaFNpemUpLHZvaWQgMCE9PWVuYWJsZWRGcm9tVHlwZXMmJmFwaS5hc3NlcnQoQXJyYXkuaXNBcnJheShlbmFibGVkRnJvbVR5cGVzKSYmZW5hYmxlZEZyb21UeXBlcy5sZW5ndGg+MCYmZW5hYmxlZEZyb21UeXBlcy5ldmVyeSgoeD0+QUxMT1dFRF9GUk9NX1RZUEVTLmluY2x1ZGVzKHgpKSksImludmFsaWQgZW5hYmxlZEZyb21UeXBlcyIpJiYocGFyYW1zLmVuYWJsZWRGcm9tVHlwZXM9QXJyYXkuZnJvbShuZXcgU2V0KGVuYWJsZWRGcm9tVHlwZXMpKSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpLGRlbGV0ZSBwYXJhbXMuX2lkLGFwaS5lbWl0KCJwYXJhbXNVcGRhdGVkIixwYXJhbXMpfX0sYWN0aW9ucy5uZXdBaXJkcm9wPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGxpc3Q6bGlzdCxzdGFydEJsb2NrTnVtYmVyOnN0YXJ0QmxvY2tOdW1iZXIsc29mdEZhaWw6c29mdEZhaWwsZnJvbVR5cGU6ZnJvbVR5cGUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleSxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5Iikpe2NvbnN0IHNlbmRlclR5cGU9dm9pZCAwPT09Y2FsbGluZ0NvbnRyYWN0SW5mb3x8ImNvbnRyYWN0IiE9PWZyb21UeXBlPyJ1c2VyIjoiY29udHJhY3QiLHNlbmRlcj0idXNlciI9PT1zZW5kZXJUeXBlP2FwaS5zZW5kZXI6Y2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSksYWlyZHJvcD1hd2FpdCBwYXJzZUFuZFZhbGlkYXRlQWlyZHJvcCh7c3ltYm9sOnN5bWJvbCxzZW5kZXI6c2VuZGVyLHNlbmRlclR5cGU6c2VuZGVyVHlwZSxsaXN0Omxpc3Qsc3RhcnRCbG9ja051bWJlcjpzdGFydEJsb2NrTnVtYmVyLHNvZnRGYWlsOnNvZnRGYWlsLHBhcmFtczpwYXJhbXN9KTtpZihhaXJkcm9wLmlzVmFsaWQpe2NvbnN0IHRva2Vuc1RhYmxlPSJjb250cmFjdCI9PT1zZW5kZXJUeXBlPyJjb250cmFjdHNCYWxhbmNlcyI6ImJhbGFuY2VzIix1dGlsaXR5VG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLHRva2Vuc1RhYmxlLHthY2NvdW50OnNlbmRlcixzeW1ib2w6IkJFRSJ9KTtpZihhcGkuYXNzZXJ0KHV0aWxpdHlUb2tlbiYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW4uYmFsYW5jZSkuZ3RlKGFpcmRyb3AudG90YWxGZWUpLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGFpcmRyb3AgZmVlIikmJmFwaS5hc3NlcnQoYXdhaXQgYnVybkZlZSh7ZnJvbTpzZW5kZXIsZnJvbVR5cGU6c2VuZGVyVHlwZSxxdWFudGl0eTphaXJkcm9wLnRvdGFsRmVlfSksImNvdWxkIG5vdCBzZWN1cmUgYWlyZHJvcCBmZWUiKSl7aWYoYXBpLmFzc2VydChhd2FpdCByZXNlcnZlTkZUcyh7ZnJvbVR5cGU6c2VuZGVyVHlwZSxzeW1ib2w6c3ltYm9sLGlkczphaXJkcm9wLm5mdElkcyxiYXRjaFNpemU6cGFyYW1zLnByb2Nlc3NpbmdCYXRjaFNpemV9KSwiY291bGQgbm90IHNlY3VyZSBORlRzIikpcmV0dXJuIGF3YWl0IGFwaS5kYi5pbnNlcnQoInBlbmRpbmdBaXJkcm9wcyIsYWlyZHJvcCksYXBpLmVtaXQoIm5ld05mdEFpcmRyb3AiLHthaXJkcm9wSWQ6YWlyZHJvcC5haXJkcm9wSWQsc2VuZGVyOnNlbmRlcixzZW5kZXJUeXBlOnNlbmRlclR5cGUsc3ltYm9sOnN5bWJvbCxzdGFydEJsb2NrTnVtYmVyOmFpcmRyb3AuYmxvY2tOdW1iZXJ9KSwhMDthd2FpdCByZWltYnVyc2VORlRzKHt0bzpzZW5kZXIsdG9UeXBlOnNlbmRlclR5cGUsc3ltYm9sOnN5bWJvbCxpZHM6YWlyZHJvcC5uZnRJZHMsYmF0Y2hTaXplOnBhcmFtcy5wcm9jZXNzaW5nQmF0Y2hTaXplfSl9fX1yZXR1cm4hMX0sYWN0aW9ucy50aWNrPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsYG5vdCBhdXRob3JpemVkOiAke2FwaS5zZW5kZXJ9YCkpe2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkscGVuZGluZ0FpcmRyb3BzPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nQWlyZHJvcHMiLHtibG9ja051bWJlcjp7JGx0ZTphcGkuYmxvY2tOdW1iZXJ9fSxwYXJhbXMubWF4QWlyZHJvcHNQZXJCbG9jaywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtpZihwZW5kaW5nQWlyZHJvcHMubGVuZ3RoPjApe2NvbnN0IGJhdGNoU2l6ZT1NYXRoLmZsb29yKHBhcmFtcy5tYXhUcmFuc2FjdGlvbnNQZXJCbG9jay9wZW5kaW5nQWlyZHJvcHMubGVuZ3RoKTtmb3IobGV0IGk9MCxuPXBlbmRpbmdBaXJkcm9wcy5sZW5ndGg7aTxuO2krPTEpe2NvbnN0IGFpcmRyb3A9cGVuZGluZ0FpcmRyb3BzW2ldLG5mdHNQcm9jZXNzZWQ9YXdhaXQgcHJvY2Vzc0FpcmRyb3AoYWlyZHJvcCxiYXRjaFNpemUpO2FwaS5lbWl0KCJuZnRBaXJkcm9wRGlzdHJpYnV0aW9uIix7YWlyZHJvcElkOmFpcmRyb3AuYWlyZHJvcElkLHN5bWJvbDphaXJkcm9wLnN5bWJvbCx0cmFuc2FjdGlvbkNvdW50Om5mdHNQcm9jZXNzZWR9KSwhMD09PWFpcmRyb3AuaXNWYWxpZD9hd2FpdCBhcGkuZGIudXBkYXRlKCJwZW5kaW5nQWlyZHJvcHMiLGFpcmRyb3ApOihhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nQWlyZHJvcHMiLGFpcmRyb3ApLGF3YWl0IHJlaW1idXJzZU5GVHMoe3RvOmFpcmRyb3AuZnJvbSx0b1R5cGU6YWlyZHJvcC5mcm9tVHlwZSxzeW1ib2w6YWlyZHJvcC5zeW1ib2wsaWRzOmFpcmRyb3AubmZ0SWRzLGJhdGNoU2l6ZTpwYXJhbXMucHJvY2Vzc2luZ0JhdGNoU2l6ZX0pLCExPT09YWlyZHJvcC5zb2Z0RmFpbCYmYWlyZHJvcC5uZnRJZHMubGVuZ3RoPjA/YXBpLmVtaXQoIm5mdEFpcmRyb3BGYWlsZWQiLHthaXJkcm9wSWQ6YWlyZHJvcC5haXJkcm9wSWQsc3ltYm9sOmFpcmRyb3Auc3ltYm9sfSk6YXBpLmVtaXQoIm5mdEFpcmRyb3BGaW5pc2hlZCIse2FpcmRyb3BJZDphaXJkcm9wLmFpcmRyb3BJZCxzeW1ib2w6YWlyZHJvcC5zeW1ib2x9KSl9fX19Ow=="}}}

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"nftmarket","params":"","code":"Y29uc3QgQ09OVFJBQ1RfTkFNRT0ibmZ0bWFya2V0IixNQVhfTlVNX1VOSVRTX09QRVJBQkxFPTUwO2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PnshMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygicGFyYW1zIikmJmF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGFyYW1zIixbInN5bWJvbCJdKX07Y29uc3QgaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQ9KHJlc3VsdCxmcm9tLHRvLHN5bWJvbCxxdWFudGl0eSxldmVudFN0cik9PiEodm9pZCAwIT09cmVzdWx0LmVycm9yc3x8IXJlc3VsdC5ldmVudHN8fHZvaWQgMD09PXJlc3VsdC5ldmVudHMuZmluZCgoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJmVsLmV2ZW50PT09ZXZlbnRTdHImJmVsLmRhdGEuZnJvbT09PWZyb20mJmVsLmRhdGEudG89PT10byYmYXBpLkJpZ051bWJlcihlbC5kYXRhLnF1YW50aXR5KS5lcShxdWFudGl0eSkmJmVsLmRhdGEuc3ltYm9sPT09c3ltYm9sKSkpLGNvdW50RGVjaW1hbHM9dmFsdWU9PmFwaS5CaWdOdW1iZXIodmFsdWUpLmRwKCksaXNWYWxpZEhpdmVBY2NvdW50TGVuZ3RoPWFjY291bnQ9PmFjY291bnQubGVuZ3RoPj0zJiZhY2NvdW50Lmxlbmd0aDw9MTYsbWFrZU1hcEtleT0oYWNjb3VudCx0eXBlKT0+YWNjb3VudCsiLSIrdHlwZSxtYWtlR3JvdXBpbmdLZXk9KGdyb3VwaW5nLGdyb3VwQnkpPT57bGV0IGtleT0iIjtyZXR1cm4gZ3JvdXBCeS5mb3JFYWNoKChuYW1lPT57a2V5PWtleSsiOiIrbmFtZSsiOiIrZ3JvdXBpbmdbbmFtZV19KSksa2V5fSxpc1ZhbGlkSWRBcnJheT1hcnI9Pnt0cnl7aWYoIWFwaS5hc3NlcnQoYXJyJiYib2JqZWN0Ij09dHlwZW9mIGFyciYmQXJyYXkuaXNBcnJheShhcnIpLCJpbnZhbGlkIGlkIGxpc3QiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydChhcnIubGVuZ3RoPD01MCwiY2Fubm90IGFjdCBvbiBtb3JlIHRoYW4gNTAgSURzIGF0IG9uY2UiKSlyZXR1cm4hMTtmb3IobGV0IGk9MDtpPGFyci5sZW5ndGg7aSs9MSl7Y29uc3QgaWQ9YXJyW2ldO2lmKCFhcGkuYXNzZXJ0KGlkJiYic3RyaW5nIj09dHlwZW9mIGlkJiYhYXBpLkJpZ051bWJlcihpZCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihpZCkuZ3QoMCksImludmFsaWQgaWQgbGlzdCIpKXJldHVybiExfX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH07YWN0aW9ucy5lbmFibGVNYXJrZXQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PW5mdCwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtjb25zdCBtYXJrZXRUYWJsZU5hbWU9c3ltYm9sKyJzZWxsQm9vayIsbWV0cmljc1RhYmxlTmFtZT1zeW1ib2wrIm9wZW5JbnRlcmVzdCIsaGlzdG9yeVRhYmxlTmFtZT1zeW1ib2wrInRyYWRlc0hpc3RvcnkiLHRhYmxlRXhpc3RzPWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cyhtYXJrZXRUYWJsZU5hbWUpO2FwaS5hc3NlcnQoITE9PT10YWJsZUV4aXN0cywibWFya2V0IGFscmVhZHkgZW5hYmxlZCIpJiYoYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKG1hcmtldFRhYmxlTmFtZSxbIm93bmVkQnkiLCJhY2NvdW50IiwibmZ0SWQiLCJncm91cGluZyIsInByaWNlU3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZShtZXRyaWNzVGFibGVOYW1lLFsic2lkZSIsInByaWNlU3ltYm9sIiwiZ3JvdXBpbmciXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKGhpc3RvcnlUYWJsZU5hbWUsWyJwcmljZVN5bWJvbCIsInRpbWVzdGFtcCJdKSxhcGkuZW1pdCgiZW5hYmxlTWFya2V0Iix7c3ltYm9sOnN5bWJvbH0pKX19fTtjb25zdCB1cGRhdGVPcGVuSW50ZXJlc3Q9YXN5bmMoc2lkZSxzeW1ib2wscHJpY2VTeW1ib2wsZ3JvdXBzLGdyb3VwQnkpPT57Y29uc3QgbWV0cmljc1RhYmxlTmFtZT1zeW1ib2wrIm9wZW5JbnRlcmVzdCIsZ3JvdXBLZXlzPVtdO2Zvcihjb25zdCBpbmZvIG9mIE9iamVjdC52YWx1ZXMoZ3JvdXBzKSlncm91cEtleXMucHVzaChpbmZvLmdyb3VwaW5nKTtpZihncm91cEtleXMubGVuZ3RoPD0wKXJldHVybjtjb25zdCBvcGVuSW50ZXJlc3Q9YXdhaXQgYXBpLmRiLmZpbmQobWV0cmljc1RhYmxlTmFtZSx7c2lkZTpzaWRlLHByaWNlU3ltYm9sOnByaWNlU3ltYm9sLGdyb3VwaW5nOnskaW46Z3JvdXBLZXlzfX0sNTAsMCxbe2luZGV4OiJzaWRlIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6InByaWNlU3ltYm9sIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Imdyb3VwaW5nIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8b3BlbkludGVyZXN0Lmxlbmd0aDtpKz0xKXtjb25zdCBtZXRyaWM9b3BlbkludGVyZXN0W2ldLGtleT1tYWtlR3JvdXBpbmdLZXkobWV0cmljLmdyb3VwaW5nLGdyb3VwQnkpO2tleSBpbiBncm91cHMmJihncm91cHNba2V5XS5pc0luQ29sbGVjdGlvbj0hMCxtZXRyaWMuY291bnQrPWdyb3Vwc1trZXldLmNvdW50LG1ldHJpYy5jb3VudDwwJiYobWV0cmljLmNvdW50PTApLGF3YWl0IGFwaS5kYi51cGRhdGUobWV0cmljc1RhYmxlTmFtZSxtZXRyaWMpKX1mb3IoY29uc3QgaW5mbyBvZiBPYmplY3QudmFsdWVzKGdyb3VwcykpaWYoIWluZm8uaXNJbkNvbGxlY3Rpb24pe2NvbnN0IGZpbmFsQ291bnQ9aW5mby5jb3VudD4wP2luZm8uY291bnQ6MCxuZXdNZXRyaWM9e3NpZGU6c2lkZSxwcmljZVN5bWJvbDpwcmljZVN5bWJvbCxncm91cGluZzppbmZvLmdyb3VwaW5nLGNvdW50OmZpbmFsQ291bnR9O2F3YWl0IGFwaS5kYi5pbnNlcnQobWV0cmljc1RhYmxlTmFtZSxuZXdNZXRyaWMpfX0sdXBkYXRlVHJhZGVzSGlzdG9yeT1hc3luYyh0eXBlLGFjY291bnQsb3duZWRCeSxjb3VudGVycGFydGllcyxzeW1ib2wscHJpY2VTeW1ib2wscHJpY2UsaXNNYXJrZXRGZWVQYWlkLG1hcmtldEFjY291bnQsZmVlLGlzQWdlbnRGZWVQYWlkLGFnZW50QWNjb3VudCxhZ2VudEZlZSx2b2x1bWUpPT57Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSx0aW1lc3RhbXBTZWM9YmxvY2tEYXRlLmdldFRpbWUoKS8xZTMsdGltZXN0YW1wTWludXMyNGhycz1ibG9ja0RhdGUuc2V0VVRDRGF0ZShibG9ja0RhdGUuZ2V0VVRDRGF0ZSgpLTEpLzFlMyxoaXN0b3J5VGFibGVOYW1lPXN5bWJvbCsidHJhZGVzSGlzdG9yeSI7bGV0IHRyYWRlc1RvRGVsZXRlPWF3YWl0IGFwaS5kYi5maW5kKGhpc3RvcnlUYWJsZU5hbWUse3ByaWNlU3ltYm9sOnByaWNlU3ltYm9sLHRpbWVzdGFtcDp7JGx0OnRpbWVzdGFtcE1pbnVzMjRocnN9fSwxZTMsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSksbmJUcmFkZXNUb0RlbGV0ZT10cmFkZXNUb0RlbGV0ZS5sZW5ndGg7Zm9yKDtuYlRyYWRlc1RvRGVsZXRlPjA7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJUcmFkZXNUb0RlbGV0ZTtpbmRleCs9MSl7Y29uc3QgdHJhZGU9dHJhZGVzVG9EZWxldGVbaW5kZXhdO2F3YWl0IGFwaS5kYi5yZW1vdmUoaGlzdG9yeVRhYmxlTmFtZSx0cmFkZSl9dHJhZGVzVG9EZWxldGU9YXdhaXQgYXBpLmRiLmZpbmQoaGlzdG9yeVRhYmxlTmFtZSx7cHJpY2VTeW1ib2w6cHJpY2VTeW1ib2wsdGltZXN0YW1wOnskbHQ6dGltZXN0YW1wTWludXMyNGhyc319LDFlMywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxuYlRyYWRlc1RvRGVsZXRlPXRyYWRlc1RvRGVsZXRlLmxlbmd0aH1jb25zdCBuZXdUcmFkZT17fTtuZXdUcmFkZS50eXBlPXR5cGUsbmV3VHJhZGUuYWNjb3VudD1hY2NvdW50LG5ld1RyYWRlLm93bmVkQnk9b3duZWRCeSxuZXdUcmFkZS5jb3VudGVycGFydGllcz1jb3VudGVycGFydGllcyxuZXdUcmFkZS5wcmljZVN5bWJvbD1wcmljZVN5bWJvbCxuZXdUcmFkZS5wcmljZT1wcmljZSxpc01hcmtldEZlZVBhaWQmJihuZXdUcmFkZS5tYXJrZXRBY2NvdW50PW1hcmtldEFjY291bnQsbmV3VHJhZGUuZmVlPWZlZSksaXNBZ2VudEZlZVBhaWQmJihuZXdUcmFkZS5hZ2VudEFjY291bnQ9YWdlbnRBY2NvdW50LG5ld1RyYWRlLmFnZW50RmVlPWFnZW50RmVlKSxuZXdUcmFkZS50aW1lc3RhbXA9dGltZXN0YW1wU2VjLG5ld1RyYWRlLnZvbHVtZT12b2x1bWUsYXdhaXQgYXBpLmRiLmluc2VydChoaXN0b3J5VGFibGVOYW1lLG5ld1RyYWRlKX07YWN0aW9ucy5zZXRNYXJrZXRQYXJhbXM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsb2ZmaWNpYWxNYXJrZXQ6b2ZmaWNpYWxNYXJrZXQsYWdlbnRDdXQ6YWdlbnRDdXQsbWluRmVlOm1pbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wsImludmFsaWQgcGFyYW1zIikpcmV0dXJuITE7aWYodm9pZCAwPT09b2ZmaWNpYWxNYXJrZXQmJnZvaWQgMD09PWFnZW50Q3V0JiZ2b2lkIDA9PT1taW5GZWUpcmV0dXJuITE7Y29uc3QgbWFya2V0VGFibGVOYW1lPXN5bWJvbCsic2VsbEJvb2siLHRhYmxlRXhpc3RzPWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cyhtYXJrZXRUYWJsZU5hbWUpO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRhYmxlRXhpc3RzLCJtYXJrZXQgbm90IGVuYWJsZWQgZm9yIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KCh2b2lkIDA9PT1vZmZpY2lhbE1hcmtldHx8b2ZmaWNpYWxNYXJrZXQmJiJzdHJpbmciPT10eXBlb2Ygb2ZmaWNpYWxNYXJrZXQmJmlzVmFsaWRIaXZlQWNjb3VudExlbmd0aChvZmZpY2lhbE1hcmtldC50cmltKCkudG9Mb3dlckNhc2UoKSkpJiYodm9pZCAwPT09YWdlbnRDdXR8fCJudW1iZXIiPT10eXBlb2YgYWdlbnRDdXQmJmFnZW50Q3V0Pj0wJiZhZ2VudEN1dDw9MWU0JiZOdW1iZXIuaXNJbnRlZ2VyKGFnZW50Q3V0KSkmJih2b2lkIDA9PT1taW5GZWV8fCJudW1iZXIiPT10eXBlb2YgbWluRmVlJiZtaW5GZWU+PTAmJm1pbkZlZTw9MWU0JiZOdW1iZXIuaXNJbnRlZ2VyKG1pbkZlZSkpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe2xldCBzaG91bGRVcGRhdGU9ITEsaXNGaXJzdFRpbWVTZXQ9ITE7Y29uc3QgdXBkYXRlPXtzeW1ib2w6c3ltYm9sfTtsZXQgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHtzeW1ib2w6c3ltYm9sfSk7cGFyYW1zfHwoaXNGaXJzdFRpbWVTZXQ9ITAscGFyYW1zPXtzeW1ib2w6c3ltYm9sfSk7Y29uc3QgZmluYWxPZmZpY2lhbE1hcmtldD12b2lkIDAhPT1vZmZpY2lhbE1hcmtldD9vZmZpY2lhbE1hcmtldC50cmltKCkudG9Mb3dlckNhc2UoKTpudWxsO2lmKHZvaWQgMD09PW9mZmljaWFsTWFya2V0fHx2b2lkIDAhPT1wYXJhbXMub2ZmaWNpYWxNYXJrZXQmJmZpbmFsT2ZmaWNpYWxNYXJrZXQ9PT1wYXJhbXMub2ZmaWNpYWxNYXJrZXR8fCh2b2lkIDAhPT1wYXJhbXMub2ZmaWNpYWxNYXJrZXQmJih1cGRhdGUub2xkT2ZmaWNpYWxNYXJrZXQ9cGFyYW1zLm9mZmljaWFsTWFya2V0KSxwYXJhbXMub2ZmaWNpYWxNYXJrZXQ9ZmluYWxPZmZpY2lhbE1hcmtldCx1cGRhdGUub2ZmaWNpYWxNYXJrZXQ9ZmluYWxPZmZpY2lhbE1hcmtldCxzaG91bGRVcGRhdGU9ITApLHZvaWQgMD09PWFnZW50Q3V0fHx2b2lkIDAhPT1wYXJhbXMuYWdlbnRDdXQmJmFnZW50Q3V0PT09cGFyYW1zLmFnZW50Q3V0fHwodm9pZCAwIT09cGFyYW1zLmFnZW50Q3V0JiYodXBkYXRlLm9sZEFnZW50Q3V0PXBhcmFtcy5hZ2VudEN1dCkscGFyYW1zLmFnZW50Q3V0PWFnZW50Q3V0LHVwZGF0ZS5hZ2VudEN1dD1hZ2VudEN1dCxzaG91bGRVcGRhdGU9ITApLHZvaWQgMD09PW1pbkZlZXx8dm9pZCAwIT09cGFyYW1zLm1pbkZlZSYmbWluRmVlPT09cGFyYW1zLm1pbkZlZXx8KHZvaWQgMCE9PXBhcmFtcy5taW5GZWUmJih1cGRhdGUub2xkTWluRmVlPXBhcmFtcy5taW5GZWUpLHBhcmFtcy5taW5GZWU9bWluRmVlLHVwZGF0ZS5taW5GZWU9bWluRmVlLHNob3VsZFVwZGF0ZT0hMCksc2hvdWxkVXBkYXRlKXJldHVybiBpc0ZpcnN0VGltZVNldD9hd2FpdCBhcGkuZGIuaW5zZXJ0KCJwYXJhbXMiLHBhcmFtcyk6YXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpLGFwaS5lbWl0KCJzZXRNYXJrZXRQYXJhbXMiLHVwZGF0ZSksITB9fXJldHVybiExfSxhY3Rpb25zLmNoYW5nZVByaWNlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLG5mdHM6bmZ0cyxwcmljZTpwcmljZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wsImludmFsaWQgcGFyYW1zIikpcmV0dXJuO2NvbnN0IG1hcmtldFRhYmxlTmFtZT1zeW1ib2wrInNlbGxCb29rIix0YWJsZUV4aXN0cz1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMobWFya2V0VGFibGVOYW1lKTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmaXNWYWxpZElkQXJyYXkobmZ0cykmJmFwaS5hc3NlcnQocHJpY2UmJiJzdHJpbmciPT10eXBlb2YgcHJpY2UmJiFhcGkuQmlnTnVtYmVyKHByaWNlKS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KHRhYmxlRXhpc3RzLCJtYXJrZXQgbm90IGVuYWJsZWQgZm9yIHN5bWJvbCIpKXtjb25zdCBvcmRlcnM9YXdhaXQgYXBpLmRiLmZpbmQobWFya2V0VGFibGVOYW1lLHtuZnRJZDp7JGluOm5mdHN9fSw1MCwwLFt7aW5kZXg6Im5mdElkIixkZXNjZW5kaW5nOiExfV0pO2lmKG9yZGVycy5sZW5ndGg+MCl7bGV0IHByaWNlU3ltYm9sPSIiO2ZvcihsZXQgaT0wO2k8b3JkZXJzLmxlbmd0aDtpKz0xKXtjb25zdCBvcmRlcj1vcmRlcnNbaV07aWYoIiI9PT1wcmljZVN5bWJvbCYmKHtwcmljZVN5bWJvbDpwcmljZVN5bWJvbH09b3JkZXIpLCFhcGkuYXNzZXJ0KG9yZGVyLmFjY291bnQ9PT1hcGkuc2VuZGVyJiYidSI9PT1vcmRlci5vd25lZEJ5LCJhbGwgb3JkZXJzIG11c3QgYmUgeW91ciBvd24iKXx8IWFwaS5hc3NlcnQocHJpY2VTeW1ib2w9PT1vcmRlci5wcmljZVN5bWJvbCwiYWxsIG9yZGVycyBtdXN0IGhhdmUgdGhlIHNhbWUgcHJpY2Ugc3ltYm9sIikpcmV0dXJufWNvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnByaWNlU3ltYm9sfSk7aWYoYXBpLmFzc2VydCh0b2tlbiYmYXBpLkJpZ051bWJlcihwcmljZSkuZ3QoMCkmJmNvdW50RGVjaW1hbHMocHJpY2UpPD10b2tlbi5wcmVjaXNpb24sImludmFsaWQgcHJpY2UiKSl7Y29uc3QgZmluYWxQcmljZT1hcGkuQmlnTnVtYmVyKHByaWNlKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbik7Zm9yKGxldCBpPTA7aTxvcmRlcnMubGVuZ3RoO2krPTEpe2NvbnN0IG9yZGVyPW9yZGVyc1tpXSxvbGRQcmljZT1vcmRlci5wcmljZTtvcmRlci5wcmljZT1maW5hbFByaWNlLG9yZGVyLnByaWNlRGVjPXskbnVtYmVyRGVjaW1hbDpmaW5hbFByaWNlfSxhd2FpdCBhcGkuZGIudXBkYXRlKG1hcmtldFRhYmxlTmFtZSxvcmRlciksYXBpLmVtaXQoImNoYW5nZVByaWNlIix7c3ltYm9sOnN5bWJvbCxuZnRJZDpvcmRlci5uZnRJZCxvbGRQcmljZTpvbGRQcmljZSxuZXdQcmljZTpvcmRlci5wcmljZSxwcmljZVN5bWJvbDpvcmRlci5wcmljZVN5bWJvbCxvcmRlcklkOm9yZGVyLl9pZH0pfX19fX0sYWN0aW9ucy5jYW5jZWw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsbmZ0czpuZnRzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCwiaW52YWxpZCBwYXJhbXMiKSlyZXR1cm47Y29uc3QgbWFya2V0VGFibGVOYW1lPXN5bWJvbCsic2VsbEJvb2siLHRhYmxlRXhpc3RzPWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cyhtYXJrZXRUYWJsZU5hbWUpO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZpc1ZhbGlkSWRBcnJheShuZnRzKSYmYXBpLmFzc2VydCh0YWJsZUV4aXN0cywibWFya2V0IG5vdCBlbmFibGVkIGZvciBzeW1ib2wiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZighYXBpLmFzc2VydChuZnQmJm5mdC5ncm91cEJ5JiZuZnQuZ3JvdXBCeS5sZW5ndGg+MCwibWFya2V0IGdyb3VwaW5nIG5vdCBzZXQiKSlyZXR1cm47Y29uc3Qgb3JkZXJzPWF3YWl0IGFwaS5kYi5maW5kKG1hcmtldFRhYmxlTmFtZSx7bmZ0SWQ6eyRpbjpuZnRzfX0sNTAsMCxbe2luZGV4OiJuZnRJZCIsZGVzY2VuZGluZzohMX1dKTtpZihvcmRlcnMubGVuZ3RoPjApe2NvbnN0IGlkcz1bXSxpZE1hcD17fTtsZXQgcHJpY2VTeW1ib2w9IiI7Zm9yKGxldCBpPTA7aTxvcmRlcnMubGVuZ3RoO2krPTEpe2NvbnN0IG9yZGVyPW9yZGVyc1tpXTtpZigiIj09PXByaWNlU3ltYm9sJiYoe3ByaWNlU3ltYm9sOnByaWNlU3ltYm9sfT1vcmRlciksIWFwaS5hc3NlcnQob3JkZXIuYWNjb3VudD09PWFwaS5zZW5kZXImJiJ1Ij09PW9yZGVyLm93bmVkQnksImFsbCBvcmRlcnMgbXVzdCBiZSB5b3VyIG93biIpfHwhYXBpLmFzc2VydChwcmljZVN5bWJvbD09PW9yZGVyLnByaWNlU3ltYm9sLCJhbGwgb3JkZXJzIG11c3QgaGF2ZSB0aGUgc2FtZSBwcmljZSBzeW1ib2wiKSlyZXR1cm47aWRzLnB1c2gob3JkZXIubmZ0SWQpLGlkTWFwW29yZGVyLm5mdElkXT1vcmRlcn1jb25zdCBuZnRBcnJheT1bXSx3cmFwcGVkTmZ0cz17c3ltYm9sOnN5bWJvbCxpZHM6aWRzfTtuZnRBcnJheS5wdXNoKHdyYXBwZWROZnRzKTtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJuZnQiLCJ0cmFuc2ZlciIse2Zyb21UeXBlOiJjb250cmFjdCIsdG86YXBpLnNlbmRlcix0b1R5cGU6InVzZXIiLG5mdHM6bmZ0QXJyYXksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2lmKHJlcy5ldmVudHMpe2NvbnN0IGdyb3VwaW5nTWFwPXt9O2ZvcihsZXQgaj0wO2o8cmVzLmV2ZW50cy5sZW5ndGg7ais9MSl7Y29uc3QgZXY9cmVzLmV2ZW50c1tqXTtpZihldi5jb250cmFjdCYmZXYuZXZlbnQmJmV2LmRhdGEmJiJuZnQiPT09ZXYuY29udHJhY3QmJiJ0cmFuc2ZlciI9PT1ldi5ldmVudCYmIm5mdG1hcmtldCI9PT1ldi5kYXRhLmZyb20mJiJjIj09PWV2LmRhdGEuZnJvbVR5cGUmJmV2LmRhdGEudG89PT1hcGkuc2VuZGVyJiYidSI9PT1ldi5kYXRhLnRvVHlwZSYmZXYuZGF0YS5zeW1ib2w9PT1zeW1ib2wpe2NvbnN0IGluc3RhbmNlSWQ9ZXYuZGF0YS5pZDtpZihpbnN0YW5jZUlkIGluIGlkTWFwKXtjb25zdCBvcmRlcj1pZE1hcFtpbnN0YW5jZUlkXTthd2FpdCBhcGkuZGIucmVtb3ZlKG1hcmtldFRhYmxlTmFtZSxvcmRlciksYXBpLmVtaXQoImNhbmNlbE9yZGVyIix7YWNjb3VudDpvcmRlci5hY2NvdW50LG93bmVkQnk6b3JkZXIub3duZWRCeSxzeW1ib2w6c3ltYm9sLG5mdElkOm9yZGVyLm5mdElkLHRpbWVzdGFtcDpvcmRlci50aW1lc3RhbXAscHJpY2U6b3JkZXIucHJpY2UscHJpY2VTeW1ib2w6b3JkZXIucHJpY2VTeW1ib2wsZmVlOm9yZGVyLmZlZSxvcmRlcklkOm9yZGVyLl9pZH0pO2NvbnN0IGtleT1tYWtlR3JvdXBpbmdLZXkob3JkZXIuZ3JvdXBpbmcsbmZ0Lmdyb3VwQnkpLGdyb3VwSW5mbz1rZXkgaW4gZ3JvdXBpbmdNYXA/Z3JvdXBpbmdNYXBba2V5XTp7Z3JvdXBpbmc6b3JkZXIuZ3JvdXBpbmcsaXNJbkNvbGxlY3Rpb246ITEsY291bnQ6MH07Z3JvdXBJbmZvLmNvdW50LT0xLGdyb3VwaW5nTWFwW2tleV09Z3JvdXBJbmZvfX19YXdhaXQgdXBkYXRlT3BlbkludGVyZXN0KCJzZWxsIixzeW1ib2wscHJpY2VTeW1ib2wsZ3JvdXBpbmdNYXAsbmZ0Lmdyb3VwQnkpfX19fSxhY3Rpb25zLmJ1eT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxuZnRzOm5mdHMsbWFya2V0QWNjb3VudDptYXJrZXRBY2NvdW50LGV4cFByaWNlOmV4cFByaWNlLGV4cFByaWNlU3ltYm9sOmV4cFByaWNlU3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmbWFya2V0QWNjb3VudCYmInN0cmluZyI9PXR5cGVvZiBtYXJrZXRBY2NvdW50JiYodm9pZCAwPT09ZXhwUHJpY2V8fGV4cFByaWNlJiYic3RyaW5nIj09dHlwZW9mIGV4cFByaWNlJiYhYXBpLkJpZ051bWJlcihleHBQcmljZSkuaXNOYU4oKSkmJih2b2lkIDA9PT1leHBQcmljZVN5bWJvbHx8ZXhwUHJpY2VTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgZXhwUHJpY2VTeW1ib2wpLCJpbnZhbGlkIHBhcmFtcyIpKXJldHVybjtjb25zdCBtYXJrZXRUYWJsZU5hbWU9c3ltYm9sKyJzZWxsQm9vayIsdGFibGVFeGlzdHM9YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKG1hcmtldFRhYmxlTmFtZSk7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmlzVmFsaWRJZEFycmF5KG5mdHMpJiZhcGkuYXNzZXJ0KHRhYmxlRXhpc3RzLCJtYXJrZXQgbm90IGVuYWJsZWQgZm9yIHN5bWJvbCIpKXtjb25zdCBmaW5hbE1hcmtldEFjY291bnQ9bWFya2V0QWNjb3VudC50cmltKCkudG9Mb3dlckNhc2UoKTtpZihhcGkuYXNzZXJ0KGlzVmFsaWRIaXZlQWNjb3VudExlbmd0aChmaW5hbE1hcmtldEFjY291bnQpLCJpbnZhbGlkIG1hcmtldCBhY2NvdW50IikmJmFwaS5hc3NlcnQoZmluYWxNYXJrZXRBY2NvdW50IT09YXBpLnNlbmRlciwibWFya2V0IGFjY291bnQgY2Fubm90IGJlIHNhbWUgYXMgYnV5ZXIiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZighYXBpLmFzc2VydChuZnQmJm5mdC5ncm91cEJ5JiZuZnQuZ3JvdXBCeS5sZW5ndGg+MCwibWFya2V0IGdyb3VwaW5nIG5vdCBzZXQiKSlyZXR1cm47Y29uc3Qgb3JkZXJzPWF3YWl0IGFwaS5kYi5maW5kKG1hcmtldFRhYmxlTmFtZSx7bmZ0SWQ6eyRpbjpuZnRzfX0sNTAsMCxbe2luZGV4OiJuZnRJZCIsZGVzY2VuZGluZzohMX1dKTtpZihvcmRlcnMubGVuZ3RoPjApe2xldCBwcmljZVN5bWJvbD0iIjtmb3IobGV0IGk9MDtpPG9yZGVycy5sZW5ndGg7aSs9MSl7Y29uc3Qgb3JkZXI9b3JkZXJzW2ldO2lmKCIiPT09cHJpY2VTeW1ib2wmJih7cHJpY2VTeW1ib2w6cHJpY2VTeW1ib2x9PW9yZGVyKSwhYXBpLmFzc2VydCghKCJ1Ij09PW9yZGVyLm93bmVkQnkmJm9yZGVyLmFjY291bnQ9PT1hcGkuc2VuZGVyKSwiY2Fubm90IGZpbGwgeW91ciBvd24gb3JkZXJzIil8fCFhcGkuYXNzZXJ0KHByaWNlU3ltYm9sPT09b3JkZXIucHJpY2VTeW1ib2wsImFsbCBvcmRlcnMgbXVzdCBoYXZlIHRoZSBzYW1lIHByaWNlIHN5bWJvbCIpKXJldHVybn1pZighYXBpLmFzc2VydCh2b2lkIDA9PT1leHBQcmljZVN5bWJvbHx8ZXhwUHJpY2VTeW1ib2w9PT1wcmljZVN5bWJvbCxgdW5leHBlY3RlZCBwcmljZSBzeW1ib2wgJHtwcmljZVN5bWJvbH1gKSlyZXR1cm47Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cHJpY2VTeW1ib2x9KTtpZighdG9rZW4pcmV0dXJuO2xldCBmZWVUb3RhbD1hcGkuQmlnTnVtYmVyKDApLGFnZW50RmVlVG90YWw9YXBpLkJpZ051bWJlcigwKSxwYXltZW50VG90YWw9YXBpLkJpZ051bWJlcigwKSxzb2xkTmZ0cz1bXTtjb25zdCBzZWxsZXJzPVtdLHNlbGxlck1hcD17fTtmb3IobGV0IGk9MDtpPG9yZGVycy5sZW5ndGg7aSs9MSl7Y29uc3Qgb3JkZXI9b3JkZXJzW2ldLGZpbmFsUHJpY2U9YXBpLkJpZ051bWJlcihvcmRlci5wcmljZSksZmVlUGVyY2VudD1vcmRlci5mZWUvMWU0O2xldCBmaW5hbEZlZT1maW5hbFByaWNlLm11bHRpcGxpZWRCeShmZWVQZXJjZW50KS5kZWNpbWFsUGxhY2VzKHRva2VuLnByZWNpc2lvbik7ZmluYWxGZWUuZ3QoZmluYWxQcmljZSkmJihmaW5hbEZlZT1maW5hbFByaWNlKTtsZXQgZmluYWxQYXltZW50PWZpbmFsUHJpY2UubWludXMoZmluYWxGZWUpLmRlY2ltYWxQbGFjZXModG9rZW4ucHJlY2lzaW9uKTtmaW5hbFBheW1lbnQubHQoMCkmJihmaW5hbFBheW1lbnQ9YXBpLkJpZ051bWJlcigwKSkscGF5bWVudFRvdGFsPXBheW1lbnRUb3RhbC5wbHVzKGZpbmFsUGF5bWVudCksZmVlVG90YWw9ZmVlVG90YWwucGx1cyhmaW5hbEZlZSk7Y29uc3Qga2V5PW1ha2VNYXBLZXkob3JkZXIuYWNjb3VudCxvcmRlci5vd25lZEJ5KSxzZWxsZXJJbmZvPWtleSBpbiBzZWxsZXJNYXA/c2VsbGVyTWFwW2tleV06e2FjY291bnQ6b3JkZXIuYWNjb3VudCxvd25lZEJ5Om9yZGVyLm93bmVkQnksbmZ0SWRzOltdLG5mdFNhbGVzOltdLHBheW1lbnRUb3RhbDphcGkuQmlnTnVtYmVyKDApfTtzZWxsZXJJbmZvLnBheW1lbnRUb3RhbD1zZWxsZXJJbmZvLnBheW1lbnRUb3RhbC5wbHVzKGZpbmFsUGF5bWVudCksc2VsbGVySW5mby5uZnRJZHMucHVzaChvcmRlci5uZnRJZCksc2VsbGVyTWFwW2tleV09c2VsbGVySW5mbyxzZWxsZXJJbmZvLm5mdFNhbGVzLnB1c2goe2lkOm9yZGVyLm5mdElkLHByaWNlOmZpbmFsUHJpY2UsZmVlOmZpbmFsRmVlLHN5bWJvbDpwcmljZVN5bWJvbH0pfWNvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7c3ltYm9sOnN5bWJvbH0pLG9mZmljaWFsTWFya2V0QWNjb3VudD1wYXJhbXMmJnBhcmFtcy5vZmZpY2lhbE1hcmtldD9wYXJhbXMub2ZmaWNpYWxNYXJrZXQ6ZmluYWxNYXJrZXRBY2NvdW50O2lmKCFhcGkuYXNzZXJ0KG9mZmljaWFsTWFya2V0QWNjb3VudCE9PWFwaS5zZW5kZXIsIm9mZmljaWFsIG1hcmtldCBhY2NvdW50IGNhbm5vdCBiZSBzYW1lIGFzIGJ1eWVyIikpcmV0dXJuO2lmKHBhcmFtcyYmcGFyYW1zLm9mZmljaWFsTWFya2V0JiZ2b2lkIDAhPT1wYXJhbXMuYWdlbnRDdXQmJnBhcmFtcy5hZ2VudEN1dD4wJiZmZWVUb3RhbC5ndCgwKSl7Y29uc3QgYWdlbnRGZWVQZXJjZW50PXBhcmFtcy5hZ2VudEN1dC8xZTQ7YWdlbnRGZWVUb3RhbD1mZWVUb3RhbC5tdWx0aXBsaWVkQnkoYWdlbnRGZWVQZXJjZW50KS5kZWNpbWFsUGxhY2VzKHRva2VuLnByZWNpc2lvbiksYWdlbnRGZWVUb3RhbC5ndChmZWVUb3RhbCkmJihhZ2VudEZlZVRvdGFsPWFwaS5CaWdOdW1iZXIoZmVlVG90YWwpKSxmZWVUb3RhbD1mZWVUb3RhbC5taW51cyhhZ2VudEZlZVRvdGFsKS5kZWNpbWFsUGxhY2VzKHRva2VuLnByZWNpc2lvbiksZmVlVG90YWwubHQoMCkmJihmZWVUb3RhbD1hcGkuQmlnTnVtYmVyKDApKX1jb25zdCByZXF1aXJlZEJhbGFuY2U9cGF5bWVudFRvdGFsLnBsdXMoZmVlVG90YWwpLnBsdXMoYWdlbnRGZWVUb3RhbCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pO2lmKCFhcGkuYXNzZXJ0KHZvaWQgMD09PWV4cFByaWNlfHxhcGkuQmlnTnVtYmVyKGV4cFByaWNlKS5lcShyZXF1aXJlZEJhbGFuY2UpLGB0b3RhbCByZXF1aXJlZCBwYXltZW50ICR7cmVxdWlyZWRCYWxhbmNlfSAke3ByaWNlU3ltYm9sfSBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCBhbW91bnRgKSlyZXR1cm47Y29uc3QgYnV5ZXJCYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnByaWNlU3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQoYnV5ZXJCYWxhbmNlJiZhcGkuQmlnTnVtYmVyKGJ1eWVyQmFsYW5jZS5iYWxhbmNlKS5ndGUocmVxdWlyZWRCYWxhbmNlKSwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIGZvciBwYXltZW50IikpcmV0dXJuO3BheW1lbnRUb3RhbD1wYXltZW50VG90YWwudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pO2xldCBpc01hcmtldEZlZVBhaWQ9ITE7aWYoZmVlVG90YWwuZ3QoMCkpe2lzTWFya2V0RmVlUGFpZD0hMCxmZWVUb3RhbD1mZWVUb3RhbC50b0ZpeGVkKHRva2VuLnByZWNpc2lvbik7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzpvZmZpY2lhbE1hcmtldEFjY291bnQsc3ltYm9sOnByaWNlU3ltYm9sLHF1YW50aXR5OmZlZVRvdGFsLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZighYXBpLmFzc2VydChpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsYXBpLnNlbmRlcixvZmZpY2lhbE1hcmtldEFjY291bnQscHJpY2VTeW1ib2wsZmVlVG90YWwsInRyYW5zZmVyIiksInVuYWJsZSB0byB0cmFuc2ZlciBtYXJrZXQgZmVlcyIpKXJldHVybn1sZXQgaXNBZ2VudEZlZVBhaWQ9ITE7aWYoYWdlbnRGZWVUb3RhbC5ndCgwKSl7aXNBZ2VudEZlZVBhaWQ9ITAsYWdlbnRGZWVUb3RhbD1hZ2VudEZlZVRvdGFsLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKTtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOmZpbmFsTWFya2V0QWNjb3VudCxzeW1ib2w6cHJpY2VTeW1ib2wscXVhbnRpdHk6YWdlbnRGZWVUb3RhbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7aWYoIWFwaS5hc3NlcnQoaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGFwaS5zZW5kZXIsZmluYWxNYXJrZXRBY2NvdW50LHByaWNlU3ltYm9sLGFnZW50RmVlVG90YWwsInRyYW5zZmVyIiksInVuYWJsZSB0byB0cmFuc2ZlciBhZ2VudCBmZWVzIikpcmV0dXJufWZvcihjb25zdCBpbmZvIG9mIE9iamVjdC52YWx1ZXMoc2VsbGVyTWFwKSlpZihpbmZvLnBheW1lbnRUb3RhbC5ndCgwKSl7Y29uc3QgY29udHJhY3RBY3Rpb249InUiPT09aW5mby5vd25lZEJ5PyJ0cmFuc2ZlciI6InRyYW5zZmVyVG9Db250cmFjdCI7aW5mby5wYXltZW50VG90YWw9aW5mby5wYXltZW50VG90YWwudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pO2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsY29udHJhY3RBY3Rpb24se3RvOmluZm8uYWNjb3VudCxzeW1ib2w6cHJpY2VTeW1ib2wscXVhbnRpdHk6aW5mby5wYXltZW50VG90YWwsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2FwaS5hc3NlcnQoaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGFwaS5zZW5kZXIsaW5mby5hY2NvdW50LHByaWNlU3ltYm9sLGluZm8ucGF5bWVudFRvdGFsLGNvbnRyYWN0QWN0aW9uKSxgdW5hYmxlIHRvIHRyYW5zZmVyIHBheW1lbnQgdG8gJHtpbmZvLmFjY291bnR9YCkmJihzb2xkTmZ0cz1zb2xkTmZ0cy5jb25jYXQoaW5mby5uZnRJZHMpLHNlbGxlcnMucHVzaChpbmZvKSl9ZWxzZSBzb2xkTmZ0cz1zb2xkTmZ0cy5jb25jYXQoaW5mby5uZnRJZHMpLHNlbGxlcnMucHVzaChpbmZvKTtjb25zdCBuZnRBcnJheT1bXSx3cmFwcGVkTmZ0cz17c3ltYm9sOnN5bWJvbCxpZHM6c29sZE5mdHN9O25mdEFycmF5LnB1c2god3JhcHBlZE5mdHMpLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibmZ0IiwidHJhbnNmZXIiLHtmcm9tVHlwZToiY29udHJhY3QiLHRvOmFwaS5zZW5kZXIsdG9UeXBlOiJ1c2VyIixuZnRzOm5mdEFycmF5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtjb25zdCBncm91cGluZ01hcD17fSxzb2xkU2V0PW5ldyBTZXQoc29sZE5mdHMpO2ZvcihsZXQgaT0wO2k8b3JkZXJzLmxlbmd0aDtpKz0xKXtjb25zdCBvcmRlcj1vcmRlcnNbaV07aWYoc29sZFNldC5oYXMob3JkZXIubmZ0SWQpKXthd2FpdCBhcGkuZGIucmVtb3ZlKG1hcmtldFRhYmxlTmFtZSxvcmRlcik7Y29uc3Qga2V5PW1ha2VHcm91cGluZ0tleShvcmRlci5ncm91cGluZyxuZnQuZ3JvdXBCeSksZ3JvdXBJbmZvPWtleSBpbiBncm91cGluZ01hcD9ncm91cGluZ01hcFtrZXldOntncm91cGluZzpvcmRlci5ncm91cGluZyxpc0luQ29sbGVjdGlvbjohMSxjb3VudDowfTtncm91cEluZm8uY291bnQtPTEsZ3JvdXBpbmdNYXBba2V5XT1ncm91cEluZm99fWF3YWl0IHVwZGF0ZVRyYWRlc0hpc3RvcnkoImJ1eSIsYXBpLnNlbmRlciwidSIsc2VsbGVycyxzeW1ib2wscHJpY2VTeW1ib2wscmVxdWlyZWRCYWxhbmNlLGlzTWFya2V0RmVlUGFpZCxvZmZpY2lhbE1hcmtldEFjY291bnQsZmVlVG90YWwsaXNBZ2VudEZlZVBhaWQsZmluYWxNYXJrZXRBY2NvdW50LGFnZW50RmVlVG90YWwsc29sZE5mdHMubGVuZ3RoKTtjb25zdCBhY2tQYWNrZXQ9e3N5bWJvbDpzeW1ib2wscHJpY2VTeW1ib2w6cHJpY2VTeW1ib2wsYWNjb3VudDphcGkuc2VuZGVyLG93bmVkQnk6InUiLHNlbGxlcnM6c2VsbGVycyxwYXltZW50VG90YWw6cGF5bWVudFRvdGFsfTtpc01hcmtldEZlZVBhaWQmJihhY2tQYWNrZXQubWFya2V0QWNjb3VudD1vZmZpY2lhbE1hcmtldEFjY291bnQsYWNrUGFja2V0LmZlZVRvdGFsPWZlZVRvdGFsKSxpc0FnZW50RmVlUGFpZCYmKGFja1BhY2tldC5hZ2VudEFjY291bnQ9ZmluYWxNYXJrZXRBY2NvdW50LGFja1BhY2tldC5hZ2VudEZlZVRvdGFsPWFnZW50RmVlVG90YWwpLGFwaS5lbWl0KCJoaXRTZWxsT3JkZXIiLGFja1BhY2tldCksYXdhaXQgdXBkYXRlT3BlbkludGVyZXN0KCJzZWxsIixzeW1ib2wscHJpY2VTeW1ib2wsZ3JvdXBpbmdNYXAsbmZ0Lmdyb3VwQnkpfX19fSxhY3Rpb25zLnNlbGw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsbmZ0czpuZnRzLHByaWNlOnByaWNlLHByaWNlU3ltYm9sOnByaWNlU3ltYm9sLGZlZTpmZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHBhcmFtcyIpKXJldHVybjtjb25zdCBtYXJrZXRUYWJsZU5hbWU9c3ltYm9sKyJzZWxsQm9vayIsaW5zdGFuY2VUYWJsZU5hbWU9c3ltYm9sKyJpbnN0YW5jZXMiLHRhYmxlRXhpc3RzPWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cyhtYXJrZXRUYWJsZU5hbWUpO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5mdHMmJiJvYmplY3QiPT10eXBlb2YgbmZ0cyYmQXJyYXkuaXNBcnJheShuZnRzKSYmcHJpY2VTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgcHJpY2VTeW1ib2wmJnByaWNlJiYic3RyaW5nIj09dHlwZW9mIHByaWNlJiYhYXBpLkJpZ051bWJlcihwcmljZSkuaXNOYU4oKSYmIm51bWJlciI9PXR5cGVvZiBmZWUmJmZlZT49MCYmZmVlPD0xZTQmJk51bWJlci5pc0ludGVnZXIoZmVlKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChuZnRzLmxlbmd0aDw9NTAsImNhbm5vdCBzZWxsIG1vcmUgdGhhbiA1MCBORlQgaW5zdGFuY2VzIGF0IG9uY2UiKSYmYXBpLmFzc2VydCh0YWJsZUV4aXN0cywibWFya2V0IG5vdCBlbmFibGVkIGZvciBzeW1ib2wiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZighYXBpLmFzc2VydChuZnQmJm5mdC5ncm91cEJ5JiZuZnQuZ3JvdXBCeS5sZW5ndGg+MCwibWFya2V0IGdyb3VwaW5nIG5vdCBzZXQiKSlyZXR1cm47Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHtzeW1ib2w6c3ltYm9sfSk7aWYocGFyYW1zJiZ2b2lkIDAhPT1wYXJhbXMubWluRmVlJiYhYXBpLmFzc2VydChmZWU+PXBhcmFtcy5taW5GZWUsYGZlZSBtdXN0IGJlID49ICR7cGFyYW1zLm1pbkZlZX1gKSlyZXR1cm47Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cHJpY2VTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KHRva2VuJiZhcGkuQmlnTnVtYmVyKHByaWNlKS5ndCgwKSYmY291bnREZWNpbWFscyhwcmljZSk8PXRva2VuLnByZWNpc2lvbiwiaW52YWxpZCBwcmljZSIpKXtjb25zdCBuZnRBcnJheT1bXSx3cmFwcGVkTmZ0cz17c3ltYm9sOnN5bWJvbCxpZHM6bmZ0c307bmZ0QXJyYXkucHVzaCh3cmFwcGVkTmZ0cyk7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibmZ0IiwidHJhbnNmZXIiLHtmcm9tVHlwZToidXNlciIsdG86Im5mdG1hcmtldCIsdG9UeXBlOiJjb250cmFjdCIsbmZ0czpuZnRBcnJheSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7aWYocmVzLmV2ZW50cyl7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKS5nZXRUaW1lKCksZmluYWxQcmljZT1hcGkuQmlnTnVtYmVyKHByaWNlKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksbmZ0SW50ZWdlcklkTGlzdD1bXSxvcmRlckRhdGFNYXA9e307Zm9yKGxldCBpPTA7aTxyZXMuZXZlbnRzLmxlbmd0aDtpKz0xKXtjb25zdCBldj1yZXMuZXZlbnRzW2ldO2lmKGV2LmNvbnRyYWN0JiZldi5ldmVudCYmZXYuZGF0YSYmIm5mdCI9PT1ldi5jb250cmFjdCYmInRyYW5zZmVyIj09PWV2LmV2ZW50JiZldi5kYXRhLmZyb209PT1hcGkuc2VuZGVyJiYidSI9PT1ldi5kYXRhLmZyb21UeXBlJiYibmZ0bWFya2V0Ij09PWV2LmRhdGEudG8mJiJjIj09PWV2LmRhdGEudG9UeXBlJiZldi5kYXRhLnN5bWJvbD09PXN5bWJvbCl7Y29uc3QgaW5zdGFuY2VJZD1ldi5kYXRhLmlkLG9yZGVyRGF0YT17bmZ0SWQ6aW5zdGFuY2VJZCxncm91cGluZzp7fSxncm91cGluZ0tleToiIn0saW50ZWdlcklkPWFwaS5CaWdOdW1iZXIoaW5zdGFuY2VJZCkudG9OdW1iZXIoKTtuZnRJbnRlZ2VySWRMaXN0LnB1c2goaW50ZWdlcklkKSxvcmRlckRhdGFNYXBbaW50ZWdlcklkXT1vcmRlckRhdGF9fWNvbnN0IGluc3RhbmNlcz1hd2FpdCBhcGkuZGIuZmluZEluVGFibGUoIm5mdCIsaW5zdGFuY2VUYWJsZU5hbWUse19pZDp7JGluOm5mdEludGVnZXJJZExpc3R9fSw1MCwwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGo9MDtqPGluc3RhbmNlcy5sZW5ndGg7ais9MSl7Y29uc3QgaW5zdGFuY2U9aW5zdGFuY2VzW2pdLGdyb3VwaW5nPXt9O2xldCBncm91cGluZ0tleT0iIjtuZnQuZ3JvdXBCeS5mb3JFYWNoKChuYW1lPT57dm9pZCAwIT09aW5zdGFuY2UucHJvcGVydGllc1tuYW1lXSYmbnVsbCE9PWluc3RhbmNlLnByb3BlcnRpZXNbbmFtZV0/Z3JvdXBpbmdbbmFtZV09aW5zdGFuY2UucHJvcGVydGllc1tuYW1lXS50b1N0cmluZygpOmdyb3VwaW5nW25hbWVdPSIiLGdyb3VwaW5nS2V5PWdyb3VwaW5nS2V5KyI6IituYW1lKyI6Iitncm91cGluZ1tuYW1lXX0pKSxvcmRlckRhdGFNYXBbaW5zdGFuY2UuX2lkXS5ncm91cGluZz1ncm91cGluZyxvcmRlckRhdGFNYXBbaW5zdGFuY2UuX2lkXS5ncm91cGluZ0tleT1ncm91cGluZ0tleX1jb25zdCBncm91cGluZ01hcD17fTtmb3IobGV0IGs9MDtrPG5mdEludGVnZXJJZExpc3QubGVuZ3RoO2srPTEpe2NvbnN0IG9yZGVySW5mbz1vcmRlckRhdGFNYXBbbmZ0SW50ZWdlcklkTGlzdFtrXV0sb3JkZXI9e2FjY291bnQ6YXBpLnNlbmRlcixvd25lZEJ5OiJ1IixuZnRJZDpvcmRlckluZm8ubmZ0SWQsZ3JvdXBpbmc6b3JkZXJJbmZvLmdyb3VwaW5nLHRpbWVzdGFtcDp0aW1lc3RhbXAscHJpY2U6ZmluYWxQcmljZSxwcmljZURlYzp7JG51bWJlckRlY2ltYWw6ZmluYWxQcmljZX0scHJpY2VTeW1ib2w6cHJpY2VTeW1ib2wsZmVlOmZlZX0scmVzdWx0PWF3YWl0IGFwaS5kYi5pbnNlcnQobWFya2V0VGFibGVOYW1lLG9yZGVyKTthcGkuZW1pdCgic2VsbE9yZGVyIix7YWNjb3VudDpvcmRlci5hY2NvdW50LG93bmVkQnk6b3JkZXIub3duZWRCeSxzeW1ib2w6c3ltYm9sLG5mdElkOm9yZGVyLm5mdElkLHRpbWVzdGFtcDp0aW1lc3RhbXAscHJpY2U6b3JkZXIucHJpY2UscHJpY2VTeW1ib2w6b3JkZXIucHJpY2VTeW1ib2wsZmVlOmZlZSxvcmRlcklkOnJlc3VsdC5faWR9KTtjb25zdCBncm91cEluZm89b3JkZXJJbmZvLmdyb3VwaW5nS2V5IGluIGdyb3VwaW5nTWFwP2dyb3VwaW5nTWFwW29yZGVySW5mby5ncm91cGluZ0tleV06e2dyb3VwaW5nOm9yZGVySW5mby5ncm91cGluZyxpc0luQ29sbGVjdGlvbjohMSxjb3VudDowfTtncm91cEluZm8uY291bnQrPTEsZ3JvdXBpbmdNYXBbb3JkZXJJbmZvLmdyb3VwaW5nS2V5XT1ncm91cEluZm99YXdhaXQgdXBkYXRlT3BlbkludGVyZXN0KCJzZWxsIixzeW1ib2wscHJpY2VTeW1ib2wsZ3JvdXBpbmdNYXAsbmZ0Lmdyb3VwQnkpfX19fTs="}}}

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"packmanager","params":"","code":"Y29uc3QgQ09OVFJBQ1RfTkFNRT0icGFja21hbmFnZXIiLFVUSUxJVFlfVE9LRU5fU1lNQk9MPSJCRUUiLFVUSUxJVFlfVE9LRU5fUFJFQ0lTSU9OPTgsTUFYX05BTUVfTEVOR1RIPTEwMCxNQVhfQ0FSRFNfUEVSX1BBQ0s9MzAsTUFYX0NBUkRTX0FUX09OQ0U9NjAsTUFYX1BBUlRJVElPTlM9MTAwLE1BWF9ST0xMUz0xMCxNQVhfTlVNX05GVFNfSVNTVUFCTEU9MTA7YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJwYWNrcyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhY2tzIixbImFjY291bnQiLCJzeW1ib2wiLCJuZnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0eXBlcyIsWyJuZnQiLCJlZGl0aW9uIiwidHlwZUlkIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiZm9pbHMiLFsibmZ0IiwiZWRpdGlvbiIsImluZGV4Il0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiY2F0ZWdvcmllcyIsWyJuZnQiLCJlZGl0aW9uIiwiaW5kZXgiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJyYXJpdGllcyIsWyJuZnQiLCJlZGl0aW9uIiwiaW5kZXgiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0ZWFtcyIsWyJuZnQiLCJlZGl0aW9uIiwiaW5kZXgiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJtYW5hZ2VkTmZ0cyIsWyJuZnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKTtjb25zdCBwYXJhbXM9e3JlZ2lzdGVyRmVlOiIxMDAwIix0eXBlQWRkRmVlOiIxIn07YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfX07Y29uc3QgZG9SYW5kb21Sb2xsPXBhcnRpdGlvbj0+e2xldCByZXN1bHQ9MDtjb25zdCByb2xsPU1hdGguZmxvb3IoYXBpLnJhbmRvbSgpKnBhcnRpdGlvbltwYXJ0aXRpb24ubGVuZ3RoLTFdKSsxO2ZvcihsZXQgaT0wO2k8cGFydGl0aW9uLmxlbmd0aCYmcm9sbD5wYXJ0aXRpb25baV07aSs9MSlyZXN1bHQrPTE7cmV0dXJuIHJlc3VsdD49cGFydGl0aW9uLmxlbmd0aCYmKHJlc3VsdD1wYXJ0aXRpb24ubGVuZ3RoLTEpLHJlc3VsdH0saXNWYWxpZFBhcnRpdGlvbj1wYXJ0aXRpb249PntpZihwYXJ0aXRpb24mJiJvYmplY3QiPT10eXBlb2YgcGFydGl0aW9uJiZBcnJheS5pc0FycmF5KHBhcnRpdGlvbikmJnBhcnRpdGlvbi5sZW5ndGg+PTEmJnBhcnRpdGlvbi5sZW5ndGg8PTEwMCl7bGV0IHByZXZOdW09MDtmb3IobGV0IGk9MDtpPHBhcnRpdGlvbi5sZW5ndGg7aSs9MSl7Y29uc3QgdmFsPXBhcnRpdGlvbltpXTtpZighKCJudW1iZXIiPT10eXBlb2YgdmFsJiZOdW1iZXIuaXNJbnRlZ2VyKHZhbCkmJnZhbD5wcmV2TnVtKSlyZXR1cm4hMTtwcmV2TnVtPXZhbH1yZXR1cm4hMH1yZXR1cm4hMX0saXNUb2tlblRyYW5zZmVyVmVyaWZpZWQ9KHJlc3VsdCxmcm9tLHRvLHN5bWJvbCxxdWFudGl0eSxldmVudFN0cik9PiEodm9pZCAwIT09cmVzdWx0LmVycm9yc3x8IXJlc3VsdC5ldmVudHN8fHZvaWQgMD09PXJlc3VsdC5ldmVudHMuZmluZCgoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJmVsLmV2ZW50PT09ZXZlbnRTdHImJmVsLmRhdGEuZnJvbT09PWZyb20mJmVsLmRhdGEudG89PT10byYmYXBpLkJpZ051bWJlcihlbC5kYXRhLnF1YW50aXR5KS5lcShxdWFudGl0eSkmJmVsLmRhdGEuc3ltYm9sPT09c3ltYm9sKSkpLGNvdW50TmZ0SXNzdWFuY2U9KHJlc3VsdCxmcm9tLHRvLHN5bWJvbCk9PntsZXQgY291bnQ9MDtpZih2b2lkIDA9PT1yZXN1bHQuZXJyb3JzJiZyZXN1bHQuZXZlbnRzKXtjb3VudD1yZXN1bHQuZXZlbnRzLmZpbHRlcigoZT0+Im5mdCI9PT1lLmNvbnRyYWN0JiYiaXNzdWUiPT09ZS5ldmVudCYmZS5kYXRhLmZyb209PT1mcm9tJiZlLmRhdGEudG89PT10byYmZS5kYXRhLnN5bWJvbD09PXN5bWJvbCkpLmxlbmd0aH1yZXR1cm4gY291bnR9LGNhbGN1bGF0ZUJhbGFuY2U9KGJhbGFuY2UscXVhbnRpdHkscHJlY2lzaW9uLGFkZCk9PmFkZD9hcGkuQmlnTnVtYmVyKGJhbGFuY2UpLnBsdXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKTphcGkuQmlnTnVtYmVyKGJhbGFuY2UpLm1pbnVzKHF1YW50aXR5KS50b0ZpeGVkKHByZWNpc2lvbiksY291bnREZWNpbWFscz12YWx1ZT0+YXBpLkJpZ051bWJlcih2YWx1ZSkuZHAoKSx2ZXJpZnlUb2tlbkJhbGFuY2U9YXN5bmMoYW1vdW50LHN5bWJvbCxhY2NvdW50KT0+e2lmKGFwaS5CaWdOdW1iZXIoYW1vdW50KS5sdGUoMCkpcmV0dXJuITA7Y29uc3QgdG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbH0pO3JldHVybiEoIXRva2VuQmFsYW5jZXx8IWFwaS5CaWdOdW1iZXIodG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShhbW91bnQpKX0sdHJhbnNmZXJGZWU9YXN5bmMoYW1vdW50LGRlc3QsaXNTaWduZWRXaXRoQWN0aXZlS2V5KT0+e2NvbnN0IGFjdGlvblN0cj0icGFja21hbmFnZXIiPT09ZGVzdD8idHJhbnNmZXJUb0NvbnRyYWN0IjoidHJhbnNmZXIiO2lmKGFwaS5CaWdOdW1iZXIoYW1vdW50KS5ndCgwKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIixhY3Rpb25TdHIse3RvOmRlc3Qsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmFtb3VudCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7aWYoIWlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxhcGkuc2VuZGVyLGRlc3QsIkJFRSIsYW1vdW50LGFjdGlvblN0cikpcmV0dXJuITF9cmV0dXJuITB9O2FjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtyZWdpc3RlckZlZTpyZWdpc3RlckZlZSx0eXBlQWRkRmVlOnR5cGVBZGRGZWV9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtyZWdpc3RlckZlZSYmInN0cmluZyI9PXR5cGVvZiByZWdpc3RlckZlZSYmIWFwaS5CaWdOdW1iZXIocmVnaXN0ZXJGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocmVnaXN0ZXJGZWUpLmd0ZSgwKSYmKHBhcmFtcy5yZWdpc3RlckZlZT1yZWdpc3RlckZlZSksdHlwZUFkZEZlZSYmInN0cmluZyI9PXR5cGVvZiB0eXBlQWRkRmVlJiYhYXBpLkJpZ051bWJlcih0eXBlQWRkRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHR5cGVBZGRGZWUpLmd0ZSgwKSYmKHBhcmFtcy50eXBlQWRkRmVlPXR5cGVBZGRGZWUpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX0sYWN0aW9ucy5kZXBvc2l0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuZnRTeW1ib2w6bmZ0U3ltYm9sLGFtb3VudDphbW91bnQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChuZnRTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0U3ltYm9sJiZhbW91bnQmJiJzdHJpbmciPT10eXBlb2YgYW1vdW50JiYhYXBpLkJpZ051bWJlcihhbW91bnQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoYW1vdW50KS5ndCgwKSYmY291bnREZWNpbWFscyhhbW91bnQpPD04LCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB1bmRlck1hbmFnZW1lbnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hbmFnZWROZnRzIix7bmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVuZGVyTWFuYWdlbWVudCwiTkZUIG5vdCB1bmRlciBtYW5hZ2VtZW50Iikpe2NvbnN0IGhhc0Vub3VnaEJhbGFuY2U9YXdhaXQgdmVyaWZ5VG9rZW5CYWxhbmNlKGFtb3VudCwiQkVFIixhcGkuc2VuZGVyKTtpZihhcGkuYXNzZXJ0KGhhc0Vub3VnaEJhbGFuY2UsIm5vdCBlbm91Z2ggdG9rZW5zIHRvIGRlcG9zaXQiKSlyZXR1cm4hIWF3YWl0IHRyYW5zZmVyRmVlKGFtb3VudCwicGFja21hbmFnZXIiLGlzU2lnbmVkV2l0aEFjdGl2ZUtleSkmJih1bmRlck1hbmFnZW1lbnQuZmVlUG9vbD1jYWxjdWxhdGVCYWxhbmNlKHVuZGVyTWFuYWdlbWVudC5mZWVQb29sLGFtb3VudCw4LCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJtYW5hZ2VkTmZ0cyIsdW5kZXJNYW5hZ2VtZW50KSxhcGkuZW1pdCgiZGVwb3NpdCIse25mdDpuZnRTeW1ib2wsbmV3RmVlUG9vbDp1bmRlck1hbmFnZW1lbnQuZmVlUG9vbH0pLCEwKX19cmV0dXJuITF9LGFjdGlvbnMuZGVsZXRlVHlwZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bmZ0U3ltYm9sOm5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHlwZUlkOnR5cGVJZCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5mdFN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBuZnRTeW1ib2wmJnZvaWQgMCE9PXR5cGVJZCYmIm51bWJlciI9PXR5cGVvZiB0eXBlSWQmJk51bWJlci5pc0ludGVnZXIodHlwZUlkKSYmdHlwZUlkPj0wJiZ2b2lkIDAhPT1lZGl0aW9uJiYibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTAsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgdG8gZGVsZXRlIHR5cGVzIikmJmFwaS5hc3NlcnQoMD09PW5mdC5jaXJjdWxhdGluZ1N1cHBseSwiTkZUIGluc3RhbmNlcyBtdXN0IG5vdCBiZSBpbiBjaXJjdWxhdGlvbiIpKXtjb25zdCB1bmRlck1hbmFnZW1lbnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hbmFnZWROZnRzIix7bmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVuZGVyTWFuYWdlbWVudCwiTkZUIG5vdCB1bmRlciBtYW5hZ2VtZW50Iikpe2NvbnN0IHRoZVR5cGU9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInR5cGVzIix7bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHlwZUlkOnR5cGVJZH0pO2lmKG51bGwhPT10aGVUeXBlKXJldHVybiBhd2FpdCBhcGkuZGIucmVtb3ZlKCJ0eXBlcyIsdGhlVHlwZSksYXBpLmVtaXQoImRlbGV0ZVR5cGUiLHtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6dHlwZUlkfSksITB9fX1yZXR1cm4hMX0sYWN0aW9ucy51cGRhdGVUeXBlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuZnRTeW1ib2w6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6dHlwZUlkLGNhdGVnb3J5OmNhdGVnb3J5LHJhcml0eTpyYXJpdHksdGVhbTp0ZWFtLG5hbWU6bmFtZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKHZvaWQgMD09PW5hbWUmJnZvaWQgMD09PWNhdGVnb3J5JiZ2b2lkIDA9PT1yYXJpdHkmJnZvaWQgMD09PXRlYW0pcmV0dXJuITE7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodm9pZCAwPT09bmFtZXx8bmFtZSYmInN0cmluZyI9PXR5cGVvZiBuYW1lJiZhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KG5hbWUsIiAiKSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD0xMDAsImludmFsaWQgdHlwZSBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDEwMCIpJiZhcGkuYXNzZXJ0KG5mdFN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBuZnRTeW1ib2wmJnZvaWQgMCE9PXR5cGVJZCYmIm51bWJlciI9PXR5cGVvZiB0eXBlSWQmJk51bWJlci5pc0ludGVnZXIodHlwZUlkKSYmdHlwZUlkPj0wJiZ2b2lkIDAhPT1lZGl0aW9uJiYibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTAmJih2b2lkIDA9PT1jYXRlZ29yeXx8Im51bWJlciI9PXR5cGVvZiBjYXRlZ29yeSYmTnVtYmVyLmlzSW50ZWdlcihjYXRlZ29yeSkmJmNhdGVnb3J5Pj0wKSYmKHZvaWQgMD09PXJhcml0eXx8Im51bWJlciI9PXR5cGVvZiByYXJpdHkmJk51bWJlci5pc0ludGVnZXIocmFyaXR5KSYmcmFyaXR5Pj0wKSYmKHZvaWQgMD09PXRlYW18fCJudW1iZXIiPT10eXBlb2YgdGVhbSYmTnVtYmVyLmlzSW50ZWdlcih0ZWFtKSYmdGVhbT49MCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgdG8gdXBkYXRlIHR5cGVzIikpe2NvbnN0IHVuZGVyTWFuYWdlbWVudD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFuYWdlZE5mdHMiLHtuZnQ6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dW5kZXJNYW5hZ2VtZW50LCJORlQgbm90IHVuZGVyIG1hbmFnZW1lbnQiKSYmYXBpLmFzc2VydChlZGl0aW9uLnRvU3RyaW5nKClpbiB1bmRlck1hbmFnZW1lbnQuZWRpdGlvbk1hcHBpbmcsImVkaXRpb24gbm90IHJlZ2lzdGVyZWQiKSl7Y29uc3QgZWRpdGlvbk1hcHBpbmc9dW5kZXJNYW5hZ2VtZW50LmVkaXRpb25NYXBwaW5nW2VkaXRpb24udG9TdHJpbmcoKV07aWYoYXBpLmFzc2VydCghKHZvaWQgMCE9PWNhdGVnb3J5JiZlZGl0aW9uTWFwcGluZy5jYXRlZ29yeVJPfHx2b2lkIDAhPT1yYXJpdHkmJmVkaXRpb25NYXBwaW5nLnJhcml0eVJPfHx2b2lkIDAhPT10ZWFtJiZlZGl0aW9uTWFwcGluZy50ZWFtUk98fHZvaWQgMCE9PW5hbWUmJmVkaXRpb25NYXBwaW5nLm5hbWVSTyksImNhbm5vdCBlZGl0IHJlYWQtb25seSBwcm9wZXJ0aWVzIikpe2NvbnN0IHRoZVR5cGU9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInR5cGVzIix7bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHlwZUlkOnR5cGVJZH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRoZVR5cGUsInR5cGUgZG9lcyBub3QgZXhpc3QiKSl7Y29uc3QgdXBkYXRlPXtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6dHlwZUlkfTtyZXR1cm4gdm9pZCAwIT09bmFtZSYmKHVwZGF0ZS5vbGROYW1lPXRoZVR5cGUubmFtZSx0aGVUeXBlLm5hbWU9bmFtZSx1cGRhdGUubmV3TmFtZT1uYW1lKSx2b2lkIDAhPT1jYXRlZ29yeSYmKHVwZGF0ZS5vbGRDYXRlZ29yeT10aGVUeXBlLmNhdGVnb3J5LHRoZVR5cGUuY2F0ZWdvcnk9Y2F0ZWdvcnksdXBkYXRlLm5ld0NhdGVnb3J5PWNhdGVnb3J5KSx2b2lkIDAhPT1yYXJpdHkmJih1cGRhdGUub2xkUmFyaXR5PXRoZVR5cGUucmFyaXR5LHRoZVR5cGUucmFyaXR5PXJhcml0eSx1cGRhdGUubmV3UmFyaXR5PXJhcml0eSksdm9pZCAwIT09dGVhbSYmKHVwZGF0ZS5vbGRUZWFtPXRoZVR5cGUudGVhbSx0aGVUeXBlLnRlYW09dGVhbSx1cGRhdGUubmV3VGVhbT10ZWFtKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0eXBlcyIsdGhlVHlwZSksYXBpLmVtaXQoInVwZGF0ZVR5cGUiLHVwZGF0ZSksITB9fX19fXJldHVybiExfSxhY3Rpb25zLmFkZFR5cGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25mdFN5bWJvbDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLGNhdGVnb3J5OmNhdGVnb3J5LHJhcml0eTpyYXJpdHksdGVhbTp0ZWFtLG5hbWU6bmFtZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChuYW1lLCIgIikpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9MTAwLCJpbnZhbGlkIHR5cGUgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiAxMDAiKSYmYXBpLmFzc2VydChuZnRTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0U3ltYm9sJiZ2b2lkIDAhPT1lZGl0aW9uJiYibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTAmJnZvaWQgMCE9PWNhdGVnb3J5JiYibnVtYmVyIj09dHlwZW9mIGNhdGVnb3J5JiZOdW1iZXIuaXNJbnRlZ2VyKGNhdGVnb3J5KSYmY2F0ZWdvcnk+PTAmJnZvaWQgMCE9PXJhcml0eSYmIm51bWJlciI9PXR5cGVvZiByYXJpdHkmJk51bWJlci5pc0ludGVnZXIocmFyaXR5KSYmcmFyaXR5Pj0wJiZ2b2lkIDAhPT10ZWFtJiYibnVtYmVyIj09dHlwZW9mIHRlYW0mJk51bWJlci5pc0ludGVnZXIodGVhbSkmJnRlYW0+PTAsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgdG8gYWRkIGEgdHlwZSIpKXtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLGhhc0Vub3VnaEJhbGFuY2U9YXdhaXQgdmVyaWZ5VG9rZW5CYWxhbmNlKHBhcmFtcy50eXBlQWRkRmVlLCJCRUUiLGFwaS5zZW5kZXIpO2lmKGFwaS5hc3NlcnQoaGFzRW5vdWdoQmFsYW5jZSwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSB0eXBlIGFkZCBmZWUiKSl7Y29uc3QgdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11bmRlck1hbmFnZW1lbnQsIk5GVCBub3QgdW5kZXIgbWFuYWdlbWVudCIpJiZhcGkuYXNzZXJ0KGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZywiZWRpdGlvbiBub3QgcmVnaXN0ZXJlZCIpKXtpZighYXdhaXQgdHJhbnNmZXJGZWUocGFyYW1zLnR5cGVBZGRGZWUsIm51bGwiLGlzU2lnbmVkV2l0aEFjdGl2ZUtleSkpcmV0dXJuITE7Y29uc3QgbmV3VHlwZUlkPXVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ1tlZGl0aW9uLnRvU3RyaW5nKCldLm5leHRUeXBlSWQsbmV3VHlwZT17bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHlwZUlkOm5ld1R5cGVJZCxjYXRlZ29yeTpjYXRlZ29yeSxyYXJpdHk6cmFyaXR5LHRlYW06dGVhbSxuYW1lOm5hbWV9LHJlc3VsdD1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJ0eXBlcyIsbmV3VHlwZSk7cmV0dXJuIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ1tlZGl0aW9uLnRvU3RyaW5nKCldLm5leHRUeXBlSWQ9bmV3VHlwZUlkKzEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWFuYWdlZE5mdHMiLHVuZGVyTWFuYWdlbWVudCksYXBpLmVtaXQoImFkZFR5cGUiLHtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6bmV3VHlwZUlkLHJvd0lkOnJlc3VsdC5faWR9KSwhMH19fX1yZXR1cm4hMX0sYWN0aW9ucy5zZXRUcmFpdE5hbWU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25mdFN5bWJvbDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLHRyYWl0OnRyYWl0LGluZGV4OmluZGV4LG5hbWU6bmFtZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHRhYmxlTWFwcGluZz17Zm9pbDoiZm9pbHMiLGNhdGVnb3J5OiJjYXRlZ29yaWVzIixyYXJpdHk6InJhcml0aWVzIix0ZWFtOiJ0ZWFtcyJ9O2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChuYW1lLCIgIikpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9MTAwLCJpbnZhbGlkIHRyYWl0IG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgMTAwIikmJmFwaS5hc3NlcnQobmZ0U3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG5mdFN5bWJvbCYmdHJhaXQmJiJzdHJpbmciPT10eXBlb2YgdHJhaXQmJlsiZm9pbCIsImNhdGVnb3J5IiwicmFyaXR5IiwidGVhbSJdLmluY2x1ZGVzKHRyYWl0KSYmdm9pZCAwIT09aW5kZXgmJiJudW1iZXIiPT10eXBlb2YgaW5kZXgmJk51bWJlci5pc0ludGVnZXIoaW5kZXgpJiZpbmRleD49MCYmaW5kZXg8MTAwJiZ2b2lkIDAhPT1lZGl0aW9uJiYibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTAsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgZm9yIHVwZGF0ZXMiKSl7Y29uc3QgdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11bmRlck1hbmFnZW1lbnQsIk5GVCBub3QgdW5kZXIgbWFuYWdlbWVudCIpJiZhcGkuYXNzZXJ0KGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZywiZWRpdGlvbiBub3QgcmVnaXN0ZXJlZCIpKXtjb25zdCBjdXJyZW50VHJhaXQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUodGFibGVNYXBwaW5nW3RyYWl0XSx7bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24saW5kZXg6aW5kZXh9KTtpZihudWxsIT09Y3VycmVudFRyYWl0KXtpZihuYW1lIT09Y3VycmVudFRyYWl0Lm5hbWUpe2NvbnN0IG9sZE5hbWU9Y3VycmVudFRyYWl0Lm5hbWU7Y3VycmVudFRyYWl0Lm5hbWU9bmFtZSxhd2FpdCBhcGkuZGIudXBkYXRlKHRhYmxlTWFwcGluZ1t0cmFpdF0sY3VycmVudFRyYWl0KSxhcGkuZW1pdCgidXBkYXRlVHJhaXROYW1lIix7bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHJhaXQ6dHJhaXQsaW5kZXg6aW5kZXgsb2xkTmFtZTpvbGROYW1lLG5ld05hbWU6bmFtZX0pfX1lbHNle2NvbnN0IG5ld1RyYWl0PXtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbixpbmRleDppbmRleCxuYW1lOm5hbWV9O2F3YWl0IGFwaS5kYi5pbnNlcnQodGFibGVNYXBwaW5nW3RyYWl0XSxuZXdUcmFpdCksYXBpLmVtaXQoInNldFRyYWl0TmFtZSIse25mdDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLHRyYWl0OnRyYWl0LGluZGV4OmluZGV4LG5hbWU6bmFtZX0pfX19fX0sYWN0aW9ucy51cGRhdGVFZGl0aW9uPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuZnRTeW1ib2w6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbixlZGl0aW9uTmFtZTplZGl0aW9uTmFtZSxjYXRlZ29yeVJPOmNhdGVnb3J5Uk8scmFyaXR5Uk86cmFyaXR5Uk8sdGVhbVJPOnRlYW1STyxuYW1lUk86bmFtZVJPLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYodm9pZCAwPT09ZWRpdGlvbk5hbWUmJnZvaWQgMD09PWNhdGVnb3J5Uk8mJnZvaWQgMD09PXJhcml0eVJPJiZ2b2lkIDA9PT10ZWFtUk8mJnZvaWQgMD09PW5hbWVSTylyZXR1cm4hMTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1lZGl0aW9uTmFtZXx8ZWRpdGlvbk5hbWUmJiJzdHJpbmciPT10eXBlb2YgZWRpdGlvbk5hbWUmJmFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QoZWRpdGlvbk5hbWUsIiAiKSkmJmVkaXRpb25OYW1lLmxlbmd0aD4wJiZlZGl0aW9uTmFtZS5sZW5ndGg8PTEwMCwiaW52YWxpZCBlZGl0aW9uIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgMTAwIikmJmFwaS5hc3NlcnQobmZ0U3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG5mdFN5bWJvbCYmKHZvaWQgMD09PWNhdGVnb3J5Uk98fGNhdGVnb3J5Uk8mJiJib29sZWFuIj09dHlwZW9mIGNhdGVnb3J5Uk8pJiYodm9pZCAwPT09cmFyaXR5Uk98fHJhcml0eVJPJiYiYm9vbGVhbiI9PXR5cGVvZiByYXJpdHlSTykmJih2b2lkIDA9PT10ZWFtUk98fHRlYW1STyYmImJvb2xlYW4iPT10eXBlb2YgdGVhbVJPKSYmKHZvaWQgMD09PW5hbWVST3x8bmFtZVJPJiYiYm9vbGVhbiI9PXR5cGVvZiBuYW1lUk8pJiZ2b2lkIDAhPT1lZGl0aW9uJiYibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTAsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgZm9yIHVwZGF0ZXMiKSl7Y29uc3QgdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11bmRlck1hbmFnZW1lbnQsIk5GVCBub3QgdW5kZXIgbWFuYWdlbWVudCIpJiZhcGkuYXNzZXJ0KGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZywiZWRpdGlvbiBub3QgcmVnaXN0ZXJlZCIpKXtjb25zdCBlZGl0aW9uTWFwPXVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ1tlZGl0aW9uLnRvU3RyaW5nKCldLHVwZGF0ZT17bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb259O3JldHVybiB2b2lkIDAhPT1lZGl0aW9uTmFtZSYmKHVwZGF0ZS5vbGRFZGl0aW9uTmFtZT1lZGl0aW9uTWFwLmVkaXRpb25OYW1lLGVkaXRpb25NYXAuZWRpdGlvbk5hbWU9ZWRpdGlvbk5hbWUsdXBkYXRlLm5ld0VkaXRpb25OYW1lPWVkaXRpb25OYW1lKSxjYXRlZ29yeVJPJiYoZWRpdGlvbk1hcC5jYXRlZ29yeVJPPSEwLHVwZGF0ZS5jYXRlZ29yeVJPPSEwKSxyYXJpdHlSTyYmKGVkaXRpb25NYXAucmFyaXR5Uk89ITAsdXBkYXRlLnJhcml0eVJPPSEwKSx0ZWFtUk8mJihlZGl0aW9uTWFwLnRlYW1STz0hMCx1cGRhdGUudGVhbVJPPSEwKSxuYW1lUk8mJihlZGl0aW9uTWFwLm5hbWVSTz0hMCx1cGRhdGUubmFtZVJPPSEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJtYW5hZ2VkTmZ0cyIsdW5kZXJNYW5hZ2VtZW50KSxhcGkuZW1pdCgidXBkYXRlRWRpdGlvbiIsdXBkYXRlKSwhMH19fXJldHVybiExfSxhY3Rpb25zLnVwZGF0ZVBhY2s9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3BhY2tTeW1ib2w6cGFja1N5bWJvbCxuZnRTeW1ib2w6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbixjYXJkc1BlclBhY2s6Y2FyZHNQZXJQYWNrLGZvaWxDaGFuY2U6Zm9pbENoYW5jZSxjYXRlZ29yeUNoYW5jZTpjYXRlZ29yeUNoYW5jZSxyYXJpdHlDaGFuY2U6cmFyaXR5Q2hhbmNlLHRlYW1DaGFuY2U6dGVhbUNoYW5jZSxudW1Sb2xsczpudW1Sb2xscyxpc0ZpbmFsaXplZDppc0ZpbmFsaXplZCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKHZvaWQgMD09PWVkaXRpb24mJnZvaWQgMD09PWNhcmRzUGVyUGFjayYmdm9pZCAwPT09Zm9pbENoYW5jZSYmdm9pZCAwPT09Y2F0ZWdvcnlDaGFuY2UmJnZvaWQgMD09PXJhcml0eUNoYW5jZSYmdm9pZCAwPT09dGVhbUNoYW5jZSYmdm9pZCAwPT09bnVtUm9sbHMmJnZvaWQgMD09PWlzRmluYWxpemVkKXJldHVybiExO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHBhY2tTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgcGFja1N5bWJvbCYmbmZ0U3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG5mdFN5bWJvbCYmKHZvaWQgMD09PWlzRmluYWxpemVkfHxpc0ZpbmFsaXplZCYmImJvb2xlYW4iPT10eXBlb2YgaXNGaW5hbGl6ZWQpJiYodm9pZCAwPT09ZWRpdGlvbnx8Im51bWJlciI9PXR5cGVvZiBlZGl0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKGVkaXRpb24pJiZlZGl0aW9uPj0wKSYmKHZvaWQgMD09PW51bVJvbGxzfHwibnVtYmVyIj09dHlwZW9mIG51bVJvbGxzJiZOdW1iZXIuaXNJbnRlZ2VyKG51bVJvbGxzKSYmbnVtUm9sbHM+PTEmJm51bVJvbGxzPD0xMCkmJih2b2lkIDA9PT1mb2lsQ2hhbmNlfHxpc1ZhbGlkUGFydGl0aW9uKGZvaWxDaGFuY2UpKSYmKHZvaWQgMD09PWNhdGVnb3J5Q2hhbmNlfHxpc1ZhbGlkUGFydGl0aW9uKGNhdGVnb3J5Q2hhbmNlKSkmJih2b2lkIDA9PT1yYXJpdHlDaGFuY2V8fGlzVmFsaWRQYXJ0aXRpb24ocmFyaXR5Q2hhbmNlKSkmJih2b2lkIDA9PT10ZWFtQ2hhbmNlfHxpc1ZhbGlkUGFydGl0aW9uKHRlYW1DaGFuY2UpKSYmKHZvaWQgMD09PWNhcmRzUGVyUGFja3x8Im51bWJlciI9PXR5cGVvZiBjYXJkc1BlclBhY2smJk51bWJlci5pc0ludGVnZXIoY2FyZHNQZXJQYWNrKSYmY2FyZHNQZXJQYWNrPj0xJiZjYXJkc1BlclBhY2s8PTMwKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3Qgc2V0dGluZ3M9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhY2tzIix7c3ltYm9sOnBhY2tTeW1ib2wsbmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXNldHRpbmdzLCJwYWNrIG5vdCByZWdpc3RlcmVkIGZvciB0aGlzIE5GVCIpJiZhcGkuYXNzZXJ0KHNldHRpbmdzLmFjY291bnQ9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCB0byB1cGRhdGUgc2V0dGluZ3MiKSYmYXBpLmFzc2VydCghc2V0dGluZ3MuaXNGaW5hbGl6ZWQsInBhY2sgc2V0dGluZ3MgYWxyZWFkeSBmaW5hbGl6ZWQiKSl7aWYodm9pZCAwIT09ZWRpdGlvbil7Y29uc3QgdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZighYXBpLmFzc2VydChudWxsIT09dW5kZXJNYW5hZ2VtZW50JiZlZGl0aW9uLnRvU3RyaW5nKClpbiB1bmRlck1hbmFnZW1lbnQuZWRpdGlvbk1hcHBpbmcsImVkaXRpb24gbm90IHJlZ2lzdGVyZWQiKSlyZXR1cm4hMX1jb25zdCB1cGRhdGU9e3N5bWJvbDpwYWNrU3ltYm9sLG5mdDpuZnRTeW1ib2x9O3JldHVybiB2b2lkIDAhPT1lZGl0aW9uJiYodXBkYXRlLm9sZEVkaXRpb249c2V0dGluZ3MuZWRpdGlvbixzZXR0aW5ncy5lZGl0aW9uPWVkaXRpb24sdXBkYXRlLm5ld0VkaXRpb249ZWRpdGlvbiksdm9pZCAwIT09Y2FyZHNQZXJQYWNrJiYodXBkYXRlLm9sZENhcmRzUGVyUGFjaz1zZXR0aW5ncy5jYXJkc1BlclBhY2ssc2V0dGluZ3MuY2FyZHNQZXJQYWNrPWNhcmRzUGVyUGFjayx1cGRhdGUubmV3Q2FyZHNQZXJQYWNrPWNhcmRzUGVyUGFjayksdm9pZCAwIT09Zm9pbENoYW5jZSYmKHVwZGF0ZS5vbGRGb2lsQ2hhbmNlPXNldHRpbmdzLmZvaWxDaGFuY2Usc2V0dGluZ3MuZm9pbENoYW5jZT1mb2lsQ2hhbmNlLHVwZGF0ZS5uZXdGb2lsQ2hhbmNlPWZvaWxDaGFuY2UpLHZvaWQgMCE9PWNhdGVnb3J5Q2hhbmNlJiYodXBkYXRlLm9sZENhdGVnb3J5Q2hhbmNlPXNldHRpbmdzLmNhdGVnb3J5Q2hhbmNlLHNldHRpbmdzLmNhdGVnb3J5Q2hhbmNlPWNhdGVnb3J5Q2hhbmNlLHVwZGF0ZS5uZXdDYXRlZ29yeUNoYW5jZT1jYXRlZ29yeUNoYW5jZSksdm9pZCAwIT09cmFyaXR5Q2hhbmNlJiYodXBkYXRlLm9sZFJhcml0eUNoYW5jZT1zZXR0aW5ncy5yYXJpdHlDaGFuY2Usc2V0dGluZ3MucmFyaXR5Q2hhbmNlPXJhcml0eUNoYW5jZSx1cGRhdGUubmV3UmFyaXR5Q2hhbmNlPXJhcml0eUNoYW5jZSksdm9pZCAwIT09dGVhbUNoYW5jZSYmKHVwZGF0ZS5vbGRUZWFtQ2hhbmNlPXNldHRpbmdzLnRlYW1DaGFuY2Usc2V0dGluZ3MudGVhbUNoYW5jZT10ZWFtQ2hhbmNlLHVwZGF0ZS5uZXdUZWFtQ2hhbmNlPXRlYW1DaGFuY2UpLHZvaWQgMCE9PW51bVJvbGxzJiYodXBkYXRlLm9sZE51bVJvbGxzPXNldHRpbmdzLm51bVJvbGxzLHNldHRpbmdzLm51bVJvbGxzPW51bVJvbGxzLHVwZGF0ZS5uZXdOdW1Sb2xscz1udW1Sb2xscyksaXNGaW5hbGl6ZWQmJihzZXR0aW5ncy5pc0ZpbmFsaXplZD0hMCx1cGRhdGUuaXNGaW5hbGl6ZWQ9ITApLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhY2tzIixzZXR0aW5ncyksYXBpLmVtaXQoInVwZGF0ZVBhY2siLHVwZGF0ZSksITB9fXJldHVybiExfSxhY3Rpb25zLnJlZ2lzdGVyUGFjaz1hc3luYyBwYXlsb2FkPT57Y29uc3R7cGFja1N5bWJvbDpwYWNrU3ltYm9sLG5mdFN5bWJvbDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLGVkaXRpb25OYW1lOmVkaXRpb25OYW1lLGNhcmRzUGVyUGFjazpjYXJkc1BlclBhY2ssZm9pbENoYW5jZTpmb2lsQ2hhbmNlLGNhdGVnb3J5Q2hhbmNlOmNhdGVnb3J5Q2hhbmNlLHJhcml0eUNoYW5jZTpyYXJpdHlDaGFuY2UsdGVhbUNoYW5jZTp0ZWFtQ2hhbmNlLG51bVJvbGxzOm51bVJvbGxzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodm9pZCAwPT09ZWRpdGlvbk5hbWV8fGVkaXRpb25OYW1lJiYic3RyaW5nIj09dHlwZW9mIGVkaXRpb25OYW1lJiZhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KGVkaXRpb25OYW1lLCIgIikpJiZlZGl0aW9uTmFtZS5sZW5ndGg+MCYmZWRpdGlvbk5hbWUubGVuZ3RoPD0xMDAsImludmFsaWQgZWRpdGlvbiBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDEwMCIpJiZhcGkuYXNzZXJ0KHBhY2tTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgcGFja1N5bWJvbCYmbmZ0U3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG5mdFN5bWJvbCYmdm9pZCAwIT09ZWRpdGlvbiYmIm51bWJlciI9PXR5cGVvZiBlZGl0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKGVkaXRpb24pJiZlZGl0aW9uPj0wJiZ2b2lkIDAhPT1udW1Sb2xscyYmIm51bWJlciI9PXR5cGVvZiBudW1Sb2xscyYmTnVtYmVyLmlzSW50ZWdlcihudW1Sb2xscykmJm51bVJvbGxzPj0xJiZudW1Sb2xsczw9MTAmJmlzVmFsaWRQYXJ0aXRpb24oZm9pbENoYW5jZSkmJmlzVmFsaWRQYXJ0aXRpb24oY2F0ZWdvcnlDaGFuY2UpJiZpc1ZhbGlkUGFydGl0aW9uKHJhcml0eUNoYW5jZSkmJmlzVmFsaWRQYXJ0aXRpb24odGVhbUNoYW5jZSkmJnZvaWQgMCE9PWNhcmRzUGVyUGFjayYmIm51bWJlciI9PXR5cGVvZiBjYXJkc1BlclBhY2smJk51bWJlci5pc0ludGVnZXIoY2FyZHNQZXJQYWNrKSYmY2FyZHNQZXJQYWNrPj0xJiZjYXJkc1BlclBhY2s8PTMwLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLGhhc0Vub3VnaEJhbGFuY2U9YXdhaXQgdmVyaWZ5VG9rZW5CYWxhbmNlKHBhcmFtcy5yZWdpc3RlckZlZSwiQkVFIixhcGkuc2VuZGVyKTtpZihhcGkuYXNzZXJ0KGhhc0Vub3VnaEJhbGFuY2UsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgcmVnaXN0cmF0aW9uIGZlZSIpKXtjb25zdCBwYWNrVG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cGFja1N5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXBhY2tUb2tlbiwicGFjayBzeW1ib2wgbXVzdCBleGlzdCIpKXtjb25zdCB1bmRlck1hbmFnZW1lbnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hbmFnZWROZnRzIix7bmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVuZGVyTWFuYWdlbWVudCwiTkZUIG5vdCB1bmRlciBtYW5hZ2VtZW50Iikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgdG8gcmVnaXN0ZXIiKSl7Y29uc3Qgc2V0dGluZ3M9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhY2tzIix7c3ltYm9sOnBhY2tTeW1ib2wsbmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbD09PXNldHRpbmdzLGBwYWNrIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgJHtuZnRTeW1ib2x9YCkpe2lmKCFhcGkuYXNzZXJ0KGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ3x8ZWRpdGlvbk5hbWUmJiEoZWRpdGlvbi50b1N0cmluZygpaW4gdW5kZXJNYW5hZ2VtZW50LmVkaXRpb25NYXBwaW5nKSwibXVzdCBwcm92aWRlIGEgbmFtZSBmb3IgdGhlIG5ldyBlZGl0aW9uIikpcmV0dXJuITE7aWYoIWF3YWl0IHRyYW5zZmVyRmVlKHBhcmFtcy5yZWdpc3RlckZlZSwibnVsbCIsaXNTaWduZWRXaXRoQWN0aXZlS2V5KSlyZXR1cm4hMTtjb25zdCBuZXdTZXR0aW5ncz17YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpwYWNrU3ltYm9sLG5mdDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLGNhcmRzUGVyUGFjazpjYXJkc1BlclBhY2ssZm9pbENoYW5jZTpmb2lsQ2hhbmNlLGNhdGVnb3J5Q2hhbmNlOmNhdGVnb3J5Q2hhbmNlLHJhcml0eUNoYW5jZTpyYXJpdHlDaGFuY2UsdGVhbUNoYW5jZTp0ZWFtQ2hhbmNlLG51bVJvbGxzOm51bVJvbGxzLGlzRmluYWxpemVkOiExfTtpZighKGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZykpe2NvbnN0IG5ld01hcHBpbmc9e25leHRUeXBlSWQ6MCxlZGl0aW9uTmFtZTplZGl0aW9uTmFtZSxjYXRlZ29yeVJPOiExLHJhcml0eVJPOiExLHRlYW1STzohMSxuYW1lUk86ITF9O3VuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ1tlZGl0aW9uLnRvU3RyaW5nKCldPW5ld01hcHBpbmcsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWFuYWdlZE5mdHMiLHVuZGVyTWFuYWdlbWVudCl9cmV0dXJuIGF3YWl0IGFwaS5kYi5pbnNlcnQoInBhY2tzIixuZXdTZXR0aW5ncyksYXBpLmVtaXQoInJlZ2lzdGVyUGFjayIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6cGFja1N5bWJvbCxuZnQ6bmZ0U3ltYm9sfSksITB9fX19fX1yZXR1cm4hMX0sYWN0aW9ucy5jcmVhdGVOZnQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25hbWU6bmFtZSxvcmdOYW1lOm9yZ05hbWUscHJvZHVjdE5hbWU6cHJvZHVjdE5hbWUsc3ltYm9sOnN5bWJvbCx1cmw6dXJsLGlzRm9pbFJlYWRPbmx5OmlzRm9pbFJlYWRPbmx5LGlzVHlwZVJlYWRPbmx5OmlzVHlwZVJlYWRPbmx5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmKHZvaWQgMD09PWlzRm9pbFJlYWRPbmx5fHwiYm9vbGVhbiI9PXR5cGVvZiBpc0ZvaWxSZWFkT25seSkmJih2b2lkIDA9PT1pc1R5cGVSZWFkT25seXx8ImJvb2xlYW4iPT10eXBlb2YgaXNUeXBlUmVhZE9ubHkpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBuZnRQYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJwYXJhbXMiLHt9KSx7bmZ0Q3JlYXRpb25GZWU6bmZ0Q3JlYXRpb25GZWV9PW5mdFBhcmFtcyxoYXNFbm91Z2hCYWxhbmNlPWF3YWl0IHZlcmlmeVRva2VuQmFsYW5jZShuZnRDcmVhdGlvbkZlZSwiQkVFIixhcGkuc2VuZGVyKTtpZihhcGkuYXNzZXJ0KGhhc0Vub3VnaEJhbGFuY2UsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgTkZUIGNyZWF0aW9uIikpe2xldCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbD09PW5mdCwic3ltYm9sIGFscmVhZHkgZXhpc3RzIikmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImNyZWF0ZSIse25hbWU6bmFtZSxzeW1ib2w6c3ltYm9sLG9yZ05hbWU6b3JnTmFtZSxwcm9kdWN0TmFtZTpwcm9kdWN0TmFtZSx1cmw6dXJsLGF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHM6W10sYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHM6WyJwYWNrbWFuYWdlciJdLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pLGFwaS5hc3NlcnQobnVsbCE9PW5mdCwiZXJyb3IgY3JlYXRpbmcgTkZUIikpKXtjb25zdCBmaW5hbElzRm9pbFJlYWRPbmx5PXZvaWQgMD09PWlzRm9pbFJlYWRPbmx5fHxpc0ZvaWxSZWFkT25seSxmaW5hbElzVHlwZVJlYWRPbmx5PXZvaWQgMD09PWlzVHlwZVJlYWRPbmx5fHxpc1R5cGVSZWFkT25seTthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImFkZFByb3BlcnR5Iix7c3ltYm9sOnN5bWJvbCxuYW1lOiJlZGl0aW9uIix0eXBlOiJudW1iZXIiLGlzUmVhZE9ubHk6ITAsYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50czpbXSxhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0czpbInBhY2ttYW5hZ2VyIl0saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibmZ0IiwiYWRkUHJvcGVydHkiLHtzeW1ib2w6c3ltYm9sLG5hbWU6ImZvaWwiLHR5cGU6Im51bWJlciIsaXNSZWFkT25seTpmaW5hbElzRm9pbFJlYWRPbmx5LGF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzOlsicGFja21hbmFnZXIiXSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJuZnQiLCJhZGRQcm9wZXJ0eSIse3N5bWJvbDpzeW1ib2wsbmFtZToidHlwZSIsdHlwZToibnVtYmVyIixpc1JlYWRPbmx5OmZpbmFsSXNUeXBlUmVhZE9ubHksYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHM6WyJwYWNrbWFuYWdlciJdLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2NvbnN0IHByb3BlcnR5Q291bnQ9T2JqZWN0LmtleXMobmZ0LnByb3BlcnRpZXMpLmxlbmd0aDtpZihhcGkuYXNzZXJ0KDM9PT1wcm9wZXJ0eUNvdW50LCJORlQgY3JlYXRlZCBidXQgZXJyb3IgYWRkaW5nIGRhdGEgcHJvcGVydGllcyIpKXthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsInNldEdyb3VwQnkiLHtzeW1ib2w6c3ltYm9sLHByb3BlcnRpZXM6WyJlZGl0aW9uIiwiZm9pbCIsInR5cGUiXSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7Y29uc3QgbmV3UmVjb3JkPXtuZnQ6c3ltYm9sLGZlZVBvb2w6IjAiLGVkaXRpb25NYXBwaW5nOnt9fTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJtYW5hZ2VkTmZ0cyIsbmV3UmVjb3JkKSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2NvbnN0IGdyb3VwQnlDb3VudD1uZnQuZ3JvdXBCeS5sZW5ndGg7YXBpLmFzc2VydCgzPT09Z3JvdXBCeUNvdW50LCJORlQgY3JlYXRlZCB3aXRoIGRhdGEgcHJvcGVydGllcywgYnV0IGVycm9yIHNldHRpbmcgZ3JvdXBCeSIpJiZhcGkuZW1pdCgiY3JlYXRlTmZ0Iix7c3ltYm9sOnN5bWJvbH0pfX19fX07Y29uc3QgZ2VuZXJhdGVSYW5kb21JbnN0YW5jZT0oc2V0dGluZ3MsbmZ0U3ltYm9sLHRvLHR5cGVzKT0+e2NvbnN0IGZvaWw9ZG9SYW5kb21Sb2xsKHNldHRpbmdzLmZvaWxDaGFuY2UpO2xldCBjYW5kaWRhdGVUeXBlcz1bXSxyb2xsQ291bnQ9MDtmb3IoOzA9PT1jYW5kaWRhdGVUeXBlcy5sZW5ndGgmJnJvbGxDb3VudDxzZXR0aW5ncy5udW1Sb2xsczspe2NvbnN0IGNhdGVnb3J5PWRvUmFuZG9tUm9sbChzZXR0aW5ncy5jYXRlZ29yeUNoYW5jZSkscmFyaXR5PWRvUmFuZG9tUm9sbChzZXR0aW5ncy5yYXJpdHlDaGFuY2UpLHRlYW09ZG9SYW5kb21Sb2xsKHNldHRpbmdzLnRlYW1DaGFuY2UpO2NhbmRpZGF0ZVR5cGVzPXR5cGVzLmZpbHRlcigodD0+dC5jYXRlZ29yeT09PWNhdGVnb3J5JiZ0LnJhcml0eT09PXJhcml0eSYmdC50ZWFtPT09dGVhbSkpLHJvbGxDb3VudCs9MX1jb25zdCB0eXBlPWNhbmRpZGF0ZVR5cGVzLmxlbmd0aD4wP2NhbmRpZGF0ZVR5cGVzW01hdGguZmxvb3IoYXBpLnJhbmRvbSgpKmNhbmRpZGF0ZVR5cGVzLmxlbmd0aCldLnR5cGVJZDowO3JldHVybntzeW1ib2w6bmZ0U3ltYm9sLGZyb21UeXBlOiJjb250cmFjdCIsdG86dG8sZmVlU3ltYm9sOiJCRUUiLHByb3BlcnRpZXM6e2VkaXRpb246c2V0dGluZ3MuZWRpdGlvbixmb2lsOmZvaWwsdHlwZTp0eXBlfX19O2FjdGlvbnMub3Blbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7cGFja1N5bWJvbDpwYWNrU3ltYm9sLG5mdFN5bWJvbDpuZnRTeW1ib2wscGFja3M6cGFja3MsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChwYWNrU3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHBhY2tTeW1ib2wmJm5mdFN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBuZnRTeW1ib2wmJnZvaWQgMCE9PXBhY2tzJiYibnVtYmVyIj09dHlwZW9mIHBhY2tzJiZOdW1iZXIuaXNJbnRlZ2VyKHBhY2tzKSYmcGFja3M+PTEmJnBhY2tzPD05OTksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHNldHRpbmdzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYWNrcyIse3N5bWJvbDpwYWNrU3ltYm9sLG5mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1zZXR0aW5ncywicGFjayBkb2VzIG5vdCBvcGVuIHRoaXMgTkZUIikpe2NvbnN0IGhhc0Vub3VnaFBhY2tzPWF3YWl0IHZlcmlmeVRva2VuQmFsYW5jZShwYWNrcyxwYWNrU3ltYm9sLGFwaS5zZW5kZXIpO2lmKGFwaS5hc3NlcnQoaGFzRW5vdWdoUGFja3MsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHBhY2tzIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSksdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnQsIk5GVCBzeW1ib2wgbXVzdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG51bGwhPT11bmRlck1hbmFnZW1lbnQsIk5GVCBub3QgdW5kZXIgbWFuYWdlbWVudCIpKXtjb25zdCBudW1OZnRzPXBhY2tzKnNldHRpbmdzLmNhcmRzUGVyUGFjaztpZighYXBpLmFzc2VydChudW1OZnRzPD02MCwidW5hYmxlIHRvIG9wZW4gdGhhdCBtYW55IHBhY2tzIGF0IG9uY2UiKSlyZXR1cm4hMTtjb25zdCBuZnRQYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJwYXJhbXMiLHt9KSx7bmZ0SXNzdWFuY2VGZWU6bmZ0SXNzdWFuY2VGZWV9PW5mdFBhcmFtcyxwcm9wZXJ0eUNvdW50PU9iamVjdC5rZXlzKG5mdC5wcm9wZXJ0aWVzKS5sZW5ndGgsdG90YWxJc3N1YW5jZUZlZT1hcGkuQmlnTnVtYmVyKG5mdElzc3VhbmNlRmVlLkJFRSkubXVsdGlwbGllZEJ5KHByb3BlcnR5Q291bnQrMSkubXVsdGlwbGllZEJ5KG51bU5mdHMpLGNhbkFmZm9yZElzc3VhbmNlPWFwaS5CaWdOdW1iZXIodW5kZXJNYW5hZ2VtZW50LmZlZVBvb2wpLmd0ZSh0b3RhbElzc3VhbmNlRmVlKTtpZihhcGkuYXNzZXJ0KGNhbkFmZm9yZElzc3VhbmNlLCJjb250cmFjdCBjYW5ub3QgYWZmb3JkIGlzc3VhbmNlIikpe2NvbnN0IHR5cGVzPWF3YWl0IGFwaS5kYi5maW5kKCJ0eXBlcyIse25mdDpuZnRTeW1ib2wsZWRpdGlvbjpzZXR0aW5ncy5lZGl0aW9ufSwwLDAsW3tpbmRleDoidHlwZUlkIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtpZighYXBpLmFzc2VydCh0eXBlcy5sZW5ndGg+PTEsIk5GVCBtdXN0IGhhdmUgYXQgbGVhc3QgMSBpbnN0YW5jZSB0eXBlIikpcmV0dXJuITE7bGV0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDpwYWNrU3ltYm9sLHF1YW50aXR5OnBhY2tzLnRvU3RyaW5nKCksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2lmKCFhcGkuYXNzZXJ0KGlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxhcGkuc2VuZGVyLCJudWxsIixwYWNrU3ltYm9sLHBhY2tzLnRvU3RyaW5nKCksInRyYW5zZmVyIiksInVuYWJsZSB0byB0cmFuc2ZlciBwYWNrIHRva2VucyIpKXJldHVybiExO2xldCBpc3N1ZUNvdW50ZXI9MCx2ZXJpZmllZENvdW50PTAsaW5zdGFuY2VzPVtdO2Zvcig7aXNzdWVDb3VudGVyPG51bU5mdHM7KWluc3RhbmNlcy5wdXNoKGdlbmVyYXRlUmFuZG9tSW5zdGFuY2Uoc2V0dGluZ3MsbmZ0U3ltYm9sLGFwaS5zZW5kZXIsdHlwZXMpKSxpc3N1ZUNvdW50ZXIrPTEsMTA9PT1pbnN0YW5jZXMubGVuZ3RoJiYocmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibmZ0IiwiaXNzdWVNdWx0aXBsZSIse2luc3RhbmNlczppbnN0YW5jZXMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLHZlcmlmaWVkQ291bnQrPWNvdW50TmZ0SXNzdWFuY2UocmVzLCJwYWNrbWFuYWdlciIsYXBpLnNlbmRlcixuZnRTeW1ib2wpLGluc3RhbmNlcz1bXSk7cmV0dXJuIGluc3RhbmNlcy5sZW5ndGg+MCYmKHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImlzc3VlTXVsdGlwbGUiLHtpbnN0YW5jZXM6aW5zdGFuY2VzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSx2ZXJpZmllZENvdW50Kz1jb3VudE5mdElzc3VhbmNlKHJlcywicGFja21hbmFnZXIiLGFwaS5zZW5kZXIsbmZ0U3ltYm9sKSksdW5kZXJNYW5hZ2VtZW50LmZlZVBvb2w9Y2FsY3VsYXRlQmFsYW5jZSh1bmRlck1hbmFnZW1lbnQuZmVlUG9vbCx0b3RhbElzc3VhbmNlRmVlLDgsITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1hbmFnZWROZnRzIix1bmRlck1hbmFnZW1lbnQpLCEhYXBpLmFzc2VydCh2ZXJpZmllZENvdW50PT09bnVtTmZ0cyxgdW5hYmxlIHRvIGlzc3VlIGFsbCBORlQgaW5zdGFuY2VzOyAke3ZlcmlmaWVkQ291bnR9IG9mICR7bnVtTmZ0c30gaXNzdWVkYCl9fX19fXJldHVybiExfTs="}}}

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"tokens","params":"","code":"Y29uc3QgQUNDT1VOVF9CTEFDS0xJU1Q9e2dhdGVpb2RlcG9zaXQ6MSxkZWVwY3J5cHRvODoxLGJpdHRyZXg6MSxwb2xvbmlleDoxLCJodW9iaS1wcm8iOjEsImJpbmFuY2UtaG90IjoxLGJpdHZhdm86MSxibG9ja3RyYWRlczoxLHByb2JpdHN0ZWVtOjEscHJvYml0aGl2ZToxLGlvbm9teToxLG14Y2hpdmU6MSxjb2luYmFzZWJhc2U6MSxvcmlub2NvOjEsInVzZXIuZHVuYW11IjoxfSxIRV9BQ0NPVU5UUz17ImhpdmUtZW5naW5lIjoxLCJzd2FwLWV0aCI6MSwiYnRjLXN3YXAiOjEsImdyYXBoZW5lLXN3YXAiOjEsImhvbmV5LXN3YXAiOjF9LFJFU0VSVkVEX1NZTUJPTFM9e0VORzoibnVsbCIsU1RFRU1QOiJzdGVlbS1wZWciLEJUQ1A6ImJ0Y3BlZyIsTFRDUDoibHRjcCIsRE9HRVA6ImRvZ2VwIixCQ0hQOiJiY2hwIixTTVRUOiJzdGVlbW1vbnN0ZXJzIixFTToic3RlZW0tZW5nIixFTUZPVVI6InN0ZWVtLWVuZyIsSElWRVA6InN0ZWVtLXRva2VucyIsR0xJTlQ6InN0ZWVtbW9uc3RlcnMifSxWRVJJRklFRF9JU1NVRVJTPVsiY29tbWVudHMiLCJtaW5pbmciLCJ0b2tlbmZ1bmRzIiwiYmVlZG9sbGFyIl0sY2FsY3VsYXRlQmFsYW5jZT0oYmFsYW5jZSxxdWFudGl0eSxwcmVjaXNpb24sYWRkKT0+YWRkP2FwaS5CaWdOdW1iZXIoYmFsYW5jZSkucGx1cyhxdWFudGl0eSkudG9GaXhlZChwcmVjaXNpb24pOmFwaS5CaWdOdW1iZXIoYmFsYW5jZSkubWludXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKSxjb3VudERlY2ltYWxzPXZhbHVlPT5hcGkuQmlnTnVtYmVyKHZhbHVlKS5kcCgpLGZpbmRBbmRQcm9jZXNzQWxsPWFzeW5jKHRhYmxlLHF1ZXJ5LGNhbGxiYWNrKT0+e2xldCBvZmZzZXQ9MCxyZXN1bHRzPVtdLGRvbmU9ITE7Zm9yKDshZG9uZTspaWYocmVzdWx0cz1hd2FpdCBhcGkuZGIuZmluZCh0YWJsZSxxdWVyeSwxZTMsb2Zmc2V0KSxyZXN1bHRzKXtmb3IobGV0IGk9MDtpPHJlc3VsdHMubGVuZ3RoO2krPTEpYXdhaXQgY2FsbGJhY2socmVzdWx0c1tpXSk7cmVzdWx0cy5sZW5ndGg8MWUzP2RvbmU9ITA6b2Zmc2V0Kz0xZTN9fTthY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoInRva2VucyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInRva2VucyIsWyJzeW1ib2wiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJiYWxhbmNlcyIsWyJhY2NvdW50Il0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiY29udHJhY3RzQmFsYW5jZXMiLFsiYWNjb3VudCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1Vuc3Rha2VzIixbImFjY291bnQiLCJ1bnN0YWtlQ29tcGxldGVUaW1lc3RhbXAiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJkZWxlZ2F0aW9ucyIsWyJmcm9tIiwidG8iXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsWyJhY2NvdW50IiwiY29tcGxldGVUaW1lc3RhbXAiXSk7Y29uc3QgcGFyYW1zPXt0b2tlbkNyZWF0aW9uRmVlOiIwIixlbmFibGVEZWxlZ2F0aW9uRmVlOiIwIixlbmFibGVTdGFraW5nRmVlOiIwIn07YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfWVsc2V7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZighcGFyYW1zLmJsYWNrbGlzdCl7cGFyYW1zLmJsYWNrbGlzdD1BQ0NPVU5UX0JMQUNLTElTVCxwYXJhbXMuaGVBY2NvdW50cz1IRV9BQ0NPVU5UUztjb25zdCB1bnNldHM9e307bGV0IHVzZVVuc2V0cz0hMTtwYXJhbXMuZml4TXVsdGlUeFVuc3Rha2VCYWxhbmNlJiYoZGVsZXRlIHBhcmFtcy5maXhNdWx0aVR4VW5zdGFrZUJhbGFuY2UsdW5zZXRzLmZpeE11bHRpVHhVbnN0YWtlQmFsYW5jZT0iIix1c2VVbnNldHM9ITApLHBhcmFtcy5jYW5jZWxCYWRVbnN0YWtlcyYmKGRlbGV0ZSBwYXJhbXMuY2FuY2VsQmFkVW5zdGFrZXMsdW5zZXRzLmNhbmNlbEJhZFVuc3Rha2VzPSIiLHVzZVVuc2V0cz0hMCksdXNlVW5zZXRzP2F3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zLHVuc2V0cyk6YXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfX19O2NvbnN0IGJhbGFuY2VUZW1wbGF0ZT17YWNjb3VudDpudWxsLHN5bWJvbDpudWxsLGJhbGFuY2U6IjAiLHN0YWtlOiIwIixwZW5kaW5nVW5zdGFrZToiMCIsZGVsZWdhdGlvbnNJbjoiMCIsZGVsZWdhdGlvbnNPdXQ6IjAiLHBlbmRpbmdVbmRlbGVnYXRpb25zOiIwIn0sYWRkU3Rha2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSk9PntsZXQgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnRva2VuLnN5bWJvbH0pO251bGw9PT1iYWxhbmNlJiYoYmFsYW5jZT1iYWxhbmNlVGVtcGxhdGUsYmFsYW5jZS5hY2NvdW50PWFjY291bnQsYmFsYW5jZS5zeW1ib2w9dG9rZW4uc3ltYm9sLGJhbGFuY2U9YXdhaXQgYXBpLmRiLmluc2VydCgiYmFsYW5jZXMiLGJhbGFuY2UpKSx2b2lkIDA9PT1iYWxhbmNlLnN0YWtlJiYoYmFsYW5jZS5zdGFrZT0iMCIsYmFsYW5jZS5wZW5kaW5nVW5zdGFrZT0iMCIpO2NvbnN0IG9yaWdpbmFsU3Rha2U9YmFsYW5jZS5zdGFrZTtyZXR1cm4gYmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSwhIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLnN0YWtlKS5ndChvcmlnaW5hbFN0YWtlKSwiY2Fubm90IGFkZCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLHZvaWQgMD09PXRva2VuLnRvdGFsU3Rha2VkJiYodG9rZW4udG90YWxTdGFrZWQ9IjAiKSx0b2tlbi50b3RhbFN0YWtlZD1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnRvdGFsU3Rha2VkLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksITApfSxzdWJCYWxhbmNlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHksdGFibGUpPT57Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSh0YWJsZSx7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLmJhbGFuY2UpLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBiYWxhbmNlIikpe2NvbnN0IG9yaWdpbmFsQmFsYW5jZT1iYWxhbmNlLmJhbGFuY2U7aWYoYmFsYW5jZS5iYWxhbmNlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5iYWxhbmNlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkubHQob3JpZ2luYWxCYWxhbmNlKSwiY2Fubm90IHN1YnRyYWN0IikpcmV0dXJuIGF3YWl0IGFwaS5kYi51cGRhdGUodGFibGUsYmFsYW5jZSksITB9cmV0dXJuITF9LGFkZEJhbGFuY2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSx0YWJsZSk9PntsZXQgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSh0YWJsZSx7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtpZihudWxsPT09YmFsYW5jZSlyZXR1cm4gYmFsYW5jZT1iYWxhbmNlVGVtcGxhdGUsYmFsYW5jZS5hY2NvdW50PWFjY291bnQsYmFsYW5jZS5zeW1ib2w9dG9rZW4uc3ltYm9sLGJhbGFuY2UuYmFsYW5jZT1xdWFudGl0eSxhd2FpdCBhcGkuZGIuaW5zZXJ0KHRhYmxlLGJhbGFuY2UpLCEwO2NvbnN0IG9yaWdpbmFsQmFsYW5jZT1iYWxhbmNlLmJhbGFuY2U7cmV0dXJuIGJhbGFuY2UuYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UuYmFsYW5jZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLCEhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkuZ3Qob3JpZ2luYWxCYWxhbmNlKSwiY2Fubm90IGFkZCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSh0YWJsZSxiYWxhbmNlKSwhMCl9O2FjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHt0b2tlbkNyZWF0aW9uRmVlOnRva2VuQ3JlYXRpb25GZWUsZW5hYmxlRGVsZWdhdGlvbkZlZTplbmFibGVEZWxlZ2F0aW9uRmVlLGVuYWJsZVN0YWtpbmdGZWU6ZW5hYmxlU3Rha2luZ0ZlZSxibGFja2xpc3Q6YmxhY2tsaXN0LGhlQWNjb3VudHM6aGVBY2NvdW50c309cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO3Rva2VuQ3JlYXRpb25GZWUmJiJzdHJpbmciPT10eXBlb2YgdG9rZW5DcmVhdGlvbkZlZSYmIWFwaS5CaWdOdW1iZXIodG9rZW5DcmVhdGlvbkZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcih0b2tlbkNyZWF0aW9uRmVlKS5ndGUoMCkmJihwYXJhbXMudG9rZW5DcmVhdGlvbkZlZT10b2tlbkNyZWF0aW9uRmVlKSxlbmFibGVEZWxlZ2F0aW9uRmVlJiYic3RyaW5nIj09dHlwZW9mIGVuYWJsZURlbGVnYXRpb25GZWUmJiFhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkuZ3RlKDApJiYocGFyYW1zLmVuYWJsZURlbGVnYXRpb25GZWU9ZW5hYmxlRGVsZWdhdGlvbkZlZSksZW5hYmxlU3Rha2luZ0ZlZSYmInN0cmluZyI9PXR5cGVvZiBlbmFibGVTdGFraW5nRmVlJiYhYXBpLkJpZ051bWJlcihlbmFibGVTdGFraW5nRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGVuYWJsZVN0YWtpbmdGZWUpLmd0ZSgwKSYmKHBhcmFtcy5lbmFibGVTdGFraW5nRmVlPWVuYWJsZVN0YWtpbmdGZWUpLGJsYWNrbGlzdCYmIm9iamVjdCI9PXR5cGVvZiBibGFja2xpc3QmJihwYXJhbXMuYmxhY2tsaXN0PWJsYWNrbGlzdCksaGVBY2NvdW50cyYmIm9iamVjdCI9PXR5cGVvZiBoZUFjY291bnRzJiYocGFyYW1zLmhlQWNjb3VudHM9aGVBY2NvdW50cyksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfSxhY3Rpb25zLnVwZGF0ZVVybD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dXJsOnVybCxzeW1ib2w6c3ltYm9sfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdXJsJiYic3RyaW5nIj09dHlwZW9mIHVybCwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydCh1cmwubGVuZ3RoPD0yNTUsImludmFsaWQgdXJsOiBtYXggbGVuZ3RoIG9mIDI1NSIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKHRva2VuJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXRyeXtjb25zdCBtZXRhZGF0YT1KU09OLnBhcnNlKHRva2VuLm1ldGFkYXRhKTthcGkuYXNzZXJ0KG1ldGFkYXRhJiZtZXRhZGF0YS51cmwsImFuIGVycm9yIG9jY3VyZWQgd2hlbiB0cnlpbmcgdG8gdXBkYXRlIHRoZSB1cmwiKSYmKG1ldGFkYXRhLnVybD11cmwsdG9rZW4ubWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKX1jYXRjaChlKXt9fX0sYWN0aW9ucy51cGRhdGVNZXRhZGF0YT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bWV0YWRhdGE6bWV0YWRhdGEsc3ltYm9sOnN5bWJvbCxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQsZnJvbVZlcmlmaWVkQ29udHJhY3Q9ImhpdmUtZW5naW5lIj09PWFwaS5zZW5kZXImJmNhbGxpbmdDb250cmFjdEluZm8mJi0xIT09VkVSSUZJRURfSVNTVUVSUy5pbmRleE9mKGNhbGxpbmdDb250cmFjdEluZm8ubmFtZSk7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZtZXRhZGF0YSYmIm9iamVjdCI9PXR5cGVvZiBtZXRhZGF0YSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbiYmYXBpLmFzc2VydChmcm9tVmVyaWZpZWRDb250cmFjdHx8dG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpdHJ5e2NvbnN0IGZpbmFsTWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpO2FwaS5hc3NlcnQoZmluYWxNZXRhZGF0YS5sZW5ndGg8PTFlMywiaW52YWxpZCBtZXRhZGF0YTogbWF4IGxlbmd0aCBvZiAxMDAwIikmJih0b2tlbi5tZXRhZGF0YT1maW5hbE1ldGFkYXRhLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKX1jYXRjaChlKXt9fX0sYWN0aW9ucy51cGRhdGVQcmVjaXNpb249YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscHJlY2lzaW9uOnByZWNpc2lvbixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wpJiZhcGkuYXNzZXJ0KHByZWNpc2lvbj4wJiZwcmVjaXNpb248PTgmJk51bWJlci5pc0ludGVnZXIocHJlY2lzaW9uKSwiaW52YWxpZCBwcmVjaXNpb24iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTt0b2tlbiYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydChwcmVjaXNpb24+dG9rZW4ucHJlY2lzaW9uLCJwcmVjaXNpb24gY2FuIG9ubHkgYmUgaW5jcmVhc2VkIikmJih0b2tlbi5wcmVjaXNpb249cHJlY2lzaW9uLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKX19LGFjdGlvbnMudHJhbnNmZXJPd25lcnNoaXA9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdG86dG8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0bywiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbiYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCk7YXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikmJih0b2tlbi5pc3N1ZXI9ZmluYWxUbyxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuZW1pdCgidHJhbnNmZXJPd25lcnNoaXAiLHtmcm9tOmFwaS5zZW5kZXIsdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sfSkpfX19LGFjdGlvbnMuY3JlYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuYW1lOm5hbWUsc3ltYm9sOnN5bWJvbCx1cmw6dXJsLHByZWNpc2lvbjpwcmVjaXNpb24sbWF4U3VwcGx5Om1heFN1cHBseSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHt0b2tlbkNyZWF0aW9uRmVlOnRva2VuQ3JlYXRpb25GZWUsaGVBY2NvdW50czpoZUFjY291bnRzfT1wYXJhbXMsZnJvbVZlcmlmaWVkQ29udHJhY3Q9ImhpdmUtZW5naW5lIj09PWFwaS5zZW5kZXImJmNhbGxpbmdDb250cmFjdEluZm8mJi0xIT09VkVSSUZJRURfSVNTVUVSUy5pbmRleE9mKGNhbGxpbmdDb250cmFjdEluZm8ubmFtZSksdXRpbGl0eVRva2VuQmFsYW5jZT1mcm9tVmVyaWZpZWRDb250cmFjdD9udWxsOmF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxhdXRob3JpemVkQ3JlYXRpb249ISghZnJvbVZlcmlmaWVkQ29udHJhY3QmJiFhcGkuQmlnTnVtYmVyKHRva2VuQ3JlYXRpb25GZWUpLmx0ZSgwKSYmMSE9PWhlQWNjb3VudHNbYXBpLnNlbmRlcl0pfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHRva2VuQ3JlYXRpb25GZWUpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZXMiKSYmYXBpLmFzc2VydChmcm9tVmVyaWZpZWRDb250cmFjdHx8ITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmKHZvaWQgMD09PXVybHx8dXJsJiYic3RyaW5nIj09dHlwZW9mIHVybCkmJihwcmVjaXNpb24mJiJudW1iZXIiPT10eXBlb2YgcHJlY2lzaW9ufHwwPT09cHJlY2lzaW9uKSYmbWF4U3VwcGx5JiYic3RyaW5nIj09dHlwZW9mIG1heFN1cHBseSYmIWFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KHN5bWJvbC5sZW5ndGg+MCYmc3ltYm9sLmxlbmd0aDw9MTAmJmFwaS52YWxpZGF0b3IuaXNBbHBoYShhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChzeW1ib2wsIi4iKSkmJmFwaS52YWxpZGF0b3IuaXNVcHBlcmNhc2Uoc3ltYm9sKSYmKC0xPT09c3ltYm9sLmluZGV4T2YoIi4iKXx8c3ltYm9sLmluZGV4T2YoIi4iKT4wJiZzeW1ib2wuaW5kZXhPZigiLiIpPHN5bWJvbC5sZW5ndGgtMSYmc3ltYm9sLmluZGV4T2YoIi4iKT09PXN5bWJvbC5sYXN0SW5kZXhPZigiLiIpKSwnaW52YWxpZCBzeW1ib2w6IHVwcGVyY2FzZSBsZXR0ZXJzIG9ubHkgYW5kIG9uZSAiLiIgYWxsb3dlZCwgbWF4IGxlbmd0aCBvZiAxMCcpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PVJFU0VSVkVEX1NZTUJPTFNbc3ltYm9sXXx8YXBpLnNlbmRlcj09PVJFU0VSVkVEX1NZTUJPTFNbc3ltYm9sXSwiY2Fubm90IHVzZSB0aGlzIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KDE9PT1oZUFjY291bnRzW2FwaS5zZW5kZXJdfHwtMT09PXN5bWJvbC5pbmRleE9mKCJTV0FQIiksImludmFsaWQgc3ltYm9sOiBub3QgYWxsb3dlZCB0byB1c2UgU1dBUCIpJiZhcGkuYXNzZXJ0KDE9PT1oZUFjY291bnRzW2FwaS5zZW5kZXJdfHwtMT09PXN5bWJvbC5pbmRleE9mKCJFVEgiKSwiaW52YWxpZCBzeW1ib2w6IG5vdCBhbGxvd2VkIHRvIHVzZSBFVEgiKSYmYXBpLmFzc2VydCgxPT09aGVBY2NvdW50c1thcGkuc2VuZGVyXXx8LTE9PT1zeW1ib2wuaW5kZXhPZigiQlNDIiksImludmFsaWQgc3ltYm9sOiBub3QgYWxsb3dlZCB0byB1c2UgQlNDIikmJmFwaS5hc3NlcnQoMT09PWhlQWNjb3VudHNbYXBpLnNlbmRlcl18fC0xPT09c3ltYm9sLmluZGV4T2YoIi4iKSwnaW52YWxpZCBzeW1ib2w6IHVzYWdlIG9mICIuIiBpcyByZXN0cmljdGVkJykmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChuYW1lLCIgIikpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9NTAsImludmFsaWQgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXVybHx8dXJsLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSYmYXBpLmFzc2VydChwcmVjaXNpb24+PTAmJnByZWNpc2lvbjw9OCYmTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pLCJpbnZhbGlkIHByZWNpc2lvbiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5ndCgwKSwibWF4U3VwcGx5IG11c3QgYmUgcG9zaXRpdmUiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkubHRlKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSxgbWF4U3VwcGx5IG11c3QgYmUgbG93ZXIgdGhhbiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWApKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbD09PXRva2VuLCJzeW1ib2wgYWxyZWFkeSBleGlzdHMiKSl7bGV0IG1ldGFkYXRhPXt1cmw6dm9pZCAwPT09dXJsPyIiOnVybH07bWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpO2NvbnN0IG5ld1Rva2VuPXtpc3N1ZXI6ZnJvbVZlcmlmaWVkQ29udHJhY3Q/Im51bGwiOmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxuYW1lOm5hbWUsbWV0YWRhdGE6bWV0YWRhdGEscHJlY2lzaW9uOnByZWNpc2lvbixtYXhTdXBwbHk6YXBpLkJpZ051bWJlcihtYXhTdXBwbHkpLnRvRml4ZWQocHJlY2lzaW9uKSxzdXBwbHk6IjAiLGNpcmN1bGF0aW5nU3VwcGx5OiIwIixzdGFraW5nRW5hYmxlZDohMSx1bnN0YWtpbmdDb29sZG93bjoxLGRlbGVnYXRpb25FbmFibGVkOiExLHVuZGVsZWdhdGlvbkNvb2xkb3duOjB9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInRva2VucyIsbmV3VG9rZW4pLGFwaS5CaWdOdW1iZXIodG9rZW5DcmVhdGlvbkZlZSkuZ3QoMCkmJnZvaWQgMD09PWhlQWNjb3VudHNbYXBpLnNlbmRlcl0mJiFmcm9tVmVyaWZpZWRDb250cmFjdCYmYXdhaXQgYWN0aW9ucy50cmFuc2Zlcih7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTp0b2tlbkNyZWF0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KX19fSxhY3Rpb25zLmlzc3VlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0bzp0byxzeW1ib2w6c3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2xldCBxdWFudGl0eT1wYXlsb2FkLnF1YW50aXR5O2NvbnN0IGZyb21WZXJpZmllZENvbnRyYWN0PSJudWxsIj09PWFwaS5zZW5kZXImJi0xIT09VkVSSUZJRURfSVNTVUVSUy5pbmRleE9mKGNhbGxpbmdDb250cmFjdEluZm8ubmFtZSl8fGNhbGxpbmdDb250cmFjdEluZm8mJiJiZWVkb2xsYXIiPT09Y2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lO2lmKGZyb21WZXJpZmllZENvbnRyYWN0fHxhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0byYmInN0cmluZyI9PXR5cGVvZiB0byYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChmcm9tVmVyaWZpZWRDb250cmFjdHx8dG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGFsbG93ZWQgdG8gaXNzdWUgdG9rZW5zIikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IGlzc3VlIHBvc2l0aXZlIHF1YW50aXR5IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0b2tlbi5tYXhTdXBwbHkpLm1pbnVzKHRva2VuLnN1cHBseSkuZ3RlKHF1YW50aXR5KSwicXVhbnRpdHkgZXhjZWVkcyBhdmFpbGFibGUgc3VwcGx5IikmJmFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpKXtxdWFudGl0eT1hcGkuQmlnTnVtYmVyKHF1YW50aXR5KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbik7bGV0IHJlcz1hd2FpdCBhZGRCYWxhbmNlKHRva2VuLmlzc3Vlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTshMD09PXJlcyYmZmluYWxUbyE9PXRva2VuLmlzc3VlciYmYXdhaXQgc3ViQmFsYW5jZSh0b2tlbi5pc3N1ZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikmJihyZXM9YXdhaXQgYWRkQmFsYW5jZShmaW5hbFRvLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpLCExPT09cmVzJiZhd2FpdCBhZGRCYWxhbmNlKHRva2VuLmlzc3Vlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSksITA9PT1yZXMmJih0b2tlbi5zdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5zdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSwibnVsbCIhPT1maW5hbFRvJiYodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuZW1pdCgidHJhbnNmZXJGcm9tQ29udHJhY3QiLHtmcm9tOiJ0b2tlbnMiLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19fSxhY3Rpb25zLmlzc3VlVG9Db250cmFjdD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG86dG8sc3ltYm9sOnN5bWJvbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZDtsZXQgcXVhbnRpdHk9cGF5bG9hZC5xdWFudGl0eTtjb25zdCBmcm9tVmVyaWZpZWRDb250cmFjdD0ibnVsbCI9PT1hcGkuc2VuZGVyJiYtMSE9PVZFUklGSUVEX0lTU1VFUlMuaW5kZXhPZihjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUpO2lmKGZyb21WZXJpZmllZENvbnRyYWN0fHxhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0byYmInN0cmluZyI9PXR5cGVvZiB0byYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChmcm9tVmVyaWZpZWRDb250cmFjdHx8dG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGFsbG93ZWQgdG8gaXNzdWUgdG9rZW5zIikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IGlzc3VlIHBvc2l0aXZlIHF1YW50aXR5IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0b2tlbi5tYXhTdXBwbHkpLm1pbnVzKHRva2VuLnN1cHBseSkuZ3RlKHF1YW50aXR5KSwicXVhbnRpdHkgZXhjZWVkcyBhdmFpbGFibGUgc3VwcGx5IikmJmFwaS5hc3NlcnQoZmluYWxUby5sZW5ndGg+PTMmJmZpbmFsVG8ubGVuZ3RoPD01MCwiaW52YWxpZCB0byIpKXtxdWFudGl0eT1hcGkuQmlnTnVtYmVyKHF1YW50aXR5KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbik7ITA9PT1hd2FpdCBhZGRCYWxhbmNlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIikmJih0b2tlbi5zdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5zdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSwibnVsbCIhPT1maW5hbFRvJiYodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuZW1pdCgiaXNzdWVUb0NvbnRyYWN0Iix7ZnJvbToidG9rZW5zIix0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fX0sYWN0aW9ucy50cmFuc2Zlcj1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG86dG8sc3ltYm9sOnN5bWJvbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2xldCBxdWFudGl0eT1wYXlsb2FkLnF1YW50aXR5O2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpO2lmKGFwaS5hc3NlcnQoZmluYWxUbyE9PWFwaS5zZW5kZXIsImNhbm5vdCB0cmFuc2ZlciB0byBzZWxmIikpe2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2JsYWNrbGlzdDpibGFja2xpc3R9PXBhcmFtcztpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1ibGFja2xpc3RbZmluYWxUb10sYG5vdCBhbGxvd2VkIHRvIHNlbmQgdG8gJHtmaW5hbFRvfWApKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgdHJhbnNmZXIgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpKXtyZXR1cm4hMT09PWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKT8oYXdhaXQgYWRkQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpLCExKTooIm51bGwiPT09ZmluYWxUbyYmKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSksYXBpLmVtaXQoInRyYW5zZmVyIix7ZnJvbTphcGkuc2VuZGVyLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCEwKX19fX1yZXR1cm4hMX0sYWN0aW9ucy50cmFuc2ZlclRvQ29udHJhY3Q9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2Zyb206ZnJvbSx0bzp0byxzeW1ib2w6c3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7bGV0IHF1YW50aXR5PXBheWxvYWQucXVhbnRpdHk7Y29uc3QgZmluYWxGcm9tPXZvaWQgMD09PWZyb218fCJudWxsIiE9PWFwaS5zZW5kZXI/YXBpLnNlbmRlcjpmcm9tO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXl8fCJudWxsIj09PWFwaS5zZW5kZXIsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpLnRvTG93ZXJDYXNlKCk7aWYoYXBpLmFzc2VydChmaW5hbFRvIT09ZmluYWxGcm9tLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpJiZhcGkuYXNzZXJ0KGZpbmFsVG8ubGVuZ3RoPj0zJiZmaW5hbFRvLmxlbmd0aDw9NTAsImludmFsaWQgdG8iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHRyYW5zZmVyIHBvc2l0aXZlIHF1YW50aXR5IikmJihxdWFudGl0eT1hcGkuQmlnTnVtYmVyKHF1YW50aXR5KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksYXdhaXQgc3ViQmFsYW5jZShmaW5hbEZyb20sdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikpKXshMT09PWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKT9hd2FpdCBhZGRCYWxhbmNlKGZpbmFsRnJvbSx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTooIm51bGwiPT09ZmluYWxUbyYmKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSksYXBpLmVtaXQoInRyYW5zZmVyVG9Db250cmFjdCIse2Zyb206ZmluYWxGcm9tLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19fX0sYWN0aW9ucy50cmFuc2ZlckZyb21Db250cmFjdD1hc3luYyBwYXlsb2FkPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdHtmcm9tOmZyb20sdG86dG8sc3ltYm9sOnN5bWJvbCx0eXBlOnR5cGV9PXBheWxvYWQ7bGV0IHF1YW50aXR5PXBheWxvYWQucXVhbnRpdHk7Y29uc3QgdHlwZXM9WyJ1c2VyIiwiY29udHJhY3QiXTtpZihhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZmcm9tJiYic3RyaW5nIj09dHlwZW9mIGZyb20mJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnR5cGUmJnR5cGVzLmluY2x1ZGVzKHR5cGUpJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpLHRhYmxlPSJ1c2VyIj09PXR5cGU/ImJhbGFuY2VzIjoiY29udHJhY3RzQmFsYW5jZXMiO2lmKGFwaS5hc3NlcnQoInVzZXIiPT09dHlwZXx8ImNvbnRyYWN0Ij09PXR5cGUmJmZpbmFsVG8hPT1mcm9tLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpKXtjb25zdCB0b1ZhbGlkPSJ1c2VyIj09PXR5cGU/YXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKTpmaW5hbFRvLmxlbmd0aD49MyYmZmluYWxUby5sZW5ndGg8PTUwO2lmKGFwaS5hc3NlcnQoITA9PT10b1ZhbGlkLCJpbnZhbGlkIHRvIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB0cmFuc2ZlciBwb3NpdGl2ZSBxdWFudGl0eSIpJiYocXVhbnRpdHk9YXBpLkJpZ051bWJlcihxdWFudGl0eSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pLGF3YWl0IHN1YkJhbGFuY2UoZnJvbSx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKSkpeyExPT09YXdhaXQgYWRkQmFsYW5jZShmaW5hbFRvLHRva2VuLHF1YW50aXR5LHRhYmxlKT9hd2FpdCBhZGRCYWxhbmNlKGZyb20sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIik6KCJudWxsIj09PWZpbmFsVG8mJih0b2tlbi5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpLGFwaS5lbWl0KCJ0cmFuc2ZlckZyb21Db250cmFjdCIse2Zyb206ZnJvbSx0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fX19fX07Y29uc3QgcHJvY2Vzc1Vuc3Rha2U9YXN5bmMgdW5zdGFrZT0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHF1YW50aXR5TGVmdDpxdWFudGl0eUxlZnQsbnVtYmVyVHJhbnNhY3Rpb25zTGVmdDpudW1iZXJUcmFuc2FjdGlvbnNMZWZ0fT11bnN0YWtlLG5ld1Vuc3Rha2U9dW5zdGFrZSxiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sfSksdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtsZXQgdG9rZW5zVG9SZWxlYXNlPTAsbmV4dFRva2Vuc1RvUmVsZWFzZT0wO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmKDE9PT1udW1iZXJUcmFuc2FjdGlvbnNMZWZ0Pyh0b2tlbnNUb1JlbGVhc2U9cXVhbnRpdHlMZWZ0LGF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbnN0YWtlcyIsdW5zdGFrZSkpOih0b2tlbnNUb1JlbGVhc2U9YXBpLkJpZ051bWJlcihxdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxuZXdVbnN0YWtlLnF1YW50aXR5TGVmdD1hcGkuQmlnTnVtYmVyKG5ld1Vuc3Rha2UucXVhbnRpdHlMZWZ0KS5taW51cyh0b2tlbnNUb1JlbGVhc2UpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKSxuZXdVbnN0YWtlLm51bWJlclRyYW5zYWN0aW9uc0xlZnQtPTEsbmV4dFRva2Vuc1RvUmVsZWFzZT0xPT09bmV3VW5zdGFrZS5udW1iZXJUcmFuc2FjdGlvbnNMZWZ0P25ld1Vuc3Rha2UucXVhbnRpdHlMZWZ0OnRva2Vuc1RvUmVsZWFzZSxuZXdVbnN0YWtlLm5leHRUcmFuc2FjdGlvblRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKG5ld1Vuc3Rha2UubmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wKS5wbHVzKG5ld1Vuc3Rha2UubWlsbGlzZWNQZXJQZXJpb2QpLnRvTnVtYmVyKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGVuZGluZ1Vuc3Rha2VzIixuZXdVbnN0YWtlKSksYXBpLkJpZ051bWJlcih0b2tlbnNUb1JlbGVhc2UpLmd0KDApKSl7Y29uc3Qgb3JpZ2luYWxCYWxhbmNlPWJhbGFuY2UuYmFsYW5jZSxvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlO2JhbGFuY2UuYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UuYmFsYW5jZSx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCEwKSxiYWxhbmNlLnBlbmRpbmdVbnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkubHQob3JpZ2luYWxQZW5kaW5nU3Rha2UpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkuZ3Qob3JpZ2luYWxCYWxhbmNlKSwiY2Fubm90IHN1YnRyYWN0IikmJihhcGkuQmlnTnVtYmVyKG5leHRUb2tlbnNUb1JlbGVhc2UpLmd0KDApJiYoYmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UsbmV4dFRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpLHRva2VuLnRvdGFsU3Rha2VkPWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4udG90YWxTdGFrZWQsbmV4dFRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpLCJXT1JLRVJCRUUiPT09c3ltYm9sJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YWNjb3VudH0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTphcGkuQmlnTnVtYmVyKG5leHRUb2tlbnNUb1JlbGVhc2UpLm5lZ2F0ZWQoKX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5mdW5kcyIsInVwZGF0ZVByb3Bvc2FsQXBwcm92YWxzIix7YWNjb3VudDphY2NvdW50LHRva2VuOnRva2VufSkpLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuZW1pdCgidW5zdGFrZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnRva2Vuc1RvUmVsZWFzZX0pKX19O2FjdGlvbnMuY2hlY2tQZW5kaW5nVW5zdGFrZXM9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKS5nZXRUaW1lKCk7bGV0IHBlbmRpbmdVbnN0YWtlcz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1Vuc3Rha2VzIix7bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19LDFlMywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxuYlBlbmRpbmdVbnN0YWtlcz1wZW5kaW5nVW5zdGFrZXMubGVuZ3RoO2Zvcig7bmJQZW5kaW5nVW5zdGFrZXM+MDspe2ZvcihsZXQgaW5kZXg9MDtpbmRleDxuYlBlbmRpbmdVbnN0YWtlcztpbmRleCs9MSl7Y29uc3QgcGVuZGluZ1Vuc3Rha2U9cGVuZGluZ1Vuc3Rha2VzW2luZGV4XTthd2FpdCBwcm9jZXNzVW5zdGFrZShwZW5kaW5nVW5zdGFrZSl9cGVuZGluZ1Vuc3Rha2VzPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5zdGFrZXMiLHtuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6eyRsdGU6dGltZXN0YW1wfX0sMWUzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pLG5iUGVuZGluZ1Vuc3Rha2VzPXBlbmRpbmdVbnN0YWtlcy5sZW5ndGh9fX0sYWN0aW9ucy5lbmFibGVTdGFraW5nPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHVuc3Rha2luZ0Nvb2xkb3duOnVuc3Rha2luZ0Nvb2xkb3duLG51bWJlclRyYW5zYWN0aW9uczpudW1iZXJUcmFuc2FjdGlvbnMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtlbmFibGVTdGFraW5nRmVlOmVuYWJsZVN0YWtpbmdGZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxlbm91Z2hGdW5kcz11dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGVuYWJsZVN0YWtpbmdGZWUpLGF1dGhvcml6ZWQ9dm9pZCAwPT09ZW5hYmxlU3Rha2luZ0ZlZXx8YXBpLkJpZ051bWJlcihlbmFibGVTdGFraW5nRmVlKS5sdGUoMCl8fGVub3VnaEZ1bmRzO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZCwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyICBmZWVzIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wsImludmFsaWQgc3ltYm9sIikmJmFwaS5hc3NlcnQodW5zdGFraW5nQ29vbGRvd24mJk51bWJlci5pc0ludGVnZXIodW5zdGFraW5nQ29vbGRvd24pJiZ1bnN0YWtpbmdDb29sZG93bj4wJiZ1bnN0YWtpbmdDb29sZG93bjw9MTgyNTAsInVuc3Rha2luZ0Nvb2xkb3duIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDE4MjUwIikmJmFwaS5hc3NlcnQobnVtYmVyVHJhbnNhY3Rpb25zJiZOdW1iZXIuaXNJbnRlZ2VyKG51bWJlclRyYW5zYWN0aW9ucykmJm51bWJlclRyYW5zYWN0aW9ucz4wJiZudW1iZXJUcmFuc2FjdGlvbnM8PTE4MjUwLCJudW1iZXJUcmFuc2FjdGlvbnMgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTgyNTAiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTthcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWR8fCExPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgYWxyZWFkeSBlbmFibGVkIikmJih0b2tlbi5zdGFraW5nRW5hYmxlZD0hMCx0b2tlbi50b3RhbFN0YWtlZD0iMCIsdG9rZW4udW5zdGFraW5nQ29vbGRvd249dW5zdGFraW5nQ29vbGRvd24sdG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zPW51bWJlclRyYW5zYWN0aW9ucyxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuQmlnTnVtYmVyKGVuYWJsZVN0YWtpbmdGZWUpLmd0KDApJiZhd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmVuYWJsZVN0YWtpbmdGZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pKX19LGFjdGlvbnMuc3Rha2U9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdG86dG8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtsZXQgcXVhbnRpdHk9cGF5bG9hZC5xdWFudGl0eTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pLGZpbmFsVG89dG8udHJpbSgpO2lmKGFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBzdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiYocXVhbnRpdHk9YXBpLkJpZ051bWJlcihxdWFudGl0eSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pLGF3YWl0IHN1YkJhbGFuY2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSkpeyExPT09YXdhaXQgYWRkU3Rha2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSk/YXdhaXQgYWRkQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpOihhcGkuZW1pdCgic3Rha2UiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCJXT1JLRVJCRUUiPT09c3ltYm9sJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6ZmluYWxUb30pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5mdW5kcyIsInVwZGF0ZVByb3Bvc2FsQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbFRvLHRva2VuOnRva2VufSkpfX19LGFjdGlvbnMuc3Rha2VGcm9tQ29udHJhY3Q9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdG86dG8sY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2xldCBxdWFudGl0eT1wYXlsb2FkLnF1YW50aXR5O2lmKGNhbGxpbmdDb250cmFjdEluZm8mJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KSxmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3Qgc3Rha2UgcG9zaXRpdmUgcXVhbnRpdHkiKSYmKHF1YW50aXR5PWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKSxhd2FpdCBzdWJCYWxhbmNlKGNhbGxpbmdDb250cmFjdEluZm8ubmFtZSx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKSkpeyExPT09YXdhaXQgYWRkU3Rha2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSk/YXdhaXQgYWRkQmFsYW5jZShjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIik6KGFwaS5lbWl0KCJzdGFrZUZyb21Db250cmFjdCIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbFRvfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbmZ1bmRzIiwidXBkYXRlUHJvcG9zYWxBcHByb3ZhbHMiLHthY2NvdW50OmZpbmFsVG8sdG9rZW46dG9rZW59KSl9fX07Y29uc3QgdmFsaWRhdGVBdmFpbGFibGVTdGFrZT1hc3luYyhiYWxhbmNlLHRva2VuLHF1YW50aXR5KT0+e2xldCBhdmFpbGFibGVTdGFrZUJhbGFuY2U9YXBpLkJpZ051bWJlcihiYWxhbmNlLnN0YWtlKTtyZXR1cm4gYXdhaXQgZmluZEFuZFByb2Nlc3NBbGwoInBlbmRpbmdVbnN0YWtlcyIse3N5bWJvbDpiYWxhbmNlLnN5bWJvbCxhY2NvdW50OmJhbGFuY2UuYWNjb3VudH0sKGFzeW5jIHBlbmRpbmdVbnN0YWtlPT57aWYocGVuZGluZ1Vuc3Rha2UubnVtYmVyVHJhbnNhY3Rpb25zTGVmdD4xKXtjb25zdCB0b2tlbnNUb1JlbGVhc2U9YXBpLkJpZ051bWJlcihwZW5kaW5nVW5zdGFrZS5xdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTthdmFpbGFibGVTdGFrZUJhbGFuY2U9YXZhaWxhYmxlU3Rha2VCYWxhbmNlLm1pbnVzKHBlbmRpbmdVbnN0YWtlLnF1YW50aXR5TGVmdCkucGx1cyh0b2tlbnNUb1JlbGVhc2UpfX0pKSxhcGkuYXNzZXJ0KGF2YWlsYWJsZVN0YWtlQmFsYW5jZS5ndGUocXVhbnRpdHkpLCJvdmVyZHJhd24gc3Rha2UiKX0sc3RhcnRVbnN0YWtlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHkpPT57Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnRva2VuLnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0Iil8fCFhd2FpdCB2YWxpZGF0ZUF2YWlsYWJsZVN0YWtlKGJhbGFuY2UsdG9rZW4scXVhbnRpdHkpKXJldHVybiExO3tjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2Usb3JpZ2luYWxQZW5kaW5nU3Rha2U9YmFsYW5jZS5wZW5kaW5nVW5zdGFrZSxuZXh0VG9rZW5zVG9SZWxlYXNlPXRva2VuLm51bWJlclRyYW5zYWN0aW9ucz4xP2FwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmRpdmlkZWRCeSh0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnMpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik6cXVhbnRpdHk7YmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UsbmV4dFRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpLGJhbGFuY2UucGVuZGluZ1Vuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnBlbmRpbmdVbnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmx0KG9yaWdpbmFsU3Rha2UpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UpLmd0KG9yaWdpbmFsUGVuZGluZ1N0YWtlKSwiY2Fubm90IHN1YnRyYWN0IikmJihhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZSksdG9rZW4udG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi50b3RhbFN0YWtlZCxuZXh0VG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksIldPUktFUkJFRSI9PT10b2tlbi5zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphY2NvdW50fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OmFwaS5CaWdOdW1iZXIobmV4dFRva2Vuc1RvUmVsZWFzZSkubmVnYXRlZCgpfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbmZ1bmRzIiwidXBkYXRlUHJvcG9zYWxBcHByb3ZhbHMiLHthY2NvdW50OmFjY291bnQsdG9rZW46dG9rZW59KSl9Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSxjb29sZG93blBlcmlvZE1pbGxpc2VjPTI0KnRva2VuLnVuc3Rha2luZ0Nvb2xkb3duKjM2MDAqMWUzLG1pbGxpc2VjUGVyUGVyaW9kPWFwaS5CaWdOdW1iZXIoY29vbGRvd25QZXJpb2RNaWxsaXNlYykuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykuaW50ZWdlclZhbHVlKGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksbmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wPWFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkucGx1cyhtaWxsaXNlY1BlclBlcmlvZCkudG9OdW1iZXIoKSx1bnN0YWtlPXthY2NvdW50OmFjY291bnQsc3ltYm9sOnRva2VuLnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxxdWFudGl0eUxlZnQ6cXVhbnRpdHksbmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wOm5leHRUcmFuc2FjdGlvblRpbWVzdGFtcCxudW1iZXJUcmFuc2FjdGlvbnNMZWZ0OnRva2VuLm51bWJlclRyYW5zYWN0aW9ucyxtaWxsaXNlY1BlclBlcmlvZDptaWxsaXNlY1BlclBlcmlvZCx0eElEOmFwaS50cmFuc2FjdGlvbklkfTtyZXR1cm4gYXdhaXQgYXBpLmRiLmluc2VydCgicGVuZGluZ1Vuc3Rha2VzIix1bnN0YWtlKSwhMH07YWN0aW9ucy51bnN0YWtlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7bGV0IHF1YW50aXR5PXBheWxvYWQucXVhbnRpdHk7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHVuc3Rha2UgcG9zaXRpdmUgcXVhbnRpdHkiKSYmKHF1YW50aXR5PWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKSxhd2FpdCBzdGFydFVuc3Rha2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSkmJmFwaS5lbWl0KCJ1bnN0YWtlU3RhcnQiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19O2NvbnN0IHByb2Nlc3NDYW5jZWxVbnN0YWtlPWFzeW5jIHVuc3Rha2U9Pntjb25zdHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxxdWFudGl0eUxlZnQ6cXVhbnRpdHlMZWZ0LG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6bnVtYmVyVHJhbnNhY3Rpb25zTGVmdH09dW5zdGFrZSxiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sfSksdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLnBlbmRpbmdVbnN0YWtlKS5ndGUocXVhbnRpdHlMZWZ0KSwib3ZlcmRyYXduIHBlbmRpbmdVbnN0YWtlIikpe2NvbnN0IG9yaWdpbmFsU3Rha2U9YmFsYW5jZS5zdGFrZSxvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlLHRva2Vuc1RvUmVsZWFzZT1udW1iZXJUcmFuc2FjdGlvbnNMZWZ0PjE/YXBpLkJpZ051bWJlcihxdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTpxdWFudGl0eUxlZnQ7aWYoYmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UsdG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMCksYmFsYW5jZS5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UscXVhbnRpdHlMZWZ0LHRva2VuLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UpLmx0KG9yaWdpbmFsUGVuZGluZ1N0YWtlKSYmYXBpLkJpZ051bWJlcihiYWxhbmNlLnN0YWtlKS5ndChvcmlnaW5hbFN0YWtlKSwiY2Fubm90IHN1YnRyYWN0IikpcmV0dXJuIGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSx0b2tlbi50b3RhbFN0YWtlZD1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnRvdGFsU3Rha2VkLHRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLGFwaS5lbWl0KCJ1bnN0YWtlQ2FuY2VsIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHlMZWZ0fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphY2NvdW50fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnRva2Vuc1RvUmVsZWFzZX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5mdW5kcyIsInVwZGF0ZVByb3Bvc2FsQXBwcm92YWxzIix7YWNjb3VudDphY2NvdW50LHRva2VuOnRva2VufSksITB9cmV0dXJuITF9O2FjdGlvbnMuY2FuY2VsVW5zdGFrZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7dHhJRDp0eElELGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodHhJRCYmInN0cmluZyI9PXR5cGVvZiB0eElELCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB1bnN0YWtlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwZW5kaW5nVW5zdGFrZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsdHhJRDp0eElEfSk7YXBpLmFzc2VydCh1bnN0YWtlLCJ1bnN0YWtlIGRvZXMgbm90IGV4aXN0IikmJmF3YWl0IHByb2Nlc3NDYW5jZWxVbnN0YWtlKHVuc3Rha2UpJiZhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5zdGFrZXMiLHVuc3Rha2UpfX0sYWN0aW9ucy5lbmFibGVEZWxlZ2F0aW9uPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHVuZGVsZWdhdGlvbkNvb2xkb3duOnVuZGVsZWdhdGlvbkNvb2xkb3duLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7ZW5hYmxlRGVsZWdhdGlvbkZlZTplbmFibGVEZWxlZ2F0aW9uRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksZW5vdWdoRnVuZHM9dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShlbmFibGVEZWxlZ2F0aW9uRmVlKSxhdXRob3JpemVkPXZvaWQgMD09PWVuYWJsZURlbGVnYXRpb25GZWV8fGFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkubHRlKDApfHxlbm91Z2hGdW5kcztpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciAgZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KHVuZGVsZWdhdGlvbkNvb2xkb3duJiZOdW1iZXIuaXNJbnRlZ2VyKHVuZGVsZWdhdGlvbkNvb2xkb3duKSYmdW5kZWxlZ2F0aW9uQ29vbGRvd24+MCYmdW5kZWxlZ2F0aW9uQ29vbGRvd248PTE4MjUwLCJ1bmRlbGVnYXRpb25Db29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWR8fCExPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gYWxyZWFkeSBlbmFibGVkIikmJih0b2tlbi5kZWxlZ2F0aW9uRW5hYmxlZD0hMCx0b2tlbi51bmRlbGVnYXRpb25Db29sZG93bj11bmRlbGVnYXRpb25Db29sZG93bixhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmd0KDApJiZhd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmVuYWJsZURlbGVnYXRpb25GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pKX19LGFjdGlvbnMuZGVsZWdhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdG86dG8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtsZXQgcXVhbnRpdHk9cGF5bG9hZC5xdWFudGl0eTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChmaW5hbFRvIT09YXBpLnNlbmRlciwiY2Fubm90IGRlbGVnYXRlIHRvIHlvdXJzZWxmIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgZGVsZWdhdGUgcG9zaXRpdmUgcXVhbnRpdHkiKSl7cXVhbnRpdHk9YXBpLkJpZ051bWJlcihxdWFudGl0eSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pO2NvbnN0IGJhbGFuY2VGcm9tPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZUZyb20sImJhbGFuY2VGcm9tIGRvZXMgbm90IGV4aXN0IikmJmF3YWl0IHZhbGlkYXRlQXZhaWxhYmxlU3Rha2UoYmFsYW5jZUZyb20sdG9rZW4scXVhbnRpdHkpKXt2b2lkIDA9PT1iYWxhbmNlRnJvbS5zdGFrZT8oYmFsYW5jZUZyb20uc3Rha2U9IjAiLGJhbGFuY2VGcm9tLnBlbmRpbmdVbnN0YWtlPSIwIixiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luPSIwIixiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dD0iMCIsYmFsYW5jZUZyb20ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiKTp2b2lkIDA9PT1iYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luJiYoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbj0iMCIsYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQ9IjAiLGJhbGFuY2VGcm9tLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIixiYWxhbmNlRnJvbS5kZWxlZ2F0ZWRTdGFrZSYmKGRlbGV0ZSBiYWxhbmNlRnJvbS5kZWxlZ2F0ZWRTdGFrZSxkZWxldGUgYmFsYW5jZUZyb20ucmVjZWl2ZWRTdGFrZSkpO2xldCBiYWxhbmNlVG89YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDpmaW5hbFRvLHN5bWJvbDpzeW1ib2x9KTtudWxsPT09YmFsYW5jZVRvPyhiYWxhbmNlVG89YmFsYW5jZVRlbXBsYXRlLGJhbGFuY2VUby5hY2NvdW50PWZpbmFsVG8sYmFsYW5jZVRvLnN5bWJvbD1zeW1ib2wsYmFsYW5jZVRvPWF3YWl0IGFwaS5kYi5pbnNlcnQoImJhbGFuY2VzIixiYWxhbmNlVG8pKTp2b2lkIDA9PT1iYWxhbmNlVG8uc3Rha2U/KGJhbGFuY2VUby5zdGFrZT0iMCIsYmFsYW5jZVRvLnBlbmRpbmdVbnN0YWtlPSIwIixiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbj0iMCIsYmFsYW5jZVRvLmRlbGVnYXRpb25zT3V0PSIwIixiYWxhbmNlVG8ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiKTp2b2lkIDA9PT1iYWxhbmNlVG8uZGVsZWdhdGlvbnNJbiYmKGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luPSIwIixiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQ9IjAiLGJhbGFuY2VUby5wZW5kaW5nVW5kZWxlZ2F0aW9ucz0iMCIsYmFsYW5jZVRvLmRlbGVnYXRlZFN0YWtlJiYoZGVsZXRlIGJhbGFuY2VUby5kZWxlZ2F0ZWRTdGFrZSxkZWxldGUgYmFsYW5jZVRvLnJlY2VpdmVkU3Rha2UpKTtsZXQgZGVsZWdhdGlvbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgiZGVsZWdhdGlvbnMiLHt0bzpmaW5hbFRvLGZyb206YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKS5nZXRUaW1lKCk7bnVsbD09ZGVsZWdhdGlvbj8oYmFsYW5jZUZyb20uc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZUZyb20pLGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZVRvLmRlbGVnYXRpb25zSW4scXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZVRvKSxkZWxlZ2F0aW9uPXt9LGRlbGVnYXRpb24uZnJvbT1hcGkuc2VuZGVyLGRlbGVnYXRpb24udG89ZmluYWxUbyxkZWxlZ2F0aW9uLnN5bWJvbD1zeW1ib2wsZGVsZWdhdGlvbi5xdWFudGl0eT1xdWFudGl0eSxkZWxlZ2F0aW9uLmNyZWF0ZWQ9dGltZXN0YW1wLGRlbGVnYXRpb24udXBkYXRlZD10aW1lc3RhbXAsYXdhaXQgYXBpLmRiLmluc2VydCgiZGVsZWdhdGlvbnMiLGRlbGVnYXRpb24pLGFwaS5lbWl0KCJkZWxlZ2F0ZSIse3RvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCJXT1JLRVJCRUUiPT09c3ltYm9sJiYoYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6ZmluYWxUb30pKSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksZGVsZWdhdGVkOiEwfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sLHF1YW50aXR5OmFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLm5lZ2F0ZWQoKX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5mdW5kcyIsInVwZGF0ZVByb3Bvc2FsQXBwcm92YWxzIix7YWNjb3VudDphcGkuc2VuZGVyLHRva2VuOnRva2VufSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbmZ1bmRzIiwidXBkYXRlUHJvcG9zYWxBcHByb3ZhbHMiLHthY2NvdW50OmZpbmFsVG8sdG9rZW46dG9rZW59KSk6KGJhbGFuY2VGcm9tLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dD1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VGcm9tKSxiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbj1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VUbyksZGVsZWdhdGlvbi5xdWFudGl0eT1jYWxjdWxhdGVCYWxhbmNlKGRlbGVnYXRpb24ucXVhbnRpdHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxkZWxlZ2F0aW9uLnVwZGF0ZWQ9dGltZXN0YW1wLGF3YWl0IGFwaS5kYi51cGRhdGUoImRlbGVnYXRpb25zIixkZWxlZ2F0aW9uKSxhcGkuZW1pdCgiZGVsZWdhdGUiLHt0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSwiV09SS0VSQkVFIj09PXN5bWJvbCYmKGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphcGkuc2VuZGVyfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmZpbmFsVG99KSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGRlbGVnYXRlZDohMH0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTphcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5uZWdhdGVkKCl9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VuZnVuZHMiLCJ1cGRhdGVQcm9wb3NhbEFwcHJvdmFscyIse2FjY291bnQ6YXBpLnNlbmRlcix0b2tlbjp0b2tlbn0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5mdW5kcyIsInVwZGF0ZVByb3Bvc2FsQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbFRvLHRva2VuOnRva2VufSkpfX19fX0sYWN0aW9ucy51bmRlbGVnYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGZyb206ZnJvbSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2xldCBxdWFudGl0eT1wYXlsb2FkLnF1YW50aXR5O2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmZyb20mJiJzdHJpbmciPT10eXBlb2YgZnJvbSYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbEZyb209ZnJvbS50cmltKCk7aWYoYXBpLmFzc2VydChmaW5hbEZyb20ubGVuZ3RoPj0zJiZmaW5hbEZyb20ubGVuZ3RoPD0xNiwiaW52YWxpZCBmcm9tIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXRva2VuLmRlbGVnYXRpb25FbmFibGVkLCJkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoZmluYWxGcm9tIT09YXBpLnNlbmRlciwiY2Fubm90IHVuZGVsZWdhdGUgZnJvbSB5b3Vyc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHVuZGVsZWdhdGUgcG9zaXRpdmUgcXVhbnRpdHkiKSl7cXVhbnRpdHk9YXBpLkJpZ051bWJlcihxdWFudGl0eSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pO2NvbnN0IGJhbGFuY2VUbz1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2VUbywiYmFsYW5jZVRvIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQpLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBkZWxlZ2F0aW9uIikpe2NvbnN0IGJhbGFuY2VGcm9tPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6ZmluYWxGcm9tLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlRnJvbSwiYmFsYW5jZUZyb20gZG9lcyBub3QgZXhpc3QiKSl7Y29uc3QgZGVsZWdhdGlvbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgiZGVsZWdhdGlvbnMiLHt0bzpmaW5hbEZyb20sZnJvbTphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1kZWxlZ2F0aW9uLCJkZWxlZ2F0aW9uIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihkZWxlZ2F0aW9uLnF1YW50aXR5KS5ndGUocXVhbnRpdHkpLCJvdmVyZHJhd24gZGVsZWdhdGlvbiIpKXtiYWxhbmNlVG8ucGVuZGluZ1VuZGVsZWdhdGlvbnM9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlVG8ucGVuZGluZ1VuZGVsZWdhdGlvbnMscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZVRvKSxiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbixxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlRnJvbSksZGVsZWdhdGlvbi5xdWFudGl0eT1jYWxjdWxhdGVCYWxhbmNlKGRlbGVnYXRpb24ucXVhbnRpdHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuQmlnTnVtYmVyKGRlbGVnYXRpb24ucXVhbnRpdHkpLmd0KDApP2F3YWl0IGFwaS5kYi51cGRhdGUoImRlbGVnYXRpb25zIixkZWxlZ2F0aW9uKTphd2FpdCBhcGkuZGIucmVtb3ZlKCJkZWxlZ2F0aW9ucyIsZGVsZWdhdGlvbik7Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSxjb29sZG93blBlcmlvZE1pbGxpc2VjPTI0KnRva2VuLnVuZGVsZWdhdGlvbkNvb2xkb3duKjM2MDAqMWUzLGNvbXBsZXRlVGltZXN0YW1wPWJsb2NrRGF0ZS5nZXRUaW1lKCkrY29vbGRvd25QZXJpb2RNaWxsaXNlYyx1bmRlbGVnYXRpb249e2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGNvbXBsZXRlVGltZXN0YW1wOmNvbXBsZXRlVGltZXN0YW1wLHR4SUQ6YXBpLnRyYW5zYWN0aW9uSWR9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix1bmRlbGVnYXRpb24pLGFwaS5lbWl0KCJ1bmRlbGVnYXRlU3RhcnQiLHtmcm9tOmZpbmFsRnJvbSxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbEZyb219KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDpmaW5hbEZyb20sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTphcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5uZWdhdGVkKCksZGVsZWdhdGVkOiEwfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbmZ1bmRzIiwidXBkYXRlUHJvcG9zYWxBcHByb3ZhbHMiLHthY2NvdW50OmZpbmFsRnJvbSx0b2tlbjp0b2tlbn0pfX19fX19fTtjb25zdCBwcm9jZXNzVW5kZWxlZ2F0aW9uPWFzeW5jIHVuZGVsZWdhdGlvbj0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fT11bmRlbGVnYXRpb24sYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbH0pLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZSwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpKXtjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2Usb3JpZ2luYWxQZW5kaW5nVW5kZWxlZ2F0aW9ucz1iYWxhbmNlLnBlbmRpbmdVbmRlbGVnYXRpb25zO2JhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYmFsYW5jZS5wZW5kaW5nVW5kZWxlZ2F0aW9ucz1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1VuZGVsZWdhdGlvbnMscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5kZWxlZ2F0aW9ucykubHQob3JpZ2luYWxQZW5kaW5nVW5kZWxlZ2F0aW9ucykmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3Qob3JpZ2luYWxTdGFrZSksImNhbm5vdCBzdWJ0cmFjdCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLGF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbmRlbGVnYXRpb25zIix1bmRlbGVnYXRpb24pLGFwaS5lbWl0KCJ1bmRlbGVnYXRlRG9uZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphY2NvdW50fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbmZ1bmRzIiwidXBkYXRlUHJvcG9zYWxBcHByb3ZhbHMiLHthY2NvdW50OmFjY291bnQsdG9rZW46dG9rZW59KSl9fTthY3Rpb25zLmNoZWNrUGVuZGluZ1VuZGVsZWdhdGlvbnM9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKS5nZXRUaW1lKCk7bGV0IHBlbmRpbmdVbmRlbGVnYXRpb25zPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIse2NvbXBsZXRlVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19LDFlMywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxuYlBlbmRpbmdVbmRlbGVnYXRpb25zPXBlbmRpbmdVbmRlbGVnYXRpb25zLmxlbmd0aDtmb3IoO25iUGVuZGluZ1VuZGVsZWdhdGlvbnM+MDspe2ZvcihsZXQgaW5kZXg9MDtpbmRleDxuYlBlbmRpbmdVbmRlbGVnYXRpb25zO2luZGV4Kz0xKXtjb25zdCBwZW5kaW5nVW5kZWxlZ2F0aW9uPXBlbmRpbmdVbmRlbGVnYXRpb25zW2luZGV4XTthd2FpdCBwcm9jZXNzVW5kZWxlZ2F0aW9uKHBlbmRpbmdVbmRlbGVnYXRpb24pfXBlbmRpbmdVbmRlbGVnYXRpb25zPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIse2NvbXBsZXRlVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19LDFlMywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxuYlBlbmRpbmdVbmRlbGVnYXRpb25zPXBlbmRpbmdVbmRlbGVnYXRpb25zLmxlbmd0aH19fTs="}}}

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"resourcemanager","params":"","code":"YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJwYXJhbXMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKTtjb25zdCBwYXJhbXM9e251bWJlck9mRnJlZVR4OjEsZGVueU1heFR4OjEsbXVsdGlUcmFuc2FjdGlvbkZlZToiMC4wMDEiLGJ1cm5TeW1ib2w6IkJFRUQiLGFsbG93bGlzdEJ1cm5GZWU6IjEwIn07YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfSExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJhY2NvdW50Q29udHJvbHMiKSYmYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJhY2NvdW50Q29udHJvbHMiLFtdLHtwcmltYXJ5S2V5OlsiYWNjb3VudCJdfSk7ITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoIm1vZGVyYXRvcnMiKSYmYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJtb2RlcmF0b3JzIixbXSx7cHJpbWFyeUtleTpbImFjY291bnQiXX0pfSxhY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBwYXlsb2FkPT57aWYoIWFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PWFwaS5vd25lciwibm90IGF1dGhvcml6ZWQiKSlyZXR1cm47Y29uc3R7bnVtYmVyT2ZGcmVlVHg6bnVtYmVyT2ZGcmVlVHgsbXVsdGlUcmFuc2FjdGlvbkZlZTptdWx0aVRyYW5zYWN0aW9uRmVlLGJ1cm5TeW1ib2w6YnVyblN5bWJvbCxkZW55TWF4VHg6ZGVueU1heFR4LGFsbG93bGlzdEJ1cm5GZWU6YWxsb3dsaXN0QnVybkZlZX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKG51bWJlck9mRnJlZVR4KXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG51bWJlck9mRnJlZVR4KSYmbnVtYmVyT2ZGcmVlVHg+PTEsImludmFsaWQgbnVtYmVyT2ZGcmVlVHgiKSlyZXR1cm47cGFyYW1zLm51bWJlck9mRnJlZVR4PW51bWJlck9mRnJlZVR4fWlmKG11bHRpVHJhbnNhY3Rpb25GZWUpe2NvbnN0IGZlZUJOPWFwaS5CaWdOdW1iZXIobXVsdGlUcmFuc2FjdGlvbkZlZSk7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBtdWx0aVRyYW5zYWN0aW9uRmVlJiYhZmVlQk4uaXNOYU4oKSYmZmVlQk4uZ3RlKDApJiZmZWVCTi5pc0Zpbml0ZSgpLCJpbnZhbGlkIG11bHRpVHJhbnNhY3Rpb25GZWUiKSlyZXR1cm47cGFyYW1zLm11bHRpVHJhbnNhY3Rpb25GZWU9bXVsdGlUcmFuc2FjdGlvbkZlZX1pZihkZW55TWF4VHgpe2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoZGVueU1heFR4KSYmZGVueU1heFR4Pj0wLCJpbnZhbGlkIGRlbnlNYXhUeCIpKXJldHVybjtwYXJhbXMuZGVueU1heFR4PWRlbnlNYXhUeH1pZihidXJuU3ltYm9sKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGJ1cm5TeW1ib2wsImludmFsaWQgYnVyblN5bWJvbCIpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpidXJuU3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQodG9rZW4sImJ1cm5TeW1ib2wgbm90IGF2YWlsYWJsZSIpKXJldHVybjtwYXJhbXMuYnVyblN5bWJvbD1idXJuU3ltYm9sfWlmKGFsbG93bGlzdEJ1cm5GZWUpe2NvbnN0IGFsbG93Q29zdHNCTj1hcGkuQmlnTnVtYmVyKGFsbG93bGlzdEJ1cm5GZWUpO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgYWxsb3dsaXN0QnVybkZlZSYmIWFsbG93Q29zdHNCTi5pc05hTigpJiZhbGxvd0Nvc3RzQk4uZ3RlKDApJiZhbGxvd0Nvc3RzQk4uaXNGaW5pdGUoKSwiaW52YWxpZCBhbGxvd2xpc3RCdXJuRmVlIikpcmV0dXJuO3BhcmFtcy5hbGxvd2xpc3RCdXJuRmVlPWFsbG93bGlzdEJ1cm5GZWV9YXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfSxhY3Rpb25zLnVwZGF0ZUFjY291bnQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3NlbmRlcjpzZW5kZXJ9PWFwaSxtb2RlcmF0b3I9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1vZGVyYXRvcnMiLHthY2NvdW50OnNlbmRlcn0pO2lmKCFhcGkuYXNzZXJ0KHNlbmRlcj09PWFwaS5vd25lcnx8bW9kZXJhdG9yLCJub3QgYXV0aG9yaXplZCIpKXJldHVybjtjb25zdCB0YWJsZT0iYWNjb3VudENvbnRyb2xzIix7YWNjb3VudDphY2NvdW50LGlzRGVuaWVkOmlzRGVuaWVkLGlzQWxsb3dlZDppc0FsbG93ZWR9PXBheWxvYWQsdGltZXN0YW1wPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKS5nZXRUaW1lKCk7bGV0IGFjY291bnRDb250cm9sPWF3YWl0IGFwaS5kYi5maW5kT25lKHRhYmxlLHthY2NvdW50OmFjY291bnR9KTtjb25zdCBjcmVhdGU9IWFjY291bnRDb250cm9sO2lmKGFjY291bnRDb250cm9sfHwoYWNjb3VudENvbnRyb2w9e2FjY291bnQ6YWNjb3VudH0pLGFwaS5hc3NlcnQobnVsbCE9YWNjb3VudENvbnRyb2wuYWNjb3VudCYmInVuZGVmaW5lZCIhPT1hY2NvdW50Q29udHJvbC5hY2NvdW50LCJpbnZhbGlkIGFjY291bnQiKSl7aWYobnVsbCE9aXNEZW5pZWQpe2lmKCFhcGkuYXNzZXJ0KCJib29sZWFuIj09dHlwZW9mIGlzRGVuaWVkLCJpbnZhbGlkIGlzRGVuaWVkIikpcmV0dXJuO2FjY291bnRDb250cm9sLmlzRGVuaWVkPWlzRGVuaWVkfWlmKG51bGwhPWlzQWxsb3dlZCl7aWYoIWFwaS5hc3NlcnQoImJvb2xlYW4iPT10eXBlb2YgaXNBbGxvd2VkLCJpbnZhbGlkIGlzQWxsb3dlZCIpKXJldHVybjthY2NvdW50Q29udHJvbC5pc0FsbG93ZWQ9aXNBbGxvd2VkfWFjY291bnRDb250cm9sLmxhc3RBY3Rpb249dGltZXN0YW1wLGNyZWF0ZT9hd2FpdCBhcGkuZGIuaW5zZXJ0KHRhYmxlLGFjY291bnRDb250cm9sKTphd2FpdCBhcGkuZGIudXBkYXRlKHRhYmxlLGFjY291bnRDb250cm9sKSxhcGkuZW1pdCgidXBkYXRlQWNjb3VudCIse2Zyb206YXBpLnNlbmRlcix1cGRhdGVkQWNjb3VudDphY2NvdW50LGlzRGVuaWVkOmlzRGVuaWVkLGlzQWxsb3dlZDppc0FsbG93ZWR9KX19LGFjdGlvbnMudXBkYXRlTW9kZXJhdG9yPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzZW5kZXI6c2VuZGVyfT1hcGk7aWYoIWFwaS5hc3NlcnQoc2VuZGVyPT09YXBpLm93bmVyLCJub3QgYXV0aG9yaXplZCIpKXJldHVybjtjb25zdCB0YWJsZT0ibW9kZXJhdG9ycyIse2FjY291bnQ6YWNjb3VudCxhY3Rpb246YWN0aW9ufT1wYXlsb2FkLG1vZGVyYXRvcj1hd2FpdCBhcGkuZGIuZmluZE9uZSh0YWJsZSx7YWNjb3VudDphY2NvdW50fSk7bGV0IHVwZGF0ZWQ9ITE7ImFkZCIhPT1hY3Rpb258fG1vZGVyYXRvcnx8KGF3YWl0IGFwaS5kYi5pbnNlcnQodGFibGUse2FjY291bnQ6YWNjb3VudH0pLHVwZGF0ZWQ9ITApLCJyZW1vdmUiPT09YWN0aW9uJiZtb2RlcmF0b3ImJihhd2FpdCBhcGkuZGIucmVtb3ZlKHRhYmxlLG1vZGVyYXRvciksdXBkYXRlZD0hMCksdXBkYXRlZCYmYXBpLmVtaXQoInVwZGF0ZU1vZGVyYXRvciIse2Zyb206YXBpLnNlbmRlcixhY2NvdW50OmFjY291bnQsYWN0aW9uOmFjdGlvbn0pfTtjb25zdCB0cmFuc2ZlcklzU3VjY2Vzc2Z1bD0ocmVzdWx0LGFjdGlvbixmcm9tLHRvLHN5bWJvbCxxdWFudGl0eSk9PnZvaWQgMD09PXJlc3VsdC5lcnJvcnMmJnJlc3VsdC5ldmVudHMmJnZvaWQgMCE9PXJlc3VsdC5ldmVudHMuZmluZCgoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJmVsLmV2ZW50PT09YWN0aW9uJiZlbC5kYXRhLmZyb209PT1mcm9tJiZlbC5kYXRhLnRvPT09dG8mJmFwaS5CaWdOdW1iZXIoZWwuZGF0YS5xdWFudGl0eSkuZXEocXVhbnRpdHkpJiZlbC5kYXRhLnN5bWJvbD09PXN5bWJvbCkpLGlzU3RpbGxBbGxvd2VkPWFjY291bnRDb250cm9scz0+e2lmKCFhY2NvdW50Q29udHJvbHN8fCFhY2NvdW50Q29udHJvbHMuaXNBbGxvd2VkKXJldHVybiExO2lmKCFhY2NvdW50Q29udHJvbHMuYWxsb3dlZFVudGlsKXJldHVybiExO3JldHVybiBuZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCkuZ2V0VGltZSgpPGFjY291bnRDb250cm9scy5hbGxvd2VkVW50aWx9O2FjdGlvbnMuYnVybkZlZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c2VuZGVyOnNlbmRlcn09YXBpO2lmKCJudWxsIj09PXNlbmRlcnx8bnVsbD09c2VuZGVyKXJldHVybjtjb25zdCBidXJuUGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxhY2NvdW50Q29udHJvbHM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRDb250cm9scyIse2FjY291bnQ6c2VuZGVyfSk7aWYoYWNjb3VudENvbnRyb2xzJiZhY2NvdW50Q29udHJvbHMuaXNEZW5pZWQpe2NvbnN0IG5vd1RpbWVzdGFtcD1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCkuZ2V0VGltZSgpLGRpZmZIb3Vycz0obm93VGltZXN0YW1wLWFjY291bnRDb250cm9scy5sYXN0QWN0aW9uKS8zNmU1O2lmKGFjY291bnRDb250cm9scy5hY3Rpb25Db3VudD0oYWNjb3VudENvbnRyb2xzLmFjdGlvbkNvdW50fHwwKSsxLGFjY291bnRDb250cm9scy5sYXN0QWN0aW9uPW5vd1RpbWVzdGFtcCxkaWZmSG91cnM+PTI0JiYoYWNjb3VudENvbnRyb2xzLmFjdGlvbkNvdW50PTEpLCFhcGkuYXNzZXJ0KGRpZmZIb3Vycz49MjR8fGFjY291bnRDb250cm9scy5hY3Rpb25Db3VudDw9YnVyblBhcmFtcy5kZW55TWF4VHgsIm1heCB0cmFuc2FjdGlvbiBsaW1pdCBwZXIgZGF5IHJlYWNoZWQuIikpcmV0dXJuO2F3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRDb250cm9scyIsYWNjb3VudENvbnRyb2xzKX1pZihwYXlsb2FkLnVzZXJBY3Rpb25Db3VudDw9YnVyblBhcmFtcy5udW1iZXJPZkZyZWVUeClyZXR1cm47aWYoYWNjb3VudENvbnRyb2xzJiZhY2NvdW50Q29udHJvbHMuaXNBbGxvd2VkKXtpZihpc1N0aWxsQWxsb3dlZChhY2NvdW50Q29udHJvbHMpKXJldHVybjthY2NvdW50Q29udHJvbHMuaXNBbGxvd2VkPSExLGFwaS5lbWl0KCJhbGxvd0xpc3RTdWJzY3JpcHRpb25FeHBpcmVkIix7ZnJvbTphcGkuc2VuZGVyfSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYWNjb3VudENvbnRyb2xzIixhY2NvdW50Q29udHJvbHMpfWlmKCJtYXJrZXQiIT09cGF5bG9hZC5jb250cmFjdClyZXR1cm4gdm9pZCgibWFya2V0cG9vbHMiIT09cGF5bG9hZC5jb250cmFjdCYmYXBpLmFzc2VydChwYXlsb2FkLnVzZXJBY3Rpb25Db3VudDw9MjAsIm1heCB0cmFuc2FjdGlvbiBsaW1pdCBwZXIgYmxvY2sgcmVhY2hlZC4iKSk7Y29uc3QgZmVlVHJhbnNmZXI9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6YnVyblBhcmFtcy5idXJuU3ltYm9sLHF1YW50aXR5OmJ1cm5QYXJhbXMubXVsdGlUcmFuc2FjdGlvbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6ITB9KTthcGkuYXNzZXJ0KHRyYW5zZmVySXNTdWNjZXNzZnVsKGZlZVRyYW5zZmVyLCJ0cmFuc2ZlciIsYXBpLnNlbmRlciwibnVsbCIsYnVyblBhcmFtcy5idXJuU3ltYm9sLGJ1cm5QYXJhbXMubXVsdGlUcmFuc2FjdGlvbkZlZSksIm5vdCBlbm91Z2ggdG9rZW5zIGZvciBtdWx0aVRyYW5zYWN0aW9uIGZlZSIpLGFwaS5lbWl0KCJidXJuRmVlIix7ZnJvbTphcGkuc2VuZGVyLHRvOiJudWxsIixzeW1ib2w6YnVyblBhcmFtcy5idXJuU3ltYm9sLGZlZTpidXJuUGFyYW1zLm11bHRpVHJhbnNhY3Rpb25GZWV9KX0sYWN0aW9ucy5zdWJzY3JpYmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3NlbmRlcjpzZW5kZXJ9PWFwaTtpZigibnVsbCI9PT1zZW5kZXJ8fG51bGw9PXNlbmRlcilyZXR1cm47Y29uc3QgdGFibGU9ImFjY291bnRDb250cm9scyIsYnVyblBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7bGV0IGFjY291bnRDb250cm9sPWF3YWl0IGFwaS5kYi5maW5kT25lKHRhYmxlLHthY2NvdW50OnNlbmRlcn0pO2NvbnN0IGNyZWF0ZT0hYWNjb3VudENvbnRyb2w7YXBpLmFzc2VydCghYWNjb3VudENvbnRyb2x8fCFhY2NvdW50Q29udHJvbC5pc0RlbmllZCwiY2Fubm90IGJlIHB1cmNoYXNlZCBhcyBsb25nIGFzIHlvdSBhcmUgdGhyb3R0bGVkLiIpO2NvbnN0IHN0aWxsQWxsb3dlZD1pc1N0aWxsQWxsb3dlZChhY2NvdW50Q29udHJvbCk7YXBpLmFzc2VydCghc3RpbGxBbGxvd2VkLCJjYW4gb25seSBiZSBwdXJjaGFzZWQgb25jZSBhIG1vbnRoLiIpO2NvbnN0IGZlZVRyYW5zZmVyPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOmJ1cm5QYXJhbXMuYnVyblN5bWJvbCxxdWFudGl0eTpidXJuUGFyYW1zLmFsbG93bGlzdEJ1cm5GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OiEwfSk7YXBpLmFzc2VydCh0cmFuc2ZlcklzU3VjY2Vzc2Z1bChmZWVUcmFuc2ZlciwidHJhbnNmZXIiLGFwaS5zZW5kZXIsIm51bGwiLGJ1cm5QYXJhbXMuYnVyblN5bWJvbCxidXJuUGFyYW1zLmFsbG93bGlzdEJ1cm5GZWUpLCJub3QgZW5vdWdoIHRva2VucyBmb3IgYWxsb3dMaXN0IGZlZSIpO2NvbnN0IGRhdGU9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApO2RhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSszMCksYWNjb3VudENvbnRyb2x8fChhY2NvdW50Q29udHJvbD17YWNjb3VudDpzZW5kZXIsaXNEZW5pZWQ6ITEsaXNBbGxvd2VkOiEwfSksYWNjb3VudENvbnRyb2wuYWxsb3dlZFVudGlsPWRhdGUuZ2V0VGltZSgpLGFjY291bnRDb250cm9sLmlzQWxsb3dlZD0hMCxjcmVhdGU/YXdhaXQgYXBpLmRiLmluc2VydCh0YWJsZSxhY2NvdW50Q29udHJvbCk6YXdhaXQgYXBpLmRiLnVwZGF0ZSh0YWJsZSxhY2NvdW50Q29udHJvbCksYXBpLmVtaXQoInN1YnNjcmliZSIse2Zyb206YXBpLnNlbmRlcix0bzoibnVsbCIsc3ltYm9sOmJ1cm5QYXJhbXMuYnVyblN5bWJvbCxmZWU6YnVyblBhcmFtcy5hbGxvd2xpc3RCdXJuRmVlLHN1YnNjcmliZWRVbnRpbDphY2NvdW50Q29udHJvbC5hbGxvd2VkVW50aWx9KX07"}}}

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"witnesses","params":"","code":"Y29uc3QgTkJfQVBQUk9WQUxTX0FMTE9XRUQ9MzAsTkJfVE9QX1dJVE5FU1NFUz0yMCxOQl9CQUNLVVBfV0lUTkVTU0VTPTEsTkJfV0lUTkVTU0VTPTIxLE5CX1dJVE5FU1NFU19TSUdOQVRVUkVTX1JFUVVJUkVEPTE0LE1BWF9ST1VORFNfTUlTU0VEX0lOX0FfUk9XPTMsTUFYX1JPVU5EX1BST1BPU0lUSU9OX1dBSVRJTkdfUEVSSU9EPTQwLE5CX1RPS0VOU19UT19SRVdBUkRfUEVSX0JMT0NLPSIwLjAxOTAyNTg2IixOQl9UT0tFTlNfTkVFREVEX0JFRk9SRV9SRVdBUkRJTkc9IjAuMzk5NTQzMDYiLFdJVE5FU1NfQVBQUk9WRV9FWFBJUkVfQkxPQ0tTPTUxODRlMyxXSVRORVNTX01BWF9BQ0NPVU5UX0VYUElSRV9QRVJfQkxPQ0s9MTAsVVRJTElUWV9UT0tFTl9TWU1CT0w9IkJFRSIsVVRJTElUWV9UT0tFTl9QUkVDSVNJT049OCxHT1ZFUk5BTkNFX1RPS0VOX1NZTUJPTD0iV09SS0VSQkVFIixHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTj01LEdPVkVSTkFOQ0VfVE9LRU5fTUlOX1ZBTFVFPSIwLjAwMDAxIixyZWNhbGNUb3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodD1hc3luYygpPT57bGV0IHdpdHMsdG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQ9IjAiLG9mZnNldD0wO2Rve3dpdHM9YXdhaXQgYXBpLmRiLmZpbmQoIndpdG5lc3NlcyIse30sMWUzLG9mZnNldCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTx3aXRzLmxlbmd0aDtpKz0xKXtjb25zdCB3aXQ9d2l0c1tpXTt3aXQuZW5hYmxlZCYmKHRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIodG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQpLnBsdXMod2l0LmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSl9b2Zmc2V0Kz0xZTN9d2hpbGUoMWUzPT09d2l0cy5sZW5ndGgpO3JldHVybiB0b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodH07YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ3aXRuZXNzZXMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ3aXRuZXNzZXMiLFsiYXBwcm92YWxXZWlnaHQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJhcHByb3ZhbHMiLFsiZnJvbSIsInRvIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYWNjb3VudHMiLFsiYWNjb3VudCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInNjaGVkdWxlcyIpLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGFyYW1zIik7Y29uc3QgcGFyYW1zPXt0b3RhbEFwcHJvdmFsV2VpZ2h0OiIwIix0b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodDoiMCIsbnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3NlczowLGxhc3RWZXJpZmllZEJsb2NrTnVtYmVyOjAscm91bmQ6MCxsYXN0QmxvY2tSb3VuZDowLGN1cnJlbnRXaXRuZXNzOm51bGwsYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlOjAsbGFzdFdpdG5lc3NlczpbXSxudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQ6MzAsbnVtYmVyT2ZUb3BXaXRuZXNzZXM6MjAsbnVtYmVyT2ZXaXRuZXNzU2xvdHM6MjEsd2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZDoxNCxtYXhSb3VuZHNNaXNzZWRJbkFSb3c6MyxtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZDo0MCx3aXRuZXNzQXBwcm92ZUV4cGlyZUJsb2Nrczo1MTg0ZTN9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX1lbHNle2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7cGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0JiYiTmFOIiE9PXBhcmFtcy50b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodHx8KHBhcmFtcy50b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodD1hd2FpdCByZWNhbGNUb3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodCgpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKSl9fSxhY3Rpb25zLnJlc2V0U2NoZWR1bGU9YXN5bmMoKT0+e2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0IHNjaGVkdWxlcz1hd2FpdCBhcGkuZGIuZmluZCgic2NoZWR1bGVzIix7fSk7Zm9yKGxldCBpbmRleD0wO2luZGV4PHNjaGVkdWxlcy5sZW5ndGg7aW5kZXgrPTEpe2NvbnN0IHNjaGVkdWxlPXNjaGVkdWxlc1tpbmRleF07YXdhaXQgYXBpLmRiLnJlbW92ZSgic2NoZWR1bGVzIixzY2hlZHVsZSl9Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtwYXJhbXMuY3VycmVudFdpdG5lc3M9bnVsbCxwYXJhbXMuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPTAscGFyYW1zLmxhc3RXaXRuZXNzZXM9W10scGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0PWF3YWl0IHJlY2FsY1RvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0KCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfSxhY3Rpb25zLnJlY2FsY3VsYXRlQXBwcm92YWxzPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdCB3aXRuZXNzUmVjPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OnBheWxvYWQud2l0bmVzc30pO2lmKCF3aXRuZXNzUmVjKXJldHVybjtsZXQgbmV3QXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcigwKTtjb25zdCBhcHByb3ZhbHM9YXdhaXQgYXBpLmRiLmZpbmQoImFwcHJvdmFscyIse3RvOnBheWxvYWQud2l0bmVzc30pO2ZvcihsZXQgaT0wO2k8YXBwcm92YWxzLmxlbmd0aDtpKz0xKXtjb25zdCBhcHByb3ZhbD1hcHByb3ZhbHNbaV0sYWNjb3VudD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYWNjb3VudHMiLHthY2NvdW50OmFwcHJvdmFsLmZyb219KTthY2NvdW50JiYobmV3QXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihuZXdBcHByb3ZhbFdlaWdodCkucGx1cyhhY2NvdW50LmFwcHJvdmFsV2VpZ2h0KS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSl9Y29uc3Qgb2xkQXBwcm92YWxXZWlnaHQ9d2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCxkZWx0YUFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIobmV3QXBwcm92YWxXZWlnaHQpLm1pbnVzKG9sZEFwcHJvdmFsV2VpZ2h0KS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKTthd2FpdCB1cGRhdGVXaXRuZXNzUmFuayhwYXlsb2FkLndpdG5lc3MsZGVsdGFBcHByb3ZhbFdlaWdodCl9LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQ6bnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50LG51bWJlck9mVG9wV2l0bmVzc2VzOm51bWJlck9mVG9wV2l0bmVzc2VzLG51bWJlck9mV2l0bmVzc1Nsb3RzOm51bWJlck9mV2l0bmVzc1Nsb3RzLHdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQ6d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCxtYXhSb3VuZHNNaXNzZWRJbkFSb3c6bWF4Um91bmRzTWlzc2VkSW5BUm93LG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kOm1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLHdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzOndpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzfT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7bGV0IHNob3VsZFJlc2V0U2NoZWR1bGU9ITE7bnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50JiZOdW1iZXIuaXNJbnRlZ2VyKG51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudCkmJihwYXJhbXMubnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50PW51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudCksbnVtYmVyT2ZUb3BXaXRuZXNzZXMmJk51bWJlci5pc0ludGVnZXIobnVtYmVyT2ZUb3BXaXRuZXNzZXMpJiYocGFyYW1zLm51bWJlck9mVG9wV2l0bmVzc2VzPW51bWJlck9mVG9wV2l0bmVzc2VzKSxudW1iZXJPZldpdG5lc3NTbG90cyYmTnVtYmVyLmlzSW50ZWdlcihudW1iZXJPZldpdG5lc3NTbG90cykmJnBhcmFtcy5udW1iZXJPZldpdG5lc3NTbG90cyE9PW51bWJlck9mV2l0bmVzc1Nsb3RzJiYoc2hvdWxkUmVzZXRTY2hlZHVsZT0hMCxwYXJhbXMubnVtYmVyT2ZXaXRuZXNzU2xvdHM9bnVtYmVyT2ZXaXRuZXNzU2xvdHMpLHdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQmJk51bWJlci5pc0ludGVnZXIod2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCkmJihwYXJhbXMud2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZD13aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkKSxtYXhSb3VuZHNNaXNzZWRJbkFSb3cmJk51bWJlci5pc0ludGVnZXIobWF4Um91bmRzTWlzc2VkSW5BUm93KSYmKHBhcmFtcy5tYXhSb3VuZHNNaXNzZWRJbkFSb3c9bWF4Um91bmRzTWlzc2VkSW5BUm93KSxtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCYmTnVtYmVyLmlzSW50ZWdlcihtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCkmJihwYXJhbXMubWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q9bWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QpLGFwaS5hc3NlcnQocGFyYW1zLm51bWJlck9mVG9wV2l0bmVzc2VzKzE9PT1wYXJhbXMubnVtYmVyT2ZXaXRuZXNzU2xvdHMsIm9ubHkgMSBiYWNrdXAgYWxsb3dlZCIpJiYod2l0bmVzc0FwcHJvdmVFeHBpcmVCbG9ja3MmJk51bWJlci5pc0ludGVnZXIod2l0bmVzc0FwcHJvdmVFeHBpcmVCbG9ja3MpJiZhcGkuYXNzZXJ0KHdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzPnBhcmFtcy5udW1iZXJPZldpdG5lc3NTbG90cywid2l0bmVzc0FwcHJvdmVFeHBpcmVCbG9ja3Mgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBudW1iZXJPZldpdG5lc3NTbG90cyIpJiYocGFyYW1zLndpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzPXdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyksc2hvdWxkUmVzZXRTY2hlZHVsZSYmYXdhaXQgYWN0aW9ucy5yZXNldFNjaGVkdWxlKCkpfTtjb25zdCB1cGRhdGVXaXRuZXNzUmFuaz1hc3luYyh3aXRuZXNzLGFwcHJvdmFsV2VpZ2h0KT0+e2NvbnN0IHdpdG5lc3NSZWM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6d2l0bmVzc30pO2lmKHdpdG5lc3NSZWMpe2NvbnN0IG9sZEFwcHJvdmFsV2VpZ2h0PXdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWw7d2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbD1hcGkuQmlnTnVtYmVyKHdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnBsdXMoYXBwcm92YWxXZWlnaHQpLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pLGFwaS5CaWdOdW1iZXIod2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkubHQoMCkmJih3aXRuZXNzUmVjLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsPWFwaS5CaWdOdW1iZXIoMCkpLGF3YWl0IGFwaS5kYi51cGRhdGUoIndpdG5lc3NlcyIsd2l0bmVzc1JlYyk7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtwYXJhbXMudG90YWxBcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKHBhcmFtcy50b3RhbEFwcHJvdmFsV2VpZ2h0KS5wbHVzKGFwcHJvdmFsV2VpZ2h0KS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSx3aXRuZXNzUmVjLmVuYWJsZWQmJihwYXJhbXMudG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihwYXJhbXMudG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQpLnBsdXMoYXBwcm92YWxXZWlnaHQpLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pKSxhcGkuQmlnTnVtYmVyKG9sZEFwcHJvdmFsV2VpZ2h0KS5lcSgwKSYmYXBpLkJpZ051bWJlcih3aXRuZXNzUmVjLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS5ndCgwKT9wYXJhbXMubnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3Nlcys9MTphcGkuQmlnTnVtYmVyKG9sZEFwcHJvdmFsV2VpZ2h0KS5ndCgwKSYmYXBpLkJpZ051bWJlcih3aXRuZXNzUmVjLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS5lcSgwKSYmKHBhcmFtcy5udW1iZXJPZkFwcHJvdmVkV2l0bmVzc2VzLT0xKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9fTthY3Rpb25zLnVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscz1hc3luYyBwYXlsb2FkPT57Y29uc3R7YWNjb3VudDphY2NvdW50LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZDtpZih2b2lkIDA9PT1jYWxsaW5nQ29udHJhY3RJbmZvKXJldHVybjtpZigidG9rZW5zIiE9PWNhbGxpbmdDb250cmFjdEluZm8ubmFtZSlyZXR1cm47Y29uc3QgYWNjdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYWNjb3VudHMiLHthY2NvdW50OmFjY291bnR9KTtpZihudWxsIT09YWNjdCl7Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpHT1ZFUk5BTkNFX1RPS0VOX1NZTUJPTH0pO2xldCBhcHByb3ZhbFdlaWdodD0wO2JhbGFuY2UmJmJhbGFuY2Uuc3Rha2UmJihhcHByb3ZhbFdlaWdodD1iYWxhbmNlLnN0YWtlKSxiYWxhbmNlJiZiYWxhbmNlLmRlbGVnYXRpb25zSW4mJihhcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5wbHVzKGJhbGFuY2UuZGVsZWdhdGlvbnNJbikudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTikpO2NvbnN0IG9sZEFwcHJvdmFsV2VpZ2h0PWFjY3QuYXBwcm92YWxXZWlnaHQsZGVsdGFBcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5taW51cyhvbGRBcHByb3ZhbFdlaWdodCkudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTik7aWYoYWNjdC5hcHByb3ZhbFdlaWdodD1hcHByb3ZhbFdlaWdodCwhYXBpLkJpZ051bWJlcihkZWx0YUFwcHJvdmFsV2VpZ2h0KS5lcSgwKSl7YXdhaXQgYXBpLmRiLnVwZGF0ZSgiYWNjb3VudHMiLGFjY3QpO2NvbnN0IGFwcHJvdmFscz1hd2FpdCBhcGkuZGIuZmluZCgiYXBwcm92YWxzIix7ZnJvbTphY2NvdW50fSk7Zm9yKGxldCBpbmRleD0wO2luZGV4PGFwcHJvdmFscy5sZW5ndGg7aW5kZXgrPTEpe2NvbnN0IGFwcHJvdmFsPWFwcHJvdmFsc1tpbmRleF07YXdhaXQgdXBkYXRlV2l0bmVzc1JhbmsoYXBwcm92YWwudG8sZGVsdGFBcHByb3ZhbFdlaWdodCl9fX19LGFjdGlvbnMucmVnaXN0ZXI9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2RvbWFpbjpkb21haW4sSVA6SVAsUlBDUG9ydDpSUENQb3J0LFAyUFBvcnQ6UDJQUG9ydCxzaWduaW5nS2V5OnNpZ25pbmdLZXksZW5hYmxlZDplbmFibGVkLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwiYWN0aXZlIGtleSByZXF1aXJlZCIpJiZhcGkuYXNzZXJ0KGRvbWFpbnx8SVAsIm5laXRoZXIgZG9tYWluIG5vciBpcCBwcm92aWRlZCIpJiZhcGkuYXNzZXJ0KCEoZG9tYWluJiZJUCksImJvdGggZG9tYWluIGFuZCBpcCBwcm92aWRlZCIpJiYoZG9tYWluJiZhcGkuYXNzZXJ0KGRvbWFpbiYmInN0cmluZyI9PXR5cGVvZiBkb21haW4mJmFwaS52YWxpZGF0b3IuaXNGUUROKGRvbWFpbiksImRvbWFpbiBpcyBpbnZhbGlkIil8fElQJiZhcGkuYXNzZXJ0KElQJiYic3RyaW5nIj09dHlwZW9mIElQJiZhcGkudmFsaWRhdG9yLmlzSVAoSVApLCJJUCBpcyBpbnZhbGlkIikpJiZhcGkuYXNzZXJ0KFJQQ1BvcnQmJk51bWJlci5pc0ludGVnZXIoUlBDUG9ydCkmJlJQQ1BvcnQ+PTAmJlJQQ1BvcnQ8PTY1NTM1LCJSUENQb3J0IG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDY1NTM1IikmJmFwaS5hc3NlcnQoUDJQUG9ydCYmTnVtYmVyLmlzSW50ZWdlcihQMlBQb3J0KSYmUDJQUG9ydD49MCYmUDJQUG9ydDw9NjU1MzUsIlAyUFBvcnQgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgNjU1MzUiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKHNpZ25pbmdLZXkpJiY1Mz09PXNpZ25pbmdLZXkubGVuZ3RoLCJpbnZhbGlkIHNpZ25pbmcga2V5IikmJmFwaS5hc3NlcnQoImJvb2xlYW4iPT10eXBlb2YgZW5hYmxlZCwiZW5hYmxlZCBtdXN0IGJlIGEgYm9vbGVhbiIpKXtsZXQgd2l0bmVzcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7c2lnbmluZ0tleTpzaWduaW5nS2V5fSk7aWYoYXBpLmFzc2VydChudWxsPT09d2l0bmVzc3x8d2l0bmVzcy5hY2NvdW50PT09YXBpLnNlbmRlciwiYSB3aXRuZXNzIGlzIGFscmVhZHkgdXNpbmcgdGhpcyBzaWduaW5nIGtleSIpJiYod2l0bmVzcz1JUD9hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7SVA6SVAsUDJQUG9ydDpQMlBQb3J0fSk6YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2RvbWFpbjpkb21haW4sUDJQUG9ydDpQMlBQb3J0fSksYXBpLmFzc2VydChudWxsPT09d2l0bmVzc3x8d2l0bmVzcy5hY2NvdW50PT09YXBpLnNlbmRlcixgYSB3aXRuZXNzIGlzIGFscmVhZHkgdXNpbmcgdGhpcyAke0lQPyJJUCI6ImRvbWFpbiJ9L1BvcnRgKSkpaWYod2l0bmVzcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDphcGkuc2VuZGVyfSksd2l0bmVzcyl7Y29uc3QgZW5hYmxlZENoYW5nZWQ9d2l0bmVzcy5lbmFibGVkIT09ZW5hYmxlZDtsZXQgdXNlVW5zZXRzPSExO2NvbnN0IHVuc2V0cz17fTtJUD8od2l0bmVzcy5JUD1JUCx3aXRuZXNzLmRvbWFpbiYmKGRlbGV0ZSB3aXRuZXNzLmRvbWFpbix1bnNldHMuZG9tYWluPSIiLHVzZVVuc2V0cz0hMCkpOih3aXRuZXNzLmRvbWFpbj1kb21haW4sd2l0bmVzcy5JUCYmKGRlbGV0ZSB3aXRuZXNzLklQLHVuc2V0cy5JUD0iIix1c2VVbnNldHM9ITApKSx3aXRuZXNzLlJQQ1BvcnQ9UlBDUG9ydCx3aXRuZXNzLlAyUFBvcnQ9UDJQUG9ydCx3aXRuZXNzLnNpZ25pbmdLZXk9c2lnbmluZ0tleSx3aXRuZXNzLmVuYWJsZWQ9ZW5hYmxlZCx1c2VVbnNldHM/YXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIix3aXRuZXNzLHVuc2V0cyk6YXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIix3aXRuZXNzKTtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2VuYWJsZWRDaGFuZ2VkJiZ3aXRuZXNzLmVuYWJsZWQ/cGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0KS5wbHVzKHdpdG5lc3MuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pOmVuYWJsZWRDaGFuZ2VkJiYhd2l0bmVzcy5lbmFibGVkJiYocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0KS5taW51cyh3aXRuZXNzLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfWVsc2Ugd2l0bmVzcz17YWNjb3VudDphcGkuc2VuZGVyLGFwcHJvdmFsV2VpZ2h0OnskbnVtYmVyRGVjaW1hbDoiMCJ9LHNpZ25pbmdLZXk6c2lnbmluZ0tleSxSUENQb3J0OlJQQ1BvcnQsUDJQUG9ydDpQMlBQb3J0LGVuYWJsZWQ6ZW5hYmxlZCxtaXNzZWRSb3VuZHM6MCxtaXNzZWRSb3VuZHNJbkFSb3c6MCx2ZXJpZmllZFJvdW5kczowLGxhc3RSb3VuZFZlcmlmaWVkOm51bGwsbGFzdEJsb2NrVmVyaWZpZWQ6bnVsbH0sSVA/d2l0bmVzcy5JUD1JUDp3aXRuZXNzLmRvbWFpbj1kb21haW4sYXdhaXQgYXBpLmRiLmluc2VydCgid2l0bmVzc2VzIix3aXRuZXNzKX19O2NvbnN0IHJlbW92ZUFwcHJvdmFsPWFzeW5jKGFwcHJvdmFsLGFjY3QsYmxuY2UsbWFudWFsPSEwKT0+e2lmKGFwaS5hc3NlcnQobnVsbCE9PWFwcHJvdmFsLCJ5b3UgaGF2ZSBub3QgYXBwcm92ZWQgdGhpcyB3aXRuZXNzIikpe2NvbnN0e2Zyb206ZnJvbSx0bzp0b309YXBwcm92YWw7bGV0IGFjY291bnQ9YWNjdDthY2N0JiZhY2N0LmFjY291bnQ9PT1mcm9tfHwoYWNjb3VudD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYWNjb3VudHMiLHthY2NvdW50OmZyb219KSksYXdhaXQgYXBpLmRiLnJlbW92ZSgiYXBwcm92YWxzIixhcHByb3ZhbCk7bGV0IGJhbGFuY2U9YmxuY2U7YmFsYW5jZXx8KGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6ZnJvbSxzeW1ib2w6R09WRVJOQU5DRV9UT0tFTl9TWU1CT0x9KSk7bGV0IGFwcHJvdmFsV2VpZ2h0PTA7YmFsYW5jZSYmYmFsYW5jZS5zdGFrZSYmKGFwcHJvdmFsV2VpZ2h0PWJhbGFuY2Uuc3Rha2UpLGJhbGFuY2UmJmJhbGFuY2UuZGVsZWdhdGlvbnNJbiYmKGFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIoYXBwcm92YWxXZWlnaHQpLnBsdXMoYmFsYW5jZS5kZWxlZ2F0aW9uc0luKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSksbWFudWFsJiYoYWNjb3VudC5hcHByb3ZhbHMtPTEsYWNjb3VudC5hcHByb3ZhbFdlaWdodD1hcHByb3ZhbFdlaWdodCxhY2NvdW50Lmxhc3RBcHByb3ZlQmxvY2s9YXBpLmJsb2NrTnVtYmVyLGF3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixhY2NvdW50KSksYXdhaXQgdXBkYXRlV2l0bmVzc1JhbmsodG8sYC0ke2FwcHJvdmFsV2VpZ2h0fWApLGFwaS5lbWl0KCJ3aXRuZXNzQXBwcm92YWxSZW1vdmVkIix7YWNjb3VudDpmcm9tLHRvOnRvLGFwcHJvdmFsV2VpZ2h0OmFwcHJvdmFsV2VpZ2h0fSl9fTthY3Rpb25zLmFwcHJvdmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3dpdG5lc3M6d2l0bmVzc309cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKGFwaS5hc3NlcnQod2l0bmVzcyYmInN0cmluZyI9PXR5cGVvZiB3aXRuZXNzJiZ3aXRuZXNzLmxlbmd0aD49MyYmd2l0bmVzcy5sZW5ndGg8PTE2LCJpbnZhbGlkIHdpdG5lc3MgYWNjb3VudCIpKXtjb25zdCB3aXRuZXNzUmVjPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OndpdG5lc3N9KTtpZihhcGkuYXNzZXJ0KHdpdG5lc3NSZWMsIndpdG5lc3MgZG9lcyBub3QgZXhpc3QiKSl7bGV0IGFjY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYobnVsbD09PWFjY3QmJihhY2N0PXthY2NvdW50OmFwaS5zZW5kZXIsYXBwcm92YWxzOjAsYXBwcm92YWxXZWlnaHQ6eyRudW1iZXJEZWNpbWFsOiIwIn0sbGFzdEFwcHJvdmVCbG9jazphcGkuYmxvY2tOdW1iZXJ9LGFjY3Q9YXdhaXQgYXBpLmRiLmluc2VydCgiYWNjb3VudHMiLGFjY3QpKSxhcGkuYXNzZXJ0KGFjY3QuYXBwcm92YWxzPHBhcmFtcy5udW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQsYHlvdSBjYW4gb25seSBhcHByb3ZlICR7cGFyYW1zLm51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudH0gd2l0bmVzc2VzYCkpe2xldCBhcHByb3ZhbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYXBwcm92YWxzIix7ZnJvbTphcGkuc2VuZGVyLHRvOndpdG5lc3N9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT1hcHByb3ZhbCwieW91IGFscmVhZHkgYXBwcm92ZWQgdGhpcyB3aXRuZXNzIikpe2FwcHJvdmFsPXtmcm9tOmFwaS5zZW5kZXIsdG86d2l0bmVzc30sYXdhaXQgYXBpLmRiLmluc2VydCgiYXBwcm92YWxzIixhcHByb3ZhbCk7Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpHT1ZFUk5BTkNFX1RPS0VOX1NZTUJPTH0pO2xldCBhcHByb3ZhbFdlaWdodD0wO2JhbGFuY2UmJmJhbGFuY2Uuc3Rha2UmJihhcHByb3ZhbFdlaWdodD1iYWxhbmNlLnN0YWtlKSxiYWxhbmNlJiZiYWxhbmNlLmRlbGVnYXRpb25zSW4mJihhcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5wbHVzKGJhbGFuY2UuZGVsZWdhdGlvbnNJbikudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTikpLGFjY3QuYXBwcm92YWxzKz0xLGFjY3QuYXBwcm92YWxXZWlnaHQ9YXBwcm92YWxXZWlnaHQsYWNjdC5sYXN0QXBwcm92ZUJsb2NrPWFwaS5ibG9ja051bWJlcixhd2FpdCBhcGkuZGIudXBkYXRlKCJhY2NvdW50cyIsYWNjdCksYXdhaXQgdXBkYXRlV2l0bmVzc1Jhbmsod2l0bmVzcyxhcHByb3ZhbFdlaWdodCksYXBpLmVtaXQoIndpdG5lc3NBcHByb3ZhbEFkZGVkIix7YWNjb3VudDphcGkuc2VuZGVyLHRvOndpdG5lc3MsYXBwcm92YWxXZWlnaHQ6YXBwcm92YWxXZWlnaHR9KX19fX19LGFjdGlvbnMuZGlzYXBwcm92ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7d2l0bmVzczp3aXRuZXNzfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQod2l0bmVzcyYmInN0cmluZyI9PXR5cGVvZiB3aXRuZXNzJiZ3aXRuZXNzLmxlbmd0aD49MyYmd2l0bmVzcy5sZW5ndGg8PTE2LCJpbnZhbGlkIHdpdG5lc3MgYWNjb3VudCIpKXtjb25zdCB3aXRuZXNzUmVjPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OndpdG5lc3N9KTtpZihhcGkuYXNzZXJ0KHdpdG5lc3NSZWMsIndpdG5lc3MgZG9lcyBub3QgZXhpc3QiKSl7bGV0IGFjY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYobnVsbD09PWFjY3QmJihhY2N0PXthY2NvdW50OmFwaS5zZW5kZXIsYXBwcm92YWxzOjAsYXBwcm92YWxXZWlnaHQ6eyRudW1iZXJEZWNpbWFsOiIwIn0sbGFzdEFwcHJvdmVCbG9jazphcGkuYmxvY2tOdW1iZXJ9LGF3YWl0IGFwaS5kYi5pbnNlcnQoImFjY291bnRzIixhY2N0KSksYXBpLmFzc2VydChhY2N0LmFwcHJvdmFscz4wLCJubyBhcHByb3ZhbHMgZm91bmQiKSl7Y29uc3QgYXBwcm92YWw9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFwcHJvdmFscyIse2Zyb206YWNjdC5hY2NvdW50LHRvOndpdG5lc3N9KSxiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOkdPVkVSTkFOQ0VfVE9LRU5fU1lNQk9MfSk7YXdhaXQgcmVtb3ZlQXBwcm92YWwoYXBwcm92YWwsYWNjdCxiYWxhbmNlLCEwKX19fX07Y29uc3QgZXhwaXJlQWxsVXNlckFwcHJvdmFscz1hc3luYyBhY2N0PT57Y29uc3QgYXBwcm92YWxzPWF3YWl0IGFwaS5kYi5maW5kKCJhcHByb3ZhbHMiLHtmcm9tOmFjY3QuYWNjb3VudH0pLGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YWNjdC5hY2NvdW50LHN5bWJvbDpHT1ZFUk5BTkNFX1RPS0VOX1NZTUJPTH0pO2ZvcihsZXQgaT0wO2k8YXBwcm92YWxzLmxlbmd0aDtpKz0xKXtjb25zdCBhcHByb3ZhbD1hcHByb3ZhbHNbaV07YXdhaXQgcmVtb3ZlQXBwcm92YWwoYXBwcm92YWwsYWNjdCxiYWxhbmNlLCExKX1sZXQgYXBwcm92YWxXZWlnaHQ9MDtiYWxhbmNlJiZiYWxhbmNlLnN0YWtlJiYoYXBwcm92YWxXZWlnaHQ9YmFsYW5jZS5zdGFrZSksYmFsYW5jZSYmYmFsYW5jZS5kZWxlZ2F0aW9uc0luJiYoYXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihhcHByb3ZhbFdlaWdodCkucGx1cyhiYWxhbmNlLmRlbGVnYXRpb25zSW4pLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pKTtjb25zdCBhY2NvdW50PWFjY3Q7YWNjb3VudC5hcHByb3ZhbHM9MCxhY2NvdW50LmFwcHJvdmFsV2VpZ2h0PWFwcHJvdmFsV2VpZ2h0LGF3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixhY2NvdW50KSxhcGkuZW1pdCgid2l0bmVzc0FwcHJvdmFsc0V4cGlyZWQiLHthY2NvdW50OmFjY3QuYWNjb3VudH0pfSxmaW5kQW5kRXhwaXJlQXBwcm92YWxzPWFzeW5jIHdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzPT57Y29uc3QgYWNjb3VudHM9YXdhaXQgYXBpLmRiLmZpbmQoImFjY291bnRzIix7bGFzdEFwcHJvdmVCbG9jazp7JGx0OmFwaS5ibG9ja051bWJlci13aXRuZXNzQXBwcm92ZUV4cGlyZUJsb2Nrc30sYXBwcm92YWxzOnskZ3Q6MH19LDEwLDAsW3tpbmRleDoibGFzdEFwcHJvdmVCbG9jayIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGk9MDtpPGFjY291bnRzLmxlbmd0aDtpKz0xKWF3YWl0IGV4cGlyZUFsbFVzZXJBcHByb3ZhbHMoYWNjb3VudHNbaV0pfSxjaGFuZ2VDdXJyZW50V2l0bmVzcz1hc3luYygpPT57Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7Y3VycmVudFdpdG5lc3M6Y3VycmVudFdpdG5lc3MsdG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQ6dG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQsbGFzdFdpdG5lc3NlczpsYXN0V2l0bmVzc2VzLGxhc3RCbG9ja1JvdW5kOmxhc3RCbG9ja1JvdW5kLHJvdW5kOnJvdW5kLG1heFJvdW5kc01pc3NlZEluQVJvdzptYXhSb3VuZHNNaXNzZWRJbkFSb3csbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6bWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QsbGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI6bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXJ9PXBhcmFtcztsZXQgd2l0bmVzc0ZvdW5kPSExO2NvbnN0IHJhbmRvbT1hcGkucmFuZG9tKCkscmFuZG9tV2VpZ2h0PWFwaS5CaWdOdW1iZXIodG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQpLnRpbWVzKHJhbmRvbSkudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiwxKTtsZXQgb2Zmc2V0PTAsYWNjV2VpZ2h0PTAsd2l0bmVzc2VzPWF3YWl0IGFwaS5kYi5maW5kKCJ3aXRuZXNzZXMiLHthcHByb3ZhbFdlaWdodDp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fSxlbmFibGVkOiEwfSwxMDAsb2Zmc2V0LFt7aW5kZXg6ImFwcHJvdmFsV2VpZ2h0IixkZXNjZW5kaW5nOiEwfV0pO2NvbnN0IHNjaGVkdWxlcz1hd2FpdCBhcGkuZGIuZmluZCgic2NoZWR1bGVzIix7cm91bmQ6cm91bmR9KSxjdXJyZW50V2l0bmVzc1NjaGVkdWxlPXNjaGVkdWxlcy5maW5kKChzPT5zLndpdG5lc3M9PT1jdXJyZW50V2l0bmVzcykpLHByZXZpb3VzUm91bmRXaXRuZXNzPWxhc3RXaXRuZXNzZXMubGVuZ3RoPjE/bGFzdFdpdG5lc3Nlc1tsYXN0V2l0bmVzc2VzLmxlbmd0aC0yXToiIjtkb3tmb3IobGV0IGluZGV4PTA7aW5kZXg8d2l0bmVzc2VzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3Qgd2l0bmVzcz13aXRuZXNzZXNbaW5kZXhdO2lmKGFjY1dlaWdodD1hcGkuQmlnTnVtYmVyKGFjY1dlaWdodCkucGx1cyh3aXRuZXNzLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSwhMD09PXdpdG5lc3MuZW5hYmxlZCYmd2l0bmVzcy5hY2NvdW50IT09cHJldmlvdXNSb3VuZFdpdG5lc3MmJnZvaWQgMD09PXNjaGVkdWxlcy5maW5kKChzPT5zLndpdG5lc3M9PT13aXRuZXNzLmFjY291bnQpKSYmYXBpLkJpZ051bWJlcihyYW5kb21XZWlnaHQpLmx0ZShhY2NXZWlnaHQpKXtsZXQgd2l0bmVzc1RvQ2hhbmdlPWN1cnJlbnRXaXRuZXNzO2lmKGN1cnJlbnRXaXRuZXNzU2NoZWR1bGUudmVyaWZpZWRSb3VuZClmb3IobGV0IGluZGV4PTA7aW5kZXg8c2NoZWR1bGVzLmxlbmd0aDtpbmRleCs9MSlzY2hlZHVsZXNbaW5kZXhdLnZlcmlmaWVkUm91bmR8fCh3aXRuZXNzVG9DaGFuZ2U9c2NoZWR1bGVzW2luZGV4XS53aXRuZXNzKTthcGkuZGVidWcoYGNoYW5nZWQgd2l0bmVzcyBmcm9tICR7d2l0bmVzc1RvQ2hhbmdlfSB0byAke3dpdG5lc3MuYWNjb3VudH1gKSxhcGkuZW1pdCgid2l0bmVzc0NoYW5nZWQiLHtyZW1vdmVkOndpdG5lc3NUb0NoYW5nZSxhZGRlZDp3aXRuZXNzLmFjY291bnR9KTtjb25zdCBuZXdXaXRuZXNzT3JkZXI9W3dpdG5lc3MuYWNjb3VudF07Zm9yKGxldCBpbmRleD0wO2luZGV4PHNjaGVkdWxlcy5sZW5ndGg7aW5kZXgrPTEpe2NvbnN0IHNjaGVkdWxlPXNjaGVkdWxlc1tpbmRleF07c2NoZWR1bGUud2l0bmVzcyE9PXdpdG5lc3NUb0NoYW5nZSYmbmV3V2l0bmVzc09yZGVyLnB1c2goc2NoZWR1bGUud2l0bmVzcyksYXdhaXQgYXBpLmRiLnJlbW92ZSgic2NoZWR1bGVzIixzY2hlZHVsZSl9bGV0IGJsb2NrTnVtYmVyPTA9PT1sYXN0VmVyaWZpZWRCbG9ja051bWJlcj9hcGkuYmxvY2tOdW1iZXI6bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIrMTtmb3IobGV0IGk9MDtpPG5ld1dpdG5lc3NPcmRlci5sZW5ndGg7aSs9MSl7Y29uc3QgbmV3U2NoZWR1bGU9e3dpdG5lc3M6bmV3V2l0bmVzc09yZGVyW2ldLGJsb2NrTnVtYmVyOmJsb2NrTnVtYmVyLHJvdW5kOnJvdW5kfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJzY2hlZHVsZXMiLG5ld1NjaGVkdWxlKSxibG9ja051bWJlcis9MX1pZihwYXJhbXMuY3VycmVudFdpdG5lc3MhPT1uZXdXaXRuZXNzT3JkZXJbbmV3V2l0bmVzc09yZGVyLmxlbmd0aC0xXSYmKHBhcmFtcy5jdXJyZW50V2l0bmVzcz1uZXdXaXRuZXNzT3JkZXJbbmV3V2l0bmVzc09yZGVyLmxlbmd0aC0xXSxwYXJhbXMubGFzdFdpdG5lc3Nlcy5wdXNoKG5ld1dpdG5lc3NPcmRlcltuZXdXaXRuZXNzT3JkZXIubGVuZ3RoLTFdKSkscGFyYW1zLmJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZT1hcGkuYmxvY2tOdW1iZXIrbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QsIWN1cnJlbnRXaXRuZXNzU2NoZWR1bGUudmVyaWZpZWRSb3VuZCl7Y29uc3Qgc2NoZWR1bGVkV2l0bmVzcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDpjdXJyZW50V2l0bmVzc30pO3NjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzKz0xLHNjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzSW5BUm93Kz0xLGFwaS5lbWl0KCJ3aXRuZXNzTWlzc2VkUm91bmQiLHt3aXRuZXNzOnNjaGVkdWxlZFdpdG5lc3MuYWNjb3VudH0pLHNjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzSW5BUm93Pj1tYXhSb3VuZHNNaXNzZWRJbkFSb3cmJihzY2hlZHVsZWRXaXRuZXNzLm1pc3NlZFJvdW5kc0luQVJvdz0wLHNjaGVkdWxlZFdpdG5lc3MuZW5hYmxlZCYmKHBhcmFtcy50b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKHBhcmFtcy50b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodCkubWludXMoc2NoZWR1bGVkV2l0bmVzcy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTikpLHNjaGVkdWxlZFdpdG5lc3MuZW5hYmxlZD0hMSxhcGkuZW1pdCgid2l0bmVzc0Rpc2FibGVkRm9yTWlzc2luZ1Rvb01hbnlSb3VuZHNJbkFSb3ciLHt3aXRuZXNzOnNjaGVkdWxlZFdpdG5lc3MuYWNjb3VudH0pKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ3aXRuZXNzZXMiLHNjaGVkdWxlZFdpdG5lc3MpfWF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKSx3aXRuZXNzRm91bmQ9ITA7YnJlYWt9fSExPT09d2l0bmVzc0ZvdW5kJiYob2Zmc2V0Kz0xMDAsd2l0bmVzc2VzPWF3YWl0IGFwaS5kYi5maW5kKCJ3aXRuZXNzZXMiLHthcHByb3ZhbFdlaWdodDp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fX0sMTAwLG9mZnNldCxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH1dKSl9d2hpbGUod2l0bmVzc2VzLmxlbmd0aD4wJiYhMT09PXdpdG5lc3NGb3VuZCk7aWYoITE9PT13aXRuZXNzRm91bmQpe2FwaS5kZWJ1Zygibm8gYmFja3VwIHdpdG5lc3Mgd2FzIGZvdW5kLCBpbnRlcmNoYW5naW5nIHdpdG5lc3NlcyB3aXRoaW4gdGhlIGN1cnJlbnQgc2NoZWR1bGUiKTtmb3IobGV0IGluZGV4PTA7aW5kZXg8c2NoZWR1bGVzLmxlbmd0aC0xO2luZGV4Kz0xKXtjb25zdCBzY2hlZD1zY2hlZHVsZXNbaW5kZXhdLG5ld1dpdG5lc3M9c2NoZWQud2l0bmVzcztpZihuZXdXaXRuZXNzIT09cHJldmlvdXNSb3VuZFdpdG5lc3Mpe2FwaS5kZWJ1ZyhgY2hhbmdlZCBjdXJyZW50IHdpdG5lc3MgZnJvbSAke2N1cnJlbnRXaXRuZXNzfSB0byAke25ld1dpdG5lc3N9YCksc2NoZWR1bGUud2l0bmVzcz1uZXdXaXRuZXNzLGF3YWl0IGFwaS5kYi51cGRhdGUoInNjaGVkdWxlcyIsc2NoZWR1bGUpLHNjaGVkLndpdG5lc3M9Y3VycmVudFdpdG5lc3MsYXdhaXQgYXBpLmRiLnVwZGF0ZSgic2NoZWR1bGVzIixzY2hlZCkscGFyYW1zLmN1cnJlbnRXaXRuZXNzPW5ld1dpdG5lc3MscGFyYW1zLmxhc3RXaXRuZXNzZXMucHVzaChuZXdXaXRuZXNzKSxwYXJhbXMuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPWFwaS5ibG9ja051bWJlcittYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZDtjb25zdCBzY2hlZHVsZWRXaXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmN1cnJlbnRXaXRuZXNzfSk7c2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHMrPTEsc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3crPTEsYXBpLmVtaXQoIndpdG5lc3NNaXNzZWRSb3VuZCIse3dpdG5lc3M6c2NoZWR1bGVkV2l0bmVzcy5hY2NvdW50fSksc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3c+PW1heFJvdW5kc01pc3NlZEluQVJvdyYmKHNjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzSW5BUm93PTAsc2NoZWR1bGVkV2l0bmVzcy5lbmFibGVkJiYocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0KS5taW51cyhzY2hlZHVsZWRXaXRuZXNzLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSksc2NoZWR1bGVkV2l0bmVzcy5lbmFibGVkPSExLGFwaS5lbWl0KCJ3aXRuZXNzRGlzYWJsZWRGb3JNaXNzaW5nVG9vTWFueVJvdW5kc0luQVJvdyIse3dpdG5lc3M6c2NoZWR1bGVkV2l0bmVzcy5hY2NvdW50fSkpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ3aXRuZXNzZXMiLHNjaGVkdWxlZFdpdG5lc3MpLGFwaS5lbWl0KCJjdXJyZW50V2l0bmVzc0NoYW5nZWQiLHt9KTticmVha319fX0sbWFuYWdlV2l0bmVzc2VzU2NoZWR1bGU9YXN5bmMoKT0+e2lmKCJudWxsIiE9PWFwaS5zZW5kZXIpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse251bWJlck9mQXBwcm92ZWRXaXRuZXNzZXM6bnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3Nlcyx0b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodDp0b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodCxsYXN0VmVyaWZpZWRCbG9ja051bWJlcjpsYXN0VmVyaWZpZWRCbG9ja051bWJlcixibG9ja051bWJlcldpdG5lc3NDaGFuZ2U6YmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlLGxhc3RCbG9ja1JvdW5kOmxhc3RCbG9ja1JvdW5kLG51bWJlck9mVG9wV2l0bmVzc2VzOm51bWJlck9mVG9wV2l0bmVzc2VzLG51bWJlck9mV2l0bmVzc1Nsb3RzOm51bWJlck9mV2l0bmVzc1Nsb3RzLG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kOm1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLHdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzOndpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzfT1wYXJhbXM7YXdhaXQgZmluZEFuZEV4cGlyZUFwcHJvdmFscyh3aXRuZXNzQXBwcm92ZUV4cGlyZUJsb2Nrcyk7Y29uc3QgY3VycmVudEJsb2NrPWxhc3RWZXJpZmllZEJsb2NrTnVtYmVyKzE7bGV0IHNjaGVkdWxlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJzY2hlZHVsZXMiLHtibG9ja051bWJlcjpjdXJyZW50QmxvY2t9KTtpZihudWxsPT09c2NoZWR1bGUpe2lmKGFwaS5kZWJ1ZygiY2FsY3VsYXRpbmcgbmV3IHNjaGVkdWxlIiksc2NoZWR1bGU9W10sbnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3Nlcz49bnVtYmVyT2ZXaXRuZXNzU2xvdHMpe2NvbnN0IHJhbmRvbT1hcGkucmFuZG9tKCk7bGV0IHJhbmRvbVdlaWdodD1udWxsLG9mZnNldD0wLGFjY1dlaWdodD0wLHdpdG5lc3Nlcz1hd2FpdCBhcGkuZGIuZmluZCgid2l0bmVzc2VzIix7YXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6IjAifX0sZW5hYmxlZDohMH0sMTAwLG9mZnNldCxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH1dKTtkb3tmb3IobGV0IGluZGV4PTA7aW5kZXg8d2l0bmVzc2VzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3Qgd2l0bmVzcz13aXRuZXNzZXNbaW5kZXhdO3NjaGVkdWxlLmxlbmd0aD49bnVtYmVyT2ZUb3BXaXRuZXNzZXMmJm51bGw9PT1yYW5kb21XZWlnaHQmJihyYW5kb21XZWlnaHQ9YXBpLkJpZ051bWJlcihhY2NXZWlnaHQpLnBsdXMoR09WRVJOQU5DRV9UT0tFTl9NSU5fVkFMVUUpLnBsdXMoYXBpLkJpZ051bWJlcih0b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodCkubWludXMoYWNjV2VpZ2h0KS50aW1lcyhyYW5kb20pLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04sMSkpLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pKSxhY2NXZWlnaHQ9YXBpLkJpZ051bWJlcihhY2NXZWlnaHQpLnBsdXMod2l0bmVzcy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiksITA9PT13aXRuZXNzLmVuYWJsZWQmJihzY2hlZHVsZS5sZW5ndGg8bnVtYmVyT2ZUb3BXaXRuZXNzZXN8fGFwaS5CaWdOdW1iZXIocmFuZG9tV2VpZ2h0KS5sdGUoYWNjV2VpZ2h0KSkmJnNjaGVkdWxlLnB1c2goe3dpdG5lc3M6d2l0bmVzcy5hY2NvdW50LGJsb2NrTnVtYmVyOm51bGx9KSxzY2hlZHVsZS5sZW5ndGg+PW51bWJlck9mV2l0bmVzc1Nsb3RzJiYoaW5kZXg9d2l0bmVzc2VzLmxlbmd0aCl9c2NoZWR1bGUubGVuZ3RoPG51bWJlck9mV2l0bmVzc1Nsb3RzJiYob2Zmc2V0Kz0xMDAsd2l0bmVzc2VzPWF3YWl0IGFwaS5kYi5maW5kKCJ3aXRuZXNzZXMiLHthcHByb3ZhbFdlaWdodDp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fX0sMTAwLG9mZnNldCxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH1dKSl9d2hpbGUod2l0bmVzc2VzLmxlbmd0aD4wJiZzY2hlZHVsZS5sZW5ndGg8bnVtYmVyT2ZXaXRuZXNzU2xvdHMpfWlmKHNjaGVkdWxlLmxlbmd0aD09PW51bWJlck9mV2l0bmVzc1Nsb3RzKXtsZXQgaix4O2ZvcihsZXQgaT1zY2hlZHVsZS5sZW5ndGgtMTtpPjA7aS09MSl7Y29uc3QgcmFuZG9tPWFwaS5yYW5kb20oKTtqPU1hdGguZmxvb3IocmFuZG9tKihpKzEpKSx4PXNjaGVkdWxlW2ldLHNjaGVkdWxlW2ldPXNjaGVkdWxlW2pdLHNjaGVkdWxlW2pdPXh9bGV0IGxhc3RXaXRuZXNzZXM9cGFyYW1zLmxhc3RXaXRuZXNzZXM7Y29uc3QgcHJldmlvdXNSb3VuZFdpdG5lc3M9bGFzdFdpdG5lc3Nlcy5sZW5ndGg+MD9sYXN0V2l0bmVzc2VzW2xhc3RXaXRuZXNzZXMubGVuZ3RoLTFdOiIiO2xhc3RXaXRuZXNzZXMubGVuZ3RoPj1udW1iZXJPZldpdG5lc3NTbG90cyYmKGxhc3RXaXRuZXNzZXM9W10pO2NvbnN0IGxhc3RXaXRuZXNzPXNjaGVkdWxlW3NjaGVkdWxlLmxlbmd0aC0xXS53aXRuZXNzO2lmKGxhc3RXaXRuZXNzZXMuaW5jbHVkZXMobGFzdFdpdG5lc3MpfHxwcmV2aW91c1JvdW5kV2l0bmVzcz09PWxhc3RXaXRuZXNzKWZvcihsZXQgaT0wO2k8c2NoZWR1bGUubGVuZ3RoO2krPTEpaWYoIWxhc3RXaXRuZXNzZXMuaW5jbHVkZXMoc2NoZWR1bGVbaV0ud2l0bmVzcykmJnNjaGVkdWxlW2ldLndpdG5lc3MhPT1wcmV2aW91c1JvdW5kV2l0bmVzcyl7Y29uc3QgdGhpc1dpdG5lc3M9c2NoZWR1bGVbaV0ud2l0bmVzcztzY2hlZHVsZVtpXS53aXRuZXNzPWxhc3RXaXRuZXNzLHNjaGVkdWxlW3NjaGVkdWxlLmxlbmd0aC0xXS53aXRuZXNzPXRoaXNXaXRuZXNzO2JyZWFrfWlmKHNjaGVkdWxlWzBdLndpdG5lc3M9PT1wcmV2aW91c1JvdW5kV2l0bmVzcyl7Y29uc3QgZmlyc3RXaXRuZXNzPXNjaGVkdWxlWzBdLndpdG5lc3Msc2Vjb25kV2l0bmVzcz1zY2hlZHVsZVsxXS53aXRuZXNzO3NjaGVkdWxlWzBdLndpdG5lc3M9c2Vjb25kV2l0bmVzcyxzY2hlZHVsZVsxXS53aXRuZXNzPWZpcnN0V2l0bmVzc31sZXQgYmxvY2tOdW1iZXI9MD09PWxhc3RWZXJpZmllZEJsb2NrTnVtYmVyP2FwaS5ibG9ja051bWJlcjpsYXN0VmVyaWZpZWRCbG9ja051bWJlcisxO3BhcmFtcy5yb3VuZCs9MTtmb3IobGV0IGk9MDtpPHNjaGVkdWxlLmxlbmd0aDtpKz0xKXNjaGVkdWxlW2ldLmJsb2NrTnVtYmVyPWJsb2NrTnVtYmVyLHNjaGVkdWxlW2ldLnJvdW5kPXBhcmFtcy5yb3VuZCxhcGkuZGVidWcoYHNjaGVkdWxlZCB3aXRuZXNzICR7c2NoZWR1bGVbaV0ud2l0bmVzc30gZm9yIGJsb2NrICR7YmxvY2tOdW1iZXJ9IChyb3VuZCAke3BhcmFtcy5yb3VuZH0pYCksYXdhaXQgYXBpLmRiLmluc2VydCgic2NoZWR1bGVzIixzY2hlZHVsZVtpXSksYmxvY2tOdW1iZXIrPTE7MD09PWxhc3RWZXJpZmllZEJsb2NrTnVtYmVyJiYocGFyYW1zLmxhc3RWZXJpZmllZEJsb2NrTnVtYmVyPWFwaS5ibG9ja051bWJlci0xKTtjb25zdCBsYXN0V2l0bmVzc1JvdW5kU2NoZWR1bGU9c2NoZWR1bGVbc2NoZWR1bGUubGVuZ3RoLTFdO3BhcmFtcy5sYXN0QmxvY2tSb3VuZD1sYXN0V2l0bmVzc1JvdW5kU2NoZWR1bGUuYmxvY2tOdW1iZXIscGFyYW1zLmN1cnJlbnRXaXRuZXNzPWxhc3RXaXRuZXNzUm91bmRTY2hlZHVsZS53aXRuZXNzLGxhc3RXaXRuZXNzZXMucHVzaChsYXN0V2l0bmVzc1JvdW5kU2NoZWR1bGUud2l0bmVzcykscGFyYW1zLmxhc3RXaXRuZXNzZXM9bGFzdFdpdG5lc3NlcyxwYXJhbXMuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPWFwaS5ibG9ja051bWJlcittYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyksYXBpLmVtaXQoIm5ld1NjaGVkdWxlIix7fSl9fWVsc2UgYXBpLmJsb2NrTnVtYmVyPj1ibG9ja051bWJlcldpdG5lc3NDaGFuZ2UmJihhcGkuYmxvY2tOdW1iZXI+bGFzdEJsb2NrUm91bmQ/YXdhaXQgY2hhbmdlQ3VycmVudFdpdG5lc3MoKToocGFyYW1zLmJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZT1hcGkuYmxvY2tOdW1iZXIrbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpLGFwaS5lbWl0KCJhd2FpdGluZ1JvdW5kRW5kIix7fSkpKX07YWN0aW9ucy5wcm9wb3NlUm91bmQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3JvdW5kSGFzaDpyb3VuZEhhc2gsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleSxzaWduYXR1cmVzOnNpZ25hdHVyZXN9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI6bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIscm91bmQ6cm91bmQsbGFzdEJsb2NrUm91bmQ6bGFzdEJsb2NrUm91bmQsY3VycmVudFdpdG5lc3M6Y3VycmVudFdpdG5lc3N9PXBhcmFtcyxzY2hlZHVsZXM9YXdhaXQgYXBpLmRiLmZpbmQoInNjaGVkdWxlcyIse3JvdW5kOnJvdW5kfSwxZTMsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYoIWFwaS5hc3NlcnQoc2NoZWR1bGVzJiZzY2hlZHVsZXMubGVuZ3RoPjAsImludmFsaWQgcm91bmQiKSlyZXR1cm47Y29uc3QgbnVtYmVyT2ZXaXRuZXNzU2xvdHM9c2NoZWR1bGVzLmxlbmd0aCx7d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZDp3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkfT1wYXJhbXM7aWYoIWFwaS5hc3NlcnQoaXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSB0cmFuc2FjdGlvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQocm91bmRIYXNoJiYic3RyaW5nIj09dHlwZW9mIHJvdW5kSGFzaCYmNjQ9PT1yb3VuZEhhc2gubGVuZ3RoLCJpbnZhbGlkIHJvdW5kIGhhc2giKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoQXJyYXkuaXNBcnJheShzaWduYXR1cmVzKSYmc2lnbmF0dXJlcy5sZW5ndGg8PW51bWJlck9mV2l0bmVzc1Nsb3RzLCJpbnZhbGlkIHNpZ25hdHVyZXMiKSlyZXR1cm47bGV0IGN1cnJlbnRCbG9jaz1sYXN0VmVyaWZpZWRCbG9ja051bWJlcisxLGNhbGN1bGF0ZWRSb3VuZEhhc2g9IiI7aWYoIWFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PWN1cnJlbnRXaXRuZXNzLCJtdXN0IGJlIGN1cnJlbnQgd2l0bmVzcyIpKXJldHVybjtmb3IoO2N1cnJlbnRCbG9jazw9bGFzdEJsb2NrUm91bmQ7KXtjb25zdCBibG9jaz1hd2FpdCBhcGkuZGIuZ2V0QmxvY2tJbmZvKGN1cnJlbnRCbG9jayk7aWYobnVsbD09PWJsb2NrKXtjYWxjdWxhdGVkUm91bmRIYXNoPSIiO2JyZWFrfWNhbGN1bGF0ZWRSb3VuZEhhc2g9YXBpLlNIQTI1NihgJHtjYWxjdWxhdGVkUm91bmRIYXNofSR7YmxvY2suaGFzaH1gKSxjdXJyZW50QmxvY2srPTF9aWYoIWFwaS5hc3NlcnQoIiIhPT1jYWxjdWxhdGVkUm91bmRIYXNoJiZjYWxjdWxhdGVkUm91bmRIYXNoPT09cm91bmRIYXNoLCJyb3VuZCBoYXNoIG1pc21hdGNoIikpcmV0dXJuO2xldCBzaWduYXR1cmVzQ2hlY2tlZD0wO2NvbnN0IHZlcmlmaWVkQmxvY2tJbmZvcm1hdGlvbj1bXSxjdXJyZW50V2l0bmVzc0luZm89YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6Y3VycmVudFdpdG5lc3N9KSxjdXJyZW50V2l0bmVzc1NpZ25hdHVyZT1zaWduYXR1cmVzLmZpbmQoKHM9PnNbMF09PT1jdXJyZW50V2l0bmVzcykpO2ZvcihsZXQgaW5kZXg9MDtpbmRleDxzY2hlZHVsZXMubGVuZ3RoO2luZGV4Kz0xKXtjb25zdCBzY2hlZHVsZWRXaXRuZXNzPXNjaGVkdWxlc1tpbmRleF0sd2l0bmVzcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDpzY2hlZHVsZWRXaXRuZXNzLndpdG5lc3N9KTtpZihudWxsIT09d2l0bmVzcyl7Y29uc3Qgc2lnbmF0dXJlPXNpZ25hdHVyZXMuZmluZCgocz0+c1swXT09PXdpdG5lc3MuYWNjb3VudCkpO3NpZ25hdHVyZSYmYXBpLmNoZWNrU2lnbmF0dXJlKGNhbGN1bGF0ZWRSb3VuZEhhc2gsc2lnbmF0dXJlWzFdLHdpdG5lc3Muc2lnbmluZ0tleSwhMCkmJihhcGkuZGVidWcoYHdpdG5lc3MgJHt3aXRuZXNzLmFjY291bnR9IHNpZ25lZCByb3VuZCAke3JvdW5kfWApLHNpZ25hdHVyZXNDaGVja2VkKz0xLHNjaGVkdWxlZFdpdG5lc3MudmVyaWZpZWRSb3VuZD0hMCxhd2FpdCBhcGkuZGIudXBkYXRlKCJzY2hlZHVsZXMiLHNjaGVkdWxlZFdpdG5lc3MpKSx2ZXJpZmllZEJsb2NrSW5mb3JtYXRpb24ucHVzaCh7YmxvY2tOdW1iZXI6c2NoZWR1bGVkV2l0bmVzcy5ibG9ja051bWJlcix3aXRuZXNzOmN1cnJlbnRXaXRuZXNzLHNpZ25pbmdLZXk6Y3VycmVudFdpdG5lc3NJbmZvLnNpZ25pbmdLZXkscm91bmRTaWduYXR1cmU6Y3VycmVudFdpdG5lc3NTaWduYXR1cmVbMV0scm91bmQ6cm91bmQscm91bmRIYXNoOnJvdW5kSGFzaH0pfX1pZighYXBpLmFzc2VydChzaWduYXR1cmVzQ2hlY2tlZD49d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCwidmFsaWQgcm91bmQgaGFzaCBidXQgbm90IGVub3VnaCBzaWduYXR1cmVzIikpcmV0dXJuO2ZvcihsZXQgaW5kZXg9MDtpbmRleDx2ZXJpZmllZEJsb2NrSW5mb3JtYXRpb24ubGVuZ3RoO2luZGV4Kz0xKWF3YWl0IGFwaS52ZXJpZnlCbG9jayh2ZXJpZmllZEJsb2NrSW5mb3JtYXRpb25baW5kZXhdKTtmb3IobGV0IGluZGV4PTA7aW5kZXg8c2NoZWR1bGVzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3Qgc2NoZWR1bGU9c2NoZWR1bGVzW2luZGV4XTthd2FpdCBhcGkuZGIucmVtb3ZlKCJzY2hlZHVsZXMiLHNjaGVkdWxlKX1jb25zdCBjb250cmFjdEJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJjb250cmFjdHNCYWxhbmNlcyIse2FjY291bnQ6IndpdG5lc3NlcyIsc3ltYm9sOlVUSUxJVFlfVE9LRU5fU1lNQk9MfSk7aWYoY29udHJhY3RCYWxhbmNlJiZhcGkuQmlnTnVtYmVyKGNvbnRyYWN0QmFsYW5jZS5iYWxhbmNlKS5ndGUoIjAuMzk5NTQzMDYiKSl7Y29uc3QgcmV3YXJkQW1vdW50PWFwaS5CaWdOdW1iZXIoIjAuMDE5MDI1ODYiKS5tdWx0aXBsaWVkQnkobnVtYmVyT2ZXaXRuZXNzU2xvdHMpLnRvRml4ZWQoVVRJTElUWV9UT0tFTl9QUkVDSVNJT04pO2F3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwic3Rha2VGcm9tQ29udHJhY3QiLHt0bzpjdXJyZW50V2l0bmVzcyxzeW1ib2w6VVRJTElUWV9UT0tFTl9TWU1CT0wscXVhbnRpdHk6cmV3YXJkQW1vdW50fSl9cGFyYW1zLmN1cnJlbnRXaXRuZXNzPW51bGwscGFyYW1zLmxhc3RWZXJpZmllZEJsb2NrTnVtYmVyPWxhc3RCbG9ja1JvdW5kLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKTtjb25zdCB3aXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmN1cnJlbnRXaXRuZXNzfSk7d2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3c9MCx3aXRuZXNzLmxhc3RSb3VuZFZlcmlmaWVkPXJvdW5kLHdpdG5lc3MubGFzdEJsb2NrVmVyaWZpZWQ9bGFzdEJsb2NrUm91bmQsd2l0bmVzcy52ZXJpZmllZFJvdW5kcys9MSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ3aXRuZXNzZXMiLHdpdG5lc3MpLGF3YWl0IG1hbmFnZVdpdG5lc3Nlc1NjaGVkdWxlKCl9LGFjdGlvbnMuc2NoZWR1bGVXaXRuZXNzZXM9YXN5bmMoKT0+eyJudWxsIj09PWFwaS5zZW5kZXImJmF3YWl0IG1hbmFnZVdpdG5lc3Nlc1NjaGVkdWxlKCl9Ow=="}}}