Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥怪奇物语 第一季@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcImxhenlcIixcInBhdGhcIjpcImxhenlcIixcInJ1bGVcIjpcInZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKE1ZX0hPTUUpID0+IHtcXG4gICAgZXZhbChnZXRDcnlwdG9KUygpKVxcblxcbiAgICBmdW5jdGlvbiB2aWRlb3R5cGUodXJsLCB0eXBlKSB7XFxuICAgICAgICB2YXIgdHlwZSA9IHR5cGUgfHwgJ21wNCc7XFxuICAgICAgICBpZiAodXJsLmluZGV4T2YoXFxcIm0zdThcXFwiKSA+IDApIHtcXG4gICAgICAgICAgICB0aGV0eXBlID0gXFxcIm0zdThcXFwiXFxuICAgICAgICB9IGVsc2UgaWYgKHVybC5pbmRleE9mKFxcXCIuZmx2XFxcIikgPiAwKSB7XFxuICAgICAgICAgICAgdGhldHlwZSA9IFxcXCJmbHZcXFwiXFxuICAgICAgICB9IGVsc2UgaWYgKHVybC5pbmRleE9mKFxcXCIudHNcXFwiKSA+IDApIHtcXG4gICAgICAgICAgICB0aGV0eXBlID0gXFxcInRzXFxcIlxcbiAgICAgICAgfSBlbHNlIGlmICh1cmwuaW5kZXhPZihcXFwiLm1rdlxcXCIpID4gMCkge1xcbiAgICAgICAgICAgIHRoZXR5cGUgPSBcXFwibWt2XFxcIlxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAodHlwZSA9PSBcXFwiaGxzXFxcIiB8fCB0eXBlID09IFxcXCJtM3U4XFxcIikge1xcbiAgICAgICAgICAgICAgICB0aGV0eXBlID0gXFxcIm0zdThcXFwiXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIGV4dCA9IHVybC5zdWJzdHJpbmcodXJsLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcXG4gICAgICAgICAgICAgICAgdGhldHlwZSA9IHR5cGUgPyB0eXBlIDogZXh0XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHRoZXR5cGVcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBjcnlwdEpzKHRleHQsIGtleSwgaXYsIHR5cGUpIHtcXG4gICAgICAgIHZhciB0eXBlID0gdHlwZSB8fCBmYWxzZTtcXG4gICAgICAgIHZhciBrZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShrZXkgfHwgJzgnICsgJ1JzJyArICdOTWMnICsgJ1NzJyArICdyMVQnICsgJ1k3JyArICdqWCcgKyAnYycpO1xcbiAgICAgICAgdmFyIGl2ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoaXYgfHwgJ2QnICsgJ2snICsgJ3onICsgJ2EnICsgJ1gnICsgJ2knICsgJ3dLJyArICdxbCcgKyAnaVcnICsgJzU1JyArICdFWScpO1xcbiAgICAgICAgaWYgKHR5cGUpIHtcXG4gICAgICAgICAgICB2YXIgY29udGVudCA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KHRleHQsIGtleSwge1xcbiAgICAgICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgY29udGVudCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KHRleHQsIGtleSwge1xcbiAgICAgICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xcbiAgICAgICAgICAgIH0pLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGNvbnRlbnRcXG4gICAgfVxcbiAgICB2YXIgaHRtbCA9IHJlcXVlc3QoaW5wdXQpO1xcbiAgICB2YXIgTWFjUGxheWVyID0gSlNPTi5wYXJzZShodG1sLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pXFxuICAgIC8vbG9nKE1hY1BsYXllcilcXG5cXG5cXG4gICAgaWYgKC94Z2RtLy50ZXN0KE1hY1BsYXllci5mcm9tKSkge1xcbiAgICAgICAgLy8g5a+G6ZKl77yM55So5LqO55Sf5oiQIEhNQUMg562+5ZCNXFxuICAgICAgICBjb25zdCBzZWNyZXRLZXkgPSBcXFwiYTFiMmMzZDRlNWY2ZzdoOGk5ajBrMWwybTNuNG81cDZcXFwiO1xcblxcbiAgICAgICAgLy8g5b2T5YmN5pe26Ze05oiz77yI56eS77yJXFxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcXG5cXG4gICAgICAgIC8vIOeUn+aIkOaMh+WumumVv+W6pueahOmaj+acuuWtl+espuS4su+8iG5vbmNl77yJXFxuICAgICAgICBmdW5jdGlvbiBnZW5lcmF0ZU5vbmNlKGxlbmd0aCkge1xcbiAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aCB8fCAxNjsgLy8g6buY6K6k6ZW/5bqm5Li6IDE2XFxuICAgICAgICAgICAgY29uc3QgY2hhcnMgPSBcXFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcXFwiO1xcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBjaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAvLyDnlJ/miJDnrb7lkI3vvIhITUFDLVNIQTI1Nu+8iVxcbiAgICAgICAgZnVuY3Rpb24gZ2VuZXJhdGVTaWduYXR1cmUocGFyYW1zLCBrZXkpIHtcXG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRLZXlzID0gT2JqZWN0LmtleXMocGFyYW1zKS5zb3J0KCk7XFxuICAgICAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBzb3J0ZWRLZXlzLm1hcChrID0+IGAke2t9PSR7cGFyYW1zW2tdfWApLmpvaW4oXFxcIiZcXFwiKTtcXG4gICAgICAgICAgICByZXR1cm4gQ3J5cHRvSlMuSG1hY1NIQTI1NihxdWVyeVN0cmluZywga2V5KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuSGV4KTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIC8vIOmaj+acuuWtl+espuS4slxcbiAgICAgICAgY29uc3Qgbm9uY2UgPSBnZW5lcmF0ZU5vbmNlKCk7XFxuXFxuICAgICAgICAvLyDnrb7lkI3lj4LmlbDlr7nosaFcXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XFxuICAgICAgICAgICAgdXJsOiBNYWNQbGF5ZXIudXJsLFxcbiAgICAgICAgICAgIHRpbWVzdGFtcCxcXG4gICAgICAgICAgICBub25jZSxcXG4gICAgICAgIH07XFxuXFxuICAgICAgICAvLyDnlJ/miJDnrb7lkI1cXG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGdlbmVyYXRlU2lnbmF0dXJlKHBheWxvYWQsIHNlY3JldEtleSk7XFxuXFxuICAgICAgICAvLyDmnoTpgKDor7fmsYLlnLDlnYBcXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke01ZX0hPTUV9L2FwaS94Z3BsYXllci9kZWMucGhwP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudChNYWNQbGF5ZXIudXJsKX0mdGltZXN0YW1wPSR7dGltZXN0YW1wfSZub25jZT0ke25vbmNlfSZzaWduYXR1cmU9JHtzaWduYXR1cmV9YDtcXG5cXG4gICAgICAgIC8vIOivt+axguino+WvhuaOpeWPo++8jOiOt+WPluacgOe7iOaSreaUvuWcsOWdgFxcbiAgICAgICAgY29uc3QgeGd1cmwgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpVXJsKSkudXJsO1xcblxcbiAgICAgICAgLy8g5LuO6L+U5Zue55qEIFVSTCDkuK3mj5Dlj5YgdmlkXFxuICAgICAgICBjb25zdCB2aWQgPSB4Z3VybC5zcGxpdCgndmlkPScpWzFdO1xcblxcbiAgICAgICAgLy8g5p6E6YCgIG0zdTgg5pKt5pS+5YiX6KGo6Lev5b6EXFxuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IGBodHRwczovL3hnY3QtdmlkZW8udnpjZG4ubmV0LyR7dmlkfS9gO1xcblxcbiAgICAgICAgLy8g6I635Y+WIG0zdTgg5YaF5a65XFxuICAgICAgICBjb25zdCBtM3U4Q29udGVudCA9IGZldGNoKGJhc2VQYXRoICsgXFxcInBsYXlsaXN0Lm0zdThcXFwiKTtcXG5cXG4gICAgICAgIC8vIOWMuemFjeaJgOaciSBtM3U4IOWIhuauteWcsOWdgFxcbiAgICAgICAgY29uc3QgcGxheWxpc3QgPSBtM3U4Q29udGVudC5tYXRjaCgvLio/bTN1OC9nKS5tYXAoaXRlbSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ucmVwbGFjZSgvLit4KC4qPylcXFxcLy4rL2csIFxcXCIkMVBcXFwiKSxcXG4gICAgICAgICAgICAgICAgdXJsOiBiYXNlUGF0aCArIGl0ZW0sXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgLy8g5o+Q5Y+W5omA5pyJ5YiG5q615qCH6aKY5ZKM5Zyw5Z2AXFxuICAgICAgICBjb25zdCB0aXRsZXMgPSBwbGF5bGlzdC5tYXAoaXRlbSA9PiBpdGVtLnRpdGxlKTtcXG4gICAgICAgIGNvbnN0IHVybHMgPSBwbGF5bGlzdC5tYXAoaXRlbSA9PiBpdGVtLnVybCk7XFxuXFxuICAgICAgICAvLyDov5Tlm54gSlNPTiDlrZfnrKbkuLJcXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgbmFtZXM6IHRpdGxlcyxcXG4gICAgICAgICAgICB1cmxzOiB1cmxzLFxcbiAgICAgICAgfSk7XFxuICAgIH0gZWxzZSBpZiAoLzEwODB6eWt8eGh5cy8udGVzdChNYWNQbGF5ZXIuZnJvbSkpIHtcXG5cXG4gICAgICAgIHJldHVybiBNYWNQbGF5ZXIudXJsXFxuXFxuXFxuICAgIH1cXG5cXG5cXG5cXG4gICAgaWYgKHR5cGVvZihNYWNQbGF5ZXIpICE9PSAndW5kZWZpbmVkJykge1xcbiAgICAgICAgdmlkZW9VcmwgPSBNYWNQbGF5ZXIudXJsO1xcbiAgICAgICAgLy9sb2codmlkZW9VcmwpXFxuICAgICAgICBpZiAodHlwZW9mKE1hY1BsYXllci51cmxfbmV4dCkgIT09ICd1bmRlZmluZWQnKSB7XFxuICAgICAgICAgICAgbmV4dCA9IE1hY1BsYXllci51cmxfbmV4dDtcXG4gICAgICAgICAgICBwcmUgPSBNYWNQbGF5ZXIubGlua19wcmVcXG4gICAgICAgIH1cXG4gICAgICAgIHZvZF9uYW1lID0gcGRmaChodG1sLCBcXFwiaGVhZCYmdGl0bGUmJlRleHRcXFwiKTtcXG4gICAgICAgIGlmICh0eXBlb2YoTWFjUGxheWVyLmZyb20pICE9PSAndW5kZWZpbmVkJykge1xcbiAgICAgICAgICAgIHZvZF9uYW1lICs9IFxcXCIgLSBcXFxcdTY0YWRcXFxcdTY1M2VcXFxcdTdmMTZcXFxcdTc4MDFcXFxcdWZmMWFcXFwiICsgTWFjUGxheWVyLmZyb20gKyBcXFwiXFxcIlxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHR5cGVvZihNYWNQbGF5ZXIubmlkKSAhPT0gJ3VuZGVmaW5lZCcpIHtcXG4gICAgICAgICAgICB2b2RfbmFtZSArPSBcXFwiIC0gXFxcXHU3YjJjXFxcIiArIE1hY1BsYXllci5zaWQgKyBcXFwiLVxcXCIgKyBNYWNQbGF5ZXIubmlkICsgXFxcIlxcXFx1OTZjNlxcXCJcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICAvL2xvZyh2b2RfbmFtZSlcXG4gICAgaWYgKHZpZGVvVXJsID09ICcnKSB7XFxuICAgICAgICBzdHJheS5lcnJvcignXFxcXHU2NGFkXFxcXHU2NTNlXFxcXHU1NzMwXFxcXHU1NzQwXFxcXHU0ZTBkXFxcXHU1Zjk3XFxcXHU0ZTNhXFxcXHU3YTdhJyk7XFxuICAgICAgICByZXR1cm4gZmFsc2VcXG4gICAgfVxcbiAgICB0eXBlID0gdmlkZW90eXBlKHZpZGVvVXJsKTtcXG4gICAgLy9sb2codHlwZSlcXG4gICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKHBvc3QoTVlfSE9NRSArICcvc3RhdGljL3BsYXllci9hcnRwbGF5ZXIvYXBpLnBocD9hYz1nZXRkYXRlJywge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJ4LXJlcXVlc3RlZC13aXRoXFxcIjogXFxcIlhNTEh0dHBSZXF1ZXN0XFxcIlxcbiAgICAgICAgfSxcXG4gICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjogdmlkZW9VcmwsXFxuICAgICAgICAgICAgXFxcInR5cGVcXFwiOiB0eXBlLFxcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6IHZvZF9uYW1lLFxcbiAgICAgICAgICAgIFxcXCJyZWZlcmVyXFxcIjogaW5wdXRcXG4gICAgICAgIH1cXG4gICAgfSkpXFxuICAgIGlmIChkYXRhLmNvZGUgPT0gMjAwKSB7XFxuICAgICAgICBrZXkgPSBDcnlwdG9KUy5NRDUoXFxcInhpYW9oeXMuY29tXFxcIikudG9TdHJpbmcoKS5zbGljZSgwLCAxNik7XFxuICAgICAgICBjb25maWcgPSBKU09OLnBhcnNlKGNyeXB0SnMoZGF0YS5wbGF5ZXIsIGtleSwgZGF0YS5pdikpO1xcbiAgICAgICAgcGxheV9pbmZvID0gSlNPTi5wYXJzZShjcnlwdEpzKGRhdGEuZGF0YSwga2V5LCBkYXRhLml2KSk7XFxuICAgICAgICBsb2cocGxheV9pbmZvKVxcbiAgICAgICAgcGxheXVybCA9IHBsYXlfaW5mby51cmxcXG5cXG5cXG4gICAgICAgIGlmICgvdlxcXFwvdHkvLnRlc3QocGxheXVybCkpIHtcXG5cXG4gICAgICAgICAgICBldmFsKHJlcXVlc3QocGxheXVybCkubWF0Y2goL3ZhciByYW5kID0oW1xcXFxzXFxcXFNdKj87KXsyfS8pWzBdKVxcblxcbiAgICAgICAgICAgIGZ1bmN0aW9uIGpzX2RlY3J5cHQoc3RyLCBrZXksIGl2KSB7XFxuICAgICAgICAgICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSlcXG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGtleSk7XFxuICAgICAgICAgICAgICAgIHZhciBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGl2KTtcXG4gICAgICAgICAgICAgICAgdmFyIGRlY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KHN0ciwga2V5LCB7XFxuICAgICAgICAgICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgICAgICAgICAgICAgfSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVjcnlwdGVkXFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIHZhciB2aWRlbyA9IEpTT04ucGFyc2UoanNfZGVjcnlwdChwbGF5ZXIsICdWRkJUemR1anBSOUZXQmhlJywgcmFuZCkpLnVybFxcbiAgICAgICAgICAgIHJldHVybiB2aWRlbyArICcjaXNWaWRlbz10cnVlIydcXG4gICAgICAgIH0gZWxzZSBpZiAocGxheXVybCA9PT0gdmlkZW9VcmwgfHwgL1xcXFwuKG0zdTh8bXA0fGZsdnxhdml8bWt2KShcXFxcP3wkKS9pLnRlc3QocGxheXVybCkgPT09IGZhbHNlKSB7XFxuICAgIHJldHVybiAndG9hc3Q6Ly/op4bpopHlnLDlnYDml6DmlYjvvIzml6Dms5Xmkq3mlL4nXFxufVxcbiAgICAgICAgcmV0dXJuIHBsYXl1cmwgKyAnI2lzVmlkZW89dHJ1ZSMnXFxuICAgIH1cXG5cXG59LCBNWV9IT01FKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aqM6K+B56CBXCIsXCJwYXRoXCI6XCJ5em1cIixcInJ1bGVcIjpcIndoaWxlICgv6L6T5YWl6aqM6K+B56CBfOezu+e7n+WuieWFqOmqjOivgS8udGVzdChodG1sKSkge1xcbnJjKCdodHRwczovL2dpdGNvZGUubmV0L2xpdXphb3l1ZS9oYWkvLS9yYXcvbWFzdGVyL2p1eXVlLmpzJywgMjQpOyBcXG4gICAgbGV0IGhlYWRlcnMgPSB7XFxuICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IE1PQklMRV9VQSxcXG4gICAgICAgIFxcXCJSZWZlcmVyXFxcIjogTVlfVVJMXFxuICAgIH1cXG4gICAgbGV0IHN6ID0gb2NyKE1ZX0hPTUUgKyAnL3ZlcmlmeS9pbmRleC5odG1sPycsIGhlYWRlcnMpOyAgICBcXG4gICAgIGZldGNoKE1ZX0hPTUUgKyBodG1sLm1hdGNoKC9cXFxcL2luZGV4LnBocC4qP3ZlcmlmeT0vKVswXSArIHN6LCB7XFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgfSkgICBcXG4gICAgdmFyIHl6ID0gTVlfVVJMXFxuICAgLy8gbG9nKE1ZX1VSTClcXG4gICAgaHRtbCA9IHJlcXVlc3QoeXosIHtcXG4gICAgICAgIC8vICAgaGVhZGVyczogaGVhZGVyc1xcbiAgICB9KVxcbn1cXG5pZiAoL+mikee5geaTjeS9nC8udGVzdChodG1sKSkge1xcbiAgICBkLnB1c2goe1xcbiAgICB0aXRsZTogJ+e9keermeaQnOe0ouaXtumXtOmXtOmalOWNgeenkicsXFxuICAgIGRlc2M6IFxcXCLljYHnp5LlkI7kuIvmi4nliLfmlrDph43or5VcXFwiXFxufSlcXG5cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLnn63op4bliqjmgIFcIixcInBhdGhcIjpcImR0ZmxcIixcInJ1bGVcIjpcImpzOlxcbi8qXFxuVmVyIDIwMjMtMTAtMjggMS4wXFxu5aSH5rOo77ya5LiN6KaB55So5rW36ZiU5Luj56CB5qC85byP5YyWIOWGheWuueS8muWHuumUmVxcbuW/hemhu+WPguaVsO+8mlxcbuWIhuexu+minOiJsiDlpKfnsbvlrprkvY0gXFxu5bCP57G75a6a5L2NIOWIhuexu+agh+mimCDliIbnsbvpk77mjqVcXG5odG1sID0+5rqQ56CBIHBhZ2UgPT7pobXnoIFcXG7lj6/pgInlj4LmlbDvvJpcXG7mi7zmjqXliIbnsbsg5oqY5Y+g5qCH6K6wIOWxleW8gOagh+iusCDmjpLpmaRcXG7lpKfnsbvpk77mjqUg5aSn57G75qCH6aKYIOa4hemZpOmUriDlvIDlkK/mipjlj6BcXG7pmYTliqDlrprkvY1cXG7or7TmmI7vvJpcXG7lpJbpnaLnlKhnZXRNeVZhcihNWV9SVUxFLnVybCkg5oiW6ICFIOeKtuaAgSDlj5bpk77mjqVcXG7prZTmlLk6zrFcXG4qL1xcblxcbmxldCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5sZXQgY2F0ZWdvcmllcyA9IFtdO1xcbmlmICh0eXBlb2YgKOaLvOaOpeWIhuexuykgIT0gJ3VuZGVmaW5lZCcgJiYg5ou85o6l5YiG57G7ICE9ICcnKSB7XFxuICAgIGNhdGVnb3JpZXMgPSBbcGRmYShodG1sLCDlpKfnsbvlrprkvY0pLmpvaW4oJ1xcXFxuJyldO1xcbiAgICBpZiAo5ou85o6l5YiG57G7LmluY2x1ZGVzKCc7JykpIHtcXG4gICAgICAgIOaLvOaOpeWIhuexuyA9IOaLvOaOpeWIhuexuy5zcGxpdCgnOycpO1xcbiAgICB9XFxuICAgIGlmICjmi7zmjqXliIbnsbsuY29uc3RydWN0b3IgPT0gQXJyYXkpIHtcXG4gICAgICAgIOaLvOaOpeWIhuexuy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzLmNvbmNhdChwZGZhKGh0bWwsIGl0ZW0pKTtcXG4gICAgICAgIH0pXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBjYXRlZ29yaWVzID0gW3BkZmEoaHRtbCwg5aSn57G75a6a5L2NKS5qb2luKCdcXFxcbicpXS5jb25jYXQocGRmYShodG1sLCDmi7zmjqXliIbnsbspKTtcXG4gICAgfVxcbiAgICBpZiAodHlwZW9mICjpmYTliqDlrprkvY0pICE9ICd1bmRlZmluZWQnICYmIOmZhOWKoOWumuS9jS5sZW5ndGggPiAwKSB7XFxuICAgICAgICDpmYTliqDlrprkvY0uZm9yRWFjaCh4ID0+IHtcXG4gICAgICAgICAgICB2YXIg5LiA57qnID0gcGRmYShodG1sLCB4LuS4gOe6p+WumuS9jSkubWFwKHMgPT4ge1xcbiAgICAgICAgICAgICAgICB2YXIg5a6a5L2NID0gcGRmYShzLCB4LuWwj+exuykubWFwKHEgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gcGRmaChxLCB4Luagh+mimCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gJ2EnXFxuICAgICAgICAgICAgICAgICAgICBpZiAoeC7pk77mjqUuaW5jbHVkZXMoJ0BAJykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHgu6ZO+5o6lLnNwbGl0KCdAQCcpWzBdXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwZGZoKHEsIHgu6ZO+5o6lLnNwbGl0KCdAQCcpWzFdKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC7ovazmjaIgPT0gdHJ1ZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxsaSBkYXRhLXR5cGU9XFxcIiR7c3RhdGV9XFxcIiBkYXRhLXZhbD1cXFwiJHt2YWx1ZX1cXFwiPjxhIGhyZWY9XFxcIlxcXCI+JHt0aXRsZX08L2E+PC9saT5gXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8YSB0eXBlPVxcXCJAZXh0cmFcXFwiIHN0YXRlPVxcXCIke3N0YXRlfVxcXCIgdmFsdWU9XFxcIiR7dmFsdWV9XFxcIj4ke3RpdGxlfTwvYT5gO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZiA9IHBkKHEsIHgu6ZO+5o6lKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxhIGhyZWY9XFxcIiR7aHJlZn1cXFwiPiR7dGl0bGV9PC9hPmA7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICByZXR1cm4g5a6a5L2NO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGNhdGVnb3JpZXMucHVzaCjkuIDnuqcuam9pbignXFxcXG4nKSk7XFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIGNhdGVnb3JpZXMgPSBbcGRmYShodG1sLCDlpKfnsbvlrprkvY0pLmpvaW4oJ1xcXFxuJyldO1xcbn1cXG5cXG5sZXQgaXRlbXMgPSBbXTtcXG5sZXQgY2F0ZXMgPSBbXTtcXG5sZXQgaW5pdF9jYXRlID0gbmV3IEFycmF5KDIwKS5maWxsKFxcXCIwXFxcIik7XFxuY29uc3QgZm9sZCA9IGdldE15VmFyKE1ZX1JVTEUuZ3JvdXAsIFxcXCIwXFxcIik7XFxuY29uc3QgY2F0ZV90ZW1wID0gSlNPTi5wYXJzZShnZXRNeVZhcihcXFwiaGVhZC5jYXRlXFxcIiwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSkpO1xcbnZhciDmipjlj6DnirbmgIEgPSAodHlwZW9mICjlvIDlkK/mipjlj6ApICE9ICd1bmRlZmluZWQnKSA/IOW8gOWQr+aKmOWPoCA6IHRydWU7XFxudmFyIOaKmOWPoCA9ICh0eXBlb2YgKOaKmOWPoOagh+iusCkgIT0gJ3VuZGVmaW5lZCcgJiYg5oqY5Y+g5qCH6K6wICE9ICcnKSA/IOaKmOWPoOagh+iusCA6ICfigJzigJzigJ3igJ0nICsgJ+KIqCcuZm9udGNvbG9yKFxcXCIjRkYwMDAwXFxcIik7XFxudmFyIOWxleW8gCA9ICh0eXBlb2YgKOWxleW8gOagh+iusCkgIT0gJ3VuZGVmaW5lZCcgJiYg5bGV5byA5qCH6K6wICE9ICcnKSA/IOWxleW8gOagh+iusCA6ICfigJzigJzigJ3igJ0nICsgJ+KIpycuZm9udGNvbG9yKFxcXCIjMWFhZDE5XFxcIik7XFxudmFyIOa4hemZpCA9ICh0eXBlb2YgKOa4hemZpOmUrikgIT0gJ3VuZGVmaW5lZCcgJiYg5riF6Zmk6ZSuICE9ICcnKSA/IOa4hemZpOmUriA6IFtdO1xcbnZhciDnirbmgIEgPSAodHlwZW9mICjnirbmgIHmoIforrApICE9ICd1bmRlZmluZWQnICYmIOeKtuaAgeagh+iusCAhPSAnJykgPyDnirbmgIHmoIforrAgOiBNWV9SVUxFLnVybDtcXG52YXIg5aSn57G75aSE55CGID0gdHlwZW9mICjkuIDnuqfliIbnsbvlpITnkIYpICE9ICd1bmRlZmluZWQnID8gdHJ1ZSA6IGZhbHNlO1xcbnZhciDmkJzntKIgPSB0eXBlb2YgKOW8gOWQr+aQnOe0oikgIT0gJ3VuZGVmaW5lZCcgPyDlvIDlkK/mkJzntKIgOiBmYWxzZTtcXG52YXIg5YWo5riFID0gKHR5cGVvZiAo5YWo5riF6ZSuKSAhPSAndW5kZWZpbmVkJyAmJiDlhajmuIXplK4gIT0gJycpID8g5YWo5riF6ZSuIDogW107XFxu5YWo5riFLnVuc2hpZnQoJ3lpX2ZpcnN0cGFnZScpO1xcblxcblxcbmlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICBpZiAo5pCc57SiKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9zZWFyY2g/cnVsZT1cXFwiICsgTVlfUlVMRS50aXRsZSArIFxcXCImcz0nK2lucHV0XFxcIixcXG4gICAgICAgICAgICBkZXNjOiBcXFwi5pCc57Si5YWz6ZSu6K+NXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKCdrZXl3b3JkJywgJycpLFxcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigna2V5d29yZCcsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIGlmICjmipjlj6DnirbmgIEpIHtcXG4gICAgICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGZvbGQgPT09ICcxJyA/IOaKmOWPoCA6IOWxleW8gCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCh0aXRsZSwgZm9sZCwgdSwgYWxsLCBleHBzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgZm9sZCA9IGdldE15VmFyKE1ZX1JVTEUuZ3JvdXAsIGZvbGQpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIFvlsZXlvIAsIOaKmOWPoF0gPSBleHBzO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvbGQgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjeCA9IGZpbmRJdGVtc0J5Q2xzKHRpdGxlICsgJ2NhdGVfYnV0dG9uJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoJ2NhdGVfYnV0dG9uJywgY3gpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscyh0aXRsZSArICdjYXRlX2J1dHRvbicpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3ggPSBzdG9yYWdlMC5nZXRNeVZhcignY2F0ZV9idXR0b24nLCBbXSkubWFwKHggPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Wydjb2xfdHlwZSddID0geFsnY29sX3R5cGUnXSA/IHhbJ2NvbF90eXBlJ10gOiB4Wyd0eXBlJ107XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcih0aXRsZSArICdjYXRlX2xpbmUnLCBjeClcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIC8qYWxsLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKTtcXG4gICAgICAgICAgICAgICAgICAgIH0pOyovXFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKHRpdGxlICsgJ2NhdGVfZXhwJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmb2xkID09IDEgPyDlsZXlvIAgOiDmipjlj6AsXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoTVlfUlVMRS5ncm91cCwgZm9sZCA9PT0gXFxcIjFcXFwiID8gXFxcIjBcXFwiIDogXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgICAgIH0sIE1ZX1JVTEUudGl0bGUsIGZvbGQsIOeKtuaAgSwg5YWo5riFLCBb5bGV5byALCDmipjlj6BdKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBNWV9SVUxFLnRpdGxlICsgJ2NhdGVfZXhwJyxcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+a4hemZpOeKtuaAgScsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHgsIGFsbCwgY2wpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcih4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcignaGVhZC5jYXRlJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbC5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCDnirbmgIEsIOWFqOa4hSwg5riF6ZmkKVxcbiAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgbGV0IHNldFRpdGxlID0gKGssIGksIHQpID0+IHtcXG4gICAgICAgIHJldHVybiBrID09IGkgPyBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIHQuZm9udGNvbG9yKOWIhuexu+minOiJsikgOiB0XFxuICAgIH1cXG4gICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSwgaW5kZXgpID0+IHtcXG4gICAgICAgIGxldCBzdWJfY2F0ZWdvcmllcyA9IFtdO1xcbiAgICAgICAgaWYgKOWwj+exu+WumuS9jS5pbmNsdWRlcygnOycpKSB7XFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMgPSBwZGZhKGNhdGVnb3J5LCDlsI/nsbvlrprkvY0uc3BsaXQoJzsnKVswXSk7XFxuICAgICAgICAgICAgaWYgKHN1Yl9jYXRlZ29yaWVzLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzID0gcGRmYShjYXRlZ29yeSwg5bCP57G75a6a5L2NLnNwbGl0KCc7JylbMV0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMgPSBwZGZhKGNhdGVnb3J5LCDlsI/nsbvlrprkvY0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBf5aSn57G76ZO+5o6lID0gKHR5cGVvZiAo5aSn57G76ZO+5o6lKSAhPSAndW5kZWZpbmVkJyAmJiDlpKfnsbvpk77mjqUgIT0gJycpID8g5aSn57G76ZO+5o6lIDog5YiG57G76ZO+5o6lO1xcblxcbiAgICAgICAgICAgICAgICBsZXQgX+Wkp+exu+agh+mimCA9ICh0eXBlb2YgKOWkp+exu+agh+mimCkgIT0gJ3VuZGVmaW5lZCcgJiYg5aSn57G75qCH6aKYICE9ICcnKSA/IOWkp+exu+agh+mimCA6IOWIhuexu+agh+mimDtcXG5cXG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gcGRmaChpdGVtLCBf5aSn57G75qCH6aKYKTtcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAo5o6S6ZmkKSAhPSAndW5kZWZpbmVkJyAmJiDmjpLpmaQgIT0gJycpIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdGl0bGUucmVwbGFjZShuZXcgUmVnRXhwKOaOkumZpCwgXFxcImdcXFwiKSwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSB7XFxuICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCwga2V5OiBrZXksIHBhZ2U6IHBhZ2UsIGNsZWFyczog5riF6ZmkLCBzdGF0ZTog54q25oCBLCBhbGxjbGVhcnM6IOWFqOa4hVxcbiAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSBwZChpdGVtLCBf5aSn57G76ZO+5o6lKTtcXG4gICAgICAgICAgICAgICAgaWYgKOWkp+exu+WkhOeQhikge1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2co5LiA57qn5YiG57G75aSE55CGKVxcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coJC5zdHJpbmdpZnko5LiA57qn5YiG57G75aSE55CGKSlcXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbnB1dCA9IHVybDtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcInJlc3VsdCA9IFxcXCIgKyDkuIDnuqfliIbnsbvlpITnkIYpO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2cocmVzdWx0KVxcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gcmVzdWx0O1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHNldFRpdGxlKGtleS50b1N0cmluZygpLCBjYXRlX3RlbXBbaW5kZXhdLCB0aXRsZSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHVybCArICcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2NhdGUgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2xlYXJzLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFsbGNsZWFycy5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXAuZm9yRWFjaCgoY2F0ZSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NhdGUucHVzaChpbmRleCA9PT0gMCA/IHBhcmFtcy5rZXkudG9TdHJpbmcoKSA6IFxcXCIwXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJoZWFkLmNhdGVcXFwiLCBKU09OLnN0cmluZ2lmeShuZXdfY2F0ZSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKHBhcmFtcy5zdGF0ZSwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbXMpXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBNWV9SVUxFLnRpdGxlICsgJ2NhdGVfbGluZScsXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgdmFyIGV4dHJhcG9zID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmluY2x1ZGVzKCd0eXBlPVxcXCJAZXh0cmFcXFwiJykpIHtcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhcG9zID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKCfpmYTliqDlrprkvY0nKVxcbiAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgIGlmIChleHRyYXBvcykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gcGRmaChpdGVtLCAnYSYmVGV4dCcpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAo5o6S6ZmkKSAhPSAndW5kZWZpbmVkJyAmJiDmjpLpmaQgIT0gJycpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2UobmV3IFJlZ0V4cCjmjpLpmaQsIFxcXCJnXFxcIiksIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHBkZmgoaXRlbSwgJ2EmJnN0YXRlJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBkZmgoaXRlbSwgJ2EmJnZhbHVlJyksXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuXFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKGl0ZW0sIOWIhuexu+agh+mimCk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mICjmjpLpmaQpICE9ICd1bmRlZmluZWQnICYmIOaOkumZpCAhPSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdGl0bGUucmVwbGFjZShuZXcgUmVnRXhwKOaOkumZpCwgXFxcImdcXFwiKSwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSAnJztcXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug5YiG57G76ZO+5o6lLmluY2x1ZGVzKCdAQEAnKTpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHBkZmgoaXRlbSwg5YiG57G76ZO+5o6lLnNwbGl0KCdAQEAnKVswXSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGRmaChpdGVtLCDliIbnsbvpk77mjqUuc3BsaXQoJ0BAQCcpWzFdKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIOWIhuexu+mTvuaOpS5pbmNsdWRlcygnQEAnKTpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IOWIhuexu+mTvuaOpS5zcGxpdCgnQEAnKVswXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwZGZoKGl0ZW0sIOWIhuexu+mTvuaOpS5zcGxpdCgnQEAnKVsxXSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IHBkKGl0ZW0sIOWIhuexu+mTvuaOpSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgLyp2YXIganNvbj3liIbnsbvpk77mjqUuaW5jbHVkZXMoJ0BAQCcpP3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTpwZGZoKGl0ZW0s5YiG57G76ZO+5o6lLnNwbGl0KCdAQEAnKVswXSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOnBkZmgoaXRlbSzliIbnsbvpk77mjqUuc3BsaXQoJ0BAQCcpWzFdKSxcXG4gICAgICAgICAgICAgICAgICAgICB9OnBkKGl0ZW0s5YiG57G76ZO+5o6lKTtcXG4gICAgICAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgICAgICBqc29uPeWIhuexu+mTvuaOpS5pbmNsdWRlcygnQEAnKT97XFxuICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU65YiG57G76ZO+5o6lLnNwbGl0KCdAQCcpWzBdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpwZGZoKGl0ZW0s5YiG57G76ZO+5o6lLnNwbGl0KCdAQCcpWzFdKSxcXG4gICAgICAgICAgICAgICAgICAgICB9OnBkKGl0ZW0s5YiG57G76ZO+5o6lKTsqL1xcblxcbiAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSB7XFxuICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCwgaW5kZXg6IGluZGV4LCBrZXk6IGtleSwgcGFnZTogcGFnZSwganNvbjoganNvbiwgc3RhdGU6IOeKtuaAgSwgYWxsY2xlYXJzOiDlhajmuIVcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBjYXRlcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZXRUaXRsZShrZXkudG9TdHJpbmcoKSwgY2F0ZV90ZW1wW2luZGV4XSwgdGl0bGUpLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5JyArICcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYWxsY2xlYXJzLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJoZWFkLmNhdGVcXFwiLCBKU09OLnN0cmluZ2lmeShwYXJhbXMuY2F0ZV90ZW1wKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5qc29uLmNvbnN0cnVjdG9yID09PSBPYmplY3QpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2R0XycgKyBwYXJhbXMuanNvbi50eXBlLCBwYXJhbXMuanNvbi52YWx1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIocGFyYW1zLnN0YXRlLCBwYXJhbXMuanNvbik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbXMpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBNWV9SVUxFLnRpdGxlICsgJ2NhdGVfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgY2F0ZXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgY2xzOiBNWV9SVUxFLnRpdGxlICsgJ2NhdGVfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9KVxcbn1cXG5cXG5cXG5pZiAoZm9sZCA9PT0gXFxcIjFcXFwiIHx8IOaKmOWPoOeKtuaAgSA9PSBmYWxzZSkge1xcbiAgICBpdGVtcyA9IGl0ZW1zLmNvbmNhdChjYXRlcyk7XFxufVxcbmlmIChmb2xkID09PSBcXFwiMFxcXCIpIHtcXG4gICAgc3RvcmFnZTAucHV0TXlWYXIoJ2NhdGVfYnV0dG9uJywgY2F0ZXMpXFxufVxcbmlmICh0eXBlb2Ygc2V0UHJlUmVzdWx0ICE9ICd1bmRlZmluZWQnKSB7XFxuICAgIGl0ZW1zID0gZC5jb25jYXQoaXRlbXMpO1xcbiAgICAvL+a4heepuue7p+aJv+aVsOe7hFxcbiAgICBkLmxlbmd0aCA9IDA7XFxuICAgIHNldFByZVJlc3VsdChpdGVtcyk7XFxufSBlbHNlIHtcXG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGQucHVzaChpdGVtKTtcXG4gICAgfSlcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqdcIixcInBhdGhcIjpcImVqXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcblxcbnZhciBhcnRzID0gcGRmYShodG1sLCAnLm5hdi1zd2lwZXImJmE6bm90KDptYXRjaGVzKOS4i+i9vSkpJyk7XFxuXFxudmFyIHRhYnMgPSBbXTtcXG5mb3IgKHZhciBpIGluIGFydHMpIHtcXG4gICAgdGFicy5wdXNoKHBkZmgoYXJ0c1tpXSwgJ1RleHQnKSlcXG59XFxuXFxudmFyIGNvbnRzID0gcGRmYShodG1sLCAnYm9keSYmLmFudGhvbG9neS1saXN0LWJveCcpO1xcblxcbnZhciBsaXN0cyA9IFtdO1xcbmZvciAodmFyIGkgaW4gY29udHMpIHtcXG4gICAgbGlzdHMucHVzaChwZGZhKGNvbnRzW2ldLCAnYm9keSYmYScpKVxcbn1cXG50cnkge1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKGh0bWwsICcuc2VhcmNoLXNob3cmJmxpOmNvbnRhaW5zKOWvvOa8lO+8mikmJlRleHQnKS5zdWJzdHJpbmcoMCwgMTgpICtcXG4gICAgICAgICdcXFxcbicgK1xcbiAgICAgICAgJ1xcXFxuJyArXFxuICAgICAgICAgICAgIHBkZmgoaHRtbCxcXG4nLnNlYXJjaC1zaG93JiZsaTpjb250YWlucyjkuLvmvJTvvJopJiZUZXh0Jykuc3Vic3RyaW5nKDAsIDE4KSxcXG4gICAgZGVzYzogcGRmaChodG1sLCAnLnNlYXJjaC1zaG93JiZsaTpjb250YWlucyjmm7TmlrDvvJopJiZUZXh0JyksXFxuICAgIGltZzogTVlfUEFSQU1TLnBpYyxcXG4gICAgdXJsOiBNWV9VUkwsXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsZXh0cmE6IHtncmFkaWVudDogdHJ1ZX1cXG59KTtcXG52YXIg566A5LuLID0gcGRmaChodG1sLCAnLnRvcDI2JiZUZXh0JylcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzbWFsbD48Zm9udCBjb2xvcj1cXFwiI2ZmMTQ4ZThlXFxcIj4nICsg566A5LuLLnN1YnN0cigwLCA1NSkgKyAnLi4uPC9mb250PjxzbWFsbD48Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7or6bmg4U8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArICdcXFxcbicgKyDnroDku4sgKycjbm9IaXN0b3J5IycgKyBgQHJ1bGU9anM6IHZhciBkID0gW107ZC5wdXNoKHt0aXRsZTon5b2x54mH566A5LuL77yaJysgTVlfVVJMLnNwbGl0KCcjJylbMV0sY29sX3R5cGU6ICdsb25nX3RleHQnfSk7IHNldFJlc3VsdChkKTtgLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG59KTtcXG59IGNhdGNoIChlKSB7XFxuZC5wdXNoKHtcXG4gICAgaW1nOiBwZChodG1sLCBcXG4nLnRoaXMtcGljLWJqJiZzdHlsZScpLnJlcGxhY2UoXFxcImJhY2tncm91bmQtaW1hZ2U6IHVybCgnXFxcIixcXFwiXFxcIikucmVwbGFjZShcXFwiJylcXFwiLFxcXCJcXFwiKSArJ0BSZWZlcmVyPScsXFxuICAgIHVybDogTVlfVVJMLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLGV4dHJhOiB7Z3JhZGllbnQ6IHRydWV9XFxufSk7XFxufVxcblxcbiBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9sYXp5Jywge30pKS5ydWxlKTtcXG5cXG5mdW5jdGlvbiBzZXRUYWJzKHRhYnMsIHZhcmkpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAoZ2V0VmFyKCdzaHNvcnQnKSA9PSAnMScpID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogI0ZGMDAwMFxcXCI+6YCG5bqPPC9zcGFuPjwvYj4nIDogJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogIzFhYWQxOVxcXCI+5q2j5bqPPC9zcGFuPjwvYj4nLFxcbiAgICAgICAgdXJsOiBgQGxhenlSdWxlPS5qczpsZXQgY29uZiA9IGdldFZhcignc2hzb3J0Jyk7aWYoY29uZj09JzEnKXtwdXRWYXIoe2tleTonc2hzb3J0JywgdmFsdWU6JzAnfSk7fWVsc2V7cHV0VmFyKHtrZXk6J3Noc29ydCcsIHZhbHVlOicxJ30pfTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaOkuW6j+aIkOWKnydgLFxcbiAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgfSlcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgdXJsID0gXFxcIiNub0xvYWRpbmcjQGxhenlSdWxlPS5qczpwdXRWYXIoJ1xcXCIgKyB2YXJpICsgXFxcIicsICdcXFwiICsgaSArIFxcXCInKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5YiH5o2i5oiQ5Yqf77yBJzsnI25vSGlzdG9yeSNoaWtlcjovL2VtcHR5J1xcXCI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRWYXIodmFyaSwgJzAnKSA9PSBpID8gJ+KAnOKAnCcgKyB0YWJzW2ldICsgJ+KAneKAnScgOiB0YWJzW2ldLFxcbiAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgICAgICB9KVxcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIHNldExpc3RzKGxpc3RzLCBpbmRleCkge1xcbiAgICB2YXIgbGlzdCA9IGxpc3RzW2luZGV4XTtcXG4gICAgaWYgKGdldFZhcignc2hzb3J0JykgPT0gJzEnKSB7XFxuICAgICAgICB2YXIgbGlzdCA9IGxpc3RzW2luZGV4XS5yZXZlcnNlKCk7XFxuICAgIH1cXG4gICAgZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwZGZoKGxpc3Rbal0sICdhJiZUZXh0JylcXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL+esrChcXFxcZCsp6ZuGLywgJyQxJylcXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoJ+esrCcsICcnKVxcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgn5pyfJywgJycpLFxcbiAgICAgICAgICAgIHVybDogcGQobGlzdFtqXSwgJ2EmJmhyZWYnKSArIGxhenksXFxuICAgICAgICAgICAgY29sX3R5cGU6IGxpc3QubGVuZ3RoID4gMyA/ICd0ZXh0XzQnIDogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcblxcbnNldFRhYnModGFicywgTVlfVVJMKTtcXG5zZXRMaXN0cyhsaXN0cywgZ2V0VmFyKE1ZX1VSTCwgJzAnKSk7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG59KTtcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJjigJjigJnigJk8c21hbGw+PGZvbnQgY29sb3I9IzIwYjJhYT7mlbDmja7otYTmupDmlLbpm4bkuo7nvZHnu5zvvIzmtbfpmJTkuI3mj5Dkvpvku7vkvZXotYTmupDvvIE8L2ZvbnQ+PC9zbWFsbD4nLFxcbiAgICBkZXNjOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPjxmb250IGNvbG9yPSNmZjdmNTA+5pys6KeE5YiZ5LuF6ZmQ5a2m5Lmg5LiO5Lqk5rWB77yM6K+35a+85YWl5ZCOMjTlsI/ml7blhoXliKDpmaTvvIzor7fli7/kvKDmkq3vvIE8L2ZvbnQ+PC9zbWFsbD4nLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICB9XFxufSk7XFxuXFxuc2V0UmVzdWx0KGQpO1wifV0sXCJwYXJhbXNcIjpcIntcXFwicGljXFxcIjpcXFwiaHR0cHM6Ly9waWMucnktcGljLmNvbS91cGxvYWQvdm9kLzIwMjQxMDI3LTEvYzUzY2IyMDBlMjZiMTA1ZDZmZmMxYjIxMjU2OWViYTEud2VicEBSZWZlcmVyPVxcXCJ9XCIsXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIuWwj+e6ouW9seinhlwiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImh0dHBzOi8veGlhb2h5cy5jb20vZGV0YWlsLzYzNDc4LyNpbW1lcnNpdmVUaGVtZSM7Z2V0O1VURi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDE177yb77ybIDI0MDdGUks4RUMgQnVpbGQvQVAzQS4yNDA2MTcuMDA477yb77ybIHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvMTI4LjAuNjYxMy4xMjcgTW9iaWxlIFNhZmFyaS81MzcuMzZ9XCIsXCJjb2xfdHlwZVwiOlwibW92aWVfMVwiLFwiZmluZF9ydWxlXCI6XCJqczooXFxuKCkgPT4ge1xcbiAgICByZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZWpcXFwiKTtcXG59XFxuKSgpXCIsXCJncm91cFwiOlwiMO+4j+KDo+a1i+ivlVwiLFwidWFcIjpcIm1vYmlsZVwiLFwicHJlUnVsZVwiOlwiaW5pdENvbmZpZyh7XFxuICAgIGhvc3Q6IGdldEl0ZW0oJ2xpbmsnLCAnaHR0cDovL2thbjgudHYnKVxcbn0pO1wiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCJsYXp5XFxcIixcXFwicGF0aFxcXCI6XFxcImxhenlcXFwiLFxcXCJydWxlXFxcIjpcXFwidmFyIGxhenkgPSAkKCcnKS5sYXp5UnVsZSgoTVlfSE9NRSkgPT4ge1xcXFxuICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSlcXFxcblxcXFxuICAgIGZ1bmN0aW9uIHZpZGVvdHlwZSh1cmwsIHR5cGUpIHtcXFxcbiAgICAgICAgdmFyIHR5cGUgPSB0eXBlIHx8ICdtcDQnO1xcXFxuICAgICAgICBpZiAodXJsLmluZGV4T2YoXFxcXFxcXCJtM3U4XFxcXFxcXCIpID4gMCkge1xcXFxuICAgICAgICAgICAgdGhldHlwZSA9IFxcXFxcXFwibTN1OFxcXFxcXFwiXFxcXG4gICAgICAgIH0gZWxzZSBpZiAodXJsLmluZGV4T2YoXFxcXFxcXCIuZmx2XFxcXFxcXCIpID4gMCkge1xcXFxuICAgICAgICAgICAgdGhldHlwZSA9IFxcXFxcXFwiZmx2XFxcXFxcXCJcXFxcbiAgICAgICAgfSBlbHNlIGlmICh1cmwuaW5kZXhPZihcXFxcXFxcIi50c1xcXFxcXFwiKSA+IDApIHtcXFxcbiAgICAgICAgICAgIHRoZXR5cGUgPSBcXFxcXFxcInRzXFxcXFxcXCJcXFxcbiAgICAgICAgfSBlbHNlIGlmICh1cmwuaW5kZXhPZihcXFxcXFxcIi5ta3ZcXFxcXFxcIikgPiAwKSB7XFxcXG4gICAgICAgICAgICB0aGV0eXBlID0gXFxcXFxcXCJta3ZcXFxcXFxcIlxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgaWYgKHR5cGUgPT0gXFxcXFxcXCJobHNcXFxcXFxcIiB8fCB0eXBlID09IFxcXFxcXFwibTN1OFxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgdGhldHlwZSA9IFxcXFxcXFwibTN1OFxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHZhciBleHQgPSB1cmwuc3Vic3RyaW5nKHVybC5sYXN0SW5kZXhPZignLicpICsgMSk7XFxcXG4gICAgICAgICAgICAgICAgdGhldHlwZSA9IHR5cGUgPyB0eXBlIDogZXh0XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmV0dXJuIHRoZXR5cGVcXFxcbiAgICB9XFxcXG5cXFxcbiAgICBmdW5jdGlvbiBjcnlwdEpzKHRleHQsIGtleSwgaXYsIHR5cGUpIHtcXFxcbiAgICAgICAgdmFyIHR5cGUgPSB0eXBlIHx8IGZhbHNlO1xcXFxuICAgICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2Uoa2V5IHx8ICc4JyArICdScycgKyAnTk1jJyArICdTcycgKyAncjFUJyArICdZNycgKyAnalgnICsgJ2MnKTtcXFxcbiAgICAgICAgdmFyIGl2ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoaXYgfHwgJ2QnICsgJ2snICsgJ3onICsgJ2EnICsgJ1gnICsgJ2knICsgJ3dLJyArICdxbCcgKyAnaVcnICsgJzU1JyArICdFWScpO1xcXFxuICAgICAgICBpZiAodHlwZSkge1xcXFxuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdCh0ZXh0LCBrZXksIHtcXFxcbiAgICAgICAgICAgICAgICBpdjogaXYsXFxcXG4gICAgICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXFxcXG4gICAgICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdCh0ZXh0LCBrZXksIHtcXFxcbiAgICAgICAgICAgICAgICBpdjogaXYsXFxcXG4gICAgICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxcXG4gICAgICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOClcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gY29udGVudFxcXFxuICAgIH1cXFxcbiAgICB2YXIgaHRtbCA9IHJlcXVlc3QoaW5wdXQpO1xcXFxuICAgIHZhciBNYWNQbGF5ZXIgPSBKU09OLnBhcnNlKGh0bWwubWF0Y2goL3IgcGxheWVyXy4qPz0oLio/KTwvKVsxXSlcXFxcbiAgICAvL2xvZyhNYWNQbGF5ZXIpXFxcXG5cXFxcblxcXFxuICAgIGlmICgveGdkbS8udGVzdChNYWNQbGF5ZXIuZnJvbSkpIHtcXFxcbiAgICAgICAgLy8g5a+G6ZKl77yM55So5LqO55Sf5oiQIEhNQUMg562+5ZCNXFxcXG4gICAgICAgIGNvbnN0IHNlY3JldEtleSA9IFxcXFxcXFwiYTFiMmMzZDRlNWY2ZzdoOGk5ajBrMWwybTNuNG81cDZcXFxcXFxcIjtcXFxcblxcXFxuICAgICAgICAvLyDlvZPliY3ml7bpl7TmiLPvvIjnp5LvvIlcXFxcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XFxcXG5cXFxcbiAgICAgICAgLy8g55Sf5oiQ5oyH5a6a6ZW/5bqm55qE6ZqP5py65a2X56ym5Liy77yIbm9uY2XvvIlcXFxcbiAgICAgICAgZnVuY3Rpb24gZ2VuZXJhdGVOb25jZShsZW5ndGgpIHtcXFxcbiAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aCB8fCAxNjsgLy8g6buY6K6k6ZW/5bqm5Li6IDE2XFxcXG4gICAgICAgICAgICBjb25zdCBjaGFycyA9IFxcXFxcXFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBjaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xcXFxuICAgICAgICB9XFxcXG5cXFxcbiAgICAgICAgLy8g55Sf5oiQ562+5ZCN77yISE1BQy1TSEEyNTbvvIlcXFxcbiAgICAgICAgZnVuY3Rpb24gZ2VuZXJhdGVTaWduYXR1cmUocGFyYW1zLCBrZXkpIHtcXFxcbiAgICAgICAgICAgIGNvbnN0IHNvcnRlZEtleXMgPSBPYmplY3Qua2V5cyhwYXJhbXMpLnNvcnQoKTtcXFxcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gc29ydGVkS2V5cy5tYXAoayA9PiBgJHtrfT0ke3BhcmFtc1trXX1gKS5qb2luKFxcXFxcXFwiJlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBDcnlwdG9KUy5IbWFjU0hBMjU2KHF1ZXJ5U3RyaW5nLCBrZXkpLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5IZXgpO1xcXFxuICAgICAgICB9XFxcXG5cXFxcbiAgICAgICAgLy8g6ZqP5py65a2X56ym5LiyXFxcXG4gICAgICAgIGNvbnN0IG5vbmNlID0gZ2VuZXJhdGVOb25jZSgpO1xcXFxuXFxcXG4gICAgICAgIC8vIOetvuWQjeWPguaVsOWvueixoVxcXFxuICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xcXFxuICAgICAgICAgICAgdXJsOiBNYWNQbGF5ZXIudXJsLFxcXFxuICAgICAgICAgICAgdGltZXN0YW1wLFxcXFxuICAgICAgICAgICAgbm9uY2UsXFxcXG4gICAgICAgIH07XFxcXG5cXFxcbiAgICAgICAgLy8g55Sf5oiQ562+5ZCNXFxcXG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGdlbmVyYXRlU2lnbmF0dXJlKHBheWxvYWQsIHNlY3JldEtleSk7XFxcXG5cXFxcbiAgICAgICAgLy8g5p6E6YCg6K+35rGC5Zyw5Z2AXFxcXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke01ZX0hPTUV9L2FwaS94Z3BsYXllci9kZWMucGhwP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudChNYWNQbGF5ZXIudXJsKX0mdGltZXN0YW1wPSR7dGltZXN0YW1wfSZub25jZT0ke25vbmNlfSZzaWduYXR1cmU9JHtzaWduYXR1cmV9YDtcXFxcblxcXFxuICAgICAgICAvLyDor7fmsYLop6Plr4bmjqXlj6PvvIzojrflj5bmnIDnu4jmkq3mlL7lnLDlnYBcXFxcbiAgICAgICAgY29uc3QgeGd1cmwgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpVXJsKSkudXJsO1xcXFxuXFxcXG4gICAgICAgIC8vIOS7jui/lOWbnueahCBVUkwg5Lit5o+Q5Y+WIHZpZFxcXFxuICAgICAgICBjb25zdCB2aWQgPSB4Z3VybC5zcGxpdCgndmlkPScpWzFdO1xcXFxuXFxcXG4gICAgICAgIC8vIOaehOmAoCBtM3U4IOaSreaUvuWIl+ihqOi3r+W+hFxcXFxuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IGBodHRwczovL3hnY3QtdmlkZW8udnpjZG4ubmV0LyR7dmlkfS9gO1xcXFxuXFxcXG4gICAgICAgIC8vIOiOt+WPliBtM3U4IOWGheWuuVxcXFxuICAgICAgICBjb25zdCBtM3U4Q29udGVudCA9IGZldGNoKGJhc2VQYXRoICsgXFxcXFxcXCJwbGF5bGlzdC5tM3U4XFxcXFxcXCIpO1xcXFxuXFxcXG4gICAgICAgIC8vIOWMuemFjeaJgOaciSBtM3U4IOWIhuauteWcsOWdgFxcXFxuICAgICAgICBjb25zdCBwbGF5bGlzdCA9IG0zdThDb250ZW50Lm1hdGNoKC8uKj9tM3U4L2cpLm1hcChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIHJldHVybiB7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ucmVwbGFjZSgvLit4KC4qPylcXFxcXFxcXC8uKy9nLCBcXFxcXFxcIiQxUFxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IGJhc2VQYXRoICsgaXRlbSxcXFxcbiAgICAgICAgICAgIH07XFxcXG4gICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgIC8vIOaPkOWPluaJgOacieWIhuauteagh+mimOWSjOWcsOWdgFxcXFxuICAgICAgICBjb25zdCB0aXRsZXMgPSBwbGF5bGlzdC5tYXAoaXRlbSA9PiBpdGVtLnRpdGxlKTtcXFxcbiAgICAgICAgY29uc3QgdXJscyA9IHBsYXlsaXN0Lm1hcChpdGVtID0+IGl0ZW0udXJsKTtcXFxcblxcXFxuICAgICAgICAvLyDov5Tlm54gSlNPTiDlrZfnrKbkuLJcXFxcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgIG5hbWVzOiB0aXRsZXMsXFxcXG4gICAgICAgICAgICB1cmxzOiB1cmxzLFxcXFxuICAgICAgICB9KTtcXFxcbiAgICB9IGVsc2UgaWYgKC8xMDgwenlrfHhoeXMvLnRlc3QoTWFjUGxheWVyLmZyb20pKSB7XFxcXG5cXFxcbiAgICAgICAgcmV0dXJuIE1hY1BsYXllci51cmxcXFxcblxcXFxuXFxcXG4gICAgfVxcXFxuXFxcXG5cXFxcblxcXFxuICAgIGlmICh0eXBlb2YoTWFjUGxheWVyKSAhPT0gJ3VuZGVmaW5lZCcpIHtcXFxcbiAgICAgICAgdmlkZW9VcmwgPSBNYWNQbGF5ZXIudXJsO1xcXFxuICAgICAgICAvL2xvZyh2aWRlb1VybClcXFxcbiAgICAgICAgaWYgKHR5cGVvZihNYWNQbGF5ZXIudXJsX25leHQpICE9PSAndW5kZWZpbmVkJykge1xcXFxuICAgICAgICAgICAgbmV4dCA9IE1hY1BsYXllci51cmxfbmV4dDtcXFxcbiAgICAgICAgICAgIHByZSA9IE1hY1BsYXllci5saW5rX3ByZVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHZvZF9uYW1lID0gcGRmaChodG1sLCBcXFxcXFxcImhlYWQmJnRpdGxlJiZUZXh0XFxcXFxcXCIpO1xcXFxuICAgICAgICBpZiAodHlwZW9mKE1hY1BsYXllci5mcm9tKSAhPT0gJ3VuZGVmaW5lZCcpIHtcXFxcbiAgICAgICAgICAgIHZvZF9uYW1lICs9IFxcXFxcXFwiIC0gXFxcXFxcXFx1NjRhZFxcXFxcXFxcdTY1M2VcXFxcXFxcXHU3ZjE2XFxcXFxcXFx1NzgwMVxcXFxcXFxcdWZmMWFcXFxcXFxcIiArIE1hY1BsYXllci5mcm9tICsgXFxcXFxcXCJcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmICh0eXBlb2YoTWFjUGxheWVyLm5pZCkgIT09ICd1bmRlZmluZWQnKSB7XFxcXG4gICAgICAgICAgICB2b2RfbmFtZSArPSBcXFxcXFxcIiAtIFxcXFxcXFxcdTdiMmNcXFxcXFxcIiArIE1hY1BsYXllci5zaWQgKyBcXFxcXFxcIi1cXFxcXFxcIiArIE1hY1BsYXllci5uaWQgKyBcXFxcXFxcIlxcXFxcXFxcdTk2YzZcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIC8vbG9nKHZvZF9uYW1lKVxcXFxuICAgIGlmICh2aWRlb1VybCA9PSAnJykge1xcXFxuICAgICAgICBzdHJheS5lcnJvcignXFxcXFxcXFx1NjRhZFxcXFxcXFxcdTY1M2VcXFxcXFxcXHU1NzMwXFxcXFxcXFx1NTc0MFxcXFxcXFxcdTRlMGRcXFxcXFxcXHU1Zjk3XFxcXFxcXFx1NGUzYVxcXFxcXFxcdTdhN2EnKTtcXFxcbiAgICAgICAgcmV0dXJuIGZhbHNlXFxcXG4gICAgfVxcXFxuICAgIHR5cGUgPSB2aWRlb3R5cGUodmlkZW9VcmwpO1xcXFxuICAgIC8vbG9nKHR5cGUpXFxcXG4gICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKHBvc3QoTVlfSE9NRSArICcvc3RhdGljL3BsYXllci9hcnRwbGF5ZXIvYXBpLnBocD9hYz1nZXRkYXRlJywge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIngtcmVxdWVzdGVkLXdpdGhcXFxcXFxcIjogXFxcXFxcXCJYTUxIdHRwUmVxdWVzdFxcXFxcXFwiXFxcXG4gICAgICAgIH0sXFxcXG4gICAgICAgIGJvZHk6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwidXJsXFxcXFxcXCI6IHZpZGVvVXJsLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJ0eXBlXFxcXFxcXCI6IHR5cGUsXFxcXG4gICAgICAgICAgICBcXFxcXFxcInRpdGxlXFxcXFxcXCI6IHZvZF9uYW1lLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJyZWZlcmVyXFxcXFxcXCI6IGlucHV0XFxcXG4gICAgICAgIH1cXFxcbiAgICB9KSlcXFxcbiAgICBpZiAoZGF0YS5jb2RlID09IDIwMCkge1xcXFxuICAgICAgICBrZXkgPSBDcnlwdG9KUy5NRDUoXFxcXFxcXCJ4aWFvaHlzLmNvbVxcXFxcXFwiKS50b1N0cmluZygpLnNsaWNlKDAsIDE2KTtcXFxcbiAgICAgICAgY29uZmlnID0gSlNPTi5wYXJzZShjcnlwdEpzKGRhdGEucGxheWVyLCBrZXksIGRhdGEuaXYpKTtcXFxcbiAgICAgICAgcGxheV9pbmZvID0gSlNPTi5wYXJzZShjcnlwdEpzKGRhdGEuZGF0YSwga2V5LCBkYXRhLml2KSk7XFxcXG4gICAgICAgIGxvZyhwbGF5X2luZm8pXFxcXG4gICAgICAgIHBsYXl1cmwgPSBwbGF5X2luZm8udXJsXFxcXG5cXFxcblxcXFxuICAgICAgICBpZiAoL3ZcXFxcXFxcXC90eS8udGVzdChwbGF5dXJsKSkge1xcXFxuXFxcXG4gICAgICAgICAgICBldmFsKHJlcXVlc3QocGxheXVybCkubWF0Y2goL3ZhciByYW5kID0oW1xcXFxcXFxcc1xcXFxcXFxcU10qPzspezJ9LylbMF0pXFxcXG5cXFxcbiAgICAgICAgICAgIGZ1bmN0aW9uIGpzX2RlY3J5cHQoc3RyLCBrZXksIGl2KSB7XFxcXG4gICAgICAgICAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKVxcXFxuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShrZXkpO1xcXFxuICAgICAgICAgICAgICAgIHZhciBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGl2KTtcXFxcbiAgICAgICAgICAgICAgICB2YXIgZGVjcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoc3RyLCBrZXksIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaXY6IGl2LFxcXFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXFxcbiAgICAgICAgICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlY3J5cHRlZFxcXFxuICAgICAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgICAgICB2YXIgdmlkZW8gPSBKU09OLnBhcnNlKGpzX2RlY3J5cHQocGxheWVyLCAnVkZCVHpkdWpwUjlGV0JoZScsIHJhbmQpKS51cmxcXFxcbiAgICAgICAgICAgIHJldHVybiB2aWRlbyArICcjaXNWaWRlbz10cnVlIydcXFxcbiAgICAgICAgfSBlbHNlIGlmIChwbGF5dXJsID09PSB2aWRlb1VybCB8fCAvXFxcXFxcXFwuKG0zdTh8bXA0fGZsdnxhdml8bWt2KShcXFxcXFxcXD98JCkvaS50ZXN0KHBsYXl1cmwpID09PSBmYWxzZSkge1xcXFxuICAgIHJldHVybiAndG9hc3Q6Ly/op4bpopHlnLDlnYDml6DmlYjvvIzml6Dms5Xmkq3mlL4nXFxcXG59XFxcXG4gICAgICAgIHJldHVybiBwbGF5dXJsICsgJyNpc1ZpZGVvPXRydWUjJ1xcXFxuICAgIH1cXFxcblxcXFxufSwgTVlfSE9NRSlcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpqozor4HnoIFcXFwiLFxcXCJwYXRoXFxcIjpcXFwieXptXFxcIixcXFwicnVsZVxcXCI6XFxcIndoaWxlICgv6L6T5YWl6aqM6K+B56CBfOezu+e7n+WuieWFqOmqjOivgS8udGVzdChodG1sKSkge1xcXFxucmMoJ2h0dHBzOi8vZ2l0Y29kZS5uZXQvbGl1emFveXVlL2hhaS8tL3Jhdy9tYXN0ZXIvanV5dWUuanMnLCAyNCk7IFxcXFxuICAgIGxldCBoZWFkZXJzID0ge1xcXFxuICAgICAgICBcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogTU9CSUxFX1VBLFxcXFxuICAgICAgICBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogTVlfVVJMXFxcXG4gICAgfVxcXFxuICAgIGxldCBzeiA9IG9jcihNWV9IT01FICsgJy92ZXJpZnkvaW5kZXguaHRtbD8nLCBoZWFkZXJzKTsgICAgXFxcXG4gICAgIGZldGNoKE1ZX0hPTUUgKyBodG1sLm1hdGNoKC9cXFxcXFxcXC9pbmRleC5waHAuKj92ZXJpZnk9LylbMF0gKyBzeiwge1xcXFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxcXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcXFxuICAgIH0pICAgXFxcXG4gICAgdmFyIHl6ID0gTVlfVVJMXFxcXG4gICAvLyBsb2coTVlfVVJMKVxcXFxuICAgIGh0bWwgPSByZXF1ZXN0KHl6LCB7XFxcXG4gICAgICAgIC8vICAgaGVhZGVyczogaGVhZGVyc1xcXFxuICAgIH0pXFxcXG59XFxcXG5pZiAoL+mikee5geaTjeS9nC8udGVzdChodG1sKSkge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICfnvZHnq5nmkJzntKLml7bpl7Tpl7TpmpTljYHnp5InLFxcXFxuICAgIGRlc2M6IFxcXFxcXFwi5Y2B56eS5ZCO5LiL5ouJ5Yi35paw6YeN6K+VXFxcXFxcXCJcXFxcbn0pXFxcXG5cXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLnn63op4bliqjmgIFcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZHRmbFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbi8qXFxcXG5WZXIgMjAyMy0xMC0yOCAxLjBcXFxcbuWkh+azqO+8muS4jeimgeeUqOa1t+mYlOS7o+eggeagvOW8j+WMliDlhoXlrrnkvJrlh7rplJlcXFxcbuW/hemhu+WPguaVsO+8mlxcXFxu5YiG57G76aKc6ImyIOWkp+exu+WumuS9jSBcXFxcbuWwj+exu+WumuS9jSDliIbnsbvmoIfpopgg5YiG57G76ZO+5o6lXFxcXG5odG1sID0+5rqQ56CBIHBhZ2UgPT7pobXnoIFcXFxcbuWPr+mAieWPguaVsO+8mlxcXFxu5ou85o6l5YiG57G7IOaKmOWPoOagh+iusCDlsZXlvIDmoIforrAg5o6S6ZmkXFxcXG7lpKfnsbvpk77mjqUg5aSn57G75qCH6aKYIOa4hemZpOmUriDlvIDlkK/mipjlj6BcXFxcbumZhOWKoOWumuS9jVxcXFxu6K+05piO77yaXFxcXG7lpJbpnaLnlKhnZXRNeVZhcihNWV9SVUxFLnVybCkg5oiW6ICFIOeKtuaAgSDlj5bpk77mjqVcXFxcbumtlOaUuTrOsVxcXFxuKi9cXFxcblxcXFxubGV0IGVtcHR5ID0gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCI7XFxcXG5sZXQgY2F0ZWdvcmllcyA9IFtdO1xcXFxuaWYgKHR5cGVvZiAo5ou85o6l5YiG57G7KSAhPSAndW5kZWZpbmVkJyAmJiDmi7zmjqXliIbnsbsgIT0gJycpIHtcXFxcbiAgICBjYXRlZ29yaWVzID0gW3BkZmEoaHRtbCwg5aSn57G75a6a5L2NKS5qb2luKCdcXFxcXFxcXG4nKV07XFxcXG4gICAgaWYgKOaLvOaOpeWIhuexuy5pbmNsdWRlcygnOycpKSB7XFxcXG4gICAgICAgIOaLvOaOpeWIhuexuyA9IOaLvOaOpeWIhuexuy5zcGxpdCgnOycpO1xcXFxuICAgIH1cXFxcbiAgICBpZiAo5ou85o6l5YiG57G7LmNvbnN0cnVjdG9yID09IEFycmF5KSB7XFxcXG4gICAgICAgIOaLvOaOpeWIhuexuy5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMuY29uY2F0KHBkZmEoaHRtbCwgaXRlbSkpO1xcXFxuICAgICAgICB9KVxcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGNhdGVnb3JpZXMgPSBbcGRmYShodG1sLCDlpKfnsbvlrprkvY0pLmpvaW4oJ1xcXFxcXFxcbicpXS5jb25jYXQocGRmYShodG1sLCDmi7zmjqXliIbnsbspKTtcXFxcbiAgICB9XFxcXG4gICAgaWYgKHR5cGVvZiAo6ZmE5Yqg5a6a5L2NKSAhPSAndW5kZWZpbmVkJyAmJiDpmYTliqDlrprkvY0ubGVuZ3RoID4gMCkge1xcXFxuICAgICAgICDpmYTliqDlrprkvY0uZm9yRWFjaCh4ID0+IHtcXFxcbiAgICAgICAgICAgIHZhciDkuIDnuqcgPSBwZGZhKGh0bWwsIHgu5LiA57qn5a6a5L2NKS5tYXAocyA9PiB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIOWumuS9jSA9IHBkZmEocywgeC7lsI/nsbspLm1hcChxID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gcGRmaChxLCB4Luagh+mimCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAnYSdcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHgu6ZO+5o6lLmluY2x1ZGVzKCdAQCcpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHgu6ZO+5o6lLnNwbGl0KCdAQCcpWzBdXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBkZmgocSwgeC7pk77mjqUuc3BsaXQoJ0BAJylbMV0pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHgu6L2s5o2iID09IHRydWUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxsaSBkYXRhLXR5cGU9XFxcXFxcXCIke3N0YXRlfVxcXFxcXFwiIGRhdGEtdmFsPVxcXFxcXFwiJHt2YWx1ZX1cXFxcXFxcIj48YSBocmVmPVxcXFxcXFwiXFxcXFxcXCI+JHt0aXRsZX08L2E+PC9saT5gXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGEgdHlwZT1cXFxcXFxcIkBleHRyYVxcXFxcXFwiIHN0YXRlPVxcXFxcXFwiJHtzdGF0ZX1cXFxcXFxcIiB2YWx1ZT1cXFxcXFxcIiR7dmFsdWV9XFxcXFxcXCI+JHt0aXRsZX08L2E+YDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBwZChxLCB4LumTvuaOpSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxhIGhyZWY9XFxcXFxcXCIke2hyZWZ9XFxcXFxcXCI+JHt0aXRsZX08L2E+YDtcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiDlrprkvY07XFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIGNhdGVnb3JpZXMucHVzaCjkuIDnuqcuam9pbignXFxcXFxcXFxuJykpO1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59IGVsc2Uge1xcXFxuICAgIGNhdGVnb3JpZXMgPSBbcGRmYShodG1sLCDlpKfnsbvlrprkvY0pLmpvaW4oJ1xcXFxcXFxcbicpXTtcXFxcbn1cXFxcblxcXFxubGV0IGl0ZW1zID0gW107XFxcXG5sZXQgY2F0ZXMgPSBbXTtcXFxcbmxldCBpbml0X2NhdGUgPSBuZXcgQXJyYXkoMjApLmZpbGwoXFxcXFxcXCIwXFxcXFxcXCIpO1xcXFxuY29uc3QgZm9sZCA9IGdldE15VmFyKE1ZX1JVTEUuZ3JvdXAsIFxcXFxcXFwiMFxcXFxcXFwiKTtcXFxcbmNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoXFxcXFxcXCJoZWFkLmNhdGVcXFxcXFxcIiwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSkpO1xcXFxudmFyIOaKmOWPoOeKtuaAgSA9ICh0eXBlb2YgKOW8gOWQr+aKmOWPoCkgIT0gJ3VuZGVmaW5lZCcpID8g5byA5ZCv5oqY5Y+gIDogdHJ1ZTtcXFxcbnZhciDmipjlj6AgPSAodHlwZW9mICjmipjlj6DmoIforrApICE9ICd1bmRlZmluZWQnICYmIOaKmOWPoOagh+iusCAhPSAnJykgPyDmipjlj6DmoIforrAgOiAn4oCc4oCc4oCd4oCdJyArICfiiKgnLmZvbnRjb2xvcihcXFxcXFxcIiNGRjAwMDBcXFxcXFxcIik7XFxcXG52YXIg5bGV5byAID0gKHR5cGVvZiAo5bGV5byA5qCH6K6wKSAhPSAndW5kZWZpbmVkJyAmJiDlsZXlvIDmoIforrAgIT0gJycpID8g5bGV5byA5qCH6K6wIDogJ+KAnOKAnOKAneKAnScgKyAn4oinJy5mb250Y29sb3IoXFxcXFxcXCIjMWFhZDE5XFxcXFxcXCIpO1xcXFxudmFyIOa4hemZpCA9ICh0eXBlb2YgKOa4hemZpOmUrikgIT0gJ3VuZGVmaW5lZCcgJiYg5riF6Zmk6ZSuICE9ICcnKSA/IOa4hemZpOmUriA6IFtdO1xcXFxudmFyIOeKtuaAgSA9ICh0eXBlb2YgKOeKtuaAgeagh+iusCkgIT0gJ3VuZGVmaW5lZCcgJiYg54q25oCB5qCH6K6wICE9ICcnKSA/IOeKtuaAgeagh+iusCA6IE1ZX1JVTEUudXJsO1xcXFxudmFyIOWkp+exu+WkhOeQhiA9IHR5cGVvZiAo5LiA57qn5YiG57G75aSE55CGKSAhPSAndW5kZWZpbmVkJyA/IHRydWUgOiBmYWxzZTtcXFxcbnZhciDmkJzntKIgPSB0eXBlb2YgKOW8gOWQr+aQnOe0oikgIT0gJ3VuZGVmaW5lZCcgPyDlvIDlkK/mkJzntKIgOiBmYWxzZTtcXFxcbnZhciDlhajmuIUgPSAodHlwZW9mICjlhajmuIXplK4pICE9ICd1bmRlZmluZWQnICYmIOWFqOa4hemUriAhPSAnJykgPyDlhajmuIXplK4gOiBbXTtcXFxcbuWFqOa4hS51bnNoaWZ0KCd5aV9maXJzdHBhZ2UnKTtcXFxcblxcXFxuXFxcXG5pZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHtcXFxcbiAgICBpZiAo5pCc57SiKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCInaGlrZXI6Ly9zZWFyY2g/cnVsZT1cXFxcXFxcIiArIE1ZX1JVTEUudGl0bGUgKyBcXFxcXFxcIiZzPScraW5wdXRcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwi5pCc57Si5YWz6ZSu6K+NXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKCdrZXl3b3JkJywgJycpLFxcXFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2tleXdvcmQnLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSlcXFxcbiAgICB9XFxcXG4gICAgaWYgKOaKmOWPoOeKtuaAgSkge1xcXFxuICAgICAgICBpZiAocGFnZSA9PSAxKSB7XFxcXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogZm9sZCA9PT0gJzEnID8g5oqY5Y+gIDog5bGV5byALFxcXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFxcXFxcIiNub0xvYWRpbmcjXFxcXFxcXCIpLmxhenlSdWxlKCh0aXRsZSwgZm9sZCwgdSwgYWxsLCBleHBzKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBmb2xkID0gZ2V0TXlWYXIoTVlfUlVMRS5ncm91cCwgZm9sZCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBb5bGV5byALCDmipjlj6BdID0gZXhwcztcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvbGQgPT0gMSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN4ID0gZmluZEl0ZW1zQnlDbHModGl0bGUgKyAnY2F0ZV9idXR0b24nKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKCdjYXRlX2J1dHRvbicsIGN4KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscyh0aXRsZSArICdjYXRlX2J1dHRvbicpO1xcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN4ID0gc3RvcmFnZTAuZ2V0TXlWYXIoJ2NhdGVfYnV0dG9uJywgW10pLm1hcCh4ID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Wydjb2xfdHlwZSddID0geFsnY29sX3R5cGUnXSA/IHhbJ2NvbF90eXBlJ10gOiB4Wyd0eXBlJ107XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHg7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcih0aXRsZSArICdjYXRlX2xpbmUnLCBjeClcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAvKmFsbC5mb3JFYWNoKChpdGVtKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7Ki9cXFxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSh0aXRsZSArICdjYXRlX2V4cCcsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmb2xkID09IDEgPyDlsZXlvIAgOiDmipjlj6AsXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKE1ZX1JVTEUuZ3JvdXAsIGZvbGQgPT09IFxcXFxcXFwiMVxcXFxcXFwiID8gXFxcXFxcXCIwXFxcXFxcXCIgOiBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICB9LCBNWV9SVUxFLnRpdGxlLCBmb2xkLCDnirbmgIEsIOWFqOa4hSwgW+WxleW8gCwg5oqY5Y+gXSksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZDogTVlfUlVMRS50aXRsZSArICdjYXRlX2V4cCcsXFxcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5riF6Zmk54q25oCBJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh4LCBhbGwsIGNsKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcih4KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdoZWFkLmNhdGUnKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGwuZm9yRWFjaCgoaXRlbSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbC5mb3JFYWNoKChpdGVtKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCDnirbmgIEsIOWFqOa4hSwg5riF6ZmkKVxcXFxuICAgICAgICAgICAgICAgICAgICB9XVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgbGV0IHNldFRpdGxlID0gKGssIGksIHQpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuIGsgPT0gaSA/IFxcXFxcXFwi4oCc4oCc4oCd4oCdXFxcXFxcXCIgKyB0LmZvbnRjb2xvcijliIbnsbvpopzoibIpIDogdFxcXFxuICAgIH1cXFxcbiAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5LCBpbmRleCkgPT4ge1xcXFxuICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXMgPSBbXTtcXFxcbiAgICAgICAgaWYgKOWwj+exu+WumuS9jS5pbmNsdWRlcygnOycpKSB7XFxcXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllcyA9IHBkZmEoY2F0ZWdvcnksIOWwj+exu+WumuS9jS5zcGxpdCgnOycpWzBdKTtcXFxcbiAgICAgICAgICAgIGlmIChzdWJfY2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xcXFxuICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzID0gcGRmYShjYXRlZ29yeSwg5bCP57G75a6a5L2NLnNwbGl0KCc7JylbMV0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMgPSBwZGZhKGNhdGVnb3J5LCDlsI/nsbvlrprkvY0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xcXFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IF/lpKfnsbvpk77mjqUgPSAodHlwZW9mICjlpKfnsbvpk77mjqUpICE9ICd1bmRlZmluZWQnICYmIOWkp+exu+mTvuaOpSAhPSAnJykgPyDlpKfnsbvpk77mjqUgOiDliIbnsbvpk77mjqU7XFxcXG5cXFxcbiAgICAgICAgICAgICAgICBsZXQgX+Wkp+exu+agh+mimCA9ICh0eXBlb2YgKOWkp+exu+agh+mimCkgIT0gJ3VuZGVmaW5lZCcgJiYg5aSn57G75qCH6aKYICE9ICcnKSA/IOWkp+exu+agh+mimCA6IOWIhuexu+agh+mimDtcXFxcblxcXFxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHBkZmgoaXRlbSwgX+Wkp+exu+agh+mimCk7XFxcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAo5o6S6ZmkKSAhPSAndW5kZWZpbmVkJyAmJiDmjpLpmaQgIT0gJycpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAo5o6S6ZmkLCBcXFxcXFxcImdcXFxcXFxcIiksIFxcXFxcXFwiXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1zID0ge1xcXFxuICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCwga2V5OiBrZXksIHBhZ2U6IHBhZ2UsIGNsZWFyczog5riF6ZmkLCBzdGF0ZTog54q25oCBLCBhbGxjbGVhcnM6IOWFqOa4hVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcblxcXFxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSBwZChpdGVtLCBf5aSn57G76ZO+5o6lKTtcXFxcbiAgICAgICAgICAgICAgICBpZiAo5aSn57G75aSE55CGKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKOS4gOe6p+WIhuexu+WkhOeQhilcXFxcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coJC5zdHJpbmdpZnko5LiA57qn5YiG57G75aSE55CGKSlcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlucHV0ID0gdXJsO1xcXFxuICAgICAgICAgICAgICAgICAgICBldmFsKFxcXFxcXFwicmVzdWx0ID0gXFxcXFxcXCIgKyDkuIDnuqfliIbnsbvlpITnkIYpO1xcXFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhyZXN1bHQpXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybCA9IHJlc3VsdDtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZXRUaXRsZShrZXkudG9TdHJpbmcoKSwgY2F0ZV90ZW1wW2luZGV4XSwgdGl0bGUpLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQodXJsICsgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19jYXRlID0gW107XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2xlYXJzLmZvckVhY2goKGl0ZW0pID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFsbGNsZWFycy5mb3JFYWNoKChpdGVtKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcC5mb3JFYWNoKChjYXRlLCBpbmRleCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19jYXRlLnB1c2goaW5kZXggPT09IDAgPyBwYXJhbXMua2V5LnRvU3RyaW5nKCkgOiBcXFxcXFxcIjBcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcImhlYWQuY2F0ZVxcXFxcXFwiLCBKU09OLnN0cmluZ2lmeShuZXdfY2F0ZSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIocGFyYW1zLnN0YXRlLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW1zKVxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJibGFua19ibG9ja1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBNWV9SVUxFLnRpdGxlICsgJ2NhdGVfbGluZScsXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHZhciBleHRyYXBvcyA9IGZhbHNlO1xcXFxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmluY2x1ZGVzKCd0eXBlPVxcXFxcXFwiQGV4dHJhXFxcXFxcXCInKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYXBvcyA9IHRydWU7XFxcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKCfpmYTliqDlrprkvY0nKVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcblxcXFxuICAgICAgICAgICAgICAgIGlmIChleHRyYXBvcykge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKGl0ZW0sICdhJiZUZXh0Jyk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKOaOkumZpCkgIT0gJ3VuZGVmaW5lZCcgJiYg5o6S6ZmkICE9ICcnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2UobmV3IFJlZ0V4cCjmjpLpmaQsIFxcXFxcXFwiZ1xcXFxcXFwiKSwgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBwZGZoKGl0ZW0sICdhJiZzdGF0ZScpLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBkZmgoaXRlbSwgJ2EmJnZhbHVlJyksXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSwg5YiG57G75qCH6aKYKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAo5o6S6ZmkKSAhPSAndW5kZWZpbmVkJyAmJiDmjpLpmaQgIT0gJycpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdGl0bGUucmVwbGFjZShuZXcgUmVnRXhwKOaOkumZpCwgXFxcXFxcXCJnXFxcXFxcXCIpLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gJyc7XFxcXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSDliIbnsbvpk77mjqUuaW5jbHVkZXMoJ0BAQCcpOlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHBkZmgoaXRlbSwg5YiG57G76ZO+5o6lLnNwbGl0KCdAQEAnKVswXSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwZGZoKGl0ZW0sIOWIhuexu+mTvuaOpS5zcGxpdCgnQEBAJylbMV0pLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug5YiG57G76ZO+5o6lLmluY2x1ZGVzKCdAQCcpOlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IOWIhuexu+mTvuaOpS5zcGxpdCgnQEAnKVswXSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBkZmgoaXRlbSwg5YiG57G76ZO+5o6lLnNwbGl0KCdAQCcpWzFdKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSBwZChpdGVtLCDliIbnsbvpk77mjqUpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIC8qdmFyIGpzb2495YiG57G76ZO+5o6lLmluY2x1ZGVzKCdAQEAnKT97XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTpwZGZoKGl0ZW0s5YiG57G76ZO+5o6lLnNwbGl0KCdAQEAnKVswXSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6cGRmaChpdGVtLOWIhuexu+mTvuaOpS5zcGxpdCgnQEBAJylbMV0pLFxcXFxuICAgICAgICAgICAgICAgICAgICAgfTpwZChpdGVtLOWIhuexu+mTvuaOpSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICBcXFxcbiAgICAgICAgICAgICAgICAgICAgIGpzb2495YiG57G76ZO+5o6lLmluY2x1ZGVzKCdAQCcpP3tcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOuWIhuexu+mTvuaOpS5zcGxpdCgnQEAnKVswXSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpwZGZoKGl0ZW0s5YiG57G76ZO+5o6lLnNwbGl0KCdAQCcpWzFdKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgIH06cGQoaXRlbSzliIbnsbvpk77mjqUpOyovXFxcXG5cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG5cXFxcbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1zID0ge1xcXFxuICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCwgaW5kZXg6IGluZGV4LCBrZXk6IGtleSwgcGFnZTogcGFnZSwganNvbjoganNvbiwgc3RhdGU6IOeKtuaAgSwgYWxsY2xlYXJzOiDlhajmuIVcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgY2F0ZXMucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZXRUaXRsZShrZXkudG9TdHJpbmcoKSwgY2F0ZV90ZW1wW2luZGV4XSwgdGl0bGUpLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHknICsgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFsbGNsZWFycy5mb3JFYWNoKChpdGVtKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXBbcGFyYW1zLmluZGV4XSA9IHBhcmFtcy5rZXkudG9TdHJpbmcoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXFxcXFwiaGVhZC5jYXRlXFxcXFxcXCIsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMuanNvbi5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2R0XycgKyBwYXJhbXMuanNvbi50eXBlLCBwYXJhbXMuanNvbi52YWx1ZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKHBhcmFtcy5zdGF0ZSwgcGFyYW1zLmpzb24pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtcyksXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IE1ZX1JVTEUudGl0bGUgKyAnY2F0ZV9idXR0b24nLFxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIGNhdGVzLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImJsYW5rX2Jsb2NrXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgY2xzOiBNWV9SVUxFLnRpdGxlICsgJ2NhdGVfYnV0dG9uJyxcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pXFxcXG59XFxcXG5cXFxcblxcXFxuaWYgKGZvbGQgPT09IFxcXFxcXFwiMVxcXFxcXFwiIHx8IOaKmOWPoOeKtuaAgSA9PSBmYWxzZSkge1xcXFxuICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KGNhdGVzKTtcXFxcbn1cXFxcbmlmIChmb2xkID09PSBcXFxcXFxcIjBcXFxcXFxcIikge1xcXFxuICAgIHN0b3JhZ2UwLnB1dE15VmFyKCdjYXRlX2J1dHRvbicsIGNhdGVzKVxcXFxufVxcXFxuaWYgKHR5cGVvZiBzZXRQcmVSZXN1bHQgIT0gJ3VuZGVmaW5lZCcpIHtcXFxcbiAgICBpdGVtcyA9IGQuY29uY2F0KGl0ZW1zKTtcXFxcbiAgICAvL+a4heepuue7p+aJv+aVsOe7hFxcXFxuICAgIGQubGVuZ3RoID0gMDtcXFxcbiAgICBzZXRQcmVSZXN1bHQoaXRlbXMpO1xcXFxufSBlbHNlIHtcXFxcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICBkLnB1c2goaXRlbSk7XFxcXG4gICAgfSlcXFxcbn1cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS6jOe6p1xcXCIsXFxcInBhdGhcXFwiOlxcXCJlalxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKTtcXFxcblxcXFxudmFyIGFydHMgPSBwZGZhKGh0bWwsICcubmF2LXN3aXBlciYmYTpub3QoOm1hdGNoZXMo5LiL6L29KSknKTtcXFxcblxcXFxudmFyIHRhYnMgPSBbXTtcXFxcbmZvciAodmFyIGkgaW4gYXJ0cykge1xcXFxuICAgIHRhYnMucHVzaChwZGZoKGFydHNbaV0sICdUZXh0JykpXFxcXG59XFxcXG5cXFxcbnZhciBjb250cyA9IHBkZmEoaHRtbCwgJ2JvZHkmJi5hbnRob2xvZ3ktbGlzdC1ib3gnKTtcXFxcblxcXFxudmFyIGxpc3RzID0gW107XFxcXG5mb3IgKHZhciBpIGluIGNvbnRzKSB7XFxcXG4gICAgbGlzdHMucHVzaChwZGZhKGNvbnRzW2ldLCAnYm9keSYmYScpKVxcXFxufVxcXFxudHJ5IHtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IHBkZmgoaHRtbCwgJy5zZWFyY2gtc2hvdyYmbGk6Y29udGFpbnMo5a+85ryU77yaKSYmVGV4dCcpLnN1YnN0cmluZygwLCAxOCkgK1xcXFxuICAgICAgICAnXFxcXFxcXFxuJyArXFxcXG4gICAgICAgICdcXFxcXFxcXG4nICtcXFxcbiAgICAgICAgICAgICBwZGZoKGh0bWwsXFxcXG4nLnNlYXJjaC1zaG93JiZsaTpjb250YWlucyjkuLvmvJTvvJopJiZUZXh0Jykuc3Vic3RyaW5nKDAsIDE4KSxcXFxcbiAgICBkZXNjOiBwZGZoKGh0bWwsICcuc2VhcmNoLXNob3cmJmxpOmNvbnRhaW5zKOabtOaWsO+8mikmJlRleHQnKSxcXFxcbiAgICBpbWc6IE1ZX1BBUkFNUy5waWMsXFxcXG4gICAgdXJsOiBNWV9VUkwsXFxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJyxleHRyYToge2dyYWRpZW50OiB0cnVlfVxcXFxufSk7XFxcXG52YXIg566A5LuLID0gcGRmaChodG1sLCAnLnRvcDI2JiZUZXh0JylcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICfigJjigJjigJnigJk8c21hbGw+PGZvbnQgY29sb3I9XFxcXFxcXCIjZmYxNDhlOGVcXFxcXFxcIj4nICsg566A5LuLLnN1YnN0cigwLCA1NSkgKyAnLi4uPC9mb250PjxzbWFsbD48Zm9udCBjb2xvcj1cXFxcXFxcInJlZFxcXFxcXFwiPuivpuaDhTwvZm9udD48L3NtYWxsPjwvc21hbGw+JyxcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyAnXFxcXFxcXFxuJyArIOeugOS7iyArJyNub0hpc3RvcnkjJyArIGBAcnVsZT1qczogdmFyIGQgPSBbXTtkLnB1c2goe3RpdGxlOiflvbHniYfnroDku4vvvJonKyBNWV9VUkwuc3BsaXQoJyMnKVsxXSxjb2xfdHlwZTogJ2xvbmdfdGV4dCd9KTsgc2V0UmVzdWx0KGQpO2AsXFxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXG59KTtcXFxcbn0gY2F0Y2ggKGUpIHtcXFxcbmQucHVzaCh7XFxcXG4gICAgaW1nOiBwZChodG1sLCBcXFxcbicudGhpcy1waWMtYmomJnN0eWxlJykucmVwbGFjZShcXFxcXFxcImJhY2tncm91bmQtaW1hZ2U6IHVybCgnXFxcXFxcXCIsXFxcXFxcXCJcXFxcXFxcIikucmVwbGFjZShcXFxcXFxcIicpXFxcXFxcXCIsXFxcXFxcXCJcXFxcXFxcIikgKydAUmVmZXJlcj0nLFxcXFxuICAgIHVybDogTVlfVVJMLFxcXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsZXh0cmE6IHtncmFkaWVudDogdHJ1ZX1cXFxcbn0pO1xcXFxufVxcXFxuXFxcXG4gZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvbGF6eScsIHt9KSkucnVsZSk7XFxcXG5cXFxcbmZ1bmN0aW9uIHNldFRhYnModGFicywgdmFyaSkge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAoZ2V0VmFyKCdzaHNvcnQnKSA9PSAnMScpID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6ICNGRjAwMDBcXFxcXFxcIj7pgIbluo88L3NwYW4+PC9iPicgOiAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogIzFhYWQxOVxcXFxcXFwiPuato+W6jzwvc3Bhbj48L2I+JyxcXFxcbiAgICAgICAgdXJsOiBgQGxhenlSdWxlPS5qczpsZXQgY29uZiA9IGdldFZhcignc2hzb3J0Jyk7aWYoY29uZj09JzEnKXtwdXRWYXIoe2tleTonc2hzb3J0JywgdmFsdWU6JzAnfSk7fWVsc2V7cHV0VmFyKHtrZXk6J3Noc29ydCcsIHZhbHVlOicxJ30pfTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaOkuW6j+aIkOWKnydgLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcXFxuICAgIH0pXFxcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgIHZhciB1cmwgPSBcXFxcXFxcIiNub0xvYWRpbmcjQGxhenlSdWxlPS5qczpwdXRWYXIoJ1xcXFxcXFwiICsgdmFyaSArIFxcXFxcXFwiJywgJ1xcXFxcXFwiICsgaSArIFxcXFxcXFwiJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIh+aNouaIkOWKn++8gSc7JyNub0hpc3RvcnkjaGlrZXI6Ly9lbXB0eSdcXFxcXFxcIjtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBnZXRWYXIodmFyaSwgJzAnKSA9PSBpID8gJ+KAnOKAnCcgKyB0YWJzW2ldICsgJ+KAneKAnScgOiB0YWJzW2ldLFxcXFxuICAgICAgICAgICAgdXJsOiB1cmwsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcXFxuICAgICAgICB9KVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gc2V0TGlzdHMobGlzdHMsIGluZGV4KSB7XFxcXG4gICAgdmFyIGxpc3QgPSBsaXN0c1tpbmRleF07XFxcXG4gICAgaWYgKGdldFZhcignc2hzb3J0JykgPT0gJzEnKSB7XFxcXG4gICAgICAgIHZhciBsaXN0ID0gbGlzdHNbaW5kZXhdLnJldmVyc2UoKTtcXFxcbiAgICB9XFxcXG4gICAgZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnYSYmVGV4dCcpXFxcXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL+esrChcXFxcXFxcXGQrKembhi8sICckMScpXFxcXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoJ+esrCcsICcnKVxcXFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCfmnJ8nLCAnJyksXFxcXG4gICAgICAgICAgICB1cmw6IHBkKGxpc3Rbal0sICdhJiZocmVmJykgKyBsYXp5LFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IGxpc3QubGVuZ3RoID4gMyA/ICd0ZXh0XzQnIDogJ3RleHRfMidcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxufVxcXFxuXFxcXG5zZXRUYWJzKHRhYnMsIE1ZX1VSTCk7XFxcXG5zZXRMaXN0cyhsaXN0cywgZ2V0VmFyKE1ZX1VSTCwgJzAnKSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxufSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPjxmb250IGNvbG9yPSMyMGIyYWE+5pWw5o2u6LWE5rqQ5pS26ZuG5LqO572R57uc77yM5rW36ZiU5LiN5o+Q5L6b5Lu75L2V6LWE5rqQ77yBPC9mb250Pjwvc21hbGw+JyxcXFxcbiAgICBkZXNjOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPjxmb250IGNvbG9yPSNmZjdmNTA+5pys6KeE5YiZ5LuF6ZmQ5a2m5Lmg5LiO5Lqk5rWB77yM6K+35a+85YWl5ZCOMjTlsI/ml7blhoXliKDpmaTvvIzor7fli7/kvKDmkq3vvIE8L2ZvbnQ+PC9zbWFsbD4nLFxcXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcXFxuICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxcXG4gICAgfVxcXFxufSk7XFxcXG5cXFxcbnNldFJlc3VsdChkKTtcXFwifV1cIn0iLCJwaWNVcmwiOiJodHRwczovL3BpYy5yeS1waWMuY29tL3VwbG9hZC92b2QvMjAyNDEwMjctMS9jNTNjYjIwMGUyNmIxMDVkNmZmYzFiMjEyNTY5ZWJhMS53ZWJwQFJlZmVyZXI9IiwidGl0bGUiOiLmgKrlpYfnianor60g56ys5LiA5a2jIn0=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement