Advertisement
xiaomianao666

邀您一起看:说明

Oct 23rd, 2022
776
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥说明@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4u+mhtVwiLFwicGF0aFwiOlwiaG9tZVwiLFwicnVsZVwiOlwiYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAoKSA9PiB7XFxyXFxuICAgIGNsZWFyTXlWYXIoJ25hbWVBcnJheScpO1xcclxcbiAgICBjbGVhck15VmFyKCd1cmxBcnJheScpO1xcclxcbiAgICBjbGVhck15VmFyKCdzd2l0Y2gnKTtcXHJcXG59KVxcclxcbmlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpKSB7XFxyXFxuICAgIGNvbmZpZ0FycmF5ID0gW107XFxyXFxuICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxufVxcclxcbmlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpKSB7XFxyXFxuICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcsICflvIAnKTtcXHJcXG59XFxyXFxudmFyIGQgPSBbXTtcXHJcXG5kLnB1c2goe1xcclxcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiaWc+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPua3uyDliqAg6KejIOaekDwvc3Bhbj48L2JpZz4nLFxcclxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgaWYgKGdldE15VmFyKCdzd2l0Y2gnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXHJcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xcclxcbiAgICAgICAgICAgICAgICBkZWxldGVJdGVtKCdhZGQnKVxcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICBwdXRNeVZhcignc3dpdGNoJywgJ+WFsycpO1xcclxcbiAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICBhZGRBcnJheSA9IFt7XFxyXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfop6PmnpDlkI3np7DvvIzkuIDooYzkuIDkuKonLFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXHJcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxyXFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXHJcXG4gICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXHJcXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0TXlWYXIoJ25hbWVBcnJheScsaW5wdXQpXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfSwge1xcclxcbiAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q77yM5LiA6KGM5LiA5LiqJyxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxyXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcclxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogLTEsXFxyXFxuICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxyXFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dE15VmFyKCd1cmxBcnJheScsaW5wdXQpXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfSwge1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+S/neWtmCcsXFxyXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIG5hbWVBcnJheSA9IGdldE15VmFyKCduYW1lQXJyYXknKS5zcGxpdCgnXFxcXG4nKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHVybEFycmF5ID0gZ2V0TXlWYXIoJ3VybEFycmF5Jykuc3BsaXQoJ1xcXFxuJyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gbmFtZUFycmF5Lmxlbmd0aCA+IHVybEFycmF5Lmxlbmd0aCA/IG5hbWVBcnJheS5sZW5ndGggOiB1cmxBcnJheS5sZW5ndGg7XFxyXFxuICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7IGkrKykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGppZXhpTmFtZSA9IGkgPiBuYW1lQXJyYXkubGVuZ3RoIC0gMSA/ICfmnKrlkb3lkI0nIDogKG5hbWVBcnJheVtpXSA9PSAnJyA/ICfmnKrlkb3lkI0nIDogbmFtZUFycmF5W2ldKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBqaWV4aVVybCA9IGkgPiB1cmxBcnJheS5sZW5ndGggLSAxID8gJ+epuuino+aekCcgOiAodXJsQXJyYXlbaV0gPT0gJycgPyAn56m66Kej5p6QJyA6IHVybEFycmF5W2ldKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheS5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogamlleGlOYW1lLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGppZXhpVXJsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3N3aXRjaCcsICflhbMnKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S/neWtmOaIkOWKn1xcXCJcXHJcXG4gICAgICAgICAgICAgICAgfSksXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxyXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZCdcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIH1dXFxyXFxuICAgICAgICAgICAgYWRkSXRlbUFmdGVyKCdhZGRGdW5jdGlvbicsIGFkZEFycmF5KTtcXHJcXG4gICAgICAgICAgICBwdXRNeVZhcignc3dpdGNoJywgJ+W8gCcpO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNonN3aXRjaOS4ujonICsgZ2V0TXlWYXIoJ3N3aXRjaCcsICflvIAnKVxcclxcbiAgICB9KSxcXHJcXG4gICAgZGVzYzogJ+eugOWNleOAgeaXoOW/p+OAgeeLrOeri+eahOino+aekOeuoeeQhuW3peWFt++8jOWFu+iAgeS4k+eUqCcsXFxyXFxuICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxyXFxuICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICBpZDogJ2FkZEZ1bmN0aW9uJ1xcclxcbiAgICB9XFxyXFxufSwge1xcclxcbiAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXCIjNkVCODk3XFxcIj7or7TmmI48L2ZvbnQ+JyxcXHJcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHknKS5ydWxlKCgpID0+IHtcXHJcXG4gICAgICAgICAgICBsZXQgZCA9IFtdO1xcclxcbiAgICAgICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5pWZ56iL5paH5qGjJyxcXHJcXG4gICAgICAgICAgICAgICAgdXJsOidodHRwczovL3d3dy55dXF1ZS5jb20vY2hlbnlpbmctazczc2MvbGhjdnFkL2JzaDVlMicsXFxyXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCJmbG9hdCYmMTAwJVxcXCIsXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnXFxyXFxuICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcclxcbiAgICAgICAgfSk7XFxyXFxuICAgIH0pLFxcclxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogXFxcIuWIh+aNouaPkuS7tlxcXCIsXFxyXFxuICAgIHVybDogJChbJ+mtlOaWrScsICfliqnmiYsnXSwgMiwgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoKSA9PiB7XFxyXFxuICAgICAgICBpZiAoaW5wdXQgPT0gJ+mtlOaWrScpIHtcXHJcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanNcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvUGFyc2VfRG4uanM/cnVsZT1NeUZpZWxk4bSw4oG/XFxcIikpLnJ1bGUpO1xcclxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lvZPliY3mmK/prZTmlq3mqKHlvI9cXFwiO1xcclxcbiAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanNcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZHVhbj9ydWxlPemFjee9ruWKqeaJi1xcXCIpKS5ydWxlKTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5b2T5YmN5piv5Yqp5omL5qih5byPXFxcIjtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgfSksXFxyXFxuICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXHJcXG59LCB7XFxyXFxuICAgIHRpdGxlOiAn5a+85YWl6L6F5YqpJyxcXHJcXG4gICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxyXFxuICAgICAgICBodG1sID0gcmVxdWVzdCgnaHR0cHM6Ly9uZXRjdXQuY24vcC9hNWQxYzhlMWVjZWUyOGQzJyk7XFxyXFxuICAgICAgICBkYXRhID0gaHRtbC5tYXRjaCgvey4qbm90ZV9jb250ZW50Lip1cGRhdGVkX2F0Lip9LylbMF07XFxyXFxuICAgICAgICBjb250ZW50ID0gSlNPTi5wYXJzZShkYXRhKS5ub3RlX2NvbnRlbnQ7XFxyXFxuICAgICAgICB1cERhdGEgPSBKU09OLnBhcnNlKGRhdGEpLnVwZGF0ZWRfYXQ7XFxyXFxuICAgICAgICBwdXRNeVZhcignY29udGVudCcsIGNvbnRlbnQpO1xcclxcbiAgICAgICAgY29uZmlybSh7XFxyXFxuICAgICAgICAgICAgdGl0bGU6ICfmmK/lkKblr7zlhaUnLFxcclxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICfohJrmnKzmm7TmlrDml6XmnJ9cXFxcbicgKyB1cERhdGEsXFxyXFxuICAgICAgICAgICAgY29uZmlybTogKCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0TXlWYXIoJ2NvbnRlbnQnKTtcXHJcXG4gICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgIGNhbmNlbDogKCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5Y+W5raI5a+85YWlJztcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KVxcclxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXHJcXG4gICAgfSksXFxyXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXHJcXG59LCB7XFxyXFxuICAgIHRpdGxlOiAn6Kej5p6Q5qih5p2/JyxcXHJcXG4gICAgdXJsOiBgY29weTovL+S/ruaUueKYhemtlOaWremAmueUqOaooeadv+KYhVxcclxcbmZ1bmN0aW9uICh2aXBVcmwpIHtcXHJcXG4gICAgLy8g5q2j5bi46LCD55SoLeW8ueW5leW8gOWFs+WcqOmFjee9ruWKqeaJi+mHjOiHquihjOiuvue9ruaYr+WQpuWQr+eUqFxcclxcbiAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcclxcbiAgICAvKuWFjeWXhemmluWPkeaooeW8j1xcclxcbiAgICDlpoLmnpzmg7PopoHlrp7njrDnsbvkvLzprZTmlq3nmoTll4XmjqLkvJjlhYjvvJrlhY3ll4XliqB4NeOAgUpzb27lpJrnur/ot6/nmoTlvaLlvI/vvIzlj4LogIPms6jph4rnmoTnpLrkvovku6PnoIHmt7vliqDlhY3ll4Xku6PnoIHvvIjlj6rmmK/npLrkvovlubbkuI3lj6/nlKjvvInvvIzlubblnKjmnIDnu4jov5Tlm57nmoTml7blgJnpobrluo/lpJrkvKDlhaXkuKTkuKrlj4LmlbDvvJrkuIDkuKrmmK/lhY3ll4XlvpfliLDnmoTmkq3mlL7lnLDlnYDvvIzkuIDkuKrmmK/ov5nkuKrop6PmnpDmiJbnur/ot6/nmoTlkI3lrZdcXHJcXG4gICAgdmFyIHBhcnNlID0gXFxcImh0dHBzOi8vcGxheWVyLmR4eXkuY2YvV25kZXh4WC5waHA/dXJsPVxcXCI7XFxyXFxuICAgIGJmdXJsID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpP3J1bGU9QVBJ55uS5a2QXFxcIikucGFyc2VMTFEocGFyc2UsIHZpcFVybCk7XFxyXFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm11bFBhcnNlKHZpcFVybCwgYmZ1cmwsICdsbHEnKSArIFxcXCI7e1VzZXItQWdlbnRAJiZSZWZlcmVyQH1cXFwiO1xcclxcbiAgICAqL1xcclxcbn1gLFxcclxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogJ+a6kOeggee8lui+kScsXFxyXFxuICAgIHVybDogXFxcImVkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFwiLFxcclxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogJ+WvvOWHuumFjee9ricsXFxyXFxuICAgIHVybDogJ3NoYXJlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLFxcclxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogJ+S6keadv+WIhuS6qycsXFxyXFxuICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcclxcbiAgICAgICAgY29weShcXFwi5Yqp5omL6Kej5p6Q5a+85YWl5Y+j5LukwqXCpVxcXCIrc2hhcmVQYXN0ZShzZXRGaWxlKSk7XFxyXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcclxcbiAgICB9KSxcXHJcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcclxcbn0sIHtcXHJcXG4gICAgdGl0bGU6ICfkupHmnb/lr7zlhaUnLFxcclxcbiAgICB1cmw6ICQoJycsICflr7zlhaXmk43kvZzlsIbkvJropobnm5bljp/mnInphY3nva7vvIzor7foh6rooYzlpIfku70nKS5pbnB1dCgoKSA9PiB7XFxyXFxuICAgICAgICBpZiAoaW5wdXQubWF0Y2goL+WKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqUvKSkge1xcclxcbiAgICAgICAgICAgIHNldEZpbGU9aW5wdXQuc3BsaXQoJ8KlwqUnKVsxXTtcXHJcXG4gICAgICAgICAgICB2YXIgY29udGVudCA9IHBhcnNlUGFzdGUoc2V0RmlsZSk7XFxyXFxuICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgY29udGVudCk7XFxyXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxyXFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WvvOWFpeaIkOWKn1xcXCJcXHJcXG4gICAgICAgIH1lbHNle1xcclxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lj6Pku6TplJnor69cXFwiXFxyXFxuICAgICAgICB9XFxyXFxuICAgIH0pLFxcclxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxufSwge1xcclxcbiAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogZ2V0TXlWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+mFjee9ricgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPumFjee9rjwvZm9udD4nIDogJ+mFjee9ricsXFxyXFxuICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgcHV0TXlWYXIoJ21vZGUnLCAn6YWN572uJyk7XFxyXFxuICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXHJcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxyXFxuICAgIH0pLFxcclxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogZ2V0TXlWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+aJuemHj+WIoOmZpCcgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPuaJuemHj+WIoOmZpDwvZm9udD4nIDogJ+aJuemHj+WIoOmZpCcsXFxyXFxuICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgcHV0TXlWYXIoJ21vZGUnLCAn5om56YeP5Yig6ZmkJyk7XFxyXFxuICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxyXFxuICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxyXFxuICAgICAgICBjbGVhck15VmFyKCdkZWxOdW0nKTtcXHJcXG4gICAgICAgIGNsZWFyTXlWYXIoJ2RlbEFycmF5Jyk7XFxyXFxuICAgICAgICBjbGVhck15VmFyKCdkZWxOdW0nKTtcXHJcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXHJcXG4gICAgICAgICAgICBjbGVhck15VmFyKCdpc0Nob29zZScgKyBpKTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcclxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXHJcXG4gICAgfSksXFxyXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXHJcXG59LCB7XFxyXFxuICAgIHRpdGxlOiBnZXRNeVZhcignbW9kZScsICfphY3nva4nKSA9PSAn6Kej5p6Q5rWL6K+VJyA/ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1yZWQ+6Kej5p6Q5rWL6K+VPC9mb250PicgOiAn6Kej5p6Q5rWL6K+VJyxcXHJcXG4gICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxyXFxuICAgICAgICBwdXRNeVZhcignbW9kZScsICfop6PmnpDmtYvor5UnKTtcXHJcXG4gICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcclxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXHJcXG4gICAgfSksXFxyXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXHJcXG59LCB7XFxyXFxuICAgIHRpdGxlOiByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpID09ICd0cnVlJyA/ICflvLnluZU65byAJyA6ICflvLnluZU65YWzJyxcXHJcXG4gICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxyXFxuICAgICAgICB2YXIgZG1Td2l0Y2ggPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpO1xcclxcbiAgICAgICAgaWYgKGRtU3dpdGNoID09ICd0cnVlJykge1xcclxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcsICdmYWxzZScpO1xcclxcbiAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAndHJ1ZScpO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxyXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcclxcbiAgICB9KSxcXHJcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcclxcbn0pO1xcclxcbnRyeSB7XFxyXFxuICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXHJcXG4gICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcclxcbiAgICBpZiAoZ2V0TXlWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+mFjee9ricpIHtcXHJcXG4gICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcclxcbiAgICAgICAgfSwge1xcclxcbiAgICAgICAgICAgIHRpdGxlOiAn5Y676YeN6Zmk55m9JyxcXHJcXG4gICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcclxcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxyXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdsYXN0Q2xlYW4nLCBjb25maWdBcnJheSk7XFxyXFxuICAgICAgICAgICAgICAgIG5ld0FycmF5ID0gW107XFxyXFxuICAgICAgICAgICAgICAgIG51bSA9IDA7XFxyXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcihjb25maWdBcnJheVtpXS51cmwsICcwJykgIT0gJzEnICYmIGNvbmZpZ0FycmF5W2ldLnVybCAhPSAn56m66Kej5p6QJyAmJiBjb25maWdBcnJheVtpXS51cmwgIT0gdW5kZWZpbmVkKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkucHVzaChjb25maWdBcnJheVtpXSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoY29uZmlnQXJyYXlbaV0udXJsLCAnMScpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBudW0rKztcXHJcXG4gICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShuZXdBcnJheSkpO1xcclxcbiAgICAgICAgICAgICAgICBKU09OLnBhcnNlKGdldE15VmFyKCdsYXN0Q2xlYW4nLCAnW10nKSkuZm9yRWFjaChpdGVtID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbS51cmwpO1xcclxcbiAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mnKzmrKHljrvph43mlbDph4/kuLpcXFxcdFxcXFx0XFxcXHRcXFwiICsgbnVtO1xcclxcbiAgICAgICAgICAgIH0pLFxcclxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXHJcXG4gICAgICAgIH0sIHtcXHJcXG4gICAgICAgICAgICB0aXRsZTogJ+WNoOS9jeespuWkhOeQhicsXFxyXFxuICAgICAgICAgICAgdXJsOiAkKFsn5re75YqgJywgJ+WOu+mZpCddLCAyLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KCgpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcclxcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxyXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5re75YqgJykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFw/dXJsPS8pKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnVybCA9IGNvbmZpZ0FycmF5W2ldLnVybC5yZXBsYWNlKCc/dXJsPScsICc/cGxhY2Vob2xkZXI9JnVybD0nKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFw/cGxhY2Vob2xkZXI9JnVybD0vKSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpXS51cmwgPSBjb25maWdBcnJheVtpXS51cmwucmVwbGFjZSgnP3BsYWNlaG9sZGVyPSZ1cmw9JywgJz91cmw9Jyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcclxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5aSE55CG5oiQ5YqfXFxcIjtcXHJcXG4gICAgICAgICAgICB9KSxcXHJcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXHJcXG4gICAgICAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaSArICc8L3NwYW4+LScgKyBjb25maWdBcnJheVtpXS5uYW1lLFxcclxcbiAgICAgICAgICAgICAgICBkZXNjOiBjb25maWdBcnJheVtpXS51cmwsXFxyXFxuICAgICAgICAgICAgICAgIHVybDogJChbJ+e8lui+kScsICfnp7vkvY0nLCAn5Yig6ZmkJ10sIDMsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKGksIGNvbmZpZ0FycmF5KSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+e8lui+kScpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWcgPSBjb25maWdBcnJheVtpXS5uYW1lICsgJywnICsgY29uZmlnQXJyYXlbaV0udXJsO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKGNvbmZpZykuaW5wdXQoKGksIGNvbmZpZ0FycmF5KSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dC5zcGxpdCgvLHzvvIwvKVswXSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaW5wdXQuc3BsaXQoLyx877yMLylbMV1cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheS5zcGxpY2UoaSwgMSwgaXRlbSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+abtOaWsOaIkOWKn1xcXCJcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpLCBjb25maWdBcnJheSlcXHJcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+enu+S9jScpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnMCcsICfkvaDmg7PmjpLnrKzlh6DvvJ/luo/lj7fku44w5byA5aeLficpLmlucHV0KChpLCBjb25maWdBcnJheSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPiBjb25maWdBcnJheS5sZW5ndGggLSAxKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IGNvbmZpZ0FycmF5Lmxlbmd0aCAtIDE7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPCAwKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IDA7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGNvbmZpZ0FycmF5W2ldO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IGlucHV0KSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IGk7IGluZGV4ID4gaW5wdXQ7IGluZGV4LS0pIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpbmRleF0gPSBjb25maWdBcnJheVtpbmRleCAtIDFdO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBpOyBpbmRleCA8IGlucHV0OyBpbmRleCsrKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaW5kZXhdID0gY29uZmlnQXJyYXlbaW5kZXggKyAxXTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpbnB1dF0gPSB0ZW1wO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/np7vkvY3miJDlip9cXFwiXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSwgY29uZmlnQXJyYXkpXFxyXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5LnNwbGljZShpLCAxKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Yig6Zmk5oiQ5YqfXFxcIlxcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICB9LCBpLCBjb25maWdBcnJheSksXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcclxcbiAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgfVxcclxcbiAgICB9IGVsc2UgaWYgKGdldE15VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfmibnph4/liKDpmaQnKSB7XFxyXFxuICAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6ZmkXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldE15VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnLFxcclxcbiAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ2RlbE51bScsICcwJykgPT0gJzAnKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6K+35YWI6YCJ5oup6KaB5Yig6Zmk55qE6Kej5p6Q77yBJ1xcclxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkgPSBKU09OLnBhcnNlKGdldE15VmFyKCdkZWxBcnJheScpKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhkZWxBcnJheSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICBuZXdBcnJheSA9IFtdO1xcclxcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVsQXJyYXkuaW5jbHVkZXMoaSkpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkucHVzaChjb25maWdBcnJheVtpXSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkobmV3QXJyYXkpKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2RlbE51bScpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcignZGVsQXJyYXknKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2RlbE51bScpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5om56YeP5Yig6Zmk5oiQ5YqfXFxcIlxcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfSksXFxyXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXHJcXG4gICAgICAgICAgICBleHRyYToge1xcclxcbiAgICAgICAgICAgICAgICBpZDogJ2RlbEJ0bidcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgICAgIGluZGV4ID0gMDtcXHJcXG4gICAgICAgIGNvbmZpZ0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxyXFxuICAgICAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tJyArIGl0ZW0ubmFtZSxcXHJcXG4gICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxyXFxuICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGluZGV4LCBpdGVtKSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKSA9PSAneWVzJykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhpbmRleCk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkgPSBKU09OLnBhcnNlKGdldE15VmFyKCdkZWxBcnJheScsICdbXScpKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxOdW0gPSBOdW1iZXIoZ2V0TXlWYXIoJ2RlbE51bScsICcwJykpIC0gMTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheS5wb3AoaW5kZXgpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdkZWxBcnJheScsIGRlbEFycmF5KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignZGVsTnVtJywgZGVsTnVtKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tJyArIGl0ZW0ubmFtZSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdkZWxCdG4nLCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6ZmkXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldE15VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcclxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ2RlbEFycmF5JywgJ1tdJykpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbE51bSA9IE51bWJlcihnZXRNeVZhcignZGVsTnVtJywgJzAnKSkgKyAxO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5LnB1c2goaW5kZXgpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhkZWxBcnJheSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2RlbEFycmF5JywgZGVsQXJyYXkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdkZWxOdW0nLCBkZWxOdW0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oaW5kZXggKyAnJywge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBpbmRleCArICctJyArIGl0ZW0ubmFtZSArICc8L3NwYW4+JyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdkZWxCdG4nLCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6ZmkXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldE15VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAneWVzJyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXHJcXG4gICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgfSwgaW5kZXgsIGl0ZW0pLFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxyXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBpZDogaW5kZXggKyAnJ1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgaW5kZXgrKztcXHJcXG4gICAgICAgIH0pO1xcclxcbiAgICB9IGVsc2UgaWYgKGdldE15VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfop6PmnpDmtYvor5UnKSB7XFxyXFxuICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxyXFxuICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxyXFxuICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcclxcbiAgICAgICAgICAgIGppZXhpID0gaXRlbS51cmw7XFxyXFxuICAgICAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwiIzZFQjg5N1xcXCI+PHNtYWxsPuKeruWJjeW+gOa1i+ivlTwvc21hbGw+PC9mb250PicsXFxyXFxuICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0udXJsLFxcclxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5ydWxlKChqaWV4aSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnvJbovpHmtYvor5Xpk77mjqUnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2VkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXHJcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+W8ueW5lTonICsgZ2V0TXlWYXIoJ2RtU3dpdGNoJywgJ+WFsycpLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ2RtU3dpdGNoJywgJ+WFsycpID09ICflhbMnKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignZG1Td2l0Y2gnLCAn5byAJyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignZG1Td2l0Y2gnLCAn5YWzJyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZG1Td2l0Y2gnLCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+W8ueW5lTonICsgZ2V0TXlWYXIoJ2RtU3dpdGNoJywgJ+WFsycpLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdkbVN3aXRjaCdcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nKSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlc2hpRGF0YSA9IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+iFvuiur+inhumikSc6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvMy8xMDZfM2EwZDIxMmUxN2NiOTVlMjMyZmZlMTU1NDYwMzg1Y2JfY29uXzEzMHgxMzAucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdi5xcS5jb20veC9jb3Zlci9temMwMDIwMHJtcGFmNDAvbjAwMzZsNHRudGMuaHRtbCdcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S8mOmFtyc6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTYvOS8xMTBfOGZmMDZlMGMyMzc3NjBjZDU3ZDI1MDhmZDk4Yzg0MTRfY29uXzEzMHgxMzAucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdi55b3VrdS5jb20vdl9zaG93L2lkX1hORGMwTURFMU5UazFNZz09Lmh0bWwnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfniLHlpYfoibonOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzA5LzgvMTEwXzkwMWYyZWYzN2FmMmZlYTI1ZTVkOTY0OGY1NTFjZTMxX2Nvbl8xMzB4MTMwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vd3d3LmlxaXlpLmNvbS92XzJnYTh6dHM4NnlzLmh0bWwnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfoipLmnpxUVic6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvNi8xMTBfMTgzNGQyOTZhYTViNTY2NmE3ZDk0YjFlMzQ3OWFlNjRfY29uXzEzMHgxMzAucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly93d3cubWd0di5jb20vYi8zNDkyNTMvMTA0MjQzMDAuaHRtbCdcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+WTlOWTqeWTlOWTqSc6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMjcvNC8xMTBfOGUyZTNkODhjNDUwMjViMzgwZTY5ODE3ZDZmYjUzYjFfY29uXzEzMHgxMzAucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbS5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwNDI4OTkzJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5pCc54uQ6KeG6aKRJzoge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS85LzExMF81MzJhNTFmODQzMWVmYzM3NzgwOGMxZmZmZjJkYTM2Zl9jb25fMTMweDEzMC5wbmcnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tLnR2LnNvaHUuY29tL3Y3MzI5NDQxLnNodG1sJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+ilv+eTnOinhumikSc6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMjcvNS8xMTBfYTg2MjY1ODgyZWQxOGM2MTkwNTY2ZTllYTI1Zjk2OThfY29uXzEzMHgxMzAucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vd3d3Lml4aWd1YS5jb20vNjY5OTM1Njc5MjkwNTc5NDA1NSdcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S5kOinhic6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvOC8yXzM1YjVkNDM3M2Y0YmNiYTI4ZjM5NDg2ZTRmMTE2NGQ5X2Nvbl8xMzB4MTMwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20ubGUuY29tL3ZwbGF5Xzc2OTU0MzMzLmh0bWw/ZnJvbT1hamF4JyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzE5MDUnOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE4LzQvMTEwXzVmMjRiMTA1MmZlZDRmN2ZjNzM1OTNhOGVmMjcyNzZkX2Nvbl8xMzB4MTMwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3ZpcC4xOTA1LmNvbS9tL3BsYXkvMTQyOTcyNS5zaHRtbCdcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+mjjuihjOinhumikSc6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTYvNC8xMTBfNmY2YWY5Zjk5YjI2MjllNTFmMGIwYTMzY2RmZjFkOWVfY29uXzEzMHgxMzAucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly9tLmZ1bi50di9tcGxheS8/bWlkPTk1NzE5J1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFBUVuinhumikSc6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMjgvNS8xMTBfYTQ1NWIyOTUxMjI3MDQwZWU2Mjk1NWVkY2ZiODlkNzJfY29uXzEzMHgxMzAucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdi5wcHR2LmNvbS9zaG93L3pWbjNkSlh0MXhWNDlsNC5odG1sJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6b6Z6IW+Jzoge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzQucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ0xULTFlYzNmNjc1NGY2ODU4NmVkN2Y5MmMzZTk5NWNmY2E2J1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5Lq65Lq66L+3Jzoge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzYucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3JlbnJlbm1pLWFiOTI0ZTExZDJkNjkzOTcnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkupTmr5InOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvMzAucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3d1ZHV5dW4tMTY0OTQzMTMwNzAyMSdcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+WkmuWkmic6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS80OS5wbmcnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tM3U4LmNhY2hlLnN1b3lvLmNjL20zdTgvMjAyMjAzLzgvYWFhYmQ5MmRhMjY3NzRjNjg4NTBhMDIzMTUzYzgwZjFhZTZmYTliZS5tM3U4J1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6J6N5YW0Jzoge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzgwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdSb25nWGluZ1ZSLTQyMTU2NDU1ODE5MzInXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpm6rkuronOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8xMzMucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3h1ZXJlbi0xNjQ2ODIzMDcyJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5peL6aOO5LqRJzoge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzU0LnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd4ZnktNTI5ZTY0NTc5NTNkNTQ1ZidcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+eRnuS4sOi1hOa6kCc6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS83Mi5wbmcnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly8xLnJ1aWZlbmdsYi5jb20vcGxheS8xNjQ0OTE0NTk1Lm0zdTgnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY2VzaGlEYXRhKSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICBjZXNoaURhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvY2VzaGkuanNvbicpKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gY2VzaGlEYXRhKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3AsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogY2VzaGlEYXRhW3Byb3BdLnBpYyArICdAUmVmZXJlcj0nLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoY2VzaGlEYXRhLCBwcm9wLCBqaWV4aSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlwVXJsID0gY2VzaGlEYXRhW3Byb3BdLnVybDtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHMgPSBbXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsXTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzID0gWyfmtYvor5UnXVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdkbVN3aXRjaCcsICflhbMnKSA9PSAn5byAJykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS92aWRlb0RtLmpzP3J1bGU9ZG3nm5LlrZBcXFwiKS5nZXRGb3IodmlwVXJsLCB1cmxzLCBuYW1lcyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgamlleGkgKyB2aXBVcmw7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNlc2hpRGF0YSwgcHJvcCwgamlleGkpLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fNCdcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmtYvor5UnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfkvaDov5jlj6/ku6Xku7vmhI/ovpPlhaXkuIDkuKrop4bpopHlnLDlnYDmtYvor5XlvZPliY3op6PmnpB+JyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKGppZXhpKSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcFVybCA9IGdldE15VmFyKCdjZXNoaUxpbmsnKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJscyA9IFtcXFwidmlkZW86Ly9cXFwiICsgamlleGkgKyB2aXBVcmxdO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcyA9IFsn5rWL6K+VJ11cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdkbVN3aXRjaCcsICflhbMnKSA9PSAn5byAJykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvRG0uanM/cnVsZT1kbeebkuWtkFxcXCIpLmdldEZvcih2aXBVcmwsIHVybHMsIG5hbWVzKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgamlleGkgKyB2aXBVcmw7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBqaWV4aSksXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRNeVZhcignY2VzaGlMaW5rJyxpbnB1dClcXFwiLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgc2V0SG9tZVJlc3VsdChkKTtcXHJcXG4gICAgICAgICAgICAgICAgfSwgamlleGkpLFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXHJcXG4gICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgIH0pO1xcclxcbiAgICB9XFxyXFxufSBjYXRjaCAoZSkge1xcclxcbiAgICBkLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6ICfphY3nva7mlofku7bmiJblt7LmjZ/lnY9+JyxcXHJcXG4gICAgICAgIGRlc2M6ICfngrnlh7vliY3ljrvmo4Dmn6Us6Iul5paH5Lu256m655m95YiZ5paH5Lu25YaF6L6T5YWlW13ljbPlj6/ph43nlJ8nLFxcclxcbiAgICAgICAgdXJsOiBcXFwiZWRpdEZpbGU6Ly9oaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvblxcXCIsXFxyXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxyXFxuICAgIH0pO1xcclxcbn1cXHJcXG5zZXRSZXN1bHQoZCk7XFxyXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLosIPnlKjot6/nlLFcIixcInBhdGhcIjpcIm11bFBhcnNlXCIsXCJydWxlXCI6XCIvKlxcclxcbiB2aXBVcmw65a6Y572R5Zyw5Z2AO+i/lOWbnuWAvEpTT07moLzlvI/nmoTlpJrnur/ot6/op4bpopHlnLDlnYBcXHJcXG7osIPnlKjmjqXlj6PvvJokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm11bFBhcnNlKHZpcFVybCk7XFxyXFxuICovXFxyXFxuJC5leHBvcnRzLm11bFBhcnNlID0gZnVuY3Rpb24gKHZpcFVybCxiZkxpbmssamlleGlOYW1lKSB7XFxyXFxuICAgIGlmICh2aXBVcmwuaW5kZXhPZignZG91YmFuJykgIT0gLTEpIHtcXHJcXG4gICAgICAgIHZpcFVybD12aXBVcmwuc3BsaXQoJz9wdGFnPScpWzBdXFxyXFxuICAgIH1cXHJcXG4gICAgbG9nKCfop4bpopHljp/lnLDlnYDvvJonK3ZpcFVybCk7XFxyXFxuICAgIGlmIChiZkxpbmsmJmppZXhpTmFtZSkge1xcclxcbiAgICAgICAgdmFyIHVybHMgPSBiZkxpbms7XFxyXFxuICAgICAgICB2YXIgbmFtZXMgPSBqaWV4aU5hbWU7XFxyXFxuICAgIH1lbHNle1xcclxcbiAgICAgICAgdmFyIHVybHMgPSBbXTtcXHJcXG4gICAgICAgIHZhciBuYW1lcyA9IFtdO1xcclxcbiAgICB9XFxyXFxuICAgIGxvZyhcXFwi5aSa57q/6Lev6Kej5p6Q5byA5aeLXFxcIilcXHJcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlYWRGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvblxcXCIpKVxcclxcbiAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxyXFxuICAgICAgICB1cmxzLnB1c2goXFxcInZpZGVvOi8vXFxcIiArIGl0ZW0udXJsICsgdmlwVXJsKTtcXHJcXG4gICAgICAgIG5hbWVzLnB1c2goaXRlbS5uYW1lKTtcXHJcXG4gICAgfSk7XFxyXFxuICAgIGxvZyhg5b2T5YmN5ZCv55So6Kej5p6Q77yaJHt1cmxzLmxlbmd0aH3kuKpgKVxcclxcbiAgICB2YXIgZG1Td2l0Y2ggPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpO1xcclxcbiAgICBpZiAoZG1Td2l0Y2ggPT0gJ3RydWUnKSB7XFxyXFxuICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9EbS5qcz9ydWxlPWRt55uS5a2QXFxcIikuZ2V0Rm9yKHZpcFVybCwgdXJscywgbmFtZXMpO1xcclxcbiAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXHJcXG4gICAgICAgICAgICB1cmxzOiB1cmxzLFxcclxcbiAgICAgICAgICAgIG5hbWVzOiBuYW1lc1xcclxcbiAgICAgICAgfSk7XFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmlq3mj5Lmj5Lku7ZcIixcInBhdGhcIjpcImR1YW5cIixcInJ1bGVcIjpcImZ1bmN0aW9uIGF5dG1QYXJzZSh2aXBVcmwpIHtcXHJcXG4gICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL211bFBhcnNlP3J1bGU96YWN572u5Yqp5omLXFxcIikubXVsUGFyc2UodmlwVXJsKTtcXHJcXG59XFxyXFxuXCJ9XSxcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwi6YWN572u5Yqp5omLXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9lbXB0eTtnZXQ7VVRGLTg7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKExpbnV477yb77ybIEFuZHJvaWQgMTHvvJvvvJsgTWkgMTAgUHJvKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvODguMC40MzI0LjE1MiBNb2JpbGUgU2FmYXJpLzUzNy4zNn1cIixcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJmaW5kX3J1bGVcIjpcImpzOihcXG4oKSA9PiB7XFxuICAgIGxldCBkID0gW107XFxuICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTY1NTlcXFxcdTdhMGJcXFxcdTY1ODdcXFxcdTY4NjNcXFwiLCB1cmw6IFxcXCJodHRwczovL3d3dy55dXF1ZS5jb20vY2hlbnlpbmctazczc2MvbGhjdnFkL2JzaDVlMlxcXCIsIGRlc2M6IFxcXCJmbG9hdCYmMTAwJVxcXCIsIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwifSk7XFxuICAgIHNldFJlc3VsdChkKTtcXG59XFxuKSgpXCIsXCJncm91cFwiOlwi5bel5YW3XCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJcIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Li76aG1XFxcIixcXFwicGF0aFxcXCI6XFxcImhvbWVcXFwiLFxcXCJydWxlXFxcIjpcXFwiYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAoKSA9PiB7XFxcXHJcXFxcbiAgICBjbGVhck15VmFyKCduYW1lQXJyYXknKTtcXFxcclxcXFxuICAgIGNsZWFyTXlWYXIoJ3VybEFycmF5Jyk7XFxcXHJcXFxcbiAgICBjbGVhck15VmFyKCdzd2l0Y2gnKTtcXFxcclxcXFxufSlcXFxcclxcXFxuaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJykpIHtcXFxcclxcXFxuICAgIGNvbmZpZ0FycmF5ID0gW107XFxcXHJcXFxcbiAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcXFxyXFxcXG59XFxcXHJcXFxcbmlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpKSB7XFxcXHJcXFxcbiAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAn5byAJyk7XFxcXHJcXFxcbn1cXFxcclxcXFxudmFyIGQgPSBbXTtcXFxcclxcXFxuZC5wdXNoKHtcXFxcclxcXFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiM2RUI4OTdcXFxcXFxcIj7mt7sg5YqgIOinoyDmnpA8L3NwYW4+PC9iaWc+JyxcXFxcclxcXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgaWYgKGdldE15VmFyKCdzd2l0Y2gnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXFxcclxcXFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0oJ2FkZCcpXFxcXHJcXFxcbiAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgcHV0TXlWYXIoJ3N3aXRjaCcsICflhbMnKTtcXFxcclxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgICAgICBhZGRBcnJheSA9IFt7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q5ZCN56ew77yM5LiA6KGM5LiA5LiqJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0TXlWYXIoJ25hbWVBcnJheScsaW5wdXQpXFxcXFxcXCIsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgIH0sIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfop6PmnpDvvIzkuIDooYzkuIDkuKonLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcXFxcXCJwdXRNeVZhcigndXJsQXJyYXknLGlucHV0KVxcXFxcXFwiLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICB9LCB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+S/neWtmCcsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgbmFtZUFycmF5ID0gZ2V0TXlWYXIoJ25hbWVBcnJheScpLnNwbGl0KCdcXFxcXFxcXG4nKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB1cmxBcnJheSA9IGdldE15VmFyKCd1cmxBcnJheScpLnNwbGl0KCdcXFxcXFxcXG4nKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gbmFtZUFycmF5Lmxlbmd0aCA+IHVybEFycmF5Lmxlbmd0aCA/IG5hbWVBcnJheS5sZW5ndGggOiB1cmxBcnJheS5sZW5ndGg7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7IGkrKykge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBqaWV4aU5hbWUgPSBpID4gbmFtZUFycmF5Lmxlbmd0aCAtIDEgPyAn5pyq5ZG95ZCNJyA6IChuYW1lQXJyYXlbaV0gPT0gJycgPyAn5pyq5ZG95ZCNJyA6IG5hbWVBcnJheVtpXSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGppZXhpVXJsID0gaSA+IHVybEFycmF5Lmxlbmd0aCAtIDEgPyAn56m66Kej5p6QJyA6ICh1cmxBcnJheVtpXSA9PSAnJyA/ICfnqbrop6PmnpAnIDogdXJsQXJyYXlbaV0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheS5wdXNoKHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGppZXhpTmFtZSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogamlleGlVcmxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3N3aXRjaCcsICflhbMnKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+S/neWtmOaIkOWKn1xcXFxcXFwiXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB9KSxcXFxcclxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICB9XVxcXFxyXFxcXG4gICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoJ2FkZEZ1bmN0aW9uJywgYWRkQXJyYXkpO1xcXFxyXFxcXG4gICAgICAgICAgICBwdXRNeVZhcignc3dpdGNoJywgJ+W8gCcpO1xcXFxyXFxcXG4gICAgICAgIH1cXFxcclxcXFxuICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2ic3dpdGNo5Li6OicgKyBnZXRNeVZhcignc3dpdGNoJywgJ+W8gCcpXFxcXHJcXFxcbiAgICB9KSxcXFxcclxcXFxuICAgIGRlc2M6ICfnroDljZXjgIHml6Dlv6fjgIHni6znq4vnmoTop6PmnpDnrqHnkIblt6XlhbfvvIzlhbvogIHkuJPnlKgnLFxcXFxyXFxcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXFxcclxcXFxuICAgIGV4dHJhOiB7XFxcXHJcXFxcbiAgICAgICAgaWQ6ICdhZGRGdW5jdGlvbidcXFxcclxcXFxuICAgIH1cXFxcclxcXFxufSwge1xcXFxyXFxcXG4gICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxyXFxcXG59LCB7XFxcXHJcXFxcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXFxcXFwiIzZFQjg5N1xcXFxcXFwiPuivtOaYjjwvZm9udD4nLFxcXFxyXFxcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5JykucnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgIGxldCBkID0gW107XFxcXHJcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aVmeeoi+aWh+ahoycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB1cmw6J2h0dHBzOi8vd3d3Lnl1cXVlLmNvbS9jaGVueWluZy1rNzNzYy9saGN2cWQvYnNoNWUyJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwiZmxvYXQmJjEwMCVcXFxcXFxcIixcXFxcclxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnXFxcXHJcXFxcbiAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxcXHJcXFxcbiAgICAgICAgfSk7XFxcXHJcXFxcbiAgICB9KSxcXFxcclxcXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcclxcXFxufSwge1xcXFxyXFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi5YiH5o2i5o+S5Lu2XFxcXFxcXCIsXFxcXHJcXFxcbiAgICB1cmw6ICQoWyfprZTmlq0nLCAn5Yqp5omLJ10sIDIsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgIGlmIChpbnB1dCA9PSAn6a2U5patJykge1xcXFxyXFxcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzXFxcXFxcXCIsIEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvUGFyc2VfRG4uanM/cnVsZT1NeUZpZWxk4bSw4oG/XFxcXFxcXCIpKS5ydWxlKTtcXFxcclxcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/lvZPliY3mmK/prZTmlq3mqKHlvI9cXFxcXFxcIjtcXFxcclxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzXFxcXFxcXCIsIEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvZHVhbj9ydWxlPemFjee9ruWKqeaJi1xcXFxcXFwiKSkucnVsZSk7XFxcXHJcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5b2T5YmN5piv5Yqp5omL5qih5byPXFxcXFxcXCI7XFxcXHJcXFxcbiAgICAgICAgfVxcXFxyXFxcXG4gICAgfSksXFxcXHJcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCJcXFxcclxcXFxufSwge1xcXFxyXFxcXG4gICAgdGl0bGU6ICflr7zlhaXovoXliqknLFxcXFxyXFxcXG4gICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgaHRtbCA9IHJlcXVlc3QoJ2h0dHBzOi8vbmV0Y3V0LmNuL3AvYTVkMWM4ZTFlY2VlMjhkMycpO1xcXFxyXFxcXG4gICAgICAgIGRhdGEgPSBodG1sLm1hdGNoKC97Lipub3RlX2NvbnRlbnQuKnVwZGF0ZWRfYXQuKn0vKVswXTtcXFxcclxcXFxuICAgICAgICBjb250ZW50ID0gSlNPTi5wYXJzZShkYXRhKS5ub3RlX2NvbnRlbnQ7XFxcXHJcXFxcbiAgICAgICAgdXBEYXRhID0gSlNPTi5wYXJzZShkYXRhKS51cGRhdGVkX2F0O1xcXFxyXFxcXG4gICAgICAgIHB1dE15VmFyKCdjb250ZW50JywgY29udGVudCk7XFxcXHJcXFxcbiAgICAgICAgY29uZmlybSh7XFxcXHJcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn5piv5ZCm5a+85YWlJyxcXFxcclxcXFxuICAgICAgICAgICAgY29udGVudDogJ+iEmuacrOabtOaWsOaXpeacn1xcXFxcXFxcbicgKyB1cERhdGEsXFxcXHJcXFxcbiAgICAgICAgICAgIGNvbmZpcm06ICgpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRNeVZhcignY29udGVudCcpO1xcXFxyXFxcXG4gICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICBjYW5jZWw6ICgpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Llj5bmtojlr7zlhaUnO1xcXFxyXFxcXG4gICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgfSlcXFxcclxcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxyXFxcXG4gICAgfSksXFxcXHJcXFxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXHJcXFxcbn0sIHtcXFxcclxcXFxuICAgIHRpdGxlOiAn6Kej5p6Q5qih5p2/JyxcXFxcclxcXFxuICAgIHVybDogYGNvcHk6Ly/kv67mlLnimIXprZTmlq3pgJrnlKjmqKHmnb/imIVcXFxcclxcXFxuZnVuY3Rpb24gKHZpcFVybCkge1xcXFxyXFxcXG4gICAgLy8g5q2j5bi46LCD55SoLeW8ueW5leW8gOWFs+WcqOmFjee9ruWKqeaJi+mHjOiHquihjOiuvue9ruaYr+WQpuWQr+eUqFxcXFxyXFxcXG4gICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXFxcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcXFxyXFxcXG4gICAgLyrlhY3ll4Xpppblj5HmqKHlvI9cXFxcclxcXFxuICAgIOWmguaenOaDs+imgeWunueOsOexu+S8vOmtlOaWreeahOWXheaOouS8mOWFiO+8muWFjeWXheWKoHg144CBSnNvbuWkmue6v+i3r+eahOW9ouW8j++8jOWPguiAg+azqOmHiueahOekuuS+i+S7o+eggea3u+WKoOWFjeWXheS7o+egge+8iOWPquaYr+ekuuS+i+W5tuS4jeWPr+eUqO+8ie+8jOW5tuWcqOacgOe7iOi/lOWbnueahOaXtuWAmemhuuW6j+WkmuS8oOWFpeS4pOS4quWPguaVsO+8muS4gOS4quaYr+WFjeWXheW+l+WIsOeahOaSreaUvuWcsOWdgO+8jOS4gOS4quaYr+i/meS4quino+aekOaIlue6v+i3r+eahOWQjeWtl1xcXFxyXFxcXG4gICAgdmFyIHBhcnNlID0gXFxcXFxcXCJodHRwczovL3BsYXllci5keHl5LmNmL1duZGV4eFgucGhwP3VybD1cXFxcXFxcIjtcXFxcclxcXFxuICAgIGJmdXJsID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPUFQSeebkuWtkFxcXFxcXFwiKS5wYXJzZUxMUShwYXJzZSwgdmlwVXJsKTtcXFxcclxcXFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFxcXFxcIikubXVsUGFyc2UodmlwVXJsLCBiZnVybCwgJ2xscScpICsgXFxcXFxcXCI7e1VzZXItQWdlbnRAJiZSZWZlcmVyQH1cXFxcXFxcIjtcXFxcclxcXFxuICAgICovXFxcXHJcXFxcbn1gLFxcXFxyXFxcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxyXFxcXG59LCB7XFxcXHJcXFxcbiAgICB0aXRsZTogJ+a6kOeggee8lui+kScsXFxcXHJcXFxcbiAgICB1cmw6IFxcXFxcXFwiZWRpdEZpbGU6Ly9oaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvblxcXFxcXFwiLFxcXFxyXFxcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxyXFxcXG59LCB7XFxcXHJcXFxcbiAgICB0aXRsZTogJ+WvvOWHuumFjee9ricsXFxcXHJcXFxcbiAgICB1cmw6ICdzaGFyZTovL2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyxcXFxcclxcXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcclxcXFxufSwge1xcXFxyXFxcXG4gICAgdGl0bGU6ICfkupHmnb/liIbkuqsnLFxcXFxyXFxcXG4gICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxyXFxcXG4gICAgICAgIGNvcHkoXFxcXFxcXCLliqnmiYvop6PmnpDlr7zlhaXlj6Pku6TCpcKlXFxcXFxcXCIrc2hhcmVQYXN0ZShzZXRGaWxlKSk7XFxcXHJcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXFxcclxcXFxuICAgIH0pLFxcXFxyXFxcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxyXFxcXG59LCB7XFxcXHJcXFxcbiAgICB0aXRsZTogJ+S6keadv+WvvOWFpScsXFxcXHJcXFxcbiAgICB1cmw6ICQoJycsICflr7zlhaXmk43kvZzlsIbkvJropobnm5bljp/mnInphY3nva7vvIzor7foh6rooYzlpIfku70nKS5pbnB1dCgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC/liqnmiYvop6PmnpDlr7zlhaXlj6Pku6TCpcKlLykpIHtcXFxcclxcXFxuICAgICAgICAgICAgc2V0RmlsZT1pbnB1dC5zcGxpdCgnwqXCpScpWzFdO1xcXFxyXFxcXG4gICAgICAgICAgICB2YXIgY29udGVudCA9IHBhcnNlUGFzdGUoc2V0RmlsZSk7XFxcXHJcXFxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIGNvbnRlbnQpO1xcXFxyXFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcclxcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/lr7zlhaXmiJDlip9cXFxcXFxcIlxcXFxyXFxcXG4gICAgICAgIH1lbHNle1xcXFxyXFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WPo+S7pOmUmeivr1xcXFxcXFwiXFxcXHJcXFxcbiAgICAgICAgfVxcXFxyXFxcXG4gICAgfSksXFxcXHJcXFxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXHJcXFxcbn0sIHtcXFxcclxcXFxuICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcclxcXFxufSwge1xcXFxyXFxcXG4gICAgdGl0bGU6IGdldE15VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfphY3nva4nID8gJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPXJlZD7phY3nva48L2ZvbnQ+JyA6ICfphY3nva4nLFxcXFxyXFxcXG4gICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgcHV0TXlWYXIoJ21vZGUnLCAn6YWN572uJyk7XFxcXHJcXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXHJcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXFxcclxcXFxuICAgIH0pLFxcXFxyXFxcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxyXFxcXG59LCB7XFxcXHJcXFxcbiAgICB0aXRsZTogZ2V0TXlWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+aJuemHj+WIoOmZpCcgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPuaJuemHj+WIoOmZpDwvZm9udD4nIDogJ+aJuemHj+WIoOmZpCcsXFxcXHJcXFxcbiAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcclxcXFxuICAgICAgICBwdXRNeVZhcignbW9kZScsICfmibnph4/liKDpmaQnKTtcXFxcclxcXFxuICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxcXHJcXFxcbiAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcXFxyXFxcXG4gICAgICAgIGNsZWFyTXlWYXIoJ2RlbE51bScpO1xcXFxyXFxcXG4gICAgICAgIGNsZWFyTXlWYXIoJ2RlbEFycmF5Jyk7XFxcXHJcXFxcbiAgICAgICAgY2xlYXJNeVZhcignZGVsTnVtJyk7XFxcXHJcXFxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcXFxyXFxcXG4gICAgICAgICAgICBjbGVhck15VmFyKCdpc0Nob29zZScgKyBpKTtcXFxcclxcXFxuICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXHJcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXFxcclxcXFxuICAgIH0pLFxcXFxyXFxcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxyXFxcXG59LCB7XFxcXHJcXFxcbiAgICB0aXRsZTogZ2V0TXlWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+ino+aekOa1i+ivlScgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPuino+aekOa1i+ivlTwvZm9udD4nIDogJ+ino+aekOa1i+ivlScsXFxcXHJcXFxcbiAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcclxcXFxuICAgICAgICBwdXRNeVZhcignbW9kZScsICfop6PmnpDmtYvor5UnKTtcXFxcclxcXFxuICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcclxcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxyXFxcXG4gICAgfSksXFxcXHJcXFxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXHJcXFxcbn0sIHtcXFxcclxcXFxuICAgIHRpdGxlOiByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpID09ICd0cnVlJyA/ICflvLnluZU65byAJyA6ICflvLnluZU65YWzJyxcXFxcclxcXFxuICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgIHZhciBkbVN3aXRjaCA9IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0Jyk7XFxcXHJcXFxcbiAgICAgICAgaWYgKGRtU3dpdGNoID09ICd0cnVlJykge1xcXFxyXFxcXG4gICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAnZmFsc2UnKTtcXFxcclxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAndHJ1ZScpO1xcXFxyXFxcXG4gICAgICAgIH1cXFxcclxcXFxuICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcclxcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxyXFxcXG4gICAgfSksXFxcXHJcXFxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXHJcXFxcbn0pO1xcXFxyXFxcXG50cnkge1xcXFxyXFxcXG4gICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxyXFxcXG4gICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcXFxyXFxcXG4gICAgaWYgKGdldE15VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfphY3nva4nKSB7XFxcXHJcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcclxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxyXFxcXG4gICAgICAgIH0sIHtcXFxcclxcXFxuICAgICAgICAgICAgdGl0bGU6ICfljrvph43pmaTnmb0nLFxcXFxyXFxcXG4gICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdsYXN0Q2xlYW4nLCBjb25maWdBcnJheSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBuZXdBcnJheSA9IFtdO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgbnVtID0gMDtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoY29uZmlnQXJyYXlbaV0udXJsLCAnMCcpICE9ICcxJyAmJiBjb25maWdBcnJheVtpXS51cmwgIT0gJ+epuuino+aekCcgJiYgY29uZmlnQXJyYXlbaV0udXJsICE9IHVuZGVmaW5lZCkge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdBcnJheS5wdXNoKGNvbmZpZ0FycmF5W2ldKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoY29uZmlnQXJyYXlbaV0udXJsLCAnMScpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bSsrO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KG5ld0FycmF5KSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBKU09OLnBhcnNlKGdldE15VmFyKCdsYXN0Q2xlYW4nLCAnW10nKSkuZm9yRWFjaChpdGVtID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0udXJsKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+acrOasoeWOu+mHjeaVsOmHj+S4ulxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFwiICsgbnVtO1xcXFxyXFxcXG4gICAgICAgICAgICB9KSxcXFxcclxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxyXFxcXG4gICAgICAgIH0sIHtcXFxcclxcXFxuICAgICAgICAgICAgdGl0bGU6ICfljaDkvY3nrKblpITnkIYnLFxcXFxyXFxcXG4gICAgICAgICAgICB1cmw6ICQoWyfmt7vliqAnLCAn5Y676ZmkJ10sIDIsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5re75YqgJykge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnQXJyYXlbaV0udXJsLm1hdGNoKC9cXFxcXFxcXD91cmw9LykpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnVybCA9IGNvbmZpZ0FycmF5W2ldLnVybC5yZXBsYWNlKCc/dXJsPScsICc/cGxhY2Vob2xkZXI9JnVybD0nKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFxcXFxcP3BsYWNlaG9sZGVyPSZ1cmw9LykpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnVybCA9IGNvbmZpZ0FycmF5W2ldLnVybC5yZXBsYWNlKCc/cGxhY2Vob2xkZXI9JnVybD0nLCAnP3VybD0nKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5aSE55CG5oiQ5YqfXFxcXFxcXCI7XFxcXHJcXFxcbiAgICAgICAgICAgIH0pLFxcXFxyXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXHJcXFxcbiAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcXFxyXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiM2RUI4OTdcXFxcXFxcIj4nICsgaSArICc8L3NwYW4+LScgKyBjb25maWdBcnJheVtpXS5uYW1lLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogY29uZmlnQXJyYXlbaV0udXJsLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFsn57yW6L6RJywgJ+enu+S9jScsICfliKDpmaQnXSwgMywgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoaSwgY29uZmlnQXJyYXkpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+e8lui+kScpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnID0gY29uZmlnQXJyYXlbaV0ubmFtZSArICcsJyArIGNvbmZpZ0FycmF5W2ldLnVybDtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoY29uZmlnKS5pbnB1dCgoaSwgY29uZmlnQXJyYXkpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaW5wdXQuc3BsaXQoLyx877yMLylbMF0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpbnB1dC5zcGxpdCgvLHzvvIwvKVsxXVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXkuc3BsaWNlKGksIDEsIGl0ZW0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5pu05paw5oiQ5YqfXFxcXFxcXCJcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSwgY29uZmlnQXJyYXkpXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn56e75L2NJykge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnMCcsICfkvaDmg7PmjpLnrKzlh6DvvJ/luo/lj7fku44w5byA5aeLficpLmlucHV0KChpLCBjb25maWdBcnJheSkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID4gY29uZmlnQXJyYXkubGVuZ3RoIC0gMSkge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0ID0gY29uZmlnQXJyYXkubGVuZ3RoIC0gMTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPCAwKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSAwO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGNvbmZpZ0FycmF5W2ldO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiBpbnB1dCkge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gaTsgaW5kZXggPiBpbnB1dDsgaW5kZXgtLSkge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpbmRleF0gPSBjb25maWdBcnJheVtpbmRleCAtIDFdO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBpOyBpbmRleCA8IGlucHV0OyBpbmRleCsrKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2luZGV4XSA9IGNvbmZpZ0FycmF5W2luZGV4ICsgMV07XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaW5wdXRdID0gdGVtcDtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+enu+S9jeaIkOWKn1xcXFxcXFwiXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGksIGNvbmZpZ0FycmF5KVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5LnNwbGljZShpLCAxKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WIoOmZpOaIkOWKn1xcXFxcXFwiXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgfSwgaSwgY29uZmlnQXJyYXkpLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXHJcXFxcbiAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgIH1cXFxcclxcXFxuICAgIH0gZWxzZSBpZiAoZ2V0TXlWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+aJuemHj+WIoOmZpCcpIHtcXFxcclxcXFxuICAgICAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIoOmZpFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6cmVkXFxcXFxcXCI+JyArIGdldE15VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTmnaHop6PmnpAnLFxcXFxyXFxcXG4gICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignZGVsTnVtJywgJzAnKSA9PSAnMCcpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6K+35YWI6YCJ5oup6KaB5Yig6Zmk55qE6Kej5p6Q77yBJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ2RlbEFycmF5JykpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhkZWxBcnJheSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBuZXdBcnJheSA9IFtdO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWxBcnJheS5pbmNsdWRlcyhpKSkge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkucHVzaChjb25maWdBcnJheVtpXSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkobmV3QXJyYXkpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdkZWxOdW0nKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdkZWxBcnJheScpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2RlbE51bScpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcignaXNDaG9vc2UnICsgaSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5om56YeP5Yig6Zmk5oiQ5YqfXFxcXFxcXCJcXFxcclxcXFxuICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgfSksXFxcXHJcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXHJcXFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBpZDogJ2RlbEJ0bidcXFxcclxcXFxuICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgIGluZGV4ID0gMDtcXFxcclxcXFxuICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiM2RUI4OTdcXFxcXFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpbmRleCwgaXRlbSkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpID09ICd5ZXMnKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhpbmRleCk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5ID0gSlNPTi5wYXJzZShnZXRNeVZhcignZGVsQXJyYXknLCAnW10nKSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbE51bSA9IE51bWJlcihnZXRNeVZhcignZGVsTnVtJywgJzAnKSkgLSAxO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheS5wb3AoaW5kZXgpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignZGVsQXJyYXknLCBkZWxBcnJheSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdkZWxOdW0nLCBkZWxOdW0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjojNkVCODk3XFxcXFxcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tJyArIGl0ZW0ubmFtZSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2RlbEJ0bicsIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6ZmkXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjpyZWRcXFxcXFxcIj4nICsgZ2V0TXlWYXIoJ2RlbE51bScsICcwJykgKyAnPC9zcGFuPlxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOadoeino+aekCdcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ25vJyk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkgPSBKU09OLnBhcnNlKGdldE15VmFyKCdkZWxBcnJheScsICdbXScpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsTnVtID0gTnVtYmVyKGdldE15VmFyKCdkZWxOdW0nLCAnMCcpKSArIDE7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5LnB1c2goaW5kZXgpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZGVsQXJyYXkpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignZGVsQXJyYXknLCBkZWxBcnJheSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdkZWxOdW0nLCBkZWxOdW0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjpyZWRcXFxcXFxcIj4nICsgaW5kZXggKyAnLScgKyBpdGVtLm5hbWUgKyAnPC9zcGFuPicsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdkZWxCdG4nLCB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIoOmZpFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6cmVkXFxcXFxcXCI+JyArIGdldE15VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTmnaHop6PmnpAnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignaXNDaG9vc2UnICsgaW5kZXgsICd5ZXMnKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICB9LCBpbmRleCwgaXRlbSksXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCArICcnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgICAgICBpbmRleCsrO1xcXFxyXFxcXG4gICAgICAgIH0pO1xcXFxyXFxcXG4gICAgfSBlbHNlIGlmIChnZXRNeVZhcignbW9kZScsICfphY3nva4nKSA9PSAn6Kej5p6Q5rWL6K+VJykge1xcXFxyXFxcXG4gICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXFxcclxcXFxuICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxcXHJcXFxcbiAgICAgICAgY29uZmlnQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgamlleGkgPSBpdGVtLnVybDtcXFxcclxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUgKyAnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx04oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcXFxcXCIjNkVCODk3XFxcXFxcXCI+PHNtYWxsPuKeruWJjeW+gOa1i+ivlTwvc21hbGw+PC9mb250PicsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBpdGVtLnVybCxcXFxcclxcXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLnJ1bGUoKGppZXhpKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+e8lui+kea1i+ivlemTvuaOpScsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2VkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+W8ueW5lTonICsgZ2V0TXlWYXIoJ2RtU3dpdGNoJywgJ+WFsycpLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignZG1Td2l0Y2gnLCAn5YWzJykgPT0gJ+WFsycpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignZG1Td2l0Y2gnLCAn5byAJyk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdkbVN3aXRjaCcsICflhbMnKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2RtU3dpdGNoJywge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5by55bmVOicgKyBnZXRNeVZhcignZG1Td2l0Y2gnLCAn5YWzJyksXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2RtU3dpdGNoJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvY2VzaGkuanNvbicpKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlc2hpRGF0YSA9IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfohb7orq/op4bpopEnOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS8zLzEwNl8zYTBkMjEyZTE3Y2I5NWUyMzJmZmUxNTU0NjAzODVjYl9jb25fMTMweDEzMC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdi5xcS5jb20veC9jb3Zlci9temMwMDIwMHJtcGFmNDAvbjAwMzZsNHRudGMuaHRtbCdcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5LyY6YW3Jzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTYvOS8xMTBfOGZmMDZlMGMyMzc3NjBjZDU3ZDI1MDhmZDk4Yzg0MTRfY29uXzEzMHgxMzAucG5nJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YueW91a3UuY29tL3Zfc2hvdy9pZF9YTkRjME1ERTFOVGsxTWc9PS5odG1sJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfniLHlpYfoibonOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8wOS84LzExMF85MDFmMmVmMzdhZjJmZWEyNWU1ZDk2NDhmNTUxY2UzMV9jb25fMTMweDEzMC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly93d3cuaXFpeWkuY29tL3ZfMmdhOHp0czg2eXMuaHRtbCdcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6IqS5p6cVFYnOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS82LzExMF8xODM0ZDI5NmFhNWI1NjY2YTdkOTRiMWUzNDc5YWU2NF9jb25fMTMweDEzMC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly93d3cubWd0di5jb20vYi8zNDkyNTMvMTA0MjQzMDAuaHRtbCdcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5ZOU5ZOp5ZOU5ZOpJzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMjcvNC8xMTBfOGUyZTNkODhjNDUwMjViMzgwZTY5ODE3ZDZmYjUzYjFfY29uXzEzMHgxMzAucG5nJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20uYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcDQyODk5MydcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5pCc54uQ6KeG6aKRJzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvOS8xMTBfNTMyYTUxZjg0MzFlZmMzNzc4MDhjMWZmZmYyZGEzNmZfY29uXzEzMHgxMzAucG5nJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20udHYuc29odS5jb20vdjczMjk0NDEuc2h0bWwnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfopb/nk5zop4bpopEnOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8yNy81LzExMF9hODYyNjU4ODJlZDE4YzYxOTA1NjZlOWVhMjVmOTY5OF9jb25fMTMweDEzMC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vd3d3Lml4aWd1YS5jb20vNjY5OTM1Njc5MjkwNTc5NDA1NSdcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5LmQ6KeGJzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvOC8yXzM1YjVkNDM3M2Y0YmNiYTI4ZjM5NDg2ZTRmMTE2NGQ5X2Nvbl8xMzB4MTMwLnBuZycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tLmxlLmNvbS92cGxheV83Njk1NDMzMy5odG1sP2Zyb209YWpheCcsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzE5MDUnOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xOC80LzExMF81ZjI0YjEwNTJmZWQ0ZjdmYzczNTkzYThlZjI3Mjc2ZF9jb25fMTMweDEzMC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdmlwLjE5MDUuY29tL20vcGxheS8xNDI5NzI1LnNodG1sJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpo47ooYzop4bpopEnOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNi80LzExMF82ZjZhZjlmOTliMjYyOWU1MWYwYjBhMzNjZGZmMWQ5ZV9jb25fMTMweDEzMC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly9tLmZ1bi50di9tcGxheS8/bWlkPTk1NzE5J1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQUFRW6KeG6aKRJzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMjgvNS8xMTBfYTQ1NWIyOTUxMjI3MDQwZWU2Mjk1NWVkY2ZiODlkNzJfY29uXzEzMHgxMzAucG5nJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YucHB0di5jb20vc2hvdy96Vm4zZEpYdDF4VjQ5bDQuaHRtbCdcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6b6Z6IW+Jzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS80LnBuZycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnTFQtMWVjM2Y2NzU0ZjY4NTg2ZWQ3ZjkyYzNlOTk1Y2ZjYTYnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S6uuS6uui/tyc6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNi5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3JlbnJlbm1pLWFiOTI0ZTExZDJkNjkzOTcnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S6lOavkic6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvMzAucG5nJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd3dWR1eXVuLTE2NDk0MzEzMDcwMjEnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+WkmuWkmic6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNDkucG5nJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20zdTguY2FjaGUuc3VveW8uY2MvbTN1OC8yMDIyMDMvOC9hYWFiZDkyZGEyNjc3NGM2ODg1MGEwMjMxNTNjODBmMWFlNmZhOWJlLm0zdTgnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+iejeWFtCc6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvODAucG5nJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdSb25nWGluZ1ZSLTQyMTU2NDU1ODE5MzInXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+mbquS6uic6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8xMzMucG5nJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd4dWVyZW4tMTY0NjgyMzA3MidcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5peL6aOO5LqRJzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS81NC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3hmeS01MjllNjQ1Nzk1M2Q1NDVmJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfnkZ7kuLDotYTmupAnOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzcyLnBuZycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly8xLnJ1aWZlbmdsYi5jb20vcGxheS8xNjQ0OTE0NTk1Lm0zdTgnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY2VzaGlEYXRhKSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGNlc2hpRGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJykpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gY2VzaGlEYXRhKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcCxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogY2VzaGlEYXRhW3Byb3BdLnBpYyArICdAUmVmZXJlcj0nLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGNlc2hpRGF0YSwgcHJvcCwgamlleGkpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXBVcmwgPSBjZXNoaURhdGFbcHJvcF0udXJsO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHMgPSBbXFxcXFxcXCJ2aWRlbzovL1xcXFxcXFwiICsgamlleGkgKyB2aXBVcmxdO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzID0gWyfmtYvor5UnXVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignZG1Td2l0Y2gnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS92aWRlb0RtLmpzP3J1bGU9ZG3nm5LlrZBcXFxcXFxcIikuZ2V0Rm9yKHZpcFVybCwgdXJscywgbmFtZXMpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInZpZGVvOi8vXFxcXFxcXCIgKyBqaWV4aSArIHZpcFVybDtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBjZXNoaURhdGEsIHByb3AsIGppZXhpKSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl80J1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmtYvor5UnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn5L2g6L+Y5Y+v5Lul5Lu75oSP6L6T5YWl5LiA5Liq6KeG6aKR5Zyw5Z2A5rWL6K+V5b2T5YmN6Kej5p6QficsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoamlleGkpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcFVybCA9IGdldE15VmFyKCdjZXNoaUxpbmsnKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHMgPSBbXFxcXFxcXCJ2aWRlbzovL1xcXFxcXFwiICsgamlleGkgKyB2aXBVcmxdO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBbJ+a1i+ivlSddXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ2RtU3dpdGNoJywgJ+WFsycpID09ICflvIAnKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS92aWRlb0RtLmpzP3J1bGU9ZG3nm5LlrZBcXFxcXFxcIikuZ2V0Rm9yKHZpcFVybCwgdXJscywgbmFtZXMpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ2aWRlbzovL1xcXFxcXFwiICsgamlleGkgKyB2aXBVcmw7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGppZXhpKSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0TXlWYXIoJ2Nlc2hpTGluaycsaW5wdXQpXFxcXFxcXCIsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBzZXRIb21lUmVzdWx0KGQpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfSwgamlleGkpLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXHJcXFxcbiAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgIH0pO1xcXFxyXFxcXG4gICAgfVxcXFxyXFxcXG59IGNhdGNoIChlKSB7XFxcXHJcXFxcbiAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgIHRpdGxlOiAn6YWN572u5paH5Lu25oiW5bey5o2f5Z2PficsXFxcXHJcXFxcbiAgICAgICAgZGVzYzogJ+eCueWHu+WJjeWOu+ajgOafpSzoi6Xmlofku7bnqbrnmb3liJnmlofku7blhoXovpPlhaVbXeWNs+WPr+mHjeeUnycsXFxcXHJcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImVkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFxcXFxcIixcXFxcclxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXHJcXFxcbiAgICB9KTtcXFxcclxcXFxufVxcXFxyXFxcXG5zZXRSZXN1bHQoZCk7XFxcXHJcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuiwg+eUqOi3r+eUsVxcXCIsXFxcInBhdGhcXFwiOlxcXCJtdWxQYXJzZVxcXCIsXFxcInJ1bGVcXFwiOlxcXCIvKlxcXFxyXFxcXG4gdmlwVXJsOuWumOe9keWcsOWdgDvov5Tlm57lgLxKU09O5qC85byP55qE5aSa57q/6Lev6KeG6aKR5Zyw5Z2AXFxcXHJcXFxcbuiwg+eUqOaOpeWPo++8miQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXFxcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcXFxyXFxcXG4gKi9cXFxcclxcXFxuJC5leHBvcnRzLm11bFBhcnNlID0gZnVuY3Rpb24gKHZpcFVybCxiZkxpbmssamlleGlOYW1lKSB7XFxcXHJcXFxcbiAgICBpZiAodmlwVXJsLmluZGV4T2YoJ2RvdWJhbicpICE9IC0xKSB7XFxcXHJcXFxcbiAgICAgICAgdmlwVXJsPXZpcFVybC5zcGxpdCgnP3B0YWc9JylbMF1cXFxcclxcXFxuICAgIH1cXFxcclxcXFxuICAgIGxvZygn6KeG6aKR5Y6f5Zyw5Z2A77yaJyt2aXBVcmwpO1xcXFxyXFxcXG4gICAgaWYgKGJmTGluayYmamlleGlOYW1lKSB7XFxcXHJcXFxcbiAgICAgICAgdmFyIHVybHMgPSBiZkxpbms7XFxcXHJcXFxcbiAgICAgICAgdmFyIG5hbWVzID0gamlleGlOYW1lO1xcXFxyXFxcXG4gICAgfWVsc2V7XFxcXHJcXFxcbiAgICAgICAgdmFyIHVybHMgPSBbXTtcXFxcclxcXFxuICAgICAgICB2YXIgbmFtZXMgPSBbXTtcXFxcclxcXFxuICAgIH1cXFxcclxcXFxuICAgIGxvZyhcXFxcXFxcIuWkmue6v+i3r+ino+aekOW8gOWni1xcXFxcXFwiKVxcXFxyXFxcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlYWRGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFxcXFxcIikpXFxcXHJcXFxcbiAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxcXHJcXFxcbiAgICAgICAgdXJscy5wdXNoKFxcXFxcXFwidmlkZW86Ly9cXFxcXFxcIiArIGl0ZW0udXJsICsgdmlwVXJsKTtcXFxcclxcXFxuICAgICAgICBuYW1lcy5wdXNoKGl0ZW0ubmFtZSk7XFxcXHJcXFxcbiAgICB9KTtcXFxcclxcXFxuICAgIGxvZyhg5b2T5YmN5ZCv55So6Kej5p6Q77yaJHt1cmxzLmxlbmd0aH3kuKpgKVxcXFxyXFxcXG4gICAgdmFyIGRtU3dpdGNoID0gcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKTtcXFxcclxcXFxuICAgIGlmIChkbVN3aXRjaCA9PSAndHJ1ZScpIHtcXFxcclxcXFxuICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvRG0uanM/cnVsZT1kbeebkuWtkFxcXFxcXFwiKS5nZXRGb3IodmlwVXJsLCB1cmxzLCBuYW1lcyk7XFxcXHJcXFxcbiAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxcXHJcXFxcbiAgICAgICAgICAgIHVybHM6IHVybHMsXFxcXHJcXFxcbiAgICAgICAgICAgIG5hbWVzOiBuYW1lc1xcXFxyXFxcXG4gICAgICAgIH0pO1xcXFxyXFxcXG4gICAgfVxcXFxyXFxcXG59XFxcXHJcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaWreaPkuaPkuS7tlxcXCIsXFxcInBhdGhcXFwiOlxcXCJkdWFuXFxcIixcXFwicnVsZVxcXCI6XFxcImZ1bmN0aW9uIGF5dG1QYXJzZSh2aXBVcmwpIHtcXFxcclxcXFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFxcXFxcIikubXVsUGFyc2UodmlwVXJsKTtcXFxcclxcXFxufVxcXFxyXFxcXG5cXFwifV1cIn0iLCJ0aXRsZSI6IuivtOaYjiJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement