{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"tokens","params":"","code":"Y29uc3QgQUNDT1VOVF9CTEFDS0xJU1Q9e2dhdGVpb2RlcG9zaXQ6MSxkZWVwY3J5cHRvODoxLGJpdHRyZXg6MSxwb2xvbmlleDoxLCJodW9iaS1wcm8iOjEsImJpbmFuY2UtaG90IjoxLGJpdHZhdm86MSxibG9ja3RyYWRlczoxLHByb2JpdHN0ZWVtOjEscHJvYml0aGl2ZToxLGlvbm9teToxLG14Y2hpdmU6MX0sUkVTRVJWRURfU1lNQk9MUz17RU5HOiJudWxsIixTVEVFTVA6InN0ZWVtLXBlZyIsQlRDUDoiYnRjcGVnIixMVENQOiJsdGNwIixET0dFUDoiZG9nZXAiLEJDSFA6ImJjaHAiLFNNVFQ6InN0ZWVtbW9uc3RlcnMiLEVNOiJzdGVlbS1lbmciLEVNRk9VUjoic3RlZW0tZW5nIixISVZFUDoic3RlZW0tdG9rZW5zIn0sY2FsY3VsYXRlQmFsYW5jZT0oYmFsYW5jZSxxdWFudGl0eSxwcmVjaXNpb24sYWRkKT0+YWRkP2FwaS5CaWdOdW1iZXIoYmFsYW5jZSkucGx1cyhxdWFudGl0eSkudG9GaXhlZChwcmVjaXNpb24pOmFwaS5CaWdOdW1iZXIoYmFsYW5jZSkubWludXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKSxjb3VudERlY2ltYWxzPXZhbHVlPT5hcGkuQmlnTnVtYmVyKHZhbHVlKS5kcCgpLGZpbmRBbmRQcm9jZXNzQWxsPWFzeW5jKHRhYmxlLHF1ZXJ5LGNhbGxiYWNrKT0+e2xldCBvZmZzZXQ9MCxyZXN1bHRzPVtdLGRvbmU9ITE7Zm9yKDshZG9uZTspaWYocmVzdWx0cz1hd2FpdCBhcGkuZGIuZmluZCh0YWJsZSxxdWVyeSwxZTMsb2Zmc2V0KSxyZXN1bHRzKXtmb3IobGV0IGk9MDtpPHJlc3VsdHMubGVuZ3RoO2krPTEpYXdhaXQgY2FsbGJhY2socmVzdWx0c1tpXSk7cmVzdWx0cy5sZW5ndGg8MWUzP2RvbmU9ITA6b2Zmc2V0Kz0xZTN9fSxjYW5jZWxCYWRVbnN0YWtlcz1hc3luYygpPT57YXdhaXQgZmluZEFuZFByb2Nlc3NBbGwoInBlbmRpbmdVbnN0YWtlcyIse19pZDp7JGx0ZToxNDUwOCwkZ3RlOjEzNzM2fSxudW1iZXJUcmFuc2FjdGlvbnNMZWZ0OnskZ3Q6MX19LGFzeW5jIHBlbmRpbmdVbnN0YWtlPT57YXdhaXQgcHJvY2Vzc0NhbmNlbFVuc3Rha2UocGVuZGluZ1Vuc3Rha2UpJiZhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5zdGFrZXMiLHBlbmRpbmdVbnN0YWtlKX0pfTthY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoInRva2VucyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInRva2VucyIsWyJzeW1ib2wiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJiYWxhbmNlcyIsWyJhY2NvdW50Il0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiY29udHJhY3RzQmFsYW5jZXMiLFsiYWNjb3VudCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1Vuc3Rha2VzIixbImFjY291bnQiLCJ1bnN0YWtlQ29tcGxldGVUaW1lc3RhbXAiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJkZWxlZ2F0aW9ucyIsWyJmcm9tIiwidG8iXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsWyJhY2NvdW50IiwiY29tcGxldGVUaW1lc3RhbXAiXSk7Y29uc3QgcGFyYW1zPXt0b2tlbkNyZWF0aW9uRmVlOiIwIixlbmFibGVEZWxlZ2F0aW9uRmVlOiIwIixlbmFibGVTdGFraW5nRmVlOiIwIn07YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfWVsc2V7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtwYXJhbXMuY2FuY2VsQmFkVW5zdGFrZXN8fChhd2FpdCBjYW5jZWxCYWRVbnN0YWtlcygpLHBhcmFtcy5jYW5jZWxCYWRVbnN0YWtlcz0hMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfX07Y29uc3QgYmFsYW5jZVRlbXBsYXRlPXthY2NvdW50Om51bGwsc3ltYm9sOm51bGwsYmFsYW5jZToiMCIsc3Rha2U6IjAiLHBlbmRpbmdVbnN0YWtlOiIwIixkZWxlZ2F0aW9uc0luOiIwIixkZWxlZ2F0aW9uc091dDoiMCIscGVuZGluZ1VuZGVsZWdhdGlvbnM6IjAifSxhZGRTdGFrZT1hc3luYyhhY2NvdW50LHRva2VuLHF1YW50aXR5KT0+e2xldCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sfSk7bnVsbD09PWJhbGFuY2UmJihiYWxhbmNlPWJhbGFuY2VUZW1wbGF0ZSxiYWxhbmNlLmFjY291bnQ9YWNjb3VudCxiYWxhbmNlLnN5bWJvbD10b2tlbi5zeW1ib2wsYmFsYW5jZT1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJiYWxhbmNlcyIsYmFsYW5jZSkpLHZvaWQgMD09PWJhbGFuY2Uuc3Rha2UmJihiYWxhbmNlLnN0YWtlPSIwIixiYWxhbmNlLnBlbmRpbmdVbnN0YWtlPSIwIik7Y29uc3Qgb3JpZ2luYWxTdGFrZT1iYWxhbmNlLnN0YWtlO3JldHVybiBiYWxhbmNlLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLCEhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmd0KG9yaWdpbmFsU3Rha2UpLCJjYW5ub3QgYWRkIikmJihhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZSksdm9pZCAwPT09dG9rZW4udG90YWxTdGFrZWQmJih0b2tlbi50b3RhbFN0YWtlZD0iMCIpLHRva2VuLnRvdGFsU3Rha2VkPWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4udG90YWxTdGFrZWQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSwhMCl9LHN1YkJhbGFuY2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSx0YWJsZSk9Pntjb25zdCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKHRhYmxlLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnRva2VuLnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkuZ3RlKHF1YW50aXR5KSwib3ZlcmRyYXduIGJhbGFuY2UiKSl7Y29uc3Qgb3JpZ2luYWxCYWxhbmNlPWJhbGFuY2UuYmFsYW5jZTtpZihiYWxhbmNlLmJhbGFuY2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLmJhbGFuY2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5iYWxhbmNlKS5sdChvcmlnaW5hbEJhbGFuY2UpLCJjYW5ub3Qgc3VidHJhY3QiKSlyZXR1cm4gYXdhaXQgYXBpLmRiLnVwZGF0ZSh0YWJsZSxiYWxhbmNlKSwhMH1yZXR1cm4hMX0sYWRkQmFsYW5jZT1hc3luYyhhY2NvdW50LHRva2VuLHF1YW50aXR5LHRhYmxlKT0+e2xldCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKHRhYmxlLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnRva2VuLnN5bWJvbH0pO2lmKG51bGw9PT1iYWxhbmNlKXJldHVybiBiYWxhbmNlPWJhbGFuY2VUZW1wbGF0ZSxiYWxhbmNlLmFjY291bnQ9YWNjb3VudCxiYWxhbmNlLnN5bWJvbD10b2tlbi5zeW1ib2wsYmFsYW5jZS5iYWxhbmNlPXF1YW50aXR5LGF3YWl0IGFwaS5kYi5pbnNlcnQodGFibGUsYmFsYW5jZSksITA7Y29uc3Qgb3JpZ2luYWxCYWxhbmNlPWJhbGFuY2UuYmFsYW5jZTtyZXR1cm4gYmFsYW5jZS5iYWxhbmNlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5iYWxhbmNlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksISFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5iYWxhbmNlKS5ndChvcmlnaW5hbEJhbGFuY2UpLCJjYW5ub3QgYWRkIikmJihhd2FpdCBhcGkuZGIudXBkYXRlKHRhYmxlLGJhbGFuY2UpLCEwKX07YWN0aW9ucy51cGRhdGVQYXJhbXM9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0e3Rva2VuQ3JlYXRpb25GZWU6dG9rZW5DcmVhdGlvbkZlZSxlbmFibGVEZWxlZ2F0aW9uRmVlOmVuYWJsZURlbGVnYXRpb25GZWUsZW5hYmxlU3Rha2luZ0ZlZTplbmFibGVTdGFraW5nRmVlfT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7cGFyYW1zLnRva2VuQ3JlYXRpb25GZWU9dG9rZW5DcmVhdGlvbkZlZSxwYXJhbXMuZW5hYmxlRGVsZWdhdGlvbkZlZT1lbmFibGVEZWxlZ2F0aW9uRmVlLHBhcmFtcy5lbmFibGVTdGFraW5nRmVlPWVuYWJsZVN0YWtpbmdGZWUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfSxhY3Rpb25zLnVwZGF0ZVVybD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dXJsOnVybCxzeW1ib2w6c3ltYm9sfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdXJsJiYic3RyaW5nIj09dHlwZW9mIHVybCwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydCh1cmwubGVuZ3RoPD0yNTUsImludmFsaWQgdXJsOiBtYXggbGVuZ3RoIG9mIDI1NSIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKHRva2VuJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXRyeXtjb25zdCBtZXRhZGF0YT1KU09OLnBhcnNlKHRva2VuLm1ldGFkYXRhKTthcGkuYXNzZXJ0KG1ldGFkYXRhJiZtZXRhZGF0YS51cmwsImFuIGVycm9yIG9jY3VyZWQgd2hlbiB0cnlpbmcgdG8gdXBkYXRlIHRoZSB1cmwiKSYmKG1ldGFkYXRhLnVybD11cmwsdG9rZW4ubWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKX1jYXRjaChlKXt9fX0sYWN0aW9ucy51cGRhdGVNZXRhZGF0YT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bWV0YWRhdGE6bWV0YWRhdGEsc3ltYm9sOnN5bWJvbH09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJm1ldGFkYXRhJiYib2JqZWN0Ij09dHlwZW9mIG1ldGFkYXRhLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKHRva2VuJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXRyeXtjb25zdCBmaW5hbE1ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG1ldGFkYXRhKTthcGkuYXNzZXJ0KGZpbmFsTWV0YWRhdGEubGVuZ3RoPD0xZTMsImludmFsaWQgbWV0YWRhdGE6IG1heCBsZW5ndGggb2YgMTAwMCIpJiYodG9rZW4ubWV0YWRhdGE9ZmluYWxNZXRhZGF0YSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSl9Y2F0Y2goZSl7fX19LGFjdGlvbnMudXBkYXRlUHJlY2lzaW9uPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHByZWNpc2lvbjpwcmVjaXNpb24saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sKSYmYXBpLmFzc2VydChwcmVjaXNpb24+MCYmcHJlY2lzaW9uPD04JiZOdW1iZXIuaXNJbnRlZ2VyKHByZWNpc2lvbiksImludmFsaWQgcHJlY2lzaW9uIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7dG9rZW4mJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQocHJlY2lzaW9uPnRva2VuLnByZWNpc2lvbiwicHJlY2lzaW9uIGNhbiBvbmx5IGJlIGluY3JlYXNlZCIpJiYodG9rZW4ucHJlY2lzaW9uPXByZWNpc2lvbixhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSl9fSxhY3Rpb25zLnRyYW5zZmVyT3duZXJzaGlwPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHRvOnRvLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8sImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYodG9rZW4mJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpO2FwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpJiYodG9rZW4uaXNzdWVyPWZpbmFsVG8sYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpfX19LGFjdGlvbnMuY3JlYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuYW1lOm5hbWUsc3ltYm9sOnN5bWJvbCx1cmw6dXJsLHByZWNpc2lvbjpwcmVjaXNpb24sbWF4U3VwcGx5Om1heFN1cHBseSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse3Rva2VuQ3JlYXRpb25GZWU6dG9rZW5DcmVhdGlvbkZlZX09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hIWFwaS5CaWdOdW1iZXIodG9rZW5DcmVhdGlvbkZlZSkubHRlKDApfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHRva2VuQ3JlYXRpb25GZWUpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZXMiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQobmFtZSYmInN0cmluZyI9PXR5cGVvZiBuYW1lJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiYodm9pZCAwPT09dXJsfHx1cmwmJiJzdHJpbmciPT10eXBlb2YgdXJsKSYmKHByZWNpc2lvbiYmIm51bWJlciI9PXR5cGVvZiBwcmVjaXNpb258fDA9PT1wcmVjaXNpb24pJiZtYXhTdXBwbHkmJiJzdHJpbmciPT10eXBlb2YgbWF4U3VwcGx5JiYhYXBpLkJpZ051bWJlcihtYXhTdXBwbHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoc3ltYm9sLmxlbmd0aD4wJiZzeW1ib2wubGVuZ3RoPD0xMCYmYXBpLnZhbGlkYXRvci5pc0FscGhhKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KHN5bWJvbCwiLiIpKSYmYXBpLnZhbGlkYXRvci5pc1VwcGVyY2FzZShzeW1ib2wpJiYoLTE9PT1zeW1ib2wuaW5kZXhPZigiLiIpfHxzeW1ib2wuaW5kZXhPZigiLiIpPjAmJnN5bWJvbC5pbmRleE9mKCIuIik8c3ltYm9sLmxlbmd0aC0xJiZzeW1ib2wuaW5kZXhPZigiLiIpPT09c3ltYm9sLmxhc3RJbmRleE9mKCIuIikpLCdpbnZhbGlkIHN5bWJvbDogdXBwZXJjYXNlIGxldHRlcnMgb25seSBhbmQgb25lICIuIiBhbGxvd2VkLCBtYXggbGVuZ3RoIG9mIDEwJykmJmFwaS5hc3NlcnQodm9pZCAwPT09UkVTRVJWRURfU1lNQk9MU1tzeW1ib2xdfHxhcGkuc2VuZGVyPT09UkVTRVJWRURfU1lNQk9MU1tzeW1ib2xdLCJjYW5ub3QgdXNlIHRoaXMgc3ltYm9sIikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChuYW1lLCIgIikpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9NTAsImludmFsaWQgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXVybHx8dXJsLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSYmYXBpLmFzc2VydChwcmVjaXNpb24+PTAmJnByZWNpc2lvbjw9OCYmTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pLCJpbnZhbGlkIHByZWNpc2lvbiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5ndCgwKSwibWF4U3VwcGx5IG11c3QgYmUgcG9zaXRpdmUiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkubHRlKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSwibWF4U3VwcGx5IG11c3QgYmUgbG93ZXIgdGhhbiAiK051bWJlci5NQVhfU0FGRV9JTlRFR0VSKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT10b2tlbiwic3ltYm9sIGFscmVhZHkgZXhpc3RzIikpe2xldCBtZXRhZGF0YT17dXJsOnZvaWQgMD09PXVybD8iIjp1cmx9O21ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG1ldGFkYXRhKTtjb25zdCBuZXdUb2tlbj17aXNzdWVyOmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxuYW1lOm5hbWUsbWV0YWRhdGE6bWV0YWRhdGEscHJlY2lzaW9uOnByZWNpc2lvbixtYXhTdXBwbHk6YXBpLkJpZ051bWJlcihtYXhTdXBwbHkpLnRvRml4ZWQocHJlY2lzaW9uKSxzdXBwbHk6IjAiLGNpcmN1bGF0aW5nU3VwcGx5OiIwIixzdGFraW5nRW5hYmxlZDohMSx1bnN0YWtpbmdDb29sZG93bjoxLGRlbGVnYXRpb25FbmFibGVkOiExLHVuZGVsZWdhdGlvbkNvb2xkb3duOjB9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInRva2VucyIsbmV3VG9rZW4pLGFwaS5CaWdOdW1iZXIodG9rZW5DcmVhdGlvbkZlZSkuZ3QoMCkmJmF3YWl0IGFjdGlvbnMudHJhbnNmZXIoe3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6dG9rZW5DcmVhdGlvbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSl9fX0sYWN0aW9ucy5pc3N1ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZCxmcm9tTWluaW5nQ29udHJhY3Q9Im51bGwiPT09YXBpLnNlbmRlciYmIm1pbmluZyI9PT1jYWxsaW5nQ29udHJhY3RJbmZvLm5hbWU7aWYoZnJvbU1pbmluZ0NvbnRyYWN0fHxhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0byYmInN0cmluZyI9PXR5cGVvZiB0byYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChmcm9tTWluaW5nQ29udHJhY3R8fHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm5vdCBhbGxvd2VkIHRvIGlzc3VlIHRva2VucyIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBpc3N1ZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodG9rZW4ubWF4U3VwcGx5KS5taW51cyh0b2tlbi5zdXBwbHkpLmd0ZShxdWFudGl0eSksInF1YW50aXR5IGV4Y2VlZHMgYXZhaWxhYmxlIHN1cHBseSIpJiZhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSl7bGV0IHJlcz1hd2FpdCBhZGRCYWxhbmNlKHRva2VuLmlzc3Vlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTshMD09PXJlcyYmZmluYWxUbyE9PXRva2VuLmlzc3VlciYmYXdhaXQgc3ViQmFsYW5jZSh0b2tlbi5pc3N1ZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikmJihyZXM9YXdhaXQgYWRkQmFsYW5jZShmaW5hbFRvLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpLCExPT09cmVzJiZhd2FpdCBhZGRCYWxhbmNlKHRva2VuLmlzc3Vlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSksITA9PT1yZXMmJih0b2tlbi5zdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5zdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSwibnVsbCIhPT1maW5hbFRvJiYodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuZW1pdCgidHJhbnNmZXJGcm9tQ29udHJhY3QiLHtmcm9tOiJ0b2tlbnMiLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19fSxhY3Rpb25zLmlzc3VlVG9Db250cmFjdD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm5vdCBhbGxvd2VkIHRvIGlzc3VlIHRva2VucyIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBpc3N1ZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodG9rZW4ubWF4U3VwcGx5KS5taW51cyh0b2tlbi5zdXBwbHkpLmd0ZShxdWFudGl0eSksInF1YW50aXR5IGV4Y2VlZHMgYXZhaWxhYmxlIHN1cHBseSIpJiZhcGkuYXNzZXJ0KGZpbmFsVG8ubGVuZ3RoPj0zJiZmaW5hbFRvLmxlbmd0aDw9NTAsImludmFsaWQgdG8iKSl7ITA9PT1hd2FpdCBhZGRCYWxhbmNlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIikmJih0b2tlbi5zdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5zdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSwibnVsbCIhPT1maW5hbFRvJiYodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuZW1pdCgiaXNzdWVUb0NvbnRyYWN0Iix7ZnJvbToidG9rZW5zIix0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fX0sYWN0aW9ucy50cmFuc2Zlcj1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpO2lmKGFwaS5hc3NlcnQoZmluYWxUbyE9PWFwaS5zZW5kZXIsImNhbm5vdCB0cmFuc2ZlciB0byBzZWxmIikmJmFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PUFDQ09VTlRfQkxBQ0tMSVNUW2ZpbmFsVG9dLCJub3QgYWxsb3dlZCB0byBzZW5kIHRvICIrZmluYWxUbykpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB0cmFuc2ZlciBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikpe3JldHVybiExPT09YXdhaXQgYWRkQmFsYW5jZShmaW5hbFRvLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpPyhhd2FpdCBhZGRCYWxhbmNlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIiksITEpOigibnVsbCI9PT1maW5hbFRvJiYodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKSxhcGkuZW1pdCgidHJhbnNmZXIiLHtmcm9tOmFwaS5zZW5kZXIsdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksITApfX19cmV0dXJuITF9LGFjdGlvbnMudHJhbnNmZXJUb0NvbnRyYWN0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtmcm9tOmZyb20sdG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLGZpbmFsRnJvbT12b2lkIDA9PT1mcm9tfHwibnVsbCIhPT1hcGkuc2VuZGVyP2FwaS5zZW5kZXI6ZnJvbTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5fHwibnVsbCI9PT1hcGkuc2VuZGVyLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0byYmInN0cmluZyI9PXR5cGVvZiB0byYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKS50b0xvd2VyQ2FzZSgpO2lmKGFwaS5hc3NlcnQoZmluYWxUbyE9PWZpbmFsRnJvbSwiY2Fubm90IHRyYW5zZmVyIHRvIHNlbGYiKSYmYXBpLmFzc2VydChmaW5hbFRvLmxlbmd0aD49MyYmZmluYWxUby5sZW5ndGg8PTUwLCJpbnZhbGlkIHRvIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB0cmFuc2ZlciBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKGZpbmFsRnJvbSx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSl7ITE9PT1hd2FpdCBhZGRCYWxhbmNlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIik/YXdhaXQgYWRkQmFsYW5jZShmaW5hbEZyb20sdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIik6KCJudWxsIj09PWZpbmFsVG8mJih0b2tlbi5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpLGFwaS5lbWl0KCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtmcm9tOmZpbmFsRnJvbSx0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fX19LGFjdGlvbnMudHJhbnNmZXJGcm9tQ29udHJhY3Q9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3R7ZnJvbTpmcm9tLHRvOnRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdHlwZTp0eXBlfT1wYXlsb2FkLHR5cGVzPVsidXNlciIsImNvbnRyYWN0Il07aWYoYXBpLmFzc2VydCh0byYmInN0cmluZyI9PXR5cGVvZiB0byYmZnJvbSYmInN0cmluZyI9PXR5cGVvZiBmcm9tJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0eXBlJiZ0eXBlcy5pbmNsdWRlcyh0eXBlKSYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKSx0YWJsZT0idXNlciI9PT10eXBlPyJiYWxhbmNlcyI6ImNvbnRyYWN0c0JhbGFuY2VzIjtpZihhcGkuYXNzZXJ0KCJ1c2VyIj09PXR5cGV8fCJjb250cmFjdCI9PT10eXBlJiZmaW5hbFRvIT09ZnJvbSwiY2Fubm90IHRyYW5zZmVyIHRvIHNlbGYiKSl7Y29uc3QgdG9WYWxpZD0idXNlciI9PT10eXBlP2FwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyk6ZmluYWxUby5sZW5ndGg+PTMmJmZpbmFsVG8ubGVuZ3RoPD01MDtpZihhcGkuYXNzZXJ0KCEwPT09dG9WYWxpZCwiaW52YWxpZCB0byIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgdHJhbnNmZXIgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShmcm9tLHRva2VuLHF1YW50aXR5LCJjb250cmFjdHNCYWxhbmNlcyIpKXshMT09PWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSx0YWJsZSk/YXdhaXQgYWRkQmFsYW5jZShmcm9tLHRva2VuLHF1YW50aXR5LCJjb250cmFjdHNCYWxhbmNlcyIpOigibnVsbCI9PT1maW5hbFRvJiYodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKSxhcGkuZW1pdCgidHJhbnNmZXJGcm9tQ29udHJhY3QiLHtmcm9tOmZyb20sdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX19fX19O2NvbnN0IHByb2Nlc3NVbnN0YWtlPWFzeW5jIHVuc3Rha2U9Pntjb25zdHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxxdWFudGl0eUxlZnQ6cXVhbnRpdHlMZWZ0LG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6bnVtYmVyVHJhbnNhY3Rpb25zTGVmdH09dW5zdGFrZSxuZXdVbnN0YWtlPXVuc3Rha2UsYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbH0pLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7bGV0IHRva2Vuc1RvUmVsZWFzZT0wLG5leHRUb2tlbnNUb1JlbGVhc2U9MDtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0IikmJigxPT09bnVtYmVyVHJhbnNhY3Rpb25zTGVmdD8odG9rZW5zVG9SZWxlYXNlPXF1YW50aXR5TGVmdCxhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5zdGFrZXMiLHVuc3Rha2UpKToodG9rZW5zVG9SZWxlYXNlPWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmRpdmlkZWRCeSh0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnMpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksbmV3VW5zdGFrZS5xdWFudGl0eUxlZnQ9YXBpLkJpZ051bWJlcihuZXdVbnN0YWtlLnF1YW50aXR5TGVmdCkubWludXModG9rZW5zVG9SZWxlYXNlKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksbmV3VW5zdGFrZS5udW1iZXJUcmFuc2FjdGlvbnNMZWZ0LT0xLG5leHRUb2tlbnNUb1JlbGVhc2U9MT09PW5ld1Vuc3Rha2UubnVtYmVyVHJhbnNhY3Rpb25zTGVmdD9uZXdVbnN0YWtlLnF1YW50aXR5TGVmdDp0b2tlbnNUb1JlbGVhc2UsbmV3VW5zdGFrZS5uZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA9YXBpLkJpZ051bWJlcihuZXdVbnN0YWtlLm5leHRUcmFuc2FjdGlvblRpbWVzdGFtcCkucGx1cyhuZXdVbnN0YWtlLm1pbGxpc2VjUGVyUGVyaW9kKS50b051bWJlcigpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBlbmRpbmdVbnN0YWtlcyIsbmV3VW5zdGFrZSkpLGFwaS5CaWdOdW1iZXIodG9rZW5zVG9SZWxlYXNlKS5ndCgwKSkpe2NvbnN0IG9yaWdpbmFsQmFsYW5jZT1iYWxhbmNlLmJhbGFuY2Usb3JpZ2luYWxQZW5kaW5nU3Rha2U9YmFsYW5jZS5wZW5kaW5nVW5zdGFrZTtiYWxhbmNlLmJhbGFuY2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLmJhbGFuY2UsdG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMCksYmFsYW5jZS5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UsdG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMSksYXBpLkJpZ051bWJlcihuZXh0VG9rZW5zVG9SZWxlYXNlKS5ndCgwKSYmKGJhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLG5leHRUb2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCExKSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UpLmx0KG9yaWdpbmFsUGVuZGluZ1N0YWtlKSYmYXBpLkJpZ051bWJlcihiYWxhbmNlLmJhbGFuY2UpLmd0KG9yaWdpbmFsQmFsYW5jZSksImNhbm5vdCBzdWJ0cmFjdCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLHRva2VuLnRvdGFsU3Rha2VkPWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4udG90YWxTdGFrZWQsbmV4dFRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLGFwaS5lbWl0KCJ1bnN0YWtlIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6dG9rZW5zVG9SZWxlYXNlfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OmFwaS5CaWdOdW1iZXIodG9rZW5zVG9SZWxlYXNlKS5uZWdhdGVkKCl9KSl9fTthY3Rpb25zLmNoZWNrUGVuZGluZ1Vuc3Rha2VzPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKTtsZXQgcGVuZGluZ1Vuc3Rha2VzPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5zdGFrZXMiLHtuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6eyRsdGU6dGltZXN0YW1wfX0pLG5iUGVuZGluZ1Vuc3Rha2VzPXBlbmRpbmdVbnN0YWtlcy5sZW5ndGg7Zm9yKDtuYlBlbmRpbmdVbnN0YWtlcz4wOyl7Zm9yKGxldCBpbmRleD0wO2luZGV4PG5iUGVuZGluZ1Vuc3Rha2VzO2luZGV4Kz0xKXtjb25zdCBwZW5kaW5nVW5zdGFrZT1wZW5kaW5nVW5zdGFrZXNbaW5kZXhdO2F3YWl0IHByb2Nlc3NVbnN0YWtlKHBlbmRpbmdVbnN0YWtlKX1wZW5kaW5nVW5zdGFrZXM9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdVbnN0YWtlcyIse25leHRUcmFuc2FjdGlvblRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSksbmJQZW5kaW5nVW5zdGFrZXM9cGVuZGluZ1Vuc3Rha2VzLmxlbmd0aH19fSxhY3Rpb25zLmVuYWJsZVN0YWtpbmc9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdW5zdGFraW5nQ29vbGRvd246dW5zdGFraW5nQ29vbGRvd24sbnVtYmVyVHJhbnNhY3Rpb25zOm51bWJlclRyYW5zYWN0aW9ucyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2VuYWJsZVN0YWtpbmdGZWU6ZW5hYmxlU3Rha2luZ0ZlZX09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGVub3VnaEZ1bmRzPXV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUoZW5hYmxlU3Rha2luZ0ZlZSksYXV0aG9yaXplZD12b2lkIDA9PT1lbmFibGVTdGFraW5nRmVlfHxhcGkuQmlnTnVtYmVyKGVuYWJsZVN0YWtpbmdGZWUpLmx0ZSgwKXx8ZW5vdWdoRnVuZHM7aWYoYXBpLmFzc2VydChhdXRob3JpemVkLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgIGZlZXMiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCwiaW52YWxpZCBzeW1ib2wiKSYmYXBpLmFzc2VydCh1bnN0YWtpbmdDb29sZG93biYmTnVtYmVyLmlzSW50ZWdlcih1bnN0YWtpbmdDb29sZG93bikmJnVuc3Rha2luZ0Nvb2xkb3duPjAmJnVuc3Rha2luZ0Nvb2xkb3duPD0xODI1MCwidW5zdGFraW5nQ29vbGRvd24gbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTgyNTAiKSYmYXBpLmFzc2VydChudW1iZXJUcmFuc2FjdGlvbnMmJk51bWJlci5pc0ludGVnZXIobnVtYmVyVHJhbnNhY3Rpb25zKSYmbnVtYmVyVHJhbnNhY3Rpb25zPjAmJm51bWJlclRyYW5zYWN0aW9uczw9MTgyNTAsIm51bWJlclRyYW5zYWN0aW9ucyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT10b2tlbi5zdGFraW5nRW5hYmxlZHx8ITE9PT10b2tlbi5zdGFraW5nRW5hYmxlZCwic3Rha2luZyBhbHJlYWR5IGVuYWJsZWQiKSYmKHRva2VuLnN0YWtpbmdFbmFibGVkPSEwLHRva2VuLnRvdGFsU3Rha2VkPSIwIix0b2tlbi51bnN0YWtpbmdDb29sZG93bj11bnN0YWtpbmdDb29sZG93bix0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnM9bnVtYmVyVHJhbnNhY3Rpb25zLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLGFwaS5CaWdOdW1iZXIoZW5hYmxlU3Rha2luZ0ZlZSkuZ3QoMCkmJmF3YWl0IGFjdGlvbnMudHJhbnNmZXIoe3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6ZW5hYmxlU3Rha2luZ0ZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSkpfX0sYWN0aW9ucy5zdGFrZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSx0bzp0byxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSksZmluYWxUbz10by50cmltKCk7aWYoYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikmJmFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoITA9PT10b2tlbi5zdGFraW5nRW5hYmxlZCwic3Rha2luZyBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHN0YWtlIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN1YkJhbGFuY2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSl7ITE9PT1hd2FpdCBhZGRTdGFrZShmaW5hbFRvLHRva2VuLHF1YW50aXR5KT9hd2FpdCBhZGRCYWxhbmNlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIik6KGFwaS5lbWl0KCJzdGFrZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX19LGFjdGlvbnMuc3Rha2VGcm9tQ29udHJhY3Q9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdG86dG8sY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2lmKGNhbGxpbmdDb250cmFjdEluZm8mJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KSxmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3Qgc3Rha2UgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIikpeyExPT09YXdhaXQgYWRkU3Rha2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSk/YXdhaXQgYWRkQmFsYW5jZShjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIik6KGFwaS5lbWl0KCJzdGFrZUZyb21Db250cmFjdCIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX19O2NvbnN0IHZhbGlkYXRlQXZhaWxhYmxlU3Rha2U9YXN5bmMoYmFsYW5jZSx0b2tlbixxdWFudGl0eSk9PntsZXQgYXZhaWxhYmxlU3Rha2VCYWxhbmNlPWFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSk7cmV0dXJuIGF3YWl0IGZpbmRBbmRQcm9jZXNzQWxsKCJwZW5kaW5nVW5zdGFrZXMiLHtzeW1ib2w6YmFsYW5jZS5zeW1ib2wsYWNjb3VudDpiYWxhbmNlLmFjY291bnR9LGFzeW5jIHBlbmRpbmdVbnN0YWtlPT57aWYocGVuZGluZ1Vuc3Rha2UubnVtYmVyVHJhbnNhY3Rpb25zTGVmdD4xKXtjb25zdCB0b2tlbnNUb1JlbGVhc2U9YXBpLkJpZ051bWJlcihwZW5kaW5nVW5zdGFrZS5xdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTthdmFpbGFibGVTdGFrZUJhbGFuY2U9YXZhaWxhYmxlU3Rha2VCYWxhbmNlLm1pbnVzKHBlbmRpbmdVbnN0YWtlLnF1YW50aXR5TGVmdCkucGx1cyh0b2tlbnNUb1JlbGVhc2UpfX0pLGFwaS5hc3NlcnQoYXZhaWxhYmxlU3Rha2VCYWxhbmNlLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBzdGFrZSIpfSxzdGFydFVuc3Rha2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSk9Pntjb25zdCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKXx8IWF3YWl0IHZhbGlkYXRlQXZhaWxhYmxlU3Rha2UoYmFsYW5jZSx0b2tlbixxdWFudGl0eSkpcmV0dXJuITE7e2NvbnN0IG9yaWdpbmFsU3Rha2U9YmFsYW5jZS5zdGFrZSxvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlLG5leHRUb2tlbnNUb1JlbGVhc2U9dG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zPjE/YXBpLkJpZ051bWJlcihxdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTpxdWFudGl0eTtiYWxhbmNlLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5zdGFrZSxuZXh0VG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMSksYmFsYW5jZS5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkubHQob3JpZ2luYWxTdGFrZSkmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkuZ3Qob3JpZ2luYWxQZW5kaW5nU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSx0b2tlbi50b3RhbFN0YWtlZD1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnRvdGFsU3Rha2VkLG5leHRUb2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSx0b2tlbi5zeW1ib2wsYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OmFwaS5CaWdOdW1iZXIobmV4dFRva2Vuc1RvUmVsZWFzZSkubmVnYXRlZCgpfSkpfWNvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLGNvb2xkb3duUGVyaW9kTWlsbGlzZWM9MjQqdG9rZW4udW5zdGFraW5nQ29vbGRvd24qMzYwMCoxZTMsbWlsbGlzZWNQZXJQZXJpb2Q9YXBpLkJpZ051bWJlcihjb29sZG93blBlcmlvZE1pbGxpc2VjKS5kaXZpZGVkQnkodG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zKS5pbnRlZ2VyVmFsdWUoYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS5wbHVzKG1pbGxpc2VjUGVyUGVyaW9kKS50b051bWJlcigpLHVuc3Rha2U9e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHF1YW50aXR5TGVmdDpxdWFudGl0eSxuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wLG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6dG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zLG1pbGxpc2VjUGVyUGVyaW9kOm1pbGxpc2VjUGVyUGVyaW9kLHR4SUQ6YXBpLnRyYW5zYWN0aW9uSWR9O3JldHVybiBhd2FpdCBhcGkuZGIuaW5zZXJ0KCJwZW5kaW5nVW5zdGFrZXMiLHVuc3Rha2UpLCEwfTthY3Rpb25zLnVuc3Rha2U9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7YXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgdW5zdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdGFydFVuc3Rha2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSkmJmFwaS5lbWl0KCJ1bnN0YWtlU3RhcnQiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pfX07Y29uc3QgcHJvY2Vzc0NhbmNlbFVuc3Rha2U9YXN5bmMgdW5zdGFrZT0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHF1YW50aXR5TGVmdDpxdWFudGl0eUxlZnQsbnVtYmVyVHJhbnNhY3Rpb25zTGVmdDpudW1iZXJUcmFuc2FjdGlvbnNMZWZ0fT11bnN0YWtlLGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2x9KSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UpLmd0ZShxdWFudGl0eUxlZnQpLCJvdmVyZHJhd24gcGVuZGluZ1Vuc3Rha2UiKSl7Y29uc3Qgb3JpZ2luYWxTdGFrZT1iYWxhbmNlLnN0YWtlLG9yaWdpbmFsUGVuZGluZ1N0YWtlPWJhbGFuY2UucGVuZGluZ1Vuc3Rha2UsdG9rZW5zVG9SZWxlYXNlPW51bWJlclRyYW5zYWN0aW9uc0xlZnQ+MT9hcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5kaXZpZGVkQnkodG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOnF1YW50aXR5TGVmdDtpZihiYWxhbmNlLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5zdGFrZSx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCEwKSxiYWxhbmNlLnBlbmRpbmdVbnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSxxdWFudGl0eUxlZnQsdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkubHQob3JpZ2luYWxQZW5kaW5nU3Rha2UpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmd0KG9yaWdpbmFsU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSlyZXR1cm4gYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLHRva2VuLnRvdGFsU3Rha2VkPWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4udG90YWxTdGFrZWQsdG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksYXBpLmVtaXQoInVuc3Rha2VDYW5jZWwiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eUxlZnR9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6dG9rZW5zVG9SZWxlYXNlfSksITB9cmV0dXJuITF9O2FjdGlvbnMuY2FuY2VsVW5zdGFrZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7dHhJRDp0eElELGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodHhJRCYmInN0cmluZyI9PXR5cGVvZiB0eElELCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB1bnN0YWtlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwZW5kaW5nVW5zdGFrZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsdHhJRDp0eElEfSk7YXBpLmFzc2VydCh1bnN0YWtlLCJ1bnN0YWtlIGRvZXMgbm90IGV4aXN0IikmJmF3YWl0IHByb2Nlc3NDYW5jZWxVbnN0YWtlKHVuc3Rha2UpJiZhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5zdGFrZXMiLHVuc3Rha2UpfX0sYWN0aW9ucy5lbmFibGVEZWxlZ2F0aW9uPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHVuZGVsZWdhdGlvbkNvb2xkb3duOnVuZGVsZWdhdGlvbkNvb2xkb3duLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7ZW5hYmxlRGVsZWdhdGlvbkZlZTplbmFibGVEZWxlZ2F0aW9uRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksZW5vdWdoRnVuZHM9dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShlbmFibGVEZWxlZ2F0aW9uRmVlKSxhdXRob3JpemVkPXZvaWQgMD09PWVuYWJsZURlbGVnYXRpb25GZWV8fGFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkubHRlKDApfHxlbm91Z2hGdW5kcztpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciAgZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KHVuZGVsZWdhdGlvbkNvb2xkb3duJiZOdW1iZXIuaXNJbnRlZ2VyKHVuZGVsZWdhdGlvbkNvb2xkb3duKSYmdW5kZWxlZ2F0aW9uQ29vbGRvd24+MCYmdW5kZWxlZ2F0aW9uQ29vbGRvd248PTE4MjUwLCJ1bmRlbGVnYXRpb25Db29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWR8fCExPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gYWxyZWFkeSBlbmFibGVkIikmJih0b2tlbi5kZWxlZ2F0aW9uRW5hYmxlZD0hMCx0b2tlbi51bmRlbGVnYXRpb25Db29sZG93bj11bmRlbGVnYXRpb25Db29sZG93bixhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmd0KDApJiZhd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmVuYWJsZURlbGVnYXRpb25GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pKX19LGFjdGlvbnMuZGVsZWdhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdG86dG8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChmaW5hbFRvIT09YXBpLnNlbmRlciwiY2Fubm90IGRlbGVnYXRlIHRvIHlvdXJzZWxmIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgZGVsZWdhdGUgcG9zaXRpdmUgcXVhbnRpdHkiKSl7Y29uc3QgYmFsYW5jZUZyb209YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlRnJvbSwiYmFsYW5jZUZyb20gZG9lcyBub3QgZXhpc3QiKSYmYXdhaXQgdmFsaWRhdGVBdmFpbGFibGVTdGFrZShiYWxhbmNlRnJvbSx0b2tlbixxdWFudGl0eSkpe3ZvaWQgMD09PWJhbGFuY2VGcm9tLnN0YWtlPyhiYWxhbmNlRnJvbS5zdGFrZT0iMCIsYmFsYW5jZUZyb20ucGVuZGluZ1Vuc3Rha2U9IjAiLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zSW49IjAiLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PSIwIixiYWxhbmNlRnJvbS5wZW5kaW5nVW5kZWxlZ2F0aW9ucz0iMCIpOnZvaWQgMD09PWJhbGFuY2VGcm9tLmRlbGVnYXRpb25zSW4mJihiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luPSIwIixiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dD0iMCIsYmFsYW5jZUZyb20ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiLGJhbGFuY2VGcm9tLmRlbGVnYXRlZFN0YWtlJiYoZGVsZXRlIGJhbGFuY2VGcm9tLmRlbGVnYXRlZFN0YWtlLGRlbGV0ZSBiYWxhbmNlRnJvbS5yZWNlaXZlZFN0YWtlKSk7bGV0IGJhbGFuY2VUbz1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbH0pO251bGw9PT1iYWxhbmNlVG8/KGJhbGFuY2VUbz1iYWxhbmNlVGVtcGxhdGUsYmFsYW5jZVRvLmFjY291bnQ9ZmluYWxUbyxiYWxhbmNlVG8uc3ltYm9sPXN5bWJvbCxiYWxhbmNlVG89YXdhaXQgYXBpLmRiLmluc2VydCgiYmFsYW5jZXMiLGJhbGFuY2VUbykpOnZvaWQgMD09PWJhbGFuY2VUby5zdGFrZT8oYmFsYW5jZVRvLnN0YWtlPSIwIixiYWxhbmNlVG8ucGVuZGluZ1Vuc3Rha2U9IjAiLGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luPSIwIixiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQ9IjAiLGJhbGFuY2VUby5wZW5kaW5nVW5kZWxlZ2F0aW9ucz0iMCIpOnZvaWQgMD09PWJhbGFuY2VUby5kZWxlZ2F0aW9uc0luJiYoYmFsYW5jZVRvLmRlbGVnYXRpb25zSW49IjAiLGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dD0iMCIsYmFsYW5jZVRvLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIixiYWxhbmNlVG8uZGVsZWdhdGVkU3Rha2UmJihkZWxldGUgYmFsYW5jZVRvLmRlbGVnYXRlZFN0YWtlLGRlbGV0ZSBiYWxhbmNlVG8ucmVjZWl2ZWRTdGFrZSkpO2xldCBkZWxlZ2F0aW9uPWF3YWl0IGFwaS5kYi5maW5kT25lKCJkZWxlZ2F0aW9ucyIse3RvOmZpbmFsVG8sZnJvbTphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCk7bnVsbD09ZGVsZWdhdGlvbj8oYmFsYW5jZUZyb20uc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZUZyb20pLGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZVRvLmRlbGVnYXRpb25zSW4scXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZVRvKSxkZWxlZ2F0aW9uPXt9LGRlbGVnYXRpb24uZnJvbT1hcGkuc2VuZGVyLGRlbGVnYXRpb24udG89ZmluYWxUbyxkZWxlZ2F0aW9uLnN5bWJvbD1zeW1ib2wsZGVsZWdhdGlvbi5xdWFudGl0eT1xdWFudGl0eSxkZWxlZ2F0aW9uLmNyZWF0ZWQ9dGltZXN0YW1wLGRlbGVnYXRpb24udXBkYXRlZD10aW1lc3RhbXAsYXdhaXQgYXBpLmRiLmluc2VydCgiZGVsZWdhdGlvbnMiLGRlbGVnYXRpb24pLGFwaS5lbWl0KCJkZWxlZ2F0ZSIse3RvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxkZWxlZ2F0ZWQ6ITB9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6YXBpLkJpZ051bWJlcihxdWFudGl0eSkubmVnYXRlZCgpfSkpOihiYWxhbmNlRnJvbS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dCxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlRnJvbSksYmFsYW5jZVRvLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbixxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlVG8pLGRlbGVnYXRpb24ucXVhbnRpdHk9Y2FsY3VsYXRlQmFsYW5jZShkZWxlZ2F0aW9uLnF1YW50aXR5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksZGVsZWdhdGlvbi51cGRhdGVkPXRpbWVzdGFtcCxhd2FpdCBhcGkuZGIudXBkYXRlKCJkZWxlZ2F0aW9ucyIsZGVsZWdhdGlvbiksYXBpLmVtaXQoImRlbGVnYXRlIix7dG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGRlbGVnYXRlZDohMH0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTphcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5uZWdhdGVkKCl9KSl9fX19fSxhY3Rpb25zLnVuZGVsZWdhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksZnJvbTpmcm9tLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmZnJvbSYmInN0cmluZyI9PXR5cGVvZiBmcm9tJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsRnJvbT1mcm9tLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGZpbmFsRnJvbS5sZW5ndGg+PTMmJmZpbmFsRnJvbS5sZW5ndGg8PTE2LCJpbnZhbGlkIGZyb20iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChmaW5hbEZyb20hPT1hcGkuc2VuZGVyLCJjYW5ub3QgdW5kZWxlZ2F0ZSBmcm9tIHlvdXJzZWxmIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgdW5kZWxlZ2F0ZSBwb3NpdGl2ZSBxdWFudGl0eSIpKXtjb25zdCBiYWxhbmNlVG89YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlVG8sImJhbGFuY2VUbyBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZVRvLmRlbGVnYXRpb25zT3V0KS5ndGUocXVhbnRpdHkpLCJvdmVyZHJhd24gZGVsZWdhdGlvbiIpKXtjb25zdCBiYWxhbmNlRnJvbT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmZpbmFsRnJvbSxzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZUZyb20sImJhbGFuY2VGcm9tIGRvZXMgbm90IGV4aXN0Iikpe2NvbnN0IGRlbGVnYXRpb249YXdhaXQgYXBpLmRiLmZpbmRPbmUoImRlbGVnYXRpb25zIix7dG86ZmluYWxGcm9tLGZyb206YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09ZGVsZWdhdGlvbiwiZGVsZWdhdGlvbiBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoZGVsZWdhdGlvbi5xdWFudGl0eSkuZ3RlKHF1YW50aXR5KSwib3ZlcmRyYXduIGRlbGVnYXRpb24iKSl7YmFsYW5jZVRvLnBlbmRpbmdVbmRlbGVnYXRpb25zPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20ucGVuZGluZ1VuZGVsZWdhdGlvbnMscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZVRvKSxiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbixxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlRnJvbSksZGVsZWdhdGlvbi5xdWFudGl0eT1jYWxjdWxhdGVCYWxhbmNlKGRlbGVnYXRpb24ucXVhbnRpdHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuQmlnTnVtYmVyKGRlbGVnYXRpb24ucXVhbnRpdHkpLmd0KDApP2F3YWl0IGFwaS5kYi51cGRhdGUoImRlbGVnYXRpb25zIixkZWxlZ2F0aW9uKTphd2FpdCBhcGkuZGIucmVtb3ZlKCJkZWxlZ2F0aW9ucyIsZGVsZWdhdGlvbik7Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIiksY29vbGRvd25QZXJpb2RNaWxsaXNlYz0yNCp0b2tlbi51bmRlbGVnYXRpb25Db29sZG93biozNjAwKjFlMyxjb21wbGV0ZVRpbWVzdGFtcD1ibG9ja0RhdGUuZ2V0VGltZSgpK2Nvb2xkb3duUGVyaW9kTWlsbGlzZWMsdW5kZWxlZ2F0aW9uPXthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnRva2VuLnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxjb21wbGV0ZVRpbWVzdGFtcDpjb21wbGV0ZVRpbWVzdGFtcCx0eElEOmFwaS50cmFuc2FjdGlvbklkfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsdW5kZWxlZ2F0aW9uKSxhcGkuZW1pdCgidW5kZWxlZ2F0ZVN0YXJ0Iix7ZnJvbTpmaW5hbEZyb20sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmZpbmFsRnJvbSxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OmFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLm5lZ2F0ZWQoKSxkZWxlZ2F0ZWQ6ITB9KX19fX19fX07Y29uc3QgcHJvY2Vzc1VuZGVsZWdhdGlvbj1hc3luYyB1bmRlbGVnYXRpb249Pntjb25zdHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX09dW5kZWxlZ2F0aW9uLGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2x9KSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSl7Y29uc3Qgb3JpZ2luYWxTdGFrZT1iYWxhbmNlLnN0YWtlLG9yaWdpbmFsUGVuZGluZ1VuZGVsZWdhdGlvbnM9YmFsYW5jZS5wZW5kaW5nVW5kZWxlZ2F0aW9ucztiYWxhbmNlLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGJhbGFuY2UucGVuZGluZ1VuZGVsZWdhdGlvbnM9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnBlbmRpbmdVbmRlbGVnYXRpb25zLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1VuZGVsZWdhdGlvbnMpLmx0KG9yaWdpbmFsUGVuZGluZ1VuZGVsZWdhdGlvbnMpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmd0KG9yaWdpbmFsU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsdW5kZWxlZ2F0aW9uKSxhcGkuZW1pdCgidW5kZWxlZ2F0ZURvbmUiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19O2FjdGlvbnMuY2hlY2tQZW5kaW5nVW5kZWxlZ2F0aW9ucz1hc3luYygpPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCk7bGV0IHBlbmRpbmdVbmRlbGVnYXRpb25zPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIse2NvbXBsZXRlVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19KSxuYlBlbmRpbmdVbmRlbGVnYXRpb25zPXBlbmRpbmdVbmRlbGVnYXRpb25zLmxlbmd0aDtmb3IoO25iUGVuZGluZ1VuZGVsZWdhdGlvbnM+MDspe2ZvcihsZXQgaW5kZXg9MDtpbmRleDxuYlBlbmRpbmdVbmRlbGVnYXRpb25zO2luZGV4Kz0xKXtjb25zdCBwZW5kaW5nVW5kZWxlZ2F0aW9uPXBlbmRpbmdVbmRlbGVnYXRpb25zW2luZGV4XTthd2FpdCBwcm9jZXNzVW5kZWxlZ2F0aW9uKHBlbmRpbmdVbmRlbGVnYXRpb24pfXBlbmRpbmdVbmRlbGVnYXRpb25zPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIse2NvbXBsZXRlVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19KSxuYlBlbmRpbmdVbmRlbGVnYXRpb25zPXBlbmRpbmdVbmRlbGVnYXRpb25zLmxlbmd0aH19fTs="}}}