WYY/lib/我的哔哩.js
2024-10-02 08:30:05 -05:00

1 line
21 KiB
JavaScript

LyoqCiAqIOW3suefpemXrumimO+8mgogICAgKiBb5o6o6I2QXemhtemdou+8mifpm7fnlLXmqKHmi5/lmagn5pKt5pS+6YOo5Lu95b2x54mH5Lya5Ye66ZSZ77yMJ+aSreaUvuWZqCfmlLnmiJAnaWprJyAmICfop6PnoIHmlrnlvI8n5pS55oiQJ+i9r+inoyfvvIzljbPlj6/mraPluLjmkq3mlL4KICog5b2x6KeGVFYg6LaF6YCj57WQ6Lez6L2J5pSv5oyBCiAqIOW9seinhlRWIOW8ueW5leaUr+aMgQogICAgKiBodHRwczovL3QubWUvZm9uZ21pX29mZmljYWwvCiAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Gb25nTWkvUmVsZWFzZS90cmVlL21haW4vYXBrCiAqIOearuearuiZvkRNQm94IOW8ueW5leaUr+aMgQogICAgKiDorr7nva4gPiDnqpflj6PpooTop4ggPiDlvIDlkK8KICAgICogaHR0cHM6Ly90Lm1lL3BpcGl4aWF3ZXJ1bgogICAgKiB2b2RfYXJlYTonYmlsaWRhbm11JwogKiBDb29raWXorr7nva4KICAgICogQ29va2ll6I635Y+W5pa55rOVIGh0dHBzOi8vZ2hwcm94eS5uZXQvaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1VuZENvdmVyL1B5cmFtaWRTdG9yZS9tYWluL2xpc3QubWQKICogQ29va2ll6K6+572u5pa55rOVMTogRFItUFkg5ZCO5Y+w566h55CG55WM6Z2iCiAgICAqIENNU+WQjuWPsOeuoeeQhiA+IOiuvue9ruS4reW/gyA+IOeOr+Wig+WPmOmHjyA+IHsiYmlsaV9jb29raWUiOiJYWFhYWFhYIiwidm1pZCI6IlhYWFhYWCJ9ID4g5L+d5a2YCiAqIENvb2tpZeiuvue9ruaWueazlTI6IOaJi+WKqOabv+aNokNvb2tpZQogICAgKiDlupXkuIvku6PnoIEgaGVhZGVyc+eahAogICAgKiAiQ29va2llIjoiJGJpbGlfY29va2llIgogICAgKiDmiYvliqjmm7/mjaLkuLoKICAgICogIkNvb2tpZSI6IuWwhuiOt+WPlueahENvb2tpZem7j+i0tOWcqOi/mSIKICAgICog5a6i5oi356uv6ZW/5pyfQ29va2ll6K6+572u5pWZ56iLOgogICAgKiDmipPljIXlk5Tlk6nmiYvmnLrnq6/mkJzntKJhY2Nlc3Nfa2V5LOWPluS7u+aEj+mTvuaOpemHjOeahGFjY2Vzc19rZXnlkoxhcHBrZXnlnKhkcnB5546v5aKD5Y+Y6YeP5Lit5aKe5Yqg5ZCM5ZCN55qE546v5aKD5Y+Y6YeP5Y2z5Y+vCiAgICAqIOatpOaXtuWTlOWTqS5qc+i/meS4quino+aekOWPr+eUqOS6juatpOa6kOeahOino+aekOe6v+i3r+eUqAogICAgKiDkvKDlj4IgP3R5cGU9dXJsJnBhcmFtcz0uLi9qc29uL+Wwj+WtpuaVmeiCsi5qc29uCiAqLwp2YXIgcnVsZSA9IHsKICAgIHRpdGxlOifmiJHnmoTlk5Tlk6kt5bCP5a2m5pWZ6IKyW+WumF0nLAogICAgaG9zdDonaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tJywKICAgIGhvbWVVcmw6Jy94L3dlYi1pbnRlcmZhY2UvcmFua2luZy92Mj9yaWQ9MCZ0eXBlPW9yaWdpbicsCiAgICB1cmw6Jy94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/c2VhcmNoX3R5cGU9dmlkZW8ma2V5d29yZD1meWNsYXNzJnBhZ2U9ZnlwYWdlJywKICAgIGNsYXNzX3BhcnNlOmBqczoKICAgIGxvZygncnVsZS5wYXJhbXM6JytydWxlLnBhcmFtcyk7CiAgICBsZXQgaHRtbD1yZXF1ZXN0KHJ1bGUucGFyYW1zKTsKICAgIGxldCBqc29uID0gZGVhbEpzb24oaHRtbCk7CiAgICBpbnB1dD1qc29uLmNsYXNzZXM7CiAgICBob21lT2JqLmZpbHRlciA9IGpzb24uZmlsdGVyOwogICAgLy8gbG9nKGlucHV0KTsKICAgIGAsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZGV0YWlsVXJsOicveC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsP2FpZD1meWlkJywKICAgIHNlYXJjaFVybDonL3gvd2ViLWludGVyZmFjZS9zZWFyY2gvdHlwZT9zZWFyY2hfdHlwZT12aWRlbyZrZXl3b3JkPSoqJnBhZ2U9ZnlwYWdlJywKICAgIHNlYXJjaGFibGU6MiwKICAgIHF1aWNrU2VhcmNoOjAsCiAgICBoZWFkZXJzOnsKICAgICAgICAiVXNlci1BZ2VudCI6IlBDX1VBIiwKICAgICAgICAiUmVmZXJlciI6ICJodHRwczovL3d3dy5iaWxpYmlsaS5jb20iLAogICAgICAgICJDb29raWUiOiAiYnV2aWQzPTY2NiIKICAgIH0sCiAgICB0aW1lb3V0OjUwMDAsCiAgICBsaW1pdDo4LAogICAgcGxheV9wYXJzZTp0cnVlLAogICAgZG91YmxlOmZhbHNlLAogICAgbGF6eTpganM6CiAgICAgICAgbGV0IGlkcyA9IGlucHV0LnNwbGl0KCdfJyk7CiAgICAgICAgbGV0IGRhbiA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92MS9kbS9saXN0LnNvP29pZD0nICsgaWRzWzFdOwogICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICBsZXQgaXVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb206NDQzL3gvcGxheWVyL3BsYXl1cmw/YXZpZD0nICsgaWRzWzBdICsgJyZjaWQ9JyArIGlkc1sxXSArICcmcW49MTE2JzsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaXVybCk7CiAgICAgICAgbGV0IGpSb290ID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICBsZXQgam8gPSBqUm9vdC5kYXRhOwogICAgICAgIGxldCBqYSA9IGpvLmR1cmw7CiAgICAgICAgbGV0IG1heFNpemUgPSAtMTsKICAgICAgICBsZXQgcG9zaXRpb24gPSAtMTsKICAgICAgICBqYS5mb3JFYWNoKGZ1bmN0aW9uKHRtcEpvLCBpKSB7CiAgICAgICAgICAgIGlmIChtYXhTaXplIDwgTnVtYmVyKHRtcEpvLnNpemUpKSB7CiAgICAgICAgICAgICAgICBtYXhTaXplID0gTnVtYmVyKHRtcEpvLnNpemUpOwogICAgICAgICAgICAgICAgcG9zaXRpb24gPSBpCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBsZXQgcHVybCA9ICcnOwogICAgICAgIGlmIChqYS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gLTEpIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gMAogICAgICAgICAgICB9CiAgICAgICAgICAgIHB1cmwgPSBqYVtwb3NpdGlvbl0udXJsCiAgICAgICAgfQogICAgICAgIHJlc3VsdC5wYXJzZSA9IDA7CiAgICAgICAgcmVzdWx0LnBsYXlVcmwgPSAnJzsKICAgICAgICByZXN1bHQudXJsID0gdW5lc2NhcGUocHVybCk7CiAgICAgICAgcmVzdWx0LmhlYWRlciA9IHsKICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly9saXZlLmJpbGliaWxpLmNvbScsCiAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84Ni4wLjQyNDAuMTk4IFNhZmFyaS81MzcuMzYnCiAgICAgICAgfTsKICAgICAgICBpZiAoL1xcLmZsdi8udGVzdChwdXJsKSkgewogICAgICAgICAgICByZXN1bHQuY29udGVudFR5cGUgPSAndmlkZW8veC1mbHYnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJlc3VsdC5jb250ZW50VHlwZSA9ICcnOwogICAgICAgIH0KICAgICAgICByZXN1bHQuZGFubWFrdSA9IGRhbjsKICAgICAgICBpbnB1dCA9IHJlc3VsdAogICAgYCwKICAgIOaOqOiNkDpganM6CiAgICAgICAgZnVuY3Rpb24gc3RyaXBIdG1sVGFnKHNyYykgewogICAgICAgICAgICByZXR1cm4gc3JjLnJlcGxhY2UoLzxcXC8/W14+XSsoPnwkKS9nLCAnJykucmVwbGFjZSgvJi57MSw1fTsvZywgJycpLnJlcGxhY2UoL1xcc3syLH0vZywgJyAnKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gdHVybkRITShkdXJhdGlvbikgewogICAgICAgICAgICBsZXQgbWluID0gJyc7CiAgICAgICAgICAgIGxldCBzZWMgPSAnJzsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIG1pbiA9IGR1cmF0aW9uLnNwbGl0KCc6JylbMF07CiAgICAgICAgICAgICAgICBzZWMgPSBkdXJhdGlvbi5zcGxpdCgnOicpWzFdOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBtaW4gPSBNYXRoLmZsb29yKGR1cmF0aW9uIC8gNjApOwogICAgICAgICAgICAgICAgc2VjID0gZHVyYXRpb24gJSA2MDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VJbnQoZHVyYXRpb24pKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICfml6DmlYjovpPlhaUnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChtaW4gPT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlYyArICfnp5InCiAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA8IG1pbiAmJiBtaW4gPCA2MCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG1pbiArICfliIYnCiAgICAgICAgICAgIH0gZWxzZSBpZiAoNjAgPD0gbWluICYmIG1pbiA8IDE0NDApIHsKICAgICAgICAgICAgICAgIGlmIChtaW4gJSA2MCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGggPSBtaW4gLyA2MDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCArICflsI/ml7YnCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxldCBoID0gbWluIC8gNjA7CiAgICAgICAgICAgICAgICAgICAgaCA9IChoICsgJycpLnNwbGl0KCcuJylbMF07CiAgICAgICAgICAgICAgICAgICAgbGV0IG0gPSBtaW4gJSA2MDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCArICflsI/ml7YnICsgbSArICfliIYnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKG1pbiA+PSAxNDQwKSB7CiAgICAgICAgICAgICAgICBsZXQgZCA9IG1pbiAvIDYwIC8gMjQ7CiAgICAgICAgICAgICAgICBkID0gKGQgKyAnJykuc3BsaXQoJy4nKVswXTsKICAgICAgICAgICAgICAgIGxldCBoID0gbWluIC8gNjAgJSAyNDsKICAgICAgICAgICAgICAgIGggPSAoaCArICcnKS5zcGxpdCgnLicpWzBdOwogICAgICAgICAgICAgICAgbGV0IG0gPSBtaW4gJSA2MDsKICAgICAgICAgICAgICAgIGxldCBkaG0gPSAnJzsKICAgICAgICAgICAgICAgIGlmIChkID4gMCkgewogICAgICAgICAgICAgICAgICAgIGRobSA9IGQgKyAn5aSpJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGggPj0gMSkgewogICAgICAgICAgICAgICAgICAgIGRobSA9IGRobSArIGggKyAn5bCP5pe2JwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG0gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgZGhtID0gZGhtICsgbSArICfliIYnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZGhtCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gQ29udmVydE51bShudW0pIHsKICAgICAgICAgICAgbGV0IF93cyA9IE1hdGgucG93KDEwLCAxKTsKICAgICAgICAgICAgbGV0IF9iID0gMWU0OwogICAgICAgICAgICBpZiAobnVtIDwgX2IpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudW0udG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgX3IgPSAnJzsKICAgICAgICAgICAgbGV0IF9zdHJBcmcgPSBbJycsICfkuIcnLCAn5Lq/JywgJ+S4h+S6vyddOwogICAgICAgICAgICBsZXQgX2kgPSBNYXRoLmZsb29yKE1hdGgubG9nKG51bSkgLyBNYXRoLmxvZyhfYikpOwogICAgICAgICAgICBpZiAoX2kgPiAzKSB7CiAgICAgICAgICAgICAgICBfaSA9IDM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgX3IgPSBNYXRoLmZsb29yKG51bSAvIE1hdGgucG93KF9iLCBfaSkgKiBfd3MpIC8gX3dzICsgX3N0ckFyZ1tfaV07CiAgICAgICAgICAgIHJldHVybiBfcjsKICAgICAgICB9CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBsZXQgdm9kTGlzdCA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YS5saXN0OwogICAgICAgIGxldCB2aWRlb3MgPSBbXTsKICAgICAgICB2b2RMaXN0LmZvckVhY2goZnVuY3Rpb24odm9kKSB7CiAgICAgICAgICAgIGxldCBhaWQgPSB2b2QuYWlkOwogICAgICAgICAgICBsZXQgdGl0bGUgPSBzdHJpcEh0bWxUYWcodm9kLnRpdGxlKTsKICAgICAgICAgICAgbGV0IGltZyA9IHZvZC5waWM7CiAgICAgICAgICAgIGlmIChpbWcuc3RhcnRzV2l0aCgnLy8nKSkgewogICAgICAgICAgICAgICAgaW1nID0gJ2h0dHBzOicgKyBpbWc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IHJlbWFyayA9IHR1cm5ESE0odm9kLmR1cmF0aW9uKSArICcg4pa2JyArIENvbnZlcnROdW0odm9kLnN0YXQudmlldykgKyAnIPCfhpknICsgdm9kLm93bmVyLm5hbWU7CiAgICAgICAgICAgIHZpZGVvcy5wdXNoKHsKICAgICAgICAgICAgICAgIHZvZF9pZDogYWlkLAogICAgICAgICAgICAgICAgdm9kX25hbWU6IHRpdGxlLAogICAgICAgICAgICAgICAgdm9kX3BpYzogaW1nLAogICAgICAgICAgICAgICAgdm9kX3JlbWFya3M6IHJlbWFyawogICAgICAgICAgICB9KQogICAgICAgIH0pOwogICAgICAgIFZPRFMgPSB2aWRlb3MKICAgIGAsCiAgICDkuIDnuqc6YGpzOgogICAgICAgIGlmIChjYXRlT2JqLnRpZC5lbmRzV2l0aCgnX2NsaWNrbGluaycpKSB7CiAgICAgICAgICAgIGNhdGVPYmoudGlkID0gY2F0ZU9iai50aWQuc3BsaXQoJ18nKVswXTsKICAgICAgICAgICAgaW5wdXQgPSBIT1NUICsgJy94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/c2VhcmNoX3R5cGU9dmlkZW8ma2V5d29yZD0nICsgY2F0ZU9iai50aWQgKyAnJnBhZ2U9JyArIE1ZX1BBR0U7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKICAgICAgICAgICAgcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHR1cm5ESE0oZHVyYXRpb24pIHsKICAgICAgICAgICAgbGV0IG1pbiA9ICcnOwogICAgICAgICAgICBsZXQgc2VjID0gJyc7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBtaW4gPSBkdXJhdGlvbi5zcGxpdCgnOicpWzBdOwogICAgICAgICAgICAgICAgc2VjID0gZHVyYXRpb24uc3BsaXQoJzonKVsxXTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgbWluID0gTWF0aC5mbG9vcihkdXJhdGlvbiAvIDYwKTsKICAgICAgICAgICAgICAgIHNlYyA9IGR1cmF0aW9uICUgNjA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGlzTmFOKHBhcnNlSW50KGR1cmF0aW9uKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAn5peg5pWI6L6T5YWlJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobWluID09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWMgKyAn56eSJwogICAgICAgICAgICB9IGVsc2UgaWYgKDAgPCBtaW4gJiYgbWluIDwgNjApIHsKICAgICAgICAgICAgICAgIHJldHVybiBtaW4gKyAn5YiGJwogICAgICAgICAgICB9IGVsc2UgaWYgKDYwIDw9IG1pbiAmJiBtaW4gPCAxNDQwKSB7CiAgICAgICAgICAgICAgICBpZiAobWluICUgNjAgPT0gMCkgewogICAgICAgICAgICAgICAgICAgIGxldCBoID0gbWluIC8gNjA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGggKyAn5bCP5pe2JwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBsZXQgaCA9IG1pbiAvIDYwOwogICAgICAgICAgICAgICAgICAgIGggPSAoaCArICcnKS5zcGxpdCgnLicpWzBdOwogICAgICAgICAgICAgICAgICAgIGxldCBtID0gbWluICUgNjA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGggKyAn5bCP5pe2JyArIG0gKyAn5YiGJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmIChtaW4gPj0gMTQ0MCkgewogICAgICAgICAgICAgICAgbGV0IGQgPSBtaW4gLyA2MCAvIDI0OwogICAgICAgICAgICAgICAgZCA9IChkICsgJycpLnNwbGl0KCcuJylbMF07CiAgICAgICAgICAgICAgICBsZXQgaCA9IG1pbiAvIDYwICUgMjQ7CiAgICAgICAgICAgICAgICBoID0gKGggKyAnJykuc3BsaXQoJy4nKVswXTsKICAgICAgICAgICAgICAgIGxldCBtID0gbWluICUgNjA7CiAgICAgICAgICAgICAgICBsZXQgZGhtID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoZCA+IDApIHsKICAgICAgICAgICAgICAgICAgICBkaG0gPSBkICsgJ+WkqScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChoID49IDEpIHsKICAgICAgICAgICAgICAgICAgICBkaG0gPSBkaG0gKyBoICsgJ+Wwj+aXticKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChtID4gMCkgewogICAgICAgICAgICAgICAgICAgIGRobSA9IGRobSArIG0gKyAn5YiGJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGRobQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIENvbnZlcnROdW0obnVtKSB7CiAgICAgICAgICAgIGxldCBfd3MgPSBNYXRoLnBvdygxMCwgMSk7CiAgICAgICAgICAgIGxldCBfYiA9IDFlNDsKICAgICAgICAgICAgaWYgKG51bSA8IF9iKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVtLnRvU3RyaW5nKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IF9yID0gJyc7CiAgICAgICAgICAgIGxldCBfc3RyQXJnID0gWycnLCAn5LiHJywgJ+S6vycsICfkuIfkur8nXTsKICAgICAgICAgICAgbGV0IF9pID0gTWF0aC5mbG9vcihNYXRoLmxvZyhudW0pIC8gTWF0aC5sb2coX2IpKTsKICAgICAgICAgICAgaWYgKF9pID4gMykgewogICAgICAgICAgICAgICAgX2kgPSAzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIF9yID0gTWF0aC5mbG9vcihudW0gLyBNYXRoLnBvdyhfYiwgX2kpICogX3dzKSAvIF93cyArIF9zdHJBcmdbX2ldOwogICAgICAgICAgICByZXR1cm4gX3I7CiAgICAgICAgfQogICAgICAgIGxldCBkYXRhID0gW107CiAgICAgICAgbGV0IHZvZExpc3QgPSBbXTsKICAgICAgICBpZiAoTVlfQ0FURSA9PT0gJ+aOqOiNkCcpIHsKICAgICAgICAgICAgaW5wdXQgPSBIT1NUICsgJy94L3dlYi1pbnRlcmZhY2UvaW5kZXgvdG9wL3JjbWQ/cHM9MTQmZnJlc2hfaWR4PScgKyBNWV9QQUdFICsgJyZmcmVzaF9pZHhfMWg9JyArIE1ZX1BBR0U7CiAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKS5kYXRhOwogICAgICAgICAgICB2b2RMaXN0ID0gZGF0YS5pdGVtOwogICAgICAgIH0gZWxzZSBpZiAoTVlfQ0FURSA9PT0gJ+WOhuWPsuiusOW9lScpIHsKICAgICAgICAgICAgaW5wdXQgPSBIT1NUICsgJy94L3YyL2hpc3Rvcnk/cG49JyArIE1ZX1BBR0U7CiAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKS5kYXRhOwogICAgICAgICAgICB2b2RMaXN0ID0gZGF0YTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KSkuZGF0YTsKICAgICAgICAgICAgdm9kTGlzdCA9IGRhdGEucmVzdWx0OwogICAgICAgIH0KICAgICAgICBsZXQgdmlkZW9zID0gW107CiAgICAgICAgdm9kTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHZvZCkgewogICAgICAgICAgICBsZXQgYWlkID0gdm9kLmFpZD92b2QuYWlkOnZvZC5pZDsKICAgICAgICAgICAgbGV0IHRpdGxlID0gc3RyaXBIdG1sVGFnKHZvZC50aXRsZSk7CiAgICAgICAgICAgIGxldCBpbWcgPSB2b2QucGljOwogICAgICAgICAgICBpZiAoaW1nLnN0YXJ0c1dpdGgoJy8vJykpIHsKICAgICAgICAgICAgICAgIGltZyA9ICdodHRwczonICsgaW1nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBwbGF5ID0gJyc7CiAgICAgICAgICAgIGxldCBkYW5tYWt1ID0gJyc7CiAgICAgICAgICAgIGlmIChNWV9DQVRFID09PSAn5o6o6I2QJykgewogICAgICAgICAgICAgICAgcGxheSA9IENvbnZlcnROdW0odm9kLnN0YXQudmlldyk7CiAgICAgICAgICAgICAgICBkYW5tYWt1ID0gdm9kLnN0YXQuZGFubWFrdTsKICAgICAgICAgICAgfSBlbHNlIGlmIChNWV9DQVRFID09PSAn5Y6G5Y+y6K6w5b2VJykgewogICAgICAgICAgICAgICAgcGxheSA9IENvbnZlcnROdW0odm9kLnN0YXQudmlldyk7CiAgICAgICAgICAgICAgICBkYW5tYWt1ID0gdm9kLnN0YXQuZGFubWFrdTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHBsYXkgPSBDb252ZXJ0TnVtKHZvZC5wbGF5KTsKICAgICAgICAgICAgICAgIGRhbm1ha3UgPSB2b2QudmlkZW9fcmV2aWV3OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCByZW1hcmsgPSB0dXJuREhNKHZvZC5kdXJhdGlvbikgKyAnIOKWticgKyBwbGF5ICsgJyDwn5KsJyArIGRhbm1ha3U7CiAgICAgICAgICAgIHZpZGVvcy5wdXNoKHsKICAgICAgICAgICAgICAgIHZvZF9pZDogYWlkLAogICAgICAgICAgICAgICAgdm9kX25hbWU6IHRpdGxlLAogICAgICAgICAgICAgICAgdm9kX3BpYzogaW1nLAogICAgICAgICAgICAgICAgdm9kX3JlbWFya3M6IHJlbWFyawogICAgICAgICAgICB9KQogICAgICAgIH0pOwogICAgICAgIFZPRFMgPSB2aWRlb3MKICAgIGAsCiAgICDkuoznuqc6YGpzOgogICAgICAgIGZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKICAgICAgICAgICAgcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CiAgICAgICAgfQogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IGpvID0gSlNPTi5wYXJzZShodG1sKS5kYXRhLlZpZXc7CiAgICAgICAgLy8g5Y6G5Y+y6K6w5b2VCiAgICAgICAgbGV0IGNvb2tpZXMgPSBydWxlX2ZldGNoX3BhcmFtcy5oZWFkZXJzLkNvb2tpZS5zcGxpdCgnOycpOwogICAgICAgIGxldCBiaWxpX2pjdCA9ICcnOwogICAgICAgIGNvb2tpZXMuZm9yRWFjaChjb29raWUgPT4gewogICAgICAgICAgICBpZiAoY29va2llLmluY2x1ZGVzKCdiaWxpX2pjdCcpKSB7CiAgICAgICAgICAgICAgICBiaWxpX2pjdCA9IGNvb2tpZS5zcGxpdCgnPScpWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgaWYgKGJpbGlfamN0ICE9PSAnJykgewogICAgICAgICAgICBsZXQgaGlzdG9yeVJlcG9ydCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9oaXN0b3J5L3JlcG9ydCc7CiAgICAgICAgICAgIGxldCBkYXRhUG9zdCA9IHsKICAgICAgICAgICAgICAgIGFpZDogam8uYWlkLAogICAgICAgICAgICAgICAgY2lkOiBqby5jaWQsCiAgICAgICAgICAgICAgICBjc3JmOiBiaWxpX2pjdCwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcG9zdChoaXN0b3J5UmVwb3J0LCBkYXRhUG9zdCwgJ2Zvcm0nKTsKICAgICAgICB9CgogICAgICAgIGxldCBzdGF0ID0gam8uc3RhdDsKICAgICAgICBsZXQgdXBfaW5mbyA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YS5DYXJkOwogICAgICAgIGxldCByZWxhdGlvbiA9IHVwX2luZm8uZm9sbG93aW5nID8gJ+W3suWFs+azqCcgOiAn5pyq5YWz5rOoJzsKICAgICAgICBsZXQgYWlkID0gam8uYWlkOwogICAgICAgIGxldCB0aXRsZSA9IHN0cmlwSHRtbFRhZyhqby50aXRsZSk7CiAgICAgICAgbGV0IHBpYyA9IGpvLnBpYzsKICAgICAgICBsZXQgZGVzYyA9IGpvLmRlc2M7CgogICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoam8ucHViZGF0ZSAqIDEwMDApOwogICAgICAgIGxldCB5eSA9IGRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpOwogICAgICAgIGxldCBtbSA9IGRhdGUuZ2V0TW9udGgoKSsxOwogICAgICAgIG1tID0gbW0gPCAxMCA/ICgnMCcgKyBtbSkgOiBtbTsKICAgICAgICBsZXQgZGQgPSBkYXRlLmdldERhdGUoKTsKICAgICAgICBkZCA9IGRkIDwgMTAgPyAoJzAnICsgZGQpIDogZGQ7CgogICAgICAgIGxldCB1cF9uYW1lID0gam8ub3duZXIubmFtZTsKICAgICAgICBsZXQgdHlwZU5hbWUgPSBqby50bmFtZTsKICAgICAgICAvLyBsZXQgcmVtYXJrID0gam8uZHVyYXRpb247CiAgICAgICAgbGV0IHZvZCA9IHsKICAgICAgICAgICAgdm9kX2lkOiBhaWQsCiAgICAgICAgICAgIHZvZF9uYW1lOiB0aXRsZSwKICAgICAgICAgICAgdm9kX3BpYzogcGljLAogICAgICAgICAgICB0eXBlX25hbWU6IHR5cGVOYW1lLAogICAgICAgICAgICB2b2RfeWVhcjogeXkrbW0rZGQsCiAgICAgICAgICAgIHZvZF9hcmVhOiAnYmlsaWRhbm11JywKICAgICAgICAgICAgLy8gdm9kX3JlbWFya3M6IHJlbWFyaywKICAgICAgICAgICAgdm9kX3RhZ3M6ICdtdicsCiAgICAgICAgICAgIC8vIHZvZF9kaXJlY3RvcjogJ/CfhpkgJyArIHVwX25hbWUgKyAn44CA8J+RpSAnICsgdXBfaW5mby5mb2xsb3dlciArICfjgIAnICsgcmVsYXRpb24sCiAgICAgICAgICAgIHZvZF9kaXJlY3RvcjogJ/CfhpkgJyArICdbYT1jcjonICsgSlNPTi5zdHJpbmdpZnkoeydpZCc6dXBfbmFtZSArICdfY2xpY2tsaW5rJywnbmFtZSc6dXBfbmFtZX0pICsgJy9dJyArIHVwX25hbWUgKyAnWy9hXScgKyAn44CA8J+RpSAnICsgdXBfaW5mby5mb2xsb3dlciArICfjgIAnICsgcmVsYXRpb24sCiAgICAgICAgICAgIHZvZF9hY3RvcjogJ+KWticgKyBzdGF0LnZpZXcgKyAn44CAJyArICfwn5KsJyArIHN0YXQuZGFubWFrdSArICfjgIAnICsgJ/CfkY0nICsgc3RhdC5saWtlICsgJ+OAgCcgKyAn8J+SsCcgKyBzdGF0LmNvaW4gKyAn44CAJyArICfirZAnICsgc3RhdC5mYXZvcml0ZSwKICAgICAgICAgICAgdm9kX2NvbnRlbnQ6IGRlc2MKICAgICAgICB9OwogICAgICAgIGxldCBqYSA9IGpvLnBhZ2VzOwogICAgICAgIGxldCB0cmVlTWFwID0ge307CiAgICAgICAgbGV0IHBsYXl1cmxzID0gW107CiAgICAgICAgamEuZm9yRWFjaChmdW5jdGlvbih0bXBKbykgewogICAgICAgICAgICBsZXQgY2lkID0gdG1wSm8uY2lkOwogICAgICAgICAgICBsZXQgcGFydCA9IHRtcEpvLnBhcnQucmVwbGFjZUFsbCgnIycsICfvuZ8nKS5yZXBsYWNlQWxsKCckJywgJ++5qScpOwogICAgICAgICAgICBwbGF5dXJscy5wdXNoKAogICAgICAgICAgICAgICAgcGFydCArICckJyArIGFpZCArICdfJyArIGNpZAogICAgICAgICAgICApCiAgICAgICAgfSk7CiAgICAgICAgdHJlZU1hcFsnQuermSddID0gcGxheXVybHMuam9pbignIycpOwogICAgICAgIGxldCByZWxhdGVkRGF0YSA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YS5SZWxhdGVkOwogICAgICAgIHBsYXl1cmxzID0gW107CiAgICAgICAgcmVsYXRlZERhdGEuZm9yRWFjaChmdW5jdGlvbihyZCkgewogICAgICAgICAgICBsZXQgY2NpZCA9IHJkLmNpZDsKICAgICAgICAgICAgbGV0IHRpdGxlID0gcmQudGl0bGUucmVwbGFjZUFsbCgnIycsICfvuZ8nKS5yZXBsYWNlQWxsKCckJywgJ++5qScpOwogICAgICAgICAgICBsZXQgYWFpZCA9IHJkLmFpZDsKICAgICAgICAgICAgcGxheXVybHMucHVzaCgKICAgICAgICAgICAgICAgIHRpdGxlICsgJyQnICsgYWFpZCArICdfJyArIGNjaWQKICAgICAgICAgICAgKQogICAgICAgIH0pOwogICAgICAgIHRyZWVNYXBbJ+ebuOWFs+aOqOiNkCddID0gcGxheXVybHMuam9pbignIycpOwogICAgICAgIHZvZC52b2RfcGxheV9mcm9tID0gT2JqZWN0LmtleXModHJlZU1hcCkuam9pbigiJCQkIik7CiAgICAgICAgdm9kLnZvZF9wbGF5X3VybCA9IE9iamVjdC52YWx1ZXModHJlZU1hcCkuam9pbigiJCQkIik7CiAgICAgICAgVk9EID0gdm9kOwogICAgYCwKICAgIOaQnOe0ojpganM6CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBmdW5jdGlvbiBzdHJpcEh0bWxUYWcoc3JjKSB7CiAgICAgICAgICAgIHJldHVybiBzcmMucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csICcnKS5yZXBsYWNlKC8mLnsxLDV9Oy9nLCAnJykucmVwbGFjZSgvXFxzezIsfS9nLCAnICcpOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiB0dXJuREhNKGR1cmF0aW9uKSB7CiAgICAgICAgICAgIGxldCBtaW4gPSAnJzsKICAgICAgICAgICAgbGV0IHNlYyA9ICcnOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgbWluID0gZHVyYXRpb24uc3BsaXQoJzonKVswXTsKICAgICAgICAgICAgICAgIHNlYyA9IGR1cmF0aW9uLnNwbGl0KCc6JylbMV07CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIG1pbiA9IE1hdGguZmxvb3IoZHVyYXRpb24gLyA2MCk7CiAgICAgICAgICAgICAgICBzZWMgPSBkdXJhdGlvbiAlIDYwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUludChkdXJhdGlvbikpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ+aXoOaViOi+k+WFpSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG1pbiA9PSAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VjICsgJ+enkicKICAgICAgICAgICAgfSBlbHNlIGlmICgwIDwgbWluICYmIG1pbiA8IDYwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbWluICsgJ+WIhicKICAgICAgICAgICAgfSBlbHNlIGlmICg2MCA8PSBtaW4gJiYgbWluIDwgMTQ0MCkgewogICAgICAgICAgICAgICAgaWYgKG1pbiAlIDYwID09IDApIHsKICAgICAgICAgICAgICAgICAgICBsZXQgaCA9IG1pbiAvIDYwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBoICsgJ+Wwj+aXticKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGggPSBtaW4gLyA2MDsKICAgICAgICAgICAgICAgICAgICBoID0gKGggKyAnJykuc3BsaXQoJy4nKVswXTsKICAgICAgICAgICAgICAgICAgICBsZXQgbSA9IG1pbiAlIDYwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBoICsgJ+Wwj+aXticgKyBtICsgJ+WIhic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAobWluID49IDE0NDApIHsKICAgICAgICAgICAgICAgIGxldCBkID0gbWluIC8gNjAgLyAyNDsKICAgICAgICAgICAgICAgIGQgPSAoZCArICcnKS5zcGxpdCgnLicpWzBdOwogICAgICAgICAgICAgICAgbGV0IGggPSBtaW4gLyA2MCAlIDI0OwogICAgICAgICAgICAgICAgaCA9IChoICsgJycpLnNwbGl0KCcuJylbMF07CiAgICAgICAgICAgICAgICBsZXQgbSA9IG1pbiAlIDYwOwogICAgICAgICAgICAgICAgbGV0IGRobSA9ICcnOwogICAgICAgICAgICAgICAgaWYgKGQgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgZGhtID0gZCArICflpKknCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaCA+PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgZGhtID0gZGhtICsgaCArICflsI/ml7YnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobSA+IDApIHsKICAgICAgICAgICAgICAgICAgICBkaG0gPSBkaG0gKyBtICsgJ+WIhicKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBkaG0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgIH0KICAgICAgICBsZXQgdmlkZW9zID0gW107CiAgICAgICAgbGV0IHZvZExpc3QgPSBKU09OLnBhcnNlKGh0bWwpLmRhdGEucmVzdWx0OwogICAgICAgIHZvZExpc3QuZm9yRWFjaChmdW5jdGlvbih2b2QpIHsKICAgICAgICAgICAgbGV0IGFpZCA9IHZvZC5haWQ7CiAgICAgICAgICAgIGxldCB0aXRsZSA9IHN0cmlwSHRtbFRhZyh2b2QudGl0bGUpOwogICAgICAgICAgICBsZXQgaW1nID0gdm9kLnBpYzsKICAgICAgICAgICAgaWYgKGltZy5zdGFydHNXaXRoKCcvLycpKSB7CiAgICAgICAgICAgICAgICBpbWcgPSAnaHR0cHM6JyArIGltZzsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgcmVtYXJrID0gdHVybkRITSh2b2QuZHVyYXRpb24pOwogICAgICAgICAgICB2aWRlb3MucHVzaCh7CiAgICAgICAgICAgICAgICB2b2RfaWQ6IGFpZCwKICAgICAgICAgICAgICAgIHZvZF9uYW1lOiB0aXRsZSwKICAgICAgICAgICAgICAgIHZvZF9waWM6IGltZywKICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiByZW1hcmsKICAgICAgICAgICAgfSkKICAgICAgICB9KTsKICAgICAgICBWT0RTID0gdmlkZW9zCiAgICBgLAp9Cg==