You are viewing a single comment's thread from:

RE: testnet

in #test2 years ago

{ "id": "ssc-testnet-hive", "json": { "contractName":"contract", "contractAction":"update", "contractPayload": { "name": "roles", "params": "", "code": "Y29uc3QgQ29udHJhY3ROYW1lPSJyb2xlcyIsRmVlTWV0aG9kPVsiYnVybiIsImlzc3VlciJdO2FzeW5jIGZ1bmN0aW9uIHVwZGF0ZUNhbmRpZGF0ZVdlaWdodChpZCxkZWx0YUFwcHJvdmFsV2VpZ2h0LGRlbHRhVG9rZW49bnVsbCl7Y29uc3QgY2FuZGlkYXRlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJjYW5kaWRhdGVzIix7X2lkOmlkfSk7aWYoY2FuZGlkYXRlKXtpZihkZWx0YVRva2VuKXtjb25zdCByb2xlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyb2xlcyIse19pZDpjYW5kaWRhdGUucm9sZUlkfSk7aWYoKGF3YWl0IGFwaS5kYi5maW5kT25lKCJpbnN0YW5jZXMiLHtfaWQ6cm9sZS5pbnN0YW5jZUlkfSkpLnZvdGVUb2tlbiE9PWRlbHRhVG9rZW4uc3ltYm9sKXJldHVybiEwfWNhbmRpZGF0ZS5hcHByb3ZhbFdlaWdodD17JG51bWJlckRlY2ltYWw6YXBpLkJpZ051bWJlcihjYW5kaWRhdGUuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnBsdXMoZGVsdGFBcHByb3ZhbFdlaWdodCl9LGF3YWl0IGFwaS5kYi51cGRhdGUoImNhbmRpZGF0ZXMiLGNhbmRpZGF0ZSk7Y29uc3Qgcm9sZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgicm9sZXMiLHtfaWQ6Y2FuZGlkYXRlLnJvbGVJZH0pO3JldHVybiByb2xlLnRvdGFsQXBwcm92YWxXZWlnaHQ9eyRudW1iZXJEZWNpbWFsOmFwaS5CaWdOdW1iZXIocm9sZS50b3RhbEFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS5wbHVzKGRlbHRhQXBwcm92YWxXZWlnaHQpfSxhd2FpdCBhcGkuZGIudXBkYXRlKCJyb2xlcyIscm9sZSksITB9cmV0dXJuITF9YXN5bmMgZnVuY3Rpb24gdXBkYXRlVG9rZW5CYWxhbmNlcyhyb2xlLHRva2VuLHF1YW50aXR5KXtjb25zdCB1cFJvbGU9cm9sZTtpZih1cFJvbGUudG9rZW5CYWxhbmNlcyl7Y29uc3QgdEluZGV4PXVwUm9sZS50b2tlbkJhbGFuY2VzLmZpbmRJbmRleCgodD0+dC5zeW1ib2w9PT10b2tlbi5zeW1ib2wpKTstMT09PXRJbmRleD91cFJvbGUudG9rZW5CYWxhbmNlcy5wdXNoKHtzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSk6dXBSb2xlLnRva2VuQmFsYW5jZXNbdEluZGV4XS5xdWFudGl0eT1hcGkuQmlnTnVtYmVyKHVwUm9sZS50b2tlbkJhbGFuY2VzW3RJbmRleF0ucXVhbnRpdHkpLnBsdXMocXVhbnRpdHkpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTil9ZWxzZSB1cFJvbGUudG9rZW5CYWxhbmNlcz1be3N5bWJvbDp0b2tlbi5zeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9XTthd2FpdCBhcGkuZGIudXBkYXRlKCJyb2xlcyIsdXBSb2xlKX1hc3luYyBmdW5jdGlvbiBwYXlSZWNpcGllbnQoYWNjb3VudCxzeW1ib2wscXVhbnRpdHksdHlwZT0idXNlciIsY29udHJhY3RQYXlsb2FkPW51bGwpe2lmKGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApKXtjb25zdCByZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFjY291bnQsc3ltYm9sLHF1YW50aXR5LHR5cGUpO3JldHVybiJjb250cmFjdCI9PT10eXBlJiZjb250cmFjdFBheWxvYWQmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdChhY2NvdW50LCJyZWNlaXZlUm9sZXNUb2tlbnMiLHtkYXRhOmNvbnRyYWN0UGF5bG9hZCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIXJlcy5lcnJvcnN8fChhcGkuZGVidWcoYEVycm9yIHBheWluZyBvdXQgcm9sZXMgb2YgJHtxdWFudGl0eX0gJHtzeW1ib2x9IHRvICR7YWNjb3VudH0gKFRYSUQgJHthcGkudHJhbnNhY3Rpb25JZH0pOiBcbiR7cmVzLmVycm9yc31gKSwhMSl9cmV0dXJuITF9YXN5bmMgZnVuY3Rpb24gY2hlY2tQZW5kaW5nQ2FuZGlkYXRlcyhpbnN0LHBhcmFtcyl7Y29uc3QgcmFuZG9tPWFwaS5yYW5kb20oKSxibG9ja0RhdGU9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApLHVwSW5zdD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGluc3QpKSx2b3RlVG9rZW5PYmo9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6aW5zdC52b3RlVG9rZW59KSx2b3RlVG9rZW5NaW5WYWx1ZT1hcGkuQmlnTnVtYmVyKDEpLmRpdmlkZWRCeShhcGkuQmlnTnVtYmVyKDEwKS5wb3codm90ZVRva2VuT2JqLnByZWNpc2lvbikpLGluc3RUaWNrVGltZT1hcGkuQmlnTnVtYmVyKGJsb2NrRGF0ZS5nZXRUaW1lKCkpLm1pbnVzKDM2MDAqcGFyYW1zLmluc3RhbmNlVGlja0hvdXJzKjFlMykudG9OdW1iZXIoKTtsZXQgcm9sZXNQcm9jZXNzZWQ9MDtjb25zdCBwZW5kaW5nUm9sZXM9YXdhaXQgYXBpLmRiLmZpbmQoInJvbGVzIix7aW5zdGFuY2VJZDppbnN0LmlkLGFjdGl2ZTohMCwidG9rZW5CYWxhbmNlcy4wIjp7JGV4aXN0czohMH0sbGFzdFRpY2tUaW1lOnskbHRlOmluc3RUaWNrVGltZX19LHBhcmFtcy5tYXhSb2xlc1BlckJsb2NrLDAsW3tpbmRleDoiYnlMYXN0VGlja1RpbWUiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8cGVuZGluZ1JvbGVzLmxlbmd0aDtpKz0xKXtjb25zdCByb2xlPXBlbmRpbmdSb2xlc1tpXSxmdW5kZWQ9W10scGF5VG9rZW5zPXJvbGUudG9rZW5CYWxhbmNlcy5maWx0ZXIoKHQ9PmFwaS5CaWdOdW1iZXIodC5xdWFudGl0eSkuZ3QoMCkpKSx0b3RhbFNsb3RzPWFwaS5CaWdOdW1iZXIocm9sZS5tYWluU2xvdHMpLnBsdXMocm9sZS5iYWNrdXBTbG90cykudG9OdW1iZXIoKSxyb2xlVGlja1RpbWU9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS5taW51cygzNjAwKnJvbGUudGlja0hvdXJzKjFlMykudG9OdW1iZXIoKTtpZihyb2xlLmxhc3RUaWNrVGltZTw9cm9sZVRpY2tUaW1lKXtpZihwYXlUb2tlbnMubGVuZ3RoPjApe2xldCBvZmZzZXQ9MCxjYW5kaWRhdGVzPWF3YWl0IGFwaS5kYi5maW5kKCJjYW5kaWRhdGVzIix7cm9sZUlkOnJvbGUuX2lkLGFjdGl2ZTohMCxhcHByb3ZhbFdlaWdodDp7JGd0OnskbnVtYmVyRGVjaW1hbDphcGkuQmlnTnVtYmVyKHJvbGUudm90ZVRocmVzaG9sZCl9fX0scGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0LG9mZnNldCxbe2luZGV4OiJieUFwcHJvdmFsV2VpZ2h0IixkZXNjZW5kaW5nOiEwfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxhY2NXZWlnaHQ9MCxiYWNrdXBXZWlnaHQ9bnVsbDtkb3tmb3IobGV0IGo9MDtqPGNhbmRpZGF0ZXMubGVuZ3RoO2orPTEpe2NvbnN0IGNhbmRpZGF0ZT1jYW5kaWRhdGVzW2pdO2lmKGZ1bmRlZC5sZW5ndGg+PXJvbGUubWFpblNsb3RzJiZudWxsPT09YmFja3VwV2VpZ2h0JiYoYmFja3VwV2VpZ2h0PWFwaS5CaWdOdW1iZXIoYWNjV2VpZ2h0KS5wbHVzKHZvdGVUb2tlbk1pblZhbHVlKS5wbHVzKGFwaS5CaWdOdW1iZXIocm9sZS50b3RhbEFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS5taW51cyhhY2NXZWlnaHQpLnRpbWVzKHJhbmRvbSkpLnRvRml4ZWQodm90ZVRva2VuT2JqLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVApKSxhY2NXZWlnaHQ9YXBpLkJpZ051bWJlcihhY2NXZWlnaHQpLnBsdXMoY2FuZGlkYXRlLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS50b0ZpeGVkKHZvdGVUb2tlbk9iai5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKSwhMD09PWNhbmRpZGF0ZS5hY3RpdmUmJihmdW5kZWQubGVuZ3RoPHJvbGUubWFpblNsb3RzfHxhcGkuQmlnTnVtYmVyKGJhY2t1cFdlaWdodCkubHRlKGFjY1dlaWdodCkpJiZmdW5kZWQucHVzaCh7Y2FuZGlkYXRlOmNhbmRpZGF0ZS5faWQsYWNjb3VudDpjYW5kaWRhdGUuYWNjb3VudH0pLGZ1bmRlZC5sZW5ndGg+PXRvdGFsU2xvdHMpYnJlYWt9ZnVuZGVkLmxlbmd0aDx0b3RhbFNsb3RzJiYob2Zmc2V0Kz1wYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXQsY2FuZGlkYXRlcz1hd2FpdCBhcGkuZGIuZmluZCgiY2FuZGlkYXRlcyIse3JvbGVJZDpyb2xlLl9pZCxhY3RpdmU6ITAsYXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6YXBpLkJpZ051bWJlcihyb2xlLnZvdGVUaHJlc2hvbGQpfX19LHBhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdCxvZmZzZXQsW3tpbmRleDoiYnlBcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSkpfXdoaWxlKGNhbmRpZGF0ZXMubGVuZ3RoPjAmJmZ1bmRlZC5sZW5ndGg8dG90YWxTbG90cyk7Zm9yKGxldCBsPTA7bDxwYXlUb2tlbnMubGVuZ3RoO2wrPTEpe2NvbnN0IHBheVRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnBheVRva2Vuc1tsXS5zeW1ib2x9KSxwYXlvdXRRdHk9YXBpLkJpZ051bWJlcihwYXlUb2tlbnNbbF0ucXVhbnRpdHkpLmRpdmlkZWRCeSh0b3RhbFNsb3RzKS50b0ZpeGVkKHBheVRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pO2lmKGFwaS5CaWdOdW1iZXIocGF5b3V0UXR5KS5ndCgwKSlmb3IobGV0IGs9MDtrPGZ1bmRlZC5sZW5ndGg7ays9MSl7Y29uc3QgZnVuZD1mdW5kZWRba107aWYoYXdhaXQgcGF5UmVjaXBpZW50KGZ1bmQuYWNjb3VudCxwYXlUb2tlbnNbbF0uc3ltYm9sLHBheW91dFF0eSkpe2NvbnN0IHRiSW5kZXg9cm9sZS50b2tlbkJhbGFuY2VzLmZpbmRJbmRleCgoYj0+Yi5zeW1ib2w9PT1wYXlUb2tlbnNbbF0uc3ltYm9sKSk7cm9sZS50b2tlbkJhbGFuY2VzW3RiSW5kZXhdLnF1YW50aXR5PWFwaS5CaWdOdW1iZXIocm9sZS50b2tlbkJhbGFuY2VzW3RiSW5kZXhdLnF1YW50aXR5KS5taW51cyhwYXlvdXRRdHkpLnRvRml4ZWQocGF5VG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYXBpLmVtaXQoInJvbGVQYXltZW50Iix7aW5zdGFuY2VJZDppbnN0LmlkLHJvbGVJZDpyb2xlLl9pZCxhY2NvdW50OmZ1bmQuYWNjb3VudCxzeW1ib2w6cGF5VG9rZW5zW2xdLnN5bWJvbCxxdWFudGl0eTpwYXlvdXRRdHl9KX19fX1yb2xlc1Byb2Nlc3NlZCs9MTtjb25zdCB1cFJvbGU9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyb2xlKSk7dXBSb2xlLmxhc3RUaWNrVGltZT1ibG9ja0RhdGUuZ2V0VGltZSgpLGF3YWl0IGFwaS5kYi51cGRhdGUoInJvbGVzIix1cFJvbGUpfX0wPT09cm9sZXNQcm9jZXNzZWQmJih1cEluc3QubGFzdFRpY2tUaW1lPWJsb2NrRGF0ZS5nZXRUaW1lKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiaW5zdGFuY2VzIix1cEluc3QpKX1hY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoImluc3RhbmNlcyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImluc3RhbmNlcyIsWyJpZCIsImxhc3RUaWNrVGltZSJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInJvbGVzIixbImluc3RhbmNlSWQiLHtuYW1lOiJieUxhc3RUaWNrVGltZSIsaW5kZXg6e2luc3RhbmNlSWQ6MSxhY3RpdmU6MSxsYXN0VGlja1RpbWU6MX19XSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJjYW5kaWRhdGVzIixbImFjY291bnQiLHtuYW1lOiJieUFjY291bnRSb2xlIixpbmRleDp7cm9sZUlkOjEsYWNjb3VudDoxfX0se25hbWU6ImJ5QXBwcm92YWxXZWlnaHQiLGluZGV4Ontyb2xlSWQ6MSxhcHByb3ZhbFdlaWdodDoxLGFjdGl2ZToxfX1dKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImFwcHJvdmFscyIsWyJmcm9tIiwidG8iXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJhY2NvdW50cyIsW10se3ByaW1hcnlLZXk6WyJhY2NvdW50Il19KSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2NvbnN0IHBhcmFtcz17aW5zdGFuY2VDcmVhdGlvbkZlZToiNTAwIixpbnN0YW5jZVVwZGF0ZUZlZToiMTAwIixpbnN0YW5jZVRpY2tIb3VyczoiMjQiLHJvbGVDcmVhdGlvbkZlZToiNTAiLHJvbGVVcGRhdGVGZWU6IjI1IixtYXhTbG90czoxMCxtYXhJbnN0YW5jZXNQZXJCbG9jazoxLG1heFJvbGVzUGVyQmxvY2s6NCxtYXhBY2NvdW50QXBwcm92YWxzOjUwLHByb2Nlc3NRdWVyeUxpbWl0OjFlM307YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfX0sYWN0aW9ucy51cGRhdGVQYXJhbXM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2luc3RhbmNlQ3JlYXRpb25GZWU6aW5zdGFuY2VDcmVhdGlvbkZlZSxpbnN0YW5jZVVwZGF0ZUZlZTppbnN0YW5jZVVwZGF0ZUZlZSxpbnN0YW5jZVRpY2tIb3VyczppbnN0YW5jZVRpY2tIb3Vycyxyb2xlQ3JlYXRpb25GZWU6cm9sZUNyZWF0aW9uRmVlLHJvbGVVcGRhdGVGZWU6cm9sZVVwZGF0ZUZlZSxtYXhTbG90czptYXhTbG90cyxtYXhJbnN0YW5jZXNQZXJCbG9jazptYXhJbnN0YW5jZXNQZXJCbG9jayxtYXhSb2xlc1BlckJsb2NrOm1heFJvbGVzUGVyQmxvY2ssbWF4QWNjb3VudEFwcHJvdmFsczptYXhBY2NvdW50QXBwcm92YWxzLHByb2Nlc3NRdWVyeUxpbWl0OnByb2Nlc3NRdWVyeUxpbWl0fT1wYXlsb2FkO2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYoaW5zdGFuY2VDcmVhdGlvbkZlZSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBpbnN0YW5jZUNyZWF0aW9uRmVlJiYhYXBpLkJpZ051bWJlcihpbnN0YW5jZUNyZWF0aW9uRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGluc3RhbmNlQ3JlYXRpb25GZWUpLmd0ZSgwKSwiaW52YWxpZCBpbnN0YW5jZUNyZWF0aW9uRmVlIikpcmV0dXJuO3BhcmFtcy5pbnN0YW5jZUNyZWF0aW9uRmVlPWluc3RhbmNlQ3JlYXRpb25GZWV9aWYoaW5zdGFuY2VVcGRhdGVGZWUpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgaW5zdGFuY2VVcGRhdGVGZWUmJiFhcGkuQmlnTnVtYmVyKGluc3RhbmNlVXBkYXRlRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGluc3RhbmNlVXBkYXRlRmVlKS5ndGUoMCksImludmFsaWQgaW5zdGFuY2VVcGRhdGVGZWUiKSlyZXR1cm47cGFyYW1zLmluc3RhbmNlVXBkYXRlRmVlPWluc3RhbmNlVXBkYXRlRmVlfWlmKGluc3RhbmNlVGlja0hvdXJzKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGluc3RhbmNlVGlja0hvdXJzJiZhcGkuQmlnTnVtYmVyKGluc3RhbmNlVGlja0hvdXJzKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihpbnN0YW5jZVRpY2tIb3VycykuZ3RlKDEpLCJpbnZhbGlkIGluc3RhbmNlVGlja0hvdXJzIikpcmV0dXJuO3BhcmFtcy5pbnN0YW5jZVRpY2tIb3Vycz1pbnN0YW5jZVRpY2tIb3Vyc31pZihyb2xlQ3JlYXRpb25GZWUpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2Ygcm9sZUNyZWF0aW9uRmVlJiYhYXBpLkJpZ051bWJlcihyb2xlQ3JlYXRpb25GZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocm9sZUNyZWF0aW9uRmVlKS5ndGUoMCksImludmFsaWQgcm9sZUNyZWF0aW9uRmVlIikpcmV0dXJuO3BhcmFtcy5yb2xlQ3JlYXRpb25GZWU9cm9sZUNyZWF0aW9uRmVlfWlmKHJvbGVVcGRhdGVGZWUpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2Ygcm9sZVVwZGF0ZUZlZSYmIWFwaS5CaWdOdW1iZXIocm9sZVVwZGF0ZUZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihyb2xlVXBkYXRlRmVlKS5ndGUoMCksImludmFsaWQgcm9sZVVwZGF0ZUZlZSIpKXJldHVybjtwYXJhbXMucm9sZVVwZGF0ZUZlZT1yb2xlVXBkYXRlRmVlfWlmKG1heFNsb3RzKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIG1heFNsb3RzJiZhcGkuQmlnTnVtYmVyKG1heFNsb3RzKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihtYXhTbG90cykuZ3RlKDEpLCJpbnZhbGlkIG1heFNsb3RzIikpcmV0dXJuO3BhcmFtcy5tYXhTbG90cz1hcGkuQmlnTnVtYmVyKG1heFNsb3RzKS50b051bWJlcigpfWlmKG1heEluc3RhbmNlc1BlckJsb2NrKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIG1heEluc3RhbmNlc1BlckJsb2NrJiZhcGkuQmlnTnVtYmVyKG1heEluc3RhbmNlc1BlckJsb2NrKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihtYXhJbnN0YW5jZXNQZXJCbG9jaykuZ3RlKDEpLCJpbnZhbGlkIG1heEluc3RhbmNlc1BlckJsb2NrIikpcmV0dXJuO3BhcmFtcy5tYXhJbnN0YW5jZXNQZXJCbG9jaz1hcGkuQmlnTnVtYmVyKG1heEluc3RhbmNlc1BlckJsb2NrKS50b051bWJlcigpfWlmKG1heFJvbGVzUGVyQmxvY2spe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgbWF4Um9sZXNQZXJCbG9jayYmYXBpLkJpZ051bWJlcihtYXhSb2xlc1BlckJsb2NrKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihtYXhSb2xlc1BlckJsb2NrKS5ndGUoMSksImludmFsaWQgbWF4Um9sZXNQZXJCbG9jayIpKXJldHVybjtwYXJhbXMubWF4Um9sZXNQZXJCbG9jaz1hcGkuQmlnTnVtYmVyKG1heFJvbGVzUGVyQmxvY2spLnRvTnVtYmVyKCl9aWYobWF4QWNjb3VudEFwcHJvdmFscyl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBtYXhBY2NvdW50QXBwcm92YWxzJiZhcGkuQmlnTnVtYmVyKG1heEFjY291bnRBcHByb3ZhbHMpLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKG1heEFjY291bnRBcHByb3ZhbHMpLmd0ZSgxKSwiaW52YWxpZCBtYXhBY2NvdW50QXBwcm92YWxzIikpcmV0dXJuO3BhcmFtcy5tYXhBY2NvdW50QXBwcm92YWxzPWFwaS5CaWdOdW1iZXIobWF4QWNjb3VudEFwcHJvdmFscykudG9OdW1iZXIoKX1pZihwcm9jZXNzUXVlcnlMaW1pdCl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBwcm9jZXNzUXVlcnlMaW1pdCYmYXBpLkJpZ051bWJlcihwcm9jZXNzUXVlcnlMaW1pdCkuaXNJbnRlZ2VyKCkmJmFwaS5CaWdOdW1iZXIocHJvY2Vzc1F1ZXJ5TGltaXQpLmd0ZSgxKSwiaW52YWxpZCBwcm9jZXNzUXVlcnlMaW1pdCIpKXJldHVybjtwYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXQ9YXBpLkJpZ051bWJlcihwcm9jZXNzUXVlcnlMaW1pdCkudG9OdW1iZXIoKX1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9LGFjdGlvbnMuY3JlYXRlSW5zdGFuY2U9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3ZvdGVUb2tlbjp2b3RlVG9rZW4sY2FuZGlkYXRlRmVlOmNhbmRpZGF0ZUZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2luc3RhbmNlQ3JlYXRpb25GZWU6aW5zdGFuY2VDcmVhdGlvbkZlZX09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxhdXRob3JpemVkQ3JlYXRpb249ISghYXBpLkJpZ051bWJlcihpbnN0YW5jZUNyZWF0aW9uRmVlKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGluc3RhbmNlQ3JlYXRpb25GZWUpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZSIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSB0cmFuc2FjdGlvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSl7aWYoY2FuZGlkYXRlRmVlKXtpZighYXBpLmFzc2VydCgib2JqZWN0Ij09dHlwZW9mIGNhbmRpZGF0ZUZlZSYmInN0cmluZyI9PXR5cGVvZiBjYW5kaWRhdGVGZWUubWV0aG9kJiYtMSE9PUZlZU1ldGhvZC5pbmRleE9mKGNhbmRpZGF0ZUZlZS5tZXRob2QpJiYic3RyaW5nIj09dHlwZW9mIGNhbmRpZGF0ZUZlZS5zeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgY2FuZGlkYXRlRmVlLmFtb3VudCYmYXBpLkJpZ051bWJlcihjYW5kaWRhdGVGZWUuYW1vdW50KS5ndGUoMCksImludmFsaWQgY2FuZGlkYXRlRmVlIHByb3BlcnRpZXMiKSlyZXR1cm47Y29uc3QgZmVlVG9rZW5PYmo9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6Y2FuZGlkYXRlRmVlLnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KGZlZVRva2VuT2JqJiZhcGkuQmlnTnVtYmVyKGNhbmRpZGF0ZUZlZS5hbW91bnQpLmRwKCk8PWZlZVRva2VuT2JqLnByZWNpc2lvbiwiaW52YWxpZCBjYW5kaWRhdGVGZWUgdG9rZW4gb3IgcHJlY2lzaW9uIikpcmV0dXJufWNvbnN0IHZvdGVUb2tlbk9iaj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDp2b3RlVG9rZW59KTtpZighYXBpLmFzc2VydCh2b3RlVG9rZW5PYmomJnZvdGVUb2tlbk9iai5zdGFraW5nRW5hYmxlZCwidm90ZVRva2VuIG11c3QgaGF2ZSBzdGFraW5nIGVuYWJsZWQiKSlyZXR1cm47Y29uc3Qgbm93PW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSxuZXdJbnN0YW5jZT17dm90ZVRva2VuOnZvdGVUb2tlbixjYW5kaWRhdGVGZWU6Y2FuZGlkYXRlRmVlLGFjdGl2ZTohMSxjcmVhdG9yOmFwaS5zZW5kZXIsbGFzdFRpY2tUaW1lOm5vdy5nZXRUaW1lKCl9LGluc2VydGVkSW5zdD1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJpbnN0YW5jZXMiLG5ld0luc3RhbmNlKTthcGkuc2VuZGVyIT09YXBpLm93bmVyJiYibnVsbCIhPT1hcGkuc2VuZGVyJiZhcGkuQmlnTnVtYmVyKGluc3RhbmNlQ3JlYXRpb25GZWUpLmd0KDApJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTppbnN0YW5jZUNyZWF0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhcGkuZW1pdCgiY3JlYXRlSW5zdGFuY2UiLHtpZDppbnNlcnRlZEluc3QuX2lkfSl9fSxhY3Rpb25zLnVwZGF0ZUluc3RhbmNlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpbnN0YW5jZUlkOmluc3RhbmNlSWQsY2FuZGlkYXRlRmVlOmNhbmRpZGF0ZUZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2luc3RhbmNlVXBkYXRlRmVlOmluc3RhbmNlVXBkYXRlRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGF1dGhvcml6ZWRVcGRhdGU9ISghYXBpLkJpZ051bWJlcihpbnN0YW5jZVVwZGF0ZUZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShpbnN0YW5jZVVwZGF0ZUZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkVXBkYXRlLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHVwZGF0ZSBmZWUiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBpbnN0YW5jZUlkJiZhcGkuQmlnTnVtYmVyKGluc3RhbmNlSWQpLmlzSW50ZWdlcigpLCJpbnZhbGlkIGluc3RhbmNlSWQiKSYmYXBpLmFzc2VydChjYW5kaWRhdGVGZWUsInNwZWNpZnkgYXQgbGVhc3Qgb25lIGZpZWxkIHRvIHVwZGF0ZSIpKXtjb25zdCBleGlzdGluZ0luc3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImluc3RhbmNlcyIse19pZDphcGkuQmlnTnVtYmVyKGluc3RhbmNlSWQpLnRvTnVtYmVyKCl9KTtpZighYXBpLmFzc2VydChleGlzdGluZ0luc3QsImluc3RhbmNlIG5vdCBmb3VuZCIpfHwhYXBpLmFzc2VydChleGlzdGluZ0luc3QuY3JlYXRvcj09PWFwaS5zZW5kZXJ8fGFwaS5vd25lcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgaW5zdGFuY2UgY3JlYXRvciIpKXJldHVybjtpZihjYW5kaWRhdGVGZWUpe2lmKCFhcGkuYXNzZXJ0KCJvYmplY3QiPT10eXBlb2YgY2FuZGlkYXRlRmVlJiYic3RyaW5nIj09dHlwZW9mIGNhbmRpZGF0ZUZlZS5tZXRob2QmJi0xIT09RmVlTWV0aG9kLmluZGV4T2YoY2FuZGlkYXRlRmVlLm1ldGhvZCkmJiJzdHJpbmciPT10eXBlb2YgY2FuZGlkYXRlRmVlLnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBjYW5kaWRhdGVGZWUuYW1vdW50JiZhcGkuQmlnTnVtYmVyKGNhbmRpZGF0ZUZlZS5hbW91bnQpLmd0ZSgwKSwiaW52YWxpZCBjYW5kaWRhdGVGZWUgb2JqZWN0IikpcmV0dXJuO2NvbnN0IGZlZVRva2VuT2JqPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmNhbmRpZGF0ZUZlZS5zeW1ib2x9KTtpZighYXBpLmFzc2VydChmZWVUb2tlbk9iaiYmYXBpLkJpZ051bWJlcihjYW5kaWRhdGVGZWUuYW1vdW50KS5kcCgpPD1mZWVUb2tlbk9iai5wcmVjaXNpb24sImludmFsaWQgY2FuZGlkYXRlRmVlIHRva2VuIG9yIHByZWNpc2lvbiIpKXJldHVybjtleGlzdGluZ0luc3QuY2FuZGlkYXRlRmVlPWNhbmRpZGF0ZUZlZX1hd2FpdCBhcGkuZGIudXBkYXRlKCJpbnN0YW5jZXMiLGV4aXN0aW5nSW5zdCksYXBpLnNlbmRlciE9PWFwaS5vd25lciYmIm51bGwiIT09YXBpLnNlbmRlciYmYXBpLkJpZ051bWJlcihpbnN0YW5jZVVwZGF0ZUZlZSkuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5Omluc3RhbmNlVXBkYXRlRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhcGkuZW1pdCgidXBkYXRlSW5zdGFuY2UiLHtpZDppbnN0YW5jZUlkfSl9fSxhY3Rpb25zLmNyZWF0ZVJvbGVzPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpbnN0YW5jZUlkOmluc3RhbmNlSWQscm9sZXM6cm9sZXMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtyb2xlQ3JlYXRpb25GZWU6cm9sZUNyZWF0aW9uRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hKCFhcGkuQmlnTnVtYmVyKHJvbGVDcmVhdGlvbkZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShyb2xlQ3JlYXRpb25GZWUpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZSIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSB0cmFuc2FjdGlvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGluc3RhbmNlSWQmJmFwaS5CaWdOdW1iZXIoaW5zdGFuY2VJZCkuaXNJbnRlZ2VyKCksImludmFsaWQgaW5zdGFuY2VJZCIpJiZhcGkuYXNzZXJ0KCJvYmplY3QiPT10eXBlb2Ygcm9sZXMmJkFycmF5LmlzQXJyYXkocm9sZXMpJiZyb2xlcy5sZW5ndGg+MCYmcm9sZXMubGVuZ3RoPD01MCwiaW52YWxpZCByb2xlcyBvYmplY3QiKSl7Y29uc3QgZXhpc3RpbmdJbnN0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJpbnN0YW5jZXMiLHtfaWQ6YXBpLkJpZ051bWJlcihpbnN0YW5jZUlkKS50b051bWJlcigpfSk7aWYoIWFwaS5hc3NlcnQoZXhpc3RpbmdJbnN0LCJpbnN0YW5jZSBub3QgZm91bmQiKXx8IWFwaS5hc3NlcnQoZXhpc3RpbmdJbnN0LmNyZWF0b3I9PT1hcGkuc2VuZGVyfHxhcGkub3duZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIGluc3RhbmNlIGNyZWF0b3IiKSlyZXR1cm47Y29uc3Qgdm90ZVRva2VuT2JqPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmV4aXN0aW5nSW5zdC52b3RlVG9rZW59KTtmb3IobGV0IGk9MDtpPHJvbGVzLmxlbmd0aDtpKz0xKXtjb25zdCByb2xlPXJvbGVzW2ldO2lmKCFhcGkuYXNzZXJ0KDU9PT1PYmplY3Qua2V5cyhyb2xlKS5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2Ygcm9sZS5uYW1lJiZyb2xlLm5hbWUubGVuZ3RoPDUwJiYic3RyaW5nIj09dHlwZW9mIHJvbGUudm90ZVRocmVzaG9sZCYmYXBpLkJpZ051bWJlcihyb2xlLnZvdGVUaHJlc2hvbGQpLmd0ZSgwKSYmYXBpLkJpZ051bWJlcihyb2xlLnZvdGVUaHJlc2hvbGQpLmRwKCk8PXZvdGVUb2tlbk9iai5wcmVjaXNpb24mJiJzdHJpbmciPT10eXBlb2Ygcm9sZS5tYWluU2xvdHMmJmFwaS5CaWdOdW1iZXIocm9sZS5tYWluU2xvdHMpLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKHJvbGUubWFpblNsb3RzKS5ndCgwKSYmYXBpLkJpZ051bWJlcihyb2xlLm1haW5TbG90cykubHRlKHBhcmFtcy5tYXhTbG90cykmJiJzdHJpbmciPT10eXBlb2Ygcm9sZS5iYWNrdXBTbG90cyYmYXBpLkJpZ051bWJlcihyb2xlLmJhY2t1cFNsb3RzKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihyb2xlLmJhY2t1cFNsb3RzKS5ndGUoMCkmJmFwaS5CaWdOdW1iZXIocm9sZS5iYWNrdXBTbG90cykubHRlKGFwaS5CaWdOdW1iZXIocGFyYW1zLm1heFNsb3RzKS5taW51cyhyb2xlLm1haW5TbG90cykpJiYic3RyaW5nIj09dHlwZW9mIHJvbGUudGlja0hvdXJzJiZhcGkuQmlnTnVtYmVyKHJvbGUudGlja0hvdXJzKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihyb2xlLnRpY2tIb3VycykuZ3RlKHBhcmFtcy5pbnN0YW5jZVRpY2tIb3VycykmJmFwaS5CaWdOdW1iZXIocm9sZS50aWNrSG91cnMpLm1vZChwYXJhbXMuaW5zdGFuY2VUaWNrSG91cnMpLmVxKDApLCJpbnZhbGlkIHJvbGVzIHByb3BlcnRpZXMiKSlyZXR1cm59Y29uc3QgaW5zZXJ0ZWRSb2xlcz1bXTtmb3IobGV0IGk9MDtpPHJvbGVzLmxlbmd0aDtpKz0xKXtjb25zdCBuZXdSb2xlPXtpbnN0YW5jZUlkOmV4aXN0aW5nSW5zdC5faWQsLi4ucm9sZXNbaV0sYWN0aXZlOiEwLGxhc3RUaWNrVGltZTowLHRvdGFsQXBwcm92YWxXZWlnaHQ6eyRudW1iZXJEZWNpbWFsOiIwIn19LGluc2VydGVkUm9sZT1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJyb2xlcyIsbmV3Um9sZSk7aW5zZXJ0ZWRSb2xlcy5wdXNoKHtpbnN0YW5jZUlkOmluc2VydGVkUm9sZS5pbnN0YW5jZUlkLHJvbGVJZDppbnNlcnRlZFJvbGUuX2lkLG5hbWU6aW5zZXJ0ZWRSb2xlLm5hbWV9KX1hcGkuc2VuZGVyIT09YXBpLm93bmVyJiYibnVsbCIhPT1hcGkuc2VuZGVyJiZhcGkuQmlnTnVtYmVyKHJvbGVDcmVhdGlvbkZlZSkuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OnJvbGVDcmVhdGlvbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXBpLmVtaXQoImNyZWF0ZVJvbGVzIix7cm9sZXM6aW5zZXJ0ZWRSb2xlc30pfX0sYWN0aW9ucy51cGRhdGVSb2xlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyb2xlSWQ6cm9sZUlkLGFjdGl2ZTphY3RpdmUsbmFtZTpuYW1lLHZvdGVUaHJlc2hvbGQ6dm90ZVRocmVzaG9sZCxtYWluU2xvdHM6bWFpblNsb3RzLGJhY2t1cFNsb3RzOmJhY2t1cFNsb3RzLHRpY2tIb3Vyczp0aWNrSG91cnMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtyb2xlVXBkYXRlRmVlOnJvbGVVcGRhdGVGZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZFVwZGF0ZT0hKCFhcGkuQmlnTnVtYmVyKHJvbGVVcGRhdGVGZWUpLmx0ZSgwKSYmYXBpLnNlbmRlciE9PWFwaS5vd25lcil8fHV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUocm9sZVVwZGF0ZUZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkVXBkYXRlLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHVwZGF0ZSBmZWUiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiByb2xlSWQmJmFwaS5CaWdOdW1iZXIocm9sZUlkKS5pc0ludGVnZXIoKSwiaW52YWxpZCByb2xlSWQiKSYmYXBpLmFzc2VydCh2b2lkIDAhPT1hY3RpdmV8fG5hbWV8fHZvdGVUaHJlc2hvbGR8fG1haW5TbG90c3x8YmFja3VwU2xvdHN8fHRpY2tIb3Vycywic3BlY2lmeSBhdCBsZWFzdCBvbmUgZmllbGQgdG8gdXBkYXRlIikpe2NvbnN0IGV4aXN0aW5nUm9sZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgicm9sZXMiLHtfaWQ6YXBpLkJpZ051bWJlcihyb2xlSWQpLnRvTnVtYmVyKCl9KSxleGlzdGluZ0luc3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImluc3RhbmNlcyIse19pZDpleGlzdGluZ1JvbGUuaW5zdGFuY2VJZH0pO2lmKCFhcGkuYXNzZXJ0KGV4aXN0aW5nUm9sZSwicm9sZSBub3QgZm91bmQiKXx8IWFwaS5hc3NlcnQoZXhpc3RpbmdJbnN0LCJpbnN0YW5jZSBub3QgZm91bmQiKXx8IWFwaS5hc3NlcnQoZXhpc3RpbmdJbnN0LmNyZWF0b3I9PT1hcGkuc2VuZGVyfHxhcGkub3duZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIGluc3RhbmNlIGNyZWF0b3IiKSlyZXR1cm47aWYodm9pZCAwIT09YWN0aXZlJiYoZXhpc3RpbmdSb2xlLmFjdGl2ZT0hIWFjdGl2ZSksbmFtZSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBuYW1lJiZuYW1lLmxlbmd0aDw1MCwibmFtZSBtdXN0IGJlIGEgc3RyaW5nIGxlc3MgdGhhbiA1MCBjaGFyYWN0ZXJzIikpcmV0dXJuO2V4aXN0aW5nUm9sZS5uYW1lPW5hbWV9aWYodm90ZVRocmVzaG9sZCl7Y29uc3Qgdm90ZVRva2VuT2JqPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmV4aXN0aW5nSW5zdC52b3RlVG9rZW59KTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHZvdGVUaHJlc2hvbGQmJmFwaS5CaWdOdW1iZXIodm90ZVRocmVzaG9sZCkuZ3RlKDApJiZhcGkuQmlnTnVtYmVyKHZvdGVUaHJlc2hvbGQpLmRwKCk8PXZvdGVUb2tlbk9iai5wcmVjaXNpb24sInZvdGVUaHJlc2hvbGQgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCwgcHJlY2lzaW9uIG1hdGNoaW5nIHZvdGVUb2tlbiIpKXJldHVybjtleGlzdGluZ1JvbGUudm90ZVRocmVzaG9sZD12b3RlVGhyZXNob2xkfWlmKG1haW5TbG90cyl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBtYWluU2xvdHMmJmFwaS5CaWdOdW1iZXIobWFpblNsb3RzKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihtYWluU2xvdHMpLmd0KDApJiZhcGkuQmlnTnVtYmVyKG1haW5TbG90cykubHRlKHBhcmFtcy5tYXhTbG90cyksIm1haW5TbG90cyBtdXN0IGJlIGEgaW50ZWdlciBiZXR3ZWVuIDEgLSBwYXJhbXMubWF4U2xvdHMiKSlyZXR1cm47ZXhpc3RpbmdSb2xlLm1haW5TbG90cz1tYWluU2xvdHN9aWYoYmFja3VwU2xvdHMpe2NvbnN0IHJlbWFpbmluZ1Nsb3RzPWFwaS5CaWdOdW1iZXIocGFyYW1zLm1heFNsb3RzKS5taW51cyhleGlzdGluZ1JvbGUubWFpblNsb3RzKTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGJhY2t1cFNsb3RzJiZhcGkuQmlnTnVtYmVyKGJhY2t1cFNsb3RzKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihiYWNrdXBTbG90cykuZ3RlKDApJiZhcGkuQmlnTnVtYmVyKGJhY2t1cFNsb3RzKS5sdGUocmVtYWluaW5nU2xvdHMpLCJiYWNrdXBTbG90cyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIC0gcmVtYWluaW5nU2xvdHMiKSlyZXR1cm47ZXhpc3RpbmdSb2xlLmJhY2t1cFNsb3RzPWJhY2t1cFNsb3RzfWlmKHRpY2tIb3Vycyl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiB0aWNrSG91cnMmJmFwaS5CaWdOdW1iZXIodGlja0hvdXJzKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcih0aWNrSG91cnMpLmd0ZShwYXJhbXMuaW5zdGFuY2VUaWNrSG91cnMpJiZhcGkuQmlnTnVtYmVyKHRpY2tIb3VycykubW9kKHBhcmFtcy5pbnN0YW5jZVRpY2tIb3VycykuZXEoMCksInRpY2tIb3VycyBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvLCBhbmQgYSBtdWx0aXBsZSBvZiBwYXJhbXMuaW5zdGFuY2VUaWNrSG91cnMiKSlyZXR1cm47ZXhpc3RpbmdSb2xlLnRpY2tIb3Vycz10aWNrSG91cnN9YXdhaXQgYXBpLmRiLnVwZGF0ZSgicm9sZXMiLGV4aXN0aW5nUm9sZSksYXBpLnNlbmRlciE9PWFwaS5vd25lciYmIm51bGwiIT09YXBpLnNlbmRlciYmYXBpLkJpZ051bWJlcihyb2xlVXBkYXRlRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6cm9sZVVwZGF0ZUZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXBpLmVtaXQoInVwZGF0ZVJvbGUiLHtyb2xlSWQ6ZXhpc3RpbmdSb2xlLl9pZH0pfX0sYWN0aW9ucy5zZXRJbnN0YW5jZUFjdGl2ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7aW5zdGFuY2VJZDppbnN0YW5jZUlkLGFjdGl2ZTphY3RpdmUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5Iil8fCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgaW5zdGFuY2VJZCYmYXBpLkJpZ051bWJlcihpbnN0YW5jZUlkKS5pc0ludGVnZXIoKSwiaW52YWxpZCBpbnN0YW5jZUlkIikpcmV0dXJuO2NvbnN0IGluc3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImluc3RhbmNlcyIse19pZDphcGkuQmlnTnVtYmVyKGluc3RhbmNlSWQpLnRvTnVtYmVyKCl9KTthcGkuYXNzZXJ0KGluc3QsImluc3RhbmNlIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoaW5zdC5jcmVhdG9yPT09YXBpLnNlbmRlcnx8YXBpLm93bmVyPT09YXBpLnNlbmRlciwibXVzdCBiZSBpbnN0YW5jZSBjcmVhdG9yIikmJihpbnN0LmFjdGl2ZT0hIWFjdGl2ZSxhd2FpdCBhcGkuZGIudXBkYXRlKCJpbnN0YW5jZXMiLGluc3QpLGFwaS5lbWl0KCJzZXRJbnN0YW5jZUFjdGl2ZSIse2luc3RhbmNlSWQ6aW5zdC5faWQsYWN0aXZlOmluc3QuYWN0aXZlfSkpfSxhY3Rpb25zLnNldFJvbGVBY3RpdmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3JvbGVJZDpyb2xlSWQsYWN0aXZlOmFjdGl2ZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSB0cmFuc2FjdGlvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKXx8IWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiByb2xlSWQmJmFwaS5CaWdOdW1iZXIocm9sZUlkKS5pc0ludGVnZXIoKSwiaW52YWxpZCByb2xlSWQiKSlyZXR1cm47Y29uc3QgZXhpc3RpbmdSb2xlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyb2xlcyIse19pZDphcGkuQmlnTnVtYmVyKHJvbGVJZCkudG9OdW1iZXIoKX0pLGV4aXN0aW5nSW5zdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiaW5zdGFuY2VzIix7X2lkOmV4aXN0aW5nUm9sZS5pbnN0YW5jZUlkfSk7YXBpLmFzc2VydChleGlzdGluZ1JvbGUsInJvbGUgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChleGlzdGluZ0luc3QuY3JlYXRvcj09PWFwaS5zZW5kZXJ8fGFwaS5vd25lcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgaW5zdGFuY2UgY3JlYXRvciIpJiYoZXhpc3RpbmdSb2xlLmFjdGl2ZT0hIWFjdGl2ZSxhd2FpdCBhcGkuZGIudXBkYXRlKCJyb2xlcyIsZXhpc3RpbmdSb2xlKSxhcGkuZW1pdCgic2V0Um9sZUFjdGl2ZSIse3JvbGVJZDpleGlzdGluZ1JvbGUuX2lkLGFjdGl2ZTpleGlzdGluZ1JvbGUuYWN0aXZlfSkpfSxhY3Rpb25zLmFwcGx5Rm9yUm9sZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7cm9sZUlkOnJvbGVJZCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSB0cmFuc2FjdGlvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiByb2xlSWQsImludmFsaWQgcm9sZUlkIikpcmV0dXJuO2NvbnN0IHJvbGU9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJvbGVzIix7X2lkOmFwaS5CaWdOdW1iZXIocm9sZUlkKS50b051bWJlcigpfSk7aWYoIWFwaS5hc3NlcnQocm9sZSwicm9sZSBkb2VzIG5vdCBleGlzdCIpKXJldHVybjtjb25zdCBpbnN0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJpbnN0YW5jZXMiLHtfaWQ6cm9sZS5pbnN0YW5jZUlkfSk7bGV0IGF1dGhvcml6ZWRDcmVhdGlvbj0hMDtpZihpbnN0LmNhbmRpZGF0ZUZlZSl7Y29uc3QgZmVlVG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOmluc3QuY2FuZGlkYXRlRmVlLnN5bWJvbH0pO2F1dGhvcml6ZWRDcmVhdGlvbj0hKCFhcGkuQmlnTnVtYmVyKGluc3QuY2FuZGlkYXRlRmVlLmFtb3VudCkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8ZmVlVG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKGZlZVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUoaW5zdC5jYW5kaWRhdGVGZWUuYW1vdW50KX1jb25zdCBleGlzdGluZ0FwcGx5PWF3YWl0IGFwaS5kYi5maW5kT25lKCJjYW5kaWRhdGVzIix7cm9sZUlkOnJvbGUuX2lkLGFjY291bnQ6YXBpLnNlbmRlcn0pO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGFwcGxpY2F0aW9uIGZlZSIpJiZhcGkuYXNzZXJ0KCFleGlzdGluZ0FwcGx5LCJzZW5kZXIgYWxyZWFkeSBhcHBsaWVkIGZvciByb2xlIikpe2NvbnN0IG5ld0NhbmRpZGF0ZT17cm9sZUlkOnJvbGUuX2lkLGFjY291bnQ6YXBpLnNlbmRlcixhY3RpdmU6ITAsYXBwcm92YWxXZWlnaHQ6eyRudW1iZXJEZWNpbWFsOiIwIn19LGluc2VydGVkSWQ9YXdhaXQgYXBpLmRiLmluc2VydCgiY2FuZGlkYXRlcyIsbmV3Q2FuZGlkYXRlKTtpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyJiZpbnN0LmNhbmRpZGF0ZUZlZSlpZigiYnVybiI9PT1pbnN0LmNhbmRpZGF0ZUZlZS5tZXRob2QpYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6aW5zdC5jYW5kaWRhdGVGZWUuc3ltYm9sLHF1YW50aXR5Omluc3QuY2FuZGlkYXRlRmVlLmFtb3VudH0pO2Vsc2UgaWYoImlzc3VlciI9PT1pbnN0LmNhbmRpZGF0ZUZlZS5tZXRob2Qpe2NvbnN0IGZlZVRva2VuT2JqPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmluc3QuY2FuZGlkYXRlRmVlLnN5bWJvbH0pO2F3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzpmZWVUb2tlbk9iai5pc3N1ZXIsc3ltYm9sOmluc3QuY2FuZGlkYXRlRmVlLnN5bWJvbCxxdWFudGl0eTppbnN0LmNhbmRpZGF0ZUZlZS5hbW91bnR9KX1hcGkuZW1pdCgiYXBwbHlGb3JSb2xlIix7cm9sZUlkOnJvbGUuX2lkLGNhbmRpZGF0ZUlkOmluc2VydGVkSWQuX2lkfSl9fSxhY3Rpb25zLnNldEFwcGx5QWN0aXZlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyb2xlSWQ6cm9sZUlkLGFjdGl2ZTphY3RpdmUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJiFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2Ygcm9sZUlkLCJpbnZhbGlkIHJvbGVJZCIpKXJldHVybjtjb25zdCByb2xlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyb2xlcyIse19pZDphcGkuQmlnTnVtYmVyKHJvbGVJZCkudG9OdW1iZXIoKX0pLGV4aXN0aW5nQXBwbHk9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImNhbmRpZGF0ZXMiLHtyb2xlSWQ6cm9sZS5faWQsYWNjb3VudDphcGkuc2VuZGVyfSk7YXBpLmFzc2VydChyb2xlLCJyb2xlIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoZXhpc3RpbmdBcHBseSwiY2FuZGlkYXRlIGRvZXMgbm90IGV4aXN0IGZvciBzZW5kZXIiKSYmKGV4aXN0aW5nQXBwbHkuYWN0aXZlPSEhYWN0aXZlLGF3YWl0IGFwaS5kYi51cGRhdGUoImNhbmRpZGF0ZXMiLGV4aXN0aW5nQXBwbHkpLGFwaS5lbWl0KCJzZXRBcHBseUFjdGl2ZSIse3JvbGVJZDpyb2xlLl9pZCxhY2NvdW50OmV4aXN0aW5nQXBwbHkuYWNjb3VudCxhY3RpdmU6YWN0aXZlfSkpfSxhY3Rpb25zLmRlcG9zaXQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3JvbGVJZDpyb2xlSWQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLGRlcFRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKCEoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiByb2xlSWQmJmFwaS5CaWdOdW1iZXIocm9sZUlkKS5pc0ludGVnZXIoKSwiaW52YWxpZCByb2xlSWQiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiZhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwiaW52YWxpZCBxdWFudGl0eSIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmRwKCk8PWRlcFRva2VuLnByZWNpc2lvbiwicXVhbnRpdHkgcHJlY2lzaW9uIG1pc21hdGNoIikpKXJldHVybjtjb25zdCByb2xlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyb2xlcyIse19pZDphcGkuQmlnTnVtYmVyKHJvbGVJZCkudG9OdW1iZXIoKX0pO2lmKGFwaS5hc3NlcnQocm9sZSwicm9sZSBub3QgZm91bmQiKSYmYXBpLmFzc2VydChyb2xlLmFjdGl2ZSwicm9sZSBtdXN0IGJlIGFjdGl2ZSB0byBkZXBvc2l0Iikpe2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyVG9Db250cmFjdCIse3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdG86InJvbGVzIn0pO3ZvaWQgMD09PXJlcy5lcnJvcnMmJnJlcy5ldmVudHMmJnZvaWQgMCE9PXJlcy5ldmVudHMuZmluZCgoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJiJ0cmFuc2ZlclRvQ29udHJhY3QiPT09ZWwuZXZlbnQmJmVsLmRhdGEuZnJvbT09PWFwaS5zZW5kZXImJiJyb2xlcyI9PT1lbC5kYXRhLnRvJiZlbC5kYXRhLnF1YW50aXR5PT09cXVhbnRpdHkpKSYmKGF3YWl0IHVwZGF0ZVRva2VuQmFsYW5jZXMocm9sZSxkZXBUb2tlbixxdWFudGl0eSksYXBpLmVtaXQoImRlcG9zaXQiLHtyb2xlSWQ6cm9sZUlkLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fSxhY3Rpb25zLnJlY2VpdmVEdGZUb2tlbnM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2RhdGE6ZGF0YSxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZDtpZighYXBpLmFzc2VydChjYWxsaW5nQ29udHJhY3RJbmZvJiYidG9rZW5mdW5kcyI9PT1jYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsIm5vdCBhdXRob3JpemVkIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KCJvYmplY3QiPT10eXBlb2YgZGF0YSYmIk9iamVjdCI9PT1kYXRhLmNvbnN0cnVjdG9yLm5hbWUmJiJyb2xlSWQiaW4gZGF0YSYmInN0cmluZyI9PXR5cGVvZiBkYXRhLnJvbGVJZCYmYXBpLkJpZ051bWJlcihkYXRhLnJvbGVJZCkuaXNJbnRlZ2VyKCksImludmFsaWQgaW5jb21pbmcgcGF5bG9hZCIpKXJldHVybjtjb25zdCByb2xlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyb2xlcyIse19pZDphcGkuQmlnTnVtYmVyKGRhdGEucm9sZUlkKS50b051bWJlcigpfSk7aWYoYXBpLmFzc2VydChyb2xlLCJyb2xlIG5vdCBmb3VuZCIpJiZhcGkuYXNzZXJ0KHJvbGUuYWN0aXZlLCJyb2xlIG11c3QgYmUgYWN0aXZlIHRvIGRlcG9zaXQiKSl7Y29uc3QgZGVwVG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7YXdhaXQgdXBkYXRlVG9rZW5CYWxhbmNlcyhyb2xlLGRlcFRva2VuLHF1YW50aXR5KSxhcGkuZW1pdCgicmVjZWl2ZUR0ZlRva2VucyIse3JvbGVJZDpkYXRhLnJvbGVJZCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSl9fSxhY3Rpb25zLnJlY2VpdmVEaXN0VG9rZW5zPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtkYXRhOmRhdGEsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoY2FsbGluZ0NvbnRyYWN0SW5mbyYmImRpc3RyaWJ1dGlvbiI9PT1jYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsIm5vdCBhdXRob3JpemVkIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KCJvYmplY3QiPT10eXBlb2YgZGF0YSYmIk9iamVjdCI9PT1kYXRhLmNvbnN0cnVjdG9yLm5hbWUmJiJyb2xlSWQiaW4gZGF0YSYmInN0cmluZyI9PXR5cGVvZiBkYXRhLnJvbGVJZCYmYXBpLkJpZ051bWJlcihkYXRhLnJvbGVJZCkuaXNJbnRlZ2VyKCksImludmFsaWQgaW5jb21pbmcgcGF5bG9hZCIpKXJldHVybjtjb25zdCByb2xlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyb2xlcyIse19pZDphcGkuQmlnTnVtYmVyKGRhdGEucm9sZUlkKS50b051bWJlcigpfSk7aWYoYXBpLmFzc2VydChyb2xlLCJyb2xlIG5vdCBmb3VuZCIpJiZhcGkuYXNzZXJ0KHJvbGUuYWN0aXZlLCJyb2xlIG11c3QgYmUgYWN0aXZlIHRvIGRlcG9zaXQiKSl7Y29uc3QgZGVwVG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7YXdhaXQgdXBkYXRlVG9rZW5CYWxhbmNlcyhyb2xlLGRlcFRva2VuLHF1YW50aXR5KSxhcGkuZW1pdCgicmVjZWl2ZURpc3RUb2tlbnMiLHtyb2xlSWQ6ZGF0YS5yb2xlSWQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pfX0sYWN0aW9ucy5hcHByb3ZlQ2FuZGlkYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpZDppZH09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKGFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBpZCYmYXBpLkJpZ051bWJlcihpZCkuaXNJbnRlZ2VyKCksImludmFsaWQgaWQiKSl7Y29uc3QgY2FuZGlkYXRlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJjYW5kaWRhdGVzIix7X2lkOmFwaS5CaWdOdW1iZXIoaWQpLnRvTnVtYmVyKCl9KTtpZihhcGkuYXNzZXJ0KGNhbmRpZGF0ZSwiY2FuZGlkYXRlIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY2FuZGlkYXRlLmFjdGl2ZSwiY2FuZGlkYXRlIGlzIG5vdCBhY3RpdmUiKSl7Y29uc3Qgcm9sZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgicm9sZXMiLHtfaWQ6Y2FuZGlkYXRlLnJvbGVJZH0pO2lmKCFhcGkuYXNzZXJ0KHJvbGUuYWN0aXZlLCJyb2xlIG11c3QgYmUgYWN0aXZlIHRvIGFwcHJvdmUiKSlyZXR1cm47Y29uc3QgaW5zdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiaW5zdGFuY2VzIix7X2lkOnJvbGUuaW5zdGFuY2VJZH0pLHZvdGVUb2tlbk9iaj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDppbnN0LnZvdGVUb2tlbn0pO2xldCBhY2N0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJhY2NvdW50cyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO251bGw9PT1hY2N0JiYoYWNjdD17YWNjb3VudDphcGkuc2VuZGVyLHdlaWdodHM6W119LGFjY3Q9YXdhaXQgYXBpLmRiLmluc2VydCgiYWNjb3VudHMiLGFjY3QpKTtsZXQgYWN0aXZlQXBwcm92YWxzPTA7Y29uc3QgYXBwcm92YWxzPWF3YWl0IGFwaS5kYi5maW5kKCJhcHByb3ZhbHMiLHtmcm9tOmFwaS5zZW5kZXIsY2FuZGlkYXRlUGVuZGluZzohMH0scGFyYW1zLm1heEFjY291bnRBcHByb3ZhbHMsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITB9XSk7Zm9yKGxldCBpbmRleD0wO2luZGV4PGFwcHJvdmFscy5sZW5ndGg7aW5kZXgrPTEpe2NvbnN0IGFwcHJvdmFsPWFwcHJvdmFsc1tpbmRleF0sYXBwcm92YWxDYW5kaWRhdGU9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImNhbmRpZGF0ZXMiLHtfaWQ6YXBwcm92YWwudG99KTthcHByb3ZhbENhbmRpZGF0ZSYmYXBwcm92YWxDYW5kaWRhdGUuYWN0aXZlP2FjdGl2ZUFwcHJvdmFscys9MTooYXBwcm92YWwuY2FuZGlkYXRlUGVuZGluZz0hMSxhd2FpdCBhcGkuZGIudXBkYXRlKCJhcHByb3ZhbHMiLGFwcHJvdmFsKSl9aWYoIWFwaS5hc3NlcnQoYWN0aXZlQXBwcm92YWxzPHBhcmFtcy5tYXhBY2NvdW50QXBwcm92YWxzLGB5b3UgY2FuIG9ubHkgYXBwcm92ZSAke3BhcmFtcy5tYXhBY2NvdW50QXBwcm92YWxzfSBhY3RpdmUgY2FuZGlkYXRlc2ApKXJldHVybjtsZXQgYXBwcm92YWw9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFwcHJvdmFscyIse2Zyb206YXBpLnNlbmRlcix0bzpjYW5kaWRhdGUuX2lkfSk7aWYoYXBpLmFzc2VydChudWxsPT09YXBwcm92YWwsInlvdSBhbHJlYWR5IGFwcHJvdmVkIHRoaXMgY2FuZGlkYXRlIikpe2FwcHJvdmFsPXtmcm9tOmFwaS5zZW5kZXIsdG86Y2FuZGlkYXRlLl9pZCxjYW5kaWRhdGVQZW5kaW5nOiEwfSxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJhcHByb3ZhbHMiLGFwcHJvdmFsKTtjb25zdCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOmluc3Qudm90ZVRva2VufSk7bGV0IGFwcHJvdmFsV2VpZ2h0PTA7YmFsYW5jZSYmYmFsYW5jZS5zdGFrZSYmKGFwcHJvdmFsV2VpZ2h0PWJhbGFuY2Uuc3Rha2UpLGJhbGFuY2UmJmJhbGFuY2UuZGVsZWdhdGlvbnNJbiYmKGFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIoYXBwcm92YWxXZWlnaHQpLnBsdXMoYmFsYW5jZS5kZWxlZ2F0aW9uc0luKS50b0ZpeGVkKHZvdGVUb2tlbk9iai5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKSk7Y29uc3Qgd0luZGV4PWFjY3Qud2VpZ2h0cy5maW5kSW5kZXgoKHg9Pnguc3ltYm9sPT09aW5zdC52b3RlVG9rZW4pKTstMSE9PXdJbmRleD9hY2N0LndlaWdodHNbd0luZGV4XS53ZWlnaHQ9YXBwcm92YWxXZWlnaHQ6YWNjdC53ZWlnaHRzLnB1c2goe3N5bWJvbDppbnN0LnZvdGVUb2tlbix3ZWlnaHQ6YXBwcm92YWxXZWlnaHR9KSxhd2FpdCBhcGkuZGIudXBkYXRlKCJhY2NvdW50cyIsYWNjdCksYXdhaXQgdXBkYXRlQ2FuZGlkYXRlV2VpZ2h0KGNhbmRpZGF0ZS5faWQsYXBwcm92YWxXZWlnaHQpLGFwaS5lbWl0KCJhcHByb3ZlQ2FuZGlkYXRlIix7aWQ6Y2FuZGlkYXRlLl9pZH0pfX19fSxhY3Rpb25zLmRpc2FwcHJvdmVDYW5kaWRhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lkOmlkfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBpZCYmYXBpLkJpZ051bWJlcihpZCkuaXNJbnRlZ2VyKCksImludmFsaWQgaWQiKSl7Y29uc3QgY2FuZGlkYXRlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJjYW5kaWRhdGVzIix7X2lkOmFwaS5CaWdOdW1iZXIoaWQpLnRvTnVtYmVyKCl9KTtpZihhcGkuYXNzZXJ0KGNhbmRpZGF0ZSwiY2FuZGlkYXRlIGRvZXMgbm90IGV4aXN0Iikpe2NvbnN0IGluc3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImluc3RhbmNlcyIse2lkOmNhbmRpZGF0ZS5pbnN0YW5jZUlkfSksdm90ZVRva2VuT2JqPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmluc3Qudm90ZVRva2VufSk7bGV0IGFjY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7bnVsbD09PWFjY3QmJihhY2N0PXthY2NvdW50OmFwaS5zZW5kZXIsd2VpZ2h0czpbXX0sYWNjdD1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJhY2NvdW50cyIsYWNjdCkpO2NvbnN0IGFwcHJvdmFsPWF3YWl0IGFwaS5kYi5maW5kT25lKCJhcHByb3ZhbHMiLHtmcm9tOmFwaS5zZW5kZXIsdG86Y2FuZGlkYXRlLl9pZH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWFwcHJvdmFsLCJ5b3UgaGF2ZSBub3QgYXBwcm92ZWQgdGhpcyBjYW5kaWRhdGUiKSl7YXdhaXQgYXBpLmRiLnJlbW92ZSgiYXBwcm92YWxzIixhcHByb3ZhbCk7Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDppbnN0LnZvdGVUb2tlbn0pO2xldCBhcHByb3ZhbFdlaWdodD0wO2JhbGFuY2UmJmJhbGFuY2Uuc3Rha2UmJihhcHByb3ZhbFdlaWdodD1iYWxhbmNlLnN0YWtlKSxiYWxhbmNlJiZiYWxhbmNlLmRlbGVnYXRpb25zSW4mJihhcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5wbHVzKGJhbGFuY2UuZGVsZWdhdGlvbnNJbikudG9GaXhlZCh2b3RlVG9rZW5PYmoucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCkpO2NvbnN0IHdJbmRleD1hY2N0LndlaWdodHMuZmluZEluZGV4KCh4PT54LnN5bWJvbD09PWluc3Qudm90ZVRva2VuKSk7LTEhPT13SW5kZXg/YWNjdC53ZWlnaHRzW3dJbmRleF0ud2VpZ2h0PWFwcHJvdmFsV2VpZ2h0OmFjY3Qud2VpZ2h0cy5wdXNoKHtzeW1ib2w6aW5zdC52b3RlVG9rZW4sd2VpZ2h0OmFwcHJvdmFsV2VpZ2h0fSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYWNjb3VudHMiLGFjY3QpLGF3YWl0IHVwZGF0ZUNhbmRpZGF0ZVdlaWdodChjYW5kaWRhdGUuX2lkLGFwaS5CaWdOdW1iZXIoYXBwcm92YWxXZWlnaHQpLm5lZ2F0ZWQoKSksYXBpLmVtaXQoImRpc2FwcHJvdmVDYW5kaWRhdGUiLHtpZDpjYW5kaWRhdGUuX2lkfSl9fX19LGFjdGlvbnMudXBkYXRlQ2FuZGlkYXRlQXBwcm92YWxzPWFzeW5jIHBheWxvYWQ9Pntjb25zdHthY2NvdW50OmFjY291bnQsdG9rZW46dG9rZW4sY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2lmKHZvaWQgMD09PWNhbGxpbmdDb250cmFjdEluZm8pcmV0dXJuO2lmKCJ0b2tlbnMiIT09Y2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lKXJldHVybjtjb25zdCBhY2N0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJhY2NvdW50cyIse2FjY291bnQ6YWNjb3VudH0pO2lmKG51bGwhPT1hY2N0KXtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHdJbmRleD1hY2N0LndlaWdodHMuZmluZEluZGV4KCh4PT54LnN5bWJvbD09PXRva2VuLnN5bWJvbCkpO2lmKC0xIT09d0luZGV4KXtjb25zdCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnRva2VuLnN5bWJvbH0pO2xldCBhcHByb3ZhbFdlaWdodD0wO2JhbGFuY2UmJmJhbGFuY2Uuc3Rha2UmJihhcHByb3ZhbFdlaWdodD1iYWxhbmNlLnN0YWtlKSxiYWxhbmNlJiZiYWxhbmNlLmRlbGVnYXRpb25zSW4mJihhcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5wbHVzKGJhbGFuY2UuZGVsZWdhdGlvbnNJbikudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKSk7bGV0IG9sZEFwcHJvdmFsV2VpZ2h0PTA7b2xkQXBwcm92YWxXZWlnaHQ9YWNjdC53ZWlnaHRzW3dJbmRleF0ud2VpZ2h0LGFjY3Qud2VpZ2h0c1t3SW5kZXhdLndlaWdodD1hcHByb3ZhbFdlaWdodDtjb25zdCBkZWx0YUFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIoYXBwcm92YWxXZWlnaHQpLm1pbnVzKG9sZEFwcHJvdmFsV2VpZ2h0KS5kcCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKTtpZighYXBpLkJpZ051bWJlcihkZWx0YUFwcHJvdmFsV2VpZ2h0KS5lcSgwKSl7YXdhaXQgYXBpLmRiLnVwZGF0ZSgiYWNjb3VudHMiLGFjY3QpO2NvbnN0IGFwcHJvdmFscz1hd2FpdCBhcGkuZGIuZmluZCgiYXBwcm92YWxzIix7ZnJvbTphY2NvdW50LGNhbmRpZGF0ZVBlbmRpbmc6ITB9LHBhcmFtcy5tYXhBY2NvdW50QXBwcm92YWxzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiEwfV0pO2ZvcihsZXQgaW5kZXg9MDtpbmRleDxhcHByb3ZhbHMubGVuZ3RoO2luZGV4Kz0xKXtjb25zdCBhcHByb3ZhbD1hcHByb3ZhbHNbaW5kZXhdO2F3YWl0IHVwZGF0ZUNhbmRpZGF0ZVdlaWdodChhcHByb3ZhbC50byxkZWx0YUFwcHJvdmFsV2VpZ2h0LHRva2VuKXx8KGFwcHJvdmFsLmNhbmRpZGF0ZVBlbmRpbmc9ITEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYXBwcm92YWxzIixhcHByb3ZhbCkpfX19fX0sYWN0aW9ucy5jaGVja1BlbmRpbmdJbnN0YW5jZXM9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxibG9ja0RhdGU9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApLHRpY2tUaW1lPWFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkubWludXMoMzYwMCpwYXJhbXMuaW5zdGFuY2VUaWNrSG91cnMqMWUzKS50b051bWJlcigpLHBlbmRpbmdJbnN0PWF3YWl0IGFwaS5kYi5maW5kKCJpbnN0YW5jZXMiLHthY3RpdmU6ITAsbGFzdFRpY2tUaW1lOnskbHRlOnRpY2tUaW1lfX0scGFyYW1zLm1heEluc3RhbmNlc1BlckJsb2NrLDAsW3tpbmRleDoibGFzdFRpY2tUaW1lIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGk9MDtpPHBlbmRpbmdJbnN0Lmxlbmd0aDtpKz0xKWF3YWl0IGNoZWNrUGVuZGluZ0NhbmRpZGF0ZXMocGVuZGluZ0luc3RbaV0scGFyYW1zKX19Ow==" } }}