Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ζ΅·ιθ§ηθ§εεδΊ«οΌε½εεδΊ«ηζ―οΌε°η¨εΊοΏ₯home_rule_v2οΏ₯base64://@πππππ₯ππ―@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi8J2QjfCdkJ7wnZCt8J2Qn/CdkKXwnZCa8J2QryIsImF1dGhvciI6IlIiLCJ1cmwiOiJoaWtlcjovL2VtcHR5IyNodHRwczovL3d3dy5uZXRmbGF2NS5jb20vZnlBbGw/cGFnZT1meXBhZ2UiLCJ2ZXJzaW9uIjoyMDI0MDgxMSwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiDmnIDlj5fmrKLov44m5LiK5pyIJjLmnIjliY0mM+aciOWJjSY05pyI5YmNJjXmnIjliY0iLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiJ0cmVuZGluZyZ0cmVuZGluZy8yJnRyZW5kaW5nLzMmdHJlbmRpbmcvNCZ0cmVuZGluZy81JnRyZW5kaW5nLzYiLCJhcmVhX25hbWUiOiIgIOacieeivCAgJiAg54Sh56K8ICAmICDkuK3lrZcgICYg5YiG57G7ICYg5aWz5YSqICIsImFyZWFfdXJsIjoiY2Vuc29yZWQmdW5jZW5zb3JlZCZjaGluZXNlLXN1YiZnZW5yZSZhY3RyZXNzIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuJC5yZXF1aXJlKFwieWlcIikiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjaHR0cHM6Ly93d3cubmV0ZmxhdjUuY29tL3NlYXJjaD9rZXl3b3JkPSoqJnBhZ2U9ZnlwYWdlJnR5cGU9dGl0bGUiLCJncm91cCI6IuKRoeeUnyIsInNlYXJjaEZpbmQiOiJqczpcbnZhciBkID0gW11cbk1ZX1VSTCA9IE1ZX1VSTC5yZXBsYWNlKFwiaGlrZXI6Ly9lbXB0eSMjXCIsXCJcIilcbmxvZyhNWV9VUkwpXG52YXIgaHRtbCA9IGZldGNoKE1ZX1VSTClcblxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShwZGZoKGh0bWwsXCJib2R5JiYjX19ORVhUX0RBVEFfXyYmSHRtbFwiKSkucHJvcHMuaW5pdGlhbFN0YXRlLnNlYXJjaC5kb2NzXG4gICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4geyAgXG52YXIgdXJsbCA9IFwiaGlrZXI6Ly9lbXB0eSMjXCIgKyBNWV9IT01FICsgJy92aWRlbz9pZD0nICsgaXRlbS52aWRlb0lkO1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICBkZXNjOiBpdGVtLnNvdXJjZURhdGUuc2xpY2UoMCwxMCksXG4gICAgICAgIGltZzogaXRlbS5wcmV2aWV3LFxuICAgICAgICAvL3VybDogdXJsbCArICdAcnVsZT1qczokLnJlcXVpcmUoXCJoaWtlcjovL3BhZ2UvZXJcIiknLFxuICAgICAgICB1cmw6IFwiaGlrZXI6Ly9wYWdlL2VyP3VybD1cIiArIHVybGwsXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsXG4gICAgfSlcbn0pXG5cbnNldFJlc3VsdChkKSIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuIDnuqdcIixcInBhdGhcIjpcInlpXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdXFxuTVlfVVJMID0gTVlfVVJMLnJlcGxhY2UoXFxcImhpa2VyOi8vZW1wdHkjI1xcXCIsXFxcIlxcXCIpLnJlcGxhY2UoXFxcInRyZW5kaW5nXFxcXC8xXFxcXD9cXFwiLFxcXCJ0cmVuZGluZz9yYW5nZT1tb250aCZ2YWx1ZT0xJlxcXCIpLnJlcGxhY2UoXFxcInRyZW5kaW5nXFxcXC8yXFxcXD9cXFwiLFxcXCJ0cmVuZGluZz9yYW5nZT1tb250aCZ2YWx1ZT0yJlxcXCIpLnJlcGxhY2UoXFxcInRyZW5kaW5nXFxcXC8zXFxcXD9cXFwiLFxcXCJ0cmVuZGluZz9yYW5nZT1tb250aCZ2YWx1ZT0zJlxcXCIpLnJlcGxhY2UoXFxcInRyZW5kaW5nXFxcXC80XFxcXD9cXFwiLFxcXCJ0cmVuZGluZz9yYW5nZT1tb250aCZ2YWx1ZT00JlxcXCIpLnJlcGxhY2UoXFxcInRyZW5kaW5nXFxcXC81XFxcXD9cXFwiLFxcXCJ0cmVuZGluZz9yYW5nZT1tb250aCZ2YWx1ZT01JlxcXCIpLnJlcGxhY2UoXFxcInRyZW5kaW5nXFxcXC82XFxcXD9cXFwiLFxcXCJ0cmVuZGluZz9yYW5nZT1tb250aCZ2YWx1ZT02JlxcXCIpLnJlcGxhY2UoL1xcXFwvZ2VucmVcXFxcP3BhZ2U9XFxcXGQrLyxcXFwiL2dlbnJlXFxcIilcXG5sb2coTVlfVVJMKVxcblxcbnZhciBodG1sID0gZmV0Y2goTVlfVVJMKVxcbmlmKCEvXFxcXC9hbGwvLnRlc3QoTVlfVVJMKSl7XFxuaWYoTVlfUEFHRT09MSl7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIvCflI1cXFwiLFxcbiAgICAgICAgdXJsOiAkLnRvU3RyaW5nKChyKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2tleXdvcmQnLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3NlYXJjaD9ydWxlPScgKyByICsgJyZzPScgKyBpbnB1dDtcXG4gICAgICAgIH0sIE1ZX1JVTEUudGl0bGUpLFxcbiAgICAgICAgZGVzYzogJ+aQnOS9oOaDs+imgeeahCcsLy/mkJzntKLlhbPplK7or41cXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKCdrZXl3b3JkJywgJycpIHx8IFxcXCJcXFwiLFxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59XFxufVxcbmlmKC9cXFxcL3RyZW5kaW5nLy50ZXN0KE1ZX1VSTCkpe1xcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocGRmaChodG1sLFxcXCJib2R5JiYjX19ORVhUX0RBVEFfXyYmSHRtbFxcXCIpKS5wcm9wcy5pbml0aWFsU3RhdGUudHJlbmRpbmcuZG9jc1xcbiAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7ICBcXG52YXIgdXJsbCA9IFxcXCJoaWtlcjovL2VtcHR5IyNcXFwiICsgTVlfSE9NRSArICcvdmlkZW8/aWQ9JyArIGl0ZW0udmlkZW9JZDtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgZGVzYzogaXRlbS5jcmVhdGVkQXQuc2xpY2UoMCwxMCksXFxuICAgICAgICBpbWc6IGl0ZW0udmlkZW8ucHJldmlldyxcXG4gICAgICAgIHVybDogdXJsbCArICdAcnVsZT1qczokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9lclxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsXFxuICAgIH0pXFxufSlcXG59ZWxzZSBpZigvXFxcXC9jZW5zb3JlZC8udGVzdChNWV9VUkwpKXtcXG4gICAgICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHBkZmgoaHRtbCxcXFwiYm9keSYmI19fTkVYVF9EQVRBX18mJkh0bWxcXFwiKSkucHJvcHMuaW5pdGlhbFN0YXRlLmNlbnNvcmVkLmRvY3NcXG4gICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4geyAgXFxudmFyIHVybGwgPSBcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiArIE1ZX0hPTUUgKyAnL3ZpZGVvP2lkPScgKyBpdGVtLnZpZGVvSWQ7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgIGRlc2M6IGl0ZW0uc291cmNlRGF0ZS5zbGljZSgwLDEwKSxcXG4gICAgICAgIGltZzogaXRlbS5wcmV2aWV3LFxcbiAgICAgICAgdXJsOiB1cmxsICsgJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2VyXFxcIiknLFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJyxcXG4gICAgfSlcXG59KVxcbn1lbHNlIGlmKC9cXFxcL3VuY2Vuc29yZWQvLnRlc3QoTVlfVVJMKSl7XFxuICAgICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShwZGZoKGh0bWwsXFxcImJvZHkmJiNfX05FWFRfREFUQV9fJiZIdG1sXFxcIikpLnByb3BzLmluaXRpYWxTdGF0ZS51bmNlbnNvcmVkLmRvY3NcXG4gICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4geyAgXFxudmFyIHVybGwgPSBcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiArIE1ZX0hPTUUgKyAnL3ZpZGVvP2lkPScgKyBpdGVtLnZpZGVvSWQ7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgIGRlc2M6IGl0ZW0uc291cmNlRGF0ZS5zbGljZSgwLDEwKSxcXG4gICAgICAgIGltZzogaXRlbS5wcmV2aWV3LFxcbiAgICAgICAgdXJsOiB1cmxsICsgJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2VyXFxcIiknLFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJyxcXG4gICAgfSlcXG59KVxcbn1lbHNlIGlmKC9cXFxcL2NoaW5lc2Utc3ViLy50ZXN0KE1ZX1VSTCkpe1xcbiAgICAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocGRmaChodG1sLFxcXCJib2R5JiYjX19ORVhUX0RBVEFfXyYmSHRtbFxcXCIpKS5wcm9wcy5pbml0aWFsU3RhdGUuY2hpbmVzZS5kb2NzXFxuICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHsgIFxcbnZhciB1cmxsID0gXFxcImhpa2VyOi8vZW1wdHkjI1xcXCIgKyBNWV9IT01FICsgJy92aWRlbz9pZD0nICsgaXRlbS52aWRlb0lkO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICBkZXNjOiBpdGVtLnNvdXJjZURhdGUuc2xpY2UoMCwxMCksXFxuICAgICAgICBpbWc6IGl0ZW0ucHJldmlldyxcXG4gICAgICAgIHVybDogdXJsbCArICdAcnVsZT1qczokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9lclxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsXFxuICAgIH0pXFxufSlcXG59ZWxzZSBpZigvXFxcXC9nZW5yZS8udGVzdChNWV9VUkwpKXtcXG5pZihNWV9QQUdFPT0xKXtcXG4gICAgdmFyIHRhYnMgPSBwZGZhKGh0bWwsICcjbWFpbl9zZWdtZW50JiYuY29udGFpbmVyX2hlYWRlcl90aXRsZV9sYXJnZScpO1xcbiAgICB2YXIgY29udHMgPSBwZGZhKGh0bWwsICcjbWFpbl9zZWdtZW50JiYuZ2VucmVfaXRlbV9jb250YWluZXInKTtcXG5cXG5mb3IgKHZhciBpID0gMDsgaSA8IGNvbnRzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgdmFyIGxpc3QgPSBwZGZhKGNvbnRzW2ldLCAnYm9keSYmYScpOyBcXG4gICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJzxzcGFuIHN0eWxlPVxcXCJjb2xvcjogI0ZGMDBGRjtcXFwiPicgKyBwZGZoKHRhYnNbaV0sICdUZXh0JykgKyAnPC9zcGFuPicsXFxuICAgICAgICB1cmw6J3RvYXN0Oi8v54K55LqG5Lmf5rKh55SoJyxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICB9KTtcXG4vKlxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIlxcbiAgICB9KTtcXG4qL1xcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgaisrKSB7ICAgICAgIFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPG1pZGRsZT48Zm9udCBjb2xvcj0jRkZBNTAwPicrcGRmaChsaXN0W2pdLCAnYSYmVGV4dCcpKyc8L2ZvbnQ+PC9taWRkbGU+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMjJytwZChsaXN0W2pdLCAnYSYmaHJlZicpICsgJyZwYWdlPWZ5cGFnZUBydWxlPWpzOiQucmVxdWlyZShcXFwieWlcXFwiKScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJyxcXG4gICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG59XFxufWVsc2UgaWYoL1xcXFwvYWxsLy50ZXN0KE1ZX1VSTCkpe1xcbiAgICAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocGRmaChodG1sLFxcXCJib2R5JiYjX19ORVhUX0RBVEFfXyYmSHRtbFxcXCIpKS5wcm9wcy5pbml0aWFsU3RhdGUuYWxsLmRvY3NcXG4gICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4geyAgXFxudmFyIHVybGwgPSBcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiArIE1ZX0hPTUUgKyAnL3ZpZGVvP2lkPScgKyBpdGVtLnZpZGVvSWQ7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgIGRlc2M6IGl0ZW0uc291cmNlRGF0ZS5zbGljZSgwLDEwKSxcXG4gICAgICAgIGltZzogaXRlbS5wcmV2aWV3LFxcbiAgICAgICAgdXJsOiB1cmxsICsgJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2VyXFxcIiknLFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJyxcXG4gICAgICAgICAgICAgICAgICAgZXh0cmE6e1xcbiAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICB9ICAgIFxcbiAgICB9KVxcbn0pXFxufWVsc2UgaWYoL1xcXFwvYWN0cmVzcy8udGVzdChNWV9VUkwpKXtcXG4gICAgICAgdmFyIGxpc3QgPSBwZGZhKGh0bWwsXFxcIiNtYWluX3NlZ21lbnQmJmFbaHJlZl1cXFwiKVxcbiAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7ICBcXG52YXIgdXJsbCA9IFxcXCJoaWtlcjovL2VtcHR5IyNcXFwiICsgcGQoaXRlbSxcXFwiYSYmaHJlZlxcXCIpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHBkZmgoaXRlbSxcXFwiLmFjdHJlc3NfZ3JpZF90aXRsZV9ibG9jayYmVGV4dFxcXCIpLFxcbiAgICAgICAgLy9kZXNjOiBwZGZoKGl0ZW0sXFxcIi5hY3RyZXNzX2dyaWRfdGl0bGVfYmxvY2ssMSYmVGV4dFxcXCIpLFxcbiAgICAgICAgaW1nOiBwZChpdGVtLFxcXCJpbWcmJnNyY1xcXCIpLFxcbiAgICAgICAgdXJsOiB1cmxsICsgJyZwYWdlPWZ5cGFnZUBydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3lpXFxcIiknLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzRfY2FyZCcsXFxuICAgICAgICAgICAgICAgICAgIGV4dHJhOntcXG4gICAgICAgICBwYWdlVGl0bGU6IHBkZmgoaXRlbSxcXFwiLmFjdHJlc3NfZ3JpZF90aXRsZV9ibG9jayYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgIH0gICAgXFxuICAgIH0pXFxufSlcXG59XFxuXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqdcIixcInBhdGhcIjpcImVyXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdXFxuTVlfVVJMID0gTVlfVVJMLnJlcGxhY2UoXFxcImhpa2VyOi8vZW1wdHkjI1xcXCIsXFxcIlxcXCIpXFxubG9nKE1ZX1VSTClcXG52YXIgaHRtbCA9IGZldGNoKE1ZX1VSTClcXG52YXIganNvbiA9IEpTT04ucGFyc2UocGRmaChodG1sLCAnYm9keSYmI19fTkVYVF9EQVRBX18mJkh0bWwnKSk7XFxuXFxudmFyIHRpdGxlID0gcGRmaChodG1sLCdib2R5JiYjdmlkZW8tZGV0YWlscyYmLnZpZGVvZGV0YWlsXzJfdGl0bGUmJlRleHQnKTtcXG52YXIgZGVzYyA9IHBkZmgoaHRtbCwgJ2JvZHkmJiN2aWRlby1kZXRhaWxzJiYudmlkZW9kZXRhaWxfMl92aWV3cyYmVGV4dCcpO1xcbiAgIGlmKHRpdGxlICE9PW51bGwpe1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08bWlkZGxlPjxmb250IGNvbG9yPSNGRkE1MDA+Jyt0aXRsZSsnPC9mb250PjwvbWlkZGxlPicsXFxuICAgICAgICBkZXNjOiBkZXNjICsgXFxcIlxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdOeCueWHu+WbvueJh+mihOiniFxcXCIsXFxuICAgICAgICB1cmw6IE1ZX1VSTCxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgIGV4dHJhOiB7bGluZVZpc2libGU6IGZhbHNlfVxcbiAgICB9KVxcbn1cXG5cXG52YXIgaW1nID0ganNvbi5wcm9wcy5pbml0aWFsU3RhdGUudmlkZW8uZGF0YS5wcmV2aWV3ID8ganNvbi5wcm9wcy5pbml0aWFsU3RhdGUudmlkZW8uZGF0YS5wcmV2aWV3IDoganNvbi5wcm9wcy5pbml0aWFsU3RhdGUudmlkZW8uZGF0YS5wcmV2aWV3X2hwXFxuICAgIGlmKGltZyAhPT1udWxsKXtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgICAgICB1cmw6IE1ZX1VSTCArICQoJycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gcmVxdWVzdChpbnB1dCkubWF0Y2goL2h0dHBzP1teXFxcXFxcXCJdK1xcXFwuKG0zdTh8bXA0KS8pWzBdXFxuICAgICAgICAgICAgICAgIHJldHVybiB1cmwgICAgICAgICBcXG4gICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5LmI5pyJ6aKE6KeI6KeG6aKRXFxcIlxcbiAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCcsXFxuICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgfVxcbi8qXFxudHJ5e1xcbnZhciBjb250ZW50ID0ganNvbi5wcm9wcy5pbml0aWFsU3RhdGUudmlkZW8uZGF0YS5kZXNjcmlwdGlvbjtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwiPG1pZGRsZT48Zm9udCBjb2xvcj0jMDA4QjhCPlxcXCIrY29udGVudC5yZXBsYWNlKC88fD4vZywnJykrXFxcIjwvZm9udD48L21pZGRsZT5cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcbiAgICAgICAgZXh0cmE6IHtsaW5lVmlzaWJsZTogZmFsc2V9XFxuICAgIH0pXFxufWNhdGNoe31cXG4qL1xcblxcbmZvciAodmFyIGIgPSAwOyBiIDwgMjsgYisrKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaydcXG4gICAgfSlcXG59XFxuXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvbGF6eScsIHt9KSkucnVsZSk7XFxudmFyIHBsYXkgPSBqc29uLnByb3BzLmluaXRpYWxTdGF0ZS52aWRlby5kYXRhLnNyY3M7XFxuLy9sb2coanNvbi5wcm9wcy5pbml0aWFsU3RhdGUudmlkZW8uZGF0YSlcXG5sb2coXFxcIuaSreaUvuWcsOWdgDpcXFxcblxcXCIrcGxheS5qb2luKFxcXCJcXFxcblxcXCIpKVxcbiAgICAgICAgdmFyIGNvbDtcXG4gICAgICAgIGlmIChwbGF5Lmxlbmd0aCA9PSAxKSB7XFxuICAgICAgICAgICAgY29sID0gXFxcInRleHRfMlxcXCJcXG4gICAgICAgIH0gZWxzZSBpZiAocGxheS5sZW5ndGggPCA2KSB7XFxuICAgICAgICAgICAgY29sID0gXFxcInRleHRfXFxcIiArIHBsYXkubGVuZ3RoXFxuICAgICAgICB9IGVsc2UgaWYgKHBsYXkubGVuZ3RoIDwgMTEpIHtcXG4gICAgICAgICAgICBjb2wgPSBcXFwidGV4dF9cXFwiICsgTWF0aC5jZWlsKHBsYXkubGVuZ3RoIC8gMilcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgY29sID0gXFxcInRleHRfNVxcXCJcXG4gICAgICAgIH1cXG5mb3IgKGxldCBpIGluIHBsYXkpIHtcXG4gICAgdmFyIGogPSBOdW1iZXIoaSlcXG4gICAgIGogKytcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5pKt5pS+XFxcXHRcXFwiICsgaiArIFxcXCJcXFxcdFxcXCIsXFxuICAgICAgICB1cmw6IHBsYXlbaV0gKyBsYXp5LFxcbiAgICAgICAgY29sX3R5cGU6IGNvbCxcXG4gICAgfSk7XFxufVxcblxcbmZvciAodmFyIGIgPSAwOyBiIDwgMjsgYisrKSB7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snXFxufSlcXG59XFxuXFxubGV0IGFyciA9IHBkZmEoaHRtbCxcXFwiYm9keSYmI3ZpZGVvLWRldGFpbHMmJi52aWRlb2RldGFpbF8yX3NlcGFyYXRvcn5kaXY+ZGl2LDA6MlxcXCIpO1xcbmFyci5mb3JFYWNoKChpdCxpbmRleCk9PntcXG4gICAgbGV0IHQgPSBwZGZoKGl0LCBcXFwiVGV4dFxcXCIpO1xcbiAgICBpZiAodCB8fCAhdCA9PSBcXFwiXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08bWlkZGxlPjxmb250IGNvbG9yPSMwMDk5RkY+Jyt0Kyc8L2ZvbnQ+PC9taWRkbGU+JyxcXG4gICAgICAgIC8vdXJsOiBcXFwidG9hc3Q6Ly/ngrnkuobkuZ/msqHnlKhcXFwiLFxcbiAgICAgICAgdXJsOiBpbmRleCA9PSAwID8gXFxcImNvcHk6Ly9cXFwiICsgdC5yZXBsYWNlKFxcXCLnlaromZ8gOiBcXFwiLFxcXCJcXFwiKSA6IE1ZX1VSTCArICQoJycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgIHZhciBpbnAgPSBmZXRjaChpbnB1dCx7fSk7IFxcbiAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJwaWNzOi8vXFxcIitwZGZhKGlucCwgJ2JvZHkmJiN2aWRlby1kZXRhaWxzJiYudmlkZW9kZXRhaWxfMl9wcmV2aWV3X2Jsb2NrJykubWFwKGltZyA9PnBkKGltZywgJ2ltZyYmc3JjJykrXFxcIkBSZWZlcmVyPVxcXCIsKS5qb2luKFxcXCImJlxcXCIpICBcXG4gICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIlxcbiAgICB9KTtcXG59XFxufSlcXG5cXG5mb3IgKHZhciBiID0gMDsgYiA8IDI7IGIrKykge1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJ1xcbn0pXFxufVxcblxcbnZhciB0YWJzID0gcGRmYShodG1sLCAnYm9keSYmI3ZpZGVvLWRldGFpbHMmJi52aWRlb2RldGFpbF8yX3NlcGFyYXRvcn5kaXYmJi52aWRlb2RldGFpbF8yX2ZpZWxkX25hbWUsMjo0Jyk7XFxudmFyIGNvbnRzID0gcGRmYShodG1sLCAnYm9keSYmI3ZpZGVvLWRldGFpbHMmJi52aWRlb2RldGFpbF8yX3NlcGFyYXRvcn5kaXY+ZGl2LDI6NCcpO1xcbmZvciAodmFyIGkgPSAwOyBpIDwgY29udHMubGVuZ3RoOyBpKyspIHtcXG4gICAgICB2YXIgbGlzdCA9IHBkZmEoY29udHNbaV0sICdib2R5JiZhJyk7IFxcbmlmKGxpc3QubGVuZ3RoPjApe1xcbiAgICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdJyArIHBkZmgodGFic1tpXSwgJ1RleHQnKS5mb250Y29sb3IoXFxcImN5YW5cXFwiKSxcXG4gICAgICAgIHVybDondG9hc3Q6Ly/ngrnkuobkuZ/msqHnlKgnLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICB9KTtcXG4gIH1cXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykgeyAgICAgICBcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxtaWRkbGU+PGZvbnQgY29sb3I9I0ZGMDBGRj4nK3BkZmgobGlzdFtqXSwgJ2EmJlRleHQnKSsnPC9mb250PjwvbWlkZGxlPicsXFxuICAgICAgICAgICAgICAgIHVybDogcGQobGlzdFtqXSwgJ2EmJmhyZWYnKSsnJnBhZ2U9ZnlwYWdlQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJ5aVxcXCIpJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJywgICAgICAgIFxcbiAgICAgICAgICAgICAgICAgICBleHRyYTp7XFxuICAgICAgICAgcGFnZVRpdGxlOiBwZGZoKGxpc3Rbal0sICdhJiZUZXh0JyksXFxuICAgICAgICAgICAgICAgICAgfSAgICBcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG5kLnB1c2goe2NvbF90eXBlOiAnYmxhbmtfYmxvY2snfSlcXG4gICAgfVxcblxcbi8v56OB5Yqb5YaF5a65XFxudmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsICdib2R5JiYubWFnbmV0XzJfaXRlbScpO1xcbmlmKGxpc3QubGVuZ3RoPjApe1xcbmQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogIzFhYWQxOVxcXCI+8J+nsuejgeWKm+WcsOWdgDog5YWx5pyJJyArIGxpc3QubGVuZ3RoICsgJ+adoee6v+i3r/CfkYc8L3NwYW4+PC9iPicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICBleHRyYTp7bGluZVZpc2libGU6ZmFsc2V9XFxuICAgIH0pXFxubGlzdC5mb3JFYWNoKHZpZGVvID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwodmlkZW8sICcubWFnbmV0XzJfaXRlbV90aXRsZSYmVGV4dCcpXFxuICAgICAgICAucmVwbGFjZSgvXFxcXF8vLCAnJylcXG4gICAgICAgIC5yZXBsYWNlKCcubXA0JywgJycpXFxuICAgICAgICAucmVwbGFjZSgnTVA0JywgJycpIFxcbiAgICAgICAgLnJlcGxhY2UoJy5hdmknLCAnJykgXFxuICAgICAgICAucmVwbGFjZSgnQVZJJywgJycpIFxcbiAgICAgICAgLnJlcGxhY2UoJ0pBVicsICcnKSBcXG4gICAgICAgIC5yZXBsYWNlKC9cXFxcZCvlgIvmlofku7YvLCAnJylcXG4gICAgICAgIC5yZXBsYWNlKC8sIFxcXFxkK+WAi+aWh+S7ti8sICcnKVxcbiAgICAgICAgLnJlcGxhY2UoJ0pBVicsICcnKSBcXG4gICAgICAgIC5yZXBsYWNlKCdIRCcsICcnKSBcXG4gICAgICAgIC5yZXBsYWNlKCcxMDgwcCcsICcnKSBcXG4gICAgICAgIC5yZXBsYWNlKCdGSEQtMTA4MFAnLCAnJykgXFxuICAgICAgICAucmVwbGFjZSgnLnRvcnJlbnQnLCAnJykgXFxuICAgICAgICAucmVwbGFjZSgvLipcXFxcLkNPTS8sICcnKVxcbiAgICAgICAgLnJlcGxhY2UoL1tcXFxcdTRlMDAtXFxcXHU5ZmE1XSsvZywgXFxcIlxcXCIpXFxuICAgICAgICAucmVwbGFjZSgvW1xcXFx1MzA0MC1cXFxcdTMwOUZcXFxcdTMwQTAtXFxcXHUzMEZGXFxcXHUzMUYwLVxcXFx1MzFGRl0rL2csIFxcXCJcXFwiKVxcbiAgICAgICAgLnJlcGxhY2UoL+OAkC4q44CRL2csICcnKVxcbiAgICAgICAgLnJlcGxhY2UoLy4qQC9nLCAnJylcXG4gICAgICAgIC5yZXBsYWNlKC8sL2csICcnKVxcbiAgICAgICAgLnJlcGxhY2UoL1xcXFwoL2csICcnKSBcXG4gICAgICAgIC5yZXBsYWNlKC9cXFxcKS9nLCAnJykgXFxuICAgICAgICAucmVwbGFjZSgvXFxcXF0vZywgJycpIFxcbiAgICAgICAgLnJlcGxhY2UoL1xcXFxbL2csICcnKSxcXG4gICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbCh2aWRlbywgJy5tYWduZXRfMl9pdGVtX3RpdGxlLDEmJlRleHQnKSArICdcXFxcdFxcXFx0XFxcXHTwn5eTXFxcXHQnICtwYXJzZURvbUZvckh0bWwodmlkZW8sICcubWFnbmV0XzJfaXRlbV90aXRsZSwyJiZUZXh0JyksXFxuICAgICAgICBwaWNfdXJsOiAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpYVhOdkxUZzROVGt0TVNJL1BnbzhJUzB0SUVkbGJtVnlZWFJ2Y2pvZ1FXUnZZbVVnU1d4c2RYTjBjbUYwYjNJZ01qRXVNQzR3TENCVFZrY2dSWGh3YjNKMElGQnNkV2N0U1c0Z0xpQlRWa2NnVm1WeWMybHZiam9nTmk0d01DQkNkV2xzWkNBd0tTQWdMUzArQ2p4emRtY2dlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklpQjRiV3h1Y3pwNGJHbHVhejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOTRiR2x1YXlJZ2RtVnljMmx2YmowaU1TNHhJaUJwWkQwaVEyRndZVjh4SWlCNFBTSXdjSGdpSUhrOUlqQndlQ0lnZG1sbGQwSnZlRDBpTUNBd0lEVXhNaUExTVRJaUlITjBlV3hsUFNKbGJtRmliR1V0WW1GamEyZHliM1Z1WkRwdVpYY2dNQ0F3SURVeE1pQTFNVEk3SWlCNGJXdzZjM0JoWTJVOUluQnlaWE5sY25abElpQjNhV1IwYUQwaU5URXlJaUJvWldsbmFIUTlJalV4TWlJK0NqeG5QZ29KUEhCaGRHZ2dabWxzYkQwaUkyWm1ZMk13TUNJZ1pEMGlUVE14Tmk0Mk9USXNNVGsxTGpNd01tTTBMakkxTnl3MExqSTFOeXd4TUM0M09ETXNOUzQyTWpVc01UWXVOVEV4TERNdU1UZHNNVFE0TGpRNU15MDJNeTQyTkdNMExqVTJPQzB4TGprMU55dzNMamczTWkwMkxqQTNMRGd1T0RFMUxURXdMamswT0NBZ0lHTXdMamt6TWkwMExqZzRPUzB3TGpZd01TMDVMamt5TWkwMExqRXlNaTB4TXk0ME5EUnNMVE14TGpneUxUTXhMamd5YkRVekxqQXpNeTAxTXk0d016TmpOUzR3T0RVdE5TNHdPRGNzTlM0NE5USXRNVE11TURZekxERXVPREl5TFRFNUxqQXhOeUFnSUdNdE5DNHdNVGN0TlM0NE1qTXRNVEV1TnpFekxUZ3VNakUwTFRFNExqTTBOQzAxTGpNM05rd3pOREl1TlRnNUxEWTBMamd6TW1NdE5DNDFOamdzTVM0NU5Ua3ROeTQ0TnpRc05pNHdOeTA0TGpneE5Td3hNQzQ1TlNBZ0lHTXRNQzQ1TXpRc05DNDRPRGtzTUM0Mk1ERXNPUzQ1TWpJc05DNHhNaklzTVRNdU5EUTBiRE14TGpneUxETXhMamd5YkMwMU15NHdNek1zTlRNdU1ETXpRek14TUM0NE9EZ3NNVGM1TGpnM05Dd3pNVEF1TnpRMUxERTRPUzR6TlRVc016RTJMalk1TWl3eE9UVXVNekF5ZWlJdlBnb0pQSEJoZEdnZ1ptbHNiRDBpSTJabVppSWdJR1E5SWsweU1EVXVOVEV6TERNd0xqY3hOV3d0TlRNdU1ETXpMRFV6TGpBek0ydzROQzQ0TlRNc09EUXVPRFV6YkRVekxqQXpNeTAxTXk0d016TmpOUzQ0TmpFdE5TNDROak1zTlM0NE5qRXRNVFV1TXpVc01DMHlNUzR5TVROc0xUWXpMalkwTFRZekxqWTBJQ0FnUXpJeU1DNDROak1zTWpRdU9EVXlMREl4TVM0ek56VXNNalF1T0RVeUxESXdOUzQxTVRNc016QXVOekUxZWlJdlBnb0pQSEJoZEdnZ1ptbHNiRDBpSTJabVppSWdJR1E5SWswME9ERXVNamcxTERNd05pNDBPRFpqTlM0NE5qTXROUzQ0TmpNc05TNDROak10TVRVdU16VXNNQzB5TVM0eU1UTnNMVFl6TGpZMExUWXpMalkwWXkwMUxqZzJNeTAxTGpnMk15MHhOUzR6TlMwMUxqZzJNeTB5TVM0eU1UTXNNR3d0TlRNdU1ETXpMRFV6TGpBek15QWdJR3c0TkM0NE5UTXNPRFF1T0RVelREUTRNUzR5T0RVc016QTJMalE0Tm5vaUx6NEtDVHh3WVhSb0lHWnBiR3c5SWlObVptWWlJQ0JrUFNKTk16TXlMamM1TWl3ME5UUXVPVGM1YkRjMExqSTBOaTAzTkM0eU5EZHNMVGcwTGpnMU15MDROQzQ0TlROc0xUYzBMakkwTml3M05DNHlORGRqTFRJNUxqSTBMREk1TGpJMExUYzJMamd5Tml3eU9TNHlOQzB4TURZdU1EWTJMREFnSUNCekxUSTVMakkwTFRjMkxqZ3lOaXd3TFRFd05pNHdOalpzTnpRdU1qUTJMVGMwTGpJME4yd3RPRFF1T0RVekxUZzBMamcxTTB3MU55NHdNaXd4TnprdU1qQTRZeTAzTmk0d01qY3NOell1TURJM0xUYzJMakF5Tnl3eE9Ua3VOelF5TERBc01qYzFMamMzTVNBZ0lFTXhNek11TURRNExEVXpNUzR3TURZc01qVTJMamMyTlN3MU16RXVNREEyTERNek1pNDNPVElzTkRVMExqazNPWG9pTHo0S1BDOW5QZ29LQ2dvS0Nnb0tDZ29LQ2dvS0NnbzhMM04yWno0SycsXFxuICAgICAgICB1cmw6IHBhcnNlRG9tKHZpZGVvLCAnYSYmaHJlZicpLC8v6ZO+5o6lXFxuICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsLy/nu4Tku7bmoLflvI9cXG4gICAgfSk7XFxufSlcXG59XFxuLy/nm7jlhbPlvbHniYdcXG50cnl7XFxudmFyIGFwaSA9IHBhcnNlRG9tRm9ySHRtbChodG1sLFxcXCJoZWFkJiZsaW5rW3JlbD1jYW5vbmljYWxdJiZocmVmXFxcIikucmVwbGFjZShcXFwidmlkZW8/aWRcXFwiLFxcXCJhcGk5OC92aWRlby9nZXRSZWxhdGVkVmlkZW8/Y2F0ZWdvcnk9emg6JmFjdG9yPXpoOiZ2aWRlb0lkXFxcIilcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UoZmV0Y2goYXBpKSkucmVzdWx0LmRvY3NcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJzxzcGFuIHN0eWxlPVxcXCJjb2xvcjogI0ZGMDBGRjtcXFwiPuebuOmXnOW9seeJhzwvc3Bhbj4nLFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG59KTtcXG5cXG5saXN0LmZvckVhY2goaXRlbSA9PiB7XFxudmFyIHVybGwgPSBcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiArIE1ZX0hPTUUgKyAnL3ZpZGVvP2lkPScgKyBpdGVtLnZpZGVvSWQ7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogIGl0ZW0udGl0bGUsXFxuICAgICAgICBkZXNjOiBpdGVtLnNvdXJjZURhdGUuc2xpY2UoMCwxMCksXFxuICAgICAgICBpbWc6IGl0ZW0ucHJldmlldyxcXG4gICAgICAgIHVybDogdXJsbCArICdAcnVsZT1qczokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9lclxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgIH1cXG4gIH0pO1xcbn0pICAgXFxufSBjYXRjaCAoZXJyKSB7XFxufTtcXG5cXG5kLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdJyArIFxcXCLmiJHmmK/mnInlupXnur/nmoRcXFwiLmZvbnRjb2xvcihcXFwiZ3JleVxcXCIpXFxuICAgICAgICAgICAgICAgIC5zbWFsbCgpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG5cXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6pyjlpIcpXCIsXCJwYXRoXCI6XCJlcjFcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxudmFyIGpzb24gPSBKU09OLnBhcnNlKHBkZmgoaHRtbCwgJ2JvZHkmJiNfX05FWFRfREFUQV9fJiZIdG1sJykpO1xcbnZhciB0aXRsZSA9IGpzb24ucHJvcHMuaW5pdGlhbFN0YXRlLnZpZGVvLmRhdGEudGl0bGVfemg7XFxudmFyIGZhbmhhbyA9IGpzb24ucHJvcHMuaW5pdGlhbFN0YXRlLnZpZGVvLmRhdGEuY29kZTtcXG52YXIgcHJldmlld1ZpZGVvID0ganNvbi5wcm9wcy5pbml0aWFsU3RhdGUudmlkZW8uZGF0YS5wcmV2aWV3VmlkZW87XFxudmFyIGRlc2MgPSBqc29uLnByb3BzLmluaXRpYWxTdGF0ZS52aWRlby5kYXRhLmRlc2NyaXB0aW9uO1xcbi8v5qCH6aKYXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJzigJzigJ3igJ08bWlkZGxlPjxmb250IGNvbG9yPSNlNTA5MTU+JyArIHRpdGxlICsgJzwvZm9udD48L21pZGRsZT4nLFxcbiAgICBkZXNjOiBkZXNjLFxcbiAgICB1cmw6IE1ZX1VSTCxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgIH1cXG59KVxcblxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJ1xcbn0pXFxuXFxuZC5wdXNoKHtcXG4gICAgaW1nOiBqc29uLnByb3BzLmluaXRpYWxTdGF0ZS52aWRlby5kYXRhLnByZXZpZXcsXFxuICAgIHVybDogcHJldmlld1ZpZGVvLFxcbiAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJ1xcbn0pXFxudmFyIHBsYXkgPSBqc29uLnByb3BzLmluaXRpYWxTdGF0ZS52aWRlby5kYXRhLnNyY3M7XFxuZm9yIChsZXQgaSBpbiBwbGF5KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuaSreaUvuWZqFxcXCIgKyBbaV0sXFxuICAgICAgICB1cmw6IHBsYXlbaV0sXFxuICAgICAgICBjb2xfdHlwZTogcGxheS5sZW5ndGggPiAyID8gJ3RleHRfMycgOiAndGV4dF8yJ1xcbiAgICB9KTtcXG59XFxuZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSlcXG52YXIgYWN0b3JzID0ganNvbi5wcm9wcy5pbml0aWFsU3RhdGUudmlkZW8uZGF0YS5hY3RvcnM7XFxuZC5wdXNoKHtcXG4gICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08bWlkZGxlPjxmb250IGNvbG9yPSNlNTA5MTU+5aWz5LyYPC9mb250PjwvbWlkZGxlPicsXFxuICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICB9KTtcXG5mb3IgKGxldCBpIGluIGFjdG9ycykge1xcbiAgICBpZiAoYWN0b3JzW2ldLmluZGV4T2YoJ3poOicpID4gLTEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGFjdG9yc1tpXS5yZXBsYWNlKCd6aDonLCAnJyksXFxuICAgICAgICAgICAgdXJsOiBNWV9IT01FICsgJy9hbGw/YWN0cmVzcz0nICsgYWN0b3JzW2ldLnJlcGxhY2UoJ3poOicsICcnKSArICcmcGFnZT1meXBhZ2VAcnVsZT1qczokLnJlcXVpcmUoXFxcInlpXFxcIiknLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBhY3RvcnMubGVuZ3RoID4gMiA/ICd0ZXh0XzMnIDogJ3RleHRfMicsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBhY3RvcnNbaV0ucmVwbGFjZSgnemg6JywgJycpLFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcblxcdCAgXFxuICAgIH1cXG59XFxuZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSlcXG5cXG52YXIgdGFncyA9IGpzb24ucHJvcHMuaW5pdGlhbFN0YXRlLnZpZGVvLmRhdGEudGFncztcXG5kLnB1c2goe1xcbiAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxtaWRkbGU+PGZvbnQgY29sb3I9I2U1MDkxNT7moIfnrb48L2ZvbnQ+PC9taWRkbGU+JyxcXG4gIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgIH0pO1xcbmZvciAobGV0IGkgaW4gdGFncykge1xcbiAgICBpZiAodGFnc1tpXS5pbmRleE9mKCd6aDonKSA+IC0xKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB0YWdzW2ldLnJlcGxhY2UoJ3poOicsICcnKSxcXG4gICAgICAgICAgICB1cmw6IE1ZX0hPTUUgKyAnL2FsbD9nZW5yZT0nICsgdGFnc1tpXS5yZXBsYWNlKCd6aDonLCAnJykgKyAnJnBhZ2U9ZnlwYWdlQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJ5aVxcXCIpJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogdGFncy5sZW5ndGggPiAyID8gJ3RleHRfMycgOiAndGV4dF8yJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IHRhZ3NbaV0ucmVwbGFjZSgnemg6JywgJycpLFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcblxcdCAgXFxuICAgIH1cXG59XFxuZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSlcXG52YXIgbWFnbmV0cyA9IGpzb24ucHJvcHMuaW5pdGlhbFN0YXRlLnZpZGVvLmRhdGEubWFnbmV0c1xcbmlmIChtYWduZXRzICE9PSAnJykge1xcbiAgXFx0ZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPG1pZGRsZT48Zm9udCBjb2xvcj0jZTUwOTE1PuejgeWKm+mTvuaOpeOAkCcrIG1hZ25ldHMubGVuZ3RoICsgJ+OAkeadoTwvZm9udD48L21pZGRsZT4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICBmb3IobGV0IGkgaW4gbWFnbmV0cyl7XFxuXFx0ICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogbWFnbmV0c1tpXS50aXRsZSxcXG4gICAgICAgIGRlc2M6IG1hZ25ldHNbaV0uZmlsZVNpemUgKyAnXFxcXHRcXFxcdFxcXFx08J+Xk1xcXFx0JyArIG1hZ25ldHNbaV0ubGFzdFVwZGF0ZSxcXG4gICAgICAgIHBpY191cmw6ICdoaWtlcjovL2ltYWdlcy9pY19ib29rbWFya19mb2xkZXInLFxcbiAgICAgICAgdXJsOiBtYWduZXRzW2ldLnNyYywvL+mTvuaOpVxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLC8v57uE5Lu25qC35byPXFxuICAgIH0pO1xcdFxcbiAgfVxcbn1cXG5kLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICB9KVxcbi8v6aKE6KeI5Zu+XFxudmFyIGltZ0FyciA9IGpzb24ucHJvcHMuaW5pdGlhbFN0YXRlLnZpZGVvLmRhdGEucHJldmlld0ltYWdlcztcXG5pZiAoaW1nQXJyICE9PSAnJykge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08bWlkZGxlPjxmb250IGNvbG9yPSNlNTA5MTU+6aKE6KeI5Zu+PC9mb250PjwvbWlkZGxlPicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICBpbWdBcnIubWFwKGl0ZW0gPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBpbWc6IGl0ZW0sXFxuICAgICAgICAgICAgdXJsOiBpdGVtLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzMnLFxcbiAgICAgICAgfSk7XFxuICAgIH0pXFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Kej5p6QXCIsXCJwYXRoXCI6XCJsYXp5XCIsXCJydWxlXCI6XCJ2YXIgbGF6eSA9ICQoJycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgaWYgKC9lbWJlZHJpc2V8ZW1iZWRncmFtfHZpZG96YS8udGVzdChpbnB1dCkpIHtcXG4gICAgICAgIHZhciB1cmwgPSBwZGZoKHJlcXVlc3QoaW5wdXQpLCBcXFwic291cmNlJiZzcmNcXFwiKTtcXG4gICAgICAgIHJldHVybiB1cmwgKyBcXFwiI2lzVmlkZW89dHJ1ZSM7e1JlZmVyZXJAXFxcIiArIGdldEhvbWUoaW5wdXQpICsgXFxcIi99XFxcIlxcblxcbiAgICB9IGVsc2UgaWYgKC91cG5zLy50ZXN0KGlucHV0KSkge1xcbnZhciB1cmwgPSBcXFwiaHR0cHM6Ly83bW10di51cG5zLmxpdmUvYXBpL3YxL3ZpZGVvP2lkPVxcXCIgKyBpbnB1dC5zcGxpdChcXFwiI1xcXCIpWzFdXFxuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZmV0Y2godXJsKS50cmltKClcXG4gICAgICAgICAgICAgICAgdmFyIERlY29kZSA9ICh3b3JkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpXFxuICAgICAgICAgICAgICAgICAgICBsZXQga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcImtpZW10aWVubXVhOTExY2FcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl2ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcIjEyMzQ1Njc4OTBvaXV5dHJcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5kZWNyeXB0KENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KENyeXB0b0pTLmVuYy5IZXgucGFyc2Uod29yZCkpLCBrZXksIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxuICAgICAgICAgICAgICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOClcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoRGVjb2RlKGRhdGEpKVxcbiAgICAgICAgICAgICAgICB2aWRlb1VybCA9IGpzb24uY2YgKyAnI2lzVmlkZW89dHJ1ZSM7e1JlZmVyZXJAaHR0cHM6Ly83bW10di51cG5zLmxpdmUvfSdcXG4gICAgICAgICAgICAgIHJldHVybiB2aWRlb1VybFxcbn0gZWxzZSBpZiAoL21tfGphdmdhbmF8bmV0Zmxhdm5zLy50ZXN0KGlucHV0KSkge1xcblxcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChpbnB1dCwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiBcXFwiaHR0cHM6Ly93d3cubmV0ZmxhdjUuY29tL1xcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgdmFyIHNjcmlwdCA9IGh0bWwubWF0Y2goL2V2YWwoLipcXFxcKSkvKVsxXVxcbiAgICAgICAgdmlkZW9VcmwgPSBldmFsKHNjcmlwdCkubWF0Y2goLyhodHRwcz8uKj8pXFxcIi8pWzFdXFxuICAgICAgICAvL2xvZyhldmFsKHNjcmlwdCkpXFxuICAgICAgICByZXR1cm4gdmlkZW9VcmxcXG5cXG4gICAgfSBlbHNlIGlmICgvZW10dXJib3ZpZC8udGVzdChpbnB1dCkpIHtcXG5cXG4gICAgICAgIHZhciB1cmwgPSByZXF1ZXN0KGlucHV0KS5tYXRjaCgvaHR0cHM/OlxcXFwvXFxcXC9bXjtcXFxcXFxcIl0rXFxcXC4obTN1OHxtcDQpLylbMF1cXG4gICAgICAgIHJldHVybiB1cmwgKyBcXFwiO2dldDtVVEYtODt7T3JpZ2luQFxcXCIgKyB1cmwgKyBcXFwiJiYmJlJlZmVyZXJAXFxcIiArIHVybCArIFxcXCJ9XFxcIlxcblxcbiAgICB9IGVsc2UgaWYgKC9taXNzYXZcXFxcLnRvLy50ZXN0KGlucHV0KSkge1xcblxcbiAgICAgICAgdmFyIHVybCA9IHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9maWxlLio/Oi4qP1xcXFxcXFwiKFteXFxcXFxcXCJdKylcXFxcXFxcIi8pWzFdXFxuICAgICAgICByZXR1cm4gXFxcImh0dHBzOi8vZW1iLm1pc3Nhdi50by9lbWJlZG12L1xcXCIgKyB1cmxcXG5cXG4gICAgfSBlbHNlIGlmICgvZG9vb29kLy50ZXN0KGlucHV0KSkge1xcblxcbiAgICAgICAgIHZhciBsb2NhdGlvbiA9IEpTT04ucGFyc2UoZmV0Y2goaW5wdXQsIHtcXG4gICAgICAgICAgICBvbmx5SGVhZGVyczogdHJ1ZVxcbiAgICAgICAgfSkpLnVybFxcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChpbnB1dCwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJsYW5nPTFcXFwiLCAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciBwYXNzX21kNSA9IGdldEhvbWUobG9jYXRpb24pICsgaHRtbC5tYXRjaCgvXFxcXC9wYXNzX21kNVteXFxcIiddKy8pWzBdXFxuICAgICAgICB2YXIgdG9rZW4gPSBodG1sLm1hdGNoKC9jb29raWVJbmRleC4qP1xcXFwnKC4qPylcXFxcJy8pWzFdXFxuICAgICAgICB2YXIgZGF0YSA9IGZldGNoKHBhc3NfbWQ1LCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IGxvY2F0aW9uXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgICAgICBmdW5jdGlvbiBtYWtlUGxheSh0b2tlbikge1xcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgIHQgPSBcXFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcXFwiLFxcbiAgICAgICAgICAgICAgICBuID0gdC5sZW5ndGgsXFxuICAgICAgICAgICAgICAgIG8gPSAwOyAxMCA+IG87IG8rKylcXG4gICAgICAgICAgICAgICAgYSArPSB0LmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBuKSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBhICsgXFxcIj90b2tlbj1cXFwiICsgdG9rZW4gKyBcXFwiJmV4cGlyeT1cXFwiICsgRGF0ZS5ub3coKTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgdmFyIHVybFBsYXkgPSBkYXRhICsgbWFrZVBsYXkodG9rZW4pXFxuICAgICAgICByZXR1cm4gdXJsUGxheSArIFxcXCIjaXNWaWRlbz10cnVlIzt7UmVmZXJlckBcXFwiICsgbG9jYXRpb24gKyBcXFwifVxcXCJcXG5cXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgaW5wdXRcXG4gICAgfVxcbn0pO1wifV0iLCJpY29uIjoiaHR0cHM6Ly9pbWcudmludWEuY24vaW1hZ2VzL3pVQWVZLnBuZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment