{"id":"ssc-testnet-reaz","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"mining","params":"","code":"Y29uc3QgUFJPUEVSVFlfT1BTPXtBREQ6e2FkZDooZSx0KT0+YXBpLkJpZ051bWJlcihlKS5wbHVzKHQpLHJlbW92ZTooZSx0KT0+YXBpLkJpZ051bWJlcihlKS5taW51cyh0KSxkZWZhdWx0VmFsdWU6MH0sTVVMVElQTFk6e2FkZDooZSx0KT0+YXBpLkJpZ051bWJlcihlKS5tdWx0aXBsaWVkQnkodCkscmVtb3ZlOihlLHQpPT5hcGkuQmlnTnVtYmVyKGUpLmRpdmlkZWRCeSh0KSxkZWZhdWx0VmFsdWU6MX19O2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygibWluaW5nUG93ZXIiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJtaW5pbmdQb3dlciIsWyJpZCIsInBvd2VyIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicG9vbHMiLFsiaWQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0b2tlblBvb2xzIixbInN5bWJvbCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoIm5mdFRva2VuUG9vbHMiLFsic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGFyYW1zIik7Y29uc3QgZT17cG9vbENyZWF0aW9uRmVlOiIxMDAwIixwb29sVXBkYXRlRmVlOiIzMDAiLG1heExvdHRlcmllc1BlckJsb2NrOjIwLG1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2s6MWU0LHByb2Nlc3NRdWVyeUxpbWl0OjFlM307YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixlKX1lbHNle2NvbnN0IHQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO3QudXBkYXRlSW5kZXh8fChhd2FpdCBhcGkuZGIuYWRkSW5kZXhlcygibWluaW5nUG93ZXIiLFt7bmFtZToiYnlQb29sSWRBbmRBY2NvdW50IixpbmRleDp7aWQ6MSxhY2NvdW50OjF9fV0pLHQudXBkYXRlSW5kZXg9MSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHQpKX19LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIGU9PntpZihhcGkuc2VuZGVyPT09YXBpLm93bmVyKXt2YXJ7cG9vbENyZWF0aW9uRmVlOnQscG9vbFVwZGF0ZUZlZTppLG1heExvdHRlcmllc1BlckJsb2NrOm4sbWF4QmFsYW5jZXNQcm9jZXNzZWRQZXJCbG9jazphLHByb2Nlc3NRdWVyeUxpbWl0OmV9PWU7Y29uc3Qgcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYodCl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiB0JiYhYXBpLkJpZ051bWJlcih0KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHQpLmd0ZSgwKSwiaW52YWxpZCBwb29sQ3JlYXRpb25GZWUiKSlyZXR1cm47ci5wb29sQ3JlYXRpb25GZWU9dH1pZihpKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGkmJiFhcGkuQmlnTnVtYmVyKGkpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoaSkuZ3RlKDApLCJpbnZhbGlkIHBvb2xVcGRhdGVGZWUiKSlyZXR1cm47ci5wb29sVXBkYXRlRmVlPWl9aWYobil7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihuKSYmMTw9biwiaW52YWxpZCBtYXhMb3R0ZXJpZXNQZXJCbG9jayIpKXJldHVybjtyLm1heExvdHRlcmllc1BlckJsb2NrPW59aWYoYSl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihhKSYmMTw9YSwiaW52YWxpZCBtYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrIikpcmV0dXJuO3IubWF4QmFsYW5jZXNQcm9jZXNzZWRQZXJCbG9jaz1hfWlmKGUpe2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoZSkmJjE8PWUsImludmFsaWQgcHJvY2Vzc1F1ZXJ5TGltaXQiKSlyZXR1cm47ci5wcm9jZXNzUXVlcnlMaW1pdD1lfWF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscil9fTtjb25zdCBmaW5kQW5kUHJvY2Vzc0FsbD1hc3luYyhlLHQsaSxuKT0+e2xldCBhPTA7dmFyIHI7bGV0IG89ITE7Zm9yKDshbzspaWYocj1hd2FpdCBhcGkuZGIuZmluZEluVGFibGUoZSx0LGksMWUzLGEpKXtmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrPTEpYXdhaXQgbihyW2VdKTtyLmxlbmd0aDwxZTM/bz0hMDphKz0xZTN9fTthc3luYyBmdW5jdGlvbiB2YWxpZGF0ZU5mdFByb3BlcnRpZXModCl7aWYoIWFwaS5hc3NlcnQodCYmQXJyYXkuaXNBcnJheSh0KSwiaW52YWxpZCBuZnRUb2tlbk1pbmVyIHByb3BlcnRpZXMiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydCgwPHQubGVuZ3RoJiZ0Lmxlbmd0aDw9NCwibmZ0VG9rZW5NaW5lciBwcm9wZXJ0aWVzIHNpemUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDQiKSlyZXR1cm4hMTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPTEpe3ZhciBpPXRbZV0sbj1PYmplY3Qua2V5cyhpKTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrPTEpe3ZhciBhPW5bZV07aWYoIm9wIj09PWEpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgaS5vcCYmUFJPUEVSVFlfT1BTW2kub3BdLCJuZnRUb2tlbk1pbmVyIHByb3BlcnRpZXMgb3Agc2hvdWxkIGJlIEFERCBvciBNVUxUSVBMWSIpKXJldHVybiExfWVsc2UgaWYoIm5hbWUiPT09YSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBpLm5hbWUmJmkubmFtZS5sZW5ndGg8PTE2LCJuZnRUb2tlbk1pbmVyIHByb3BlcnRpZXMgbmFtZSBzaG91bGQgYmUgYSBzdHJpbmcgb2YgbGVuZ3RoIDw9IDE2IikpcmV0dXJuITF9ZWxzZXtpZigiYnVybkNoYW5nZSIhPT1hKXJldHVybiBhcGkuYXNzZXJ0KCExLCJuZnRUb2tlbk1pbmVyIHByb3BlcnRpZXMgZmllbGQgaW52YWxpZCIpLCExO2lmKCFhcGkuYXNzZXJ0KCJvYmplY3QiPT10eXBlb2YgaS5idXJuQ2hhbmdlJiYic3RyaW5nIj09dHlwZW9mIGkuYnVybkNoYW5nZS5zeW1ib2wmJmFwaS5CaWdOdW1iZXIoaS5idXJuQ2hhbmdlLnF1YW50aXR5KS5pc0Zpbml0ZSgpJiZhcGkuQmlnTnVtYmVyKGkuYnVybkNoYW5nZS5xdWFudGl0eSkuaXNQb3NpdGl2ZSgpLCJuZnRUb2tlbk1pbmVyIHByb3BlcnRpZXMgYnVybkNoYW5nZSBpbnZhbGlkIikpcmV0dXJuITE7YT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDppLmJ1cm5DaGFuZ2Uuc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQoYSwibmZ0VG9rZW5NaW5lciBwcm9wZXJ0aWVzIGJ1cm5DaGFuZ2Ugc3ltYm9sIG5vdCBmb3VuZCIpKXJldHVybiExfX19cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVOZnRUeXBlTWFwKHQsaSl7aWYoIWFwaS5hc3NlcnQodCYmIm9iamVjdCI9PXR5cGVvZiB0LCJpbnZhbGlkIG5mdFRva2VuTWluZXIgdHlwZU1hcCIpKXJldHVybiExO3ZhciBuPU9iamVjdC5rZXlzKHQpO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSs9MSl7dmFyIGE9dFtuW2VdXTtpZighYXBpLmFzc2VydChBcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aD09PWkubGVuZ3RoLCJuZnRUb2tlbk1pbmVyIHR5cGVDb25maWcgbGVuZ3RoIG1pc21hdGNoIikpcmV0dXJuITE7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKz0xKXtjb25zdCByPWFwaS5CaWdOdW1iZXIoYVtlXSk7aWYoIWFwaS5hc3NlcnQoIXIuaXNOYU4oKSYmci5pc0Zpbml0ZSgpLCJuZnRUb2tlbk1pbmVyIHR5cGVDb25maWcgaW52YWxpZCIpKXJldHVybiExO2lmKCJNVUxUSVBMWSI9PT1pW2VdLm9wJiYhYXBpLmFzc2VydChyLmd0ZSguMDEpJiZyLmx0ZSgxMDApLCJuZnRUb2tlbk1pbmVyIHR5cGVDb25maWcgTVVMVElQTFkgcHJvcGVydHkgc2hvdWxkIGJlIGJldHdlZW4gMC4wMSBhbmQgMTAwIikpcmV0dXJuITF9fXJldHVybiEwfWFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlVG9rZW5NaW5lcnModCxlKXtpZighYXBpLmFzc2VydCh0JiZBcnJheS5pc0FycmF5KHQpLCJ0b2tlbk1pbmVycyBpbnZhbGlkIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQoMTw9dC5sZW5ndGgmJnQubGVuZ3RoPD0yfHxlJiYwPT09dC5sZW5ndGgsIm9ubHkgMSBvciAyIHRva2VuTWluZXJzIGFsbG93ZWQiKSlyZXR1cm4hMTtjb25zdCBpPW5ldyBTZXQ7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0xKXt2YXIgbj10W2VdO2lmKCFhcGkuYXNzZXJ0KG4mJm4uc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG4uc3ltYm9sLCJ0b2tlbk1pbmVycyBpbnZhbGlkIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQoIWkuaGFzKG4uc3ltYm9sKSwidG9rZW5NaW5lcnMgY2Fubm90IGhhdmUgZHVwbGljYXRlIHN5bWJvbHMiKSlyZXR1cm4hMTtpLmFkZChuLnN5bWJvbCk7dmFye3N5bWJvbDphfT1uLGE9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6YX0pO2lmKCFhcGkuYXNzZXJ0KGEmJmEuc3Rha2luZ0VuYWJsZWQsInRva2VuTWluZXJzIG11c3QgaGF2ZSBzdGFraW5nIGVuYWJsZWQiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG4ubXVsdGlwbGllcikmJjE8PW4ubXVsdGlwbGllciYmbi5tdWx0aXBsaWVyPD0xMDAsInRva2VuTWluZXIgbXVsdGlwbGllciBtdXN0IGJlIGFuIGludGVnZXIgZnJvbSAxIHRvIDEwMCIpKXJldHVybiExfWlmKGUpe2lmKCFhcGkuYXNzZXJ0KGUuc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIGUuc3ltYm9sLCJuZnRUb2tlbk1pbmVyIGludmFsaWQiKSlyZXR1cm4hMTt2YXJ7c3ltYm9sOnIsdHlwZU1hcDpvLHByb3BlcnRpZXM6cyx0eXBlRmllbGQ6ZX09ZSxyPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpyfSk7aWYoIWFwaS5hc3NlcnQociYmci5kZWxlZ2F0aW9uRW5hYmxlZCwibmZ0VG9rZW5NaW5lciBtdXN0IGhhdmUgZGVsZWdhdGlvbiBlbmFibGVkIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlLCJ0eXBlRmllbGQgbXVzdCBiZSBhIHN0cmluZyIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KHIucHJvcGVydGllc1tlXSYmInN0cmluZyI9PT1yLnByb3BlcnRpZXNbZV0udHlwZSwibmZ0VG9rZW5NaW5lciBtdXN0IGhhdmUgc3RyaW5nIHR5cGUgcHJvcGVydHkiKSlyZXR1cm4hMTtpZighYXdhaXQgdmFsaWRhdGVOZnRQcm9wZXJ0aWVzKHMpKXJldHVybiExO2lmKCF2YWxpZGF0ZU5mdFR5cGVNYXAobyxzKSlyZXR1cm4hMX1yZXR1cm4hMH1hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZVRva2VuTWluZXJzQ2hhbmdlKHQsaSxuLGUpe2lmKCFhcGkuYXNzZXJ0KGkubGVuZ3RoPT09dC5sZW5ndGgsImNhbm5vdCBjaGFuZ2Ugd2hpY2ggdG9rZW5zIGFyZSBpbiB0b2tlbk1pbmVycyIpKXJldHVybiExO2xldCBhPSExO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSs9MSl7dmFyIHI9dFtlXSxvPWlbZV07aWYoIWFwaS5hc3NlcnQoci5zeW1ib2w9PT1vLnN5bWJvbCwiY2Fubm90IGNoYW5nZSB3aGljaCB0b2tlbnMgYXJlIGluIHRva2VuTWluZXJzIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihvLm11bHRpcGxpZXIpJiYxPD1vLm11bHRpcGxpZXImJm8ubXVsdGlwbGllcjw9MTAwLCJ0b2tlbk1pbmVyIG11bHRpcGxpZXIgbXVzdCBiZSBhbiBpbnRlZ2VyIGZyb20gMSB0byAxMDAiKSlyZXR1cm4hMTtyLm11bHRpcGxpZXIhPT1vLm11bHRpcGxpZXImJihhPSEwKX1pZighYXBpLmFzc2VydCghIW49PSEhZSwiY2Fubm90IGNoYW5nZSBuZnRUb2tlbk1pbmVyIHRva2VuIikpcmV0dXJuITE7aWYoZSl7aWYoIWFwaS5hc3NlcnQobi5zeW1ib2w9PT1lLnN5bWJvbCwiY2Fubm90IGNoYW5nZSBuZnRUb2tlbk1pbmVyIHRva2VuIikpcmV0dXJuITE7dmFye3R5cGVNYXA6cyxwcm9wZXJ0aWVzOnAsdHlwZUZpZWxkOmV9PWU7aWYoIWFwaS5hc3NlcnQoZSYmInN0cmluZyI9PXR5cGVvZiBlJiZlPT09bi50eXBlRmllbGQsImNhbm5vdCBjaGFuZ2UgbmZ0VG9rZW5NaW5lciB0eXBlRmllbGQiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydChzJiYib2JqZWN0Ij09dHlwZW9mIHMsImludmFsaWQgbmZ0VG9rZW5NaW5lciB0eXBlTWFwIikpcmV0dXJuITE7aWYoIWF3YWl0IHZhbGlkYXRlTmZ0UHJvcGVydGllcyhwKSlyZXR1cm4hMTtpZihwLmxlbmd0aCE9PW4ucHJvcGVydGllcy5sZW5ndGgpYT0hMDtlbHNlIGZvcihsZXQgZT0wO2U8cC5sZW5ndGg7ZSs9MSl7dmFyIGw9cFtlXSxkPW4ucHJvcGVydGllc1tlXTtsLm9wIT09ZC5vcCYmKGE9ITApfWlmKCF2YWxpZGF0ZU5mdFR5cGVNYXAocyxwKSlyZXR1cm4hMTt2YXIgdT1PYmplY3Qua2V5cyhuLnR5cGVNYXApO2ZvcihsZXQgZT0wO2U8dS5sZW5ndGg7ZSs9MSl7dmFyIG09dVtlXSxjPW4udHlwZU1hcFttXSxmPXNbbV07aWYoIWFwaS5hc3NlcnQoZiwidHlwZUNvbmZpZyB0eXBlcyBtdXN0IGJlIGEgc3VwZXJzZXQgb2Ygb2xkIHR5cGVDb25maWcgdHlwZXMiKSlyZXR1cm4hMTtmb3IobGV0IGU9MDtlPGYubGVuZ3RoO2UrPTEpY1tlXSE9PWZbZV0mJihhPSEwKX19cmV0dXJue2NoYW5nZWQ6YX19ZnVuY3Rpb24gY29tcHV0ZU1pbmluZ1Bvd2VyKGksdCxuKXtsZXQgYT1hcGkuQmlnTnVtYmVyKDApO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9MSlpLmJhbGFuY2VzW2VdJiYoYT1hLnBsdXMoYXBpLkJpZ051bWJlcihpLmJhbGFuY2VzW2VdKS5tdWx0aXBsaWVkQnkodFtlXS5tdWx0aXBsaWVyKSkpO2lmKG4mJmkubmZ0QmFsYW5jZXMpe2xldCB0PWFwaS5CaWdOdW1iZXIoMSk7Zm9yKGxldCBlPTA7ZTxuLnByb3BlcnRpZXMubGVuZ3RoO2UrPTEpdD10Lm11bHRpcGxpZWRCeShpLm5mdEJhbGFuY2VzW2VdKTthPWEucGx1cyh0KX1yZXR1cm4gYS5pc1Bvc2l0aXZlKCkmJmEuaXNGaW5pdGUoKT9hOmFwaS5CaWdOdW1iZXIoMCl9YXN5bmMgZnVuY3Rpb24gdXBkYXRlTWluaW5nUG93ZXIoZSx0LGksbixhLHIpe2xldCBvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJtaW5pbmdQb3dlciIse2lkOmUuaWQsYWNjb3VudDppfSkscz1hcGkuQmlnTnVtYmVyKG4pLHA9YXBpLkJpZ051bWJlcigwKTtzPXMucGx1cyhhKTthPWUudG9rZW5NaW5lcnMuZmluZEluZGV4KGU9PmUuc3ltYm9sPT09dCk7aWYobylvLmJhbGFuY2VzW2FdJiYhcnx8KG8uYmFsYW5jZXNbYV09IjAiKSxvLmJhbGFuY2VzW2FdPXMucGx1cyhvLmJhbGFuY2VzW2FdKSxwPW8ucG93ZXIuJG51bWJlckRlY2ltYWw7ZWxzZXtjb25zdCBkPXt9O2RbYV09cyxvPXtpZDplLmlkLGFjY291bnQ6aSxiYWxhbmNlczpkLHBvd2VyOnskbnVtYmVyRGVjaW1hbDoiMCJ9fSxvPWF3YWl0IGFwaS5kYi5pbnNlcnQoIm1pbmluZ1Bvd2VyIixvKX1jb25zdCBsPWNvbXB1dGVNaW5pbmdQb3dlcihvLGUudG9rZW5NaW5lcnMsZS5uZnRUb2tlbk1pbmVyKTtyZXR1cm4gby5wb3dlcj17JG51bWJlckRlY2ltYWw6bH0sYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWluaW5nUG93ZXIiLG8pLGwubWludXMocCl9ZnVuY3Rpb24gZ2V0TmZ0QWNjb3VudChlKXtyZXR1cm4ibWluaW5nIj09PWUuZGVsZWdhdGVkVG8uYWNjb3VudCYmImMiPT09ZS5kZWxlZ2F0ZWRUby5vd25lZEJ5P2UuYWNjb3VudDoidSI9PT1lLmRlbGVnYXRlZFRvLm93bmVkQnk/ZS5kZWxlZ2F0ZWRUby5hY2NvdW50Om51bGx9YXN5bmMgZnVuY3Rpb24gdXBkYXRlTmZ0TWluaW5nUG93ZXIodCxlLGksbixhKXtlPWdldE5mdEFjY291bnQoZSk7aWYoIWUpcmV0dXJuIDA7bGV0IHI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1pbmluZ1Bvd2VyIix7aWQ6dC5pZCxhY2NvdW50OmV9KSxvPWFwaS5CaWdOdW1iZXIoMCk7aWYocil7ci5uZnRCYWxhbmNlc3x8KHIubmZ0QmFsYW5jZXM9e30pO2NvbnN0e25mdEJhbGFuY2VzOmR9PXI7Zm9yKGxldCBlPTA7ZTx0Lm5mdFRva2VuTWluZXIucHJvcGVydGllcy5sZW5ndGg7ZSs9MSl7dmFyIHM9dC5uZnRUb2tlbk1pbmVyLnByb3BlcnRpZXNbZV07Y29uc3QgdT1QUk9QRVJUWV9PUFNbcy5vcF07ZFtlXSYmci51cGRhdGVQb29sVGltZXN0YW1wPT09YXx8KGRbZV09dS5kZWZhdWx0VmFsdWUpLGRbZV09bj91LmFkZChkW2VdLGlbZV0pOnUucmVtb3ZlKGRbZV0saVtlXSl9bz1yLnBvd2VyLiRudW1iZXJEZWNpbWFsfWVsc2V7Y29uc3QgbT17fTtmb3IobGV0IGU9MDtlPHQubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmxlbmd0aDtlKz0xKXt2YXIgcD10Lm5mdFRva2VuTWluZXIucHJvcGVydGllc1tlXTtjb25zdCBjPVBST1BFUlRZX09QU1twLm9wXTtuP21bZV09Yy5hZGQoYy5kZWZhdWx0VmFsdWUsaVtlXSk6YXBpLmFzc2VydCghMSwidW5leHBlY3RlZCBjb25kaXRpb246IHJlbW92ZSB3aXRob3V0IHByZXZpb3VzIG1pbmluZ1Bvd2VyIil9cj17aWQ6dC5pZCxhY2NvdW50OmUsYmFsYW5jZXM6e30sbmZ0QmFsYW5jZXM6bSxwb3dlcjp7JG51bWJlckRlY2ltYWw6IjAifX0scj1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJtaW5pbmdQb3dlciIscil9Y29uc3QgbD1jb21wdXRlTWluaW5nUG93ZXIocix0LnRva2VuTWluZXJzLHQubmZ0VG9rZW5NaW5lcik7cmV0dXJuIHIucG93ZXI9eyRudW1iZXJEZWNpbWFsOmx9LHIudXBkYXRlUG9vbFRpbWVzdGFtcD1hLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1pbmluZ1Bvd2VyIixyKSxsLm1pbnVzKG8pfWFzeW5jIGZ1bmN0aW9uIGluaXRNaW5pbmdQb3dlcih0LGUsaSxuKXtsZXQgYT1hcGkuQmlnTnVtYmVyKDApLHI9MCxvPW4scz0hMSxwO2Zvcig7IXMmJnI8ZS5tYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrOyl7cD1hd2FpdCBhcGkuZGIuZmluZEluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7c3ltYm9sOmksX2lkOnskZ3Q6bn19LGUucHJvY2Vzc1F1ZXJ5TGltaXQscixbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBlPTA7ZTxwLmxlbmd0aDtlKz0xKXt2YXIgbCxkPXBbZV07KGFwaS5CaWdOdW1iZXIoZC5zdGFrZSkuZ3QoMCl8fGFwaS5CaWdOdW1iZXIoZC5kZWxlZ2F0aW9uc0luKS5ndCgwKSkmJihsPWF3YWl0IHVwZGF0ZU1pbmluZ1Bvd2VyKHQsaSxkLmFjY291bnQsZC5zdGFrZSxkLmRlbGVnYXRpb25zSW4sITApLGE9YS5wbHVzKGwpKSxvPWQuX2lkfXAubGVuZ3RoPGUucHJvY2Vzc1F1ZXJ5TGltaXQmJihzPSEwKSxyKz1lLnByb2Nlc3NRdWVyeUxpbWl0fXJldHVybnthZGp1c3RlZFBvd2VyOmEsbmV4dElkOm8sY29tcGxldGU6c319YXN5bmMgZnVuY3Rpb24gaW5pdE5mdE1pbmluZ1Bvd2VyKHQsaSxlLG4sYSl7bGV0IHI9YXBpLkJpZ051bWJlcigwKSxvPTAscz1hLHA9ITEsbDtmb3IoOyFwJiZvPGUubWF4QmFsYW5jZXNQcm9jZXNzZWRQZXJCbG9jazspe2w9YXdhaXQgYXBpLmRiLmZpbmRJblRhYmxlKCJuZnQiLGAke24uc3ltYm9sfWluc3RhbmNlc2Ase19pZDp7JGd0OmF9LGRlbGVnYXRlZFRvOnskbmU6bnVsbH0sImRlbGVnYXRlZFRvLnVuZGVsZWdhdGVBdCI6eyRlcTpudWxsfX0sZS5wcm9jZXNzUXVlcnlMaW1pdCxvLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGU9MDtlPGwubGVuZ3RoO2UrPTEpe3ZhciBkLHU9bFtlXTtuLnR5cGVNYXBbdS5wcm9wZXJ0aWVzW24udHlwZUZpZWxkXV0mJihkPWF3YWl0IHVwZGF0ZU5mdE1pbmluZ1Bvd2VyKHQsdSxuLnR5cGVNYXBbdS5wcm9wZXJ0aWVzW24udHlwZUZpZWxkXV0sITAsaSkscj1yLnBsdXMoZCkpLHM9dS5faWR9bC5sZW5ndGg8ZS5wcm9jZXNzUXVlcnlMaW1pdCYmKHA9ITApLG8rPWUucHJvY2Vzc1F1ZXJ5TGltaXR9cmV0dXJue2FkanVzdGVkUG93ZXI6cixuZXh0SWQ6cyxjb21wbGV0ZTpwfX1hc3luYyBmdW5jdGlvbiByZXN1bWVQb3dlclVwZGF0ZShlLHQpe2xldHtpblByb2dyZXNzOmksdG9rZW5JbmRleDpuLG5mdFRva2VuSW5kZXg6YSxsYXN0SWQ6cn09ZS51cGRhdGluZzt2YXIgbyxzLHAse3VwZGF0ZVBvb2xUaW1lc3RhbXA6bH09ZS51cGRhdGluZztpZihpKXtuPGUudG9rZW5NaW5lcnMubGVuZ3RoPyh7YWRqdXN0ZWRQb3dlcjpvLG5leHRJZDpwLGNvbXBsZXRlOnN9PWF3YWl0IGluaXRNaW5pbmdQb3dlcihlLHQsZS50b2tlbk1pbmVyc1tuXS5zeW1ib2wsciksZS50b3RhbFBvd2VyPWFwaS5CaWdOdW1iZXIoZS50b3RhbFBvd2VyKS5wbHVzKG8pLHM/KHI9MCxuKz0xKTpyPXApOmUubmZ0VG9rZW5NaW5lciYmYTwxJiYoe25mdFRva2VuTWluZXI6cH09ZSx7YWRqdXN0ZWRQb3dlcjpsLG5leHRJZDp0LGNvbXBsZXRlOnB9PWF3YWl0IGluaXROZnRNaW5pbmdQb3dlcihlLGwsdCxwLHIpLGUudG90YWxQb3dlcj1hcGkuQmlnTnVtYmVyKGUudG90YWxQb3dlcikucGx1cyhsKSxwPyhyPTAsYSs9MSk6cj10KSxuIT09ZS50b2tlbk1pbmVycy5sZW5ndGh8fGUubmZ0VG9rZW5NaW5lciYmMSE9PWF8fChpPSExLG49MCxhPTApO2NvbnN0e3VwZGF0aW5nOmR9PWU7ZC5pblByb2dyZXNzPWksZC50b2tlbkluZGV4PW4sZC5uZnRUb2tlbkluZGV4PWEsZC5sYXN0SWQ9cixhd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIsZSl9fWZ1bmN0aW9uIGdlbmVyYXRlUG9vbElkKGUpe3ZhciB0PWUuZXh0ZXJuYWxDb250cmFjdCYmZS5leHRlcm5hbE1pbmVycz9gRVhULSR7ZS5leHRlcm5hbE1pbmVycy5yZXBsYWNlKCI6IiwiIil9YDplLnRva2VuTWluZXJzLm1hcChlPT5lLnN5bWJvbC5yZXBsYWNlKCIuIiwiLSIpKS5zb3J0KCkuam9pbigiLCIpLGk9ZS5uZnRUb2tlbk1pbmVyP2A6JHtlLm5mdFRva2VuTWluZXIuc3ltYm9sfWA6IiI7cmV0dXJuYCR7ZS5taW5lZFRva2VuLnJlcGxhY2UoIi4iLCItIil9OiR7dH0ke2l9YH1hY3Rpb25zLnNldEFjdGl2ZT1hc3luYyBlPT57dmFye2lkOnQsYWN0aXZlOmksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmV9PWU7aWYoYXBpLmFzc2VydCghMD09PWUsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXtjb25zdCBuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse2lkOnR9KTtpZihhcGkuYXNzZXJ0KG4sInBvb2wgaWQgbm90IGZvdW5kIikpe24uYWN0aXZlPSEhaTtpPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOm4ubWluZWRUb2tlbn0pO2lmKGFwaS5hc3NlcnQoaSYmKGkuaXNzdWVyPT09YXBpLnNlbmRlcnx8IkJFRSI9PT1pLnN5bWJvbCYmYXBpLnNlbmRlcj09PWFwaS5vd25lciksIm11c3QgYmUgaXNzdWVyIG9mIG1pbmVkVG9rZW4iKSl7Y29uc3QgYT1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCk7bi5uZXh0TG90dGVyeVRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKGEuZ2V0VGltZSgpKS5wbHVzKDM2MDAqbi5sb3R0ZXJ5SW50ZXJ2YWxIb3VycyoxZTMpLnRvTnVtYmVyKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9vbHMiLG4pfX19fSxhY3Rpb25zLnVwZGF0ZVBvb2w9YXN5bmMgZT0+e3ZhcntpZDp0LGxvdHRlcnlXaW5uZXJzOmksbG90dGVyeUludGVydmFsSG91cnM6bixsb3R0ZXJ5QW1vdW50OmEsdG9rZW5NaW5lcnM6cixuZnRUb2tlbk1pbmVyOm8sY2FsbGluZ0NvbnRyYWN0SW5mbzpzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpwfT1lLHtwb29sVXBkYXRlRmVlOmx9PWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksZT0hKCFhcGkuQmlnTnVtYmVyKGwpLmx0ZSgwKSYmYXBpLnNlbmRlciE9PWFwaS5vd25lcil8fGUmJmFwaS5CaWdOdW1iZXIoZS5iYWxhbmNlKS5ndGUobCk7aWYoYXBpLmFzc2VydChlLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHVwZGF0ZSBmZWUiKSYmYXBpLmFzc2VydCghMD09PXAsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHQmJiJzdHJpbmciPT10eXBlb2YgdCYmYSYmInN0cmluZyI9PXR5cGVvZiBhJiYhYXBpLkJpZ051bWJlcihhKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGEpLmd0KDApLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoaSkmJjE8PWkmJmk8PTIwLCJpbnZhbGlkIGxvdHRlcnlXaW5uZXJzOiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMjAgb25seSIpJiZhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIobikmJjE8PW4mJm48PTcyMCwiaW52YWxpZCBsb3R0ZXJ5SW50ZXJ2YWxIb3VyczogaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDcyMCBvbmx5Iikpe2NvbnN0IGQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvb2xzIix7aWQ6dH0pO2lmKGFwaS5hc3NlcnQoZCwicG9vbCBpZCBub3QgZm91bmQiKSl7dD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpkLm1pbmVkVG9rZW59KTtpZihhcGkuYXNzZXJ0KHQmJih0Lmlzc3Vlcj09PWFwaS5zZW5kZXJ8fCJCRUUiPT09dC5zeW1ib2wmJmFwaS5zZW5kZXI9PT1hcGkub3duZXIpLCJtdXN0IGJlIGlzc3VlciBvZiBtaW5lZFRva2VuIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihhKS5kcCgpPD10LnByZWNpc2lvbiwibWluZWRUb2tlbiBwcmVjaXNpb24gbWlzbWF0Y2ggZm9yIGxvdHRlcnlBbW91bnQiKSl7aWYocylkLmxvdHRlcnlXaW5uZXJzPWksZC5sb3R0ZXJ5SW50ZXJ2YWxIb3Vycz1uLGQubG90dGVyeUFtb3VudD1hO2Vsc2V7cz1hd2FpdCB2YWxpZGF0ZVRva2VuTWluZXJzQ2hhbmdlKGQudG9rZW5NaW5lcnMscixkLm5mdFRva2VuTWluZXIsbyk7aWYocyl7ZC5sb3R0ZXJ5V2lubmVycz1pLGQubG90dGVyeUludGVydmFsSG91cnM9bixkLmxvdHRlcnlBbW91bnQ9YSxkLnRva2VuTWluZXJzPXIsZC5uZnRUb2tlbk1pbmVyPW87Y29uc3QgdT1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCk7cy5jaGFuZ2VkJiYoZC51cGRhdGluZy51cGRhdGVQb29sVGltZXN0YW1wPWFwaS5CaWdOdW1iZXIodS5nZXRUaW1lKCkpLnRvTnVtYmVyKCksZC51cGRhdGluZy5pblByb2dyZXNzPSEwLGQudXBkYXRpbmcudG9rZW5JbmRleD0wLGQudXBkYXRpbmcubmZ0VG9rZW5JbmRleD0wLGQudXBkYXRpbmcubGFzdElkPTApLGQubmV4dExvdHRlcnlUaW1lc3RhbXA9YXBpLkJpZ051bWJlcih1LmdldFRpbWUoKSkucGx1cygzNjAwKm4qMWUzKS50b051bWJlcigpfX1hd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIsZCksYXBpLnNlbmRlciE9PWFwaS5vd25lciYmYXBpLkJpZ051bWJlcihsKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6bCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6cH0pfX19fSxhY3Rpb25zLmNoYW5nZU5mdFByb3BlcnR5PWFzeW5jIGU9Pnt2YXJ7aWQ6dCx0eXBlOmkscHJvcGVydHlOYW1lOm4sY2hhbmdlQW1vdW50OmEsaXNTaWduZWRXaXRoQWN0aXZlS2V5OnJ9PWU7aWYoYXBpLmFzc2VydCh0JiYic3RyaW5nIj09dHlwZW9mIHQmJmkmJiJzdHJpbmciPT10eXBlb2YgaSYmbiYmInN0cmluZyI9PXR5cGVvZiBuJiZhJiYic3RyaW5nIj09dHlwZW9mIGEmJiFhcGkuQmlnTnVtYmVyKGEpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoYSkuaXNGaW5pdGUoKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydCghMD09PXIsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXtjb25zdCBzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse2lkOnR9KTtpZihhcGkuYXNzZXJ0KHMsInBvb2wgaWQgbm90IGZvdW5kIikpe3ZhciBvPXMubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmZpbmRJbmRleChlPT5lLm5hbWU9PT1uKSxlPXMubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzW29dO2lmKGFwaS5hc3NlcnQoZSYmZS5idXJuQ2hhbmdlLCJwcm9wZXJ0eSBub3QgZW5hYmxlZCBmb3IgYnVybiBjaGFuZ2UiKSl7Y29uc3QgcD1zLm5mdFRva2VuTWluZXIudHlwZU1hcFtpXTtpZihhcGkuYXNzZXJ0KHAsInR5cGUgbm90IGZvdW5kIikpe3Q9ZS5idXJuQ2hhbmdlLnN5bWJvbCxpPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnR9KTtjb25zdCBsPWFwaS5CaWdOdW1iZXIoYSkuYWJzKCkubXVsdGlwbGllZEJ5KGUuYnVybkNoYW5nZS5xdWFudGl0eSk7aWYoYXBpLmFzc2VydChsLmRwKCk8PWkucHJlY2lzaW9uLGBmZWUgcHJlY2lzaW9uIG1pc21hdGNoIGZvciBhbW91bnQgJHtsfWApKXtpPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnR9KSxpPWFwaS5CaWdOdW1iZXIobCkubHRlKDApfHxpJiZhcGkuQmlnTnVtYmVyKGkuYmFsYW5jZSkuZ3RlKGwpO2lmKGFwaS5hc3NlcnQoaSxgeW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSB1cGRhdGUgZmVlIG9mICR7bH0gJHt0fWApJiYocFtvXT1hcGkuQmlnTnVtYmVyKHBbb10pLnBsdXMoYSksdmFsaWRhdGVOZnRUeXBlTWFwKHMubmZ0VG9rZW5NaW5lci50eXBlTWFwLHMubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzKSkpe2NvbnN0IGQ9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApO3MudXBkYXRpbmcudXBkYXRlUG9vbFRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKGQuZ2V0VGltZSgpKS50b051bWJlcigpLHMudXBkYXRpbmcuaW5Qcm9ncmVzcz0hMCxzLnVwZGF0aW5nLnRva2VuSW5kZXg9MCxzLnVwZGF0aW5nLm5mdFRva2VuSW5kZXg9MCxzLnVwZGF0aW5nLmxhc3RJZD0wLGF3YWl0IGFwaS5kYi51cGRhdGUoInBvb2xzIixzKSxhcGkuQmlnTnVtYmVyKGwpLmd0KDApJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDp0LHF1YW50aXR5OmwsaXNTaWduZWRXaXRoQWN0aXZlS2V5OnJ9KX19fX19fX0sYWN0aW9ucy5jcmVhdGVQb29sPWFzeW5jIGU9Pnt2YXJ7bG90dGVyeVdpbm5lcnM6dCxsb3R0ZXJ5SW50ZXJ2YWxIb3VyczppLGxvdHRlcnlBbW91bnQ6bixtaW5lZFRva2VuOmEsdG9rZW5NaW5lcnM6cixuZnRUb2tlbk1pbmVyOm8sZXh0ZXJuYWxNaW5lcnM6cyxjYWxsaW5nQ29udHJhY3RJbmZvOnAsaXNTaWduZWRXaXRoQWN0aXZlS2V5Omx9PWUse3Bvb2xDcmVhdGlvbkZlZTpkfT1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYodm9pZCAwPT09c3x8YXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHMsImV4dGVybmFsTWluZXJzIG11c3QgYmUgYSBzdHJpbmciKSYmYXBpLmFzc2VydChwLCJtdXN0IGJlIGNhbGxlZCBmcm9tIGEgY29udHJhY3QiKSl7ZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGU9ISghYXBpLkJpZ051bWJlcihkKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHxlJiZhcGkuQmlnTnVtYmVyKGUuYmFsYW5jZSkuZ3RlKGQpO2lmKGFwaS5hc3NlcnQoZSwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBjcmVhdGlvbiBmZWUiKSYmYXBpLmFzc2VydCghMD09PWwsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGEmJiJzdHJpbmciPT10eXBlb2YgYSYmbiYmInN0cmluZyI9PXR5cGVvZiBuJiYhYXBpLkJpZ051bWJlcihuKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKG4pLmd0KDApLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KDA8YS5sZW5ndGgmJmEubGVuZ3RoPD0xMCwiaW52YWxpZCBzeW1ib2w6IHVwcGVyY2FzZSBsZXR0ZXJzIG9ubHksIG1heCBsZW5ndGggb2YgMTAiKSYmYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKHQpJiYxPD10JiZ0PD0yMCwiaW52YWxpZCBsb3R0ZXJ5V2lubmVyczogaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDIwIG9ubHkiKSYmYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGkpJiYxPD1pJiZpPD03MjAsImludmFsaWQgbG90dGVyeUludGVydmFsSG91cnM6IGludGVnZXIgYmV0d2VlbiAxIGFuZCA3MjAgb25seSIpKXtlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmF9KTtpZihhcGkuYXNzZXJ0KGUsIm1pbmVkVG9rZW4gZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChlLmlzc3Vlcj09PWFwaS5zZW5kZXJ8fCJCRUUiPT09ZS5zeW1ib2wmJmFwaS5zZW5kZXI9PT1hcGkub3duZXIsIm11c3QgYmUgaXNzdWVyIG9mIG1pbmVkVG9rZW4iKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG4pLmRwKCk8PWUucHJlY2lzaW9uLCJtaW5lZFRva2VuIHByZWNpc2lvbiBtaXNtYXRjaCBmb3IgbG90dGVyeUFtb3VudCIpJiYocHx8YXdhaXQgdmFsaWRhdGVUb2tlbk1pbmVycyhyLG8pKSl7Y29uc3QgbT1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCksYz17bWluZWRUb2tlbjphLGxvdHRlcnlXaW5uZXJzOnQsbG90dGVyeUludGVydmFsSG91cnM6aSxsb3R0ZXJ5QW1vdW50Om4sdG9rZW5NaW5lcnM6cnx8W10sbmZ0VG9rZW5NaW5lcjpvLGFjdGl2ZTohMSxuZXh0TG90dGVyeVRpbWVzdGFtcDphcGkuQmlnTnVtYmVyKG0uZ2V0VGltZSgpKS5wbHVzKDM2MDAqaSoxZTMpLnRvTnVtYmVyKCksdG90YWxQb3dlcjoiMCJ9O2lmKHApe2lmKCFhcGkuYXNzZXJ0KCFvLCJleHRlcm5hbCBuZnRUb2tlbk1pbmVyIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIikpcmV0dXJuO2MuZXh0ZXJuYWxDb250cmFjdD1wLm5hbWUsYy5leHRlcm5hbE1pbmVycz1zfWMuaWQ9Z2VuZXJhdGVQb29sSWQoYyk7cz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHtpZDpjLmlkfSk7aWYoYXBpLmFzc2VydCghcywicG9vbCBhbHJlYWR5IGV4aXN0cyIpKXtpZihyKWZvcihsZXQgZT0wO2U8ci5sZW5ndGg7ZSs9MSl7dmFyIHU9cltlXTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJ0b2tlblBvb2xzIix7c3ltYm9sOnUuc3ltYm9sLGlkOmMuaWR9KX1vJiZhd2FpdCBhcGkuZGIuaW5zZXJ0KCJuZnRUb2tlblBvb2xzIix7c3ltYm9sOm8uc3ltYm9sLGlkOmMuaWR9KSxjLnVwZGF0aW5nPXtpblByb2dyZXNzOiEwLHVwZGF0ZVBvb2xUaW1lc3RhbXA6YXBpLkJpZ051bWJlcihtLmdldFRpbWUoKSkudG9OdW1iZXIoKSx0b2tlbkluZGV4OjAsbmZ0VG9rZW5JbmRleDowLGxhc3RJZDowfTtvPWF3YWl0IGFwaS5kYi5pbnNlcnQoInBvb2xzIixjKTthcGkuc2VuZGVyIT09YXBpLm93bmVyJiZhcGkuQmlnTnVtYmVyKGQpLmd0KDApJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTpkLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpsfSksYXBpLmVtaXQoImNyZWF0ZVBvb2wiLHtpZDpvLmlkfSl9fX19fTthc3luYyBmdW5jdGlvbiBydW5Mb3R0ZXJ5KHQsZSl7Y29uc3QgaT1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCksbj1bXTt2YXIgYT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDp0Lm1pbmVkVG9rZW59KSxyPWFwaS5CaWdOdW1iZXIodC5sb3R0ZXJ5QW1vdW50KS5kaXZpZGVkQnkodC5sb3R0ZXJ5V2lubmVycykudG9GaXhlZChhLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVApO2lmKHQuZXh0ZXJuYWxDb250cmFjdCl7aWYoIm1hcmtldHBvb2xzIj09PXQuZXh0ZXJuYWxDb250cmFjdCl7dmFyIG89YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJtYXJrZXRwb29scyIsInBvb2xzIix7dG9rZW5QYWlyOnQuZXh0ZXJuYWxNaW5lcnN9KTtmb3IobGV0IGU9MDtlPHQubG90dGVyeVdpbm5lcnM7ZSs9MSluW2VdPWFwaS5CaWdOdW1iZXIoby50b3RhbFNoYXJlcykubXVsdGlwbGllZEJ5KGFwaS5yYW5kb20oKSl9fWVsc2UgZm9yKGxldCBlPTA7ZTx0LmxvdHRlcnlXaW5uZXJzO2UrPTEpbltlXT1hcGkuQmlnTnVtYmVyKHQudG90YWxQb3dlcikubXVsdGlwbGllZEJ5KGFwaS5yYW5kb20oKSk7bGV0IHM9MCxwLGw9YXBpLkJpZ051bWJlcigwKSxkPWFwaS5CaWdOdW1iZXIoMCksdT0wO2NvbnN0IG09W107Zm9yKDt1PHQubG90dGVyeVdpbm5lcnM7KXtpZih0LmV4dGVybmFsQ29udHJhY3Qpe2lmKCJtYXJrZXRwb29scyI9PT10LmV4dGVybmFsQ29udHJhY3Qpe3A9YXdhaXQgYXBpLmRiLmZpbmRJblRhYmxlKCJtYXJrZXRwb29scyIsImxpcXVpZGl0eVBvc2l0aW9ucyIse3Rva2VuUGFpcjp0LmV4dGVybmFsTWluZXJzfSxlLnByb2Nlc3NRdWVyeUxpbWl0LHMsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgZT0wO2U8cC5sZW5ndGg7ZSs9MSlwW2VdLnBvd2VyPXskbnVtYmVyRGVjaW1hbDphcGkuQmlnTnVtYmVyKHBbZV0uc2hhcmVzKS50b0ZpeGVkKGEucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCl9fX1lbHNlIHA9YXdhaXQgYXBpLmRiLmZpbmQoIm1pbmluZ1Bvd2VyIix7aWQ6dC5pZCxwb3dlcjp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fX0sZS5wcm9jZXNzUXVlcnlMaW1pdCxzLFt7aW5kZXg6InBvd2VyIixkZXNjZW5kaW5nOiEwfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGU9MDtlPHAubGVuZ3RoO2UrPTEpe3ZhciBjPXBbZV07ZD1sLnBsdXMoYy5wb3dlci4kbnVtYmVyRGVjaW1hbCk7Zm9yKGxldCBlPTA7ZTx0LmxvdHRlcnlXaW5uZXJzO2UrPTEpe3ZhciBmPW5bZV07bC5sdGUoZikmJmQuZ3QoZikmJih1Kz0xLG0ucHVzaCh7d2lubmVyOmMuYWNjb3VudCx3aW5uaW5nTnVtYmVyOmYsd2lubmluZ0Ftb3VudDpyfSkpfWw9ZH1pZih1PT09dC5sb3R0ZXJ5V2lubmVyc3x8cC5sZW5ndGg8ZS5wcm9jZXNzUXVlcnlMaW1pdClicmVhaztzKz1lLnByb2Nlc3NRdWVyeUxpbWl0fWFwaS5lbWl0KCJtaW5pbmdMb3R0ZXJ5Iix7cG9vbElkOnQuaWQsd2lubmVyczptfSk7Zm9yKGxldCBlPTA7ZTxtLmxlbmd0aDtlKz0xKXt2YXIgZz1tW2VdO2F3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwiaXNzdWUiLHt0bzpnLndpbm5lcixzeW1ib2w6YS5zeW1ib2wscXVhbnRpdHk6cn0pfXQubmV4dExvdHRlcnlUaW1lc3RhbXA9YXBpLkJpZ051bWJlcihpLmdldFRpbWUoKSkucGx1cygzNjAwKnQubG90dGVyeUludGVydmFsSG91cnMqMWUzKS50b051bWJlcigpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBvb2xzIix0KX1hY3Rpb25zLmNoZWNrUGVuZGluZ0xvdHRlcmllcz1hc3luYygpPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdCBhPW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKTt2YXIgZT1hLmdldFRpbWUoKSx0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxpPWF3YWl0IGFwaS5kYi5maW5kKCJwb29scyIseyJ1cGRhdGluZy5pblByb2dyZXNzIjohMH0sdC5tYXhMb3R0ZXJpZXNQZXJCbG9jaywwLFt7aW5kZXg6ImlkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSs9MSlhd2FpdCByZXN1bWVQb3dlclVwZGF0ZShpW2VdLHQpO3ZhciBuPWF3YWl0IGFwaS5kYi5maW5kKCJwb29scyIse2FjdGl2ZTohMCwidXBkYXRpbmcuaW5Qcm9ncmVzcyI6ITEsbmV4dExvdHRlcnlUaW1lc3RhbXA6eyRsdGU6ZX19LHQubWF4TG90dGVyaWVzUGVyQmxvY2ssMCxbe2luZGV4OiJpZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrPTEpYXdhaXQgcnVuTG90dGVyeShuW2VdLHQpfX0sYWN0aW9ucy5oYW5kbGVTdGFrZUNoYW5nZT1hc3luYyBlPT57dmFye2FjY291bnQ6bixzeW1ib2w6YSxxdWFudGl0eTpyLGRlbGVnYXRlZDpvLGNhbGxpbmdDb250cmFjdEluZm86ZX09ZTthcGkuYXNzZXJ0KGUmJiJ0b2tlbnMiPT09ZS5uYW1lLCJtdXN0IGJlIGNhbGxlZCBmcm9tIHRva2VucyBjb250cmFjdCIpJiZhd2FpdCBmaW5kQW5kUHJvY2Vzc0FsbCgibWluaW5nIiwidG9rZW5Qb29scyIse3N5bWJvbDphfSxhc3luYyBlPT57Y29uc3QgdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHtpZDplLmlkfSk7bGV0IGk7aT1vP2F3YWl0IHVwZGF0ZU1pbmluZ1Bvd2VyKHQsYSxuLDAscik6YXdhaXQgdXBkYXRlTWluaW5nUG93ZXIodCxhLG4sciwwKSx0LnRvdGFsUG93ZXI9aS5wbHVzKHQudG90YWxQb3dlciksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9vbHMiLHQpfSl9LGFjdGlvbnMuaGFuZGxlTmZ0Q2hhbmdlPWFzeW5jIGU9Pnt2YXJ7c3ltYm9sOnQsbmZ0Om4sYWRkOmEsY2FsbGluZ0NvbnRyYWN0SW5mbzplfT1lO2FwaS5hc3NlcnQoZSYmIm5mdCI9PT1lLm5hbWUsIm11c3QgYmUgY2FsbGVkIGZyb20gbmZ0IGNvbnRyYWN0IikmJmF3YWl0IGZpbmRBbmRQcm9jZXNzQWxsKCJtaW5pbmciLCJuZnRUb2tlblBvb2xzIix7c3ltYm9sOnR9LGFzeW5jIGU9Pntjb25zdCB0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse2lkOmUuaWR9KTtpZighKHQudXBkYXRpbmcuaW5Qcm9ncmVzcyYmdC51cGRhdGluZy50b2tlbkluZGV4PT09dC50b2tlbk1pbmVycy5sZW5ndGgmJnQudXBkYXRpbmcubGFzdElkPG4uX2lkKSl7ZT10Lm5mdFRva2VuTWluZXIudHlwZU1hcFtuLnByb3BlcnRpZXNbdC5uZnRUb2tlbk1pbmVyLnR5cGVGaWVsZF1dO2lmKGUpe2NvbnN0IGk9YXdhaXQgdXBkYXRlTmZ0TWluaW5nUG93ZXIodCxuLGUsYSx0LnVwZGF0aW5nLnVwZGF0ZVBvb2xUaW1lc3RhbXApO3QudG90YWxQb3dlcj1pLnBsdXModC50b3RhbFBvd2VyKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIsdCl9fX0pfTs="}}}