tokens Smart Contract

in #hive-engine2 months ago

{"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+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHF1YW50aXR5TGVmdDpxdWFudGl0eUxlZnQsbnVtYmVyVHJhbnNhY3Rpb25zTGVmdDpudW1iZXJUcmFuc2FjdGlvbnNMZWZ0fT11bnN0YWtlLG5ld1Vuc3Rha2U9dW5zdGFrZSxiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sfSksdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtsZXQgdG9rZW5zVG9SZWxlYXNlPTAsbmV4dFRva2Vuc1RvUmVsZWFzZT0wO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmKDE9PT1udW1iZXJUcmFuc2FjdGlvbnNMZWZ0Pyh0b2tlbnNUb1JlbGVhc2U9cXVhbnRpdHlMZWZ0LGF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbnN0YWtlcyIsdW5zdGFrZSkpOih0b2tlbnNUb1JlbGVhc2U9YXBpLkJpZ051bWJlcihxdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxuZXdVbnN0YWtlLnF1YW50aXR5TGVmdD1hcGkuQmlnTnVtYmVyKG5ld1Vuc3Rha2UucXVhbnRpdHlMZWZ0KS5taW51cyh0b2tlbnNUb1JlbGVhc2UpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKSxuZXdVbnN0YWtlLm51bWJlclRyYW5zYWN0aW9uc0xlZnQtPTEsbmV4dFRva2Vuc1RvUmVsZWFzZT0xPT09bmV3VW5zdGFrZS5udW1iZXJUcmFuc2FjdGlvbnNMZWZ0P25ld1Vuc3Rha2UucXVhbnRpdHlMZWZ0OnRva2Vuc1RvUmVsZWFzZSxuZXdVbnN0YWtlLm5leHRUcmFuc2FjdGlvblRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKG5ld1Vuc3Rha2UubmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wKS5wbHVzKG5ld1Vuc3Rha2UubWlsbGlzZWNQZXJQZXJpb2QpLnRvTnVtYmVyKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGVuZGluZ1Vuc3Rha2VzIixuZXdVbnN0YWtlKSksYXBpLkJpZ051bWJlcih0b2tlbnNUb1JlbGVhc2UpLmd0KDApKSl7Y29uc3Qgb3JpZ2luYWxCYWxhbmNlPWJhbGFuY2UuYmFsYW5jZSxvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlO2JhbGFuY2UuYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UuYmFsYW5jZSx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCEwKSxiYWxhbmNlLnBlbmRpbmdVbnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkubHQob3JpZ2luYWxQZW5kaW5nU3Rha2UpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkuZ3Qob3JpZ2luYWxCYWxhbmNlKSwiY2Fubm90IHN1YnRyYWN0IikmJihhcGkuQmlnTnVtYmVyKG5leHRUb2tlbnNUb1JlbGVhc2UpLmd0KDApJiYoYmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UsbmV4dFRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpLHRva2VuLnRvdGFsU3Rha2VkPWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4udG90YWxTdGFrZWQsbmV4dFRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTphcGkuQmlnTnVtYmVyKG5leHRUb2tlbnNUb1JlbGVhc2UpLm5lZ2F0ZWQoKX0pKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksIldPUktFUkJFRSI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphY2NvdW50fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbmZ1bmRzIiwidXBkYXRlUHJvcG9zYWxBcHByb3ZhbHMiLHthY2NvdW50OmFjY291bnQsdG9rZW46dG9rZW59KSxhcGkuZW1pdCgidW5zdGFrZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnRva2Vuc1RvUmVsZWFzZX0pKX19O2FjdGlvbnMuY2hlY2tQZW5kaW5nVW5zdGFrZXM9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKS5nZXRUaW1lKCk7bGV0IHBlbmRpbmdVbnN0YWtlcz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1Vuc3Rha2VzIix7bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19LDFlMywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxuYlBlbmRpbmdVbnN0YWtlcz1wZW5kaW5nVW5zdGFrZXMubGVuZ3RoO2Zvcig7bmJQZW5kaW5nVW5zdGFrZXM+MDspe2ZvcihsZXQgaW5kZXg9MDtpbmRleDxuYlBlbmRpbmdVbnN0YWtlcztpbmRleCs9MSl7Y29uc3QgcGVuZGluZ1Vuc3Rha2U9cGVuZGluZ1Vuc3Rha2VzW2luZGV4XTthd2FpdCBwcm9jZXNzVW5zdGFrZShwZW5kaW5nVW5zdGFrZSl9cGVuZGluZ1Vuc3Rha2VzPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5zdGFrZXMiLHtuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6eyRsdGU6dGltZXN0YW1wfX0sMWUzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pLG5iUGVuZGluZ1Vuc3Rha2VzPXBlbmRpbmdVbnN0YWtlcy5sZW5ndGh9fX0sYWN0aW9ucy5lbmFibGVTdGFraW5nPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHVuc3Rha2luZ0Nvb2xkb3duOnVuc3Rha2luZ0Nvb2xkb3duLG51bWJlclRyYW5zYWN0aW9uczpudW1iZXJUcmFuc2FjdGlvbnMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtlbmFibGVTdGFraW5nRmVlOmVuYWJsZVN0YWtpbmdGZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxlbm91Z2hGdW5kcz11dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGVuYWJsZVN0YWtpbmdGZWUpLGF1dGhvcml6ZWQ9dm9pZCAwPT09ZW5hYmxlU3Rha2luZ0ZlZXx8YXBpLkJpZ051bWJlcihlbmFibGVTdGFraW5nRmVlKS5sdGUoMCl8fGVub3VnaEZ1bmRzO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZCwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyICBmZWVzIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wsImludmFsaWQgc3ltYm9sIikmJmFwaS5hc3NlcnQodW5zdGFraW5nQ29vbGRvd24mJk51bWJlci5pc0ludGVnZXIodW5zdGFraW5nQ29vbGRvd24pJiZ1bnN0YWtpbmdDb29sZG93bj4wJiZ1bnN0YWtpbmdDb29sZG93bjw9MTgyNTAsInVuc3Rha2luZ0Nvb2xkb3duIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDE4MjUwIikmJmFwaS5hc3NlcnQobnVtYmVyVHJhbnNhY3Rpb25zJiZOdW1iZXIuaXNJbnRlZ2VyKG51bWJlclRyYW5zYWN0aW9ucykmJm51bWJlclRyYW5zYWN0aW9ucz4wJiZudW1iZXJUcmFuc2FjdGlvbnM8PTE4MjUwLCJudW1iZXJUcmFuc2FjdGlvbnMgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTgyNTAiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTthcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWR8fCExPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgYWxyZWFkeSBlbmFibGVkIikmJih0b2tlbi5zdGFraW5nRW5hYmxlZD0hMCx0b2tlbi50b3RhbFN0YWtlZD0iMCIsdG9rZW4udW5zdGFraW5nQ29vbGRvd249dW5zdGFraW5nQ29vbGRvd24sdG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zPW51bWJlclRyYW5zYWN0aW9ucyxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuQmlnTnVtYmVyKGVuYWJsZVN0YWtpbmdGZWUpLmd0KDApJiZhd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmVuYWJsZVN0YWtpbmdGZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pKX19LGFjdGlvbnMuc3Rha2U9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdG86dG8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtsZXQgcXVhbnRpdHk9cGF5bG9hZC5xdWFudGl0eTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pLGZpbmFsVG89dG8udHJpbSgpO2lmKGFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBzdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiYocXVhbnRpdHk9YXBpLkJpZ051bWJlcihxdWFudGl0eSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pLGF3YWl0IHN1YkJhbGFuY2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSkpeyExPT09YXdhaXQgYWRkU3Rha2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSk/YXdhaXQgYWRkQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpOihhcGkuZW1pdCgic3Rha2UiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCJXT1JLRVJCRUUiPT09c3ltYm9sJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6ZmluYWxUb30pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5mdW5kcyIsInVwZGF0ZVByb3Bvc2FsQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbFRvLHRva2VuOnRva2VufSkpfX19LGFjdGlvbnMuc3Rha2VGcm9tQ29udHJhY3Q9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdG86dG8sY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2xldCBxdWFudGl0eT1wYXlsb2FkLnF1YW50aXR5O2lmKGNhbGxpbmdDb250cmFjdEluZm8mJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KSxmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3Qgc3Rha2UgcG9zaXRpdmUgcXVhbnRpdHkiKSYmKHF1YW50aXR5PWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKSxhd2FpdCBzdWJCYWxhbmNlKGNhbGxpbmdDb250cmFjdEluZm8ubmFtZSx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKSkpeyExPT09YXdhaXQgYWRkU3Rha2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSk/YXdhaXQgYWRkQmFsYW5jZShjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIik6KGFwaS5lbWl0KCJzdGFrZUZyb21Db250cmFjdCIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbFRvfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbmZ1bmRzIiwidXBkYXRlUHJvcG9zYWxBcHByb3ZhbHMiLHthY2NvdW50OmZpbmFsVG8sdG9rZW46dG9rZW59KSl9fX07Y29uc3QgdmFsaWRhdGVBdmFpbGFibGVTdGFrZT1hc3luYyhiYWxhbmNlLHRva2VuLHF1YW50aXR5KT0+e2xldCBhdmFpbGFibGVTdGFrZUJhbGFuY2U9YXBpLkJpZ051bWJlcihiYWxhbmNlLnN0YWtlKTtyZXR1cm4gYXdhaXQgZmluZEFuZFByb2Nlc3NBbGwoInBlbmRpbmdVbnN0YWtlcyIse3N5bWJvbDpiYWxhbmNlLnN5bWJvbCxhY2NvdW50OmJhbGFuY2UuYWNjb3VudH0sKGFzeW5jIHBlbmRpbmdVbnN0YWtlPT57aWYocGVuZGluZ1Vuc3Rha2UubnVtYmVyVHJhbnNhY3Rpb25zTGVmdD4xKXtjb25zdCB0b2tlbnNUb1JlbGVhc2U9YXBpLkJpZ051bWJlcihwZW5kaW5nVW5zdGFrZS5xdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTthdmFpbGFibGVTdGFrZUJhbGFuY2U9YXZhaWxhYmxlU3Rha2VCYWxhbmNlLm1pbnVzKHBlbmRpbmdVbnN0YWtlLnF1YW50aXR5TGVmdCkucGx1cyh0b2tlbnNUb1JlbGVhc2UpfX0pKSxhcGkuYXNzZXJ0KGF2YWlsYWJsZVN0YWtlQmFsYW5jZS5ndGUocXVhbnRpdHkpLCJvdmVyZHJhd24gc3Rha2UiKX0sc3RhcnRVbnN0YWtlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHkpPT57Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnRva2VuLnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0Iil8fCFhd2FpdCB2YWxpZGF0ZUF2YWlsYWJsZVN0YWtlKGJhbGFuY2UsdG9rZW4scXVhbnRpdHkpKXJldHVybiExO3tjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2Usb3JpZ2luYWxQZW5kaW5nU3Rha2U9YmFsYW5jZS5wZW5kaW5nVW5zdGFrZSxuZXh0VG9rZW5zVG9SZWxlYXNlPXRva2VuLm51bWJlclRyYW5zYWN0aW9ucz4xP2FwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmRpdmlkZWRCeSh0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnMpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik6cXVhbnRpdHk7YmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UsbmV4dFRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpLGJhbGFuY2UucGVuZGluZ1Vuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnBlbmRpbmdVbnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmx0KG9yaWdpbmFsU3Rha2UpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UpLmd0KG9yaWdpbmFsUGVuZGluZ1N0YWtlKSwiY2Fubm90IHN1YnRyYWN0IikmJihhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZSksdG9rZW4udG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi50b3RhbFN0YWtlZCxuZXh0VG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksIldPUktFUkJFRSI9PT10b2tlbi5zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphY2NvdW50fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OmFwaS5CaWdOdW1iZXIobmV4dFRva2Vuc1RvUmVsZWFzZSkubmVnYXRlZCgpfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbmZ1bmRzIiwidXBkYXRlUHJvcG9zYWxBcHByb3ZhbHMiLHthY2NvdW50OmFjY291bnQsdG9rZW46dG9rZW59KSl9Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSxjb29sZG93blBlcmlvZE1pbGxpc2VjPTI0KnRva2VuLnVuc3Rha2luZ0Nvb2xkb3duKjM2MDAqMWUzLG1pbGxpc2VjUGVyUGVyaW9kPWFwaS5CaWdOdW1iZXIoY29vbGRvd25QZXJpb2RNaWxsaXNlYykuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykuaW50ZWdlclZhbHVlKGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksbmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wPWFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkucGx1cyhtaWxsaXNlY1BlclBlcmlvZCkudG9OdW1iZXIoKSx1bnN0YWtlPXthY2NvdW50OmFjY291bnQsc3ltYm9sOnRva2VuLnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxxdWFudGl0eUxlZnQ6cXVhbnRpdHksbmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wOm5leHRUcmFuc2FjdGlvblRpbWVzdGFtcCxudW1iZXJUcmFuc2FjdGlvbnNMZWZ0OnRva2VuLm51bWJlclRyYW5zYWN0aW9ucyxtaWxsaXNlY1BlclBlcmlvZDptaWxsaXNlY1BlclBlcmlvZCx0eElEOmFwaS50cmFuc2FjdGlvbklkfTtyZXR1cm4gYXdhaXQgYXBpLmRiLmluc2VydCgicGVuZGluZ1Vuc3Rha2VzIix1bnN0YWtlKSwhMH07YWN0aW9ucy51bnN0YWtlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7bGV0IHF1YW50aXR5PXBheWxvYWQucXVhbnRpdHk7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHVuc3Rha2UgcG9zaXRpdmUgcXVhbnRpdHkiKSYmKHF1YW50aXR5PWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKSxhd2FpdCBzdGFydFVuc3Rha2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSkmJmFwaS5lbWl0KCJ1bnN0YWtlU3RhcnQiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19O2NvbnN0IHByb2Nlc3NDYW5jZWxVbnN0YWtlPWFzeW5jIHVuc3Rha2U9Pntjb25zdHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxxdWFudGl0eUxlZnQ6cXVhbnRpdHlMZWZ0LG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6bnVtYmVyVHJhbnNhY3Rpb25zTGVmdH09dW5zdGFrZSxiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sfSksdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLnBlbmRpbmdVbnN0YWtlKS5ndGUocXVhbnRpdHlMZWZ0KSwib3ZlcmRyYXduIHBlbmRpbmdVbnN0YWtlIikpe2NvbnN0IG9yaWdpbmFsU3Rha2U9YmFsYW5jZS5zdGFrZSxvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlLHRva2Vuc1RvUmVsZWFzZT1udW1iZXJUcmFuc2FjdGlvbnNMZWZ0PjE/YXBpLkJpZ051bWJlcihxdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTpxdWFudGl0eUxlZnQ7aWYoYmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UsdG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMCksYmFsYW5jZS5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UscXVhbnRpdHlMZWZ0LHRva2VuLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UpLmx0KG9yaWdpbmFsUGVuZGluZ1N0YWtlKSYmYXBpLkJpZ051bWJlcihiYWxhbmNlLnN0YWtlKS5ndChvcmlnaW5hbFN0YWtlKSwiY2Fubm90IHN1YnRyYWN0IikpcmV0dXJuIGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSx0b2tlbi50b3RhbFN0YWtlZD1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnRvdGFsU3Rha2VkLHRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLGFwaS5lbWl0KCJ1bnN0YWtlQ2FuY2VsIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHlMZWZ0fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphY2NvdW50fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnRva2Vuc1RvUmVsZWFzZX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5mdW5kcyIsInVwZGF0ZVByb3Bvc2FsQXBwcm92YWxzIix7YWNjb3VudDphY2NvdW50LHRva2VuOnRva2VufSksITB9cmV0dXJuITF9O2FjdGlvbnMuY2FuY2VsVW5zdGFrZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7dHhJRDp0eElELGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodHhJRCYmInN0cmluZyI9PXR5cGVvZiB0eElELCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB1bnN0YWtlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwZW5kaW5nVW5zdGFrZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsdHhJRDp0eElEfSk7YXBpLmFzc2VydCh1bnN0YWtlLCJ1bnN0YWtlIGRvZXMgbm90IGV4aXN0IikmJmF3YWl0IHByb2Nlc3NDYW5jZWxVbnN0YWtlKHVuc3Rha2UpJiZhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5zdGFrZXMiLHVuc3Rha2UpfX0sYWN0aW9ucy5lbmFibGVEZWxlZ2F0aW9uPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHVuZGVsZWdhdGlvbkNvb2xkb3duOnVuZGVsZWdhdGlvbkNvb2xkb3duLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7ZW5hYmxlRGVsZWdhdGlvbkZlZTplbmFibGVEZWxlZ2F0aW9uRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksZW5vdWdoRnVuZHM9dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShlbmFibGVEZWxlZ2F0aW9uRmVlKSxhdXRob3JpemVkPXZvaWQgMD09PWVuYWJsZURlbGVnYXRpb25GZWV8fGFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkubHRlKDApfHxlbm91Z2hGdW5kcztpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciAgZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KHVuZGVsZWdhdGlvbkNvb2xkb3duJiZOdW1iZXIuaXNJbnRlZ2VyKHVuZGVsZWdhdGlvbkNvb2xkb3duKSYmdW5kZWxlZ2F0aW9uQ29vbGRvd24+MCYmdW5kZWxlZ2F0aW9uQ29vbGRvd248PTE4MjUwLCJ1bmRlbGVnYXRpb25Db29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWR8fCExPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gYWxyZWFkeSBlbmFibGVkIikmJih0b2tlbi5kZWxlZ2F0aW9uRW5hYmxlZD0hMCx0b2tlbi51bmRlbGVnYXRpb25Db29sZG93bj11bmRlbGVnYXRpb25Db29sZG93bixhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmd0KDApJiZhd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmVuYWJsZURlbGVnYXRpb25GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pKX19LGFjdGlvbnMuZGVsZWdhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdG86dG8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtsZXQgcXVhbnRpdHk9cGF5bG9hZC5xdWFudGl0eTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChmaW5hbFRvIT09YXBpLnNlbmRlciwiY2Fubm90IGRlbGVnYXRlIHRvIHlvdXJzZWxmIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgZGVsZWdhdGUgcG9zaXRpdmUgcXVhbnRpdHkiKSl7cXVhbnRpdHk9YXBpLkJpZ051bWJlcihxdWFudGl0eSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pO2NvbnN0IGJhbGFuY2VGcm9tPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZUZyb20sImJhbGFuY2VGcm9tIGRvZXMgbm90IGV4aXN0IikmJmF3YWl0IHZhbGlkYXRlQXZhaWxhYmxlU3Rha2UoYmFsYW5jZUZyb20sdG9rZW4scXVhbnRpdHkpKXt2b2lkIDA9PT1iYWxhbmNlRnJvbS5zdGFrZT8oYmFsYW5jZUZyb20uc3Rha2U9IjAiLGJhbGFuY2VGcm9tLnBlbmRpbmdVbnN0YWtlPSIwIixiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luPSIwIixiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dD0iMCIsYmFsYW5jZUZyb20ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiKTp2b2lkIDA9PT1iYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luJiYoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbj0iMCIsYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQ9IjAiLGJhbGFuY2VGcm9tLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIixiYWxhbmNlRnJvbS5kZWxlZ2F0ZWRTdGFrZSYmKGRlbGV0ZSBiYWxhbmNlRnJvbS5kZWxlZ2F0ZWRTdGFrZSxkZWxldGUgYmFsYW5jZUZyb20ucmVjZWl2ZWRTdGFrZSkpO2xldCBiYWxhbmNlVG89YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDpmaW5hbFRvLHN5bWJvbDpzeW1ib2x9KTtudWxsPT09YmFsYW5jZVRvPyhiYWxhbmNlVG89YmFsYW5jZVRlbXBsYXRlLGJhbGFuY2VUby5hY2NvdW50PWZpbmFsVG8sYmFsYW5jZVRvLnN5bWJvbD1zeW1ib2wsYmFsYW5jZVRvPWF3YWl0IGFwaS5kYi5pbnNlcnQoImJhbGFuY2VzIixiYWxhbmNlVG8pKTp2b2lkIDA9PT1iYWxhbmNlVG8uc3Rha2U/KGJhbGFuY2VUby5zdGFrZT0iMCIsYmFsYW5jZVRvLnBlbmRpbmdVbnN0YWtlPSIwIixiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbj0iMCIsYmFsYW5jZVRvLmRlbGVnYXRpb25zT3V0PSIwIixiYWxhbmNlVG8ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiKTp2b2lkIDA9PT1iYWxhbmNlVG8uZGVsZWdhdGlvbnNJbiYmKGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luPSIwIixiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQ9IjAiLGJhbGFuY2VUby5wZW5kaW5nVW5kZWxlZ2F0aW9ucz0iMCIsYmFsYW5jZVRvLmRlbGVnYXRlZFN0YWtlJiYoZGVsZXRlIGJhbGFuY2VUby5kZWxlZ2F0ZWRTdGFrZSxkZWxldGUgYmFsYW5jZVRvLnJlY2VpdmVkU3Rha2UpKTtsZXQgZGVsZWdhdGlvbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgiZGVsZWdhdGlvbnMiLHt0bzpmaW5hbFRvLGZyb206YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKS5nZXRUaW1lKCk7bnVsbD09ZGVsZWdhdGlvbj8oYmFsYW5jZUZyb20uc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZUZyb20pLGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZVRvLmRlbGVnYXRpb25zSW4scXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZVRvKSxkZWxlZ2F0aW9uPXt9LGRlbGVnYXRpb24uZnJvbT1hcGkuc2VuZGVyLGRlbGVnYXRpb24udG89ZmluYWxUbyxkZWxlZ2F0aW9uLnN5bWJvbD1zeW1ib2wsZGVsZWdhdGlvbi5xdWFudGl0eT1xdWFudGl0eSxkZWxlZ2F0aW9uLmNyZWF0ZWQ9dGltZXN0YW1wLGRlbGVnYXRpb24udXBkYXRlZD10aW1lc3RhbXAsYXdhaXQgYXBpLmRiLmluc2VydCgiZGVsZWdhdGlvbnMiLGRlbGVnYXRpb24pLGFwaS5lbWl0KCJkZWxlZ2F0ZSIse3RvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCJXT1JLRVJCRUUiPT09c3ltYm9sJiYoYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6ZmluYWxUb30pKSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksZGVsZWdhdGVkOiEwfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sLHF1YW50aXR5OmFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLm5lZ2F0ZWQoKX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5mdW5kcyIsInVwZGF0ZVByb3Bvc2FsQXBwcm92YWxzIix7YWNjb3VudDphcGkuc2VuZGVyLHRva2VuOnRva2VufSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbmZ1bmRzIiwidXBkYXRlUHJvcG9zYWxBcHByb3ZhbHMiLHthY2NvdW50OmZpbmFsVG8sdG9rZW46dG9rZW59KSk6KGJhbGFuY2VGcm9tLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dD1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VGcm9tKSxiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbj1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VUbyksZGVsZWdhdGlvbi5xdWFudGl0eT1jYWxjdWxhdGVCYWxhbmNlKGRlbGVnYXRpb24ucXVhbnRpdHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxkZWxlZ2F0aW9uLnVwZGF0ZWQ9dGltZXN0YW1wLGF3YWl0IGFwaS5kYi51cGRhdGUoImRlbGVnYXRpb25zIixkZWxlZ2F0aW9uKSxhcGkuZW1pdCgiZGVsZWdhdGUiLHt0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSwiV09SS0VSQkVFIj09PXN5bWJvbCYmKGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphcGkuc2VuZGVyfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmZpbmFsVG99KSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGRlbGVnYXRlZDohMH0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTphcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5uZWdhdGVkKCl9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VuZnVuZHMiLCJ1cGRhdGVQcm9wb3NhbEFwcHJvdmFscyIse2FjY291bnQ6YXBpLnNlbmRlcix0b2tlbjp0b2tlbn0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5mdW5kcyIsInVwZGF0ZVByb3Bvc2FsQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbFRvLHRva2VuOnRva2VufSkpfX19fX0sYWN0aW9ucy51bmRlbGVnYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGZyb206ZnJvbSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2xldCBxdWFudGl0eT1wYXlsb2FkLnF1YW50aXR5O2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmZyb20mJiJzdHJpbmciPT10eXBlb2YgZnJvbSYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbEZyb209ZnJvbS50cmltKCk7aWYoYXBpLmFzc2VydChmaW5hbEZyb20ubGVuZ3RoPj0zJiZmaW5hbEZyb20ubGVuZ3RoPD0xNiwiaW52YWxpZCBmcm9tIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXRva2VuLmRlbGVnYXRpb25FbmFibGVkLCJkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoZmluYWxGcm9tIT09YXBpLnNlbmRlciwiY2Fubm90IHVuZGVsZWdhdGUgZnJvbSB5b3Vyc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHVuZGVsZWdhdGUgcG9zaXRpdmUgcXVhbnRpdHkiKSl7cXVhbnRpdHk9YXBpLkJpZ051bWJlcihxdWFudGl0eSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pO2NvbnN0IGJhbGFuY2VUbz1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2VUbywiYmFsYW5jZVRvIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQpLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBkZWxlZ2F0aW9uIikpe2NvbnN0IGJhbGFuY2VGcm9tPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6ZmluYWxGcm9tLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlRnJvbSwiYmFsYW5jZUZyb20gZG9lcyBub3QgZXhpc3QiKSl7Y29uc3QgZGVsZWdhdGlvbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgiZGVsZWdhdGlvbnMiLHt0bzpmaW5hbEZyb20sZnJvbTphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1kZWxlZ2F0aW9uLCJkZWxlZ2F0aW9uIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihkZWxlZ2F0aW9uLnF1YW50aXR5KS5ndGUocXVhbnRpdHkpLCJvdmVyZHJhd24gZGVsZWdhdGlvbiIpKXtiYWxhbmNlVG8ucGVuZGluZ1VuZGVsZWdhdGlvbnM9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlVG8ucGVuZGluZ1VuZGVsZWdhdGlvbnMscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZVRvKSxiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbixxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlRnJvbSksZGVsZWdhdGlvbi5xdWFudGl0eT1jYWxjdWxhdGVCYWxhbmNlKGRlbGVnYXRpb24ucXVhbnRpdHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuQmlnTnVtYmVyKGRlbGVnYXRpb24ucXVhbnRpdHkpLmd0KDApP2F3YWl0IGFwaS5kYi51cGRhdGUoImRlbGVnYXRpb25zIixkZWxlZ2F0aW9uKTphd2FpdCBhcGkuZGIucmVtb3ZlKCJkZWxlZ2F0aW9ucyIsZGVsZWdhdGlvbik7Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSxjb29sZG93blBlcmlvZE1pbGxpc2VjPTI0KnRva2VuLnVuZGVsZWdhdGlvbkNvb2xkb3duKjM2MDAqMWUzLGNvbXBsZXRlVGltZXN0YW1wPWJsb2NrRGF0ZS5nZXRUaW1lKCkrY29vbGRvd25QZXJpb2RNaWxsaXNlYyx1bmRlbGVnYXRpb249e2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGNvbXBsZXRlVGltZXN0YW1wOmNvbXBsZXRlVGltZXN0YW1wLHR4SUQ6YXBpLnRyYW5zYWN0aW9uSWR9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix1bmRlbGVnYXRpb24pLGFwaS5lbWl0KCJ1bmRlbGVnYXRlU3RhcnQiLHtmcm9tOmZpbmFsRnJvbSxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbEZyb219KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDpmaW5hbEZyb20sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTphcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5uZWdhdGVkKCksZGVsZWdhdGVkOiEwfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbmZ1bmRzIiwidXBkYXRlUHJvcG9zYWxBcHByb3ZhbHMiLHthY2NvdW50OmZpbmFsRnJvbSx0b2tlbjp0b2tlbn0pfX19fX19fTtjb25zdCBwcm9jZXNzVW5kZWxlZ2F0aW9uPWFzeW5jIHVuZGVsZWdhdGlvbj0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fT11bmRlbGVnYXRpb24sYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbH0pLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZSwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpKXtjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2Usb3JpZ2luYWxQZW5kaW5nVW5kZWxlZ2F0aW9ucz1iYWxhbmNlLnBlbmRpbmdVbmRlbGVnYXRpb25zO2JhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYmFsYW5jZS5wZW5kaW5nVW5kZWxlZ2F0aW9ucz1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1VuZGVsZWdhdGlvbnMscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5kZWxlZ2F0aW9ucykubHQob3JpZ2luYWxQZW5kaW5nVW5kZWxlZ2F0aW9ucykmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3Qob3JpZ2luYWxTdGFrZSksImNhbm5vdCBzdWJ0cmFjdCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLGF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbmRlbGVnYXRpb25zIix1bmRlbGVnYXRpb24pLGFwaS5lbWl0KCJ1bmRlbGVnYXRlRG9uZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIldPUktFUkJFRSI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphY2NvdW50fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbmZ1bmRzIiwidXBkYXRlUHJvcG9zYWxBcHByb3ZhbHMiLHthY2NvdW50OmFjY291bnQsdG9rZW46dG9rZW59KSl9fTthY3Rpb25zLmNoZWNrUGVuZGluZ1VuZGVsZWdhdGlvbnM9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKS5nZXRUaW1lKCk7bGV0IHBlbmRpbmdVbmRlbGVnYXRpb25zPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIse2NvbXBsZXRlVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19LDFlMywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxuYlBlbmRpbmdVbmRlbGVnYXRpb25zPXBlbmRpbmdVbmRlbGVnYXRpb25zLmxlbmd0aDtmb3IoO25iUGVuZGluZ1VuZGVsZWdhdGlvbnM+MDspe2ZvcihsZXQgaW5kZXg9MDtpbmRleDxuYlBlbmRpbmdVbmRlbGVnYXRpb25zO2luZGV4Kz0xKXtjb25zdCBwZW5kaW5nVW5kZWxlZ2F0aW9uPXBlbmRpbmdVbmRlbGVnYXRpb25zW2luZGV4XTthd2FpdCBwcm9jZXNzVW5kZWxlZ2F0aW9uKHBlbmRpbmdVbmRlbGVnYXRpb24pfXBlbmRpbmdVbmRlbGVnYXRpb25zPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIse2NvbXBsZXRlVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19LDFlMywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxuYlBlbmRpbmdVbmRlbGVnYXRpb25zPXBlbmRpbmdVbmRlbGVnYXRpb25zLmxlbmd0aH19fTs="}}}

Sort:  

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