xiaomianao666

插件名:Parse-V2_Dn

Oct 20th, 2021
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:网页插件,无根树,花正清,不断荤腥不戒淫¥js_url¥Parse-V2_Dn@base64://Ly8gPT09PT09PT3lhY3ll4XosIPnlKg9PT09PT09PQovKgogKiDop6PmnpDmupDnoIE6IEB6ZXJPbmUxMjMsIEDmuIXnmb3kuYvlubQKICog6Kej5p6Q5rqQ56CBOiBAcXVpZXRib3ksIEDliqrlipsKICog5LqM5qyh57yW5YaZOiBA5pat5b+1CiAqLwoKLy/vvI3vvI3vvI09Xl9ePQogICAgdmFyIHZlcnNpb24gPSAyLjU7CiAgICB2YXIgX215U2V0ID0gewogICAgICAgIHF5OiAnJywgeWs6ICcnLCB0eDogJycsIG1nOiAnJywgYmw6ICcnLCBvdGg6ICcnLCBxanU6ICfpu5jorqQnLAogICAgICAgIGNqY2FjaGU6ICdoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzJywKICAgICAgICB4NWNhY2hlOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9QYXJzZV9Ebi5odG1sJywKICAgICAgICBjajogJ2h0dHBzOi8vY29kZS5hbGl5dW4uY29tL0FJOTU3L0hpa2VyL3Jhdy9tYXN0ZXIvdi9DbG91ZFBhcnNlLVYyX0RuLmpzJywKICAgICAgICB4NVVybDogJ2h0dHBzOi8vY29kZS5hbGl5dW4uY29tL0FJOTU3L0hpa2VyL3Jhdy9tYXN0ZXIvdi9QYXJzZV9Ebi5odG1sJywKICAgICAgICB4NVJvdXRlOiAnZmlsZTovLy9zdG9yYWdlL2VtdWxhdGVkLzAvQW5kcm9pZC9kYXRhL2NvbS5leGFtcGxlLmhpa2Vydmlldy9maWxlcy9Eb2N1bWVudHMvY2FjaGUvUGFyc2VfRG4uaHRtbCcKICAgIH07CiAgICB2YXIgbXlTZWxlY3QgPSAnXAogICAgICAgIDxvcHRpb24+TWFv5YWo572RPC9vcHRpb24+XAogICAgICAgIDxvcHRpb24+ZHM5NzM8L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj5wYXJ3aXg8L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj5qeHlpeWnvvIjlpLHmlYjvvIk8L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj5zaWd1anjvvIjlpLHmlYjvvIk8L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj5PSkJLPC9vcHRpb24+XAogICAgICAgIDxvcHRpb24+OTHop6PmnpA8L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj7kurrkurrov7c8L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj7msZ/muZY8L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj7kuYXmkq08L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj7ml6DlsL08L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj7pqprngas8L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj7mmbrog73op6PmnpA8L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj5MS+ino+aekDwvb3B0aW9uPlwKICAgICAgICA8b3B0aW9uPuWwj+eLvOS6kTwvb3B0aW9uPlwKICAgICAgICA8b3B0aW9uPuS5neWFq+ecizwvb3B0aW9uPlwKICAgICAgICA8b3B0aW9uPuaAneS6keino+aekDwvb3B0aW9uPlwKICAgICAgICA8b3B0aW9uPuS4g+WTpeino+aekDwvb3B0aW9uPlwKICAgICAgICA8b3B0aW9uPmppbmd5dTwvb3B0aW9uPlwKICAgICAgICA8b3B0aW9uPnl1bjE3MTc8L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj5KWDEyMzwvb3B0aW9uPlwKICAgICAgICA8b3B0aW9uPmh0dHBzOi8vanh4LnNteXM4LmNuL2luZGV4LnBocD91cmw9PC9vcHRpb24+XAogICAgICAgIDxvcHRpb24+aHR0cDovL2pvaW5saS5naXRlZS5pby9mcmVlL2luZGV4MS5odG1sP3VybD08L29wdGlvbj5cCiAgICAgICAgPG9wdGlvbj5odHRwczovL3ZpcC5janlzLnRvcC8/dXJsPTwvb3B0aW9uPlwKICAgICAgICA8b3B0aW9uPmh0dHBzOi8vangueWFvaHVheHVhbi5jb20vP3VybD08L29wdGlvbj4nOwovL++8je+8je+8jT1eX149CgovKioqKioqKirmjqXlj6Porr7nva4qKioqKioqKi8KICB2YXIgc2V0VXJsID0gImhpa2VyOi8vZW1wdHkjIiArIF9teVNldC5jaiArIGBAcnVsZT1qczp2YXIgcmVzPXt9OyB2YXIgZD1bXTt2YXIganNVcmwgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb24nKTtpZihqc1VybCA9PSAnJyB8fCAhZmV0Y2goSlNPTi5wYXJzZShqc1VybCkuY2opKXt2YXIganNGaWxlID0gZmV0Y2goTVlfVVJMLnNwbGl0KCcjJylbMV0pO31lbHNle3ZhciBqc0ZpbGUgPSBmZXRjaChKU09OLnBhcnNlKGpzVXJsKS5jaik7fWV2YWwoanNGaWxlKTtzZXRQYXJzZSgpO3Jlcy5kYXRhPWQ7IHNldEhvbWVSZXN1bHQocmVzKTtgOwogIHZhciBzZXRfc3dpdGNoID0gc2V0VXJsOwogIC8vYGhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigi6Kej5p6Q5YiX6KGoIiwi5byAIik7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/mraPlnKjmiZPlvIDliJfooaguLi4nYDsKICB2YXIgbW9kZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2NhY2hlL015UGFyc2VTZXQuanNvbicpLnJlcGxhY2UoL++8iC4qP++8iS9nLCcnKTsKICB2YXIgbXlTZXQgPSBtb2RlID09ICcnID8gX215U2V0IDogSlNPTi5wYXJzZShtb2RlKTsKICB2YXIgeDVfc3dpdGNoID0gYGhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOmlmKGdldFZhcigneDVzdGF0ZScpPT0n5byAJyl7cHV0VmFyKCd4NXN0YXRlJywn5YWzJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/lt7LlhbPpl614NeaSreaUvuWZqCd9ZWxzZXtwdXRWYXIoJ3g1c3RhdGUnLCflvIAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+W3suaJk+W8gHg15pKt5pS+5ZmoJ31gOwogIHZhciBsYXp5ID0gYGV2YWwoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvanMvUGFyc2UtVjJfRG4uanMnKSk7YXl0bVBhcnNlKGlucHV0KWA7CgovKioqKioqKirmjqXlj6Pop6PmnpAqKioqKioqKi8KICAvL3ZhciBlZWVvbCA9IGB2YXIgeXVybD0naHR0cDovL3ZpZGVvLmVlZW9sLmNuL2p4LnBocD91cmw9Jyt2aXBVcmw7dmFyIGp4VXJsID0gZmV0Y2goeXVybCx7fSkuc3BsaXQoIl91cmwiKVsyXTt2YXIgcGxheT1qeFVybC5tYXRjaCgvID0gJyguKj8pJy8pWzFdO3BsYXkuaW5kZXhPZigndXJsPWh0dHAnKT4tMT9kZWNvZGVVUklDb21wb25lbnQocGxheS5zcGxpdCgndXJsPScpWzFdKTpwbGF5YDsKICB2YXIga3VubGFuID0gYHZhciB5dXJsPSdodHRwczovL3RpdGFuLm1ndHYuY29tLm84dHYuY29tL2ppZXhpLz91cmw9Jyt2aXBVcmw7ZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy9QYXJzZS1WMl9Ebi5qcycse30pKTt2YXIgcGxheT1tYW9zcy50b1VybCh5dXJsLCdodHRwczovL3RpdGFuLm1ndHYuY29tLmt1bmxhbnlzLmNvbScsJyNrdW5sYW4nKTtwbGF5YDsKICB2YXIgQ29uYW4gPSBgdmFyIHl1cmw9J2h0dHBzOi8vd3d3Lm5rZHl3LmNvbS9qeC5waHA/dXJsPScrdmlwVXJsO3ZhciBwbGF5PXJlcXVlc3QoeXVybCx7fSkubWF0Y2goLyJ1cmwiOiIoLio/KSIvKVsxXTtwbGF5LmluZGV4T2YoJ3RpdGFuLm1ndHYnKT4tMT9wbGF5ICsgIjt7UmVmZXJlckBodHRwczovL3d3dy5ua2R5dy5jb219IjpwbGF5KycjQ29uYW4ubXA0J2A7CiAgLy92YXIg5p6r5p6XID0gYHZhciB5dXJsPSdodHRwczovL3RpdGFuLm1ndHYuY29tLmZlbmdsaW55cy5uZXQvP3VybD0nK3ZpcFVybDt2YXIgcGxheSA9IGZldGNoKHl1cmwse2hlYWRlcnM6eydSZWZlcmVyJzonaHR0cHM6Ly9hcGkuZmVuZ2xpbnlzLm5ldC8nfX0pLm1hdGNoKC91cmxzID0gIiguKj8pIi8pWzFdO3BsYXkuaW5kZXhPZignbWd0dicpPi0xP3BsYXkgKyAiO3tSZWZlcmVyQGh0dHBzOi8vbS5tZ3R2LmNvbS99IjpwbGF5Kycj5p6r5p6XLm1wNCdgOwogICAgCi8qKioqKioq6LCD55So5a695aSn5L2s5o+S5Lu2KioqKioqKi8KICAgLy92YXIg5ZC+54ix6Kej5p6QID0gYHZhciB5dXJsPSdodHRwczovL3ZpcC41MmppZXhpLnRvcC8/dXJsPScrdmlwVXJsO2V2YWwoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvanMvZy1wYXJzZS1saXN0LmpzJyx7fSkpO2ppZXhpNTIudG9VcmwoeXVybClgOwogICAvL3ZhciBNYW9zcCA9IGB2YXIgeXVybD0naHR0cDovLzM5Lm1hb3NwLm1lL2p4Lz91cmw9Jyt2aXBVcmw7ZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy9nLXBhcnNlLWxpc3QuanMnLHt9KSk7TWFvc3AudG9VcmwoeXVybClgOwogICB2YXIg6L+q5aWlID0gYHZhciB5dXJsPSdodHRwOi8vYXBpLjFkaW9yLmNuL2FuYWx5c2lzL2ZpcnN0L2FwaS5waHA/dXJsPScrdmlwVXJsO2V2YWwoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvanMvZy1wYXJzZS1saXN0LmpzJyx7fSkpO+i/quWlpS50b1VybCh5dXJsKWA7CiAgIHZhciBUWCA9IGB2YXIgeXVybD0naHR0cHM6Ly9xcS43OWRhLmNvbS9hcGkucGhwP3VybD0nK3ZpcFVybDtldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL2ctcGFyc2UtbGlzdC5qcycse30pKTtUWC50b1VybCh5dXJsKWA7CiAgIHZhciDpu5HkupEgPSBgdmFyIHl1cmw9J2h0dHBzOi8vamlleGkuMzgway5jb20vP3VybD0nK3ZpcFVybDtldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL2ctcGFyc2UtbGlzdC5qcycse30pKTvpu5HkupEudG9VcmwoeXVybClgOwogICB2YXIgcWluaWFuID0gYHZhciB5dXJsPSdodHRwOi8vangucWluaWFuLmNjL2p4L2NrZmx2Lz91cmw9Jyt2aXBVcmw7ZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy9nLXBhcnNlLWxpc3QuanMnLHt9KSk7cWluaWFuLnRvVXJsKHl1cmwpYDsKICAgLy92YXIgVFY5MjAgPSBgdmFyIHl1cmw9J2h0dHBzOi8vYXBpLnR2OTIwLmNvbS8/dXJsPScrdmlwVXJsO2V2YWwoZmV0Y2goJ2h0dHBzOi8vY29kZS5hbGl5dW4uY29tL0FJOTU3L0hpa2VyL3Jhdy9tYXN0ZXIvdi90djkyMC5qcycse30pKTt2YXIgcGxheT1UVjkyMC50b1VybCh5dXJsKTtpZihwbGF5LmluZGV4T2YoJ2h0dHAnKSE9LTEpe3ZhciBwbGF5cz1wbGF5LmluZGV4T2YoJ21ndHYnKT4tMT9wbGF5ICsgIjt7UmVmZXJlckBodHRwczovL3l1bi50djkyMC5jb219IjpwbGF5O2lmKHBsYXkuaW5kZXhPZignOTczL2FwaScpIT0tMSl7dmFyIG0zdTg9ZmV0Y2gocGxheSwge30pO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS92aWRlb3MubTN1OCcsIG0zdTgpOydmaWxlOi8vL3N0b3JhZ2UvZW11bGF0ZWQvMC9BbmRyb2lkL2RhdGEvY29tLmV4YW1wbGUuaGlrZXJ2aWV3L2ZpbGVzL0RvY3VtZW50cy9jYWNoZS92aWRlb3MubTN1OCMnK3ZpcFVybH1lbHNle3BsYXlzfX1lbHNleydodHRwczonK3BsYXl9YDsKICAgCi8v77yN77yN77yN5aSHIOeUqO+8je+8je+8jQovKiBNb29uOiBodHRwczovL2FwaS55dWVsaWFuZ2p4LmNvbS8/dXJsPQogKiAKICogCiAqIG1hb3NwOiBodHRwOi8vd3d3LnNtZHlpLmNvbS8KICog5peg5bC9OiBodHRwczovL3d3dy40a3l1LmNjLyB6aHVpeHUKICogcGFyd2l4OiBodHRwOi8vdmlwbXYudHYvIO+9nCBodHRwOi8vemh1aWp1YmEudmlwLwogKiBwYXJ3aXg6IGh0dHA6Ly9tcXR2LmNjL3BsYXkvbS9mNmJpWWhINVJuYjRUQgogKiDmibbpo446IGh0dHBzOi8vangubWd0di5jby9qeDMvP3VybD0gIGh0dHBzOi8vangubWd0di5jby9qeDMvYXBpLnBocCAgaHR0cHM6Ly9wbGF5ZXIuaXVrLmluay9tM3U4LnBocD91cmw9CiAqIG9qYms6IGh0dHBzOi8vd3d3Lm1ndHYuY29tLm9qYmtqeC5jb20vP3VybD1odHRwOi8vd3d3LmlxaXlpLmNvbS92XzFud3JzcGtsaWpzLmh0bWwKICogbGxxOiBodHRwczovL3YuaWlpdi52aXAvIGh0dHBzOi8vYi45MG9lLmNvbS8yMDJCMDVCOEI1MDgvYi8/dXJsPQogKiAKICogaHR0cDovLzYwanguY29tLz91cmw9CiAqIOaxn+a5ljogaHR0cHM6Ly9mYW50dWFuLnR2L3ZvZHBsYXkvOTUzMjYtMi0xLmh0bWwKICovCgoKdmFyIHRvb2xzID0gewogICAgTUQ1OiBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7CiAgICAgICAgcmV0dXJuIENyeXB0b0pTLk1ENShkYXRhKS50b1N0cmluZyhDcnlwdG9KUy5lbmMuSGV4KTsKICAgIH0sCiAgICBBRVM6IGZ1bmN0aW9uICh0ZXh0LCBrZXksIGl2LCBpc0VuY3J5cHQpIHsKICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpOwogICAgICAgIHZhciBrZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShrZXkpOwogICAgICAgIHZhciBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGl2KTsgCiAgICAgICAgaWYoaXNFbmNyeXB0KSB7CiAgICAgICAgICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZW5jcnlwdCh0ZXh0LCBrZXksIHsKICAgICAgICAgICAgICAgIGl2OiBpdiwKICAgICAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLAogICAgICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3CiAgICAgICAgICAgIH0pLnRvU3RyaW5nKCk7CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmRlY3J5cHQodGV4dCwga2V5LCB7CiAgICAgICAgICAgIGl2OiBpdiwKICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3CiAgICAgICAgfSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpOwogICAgfSwKICAgIC8vYWVzCiAgICBkZWNyeXB0OiBmdW5jdGlvbiAodGV4dCwga2V5LCBpdikgewogICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7CiAgICAgICAgdmFyIHJlc3VsdCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KHRleHQsIENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGtleSksIHsKICAgICAgICAgICAgaXY6IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGl2KSwKICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsCiAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzNwogICAgICAgIH0pOwogICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpOwogICAgfSwKICAgIC8vYXNjaWkKICAgIG5leHRDaGFyYWN0ZXI6IGZ1bmN0aW9uIChhc2NpaVZhbHVlLCBrKSB7CiAgICAgICAgdmFyIHMgPSBhc2NpaVZhbHVlOwogICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHMrayk7IAogICAgfSwKICAgIC8v5Yev5pKSCiAgICBjYWVzYXJDaXBoZXI6IGZ1bmN0aW9uIChzdHJpbmdWYWx1ZSwgaykgewogICAgICAgIHZhciBuZXdTdHJpbmcgPSAiIjsgCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmdWYWx1ZS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBuZXdTdHJpbmcgKz0gdGhpcy5uZXh0Q2hhcmFjdGVyKHN0cmluZ1ZhbHVlW2ldLmNoYXJDb2RlQXQoKSwgayk7IAogICAgICAgIH0gCiAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsgCiAgICB9LAogICAgZGR5dW46IGZ1bmN0aW9uIChpZCwgaXNPbGQpIHsKICAgICAgICB2YXIgX3ByZWZpeCA9ICdodHRwczovL2hscy5kZHl1bnAuY29tL2RkeXVuLyc7CiAgICAgICAgdmFyIHByZWZpeCA9ICdodHRwczovL2hscy45MG1tLm1lL2RkeXVuLyc7CiAgICAgICAgdmFyIGtleSA9ICdkdW9kdW9sJzsKICAgICAgICB2YXIgaWQyID0gdGhpcy5NRDUoaWQgKyBrZXkgKyAoTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDAwMCkgKiAxMDApLnRvU3RyaW5nKCkpOwogICAgICAgIGlmKGlzT2xkKXsKICAgICAgICAgICAgcHJlZml4ID0gX3ByZWZpeDsKICAgICAgICB9CiAgICAgICAgdmFyIHZpZGVvVXJsID0gcHJlZml4ICsgaWQgKyAnL2wvJyArIGlkMiArICcvcGxheWxpc3QubTN1OCc7CiAgICAgICAgcmV0dXJuIHZpZGVvVXJsOwogICAgfSwKICAgIC8v5Yqq5Yqb5aSn5L2s57O75YiXCiAgICBOdUxpOiBmdW5jdGlvbiAob2JqKSB7CiAgICAgICAgdmFyIGxpbmsgPSAnaGlrZXI6Ly9maWxlcy9jYWNoZS9EZWNyeXB0U2NyaXB0LVYyX051bGkuanMnOwogICAgICAgIGlmKCFmZXRjaChsaW5rKSl7CiAgICAgICAgICAgIHZhciBmaWxlcyA9IGZldGNoKCdodHRwczovL2NvZGUuYWxpeXVuLmNvbS9BSTk1Ny9IaWtlci9yYXcvbWFzdGVyL3AvRGVjcnlwdFNjcmlwdF9OdWxpLmpzJyk7CiAgICAgICAgICAgIHdyaXRlRmlsZShsaW5rLCBmaWxlcyk7CiAgICAgICAgfQogICAgICAgIHZhciBmaWxlID0gZmV0Y2gobGluaykuc3BsaXQoJz09Xl9ePT0nKTsKICAgICAgICBzd2l0Y2gob2JqKXsKICAgICAgICAgICAgY2FzZSAieWl5aSI6IGZpbGUgPSBmaWxlWzBdOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInNpZ3UiOiBmaWxlID0gZmlsZVsxXTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJyYzQiOiBmaWxlID0gZmlsZVsyXTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJqaXVibyI6IGZpbGUgPSBmaWxlWzNdOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmaWxlOwogICAgfQp9OwoKdmFyIFBhcnNlUyA9IHsKICAgIENpdHlJUDogJ2h0dHA6Ly9wdi5zb2h1LmNvbS9jaXR5anNvbicsCiAgICBwYXJzZUxjOiAnaHR0cHM6Ly9jb2RlLmFsaXl1bi5jb20vQUk5NTcvSGlrZXIvcmF3L21hc3Rlci9wL3BhcnNlTGMuanMnLAogICAgcGNVQTogJ1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFzvvJtc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzYnLAogICAgY2FjaGVNM3U4OiBmdW5jdGlvbiAodlVybCwgcmVmKSB7CiAgICAgICAgdHJ5ewogICAgICAgICAgICB2YXIgbTN1OCA9IGZldGNoKHZVcmwsIHt9KTsKICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL3ZpZGVvcy5tM3U4JywgbTN1OCk7CiAgICAgICAgfSBjYXRjaChlKSB7fQogICAgICAgIHJldHVybiAnZmlsZTovLy9zdG9yYWdlL2VtdWxhdGVkLzAvQW5kcm9pZC9kYXRhL2NvbS5leGFtcGxlLmhpa2Vydmlldy9maWxlcy9Eb2N1bWVudHMvY2FjaGUvdmlkZW9zLm0zdTgjJzsKICAgIH0sCiAgICBtYW9zczogZnVuY3Rpb24gKGp4dXJsLCByZWYsIGtleSkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHZhciBnZXRWaWRlb0luZm8gPSBmdW5jdGlvbih0ZXh0KXsKICAgICAgICAgICAgICAgIHJldHVybiB0b29scy5BRVModGV4dCwga2V5LCBpdik7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmKHJlZil7CiAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IHJlcXVlc3Qoanh1cmwsIHtoZWFkZXJzOiB7J1JlZmVyZXInOiByZWZ9fSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IHJlcXVlc3Qoanh1cmwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGh0bWwuaW5kZXhPZignJmJ0d2FmPScpIT0tMSl7CiAgICAgICAgICAgICAgICBodG1sID0gcmVxdWVzdChqeHVybCArICcmYnR3YWYnICsgaHRtbC5tYXRjaCgvJmJ0d2FmKC4qPykiLylbMV0sIHtoZWFkZXJzOiB7J1JlZmVyZXInOiByZWZ9fSkKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgaXYgPSBodG1sLnNwbGl0KCdidF90b2tlbiA9ICInKVsxXS5zcGxpdCgnIicpWzBdOwogICAgICAgICAgICBldmFsKGh0bWwubWF0Y2goL3ZhciBjb25maWcgPSB7W1xzXFNdKj99LylbMF0gKyAnJyk7CiAgICAgICAgICAgIGlmKGNvbmZpZy51cmwuc2xpY2UoMCw0KSE9J2h0dHAnKXsKICAgICAgICAgICAgICAgIGNvbmZpZy51cmwgPSBkZWNvZGVVUklDb21wb25lbnQodG9vbHMuQUVTKGNvbmZpZy51cmwsICJkdnlZUlFsblBSQ01kUVNlIiwgaXYpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gY29uZmlnLnVybDsKICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0sCiAgICBPSkJLOiBmdW5jdGlvbih2aXBVcmwpIHsKICAgICAgICB2YXIgdXJsID0gdGhpcy5tYW9zcygnaHR0cHM6Ly92Lm9qYmtqeC5jb20vP3VybD0nICsgdmlwVXJsICsgJyZuZXh0PS8vd3d3LjRrYW4udHYvJywgJ2h0dHBzOi8vd3d3LjRrYW4udHYvJywgJ09KQktZQU5HT0pCS1lBTkcnKTsKICAgICAgICAvKmlmKC9vamJrLy50ZXN0KHVybCkpewogICAgICAgICAgICB2YXIgbmV3VXJsID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCx7aGVhZGVyczp7J1JlZmVyZXInOidodHRwczovL3Yub2pia2p4LmNvbS8nfSxyZWRpcmVjdDpmYWxzZSwgd2l0aEhlYWRlcnM6dHJ1ZX0pKS5oZWFkZXJzLmxvY2F0aW9uOwogICAgICAgICAgICB1cmwgPSBuZXdVcmwgIT0gdW5kZWZpbmVkID8gdGhpcy5jYWNoZU0zdTgobmV3VXJsICsgJyNpZ25vcmVJbWc9dHJ1ZSMnKSArIHZpcFVybCA6IHVybDsKICAgICAgICB9Ki8KICAgICAgICByZXR1cm4gdXJsOwogICAgfSwKICAgIOeMq+ino+aekDI6IGZ1bmN0aW9uICh2aXBVcmwpIHsKICAgICAgICB0cnl7Ly9mcm9tPT4gaHR0cDovL3d3dy40a3l1LmNjLyDlpYfoiboKICAgICAgICAgICAgdmFyIHBhcnNlID0gJ2h0dHBzOi8vbWFvc3AuNGt5dS5jYy9hbmFseXNpcy5waHA/dj0nOwogICAgICAgICAgICB2YXIgcmVmID0gJ2h0dHBzOi8vbWFvc3AuNGt5dS5jYyc7CiAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChwYXJzZSt2aXBVcmwsIHtoZWFkZXJzOnsnUmVmZXJlcic6IHJlZiB9fSk7CiAgICAgICAgICAgIHVybCA9IGh0bWwubWF0Y2goL3VybHMgPSAiKC4qPykiLylbMV07CiAgICAgICAgICAgIHJldHVybiB1cmw7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9LAogICAg54yr6Kej5p6QOiBmdW5jdGlvbiAodmlwVXJsKSB7CiAgICAgICAgdHJ5ey8vZnJvbT0+IGh0dHA6Ly93d3cuZTd5cy5jb20vCiAgICAgICAgICAgIC8vdmFyIHBhcnNlID0gJ2h0dHA6Ly95c2p4Lmxra2kuY24vYW5hbHlzaXMucGhwP3Y9JzsKICAgICAgICAgICAgZXZhbChyZXF1ZXN0KFBhcnNlUy5DaXR5SVApKTsKICAgICAgICAgICAgdmFyIGp4dXJsID0naHR0cDovL3lzangubGtraS5jbi8/dXJsPScgKyB2aXBVcmw7CiAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCx7aGVhZGVyczp7J1JlZmVyZXInOiAnaHR0cDovL3d3dy5lN3lzLmNvbSd9fSk7CiAgICAgICAgICAgIHZhciB2a2V5ID0gaHRtbC5tYXRjaCgvdmtleSA9ICcoLio/KScvKVsxXTsKICAgICAgICAgICAgdmFyIGJvZHlzID0gJ3ZrZXk9Jyt2a2V5ICsgJyZpcD0nK3JldHVybkNpdHlTTi5jaXAgKyAnJmRwPScrcmV0dXJuQ2l0eVNOLmNuYW1lOwogICAgICAgICAgICB2YXIgdXJsID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwOi8veXNqeC5sa2tpLmNuL2FwaV8ucGhwJywge2JvZHk6IGJvZHlzLCBtZXRob2Q6ICdQT1NUJyB9KSkudXJsOwogICAgICAgICAgICByZXR1cm4gdXJsOwogICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfSwKICAgIOWwj+WwhjogZnVuY3Rpb24gKHZpcFVybCkgewogICAgICAgIHRyeXsKICAgICAgICAgICAgdmFyIHByZWZpeCA9ICdodHRwczovL3d3dy54ZnlsaGwuY29tLyc7CiAgICAgICAgICAgIHZhciByZWYgPSAnaHR0cDovL3d3dy5rcGV6cC5jbi9qbGV4aS5waHA/dXJsPSc7CiAgICAgICAgICAgIHZhciBwYXJzZSA9IHByZWZpeCArICdqaWV4aS8/dXJsPSc7CiAgICAgICAgICAgIHZhciBhcGkgPSBwcmVmaXggKyAnamlleGkvYXBpLnBocCc7CiAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChwYXJzZSt2aXBVcmwse2hlYWRlcnM6eydSZWZlcmVyJzpyZWYrdmlwVXJsfX0pOwogICAgICAgICAgICB2YXIgdmtleSA9IGh0bWwubWF0Y2goL3ZrZXkgPSAnKC4qPyknLylbMV07CiAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSwgewogICAgICAgICAgICAgICAgaGVhZGVyczogeydSZWZlcmVyJzogcHJlZml4fSwKICAgICAgICAgICAgICAgIGJvZHk6ICd2a2V5PScgKyB2a2V5ICsgJyZpcD0xMTIuOTYuNzEuMTg3JmRxPeW5v+S4nOecgeW5v+W3nuW4gicsIG1ldGhvZDogJ1BPU1QnCiAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgdXJsID0gKGpzb24uY29kZSA9PSAyMDAgPyBqc29uLnVybCA6ICcnKTsKICAgICAgICAgICAgcmV0dXJuIHVybDsKICAgICAgICB9IGNhdGNoKGUpewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfSwKICAgIOS6uuS6uui/tzogZnVuY3Rpb24gKHZpcFVybCkgewogICAgICAgIHRyeXsvL2Zyb209PiDkuIPlubTlvbHop4YgaHR0cDovL20ubG1jeGp5LmNuLyBodHRwOi8vbS5tc29uZy5uZXQKICAgICAgICAgICAgdmFyIHBhcnNlID0gJ2h0dHA6Ly80Mi4xOTIuNDcuMTMyL2p4L3JlbnJlbm1pL2FuYWx5c2lzLnBocD92PSc7CiAgICAgICAgICAgIHZhciByZWYgPSAnaHR0cDovLzQyLjE5Mi40Ny4xMzIvangvcmVucmVubWkvP3VybD0nICsgdmlwVXJsOwogICAgICAgICAgICB2YXIgaHRtbCA9IHJlcXVlc3QocGFyc2UrdmlwVXJsLCB7aGVhZGVyczp7J1JlZmVyZXInOiByZWYgfX0pOwogICAgICAgICAgICB1cmwgPSBodG1sLm1hdGNoKC91cmxzID0gIiguKj8pIi8pWzFdOwogICAgICAgICAgICByZXR1cm4gdXJsOwogICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfSwKICAgICc5Meino+aekCc6IGZ1bmN0aW9uICh2aXBVcmwpIHsKICAgICAgICAgICAgdmFyIHVybCA9IHRoaXMubWFvc3MoJ2h0dHBzOi8vd3d3LjkxanhzLmNvbS9qaWV4aS8/dXJsPScgKyB2aXBVcmwsICcnLCAnQkM4MjU2Njg3RDc4MkQwOScpOwogICAgICAgICAgICByZXR1cm4gdXJsOwogICAgfSwKICAgIOaZuuiDveino+aekDogZnVuY3Rpb24gKHZpcFVybCkgewogICAgICAgIHRyeXsKICAgICAgICAgICAgdmFyIHJlZiA9ICdodHRwOi8vYXBpLm1haXppbWFsbC5jb20vaW5kZXgucGhwP3VybD0nICsgdmlwVXJsOwogICAgICAgICAgICB2YXIganh1cmwgPSAnaHR0cDovL3ZvZC5tYWl6aW1hbGwuY29tL2luZGV4LnBocD91cmw9JyArIHZpcFVybDsKICAgICAgICAgICAgdmFyIHVybCA9IHRoaXMubWFvc3Moanh1cmwsIHJlZiwgJzByNmZxVUcyd250V01XMUknKTsKICAgICAgICAgICAgaWYodXJsLmluZGV4T2YoJ2poeXVuLm1wND9rZXknKSE9LTEpewogICAgICAgICAgICAgICAgdXJsID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge3JlZGlyZWN0OmZhbHNlLCB3aXRoSGVhZGVyczp0cnVlfSkpLmhlYWRlcnMubG9jYXRpb24gKyAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdXJsOwogICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfSwKICAgIOS4g+WTpeino+aekDogZnVuY3Rpb24gKHZpcFVybCkgewogICAgICAgIHRyeXsKICAgICAgICAgICAgdmFyIHJlZiA9ICdodHRwczovL2p4Lm1ta3YuY24vdHYucGhwP3VybD0nICsgdmlwVXJsOwogICAgICAgICAgICB2YXIgaHRtbCA9IHJlcXVlc3QoJ2h0dHBzOi8vangubW1rdi5jbi9qaWV4aWkucGhwP3Y9JyArIHZpcFVybCwge2hlYWRlcnM6IHsnUmVmZXJlcic6IHJlZn19KTsKICAgICAgICAgICAgdmFyIHVybCA9IGh0bWwubWF0Y2goL3ZpZGVvIHNyYz0iKC4qPykiLylbMV07CiAgICAgICAgICAgIGlmKHVybC5pbmRleE9mKCcvcWlnZS5waHA/dj0nKSE9LTEpewogICAgICAgICAgICAgICAgdmFyIGpzb24gPSBmZXRjaCh1cmwse3JlZGlyZWN0OmZhbHNlLCB3aXRoSGVhZGVyczp0cnVlfSk7CiAgICAgICAgICAgICAgICB1cmwgPSBKU09OLnBhcnNlKGpzb24pLmhlYWRlcnMubG9jYXRpb24gKyAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdXJsOwogICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfSwKICAgIOazoeazoeezljogZnVuY3Rpb24gKHZpcFVybCkgewogICAgICAgIHRyeXsKICAgICAgICAgICAgdmFyIHJlZiA9ICdodHRwczovL2Nlc2hpLnNoZW5ncWlhbmt1YWl0YW8uY24vZHAvP3VybD0nICsgdmlwVXJsOwogICAgICAgICAgICB2YXIgaHRtbCA9IHJlcXVlc3QoJ2h0dHBzOi8vY2VzaGkuc2hlbmdxaWFua3VhaXRhby5jbi9kcC9hbmFseXNpcy5waHA/dj0nICsgdmlwVXJsLCB7aGVhZGVyczogeydSZWZlcmVyJzogcmVmfX0pOwogICAgICAgICAgICB2YXIgdXJsID0gaHRtbC5tYXRjaCgvdXJscyA9ICIoLio/KSIvKVsxXTsKICAgICAgICAgICAgcmV0dXJuIHVybDsKICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0sCiAgICDpqprngas6IGZ1bmN0aW9uICh2aXBVcmwpIHsKICAgICAgICB0cnl7CiAgICAgICAgICAgIHZpcFVybCA9IGJhc2U2NEVuY29kZSh2aXBVcmwpLnJlcGxhY2UoL2FIUjBjSE02THkvLCAnYXZIZFJUMEpjakhhTV82R0xreU8wTzBPJykucmVwbGFjZSgvPS9nLCAnTzBPME8nKTsKICAgICAgICAgICAgdmFyIHJlZiA9ICdodHRwOi8vc2FvaHVvdHYuY29tLyc7CiAgICAgICAgICAgIHZhciBqeHVybCA9ICdodHRwOi8vcGxheS5oaHBsYXllci5jb20vaGhqeC9pbmRleC5waHA/dXJsPScgKyB2aXBVcmw7CiAgICAgICAgICAgIHZhciBhcGkgPSAnaHR0cDovL3BsYXkuaGhwbGF5ZXIuY29tL2hoangvYXBpLnBocCc7CiAgICAgICAgICAgIHZhciBjb2RlcyA9IHJlcXVlc3Qoanh1cmwsIHtoZWFkZXJzOiB7J1JlZmVyZXInOiByZWYgfX0pLm1hdGNoKC92YXIgdXJsID0gIltcc1xTXSo/dmFyIGFjdFtcc1xTXSo/Oy8pWzBdOwogICAgICAgICAgICBldmFsKGNvZGVzKTsKICAgICAgICAgICAgdmFyIHVybCA9IEpTT04ucGFyc2UocmVxdWVzdChhcGksCiAgICAgICAgICAgICAgICB7aGVhZGVyczogeydSZWZlcmVyJzoganh1cmwgfSwKICAgICAgICAgICAgICAgIGJvZHk6ICd1cmw9Jyt1cmwgKyAnJnQ9Jyt0ICsgJyZrZXk9JytrZXkgKyAnJmFjdD0nK2FjdCArICcmcGxheT0xJywKICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnCiAgICAgICAgICAgIH0pKS51cmw7CiAgICAgICAgICAgIHJldHVybiB1cmwuc3Vic3RyKDAsNSk9PScvaGhqeCcgPyBhcGkuc3BsaXQoJy9oaGp4JylbMF0gKyB1cmwgOiB1cmw7CiAgICAgICAgfSBjYXRjaChlKXsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0sCiAgICB5eW9iOiBmdW5jdGlvbiAodmlwVXJsKSB7CiAgICAgICAgdHJ5ewogICAgICAgICAgICB2YXIgYXBpID0gJ2h0dHBzOi8vYXBpLnl5b2IuY29tL3VybC9hcGkucGhwJzsKICAgICAgICAgICAgdmFyIGI2NHVybCA9IGJhc2U2NEVuY29kZSh2aXBVcmwpLnJlcGxhY2UoLz0vZywgJ08wTzBPJykucmVwbGFjZSgvXCsvZywgJ28wMDBvJyk7CiAgICAgICAgICAgIHZhciBBQSA9IGI2NHVybC5zdWJzdHIoMCwxOSk7CiAgICAgICAgICAgIHZhciBCQiA9ICcwZWVmZWNmODZiYjA3ZTc1ZGI3JzsKICAgICAgICAgICAgdmFyIG5ld1VybCA9ICcnOwogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IEFBLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBuZXdVcmwgKz0gQUFbaV0gKyBCQltpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2aXBVcmwgPSBuZXdVcmwgKyBiNjR1cmwuc3Vic3RyKDE5KTsKICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpLCB7aGVhZGVyczoge30sIGJvZHk6ICd1cmw9JyArIHZpcFVybCArICcmdHlwZT0nLCBtZXRob2Q6ICdQT1NUJyB9KSk7CiAgICAgICAgICAgIHZhciB1cmwgPSBqc29uLmNvZGUgPT0gMjAwID8ganNvbi51cmwgOiAnNDA0JzsKICAgICAgICAgICAgcmV0dXJuIHVybDsKICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0sCiAgICBXdUtvbmc6IGZ1bmN0aW9uICh2aXBVcmwpIHsKICAgICAgICB0cnl7CiAgICAgICAgICAgIHZhciBqeHVybCA9ICdodHRwOi8vMjkzLndrangubWU6NjYwMy9qc29uYy8yOTNvb29lbS5waHA/dXJsPScgKyB2aXBVcmw7CiAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KGp4dXJsLCB7cmVkaXJlY3Q6ZmFsc2UsIHdpdGhIZWFkZXJzOnRydWV9KSk7CiAgICAgICAgICAgIHZhciB1cmwgPSBqc29uLmhlYWRlcnMubG9jYXRpb25bMF07CiAgICAgICAgICAgIHJldHVybiB1cmw7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9LAogICAgU1ZJUDogZnVuY3Rpb24gKHZpcFVybCkgewogICAgICAgIHRyeXsKICAgICAgICAgICAgdmFyIHJlZiA9ICdodHRwczovL3d3dy5qcHlzdmlwLm5ldC8nOwogICAgICAgICAgICB2YXIgcGFyc2UgPSByZWYgKyAnZHBsYXllci9hbmFseXNpcy5waHA/dj0nOwogICAgICAgICAgICB2YXIgaHRtbCA9IHJlcXVlc3QocGFyc2UrdmlwVXJsLCB7aGVhZGVyczp7J1JlZmVyZXInOiByZWYgfX0pOwogICAgICAgICAgICB2YXIgdXJsID0gaHRtbC5tYXRjaCgvdXJscyA9ICIoLio/KSIvKVsxXTsgIAogICAgICAgICAgICByZXR1cm4gdXJsOwogICAgICAgICAgICAvLy5pbmRleE9mKCd0aXRhbi5tZ3R2JykgPi0xID8gdXJsICsgJzt7JyArIHRoaXMucGNVQSsgJyYmUmVmZXJlckBodHRwczovL3d3dy5tZ3R2LmNvbX0nIDogdXJsOwogICAgICAgIH0gY2F0Y2goZSl7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9LAogICAgamluZ3l1OiBmdW5jdGlvbiAodmlwVXJsLCBuYW1lKSB7CiAgICAgICAgdHJ5ewogICAgICAgICAgICBpZighbmFtZSl7bmFtZSA9ICdqaW5neXUnO30KICAgICAgICAgICAgdmFyIHJlZiA9ICdodHRwczovL3d3dy5tZ3R2LmNvbS5sZWVsZW8uY24vbm1tLycgKyBuYW1lICsgJy5waHA/dXJsPScgKyB2aXBVcmw7CiAgICAgICAgICAgIHZhciBqeHVybCA9ICdodHRwczovL3d3dy5tZ3R2LmNvbS5sZWVsZW8uY24vbm1tL3BsYXllci8/dXJsPScgKyB2aXBVcmwgKyAnJmpzb249JyArIG5hbWU7CiAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCwge2hlYWRlcnM6eydSZWZlcmVyJzogcmVmfX0pOwogICAgICAgICAgICB2YXIgdXJsID0gaHRtbC5tYXRjaCgvInVybCI6ICIoLio/KSIvKVsxXTsKICAgICAgICAgICAgcmV0dXJuIHVybDsKICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0sCiAgICB5azUyMDogZnVuY3Rpb24gKHZpcFVybCkgewogICAgICAgIHRyeXsKICAgICAgICAgICAgZXZhbChmZXRjaCh0aGlzLnBhcnNlTGMpKTsKICAgICAgICAgICAgdmFyIHBhcnNlID0gJ2h0dHBzOi8vcGF5LjUyMHlrLmNuLzI1Ni8/dXJsPSc7CiAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChwYXJzZSArIHZpcFVybCk7CiAgICAgICAgICAgIHZhciBodG1sMiA9IGh0bWwuc3BsaXQoJ3Bvc3QoIicpWzFdLnNwbGl0KCdmdW5jdGlvbicpWzBdOwogICAgICAgICAgICB2YXIgYXBpID0gcGFyc2Uuc3BsaXQoJz8nKVswXSArIGh0bWwyLnNwbGl0KCciJylbMF07CiAgICAgICAgICAgIGV2YWwoaHRtbC5zcGxpdCgnZG9jdW1lbnQuZG9tYWluOycpWzFdLnNwbGl0KCc8L3NjcmlwdD4nKVswXSk7CiAgICAgICAgICAgIHZhciBvdGhlciA9IGJhc2U2NEVuY29kZSh1cmwpOwogICAgICAgICAgICB2YXIgaG9zdCA9ICdwYXkuNTIweWsuY24nOwogICAgICAgICAgICB2YXIgdG9rZW4gPSBfTGMuZ2V0VG9rZW5fS2VlcCh0b29scy5NRDUoaG9zdCt0aW1lK2RvbWFpbikpOwogICAgICAgICAgICB2YXIga2VlcCA9IF9MYy5nZXRUb2tlbl9LZWVwKHRvb2xzLk1ENShob3N0K3RpbWUpKTsKICAgICAgICAgICAgdmFyIGtleSA9IGh0bWwyLnNwbGl0KCIna2V5JzonIilbMV0uc3BsaXQoIiciKVswXTsKICAgICAgICAgICAgdmFyIGJvZHkgPSAndXJsPScgKyB1cmwgKyAnJnJlZmVyZXI9JnJlZj0xJnRpbWU9JyArIHRpbWUgKyAnJnR5cGU9Jm90aGVyPScgKyBvdGhlciArICcmdG9rZW49JyArIHRva2VuICsgJyZrZWVwPScgKyBrZWVwICsgJyZrZXk9JyArIGtleSArICcmaW9zPTAnOwogICAgICAgICAgICB2YXIganNvbmNvZGUgPSByZXF1ZXN0KGFwaSwge2hlYWRlcnM6IHsnUmVmZXJlcic6IHBhcnNlICsgdmlwVXJsIH0sIG1ldGhvZDogJ1BPU1QnLCBib2R5OiBib2R5IH0pLm1hdGNoKC97W1xzXFNdLio/fS9nKTsKICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGpzb25jb2RlW2pzb25jb2RlLmxlbmd0aC0xXSk7CiAgICAgICAgICAgIHVybCA9IChqc29uLmNvZGUgPT0gMjAwID8ganNvbi51cmwgOiAnJyk7CiAgICAgICAgICAgIHJldHVybiB1cmw7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9LAogICAg5Lmd5YWr55yLOiBmdW5jdGlvbiAodmlwVXJsKSB7CiAgICAgICAgdHJ5ewogICAgICAgICAgICBldmFsKGZldGNoKHRoaXMucGFyc2VMYykpOwogICAgICAgICAgICB2YXIgcG9yZWYgPSAnaHR0cHM6Ly9qeC55b3V5aXR2LmNvbS8/dXJsPScgKyB2aXBVcmw7CiAgICAgICAgICAgIHZhciBwYXJzZSA9ICdodHRwczovL2p4LnlvdXlpdHYuY29tLz91cmw9JzsKICAgICAgICAgICAgdmFyIGh0bWwgPSByZXF1ZXN0KHBhcnNlICsgdmlwVXJsKTsKICAgICAgICAgICAgdmFyIGh0bWwyID0gaHRtbC5zcGxpdCgnc2JsYXBpLnBocCInKVsxXS5zcGxpdCgnZnVuY3Rpb24nKVswXTsKICAgICAgICAgICAgdmFyIGFwaSA9ICdodHRwczovL2p4LnlvdXlpdHYuY29tL3NibGFwaS5waHAnOwogICAgICAgICAgICBldmFsKGh0bWwuc3BsaXQoJ2RvY3VtZW50LmRvbWFpbjsnKVsxXS5zcGxpdCgnPC9zY3JpcHQ+JylbMF0pOwogICAgICAgICAgICB2YXIgaXAgPSBodG1sMi5tYXRjaCgvaXAnOicoLio/KScvKVsxXTsKICAgICAgICAgICAgdmFyIG90aGVyID0gYmFzZTY0RW5jb2RlKHVybCk7CiAgICAgICAgICAgIHZhciBob3N0ID0gJ2p4LnlvdXlpdHYuY29tJzsKICAgICAgICAgICAgdmFyIHRva2VuID0gX0xjLmdldFRva2VuX0tlZXAodG9vbHMuTUQ1KGRvbWFpbit0aW1lK2RvbWFpbikpOwogICAgICAgICAgICB2YXIga2VlcCA9IF9MYy5nZXRUb2tlbl9LZWVwKHRvb2xzLk1ENShkb21haW4rdGltZSkpOwogICAgICAgICAgICB2YXIga2V5ID0gaHRtbDIuc3BsaXQoImtleSc6JyIpWzFdLnNwbGl0KCInIilbMF07CiAgICAgICAgICAgIHZhciBrZXlzID0gaHRtbDIubWF0Y2goL2tleXMnOicoLio/KScvKVsxXTsKICAgICAgICAgICAgdmFyIGJvZHkgPSAndXJsPScrdXJsICsgJyZyZWZlcmVyPScgKyBiYXNlNjRFbmNvZGUocG9yZWYpICsgJyZyZWY9MSZ0aW1lPScgKyB0aW1lICsgJyZpcD0nK2lwICsgJyZ0eXBlPSZvdGhlcj0nK290aGVyICsgJyZ0b2tlbj0nK3Rva2VuICsgJyZrZXlzPScra2V5cyArICcma2VlcD0nK2tlZXAgKyAnJmtleT0nK2tleSArICcmaW9zPTAnOwogICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdChhcGksIHtoZWFkZXJzOiB7J1JlZmVyZXInOiBwYXJzZSArIHZpcFVybCB9LCBtZXRob2Q6ICdQT1NUJywgYm9keTogYm9keSB9KSk7CiAgICAgICAgICAgIHVybCA9IChqc29uLmNvZGUgPT0gMjAwID8ganNvbi51cmwgOiAnJyk7CiAgICAgICAgICAgIHJldHVybiB1cmw7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9LAogICAg5oCd5LqR6Kej5p6QOiBmdW5jdGlvbiAodmlwVXJsKSB7CiAgICAgICAgdHJ5eyAvL+WkhyBodHRwczovL2p4LnlvdXlpdHYuY29tLz91cmw9CiAgICAgICAgICAgIGV2YWwoZmV0Y2godGhpcy5wYXJzZUxjKSk7CiAgICAgICAgICAgIHZhciBwb3JlZiA9ICdodHRwczovL2FwaS5hcDJwLmNuLz91cmw9JyArIHZpcFVybDsKICAgICAgICAgICAgdmFyIHBhcnNlID0gJ2h0dHBzOi8vYXBpLmFwMnAuY24vP3VybD0nOwogICAgICAgICAgICB2YXIgaHRtbCA9IHJlcXVlc3QocGFyc2UgKyB2aXBVcmwpOwogICAgICAgICAgICB2YXIgaHRtbDIgPSBodG1sLnNwbGl0KCdhcGkucGhwIicpWzFdLnNwbGl0KCdmdW5jdGlvbicpWzBdOwogICAgICAgICAgICB2YXIgYXBpID0gJ2h0dHBzOi8vYXBpLmFwMnAuY24vYXBpLnBocCc7CiAgICAgICAgICAgIGV2YWwoaHRtbC5zcGxpdCgnZG9jdW1lbnQuZG9tYWluOycpWzFdLnNwbGl0KCc8L3NjcmlwdD4nKVswXSk7CiAgICAgICAgICAgIHZhciBpcCA9IGh0bWwyLm1hdGNoKC9pcCc6JyguKj8pJy8pWzFdOwogICAgICAgICAgICB2YXIgb3RoZXIgPSBiYXNlNjRFbmNvZGUodXJsKTsKICAgICAgICAgICAgdmFyIGhvc3QgPSAnYXBpLmFwMnAuY24nOwogICAgICAgICAgICB2YXIgdG9rZW4gPSBfTGMuZ2V0VG9rZW5fS2VlcCh0b29scy5NRDUoZG9tYWluK3RpbWUrZG9tYWluKSk7CiAgICAgICAgICAgIHZhciBrZWVwID0gX0xjLmdldFRva2VuX0tlZXAodG9vbHMuTUQ1KGRvbWFpbit0aW1lKSk7CiAgICAgICAgICAgIHZhciBrZXkgPSBodG1sMi5zcGxpdCgia2V5JzonIilbMV0uc3BsaXQoIiciKVswXTsKICAgICAgICAgICAgdmFyIGtleXMgPSBodG1sMi5tYXRjaCgva2V5cyc6JyguKj8pJy8pWzFdOwogICAgICAgICAgICB2YXIgYm9keSA9ICd1cmw9Jyt1cmwgKyAnJnJlZmVyZXI9JyArIGJhc2U2NEVuY29kZShwb3JlZikgKyAnJnJlZj0xJnRpbWU9JyArIHRpbWUgKyAnJmlwPScraXAgKyAnJnR5cGU9Jm90aGVyPScrb3RoZXIgKyAnJnRva2VuPScrdG9rZW4gKyAnJmtleXM9JytrZXlzICsgJyZrZWVwPScra2VlcCArICcma2V5PScra2V5ICsgJyZpb3M9MCc7CiAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSwge2hlYWRlcnM6IHsnUmVmZXJlcic6IHBhcnNlICsgdmlwVXJsIH0sIG1ldGhvZDogJ1BPU1QnLCBib2R5OiBib2R5IH0pKTsKICAgICAgICAgICAgdXJsID0gKGpzb24uY29kZSA9PSAyMDAgPyBqc29uLnVybCA6ICcnKTsKICAgICAgICAgICAgcmV0dXJuIHVybDsKICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0sCiAgICDlsI/ni7zkupE6IGZ1bmN0aW9uICh2aXBVcmwpIHsKICAgICAgICB0cnl7CiAgICAgICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7CiAgICAgICAgICAgIGV2YWwoZmV0Y2goJ2h0dHBzOi8vY29kZS5hbGl5dW4uY29tL0FJOTU3L0hpa2VyL3Jhdy9tYXN0ZXIvcC94aWFvbGFuZy5qcycpKTsKICAgICAgICAgICAgdmFyIHVybCA9IHF1aWV0Ym95LnRvVXJsKHZpcFVybCk7CiAgICAgICAgICAgIGlmKHVybC5pbmRleE9mKCdqc29uJnVybD0nKSE9LTEpewogICAgICAgICAgICAgICAgdmFyIGNvZGUgPSB1cmwuc3BsaXQoJ2pzb24mdXJsPScpWzFdOwogICAgICAgICAgICAgICAgdXJsID0gSlNPTi5wYXJzZShiYXNlNjREZWNvZGUoY29kZSkpLm0zdTg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHVybDsKICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0sCiAgICDml6DlsL06IGZ1bmN0aW9uICh2aXBVcmwpIHsKICAgICAgICB0cnl7CiAgICAgICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7CiAgICAgICAgICAgIGV2YWwoZmV0Y2goJ2h0dHBzOi8vY29kZS5hbGl5dW4uY29tL0FJOTU3L0hpa2VyL3Jhdy9tYXN0ZXIvcC93dWppbi5qcycpKTsKICAgICAgICAgICAgdmFyIHVybCA9IHF1aWV0Ym95LnRvVXJsKHZpcFVybCk7CiAgICAgICAgICAgIHJldHVybiB1cmw7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9LAogICAgTEvop6PmnpA6IGZ1bmN0aW9uICh2aXBVcmwsIHByZWZpeCkgewogICAgICAgIHRyeXsgLy9mcm9tIDU5Mei/veWJp++9nGh0dHBzOi8vZGFpbGkubWF5aXhpb25nZGkuY24vIO+9nCBodHRwczovL3ZpcC41Mm1zci5jb20vCiAgICAgICAgICAgIC8vaHR0cHM6Ly9xLjU5MXpodWlqdS5jb20vCiAgICAgICAgICAgIHZhciBwYXJzZSA9IFsiaHR0cHM6Ly9xLjU5MXpodWlqdS5jb20vIiwgImh0dHBzOi8vd3d3Lmp1enR2LmNvbS93YXBqeC8iXTsKICAgICAgICAgICAgaWYocHJlZml4KXsKICAgICAgICAgICAgICAgIHBhcnNlID0gW3ByZWZpeCwgcHJlZml4XQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKHZpcFVybC5pbmRleE9mKCJodHRwIikgIT0gLTEpewogICAgICAgICAgICAgICAgdmFyIHJlZiA9IHBhcnNlWzBdICsgIj91cmw9IiArIHZpcFVybDsKICAgICAgICAgICAgICAgIHZhciBhcGkgPSBwYXJzZVswXSArICJhcGkucGhwIjsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICB2YXIgcmVmID0gcGFyc2VbMV0gKyAiP3VybD0iK3ZpcFVybDsKICAgICAgICAgICAgICAgIHZhciBhcGkgPSBwYXJzZVsxXSArICJhcGkucGhwIjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgYjY0aWQgPSBiYXNlNjRFbmNvZGUodmlwVXJsKTsKICAgICAgICAgICAgdmFyIHBhcnNlaWQgPSB0b29scy5jYWVzYXJDaXBoZXIoYjY0aWQsIC0xKTsKICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpLCB7aGVhZGVyczogeydSZWZlcmVyJzogcmVmIH0sIG1ldGhvZDogJ1BPU1QnLCBib2R5OiAndXJsPScgKyBwYXJzZWlkIH0pKTsKICAgICAgICAgICAgdXJsID0gKGpzb24uY29kZSA9PSAyMDAgPyBiYXNlNjREZWNvZGUodG9vbHMuY2Flc2FyQ2lwaGVyKGpzb24udXJsLCAtMSkpIDogJycpOwogICAgICAgICAgICByZXR1cm4gdXJsOwogICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfSwKICAgIOaxn+a5ljogZnVuY3Rpb24gKHZpcFVybCkgewogICAgICAgIHRyeXsgLy9mcm9tIOmbquS6uuW9seinhiDlpKfku5nlsIoKICAgICAgICAgICAgLyp2YXIgcmVmID0gJ2h0dHA6Ly93d3cudGlhbnNodXl1bi5uZXQvJzsKICAgICAgICAgICAgdmFyIGp4dXJsID0gJ2h0dHBzOi8vangudGlhbnNodXl1bi5uZXQvP3VybD0nICsgdmlwVXJsOwogICAgICAgICAgICB2YXIgdXJsID0gcGFyc2VEb20ocmVxdWVzdChqeHVybCwge2hlYWRlcnM6IHsnUmVmZXJlcic6IHJlZn19KSwgJ2JvZHkmJmlmcmFtZSYmc3JjJyk7CiAgICAgICAgICAgICovCiAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLm1hb3NzKCdodHRwczovL3FpYW4ud2tmaWxlLmNvbS9tM3U4LnBocD91cmw9JyArIHZpcFVybCwgJ2h0dHBzOi8vZmFudHVhbi50di8nLCAnOTQxODVFNDNERUQ2RUJBRicpOwogICAgICAgICAgICBpZih1cmwuaW5kZXhPZignamh5dW4ubXA0P2tleScpIT0tMSl7CiAgICAgICAgICAgICAgICB1cmwgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7cmVkaXJlY3Q6ZmFsc2UsIHdpdGhIZWFkZXJzOnRydWV9KSkuaGVhZGVycy5sb2NhdGlvbiArICcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB1cmw7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9LAogICAg5Lmd5YWr55yLeHg6IGZ1bmN0aW9uICh2aXBVcmwpIHsKICAgICAgICByZXR1cm4gdGhpcy5MS+ino+aekCh2aXBVcmwsJ2h0dHBzOi8vangueW91eWl0di5jb20vJyk7CiAgICB9LAogICAgSlgxMjM6IGZ1bmN0aW9uICh2aXBVcmwpIHsKICAgICAgICB0cnl7IC8vZnJvbSBodHRwczovL20ueGlueGluZG0uY29tL2JmL3hpdWx1b2ppYW56dW4tMC0xLmh0bWwKICAgICAgICAgICAgdmFyIHJlZiA9ICdodHRwczovLzEyMy54eGdjeC5jbjo0NDMzL2p4LnBocD91cmw9JyArIHZpcFVybDsKICAgICAgICAgICAgdmFyIGp4dXJsID0gJ2h0dHBzOi8vMTIzLnh4Z2N4LmNuOjQ0MzMvamlhbmdodS5waHA/dXJsPScgKyB2aXBVcmw7CiAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCwge2hlYWRlcnM6IHsnUmVmZXJlcic6IHJlZn19KTsKICAgICAgICAgICAgdmFyIHVybCA9IGh0bWwubWF0Y2goL3NvdXJjZSBzcmM9IiguKj8pIi8pWzFdOwogICAgICAgICAgICBpZih1cmwuaW5kZXhPZignamh5dW4ubXA0P2tleScpIT0tMSl7CiAgICAgICAgICAgICAgICB1cmwgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7cmVkaXJlY3Q6ZmFsc2UsIHdpdGhIZWFkZXJzOnRydWV9KSkuaGVhZGVycy5sb2NhdGlvbiArICcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB1cmw7CiAgICAgICAgfSBjYXRjaChlKXsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0sCiAgICB5dW4xNzE3OiBmdW5jdGlvbiAodmlwVXJsKSB7CiAgICAgICAgdHJ5ewogICAgICAgICAgICB2YXIgcmVmID0gJ2h0dHBzOi8vd3d3LjE3MTd5dW4uY29tL2p4L3R5LnBocD91cmw9JyArIHZpcFVybDsKICAgICAgICAgICAgdmFyIHBhcnNlID0gJ2h0dHBzOi8vMTcxNy5udHJ5amQubmV0LzA1MjYvP3VybD0nICsgdmlwVXJsOwogICAgICAgICAgICB2YXIgYXBpID0gJ2h0dHBzOi8vMTcxNy5udHJ5amQubmV0LzA1MjYvYXBpLnBocCc7CiAgICAgICAgICAgIHZhciBUaW1lID0gKE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSAqIDEpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgIHZhciB1cmwgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpLCB7CiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7J1JlZmVyZXInOiBwYXJzZSB9LAogICAgICAgICAgICAgICAgYm9keTogJ3VybD0nK3ZpcFVybCArICcmcmVmZXJlcj0nICsgYmFzZTY0RW5jb2RlKHBhcnNlKSArICcmcmVmPTEmdGltZT0nK1RpbWUgKyAnJnR5cGU9Jm90aGVyPScrYmFzZTY0RW5jb2RlKHZpcFVybCkgKyAnJmlvcz0wJywKICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCcKICAgICAgICAgICAgfSkpLnVybDsKICAgICAgICAgICAgcmV0dXJuIHVybDsKICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0sCiAgICAvL+S7peS4i+ino+aekOiwg+eUqOWuveWkp+S9rOaPkuS7tgogICAgZ3BhcnNlOiAnaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy9nLXBhcnNlLWxpc3QuanMnLAogICAgTWFv5YWo572ROiBmdW5jdGlvbiAodmlwVXJsKSB7CiAgICAgICAgLy92YXIgcGFyc2UgPSAnaHR0cHM6Ly93d3cuY3Vhbi5sYS9tM3U4LnBocD91cmw9JzsKICAgICAgICB2YXIgcGFyc2UgPSAnaHR0cHM6Ly93d3cubXRvc3ouY29tL20zdTgucGhwP3VybD0nOwogICAgICAgIHZhciB1cmwgPSB0aGlzLm1hb3NzKHBhcnNlK3ZpcFVybCwgJycsICc3NjkyQUE3MEVFRjkyQjQyJyk7CiAgICAgICAgaWYodXJsLmxhc3RJbmRleE9mKCdmcm9tPTk3MycpIT0tMSl7CiAgICAgICAgICAgIHVybCA9IHVybCArICc7eycgKyB0aGlzLnBjVUEgKyAnfSc7CiAgICAgICAgfQogICAgICAgIHJldHVybiB1cmw7CiAgICB9LAogICAg5YyX5p6BWFM6IGZ1bmN0aW9uICh2aXBVcmwpIHsKICAgICAgICB2YXIgcGFyc2UgPSAnaHR0cDovL2JlaWppeHMuY25uP3VybD0nOwogICAgICAgIGV2YWwoZmV0Y2godGhpcy5ncGFyc2UpKTsKICAgICAgICB1cmwgPSDljJfmnoFYUy50b1VybChwYXJzZSt2aXBVcmwpOwogICAgICAgIHJldHVybiB1cmw7CiAgICB9LAogICAgZHM5NzNYOiBmdW5jdGlvbiAodmlwVXJsKSB7CiAgICAgICAgdmFyIHBhcnNlID0gJ2h0dHBzOi8vcGxheS5kczE2My5jYy85NzMvP3VybD0nOwogICAgICAgIGV2YWwoZmV0Y2godGhpcy5ncGFyc2UpKTsKICAgICAgICB2YXIgZG9jdW1lbnQgPSB7bG9jYXRpb246e2hvc3Q6InBsYXkuZHMxNjMuY2MifX07CiAgICAgICAgdmFyIHVybCA9IGRzOTczLnRvVXJsKHBhcnNlK3ZpcFVybCk7CiAgICAgICAgaWYodXJsLmluZGV4T2YoJy85NzMvJykhPS0xKXsKICAgICAgICAgICAgdXJsID0gdGhpcy5jYWNoZU0zdTgodXJsKSArIHZpcFVybDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHVybDsKICAgIH0sCiAgICDotJ3otJ06IGZ1bmN0aW9uICh2aXBVcmwpIHsKICAgICAgICB0cnl7CiAgICAgICAgICAgIHZhciB5dXJsID0gJz91cmw9JyArIHZpcFVybDsKICAgICAgICAgICAgZXZhbChmZXRjaCh0aGlzLmdwYXJzZSkpOwogICAgICAgICAgICB2YXIgdXJsID0geGJlaWJlaXgudG9VcmwoeXVybCk7CiAgICAgICAgICAgIHJldHVybiB1cmwucmVwbGFjZSgnaHR0cHNzJywnaHR0cHMnKTsKICAgICAgICB9IGNhdGNoKGUpewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfSwKICAgIGRzOTczOiBmdW5jdGlvbiAoaW5wdXQpIHsKICAgIC8v5Y+v5Lul6Kej5p6QQuermeeVquWJpwogICAgdmFyIGdldEsyID0gZnVuY3Rpb24gKHVybF9oMl9rZXlfdGltZV9kb21haW4sIGsxKSB7CiAgICAgICAgZnVuY3Rpb24gXzB4NGUwOTI1KF8weDU3OGRjOCwgXzB4NWQwMjgxKSB7CiAgICAgICAgICAgIHJldHVybiAoKCgoKF8weDU3OGRjOCA+PiAweDEpICsgKF8weDVkMDI4MSA+PiAweDEpKSA8PCAweDEpICsgKDB4MSAmIF8weDU3OGRjOCkpICsgKDB4MSAmIF8weDVkMDI4MSkpOwogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBfMHg1ZDAyODEgPSBbXSwgXzB4NTBjZTBlID0gMHgwOyBfMHg1MGNlMGUgPCAweDQwOykKICAgICAgICAgICAgXzB4NWQwMjgxW18weDUwY2UwZV0gPSAoMHgwIHwgKDB4MTAwMDAwMDAwICogTWF0aFsnYWJzJ10oTWF0aFsnc2luJ10oKytfMHg1MGNlMGUpKSkpOwogICAgICAgIHZhciBfMHg4ZDZjNWQgPSB1cmxfaDJfa2V5X3RpbWVfZG9tYWluOwogICAgICAgIGZvciAodmFyIF8weDUwY2UwZSwgXzB4MWMyMTU0LCBfMHgzYWJmYzMsIF8weDM2ZTY1OSwgXzB4MzlhNzg3ID0gW10sIF8weDI3YTZlYSA9IHVuZXNjYXBlKGVuY29kZVVSSShfMHg4ZDZjNWQpKSwgXzB4MzY4NTE4ID0gXzB4MjdhNmVhWydsZW5ndGgnXSwgXzB4MzVhMzYyID0gW18weDUwY2UwZSA9IDB4Njc0NTIzMDEsIF8weDFjMjE1NCA9IC0weDEwMzI1NDc3LCB+XzB4NTBjZTBlLCB+XzB4MWMyMTU0XSwgXzB4MjliYThjID0gMHgwOyBfMHgyOWJhOGMgPD0gXzB4MzY4NTE4OykKICAgICAgICAgICAgXzB4MzlhNzg3W18weDI5YmE4YyA+PiAweDJdIHw9IChfMHgyN2E2ZWFbJ2NoYXJDb2RlQXQnXShfMHgyOWJhOGMpIHx8IDB4ODApIDw8IChfMHgyOWJhOGMrKyAlIDB4NCAqIDB4OCk7CiAgICAgICAgZm9yIChfMHgzOWE3ODdbXzB4OGQ2YzVkID0gKDB4MTAgKiAoKF8weDM2ODUxOCArIDB4OCkgPj4gMHg2KSkgKyAweGVdID0gMHg4ICogXzB4MzY4NTE4LCBfMHgyOWJhOGMgPSAweDA7IF8weDI5YmE4YyA8IF8weDhkNmM1ZDsgXzB4MjliYThjICs9IDB4MTApIHsKICAgICAgICAgICAgZm9yIChfMHgzNjg1MTggPSBfMHgzNWEzNjIsIF8weDM2ZTY1OSA9IDB4MDsgXzB4MzZlNjU5IDwgMHg0MDspCiAgICAgICAgICAgICAgICBfMHgzNjg1MTggPSBbXzB4M2FiZmMzID0gXzB4MzY4NTE4WzB4M10sIF8weDRlMDkyNShfMHg1MGNlMGUgPSBfMHgzNjg1MThbMHgxXSwgKChfMHgzYWJmYzMgPSBfMHg0ZTA5MjUoXzB4NGUwOTI1KF8weDM2ODUxOFsweDBdLCBbKChfMHg1MGNlMGUgJiAoXzB4MWMyMTU0ID0gXzB4MzY4NTE4WzB4Ml0pKSB8ICh+XzB4NTBjZTBlICYgXzB4M2FiZmMzKSksICgoXzB4M2FiZmMzICYgXzB4NTBjZTBlKSB8ICh+XzB4M2FiZmMzICYgXzB4MWMyMTU0KSksICgoXzB4NTBjZTBlIF4gXzB4MWMyMTU0KSBeIF8weDNhYmZjMyksIChfMHgxYzIxNTQgXiAoXzB4NTBjZTBlIHwgfl8weDNhYmZjMykpXVtfMHgzNjg1MTggPSAoXzB4MzZlNjU5ID4+IDB4NCldKSwgXzB4NGUwOTI1KF8weDVkMDI4MVtfMHgzNmU2NTldLCBfMHgzOWE3ODdbKChbXzB4MzZlNjU5LCAoKDB4NSAqIF8weDM2ZTY1OSkgKyAweDEpLCAoKDB4MyAqIF8weDM2ZTY1OSkgKyAweDUpLCAoMHg3ICogXzB4MzZlNjU5KV1bXzB4MzY4NTE4XSAlIDB4MTApICsgXzB4MjliYThjKV0pKSkgPDwgKF8weDM2ODUxOCA9IFsweDcsIDB4YywgMHgxMSwgMHgxNiwgMHg1LCAweDksIDB4ZSwgMHgxNCwgMHg0LCAweGIsIDB4MTAsIDB4MTcsIDB4NiwgMHhhLCAweGYsIDB4MTVdWygoMHg0ICogXzB4MzY4NTE4KSArIChfMHgzNmU2NTkrKyAlIDB4NCkpXSkpIHwgKF8weDNhYmZjMyA+Pj4gKDB4MjAgLSBfMHgzNjg1MTgpKSksIF8weDUwY2UwZSwgXzB4MWMyMTU0XTsKICAgICAgICAgICAgZm9yIChfMHgzNmU2NTkgPSAweDQ7IF8weDM2ZTY1OTspCiAgICAgICAgICAgICAgICBfMHgzNWEzNjJbLS1fMHgzNmU2NTldID0gXzB4NGUwOTI1KF8weDM1YTM2MltfMHgzNmU2NTldLCBfMHgzNjg1MThbXzB4MzZlNjU5XSk7CiAgICAgICAgfQogICAgICAgIGZvciAoXzB4OGQ2YzVkID0gJyc7IF8weDM2ZTY1OSA8IDB4MjA7KQogICAgICAgICAgICBfMHg4ZDZjNWQgKz0gKChfMHgzNWEzNjJbXzB4MzZlNjU5ID4+IDB4M10gPj4gKDB4NCAqICgweDEgXiAoMHg3ICYgXzB4MzZlNjU5KyspKSkpICYgMHhmKS50b1N0cmluZygweDEwKTsKICAgICAgICBfMHg4ZDZjNWQgPSBfMHg4ZDZjNWQuc3Vic3RyaW5nKDB4MCwgMHgxMCk7CiAgICAgICAgaDJfYmJlID0gazEuc3Vic3RyaW5nKDB4MCwgMHgxMCk7CiAgICAgICAgdmFyIGMgPSAnJzsKICAgICAgICBmb3IgKHZhciBpIGluIF8weDhkNmM1ZCkgewogICAgICAgICAgICBjICs9IF8weDhkNmM1ZFtpXSArIGgyX2JiZVtpXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGM7CiAgICB9OyAvL2dldEsy57uT5p2fCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy92YXIgcHJlZml4ID0gJ2h0dHBzOi8vOTczLmN1YW4ubGEvOTczLyc7CiAgICAgICAgICAgIHZhciBwcmVmaXggPSAnaHR0cHM6Ly85NzMuY3Vhbi5sYTo1OTAxLzk3My8nOwogICAgICAgICAgICB2YXIgcmVmID0gJ2h0dHBzOi8vanguOTczOTczLnh5ei8/dXJsPScgKyBpbnB1dDsKICAgICAgICAgICAgdmFyIHl1cmwgPSBwcmVmaXggKyAnP3VybD0nICsgaW5wdXQ7CiAgICAgICAgICAgIHZhciBhcGkgPSBwcmVmaXggKyAnYXBpX2p4X2NsaWVudC5waHAnOwogICAgICAgICAgICB2YXIgZG9jdW1lbnQgPSB7bG9jYXRpb246e2hvc3Q6Ijk3My5jdWFuLmxhOjU5MDEifX07CiAgICAgICAgICAgIGlmICgvYmlsaWJpbGkuKj9wPS8udGVzdChpbnB1dCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB4YmVpYmVpeC50b1VybChpbnB1dCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IGZldGNoKHl1cmwsIHtoZWFkZXJzOnsnUmVmZXJlcic6IHJlZn19KTsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmVmaXggKyBodG1sLm1hdGNoKC9zcmM9IiguKj8pIi8pWzFdOwogICAgICAgICAgICAgICAgdmFyIGgyID0gZmV0Y2goc3JjLCB7aGVhZGVyczp7J1JlZmVyZXInOiB5dXJsfX0pOwogICAgICAgICAgICAgICAgZXZhbCgnazE9IicgKyBoMi5tYXRjaCgvZXZhbFwoIiguKj8pIlwpOy8pWzFdICsgJyInKTsKICAgICAgICAgICAgICAgIGsxID0gazEuc3BsaXQoIiciKVszXTsKICAgICAgICAgICAgICAgIGV2YWwoaDIubWF0Y2goL3ZhciBoMl9wYXJhbVtcc1xTXSo/fS8pWzBdKTsKICAgICAgICAgICAgICAgIHZhciBib2R5X3BhcnNlID0gJ2FwaW5hbWU9YXBpX2p4X2NsaWVudC5waHAmdXJsPScgKyBoMl9wYXJhbS51cmwgKyAnJnRpbWU9JyArIGgyX3BhcmFtLnRpbWUgKyAnJnJlZmVyZXI9JyArIHl1cmwgKyAnJmtleT0nICsgaDJfcGFyYW0uaDJfa2V5ICsgJyZrZXkyPScgKyBnZXRLMihoMl9wYXJhbS51cmwgKyBoMl9wYXJhbS5oMl9rZXkgKyBoMl9wYXJhbS50aW1lICsgaDJfcGFyYW0uZG9tYWluLCBrMSkgKyAnJnBsdGZyb209MTEwMCc7CiAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goYXBpLCB7IGhlYWRlcnM6IHsncmVmZXJlcic6IHNyYywgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0sIGJvZHk6IGJvZHlfcGFyc2UsIG1ldGhvZDogJ1BPU1QnIH0pKTsKICAgICAgICAgICAgICAgIHZhciB1cmwgPSBqc29uLmNvZGUgPT0gMjAwID8ganNvbi5kYXRhIDogJyc7CiAgICAgICAgICAgICAgICBpZihqc29uLmgyX2VvdGhlcil7CiAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsICsgJz9oMnZmcm9tPTk3MycgKyAnO3snICsgdGhpcy5wY1VBICsgJ30nOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmKHVybC5pbmRleE9mKCcvOTczLycpIT0tMSl7CiAgICAgICAgICAgICAgICAgICAgdXJsID0gdGhpcy5jYWNoZU0zdTgodXJsKSArIGlucHV0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHVybDsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0sIC8vOTcz57uT5p2fCiAgICAvL+S7peS4i+ino+aekOa6kOeggeadpea6kOS6juWKquWKm+Wkp+S9rAogICAgbnBhcnNlOiAnaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy9NZXNzeS1wYXJzaW5nLmpzJywKICAgIOS5heaSrTogZnVuY3Rpb24gKHZpcFVybCkgewogICAgICAgIHRyeXsKICAgICAgICAgICAgdmFyIGZyb20gPSAnaHR0cDovL2ppZXhpLnFpbmhiLmNvbS8/dXJsPScgKyB2aXBVcmw7CiAgICAgICAgICAgIHZhciByZWYgPSAnaHR0cHM6Ly9hcGkuaml1Ym9qeC5jb20vdmlwLz91cmw9JyArIHZpcFVybDsKICAgICAgICAgICAgdmFyIGp4dXJsID0gJ2h0dHBzOi8vYXBpLmppdWJvanguY29tL3h2aXAvaW5kZXhfMS5waHA/dXJsPScgKyB2aXBVcmw7CiAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCwge2hlYWRlcnM6IHsnUmVmZXJlcic6IHJlZn19KTsKICAgICAgICAgICAgZXZhbCgndmFyIGsxPSInICsgaHRtbC5zcGxpdCgnZXZhbCgiJylbMV0uc3BsaXQoJyInKVswXSArJyInKTsKICAgICAgICAgICAgazEgPSBrMS5zcGxpdCgidmFsKCciKVsxXS5zcGxpdCgiJyIpWzBdOwogICAgICAgICAgICBldmFsKCd2YXIgcGRhdGE9eycgKyBodG1sLm1hdGNoKC9cJ3RpbWVcJzpbXHNcU10qP30vKVswXSk7CiAgICAgICAgICAgIGV2YWwodG9vbHMuTnVMaSgiaml1Ym8iKSk7CiAgICAgICAgICAgIHZhciBja2V5ID0gQ2tleShwZGF0YS51cmwsIHBkYXRhLmtleSwgcGRhdGEudGltZSk7CiAgICAgICAgICAgIHZhciBrZXkyID0gaDJfeHh4KHBkYXRhLmtleSwgcGRhdGEudXJsLCBwZGF0YS50aW1lKjB4MiwgcGRhdGEudGltZSwgazEpOwogICAgICAgICAgICB2YXIga2V5MyA9IGgyX3h4eHgocGRhdGEua2V5LCBrZXkyLCBwZGF0YS50aW1lKjB4MiwgcGRhdGEudGltZSk7CiAgICAgICAgICAgIHZhciB2a2V5ID0gaDJfeHh4KGtleTMsIGtleTIsIHBkYXRhLnRpbWUqMHgyLCBwZGF0YS50aW1lLCBrMSk7CiAgICAgICAgICAgIHZhciB1cmwgPSBKU09OLnBhcnNlKHJlcXVlc3QoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly9hcGkuaml1Ym9qeC5jb20veHZpcC9hcGkucGhwJywKICAgICAgICAgICAgICAgIHtoZWFkZXJzOiB7J1JlZmVyZXInOiBqeHVybH0sCiAgICAgICAgICAgICAgICBib2R5OiAnYXBpbmFtZT1hcGkucGhwJnVybD0nK3BkYXRhLnVybCArICcmdGltZT0nK3BkYXRhLnRpbWUgKyAnJnJlZmVyZXI9JytwZGF0YS5yZWYgKyAnJmNrZXk9Jytja2V5ICsgJyZ2a2V5PScrdmtleSArICcma2V5PScrcGRhdGEua2V5ICsgJyZrZXkyPScra2V5MiArICcma2V5Mz0nK2tleTMgKyAnJnBsdGZyb209MScsIAogICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcgCiAgICAgICAgICAgIH0pKS51cmw7CiAgICAgICAgICAgIHJldHVybiB1cmw7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9LAogICAg6ICB6IKW5rWG57OKOiBmdW5jdGlvbiAodmlwVXJsKSB7CiAgICAgICAgZXZhbCh0b29scy5OdUxpKCJyYzQiKSk7CiAgICAgICAgdmFyIHJlZiA9ICdodHRwOi8vY3Muc3lnNTIwLmNuJzsKICAgICAgICBpZiAodmlwVXJsLnNlYXJjaCgneW91a3UnKSA+PSAwKSB7CiAgICAgICAgICAgIHVybHMgPSAnaHR0cDovL21tLnN5ZzUyMC5jbi95ay8/dXJsPSc7CiAgICAgICAgfSBlbHNlIGlmKHZpcFVybC5zZWFyY2goJ3FxLmNvbScpID49IDApIHsKICAgICAgICAgICAgdXJscyA9ICdodHRwOi8vbW0uc3lnNTIwLmNuL3R4Lz91cmw9JzsKICAgICAgICB9IGVsc2UgaWYodmlwVXJsLnNlYXJjaCgnbWd0dicpID49IDApIHsKICAgICAgICAgICAgdXJscyA9ICdodHRwOi8vbW0uc3lnNTIwLmNuL21nLz91cmw9JzsKICAgICAgICB9IGVsc2UgaWYodmlwVXJsLnNlYXJjaCgnaXFpeWknKSA+PTApIHsKICAgICAgICAgICAgdXJscyA9ICdodHRwOi8vbW0uc3lnNTIwLmNuLz91cmw9JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB1cmxzID0gJ2ppYW5naHUnOwogICAgICAgIH07CiAgICAgICAgaWYodXJscz09J2ppYW5naHUnKXsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuamluZ3l1KHZpcFVybCwgdXJscyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIHVybCA9IHJlcXVlc3QodXJscyt2aXBVcmwsIHtoZWFkZXJzOnsnUmVmZXJlcic6IHJlZn19KS5tYXRjaCgvInVybCI6ICIoLio/KSIvKVsxXTsKICAgICAgICAgICAgdmFyIHZpZGVvID0gcmM0KHVybCwgIjkyODM5NTQ3OSIsIDB4MSk7CiAgICAgICAgICAgIHJldHVybiB2aWRlbzsKICAgICAgICB9CiAgICB9LAogICAgc2lndWp4OiBmdW5jdGlvbiAodmlwVXJsKSB7CiAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKTsKICAgICAgICBldmFsKHRvb2xzLk51TGkoInNpZ3UiKSk7CiAgICAgICAgdmFyIHJlZiA9ICdodHRwczovL2FwaS5zaWd1anguY29tLz91cmw9JyArIHZpcFVybDsKICAgICAgICB2YXIganh1cmwgPSAnaHR0cHM6Ly9qeC5zaWd1anguY29tLz91cmw9JyArIHZpcFVybDsKICAgICAgICB2YXIgaHRtbCA9IHJlcXVlc3Qoanh1cmwsIHtoZWFkZXJzOnsnUmVmZXJlcic6IHJlZn19KTsKICAgICAgICAvL+i/memHjOaYr+minOaWh+WtlwogICAgICAgIHZhciB5d3ogPSBodG1sLm1hdGNoKC/or7fli7/nm5fnlKgoW1xzXFNdKj8pXChcJ1xfXCdcKTsvKVsxXTsKICAgICAgICAvL+i/memHjOaYr3Rva2VuCiAgICAgICAgZXZhbCgiKCIrZXZhbCgnLyonK3l3eikrIikoKSIpOwogICAgICAgIC8v6L+Z6YeM5pivdW0KICAgICAgICB2YXIgdW0gPSBodG1sLnNwbGl0KCdpZD0idW0iIHZhbHVlPSInKVsxXS5zcGxpdCgnIicpWzBdOwogICAgICAgIHZhciB1cmwgPSB1bTsKICAgICAgICAvL+i/memHjOaYr3RtCiAgICAgICAgdmFyIHRtID0gaHRtbC5zcGxpdCgnaWQ9InRtIiB2YWx1ZT0iJylbMV0uc3BsaXQoJyInKVswXTsKICAgICAgICAvL+i/memHjOaYr2syCiAgICAgICAgdmFyIGsyID0gZGVzbih1bSsnJysgJ3wnICsgImp4LnNpZ3VqeC5jb20iKTsKICAgICAgICAvL+i/memHjOaYr2szCiAgICAgICAgdmFyIGszID0gZGVzbih0bSsnJyk7CiAgICAgICAgazMgPSBrcyggazIgLCBrMyApOwogICAgICAgIC8v6L+Z6YeM5piv5Y+C5pWwCiAgICAgICAgdmFyIGlzaVBhZCA9ICcxJzsKICAgICAgICB2YXIgYWp4YSA9IGh0bWwuc3BsaXQoJ3NpZ3VfangucGhwIix7JylbMV0uc3BsaXQoJ30sJylbMF07CiAgICAgICAgZXZhbCgndmFyIGRhdGEgPSB7JythanhhLnJlcGxhY2UoIiQoJyN0bScpLnZhbCgpIix0bSsnJykrJ307Jyk7CiAgICAgICAgdmFyIGJvZHlzID0gInVybD0iK2RhdGEudXJsICsgIiZ0bT0iK2RhdGEudG0gKyAiJms9IitkYXRhLmsgKyAiJmsyPSIrZGF0YS5rMiArICImazM9IitkYXRhLmszICsgIiZ0b2tlbj0iK3Rva2VuICsgIiZ3YXA9MSZ0eXBlPSI7CiAgICAgICAgdmFyIHBsYXllciA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9qeC5zaWd1anguY29tL3NpZ3VfangucGhwJywge2hlYWRlcnM6eydSZWZlcmVyJzoganh1cmx9LCBib2R5OiBib2R5cywgbWV0aG9kOiAnUE9TVCd9KSkudXJsOwogICAgICAgIHZhciB2aWRlbyA9IGRlcyhwbGF5ZXIsIHZpcFVybCk7CiAgICAgICAgcmV0dXJuIHZpZGVvOwogICAgfSwKICAgIGp4eWl5aTogZnVuY3Rpb24gKHZpcFVybCkgewogICAgICAgIHRyeXsKICAgICAgICAgICAgZXZhbCh0b29scy5OdUxpKCJ5aXlpIikpOwogICAgICAgICAgICB2YXIgZG9jdW1lbnQgPSB7ZG9tYWluOidhcGkuanh5aXlpLmNvbSd9OwogICAgICAgICAgICB2YXIgYXBpID0gJ2h0dHBzOi8vYXBpLmp4eWl5aS5jb20vYXBpcy9nZXQuanNvbj92PTAuMy45JzsKICAgICAgICAgICAgdmFyIHJlZjEgPSAnaHR0cHM6Ly9qeHguc215czguY24vJzsKICAgICAgICAgICAgdmFyIGp4dXJsID0gJ2h0dHBzOi8vYXBpLmp4eWl5aS5jb20vaW5kZXgvP3VybD0nICsgdmlwVXJsOwogICAgICAgICAgICB2YXIgbWFyayA9IGZ1bmN0aW9uIChja2V5X2tleSx0ZXgpIHsKICAgICAgICAgICAgICAgIGxldCBrZXkgPSBja2V5X2tleTsKICAgICAgICAgICAgICAgIGxldCB2dG9rZW4gPSBxKGtleSsiMSIrIGRvY3VtZW50LmRvbWFpbiArInRrdmVyIisiMTAzIisiaSIrImxvdmUiKyJsbDA5MDEiKTsKICAgICAgICAgICAgICAgIGxldCB0b2tlbiA9IHEoa2V5KyJpIisibG92ZSIrImxsMDkwMSIpOwogICAgICAgICAgICAgICAgbGV0IGJyb3dzZXIgPSB7CiAgICAgICAgICAgICAgICAgICAgImJyb3dzZXJTaWRlIjoiMSIsCiAgICAgICAgICAgICAgICAgICAgImNrdmVyIjoiMTAzIiwKICAgICAgICAgICAgICAgICAgICAiY2xpZW50U2l6ZSI6IjE1MCo3NTQiLAogICAgICAgICAgICAgICAgICAgICJjbGllbnRTaXplcyI6IjE1MCo3NTQiLAogICAgICAgICAgICAgICAgICAgICJTY3JlZW5TaXplIjoiMTUzNio4NjQiLAogICAgICAgICAgICAgICAgICAgICJ0aXRsZSI6IltqeHguc215czguY25dIiwKICAgICAgICAgICAgICAgICAgICAiYmNFbmFibGVkIjp0cnVlLAogICAgICAgICAgICAgICAgICAgICJiYUNOYW1lIjoiTW96aWxsYSIsCiAgICAgICAgICAgICAgICAgICAgImJhTmFtZSI6Ik5ldHNjYXBlIiwKICAgICAgICAgICAgICAgICAgICAiYnBmIjoiV2luMzIiLAogICAgICAgICAgICAgICAgICAgICJ1YWhsYyI6ZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgIndlYmRyIjpmYWxzZSwKICAgICAgICAgICAgICAgICAgICAiZGV2aWNlIjoiUEMiLAogICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6InpoX0NOIiwKICAgICAgICAgICAgICAgICAgICAiZW5naW5lIjoiQmxpbmsiLAogICAgICAgICAgICAgICAgICAgICJicm93c2VyIjoiRWRnZSIsCiAgICAgICAgICAgICAgICAgICAgIm9zIjoiV2luZG93cyIsCiAgICAgICAgICAgICAgICAgICAgIm9zVmVyc2lvbiI6IjEwLjAiLAogICAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjoiODkuMC43NzQuNTQiLAogICAgICAgICAgICAgICAgICAgICJhcGlob3N0Ijpkb2N1bWVudC5kb21haW4sLy/ov5nph4zlvpfmg7Plip7ms5UKICAgICAgICAgICAgICAgICAgICAicmVmZXJlciI6cmVmMSwKICAgICAgICAgICAgICAgICAgICAidXNlckFnZW50IjoiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzg5LjAuNDM4OS45MCBTYWZhcmkvNTM3LjM2IEVkZy84OS4wLjc3NC41NCIsCiAgICAgICAgICAgICAgICAgICAgImtleSI6a2V5LAogICAgICAgICAgICAgICAgICAgICJ2dG9rZW4iOnZ0b2tlbgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiBwbGF5cyhKU09OLnN0cmluZ2lmeShicm93c2VyKS50b1N0cmluZygpLHRva2VuLHRleCk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHZhciBodG1sID0gZmV0Y2goanh1cmwsIHtoZWFkZXJzOnsnVXNlci1BZ2VudCc6IFBDX1VBLCAnUmVmZXJlcic6IHJlZjF9fSk7CiAgICAgICAgICAgIC8v6L+Z6YeM5pivZXZhbOa3t+a3hgogICAgICAgICAgICB2YXIgaHggPSBodG1sLm1hdGNoKC9ldmFsXCgoLio/KVx9XClcKS9nKTsKICAgICAgICAgICAgLy/ov5nph4zluKbmnIljdmlk77yM5ZCO6Z2i5Lya55So5YiwCiAgICAgICAgICAgIHZhciB5d3ogPSBodG1sLm1hdGNoKC/or7fli7/nm5fnlKjmnKzop6PmnpAoW1xzXFNdKj8pXCkgXCjvvp/OmO++n1wpXCkgXChcJ1xfXCdcKTsvKVsxXS5yZXBsYWNlKCIo776f0JTvvp8pIFsnXyddICggKO++n9CU776fKSBbJ18nXSAo776fzrXvvp8rLyrCtOKIh++9gCovIiwiIik7CiAgICAgICAgICAgIC8v6L+Z6YeM5piv6aKc5paH5a2X5Y675o6JY3ZpZAogICAgICAgICAgICB2YXIgeXd6X2FyciA9IGV2YWwoZXZhbCgiLyoiK3l3eikpLnNwbGl0KCc7Jyk7CiAgICAgICAgICAgIHl3el9hcnIuc3BsaWNlKDAsMSk7CiAgICAgICAgICAgIGV2YWwoeXd6X2Fyci5qb2luKCc7JykpOwogICAgICAgICAgICAvL+i/memHjOaYr2NrZXkKICAgICAgICAgICAgZXZhbChldmFsKCcoJytoeFswXS5zcGxpdCgnZXZhbCgnKVsxXSkpOwogICAgICAgICAgIC8v6L+Z6YeM5piv5pe26Ze0CiAgICAgICAgICAgdmFyIHBhZ2VUaW1lID0gaHRtbC5zcGxpdCgncGFnZVRpbWUgPScpWzFdLnNwbGl0KCc7JylbMF07CiAgICAgICAgICAgLy/ov5nph4zmmK9ndWlkCiAgICAgICAgICAgdmFyIGd1aWQgPSBodG1sLnNwbGl0KCdpZD0iZ3VpZCIgdmFsdWU9IicpWzFdLnNwbGl0KCciJylbMF07CiAgICAgICAgICAgLy/ov5nph4zmmK9hdXRoa2V5CiAgICAgICAgICAgdmFyIGF1dGhrZXkgPSBtZDUocGlkK2d1aWQpOwogICAgICAgICAgIC8v6L+Z6YeM5piv5Y+C5pWwCiAgICAgICAgICAgdmFyIHBvc3REYXRhID0gewogICAgICAgICAgICAgICB2aWQ6IHZpcFVybCwKICAgICAgICAgICAgICAgY3ZpZDogbWQ1KGV2YWwoZXZhbCgiLyoiK3l3eikpLnNwbGl0KCInIilbM10rZXZhbChoeFsyXS5zcGxpdCgnZXZhbCcpWzFdKS5zcGxpdCgnIicpWzVdKSsiMCIsCiAgICAgICAgICAgICAgIHR5cGU6ICJhdXRvIiwKICAgICAgICAgICAgICAgZ3VpZDogZ3VpZCwKICAgICAgICAgICAgICAgY25hOiAibnVsbCIsCiAgICAgICAgICAgICAgIG1vZGU6ICJub3JtYWwiLAogICAgICAgICAgICAgICBjaXA6ICJudWxsIiwKICAgICAgICAgICAgICAgZXJyOiAwLAogICAgICAgICAgICAgICBybXM6IDAsCiAgICAgICAgICAgICAgIHB0bTogTWF0aC5hYnMoKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkgLSBwYWdlVGltZSksCiAgICAgICAgICAgICAgIGtleToga2V5LAogICAgICAgICAgICAgICBja2V5OiBtYXJrKGtleSArIGNrZXksIHRleCkKICAgICAgICAgICB9OwogICAgICAgICAgIHZhciBib2R5cyA9ICJ2aWQ9IitlbmNvZGVVUklDb21wb25lbnQocG9zdERhdGEudmlkKSsiJmN2aWQ9Iitwb3N0RGF0YS5jdmlkKyImdHlwZT1hdXRvJmd1aWQ9Iitwb3N0RGF0YS5ndWlkKyImY25hPW51bGwmbW9kZT1ub3JtYWwmY2lwPW51bGwmZXJyPTAmcm1zPTAmcHRtPSIrcG9zdERhdGEucHRtKyIma2V5PSIrcG9zdERhdGEua2V5KyImY2tleT0iK2VuY29kZVVSSUNvbXBvbmVudChwb3N0RGF0YS5ja2V5KTsKICAgICAgICAgICB2YXIgZGF0YSA9IG1kNShib2R5cyk7CiAgICAgICAgICAgdmFyIHVybCA9IGFwaSArICcmYXV0aGtleT0nK2F1dGhrZXkgKyAnJmRhdGE9JytkYXRhOwogICAgICAgICAgIHZhciB2aWRlbyA9IEpTT04ucGFyc2UoZmV0Y2godXJsLHsKICAgICAgICAgICAgICAgaGVhZGVyczogeydhY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0LCAqLyo7IHE9MC4wMScsICd4LXJlcXVlc3RlZC13aXRoJzogJ1hNTEh0dHBSZXF1ZXN0JywgJ1VzZXItQWdlbnQnOiBQQ19VQSwgJ1JlZmVyZXInOiBqeHVybH0sCiAgICAgICAgICAgICAgIGJvZHk6IGRlY29kZVVSSUNvbXBvbmVudChib2R5cyksIG1ldGhvZDonUE9TVCcKICAgICAgICAgICB9KSkudXJsOwogICAgICAgICAgIGlmICh2aWRlb1swXT09JyUnKXsKICAgICAgICAgICAgICAgdmlkZW8gPSBkZWNvZGVVUklDb21wb25lbnQodmlkZW8pOwogICAgICAgICAgIH0KICAgICAgICAgICBpZiAodmlwVXJsLnNlYXJjaCgnbWd0dicpPj0wKSB7CiAgICAgICAgICAgICAgIHZhciBtZ3R2ID0gZmV0Y2godmlkZW8se2hlYWRlcnM6eydVc2VyLUFnZW50JzogUENfVUEsICdSZWZlcmVyJzoganh1cmx9fSk7CiAgICAgICAgICAgICAgIHZpZGVvID0gbWd0di5zcGxpdCgidmlkPSciKVsxXS5zcGxpdCgiJzsiKVswXTsKICAgICAgICAgICB9IAogICAgICAgICAgIHJldHVybiB2aWRlb1swXT09Jy8nID8gJ2h0dHBzOi8vJytkb2N1bWVudC5kb21haW4rdmlkZW8gOiB2aWRlbzsKICAgICAgICB9IGNhdGNoKGUpewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfSwKICAgIC8v5Lul5LiL6Kej5p6Q5rqQ56CB5p2l5rqQ5LqO54y05a2Q5aSn5L2sCiAgICBwYXJ3aXg6IGZ1bmN0aW9uICh2aXBVcmwpIHsKICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpOwogICAgICAgIHZhciBwYXJzZSA9ICdodHRwczovL3ZpcC5wYXJ3aXguY29tOjQ0MzMvcGxheWVyL2FuYWx5c2lzLnBocD92PSc7CiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChwYXJzZSt2aXBVcmwse2hlYWRlcnM6eydSZWZlcmVyJzonaHR0cHM6Ly92aXAucGFyd2l4LmNvbScsJ1VzZXItQWdlbnQnOlBDX1VBfX0pOwogICAgICAgIHZhciBQQVIgPSB7CiAgICAgICAgICAgIC8vIOWKoOino+WvhuaWueazlQogICAgICAgICAgICBzZWNyZXQod29yZCwgY29kZSwgaXNEZWNyeXB0KSB7CiAgICAgICAgICAgICAgICBjb2RlID0gQ3J5cHRvSlMuTUQ1KGNvZGUpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICB2YXIgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShjb2RlLnN1YnN0cmluZygweDAsIDB4MTApKTsKICAgICAgICAgICAgICAgIHZhciBrZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShjb2RlLnN1YnN0cmluZygweDEwKSk7CiAgICAgICAgICAgICAgICBpZiAoaXNEZWNyeXB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5kZWNyeXB0KHdvcmQsIGtleSwgewogICAgICAgICAgICAgICAgICAgICAgICBpdjogaXYsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzNwogICAgICAgICAgICAgICAgICAgIH0pLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZW5jcnlwdCh3b3JkLCBrZXksIHsKICAgICAgICAgICAgICAgICAgICBpdjogaXYsCiAgICAgICAgICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsCiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3CiAgICAgICAgICAgICAgICB9KS50b1N0cmluZygpOwogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyDmjpLluo/mlrnms5UKICAgICAgICAgICAgY29tcGFyZShrZXkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYSwgYikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhW2tleV0gLSBiW2tleV07CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICAgICAgdmFyIGNvbmZpZyA9IHsKICAgICAgICAgICAgdXJsOiBwYXJzZURvbUZvckh0bWwoaHRtbCxgYm9keSYmc2NyaXB0JiZIdG1sYCkubWF0Y2goLyJ1cmwiOiAiKC4qKSIvKVsxXQogICAgICAgIH0KICAgICAgICB2YXIgX3ByID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsYG1ldGFbbmFtZT0idmlld3BvcnQiXSYmaWRgKS5yZXBsYWNlKCd2b2RfJywgJycpOyAvLyBodG1sIOWPliBuYW1lPSJ2aWV3cG9ydCIg55qEIG1ldGEg5qCH562+55qEIGlkIOWxnuaAp+W5tuabv+aNoiAndm9kXycg5Li656m6CiAgICAgICAgdmFyIF9wdSA9IHBhcnNlRG9tRm9ySHRtbChodG1sLGBtZXRhW2NoYXJzZXQ9IlVURi04Il0mJmlkYCkucmVwbGFjZSgndm9kXycsICcnKTsgLy8gaHRtbCDlj5YgY2hhcnNldD0iVVRGLTgiIOeahCBtZXRhIOagh+etvueahCBpZCDlsZ7mgKflubbmm7/mjaIgJ3ZvZF8nIOS4uuepugogICAgICAgIHZhciBfcHVBcnIgPSBbXTsKICAgICAgICB2YXIgX25ld0FyciA9IFtdOwogICAgICAgIHZhciBfY29kZSA9ICcnOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX3B1Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIF9wdUFyci5wdXNoKHsgaWQ6IF9wdVtpXSwgdGV4dDogX3ByW2ldIH0pOwogICAgICAgIH0KICAgICAgICAvL+WvueWvhumSpemHjeaWsOi/m+ihjOaOkuW6jwogICAgICAgIF9uZXdBcnIgPSBfcHVBcnIuc29ydChQQVIuY29tcGFyZSgiaWQiKSk7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfbmV3QXJyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIF9jb2RlICs9IF9uZXdBcnJbaV0udGV4dDsKICAgICAgICB9CiAgICAgICAgY29uZmlnLnVybCA9IFBBUi5zZWNyZXQoY29uZmlnLnVybCwgX2NvZGUsIHRydWUpOwogICAgICAgIHJldHVybiBjb25maWcudXJsLmluZGV4T2YoJ21ndHYuY29tJykgPi0xID8gY29uZmlnLnVybCArICc7e1VzZXItQWdlbnRAYXBwfScgOiBjb25maWcudXJsOwogICAgfQp9OwoKZnVuY3Rpb24gYXl0bVBhcnNlICh2aXBVcmwpIHsKICAgIHZhciBob3N0ID0gdmlwVXJsLm1hdGNoKC9cLiguKj8pXC8vKVsxXTsKICAgIHN3aXRjaCAobXlTZXQucWp1KSB7CiAgICAgICAgY2FzZSAi6buY6K6kIjogc3dpdGNoIChob3N0KSB7CiAgICAgICAgICAgIGNhc2UgInFxLmNvbSI6IHN0ciA9IG15U2V0LnR4OwogICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiaXFpeWkuY29tIjogc3RyID0gbXlTZXQucXk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJ5b3VrdS5jb20iOiBzdHIgPSBteVNldC55azsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIm1ndHYuY29tIjogc3RyID0gbXlTZXQubWc7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJiaWxpYmlsaS5jb20iOiBzdHIgPSBteVNldC5ibDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6IHN0ciA9IG15U2V0Lm90aDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6IHN0ciA9IG15U2V0LnFqdTsKICAgICAgICBicmVhazsKICAgIH0KICAgIGlmKHN0ci5pbmRleE9mKCdodHRwJyk9PS0xKXsKICAgICAgICB0cnl7CiAgICAgICAgICAgIHZhciB1cmwgPSBQYXJzZVNbc3RyXSh2aXBVcmwpOwogICAgICAgICAgICBpZih1cmxbMF09PScvJyl7IHVybCA9ICdodHRwczonICsgdXJsIH0KICAgICAgICAgICAgaWYodXJsLmluZGV4T2YoJz1odHRwJykhPS0xKXsKICAgICAgICAgICAgICAgIHVybCA9IHVybC5pbmRleE9mKCcmdXJsPScpID4tMSA/IHVybCA6ICdodHRwJyArIGRlY29kZVVSSUNvbXBvbmVudCh1cmwuc3BsaXQoJz1odHRwJylbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qaWYodXJsLm1hdGNoKC9tZ3R2LmNvbS9nKT09J21ndHYuY29tJyl7CiAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyAnO3tSZWZlcmVyQGh0dHBzOi8vd3d3Lm1ndHYuY29tfSc7CiAgICAgICAgICAgIH0gZWxzZSAqL2lmKHVybC5pbmRleE9mKCcuZmx2JykhPS0xKXsKICAgICAgICAgICAgICAgIHVybCA9IHVybCArICc7e1VzZXItQWdlbnRAYXBwJiZSZWZlcmVyQCcgKyB2aXBVcmwgKyAnfSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHVybCA9PSAnJyA/ICcnIDogdXJsICsgJyNpc1ZpZGVvPXRydWUjJzsKICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ino+aekOWksei0pe+8jOW7uuiuruWIh+aNouino+aekCc7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gc3RyICsgdmlwVXJsOwogICAgfQp9OwoKdmFyIHBsYXlQYXJzZSA9IHsKICAgIHhpYW9wb2xpOiBmdW5jdGlvbiAodmlwVXJsKSB7CiAgICAgICAgdHJ5ewogICAgICAgICAgICB2YXIgc3RyID0gZmV0Y2goImhpa2VyOi8vZmlsZXMvY2FjaGUveGlhb3BvbGkudHh0Iik7CiAgICAgICAgICAgIHZhciB1cmwgPSBQYXJzZVNbc3RyXSh2aXBVcmwpOwogICAgICAgICAgICBpZih1cmwuaW5kZXhPZignPWh0dHAnKSE9LTEpewogICAgICAgICAgICAgICAgdXJsID0gJ2h0dHAnICsgZGVjb2RlVVJJQ29tcG9uZW50KHVybC5zcGxpdCgnPWh0dHAnKVsxXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYodXJsLmluZGV4T2YoJy5mbHYnKSE9LTEpewogICAgICAgICAgICAgICAgdXJsID0gdXJsICsgJzt7VXNlci1BZ2VudEBhcHAmJlJlZmVyZXJAJyArIHZpcFVybCArICd9JzsKICAgICAgICAgICAgfQogICAgICAgICAgICB1cmwgPSB1cmwgIT0gJycgPyB1cmwgOiBQYXJzZVMuTWFv5YWo572RKHZpcFVybCk7CiAgICAgICAgICAgIHJldHVybiB1cmw7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9LAogICAgcGxheWVyX3h4OiBmdW5jdGlvbiAoanVybCwgTGFiZWwpIHsKICAgICAgICByZXR1cm4gJChqdXJsKS5sYXp5UnVsZSgoaykgPT4gewogICAgICAgICAgICB2YXIganNVcmwgPSBrWzFdOwogICAgICAgICAgICB2YXIgTGFiZWwgPSBrWzBdOwogICAgICAgICAgICB2YXIgZmEgPSBbJ2xldHYnLCAncHB0dicsICdxcScsICd5b3VrdScsICdxaXlpJywgJ2lxaXlpJywgJ21ndHYnLCAnYmlsaWJpbGknLCAnc29odScgLCdtaWd1JywgJ20xOTA1JywgJ3ZpcCddOwogICAgICAgICAgICB2YXIgaHRtbCA9IHBhcnNlRG9tKHJlcXVlc3QoaW5wdXQpLCBMYWJlbCk7CiAgICAgICAgICAgIGV2YWwoaHRtbC5yZXBsYWNlKC9wbGF5ZXJfLio/PXsvLCdwZGF0YT17JykpOwogICAgICAgICAgICBldmFsKGZldGNoKGpzVXJsKSk7CiAgICAgICAgICAgIGlmKHBkYXRhLnVybC5zdWJzdHIoMCw4KS5tYXRjaCgvSlQuLkpULi4vKSl7CiAgICAgICAgICAgICAgICBwZGF0YS51cmwgPSBiYXNlNjREZWNvZGUocGRhdGEudXJsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZihwZGF0YS51cmwuc3Vic3RyKDAsOCkubWF0Y2goLyUuLiUuLi8pKXsKICAgICAgICAgICAgICAgIHBkYXRhLnVybCA9IHVuZXNjYXBlKHBkYXRhLnVybCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoZmEuaW5jbHVkZXMocGRhdGEuZnJvbSk9PXRydWUpewogICAgICAgICAgICAgICAgcmV0dXJuIGF5dG1QYXJzZShwZGF0YS51cmwpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIHBkYXRhLnVybCArICcjaXNWaWRlbz10cnVlIyc7CiAgICAgICAgICAgIH0KICAgICAgICB9LCBbTGFiZWwsIGpzVXJsXSkKICAgIH0KfTsKCmZ1bmN0aW9uIHNldFBhcnNlKCkgewogICAgZnVuY3Rpb24gY2pVcGRhdGUoKSB7CiAgICAgICAgdmFyIGpzRmlsZSA9IGZldGNoKF9teVNldC5jaik7CiAgICAgICAgd3JpdGVGaWxlKF9teVNldC5jamNhY2hlLCBqc0ZpbGUpOwogICAgfQogICAgZnVuY3Rpb24geDVVcGRhdGUoKSB7CiAgICAgICAgdmFyIHg1RmlsZSA9IGZldGNoKF9teVNldC54NVVybCk7CiAgICAgICAgd3JpdGVGaWxlKF9teVNldC54NWNhY2hlLCB4NUZpbGUpOwogICAgfQogICAgaWYoIWZldGNoKF9teVNldC5jamNhY2hlKSl7CiAgICAgICBjalVwZGF0ZSgpOwogICAgfQogICAgaWYoIWZldGNoKF9teVNldC54NWNhY2hlKSl7CiAgICAgICB4NVVwZGF0ZSgpOwogICAgfQogICAgZC5wdXNoKHsKICAgICAgICBkZXNjOiAnNTMwJywKICAgICAgICB1cmw6IF9teVNldC54NVJvdXRlLAogICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnCiAgICB9KTsKICAgIHB1dFZhcigibXlTZWxlY3QiLCBteVNlbGVjdCk7CiAgICBpZihnZXRWYXIoIkRuUGFnZSIpPT0i5byAIil7CiAgICAgICAgdmFyIG9sZHZlcnNpb24gPSB2ZXJzaW9uOwogICAgICAgIHRyeXtldmFsKGZldGNoKF9teVNldC5jaikpfWNhdGNoKGUpe3ZlcnNpb24gPSAwfTsKICAgICAgICB2YXIgdGl0bGUgPSAn44CA44CA5Y+v6IO95rKh5pyJ5pu05paw5ZOm77yB6K+355WZ5oSP6K665Z2b6YCa55+l44CCJzsKICAgICAgICBpZih2ZXJzaW9uID4gb2xkdmVyc2lvbil7CiAgICAgICAgICAgIHRpdGxlID0gJ+OAgOOAgOiEmuacrOW3suWQjOatpeacgOaWsOeJiO+8geinhOWImeabtOaWsOe7tOaKpOWcqFHnvqTmiJbogIXorrrlnZvlj5HluIMnOwogICAgICAgICAgICBjalVwZGF0ZSgpOwogICAgICAgICAgICB4NVVwZGF0ZSgpOwogICAgICAgIH0KICAgICAgICBkLnB1c2goewogICAgICAgICAgICBpbWc6ICdodHRwczovL2Z0cC5ibXAub3ZoL2ltZ3MvMjAyMS8wMi81NTIzODg0MDMyNzVmZDZmLmpwZycsCiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSwKICAgICAgICAgICAgZGVzYzogJ+eCueWHu+i/m+WFpeiuuuWdm+W4luWtkOWIl+ihqCcsCiAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vaGFpa3Vvc2hpamllLmNuL3VzZXIvMTk1OCcsCiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMScKICAgICAgICB9KTsKICAgIH0KfQ==
Add Comment
Please, Sign In to add comment