Mining Smart Contract

Words
1
Reading
1 min
Listen
Play
6y

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"mining","params":"","code":"Y29uc3QgUFJPUEVSVFlfT1BTPXtBREQ6e2FkZDooeCx5KT0+YXBpLkJpZ051bWJlcih4KS5wbHVzKHkpLHJlbW92ZTooeCx5KT0+YXBpLkJpZ051bWJlcih4KS5taW51cyh5KSxkZWZhdWx0VmFsdWU6MH0sTVVMVElQTFk6e2FkZDooeCx5KT0+YXBpLkJpZ051bWJlcih4KS5tdWx0aXBsaWVkQnkoeSkscmVtb3ZlOih4LHkpPT5hcGkuQmlnTnVtYmVyKHgpLmRpdmlkZWRCeSh5KSxkZWZhdWx0VmFsdWU6MX19O2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygibWluaW5nUG93ZXIiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJtaW5pbmdQb3dlciIsWyJpZCIsInBvd2VyIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicG9vbHMiLFsiaWQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0b2tlblBvb2xzIixbInN5bWJvbCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2NvbnN0IHBhcmFtcz17cG9vbENyZWF0aW9uRmVlOiIxMDAwIixwb29sVXBkYXRlRmVlOiIzMDAiLG1heExvdHRlcmllc1BlckJsb2NrOjIwLG1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2s6MWU0LHByb2Nlc3NRdWVyeUxpbWl0OjFlM307YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygibmZ0VG9rZW5Qb29scyIpfHxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoIm5mdFRva2VuUG9vbHMiLFsic3ltYm9sIl0pfSxhY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBwYXlsb2FkPT57aWYoYXBpLnNlbmRlciE9PWFwaS5vd25lcilyZXR1cm47Y29uc3R7cG9vbENyZWF0aW9uRmVlOnBvb2xDcmVhdGlvbkZlZSxwb29sVXBkYXRlRmVlOnBvb2xVcGRhdGVGZWUsbWF4TG90dGVyaWVzUGVyQmxvY2s6bWF4TG90dGVyaWVzUGVyQmxvY2ssbWF4QmFsYW5jZXNQcm9jZXNzZWRQZXJCbG9jazptYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrLHByb2Nlc3NRdWVyeUxpbWl0OnByb2Nlc3NRdWVyeUxpbWl0fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYocG9vbENyZWF0aW9uRmVlKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHBvb2xDcmVhdGlvbkZlZSYmIWFwaS5CaWdOdW1iZXIocG9vbENyZWF0aW9uRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHBvb2xDcmVhdGlvbkZlZSkuZ3RlKDApLCJpbnZhbGlkIHBvb2xDcmVhdGlvbkZlZSIpKXJldHVybjtwYXJhbXMucG9vbENyZWF0aW9uRmVlPXBvb2xDcmVhdGlvbkZlZX1pZihwb29sVXBkYXRlRmVlKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHBvb2xVcGRhdGVGZWUmJiFhcGkuQmlnTnVtYmVyKHBvb2xVcGRhdGVGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocG9vbFVwZGF0ZUZlZSkuZ3RlKDApLCJpbnZhbGlkIHBvb2xVcGRhdGVGZWUiKSlyZXR1cm47cGFyYW1zLnBvb2xVcGRhdGVGZWU9cG9vbFVwZGF0ZUZlZX1pZihtYXhMb3R0ZXJpZXNQZXJCbG9jayl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihtYXhMb3R0ZXJpZXNQZXJCbG9jaykmJm1heExvdHRlcmllc1BlckJsb2NrPj0xLCJpbnZhbGlkIG1heExvdHRlcmllc1BlckJsb2NrIikpcmV0dXJuO3BhcmFtcy5tYXhMb3R0ZXJpZXNQZXJCbG9jaz1tYXhMb3R0ZXJpZXNQZXJCbG9ja31pZihtYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrKXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2spJiZtYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrPj0xLCJpbnZhbGlkIG1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2siKSlyZXR1cm47cGFyYW1zLm1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2s9bWF4QmFsYW5jZXNQcm9jZXNzZWRQZXJCbG9ja31pZihwcm9jZXNzUXVlcnlMaW1pdCl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihwcm9jZXNzUXVlcnlMaW1pdCkmJnByb2Nlc3NRdWVyeUxpbWl0Pj0xLCJpbnZhbGlkIHByb2Nlc3NRdWVyeUxpbWl0IikpcmV0dXJuO3BhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdD1wcm9jZXNzUXVlcnlMaW1pdH1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9O2NvbnN0IGZpbmRBbmRQcm9jZXNzQWxsPWFzeW5jKGNvbnRyYWN0TmFtZSx0YWJsZSxxdWVyeSxjYWxsYmFjayk9PntsZXQgb2Zmc2V0PTAscmVzdWx0cz1bXSxkb25lPSExO2Zvcig7IWRvbmU7KWlmKHJlc3VsdHM9YXdhaXQgYXBpLmRiLmZpbmRJblRhYmxlKGNvbnRyYWN0TmFtZSx0YWJsZSxxdWVyeSwxZTMsb2Zmc2V0KSxyZXN1bHRzKXtmb3IobGV0IGk9MDtpPHJlc3VsdHMubGVuZ3RoO2krPTEpYXdhaXQgY2FsbGJhY2socmVzdWx0c1tpXSk7cmVzdWx0cy5sZW5ndGg8MWUzP2RvbmU9ITA6b2Zmc2V0Kz0xZTN9fTthc3luYyBmdW5jdGlvbiB2YWxpZGF0ZU5mdFByb3BlcnRpZXMocHJvcGVydGllcyl7aWYoIWFwaS5hc3NlcnQocHJvcGVydGllcyYmQXJyYXkuaXNBcnJheShwcm9wZXJ0aWVzKSwiaW52YWxpZCBuZnRUb2tlbk1pbmVyIHByb3BlcnRpZXMiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydChwcm9wZXJ0aWVzLmxlbmd0aD4wJiZwcm9wZXJ0aWVzLmxlbmd0aDw9NCwibmZ0VG9rZW5NaW5lciBwcm9wZXJ0aWVzIHNpemUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDQiKSlyZXR1cm4hMTtmb3IobGV0IGk9MDtpPHByb3BlcnRpZXMubGVuZ3RoO2krPTEpe2NvbnN0IHByb3A9cHJvcGVydGllc1tpXSxwcm9wS2V5cz1PYmplY3Qua2V5cyhwcm9wKTtmb3IobGV0IGo9MDtqPHByb3BLZXlzLmxlbmd0aDtqKz0xKXtjb25zdCBwcm9wS2V5PXByb3BLZXlzW2pdO2lmKCJvcCI9PT1wcm9wS2V5KXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHByb3Aub3AmJlBST1BFUlRZX09QU1twcm9wLm9wXSwibmZ0VG9rZW5NaW5lciBwcm9wZXJ0aWVzIG9wIHNob3VsZCBiZSBBREQgb3IgTVVMVElQTFkiKSlyZXR1cm4hMX1lbHNlIGlmKCJuYW1lIj09PXByb3BLZXkpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgcHJvcC5uYW1lJiZwcm9wLm5hbWUubGVuZ3RoPD0xNiwibmZ0VG9rZW5NaW5lciBwcm9wZXJ0aWVzIG5hbWUgc2hvdWxkIGJlIGEgc3RyaW5nIG9mIGxlbmd0aCA8PSAxNiIpKXJldHVybiExfWVsc2V7aWYoImJ1cm5DaGFuZ2UiIT09cHJvcEtleSlyZXR1cm4gYXBpLmFzc2VydCghMSwibmZ0VG9rZW5NaW5lciBwcm9wZXJ0aWVzIGZpZWxkIGludmFsaWQiKSwhMTt7aWYoIWFwaS5hc3NlcnQoIm9iamVjdCI9PXR5cGVvZiBwcm9wLmJ1cm5DaGFuZ2UmJiJzdHJpbmciPT10eXBlb2YgcHJvcC5idXJuQ2hhbmdlLnN5bWJvbCYmYXBpLkJpZ051bWJlcihwcm9wLmJ1cm5DaGFuZ2UucXVhbnRpdHkpLmlzRmluaXRlKCkmJmFwaS5CaWdOdW1iZXIocHJvcC5idXJuQ2hhbmdlLnF1YW50aXR5KS5pc1Bvc2l0aXZlKCksIm5mdFRva2VuTWluZXIgcHJvcGVydGllcyBidXJuQ2hhbmdlIGludmFsaWQiKSlyZXR1cm4hMTtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwcm9wLmJ1cm5DaGFuZ2Uuc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQodG9rZW4sIm5mdFRva2VuTWluZXIgcHJvcGVydGllcyBidXJuQ2hhbmdlIHN5bWJvbCBub3QgZm91bmQiKSlyZXR1cm4hMX19fX1yZXR1cm4hMH1mdW5jdGlvbiB2YWxpZGF0ZU5mdFR5cGVNYXAodHlwZU1hcCxwcm9wZXJ0aWVzKXtpZighYXBpLmFzc2VydCh0eXBlTWFwJiYib2JqZWN0Ij09dHlwZW9mIHR5cGVNYXAsImludmFsaWQgbmZ0VG9rZW5NaW5lciB0eXBlTWFwIikpcmV0dXJuITE7Y29uc3QgdHlwZXM9T2JqZWN0LmtleXModHlwZU1hcCk7Zm9yKGxldCBqPTA7ajx0eXBlcy5sZW5ndGg7ais9MSl7Y29uc3QgdHlwZUNvbmZpZz10eXBlTWFwW3R5cGVzW2pdXTtpZighYXBpLmFzc2VydChBcnJheS5pc0FycmF5KHR5cGVDb25maWcpJiZ0eXBlQ29uZmlnLmxlbmd0aD09PXByb3BlcnRpZXMubGVuZ3RoLCJuZnRUb2tlbk1pbmVyIHR5cGVDb25maWcgbGVuZ3RoIG1pc21hdGNoIikpcmV0dXJuITE7Zm9yKGxldCBrPTA7azx0eXBlQ29uZmlnLmxlbmd0aDtrKz0xKXtjb25zdCB0eXBlUHJvcGVydHk9YXBpLkJpZ051bWJlcih0eXBlQ29uZmlnW2tdKTtpZighYXBpLmFzc2VydCghdHlwZVByb3BlcnR5LmlzTmFOKCkmJnR5cGVQcm9wZXJ0eS5pc0Zpbml0ZSgpLCJuZnRUb2tlbk1pbmVyIHR5cGVDb25maWcgaW52YWxpZCIpKXJldHVybiExO2lmKCJNVUxUSVBMWSI9PT1wcm9wZXJ0aWVzW2tdLm9wJiYhYXBpLmFzc2VydCh0eXBlUHJvcGVydHkuZ3RlKC4wMSkmJnR5cGVQcm9wZXJ0eS5sdGUoMTAwKSwibmZ0VG9rZW5NaW5lciB0eXBlQ29uZmlnIE1VTFRJUExZIHByb3BlcnR5IHNob3VsZCBiZSBiZXR3ZWVuIDAuMDEgYW5kIDEwMCIpKXJldHVybiExfX1yZXR1cm4hMH1hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZVRva2VuTWluZXJzKHRva2VuTWluZXJzLG5mdFRva2VuTWluZXIpe2lmKCFhcGkuYXNzZXJ0KHRva2VuTWluZXJzJiZBcnJheS5pc0FycmF5KHRva2VuTWluZXJzKSwidG9rZW5NaW5lcnMgaW52YWxpZCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KHRva2VuTWluZXJzLmxlbmd0aD49MSYmdG9rZW5NaW5lcnMubGVuZ3RoPD0yfHxuZnRUb2tlbk1pbmVyJiYwPT09dG9rZW5NaW5lcnMubGVuZ3RoLCJvbmx5IDEgb3IgMiB0b2tlbk1pbmVycyBhbGxvd2VkIikpcmV0dXJuITE7Y29uc3QgdG9rZW5NaW5lclN5bWJvbHM9bmV3IFNldDtmb3IobGV0IGk9MDtpPHRva2VuTWluZXJzLmxlbmd0aDtpKz0xKXtjb25zdCB0b2tlbk1pbmVyQ29uZmlnPXRva2VuTWluZXJzW2ldO2lmKCFhcGkuYXNzZXJ0KHRva2VuTWluZXJDb25maWcmJnRva2VuTWluZXJDb25maWcuc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHRva2VuTWluZXJDb25maWcuc3ltYm9sLCJ0b2tlbk1pbmVycyBpbnZhbGlkIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQoIXRva2VuTWluZXJTeW1ib2xzLmhhcyh0b2tlbk1pbmVyQ29uZmlnLnN5bWJvbCksInRva2VuTWluZXJzIGNhbm5vdCBoYXZlIGR1cGxpY2F0ZSBzeW1ib2xzIikpcmV0dXJuITE7dG9rZW5NaW5lclN5bWJvbHMuYWRkKHRva2VuTWluZXJDb25maWcuc3ltYm9sKTtjb25zdHtzeW1ib2w6c3ltYm9sfT10b2tlbk1pbmVyQ29uZmlnLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KHRva2VuJiZ0b2tlbi5zdGFraW5nRW5hYmxlZCwidG9rZW5NaW5lcnMgbXVzdCBoYXZlIHN0YWtpbmcgZW5hYmxlZCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIodG9rZW5NaW5lckNvbmZpZy5tdWx0aXBsaWVyKSYmdG9rZW5NaW5lckNvbmZpZy5tdWx0aXBsaWVyPj0xJiZ0b2tlbk1pbmVyQ29uZmlnLm11bHRpcGxpZXI8PTEwMCwidG9rZW5NaW5lciBtdWx0aXBsaWVyIG11c3QgYmUgYW4gaW50ZWdlciBmcm9tIDEgdG8gMTAwIikpcmV0dXJuITF9aWYobmZ0VG9rZW5NaW5lcil7aWYoIWFwaS5hc3NlcnQobmZ0VG9rZW5NaW5lci5zeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0VG9rZW5NaW5lci5zeW1ib2wsIm5mdFRva2VuTWluZXIgaW52YWxpZCIpKXJldHVybiExO2NvbnN0e3N5bWJvbDpzeW1ib2wsdHlwZU1hcDp0eXBlTWFwLHByb3BlcnRpZXM6cHJvcGVydGllcyx0eXBlRmllbGQ6dHlwZUZpZWxkfT1uZnRUb2tlbk1pbmVyLG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQobmZ0JiZuZnQuZGVsZWdhdGlvbkVuYWJsZWQsIm5mdFRva2VuTWluZXIgbXVzdCBoYXZlIGRlbGVnYXRpb24gZW5hYmxlZCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KHR5cGVGaWVsZCYmInN0cmluZyI9PXR5cGVvZiB0eXBlRmllbGQsInR5cGVGaWVsZCBtdXN0IGJlIGEgc3RyaW5nIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQobmZ0LnByb3BlcnRpZXNbdHlwZUZpZWxkXSYmInN0cmluZyI9PT1uZnQucHJvcGVydGllc1t0eXBlRmllbGRdLnR5cGUsIm5mdFRva2VuTWluZXIgbXVzdCBoYXZlIHN0cmluZyB0eXBlIHByb3BlcnR5IikpcmV0dXJuITE7aWYoIWF3YWl0IHZhbGlkYXRlTmZ0UHJvcGVydGllcyhwcm9wZXJ0aWVzKSlyZXR1cm4hMTtpZighdmFsaWRhdGVOZnRUeXBlTWFwKHR5cGVNYXAscHJvcGVydGllcykpcmV0dXJuITF9cmV0dXJuITB9YXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVUb2tlbk1pbmVyc0NoYW5nZShvbGRUb2tlbk1pbmVycyx0b2tlbk1pbmVycyxvbGROZnRUb2tlbk1pbmVyLG5mdFRva2VuTWluZXIpe2lmKCFhcGkuYXNzZXJ0KHRva2VuTWluZXJzLmxlbmd0aD09PW9sZFRva2VuTWluZXJzLmxlbmd0aCwiY2Fubm90IGNoYW5nZSB3aGljaCB0b2tlbnMgYXJlIGluIHRva2VuTWluZXJzIikpcmV0dXJuITE7bGV0IGNoYW5nZWQ9ITE7Zm9yKGxldCBpPTA7aTx0b2tlbk1pbmVycy5sZW5ndGg7aSs9MSl7Y29uc3Qgb2xkQ29uZmlnPW9sZFRva2VuTWluZXJzW2ldLG5ld0NvbmZpZz10b2tlbk1pbmVyc1tpXTtpZighYXBpLmFzc2VydChvbGRDb25maWcuc3ltYm9sPT09bmV3Q29uZmlnLnN5bWJvbCwiY2Fubm90IGNoYW5nZSB3aGljaCB0b2tlbnMgYXJlIGluIHRva2VuTWluZXJzIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihuZXdDb25maWcubXVsdGlwbGllcikmJm5ld0NvbmZpZy5tdWx0aXBsaWVyPj0xJiZuZXdDb25maWcubXVsdGlwbGllcjw9MTAwLCJ0b2tlbk1pbmVyIG11bHRpcGxpZXIgbXVzdCBiZSBhbiBpbnRlZ2VyIGZyb20gMSB0byAxMDAiKSlyZXR1cm4hMTtvbGRDb25maWcubXVsdGlwbGllciE9PW5ld0NvbmZpZy5tdWx0aXBsaWVyJiYoY2hhbmdlZD0hMCl9aWYoIWFwaS5hc3NlcnQoISFvbGROZnRUb2tlbk1pbmVyPT0hIW5mdFRva2VuTWluZXIsImNhbm5vdCBjaGFuZ2UgbmZ0VG9rZW5NaW5lciB0b2tlbiIpKXJldHVybiExO2lmKG5mdFRva2VuTWluZXIpe2lmKCFhcGkuYXNzZXJ0KG9sZE5mdFRva2VuTWluZXIuc3ltYm9sPT09bmZ0VG9rZW5NaW5lci5zeW1ib2wsImNhbm5vdCBjaGFuZ2UgbmZ0VG9rZW5NaW5lciB0b2tlbiIpKXJldHVybiExO2NvbnN0e3R5cGVNYXA6dHlwZU1hcCxwcm9wZXJ0aWVzOnByb3BlcnRpZXMsdHlwZUZpZWxkOnR5cGVGaWVsZH09bmZ0VG9rZW5NaW5lcjtpZighYXBpLmFzc2VydCh0eXBlRmllbGQmJiJzdHJpbmciPT10eXBlb2YgdHlwZUZpZWxkJiZ0eXBlRmllbGQ9PT1vbGROZnRUb2tlbk1pbmVyLnR5cGVGaWVsZCwiY2Fubm90IGNoYW5nZSBuZnRUb2tlbk1pbmVyIHR5cGVGaWVsZCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KHR5cGVNYXAmJiJvYmplY3QiPT10eXBlb2YgdHlwZU1hcCwiaW52YWxpZCBuZnRUb2tlbk1pbmVyIHR5cGVNYXAiKSlyZXR1cm4hMTtpZighYXdhaXQgdmFsaWRhdGVOZnRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpKXJldHVybiExO2lmKHByb3BlcnRpZXMubGVuZ3RoIT09b2xkTmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmxlbmd0aCljaGFuZ2VkPSEwO2Vsc2UgZm9yKGxldCBpPTA7aTxwcm9wZXJ0aWVzLmxlbmd0aDtpKz0xKXtjb25zdCBwcm9wPXByb3BlcnRpZXNbaV0sb2xkUHJvcD1vbGROZnRUb2tlbk1pbmVyLnByb3BlcnRpZXNbaV07cHJvcC5vcCE9PW9sZFByb3Aub3AmJihjaGFuZ2VkPSEwKX1pZighdmFsaWRhdGVOZnRUeXBlTWFwKHR5cGVNYXAscHJvcGVydGllcykpcmV0dXJuITE7Y29uc3Qgb2xkVHlwZXM9T2JqZWN0LmtleXMob2xkTmZ0VG9rZW5NaW5lci50eXBlTWFwKTtmb3IobGV0IGk9MDtpPG9sZFR5cGVzLmxlbmd0aDtpKz0xKXtjb25zdCBvbGRUeXBlPW9sZFR5cGVzW2ldLG9sZFR5cGVDb25maWc9b2xkTmZ0VG9rZW5NaW5lci50eXBlTWFwW29sZFR5cGVdLHR5cGVDb25maWc9dHlwZU1hcFtvbGRUeXBlXTtpZighYXBpLmFzc2VydCh0eXBlQ29uZmlnLCJ0eXBlQ29uZmlnIHR5cGVzIG11c3QgYmUgYSBzdXBlcnNldCBvZiBvbGQgdHlwZUNvbmZpZyB0eXBlcyIpKXJldHVybiExO2ZvcihsZXQgaj0wO2o8dHlwZUNvbmZpZy5sZW5ndGg7ais9MSlvbGRUeXBlQ29uZmlnW2pdIT09dHlwZUNvbmZpZ1tqXSYmKGNoYW5nZWQ9ITApfX1yZXR1cm57Y2hhbmdlZDpjaGFuZ2VkfX1mdW5jdGlvbiBjb21wdXRlTWluaW5nUG93ZXIobWluaW5nUG93ZXIsdG9rZW5NaW5lcnMsbmZ0VG9rZW5NaW5lcil7bGV0IHBvd2VyPWFwaS5CaWdOdW1iZXIoMCk7Zm9yKGxldCBpPTA7aTx0b2tlbk1pbmVycy5sZW5ndGg7aSs9MSltaW5pbmdQb3dlci5iYWxhbmNlc1tpXSYmKHBvd2VyPXBvd2VyLnBsdXMoYXBpLkJpZ051bWJlcihtaW5pbmdQb3dlci5iYWxhbmNlc1tpXSkubXVsdGlwbGllZEJ5KHRva2VuTWluZXJzW2ldLm11bHRpcGxpZXIpKSk7aWYobmZ0VG9rZW5NaW5lciYmbWluaW5nUG93ZXIubmZ0QmFsYW5jZXMpe2xldCBuZnRQb3dlcj1hcGkuQmlnTnVtYmVyKDEpO2ZvcihsZXQgaT0wO2k8bmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmxlbmd0aDtpKz0xKW5mdFBvd2VyPW5mdFBvd2VyLm11bHRpcGxpZWRCeShtaW5pbmdQb3dlci5uZnRCYWxhbmNlc1tpXSk7cG93ZXI9cG93ZXIucGx1cyhuZnRQb3dlcil9cmV0dXJuIHBvd2VyLmlzUG9zaXRpdmUoKSYmcG93ZXIuaXNGaW5pdGUoKT9wb3dlcjphcGkuQmlnTnVtYmVyKDApfWFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU1pbmluZ1Bvd2VyKHBvb2wsdG9rZW4sYWNjb3VudCxzdGFrZWRRdWFudGl0eSxkZWxlZ2F0ZWRRdWFudGl0eSxyZXNldCl7bGV0IG1pbmluZ1Bvd2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJtaW5pbmdQb3dlciIse2lkOnBvb2wuaWQsYWNjb3VudDphY2NvdW50fSksc3Rha2U9YXBpLkJpZ051bWJlcihzdGFrZWRRdWFudGl0eSksb2xkTWluaW5nUG93ZXI9YXBpLkJpZ051bWJlcigwKTtzdGFrZT1zdGFrZS5wbHVzKGRlbGVnYXRlZFF1YW50aXR5KTtjb25zdCB0b2tlbkluZGV4PXBvb2wudG9rZW5NaW5lcnMuZmluZEluZGV4KHQ9PnQuc3ltYm9sPT09dG9rZW4pO2lmKG1pbmluZ1Bvd2VyKW1pbmluZ1Bvd2VyLmJhbGFuY2VzW3Rva2VuSW5kZXhdJiYhcmVzZXR8fChtaW5pbmdQb3dlci5iYWxhbmNlc1t0b2tlbkluZGV4XT0iMCIpLG1pbmluZ1Bvd2VyLmJhbGFuY2VzW3Rva2VuSW5kZXhdPXN0YWtlLnBsdXMobWluaW5nUG93ZXIuYmFsYW5jZXNbdG9rZW5JbmRleF0pLG9sZE1pbmluZ1Bvd2VyPW1pbmluZ1Bvd2VyLnBvd2VyLiRudW1iZXJEZWNpbWFsO2Vsc2V7Y29uc3QgYmFsYW5jZXM9e307YmFsYW5jZXNbdG9rZW5JbmRleF09c3Rha2UsbWluaW5nUG93ZXI9e2lkOnBvb2wuaWQsYWNjb3VudDphY2NvdW50LGJhbGFuY2VzOmJhbGFuY2VzLHBvd2VyOnskbnVtYmVyRGVjaW1hbDoiMCJ9fSxtaW5pbmdQb3dlcj1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJtaW5pbmdQb3dlciIsbWluaW5nUG93ZXIpfWNvbnN0IG5ld01pbmluZ1Bvd2VyPWNvbXB1dGVNaW5pbmdQb3dlcihtaW5pbmdQb3dlcixwb29sLnRva2VuTWluZXJzLHBvb2wubmZ0VG9rZW5NaW5lcik7cmV0dXJuIG1pbmluZ1Bvd2VyLnBvd2VyPXskbnVtYmVyRGVjaW1hbDpuZXdNaW5pbmdQb3dlcn0sYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWluaW5nUG93ZXIiLG1pbmluZ1Bvd2VyKSxuZXdNaW5pbmdQb3dlci5taW51cyhvbGRNaW5pbmdQb3dlcil9ZnVuY3Rpb24gZ2V0TmZ0QWNjb3VudChuZnQpe3JldHVybiJtaW5pbmciPT09bmZ0LmRlbGVnYXRlZFRvLmFjY291bnQmJiJjIj09PW5mdC5kZWxlZ2F0ZWRUby5vd25lZEJ5P25mdC5hY2NvdW50OiJ1Ij09PW5mdC5kZWxlZ2F0ZWRUby5vd25lZEJ5P25mdC5kZWxlZ2F0ZWRUby5hY2NvdW50Om51bGx9YXN5bmMgZnVuY3Rpb24gdXBkYXRlTmZ0TWluaW5nUG93ZXIocG9vbCxuZnQsdHlwZVByb3BlcnRpZXMsYWRkLHVwZGF0ZVBvb2xUaW1lc3RhbXApe2NvbnN0IGFjY291bnQ9Z2V0TmZ0QWNjb3VudChuZnQpO2lmKCFhY2NvdW50KXJldHVybiAwO2xldCBtaW5pbmdQb3dlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWluaW5nUG93ZXIiLHtpZDpwb29sLmlkLGFjY291bnQ6YWNjb3VudH0pLG9sZE1pbmluZ1Bvd2VyPWFwaS5CaWdOdW1iZXIoMCk7aWYobWluaW5nUG93ZXIpe21pbmluZ1Bvd2VyLm5mdEJhbGFuY2VzfHwobWluaW5nUG93ZXIubmZ0QmFsYW5jZXM9e30pO2NvbnN0e25mdEJhbGFuY2VzOm5mdEJhbGFuY2VzfT1taW5pbmdQb3dlcjtmb3IobGV0IGk9MDtpPHBvb2wubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmxlbmd0aDtpKz0xKXtjb25zdCBwcm9wZXJ0eT1wb29sLm5mdFRva2VuTWluZXIucHJvcGVydGllc1tpXSxvcEluZm89UFJPUEVSVFlfT1BTW3Byb3BlcnR5Lm9wXTtuZnRCYWxhbmNlc1tpXSYmbWluaW5nUG93ZXIudXBkYXRlUG9vbFRpbWVzdGFtcD09PXVwZGF0ZVBvb2xUaW1lc3RhbXB8fChuZnRCYWxhbmNlc1tpXT1vcEluZm8uZGVmYXVsdFZhbHVlKSxuZnRCYWxhbmNlc1tpXT1hZGQ/b3BJbmZvLmFkZChuZnRCYWxhbmNlc1tpXSx0eXBlUHJvcGVydGllc1tpXSk6b3BJbmZvLnJlbW92ZShuZnRCYWxhbmNlc1tpXSx0eXBlUHJvcGVydGllc1tpXSl9b2xkTWluaW5nUG93ZXI9bWluaW5nUG93ZXIucG93ZXIuJG51bWJlckRlY2ltYWx9ZWxzZXtjb25zdCBuZnRCYWxhbmNlcz17fTtmb3IobGV0IGk9MDtpPHBvb2wubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmxlbmd0aDtpKz0xKXtjb25zdCBwcm9wZXJ0eT1wb29sLm5mdFRva2VuTWluZXIucHJvcGVydGllc1tpXSxvcEluZm89UFJPUEVSVFlfT1BTW3Byb3BlcnR5Lm9wXTthZGQ/bmZ0QmFsYW5jZXNbaV09b3BJbmZvLmFkZChvcEluZm8uZGVmYXVsdFZhbHVlLHR5cGVQcm9wZXJ0aWVzW2ldKTphcGkuYXNzZXJ0KCExLCJ1bmV4cGVjdGVkIGNvbmRpdGlvbjogcmVtb3ZlIHdpdGhvdXQgcHJldmlvdXMgbWluaW5nUG93ZXIiKX1taW5pbmdQb3dlcj17aWQ6cG9vbC5pZCxhY2NvdW50OmFjY291bnQsYmFsYW5jZXM6e30sbmZ0QmFsYW5jZXM6bmZ0QmFsYW5jZXMscG93ZXI6eyRudW1iZXJEZWNpbWFsOiIwIn19LG1pbmluZ1Bvd2VyPWF3YWl0IGFwaS5kYi5pbnNlcnQoIm1pbmluZ1Bvd2VyIixtaW5pbmdQb3dlcil9Y29uc3QgbmV3TWluaW5nUG93ZXI9Y29tcHV0ZU1pbmluZ1Bvd2VyKG1pbmluZ1Bvd2VyLHBvb2wudG9rZW5NaW5lcnMscG9vbC5uZnRUb2tlbk1pbmVyKTtyZXR1cm4gbWluaW5nUG93ZXIucG93ZXI9eyRudW1iZXJEZWNpbWFsOm5ld01pbmluZ1Bvd2VyfSxtaW5pbmdQb3dlci51cGRhdGVQb29sVGltZXN0YW1wPXVwZGF0ZVBvb2xUaW1lc3RhbXAsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWluaW5nUG93ZXIiLG1pbmluZ1Bvd2VyKSxuZXdNaW5pbmdQb3dlci5taW51cyhvbGRNaW5pbmdQb3dlcil9YXN5bmMgZnVuY3Rpb24gaW5pdE1pbmluZ1Bvd2VyKHBvb2wscGFyYW1zLHRva2VuLGxhc3RJZCl7bGV0IGJhbGFuY2VzLGFkanVzdGVkUG93ZXI9YXBpLkJpZ051bWJlcigwKSxvZmZzZXQ9MCxsYXN0SWRQcm9jZXNzZWQ9bGFzdElkLGNvbXBsZXRlPSExO2Zvcig7IWNvbXBsZXRlJiZvZmZzZXQ8cGFyYW1zLm1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2s7KXtiYWxhbmNlcz1hd2FpdCBhcGkuZGIuZmluZEluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7c3ltYm9sOnRva2VuLF9pZDp7JGd0Omxhc3RJZH19LHBhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdCxvZmZzZXQsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8YmFsYW5jZXMubGVuZ3RoO2krPTEpe2NvbnN0IGJhbGFuY2U9YmFsYW5jZXNbaV07aWYoYXBpLkJpZ051bWJlcihiYWxhbmNlLnN0YWtlKS5ndCgwKXx8YXBpLkJpZ051bWJlcihiYWxhbmNlLmRlbGVnYXRpb25zSW4pLmd0KDApKXtjb25zdCBhZGp1c3RlZD1hd2FpdCB1cGRhdGVNaW5pbmdQb3dlcihwb29sLHRva2VuLGJhbGFuY2UuYWNjb3VudCxiYWxhbmNlLnN0YWtlLGJhbGFuY2UuZGVsZWdhdGlvbnNJbiwhMCk7YWRqdXN0ZWRQb3dlcj1hZGp1c3RlZFBvd2VyLnBsdXMoYWRqdXN0ZWQpfWxhc3RJZFByb2Nlc3NlZD1iYWxhbmNlLl9pZH1iYWxhbmNlcy5sZW5ndGg8cGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0JiYoY29tcGxldGU9ITApLG9mZnNldCs9cGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0fXJldHVybnthZGp1c3RlZFBvd2VyOmFkanVzdGVkUG93ZXIsbmV4dElkOmxhc3RJZFByb2Nlc3NlZCxjb21wbGV0ZTpjb21wbGV0ZX19YXN5bmMgZnVuY3Rpb24gaW5pdE5mdE1pbmluZ1Bvd2VyKHBvb2wsdXBkYXRlUG9vbFRpbWVzdGFtcCxwYXJhbXMsbmZ0VG9rZW5NaW5lcixsYXN0SWQpe2xldCBuZnRzLGFkanVzdGVkUG93ZXI9YXBpLkJpZ051bWJlcigwKSxvZmZzZXQ9MCxsYXN0SWRQcm9jZXNzZWQ9bGFzdElkLGNvbXBsZXRlPSExO2Zvcig7IWNvbXBsZXRlJiZvZmZzZXQ8cGFyYW1zLm1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2s7KXtuZnRzPWF3YWl0IGFwaS5kYi5maW5kSW5UYWJsZSgibmZ0IixuZnRUb2tlbk1pbmVyLnN5bWJvbCsiaW5zdGFuY2VzIix7X2lkOnskZ3Q6bGFzdElkfSxkZWxlZ2F0ZWRUbzp7JG5lOm51bGx9LCJkZWxlZ2F0ZWRUby51bmRlbGVnYXRlQXQiOnskZXE6bnVsbH19LHBhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdCxvZmZzZXQsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8bmZ0cy5sZW5ndGg7aSs9MSl7Y29uc3QgbmZ0PW5mdHNbaV07aWYobmZ0VG9rZW5NaW5lci50eXBlTWFwW25mdC5wcm9wZXJ0aWVzW25mdFRva2VuTWluZXIudHlwZUZpZWxkXV0pe2NvbnN0IGFkanVzdGVkPWF3YWl0IHVwZGF0ZU5mdE1pbmluZ1Bvd2VyKHBvb2wsbmZ0LG5mdFRva2VuTWluZXIudHlwZU1hcFtuZnQucHJvcGVydGllc1tuZnRUb2tlbk1pbmVyLnR5cGVGaWVsZF1dLCEwLHVwZGF0ZVBvb2xUaW1lc3RhbXApO2FkanVzdGVkUG93ZXI9YWRqdXN0ZWRQb3dlci5wbHVzKGFkanVzdGVkKX1sYXN0SWRQcm9jZXNzZWQ9bmZ0Ll9pZH1uZnRzLmxlbmd0aDxwYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXQmJihjb21wbGV0ZT0hMCksb2Zmc2V0Kz1wYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXR9cmV0dXJue2FkanVzdGVkUG93ZXI6YWRqdXN0ZWRQb3dlcixuZXh0SWQ6bGFzdElkUHJvY2Vzc2VkLGNvbXBsZXRlOmNvbXBsZXRlfX1hc3luYyBmdW5jdGlvbiByZXN1bWVQb3dlclVwZGF0ZShwb29sLHBhcmFtcyl7bGV0e2luUHJvZ3Jlc3M6aW5Qcm9ncmVzcyx0b2tlbkluZGV4OnRva2VuSW5kZXgsbmZ0VG9rZW5JbmRleDpuZnRUb2tlbkluZGV4LGxhc3RJZDpsYXN0SWR9PXBvb2wudXBkYXRpbmc7Y29uc3R7dXBkYXRlUG9vbFRpbWVzdGFtcDp1cGRhdGVQb29sVGltZXN0YW1wfT1wb29sLnVwZGF0aW5nO2lmKCFpblByb2dyZXNzKXJldHVybjtpZih0b2tlbkluZGV4PHBvb2wudG9rZW5NaW5lcnMubGVuZ3RoKXtjb25zdCB0b2tlbkNvbmZpZz1wb29sLnRva2VuTWluZXJzW3Rva2VuSW5kZXhdLHthZGp1c3RlZFBvd2VyOmFkanVzdGVkUG93ZXIsbmV4dElkOm5leHRJZCxjb21wbGV0ZTpjb21wbGV0ZX09YXdhaXQgaW5pdE1pbmluZ1Bvd2VyKHBvb2wscGFyYW1zLHRva2VuQ29uZmlnLnN5bWJvbCxsYXN0SWQpO3Bvb2wudG90YWxQb3dlcj1hcGkuQmlnTnVtYmVyKHBvb2wudG90YWxQb3dlcikucGx1cyhhZGp1c3RlZFBvd2VyKSxjb21wbGV0ZT8obGFzdElkPTAsdG9rZW5JbmRleCs9MSk6bGFzdElkPW5leHRJZH1lbHNlIGlmKHBvb2wubmZ0VG9rZW5NaW5lciYmbmZ0VG9rZW5JbmRleDwxKXtjb25zdHtuZnRUb2tlbk1pbmVyOm5mdFRva2VuTWluZXJ9PXBvb2wse2FkanVzdGVkUG93ZXI6YWRqdXN0ZWRQb3dlcixuZXh0SWQ6bmV4dElkLGNvbXBsZXRlOmNvbXBsZXRlfT1hd2FpdCBpbml0TmZ0TWluaW5nUG93ZXIocG9vbCx1cGRhdGVQb29sVGltZXN0YW1wLHBhcmFtcyxuZnRUb2tlbk1pbmVyLGxhc3RJZCk7cG9vbC50b3RhbFBvd2VyPWFwaS5CaWdOdW1iZXIocG9vbC50b3RhbFBvd2VyKS5wbHVzKGFkanVzdGVkUG93ZXIpLGNvbXBsZXRlPyhsYXN0SWQ9MCxuZnRUb2tlbkluZGV4Kz0xKTpsYXN0SWQ9bmV4dElkfXRva2VuSW5kZXghPT1wb29sLnRva2VuTWluZXJzLmxlbmd0aHx8cG9vbC5uZnRUb2tlbk1pbmVyJiYxIT09bmZ0VG9rZW5JbmRleHx8KGluUHJvZ3Jlc3M9ITEsdG9rZW5JbmRleD0wLG5mdFRva2VuSW5kZXg9MCk7Y29uc3R7dXBkYXRpbmc6dXBkYXRpbmd9PXBvb2w7dXBkYXRpbmcuaW5Qcm9ncmVzcz1pblByb2dyZXNzLHVwZGF0aW5nLnRva2VuSW5kZXg9dG9rZW5JbmRleCx1cGRhdGluZy5uZnRUb2tlbkluZGV4PW5mdFRva2VuSW5kZXgsdXBkYXRpbmcubGFzdElkPWxhc3RJZCxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIscG9vbCl9ZnVuY3Rpb24gZ2VuZXJhdGVQb29sSWQocG9vbCl7Y29uc3QgdG9rZW5NaW5lclN0cmluZz1wb29sLnRva2VuTWluZXJzLm1hcCh0PT50LnN5bWJvbC5yZXBsYWNlKCIuIiwiLSIpKS5zb3J0KCkuam9pbigiLCIpLG5mdFRva2VuTWluZXJTdHJpbmc9cG9vbC5uZnRUb2tlbk1pbmVyPyI6Iitwb29sLm5mdFRva2VuTWluZXIuc3ltYm9sOiIiO3JldHVybmAke3Bvb2wubWluZWRUb2tlbi5yZXBsYWNlKCIuIiwiLSIpfToke3Rva2VuTWluZXJTdHJpbmd9JHtuZnRUb2tlbk1pbmVyU3RyaW5nfWB9YXN5bmMgZnVuY3Rpb24gcnVuTG90dGVyeShwb29sLHBhcmFtcyl7Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIiksd2lubmluZ051bWJlcnM9W10sbWluZWRUb2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwb29sLm1pbmVkVG9rZW59KSx3aW5uaW5nQW1vdW50PWFwaS5CaWdOdW1iZXIocG9vbC5sb3R0ZXJ5QW1vdW50KS5kaXZpZGVkQnkocG9vbC5sb3R0ZXJ5V2lubmVycykudG9GaXhlZChtaW5lZFRva2VuLnByZWNpc2lvbik7Zm9yKGxldCBpPTA7aTxwb29sLmxvdHRlcnlXaW5uZXJzO2krPTEpd2lubmluZ051bWJlcnNbaV09YXBpLkJpZ051bWJlcihwb29sLnRvdGFsUG93ZXIpLm11bHRpcGxpZWRCeShhcGkucmFuZG9tKCkpO2xldCBtaW5pbmdQb3dlcnMsb2Zmc2V0PTAsY3VtdWxhdGl2ZVBvd2VyPWFwaS5CaWdOdW1iZXIoMCksbmV4dEN1bXVsYXRpdmVQb3dlcj1hcGkuQmlnTnVtYmVyKDApLGNvbXB1dGVkV2lubmVycz0wO2NvbnN0IHdpbm5lcnM9W107Zm9yKDtjb21wdXRlZFdpbm5lcnM8cG9vbC5sb3R0ZXJ5V2lubmVyczspe21pbmluZ1Bvd2Vycz1hd2FpdCBhcGkuZGIuZmluZCgibWluaW5nUG93ZXIiLHtpZDpwb29sLmlkLHBvd2VyOnskZ3Q6eyRudW1iZXJEZWNpbWFsOiIwIn19fSxwYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXQsb2Zmc2V0LFt7aW5kZXg6InBvd2VyIixkZXNjZW5kaW5nOiEwfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGk9MDtpPG1pbmluZ1Bvd2Vycy5sZW5ndGg7aSs9MSl7Y29uc3QgbWluaW5nUG93ZXI9bWluaW5nUG93ZXJzW2ldO25leHRDdW11bGF0aXZlUG93ZXI9Y3VtdWxhdGl2ZVBvd2VyLnBsdXMobWluaW5nUG93ZXIucG93ZXIuJG51bWJlckRlY2ltYWwpO2ZvcihsZXQgaj0wO2o8cG9vbC5sb3R0ZXJ5V2lubmVycztqKz0xKXtjb25zdCBjdXJyZW50V2lubmluZ051bWJlcj13aW5uaW5nTnVtYmVyc1tqXTtjdW11bGF0aXZlUG93ZXIubHRlKGN1cnJlbnRXaW5uaW5nTnVtYmVyKSYmbmV4dEN1bXVsYXRpdmVQb3dlci5ndChjdXJyZW50V2lubmluZ051bWJlcikmJihjb21wdXRlZFdpbm5lcnMrPTEsd2lubmVycy5wdXNoKHt3aW5uZXI6bWluaW5nUG93ZXIuYWNjb3VudCx3aW5uaW5nTnVtYmVyOmN1cnJlbnRXaW5uaW5nTnVtYmVyLHdpbm5pbmdBbW91bnQ6d2lubmluZ0Ftb3VudH0pKX1jdW11bGF0aXZlUG93ZXI9bmV4dEN1bXVsYXRpdmVQb3dlcn1pZihjb21wdXRlZFdpbm5lcnM9PT1wb29sLmxvdHRlcnlXaW5uZXJzfHxtaW5pbmdQb3dlcnMubGVuZ3RoPHBhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdClicmVhaztvZmZzZXQrPXBhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdH1hcGkuZW1pdCgibWluaW5nTG90dGVyeSIse3Bvb2xJZDpwb29sLmlkLHdpbm5lcnM6d2lubmVyc30pO2ZvcihsZXQgaT0wO2k8d2lubmVycy5sZW5ndGg7aSs9MSl7Y29uc3Qgd2lubmVyPXdpbm5lcnNbaV07YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJpc3N1ZSIse3RvOndpbm5lci53aW5uZXIsc3ltYm9sOm1pbmVkVG9rZW4uc3ltYm9sLHF1YW50aXR5Ondpbm5pbmdBbW91bnR9KX1wb29sLm5leHRMb3R0ZXJ5VGltZXN0YW1wPWFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkucGx1cygzNjAwKnBvb2wubG90dGVyeUludGVydmFsSG91cnMqMWUzKS50b051bWJlcigpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBvb2xzIixwb29sKX1hY3Rpb25zLnNldEFjdGl2ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7aWQ6aWQsYWN0aXZlOmFjdGl2ZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSlyZXR1cm47Y29uc3QgcG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHtpZDppZH0pO2lmKGFwaS5hc3NlcnQocG9vbCwicG9vbCBpZCBub3QgZm91bmQiKSl7cG9vbC5hY3RpdmU9ISFhY3RpdmU7Y29uc3QgbWluZWRUb2tlbk9iamVjdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwb29sLm1pbmVkVG9rZW59KTtpZihhcGkuYXNzZXJ0KG1pbmVkVG9rZW5PYmplY3QmJihtaW5lZFRva2VuT2JqZWN0Lmlzc3Vlcj09PWFwaS5zZW5kZXJ8fCJCRUUiPT09bWluZWRUb2tlbk9iamVjdC5zeW1ib2wmJmFwaS5zZW5kZXI9PT1hcGkub3duZXIpLCJtdXN0IGJlIGlzc3VlciBvZiBtaW5lZFRva2VuIikpe2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpO3Bvb2wubmV4dExvdHRlcnlUaW1lc3RhbXA9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS5wbHVzKDM2MDAqcG9vbC5sb3R0ZXJ5SW50ZXJ2YWxIb3VycyoxZTMpLnRvTnVtYmVyKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9vbHMiLHBvb2wpfX19LGFjdGlvbnMudXBkYXRlUG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7aWQ6aWQsbG90dGVyeVdpbm5lcnM6bG90dGVyeVdpbm5lcnMsbG90dGVyeUludGVydmFsSG91cnM6bG90dGVyeUludGVydmFsSG91cnMsbG90dGVyeUFtb3VudDpsb3R0ZXJ5QW1vdW50LHRva2VuTWluZXJzOnRva2VuTWluZXJzLG5mdFRva2VuTWluZXI6bmZ0VG9rZW5NaW5lcixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse3Bvb2xVcGRhdGVGZWU6cG9vbFVwZGF0ZUZlZX09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxhdXRob3JpemVkPSEoIWFwaS5CaWdOdW1iZXIocG9vbFVwZGF0ZUZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShwb29sVXBkYXRlRmVlKTtpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgdXBkYXRlIGZlZSIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChpZCYmInN0cmluZyI9PXR5cGVvZiBpZCYmbG90dGVyeUFtb3VudCYmInN0cmluZyI9PXR5cGVvZiBsb3R0ZXJ5QW1vdW50JiYhYXBpLkJpZ051bWJlcihsb3R0ZXJ5QW1vdW50KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGxvdHRlcnlBbW91bnQpLmd0KDApLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIobG90dGVyeVdpbm5lcnMpJiZsb3R0ZXJ5V2lubmVycz49MSYmbG90dGVyeVdpbm5lcnM8PTIwLCJpbnZhbGlkIGxvdHRlcnlXaW5uZXJzOiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMjAgb25seSIpJiZhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIobG90dGVyeUludGVydmFsSG91cnMpJiZsb3R0ZXJ5SW50ZXJ2YWxIb3Vycz49MSYmbG90dGVyeUludGVydmFsSG91cnM8PTcyMCwiaW52YWxpZCBsb3R0ZXJ5SW50ZXJ2YWxIb3VyczogaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDcyMCBvbmx5Iikpe2NvbnN0IHBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvb2xzIix7aWQ6aWR9KTtpZihhcGkuYXNzZXJ0KHBvb2wsInBvb2wgaWQgbm90IGZvdW5kIikpe2NvbnN0IG1pbmVkVG9rZW5PYmplY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cG9vbC5taW5lZFRva2VufSk7aWYoYXBpLmFzc2VydChtaW5lZFRva2VuT2JqZWN0JiYobWluZWRUb2tlbk9iamVjdC5pc3N1ZXI9PT1hcGkuc2VuZGVyfHwiQkVFIj09PW1pbmVkVG9rZW5PYmplY3Quc3ltYm9sJiZhcGkuc2VuZGVyPT09YXBpLm93bmVyKSwibXVzdCBiZSBpc3N1ZXIgb2YgbWluZWRUb2tlbiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobG90dGVyeUFtb3VudCkuZHAoKTw9bWluZWRUb2tlbk9iamVjdC5wcmVjaXNpb24sIm1pbmVkVG9rZW4gcHJlY2lzaW9uIG1pc21hdGNoIGZvciBsb3R0ZXJ5QW1vdW50Iikpe2NvbnN0IHZhbGlkTWluZXJzQ2hhbmdlPWF3YWl0IHZhbGlkYXRlVG9rZW5NaW5lcnNDaGFuZ2UocG9vbC50b2tlbk1pbmVycyx0b2tlbk1pbmVycyxwb29sLm5mdFRva2VuTWluZXIsbmZ0VG9rZW5NaW5lcik7aWYodmFsaWRNaW5lcnNDaGFuZ2Upe3Bvb2wubG90dGVyeVdpbm5lcnM9bG90dGVyeVdpbm5lcnMscG9vbC5sb3R0ZXJ5SW50ZXJ2YWxIb3Vycz1sb3R0ZXJ5SW50ZXJ2YWxIb3Vycyxwb29sLmxvdHRlcnlBbW91bnQ9bG90dGVyeUFtb3VudCxwb29sLnRva2VuTWluZXJzPXRva2VuTWluZXJzLHBvb2wubmZ0VG9rZW5NaW5lcj1uZnRUb2tlbk1pbmVyO2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpO3ZhbGlkTWluZXJzQ2hhbmdlLmNoYW5nZWQmJihwb29sLnVwZGF0aW5nLnVwZGF0ZVBvb2xUaW1lc3RhbXA9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS50b051bWJlcigpLHBvb2wudXBkYXRpbmcuaW5Qcm9ncmVzcz0hMCxwb29sLnVwZGF0aW5nLnRva2VuSW5kZXg9MCxwb29sLnVwZGF0aW5nLm5mdFRva2VuSW5kZXg9MCxwb29sLnVwZGF0aW5nLmxhc3RJZD0wKSxwb29sLm5leHRMb3R0ZXJ5VGltZXN0YW1wPWFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkucGx1cygzNjAwKmxvdHRlcnlJbnRlcnZhbEhvdXJzKjFlMykudG9OdW1iZXIoKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIscG9vbCksYXBpLnNlbmRlciE9PWFwaS5vd25lciYmYXBpLkJpZ051bWJlcihwb29sVXBkYXRlRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6cG9vbFVwZGF0ZUZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSl9fX19fSxhY3Rpb25zLmNoYW5nZU5mdFByb3BlcnR5PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpZDppZCx0eXBlOnR5cGUscHJvcGVydHlOYW1lOnByb3BlcnR5TmFtZSxjaGFuZ2VBbW91bnQ6Y2hhbmdlQW1vdW50LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoaWQmJiJzdHJpbmciPT10eXBlb2YgaWQmJnR5cGUmJiJzdHJpbmciPT10eXBlb2YgdHlwZSYmcHJvcGVydHlOYW1lJiYic3RyaW5nIj09dHlwZW9mIHByb3BlcnR5TmFtZSYmY2hhbmdlQW1vdW50JiYic3RyaW5nIj09dHlwZW9mIGNoYW5nZUFtb3VudCYmIWFwaS5CaWdOdW1iZXIoY2hhbmdlQW1vdW50KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGNoYW5nZUFtb3VudCkuaXNGaW5pdGUoKSwiaW52YWxpZCBwYXJhbXMiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXJldHVybjtjb25zdCBwb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse2lkOmlkfSk7aWYoIWFwaS5hc3NlcnQocG9vbCwicG9vbCBpZCBub3QgZm91bmQiKSlyZXR1cm47Y29uc3QgcHJvcGVydHlJbmRleD1wb29sLm5mdFRva2VuTWluZXIucHJvcGVydGllcy5maW5kSW5kZXgocD0+cC5uYW1lPT09cHJvcGVydHlOYW1lKSxwcm9wZXJ0eT1wb29sLm5mdFRva2VuTWluZXIucHJvcGVydGllc1twcm9wZXJ0eUluZGV4XTtpZighYXBpLmFzc2VydChwcm9wZXJ0eSYmcHJvcGVydHkuYnVybkNoYW5nZSwicHJvcGVydHkgbm90IGVuYWJsZWQgZm9yIGJ1cm4gY2hhbmdlIikpcmV0dXJuO2NvbnN0IHR5cGVQcm9wZXJ0aWVzPXBvb2wubmZ0VG9rZW5NaW5lci50eXBlTWFwW3R5cGVdO2lmKCFhcGkuYXNzZXJ0KHR5cGVQcm9wZXJ0aWVzLCJ0eXBlIG5vdCBmb3VuZCIpKXJldHVybjtjb25zdCBidXJuU3ltYm9sPXByb3BlcnR5LmJ1cm5DaGFuZ2Uuc3ltYm9sLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmJ1cm5TeW1ib2x9KSxmZWU9YXBpLkJpZ051bWJlcihjaGFuZ2VBbW91bnQpLmFicygpLm11bHRpcGxpZWRCeShwcm9wZXJ0eS5idXJuQ2hhbmdlLnF1YW50aXR5KTtpZighYXBpLmFzc2VydChmZWUuZHAoKTw9dG9rZW4ucHJlY2lzaW9uLCJmZWUgcHJlY2lzaW9uIG1pc21hdGNoIGZvciBhbW91bnQgIitmZWUpKXJldHVybjtjb25zdCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOmJ1cm5TeW1ib2x9KSxhdXRob3JpemVkPWFwaS5CaWdOdW1iZXIoZmVlKS5sdGUoMCl8fGJhbGFuY2UmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5iYWxhbmNlKS5ndGUoZmVlKTtpZighYXBpLmFzc2VydChhdXRob3JpemVkLGB5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHVwZGF0ZSBmZWUgb2YgJHtmZWV9ICR7YnVyblN5bWJvbH1gKSlyZXR1cm47aWYodHlwZVByb3BlcnRpZXNbcHJvcGVydHlJbmRleF09YXBpLkJpZ051bWJlcih0eXBlUHJvcGVydGllc1twcm9wZXJ0eUluZGV4XSkucGx1cyhjaGFuZ2VBbW91bnQpLCF2YWxpZGF0ZU5mdFR5cGVNYXAocG9vbC5uZnRUb2tlbk1pbmVyLnR5cGVNYXAscG9vbC5uZnRUb2tlbk1pbmVyLnByb3BlcnRpZXMpKXJldHVybjtjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKTtwb29sLnVwZGF0aW5nLnVwZGF0ZVBvb2xUaW1lc3RhbXA9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS50b051bWJlcigpLHBvb2wudXBkYXRpbmcuaW5Qcm9ncmVzcz0hMCxwb29sLnVwZGF0aW5nLnRva2VuSW5kZXg9MCxwb29sLnVwZGF0aW5nLm5mdFRva2VuSW5kZXg9MCxwb29sLnVwZGF0aW5nLmxhc3RJZD0wLGF3YWl0IGFwaS5kYi51cGRhdGUoInBvb2xzIixwb29sKSxhcGkuQmlnTnVtYmVyKGZlZSkuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOmJ1cm5TeW1ib2wscXVhbnRpdHk6ZmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KX0sYWN0aW9ucy5jcmVhdGVQb29sPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtsb3R0ZXJ5V2lubmVyczpsb3R0ZXJ5V2lubmVycyxsb3R0ZXJ5SW50ZXJ2YWxIb3Vyczpsb3R0ZXJ5SW50ZXJ2YWxIb3Vycyxsb3R0ZXJ5QW1vdW50OmxvdHRlcnlBbW91bnQsbWluZWRUb2tlbjptaW5lZFRva2VuLHRva2VuTWluZXJzOnRva2VuTWluZXJzLG5mdFRva2VuTWluZXI6bmZ0VG9rZW5NaW5lcixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse3Bvb2xDcmVhdGlvbkZlZTpwb29sQ3JlYXRpb25GZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZENyZWF0aW9uPSEoIWFwaS5CaWdOdW1iZXIocG9vbENyZWF0aW9uRmVlKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHBvb2xDcmVhdGlvbkZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkQ3JlYXRpb24sInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgY3JlYXRpb24gZmVlIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG1pbmVkVG9rZW4mJiJzdHJpbmciPT10eXBlb2YgbWluZWRUb2tlbiYmbG90dGVyeUFtb3VudCYmInN0cmluZyI9PXR5cGVvZiBsb3R0ZXJ5QW1vdW50JiYhYXBpLkJpZ051bWJlcihsb3R0ZXJ5QW1vdW50KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGxvdHRlcnlBbW91bnQpLmd0KDApLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KG1pbmVkVG9rZW4ubGVuZ3RoPjAmJm1pbmVkVG9rZW4ubGVuZ3RoPD0xMCwiaW52YWxpZCBzeW1ib2w6IHVwcGVyY2FzZSBsZXR0ZXJzIG9ubHksIG1heCBsZW5ndGggb2YgMTAiKSYmYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGxvdHRlcnlXaW5uZXJzKSYmbG90dGVyeVdpbm5lcnM+PTEmJmxvdHRlcnlXaW5uZXJzPD0yMCwiaW52YWxpZCBsb3R0ZXJ5V2lubmVyczogaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDIwIG9ubHkiKSYmYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGxvdHRlcnlJbnRlcnZhbEhvdXJzKSYmbG90dGVyeUludGVydmFsSG91cnM+PTEmJmxvdHRlcnlJbnRlcnZhbEhvdXJzPD03MjAsImludmFsaWQgbG90dGVyeUludGVydmFsSG91cnM6IGludGVnZXIgYmV0d2VlbiAxIGFuZCA3MjAgb25seSIpKXtjb25zdCBtaW5lZFRva2VuT2JqZWN0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOm1pbmVkVG9rZW59KTtpZihhcGkuYXNzZXJ0KG1pbmVkVG9rZW5PYmplY3QsIm1pbmVkVG9rZW4gZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChtaW5lZFRva2VuT2JqZWN0Lmlzc3Vlcj09PWFwaS5zZW5kZXJ8fCJCRUUiPT09bWluZWRUb2tlbk9iamVjdC5zeW1ib2wmJmFwaS5zZW5kZXI9PT1hcGkub3duZXIsIm11c3QgYmUgaXNzdWVyIG9mIG1pbmVkVG9rZW4iKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGxvdHRlcnlBbW91bnQpLmRwKCk8PW1pbmVkVG9rZW5PYmplY3QucHJlY2lzaW9uLCJtaW5lZFRva2VuIHByZWNpc2lvbiBtaXNtYXRjaCBmb3IgbG90dGVyeUFtb3VudCIpJiZhd2FpdCB2YWxpZGF0ZVRva2VuTWluZXJzKHRva2VuTWluZXJzLG5mdFRva2VuTWluZXIpKXtjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKSxuZXdQb29sPXttaW5lZFRva2VuOm1pbmVkVG9rZW4sbG90dGVyeVdpbm5lcnM6bG90dGVyeVdpbm5lcnMsbG90dGVyeUludGVydmFsSG91cnM6bG90dGVyeUludGVydmFsSG91cnMsbG90dGVyeUFtb3VudDpsb3R0ZXJ5QW1vdW50LHRva2VuTWluZXJzOnRva2VuTWluZXJzLG5mdFRva2VuTWluZXI6bmZ0VG9rZW5NaW5lcixhY3RpdmU6ITEsbmV4dExvdHRlcnlUaW1lc3RhbXA6YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS5wbHVzKDM2MDAqbG90dGVyeUludGVydmFsSG91cnMqMWUzKS50b051bWJlcigpLHRvdGFsUG93ZXI6IjAifTtuZXdQb29sLmlkPWdlbmVyYXRlUG9vbElkKG5ld1Bvb2wpO2NvbnN0IGV4aXN0aW5nUG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHtpZDpuZXdQb29sLmlkfSk7aWYoYXBpLmFzc2VydCghZXhpc3RpbmdQb29sLCJwb29sIGFscmVhZHkgZXhpc3RzIikpe2ZvcihsZXQgaT0wO2k8dG9rZW5NaW5lcnMubGVuZ3RoO2krPTEpe2NvbnN0IHRva2VuQ29uZmlnPXRva2VuTWluZXJzW2ldO2F3YWl0IGFwaS5kYi5pbnNlcnQoInRva2VuUG9vbHMiLHtzeW1ib2w6dG9rZW5Db25maWcuc3ltYm9sLGlkOm5ld1Bvb2wuaWR9KX1uZnRUb2tlbk1pbmVyJiZhd2FpdCBhcGkuZGIuaW5zZXJ0KCJuZnRUb2tlblBvb2xzIix7c3ltYm9sOm5mdFRva2VuTWluZXIuc3ltYm9sLGlkOm5ld1Bvb2wuaWR9KSxuZXdQb29sLnVwZGF0aW5nPXtpblByb2dyZXNzOiEwLHVwZGF0ZVBvb2xUaW1lc3RhbXA6YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS50b051bWJlcigpLHRva2VuSW5kZXg6MCxuZnRUb2tlbkluZGV4OjAsbGFzdElkOjB9O2NvbnN0IGluc2VydGVkUG9vbD1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJwb29scyIsbmV3UG9vbCk7YXBpLnNlbmRlciE9PWFwaS5vd25lciYmYXBpLkJpZ051bWJlcihwb29sQ3JlYXRpb25GZWUpLmd0KDApJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTpwb29sQ3JlYXRpb25GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLGFwaS5lbWl0KCJjcmVhdGVQb29sIix7aWQ6aW5zZXJ0ZWRQb29sLmlkfSl9fX19LGFjdGlvbnMuY2hlY2tQZW5kaW5nTG90dGVyaWVzPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHVwZGF0aW5nTG90dGVyaWVzPWF3YWl0IGFwaS5kYi5maW5kKCJwb29scyIseyJ1cGRhdGluZy5pblByb2dyZXNzIjohMH0scGFyYW1zLm1heExvdHRlcmllc1BlckJsb2NrLDAsW3tpbmRleDoiaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTx1cGRhdGluZ0xvdHRlcmllcy5sZW5ndGg7aSs9MSl7Y29uc3QgcG9vbD11cGRhdGluZ0xvdHRlcmllc1tpXTthd2FpdCByZXN1bWVQb3dlclVwZGF0ZShwb29sLHBhcmFtcyl9Y29uc3QgcGVuZGluZ0xvdHRlcmllcz1hd2FpdCBhcGkuZGIuZmluZCgicG9vbHMiLHthY3RpdmU6ITAsInVwZGF0aW5nLmluUHJvZ3Jlc3MiOiExLG5leHRMb3R0ZXJ5VGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19LHBhcmFtcy5tYXhMb3R0ZXJpZXNQZXJCbG9jaywwLFt7aW5kZXg6ImlkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8cGVuZGluZ0xvdHRlcmllcy5sZW5ndGg7aSs9MSl7Y29uc3QgcG9vbD1wZW5kaW5nTG90dGVyaWVzW2ldO2F3YWl0IHJ1bkxvdHRlcnkocG9vbCxwYXJhbXMpfX19LGFjdGlvbnMuaGFuZGxlU3Rha2VDaGFuZ2U9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGRlbGVnYXRlZDpkZWxlZ2F0ZWQsY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2FwaS5hc3NlcnQoY2FsbGluZ0NvbnRyYWN0SW5mbyYmInRva2VucyI9PT1jYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsIm11c3QgYmUgY2FsbGVkIGZyb20gdG9rZW5zIGNvbnRyYWN0IikmJmF3YWl0IGZpbmRBbmRQcm9jZXNzQWxsKCJtaW5pbmciLCJ0b2tlblBvb2xzIix7c3ltYm9sOnN5bWJvbH0sYXN5bmMgdG9rZW5Qb29sPT57Y29uc3QgcG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHtpZDp0b2tlblBvb2wuaWR9KTtsZXQgYWRqdXN0ZWQ7YWRqdXN0ZWQ9ZGVsZWdhdGVkP2F3YWl0IHVwZGF0ZU1pbmluZ1Bvd2VyKHBvb2wsc3ltYm9sLGFjY291bnQsMCxxdWFudGl0eSk6YXdhaXQgdXBkYXRlTWluaW5nUG93ZXIocG9vbCxzeW1ib2wsYWNjb3VudCxxdWFudGl0eSwwKSxwb29sLnRvdGFsUG93ZXI9YWRqdXN0ZWQucGx1cyhwb29sLnRvdGFsUG93ZXIpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBvb2xzIixwb29sKX0pfSxhY3Rpb25zLmhhbmRsZU5mdENoYW5nZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxuZnQ6bmZ0LGFkZDphZGQsY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2FwaS5hc3NlcnQoY2FsbGluZ0NvbnRyYWN0SW5mbyYmIm5mdCI9PT1jYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsIm11c3QgYmUgY2FsbGVkIGZyb20gbmZ0IGNvbnRyYWN0IikmJmF3YWl0IGZpbmRBbmRQcm9jZXNzQWxsKCJtaW5pbmciLCJuZnRUb2tlblBvb2xzIix7c3ltYm9sOnN5bWJvbH0sYXN5bmMgdG9rZW5Qb29sPT57Y29uc3QgcG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHtpZDp0b2tlblBvb2wuaWR9KTtpZihwb29sLnVwZGF0aW5nLmluUHJvZ3Jlc3MmJnBvb2wudXBkYXRpbmcudG9rZW5JbmRleD09PXBvb2wudG9rZW5NaW5lcnMubGVuZ3RoJiZwb29sLnVwZGF0aW5nLmxhc3RJZDxuZnQuX2lkKXJldHVybjtjb25zdCB0eXBlUHJvcGVydGllcz1wb29sLm5mdFRva2VuTWluZXIudHlwZU1hcFtuZnQucHJvcGVydGllc1twb29sLm5mdFRva2VuTWluZXIudHlwZUZpZWxkXV07aWYodHlwZVByb3BlcnRpZXMpe2NvbnN0IGFkanVzdGVkPWF3YWl0IHVwZGF0ZU5mdE1pbmluZ1Bvd2VyKHBvb2wsbmZ0LHR5cGVQcm9wZXJ0aWVzLGFkZCxwb29sLnVwZGF0aW5nLnVwZGF0ZVBvb2xUaW1lc3RhbXApO3Bvb2wudG90YWxQb3dlcj1hZGp1c3RlZC5wbHVzKHBvb2wudG90YWxQb3dlciksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9vbHMiLHBvb2wpfX0pfTs="}}}