Witnesses Smart Contract

in #hive-engine2 months ago

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"witnesses","params":"","code":"Y29uc3QgTkJfQVBQUk9WQUxTX0FMTE9XRUQ9MzAsTkJfVE9QX1dJVE5FU1NFUz0yMCxOQl9CQUNLVVBfV0lUTkVTU0VTPTEsTkJfV0lUTkVTU0VTPTIxLE5CX1dJVE5FU1NFU19TSUdOQVRVUkVTX1JFUVVJUkVEPTE0LE1BWF9ST1VORFNfTUlTU0VEX0lOX0FfUk9XPTMsTUFYX1JPVU5EX1BST1BPU0lUSU9OX1dBSVRJTkdfUEVSSU9EPTQwLE5CX1RPS0VOU19UT19SRVdBUkQ9IjAuMDE5MDI1ODYiLE5CX1RPS0VOU19ORUVERURfQkVGT1JFX1JFV0FSRElORz0iMC4wOTUxMjkzIixXSVRORVNTX0FQUFJPVkVfRVhQSVJFX0JMT0NLUz01MTg0ZTMsV0lUTkVTU19NQVhfQUNDT1VOVF9FWFBJUkVfUEVSX0JMT0NLPTEwLFVUSUxJVFlfVE9LRU5fU1lNQk9MPSJCRUUiLEdPVkVSTkFOQ0VfVE9LRU5fU1lNQk9MPSJXT1JLRVJCRUUiLEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OPTUsR09WRVJOQU5DRV9UT0tFTl9NSU5fVkFMVUU9IjAuMDAwMDEiO2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygid2l0bmVzc2VzIikpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgid2l0bmVzc2VzIixbImFwcHJvdmFsV2VpZ2h0Il0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYXBwcm92YWxzIixbImZyb20iLCJ0byJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImFjY291bnRzIixbImFjY291bnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJzY2hlZHVsZXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2NvbnN0IHBhcmFtcz17dG90YWxBcHByb3ZhbFdlaWdodDoiMCIsbnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3NlczowLGxhc3RWZXJpZmllZEJsb2NrTnVtYmVyOjAscm91bmQ6MCxsYXN0QmxvY2tSb3VuZDowLGN1cnJlbnRXaXRuZXNzOm51bGwsYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlOjAsbGFzdFdpdG5lc3NlczpbXSxudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQ6MzAsbnVtYmVyT2ZUb3BXaXRuZXNzZXM6MjAsbnVtYmVyT2ZXaXRuZXNzU2xvdHM6MjEsd2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZDoxNCxtYXhSb3VuZHNNaXNzZWRJbkFSb3c6MyxtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZDo0MCx3aXRuZXNzQXBwcm92ZUV4cGlyZUJsb2Nrczo1MTg0ZTN9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX1lbHNle2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYoIXBhcmFtcy53aXRuZXNzQXBwcm92ZUV4cGlyZUJsb2Nrcyl7bGV0IGFjY291bnRzLG9mZnNldD0wO2Rve2FjY291bnRzPWF3YWl0IGFwaS5kYi5maW5kKCJhY2NvdW50cyIse30sMWUzLG9mZnNldCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTxhY2NvdW50cy5sZW5ndGg7aSs9MSl7Y29uc3QgYWNjb3VudD1hY2NvdW50c1tpXTthY2NvdW50Lmxhc3RBcHByb3ZlQmxvY2s9YXBpLmJsb2NrTnVtYmVyLGF3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixhY2NvdW50KX1vZmZzZXQrPTFlM313aGlsZSgxZTM9PT1hY2NvdW50cy5sZW5ndGgpO3BhcmFtcy53aXRuZXNzQXBwcm92ZUV4cGlyZUJsb2Nrcz01MTg0ZTMsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfX19LGFjdGlvbnMucmVzZXRTY2hlZHVsZT1hc3luYygpPT57aWYoYXBpLnNlbmRlciE9PWFwaS5vd25lcilyZXR1cm47Y29uc3Qgc2NoZWR1bGVzPWF3YWl0IGFwaS5kYi5maW5kKCJzY2hlZHVsZXMiLHt9KTtmb3IobGV0IGluZGV4PTA7aW5kZXg8c2NoZWR1bGVzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3Qgc2NoZWR1bGU9c2NoZWR1bGVzW2luZGV4XTthd2FpdCBhcGkuZGIucmVtb3ZlKCJzY2hlZHVsZXMiLHNjaGVkdWxlKX1jb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO3BhcmFtcy5jdXJyZW50V2l0bmVzcz1udWxsLHBhcmFtcy5ibG9ja051bWJlcldpdG5lc3NDaGFuZ2U9MCxwYXJhbXMubGFzdFdpdG5lc3Nlcz1bXSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQ6bnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50LG51bWJlck9mVG9wV2l0bmVzc2VzOm51bWJlck9mVG9wV2l0bmVzc2VzLG51bWJlck9mV2l0bmVzc1Nsb3RzOm51bWJlck9mV2l0bmVzc1Nsb3RzLHdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQ6d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCxtYXhSb3VuZHNNaXNzZWRJbkFSb3c6bWF4Um91bmRzTWlzc2VkSW5BUm93LG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kOm1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLHdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzOndpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzfT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7bGV0IHNob3VsZFJlc2V0U2NoZWR1bGU9ITE7bnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50JiZOdW1iZXIuaXNJbnRlZ2VyKG51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudCkmJihwYXJhbXMubnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50PW51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudCksbnVtYmVyT2ZUb3BXaXRuZXNzZXMmJk51bWJlci5pc0ludGVnZXIobnVtYmVyT2ZUb3BXaXRuZXNzZXMpJiYocGFyYW1zLm51bWJlck9mVG9wV2l0bmVzc2VzPW51bWJlck9mVG9wV2l0bmVzc2VzKSxudW1iZXJPZldpdG5lc3NTbG90cyYmTnVtYmVyLmlzSW50ZWdlcihudW1iZXJPZldpdG5lc3NTbG90cykmJnBhcmFtcy5udW1iZXJPZldpdG5lc3NTbG90cyE9PW51bWJlck9mV2l0bmVzc1Nsb3RzJiYoc2hvdWxkUmVzZXRTY2hlZHVsZT0hMCxwYXJhbXMubnVtYmVyT2ZXaXRuZXNzU2xvdHM9bnVtYmVyT2ZXaXRuZXNzU2xvdHMpLHdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQmJk51bWJlci5pc0ludGVnZXIod2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCkmJihwYXJhbXMud2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZD13aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkKSxtYXhSb3VuZHNNaXNzZWRJbkFSb3cmJk51bWJlci5pc0ludGVnZXIobWF4Um91bmRzTWlzc2VkSW5BUm93KSYmKHBhcmFtcy5tYXhSb3VuZHNNaXNzZWRJbkFSb3c9bWF4Um91bmRzTWlzc2VkSW5BUm93KSxtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCYmTnVtYmVyLmlzSW50ZWdlcihtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCkmJihwYXJhbXMubWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q9bWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QpLGFwaS5hc3NlcnQocGFyYW1zLm51bWJlck9mVG9wV2l0bmVzc2VzKzE9PT1wYXJhbXMubnVtYmVyT2ZXaXRuZXNzU2xvdHMsIm9ubHkgMSBiYWNrdXAgYWxsb3dlZCIpJiYod2l0bmVzc0FwcHJvdmVFeHBpcmVCbG9ja3MmJk51bWJlci5pc0ludGVnZXIod2l0bmVzc0FwcHJvdmVFeHBpcmVCbG9ja3MpJiZhcGkuYXNzZXJ0KHdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzPnBhcmFtcy5udW1iZXJPZldpdG5lc3NTbG90cywid2l0bmVzc0FwcHJvdmVFeHBpcmVCbG9ja3Mgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBudW1iZXJPZldpdG5lc3NTbG90cyIpJiYocGFyYW1zLndpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzPXdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyksc2hvdWxkUmVzZXRTY2hlZHVsZSYmYXdhaXQgYWN0aW9ucy5yZXNldFNjaGVkdWxlKCkpfTtjb25zdCB1cGRhdGVXaXRuZXNzUmFuaz1hc3luYyh3aXRuZXNzLGFwcHJvdmFsV2VpZ2h0KT0+e2NvbnN0IHdpdG5lc3NSZWM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6d2l0bmVzc30pO2lmKHdpdG5lc3NSZWMpe2NvbnN0IG9sZEFwcHJvdmFsV2VpZ2h0PXdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWw7d2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbD1hcGkuQmlnTnVtYmVyKHdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnBsdXMoYXBwcm92YWxXZWlnaHQpLnRvRml4ZWQoNSksYXBpLkJpZ051bWJlcih3aXRuZXNzUmVjLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS5sdCgwKSYmKHdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWw9YXBpLkJpZ051bWJlcigwKSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIix3aXRuZXNzUmVjKTtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO3BhcmFtcy50b3RhbEFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIocGFyYW1zLnRvdGFsQXBwcm92YWxXZWlnaHQpLnBsdXMoYXBwcm92YWxXZWlnaHQpLnRvRml4ZWQoNSksYXBpLkJpZ051bWJlcihvbGRBcHByb3ZhbFdlaWdodCkuZXEoMCkmJmFwaS5CaWdOdW1iZXIod2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkuZ3QoMCk/cGFyYW1zLm51bWJlck9mQXBwcm92ZWRXaXRuZXNzZXMrPTE6YXBpLkJpZ051bWJlcihvbGRBcHByb3ZhbFdlaWdodCkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIod2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkuZXEoMCkmJihwYXJhbXMubnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3Nlcy09MSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfX07YWN0aW9ucy51cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQ7aWYodm9pZCAwPT09Y2FsbGluZ0NvbnRyYWN0SW5mbylyZXR1cm47aWYoInRva2VucyIhPT1jYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUpcmV0dXJuO2NvbnN0IGFjY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDphY2NvdW50fSk7aWYobnVsbCE9PWFjY3Qpe2NvbnN0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6IldPUktFUkJFRSJ9KTtsZXQgYXBwcm92YWxXZWlnaHQ9MDtiYWxhbmNlJiZiYWxhbmNlLnN0YWtlJiYoYXBwcm92YWxXZWlnaHQ9YmFsYW5jZS5zdGFrZSksYmFsYW5jZSYmYmFsYW5jZS5kZWxlZ2F0aW9uc0luJiYoYXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihhcHByb3ZhbFdlaWdodCkucGx1cyhiYWxhbmNlLmRlbGVnYXRpb25zSW4pLnRvRml4ZWQoNSkpO2NvbnN0IG9sZEFwcHJvdmFsV2VpZ2h0PWFjY3QuYXBwcm92YWxXZWlnaHQsZGVsdGFBcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5taW51cyhvbGRBcHByb3ZhbFdlaWdodCkudG9GaXhlZCg1KTtpZihhY2N0LmFwcHJvdmFsV2VpZ2h0PWFwcHJvdmFsV2VpZ2h0LCFhcGkuQmlnTnVtYmVyKGRlbHRhQXBwcm92YWxXZWlnaHQpLmVxKDApKXthd2FpdCBhcGkuZGIudXBkYXRlKCJhY2NvdW50cyIsYWNjdCk7Y29uc3QgYXBwcm92YWxzPWF3YWl0IGFwaS5kYi5maW5kKCJhcHByb3ZhbHMiLHtmcm9tOmFjY291bnR9KTtmb3IobGV0IGluZGV4PTA7aW5kZXg8YXBwcm92YWxzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3QgYXBwcm92YWw9YXBwcm92YWxzW2luZGV4XTthd2FpdCB1cGRhdGVXaXRuZXNzUmFuayhhcHByb3ZhbC50byxkZWx0YUFwcHJvdmFsV2VpZ2h0KX19fX0sYWN0aW9ucy5yZWdpc3Rlcj1hc3luYyBwYXlsb2FkPT57Y29uc3R7ZG9tYWluOmRvbWFpbixJUDpJUCxSUENQb3J0OlJQQ1BvcnQsUDJQUG9ydDpQMlBQb3J0LHNpZ25pbmdLZXk6c2lnbmluZ0tleSxlbmFibGVkOmVuYWJsZWQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJhY3RpdmUga2V5IHJlcXVpcmVkIikmJmFwaS5hc3NlcnQoZG9tYWlufHxJUCwibmVpdGhlciBkb21haW4gbm9yIGlwIHByb3ZpZGVkIikmJmFwaS5hc3NlcnQoIShkb21haW4mJklQKSwiYm90aCBkb21haW4gYW5kIGlwIHByb3ZpZGVkIikmJihkb21haW4mJmFwaS5hc3NlcnQoZG9tYWluJiYic3RyaW5nIj09dHlwZW9mIGRvbWFpbiYmYXBpLnZhbGlkYXRvci5pc0ZRRE4oZG9tYWluKSwiZG9tYWluIGlzIGludmFsaWQiKXx8SVAmJmFwaS5hc3NlcnQoSVAmJiJzdHJpbmciPT10eXBlb2YgSVAmJmFwaS52YWxpZGF0b3IuaXNJUChJUCksIklQIGlzIGludmFsaWQiKSkmJmFwaS5hc3NlcnQoUlBDUG9ydCYmTnVtYmVyLmlzSW50ZWdlcihSUENQb3J0KSYmUlBDUG9ydD49MCYmUlBDUG9ydDw9NjU1MzUsIlJQQ1BvcnQgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgNjU1MzUiKSYmYXBpLmFzc2VydChQMlBQb3J0JiZOdW1iZXIuaXNJbnRlZ2VyKFAyUFBvcnQpJiZQMlBQb3J0Pj0wJiZQMlBQb3J0PD02NTUzNSwiUDJQUG9ydCBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA2NTUzNSIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoc2lnbmluZ0tleSkmJjUzPT09c2lnbmluZ0tleS5sZW5ndGgsImludmFsaWQgc2lnbmluZyBrZXkiKSYmYXBpLmFzc2VydCgiYm9vbGVhbiI9PXR5cGVvZiBlbmFibGVkLCJlbmFibGVkIG11c3QgYmUgYSBib29sZWFuIikpe2xldCB3aXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHtzaWduaW5nS2V5OnNpZ25pbmdLZXl9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT13aXRuZXNzfHx3aXRuZXNzLmFjY291bnQ9PT1hcGkuc2VuZGVyLCJhIHdpdG5lc3MgaXMgYWxyZWFkeSB1c2luZyB0aGlzIHNpZ25pbmcga2V5IikmJih3aXRuZXNzPUlQP2F3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHtJUDpJUCxQMlBQb3J0OlAyUFBvcnR9KTphd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7ZG9tYWluOmRvbWFpbixQMlBQb3J0OlAyUFBvcnR9KSxhcGkuYXNzZXJ0KG51bGw9PT13aXRuZXNzfHx3aXRuZXNzLmFjY291bnQ9PT1hcGkuc2VuZGVyLGBhIHdpdG5lc3MgaXMgYWxyZWFkeSB1c2luZyB0aGlzICR7SVA/IklQIjoiZG9tYWluIn0vUG9ydGApKSlpZih3aXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KSx3aXRuZXNzKXtsZXQgdXNlVW5zZXRzPSExLHVuc2V0cz17fTtJUD8od2l0bmVzcy5JUD1JUCx3aXRuZXNzLmRvbWFpbiYmKGRlbGV0ZSB3aXRuZXNzLmRvbWFpbix1bnNldHMuZG9tYWluPSIiLHVzZVVuc2V0cz0hMCkpOih3aXRuZXNzLmRvbWFpbj1kb21haW4sd2l0bmVzcy5JUCYmKGRlbGV0ZSB3aXRuZXNzLklQLHVuc2V0cy5JUD0iIix1c2VVbnNldHM9ITApKSx3aXRuZXNzLlJQQ1BvcnQ9UlBDUG9ydCx3aXRuZXNzLlAyUFBvcnQ9UDJQUG9ydCx3aXRuZXNzLnNpZ25pbmdLZXk9c2lnbmluZ0tleSx3aXRuZXNzLmVuYWJsZWQ9ZW5hYmxlZCx1c2VVbnNldHM/YXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIix3aXRuZXNzLHVuc2V0cyk6YXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIix3aXRuZXNzKX1lbHNlIHdpdG5lc3M9e2FjY291bnQ6YXBpLnNlbmRlcixhcHByb3ZhbFdlaWdodDp7JG51bWJlckRlY2ltYWw6IjAifSxzaWduaW5nS2V5OnNpZ25pbmdLZXksUlBDUG9ydDpSUENQb3J0LFAyUFBvcnQ6UDJQUG9ydCxlbmFibGVkOmVuYWJsZWQsbWlzc2VkUm91bmRzOjAsbWlzc2VkUm91bmRzSW5BUm93OjAsdmVyaWZpZWRSb3VuZHM6MCxsYXN0Um91bmRWZXJpZmllZDpudWxsLGxhc3RCbG9ja1ZlcmlmaWVkOm51bGx9LElQP3dpdG5lc3MuSVA9SVA6d2l0bmVzcy5kb21haW49ZG9tYWluLGF3YWl0IGFwaS5kYi5pbnNlcnQoIndpdG5lc3NlcyIsd2l0bmVzcyl9fTtjb25zdCByZW1vdmVBcHByb3ZhbD1hc3luYyhhcHByb3ZhbCxhY2N0LGJsbmNlLG1hbnVhbD0hMCk9PntpZihhcGkuYXNzZXJ0KG51bGwhPT1hcHByb3ZhbCwieW91IGhhdmUgbm90IGFwcHJvdmVkIHRoaXMgd2l0bmVzcyIpKXtjb25zdHtmcm9tOmZyb20sdG86dG99PWFwcHJvdmFsO2xldCBhY2NvdW50PWFjY3Q7YWNjdCYmYWNjdC5hY2NvdW50PT09ZnJvbXx8KGFjY291bnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDpmcm9tfSkpLGF3YWl0IGFwaS5kYi5yZW1vdmUoImFwcHJvdmFscyIsYXBwcm92YWwpO2xldCBiYWxhbmNlPWJsbmNlO2JhbGFuY2V8fChiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmZyb20sc3ltYm9sOiJXT1JLRVJCRUUifSkpO2xldCBhcHByb3ZhbFdlaWdodD0wO2JhbGFuY2UmJmJhbGFuY2Uuc3Rha2UmJihhcHByb3ZhbFdlaWdodD1iYWxhbmNlLnN0YWtlKSxiYWxhbmNlJiZiYWxhbmNlLmRlbGVnYXRpb25zSW4mJihhcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5wbHVzKGJhbGFuY2UuZGVsZWdhdGlvbnNJbikudG9GaXhlZCg1KSksbWFudWFsJiYoYWNjb3VudC5hcHByb3ZhbHMtPTEsYWNjb3VudC5hcHByb3ZhbFdlaWdodD1hcHByb3ZhbFdlaWdodCxhY2NvdW50Lmxhc3RBcHByb3ZlQmxvY2s9YXBpLmJsb2NrTnVtYmVyLGF3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixhY2NvdW50KSksYXdhaXQgdXBkYXRlV2l0bmVzc1JhbmsodG8sIi0iK2FwcHJvdmFsV2VpZ2h0KSxhcGkuZW1pdCgid2l0bmVzc0FwcHJvdmFsUmVtb3ZlZCIse2FjY291bnQ6ZnJvbSx0bzp0byxhcHByb3ZhbFdlaWdodDphcHByb3ZhbFdlaWdodH0pfX07YWN0aW9ucy5hcHByb3ZlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt3aXRuZXNzOndpdG5lc3N9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihhcGkuYXNzZXJ0KHdpdG5lc3MmJiJzdHJpbmciPT10eXBlb2Ygd2l0bmVzcyYmd2l0bmVzcy5sZW5ndGg+PTMmJndpdG5lc3MubGVuZ3RoPD0xNiwiaW52YWxpZCB3aXRuZXNzIGFjY291bnQiKSl7Y29uc3Qgd2l0bmVzc1JlYz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDp3aXRuZXNzfSk7aWYoYXBpLmFzc2VydCh3aXRuZXNzUmVjLCJ3aXRuZXNzIGRvZXMgbm90IGV4aXN0Iikpe2xldCBhY2N0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJhY2NvdW50cyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKG51bGw9PT1hY2N0JiYoYWNjdD17YWNjb3VudDphcGkuc2VuZGVyLGFwcHJvdmFsczowLGFwcHJvdmFsV2VpZ2h0OnskbnVtYmVyRGVjaW1hbDoiMCJ9LGxhc3RBcHByb3ZlQmxvY2s6YXBpLmJsb2NrTnVtYmVyfSxhY2N0PWF3YWl0IGFwaS5kYi5pbnNlcnQoImFjY291bnRzIixhY2N0KSksYXBpLmFzc2VydChhY2N0LmFwcHJvdmFsczxwYXJhbXMubnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50LGB5b3UgY2FuIG9ubHkgYXBwcm92ZSAke3BhcmFtcy5udW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnR9IHdpdG5lc3Nlc2ApKXtsZXQgYXBwcm92YWw9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFwcHJvdmFscyIse2Zyb206YXBpLnNlbmRlcix0bzp3aXRuZXNzfSk7aWYoYXBpLmFzc2VydChudWxsPT09YXBwcm92YWwsInlvdSBhbHJlYWR5IGFwcHJvdmVkIHRoaXMgd2l0bmVzcyIpKXthcHByb3ZhbD17ZnJvbTphcGkuc2VuZGVyLHRvOndpdG5lc3N9LGF3YWl0IGFwaS5kYi5pbnNlcnQoImFwcHJvdmFscyIsYXBwcm92YWwpO2NvbnN0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IldPUktFUkJFRSJ9KTtsZXQgYXBwcm92YWxXZWlnaHQ9MDtiYWxhbmNlJiZiYWxhbmNlLnN0YWtlJiYoYXBwcm92YWxXZWlnaHQ9YmFsYW5jZS5zdGFrZSksYmFsYW5jZSYmYmFsYW5jZS5kZWxlZ2F0aW9uc0luJiYoYXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihhcHByb3ZhbFdlaWdodCkucGx1cyhiYWxhbmNlLmRlbGVnYXRpb25zSW4pLnRvRml4ZWQoNSkpLGFjY3QuYXBwcm92YWxzKz0xLGFjY3QuYXBwcm92YWxXZWlnaHQ9YXBwcm92YWxXZWlnaHQsYWNjdC5sYXN0QXBwcm92ZUJsb2NrPWFwaS5ibG9ja051bWJlcixhd2FpdCBhcGkuZGIudXBkYXRlKCJhY2NvdW50cyIsYWNjdCksYXdhaXQgdXBkYXRlV2l0bmVzc1Jhbmsod2l0bmVzcyxhcHByb3ZhbFdlaWdodCksYXBpLmVtaXQoIndpdG5lc3NBcHByb3ZhbEFkZGVkIix7YWNjb3VudDphcGkuc2VuZGVyLHRvOndpdG5lc3MsYXBwcm92YWxXZWlnaHQ6YXBwcm92YWxXZWlnaHR9KX19fX19LGFjdGlvbnMuZGlzYXBwcm92ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7d2l0bmVzczp3aXRuZXNzfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQod2l0bmVzcyYmInN0cmluZyI9PXR5cGVvZiB3aXRuZXNzJiZ3aXRuZXNzLmxlbmd0aD49MyYmd2l0bmVzcy5sZW5ndGg8PTE2LCJpbnZhbGlkIHdpdG5lc3MgYWNjb3VudCIpKXtjb25zdCB3aXRuZXNzUmVjPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OndpdG5lc3N9KTtpZihhcGkuYXNzZXJ0KHdpdG5lc3NSZWMsIndpdG5lc3MgZG9lcyBub3QgZXhpc3QiKSl7bGV0IGFjY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYobnVsbD09PWFjY3QmJihhY2N0PXthY2NvdW50OmFwaS5zZW5kZXIsYXBwcm92YWxzOjAsYXBwcm92YWxXZWlnaHQ6eyRudW1iZXJEZWNpbWFsOiIwIn0sbGFzdEFwcHJvdmVCbG9jazphcGkuYmxvY2tOdW1iZXJ9LGF3YWl0IGFwaS5kYi5pbnNlcnQoImFjY291bnRzIixhY2N0KSksYXBpLmFzc2VydChhY2N0LmFwcHJvdmFscz4wLCJubyBhcHByb3ZhbHMgZm91bmQiKSl7Y29uc3QgYXBwcm92YWw9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFwcHJvdmFscyIse2Zyb206YWNjdC5hY2NvdW50LHRvOndpdG5lc3N9KSxiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJXT1JLRVJCRUUifSk7YXdhaXQgcmVtb3ZlQXBwcm92YWwoYXBwcm92YWwsYWNjdCxiYWxhbmNlLCEwKX19fX07Y29uc3QgZXhwaXJlQWxsVXNlckFwcHJvdmFscz1hc3luYyBhY2N0PT57Y29uc3QgYXBwcm92YWxzPWF3YWl0IGFwaS5kYi5maW5kKCJhcHByb3ZhbHMiLHtmcm9tOmFjY3QuYWNjb3VudH0pLGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YWNjdC5hY2NvdW50LHN5bWJvbDoiV09SS0VSQkVFIn0pO2ZvcihsZXQgaT0wO2k8YXBwcm92YWxzLmxlbmd0aDtpKz0xKXtjb25zdCBhcHByb3ZhbD1hcHByb3ZhbHNbaV07YXdhaXQgcmVtb3ZlQXBwcm92YWwoYXBwcm92YWwsYWNjdCxiYWxhbmNlLCExKX1sZXQgYXBwcm92YWxXZWlnaHQ9MDtiYWxhbmNlJiZiYWxhbmNlLnN0YWtlJiYoYXBwcm92YWxXZWlnaHQ9YmFsYW5jZS5zdGFrZSksYmFsYW5jZSYmYmFsYW5jZS5kZWxlZ2F0aW9uc0luJiYoYXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihhcHByb3ZhbFdlaWdodCkucGx1cyhiYWxhbmNlLmRlbGVnYXRpb25zSW4pLnRvRml4ZWQoNSkpO2NvbnN0IGFjY291bnQ9YWNjdDthY2NvdW50LmFwcHJvdmFscz0wLGFjY291bnQuYXBwcm92YWxXZWlnaHQ9YXBwcm92YWxXZWlnaHQsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYWNjb3VudHMiLGFjY291bnQpLGFwaS5lbWl0KCJ3aXRuZXNzQXBwcm92YWxzRXhwaXJlZCIse2FjY291bnQ6YWNjdC5hY2NvdW50fSl9LGZpbmRBbmRFeHBpcmVBcHByb3ZhbHM9YXN5bmMgd2l0bmVzc0FwcHJvdmVFeHBpcmVCbG9ja3M9Pntjb25zdCBhY2NvdW50cz1hd2FpdCBhcGkuZGIuZmluZCgiYWNjb3VudHMiLHtsYXN0QXBwcm92ZUJsb2NrOnskbHQ6YXBpLmJsb2NrTnVtYmVyLXdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzfSxhcHByb3ZhbHM6eyRndDowfX0sMTAsMCxbe2luZGV4OiJsYXN0QXBwcm92ZUJsb2NrIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8YWNjb3VudHMubGVuZ3RoO2krPTEpYXdhaXQgZXhwaXJlQWxsVXNlckFwcHJvdmFscyhhY2NvdW50c1tpXSl9LGNoYW5nZUN1cnJlbnRXaXRuZXNzPWFzeW5jKCk9Pntjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtjdXJyZW50V2l0bmVzczpjdXJyZW50V2l0bmVzcyx0b3RhbEFwcHJvdmFsV2VpZ2h0OnRvdGFsQXBwcm92YWxXZWlnaHQsbGFzdFdpdG5lc3NlczpsYXN0V2l0bmVzc2VzLGxhc3RCbG9ja1JvdW5kOmxhc3RCbG9ja1JvdW5kLHJvdW5kOnJvdW5kLG1heFJvdW5kc01pc3NlZEluQVJvdzptYXhSb3VuZHNNaXNzZWRJbkFSb3csbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6bWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2R9PXBhcmFtcztsZXQgd2l0bmVzc0ZvdW5kPSExO2NvbnN0IHJhbmRvbT1hcGkucmFuZG9tKCkscmFuZG9tV2VpZ2h0PWFwaS5CaWdOdW1iZXIodG90YWxBcHByb3ZhbFdlaWdodCkudGltZXMocmFuZG9tKS50b0ZpeGVkKDUsMSk7bGV0IG9mZnNldD0wLGFjY1dlaWdodD0wLHdpdG5lc3Nlcz1hd2FpdCBhcGkuZGIuZmluZCgid2l0bmVzc2VzIix7YXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6IjAifX19LDEwMCxvZmZzZXQsW3tpbmRleDoiYXBwcm92YWxXZWlnaHQiLGRlc2NlbmRpbmc6ITB9XSk7Y29uc3Qgc2NoZWR1bGVzPWF3YWl0IGFwaS5kYi5maW5kKCJzY2hlZHVsZXMiLHtyb3VuZDpyb3VuZH0pLHByZXZpb3VzUm91bmRXaXRuZXNzPWxhc3RXaXRuZXNzZXMubGVuZ3RoPjE/bGFzdFdpdG5lc3Nlc1tsYXN0V2l0bmVzc2VzLmxlbmd0aC0yXToiIixzY2hlZHVsZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgic2NoZWR1bGVzIix7cm91bmQ6cm91bmQsd2l0bmVzczpjdXJyZW50V2l0bmVzcyxibG9ja051bWJlcjpsYXN0QmxvY2tSb3VuZH0pO2Rve2ZvcihsZXQgaW5kZXg9MDtpbmRleDx3aXRuZXNzZXMubGVuZ3RoO2luZGV4Kz0xKXtjb25zdCB3aXRuZXNzPXdpdG5lc3Nlc1tpbmRleF07aWYoYWNjV2VpZ2h0PWFwaS5CaWdOdW1iZXIoYWNjV2VpZ2h0KS5wbHVzKHdpdG5lc3MuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnRvRml4ZWQoNSksITA9PT13aXRuZXNzLmVuYWJsZWQmJndpdG5lc3MuYWNjb3VudCE9PXByZXZpb3VzUm91bmRXaXRuZXNzJiZ2b2lkIDA9PT1zY2hlZHVsZXMuZmluZChzPT5zLndpdG5lc3M9PT13aXRuZXNzLmFjY291bnQpJiZhcGkuQmlnTnVtYmVyKHJhbmRvbVdlaWdodCkubHRlKGFjY1dlaWdodCkpe2FwaS5kZWJ1ZyhgY2hhbmdlZCBjdXJyZW50IHdpdG5lc3MgZnJvbSAke3NjaGVkdWxlLndpdG5lc3N9IHRvICR7d2l0bmVzcy5hY2NvdW50fWApLHNjaGVkdWxlLndpdG5lc3M9d2l0bmVzcy5hY2NvdW50LGF3YWl0IGFwaS5kYi51cGRhdGUoInNjaGVkdWxlcyIsc2NoZWR1bGUpLHBhcmFtcy5jdXJyZW50V2l0bmVzcz13aXRuZXNzLmFjY291bnQscGFyYW1zLmxhc3RXaXRuZXNzZXMucHVzaCh3aXRuZXNzLmFjY291bnQpLHBhcmFtcy5ibG9ja051bWJlcldpdG5lc3NDaGFuZ2U9YXBpLmJsb2NrTnVtYmVyK21heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKTtjb25zdCBzY2hlZHVsZWRXaXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmN1cnJlbnRXaXRuZXNzfSk7c2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHMrPTEsc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3crPTEsYXBpLmVtaXQoIndpdG5lc3NNaXNzZWRSb3VuZCIse3dpdG5lc3M6c2NoZWR1bGVkV2l0bmVzcy5hY2NvdW50fSksc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3c+PW1heFJvdW5kc01pc3NlZEluQVJvdyYmKHNjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzSW5BUm93PTAsc2NoZWR1bGVkV2l0bmVzcy5lbmFibGVkPSExLGFwaS5lbWl0KCJ3aXRuZXNzRGlzYWJsZWRGb3JNaXNzaW5nVG9vTWFueVJvdW5kc0luQVJvdyIse3dpdG5lc3M6c2NoZWR1bGVkV2l0bmVzcy5hY2NvdW50fSkpLGF3YWl0IGFwaS5kYi51cGRhdGUoIndpdG5lc3NlcyIsc2NoZWR1bGVkV2l0bmVzcyksd2l0bmVzc0ZvdW5kPSEwLGFwaS5lbWl0KCJjdXJyZW50V2l0bmVzc0NoYW5nZWQiLHt9KTticmVha319ITE9PT13aXRuZXNzRm91bmQmJihvZmZzZXQrPTEwMCx3aXRuZXNzZXM9YXdhaXQgYXBpLmRiLmZpbmQoIndpdG5lc3NlcyIse2FwcHJvdmFsV2VpZ2h0OnskZ3Q6eyRudW1iZXJEZWNpbWFsOiIwIn19fSwxMDAsb2Zmc2V0LFt7aW5kZXg6ImFwcHJvdmFsV2VpZ2h0IixkZXNjZW5kaW5nOiEwfV0pKX13aGlsZSh3aXRuZXNzZXMubGVuZ3RoPjAmJiExPT09d2l0bmVzc0ZvdW5kKTtpZighMT09PXdpdG5lc3NGb3VuZCl7YXBpLmRlYnVnKCJubyBiYWNrdXAgd2l0bmVzcyB3YXMgZm91bmQsIGludGVyY2hhbmdpbmcgd2l0bmVzc2VzIHdpdGhpbiB0aGUgY3VycmVudCBzY2hlZHVsZSIpO2ZvcihsZXQgaW5kZXg9MDtpbmRleDxzY2hlZHVsZXMubGVuZ3RoLTE7aW5kZXgrPTEpe2NvbnN0IHNjaGVkPXNjaGVkdWxlc1tpbmRleF0sbmV3V2l0bmVzcz1zY2hlZC53aXRuZXNzO2lmKG5ld1dpdG5lc3MhPT1wcmV2aW91c1JvdW5kV2l0bmVzcyl7YXBpLmRlYnVnKGBjaGFuZ2VkIGN1cnJlbnQgd2l0bmVzcyBmcm9tICR7Y3VycmVudFdpdG5lc3N9IHRvICR7bmV3V2l0bmVzc31gKSxzY2hlZHVsZS53aXRuZXNzPW5ld1dpdG5lc3MsYXdhaXQgYXBpLmRiLnVwZGF0ZSgic2NoZWR1bGVzIixzY2hlZHVsZSksc2NoZWQud2l0bmVzcz1jdXJyZW50V2l0bmVzcyxhd2FpdCBhcGkuZGIudXBkYXRlKCJzY2hlZHVsZXMiLHNjaGVkKSxwYXJhbXMuY3VycmVudFdpdG5lc3M9bmV3V2l0bmVzcyxwYXJhbXMubGFzdFdpdG5lc3Nlcy5wdXNoKG5ld1dpdG5lc3MpLHBhcmFtcy5ibG9ja051bWJlcldpdG5lc3NDaGFuZ2U9YXBpLmJsb2NrTnVtYmVyK21heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKTtjb25zdCBzY2hlZHVsZWRXaXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmN1cnJlbnRXaXRuZXNzfSk7c2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHMrPTEsc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3crPTEsYXBpLmVtaXQoIndpdG5lc3NNaXNzZWRSb3VuZCIse3dpdG5lc3M6c2NoZWR1bGVkV2l0bmVzcy5hY2NvdW50fSksc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3c+PW1heFJvdW5kc01pc3NlZEluQVJvdyYmKHNjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzSW5BUm93PTAsc2NoZWR1bGVkV2l0bmVzcy5lbmFibGVkPSExLGFwaS5lbWl0KCJ3aXRuZXNzRGlzYWJsZWRGb3JNaXNzaW5nVG9vTWFueVJvdW5kc0luQVJvdyIse3dpdG5lc3M6c2NoZWR1bGVkV2l0bmVzcy5hY2NvdW50fSkpLGF3YWl0IGFwaS5kYi51cGRhdGUoIndpdG5lc3NlcyIsc2NoZWR1bGVkV2l0bmVzcyksYXBpLmVtaXQoImN1cnJlbnRXaXRuZXNzQ2hhbmdlZCIse30pO2JyZWFrfX19fSxtYW5hZ2VXaXRuZXNzZXNTY2hlZHVsZT1hc3luYygpPT57aWYoIm51bGwiIT09YXBpLnNlbmRlcilyZXR1cm47Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3NlczpudW1iZXJPZkFwcHJvdmVkV2l0bmVzc2VzLHRvdGFsQXBwcm92YWxXZWlnaHQ6dG90YWxBcHByb3ZhbFdlaWdodCxsYXN0VmVyaWZpZWRCbG9ja051bWJlcjpsYXN0VmVyaWZpZWRCbG9ja051bWJlcixibG9ja051bWJlcldpdG5lc3NDaGFuZ2U6YmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlLGxhc3RCbG9ja1JvdW5kOmxhc3RCbG9ja1JvdW5kLG51bWJlck9mVG9wV2l0bmVzc2VzOm51bWJlck9mVG9wV2l0bmVzc2VzLG51bWJlck9mV2l0bmVzc1Nsb3RzOm51bWJlck9mV2l0bmVzc1Nsb3RzLG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kOm1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLHdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzOndpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzfT1wYXJhbXM7YXdhaXQgZmluZEFuZEV4cGlyZUFwcHJvdmFscyh3aXRuZXNzQXBwcm92ZUV4cGlyZUJsb2Nrcyk7Y29uc3QgY3VycmVudEJsb2NrPWxhc3RWZXJpZmllZEJsb2NrTnVtYmVyKzE7bGV0IHNjaGVkdWxlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJzY2hlZHVsZXMiLHtibG9ja051bWJlcjpjdXJyZW50QmxvY2t9KTtpZihudWxsPT09c2NoZWR1bGUpe2lmKGFwaS5kZWJ1ZygiY2FsY3VsYXRpbmcgbmV3IHNjaGVkdWxlIiksc2NoZWR1bGU9W10sbnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3Nlcz49bnVtYmVyT2ZXaXRuZXNzU2xvdHMpe2NvbnN0IHJhbmRvbT1hcGkucmFuZG9tKCk7bGV0IHJhbmRvbVdlaWdodD1udWxsLG9mZnNldD0wLGFjY1dlaWdodD0wLHdpdG5lc3Nlcz1hd2FpdCBhcGkuZGIuZmluZCgid2l0bmVzc2VzIix7YXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6IjAifX19LDEwMCxvZmZzZXQsW3tpbmRleDoiYXBwcm92YWxXZWlnaHQiLGRlc2NlbmRpbmc6ITB9XSk7ZG97Zm9yKGxldCBpbmRleD0wO2luZGV4PHdpdG5lc3Nlcy5sZW5ndGg7aW5kZXgrPTEpe2NvbnN0IHdpdG5lc3M9d2l0bmVzc2VzW2luZGV4XTtzY2hlZHVsZS5sZW5ndGg+PW51bWJlck9mVG9wV2l0bmVzc2VzJiZudWxsPT09cmFuZG9tV2VpZ2h0JiYocmFuZG9tV2VpZ2h0PWFwaS5CaWdOdW1iZXIoYWNjV2VpZ2h0KS5wbHVzKCIwLjAwMDAxIikucGx1cyhhcGkuQmlnTnVtYmVyKHRvdGFsQXBwcm92YWxXZWlnaHQpLm1pbnVzKGFjY1dlaWdodCkudGltZXMocmFuZG9tKS50b0ZpeGVkKDUsMSkpLnRvRml4ZWQoNSkpLGFjY1dlaWdodD1hcGkuQmlnTnVtYmVyKGFjY1dlaWdodCkucGx1cyh3aXRuZXNzLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS50b0ZpeGVkKDUpLCEwPT09d2l0bmVzcy5lbmFibGVkJiYoc2NoZWR1bGUubGVuZ3RoPG51bWJlck9mVG9wV2l0bmVzc2VzfHxhcGkuQmlnTnVtYmVyKHJhbmRvbVdlaWdodCkubHRlKGFjY1dlaWdodCkpJiZzY2hlZHVsZS5wdXNoKHt3aXRuZXNzOndpdG5lc3MuYWNjb3VudCxibG9ja051bWJlcjpudWxsfSksc2NoZWR1bGUubGVuZ3RoPj1udW1iZXJPZldpdG5lc3NTbG90cyYmKGluZGV4PXdpdG5lc3Nlcy5sZW5ndGgpfXNjaGVkdWxlLmxlbmd0aDxudW1iZXJPZldpdG5lc3NTbG90cyYmKG9mZnNldCs9MTAwLHdpdG5lc3Nlcz1hd2FpdCBhcGkuZGIuZmluZCgid2l0bmVzc2VzIix7YXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6IjAifX19LDEwMCxvZmZzZXQsW3tpbmRleDoiYXBwcm92YWxXZWlnaHQiLGRlc2NlbmRpbmc6ITB9XSkpfXdoaWxlKHdpdG5lc3Nlcy5sZW5ndGg+MCYmc2NoZWR1bGUubGVuZ3RoPG51bWJlck9mV2l0bmVzc1Nsb3RzKX1pZihzY2hlZHVsZS5sZW5ndGg9PT1udW1iZXJPZldpdG5lc3NTbG90cyl7bGV0IGoseDtmb3IobGV0IGk9c2NoZWR1bGUubGVuZ3RoLTE7aT4wO2ktPTEpe2NvbnN0IHJhbmRvbT1hcGkucmFuZG9tKCk7aj1NYXRoLmZsb29yKHJhbmRvbSooaSsxKSkseD1zY2hlZHVsZVtpXSxzY2hlZHVsZVtpXT1zY2hlZHVsZVtqXSxzY2hlZHVsZVtqXT14fWxldCBsYXN0V2l0bmVzc2VzPXBhcmFtcy5sYXN0V2l0bmVzc2VzO2NvbnN0IHByZXZpb3VzUm91bmRXaXRuZXNzPWxhc3RXaXRuZXNzZXMubGVuZ3RoPjA/bGFzdFdpdG5lc3Nlc1tsYXN0V2l0bmVzc2VzLmxlbmd0aC0xXToiIjtsYXN0V2l0bmVzc2VzLmxlbmd0aD49bnVtYmVyT2ZXaXRuZXNzU2xvdHMmJihsYXN0V2l0bmVzc2VzPVtdKTtjb25zdCBsYXN0V2l0bmVzcz1zY2hlZHVsZVtzY2hlZHVsZS5sZW5ndGgtMV0ud2l0bmVzcztpZihsYXN0V2l0bmVzc2VzLmluY2x1ZGVzKGxhc3RXaXRuZXNzKXx8cHJldmlvdXNSb3VuZFdpdG5lc3M9PT1sYXN0V2l0bmVzcylmb3IobGV0IGk9MDtpPHNjaGVkdWxlLmxlbmd0aDtpKz0xKWlmKCFsYXN0V2l0bmVzc2VzLmluY2x1ZGVzKHNjaGVkdWxlW2ldLndpdG5lc3MpJiZzY2hlZHVsZVtpXS53aXRuZXNzIT09cHJldmlvdXNSb3VuZFdpdG5lc3Mpe2NvbnN0IHRoaXNXaXRuZXNzPXNjaGVkdWxlW2ldLndpdG5lc3M7c2NoZWR1bGVbaV0ud2l0bmVzcz1sYXN0V2l0bmVzcyxzY2hlZHVsZVtzY2hlZHVsZS5sZW5ndGgtMV0ud2l0bmVzcz10aGlzV2l0bmVzczticmVha31pZihzY2hlZHVsZVswXS53aXRuZXNzPT09cHJldmlvdXNSb3VuZFdpdG5lc3Mpe2NvbnN0IGZpcnN0V2l0bmVzcz1zY2hlZHVsZVswXS53aXRuZXNzLHNlY29uZFdpdG5lc3M9c2NoZWR1bGVbMV0ud2l0bmVzcztzY2hlZHVsZVswXS53aXRuZXNzPXNlY29uZFdpdG5lc3Msc2NoZWR1bGVbMV0ud2l0bmVzcz1maXJzdFdpdG5lc3N9bGV0IGJsb2NrTnVtYmVyPTA9PT1sYXN0VmVyaWZpZWRCbG9ja051bWJlcj9hcGkuYmxvY2tOdW1iZXI6bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIrMTtwYXJhbXMucm91bmQrPTE7Zm9yKGxldCBpPTA7aTxzY2hlZHVsZS5sZW5ndGg7aSs9MSlzY2hlZHVsZVtpXS5ibG9ja051bWJlcj1ibG9ja051bWJlcixzY2hlZHVsZVtpXS5yb3VuZD1wYXJhbXMucm91bmQsYXBpLmRlYnVnKGBzY2hlZHVsZWQgd2l0bmVzcyAke3NjaGVkdWxlW2ldLndpdG5lc3N9IGZvciBibG9jayAke2Jsb2NrTnVtYmVyfSAocm91bmQgJHtwYXJhbXMucm91bmR9KWApLGF3YWl0IGFwaS5kYi5pbnNlcnQoInNjaGVkdWxlcyIsc2NoZWR1bGVbaV0pLGJsb2NrTnVtYmVyKz0xOzA9PT1sYXN0VmVyaWZpZWRCbG9ja051bWJlciYmKHBhcmFtcy5sYXN0VmVyaWZpZWRCbG9ja051bWJlcj1hcGkuYmxvY2tOdW1iZXItMSk7Y29uc3QgbGFzdFdpdG5lc3NSb3VuZFNjaGVkdWxlPXNjaGVkdWxlW3NjaGVkdWxlLmxlbmd0aC0xXTtwYXJhbXMubGFzdEJsb2NrUm91bmQ9bGFzdFdpdG5lc3NSb3VuZFNjaGVkdWxlLmJsb2NrTnVtYmVyLHBhcmFtcy5jdXJyZW50V2l0bmVzcz1sYXN0V2l0bmVzc1JvdW5kU2NoZWR1bGUud2l0bmVzcyxsYXN0V2l0bmVzc2VzLnB1c2gobGFzdFdpdG5lc3NSb3VuZFNjaGVkdWxlLndpdG5lc3MpLHBhcmFtcy5sYXN0V2l0bmVzc2VzPWxhc3RXaXRuZXNzZXMscGFyYW1zLmJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZT1hcGkuYmxvY2tOdW1iZXIrbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpLGFwaS5lbWl0KCJuZXdTY2hlZHVsZSIse30pfX1lbHNlIGFwaS5ibG9ja051bWJlcj49YmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlJiYoYXBpLmJsb2NrTnVtYmVyPmxhc3RCbG9ja1JvdW5kP2F3YWl0IGNoYW5nZUN1cnJlbnRXaXRuZXNzKCk6KHBhcmFtcy5ibG9ja051bWJlcldpdG5lc3NDaGFuZ2U9YXBpLmJsb2NrTnVtYmVyK21heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKSxhcGkuZW1pdCgiYXdhaXRpbmdSb3VuZEVuZCIse30pKSl9O2FjdGlvbnMucHJvcG9zZVJvdW5kPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyb3VuZEhhc2g6cm91bmRIYXNoLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksc2lnbmF0dXJlczpzaWduYXR1cmVzfT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2xhc3RWZXJpZmllZEJsb2NrTnVtYmVyOmxhc3RWZXJpZmllZEJsb2NrTnVtYmVyLHJvdW5kOnJvdW5kLGxhc3RCbG9ja1JvdW5kOmxhc3RCbG9ja1JvdW5kLGN1cnJlbnRXaXRuZXNzOmN1cnJlbnRXaXRuZXNzfT1wYXJhbXMsc2NoZWR1bGVzPWF3YWl0IGFwaS5kYi5maW5kKCJzY2hlZHVsZXMiLHtyb3VuZDpyb3VuZH0sMWUzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pLG51bWJlck9mV2l0bmVzc1Nsb3RzPXNjaGVkdWxlcy5sZW5ndGgse3dpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQ6d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZH09cGFyYW1zO2lmKCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5JiZyb3VuZEhhc2gmJiJzdHJpbmciPT10eXBlb2Ygcm91bmRIYXNoJiY2ND09PXJvdW5kSGFzaC5sZW5ndGgmJkFycmF5LmlzQXJyYXkoc2lnbmF0dXJlcykmJnNpZ25hdHVyZXMubGVuZ3RoPD1udW1iZXJPZldpdG5lc3NTbG90cyYmc2lnbmF0dXJlcy5sZW5ndGg+PXdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQpe2xldCBjdXJyZW50QmxvY2s9bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIrMSxjYWxjdWxhdGVkUm91bmRIYXNoPSIiO2lmKGFwaS5zZW5kZXI9PT1jdXJyZW50V2l0bmVzcyl7Zm9yKDtjdXJyZW50QmxvY2s8PWxhc3RCbG9ja1JvdW5kOyl7Y29uc3QgYmxvY2s9YXdhaXQgYXBpLmRiLmdldEJsb2NrSW5mbyhjdXJyZW50QmxvY2spO2lmKG51bGw9PT1ibG9jayl7Y2FsY3VsYXRlZFJvdW5kSGFzaD0iIjticmVha31jYWxjdWxhdGVkUm91bmRIYXNoPWFwaS5TSEEyNTYoYCR7Y2FsY3VsYXRlZFJvdW5kSGFzaH0ke2Jsb2NrLmhhc2h9YCksY3VycmVudEJsb2NrKz0xfWlmKCIiIT09Y2FsY3VsYXRlZFJvdW5kSGFzaCYmY2FsY3VsYXRlZFJvdW5kSGFzaD09PXJvdW5kSGFzaCl7bGV0IHNpZ25hdHVyZXNDaGVja2VkPTA7Y29uc3QgdmVyaWZpZWRCbG9ja0luZm9ybWF0aW9uPVtdLGN1cnJlbnRXaXRuZXNzSW5mbz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDpjdXJyZW50V2l0bmVzc30pLGN1cnJlbnRXaXRuZXNzU2lnbmF0dXJlPXNpZ25hdHVyZXMuZmluZChzPT5zWzBdPT09Y3VycmVudFdpdG5lc3MpO2ZvcihsZXQgaW5kZXg9MDtpbmRleDxzY2hlZHVsZXMubGVuZ3RoO2luZGV4Kz0xKXtjb25zdCBzY2hlZHVsZWRXaXRuZXNzPXNjaGVkdWxlc1tpbmRleF0sd2l0bmVzcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDpzY2hlZHVsZWRXaXRuZXNzLndpdG5lc3N9KTtpZihudWxsIT09d2l0bmVzcyl7Y29uc3Qgc2lnbmF0dXJlPXNpZ25hdHVyZXMuZmluZChzPT5zWzBdPT09d2l0bmVzcy5hY2NvdW50KTtzaWduYXR1cmUmJmFwaS5jaGVja1NpZ25hdHVyZShjYWxjdWxhdGVkUm91bmRIYXNoLHNpZ25hdHVyZVsxXSx3aXRuZXNzLnNpZ25pbmdLZXksITApJiYoYXBpLmRlYnVnKGB3aXRuZXNzICR7d2l0bmVzcy5hY2NvdW50fSBzaWduZWQgcm91bmQgJHtyb3VuZH1gKSxzaWduYXR1cmVzQ2hlY2tlZCs9MSksdmVyaWZpZWRCbG9ja0luZm9ybWF0aW9uLnB1c2goe2Jsb2NrTnVtYmVyOnNjaGVkdWxlZFdpdG5lc3MuYmxvY2tOdW1iZXIsd2l0bmVzczpjdXJyZW50V2l0bmVzcyxzaWduaW5nS2V5OmN1cnJlbnRXaXRuZXNzSW5mby5zaWduaW5nS2V5LHJvdW5kU2lnbmF0dXJlOmN1cnJlbnRXaXRuZXNzU2lnbmF0dXJlWzFdLHJvdW5kOnJvdW5kLHJvdW5kSGFzaDpyb3VuZEhhc2h9KX19aWYoc2lnbmF0dXJlc0NoZWNrZWQ+PXdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQpe2ZvcihsZXQgaW5kZXg9MDtpbmRleDx2ZXJpZmllZEJsb2NrSW5mb3JtYXRpb24ubGVuZ3RoO2luZGV4Kz0xKWF3YWl0IGFwaS52ZXJpZnlCbG9jayh2ZXJpZmllZEJsb2NrSW5mb3JtYXRpb25baW5kZXhdKTtjb25zdCBjb250cmFjdEJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJjb250cmFjdHNCYWxhbmNlcyIse2FjY291bnQ6IndpdG5lc3NlcyIsc3ltYm9sOiJCRUUifSk7bGV0IHJld2FyZFdpdG5lc3Nlcz0hMTtjb250cmFjdEJhbGFuY2UmJmFwaS5CaWdOdW1iZXIoY29udHJhY3RCYWxhbmNlLmJhbGFuY2UpLmd0ZSgiMC4wOTUxMjkzIikmJihyZXdhcmRXaXRuZXNzZXM9ITApO2ZvcihsZXQgaW5kZXg9MDtpbmRleDxzY2hlZHVsZXMubGVuZ3RoO2luZGV4Kz0xKXtjb25zdCBzY2hlZHVsZT1zY2hlZHVsZXNbaW5kZXhdOyEwPT09cmV3YXJkV2l0bmVzc2VzJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInN0YWtlRnJvbUNvbnRyYWN0Iix7dG86c2NoZWR1bGUud2l0bmVzcyxzeW1ib2w6IkJFRSIscXVhbnRpdHk6IjAuMDE5MDI1ODYifSksYXdhaXQgYXBpLmRiLnJlbW92ZSgic2NoZWR1bGVzIixzY2hlZHVsZSl9cGFyYW1zLmN1cnJlbnRXaXRuZXNzPW51bGwscGFyYW1zLmxhc3RWZXJpZmllZEJsb2NrTnVtYmVyPWxhc3RCbG9ja1JvdW5kLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKTtjb25zdCB3aXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmN1cnJlbnRXaXRuZXNzfSk7d2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3c9MCx3aXRuZXNzLmxhc3RSb3VuZFZlcmlmaWVkPXJvdW5kLHdpdG5lc3MubGFzdEJsb2NrVmVyaWZpZWQ9bGFzdEJsb2NrUm91bmQsd2l0bmVzcy52ZXJpZmllZFJvdW5kcys9MSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ3aXRuZXNzZXMiLHdpdG5lc3MpLGF3YWl0IG1hbmFnZVdpdG5lc3Nlc1NjaGVkdWxlKCl9fX19fSxhY3Rpb25zLnNjaGVkdWxlV2l0bmVzc2VzPWFzeW5jKCk9PnsibnVsbCI9PT1hcGkuc2VuZGVyJiZhd2FpdCBtYW5hZ2VXaXRuZXNzZXNTY2hlZHVsZSgpfTs="}}}