xiaomianao666

小程序:哔哩Ⓡ新版.

Sep 6th, 2022
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔哩Ⓡ新版.@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6ImpzOlxubGV0IGh0bWwgPSBnZXRSZXNDb2RlKClcbi8vIGxvZyhodG1sKVxubGV0IHJlZ2V4ID0gL3dpbmRvd1xcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcKGZ1bmN0aW9uXFwoXFwpXFx7L1xuLy8gbG9nKE1ZX1VSTClcbmlmKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsJykpIHtcbiAgICBsZXQgY29kZSA9IEpTT04ucGFyc2UoaHRtbClcbiAgICB0cnkge1xuICAgICAgICBpZiAoY29kZS5kYXRhLlZpZXdbJ3JlZGlyZWN0X3VybCddKSB7XG4gICAgICAgICAgICBNWV9VUkwgPSBjb2RlLmRhdGEuVmlld1sncmVkaXJlY3RfdXJsJ107XG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxuICAgIH1cbn1cbi8vIGxvZyhodG1sKVxuaWYgKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5LycpICYmIHJlZ2V4LnRlc3QoaHRtbCkpIHtcbiAgICAvLyDnlarliadcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxuICAgIGxldCByZXN1bHQgPSByZXMubmV3ZXN0RXBcbiAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlcy5tZWRpYUluZm8ubmV3X2VwXG4gICAgfVxuICAgIHNldFJlc3VsdChcIuabtOaWsOiHs++8muesrFwiICsgcmVzdWx0LnRpdGxlICsgXCLor51cIilcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xuICAgIC8vIFVQIOS4u1xuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKGh0bWwpXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcbiAgICBzZXRSZXN1bHQoXCLmm7TmlrDoh7PvvJpcIiArIHJlc3VsdClcbn0gZWxzZSB7XG4gICAgc2V0UmVzdWx0KFwiXCIpXG59IiwidGl0bGUiOiLlk5Tlk6nik4fmlrDniYguIiwiYXV0aG9yIjoiMTYwNjE0MiZSeCZSZWJvcm4iLCJ1cmwiOiJoaWtlcjovL2VtcHR5I2Z5cGFnZSIsInZlcnNpb24iOjIyMDMwMTA0LCJjb2xfdHlwZSI6Im1vdmllXzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InZpZGVvIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2UvY29tbW9uXCIpKS5ydWxlKTsiLCJzZWFyY2hfdXJsIjoiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9zZWFyY2gvYWxsL3YyP2tleXdvcmQ9KiomcGFnZT1meXBhZ2UmcGFnZXNpemU9MjA7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDcuMO+8m++8myB3diBsaXRlIGJhaWR1Ym94YXBwKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzguMC4zOTA0Ljk2IE1vYmlsZSBTYWZhcmkvNTM3LjM2IFQ3LzEwLjMgU2VhcmNoQ3JhZnQvMi42LjIgKEJhaWR177yb77ybIFAxIDcuMCl9IiwiZ3JvdXAiOiLikablhbblroMiLCJzZWFyY2hGaW5kIjoianM6XG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2Uvc1wiKSkucnVsZSk7IiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMiIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoianM6XG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2UveWNsXCIpKS5ydWxlKTtcbi8v6YCa6L+H5pCc57Si5p+l55yL6Ieq5bex55qEdWlk77yM54S25ZCO5pu/5o2i5Y2z5Y+vXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcse30pKXtcbnB1dFZhcignc3RhcmlkJywnOTI4MTIzJyk7XG59ZWxzZXtcblxucHV0VmFyKCdzdGFyaWQnLGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcse30pKTtcbn1cbnB1dFZhcihcImFjY2Vzc19rZXlcIixmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpO1xuLy/oh6rlt7Hljrti56uZ5a6i5oi356uv6aaW6aG15oqT5YyF77yM5om+5YiwYXBwLmJpbGliaWxpLmNvbeW8gOWktOeahOmTvuaOpe+8jOeEtuWQjuaKimFjY2Vzc19rZXnnmoTlgLzloavlhaXkuIrmlrknPSflkI7pnaLljbPlj68iLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeS4gOe6p1wiLFwicGF0aFwiOlwiY29tbW9uXCIsXCJydWxlXCI6XCJ2YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIC8vLnJlcGxhY2UoJ20uYmlsaWJpbGkuY29tJywgJ3d3dy5iaWxpYmlsaS5jb20nKS5yZXBsYWNlKC9cXFxcPy9nLCAn77yf77yfJykucmVwbGFjZSgvXFxcXCYvZywgJ++8hu+8hicpXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+ino+aekCcsXFxuICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JysnaHR0cHM6Ly8nK2lucHV0LnNwbGl0KCdodHRwczovLycpWzFdKycjaW1tZXJzaXZlVGhlbWUjJ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXnvZHlnYDmiJbogIVi56uZ5aSN5Yi255qE6ZO+5o6lJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogJChcXFwi5pu05aSaXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2ltZzAuYmFpZHUuY29tL2l0L3U9MTYxMjEwMTQyMywxMTQ1OTgyMTYzJmZtPTI1MyZhcHA9MTM4JmY9SlBFRz93PTUwMCZoPTQyNCcsXFxuICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzEnLFxcbiAgICAgICAgZGVzYzpcXFwiMFxcXCJcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aOkuihjOamnCcsXFxuICAgICAgICB1cmw6ICQoXFxcIuaOkuihjOamnFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNTAucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55u05pKtJyxcXG4gICAgICAgIHVybDogJChcXFwi55u05pKtXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8yMi5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfml7blhYnmnLonLFxcbiAgICAgICAgdXJsOiAkKFxcXCLml7blhYnmnLpcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzU2LnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ1VQJyxcXG4gICAgICAgIHVybDogJChcXFwiVVDkuLtcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzk4LnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+e0ouW8lScsXFxuICAgICAgICB1cmw6ICQoXFxcIue0ouW8lVxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNDcucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5paw55WqJyxcXG4gICAgICAgIHVybDogJChcXFwi5paw55WqXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8yMy5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmvKvmuLgnLFxcbiAgICAgICAgdXJsOiAkKFxcXCLmvKvmuLhcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzgzLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eZu+W9lScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV3bG9naW4nLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJwaWNfMV9jYXJkXCIsXCJuYW1lXCI6XCLku6PnoIEt5o6S6KGM5qacXCIsXCJwYXRoXCI6XCJwaGJcIixcInJ1bGVcIjpcIi8v5YiG57G7XFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbnZhciBjMSA9ICdhbGwmYmFuZ3VtaSZndW9jaGFuJmRvdWdhJm11c2ljJmtub3dsZWRnZSZ0ZWNoJmNhciZsaWZlJmZvb2Qma2ljaGlrdSZmYXNoaW9uJmNpbmVwaGlsZSZvcmlnaW4mcm9va2llJmdhbWUmZW50JmRhbmNlJm1vdmllJnR2JmRvY3VtZW50YXJ5JmFuaW1hbCZndW9jaHVhbmcnO1xcbnZhciB3MSA9ICflhajpg6gm55Wq5YmnJuWbveWImybliqjnlLsm6Z+z5LmQJuefpeivhibnp5HmioAm5rG96L2mJueUn+a0uybnvo7po58m6ay855WcJuaXtuWwmiblvbHop4Ym5Y6f5YibJuaWsOS6uibmuLjmiI8m5aix5LmQJuiInui5iCbnlLXlvbEm55S16KeG5YmnJue6quW9leeJhybliqjnianlnIgm5Zu95Yib55u45YWzJztcXG52YXIgd29yZDEgPSB3MS5zcGxpdCgnJicpO1xcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcbnZhciBsYWIxID0gZ2V0VmFyKCdsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciBrZXkxID0gZ2V0VmFyKCdrZXkxJywgJ2FsbCcpO1xcblxcbiAgICBmb3IgKHZhciBpIGluIHdvcmQxKSB7XFxuICAgICAgICB2YXIgYSA9IHdvcmQxW2ldO1xcbiAgICAgICAgdmFyIGIgPSBjbGFzczFbaV07XFxuICAgICAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogIGEgPT0gbGFiMSA/IGdldEhlYWQoYSkgOiBhLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYykgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImxhYjFcXFwiLCBjLnNwbGl0KCcmJylbMF0pO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImtleTFcXFwiLCBjLnNwbGl0KCcmJylbMV0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9LCBjKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG4vL+WIhuexu1xcbi8vbG9nKE1ZX1BBR0UpXFxuXFxudmFyIHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdi9wb3B1bGFyL3JhbmsvYWxsJztcXG5cXG5NWV9VUkwgPSB1cmwucmVwbGFjZSgnYWxsJywgZ2V0VmFyKCdrZXkxJykpO1xcblxcbnZhciB5bSA9IHJlcXVlc3QoTVlfVVJMLCB7fSkucmVwbGFjZSgvXFxcXFxcXFx1MDAyRi9nLCAnLycpO1xcbmlmICh5bS5pbmNsdWRlcygncmFuay10aXBzJykpIHtcXG5cXG4gICAgLyrmj5DnpLrkv6Hmga9cXG4gICAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J+KAnOKAnCcrcGFyc2VEb21Gb3JIdG1sKHltLCcucmFuay10aXBzJiZUZXh0JykrJ+KAneKAnScsXFxuICAgICAgICBjb2xfdHlwZTondGV4dF8xJ1xcbiAgICAgIH0pO1xcbiAgICDmj5DnpLrkv6Hmga8qL1xcblxcbiAgICB2YXIgcGkgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFwicmFua0xpc3RcXFwiOicpWzFdLnNwbGl0KCcsXFxcInJhbmtOb3RlXFxcIicpWzBdKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IHBpICE9IG51bGwgJiYgaSA8IHBpLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gaSArIDE7XFxuICAgICAgICB2YXIgcSA9IEpTT04uc3RyaW5naWZ5KHBpW2ldKTtcXG4gICAgICAgIGlmICghcGlbaV0udXJsKSB7XFxuICAgICAgICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBwaVtpXS5idmlkO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgcnVybCA9IHBpW2ldLnVybDtcXG4gICAgICAgIH1cXG4gICAgICAgIFxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGlbaV0udGl0bGUsXFxuICAgICAgICAgICAgcGljX3VybDogcGlbaV0ucGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiAoIXEuaW5jbHVkZXMoJ25hbWUnKSA/IHBpW2ldLm5ld19lcC5pbmRleF9zaG93IDogKCd1cDogJyArIHBpW2ldLm93bmVyLm5hbWUpKSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgcnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2NhcmQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIC8qXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTonTm8uJytudW0rJ1xcXFxuXFxcXG7igJjigJg8c21hbGw+JytwaVtpXS50aXRsZSsnXFxcXG4nKyghcS5pbmNsdWRlcygnbmFtZScpP3BpW2ldLm5ld19lcC5pbmRleF9zaG93OigndXA6ICcrcGlbaV0ub3duZXIubmFtZSkpKyc8L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6cGlbaV0ucGljK1JlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGRlc2M6JzAnLFxcbiAgICAgICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrcnVybCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOidwaWNfMV9jYXJkJ1xcbiAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAqL1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCc6IqC5Yi25LiA54K577yM5LyR5oGv5ZWm77yB4oCd4oCdJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLXVw8J+Qt1wiLFwicGF0aFwiOlwidXBcIixcInJ1bGVcIjpcImNvbnN0IGhlYWRDb2xvciA9IFxcXCIjMzU4Y2NkXFxcIjtcXG5cXG4vL+aXtumXtOaIs+i9rOaNouaWueazlVxcbi8qXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcbiAgICAgcmV0dXJuIChZTUQpXFxufVxcbiovXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7XFxuICAgIHZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbiAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxuICAgIHZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJztcXG4gICAgdmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpO1xcbiAgICB2YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG4gICAgcmV0dXJuIHRpbWVcXG59XFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXCIsaW5wdXQpO3B1dFZhcigndXAnLCcnKTtwdXRWYXIoJ1VQJywnJyk7cHV0VmFyKCdzZXQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxuLy/ml7bpl7TmiLPovazmjaJcXG5cXG52YXIgdWlkID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLCB7fSk7XFxudmFyIFVQX1VSTCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD11aWQmcHM9MzAmdGlkPTAma2V5d29yZD0manNvbnA9anNvbnAmcG49JyArIHBhZ2VudW0gKyAnJm9yZGVyPXB1YmRhdGUnO1xcbnZhciB1cF91cmwgPSBVUF9VUkwucmVwbGFjZShcXFwidWlkXFxcIiwgdWlkKTtcXG52YXIgeHggPSBnZXRWYXIoJ2xiMicpLnNwbGl0KCdcXFxcbicpO1xcbi8v5pu05paw5aS05YOPXFxuZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICBpZiAoIXh4W2tdLnNwbGl0KCcjIycpWzFdKSB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgJyZqc29ucD1qc29ucCcsIHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nICsgeHhba10uc3BsaXQoJyYmJylbMV0gKyAnJm5lZWRfdG9wPTEnLCB7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIGZhY2UgPSB4eFtrXSArICcjIycgKyBwaWM7XFxuICAgICAgICB2YXIgZmFjZSA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwge30pLnJlcGxhY2UoeHhba10sIGZhY2UpO1xcbiAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwgZmFjZSk7XFxuICAgIH1cXG59XFxuXFxuXFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICB2YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxuICAgIGlmIChnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSAmJiBnZXRWYXIoJ3N0YXJpZCcpKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn5o6o6I2QJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+aOqOiNkCcsXFxuICAgICAgICAgICAgdXJsOiAn5o6o6I2QJyArIHNyLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn5pS26JePJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+aUtuiXjycsXFxuICAgICAgICAgICAgdXJsOiAn5pS26JePJyArIHNyLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+955WqJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+i/veeVqicsXFxuICAgICAgICAgICAgdXJsOiAn6L+955WqJyArIHNyLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+95YmnJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+i/veWJpycsXFxuICAgICAgICAgICAgdXJsOiAn6L+95YmnJyArIHNyLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgLy/oh6rlt7HnmoTlhbPms6hcXG4gICAgdmFyIHN0YXJqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpICsgJyZqc29ucD1qc29ucCcsIHt9KSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJyA/ICfimLrvuI8nIDogJycpICsgc3Rhcmpzb24uZGF0YS5uYW1lLFxcbiAgICAgICAgcGljX3VybDogc3Rhcmpzb24uZGF0YS5mYWNlICsgUmVmZXJlcixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignVVAnLCBnZXRWYXIoJ1VQJyk9PSflhbPms6gnPyfmipjlj6AnOiflhbPms6gnKTtwdXRWYXIoJ3NldCcsJycpO2NsZWFyVmFyKCdodG0nKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovLycrZ2V0VmFyKCdVUCcsJ+S4k+azqCcpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJ1xcbiAgICB9KTtcXG4gICAgLy/oh6rlt7HnmoTlhbPms6hcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAmOKAmFVQ4oCZ4oCZJyArICc8L3N0cm9uZz4nICsgKGdldFZhcigndXAnLCAn5oqY5Y+gJykgPT0gJ+WxleW8gCcgPyAn8J+ZiScgOiAn8J+ZiCcpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCd1cCcsIGdldFZhcigndXAnKT09J+WxleW8gCc/J+aKmOWPoCc6J+WxleW8gCcpO3B1dFZhcignc2V0JywnJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/lt7InK2dldFZhcigndXAnLCflsZXlvIAnKTtcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignc2V0JykgIT0gJycgPyAoZ2V0VmFyKCdzZXQnKSA9PSAn572u6aG2JyA/ICc8c3Ryb25nPicgKyAn4oCc4oCc572u6aG2JyArICc8L3N0cm9uZz4nIDogJzxzdHJvbmc+JyArICfigJzigJzlj5blhbPigJ3igJ0nICsgJzwvc3Ryb25nPicpIDogJ+iuvue9ricsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3NldCcsIGdldFZhcignc2V0Jywn5bGV5byAJyk9PSflj5blhbMnPyfnva7pobYnOiflj5blhbMnKTtwdXRWYXIoJ3VwJywnJyk7cHV0VmFyKCdVUCcsJycpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vJytnZXRWYXIoJ3NldCcsJ+WxleW8gCcpKydpbmd+J1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuXFxuICAgIGlmIChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcpIHtcXG4gICAgICAgIGlmIChnZXRWYXIoJ2h0bScpID09ICcnIHx8IGdldFZhcigndXAnKSA9PSAn5bGV5byAJykge1xcbiAgICAgICAgICAgIHZhciB1cmxzID0gW107XFxuICAgICAgICAgICAgdmFyIHN1cmwgPSAnaHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vaDUvZm9sbG93P3R5cGU9Zm9sbG93Jm1pZD0nICsgZ2V0VmFyKCdzdGFyaWQnKTtcXG4gICAgICAgICAgICB2YXIgaWQgPSBzdXJsLnNwbGl0KCdtaWQ9JylbMV07XFxuICAgICAgICAgICAgdmFyIGNvZGUgPSBmZXRjaChzdXJsLCB7fSk7XFxuICAgICAgICAgICAgdmFyIHN0YXJsaXN0ID0gSlNPTi5wYXJzZSgne1xcXCJteScgKyBjb2RlLnNwbGl0KCd7XFxcIm15JylbMV0uc3BsaXQoJ319OycpWzBdICsgJ319Jyk7XFxuXFxuICAgICAgICAgICAgdmFyIHN0YXJscyA9IHN0YXJsaXN0WydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJyArIGlkXVsncmVzdWx0J107XFxuICAgICAgICAgICAgZm9yICh4IGluIHN0YXJscykge1xcbiAgICAgICAgICAgICAgICB2YXIgeXVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD0nICsgc3RhcmxzW3hdLm1pZCArICcmcHM9MzAmdGlkPTAma2V5d29yZD0manNvbnA9anNvbnAmcG49ZnlwYWdlJm9yZGVyPXB1YmRhdGUnO1xcbiAgICAgICAgICAgICAgICB1cmxzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB5dXJsLnJlcGxhY2UoL2Z5cGFnZS9nLCAnMScpXFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnKVxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RhcmxzW3hdLnVuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogc3RhcmxzW3hdLmZhY2UgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9nejI/dXJsPScgKyB5dXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIC8v5YWz5rOo5YiX6KGoXFxuXFxuICAgIGlmIChnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcgJiYgZ2V0VmFyKCdVUCcpICE9ICflhbPms6gnKSB7XFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICovXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogc3QgKyB4eFtrXS5zcGxpdCgnJiYnKVswXSxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgeHhba10uc3BsaXQoJyYmJylbMV0gKyBgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3B1dFZhcjIoJ3VpZCcsaW5wdXQpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsaW5wdXQpO3B1dFZhcigndXAnLCfmipjlj6AnKTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcIjtgLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAvL+WPluWFs+ebuOWFs1xcblxcbiAgICBpZiAoZ2V0VmFyKCdzZXQnKSA9PSAn5Y+W5YWzJykge1xcblxcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICAgICAgICAgIHZhciBzdCA9IHVpZCA9PSB4eFtrXS5zcGxpdCgnJiYnKVsxXSA/ICfinJMnIDogJyc7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxuICAgICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcbiAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfinYwnICsgc3QgKyB4eFtrXS5zcGxpdCgnJiYnKVswXSxcXG4gICAgICAgICAgICAgICAgdXJsOiB4eFtrXSArIGBAbGF6eVJ1bGU9LmpzOnZhciBzYz1pbnB1dCsnXFxcXFxcXFxuJzt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJzt2YXIgeHo9eHIucmVwbGFjZShzYywnJyk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix4eik7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WPluWFs+aIkOWKn++8gemTgeWtkOWGjeingfCfpoYnYCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgLy/nva7pobbnm7jlhbNcXG5cXG4gICAgaWYgKGdldFZhcignc2V0JykgPT0gJ+e9rumhticpIHtcXG5cXG4gICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0gPyAn4pyTJyA6ICcnO1xcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4gICAgICAgICAgICAvKuWktOWDj+iOt+WPllxcbiAgICAgICAgICAgICAgICB0cnl7XFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+UnScgKyBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6IHh4W2tdICsgYEBsYXp5UnVsZT0uanM6dmFyIHNjPWlucHV0KydcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nO3ZhciB4ej14ci5yZXBsYWNlKHNjLCcnKTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHNjK3h6KTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v572u6aG25oiQ5Yqf8J+UnSdgLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcblxcbn1cXG4vL2QucHVzaCh7dGl0bGU6eHh9KTtcXG5pZiAoc190YWIgPT0gJ+aOqOiNkCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZmVlZFxcXCIpKS5ydWxlKTtcXG59IGVsc2UgaWYgKHNfdGFiID09ICfmlLbol48nKSB7XFxuICAgIGlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIikpLnJ1bGUpO1xcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+i/veWJpycpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZHNqXFxcIikpLnJ1bGUpXFxufSBlbHNlIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9mYW5qdVxcXCIpKS5ydWxlKVxcbn0gZWxzZSBpZiAoZ2V0VmFyKCdVUCcpICE9ICflhbPms6gnICYmIGdldFZhcigndXAnKSAhPSAn5bGV5byAJyAmJiBnZXRWYXIoJ3NldCcpID09ICcnKSB7XFxuICAgIHZhciBqc29uID0ge307XFxuICAgIGV2YWwoJ2pzb249JyArIGZldGNoKHVwX3VybCwge30pKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC52bGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgdmFyIHIgPSB7fTtcXG4gICAgICAgIHZhciBqID0ganNvbi5kYXRhLmxpc3Qudmxpc3RbaV07XFxuICAgICAgICB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpICogMTAwMDtcXG5cXG5cXG4gICAgICAgIHZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcblxcbiAgICAgICAgaWYgKGoucGxheSA+IDEwMDAwKVxcbiAgICAgICAgICAgIHZhciBwbGF5ID0gKGoucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxuICAgICAgICBlbHNlXFxuICAgICAgICAgICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuXFxuICAgICAgICB2YXIgcGljcyA9IChqLnBpYy5pbmRleE9mKCc6JykgIT0gLTEpID8gai5waWMgOiAnaHR0cHM6JyArIGoucGljO1xcblxcbiAgICAgICAgci5waWNfdXJsID0gcGljcyArIFJlZmVyZXI7XFxuICAgICAgICByLnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJztcXG4gICAgICAgIHIudGl0bGUgPSBqLnRpdGxlO1xcbiAgICAgICAgci5jb2xfdHlwZSA9ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYyc7XFxuICAgICAgICByLmRlc2MgPSAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDlj5HluIPml6XmnJ/vvJonICsgdGltZTtcXG4gICAgICAgIGlmIChqLmxlbmd0aCAhPSBcXFwiMDA6MDBcXFwiKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHIpXFxuICAgICAgICB9O1xcbiAgICB9XFxufSBlbHNlIGlmIChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcgJiYgZ2V0VmFyKCd1cCcpICE9ICflsZXlvIAnKSB7XFxuXFxuICAgIGlmIChnZXRWYXIoJ2h0bScpID09ICcnKSB7XFxuICAgICAgICBodG0gPSBbXTtcXG4gICAgICAgIHZhciB5bSA9IGJhdGNoRmV0Y2godXJscykubWFwKGZ1bmN0aW9uKGEpIHtcXG4gICAgICAgICAgICB2YXIgaCA9IEpTT04ucGFyc2UoYSkuZGF0YS5saXN0LnZsaXN0O1xcbiAgICAgICAgICAgIGh0bSA9IGh0bS5jb25jYXQoaCk7XFxuICAgICAgICB9KTtcXG4gICAgICAgIGh0bSA9IGh0bS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXG4gICAgICAgICAgICByZXR1cm4gYi5jcmVhdGVkIC0gYS5jcmVhdGVkO1xcbiAgICAgICAgfSkubWFwKGZ1bmN0aW9uKGEpIHtcXG4gICAgICAgICAgICBhLmNyZWF0ZWQgPSBnZXRMb2NhbFRpbWUoTnVtYmVyKGEuY3JlYXRlZCkgKiAxMDAwKTtcXG4gICAgICAgICAgICByZXR1cm4gYVxcbiAgICAgICAgfSk7XFxuICAgICAgICBwdXRWYXIoJ2h0bScsIEpTT04uc3RyaW5naWZ5KGh0bSkpO1xcbiAgICB9IGVsc2UgaHRtID0gSlNPTi5wYXJzZShnZXRWYXIoJ2h0bScpKTtcXG4gICAgdmFyIGkgPSAwO1xcbiAgICB2YXIgayA9IDA7XFxuICAgIHZhciByID0gbmV3IERhdGUoKTtcXG4gICAgdmFyIE0gPSByLmdldE1vbnRoKCkgKyAxO1xcbiAgICB2YXIgdEQgPSByLmdldEZ1bGxZZWFyKCkgKyAnLScgKyAoTSA8IDEwID8gKCcwJyArIE0pIDogTSkgKyAnLScgKyAoci5nZXREYXRlKCkgPCAxMCA/ICgnMCcgKyByLmdldERhdGUoKSkgOiByLmdldERhdGUoKSk7XFxuXFxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgaHRtLmxlbmd0aDsgaisrKSB7XFxuICAgICAgICB0cnkge1xcblxcbiAgICAgICAgICAgIGlmIChqICE9IDAgJiYgaHRtW2ogLSAxXS5jcmVhdGVkICE9IGh0bVtqXS5jcmVhdGVkKSBpKys7XFxuXFxuICAgICAgICAgICAgaWYgKGkgKyAxID09IE1ZX1VSTC5zcGxpdCgnIycpWzFdKSB7XFxuICAgICAgICAgICAgICAgIGlmIChrID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRlID0gaHRtW2pdLmNyZWF0ZWQ7XFxuICAgICAgICAgICAgICAgICAgICBrKys7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0ZSA9PSB0RCkgZGF0ZSA9ICc8c3Ryb25nPuS7iuWkqTwvc3Ryb25nPic7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9XFxcIiMzNThjY2RcXFwiPicgKyBkYXRlICsgJzxcXFxcZm9udD4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy91cmw6YEBsYXp5UnVsZT0uanM6Y2xlYXJWYXIoJ2h0bScpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/liLfmlrDmiJDlip8nO2BcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChodG1bal0ucGxheSA+IDEwMDAwKVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXkgPSAoaHRtW2pdLnBsYXkgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICAgICAgICAgICAgICBlbHNlXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcGxheSA9IGh0bVtqXS5wbGF5O1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGh0bVtqXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogKChodG1bal0ucGljLmluZGV4T2YoJzonKSAhPSAtMSkgPyBodG1bal0ucGljIDogKCdodHRwczonICsgaHRtW2pdLnBpYykpICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6ICdVUDonICsgaHRtW2pdLmF1dGhvciArICcgIOaXtumVv++8micgKyBodG1bal0ubGVuZ3RoICsgJ1xcXFxu5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDlj5HluIPml6XmnJ/vvJonICsgaHRtW2pdLmNyZWF0ZWQsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGh0bVtqXS5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpICsgMSA+IE1ZX1VSTC5zcGxpdCgnIycpWzFdKSB7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgIH1cXG5cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5pe25YWJ8J+QlFwiLFwicGF0aFwiOlwic2dqXCIsXCJydWxlXCI6XCIvL+WIhuexu1xcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbnZhciBjMiA9ICcyMiYyMTImNzEmMTgyJjEzOCYyOCYzMyYxODUnO1xcblxcbnZhciB3MiA9ICfprLznlZwm576O6aOfJue7vOiJuiblvbHop4Ym55Sf5rS7Jumfs+S5kCbnlarliacm55S16KeG5YmnJztcXG5cXG52YXIgd29yZDIgPSB3Mi5zcGxpdCgnJicpO1xcbnZhciBjbGFzczIgPSBjMi5zcGxpdCgnJicpO1xcbnZhciBsYWIyID0gZ2V0VmFyKCdsYWIyJywgJ+msvOeVnCcpO1xcbnZhciBrZXkyID0gZ2V0VmFyKCdrZXkyJywgJzIyJyk7XFxuZm9yICh2YXIgaSBpbiB3b3JkMil7XFxuICAgIHZhciBhID0gd29yZDJbaV07XFxuICAgIHZhciBiID0gY2xhc3MyW2ldO1xcbiAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICBkLnB1c2goe1xcbiAgICB0aXRsZTogYT09bGFiMj8gZ2V0SGVhZChhKTphLFxcbiAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGMpPT57XFxuICAgICAgICBwdXRWYXIoXFxcImxhYjJcXFwiLGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICBwdXRWYXIoXFxcImtleTJcXFwiLGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIGMpLFxcbiAgICBjb2xfdHlwZTonc2Nyb2xsX2J1dHRvbidcXG4gICAgfSk7XFxufVxcbn1cXG4vL+WIhuexu1xcblxcbnZhciBtID0gTnVtYmVyKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dFxcXCIse30pKTtcXG52YXIgdCA9IG08MD8wOm07XFxudmFyIG51bTEgPSBOdW1iZXIodCktMTI7XFxudmFyIG51bTIgPSBOdW1iZXIodCkrMTI7XFxudmFyIG51bTMgPSBOdW1iZXIodCktMTtcXG52YXIgbnVtNCA9IE51bWJlcih0KSsxO1xcbi8vdmFyIHRpbWVzdGFtcCA9IERhdGUucGFyc2UobmV3IERhdGUoKSk7XFxudmFyIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBzdGFtcDEgPSB0aW1lc3RhbXAgLSB0KjMwKjI0KjYwKjYwKjEwMDA7XFxudmFyIHN0YW1wMiA9IHRpbWVzdGFtcCAtICh0KzEpKjMwKjI0KjYwKjYwKjEwMDA7XFxuLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBtbSA9IHNzcy5zcGxpdCgn5bm0JylbMV0uc3BsaXQoJ+aciCcpWzBdO1xcbiAgICAgdmFyIGRkID0gc3NzLnNwbGl0KCfmnIgnKVsxXS5zcGxpdCgn5pelJylbMF07XFxuICAgICB2YXIgWVkgPSBzc3Muc3BsaXQoJ+W5tCcpWzBdO1xcbiAgICAgdmFyIE1NID0gKG1tPCAxMCA/ICcwJyArIG1tOm1tKTtcXG4gICAgIHZhciBERCA9IChkZDwgMTAgPyAnMCcgKyBkZDpkZCk7XFxuICAgICByZXR1cm4gKFlZK01NK0REKVxcbn1cXG4qL1xcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG52YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXG52YXIgWVkgPSBTdHJpbmcoZGF0ZS5nZXRGdWxsWWVhcigpKTsgXFxudmFyIE1NID0gU3RyaW5nKChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSk7IFxcbnZhciBERCA9IFN0cmluZygoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSkpOyBcXG52YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG5yZXR1cm4gdGltZVxcbn1cXG4vL+aXtumXtOaIs+i9rOaNolxcbnZhciB0aW1lMSA9IGdldExvY2FsVGltZShzdGFtcDEpO1xcbnZhciB0aW1lMiA9IGdldExvY2FsVGltZShzdGFtcDIpO1xcbnZhciBTR0pfVVJMID0gJ2h0dHBzOi8vcy5zZWFyY2guYmlsaWJpbGkuY29tL2NhdGUvc2VhcmNoP21haW5fdmVyPXYzJnNlYXJjaF90eXBlPXZpZGVvJnZpZXdfdHlwZT1ob3RfcmFuayZvcmRlcj1jbGljayZjb3B5X3JpZ2h0PS0xJmNhdGVfaWQ9MjImcGFnZT0nK3BhZ2VudW0rJyZwYWdlc2l6ZT0xMCZ0aW1lX2Zyb209dGltZTImdGltZV90bz10aW1lMSc7XFxudmFyIFVSTCA9IFNHSl9VUkwucmVwbGFjZSgndGltZTEnLHRpbWUxKS5yZXBsYWNlKCd0aW1lMicsdGltZTIpLnJlcGxhY2UoJzIyJyxnZXRWYXIoJ2tleTInKSE9Jyc/Z2V0VmFyKCdrZXkyJyk6JzIyJyk7XFxudmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoVVJMLHt9KSk7XFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOicrMeW5tCcsXFxuICAgICAgICAgIHVybDpcXG5udW0xK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jy0x5bm0JyxcXG4gICAgICAgICAgdXJsOlxcbm51bTIrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonKzHmnIgnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMytgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOictMeaciCcsXFxuICAgICAgICAgIHVybDpcXG5udW00K2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Z2V0SGVhZCgoJ+W9k+WJjeaXtumXtOe6vzogJyt0aW1lMisnficrdGltZTEpKSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4vKlxcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOiBnZXRMb2NhbFRpbWUodGltZXN0YW1wKS4gc3BsaXQoJ+aXpScpWzBdLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbiovXFxufVxcbi8qXFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6IGdldExvY2FsVGltZShzc3MpLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbiovXFxuZm9yICh2YXIgaSBpbiBqc29uLnJlc3VsdClcXG57XFxuIHZhciByID0ge307XFxuIHZhciBqID0ganNvbi5yZXN1bHRbaV07XFxuIGlmIChqLnBsYXk+MTAwMDApXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXG4gZWxzZVxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXG4gZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6ai50aXRsZSxcXG4gICAgICAgICAgaW1nOidodHRwczonK2oucGljK1JlZmVyZXIsXFxuICAgICAgICAgIGRlc2M6J3Vw8J+QtzonK2ouYXV0aG9yKydcXFxcbuaSreaUvumHjzogJytwbGF5KycgICAgICAgIOWPkeW4g+aXpeacnzogJytqLnB1YmRhdGUvKisnXFxcXG7mj4/ov7A6JytqLmRlc2NyaXB0aW9uKi8sXFxuICAgICAgICAgIHVybDpcXG4naGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMidcXG4gICAgICAgfSk7XFxufVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeS6jOe6p1wiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG4vL2xvZyhNWV9SVUxFLnRpdGxlKVxcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXG4vL+minOiJslxcbnZhciBDb2xvcnMgPSBbXFxcIjRcXFwiLCBcXFwiNVxcXCIsIFxcXCIwXFxcIiwgXFxcIjFcXFwiLCBcXFwiQVxcXCIsIFxcXCIzXFxcIiwgXFxcIjhcXFwiLCBcXFwiOVxcXCIsIFxcXCJCXFxcIiwgXFxcIkNcXFwiLCBcXFwiRFxcXCIsIFxcXCJFXFxcIiwgXFxcIjZcXFwiLCBcXFwiN1xcXCIsIFxcXCJGXFxcIl07XFxudmFyIENvbG9yID0gJyMnO1xcbmlmIChnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicpIHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBNYXRoLmNlaWwoKE1hdGgucmFuZG9tKCkgKiAxNSkpIC0gMTtcXG4gICAgICAgIHZhciBDb2xvciA9IENvbG9yICsgQ29sb3JzW251bV07XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICB2YXIgQ29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxufVxcblxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcbn1cXG5cXG5kLnB1c2goe1xcbiAgICBkZXNjOiAnMjU4JiZmbG9hdCcsXFxuICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnXFxufSk7XFxudmFyIGJhbmd1bWkgPSBnZXRSZXNDb2RlKCk7XFxuaWYgKE1ZX1VSTC5pbmRleE9mKCdhcGkuYmlsaScpID09IC0xKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge30pO1xcbiAgICAgICAgdmFyIGIgPSBKU09OLnBhcnNlKGEuc3BsaXQoJ1xcXCJlcExpc3RcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxuICAgICAgICAvL2xvZyhiKVxcbiAgICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbD9haWQ9JmJ2aWQ9JyArIGJbMF0uYnZpZDtcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgdmFyIGEgPSBmZXRjaChNWV9VUkwsIHtcXG4gICAgICAgICAgICByZWRpcmVjdDogZmFsc2VcXG4gICAgICAgIH0pO1xcbiAgICAgICAgdmFyIGIgPSBhLnNwbGl0KCd2aWRlby8nKVsxXS5zcGxpdCgnXFxcIicpWzBdLnNwbGl0KFxcXCI/XFxcIilbMF07XFxuICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsP2FpZD0mYnZpZD0nICsgYjtcXG4gICAgfVxcbiAgICB2YXIgYmFuZ3VtaSA9IGZldGNoKHJ1cmwsIHt9KTtcXG59XFxudmFyIGpzb24gPSBKU09OLnBhcnNlKGJhbmd1bWkpO1xcbnZhciB2ID0ganNvbi5kYXRhLlZpZXc7XFxudmFyIHAgPSB2LnBhZ2VzO1xcbnZhciBjYXJkID0ganNvbi5kYXRhLkNhcmQuY2FyZDtcXG52YXIgcmVsYXRlZCA9IGpzb24uZGF0YS5SZWxhdGVkO1xcbnZhciB0YWdzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkyLnR4dFxcXCIsIHt9KTtcXG52YXIgc2V0dGluZzEgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkyLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5q2j5bi46aG16Z2i5YiH5o2i5oiQ5Yqf8J+RjOWPr+iDveW5tuayoeacieS7gOS5iOWPmOWMlidgO1xcbnZhciBzZXR0aW5nMiA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaTIudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/pmpDol4/pobXpnaLliIfmjaLmiJDlip/wn5GM5Y+v6IO95bm25rKh5pyJ5LuA5LmI5Y+Y5YyWJ2A7XFxudmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIGxpa2VfdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvbGlrZSc7XFxudmFyIGNvaW5fdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvY29pbi9hZGQnO1xcbnZhciBhZGRfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy9hZGQnO1xcbnZhciBkZWxfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy9kZWwnO1xcbnZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG52YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG52YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxudmFyIHhseHogPSBcXFwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjQHJ1bGU9anM6dGhpcy5kPVtdO3JlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanMnKTtSb3V0ZS5zZXRQYXJzZSgpO3NldFJlc3VsdChkKTtcXFwiO1xcbnZhciBqeGdsID0gXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L2p4SXRlbS5qcycpO2p4SXRlbS5qeExpc3QoKTtzZXRSZXN1bHQoZClcXFwiO1xcbmlmICh2WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICB2YXIgcmVkaXJlY3QgPSB2WydyZWRpcmVjdF91cmwnXTtcXG4gICAgdmFyIHltID0gZmV0Y2gocmVkaXJlY3QsIHt9KTtcXG5cXG59XFxuXFxuZXZhbFByaXZhdGVKUyhcXFwiWFVpRlQxdlhZV3JVdytWaHBucWxnME4wdkFXZ3BnbGg4TWhaKzl2UEQ5OU5KNVZnZUZkSG13YUthd0l5NkMwaDZGRlFoRVE1UmhKbVYwRVFIbkw5eHliUEhBY2hBTDdoWkVaZCtoYkdIVjVqZUcrbks1UTNpZTc4cHVHRGIxVEo0ZkFJN2c2ZXpMSWpRTUJ4Ti8yWE05MllOTlBLREhkaExJTVFHVjY5TXE4Y1RPV2pLcFpRcDAvdmdOdXhhUFFLRXpTZEhRSnVlN3RUeGRTRXZEdDNzL3R4ZEVoL29HekZDQ05XZVpDVVU1M3poRWhDMDZxNlpGalpDTStkOEZzWjVjWGxOSmVtdGVnTWdKVUxkVHFhVmRSd1ZoVlgrMXVCUTlOeTBEcHNOR3gyTHdIZ09qbHM5aHcxNExoRXF0aEVlNzN5UEJHdlNnS0VCZFNZZ0c3Y0s3aFlWVEVOZUdUaVJBektQUTdqR0VxRUo4YWFkSE9IQWVTYTI1YUJiemM4MWhoeGdYdGlhbFg4VXFlcG43azRnMkdrc3FvRzNKVkkrcVRmV1p4UFdxTk0vMGpVWGJyVVRDUlpucnpHVm93Nk53UFFYS3EzQ0RLbDlpK2FadmVXejVJZjVFTkVaR2lXbFc1ejRhSlNFY2V4Q0RzaVpsbzEvUUpJajJyV29uRTB1NTRhaDIvWlovL1pHb01CSitkMTlHbWVwa0xCRDNuMnFvZ0tualpqMnJqV3FnUGFkRWVlMVpJaFozU0dibVRsSmYxQTRCWUl1dVB3djRkR1pkUm9EVzY0QmhDNWp1Q242d0RtN1lteTdCWGYxc1FhRmltRW5yU0lpSEdoTStXS2czSXlXZWN1aC9HaysrTW1ONkF4eGN2TkF5cDhiQzRoekJNdlpKL2w1dFJ5YXBvbWRDVjVCcGlYZmprV1JuYm9wSWpJK1dLQjNmQ2FZeVJkZU5MRVJLbkVsc2NEaXo3VWVuTHByaFljL2E0THNHZU1NRlZaOFlvOC93R1lIMzhKXFxcIilcXG5cXG52YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW8vJyArIHYuYnZpZDtcXG52YXIgbW9kZSA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpLnR4dFxcXCIsIHt9KTtcXG52YXIgbW9kZV91cmwgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8sIOeCueS4quinhumikeivleivleWQpyheX14pICdgO1xcbnZhciB6bCA9IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3BhZ2UnLCBnZXRWYXIoJ3BhZ2UnKT09J+ebtOmTvic/J+WFs+mXrSc6J+ebtOmTvicpO3JlZnJlc2hQYWdlKCk7aWYoZ2V0VmFyKCdwYWdlJyk9PSfnm7Tpk74nKXsndG9hc3Q6Ly/ngrnlh7vkuIvmlrnliIfmjaLmuIXmmbDluqbwn6SfJ31lbHNleyd0b2FzdDovL+W3suWFs+mXrSd9XFxcIjtcXG5pZiAobW9kZSA9PSAneWhjJykge1xcbiAgICB2YXIgbGF6eSA9IHloY1xcbn1cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogdi50aXRsZSxcXG4gICAgZGVzYzogJ+aPj+i/sDogJyArIHYuZGVzYyArICfjgIDnsbvlnos6ICcgKyB2LnRuYW1lLFxcbiAgICB1cmw6IHRhZ3MgPT0gJ3VwJyA/ICdmYW4nICsgc2V0dGluZzIgOiAndXAnICsgc2V0dGluZzEsXFxuICAgIGltZzogdi5waWMgKyBSZWZlcmVyLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICcgICcgKyBjYXJkLm5hbWUsXFxuICAgIHBpY191cmw6IGNhcmQuZmFjZSArIFJlZmVyZXIsXFxuICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2d6MT91cmw9aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vaDUvZm9sbG9377yf77yfdHlwZT1mb2xsb3fvvIbvvIZtaWQ9JyArIGNhcmQubWlkLFxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JyArIGNhcmQubWlkICsgJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZScsXFxuICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCc4oCc4q2Q77iPU3RhcuKAneKAnScsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArIGNhcmQubmFtZSArICcmJicgKyBjYXJkLm1pZCArIGBAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07dmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK2lucHV0LnNwbGl0KFxcXCImJlxcXCIpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO2lmKCFnZXRWYXIoJ2xiMicpLmluY2x1ZGVzKGlucHV0LnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdKSl7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix4cik7J3RvYXN0Oi8v5YWz5rOo5oiQ5YqfJ31lbHNleyd0b2FzdDovL+W5tOi9u+S6uu+8jOiAl+WtkOWwvuaxgSd9YCxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInXFxufSk7XFxuXFxuZnVuY3Rpb24gcmVxdWVzdF9iaWxpX2FwaShiYXNlVXJsLCBTZWNyZXRJZCwgU2VjcmV0S2V5KSB7XFxuICAgIGlmICghU2VjcmV0SWQgfHwgIVNlY3JldEtleSkgcmV0dXJuIHJlcXVlc3QoYmFzZVVybClcXG4gICAgZXZhbChnZXRDcnlwdG9KUygpKVxcbiAgICBsZXQgbm93RGF0ZSA9IG5ldyBEYXRlKCk7XFxuICAgIGxldCBkYXRlVGltZSA9IG5vd0RhdGUudG9VVENTdHJpbmcoKTtcXG4gICAgbGV0IHNvdXJjZSA9ICdiaWxpLWFwaSc7XFxuICAgIGxldCBhdXRoID0gXFxcImhtYWMgaWQ9XFxcXFxcXCJcXFwiICsgU2VjcmV0SWQgKyBcXFwiXFxcXFxcXCIsIGFsZ29yaXRobT1cXFxcXFxcImhtYWMtc2hhMVxcXFxcXFwiLCBoZWFkZXJzPVxcXFxcXFwieC1kYXRlIHNvdXJjZVxcXFxcXFwiLCBzaWduYXR1cmU9XFxcXFxcXCJcXFwiO1xcbiAgICBsZXQgc2lnblN0ciA9IFxcXCJ4LWRhdGU6IFxcXCIgKyBkYXRlVGltZSArIFxcXCJcXFxcblxcXCIgKyBcXFwic291cmNlOiBcXFwiICsgc291cmNlO1xcbiAgICBsZXQgc2lnbiA9IENyeXB0b0pTLkhtYWNTSEExKHNpZ25TdHIsIFNlY3JldEtleSlcXG4gICAgc2lnbiA9IENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KHNpZ24pXFxuICAgIHNpZ24gPSBhdXRoICsgc2lnbiArIFxcXCJcXFxcXFxcIlxcXCJcXG4gICAgcmV0dXJuIHJlcXVlc3QoYmFzZVVybCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJTb3VyY2VcXFwiOiBzb3VyY2UsXFxuICAgICAgICAgICAgXFxcIlgtRGF0ZVxcXCI6IGRhdGVUaW1lLFxcbiAgICAgICAgICAgIFxcXCJBdXRob3JpemF0aW9uXFxcIjogc2lnblxcbiAgICAgICAgfVxcbiAgICB9KVxcbn1cXG5cXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKSkucnVsZSlcXG5cXG4vL+iHquWumuS5iWFwaemhuVxcbnZhciBtQXBpID0ge1xcbiAgICBhdXRob3I6ICcnLFxcbiAgICB0eXBlOiAnJyxcXG4gICAgaWQ6ICcnLFxcbiAgICBiYXNlVXJsOiAnJyxcXG4gICAgc2VjcmV0SWQ6ICcnLFxcbiAgICBzZWNyZXRLZXk6ICcnXFxufVxcbmlmIChtQXBpLmJhc2VVcmwgJiYgbUFwaS5zZWNyZXRJZCAmJiBtQXBpLnNlY3JldEtleSkge1xcbiAgICBwdXRWYXIoJ2FwaScsIEpTT04uc3RyaW5naWZ5KG1BcGkpKVxcbn1cXG5cXG52YXIgYXBpSW5kZXhTdHIgPSBnZXRWYXIoJ2FwaUluZGV4JywgJycpXFxudmFyIGFwaUluZGV4ID0gcGFyc2VJbnQoYXBpSW5kZXhTdHIpXFxuXFxuXFxudHJ5IHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgcGFydCA9IHYudmlkZW9zICE9IDEgPyBwW2ldLnBhcnQgOiAn5b2T5YmN6KeG6aKR5peg6YCJ6ZuG77yM54K55Ye75q2k5aSE5pKt5pS+JztcXG4gICAgICAgIHB1dFZhcignVUEnLCAnO3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjBcXFxcXFxcXO+8m1xcXFxcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzbvvIbvvIbvvIbvvIZSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlb30nKTtcXG4gICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2Y1UjVPMzk2SjIyRnhrYlFia1hYQ3BnZ2Z1YWQ1byszcDk3TEhXYklwdG93NG8rTVJRdGFQMC84d2l5SkNyWkNhWllXNjR3VTFCNjB4UkJRdGJkSkNFZ1J1SGhvWnNiR0FaQkE0My9UWHhHd0lrQ2NrYlY2bnpIaG05M0RrNURpQzVJNUhuK0NmaUJNRTR5UW8zOU9VSnkzcEdBV2xqRDFzbnB6R2hCajFiM0hyVHZ5a2pGYVNQZ25TL01VZEpNZjBRWklTTkdVOHo1b3ZhblBzSCtGNVdzUWdIZ0lxeFc5ZXZWMyt0Z3lmTFVkRlIwTjREbHRMWXJ3N3ZDUGd6UFFYL3Z3Qk1QeTZZY1Z0U1ZLamI2UXpGYXVUTitKMklSWXJwYXkxNWFrQWtvZmErWXgvZk5UZWY0KzZaYVZ6bVhlWmFFYWowYlEvSFBaaWJ4VHozUytEbVVWZGdZdTBIWE15MENGQ1hTdDMrZU9VTjljK0VtVkFMck5OOE9xV3JQZWtydkYxcU4xVUt2NmtCY0JFUC9Td2t1ZnMzdk0wN2ZXdi9STkpZQjdoRWhzb0l4eXZIUU9pUFlDVEQrZVVzK2ZoK1U5YlJSQVV6UlNsWEN6aFdYakRmQ0pqWS85QjJsNFJwaC9ud29wRU1xaWk1cEpDSlVQVGMvSDRVZnc5Rk9MWm14TUhiRWlXZmZwMHJnYnBIb0tuUm56d1lmZy9SSzduOXpMQWRHQUsvOHVHYTBzbFo1SVQxWFVlcXJQc0NxdDNNSDVHMm15eEJEbHFEMFlRVWI2TldoSTdwampwaW42YlcydGh3ekg0TlQvVHA0Q1dwSGxWeWNCVldzU2doR3lTQkVRUnBCUUtMT1R2MUV2T3hnRnhoOUdZY3U5VDZXUHVmYkVuRGcvTEs5cmdyMnB3b0kzWUlqMHAyQmJCbVg3dk1oUHhLS0xweFppNDNKd1ZmOUh4bjMxTmFZUWkvMFMxelRDZzlTMjZ0VWdBcTQ4cmkrRWkzTUhVa0k2V3NNYkE3M0xuZmdCajc3REFsUWw1UU9rVXYvcEhoeVlsaWlRMlhZYVl4U0graEc0K3RBK0s2dVAwaERLZVFMay9mOXQ3aSs2WU8wVSs4R2kvWHdIQXN0NkNMN0kvS2lCZkZQbk5ZTHhaQng5RTBzUWVySSs4WUtGMkpmVG90dkhmYzlpU2YzTGVBY1V6V3kvR3NZcjIwcXpFMSsyaHFVbnhRYnFpRWpsYU1xZXIvL1FvNThPdytGbXBRcDF3dSs3aGdmcjZSa0s0WXd4a2V3ZVhoT1JmQ0JOcUlCSnp0d1oxZkIwbWJwUk4zY2tuekRpY3JhbW0zaldrRGlZemYvSk0zaFlzM2NyeWxkR3lYcXIyOEo2dTh4TGFTRFhGL3lVUXdiU0ZXSk1zdDQraWpTM0g3RFU1d1lqZ2toRXpoQlZLeDcyNExVbWtwVVRhUlRqMDBKZ0NNc2xIRHl5dkxTTlpXYy9zSW4vdldTQUhVOXEyQ1lSN0M5Q0lrR3VJMGtPS0gwbndLS2kxeFdmOVp3MWl2Z0x4a1VsT0VJRk5wUThYZDRSdmlqakdMcnhRUjJ6bXNycUxqVGhqcG5SOXJ5bDJxdVRtK0htdWllanNHTVdHSVhLa3lwZExZUG52Y0hmSDJjbFdnVTcxVkp4V3J6NktrN0xqSUd6Nm1Gb2o0NVpaN0YvajF0alhNaDhscllCbEtkWGp6bERjczJoczlKOXVBY3hLV2pSWG15OHVLQzRadTdNZlZLMGtjRGZ2dEFmY2tuZW5SZ3doWkZLcFNIeTZIOGZJbDBXbkhQYlVTTjUvUTFJaWs4a2FhQzBNU2JSOEtWNDZ2aEVldlFkUG9leFg3Q2pwU2paa0ZBS1NGLzJrdURYeUdzekx6MmhOT2tHMGkxQm1reGhqYzYzL0FRbHlLaXprMzBNSkJmTlBWRTZ5OXFERXNkWG1MTXNvdUg4cDcwSHlIL0tvZWx5QWtpK1VmZGxLUU5qMTdIb1lHU2luUWtiYjJpRldHOU5ET1d3cmo4WlF1WFRpTktUWEpPckg4bFQxKzE2NEVHalhlNStmemZVbUFNMENMUk1UUi9OcTV6TlZnZTlQRi9WUE5mVTBkTlZjb0xtWVA2RFRVNU96ZzBic294MWE4U2duZHhGUjliU05SelpuelBHSm82SEtHY2ZiVmFTVUZRQ1RkNlVielRkY3BMRFRRcXVad1BGYmRkU29ZamRzRnVrblBDRTJVcDZyay9lMWRoOUtyOG1hRThGWThDT25CdTdCMVdkUGR5dVdlejd4UHRzaHpBSXdSZWtJT21HMG9tU2xieHVYdzBiOVd0UEFYUk1UZVBnYWJEdThCcnowLzRzMGVvQkNSNmN2WGl3S0FYOERGSTl2ejRmbnVyTkxkN2haSWtDdkFuVDNSdy90U3RzUys4ckZVbUcwM2lhUW1KbjN5WGFpWncxTVNIa1JWcVd0RFo4elNBa3Jxb1lBN1EzdXlYZEpNNk1xQ1hFYkNmZ1hsZ1A0Q0E4Z0xyOHR2d2g0blhGbVlTYWFHbEVNWUNoaFZzUDBUb25zZ3lHYzZaSHJGK2tIMmxER1NxeE1OZUIrUVROc05IZ3JFUnJoeDY2eE95bHNJWkV3TENldm5mbVFwL0NMejRNY0N0MEZXemhuSlEyTkFoODExbU93YjQyaTNYT2pudGt0SFQydFFNUVFLQmdkVG5ZakdZS3cwQjQxNDF1ZUJOYXdHYVozbExhWFdUN1l1R1FhRktwWGR6a21pNXNPZGpWUnlTa2pWcEE5WWRFYW5TUTU2ODRTakxaM0J1dFdOa3hJcDNlUXk0M2sreG9raFB2d2pUVllwR2tiYkJHb0NNOHpJQkR4ZXEyMkw5QWtjTllYdXpKYXkvTmczVHVYV1dLQXYwKzh6S2RDUnR2YUlWWWIwME01YkN1UHhsQ0RJZ1ZDalZDSFhpYnFzdVA3akt5UnozdHI5bkNaSVgrK1lDQWErWmRYSzBQMmVnMXRsSnplV2cyMHpVZ0VqT2tuc0lGa2sydUJmTDJVRWpOeGRsbERPSVM3NEdyNEJIYnFURk92RkJhMWpabFBicmZ4dU5ZMXEvSnpTZGNWRzkyMWU0N096OHJGRFB1VkU3TmZ0YTJtRGZRbDdNMEpUTjdUaWVCWWpkYUFYUFM5RE9ZT1BzT1ZXVWxPMVF4Y2V0djVnd2dJMGdJVmhwYVhUSTZBeUMyblk0dkxoZmhVWldyYmtlNnNhR3YrTitRY3JBUy9YcXpOVk8xOG50YmZNdWVsRmlTblRGU2lyWUJOeU5iSjJ5dE9rNUhxTUh4dk83Y0R6TVE3RTJ6ZUpIajhSeXZTQm12VHEwakJkTEJpSUFoN2VKK3gySm9FVy8zQ2JyVGJmT3laeitIRlBzTzdoc3lUekthckRwRHZ3ZDZHbE9LZ1gyU1ZsM1NURDRhTHVYZDB2TndWWnFINkVpUnJsOGFoU3pMd0FEY1lNSVVCRFJ3ZUdZM2xudG12Q1gyMXdLVnRkZUJHVG9US1J6RE9BUk5mcEdOYkZCSzByd3FQd0szdVk0dGlYemhtbXlKbEQ2SzJvV1U0ZzlYWVc4MkFCbGs1Mk1sT2VRWWQxaFdIcmF3cEdwYkhDRWM0aXFzOE4yU2RhYTVCOXFONFRZQjNYTk50aStyTkl0R2c5T3Bhc3U1b2ZmQ0ZGSWJOWm1qVGM5RWxLNE13bk9XOTlDR200MDJNYTQvZWswbFVIUGtyTThVVzZOQ0FESW92QzBrbXJWVW94blMwSFF4c2ZnV1FJbGtOUEQ5RlVmTzRpSmYyZjNpVGd6dDloRTJPZ1QyQ2pLd0twOEhDanVoY2E1RmNzMVNsRGxoU0FLZUhNSDl3MlVmL241dVE2bkIwV1VXQ05zUnY5RE4wTVdmQ3hWN0ZOeFVsYTJ3Y1BJYlV0WVJOam9FOWdveXNDcWZCd283b1hHZ0NaRmxxbTc4dnRxQ2JlSzI4aVh6akZjdCs0OHQwa2M2YkVpcVAyOEtuWUY4bkFWbkZRSTJPSWVRdktiSUhBcy9UWGxzMjYzUWxhamRIVXBNS1pOay9BQktHLytxa1cyZFdRRTlXbVBDZVBPdmRWbUFhUE14Mnk3TG4zajI3VVZSUGxJcG5pTzZyNldQMmRUNGFtZnBhNERUOXc4RGt0SDBqMzlaYTVLYkJqcVlUMzA4RWFYMjd4UnUvcS9OWGNYaGtYUDlJRFp5UlNDY3Vaa3hmNlRaNFFLcEhuNXZ6am91SWFjU1BNVHRhU3RweUZEdk5HSFQreFY2RVl1QnE1ci9nQ2Q2T2hTYkxES3FIenZjQkNEQkxNMk9QNC9FUjJzaHY3R3JMMklic3dLWFFZNVNVSUUxeDluZUgycjVHeDQxUDBiZk9WcG1sTHRCTk1SRVBsTTRqVDBPSmpNdWhEL091RzJoNDlReGVKcVVLcUNxclc4ckFXYktJcUY3REh4RDFsejB6Tm00akVmc1M2L1lMU2xUcDRyM2MrRmVkRHZhUmlHU2lMbkdFODdxNWJFZHdLN1liblZCWU1YNmJkQ0lzSzhRMDdRSmtPeWNVTWZtZENrcVZlOTdSYUNubGFjSFFhZzAyNGVGbldIR0ZPL3J4L3RVdlVaaWMyd0JxNi94Nmo4QUo4RDJsbmduOFg3YWFBcjlRVnNuVEpXWVZrczBodDM0U1lPTWVrL2luQ21NdERza1NyTzcrV1RFZkN1Q0traXA3Vkd6NTJKTXEydnp6bW15S3lvMnFhOFJoVWNjeVhoeW04V0d4Nm91KytTaUpxdTZmTXpzd01HNFR0WC9qTFJmWDI0VDhhb1lwWjNvOTNpOVN4a1FvMHQzT1EyME5IKzRsb0JyV3lrd0FTR0ZxV09YLzU1NUhub0tqR3VoYys2Yk1WRmcvalMzcERKc1huK2ZNdTdlaWRKYXZ5WjZVWmpoMEE4S0w1cjdqekFYbldlNkVpNS80UDZWcE9VSFlYS0E1c3JFY3pGcEhVUDlSZFYzSXVpSzc2R1BxNnBqNU01TGpLZHdONUtCTlh1bDBhZ09lMnBJSVNjbXNIS1BNcmIxTTQyc0Rsb1JRaG5lcE5pbzhBUnYwWUQyUTlHSlBPY0JIVTZFVEhXWXoySWl5bjlQaWpaUjdZU3AycDd5aVFCTkdxaldZR1d1NkxNbFFJZFlSQ0o5cFRSenh1VThybnp4eGs4UFFDRDVwRE1SRUM0WmRNb1NYY21jVmNIeU1DbUFVR21pVFIrT3JBQ3JMcGd5ZHZ0TCtrTUhVdFpIdkg0TWFSN0l4dmlIRkFFUWN6dnFKNkxVa3NpMUVkT0xNSS9Sc1BjTitQNUV4TXIyeGsxNzZQc2QvdWRqdWg1U1NZc2hmZENxZmtvOU54YXppN3lZSTVvbEdFRTRLaVhVcVVrRmQzcXdrdkhJVlVJYVAwNzVRVDJ5WHdWcHNMVEhhRHh6NkZlM28waDRMa2xpTzhnR1dhL2lxa0QvRG5tOHNyeTBqV1ZuUDdDSi83MWtnQjFQWlh3cGdhMDFyRGZZYVZUTVZ5eEdTSXl5dkxTTlpXYy9zSW4vdldTQUhVOWpTSWpJaFJrZ3B4VC9LTXY2aUg4bGxXSEoxdGo4L1JUQ0YwQ2wyZjZXd1RiRkpZY01hRmxubU1pczJBTFZPTlBzNlVNdnNPL1BPdzVDY3I3OXNKemllV0xNVmFPVkc0L2UxVlBUU0F6WTlIODdPQ0pYZXgraUFPb1crS0FucmlCekFWQmRGd3lVcUllbkxKVnNSSDdWdjNOVjczTXFycW4vcGt6QVh0a2lVQVh3cEttVnpkYmVOTGxlYm9rRGtvbXNzcnkwaldWblA3Q0ovNzFrZ0IxUFkzbVRSbVN0U2tIYnhBL0Z0Y2ZoYjMzNEJvejFZdVg0K1pucEJsUlN3eVRURTF1R0xZZmVwWmEwSjlwVGM4WS9HYkU2elh1YStmZDNPWWtrNENwWTVoSU5WQU5HYkdNRDFZUWxwY28vcjNBNnY4SDdzZE81SzdTalo4SVQ1SlNMVnNwQkZVM3l5cWpQY2RWRzlkeUQvTHBHeGJXMjdRQm8vOHUyVmhwa205TGNNdzNoOGhpcDZDekI2VGxwd1QxVDY3WEhrR3o4VWExQytTTC9FRXplcTlLOThWVFNXNEZQeWVjRlk3SVVjNDBBWFBtcHFLSXF0YTdTY2pBWXZEOGhaSDNkM1UxVTUzL1NvY0pIS0RqNFp2MWpibkZUc2pvZGpWMGZIZVlPZHQ1MFBGV2NPeFhZYXo4amdnZGwwNEJFRkZVazBTcGZ2MnpyZE4yNTVLRnIxbTRnVXh5M0tpN3lGQVBoZEtyeUNKL2hqVFJKUWNURG5hNnlQU2ZzZUNEdG9Sa21HdjB5TmRFMGJpOWM0cFdQUWdyVmkwUWpkekgyNVgwTm5KQWtsNVlVaWtQbGxGWlhobjJkUXpMbU1qS1AyUks2TEtSQTVBcEhnT1haV25HdDBBbWNmVXl1dHcwR1lSRzlld29LQVlRMzhKdEt2UnNkVklpNkZjNE15amUyQmJ3dUxvdCtsNll4eFAyRmVrVWtraTk4Z2JRcTBDbHB2YmhaMm41dmM1cUlaMWZ2YlNOdGVOSGkyTnNEVytoVVhFOE9ZaDNBeDl3QUs2QmhNMERpbnhvNk9Wb3o4YWx4cTQ0dHRxa2lBUjdHOEhYem11TU5qTHMrYTkrUUk5cWU2RFNiQUJRajdVRkVoUGNWMWUvZ1BUL3dSL3M1b3lTU0x2MzMwdGpyendvN3BsTG91bmMvc2E3VWVBeEJlclFVcXkyQWw0MURhd0ZMZUsrbWErYU9NYk9lWjhkSUJiR1pqV1JKNmpYWkllTTVka1dvYVk1Y1JSY0NwMDlxRm1taGwvY1dzUVYyL0tmcS9EYTJ1MzhTZlhySTFWSzJlZzdDMk92azVTU2NzbHNSTlEwUWdvdEMrNE1DVVJFTTg5UmU3SUI5L2l3V3YrNzlxSTNTL0huS2Z4cnVGdk9XTjQvd1dIUjY5b2NhaEd4Ty8xdDl1WlFzS0w4Tmg0bUYrTEFGWWpoWitSNElwQlZ0ZVh5NmZHbFc4YVFRMXN6bS9TOWlJaytqWWNra1Nub1ZpWVp0bTJ2R3NaVkNJT2NsMHZyTEhtWk1WeWkvR0o4VDlsL2lTUXErOU5BRG1XU3dSc1c5anJLUjJ1eXdHczlCaEZlc2JWNFhKWEV2eE1NS2pIcHdodFpEUUFGS0tMZmpVNGxMdVAxa0cxR3ozZlFnVkcwQ0tnUXJHeHd5ZzlKTkZ4OGxLMHBkRU9PK0RhWHpUckhvWHhNMGJJc2ZjTFlDd0s1bGxJQ0tBazhaTVQ2TXRhSE12MHk3ZXZNakJaLzFZbHZROWVrTDBmNis3aFc3YkdUaEVPeTd4OUl5eWJibzl4VThrR1EwSXdTeXNiSDc5OWV5ZktubFpaWGRVL254NFduMWExQ1B5Z0sxNEt0aVhUZEZEUTJMZ0NPbjJxb1BaZjdOdElGeGRMNnlhZXArQ3FxMnVFTm9wZzBEenhUekhicVg2RG1jUDdQeWVqSE5PVlVnM3dERjJSd2QzSWt5WUNxZ1puTjZFclcxVjI2b2lsRll5WEZaK3Y3RUhFOEI2TWhMbnh0TEdrUlpaMCtGRkk2S24rWG9lN0xMKzJaYURvNC95eW5rVlI3QkZ1U3FodEtMdnpqZGJ5WW9Ub3dpbTg1YzZScS9SQ1h0d2c5Umc0cVNFUkdqalp5RmNKUS9RNmFKYnYwTHBFeVJuM3FwcDc1dVQzemNiVFNSUlRWanp2Y3VYSUVyZ3IxRC9QdWdGbWhPV2UvMnBCMTVqVTQwaWUrM2M4OW95aWFlSU8vNXNrZHdRUHpnNi9ZSE5WLzFzVlZnT0thVzRJN1FBa2FTT3RkVlBtNkg2d3ZseVhFQ0FOdmhDTUdlbEZBZTFqV3ZkQk11blZSOE4yUkZTQU84TWtJSjZvOEx2VW96S0RrTVFCdDVwL2NXc1FWMi9LZnEvRGEydTM4U2ZYRDUyZ0tENkg4WFZLRmZtREhhb1NoTXNyeTBqV1ZuUDdDSi83MWtnQjFQYW1iMHFhYlQ4M0Q2cW4vYTNHbEh5R3hhbVpnUkhhSzE2dm1aRXphbnVURE96RzFhVXB2RUN0UkI4RU1nYXBhUVhMSzh0STFsWnord2lmKzlaSUFkVDI2dkZwZ2EwWlJMV1JQM2pIMHR5ck5ZQTc1ZUNUZjlkSXFqWUdjQUExcnNVMHplZXBkTVo4TUpYZDUreGJBYVhBL3VKZnNHalBJN3BzUWM4Sm4rZm0zTUxrK05DRUY4THNRME90Z2xJWEwrNjNGUnZ5RzduTWNldkg0aS9YVDBCMUJYTlBMNnI4aTZibmJlK1FKS1lNQTkzUGRiQmNEc0dUVmFMaUpsWWRFT1RmallicExVUkNkbHg5Sy9wdUVYVytcXFwiKVxcblxcbiAgICAgICAgaWYgKHZbJ3JlZGlyZWN0X3VybCddKSB7XFxuICAgICAgICAgICAgdmFyIGVwID0gSlNPTi5wYXJzZSh5bS5zcGxpdCgnXFxcImVwTGlzdFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXG4gICAgICAgICAgICB2YXIgc2Vhc29uX2lkID0geW0uc3BsaXQoJ1xcXCJzZWFzb25faWRcXFwiOicpWzFdLnNwbGl0KCcsJylbMF07XFxuICAgICAgICAgICAgbG9nKHNlYXNvbl9pZClcXG4gICAgICAgICAgICBwdXRWYXIoJ2FpZCcsIFN0cmluZyhlcFswXS5haWQpKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn55u06ZO+JyA/IGdldEhlYWQoJ+ebtOmTvicpIDogJ+ebtOmTvicsXFxuICAgICAgICAgICAgICAgIHVybDogJ+ebtOmTvicgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+aWreaPkicgPyBnZXRIZWFkKCfmlq3mj5InKSA6ICfmlq3mj5InLFxcbiAgICAgICAgICAgICAgICB1cmw6IChtb2RlID09ICfmlq3mj5InID8geGx4eiA6ICfmlq3mj5InICsgbW9kZV91cmwpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKSA9PT0gJ+W8gOWQrycgJiYgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgbF9jb2RlLmRhdGEudG9hc3Q7XFxuICAgICAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmipXluIEnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGNvaW5fdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBjX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coY19jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oqV5LqGMeS4quW4gSc7XFxuICAgICAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfov73nlaonLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGFkZF91cmwpLmxhenlSdWxlKChzZWFzb25faWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkZF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2Vhc29uX2lkPScgKyBzZWFzb25faWQgKyAnJnN0YXRpc3RpY3M9e1xcXCJhcHBJZFxcXCI6MSxcXFwicGxhdGZvcm1cXFwiOjMsXFxcInZlcnNpb25cXFwiOlxcXCI2LjkuMVxcXCIsXFxcImFidGVzdFxcXCI6XFxcIlxcXCJ9JnRzPScgKyB0cyArICcmc2lnbj1jNjRiNGM1MDgzMmQyOWU0MGEzZGRlZGVkMzY2NzEzNSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkZF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogYWRkX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coYWRkX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgYWRkX2NvZGUucmVzdWx0LnRvYXN0O1xcbiAgICAgICAgICAgICAgICAgICAgfSwgc2Vhc29uX2lkKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5Y+W5raIJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChkZWxfdXJsKS5sYXp5UnVsZSgoc2Vhc29uX2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZWxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlYXNvbl9pZD0nICsgc2Vhc29uX2lkICsgJyZzdGF0aXN0aWNzPXtcXFwiYXBwSWRcXFwiOjEsXFxcInBsYXRmb3JtXFxcIjozLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiNi45LjFcXFwiLFxcXCJhYnRlc3RcXFwiOlxcXCJcXFwifSZ0cz0nICsgdHMgKyAnJnNpZ249YzY0YjRjNTA4MzJkMjllNDBhM2RkZWRlZDM2NjcxMzUnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZWxfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGRlbF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGRlbF9jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGRlbF9jb2RlLnJlc3VsdC50b2FzdDtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHNlYXNvbl9pZCksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICAgICB9KTtcXG5cXG5cXG5cXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIHZhciBiYWRnZVR5cGUgPSBlcFtpXVsnYmFkZ2VUeXBlJ10gPT09IDAgPyAoKGVwW2ldWydiYWRnZSddICE9ICcnKSA/ICfwn5KwJyA6ICfwn4aTJykgOiAn8J+Toic7XFxuICAgICAgICAgICAgICAgIHZhciBiYWRnZSA9IGVwW2ldWydiYWRnZSddID8gJ1snICsgZXBbaV1bJ2JhZGdlJ10gKyAnXScgOiAnJ1xcbiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSAnWDUnKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICd4NVJ1bGU6Ly8nICsganggKyAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXSArICdAJztcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXAnICsgZXBbaV1bJ2lkJ107XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgdmFyIHBpY3MgPSAoZXBbaV1bJ2NvdmVyJ10uaW5kZXhPZignOicpICE9IC0xKSA/IGVwW2ldWydjb3ZlciddIDogJ2h0dHBzOicgKyBlcFtpXVsnY292ZXInXTtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlcyA9IChlcFtpXVsndGl0bGVGb3JtYXQnXSkgPyBlcFtpXVsndGl0bGVGb3JtYXQnXSA6IGVwW2ldWyd0aXRsZSddO1xcbiAgICAgICAgICAgICAgICB2YXIgZGVzYyA9IChlcFtpXVsnbG9uZ1RpdGxlJ10pID8gZXBbaV1bJ2xvbmdUaXRsZSddIDogKGVwW2ldWydsb25nX3RpdGxlJ10gPyBlcFtpXVsnbG9uZ190aXRsZSddIDogJycpO1xcbiAgICAgICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJpZm56cWFOcU5Sa042TnFHMGZaeDVNZXk0NzdPc01KT1RiVGQ5U2FqTWtmTEs4dEkxbFp6K3dpZis5WklBZFQyTktYT3hNTDM0dFBzSmNiRmdZcTJJd2VxUldsY3Rubm40NmRKSEdBb1E2UytUeHNXSlozRUxiVUFFZjFWdjJ4b01ya2wzS29xV3RvMXU3dTlTVXZOdGoxdXhDNGVudVpJRTNJT1ZKWWZ1bHJTSXVxbk1FOCtobFYzOEJTdFpDa0pmMGlXM0hkRjJpc0JIRXhUWmY0bHBDMktmNHVBc1BmUnFVOE45amJQNCtxelByWXJHK1lhV3QraW53OVphR05hNjA3RnV2TGdIKzR2WmJtZi90R25SemFRdmYwcmh2UG5mQmVFeWFNQXptbXZBTXg0dTBvNDJyeEhtTktTeC8yVlpsSXErUnFDWnhKSjNiS2NRSDQrRi9kMEc1WW1YeU9QWlJOWU03Um9Cejh6ZVFFL2hxQnJVYnJTZGIzVnc4U0RzRXhVMmhXT0VyLzA1Mm43NFNFZFdXZGMzN2s5QkxhVlBKcmRQRnEzcitaaDhmNmlXZzZOWEJyQit0VWxHU1ZUalpmc0xEMnJCZnB1UGVRUVdkQUVyUUpoSUZNOTVQeGgzUzRCSHRVb2RaM0YyMm1pdExFZjg2SVBvMTh5cmdITVdWYVFhNHVRQTRaTURUMWFoTTg1azYrN0xUbVB0ejZPTkF4dnlJVDc1c0N4U2NrMFhzTGxoRzlnVjhyVTBmbEQzZStpV2VramsxWHlybWRjS2ZGSEd5dklmcVdENnpNUkFkRklJeVh4TjNzdGJ0TmkzYlFNVVpnYlltbXIzUWxlMGpBSG9aUk1IZGwxQnJTMXNkbUxlcFd4eUhDOHI2VTM1SG1CUU5IcGR2emk3N1dHR3I0NFE0TWd2NVJYYko5ZUpPRkd6bGhyVHNEUXozd0FTV3pTN0p4RzhjazVmVjB1VFJjamdKUEZDSTg2ZXhENjRUOHRtc2tla1dYTXRaVWpsTklUUDlST1BOS0dud3pyaEZWMlJ2VnFORzBFRklzVzFXdWJhdGFzaUo2ZlhtQlRGMGd0TW1CSzFhczNKSFdSaEtyZ1lnRkFTZCtFNEtVQXVNUEx0UWIwZnRseVFpQVRWc2FSckZ6YmtwdVlsTUFzMVA5VmlVai9FeG9YcUFNYVE4Wkp6b3RzUHZqdytLUEZNZm53OEI5RVFjdlo3Y0FvS0tPNituRFN5SGVNMWV3L3VvV0gyWEpOR0wxUFVjOXMxVFViYUt0VWJTMjZoV05HTXJHekcydTE2b1RsRGZ4ekI3S0xqbXlJaUNoQjc0NkNPM1RuWnpYcDRzK3YxL3JmZ1BZeUFTR2pFalJOOXFNYXo3SWwvbUxQaUVVRGFqck4rQVUrNlVabFNVS1phYW16ai80dEp0bG1wQTNpMTlEN0lzdzFrRHpId0xzWWZtSE1Ta2t2LzhESnBQMlZEUEcyRkFvUlprbFJjYzllVWRhdXlMK1FoQ1J6UkFCcXZwemUySVlVVE1NR2tXbVcyelVGcmQ3VlNzc3J5MGpXVm5QN0NKLzcxa2dCMVBZNVlvODFxaThoWFdGRy9za1ZpMVlUcGMwVjY1VWdaNkpMSUI2S3AyT29zODNvZ2lTRk1ESmlzVDJPRUM2R1V4aGJWWGJxaUtVVmpKY1ZuNi9zUWNUd3krMzJ3S1R6V1YvMDNoMlJvV2RKMm5vbDB1Q01HWTlhRENQVWJaV1VlYWZMSzh0STFsWnord2lmKzlaSUFkVDJBTFNab3Bpdk1NNEhWTkYzbVkyWEwxQTNqZXNJQXR4RFIvdkI4L0FJbC9XTHJHTGJrUDJTSng4QkttMWhTTm9nV3lkNHpaMXdhSnFwTmNMYjBscGZ0emozQncxa2d5TVlwUy9uRjUvNGQ1MlpMa0dHemFVTU8zS3hpaFBJMHZWNC82VmVtZkZPTHd6WGtSV3J4UnloRnhQTWNzR0E2ZUFwSG8xaGMxazltMVYvQ1Z1V1djeWdxK1IxcHo0YVdvcUpLcHR2VFJ1Z3YxNGh3SlQrN3J3R1dpdE9GVnVLM04xMGFyUUtWWjZrVDlVQ3ZHSzRHUmt1WmpsL2RiSmY0QXhhYzhGZk0rdE8vb0tOWUI4NTBoNmdDYlRtTDNUVzJFdUZ1U0RvWTVxa015MjJpMXUyZUtPeXRSNFNSTEZMNEx2K3BFcWZIY3NvTG1qNy96SVVxT05Da3BoU0ZNNmRmeWRDRzljNFY1QXNvbThxT0JvdXp0Z0J6S1VIVDBvNzBiUTNVVGl0MTdCWm9WY3FjYmVKZXlkdlczSENhVlp5Mndod3dOM2IxNlZIbC8vSDRnMGdpS2ZGNTdoSmU0emlTVm5GMnBXc0dyUjVkenJPMHBlcXdBZ1p0b0JEby9tYUxYaG96bUdmWUFjN3d6V21iWFFlSnYvUUJyb3UyN09LTUZEQVhQL2NqeUVFQmdESGIxcjFWWE1DaW1VMHd3MlZYMENqNVhWK2YwSjVXNTdLVU9TZUNqYnZyK1ZVeHFvMTZ4dzlrcjh0blEyUXo1a01Jd0trTUlQaU9KaEoyQkFwK0phWGxnTVhJaTZyenQ3SWNZZGJ5Ym9jN0VqZHZNK3NxMEE1QmdUTFk2RUM5Qm5kSGVoaHYwYWo5dU56dm9qdmtndDhkMis1eE1ZYmRYQkdYbWR5dGg1cEF5bjhvTEJDV1VEYldlODAvOTlldDFpSC9HREpFZm9ETERmOXArazQrMFFidVdkRXF1VE8xakNKRjUxaDdUeEhsL1VZYS9tSnd1ZDAvWThENGZFWVpYL1YzaEdwT0Q5UjJabWpnNElycFBwd2Vmajh3MHdnY2Z5THo5Wk1tczFQb01uMHFDbm5NK1Z1Nm42c3hDbFBiOHlXeEtrek1oMGV3RTRuSm9jaFdiRGs1cmNmckUwMmt5a0ZYRnR1K3pqOEhKZ0FITWJXVm5qbnlYSTc2VWdxRFJlakFIeUZtV21WSzZXaEdrN202WnNKcWpKaTJFNTM0ZUIwakFWWWY2SmJzN2hBcUpQZ0VsZU9lQU9VNHpKTXNBVnJpc3Q2M2lSSk1hRU1Uak80OTgrYW1NT3I3OFdyS0R6aHc2UmdCK085VWhMUEswNDJZRTdOZnpqQ2I3OTk4N3U5d1FWNFFjcmh0bEtPWGNsOE1iWnRIMGJtYk5iQU91WHVJRjVkckpVcmpZU3dWUUJEQWFVYUxZZXplU3V2clF3RlNDYndlVFVKR3oxajd1QlVxM21hQjRPZksybjdHMk4xZkNLMWVFYXc5MlVubFZETzBUZjFMSUkwOEhGdHNSSW42WTFwM3M5VitMSlE5aVVkNVpHMEx3VTkwNEU3NVBwdVZMUk9CWUhTNG1yQjNSdnJNaEFXQzZqZHRTVEZrbHVtditjMkVKUnJiVXJqcjRBK1k0MGtBTk4xVXQxcmR2TWIvMHBST0pYVnNEZmMvQXlNNW4zQ2ZsdkRWcVNnUEk5YmxIRmUxbVo3NUNtSUxTNkt6ZEYwWWwxTVZIaVBXMGp2b2RueEtZVHBzOGhKTithSStoMVdSR3pySktaSmljQXROZHNXVmhMZnJWeFZFUFNlbTlqR3pzQWFXUGtWQkdSTzZqVzJTVzdtK2JWRHZSUGJWcGI2Z1NCSThvQ1VZT283L1EwSGFicW03UlBNY3NHQTZlQXBIbzFoYzFrOW0xWHc1MElSdm43VnlQSityREIxR2FkSzlxbzdJdUR2MXQvV2p6N2R2cDRkNFJwdUd2eTRaUWs5UHdWNXRUdGtYMkRHQXRROGZhaXZFSUg3ME9oa3B1Q3RuSGtib3pRQzlCWUx4VWRmSUx2UDhxRTk3clpZaytYY3FhN2h2bEJHNm4zSmc1NnM0cnFXZVpObEIvY0c1NUNTdFJQRUk2UmpyQURweS9zWW5RNFJFTjZVbEF5bVNyZXMyWVhSTFRhRWNZV2tKVzk4MkMvc2ZZc2NrYml6bE9zWXNLQUZwM1hzZ0RRUkRhYW8reUhOSkFwZVZSSzFtN2gxOHEvS2JReEZjcG5EYkdYMk1SdWNVNVBVUEpwa3l2Q2xFdlJLN2sxeDJuMHphekFRNGdaZkR3c00vaW52TVFUS2VRZXR6SXI2L1p3VHpITEJnT25nS1I2TllYTlpQWnRWL3FITTV0WVUxaHdSU3JkODVLSDJNcGR0N01QdFdmcTROZE9ZV2JOaFBQOHhsTDZMZ0hBV2xNeUJEWnN1R3lIekU4eHl3WURwNENrZWpXRnpXVDJiVmIyV0hNMU1WUGVOUDJKeldLblUwSFF1YmFvLzQxUHFJaCtDV0JSM0hVRllSeGlwRUJRYktBL21BcEJOMXBIQ3dCUE1jc0dBNmVBcEhvMWhjMWs5bTFVQ1I2N2h2NTllbTRuVlBabWpVNWsxQjliSWR6SWw3V3JKMWYvU1Vtd3ZxOGp5TUdtOFRKWGlLZ0ZFeTYyMmVua1R6SExCZ09uZ0tSNk5ZWE5aUFp0VkNybFJuZ1RFSkJxVjJpeXM2cXlMVEoxQ3BibjUxY0t0ZTU4ZU5LUmtsQ0R1WEZjM0dxbFkwQ2VHNkYzUU1WdXFCTUVOOXBYc21ud0t4c0U2NS9hK2VscWVmTEt5bDdJK09aditLQkhuWVg3OVdqQmIzMkJHaEdabmQxUWt5MnhIUHZmNFN4Ky90WU4yem5jbXBRcVN3eFBNY3NHQTZlQXBIbzFoYzFrOW0xVlV1VUd4Uk9aUzNLQ0U5Nm5hVUY3NG1SbXJkTy9qcHRJSGdNakMrRzZWN0J4WlRKaXRORUxzdDBGQ0orbitBTVlUekhMQmdPbmdLUjZOWVhOWlBadFZCQ1MrTGZZcXJTQkdIa2VZbGFxZ2J3SU14RWQxT1ZQeUpodVZ4QVVuRHRyS1cwQ252dXA4ekEzQ1UraU1UbFRSZjJOZkpjeGVqOGRpalk1eTNmMW5SV1JFT3BZbXJZWHp0ZnNSOFIrWStUZVl4QWV1dTdzZ3d1aVRDR3F4Y3hxOGNYRjJPK3psYVhlbTVId0hOVzlHLy8zZW51azZNSzJCdHRDUUJIcmlwWW9HQTErdlUrZEovRitMUjFpQkx0NHkvRnNQeHJKUDF4dnYwMFpGa1hnY3lHRWlhdWFtR3dZZGxuMy84K3RGZ1hSSTgycjlnY3NHWFR5Z0lPVEY5eWlGMGdvQ2g0Tk55cmE1U1B6U3dnb24zY3NuK05oQVFSSnZTRnNMWExIOEYvZkNTQ2p3bC9waTJHR1k0bkJVZWszd0s2Y1FHVzZCK29PM2pLU1c5UUVHMC9PZ0hUYnl4YlI5RXNwb2xtTmxCL0dxU0w0S09NWWF3TkMwdmdWWmRKQjViSGx1dGdqblR2djdvWXlmZWErbUlPMWpHYlkralU4Vkx4MVlaU0hFTlNUamkyNzRRajJLT3JGRXpwWHFpUTJKS1psbURoYjlMSjhPeFZMeDhBSEhjUDZueVdPaGlZY0Z1UU1Gd2Y5VVJJR0hyenJqenBwZjdnc0tuSmx0VGJrbGwxbHNmVUhTZDVaU0FGNlFFM2I4b2I1eDVIbVpGVVFSa1U5NFBsQ0h0VzVFRnd3SHFMd3MxdzNHeHpHTWh0cWZFOHh5d1lEcDRDa2VqV0Z6V1QyYlZlRTd5TTdMeHF3NzcxLzNuTmI3OE92cDR1YkZjaVJ2NkJ2WGNWOTFYL3dsQWI2NmdEcXl4bTdDK2pEbDg1UExKd2RJUkJrZXEwVXBtS1J2bGpBR1VJb0xQMG9DbmpGeFBWaW5xem1BbVB5bHhSZm92VlpjNVJUR2N6bDh0aUNJUUZLZTdoUG56OFBVZVR4TDJHVVM5NzUzeFAwdWdiSk5IMGt0TUZHcVhMUXJOMjBoeXhqeUZLTk95NUdRTDFkbDMyVjk2Y2pWUWV1bDJrNVhJUk9QYVd4bDYwajVYejZHUFcwdnNDSXBLK3hpeXl2TFNOWldjL3NJbi92V1NBSFU5dVN3Qk12UHhnajJUV09EOTFOWmw1S29KYyt6dTNqcFZRQkVneUhHeHRpN1N6ME95c1V0WmdMRUlXOWFkU2Z5aTJ3L3NybVRtOEgwTTZLekd0blNjOGEwVlZ3VDJxUW9ubmdTUjVLNlFUMnNFWkpyQnM1QjhaREJramFmUTRzUnBSRWFPTm5JVndsRDlEcG9sdS9RdWtUSkdmZXFtbnZtNVBmTnh0TkpGRk5XUE85eTVjZ1N1Q3ZVUDgrNkFXYUU1ZWluT0k3VUF6bGQ4SElTK0xVMDdvTGhEdVZJYXNJN0FnYmZZY2J2OHlaQnl5dkxTTlpXYy9zSW4vdldTQUhVOWxzVlZnT0thVzRJN1FBa2FTT3RkVlBtNkg2d3ZseVhFQ0FOdmhDTUdlbEZ5eXZMU05aV2Mvc0luL3ZXU0FIVTl0NVhicVBmTEc1QUFVRXZyY2hTNFdaaGNsZk4wVnEwMDFFQy8rVUFYYUdTNWIwaGtKVk9VQ3RDd3N6VnV5QWVVTXNyeTBqV1ZuUDdDSi83MWtnQjFQYkxLOHRJMWxaeit3aWYrOVpJQWRUMnBtOUttbTAvTncrcXAvMnR4cFI4aHNXcG1ZRVIyaXRlcjVtUk0ycDdrd3pzeHRXbEtieEFyVVFmQkRJR3FXa0Z5eXZMU05aV2Mvc0luL3ZXU0FIVTluTXlHTElIbEIyUVJJWTZEdEFnNGx6TEs4dEkxbFp6K3dpZis5WklBZFQyZ0R2bDRKTi8xMGlxTmdad0FEV3V4VFRONTZsMHhud3dsZDNuN0ZzQnBjRCs0bCt3YU04anVteEJ6d21mNStiY3d1VDQwSVFYd3V4RFE2MkNVaGN2N3JjVkcvSWJ1Y3h4NjhmaUw5ZFBRSFhaUkVoY2RleDFLTUxjK2c0SStqY3h5eXZMU05aV2Mvc0luL3ZXU0FIVTlnVHRWT0ZGNmt3YW5tc0dTZEgyaWFHYzFZbjVLN2tINVZYRDZ5dGdxNm8zSjFRazZEN2RhOHRkR1JaeWxscVdEczZVTXZzTy9QT3c1Q2NyNzlzSnppZGJrMzU0Mm1qTFJLdHlpRWV5djF0czZ5YWVwK0NxcTJ1RU5vcGcwRHp4VHpxSDFyODNKeXV2UXM0c1ZYa3IzQ2ZMSzh0STFsWnord2lmKzlaSUFkVDJ5QUl1TXdEeHZJZlVJRzlPWnVEc0k5cUFuQlcxRmkwdWRmYlQ5aGc2VTRCNGxsUnZ1S3lTN1pFUnpFYmUvSmZ2OGdORWQ4VFNZQjkrNzJ2eXBpbDJyVGI3eTZXRmxaUWEwK2ZCNDRURTZxenhreFBveTFvY3kvVEx0Njh5TUZuL1ZpVzlEMTZRdlIvcjd1RmJ0c1pPRVE3THZIMGpMSnR1ajNGVHlRWkRRakJMS3hzZnYzMTdKOHFlVmxsZDFUK2ZIaGFmVnJVSS9LQXJYZ3EySmROMFVDUHkwZE5yaXN5c0tPTXVVTVA0RnBZbElsQ3hBdDlRRmFJYUlvVXRsQWFpWUNxM1FuTStSWXdoLzZ0SnczY1NxaG1IV2s5ckJhajcxTmtBQ1V2T1hyNERVWDlBWlcybTRrb2lYZDFYSnVFMkt4N3pFalcwYW1nZnpCWkRKby9ZS1IralNCdnBJOEFCWTYySk5OVUxhM210cVdETzFYZ0wyVWxzZE9ESmxJdlRVcTN6Mmx0K2ludWtMbGxhbVplZkIrSnZxc3F2K05lWWJPSnh4R210blA3cTlwVjByUm1mKzFOZSsxTytSNVVzcmFKS1hQVXlZUmIweTdvb1RrTEcxaDRoR0FnRXRSalRPa3RrWG5GNUJaVEdNOVJ5UVJ1YXdjMGJCT210SFgxaGNUN3J0M3REa3NYSmZmbFB5eXNXemhQWExNK0ZkeDVkQ1lSeVp6Qy94aXlacmQxUm9QWjJ1KzBRdGJzSzJ1Z1JwelE0NjlsbmRwSmhyd2FleWgrb0hCUzhGeXcrcy9YQjMxTUg5S0pBbzBKRUFZWksyMjUyaUVZSGdvM1h1TjFaOGI5STVib29QenZMMDFJaStrQWFoc3NyeTBqV1ZuUDdDSi83MWtnQjFQYWpydXFZL2JMNnYxMjAwMm1hNjBTelpoVG55eVFaZFg5TTUyb0NBa2lqMi9ZTnUrSHBYNjc5ZGxaUytXYWh1UUVqanY0L1JNYUpTZlNLRERSNnlseE5oTVl3Z2t6RnBXUVRRMEdxTHFmd0xJSXpWczJnUjNOT093c2w5eWthQ3hpZkU0NU9TTFFhWStzRUIyMUxYS2YyUldJcWFiS2k3VmxCV3VWcXpLL014YkNtaktQV0tVRnBKemE4MGdNWFVuRjRJbTN5cUVmdDFyZnNLVTdTZzZlNGhacXpSbWJRWWR2RTdjZXpGK2Y4eGNENnlSY2t4T1JkRzZyUE9CS2lETWZnNjNlSHZaaVVqdWxQRTVJdkpEeG9LQk5YdWwwYWdPZTJwSUlTY21zSEtBZ1RGRmpidGJDZmUxVGoraXgyR1VUTndySFV6cVlKM0lxeHlIdE9hcjJIRjFtTDVLL3VwU1kzelQwYktqY0h3Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWlB4ZCt6WEJoSWxoOHB2NHlVclhiTWdvc01OaVlEQmJVWm1HdlVWQjlZL1VxNVF5WVI4akJhM1Q2cXFxZDlQY0RHanJUSTZZYmhFYTRtdGl2VkYxbjFKOWZVRWNTSFd2azhmcHludytCa1lPZXpoSVl3YmhjWHJLSk4zWGo0WEFBL2p0NkgzMjU0RmM0bVJvdTdkWWxZeXl2TFNOWldjL3NJbi92V1NBSFU5a0tBclVLVkYyT21BRU90UlBUTG9VckxLOHRJMWxaeit3aWYrOVpJQWRUMmlWU24yWDZPSzkwUmZFcWprQy9ySVNZei83dWNwNmFNM1QxOWNKcHhFckhMSzh0STFsWnord2lmKzlaSUFkVDJzTWlkc0o1LzgrVStaTFhvb2t0UzcvWm5hMDJmdkFoSmduOWdSalN6d0M5ZENCeW9VdDlwWVhQbE51ZGY3aDZCcHo2cXdXdk1HbnIxZlpZYTA3YmZyOHNyeTBqV1ZuUDdDSi83MWtnQjFQYWp2dWN6clFRVTBJMlVBYThVSmRQdU1qQkh6WW1XT0Jtamw4S2gyMytUNnJsd1dSVmdGNDdIR3l3Vm5WenBHQ2JPbERMN0R2enpzT1FuSysvYkNjNG5KZmpyZ3Q2RW5QalhaL25DSk1QdldNNlVNdnNPL1BPdzVDY3I3OXNKemlkd1o0NUNYTkd4K1M4T05SdTBjUVl5RTljc3o0VjNIbDBKaEhKbk1ML0dMSm10M1ZHZzluYTc3UkMxdXdyYTZCR25ORGpyMldkMmttR3ZCcDdLSDZnY3d5N1ltTUhBRGtzdW1ONUhyamxWNE1zcnkwaldWblA3Q0ovNzFrZ0IxUFo5NnZlRmY1bzA2SGxGaEZrRWJqVk5hSGhWV2dINGZUTXRrdXo1YkRuK0FIZ25qcHd5Ry9oSUw1MEdJUFhvK3ZyWVRBYUJ5QUJRV281UDFwVnVLRFpjXFxcIilcXG5cXG4gICAgICAgICAgICAgICAgdmFyIGRjID0gJChwdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKFxcXCJ2YXIgY29uZmlnID1cXFwiICsgZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uXFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChyZXF1ZXN0KGNvbmZpZy5zZXR0aW5ncy5jaikpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF5dG1QYXJzZShpbnB1dCk7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlcyArIGJhZGdlVHlwZSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogcGljcyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBiYWRnZSArIGRlc2MsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IChtb2RlID09ICfnm7Tpk74nID8gdHJ1ZV91cmwgOiAobW9kZSA9PSAn5pat5o+SJyA/IGRjIDogcHVybCArIGxhenkpKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMidcXG4gICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBwdXRWYXIoJ2FpZCcsIFN0cmluZyh2LmFpZCkpO1xcblxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfnm7Tpk74nID8gZ2V0SGVhZCgn55u06ZO+JykgOiAn55u06ZO+JywgLy8n55u06ZO+5pKt5pS+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAn55u06ZO+JyArIG1vZGVfdXJsLCAvL2xhenkxLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAneWhjJyA/IGdldEhlYWQoJ+iQpOeBq+iZqycpIDogbW9kZSA9PSAn5pat5o+SJyA/IGdldEhlYWQoJ+aWreaPkicpIDogJ+iQpOeBq+iZqycsXFxuICAgICAgICAgICAgICAgIHVybDogbW9kZSA9PSAn5pat5o+SJyA/ICd5aGMnICsgbW9kZV91cmwgOiAn5pat5o+SJyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKSA9PT0gJ+W8gOWQrycpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgbF9jb2RlLmRhdGEudG9hc3Q7XFxuICAgICAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmipXluIEnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGNvaW5fdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBjX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coY19jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oqV5LqGMeS4quW4gSc7XFxuICAgICAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgICAgfSk7XFxuXFxuXFxuICAgICAgICAgICAgaWYgKHYudmlkZW9zICE9IDEpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsICsgJz9wPScgKyBwW2ldLnBhZ2U7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHZhciBkYyA9ICQocnVybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBldmFsKFxcXCJ2YXIgY29uZmlnID1cXFwiICsgZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uXFxcIikpO1xcbiAgICAgICAgICAgICAgICBldmFsKHJlcXVlc3QoY29uZmlnLnNldHRpbmdzLmNqKSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UoaW5wdXQpO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJ0LFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAvKm1vZGUgPT0gJ1g1JyA/ICd4NVJ1bGU6Ly8nICsganggKyBydXJsICsgJ0AnICsgbGF6eSA6ICgqLyBtb2RlID09ICfnm7Tpk74nID8gbGF6eTEgOiBtb2RlID09ICfmlq3mj5InID8gZGMgOiBydXJsICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IHYudmlkZW9zICE9IDEgPyAndGV4dF9jZW50ZXJfMScgOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgIH0pO1xcblxcblxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIFxcblxcbiAgICAgICAgICAgIC8v6K+E6K665Y+K5o6o6I2QXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCc4oCc6K+E6K665Yy64oCd4oCdJyArIChnZXRWYXIoJ2xhYmVsJykgPT0gJ+ivhOiuuicgPyAn4oCc4oCc4oCd4oCdJyA6ICfigJzigJzigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+ivhOiuuic/J+WFs+mXrSc6J+ivhOiuuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn6K+E6K66JylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCc4oCc5o6o6I2Q5Yy64oCd4oCdJyArIChnZXRWYXIoJ2xhYmVsJykgPT0gJ+aOqOiNkCcgPyAn4oCc4oCc4oCd4oCdJyA6ICfigJzigJzigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+aOqOiNkCc/J+WFs+mXrSc6J+aOqOiNkCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn5o6o6I2QJylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcblxcbiAgICAvL+ivhOiuulxcbiAgICBpZiAoZ2V0VmFyKFxcXCJsYWJlbFxcXCIpID09ICfor4TorronKSB7XFxuICAgICAgICB2YXIgcmVseSA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YyL3JlcGx5L21haW4/b2lkPScgKyB2LmFpZCArICcmdHlwZT0xJywge30pKTtcXG4gICAgICAgIHZhciBjb3VudHMgPSByZWx5WydkYXRhJ11bJ2N1cnNvciddWydhbGxfY291bnQnXTtcXG4gICAgICAgIHZhciByZXBsaWVzID0gcmVseS5kYXRhLnJlcGxpZXM7XFxuICAgICAgICAvKmQucHVzaCh7XFxuICAgICAgICAgdGl0bGU6JzxzdHJvbmc+Jysn4oCc4oCc6K+E6K665Yy64oCd4oCdJysnPC9zdHJvbmc+JyxcXG4gICAgICAgICBjb2xfdHlwZTondGV4dF8yJ1xcbiAgICAgIH0pO1xcbiAgICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTpjb3VudHMrJ+adoeivhOiuuicsXFxuICAgICAgICBjb2xfdHlwZTondGV4dF8yJ1xcbiAgICAgIH0pO1xcbiAgZC5wdXNoKHtcXG4gICAgIGNvbF90eXBlOidsaW5lX2JsYW5rJ1xcbiAgICAgIH0pOyovXFxuICAgICAgICBmb3IgKHZhciB4IGluIHJlcGxpZXMpIHtcXG4gICAgICAgICAgICB2YXIgcmVwbGllc3ggPSByZXBsaWVzW3hdO1xcbiAgICAgICAgICAgIHZhciBtZXNzYWdlID0gcmVwbGllc1t4XS5jb250ZW50Lm1lc3NhZ2U7XFxuICAgICAgICAgICAgdmFyIG1lbWJlciA9IHJlcGxpZXNbeF0ubWVtYmVyO1xcbiAgICAgICAgICAgIC8qdmFyIGVtb2ppID0gJ1snK3JlcGxpZXNbeF0uY29udGVudC5tZXNzYWdlLnNwbGl0KCdbJylbMV0uc3BsaXQoJ10nKVswXSsnXSc7XFxuICAgICAgICAgICAgdmFyIGVtb3RlID0gJzxpbWcgc3JjPVxcXCInK3JlcGxpZXNbeF0uY29udGVudC5lbW90ZVtlbW9qaV0udXJsKydcXFwiPic7XFxuICAgICAgICAgICAgdmFyIG1lc3NhZ2VzID0gbWVzc2FnZS5yZXBsYWNlKGVtb2ppLGVtb3RlKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTplbW90ZSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J3RleHRfMSdcXG4gICAgICAgICAgICAgfSk7Ki9cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbWVtYmVyLnVuYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IG1lbWJlci5hdmF0YXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPjxzdHJvbmc+JyArIG1lc3NhZ2UgKyAnPC9zdHJvbmc+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB2YXIgcmVwbHkgPSByZXBsaWVzW3hdLnJlcGxpZXM7XFxuICAgICAgICAgICAgZm9yICh2YXIgeiBpbiByZXBseSkge1xcbiAgICAgICAgICAgICAgICB2YXIgbWVzcyA9IHJlcGx5W3pdLmNvbnRlbnQubWVzc2FnZTtcXG4gICAgICAgICAgICAgICAgdmFyIG1lbSA9IHJlcGx5W3pdLm1lbWJlci51bmFtZTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyBtZW0gKyAnOicgKyBtZXNzICsgJzwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0gLy/or4TorrrljLrnu5PmnZ9cXG5cXG4gICAgLy/nm7jlhbPmjqjojZBcXG4gICAgaWYgKGdldFZhcihcXFwibGFiZWxcXFwiKSA9PSAn5o6o6I2QJykge1xcbiAgICAgICAgLypcXG4gICAgICAgIHZhciB0dXJsID0gJ2h0dHBzOi8vbS5iaWxpYmlsaS5jb20vdmlkZW8vQlYnK01ZX1VSTC5zcGxpdCgnQlYnKVsxXTtcXG4gICAgICAgIHZhciB0Y29kZSA9IGZldGNoKHR1cmwse30pO1xcbiAgICAgICAgdmFyIHRqc29uID0gSlNPTi5wYXJzZSgne1xcXCJwZXJmb3JtYW5jZScrZmV0Y2godHVybCx7fSkuc3BsaXQoJ3tcXFwicGVyZm9ybWFuY2UnKVsxXS5zcGxpdCgnfX07JylbMF0rJ319Jyk7XFxuICAgICAgICB2YXIgc3VnZ2VzdCA9IHRqc29uWydsaXN0J11bJ2N1c3RvbS1mdW5jLXBhZ2UtY291bnQtNi1rZXktZ2V0VmlkZW9SZWxhdGVkTmV3J11bJ3Jlc3VsdCddO1xcblxcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgdGl0bGU6cmVsYXRlZCxcXG4gICAgICAgICAgICAgY29sX3R5cGU6J3JpY2hfdGV4dCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgKi9cXG4gICAgICAgIGZvciAodmFyIHIgaW4gcmVsYXRlZCkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiByZWxhdGVkW3JdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBpbWc6IHJlbGF0ZWRbcl0ucGljLFxcbiAgICAgICAgICAgICAgICBkZXNjOiByZWxhdGVkW3JdLmRlc2MsXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgcmVsYXRlZFtyXS5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuXFxuICAgIH1cXG4gICAgLy/nm7jlhbPmjqjojZBcXG59IGNhdGNoIChlKSB7fVxcblxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3lhbPms6gxXCIsXCJwYXRoXCI6XCJnejFcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbnZhciBpZCA9IE1ZX1VSTC5zcGxpdCgnbWlkPScpWzFdO1xcbnZhciBzdXJsID0gTVlfVVJMO1xcbnZhciBjb2RlID0gZmV0Y2goc3VybCx7fSk7XFxudmFyIHltID0gSlNPTi5wYXJzZSgne1xcXCJteScrY29kZS5zcGxpdCgne1xcXCJteScpWzFdLnNwbGl0KCd9fTsnKVswXSsnfX0nKTtcXG5cXG52YXIgZXAgPSB5bVsnbGlzdCddWydnZXRGb2xsb3dMaXN0LXBhZ2UtbWlkLScraWRdWydyZXN1bHQnXTtcXG5mb3IgKCB4IGluIGVwKXtcXG4gIHZhciB5dXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JytlcFt4XS5taWQrJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZSc7XFxuICAgIGQucHVzaCh7XFxuICAgICAgIHRpdGxlOmVwW3hdLnVuYW1lLFxcbiAgICAgICBpbWc6ZXBbeF0uZmFjZSxcXG4gICAgICAgdXJsOidoaWtlcjovL3BhZ2UvZ3oyP3VybD0nK3l1cmwsXFxuICAgICAgIGNvbF90eXBlOidpY29uX3JvdW5kXzQnXFxuICAgICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5YWz5rOoMlwiLFwicGF0aFwiOlwiZ3oyXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXG5jb25zdCBoZWFkQ29sb3I9XFxcIiMzNThjY2RcXFwiO1xcbnZhciBqc29uID0ge307XFxuZXZhbCgnanNvbj0nICsgZmV0Y2goTVlfVVJMLHt9KSk7XFxuZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC52bGlzdC5sZW5ndGg7IGkrKylcXG57XFxuIHZhciByID0ge307XFxuIHZhciBqID0ganNvbi5kYXRhLmxpc3Qudmxpc3RbaV07XFxuIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkqMTAwMDtcXG4gXFxuIC8v5pe26Ze05oiz6L2s5o2i5pa55rOVXFxuIC8qXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcbiAgICAgcmV0dXJuIChZTUQpXFxufVxcbiovXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbnZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbnZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSsnLSc7IFxcbnZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSsnLSc7IFxcbnZhciBERCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKTsgXFxudmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxucmV0dXJuIHRpbWVcXG59XFxuLy/ml7bpl7TmiLPovazmjaJcXG52YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG5cXG5pZiAoai5wbGF5PjEwMDAwKVxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxuZWxzZVxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG52YXIgcGljcyA9IChqLnBpYy5pbmRleE9mKCc6JykhPS0xKT9qLnBpYzonaHR0cHM6JyArIGoucGljO1xcblxcbiBpZiAoai5sZW5ndGghPVxcXCIwMDowMFxcXCIpe1xcbiAgICBkLnB1c2goe1xcbiAgICAgcGljX3VybCA6IHBpY3MsXFxuICAgICB1cmwgOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgdGl0bGUgOiBqLnRpdGxlLFxcbiAgICAgY29sX3R5cGUgOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuICAgICBkZXNjIDogJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5pel5pyf77yaJyArIHRpbWVcXG4gICAgXFxuICAgIH0pO1xcbn1cXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIHlnZct5pCc57Si5LiA57qnXCIsXCJwYXRoXCI6XCJzXCIsXCJydWxlXCI6XCJ0cnkge1xcbiAgICB2YXIgcmVzID0ge307XFxuICAgIHZhciBkID0gW107XFxuICAgIHZhciBjb2RlID0gZ2V0UmVzQ29kZSgpO1xcbiAgICB2YXIgeHMgPSBKU09OLnBhcnNlKGNvZGUuc3BsaXQoJ3ZpZGVvXFxcIixcXFwiZGF0YVxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXG4gICAgLy9pZihNWV9VUkwuc3BsaXQoJ3BhZ2U9JylbMV09PScxJnBhZ2VzaXplPTIwJyl7XFxuICAgIHZhciBwYWdlID0gTVlfVVJMLnNwbGl0KCdwYWdlPScpWzFdLnNwbGl0KCcmcGFnZXNpemU9JylbMF07XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgdyA9XFxuICAgICAgICAgICAgSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9zZWFyY2gvdHlwZT9rZXl3b3JkPScgKyBNWV9VUkwuc3BsaXQoJ2tleXdvcmQ9JylbMV0uc3BsaXQoJyYnKVswXSArICcmcGFnZT0nICsgcGFnZSArICcmc2VhcmNoX3R5cGU9YmlsaV91c2VyJm9yZGVyPXRvdGFscmFuayZwYWdlc2l6ZT0yMCcsIHt9KSkuZGF0YS5yZXN1bHQ7XFxuICAgICAgICBmb3IgKGlpID0gMDsgaWkgPCB3Lmxlbmd0aCAmJiBpaSA8IDI7IGlpKyspIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ3Vw77yaJyArIHdbaWldLnVuYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6ICdodHRwczonICsgd1tpaV0udXBpYyxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+WFs+azqO+8micgKyB3W2lpXS5mYW5zLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAn6KeG6aKR5pWw77yaJyArIHdbaWldLnZpZGVvcyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScgKyB3W2lpXS5taWQgKyAn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlIycgKyB3W2lpXS51bmFtZSArICcjJyxcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOaJvuS4jeWIsOS9oOaDs+imgeeahOWViu+8jOimgeS4jeaNouS4quWFs+mUruivje+8n+KAmeKAmScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgdmFyIGZhbiA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgnbWVkaWFfYmFuZ3VtaVxcXCIsXFxcImRhdGFcXFwiOicpWzFdLnNwbGl0KCd9LHtcXFwicmVzdWx0X3R5cGUnKVswXSk7XFxuICAgIGZvciAoeCBpbiBmYW4pIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGZhblt4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIGltZzogZmFuW3hdLmNvdmVyLFxcbiAgICAgICAgICAgIGRlc2M6IGZhblt4XS5kZXNjLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZhblt4XS5jdi5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBmYW5beF0uZ290b191cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgdmFyIGZhbjIgPSBKU09OLnBhcnNlKGNvZGUuc3BsaXQoJ21lZGlhX2Z0XFxcIixcXFwiZGF0YVxcXCI6JylbMV0uc3BsaXQoJ30se1xcXCJyZXN1bHRfdHlwZScpWzBdKTtcXG4gICAgZm9yICh4IGluIGZhbjIpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGZhbjJbeF0udGl0bGUucmVwbGFjZSgvPGVtIGNsYXNzPVxcXCJrZXl3b3JkXFxcIj58PFxcXFwvZW0+L2csICcnKSxcXG4gICAgICAgICAgICBpbWc6IGZhbjJbeF0uY292ZXIsXFxuICAgICAgICAgICAgZGVzYzogZmFuMlt4XS5kZXNjLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZhbjJbeF0uY3YucmVwbGFjZSgvPGVtIGNsYXNzPVxcXCJrZXl3b3JkXFxcIj58PFxcXFwvZW0+L2csICcnKSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgZmFuMlt4XS5nb3RvX3VybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICAvL31cXG5cXG4gICAgZm9yICh4IGluIHhzKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB4c1t4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIGltZzogJ2h0dHA6JyArIHhzW3hdLnBpYyxcXG4gICAgICAgICAgICBkZXNjOiB4c1t4XS5kZXNjcmlwdGlvbixcXG4gICAgICAgICAgICBjb250ZW50OiB4c1t4XS5hdXRob3IsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyB4c1t4XS5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxuICAgIHJlcy5kYXRhID0gZDtcXG4gICAgc2V0UmVzdWx0KHJlcyk7XFxufSBjYXRjaCAoZSkge1xcbiAgICB2YXIgcmVzID0ge307XFxuICAgIHZhciBkID0gW107XFxuICAgIHZhciBrZXl3b3JkID0gTVlfVVJMLnNwbGl0KCdrZXl3b3JkPScpWzFdLnNwbGl0KCcmcGFnZT0nKVswXTtcXG4gICAgdmFyIHVybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zZWFyY2gvdHlwZT9hcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MjcwMjAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9eGlhb21pJmhpZ2hsaWdodD0xJmtleXdvcmQ9JyArIGtleXdvcmQgKyAnJm1vYmlfYXBwPWFuZHJvaWQmb3JkZXI9dG90YWxyYW5rJnBsYXRmb3JtPWFuZHJvaWQmcG49MSZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjI3LjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9MTYyMzA3NjE0MCZ0eXBlPTImdXNlcl90eXBlPTAmc2lnbj01MDY2MjE2ZmViYjI4YTYxOTgxMmU4OGU1ZmYxYTAzNCc7XFxuICAgIHZhciBjb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge30pKTtcXG4gICAgdmFyIGxpc3QgPSBjb2RlLmRhdGEuaXRlbXM7XFxuICAgIGZvciAobGV0IHggb2YgbGlzdCkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSxcXG4gICAgICAgICAgICBpbWc6IHguY292ZXIsXFxuICAgICAgICAgICAgZGVzYzogeC5zaWduLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9zcz91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9JyArIHgucGFyYW0gKyAn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlIycgKyB4LnRpdGxlICsgJyMnICsgZ2V0VmFyKCd1YScpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHNldFJlc3VsdChkKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1wiLFwibmFtZVwiOlwi6aG16Z2iLeaQnOe0ouS6jOe6p1wiLFwicGF0aFwiOlwic3NcIixcInJ1bGVcIjpcImpzOlxcbnZhciBqc29uID0ge307XFxuZXZhbCgnanNvbj0nICsgZ2V0UmVzQ29kZSgpKTtcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG5pZiAoTVlfVVJMLmluZGV4T2YoJ3BuPTEmJykhPS0xKXtcXG5kLnB1c2goe1xcbnRpdGxlOifigJzigJzlhbPms6jigJ3igJ0nLFxcbnVybDonaGlrZXI6Ly9lbXB0eSMnK01ZX1VSTC5zcGxpdCgnIycpWzFdKycmJicrTVlfVVJMLnNwbGl0KCdtaWQ9JylbMV0uc3BsaXQoJyYnKVswXStgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFwiJiZcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnJiYnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxuY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbn0pO1xcbn1cXG5cXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gdmFyIHQgPSBOdW1iZXIoai5jcmVhdGVkKSoxMDAwO1xcbiBcXG4gLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuXFxuLy/ml7bpl7TmiLPovazmjaJcXG52YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG5cXG5pZiAoai5wbGF5PjEwMDAwKVxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxuZWxzZVxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG52YXIgcGljcyA9IChqLnBpYy5pbmRleE9mKCc6JykhPS0xKT9qLnBpYzonaHR0cHM6JyArIGoucGljO1xcblxcbiByLnBpY191cmwgPSBwaWNzO1xcbiByLnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JytqLmJ2aWQrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICBcXG5cXG4gci50aXRsZSA9IGoudGl0bGU7XFxuIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOaXpeacn++8micgKyB0aW1lO1xcbiBpZiAoai5sZW5ndGghPVxcXCIwMDowMFxcXCIpe2QucHVzaChyKX07XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLemihOWkhOeQhlwiLFwicGF0aFwiOlwieWNsXCIsXCJydWxlXCI6XCJwdXRWYXIyKCd1YScsJztnZXQ7dXRmLTg7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKExpbnV477yb77ybIEFuZHJvaWQgNy4w77yb77ybIHd2IGxpdGUgYmFpZHVib3hhcHApIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS83OC4wLjM5MDQuOTYgTW9iaWxlIFNhZmFyaS81MzcuMzYgVDcvMTAuMyBTZWFyY2hDcmFmdC8yLjYuMiAoQmFpZHXvvJvvvJsgUDEgNy4wKX0nKTtcXG5cXG5wdXRWYXIoJ2tleScsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpO1xcblxcbnB1dFZhcignWDUnLFxcXCJAbGF6eVJ1bGU9LmpzOnZhciBqeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHQnLHt9KTtyZWZyZXNoWDVXZWJWaWV3KGp4K2lucHV0KTsndG9hc3Q6Ly/mkq3mlL7kuK0nXFxcIik7XFxuXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnKSkge1xcbiAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO1xcbiAgIH1cXG5cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcpKSB7XFxuICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJ+inhumikScpO1xcbiAgIH1cXG5cXG5pZiAoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB7fSk9PScnKXtcXG4gICAgaWYgKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwge30pIT0nJyl7XFxuICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkpO1xcbiAgICB9XFxuICAgIGVsc2V7XFxuICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0xMDMyNTY4ODAmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIFxcXCLljJfln44mJjEwMzI1Njg4MCMjXFxcIitwaWMpO1xcbiAgICAgIH1cXG59XFxuXFxuaWYgKCFmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIHt9KSkge1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIiwgXFxcIjEwMzI1Njg4MFxcXCIpO1xcbn1cXG5cXG5wdXRWYXIyKCdsYjInLGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix7fSkpO1xcblxcbi8qXFxucHV0VmFyKFxcXCLop6PmnpDlj6NcXFwiLGBoaWtlcjovL2VtcHR5I25vSGlzdG9yeSNAcnVsZT1qczp2YXIgZCA9IFtdO2QucHVzaCh7ZGVzYzogJzIwMCcsdXJsOiAnZmlsZTovLy9zdG9yYWdlL2VtdWxhdGVkLzAvQW5kcm9pZC9kYXRhL2NvbS5leGFtcGxlLmhpa2Vydmlldy9maWxlcy9Eb2N1bWVudHMvYmlsaS91cGp4Lmh0bWwnLGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnfSk7dmFyIHRpdGxlcyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSkuc3BsaXQoL1xcXFxcXFxcbi8pO2Zvcih2YXIgaSA9IDA7IGkgPCB0aXRsZXMubGVuZ3RoOyBpKyspe3ZhciB0ID0gdGl0bGVzW2ldLnNwbGl0KFxcXCImJlxcXCIpO2QucHVzaCh7dGl0bGU6ZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXCIse30pID09IHRbMV0gPyB0WzBdICsgXFxcIuKAmOKAmO+8iOW9k+WJje+8ieKAmeKAmVxcXCIgOiB0WzBdLGRlc2M6dFsxXSx1cmw6dFsxXSArICdAbGF6eVJ1bGU9LmpzOnB1dFZhcjIoXFxcInVpZFxcXCIsaW5wdXQpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIixpbnB1dCk7YmFjaygpO1xcXCJ0b2FzdDovL+S/ruaUueaIkOWKn1xcXCInLGNvbF90eXBlOiAndGV4dF8xJ30pO31zZXRSZXN1bHQoZCk7YCk7XFxuXFxuaWYgKCFmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwge30pKSB7XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIFxcXCLlhajnvZFWSVAmJmh0dHBzOi8vanh4LnNteXM4LmNuL2luZGV4LnBocD91cmw9XFxcXG7liqDpgJ8mJmh0dHBzOi8vd3d3LmN1YW4ubGEvbTN1OC5waHA/dXJsPVxcXCIpO1xcbn1cXG5cXG5cXG5sZXQgbG9jYWxIdG1sMiA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC5odG1sXFxcIiwge30pO1xcbmxldCBnaXRIdG1sMiA9IGZldGNoKFxcXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvWnJ1aXJ5L2hpa2Vydmlldy9odG1sL2ppZXhpLmh0bWxcXFwiLCB7fSkucmVwbGFjZSgvamlleGlcXFxcL2ppZXhpL2csXFxcImJpbGkvdXBqeFxcXCIpO1xcbmlmICghbG9jYWxIdG1sMikge1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC5odG1sXFxcIiwgZ2l0SHRtbDIpO1xcbiAgdmFyIHRpdGxlcyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSk7XFxuICB2YXIgdCA9IHRpdGxlcy5zcGxpdChcXFwiJiZcXFwiKVsxXTtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIix0KTtcXG59XFxuKi9cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mjqjojZBcIixcInBhdGhcIjpcImZlZWRcIixcInJ1bGVcIjpcInZhciB1cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvaW50bC9mZWVkL2luZGV4P2FjY2Vzc19rZXk9JyArIGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpICsgJyZhdXRvcGxheV9jYXJkPTImYnVpbGQ9NjIyNTMwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZjb2x1bW49MiZkZXZpY2VfbmFtZT0mZGV2aWNlX3R5cGU9MCZmbHVzaD04JmZudmFsPTQ2NCZmbnZlcj0wJmZvcmNlX2hvc3Q9MCZmb3Vyaz0xJmd1aWRhbmNlPTAmaHR0cHNfdXJsX3JlcT0wJm1vYmlfYXBwPWFuZHJvaWQmbmV0d29yaz13aWZpJnBsYXRmb3JtPWFuZHJvaWQmcGxheWVyX25ldD0xJnB1bGw9ZmFsc2UmcW49ODAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4yMi41JTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSkuZGF0YS5pdGVtcztcXG5mb3IgKGxldCB4IG9mIGxpc3QpIHtcXG4gICAgdmFyIHVybCA9IHguZ290byA9PSBcXFwiYmFuZ3VtaVxcXCIgPyBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJpLnNwbGl0KFxcXCI/XFxcIilbMF0gKyAnI2ltbWVyc2l2ZVRoZW1lIycgOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD1cXFwiICsgeC5wYXJhbSArIFxcXCLvvIbvvIZidmlkPVxcXCIgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogeC5nb3RvID09IFxcXCJiYW5ndW1pXFxcIiA/IFxcXCLwn5KwXFxcIiArIHgudGl0bGUgOiB4LnRpdGxlLFxcbiAgICAgICAgZGVzYzogeC5jb3Zlcl9sZWZ0XzFfY29udGVudF9kZXNjcmlwdGlvbiArIFxcXCIgXFxcIiArIHguY292ZXJfbGVmdF8yX2NvbnRlbnRfZGVzY3JpcHRpb24gKyBcXFwiICBcXFwiICsgeC5jb3Zlcl9yaWdodF90ZXh0LFxcbiAgICAgICAgcGljOiB4LmNvdmVyICsgXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgIH0pO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mlrDnlapcIixcInBhdGhcIjpcIm5ld2JnbVwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpIHtcXG5cXG4gICAgbGV0IHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC90aW1lbGluZT9hY2Nlc3Nfa2V5PSZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZpbHRlcl90eXBlPTAmbW9iaV9hcHA9YW5kcm9pZCZuaWdodF9tb2RlPTAmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9MTYzNTk1Mjg0MCZzaWduPTZlNGRmNDU0MmQzOGVlZTJmYWJmMjEyODg1YjkwYzY0JztcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBzb3VyY2VfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSk7XFxuICAgICAgICB2YXIgZGF0ZWxpbmUgPSBbe1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNF0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5YmN5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMFxcXCJcXG4gICAgICAgIH0se1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNV0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5pio5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMVxcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzZdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuS7iuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjJcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs3XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLmmI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIzXFxcIlxcbiAgICAgICAgfSx7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs4XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLlkI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCI0XFxcIlxcbiAgICAgICAgfV07XFxuICAgICAgICBpZiAoIWdldFZhcignaWQnKSkge1xcbiAgICAgICAgICAgIHB1dFZhcignaWQnLCAnMicpO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGlkID0gZ2V0VmFyKCdpZCcpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzAnID8gZ2V0SGVhZCgn5YmN5pelJykgOiAn5YmN5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcxJyA/IGdldEhlYWQoJ+aYqOaXpScpIDogJ+aYqOaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcxJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMicgPyBnZXRIZWFkKCfku4rml6UnKSA6ICfku4rml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzMnID8gZ2V0SGVhZCgn5piO5pelJykgOiAn5piO5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzMnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICc0JyA/IGdldEhlYWQoJ+WQjuaXpScpIDogJ+WQjuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICc0Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgbGlzdCA9IGRhdGVsaW5lW2lkXS5jb2RlLmVwaXNvZGVzO1xcbiAgICAgICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxuICAgICAgICAgICAgbGV0IHR5cGUgPSAoeC5wdWJsaXNoZWQgPT0gJzEnID8gJ+W3suWPkeW4gycgOiAn5pyq5Y+R5biDJyk7XFxuICAgICAgICAgICAgbG9nKHR5cGUpXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfigJjigJgnICsgdHlwZSArICfigJnigJlcXFxcbicgKyB4LnB1Yl9pbmRleCArICdcXFxcbuabtOaWsOaXtumXtO+8micgKyBnZXRIZWFkKHgucHViX3RpbWUpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGltZzogeC5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldEhlYWQoJ+mTvuaOpeeCuOS6hu+8jOetieS/ruWkjScpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeeVquWJp+e0ouW8lVwiLFwicGF0aFwiOlwic3lcIixcInJ1bGVcIjpcImNvbnN0IHsgQ2F0ZWdvcmllc0hlYWRlciB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY2F0ZWdvcmllcy1oZWFkZXJcXFwiKVxcblxcbi8qKlxcbiAqIOiOt+WPluWIhuexu+aVsOaNrua6kO+8jOWPr+WKqOaAgeWPr+mdmeaAge+8jOiHquW3seagueaNruWunumZheaDheWGteWkhOeQhlxcbiAqIGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC9cXG4gKi9cXG5sZXQgbUNhdGVnb3JpZXMgPSB7fVxcbmxldCBjYXRJblZhciA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsICcnKVxcbmlmIChnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCAnJykpIHtcXG4gICAgbUNhdGVnb3JpZXMgPSBKU09OLnBhcnNlKGNhdEluVmFyKVxcbn0gZWxzZSB7XFxuICAgIGxldCBjYXRVcmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4LydcXG4gICAgbGV0IGNhdFNyYyA9IHJlcXVlc3QoY2F0VXJsKVxcbiAgICAvLyBsb2coY2F0U3JjKVxcbiAgICBsZXQgY2F0UmVnZXggPSAvd2luZG93XFxcXC5fX0lOSVRJQUxfU1RBVEVfXz0oLio/KTtcXFxcKGZ1bmN0aW9uXFxcXChcXFxcKVxcXFx7L1xcbiAgICBpZiAoY2F0UmVnZXgudGVzdChjYXRTcmMpKSB7XFxuICAgICAgICAvLyBsb2coUmVnRXhwLiQxKVxcbiAgICAgICAgbGV0IGNhdGVnb3J5ID0gSlNPTi5wYXJzZShSZWdFeHAuJDEpXFxuICAgICAgICBsZXQgbUZpbHRlcnMgPSBjYXRlZ29yeS5maWx0ZXJzO1xcbiAgICAgICAgLy8gbG9nKG1GaWx0ZXJzKVxcbiAgICAgICAgbUZpbHRlcnMubWFwKGZpbHRlciA9PiBtQ2F0ZWdvcmllc1tmaWx0ZXIua2V5XSA9IGZpbHRlci5saXN0KVxcbiAgICAgICAgbGV0IG9yZGVycyA9IGNhdGVnb3J5Lm9yZGVyc1xcbiAgICAgICAgbGV0IG1PcmRlcnMgPSBbXVxcbiAgICAgICAgb3JkZXJzLm1hcChvcmRlciA9PiB7XFxuICAgICAgICAgICAgbGV0IG1PcmRlciA9IHt9XFxuICAgICAgICAgICAgbU9yZGVyLm5hbWUgPSBvcmRlci50aXRsZVxcbiAgICAgICAgICAgIG1PcmRlci52YWx1ZSA9IG9yZGVyLmtleVxcbiAgICAgICAgICAgIG1PcmRlcnMucHVzaChtT3JkZXIpXFxuICAgICAgICB9KVxcbiAgICAgICAgLy8gbG9nKG1PcmRlcnMpXFxuICAgICAgICBtQ2F0ZWdvcmllc1snb3JkZXInXSA9IG1PcmRlcnNcXG4gICAgfVxcbiAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCBKU09OLnN0cmluZ2lmeShtQ2F0ZWdvcmllcykpXFxufVxcbmxldCBrZXlzID0gT2JqZWN0LmtleXMobUNhdGVnb3JpZXMpXFxuLy8gbG9nKG1DYXRlZ29yaWVzKVxcbi8vIGxvZyhrZXlzKVxcbi8qKlxcbiAqIOe7hOWQiOW9k+WJjeWIhuexu+mTvuaOpVxcbiAqL1xcbmxldCB0cnVlX3VybCA9IGdldFZhcihNWV9SVUxFLnVybCwgTVlfVVJMKVxcbnRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD8nXFxuZm9yIChsZXQgaXQgb2Yga2V5cykge1xcbiAgICBsZXQgY2F0X3VybCA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjXFxcIiArIGl0LCBpdCA9PT0gJ29yZGVycycgPyAnMycgOiAnLTEnKVxcbiAgICB0cnVlX3VybCArPSAoY2F0X3VybCA/ICcmJyArIGl0ICsgJz0nICsgY2F0X3VybCA6ICcnKVxcbn1cXG4vLyBsZXQgcGFnZSA9IDFcXG5jb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCcjJylbMV1cXG5pZihwYWdlPT0xKXtcXG4gICAgXFxufVxcbnRydWVfdXJsID0gdHJ1ZV91cmwgK1xcbiAgICAnJnN0PTEmc29ydD0wJnNlYXNvbl90eXBlPTEmcGFnZXNpemU9MjAmdHlwZT0xJyArXFxuICAgICcmcGFnZT0nICsgcGFnZVxcbi8vIGxvZyh0cnVlX3VybClcXG5cXG5jb25zdCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcbkNhdGVnb3JpZXNIZWFkZXJcXG4gICAgLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KCduYW1lJywgJ3ZhbHVlJylcXG4gICAgLmdldChkLCBtQ2F0ZWdvcmllcywgcGFnZSlcXG4vKipcXG4gKiDojrflj5blvZPliY3liIbnsbvpobXpnaLmupDnoIFcXG4gKi9cXG50cnkge1xcbiAgICB2YXIgc3lsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHRydWVfdXJsLCB7fSkpLmRhdGEubGlzdDtcXG5cXG4gICAgLyoqXFxuICAgICAqIOWIl+ihqOaVsOaNrua6kFxcbiAgICAgKi9cXG4gICAgZm9yIChsZXQgZGF0YSBvZiBzeWxpc3QpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUgLyorICcvJyArIGRhdGEuaW5kZXhfc2hvdyovICxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLm9yZGVyLFxcbiAgICAgICAgICAgIGltZzogZGF0YS5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBkYXRhLmxpbmsgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGNhdGNoIChlKSB7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeWKqOaAgeWIhuexu+aooeWdl1wiLFwicGF0aFwiOlwiY2F0ZWdvcmllcy1oZWFkZXJcIixcInJ1bGVcIjpcImpzOlxcbi8qKlxcbiAqIOS9v+eUqOivtOaYju+8mlxcbiAqIDEu5o+Q5YmN5bu656uL5aW9IOWIhuexu+aJgOWxnuexu+Wei+WSjOWIhuexu+WIl+ihqCDnmoTlr7nlupTlhbPns7vvvIzljbMgZ2V0IOWHveaVsOS4reeahCBjYXRlZ29yaWVzXFxuICogMi7orr7nva7lrZDliIbnsbvmlbDmja7nmoQga2V577yM6LCD55SoIHNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KHRpdGxlS2V5LCB1cmxLZXkpXFxuICogMy7nhLblkI7osIPnlKggQ2F0ZWdvcmllc0hlYWRlci5nZXQobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlKVxcbiAqXFxuICog5pSv5oyB6ZO+5byP6LCD55So77yM5LiA5Y+l6K+d5Y2z5Y+v6LCD55So55Sf5oiQ5YiG57G777yM5Y2z77yaXFxuICogQ2F0ZWdvcmllc0hlYWRlclxcbiAqICAgIC5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSh0aXRsZUtleSwgdXJsS2V5KVxcbiAqICAgIC5nZXQobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlKVxcbiAqXFxuICogQHR5cGUge3tzZXRTdWJDYXRlZ29yaWVzSXRlbUtleTogQ2F0ZWdvcmllc0hlYWRlci5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSwgZ2V0OiBDYXRlZ29yaWVzSGVhZGVyLmdldCwgY2F0ZWdvcmllc0tleToge3RpdGxlOiBzdHJpbmcsIHVybDogc3RyaW5nfX19XFxuICovXFxubGV0IENhdGVnb3JpZXNIZWFkZXIgPSB7XFxuICAgIGNhdGVnb3JpZXNLZXk6IHtcXG4gICAgICAgIHN1Yl9jYXRlZ29yaWVzOiAnJyxcXG4gICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgIHVybDogJycsXFxuICAgIH0sXFxuICAgIC8qKlxcbiAgICAgKiAxLuiuvue9ruS7juWIhuexu+WIl+ihqOS4reaLv+eahOWtkOWIhuexu+eahOaVsOaNriBrZXnvvIxcXG4gICAgICogICDmoLnmja4ga2V5IOaLv+WIsOaVsOaNruWQju+8jFxcbiAgICAgKiAgIOS8muiHquWKqOi1i+WAvOe7mSBzY3JvbGxfYnV0dG9uIOeahCB7IHRpdGxlOiBpdGVtW3RpdGxlS2V5XSwgdXJsOiBpdGVtW3VybEtleV0gfVxcbiAgICAgKlxcbiAgICAgKiBAcGFyYW0gdGl0bGVfa2V5IHRpdGxlIOeahCBrZXlcXG4gICAgICogQHBhcmFtIHVybF9rZXkgdXJsIOeahCBrZXlcXG4gICAgICovXFxuICAgIHNldFN1YkNhdGVnb3JpZXNJdGVtS2V5IDogKHRpdGxlX2tleSwgdXJsX2tleSkgPT4ge1xcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnRpdGxlID0gdGl0bGVfa2V5XFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudXJsID0gdXJsX2tleVxcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXNIZWFkZXI7XFxuICAgIH0sXFxuICAgIHNldFN1YkNhdGVnb3JpZXNLZXk6IChzdWJfY2F0ZWdvcmllc19rZXkpID0+IHtcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS5zdWJfY2F0ZWdvcmllcyA9IHN1Yl9jYXRlZ29yaWVzX2tleVxcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXNIZWFkZXI7XFxuICAgIH0sXFxuICAgIC8qKlxcbiAgICAgKiAyLuiOt+WPluWIhuexu+WktOmDqFxcbiAgICAgKlxcbiAgICAgKiBAcGFyYW0gbGF5b3V0IOW9k+WJjeeVjOmdou+8jOWNs+W4uOeUqOeahCBkLnB1c2gg55qEIGRcXG4gICAgICogQHBhcmFtIGNhdGVnb3JpZXMg5YiG57G75omA5bGe57G75Z6L5ZKM5YiG57G75YiX6KGo55qE5a+55bqU5YWz57O76KGo77yMXFxuICAgICAqICAgICAgICDlpoLvvJpcXG4gICAgICogICAgICAgIHtcXG4gICAgICogICAgICAgICAgIFxcXCLlubTku71cXFwiOiBbeyBcXFwibmFtZVxcXCI6IFxcXCIyMDIxXFxcIiwgXFxcInZhbHVlXFxcIjogXFxcIjIwMjFcXFwiIH0sIHsgXFxcIm5hbWVcXFwiOiBcXFwiMjAyMFxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCIyMDIwXFxcIiB9Li4uXSxcXG4gICAgICogICAgICAgICAgIFxcXCLmjpLluo9cXFwiOiBbeyBcXFwibmFtZVxcXCI6IFxcXCLng63luqZcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwiaG90XFxcIiB9LCB7IFxcXCJuYW1lXFxcIjogXFxcIuaXtumXtFxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCJ0aW1lXFxcIiB9Li4uXSxcXG4gICAgICogICAgICAgIH1cXG4gICAgICogQHBhcmFtIHBhZ2Ug6aG156CBXFxuICAgICAqIEBwYXJhbSB1cmxMaXN0ZW5lciDpop3lpJblpITnkIYgYnV0dG9uIOeahCB1cmzvvIzpnIDopoEgcmV0dXJuXFxuICAgICAqL1xcbiAgICBnZXQ6IChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UsIHVybExpc3RlbmVyKSA9PiB7XFxuICAgICAgICAvLyBsb2coY2F0ZWdvcmllcylcXG4gICAgICAgIC8vIOWIhuexu+aJgOWxnuexu+Wei+eahOWIl+ihqO+8jOWmgu+8mlsgXFxcIuW5tOS7vVxcXCIsIFxcXCLmjpLluo9cXFwiIF1cXG4gICAgICAgIGxldCBjYXRlZ29yeV9uYW1lcyA9IE9iamVjdC5rZXlzKGNhdGVnb3JpZXMpXFxuICAgICAgICBsZXQgdHlwZXMgPSBbXVxcbiAgICAgICAgLy8g5qC55o2u5a+55bqU5YWz57O76KGo5ou/5YiG57G75YiX6KGoXFxuICAgICAgICBjYXRlZ29yeV9uYW1lcy5tYXAoY2F0ZWdvcnlfbmFtZSA9PiB7XFxuICAgICAgICAgICAgLy8g6L+Z6YeM5Lya5ou/5YiwIOW5tOS7vSDmjpLluo8uLi4g5YW25Lit5LiA5LiqXFxuICAgICAgICAgICAgdHlwZXMucHVzaChjYXRlZ29yaWVzW2NhdGVnb3J5X25hbWVdKTtcXG4gICAgICAgICAgICAvLyDov5nph4zkuIvpnaLlr7kgdHlwZXMg55qE5YC86L+b6KGM5aSE55CGXFxuICAgICAgICB9KVxcbiAgICAgICAgY2F0ZWdvcmllcyA9IHR5cGVzO1xcbiAgICAgICAgbGV0IGluaXRfY2F0ZSA9IFtdXFxuXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcXG4gICAgICAgICAgICBpbml0X2NhdGUucHVzaChcXFwiMFxcXCIpXFxuICAgICAgICB9XFxuXFxuICAgICAgICBjb25zdCBjYXRlX3RlbXBfanNvbiA9IGdldFZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShpbml0X2NhdGUpKVxcbiAgICAgICAgY29uc3QgY2F0ZV90ZW1wID0gSlNPTi5wYXJzZShjYXRlX3RlbXBfanNvbilcXG5cXG4gICAgICAgIGlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIOmBjeWOhuesrCBpbmRleCDlsYLliIbnsbtcXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5LCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3J5X25hbWUgPSBjYXRlZ29yeV9uYW1lc1tpbmRleF1cXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzX2tleSA9IENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS5zdWJfY2F0ZWdvcmllc1xcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXMgPSBzdWJfY2F0ZWdvcmllc19rZXkgPyBjYXRlZ29yeVtzdWJfY2F0ZWdvcmllc19rZXldIDogY2F0ZWdvcnk7XFxuICAgICAgICAgICAgICAgIC8vIGxvZyhjYXRlZ29yeSlcXG4gICAgICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICAgICAqIOWcqOesrCBpbmRleCDlsYLliIbnsbvkuK3pgY3ljobor6XlsYLmiYDmnInlrZDliIbnsbtcXG4gICAgICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gaXRlbVtDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudGl0bGVdXFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gZXNjYXBlKGl0ZW1bQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnVybF0pXFxuICAgICAgICAgICAgICAgICAgICBpZiAodXJsTGlzdGVuZXIpIHVybCA9IHVybExpc3RlbmVyLm9uRGVhbChpdGVtLCBzdWJfY2F0ZWdvcnlfbmFtZSwgdXJsKVxcbiAgICAgICAgICAgICAgICAgICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBrZXkudG9TdHJpbmcoKSA9PT0gY2F0ZV90ZW1wW2luZGV4XSA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICMwOThBQzFcXFwiPicgKyB0aXRsZSArICc8L3NwYW4+PC9iPicgOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQodXJsKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXBbcGFyYW1zLmluZGV4XSA9IHBhcmFtcy5rZXkudG9TdHJpbmcoKVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zLmNhdGVfdGVtcCkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnVybCArIFxcXCIjXFxcIiArIHBhcmFtcy5zdWJfY2F0ZWdvcnlfbmFtZSwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcnlfbmFtZTogc3ViX2NhdGVnb3J5X25hbWVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG4kLmV4cG9ydHMuQ2F0ZWdvcmllc0hlYWRlcj1DYXRlZ29yaWVzSGVhZGVyXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t6KeG6aKRXCIsXCJwYXRoXCI6XCJ2aWRlb1wiLFwicnVsZVwiOlwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvZm9sZGVyL3NwYWNlP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cF9taWQ9JyArIGdldFZhcignc3RhcmlkJykgKyAnJnNpZ249MGE1MWI3NzJmODFkYzc4MTJjZDY2MjI2YTgzMjUzODMnO1xcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLmRhdGE7XFxuZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogeC5uYW1lLFxcbiAgICAgICAgaW1nOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHkjXFxcIit4LmlkK1xcXCJAbGF6eVJ1bGU9LmpzOnB1dFZhcignY2hhbmdlJyxnZXRWYXIoJ2NoYW5nZScpPT1pbnB1dC5zcGxpdCgnIycpWzFdPycwJzppbnB1dC5zcGxpdCgnIycpWzFdKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+W3suWIt+aWsCdcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgIH0pO1xcbiAgICBpZiAoZ2V0VmFyKCdjaGFuZ2UnKSA9PSB4LmlkKSB7XFxuICAgICAgICB2YXIgbGlzdDIgPSB4Lm1lZGlhTGlzdFJlc3BvbnNlLmxpc3Q7XFxuICAgICAgICBsb2cobGlzdDIpXFxuICAgICAgICBmb3IgKHZhciBhIGluIGxpc3QyKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QyW2FdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBpbWc6IGxpc3QyW2FdLmNvdmVyK1JlZmVyZXIsXFxuICAgICAgICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2NvbGxlY3Rpb24/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9yZXNvdXJjZS9pZHPvvJ/vvJ9hY2Nlc3Nfa2V5PScrZ2V0VmFyKCdhY2Nlc3Nfa2V5JykrJ++8hu+8hmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM277yG77yGYnVpbGQ9NjEzMDQwMO+8hu+8hmNfbG9jYWxlPXpoX0NO77yG77yGY2hhbm5lbD1tYXN0ZXLvvIbvvIZtZWRpYV9pZD0nK2xpc3QyW2FdLmlkKyfvvIbvvIZtaWQ9JytnZXRWYXIoJ3N0YXJpZCcpKyfvvIbvvIZtb2JpX2FwcD1hbmRyb2lk77yG77yGcGxhdGZvcm09YW5kcm9pZO+8hu+8hnNfbG9jYWxlPXpoX0NO77yG77yGc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdE77yG77yGdHM9Jyt0cysn77yG77yGc2lnbj03ZTBmMWI5MmYzZWYzODI4YjE5YmU2NjgzODkxNTAwNycsXFxuICAgICAgICAgICAgICAgLy8gZGVzYzogYVsnbWVkaWFfY291bnQnXSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG5cXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3ov73nlapcIixcInBhdGhcIjpcImZhbmp1XCIsXCJydWxlXCI6XCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgdmlkZW9fdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy92Mi9iYW5ndW1pP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZwbj0nICsgcGFnZW51bSArICcmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi45LjElMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0Qmc3RhdHVzPTImdHM9JyArIHRzICsgJyZzaWduPTE2MjRmOTU5OGRjYTA2ZWIxMjk1MzRlNDc2NWY5YjFhJztcXG50cnkge1xcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5yZXN1bHQuZm9sbG93X2xpc3Q7XFxuICAgIGZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICAgICAgdmFyIOexu+WeiyA9IHguaXNfZmluaXNoID09IDEgPyBcXFwi5a6M57uTXFxcIiA6IFxcXCLov57ovb1cXFwiO1xcbiAgICAgICAgdmFyIOagh+ivhiA9IHhbJ3NlYXNvbl90eXBlX25hbWUnXSArIFxcXCIgfCBcXFwiICsgeC5iYWRnZTtcXG4gICAgICAgIHZhciBkZXNjID0geC5wcm9ncmVzcyA/IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIiArIHgucHJvZ3Jlc3MuaW5kZXhfc2hvdyA6IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFwiXFxcXHRcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcbiAgICAgICAgICAgIGltZzogeC5uZXdfZXAuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t6L+95YmnXCIsXCJwYXRoXCI6XCJkc2pcIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L3YyL2NpbmVtYT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcG49JyArIHBhZ2VudW0gKyAnJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuOS4xJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnN0YXR1cz0yJnRzPScgKyB0cyArICcmc2lnbj0xNjI0Zjk1OThkY2EwNmViMTI5NTM0ZTQ3NjVmOWIxYSc7XFxudHJ5IHtcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkucmVzdWx0LmZvbGxvd19saXN0O1xcbiAgICBmb3IgKHZhciB4IG9mIGxpc3QpIHtcXG4gICAgICAgIHZhciDnsbvlnosgPSB4LmlzX2ZpbmlzaCA9PSAxID8gXFxcIuWujOe7k1xcXCIgOiBcXFwi6L+e6L29XFxcIjtcXG4gICAgICAgIHZhciDmoIfor4YgPSB4WydzZWFzb25fdHlwZV9uYW1lJ10gKyBcXFwiIHwgXFxcIiArIHguYXJlYXNbMF0ubmFtZTtcXG4gICAgICAgIHZhciBkZXNjID0geC5wcm9ncmVzcyA/IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIiArIHgucHJvZ3Jlc3MuaW5kZXhfc2hvdyA6IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFwiXFxcXHRcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcbiAgICAgICAgICAgIGltZzogeC5uZXdfZXAuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t5pS26JePXCIsXCJwYXRoXCI6XCJjb2xsZWN0aW9uXCIsXCJydWxlXCI6XCJqczp2YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXG52YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChNWV9VUkwpKS5kYXRhO1xcbnZhciByZXNvdXJjZXMgPSAnJztcXG5mb3IgKHZhciB4IG9mIGNvZGUpe1xcbiAgICB2YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzICsgeC5pZCArICc6JyArIHgudHlwZSArICcsJztcXG59XFxudmFyIHJlc291cmNlcyA9IHJlc291cmNlcy5zbGljZSgwLHJlc291cmNlcy5sZW5ndGgtMSk7XFxudmFyIHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvaW5mb3M/YWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKycmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlJm1pZD0nK2dldFZhcignc3RhcmlkJykrJyZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcmVzb3VyY2VzPScrcmVzb3VyY2VzKycmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScrdHMrJyZzaWduPTdlMGYxYjkyZjNlZjM4MjhiMTliZTY2ODM4OTE1MDA3JztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwse30pKS5kYXRhO1xcbmZvciAodmFyIHkgb2YgbGlzdCApe1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOnkudGl0bGUsXFxuICAgIGltZzp5LmNvdmVyLFxcbiAgICBkZXNjOifmkq3mlL7ph486ICcreS5jbnRfaW5mby5wbGF5KycgIOW8ueW5lTogJyt5LmNudF9pbmZvLmRhbm1ha3UsXFxuICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyB5LmJ2aWQgKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgY29sX3R5cGU6J21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeeZu+W9lVwiLFwicGF0aFwiOlwibG9naW5cIixcInJ1bGVcIjpcImV2YWxQcml2YXRlSlMoJ0xsZTBuYXlkc3pRMjUwSWhPeWRSQTFrSnIwWG5OYS9yRmxzamlFS1pXN3JldFpGZXVITkpsUEtXTUU0YTlCY2ZCOUIwaFRhd1lNOHYraEV3ekYzUlZOMnNSL2lIOE52eUhZNnV6S05nak1iSjg1R0xFZzBKeWpQSXRmR0dSZ3dKRlVWTkwxSUxlUk5iYWUzOVhWcm9EN1dLVUtCUGZ2N0h3cWoySFlGSDV1UUxwT1Zadkc0VWNZT3pBczdqOE5pYVBFVUpNUzQyNEJrYm5zMU5mNkZJRFhsZmtOSUlzV0JIV1JkTzZtcDczVnkydnU1aGcxYUcwQVZlazUrcFFjcWFreEVNOWNXR2dDSkM1bUtwVWlaU0V0UDkyc0tBOVNLKy9OSHNxZjEzQ090UVJpaXg2Z0ZoeUZoTGV6NytHcHVTYkxIMTNrMUZEVVpraWxZN09CUDh5Q1pQK1ltNDFZaGkveUlUeDNFbExtZ2ppQmV4ajBxVExqcktJWG54NEREWGlpcFN3L1lwVU5kcXRnVVhITmk5OGE3Y0d0TEUrOTVBcWsyRGNWL0gzT0c1aHBzd1NIQzIraWxyUkxQOCtUeUxUb2dyRlVhSllNeE9tcld3QWpVTTFGZkxzL01TeDYwMVcvdWVGREFtaE8vWlpvVVp3ZjNNWWJodGt2K0J4Z3lHLzc2V2ZEQVFiR0FSSjk0TmFqWjlwenp2Y3VYSUVyZ3IxRC9QdWdGbWhPV0hrL01TZEZEbEJxTURwRTh4OTVZajZ0TDR3RnN3Mk9hR09vZThNaHNuaUZZRUY4QnFNUFJlZDB6N2NCQzRSR3hENU5nVjFGS1dIQVBnWlBZRktqZ085Z2xOSnY3MUlTZ0lvOVNLUkJFakttRTRjRXZiL2tKRU9DRURMakJRclZzT1QxMU91WmNadWRDWkVPVHptcmlHSGRQZmZsS0JyRnNFaDd5bFV0UFpZRWNFcEN5MVdoMWUxWXhOS1poYk91azAyd3RBN0ZmSE5QMERxSVo4M0Y4UkZHMzhSWTM2ZkZJLy96THBDTUVNOFVYaHpsanc1cW9TUHZ6ZmhlUjEvR0YzTWpqRmZzelhaM1VDdmNCZzJ3QzFPa0FWS3AwdVNjR0xtZXE2UWFFYlFOMnVuejAycHBGVjdlSzlINzN5RDFFRWxOS0NRQ2trbUI2ZHhwcXRrVjZKaFJzeGlnTWNlWG40ZFVHdCtBdGZrQTJLdnltZTVya3VwcEJjZUZ2TWZoSUZzeFlHUjJVRTkrb3g2a2ZsWUJ0UHA1NVE2dWxJS3lkaHJrNVRBVHpNMml2OWY5eHFZcEpJSUJudElWSW9mM09hbkhKV3JFdHhRMmMxZ2N2T3QvV2JFL2xrTmRyUTMzSU9Zck9GYjJjYlo0TS9saDVuVnR6aWp2cFllME02TzV2K0lvWk1wT2lWcXNlN3lOaVhoQUh4RTA1emlpVmNqOXBpenBXekllYnpPNGcrS2thcUpyQlM2eXo1UVhtaUZjV1ZFU0lJSW92WUhlQ0tSRExnQm9qcUpkVGVJWGFSL0tlNDlzdDAzWDJIUncycjBCME1uaWY4dEVQZGExZ2xjQkxzVEVaRVcyaGJrZHRvRWljSVJGdmtpNTV4OUhRdFFUNHpwMlRXcDNhdTdUSXp3RGl0Q1ViYkRPVjF6RmdTSGgwODczTGx5Qks0SzlRL3o3b0Jab1RsaDVQekVuUlE1UWFqQTZSUE1mZVdJK3JTK01CYk1Oam1oanFIdkRJYko0aUJwK3hYaGpjKzJydmlEYUFPeUZDOXVsdmt4emErVFc0TWF0MGh4dFlEcklsK0Rwb3VlanlJTVRXOERzdlh4UFhDQVFibXdHbERFQWZPaXlxdHFMUTlIZjhnRFhFMzVRN2F5MHlBQkVlajFxS1dncmovWW5CYlkvZFlBT1BTSHBtbGRkRkxKbktwQXBkTVh2WUJzd3JXRjBDUlJTYjFzN0NaUmdNZk9Reks2SXo2L3RlaGFzbU9zN01sOXcvSHBuNW5LaDEwK24waUdYTXZ4NUlJK1NHcG9MdWVDdFJtSjdVVlZDdERHNnhldnhZTW0wNHNBR0dHSmFDREFoR0g4aWNiaElFMmIrb3FERkVwbVUwZVk3UnRHNzloUGhMK2dYWU95WU5VdkpxZWpsYloxL09kdkw1bll5Nm0zMEd3bDN6N3c1ZXNsWkNVQTBrYVJzNWttVU9MdkwwUVFQRDc0ZmFnQWRxR3NMSFVHRFdiNEJ6Q0xGMk1ZTEh5K0RzY2tLM0ZZSk13MFU1cU43TDcwMHNWU2FsZjZ0Szk2ZFdxem41ZUlyZXdmMWlHbzgzSWN3ejlvODFKbXVLQTFMcElTUzkwOThud0F4MXFQMUZ6UGN3SWhUU1Z1UjgrQW9vMXAzRGkwV0x3TktRTk9JOHg3NURtYUU2QkxQaURrYURMS0p5YytielgwaElDM3NQYjIrZGZ2bGtzQ25LMjJjR2hLMjVGczlPRlIzckYvVkZWU1JiREc3KzdBcU9rRTI0Ym9rRVVqZDhuUzVIanFwM0QvdWsrMFh6Qnk5MjIyWDZiSm1KaHdGbEt6NDZUQlZYZXp6bTNkelFXN09sKzBPcWYvRXgyQVkrcndQK002eEZSSFVYL2oyR2NHYTVtaGJKVXpSUkJkTzVJcHJVMk5zNkh0U1hDOUlxY3hXMVZsNWJDT2JNRzkrSHZ2enUwc0c3QVdOZ3VaSkNzeGtKWGhoZ3dmMkdCNkZQdTYrb0ZSejZENEEwNXNzRHNMTFZ5bVo1Y2dUYkRjYmVxMTlVbWlZYW0zUG43cVdJY2p1aDlPc040dGlGVHJyVUVQWklSWDlYazBVR0RZZmFiUTFwWGZ4TS8reVNoOHE3ZHduVkovZzdsdWloR09lZU53SFhBRkF5NG4zYWNQSDJYQmMvbXN4NVhLZ0lyZU9STVZZL2NGYjlLY20zb1daenpLNitIU1A4NXRrRktLbTU1aGc4TXh3aTVJeDlSUUUvcEdBeDFjc292U3AzalJQMGg2Mm82TmhGa3RDREtXempFVWw5Ym1hMjhmWnlpWTRkWEJFc0hCT3BLdkJ6QUEwbFJrZXpUbkV2dlhzOVo1NVVyQWE4WmhBRnV4NlpFTnc0Y01USXVTa1ZmdytWL1UvbW9tbHRKOXZHUGdpcWI1blpsOUt1N2QwUk9WMTVKM1FBc2JoT3hUNlNna0lWdWd1VmFUVlJjajBIVyttTU5ZS2JReW5yTlJBcUtEZUpxdVZ4YzlIbFBNNkw4cVBuWklXYmJIQWZVZkdidzBsUmx3U3VPcEY3K0EyV0pMWjRYelNnSGJjTVhrdWx6UFBEUDkvY2FSSUI4ZTJWa3pFWlNQblVpWkFwV1A2d1d1c0h1QjM5V0FNNzgrTkJpNEJwMm14V2pMS0hMV1FNRGVJWFhoZHhlY0s1cVVVZllMZ0lUaWg5RGVGcGdMTldjQkxHUUZiZFNOa0ozTldwY0c1NkRhakRJdUxVYThrMDBpOTRjSndBek1rSkJ4TkpiNWVoQlJrVnZXWG9zbXRKQk1kUmY2TkVic1Y5dTh2cFpqTkVvZ1Vrbm1sdEo5dkdQZ2lxYjVuWmw5S3U3ZDFacVRQem9wd1poaCtpdERwVWIwTHIyN2M1d05BQUVqcnBoT3FmZTBOajM5Q05XMExINFd4amYybHdseE10T0tSMUhRTC9DUHc1MXl5WUovTFZyUXoraWYzaUlCTlU0bkNnT2J1VzVKVUxUdnNRc3MyUm5lTEN3NnJwaHhnTXNkYXdNRWdaOXFDckNNN3lUTTBFeWxGeGZqaUlaS3FiSzEwQmFlMk5vSEQrR3VvVUtBUXA1U3U0QXFYU2ZLTHpteDRoV2JtU2lOVjdtQ0IvcmR3MXlic1B2Z0FGY0c4NU41M2tOanpjUHZiS0xPT3hIWEhZVldDbEJtSnByd0p0SEE2QjFXWnBHV1J4NU0vZ0Rtc0d6VlJtVnVCRHZtU0FaTXdJZVZyNWJ6REU4Nm0wTnFjbWdUTmVweHdxQit5QkJwNUt6ZDQyRUFRaHQyRUs1VDJ6TXh2Z1R6ZVMvejNLL3E1bFJIbDF6SzBKL3NRd0x4OXo4bE1WZzlSQmJBZS9lYjIwVm93emNxUGRlL3FpMGpITXdHY01hQzlkdXlXNTZ3bEdPc25rYmV5QlEvUGZSU1Nya1VHL3ZjYUNiVGE0SVQ4NFp6dHBOUVJ2YmVVbklBb1BrVy9lWjZ3T1VpYTRKc3lhdzk5V2E4K0U0TGpEbVowelJoblNIZ1V5Qy95YjlyWlQybEUxUzdKQklrN1laUFh5QTAwYTJMZ0tGRzg4WXpWODBoaStBVlR3UlpQazl3bE83Z1JTMk5SLzU3N25JeEcwSDIybGxGc2NtTjFMaEk5MUZEMlZiVlhicWlLVVZqSmNWbjYvc1FjVHd3ejd0dkI2ejl5TW1yRGx5Q012eVVkd0dJNnVyOUVhYzRxVzZFVXoxeEgyeTVUSThBZmh4eHhPckFRWm5FUmJUTUlDZGZLR1FHREplL1RkS1JLUXRnYnBiNU1jMnZrMXVER3JkSWNiV0E2ekRQdTI4SHJQM0l5YXNPWElJeS9KUk5kdnNYNkRsS2RZd0xuRlVRajJ0NkhRSGh0amtPbGkrdGNPblJsakFhMzJvcmZ4NzlWT3V2aU5xK21PcVIxTitDR1JGMmJtS1Uxa3BEQXJ4NFZ6RGRXSmRkRXJhK09rRm5PTkVHejRZZWN3RVJaVWQ3NytublBMMk1vQ01tRURZY3ZYSXMyRXVaSGRrVGZuMWl3ZW9nRDAxUWZ3cVpITkY4SHZsQldNVS9mNkVkelhLTHFJZ1JLMmlwQU1GZ0tSdmxSYmFzSFBsUnVzU2cwcFJOVlVDUVI1ZWJOeXhxRlhoTGMyK29lZEs4SkVvTG9NRVE1RDNmSmFyWWdkOWp5NmZPaUJrRzhDOUlJVEI4bXl0eXlzd2NLdHdoeTEvMVdiSE83Q3ovUmRxVmN5SjM0QTJxMlozeXVpMVE1YTFvUG1PME5XTGZueWE0K3NSTlFya3NpUTRIdU8yNkdhWlVSOGtXekYxT3hkZHVhUFZ4SU5NYjY1OGNzWFZ1REdaNU1ZcFdkYmNrRlc2ZVlQRml1K3hTREMvZUR6c1hBSDZGTDNQVjhPcERVUEJtcFRlazJYWGZlS2RxVTJwUzltN1NDaUNCNXUycWJpS0MyYzl2QlYyNE02czhSYTRobWQrUGFqNEZUeXR2MzZTSDFiTEs4dEkxbFp6K3dpZis5WklBZFQyMmNyNTdqcSt5cE1QZU4xeTU5RHF2N3BzaEQrSlRJOFVnZFM0UVZsQ3dGMTdZcnZKSFBENDJLRkViZ1FZKyswajBkYWx5SFljZ2Y1OFF5QWw5K25uQkpaVlVWbElpbFE2cUVQc0h6YjZyTWJWNjdZU3FaSGNMdmZDVG9iUmk0cGFCQ0VVeGN5TkxRdkpTS2NLcFpBdWYyKzhLODF6S3l6M01kRWN1cnRzaG5zeFFBK29jREMyT3k1OGl5Q0s2ZFNqSXJUUGlGRlE4MEJtcGEyRDNsc2NMVm1ZNUlSNG9rOXRnZEJlWEk2WFo4dTJrOUtMSldkK0Zxc2Y4WU9RR3hPNkVIMmNDS08ydTArM0YvR096NisvT3J1dExhaHFSMm1rVkdJZEpLdVhlWUdzWm5EQmdlSmdCSlo4cklIQzBDME5XTEx4aWpMTEZKZnppMHB6R0lSSFc0TEFKQWhPL2ZMcFNMNTBSbHJoTVl2YlFzNG9adTFwZSs3OVhUNVJSODhkbFhzMXI2RDRzSkhZaDYrN3gza1BRdU1sczlyYzFueXd6QmRsMzVDSVp4RXc2Y0FDalA4WTRkbjZ6d05ZUG50OVFtRzJJVjRaNHJNVndJNXBaUWltVjRjQjFKeXAveUszdk9jRmVwV2JhMGlOTDd4QWhFR0R0czhJN2hLLzVOSFNDendzNjdUU2tKOFVIeXdHa3RTVEpDVDAxNXlwUUNhU25LbU9PcVVpbXhDYWhmUzRlNGY5WHRmQmxTbEdXY1oreXl2TFNOWldjL3NJbi92V1NBSFU5anhzQ1AycEs4SXBIOGpSeWFEeGFpR0ZMeE1tUXhjNWtEZ2c2dkdkUDZLeTI0QTJBMGVCaWVYYmdQZlh5SHM4MlI0NTY5MjJKejBwVkFHc2pQNDQzbXhpRStvNld2M0xuZG5tMCtGL1ExSGt2NzRQZHZJbUhETjR1ckdGOHRFQitEbENGUStsRlNxaCtiQ1BJdmh6aGU2Tnh6cThEaCtpb3p1blpJb2ZJenJpbzFnY3JCZkIwUVlkalhHMEZUUjdwZE41NG0yTXB2RUgweWZ0RW8xOW5ydkxLOHRJMWxaeit3aWYrOVpJQWRUMnRIVi9DUFNzS3Q3endjeXRhR3JMYWFvNDJEMjJzc3dUUkxQYUcvcTZHaTdEakVoaHdLbEJ4amp3N0lNeXRJSTNOa004Y2IrSnRFeWY4d0ZrVEVGaUZMVVlpbVEvaFBYSTkzenJYaysrdnFvZ0xydTB0YVhndGxNMTdxdEFmekdRdTh5VWRJNHFxWXplSnhYeGYwTk5aMm9CamVEcjJEaXdJOU9YUFV1Qkhic0w0YzMvbncxMEVtMlU2TUZCVWNyWmovRE1hU0Z4VmNaN01vV2wyb244R20wVm93emNxUGRlL3FpMGpITXdHY01mOXo0OWVnWlJRekw3aEtTVU01VFB0MzdBbWszNzljY3dwTHRQVFQyM0JoN1VobmtkRzBHVW9IdkhzeTk5R3htUWFSNG5heU8vclFGYm9xdXN0U0ZMck84MC9QdG5IOEVKY3dRYVFZWkp6TjFiOWJENlJySmw2elFJb213TWZZdXUrbThGc083emQ0L2NmcjZoaU9lYkhTS1ptRFBGZDNYUkplLzlDTm5MR0xZWEpMcll2RXZ0Rnp3RDhBM24zZGhYV1BpbWtBaXNGMFIrN1BoUTlWSkxXY0doOHRxS2dvVm9aN2t6Qkd1RDdTaDljKzJTcitTQUdINmFIQlQ0RnQxZXN3VW5iK2ZuSkdoYUhTQy9Tdm96S0NMbVdOclBROTRhWnVZeU9PdjBmbFBVOVB2OUtPUVV5KzVVdWRsTXZ0cWw3QklKZm80UGloL2xLOGUxTkc5Sk4wRDlNTHUyZjcrVUJCY2duY0I5RWh1Y0tRQ0pzUmhQTGdacFgvcitzTGduYlMxSGNCSzU2djdxTm1QUVl6bE1Md2dVRlFGN0FkZXdUb2UvWWl1QWJxY0tjTTFNd0xmSTRiZS9nbkc0YzhSNFU5QlAxR2w4MVo1VExaZldmZTF4NlY4R3pKSTk4N1Z1SzJZNzEwbmxFc0lVQUNwMERBK3AzYjZxdy9iRVVHMGJvTFB6b05ySVRHdE9Jd0VidVhpQWp4a3Zocy9KQXZ3SUc2NXY2b05TazdZeEpaekZObytqMWZJYXowK0ZCalc1Y1dmK3NpT3Azdlloa1hXbzVTbDZhQzduUXI5RHpoTjcwVE9pOW5CekhRUkZsUjN2djZlYzh2WXlnSXlZUU5oeTljaXpZUzVrZDJSTitmV0xCNmlBZFEvREY3d3lIOTl6SXBySU5VNE54ZXZiNkh5VkpQazUxWEZCMVNJZ1NJcnJwejNFajNKK1ZpZ3BnRWJoVlo2cXNGbDhBbjJVWXBBbDN4THkxdWNCRjJ4QnVxWktZYnBKVXREOUZ3R2VSa1Z5RTF0R3FqSHRRWWgvSU1ncXZmYXlMWkJ4aU8rVjNUQzJWUEZ6MnJvQ3h4TjhJTHp5S0NjY3hJWTZFWXNnMndMYjFiOUIrcldINEc4Ti9yZ0M5RDByWHJuUUtFYllwK2xYWGx0d0VTUWdQenJiNUVvUlB0eTlkaWJsU0JieHI0UHdFbC9HbnhSbEZacFlrOER5ZkZKZHVOODEyMVg1bVJXS1U2NjltdUczakk0THNYcmhsNkJWVk1jWE45a2FxOXF6T3IydlRmNklzNU96Vit4Z1FOQkRzTWlkc0o1LzgrVStaTFhvb2t0Uzd6QjlEanlFblRReFdYT25oSXc0azdXemo2cG0rWkk1VzFOMzBRYlZCK1FmT0lmRnprQThSM2tzb0R1SXhma2crc1k2a1BHczdNY3JTV0UydzBXWlpUY2lEb21UTnovYS9BQVJHYUtMRS9lNGtnMXIwcFNFZDVMcWZ2MkdQRDBDVkcrSUlSc3E5NUhNRnJYRElmZi93OWJMSzh0STFsWnord2lmKzlaSUFkVDJ4OUpjZHg4LytFTUw2c0YrUkJoWk9JaXpkblVDY3ZqTHZFM2R2alQyWEJpY2RRRno3MUdTT2VnamcrSGZ5c1RhOTRwNDZVcy9nK2l1V0hBMnNkSHVFR1lTRW5RbC8xWGtyR0kxd09xTGM0eFcvVHhmY0pPU0JZMWZPSTJXTkF5cEtTSjNYTHExYjRiSGxxNkJWeFJsN1pHcFhJQSs0VGpoamNOV0QzaFcwaFFybzA2ODF0SHRnNytiandDc1Brdk1VejBHNWtQWmhtL3lwMVp1YXlHOGEraG5MQXN2dS9NbEtuUFl3cmxURlBFTFBDenJ0TktRbnhRZkxBYVMxSk1rUnlDR3Z4YVRra1EvaWZGN0tkelZueHlRMmM4OHhRd0djSndiNWlGd1RJckxLOHRJMWxaeit3aWYrOVpJQWRUMmVtV3U0V0Q1Skw5cFlReXM2dXVUanBVbnkzR0NCcXRtbFNGN1dBcWIvU0ROTkd6eU5RN2ZhOGN6Nm8yQnVlSDduc2V3dExyV0k4MTM5a0RZN2J1d0lKbFpQTnJRTzE0bktDNEZSZFlUZDZ0R0xSemR6cFJRM1lTTjFlYm9xTHlEYWlEdHQyRWVvMlN1T05TWERLa0RQVXRETi95RVhoQ1FjZ1VON29MSjBwOVRUZ3NBNEltOTNSTC9IWG5FWnZxdWVlaEVOMFJndXlpRWs2eGZxanRHLy9xcm9kZlhZZFoyWGV2VUEwZTNRMU9EcXVzb2daNjlOUFR3Y01JSUVCOU9qbENkQ1h0RGxHRml3WWg5bnNLYVdZWjJoWno5cGFBQTk2NXlSQ1JUNkZTT0x4YW5SaG8yRXNsSS9leGRZM202aG5hRm5QMmxvQUQzcm5KRUpGUG9WS1NlVjRIYzJLK1BIcGRtQVU3bENpMG5DOHdTNkxWcE1TUzEyQjR6bTJKaXkvL3IzckZyQ2o4OXdDVk00cldNZUhqR05FcUlPa2NBS0lwaFRuOE4rM3RXckx1ZXZKQ1c4dUNQbVJxTkJJeDNvNXU5QWdnMkNveEJjYmVLaFNrZ3hjc3J5MGpXVm5QN0NKLzcxa2dCMVBaczhRWDB3MzMwUmJ0K24rcWZHT0tnbHRUaTlUVUlFK25ha093QlV3bEd6R0NvdmNqRi9lc2VZZmlzVDFrQVRaYTVDQnBSRWgrZm5jM0xldExoNmxKemJSekNPVTdodlltZnFDZlFJRUUyTEsvd251bzd4S0ZNNXh1N3dkY2JZbDdMSzh0STFsWnord2lmKzlaSUFkVDIraUZ3RDA4N2VuUzlRbW5jKzZUdEd3eXFjc3p1ejZqMDBCRklTL1NiTVZobkpBQytaUVdTb09ZU3N6a2VuUFlta1M5eUZjUGxGZmpCWm1oRGlkeUtuc3NyeTBqV1ZuUDdDSi83MWtnQjFQYkdhMklMMnYwSkwrMDV5cXBFazFSWFJzUGRkcXU5Ry9nWkJ3WXRiMDIvNjRMSlVjN21adHc1S3YvNFU4NG9mL1p3bDRicHFGOWF6NU5KcktLa0YveGl5eXZMU05aV2Mvc0luL3ZXU0FIVTloK3RsOVF4aTg3SzJoKzUvQjlXSGd6SDdYMWl5MjlPWkNvTWVsWEQrQ2xWeXl2TFNOWldjL3NJbi92V1NBSFU5aUVTTU9vdk1rQjdhdldhZ3FkVkFaWHpjL2dicE9seDBnc0ZqaFB3bjB1aExlMTJlZmEwbW9VNVoreGFzZFpML0dDajQzdENWQlRtRlVMcnZUaXlncGFHZG9XYy9hV2dBUGV1Y2tRa1UraFVHaEc3TGpBTVhoa3RFWGJ1ckdRWm5tY3RCTGFULzNrOHROYkhBcFZnS1hqTEs4dEkxbFp6K3dpZis5WklBZFQyM2x3S3I2Y2hCYTBWMEJ6dFB6R3VJekZYYmxQeDlDUGppYVdYSGgvc2lNRExLOHRJMWxaeit3aWYrOVpJQWRUMlA0bDAyQnVLQkRFMzBrdjlCYkYzU24veEk4enM0OXI4WElFMlRuR1RRWGpMSzh0STFsWnord2lmKzlaSUFkVDJUOWU2bFBxdUFUZS93eFYzWFRTVGlVRE5HNU96bXkxbnpPTVNyMElianM3MCtiZkZ4OGg3WUJnMDBBTXM2Y2lLejRtblc3YnJ1T0htQzQ0blhrZnN3cmw1RUxoNEV0WldTcXJoZmthcENvS2lmM2lJQk5VNG5DZ09idVc1SlVMVHcxQUlDWnlBQ0V4bjl3NlcyaUJWSXEyVVVjV0Y2TjVka0VPREdBSXdJV3A0WVFCNndyUzBiVHdaTC9Yb0dWOVhzSnczcnovRTI0VnpzQU1ZSjFqcEtBeEkxMmQ3MGwvekFDWUNrbFUvZHRSQWdVbktmQ0N4d2NMUXE0S1FxQUxkdW14UXd1K2ROQkJVb1g0bVBwRHpoVG5wVWNOV2V1ZGxUZnZkQTZWYWZXRnh5MEdtTHJoYmVNcUNPcTZUSHA3Vk9aU1ZVRHA1Nm5uSzhPajBicnJtOUFkM0h6ZTRhaXRUc2cyVS9mY0grN3oxcmNFRlFyd0FTdU1FZ0ZUL0RiZyswbjArb2NHRFhvZ3p3c3hBWkR5YVN1YlJzbXRWMDVCUUZUSi9CTnZ2L3VmNWtTWTlpLzk3S1U3SUZtWXhsOHNwd3prVHJpbzRqQVJINlp3VFhwUmxIOTZUWmRkOTRwMnBUYWxMMmJ0SUtJSzVXazc0SzV3SDMyU1lUc2hWT2YvaXl5dkxTTlpXYy9zSW4vdldTQUhVOXNRc1ZKem0vcFlBZk5mVmhYR1JNSjZTb0Qyb2ZrSDlKK1pTbkxmREpFODBqOG5HV1NqZkdxblA4bTNRN3NjbDhnZGNFc1ZTRFZ4cVFTeHdhaVJVd0RCaDVPVENsN0R2b1pxRHdvaXhwME81VnFLdnl4OFdDVXlPT2ZmeU9yQWY1NW9lVUtuYTVwMklBd2N0eWg0SVJuVW4xOVFSeElkYStUeCtuS2ZENEdSZ0VNUDVLNzhmYi9tZW9Qa2JBZEhQVWJDZjZ5Qjh5TzQrOTZXbVFNcXJFaWF6S2V5WnRqYnZsaWtiT2VNUDVmQzhtN08xTy9DQm5oZm5PckdZekhad0hrQ3Fjd3hBcXJCOVdrYkxMeUhNWnZwNWdHZ3JJb0tHaEZIRDVibmY5ZkF6enBReSt3Nzg4N0RrSnl2djJ3bk9KK0txbG1aQW95SFZpSDQzRnowWGFBMFJtbUJicEhKZkFCY0psMnBBa0tvSFZVY2JkNng1Q3pSUjgvT0F0bnFPdk50Q3ppaG03V2w3N3YxZFBsRkh6eDNMSzh0STFsWnord2lmKzlaSUFkVDJsaEJGM0gwUG85RkVXQ0F4K3YwbmZnVXNZV2QyaXdoODl5QU1yNmFxUmR3Yk1aZmNhSVByZk1HaWg4UTZSVVNkR050OXIyYVcrUTg1cUhGSnRpOUFmV00rbitsc2dsdzJ5Y1dKbThIQkJrRkxtUTBXcHNOZ0VBamRTai8rdzhCbDFVVXdoeG5Ma2MvenNpdEtMUnRySENyTldSY1A5VkwzVGQ4SGFVTzZmU2xxaDM2UnVjZnc4VFExQjFNV291cGpoUFI4T1R6K0NVa2R5S1BiRTdVajFVRHBoOWtZYXFYUE1sMS82bXBxMDJiTEs4dEkxbFp6K3dpZis5WklBZFQyT1BmWnFmRXJQd3Q4Zkpsb28zRkhvWnNIajN1TlIweU9qSVNaUUZYZmhkV1lndFVtYjNYTklESG9IR3hXbnE1TTZkUi9oQkJvNVY0aStUTFp2TVVxZUZKY1I0bnkxVERSZDh0TzNkQmQ5MDZSd24vQkNxSEtPTzBHS012eEZBOXY4ZlRtMU1QZnlyZ05sc3dYQXVaanlIOXNxKzUwd2xaaHFvSk1WbEsxVXErdDFCOElLWWVZMmQzL3c1M3RlZTlnUzd0UUlFU0tWTFJSU01leWN1TGdvb01ISkhnaExaZGJ5SnAwWSsra0VxcTFyQUx2RUtjZnVkT3VTMDJhMU82RTMxQTlZeW1RUHlWK29nQTVSYTdZTWlMZ1E2MFQwZW9TaytjaWk0aFBLSnhlLzRiZS9YMzJOOHBJSUJMSG5HcVR0akVsbk1VMmo2UFY4aHJQVDRVR05ibHhaLzZ5STZuZTlpR1JkYWpsS1hwb0x1ZEN2MFBPRTN2Uk02TDJjSE1kQkVXVkhlKy9wNXp5OWpLQWpKaEEySEwxeUxOaExtUjNaRTM1OVlzSHFJQWVQeUNOckRKMzVkelVxOHNyNzVrNXA5c2ZzTjlmNmR6dnhBb0VnTnpnd1Z6S1BGbHhXcXd6VXdheld5ZEdDU1dwRGxIS2dPSUxZSGlMelpkZkg1cHRjbDZQaUNEYlVndHhOclFQS05nWFVCWUFwSzRGL0o5eFpsOUpQdzFNcllJMWs0VXA3R01VYWFjWHR6MmlsRFBGNlR4UEJiclNDeWlNVHZvRlp5cnk2UTVtNDl2Y1ZLZ2tST1AvUEIxMDZ6Z3F6VmtYRC9WUzkwM2ZCMmxEdW4wcDJ5T2RFaC9Dd2N1RlkyTkVVYUR1SUJvZ3liQ29BU3BHU3YvZFAvTmE5OWFhZkIrM3ZBNnhDN3NnOTFnR1JteHRsWE52WWlDTW1ERHpDWmhNZm5mL3FoeDFmOHZJT0Ryakw1aWQ2anhIcm1oQVJjVU94RDRqOS81OFd0Sll2YW10Q3p3czY3VFNrSjhVSHl3R2t0U1RKTXBnWnRpem9BWE41OWhRK1U1Q2hJUTBVVGpJcENDaGNBdldwOS9DSHlvNFJnOS9pcWlOTFNCT1c0MXBZdmdHVTd0SDFpUHVoZXgxOWJYTTVvOEU2V0NqT3lucDdOZ0FDVjMrUkF6NHJhbDFobmFGblAybG9BRDNybkpFSkZQb1ZDMVFPQ0dETy9vMXhYYjY4Z0dpSGlCQ3NzSDdXa1RzeFRmUFRxaXVYRzJOaVdzdW9OY1AvODQ0N1RPRHdCd1FoeGExZjNSRkwwcVZ5bHFHcmJQZXFmZ3dRWDBUTnVCcTlEL05USEl5aGVUdXdBb1ZZRzh2NGxNajdvcnZudW5Vd3dnazZVWCszVVViTGFBWjRLbXRkUjNoVHN4S2lpSzRScmlFcDA3NUVINTJsZGpSSmI0dWJJL1FYK3FkclRMeEZ3SWRZZVAvd2lpa05WT1hQTUNtN3VIdnJjSXB2aHFjVnRWRVgrRzlhTDh2UG56YytoSG54QTcwOGJENkxmSk5nYTNGeUhLaUJSM1VmOW4wRGdIR041WDFoeEdsUWJtOFVUTDlMSUJ2aUQ5NjBWN0pRdm1xQWgvazRwZGdHOXF3NFVnaE9oakV5NURtQ3ArZHY0UldPVU9hbTVxZCtLZWdra0VTT0c4a1FRZXB6cFF5K3c3ODg3RGtKeXZ2MnduT0o4Q0pSbDFFT0RNMFFZemt6TXR2OFhITEs4dEkxbFp6K3dpZis5WklBZFQyQ290cm9SUHI5TEFMMUt0K2Q3RDNNZHR4TmFzTFR1SmRESStxTmJiOFBUdFB1dC90RHFPUFhpMTF5dTR6VjMzblJZNkZqL1pSNW9LOG93N2tXbWJzMCtFOEdPaGhHakY1YTdzYi9RWHcyUU9EcXVzb2daNjlOUFR3Y01JSUVCOU9EQ1dPS0IrMXZyRktURmg4ZldvT0JnTFJKckU3NTFrMFNhRERsVk4zaXNOSkFPc2ZYanpHdm9ZelcyYmFwakdscXlqajZmeUJVKzVJd044RnE0bEJ2Z044WUk4Vk1kOGJid0lqdko1dktXQVNmQUFFQnkrTERWYzZzWHRjc1B2V3QzK3N1czlJMjJ6SzJUajdoUzZwNk1zcnkwaldWblA3Q0ovNzFrZ0IxUGJ4L2FMelNMUW10d080V1JvTjIyS1lWSkEzL1h6U0VnYmduZWd4cXFOT0JpM3Rkbm4ydEpxRk9XZnNXckhXUy96djdxMlUwSEFtU0hjYitudHRsc1ZMak1qUndqYU9nQXRSZWozZEV2U1BWRncvaTBhQ0sweE1RYkxLaFdieHRRQ0JrbGZGYVlWRkxQWlpFMG4zUy94ajFCUFRtRmRhVUd5WlJaMjZRREdoT01zcnkwaldWblA3Q0ovNzFrZ0IxUFl6TE5JVDY3c3doSjFURW5JQUxjVXMrNUpsd0p1N214VFJVNFdYQW5CUDEzZ2U1Z1ZqajFOYUo2OHd1YVBpVmg3QWQ2VVBXV2dSNndMSVBuVFVmdEZqMHA2VlhTSlB1VGVhd1JSUTRjM2NyWGVRbXRDSENwVWdYS1ZvdGNEZHpXQVRUbk9LSlZ5UDJtTE9sYk1oNXZNNyt1NGZMN00xNno4N1NKRUhUVFRtbStLOU5ITnBtU213SmJoYXNad2RneC9BZDZVUFdXZ1I2d0xJUG5UVWZ0RmpPSWloRi9DMzFnc0s0RXZ0dXVzbVVrODljY2tBUDVpdm1weUdSTDY2eEtUM2JCQS81NGxWT2lyVnhyWlFCL3c3VFM3bC9FZS8ybzFLRVVMOHA3RHRvL2M1c25RSmxDU1VmRERET3VleG1YakFPYlFnczM3YkxEeUU3NFlLS2JMUmR3eEplRWtDakRkd0x2TXVKR3JzQ096Mk90akFQSVFUa2pDaE5KeVdDelNFZHpYS0xxSWdSSzJpcEFNRmdLUnZsUmJhc0hQbFJ1c1NnMHBSTlZVQ1FaM1hQZ2wzcVRJbGFNSG9iQlFSblAwMTF2b2g1eTZEQk1LQzE2bFlORDhVZm15Z2NsVFlzWkNlZGVwN1Vsb0Rxd2NqSGE2S0g4VzFXRlo5RFh4UDNXdllGMFJEcllUYjRqb1FtSVZWL2NKbmVkM2NQMlVydnBscjZMbmRUcmtOcUJZQXBLNEYvSjl4Wmw5SlB3MU1yWUkxazRVcDdHTVVhYWNYdHoyaWxEUEY2VHhQQmJyU0N5aU1Udm9GWnlyeTZRNW00OXZjVktna1JPUC9QQjEwNnpncXpWa1hEL1ZTOTAzZkIybER1bjBwMnlPZEVoL0N3Y3VGWTJORVVhRHVJT3J6NXNtWnVMdklYbVdPcEVYV2lHb0lsaXlrcG5IY21sWlpIbEpwVnV2b1V6MEc1a1BaaG0veXAxWnVheUc4YTlxUm9yVlhJdC9oYTk0S2Myd2ZUY3ZMSzh0STFsWnord2lmKzlaSUFkVDJ6dVpoRnFIVkZSSlVjajBPL2VUR0xsM0JZTFZQRFVRYUw5Zkh0MzVTdjZtRklpMkVCVjdsZmtwamxTTFJYUU85Q3p3czY3VFNrSjhVSHl3R2t0U1RKSUhJYXczZ1hrcUFvMGVqd0pYcjIyS3JiWWZKOUc1WDg5UG1DSGl5cHpHSkFvMDNjSTIwd0wyRXdXM2pUZVk3Yi9ZV1lDcGxyTnFNQ0VuOEdvazRuNldmYi9tdmMzdWlTejJTZG03OVVpWGpKamZMMzA1aFUxYitCSGp4MktyU0NLZ0VWby9CR1JZUnQvdXR5a3RyaTZaQmVIQlVMYW5nNnJ5Ky9kUlY1TjNFc0R1YkpSWDZJRFpQemo4dHdRNlNjdmt2bjRjS0MxUVorVHBNVVJyTS9SVGhCTUVFVHBUZnF5TzRaTWF6VnNiSWVSMDRlTEcycVpibEdYclR2NFVFYXhUM0p5aHROR1plU2hiZytQZDc5LzI0M3pYYlZmbVpGWXBUcnIyYTRiZU1adHl5ZzN5YVROOXp1UmlyNExWem9sdFZkdXFJcFJXTWx4V2ZyK3hCeFBCUlJoWkFBTGVNVUFnYjV4VUR6MVN4c3RjWXU2bXJmRWhQaTgramorR2RrS2JpUW0yVnljN2RKWlZQOFVPUTdEdmF4OThUbzNqeFFBRHU5YnlZRGlRdWRIK0xsR2J0clBQazFCRzVzdEoxUzJwL25tUlhaNElPQU5Mb0VEbjJ6U0JGM0RNQzZkczc2amd2MzViNHlGVHh5eXZMU05aV2Mvc0luL3ZXU0FIVTloUXYzcnN3c0JINVluTkJPKzAxL0JuT2xETDdEdnp6c09RbksrL2JDYzRuNFdFeHJpUzdETENaZHVpRU9Ka1hNdmZ5bnBFcjFkTThwa082dzl6WStUc3RmZ0Q0Y1FrcFRJeTVZK0d5cFNuSG9ETGluUjBpZnJTandCUng4L2NZbk02VU12c08vUE93NUNjcjc5c0p6aWR5UzZsYnZjZFl5VThiOEc2SGF6MlNhc3ZnNUZlTlZ1bW1jZWlqb2k4ekRWMXVIemxwSjlidVVBYm1MUDFOd2VOZXVxSzZZVnZwNnZDZUU0R2hmSHlIWUtpOXlNWDk2eDVoK0t4UFdRQk5sdlR2MzRiSkd3c2g3Y1VZWHkzMXdaVE9sREw3RHZ6enNPUW5LKy9iQ2M0bmljZm5Jcm55bU0rUmhjVk5mWnV1dTE1UlZ5R2E2NEtQbTQ1UUtBV2V1MG5oVEJEUVl3RkZzSC85VFpNUk4ybGJIdDRZaC9jVkVoM0hvQ1lGajJBZ01Vb2I4S24xS1ZpRE9zdmU4am1oNjh1cFVobUg2STdIZVhpMVlkVEhVajZKaG5hRm5QMmxvQUQzcm5KRUpGUG9WS0pmUHdoMkdrWEQ3RnFGNTBHUjlHYmp3WDhmYmZqWXdvcmRrWHMzNURvcEE4OCtZdTQrU2J6Z3pKS0V3aUpmcTFvSlM4Q21laHVjT3NMRnJSVFdtbnFBekI4RDA4VFl0NExvbEJLbU9GRHAxWFZYU1ZxbWF4cEhreHpzb0c5N2hzLzlwd1c1VGxLREZ1YXdGKzNTUGd0aDhiQmxReDZqSWFYZVJvU1l2NGo3a2puaGN6cS9CRjIrcHlmRHdTQWpTQmpYTitBNGs0Rjk1SUhYK2VQRXdGenVKdG1UQ0xmOXZUQXhXRThvY1M1ZUJQZU8rc0Q0UXcvQjIvMW83RkJoQnlZc3RvRDNqVGIrc3g4Z1kvYzlJdnZyM0tPalpnT1NEelR1Znk4TTdWWGhQdTJaN1BTTnJMOS9rbUE2eXM1djF0S20ralFhd3YzL1FIWDQySjl5OGhBMnVMa0ZhTnlPNFh4Q1YwdXJUcGlFV2NHTU1yK2xPRUp5ZDcrbk5tS3dqOFpERVYrelBtTEhMbENISUJ0TXU0dkxLOHRJMWxaeit3aWYrOVpJQWRUMmN2STdjT05PVXh2bm4vaGUxSUVQazZZYWNqMnJlM2hLc3JtY0k4K21PNGpMSzh0STFsWnord2lmKzlaSUFkVDJWb1Q1UFg3VG5Wb0wzM0tlcXJSN2JxY3pGL0Y3aGNFLzA0SGwwTjF2SXMyVjhGWlEvdWhjdVNic05qY3hCUWIvSG5IOTYrdlAvbC9iSDAyUXYzdFZoSFF2OWNGdXFKVUVhc3JUeXpDWGEwSXIxamtMRjgvcmh2amNxMmp5NmkxNXI2STE3ZWlmQ2l5K2RZVzZyNnZRWFdPOXBZYk8yc25pWFgyeVR4VnNva0V5VExCZzgxVUQvY0NjU21mazZxdXdjR1F0cXp6OVNicTYyNG9yeVE2dTJaRllubzUvK0ZxYmhIUnF2TnBMZXdJRVFzR2tsamtyU0RDQTVOWlRvYWM5NUU1TnplaHdoOFNDa3lvaEtPaFFhMWZDWnVIZHZXOURlQnFVOFhpczFMdmFFWFRCdzAwR2dkb0tPT0NTcXFWV2R2R2hLckxJanlhMTF5QnAyTE10ek9yczhvMy85a25seFNWYUVSeXBXWmRzcEF6TXNFeWp5emdnSVRQalpUVCt2a0JNeWR3bTB1NjVOTGVTamVLSWZleDI0VE4waHVuMEhsV2lIUUlVKzNZeDZZcHJpMXREaHd6MzgzUXBoRXlLRmh3MGhaZzFyN2xHdjBucFVvcHpRdnVTWmNDYnU1c1UwVk9GbHdKd1Q5ZDdwZ29SblFodWZGREJ5RWQvamswS00rRjUrRTZrOUpWdXQ1QXFxcUlqRHFOVGlsa1RjWmNoM3oxK1luTjNZc0hiUCtBaldIalZjWXFITVBlTTYxdWlxZVFkcVBCUlVEQUtxSHlYekVvUnlMSkNHbm4zNTB1YUlzOGR4UHhYY2dvOFIvNFE2aU1wWVRhVkhJT3BISm5XaEptSXJ4NUgyYmNMYmZUNS9RbU1JTVc1TGdvdXMxNXkvQUpyUjBuVm1lVmNNSml4VXI4eEI4d09hZXNxWWFkRnl5dkxTTlpXYy9zSW4vdldTQUhVOWtPWW9nZ3VsNDR6SVo2MUxyb0ZnWEtHZG9XYy9hV2dBUGV1Y2tRa1UraFVQYlZjMDgwYWtraExYT3I3Y2c4VkVVdlpiejBIWDhoUEZzYWJVRDZyK2EyTUxsMEZOeVoyRUhZa1Y3ekFCL1dOQUVaTHEzYXV2K3A3T2J2WDdzL3BMbFI0WWdLVkNST0JWeGxOOGczWFdLbjM2OU4xamxvc3FSQmRETWZKQkJiRFR6Y2s4ODNEWUoyTk5kVlFZak9xZ3NiS25scThZK1BqMjdkNXdDK2FaS1M1Qy83Q2VTdThmcklnYmdpbmhmN1ErdzIxOGg5QXRLVFhDUWlsZ2V1UkxJNm9mSlRkV3R5SEJDY2FOcjdYOWhncHJSK1prUkVld1FtMGppbU43bkM3eXl2TFNOWldjL3NJbi92V1NBSFU5azh1WkVVUHJCMlYxTG04bE95M2M4M0hJY1JXNEUxNkI3bGNwTEhxWmFlcERoa3dvQy9NYXVRTE5vNWlFVzJldWNlam1mZ2FaTkxHMWxFUVM5b0daQk1EeGhuUWdxL2pvN25KWXhXR2hwREZFNlNzaFNOcGtjKzN1a1huZ2FkZmlIOU44MEFQWElYdnU4cWorNzRjSExmT2xETDdEdnp6c09RbksrL2JDYzRuaEEwMWtzTldQaUxqa0FiOFV0S0pxNGlOT0wrRURFejZyZlluYTZFRFlEN250cy9TT0xOM1M1eFVRd0ZRUi8rTFRUcDdSYnVnWjIrNmJNcUF5WnFZZThzcnkwaldWblA3Q0ovNzFrZ0IxUGI1ck9hUndtMUhmZ3JsY2cxWkVnM1JVbm5PaEYwWVlCeVVZWGRCT0RrN3BQTWw2UzFhbDlTckhmZ3ltVE9kSU1iWEpGYlY3MkJRbGp3VUs5NkdWM2FRb2hNamswL0krUktkaTA4OURnb01id0EzK1ZjLy9lSHFoNzc2WU5lRmh3a05xOUFkREo0bi9MUkQzV3RZSlhBU3QzaXZDNHU5UUJUZmIvdkNtTkppL2Z6YWVzNG9KQUt1U2MwQ28rYXU2Ulp5cHg1RDVqTE5tWE0zRjhZWnBnOHlWZ1FYd0dvdzlGNTNUUHR3RUxoRWJDZFVKT2crM1d2TFhSa1djcFphbGc0SzE1OWFFTS92d1l3Q3EzNGx4a1NGaGxLeVRVZzVSc1hmUkxwYU1obTBlWlNIZHVvREhOZjRaMW9nZ1pHemlrb0dvcDhjL3pyb1dCb04vYVZLbW44czRUeUUrVUJRZXp2MWZMQmVVeUJHYkg4SlhBLzV1MjE4RVpCQlF0dzNvcUV2OHlKMkRjVmRLTnhtenRCOExtbkgnKVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeeZu+W9lVwiLFwicGF0aFwiOlwicHdkLWxvZ2luXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgaXNsb2dpbiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCB7fSk7XFxuaWYgKGlzbG9naW4gPT09IFxcXCIxXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiBcXFwicHV0VmFyKCdteV9hY2NvdW50JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDnmoTotKblj7fmmK8nICsgaW5wdXQ7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgdGl0bGU6ICfotKblj7cnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbXlfYWNjb3VudCcsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgIGhlaWdodDogMSxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcignbXlfYWNjb3VudCcpXFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiBcXFwicHV0VmFyKCdteV9wYXNzd29yZCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g55qE5a+G56CB5pivJyArIGlucHV0XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgdGl0bGU6ICflr4bnoIEnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbXlfcGFzc3dvcmQnLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICBoZWlnaHQ6IDEsXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoJ215X3Bhc3N3b3JkJylcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5aSn5Lya5ZGY77yfKOWFiOeCueaIkSnigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi5LiN5piv5aSn5Lya5ZGY5Yir54K556Gu6K6k77yM5ZCm5YiZ5ZCO5p6c6Ieq6LSfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc3ZpcFxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG5aSn5Lya5ZGY44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc55m75b2VKOWGjeeCueaIkSnigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k55m75b2V77yfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJsb2dpbmluZ1xcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgaWYgKGdldFZhcihcXFwibG9naW5pbmdcXFwiKSA9PT0gXFxcIjFcXFwiKSB7XFxuICAgICAgICBpZiAoZ2V0VmFyKCdteV9hY2NvdW50JykgIT0gJycgJiYgZ2V0VmFyKCdteV9wYXNzd29yZCcpICE9ICcnKSB7XFxuICAgICAgICAgICAgLy8gVE9ETyDlkJDkvazor7Tov5nph4zlj6/ku6XmlLnmiJAgJC5yZXF1aXJlIOeUqOazlSAgICAgICAgICBcXG4gICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJkdGQxUDNkVEVJVG9uc2dyTkZmb0JpZ2k1bGphejBQZUdtYm1NampyOUg1bmZ2c25CdzdKRnAzN2NuM2VncXUweS8wd1RXMm9VN3F0TXdRSUFpTGhFU1ZLQmxLa1J2VzBwblBEZEhsN1BHd3dEVDVHTTF2QnNvZ2I3WURwd213VjhydHRhZDBPNVlKQnZwalgyOWhVQnBTc2lhbzdsM1VlYnp4TkFXWWlqN1l3SFdodDBqVmJoNVNMN1BYVm8xNDlmUFNUdXhsOEErdkxVV2krMld4R3JPWitRdnRyWUluMjhCcVM4UFM3emYwUjB5cjloWHpqYk1PT1gyQ09kVllLUGRiR3N4emtsVjVYMkxMbUtiUGdFZlFFbENnTVpwWXVuZTBJOE95STU1SExLOHRJMWxaeit3aWYrOVpJQWRUMmRUUXZDQmIraUhqcFI2SzBNcjBkZmMvanJUZC8rbm1zbVdya2ppdHVxOHgyaDdVM2JabWF4a3FZcnhTb3ByTGladm5Ca1N2RW9JaXFVVU9LaW1DeTAxZjN0UmZTUUJlUjVsZ1Q1QS94cWdkMjhhRXFzc2lQSnJYWElHbllzeTNNTFpSaFNMdzVrZFNVM1krZHlDYTZaY0lEeGxPR2VTRkxtSTBPQ0ZicFplOWJZN25LVU9haTMrVEhzYUZpRUVxcGQvNm5VUUY0VFpSQmdWcWpZRUZ3V0p5S0FLNkRBcW9SdkIyVDBpZjJ3VXZPbERMN0R2enpzT1FuSysvYkNjNG55WnhkRGZRWE42UnFCK2k2TmdUYkNqTmQ0VEZYNWZXQnZIYTVwSHJUU1pBaFRXOXdGQTV3c0FEQjk1eStKeDJYOVFrNEdMQ0dzdGdHY21IbTk2YXAxdVdxK0s4dkdFWkViRWprVTUydE1TNXp6NmdtN1loWGY4ZUJZQm1FYWlMdU1lVTc1R2UycVM2dU9vajIySVRFVWNzcnkwaldWblA3Q0ovNzFrZ0IxUFlaTnluWExsMXRmb0RZM0haZ1Bha2Y2RCtBRHpRWXF4cVJLWkN0bE5JeWE5azhDNEg3ZmJoTERYZFdBM29WNXlVT2dhU1hLMU9NNDBGeE55TlhwQS9aS1M2Z1kzQjEvVjIrenB6K1E3Q211ZTUrcWFPMFhyRFAxNWhqUzRieG5Xck9sREw3RHZ6enNPUW5LKy9iQ2M0blh4ZWt1b1RWVVJZN2VoK2RJRjRRT2FYbWJOallOa2lxbkFkODVGclhLWG9lZ0paQzg1QjRKVnFPV2N1ZWlwTmFIeS9kd0FoS3BuSy81Sk83WjZ5YTJsczIvSnZQT0NQOTFlNmc0SE8rWXFFcExxQmpjSFg5WGI3T25QNURzS2E1bnByYmtJUDJrbkRYWHF0TVlHUmRjaWdlSVJ6K09IbW5LTG0vK1dDUGEwNjE4RXF2TXNHZzlmcHZ0VW8yL3RtMFJ6WVlpOGt1RkdvcFR5b2lrRHdpM2NzcnkwaldWblA3Q0ovNzFrZ0IxUGExQURrdml2a25jRWhQV1A0d1hDYVR3d3BaMEc2K1lUdnlwNjh0aEZkQUw1eHg5K25VYTVqV21KVXl5UStyMVVzRDVzTXFpblk1Yi9lRFVueFJLS0JUenBReSt3Nzg4N0RrSnl2djJ3bk9KeWRIUE0yYWg3OGVBdHRTYWhWQ0ViL2wzWnFpMmhGa2laSjhneFBDMFBZNy9xdDJOMG44bEhEOCs3MktUVURJcXVYNTY1Q0lRbmNEVzVLZlhVWkxPblpiczZSVHFSMDBMdVBIQXhQSUhoaWFiamtOdlNWUU96djNhd2VyYW1lU084c3J5MGpXVm5QN0NKLzcxa2dCMVBiWmZBQSs3ZytZZFROcGV1OUxSUm9vaUZ3Vi85Y3U1SHBFZ1oyWDZ3YVdkb29ZMWc1cENYS3BNdS9kN2MzaGRRZkxLOHRJMWxaeit3aWYrOVpJQWRUMlk5NnNrQnRObHZOQXg2SUdwektOOGVOME9KQ20ySXFzSkpuSFhKZDFmcnlDTW1FQ0ZFZWFWYnB1S0czVjA5d0FDN1NZaTdqL2JDQitEQzExQlNhWnY4QjNwUTlaYUJIckFzZytkTlIrMFdNdFpqSzRRbGZ6c010Z0dxZG5sL0QrXFxcIilcXG4gICAgICAgIH1cXG4gICAgfVxcbn0gZWxzZSBpZiAoaXNsb2dpbiA9PT0gXFxcIjJcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOW3sueZu+W9le+8geKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTph43mlrDnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXNsb2dpblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufSBlbHNlIGlmIChpc2xvZ2luID09PSBcXFwiM1xcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5L2g6ZyA6KaB5Y675a6i5oi356uv5pS55LiL5a+G56CB5omN6IO955m75b2V77yB77yB77yB4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc2xvZ2luXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59IGVsc2Uge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzngrnlh7vov5vlhaXnmbvlvZXpobXpnaLigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzbG9naW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLnmbvlvZXpobXpnaJcIixcInBhdGhcIjpcIm5ld2xvZ2luXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuKAnOKAnOaWueazleS4gOKAneKAnVxcXCIsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcihcXFwibF9pZFxcXCIsXFxcIjFcXFwiKTtyZWZyZXNoUGFnZSgpO1xcXCJ0b2FzdDovL+WIt+aWsOaIkOWKn1xcXCInLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuKAnOKAnOaWueazleS6jOKAneKAnVxcXCIsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcihcXFwibF9pZFxcXCIsXFxcIjJcXFwiKTtyZWZyZXNoUGFnZSgpO1xcXCJ0b2FzdDovL+WIt+aWsOaIkOWKn1xcXCInLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXG59KTtcXG5pZiAoZ2V0VmFyKFxcXCJsX2lkXFxcIikgPT0gXFxcIjFcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aTjeS9nOaMh+W8lSDikaDlhYjngrnlh7vkuIvmlrnnrKzkuIDmraXov5vljrvlk5Tlk6nmiYvmnLrniYjnvZHpobXnmbvlvZXotKblj7cg4pGh6L+U5Zue55u05o6l54K556ys5LqM5q2l55m75b2V54S25ZCO5oyJ5o+Q56S655m75b2VIOKAnOKAnOazqDrmlrnms5XkuIDkuI3lj6/nlKjlho3ph4fnlKjmlrnms5XkuozigJ3igJ0nLFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJwxLiDngrnmiJHljrvnvZHpobXnmbvlvZXlkI7oh6rliqjojrflj5Zjb29raWXigJ3igJ1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2NrXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnDIuIOWGjeeCueaIkeeZu+W9leKAneKAnVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2Uvd2VibG9naW5cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG59XFxuaWYgKGdldFZhcihcXFwibF9pZFxcXCIpID09IFxcXCIyXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLmk43kvZzmjIflvJUg4pGg5YWI54K55Ye75LiL5pa556ys5LiA5q2l6L+b5Y675ZOU5ZOp5omL5py654mI572R6aG155m75b2V6LSm5Y+3IOKRoeeCueWHu+WPs+S4i+inkuiuvue9ruKGkuafpeeci+a6kOeggeKGkuWOn+eUn+eVjOmdoiDikaLlpI3liLbmnIDkuIrmlrnovpPlhaXmoYbph4znmoTpk77mjqUg4pGj6L+U5Zue6aaW6aG15oqK6ZO+5o6l6L6T5YWl5qGG5YaFIOKRpOeCueWHu+esrOS6jOatpe+8jOaMieaPkOekuueZu+W9leWNs+WPr1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+S/neWtmCcsXFxuICAgICAgICB1cmw6IFxcXCJ2YXIgY2sgPSAnU0VTU0RBVEEnK2lucHV0LnNwbGl0KCdTRVNTREFUQScpWzFdLnNwbGl0KCdzaWQnKVswXS5yZXBsYWNlKCfvvJvvvJsnLCc7ICcpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnLGNrLnJlcGxhY2UoJ++8m++8mycsJzsgJykpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5oKo55qEY29va2ll5pivOicrY2tcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICBkZXNjOiAn6K+36L6T5YWl6ZO+5o6lJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCcMS4g54K55oiR5Y67572R6aG155m75b2V5ZCO5omL5Yqo6I635Y+WY29va2ll4oCd4oCdXFxcIixcXG4gICAgICAgIHVybDogXFxcImh0dHBzOi8vbS5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnDIuIOeCueaIkeeZu+W9leKAneKAnVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2Uvd2VibG9naW5cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiY29va2ll6I635Y+WXCIsXCJwYXRoXCI6XCJja1wiLFwicnVsZVwiOlwianM6XFxuc2V0UmVzdWx0KFt7XFxuICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICB1cmw6IFxcXCJodHRwczovL20uYmlsaWJpbGkuY29tL1xcXCIsXFxuICAgIGRlc2M6IFxcXCJmbG9hdCYmMTAwJVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgZmJhLmxvZyhkb2N1bWVudC5jb29raWUpXFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC53cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0JywgZnlfYnJpZGdlX2FwcC5nZXRDb29raWUoJ2h0dHBzOi8vbS5iaWxpYmlsaS5jb20vJykpO1xcbiAgICAgICAgfSlcXG4gICAgfVxcbn1dKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLXdlYueZu+W9lVwiLFwicGF0aFwiOlwid2VibG9naW5cIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBjayA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrLnR4dFxcXCIpLnJlcGxhY2UoL++8m++8myAvZywnOyAnKTtcXG5sb2coY2spXFxudmFyIGxvZ2luX3VybCA9IFxcXCJodHRwczovL3Bhc3Nwb3J0LmJpbGliaWxpLmNvbS9sb2dpbi9hcHAvdGhpcmQ/YXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYXBpPWh0dHAlM0ElMkYlMkZsaW5rLmFjZy50diUyRmZvcnVtLnBocCZzaWduPTY3ZWM3OTgwMDQzNzMyNTNkNjAxMTRjYWFhZDg5YThjXFxcIjtcXG52YXIgbG9jYXRpb24gPSBKU09OLnBhcnNlKGZldGNoKGxvZ2luX3VybCwge1xcbiAgICBoZWFkZXJzOiB7XFxuICAgICAgICBcXFwidXNlci1hZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTA7IE0yMDA3SjNTQyBCdWlsZC9RS1ExLjIwMDQxOS4wMDI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvODMuMC40MTAzLjEwMSBNb2JpbGUgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICBcXFwiY29va2llXFxcIjogY2tcXG4gICAgfSxcXG4gICAgbWV0aG9kOiAnR0VUJ1xcbn0pKS5kYXRhWydjb25maXJtX3VyaSddO1xcbi8vbG9nKGxvY2F0aW9uKTtcXG5cXG52YXIgaW5mbyA9IEpTT04ucGFyc2UoZmV0Y2gobG9jYXRpb24sIHtcXG4gICAgaGVhZGVyczoge1xcbiAgICAgICAgXFxcInVzZXItYWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBNMjAwN0ozU0MgQnVpbGQvUUtRMS4yMDA0MTkuMDAyOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzgzLjAuNDEwMy4xMDEgTW9iaWxlIFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgXFxcImNvb2tpZVxcXCI6IGNrXFxuICAgIH0sXFxuICAgIG1ldGhvZDogJ0dFVCcsXFxuICAgIG9ubHlIZWFkZXJzOiB0cnVlLFxcbiAgICByZWRpcmVjdDogZmFsc2VcXG59KSkuaGVhZGVycy5sb2NhdGlvblswXS5zcGxpdChcXFwiP1xcXCIpWzFdLnNwbGl0KFxcXCImXFxcIik7XFxucHV0VmFyKFxcXCJteWtleVxcXCIsaW5mb1swXS5zcGxpdChcXFwiPVxcXCIpWzFdKTtcXG5wdXRWYXIoXFxcIm15bWlkXFxcIixpbmZvWzFdLnNwbGl0KFxcXCI9XFxcIilbMV0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGluZm9bMF0sXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaW5mb1sxXSxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5aSn5Lya5ZGY54K55oiR4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi5LiN5piv5aSn5Lya5ZGY5Yir54K556Gu6K6k77yM5ZCm5YiZ5ZCO5p6c6Ieq6LSfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHRcXFwiLGdldFZhcihcXFwibXlrZXlcXFwiKSk7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dFxcXCIsZ2V0VmFyKFxcXCJteWtleVxcXCIpKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0XFxcIixnZXRWYXIoXFxcIm15bWlkXFxcIikpO1xcbiAgICAgICAgICAgIC8vcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5aSn5Lya5ZGY55m75b2V5oiQ5YqfXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOaXoOS8muWRmOeCueaIkeKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIueCueWHu+eZu+W9lVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0XFxcIixnZXRWYXIoXFxcIm15a2V5XFxcIikpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHRcXFwiLGdldFZhcihcXFwibXltaWRcXFwiKSk7XFxuICAgICAgICAgICAgLy9yZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/nmbvlvZXmiJDlip9cXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgXFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeebtOaSrVwiLFwicGF0aFwiOlwiemJcIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG52YXIgemJjMSA9ICdhbGwmMiYzJjYmMSY1JjkmMTAmMTEnO1xcbnZhciB6YncxID0gJ+WFqOmDqCbnvZHmuLgm5omL5ri4JuWNleacuiblqLHkuZAm55S15Y+wJuiZmuaLn+S4u+aSrSbnlJ/mtLsm5a2m5LmgJztcXG52YXIgemJjMiA9ICcwJjMzJztcXG52YXIgemJ3MiA9ICfpu5jorqTlsI/liIbnsbsm5b2x6Z+z6aaG77yI55Sf5rS777yJJztcXG52YXIgemJ3b3JkMSA9IHpidzEuc3BsaXQoJyYnKTtcXG52YXIgemJjbGFzczEgPSB6YmMxLnNwbGl0KCcmJyk7XFxudmFyIHpibGFiMSA9IGdldFZhcignemJsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciB6YmtleTEgPSBnZXRWYXIoJ3pia2V5MScsICdhbGwnKTtcXG5cXG52YXIgemJ3b3JkMiA9IHpidzIuc3BsaXQoJyYnKTtcXG52YXIgemJjbGFzczIgPSB6YmMyLnNwbGl0KCcmJyk7XFxudmFyIHpibGFiMiA9IGdldFZhcignemJsYWIyJywgJ+m7mOiupOWwj+WIhuexuycpO1xcbnZhciB6YmtleTIgPSBnZXRWYXIoJ3pia2V5MicsICcwJyk7XFxuXFxuICAgIC8qZm9yICh2YXIgaSBpbiB6YndvcmQxKSB7XFxuICAgICAgICB2YXIgYSA9IHpid29yZDFbaV07XFxuICAgICAgICB2YXIgYiA9IHpiY2xhc3MxW2ldO1xcbiAgICAgICAgdmFyIGMgPSBhICsgJyYnICsgYjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGEgPT0gemJsYWIxID8gZ2V0SGVhZChhKSA6IGEsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChjKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiemJsYWIxXFxcIiwgYy5zcGxpdCgnJicpWzBdKTtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXCJ6YmtleTFcXFwiLCBjLnNwbGl0KCcmJylbMV0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9LCBjKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH0qL1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmkJzntKInLFxcbiAgICAgICAgdXJsOiBcXFwicHV0VmFyKCd6YmsnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+ato+WcqOaQnOe0oic7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snLFxcbiAgICAgICAgZGVzYzogJ+S9oOaDs+eci+S7gOS5iOebtOaSre+8nydcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaydcXG4gICAgfSk7XFxuXFxuICAgIGZvciAodmFyIGkgaW4gemJ3b3JkMSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogemJ3b3JkMVtpXSA9PSB6YmxhYjEgPyBnZXRIZWFkKHpid29yZDFbaV0pIDogemJ3b3JkMVtpXSxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobmFtZSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJsYWIxJywgbmFtZSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJrZXkxJywga2V5KTtcXG4gICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3piaycsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCB6YndvcmQxW2ldLCB6YmNsYXNzMVtpXSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgIH0pO1xcbiAgLyogIGZvciAodmFyIGkgaW4gemJ3b3JkMikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogemJ3b3JkMltpXSA9PSB6YmxhYjIgPyBnZXRIZWFkKHpid29yZDJbaV0pIDogemJ3b3JkMltpXSxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobmFtZSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJsYWIyJywgbmFtZSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJrZXkyJywga2V5KTtcXG4gICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3piaycsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCB6YndvcmQyW2ldLCB6YmNsYXNzMltpXSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH0qL1xcbn1cXG5pZiAoZ2V0VmFyKCd6YmsnKSAhPSAnJykge1xcbiAgICB2YXIgemJ1cmwgPSBcXFwiaHR0cHM6Ly9zZWFyY2guYmlsaWJpbGkuY29tL2xpdmU/a2V5d29yZD1cXFwiICsgZ2V0VmFyKCd6YmsnKTtcXG4gICAgbG9nKHpidXJsKVxcbiAgICB2YXIgcXogPSBcXFwiaHR0cHM6Ly9zZWFyY2guYmlsaWJpbGkuY29tXFxcIjtcXG4gICAgdmFyIGxpdmUgPSBxeiArIHBhcnNlRG9tRm9ySHRtbChmZXRjaCh6YnVybCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICB9XFxuICAgIH0pLCAnYm9keSYmLmhlYWRsaW5lLWxpdmUmJmEmJmhyZWYnKTtcXG4gICAgbG9nKFxcXCIxMjM6OjpcXFwiICsgbGl2ZSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5Li75pKtJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS96YjI/dXJsPVxcXCIrbGl2ZS5yZXBsYWNlKFxcXCI/XFxcIixcXFwi77yf77yfXFxcIikucmVwbGFjZShcXFwiJlxcXCIsXFxcIu+8hu+8hlxcXCIpICsgJ++8hu+8hnBhZ2U9ZnlwYWdlJyxcXG4gICAgICAgIGRlc2M6ICflhbHmnIknICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSwgJ2JvZHkmJi5mbG93LWxvYWRlciYmLmhlYWRsaW5lLWxpdmUmJi5udW0tdHh0JiZzcGFuJiZUZXh0JykucmVwbGFjZShcXFwiXFxcXChcXFwiLCBcXFwiXFxcIikucmVwbGFjZShcXFwiXFxcXClcXFwiLCBcXFwiXFxcIikgKyAn5Li75pKtJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgIHRyeSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn55u05pKt5LitJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvemIyP3VybD1cXFwiK2xpdmUucmVwbGFjZShcXFwiP1xcXCIsXFxcIu+8n++8n1xcXCIpLnJlcGxhY2UoXFxcIiZcXFwiLFxcXCLvvIbvvIZcXFwiKS5yZXBsYWNlKFxcXCJzZWFyY2hfdHlwZT1saXZlX3VzZXJcXFwiLCBcXFwiXFxcIikgKyAncGFnZT1meXBhZ2UnLFxcbiAgICAgICAgICAgIGRlc2M6ICflhbHmnIknICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pLCAnYm9keSYmLmhlYWRsaW5lLXJvb20mJi5udW0tdHh0JiZzcGFuJiZUZXh0JykucmVwbGFjZShcXFwiXFxcXChcXFwiLCBcXFwiXFxcIikucmVwbGFjZShcXFwiXFxcXClcXFwiLCBcXFwiXFxcIikgKyAn55u05pKt6Ze0JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfSBjYXRjaCAoZSkge31cXG59IGVsc2Uge1xcbiAgICB2YXIgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3Jvb20vdjMvYXJlYS9nZXRSb29tTGlzdD9wbGF0Zm9ybT13ZWImcGFyZW50X2FyZWFfaWQ9XFxcIiArIHpia2V5MSArIFxcXCImY2F0ZV9pZD0wJmFyZWFfaWQ9XFxcIiArIHpia2V5MiArIFxcXCImcGFnZT1cXFwiICsgcGFnZSArIFxcXCImcGFnZV9zaXplPTMwJnRhZ192ZXJzaW9uPTFcXFwiO1xcbiAgICB2YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwpKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgdmFyIHIgPSB7fTtcXG4gICAgICAgIHZhciBqID0ganNvbi5kYXRhLmxpc3RbaV07XFxuICAgICAgICByLnBpY191cmwgPSBqLnN5c3RlbV9jb3ZlciArIFJlZmVyZXI7XFxuICAgICAgICByLnVybCA9ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBqLnJvb21pZCArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnICsgYEBsYXp5UnVsZT1UZXh0LmpzOkpTT04ucGFyc2UoaW5wdXQpLmRhdGEuZHVybFswXS51cmxgO1xcbiAgICAgICAgci50aXRsZSA9IGoudGl0bGU7XFxuICAgICAgICByLmRlc2MgPSAnVVDwn5C377yaJyArIGoudW5hbWU7XFxuICAgICAgICByLmNvbF90eXBlID0gXFxcIm1vdmllXzJcXFwiO1xcbiAgICAgICAgZC5wdXNoKHIpO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeebtOaSrVwiLFwicGF0aFwiOlwiemIyXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgUmVmZXJlciA9IFxcXCJAUmVmZXJlcj1odHRwczovL3d3dy5iaWxpYmlsaS5jb21cXFwiO1xcbmlmIChNWV9VUkwuaW5kZXhPZihcXFwic2VhcmNoX3R5cGU9bGl2ZV91c2VyXFxcIikgIT0gLTEpIHtcXG4gICAgdmFyIGxpdmUgPSBwYXJzZURvbUZvckFycmF5KGZldGNoKE1ZX1VSTCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICB9XFxuICAgIH0pLCAnYm9keSYmLmxpdmUtdXNlci13cmFwJiZsaScpO1xcbiAgICBmb3IgKHZhciBpIGluIGxpdmUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLml0ZW0tcmlnaHQmJlAmJlRleHQnKSxcXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBwYXJzZURvbShsaXZlW2ldLCAnYSYmaHJlZicpLnNwbGl0KFxcXCJsaXZlLmJpbGliaWxpLmNvbS9cXFwiKVsxXS5zcGxpdChcXFwiP2Zyb21cXFwiKVswXSArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnICsgYEBsYXp5UnVsZT1UZXh0LmpzOkpTT04ucGFyc2UoaW5wdXQpLmRhdGEuZHVybFswXS51cmxgLFxcbiAgICAgICAgICAgIC8vaW1nOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5sYXp5LWltZyYmaW1nJiZzcmMnKSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcuaXRlbS1yaWdodCYmLnN0YXR1cyYmVGV4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBsaXZlID0gcGFyc2VEb21Gb3JBcnJheShmZXRjaChNWV9VUkwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSwgJ2JvZHkmJi5saXZlLXJvb20td3JhcCYmbGknKTtcXG4gICAgZm9yICh2YXIgaSBpbiBsaXZlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJ3AmJlRleHQnKSxcXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBwYXJzZURvbShsaXZlW2ldLCAnYSYmaHJlZicpLnNwbGl0KFxcXCJsaXZlLmJpbGliaWxpLmNvbS9cXFwiKVsxXS5zcGxpdChcXFwiP2Zyb21cXFwiKVswXSArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnICsgYEBsYXp5UnVsZT1UZXh0LmpzOkpTT04ucGFyc2UoaW5wdXQpLmRhdGEuZHVybFswXS51cmxgLFxcbiAgICAgICAgICAgIC8vaW1nOiBwYXJzZURvbShsaXZlW2ldLCAnLmxhenktaW1nJiZpbWcmJnNyYycpICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiAnVVDwn5C377yaJyArIHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLnVuYW1lJiZzcGFuJiZUZXh0JykgKyAnwrfkurrmsJQnICsgcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcubGl2ZS1udW0mJnNwYW4mJlRleHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiQVBJXCIsXCJwYXRoXCI6XCJhcGlcIixcInJ1bGVcIjpcImV2YWxQcml2YXRlSlMoXFxcIkw3QXZKNDFDKytrbGxCTVBHOUpSVFV6UXZFakpYd1JyZlJpSm1FQnVmVVFBMkhIV3RRTFJoQXdxU016TVVkSUFyV3VXRlRONDcxUTd2dWtoWGJQYmVSd2hkZmlRTStmZHRLRzNOS2hRektkZDdyU0J3aXBZOXQwbUowcU85RHgzTXRmMWRYM2sxeS84V3VvWFBNUW5DWFhETVE5N2h3ZXpvdDUySU95S3NHNjRPcTVhR0ZONWRpcVQxdG0yOVNwL0dydFZKWDhmeWpvTnE0VHJwZnhpSGc4WUhTQmxBUERrRWxaai90bWovYUM3S1J6SWNud3RPb0xqZUIrQWtpb20vU1p1cy8rMVJybllweW1idGtKTnJZNzJQek90ZFlOTDFqT29RNS80WWtUMlpZWnBsTG1JMGNWZ1c2S0JTUWpxSjFOSWF3UWcwaDRxUk5XMGFZTVdEVTMvRkdqdWM1REJTc2gwVzZtSzhHRTM0U1lsUjREZ2ttTVJteUd2cXloY1J5b0ZlRGFIZDdqSWloZGpjeVZnNGsvK2RmcXZ3N2ZyV1pXdUkxdmM5WU09XFxcIilcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3mlrDkuIDnuqdcIixcInBhdGhcIjpcIm5ld2RldGlhbFwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JywgJ+W8gOWQryzlhbPpl60nKTtcXG59XFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXG5wdXRWYXIoJ3JlcGx5X3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVswXSk7XFxucHV0VmFyKCdsaWtlX3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVsxXSk7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG52YXIgcnggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCB7fSk7XFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG5cXG5pZiAocnggPT0gJ+aOkuihjOamnCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvcGhiXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAnVVDkuLsnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3VwXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pe25YWJ5py6Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zZ2pcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmlrDnlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL25ld2JnbVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+e0ouW8lScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc3lcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfnm7Tmkq0nKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3piXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pu05aSaJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9tb3JlXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSBcXFwi5ryr5ri4XFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLku4DkuYjkuZ/msqHmnInor7ZcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwidG9hc3Q6Ly/nnJ/nmoTku4DkuYjkuZ/msqHmnIlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeabtOWkmlwiLFwicGF0aFwiOlwibW9yZVwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmvKvmuLgnID8gZ2V0SGVhZChyeCkgOiAn5ryr5ri4JyxcXG4gICAgICAgIHVybDogJ+a8q+a4uCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicgPyBnZXRIZWFkKCfpmo/mnLonKSA6IGdldEhlYWQoJ+mqmueyiScpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdZUycsIGdldFZhcignWVMnKT09J+maj+acuic/J+mqmueyiSc6J+maj+acuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6aKc6ImyLS0nK2dldFZhcignWVMnLCfpmo/mnLonKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGlmIChyeCAhPSAn5pe25YWJ5py6JyAmJiByeCAhPSAn57Si5byVJykge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+iHquWumlVJRCcsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWlVUlEXFxcXG7kuI3nn6XpgZPmgI7kuYjmn6XvvJ9i56uZ54K55byA6Ieq5bex55qE5L+h5oGv77yM6ZW/5oyJdWlk5Y2z5Y+v77yM6K+35aGr5YWl57qv5pWw5a2XXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nmtleScsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Qa2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfor4TorrrljLo6IOKAnOKAnOW3sicgKyBnZXRWYXIoJ3JlcGx5X3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3JlcGx5X3R5cGUnLCBnZXRWYXIoJ3JlcGx5X3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcigncmVwbHlfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4m5oqV5biBOiDigJzigJzlt7InICsgZ2V0VmFyKCdsaWtlX3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xpa2VfdHlwZScsIGdldFZhcignbGlrZV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ2xpa2VfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cIn1dIiwiaWNvbiI6Imh0dHBzOi8vczQuYXgxeC5jb20vMjAyMi8wMS8yMy83NTFxamYucG5nIn0=
Add Comment
Please, Sign In to add comment