Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥Fate/Zero 第二季@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJqczpcXG5sZXQgaHRtbCA9IGdldFJlc0NvZGUoKVxcbi8vIGxvZyhodG1sKVxcbmxldCByZWdleCA9IC93aW5kb3dcXFxcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcXFwoZnVuY3Rpb25cXFxcKFxcXFwpXFxcXHsvXFxuLy8gbG9nKE1ZX1VSTClcXG5pZihNWV9VUkwuc3RhcnRzV2l0aCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbCcpKSB7XFxuICAgIGxldCBjb2RlID0gSlNPTi5wYXJzZShodG1sKVxcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKGNvZGUuZGF0YS5WaWV3WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICAgICAgICAgIE1ZX1VSTCA9IGNvZGUuZGF0YS5WaWV3WydyZWRpcmVjdF91cmwnXTtcXG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxcbiAgICB9XFxufVxcbi8vIGxvZyhodG1sKVxcbmlmIChNWV9VUkwuc3RhcnRzV2l0aCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS8nKSAmJiByZWdleC50ZXN0KGh0bWwpKSB7XFxuICAgIC8vIOeVquWJp1xcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXFxuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKFJlZ0V4cC4kMSlcXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5uZXdlc3RFcFxcbiAgICBpZighcmVzdWx0KSB7XFxuICAgICAgICByZXN1bHQgPSByZXMubWVkaWFJbmZvLm5ld19lcFxcbiAgICB9XFxuICAgIHNldFJlc3VsdChcXFwi5pu05paw6Iez77ya56ysXFxcIiArIHJlc3VsdC50aXRsZSArIFxcXCLor51cXFwiKVxcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xcbiAgICAvLyBVUCDkuLtcXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoaHRtbClcXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcXG4gICAgc2V0UmVzdWx0KFxcXCLmm7TmlrDoh7PvvJpcXFwiICsgcmVzdWx0KVxcbn0gZWxzZSB7XFxuICAgIHNldFJlc3VsdChcXFwiXFxcIilcXG59XCIsXCJsaXN0VG9DbGVhckFzc29jaWF0ZWRGS1wiOltdLFwibGlzdFRvQ2xlYXJTZWxmRktcIjpbXSxcInBhZ2VMaXN0XCI6W3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5LiA57qnXCIsXCJwYXRoXCI6XCJjb21tb25cIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JywgJ+W8gOWQryzlhbPpl60nKTtcXG59XFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXG5wdXRWYXIoJ3JlcGx5X3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVswXSk7XFxucHV0VmFyKCdsaWtlX3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVsxXSk7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxuXFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxuXFxudmFyIHcxID0gJ+WFqOmDqCbnlarliacm5Zu95YibJuWKqOeUuybpn7PkuZAm55+l6K+GJuenkeaKgCbmsb3ovaYm55Sf5rS7Jue+jumjnybprLznlZwm5pe25bCaJuW9seinhibljp/liJsm5paw5Lq6Jua4uOaIjyblqLHkuZAm6Iie6LmIJueUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOeJqeWciCblm73liJvnm7jlhbMnO1xcblxcbnZhciBjMiA9ICcyMiYyMTImNzEmMTgyJjEzOCYyOCYzMyYxODUnO1xcblxcbnZhciB3MiA9ICfprLznlZwm576O6aOfJue7vOiJuiblvbHop4Ym55Sf5rS7Jumfs+S5kCbnlarliacm55S16KeG5YmnJztcXG5cXG52YXIgd29yZDEgPSB3MS5zcGxpdCgnJicpO1xcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcbnZhciBsYWIxID0gZ2V0VmFyKCdsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciBrZXkxID0gZ2V0VmFyKCdrZXkxJywgJ2FsbCcpO1xcblxcbnZhciB3b3JkMiA9IHcyLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMiA9IGMyLnNwbGl0KCcmJyk7XFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxudmFyIGtleTIgPSBnZXRWYXIoJ2tleTInLCAnMjInKTtcXG5cXG4vL+S4ieWQiOS4gFxcbnZhciByeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsIHt9KTtcXG52YXIgd3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcbnZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgLy8ucmVwbGFjZSgnbS5iaWxpYmlsaS5jb20nLCAnd3d3LmJpbGliaWxpLmNvbScpLnJlcGxhY2UoL1xcXFw/L2csICfvvJ/vvJ8nKS5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJylcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzon6K+36L6T5YWl572R5Z2A5oiW6ICFYuermeWkjeWItueahOmTvuaOpSdcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ1VQ5Li7JyA/IGdldEhlYWQoJ+mmlumhtScpIDogJ+mmlumhtScsXFxuICAgICAgICB1cmw6ICdVUOS4uycgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5o6S6KGM5qacJyA/IGdldEhlYWQocngpIDogJ+aOkuihjOamnCcsXFxuICAgICAgICB1cmw6ICfmjpLooYzmppwnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aWsOeVqicgPyBnZXRIZWFkKHJ4KSA6ICfmlrDnlaonLFxcbiAgICAgICAgdXJsOiAn5paw55WqJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmm7TlpJonID8gZ2V0SGVhZChyeCkgOiAn5pu05aSaJyxcXG4gICAgICAgIHVybDogJ+abtOWkmicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4vKlxcbiAgICBpZiAocnggPT0gJ+aUtuiXjycpIHtcXG4gICAgICAgIFxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veeVqicgPyBnZXRIZWFkKHNfdGFiKSA6ICfov73nlaonLFxcbiAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veWJpycgPyBnZXRIZWFkKHNfdGFiKSA6ICfov73liacnLFxcbiAgICAgICAgICAgIHVybDogJ+i/veWJpycgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgXFxuICAgICAgICBpZiAoc190YWIgPT0gJ+i/veeVqicpIHtcXG4gICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9mYW5qdVxcXCIpKS5ydWxlKVxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHNfdGFiID09ICfov73liacnKSB7XFxuICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZHNqXFxcIikpLnJ1bGUpXFxuICAgICAgICB9XFxuICAgIH1cXG4qL1xcbn1cXG5cXG5pZiAocnggPT0gJ+aOkuihjOamnCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvcGhiXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAnVVDkuLsnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3VwXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pe25YWJ5py6Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zZ2pcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmlrDnlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL25ld2JnbVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+e0ouW8lScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc3lcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmm7TlpJonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL21vcmVcXFwiKSkucnVsZSlcXG59XFxuXFxuXFxuLy/kuInlkIjkuIBcXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcInBpY18xX2NhcmRcIixcIm5hbWVcIjpcIuS7o+eggS3mjpLooYzmppxcIixcInBhdGhcIjpcInBoYlwiLFwicnVsZVwiOlwiLy/liIbnsbtcXG4gaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbmZvciAodmFyIGkgaW4gd29yZDEpe1xcbiAgICB2YXIgYSA9IHdvcmQxW2ldO1xcbiAgICB2YXIgYiA9IGNsYXNzMVtpXTtcXG4gICAgdmFyIGMgPSBhICsgJyYnICsgYjtcXG4gICAgZC5wdXNoKHtcXG4gICAgdGl0bGU6IGE9PWxhYjE/IGdldEhlYWQoYSk6YSxcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChjKT0+e1xcbiAgICAgICAgcHV0VmFyKFxcXCJsYWIxXFxcIixjLnNwbGl0KCcmJylbMF0pO1xcbiAgICAgICAgcHV0VmFyKFxcXCJrZXkxXFxcIixjLnNwbGl0KCcmJylbMV0pO1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9LCBjKSxcXG4gICAgY29sX3R5cGU6J2ZsZXhfYnV0dG9uJ1xcbiAgICB9KTtcXG59XFxufVxcbi8v5YiG57G7XFxuXFxuZC5wdXNoKHtcXG4gICAgZGVzYzonMjU4JiZmbG9hdCcsXFxuICAgXFx0XFx0Y29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG52YXIgdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92L3BvcHVsYXIvcmFuay9hbGwnO1xcblxcbnZhciBNWV9VUkwgPSB1cmwucmVwbGFjZSgnYWxsJyxnZXRWYXIoJ2tleTEnKSk7XFxuXFxudmFyIHltPXJlcXVlc3QoTVlfVVJMLHt9KS5yZXBsYWNlKC9cXFxcXFxcXHUwMDJGL2csJy8nKTtcXG5pZih5bS5pbmNsdWRlcygncmFuay10aXBzJykpe1xcblxcbi8q5o+Q56S65L+h5oGvXFxuICBkLnB1c2goe1xcbiAgICB0aXRsZTon4oCc4oCcJytwYXJzZURvbUZvckh0bWwoeW0sJy5yYW5rLXRpcHMmJlRleHQnKSsn4oCd4oCdJyxcXG4gICAgY29sX3R5cGU6J3RleHRfMSdcXG4gIH0pO1xcbuaPkOekuuS/oeaBryovXFxuXFxuICB2YXIgcGk9SlNPTi5wYXJzZSh5bS5zcGxpdCgnXFxcInJhbmtMaXN0XFxcIjonKVsxXS5zcGxpdCgnLFxcXCJyYW5rTm90ZVxcXCInKVswXSk7XFxuICBmb3IodmFyIGk9MDtwaSE9bnVsbCYmaTxwaS5sZW5ndGg7aSsrKXtcXG4gICAgdmFyIG51bSA9IGkrMTtcXG4gICAgdmFyIHE9SlNPTi5zdHJpbmdpZnkocGlbaV0pO1xcbiAgICBpZiAoIXBpW2ldLnVybCl7XFxuICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgcGlbaV0uYnZpZDtcXG4gICAgICAgfWVsc2V7XFxuICAgICAgICAgICB2YXIgcnVybCA9IHBpW2ldLnVybDtcXG4gICAgfVxcblxcbiAgICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTpwaVtpXS50aXRsZSxcXG4gICAgICAgIHBpY191cmw6cGlbaV0ucGljK1JlZmVyZXIsXFxuICAgICAgICBkZXNjOighcS5pbmNsdWRlcygnbmFtZScpP3BpW2ldLm5ld19lcC5pbmRleF9zaG93OigndXA6ICcrcGlbaV0ub3duZXIubmFtZSkpLFxcbiAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nK3J1cmwrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxuICAgICAgfSk7XFxuLypcXG5kLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J05vLicrbnVtKydcXFxcblxcXFxu4oCY4oCYPHNtYWxsPicrcGlbaV0udGl0bGUrJ1xcXFxuJysoIXEuaW5jbHVkZXMoJ25hbWUnKT9waVtpXS5uZXdfZXAuaW5kZXhfc2hvdzooJ3VwOiAnK3BpW2ldLm93bmVyLm5hbWUpKSsnPC9zbWFsbD4nLFxcbiAgICAgICAgcGljX3VybDpwaVtpXS5waWMrUmVmZXJlcixcXG4gICAgICAgIGRlc2M6JzAnLFxcbiAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nK3J1cmwrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgY29sX3R5cGU6J2NhcmRfcGljXzEnXFxuICAgICAgfSk7XFxuKi9cXG4gICAgIH1cXG4gICB9ZWxzZXtcXG4gICAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J+KAnOKAnOiKguWItuS4gOeCue+8jOS8keaBr+WVpu+8geKAneKAnScsXFxuICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICB9KTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEtdXDwn5C3XCIsXCJwYXRoXCI6XCJ1cFwiLFwicnVsZVwiOlwiY29uc3QgaGVhZENvbG9yID0gXFxcIiMzNThjY2RcXFwiO1xcblxcbi8v5pe26Ze05oiz6L2s5o2i5pa55rOVXFxuLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHtcXG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxuICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcbiAgICB2YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7XFxuICAgIHZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbiAgICByZXR1cm4gdGltZVxcbn1cXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTtwdXRWYXIoJ3NldCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG4vL+aXtumXtOaIs+i9rOaNolxcblxcbnZhciB1aWQgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIHt9KTtcXG52YXIgVVBfVVJMID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPXVpZCZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj0nICsgcGFnZW51bSArICcmb3JkZXI9cHViZGF0ZSc7XFxudmFyIHVwX3VybCA9IFVQX1VSTC5yZXBsYWNlKFxcXCJ1aWRcXFwiLCB1aWQpO1xcbnZhciB4eCA9IGdldFZhcignbGIyJykuc3BsaXQoJ1xcXFxuJyk7XFxuLy/mm7TmlrDlpLTlg49cXG5mb3IgKHZhciBrIGluIHh4KSB7XFxuICAgIGlmICgheHhba10uc3BsaXQoJyMjJylbMV0pIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nICsgeHhba10uc3BsaXQoJyYmJylbMV0gKyAnJmpzb25wPWpzb25wJywge30pKS5kYXRhLmZhY2U7XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmbmVlZF90b3A9MScsIHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgZmFjZSA9IHh4W2tdICsgJyMjJyArIHBpYztcXG4gICAgICAgIHZhciBmYWNlID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkucmVwbGFjZSh4eFtrXSwgZmFjZSk7XFxuICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCBmYWNlKTtcXG4gICAgfVxcbn1cXG5cXG5cXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIHZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG4gICAgaWYgKGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpICYmIGdldFZhcignc3RhcmlkJykpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfmjqjojZAnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP5o6o6I2QJyxcXG4gICAgICAgICAgICB1cmw6ICfmjqjojZAnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfmlLbol48nID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP5pS26JePJyxcXG4gICAgICAgICAgICB1cmw6ICfmlLbol48nICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73nlaonID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+955WqJyxcXG4gICAgICAgICAgICB1cmw6ICfov73nlaonICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+95YmnJyxcXG4gICAgICAgICAgICB1cmw6ICfov73liacnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICAvL+iHquW3seeahOWFs+azqFxcbiAgICB2YXIgc3Rhcmpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JyArIGdldFZhcignc3RhcmlkJykgKyAnJmpzb25wPWpzb25wJywge30pKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnID8gJ+KYuu+4jycgOiAnJykgKyBzdGFyanNvbi5kYXRhLm5hbWUsXFxuICAgICAgICBwaWNfdXJsOiBzdGFyanNvbi5kYXRhLmZhY2UgKyBSZWZlcmVyLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdVUCcsIGdldFZhcignVVAnKT09J+WFs+azqCc/J+aKmOWPoCc6J+WFs+azqCcpO3B1dFZhcignc2V0JywnJyk7Y2xlYXJWYXIoJ2h0bScpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vJytnZXRWYXIoJ1VQJywn5LiT5rOoJylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxuICAgIH0pO1xcbiAgICAvL+iHquW3seeahOWFs+azqFxcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCY4oCYVVDigJnigJknICsgJzwvc3Ryb25nPicgKyAoZ2V0VmFyKCd1cCcsICfmipjlj6AnKSA9PSAn5bGV5byAJyA/ICfwn5mJJyA6ICfwn5mIJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3VwJywgZ2V0VmFyKCd1cCcpPT0n5bGV5byAJz8n5oqY5Y+gJzon5bGV5byAJyk7cHV0VmFyKCdzZXQnLCcnKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCd1cCcsJ+WxleW8gCcpO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdzZXQnKSAhPSAnJyA/IChnZXRWYXIoJ3NldCcpID09ICfnva7pobYnID8gJzxzdHJvbmc+JyArICfigJzigJznva7pobYnICsgJzwvc3Ryb25nPicgOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOWPluWFs+KAneKAnScgKyAnPC9zdHJvbmc+JykgOiAn6K6+572uJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignc2V0JywgZ2V0VmFyKCdzZXQnLCflsZXlvIAnKT09J+WPluWFsyc/J+e9rumhtic6J+WPluWFsycpO3B1dFZhcigndXAnLCcnKTtwdXRWYXIoJ1VQJywnJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly8nK2dldFZhcignc2V0Jywn5bGV5byAJykrJ2luZ34nXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG5cXG4gICAgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJykge1xcbiAgICAgICAgaWYgKGdldFZhcignaHRtJykgPT0gJycgfHwgZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnKSB7XFxuICAgICAgICAgICAgdmFyIHVybHMgPSBbXTtcXG4gICAgICAgICAgICB2YXIgc3VybCA9ICdodHRwczovL3NwYWNlLmJpbGliaWxpLmNvbS9oNS9mb2xsb3c/dHlwZT1mb2xsb3cmbWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpO1xcbiAgICAgICAgICAgIHZhciBpZCA9IHN1cmwuc3BsaXQoJ21pZD0nKVsxXTtcXG4gICAgICAgICAgICB2YXIgY29kZSA9IGZldGNoKHN1cmwsIHt9KTtcXG4gICAgICAgICAgICB2YXIgc3Rhcmxpc3QgPSBKU09OLnBhcnNlKCd7XFxcIm15JyArIGNvZGUuc3BsaXQoJ3tcXFwibXknKVsxXS5zcGxpdCgnfX07JylbMF0gKyAnfX0nKTtcXG5cXG4gICAgICAgICAgICB2YXIgc3RhcmxzID0gc3Rhcmxpc3RbJ2xpc3QnXVsnZ2V0Rm9sbG93TGlzdC1wYWdlLW1pZC0nICsgaWRdWydyZXN1bHQnXTtcXG4gICAgICAgICAgICBmb3IgKHggaW4gc3RhcmxzKSB7XFxuICAgICAgICAgICAgICAgIHZhciB5dXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPScgKyBzdGFybHNbeF0ubWlkICsgJyZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj1meXBhZ2Umb3JkZXI9cHViZGF0ZSc7XFxuICAgICAgICAgICAgICAgIHVybHMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHl1cmwucmVwbGFjZSgvZnlwYWdlL2csICcxJylcXG4gICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcpXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdGFybHNbeF0udW5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBzdGFybHNbeF0uZmFjZSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2d6Mj91cmw9JyArIHl1cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgLy/lhbPms6jliJfooahcXG5cXG4gICAgaWYgKGdldFZhcigndXAnKSA9PSAn5bGV5byAJyAmJiBnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcpIHtcXG4gICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0uc3BsaXQoJyMjJylbMF0gPyAn4pyTJyA6ICcnO1xcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4gICAgICAgICAgICAvKuWktOWDj+iOt+WPllxcbiAgICAgICAgICAgICAgICB0cnl7XFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArIGBAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07cHV0VmFyMigndWlkJyxpbnB1dCk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJ+aKmOWPoCcpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiO2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8v5Y+W5YWz55u45YWzXFxuXFxuICAgIGlmIChnZXRWYXIoJ3NldCcpID09ICflj5blhbMnKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICovXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KdjCcgKyBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6IHh4W2tdICsgYEBsYXp5UnVsZT0uanM6dmFyIHNjPWlucHV0KydcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nO3ZhciB4ej14ci5yZXBsYWNlKHNjLCcnKTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHh6KTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5Y+W5YWz5oiQ5Yqf77yB6ZOB5a2Q5YaN6KeB8J+mhidgLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAvL+e9rumhtuebuOWFs1xcblxcbiAgICBpZiAoZ2V0VmFyKCdzZXQnKSA9PSAn572u6aG2Jykge1xcblxcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICAgICAgICAgIHZhciBzdCA9IHVpZCA9PSB4eFtrXS5zcGxpdCgnJiYnKVsxXSA/ICfinJMnIDogJyc7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxuICAgICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcbiAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SdJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogeHhba10gKyBgQGxhenlSdWxlPS5qczp2YXIgc2M9aW5wdXQrJ1xcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsc2MreHopO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/nva7pobbmiJDlip/wn5SdJ2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuXFxufVxcbi8vZC5wdXNoKHt0aXRsZTp4eH0pO1xcbmlmIChzX3RhYiA9PSAn5o6o6I2QJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9mZWVkXFxcIikpLnJ1bGUpO1xcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+aUtuiXjycpIHtcXG4gICAgaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiKSkucnVsZSk7XFxufSBlbHNlIGlmIChzX3RhYiA9PSAn6L+95YmnJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9kc2pcXFwiKSkucnVsZSlcXG59IGVsc2UgaWYgKHNfdGFiID09ICfov73nlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2Zhbmp1XFxcIikpLnJ1bGUpXFxufSBlbHNlIGlmIChnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcgJiYgZ2V0VmFyKCd1cCcpICE9ICflsZXlvIAnICYmIGdldFZhcignc2V0JykgPT0gJycpIHtcXG4gICAgdmFyIGpzb24gPSB7fTtcXG4gICAgZXZhbCgnanNvbj0nICsgZmV0Y2godXBfdXJsLCB7fSkpO1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgciA9IHt9O1xcbiAgICAgICAgdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gICAgICAgIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkgKiAxMDAwO1xcblxcblxcbiAgICAgICAgdmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuXFxuICAgICAgICBpZiAoai5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgdmFyIHBsYXkgPSAoai5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgICAgIGVsc2VcXG4gICAgICAgICAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG4gICAgICAgIHZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSAhPSAtMSkgPyBqLnBpYyA6ICdodHRwczonICsgai5waWM7XFxuXFxuICAgICAgICByLnBpY191cmwgPSBwaWNzICsgUmVmZXJlcjtcXG4gICAgICAgIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICAgICAgci50aXRsZSA9IGoudGl0bGU7XFxuICAgICAgICByLmNvbF90eXBlID0gJ21vdmllXzFfdmVydGljYWxfcGljJztcXG4gICAgICAgIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyB0aW1lO1xcbiAgICAgICAgaWYgKGoubGVuZ3RoICE9IFxcXCIwMDowMFxcXCIpIHtcXG4gICAgICAgICAgICBkLnB1c2gocilcXG4gICAgICAgIH07XFxuICAgIH1cXG59IGVsc2UgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJyAmJiBnZXRWYXIoJ3VwJykgIT0gJ+WxleW8gCcpIHtcXG5cXG4gICAgaWYgKGdldFZhcignaHRtJykgPT0gJycpIHtcXG4gICAgICAgIGh0bSA9IFtdO1xcbiAgICAgICAgdmFyIHltID0gYmF0Y2hGZXRjaCh1cmxzKS5tYXAoZnVuY3Rpb24oYSkge1xcbiAgICAgICAgICAgIHZhciBoID0gSlNPTi5wYXJzZShhKS5kYXRhLmxpc3Qudmxpc3Q7XFxuICAgICAgICAgICAgaHRtID0gaHRtLmNvbmNhdChoKTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaHRtID0gaHRtLnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgICAgIHJldHVybiBiLmNyZWF0ZWQgLSBhLmNyZWF0ZWQ7XFxuICAgICAgICB9KS5tYXAoZnVuY3Rpb24oYSkge1xcbiAgICAgICAgICAgIGEuY3JlYXRlZCA9IGdldExvY2FsVGltZShOdW1iZXIoYS5jcmVhdGVkKSAqIDEwMDApO1xcbiAgICAgICAgICAgIHJldHVybiBhXFxuICAgICAgICB9KTtcXG4gICAgICAgIHB1dFZhcignaHRtJywgSlNPTi5zdHJpbmdpZnkoaHRtKSk7XFxuICAgIH0gZWxzZSBodG0gPSBKU09OLnBhcnNlKGdldFZhcignaHRtJykpO1xcbiAgICB2YXIgaSA9IDA7XFxuICAgIHZhciBrID0gMDtcXG4gICAgdmFyIHIgPSBuZXcgRGF0ZSgpO1xcbiAgICB2YXIgTSA9IHIuZ2V0TW9udGgoKSArIDE7XFxuICAgIHZhciB0RCA9IHIuZ2V0RnVsbFllYXIoKSArICctJyArIChNIDwgMTAgPyAoJzAnICsgTSkgOiBNKSArICctJyArIChyLmdldERhdGUoKSA8IDEwID8gKCcwJyArIHIuZ2V0RGF0ZSgpKSA6IHIuZ2V0RGF0ZSgpKTtcXG5cXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBodG0ubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgIHRyeSB7XFxuXFxuICAgICAgICAgICAgaWYgKGogIT0gMCAmJiBodG1baiAtIDFdLmNyZWF0ZWQgIT0gaHRtW2pdLmNyZWF0ZWQpIGkrKztcXG5cXG4gICAgICAgICAgICBpZiAoaSArIDEgPT0gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgaWYgKGsgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGUgPSBodG1bal0uY3JlYXRlZDtcXG4gICAgICAgICAgICAgICAgICAgIGsrKztcXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRlID09IHREKSBkYXRlID0gJzxzdHJvbmc+5LuK5aSpPC9zdHJvbmc+JztcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1cXFwiIzM1OGNjZFxcXCI+JyArIGRhdGUgKyAnPFxcXFxmb250PicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3VybDpgQGxhenlSdWxlPS5qczpjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIt+aWsOaIkOWKnyc7YFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGh0bVtqXS5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcGxheSA9IChodG1bal0ucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxuICAgICAgICAgICAgICAgIGVsc2VcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gaHRtW2pdLnBsYXk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaHRtW2pdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiAoKGh0bVtqXS5waWMuaW5kZXhPZignOicpICE9IC0xKSA/IGh0bVtqXS5waWMgOiAoJ2h0dHBzOicgKyBodG1bal0ucGljKSkgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogJ1VQOicgKyBodG1bal0uYXV0aG9yICsgJyAg5pe26ZW/77yaJyArIGh0bVtqXS5sZW5ndGggKyAnXFxcXG7mkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyBodG1bal0uY3JlYXRlZCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgaHRtW2pdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID4gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBjYXRjaCAoZSkge31cXG4gICAgfVxcblxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ml7blhYnwn5CUXCIsXCJwYXRoXCI6XCJzZ2pcIixcInJ1bGVcIjpcIi8v5YiG57G7XFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9tb3JlXFxcIikpLnJ1bGUpXFxuXFxuZm9yICh2YXIgaSBpbiB3b3JkMil7XFxuICAgIHZhciBhID0gd29yZDJbaV07XFxuICAgIHZhciBiID0gY2xhc3MyW2ldO1xcbiAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICBkLnB1c2goe1xcbiAgICB0aXRsZTogYT09bGFiMj8gZ2V0SGVhZChhKTphLFxcbiAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGMpPT57XFxuICAgICAgICBwdXRWYXIoXFxcImxhYjJcXFwiLGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICBwdXRWYXIoXFxcImtleTJcXFwiLGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIGMpLFxcbiAgICBjb2xfdHlwZTonZmxleF9idXR0b24nXFxuICAgIH0pO1xcbn1cXG59XFxuLy/liIbnsbtcXG5cXG52YXIgbSA9IE51bWJlcihmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHRcXFwiLHt9KSk7XFxudmFyIHQgPSBtPDA/MDptO1xcbnZhciBudW0xID0gTnVtYmVyKHQpLTEyO1xcbnZhciBudW0yID0gTnVtYmVyKHQpKzEyO1xcbnZhciBudW0zID0gTnVtYmVyKHQpLTE7XFxudmFyIG51bTQgPSBOdW1iZXIodCkrMTtcXG4vL3ZhciB0aW1lc3RhbXAgPSBEYXRlLnBhcnNlKG5ldyBEYXRlKCkpO1xcbnZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgc3RhbXAxID0gdGltZXN0YW1wIC0gdCozMCoyNCo2MCo2MCoxMDAwO1xcbnZhciBzdGFtcDIgPSB0aW1lc3RhbXAgLSAodCsxKSozMCoyNCo2MCo2MCoxMDAwO1xcbi8qXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgbW0gPSBzc3Muc3BsaXQoJ+W5tCcpWzFdLnNwbGl0KCfmnIgnKVswXTtcXG4gICAgIHZhciBkZCA9IHNzcy5zcGxpdCgn5pyIJylbMV0uc3BsaXQoJ+aXpScpWzBdO1xcbiAgICAgdmFyIFlZID0gc3NzLnNwbGl0KCflubQnKVswXTtcXG4gICAgIHZhciBNTSA9IChtbTwgMTAgPyAnMCcgKyBtbTptbSk7XFxuICAgICB2YXIgREQgPSAoZGQ8IDEwID8gJzAnICsgZGQ6ZGQpO1xcbiAgICAgcmV0dXJuIChZWStNTStERClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxudmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxudmFyIFlZID0gU3RyaW5nKGRhdGUuZ2V0RnVsbFllYXIoKSk7IFxcbnZhciBNTSA9IFN0cmluZygoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkpOyBcXG52YXIgREQgPSBTdHJpbmcoKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpKTsgXFxudmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxucmV0dXJuIHRpbWVcXG59XFxuLy/ml7bpl7TmiLPovazmjaJcXG52YXIgdGltZTEgPSBnZXRMb2NhbFRpbWUoc3RhbXAxKTtcXG52YXIgdGltZTIgPSBnZXRMb2NhbFRpbWUoc3RhbXAyKTtcXG52YXIgU0dKX1VSTCA9ICdodHRwczovL3Muc2VhcmNoLmJpbGliaWxpLmNvbS9jYXRlL3NlYXJjaD9tYWluX3Zlcj12MyZzZWFyY2hfdHlwZT12aWRlbyZ2aWV3X3R5cGU9aG90X3Jhbmsmb3JkZXI9Y2xpY2smY29weV9yaWdodD0tMSZjYXRlX2lkPTIyJnBhZ2U9JytwYWdlbnVtKycmcGFnZXNpemU9MTAmdGltZV9mcm9tPXRpbWUyJnRpbWVfdG89dGltZTEnO1xcbnZhciBVUkwgPSBTR0pfVVJMLnJlcGxhY2UoJ3RpbWUxJyx0aW1lMSkucmVwbGFjZSgndGltZTInLHRpbWUyKS5yZXBsYWNlKCcyMicsZ2V0VmFyKCdrZXkyJykhPScnP2dldFZhcigna2V5MicpOicyMicpO1xcbnZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KFVSTCx7fSkpO1xcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKXtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonKzHlubQnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMStgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOictMeW5tCcsXFxuICAgICAgICAgIHVybDpcXG5udW0yK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jysx5pyIJyxcXG4gICAgICAgICAgdXJsOlxcbm51bTMrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonLTHmnIgnLFxcbiAgICAgICAgICB1cmw6XFxubnVtNCtgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOmdldEhlYWQoKCflvZPliY3ml7bpl7Tnur86ICcrdGltZTIrJ34nK3RpbWUxKSksXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuLypcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHRpbWVzdGFtcCkuIHNwbGl0KCfml6UnKVswXSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4qL1xcbn1cXG4vKlxcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOiBnZXRMb2NhbFRpbWUoc3NzKSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4qL1xcbmZvciAodmFyIGkgaW4ganNvbi5yZXN1bHQpXFxue1xcbiB2YXIgciA9IHt9O1xcbiB2YXIgaiA9IGpzb24ucmVzdWx0W2ldO1xcbiBpZiAoai5wbGF5PjEwMDAwKVxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxuIGVsc2VcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuIGQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOmoudGl0bGUsXFxuICAgICAgICAgIGltZzonaHR0cHM6JytqLnBpYytSZWZlcmVyLFxcbiAgICAgICAgICBkZXNjOid1cPCfkLc6JytqLmF1dGhvcisnXFxcXG7mkq3mlL7ph486ICcrcGxheSsnICAgICAgICDlj5HluIPml6XmnJ86ICcrai5wdWJkYXRlLyorJ1xcXFxu5o+P6L+wOicrai5kZXNjcmlwdGlvbiovLFxcbiAgICAgICAgICB1cmw6XFxuJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxuICAgICAgIH0pO1xcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3kuoznuqdcIixcInBhdGhcIjpcImRldGFpbFwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbi8v6aKc6ImyXFxudmFyIENvbG9ycyA9IFtcXFwiNFxcXCIsIFxcXCI1XFxcIiwgXFxcIjBcXFwiLCBcXFwiMVxcXCIsIFxcXCJBXFxcIiwgXFxcIjNcXFwiLCBcXFwiOFxcXCIsIFxcXCI5XFxcIiwgXFxcIkJcXFwiLCBcXFwiQ1xcXCIsIFxcXCJEXFxcIiwgXFxcIkVcXFwiLCBcXFwiNlxcXCIsIFxcXCI3XFxcIiwgXFxcIkZcXFwiXTtcXG52YXIgQ29sb3IgPSAnIyc7XFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcblxcbmQucHVzaCh7XFxuICAgIGRlc2M6ICcyNTgmJmZsb2F0JyxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG52YXIgYmFuZ3VtaSA9IGdldFJlc0NvZGUoKTtcXG5pZiAoTVlfVVJMLmluZGV4T2YoJ2FwaS5iaWxpJykgPT0gLTEpIHtcXG4gICAgdHJ5e1xcbiAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge30pO1xcbiAgICB2YXIgYiA9IEpTT04ucGFyc2UoYS5zcGxpdCgnXFxcImVwTGlzdFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXG4gICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbD9haWQ9JmJ2aWQ9JyArIGJbMF0uYnZpZDtcXG4gICAgfWNhdGNoKGUpe1xcbiAgICAgICAgdmFyIGEgPSBmZXRjaChNWV9VUkwsIHtyZWRpcmVjdDpmYWxzZX0pO1xcbiAgICAgICAgdmFyIGIgPSBhLnNwbGl0KCd2aWRlby8nKVsxXS5zcGxpdCgnXFxcIicpWzBdLnNwbGl0KFxcXCI/XFxcIilbMF07XFxuICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsP2FpZD0mYnZpZD0nICsgYjtcXG4gICAgICAgIH1cXG4gICAgdmFyIGJhbmd1bWkgPSBmZXRjaChydXJsLCB7fSk7XFxufVxcbnZhciBqc29uID0gSlNPTi5wYXJzZShiYW5ndW1pKTtcXG52YXIgdiA9IGpzb24uZGF0YS5WaWV3O1xcbnZhciBwID0gdi5wYWdlcztcXG52YXIgY2FyZCA9IGpzb24uZGF0YS5DYXJkLmNhcmQ7XFxudmFyIHJlbGF0ZWQgPSBqc29uLmRhdGEuUmVsYXRlZDtcXG52YXIgdGFncyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHRcXFwiLCB7fSk7XFxudmFyIHNldHRpbmcxID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+ato+W4uOmhtemdouWIh+aNouaIkOWKn/CfkYzlj6/og73lubbmsqHmnInku4DkuYjlj5jljJYnYDtcXG52YXIgc2V0dGluZzIgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkyLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6ZqQ6JeP6aG16Z2i5YiH5o2i5oiQ5Yqf8J+RjOWPr+iDveW5tuayoeacieS7gOS5iOWPmOWMlidgO1xcbnZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBsaWtlX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2xpa2UnO1xcbnZhciBjb2luX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2NvaW4vYWRkJztcXG52YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxudmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG52YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG5cXG5pZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXG4gICAgdmFyIHJlZGlyZWN0ID0gdlsncmVkaXJlY3RfdXJsJ107XFxuICAgIHZhciB5bSA9IGZldGNoKHJlZGlyZWN0LCB7fSk7XFxuXFxufVxcblxcbmV2YWxQcml2YXRlSlMoXFxcIlhVaUZUMXZYWVdyVXcrVmhwbnFsZzBOMHZBV2dwZ2xoOE1oWis5dlBEOTlOSjVWZ2VGZEhtd2FLYXdJeTZDMGg2RkZRaEVRNVJoSm1WMEVRSG5MOXh5YlBIQWNoQUw3aFpFWmQraGJHSFY1amVHK25LNVEzaWU3OHB1R0RiMVRKNGZBSTdnNmV6TElqUU1CeE4vMlhNOTJZTk5QS0RIZGhMSU1RR1Y2OU1xOGNUT1dqS3BaUXAwL3ZnTnV4YVBRS0V6U2RIUUp1ZTd0VHhkU0V2RHQzcy90eGRFaC9vR3pGQ0NOV2VaQ1VVNTN6aEVoQzA2cTZaRmpaQ00rZDhGc1o1Y1hsTkplbXRlZ01nSlVMZFRxYVZkUndWaFZYKzF1QlE5TnkwRHBzTkd4Mkx3SGdPamxzOWh3MTRMaEVxdGhFZTczeVBCR3ZTZ0tFQmRTWWdHN2NLN2hZVlRFTmVHVGlSQXpLUFE3akdFcUVKOGFhZEhPSEFlU2EyNWFCYnpjODFoaHhnWHRpYWxYOFVxZXBuN2s0ZzJHa3Nxb0czSlZJK3FUZldaeFBXcU5NLzBqVVhiclVUQ1JabnJ6R1ZvdzZOd1BRWEtxM0NES2w5aSthWnZlV3o1SWY1RU5FWkdpV2xXNXo0YUpTRWNleENEc2labG8xL1FKSWoycldvbkUwdTU0YWgyL1paLy9aR29NQkorZDE5R21lcGtMQkQzbjJxb2dLbmpaajJyaldxZ1BhZEVlZTFaSWhaM1NHYm1UbEpmMUE0QllJdXVQd3Y0ZEdaZFJvRFc2NEJoQzVqdUNuNndEbTdZbXk3QlhmMXNRYUZpbUVuclNJaUhHaE0rV0tnM0l5V2VjdWgvR2srK01tTjZBeHhjdk5BeXA4YkM0aHpCTXZaSi9sNXRSeWFwb21kQ1Y1QnBpWGZqa1dSbmJvcElqSStXS0IzZkNhWXlSZGVOTEVSS25FbHNjRGl6N1VlbkxwcmhZYy9hNExzR2VNTUZWWjhZbzgvd0dZSDM4SlxcXCIpXFxuXFxudmFyIHB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvLycgKyB2LmJ2aWQ7XFxudmFyIG1vZGUgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaS50eHRcXFwiLCB7fSk7XFxudmFyIG1vZGVfdXJsID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfLCDngrnkuKrop4bpopHor5Xor5XlkKcoXl9eKSAnYDtcXG52YXIgemwgPSBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdwYWdlJywgZ2V0VmFyKCdwYWdlJyk9PSfnm7Tpk74nPyflhbPpl60nOifnm7Tpk74nKTtyZWZyZXNoUGFnZSgpO2lmKGdldFZhcigncGFnZScpPT0n55u06ZO+Jyl7J3RvYXN0Oi8v54K55Ye75LiL5pa55YiH5o2i5riF5pmw5bqm8J+knyd9ZWxzZXsndG9hc3Q6Ly/lt7LlhbPpl60nfVxcXCI7XFxuaWYgKG1vZGUgPT0gJ3loYycpIHtcXG4gICAgdmFyIGxhenkgPSB5aGNcXG59XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IHYudGl0bGUsXFxuICAgIGRlc2M6ICfmj4/ov7A6ICcgKyB2LmRlc2MgKyAn44CA57G75Z6LOiAnICsgdi50bmFtZSxcXG4gICAgdXJsOiB0YWdzID09ICd1cCcgPyAnZmFuJyArIHNldHRpbmcyIDogJ3VwJyArIHNldHRpbmcxLFxcbiAgICBpbWc6IHYucGljK1JlZmVyZXIsXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJyAgJyArIGNhcmQubmFtZSxcXG4gICAgcGljX3VybDogY2FyZC5mYWNlK1JlZmVyZXIsXFxuICAgIHVybDogJ2hpa2VyOi8vcGFnZS9nejE/dXJsPWh0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvd++8n++8n3R5cGU9Zm9sbG9377yG77yGbWlkPScgKyBjYXJkLm1pZCxcXG4gICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJzigJzirZDvuI9TdGFy4oCd4oCdJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgY2FyZC5uYW1lICsgJyYmJyArIGNhcmQubWlkICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcIiYmXFxcIilbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7aWYoIWdldFZhcignbGIyJykuaW5jbHVkZXMoaW5wdXQuc3BsaXQoJyYmJylbMV0uc3BsaXQoJyMjJylbMF0pKXt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJytpbnB1dCsnIyMnK3BpYzt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXG59KTtcXG5cXG5mdW5jdGlvbiByZXF1ZXN0X2JpbGlfYXBpKGJhc2VVcmwsIFNlY3JldElkLCBTZWNyZXRLZXkpIHtcXG4gICAgaWYgKCFTZWNyZXRJZCB8fCAhU2VjcmV0S2V5KSByZXR1cm4gcmVxdWVzdChiYXNlVXJsKVxcbiAgICBldmFsKGdldENyeXB0b0pTKCkpXFxuICAgIGxldCBub3dEYXRlID0gbmV3IERhdGUoKTtcXG4gICAgbGV0IGRhdGVUaW1lID0gbm93RGF0ZS50b1VUQ1N0cmluZygpO1xcbiAgICBsZXQgc291cmNlID0gJ2JpbGktYXBpJztcXG4gICAgbGV0IGF1dGggPSBcXFwiaG1hYyBpZD1cXFxcXFxcIlxcXCIgKyBTZWNyZXRJZCArIFxcXCJcXFxcXFxcIiwgYWxnb3JpdGhtPVxcXFxcXFwiaG1hYy1zaGExXFxcXFxcXCIsIGhlYWRlcnM9XFxcXFxcXCJ4LWRhdGUgc291cmNlXFxcXFxcXCIsIHNpZ25hdHVyZT1cXFxcXFxcIlxcXCI7XFxuICAgIGxldCBzaWduU3RyID0gXFxcIngtZGF0ZTogXFxcIiArIGRhdGVUaW1lICsgXFxcIlxcXFxuXFxcIiArIFxcXCJzb3VyY2U6IFxcXCIgKyBzb3VyY2U7XFxuICAgIGxldCBzaWduID0gQ3J5cHRvSlMuSG1hY1NIQTEoc2lnblN0ciwgU2VjcmV0S2V5KVxcbiAgICBzaWduID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkoc2lnbilcXG4gICAgc2lnbiA9IGF1dGggKyBzaWduICsgXFxcIlxcXFxcXFwiXFxcIlxcbiAgICByZXR1cm4gcmVxdWVzdChiYXNlVXJsLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlNvdXJjZVxcXCI6IHNvdXJjZSxcXG4gICAgICAgICAgICBcXFwiWC1EYXRlXFxcIjogZGF0ZVRpbWUsXFxuICAgICAgICAgICAgXFxcIkF1dGhvcml6YXRpb25cXFwiOiBzaWduXFxuICAgICAgICB9XFxuICAgIH0pXFxufVxcblxcbmV2YWxQcml2YXRlSlMoXFxcIkw3QXZKNDFDKytrbGxCTVBHOUpSVFV6UXZFakpYd1JyZlJpSm1FQnVmVVRwTHBod2hsNm00cUVmSkdORmNUcXZETm9UWmkrWFd6OEh4dTdVMlU1N3NzQW9CTWZvL2VBNjh6dVZEa1g4L01Wb3BsVHpPcWpVTzZWNXBFTFhZaUZXWFJ4RjJ2bzNWNnEyRENOc1hSUTB5ejR2aDFUcXlMR21RYUtaUkZYcHk1QVFkS1JQay82VXA5dnM5OWJ2YWw0ZVRJWUpxWVlmWXMrclBteGFIOG1pMzI0QThGWjdQNkZKd2UrUW9BMjdZVitXMDkzZEhJVS84R2hvVS9XNmtxMEwrZ2lES0E0WE8zQUNDRXE5a2lxV04vREQ1WWl1T0lXQncxZ296VWdOS3dXUVRkRmdMc01aTmsvajNXQTdoS29GZzhTR0RFenRiQkRoZmdXd0FicFFpVnEvS3NlMVNlaG9DUzd5bTJNMUVhaEp0eFNibUxPNEVnd3diTS9nc054Q2xIcmQ3c3AzMVcrNCttQk42d25wWUtvcmFWbGtTVDVpVFN1TGEyNzNjTTlObm1OZmZSMjlRR2crN3hPVzducTh5MEpuNS9iUEwwQlNaNUF0UnFMcnZyczZOWDlRYVhUaXlZQ1FSVS9HUmtwc280ZDZITXZLTUxXYWh4ak9uRkNSbXVNQitrRzVBWDRSdmNycVZ4ek5lQUp1S0M1bmxFZlhqRFJYb0U1bE04VUtiS1N1TmRSakhUUERwaUcwOFZucmo0TWZxMWFXb0RzbmRQWVVpSUo1T1NwMlpaTE84K0tZSVZlR1d5SVZRYStkaWtyRVM3K2FuRVViT3NMQ3hmZmRBZVRLcmNUVzU4VTZpbGFLcElHWm1BSkpJOTZxSzlaUnNNeU11WVpuUUU1R3BLZXgrMnQ0dzlZNXFGZHdpRDFkTDVhRm9qNmFlZmNaR0dWdy9ZOWdVK1l2bHBoYklSUDZTRUlzbFY5YUgvcU5MUHJrNjBWZnZMT2xNNTVNdmxNWnR5TkRKQmZDVlpZdlNyQUhZSHg5MVY5MmhtT1krMFFlVkVVZUFMbCtIQVYwcXV0SUVXcjVlR2VNOUJUWWY4cHIyQjZvaDU2TGFxekFQWE5UMnliYXVRa0dWeGFzeEMwczdkVGRnOXV3YmlqR0VrdG94aElsL1hEZFJPdy9OUytqV2lDUUFWaERzdFAwdzJkVG94MUhRRnVUOVdCdUtqTVNaTEtOZlNxSlM2TWcwMjZMQ0FZWVlEcW1HRTB5bzVsdlJFbWJHU3dOU256d0ttNHF3cFdackFwSWFBZnJucGx0Um9kdnl3RXR0RitiZ1lGV0JYb1l0NUFtQ25abkY2SEs1eG1RYVdUTWZwbGo2RHpFMy9QQ0FkOWNGN0c4MXdHa0RhSmg2eG1YRU16RGNvSFpkQ3liWDdKK3h0MzFjY0ZUMjUyeCsrK0tKUVpwWXkwUDZWN2Npc3J4bEZHNlNNWEdMTUhyRWs5NCtjZDkrYWNwNjNjcWJSM1gwSVJuSUpYZDlVUEZ0WGtwNnZEVWxMNHlTakdDUnZXVUo5L3llQWk1NFdPSlhuM1g0VCtWc2NVNXgvWi9MeXJvUUFoMGZRMVZcXFwiKVxcblxcbi8v6Ieq5a6a5LmJYXBp6aG5XFxudmFyIG1BcGkgPSB7XFxuICAgIGF1dGhvcjogJycsXFxuICAgIHR5cGU6JycsXFxuICAgIGlkOicnLFxcbiAgICBiYXNlVXJsOiAnJyxcXG4gICAgc2VjcmV0SWQ6ICcnLFxcbiAgICBzZWNyZXRLZXk6ICcnXFxufVxcbmlmIChtQXBpLmJhc2VVcmwgJiYgbUFwaS5zZWNyZXRJZCAmJiBtQXBpLnNlY3JldEtleSkge1xcbiAgICBwdXRWYXIoJ2FwaScsIEpTT04uc3RyaW5naWZ5KG1BcGkpKVxcbn1cXG5cXG52YXIgYXBpSW5kZXhTdHIgPSBnZXRWYXIoJ2FwaUluZGV4JywgJycpXFxudmFyIGFwaUluZGV4ID0gcGFyc2VJbnQoYXBpSW5kZXhTdHIpXFxuXFxuXFxudHJ5IHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgcGFydCA9IHYudmlkZW9zICE9IDEgPyBwW2ldLnBhcnQgOiAn5b2T5YmN6KeG6aKR5peg6YCJ6ZuG77yM54K55Ye75q2k5aSE5pKt5pS+JztcXG4gICAgICAgIHB1dFZhcignVUEnLCAnO3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjBcXFxcXFxcXO+8m1xcXFxcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzbvvIbvvIbvvIbvvIZSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlb30nKTtcXG4gICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2Y1UjVPMzk2SjIyRnhrYlFia1hYQ3BnZ2Z1YWQ1byszcDk3TEhXYklwdG93NG8rTVJRdGFQMC84d2l5SkNyWkNhWllXNjR3VTFCNjB4UkJRdGJkSkNFZ1J1SGhvWnNiR0FaQkE0My9UWHhHd0lrQ2NrYlY2bnpIaG05M0RrNURpQzVJNUhuK0NmaUJNRTR5UW8zOU9VSnkzcEdBV2xqRDFzbnB6R2hCajFiM0hyVHZ5a2pGYVNQZ25TL01VZEpNZjBRWklTTkdVOHo1b3ZhblBzSCtGNVdzUWdIZ0lxeFc5ZXZWMyt0Z3lmTFVkRlIwTjREbHRMWXJ3N3ZDUGd6UFFYL3Z3Qk1QeTZZY1Z0U1ZLamI2UXpGYXVUTitKMklSWXJwYXkxNWFrQWtvZmErWXgvZk5UZWY0KzZaYVZ6bVhlWmFFYWowYlEvSFBaaWJ4VHozUytEbVVWZGdZdTBIWE15MENGQ1hTdDMrZU9VTjljK0VtVkFMck5OOE9xV3JQZWtydkYxcU4xVUt2NmtCY0JFUC9Td2t1ZnMzdk0wN2ZXdi9STkpZQjdoRWhzb0l4eXZIUU9pUFlDVEQrZVVzK2ZoK1U5YlJSQVV6UlNsWEN6aFdYakRmQ0pqWS85QjJsNFJwaC9ud29wRU1xaWk1cEpDSlVQVGMvSDRVZnc5Rk9MWm14TUhiRWlXZmZwMHJnYnBIb0tuUm56d1lmZy9SSzduOXpMQWRHQUsvOHVHYTBzbFo1SVQxWFVlcXJQc0NxdDNNSDVHMm15eEJEbHFEMFlRVWI2TldoSTdwampwaW42YlcydGh3ekg0TlQvVHA0Q1dwSGxWeWNCVldzU2doR3lTQkVRUnBCUUtMT1R2MUV2T3hnRnhoOUdZY3U5VDZXUHVmYkVuRGcvTEs5cmdyMnB3b0kzWUlqMHAyQmJCbVg3dk1oUHhLS0xweFppNDNKd1ZmOUh4bjMxTmFZUWkvMFMxelRDZzlTMjZ0VWdBcTQ4cmkrRWkzTUhVa0k2V3NNYkE3M0xuZmdCajc3REFsUWw1UU9rVXYvcEhoeVlsaWlRMlhZYVl4U0graEc0K3RBK0s2dVAwaERLZVFMay9mOXQ3aSs2WU8wVSs4R2kvWHdIQXN0NkNMN0kvS2lCZkZQbk5ZTHhaQng5RTBzUWVySSs4WUtGMkpmVG90dkhmYzlpU2YzTGVBY1V6V3kvR3NZcjIwcXpFMSsyaHFVbnhRYnFpRWpsYU1xZXIvL1FvNThPdytGbXBRcDF3dSs3aGdmcjZSa0s0WXd4a2V3ZVhoT1JmQ0JOcUlCSnp0d1oxZkIwbWJwUk4zY2tuekRpY3JhbW0zaldrRGlZemYvSk0zaFlzM2NyeWxkR3lYcXIyOEo2dTh4TGFTRFhGL3lVUXdiU0ZXSk1zdDQraWpTM0g3RFU1d1lqZ2toRXpoQlZLeDcyNExVbWtwVVRhUlRqMDBKZ0NNc2xIRHl5dkxTTlpXYy9zSW4vdldTQUhVOXEyQ1lSN0M5Q0lrR3VJMGtPS0gwbndLS2kxeFdmOVp3MWl2Z0x4a1VsT0VJRk5wUThYZDRSdmlqakdMcnhRUjJ6bXNycUxqVGhqcG5SOXJ5bDJxdVRtK0htdWllanNHTVdHSVhLa3lwZExZUG52Y0hmSDJjbFdnVTcxVkp4V3J6NktrN0xqSUd6Nm1Gb2o0NVpaN0YvajF0alhNaDhscllCbEtkWGp6bERjczJoczlKOXVBY3hLV2pSWG15OHVLQzRadTdNZlZLMGtjRGZ2dEFmY2tuZW5SZ3doWkZLcFNIeTZIOGZJbDBXbkhQYlVTTjUvUTFJaWs4a2FhQzBNU2JSOEtWNDZ2aEVldlFkUG9leFg3Q2pwU2paa0ZBS1NGLzJrdURYeUdzekx6MmhOT2tHMGkxQm1reGhqYzYzL0FRbHlLaXprMzBNSkJmTlBWRTZ5OXFERXNkWG1MTXNvdUg4cDcwSHlIL0tvZWx5QWtpK1VmZGxLUU5qMTdIb1lHU2luUWtiYjJpRldHOU5ET1d3cmo4WlF1WFRpTktUWEpPckg4bFQxKzE2NEVHalhlNStmemZVbUFNMENMUk1UUi9OcTV6TlZnZTlQRi9WUE5mVTBkTlZjb0xtWVA2RFRVNU96ZzBic294MWE4U2duZHhGUjliU05SelpuelBHSm82SEtHY2ZiVmFTVUZRQ1RkNlVielRkY3BMRFRRcXVad1BGYmRkU29ZamRzRnVrblBDRTJVcDZyay9lMWRoOUtyOG1hRThGWThDT25CdTdCMVdkUGR5dVdlejd4UHRzaHpBSXdSZWtJT21HMG9tU2xieHVYdzBiOVd0UEFYUk1UZVBnYWJEdThCcnowLzRzMGVvQkNSNmN2WGl3S0FYOERGSTl2ejRmbnVyTkxkN2haSWtDdkFuVDNSdy90U3RzUys4ckZVbUcwM2lhUW1KbjN5WGFpWncxTVNIa1JWcVd0RFo4elNBa3Jxb1lBN1EzdXlYZEpNNk1xQ1hFYkNmZ1hsZ1A0Q0E4Z0xyOHR2d2g0blhGbVlTYWFHbEVNWUNoaFZzUDBUb25zZ3lHYzZaSHJGK2tIMmxER1NxeE1OZUIrUVROc05IZ3JFUnJoeDY2eE95bHNJWkV3TENldm5mbVFwL0NMejRNY0N0MEZXemhuSlEyTkFoODExbU93YjQyaTNYT2pudGt0SFQydFFNUVFLQmdkVG5ZakdZS3cwQjQxNDF1ZUJOYXdHYVozbExhWFdUN1l1R1FhRktwWGR6a21pNXNPZGpWUnlTa2pWcEE5WWRFYW5TUTU2ODRTakxaM0J1dFdOa3hJcDNlUXk0M2sreG9raFB2d2pUVllwR2tiYkJHb0NNOHpJQkR4ZXEyMkw5QWtjTllYdXpKYXkvTmczVHVYV1dLQXYwKzh6S2RDUnR2YUlWWWIwME01YkN1UHhsQ0RJZ1ZDalZDSFhpYnFzdVA3akt5UnozdHI5bkNaSVgrK1lDQWErWmRYSzBQMmVnMXRsSnplV2cyMHpVZ0VqT2tuc0lGa2sydUJmTDJVRWpOeGRsbERPSVM3NEdyNEJIYnFURk92RkJhMWpabFBicmZ4dU5ZMXEvSnpTZGNWRzkyMWU0N096OHJGRFB1VkU3TmZ0YTJtRGZRbDdNMEpUTjdUaWVCWWpkYUFYUFM5RE9ZT1BzT1ZXVWxPMVF4Y2V0djVnd2dJMGdJVmhwYVhUSTZBeUMyblk0dkxoZmhVWldyYmtlNnNhR3YrTitRY3JBUy9YcXpOVk8xOG50YmZNdWVsRmlTblRGU2lyWUJOeU5iSjJ5dE9rNUhxTUh4dk83Y0R6TVE3RTJ6ZUpIajhSeXZTQm12VHEwakJkTEJpSUFoN2VKK3gySm9FVy8zQ2JyVGJmT3laeitIRlBzTzdoc3lUekthckRwRHZ3ZDZHbE9LZ1gyU1ZsM1NURDRhTHVYZDB2TndWWnFINkVpUnJsOGFoU3pMd0FEY1lNSVVCRFJ3ZUdZM2xudG12Q1gyMXdLVnRkZUJHVG9US1J6RE9BUk5mcEdOYkZCSzByd3FQd0szdVk0dGlYemhtbXlKbEQ2SzJvV1U0ZzlYWVc4MkFCbGs1Mk1sT2VRWWQxaFdIcmF3cEdwYkhDRWM0aXFzOE4yU2RhYTVCOXFONFRZQjNYTk50aStyTkl0R2c5T3Bhc3U1b2ZmQ0ZGSWJOWm1qVGM5RWxLNE13bk9XOTlDR200MDJNYTQvZWswbFVIUGtyTThVVzZOQ0FESW92QzBrbXJWVW94blMwSFF4c2ZnV1FJbGtOUEQ5RlVmTzRpSmYyZjNpVGd6dDloRTJPZ1QyQ2pLd0twOEhDanVoY2E1RmNzMVNsRGxoU0FLZUhNSDl3MlVmL241dVE2bkIwV1VXQ05zUnY5RE4wTVdmQ3hWN0ZOeFVsYTJ3Y1BJYlV0WVJOam9FOWdveXNDcWZCd283b1hHZ0NaRmxxbTc4dnRxQ2JlSzI4aVh6akZjdCs0OHQwa2M2YkVpcVAyOEtuWUY4bkFWbkZRSTJPSWVRdktiSUhBcy9UWGxzMjYzUWxhamRIVXBNS1pOay9BQktHLytxa1cyZFdRRTlXbVBDZVBPdmRWbUFhUE14Mnk3TG4zajI3VVZSUGxJcG5pTzZyNldQMmRUNGFtZnBhNERUOXc4RGt0SDBqMzlaYTVLYkJqcVlUMzA4RWFYMjd4UnUvcS9OWGNYaGtYUDlJRFp5UlNDY3Vaa3hmNlRaNFFLcEhuNXZ6am91SWFjU1BNVHRhU3RweUZEdk5HSFQreFY2RVl1QnE1ci9nQ2Q2T2hTYkxES3FIenZjQkNEQkxNMk9QNC9FUjJzaHY3R3JMMklic3dLWFFZNVNVSUUxeDluZUgycjVHeDQxUDBiZk9WcG1sTHRCTk1SRVBsTTRqVDBPSmpNdWhEL091RzJoNDlReGVKcVVLcUNxclc4ckFXYktJcUY3REh4RDFsejB6Tm00akVmc1M2L1lMU2xUcDRyM2MrRmVkRHZhUmlHU2lMbkdFODdxNWJFZHdLN1liblZCWU1YNmJkQ0lzSzhRMDdRSmtPeWNVTWZtZENrcVZlOTdSYUNubGFjSFFhZzAyNGVGbldIR0ZPL3J4L3RVdlVaaWMyd0JxNi94Nmo4QUo4RDJsbmduOFg3YWFBcjlRVnNuVEpXWVZrczBodDM0U1lPTWVrL2luQ21NdERza1NyTzcrV1RFZkN1Q0traXA3Vkd6NTJKTXEydnp6bW15S3lvMnFhOFJoVWNjeVhoeW04V0d4Nm91KytTaUpxdTZmTXpzd01HNFR0WC9qTFJmWDI0VDhhb1lwWjNvOTNpOVN4a1FvMHQzT1EyME5IKzRsb0JyV3lrd0FTR0ZxV09YLzU1NUhub0tqR3VoYys2Yk1WRmcvalMzcERKc1huK2ZNdTdlaWRKYXZ5WjZVWmpoMEE4S0w1cjdqekFYbldlNkVpNS80UDZWcE9VSFlYS0E1c3JFY3pGcEhVUDlSZFYzSXVpSzc2R1BxNnBqNU01TGpLZHdONUtCTlh1bDBhZ09lMnBJSVNjbXNIS1BNcmIxTTQyc0Rsb1JRaG5lcE5pbzhBUnYwWUQyUTlHSlBPY0JIVTZFVEhXWXoySWl5bjlQaWpaUjdZU3AycDd5aVFCTkdxaldZR1d1NkxNbFFJZFlSQ0o5cFRSenh1VThybnp4eGs4UFFDRDVwRE1SRUM0WmRNb1NYY21jVmNIeU1DbUFVR21pVFIrT3JBQ3JMcGd5ZHZ0TCtrTUhVdFpIdkg0TWFSN0l4dmlIRkFFUWN6dnFKNkxVa3NpMUVkT0xNSS9Sc1BjTitQNUV4TXIyeGsxNzZQc2QvdWRqdWg1U1NZc2hmZENxZmtvOU54YXppN3lZSTVvbEdFRTRLaVhVcVVrRmQzcXdrdkhJVlVJYVAwNzVRVDJ5WHdWcHNMVEhhRHh6NkZlM28waDRMa2xpTzhnR1dhL2lxa0QvRG5tOHNyeTBqV1ZuUDdDSi83MWtnQjFQWlh3cGdhMDFyRGZZYVZUTVZ5eEdTSXl5dkxTTlpXYy9zSW4vdldTQUhVOWpTSWpJaFJrZ3B4VC9LTXY2aUg4bGxXSEoxdGo4L1JUQ0YwQ2wyZjZXd1RiRkpZY01hRmxubU1pczJBTFZPTlBzNlVNdnNPL1BPdzVDY3I3OXNKemllV0xNVmFPVkc0L2UxVlBUU0F6WTlIODdPQ0pYZXgraUFPb1crS0FucmlCekFWQmRGd3lVcUllbkxKVnNSSDdWdjNOVjczTXFycW4vcGt6QVh0a2lVQVh3cEttVnpkYmVOTGxlYm9rRGtvbXNzcnkwaldWblA3Q0ovNzFrZ0IxUFkzbVRSbVN0U2tIYnhBL0Z0Y2ZoYjMzNEJvejFZdVg0K1pucEJsUlN3eVRURTF1R0xZZmVwWmEwSjlwVGM4WS9HYkU2elh1YStmZDNPWWtrNENwWTVoSU5WQU5HYkdNRDFZUWxwY28vcjNBNnY4SDdzZE81SzdTalo4SVQ1SlNMVnNwQkZVM3l5cWpQY2RWRzlkeUQvTHBHeGJXMjdRQm8vOHUyVmhwa205TGNNdzNoOGhpcDZDekI2VGxwd1QxVDY3WEhrR3o4VWExQytTTC9FRXplcTlLOThWVFNXNEZQeWVjRlk3SVVjNDBBWFBtcHFLSXF0YTdTY2pBWXZEOGhaSDNkM1UxVTUzL1NvY0pIS0RqNFp2MWpibkZUc2pvZGpWMGZIZVlPZHQ1MFBGV2NPeFhZYXo4amdnZGwwNEJFRkZVazBTcGZ2MnpyZE4yNTVLRnIxbTRnVXh5M0tpN3lGQVBoZEtyeUNKL2hqVFJKUWNURG5hNnlQU2ZzZUNEdG9Sa21HdjB5TmRFMGJpOWM0cFdQUWdyVmkwUWpkekgyNVgwTm5KQWtsNVlVaWtQbGxGWlhobjJkUXpMbU1qS1AyUks2TEtSQTVBcEhnT1haV25HdDBBbWNmVXl1dHcwR1lSRzlld29LQVlRMzhKdEt2UnNkVklpNkZjNE15amUyQmJ3dUxvdCtsNll4eFAyRmVrVWtraTk4Z2JRcTBDbHB2YmhaMm41dmM1cUlaMWZ2YlNOdGVOSGkyTnNEVytoVVhFOE9ZaDNBeDl3QUs2QmhNMERpbnhvNk9Wb3o4YWx4cTQ0dHRxa2lBUjdHOEhYem11TU5qTHMrYTkrUUk5cWU2RFNiQUJRajdVRkVoUGNWMWUvZ1BUL3dSL3M1b3lTU0x2MzMwdGpyendvN3BsTG91bmMvc2E3VWVBeEJlclFVcXkyQWw0MURhd0ZMZUsrbWErYU9NYk9lWjhkSUJiR1pqV1JKNmpYWkllTTVka1dvYVk1Y1JSY0NwMDlxRm1taGwvY1dzUVYyL0tmcS9EYTJ1MzhTZlhySTFWSzJlZzdDMk92azVTU2NzbHNSTlEwUWdvdEMrNE1DVVJFTTg5UmU3SUI5L2l3V3YrNzlxSTNTL0huS2Z4cnVGdk9XTjQvd1dIUjY5b2NhaEd4Ty8xdDl1WlFzS0w4Tmg0bUYrTEFGWWpoWitSNElwQlZ0ZVh5NmZHbFc4YVFRMXN6bS9TOWlJaytqWWNra1Nub1ZpWVp0bTJ2R3NaVkNJT2NsMHZyTEhtWk1WeWkvR0o4VDlsL2lTUXErOU5BRG1XU3dSc1c5anJLUjJ1eXdHczlCaEZlc2JWNFhKWEV2eE1NS2pIcHdodFpEUUFGS0tMZmpVNGxMdVAxa0cxR3ozZlFnVkcwQ0tnUXJHeHd5ZzlKTkZ4OGxLMHBkRU9PK0RhWHpUckhvWHhNMGJJc2ZjTFlDd0s1bGxJQ0tBazhaTVQ2TXRhSE12MHk3ZXZNakJaLzFZbHZROWVrTDBmNis3aFc3YkdUaEVPeTd4OUl5eWJibzl4VThrR1EwSXdTeXNiSDc5OWV5ZktubFpaWGRVL254NFduMWExQ1B5Z0sxNEt0aVhUZEZEUTJMZ0NPbjJxb1BaZjdOdElGeGRMNnlhZXArQ3FxMnVFTm9wZzBEenhUekhicVg2RG1jUDdQeWVqSE5PVlVnM3dERjJSd2QzSWt5WUNxZ1puTjZFclcxVjI2b2lsRll5WEZaK3Y3RUhFOEI2TWhMbnh0TEdrUlpaMCtGRkk2S24rWG9lN0xMKzJaYURvNC95eW5rVlI3QkZ1U3FodEtMdnpqZGJ5WW9Ub3dpbTg1YzZScS9SQ1h0d2c5Umc0cVNFUkdqalp5RmNKUS9RNmFKYnYwTHBFeVJuM3FwcDc1dVQzemNiVFNSUlRWanp2Y3VYSUVyZ3IxRC9QdWdGbWhPV2UvMnBCMTVqVTQwaWUrM2M4OW95aWFlSU8vNXNrZHdRUHpnNi9ZSE5WLzFzVlZnT0thVzRJN1FBa2FTT3RkVlBtNkg2d3ZseVhFQ0FOdmhDTUdlbEZBZTFqV3ZkQk11blZSOE4yUkZTQU84TWtJSjZvOEx2VW96S0RrTVFCdDVwL2NXc1FWMi9LZnEvRGEydTM4U2ZYRDUyZ0tENkg4WFZLRmZtREhhb1NoTXNyeTBqV1ZuUDdDSi83MWtnQjFQYW1iMHFhYlQ4M0Q2cW4vYTNHbEh5R3hhbVpnUkhhSzE2dm1aRXphbnVURE96RzFhVXB2RUN0UkI4RU1nYXBhUVhMSzh0STFsWnord2lmKzlaSUFkVDI2dkZwZ2EwWlJMV1JQM2pIMHR5ck5ZQTc1ZUNUZjlkSXFqWUdjQUExcnNVMHplZXBkTVo4TUpYZDUreGJBYVhBL3VKZnNHalBJN3BzUWM4Sm4rZm0zTUxrK05DRUY4THNRME90Z2xJWEwrNjNGUnZ5RzduTWNldkg0aS9YVDBCMUJYTlBMNnI4aTZibmJlK1FKS1lNQTkzUGRiQmNEc0dUVmFMaUpsWWRFT1RmallicExVUkNkbHg5Sy9wdUVYVytcXFwiKVxcbiAgICAgICAgXFxuICAgICAgICBpZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICB2YXIgZXAgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFwiZXBMaXN0XFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAgICAgICAgIHB1dFZhcignYWlkJyxTdHJpbmcoZXBbMF0uYWlkKSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn572R6aG1JyxcXG4gICAgICAgICAgICAgICAgdXJsOiBwdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKT09PSflvIDlkK8nKXtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQse1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6eydDb250ZW50LVR5cGUnOmNvbnRlbnRfdHlwZX0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTpsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycrbF9jb2RlLmRhdGEudG9hc3Q7XFxuICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5oqV5biBJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvaW5fdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOnsnQ29udGVudC1UeXBlJzpjb250ZW50X3R5cGV9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6Y19ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6J1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICBsb2coY19jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mipXkuoYx5Liq5biBJztcXG4gICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICBcXG5cXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIHZhciBiYWRnZVR5cGUgPSBlcFtpXVsnYmFkZ2VUeXBlJ10gPT09IDAgPyAoKGVwW2ldWydiYWRnZSddICE9ICcnKSA/ICfwn5KwJyA6ICfwn4aTJykgOiAn8J+Toic7XFxuICAgICAgICAgICAgICAgIHZhciBiYWRnZSA9IGVwW2ldWydiYWRnZSddID8gJ1snICsgZXBbaV1bJ2JhZGdlJ10gKyAnXScgOiAnJ1xcbiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSAnWDUnKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICd4NVJ1bGU6Ly8nICsganggKyAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXSArICdAJztcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXAnICsgZXBbaV1bJ2lkJ107XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgdmFyIHBpY3MgPSAoZXBbaV1bJ2NvdmVyJ10uaW5kZXhPZignOicpICE9IC0xKSA/IGVwW2ldWydjb3ZlciddIDogJ2h0dHBzOicgKyBlcFtpXVsnY292ZXInXTtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlcyA9IChlcFtpXVsndGl0bGVGb3JtYXQnXSkgPyBlcFtpXVsndGl0bGVGb3JtYXQnXSA6IGVwW2ldWyd0aXRsZSddO1xcbiAgICAgICAgICAgICAgICB2YXIgZGVzYyA9IChlcFtpXVsnbG9uZ1RpdGxlJ10pID8gZXBbaV1bJ2xvbmdUaXRsZSddIDooIGVwW2ldWydsb25nX3RpdGxlJ10/ZXBbaV1bJ2xvbmdfdGl0bGUnXTonJyk7XFxuICAgICAgICAgICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2ZMSzh0STFsWnord2lmKzlaSUFkVDJOS1hPeE1MMzR0UHNKY2JGZ1lxMkl3ZXFSV2xjdG5ubjQ2ZEpIR0FvUTZTK1R4c1dKWjNFTGJVQUVmMVZ2MnhvTXJrbDNLb3FXdG8xdTd1OVNVdk50ajF1eEM0ZW51WklFM0lPVkpZZnVsclNJdXFuTUU4K2hsVjM4QlN0WkNrSmYwaVczSGRGMmlzQkhFeFRaZjRscEMyS2Y0dUFzUGZScVU4TjlqYlA0K3F6UHJZckcrWWFXdCtpbnc5WmFHTmE2MDdGdXZMZ0grNHZaYm1mL3RHblJ6YVF2ZjByaHZQbmZCZUV5YU1Bem1tdkFNeDR1MG80MnJ4SG1OS1N4LzJWWmxJcStScUNaeEpKM2JLY1FINCtGL2QwRzVZbVh5T1BaUk5ZTTdSb0J6OHplUUUvaHFCclViclNkYjNWdzhTRHNFeFUyaFdPRXIvMDUybjc0U0VkV1dkYzM3azlCTGFWUEpyZFBGcTNyK1poOGY2aVdnNk5YQnJCK3RVbEdTVlRqWmZzTEQyckJmcHVQZVFRV2RBRXJRSmhJRk05NVB4aDNTNEJIdFVvZFozRjIybWl0TEVmODZJUG8xOHlyZ0hNV1ZhUWE0dVFBNFpNRFQxYWhNODVrNis3TFRtUHR6Nk9OQXh2eUlUNzVzQ3hTY2swWHNMbGhHOWdWOHJVMGZsRDNlK2lXZWtqazFYeXJtZGNLZkZIR3l2SWZxV0Q2ek1SQWRGSUl5WHhOM3N0YnROaTNiUU1VWmdiWW1tcjNRbGUwakFIb1pSTUhkbDFCclMxc2RtTGVwV3h5SEM4cjZVMzVIbUJRTkhwZHZ6aTc3V0dHcjQ0UTRNZ3Y1UlhiSjllSk9GR3psaHJUc0RRejN3QVNXelM3SnhHOGNrNWZWMHVUUmNqZ0pQRkNJODZleEQ2NFQ4dG1za2VrV1hNdFpVamxOSVRQOVJPUE5LR253enJoRlYyUnZWcU5HMEVGSXNXMVd1YmF0YXNpSjZmWG1CVEYwZ3RNbUJLMWFzM0pIV1JoS3JnWWdGQVNkK0U0S1VBdU1QTHRRYjBmdGx5UWlBVFZzYVJyRnpia3B1WWxNQXMxUDlWaVVqL0V4b1hxQU1hUThaSnpvdHNQdmp3K0tQRk1mbnc4QjlFUWN2WjdjQW9LS082K25EU3lIZU0xZXcvdW9XSDJYSk5HTDFQVWM5czFUVWJhS3RVYlMyNmhXTkdNckd6RzJ1MTZvVGxEZnh6QjdLTGpteUlpQ2hCNzQ2Q08zVG5aelhwNHMrdjEvcmZnUFl5QVNHakVqUk45cU1hejdJbC9tTFBpRVVEYWpyTitBVSs2VVpsU1VLWmFhbXpqLzR0SnRsbXBBM2kxOUQ3SXN3MWtEekh3THNZZm1ITVNra3YvOERKcFAyVkRQRzJGQW9SWmtsUmNjOWVVZGF1eUwrUWhDUnpSQUJxdnB6ZTJJWVVUTU1Ha1dtVzJ6VUZyZDdWU3NzcnkwaldWblA3Q0ovNzFrZ0IxUFk1WW84MXFpOGhYV0ZHL3NrVmkxWVRwYzBWNjVVZ1o2SkxJQjZLcDJPb3M4M29naVNGTURKaXNUMk9FQzZHVXhoYlZYYnFpS1VWakpjVm42L3NRY1R3eSszMndLVHpXVi8wM2gyUm9XZEoybm9sMHVDTUdZOWFEQ1BVYlpXVWVhZkxLOHRJMWxaeit3aWYrOVpJQWRUMkFMU1pvcGl2TU00SFZORjNtWTJYTDFBM2plc0lBdHhEUi92QjgvQUlsL1dMckdMYmtQMlNKeDhCS20xaFNOb2dXeWQ0eloxd2FKcXBOY0xiMGxwZnR6ajNCdzFrZ3lNWXBTL25GNS80ZDUyWkxrR0d6YVVNTzNLeGloUEkwdlY0LzZWZW1mRk9Md3pYa1JXcnhSeWhGeFBNY3NHQTZlQXBIbzFoYzFrOW0xVi9DVnVXV2N5Z3ErUjFwejRhV29xSktwdHZUUnVndjE0aHdKVCs3cndHV2l0T0ZWdUszTjEwYXJRS1ZaNmtUOVVDdkdLNEdSa3VaamwvZGJKZjRBeGFjOEZmTSt0Ty9vS05ZQjg1MGg2Z0NiVG1MM1RXMkV1RnVTRG9ZNXFrTXkyMmkxdTJlS095dFI0U1JMRkw0THYrcEVxZkhjc29MbWo3L3pJVXFPTkNrcGhTRk02ZGZ5ZENHOWM0VjVBc29tOHFPQm91enRnQnpLVUhUMG83MGJRM1VUaXQxN0Jab1ZjcWNiZUpleWR2VzNIQ2FWWnkyd2h3d04zYjE2VkhsLy9INGcwZ2lLZkY1N2hKZTR6aVNWbkYycFdzR3JSNWR6ck8wcGVxd0FnWnRvQkRvL21hTFhob3ptR2ZZQWM3d3pXbWJYUWVKdi9RQnJvdTI3T0tNRkRBWFAvY2p5RUVCZ0RIYjFyMVZYTUNpbVUwd3cyVlgwQ2o1WFYrZjBKNVc1N0tVT1NlQ2pidnIrVlV4cW8xNnh3OWtyOHRuUTJRejVrTUl3S2tNSVBpT0poSjJCQXArSmFYbGdNWElpNnJ6dDdJY1lkYnlib2M3RWpkdk0rc3EwQTVCZ1RMWTZFQzlCbmRIZWhodjBhajl1Tnp2b2p2a2d0OGQyKzV4TVliZFhCR1htZHl0aDVwQXluOG9MQkNXVURiV2U4MC85OWV0MWlIL0dESkVmb0RMRGY5cCtrNCswUWJ1V2RFcXVUTzFqQ0pGNTFoN1R4SGwvVVlhL21Kd3VkMC9ZOEQ0ZkVZWlgvVjNoR3BPRDlSMlptamc0SXJwUHB3ZWZqOHcwd2djZnlMejlaTW1zMVBvTW4wcUNubk0rVnU2bjZzeENsUGI4eVd4S2t6TWgwZXdFNG5Kb2NoV2JEazVyY2ZyRTAya3lrRlhGdHUremo4SEpnQUhNYldWbmpueVhJNzZVZ3FEUmVqQUh5Rm1XbVZLNldoR2s3bTZac0pxakppMkU1MzRlQjBqQVZZZjZKYnM3aEFxSlBnRWxlT2VBT1U0ekpNc0FWcmlzdDYzaVJKTWFFTVRqTzQ5OCthbU1Pcjc4V3JLRHpodzZSZ0IrTzlVaExQSzA0MllFN05mempDYjc5OTg3dTl3UVY0UWNyaHRsS09YY2w4TWJadEgwYm1iTmJBT3VYdUlGNWRySlVyallTd1ZRQkRBYVVhTFllemVTdXZyUXdGU0Nid2VUVUpHejFqN3VCVXEzbWFCNE9mSzJuN0cyTjFmQ0sxZUVhdzkyVW5sVkRPMFRmMUxJSTA4SEZ0c1JJbjZZMXAzczlWK0xKUTlpVWQ1WkcwTHdVOTA0RTc1UHB1VkxST0JZSFM0bXJCM1J2ck1oQVdDNmpkdFNURmtsdW12K2MyRUpScmJVcmpyNEErWTQwa0FOTjFVdDFyZHZNYi8wcFJPSlhWc0RmYy9BeU01bjNDZmx2RFZxU2dQSTlibEhGZTFtWjc1Q21JTFM2S3pkRjBZbDFNVkhpUFcwanZvZG54S1lUcHM4aEpOK2FJK2gxV1JHenJKS1pKaWNBdE5kc1dWaExmclZ4VkVQU2VtOWpHenNBYVdQa1ZCR1JPNmpXMlNXN20rYlZEdlJQYlZwYjZnU0JJOG9DVVlPbzcvUTBIYWJxbTdSUE1jc0dBNmVBcEhvMWhjMWs5bTFYdzUwSVJ2bjdWeVBKK3JEQjFHYWRLOXFvN0l1RHYxdC9Xano3ZHZwNGQ0UnB1R3Z5NFpRazlQd1Y1dFR0a1gyREdBdFE4ZmFpdkVJSDcwT2hrcHVDdG5Ia2JvelFDOUJZTHhVZGZJTHZQOHFFOTdyWllrK1hjcWE3aHZsQkc2bjNKZzU2czRycVdlWk5sQi9jRzU1Q1N0UlBFSTZSanJBRHB5L3NZblE0UkVONlVsQXltU3JlczJZWFJMVGFFY1lXa0pXOTgyQy9zZllzY2tiaXpsT3NZc0tBRnAzWHNnRFFSRGFhbyt5SE5KQXBlVlJLMW03aDE4cS9LYlF4RmNwbkRiR1gyTVJ1Y1U1UFVQSnBreXZDbEV2Uks3azF4Mm4wemF6QVE0Z1pmRHdzTS9pbnZNUVRLZVFldHpJcjYvWndUekhMQmdPbmdLUjZOWVhOWlBadFYvcUhNNXRZVTFod1JTcmQ4NUtIMk1wZHQ3TVB0V2ZxNE5kT1lXYk5oUFA4eGxMNkxnSEFXbE15QkRac3VHeUh6RTh4eXdZRHA0Q2tlaldGeldUMmJWYjJXSE0xTVZQZU5QMkp6V0tuVTBIUXViYW8vNDFQcUloK0NXQlIzSFVGWVJ4aXBFQlFiS0EvbUFwQk4xcEhDd0JQTWNzR0E2ZUFwSG8xaGMxazltMVVDUjY3aHY1OWVtNG5WUFptalU1azFCOWJJZHpJbDdXckoxZi9TVW13dnE4anlNR204VEpYaUtnRkV5NjIyZW5rVHpITEJnT25nS1I2TllYTlpQWnRWQ3JsUm5nVEVKQnFWMml5czZxeUxUSjFDcGJuNTFjS3RlNThlTktSa2xDRHVYRmMzR3FsWTBDZUc2RjNRTVZ1cUJNRU45cFhzbW53S3hzRTY1L2ErZWxxZWZMS3lsN0krT1p2K0tCSG5ZWDc5V2pCYjMyQkdoR1puZDFRa3kyeEhQdmY0U3grL3RZTjJ6bmNtcFFxU3d4UE1jc0dBNmVBcEhvMWhjMWs5bTFWVXVVR3hST1pTM0tDRTk2bmFVRjc0bVJtcmRPL2pwdElIZ01qQytHNlY3QnhaVEppdE5FTHN0MEZDSituK0FNWVR6SExCZ09uZ0tSNk5ZWE5aUFp0VkJDUytMZllxclNCR0hrZVlsYXFnYndJTXhFZDFPVlB5Smh1VnhBVW5EdHJLVzBDbnZ1cDh6QTNDVStpTVRsVFJmMk5mSmN4ZWo4ZGlqWTV5M2YxblJXUkVPcFltcllYenRmc1I4UitZK1RlWXhBZXV1N3Nnd3VpVENHcXhjeHE4Y1hGMk8remxhWGVtNUh3SE5XOUcvLzNlbnVrNk1LMkJ0dENRQkhyaXBZb0dBMSt2VStkSi9GK0xSMWlCTHQ0eS9Gc1B4ckpQMXh2djAwWkZrWGdjeUdFaWF1YW1Hd1lkbG4zLzgrdEZnWFJJODJyOWdjc0dYVHlnSU9URjl5aUYwZ29DaDROTnlyYTVTUHpTd2dvbjNjc24rTmhBUVJKdlNGc0xYTEg4Ri9mQ1NDandsL3BpMkdHWTRuQlVlazN3SzZjUUdXNkIrb08zaktTVzlRRUcwL09nSFRieXhiUjlFc3BvbG1ObEIvR3FTTDRLT01ZYXdOQzB2Z1ZaZEpCNWJIbHV0Z2puVHZ2N29ZeWZlYSttSU8xakdiWStqVThWTHgxWVpTSEVOU1RqaTI3NFFqMktPckZFenBYcWlRMkpLWmxtRGhiOUxKOE94Vkx4OEFISGNQNm55V09oaVljRnVRTUZ3ZjlVUklHSHJ6cmp6cHBmN2dzS25KbHRUYmtsbDFsc2ZVSFNkNVpTQUY2UUUzYjhvYjV4NUhtWkZVUVJrVTk0UGxDSHRXNUVGd3dIcUx3czF3M0d4ekdNaHRxZkU4eHl3WURwNENrZWpXRnpXVDJiVmVFN3lNN0x4cXc3NzEvM25OYjc4T3ZwNHViRmNpUnY2QnZYY1Y5MVgvd2xBYjY2Z0RxeXhtN0MrakRsODVQTEp3ZElSQmtlcTBVcG1LUnZsakFHVUlvTFAwb0NuakZ4UFZpbnF6bUFtUHlseFJmb3ZWWmM1UlRHY3psOHRpQ0lRRktlN2hQbno4UFVlVHhMMkdVUzk3NTN4UDB1Z2JKTkgwa3RNRkdxWExRck4yMGh5eGp5RktOT3k1R1FMMWRsMzJWOTZjalZRZXVsMms1WElST1BhV3hsNjBqNVh6NkdQVzB2c0NJcEsreGl5eXZMU05aV2Mvc0luL3ZXU0FIVTl1U3dCTXZQeGdqMlRXT0Q5MU5abDVLb0pjK3p1M2pwVlFCRWd5SEd4dGk3U3owT3lzVXRaZ0xFSVc5YWRTZnlpMncvc3JtVG04SDBNNkt6R3RuU2M4YTBWVndUMnFRb25uZ1NSNUs2UVQyc0VaSnJCczVCOFpEQmtqYWZRNHNScFJFYU9ObklWd2xEOURwb2x1L1F1a1RKR2ZlcW1udm01UGZOeHROSkZGTldQTzl5NWNnU3VDdlVQOCs2QVdhRTVlaW5PSTdVQXpsZDhISVMrTFUwN29MaER1Vklhc0k3QWdiZlljYnY4eVpCeXl2TFNOWldjL3NJbi92V1NBSFU5bHNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRnl5dkxTTlpXYy9zSW4vdldTQUhVOXQ1WGJxUGZMRzVBQVVFdnJjaFM0V1poY2xmTjBWcTAwMUVDLytVQVhhR1M1YjBoa0pWT1VDdEN3c3pWdXlBZVVNc3J5MGpXVm5QN0NKLzcxa2dCMVBiTEs4dEkxbFp6K3dpZis5WklBZFQycG05S21tMC9OdytxcC8ydHhwUjhoc1dwbVlFUjJpdGVyNW1STTJwN2t3enN4dFdsS2J4QXJVUWZCRElHcVdrRnl5dkxTTlpXYy9zSW4vdldTQUhVOW5NeUdMSUhsQjJRUklZNkR0QWc0bHpMSzh0STFsWnord2lmKzlaSUFkVDJnRHZsNEpOLzEwaXFOZ1p3QURXdXhUVE41NmwweG53d2xkM243RnNCcGNEKzRsK3dhTThqdW14Qnp3bWY1K2Jjd3VUNDBJUVh3dXhEUTYyQ1VoY3Y3cmNWRy9JYnVjeHg2OGZpTDlkUFFIWFpSRWhjZGV4MUtNTGMrZzRJK2pjeHl5dkxTTlpXYy9zSW4vdldTQUhVOWdUdFZPRkY2a3dhbm1zR1NkSDJpYUdjMVluNUs3a0g1VlhENnl0Z3E2bzNKMVFrNkQ3ZGE4dGRHUlp5bGxxV0RzNlVNdnNPL1BPdzVDY3I3OXNKemlkYmszNTQybWpMUkt0eWlFZXl2MXRzNnlhZXArQ3FxMnVFTm9wZzBEenhUenFIMXI4M0p5dXZRczRzVlhrcjNDZkxLOHRJMWxaeit3aWYrOVpJQWRUMnlBSXVNd0R4dklmVUlHOU9adURzSTlxQW5CVzFGaTB1ZGZiVDloZzZVNEI0bGxSdnVLeVM3WkVSekViZS9KZnY4Z05FZDhUU1lCOSs3MnZ5cGlsMnJUYjd5NldGbFpRYTArZkI0NFRFNnF6eGt4UG95MW9jeS9UTHQ2OHlNRm4vVmlXOUQxNlF2Ui9yN3VGYnRzWk9FUTdMdkgwakxKdHVqM0ZUeVFaRFFqQkxLeHNmdjMxN0o4cWVWbGxkMVQrZkhoYWZWclVJL0tBclhncTJKZE4wVUNQeTBkTnJpc3lzS09NdVVNUDRGcFlsSWxDeEF0OVFGYUlhSW9VdGxBYWlZQ3EzUW5NK1JZd2gvNnRKdzNjU3FobUhXazlyQmFqNzFOa0FDVXZPWHI0RFVYOUFaVzJtNGtvaVhkMVhKdUUyS3g3ekVqVzBhbWdmekJaREpvL1lLUitqU0J2cEk4QUJZNjJKTk5VTGEzbXRxV0RPMVhnTDJVbHNkT0RKbEl2VFVxM3oybHQraW51a0xsbGFtWmVmQitKdnFzcXYrTmVZYk9KeHhHbXRuUDdxOXBWMHJSbWYrMU5lKzFPK1I1VXNyYUpLWFBVeVlSYjB5N29vVGtMRzFoNGhHQWdFdFJqVE9rdGtYbkY1QlpUR005UnlRUnVhd2MwYkJPbXRIWDFoY1Q3cnQzdERrc1hKZmZsUHl5c1d6aFBYTE0rRmR4NWRDWVJ5WnpDL3hpeVpyZDFSb1BaMnUrMFF0YnNLMnVnUnB6UTQ2OWxuZHBKaHJ3YWV5aCtvSEJTOEZ5dytzL1hCMzFNSDlLSkFvMEpFQVlaSzIyNTJpRVlIZ28zWHVOMVo4YjlJNWJvb1B6dkwwMUlpK2tBYWhzc3J5MGpXVm5QN0NKLzcxa2dCMVBhanJ1cVkvYkw2djEyMDAybWE2MFN6WmhUbnl5UVpkWDlNNTJvQ0FraWoyL1lOdStIcFg2NzlkbFpTK1dhaHVRRWpqdjQvUk1hSlNmU0tERFI2eWx4TmhNWXdna3pGcFdRVFEwR3FMcWZ3TElJelZzMmdSM05PT3dzbDl5a2FDeGlmRTQ1T1NMUWFZK3NFQjIxTFhLZjJSV0lxYWJLaTdWbEJXdVZxeksvTXhiQ21qS1BXS1VGcEp6YTgwZ01YVW5GNEltM3lxRWZ0MXJmc0tVN1NnNmU0aFpxelJtYlFZZHZFN2NlekYrZjh4Y0Q2eVJja3hPUmRHNnJQT0JLaURNZmc2M2VIdlppVWp1bFBFNUl2SkR4b0tCTlh1bDBhZ09lMnBJSVNjbXNIS0FnVEZGamJ0YkNmZTFUaitpeDJHVVROd3JIVXpxWUozSXF4eUh0T2FyMkhGMW1MNUsvdXBTWTN6VDBiS2pjSHdjc3J5MGpXVm5QN0NKLzcxa2dCMVBaUHhkK3pYQmhJbGg4cHY0eVVyWGJNZ29zTU5pWURCYlVabUd2VVZCOVkvVXE1UXlZUjhqQmEzVDZxcXFkOVBjREdqclRJNlliaEVhNG10aXZWRjFuMUo5ZlVFY1NIV3ZrOGZweW53K0JrWU9lemhJWXdiaGNYcktKTjNYajRYQUEvanQ2SDMyNTRGYzRtUm91N2RZbFl5eXZMU05aV2Mvc0luL3ZXU0FIVTlrS0FyVUtWRjJPbUFFT3RSUFRMb1VyTEs4dEkxbFp6K3dpZis5WklBZFQyaVZTbjJYNk9LOTBSZkVxamtDL3JJU1l6Lzd1Y3A2YU0zVDE5Y0pweEVySExLOHRJMWxaeit3aWYrOVpJQWRUMnNNaWRzSjUvOCtVK1pMWG9va3RTNy9abmEwMmZ2QWhKZ245Z1JqU3p3QzlkQ0J5b1V0OXBZWFBsTnVkZjdoNkJwejZxd1d2TUducjFmWllhMDdiZnI4c3J5MGpXVm5QN0NKLzcxa2dCMVBhanZ1Y3pyUVFVMEkyVUFhOFVKZFB1TWpCSHpZbVdPQm1qbDhLaDIzK1Q2cmx3V1JWZ0Y0N0hHeXdWblZ6cEdDYk9sREw3RHZ6enNPUW5LKy9iQ2M0bkpmanJndDZFblBqWFovbkNKTVB2V002VU12c08vUE93NUNjcjc5c0p6aWR3WjQ1Q1hOR3grUzhPTlJ1MGNRWXlFOWNzejRWM0hsMEpoSEpuTUwvR0xKbXQzVkdnOW5hNzdSQzF1d3JhNkJHbk5EanIyV2Qya21HdkJwN0tINmdjd3k3WW1NSEFEa3N1bU41SHJqbFY0TXNyeTBqV1ZuUDdDSi83MWtnQjFQWjk2dmVGZjVvMDZIbEZoRmtFYmpWTmFIaFZXZ0g0ZlRNdGt1ejViRG4rQUhnbmpwd3lHL2hJTDUwR0lQWG8rdnJZVEFhQnlBQlFXbzVQMXBWdUtEWmNcXFwiKVxcbiAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZXMgKyBiYWRnZVR5cGUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHBpY3MrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGJhZGdlK2Rlc2MsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IG1vZGUgPT0gJ+ebtOmTvicgPyB0cnVlX3VybCA6IHB1cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHB1dFZhcignYWlkJyxTdHJpbmcodi5haWQpKTtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTptb2RlID09ICfnm7Tpk74nID8gZ2V0SGVhZCgn55u06ZO+JykgOiAn55u06ZO+JywgLy8n55u06ZO+5pKt5pS+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAn55u06ZO+Jyttb2RlX3VybCwvL2xhenkxLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAneWhjJyA/IGdldEhlYWQoJ+iQpOeBq+iZqycpIDogJ+iQpOeBq+iZqycsXFxuICAgICAgICAgICAgICAgIHVybDogJ3loYycgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaWYgKGdldFZhcignbGlrZV90eXBlJyk9PT0n5byA5ZCvJyl7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQobGlrZV91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKycmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOnsnQ29udGVudC1UeXBlJzpjb250ZW50X3R5cGV9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6bF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6J1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICBsb2cobF9jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nK2xfY29kZS5kYXRhLnRvYXN0O1xcbiAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxuICAgICAgICAgICAgICAgIHVybDogJChjb2luX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKycmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCx7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczp7J0NvbnRlbnQtVHlwZSc6Y29udGVudF90eXBlfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OmNfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOidQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgbG9nKGNfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oqV5LqGMeS4quW4gSc7XFxuICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgaWYgKHYudmlkZW9zICE9IDEpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsICsgJz9wPScgKyBwW2ldLnBhZ2U7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJ0LFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAvKm1vZGUgPT0gJ1g1JyA/ICd4NVJ1bGU6Ly8nICsganggKyBydXJsICsgJ0AnICsgbGF6eSA6ICgqL21vZGUgPT0gJ+ebtOmTvicgPyBsYXp5MSA6IHJ1cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogdi52aWRlb3MgIT0gMSA/ICd0ZXh0X2NlbnRlcl8xJyA6ICdhdmF0YXInXFxuICAgICAgICAgICAgfSk7XFxuXFxuXFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0pO1xcbiAgICBpZiAoZ2V0VmFyKCdyZXBseV90eXBlJyk9PT0n5byA5ZCvJyl7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJzigJzor4TorrrljLrigJ3igJ0nICsgKGdldFZhcignbGFiZWwnKSA9PSAn6K+E6K66JyA/ICfigJzigJwg4oqZ4oCd4oCdJyA6ICfigJzigJwg4oqV4oCd4oCdJykgKyAnPC9zdHJvbmc+JyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGFiZWwnLCBnZXRWYXIoJ2xhYmVsJyk9PSfor4TorronPyflhbPpl60nOifor4TorronKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovLycrZ2V0VmFyKCdsYWJlbCcsJ+ivhOiuuicpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOaOqOiNkOWMuuKAneKAnScgKyAoZ2V0VmFyKCdsYWJlbCcpID09ICfmjqjojZAnID8gJ+KAnOKAnCDiipnigJ3igJ0nIDogJ+KAnOKAnCDiipXigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+aOqOiNkCc/J+WFs+mXrSc6J+aOqOiNkCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn5o6o6I2QJylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcblxcbiAgICBcXG4gICAgaWYgKGdldFZhcihcXFwibGFiZWxcXFwiKSA9PSAn6K+E6K66Jykge1xcbiAgICAgICAgdmFyIHJlbHkgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9yZXBseS9tYWluP29pZD0nICsgdi5haWQgKyAnJnR5cGU9MScsIHt9KSk7XFxuICAgICAgICB2YXIgY291bnRzID0gcmVseVsnZGF0YSddWydjdXJzb3InXVsnYWxsX2NvdW50J107XFxuICAgICAgICB2YXIgcmVwbGllcyA9IHJlbHkuZGF0YS5yZXBsaWVzO1xcbiAgICAgICAgZm9yICh2YXIgeCBpbiByZXBsaWVzKSB7XFxuICAgICAgICAgICAgdmFyIHJlcGxpZXN4ID0gcmVwbGllc1t4XTtcXG4gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHJlcGxpZXNbeF0uY29udGVudC5tZXNzYWdlO1xcbiAgICAgICAgICAgIHZhciBtZW1iZXIgPSByZXBsaWVzW3hdLm1lbWJlcjtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbWVtYmVyLnVuYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IG1lbWJlci5hdmF0YXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPjxzdHJvbmc+JyArIG1lc3NhZ2UgKyAnPC9zdHJvbmc+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB2YXIgcmVwbHkgPSByZXBsaWVzW3hdLnJlcGxpZXM7XFxuICAgICAgICAgICAgZm9yICh2YXIgeiBpbiByZXBseSkge1xcbiAgICAgICAgICAgICAgICB2YXIgbWVzcyA9IHJlcGx5W3pdLmNvbnRlbnQubWVzc2FnZTtcXG4gICAgICAgICAgICAgICAgdmFyIG1lbSA9IHJlcGx5W3pdLm1lbWJlci51bmFtZTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyBtZW0gKyAnOicgKyBtZXNzICsgJzwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0gXFxuXFxuICAgIGlmIChnZXRWYXIoXFxcImxhYmVsXFxcIikgPT0gJ+aOqOiNkCcpIHtcXG4gICAgICAgIGZvciAodmFyIHIgaW4gcmVsYXRlZCkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiByZWxhdGVkW3JdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBpbWc6IHJlbGF0ZWRbcl0ucGljLFxcbiAgICAgICAgICAgICAgICBkZXNjOiByZWxhdGVkW3JdLmRlc2MsXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgcmVsYXRlZFtyXS5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XFxuXFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeWFs+azqDFcIixcInBhdGhcIjpcImd6MVwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxudmFyIGlkID0gTVlfVVJMLnNwbGl0KCdtaWQ9JylbMV07XFxudmFyIHN1cmwgPSBNWV9VUkw7XFxudmFyIGNvZGUgPSBmZXRjaChzdXJsLHt9KTtcXG52YXIgeW0gPSBKU09OLnBhcnNlKCd7XFxcIm15Jytjb2RlLnNwbGl0KCd7XFxcIm15JylbMV0uc3BsaXQoJ319OycpWzBdKyd9fScpO1xcblxcbnZhciBlcCA9IHltWydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJytpZF1bJ3Jlc3VsdCddO1xcbmZvciAoIHggaW4gZXApe1xcbiAgdmFyIHl1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaO+8n++8n21pZD0nK2VwW3hdLm1pZCsn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlJztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgdGl0bGU6ZXBbeF0udW5hbWUsXFxuICAgICAgIGltZzplcFt4XS5mYWNlLFxcbiAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9nejI/dXJsPScreXVybCxcXG4gICAgICAgY29sX3R5cGU6J2ljb25fcm91bmRfNCdcXG4gICAgICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3lhbPms6gyXCIsXCJwYXRoXCI6XCJnejJcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbmNvbnN0IGhlYWRDb2xvcj1cXFwiIzM1OGNjZFxcXCI7XFxudmFyIGpzb24gPSB7fTtcXG5ldmFsKCdqc29uPScgKyBmZXRjaChNWV9VUkwse30pKTtcXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gdmFyIHQgPSBOdW1iZXIoai5jcmVhdGVkKSoxMDAwO1xcbiBcXG4gLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXG4gLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxudmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxudmFyIFlZID0gZGF0ZS5nZXRGdWxsWWVhcigpKyctJzsgXFxudmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpKyctJzsgXFxudmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpOyBcXG52YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG5yZXR1cm4gdGltZVxcbn1cXG4vL+aXtumXtOaIs+i9rOaNolxcbnZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcblxcbmlmIChqLnBsYXk+MTAwMDApXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXG5lbHNlXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbnZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSE9LTEpP2oucGljOidodHRwczonICsgai5waWM7XFxuXFxuIGlmIChqLmxlbmd0aCE9XFxcIjAwOjAwXFxcIil7XFxuICAgIGQucHVzaCh7XFxuICAgICBwaWNfdXJsIDogcGljcyxcXG4gICAgIHVybCA6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICB0aXRsZSA6IGoudGl0bGUsXFxuICAgICBjb2xfdHlwZSA6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG4gICAgIGRlc2MgOiAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDml6XmnJ/vvJonICsgdGltZVxcbiAgICBcXG4gICAgfSk7XFxufVxcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggeWdly3mkJzntKLkuIDnuqdcIixcInBhdGhcIjpcInNcIixcInJ1bGVcIjpcInRyeSB7XFxuICAgIHZhciByZXMgPSB7fTtcXG4gICAgdmFyIGQgPSBbXTtcXG4gICAgdmFyIGNvZGUgPSBnZXRSZXNDb2RlKCk7XFxuICAgIHZhciB4cyA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgndmlkZW9cXFwiLFxcXCJkYXRhXFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAvL2lmKE1ZX1VSTC5zcGxpdCgncGFnZT0nKVsxXT09JzEmcGFnZXNpemU9MjAnKXtcXG4gICAgdmFyIHBhZ2UgPSBNWV9VUkwuc3BsaXQoJ3BhZ2U9JylbMV0uc3BsaXQoJyZwYWdlc2l6ZT0nKVswXTtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciB3ID1cXG4gICAgICAgICAgICBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3NlYXJjaC90eXBlP2tleXdvcmQ9JyArIE1ZX1VSTC5zcGxpdCgna2V5d29yZD0nKVsxXS5zcGxpdCgnJicpWzBdICsgJyZwYWdlPScgKyBwYWdlICsgJyZzZWFyY2hfdHlwZT1iaWxpX3VzZXImb3JkZXI9dG90YWxyYW5rJnBhZ2VzaXplPTIwJywge30pKS5kYXRhLnJlc3VsdDtcXG4gICAgICAgIGZvciAoaWkgPSAwOyBpaSA8IHcubGVuZ3RoICYmIGlpIDwgMjsgaWkrKykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAndXDvvJonICsgd1tpaV0udW5hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOicgKyB3W2lpXS51cGljLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn5YWz5rOo77yaJyArIHdbaWldLmZhbnMsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICfop4bpopHmlbDvvJonICsgd1tpaV0udmlkZW9zLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JyArIHdbaWldLm1pZCArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUjJyArIHdbaWldLnVuYW1lICsgJyMnLFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY5om+5LiN5Yiw5L2g5oOz6KaB55qE5ZWK77yM6KaB5LiN5o2i5Liq5YWz6ZSu6K+N77yf4oCZ4oCZJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICB2YXIgZmFuID0gSlNPTi5wYXJzZShjb2RlLnNwbGl0KCdtZWRpYV9iYW5ndW1pXFxcIixcXFwiZGF0YVxcXCI6JylbMV0uc3BsaXQoJ30se1xcXCJyZXN1bHRfdHlwZScpWzBdKTtcXG4gICAgZm9yICh4IGluIGZhbikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZmFuW3hdLnRpdGxlLnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCAnJyksXFxuICAgICAgICAgICAgaW1nOiBmYW5beF0uY292ZXIsXFxuICAgICAgICAgICAgZGVzYzogZmFuW3hdLmRlc2MsXFxuICAgICAgICAgICAgY29udGVudDogZmFuW3hdLmN2LnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCAnJyksXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGZhblt4XS5nb3RvX3VybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICB2YXIgZmFuMiA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgnbWVkaWFfZnRcXFwiLFxcXCJkYXRhXFxcIjonKVsxXS5zcGxpdCgnfSx7XFxcInJlc3VsdF90eXBlJylbMF0pO1xcbiAgICBmb3IgKHggaW4gZmFuMikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZmFuMlt4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIGltZzogZmFuMlt4XS5jb3ZlcixcXG4gICAgICAgICAgICBkZXNjOiBmYW4yW3hdLmRlc2MsXFxuICAgICAgICAgICAgY29udGVudDogZmFuMlt4XS5jdi5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBmYW4yW3hdLmdvdG9fdXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIC8vfVxcblxcbiAgICBmb3IgKHggaW4geHMpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHhzW3hdLnRpdGxlLnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCAnJyksXFxuICAgICAgICAgICAgaW1nOiAnaHR0cDonICsgeHNbeF0ucGljLFxcbiAgICAgICAgICAgIGRlc2M6IHhzW3hdLmRlc2NyaXB0aW9uLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHhzW3hdLmF1dGhvcixcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHhzW3hdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG5cXG4gICAgcmVzLmRhdGEgPSBkO1xcbiAgICBzZXRSZXN1bHQocmVzKTtcXG59IGNhdGNoIChlKSB7XFxuICAgIHZhciByZXMgPSB7fTtcXG4gICAgdmFyIGQgPSBbXTtcXG4gICAgdmFyIGtleXdvcmQgPSBNWV9VUkwuc3BsaXQoJ2tleXdvcmQ9JylbMV0uc3BsaXQoJyZwYWdlPScpWzBdO1xcbiAgICB2YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaC90eXBlP2FwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYyNzAyMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD14aWFvbWkmaGlnaGxpZ2h0PTEma2V5d29yZD0nICsga2V5d29yZCArICcmbW9iaV9hcHA9YW5kcm9pZCZvcmRlcj10b3RhbHJhbmsmcGxhdGZvcm09YW5kcm9pZCZwbj0xJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjcuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0xNjIzMDc2MTQwJnR5cGU9MiZ1c2VyX3R5cGU9MCZzaWduPTUwNjYyMTZmZWJiMjhhNjE5ODEyZTg4ZTVmZjFhMDM0JztcXG4gICAgdmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7fSkpO1xcbiAgICB2YXIgbGlzdCA9IGNvZGUuZGF0YS5pdGVtcztcXG4gICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlLFxcbiAgICAgICAgICAgIGltZzogeC5jb3ZlcixcXG4gICAgICAgICAgICBkZXNjOiB4LnNpZ24sXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD0nICsgeC5wYXJhbSArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUjJyArIHgudGl0bGUgKyAnIycgKyBnZXRWYXIoJ3VhJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzFfdmVydGljYWxfcGljXCIsXCJuYW1lXCI6XCLpobXpnaIt5pCc57Si5LqM57qnXCIsXCJwYXRoXCI6XCJzc1wiLFwicnVsZVwiOlwianM6XFxudmFyIGpzb24gPSB7fTtcXG5ldmFsKCdqc29uPScgKyBnZXRSZXNDb2RlKCkpO1xcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9VUkwuaW5kZXhPZigncG49MSYnKSE9LTEpe1xcbmQucHVzaCh7XFxudGl0bGU6J+KAnOKAnOWFs+azqOKAneKAnScsXFxudXJsOidoaWtlcjovL2VtcHR5IycrTVlfVVJMLnNwbGl0KCcjJylbMV0rJyYmJytNWV9VUkwuc3BsaXQoJ21pZD0nKVsxXS5zcGxpdCgnJicpWzBdK2BAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07dmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK2lucHV0LnNwbGl0KFxcXCImJlxcXCIpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO2lmKCFnZXRWYXIoJ2xiMicpLmluY2x1ZGVzKGlucHV0LnNwbGl0KCcmJicpWzFdLnNwbGl0KCcmJicpWzBdKSl7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix4cik7J3RvYXN0Oi8v5YWz5rOo5oiQ5YqfJ31lbHNleyd0b2FzdDovL+W5tOi9u+S6uu+8jOiAl+WtkOWwvuaxgSd9YCxcXG5jb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxufSk7XFxufVxcblxcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspXFxue1xcbiB2YXIgciA9IHt9O1xcbiB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcbiB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpKjEwMDA7XFxuIFxcbiAvL+aXtumXtOaIs+i9rOaNouaWueazlVxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcbiAgICAgdmFyIFlNRCA9IHNzcy5zcGxpdCgn5pelJylbMF0ucmVwbGFjZSgn5bm0JywnLScpLnJlcGxhY2UoJ+aciCcsJy0nKTtcXG4gICAgIHJldHVybiAoWU1EKVxcbn1cXG5cXG4vL+aXtumXtOaIs+i9rOaNolxcbnZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcblxcbmlmIChqLnBsYXk+MTAwMDApXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXG5lbHNlXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbnZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSE9LTEpP2oucGljOidodHRwczonICsgai5waWM7XFxuXFxuIHIucGljX3VybCA9IHBpY3M7XFxuIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nK2ouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgIFxcblxcbiByLnRpdGxlID0gai50aXRsZTtcXG4gci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5pel5pyf77yaJyArIHRpbWU7XFxuIGlmIChqLmxlbmd0aCE9XFxcIjAwOjAwXFxcIil7ZC5wdXNoKHIpfTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt6aKE5aSE55CGXCIsXCJwYXRoXCI6XCJ5Y2xcIixcInJ1bGVcIjpcInB1dFZhcjIoJ3VhJywnO2dldDt1dGYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCA3LjDvvJvvvJsgd3YgbGl0ZSBiYWlkdWJveGFwcCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzc4LjAuMzkwNC45NiBNb2JpbGUgU2FmYXJpLzUzNy4zNiBUNy8xMC4zIFNlYXJjaENyYWZ0LzIuNi4yIChCYWlkde+8m++8myBQMSA3LjApfScpO1xcblxcbnB1dFZhcigna2V5JyxmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSk7XFxuXFxucHV0VmFyKCdYNScsXFxcIkBsYXp5UnVsZT0uanM6dmFyIGp4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dCcse30pO3JlZnJlc2hYNVdlYlZpZXcoangraW5wdXQpOyd0b2FzdDovL+aSreaUvuS4rSdcXFwiKTtcXG5cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcpKSB7XFxuICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7XFxuICAgfVxcblxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JykpIHtcXG4gICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywn6KeG6aKRJyk7XFxuICAgfVxcblxcbmlmIChmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIHt9KT09Jycpe1xcbiAgICBpZiAoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkhPScnKXtcXG4gICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIixmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIsIHt9KSk7XFxuICAgIH1cXG4gICAgZWxzZXtcXG4gICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPTEwMzI1Njg4MCZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwgXFxcIuWMl+WfjiYmMTAzMjU2ODgwIyNcXFwiK3BpYyk7XFxuICAgICAgfVxcbn1cXG5cXG5pZiAoIWZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIiwge30pKSB7XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLCBcXFwiMTAzMjU2ODgwXFxcIik7XFxufVxcblxcbnB1dFZhcjIoJ2xiMicsZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHt9KSk7XFxuXFxuLypcXG5wdXRWYXIoXFxcIuino+aekOWPo1xcXCIsYGhpa2VyOi8vZW1wdHkjbm9IaXN0b3J5I0BydWxlPWpzOnZhciBkID0gW107ZC5wdXNoKHtkZXNjOiAnMjAwJyx1cmw6ICdmaWxlOi8vL3N0b3JhZ2UvZW11bGF0ZWQvMC9BbmRyb2lkL2RhdGEvY29tLmV4YW1wbGUuaGlrZXJ2aWV3L2ZpbGVzL0RvY3VtZW50cy9iaWxpL3VwanguaHRtbCcsY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSd9KTt2YXIgdGl0bGVzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KS5zcGxpdCgvXFxcXFxcXFxuLyk7Zm9yKHZhciBpID0gMDsgaSA8IHRpdGxlcy5sZW5ndGg7IGkrKyl7dmFyIHQgPSB0aXRsZXNbaV0uc3BsaXQoXFxcIiYmXFxcIik7ZC5wdXNoKHt0aXRsZTpmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIix7fSkgPT0gdFsxXSA/IHRbMF0gKyBcXFwi4oCY4oCY77yI5b2T5YmN77yJ4oCZ4oCZXFxcIiA6IHRbMF0sZGVzYzp0WzFdLHVybDp0WzFdICsgJ0BsYXp5UnVsZT0uanM6cHV0VmFyMihcXFwidWlkXFxcIixpbnB1dCk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLGlucHV0KTtiYWNrKCk7XFxcInRvYXN0Oi8v5L+u5pS55oiQ5YqfXFxcIicsY29sX3R5cGU6ICd0ZXh0XzEnfSk7fXNldFJlc3VsdChkKTtgKTtcXG5cXG5pZiAoIWZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSkpIHtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwgXFxcIuWFqOe9kVZJUCYmaHR0cHM6Ly9qeHguc215czguY24vaW5kZXgucGhwP3VybD1cXFxcbuWKoOmAnyYmaHR0cHM6Ly93d3cuY3Vhbi5sYS9tM3U4LnBocD91cmw9XFxcIik7XFxufVxcblxcblxcbmxldCBsb2NhbEh0bWwyID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFwiLCB7fSk7XFxubGV0IGdpdEh0bWwyID0gZmV0Y2goXFxcImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9acnVpcnkvaGlrZXJ2aWV3L2h0bWwvamlleGkuaHRtbFxcXCIsIHt9KS5yZXBsYWNlKC9qaWV4aVxcXFwvamlleGkvZyxcXFwiYmlsaS91cGp4XFxcIik7XFxuaWYgKCFsb2NhbEh0bWwyKSB7XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFwiLCBnaXRIdG1sMik7XFxuICB2YXIgdGl0bGVzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KTtcXG4gIHZhciB0ID0gdGl0bGVzLnNwbGl0KFxcXCImJlxcXCIpWzFdO1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLHQpO1xcbn1cXG4qL1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeaOqOiNkFwiLFwicGF0aFwiOlwiZmVlZFwiLFwicnVsZVwiOlwidmFyIHVybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC9pbnRsL2ZlZWQvaW5kZXg/YWNjZXNzX2tleT0nK2dldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpKycmYXV0b3BsYXlfY2FyZD0yJmJ1aWxkPTYyMjUzMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImY29sdW1uPTImZGV2aWNlX25hbWU9JmRldmljZV90eXBlPTAmZmx1c2g9OCZmbnZhbD00NjQmZm52ZXI9MCZmb3JjZV9ob3N0PTAmZm91cms9MSZndWlkYW5jZT0wJmh0dHBzX3VybF9yZXE9MCZtb2JpX2FwcD1hbmRyb2lkJm5ldHdvcms9d2lmaSZwbGF0Zm9ybT1hbmRyb2lkJnBsYXllcl9uZXQ9MSZwdWxsPWZhbHNlJnFuPTgwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjIuNSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCc7XFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLHt9KSkuZGF0YS5pdGVtcztcXG5mb3IgKGxldCB4IG9mIGxpc3Qpe1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOngudGl0bGUsXFxuICAgIGRlc2M6eC5jb3Zlcl9sZWZ0XzFfY29udGVudF9kZXNjcmlwdGlvbitcXFwiIFxcXCIreC5jb3Zlcl9sZWZ0XzJfY29udGVudF9kZXNjcmlwdGlvbitcXFwiICBcXFwiK3guY292ZXJfcmlnaHRfdGV4dCxcXG4gICAgcGljOnguY292ZXIrXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICB1cmw6XFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3lk5Tlk6nihJsmdXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ9XFxcIit4LnBhcmFtK1xcXCLvvIbvvIZidmlkPVxcXCIrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICBjb2xfdHlwZTonbW92aWVfMidcXG4gICAgfSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pen5LqM57qn5Luj56CBXCIsXCJwYXRoXCI6XCIxXCIsXCJydWxlXCI6XCJpZiAodlsncmVkaXJlY3RfdXJsJ10gJiYgdGFncyA9PSAnZmFuJykge1xcblxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY6Kej5p6Q5o6l5Y+jJyxcXG4gICAgICAgICAgICAgICAgdXJsOiBqaWV4LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAnWDUnID8gZ2V0SGVhZCgnWDUnKSA6ICdYNScsXFxuICAgICAgICAgICAgICAgIHVybDogbW9kZSA9PSAnWDUnID8gZ2V0VmFyKCfop6PmnpDlj6MnKSA6ICdYNScgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfll4XmjqLmkq3mlL4nLFxcbiAgICAgICAgICAgICAgICB1cmw6IHh0LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdwYWdlJykgPT0gJ+ino+aekCcpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfnm7Tpk74nID8gZ2V0SGVhZCgn55u06ZO+JykgOiAn55u06ZO+JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ+ebtOmTvicgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICc5NzMnID8gZ2V0SGVhZCgnOTczJykgOiAnOTczJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJzk3MycgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICc5MjAnID8gZ2V0SGVhZCgnOTIwJykgOiAnOTIwJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJzkyMCcgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICdubCcgPyBnZXRIZWFkKCfliqrlipsnKSA6ICfliqrlipsnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnbmwnICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSAgICAgICAgICAgICAvL+eVquWJp+WIl+ihqFxcbiAgICAgICAgICAgIHZhciBlcCA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXCJlcExpc3RcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxuXFxuICAgICAgICAgICAgLy/nlarliadcXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIHZhciBiYWRnZSA9IChlcFtpXVsnYmFkZ2UnXSAhPSAnJykgPyAn8J+SsCcgOiAn8J+Gkyc7XFxuICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXAnICsgZXBbaV1bJ2lkJ107XFxuICAgICAgICAgICAgICAgIHZhciBwaWNzID0gKGVwW2ldWydjb3ZlciddLmluZGV4T2YoJzonKSAhPSAtMSkgPyBlcFtpXVsnY292ZXInXSA6ICdodHRwczonICsgZXBbaV1bJ2NvdmVyJ107XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZXMgPSAoZXBbaV1bJ3RpdGxlRm9ybWF0J10pID8gZXBbaV1bJ3RpdGxlRm9ybWF0J10gOiBlcFtpXVsndGl0bGUnXTtcXG4gICAgICAgICAgICAgICAgdmFyIGRlY3MgPSAoZXBbaV1bJ2xvbmdUaXRsZSddKSA/IGVwW2ldWydsb25nVGl0bGUnXSA6IGVwW2ldWydsb25nX3RpdGxlJ107XFxuICAgICAgICAgICAgICAgIHZhciB0cnVlX3VybCA9XFxuICAgICAgICAgICAgICAgICAgICAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcGxheWVyL3BsYXl1cmw/YXZpZD0nICsgZXBbaV0uYWlkICsgJyZjaWQ9JyArIGVwW2ldLmNpZCArICcmcW49ODAmdHlwZT0mb3R5cGU9anNvbiZhcHBrZXk9ODQ5NTY1NjBiYzAyOGViNycgKyBnZXRWYXIoXFxcImtleVxcXCIpICsgJyZtaWQ9JyArIGBAbGF6eVJ1bGU9Ym9keSYmSHRtbC5qczp2YXIganNvbiA9e307ZXZhbCgnanNvbj0nK2lucHV0KTt2YXIgZHVybGw9anNvbi5kYXRhLmR1cmw7ZHVybGxbMF0udXJsKyc7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFxcXFxcXFxc77ybXFxcXFxcXFzvvJsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNu+8hu+8hu+8hu+8hlJlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvfSdgO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlcyArIGJhZGdlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBwaWNzLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVjcyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbW9kZSA9PSAn55u06ZO+JyA/IHRydWVfdXJsIDogcHVybCArIGxhenksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdwYWdlJykgPT0gJ+WXheaOoicpIHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHggaW4ganhqaykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqeGprW3hdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGp4amtbeF0uc3BsaXQoJyYmJylbMV0gKyBwdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIH1cXG5cXG5cXG4gICAgICAgIH0gZWxzZSB7XFxuXFxuICAgICAgICAgICAgaWYgKHZbJ3JlZGlyZWN0X3VybCddKSB7XFxuXFxuICAgICAgICAgICAgICAgIC8v54K55Ye75YiH5o2i5o6l5Y+jXFxuICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY6Kej5p6Q5o6l5Y+jJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogamlleCxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICdYNScgPyBnZXRIZWFkKCdYNScpIDogJ1g1JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbW9kZSA9PSAnWDUnID8gZ2V0VmFyKCfop6PmnpDlj6MnKSA6ICdYNScgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5ZeF5o6i5pKt5pS+JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogeHQsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3BhZ2UnKSA9PSAn5ZeF5o6iJykge1xcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeCBpbiBqeGprKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGp4amtbeF0uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDoganhqa1t4XS5zcGxpdCgnJiYnKVsxXSArIHZbJ3JlZGlyZWN0X3VybCddLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdwYWdlJykgPT0gJ+ino+aekCcpIHtcXG5cXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJzk3MycgPyBnZXRIZWFkKCc5NzMnKSA6ICc5NzMnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJzk3MycgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAnOTIwJyA/IGdldEhlYWQoJzkyMCcpIDogJzkyMCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnOTIwJyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICdubCcgPyBnZXRIZWFkKCfliqrlipsnKSA6ICfliqrlipsnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ25sJyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgLy/op6PmnpDmkq3mlL5cXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJ0LFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHZbJ3JlZGlyZWN0X3VybCddICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICB9IGVsc2Uge1xcblxcbiAgICAgICAgICAgICAgICAvL+ebtOmTvuaSreaUvlxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnm7Tpk77mkq3mlL4nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB6bCxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Q5o6l5Y+jJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogamlleCxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnWDVsYXp5JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogeHQsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3BhZ2UnKSA9PSAn55u06ZO+Jykge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzEwODBQJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxhenkxLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnNzIwUCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsYXp5MixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzQ4MFAnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGF6eTMsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICczNjBQJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxhenk0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdwYWdlJykgPT0gJ+ino+aekCcpIHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ3loYycgPyBnZXRIZWFkKCfokKTngavomasnKSA6ICfokKTngavomasnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3loYycgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAnOTczJyA/IGdldEhlYWQoJzk3MycpIDogJzk3MycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnOTczJyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICc5MjAnID8gZ2V0SGVhZCgnOTIwJykgOiAnOTIwJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICc5MjAnICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ1g1JyA/IGdldEhlYWQoJ1g1JykgOiAnWDUnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbW9kZSA9PSAnWDUnID8gZ2V0VmFyKCfop6PmnpDlj6MnKSA6ICdYNScgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3BhZ2UnKSA9PSAn5ZeF5o6iJykge1xcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeCBpbiBqeGprKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGp4amtbeF0uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdi52aWRlb3MgIT0gMSA/IGp4amtbeF0uc3BsaXQoJyYmJylbMV0gKyBwdXJsICsgJz9wPScgKyBwW2ldLnBhZ2UgOiBqeGprW3hdLnNwbGl0KCcmJicpWzFdICsgcHVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgLy/op6PmnpDmkq3mlL5cXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJ0LFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHYudmlkZW9zICE9IDEgPyBwdXJsICsgJz9wPScgKyBwW2ldLnBhZ2UgKyBsYXp5IDogcHVybCArIGxhenksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogdi52aWRlb3MgIT0gMSA/ICd0ZXh0X2NlbnRlcl8xJyA6ICdhdmF0YXInXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mm7TlpJpcIixcInBhdGhcIjpcIm1vcmVcIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKSB7XFxuXFxuICAgIFxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfml7blhYnmnLonID8gZ2V0SGVhZChyeCkgOiAn5pe25YWJ8J+QpScsXFxuICAgICAgICB1cmw6ICfml7blhYnmnLonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuLypcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6L+955WqJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vY29sbGVjdGlvbj9ncm91cD3ikaDov73nlaonLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiovIFxcbmQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+e0ouW8lScgPyBnZXRIZWFkKHJ4KSA6ICfntKLlvJUnLFxcbiAgICAgICAgdXJsOiAn57Si5byVJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbi8qXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aUtuiXjycgPyBnZXRIZWFkKHJ4KSA6ICfmlLbol48nLFxcbiAgICAgICAgdXJsOiAn5pS26JePJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiovXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eZu+W9lScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvcHdkLWxvZ2luJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicgPyBnZXRIZWFkKCfpmo/mnLonKSA6IGdldEhlYWQoJ+mqmueyiScpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdZUycsIGdldFZhcignWVMnKT09J+maj+acuic/J+mqmueyiSc6J+maj+acuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6aKc6ImyLS0nK2dldFZhcignWVMnLCfpmo/mnLonKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICBpZihyeCE9J+aXtuWFieacuicmJnJ4IT0n57Si5byVJyl7IFxcbiAgICBcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Ieq5a6aVUlEJyxcXG4gICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7Y2xlYXJWYXIoJ2h0bScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpVVJRFxcXFxu5LiN55+l6YGT5oCO5LmI5p+l77yfYuermeeCueW8gOiHquW3seeahOS/oeaBr++8jOmVv+aMiXVpZOWNs+WPr++8jOivt+Whq+WFpee6r+aVsOWtl1xcXCJ9YCxcXG4gICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScrZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnKSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eCuei1nmtleScsXFxuICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVrZXko55So5LqO54K56LWe5oqV5biBKVxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcIn1gLFxcbiAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJytnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+ino+aekGtleScsXFxuICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknK2dldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTon6K+E6K665Yy6OiDigJzigJzlt7InKyBnZXRWYXIoJ3JlcGx5X3R5cGUnKSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncmVwbHlfdHlwZScsIGdldFZhcigncmVwbHlfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdyZXBseV90eXBlJyk7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn54K56LWeJuaKleW4gTog4oCc4oCc5beyJytnZXRWYXIoJ2xpa2VfdHlwZScpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsaWtlX3R5cGUnLCBnZXRWYXIoJ2xpa2VfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKTtcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbiAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mlrDnlapcIixcInBhdGhcIjpcIm5ld2JnbVwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpIHtcXG5cXG4gICAgbGV0IHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC90aW1lbGluZT9hY2Nlc3Nfa2V5PSZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZpbHRlcl90eXBlPTAmbW9iaV9hcHA9YW5kcm9pZCZuaWdodF9tb2RlPTAmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9MTYzNTk1Mjg0MCZzaWduPTZlNGRmNDU0MmQzOGVlZTJmYWJmMjEyODg1YjkwYzY0JztcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBzb3VyY2VfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSk7XFxuICAgICAgICB2YXIgZGF0ZWxpbmUgPSBbe1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNF0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5YmN5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMFxcXCJcXG4gICAgICAgIH0se1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNV0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5pio5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMVxcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzZdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuS7iuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjJcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs3XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLmmI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIzXFxcIlxcbiAgICAgICAgfSx7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs4XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLlkI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCI0XFxcIlxcbiAgICAgICAgfV07XFxuICAgICAgICBpZiAoIWdldFZhcignaWQnKSkge1xcbiAgICAgICAgICAgIHB1dFZhcignaWQnLCAnMicpO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGlkID0gZ2V0VmFyKCdpZCcpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzAnID8gZ2V0SGVhZCgn5YmN5pelJykgOiAn5YmN5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcxJyA/IGdldEhlYWQoJ+aYqOaXpScpIDogJ+aYqOaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcxJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMicgPyBnZXRIZWFkKCfku4rml6UnKSA6ICfku4rml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzMnID8gZ2V0SGVhZCgn5piO5pelJykgOiAn5piO5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzMnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICc0JyA/IGdldEhlYWQoJ+WQjuaXpScpIDogJ+WQjuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICc0Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgbGlzdCA9IGRhdGVsaW5lW2lkXS5jb2RlLmVwaXNvZGVzO1xcbiAgICAgICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxuICAgICAgICAgICAgbGV0IHR5cGUgPSAoeC5wdWJsaXNoZWQgPT0gJzEnID8gJ+W3suWPkeW4gycgOiAn5pyq5Y+R5biDJyk7XFxuICAgICAgICAgICAgbG9nKHR5cGUpXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfigJjigJgnICsgdHlwZSArICfigJnigJlcXFxcbicgKyB4LnB1Yl9pbmRleCArICdcXFxcbuabtOaWsOaXtumXtO+8micgKyBnZXRIZWFkKHgucHViX3RpbWUpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGltZzogeC5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldEhlYWQoJ+mTvuaOpeeCuOS6hu+8jOetieS/ruWkjScpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeeVquWJp+e0ouW8lVwiLFwicGF0aFwiOlwic3lcIixcInJ1bGVcIjpcImNvbnN0IHsgQ2F0ZWdvcmllc0hlYWRlciB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY2F0ZWdvcmllcy1oZWFkZXJcXFwiKVxcblxcbi8qKlxcbiAqIOiOt+WPluWIhuexu+aVsOaNrua6kO+8jOWPr+WKqOaAgeWPr+mdmeaAge+8jOiHquW3seagueaNruWunumZheaDheWGteWkhOeQhlxcbiAqIGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC9cXG4gKi9cXG5sZXQgbUNhdGVnb3JpZXMgPSB7fVxcbmxldCBjYXRJblZhciA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsICcnKVxcbmlmIChnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCAnJykpIHtcXG4gICAgbUNhdGVnb3JpZXMgPSBKU09OLnBhcnNlKGNhdEluVmFyKVxcbn0gZWxzZSB7XFxuICAgIGxldCBjYXRVcmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4LydcXG4gICAgbGV0IGNhdFNyYyA9IHJlcXVlc3QoY2F0VXJsKVxcbiAgICAvLyBsb2coY2F0U3JjKVxcbiAgICBsZXQgY2F0UmVnZXggPSAvd2luZG93XFxcXC5fX0lOSVRJQUxfU1RBVEVfXz0oLio/KTtcXFxcKGZ1bmN0aW9uXFxcXChcXFxcKVxcXFx7L1xcbiAgICBpZiAoY2F0UmVnZXgudGVzdChjYXRTcmMpKSB7XFxuICAgICAgICAvLyBsb2coUmVnRXhwLiQxKVxcbiAgICAgICAgbGV0IGNhdGVnb3J5ID0gSlNPTi5wYXJzZShSZWdFeHAuJDEpXFxuICAgICAgICBsZXQgbUZpbHRlcnMgPSBjYXRlZ29yeS5maWx0ZXJzO1xcbiAgICAgICAgLy8gbG9nKG1GaWx0ZXJzKVxcbiAgICAgICAgbUZpbHRlcnMubWFwKGZpbHRlciA9PiBtQ2F0ZWdvcmllc1tmaWx0ZXIua2V5XSA9IGZpbHRlci5saXN0KVxcbiAgICAgICAgbGV0IG9yZGVycyA9IGNhdGVnb3J5Lm9yZGVyc1xcbiAgICAgICAgbGV0IG1PcmRlcnMgPSBbXVxcbiAgICAgICAgb3JkZXJzLm1hcChvcmRlciA9PiB7XFxuICAgICAgICAgICAgbGV0IG1PcmRlciA9IHt9XFxuICAgICAgICAgICAgbU9yZGVyLm5hbWUgPSBvcmRlci50aXRsZVxcbiAgICAgICAgICAgIG1PcmRlci52YWx1ZSA9IG9yZGVyLmtleVxcbiAgICAgICAgICAgIG1PcmRlcnMucHVzaChtT3JkZXIpXFxuICAgICAgICB9KVxcbiAgICAgICAgLy8gbG9nKG1PcmRlcnMpXFxuICAgICAgICBtQ2F0ZWdvcmllc1snb3JkZXInXSA9IG1PcmRlcnNcXG4gICAgfVxcbiAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCBKU09OLnN0cmluZ2lmeShtQ2F0ZWdvcmllcykpXFxufVxcbmxldCBrZXlzID0gT2JqZWN0LmtleXMobUNhdGVnb3JpZXMpXFxuLy8gbG9nKG1DYXRlZ29yaWVzKVxcbi8vIGxvZyhrZXlzKVxcbi8qKlxcbiAqIOe7hOWQiOW9k+WJjeWIhuexu+mTvuaOpVxcbiAqL1xcbmxldCB0cnVlX3VybCA9IGdldFZhcihNWV9SVUxFLnVybCwgTVlfVVJMKVxcbnRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD8nXFxuZm9yIChsZXQgaXQgb2Yga2V5cykge1xcbiAgICBsZXQgY2F0X3VybCA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjXFxcIiArIGl0LCBpdCA9PT0gJ29yZGVycycgPyAnMycgOiAnLTEnKVxcbiAgICB0cnVlX3VybCArPSAoY2F0X3VybCA/ICcmJyArIGl0ICsgJz0nICsgY2F0X3VybCA6ICcnKVxcbn1cXG4vLyBsZXQgcGFnZSA9IDFcXG5jb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCcjJylbMV1cXG5pZihwYWdlPT0xKXtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbW9yZVxcXCIpKS5ydWxlKVxcbn1cXG50cnVlX3VybCA9IHRydWVfdXJsICtcXG4gICAgJyZzdD0xJnNvcnQ9MCZzZWFzb25fdHlwZT0xJnBhZ2VzaXplPTIwJnR5cGU9MScgK1xcbiAgICAnJnBhZ2U9JyArIHBhZ2VcXG4vLyBsb2codHJ1ZV91cmwpXFxuXFxuY29uc3QgZW1wdHkgPSBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG5cXG5DYXRlZ29yaWVzSGVhZGVyXFxuICAgIC5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSgnbmFtZScsICd2YWx1ZScpXFxuICAgIC5nZXQoZCwgbUNhdGVnb3JpZXMsIHBhZ2UpXFxuLyoqXFxuICog6I635Y+W5b2T5YmN5YiG57G76aG16Z2i5rqQ56CBXFxuICovXFxudHJ5IHtcXG4gICAgdmFyIHN5bGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh0cnVlX3VybCwge30pKS5kYXRhLmxpc3Q7XFxuXFxuICAgIC8qKlxcbiAgICAgKiDliJfooajmlbDmja7mupBcXG4gICAgICovXFxuICAgIGZvciAobGV0IGRhdGEgb2Ygc3lsaXN0KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlIC8qKyAnLycgKyBkYXRhLmluZGV4X3Nob3cqLyAsXFxuICAgICAgICAgICAgZGVzYzogZGF0YS5vcmRlcixcXG4gICAgICAgICAgICBpbWc6IGRhdGEuY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgZGF0YS5saW5rICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3liqjmgIHliIbnsbvmqKHlnZdcIixcInBhdGhcIjpcImNhdGVnb3JpZXMtaGVhZGVyXCIsXCJydWxlXCI6XCJqczpcXG4vKipcXG4gKiDkvb/nlKjor7TmmI7vvJpcXG4gKiAxLuaPkOWJjeW7uueri+WlvSDliIbnsbvmiYDlsZ7nsbvlnovlkozliIbnsbvliJfooagg55qE5a+55bqU5YWz57O777yM5Y2zIGdldCDlh73mlbDkuK3nmoQgY2F0ZWdvcmllc1xcbiAqIDIu6K6+572u5a2Q5YiG57G75pWw5o2u55qEIGtlee+8jOiwg+eUqCBzZXRTdWJDYXRlZ29yaWVzSXRlbUtleSh0aXRsZUtleSwgdXJsS2V5KVxcbiAqIDMu54S25ZCO6LCD55SoIENhdGVnb3JpZXNIZWFkZXIuZ2V0KGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSlcXG4gKlxcbiAqIOaUr+aMgemTvuW8j+iwg+eUqO+8jOS4gOWPpeivneWNs+WPr+iwg+eUqOeUn+aIkOWIhuexu++8jOWNs++8mlxcbiAqIENhdGVnb3JpZXNIZWFkZXJcXG4gKiAgICAuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkodGl0bGVLZXksIHVybEtleSlcXG4gKiAgICAuZ2V0KGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSlcXG4gKlxcbiAqIEB0eXBlIHt7c2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXk6IENhdGVnb3JpZXNIZWFkZXIuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXksIGdldDogQ2F0ZWdvcmllc0hlYWRlci5nZXQsIGNhdGVnb3JpZXNLZXk6IHt0aXRsZTogc3RyaW5nLCB1cmw6IHN0cmluZ319fVxcbiAqL1xcbmxldCBDYXRlZ29yaWVzSGVhZGVyID0ge1xcbiAgICBjYXRlZ29yaWVzS2V5OiB7XFxuICAgICAgICBzdWJfY2F0ZWdvcmllczogJycsXFxuICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICB1cmw6ICcnLFxcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICogMS7orr7nva7ku47liIbnsbvliJfooajkuK3mi7/nmoTlrZDliIbnsbvnmoTmlbDmja4ga2V577yMXFxuICAgICAqICAg5qC55o2uIGtleSDmi7/liLDmlbDmja7lkI7vvIxcXG4gICAgICogICDkvJroh6rliqjotYvlgLznu5kgc2Nyb2xsX2J1dHRvbiDnmoQgeyB0aXRsZTogaXRlbVt0aXRsZUtleV0sIHVybDogaXRlbVt1cmxLZXldIH1cXG4gICAgICpcXG4gICAgICogQHBhcmFtIHRpdGxlX2tleSB0aXRsZSDnmoQga2V5XFxuICAgICAqIEBwYXJhbSB1cmxfa2V5IHVybCDnmoQga2V5XFxuICAgICAqL1xcbiAgICBzZXRTdWJDYXRlZ29yaWVzSXRlbUtleSA6ICh0aXRsZV9rZXksIHVybF9rZXkpID0+IHtcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS50aXRsZSA9IHRpdGxlX2tleVxcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnVybCA9IHVybF9rZXlcXG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzSGVhZGVyO1xcbiAgICB9LFxcbiAgICBzZXRTdWJDYXRlZ29yaWVzS2V5OiAoc3ViX2NhdGVnb3JpZXNfa2V5KSA9PiB7XFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkuc3ViX2NhdGVnb3JpZXMgPSBzdWJfY2F0ZWdvcmllc19rZXlcXG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzSGVhZGVyO1xcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICogMi7ojrflj5bliIbnsbvlpLTpg6hcXG4gICAgICpcXG4gICAgICogQHBhcmFtIGxheW91dCDlvZPliY3nlYzpnaLvvIzljbPluLjnlKjnmoQgZC5wdXNoIOeahCBkXFxuICAgICAqIEBwYXJhbSBjYXRlZ29yaWVzIOWIhuexu+aJgOWxnuexu+Wei+WSjOWIhuexu+WIl+ihqOeahOWvueW6lOWFs+ezu+ihqO+8jFxcbiAgICAgKiAgICAgICAg5aaC77yaXFxuICAgICAqICAgICAgICB7XFxuICAgICAqICAgICAgICAgICBcXFwi5bm05Lu9XFxcIjogW3sgXFxcIm5hbWVcXFwiOiBcXFwiMjAyMVxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCIyMDIxXFxcIiB9LCB7IFxcXCJuYW1lXFxcIjogXFxcIjIwMjBcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwiMjAyMFxcXCIgfS4uLl0sXFxuICAgICAqICAgICAgICAgICBcXFwi5o6S5bqPXFxcIjogW3sgXFxcIm5hbWVcXFwiOiBcXFwi54Ot5bqmXFxcIiwgXFxcInZhbHVlXFxcIjogXFxcImhvdFxcXCIgfSwgeyBcXFwibmFtZVxcXCI6IFxcXCLml7bpl7RcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwidGltZVxcXCIgfS4uLl0sXFxuICAgICAqICAgICAgICB9XFxuICAgICAqIEBwYXJhbSBwYWdlIOmhteeggVxcbiAgICAgKiBAcGFyYW0gdXJsTGlzdGVuZXIg6aKd5aSW5aSE55CGIGJ1dHRvbiDnmoQgdXJs77yM6ZyA6KaBIHJldHVyblxcbiAgICAgKi9cXG4gICAgZ2V0OiAobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlLCB1cmxMaXN0ZW5lcikgPT4ge1xcbiAgICAgICAgLy8gbG9nKGNhdGVnb3JpZXMpXFxuICAgICAgICAvLyDliIbnsbvmiYDlsZ7nsbvlnovnmoTliJfooajvvIzlpoLvvJpbIFxcXCLlubTku71cXFwiLCBcXFwi5o6S5bqPXFxcIiBdXFxuICAgICAgICBsZXQgY2F0ZWdvcnlfbmFtZXMgPSBPYmplY3Qua2V5cyhjYXRlZ29yaWVzKVxcbiAgICAgICAgbGV0IHR5cGVzID0gW11cXG4gICAgICAgIC8vIOagueaNruWvueW6lOWFs+ezu+ihqOaLv+WIhuexu+WIl+ihqFxcbiAgICAgICAgY2F0ZWdvcnlfbmFtZXMubWFwKGNhdGVnb3J5X25hbWUgPT4ge1xcbiAgICAgICAgICAgIC8vIOi/memHjOS8muaLv+WIsCDlubTku70g5o6S5bqPLi4uIOWFtuS4reS4gOS4qlxcbiAgICAgICAgICAgIHR5cGVzLnB1c2goY2F0ZWdvcmllc1tjYXRlZ29yeV9uYW1lXSk7XFxuICAgICAgICAgICAgLy8g6L+Z6YeM5LiL6Z2i5a+5IHR5cGVzIOeahOWAvOi/m+ihjOWkhOeQhlxcbiAgICAgICAgfSlcXG4gICAgICAgIGNhdGVnb3JpZXMgPSB0eXBlcztcXG4gICAgICAgIGxldCBpbml0X2NhdGUgPSBbXVxcblxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxuICAgICAgICAgICAgaW5pdF9jYXRlLnB1c2goXFxcIjBcXFwiKVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgY29uc3QgY2F0ZV90ZW1wX2pzb24gPSBnZXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG4gICAgICAgIGNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxuXFxuICAgICAgICBpZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHtcXG4gICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgKiDpgY3ljobnrKwgaW5kZXgg5bGC5YiG57G7XFxuICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yeV9uYW1lID0gY2F0ZWdvcnlfbmFtZXNbaW5kZXhdXFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllc19rZXkgPSBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkuc3ViX2NhdGVnb3JpZXNcXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzID0gc3ViX2NhdGVnb3JpZXNfa2V5ID8gY2F0ZWdvcnlbc3ViX2NhdGVnb3JpZXNfa2V5XSA6IGNhdGVnb3J5O1xcbiAgICAgICAgICAgICAgICAvLyBsb2coY2F0ZWdvcnkpXFxuICAgICAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAgICAgKiDlnKjnrKwgaW5kZXgg5bGC5YiG57G75Lit6YGN5Y6G6K+l5bGC5omA5pyJ5a2Q5YiG57G7XFxuICAgICAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0ZW1bQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnRpdGxlXVxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGVzY2FwZShpdGVtW0NhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS51cmxdKVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybExpc3RlbmVyKSB1cmwgPSB1cmxMaXN0ZW5lci5vbkRlYWwoaXRlbSwgc3ViX2NhdGVnb3J5X25hbWUsIHVybClcXG4gICAgICAgICAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjMDk4QUMxXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHVybCkubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wW3BhcmFtcy5pbmRleF0gPSBwYXJhbXMua2V5LnRvU3RyaW5nKClcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI1xcXCIgKyBwYXJhbXMuc3ViX2NhdGVnb3J5X25hbWUsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViX2NhdGVnb3J5X25hbWU6IHN1Yl9jYXRlZ29yeV9uYW1lXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuJC5leHBvcnRzLkNhdGVnb3JpZXNIZWFkZXI9Q2F0ZWdvcmllc0hlYWRlclwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLeinhumikVwiLFwicGF0aFwiOlwidmlkZW9cIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L2ZvbGRlci9zcGFjZT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBfbWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpICsgJyZzaWduPTBhNTFiNzcyZjgxZGM3ODEyY2Q2NjIyNmE4MzI1MzgzJztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5kYXRhO1xcbmZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHgubmFtZSxcXG4gICAgICAgIGltZzogJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5I1xcXCIreC5pZCtcXFwiQGxhenlSdWxlPS5qczpwdXRWYXIoJ2NoYW5nZScsZ2V0VmFyKCdjaGFuZ2UnKT09aW5wdXQuc3BsaXQoJyMnKVsxXT8nMCc6aW5wdXQuc3BsaXQoJyMnKVsxXSk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/lt7LliLfmlrAnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICB9KTtcXG4gICAgaWYgKGdldFZhcignY2hhbmdlJykgPT0geC5pZCkge1xcbiAgICAgICAgdmFyIGxpc3QyID0geC5tZWRpYUxpc3RSZXNwb25zZS5saXN0O1xcbiAgICAgICAgbG9nKGxpc3QyKVxcbiAgICAgICAgZm9yICh2YXIgYSBpbiBsaXN0Mikge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0MlthXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgaW1nOiBsaXN0MlthXS5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9jb2xsZWN0aW9uP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvaWRz77yf77yfYWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKyfvvIbvvIZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNu+8hu+8hmJ1aWxkPTYxMzA0MDDvvIbvvIZjX2xvY2FsZT16aF9DTu+8hu+8hmNoYW5uZWw9bWFzdGVy77yG77yGbWVkaWFfaWQ9JytsaXN0MlthXS5pZCsn77yG77yGbWlkPScrZ2V0VmFyKCdzdGFyaWQnKSsn77yG77yGbW9iaV9hcHA9YW5kcm9pZO+8hu+8hnBsYXRmb3JtPWFuZHJvaWTvvIbvvIZzX2xvY2FsZT16aF9DTu+8hu+8hnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RO+8hu+8hnRzPScrdHMrJ++8hu+8hnNpZ249N2UwZjFiOTJmM2VmMzgyOGIxOWJlNjY4Mzg5MTUwMDcnLFxcbiAgICAgICAgICAgICAgIC8vIGRlc2M6IGFbJ21lZGlhX2NvdW50J10sXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuXFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t6L+955WqXCIsXCJwYXRoXCI6XCJmYW5qdVwiLFwicnVsZVwiOlwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvdjIvYmFuZ3VtaT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcG49JyArIHBhZ2VudW0gKyAnJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuOS4xJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnN0YXR1cz0yJnRzPScgKyB0cyArICcmc2lnbj0xNjI0Zjk1OThkY2EwNmViMTI5NTM0ZTQ3NjVmOWIxYSc7XFxudHJ5IHtcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkucmVzdWx0LmZvbGxvd19saXN0O1xcbiAgICBmb3IgKHZhciB4IG9mIGxpc3QpIHtcXG4gICAgICAgIHZhciDnsbvlnosgPSB4LmlzX2ZpbmlzaCA9PSAxID8gXFxcIuWujOe7k1xcXCIgOiBcXFwi6L+e6L29XFxcIjtcXG4gICAgICAgIHZhciDmoIfor4YgPSB4WydzZWFzb25fdHlwZV9uYW1lJ10gKyBcXFwiIHwgXFxcIiArIHguYmFkZ2U7XFxuICAgICAgICB2YXIgZGVzYyA9IHgucHJvZ3Jlc3MgPyDmoIfor4YgKyBcXFwiXFxcXG7igJzigJxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXCLigJ3igJ1cXFxcblxcXCIgKyB4LnByb2dyZXNzLmluZGV4X3Nob3cgOiDmoIfor4YgKyBcXFwiXFxcXG7igJzigJxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXCLigJ3igJ1cXFxcblxcXCI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlICsgXFxcIlxcXFx0XFxcIiArIGdldEhlYWQo57G75Z6LKSxcXG4gICAgICAgICAgICBpbWc6IHgubmV3X2VwLmNvdmVyICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXCIgKyB4LnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGNhdGNoIChlKSB7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLei/veWJp1wiLFwicGF0aFwiOlwiZHNqXCIsXCJydWxlXCI6XCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgdmlkZW9fdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy92Mi9jaW5lbWE/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnBuPScgKyBwYWdlbnVtICsgJyZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjkuMSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZzdGF0dXM9MiZ0cz0nICsgdHMgKyAnJnNpZ249MTYyNGY5NTk4ZGNhMDZlYjEyOTUzNGU0NzY1ZjliMWEnO1xcbnRyeSB7XFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLnJlc3VsdC5mb2xsb3dfbGlzdDtcXG4gICAgZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxuICAgICAgICB2YXIg57G75Z6LID0geC5pc19maW5pc2ggPT0gMSA/IFxcXCLlroznu5NcXFwiIDogXFxcIui/nui9vVxcXCI7XFxuICAgICAgICB2YXIg5qCH6K+GID0geFsnc2Vhc29uX3R5cGVfbmFtZSddICsgXFxcIiB8IFxcXCIgKyB4LmFyZWFzWzBdLm5hbWU7XFxuICAgICAgICB2YXIgZGVzYyA9IHgucHJvZ3Jlc3MgPyDmoIfor4YgKyBcXFwiXFxcXG7igJzigJxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXCLigJ3igJ1cXFxcblxcXCIgKyB4LnByb2dyZXNzLmluZGV4X3Nob3cgOiDmoIfor4YgKyBcXFwiXFxcXG7igJzigJxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXCLigJ3igJ1cXFxcblxcXCI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlICsgXFxcIlxcXFx0XFxcIiArIGdldEhlYWQo57G75Z6LKSxcXG4gICAgICAgICAgICBpbWc6IHgubmV3X2VwLmNvdmVyICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXCIgKyB4LnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGNhdGNoIChlKSB7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLeaUtuiXj1wiLFwicGF0aFwiOlwiY29sbGVjdGlvblwiLFwicnVsZVwiOlwianM6dmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxudmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoTVlfVVJMKSkuZGF0YTtcXG52YXIgcmVzb3VyY2VzID0gJyc7XFxuZm9yICh2YXIgeCBvZiBjb2RlKXtcXG4gICAgdmFyIHJlc291cmNlcyA9IHJlc291cmNlcyArIHguaWQgKyAnOicgKyB4LnR5cGUgKyAnLCc7XFxufVxcbnZhciByZXNvdXJjZXMgPSByZXNvdXJjZXMuc2xpY2UoMCxyZXNvdXJjZXMubGVuZ3RoLTEpO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2luZm9zP2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZSZtaWQ9JytnZXRWYXIoJ3N0YXJpZCcpKycmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnJlc291cmNlcz0nK3Jlc291cmNlcysnJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nK3RzKycmc2lnbj03ZTBmMWI5MmYzZWYzODI4YjE5YmU2NjgzODkxNTAwNyc7XFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLHt9KSkuZGF0YTtcXG5mb3IgKHZhciB5IG9mIGxpc3QgKXtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTp5LnRpdGxlLFxcbiAgICBpbWc6eS5jb3ZlcixcXG4gICAgZGVzYzon5pKt5pS+6YePOiAnK3kuY250X2luZm8ucGxheSsnICDlvLnluZU6ICcreS5jbnRfaW5mby5kYW5tYWt1LFxcbiAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgeS5idmlkICsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgIGNvbF90eXBlOidtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3nmbvlvZVcIixcInBhdGhcIjpcImxvZ2luXCIsXCJydWxlXCI6XCJldmFsUHJpdmF0ZUpTKCdMbGUwbmF5ZHN6UTI1MEloT3lkUkExa0pyMFhuTmEvckZsc2ppRUtaVzdyZXRaRmV1SE5KbFBLV01FNGE5QmNmQjlCMGhUYXdZTTh2K2hFd3pGM1JWTjJzUi9pSDhOdnlIWTZ1ektOZ2pNYko4NUdMRWcwSnlqUEl0ZkdHUmd3SkZVVk5MMUlMZVJOYmFlMzlYVnJvRDdXS1VLQlBmdjdId3FqMkhZRkg1dVFMcE9WWnZHNFVjWU96QXM3ajhOaWFQRVVKTVM0MjRCa2JuczFOZjZGSURYbGZrTklJc1dCSFdSZE82bXA3M1Z5MnZ1NWhnMWFHMEFWZWs1K3BRY3Fha3hFTTljV0dnQ0pDNW1LcFVpWlNFdFA5MnNLQTlTSysvTkhzcWYxM0NPdFFSaWl4NmdGaHlGaExlejcrR3B1U2JMSDEzazFGRFVaa2lsWTdPQlA4eUNaUCtZbTQxWWhpL3lJVHgzRWxMbWdqaUJleGowcVRManJLSVhueDRERFhpaXBTdy9ZcFVOZHF0Z1VYSE5pOThhN2NHdExFKzk1QXFrMkRjVi9IM09HNWhwc3dTSEMyK2lsclJMUDgrVHlMVG9nckZVYUpZTXhPbXJXd0FqVU0xRmZMcy9NU3g2MDFXL3VlRkRBbWhPL1pab1Vad2YzTVliaHRrditCeGd5Ry83NldmREFRYkdBUko5NE5halo5cHp6dmN1WElFcmdyMUQvUHVnRm1oT1dIay9NU2RGRGxCcU1EcEU4eDk1WWo2dEw0d0ZzdzJPYUdPb2U4TWhzbmlGWUVGOEJxTVBSZWQwejdjQkM0Ukd4RDVOZ1YxRktXSEFQZ1pQWUZLamdPOWdsTkp2NzFJU2dJbzlTS1JCRWpLbUU0Y0V2Yi9rSkVPQ0VETGpCUXJWc09UMTFPdVpjWnVkQ1pFT1R6bXJpR0hkUGZmbEtCckZzRWg3eWxVdFBaWUVjRXBDeTFXaDFlMVl4TktaaGJPdWswMnd0QTdGZkhOUDBEcUlaODNGOFJGRzM4UlkzNmZGSS8vekxwQ01FTThVWGh6bGp3NXFvU1B2emZoZVIxL0dGM01qakZmc3pYWjNVQ3ZjQmcyd0MxT2tBVktwMHVTY0dMbWVxNlFhRWJRTjJ1bnowMnBwRlY3ZUs5SDczeUQxRUVsTktDUUNra21CNmR4cHF0a1Y2SmhSc3hpZ01jZVhuNGRVR3QrQXRma0EyS3Z5bWU1cmt1cHBCY2VGdk1maElGc3hZR1IyVUU5K294NmtmbFlCdFBwNTVRNnVsSUt5ZGhyazVUQVR6TTJpdjlmOXhxWXBKSUlCbnRJVklvZjNPYW5ISldyRXR4UTJjMWdjdk90L1diRS9sa05kclEzM0lPWXJPRmIyY2JaNE0vbGg1blZ0emlqdnBZZTBNNk81ditJb1pNcE9pVnFzZTd5TmlYaEFIeEUwNXppaVZjajlwaXpwV3pJZWJ6TzRnK0trYXFKckJTNnl6NVFYbWlGY1dWRVNJSUlvdllIZUNLUkRMZ0JvanFKZFRlSVhhUi9LZTQ5c3QwM1gySFJ3MnIwQjBNbmlmOHRFUGRhMWdsY0JMc1RFWkVXMmhia2R0b0VpY0lSRnZraTU1eDlIUXRRVDR6cDJUV3AzYXU3VEl6d0RpdENVYmJET1YxekZnU0hoMDg3M0xseUJLNEs5US96N29CWm9UbGg1UHpFblJRNVFhakE2UlBNZmVXSStyUytNQmJNTmptaGpxSHZESWJKNGlCcCt4WGhqYysycnZpRGFBT3lGQzl1bHZreHphK1RXNE1hdDBoeHRZRHJJbCtEcG91ZWp5SU1UVzhEc3ZYeFBYQ0FRYm13R2xERUFmT2l5cXRxTFE5SGY4Z0RYRTM1UTdheTB5QUJFZWoxcUtXZ3JqL1luQmJZL2RZQU9QU0hwbWxkZEZMSm5LcEFwZE1YdllCc3dyV0YwQ1JSU2IxczdDWlJnTWZPUXpLNkl6Ni90ZWhhc21PczdNbDl3L0hwbjVuS2gxMCtuMGlHWE12eDVJSStTR3BvTHVlQ3RSbUo3VVZWQ3RERzZ4ZXZ4WU1tMDRzQUdHR0phQ0RBaEdIOGljYmhJRTJiK29xREZFcG1VMGVZN1J0Rzc5aFBoTCtnWFlPeVlOVXZKcWVqbGJaMS9PZHZMNW5ZeTZtMzBHd2wzejd3NWVzbFpDVUEwa2FSczVrbVVPTHZMMFFRUEQ3NGZhZ0FkcUdzTEhVR0RXYjRCekNMRjJNWUxIeStEc2NrSzNGWUpNdzBVNXFON0w3MDBzVlNhbGY2dEs5NmRXcXpuNWVJcmV3ZjFpR284M0ljd3o5bzgxSm11S0ExTHBJU1M5MDk4bndBeDFxUDFGelBjd0loVFNWdVI4K0FvbzFwM0RpMFdMd05LUU5PSTh4NzVEbWFFNkJMUGlEa2FETEtKeWMrYnpYMGhJQzNzUGIyK2Rmdmxrc0NuSzIyY0doSzI1RnM5T0ZSM3JGL1ZGVlNSYkRHNys3QXFPa0UyNGJva0VVamQ4blM1SGpxcDNEL3VrKzBYekJ5OTIyMlg2YkptSmh3RmxLejQ2VEJWWGV6em0zZHpRVzdPbCswT3FmL0V4MkFZK3J3UCtNNnhGUkhVWC9qMkdjR2E1bWhiSlV6UlJCZE81SXByVTJOczZIdFNYQzlJcWN4VzFWbDViQ09iTUc5K0h2dnp1MHNHN0FXTmd1WkpDc3hrSlhoaGd3ZjJHQjZGUHU2K29GUno2RDRBMDVzc0RzTExWeW1aNWNnVGJEY2JlcTE5VW1pWWFtM1BuN3FXSWNqdWg5T3NONHRpRlRyclVFUFpJUlg5WGswVUdEWWZhYlExcFhmeE0vK3lTaDhxN2R3blZKL2c3bHVpaEdPZWVOd0hYQUZBeTRuM2FjUEgyWEJjL21zeDVYS2dJcmVPUk1WWS9jRmI5S2NtM29XWnp6SzYrSFNQODV0a0ZLS201NWhnOE14d2k1SXg5UlFFL3BHQXgxY3NvdlNwM2pSUDBoNjJvNk5oRmt0Q0RLV3pqRVVsOWJtYTI4Zlp5aVk0ZFhCRXNIQk9wS3ZCekFBMGxSa2V6VG5FdnZYczlaNTVVckFhOFpoQUZ1eDZaRU53NGNNVEl1U2tWZncrVi9VL21vbWx0Sjl2R1BnaXFiNW5abDlLdTdkMFJPVjE1SjNRQXNiaE94VDZTZ2tJVnVndVZhVFZSY2owSFcrbU1OWUtiUXluck5SQXFLRGVKcXVWeGM5SGxQTTZMOHFQblpJV2JiSEFmVWZHYncwbFJsd1N1T3BGNytBMldKTFo0WHpTZ0hiY01Ya3VselBQRFA5L2NhUklCOGUyVmt6RVpTUG5VaVpBcFdQNndXdXNIdUIzOVdBTTc4K05CaTRCcDJteFdqTEtITFdRTURlSVhYaGR4ZWNLNXFVVWZZTGdJVGloOURlRnBnTE5XY0JMR1FGYmRTTmtKM05XcGNHNTZEYWpESXVMVWE4azAwaTk0Y0p3QXpNa0pCeE5KYjVlaEJSa1Z2V1hvc210SkJNZFJmNk5FYnNWOXU4dnBaak5Fb2dVa25tbHRKOXZHUGdpcWI1blpsOUt1N2QxWnFUUHpvcHdaaGgraXREcFViMExyMjdjNXdOQUFFanJwaE9xZmUwTmozOUNOVzBMSDRXeGpmMmx3bHhNdE9LUjFIUUwvQ1B3NTF5eVlKL0xWclF6K2lmM2lJQk5VNG5DZ09idVc1SlVMVHZzUXNzMlJuZUxDdzZycGh4Z01zZGF3TUVnWjlxQ3JDTTd5VE0wRXlsRnhmamlJWktxYksxMEJhZTJOb0hEK0d1b1VLQVFwNVN1NEFxWFNmS0x6bXg0aFdibVNpTlY3bUNCL3JkdzF5YnNQdmdBRmNHODVONTNrTmp6Y1B2YktMT094SFhIWVZXQ2xCbUpwcndKdEhBNkIxV1pwR1dSeDVNL2dEbXNHelZSbVZ1QkR2bVNBWk13SWVWcjViekRFODZtME5xY21nVE5lcHh3cUIreUJCcDVLemQ0MkVBUWh0MkVLNVQyek14dmdUemVTL3ozSy9xNWxSSGwxekswSi9zUXdMeDl6OGxNVmc5UkJiQWUvZWIyMFZvd3pjcVBkZS9xaTBqSE13R2NNYUM5ZHV5VzU2d2xHT3Nua2JleUJRL1BmUlNTcmtVRy92Y2FDYlRhNElUODRaenRwTlFSdmJlVW5JQW9Qa1cvZVo2d09VaWE0SnN5YXc5OVdhOCtFNExqRG1aMHpSaG5TSGdVeUMveWI5clpUMmxFMVM3SkJJazdZWlBYeUEwMGEyTGdLRkc4OFl6VjgwaGkrQVZUd1JaUGs5d2xPN2dSUzJOUi81NzduSXhHMEgyMmxsRnNjbU4xTGhJOTFGRDJWYlZYYnFpS1VWakpjVm42L3NRY1R3d3o3dHZCNno5eU1tckRseUNNdnlVZHdHSTZ1cjlFYWM0cVc2RVV6MXhIMnk1VEk4QWZoeHh4T3JBUVpuRVJiVE1JQ2RmS0dRR0RKZS9UZEtSS1F0Z2JwYjVNYzJ2azF1REdyZEljYldBNnpEUHUyOEhyUDNJeWFzT1hJSXkvSlJOZHZzWDZEbEtkWXdMbkZVUWoydDZIUUhodGprT2xpK3RjT25SbGpBYTMyb3JmeDc5Vk91dmlOcSttT3FSMU4rQ0dSRjJibUtVMWtwREFyeDRWekRkV0pkZEVyYStPa0ZuT05FR3o0WWVjd0VSWlVkNzcrbm5QTDJNb0NNbUVEWWN2WElzMkV1Wkhka1RmbjFpd2VvZ0QwMVFmd3FaSE5GOEh2bEJXTVUvZjZFZHpYS0xxSWdSSzJpcEFNRmdLUnZsUmJhc0hQbFJ1c1NnMHBSTlZVQ1FSNWViTnl4cUZYaExjMitvZWRLOEpFb0xvTUVRNUQzZkphcllnZDlqeTZmT2lCa0c4QzlJSVRCOG15dHl5c3djS3R3aHkxLzFXYkhPN0N6L1JkcVZjeUozNEEycTJaM3l1aTFRNWExb1BtTzBOV0xmbnlhNCtzUk5RcmtzaVE0SHVPMjZHYVpVUjhrV3pGMU94ZGR1YVBWeElOTWI2NThjc1hWdURHWjVNWXBXZGJja0ZXNmVZUEZpdSt4U0RDL2VEenNYQUg2RkwzUFY4T3BEVVBCbXBUZWsyWFhmZUtkcVUycFM5bTdTQ2lDQjV1MnFiaUtDMmM5dkJWMjRNNnM4UmE0aG1kK1BhajRGVHl0djM2U0gxYkxLOHRJMWxaeit3aWYrOVpJQWRUMjJjcjU3anEreXBNUGVOMXk1OURxdjdwc2hEK0pUSThVZ2RTNFFWbEN3RjE3WXJ2SkhQRDQyS0ZFYmdRWSsrMGowZGFseUhZY2dmNThReUFsOStubkJKWlZVVmxJaWxRNnFFUHNIemI2ck1iVjY3WVNxWkhjTHZmQ1RvYlJpNHBhQkNFVXhjeU5MUXZKU0tjS3BaQXVmMis4Szgxekt5ejNNZEVjdXJ0c2huc3hRQStvY0RDMk95NThpeUNLNmRTaklyVFBpRkZRODBCbXBhMkQzbHNjTFZtWTVJUjRvazl0Z2RCZVhJNlhaOHUyazlLTEpXZCtGcXNmOFlPUUd4TzZFSDJjQ0tPMnUwKzNGL0dPejYrL09ydXRMYWhxUjJta1ZHSWRKS3VYZVlHc1puREJnZUpnQkpaOHJJSEMwQzBOV0xMeGlqTExGSmZ6aTBwekdJUkhXNExBSkFoTy9mTHBTTDUwUmxyaE1ZdmJRczRvWnUxcGUrNzlYVDVSUjg4ZGxYczFyNkQ0c0pIWWg2Kzd4M2tQUXVNbHM5cmMxbnl3ekJkbDM1Q0laeEV3NmNBQ2pQOFk0ZG42endOWVBudDlRbUcySVY0WjRyTVZ3STVwWlFpbVY0Y0IxSnlwL3lLM3ZPY0ZlcFdiYTBpTkw3eEFoRUdEdHM4STdoSy81TkhTQ3p3czY3VFNrSjhVSHl3R2t0U1RKQ1QwMTV5cFFDYVNuS21PT3FVaW14Q2FoZlM0ZTRmOVh0ZkJsU2xHV2NaK3l5dkxTTlpXYy9zSW4vdldTQUhVOWp4c0NQMnBLOElwSDhqUnlhRHhhaUdGTHhNbVF4YzVrRGdnNnZHZFA2S3kyNEEyQTBlQmllWGJnUGZYeUhzODJSNDU2OTIySnowcFZBR3NqUDQ0M214aUUrbzZXdjNMbmRubTArRi9RMUhrdjc0UGR2SW1IRE40dXJHRjh0RUIrRGxDRlErbEZTcWgrYkNQSXZoemhlNk54enE4RGgraW96dW5aSW9mSXpyaW8xZ2NyQmZCMFFZZGpYRzBGVFI3cGRONTRtMk1wdkVIMHlmdEVvMTlucnZMSzh0STFsWnord2lmKzlaSUFkVDJ0SFYvQ1BTc0t0N3p3Y3l0YUdyTGFhbzQyRDIyc3N3VFJMUGFHL3E2R2k3RGpFaGh3S2xCeGpqdzdJTXl0SUkzTmtNOGNiK0p0RXlmOHdGa1RFRmlGTFVZaW1RL2hQWEk5M3pyWGsrK3Zxb2dMcnUwdGFYZ3RsTTE3cXRBZnpHUXU4eVVkSTRxcVl6ZUp4WHhmME5OWjJvQmplRHIyRGl3STlPWFBVdUJIYnNMNGMzL253MTBFbTJVNk1GQlVjclpqL0RNYVNGeFZjWjdNb1dsMm9uOEdtMFZvd3pjcVBkZS9xaTBqSE13R2NNZjl6NDllZ1pSUXpMN2hLU1VNNVRQdDM3QW1rMzc5Y2N3cEx0UFRUMjNCaDdVaG5rZEcwR1VvSHZIc3k5OUd4bVFhUjRuYXlPL3JRRmJvcXVzdFNGTHJPODAvUHRuSDhFSmN3UWFRWVpKek4xYjliRDZSckpsNnpRSW9td01mWXV1K204RnNPN3pkNC9jZnI2aGlPZWJIU0tabURQRmQzWFJKZS85Q05uTEdMWVhKTHJZdkV2dEZ6d0Q4QTNuM2RoWFdQaW1rQWlzRjBSKzdQaFE5VkpMV2NHaDh0cUtnb1ZvWjdrekJHdUQ3U2g5YysyU3IrU0FHSDZhSEJUNEZ0MWVzd1VuYitmbkpHaGFIU0MvU3ZvektDTG1XTnJQUTk0YVp1WXlPT3YwZmxQVTlQdjlLT1FVeSs1VXVkbE12dHFsN0JJSmZvNFBpaC9sSzhlMU5HOUpOMEQ5TUx1MmY3K1VCQmNnbmNCOUVodWNLUUNKc1JoUExnWnBYL3Irc0xnbmJTMUhjQks1NnY3cU5tUFFZemxNTHdnVUZRRjdBZGV3VG9lL1lpdUFicWNLY00xTXdMZkk0YmUvZ25HNGM4UjRVOUJQMUdsODFaNVRMWmZXZmUxeDZWOEd6Skk5ODdWdUsyWTcxMG5sRXNJVUFDcDBEQStwM2I2cXcvYkVVRzBib0xQem9OcklUR3RPSXdFYnVYaUFqeGt2aHMvSkF2d0lHNjV2Nm9OU2s3WXhKWnpGTm8rajFmSWF6MCtGQmpXNWNXZitzaU9wM3ZZaGtYV281U2w2YUM3blFyOUR6aE43MFRPaTluQnpIUVJGbFIzdnY2ZWM4dll5Z0l5WVFOaHk5Y2l6WVM1a2QyUk4rZldMQjZpQWRRL0RGN3d5SDk5eklwcklOVTROeGV2YjZIeVZKUGs1MVhGQjFTSWdTSXJycHozRWozSitWaWdwZ0ViaFZaNnFzRmw4QW4yVVlwQWwzeEx5MXVjQkYyeEJ1cVpLWWJwSlV0RDlGd0dlUmtWeUUxdEdxakh0UVloL0lNZ3F2ZmF5TFpCeGlPK1YzVEMyVlBGejJyb0N4eE44SUx6eUtDY2N4SVk2RVlzZzJ3TGIxYjlCK3JXSDRHOE4vcmdDOUQwclhyblFLRWJZcCtsWFhsdHdFU1FnUHpyYjVFb1JQdHk5ZGlibFNCYnhyNFB3RWwvR254UmxGWnBZazhEeWZGSmR1TjgxMjFYNW1SV0tVNjY5bXVHM2pJNExzWHJobDZCVlZNY1hOOWthcTlxek9yMnZUZjZJczVPelYreGdRTkJEc01pZHNKNS84K1UrWkxYb29rdFM3ekI5RGp5RW5UUXhXWE9uaEl3NGs3V3pqNnBtK1pJNVcxTjMwUWJWQitRZk9JZkZ6a0E4UjNrc29EdUl4ZmtnK3NZNmtQR3M3TWNyU1dFMncwV1paVGNpRG9tVE56L2EvQUFSR2FLTEUvZTRrZzFyMHBTRWQ1THFmdjJHUEQwQ1ZHK0lJUnNxOTVITUZyWERJZmYvdzliTEs4dEkxbFp6K3dpZis5WklBZFQyeDlKY2R4OC8rRU1MNnNGK1JCaFpPSWl6ZG5VQ2N2akx2RTNkdmpUMlhCaWNkUUZ6NzFHU09lZ2pnK0hmeXNUYTk0cDQ2VXMvZytpdVdIQTJzZEh1RUdZU0VuUWwvMVhrckdJMXdPcUxjNHhXL1R4ZmNKT1NCWTFmT0kyV05BeXBLU0ozWExxMWI0YkhscTZCVnhSbDdaR3BYSUErNFRqaGpjTldEM2hXMGhRcm8wNjgxdEh0ZzcrYmp3Q3NQa3ZNVXowRzVrUFpobS95cDFadWF5RzhhK2huTEFzdnUvTWxLblBZd3JsVEZQRUxQQ3pydE5LUW54UWZMQWFTMUpNa1J5Q0d2eGFUa2tRL2lmRjdLZHpWbnh5UTJjODh4UXdHY0p3YjVpRndUSXJMSzh0STFsWnord2lmKzlaSUFkVDJlbVd1NFdENUpMOXBZUXlzNnV1VGpwVW55M0dDQnF0bWxTRjdXQXFiL1NETk5HenlOUTdmYThjejZvMkJ1ZUg3bnNld3RMcldJODEzOWtEWTdidXdJSmxaUE5yUU8xNG5LQzRGUmRZVGQ2dEdMUnpkenBSUTNZU04xZWJvcUx5RGFpRHR0MkVlbzJTdU9OU1hES2tEUFV0RE4veUVYaENRY2dVTjdvTEowcDlUVGdzQTRJbTkzUkwvSFhuRVp2cXVlZWhFTjBSZ3V5aUVrNnhmcWp0Ry8vcXJvZGZYWWRaMlhldlVBMGUzUTFPRHF1c29nWjY5TlBUd2NNSUlFQjlPamxDZENYdERsR0Zpd1loOW5zS2FXWVoyaFp6OXBhQUE5NjV5UkNSVDZGU09MeGFuUmhvMkVzbEkvZXhkWTNtNmhuYUZuUDJsb0FEM3JuSkVKRlBvVktTZVY0SGMySytQSHBkbUFVN2xDaTBuQzh3UzZMVnBNU1MxMkI0em0ySml5Ly9yM3JGckNqODl3Q1ZNNHJXTWVIakdORXFJT2tjQUtJcGhUbjhOKzN0V3JMdWV2SkNXOHVDUG1ScU5CSXgzbzV1OUFnZzJDb3hCY2JlS2hTa2d4Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWnM4UVgwdzMzMFJidCtuK3FmR09LZ2x0VGk5VFVJRStuYWtPd0JVd2xHekdDb3ZjakYvZXNlWWZpc1Qxa0FUWmE1Q0JwUkVoK2ZuYzNMZXRMaDZsSnpiUnpDT1U3aHZZbWZxQ2ZRSUVFMkxLL3dudW83eEtGTTV4dTd3ZGNiWWw3TEs4dEkxbFp6K3dpZis5WklBZFQyK2lGd0QwODdlblM5UW1uYys2VHRHd3lxY3N6dXo2ajAwQkZJUy9TYk1WaG5KQUMrWlFXU29PWVNzemtlblBZbWtTOXlGY1BsRmZqQlptaERpZHlLbnNzcnkwaldWblA3Q0ovNzFrZ0IxUGJHYTJJTDJ2MEpMKzA1eXFwRWsxUlhSc1BkZHF1OUcvZ1pCd1l0YjAyLzY0TEpVYzdtWnR3NUt2LzRVODRvZi9ad2w0YnBxRjlhejVOSnJLS2tGL3hpeXl2TFNOWldjL3NJbi92V1NBSFU5aCt0bDlReGk4N0syaCs1L0I5V0hnekg3WDFpeTI5T1pDb01lbFhEK0NsVnl5dkxTTlpXYy9zSW4vdldTQUhVOWlFU01Pb3ZNa0I3YXZXYWdxZFZBWlh6Yy9nYnBPbHgwZ3NGamhQd24wdWhMZTEyZWZhMG1vVTVaK3hhc2RaTC9HQ2o0M3RDVkJUbUZVTHJ2VGl5Z3BhR2RvV2MvYVdnQVBldWNrUWtVK2hVR2hHN0xqQU1YaGt0RVhidXJHUVpubWN0QkxhVC8zazh0TmJIQXBWZ0tYakxLOHRJMWxaeit3aWYrOVpJQWRUMjNsd0tyNmNoQmEwVjBCenRQekd1SXpGWGJsUHg5Q1BqaWFXWEhoL3NpTURMSzh0STFsWnord2lmKzlaSUFkVDJQNGwwMkJ1S0JERTMwa3Y5QmJGM1NuL3hJOHpzNDlyOFhJRTJUbkdUUVhqTEs4dEkxbFp6K3dpZis5WklBZFQyVDllNmxQcXVBVGUvd3hWM1hUU1RpVURORzVPem15MW56T01TcjBJYmpzNzArYmZGeDhoN1lCZzAwQU1zNmNpS3o0bW5XN2JydU9IbUM0NG5Ya2Zzd3JsNUVMaDRFdFpXU3FyaGZrYXBDb0tpZjNpSUJOVTRuQ2dPYnVXNUpVTFR3MUFJQ1p5QUNFeG45dzZXMmlCVklxMlVVY1dGNk41ZGtFT0RHQUl3SVdwNFlRQjZ3clMwYlR3WkwvWG9HVjlYc0p3M3J6L0UyNFZ6c0FNWUoxanBLQXhJMTJkNzBsL3pBQ1lDa2xVL2R0UkFnVW5LZkNDeHdjTFFxNEtRcUFMZHVteFF3dStkTkJCVW9YNG1QcER6aFRucFVjTldldWRsVGZ2ZEE2VmFmV0Z4eTBHbUxyaGJlTXFDT3E2VEhwN1ZPWlNWVURwNTZubks4T2owYnJybTlBZDNIemU0YWl0VHNnMlUvZmNIKzd6MXJjRUZRcndBU3VNRWdGVC9EYmcrMG4wK29jR0RYb2d6d3N4QVpEeWFTdWJSc210VjA1QlFGVEovQk52di91ZjVrU1k5aS85N0tVN0lGbVl4bDhzcHd6a1RyaW80akFSSDZad1RYcFJsSDk2VFpkZDk0cDJwVGFsTDJidElLSUs1V2s3NEs1d0gzMlNZVHNoVk9mL2l5eXZMU05aV2Mvc0luL3ZXU0FIVTlzUXNWSnptL3BZQWZOZlZoWEdSTUo2U29EMm9ma0g5SitaU25MZkRKRTgwajhuR1dTamZHcW5QOG0zUTdzY2w4Z2RjRXNWU0RWeHFRU3h3YWlSVXdEQmg1T1RDbDdEdm9acUR3b2l4cDBPNVZxS3Z5eDhXQ1V5T09mZnlPckFmNTVvZVVLbmE1cDJJQXdjdHloNElSblVuMTlRUnhJZGErVHgrbktmRDRHUmdFTVA1Szc4ZmIvbWVvUGtiQWRIUFViQ2Y2eUI4eU80Kzk2V21RTXFyRWlhektleVp0amJ2bGlrYk9lTVA1ZkM4bTdPMU8vQ0JuaGZuT3JHWXpIWndIa0NxY3d4QXFyQjlXa2JMTHlITVp2cDVnR2dySW9LR2hGSEQ1Ym5mOWZBenpwUXkrdzc4ODdEa0p5dnYyd25PSitLcWxtWkFveUhWaUg0M0Z6MFhhQTBSbW1CYnBISmZBQmNKbDJwQWtLb0hWVWNiZDZ4NUN6UlI4L09BdG5xT3ZOdEN6aWhtN1dsNzd2MWRQbEZIengzTEs4dEkxbFp6K3dpZis5WklBZFQybGhCRjNIMFBvOUZFV0NBeCt2MG5mZ1VzWVdkMml3aDg5eUFNcjZhcVJkd2JNWmZjYUlQcmZNR2loOFE2UlVTZEdOdDlyMmFXK1E4NXFIRkp0aTlBZldNK24rbHNnbHcyeWNXSm04SEJCa0ZMbVEwV3BzTmdFQWpkU2ovK3c4QmwxVVV3aHhuTGtjL3pzaXRLTFJ0ckhDck5XUmNQOVZMM1RkOEhhVU82ZlNscWgzNlJ1Y2Z3OFRRMUIxTVdvdXBqaFBSOE9UeitDVWtkeUtQYkU3VWoxVURwaDlrWWFxWFBNbDEvNm1wcTAyYkxLOHRJMWxaeit3aWYrOVpJQWRUMk9QZlpxZkVyUHd0OGZKbG9vM0ZIb1pzSGozdU5SMHlPaklTWlFGWGZoZFdZZ3RVbWIzWE5JREhvSEd4V25xNU02ZFIvaEJCbzVWNGkrVExadk1VcWVGSmNSNG55MVREUmQ4dE8zZEJkOTA2UnduL0JDcUhLT08wR0tNdnhGQTl2OGZUbTFNUGZ5cmdObHN3WEF1Wmp5SDlzcSs1MHdsWmhxb0pNVmxLMVVxK3QxQjhJS1llWTJkMy93NTN0ZWU5Z1M3dFFJRVNLVkxSUlNNZXljdUxnb29NSEpIZ2hMWmRieUpwMFkrK2tFcXExckFMdkVLY2Z1ZE91UzAyYTFPNkUzMUE5WXltUVB5VitvZ0E1UmE3WU1pTGdRNjBUMGVvU2srY2lpNGhQS0p4ZS80YmUvWDMyTjhwSUlCTEhuR3FUdGpFbG5NVTJqNlBWOGhyUFQ0VUdOYmx4Wi82eUk2bmU5aUdSZGFqbEtYcG9MdWRDdjBQT0UzdlJNNkwyY0hNZEJFV1ZIZSsvcDV6eTlqS0FqSmhBMkhMMXlMTmhMbVIzWkUzNTlZc0hxSUFlUHlDTnJESjM1ZHpVcThzcjc1azVwOXNmc045ZjZkenZ4QW9FZ056Z3dWektQRmx4V3F3elV3YXpXeWRHQ1NXcERsSEtnT0lMWUhpTHpaZGZINXB0Y2w2UGlDRGJVZ3R4TnJRUEtOZ1hVQllBcEs0Ri9KOXhabDlKUHcxTXJZSTFrNFVwN0dNVWFhY1h0ejJpbERQRjZUeFBCYnJTQ3lpTVR2b0ZaeXJ5NlE1bTQ5dmNWS2drUk9QL1BCMTA2emdxelZrWEQvVlM5MDNmQjJsRHVuMHAyeU9kRWgvQ3djdUZZMk5FVWFEdUlCb2d5YkNvQVNwR1N2L2RQL05hOTlhYWZCKzN2QTZ4QzdzZzkxZ0dSbXh0bFhOdllpQ01tRER6Q1poTWZuZi9xaHgxZjh2SU9EcmpMNWlkNmp4SHJtaEFSY1VPeEQ0ajkvNThXdEpZdmFtdEN6d3M2N1RTa0o4VUh5d0drdFNUSk1wZ1p0aXpvQVhONTloUStVNUNoSVEwVVRqSXBDQ2hjQXZXcDkvQ0h5bzRSZzkvaXFpTkxTQk9XNDFwWXZnR1U3dEgxaVB1aGV4MTliWE01bzhFNldDak95bnA3TmdBQ1YzK1JBejRyYWwxaG5hRm5QMmxvQUQzcm5KRUpGUG9WQzFRT0NHRE8vbzF4WGI2OGdHaUhpQkNzc0g3V2tUc3hUZlBUcWl1WEcyTmlXc3VvTmNQLzg0NDdUT0R3QndRaHhhMWYzUkZMMHFWeWxxR3JiUGVxZmd3UVgwVE51QnE5RC9OVEhJeWhlVHV3QW9WWUc4djRsTWo3b3J2bnVuVXd3Z2s2VVgrM1VVYkxhQVo0S210ZFIzaFRzeEtpaUs0UnJpRXAwNzVFSDUybGRqUkpiNHViSS9RWCtxZHJUTHhGd0lkWWVQL3dpaWtOVk9YUE1DbTd1SHZyY0lwdmhxY1Z0VkVYK0c5YUw4dlBuemMraEhueEE3MDhiRDZMZkpOZ2EzRnlIS2lCUjNVZjluMERnSEdONVgxaHhHbFFibThVVEw5TElCdmlEOTYwVjdKUXZtcUFoL2s0cGRnRzlxdzRVZ2hPaGpFeTVEbUNwK2R2NFJXT1VPYW01cWQrS2Vna2tFU09HOGtRUWVwenBReSt3Nzg4N0RrSnl2djJ3bk9KOENKUmwxRU9ETTBRWXprek10djhYSExLOHRJMWxaeit3aWYrOVpJQWRUMkNvdHJvUlByOUxBTDFLdCtkN0QzTWR0eE5hc0xUdUpkREkrcU5iYjhQVHRQdXQvdERxT1BYaTExeXU0elYzM25SWTZGai9aUjVvSzhvdzdrV21iczArRThHT2hoR2pGNWE3c2IvUVh3MlFPRHF1c29nWjY5TlBUd2NNSUlFQjlPRENXT0tCKzF2ckZLVEZoOGZXb09CZ0xSSnJFNzUxazBTYUREbFZOM2lzTkpBT3NmWGp6R3ZvWXpXMmJhcGpHbHF5amo2ZnlCVSs1SXdOOEZxNGxCdmdOOFlJOFZNZDhiYndJanZKNXZLV0FTZkFBRUJ5K0xEVmM2c1h0Y3NQdld0MytzdXM5STIyeksyVGo3aFM2cDZNc3J5MGpXVm5QN0NKLzcxa2dCMVBieC9hTHpTTFFtdHdPNFdSb04yMktZVkpBMy9YelNFZ2JnbmVneHFxTk9CaTN0ZG5uMnRKcUZPV2ZzV3JIV1MvenY3cTJVMEhBbVNIY2IrbnR0bHNWTGpNalJ3amFPZ0F0UmVqM2RFdlNQVkZ3L2kwYUNLMHhNUWJMS2hXYnh0UUNCa2xmRmFZVkZMUFpaRTBuM1MveGoxQlBUbUZkYVVHeVpSWjI2UURHaE9Nc3J5MGpXVm5QN0NKLzcxa2dCMVBZekxOSVQ2N3N3aEoxVEVuSUFMY1VzKzVKbHdKdTdteFRSVTRXWEFuQlAxM2dlNWdWamoxTmFKNjh3dWFQaVZoN0FkNlVQV1dnUjZ3TElQblRVZnRGajBwNlZYU0pQdVRlYXdSUlE0YzNjclhlUW10Q0hDcFVnWEtWb3RjRGR6V0FUVG5PS0pWeVAybUxPbGJNaDV2TTcrdTRmTDdNMTZ6ODdTSkVIVFRUbW0rSzlOSE5wbVNtd0piaGFzWndkZ3gvQWQ2VVBXV2dSNndMSVBuVFVmdEZqT0lpaEYvQzMxZ3NLNEV2dHV1c21Vazg5Y2NrQVA1aXZtcHlHUkw2NnhLVDNiQkEvNTRsVk9pclZ4clpRQi93N1RTN2wvRWUvMm8xS0VVTDhwN0R0by9jNXNuUUpsQ1NVZkRERE91ZXhtWGpBT2JRZ3MzN2JMRHlFNzRZS0tiTFJkd3hKZUVrQ2pEZHdMdk11Skdyc0NPejJPdGpBUElRVGtqQ2hOSnlXQ3pTRWR6WEtMcUlnUksyaXBBTUZnS1J2bFJiYXNIUGxSdXNTZzBwUk5WVUNRWjNYUGdsM3FUSWxhTUhvYkJRUm5QMDExdm9oNXk2REJNS0MxNmxZTkQ4VWZteWdjbFRZc1pDZWRlcDdVbG9EcXdjakhhNktIOFcxV0ZaOURYeFAzV3ZZRjBSRHJZVGI0am9RbUlWVi9jSm5lZDNjUDJVcnZwbHI2TG5kVHJrTnFCWUFwSzRGL0o5eFpsOUpQdzFNcllJMWs0VXA3R01VYWFjWHR6MmlsRFBGNlR4UEJiclNDeWlNVHZvRlp5cnk2UTVtNDl2Y1ZLZ2tST1AvUEIxMDZ6Z3F6VmtYRC9WUzkwM2ZCMmxEdW4wcDJ5T2RFaC9Dd2N1RlkyTkVVYUR1SU9yejVzbVp1THZJWG1XT3BFWFdpR29JbGl5a3BuSGNtbFpaSGxKcFZ1dm9VejBHNWtQWmhtL3lwMVp1YXlHOGE5cVJvclZYSXQvaGE5NEtjMndmVGN2TEs4dEkxbFp6K3dpZis5WklBZFQyenVaaEZxSFZGUkpVY2owTy9lVEdMbDNCWUxWUERVUWFMOWZIdDM1U3Y2bUZJaTJFQlY3bGZrcGpsU0xSWFFPOUN6d3M2N1RTa0o4VUh5d0drdFNUSklISWF3M2dYa3FBbzBlandKWHIyMktyYllmSjlHNVg4OVBtQ0hpeXB6R0pBbzAzY0kyMHdMMkV3VzNqVGVZN2IvWVdZQ3Bsck5xTUNFbjhHb2s0bjZXZmIvbXZjM3VpU3oyU2RtNzlVaVhqSmpmTDMwNWhVMWIrQkhqeDJLclNDS2dFVm8vQkdSWVJ0L3V0eWt0cmk2WkJlSEJVTGFuZzZyeSsvZFJWNU4zRXNEdWJKUlg2SURaUHpqOHR3UTZTY3Zrdm40Y0tDMVFaK1RwTVVSck0vUlRoQk1FRVRwVGZxeU80Wk1helZzYkllUjA0ZUxHMnFaYmxHWHJUdjRVRWF4VDNKeWh0TkdaZVNoYmcrUGQ3OS8yNDN6WGJWZm1aRllwVHJyMmE0YmVNWnR5eWczeWFUTjl6dVJpcjRMVnpvbHRWZHVxSXBSV01seFdmcit4QnhQQlJSaFpBQUxlTVVBZ2I1eFVEejFTeHN0Y1l1Nm1yZkVoUGk4K2pqK0dka0tiaVFtMlZ5YzdkSlpWUDhVT1E3RHZheDk4VG8zanhRQUR1OWJ5WURpUXVkSCtMbEdidHJQUGsxQkc1c3RKMVMycC9ubVJYWjRJT0FOTG9FRG4yelNCRjNETUM2ZHM3NmpndjM1YjR5RlR4eXl2TFNOWldjL3NJbi92V1NBSFU5aFF2M3Jzd3NCSDVZbk5CTyswMS9Cbk9sREw3RHZ6enNPUW5LKy9iQ2M0bjRXRXhyaVM3RExDWmR1aUVPSmtYTXZmeW5wRXIxZE04cGtPNnc5elkrVHN0ZmdENGNRa3BUSXk1WStHeXBTbkhvRExpblIwaWZyU2p3QlJ4OC9jWW5NNlVNdnNPL1BPdzVDY3I3OXNKemlkeVM2bGJ2Y2RZeVU4YjhHNkhhejJTYXN2ZzVGZU5WdW1tY2Vpam9pOHpEVjF1SHpscEo5YnVVQWJtTFAxTndlTmV1cUs2WVZ2cDZ2Q2VFNEdoZkh5SFlLaTl5TVg5Nng1aCtLeFBXUUJObHZUdjM0YkpHd3NoN2NVWVh5MzF3WlRPbERMN0R2enpzT1FuSysvYkNjNG5pY2ZuSXJueW1NK1JoY1ZOZlp1dXUxNVJWeUdhNjRLUG00NVFLQVdldTBuaFRCRFFZd0ZGc0gvOVRaTVJOMmxiSHQ0WWgvY1ZFaDNIb0NZRmoyQWdNVW9iOEtuMUtWaURPc3ZlOGptaDY4dXBVaG1INkk3SGVYaTFZZFRIVWo2SmhuYUZuUDJsb0FEM3JuSkVKRlBvVktKZlB3aDJHa1hEN0ZxRjUwR1I5R2Jqd1g4ZmJmall3b3Jka1hzMzVEb3BBODgrWXU0K1Niemd6SktFd2lKZnExb0pTOENtZWh1Y09zTEZyUlRXbW5xQXpCOEQwOFRZdDRMb2xCS21PRkRwMVhWWFNWcW1heHBIa3h6c29HOTdocy85cHdXNVRsS0RGdWF3RiszU1BndGg4YkJsUXg2aklhWGVSb1NZdjRqN2tqbmhjenEvQkYyK3B5ZkR3U0FqU0JqWE4rQTRrNEY5NUlIWCtlUEV3Rnp1SnRtVENMZjl2VEF4V0U4b2NTNWVCUGVPK3NENFF3L0IyLzFvN0ZCaEJ5WXN0b0QzalRiK3N4OGdZL2M5SXZ2cjNLT2paZ09TRHpUdWZ5OE03VlhoUHUyWjdQU05yTDkva21BNnlzNXYxdEttK2pRYXd2My9RSFg0Mko5eThoQTJ1TGtGYU55TzRYeENWMHVyVHBpRVdjR01NcitsT0VKeWQ3K25ObUt3ajhaREVWK3pQbUxITGxDSElCdE11NHZMSzh0STFsWnord2lmKzlaSUFkVDJjdkk3Y09OT1V4dm5uL2hlMUlFUGs2WWFjajJyZTNoS3NybWNJOCttTzRqTEs4dEkxbFp6K3dpZis5WklBZFQyVm9UNVBYN1RuVm9MMzNLZXFyUjdicWN6Ri9GN2hjRS8wNEhsME4xdklzMlY4RlpRL3VoY3VTYnNOamN4QlFiL0huSDk2K3ZQL2wvYkgwMlF2M3RWaEhRdjljRnVxSlVFYXNyVHl6Q1hhMElyMWprTEY4L3JodmpjcTJqeTZpMTVyNkkxN2VpZkNpeStkWVc2cjZ2UVhXTzlwWWJPMnNuaVhYMnlUeFZzb2tFeVRMQmc4MVVEL2NDY1NtZms2cXV3Y0dRdHF6ejlTYnE2MjRvcnlRNnUyWkZZbm81LytGcWJoSFJxdk5wTGV3SUVRc0drbGprclNEQ0E1TlpUb2FjOTVFNU56ZWh3aDhTQ2t5b2hLT2hRYTFmQ1p1SGR2VzlEZUJxVThYaXMxTHZhRVhUQncwMEdnZG9LT09DU3FxVldkdkdoS3JMSWp5YTExeUJwMkxNdHpPcnM4bzMvOWtubHhTVmFFUnlwV1pkc3BBek1zRXlqeXpnZ0lUUGpaVFQrdmtCTXlkd20wdTY1TkxlU2plS0lmZXgyNFROMGh1bjBIbFdpSFFJVSszWXg2WXByaTF0RGh3ejM4M1FwaEV5S0ZodzBoWmcxcjdsR3YwbnBVb3B6UXZ1U1pjQ2J1NXNVMFZPRmx3SndUOWQ3cGdvUm5RaHVmRkRCeUVkL2prMEtNK0Y1K0U2azlKVnV0NUFxcXFJakRxTlRpbGtUY1pjaDN6MStZbk4zWXNIYlArQWpXSGpWY1lxSE1QZU02MXVpcWVRZHFQQlJVREFLcUh5WHpFb1J5TEpDR25uMzUwdWFJczhkeFB4WGNnbzhSLzRRNmlNcFlUYVZISU9wSEpuV2hKbUlyeDVIMmJjTGJmVDUvUW1NSU1XNUxnb3VzMTV5L0FKclIwblZtZVZjTUppeFVyOHhCOHdPYWVzcVlhZEZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlrT1lvZ2d1bDQ0eklaNjFMcm9GZ1hLR2RvV2MvYVdnQVBldWNrUWtVK2hVUGJWYzA4MGFra2hMWE9yN2NnOFZFVXZaYnowSFg4aFBGc2FiVUQ2cithMk1MbDBGTnlaMkVIWWtWN3pBQi9XTkFFWkxxM2F1ditwN09idlg3cy9wTGxSNFlnS1ZDUk9CVnhsTjhnM1hXS24zNjlOMWpsb3NxUkJkRE1mSkJCYkRUemNrODgzRFlKMk5OZFZRWWpPcWdzYktubHE4WStQajI3ZDV3QythWktTNUMvN0NlU3U4ZnJJZ2JnaW5oZjdRK3cyMThoOUF0S1RYQ1FpbGdldVJMSTZvZkpUZFd0eUhCQ2NhTnI3WDloZ3ByUitaa1JFZXdRbTBqaW1ON25DN3l5dkxTTlpXYy9zSW4vdldTQUhVOWs4dVpFVVByQjJWMUxtOGxPeTNjODNISWNSVzRFMTZCN2xjcExIcVphZXBEaGt3b0MvTWF1UUxObzVpRVcyZXVjZWptZmdhWk5MRzFsRVFTOW9HWkJNRHhoblFncS9qbzduSll4V0docERGRTZTc2hTTnBrYyszdWtYbmdhZGZpSDlOODBBUFhJWHZ1OHFqKzc0Y0hMZk9sREw3RHZ6enNPUW5LKy9iQ2M0bmhBMDFrc05XUGlMamtBYjhVdEtKcTRpTk9MK0VERXo2cmZZbmE2RURZRDdudHMvU09MTjNTNXhVUXdGUVIvK0xUVHA3UmJ1Z1oyKzZiTXFBeVpxWWU4c3J5MGpXVm5QN0NKLzcxa2dCMVBiNXJPYVJ3bTFIZmdybGNnMVpFZzNSVW5uT2hGMFlZQnlVWVhkQk9EazdwUE1sNlMxYWw5U3JIZmd5bVRPZElNYlhKRmJWNzJCUWxqd1VLOTZHVjNhUW9oTWprMC9JK1JLZGkwODlEZ29NYndBMytWYy8vZUhxaDc3NllOZUZod2tOcTlBZERKNG4vTFJEM1d0WUpYQVN0M2l2QzR1OVFCVGZiL3ZDbU5KaS9memFlczRvSkFLdVNjMENvK2F1NlJaeXB4NUQ1akxObVhNM0Y4WVpwZzh5VmdRWHdHb3c5RjUzVFB0d0VMaEViQ2RVSk9nKzNXdkxYUmtXY3BaYWxnNEsxNTlhRU0vdndZd0NxMzRseGtTRmhsS3lUVWc1UnNYZlJMcGFNaG0wZVpTSGR1b0RITmY0WjFvZ2daR3ppa29Hb3A4Yy96cm9XQm9OL2FWS21uOHM0VHlFK1VCUWV6djFmTEJlVXlCR2JIOEpYQS81dTIxOEVaQkJRdHczb3FFdjh5SjJEY1ZkS054bXp0QjhMbW5IJylcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3nmbvlvZVcIixcInBhdGhcIjpcInB3ZC1sb2dpblwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIGlzbG9naW4gPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0Jywge30pO1xcbmlmIChpc2xvZ2luID09PSBcXFwiMVxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignbXlfYWNjb3VudCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g55qE6LSm5Y+35pivJyArIGlucHV0O1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIHRpdGxlOiAn6LSm5Y+3JyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ215X2FjY291bnQnLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICBoZWlnaHQ6IDEsXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoJ215X2FjY291bnQnKVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignbXlfcGFzc3dvcmQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOeahOWvhueggeaYrycgKyBpbnB1dFxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIHRpdGxlOiAn5a+G56CBJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ215X3Bhc3N3b3JkJyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0VmFyKCdteV9wYXNzd29yZCcpXFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOWkp+S8muWRmO+8nyjlhYjngrnmiJEp4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuS4jeaYr+Wkp+S8muWRmOWIq+eCueehruiupO+8jOWQpuWImeWQjuaenOiHqui0n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXN2aXBcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6huWkp+S8muWRmOOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOeZu+W9lSjlho3ngrnmiJEp4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwibG9naW5pbmdcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoXFxcImxvZ2luaW5nXFxcIikgPT09IFxcXCIxXFxcIikge1xcbiAgICAgICAgaWYgKGdldFZhcignbXlfYWNjb3VudCcpICE9ICcnICYmIGdldFZhcignbXlfcGFzc3dvcmQnKSAhPSAnJykge1xcbiAgICAgICAgICAgIC8vIFRPRE8g5ZCQ5L2s6K+06L+Z6YeM5Y+v5Lul5pS55oiQICQucmVxdWlyZSDnlKjms5UgICAgICAgICAgXFxuICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiZHRkMVAzZFRFSVRvbnNnck5GZm9CaWdpNWxqYXowUGVHbWJtTWpqcjlINW5mdnNuQnc3SkZwMzdjbjNlZ3F1MHkvMHdUVzJvVTdxdE13UUlBaUxoRVNWS0JsS2tSdlcwcG5QRGRIbDdQR3d3RFQ1R00xdkJzb2diN1lEcHdtd1Y4cnR0YWQwTzVZSkJ2cGpYMjloVUJwU3NpYW83bDNVZWJ6eE5BV1lpajdZd0hXaHQwalZiaDVTTDdQWFZvMTQ5ZlBTVHV4bDhBK3ZMVVdpKzJXeEdyT1orUXZ0cllJbjI4QnFTOFBTN3pmMFIweXI5aFh6amJNT09YMkNPZFZZS1BkYkdzeHprbFY1WDJMTG1LYlBnRWZRRWxDZ01acFl1bmUwSThPeUk1NUhMSzh0STFsWnord2lmKzlaSUFkVDJkVFF2Q0JiK2lIanBSNkswTXIwZGZjL2pyVGQvK25tc21XcmtqaXR1cTh4Mmg3VTNiWm1heGtxWXJ4U29wckxpWnZuQmtTdkVvSWlxVVVPS2ltQ3kwMWYzdFJmU1FCZVI1bGdUNUEveHFnZDI4YUVxc3NpUEpyWFhJR25Zc3kzTUxaUmhTTHc1a2RTVTNZK2R5Q2E2WmNJRHhsT0dlU0ZMbUkwT0NGYnBaZTliWTduS1VPYWkzK1RIc2FGaUVFcXBkLzZuVVFGNFRaUkJnVnFqWUVGd1dKeUtBSzZEQXFvUnZCMlQwaWYyd1V2T2xETDdEdnp6c09RbksrL2JDYzRueVp4ZERmUVhONlJxQitpNk5nVGJDak5kNFRGWDVmV0J2SGE1cEhyVFNaQWhUVzl3RkE1d3NBREI5NXkrSngyWDlRazRHTENHc3RnR2NtSG05NmFwMXVXcStLOHZHRVpFYkVqa1U1MnRNUzV6ejZnbTdZaFhmOGVCWUJtRWFpTHVNZVU3NUdlMnFTNnVPb2oyMklURVVjc3J5MGpXVm5QN0NKLzcxa2dCMVBZWk55blhMbDF0Zm9EWTNIWmdQYWtmNkQrQUR6UVlxeHFSS1pDdGxOSXlhOWs4QzRIN2ZiaExEWGRXQTNvVjV5VU9nYVNYSzFPTTQwRnhOeU5YcEEvWktTNmdZM0IxL1YyK3pweitRN0NtdWU1K3FhTzBYckRQMTVoalM0YnhuV3JPbERMN0R2enpzT1FuSysvYkNjNG5YeGVrdW9UVlVSWTdlaCtkSUY0UU9hWG1iTmpZTmtpcW5BZDg1RnJYS1hvZWdKWkM4NUI0SlZxT1djdWVpcE5hSHkvZHdBaEtwbksvNUpPN1o2eWEybHMyL0p2UE9DUDkxZTZnNEhPK1lxRXBMcUJqY0hYOVhiN09uUDVEc0thNW5wcmJrSVAya25EWFhxdE1ZR1JkY2lnZUlSeitPSG1uS0xtLytXQ1BhMDYxOEVxdk1zR2c5ZnB2dFVvMi90bTBSellZaThrdUZHb3BUeW9pa0R3aTNjc3J5MGpXVm5QN0NKLzcxa2dCMVBhMUFEa3ZpdmtuY0VoUFdQNHdYQ2FUd3dwWjBHNitZVHZ5cDY4dGhGZEFMNXh4OStuVWE1aldtSlV5eVErcjFVc0Q1c01xaW5ZNWIvZURVbnhSS0tCVHpwUXkrdzc4ODdEa0p5dnYyd25PSnlkSFBNMmFoNzhlQXR0U2FoVkNFYi9sM1pxaTJoRmtpWko4Z3hQQzBQWTcvcXQyTjBuOGxIRDgrNzJLVFVESXF1WDU2NUNJUW5jRFc1S2ZYVVpMT25aYnM2UlRxUjAwTHVQSEF4UElIaGlhYmprTnZTVlFPenYzYXdlcmFtZVNPOHNyeTBqV1ZuUDdDSi83MWtnQjFQYlpmQUErN2crWWRUTnBldTlMUlJvb2lGd1YvOWN1NUhwRWdaMlg2d2FXZG9vWTFnNXBDWEtwTXUvZDdjM2hkUWZMSzh0STFsWnord2lmKzlaSUFkVDJZOTZza0J0Tmx2TkF4NklHcHpLTjhlTjBPSkNtMklxc0pKbkhYSmQxZnJ5Q01tRUNGRWVhVmJwdUtHM1YwOXdBQzdTWWk3ai9iQ0IrREMxMUJTYVp2OEIzcFE5WmFCSHJBc2crZE5SKzBXTXRaaks0UWxmenNNdGdHcWRubC9EK1xcXCIpXFxuICAgICAgICB9XFxuICAgIH1cXG59IGVsc2UgaWYgKGlzbG9naW4gPT09IFxcXCIyXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzlt7LnmbvlvZXvvIHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k6YeN5paw55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzbG9naW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbn0gZWxzZSBpZiAoaXNsb2dpbiA9PT0gXFxcIjNcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOS9oOmcgOimgeWOu+WuouaIt+err+aUueS4i+WvhueggeaJjeiDveeZu+W9le+8ge+8ge+8geKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXNsb2dpblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufSBlbHNlIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc54K55Ye76L+b5YWl55m75b2V6aG16Z2i4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc2xvZ2luXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifV0sXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIuWTlOWTqeKEm1wiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvc3M3NzkjaW1tZXJzaXZlVGhlbWUjXCIsXCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwiZmluZF9ydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxuXFxuZC5wdXNoKHtcXG4gICAgZGVzYzogJzI1OCYmZmxvYXQnLFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcbn0pO1xcbnZhciBiYW5ndW1pID0gZ2V0UmVzQ29kZSgpO1xcbmlmIChNWV9VUkwuaW5kZXhPZignYXBpLmJpbGknKSA9PSAtMSkge1xcbiAgICB0cnl7XFxuICAgIHZhciBhID0gZmV0Y2goTVlfVVJMLCB7fSk7XFxuICAgIHZhciBiID0gSlNPTi5wYXJzZShhLnNwbGl0KCdcXFwiZXBMaXN0XFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsP2FpZD0mYnZpZD0nICsgYlswXS5idmlkO1xcbiAgICB9Y2F0Y2goZSl7XFxuICAgICAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge3JlZGlyZWN0OmZhbHNlfSk7XFxuICAgICAgICB2YXIgYiA9IGEuc3BsaXQoJ3ZpZGVvLycpWzFdLnNwbGl0KCdcXFwiJylbMF0uc3BsaXQoXFxcIj9cXFwiKVswXTtcXG4gICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPScgKyBiO1xcbiAgICAgICAgfVxcbiAgICB2YXIgYmFuZ3VtaSA9IGZldGNoKHJ1cmwsIHt9KTtcXG59XFxudmFyIGpzb24gPSBKU09OLnBhcnNlKGJhbmd1bWkpO1xcbnZhciB2ID0ganNvbi5kYXRhLlZpZXc7XFxudmFyIHAgPSB2LnBhZ2VzO1xcbnZhciBjYXJkID0ganNvbi5kYXRhLkNhcmQuY2FyZDtcXG52YXIgcmVsYXRlZCA9IGpzb24uZGF0YS5SZWxhdGVkO1xcbnZhciB0YWdzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkyLnR4dFxcXCIsIHt9KTtcXG52YXIgc2V0dGluZzEgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkyLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5q2j5bi46aG16Z2i5YiH5o2i5oiQ5Yqf8J+RjOWPr+iDveW5tuayoeacieS7gOS5iOWPmOWMlidgO1xcbnZhciBzZXR0aW5nMiA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaTIudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/pmpDol4/pobXpnaLliIfmjaLmiJDlip/wn5GM5Y+v6IO95bm25rKh5pyJ5LuA5LmI5Y+Y5YyWJ2A7XFxudmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIGxpa2VfdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvbGlrZSc7XFxudmFyIGNvaW5fdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvY29pbi9hZGQnO1xcbnZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG52YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKycmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcbnZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcblxcbmlmICh2WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICB2YXIgcmVkaXJlY3QgPSB2WydyZWRpcmVjdF91cmwnXTtcXG4gICAgdmFyIHltID0gZmV0Y2gocmVkaXJlY3QsIHt9KTtcXG5cXG59XFxuXFxuZXZhbFByaXZhdGVKUyhcXFwiWFVpRlQxdlhZV3JVdytWaHBucWxnME4wdkFXZ3BnbGg4TWhaKzl2UEQ5OU5KNVZnZUZkSG13YUthd0l5NkMwaDZGRlFoRVE1UmhKbVYwRVFIbkw5eHliUEhBY2hBTDdoWkVaZCtoYkdIVjVqZUcrbks1UTNpZTc4cHVHRGIxVEo0ZkFJN2c2ZXpMSWpRTUJ4Ti8yWE05MllOTlBLREhkaExJTVFHVjY5TXE4Y1RPV2pLcFpRcDAvdmdOdXhhUFFLRXpTZEhRSnVlN3RUeGRTRXZEdDNzL3R4ZEVoL29HekZDQ05XZVpDVVU1M3poRWhDMDZxNlpGalpDTStkOEZzWjVjWGxOSmVtdGVnTWdKVUxkVHFhVmRSd1ZoVlgrMXVCUTlOeTBEcHNOR3gyTHdIZ09qbHM5aHcxNExoRXF0aEVlNzN5UEJHdlNnS0VCZFNZZ0c3Y0s3aFlWVEVOZUdUaVJBektQUTdqR0VxRUo4YWFkSE9IQWVTYTI1YUJiemM4MWhoeGdYdGlhbFg4VXFlcG43azRnMkdrc3FvRzNKVkkrcVRmV1p4UFdxTk0vMGpVWGJyVVRDUlpucnpHVm93Nk53UFFYS3EzQ0RLbDlpK2FadmVXejVJZjVFTkVaR2lXbFc1ejRhSlNFY2V4Q0RzaVpsbzEvUUpJajJyV29uRTB1NTRhaDIvWlovL1pHb01CSitkMTlHbWVwa0xCRDNuMnFvZ0tualpqMnJqV3FnUGFkRWVlMVpJaFozU0dibVRsSmYxQTRCWUl1dVB3djRkR1pkUm9EVzY0QmhDNWp1Q242d0RtN1lteTdCWGYxc1FhRmltRW5yU0lpSEdoTStXS2czSXlXZWN1aC9HaysrTW1ONkF4eGN2TkF5cDhiQzRoekJNdlpKL2w1dFJ5YXBvbWRDVjVCcGlYZmprV1JuYm9wSWpJK1dLQjNmQ2FZeVJkZU5MRVJLbkVsc2NEaXo3VWVuTHByaFljL2E0THNHZU1NRlZaOFlvOC93R1lIMzhKXFxcIilcXG5cXG52YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW8vJyArIHYuYnZpZDtcXG52YXIgbW9kZSA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpLnR4dFxcXCIsIHt9KTtcXG52YXIgbW9kZV91cmwgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8sIOeCueS4quinhumikeivleivleWQpyheX14pICdgO1xcbnZhciB6bCA9IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3BhZ2UnLCBnZXRWYXIoJ3BhZ2UnKT09J+ebtOmTvic/J+WFs+mXrSc6J+ebtOmTvicpO3JlZnJlc2hQYWdlKCk7aWYoZ2V0VmFyKCdwYWdlJyk9PSfnm7Tpk74nKXsndG9hc3Q6Ly/ngrnlh7vkuIvmlrnliIfmjaLmuIXmmbDluqbwn6SfJ31lbHNleyd0b2FzdDovL+W3suWFs+mXrSd9XFxcIjtcXG5pZiAobW9kZSA9PSAneWhjJykge1xcbiAgICB2YXIgbGF6eSA9IHloY1xcbn1cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogdi50aXRsZSxcXG4gICAgZGVzYzogJ+aPj+i/sDogJyArIHYuZGVzYyArICfjgIDnsbvlnos6ICcgKyB2LnRuYW1lLFxcbiAgICB1cmw6IHRhZ3MgPT0gJ3VwJyA/ICdmYW4nICsgc2V0dGluZzIgOiAndXAnICsgc2V0dGluZzEsXFxuICAgIGltZzogdi5waWMrUmVmZXJlcixcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAnICAnICsgY2FyZC5uYW1lLFxcbiAgICBwaWNfdXJsOiBjYXJkLmZhY2UrUmVmZXJlcixcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2d6MT91cmw9aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vaDUvZm9sbG9377yf77yfdHlwZT1mb2xsb3fvvIbvvIZtaWQ9JyArIGNhcmQubWlkLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAnOKAnOKtkO+4j1N0YXLigJ3igJ0nLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyBjYXJkLm5hbWUgKyAnJiYnICsgY2FyZC5taWQgKyBgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFwiJiZcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcblxcbmZ1bmN0aW9uIHJlcXVlc3RfYmlsaV9hcGkoYmFzZVVybCwgU2VjcmV0SWQsIFNlY3JldEtleSkge1xcbiAgICBpZiAoIVNlY3JldElkIHx8ICFTZWNyZXRLZXkpIHJldHVybiByZXF1ZXN0KGJhc2VVcmwpXFxuICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSlcXG4gICAgbGV0IG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xcbiAgICBsZXQgZGF0ZVRpbWUgPSBub3dEYXRlLnRvVVRDU3RyaW5nKCk7XFxuICAgIGxldCBzb3VyY2UgPSAnYmlsaS1hcGknO1xcbiAgICBsZXQgYXV0aCA9IFxcXCJobWFjIGlkPVxcXFxcXFwiXFxcIiArIFNlY3JldElkICsgXFxcIlxcXFxcXFwiLCBhbGdvcml0aG09XFxcXFxcXCJobWFjLXNoYTFcXFxcXFxcIiwgaGVhZGVycz1cXFxcXFxcIngtZGF0ZSBzb3VyY2VcXFxcXFxcIiwgc2lnbmF0dXJlPVxcXFxcXFwiXFxcIjtcXG4gICAgbGV0IHNpZ25TdHIgPSBcXFwieC1kYXRlOiBcXFwiICsgZGF0ZVRpbWUgKyBcXFwiXFxcXG5cXFwiICsgXFxcInNvdXJjZTogXFxcIiArIHNvdXJjZTtcXG4gICAgbGV0IHNpZ24gPSBDcnlwdG9KUy5IbWFjU0hBMShzaWduU3RyLCBTZWNyZXRLZXkpXFxuICAgIHNpZ24gPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShzaWduKVxcbiAgICBzaWduID0gYXV0aCArIHNpZ24gKyBcXFwiXFxcXFxcXCJcXFwiXFxuICAgIHJldHVybiByZXF1ZXN0KGJhc2VVcmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiU291cmNlXFxcIjogc291cmNlLFxcbiAgICAgICAgICAgIFxcXCJYLURhdGVcXFwiOiBkYXRlVGltZSxcXG4gICAgICAgICAgICBcXFwiQXV0aG9yaXphdGlvblxcXCI6IHNpZ25cXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxuZXZhbFByaXZhdGVKUyhcXFwiTDdBdko0MUMrK2tsbEJNUEc5SlJUVXpRdkVqSlh3UnJmUmlKbUVCdWZVVHBMcGh3aGw2bTRxRWZKR05GY1RxdkROb1RaaStYV3o4SHh1N1UyVTU3c3NBb0JNZm8vZUE2OHp1VkRrWDgvTVZvcGxUek9xalVPNlY1cEVMWFlpRldYUnhGMnZvM1Y2cTJEQ05zWFJRMHl6NHZoMVRxeUxHbVFhS1pSRlhweTVBUWRLUlBrLzZVcDl2czk5YnZhbDRlVElZSnFZWWZZcytyUG14YUg4bWkzMjRBOEZaN1A2Rkp3ZStRb0EyN1lWK1cwOTNkSElVLzhHaG9VL1c2a3EwTCtnaURLQTRYTzNBQ0NFcTlraXFXTi9ERDVZaXVPSVdCdzFnb3pVZ05Ld1dRVGRGZ0xzTVpOay9qM1dBN2hLb0ZnOFNHREV6dGJCRGhmZ1d3QWJwUWlWcS9Lc2UxU2Vob0NTN3ltMk0xRWFoSnR4U2JtTE80RWd3d2JNL2dzTnhDbEhyZDdzcDMxVys0K21CTjZ3bnBZS29yYVZsa1NUNWlUU3VMYTI3M2NNOU5ubU5mZlIyOVFHZys3eE9XN25xOHkwSm41L2JQTDBCU1o1QXRScUxydnJzNk5YOVFhWFRpeVlDUVJVL0dSa3BzbzRkNkhNdktNTFdhaHhqT25GQ1JtdU1CK2tHNUFYNFJ2Y3JxVnh6TmVBSnVLQzVubEVmWGpEUlhvRTVsTThVS2JLU3VOZFJqSFRQRHBpRzA4Vm5yajRNZnExYVdvRHNuZFBZVWlJSjVPU3AyWlpMTzgrS1lJVmVHV3lJVlFhK2Rpa3JFUzcrYW5FVWJPc0xDeGZmZEFlVEtyY1RXNThVNmlsYUtwSUdabUFKSkk5NnFLOVpSc015TXVZWm5RRTVHcEtleCsydDR3OVk1cUZkd2lEMWRMNWFGb2o2YWVmY1pHR1Z3L1k5Z1UrWXZscGhiSVJQNlNFSXNsVjlhSC9xTkxQcms2MFZmdkxPbE01NU12bE1adHlOREpCZkNWWll2U3JBSFlIeDkxVjkyaG1PWSswUWVWRVVlQUxsK0hBVjBxdXRJRVdyNWVHZU05QlRZZjhwcjJCNm9oNTZMYXF6QVBYTlQyeWJhdVFrR1Z4YXN4QzBzN2RUZGc5dXdiaWpHRWt0b3hoSWwvWERkUk93L05TK2pXaUNRQVZoRHN0UDB3MmRUb3gxSFFGdVQ5V0J1S2pNU1pMS05mU3FKUzZNZzAyNkxDQVlZWURxbUdFMHlvNWx2UkVtYkdTd05Tbnp3S200cXdwV1pyQXBJYUFmcm5wbHRSb2R2eXdFdHRGK2JnWUZXQlhvWXQ1QW1DblpuRjZISzV4bVFhV1RNZnBsajZEekUzL1BDQWQ5Y0Y3Rzgxd0drRGFKaDZ4bVhFTXpEY29IWmRDeWJYN0oreHQzMWNjRlQyNTJ4KysrS0pRWnBZeTBQNlY3Y2lzcnhsRkc2U01YR0xNSHJFazk0K2NkOSthY3A2M2NxYlIzWDBJUm5JSlhkOVVQRnRYa3A2dkRVbEw0eVNqR0NSdldVSjkveWVBaTU0V09KWG4zWDRUK1ZzY1U1eC9aL0x5cm9RQWgwZlExVlxcXCIpXFxuXFxuLy/oh6rlrprkuYlhcGnpoblcXG52YXIgbUFwaSA9IHtcXG4gICAgYXV0aG9yOiAnJyxcXG4gICAgdHlwZTonJyxcXG4gICAgaWQ6JycsXFxuICAgIGJhc2VVcmw6ICcnLFxcbiAgICBzZWNyZXRJZDogJycsXFxuICAgIHNlY3JldEtleTogJydcXG59XFxuaWYgKG1BcGkuYmFzZVVybCAmJiBtQXBpLnNlY3JldElkICYmIG1BcGkuc2VjcmV0S2V5KSB7XFxuICAgIHB1dFZhcignYXBpJywgSlNPTi5zdHJpbmdpZnkobUFwaSkpXFxufVxcblxcbnZhciBhcGlJbmRleFN0ciA9IGdldFZhcignYXBpSW5kZXgnLCAnJylcXG52YXIgYXBpSW5kZXggPSBwYXJzZUludChhcGlJbmRleFN0cilcXG5cXG5cXG50cnkge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciBwYXJ0ID0gdi52aWRlb3MgIT0gMSA/IHBbaV0ucGFydCA6ICflvZPliY3op4bpopHml6DpgInpm4bvvIzngrnlh7vmraTlpITmkq3mlL4nO1xcbiAgICAgICAgcHV0VmFyKCdVQScsICc7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFxcXFxcXFxc77ybXFxcXFxcXFzvvJsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNu+8hu+8hu+8hu+8hlJlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvfScpO1xcbiAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiaWZuenFhTnFOUmtONk5xRzBmWng1TWV5NDc3T3NNSk9UYlRkOVNhak1rZjVSNU8zOTZKMjJGeGtiUWJrWFhDcGdnZnVhZDVvKzNwOTdMSFdiSXB0b3c0bytNUlF0YVAwLzh3aXlKQ3JaQ2FaWVc2NHdVMUI2MHhSQlF0YmRKQ0VnUnVIaG9ac2JHQVpCQTQzL1RYeEd3SWtDY2tiVjZuekhobTkzRGs1RGlDNUk1SG4rQ2ZpQk1FNHlRbzM5T1VKeTNwR0FXbGpEMXNucHpHaEJqMWIzSHJUdnlrakZhU1BnblMvTVVkSk1mMFFaSVNOR1U4ejVvdmFuUHNIK0Y1V3NRZ0hnSXF4VzlldlYzK3RneWZMVWRGUjBONERsdExZcnc3dkNQZ3pQUVgvdndCTVB5NlljVnRTVktqYjZRekZhdVROK0oySVJZcnBheTE1YWtBa29mYStZeC9mTlRlZjQrNlphVnptWGVaYUVhajBiUS9IUFppYnhUejNTK0RtVVZkZ1l1MEhYTXkwQ0ZDWFN0MytlT1VOOWMrRW1WQUxyTk44T3FXclBla3J2RjFxTjFVS3Y2a0JjQkVQL1N3a3VmczN2TTA3Zld2L1JOSllCN2hFaHNvSXh5dkhRT2lQWUNURCtlVXMrZmgrVTliUlJBVXpSU2xYQ3poV1hqRGZDSmpZLzlCMmw0UnBoL253b3BFTXFpaTVwSkNKVVBUYy9INFVmdzlGT0xabXhNSGJFaVdmZnAwcmdicEhvS25Sbnp3WWZnL1JLN245ekxBZEdBSy84dUdhMHNsWjVJVDFYVWVxclBzQ3F0M01INUcybXl4QkRscUQwWVFVYjZOV2hJN3BqanBpbjZiVzJ0aHd6SDROVC9UcDRDV3BIbFZ5Y0JWV3NTZ2hHeVNCRVFScEJRS0xPVHYxRXZPeGdGeGg5R1ljdTlUNldQdWZiRW5EZy9MSzlyZ3IycHdvSTNZSWowcDJCYkJtWDd2TWhQeEtLTHB4Wmk0M0p3VmY5SHhuMzFOYVlRaS8wUzF6VENnOVMyNnRVZ0FxNDhyaStFaTNNSFVrSTZXc01iQTczTG5mZ0JqNzdEQWxRbDVRT2tVdi9wSGh5WWxpaVEyWFlhWXhTSCtoRzQrdEErSzZ1UDBoREtlUUxrL2Y5dDdpKzZZTzBVKzhHaS9Yd0hBc3Q2Q0w3SS9LaUJmRlBuTllMeFpCeDlFMHNRZXJJKzhZS0YySmZUb3R2SGZjOWlTZjNMZUFjVXpXeS9Hc1lyMjBxekUxKzJocVVueFFicWlFamxhTXFlci8vUW81OE93K0ZtcFFwMXd1KzdoZ2ZyNlJrSzRZd3hrZXdlWGhPUmZDQk5xSUJKenR3WjFmQjBtYnBSTjNja256RGljcmFtbTNqV2tEaVl6Zi9KTTNoWXMzY3J5bGRHeVhxcjI4SjZ1OHhMYVNEWEYveVVRd2JTRldKTXN0NCtpalMzSDdEVTV3WWpna2hFemhCVkt4NzI0TFVta3BVVGFSVGowMEpnQ01zbEhEeXl2TFNOWldjL3NJbi92V1NBSFU5cTJDWVI3QzlDSWtHdUkwa09LSDBud0tLaTF4V2Y5WncxaXZnTHhrVWxPRUlGTnBROFhkNFJ2aWpqR0xyeFFSMnptc3JxTGpUaGpwblI5cnlsMnF1VG0rSG11aWVqc0dNV0dJWEtreXBkTFlQbnZjSGZIMmNsV2dVNzFWSnhXcno2S2s3TGpJR3o2bUZvajQ1Wlo3Ri9qMXRqWE1oOGxyWUJsS2RYanpsRGNzMmhzOUo5dUFjeEtXalJYbXk4dUtDNFp1N01mVkswa2NEZnZ0QWZja25lblJnd2haRktwU0h5Nkg4ZklsMFduSFBiVVNONS9RMUlpazhrYWFDME1TYlI4S1Y0NnZoRWV2UWRQb2V4WDdDanBTalprRkFLU0YvMmt1RFh5R3N6THoyaE5Pa0cwaTFCbWt4aGpjNjMvQVFseUtpemszME1KQmZOUFZFNnk5cURFc2RYbUxNc291SDhwNzBIeUgvS29lbHlBa2krVWZkbEtRTmoxN0hvWUdTaW5Ra2JiMmlGV0c5TkRPV3dyajhaUXVYVGlOS1RYSk9ySDhsVDErMTY0RUdqWGU1K2Z6ZlVtQU0wQ0xSTVRSL05xNXpOVmdlOVBGL1ZQTmZVMGROVmNvTG1ZUDZEVFU1T3pnMGJzb3gxYThTZ25keEZSOWJTTlJ6Wm56UEdKbzZIS0djZmJWYVNVRlFDVGQ2VWJ6VGRjcExEVFFxdVp3UEZiZGRTb1lqZHNGdWtuUENFMlVwNnJrL2UxZGg5S3I4bWFFOEZZOENPbkJ1N0IxV2RQZHl1V2V6N3hQdHNoekFJd1Jla0lPbUcwb21TbGJ4dVh3MGI5V3RQQVhSTVRlUGdhYkR1OEJyejAvNHMwZW9CQ1I2Y3ZYaXdLQVg4REZJOXZ6NGZudXJOTGQ3aFpJa0N2QW5UM1J3L3RTdHNTKzhyRlVtRzAzaWFRbUpuM3lYYWladzFNU0hrUlZxV3REWjh6U0FrcnFvWUE3UTN1eVhkSk02TXFDWEViQ2ZnWGxnUDRDQThnTHI4dHZ3aDRuWEZtWVNhYUdsRU1ZQ2hoVnNQMFRvbnNneUdjNlpIckYra0gybERHU3F4TU5lQitRVE5zTkhnckVScmh4NjZ4T3lsc0laRXdMQ2V2bmZtUXAvQ0x6NE1jQ3QwRld6aG5KUTJOQWg4MTFtT3diNDJpM1hPam50a3RIVDJ0UU1RUUtCZ2RUbllqR1lLdzBCNDE0MXVlQk5hd0dhWjNsTGFYV1Q3WXVHUWFGS3BYZHprbWk1c09kalZSeVNralZwQTlZZEVhblNRNTY4NFNqTFozQnV0V05reElwM2VReTQzayt4b2toUHZ3alRWWXBHa2JiQkdvQ004eklCRHhlcTIyTDlBa2NOWVh1ekpheS9OZzNUdVhXV0tBdjArOHpLZENSdHZhSVZZYjAwTTViQ3VQeGxDRElnVkNqVkNIWGlicXN1UDdqS3lSejN0cjluQ1pJWCsrWUNBYStaZFhLMFAyZWcxdGxKemVXZzIwelVnRWpPa25zSUZrazJ1QmZMMlVFak54ZGxsRE9JUzc0R3I0QkhicVRGT3ZGQmExalpsUGJyZnh1TlkxcS9KelNkY1ZHOTIxZTQ3T3o4ckZEUHVWRTdOZnRhMm1EZlFsN00wSlRON1RpZUJZamRhQVhQUzlET1lPUHNPVldVbE8xUXhjZXR2NWd3Z0kwZ0lWaHBhWFRJNkF5QzJuWTR2TGhmaFVaV3Jia2U2c2FHditOK1FjckFTL1hxek5WTzE4bnRiZk11ZWxGaVNuVEZTaXJZQk55TmJKMnl0T2s1SHFNSHh2TzdjRHpNUTdFMnplSkhqOFJ5dlNCbXZUcTBqQmRMQmlJQWg3ZUoreDJKb0VXLzNDYnJUYmZPeVp6K0hGUHNPN2hzeVR6S2FyRHBEdndkNkdsT0tnWDJTVmwzU1RENGFMdVhkMHZOd1ZacUg2RWlScmw4YWhTekx3QURjWU1JVUJEUndlR1kzbG50bXZDWDIxd0tWdGRlQkdUb1RLUnpET0FSTmZwR05iRkJLMHJ3cVB3SzN1WTR0aVh6aG1teUpsRDZLMm9XVTRnOVhZVzgyQUJsazUyTWxPZVFZZDFoV0hyYXdwR3BiSENFYzRpcXM4TjJTZGFhNUI5cU40VFlCM1hOTnRpK3JOSXRHZzlPcGFzdTVvZmZDRkZJYk5abWpUYzlFbEs0TXduT1c5OUNHbTQwMk1hNC9lazBsVUhQa3JNOFVXNk5DQURJb3ZDMGttclZVb3huUzBIUXhzZmdXUUlsa05QRDlGVWZPNGlKZjJmM2lUZ3p0OWhFMk9nVDJDakt3S3A4SENqdWhjYTVGY3MxU2xEbGhTQUtlSE1IOXcyVWYvbjV1UTZuQjBXVVdDTnNSdjlETjBNV2ZDeFY3Rk54VWxhMndjUEliVXRZUk5qb0U5Z295c0NxZkJ3bzdvWEdnQ1pGbHFtNzh2dHFDYmVLMjhpWHpqRmN0KzQ4dDBrYzZiRWlxUDI4S25ZRjhuQVZuRlFJMk9JZVF2S2JJSEFzL1RYbHMyNjNRbGFqZEhVcE1LWk5rL0FCS0cvK3FrVzJkV1FFOVdtUENlUE92ZFZtQWFQTXgyeTdMbjNqMjdVVlJQbElwbmlPNnI2V1AyZFQ0YW1mcGE0RFQ5dzhEa3RIMGozOVphNUtiQmpxWVQzMDhFYVgyN3hSdS9xL05YY1hoa1hQOUlEWnlSU0NjdVpreGY2VFo0UUtwSG41dnpqb3VJYWNTUE1UdGFTdHB5RkR2TkdIVCt4VjZFWXVCcTVyL2dDZDZPaFNiTERLcUh6dmNCQ0RCTE0yT1A0L0VSMnNodjdHckwySWJzd0tYUVk1U1VJRTF4OW5lSDJyNUd4NDFQMGJmT1ZwbWxMdEJOTVJFUGxNNGpUME9Kak11aEQvT3VHMmg0OVF4ZUpxVUtxQ3FyVzhyQVdiS0lxRjdESHhEMWx6MHpObTRqRWZzUzYvWUxTbFRwNHIzYytGZWREdmFSaUdTaUxuR0U4N3E1YkVkd0s3WWJuVkJZTVg2YmRDSXNLOFEwN1FKa095Y1VNZm1kQ2txVmU5N1JhQ25sYWNIUWFnMDI0ZUZuV0hHRk8vcngvdFV2VVppYzJ3QnE2L3g2ajhBSjhEMmxuZ244WDdhYUFyOVFWc25USldZVmtzMGh0MzRTWU9NZWsvaW5DbU10RHNrU3JPNytXVEVmQ3VDS2tpcDdWR3o1MkpNcTJ2enptbXlLeW8ycWE4UmhVY2N5WGh5bThXR3g2b3UrK1NpSnF1NmZNenN3TUc0VHRYL2pMUmZYMjRUOGFvWXBaM285M2k5U3hrUW8wdDNPUTIwTkgrNGxvQnJXeWt3QVNHRnFXT1gvNTU1SG5vS2pHdWhjKzZiTVZGZy9qUzNwREpzWG4rZk11N2VpZEphdnlaNlVaamgwQThLTDVyN2p6QVhuV2U2RWk1LzRQNlZwT1VIWVhLQTVzckVjekZwSFVQOVJkVjNJdWlLNzZHUHE2cGo1TTVMaktkd041S0JOWHVsMGFnT2UycElJU2Ntc0hLUE1yYjFNNDJzRGxvUlFobmVwTmlvOEFSdjBZRDJROUdKUE9jQkhVNkVUSFdZejJJaXluOVBpalpSN1lTcDJwN3lpUUJOR3FqV1lHV3U2TE1sUUlkWVJDSjlwVFJ6eHVVOHJuenh4azhQUUNENXBETVJFQzRaZE1vU1hjbWNWY0h5TUNtQVVHbWlUUitPckFDckxwZ3lkdnRMK2tNSFV0Wkh2SDRNYVI3SXh2aUhGQUVRY3p2cUo2TFVrc2kxRWRPTE1JL1JzUGNOK1A1RXhNcjJ4azE3NlBzZC91ZGp1aDVTU1lzaGZkQ3Fma285Tnhhemk3eVlJNW9sR0VFNEtpWFVxVWtGZDNxd2t2SElWVUlhUDA3NVFUMnlYd1Zwc0xUSGFEeHo2RmUzbzBoNExrbGlPOGdHV2EvaXFrRC9Ebm04c3J5MGpXVm5QN0NKLzcxa2dCMVBaWHdwZ2EwMXJEZllhVlRNVnl4R1NJeXl2TFNOWldjL3NJbi92V1NBSFU5alNJakloUmtncHhUL0tNdjZpSDhsbFdISjF0ajgvUlRDRjBDbDJmNld3VGJGSlljTWFGbG5tTWlzMkFMVk9OUHM2VU12c08vUE93NUNjcjc5c0p6aWVXTE1WYU9WRzQvZTFWUFRTQXpZOUg4N09DSlhleCtpQU9vVytLQW5yaUJ6QVZCZEZ3eVVxSWVuTEpWc1JIN1Z2M05WNzNNcXJxbi9wa3pBWHRraVVBWHdwS21WemRiZU5MbGVib2tEa29tc3NyeTBqV1ZuUDdDSi83MWtnQjFQWTNtVFJtU3RTa0hieEEvRnRjZmhiMzM0Qm96MVl1WDQrWm5wQmxSU3d5VFRFMXVHTFlmZXBaYTBKOXBUYzhZL0diRTZ6WHVhK2ZkM09Za2s0Q3BZNWhJTlZBTkdiR01EMVlRbHBjby9yM0E2djhIN3NkTzVLN1NqWjhJVDVKU0xWc3BCRlUzeXlxalBjZFZHOWR5RC9McEd4YlcyN1FCby84dTJWaHBrbTlMY013M2g4aGlwNkN6QjZUbHB3VDFUNjdYSGtHejhVYTFDK1NML0VFemVxOUs5OFZUU1c0RlB5ZWNGWTdJVWM0MEFYUG1wcUtJcXRhN1NjakFZdkQ4aFpIM2QzVTFVNTMvU29jSkhLRGo0WnYxamJuRlRzam9kalYwZkhlWU9kdDUwUEZXY094WFlhejhqZ2dkbDA0QkVGRlVrMFNwZnYyenJkTjI1NUtGcjFtNGdVeHkzS2k3eUZBUGhkS3J5Q0ovaGpUUkpRY1REbmE2eVBTZnNlQ0R0b1JrbUd2MHlOZEUwYmk5YzRwV1BRZ3JWaTBRamR6SDI1WDBObkpBa2w1WVVpa1BsbEZaWGhuMmRRekxtTWpLUDJSSzZMS1JBNUFwSGdPWFpXbkd0MEFtY2ZVeXV0dzBHWVJHOWV3b0tBWVEzOEp0S3ZSc2RWSWk2RmM0TXlqZTJCYnd1TG90K2w2WXh4UDJGZWtVa2tpOThnYlFxMENscHZiaFoybjV2YzVxSVoxZnZiU050ZU5IaTJOc0RXK2hVWEU4T1loM0F4OXdBSzZCaE0wRGlueG82T1ZvejhhbHhxNDR0dHFraUFSN0c4SFh6bXVNTmpMcythOStRSTlxZTZEU2JBQlFqN1VGRWhQY1YxZS9nUFQvd1IvczVveVNTTHYzMzB0anJ6d283cGxMb3VuYy9zYTdVZUF4QmVyUVVxeTJBbDQxRGF3RkxlSyttYSthT01iT2VaOGRJQmJHWmpXUko2alhaSWVNNWRrV29hWTVjUlJjQ3AwOXFGbW1obC9jV3NRVjIvS2ZxL0RhMnUzOFNmWHJJMVZLMmVnN0MyT3ZrNVNTY3Nsc1JOUTBRZ290Qys0TUNVUkVNODlSZTdJQjkvaXdXdis3OXFJM1MvSG5LZnhydUZ2T1dONC93V0hSNjlvY2FoR3hPLzF0OXVaUXNLTDhOaDRtRitMQUZZamhaK1I0SXBCVnRlWHk2ZkdsVzhhUVExc3ptL1M5aUlrK2pZY2trU25vVmlZWnRtMnZHc1pWQ0lPY2wwdnJMSG1aTVZ5aS9HSjhUOWwvaVNRcSs5TkFEbVdTd1JzVzlqcktSMnV5d0dzOUJoRmVzYlY0WEpYRXZ4TU1Lakhwd2h0WkRRQUZLS0xmalU0bEx1UDFrRzFHejNmUWdWRzBDS2dRckd4d3lnOUpORng4bEswcGRFT08rRGFYelRySG9YeE0wYklzZmNMWUN3SzVsbElDS0FrOFpNVDZNdGFITXYweTdldk1qQlovMVlsdlE5ZWtMMGY2KzdoVzdiR1RoRU95N3g5SXl5YmJvOXhVOGtHUTBJd1N5c2JINzk5ZXlmS25sWlpYZFUvbng0V24xYTFDUHlnSzE0S3RpWFRkRkRRMkxnQ09uMnFvUFpmN050SUZ4ZEw2eWFlcCtDcXEydUVOb3BnMER6eFR6SGJxWDZEbWNQN1B5ZWpITk9WVWczd0RGMlJ3ZDNJa3lZQ3FnWm5ONkVyVzFWMjZvaWxGWXlYRlordjdFSEU4QjZNaExueHRMR2tSWlowK0ZGSTZLbitYb2U3TEwrMlphRG80L3l5bmtWUjdCRnVTcWh0S0x2empkYnlZb1Rvd2ltODVjNlJxL1JDWHR3ZzlSZzRxU0VSR2pqWnlGY0pRL1E2YUpidjBMcEV5Um4zcXBwNzV1VDN6Y2JUU1JSVFZqenZjdVhJRXJncjFEL1B1Z0ZtaE9XZS8ycEIxNWpVNDBpZSszYzg5b3lpYWVJTy81c2tkd1FQemc2L1lITlYvMXNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRkFlMWpXdmRCTXVuVlI4TjJSRlNBTzhNa0lKNm84THZVb3pLRGtNUUJ0NXAvY1dzUVYyL0tmcS9EYTJ1MzhTZlhENTJnS0Q2SDhYVktGZm1ESGFvU2hNc3J5MGpXVm5QN0NKLzcxa2dCMVBhbWIwcWFiVDgzRDZxbi9hM0dsSHlHeGFtWmdSSGFLMTZ2bVpFemFudVRET3pHMWFVcHZFQ3RSQjhFTWdhcGFRWExLOHRJMWxaeit3aWYrOVpJQWRUMjZ2RnBnYTBaUkxXUlAzakgwdHlyTllBNzVlQ1RmOWRJcWpZR2NBQTFyc1UwemVlcGRNWjhNSlhkNSt4YkFhWEEvdUpmc0dqUEk3cHNRYzhKbitmbTNNTGsrTkNFRjhMc1EwT3RnbElYTCs2M0ZSdnlHN25NY2V2SDRpL1hUMEIxQlhOUEw2cjhpNmJuYmUrUUpLWU1BOTNQZGJCY0RzR1RWYUxpSmxZZEVPVGZqWWJwTFVSQ2RseDlLL3B1RVhXK1xcXCIpXFxuICAgICAgICBcXG4gICAgICAgIGlmICh2WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIHZhciBlcCA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXCJlcExpc3RcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxuICAgICAgICAgICAgcHV0VmFyKCdhaWQnLFN0cmluZyhlcFswXS5haWQpKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn55u06ZO+JyA/IGdldEhlYWQoJ+ebtOmTvicpIDogJ+ebtOmTvicsXFxuICAgICAgICAgICAgICAgIHVybDogJ+ebtOmTvicgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfnvZHpobUnLFxcbiAgICAgICAgICAgICAgICB1cmw6IHB1cmwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChnZXRWYXIoJ2xpa2VfdHlwZScpPT09J+W8gOWQrycpe1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGxpa2VfdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCx7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczp7J0NvbnRlbnQtVHlwZSc6Y29udGVudF90eXBlfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OmxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOidQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgbG9nKGxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJytsX2NvZGUuZGF0YS50b2FzdDtcXG4gICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmipXluIEnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoY29pbl91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQse1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6eydDb250ZW50LVR5cGUnOmNvbnRlbnRfdHlwZX0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTpjX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhjX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aKleS6hjHkuKrluIEnO1xcbiAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIFxcblxcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXAubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgdmFyIGJhZGdlVHlwZSA9IGVwW2ldWydiYWRnZVR5cGUnXSA9PT0gMCA/ICgoZXBbaV1bJ2JhZGdlJ10gIT0gJycpID8gJ/CfkrAnIDogJ/CfhpMnKSA6ICfwn5OiJztcXG4gICAgICAgICAgICAgICAgdmFyIGJhZGdlID0gZXBbaV1bJ2JhZGdlJ10gPyAnWycgKyBlcFtpXVsnYmFkZ2UnXSArICddJyA6ICcnXFxuICAgICAgICAgICAgICAgIGlmIChtb2RlID09ICdYNScpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ3g1UnVsZTovLycgKyBqeCArICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddICsgJ0AnO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB2YXIgcGljcyA9IChlcFtpXVsnY292ZXInXS5pbmRleE9mKCc6JykgIT0gLTEpID8gZXBbaV1bJ2NvdmVyJ10gOiAnaHR0cHM6JyArIGVwW2ldWydjb3ZlciddO1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGVzID0gKGVwW2ldWyd0aXRsZUZvcm1hdCddKSA/IGVwW2ldWyd0aXRsZUZvcm1hdCddIDogZXBbaV1bJ3RpdGxlJ107XFxuICAgICAgICAgICAgICAgIHZhciBkZXNjID0gKGVwW2ldWydsb25nVGl0bGUnXSkgPyBlcFtpXVsnbG9uZ1RpdGxlJ10gOiggZXBbaV1bJ2xvbmdfdGl0bGUnXT9lcFtpXVsnbG9uZ190aXRsZSddOicnKTtcXG4gICAgICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiaWZuenFhTnFOUmtONk5xRzBmWng1TWV5NDc3T3NNSk9UYlRkOVNhak1rZkxLOHRJMWxaeit3aWYrOVpJQWRUMk5LWE94TUwzNHRQc0pjYkZnWXEySXdlcVJXbGN0bm5uNDZkSkhHQW9RNlMrVHhzV0paM0VMYlVBRWYxVnYyeG9NcmtsM0tvcVd0bzF1N3U5U1V2TnRqMXV4QzRlbnVaSUUzSU9WSllmdWxyU0l1cW5NRTgraGxWMzhCU3RaQ2tKZjBpVzNIZEYyaXNCSEV4VFpmNGxwQzJLZjR1QXNQZlJxVThOOWpiUDQrcXpQcllyRytZYVd0K2ludzlaYUdOYTYwN0Z1dkxnSCs0dlpibWYvdEduUnphUXZmMHJodlBuZkJlRXlhTUF6bW12QU14NHUwbzQycnhIbU5LU3gvMlZabElxK1JxQ1p4SkozYktjUUg0K0YvZDBHNVltWHlPUFpSTllNN1JvQno4emVRRS9ocUJyVWJyU2RiM1Z3OFNEc0V4VTJoV09Fci8wNTJuNzRTRWRXV2RjMzdrOUJMYVZQSnJkUEZxM3IrWmg4ZjZpV2c2TlhCckIrdFVsR1NWVGpaZnNMRDJyQmZwdVBlUVFXZEFFclFKaElGTTk1UHhoM1M0Qkh0VW9kWjNGMjJtaXRMRWY4NklQbzE4eXJnSE1XVmFRYTR1UUE0Wk1EVDFhaE04NWs2KzdMVG1QdHo2T05BeHZ5SVQ3NXNDeFNjazBYc0xsaEc5Z1Y4clUwZmxEM2UraVdla2prMVh5cm1kY0tmRkhHeXZJZnFXRDZ6TVJBZEZJSXlYeE4zc3RidE5pM2JRTVVaZ2JZbW1yM1FsZTBqQUhvWlJNSGRsMUJyUzFzZG1MZXBXeHlIQzhyNlUzNUhtQlFOSHBkdnppNzdXR0dyNDRRNE1ndjVSWGJKOWVKT0ZHemxoclRzRFF6M3dBU1d6UzdKeEc4Y2s1ZlYwdVRSY2pnSlBGQ0k4NmV4RDY0VDh0bXNrZWtXWE10WlVqbE5JVFA5Uk9QTktHbnd6cmhGVjJSdlZxTkcwRUZJc1cxV3ViYXRhc2lKNmZYbUJURjBndE1tQksxYXMzSkhXUmhLcmdZZ0ZBU2QrRTRLVUF1TVBMdFFiMGZ0bHlRaUFUVnNhUnJGemJrcHVZbE1BczFQOVZpVWovRXhvWHFBTWFROFpKem90c1B2ancrS1BGTWZudzhCOUVRY3ZaN2NBb0tLTzYrbkRTeUhlTTFldy91b1dIMlhKTkdMMVBVYzlzMVRVYmFLdFViUzI2aFdOR01yR3pHMnUxNm9UbERmeHpCN0tMam15SWlDaEI3NDZDTzNUblp6WHA0cyt2MS9yZmdQWXlBU0dqRWpSTjlxTWF6N0lsL21MUGlFVURhanJOK0FVKzZVWmxTVUtaYWFtemovNHRKdGxtcEEzaTE5RDdJc3cxa0R6SHdMc1lmbUhNU2trdi84REpwUDJWRFBHMkZBb1Jaa2xSY2M5ZVVkYXV5TCtRaENSelJBQnF2cHplMklZVVRNTUdrV21XMnpVRnJkN1ZTc3NyeTBqV1ZuUDdDSi83MWtnQjFQWTVZbzgxcWk4aFhXRkcvc2tWaTFZVHBjMFY2NVVnWjZKTElCNktwMk9vczgzb2dpU0ZNREppc1QyT0VDNkdVeGhiVlhicWlLVVZqSmNWbjYvc1FjVHd5KzMyd0tUeldWLzAzaDJSb1dkSjJub2wwdUNNR1k5YURDUFViWldVZWFmTEs4dEkxbFp6K3dpZis5WklBZFQyQUxTWm9waXZNTTRIVk5GM21ZMlhMMUEzamVzSUF0eERSL3ZCOC9BSWwvV0xyR0xia1AyU0p4OEJLbTFoU05vZ1d5ZDR6WjF3YUpxcE5jTGIwbHBmdHpqM0J3MWtneU1ZcFMvbkY1LzRkNTJaTGtHR3phVU1PM0t4aWhQSTB2VjQvNlZlbWZGT0x3elhrUldyeFJ5aEZ4UE1jc0dBNmVBcEhvMWhjMWs5bTFWL0NWdVdXY3lncStSMXB6NGFXb3FKS3B0dlRSdWd2MTRod0pUKzdyd0dXaXRPRlZ1SzNOMTBhclFLVlo2a1Q5VUN2R0s0R1JrdVpqbC9kYkpmNEF4YWM4RmZNK3RPL29LTllCODUwaDZnQ2JUbUwzVFcyRXVGdVNEb1k1cWtNeTIyaTF1MmVLT3l0UjRTUkxGTDRMditwRXFmSGNzb0xtajcveklVcU9OQ2twaFNGTTZkZnlkQ0c5YzRWNUFzb204cU9Cb3V6dGdCektVSFQwbzcwYlEzVVRpdDE3QlpvVmNxY2JlSmV5ZHZXM0hDYVZaeTJ3aHd3TjNiMTZWSGwvL0g0ZzBnaUtmRjU3aEplNHppU1ZuRjJwV3NHclI1ZHpyTzBwZXF3QWdadG9CRG8vbWFMWGhvem1HZllBYzd3eldtYlhRZUp2L1FCcm91MjdPS01GREFYUC9janlFRUJnREhiMXIxVlhNQ2ltVTB3dzJWWDBDajVYVitmMEo1VzU3S1VPU2VDamJ2citWVXhxbzE2eHc5a3I4dG5RMlF6NWtNSXdLa01JUGlPSmhKMkJBcCtKYVhsZ01YSWk2cnp0N0ljWWRieWJvYzdFamR2TStzcTBBNUJnVExZNkVDOUJuZEhlaGh2MGFqOXVOenZvanZrZ3Q4ZDIrNXhNWWJkWEJHWG1keXRoNXBBeW44b0xCQ1dVRGJXZTgwLzk5ZXQxaUgvR0RKRWZvRExEZjlwK2s0KzBRYnVXZEVxdVRPMWpDSkY1MWg3VHhIbC9VWWEvbUp3dWQwL1k4RDRmRVlaWC9WM2hHcE9EOVIyWm1qZzRJcnBQcHdlZmo4dzB3Z2NmeUx6OVpNbXMxUG9NbjBxQ25uTStWdTZuNnN4Q2xQYjh5V3hLa3pNaDBld0U0bkpvY2hXYkRrNXJjZnJFMDJreWtGWEZ0dSt6ajhISmdBSE1iV1Zuam55WEk3NlVncURSZWpBSHlGbVdtVks2V2hHazdtNlpzSnFqSmkyRTUzNGVCMGpBVllmNkpiczdoQXFKUGdFbGVPZUFPVTR6Sk1zQVZyaXN0NjNpUkpNYUVNVGpPNDk4K2FtTU9yNzhXcktEemh3NlJnQitPOVVoTFBLMDQyWUU3TmZ6akNiNzk5ODd1OXdRVjRRY3JodGxLT1hjbDhNYlp0SDBibWJOYkFPdVh1SUY1ZHJKVXJqWVN3VlFCREFhVWFMWWV6ZVN1dnJRd0ZTQ2J3ZVRVSkd6MWo3dUJVcTNtYUI0T2ZLMm43RzJOMWZDSzFlRWF3OTJVbmxWRE8wVGYxTElJMDhIRnRzUkluNlkxcDNzOVYrTEpROWlVZDVaRzBMd1U5MDRFNzVQcHVWTFJPQllIUzRtckIzUnZyTWhBV0M2amR0U1RGa2x1bXYrYzJFSlJyYlVyanI0QStZNDBrQU5OMVV0MXJkdk1iLzBwUk9KWFZzRGZjL0F5TTVuM0NmbHZEVnFTZ1BJOWJsSEZlMW1aNzVDbUlMUzZLemRGMFlsMU1WSGlQVzBqdm9kbnhLWVRwczhoSk4rYUkraDFXUkd6ckpLWkppY0F0TmRzV1ZoTGZyVnhWRVBTZW05akd6c0FhV1BrVkJHUk82alcyU1c3bStiVkR2UlBiVnBiNmdTQkk4b0NVWU9vNy9RMEhhYnFtN1JQTWNzR0E2ZUFwSG8xaGMxazltMVh3NTBJUnZuN1Z5UEorckRCMUdhZEs5cW83SXVEdjF0L1dqejdkdnA0ZDRScHVHdnk0WlFrOVB3VjV0VHRrWDJER0F0UThmYWl2RUlINzBPaGtwdUN0bkhrYm96UUM5QllMeFVkZklMdlA4cUU5N3JaWWsrWGNxYTdodmxCRzZuM0pnNTZzNHJxV2VaTmxCL2NHNTVDU3RSUEVJNlJqckFEcHkvc1luUTRSRU42VWxBeW1TcmVzMllYUkxUYUVjWVdrSlc5ODJDL3NmWXNja2JpemxPc1lzS0FGcDNYc2dEUVJEYWFvK3lITkpBcGVWUksxbTdoMThxL0tiUXhGY3BuRGJHWDJNUnVjVTVQVVBKcGt5dkNsRXZSSzdrMXgybjB6YXpBUTRnWmZEd3NNL2ludk1RVEtlUWV0eklyNi9ad1R6SExCZ09uZ0tSNk5ZWE5aUFp0Vi9xSE01dFlVMWh3UlNyZDg1S0gyTXBkdDdNUHRXZnE0TmRPWVdiTmhQUDh4bEw2TGdIQVdsTXlCRFpzdUd5SHpFOHh5d1lEcDRDa2VqV0Z6V1QyYlZiMldITTFNVlBlTlAySnpXS25VMEhRdWJhby80MVBxSWgrQ1dCUjNIVUZZUnhpcEVCUWJLQS9tQXBCTjFwSEN3QlBNY3NHQTZlQXBIbzFoYzFrOW0xVUNSNjdodjU5ZW00blZQWm1qVTVrMUI5YklkeklsN1dySjFmL1NVbXd2cThqeU1HbThUSlhpS2dGRXk2MjJlbmtUekhMQmdPbmdLUjZOWVhOWlBadFZDcmxSbmdURUpCcVYyaXlzNnF5TFRKMUNwYm41MWNLdGU1OGVOS1JrbENEdVhGYzNHcWxZMENlRzZGM1FNVnVxQk1FTjlwWHNtbndLeHNFNjUvYStlbHFlZkxLeWw3SStPWnYrS0JIbllYNzlXakJiMzJCR2hHWm5kMVFreTJ4SFB2ZjRTeCsvdFlOMnpuY21wUXFTd3hQTWNzR0E2ZUFwSG8xaGMxazltMVZVdVVHeFJPWlMzS0NFOTZuYVVGNzRtUm1yZE8vanB0SUhnTWpDK0c2VjdCeFpUSml0TkVMc3QwRkNKK24rQU1ZVHpITEJnT25nS1I2TllYTlpQWnRWQkNTK0xmWXFyU0JHSGtlWWxhcWdid0lNeEVkMU9WUHlKaHVWeEFVbkR0cktXMENudnVwOHpBM0NVK2lNVGxUUmYyTmZKY3hlajhkaWpZNXkzZjFuUldSRU9wWW1yWVh6dGZzUjhSK1krVGVZeEFldXU3c2d3dWlUQ0dxeGN4cThjWEYyTyt6bGFYZW01SHdITlc5Ry8vM2VudWs2TUsyQnR0Q1FCSHJpcFlvR0ExK3ZVK2RKL0YrTFIxaUJMdDR5L0ZzUHhySlAxeHZ2MDBaRmtYZ2N5R0VpYXVhbUd3WWRsbjMvOCt0RmdYUkk4MnI5Z2NzR1hUeWdJT1RGOXlpRjBnb0NoNE5OeXJhNVNQelN3Z29uM2NzbitOaEFRUkp2U0ZzTFhMSDhGL2ZDU0Nqd2wvcGkyR0dZNG5CVWVrM3dLNmNRR1c2QitvTzNqS1NXOVFFRzAvT2dIVGJ5eGJSOUVzcG9sbU5sQi9HcVNMNEtPTVlhd05DMHZnVlpkSkI1YkhsdXRnam5UdnY3b1l5ZmVhK21JTzFqR2JZK2pVOFZMeDFZWlNIRU5TVGppMjc0UWoyS09yRkV6cFhxaVEySktabG1EaGI5TEo4T3hWTHg4QUhIY1A2bnlXT2hpWWNGdVFNRndmOVVSSUdIcnpyanpwcGY3Z3NLbkpsdFRia2xsMWxzZlVIU2Q1WlNBRjZRRTNiOG9iNXg1SG1aRlVRUmtVOTRQbENIdFc1RUZ3d0hxTHdzMXczR3h6R01odHFmRTh4eXdZRHA0Q2tlaldGeldUMmJWZUU3eU03THhxdzc3MS8zbk5iNzhPdnA0dWJGY2lSdjZCdlhjVjkxWC93bEFiNjZnRHF5eG03QytqRGw4NVBMSndkSVJCa2VxMFVwbUtSdmxqQUdVSW9MUDBvQ25qRnhQVmlucXptQW1QeWx4UmZvdlZaYzVSVEdjemw4dGlDSVFGS2U3aFBuejhQVWVUeEwyR1VTOTc1M3hQMHVnYkpOSDBrdE1GR3FYTFFyTjIwaHl4anlGS05PeTVHUUwxZGwzMlY5NmNqVlFldWwyazVYSVJPUGFXeGw2MGo1WHo2R1BXMHZzQ0lwSyt4aXl5dkxTTlpXYy9zSW4vdldTQUhVOXVTd0JNdlB4Z2oyVFdPRDkxTlpsNUtvSmMrenUzanBWUUJFZ3lIR3h0aTdTejBPeXNVdFpnTEVJVzlhZFNmeWkydy9zcm1UbThIME02S3pHdG5TYzhhMFZWd1QycVFvbm5nU1I1SzZRVDJzRVpKckJzNUI4WkRCa2phZlE0c1JwUkVhT05uSVZ3bEQ5RHBvbHUvUXVrVEpHZmVxbW52bTVQZk54dE5KRkZOV1BPOXk1Y2dTdUN2VVA4KzZBV2FFNWVpbk9JN1VBemxkOEhJUytMVTA3b0xoRHVWSWFzSTdBZ2JmWWNidjh5WkJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlsc1ZWZ09LYVc0STdRQWthU090ZFZQbTZINnd2bHlYRUNBTnZoQ01HZWxGeXl2TFNOWldjL3NJbi92V1NBSFU5dDVYYnFQZkxHNUFBVUV2cmNoUzRXWmhjbGZOMFZxMDAxRUMvK1VBWGFHUzViMGhrSlZPVUN0Q3dzelZ1eUFlVU1zcnkwaldWblA3Q0ovNzFrZ0IxUGJMSzh0STFsWnord2lmKzlaSUFkVDJwbTlLbW0wL053K3FwLzJ0eHBSOGhzV3BtWUVSMml0ZXI1bVJNMnA3a3d6c3h0V2xLYnhBclVRZkJESUdxV2tGeXl2TFNOWldjL3NJbi92V1NBSFU5bk15R0xJSGxCMlFSSVk2RHRBZzRsekxLOHRJMWxaeit3aWYrOVpJQWRUMmdEdmw0Sk4vMTBpcU5nWndBRFd1eFRUTjU2bDB4bnd3bGQzbjdGc0JwY0QrNGwrd2FNOGp1bXhCendtZjUrYmN3dVQ0MElRWHd1eERRNjJDVWhjdjdyY1ZHL0lidWN4eDY4ZmlMOWRQUUhYWlJFaGNkZXgxS01MYytnNEkramN4eXl2TFNOWldjL3NJbi92V1NBSFU5Z1R0Vk9GRjZrd2FubXNHU2RIMmlhR2MxWW41SzdrSDVWWEQ2eXRncTZvM0oxUWs2RDdkYTh0ZEdSWnlsbHFXRHM2VU12c08vUE93NUNjcjc5c0p6aWRiazM1NDJtakxSS3R5aUVleXYxdHM2eWFlcCtDcXEydUVOb3BnMER6eFR6cUgxcjgzSnl1dlFzNHNWWGtyM0NmTEs4dEkxbFp6K3dpZis5WklBZFQyeUFJdU13RHh2SWZVSUc5T1p1RHNJOXFBbkJXMUZpMHVkZmJUOWhnNlU0QjRsbFJ2dUt5UzdaRVJ6RWJlL0pmdjhnTkVkOFRTWUI5KzcydnlwaWwyclRiN3k2V0ZsWlFhMCtmQjQ0VEU2cXp4a3hQb3kxb2N5L1RMdDY4eU1Gbi9WaVc5RDE2UXZSL3I3dUZidHNaT0VRN0x2SDBqTEp0dWozRlR5UVpEUWpCTEt4c2Z2MzE3SjhxZVZsbGQxVCtmSGhhZlZyVUkvS0FyWGdxMkpkTjBVQ1B5MGROcmlzeXNLT011VU1QNEZwWWxJbEN4QXQ5UUZhSWFJb1V0bEFhaVlDcTNRbk0rUll3aC82dEp3M2NTcWhtSFdrOXJCYWo3MU5rQUNVdk9YcjREVVg5QVpXMm00a29pWGQxWEp1RTJLeDd6RWpXMGFtZ2Z6QlpESm8vWUtSK2pTQnZwSThBQlk2MkpOTlVMYTNtdHFXRE8xWGdMMlVsc2RPREpsSXZUVXEzejJsdCtpbnVrTGxsYW1aZWZCK0p2cXNxditOZVliT0p4eEdtdG5QN3E5cFYwclJtZisxTmUrMU8rUjVVc3JhSktYUFV5WVJiMHk3b29Ua0xHMWg0aEdBZ0V0UmpUT2t0a1huRjVCWlRHTTlSeVFSdWF3YzBiQk9tdEhYMWhjVDdydDN0RGtzWEpmZmxQeXlzV3poUFhMTStGZHg1ZENZUnlaekMveGl5WnJkMVJvUFoydSswUXRic0sydWdScHpRNDY5bG5kcEpocndhZXloK29IQlM4Rnl3K3MvWEIzMU1IOUtKQW8wSkVBWVpLMjI1MmlFWUhnbzNYdU4xWjhiOUk1Ym9vUHp2TDAxSWkra0FhaHNzcnkwaldWblA3Q0ovNzFrZ0IxUGFqcnVxWS9iTDZ2MTIwMDJtYTYwU3paaFRueXlRWmRYOU01Mm9DQWtpajIvWU51K0hwWDY3OWRsWlMrV2FodVFFamp2NC9STWFKU2ZTS0REUjZ5bHhOaE1Zd2drekZwV1FUUTBHcUxxZndMSUl6VnMyZ1IzTk9Pd3NsOXlrYUN4aWZFNDVPU0xRYVkrc0VCMjFMWEtmMlJXSXFhYktpN1ZsQld1VnF6Sy9NeGJDbWpLUFdLVUZwSnphODBnTVhVbkY0SW0zeXFFZnQxcmZzS1U3U2c2ZTRoWnF6Um1iUVlkdkU3Y2V6RitmOHhjRDZ5UmNreE9SZEc2clBPQktpRE1mZzYzZUh2WmlVanVsUEU1SXZKRHhvS0JOWHVsMGFnT2UycElJU2Ntc0hLQWdURkZqYnRiQ2ZlMVRqK2l4MkdVVE53ckhVenFZSjNJcXh5SHRPYXIySEYxbUw1Sy91cFNZM3pUMGJLamNId2NzcnkwaldWblA3Q0ovNzFrZ0IxUFpQeGQrelhCaElsaDhwdjR5VXJYYk1nb3NNTmlZREJiVVptR3ZVVkI5WS9VcTVReVlSOGpCYTNUNnFxcWQ5UGNER2pyVEk2WWJoRWE0bXRpdlZGMW4xSjlmVUVjU0hXdms4ZnB5bncrQmtZT2V6aElZd2JoY1hyS0pOM1hqNFhBQS9qdDZIMzI1NEZjNG1Sb3U3ZFlsWXl5dkxTTlpXYy9zSW4vdldTQUhVOWtLQXJVS1ZGMk9tQUVPdFJQVExvVXJMSzh0STFsWnord2lmKzlaSUFkVDJpVlNuMlg2T0s5MFJmRXFqa0MvcklTWXovN3VjcDZhTTNUMTljSnB4RXJITEs4dEkxbFp6K3dpZis5WklBZFQyc01pZHNKNS84K1UrWkxYb29rdFM3L1puYTAyZnZBaEpnbjlnUmpTendDOWRDQnlvVXQ5cFlYUGxOdWRmN2g2QnB6NnF3V3ZNR25yMWZaWWEwN2JmcjhzcnkwaldWblA3Q0ovNzFrZ0IxUGFqdnVjenJRUVUwSTJVQWE4VUpkUHVNakJIelltV09CbWpsOEtoMjMrVDZybHdXUlZnRjQ3SEd5d1ZuVnpwR0NiT2xETDdEdnp6c09RbksrL2JDYzRuSmZqcmd0NkVuUGpYWi9uQ0pNUHZXTTZVTXZzTy9QT3c1Q2NyNzlzSnppZHdaNDVDWE5HeCtTOE9OUnUwY1FZeUU5Y3N6NFYzSGwwSmhISm5NTC9HTEptdDNWR2c5bmE3N1JDMXV3cmE2QkduTkRqcjJXZDJrbUd2QnA3S0g2Z2N3eTdZbU1IQURrc3VtTjVIcmpsVjRNc3J5MGpXVm5QN0NKLzcxa2dCMVBaOTZ2ZUZmNW8wNkhsRmhGa0VialZOYUhoVldnSDRmVE10a3V6NWJEbitBSGduanB3eUcvaElMNTBHSVBYbyt2cllUQWFCeUFCUVdvNVAxcFZ1S0RaY1xcXCIpXFxuICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlcyArIGJhZGdlVHlwZSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogcGljcytSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogYmFkZ2UrZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbW9kZSA9PSAn55u06ZO+JyA/IHRydWVfdXJsIDogcHVybCArIGxhenksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcHV0VmFyKCdhaWQnLFN0cmluZyh2LmFpZCkpO1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOm1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLCAvLyfnm7Tpk77mkq3mlL4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICfnm7Tpk74nK21vZGVfdXJsLC8vbGF6eTEsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICd5aGMnID8gZ2V0SGVhZCgn6JCk54Gr6JmrJykgOiAn6JCk54Gr6JmrJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAneWhjJyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKT09PSflvIDlkK8nKXtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQse1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6eydDb250ZW50LVR5cGUnOmNvbnRlbnRfdHlwZX0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTpsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycrbF9jb2RlLmRhdGEudG9hc3Q7XFxuICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5oqV5biBJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvaW5fdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOnsnQ29udGVudC1UeXBlJzpjb250ZW50X3R5cGV9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6Y19ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6J1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICBsb2coY19jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mipXkuoYx5Liq5biBJztcXG4gICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICBpZiAodi52aWRlb3MgIT0gMSkge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmwgKyAnP3A9JyArIHBbaV0ucGFnZTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmxcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBhcnQsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcbiAgICAgICAgICAgICAgICB1cmw6IC8qbW9kZSA9PSAnWDUnID8gJ3g1UnVsZTovLycgKyBqeCArIHJ1cmwgKyAnQCcgKyBsYXp5IDogKCovbW9kZSA9PSAn55u06ZO+JyA/IGxhenkxIDogcnVybCArIGxhenksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiB2LnZpZGVvcyAhPSAxID8gJ3RleHRfY2VudGVyXzEnIDogJ2F2YXRhcidcXG4gICAgICAgICAgICB9KTtcXG5cXG5cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoJ3JlcGx5X3R5cGUnKT09PSflvIDlkK8nKXtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOivhOiuuuWMuuKAneKAnScgKyAoZ2V0VmFyKCdsYWJlbCcpID09ICfor4TorronID8gJ+KAnOKAnCDiipnigJ3igJ0nIDogJ+KAnOKAnCDiipXigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+ivhOiuuic/J+WFs+mXrSc6J+ivhOiuuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn6K+E6K66JylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCc4oCc5o6o6I2Q5Yy64oCd4oCdJyArIChnZXRWYXIoJ2xhYmVsJykgPT0gJ+aOqOiNkCcgPyAn4oCc4oCcIOKKmeKAneKAnScgOiAn4oCc4oCcIOKKleKAneKAnScpICsgJzwvc3Ryb25nPicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xhYmVsJywgZ2V0VmFyKCdsYWJlbCcpPT0n5o6o6I2QJz8n5YWz6ZetJzon5o6o6I2QJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly8nK2dldFZhcignbGFiZWwnLCfmjqjojZAnKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuXFxuICAgIFxcbiAgICBpZiAoZ2V0VmFyKFxcXCJsYWJlbFxcXCIpID09ICfor4TorronKSB7XFxuICAgICAgICB2YXIgcmVseSA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YyL3JlcGx5L21haW4/b2lkPScgKyB2LmFpZCArICcmdHlwZT0xJywge30pKTtcXG4gICAgICAgIHZhciBjb3VudHMgPSByZWx5WydkYXRhJ11bJ2N1cnNvciddWydhbGxfY291bnQnXTtcXG4gICAgICAgIHZhciByZXBsaWVzID0gcmVseS5kYXRhLnJlcGxpZXM7XFxuICAgICAgICBmb3IgKHZhciB4IGluIHJlcGxpZXMpIHtcXG4gICAgICAgICAgICB2YXIgcmVwbGllc3ggPSByZXBsaWVzW3hdO1xcbiAgICAgICAgICAgIHZhciBtZXNzYWdlID0gcmVwbGllc1t4XS5jb250ZW50Lm1lc3NhZ2U7XFxuICAgICAgICAgICAgdmFyIG1lbWJlciA9IHJlcGxpZXNbeF0ubWVtYmVyO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtZW1iZXIudW5hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogbWVtYmVyLmF2YXRhcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+PHN0cm9uZz4nICsgbWVzc2FnZSArICc8L3N0cm9uZz48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHZhciByZXBseSA9IHJlcGxpZXNbeF0ucmVwbGllcztcXG4gICAgICAgICAgICBmb3IgKHZhciB6IGluIHJlcGx5KSB7XFxuICAgICAgICAgICAgICAgIHZhciBtZXNzID0gcmVwbHlbel0uY29udGVudC5tZXNzYWdlO1xcbiAgICAgICAgICAgICAgICB2YXIgbWVtID0gcmVwbHlbel0ubWVtYmVyLnVuYW1lO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7JyArIG1lbSArICc6JyArIG1lc3MgKyAnPC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfSBcXG5cXG4gICAgaWYgKGdldFZhcihcXFwibGFiZWxcXFwiKSA9PSAn5o6o6I2QJykge1xcbiAgICAgICAgZm9yICh2YXIgciBpbiByZWxhdGVkKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlbGF0ZWRbcl0udGl0bGUsXFxuICAgICAgICAgICAgICAgIGltZzogcmVsYXRlZFtyXS5waWMsXFxuICAgICAgICAgICAgICAgIGRlc2M6IHJlbGF0ZWRbcl0uZGVzYyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyByZWxhdGVkW3JdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICB9XFxufSBjYXRjaCAoZSkge31cXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCIsXCJncm91cFwiOlwi4pGg5o6o6I2QXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS95Y2xcXFwiKSkucnVsZSk7XFxuLy/pgJrov4fmkJzntKLmn6XnnIvoh6rlt7HnmoR1aWTvvIznhLblkI7mm7/mjaLljbPlj69cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcse30pKXtcXG5wdXRWYXIoJ3N0YXJpZCcsJzkyODEyMycpO1xcbn1lbHNle1xcblxcbnB1dFZhcignc3RhcmlkJyxmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLHt9KSk7XFxufVxcbnB1dFZhcihcXFwiYWNjZXNzX2tleVxcXCIsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcpKTtcXG4vL+iHquW3seWOu2Lnq5nlrqLmiLfnq6/pppbpobXmipPljIXvvIzmib7liLBhcHAuYmlsaWJpbGkuY29t5byA5aS055qE6ZO+5o6l77yM54S25ZCO5oqKYWNjZXNzX2tleeeahOWAvOWhq+WFpeS4iuaWuSc9J+WQjumdouWNs+WPr1wiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt5LiA57qnXFxcIixcXFwicGF0aFxcXCI6XFxcImNvbW1vblxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXFxcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXFxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLCAn5byA5ZCvLOWFs+mXrScpO1xcXFxufVxcXFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXFxcbnB1dFZhcigncmVwbHlfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzBdKTtcXFxcbnB1dFZhcignbGlrZV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMV0pO1xcXFxuLy/popzoibJcXFxcbnZhciBDb2xvcnMgPSBbXFxcXFxcXCI0XFxcXFxcXCIsIFxcXFxcXFwiNVxcXFxcXFwiLCBcXFxcXFxcIjBcXFxcXFxcIiwgXFxcXFxcXCIxXFxcXFxcXCIsIFxcXFxcXFwiQVxcXFxcXFwiLCBcXFxcXFxcIjNcXFxcXFxcIiwgXFxcXFxcXCI4XFxcXFxcXCIsIFxcXFxcXFwiOVxcXFxcXFwiLCBcXFxcXFxcIkJcXFxcXFxcIiwgXFxcXFxcXCJDXFxcXFxcXCIsIFxcXFxcXFwiRFxcXFxcXFwiLCBcXFxcXFxcIkVcXFxcXFxcIiwgXFxcXFxcXCI2XFxcXFxcXCIsIFxcXFxcXFwiN1xcXFxcXFwiLCBcXFxcXFxcIkZcXFxcXFxcIl07XFxcXG52YXIgQ29sb3IgPSAnIyc7XFxcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcXFxcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcXFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcXFxuICAgIH1cXFxcbn0gZWxzZSB7XFxcXG4gICAgdmFyIENvbG9yID0gXFxcXFxcXCIjRkE3Mjk4XFxcXFxcXCI7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcXFxcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcXFxcXCInICsgQ29sb3IgKyAnXFxcXFxcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXFxcbn1cXFxcblxcXFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxcXG5cXFxcbnZhciB3MSA9ICflhajpg6gm55Wq5YmnJuWbveWImybliqjnlLsm6Z+z5LmQJuefpeivhibnp5HmioAm5rG96L2mJueUn+a0uybnvo7po58m6ay855WcJuaXtuWwmiblvbHop4Ym5Y6f5YibJuaWsOS6uibmuLjmiI8m5aix5LmQJuiInui5iCbnlLXlvbEm55S16KeG5YmnJue6quW9leeJhybliqjnianlnIgm5Zu95Yib55u45YWzJztcXFxcblxcXFxudmFyIGMyID0gJzIyJjIxMiY3MSYxODImMTM4JjI4JjMzJjE4NSc7XFxcXG5cXFxcbnZhciB3MiA9ICfprLznlZwm576O6aOfJue7vOiJuiblvbHop4Ym55Sf5rS7Jumfs+S5kCbnlarliacm55S16KeG5YmnJztcXFxcblxcXFxudmFyIHdvcmQxID0gdzEuc3BsaXQoJyYnKTtcXFxcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcXFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxcXG52YXIga2V5MSA9IGdldFZhcigna2V5MScsICdhbGwnKTtcXFxcblxcXFxudmFyIHdvcmQyID0gdzIuc3BsaXQoJyYnKTtcXFxcbnZhciBjbGFzczIgPSBjMi5zcGxpdCgnJicpO1xcXFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxcXG52YXIga2V5MiA9IGdldFZhcigna2V5MicsICcyMicpO1xcXFxuXFxcXG4vL+S4ieWQiOS4gFxcXFxudmFyIHJ4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0Jywge30pO1xcXFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFxcXFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFxcXFxcImA7XFxcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXFxcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXFxcXFwiYDtcXFxcblxcXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcXFxuICAgIC8vLnJlcGxhY2UoJ20uYmlsaWJpbGkuY29tJywgJ3d3dy5iaWxpYmlsaS5jb20nKS5yZXBsYWNlKC9cXFxcXFxcXD8vZywgJ++8n++8nycpLnJlcGxhY2UoL1xcXFxcXFxcJi9nLCAn77yG77yGJylcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+ino+aekCcsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCInaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JysnaHR0cHM6Ly8nK2lucHV0LnNwbGl0KCdodHRwczovLycpWzFdKycjaW1tZXJzaXZlVGhlbWUjJ1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcbiAgICAgICAgZGVzYzon6K+36L6T5YWl572R5Z2A5oiW6ICFYuermeWkjeWItueahOmTvuaOpSdcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiByeCA9PSAnVVDkuLsnID8gZ2V0SGVhZCgn6aaW6aG1JykgOiAn6aaW6aG1JyxcXFxcbiAgICAgICAgdXJsOiAnVVDkuLsnICsgd3IsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5o6S6KGM5qacJyA/IGdldEhlYWQocngpIDogJ+aOkuihjOamnCcsXFxcXG4gICAgICAgIHVybDogJ+aOkuihjOamnCcgKyB3cixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmlrDnlaonID8gZ2V0SGVhZChyeCkgOiAn5paw55WqJyxcXFxcbiAgICAgICAgdXJsOiAn5paw55WqJyArIHdyLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcnggPT0gJ+abtOWkmicgPyBnZXRIZWFkKHJ4KSA6ICfmm7TlpJonLFxcXFxuICAgICAgICB1cmw6ICfmm7TlpJonICsgd3IsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgIH0pO1xcXFxuLypcXFxcbiAgICBpZiAocnggPT0gJ+aUtuiXjycpIHtcXFxcbiAgICAgICAgXFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veeVqicgPyBnZXRIZWFkKHNfdGFiKSA6ICfov73nlaonLFxcXFxuICAgICAgICAgICAgdXJsOiAn6L+955WqJyArIHNyLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gZ2V0SGVhZChzX3RhYikgOiAn6L+95YmnJyxcXFxcbiAgICAgICAgICAgIHVybDogJ+i/veWJpycgKyBzcixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgXFxcXG4gICAgICAgIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcXFxuICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2Zhbmp1XFxcXFxcXCIpKS5ydWxlKVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmIChzX3RhYiA9PSAn6L+95YmnJykge1xcXFxuICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RzalxcXFxcXFwiKSkucnVsZSlcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiovXFxcXG59XFxcXG5cXFxcbmlmIChyeCA9PSAn5o6S6KGM5qacJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9waGJcXFxcXFxcIikpLnJ1bGUpXFxcXG59XFxcXG5cXFxcbmlmIChyeCA9PSAnVVDkuLsnKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3VwXFxcXFxcXCIpKS5ydWxlKVxcXFxufVxcXFxuXFxcXG5pZiAocnggPT0gJ+aXtuWFieacuicpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2Uvc2dqXFxcXFxcXCIpKS5ydWxlKVxcXFxufVxcXFxuXFxcXG5pZiAocnggPT0gJ+aWsOeVqicpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvbmV3YmdtXFxcXFxcXCIpKS5ydWxlKVxcXFxufVxcXFxuXFxcXG5pZiAocnggPT0gJ+e0ouW8lScpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2Uvc3lcXFxcXFxcIikpLnJ1bGUpXFxcXG59XFxcXG5cXFxcbmlmIChyeCA9PSAn5pu05aSaJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9tb3JlXFxcXFxcXCIpKS5ydWxlKVxcXFxufVxcXFxuXFxcXG5cXFxcbi8v5LiJ5ZCI5LiAXFxcXG5cXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldFJlc3VsdChyZXMpXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcInBpY18xX2NhcmRcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLeaOkuihjOamnFxcXCIsXFxcInBhdGhcXFwiOlxcXCJwaGJcXFwiLFxcXCJydWxlXFxcIjpcXFwiLy/liIbnsbtcXFxcbiBpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxcXG5mb3IgKHZhciBpIGluIHdvcmQxKXtcXFxcbiAgICB2YXIgYSA9IHdvcmQxW2ldO1xcXFxuICAgIHZhciBiID0gY2xhc3MxW2ldO1xcXFxuICAgIHZhciBjID0gYSArICcmJyArIGI7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogYT09bGFiMT8gZ2V0SGVhZChhKTphLFxcXFxuICAgIHVybDogJChcXFxcXFxcIiNub0xvYWRpbmcjXFxcXFxcXCIpLmxhenlSdWxlKChjKT0+e1xcXFxuICAgICAgICBwdXRWYXIoXFxcXFxcXCJsYWIxXFxcXFxcXCIsYy5zcGxpdCgnJicpWzBdKTtcXFxcbiAgICAgICAgcHV0VmFyKFxcXFxcXFwia2V5MVxcXFxcXFwiLGMuc3BsaXQoJyYnKVsxXSk7XFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgfSwgYyksXFxcXG4gICAgY29sX3R5cGU6J2ZsZXhfYnV0dG9uJ1xcXFxuICAgIH0pO1xcXFxufVxcXFxufVxcXFxuLy/liIbnsbtcXFxcblxcXFxuZC5wdXNoKHtcXFxcbiAgICBkZXNjOicyNTgmJmZsb2F0JyxcXFxcbiAgIFxcXFx0XFxcXHRjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcXFxufSk7XFxcXG52YXIgdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92L3BvcHVsYXIvcmFuay9hbGwnO1xcXFxuXFxcXG52YXIgTVlfVVJMID0gdXJsLnJlcGxhY2UoJ2FsbCcsZ2V0VmFyKCdrZXkxJykpO1xcXFxuXFxcXG52YXIgeW09cmVxdWVzdChNWV9VUkwse30pLnJlcGxhY2UoL1xcXFxcXFxcXFxcXFxcXFx1MDAyRi9nLCcvJyk7XFxcXG5pZih5bS5pbmNsdWRlcygncmFuay10aXBzJykpe1xcXFxuXFxcXG4vKuaPkOekuuS/oeaBr1xcXFxuICBkLnB1c2goe1xcXFxuICAgIHRpdGxlOifigJzigJwnK3BhcnNlRG9tRm9ySHRtbCh5bSwnLnJhbmstdGlwcyYmVGV4dCcpKyfigJ3igJ0nLFxcXFxuICAgIGNvbF90eXBlOid0ZXh0XzEnXFxcXG4gIH0pO1xcXFxu5o+Q56S65L+h5oGvKi9cXFxcblxcXFxuICB2YXIgcGk9SlNPTi5wYXJzZSh5bS5zcGxpdCgnXFxcXFxcXCJyYW5rTGlzdFxcXFxcXFwiOicpWzFdLnNwbGl0KCcsXFxcXFxcXCJyYW5rTm90ZVxcXFxcXFwiJylbMF0pO1xcXFxuICBmb3IodmFyIGk9MDtwaSE9bnVsbCYmaTxwaS5sZW5ndGg7aSsrKXtcXFxcbiAgICB2YXIgbnVtID0gaSsxO1xcXFxuICAgIHZhciBxPUpTT04uc3RyaW5naWZ5KHBpW2ldKTtcXFxcbiAgICBpZiAoIXBpW2ldLnVybCl7XFxcXG4gICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBwaVtpXS5idmlkO1xcXFxuICAgICAgIH1lbHNle1xcXFxuICAgICAgICAgICB2YXIgcnVybCA9IHBpW2ldLnVybDtcXFxcbiAgICB9XFxcXG5cXFxcbiAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOnBpW2ldLnRpdGxlLFxcXFxuICAgICAgICBwaWNfdXJsOnBpW2ldLnBpYytSZWZlcmVyLFxcXFxuICAgICAgICBkZXNjOighcS5pbmNsdWRlcygnbmFtZScpP3BpW2ldLm5ld19lcC5pbmRleF9zaG93OigndXA6ICcrcGlbaV0ub3duZXIubmFtZSkpLFxcXFxuICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrcnVybCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgIGNvbF90eXBlOidwaWNfMV9jYXJkJ1xcXFxuICAgICAgfSk7XFxcXG4vKlxcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6J05vLicrbnVtKydcXFxcXFxcXG5cXFxcXFxcXG7igJjigJg8c21hbGw+JytwaVtpXS50aXRsZSsnXFxcXFxcXFxuJysoIXEuaW5jbHVkZXMoJ25hbWUnKT9waVtpXS5uZXdfZXAuaW5kZXhfc2hvdzooJ3VwOiAnK3BpW2ldLm93bmVyLm5hbWUpKSsnPC9zbWFsbD4nLFxcXFxuICAgICAgICBwaWNfdXJsOnBpW2ldLnBpYytSZWZlcmVyLFxcXFxuICAgICAgICBkZXNjOicwJyxcXFxcbiAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nK3J1cmwrJyNpbW1lcnNpdmVUaGVtZSMnLFxcXFxuICAgICAgICBjb2xfdHlwZTonY2FyZF9waWNfMSdcXFxcbiAgICAgIH0pO1xcXFxuKi9cXFxcbiAgICAgfVxcXFxuICAgfWVsc2V7XFxcXG4gICAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTon4oCc4oCc6IqC5Yi25LiA54K577yM5LyR5oGv5ZWm77yB4oCd4oCdJyxcXFxcbiAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxcXG4gICAgICB9KTtcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEtdXDwn5C3XFxcIixcXFwicGF0aFxcXCI6XFxcInVwXFxcIixcXFwicnVsZVxcXCI6XFxcImNvbnN0IGhlYWRDb2xvciA9IFxcXFxcXFwiIzM1OGNjZFxcXFxcXFwiO1xcXFxuXFxcXG4vL+aXtumXtOaIs+i9rOaNouaWueazlVxcXFxuLypcXFxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxcXG4gICAgIHJldHVybiAoWU1EKVxcXFxufVxcXFxuKi9cXFxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykge1xcXFxuICAgIHZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcXFxuICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXFxcbiAgICB2YXIgTU0gPSAoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkgKyAnLSc7XFxcXG4gICAgdmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpO1xcXFxuICAgIHZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcXFxuICAgIHJldHVybiB0aW1lXFxcXG59XFxcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXFxcXFwiLGlucHV0KTtwdXRWYXIoJ3VwJywnJyk7cHV0VmFyKCdVUCcsJycpO3B1dFZhcignc2V0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFxcXFxcImA7XFxcXG4vL+aXtumXtOaIs+i9rOaNolxcXFxuXFxcXG52YXIgdWlkID0gZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcXFxcXCIsIHt9KTtcXFxcbnZhciBVUF9VUkwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9dWlkJnBzPTMwJnRpZD0wJmtleXdvcmQ9Jmpzb25wPWpzb25wJnBuPScgKyBwYWdlbnVtICsgJyZvcmRlcj1wdWJkYXRlJztcXFxcbnZhciB1cF91cmwgPSBVUF9VUkwucmVwbGFjZShcXFxcXFxcInVpZFxcXFxcXFwiLCB1aWQpO1xcXFxudmFyIHh4ID0gZ2V0VmFyKCdsYjInKS5zcGxpdCgnXFxcXFxcXFxuJyk7XFxcXG4vL+abtOaWsOWktOWDj1xcXFxuZm9yICh2YXIgayBpbiB4eCkge1xcXFxuICAgIGlmICgheHhba10uc3BsaXQoJyMjJylbMV0pIHtcXFxcbiAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgJyZqc29ucD1qc29ucCcsIHt9KSkuZGF0YS5mYWNlO1xcXFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9JyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgJyZuZWVkX3RvcD0xJywge30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICB2YXIgZmFjZSA9IHh4W2tdICsgJyMjJyArIHBpYztcXFxcbiAgICAgICAgdmFyIGZhY2UgPSBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFxcXFxcIiwge30pLnJlcGxhY2UoeHhba10sIGZhY2UpO1xcXFxuICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcXFxcXCIsIGZhY2UpO1xcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuXFxcXG5cXFxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXFxcbiAgICB2YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxcXG4gICAgaWYgKGdldFZhcihcXFxcXFxcImFjY2Vzc19rZXlcXFxcXFxcIikgJiYgZ2V0VmFyKCdzdGFyaWQnKSkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfmjqjojZAnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP5o6o6I2QJyxcXFxcbiAgICAgICAgICAgIHVybDogJ+aOqOiNkCcgKyBzcixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn5pS26JePJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+aUtuiXjycsXFxcXG4gICAgICAgICAgICB1cmw6ICfmlLbol48nICsgc3IsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veeVqicgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/ov73nlaonLFxcXFxuICAgICAgICAgICAgdXJsOiAn6L+955WqJyArIHNyLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+95YmnJyxcXFxcbiAgICAgICAgICAgIHVybDogJ+i/veWJpycgKyBzcixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG4gICAgLy/oh6rlt7HnmoTlhbPms6hcXFxcbiAgICB2YXIgc3Rhcmpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JyArIGdldFZhcignc3RhcmlkJykgKyAnJmpzb25wPWpzb25wJywge30pKTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJyA/ICfimLrvuI8nIDogJycpICsgc3Rhcmpzb24uZGF0YS5uYW1lLFxcXFxuICAgICAgICBwaWNfdXJsOiBzdGFyanNvbi5kYXRhLmZhY2UgKyBSZWZlcmVyLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdVUCcsIGdldFZhcignVVAnKT09J+WFs+azqCc/J+aKmOWPoCc6J+WFs+azqCcpO3B1dFZhcignc2V0JywnJyk7Y2xlYXJWYXIoJ2h0bScpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vJytnZXRWYXIoJ1VQJywn5LiT5rOoJylcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxcXG4gICAgfSk7XFxcXG4gICAgLy/oh6rlt7HnmoTlhbPms6hcXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAmOKAmFVQ4oCZ4oCZJyArICc8L3N0cm9uZz4nICsgKGdldFZhcigndXAnLCAn5oqY5Y+gJykgPT0gJ+WxleW8gCcgPyAn8J+ZiScgOiAn8J+ZiCcpLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCd1cCcsIGdldFZhcigndXAnKT09J+WxleW8gCc/J+aKmOWPoCc6J+WxleW8gCcpO3B1dFZhcignc2V0JywnJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/lt7InK2dldFZhcigndXAnLCflsZXlvIAnKTtcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgfSk7XFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdzZXQnKSAhPSAnJyA/IChnZXRWYXIoJ3NldCcpID09ICfnva7pobYnID8gJzxzdHJvbmc+JyArICfigJzigJznva7pobYnICsgJzwvc3Ryb25nPicgOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOWPluWFs+KAneKAnScgKyAnPC9zdHJvbmc+JykgOiAn6K6+572uJyxcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignc2V0JywgZ2V0VmFyKCdzZXQnLCflsZXlvIAnKT09J+WPluWFsyc/J+e9rumhtic6J+WPluWFsycpO3B1dFZhcigndXAnLCcnKTtwdXRWYXIoJ1VQJywnJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly8nK2dldFZhcignc2V0Jywn5bGV5byAJykrJ2luZ34nXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgIH0pO1xcXFxuXFxcXG4gICAgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJykge1xcXFxuICAgICAgICBpZiAoZ2V0VmFyKCdodG0nKSA9PSAnJyB8fCBnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcpIHtcXFxcbiAgICAgICAgICAgIHZhciB1cmxzID0gW107XFxcXG4gICAgICAgICAgICB2YXIgc3VybCA9ICdodHRwczovL3NwYWNlLmJpbGliaWxpLmNvbS9oNS9mb2xsb3c/dHlwZT1mb2xsb3cmbWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpO1xcXFxuICAgICAgICAgICAgdmFyIGlkID0gc3VybC5zcGxpdCgnbWlkPScpWzFdO1xcXFxuICAgICAgICAgICAgdmFyIGNvZGUgPSBmZXRjaChzdXJsLCB7fSk7XFxcXG4gICAgICAgICAgICB2YXIgc3Rhcmxpc3QgPSBKU09OLnBhcnNlKCd7XFxcXFxcXCJteScgKyBjb2RlLnNwbGl0KCd7XFxcXFxcXCJteScpWzFdLnNwbGl0KCd9fTsnKVswXSArICd9fScpO1xcXFxuXFxcXG4gICAgICAgICAgICB2YXIgc3RhcmxzID0gc3Rhcmxpc3RbJ2xpc3QnXVsnZ2V0Rm9sbG93TGlzdC1wYWdlLW1pZC0nICsgaWRdWydyZXN1bHQnXTtcXFxcbiAgICAgICAgICAgIGZvciAoeCBpbiBzdGFybHMpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgeXVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD0nICsgc3RhcmxzW3hdLm1pZCArICcmcHM9MzAmdGlkPTAma2V5d29yZD0manNvbnA9anNvbnAmcG49ZnlwYWdlJm9yZGVyPXB1YmRhdGUnO1xcXFxuICAgICAgICAgICAgICAgIHVybHMucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogeXVybC5yZXBsYWNlKC9meXBhZ2UvZywgJzEnKVxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgICAgICAgICAgaWYgKGdldFZhcigndXAnKSA9PSAn5bGV5byAJylcXFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdGFybHNbeF0udW5hbWUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHN0YXJsc1t4XS5mYWNlICsgUmVmZXJlcixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9nejI/dXJsPScgKyB5dXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIC8v5YWz5rOo5YiX6KGoXFxcXG5cXFxcbiAgICBpZiAoZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnICYmIGdldFZhcignVVAnKSAhPSAn5YWz5rOoJykge1xcXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0uc3BsaXQoJyMjJylbMF0gPyAn4pyTJyA6ICcnO1xcXFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcXFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXFxcbiAgICAgICAgICAgICAgICB0cnl7XFxcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXFxcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICovXFxcXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcXFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgeHhba10uc3BsaXQoJyYmJylbMV0gKyBgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3B1dFZhcjIoJ3VpZCcsaW5wdXQpO3dyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFxcXFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJ+aKmOWPoCcpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcXFxcXCI7YCxcXFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG5cXFxcbiAgICAvL+WPluWFs+ebuOWFs1xcXFxuXFxcXG4gICAgaWYgKGdldFZhcignc2V0JykgPT0gJ+WPluWFsycpIHtcXFxcblxcXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0gPyAn4pyTJyA6ICcnO1xcXFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcXFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXFxcbiAgICAgICAgICAgICAgICB0cnl7XFxcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXFxcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICovXFxcXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcXFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfinYwnICsgc3QgKyB4eFtrXS5zcGxpdCgnJiYnKVswXSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IHh4W2tdICsgYEBsYXp5UnVsZT0uanM6dmFyIHNjPWlucHV0KydcXFxcXFxcXFxcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcXFxcXFxcXFxuJzt2YXIgeHo9eHIucmVwbGFjZShzYywnJyk7d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXFxcXFwiLHh6KTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5Y+W5YWz5oiQ5Yqf77yB6ZOB5a2Q5YaN6KeB8J+mhidgLFxcXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcblxcXFxuICAgIC8v572u6aG255u45YWzXFxcXG5cXFxcbiAgICBpZiAoZ2V0VmFyKCdzZXQnKSA9PSAn572u6aG2Jykge1xcXFxuXFxcXG4gICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXFxcbiAgICAgICAgICAgIHZhciBzdCA9IHVpZCA9PSB4eFtrXS5zcGxpdCgnJiYnKVsxXSA/ICfinJMnIDogJyc7XFxcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxcXG4gICAgICAgICAgICAvKuWktOWDj+iOt+WPllxcXFxuICAgICAgICAgICAgICAgIHRyeXtcXFxcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcXFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXFxcbiAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgKi9cXFxcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ/CflJ0nICsgc3QgKyB4eFtrXS5zcGxpdCgnJiYnKVswXSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IHh4W2tdICsgYEBsYXp5UnVsZT0uanM6dmFyIHNjPWlucHV0KydcXFxcXFxcXFxcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcXFxcXFxcXFxuJzt2YXIgeHo9eHIucmVwbGFjZShzYywnJyk7d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXFxcXFwiLHNjK3h6KTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v572u6aG25oiQ5Yqf8J+UnSdgLFxcXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcblxcXFxuXFxcXG59XFxcXG4vL2QucHVzaCh7dGl0bGU6eHh9KTtcXFxcbmlmIChzX3RhYiA9PSAn5o6o6I2QJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9mZWVkXFxcXFxcXCIpKS5ydWxlKTtcXFxcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+aUtuiXjycpIHtcXFxcbiAgICBpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFxcXFxcIikpLnJ1bGUpO1xcXFxufSBlbHNlIGlmIChzX3RhYiA9PSAn6L+95YmnJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9kc2pcXFxcXFxcIikpLnJ1bGUpXFxcXG59IGVsc2UgaWYgKHNfdGFiID09ICfov73nlaonKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2Zhbmp1XFxcXFxcXCIpKS5ydWxlKVxcXFxufSBlbHNlIGlmIChnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcgJiYgZ2V0VmFyKCd1cCcpICE9ICflsZXlvIAnICYmIGdldFZhcignc2V0JykgPT0gJycpIHtcXFxcbiAgICB2YXIganNvbiA9IHt9O1xcXFxuICAgIGV2YWwoJ2pzb249JyArIGZldGNoKHVwX3VybCwge30pKTtcXFxcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgIHZhciByID0ge307XFxcXG4gICAgICAgIHZhciBqID0ganNvbi5kYXRhLmxpc3Qudmxpc3RbaV07XFxcXG4gICAgICAgIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkgKiAxMDAwO1xcXFxuXFxcXG5cXFxcbiAgICAgICAgdmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxcXG5cXFxcbiAgICAgICAgaWYgKGoucGxheSA+IDEwMDAwKVxcXFxuICAgICAgICAgICAgdmFyIHBsYXkgPSAoai5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXFxcbiAgICAgICAgZWxzZVxcXFxuICAgICAgICAgICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxcXG5cXFxcbiAgICAgICAgdmFyIHBpY3MgPSAoai5waWMuaW5kZXhPZignOicpICE9IC0xKSA/IGoucGljIDogJ2h0dHBzOicgKyBqLnBpYztcXFxcblxcXFxuICAgICAgICByLnBpY191cmwgPSBwaWNzICsgUmVmZXJlcjtcXFxcbiAgICAgICAgci51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxcXG4gICAgICAgIHIudGl0bGUgPSBqLnRpdGxlO1xcXFxuICAgICAgICByLmNvbF90eXBlID0gJ21vdmllXzFfdmVydGljYWxfcGljJztcXFxcbiAgICAgICAgci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5Y+R5biD5pel5pyf77yaJyArIHRpbWU7XFxcXG4gICAgICAgIGlmIChqLmxlbmd0aCAhPSBcXFxcXFxcIjAwOjAwXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgIGQucHVzaChyKVxcXFxuICAgICAgICB9O1xcXFxuICAgIH1cXFxcbn0gZWxzZSBpZiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnICYmIGdldFZhcigndXAnKSAhPSAn5bGV5byAJykge1xcXFxuXFxcXG4gICAgaWYgKGdldFZhcignaHRtJykgPT0gJycpIHtcXFxcbiAgICAgICAgaHRtID0gW107XFxcXG4gICAgICAgIHZhciB5bSA9IGJhdGNoRmV0Y2godXJscykubWFwKGZ1bmN0aW9uKGEpIHtcXFxcbiAgICAgICAgICAgIHZhciBoID0gSlNPTi5wYXJzZShhKS5kYXRhLmxpc3Qudmxpc3Q7XFxcXG4gICAgICAgICAgICBodG0gPSBodG0uY29uY2F0KGgpO1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgaHRtID0gaHRtLnNvcnQoZnVuY3Rpb24oYSwgYikge1xcXFxuICAgICAgICAgICAgcmV0dXJuIGIuY3JlYXRlZCAtIGEuY3JlYXRlZDtcXFxcbiAgICAgICAgfSkubWFwKGZ1bmN0aW9uKGEpIHtcXFxcbiAgICAgICAgICAgIGEuY3JlYXRlZCA9IGdldExvY2FsVGltZShOdW1iZXIoYS5jcmVhdGVkKSAqIDEwMDApO1xcXFxuICAgICAgICAgICAgcmV0dXJuIGFcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHB1dFZhcignaHRtJywgSlNPTi5zdHJpbmdpZnkoaHRtKSk7XFxcXG4gICAgfSBlbHNlIGh0bSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdodG0nKSk7XFxcXG4gICAgdmFyIGkgPSAwO1xcXFxuICAgIHZhciBrID0gMDtcXFxcbiAgICB2YXIgciA9IG5ldyBEYXRlKCk7XFxcXG4gICAgdmFyIE0gPSByLmdldE1vbnRoKCkgKyAxO1xcXFxuICAgIHZhciB0RCA9IHIuZ2V0RnVsbFllYXIoKSArICctJyArIChNIDwgMTAgPyAoJzAnICsgTSkgOiBNKSArICctJyArIChyLmdldERhdGUoKSA8IDEwID8gKCcwJyArIHIuZ2V0RGF0ZSgpKSA6IHIuZ2V0RGF0ZSgpKTtcXFxcblxcXFxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgaHRtLmxlbmd0aDsgaisrKSB7XFxcXG4gICAgICAgIHRyeSB7XFxcXG5cXFxcbiAgICAgICAgICAgIGlmIChqICE9IDAgJiYgaHRtW2ogLSAxXS5jcmVhdGVkICE9IGh0bVtqXS5jcmVhdGVkKSBpKys7XFxcXG5cXFxcbiAgICAgICAgICAgIGlmIChpICsgMSA9PSBNWV9VUkwuc3BsaXQoJyMnKVsxXSkge1xcXFxuICAgICAgICAgICAgICAgIGlmIChrID09IDApIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGUgPSBodG1bal0uY3JlYXRlZDtcXFxcbiAgICAgICAgICAgICAgICAgICAgaysrO1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0ZSA9PSB0RCkgZGF0ZSA9ICc8c3Ryb25nPuS7iuWkqTwvc3Ryb25nPic7XFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPVxcXFxcXFwiIzM1OGNjZFxcXFxcXFwiPicgKyBkYXRlICsgJzxcXFxcXFxcXGZvbnQ+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3VybDpgQGxhenlSdWxlPS5qczpjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIt+aWsOaIkOWKnyc7YFxcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgaWYgKGh0bVtqXS5wbGF5ID4gMTAwMDApXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gKGh0bVtqXS5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXFxcbiAgICAgICAgICAgICAgICBlbHNlXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gaHRtW2pdLnBsYXk7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGh0bVtqXS50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiAoKGh0bVtqXS5waWMuaW5kZXhPZignOicpICE9IC0xKSA/IGh0bVtqXS5waWMgOiAoJ2h0dHBzOicgKyBodG1bal0ucGljKSkgKyBSZWZlcmVyLFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAnVVA6JyArIGh0bVtqXS5hdXRob3IgKyAnICDml7bplb/vvJonICsgaHRtW2pdLmxlbmd0aCArICdcXFxcXFxcXG7mkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyBodG1bal0uY3JlYXRlZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBodG1bal0uYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPiBNWV9VUkwuc3BsaXQoJyMnKVsxXSkge1xcXFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcXFxuICAgIH1cXFxcblxcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3ml7blhYnwn5CUXFxcIixcXFwicGF0aFxcXCI6XFxcInNnalxcXCIsXFxcInJ1bGVcXFwiOlxcXCIvL+WIhuexu1xcXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9tb3JlXFxcXFxcXCIpKS5ydWxlKVxcXFxuXFxcXG5mb3IgKHZhciBpIGluIHdvcmQyKXtcXFxcbiAgICB2YXIgYSA9IHdvcmQyW2ldO1xcXFxuICAgIHZhciBiID0gY2xhc3MyW2ldO1xcXFxuICAgIHZhciBjID0gYSArICcmJyArIGI7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogYT09bGFiMj8gZ2V0SGVhZChhKTphLFxcXFxuICAgIHVybDogJChcXFxcXFxcIiNub0xvYWRpbmcjXFxcXFxcXCIpLmxhenlSdWxlKChjKT0+e1xcXFxuICAgICAgICBwdXRWYXIoXFxcXFxcXCJsYWIyXFxcXFxcXCIsYy5zcGxpdCgnJicpWzBdKTtcXFxcbiAgICAgICAgcHV0VmFyKFxcXFxcXFwia2V5MlxcXFxcXFwiLGMuc3BsaXQoJyYnKVsxXSk7XFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgfSwgYyksXFxcXG4gICAgY29sX3R5cGU6J2ZsZXhfYnV0dG9uJ1xcXFxuICAgIH0pO1xcXFxufVxcXFxufVxcXFxuLy/liIbnsbtcXFxcblxcXFxudmFyIG0gPSBOdW1iZXIoZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dFxcXFxcXFwiLHt9KSk7XFxcXG52YXIgdCA9IG08MD8wOm07XFxcXG52YXIgbnVtMSA9IE51bWJlcih0KS0xMjtcXFxcbnZhciBudW0yID0gTnVtYmVyKHQpKzEyO1xcXFxudmFyIG51bTMgPSBOdW1iZXIodCktMTtcXFxcbnZhciBudW00ID0gTnVtYmVyKHQpKzE7XFxcXG4vL3ZhciB0aW1lc3RhbXAgPSBEYXRlLnBhcnNlKG5ldyBEYXRlKCkpO1xcXFxudmFyIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxudmFyIHN0YW1wMSA9IHRpbWVzdGFtcCAtIHQqMzAqMjQqNjAqNjAqMTAwMDtcXFxcbnZhciBzdGFtcDIgPSB0aW1lc3RhbXAgLSAodCsxKSozMCoyNCo2MCo2MCoxMDAwO1xcXFxuLypcXFxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxcXG4gICAgIHZhciBtbSA9IHNzcy5zcGxpdCgn5bm0JylbMV0uc3BsaXQoJ+aciCcpWzBdO1xcXFxuICAgICB2YXIgZGQgPSBzc3Muc3BsaXQoJ+aciCcpWzFdLnNwbGl0KCfml6UnKVswXTtcXFxcbiAgICAgdmFyIFlZID0gc3NzLnNwbGl0KCflubQnKVswXTtcXFxcbiAgICAgdmFyIE1NID0gKG1tPCAxMCA/ICcwJyArIG1tOm1tKTtcXFxcbiAgICAgdmFyIEREID0gKGRkPCAxMCA/ICcwJyArIGRkOmRkKTtcXFxcbiAgICAgcmV0dXJuIChZWStNTStERClcXFxcbn1cXFxcbiovXFxcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxcXG52YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXFxcbnZhciBZWSA9IFN0cmluZyhkYXRlLmdldEZ1bGxZZWFyKCkpOyBcXFxcbnZhciBNTSA9IFN0cmluZygoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkpOyBcXFxcbnZhciBERCA9IFN0cmluZygoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSkpOyBcXFxcbnZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcXFxucmV0dXJuIHRpbWVcXFxcbn1cXFxcbi8v5pe26Ze05oiz6L2s5o2iXFxcXG52YXIgdGltZTEgPSBnZXRMb2NhbFRpbWUoc3RhbXAxKTtcXFxcbnZhciB0aW1lMiA9IGdldExvY2FsVGltZShzdGFtcDIpO1xcXFxudmFyIFNHSl9VUkwgPSAnaHR0cHM6Ly9zLnNlYXJjaC5iaWxpYmlsaS5jb20vY2F0ZS9zZWFyY2g/bWFpbl92ZXI9djMmc2VhcmNoX3R5cGU9dmlkZW8mdmlld190eXBlPWhvdF9yYW5rJm9yZGVyPWNsaWNrJmNvcHlfcmlnaHQ9LTEmY2F0ZV9pZD0yMiZwYWdlPScrcGFnZW51bSsnJnBhZ2VzaXplPTEwJnRpbWVfZnJvbT10aW1lMiZ0aW1lX3RvPXRpbWUxJztcXFxcbnZhciBVUkwgPSBTR0pfVVJMLnJlcGxhY2UoJ3RpbWUxJyx0aW1lMSkucmVwbGFjZSgndGltZTInLHRpbWUyKS5yZXBsYWNlKCcyMicsZ2V0VmFyKCdrZXkyJykhPScnP2dldFZhcigna2V5MicpOicyMicpO1xcXFxudmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoVVJMLHt9KSk7XFxcXG5cXFxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKXtcXFxcbmQucHVzaCh7XFxcXG4gICAgICAgICAgdGl0bGU6Jysx5bm0JyxcXFxcbiAgICAgICAgICB1cmw6XFxcXG5udW0xK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcXFxuICAgICAgIH0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICB0aXRsZTonLTHlubQnLFxcXFxuICAgICAgICAgIHVybDpcXFxcbm51bTIrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxcXG4gICAgICAgfSk7XFxcXG5kLnB1c2goe1xcXFxuICAgICAgICAgIHRpdGxlOicrMeaciCcsXFxcXG4gICAgICAgICAgdXJsOlxcXFxubnVtMytgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXFxcbiAgICAgICB9KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgICAgICAgdGl0bGU6Jy0x5pyIJyxcXFxcbiAgICAgICAgICB1cmw6XFxcXG5udW00K2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcXFxuICAgICAgIH0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICB0aXRsZTpnZXRIZWFkKCgn5b2T5YmN5pe26Ze057q/OiAnK3RpbWUyKyd+Jyt0aW1lMSkpLFxcXFxuICAgICAgICAgIFxcXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcXFxuICAgICAgIH0pO1xcXFxuLypcXFxcbmQucHVzaCh7XFxcXG4gICAgICAgICAgdGl0bGU6IGdldExvY2FsVGltZSh0aW1lc3RhbXApLiBzcGxpdCgn5pelJylbMF0sXFxcXG4gICAgICAgICAgXFxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgfSk7XFxcXG4qL1xcXFxufVxcXFxuLypcXFxcbmQucHVzaCh7XFxcXG4gICAgICAgICAgdGl0bGU6IGdldExvY2FsVGltZShzc3MpLFxcXFxuICAgICAgICAgIFxcXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcXFxuICAgICAgIH0pO1xcXFxuKi9cXFxcbmZvciAodmFyIGkgaW4ganNvbi5yZXN1bHQpXFxcXG57XFxcXG4gdmFyIHIgPSB7fTtcXFxcbiB2YXIgaiA9IGpzb24ucmVzdWx0W2ldO1xcXFxuIGlmIChqLnBsYXk+MTAwMDApXFxcXG4gICAgdmFyIHBsYXkgPSAoai5wbGF5LzEwMDAwKS50b0ZpeGVkKDEpKyfkuIcnO1xcXFxuIGVsc2VcXFxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXFxcbiBkLnB1c2goe1xcXFxuICAgICAgICAgIHRpdGxlOmoudGl0bGUsXFxcXG4gICAgICAgICAgaW1nOidodHRwczonK2oucGljK1JlZmVyZXIsXFxcXG4gICAgICAgICAgZGVzYzondXDwn5C3Oicrai5hdXRob3IrJ1xcXFxcXFxcbuaSreaUvumHjzogJytwbGF5KycgICAgICAgIOWPkeW4g+aXpeacnzogJytqLnB1YmRhdGUvKisnXFxcXFxcXFxu5o+P6L+wOicrai5kZXNjcmlwdGlvbiovLFxcXFxuICAgICAgICAgIHVybDpcXFxcbidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxcXG4gICAgICAgfSk7XFxcXG59XFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpobXpnaIt5LqM57qnXFxcIixcXFwicGF0aFxcXCI6XFxcImRldGFpbFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxcXG4vL+minOiJslxcXFxudmFyIENvbG9ycyA9IFtcXFxcXFxcIjRcXFxcXFxcIiwgXFxcXFxcXCI1XFxcXFxcXCIsIFxcXFxcXFwiMFxcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIiwgXFxcXFxcXCJBXFxcXFxcXCIsIFxcXFxcXFwiM1xcXFxcXFwiLCBcXFxcXFxcIjhcXFxcXFxcIiwgXFxcXFxcXCI5XFxcXFxcXCIsIFxcXFxcXFwiQlxcXFxcXFwiLCBcXFxcXFxcIkNcXFxcXFxcIiwgXFxcXFxcXCJEXFxcXFxcXCIsIFxcXFxcXFwiRVxcXFxcXFwiLCBcXFxcXFxcIjZcXFxcXFxcIiwgXFxcXFxcXCI3XFxcXFxcXCIsIFxcXFxcXFwiRlxcXFxcXFwiXTtcXFxcbnZhciBDb2xvciA9ICcjJztcXFxcbmlmIChnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicpIHtcXFxcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcXFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxcXG4gICAgICAgIHZhciBDb2xvciA9IENvbG9yICsgQ29sb3JzW251bV07XFxcXG4gICAgfVxcXFxufSBlbHNlIHtcXFxcbiAgICB2YXIgQ29sb3IgPSBcXFxcXFxcIiNGQTcyOThcXFxcXFxcIjtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcXFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFxcXFxcIicgKyBDb2xvciArICdcXFxcXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcXFxufVxcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIGRlc2M6ICcyNTgmJmZsb2F0JyxcXFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcXFxufSk7XFxcXG52YXIgYmFuZ3VtaSA9IGdldFJlc0NvZGUoKTtcXFxcbmlmIChNWV9VUkwuaW5kZXhPZignYXBpLmJpbGknKSA9PSAtMSkge1xcXFxuICAgIHRyeXtcXFxcbiAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge30pO1xcXFxuICAgIHZhciBiID0gSlNPTi5wYXJzZShhLnNwbGl0KCdcXFxcXFxcImVwTGlzdFxcXFxcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxcXG4gICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbD9haWQ9JmJ2aWQ9JyArIGJbMF0uYnZpZDtcXFxcbiAgICB9Y2F0Y2goZSl7XFxcXG4gICAgICAgIHZhciBhID0gZmV0Y2goTVlfVVJMLCB7cmVkaXJlY3Q6ZmFsc2V9KTtcXFxcbiAgICAgICAgdmFyIGIgPSBhLnNwbGl0KCd2aWRlby8nKVsxXS5zcGxpdCgnXFxcXFxcXCInKVswXS5zcGxpdChcXFxcXFxcIj9cXFxcXFxcIilbMF07XFxcXG4gICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPScgKyBiO1xcXFxuICAgICAgICB9XFxcXG4gICAgdmFyIGJhbmd1bWkgPSBmZXRjaChydXJsLCB7fSk7XFxcXG59XFxcXG52YXIganNvbiA9IEpTT04ucGFyc2UoYmFuZ3VtaSk7XFxcXG52YXIgdiA9IGpzb24uZGF0YS5WaWV3O1xcXFxudmFyIHAgPSB2LnBhZ2VzO1xcXFxudmFyIGNhcmQgPSBqc29uLmRhdGEuQ2FyZC5jYXJkO1xcXFxudmFyIHJlbGF0ZWQgPSBqc29uLmRhdGEuUmVsYXRlZDtcXFxcbnZhciB0YWdzID0gZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHRcXFxcXFxcIiwge30pO1xcXFxudmFyIHNldHRpbmcxID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+ato+W4uOmhtemdouWIh+aNouaIkOWKn/CfkYzlj6/og73lubbmsqHmnInku4DkuYjlj5jljJYnYDtcXFxcbnZhciBzZXR0aW5nMiA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaTIudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/pmpDol4/pobXpnaLliIfmjaLmiJDlip/wn5GM5Y+v6IO95bm25rKh5pyJ5LuA5LmI5Y+Y5YyWJ2A7XFxcXG52YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXFxcbnZhciBsaWtlX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2xpa2UnO1xcXFxudmFyIGNvaW5fdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvY29pbi9hZGQnO1xcXFxudmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcXFxudmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXFxcbnZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcXFxuXFxcXG5pZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXFxcbiAgICB2YXIgcmVkaXJlY3QgPSB2WydyZWRpcmVjdF91cmwnXTtcXFxcbiAgICB2YXIgeW0gPSBmZXRjaChyZWRpcmVjdCwge30pO1xcXFxuXFxcXG59XFxcXG5cXFxcbmV2YWxQcml2YXRlSlMoXFxcXFxcXCJYVWlGVDF2WFlXclV3K1ZocG5xbGcwTjB2QVdncGdsaDhNaForOXZQRDk5Tko1VmdlRmRIbXdhS2F3SXk2QzBoNkZGUWhFUTVSaEptVjBFUUhuTDl4eWJQSEFjaEFMN2haRVpkK2hiR0hWNWplRytuSzVRM2llNzhwdUdEYjFUSjRmQUk3ZzZlekxJalFNQnhOLzJYTTkyWU5OUEtESGRoTElNUUdWNjlNcThjVE9XaktwWlFwMC92Z051eGFQUUtFelNkSFFKdWU3dFR4ZFNFdkR0M3MvdHhkRWgvb0d6RkNDTldlWkNVVTUzemhFaEMwNnE2WkZqWkNNK2Q4RnNaNWNYbE5KZW10ZWdNZ0pVTGRUcWFWZFJ3VmhWWCsxdUJROU55MERwc05HeDJMd0hnT2psczlodzE0TGhFcXRoRWU3M3lQQkd2U2dLRUJkU1lnRzdjSzdoWVZURU5lR1RpUkF6S1BRN2pHRXFFSjhhYWRIT0hBZVNhMjVhQmJ6YzgxaGh4Z1h0aWFsWDhVcWVwbjdrNGcyR2tzcW9HM0pWSStxVGZXWnhQV3FOTS8walVYYnJVVENSWm5yekdWb3c2TndQUVhLcTNDREtsOWkrYVp2ZVd6NUlmNUVORVpHaVdsVzV6NGFKU0VjZXhDRHNpWmxvMS9RSklqMnJXb25FMHU1NGFoMi9aWi8vWkdvTUJKK2QxOUdtZXBrTEJEM24ycW9nS25qWmoycmpXcWdQYWRFZWUxWkloWjNTR2JtVGxKZjFBNEJZSXV1UHd2NGRHWmRSb0RXNjRCaEM1anVDbjZ3RG03WW15N0JYZjFzUWFGaW1FbnJTSWlIR2hNK1dLZzNJeVdlY3VoL0drKytNbU42QXh4Y3ZOQXlwOGJDNGh6Qk12WkovbDV0UnlhcG9tZENWNUJwaVhmamtXUm5ib3BJakkrV0tCM2ZDYVl5UmRlTkxFUktuRWxzY0RpejdVZW5McHJoWWMvYTRMc0dlTU1GVlo4WW84L3dHWUgzOEpcXFxcXFxcIilcXFxcblxcXFxudmFyIHB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvLycgKyB2LmJ2aWQ7XFxcXG52YXIgbW9kZSA9IGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaS50eHRcXFxcXFxcIiwge30pO1xcXFxudmFyIG1vZGVfdXJsID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfLCDngrnkuKrop4bpopHor5Xor5XlkKcoXl9eKSAnYDtcXFxcbnZhciB6bCA9IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdwYWdlJywgZ2V0VmFyKCdwYWdlJyk9PSfnm7Tpk74nPyflhbPpl60nOifnm7Tpk74nKTtyZWZyZXNoUGFnZSgpO2lmKGdldFZhcigncGFnZScpPT0n55u06ZO+Jyl7J3RvYXN0Oi8v54K55Ye75LiL5pa55YiH5o2i5riF5pmw5bqm8J+knyd9ZWxzZXsndG9hc3Q6Ly/lt7LlhbPpl60nfVxcXFxcXFwiO1xcXFxuaWYgKG1vZGUgPT0gJ3loYycpIHtcXFxcbiAgICB2YXIgbGF6eSA9IHloY1xcXFxufVxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogdi50aXRsZSxcXFxcbiAgICBkZXNjOiAn5o+P6L+wOiAnICsgdi5kZXNjICsgJ+OAgOexu+WeizogJyArIHYudG5hbWUsXFxcXG4gICAgdXJsOiB0YWdzID09ICd1cCcgPyAnZmFuJyArIHNldHRpbmcyIDogJ3VwJyArIHNldHRpbmcxLFxcXFxuICAgIGltZzogdi5waWMrUmVmZXJlcixcXFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICcgICcgKyBjYXJkLm5hbWUsXFxcXG4gICAgcGljX3VybDogY2FyZC5mYWNlK1JlZmVyZXIsXFxcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2d6MT91cmw9aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vaDUvZm9sbG9377yf77yfdHlwZT1mb2xsb3fvvIbvvIZtaWQ9JyArIGNhcmQubWlkLFxcXFxuICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJ1xcXFxufSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn4oCc4oCc4q2Q77iPU3RhcuKAneKAnScsXFxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgY2FyZC5uYW1lICsgJyYmJyArIGNhcmQubWlkICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcXFxcXCImJlxcXFxcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXFxcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXFxcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxufSk7XFxcXG5cXFxcbmZ1bmN0aW9uIHJlcXVlc3RfYmlsaV9hcGkoYmFzZVVybCwgU2VjcmV0SWQsIFNlY3JldEtleSkge1xcXFxuICAgIGlmICghU2VjcmV0SWQgfHwgIVNlY3JldEtleSkgcmV0dXJuIHJlcXVlc3QoYmFzZVVybClcXFxcbiAgICBldmFsKGdldENyeXB0b0pTKCkpXFxcXG4gICAgbGV0IG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xcXFxuICAgIGxldCBkYXRlVGltZSA9IG5vd0RhdGUudG9VVENTdHJpbmcoKTtcXFxcbiAgICBsZXQgc291cmNlID0gJ2JpbGktYXBpJztcXFxcbiAgICBsZXQgYXV0aCA9IFxcXFxcXFwiaG1hYyBpZD1cXFxcXFxcXFxcXFxcXFwiXFxcXFxcXCIgKyBTZWNyZXRJZCArIFxcXFxcXFwiXFxcXFxcXFxcXFxcXFxcIiwgYWxnb3JpdGhtPVxcXFxcXFxcXFxcXFxcXCJobWFjLXNoYTFcXFxcXFxcXFxcXFxcXFwiLCBoZWFkZXJzPVxcXFxcXFxcXFxcXFxcXCJ4LWRhdGUgc291cmNlXFxcXFxcXFxcXFxcXFxcIiwgc2lnbmF0dXJlPVxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICBsZXQgc2lnblN0ciA9IFxcXFxcXFwieC1kYXRlOiBcXFxcXFxcIiArIGRhdGVUaW1lICsgXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcIiArIFxcXFxcXFwic291cmNlOiBcXFxcXFxcIiArIHNvdXJjZTtcXFxcbiAgICBsZXQgc2lnbiA9IENyeXB0b0pTLkhtYWNTSEExKHNpZ25TdHIsIFNlY3JldEtleSlcXFxcbiAgICBzaWduID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkoc2lnbilcXFxcbiAgICBzaWduID0gYXV0aCArIHNpZ24gKyBcXFxcXFxcIlxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcIlxcXFxuICAgIHJldHVybiByZXF1ZXN0KGJhc2VVcmwsIHtcXFxcbiAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJTb3VyY2VcXFxcXFxcIjogc291cmNlLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJYLURhdGVcXFxcXFxcIjogZGF0ZVRpbWUsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIkF1dGhvcml6YXRpb25cXFxcXFxcIjogc2lnblxcXFxuICAgICAgICB9XFxcXG4gICAgfSlcXFxcbn1cXFxcblxcXFxuZXZhbFByaXZhdGVKUyhcXFxcXFxcIkw3QXZKNDFDKytrbGxCTVBHOUpSVFV6UXZFakpYd1JyZlJpSm1FQnVmVVRwTHBod2hsNm00cUVmSkdORmNUcXZETm9UWmkrWFd6OEh4dTdVMlU1N3NzQW9CTWZvL2VBNjh6dVZEa1g4L01Wb3BsVHpPcWpVTzZWNXBFTFhZaUZXWFJ4RjJ2bzNWNnEyRENOc1hSUTB5ejR2aDFUcXlMR21RYUtaUkZYcHk1QVFkS1JQay82VXA5dnM5OWJ2YWw0ZVRJWUpxWVlmWXMrclBteGFIOG1pMzI0QThGWjdQNkZKd2UrUW9BMjdZVitXMDkzZEhJVS84R2hvVS9XNmtxMEwrZ2lES0E0WE8zQUNDRXE5a2lxV04vREQ1WWl1T0lXQncxZ296VWdOS3dXUVRkRmdMc01aTmsvajNXQTdoS29GZzhTR0RFenRiQkRoZmdXd0FicFFpVnEvS3NlMVNlaG9DUzd5bTJNMUVhaEp0eFNibUxPNEVnd3diTS9nc054Q2xIcmQ3c3AzMVcrNCttQk42d25wWUtvcmFWbGtTVDVpVFN1TGEyNzNjTTlObm1OZmZSMjlRR2crN3hPVzducTh5MEpuNS9iUEwwQlNaNUF0UnFMcnZyczZOWDlRYVhUaXlZQ1FSVS9HUmtwc280ZDZITXZLTUxXYWh4ak9uRkNSbXVNQitrRzVBWDRSdmNycVZ4ek5lQUp1S0M1bmxFZlhqRFJYb0U1bE04VUtiS1N1TmRSakhUUERwaUcwOFZucmo0TWZxMWFXb0RzbmRQWVVpSUo1T1NwMlpaTE84K0tZSVZlR1d5SVZRYStkaWtyRVM3K2FuRVViT3NMQ3hmZmRBZVRLcmNUVzU4VTZpbGFLcElHWm1BSkpJOTZxSzlaUnNNeU11WVpuUUU1R3BLZXgrMnQ0dzlZNXFGZHdpRDFkTDVhRm9qNmFlZmNaR0dWdy9ZOWdVK1l2bHBoYklSUDZTRUlzbFY5YUgvcU5MUHJrNjBWZnZMT2xNNTVNdmxNWnR5TkRKQmZDVlpZdlNyQUhZSHg5MVY5MmhtT1krMFFlVkVVZUFMbCtIQVYwcXV0SUVXcjVlR2VNOUJUWWY4cHIyQjZvaDU2TGFxekFQWE5UMnliYXVRa0dWeGFzeEMwczdkVGRnOXV3YmlqR0VrdG94aElsL1hEZFJPdy9OUytqV2lDUUFWaERzdFAwdzJkVG94MUhRRnVUOVdCdUtqTVNaTEtOZlNxSlM2TWcwMjZMQ0FZWVlEcW1HRTB5bzVsdlJFbWJHU3dOU256d0ttNHF3cFdackFwSWFBZnJucGx0Um9kdnl3RXR0RitiZ1lGV0JYb1l0NUFtQ25abkY2SEs1eG1RYVdUTWZwbGo2RHpFMy9QQ0FkOWNGN0c4MXdHa0RhSmg2eG1YRU16RGNvSFpkQ3liWDdKK3h0MzFjY0ZUMjUyeCsrK0tKUVpwWXkwUDZWN2Npc3J4bEZHNlNNWEdMTUhyRWs5NCtjZDkrYWNwNjNjcWJSM1gwSVJuSUpYZDlVUEZ0WGtwNnZEVWxMNHlTakdDUnZXVUo5L3llQWk1NFdPSlhuM1g0VCtWc2NVNXgvWi9MeXJvUUFoMGZRMVZcXFxcXFxcIilcXFxcblxcXFxuLy/oh6rlrprkuYlhcGnpoblcXFxcbnZhciBtQXBpID0ge1xcXFxuICAgIGF1dGhvcjogJycsXFxcXG4gICAgdHlwZTonJyxcXFxcbiAgICBpZDonJyxcXFxcbiAgICBiYXNlVXJsOiAnJyxcXFxcbiAgICBzZWNyZXRJZDogJycsXFxcXG4gICAgc2VjcmV0S2V5OiAnJ1xcXFxufVxcXFxuaWYgKG1BcGkuYmFzZVVybCAmJiBtQXBpLnNlY3JldElkICYmIG1BcGkuc2VjcmV0S2V5KSB7XFxcXG4gICAgcHV0VmFyKCdhcGknLCBKU09OLnN0cmluZ2lmeShtQXBpKSlcXFxcbn1cXFxcblxcXFxudmFyIGFwaUluZGV4U3RyID0gZ2V0VmFyKCdhcGlJbmRleCcsICcnKVxcXFxudmFyIGFwaUluZGV4ID0gcGFyc2VJbnQoYXBpSW5kZXhTdHIpXFxcXG5cXFxcblxcXFxudHJ5IHtcXFxcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgdmFyIHBhcnQgPSB2LnZpZGVvcyAhPSAxID8gcFtpXS5wYXJ0IDogJ+W9k+WJjeinhumikeaXoOmAiembhu+8jOeCueWHu+atpOWkhOaSreaUvic7XFxcXG4gICAgICAgIHB1dFZhcignVUEnLCAnO3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjBcXFxcXFxcXFxcXFxcXFxc77ybXFxcXFxcXFxcXFxcXFxcXO+8myBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM277yG77yG77yG77yGUmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW99Jyk7XFxcXG4gICAgICAgIGV2YWxQcml2YXRlSlMoXFxcXFxcXCJpZm56cWFOcU5Sa042TnFHMGZaeDVNZXk0NzdPc01KT1RiVGQ5U2FqTWtmNVI1TzM5NkoyMkZ4a2JRYmtYWENwZ2dmdWFkNW8rM3A5N0xIV2JJcHRvdzRvK01SUXRhUDAvOHdpeUpDclpDYVpZVzY0d1UxQjYweFJCUXRiZEpDRWdSdUhob1pzYkdBWkJBNDMvVFh4R3dJa0Nja2JWNm56SGhtOTNEazVEaUM1STVIbitDZmlCTUU0eVFvMzlPVUp5M3BHQVdsakQxc25wekdoQmoxYjNIclR2eWtqRmFTUGduUy9NVWRKTWYwUVpJU05HVTh6NW92YW5Qc0grRjVXc1FnSGdJcXhXOWV2VjMrdGd5ZkxVZEZSME40RGx0TFlydzd2Q1BnelBRWC92d0JNUHk2WWNWdFNWS2piNlF6RmF1VE4rSjJJUllycGF5MTVha0Frb2ZhK1l4L2ZOVGVmNCs2WmFWem1YZVphRWFqMGJRL0hQWmlieFR6M1MrRG1VVmRnWXUwSFhNeTBDRkNYU3QzK2VPVU45YytFbVZBTHJOTjhPcVdyUGVrcnZGMXFOMVVLdjZrQmNCRVAvU3drdWZzM3ZNMDdmV3YvUk5KWUI3aEVoc29JeHl2SFFPaVBZQ1REK2VVcytmaCtVOWJSUkFVelJTbFhDemhXWGpEZkNKalkvOUIybDRScGgvbndvcEVNcWlpNXBKQ0pVUFRjL0g0VWZ3OUZPTFpteE1IYkVpV2ZmcDByZ2JwSG9LblJuendZZmcvUks3bjl6TEFkR0FLLzh1R2Ewc2xaNUlUMVhVZXFyUHNDcXQzTUg1RzJteXhCRGxxRDBZUVViNk5XaEk3cGpqcGluNmJXMnRod3pINE5UL1RwNENXcEhsVnljQlZXc1NnaEd5U0JFUVJwQlFLTE9UdjFFdk94Z0Z4aDlHWWN1OVQ2V1B1ZmJFbkRnL0xLOXJncjJwd29JM1lJajBwMkJiQm1YN3ZNaFB4S0tMcHhaaTQzSndWZjlIeG4zMU5hWVFpLzBTMXpUQ2c5UzI2dFVnQXE0OHJpK0VpM01IVWtJNldzTWJBNzNMbmZnQmo3N0RBbFFsNVFPa1V2L3BIaHlZbGlpUTJYWWFZeFNIK2hHNCt0QStLNnVQMGhES2VRTGsvZjl0N2krNllPMFUrOEdpL1h3SEFzdDZDTDdJL0tpQmZGUG5OWUx4WkJ4OUUwc1FlckkrOFlLRjJKZlRvdHZIZmM5aVNmM0xlQWNVeld5L0dzWXIyMHF6RTErMmhxVW54UWJxaUVqbGFNcWVyLy9RbzU4T3crRm1wUXAxd3UrN2hnZnI2UmtLNFl3eGtld2VYaE9SZkNCTnFJQkp6dHdaMWZCMG1icFJOM2NrbnpEaWNyYW1tM2pXa0RpWXpmL0pNM2hZczNjcnlsZEd5WHFyMjhKNnU4eExhU0RYRi95VVF3YlNGV0pNc3Q0K2lqUzNIN0RVNXdZamdraEV6aEJWS3g3MjRMVW1rcFVUYVJUajAwSmdDTXNsSER5eXZMU05aV2Mvc0luL3ZXU0FIVTlxMkNZUjdDOUNJa0d1STBrT0tIMG53S0tpMXhXZjladzFpdmdMeGtVbE9FSUZOcFE4WGQ0UnZpampHTHJ4UVIyem1zcnFMalRoanBuUjlyeWwycXVUbStIbXVpZWpzR01XR0lYS2t5cGRMWVBudmNIZkgyY2xXZ1U3MVZKeFdyejZLazdMaklHejZtRm9qNDVaWjdGL2oxdGpYTWg4bHJZQmxLZFhqemxEY3MyaHM5Sjl1QWN4S1dqUlhteTh1S0M0WnU3TWZWSzBrY0RmdnRBZmNrbmVuUmd3aFpGS3BTSHk2SDhmSWwwV25IUGJVU041L1ExSWlrOGthYUMwTVNiUjhLVjQ2dmhFZXZRZFBvZXhYN0NqcFNqWmtGQUtTRi8ya3VEWHlHc3pMejJoTk9rRzBpMUJta3hoamM2My9BUWx5S2l6azMwTUpCZk5QVkU2eTlxREVzZFhtTE1zb3VIOHA3MEh5SC9Lb2VseUFraStVZmRsS1FOajE3SG9ZR1NpblFrYmIyaUZXRzlORE9Xd3JqOFpRdVhUaU5LVFhKT3JIOGxUMSsxNjRFR2pYZTUrZnpmVW1BTTBDTFJNVFIvTnE1ek5WZ2U5UEYvVlBOZlUwZE5WY29MbVlQNkRUVTVPemcwYnNveDFhOFNnbmR4RlI5YlNOUnpabnpQR0pvNkhLR2NmYlZhU1VGUUNUZDZVYnpUZGNwTERUUXF1WndQRmJkZFNvWWpkc0Z1a25QQ0UyVXA2cmsvZTFkaDlLcjhtYUU4Rlk4Q09uQnU3QjFXZFBkeXVXZXo3eFB0c2h6QUl3UmVrSU9tRzBvbVNsYnh1WHcwYjlXdFBBWFJNVGVQZ2FiRHU4QnJ6MC80czBlb0JDUjZjdlhpd0tBWDhERkk5dno0Zm51ck5MZDdoWklrQ3ZBblQzUncvdFN0c1MrOHJGVW1HMDNpYVFtSm4zeVhhaVp3MU1TSGtSVnFXdERaOHpTQWtycW9ZQTdRM3V5WGRKTTZNcUNYRWJDZmdYbGdQNENBOGdMcjh0dndoNG5YRm1ZU2FhR2xFTVlDaGhWc1AwVG9uc2d5R2M2WkhyRitrSDJsREdTcXhNTmVCK1FUTnNOSGdyRVJyaHg2NnhPeWxzSVpFd0xDZXZuZm1RcC9DTHo0TWNDdDBGV3pobkpRMk5BaDgxMW1Pd2I0MmkzWE9qbnRrdEhUMnRRTVFRS0JnZFRuWWpHWUt3MEI0MTQxdWVCTmF3R2FaM2xMYVhXVDdZdUdRYUZLcFhkemttaTVzT2RqVlJ5U2tqVnBBOVlkRWFuU1E1Njg0U2pMWjNCdXRXTmt4SXAzZVF5NDNrK3hva2hQdndqVFZZcEdrYmJCR29DTTh6SUJEeGVxMjJMOUFrY05ZWHV6SmF5L05nM1R1WFdXS0F2MCs4ektkQ1J0dmFJVlliMDBNNWJDdVB4bENESWdWQ2pWQ0hYaWJxc3VQN2pLeVJ6M3RyOW5DWklYKytZQ0FhK1pkWEswUDJlZzF0bEp6ZVdnMjB6VWdFak9rbnNJRmtrMnVCZkwyVUVqTnhkbGxET0lTNzRHcjRCSGJxVEZPdkZCYTFqWmxQYnJmeHVOWTFxL0p6U2RjVkc5MjFlNDdPejhyRkRQdVZFN05mdGEybURmUWw3TTBKVE43VGllQllqZGFBWFBTOURPWU9Qc09WV1VsTzFReGNldHY1Z3dnSTBnSVZocGFYVEk2QXlDMm5ZNHZMaGZoVVpXcmJrZTZzYUd2K04rUWNyQVMvWHF6TlZPMThudGJmTXVlbEZpU25URlNpcllCTnlOYkoyeXRPazVIcU1IeHZPN2NEek1RN0UyemVKSGo4Unl2U0JtdlRxMGpCZExCaUlBaDdlSit4MkpvRVcvM0NiclRiZk95WnorSEZQc083aHN5VHpLYXJEcER2d2Q2R2xPS2dYMlNWbDNTVEQ0YUx1WGQwdk53VlpxSDZFaVJybDhhaFN6THdBRGNZTUlVQkRSd2VHWTNsbnRtdkNYMjF3S1Z0ZGVCR1RvVEtSekRPQVJOZnBHTmJGQkswcndxUHdLM3VZNHRpWHpobW15SmxENksyb1dVNGc5WFlXODJBQmxrNTJNbE9lUVlkMWhXSHJhd3BHcGJIQ0VjNGlxczhOMlNkYWE1QjlxTjRUWUIzWE5OdGkrck5JdEdnOU9wYXN1NW9mZkNGRkliTlptalRjOUVsSzRNd25PVzk5Q0dtNDAyTWE0L2VrMGxVSFBrck04VVc2TkNBRElvdkMwa21yVlVveG5TMEhReHNmZ1dRSWxrTlBEOUZVZk80aUpmMmYzaVRnenQ5aEUyT2dUMkNqS3dLcDhIQ2p1aGNhNUZjczFTbERsaFNBS2VITUg5dzJVZi9uNXVRNm5CMFdVV0NOc1J2OUROME1XZkN4VjdGTnhVbGEyd2NQSWJVdFlSTmpvRTlnb3lzQ3FmQndvN29YR2dDWkZscW03OHZ0cUNiZUsyOGlYempGY3QrNDh0MGtjNmJFaXFQMjhLbllGOG5BVm5GUUkyT0llUXZLYklIQXMvVFhsczI2M1FsYWpkSFVwTUtaTmsvQUJLRy8rcWtXMmRXUUU5V21QQ2VQT3ZkVm1BYVBNeDJ5N0xuM2oyN1VWUlBsSXBuaU82cjZXUDJkVDRhbWZwYTREVDl3OERrdEgwajM5WmE1S2JCanFZVDMwOEVhWDI3eFJ1L3EvTlhjWGhrWFA5SURaeVJTQ2N1Wmt4ZjZUWjRRS3BIbjV2empvdUlhY1NQTVR0YVN0cHlGRHZOR0hUK3hWNkVZdUJxNXIvZ0NkNk9oU2JMREtxSHp2Y0JDREJMTTJPUDQvRVIyc2h2N0dyTDJJYnN3S1hRWTVTVUlFMXg5bmVIMnI1R3g0MVAwYmZPVnBtbEx0Qk5NUkVQbE00alQwT0pqTXVoRC9PdUcyaDQ5UXhlSnFVS3FDcXJXOHJBV2JLSXFGN0RIeEQxbHowek5tNGpFZnNTNi9ZTFNsVHA0cjNjK0ZlZER2YVJpR1NpTG5HRTg3cTViRWR3SzdZYm5WQllNWDZiZENJc0s4UTA3UUprT3ljVU1mbWRDa3FWZTk3UmFDbmxhY0hRYWcwMjRlRm5XSEdGTy9yeC90VXZVWmljMndCcTYveDZqOEFKOEQybG5nbjhYN2FhQXI5UVZzblRKV1lWa3MwaHQzNFNZT01lay9pbkNtTXREc2tTck83K1dURWZDdUNLa2lwN1ZHejUySk1xMnZ6em1teUt5bzJxYThSaFVjY3lYaHltOFdHeDZvdSsrU2lKcXU2Zk16c3dNRzRUdFgvakxSZlgyNFQ4YW9ZcFozbzkzaTlTeGtRbzB0M09RMjBOSCs0bG9Ccld5a3dBU0dGcVdPWC81NTVIbm9Lakd1aGMrNmJNVkZnL2pTM3BESnNYbitmTXU3ZWlkSmF2eVo2VVpqaDBBOEtMNXI3anpBWG5XZTZFaTUvNFA2VnBPVUhZWEtBNXNyRWN6RnBIVVA5UmRWM0l1aUs3NkdQcTZwajVNNUxqS2R3TjVLQk5YdWwwYWdPZTJwSUlTY21zSEtQTXJiMU00MnNEbG9SUWhuZXBOaW84QVJ2MFlEMlE5R0pQT2NCSFU2RVRIV1l6MklpeW45UGlqWlI3WVNwMnA3eWlRQk5HcWpXWUdXdTZMTWxRSWRZUkNKOXBUUnp4dVU4cm56eHhrOFBRQ0Q1cERNUkVDNFpkTW9TWGNtY1ZjSHlNQ21BVUdtaVRSK09yQUNyTHBneWR2dEwra01IVXRaSHZINE1hUjdJeHZpSEZBRVFjenZxSjZMVWtzaTFFZE9MTUkvUnNQY04rUDVFeE1yMnhrMTc2UHNkL3VkanVoNVNTWXNoZmRDcWZrbzlOeGF6aTd5WUk1b2xHRUU0S2lYVXFVa0ZkM3F3a3ZISVZVSWFQMDc1UVQyeVh3VnBzTFRIYUR4ejZGZTNvMGg0TGtsaU84Z0dXYS9pcWtEL0RubThzcnkwaldWblA3Q0ovNzFrZ0IxUFpYd3BnYTAxckRmWWFWVE1WeXhHU0l5eXZMU05aV2Mvc0luL3ZXU0FIVTlqU0lqSWhSa2dweFQvS012NmlIOGxsV0hKMXRqOC9SVENGMENsMmY2V3dUYkZKWWNNYUZsbm1NaXMyQUxWT05QczZVTXZzTy9QT3c1Q2NyNzlzSnppZVdMTVZhT1ZHNC9lMVZQVFNBelk5SDg3T0NKWGV4K2lBT29XK0tBbnJpQnpBVkJkRnd5VXFJZW5MSlZzUkg3VnYzTlY3M01xcnFuL3BrekFYdGtpVUFYd3BLbVZ6ZGJlTkxsZWJva0Rrb21zc3J5MGpXVm5QN0NKLzcxa2dCMVBZM21UUm1TdFNrSGJ4QS9GdGNmaGIzMzRCb3oxWXVYNCtabnBCbFJTd3lUVEUxdUdMWWZlcFphMEo5cFRjOFkvR2JFNnpYdWErZmQzT1lrazRDcFk1aElOVkFOR2JHTUQxWVFscGNvL3IzQTZ2OEg3c2RPNUs3U2paOElUNUpTTFZzcEJGVTN5eXFqUGNkVkc5ZHlEL0xwR3hiVzI3UUJvLzh1MlZocGttOUxjTXczaDhoaXA2Q3pCNlRscHdUMVQ2N1hIa0d6OFVhMUMrU0wvRUV6ZXE5Szk4VlRTVzRGUHllY0ZZN0lVYzQwQVhQbXBxS0lxdGE3U2NqQVl2RDhoWkgzZDNVMVU1My9Tb2NKSEtEajRadjFqYm5GVHNqb2RqVjBmSGVZT2R0NTBQRldjT3hYWWF6OGpnZ2RsMDRCRUZGVWswU3BmdjJ6cmROMjU1S0ZyMW00Z1V4eTNLaTd5RkFQaGRLcnlDSi9oalRSSlFjVERuYTZ5UFNmc2VDRHRvUmttR3YweU5kRTBiaTljNHBXUFFnclZpMFFqZHpIMjVYME5uSkFrbDVZVWlrUGxsRlpYaG4yZFF6TG1NaktQMlJLNkxLUkE1QXBIZ09YWlduR3QwQW1jZlV5dXR3MEdZUkc5ZXdvS0FZUTM4SnRLdlJzZFZJaTZGYzRNeWplMkJid3VMb3QrbDZZeHhQMkZla1Vra2k5OGdiUXEwQ2xwdmJoWjJuNXZjNXFJWjFmdmJTTnRlTkhpMk5zRFcraFVYRThPWWgzQXg5d0FLNkJoTTBEaW54bzZPVm96OGFseHE0NHR0cWtpQVI3RzhIWHptdU1OakxzK2E5K1FJOXFlNkRTYkFCUWo3VUZFaFBjVjFlL2dQVC93Ui9zNW95U1NMdjMzMHRqcnp3bzdwbExvdW5jL3NhN1VlQXhCZXJRVXF5MkFsNDFEYXdGTGVLK21hK2FPTWJPZVo4ZElCYkdaaldSSjZqWFpJZU01ZGtXb2FZNWNSUmNDcDA5cUZtbWhsL2NXc1FWMi9LZnEvRGEydTM4U2ZYckkxVksyZWc3QzJPdms1U1Njc2xzUk5RMFFnb3RDKzRNQ1VSRU04OVJlN0lCOS9pd1d2Kzc5cUkzUy9IbktmeHJ1RnZPV040L3dXSFI2OW9jYWhHeE8vMXQ5dVpRc0tMOE5oNG1GK0xBRllqaForUjRJcEJWdGVYeTZmR2xXOGFRUTFzem0vUzlpSWsrallja2tTbm9WaVladG0ydkdzWlZDSU9jbDB2ckxIbVpNVnlpL0dKOFQ5bC9pU1FxKzlOQURtV1N3UnNXOWpyS1IydXl3R3M5QmhGZXNiVjRYSlhFdnhNTUtqSHB3aHRaRFFBRktLTGZqVTRsTHVQMWtHMUd6M2ZRZ1ZHMENLZ1FyR3h3eWc5Sk5GeDhsSzBwZEVPTytEYVh6VHJIb1h4TTBiSXNmY0xZQ3dLNWxsSUNLQWs4Wk1UNk10YUhNdjB5N2V2TWpCWi8xWWx2UTlla0wwZjYrN2hXN2JHVGhFT3k3eDlJeXliYm85eFU4a0dRMEl3U3lzYkg3OTlleWZLbmxaWlhkVS9ueDRXbjFhMUNQeWdLMTRLdGlYVGRGRFEyTGdDT24ycW9QWmY3TnRJRnhkTDZ5YWVwK0NxcTJ1RU5vcGcwRHp4VHpIYnFYNkRtY1A3UHllakhOT1ZVZzN3REYyUndkM0lreVlDcWdabk42RXJXMVYyNm9pbEZZeVhGWit2N0VIRThCNk1oTG54dExHa1JaWjArRkZJNktuK1hvZTdMTCsyWmFEbzQveXlua1ZSN0JGdVNxaHRLTHZ6amRieVlvVG93aW04NWM2UnEvUkNYdHdnOVJnNHFTRVJHampaeUZjSlEvUTZhSmJ2MExwRXlSbjNxcHA3NXVUM3pjYlRTUlJUVmp6dmN1WElFcmdyMUQvUHVnRm1oT1dlLzJwQjE1alU0MGllKzNjODlveWlhZUlPLzVza2R3UVB6ZzYvWUhOVi8xc1ZWZ09LYVc0STdRQWthU090ZFZQbTZINnd2bHlYRUNBTnZoQ01HZWxGQWUxald2ZEJNdW5WUjhOMlJGU0FPOE1rSUo2bzhMdlVvektEa01RQnQ1cC9jV3NRVjIvS2ZxL0RhMnUzOFNmWEQ1MmdLRDZIOFhWS0ZmbURIYW9TaE1zcnkwaldWblA3Q0ovNzFrZ0IxUGFtYjBxYWJUODNENnFuL2EzR2xIeUd4YW1aZ1JIYUsxNnZtWkV6YW51VERPekcxYVVwdkVDdFJCOEVNZ2FwYVFYTEs4dEkxbFp6K3dpZis5WklBZFQyNnZGcGdhMFpSTFdSUDNqSDB0eXJOWUE3NWVDVGY5ZElxallHY0FBMXJzVTB6ZWVwZE1aOE1KWGQ1K3hiQWFYQS91SmZzR2pQSTdwc1FjOEpuK2ZtM01MaytOQ0VGOExzUTBPdGdsSVhMKzYzRlJ2eUc3bk1jZXZINGkvWFQwQjFCWE5QTDZyOGk2Ym5iZStRSktZTUE5M1BkYkJjRHNHVFZhTGlKbFlkRU9UZmpZYnBMVVJDZGx4OUsvcHVFWFcrXFxcXFxcXCIpXFxcXG4gICAgICAgIFxcXFxuICAgICAgICBpZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXFxcbiAgICAgICAgICAgIFxcXFxuICAgICAgICAgICAgdmFyIGVwID0gSlNPTi5wYXJzZSh5bS5zcGxpdCgnXFxcXFxcXCJlcExpc3RcXFxcXFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcXFxuICAgICAgICAgICAgcHV0VmFyKCdhaWQnLFN0cmluZyhlcFswXS5haWQpKTtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJ+ebtOmTvicgKyBtb2RlX3VybCxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+e9kemhtScsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBwdXJsLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKT09PSflvIDlkK8nKXtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4nLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCx7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOnsnQ29udGVudC1UeXBlJzpjb250ZW50X3R5cGV9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTpsX2JvZHlfdHh0LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOidQT1NUJ1xcXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhsX2NvZGUpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJytsX2NvZGUuZGF0YS50b2FzdDtcXFxcbiAgICAgICAgICAgICAgICB9LCApLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5oqV5biBJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoY29pbl91cmwpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCx7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOnsnQ29udGVudC1UeXBlJzpjb250ZW50X3R5cGV9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTpjX2JvZHlfdHh0LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOidQT1NUJ1xcXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhjX2NvZGUpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oqV5LqGMeS4quW4gSc7XFxcXG4gICAgICAgICAgICAgICAgfSwgKSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgICAgICBcXFxcblxcXFxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlcC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgIHZhciBiYWRnZVR5cGUgPSBlcFtpXVsnYmFkZ2VUeXBlJ10gPT09IDAgPyAoKGVwW2ldWydiYWRnZSddICE9ICcnKSA/ICfwn5KwJyA6ICfwn4aTJykgOiAn8J+Toic7XFxcXG4gICAgICAgICAgICAgICAgdmFyIGJhZGdlID0gZXBbaV1bJ2JhZGdlJ10gPyAnWycgKyBlcFtpXVsnYmFkZ2UnXSArICddJyA6ICcnXFxcXG4gICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gJ1g1Jykge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICd4NVJ1bGU6Ly8nICsganggKyAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXSArICdAJztcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB2YXIgcGljcyA9IChlcFtpXVsnY292ZXInXS5pbmRleE9mKCc6JykgIT0gLTEpID8gZXBbaV1bJ2NvdmVyJ10gOiAnaHR0cHM6JyArIGVwW2ldWydjb3ZlciddO1xcXFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZXMgPSAoZXBbaV1bJ3RpdGxlRm9ybWF0J10pID8gZXBbaV1bJ3RpdGxlRm9ybWF0J10gOiBlcFtpXVsndGl0bGUnXTtcXFxcbiAgICAgICAgICAgICAgICB2YXIgZGVzYyA9IChlcFtpXVsnbG9uZ1RpdGxlJ10pID8gZXBbaV1bJ2xvbmdUaXRsZSddIDooIGVwW2ldWydsb25nX3RpdGxlJ10/ZXBbaV1bJ2xvbmdfdGl0bGUnXTonJyk7XFxcXG4gICAgICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFxcXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2ZMSzh0STFsWnord2lmKzlaSUFkVDJOS1hPeE1MMzR0UHNKY2JGZ1lxMkl3ZXFSV2xjdG5ubjQ2ZEpIR0FvUTZTK1R4c1dKWjNFTGJVQUVmMVZ2MnhvTXJrbDNLb3FXdG8xdTd1OVNVdk50ajF1eEM0ZW51WklFM0lPVkpZZnVsclNJdXFuTUU4K2hsVjM4QlN0WkNrSmYwaVczSGRGMmlzQkhFeFRaZjRscEMyS2Y0dUFzUGZScVU4TjlqYlA0K3F6UHJZckcrWWFXdCtpbnc5WmFHTmE2MDdGdXZMZ0grNHZaYm1mL3RHblJ6YVF2ZjByaHZQbmZCZUV5YU1Bem1tdkFNeDR1MG80MnJ4SG1OS1N4LzJWWmxJcStScUNaeEpKM2JLY1FINCtGL2QwRzVZbVh5T1BaUk5ZTTdSb0J6OHplUUUvaHFCclViclNkYjNWdzhTRHNFeFUyaFdPRXIvMDUybjc0U0VkV1dkYzM3azlCTGFWUEpyZFBGcTNyK1poOGY2aVdnNk5YQnJCK3RVbEdTVlRqWmZzTEQyckJmcHVQZVFRV2RBRXJRSmhJRk05NVB4aDNTNEJIdFVvZFozRjIybWl0TEVmODZJUG8xOHlyZ0hNV1ZhUWE0dVFBNFpNRFQxYWhNODVrNis3TFRtUHR6Nk9OQXh2eUlUNzVzQ3hTY2swWHNMbGhHOWdWOHJVMGZsRDNlK2lXZWtqazFYeXJtZGNLZkZIR3l2SWZxV0Q2ek1SQWRGSUl5WHhOM3N0YnROaTNiUU1VWmdiWW1tcjNRbGUwakFIb1pSTUhkbDFCclMxc2RtTGVwV3h5SEM4cjZVMzVIbUJRTkhwZHZ6aTc3V0dHcjQ0UTRNZ3Y1UlhiSjllSk9GR3psaHJUc0RRejN3QVNXelM3SnhHOGNrNWZWMHVUUmNqZ0pQRkNJODZleEQ2NFQ4dG1za2VrV1hNdFpVamxOSVRQOVJPUE5LR253enJoRlYyUnZWcU5HMEVGSXNXMVd1YmF0YXNpSjZmWG1CVEYwZ3RNbUJLMWFzM0pIV1JoS3JnWWdGQVNkK0U0S1VBdU1QTHRRYjBmdGx5UWlBVFZzYVJyRnpia3B1WWxNQXMxUDlWaVVqL0V4b1hxQU1hUThaSnpvdHNQdmp3K0tQRk1mbnc4QjlFUWN2WjdjQW9LS082K25EU3lIZU0xZXcvdW9XSDJYSk5HTDFQVWM5czFUVWJhS3RVYlMyNmhXTkdNckd6RzJ1MTZvVGxEZnh6QjdLTGpteUlpQ2hCNzQ2Q08zVG5aelhwNHMrdjEvcmZnUFl5QVNHakVqUk45cU1hejdJbC9tTFBpRVVEYWpyTitBVSs2VVpsU1VLWmFhbXpqLzR0SnRsbXBBM2kxOUQ3SXN3MWtEekh3THNZZm1ITVNra3YvOERKcFAyVkRQRzJGQW9SWmtsUmNjOWVVZGF1eUwrUWhDUnpSQUJxdnB6ZTJJWVVUTU1Ha1dtVzJ6VUZyZDdWU3NzcnkwaldWblA3Q0ovNzFrZ0IxUFk1WW84MXFpOGhYV0ZHL3NrVmkxWVRwYzBWNjVVZ1o2SkxJQjZLcDJPb3M4M29naVNGTURKaXNUMk9FQzZHVXhoYlZYYnFpS1VWakpjVm42L3NRY1R3eSszMndLVHpXVi8wM2gyUm9XZEoybm9sMHVDTUdZOWFEQ1BVYlpXVWVhZkxLOHRJMWxaeit3aWYrOVpJQWRUMkFMU1pvcGl2TU00SFZORjNtWTJYTDFBM2plc0lBdHhEUi92QjgvQUlsL1dMckdMYmtQMlNKeDhCS20xaFNOb2dXeWQ0eloxd2FKcXBOY0xiMGxwZnR6ajNCdzFrZ3lNWXBTL25GNS80ZDUyWkxrR0d6YVVNTzNLeGloUEkwdlY0LzZWZW1mRk9Md3pYa1JXcnhSeWhGeFBNY3NHQTZlQXBIbzFoYzFrOW0xVi9DVnVXV2N5Z3ErUjFwejRhV29xSktwdHZUUnVndjE0aHdKVCs3cndHV2l0T0ZWdUszTjEwYXJRS1ZaNmtUOVVDdkdLNEdSa3VaamwvZGJKZjRBeGFjOEZmTSt0Ty9vS05ZQjg1MGg2Z0NiVG1MM1RXMkV1RnVTRG9ZNXFrTXkyMmkxdTJlS095dFI0U1JMRkw0THYrcEVxZkhjc29MbWo3L3pJVXFPTkNrcGhTRk02ZGZ5ZENHOWM0VjVBc29tOHFPQm91enRnQnpLVUhUMG83MGJRM1VUaXQxN0Jab1ZjcWNiZUpleWR2VzNIQ2FWWnkyd2h3d04zYjE2VkhsLy9INGcwZ2lLZkY1N2hKZTR6aVNWbkYycFdzR3JSNWR6ck8wcGVxd0FnWnRvQkRvL21hTFhob3ptR2ZZQWM3d3pXbWJYUWVKdi9RQnJvdTI3T0tNRkRBWFAvY2p5RUVCZ0RIYjFyMVZYTUNpbVUwd3cyVlgwQ2o1WFYrZjBKNVc1N0tVT1NlQ2pidnIrVlV4cW8xNnh3OWtyOHRuUTJRejVrTUl3S2tNSVBpT0poSjJCQXArSmFYbGdNWElpNnJ6dDdJY1lkYnlib2M3RWpkdk0rc3EwQTVCZ1RMWTZFQzlCbmRIZWhodjBhajl1Tnp2b2p2a2d0OGQyKzV4TVliZFhCR1htZHl0aDVwQXluOG9MQkNXVURiV2U4MC85OWV0MWlIL0dESkVmb0RMRGY5cCtrNCswUWJ1V2RFcXVUTzFqQ0pGNTFoN1R4SGwvVVlhL21Kd3VkMC9ZOEQ0ZkVZWlgvVjNoR3BPRDlSMlptamc0SXJwUHB3ZWZqOHcwd2djZnlMejlaTW1zMVBvTW4wcUNubk0rVnU2bjZzeENsUGI4eVd4S2t6TWgwZXdFNG5Kb2NoV2JEazVyY2ZyRTAya3lrRlhGdHUremo4SEpnQUhNYldWbmpueVhJNzZVZ3FEUmVqQUh5Rm1XbVZLNldoR2s3bTZac0pxakppMkU1MzRlQjBqQVZZZjZKYnM3aEFxSlBnRWxlT2VBT1U0ekpNc0FWcmlzdDYzaVJKTWFFTVRqTzQ5OCthbU1Pcjc4V3JLRHpodzZSZ0IrTzlVaExQSzA0MllFN05mempDYjc5OTg3dTl3UVY0UWNyaHRsS09YY2w4TWJadEgwYm1iTmJBT3VYdUlGNWRySlVyallTd1ZRQkRBYVVhTFllemVTdXZyUXdGU0Nid2VUVUpHejFqN3VCVXEzbWFCNE9mSzJuN0cyTjFmQ0sxZUVhdzkyVW5sVkRPMFRmMUxJSTA4SEZ0c1JJbjZZMXAzczlWK0xKUTlpVWQ1WkcwTHdVOTA0RTc1UHB1VkxST0JZSFM0bXJCM1J2ck1oQVdDNmpkdFNURmtsdW12K2MyRUpScmJVcmpyNEErWTQwa0FOTjFVdDFyZHZNYi8wcFJPSlhWc0RmYy9BeU01bjNDZmx2RFZxU2dQSTlibEhGZTFtWjc1Q21JTFM2S3pkRjBZbDFNVkhpUFcwanZvZG54S1lUcHM4aEpOK2FJK2gxV1JHenJKS1pKaWNBdE5kc1dWaExmclZ4VkVQU2VtOWpHenNBYVdQa1ZCR1JPNmpXMlNXN20rYlZEdlJQYlZwYjZnU0JJOG9DVVlPbzcvUTBIYWJxbTdSUE1jc0dBNmVBcEhvMWhjMWs5bTFYdzUwSVJ2bjdWeVBKK3JEQjFHYWRLOXFvN0l1RHYxdC9Xano3ZHZwNGQ0UnB1R3Z5NFpRazlQd1Y1dFR0a1gyREdBdFE4ZmFpdkVJSDcwT2hrcHVDdG5Ia2JvelFDOUJZTHhVZGZJTHZQOHFFOTdyWllrK1hjcWE3aHZsQkc2bjNKZzU2czRycVdlWk5sQi9jRzU1Q1N0UlBFSTZSanJBRHB5L3NZblE0UkVONlVsQXltU3JlczJZWFJMVGFFY1lXa0pXOTgyQy9zZllzY2tiaXpsT3NZc0tBRnAzWHNnRFFSRGFhbyt5SE5KQXBlVlJLMW03aDE4cS9LYlF4RmNwbkRiR1gyTVJ1Y1U1UFVQSnBreXZDbEV2Uks3azF4Mm4wemF6QVE0Z1pmRHdzTS9pbnZNUVRLZVFldHpJcjYvWndUekhMQmdPbmdLUjZOWVhOWlBadFYvcUhNNXRZVTFod1JTcmQ4NUtIMk1wZHQ3TVB0V2ZxNE5kT1lXYk5oUFA4eGxMNkxnSEFXbE15QkRac3VHeUh6RTh4eXdZRHA0Q2tlaldGeldUMmJWYjJXSE0xTVZQZU5QMkp6V0tuVTBIUXViYW8vNDFQcUloK0NXQlIzSFVGWVJ4aXBFQlFiS0EvbUFwQk4xcEhDd0JQTWNzR0E2ZUFwSG8xaGMxazltMVVDUjY3aHY1OWVtNG5WUFptalU1azFCOWJJZHpJbDdXckoxZi9TVW13dnE4anlNR204VEpYaUtnRkV5NjIyZW5rVHpITEJnT25nS1I2TllYTlpQWnRWQ3JsUm5nVEVKQnFWMml5czZxeUxUSjFDcGJuNTFjS3RlNThlTktSa2xDRHVYRmMzR3FsWTBDZUc2RjNRTVZ1cUJNRU45cFhzbW53S3hzRTY1L2ErZWxxZWZMS3lsN0krT1p2K0tCSG5ZWDc5V2pCYjMyQkdoR1puZDFRa3kyeEhQdmY0U3grL3RZTjJ6bmNtcFFxU3d4UE1jc0dBNmVBcEhvMWhjMWs5bTFWVXVVR3hST1pTM0tDRTk2bmFVRjc0bVJtcmRPL2pwdElIZ01qQytHNlY3QnhaVEppdE5FTHN0MEZDSituK0FNWVR6SExCZ09uZ0tSNk5ZWE5aUFp0VkJDUytMZllxclNCR0hrZVlsYXFnYndJTXhFZDFPVlB5Smh1VnhBVW5EdHJLVzBDbnZ1cDh6QTNDVStpTVRsVFJmMk5mSmN4ZWo4ZGlqWTV5M2YxblJXUkVPcFltcllYenRmc1I4UitZK1RlWXhBZXV1N3Nnd3VpVENHcXhjeHE4Y1hGMk8remxhWGVtNUh3SE5XOUcvLzNlbnVrNk1LMkJ0dENRQkhyaXBZb0dBMSt2VStkSi9GK0xSMWlCTHQ0eS9Gc1B4ckpQMXh2djAwWkZrWGdjeUdFaWF1YW1Hd1lkbG4zLzgrdEZnWFJJODJyOWdjc0dYVHlnSU9URjl5aUYwZ29DaDROTnlyYTVTUHpTd2dvbjNjc24rTmhBUVJKdlNGc0xYTEg4Ri9mQ1NDandsL3BpMkdHWTRuQlVlazN3SzZjUUdXNkIrb08zaktTVzlRRUcwL09nSFRieXhiUjlFc3BvbG1ObEIvR3FTTDRLT01ZYXdOQzB2Z1ZaZEpCNWJIbHV0Z2puVHZ2N29ZeWZlYSttSU8xakdiWStqVThWTHgxWVpTSEVOU1RqaTI3NFFqMktPckZFenBYcWlRMkpLWmxtRGhiOUxKOE94Vkx4OEFISGNQNm55V09oaVljRnVRTUZ3ZjlVUklHSHJ6cmp6cHBmN2dzS25KbHRUYmtsbDFsc2ZVSFNkNVpTQUY2UUUzYjhvYjV4NUhtWkZVUVJrVTk0UGxDSHRXNUVGd3dIcUx3czF3M0d4ekdNaHRxZkU4eHl3WURwNENrZWpXRnpXVDJiVmVFN3lNN0x4cXc3NzEvM25OYjc4T3ZwNHViRmNpUnY2QnZYY1Y5MVgvd2xBYjY2Z0RxeXhtN0MrakRsODVQTEp3ZElSQmtlcTBVcG1LUnZsakFHVUlvTFAwb0NuakZ4UFZpbnF6bUFtUHlseFJmb3ZWWmM1UlRHY3psOHRpQ0lRRktlN2hQbno4UFVlVHhMMkdVUzk3NTN4UDB1Z2JKTkgwa3RNRkdxWExRck4yMGh5eGp5RktOT3k1R1FMMWRsMzJWOTZjalZRZXVsMms1WElST1BhV3hsNjBqNVh6NkdQVzB2c0NJcEsreGl5eXZMU05aV2Mvc0luL3ZXU0FIVTl1U3dCTXZQeGdqMlRXT0Q5MU5abDVLb0pjK3p1M2pwVlFCRWd5SEd4dGk3U3owT3lzVXRaZ0xFSVc5YWRTZnlpMncvc3JtVG04SDBNNkt6R3RuU2M4YTBWVndUMnFRb25uZ1NSNUs2UVQyc0VaSnJCczVCOFpEQmtqYWZRNHNScFJFYU9ObklWd2xEOURwb2x1L1F1a1RKR2ZlcW1udm01UGZOeHROSkZGTldQTzl5NWNnU3VDdlVQOCs2QVdhRTVlaW5PSTdVQXpsZDhISVMrTFUwN29MaER1Vklhc0k3QWdiZlljYnY4eVpCeXl2TFNOWldjL3NJbi92V1NBSFU5bHNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRnl5dkxTTlpXYy9zSW4vdldTQUhVOXQ1WGJxUGZMRzVBQVVFdnJjaFM0V1poY2xmTjBWcTAwMUVDLytVQVhhR1M1YjBoa0pWT1VDdEN3c3pWdXlBZVVNc3J5MGpXVm5QN0NKLzcxa2dCMVBiTEs4dEkxbFp6K3dpZis5WklBZFQycG05S21tMC9OdytxcC8ydHhwUjhoc1dwbVlFUjJpdGVyNW1STTJwN2t3enN4dFdsS2J4QXJVUWZCRElHcVdrRnl5dkxTTlpXYy9zSW4vdldTQUhVOW5NeUdMSUhsQjJRUklZNkR0QWc0bHpMSzh0STFsWnord2lmKzlaSUFkVDJnRHZsNEpOLzEwaXFOZ1p3QURXdXhUVE41NmwweG53d2xkM243RnNCcGNEKzRsK3dhTThqdW14Qnp3bWY1K2Jjd3VUNDBJUVh3dXhEUTYyQ1VoY3Y3cmNWRy9JYnVjeHg2OGZpTDlkUFFIWFpSRWhjZGV4MUtNTGMrZzRJK2pjeHl5dkxTTlpXYy9zSW4vdldTQUhVOWdUdFZPRkY2a3dhbm1zR1NkSDJpYUdjMVluNUs3a0g1VlhENnl0Z3E2bzNKMVFrNkQ3ZGE4dGRHUlp5bGxxV0RzNlVNdnNPL1BPdzVDY3I3OXNKemlkYmszNTQybWpMUkt0eWlFZXl2MXRzNnlhZXArQ3FxMnVFTm9wZzBEenhUenFIMXI4M0p5dXZRczRzVlhrcjNDZkxLOHRJMWxaeit3aWYrOVpJQWRUMnlBSXVNd0R4dklmVUlHOU9adURzSTlxQW5CVzFGaTB1ZGZiVDloZzZVNEI0bGxSdnVLeVM3WkVSekViZS9KZnY4Z05FZDhUU1lCOSs3MnZ5cGlsMnJUYjd5NldGbFpRYTArZkI0NFRFNnF6eGt4UG95MW9jeS9UTHQ2OHlNRm4vVmlXOUQxNlF2Ui9yN3VGYnRzWk9FUTdMdkgwakxKdHVqM0ZUeVFaRFFqQkxLeHNmdjMxN0o4cWVWbGxkMVQrZkhoYWZWclVJL0tBclhncTJKZE4wVUNQeTBkTnJpc3lzS09NdVVNUDRGcFlsSWxDeEF0OVFGYUlhSW9VdGxBYWlZQ3EzUW5NK1JZd2gvNnRKdzNjU3FobUhXazlyQmFqNzFOa0FDVXZPWHI0RFVYOUFaVzJtNGtvaVhkMVhKdUUyS3g3ekVqVzBhbWdmekJaREpvL1lLUitqU0J2cEk4QUJZNjJKTk5VTGEzbXRxV0RPMVhnTDJVbHNkT0RKbEl2VFVxM3oybHQraW51a0xsbGFtWmVmQitKdnFzcXYrTmVZYk9KeHhHbXRuUDdxOXBWMHJSbWYrMU5lKzFPK1I1VXNyYUpLWFBVeVlSYjB5N29vVGtMRzFoNGhHQWdFdFJqVE9rdGtYbkY1QlpUR005UnlRUnVhd2MwYkJPbXRIWDFoY1Q3cnQzdERrc1hKZmZsUHl5c1d6aFBYTE0rRmR4NWRDWVJ5WnpDL3hpeVpyZDFSb1BaMnUrMFF0YnNLMnVnUnB6UTQ2OWxuZHBKaHJ3YWV5aCtvSEJTOEZ5dytzL1hCMzFNSDlLSkFvMEpFQVlaSzIyNTJpRVlIZ28zWHVOMVo4YjlJNWJvb1B6dkwwMUlpK2tBYWhzc3J5MGpXVm5QN0NKLzcxa2dCMVBhanJ1cVkvYkw2djEyMDAybWE2MFN6WmhUbnl5UVpkWDlNNTJvQ0FraWoyL1lOdStIcFg2NzlkbFpTK1dhaHVRRWpqdjQvUk1hSlNmU0tERFI2eWx4TmhNWXdna3pGcFdRVFEwR3FMcWZ3TElJelZzMmdSM05PT3dzbDl5a2FDeGlmRTQ1T1NMUWFZK3NFQjIxTFhLZjJSV0lxYWJLaTdWbEJXdVZxeksvTXhiQ21qS1BXS1VGcEp6YTgwZ01YVW5GNEltM3lxRWZ0MXJmc0tVN1NnNmU0aFpxelJtYlFZZHZFN2NlekYrZjh4Y0Q2eVJja3hPUmRHNnJQT0JLaURNZmc2M2VIdlppVWp1bFBFNUl2SkR4b0tCTlh1bDBhZ09lMnBJSVNjbXNIS0FnVEZGamJ0YkNmZTFUaitpeDJHVVROd3JIVXpxWUozSXF4eUh0T2FyMkhGMW1MNUsvdXBTWTN6VDBiS2pjSHdjc3J5MGpXVm5QN0NKLzcxa2dCMVBaUHhkK3pYQmhJbGg4cHY0eVVyWGJNZ29zTU5pWURCYlVabUd2VVZCOVkvVXE1UXlZUjhqQmEzVDZxcXFkOVBjREdqclRJNlliaEVhNG10aXZWRjFuMUo5ZlVFY1NIV3ZrOGZweW53K0JrWU9lemhJWXdiaGNYcktKTjNYajRYQUEvanQ2SDMyNTRGYzRtUm91N2RZbFl5eXZMU05aV2Mvc0luL3ZXU0FIVTlrS0FyVUtWRjJPbUFFT3RSUFRMb1VyTEs4dEkxbFp6K3dpZis5WklBZFQyaVZTbjJYNk9LOTBSZkVxamtDL3JJU1l6Lzd1Y3A2YU0zVDE5Y0pweEVySExLOHRJMWxaeit3aWYrOVpJQWRUMnNNaWRzSjUvOCtVK1pMWG9va3RTNy9abmEwMmZ2QWhKZ245Z1JqU3p3QzlkQ0J5b1V0OXBZWFBsTnVkZjdoNkJwejZxd1d2TUducjFmWllhMDdiZnI4c3J5MGpXVm5QN0NKLzcxa2dCMVBhanZ1Y3pyUVFVMEkyVUFhOFVKZFB1TWpCSHpZbVdPQm1qbDhLaDIzK1Q2cmx3V1JWZ0Y0N0hHeXdWblZ6cEdDYk9sREw3RHZ6enNPUW5LKy9iQ2M0bkpmanJndDZFblBqWFovbkNKTVB2V002VU12c08vUE93NUNjcjc5c0p6aWR3WjQ1Q1hOR3grUzhPTlJ1MGNRWXlFOWNzejRWM0hsMEpoSEpuTUwvR0xKbXQzVkdnOW5hNzdSQzF1d3JhNkJHbk5EanIyV2Qya21HdkJwN0tINmdjd3k3WW1NSEFEa3N1bU41SHJqbFY0TXNyeTBqV1ZuUDdDSi83MWtnQjFQWjk2dmVGZjVvMDZIbEZoRmtFYmpWTmFIaFZXZ0g0ZlRNdGt1ejViRG4rQUhnbmpwd3lHL2hJTDUwR0lQWG8rdnJZVEFhQnlBQlFXbzVQMXBWdUtEWmNcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICBcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGVzICsgYmFkZ2VUeXBlLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHBpY3MrUmVmZXJlcixcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogYmFkZ2UrZGVzYyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBtb2RlID09ICfnm7Tpk74nID8gdHJ1ZV91cmwgOiBwdXJsICsgbGF6eSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoJ2FpZCcsU3RyaW5nKHYuYWlkKSk7XFxcXG4gICAgICAgICAgICBcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6bW9kZSA9PSAn55u06ZO+JyA/IGdldEhlYWQoJ+ebtOmTvicpIDogJ+ebtOmTvicsIC8vJ+ebtOmTvuaSreaUvicsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAn55u06ZO+Jyttb2RlX3VybCwvL2xhenkxLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG5cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ3loYycgPyBnZXRIZWFkKCfokKTngavomasnKSA6ICfokKTngavomasnLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJ3loYycgKyBtb2RlX3VybCxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgaWYgKGdldFZhcignbGlrZV90eXBlJyk9PT0n5byA5ZCvJyl7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQobGlrZV91cmwpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKycmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQse1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczp7J0NvbnRlbnQtVHlwZSc6Y29udGVudF90eXBlfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6bF9ib2R5X3R4dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCdcXFxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICBsb2cobF9jb2RlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycrbF9jb2RlLmRhdGEudG9hc3Q7XFxcXG4gICAgICAgICAgICAgICAgfSwgKSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvaW5fdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQse1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczp7J0NvbnRlbnQtVHlwZSc6Y29udGVudF90eXBlfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6Y19ib2R5X3R4dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCdcXFxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICBsb2coY19jb2RlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aKleS6hjHkuKrluIEnO1xcXFxuICAgICAgICAgICAgICAgIH0sICksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxcXG4gICAgICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICAgICAgXFxcXG4gICAgICAgICAgICBpZiAodi52aWRlb3MgIT0gMSkge1xcXFxuICAgICAgICAgICAgICAgIHZhciBydXJsID0gcHVybCArICc/cD0nICsgcFtpXS5wYWdlO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmxcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBhcnQsXFxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZicsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAvKm1vZGUgPT0gJ1g1JyA/ICd4NVJ1bGU6Ly8nICsganggKyBydXJsICsgJ0AnICsgbGF6eSA6ICgqL21vZGUgPT0gJ+ebtOmTvicgPyBsYXp5MSA6IHJ1cmwgKyBsYXp5LFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiB2LnZpZGVvcyAhPSAxID8gJ3RleHRfY2VudGVyXzEnIDogJ2F2YXRhcidcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuXFxcXG5cXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICBcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxcXG4gICAgfSk7XFxcXG4gICAgaWYgKGdldFZhcigncmVwbHlfdHlwZScpPT09J+W8gOWQrycpe1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOivhOiuuuWMuuKAneKAnScgKyAoZ2V0VmFyKCdsYWJlbCcpID09ICfor4TorronID8gJ+KAnOKAnCDiipnigJ3igJ0nIDogJ+KAnOKAnCDiipXigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+ivhOiuuic/J+WFs+mXrSc6J+ivhOiuuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn6K+E6K66JylcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG4gICAgfSk7XFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJzigJzmjqjojZDljLrigJ3igJ0nICsgKGdldFZhcignbGFiZWwnKSA9PSAn5o6o6I2QJyA/ICfigJzigJwg4oqZ4oCd4oCdJyA6ICfigJzigJwg4oqV4oCd4oCdJykgKyAnPC9zdHJvbmc+JyxcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGFiZWwnLCBnZXRWYXIoJ2xhYmVsJyk9PSfmjqjojZAnPyflhbPpl60nOifmjqjojZAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovLycrZ2V0VmFyKCdsYWJlbCcsJ+aOqOiNkCcpXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgIH0pO1xcXFxuXFxcXG4gICAgXFxcXG4gICAgaWYgKGdldFZhcihcXFxcXFxcImxhYmVsXFxcXFxcXCIpID09ICfor4TorronKSB7XFxcXG4gICAgICAgIHZhciByZWx5ID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvcmVwbHkvbWFpbj9vaWQ9JyArIHYuYWlkICsgJyZ0eXBlPTEnLCB7fSkpO1xcXFxuICAgICAgICB2YXIgY291bnRzID0gcmVseVsnZGF0YSddWydjdXJzb3InXVsnYWxsX2NvdW50J107XFxcXG4gICAgICAgIHZhciByZXBsaWVzID0gcmVseS5kYXRhLnJlcGxpZXM7XFxcXG4gICAgICAgIGZvciAodmFyIHggaW4gcmVwbGllcykge1xcXFxuICAgICAgICAgICAgdmFyIHJlcGxpZXN4ID0gcmVwbGllc1t4XTtcXFxcbiAgICAgICAgICAgIHZhciBtZXNzYWdlID0gcmVwbGllc1t4XS5jb250ZW50Lm1lc3NhZ2U7XFxcXG4gICAgICAgICAgICB2YXIgbWVtYmVyID0gcmVwbGllc1t4XS5tZW1iZXI7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtZW1iZXIudW5hbWUsXFxcXG4gICAgICAgICAgICAgICAgaW1nOiBtZW1iZXIuYXZhdGFyLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPjxzdHJvbmc+JyArIG1lc3NhZ2UgKyAnPC9zdHJvbmc+PC9zbWFsbD4nLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB2YXIgcmVwbHkgPSByZXBsaWVzW3hdLnJlcGxpZXM7XFxcXG4gICAgICAgICAgICBmb3IgKHZhciB6IGluIHJlcGx5KSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIG1lc3MgPSByZXBseVt6XS5jb250ZW50Lm1lc3NhZ2U7XFxcXG4gICAgICAgICAgICAgICAgdmFyIG1lbSA9IHJlcGx5W3pdLm1lbWJlci51bmFtZTtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnICsgbWVtICsgJzonICsgbWVzcyArICc8L3NtYWxsPicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgfSBcXFxcblxcXFxuICAgIGlmIChnZXRWYXIoXFxcXFxcXCJsYWJlbFxcXFxcXFwiKSA9PSAn5o6o6I2QJykge1xcXFxuICAgICAgICBmb3IgKHZhciByIGluIHJlbGF0ZWQpIHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlbGF0ZWRbcl0udGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgaW1nOiByZWxhdGVkW3JdLnBpYyxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiByZWxhdGVkW3JdLmRlc2MsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyByZWxhdGVkW3JdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgfVxcXFxufSBjYXRjaCAoZSkge31cXFxcblxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0UmVzdWx0KHJlcyk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6aG16Z2iLeWFs+azqDFcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZ3oxXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxcXG52YXIgaWQgPSBNWV9VUkwuc3BsaXQoJ21pZD0nKVsxXTtcXFxcbnZhciBzdXJsID0gTVlfVVJMO1xcXFxudmFyIGNvZGUgPSBmZXRjaChzdXJsLHt9KTtcXFxcbnZhciB5bSA9IEpTT04ucGFyc2UoJ3tcXFxcXFxcIm15Jytjb2RlLnNwbGl0KCd7XFxcXFxcXCJteScpWzFdLnNwbGl0KCd9fTsnKVswXSsnfX0nKTtcXFxcblxcXFxudmFyIGVwID0geW1bJ2xpc3QnXVsnZ2V0Rm9sbG93TGlzdC1wYWdlLW1pZC0nK2lkXVsncmVzdWx0J107XFxcXG5mb3IgKCB4IGluIGVwKXtcXFxcbiAgdmFyIHl1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaO+8n++8n21pZD0nK2VwW3hdLm1pZCsn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlJztcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgIHRpdGxlOmVwW3hdLnVuYW1lLFxcXFxuICAgICAgIGltZzplcFt4XS5mYWNlLFxcXFxuICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2d6Mj91cmw9Jyt5dXJsLFxcXFxuICAgICAgIGNvbF90eXBlOidpY29uX3JvdW5kXzQnXFxcXG4gICAgICAgfSk7XFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpobXpnaIt5YWz5rOoMlxcXCIsXFxcInBhdGhcXFwiOlxcXCJnejJcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXFxcbmNvbnN0IGhlYWRDb2xvcj1cXFxcXFxcIiMzNThjY2RcXFxcXFxcIjtcXFxcbnZhciBqc29uID0ge307XFxcXG5ldmFsKCdqc29uPScgKyBmZXRjaChNWV9VUkwse30pKTtcXFxcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspXFxcXG57XFxcXG4gdmFyIHIgPSB7fTtcXFxcbiB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcXFxuIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkqMTAwMDtcXFxcbiBcXFxcbiAvL+aXtumXtOaIs+i9rOaNouaWueazlVxcXFxuIC8qXFxcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcXFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcXFxuICAgICByZXR1cm4gKFlNRClcXFxcbn1cXFxcbiovXFxcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxcXG52YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXFxcbnZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSsnLSc7IFxcXFxudmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpKyctJzsgXFxcXG52YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7IFxcXFxudmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxcXG5yZXR1cm4gdGltZVxcXFxufVxcXFxuLy/ml7bpl7TmiLPovazmjaJcXFxcbnZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcXFxuXFxcXG5pZiAoai5wbGF5PjEwMDAwKVxcXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXFxcbmVsc2VcXFxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXFxcblxcXFxudmFyIHBpY3MgPSAoai5waWMuaW5kZXhPZignOicpIT0tMSk/ai5waWM6J2h0dHBzOicgKyBqLnBpYztcXFxcblxcXFxuIGlmIChqLmxlbmd0aCE9XFxcXFxcXCIwMDowMFxcXFxcXFwiKXtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICBwaWNfdXJsIDogcGljcyxcXFxcbiAgICAgdXJsIDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgdGl0bGUgOiBqLnRpdGxlLFxcXFxuICAgICBjb2xfdHlwZSA6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcbiAgICAgZGVzYyA6ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOaXpeacn++8micgKyB0aW1lXFxcXG4gICAgXFxcXG4gICAgfSk7XFxcXG59XFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggeWdly3mkJzntKLkuIDnuqdcXFwiLFxcXCJwYXRoXFxcIjpcXFwic1xcXCIsXFxcInJ1bGVcXFwiOlxcXCJ0cnkge1xcXFxuICAgIHZhciByZXMgPSB7fTtcXFxcbiAgICB2YXIgZCA9IFtdO1xcXFxuICAgIHZhciBjb2RlID0gZ2V0UmVzQ29kZSgpO1xcXFxuICAgIHZhciB4cyA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgndmlkZW9cXFxcXFxcIixcXFxcXFxcImRhdGFcXFxcXFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcXFxuICAgIC8vaWYoTVlfVVJMLnNwbGl0KCdwYWdlPScpWzFdPT0nMSZwYWdlc2l6ZT0yMCcpe1xcXFxuICAgIHZhciBwYWdlID0gTVlfVVJMLnNwbGl0KCdwYWdlPScpWzFdLnNwbGl0KCcmcGFnZXNpemU9JylbMF07XFxcXG4gICAgdHJ5IHtcXFxcbiAgICAgICAgdmFyIHcgPVxcXFxuICAgICAgICAgICAgSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9zZWFyY2gvdHlwZT9rZXl3b3JkPScgKyBNWV9VUkwuc3BsaXQoJ2tleXdvcmQ9JylbMV0uc3BsaXQoJyYnKVswXSArICcmcGFnZT0nICsgcGFnZSArICcmc2VhcmNoX3R5cGU9YmlsaV91c2VyJm9yZGVyPXRvdGFscmFuayZwYWdlc2l6ZT0yMCcsIHt9KSkuZGF0YS5yZXN1bHQ7XFxcXG4gICAgICAgIGZvciAoaWkgPSAwOyBpaSA8IHcubGVuZ3RoICYmIGlpIDwgMjsgaWkrKykge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ3Vw77yaJyArIHdbaWldLnVuYW1lLFxcXFxuICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOicgKyB3W2lpXS51cGljLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6ICflhbPms6jvvJonICsgd1tpaV0uZmFucyxcXFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAn6KeG6aKR5pWw77yaJyArIHdbaWldLnZpZGVvcyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JyArIHdbaWldLm1pZCArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUjJyArIHdbaWldLnVuYW1lICsgJyMnLFxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOaJvuS4jeWIsOS9oOaDs+imgeeahOWViu+8jOimgeS4jeaNouS4quWFs+mUruivje+8n+KAmeKAmScsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbiAgICB2YXIgZmFuID0gSlNPTi5wYXJzZShjb2RlLnNwbGl0KCdtZWRpYV9iYW5ndW1pXFxcXFxcXCIsXFxcXFxcXCJkYXRhXFxcXFxcXCI6JylbMV0uc3BsaXQoJ30se1xcXFxcXFwicmVzdWx0X3R5cGUnKVswXSk7XFxcXG4gICAgZm9yICh4IGluIGZhbikge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGZhblt4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcXFxcXCJrZXl3b3JkXFxcXFxcXCI+fDxcXFxcXFxcXC9lbT4vZywgJycpLFxcXFxuICAgICAgICAgICAgaW1nOiBmYW5beF0uY292ZXIsXFxcXG4gICAgICAgICAgICBkZXNjOiBmYW5beF0uZGVzYyxcXFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZhblt4XS5jdi5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcXFxcXCJrZXl3b3JkXFxcXFxcXCI+fDxcXFxcXFxcXC9lbT4vZywgJycpLFxcXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGZhblt4XS5nb3RvX3VybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuICAgIHZhciBmYW4yID0gSlNPTi5wYXJzZShjb2RlLnNwbGl0KCdtZWRpYV9mdFxcXFxcXFwiLFxcXFxcXFwiZGF0YVxcXFxcXFwiOicpWzFdLnNwbGl0KCd9LHtcXFxcXFxcInJlc3VsdF90eXBlJylbMF0pO1xcXFxuICAgIGZvciAoeCBpbiBmYW4yKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogZmFuMlt4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcXFxcXCJrZXl3b3JkXFxcXFxcXCI+fDxcXFxcXFxcXC9lbT4vZywgJycpLFxcXFxuICAgICAgICAgICAgaW1nOiBmYW4yW3hdLmNvdmVyLFxcXFxuICAgICAgICAgICAgZGVzYzogZmFuMlt4XS5kZXNjLFxcXFxuICAgICAgICAgICAgY29udGVudDogZmFuMlt4XS5jdi5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcXFxcXCJrZXl3b3JkXFxcXFxcXCI+fDxcXFxcXFxcXC9lbT4vZywgJycpLFxcXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGZhbjJbeF0uZ290b191cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbiAgICAvL31cXFxcblxcXFxuICAgIGZvciAoeCBpbiB4cykge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHhzW3hdLnRpdGxlLnJlcGxhY2UoLzxlbSBjbGFzcz1cXFxcXFxcImtleXdvcmRcXFxcXFxcIj58PFxcXFxcXFxcL2VtPi9nLCAnJyksXFxcXG4gICAgICAgICAgICBpbWc6ICdodHRwOicgKyB4c1t4XS5waWMsXFxcXG4gICAgICAgICAgICBkZXNjOiB4c1t4XS5kZXNjcmlwdGlvbixcXFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHhzW3hdLmF1dGhvcixcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgeHNbeF0uYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgcmVzLmRhdGEgPSBkO1xcXFxuICAgIHNldFJlc3VsdChyZXMpO1xcXFxufSBjYXRjaCAoZSkge1xcXFxuICAgIHZhciByZXMgPSB7fTtcXFxcbiAgICB2YXIgZCA9IFtdO1xcXFxuICAgIHZhciBrZXl3b3JkID0gTVlfVVJMLnNwbGl0KCdrZXl3b3JkPScpWzFdLnNwbGl0KCcmcGFnZT0nKVswXTtcXFxcbiAgICB2YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaC90eXBlP2FwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYyNzAyMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD14aWFvbWkmaGlnaGxpZ2h0PTEma2V5d29yZD0nICsga2V5d29yZCArICcmbW9iaV9hcHA9YW5kcm9pZCZvcmRlcj10b3RhbHJhbmsmcGxhdGZvcm09YW5kcm9pZCZwbj0xJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjcuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0xNjIzMDc2MTQwJnR5cGU9MiZ1c2VyX3R5cGU9MCZzaWduPTUwNjYyMTZmZWJiMjhhNjE5ODEyZTg4ZTVmZjFhMDM0JztcXFxcbiAgICB2YXIgY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSk7XFxcXG4gICAgdmFyIGxpc3QgPSBjb2RlLmRhdGEuaXRlbXM7XFxcXG4gICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSxcXFxcbiAgICAgICAgICAgIGltZzogeC5jb3ZlcixcXFxcbiAgICAgICAgICAgIGRlc2M6IHguc2lnbixcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9zcz91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9JyArIHgucGFyYW0gKyAn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlIycgKyB4LnRpdGxlICsgJyMnICsgZ2V0VmFyKCd1YScpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG4gICAgc2V0UmVzdWx0KGQpO1xcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpobXpnaIt5pCc57Si5LqM57qnXFxcIixcXFwicGF0aFxcXCI6XFxcInNzXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGpzb24gPSB7fTtcXFxcbmV2YWwoJ2pzb249JyArIGdldFJlc0NvZGUoKSk7XFxcXG52YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxuaWYgKE1ZX1VSTC5pbmRleE9mKCdwbj0xJicpIT0tMSl7XFxcXG5kLnB1c2goe1xcXFxudGl0bGU6J+KAnOKAnOWFs+azqOKAneKAnScsXFxcXG51cmw6J2hpa2VyOi8vZW1wdHkjJytNWV9VUkwuc3BsaXQoJyMnKVsxXSsnJiYnK01ZX1VSTC5zcGxpdCgnbWlkPScpWzFdLnNwbGl0KCcmJylbMF0rYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcXFxcXCImJlxcXFxcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnJiYnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXFxcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXFxcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcXFxuY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxufSk7XFxcXG59XFxcXG5cXFxcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspXFxcXG57XFxcXG4gdmFyIHIgPSB7fTtcXFxcbiB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcXFxuIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkqMTAwMDtcXFxcbiBcXFxcbiAvL+aXtumXtOaIs+i9rOaNouaWueazlVxcXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXFxcbiAgICAgdmFyIFlNRCA9IHNzcy5zcGxpdCgn5pelJylbMF0ucmVwbGFjZSgn5bm0JywnLScpLnJlcGxhY2UoJ+aciCcsJy0nKTtcXFxcbiAgICAgcmV0dXJuIChZTUQpXFxcXG59XFxcXG5cXFxcbi8v5pe26Ze05oiz6L2s5o2iXFxcXG52YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXFxcblxcXFxuaWYgKGoucGxheT4xMDAwMClcXFxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxcXG5lbHNlXFxcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxcXG5cXFxcbnZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSE9LTEpP2oucGljOidodHRwczonICsgai5waWM7XFxcXG5cXFxcbiByLnBpY191cmwgPSBwaWNzO1xcXFxuIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nK2ouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgXFxcXG5cXFxcbiByLnRpdGxlID0gai50aXRsZTtcXFxcbiByLmRlc2MgPSAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDml6XmnJ/vvJonICsgdGltZTtcXFxcbiBpZiAoai5sZW5ndGghPVxcXFxcXFwiMDA6MDBcXFxcXFxcIil7ZC5wdXNoKHIpfTtcXFxcbn1cXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldFJlc3VsdChyZXMpXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLemihOWkhOeQhlxcXCIsXFxcInBhdGhcXFwiOlxcXCJ5Y2xcXFwiLFxcXCJydWxlXFxcIjpcXFwicHV0VmFyMigndWEnLCc7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDcuMO+8m++8myB3diBsaXRlIGJhaWR1Ym94YXBwKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzguMC4zOTA0Ljk2IE1vYmlsZSBTYWZhcmkvNTM3LjM2IFQ3LzEwLjMgU2VhcmNoQ3JhZnQvMi42LjIgKEJhaWR177yb77ybIFAxIDcuMCl9Jyk7XFxcXG5cXFxcbnB1dFZhcigna2V5JyxmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSk7XFxcXG5cXFxcbnB1dFZhcignWDUnLFxcXFxcXFwiQGxhenlSdWxlPS5qczp2YXIganggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0Jyx7fSk7cmVmcmVzaFg1V2ViVmlldyhqeCtpbnB1dCk7J3RvYXN0Oi8v5pKt5pS+5LitJ1xcXFxcXFwiKTtcXFxcblxcXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnKSkge1xcXFxuICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7XFxcXG4gICB9XFxcXG5cXFxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JykpIHtcXFxcbiAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCfop4bpopEnKTtcXFxcbiAgIH1cXFxcblxcXFxuaWYgKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXFxcXFwiLCB7fSk9PScnKXtcXFxcbiAgICBpZiAoZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcXFxcXCIsIHt9KSE9Jycpe1xcXFxuICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFxcXFxcIixmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFxcXFxcIiwge30pKTtcXFxcbiAgICB9XFxcXG4gICAgZWxzZXtcXFxcbiAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9MTAzMjU2ODgwJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXFxcbiAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFxcXFxcIiwgXFxcXFxcXCLljJfln44mJjEwMzI1Njg4MCMjXFxcXFxcXCIrcGljKTtcXFxcbiAgICAgIH1cXFxcbn1cXFxcblxcXFxuaWYgKCFmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFxcXFxcIiwge30pKSB7XFxcXG4gIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFxcXFxcIiwgXFxcXFxcXCIxMDMyNTY4ODBcXFxcXFxcIik7XFxcXG59XFxcXG5cXFxcbnB1dFZhcjIoJ2xiMicsZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcXFxcXCIse30pKTtcXFxcblxcXFxuLypcXFxcbnB1dFZhcihcXFxcXFxcIuino+aekOWPo1xcXFxcXFwiLGBoaWtlcjovL2VtcHR5I25vSGlzdG9yeSNAcnVsZT1qczp2YXIgZCA9IFtdO2QucHVzaCh7ZGVzYzogJzIwMCcsdXJsOiAnZmlsZTovLy9zdG9yYWdlL2VtdWxhdGVkLzAvQW5kcm9pZC9kYXRhL2NvbS5leGFtcGxlLmhpa2Vydmlldy9maWxlcy9Eb2N1bWVudHMvYmlsaS91cGp4Lmh0bWwnLGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnfSk7dmFyIHRpdGxlcyA9IGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcXFxcXCIsIHt9KS5zcGxpdCgvXFxcXFxcXFxcXFxcXFxcXG4vKTtmb3IodmFyIGkgPSAwOyBpIDwgdGl0bGVzLmxlbmd0aDsgaSsrKXt2YXIgdCA9IHRpdGxlc1tpXS5zcGxpdChcXFxcXFxcIiYmXFxcXFxcXCIpO2QucHVzaCh7dGl0bGU6ZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFxcXFxcIix7fSkgPT0gdFsxXSA/IHRbMF0gKyBcXFxcXFxcIuKAmOKAmO+8iOW9k+WJje+8ieKAmeKAmVxcXFxcXFwiIDogdFswXSxkZXNjOnRbMV0sdXJsOnRbMV0gKyAnQGxhenlSdWxlPS5qczpwdXRWYXIyKFxcXFxcXFwidWlkXFxcXFxcXCIsaW5wdXQpO3dyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXFxcXFwiLGlucHV0KTtiYWNrKCk7XFxcXFxcXCJ0b2FzdDovL+S/ruaUueaIkOWKn1xcXFxcXFwiJyxjb2xfdHlwZTogJ3RleHRfMSd9KTt9c2V0UmVzdWx0KGQpO2ApO1xcXFxuXFxcXG5pZiAoIWZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcXFxcXCIsIHt9KSkge1xcXFxuICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFxcXFxcIiwgXFxcXFxcXCLlhajnvZFWSVAmJmh0dHBzOi8vanh4LnNteXM4LmNuL2luZGV4LnBocD91cmw9XFxcXFxcXFxu5Yqg6YCfJiZodHRwczovL3d3dy5jdWFuLmxhL20zdTgucGhwP3VybD1cXFxcXFxcIik7XFxcXG59XFxcXG5cXFxcblxcXFxubGV0IGxvY2FsSHRtbDIgPSBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFxcXFxcIiwge30pO1xcXFxubGV0IGdpdEh0bWwyID0gZmV0Y2goXFxcXFxcXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvWnJ1aXJ5L2hpa2Vydmlldy9odG1sL2ppZXhpLmh0bWxcXFxcXFxcIiwge30pLnJlcGxhY2UoL2ppZXhpXFxcXFxcXFwvamlleGkvZyxcXFxcXFxcImJpbGkvdXBqeFxcXFxcXFwiKTtcXFxcbmlmICghbG9jYWxIdG1sMikge1xcXFxuICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC5odG1sXFxcXFxcXCIsIGdpdEh0bWwyKTtcXFxcbiAgdmFyIHRpdGxlcyA9IGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcXFxcXCIsIHt9KTtcXFxcbiAgdmFyIHQgPSB0aXRsZXMuc3BsaXQoXFxcXFxcXCImJlxcXFxcXFwiKVsxXTtcXFxcbiAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcXFxcXCIsdCk7XFxcXG59XFxcXG4qL1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3mjqjojZBcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZmVlZFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L2ludGwvZmVlZC9pbmRleD9hY2Nlc3Nfa2V5PScrZ2V0VmFyKFxcXFxcXFwiYWNjZXNzX2tleVxcXFxcXFwiKSsnJmF1dG9wbGF5X2NhcmQ9MiZidWlsZD02MjI1MzAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmNvbHVtbj0yJmRldmljZV9uYW1lPSZkZXZpY2VfdHlwZT0wJmZsdXNoPTgmZm52YWw9NDY0JmZudmVyPTAmZm9yY2VfaG9zdD0wJmZvdXJrPTEmZ3VpZGFuY2U9MCZodHRwc191cmxfcmVxPTAmbW9iaV9hcHA9YW5kcm9pZCZuZXR3b3JrPXdpZmkmcGxhdGZvcm09YW5kcm9pZCZwbGF5ZXJfbmV0PTEmcHVsbD1mYWxzZSZxbj04MCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjIyLjUlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QnO1xcXFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLHt9KSkuZGF0YS5pdGVtcztcXFxcbmZvciAobGV0IHggb2YgbGlzdCl7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOngudGl0bGUsXFxcXG4gICAgZGVzYzp4LmNvdmVyX2xlZnRfMV9jb250ZW50X2Rlc2NyaXB0aW9uK1xcXFxcXFwiIFxcXFxcXFwiK3guY292ZXJfbGVmdF8yX2NvbnRlbnRfZGVzY3JpcHRpb24rXFxcXFxcXCIgIFxcXFxcXFwiK3guY292ZXJfcmlnaHRfdGV4dCxcXFxcbiAgICBwaWM6eC5jb3ZlcitcXFxcXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFxcXFxcIixcXFxcbiAgICB1cmw6XFxcXFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95ZOU5ZOp4oSbJnVybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPVxcXFxcXFwiK3gucGFyYW0rXFxcXFxcXCLvvIbvvIZidmlkPVxcXFxcXFwiKycjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICBjb2xfdHlwZTonbW92aWVfMidcXFxcbiAgICB9KTtcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLml6fkuoznuqfku6PnoIFcXFwiLFxcXCJwYXRoXFxcIjpcXFwiMVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJpZiAodlsncmVkaXJlY3RfdXJsJ10gJiYgdGFncyA9PSAnZmFuJykge1xcXFxuXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY6Kej5p6Q5o6l5Y+jJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IGppZXgsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxcXG4gICAgICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAnWDUnID8gZ2V0SGVhZCgnWDUnKSA6ICdYNScsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBtb2RlID09ICdYNScgPyBnZXRWYXIoJ+ino+aekOWPoycpIDogJ1g1JyArIG1vZGVfdXJsLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5ZeF5o6i5pKt5pS+JyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IHh0LFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdwYWdlJykgPT0gJ+ino+aekCcpIHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn55u06ZO+JyA/IGdldEhlYWQoJ+ebtOmTvicpIDogJ+ebtOmTvicsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ+ebtOmTvicgKyBtb2RlX3VybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJzk3MycgPyBnZXRIZWFkKCc5NzMnKSA6ICc5NzMnLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICc5NzMnICsgbW9kZV91cmwsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICc5MjAnID8gZ2V0SGVhZCgnOTIwJykgOiAnOTIwJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnOTIwJyArIG1vZGVfdXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAnbmwnID8gZ2V0SGVhZCgn5Yqq5YqbJykgOiAn5Yqq5YqbJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnbmwnICsgbW9kZV91cmwsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIFxcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH0gICAgICAgICAgICAgLy/nlarliafliJfooahcXFxcbiAgICAgICAgICAgIHZhciBlcCA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXFxcXFwiZXBMaXN0XFxcXFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXFxcblxcXFxuICAgICAgICAgICAgLy/nlarliadcXFxcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXAubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgYmFkZ2UgPSAoZXBbaV1bJ2JhZGdlJ10gIT0gJycpID8gJ/CfkrAnIDogJ/CfhpMnO1xcXFxuICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXAnICsgZXBbaV1bJ2lkJ107XFxcXG4gICAgICAgICAgICAgICAgdmFyIHBpY3MgPSAoZXBbaV1bJ2NvdmVyJ10uaW5kZXhPZignOicpICE9IC0xKSA/IGVwW2ldWydjb3ZlciddIDogJ2h0dHBzOicgKyBlcFtpXVsnY292ZXInXTtcXFxcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGVzID0gKGVwW2ldWyd0aXRsZUZvcm1hdCddKSA/IGVwW2ldWyd0aXRsZUZvcm1hdCddIDogZXBbaV1bJ3RpdGxlJ107XFxcXG4gICAgICAgICAgICAgICAgdmFyIGRlY3MgPSAoZXBbaV1bJ2xvbmdUaXRsZSddKSA/IGVwW2ldWydsb25nVGl0bGUnXSA6IGVwW2ldWydsb25nX3RpdGxlJ107XFxcXG4gICAgICAgICAgICAgICAgdmFyIHRydWVfdXJsID1cXFxcbiAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3BsYXllci9wbGF5dXJsP2F2aWQ9JyArIGVwW2ldLmFpZCArICcmY2lkPScgKyBlcFtpXS5jaWQgKyAnJnFuPTgwJnR5cGU9Jm90eXBlPWpzb24mYXBwa2V5PTg0OTU2NTYwYmMwMjhlYjcnICsgZ2V0VmFyKFxcXFxcXFwia2V5XFxcXFxcXCIpICsgJyZtaWQ9JyArIGBAbGF6eVJ1bGU9Ym9keSYmSHRtbC5qczp2YXIganNvbiA9e307ZXZhbCgnanNvbj0nK2lucHV0KTt2YXIgZHVybGw9anNvbi5kYXRhLmR1cmw7ZHVybGxbMF0udXJsKyc7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFxcXFxcXFxcXFxcXFxcXFzvvJtcXFxcXFxcXFxcXFxcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzbvvIbvvIbvvIbvvIZSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlb30nYDtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGVzICsgYmFkZ2UsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogcGljcyxcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVjcyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBtb2RlID09ICfnm7Tpk74nID8gdHJ1ZV91cmwgOiBwdXJsICsgbGF6eSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgICAgICAgICAgaWYgKGdldFZhcigncGFnZScpID09ICfll4XmjqInKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJycsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeCBpbiBqeGprKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqeGprW3hdLnNwbGl0KCcmJicpWzBdLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDoganhqa1t4XS5zcGxpdCgnJiYnKVsxXSArIHB1cmwsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgICAgICB9XFxcXG5cXFxcblxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuXFxcXG4gICAgICAgICAgICBpZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXFxcblxcXFxuICAgICAgICAgICAgICAgIC8v54K55Ye75YiH5o2i5o6l5Y+jXFxcXG4gICAgICAgICAgICAgIFxcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY6Kej5p6Q5o6l5Y+jJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBqaWV4LFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAnWDUnID8gZ2V0SGVhZCgnWDUnKSA6ICdYNScsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbW9kZSA9PSAnWDUnID8gZ2V0VmFyKCfop6PmnpDlj6MnKSA6ICdYNScgKyBtb2RlX3VybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfll4XmjqLmkq3mlL4nLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHh0LFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdwYWdlJykgPT0gJ+WXheaOoicpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeCBpbiBqeGprKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqeGprW3hdLnNwbGl0KCcmJicpWzBdLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDoganhqa1t4XS5zcGxpdCgnJiYnKVsxXSArIHZbJ3JlZGlyZWN0X3VybCddLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdwYWdlJykgPT0gJ+ino+aekCcpIHtcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJzk3MycgPyBnZXRIZWFkKCc5NzMnKSA6ICc5NzMnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnOTczJyArIG1vZGVfdXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJzkyMCcgPyBnZXRIZWFkKCc5MjAnKSA6ICc5MjAnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnOTIwJyArIG1vZGVfdXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ25sJyA/IGdldEhlYWQoJ+WKquWKmycpIDogJ+WKquWKmycsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdubCcgKyBtb2RlX3VybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIC8v6Kej5p6Q5pKt5pS+XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBhcnQsXFxcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHZbJ3JlZGlyZWN0X3VybCddICsgbGF6eSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG5cXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG5cXFxcbiAgICAgICAgICAgICAgICAvL+ebtOmTvuaSreaUvlxcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn55u06ZO+5pKt5pS+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB6bCxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfop6PmnpDmjqXlj6MnLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGppZXgsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnWDVsYXp5JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB4dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgaWYgKGdldFZhcigncGFnZScpID09ICfnm7Tpk74nKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzEwODBQJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGF6eTEsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzcyMFAnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsYXp5MixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnNDgwUCcsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxhenkzLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICczNjBQJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGF6eTQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICBcXFxcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdwYWdlJykgPT0gJ+ino+aekCcpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICd5aGMnID8gZ2V0SGVhZCgn6JCk54Gr6JmrJykgOiAn6JCk54Gr6JmrJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3loYycgKyBtb2RlX3VybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJzk3MycgPyBnZXRIZWFkKCc5NzMnKSA6ICc5NzMnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnOTczJyArIG1vZGVfdXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJzkyMCcgPyBnZXRIZWFkKCc5MjAnKSA6ICc5MjAnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnOTIwJyArIG1vZGVfdXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ1g1JyA/IGdldEhlYWQoJ1g1JykgOiAnWDUnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtb2RlID09ICdYNScgPyBnZXRWYXIoJ+ino+aekOWPoycpIDogJ1g1JyArIG1vZGVfdXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3BhZ2UnKSA9PSAn5ZeF5o6iJykge1xcXFxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB4IGluIGp4amspIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGp4amtbeF0uc3BsaXQoJyYmJylbMF0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB2LnZpZGVvcyAhPSAxID8ganhqa1t4XS5zcGxpdCgnJiYnKVsxXSArIHB1cmwgKyAnP3A9JyArIHBbaV0ucGFnZSA6IGp4amtbeF0uc3BsaXQoJyYmJylbMV0gKyBwdXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAvL+ino+aekOaSreaUvlxcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJ0LFxcXFxuICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB2LnZpZGVvcyAhPSAxID8gcHVybCArICc/cD0nICsgcFtpXS5wYWdlICsgbGF6eSA6IHB1cmwgKyBsYXp5LFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogdi52aWRlb3MgIT0gMSA/ICd0ZXh0X2NlbnRlcl8xJyA6ICdhdmF0YXInXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt5pu05aSaXFxcIixcXFwicGF0aFxcXCI6XFxcIm1vcmVcXFwiLFxcXCJydWxlXFxcIjpcXFwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpIHtcXFxcblxcXFxuICAgIFxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5pe25YWJ5py6JyA/IGdldEhlYWQocngpIDogJ+aXtuWFifCfkKUnLFxcXFxuICAgICAgICB1cmw6ICfml7blhYnmnLonICsgd3IsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgIH0pO1xcXFxuLypcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+i/veeVqicsXFxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vY29sbGVjdGlvbj9ncm91cD3ikaDov73nlaonLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICB9KTtcXFxcbiovIFxcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfntKLlvJUnID8gZ2V0SGVhZChyeCkgOiAn57Si5byVJyxcXFxcbiAgICAgICAgdXJsOiAn57Si5byVJyArIHdyLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICB9KTtcXFxcbi8qXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmlLbol48nID8gZ2V0SGVhZChyeCkgOiAn5pS26JePJyxcXFxcbiAgICAgICAgdXJsOiAn5pS26JePJyArIHdyLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICB9KTtcXFxcbiovXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfnmbvlvZUnLFxcXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvcHdkLWxvZ2luJyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IGdldFZhcignWVMnKSA9PSAn6ZqP5py6JyA/IGdldEhlYWQoJ+maj+acuicpIDogZ2V0SGVhZCgn6aqa57KJJyksXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1lTJywgZ2V0VmFyKCdZUycpPT0n6ZqP5py6Jz8n6aqa57KJJzon6ZqP5py6Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/popzoibItLScrZ2V0VmFyKCdZUycsJ+maj+acuicpXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgIH0pO1xcXFxuICBpZihyeCE9J+aXtuWFieacuicmJnJ4IT0n57Si5byVJyl7IFxcXFxuICAgIFxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn6Ieq5a6aVUlEJyxcXFxcbiAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcXFxcXCJ2YWx1ZVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsIFxcXFxcXFwianNcXFxcXFxcIjogXFxcXFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7Y2xlYXJWYXIoJ2h0bScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXFxcXFwiLCBcXFxcXFxcImhpbnRcXFxcXFxcIjogXFxcXFxcXCLor7flnKjkuIvmlrnovpPlhaVVSURcXFxcXFxcXG7kuI3nn6XpgZPmgI7kuYjmn6XvvJ9i56uZ54K55byA6Ieq5bex55qE5L+h5oGv77yM6ZW/5oyJdWlk5Y2z5Y+v77yM6K+35aGr5YWl57qv5pWw5a2XXFxcXFxcXCJ9YCxcXFxcbiAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJytnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcpKSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfngrnotZ5rZXknLFxcXFxuICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFxcXFxcInZhbHVlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIiwgXFxcXFxcXCJqc1xcXFxcXFwiOiBcXFxcXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcXFxcXCIsIFxcXFxcXFwiaGludFxcXFxcXFwiOiBcXFxcXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7ngrnotZ7mipXluIEpXFxcXFxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcXFxcXCJ9YCxcXFxcbiAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJytnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSksXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6Qa2V5JyxcXFxcbiAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcXFxcXCJ2YWx1ZVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsIFxcXFxcXFwianNcXFxcXFxcIjogXFxcXFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcXFxcXCIsIFxcXFxcXFwiaGludFxcXFxcXFwiOiBcXFxcXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXFxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcXFxcXCJ9YCxcXFxcbiAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJytnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcpKSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOifor4TorrrljLo6IOKAnOKAnOW3sicrIGdldFZhcigncmVwbHlfdHlwZScpLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdyZXBseV90eXBlJywgZ2V0VmFyKCdyZXBseV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3JlcGx5X3R5cGUnKTtcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfngrnotZ4m5oqV5biBOiDigJzigJzlt7InK2dldFZhcignbGlrZV90eXBlJyksXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xpa2VfdHlwZScsIGdldFZhcignbGlrZV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ2xpa2VfdHlwZScpO1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICB9KTtcXFxcbiAgfVxcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3mlrDnlapcXFwiLFxcXCJwYXRoXFxcIjpcXFwibmV3YmdtXFxcIixcXFwicnVsZVxcXCI6XFxcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKSB7XFxcXG5cXFxcbiAgICBsZXQgdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL3RpbWVsaW5lP2FjY2Vzc19rZXk9JmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZmlsdGVyX3R5cGU9MCZtb2JpX2FwcD1hbmRyb2lkJm5pZ2h0X21vZGU9MCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0xNjM1OTUyODQwJnNpZ249NmU0ZGY0NTQyZDM4ZWVlMmZhYmYyMTI4ODViOTBjNjQnO1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIHZhciBzb3VyY2VfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSk7XFxcXG4gICAgICAgIHZhciBkYXRlbGluZSA9IFt7XFxcXG4gICAgICAgICAgICBcXFxcXFxcImNvZGVcXFxcXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNF0sXFxcXG4gICAgICAgICAgICBcXFxcXFxcIm5hbWVcXFxcXFxcIjogXFxcXFxcXCLliY3ml6VcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiaWRcXFxcXFxcIjogXFxcXFxcXCIwXFxcXFxcXCJcXFxcbiAgICAgICAgfSx7XFxcXG4gICAgICAgICAgICBcXFxcXFxcImNvZGVcXFxcXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNV0sXFxcXG4gICAgICAgICAgICBcXFxcXFxcIm5hbWVcXFxcXFxcIjogXFxcXFxcXCLmmKjml6VcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiaWRcXFxcXFxcIjogXFxcXFxcXCIxXFxcXFxcXCJcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJjb2RlXFxcXFxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzZdLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJuYW1lXFxcXFxcXCI6IFxcXFxcXFwi5LuK5pelXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBcXFxcXFxcImlkXFxcXFxcXCI6IFxcXFxcXFwiMlxcXFxcXFwiXFxcXG4gICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiY29kZVxcXFxcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs3XSxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwibmFtZVxcXFxcXFwiOiBcXFxcXFxcIuaYjuaXpVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJpZFxcXFxcXFwiOiBcXFxcXFxcIjNcXFxcXFxcIlxcXFxuICAgICAgICB9LHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiY29kZVxcXFxcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs4XSxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwibmFtZVxcXFxcXFwiOiBcXFxcXFxcIuWQjuaXpVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJpZFxcXFxcXFwiOiBcXFxcXFxcIjRcXFxcXFxcIlxcXFxuICAgICAgICB9XTtcXFxcbiAgICAgICAgaWYgKCFnZXRWYXIoJ2lkJykpIHtcXFxcbiAgICAgICAgICAgIHB1dFZhcignaWQnLCAnMicpO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxldCBpZCA9IGdldFZhcignaWQnKTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMCcgPyBnZXRIZWFkKCfliY3ml6UnKSA6ICfliY3ml6UnLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzEnID8gZ2V0SGVhZCgn5pio5pelJykgOiAn5pio5pelJyxcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzEnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcyJyA/IGdldEhlYWQoJ+S7iuaXpScpIDogJ+S7iuaXpScsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcyJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMycgPyBnZXRIZWFkKCfmmI7ml6UnKSA6ICfmmI7ml6UnLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzQnID8gZ2V0SGVhZCgn5ZCO5pelJykgOiAn5ZCO5pelJyxcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzQnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBsZXQgbGlzdCA9IGRhdGVsaW5lW2lkXS5jb2RlLmVwaXNvZGVzO1xcXFxuICAgICAgICBmb3IgKGxldCB4IG9mIGxpc3QpIHtcXFxcbiAgICAgICAgICAgIGxldCB0eXBlID0gKHgucHVibGlzaGVkID09ICcxJyA/ICflt7Llj5HluIMnIDogJ+acquWPkeW4gycpO1xcXFxuICAgICAgICAgICAgbG9nKHR5cGUpXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfigJjigJgnICsgdHlwZSArICfigJnigJlcXFxcXFxcXG4nICsgeC5wdWJfaW5kZXggKyAnXFxcXFxcXFxu5pu05paw5pe26Ze077yaJyArIGdldEhlYWQoeC5wdWJfdGltZSksXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcXFxuICAgICAgICAgICAgICAgIGltZzogeC5jb3ZlcitSZWZlcmVyLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOidtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGdldEhlYWQoJ+mTvuaOpeeCuOS6hu+8jOetieS/ruWkjScpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLeeVquWJp+e0ouW8lVxcXCIsXFxcInBhdGhcXFwiOlxcXCJzeVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJjb25zdCB7IENhdGVnb3JpZXNIZWFkZXIgfSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9jYXRlZ29yaWVzLWhlYWRlclxcXFxcXFwiKVxcXFxuXFxcXG4vKipcXFxcbiAqIOiOt+WPluWIhuexu+aVsOaNrua6kO+8jOWPr+WKqOaAgeWPr+mdmeaAge+8jOiHquW3seagueaNruWunumZheaDheWGteWkhOeQhlxcXFxuICogaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4L1xcXFxuICovXFxcXG5sZXQgbUNhdGVnb3JpZXMgPSB7fVxcXFxubGV0IGNhdEluVmFyID0gZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcXFxcXCIjY2F0ZWdvcmllc1xcXFxcXFwiLCAnJylcXFxcbmlmIChnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFxcXFxcIiNjYXRlZ29yaWVzXFxcXFxcXCIsICcnKSkge1xcXFxuICAgIG1DYXRlZ29yaWVzID0gSlNPTi5wYXJzZShjYXRJblZhcilcXFxcbn0gZWxzZSB7XFxcXG4gICAgbGV0IGNhdFVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYW5pbWUvaW5kZXgvJ1xcXFxuICAgIGxldCBjYXRTcmMgPSByZXF1ZXN0KGNhdFVybClcXFxcbiAgICAvLyBsb2coY2F0U3JjKVxcXFxuICAgIGxldCBjYXRSZWdleCA9IC93aW5kb3dcXFxcXFxcXC5fX0lOSVRJQUxfU1RBVEVfXz0oLio/KTtcXFxcXFxcXChmdW5jdGlvblxcXFxcXFxcKFxcXFxcXFxcKVxcXFxcXFxcey9cXFxcbiAgICBpZiAoY2F0UmVnZXgudGVzdChjYXRTcmMpKSB7XFxcXG4gICAgICAgIC8vIGxvZyhSZWdFeHAuJDEpXFxcXG4gICAgICAgIGxldCBjYXRlZ29yeSA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxcXFxuICAgICAgICBsZXQgbUZpbHRlcnMgPSBjYXRlZ29yeS5maWx0ZXJzO1xcXFxuICAgICAgICAvLyBsb2cobUZpbHRlcnMpXFxcXG4gICAgICAgIG1GaWx0ZXJzLm1hcChmaWx0ZXIgPT4gbUNhdGVnb3JpZXNbZmlsdGVyLmtleV0gPSBmaWx0ZXIubGlzdClcXFxcbiAgICAgICAgbGV0IG9yZGVycyA9IGNhdGVnb3J5Lm9yZGVyc1xcXFxuICAgICAgICBsZXQgbU9yZGVycyA9IFtdXFxcXG4gICAgICAgIG9yZGVycy5tYXAob3JkZXIgPT4ge1xcXFxuICAgICAgICAgICAgbGV0IG1PcmRlciA9IHt9XFxcXG4gICAgICAgICAgICBtT3JkZXIubmFtZSA9IG9yZGVyLnRpdGxlXFxcXG4gICAgICAgICAgICBtT3JkZXIudmFsdWUgPSBvcmRlci5rZXlcXFxcbiAgICAgICAgICAgIG1PcmRlcnMucHVzaChtT3JkZXIpXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIC8vIGxvZyhtT3JkZXJzKVxcXFxuICAgICAgICBtQ2F0ZWdvcmllc1snb3JkZXInXSA9IG1PcmRlcnNcXFxcbiAgICB9XFxcXG4gICAgcHV0VmFyKE1ZX1JVTEUudXJsICsgXFxcXFxcXCIjY2F0ZWdvcmllc1xcXFxcXFwiLCBKU09OLnN0cmluZ2lmeShtQ2F0ZWdvcmllcykpXFxcXG59XFxcXG5sZXQga2V5cyA9IE9iamVjdC5rZXlzKG1DYXRlZ29yaWVzKVxcXFxuLy8gbG9nKG1DYXRlZ29yaWVzKVxcXFxuLy8gbG9nKGtleXMpXFxcXG4vKipcXFxcbiAqIOe7hOWQiOW9k+WJjeWIhuexu+mTvuaOpVxcXFxuICovXFxcXG5sZXQgdHJ1ZV91cmwgPSBnZXRWYXIoTVlfUlVMRS51cmwsIE1ZX1VSTClcXFxcbnRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD8nXFxcXG5mb3IgKGxldCBpdCBvZiBrZXlzKSB7XFxcXG4gICAgbGV0IGNhdF91cmwgPSBnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFxcXFxcIiNcXFxcXFxcIiArIGl0LCBpdCA9PT0gJ29yZGVycycgPyAnMycgOiAnLTEnKVxcXFxuICAgIHRydWVfdXJsICs9IChjYXRfdXJsID8gJyYnICsgaXQgKyAnPScgKyBjYXRfdXJsIDogJycpXFxcXG59XFxcXG4vLyBsZXQgcGFnZSA9IDFcXFxcbmNvbnN0IHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXVxcXFxuaWYocGFnZT09MSl7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL21vcmVcXFxcXFxcIikpLnJ1bGUpXFxcXG59XFxcXG50cnVlX3VybCA9IHRydWVfdXJsICtcXFxcbiAgICAnJnN0PTEmc29ydD0wJnNlYXNvbl90eXBlPTEmcGFnZXNpemU9MjAmdHlwZT0xJyArXFxcXG4gICAgJyZwYWdlPScgKyBwYWdlXFxcXG4vLyBsb2codHJ1ZV91cmwpXFxcXG5cXFxcbmNvbnN0IGVtcHR5ID0gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcblxcXFxuQ2F0ZWdvcmllc0hlYWRlclxcXFxuICAgIC5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSgnbmFtZScsICd2YWx1ZScpXFxcXG4gICAgLmdldChkLCBtQ2F0ZWdvcmllcywgcGFnZSlcXFxcbi8qKlxcXFxuICog6I635Y+W5b2T5YmN5YiG57G76aG16Z2i5rqQ56CBXFxcXG4gKi9cXFxcbnRyeSB7XFxcXG4gICAgdmFyIHN5bGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh0cnVlX3VybCwge30pKS5kYXRhLmxpc3Q7XFxcXG5cXFxcbiAgICAvKipcXFxcbiAgICAgKiDliJfooajmlbDmja7mupBcXFxcbiAgICAgKi9cXFxcbiAgICBmb3IgKGxldCBkYXRhIG9mIHN5bGlzdCkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUgLyorICcvJyArIGRhdGEuaW5kZXhfc2hvdyovICxcXFxcbiAgICAgICAgICAgIGRlc2M6IGRhdGEub3JkZXIsXFxcXG4gICAgICAgICAgICBpbWc6IGRhdGEuY292ZXIrUmVmZXJlcixcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBkYXRhLmxpbmsgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbn0gY2F0Y2ggKGUpIHt9XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLeWKqOaAgeWIhuexu+aooeWdl1xcXCIsXFxcInBhdGhcXFwiOlxcXCJjYXRlZ29yaWVzLWhlYWRlclxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbi8qKlxcXFxuICog5L2/55So6K+05piO77yaXFxcXG4gKiAxLuaPkOWJjeW7uueri+WlvSDliIbnsbvmiYDlsZ7nsbvlnovlkozliIbnsbvliJfooagg55qE5a+55bqU5YWz57O777yM5Y2zIGdldCDlh73mlbDkuK3nmoQgY2F0ZWdvcmllc1xcXFxuICogMi7orr7nva7lrZDliIbnsbvmlbDmja7nmoQga2V577yM6LCD55SoIHNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KHRpdGxlS2V5LCB1cmxLZXkpXFxcXG4gKiAzLueEtuWQjuiwg+eUqCBDYXRlZ29yaWVzSGVhZGVyLmdldChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UpXFxcXG4gKlxcXFxuICog5pSv5oyB6ZO+5byP6LCD55So77yM5LiA5Y+l6K+d5Y2z5Y+v6LCD55So55Sf5oiQ5YiG57G777yM5Y2z77yaXFxcXG4gKiBDYXRlZ29yaWVzSGVhZGVyXFxcXG4gKiAgICAuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkodGl0bGVLZXksIHVybEtleSlcXFxcbiAqICAgIC5nZXQobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlKVxcXFxuICpcXFxcbiAqIEB0eXBlIHt7c2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXk6IENhdGVnb3JpZXNIZWFkZXIuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXksIGdldDogQ2F0ZWdvcmllc0hlYWRlci5nZXQsIGNhdGVnb3JpZXNLZXk6IHt0aXRsZTogc3RyaW5nLCB1cmw6IHN0cmluZ319fVxcXFxuICovXFxcXG5sZXQgQ2F0ZWdvcmllc0hlYWRlciA9IHtcXFxcbiAgICBjYXRlZ29yaWVzS2V5OiB7XFxcXG4gICAgICAgIHN1Yl9jYXRlZ29yaWVzOiAnJyxcXFxcbiAgICAgICAgdGl0bGU6ICcnLFxcXFxuICAgICAgICB1cmw6ICcnLFxcXFxuICAgIH0sXFxcXG4gICAgLyoqXFxcXG4gICAgICogMS7orr7nva7ku47liIbnsbvliJfooajkuK3mi7/nmoTlrZDliIbnsbvnmoTmlbDmja4ga2V577yMXFxcXG4gICAgICogICDmoLnmja4ga2V5IOaLv+WIsOaVsOaNruWQju+8jFxcXFxuICAgICAqICAg5Lya6Ieq5Yqo6LWL5YC857uZIHNjcm9sbF9idXR0b24g55qEIHsgdGl0bGU6IGl0ZW1bdGl0bGVLZXldLCB1cmw6IGl0ZW1bdXJsS2V5XSB9XFxcXG4gICAgICpcXFxcbiAgICAgKiBAcGFyYW0gdGl0bGVfa2V5IHRpdGxlIOeahCBrZXlcXFxcbiAgICAgKiBAcGFyYW0gdXJsX2tleSB1cmwg55qEIGtleVxcXFxuICAgICAqL1xcXFxuICAgIHNldFN1YkNhdGVnb3JpZXNJdGVtS2V5IDogKHRpdGxlX2tleSwgdXJsX2tleSkgPT4ge1xcXFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudGl0bGUgPSB0aXRsZV9rZXlcXFxcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnVybCA9IHVybF9rZXlcXFxcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXNIZWFkZXI7XFxcXG4gICAgfSxcXFxcbiAgICBzZXRTdWJDYXRlZ29yaWVzS2V5OiAoc3ViX2NhdGVnb3JpZXNfa2V5KSA9PiB7XFxcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS5zdWJfY2F0ZWdvcmllcyA9IHN1Yl9jYXRlZ29yaWVzX2tleVxcXFxuICAgICAgICByZXR1cm4gQ2F0ZWdvcmllc0hlYWRlcjtcXFxcbiAgICB9LFxcXFxuICAgIC8qKlxcXFxuICAgICAqIDIu6I635Y+W5YiG57G75aS06YOoXFxcXG4gICAgICpcXFxcbiAgICAgKiBAcGFyYW0gbGF5b3V0IOW9k+WJjeeVjOmdou+8jOWNs+W4uOeUqOeahCBkLnB1c2gg55qEIGRcXFxcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcmllcyDliIbnsbvmiYDlsZ7nsbvlnovlkozliIbnsbvliJfooajnmoTlr7nlupTlhbPns7vooajvvIxcXFxcbiAgICAgKiAgICAgICAg5aaC77yaXFxcXG4gICAgICogICAgICAgIHtcXFxcbiAgICAgKiAgICAgICAgICAgXFxcXFxcXCLlubTku71cXFxcXFxcIjogW3sgXFxcXFxcXCJuYW1lXFxcXFxcXCI6IFxcXFxcXFwiMjAyMVxcXFxcXFwiLCBcXFxcXFxcInZhbHVlXFxcXFxcXCI6IFxcXFxcXFwiMjAyMVxcXFxcXFwiIH0sIHsgXFxcXFxcXCJuYW1lXFxcXFxcXCI6IFxcXFxcXFwiMjAyMFxcXFxcXFwiLCBcXFxcXFxcInZhbHVlXFxcXFxcXCI6IFxcXFxcXFwiMjAyMFxcXFxcXFwiIH0uLi5dLFxcXFxuICAgICAqICAgICAgICAgICBcXFxcXFxcIuaOkuW6j1xcXFxcXFwiOiBbeyBcXFxcXFxcIm5hbWVcXFxcXFxcIjogXFxcXFxcXCLng63luqZcXFxcXFxcIiwgXFxcXFxcXCJ2YWx1ZVxcXFxcXFwiOiBcXFxcXFxcImhvdFxcXFxcXFwiIH0sIHsgXFxcXFxcXCJuYW1lXFxcXFxcXCI6IFxcXFxcXFwi5pe26Ze0XFxcXFxcXCIsIFxcXFxcXFwidmFsdWVcXFxcXFxcIjogXFxcXFxcXCJ0aW1lXFxcXFxcXCIgfS4uLl0sXFxcXG4gICAgICogICAgICAgIH1cXFxcbiAgICAgKiBAcGFyYW0gcGFnZSDpobXnoIFcXFxcbiAgICAgKiBAcGFyYW0gdXJsTGlzdGVuZXIg6aKd5aSW5aSE55CGIGJ1dHRvbiDnmoQgdXJs77yM6ZyA6KaBIHJldHVyblxcXFxuICAgICAqL1xcXFxuICAgIGdldDogKGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSwgdXJsTGlzdGVuZXIpID0+IHtcXFxcbiAgICAgICAgLy8gbG9nKGNhdGVnb3JpZXMpXFxcXG4gICAgICAgIC8vIOWIhuexu+aJgOWxnuexu+Wei+eahOWIl+ihqO+8jOWmgu+8mlsgXFxcXFxcXCLlubTku71cXFxcXFxcIiwgXFxcXFxcXCLmjpLluo9cXFxcXFxcIiBdXFxcXG4gICAgICAgIGxldCBjYXRlZ29yeV9uYW1lcyA9IE9iamVjdC5rZXlzKGNhdGVnb3JpZXMpXFxcXG4gICAgICAgIGxldCB0eXBlcyA9IFtdXFxcXG4gICAgICAgIC8vIOagueaNruWvueW6lOWFs+ezu+ihqOaLv+WIhuexu+WIl+ihqFxcXFxuICAgICAgICBjYXRlZ29yeV9uYW1lcy5tYXAoY2F0ZWdvcnlfbmFtZSA9PiB7XFxcXG4gICAgICAgICAgICAvLyDov5nph4zkvJrmi7/liLAg5bm05Lu9IOaOkuW6jy4uLiDlhbbkuK3kuIDkuKpcXFxcbiAgICAgICAgICAgIHR5cGVzLnB1c2goY2F0ZWdvcmllc1tjYXRlZ29yeV9uYW1lXSk7XFxcXG4gICAgICAgICAgICAvLyDov5nph4zkuIvpnaLlr7kgdHlwZXMg55qE5YC86L+b6KGM5aSE55CGXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIGNhdGVnb3JpZXMgPSB0eXBlcztcXFxcbiAgICAgICAgbGV0IGluaXRfY2F0ZSA9IFtdXFxcXG5cXFxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxcXG4gICAgICAgICAgICBpbml0X2NhdGUucHVzaChcXFxcXFxcIjBcXFxcXFxcIilcXFxcbiAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgIGNvbnN0IGNhdGVfdGVtcF9qc29uID0gZ2V0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KGluaXRfY2F0ZSkpXFxcXG4gICAgICAgIGNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxcXG5cXFxcbiAgICAgICAgaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxcXG4gICAgICAgICAgICAvKipcXFxcbiAgICAgICAgICAgICAqIOmBjeWOhuesrCBpbmRleCDlsYLliIbnsbtcXFxcbiAgICAgICAgICAgICAqL1xcXFxuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSwgaW5kZXgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3J5X25hbWUgPSBjYXRlZ29yeV9uYW1lc1tpbmRleF1cXFxcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXNfa2V5ID0gQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnN1Yl9jYXRlZ29yaWVzXFxcXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzID0gc3ViX2NhdGVnb3JpZXNfa2V5ID8gY2F0ZWdvcnlbc3ViX2NhdGVnb3JpZXNfa2V5XSA6IGNhdGVnb3J5O1xcXFxuICAgICAgICAgICAgICAgIC8vIGxvZyhjYXRlZ29yeSlcXFxcbiAgICAgICAgICAgICAgICAvKipcXFxcbiAgICAgICAgICAgICAgICAgKiDlnKjnrKwgaW5kZXgg5bGC5YiG57G75Lit6YGN5Y6G6K+l5bGC5omA5pyJ5a2Q5YiG57G7XFxcXG4gICAgICAgICAgICAgICAgICovXFxcXG4gICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0ZW1bQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnRpdGxlXVxcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gZXNjYXBlKGl0ZW1bQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnVybF0pXFxcXG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmxMaXN0ZW5lcikgdXJsID0gdXJsTGlzdGVuZXIub25EZWFsKGl0ZW0sIHN1Yl9jYXRlZ29yeV9uYW1lLCB1cmwpXFxcXG4gICAgICAgICAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBrZXkudG9TdHJpbmcoKSA9PT0gY2F0ZV90ZW1wW2luZGV4XSA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiAjMDk4QUMxXFxcXFxcXCI+JyArIHRpdGxlICsgJzwvc3Bhbj48L2I+JyA6IHRpdGxlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHVybCkubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXBbcGFyYW1zLmluZGV4XSA9IHBhcmFtcy5rZXkudG9TdHJpbmcoKVxcXFxuXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnVybCArIFxcXFxcXFwiI1xcXFxcXFwiICsgcGFyYW1zLnN1Yl9jYXRlZ29yeV9uYW1lLCBpbnB1dClcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yeV9uYW1lOiBzdWJfY2F0ZWdvcnlfbmFtZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcXFxuICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgbGF5b3V0LnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJibGFua19ibG9ja1xcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxufVxcXFxuJC5leHBvcnRzLkNhdGVnb3JpZXNIZWFkZXI9Q2F0ZWdvcmllc0hlYWRlclxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaIkeeahOaUtuiXjy3op4bpopFcXFwiLFxcXCJwYXRoXFxcIjpcXFwidmlkZW9cXFwiLFxcXCJydWxlXFxcIjpcXFwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG52YXIgdmlkZW9fdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9mb2xkZXIvc3BhY2U/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwX21pZD0nICsgZ2V0VmFyKCdzdGFyaWQnKSArICcmc2lnbj0wYTUxYjc3MmY4MWRjNzgxMmNkNjYyMjZhODMyNTM4Myc7XFxcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5kYXRhO1xcXFxuZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHgubmFtZSxcXFxcbiAgICAgICAgaW1nOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHkjXFxcXFxcXCIreC5pZCtcXFxcXFxcIkBsYXp5UnVsZT0uanM6cHV0VmFyKCdjaGFuZ2UnLGdldFZhcignY2hhbmdlJyk9PWlucHV0LnNwbGl0KCcjJylbMV0/JzAnOmlucHV0LnNwbGl0KCcjJylbMV0pO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5bey5Yi35pawJ1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXFxcbiAgICB9KTtcXFxcbiAgICBpZiAoZ2V0VmFyKCdjaGFuZ2UnKSA9PSB4LmlkKSB7XFxcXG4gICAgICAgIHZhciBsaXN0MiA9IHgubWVkaWFMaXN0UmVzcG9uc2UubGlzdDtcXFxcbiAgICAgICAgbG9nKGxpc3QyKVxcXFxuICAgICAgICBmb3IgKHZhciBhIGluIGxpc3QyKSB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0MlthXS50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGxpc3QyW2FdLmNvdmVyK1JlZmVyZXIsXFxcXG4gICAgICAgICAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvY29sbGVjdGlvbj91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2lkc++8n++8n2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsn77yG77yGYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzbvvIbvvIZidWlsZD02MTMwNDAw77yG77yGY19sb2NhbGU9emhfQ07vvIbvvIZjaGFubmVsPW1hc3Rlcu+8hu+8hm1lZGlhX2lkPScrbGlzdDJbYV0uaWQrJ++8hu+8hm1pZD0nK2dldFZhcignc3RhcmlkJykrJ++8hu+8hm1vYmlfYXBwPWFuZHJvaWTvvIbvvIZwbGF0Zm9ybT1hbmRyb2lk77yG77yGc19sb2NhbGU9emhfQ07vvIbvvIZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0TvvIbvvIZ0cz0nK3RzKyfvvIbvvIZzaWduPTdlMGYxYjkyZjNlZjM4MjhiMTliZTY2ODM4OTE1MDA3JyxcXFxcbiAgICAgICAgICAgICAgIC8vIGRlc2M6IGFbJ21lZGlhX2NvdW50J10sXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG5cXFxcbiAgICB9XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5oiR55qE5pS26JePLei/veeVqlxcXCIsXFxcInBhdGhcXFwiOlxcXCJmYW5qdVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXFxcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L3YyL2Jhbmd1bWk/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnBuPScgKyBwYWdlbnVtICsgJyZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjkuMSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZzdGF0dXM9MiZ0cz0nICsgdHMgKyAnJnNpZ249MTYyNGY5NTk4ZGNhMDZlYjEyOTUzNGU0NzY1ZjliMWEnO1xcXFxudHJ5IHtcXFxcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5yZXN1bHQuZm9sbG93X2xpc3Q7XFxcXG4gICAgZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxcXG4gICAgICAgIHZhciDnsbvlnosgPSB4LmlzX2ZpbmlzaCA9PSAxID8gXFxcXFxcXCLlroznu5NcXFxcXFxcIiA6IFxcXFxcXFwi6L+e6L29XFxcXFxcXCI7XFxcXG4gICAgICAgIHZhciDmoIfor4YgPSB4WydzZWFzb25fdHlwZV9uYW1lJ10gKyBcXFxcXFxcIiB8IFxcXFxcXFwiICsgeC5iYWRnZTtcXFxcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcXFxcXCJcXFxcXFxcXG7igJzigJxcXFxcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFxcXFxcIuKAneKAnVxcXFxcXFxcblxcXFxcXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcXFxcXCJcXFxcXFxcXG7igJzigJxcXFxcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFxcXFxcIuKAneKAnVxcXFxcXFxcblxcXFxcXFwiO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFxcXFxcIlxcXFxcXFxcdFxcXFxcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxcXG4gICAgICAgICAgICBkZXNjOiBkZXNjLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXFxcXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59IGNhdGNoIChlKSB7fVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaIkeeahOaUtuiXjy3ov73liadcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZHNqXFxcIixcXFwicnVsZVxcXCI6XFxcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvdjIvY2luZW1hP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZwbj0nICsgcGFnZW51bSArICcmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi45LjElMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0Qmc3RhdHVzPTImdHM9JyArIHRzICsgJyZzaWduPTE2MjRmOTU5OGRjYTA2ZWIxMjk1MzRlNDc2NWY5YjFhJztcXFxcbnRyeSB7XFxcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkucmVzdWx0LmZvbGxvd19saXN0O1xcXFxuICAgIGZvciAodmFyIHggb2YgbGlzdCkge1xcXFxuICAgICAgICB2YXIg57G75Z6LID0geC5pc19maW5pc2ggPT0gMSA/IFxcXFxcXFwi5a6M57uTXFxcXFxcXCIgOiBcXFxcXFxcIui/nui9vVxcXFxcXFwiO1xcXFxuICAgICAgICB2YXIg5qCH6K+GID0geFsnc2Vhc29uX3R5cGVfbmFtZSddICsgXFxcXFxcXCIgfCBcXFxcXFxcIiArIHguYXJlYXNbMF0ubmFtZTtcXFxcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcXFxcXCJcXFxcXFxcXG7igJzigJxcXFxcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFxcXFxcIuKAneKAnVxcXFxcXFxcblxcXFxcXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcXFxcXCJcXFxcXFxcXG7igJzigJxcXFxcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFxcXFxcIuKAneKAnVxcXFxcXFxcblxcXFxcXFwiO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFxcXFxcIlxcXFxcXFxcdFxcXFxcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxcXG4gICAgICAgICAgICBkZXNjOiBkZXNjLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXFxcXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59IGNhdGNoIChlKSB7fVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaIkeeahOaUtuiXjy3mlLbol49cXFwiLFxcXCJwYXRoXFxcIjpcXFwiY29sbGVjdGlvblxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczp2YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXFxcbnZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxudmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoTVlfVVJMKSkuZGF0YTtcXFxcbnZhciByZXNvdXJjZXMgPSAnJztcXFxcbmZvciAodmFyIHggb2YgY29kZSl7XFxcXG4gICAgdmFyIHJlc291cmNlcyA9IHJlc291cmNlcyArIHguaWQgKyAnOicgKyB4LnR5cGUgKyAnLCc7XFxcXG59XFxcXG52YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzLnNsaWNlKDAscmVzb3VyY2VzLmxlbmd0aC0xKTtcXFxcbnZhciB1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2luZm9zP2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZSZtaWQ9JytnZXRWYXIoJ3N0YXJpZCcpKycmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnJlc291cmNlcz0nK3Jlc291cmNlcysnJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nK3RzKycmc2lnbj03ZTBmMWI5MmYzZWYzODI4YjE5YmU2NjgzODkxNTAwNyc7XFxcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwse30pKS5kYXRhO1xcXFxuZm9yICh2YXIgeSBvZiBsaXN0ICl7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOnkudGl0bGUsXFxcXG4gICAgaW1nOnkuY292ZXIsXFxcXG4gICAgZGVzYzon5pKt5pS+6YePOiAnK3kuY250X2luZm8ucGxheSsnICDlvLnluZU6ICcreS5jbnRfaW5mby5kYW5tYWt1LFxcXFxuICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyB5LmJ2aWQgKycjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICBjb2xfdHlwZTonbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxcXG4gICAgfSk7XFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt55m75b2VXFxcIixcXFwicGF0aFxcXCI6XFxcImxvZ2luXFxcIixcXFwicnVsZVxcXCI6XFxcImV2YWxQcml2YXRlSlMoJ0xsZTBuYXlkc3pRMjUwSWhPeWRSQTFrSnIwWG5OYS9yRmxzamlFS1pXN3JldFpGZXVITkpsUEtXTUU0YTlCY2ZCOUIwaFRhd1lNOHYraEV3ekYzUlZOMnNSL2lIOE52eUhZNnV6S05nak1iSjg1R0xFZzBKeWpQSXRmR0dSZ3dKRlVWTkwxSUxlUk5iYWUzOVhWcm9EN1dLVUtCUGZ2N0h3cWoySFlGSDV1UUxwT1Zadkc0VWNZT3pBczdqOE5pYVBFVUpNUzQyNEJrYm5zMU5mNkZJRFhsZmtOSUlzV0JIV1JkTzZtcDczVnkydnU1aGcxYUcwQVZlazUrcFFjcWFreEVNOWNXR2dDSkM1bUtwVWlaU0V0UDkyc0tBOVNLKy9OSHNxZjEzQ090UVJpaXg2Z0ZoeUZoTGV6NytHcHVTYkxIMTNrMUZEVVpraWxZN09CUDh5Q1pQK1ltNDFZaGkveUlUeDNFbExtZ2ppQmV4ajBxVExqcktJWG54NEREWGlpcFN3L1lwVU5kcXRnVVhITmk5OGE3Y0d0TEUrOTVBcWsyRGNWL0gzT0c1aHBzd1NIQzIraWxyUkxQOCtUeUxUb2dyRlVhSllNeE9tcld3QWpVTTFGZkxzL01TeDYwMVcvdWVGREFtaE8vWlpvVVp3ZjNNWWJodGt2K0J4Z3lHLzc2V2ZEQVFiR0FSSjk0TmFqWjlwenp2Y3VYSUVyZ3IxRC9QdWdGbWhPV0hrL01TZEZEbEJxTURwRTh4OTVZajZ0TDR3RnN3Mk9hR09vZThNaHNuaUZZRUY4QnFNUFJlZDB6N2NCQzRSR3hENU5nVjFGS1dIQVBnWlBZRktqZ085Z2xOSnY3MUlTZ0lvOVNLUkJFakttRTRjRXZiL2tKRU9DRURMakJRclZzT1QxMU91WmNadWRDWkVPVHptcmlHSGRQZmZsS0JyRnNFaDd5bFV0UFpZRWNFcEN5MVdoMWUxWXhOS1poYk91azAyd3RBN0ZmSE5QMERxSVo4M0Y4UkZHMzhSWTM2ZkZJLy96THBDTUVNOFVYaHpsanc1cW9TUHZ6ZmhlUjEvR0YzTWpqRmZzelhaM1VDdmNCZzJ3QzFPa0FWS3AwdVNjR0xtZXE2UWFFYlFOMnVuejAycHBGVjdlSzlINzN5RDFFRWxOS0NRQ2trbUI2ZHhwcXRrVjZKaFJzeGlnTWNlWG40ZFVHdCtBdGZrQTJLdnltZTVya3VwcEJjZUZ2TWZoSUZzeFlHUjJVRTkrb3g2a2ZsWUJ0UHA1NVE2dWxJS3lkaHJrNVRBVHpNMml2OWY5eHFZcEpJSUJudElWSW9mM09hbkhKV3JFdHhRMmMxZ2N2T3QvV2JFL2xrTmRyUTMzSU9Zck9GYjJjYlo0TS9saDVuVnR6aWp2cFllME02TzV2K0lvWk1wT2lWcXNlN3lOaVhoQUh4RTA1emlpVmNqOXBpenBXekllYnpPNGcrS2thcUpyQlM2eXo1UVhtaUZjV1ZFU0lJSW92WUhlQ0tSRExnQm9qcUpkVGVJWGFSL0tlNDlzdDAzWDJIUncycjBCME1uaWY4dEVQZGExZ2xjQkxzVEVaRVcyaGJrZHRvRWljSVJGdmtpNTV4OUhRdFFUNHpwMlRXcDNhdTdUSXp3RGl0Q1ViYkRPVjF6RmdTSGgwODczTGx5Qks0SzlRL3o3b0Jab1RsaDVQekVuUlE1UWFqQTZSUE1mZVdJK3JTK01CYk1Oam1oanFIdkRJYko0aUJwK3hYaGpjKzJydmlEYUFPeUZDOXVsdmt4emErVFc0TWF0MGh4dFlEcklsK0Rwb3VlanlJTVRXOERzdlh4UFhDQVFibXdHbERFQWZPaXlxdHFMUTlIZjhnRFhFMzVRN2F5MHlBQkVlajFxS1dncmovWW5CYlkvZFlBT1BTSHBtbGRkRkxKbktwQXBkTVh2WUJzd3JXRjBDUlJTYjFzN0NaUmdNZk9Reks2SXo2L3RlaGFzbU9zN01sOXcvSHBuNW5LaDEwK24waUdYTXZ4NUlJK1NHcG9MdWVDdFJtSjdVVlZDdERHNnhldnhZTW0wNHNBR0dHSmFDREFoR0g4aWNiaElFMmIrb3FERkVwbVUwZVk3UnRHNzloUGhMK2dYWU95WU5VdkpxZWpsYloxL09kdkw1bll5Nm0zMEd3bDN6N3c1ZXNsWkNVQTBrYVJzNWttVU9MdkwwUVFQRDc0ZmFnQWRxR3NMSFVHRFdiNEJ6Q0xGMk1ZTEh5K0RzY2tLM0ZZSk13MFU1cU43TDcwMHNWU2FsZjZ0Szk2ZFdxem41ZUlyZXdmMWlHbzgzSWN3ejlvODFKbXVLQTFMcElTUzkwOThud0F4MXFQMUZ6UGN3SWhUU1Z1UjgrQW9vMXAzRGkwV0x3TktRTk9JOHg3NURtYUU2QkxQaURrYURMS0p5YytielgwaElDM3NQYjIrZGZ2bGtzQ25LMjJjR2hLMjVGczlPRlIzckYvVkZWU1JiREc3KzdBcU9rRTI0Ym9rRVVqZDhuUzVIanFwM0QvdWsrMFh6Qnk5MjIyWDZiSm1KaHdGbEt6NDZUQlZYZXp6bTNkelFXN09sKzBPcWYvRXgyQVkrcndQK002eEZSSFVYL2oyR2NHYTVtaGJKVXpSUkJkTzVJcHJVMk5zNkh0U1hDOUlxY3hXMVZsNWJDT2JNRzkrSHZ2enUwc0c3QVdOZ3VaSkNzeGtKWGhoZ3dmMkdCNkZQdTYrb0ZSejZENEEwNXNzRHNMTFZ5bVo1Y2dUYkRjYmVxMTlVbWlZYW0zUG43cVdJY2p1aDlPc040dGlGVHJyVUVQWklSWDlYazBVR0RZZmFiUTFwWGZ4TS8reVNoOHE3ZHduVkovZzdsdWloR09lZU53SFhBRkF5NG4zYWNQSDJYQmMvbXN4NVhLZ0lyZU9STVZZL2NGYjlLY20zb1daenpLNitIU1A4NXRrRktLbTU1aGc4TXh3aTVJeDlSUUUvcEdBeDFjc292U3AzalJQMGg2Mm82TmhGa3RDREtXempFVWw5Ym1hMjhmWnlpWTRkWEJFc0hCT3BLdkJ6QUEwbFJrZXpUbkV2dlhzOVo1NVVyQWE4WmhBRnV4NlpFTnc0Y01USXVTa1ZmdytWL1UvbW9tbHRKOXZHUGdpcWI1blpsOUt1N2QwUk9WMTVKM1FBc2JoT3hUNlNna0lWdWd1VmFUVlJjajBIVyttTU5ZS2JReW5yTlJBcUtEZUpxdVZ4YzlIbFBNNkw4cVBuWklXYmJIQWZVZkdidzBsUmx3U3VPcEY3K0EyV0pMWjRYelNnSGJjTVhrdWx6UFBEUDkvY2FSSUI4ZTJWa3pFWlNQblVpWkFwV1A2d1d1c0h1QjM5V0FNNzgrTkJpNEJwMm14V2pMS0hMV1FNRGVJWFhoZHhlY0s1cVVVZllMZ0lUaWg5RGVGcGdMTldjQkxHUUZiZFNOa0ozTldwY0c1NkRhakRJdUxVYThrMDBpOTRjSndBek1rSkJ4TkpiNWVoQlJrVnZXWG9zbXRKQk1kUmY2TkVic1Y5dTh2cFpqTkVvZ1Vrbm1sdEo5dkdQZ2lxYjVuWmw5S3U3ZDFacVRQem9wd1poaCtpdERwVWIwTHIyN2M1d05BQUVqcnBoT3FmZTBOajM5Q05XMExINFd4amYybHdseE10T0tSMUhRTC9DUHc1MXl5WUovTFZyUXoraWYzaUlCTlU0bkNnT2J1VzVKVUxUdnNRc3MyUm5lTEN3NnJwaHhnTXNkYXdNRWdaOXFDckNNN3lUTTBFeWxGeGZqaUlaS3FiSzEwQmFlMk5vSEQrR3VvVUtBUXA1U3U0QXFYU2ZLTHpteDRoV2JtU2lOVjdtQ0IvcmR3MXlic1B2Z0FGY0c4NU41M2tOanpjUHZiS0xPT3hIWEhZVldDbEJtSnByd0p0SEE2QjFXWnBHV1J4NU0vZ0Rtc0d6VlJtVnVCRHZtU0FaTXdJZVZyNWJ6REU4Nm0wTnFjbWdUTmVweHdxQit5QkJwNUt6ZDQyRUFRaHQyRUs1VDJ6TXh2Z1R6ZVMvejNLL3E1bFJIbDF6SzBKL3NRd0x4OXo4bE1WZzlSQmJBZS9lYjIwVm93emNxUGRlL3FpMGpITXdHY01hQzlkdXlXNTZ3bEdPc25rYmV5QlEvUGZSU1Nya1VHL3ZjYUNiVGE0SVQ4NFp6dHBOUVJ2YmVVbklBb1BrVy9lWjZ3T1VpYTRKc3lhdzk5V2E4K0U0TGpEbVowelJoblNIZ1V5Qy95YjlyWlQybEUxUzdKQklrN1laUFh5QTAwYTJMZ0tGRzg4WXpWODBoaStBVlR3UlpQazl3bE83Z1JTMk5SLzU3N25JeEcwSDIybGxGc2NtTjFMaEk5MUZEMlZiVlhicWlLVVZqSmNWbjYvc1FjVHd3ejd0dkI2ejl5TW1yRGx5Q012eVVkd0dJNnVyOUVhYzRxVzZFVXoxeEgyeTVUSThBZmh4eHhPckFRWm5FUmJUTUlDZGZLR1FHREplL1RkS1JLUXRnYnBiNU1jMnZrMXVER3JkSWNiV0E2ekRQdTI4SHJQM0l5YXNPWElJeS9KUk5kdnNYNkRsS2RZd0xuRlVRajJ0NkhRSGh0amtPbGkrdGNPblJsakFhMzJvcmZ4NzlWT3V2aU5xK21PcVIxTitDR1JGMmJtS1Uxa3BEQXJ4NFZ6RGRXSmRkRXJhK09rRm5PTkVHejRZZWN3RVJaVWQ3NytublBMMk1vQ01tRURZY3ZYSXMyRXVaSGRrVGZuMWl3ZW9nRDAxUWZ3cVpITkY4SHZsQldNVS9mNkVkelhLTHFJZ1JLMmlwQU1GZ0tSdmxSYmFzSFBsUnVzU2cwcFJOVlVDUVI1ZWJOeXhxRlhoTGMyK29lZEs4SkVvTG9NRVE1RDNmSmFyWWdkOWp5NmZPaUJrRzhDOUlJVEI4bXl0eXlzd2NLdHdoeTEvMVdiSE83Q3ovUmRxVmN5SjM0QTJxMlozeXVpMVE1YTFvUG1PME5XTGZueWE0K3NSTlFya3NpUTRIdU8yNkdhWlVSOGtXekYxT3hkZHVhUFZ4SU5NYjY1OGNzWFZ1REdaNU1ZcFdkYmNrRlc2ZVlQRml1K3hTREMvZUR6c1hBSDZGTDNQVjhPcERVUEJtcFRlazJYWGZlS2RxVTJwUzltN1NDaUNCNXUycWJpS0MyYzl2QlYyNE02czhSYTRobWQrUGFqNEZUeXR2MzZTSDFiTEs4dEkxbFp6K3dpZis5WklBZFQyMmNyNTdqcSt5cE1QZU4xeTU5RHF2N3BzaEQrSlRJOFVnZFM0UVZsQ3dGMTdZcnZKSFBENDJLRkViZ1FZKyswajBkYWx5SFljZ2Y1OFF5QWw5K25uQkpaVlVWbElpbFE2cUVQc0h6YjZyTWJWNjdZU3FaSGNMdmZDVG9iUmk0cGFCQ0VVeGN5TkxRdkpTS2NLcFpBdWYyKzhLODF6S3l6M01kRWN1cnRzaG5zeFFBK29jREMyT3k1OGl5Q0s2ZFNqSXJUUGlGRlE4MEJtcGEyRDNsc2NMVm1ZNUlSNG9rOXRnZEJlWEk2WFo4dTJrOUtMSldkK0Zxc2Y4WU9RR3hPNkVIMmNDS08ydTArM0YvR096NisvT3J1dExhaHFSMm1rVkdJZEpLdVhlWUdzWm5EQmdlSmdCSlo4cklIQzBDME5XTEx4aWpMTEZKZnppMHB6R0lSSFc0TEFKQWhPL2ZMcFNMNTBSbHJoTVl2YlFzNG9adTFwZSs3OVhUNVJSODhkbFhzMXI2RDRzSkhZaDYrN3gza1BRdU1sczlyYzFueXd6QmRsMzVDSVp4RXc2Y0FDalA4WTRkbjZ6d05ZUG50OVFtRzJJVjRaNHJNVndJNXBaUWltVjRjQjFKeXAveUszdk9jRmVwV2JhMGlOTDd4QWhFR0R0czhJN2hLLzVOSFNDendzNjdUU2tKOFVIeXdHa3RTVEpDVDAxNXlwUUNhU25LbU9PcVVpbXhDYWhmUzRlNGY5WHRmQmxTbEdXY1oreXl2TFNOWldjL3NJbi92V1NBSFU5anhzQ1AycEs4SXBIOGpSeWFEeGFpR0ZMeE1tUXhjNWtEZ2c2dkdkUDZLeTI0QTJBMGVCaWVYYmdQZlh5SHM4MlI0NTY5MjJKejBwVkFHc2pQNDQzbXhpRStvNld2M0xuZG5tMCtGL1ExSGt2NzRQZHZJbUhETjR1ckdGOHRFQitEbENGUStsRlNxaCtiQ1BJdmh6aGU2Tnh6cThEaCtpb3p1blpJb2ZJenJpbzFnY3JCZkIwUVlkalhHMEZUUjdwZE41NG0yTXB2RUgweWZ0RW8xOW5ydkxLOHRJMWxaeit3aWYrOVpJQWRUMnRIVi9DUFNzS3Q3endjeXRhR3JMYWFvNDJEMjJzc3dUUkxQYUcvcTZHaTdEakVoaHdLbEJ4amp3N0lNeXRJSTNOa004Y2IrSnRFeWY4d0ZrVEVGaUZMVVlpbVEvaFBYSTkzenJYaysrdnFvZ0xydTB0YVhndGxNMTdxdEFmekdRdTh5VWRJNHFxWXplSnhYeGYwTk5aMm9CamVEcjJEaXdJOU9YUFV1Qkhic0w0YzMvbncxMEVtMlU2TUZCVWNyWmovRE1hU0Z4VmNaN01vV2wyb244R20wVm93emNxUGRlL3FpMGpITXdHY01mOXo0OWVnWlJRekw3aEtTVU01VFB0MzdBbWszNzljY3dwTHRQVFQyM0JoN1VobmtkRzBHVW9IdkhzeTk5R3htUWFSNG5heU8vclFGYm9xdXN0U0ZMck84MC9QdG5IOEVKY3dRYVFZWkp6TjFiOWJENlJySmw2elFJb213TWZZdXUrbThGc083emQ0L2NmcjZoaU9lYkhTS1ptRFBGZDNYUkplLzlDTm5MR0xZWEpMcll2RXZ0Rnp3RDhBM24zZGhYV1BpbWtBaXNGMFIrN1BoUTlWSkxXY0doOHRxS2dvVm9aN2t6Qkd1RDdTaDljKzJTcitTQUdINmFIQlQ0RnQxZXN3VW5iK2ZuSkdoYUhTQy9Tdm96S0NMbVdOclBROTRhWnVZeU9PdjBmbFBVOVB2OUtPUVV5KzVVdWRsTXZ0cWw3QklKZm80UGloL2xLOGUxTkc5Sk4wRDlNTHUyZjcrVUJCY2duY0I5RWh1Y0tRQ0pzUmhQTGdacFgvcitzTGduYlMxSGNCSzU2djdxTm1QUVl6bE1Md2dVRlFGN0FkZXdUb2UvWWl1QWJxY0tjTTFNd0xmSTRiZS9nbkc0YzhSNFU5QlAxR2w4MVo1VExaZldmZTF4NlY4R3pKSTk4N1Z1SzJZNzEwbmxFc0lVQUNwMERBK3AzYjZxdy9iRVVHMGJvTFB6b05ySVRHdE9Jd0VidVhpQWp4a3Zocy9KQXZ3SUc2NXY2b05TazdZeEpaekZObytqMWZJYXowK0ZCalc1Y1dmK3NpT3Azdlloa1hXbzVTbDZhQzduUXI5RHpoTjcwVE9pOW5CekhRUkZsUjN2djZlYzh2WXlnSXlZUU5oeTljaXpZUzVrZDJSTitmV0xCNmlBZFEvREY3d3lIOTl6SXBySU5VNE54ZXZiNkh5VkpQazUxWEZCMVNJZ1NJcnJwejNFajNKK1ZpZ3BnRWJoVlo2cXNGbDhBbjJVWXBBbDN4THkxdWNCRjJ4QnVxWktZYnBKVXREOUZ3R2VSa1Z5RTF0R3FqSHRRWWgvSU1ncXZmYXlMWkJ4aU8rVjNUQzJWUEZ6MnJvQ3h4TjhJTHp5S0NjY3hJWTZFWXNnMndMYjFiOUIrcldINEc4Ti9yZ0M5RDByWHJuUUtFYllwK2xYWGx0d0VTUWdQenJiNUVvUlB0eTlkaWJsU0JieHI0UHdFbC9HbnhSbEZacFlrOER5ZkZKZHVOODEyMVg1bVJXS1U2NjltdUczakk0THNYcmhsNkJWVk1jWE45a2FxOXF6T3IydlRmNklzNU96Vit4Z1FOQkRzTWlkc0o1LzgrVStaTFhvb2t0Uzd6QjlEanlFblRReFdYT25oSXc0azdXemo2cG0rWkk1VzFOMzBRYlZCK1FmT0lmRnprQThSM2tzb0R1SXhma2crc1k2a1BHczdNY3JTV0UydzBXWlpUY2lEb21UTnovYS9BQVJHYUtMRS9lNGtnMXIwcFNFZDVMcWZ2MkdQRDBDVkcrSUlSc3E5NUhNRnJYRElmZi93OWJMSzh0STFsWnord2lmKzlaSUFkVDJ4OUpjZHg4LytFTUw2c0YrUkJoWk9JaXpkblVDY3ZqTHZFM2R2alQyWEJpY2RRRno3MUdTT2VnamcrSGZ5c1RhOTRwNDZVcy9nK2l1V0hBMnNkSHVFR1lTRW5RbC8xWGtyR0kxd09xTGM0eFcvVHhmY0pPU0JZMWZPSTJXTkF5cEtTSjNYTHExYjRiSGxxNkJWeFJsN1pHcFhJQSs0VGpoamNOV0QzaFcwaFFybzA2ODF0SHRnNytiandDc1Brdk1VejBHNWtQWmhtL3lwMVp1YXlHOGEraG5MQXN2dS9NbEtuUFl3cmxURlBFTFBDenJ0TktRbnhRZkxBYVMxSk1rUnlDR3Z4YVRra1EvaWZGN0tkelZueHlRMmM4OHhRd0djSndiNWlGd1RJckxLOHRJMWxaeit3aWYrOVpJQWRUMmVtV3U0V0Q1Skw5cFlReXM2dXVUanBVbnkzR0NCcXRtbFNGN1dBcWIvU0ROTkd6eU5RN2ZhOGN6Nm8yQnVlSDduc2V3dExyV0k4MTM5a0RZN2J1d0lKbFpQTnJRTzE0bktDNEZSZFlUZDZ0R0xSemR6cFJRM1lTTjFlYm9xTHlEYWlEdHQyRWVvMlN1T05TWERLa0RQVXRETi95RVhoQ1FjZ1VON29MSjBwOVRUZ3NBNEltOTNSTC9IWG5FWnZxdWVlaEVOMFJndXlpRWs2eGZxanRHLy9xcm9kZlhZZFoyWGV2VUEwZTNRMU9EcXVzb2daNjlOUFR3Y01JSUVCOU9qbENkQ1h0RGxHRml3WWg5bnNLYVdZWjJoWno5cGFBQTk2NXlSQ1JUNkZTT0x4YW5SaG8yRXNsSS9leGRZM202aG5hRm5QMmxvQUQzcm5KRUpGUG9WS1NlVjRIYzJLK1BIcGRtQVU3bENpMG5DOHdTNkxWcE1TUzEyQjR6bTJKaXkvL3IzckZyQ2o4OXdDVk00cldNZUhqR05FcUlPa2NBS0lwaFRuOE4rM3RXckx1ZXZKQ1c4dUNQbVJxTkJJeDNvNXU5QWdnMkNveEJjYmVLaFNrZ3hjc3J5MGpXVm5QN0NKLzcxa2dCMVBaczhRWDB3MzMwUmJ0K24rcWZHT0tnbHRUaTlUVUlFK25ha093QlV3bEd6R0NvdmNqRi9lc2VZZmlzVDFrQVRaYTVDQnBSRWgrZm5jM0xldExoNmxKemJSekNPVTdodlltZnFDZlFJRUUyTEsvd251bzd4S0ZNNXh1N3dkY2JZbDdMSzh0STFsWnord2lmKzlaSUFkVDIraUZ3RDA4N2VuUzlRbW5jKzZUdEd3eXFjc3p1ejZqMDBCRklTL1NiTVZobkpBQytaUVdTb09ZU3N6a2VuUFlta1M5eUZjUGxGZmpCWm1oRGlkeUtuc3NyeTBqV1ZuUDdDSi83MWtnQjFQYkdhMklMMnYwSkwrMDV5cXBFazFSWFJzUGRkcXU5Ry9nWkJ3WXRiMDIvNjRMSlVjN21adHc1S3YvNFU4NG9mL1p3bDRicHFGOWF6NU5KcktLa0YveGl5eXZMU05aV2Mvc0luL3ZXU0FIVTloK3RsOVF4aTg3SzJoKzUvQjlXSGd6SDdYMWl5MjlPWkNvTWVsWEQrQ2xWeXl2TFNOWldjL3NJbi92V1NBSFU5aUVTTU9vdk1rQjdhdldhZ3FkVkFaWHpjL2dicE9seDBnc0ZqaFB3bjB1aExlMTJlZmEwbW9VNVoreGFzZFpML0dDajQzdENWQlRtRlVMcnZUaXlncGFHZG9XYy9hV2dBUGV1Y2tRa1UraFVHaEc3TGpBTVhoa3RFWGJ1ckdRWm5tY3RCTGFULzNrOHROYkhBcFZnS1hqTEs4dEkxbFp6K3dpZis5WklBZFQyM2x3S3I2Y2hCYTBWMEJ6dFB6R3VJekZYYmxQeDlDUGppYVdYSGgvc2lNRExLOHRJMWxaeit3aWYrOVpJQWRUMlA0bDAyQnVLQkRFMzBrdjlCYkYzU24veEk4enM0OXI4WElFMlRuR1RRWGpMSzh0STFsWnord2lmKzlaSUFkVDJUOWU2bFBxdUFUZS93eFYzWFRTVGlVRE5HNU96bXkxbnpPTVNyMElianM3MCtiZkZ4OGg3WUJnMDBBTXM2Y2lLejRtblc3YnJ1T0htQzQ0blhrZnN3cmw1RUxoNEV0WldTcXJoZmthcENvS2lmM2lJQk5VNG5DZ09idVc1SlVMVHcxQUlDWnlBQ0V4bjl3NlcyaUJWSXEyVVVjV0Y2TjVka0VPREdBSXdJV3A0WVFCNndyUzBiVHdaTC9Yb0dWOVhzSnczcnovRTI0VnpzQU1ZSjFqcEtBeEkxMmQ3MGwvekFDWUNrbFUvZHRSQWdVbktmQ0N4d2NMUXE0S1FxQUxkdW14UXd1K2ROQkJVb1g0bVBwRHpoVG5wVWNOV2V1ZGxUZnZkQTZWYWZXRnh5MEdtTHJoYmVNcUNPcTZUSHA3Vk9aU1ZVRHA1Nm5uSzhPajBicnJtOUFkM0h6ZTRhaXRUc2cyVS9mY0grN3oxcmNFRlFyd0FTdU1FZ0ZUL0RiZyswbjArb2NHRFhvZ3p3c3hBWkR5YVN1YlJzbXRWMDVCUUZUSi9CTnZ2L3VmNWtTWTlpLzk3S1U3SUZtWXhsOHNwd3prVHJpbzRqQVJINlp3VFhwUmxIOTZUWmRkOTRwMnBUYWxMMmJ0SUtJSzVXazc0SzV3SDMyU1lUc2hWT2YvaXl5dkxTTlpXYy9zSW4vdldTQUhVOXNRc1ZKem0vcFlBZk5mVmhYR1JNSjZTb0Qyb2ZrSDlKK1pTbkxmREpFODBqOG5HV1NqZkdxblA4bTNRN3NjbDhnZGNFc1ZTRFZ4cVFTeHdhaVJVd0RCaDVPVENsN0R2b1pxRHdvaXhwME81VnFLdnl4OFdDVXlPT2ZmeU9yQWY1NW9lVUtuYTVwMklBd2N0eWg0SVJuVW4xOVFSeElkYStUeCtuS2ZENEdSZ0VNUDVLNzhmYi9tZW9Qa2JBZEhQVWJDZjZ5Qjh5TzQrOTZXbVFNcXJFaWF6S2V5WnRqYnZsaWtiT2VNUDVmQzhtN08xTy9DQm5oZm5PckdZekhad0hrQ3Fjd3hBcXJCOVdrYkxMeUhNWnZwNWdHZ3JJb0tHaEZIRDVibmY5ZkF6enBReSt3Nzg4N0RrSnl2djJ3bk9KK0txbG1aQW95SFZpSDQzRnowWGFBMFJtbUJicEhKZkFCY0psMnBBa0tvSFZVY2JkNng1Q3pSUjgvT0F0bnFPdk50Q3ppaG03V2w3N3YxZFBsRkh6eDNMSzh0STFsWnord2lmKzlaSUFkVDJsaEJGM0gwUG85RkVXQ0F4K3YwbmZnVXNZV2QyaXdoODl5QU1yNmFxUmR3Yk1aZmNhSVByZk1HaWg4UTZSVVNkR050OXIyYVcrUTg1cUhGSnRpOUFmV00rbitsc2dsdzJ5Y1dKbThIQkJrRkxtUTBXcHNOZ0VBamRTai8rdzhCbDFVVXdoeG5Ma2MvenNpdEtMUnRySENyTldSY1A5VkwzVGQ4SGFVTzZmU2xxaDM2UnVjZnc4VFExQjFNV291cGpoUFI4T1R6K0NVa2R5S1BiRTdVajFVRHBoOWtZYXFYUE1sMS82bXBxMDJiTEs4dEkxbFp6K3dpZis5WklBZFQyT1BmWnFmRXJQd3Q4Zkpsb28zRkhvWnNIajN1TlIweU9qSVNaUUZYZmhkV1lndFVtYjNYTklESG9IR3hXbnE1TTZkUi9oQkJvNVY0aStUTFp2TVVxZUZKY1I0bnkxVERSZDh0TzNkQmQ5MDZSd24vQkNxSEtPTzBHS012eEZBOXY4ZlRtMU1QZnlyZ05sc3dYQXVaanlIOXNxKzUwd2xaaHFvSk1WbEsxVXErdDFCOElLWWVZMmQzL3c1M3RlZTlnUzd0UUlFU0tWTFJSU01leWN1TGdvb01ISkhnaExaZGJ5SnAwWSsra0VxcTFyQUx2RUtjZnVkT3VTMDJhMU82RTMxQTlZeW1RUHlWK29nQTVSYTdZTWlMZ1E2MFQwZW9TaytjaWk0aFBLSnhlLzRiZS9YMzJOOHBJSUJMSG5HcVR0akVsbk1VMmo2UFY4aHJQVDRVR05ibHhaLzZ5STZuZTlpR1JkYWpsS1hwb0x1ZEN2MFBPRTN2Uk02TDJjSE1kQkVXVkhlKy9wNXp5OWpLQWpKaEEySEwxeUxOaExtUjNaRTM1OVlzSHFJQWVQeUNOckRKMzVkelVxOHNyNzVrNXA5c2ZzTjlmNmR6dnhBb0VnTnpnd1Z6S1BGbHhXcXd6VXdheld5ZEdDU1dwRGxIS2dPSUxZSGlMelpkZkg1cHRjbDZQaUNEYlVndHhOclFQS05nWFVCWUFwSzRGL0o5eFpsOUpQdzFNcllJMWs0VXA3R01VYWFjWHR6MmlsRFBGNlR4UEJiclNDeWlNVHZvRlp5cnk2UTVtNDl2Y1ZLZ2tST1AvUEIxMDZ6Z3F6VmtYRC9WUzkwM2ZCMmxEdW4wcDJ5T2RFaC9Dd2N1RlkyTkVVYUR1SUJvZ3liQ29BU3BHU3YvZFAvTmE5OWFhZkIrM3ZBNnhDN3NnOTFnR1JteHRsWE52WWlDTW1ERHpDWmhNZm5mL3FoeDFmOHZJT0Ryakw1aWQ2anhIcm1oQVJjVU94RDRqOS81OFd0Sll2YW10Q3p3czY3VFNrSjhVSHl3R2t0U1RKTXBnWnRpem9BWE41OWhRK1U1Q2hJUTBVVGpJcENDaGNBdldwOS9DSHlvNFJnOS9pcWlOTFNCT1c0MXBZdmdHVTd0SDFpUHVoZXgxOWJYTTVvOEU2V0NqT3lucDdOZ0FDVjMrUkF6NHJhbDFobmFGblAybG9BRDNybkpFSkZQb1ZDMVFPQ0dETy9vMXhYYjY4Z0dpSGlCQ3NzSDdXa1RzeFRmUFRxaXVYRzJOaVdzdW9OY1AvODQ0N1RPRHdCd1FoeGExZjNSRkwwcVZ5bHFHcmJQZXFmZ3dRWDBUTnVCcTlEL05USEl5aGVUdXdBb1ZZRzh2NGxNajdvcnZudW5Vd3dnazZVWCszVVViTGFBWjRLbXRkUjNoVHN4S2lpSzRScmlFcDA3NUVINTJsZGpSSmI0dWJJL1FYK3FkclRMeEZ3SWRZZVAvd2lpa05WT1hQTUNtN3VIdnJjSXB2aHFjVnRWRVgrRzlhTDh2UG56YytoSG54QTcwOGJENkxmSk5nYTNGeUhLaUJSM1VmOW4wRGdIR041WDFoeEdsUWJtOFVUTDlMSUJ2aUQ5NjBWN0pRdm1xQWgvazRwZGdHOXF3NFVnaE9oakV5NURtQ3ArZHY0UldPVU9hbTVxZCtLZWdra0VTT0c4a1FRZXB6cFF5K3c3ODg3RGtKeXZ2MnduT0o4Q0pSbDFFT0RNMFFZemt6TXR2OFhITEs4dEkxbFp6K3dpZis5WklBZFQyQ290cm9SUHI5TEFMMUt0K2Q3RDNNZHR4TmFzTFR1SmRESStxTmJiOFBUdFB1dC90RHFPUFhpMTF5dTR6VjMzblJZNkZqL1pSNW9LOG93N2tXbWJzMCtFOEdPaGhHakY1YTdzYi9RWHcyUU9EcXVzb2daNjlOUFR3Y01JSUVCOU9EQ1dPS0IrMXZyRktURmg4ZldvT0JnTFJKckU3NTFrMFNhRERsVk4zaXNOSkFPc2ZYanpHdm9ZelcyYmFwakdscXlqajZmeUJVKzVJd044RnE0bEJ2Z044WUk4Vk1kOGJid0lqdko1dktXQVNmQUFFQnkrTERWYzZzWHRjc1B2V3QzK3N1czlJMjJ6SzJUajdoUzZwNk1zcnkwaldWblA3Q0ovNzFrZ0IxUGJ4L2FMelNMUW10d080V1JvTjIyS1lWSkEzL1h6U0VnYmduZWd4cXFOT0JpM3Rkbm4ydEpxRk9XZnNXckhXUy96djdxMlUwSEFtU0hjYitudHRsc1ZMak1qUndqYU9nQXRSZWozZEV2U1BWRncvaTBhQ0sweE1RYkxLaFdieHRRQ0JrbGZGYVlWRkxQWlpFMG4zUy94ajFCUFRtRmRhVUd5WlJaMjZRREdoT01zcnkwaldWblA3Q0ovNzFrZ0IxUFl6TE5JVDY3c3doSjFURW5JQUxjVXMrNUpsd0p1N214VFJVNFdYQW5CUDEzZ2U1Z1ZqajFOYUo2OHd1YVBpVmg3QWQ2VVBXV2dSNndMSVBuVFVmdEZqMHA2VlhTSlB1VGVhd1JSUTRjM2NyWGVRbXRDSENwVWdYS1ZvdGNEZHpXQVRUbk9LSlZ5UDJtTE9sYk1oNXZNNyt1NGZMN00xNno4N1NKRUhUVFRtbStLOU5ITnBtU213SmJoYXNad2RneC9BZDZVUFdXZ1I2d0xJUG5UVWZ0RmpPSWloRi9DMzFnc0s0RXZ0dXVzbVVrODljY2tBUDVpdm1weUdSTDY2eEtUM2JCQS81NGxWT2lyVnhyWlFCL3c3VFM3bC9FZS8ybzFLRVVMOHA3RHRvL2M1c25RSmxDU1VmRERET3VleG1YakFPYlFnczM3YkxEeUU3NFlLS2JMUmR3eEplRWtDakRkd0x2TXVKR3JzQ096Mk90akFQSVFUa2pDaE5KeVdDelNFZHpYS0xxSWdSSzJpcEFNRmdLUnZsUmJhc0hQbFJ1c1NnMHBSTlZVQ1FaM1hQZ2wzcVRJbGFNSG9iQlFSblAwMTF2b2g1eTZEQk1LQzE2bFlORDhVZm15Z2NsVFlzWkNlZGVwN1Vsb0Rxd2NqSGE2S0g4VzFXRlo5RFh4UDNXdllGMFJEcllUYjRqb1FtSVZWL2NKbmVkM2NQMlVydnBscjZMbmRUcmtOcUJZQXBLNEYvSjl4Wmw5SlB3MU1yWUkxazRVcDdHTVVhYWNYdHoyaWxEUEY2VHhQQmJyU0N5aU1Udm9GWnlyeTZRNW00OXZjVktna1JPUC9QQjEwNnpncXpWa1hEL1ZTOTAzZkIybER1bjBwMnlPZEVoL0N3Y3VGWTJORVVhRHVJT3J6NXNtWnVMdklYbVdPcEVYV2lHb0lsaXlrcG5IY21sWlpIbEpwVnV2b1V6MEc1a1BaaG0veXAxWnVheUc4YTlxUm9yVlhJdC9oYTk0S2Myd2ZUY3ZMSzh0STFsWnord2lmKzlaSUFkVDJ6dVpoRnFIVkZSSlVjajBPL2VUR0xsM0JZTFZQRFVRYUw5Zkh0MzVTdjZtRklpMkVCVjdsZmtwamxTTFJYUU85Q3p3czY3VFNrSjhVSHl3R2t0U1RKSUhJYXczZ1hrcUFvMGVqd0pYcjIyS3JiWWZKOUc1WDg5UG1DSGl5cHpHSkFvMDNjSTIwd0wyRXdXM2pUZVk3Yi9ZV1lDcGxyTnFNQ0VuOEdvazRuNldmYi9tdmMzdWlTejJTZG03OVVpWGpKamZMMzA1aFUxYitCSGp4MktyU0NLZ0VWby9CR1JZUnQvdXR5a3RyaTZaQmVIQlVMYW5nNnJ5Ky9kUlY1TjNFc0R1YkpSWDZJRFpQemo4dHdRNlNjdmt2bjRjS0MxUVorVHBNVVJyTS9SVGhCTUVFVHBUZnF5TzRaTWF6VnNiSWVSMDRlTEcycVpibEdYclR2NFVFYXhUM0p5aHROR1plU2hiZytQZDc5LzI0M3pYYlZmbVpGWXBUcnIyYTRiZU1adHl5ZzN5YVROOXp1UmlyNExWem9sdFZkdXFJcFJXTWx4V2ZyK3hCeFBCUlJoWkFBTGVNVUFnYjV4VUR6MVN4c3RjWXU2bXJmRWhQaTgramorR2RrS2JpUW0yVnljN2RKWlZQOFVPUTdEdmF4OThUbzNqeFFBRHU5YnlZRGlRdWRIK0xsR2J0clBQazFCRzVzdEoxUzJwL25tUlhaNElPQU5Mb0VEbjJ6U0JGM0RNQzZkczc2amd2MzViNHlGVHh5eXZMU05aV2Mvc0luL3ZXU0FIVTloUXYzcnN3c0JINVluTkJPKzAxL0JuT2xETDdEdnp6c09RbksrL2JDYzRuNFdFeHJpUzdETENaZHVpRU9Ka1hNdmZ5bnBFcjFkTThwa082dzl6WStUc3RmZ0Q0Y1FrcFRJeTVZK0d5cFNuSG9ETGluUjBpZnJTandCUng4L2NZbk02VU12c08vUE93NUNjcjc5c0p6aWR5UzZsYnZjZFl5VThiOEc2SGF6MlNhc3ZnNUZlTlZ1bW1jZWlqb2k4ekRWMXVIemxwSjlidVVBYm1MUDFOd2VOZXVxSzZZVnZwNnZDZUU0R2hmSHlIWUtpOXlNWDk2eDVoK0t4UFdRQk5sdlR2MzRiSkd3c2g3Y1VZWHkzMXdaVE9sREw3RHZ6enNPUW5LKy9iQ2M0bmljZm5Jcm55bU0rUmhjVk5mWnV1dTE1UlZ5R2E2NEtQbTQ1UUtBV2V1MG5oVEJEUVl3RkZzSC85VFpNUk4ybGJIdDRZaC9jVkVoM0hvQ1lGajJBZ01Vb2I4S24xS1ZpRE9zdmU4am1oNjh1cFVobUg2STdIZVhpMVlkVEhVajZKaG5hRm5QMmxvQUQzcm5KRUpGUG9WS0pmUHdoMkdrWEQ3RnFGNTBHUjlHYmp3WDhmYmZqWXdvcmRrWHMzNURvcEE4OCtZdTQrU2J6Z3pKS0V3aUpmcTFvSlM4Q21laHVjT3NMRnJSVFdtbnFBekI4RDA4VFl0NExvbEJLbU9GRHAxWFZYU1ZxbWF4cEhreHpzb0c5N2hzLzlwd1c1VGxLREZ1YXdGKzNTUGd0aDhiQmxReDZqSWFYZVJvU1l2NGo3a2puaGN6cS9CRjIrcHlmRHdTQWpTQmpYTitBNGs0Rjk1SUhYK2VQRXdGenVKdG1UQ0xmOXZUQXhXRThvY1M1ZUJQZU8rc0Q0UXcvQjIvMW83RkJoQnlZc3RvRDNqVGIrc3g4Z1kvYzlJdnZyM0tPalpnT1NEelR1Znk4TTdWWGhQdTJaN1BTTnJMOS9rbUE2eXM1djF0S20ralFhd3YzL1FIWDQySjl5OGhBMnVMa0ZhTnlPNFh4Q1YwdXJUcGlFV2NHTU1yK2xPRUp5ZDcrbk5tS3dqOFpERVYrelBtTEhMbENISUJ0TXU0dkxLOHRJMWxaeit3aWYrOVpJQWRUMmN2STdjT05PVXh2bm4vaGUxSUVQazZZYWNqMnJlM2hLc3JtY0k4K21PNGpMSzh0STFsWnord2lmKzlaSUFkVDJWb1Q1UFg3VG5Wb0wzM0tlcXJSN2JxY3pGL0Y3aGNFLzA0SGwwTjF2SXMyVjhGWlEvdWhjdVNic05qY3hCUWIvSG5IOTYrdlAvbC9iSDAyUXYzdFZoSFF2OWNGdXFKVUVhc3JUeXpDWGEwSXIxamtMRjgvcmh2amNxMmp5NmkxNXI2STE3ZWlmQ2l5K2RZVzZyNnZRWFdPOXBZYk8yc25pWFgyeVR4VnNva0V5VExCZzgxVUQvY0NjU21mazZxdXdjR1F0cXp6OVNicTYyNG9yeVE2dTJaRllubzUvK0ZxYmhIUnF2TnBMZXdJRVFzR2tsamtyU0RDQTVOWlRvYWM5NUU1TnplaHdoOFNDa3lvaEtPaFFhMWZDWnVIZHZXOURlQnFVOFhpczFMdmFFWFRCdzAwR2dkb0tPT0NTcXFWV2R2R2hLckxJanlhMTF5QnAyTE10ek9yczhvMy85a25seFNWYUVSeXBXWmRzcEF6TXNFeWp5emdnSVRQalpUVCt2a0JNeWR3bTB1NjVOTGVTamVLSWZleDI0VE4waHVuMEhsV2lIUUlVKzNZeDZZcHJpMXREaHd6MzgzUXBoRXlLRmh3MGhaZzFyN2xHdjBucFVvcHpRdnVTWmNDYnU1c1UwVk9GbHdKd1Q5ZDdwZ29SblFodWZGREJ5RWQvamswS00rRjUrRTZrOUpWdXQ1QXFxcUlqRHFOVGlsa1RjWmNoM3oxK1luTjNZc0hiUCtBaldIalZjWXFITVBlTTYxdWlxZVFkcVBCUlVEQUtxSHlYekVvUnlMSkNHbm4zNTB1YUlzOGR4UHhYY2dvOFIvNFE2aU1wWVRhVkhJT3BISm5XaEptSXJ4NUgyYmNMYmZUNS9RbU1JTVc1TGdvdXMxNXkvQUpyUjBuVm1lVmNNSml4VXI4eEI4d09hZXNxWWFkRnl5dkxTTlpXYy9zSW4vdldTQUhVOWtPWW9nZ3VsNDR6SVo2MUxyb0ZnWEtHZG9XYy9hV2dBUGV1Y2tRa1UraFVQYlZjMDgwYWtraExYT3I3Y2c4VkVVdlpiejBIWDhoUEZzYWJVRDZyK2EyTUxsMEZOeVoyRUhZa1Y3ekFCL1dOQUVaTHEzYXV2K3A3T2J2WDdzL3BMbFI0WWdLVkNST0JWeGxOOGczWFdLbjM2OU4xamxvc3FSQmRETWZKQkJiRFR6Y2s4ODNEWUoyTk5kVlFZak9xZ3NiS25scThZK1BqMjdkNXdDK2FaS1M1Qy83Q2VTdThmcklnYmdpbmhmN1ErdzIxOGg5QXRLVFhDUWlsZ2V1UkxJNm9mSlRkV3R5SEJDY2FOcjdYOWhncHJSK1prUkVld1FtMGppbU43bkM3eXl2TFNOWldjL3NJbi92V1NBSFU5azh1WkVVUHJCMlYxTG04bE95M2M4M0hJY1JXNEUxNkI3bGNwTEhxWmFlcERoa3dvQy9NYXVRTE5vNWlFVzJldWNlam1mZ2FaTkxHMWxFUVM5b0daQk1EeGhuUWdxL2pvN25KWXhXR2hwREZFNlNzaFNOcGtjKzN1a1huZ2FkZmlIOU44MEFQWElYdnU4cWorNzRjSExmT2xETDdEdnp6c09RbksrL2JDYzRuaEEwMWtzTldQaUxqa0FiOFV0S0pxNGlOT0wrRURFejZyZlluYTZFRFlEN250cy9TT0xOM1M1eFVRd0ZRUi8rTFRUcDdSYnVnWjIrNmJNcUF5WnFZZThzcnkwaldWblA3Q0ovNzFrZ0IxUGI1ck9hUndtMUhmZ3JsY2cxWkVnM1JVbm5PaEYwWVlCeVVZWGRCT0RrN3BQTWw2UzFhbDlTckhmZ3ltVE9kSU1iWEpGYlY3MkJRbGp3VUs5NkdWM2FRb2hNamswL0krUktkaTA4OURnb01id0EzK1ZjLy9lSHFoNzc2WU5lRmh3a05xOUFkREo0bi9MUkQzV3RZSlhBU3QzaXZDNHU5UUJUZmIvdkNtTkppL2Z6YWVzNG9KQUt1U2MwQ28rYXU2Ulp5cHg1RDVqTE5tWE0zRjhZWnBnOHlWZ1FYd0dvdzlGNTNUUHR3RUxoRWJDZFVKT2crM1d2TFhSa1djcFphbGc0SzE1OWFFTS92d1l3Q3EzNGx4a1NGaGxLeVRVZzVSc1hmUkxwYU1obTBlWlNIZHVvREhOZjRaMW9nZ1pHemlrb0dvcDhjL3pyb1dCb04vYVZLbW44czRUeUUrVUJRZXp2MWZMQmVVeUJHYkg4SlhBLzV1MjE4RVpCQlF0dzNvcUV2OHlKMkRjVmRLTnhtenRCOExtbkgnKVxcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6aG16Z2iLeeZu+W9lVxcXCIsXFxcInBhdGhcXFwiOlxcXCJwd2QtbG9naW5cXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxudmFyIGlzbG9naW4gPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0Jywge30pO1xcXFxuaWYgKGlzbG9naW4gPT09IFxcXFxcXFwiMVxcXFxcXFwiKSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcInB1dFZhcignbXlfYWNjb3VudCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g55qE6LSm5Y+35pivJyArIGlucHV0O1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcbiAgICAgICAgdGl0bGU6ICfotKblj7cnLFxcXFxuICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0VmFyKCdteV9hY2NvdW50JyxpbnB1dClcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxcXG4gICAgICAgICAgICBoZWlnaHQ6IDEsXFxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcignbXlfYWNjb3VudCcpXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJwdXRWYXIoJ215X3Bhc3N3b3JkJyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDnmoTlr4bnoIHmmK8nICsgaW5wdXRcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXG4gICAgICAgIHRpdGxlOiAn5a+G56CBJyxcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFxcXFxcInB1dFZhcignbXlfcGFzc3dvcmQnLGlucHV0KVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXFxcbiAgICAgICAgICAgIGhlaWdodDogMSxcXFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0VmFyKCdteV9wYXNzd29yZCcpXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIuKAnOKAnOWkp+S8muWRmO+8nyjlhYjngrnmiJEp4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi5LiN5piv5aSn5Lya5ZGY5Yir54K556Gu6K6k77yM5ZCm5YiZ5ZCO5p6c6Ieq6LSfXFxcXFxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcXFxuICAgICAgICAgICAgcHV0VmFyKFxcXFxcXFwiaXN2aXBcXFxcXFxcIiwgXFxcXFxcXCIxXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG5aSn5Lya5ZGY44CC56Wd5aW96L+QKOKcquKWveKcqilcXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIuKAnOKAnOeZu+W9lSjlho3ngrnmiJEp4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi56Gu6K6k55m75b2V77yfXFxcXFxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcXFxuICAgICAgICAgICAgcHV0VmFyKFxcXFxcXFwibG9naW5pbmdcXFxcXFxcIiwgXFxcXFxcXCIxXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgIH0pO1xcXFxuICAgIGlmIChnZXRWYXIoXFxcXFxcXCJsb2dpbmluZ1xcXFxcXFwiKSA9PT0gXFxcXFxcXCIxXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgaWYgKGdldFZhcignbXlfYWNjb3VudCcpICE9ICcnICYmIGdldFZhcignbXlfcGFzc3dvcmQnKSAhPSAnJykge1xcXFxuICAgICAgICAgICAgLy8gVE9ETyDlkJDkvazor7Tov5nph4zlj6/ku6XmlLnmiJAgJC5yZXF1aXJlIOeUqOazlSAgICAgICAgICBcXFxcbiAgICAgICAgICAgIGV2YWxQcml2YXRlSlMoXFxcXFxcXCJkdGQxUDNkVEVJVG9uc2dyTkZmb0JpZ2k1bGphejBQZUdtYm1NampyOUg1bmZ2c25CdzdKRnAzN2NuM2VncXUweS8wd1RXMm9VN3F0TXdRSUFpTGhFU1ZLQmxLa1J2VzBwblBEZEhsN1BHd3dEVDVHTTF2QnNvZ2I3WURwd213VjhydHRhZDBPNVlKQnZwalgyOWhVQnBTc2lhbzdsM1VlYnp4TkFXWWlqN1l3SFdodDBqVmJoNVNMN1BYVm8xNDlmUFNUdXhsOEErdkxVV2krMld4R3JPWitRdnRyWUluMjhCcVM4UFM3emYwUjB5cjloWHpqYk1PT1gyQ09kVllLUGRiR3N4emtsVjVYMkxMbUtiUGdFZlFFbENnTVpwWXVuZTBJOE95STU1SExLOHRJMWxaeit3aWYrOVpJQWRUMmRUUXZDQmIraUhqcFI2SzBNcjBkZmMvanJUZC8rbm1zbVdya2ppdHVxOHgyaDdVM2JabWF4a3FZcnhTb3ByTGladm5Ca1N2RW9JaXFVVU9LaW1DeTAxZjN0UmZTUUJlUjVsZ1Q1QS94cWdkMjhhRXFzc2lQSnJYWElHbllzeTNNTFpSaFNMdzVrZFNVM1krZHlDYTZaY0lEeGxPR2VTRkxtSTBPQ0ZicFplOWJZN25LVU9haTMrVEhzYUZpRUVxcGQvNm5VUUY0VFpSQmdWcWpZRUZ3V0p5S0FLNkRBcW9SdkIyVDBpZjJ3VXZPbERMN0R2enpzT1FuSysvYkNjNG55WnhkRGZRWE42UnFCK2k2TmdUYkNqTmQ0VEZYNWZXQnZIYTVwSHJUU1pBaFRXOXdGQTV3c0FEQjk1eStKeDJYOVFrNEdMQ0dzdGdHY21IbTk2YXAxdVdxK0s4dkdFWkViRWprVTUydE1TNXp6NmdtN1loWGY4ZUJZQm1FYWlMdU1lVTc1R2UycVM2dU9vajIySVRFVWNzcnkwaldWblA3Q0ovNzFrZ0IxUFlaTnluWExsMXRmb0RZM0haZ1Bha2Y2RCtBRHpRWXF4cVJLWkN0bE5JeWE5azhDNEg3ZmJoTERYZFdBM29WNXlVT2dhU1hLMU9NNDBGeE55TlhwQS9aS1M2Z1kzQjEvVjIrenB6K1E3Q211ZTUrcWFPMFhyRFAxNWhqUzRieG5Xck9sREw3RHZ6enNPUW5LKy9iQ2M0blh4ZWt1b1RWVVJZN2VoK2RJRjRRT2FYbWJOallOa2lxbkFkODVGclhLWG9lZ0paQzg1QjRKVnFPV2N1ZWlwTmFIeS9kd0FoS3BuSy81Sk83WjZ5YTJsczIvSnZQT0NQOTFlNmc0SE8rWXFFcExxQmpjSFg5WGI3T25QNURzS2E1bnByYmtJUDJrbkRYWHF0TVlHUmRjaWdlSVJ6K09IbW5LTG0vK1dDUGEwNjE4RXF2TXNHZzlmcHZ0VW8yL3RtMFJ6WVlpOGt1RkdvcFR5b2lrRHdpM2NzcnkwaldWblA3Q0ovNzFrZ0IxUGExQURrdml2a25jRWhQV1A0d1hDYVR3d3BaMEc2K1lUdnlwNjh0aEZkQUw1eHg5K25VYTVqV21KVXl5UStyMVVzRDVzTXFpblk1Yi9lRFVueFJLS0JUenBReSt3Nzg4N0RrSnl2djJ3bk9KeWRIUE0yYWg3OGVBdHRTYWhWQ0ViL2wzWnFpMmhGa2laSjhneFBDMFBZNy9xdDJOMG44bEhEOCs3MktUVURJcXVYNTY1Q0lRbmNEVzVLZlhVWkxPblpiczZSVHFSMDBMdVBIQXhQSUhoaWFiamtOdlNWUU96djNhd2VyYW1lU084c3J5MGpXVm5QN0NKLzcxa2dCMVBiWmZBQSs3ZytZZFROcGV1OUxSUm9vaUZ3Vi85Y3U1SHBFZ1oyWDZ3YVdkb29ZMWc1cENYS3BNdS9kN2MzaGRRZkxLOHRJMWxaeit3aWYrOVpJQWRUMlk5NnNrQnRObHZOQXg2SUdwektOOGVOME9KQ20ySXFzSkpuSFhKZDFmcnlDTW1FQ0ZFZWFWYnB1S0czVjA5d0FDN1NZaTdqL2JDQitEQzExQlNhWnY4QjNwUTlaYUJIckFzZytkTlIrMFdNdFpqSzRRbGZ6c010Z0dxZG5sL0QrXFxcXFxcXCIpXFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG59IGVsc2UgaWYgKGlzbG9naW4gPT09IFxcXFxcXFwiMlxcXFxcXFwiKSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc5bey55m75b2V77yB4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi56Gu6K6k6YeN5paw55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFxcXFxcIikuY29uZmlybSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoXFxcXFxcXCJpc2xvZ2luXFxcXFxcXCIsIFxcXFxcXFwiMVxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcXFxcXCIxXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgIH0pO1xcXFxufSBlbHNlIGlmIChpc2xvZ2luID09PSBcXFxcXFxcIjNcXFxcXFxcIikge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIuKAnOKAnOS9oOmcgOimgeWOu+WuouaIt+err+aUueS4i+WvhueggeaJjeiDveeZu+W9le+8ge+8ge+8geKAneKAnVxcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogJChcXFxcXFxcIuehruiupOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcXFxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcXFxuICAgICAgICAgICAgcHV0VmFyKFxcXFxcXFwiaXNsb2dpblxcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXFxcXFwiMVxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcXFxcXCJcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9KTtcXFxcbn0gZWxzZSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc54K55Ye76L+b5YWl55m75b2V6aG16Z2i4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi56Gu6K6k55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFxcXFxcIikuY29uZmlybSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoXFxcXFxcXCJpc2xvZ2luXFxcXFxcXCIsIFxcXFxcXFwiMVxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcXFxcXCIxXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgIH0pO1xcXFxufVxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0UmVzdWx0KHJlcyk7XFxcIn1dXCJ9IiwicGljVXJsIjoiaHR0cDovL2kwLmhkc2xiLmNvbS9iZnMvYmFuZ3VtaS9pbWFnZS81ZjBmYjhkODUxYzVhMWZiMWU3YzgzNTUwZDVlNGMyYTU0Yzg1MzUwLmpwZyIsInRpdGxlIjoiRmF0ZS9aZXJvIOesrOS6jOWtoyJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement