xiaomianao666

小程序:𝐒𝐮𝐩𝐣𝐚𝐯

Apr 20th, 2025
686
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@𝐒𝐮𝐩𝐣𝐚𝐯@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi8J2QkvCdkK7wnZCp8J2Qo/CdkJrwnZCvIiwiYXV0aG9yIjoiUiIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2h0dHBzOi8vc3VwamF2LmNvbS96aC8jI2Z5cGFnZSIsInZlcnNpb24iOjIwMjUwNDIxLCJjb2xfdHlwZSI6Im1vdmllXzMiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InZpZGVvIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG4gICAgYWRkTGlzdGVuZXIoXCJvbkNsb3NlXCIsICgpID0+IHtcbiAgICAgICAgY2xlYXJNeVZhcihcIm5leHRQYWdlXCIpO1xuICAgIH0pO1xuLypcbmFkZExpc3RlbmVyKFwib25SZWZyZXNoXCIsICgpID0+IHtcbiAgICBjbGVhck15VmFyKFwibmV4dFBhZ2VcIik7XG59KTtcbiovXG52YXIgZCA9IFtdXG4vL3ZhciByZXMgPSBbXVxuTVlfVVJMID0gTVlfVVJMLnNwbGl0KFwiIyNcIilbMV1cbnZhciB0cnVlX3VybCA9IGdldE15VmFyKFwidXJsXCIsIE1ZX1VSTCk7XG5sZXQgbmV4dFBhZ2UgPSBnZXRNeVZhcihcIm5leHRQYWdlXCIsIFwiXCIpO1xuaWYgKG5leHRQYWdlICYmIE1ZX1BBR0UgPiAxKSB7XG4gICAgdHJ1ZV91cmwgPSBuZXh0UGFnZTtcbn0gZWxzZSBpZiAoTVlfUEFHRSA+IDEpIHtcbiAgICB0cnVlX3VybCA9IFwi5rKh5pyJ5LiL5LiA6aG15ZOm8J+YkVwiXG59XG4vL3ZhciBodG1sID0gZmV0Y2godHJ1ZV91cmwsIEpTT04ucGFyc2UoZ2V0TXlWYXIoJ2hlYWRlcnMnKSkpXG4vL3ZhciBodG1sID0gZmV0Y2hDb2RlQnlXZWJWaWV3KHRydWVfdXJsKVxuXG5sb2codHJ1ZV91cmwpXG5cbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2ZldGNoJywge30pKVxuICAgIC5ydWxlKTtcbnZhciBodG1sID0gU3VwZmV0Y2godHJ1ZV91cmwpXG5cbiAgICAvL2xvZyhodG1sKVxudHJ5IHtcbiAgICBsZXQgbmV4dFVybCA9IHBkKGh0bWwsIFwiLnBhZ2luYXRpb24mJi5hY3RpdmUrbGkmJmEmJmhyZWZcIik7XG4gICAgcHV0TXlWYXIoXCJuZXh0UGFnZVwiLCBuZXh0VXJsKTtcbn0gY2F0Y2ggKGUpIHtcbiAgICBjbGVhck15VmFyKFwibmV4dFBhZ2VcIik7XG4gICAgLy8gdG9hc3QoXCLlpb3lg4/msqHmnInkuIvkuIDpobXkuobvvIFcIik7XG59XG5cbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUsIGNvbG9yKSB7XG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVwiJyArIGNvbG9yICsgJ1wiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XG59XG5cbiQucmVxdWlyZShcImNhdGVnb3J5XCIpKClcblxuaWYgKGh0bWwuaW5jbHVkZXMoXCLor7fnqI3lgJnigKZcIikgfHwgaHRtbC5pbmNsdWRlcyhcIkp1c3QgYSBtb21lbnRcIikgfHwgaHRtbC5pbmNsdWRlcyhcIjx0aXRsZT5FcnJvcjwvdGl0bGU+XCIpIHx8ICghaHRtbCAmJiBNWV9QQUdFID09IDEpKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgJ+WFiOeCueatpOiOt+WPlkNvb2tpZeWQju+8jOWGjeWbnuWIsOatpOmhtemdoicuZm9udGNvbG9yKCcjRkYwMEZGJykuYmlnKCksXG4gICAgICAgIHVybDogJCgnJykubGF6eVJ1bGUoKHRydWVfdXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXCJmZXRjaFwiLCBcIjFcIik7ICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVfdXJsICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9LHRydWVfdXJsKSxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgJ+eCueatpOWIt+aWsCcuZm9udGNvbG9yKCcjRkYwMDAwJykuYmlnKCksXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpXG4gICAgICAgICAgICByZXR1cm4gXCJoaWtlcjovL2VtcHR5XCJcbiAgICAgICAgfSksXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIH1cbiAgICB9LCAvKntcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgJzx1PijnqLPlrpor5b+rKeacuuWcujwvdT4nLmZvbnRjb2xvcignI0ZGNjY5OScpLmJpZygpLmJpZygpICsgJ1xcbnh45YWDL1Qv5pyI77yM5pyA5L2OeOWFgy9UJy5mb250Y29sb3IoJ2dyZWVuJykuYmlnKCksXG4gICAgICAgIGRlc2M6ICfpppnmuK/oioLngrnlj6/ku6Xov4dzdXBqYXYuY29t6aqM6K+BJyxcbiAgICAgICAgdXJsOiBcIlwiLFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlLFxuICAgICAgICB9XG4gICAgfSovKTtcbn1cblxudmFyIGdldFJhbmdlQ29sb3JzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICcjJyArICgnMDAwMDAnICsgKE1hdGgucmFuZG9tKCkgKiAweDEwMDAwMDAgPDwgMCkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTYpO1xufVxuXG5pZiAodHJ1ZV91cmwgPT0gXCJodHRwczovL3N1cGphdi5jb20vemgvXCIpIHtcbiAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XG4gICAgICAgICQucmVxdWlyZShcImhvbWVcIilcbiAgICB9XG59IGVsc2UgaWYgKC90YWd8bWFrZXJ8Y2FzdC8udGVzdCh0cnVlX3VybCkpIHtcbiAgICAkLnJlcXVpcmUoXCJ0YWJzXCIpXG59IGVsc2Uge1xuICAgICQucmVxdWlyZShcImxpc3RcIikoKVxufVxuLy9zZXRQcmVSZXN1bHQocmVzKVxuc2V0UmVzdWx0KGQpIiwic2VhcmNoX3VybCI6Imh0dHBzOi8vc3VwamF2LmNvbS96aC9wYWdlL2Z5cGFnZT9zPSoqIiwiZ3JvdXAiOiLikaHnlJ8iLCJzZWFyY2hGaW5kIjoianM6XG5NWV9VUkwgPSBNWV9VUkwucmVwbGFjZSgvZmMyLT9wcHYtP3xmYzItPy9pLFwiXCIpXG4kLnJlcXVpcmUoXCJ5aVwiKSIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6Ii8qXG5pZiAoIWdldE15VmFyKCdoZWFkZXJzJykpe1xucHV0TXlWYXIoJ2hlYWRlcnMnLHtoZWFkZXJzOntcIkNvb2tpZVwiOlwiY2ZfY2xlYXJhbmNlPTNTd24uSXpjYVE3Z2VwY01Ib0trbU0zYnNfSjI2eC5CV1c2SEJUbFV0ejAtMTcwNTI2NjAzMC0wLTItYTY1OWIzOGMuNjM5Yzg1ZGMuZjE1OGVjNmMtMTYwLjIuMTcwNTI2NjAzMFwiLFwiVXNlci1BZ2VudFwiOlwiTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNl80XzEgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzE2LjQgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjFcIixcIlJlZmVyZXJcIjpcImh0dHBzOi8vc3VwamF2LmNvbS9cIn19KVxufVxuKi9cbnZhciDmm7TmlrDpl7TpmpQgPSAxXG5sZXQgdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpLnRvU3RyaW5nKClcblxuZnVuY3Rpb24gY291bnRDcm9zc2VkRGF5cyhkYXRlMSwgZGF0ZTIpIHtcbiAgICB2YXIgZDEgPSBuZXcgRGF0ZShOdW1iZXIoZGF0ZTEpKTtcbiAgICB2YXIgZDIgPSBuZXcgRGF0ZShOdW1iZXIoZGF0ZTIpKTtcbiAgICAvLyDojrflj5blrozmlbTml6XmnJ/pg6jliIZcbiAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZShkMS5nZXRGdWxsWWVhcigpLCBkMS5nZXRNb250aCgpLCBkMS5nZXREYXRlKCkpO1xuICAgIHZhciBlbmQgPSBuZXcgRGF0ZShkMi5nZXRGdWxsWWVhcigpLCBkMi5nZXRNb250aCgpLCBkMi5nZXREYXRlKCkpO1xuICAgIC8vIOWIpOaWreW8gOWni+WSjOe7k+adn+aXpeacn1xuICAgIHZhciB0aW1lRGlmZmVyZW5jZSA9IE1hdGguYWJzKGVuZCAtIHN0YXJ0KTtcbiAgICAvLyDorqHnrpfot6jotornmoTlpKnmlbBcbiAgICB2YXIgY3Jvc3NlZERheXMgPSBNYXRoLmNlaWwodGltZURpZmZlcmVuY2UgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICAgIHJldHVybiBjcm9zc2VkRGF5czsgLy8g6L+U5Zue6Leo6LaK55qE5aSp5pWwXG59XG52YXIg6Leo6LaK5aSp5pWwID0gY291bnRDcm9zc2VkRGF5cyh0aW1lLCBnZXRJdGVtKCd0aW1lJywgbmV3IERhdGUoKS5nZXRUaW1lKCkpKVxuLy9sb2co6Leo6LaK5aSp5pWwKVxuaWYgKOi3qOi2iuWkqeaVsCA+PSDmm7TmlrDpl7TpmpQpIHtcbiAgICBzZXRJdGVtKCd0aW1lJywgdGltZSk7XG5cbiAgICBmdW5jdGlvbiBsb2NhbHZlcnNpb24oKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gTVlfUlVMRS52ZXJzaW9uXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuICd1bmRlcmZpbmQnXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdGV2ZXJzaW9uKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZXZhbChmZXRjaChiYXNlNjREZWNvZGUoJ2FIUjBjSE02THk5eVlYY3VaMmwwYUhWaWRYTmxjbU52Ym5SbGJuUXVZMjl0TDBGd2IyeHNiMUpwYjI4dlVpOXRZWE4wWlhJdlNHbHJaWEl2JykgKyBNWV9SVUxFLnRpdGxlKSlcbiAgICAgICAgICAgIHJldHVybiBBcG9sbG8udmVyc2lvblxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiAndW5kZXJmaW5kJ1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICgocmVtb3RldmVyc2lvbigpICE9ICd1bmRlcmZpbmQnICYmIHJlbW90ZXZlcnNpb24oKSAhPSBsb2NhbHZlcnNpb24oKSkgfHwgbG9jYWx2ZXJzaW9uKCkgPT0gJ3VuZGVyZmluZCcpIHtcbiAgICAgICAgc2hvd0xvYWRpbmcoJ+ajgOa1i+WIsOaWsOeJiOacrO+8jOabtOaWsOS4rS4uLicpXG4gICAgICAgIC8vamF2YS5sYW5nLlRocmVhZC5zbGVlcCgzMDAwKTtcbiAgICAgICAgaGlkZUxvYWRpbmcoKVxuICAgICAgICBldmFsKGZldGNoKGJhc2U2NERlY29kZSgnYUhSMGNITTZMeTl5WVhjdVoybDBhSFZpZFhObGNtTnZiblJsYm5RdVkyOXRMMEZ3YjJ4c2IxSnBiMjh2VWk5dFlYTjBaWEl2U0dsclpYSXYnKSArIE1ZX1JVTEUudGl0bGUpKTtcbiAgICAgICAgY29uZmlybSh7XG4gICAgICAgICAgICB0aXRsZTogJ+abtOaWsOaPkOekuicsXG4gICAgICAgICAgICBjb250ZW50OiAn5qOA5rWL5Yiw5bCP56iL5bqP54mI5pys5L2O5LqO5pyN5Yqh5Zmo54mI5pys77yM5piv5ZCm56uL5Y2z5pu05pawJyxcbiAgICAgICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoKHVwKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlUGFzdGUodXApO1xuICAgICAgICAgICAgfSwgQXBvbGxvLnVwZGF0ZSksXG4gICAgICAgICAgICBjYW5jZWw6ICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxufSIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliIbnsbtcIixcInBhdGhcIjpcImNhdGVnb3J5XCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSAoKSA9PiB7XFxuICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJzb3J0XFxcIik7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJwYWdpXFxcIik7XFxuICAgICAgICAvLyBjbGVhck15VmFyKFxcXCJ1cmxcXFwiKTsgICBcXG4gICAgfSkpO1xcbiAgICAvKmFkZExpc3RlbmVyKFxcXCJvblJlZnJlc2hcXFwiLCAoKSA9PiB7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJzb3J0XFxcIik7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJwYWdpXFxcIik7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJ1cmxcXFwiKTtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInRhYlxcXCIpO1xcbiAgICB9KTsqL1xcblxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS95aXlhbicsIHt9KSkucnVsZSk7XFxuXFxuICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLwn5SNXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKHIpID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LnRyaW0oKSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2tleXdvcmQnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VhcmNoVXJsID0gXFxcImh0dHBzOi8vc3VwamF2LmNvbS96aC8/cz1cXFwiICsgaW5wdXQucmVwbGFjZSgvZmMyLT9wcHYtP3xmYzItPy9pLCBcXFwiXFxcIilcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBzZWFyY2hVcmwpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgY29uZmlybTovLyR7cn0uanM6J2hpa2VyOi8vZW1wdHknYFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgZGF5X3NheSksXFxuICAgICAgICAgICAgZGVzYzogZGF5X3NheSwgLy8gJ+abvue7j+ayp+a1t+mavuS4uuawtCzpmaTljbTlt6vlsbHkuI3mmK/kupEnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoJ2tleXdvcmQnLCAnJykgfHwgXFxcIlxcXCIsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgdGFicyA9IHBkZmEoaHRtbCwgXFxcIi5uYXYmJmxpOm5vdChsaTpoYXMoLnN1Yi1tZW51KSk6bm90KDpoYXMoYVt0YXJnZXRdKSk6bm90KDpoYXMoYVt0aXRsZV0pKVxcXCIpO1xcbiAgICAgICAgZm9yICh2YXIgaSBpbiB0YWJzKSB7XFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gcGRmaCh0YWJzW2ldLCAnVGV4dCcpXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKCd0YWInLCAnMCcpID09IGkgPyBnZXRIZWFkKHRpdGxlLCAnI0ZGNjY5OScpIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgIHVybDogcGQodGFic1tpXSwgJ2EmJmhyZWYnKSArICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCd0YWInLCBpKVxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInVybFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0sIGkpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBpZiAoaSA9PSA1KSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgXFxuICAgIHZhciBwYWdpbmF0aW9uID0gcGRmYShodG1sLCBcXFwiLnBhZ2luYXRpb24mJmxpOm5vdCgucHJldi1wYWdlKTpub3QoLm5leHQtcGFnZSlcXFwiKTtcXG4gICAgdmFyIGN1cnJlbnR1ID0gcGRmaChodG1sLCBcXFwibGlua1tocmVmbGFuZz16aF0mJmhyZWZcXFwiKVxcblxcbiAgICB2YXIgZmlyc3R1ID0gY3VycmVudHUgPyBjdXJyZW50dS5yZXBsYWNlKC9cXFxcL3BhZ2VcXFxcL1xcXFxkKy8sIFxcXCJcXFwiKSA6IFxcXCJodHRwczovL3N1cGphdi5jb20vemgvXFxcIlxcbiAgICB2YXIgYWN0aXZlID0gY3VycmVudHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKSA/IGN1cnJlbnR1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLylbMV0gOiAxO1xcbiAgICB2YXIgbGFzdHUgPSBwZGZoKHBhZ2luYXRpb24ucG9wKCksIFxcXCJhJiZocmVmXFxcIikgfHwgY3VycmVudHVcXG4gICAgdmFyIGxhc3RwID0gbGFzdHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKSA/IGxhc3R1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLylbMV0gOiAxO1xcblxcbiAgICBpZiAoIWN1cnJlbnR1LmluY2x1ZGVzKFxcXCJwb3B1bGFyXFxcIikpIHtcXG4gICAgICAgIGxhc3R1ID0gbGFzdHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiL3BhZ2UvXFxcIiArIChsYXN0cCAtIDApKVxcbiAgICAgICAgbGFzdHAgPSBsYXN0cCAtIDBcXG4gICAgfVxcblxcbiAgICB2YXIgbG9uZ0NsaWNrID0gW3tcXG4gICAgICAgIHRpdGxlOiBcXFwi6aaW6aG1XFxcIixcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKChmaXJzdHUpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwgZmlyc3R1KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0sIGZpcnN0dSksXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5LiK6aG1XFxcIixcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKChhY3RpdmUsIGN1cnJlbnR1KSA9PiB7XFxuICAgICAgICAgICAgaWYgKGFjdGl2ZSA+IDEpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGp1bXB1ID0gY3VycmVudHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiL3BhZ2UvXFxcIiArIChwYXJzZUludChhY3RpdmUpIC0gMSkpXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBqdW1wdSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCBhY3RpdmUsIGN1cnJlbnR1KSxcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCLnrKxcXFwiICsgYWN0aXZlICsgXFxcIumhtVxcXCIsXFxuICAgICAgICBqczogXFxcIlxcXCIsXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwi6Lez6L2sXFxcIixcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKChsYXN0dSwgbGFzdHApID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gJCgnJywgJ+mZpOmmlumhteWSjOWwvumhteS5i+WklueahOmhteeggScpLmlucHV0KChsYXN0dSwgbGFzdHApID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KGlucHV0KSA+IDAgJiYgcGFyc2VJbnQoaW5wdXQpIDw9IHBhcnNlSW50KGxhc3RwKSAmJiBwYXJzZUludChpbnB1dCkgJSAxID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBqdW1wdSA9IGxhc3R1LnJlcGxhY2UoL1xcXFwvcGFnZVxcXFwvXFxcXGQrLywgXFxcIi9wYWdlL1xcXCIgKyBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBqdW1wdSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+i+k+WFpeato+ehrueahOmhteeggVxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIGxhc3R1LCBsYXN0cClcXG4gICAgICAgIH0sbGFzdHUsIGxhc3RwKSxcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCLlsL7pobVcXFwiICsgbGFzdHAsXFxuICAgICAgICBqczogJC50b1N0cmluZygobGFzdHAsIGxhc3R1KSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcInVybFxcXCIsIGxhc3R1KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0sIGxhc3RwLCBsYXN0dSksXFxuICAgIH1dO1xcblxcbiAgICBwdXRNeVZhcihcXFwibG9uZ0NsaWNrXFxcIixsb25nQ2xpY2spXFxuXFxuICAgIHZhciBwYWdpO1xcbiAgICBpZiAoYWN0aXZlID09IDEpIHtcXG4gICAgICAgIHBhZ2kgPSAwXFxuICAgIH0gZWxzZSBpZiAoYWN0aXZlID09IGxhc3RwKSB7XFxuICAgICAgICBwYWdpID0gMlxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcGFnaSA9IDFcXG4gICAgfVxcbiAgICB2YXIgdGl0bGUgPSBbXFxcIummllxcXCIsIFxcXCLot7PpobU6XFxcIiArIGFjdGl2ZSwgXFxcIuWwvjpcXFwiICsgbGFzdHBdXFxuICAgIHZhciB1cmxzID0gW2ZpcnN0dSwgTVlfVVJMLCBsYXN0dV1cXG4gICAgaWYgKGN1cnJlbnR1ICE9PSBcXFwiaHR0cHM6Ly9zdXBqYXYuY29tL3poL1xcXCIgJiYgdHJ1ZV91cmwgIT0gXFxcIuayoeacieS4i+S4gOmhteWTpvCfmJFcXFwiKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBqIGluIHRpdGxlKSB7XFxuICAgICAgICAgICAgdmFyIHVybCA9IHVybHNbal0gKyAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBqKVxcblxcbiAgICAgICAgICAgIGlmIChqID09IDEpIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gJCgnJywgJ+mZpOmmlumhteWSjOWwvumhteS5i+WklueahOmhteeggScpLmlucHV0KChsYXN0dSwgbGFzdHApID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChpbnB1dCkgPiAwICYmIHBhcnNlSW50KGlucHV0KSA8PSBwYXJzZUludChsYXN0cCkgJiYgcGFyc2VJbnQoaW5wdXQpICUgMSA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGp1bXB1ID0gbGFzdHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiL3BhZ2UvXFxcIiArIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBqdW1wdSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7fovpPlhaXmraPnoa7nmoTpobXnoIFcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIGxhc3R1LCBsYXN0cClcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBhZ2kgPT0gaiA/IGdldEhlYWQodGl0bGVbal0sICcjRkY2Njk5JykgOiB0aXRsZVtqXSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgdmFyIHNvdHQgPSBjdXJyZW50dS5yZXBsYWNlKC8uKj8oPSguKil8JCkvLCBcXFwiJDJcXFwiKVxcbiAgICAgICAgdmFyIHNvcnQgPSBwZGZhKGh0bWwsIFxcXCIuc29ydCYmYVxcXCIpO1xcbiAgICAgICAgc290dCA9IHNvdHQgPT09IFxcXCJcXFwiID8gcGRmaChzb3J0WzBdLCAnVGV4dCcpLnRvTG93ZXJDYXNlKCkgOiBzb3R0O1xcbiAgICAgICAgZm9yICh2YXIgaiBpbiBzb3J0KSB7XFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gcGRmaChzb3J0W2pdLCAnVGV4dCcpXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHNvdHQgPT0gdGl0bGUudG9Mb3dlckNhc2UoKSA/IGdldEhlYWQodGl0bGUsICcjRkY2Njk5JykgOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgdXJsOiBwZChzb3J0W2pdLCAnYSYmaHJlZicpICsgJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInVybFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0sIGopXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWIl+ihqFwiLFwicGF0aFwiOlwibGlzdFwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gKCkgPT4ge1xcbiAgICB2YXIgbGlzdCA9IHBkZmEoaHRtbCwgXFxcIi5wb3N0cyYmLnBvc3RcXFwiKTtcXG4gICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgdmFyIGltZyA9IHBkKGl0ZW0sIFxcXCJpbWcmJmRhdGEtb3JpZ2luYWxcXFwiKTtcXG4gICAgICAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSwgXFxcImEmJnRpdGxlXFxcIikucmVwbGFjZShcXFwiW+S4reaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HqPCfh7NcXFwiKS5yZXBsYWNlKFxcXCJbXFxcXHU2NWUwXFxcXHU3ODAx56C06KejXVxcXCIsIFxcXCLwn5SlXFxcIikucmVwbGFjZShcXFwiWzRLXVxcXCIsIFxcXCLwn5alXFxcIikucmVwbGFjZShcXFwiW+iLseaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HuvCfh7hcXFwiKS5yZXBsYWNlKFxcXCLjgJBTdXBKQVYt54us5a6244CRXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogcGRmaChpdGVtLCBcXFwiLm1ldGEtLS5kYXRlJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgaW1nOiBpbWcucmVwbGFjZSgvKGh0dHAuKj9cXFxcLig/OmpwZ3x3ZWJwfHBuZ3xqcGVnKSkuKi8sIFxcXCIkMVxcXCIpLFxcbiAgICAgICAgICAgIHVybDogcGRmaChpdGVtLCBcXFwiYSYmaHJlZlxcXCIpICsgJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiZXJcXFwiKScsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBkZXNjOiBwZGZoKGl0ZW0sIFxcXCIubWV0YS0tLmRhdGUmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgcGFnZVRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBKU09OLnBhcnNlKGdldE15VmFyKFxcXCJsb25nQ2xpY2tcXFwiLFxcXCJcXFwiKSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0pXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5qCH562+XCIsXCJwYXRoXCI6XCJ0YWJzXCIsXCJydWxlXCI6XCJ2YXIgbGlzdHMgPSBwZGZhKGh0bWwsIFxcXCIuY2F0ZWdvcnlzJiYuY2hpbGRcXFwiKTtcXG5saXN0cy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgcGRmaChpdGVtLCBcXFwiYSYmVGV4dFxcXCIpLmZvbnRjb2xvcihnZXRSYW5nZUNvbG9ycygpKSxcXG4gICAgICAgIHVybDogcGRmaChpdGVtLCBcXFwiYSYmaHJlZlxcXCIpICsgJyMjZnlwYWdlQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJ5aVxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbG9uZ0NsaWNrOiBKU09OLnBhcnNlKGdldE15VmFyKFxcXCJsb25nQ2xpY2tcXFwiLCBcXFwiXFxcIikpXFxuICAgICAgICB9XFxuICAgIH0pXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpppbpobVcIixcInBhdGhcIjpcImhvbWVcIixcInJ1bGVcIjpcInZhciB0YWIxID0gcGRmYShodG1sLCAnYm9keSYmLnJlY29tbWVuZCcpO1xcbnZhciB0YWIyID0gcGRmYShodG1sLCAnYm9keSYmLmNvbnRlbnRzJiYuY29udGVudCcpO1xcbnZhciB0YWJzID0gdGFiMS5jb25jYXQodGFiMilcXG52YXIgY29udHMgPSB0YWJzXFxuXFxuZm9yICh2YXIgaSA9IDA7IGkgPCBjb250cy5sZW5ndGg7IGkrKykge1xcbiAgICB2YXIgbGlzdCA9IHBkZmEoY29udHNbaV0sICcucG9zdHMmJi5wb3N0Jyk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJzxtaWRkbGU+PGZvbnQgY29sb3I9I0ZGQTUwMD4nICsgcGRmaCh0YWJzW2ldLCAnLmFyY2hpdmUtdGl0bGUmJlRleHQnKS5yZXBsYWNlKFxcXCIrIE1vcmVcXFwiLCBcXFwiXFxcIikgKyAnPC9mb250PjwvbWlkZGxlPicsXFxuICAgICAgICBkZXNjOiAoaSA9PSAwID8gXFxcIumVv+aMieWKn+iDvVxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXCIgOiBcXFwiXFxcIikgKyAnPG1pZGRsZT48Zm9udCBjb2xvcj1yZWQ+K1xcXFx0XFxcXHRcXFxcdFxcXFx0ICDwnZCM8J2QqPCdkKvwnZCePC9mb250PjwvbWlkZGxlPicsXFxuICAgICAgICBpbWc6IFxcXCJodHRwczovL2ltZy52aW51YS5jbi9pbWFnZXMvSUllblgucG5nXFxcIixcXG4gICAgICAgIHVybDogcGRmaCh0YWJzW2ldLCAnYSYmaHJlZicpLnJlcGxhY2UoXFxcImNvbS9wb3B1bGFyXFxcIixcXFwiY29tL3poL3BvcHVsYXJcXFwiKSArICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCd0YWInLCBpICsgMSlcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICB9LCBpKSwgLy8nIyNmeXBhZ2VAcnVsZT1qczokLnJlcXVpcmUoXFxcInlpXFxcIiknLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgbG9uZ0NsaWNrOiBpID09IDAgPyBbe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+ivu+WPlua6kOeggem7mOiupOaWueW8jycsXFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJmZXRjaFxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XSA6IFxcXCJcXFwiXFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgIHZhciBpbWcgPSBpID09IDAgPyBwZChsaXN0W2pdLCAnaW1nJiZzcmMnKSA6IHBkKGxpc3Rbal0sICdpbWcmJmRhdGEtb3JpZ2luYWwnKTtcXG4gICAgICAgIHZhciB0aXRsZSA9IHBkZmgobGlzdFtqXSwgJ2EmJnRpdGxlJykucmVwbGFjZShcXFwiW+S4reaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HqPCfh7NcXFwiKS5yZXBsYWNlKFxcXCJbXFxcXHU2NWUwXFxcXHU3ODAx56C06KejXVxcXCIsIFxcXCLwn5SlXFxcIikucmVwbGFjZShcXFwiWzRLXVxcXCIsIFxcXCLwn5alXFxcIikucmVwbGFjZShcXFwiW+iLseaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HuvCfh7hcXFwiKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6IHBkZmgobGlzdFtqXSwgJy5tZXRhLS0uZGF0ZSYmVGV4dCcpLFxcbiAgICAgICAgICAgIGltZzogaW1nLnJlcGxhY2UoLyhodHRwLio/XFxcXC4oPzpqcGd8d2VicHxwbmd8anBlZykpLiovLCBcXFwiJDFcXFwiKSxcXG4gICAgICAgICAgICB1cmw6IHBkKGxpc3Rbal0sICdhJiZocmVmJykgKyAnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJlclxcXCIpJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgobGlzdFtqXSwgJy5tZXRhLS0uZGF0ZSYmVGV4dCcpLFxcbiAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IHRpdGxlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuXFxuZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnScgKyBcXFwi5oiR5piv5pyJ5bqV57q/55qEXFxcIi5mb250Y29sb3IoXFxcImdyZXlcXFwiKVxcbiAgICAgICAgICAgICAgICAuc21hbGwoKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuIDnuqdcIixcInBhdGhcIjpcInlpXCIsXCJydWxlXCI6XCJqczpcXG4gICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInlzb3J0XFxcIik7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJ5dXJsXFxcIik7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJuZXh0UGFnXFxcIik7XFxuICAgIH0pKTtcXG52YXIgZCA9IFtdXFxuTVlfVVJMID0gZ2V0TXlWYXIoXFxcInl1cmxcXFwiLCBNWV9VUkwucmVwbGFjZSgvIyNcXFxcZCsvLCBcXFwiXFxcIikpO1xcbmxldCBuZXh0UGFnID0gZ2V0TXlWYXIoXFxcIm5leHRQYWdcXFwiLCBcXFwiXFxcIik7XFxuaWYgKG5leHRQYWcgJiYgTVlfUEFHRSA+IDEpIHtcXG4gICAgTVlfVVJMID0gbmV4dFBhZztcXG59IGVsc2UgaWYgKE1ZX1BBR0UgPiAxKSB7XFxuICAgIE1ZX1VSTCA9IFxcXCLmsqHmnInkuIvkuIDpobXlk6bwn5iRXFxcIlxcbn1cXG4vL3ZhciBodG1sID0gZmV0Y2hDb2RlQnlXZWJWaWV3KE1ZX1VSTClcXG4vL3ZhciBodG1sID0gZmV0Y2goTVlfVVJMKVxcblxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2ZldGNoJywge30pKVxcbiAgICAucnVsZSk7XFxudmFyIGh0bWwgPSBTdXBmZXRjaChNWV9VUkwpXFxuXFxudHJ5IHtcXG4gICAgdmFyIG5leHRVcmxsID0gcGQoaHRtbCwgXFxcIi5wYWdpbmF0aW9uJiYuYWN0aXZlK2xpJiZhJiZocmVmXFxcIik7XFxuICAgIHB1dE15VmFyKFxcXCJuZXh0UGFnXFxcIiwgbmV4dFVybGwpO1xcbn0gY2F0Y2ggKGUpIHtcXG4gICAgY2xlYXJNeVZhcihcXFwibmV4dFBhZ1xcXCIpO1xcbiAgICAvLyB0b2FzdChcXFwi5aW95YOP5rKh5pyJ5LiL5LiA6aG15LqG77yBXFxcIik7XFxufVxcbmxvZyhNWV9VUkwpXFxuXFxuLy9sb2coXFxcIuS4i+S4gOmhtSAg77yaXFxcIituZXh0UGFnKVxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUsIGNvbG9yKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIGNvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxuXFxuaWYgKE1ZX1RZUEUgIT0gXFxcInNlYXJjaFxcXCIpIHtcXG4gICAgdmFyIHBhZ2luYXRpb24gPSBwZGZhKGh0bWwsIFxcXCIucGFnaW5hdGlvbiYmbGk6bm90KC5wcmV2LXBhZ2UpOm5vdCgubmV4dC1wYWdlKVxcXCIpO1xcbiAgICB2YXIgY3VycmVudHUgPSBwZGZoKGh0bWwsIFxcXCJsaW5rW2hyZWZsYW5nPXpoXSYmaHJlZlxcXCIpXFxuXFxuICAgIHZhciBmaXJzdHUgPSBNWV9VUkwucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiXFxcIilcXG4gICAgdmFyIGFjdGl2ZSA9IGN1cnJlbnR1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLykgPyBjdXJyZW50dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pWzFdIDogMTtcXG4gICAgdmFyIGxhc3R1ID0gcGRmaChwYWdpbmF0aW9uLnBvcCgpLCBcXFwiYSYmaHJlZlxcXCIpIHx8IE1ZX1VSTFxcbiAgICB2YXIgbGFzdHAgPSBsYXN0dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pID8gbGFzdHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKVsxXSA6IDE7XFxuXFxuICAgIHZhciBsb25nQ2xpY2sgPSBbe1xcbiAgICAgICAgdGl0bGU6IFxcXCLpppbpobVcXFwiLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKGZpcnN0dSkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5dXJsXFxcIiwgZmlyc3R1KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0sIGZpcnN0dSksXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5LiK6aG1XFxcIixcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKChhY3RpdmUsIGN1cnJlbnR1KSA9PiB7XFxuICAgICAgICAgICAgaWYgKGFjdGl2ZSA+IDEpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGp1bXB1ID0gY3VycmVudHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiL3BhZ2UvXFxcIiArIChwYXJzZUludChhY3RpdmUpIC0gMSkpXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5dXJsXFxcIiwganVtcHUpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwgYWN0aXZlLCBjdXJyZW50dSksXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwi56ysXFxcIiArIGFjdGl2ZSArIFxcXCLpobVcXFwiLFxcbiAgICAgICAganM6IFxcXCJcXFwiLFxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIui3s+i9rFxcXCIsXFxuICAgICAgICBqczogJC50b1N0cmluZygobGFzdHUsIGxhc3RwKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoJycsICfpmaTpppbpobXlkozlsL7pobXkuYvlpJbnmoTpobXnoIEnKS5pbnB1dCgobGFzdHUsIGxhc3RwKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChpbnB1dCkgPiAwICYmIHBhcnNlSW50KGlucHV0KSA8PSBwYXJzZUludChsYXN0cCkgJiYgcGFyc2VJbnQoaW5wdXQpICUgMSA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIganVtcHUgPSBsYXN0dS5yZXBsYWNlKC9cXFxcL3BhZ2VcXFxcL1xcXFxkKy8sIFxcXCIvcGFnZS9cXFwiICsgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwieXVybFxcXCIsIGp1bXB1KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6K+36L6T5YWl5q2j56Gu55qE6aG156CBXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgbGFzdHUsIGxhc3RwKVxcbiAgICAgICAgfSwgbGFzdHUsIGxhc3RwKSxcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCLlsL7pobVcXFwiICsgbGFzdHAsXFxuICAgICAgICBqczogJC50b1N0cmluZygobGFzdHAsIGxhc3R1KSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcInl1cmxcXFwiLCBsYXN0dSk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9LCBsYXN0cCwgbGFzdHUpLFxcbiAgICB9XTtcXG5cXG4gICAgdmFyIHBhZ2k7XFxuICAgIGlmIChhY3RpdmUgPT0gMSkge1xcbiAgICAgICAgcGFnaSA9IDBcXG4gICAgfSBlbHNlIGlmIChhY3RpdmUgPT0gbGFzdHApIHtcXG4gICAgICAgIHBhZ2kgPSAyXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBwYWdpID0gMVxcbiAgICB9XFxuICAgIHZhciB0aXRsZSA9IFtcXFwi6aaWXFxcIiwgXFxcIui3s+mhtTpcXFwiICsgYWN0aXZlLCBcXFwi5bC+6aG1OlxcXCIgKyBsYXN0cF1cXG4gICAgdmFyIHVybHMgPSBbZmlyc3R1LCBNWV9VUkwsIGxhc3R1XVxcbiAgICBpZiAoY3VycmVudHUgIT09IFxcXCJodHRwczovL3N1cGphdi5jb20vemgvXFxcIiAmJiBNWV9VUkwgIT0gXFxcIuayoeacieS4i+S4gOmhteWTpvCfmJFcXFwiKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBqIGluIHRpdGxlKSB7XFxuICAgICAgICAgICAgdmFyIHVybCA9IHVybHNbal0gKyAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5dXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgailcXG5cXG4gICAgICAgICAgICBpZiAoaiA9PSAxKSB7XFxuICAgICAgICAgICAgICAgIHVybCA9ICQoJycsICfpmaTpppbpobXlkozlsL7pobXkuYvlpJbnmoTpobXnoIEnKS5pbnB1dCgobGFzdHUsIGxhc3RwKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQoaW5wdXQpID4gMCAmJiBwYXJzZUludChpbnB1dCkgPD0gcGFyc2VJbnQobGFzdHApICYmIHBhcnNlSW50KGlucHV0KSAlIDEgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqdW1wdSA9IGxhc3R1LnJlcGxhY2UoL1xcXFwvcGFnZVxcXFwvXFxcXGQrLywgXFxcIi9wYWdlL1xcXCIgKyBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwieXVybFxcXCIsIGp1bXB1KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+i+k+WFpeato+ehrueahOmhteeggVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwgbGFzdHUsIGxhc3RwKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGFnaSA9PSBqID8gZ2V0SGVhZCh0aXRsZVtqXSwgJyNGRjY2OTknKSA6IHRpdGxlW2pdLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG5cXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIHZhciBzb3J0ID0gcGRmYShodG1sLCBcXFwiLnNvcnQmJmFcXFwiKTtcXG4gICAgZm9yICh2YXIgaiBpbiBzb3J0KSB7XFxuICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKHNvcnRbal0sICdUZXh0JylcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKCd5c29ydCcsICcwJykgPT0gaiA/IGdldEhlYWQodGl0bGUsICcjRkY2Njk5JykgOiB0aXRsZSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgIHVybDogcGQoc29ydFtqXSwgJ2EmJmhyZWYnKSArICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3lzb3J0JywgailcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInl1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBqKVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cXG5cXG52YXIgbGlzdCA9IHBkZmEoaHRtbCwgXFxcIi5wb3N0cyYmLnBvc3RcXFwiKTtcXG5saXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgIHZhciBpbWcgPSBwZChpdGVtLCBcXFwiaW1nJiZkYXRhLW9yaWdpbmFsXFxcIik7XFxuICAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSwgXFxcImEmJnRpdGxlXFxcIikucmVwbGFjZShcXFwiW+S4reaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HqPCfh7NcXFwiKS5yZXBsYWNlKFxcXCJbXFxcXHU2NWUwXFxcXHU3ODAx56C06KejXVxcXCIsIFxcXCLwn5SlXFxcIikucmVwbGFjZShcXFwiWzRLXVxcXCIsIFxcXCLwn5alXFxcIikucmVwbGFjZShcXFwiW+iLseaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HuvCfh7hcXFwiKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgIGRlc2M6IHBkZmgoaXRlbSwgXFxcIi5tZXRhLS0uZGF0ZSYmVGV4dFxcXCIpLFxcbiAgICAgICAgaW1nOiBpbWcucmVwbGFjZSgvKGh0dHAuKj9cXFxcLig/OmpwZ3x3ZWJwfHBuZ3xqcGVnKSkuKi8sIFxcXCIkMVxcXCIpLFxcbiAgICAgICAgdXJsOiBwZGZoKGl0ZW0sIFxcXCJhJiZocmVmXFxcIikgKyAnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJlclxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMlxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGRlc2M6IHBkZmgoaXRlbSwgXFxcIi5tZXRhLS0uZGF0ZSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgbG9uZ0NsaWNrOiBsb25nQ2xpY2tcXG4gICAgICAgIH1cXG4gICAgfSlcXG59KVxcblxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnXCIsXCJwYXRoXCI6XCJlclwiLFwicnVsZVwiOlwianM6IHZhciBkID0gW11cXG5NWV9VUkwgPSBNWV9VUkwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eSMjJywgJycpO1xcbmxvZyhNWV9VUkwpXFxuLy92YXIgaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldyhNWV9VUkwpO1xcbi8vdmFyIGh0bWwgPSBmZXRjaChNWV9VUkwpXFxuXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvZmV0Y2gnLCB7fSkpXFxuICAgIC5ydWxlKTtcXG52YXIgaHRtbCA9IFN1cGZldGNoKE1ZX1VSTClcXG5cXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9sYXp5Jywge30pKVxcbiAgICAucnVsZSk7XFxuXFxudmFyIHRpdGxlID0gcGRmaChodG1sLCAnLmFyY2hpdmUtdGl0bGUmJlRleHQnKVxcbiAgICAucmVwbGFjZShcXFwiW+S4reaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HqPCfh7NcXFwiKVxcbiAgICAucmVwbGFjZShcXFwiW1xcXFx1NjVlMFxcXFx1NzgwMeegtOino11cXFwiLCBcXFwi8J+UpVxcXCIpXFxuICAgIC5yZXBsYWNlKFxcXCJbNEtdXFxcIiwgXFxcIvCflqVcXFwiKVxcbiAgICAucmVwbGFjZShcXFwiW+iLseaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HuvCfh7hcXFwiKTtcXG52YXIg6K+G5Yir56CBID0gdGl0bGUucmVwbGFjZShcXFwiRkMyUFBWIFxcXCIsXFxcIlxcXCIpLm1hdGNoKC9cXFxcdysoPzotfF8pXFxcXHcrfFxcXFx3K1xcXFxkXFxcXHcrfFxcXFx3K1xcXFxzXFxcXHcrLylbMF1cXG5pZiAodGl0bGUgIT09IG51bGwpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPHNtYWxsPjxmb250IGNvbG9yPSNlNTdhMWE+JyArIHRpdGxlICsgJzwvZm9udD48L3NtYWxsPicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIiArICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHRpdGxlKSA9PiB7XFxudGl0bGUgPSB0aXRsZS5yZXBsYWNlKC9GQzJQUFZcXFxcc1xcXFxkKy8sXFxcIlxcXCIpLnJlcGxhY2UoL1xcXFx3Ky1cXFxcZCtcXFxccy8sXFxcIlxcXCIpXFxuLy/liqjmgIHliLfmlrBcXG52YXIgZGVzYyA9IGZpbmRJdGVtKCd0cmFuc2Rlc2MnKS5kZXNjXFxuICAgICAgICAgIGlmKCFkZXNjKXtcXG4gICAgdmFyIHRyYW5zbGF0ZXMgPSAkLnJlcXVpcmUoXFxcInRyYW5zXFxcIikudHJhbnNsYXRlKHRpdGxlKVxcbiAgICAgIHVwZGF0ZUl0ZW0oXFxcInRyYW5zZGVzY1xcXCIse1xcbiAgICAgICAgICBkZXNjOiAn4oCc4oCc4oCd4oCdJyt0cmFuc2xhdGVzLmZvbnRjb2xvcihcXFwicmVkXFxcIiksXFxufSlcXG59ZWxzZXtcXG51cGRhdGVJdGVtKFxcXCJ0cmFuc2Rlc2NcXFwiLHtcXG4gICAgICAgICAgZGVzYzogJycsXFxufSlcXG59ICAgICAgIFxcbiAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiICAgICAgXFxuLyogICAgICAgXFxuICAgICAgICAgIHZhciB0cmFuc2xhdGVzID0gJC5yZXF1aXJlKFxcXCJ0cmFuc1xcXCIpLnRyYW5zbGF0ZSh0aXRsZSkgICBcXG4gICAgICAgICAgcmV0dXJuIFxcXCJjb25maXJtOi8vXFxcIiArIHRyYW5zbGF0ZXMgKyBcXFwiLmpzOidoaWtlcjovL2VtcHR5JyBcXFwiICAgKi9cXG4gICAgICAgICAgICAgICAgfSx0aXRsZSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIGlkOiAndHJhbnNkZXNjJyxcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe3RpdGxlOiAn572R6aG1JywganM6ICQudG9TdHJpbmcoKCk9PnsgXFxuICAgICAgICByZXR1cm4gXFxcIndlYjovL1xcXCIgKyBNWV9VUkxcXG4gICAgICAgICAgICAgICAgICAgICAgIH0pfSx7dGl0bGU6ICflpI3liLYnLCBqczogJC50b1N0cmluZygodGl0bGUpPT57IFxcbiAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8vXFxcIiArIHRpdGxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgfSx0aXRsZSl9LHt0aXRsZTogJ+eZvuW6pue/u+ivkScsIGpzOiAkLnRvU3RyaW5nKCh0aXRsZSk9PnsgXFxuICAgICAgICByZXR1cm4gXFxcIng1Oi8vaHR0cHM6Ly9mYW55aS5iYWlkdS5jb20vI2pwL3poL1xcXCIgKyB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgfSx0aXRsZSl9LHt0aXRsZTogJ0RlZXBs57+76K+RJywganM6ICQudG9TdHJpbmcoKHRpdGxlKT0+eyBcXG4gICAgICAgIHJldHVybiBcXFwieDU6Ly9odHRwczovL3d3dy5kZWVwbC5jb20vemgvdHJhbnNsYXRvci1tb2JpbGUjamEvemgvXFxcIiArIHRpdGxlXFxuICAgICAgICAgICAgICAgICAgICAgICB9LHRpdGxlKX0se3RpdGxlOiAn6LC35q2M57+76K+RJywganM6ICQudG9TdHJpbmcoKHRpdGxlKT0+eyBcXG4gICAgICAgIHJldHVybiBcXFwieDU6Ly9odHRwczovL3RyYW5zbGF0ZS5nb29nbGUuY29tLz9obD16aC1DTiZzbD1qYSZ0bD16aC1DTiZ0ZXh0PVxcXCIgKyB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgfSx0aXRsZSl9XVxcbn1cXG4gICAgfSlcXG59XFxuXFxudmFyIGltZyA9IHBkKGh0bWwsIFxcXCIucG9zdC1tZXRhJiZpbWcmJnNyY1xcXCIpO1xcbmlmIChpbWcgIT09IG51bGwpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgdXJsOiBNWV9VUkwsLy9cXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5aSN5Yi25Zu+54mHJyxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGltZykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8vXFxcIiArIGltZ1xcbiAgICAgICAgICAgICAgICB9LCBpbWcpXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aJk+W8gOWbvueJhycsXFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChpbWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbWdcXG4gICAgICAgICAgICAgICAgfSwgaW1nKVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3lm77niYcnLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaW1nKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIGltZ1xcbiAgICAgICAgICAgICAgICB9LCBpbWcpXFxuICAgICAgICAgICAgfV1cXG4gICAgICAgIH1cXG4gICAgfSk7XFxufVxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPHNwYW4gc3R5bGU9XFxcImNvbG9yOiBcXFwiPjxzbWFsbD7wnZCS8J2QhPCdkJHwnZCV8J2QhPCdkJEg77ya5bey5bGP6JS9SlBB562J5peg55So57q/6Lev44CCX19fXycrTVlfUEFSQU1TLmRlc2MrJzwvc21hbGw+PC9zcGFuPicsXFxuICAgIHVybDog6K+G5Yir56CBICsgJCgnJylcXG4gICAgICAgIC5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS95aT9ydWxlPfCdkJLwnZCu8J2QqfCdkKPwnZCa8J2QryZ1cmw9XFxcIiArIFxcXCJodHRwczovL3N1cGphdi5jb20vemgvP3M9XFxcIiArIGlucHV0XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsICAgICAgICBcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5cXG4vL+W3sue7j+ino+aekOeahOe6v+i3r1xcbnZhciBQbGF5bGluZWQgPSBbXFxcIlRWXFxcIiwgXFxcIkZTVFxcXCIsIFxcXCJTVFxcXCIsIFxcXCJWT0VcXFwiLCBcXFwiRFNcXFwiLCBcXFwiU3RyZWFtdGFwZVxcXCIsIFxcXCJWVFVcXFwiXVxcblxcbmxldCBidG5zID0gcGRmYShodG1sLCAnLmJ0bnMmJi5idG5zdCcpXFxuaWYgKGJ0bnMubGVuZ3RoID09IDEpIHtcXG4gICAgYnRuc3QgPSBwZGZhKGJ0bnNbMF0sICdib2R5JiZkaXYnKVxcbn0gZWxzZSB7XFxuICAgIGJ0bnN0ID0gcGRmYShidG5zWzFdLCAnYm9keSYmLmNkLXNlcnZlcicpXFxufVxcbmJ0bnN0LmZvckVhY2goKGNkcywgaW5kZXgpID0+IHtcXG4gICAgbGV0IHNlcnZlciA9IHBkZmEoY2RzLCAnYm9keSYmYTpub3QoOm1hdGNoZXMoSlBBfEpTfFNTQnxOU3xOaW5qYVN0cmVhbXxNRHxHb1VubGltaXRlZHxNaXhkcm9wKSknKTsgLy/lsY/olL3nur/ot6/wn4iy8J+IsvCfiLLwn4iy8J+IsvCfiLJcXG4gICAgaWYgKGJ0bnN0Lmxlbmd0aCA+IDEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgXFxcIkNEXFxcIi5ib2xkKClcXG4gICAgICAgICAgICAgICAgLmZvbnRjb2xvcihcXFwiIzhBMkJFMlxcXCIpICsgKGluZGV4ICsgMSlcXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcXG4gICAgICAgICAgICAgICAgLmJvbGQoKVxcbiAgICAgICAgICAgICAgICAuZm9udGNvbG9yKFxcXCIjOEEyQkUyXFxcIikgKyBcXFwiOlxcXCIuZm9udGNvbG9yKFxcXCIjOEEyQkUyXFxcIiksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHNlcnZlci5mb3JFYWNoKChsaXN0LCBpbmRleHgpID0+IHtcXG4gICAgICAgIHZhciB0aXRsZSA9IHBkZmgobGlzdCwgJ1RleHQnKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFBsYXlsaW5lZC5pbmRleE9mKHRpdGxlKSA+PSAwID8gJ1xcXFx0XFxcXHRcXFxcdOKAnOKAnOKAneKAnScgKyB0aXRsZS5ib2xkKClcXG4gICAgICAgICAgICAgICAgLmZvbnRjb2xvcihcXFwiIzI3NzY4NlxcXCIpICsgJ1xcXFx0XFxcXHRcXFxcdCc6ICfigJzigJzigJ3igJ0nICsgdGl0bGUuYm9sZCgpLFxcbiAgICAgICAgICAgIHVybDogcGRmaChsaXN0LCAnYSYmZGF0YS1saW5rJykgKyBsYXp5LFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgY2xzOiBcXFwicGxheWxpc3QgXFxcIiArIGluZGV4ICsgaW5kZXh4XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgIH0pXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuKAmOKAmFxcXCIr6K+G5Yir56CBK1xcXCLigJnigJlcXFwiLFxcbiAgICB1cmw6IOivhuWIq+eggSArICQoJycpXFxuICAgICAgICAubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UveWo/cnVsZT3wnZCJ8J2QmvCdkK/wnZCD8J2QgSZ1cmw9XFxcIiArIGdldFB1YmxpY0l0ZW0oJ2phdmRiMCcsICdodHRwczovL2phdmRiLmNvbScpICsgXFxcIi9zZWFyY2jvvJ/vvJ9mPWFsbO+8hu+8hnBhZ2U9ZnlwYWdl77yG77yGcT1cXFwiICsgaW5wdXRcXG4gICAgfSksLy9cXFwiaHR0cHM6Ly90Lm1lL1N1cGphdmNvbSNpZ25vcmVWaWRlbz10cnVlI1xcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgcGFnZVRpdGxlOiDor4bliKvnoIEsXFxuICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWkjeWItuivhuWIq+eggVxcXCIsXFxuICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCjor4bliKvnoIEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyDor4bliKvnoIFcXG4gICAgICAgICAgICAgICAgfSwg6K+G5Yir56CBKVxcbiAgICAgICAgICAgICAgICAgfV1cXG4gICAgfVxcbn0pXFxuXFxubGV0IGluZm8gPSBwZGZhKGh0bWwsICcucG9zdC1tZXRhJiYuY2F0cyYmYScpO1xcbmluZm8uZm9yRWFjaCgobGlzdCwgaW5kZXgpID0+IHtcXG4gICAgdmFyIHRpdGxlID0gcGRmaChsaXN0LCAnVGV4dCcpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGluZGV4ID09IDEgPyAn4oCY4oCYTWFrZXI64oCZ4oCZJyArIHRpdGxlIDogKGluZGV4ID4gMSA/ICfigJjigJhDYXN0OuKAmeKAmScgKyB0aXRsZSA6IHRpdGxlKSxcXG4gICAgICAgIHVybDogcGQobGlzdCwgJ2EmJmhyZWYnKSArICcjI2Z5cGFnZUBydWxlPWpzOiQucmVxdWlyZShcXFwieWlcXFwiKScsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IHRpdGxlLFxcbmxvbmdDbGljazogaW5kZXggPiAxID8gW3t0aXRsZTogJ+WkjeWItua8lOWRmCcsIGpzOiAkLnRvU3RyaW5nKCh0aXRsZSk9PnsgcmV0dXJuIFxcXCJjb3B5Oi8vXFxcIiArIHRpdGxlO30sdGl0bGUpfSx7dGl0bGU6ICfosLfmrYzmkJzntKInLCBqczogJC50b1N0cmluZygodGl0bGUpPT57IHJldHVybiBcXFwiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT1cXFwiICsgdGl0bGUgK1xcXCIg6Lqr6auYXFxcIjt9LHRpdGxlKX0se3RpdGxlOiAn55m+5bqm5pCc57SiJywganM6ICQudG9TdHJpbmcoKHRpdGxlKT0+eyByZXR1cm4gXFxcImh0dHBzOi8vd3d3LmJhaWR1LmNvbS9zP3dkPVxcXCIgKyB0aXRsZTt9LHRpdGxlKX0se3RpdGxlOiAn56OB5Yqb5pCc5ryU5ZGYJywganM6ICQudG9TdHJpbmcoKHRpdGxlKT0+eyBcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL3NvdT9ydWxlPeejgeWKm+WQmy7nroAmcD1meXBhZ2Umc2VhcmNoVGVybXM9XFxcIiArIHRpdGxlXFxuICAgICAgICAgICAgICAgICAgICAgICB9LHRpdGxlKX1dIDogXFxcIlxcXCJcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGlmIChpbmRleCA9PSAxKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICB9KVxcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5sZXQgdGFncyA9IHBkZmEoaHRtbCwgJy5wb3N0LW1ldGEmJi50YWdzJiZhJyk7XFxudGFncy5mb3JFYWNoKChsaXN0LCBpbmRleCkgPT4ge1xcbiAgICB2YXIgdGl0bGUgPSBwZGZoKGxpc3QsICdUZXh0Jyk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAnOKAnCcgKyB0aXRsZSArICfigJ3igJ0nLFxcbiAgICAgICAgdXJsOiBwZChsaXN0LCAnYSYmaHJlZicpICsgJyMjZnlwYWdlQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJ5aVxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IHRpdGxlXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn0pXFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cXFwiY29sb3I6ICNGRkZGRkY7XFxcIj7wnZCY8J2QqPCdkK4g8J2QjPCdkJrwnZCyIPCdkIDwnZCl8J2QrPCdkKgg8J2Qi/CdkKLwnZCk8J2Qnjwvc3Bhbj4nLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlLFxcbiAgICAgfVxcbn0pO1xcblxcbnZhciBsaXN0ID0gcGRmYShodG1sLCBcXFwiLnBvc3RzJiYucG9zdFxcXCIpO1xcbmxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgdmFyIGltZyA9IHBkKGl0ZW0sIFxcXCJpbWcmJmRhdGEtb3JpZ2luYWxcXFwiKTtcXG4gICAgdmFyIHRpdGxlID0gcGRmaChpdGVtLCBcXFwiYSYmdGl0bGVcXFwiKVxcbiAgICAgICAgLnJlcGxhY2UoXFxcIlvkuK3mloflrZfluZVdXFxcIiwgXFxcIvCfh6jwn4ezXFxcIilcXG4gICAgICAgIC5yZXBsYWNlKFxcXCJbXFxcXHU2NWUwXFxcXHU3ODAx56C06KejXVxcXCIsIFxcXCLwn5SlXFxcIilcXG4gICAgICAgIC5yZXBsYWNlKFxcXCJbNEtdXFxcIiwgXFxcIvCflqVcXFwiKVxcbiAgICAgICAgLnJlcGxhY2UoXFxcIlvoi7HmloflrZfluZVdXFxcIiwgXFxcIvCfh7rwn4e4XFxcIik7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICBkZXNjOiBwZGZoKGl0ZW0sIFxcXCIubWV0YS0tLmRhdGUmJlRleHRcXFwiKSxcXG4gICAgICAgIGltZzogaW1nLnJlcGxhY2UoLyhodHRwLio/XFxcXC4oPzpqcGd8d2VicHxwbmd8anBlZykpLiovLCBcXFwiJDFcXFwiKSxcXG4gICAgICAgIHVybDogcGRmaChpdGVtLCBcXFwiYSYmaHJlZlxcXCIpICsgJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiZXJcXFwiKScsXFxuICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzJcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6IHBkZmgoaXRlbSwgXFxcIi5tZXRhLS0uZGF0ZSYmVGV4dFxcXCIpXFxuICAgICAgICB9XFxuICAgIH0pXFxufSlcXG5kLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdJyArIFxcXCLmiJHmmK/mnInlupXnur/nmoRcXFwiLmZvbnRjb2xvcihcXFwiZ3JleVxcXCIpXFxuICAgICAgICAgICAgICAgIC5zbWFsbCgpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0pXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLop6PmnpBcIixcInBhdGhcIjpcImxhenlcIixcInJ1bGVcIjpcInZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAvL0pQQeetiee6v+i3r+aMguS6huW3suWxj+iUve+8jOmcgOimgeWPr+WOu+S6jOe6p+aBouWkjVxcbiAgICAvL1RW57q/6LevLy9GU1Tnur/ot68vL1ZPRee6v+i3ry8vU1Tnur/ot68vL0RT57q/6LevLy9WVFXnur/ot69cXG4gICAgLy8g5a6a5LmJ5LiA5Liq6Kej5p6Q5YiG6L6o546H55qE5Ye95pWwXFxuICAgIGZ1bmN0aW9uIGdldFJlc29sdXRpb24obmFtZSkge1xcbiAgICAgICAgdmFyIG1hdGNoID0gbmFtZS5tYXRjaCgvKFxcXFxkKykvKTsgLy8g5o+Q5Y+W6ZmN57qn5YiG6L6o546HXFxuICAgICAgICByZXR1cm4gbWF0Y2ggPyBwYXJzZUludChtYXRjaFsxXSwgMTApIDogMDsgLy8g5aaC5p6c5rKh5pyJ5Yy56YWN5YiZ6L+U5ZueMFxcbiAgICB9XFxuICAgIHZhciBpZCA9IGlucHV0LnNwbGl0KCcnKS5yZXZlcnNlKCkuam9pbignJyk7XFxuICAgIHZhciB1cmwgPSBgaHR0cHM6Ly9sazEuc3VwcmVtZWphdi5jb20vc3VwamF2LnBocD9jPSR7aWR9YDtcXG4gICAgdmFyIHJlZmVyZXIgPSBgaHR0cHM6Ly9sazEuc3VwcmVtZWphdi5jb20vc3VwamF2LnBocD9sPSR7aW5wdXR9YDtcXG4gICAgdmFyIGxvY2F0aW9uID0gSlNPTi5wYXJzZShmZXRjaCh1cmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IHJlZmVyZXIsXFxuICAgICAgICB9LFxcbiAgICAgICAgb25seUhlYWRlcnM6IHRydWVcXG4gICAgfSkpLnVybC5yZXBsYWNlKC8jLiovLCBcXFwiXFxcIilcXG4gICAgbG9nKFxcXCLnur/ot6/lnLDlnYDvvJpcXFwiICsgbG9jYXRpb24pXFxuXFxuICAgIGlmIChsb2NhdGlvbi5pbmNsdWRlcyhcXFwiZW10dXJib3ZpZFxcXCIpKSB7XFxuXFxuICAgICAgICAvL+KRoFRW57q/6LevXFxuICAgICAgICB2YXIgZG9tYWluID0gZ2V0SG9tZShsb2NhdGlvbilcXG4gICAgICAgIHZhciBwYXRoID0gZmV0Y2gobG9jYXRpb24sIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogcmVmZXJlclxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgdmFyIHBsYXlVcmwgPSBwYXRoLm1hdGNoKC9odHRwcz8uKj9cXFxcLm0zdTgvKVswXTtcXG4gICAgICAgIHZhciBncm91cF9xdWFsaXR5ID0gZmV0Y2gocGxheVVybCwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiBsb2NhdGlvblxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgLy9sb2coZ3JvdXBfcXVhbGl0eSlcXG4gICAgICAgIGhnaGVzdF9xdWFsaXR5ID0gZ3JvdXBfcXVhbGl0eS5tYXRjaCgvXlteI1xcXFxzXSskL2dtKS5tYXAodiA9PiB2LmluY2x1ZGVzKFxcXCJodHRwXFxcIikgPyB2ICsgXFxcIiNpc1ZpZGVvPXRydWUjXFxcIiA6IHBsYXlVcmwucmVwbGFjZSgvW15cXFxcL10rJC8sIHYpKVxcbiAgICAgICAgLy9sb2coaGdoZXN0X3F1YWxpdHkpXFxuICAgICAgICBuYW1lX3F1YWxpdHkgPSBncm91cF9xdWFsaXR5Lm1hdGNoKC9SRVNPTFVUSU9OPS4qP1xcXFwsL2dtKS5tYXAobiA9PiBuLnJlcGxhY2UoL1JFU09MVVRJT049fFxcXFwsL2csIFxcXCJcXFwiKSlcXG5cXG4gICAgICAgIC8vIOaMieWIhui+qOeOh+mZjeW6j+aOkuW6jyDliIbovqjnjocg5pWw57uE77yM5bm25ZCM5pe26LCD5pW0IGhnaGVzdF9xdWFsaXR5XFxuICAgICAgICB2YXIgc29ydGVkRGF0YSA9IG5hbWVfcXVhbGl0eS5tYXAoKG5hbWUsIGluZGV4KSA9PiAoe1xcbiAgICAgICAgICAgICAgICBuYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6IGhnaGVzdF9xdWFsaXR5W2luZGV4XVxcbiAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBnZXRSZXNvbHV0aW9uKGIubmFtZSkgLSBnZXRSZXNvbHV0aW9uKGEubmFtZSkpO1xcbiAgICAgICAgLy8g5YiG5byA5o6S5bqP5ZCO55qEIG5hbWVzIOWSjCB1cmxzIOaVsOe7hFxcbiAgICAgICAgdmFyIHNvcnRlZE5hbWVzID0gc29ydGVkRGF0YS5tYXAoaXRlbSA9PiBpdGVtLm5hbWUpO1xcbiAgICAgICAgdmFyIHNvcnRlZFVybHMgPSBzb3J0ZWREYXRhLm1hcChpdGVtID0+IGl0ZW0udXJsKTtcXG4gICAgICAgIGxldCBwbGF5bGlzdCA9IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBuYW1lczogc29ydGVkTmFtZXMsXFxuICAgICAgICAgICAgdXJsczogc29ydGVkVXJscyxcXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgQXJyYXkoaGdoZXN0X3F1YWxpdHkubGVuZ3RoKS5maWxsKHtcXG4gICAgICAgICAgICAgICAgUmVmZXJlcjogXFxcIlxcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gcGxheWxpc3Q7XFxuXFxuICAgIH0gZWxzZSBpZiAoL2NpbmR5ZXllZmluYWx8ZmMyc3RyZWFtfG1pY2hhZWxhcHBseXNvbWUvLnRlc3QobG9jYXRpb24pKSB7XFxuXFxuICAgICAgICAvL+KRoUZTVOe6v+i3r1xcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZlcmVyXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgc2NyaXB0ID0gcGRmaChodG1sLCBcXFwiYm9keT5zY3JpcHQmJkh0bWxcXFwiKS5yZXBsYWNlKFxcXCJldmFsXFxcIiwgXFxcIlxcXCIpXFxuICAgICAgICB2YXIgdWFzID0gZXZhbChzY3JpcHQpXFxuICAgICAgICB2YXIgcGxheVVybCA9IHVhcy5tYXRjaCgvXFxcIihodHRwcz8uKm0zdTguKj8pXFxcIi8pWzFdXFxuICAgICAgICB2YXIgZ3JvdXBfcXVhbGl0eSA9IGZldGNoKHBsYXlVcmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogbG9jYXRpb25cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIGdyb3VwX3F1YWxpdHkgPSBncm91cF9xdWFsaXR5LnNwbGl0KFxcXCJcXFxcblxcXFxuXFxcIilbMF1cXG4gICAgICAgIC8vIGxvZyhncm91cF9xdWFsaXR5KVxcbiAgICAgICAgaGdoZXN0X3F1YWxpdHkgPSBncm91cF9xdWFsaXR5Lm1hdGNoKC9eW14jXFxcXHNdKyQvZ20pLm1hcCh2ID0+IHYuaW5jbHVkZXMoXFxcImh0dHBcXFwiKSA/IHYgKyBcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiIDogcGxheVVybC5yZXBsYWNlKC9bXlxcXFwvXSskLywgdikpXFxuICAgICAgICAvL2xvZyhoZ2hlc3RfcXVhbGl0eSlcXG4gICAgICAgIG5hbWVfcXVhbGl0eSA9IGdyb3VwX3F1YWxpdHkubWF0Y2goL1JFU09MVVRJT049Lio/XFxcXCwvZ20pLm1hcChuID0+IG4ucmVwbGFjZSgvUkVTT0xVVElPTj18XFxcXCwvZywgXFxcIlxcXCIpKVxcblxcbiAgICAgICAgLy8g5oyJ5YiG6L6o546H6ZmN5bqP5o6S5bqPIOWIhui+qOeOhyDmlbDnu4TvvIzlubblkIzml7bosIPmlbQgaGdoZXN0X3F1YWxpdHlcXG4gICAgICAgIHZhciBzb3J0ZWREYXRhID0gbmFtZV9xdWFsaXR5Lm1hcCgobmFtZSwgaW5kZXgpID0+ICh7XFxuICAgICAgICAgICAgICAgIG5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogaGdoZXN0X3F1YWxpdHlbaW5kZXhdXFxuICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGdldFJlc29sdXRpb24oYi5uYW1lKSAtIGdldFJlc29sdXRpb24oYS5uYW1lKSk7XFxuICAgICAgICAvLyDliIblvIDmjpLluo/lkI7nmoQgbmFtZXMg5ZKMIHVybHMg5pWw57uEXFxuICAgICAgICB2YXIgc29ydGVkTmFtZXMgPSBzb3J0ZWREYXRhLm1hcChpdGVtID0+IGl0ZW0ubmFtZSk7XFxuICAgICAgICB2YXIgc29ydGVkVXJscyA9IHNvcnRlZERhdGEubWFwKGl0ZW0gPT4gaXRlbS51cmwpO1xcbiAgICAgICAgbGV0IHBsYXlsaXN0ID0gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIG5hbWVzOiBzb3J0ZWROYW1lcyxcXG4gICAgICAgICAgICB1cmxzOiBzb3J0ZWRVcmxzLFxcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBBcnJheShoZ2hlc3RfcXVhbGl0eS5sZW5ndGgpLmZpbGwoe1xcbiAgICAgICAgICAgICAgICBSZWZlcmVyOiBcXFwiXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBwbGF5bGlzdDtcXG5cXG4gICAgfSBlbHNlIGlmIChsb2NhdGlvbi5pbmNsdWRlcyhcXFwic3RyZWFtdGFwZVxcXCIpKSB7XFxuXFxuICAgICAgICAvL+KRolNU57q/6LevXFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKGxvY2F0aW9uLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZmVyZXJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgdmFyIHBhdHRlcm4gPSBodG1sLm1hdGNoKC9cXFxcKCcjKC4qKSdcXFxcKS8pWzFdXFxuICAgICAgICB2YXIgc3JjID0gXFxcInZhciBzcmNsaW5rID0gXFxcIiArIGh0bWwubWF0Y2gobmV3IFJlZ0V4cChcXFwiJ1xcXCIgKyBwYXR0ZXJuICsgXFxcIi4qPz0oW147XSspXFxcIikpWzFdXFxuICAgICAgICBldmFsKHNyYylcXG4gICAgICAgIHZhciBsaW5rID0gXFxcImh0dHBzOlxcXCIgKyBzcmNsaW5rICsgXFxcIiZzdHJlYW09MVxcXCJcXG4gICAgICAgIHZhciBwbGF5VXJsID0gSlNPTi5wYXJzZShmZXRjaChsaW5rLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IGxvY2F0aW9uLFxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgb25seUhlYWRlcnM6IHRydWVcXG4gICAgICAgIH0pKS51cmxcXG4gICAgICAgIHJldHVybiBwbGF5VXJsICsgXFxcIjt7UmVmZXJlckBcXFwiICsgbG9jYXRpb24gKyBcXFwifVxcXCJcXG5cXG4gICAgfSBlbHNlIGlmICgvdm9lLy50ZXN0KGxvY2F0aW9uKSkge1xcblxcbiAgICAgICAgLy/ikaVWT0Xnur/ot69cXG4gICAgICAgIHZhciBodG1sID0gZmV0Y2gobG9jYXRpb24sIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogcmVmZXJlclxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgLy9sb2coaHRtbClcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIGN1cnJlbnRVcmwgPSBodG1sLm1hdGNoKC9ocmVmID0uKj8oaHR0cHM/W14nXFxcIl0rKS8pWzFdO1xcbiAgICAgICAgICAgIC8vbG9nKGN1cnJlbnRVcmwpXFxuICAgICAgICB9IGNhdGNoIHtcXG4gICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v572R6aG16ZO+5o6l5aSx5pWI5peg5rOV6K6/6Zeu44CCJztcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIGZ1bmN0aW9uIHg1cnVsZShqaWV4dXJsLCBzcmN1cmwpIHtcXG4gICAgICAgICAgICBzaG93TG9hZGluZyhcXFwi572R6aG16K6/6Zeu5qOA57Si5Lit77yM6K+356iN5YCZLi4uXFxcIik7XFxuICAgICAgICAgICAgdmFyIHZpZGVvID0gJ3dlYlJ1bGU6Ly8nICsgamlleHVybCArICdAJyArICQudG9TdHJpbmcoKHNyY3VybCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXFxcInNwaW5cXFwiKS5sZW5ndGggIT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXFxcInNwaW5cXFwiKVswXS5jbGljaygpXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdXJscyA9IF9nZXRVcmxzKCk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93Ll9fY291bnQgPT0gbnVsbCB8fCB3aW5kb3cuX19jb3VudCA9PSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX19jb3VudCA9IDBcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuX19jb3VudCA+PSAyMykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcmN1cmxcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fX2NvdW50ID0gd2luZG93Ll9fY291bnQgKyAxO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5fX2NvdW50ID4gMSAmJiB3aW5kb3cuX19jb3VudCA8PSAzICYmIHdpbmRvdy5fX2NvdW50ICE9IG51bGwgJiYgd2luZG93Ll9fY291bnQgIT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKS5pbm5lclRleHQuc2VhcmNoKC/op6blj5HkuobpmLLnm5fpk7585pyq5o6I5p2DfOaOpeWPo+mYsuebl3zor7fliLDkuLvnq5nop4LnnIsvKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNyY3VybCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJhLmxvZygn5bCd6K+V6Lez6Ziy55uX6aqM6K+B5LiAJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZiYS5sb2coJ+Wwneivlei3s+mYsuebl+mqjOivgeS6jCcpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHNyY3VybFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93Ll9fY291bnQgPiAzICYmIHdpbmRvdy5fX2NvdW50ICE9IG51bGwgJiYgd2luZG93Ll9fY291bnQgIT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybHMubGVuZ3RoIDwgMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYmEuaGlkZUxvYWRpbmcoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ajgOe0ouWksei0pe+8jOWPr+iDvemTvuaOpeaXoOazleiuv+mXruOAgic7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1cmxzLmxlbmd0aCA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZiYS5sb2coJ+WwneivleebtOmTvuS4jkpTT07op6PmnpAnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybHNbMF0ubWF0Y2goL2R5Y2RuXFxcXC10b3NcXFxcLnBzdGF0cHxcXFxcLm0zdTh8XFxcXC5tcDR8XFxcXC5mbHZ8bmV0ZWFzZVxcXFwuY29tfHZpZGVvX21wNHx0eXBlXFxcXD1tM3U4fHB0XFxcXD1tM3U4fFxcXFwvdmlkZW9cXFxcL3Rvc1xcXFwvLykgJiYgIXVybHNbMF0ubWF0Y2goL1xcXFwuaHRtbHxtM3U4XFxcXC50dnxtM3U4XFxcXC5wd3xcXFxcJm5leHR8YWNcXFxcPWRtfFxcXFw9aHR0cHxodHRwc1xcXFw6XFxcXC9cXFxcL1tcXFxcZF1cXFxcLm0zdTh8XFxcXD91cmxcXFxcPVxcXFwvbTN1OC8pKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Z5X2JyaWRnZV9hcHAubG9nKHVybHNbMF0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsc1swXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJhLmxvZygn5pel5b+X5qOA57Si56ysJyArIHdpbmRvdy5fX2NvdW50ICsgJ+asoScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHVybHMpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmxzW2ldLm1hdGNoKC9keWNkblxcXFwtdG9zXFxcXC5wc3RhdHB8XFxcXC5tM3U4fFxcXFwubXA0fFxcXFwuZmx2fG5ldGVhc2VcXFxcLmNvbXx2aWRlb19tcDR8dHlwZVxcXFw9bTN1OHxwdFxcXFw9bTN1OHxcXFxcL3ZpZGVvXFxcXC90b3NcXFxcLy8pICYmICF1cmxzW2ldLm1hdGNoKC9cXFxcLmh0bWx8bTN1OFxcXFwudHZ8bTN1OFxcXFwucHd8XFxcXCZuZXh0fGFjXFxcXD1kbXxcXFxcPWh0dHB8aHR0cHNcXFxcOlxcXFwvXFxcXC9bXFxcXGRdXFxcXC5tM3U4fFxcXFw/dXJsXFxcXD1cXFxcL20zdTh8XFxcXC5jc3N8XFxcXC5qc1xcXFw/LykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Z5X2JyaWRnZV9hcHAubG9nKHVybHNbaV0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZ5X2JyaWRnZV9hcHAuZ2V0SGVhZGVyVXJsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmeV9icmlkZ2VfYXBwLmdldEhlYWRlclVybCh1cmxzW2ldKS5yZXBsYWNlKFxcXCI7e1xcXCIsIFxcXCIjaWdub3JlSW1nPXRydWUjI2lzVmlkZW89dHJ1ZSM7e1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzW2ldICsgJyNpc1ZpZGVvPXRydWUjJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAvL2VuZCBmb3IgaVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgc3JjdXJsKTtcXG4gICAgICAgICAgICByZXR1cm4gdmlkZW9cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHJldHVybiB4NXJ1bGUoY3VycmVudFVybCwgY3VycmVudFVybCk7XFxuICAgICAgICAvL3JldHVybiBwbGF5VXJsICsgXFxcIjt7UmVmZXJlckBcXFwiICsgY3VycmVudFVybCArIFxcXCJ9XFxcIlxcblxcbiAgICB9IGVsc2UgaWYgKC9kMDAwMGR8ZG9vZHxkczJwbGF5fHZpZHBseXxkbzdnb3xhbGwzZG8vLnRlc3QobG9jYXRpb24pKSB7XFxuXFxuICAgICAgICAvL+KRo0RT57q/6LevXFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldyhsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZlcmVyXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciBwYXNzX21kNSA9IGdldEhvbWUobG9jYXRpb24pICsgaHRtbC5tYXRjaCgvXFxcXC9wYXNzX21kNVteXFxcIiddKy8pWzBdXFxuICAgICAgICB2YXIgdG9rZW4gPSBodG1sLm1hdGNoKC9jb29raWVJbmRleC4qP1xcXFwnKC4qPylcXFxcJy8pWzFdXFxuICAgICAgICB2YXIgZGF0YSA9IGZldGNoKHBhc3NfbWQ1LCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IGxvY2F0aW9uXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG5cXG4gICAgICAgIGZ1bmN0aW9uIG1ha2VQbGF5KHRva2VuKSB7XFxuICAgICAgICAgICAgZm9yICh2YXIgYSA9IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdCA9IFxcXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBuID0gdC5sZW5ndGgsXFxuICAgICAgICAgICAgICAgICAgICBvID0gMDsgMTAgPiBvOyBvKyspXFxuICAgICAgICAgICAgICAgIGEgKz0gdC5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbikpO1xcbiAgICAgICAgICAgIHJldHVybiBhICsgXFxcIj90b2tlbj1cXFwiICsgdG9rZW4gKyBcXFwiJmV4cGlyeT1cXFwiICsgRGF0ZS5ub3coKTtcXG4gICAgICAgIH07XFxuICAgICAgICB2YXIgcGxheVVybCA9IGRhdGEgKyBtYWtlUGxheSh0b2tlbilcXG4gICAgICAgIHJldHVybiBwbGF5VXJsICsgXFxcIiNpc1ZpZGVvPXRydWUjO3tSZWZlcmVyQFxcXCIgKyBsb2NhdGlvbiArIFxcXCJ9XFxcIlxcblxcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKFxcXCJ2dGJlLnRvXFxcIikpIHtcXG5cXG4gICAgICAgIC8v4pGkVlRV57q/6LevXFxuICAgICAgICBmdW5jdGlvbiBldmFsZGVjb2RlKHRleHQpIHtcXG4gICAgICAgICAgICB2YXIgY29kZSA9ICcnO1xcbiAgICAgICAgICAgIHZhciBzID0gdGV4dC5yZXBsYWNlKC9eZXZhbC8sICcnKVxcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgncmV0dXJuIHAnLCAnY29kZSs9cCcpXFxuICAgICAgICAgICAgZXZhbChzKTtcXG4gICAgICAgICAgICByZXR1cm4gY29kZTtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBob3N0UmVnZXggPSAodXJsKSA9PiB7XFxuICAgICAgICAgICAgdmFyIG1hdGNoID0gdXJsLm1hdGNoKC9eKD86aHR0cHM/OlxcXFwvXFxcXC8pPyg/Ond3d1xcXFwuKT8oW2EtekEtWjAtOS1dezEsNjN9XFxcXC4pK1thLXpBLVpdezIsNn0vaSk7XFxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMF0gOiB1cmw7XFxuICAgICAgICB9O1xcbiAgICAgICAgbGV0IGhvc3QgPSBob3N0UmVnZXgocmVmZXJlcilcXG4gICAgICAgIHZhciBodG1sID0gZmV0Y2gobG9jYXRpb24sIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFJlZmVyZXI6IGhvc3QsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciBpZnJhbWUgPSBwZGZhKGh0bWwsIFxcXCJpZnJhbWVcXFwiKTtcXG4gICAgICAgIGlmIChpZnJhbWUubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgIGh0bWwgPSBmZXRjaChwZGZoKGlmcmFtZVswXSwgXFxcImlmcmFtZSYmc3JjXFxcIiksIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgUmVmZXJlcjogaG9zdCxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgICAgICB2YXIgc2NyaXB0cyA9IHBkZmEoaHRtbCwgXFxcImJvZHkmJnNjcmlwdFxcXCIpO1xcbiAgICAgICAgbGV0IHNjcmlwdCA9IHNjcmlwdHMuZmlsdGVyKHggPT4geC5pbmNsdWRlcygnZXZhbCcpKS5tYXAobSA9PiBwZGZoKG0sIFxcXCJzY3JpcHQmJkh0bWxcXFwiKSlbMF07XFxuICAgICAgICBpZiAoc2NyaXB0ID09IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/ml6DmlbDmja4nXFxuICAgICAgICB9XFxuICAgICAgICBsZXQgbTN1OCA9IC9maWxlOlxcXCIoLio/KVxcXCIvZy5leGVjKGV2YWxkZWNvZGUoc2NyaXB0KSlbMV07XFxuICAgICAgICByZXR1cm4gbTN1ODtcXG5cXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGxvZyhcXFwi6Z2p5ZG95bCa5pyq5oiQ5YqfLOWQjOW/l+S7jemcgOWKquWKmyFcXFwiKVxcbiAgICAgICAgcmV0dXJuIFxcXCJjb25maXJtOi8v5ZKzLOacrOe6v+i3r+i/meS4quWcsOWdgOW5tuayoeacieino+aekO+8jOaXpeW/l+W3suaJk+WNsOWHuu+8jOaVrOivt+afpeeciy5qczonaGlrZXI6Ly9lbXB0eScgXFxcIlxcbiAgICB9XFxufSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue/u+ivkVwiLFwicGF0aFwiOlwidHJhbnNcIixcInJ1bGVcIjpcIiAgICAvL+e/u+ivkVxcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUodGV4dCkge1xcbiAgICAgICAgdmFyIHN3aXRjaHRyYW5zID0gZ2V0SXRlbSgnc3dpdGNodHJhbnMnLCAn5b2p5LqR5bCP6K+RJyk7XFxuICAgICAgICBpZiAoIHN3aXRjaHRyYW5zID09IHRydWUgfHwgc3dpdGNodHJhbnMgPT0gXFxcIuW9qeS6keWwj+ivkVxcXCIpIHtcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICB2YXIgdG8gPSAnemgnXFxuICAgICAgICAgICAgICAgIHZhciBmcm9tID0gJ2F1dG8nXFxuXFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluaXRfZGF0YShzb3VyY2VfbGFuZywgdGFyZ2V0X2xhbmcpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiAnJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3Q6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgb3NfdHlwZTogJ2lvcycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX2lkOiAnRjFGOTAyRjctMTc4MC00Qzg4LTg0OEQtNzFGMzVEODhBNjAyJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc190eXBlOiBzb3VyY2VfbGFuZyArICcyJyArIHRhcmdldF9sYW5nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhOiAndGV4dCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9pZDogNDI0MjM4MzM1LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6ICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Q6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0UmFuZG9tTnVtYmVyKCkge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFuZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk5OTk5KSArIDEwMDAwMFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJhbmQgKiAxMDAwXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgY29uc3QgcG9zdF9kYXRhID0gaW5pdF9kYXRhKGZyb20sIHRvKVxcbiAgICAgICAgICAgICAgICBwb3N0X2RhdGEuc291cmNlID0gdGV4dFxcbiAgICAgICAgICAgICAgICBwb3N0X2RhdGEucmVxdWVzdF9pZCA9IGdldFJhbmRvbU51bWJlcigpXFxuICAgICAgICAgICAgICAgIGxldCByZXMgPSBmZXRjaCgnaHR0cHM6Ly9pbnRlcnByZXRlci5jeWFwaS5jbi92MS90cmFuc2xhdG9yJywge1xcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICd4LWF1dGhvcml6YXRpb24nOiAndG9rZW4gc3NkajI3M2tzZGl3aTkyM2JzZDknLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyLWFnZW50JzogJ2NhaXl1bkludGVycHJldGVyLzUgQ0ZOZXR3b3JrLzE0MDQuMC41IERhcndpbi8yMi4zLjAnLFxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IHBvc3RfZGF0YSxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IEpTT04ucGFyc2UocmVzKVxcbiAgICAgICAgICAgICAgICAgICAgLnRhcmdldFxcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgXFxcIuOAkOKYge+4j+OAkVxcXCJcXG4gICAgICAgICAgICB9IGNhdGNoIHtcXG4gICAgICAgICAgICAgICAgbG9nKFxcXCLnv7vor5HlpLHotKXvvIzkvb/nlKjljp/mlodcXFwiKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2UgaWYgKHN3aXRjaHRyYW5zID09IFxcXCLlsI/niZvnv7vor5FcXFwiKSB7XFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IFxcXCJodHRwczovL2FwaS5uaXV0cmFucy5jb20vTml1VHJhbnNTZXJ2ZXIvdHJhbnNsYXRpb25cXFwiO1xcbiAgICAgICAgICAgICAgICB2YXIgYXBpID0gZ2V0SXRlbSgnYXBpJyk7XFxuICAgICAgICAgICAgICAgIGlmIChhcGkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0ICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmcgPSBcXFwiaHR0cHM6Ly90ZXN0Lm5pdXRyYW5zLmNvbS9OaXVUcmFuc1NlcnZlci9sYW5ndWFnZT9zcmNfdGV4dD1cXFwiICsgdGV4dCArIFxcXCImc291cmNlPXRleHRcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmcm9tID0gSlNPTi5wYXJzZShmZXRjaChsYW5nLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAwXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubGFuZ3VhZ2U7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBvc3QodXJsLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY190ZXh0OiB0ZXh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogZnJvbSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBcXFwiemhcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpa2V5OiBhcGksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEyMjNcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UocmVzdWx0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnRndF90ZXh0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLnRndF90ZXh0ICsgXFxcIuOAkPCfkK7jgJFcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCLnv7vor5HlpLHotKXvvIzkvb/nlKjljp/mlodcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhcXFwi57+76K+R5aSx6LSl77yM5Y6f5paH5Li656m6XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLpooTlpITnkIbor7floavlhpnnv7vor5FhcGlcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gY2F0Y2gge1xcbiAgICAgICAgICAgICAgICBsb2coXFxcIue/u+ivkeWksei0pe+8jOS9v+eUqOWOn+aWh1xcXCIpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgIH1cXG4gICAgfTtcXG5cXG4gICAgJC5leHBvcnRzLnRyYW5zbGF0ZSA9IHRyYW5zbGF0ZVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LiA6KiAXCIsXCJwYXRoXCI6XCJ5aXlhblwiLFwicnVsZVwiOlwiLy9hdXRob3I657KJ5aa5XFxuZnVuY3Rpb24gc2F2ZV9kYXlfc2F5X2NhY2hlKCkge1xcbiAgICBsZXQgZGF5X3NheV9jYWNoZSA9IHt9XFxuICAgIGxldCBkYXlfc2F5X2h0bWwgPSBmZXRjaCgnaHR0cHM6Ly92MS5oaXRva290by5jbicsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnVXNlci1BZ2VudCc6XFxuICAgICAgICAgICAgICAgICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTIyLjAuMC4wIFNhZmFyaS81MzcuMzYnLFxcbiAgICAgICAgfSxcXG4gICAgfSlcXG4gICAgZGF5X3NheV9odG1sID0gSlNPTi5wYXJzZShkYXlfc2F5X2h0bWwpXFxuICAgIGRheV9zYXlfY2FjaGVbJ2NvbnRlbnQnXSA9IGRheV9zYXlfaHRtbFsnaGl0b2tvdG8nXVxcbiAgICBkYXlfc2F5X2NhY2hlWyd0aW1lJ10gPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKVxcbiAgICBzdG9yYWdlMC5wdXRNeVZhcignZGF5c2F5JywgZGF5X3NheV9jYWNoZSlcXG4gICAgcmV0dXJuIGRheV9zYXlfaHRtbFsnaGl0b2tvdG8nXVxcbn1cXG5cXG4gICAgbGV0IGRheV9zYXkgPSAnJ1xcbiAgICB0cnkge1xcbiAgICAgICAgbGV0IGRheV9zYXlfY2FjaGUgPSB7fVxcbiAgICAgICAgbGV0IGRheV90aW1lID0gMFxcbiAgICAgICAgaWYgKHN0b3JhZ2UwLmdldE15VmFyKCdkYXlzYXknKSkge1xcbiAgICAgICAgICAgIGRheV9zYXlfY2FjaGUgPSBzdG9yYWdlMC5nZXRNeVZhcignZGF5c2F5Jywge30pXFxuICAgICAgICAgICAgZGF5X3RpbWUgPSBkYXlfc2F5X2NhY2hlWyd0aW1lJ11cXG4gICAgICAgICAgICBpZiAoTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCkgLSBkYXlfdGltZSA+PSAxMCkge1xcbiAgICAgICAgICAgICAgICBkYXlfc2F5ID0gc2F2ZV9kYXlfc2F5X2NhY2hlKClcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBkYXlfc2F5ID0gZGF5X3NheV9jYWNoZVsnY29udGVudCddXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBkYXlfc2F5ID0gc2F2ZV9kYXlfc2F5X2NhY2hlKClcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCB7XFxuICAgICAgICBkYXlfc2F5ID0gJydcXG4gICAgfVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5rqQ56CBXCIsXCJwYXRoXCI6XCJmZXRjaFwiLFwicnVsZVwiOlwiZnVuY3Rpb24gU3VwZmV0Y2godXJsKSB7XFxuICAgIHZhciBodG1sO1xcbiAgICBpZiAoZ2V0TXlWYXIoXFxcImZldGNoXFxcIiwgXFxcIjBcXFwiKSA9PSBcXFwiMFxcXCIpIHtcXG4gICAgICAgIGh0bWwgPSBodG1sID0gZmV0Y2godXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wKSdcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldyh1cmwpXFxuICAgIC8qaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldyh1cmwsIHtcXG4gICAgICAgICAgICAgICAgY2hlY2tKczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBvc3RzIC5wb3N0JykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29rID0gZmJhLmdldENvb2tpZSh3aW5kb3cubG9jYXRpb24uaHJlZik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZmJhLndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9BcG9sbG8vQ29va2llL3N1cGphdl9jb29raWUudHh0JywgY29rKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBvc3RzIC5wb3N0Jyk7XFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pOyAqL1xcbiAgICB9XFxuICAgIHJldHVybiBodG1sO1xcbn1cIn1dIiwiaWNvbiI6Imh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy96cndLNC53ZWJwIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment