K-EnterTech Hub

Cross Border Content Studio and news media outlet with entertainment tech, streaming, AI, Metaverse

Sign In Subscribe
  • Home
  • K-OUTBOUND
  • EnterTech
  • AI
  • Policy
  • Streaming/FAST
  • Creator
  • Opinion
  • People
  • TV & Telecom
  • Data
  • Events
  • Local Tech
  • About
  • Shop
PHNjcmlwdCBpZD0ia3RoLWxhbmdwLWpzIj53aW5kb3cuS1RITEFOR1A9ZnVuY3Rpb24oKXt0cnl7dmFyIGM9KGRvY3VtZW50LmJvZHkmJmRvY3VtZW50LmJvZHkuY2xhc3NOYW1lKXx8Jyc7aWYoYy5pbmRleE9mKCdwb3N0LXRlbXBsYXRlJyk+LTEpe3JldHVybiBjLmluZGV4T2YoJ3RhZy1lbmdsaXNoJyk+LTE/J2VuJzona28nO319Y2F0Y2goZSl7fXJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgia3RoX2xhbmciKXx8J2VuJzt9Ozwvc2NyaXB0Pgo8c3R5bGUgaWQ9Imt0aC1hZC1jc3MiPi5rdGgtYWR7ZGlzcGxheTpibG9jazttYXJnaW46MzRweCBhdXRvO3BhZGRpbmc6MTVweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkICNFM0RGRDY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0UzREZENjt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7bWF4LXdpZHRoOjY2MHB4fS5rdGgtYWQtbHtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206MTBweDtmb250OjcwMCA5LjVweC8xIEludGVyLHN5c3RlbS11aSxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4xOGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjojQTlBNjlDfS5rdGgtYWQgaW1ne2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzttYXJnaW46MCBhdXRvfS5rdGgtYWQtY3tkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6OXB4O2ZvbnQ6NTAwIDEyLjVweC8xLjUgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6IzVBNTk1Mn0ua3RoLXVzZHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tbGVmdDo1cHg7Zm9udC1zaXplOi42NmVtO2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojNzc3NTZFO3doaXRlLXNwYWNlOm5vd3JhcDtsZXR0ZXItc3BhY2luZzowfTwvc3R5bGU+CjxzY3JpcHQgaWQ9Imt0aC1hZC1qcyI+KGZ1bmN0aW9uKCl7dmFyIEQ9ZG9jdW1lbnQ7ZnVuY3Rpb24gZW4oKXt0cnl7cmV0dXJuIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgia3RoX2xhbmciKXx8ImtvIik9PT0iZW4iO31jYXRjaChlKXtyZXR1cm4gZmFsc2U7fX1mdW5jdGlvbiBob3N0KCl7cmV0dXJuIEQucXVlcnlTZWxlY3RvcigiLm55dC1wb3N0LWNvbnRlbnQiKTt9ZnVuY3Rpb24gbWFrZShyb3csRSl7dmFyIHA9cm93LnNwbGl0KCJ8Iik7aWYocC5sZW5ndGg8M3x8IXBbMV18fCFwWzJdKXJldHVybiBudWxsO3ZhciBhPUQuY3JlYXRlRWxlbWVudCgiYSIpO2EuY2xhc3NOYW1lPSJrdGgtYWQiO2EuaHJlZj1wWzJdO2EudGFyZ2V0PSJfYmxhbmsiO2EucmVsPSJzcG9uc29yZWQgbm9vcGVuZXIgbm9yZWZlcnJlciI7dmFyIGw9RC5jcmVhdGVFbGVtZW50KCJzcGFuIik7bC5jbGFzc05hbWU9Imt0aC1hZC1sIjtsLnRleHRDb250ZW50PUU/IkFkdmVydGlzZW1lbnQiOiJcdUFEMTFcdUFDRTAiO2EuYXBwZW5kQ2hpbGQobCk7dmFyIGltPUQuY3JlYXRlRWxlbWVudCgiaW1nIik7aW0uc3JjPXBbMV07aW0uYWx0PXBbM118fCIiO2ltLmxvYWRpbmc9ImxhenkiO2EuYXBwZW5kQ2hpbGQoaW0pO2lmKHBbNF0pe3ZhciBjPUQuY3JlYXRlRWxlbWVudCgic3BhbiIpO2MuY2xhc3NOYW1lPSJrdGgtYWQtYyI7Yy50ZXh0Q29udGVudD1wWzRdO2EuYXBwZW5kQ2hpbGQoYyk7fXJldHVybiBhO31mdW5jdGlvbiBwbGFjZShyb3dzLEUpe3ZhciBoPWhvc3QoKTtpZighaHx8aC5xdWVyeVNlbGVjdG9yKCIua3RoLWFkIikpcmV0dXJuO3ZhciBtaWQ9cm93cy5maWx0ZXIoZnVuY3Rpb24ocil7dmFyIHM9ci5zcGxpdCgifCIpWzBdO3JldHVybiBzPT09Im1pZCJ8fHM9PT0iYm90aCI7fSk7dmFyIGVuZD1yb3dzLmZpbHRlcihmdW5jdGlvbihyKXt2YXIgcz1yLnNwbGl0KCJ8IilbMF07cmV0dXJuIHM9PT0iZW5kInx8cz09PSJib3RoIjt9KTtpZihtaWQubGVuZ3RoKXt2YXIgcHM9W10uc2xpY2UuY2FsbChoLnF1ZXJ5U2VsZWN0b3JBbGwoInAiKSkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBuLnRleHRDb250ZW50LnRyaW0oKS5sZW5ndGg+NjA7fSk7dmFyIHQ9cHNbNF18fHBzWzNdfHxwc1syXXx8cHNbcHMubGVuZ3RoLTFdO2lmKHQmJnQucGFyZW50Tm9kZSl7dmFyIG49bWFrZShtaWRbMF0sRSk7aWYobil0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4sdC5uZXh0U2libGluZyk7fX1pZihlbmQubGVuZ3RoKXt2YXIgdz1oLmxhc3RFbGVtZW50Q2hpbGR8fGg7dmFyIG4yPW1ha2UoZW5kWzBdLEUpO2lmKG4yKXcuYXBwZW5kQ2hpbGQobjIpO319ZnVuY3Rpb24gZ28oKXtpZighaG9zdCgpKXJldHVybjt2YXIgRT1lbigpO2ZldGNoKCIva3RoLWFkcy8iLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gci5vaz9yLnRleHQoKToiIjt9KS50aGVuKGZ1bmN0aW9uKGgpe2lmKCFoKXJldHVybjt2YXIgZD1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGgsInRleHQvaHRtbCIpO3ZhciBlbD1kLmdldEVsZW1lbnRCeUlkKEU/Imt0aGFkcy1lbiI6Imt0aGFkcy1rbyIpO2lmKCFlbClyZXR1cm47dmFyIHY9KGVsLnRleHRDb250ZW50fHwiIikudHJpbSgpO2lmKCF2KXJldHVybjt2YXIgcm93cz12LnNwbGl0KCJ+IikuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4LmluZGV4T2YoInwiKT4wO30pO2lmKCFyb3dzLmxlbmd0aClyZXR1cm47cGxhY2Uocm93cyxFKTt9KS5jYXRjaChmdW5jdGlvbigpe30pO31pZihELnJlYWR5U3RhdGU9PT0ibG9hZGluZyIpRC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZ28sNzAwKTt9KTtlbHNlIHNldFRpbWVvdXQoZ28sNzAwKTt9KSgpOzwvc2NyaXB0Pgo8c2NyaXB0IGlkPSJrdGgtcGF5d2FsbC1lbiI+KGZ1bmN0aW9uKCl7dmFyIEQ9ZG9jdW1lbnQ7dmFyIE09W1si6rOE7IaNIOydveycvOyLnOugpOuptCDsp4DquIgg6rWs64+F7ZW07KO87IS47JqUIiwiU3Vic2NyaWJlIHRvIGtlZXAgcmVhZGluZyJdLFsi7LKrIDLqsJzsm5Qg64+Z7JWIIDUwJSDtlaDsnbjqsIDqsIAg7KCB7Jqp65Cp64uI64ukLiDsnbTtm4Tsl5Qg4oKpMTAsMDAw7J20IOqysOygnOuQqeuLiOuLpC4iLCI1MCUgb2ZmIGZvciB0aGUgZmlyc3QgdHdvIG1vbnRocywgdGhlbiDigqkxMCwwMDAgKGFib3V0IFVTJDcpIGEgbW9udGguIl0sWyLri6TsnYwg7KCV6riw6rKw7KCcIDfsnbwg7KCEIOyekOuPmeqysOygnCDslYjrgrQg66mU7J287J2EIOuztOuCtOuTnOumveuLiOuLpC4g6rGx7KCVIOyXhuydtCDsnKDro4wg6rWs64+F7ZWY7IS47JqULiIsIldlIGVtYWlsIHlvdSA3IGRheXMgYmVmb3JlIGVhY2ggcmVuZXdhbCwgc28gdGhlcmUgYXJlIG5vIHN1cnByaXNlcy4iXSxbIuydtOuvuCDqtazrj4Ug7KSR7J207Iuc66m0IOuhnOq3uOyduCDtlZjshLjsmpQiLCJBbHJlYWR5IGEgc3Vic2NyaWJlcj8gU2lnbiBpbiJdLFsi7JuU6rCEIOyalOq4iCDrjIDruYQgMTMlIOyggOugtCIsIjEzJSBsZXNzIHRoYW4gbW9udGhseSJdLFsi7JuU6rCEIOyalOq4iCDrjIDruYQgMjIlIOyggOugtCIsIjIyJSBsZXNzIHRoYW4gbW9udGhseSJdLFsiM+qwnOyblCDrqaTrsoTsi60iLCIzLW1vbnRoIG1lbWJlcnNoaXAiXSxbIuyXsOqwhCDrqaTrsoTsi60iLCJBbm51YWwgbWVtYmVyc2hpcCJdLFsi7JuU6rCEIOuppOuyhOyLrSIsIk1vbnRobHkgbWVtYmVyc2hpcCJdLFsi7Jyg66OMIOq1rOuPhe2VmOq4sCIsIlN1YnNjcmliZSJdLFsi6rWs64+F7ZWY6riwIiwiU3Vic2NyaWJlIl0sWyLroZzqt7jsnbgg7ZWY7IS47JqUIiwiU2lnbiBpbiJdLFsi66Gc6re47J24IiwiU2lnbiBpbiJdLFsiMSBtb250aCAxMCwwMDAgd29uLCAzIG1vbnRocyAyNiwwMDAgd29uLCAxIHllYXIgOTQsMDAwIHdvbiIsIjEgbW9udGggXFx1MjBBOTEwLDAwMCAoVVMkNykgXFx1MDBCNyAzIG1vbnRocyBcXHUyMEE5MjYsMDAwIChVUyQxOSkgXFx1MDBCNyAxIHllYXIgXFx1MjBBOTk0LDAwMCAoVVMkNjgpIl1dLFU9eyI1LDAwMCI6IlVTJDQiLCIxMCwwMDAiOiJVUyQ3IiwiMjYsMDAwIjoiVVMkMTkiLCI5NCwwMDAiOiJVUyQ2OCJ9O2Z1bmN0aW9uIGVuKCl7dHJ5e3JldHVybiAoKHdpbmRvdy5LVEhMQU5HUD93aW5kb3cuS1RITEFOR1AoKTpsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgia3RoX2xhbmciKSl8fCJrbyIpPT09ImVuIjt9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlO319ZnVuY3Rpb24gYm94KCl7cmV0dXJuIEQucXVlcnlTZWxlY3RvcigiLnBvc3QtdXBncmFkZS1tZXNzYWdlLWNvbnRlbnQiKXx8RC5xdWVyeVNlbGVjdG9yKCIucG9zdC11cGdyYWRlLW1lc3NhZ2UiKTt9ZnVuY3Rpb24gbW9uZXkocil7dmFyIHN0PXIucXVlcnlTZWxlY3RvckFsbCgic3Ryb25nIik7Zm9yKHZhciBpPTA7aTxzdC5sZW5ndGg7aSsrKXt2YXIgcz1zdFtpXSxrPShzLnRleHRDb250ZW50fHwiIikudHJpbSgpO2lmKCFVW2tdKWNvbnRpbnVlO3ZhciBueD1zLm5leHRFbGVtZW50U2libGluZztpZihueCYmbnguY2xhc3NOYW1lPT09Imt0aC11c2QiKWNvbnRpbnVlO3ZhciB1PUQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3UuY2xhc3NOYW1lPSJrdGgtdXNkIjt1LnRleHRDb250ZW50PSIoIitVW2tdKyIpIjtzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHUscy5uZXh0U2libGluZyk7fX1mdW5jdGlvbiBmaXgoKXt2YXIgcj1ib3goKTtpZighcilyZXR1cm4gZmFsc2U7dHJ5e21vbmV5KHIpO31jYXRjaChlKXt9aWYoIWVuKCkpcmV0dXJuIHRydWU7dmFyIHc9RC5jcmVhdGVUcmVlV2Fsa2VyKHIsTm9kZUZpbHRlci5TSE9XX1RFWFQsbnVsbCxmYWxzZSksbixucz1bXTt3aGlsZShuPXcubmV4dE5vZGUoKSl7dmFyIHQ9bi5ub2RlVmFsdWV8fCIiO2lmKC9bXHVBQzAwLVx1RDdBM10vLnRlc3QodCl8fHQuaW5kZXhPZigiIHdvbiIpPj0wKW5zLnB1c2gobik7fWZvcih2YXIgaT0wO2k8bnMubGVuZ3RoO2krKyl7dmFyIHY9bnNbaV0ubm9kZVZhbHVlO2Zvcih2YXIgaz0wO2s8TS5sZW5ndGg7aysrKXtpZih2LmluZGV4T2YoTVtrXVswXSk+PTApdj12LnNwbGl0KE1ba11bMF0pLmpvaW4oTVtrXVsxXSk7fWlmKHYhPT1uc1tpXS5ub2RlVmFsdWUpbnNbaV0ubm9kZVZhbHVlPXY7fXJldHVybiAhL1tcdUFDMDAtXHVEN0EzXS8udGVzdChyLnRleHRDb250ZW50KTt9dmFyIHQ9MCxpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3QrKzt2YXIgZD1mYWxzZTt0cnl7ZD1maXgoKTt9Y2F0Y2goZSl7fWlmKHQ+MjB8fChkJiZ0PjMpKWNsZWFySW50ZXJ2YWwoaXYpO30sMTIwMCk7dHJ5e2ZpeCgpO31jYXRjaChlKXt9fSkoKTs8L3NjcmlwdD4KPHN0eWxlIGlkPSJrdGgtZGQtY3NzIj4ua3RoLWRke3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5rdGgtZGQtY3ttYXJnaW4tbGVmdDo1cHg7Zm9udC1zaXplOi43ZW07bGluZS1oZWlnaHQ6MTtvcGFjaXR5Oi42O2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5rdGgtZGQtbXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTttaW4td2lkdGg6MTc2cHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI0UzREZENjtib3gtc2hhZG93OjAgNnB4IDIycHggcmdiYSgyMCwyMSwyNiwuMTEpO3BhZGRpbmc6NnB4IDA7bWFyZ2luLXRvcDo4cHg7ei1pbmRleDoxMjAwO2Rpc3BsYXk6bm9uZTtib3JkZXItcmFkaXVzOjNweH0ua3RoLWRkLm9wZW4gLmt0aC1kZC1tLC5rdGgtZGQ6aG92ZXIgLmt0aC1kZC1te2Rpc3BsYXk6YmxvY2t9Lmt0aC1kZC1tIGF7ZGlzcGxheTpibG9jaztwYWRkaW5nOjlweCAxNnB4O2ZvbnQ6NjAwIDEzcHgvMS4zNSBJbnRlciwiUHJldGVuZGFyZCBWYXJpYWJsZSIsUHJldGVuZGFyZCxzeXN0ZW0tdWksc2Fucy1zZXJpZjtjb2xvcjojMTQxNTFBIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7d2hpdGUtc3BhY2U6bm93cmFwfS5rdGgtZGQtbSBhOmhvdmVye2JhY2tncm91bmQ6I0YzRjBFODtjb2xvcjojMTYzMDVDIWltcG9ydGFudH0ua3RoLWRkLW0gYSBzcGFue2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoycHg7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOiM4QTg4N0Z9QG1lZGlhKG1heC13aWR0aDo5MDBweCl7Lmt0aC1kZC1te3Bvc2l0aW9uOnN0YXRpYzt0cmFuc2Zvcm06bm9uZTtib3gtc2hhZG93Om5vbmU7Ym9yZGVyOjA7Ym9yZGVyLWxlZnQ6MnB4IHNvbGlkICNFM0RGRDY7bWFyZ2luOjRweCAwIDRweCAxMnB4O3BhZGRpbmc6MnB4IDA7bWluLXdpZHRoOjB9Lmt0aC1kZDpob3ZlciAua3RoLWRkLW17ZGlzcGxheTpub25lfS5rdGgtZGQub3BlbiAua3RoLWRkLW17ZGlzcGxheTpibG9ja319PC9zdHlsZT48c2NyaXB0IGlkPSJrdGgtZGQtanMiPihmdW5jdGlvbigpe3ZhciBEPWRvY3VtZW50O3ZhciBLSURTPVt7aDoiL3RhZy9uZXZhZGEtdXMtc3RhdGUtd2F0Y2gvIixrbzpbIlx1QUUwMFx1Qjg1Q1x1QkM4QyIsIlx1RDU3NFx1QzY3OCBcdUM5QzBcdUM1RUQgXHVEMTRDXHVEMDZDIl0sZW46WyJHbG9iYWwiLCJUZWNoIGJleW9uZCBLb3JlYSJdfSx7aDoiL3RhZy9sb2NhbC10ZWNoLWtvcmVhLyIsa286WyJcdUQ1NUNcdUFENkQiLCJcdUM5QzBcdUM3OTBcdUNDQjRcdTAwQjdcdUM5QzBcdUM1RUQgXHVDMEIwXHVDNUM1Il0sZW46WyJLb3JlYSIsIlJlZ2lvbmFsIGluZHVzdHJ5IGF0IGhvbWUiXX1dO2Z1bmN0aW9uIGVuKCl7dHJ5e3JldHVybiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oImt0aF9sYW5nIil8fCJrbyIpPT09ImVuIjt9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlO319ZnVuY3Rpb24gYnVpbGQoYSl7aWYoIWF8fGEuX19rZGQpcmV0dXJuO2EuX19rZGQ9MTt2YXIgRT1lbigpLHA9YS5wYXJlbnROb2RlO2lmKCFwKXJldHVybjt2YXIgdz1ELmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt3LmNsYXNzTmFtZT0ia3RoLWRkIjtwLmluc2VydEJlZm9yZSh3LGEpO3cuYXBwZW5kQ2hpbGQoYSk7dmFyIGM9RC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Yy5jbGFzc05hbWU9Imt0aC1kZC1jIjtjLnRleHRDb250ZW50PSJcdTI1QkUiO2EuYXBwZW5kQ2hpbGQoYyk7dmFyIG09RC5jcmVhdGVFbGVtZW50KCJzcGFuIik7bS5jbGFzc05hbWU9Imt0aC1kZC1tIjtmb3IodmFyIGk9MDtpPEtJRFMubGVuZ3RoO2krKyl7dmFyIGs9S0lEU1tpXSxsYj1FP2suZW46ay5rbzt2YXIgbD1ELmNyZWF0ZUVsZW1lbnQoImEiKTtsLmhyZWY9ay5oO2wudGV4dENvbnRlbnQ9bGJbMF07dmFyIHM9RC5jcmVhdGVFbGVtZW50KCJzcGFuIik7cy50ZXh0Q29udGVudD1sYlsxXTtsLmFwcGVuZENoaWxkKHMpO20uYXBwZW5kQ2hpbGQobCk7fXcuYXBwZW5kQ2hpbGQobSk7Yy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZXYpe2V2LnByZXZlbnREZWZhdWx0KCk7ZXYuc3RvcFByb3BhZ2F0aW9uKCk7dy5jbGFzc0xpc3QudG9nZ2xlKCJvcGVuIik7fSk7RC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZXYpe2lmKCF3LmNvbnRhaW5zKGV2LnRhcmdldCkpdy5jbGFzc0xpc3QucmVtb3ZlKCJvcGVuIik7fSk7fWZ1bmN0aW9uIGdvKCl7dmFyIGFzPUQucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmKj0ibmV2YWRhLXVzLXN0YXRlLXdhdGNoIl0nKTtmb3IodmFyIGk9MDtpPGFzLmxlbmd0aDtpKyspe3ZhciBhPWFzW2ldO2lmKGEuY2xvc2VzdCgiLmt0aC1kZC1tIikpY29udGludWU7aWYoIWEuY2xvc2VzdCgibmF2IikmJiFhLmNsb3Nlc3QoImhlYWRlciIpKWNvbnRpbnVlO2J1aWxkKGEpO319aWYoRC5yZWFkeVN0YXRlPT09ImxvYWRpbmciKUQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGdvLDMwMCk7fSk7ZWxzZSBzZXRUaW1lb3V0KGdvLDMwMCk7c2V0VGltZW91dChnbywxNjAwKTtzZXRUaW1lb3V0KGdvLDM1MDApO30pKCk7PC9zY3JpcHQ+PHN0eWxlIGlkPSJrdGgtc3ViLWNzcyI+Lmt0aC1ubGItYnRuc3ttYXJnaW4tdG9wOjE0cHg7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyfS5rdGgtbmxiLXBhaWR7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNDUpfS5rdGgtbmxiLW57bWFyZ2luLXRvcDoxMnB4O2ZvbnQ6NDAwIDExLjVweC8xLjY1IEludGVyLHN5c3RlbS11aSxzYW5zLXNlcmlmO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjYyKX0ua3RoLXN1YnttYXgtd2lkdGg6NTgwcHg7bWFyZ2luOjAgYXV0byAzNHB4O3RleHQtYWxpZ246bGVmdDtib3JkZXItdG9wOjFweCBzb2xpZCAjMTQxNTFhO3BhZGRpbmctdG9wOjE0cHh9Lmt0aC1zdWIta3tmb250OjcwMCAxMHB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6IzhiODg4MDttYXJnaW46MCAwIDEwcHh9Lmt0aC1zdWItdHtmb250OjcwMCAyMnB4LzEuMzUgIlNvdXJjZSBTZXJpZiA0IixHZW9yZ2lhLHNlcmlmO2NvbG9yOiMwZDE1MjY7bWFyZ2luOjAgMCA4cHh9Lmt0aC1zdWItc3tmb250OjQwMCAxMy41cHgvMS43IEludGVyLHN5c3RlbS11aSxzYW5zLXNlcmlmO2NvbG9yOiM0YTRhNDY7bWFyZ2luOjAgMCAyMHB4fS5rdGgtc3ViLWd7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2JvcmRlci10b3A6MXB4IHNvbGlkICNFM0RGRDZ9Lmt0aC1zdWItY3twYWRkaW5nOjE4cHggMjBweCAyMnB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0UzREZENn0ua3RoLXN1Yi1jKy5rdGgtc3ViLWN7cGFkZGluZzoxOHB4IDAgMjJweCAyMHB4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjRTNERkQ2fS5rdGgtc3ViLW57Zm9udDo3MDAgMTEuNXB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjEzZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOiMxNDE1MWE7bWFyZ2luOjAgMCA4cHh9Lmt0aC1zdWItcHtmb250OjcwMCAyMHB4LzEuMjUgIlNvdXJjZSBTZXJpZiA0IixHZW9yZ2lhLHNlcmlmO2NvbG9yOiMwZDE1MjY7bWFyZ2luOjAgMCAxMnB4fS5rdGgtc3ViLXAgZW17Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2ZDZhNjM7d2hpdGUtc3BhY2U6bm93cmFwfS5rdGgtc3ViLWx7bGlzdC1zdHlsZTpub25lO3BhZGRpbmc6MDttYXJnaW46MCAwIDE2cHh9Lmt0aC1zdWItbCBsaXtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLWxlZnQ6MTJweDtmb250OjQwMCAxM3B4LzEuNzUgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6IzNmM2YzY30ua3RoLXN1Yi1sIGxpOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MTJweDt3aWR0aDo1cHg7aGVpZ2h0OjFweDtiYWNrZ3JvdW5kOiM5YTk2OGN9Lmt0aC1zdWItYntkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjEwcHggMjBweDtiYWNrZ3JvdW5kOiMxNDE1MWE7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7Zm9udDo3MDAgMTFweC8xIEludGVyLHN5c3RlbS11aSxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4xM2VtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHh9Lmt0aC1zdWItYjJ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMTQxNTFhIWltcG9ydGFudDtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjMTQxNTFhfS5rdGgtc3ViLWZue21hcmdpbjoxNHB4IDAgMDtmb250OjQwMCAxMS41cHgvMS42NSBJbnRlcixzeXN0ZW0tdWksc2Fucy1zZXJpZjtjb2xvcjojOGI4ODgwfS5rdGgta3J3e2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6LjY2ZW07Y29sb3I6IzZkNmE2Mzt3aGl0ZS1zcGFjZTpub3dyYXB9LnByaWNlLWluZm8gLmV4dHJhIC5rdGgta3J3e2ZvbnQtc2l6ZToxZW19LnByaWNlLWluZm8gaDQuc3RyaWtlIC5rdGgta3J3e2ZvbnQtc2l6ZTouNzRlbX1AbWVkaWEobWF4LXdpZHRoOjY0MHB4KXsua3RoLXN1Yi1ne2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9Lmt0aC1zdWItYywua3RoLXN1Yi1jKy5rdGgtc3ViLWN7cGFkZGluZzoxOHB4IDAgMjJweDtib3JkZXItbGVmdDowfX08L3N0eWxlPjxzY3JpcHQgaWQ9Imt0aC1zdWItanMiPihmdW5jdGlvbigpe3ZhciBSQVRFPTEzODE7dmFyIFQ9eyJrbyI6eyJmcmVlIjoi66y066OMIOq1rOuPhSIsInBhaWQiOiLtlITrpqzrr7jsl4Qg66mk67KE7IutIiwibm90ZSI6IuustOujjCDqtazrj4XsnYAg7KO8IDHtmowg64m07Iqk66CI7YSw7JmAIOustOujjCDqs7XqsJwg6riw7IKsLiDtlITrpqzrr7jsl4Qg66mk67KE7Iut7J2AIOq1rOuPheyekCDsoITsmqkg6riw7IKs66W8IO2PrO2VqO2VnCDsoITssrQg7JWE7Lm07J2067iMLiIsImsiOiJNRU1CRVJTSElQIiwidCI6IuustOujjCDrqaTrsoTsi63qs7wg7ZSE66as66+47JeEIOuppOuyhOyLrSIsInMiOiLqtazrj4XsnYAg65GQIOqwgOyngOyeheuLiOuLpC4g64m07Iqk66CI7YSw66W8IOuwm+uKlCDrrLTro4wg66mk67KE7Iut6rO8LCDqtazrj4XsnpAg7KCE7JqpIOq4sOyCrOq5jOyngCDrqqjrkZAg7Je0656M7ZWY64qUIO2UhOumrOuvuOyXhCDrqaTrsoTsi60uIiwiZm4iOiLrrLTro4wg66mk67KE7IutIiwiZnAiOiLigqkwIiwiZmwiOlsi7KO8IDHtmowg64m07Iqk66CI7YSwIOKAlCDtlZzqta3slrTtjJDCt+yYgeusuO2MkCDshKDtg50iLCLrrLTro4wg6rO16rCcIOq4sOyCrCDsl7TrnowiLCLtlITrpqzrr7jsl4Qg66as7Y+s7Yq4IOuwnO2WiSDshozsi50g7Jqw7ISgIOyViOuCtCJdLCJmYiI6IuustOujjOuhnCDqtazrj4UiLCJwbiI6Iu2UhOumrOuvuOyXhCDrqaTrsoTsi60iLCJwcCI6IuyblCDigqkxMCwwMDDrtoDthLAiLCJwbCI6WyLrrLTro4wg66mk67KE7IutIO2YnO2DnSDsoITssrQiLCLqtazrj4XsnpAg7KCE7JqpIOq4sOyCrMK37JWE7Lm07J2067iMIOyghOusuCDsl7TrnowiLCLssqsgMuqwnOyblCA1MCUg7ZWg7J24LCDsl7DqsIQg6rKw7KCcIDIyJSDtlaDsnbgiXSwicGIiOiLqsrDsoJwg7ZSM656cIOuztOq4sCIsImZuMiI6IiJ9LCJlbiI6eyJmcmVlIjoiU3Vic2NyaWJlIEZyZWUiLCJwYWlkIjoiUHJlbWl1bSBNZW1iZXJzaGlwIiwibm90ZSI6IkZyZWUgY292ZXJzIHRoZSB3ZWVrbHkgbmV3c2xldHRlciBhbmQgb3BlbiBhcnRpY2xlcy4gUHJlbWl1bSBhZGRzIHRoZSBmdWxsIGFyY2hpdmUsIGluY2x1ZGluZyBzdWJzY3JpYmVyLW9ubHkgYXJ0aWNsZXMuIiwiayI6Ik1FTUJFUlNISVAiLCJ0IjoiRnJlZSBhbmQgUHJlbWl1bSBNZW1iZXJzaGlwIiwicyI6IlR3byB3YXlzIHRvIHN1YnNjcmliZTogYSBmcmVlIG1lbWJlcnNoaXAgZm9yIHRoZSB3ZWVrbHkgbmV3c2xldHRlciwgYW5kIGEgcHJlbWl1bSBtZW1iZXJzaGlwIHRoYXQgb3BlbnMgZXZlcnkgYXJ0aWNsZSwgaW5jbHVkaW5nIHN1YnNjcmliZXItb25seSBwaWVjZXMuIiwiZm4iOiJGcmVlIE1lbWJlcnNoaXAiLCJmcCI6IiQwIiwiZmwiOlsiV2Vla2x5IG5ld3NsZXR0ZXIg4oCUIEtvcmVhbiBvciBFbmdsaXNoIGVkaXRpb24iLCJBY2Nlc3MgdG8gb3BlbiBhcnRpY2xlcyIsIkZpcnN0IHdvcmQgb24gbmV3IHByZW1pdW0gcmVwb3J0cyJdLCJmYiI6IlN1YnNjcmliZSBGcmVlIiwicG4iOiJQcmVtaXVtIE1lbWJlcnNoaXAiLCJwcCI6IkZyb20gJDggLyBtb250aCA8ZW0+KOKCqTEwLDAwMCk8L2VtPiIsInBsIjpbIkV2ZXJ5dGhpbmcgaW4gRnJlZSIsIkZ1bGwgYWNjZXNzIHRvIHN1YnNjcmliZXItb25seSBhcnRpY2xlcyBhbmQgdGhlIGFyY2hpdmUiLCI1MCUgb2ZmIHRoZSBmaXJzdCB0d28gbW9udGhzLCAyMiUgb2ZmIGFubnVhbCJdLCJwYiI6IlNlZSBwYWlkIHBsYW5zIiwiZm4yIjoiQmlsbGluZyBpcyBpbiBLb3JlYW4gd29uLiBVU0QgZmlndXJlcyBhcmUgYXBwcm94aW1hdGUsIGNvbnZlcnRlZCBhdCDigqkxLDM4MSA9IFVTJDEgKEF1ZyAyMDI2KSBhbmQgcm91bmRlZCB1cC4ifX07ZnVuY3Rpb24gTCgpe3RyeXt2YXIgdj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgia3RoX2xhbmciKTtpZih2KXJldHVybiB2LmluZGV4T2YoImVuIik9PT0wPyJlbiI6ImtvIjt9Y2F0Y2goZSl7fXJldHVybiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lmxhbmd8fCJrbyIpLmluZGV4T2YoImVuIik9PT0wPyJlbiI6ImtvIjt9ZnVuY3Rpb24gZXNjKHgpe3JldHVybiBTdHJpbmcoeCkucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpO31mdW5jdGlvbiB1c2QodHh0KXtyZXR1cm4gU3RyaW5nKHR4dCkucmVwbGFjZSgvXHUyMGE5XHM/KFswLTldWzAtOSxdKikoXC9tb250aCk/L2csZnVuY3Rpb24obSxudW0sc3VmKXt2YXIgdz1wYXJzZUludChudW0ucmVwbGFjZSgvLC9nLCIiKSwxMCk7aWYoIXcpcmV0dXJuICIkMCI7cmV0dXJuICIkIitNYXRoLmNlaWwody9SQVRFKSsoc3VmfHwiIikrIiA8c3BhbiBjbGFzcz1cImt0aC1rcndcIj4oXHUyMGE5IitudW0rIik8L3NwYW4+Ijt9KTt9ZnVuY3Rpb24gYmFuZCh0KXt2YXIgYj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIua3RoLW5sYiIpO2lmKCFiKXJldHVybjt2YXIgYm94PWIucXVlcnlTZWxlY3RvcigiLmt0aC1ubGItYnRucyIpO2lmKCFib3gpe3ZhciBhPWIucXVlcnlTZWxlY3RvcigiLmt0aC1ubGItYiIpO2lmKCFhKXJldHVybjtib3g9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ym94LmNsYXNzTmFtZT0ia3RoLW5sYi1idG5zIjthLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGJveCxhKTt2YXIgZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Zi5jbGFzc05hbWU9Imt0aC1ubGItYiBrdGgtbmxiLWZyZWUiO2YuaHJlZj0iL25ld3NsZXR0ZXIvIjtib3guYXBwZW5kQ2hpbGQoZik7Ym94LmFwcGVuZENoaWxkKGEpO2EuY2xhc3NOYW1lPSJrdGgtbmxiLWIga3RoLW5sYi1wYWlkIjt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtuLmNsYXNzTmFtZT0ia3RoLW5sYi1uIjtiLmFwcGVuZENoaWxkKG4pO312YXIgZmU9Ym94LnF1ZXJ5U2VsZWN0b3IoIi5rdGgtbmxiLWZyZWUiKSxwZT1ib3gucXVlcnlTZWxlY3RvcigiLmt0aC1ubGItcGFpZCIpLG5lPWIucXVlcnlTZWxlY3RvcigiLmt0aC1ubGItbiIpO2lmKGZlKWZlLnRleHRDb250ZW50PXQuZnJlZTtpZihwZSlwZS50ZXh0Q29udGVudD10LnBhaWQ7aWYobmUpbmUudGV4dENvbnRlbnQ9dC5ub3RlO31mdW5jdGlvbiBjYXJkcyhlbil7dmFyIGNzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5wcmljZS1pbmZvLXdyYXAgLnByaWNlIik7Zm9yKHZhciBpPTA7aTxjcy5sZW5ndGg7aSsrKXt2YXIgZWxzPWNzW2ldLnF1ZXJ5U2VsZWN0b3JBbGwoImgzLCBoNC5zdHJpa2UsIC5wcmljZS1pbmZvIC5leHRyYSIpO2Zvcih2YXIgaj0wO2o8ZWxzLmxlbmd0aDtqKyspe3ZhciBlPWVsc1tqXTtpZighZS5nZXRBdHRyaWJ1dGUoImRhdGEta3RodyIpKWUuc2V0QXR0cmlidXRlKCJkYXRhLWt0aHciLGUudGV4dENvbnRlbnQucmVwbGFjZSgvXHMrL2csIiAiKS50cmltKCkpO3ZhciBvPWUuZ2V0QXR0cmlidXRlKCJkYXRhLWt0aHciKTtlLmlubmVySFRNTD1lbj91c2Qobyk6ZXNjKG8pO319fWZ1bmN0aW9uIHBsYW5zKHQsZW4pe2lmKGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1wvKyQvLCIiKSE9PSIvbWVtYmVyc2hpcCIpcmV0dXJuO3ZhciB3cmFwPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5wcmljZS1pbmZvLXdyYXAiKTtpZighd3JhcClyZXR1cm47dmFyIGgxPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5zaWduaW4tdGl0bGUiKTtpZihoMSYmIWgxLmlkKWgxLmlkPSJrdGgtcGxhbnMiO3ZhciBzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrdGgtc3VieCIpO2lmKCFzKXtzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlY3Rpb24iKTtzLmlkPSJrdGgtc3VieCI7cy5jbGFzc05hbWU9Imt0aC1zdWIiO3ZhciBhbj1oMXx8d3JhcDthbi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzLGFuKTt9ZnVuY3Rpb24gbGkoYSl7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKHgpe3JldHVybiAiPGxpPiIrZXNjKHgpKyI8L2xpPiI7fSkuam9pbigiIik7fXMuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPVwia3RoLXN1Yi1rXCI+Iitlc2ModC5rKSsiPC9kaXY+PGgyIGNsYXNzPVwia3RoLXN1Yi10XCI+Iitlc2ModC50KSsiPC9oMj48cCBjbGFzcz1cImt0aC1zdWItc1wiPiIrZXNjKHQucykrIjwvcD4iKyI8ZGl2IGNsYXNzPVwia3RoLXN1Yi1nXCI+PGRpdiBjbGFzcz1cImt0aC1zdWItY1wiPjxkaXYgY2xhc3M9XCJrdGgtc3ViLW5cIj4iK2VzYyh0LmZuKSsiPC9kaXY+PGRpdiBjbGFzcz1cImt0aC1zdWItcFwiPiIrZXNjKHQuZnApKyI8L2Rpdj48dWwgY2xhc3M9XCJrdGgtc3ViLWxcIj4iK2xpKHQuZmwpKyI8L3VsPjxhIGNsYXNzPVwia3RoLXN1Yi1iXCIgaHJlZj1cIi9uZXdzbGV0dGVyL1wiPiIrZXNjKHQuZmIpKyI8L2E+PC9kaXY+IisiPGRpdiBjbGFzcz1cImt0aC1zdWItY1wiPjxkaXYgY2xhc3M9XCJrdGgtc3ViLW5cIj4iK2VzYyh0LnBuKSsiPC9kaXY+PGRpdiBjbGFzcz1cImt0aC1zdWItcFwiPiIrdC5wcCsiPC9kaXY+PHVsIGNsYXNzPVwia3RoLXN1Yi1sXCI+IitsaSh0LnBsKSsiPC91bD48YSBjbGFzcz1cImt0aC1zdWItYiBrdGgtc3ViLWIyXCIgaHJlZj1cIiNrdGgtcGxhbnNcIj4iK2VzYyh0LnBiKSsiPC9hPjwvZGl2PjwvZGl2PiIrKHQuZm4yPyI8cCBjbGFzcz1cImt0aC1zdWItZm5cIj4iK2VzYyh0LmZuMikrIjwvcD4iOiIiKTt0cnl7Y2FyZHMoZW4pO31jYXRjaChlKXt9fWZ1bmN0aW9uIGdvKCl7aWYoIWRvY3VtZW50LmJvZHkpcmV0dXJuO3ZhciBnPUwoKTt2YXIgdD1UW2ddO3RyeXtiYW5kKHQpO31jYXRjaChlKXt9dHJ5e3BsYW5zKHQsZz09PSJlbiIpO31jYXRjaChlKXt9fWlmKGRvY3VtZW50LnJlYWR5U3RhdGU9PT0ibG9hZGluZyIpZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGdvLDMwMCk7fSk7ZWxzZSBzZXRUaW1lb3V0KGdvLDMwMCk7c2V0VGltZW91dChnbywxNjAwKTtzZXRUaW1lb3V0KGdvLDM1MDApO30pKCk7PC9zY3JpcHQ+PHN0eWxlIGlkPSJrdGgtc2hvcGVuLWNzcyI+Lmt0aC1zaG9wLXN0cmlwe2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5rdGgtc2hvcC1ub3Rle21hcmdpbjoycHggMCAxNHB4O2ZvbnQ6NDAwIDExLjVweC8xLjYgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6IzhiODg4MDtsZXR0ZXItc3BhY2luZzouMDFlbX08L3N0eWxlPjxzY3JpcHQgaWQ9Imt0aC1zaG9wZW4tanMiPihmdW5jdGlvbigpe2Z1bmN0aW9uIEwoKXt0cnl7dmFyIHY9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImt0aF9sYW5nIik7aWYodilyZXR1cm4gdi5pbmRleE9mKCJlbiIpPT09MD8iZW4iOiJrbyI7fWNhdGNoKGUpe31yZXR1cm4gImVuIjt9ZnVuY3Rpb24gdHIodCl7cmV0dXJuIHQucmVwbGFjZSgvXHVCQjM0XHVCOENDIFx1RDY4Q1x1QzZEMFx1QUMwMC9nLCJGcmVlIG1lbWJlcnMiKS5yZXBsYWNlKC9cdUM3MjBcdUI4Q0MgXHVENjhDXHVDNkQwXHVBQzAwL2csIlBhaWQgbWVtYmVycyIpLnJlcGxhY2UoL1x1QkIzNFx1QjhDQy9nLCJGcmVlIik7fWZ1bmN0aW9uIGdvKCl7aWYoIWRvY3VtZW50LmJvZHkpcmV0dXJuO3ZhciBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5rdGgtc2hvcC1zdHJpcCIpO2lmKCFzKXJldHVybjt2YXIgaGQ9cy5xdWVyeVNlbGVjdG9yKCIua3RoLXNob3Atc3RyaXAtaGVhZCIpfHxzLnF1ZXJ5U2VsZWN0b3IoIi5rdGgtc2hvcC1zdHJpcC1pbm5lciIpO2lmKCFoZClyZXR1cm47dmFyIGVuPUwoKT09PSJlbiI7dmFyIG49cy5xdWVyeVNlbGVjdG9yKCIua3RoLXNob3Atbm90ZSIpO2lmKGVuJiYhbil7bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtuLmNsYXNzTmFtZT0ia3RoLXNob3Atbm90ZSI7aGQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixoZC5uZXh0U2libGluZyk7fWlmKGVuJiZuKW4udGV4dENvbnRlbnQ9IlJlcG9ydHMgYXJlIHB1Ymxpc2hlZCBpbiBLb3JlYW4uIjtpZighZW4mJm4pe24ucmVtb3ZlKCk7fXZhciBwcz1zLnF1ZXJ5U2VsZWN0b3JBbGwoIi5rdGgtc2hvcC1zdHJpcC1wcmljZSIpO2Zvcih2YXIgaT0wO2k8cHMubGVuZ3RoO2krKyl7dmFyIGU9cHNbaV07aWYoIWUuZ2V0QXR0cmlidXRlKCJkYXRhLWt0aHAiKSllLnNldEF0dHJpYnV0ZSgiZGF0YS1rdGhwIixlLnRleHRDb250ZW50LnJlcGxhY2UoL1xzKy9nLCIgIikudHJpbSgpKTt2YXIgbz1lLmdldEF0dHJpYnV0ZSgiZGF0YS1rdGhwIik7ZS50ZXh0Q29udGVudD1lbj90cihvKTpvO319aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJsb2FkaW5nIilkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZ28sNjAwKTt9KTtlbHNlIHNldFRpbWVvdXQoZ28sNjAwKTtzZXRUaW1lb3V0KGdvLDIwMDApO3NldFRpbWVvdXQoZ28sNDAwMCk7c2V0VGltZW91dChnbyw2NTAwKTt9KSgpOzwvc2NyaXB0Pgo8c2NyaXB0IGlkPSJrdGgtcGFpcmZiIj4KKGZ1bmN0aW9uKCl7CmZ1bmN0aW9uIGJ1aWxkKG8sbWVLbyl7CiB2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7YS5jbGFzc05hbWU9J2t0aC1wYWlyJzthLmhyZWY9by5wO2Euc2V0QXR0cmlidXRlKCdocmVmbGFuZycsbWVLbz8nZW4nOidrbycpOwogdmFyIGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO2wuY2xhc3NOYW1lPSdrdGgtcGFpci1sYWJlbCc7bC50ZXh0Q29udGVudD1tZUtvPydSRUFEIElOIEVOR0xJU0gnOidcdUQ1NUNcdUFENkRcdUM1QjRcdUI4NUMgXHVDNzdEXHVBRTMwIFx1MDBCNyBLT1JFQU4gRURJVElPTic7YS5hcHBlbmRDaGlsZChsKTsKIHZhciByb3c9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO3Jvdy5jbGFzc05hbWU9J2t0aC1wYWlyLXJvdyc7CiBpZihvLmltKXt2YXIgdGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO3RoLmNsYXNzTmFtZT0na3RoLXBhaXItdGgnO3ZhciBpbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtpbS5zcmM9by5pbTtpbS5hbHQ9Jyc7dGguYXBwZW5kQ2hpbGQoaW0pO3Jvdy5hcHBlbmRDaGlsZCh0aCk7fQogdmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO2IuY2xhc3NOYW1lPSdrdGgtcGFpci1ib2R5JzsKIHZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTt0LmNsYXNzTmFtZT0na3RoLXBhaXItdCc7dC50ZXh0Q29udGVudD1vLnQ7Yi5hcHBlbmRDaGlsZCh0KTsKIGlmKG8ueCl7dmFyIHg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO3guY2xhc3NOYW1lPSdrdGgtcGFpci14Jzt4LnRleHRDb250ZW50PW8ueDtiLmFwcGVuZENoaWxkKHgpO30KIHZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtjLmNsYXNzTmFtZT0na3RoLXBhaXItYSc7Yy50ZXh0Q29udGVudD1tZUtvPydWSUVXIEFSVElDTEUgXHUyMTkyJzonXHVBRTMwXHVDMEFDIFx1QkNGNFx1QUUzMCBcdTIxOTInO2IuYXBwZW5kQ2hpbGQoYyk7CiByb3cuYXBwZW5kQ2hpbGQoYik7YS5hcHBlbmRDaGlsZChyb3cpO3JldHVybiBhO30KZnVuY3Rpb24gZ28oKXsKIGlmKCFkb2N1bWVudC5ib2R5KXJldHVybjsKIGlmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Eua3RoLXBhaXInKSlyZXR1cm47CiB2YXIgd3JhcD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubnl0LXBvc3Qtd3JhcCcpO2lmKCF3cmFwKXJldHVybjsKIHZhciBjb250ZW50PXdyYXAucXVlcnlTZWxlY3RvcignLm55dC1wb3N0LWNvbnRlbnQnKTtpZighY29udGVudClyZXR1cm47CiB2YXIgbT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhW3Byb3BlcnR5PSJhcnRpY2xlOnB1Ymxpc2hlZF90aW1lIl0nKTtpZighbSlyZXR1cm47CiB2YXIgbWluZT0rbmV3IERhdGUobS5jb250ZW50KTtpZighbWluZSlyZXR1cm47CiB2YXIgc2VsZj1sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyskLywnJykrJy8nOwogdmFyIGhhbj0vW1x1QUMwMC1cdUQ3QTNdLzsKIHZhciBoMT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoMScpO3ZhciBtZUtvPWhhbi50ZXN0KGgxP2gxLnRleHRDb250ZW50OicnKTsKIGZldGNoKCcvcnNzLycpLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHIudGV4dCgpfSkudGhlbihmdW5jdGlvbihzKXsKICBpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhLmt0aC1wYWlyJykpcmV0dXJuOwogIHZhciBiZXN0PW51bGw7CiAgcy5zcGxpdCgnPGl0ZW0+Jykuc2xpY2UoMSkuZm9yRWFjaChmdW5jdGlvbihpdCl7CiAgIGZ1bmN0aW9uIGcocmUpe3ZhciBxPWl0Lm1hdGNoKHJlKTtyZXR1cm4gcT9xWzFdOicnO30KICAgdmFyIGxpbms9ZygvPGxpbms+KFtcc1xTXSo/KTxcL2xpbms+Lyk7dmFyIHA9bGluay5yZXBsYWNlKC9eaHR0cHM/OlwvXC9bXi9dKy8sJycpOwogICBpZighcHx8cD09PXNlbGYpcmV0dXJuOwogICB2YXIgdGk9ZygvPHRpdGxlPig/OjwhXFtDREFUQVxbKT8oW1xzXFNdKj8pKD86XF1cXT4pPzxcL3RpdGxlPi8pOwogICBpZihoYW4udGVzdCh0aSk9PT1tZUtvKXJldHVybjsKICAgdmFyIGR0PU1hdGguYWJzKCtuZXcgRGF0ZShnKC88cHViRGF0ZT4oW1xzXFNdKj8pPFwvcHViRGF0ZT4vKSktbWluZSk7CiAgIGlmKCEoZHQ8PTEwODAwMDAwKSlyZXR1cm47CiAgIGlmKGJlc3QmJmR0Pj1iZXN0LmR0KXJldHVybjsKICAgdmFyIGRlPWcoLzxkZXNjcmlwdGlvbj4oPzo8IVxbQ0RBVEFcWyk/KFtcc1xTXSo/KSg/OlxdXF0+KT88XC9kZXNjcmlwdGlvbj4vKS5yZXBsYWNlKC88W14+XSo+L2csJycpLnRyaW0oKTsKICAgYmVzdD17cDpwLHQ6dGkseDpkZS5zbGljZSgwLDE1MCksaW06ZygvPG1lZGlhOmNvbnRlbnRbXj5dKnVybD0iKFteIl0rKSIvKSxkdDpkdH07CiAgfSk7CiAgaWYoIWJlc3QpcmV0dXJuOwogIGNvbnRlbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYnVpbGQoYmVzdCxtZUtvKSxjb250ZW50KTsKICB2YXIgbGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO2xrLnJlbD0nYWx0ZXJuYXRlJztsay5ocmVmbGFuZz1tZUtvPydlbic6J2tvJztsay5ocmVmPWxvY2F0aW9uLm9yaWdpbitiZXN0LnA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsayk7CiB9KS5jYXRjaChmdW5jdGlvbigpe30pOwp9CmZ1bmN0aW9uIHN0YXJ0KCl7c2V0VGltZW91dChnbywxNTAwKTt9CmlmKGRvY3VtZW50LnJlYWR5U3RhdGU9PT0nbG9hZGluZycpZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsc3RhcnQpO2Vsc2Ugc3RhcnQoKTsKfSkoKTsKPC9zY3JpcHQ+Cgp1bmRlZmluZWQKPHN0eWxlIGlkPSJrdGgtdHlwZS1jc3MiPgovKiBrdGgtdHlwZSAyMDI2LTA4LTI2OiDtjrjsp5Eg7JyE6rOELiDsnbQg67iU66Gd66eMIOyngOyasOuptCDsm5Drs7UgKi8KQG1lZGlhIChtaW4td2lkdGg6MTAyNHB4KXsKaHRtbCBib2R5IC5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZXtmb250LXNpemU6MjJweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuMTQgIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzotLjAyMmVtICFpbXBvcnRhbnQ7fQpodG1sIGJvZHkgLmt0aC1oZXJvLWltZy5rdGgtaGVyby1pbWcua3RoLWhlcm8taW1nLmt0aC1oZXJvLWltZ3thc3BlY3QtcmF0aW86MTYvOSAhaW1wb3J0YW50O30KaHRtbCBib2R5IC5ueXQtcG9zdC10aXRsZS5ueXQtcG9zdC10aXRsZS5ueXQtcG9zdC10aXRsZS5ueXQtcG9zdC10aXRsZS5ueXQtcG9zdC10aXRsZXtmb250LXNpemU6MzRweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuMTYgIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzotLjAyZW0gIWltcG9ydGFudDt9Cn0KQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjEwMjNweCl7Cmh0bWwgYm9keSAua3RoLWhlcm8tdGl0bGUua3RoLWhlcm8tdGl0bGUua3RoLWhlcm8tdGl0bGUua3RoLWhlcm8tdGl0bGUua3RoLWhlcm8tdGl0bGV7Zm9udC1zaXplOjIycHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjE4ICFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LS4wMThlbSAhaW1wb3J0YW50O30KaHRtbCBib2R5IC5ueXQtcG9zdC10aXRsZS5ueXQtcG9zdC10aXRsZS5ueXQtcG9zdC10aXRsZS5ueXQtcG9zdC10aXRsZS5ueXQtcG9zdC10aXRsZXtmb250LXNpemU6MzBweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuMTggIWltcG9ydGFudDt9Cn0KQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpewpodG1sIGJvZHkgLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxle2ZvbnQtc2l6ZToxOXB4ICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4yICFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbSAhaW1wb3J0YW50O30KfQo8L3N0eWxlPgoKPHN0eWxlIGlkPSJrdGgtbHV4LWNzcyI+OnJvb3R7LS1reC1pbms6IzEyMTMxYTstLWt4LWluazI6IzRhNGY1YzstLWt4LWluazM6IzcwNzQ3ZjstLWt4LXJ1bGU6I2U0ZTJkZDstLWt4LWFjY2VudDojOGE2ZDJmOy0ta3gtcGFwZXI6I2ZhZjlmNzstLWt4LWltZzojZWZlZGU4fQpodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnR7bWF4LXdpZHRoOjcwMHB4IWltcG9ydGFudDtjb2xvcjp2YXIoLS1reC1pbmspIWltcG9ydGFudH0KaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50IHB7Zm9udC1zaXplOjE4cHghaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuODUhaW1wb3J0YW50O21hcmdpbjowIDAgMS41ZW0haW1wb3J0YW50O2NvbG9yOnZhcigtLWt4LWluaykhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi0uMDAzZW19Cmh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudCBzdHJvbmcsaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50IGJ7Y29sb3I6dmFyKC0ta3gtaW5rKSFpbXBvcnRhbnR9Cmh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudCBoMntmb250LWZhbWlseToiRE0gU2VyaWYgRGlzcGxheSIsIk5vdG8gU2VyaWYgS1IiLEdlb3JnaWEsc2VyaWYhaW1wb3J0YW50O2ZvbnQtc2l6ZToyN3B4IWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjMyIWltcG9ydGFudDtjb2xvcjp2YXIoLS1reC1pbmspIWltcG9ydGFudDttYXJnaW46Mi40ZW0gMCAuN2VtIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzotLjAxZW19Cmh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudCBoM3tmb250LXNpemU6MjBweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS40IWltcG9ydGFudDtjb2xvcjp2YXIoLS1reC1pbmspIWltcG9ydGFudDttYXJnaW46MmVtIDAgLjZlbSFpbXBvcnRhbnR9Cmh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudCBhe2NvbG9yOnZhcigtLWt4LWluaykhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDEzOCwxMDksNDcsLjQ1KTt0cmFuc2l0aW9uOmNvbG9yIC4xNXMsYm9yZGVyLWNvbG9yIC4xNXN9Cmh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudCBhOmhvdmVye2NvbG9yOnZhcigtLWt4LWFjY2VudCkhaW1wb3J0YW50O2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0ta3gtYWNjZW50KX0KaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50IGJsb2NrcXVvdGV7bWFyZ2luOjJlbSAwIWltcG9ydGFudDtwYWRkaW5nOjAgMCAwIDIycHghaW1wb3J0YW50O2JvcmRlci1sZWZ0OjJweCBzb2xpZCB2YXIoLS1reC1pbmspIWltcG9ydGFudDtiYWNrZ3JvdW5kOm5vbmUhaW1wb3J0YW50O2ZvbnQtc2l6ZToxOXB4IWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjcyIWltcG9ydGFudDtjb2xvcjp2YXIoLS1reC1pbmspIWltcG9ydGFudH0KaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50IGxpe2ZvbnQtc2l6ZToxOHB4IWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjghaW1wb3J0YW50O21hcmdpbi1ib3R0b206LjQ1ZW19Cmh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudCA6OnNlbGVjdGlvbntiYWNrZ3JvdW5kOiNmMGU3ZDR9Cmh0bWwgYm9keSAubnl0LXBvc3QtdGl0bGV7Y29sb3I6dmFyKC0ta3gtaW5rKSFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbSFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4xOCFpbXBvcnRhbnR9Cmh0bWwgYm9keSAubnl0LXBvc3QtZXhjZXJwdHtmb250LWZhbWlseTpJbnRlciwiUHJldGVuZGFyZCBWYXJpYWJsZSIsUHJldGVuZGFyZCwiQXBwbGUgU0QgR290aGljIE5lbyIsc3lzdGVtLXVpLHNhbnMtc2VyaWYhaW1wb3J0YW50O2ZvbnQtc3R5bGU6bm9ybWFsIWltcG9ydGFudDtmb250LXNpemU6MTguNXB4IWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjYyIWltcG9ydGFudDtjb2xvcjp2YXIoLS1reC1pbmsyKSFpbXBvcnRhbnQ7bWF4LXdpZHRoOjcwMHB4fQpodG1sIGJvZHkgLm55dC1wb3N0LXRhZ3tiYWNrZ3JvdW5kOm5vbmUhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O21hcmdpbi1ib3R0b206MTRweCFpbXBvcnRhbnR9Cmh0bWwgYm9keSAubnl0LXBvc3QtdGFnLGh0bWwgYm9keSAubnl0LXBvc3QtdGFnIGEsaHRtbCBib2R5IC5ueXQtcG9zdC10YWcgKntmb250LWZhbWlseTpJbnRlciwiUHJldGVuZGFyZCBWYXJpYWJsZSIsUHJldGVuZGFyZCwiQXBwbGUgU0QgR290aGljIE5lbyIsc3lzdGVtLXVpLHNhbnMtc2VyaWYhaW1wb3J0YW50O2NvbG9yOnZhcigtLWt4LWluaykhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMS41cHghaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LjExZW0haW1wb3J0YW50O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0KaHRtbCBib2R5IC5ueXQtcG9zdC1tZXRhLGh0bWwgYm9keSAubnl0LXBvc3QtbWV0YSAqe2ZvbnQtZmFtaWx5OkludGVyLCJQcmV0ZW5kYXJkIFZhcmlhYmxlIixQcmV0ZW5kYXJkLCJBcHBsZSBTRCBHb3RoaWMgTmVvIixzeXN0ZW0tdWksc2Fucy1zZXJpZiFpbXBvcnRhbnQ7Y29sb3I6dmFyKC0ta3gtaW5rMykhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMi41cHghaW1wb3J0YW50fQpodG1sIGJvZHkgLm55dC1wb3N0LWF1dGhvcntjb2xvcjp2YXIoLS1reC1pbmspIWltcG9ydGFudDtmb250LXdlaWdodDo2MDAhaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1jYXB7Zm9udC1mYW1pbHk6SW50ZXIsIlByZXRlbmRhcmQgVmFyaWFibGUiLFByZXRlbmRhcmQsIkFwcGxlIFNEIEdvdGhpYyBOZW8iLHN5c3RlbS11aSxzYW5zLXNlcmlmIWltcG9ydGFudDtmb250LXNpemU6MTNweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS41NSFpbXBvcnRhbnQ7Y29sb3I6dmFyKC0ta3gtaW5rMykhaW1wb3J0YW50O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWt4LXJ1bGUpO3BhZGRpbmctdG9wOjhweCFpbXBvcnRhbnQ7bWFyZ2luLXRvcDoxMHB4IWltcG9ydGFudH0KaHRtbCBib2R5IC5ueXQtcG9zdC1pbWFnZSBpbWd7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOnZhcigtLWt4LWltZyl9Cmh0bWwgYm9keSAua3RoLWFjdGlvbi1idG57YmFja2dyb3VuZDojZmZmIWltcG9ydGFudDtjb2xvcjp2YXIoLS1reC1pbmspIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWt4LXJ1bGUpIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjJweCFpbXBvcnRhbnQ7Zm9udC1mYW1pbHk6SW50ZXIsIlByZXRlbmRhcmQgVmFyaWFibGUiLFByZXRlbmRhcmQsIkFwcGxlIFNEIEdvdGhpYyBOZW8iLHN5c3RlbS11aSxzYW5zLXNlcmlmIWltcG9ydGFudDtmb250LXNpemU6MTIuNXB4IWltcG9ydGFudDtmb250LXdlaWdodDo2MDAhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi4wMmVtIWltcG9ydGFudDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzfQpodG1sIGJvZHkgLmt0aC1hY3Rpb24tYnRuOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1reC1pbmspIWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtYWN0aW9uLWJ0biBzdmcsaHRtbCBib2R5IC5rdGgtYWN0aW9uLWJ0biBwYXRoe3N0cm9rZTp2YXIoLS1reC1pbmspIWltcG9ydGFudDtmaWxsOm5vbmUhaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1wYWlye2JvcmRlci1jb2xvcjp2YXIoLS1reC1ydWxlKSFpbXBvcnRhbnQ7YmFja2dyb3VuZDp2YXIoLS1reC1wYXBlcikhaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1wYWlyLWEsaHRtbCBib2R5IC5rdGgtcGFpci1sYWJlbHtjb2xvcjp2YXIoLS1reC1hY2NlbnQpIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMDllbSFpbXBvcnRhbnR9Cmh0bWwgYm9keSAucHMtdGl0bGV7Y29sb3I6dmFyKC0ta3gtaW5rKSFpbXBvcnRhbnQ7Zm9udC1mYW1pbHk6SW50ZXIsIlByZXRlbmRhcmQgVmFyaWFibGUiLFByZXRlbmRhcmQsIkFwcGxlIFNEIEdvdGhpYyBOZW8iLHN5c3RlbS11aSxzYW5zLXNlcmlmIWltcG9ydGFudDtmb250LXNpemU6MTJweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMWVtIWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWt4LXJ1bGUpIWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtbmxiLWssaHRtbCBib2R5IC5rdGgtZm9vdDItbHtjb2xvcjp2YXIoLS1reC1hY2NlbnQpIWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtY2FyZC1pbWcsaHRtbCBib2R5IC5rdGgtaGVyby1zaWRlLWltZ3thc3BlY3QtcmF0aW86MTYvOTt3aWR0aDoxMDAlO2JhY2tncm91bmQ6dmFyKC0ta3gtaW1nKTtkaXNwbGF5OmJsb2NrO29iamVjdC1maXQ6Y292ZXJ9Cmh0bWwgYm9keSAua3RoLWNhcmQtaW1nIGltZyxodG1sIGJvZHkgLmt0aC1oZXJvLXNpZGUtaW1nIGltZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y292ZXI7ZGlzcGxheTpibG9ja30KaHRtbCBib2R5IC5rdGgtY2FyZC10aXRsZXtjb2xvcjp2YXIoLS1reC1pbmspIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjM0IWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzotLjAxZW19Cmh0bWwgYm9keSAua3RoLWNhcmQ6aG92ZXIgLmt0aC1jYXJkLXRpdGxle3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7dGV4dC11bmRlcmxpbmUtb2Zmc2V0OjNweDt0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOjFweDt0ZXh0LWRlY29yYXRpb24tY29sb3I6I2I5YjdiMX0KaHRtbCBib2R5IC5rdGgtY2FyZDpob3ZlciAua3RoLWNhcmQtaW1ne29wYWNpdHk6Ljk7dHJhbnNpdGlvbjpvcGFjaXR5IC4yc30KaHRtbCBib2R5IC5rdGgtY2FyZC1leGNlcnB0e2ZvbnQtc2l6ZToxNC41cHghaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuNjghaW1wb3J0YW50O2NvbG9yOnZhcigtLWt4LWluazIpIWltcG9ydGFudDtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDozOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59Cmh0bWwgYm9keSAua3RoLWJhZGdlLGh0bWwgYm9keSAua3RoLWJhZGdlLS1zbXtjb2xvcjp2YXIoLS1reC1pbmspIWltcG9ydGFudDtmb250LXNpemU6MTFweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMWVtIWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtbWV0YSxodG1sIGJvZHkgLmt0aC1tZXRhICosaHRtbCBib2R5IC5rdGgtZGQtbXtjb2xvcjp2YXIoLS1reC1pbmszKSFpbXBvcnRhbnQ7Zm9udC1zaXplOjEycHghaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1ncmlke2dhcDozNHB4IDMwcHghaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1zaG9wLXN0cmlwe2JhY2tncm91bmQ6dmFyKC0ta3gtcGFwZXIpIWltcG9ydGFudDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1reC1ydWxlKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1reC1ydWxlKX0KaHRtbCBib2R5IC5rdGgtbXIgaDIsaHRtbCBib2R5IC5rdGgtbXIgaDMsaHRtbCBib2R5IC5rdGgtbXItaHtmb250LXNpemU6MTJweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMDZlbSFpbXBvcnRhbnQ7Y29sb3I6dmFyKC0ta3gtaW5rKSFpbXBvcnRhbnQ7bWFyZ2luOjAgMCAxNnB4IWltcG9ydGFudH0KCi8qIHYxNCBsZWFkIGNvdmVyICovCmh0bWwgYm9keSB1bC5uYXY+bGk+YSxodG1sIGJvZHkgLm5hdj5saT5he3BhZGRpbmctbGVmdDoxMHB4IWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OjEwcHghaW1wb3J0YW50fQpib2R5IC5rdGgtaGVyby13cmFwLmt0aC1oZXJvLXdyYXB7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50O21heC1oZWlnaHQ6bm9uZSFpbXBvcnRhbnQ7bWluLWhlaWdodDowIWltcG9ydGFudDtvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTozNHB4IWltcG9ydGFudH0KYm9keSAua3RoLWhlcm8tbGVmdC5rdGgtaGVyby1sZWZ0Lmt0aC1oZXJvLWxlZnR7ZmxleDowIDAgNTYwcHghaW1wb3J0YW50O3dpZHRoOjU2MHB4IWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7bWF4LWhlaWdodDpub25lIWltcG9ydGFudDttaW4taGVpZ2h0OjAhaW1wb3J0YW50O2FzcGVjdC1yYXRpbzphdXRvIWltcG9ydGFudDtvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudH0KYm9keSAua3RoLWhlcm8tbWFpbi5rdGgtaGVyby1tYWluLmt0aC1oZXJvLW1haW57cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O21heC13aWR0aDpub25lIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7bWluLWhlaWdodDowIWltcG9ydGFudDthc3BlY3QtcmF0aW86MTYvOSFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudH0KYm9keSAua3RoLWhlcm8taW1nLmt0aC1oZXJvLWltZy5rdGgtaGVyby1pbWd7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7dG9wOjAhaW1wb3J0YW50O3JpZ2h0OjAhaW1wb3J0YW50O2JvdHRvbTowIWltcG9ydGFudDt3aWR0aDoxMDAlIWltcG9ydGFudDtoZWlnaHQ6MTAwJSFpbXBvcnRhbnQ7bWF4LWhlaWdodDpub25lIWltcG9ydGFudDthc3BlY3QtcmF0aW86YXV0byFpbXBvcnRhbnQ7YmFja2dyb3VuZC1zaXplOmNvdmVyIWltcG9ydGFudDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9CmJvZHkgLmt0aC1oZXJvLWJvZHkua3RoLWhlcm8tYm9keS5rdGgtaGVyby1ib2R5e3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDtsZWZ0OjAhaW1wb3J0YW50O3JpZ2h0OjAhaW1wb3J0YW50O2JvdHRvbTowIWltcG9ydGFudDt0b3A6YXV0byFpbXBvcnRhbnQ7d2lkdGg6YXV0byFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50O21heC1oZWlnaHQ6bm9uZSFpbXBvcnRhbnQ7cGFkZGluZzoyNnB4IDI0cHggMjBweCFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gdG9wLHJnYmEoOCw5LDEyLC45MikscmdiYSg4LDksMTIsLjU1KSA1NSUscmdiYSg4LDksMTIsMCkpIWltcG9ydGFudH0KYm9keSAua3RoLWhlcm8tYm9keSAqe2NvbG9yOiNmZmYhaW1wb3J0YW50O3RleHQtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC40KSFpbXBvcnRhbnR9CmJvZHkgLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxle2NvbG9yOiNmZmYhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjYwMCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4zIWltcG9ydGFudDttYXJnaW46NnB4IDAgNnB4IWltcG9ydGFudDtvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudDttYXgtaGVpZ2h0Om5vbmUhaW1wb3J0YW50fQpib2R5IC5rdGgtaGVyby1sZWZ0IC5rdGgtYmFkZ2V7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuODgpIWltcG9ydGFudH0KYm9keSAua3RoLWhlcm8tYm9keSAua3RoLW1ldGEsYm9keSAua3RoLWhlcm8tYm9keSAua3RoLW1ldGEgKntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43OCkhaW1wb3J0YW50fQpib2R5IC5rdGgtaGVyby1yaWdodC5rdGgtaGVyby1yaWdodHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50fQpib2R5IC5rdGgtaGVyby1zaWRlLWNhcmR7bWFyZ2luOjAgMCAxOHB4IWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbToxOHB4IWltcG9ydGFudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1reC1ydWxlKSFpbXBvcnRhbnR9CmJvZHkgLmt0aC1oZXJvLXNpZGUtY2FyZDpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206MCFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH0KYm9keSAua3RoLWNhcmQtdGl0bGV7Zm9udC1zaXplOjE3LjVweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NjAwIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjM4IWltcG9ydGFudDtjb2xvcjojMTcxODFkIWltcG9ydGFudH0KYm9keSAua3RoLWhlcm8tc2lkZS10aXRsZXtmb250LXNpemU6MTVweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NjAwIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjQhaW1wb3J0YW50O2NvbG9yOiMxNzE4MWQhaW1wb3J0YW50fQpib2R5IC5rdGgtYmFkZ2UsYm9keSAua3RoLWJhZGdlLS1zbXtjb2xvcjojNmU2ZTY4IWltcG9ydGFudDtmb250LXdlaWdodDo2MDAhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi4xZW0haW1wb3J0YW50fQpib2R5IC5ueXQtcG9zdC10aXRsZXtmb250LXdlaWdodDo2MDAhaW1wb3J0YW50fQpib2R5IC5rdGgtbWV0YSxib2R5IC5rdGgtbWV0YSAqLGJvZHkgLmt0aC1kZC1te2NvbG9yOiM4NDg0N2QhaW1wb3J0YW50fQovKiB2MTUgY292ZXIgcG9zICovCmJvZHkgLmt0aC1oZXJvLWJvZHkua3RoLWhlcm8tYm9keS5rdGgtaGVyby1ib2R5e3RvcDphdXRvIWltcG9ydGFudDtib3R0b206MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6NTJweCAyNHB4IDE0cHghaW1wb3J0YW50O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHRvcCxyZ2JhKDYsNywxMCwuOTQpIDAlLHJnYmEoNiw3LDEwLC43OCkgMzIlLHJnYmEoNiw3LDEwLC4zKSA2OCUscmdiYSg2LDcsMTAsMCkgMTAwJSkhaW1wb3J0YW50O2JveC1zaXppbmc6Ym9yZGVyLWJveCFpbXBvcnRhbnR9CmJvZHkgLmt0aC1oZXJvLWJvZHk+KnttYXJnaW4tdG9wOjAhaW1wb3J0YW50fQpib2R5IC5rdGgtaGVyby1ib2R5Pio6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fQpib2R5IC5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZXttYXJnaW46NHB4IDAgNXB4IWltcG9ydGFudH0KYm9keSAua3RoLWhlcm8tYm9keSAua3RoLW1ldGF7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4zIWltcG9ydGFudH0KYm9keSAua3RoLWhlcm8tbGVmdCAua3RoLWJhZGdle21hcmdpbjowIWltcG9ydGFudDtkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9PC9zdHlsZT4KPHNjcmlwdCBpZD0ia3RoLXNlby1sYW5nIj4oZnVuY3Rpb24oKXsKZnVuY3Rpb24gbGcoKXt0cnl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdrdGhfbGFuZycpfHwnZW4nfWNhdGNoKGUpe3JldHVybiAnZW4nfX0KZnVuY3Rpb24gZ28oKXsKIHZhciBiPWRvY3VtZW50LmJvZHk7IGlmKCFiKSByZXR1cm47CiB2YXIgY2xzPVN0cmluZyhiLmNsYXNzTmFtZXx8JycpOwogdmFyIGlzUG9zdD1jbHMuaW5kZXhPZigncG9zdC10ZW1wbGF0ZScpPj0wfHxjbHMuaW5kZXhPZigncGFnZS10ZW1wbGF0ZScpPj0wOwogdmFyIGlzRW49aXNQb3N0PyhjbHMuaW5kZXhPZigndGFnLWVuZ2xpc2gnKT49MCk6KGxnKCk9PT0nZW4nKTsKIHZhciBjb2RlPWlzRW4/J2VuJzona28nOwogdHJ5e2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2xhbmcnLGNvZGUpO31jYXRjaChlKXt9CiB2YXIgb2c9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtwcm9wZXJ0eT0ib2c6bG9jYWxlIl0nKTsKIGlmKG9nKSBvZy5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnLGlzRW4/J2VuX1VTJzona29fS1InKTsKIGlmKCFpc1Bvc3QpIHJldHVybjsKIHZhciBjYW49ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGlua1tyZWw9Y2Fub25pY2FsXScpOwogdmFyIGhyZWY9Y2FuP2Nhbi5ocmVmOmxvY2F0aW9uLmhyZWYuc3BsaXQoJz8nKVswXTsKIGlmKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdsaW5rW3JlbD1hbHRlcm5hdGVdW2hyZWZsYW5nPSInK2NvZGUrJyJdW2RhdGEta3Roc2VvXScpKXsKICB2YXIgZXg9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGlua1tyZWw9YWx0ZXJuYXRlXVtocmVmbGFuZz0iJytjb2RlKyciXScpOwogIGlmKCFleHx8ZXguZ2V0QXR0cmlidXRlKCdocmVmJykhPT1ocmVmKXsKICAgdmFyIGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO2wuc2V0QXR0cmlidXRlKCdyZWwnLCdhbHRlcm5hdGUnKTtsLnNldEF0dHJpYnV0ZSgnaHJlZmxhbmcnLGNvZGUpO2wuc2V0QXR0cmlidXRlKCdocmVmJyxocmVmKTtsLnNldEF0dHJpYnV0ZSgnZGF0YS1rdGhzZW8nLCcxJyk7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsKTsKICB9CiB9CiBpZihpc0VuJiYhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGlua1tyZWw9YWx0ZXJuYXRlXVtocmVmbGFuZz0ieC1kZWZhdWx0Il0nKSl7CiAgdmFyIHg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO3guc2V0QXR0cmlidXRlKCdyZWwnLCdhbHRlcm5hdGUnKTt4LnNldEF0dHJpYnV0ZSgnaHJlZmxhbmcnLCd4LWRlZmF1bHQnKTt4LnNldEF0dHJpYnV0ZSgnaHJlZicsaHJlZik7eC5zZXRBdHRyaWJ1dGUoJ2RhdGEta3Roc2VvJywnMScpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoeCk7CiB9Cn0KaWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSdsb2FkaW5nJylkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxnbyk7ZWxzZSBnbygpOwpzZXRUaW1lb3V0KGdvLDEyMDApOwp9KSgpOzwvc2NyaXB0Pgo8c3R5bGUgaWQ9Imt0aC1tb2ItY3NzIj5AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7Cmh0bWwgYm9keSAua3RoLWhlcm8td3JhcC5rdGgtaGVyby13cmFwLmt0aC1oZXJvLXdyYXB7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50O21heC1oZWlnaHQ6bm9uZSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9Cmh0bWwgYm9keSAua3RoLWhlcm8tbGVmdC5rdGgtaGVyby1sZWZ0Lmt0aC1oZXJvLWxlZnQua3RoLWhlcm8tbGVmdHt3aWR0aDoxMDAlIWltcG9ydGFudDttYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnQ7ZmxleDpub25lIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7YXNwZWN0LXJhdGlvOmF1dG8haW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLXJpZ2h0Lmt0aC1oZXJvLXJpZ2h0Lmt0aC1oZXJvLXJpZ2h0e3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDttYXJnaW4tdG9wOjI2cHghaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLW1haW4ua3RoLWhlcm8tbWFpbi5rdGgtaGVyby1tYWluLmt0aC1oZXJvLW1haW57d2lkdGg6MTAwJSFpbXBvcnRhbnQ7bWF4LXdpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDthc3BlY3QtcmF0aW86YXV0byFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLWltZy5rdGgtaGVyby1pbWcua3RoLWhlcm8taW1nLmt0aC1oZXJvLWltZ3twb3NpdGlvbjpzdGF0aWMhaW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDttYXgtaGVpZ2h0Om5vbmUhaW1wb3J0YW50O2FzcGVjdC1yYXRpbzoxNi85IWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtaGVyby1ib2R5Lmt0aC1oZXJvLWJvZHkua3RoLWhlcm8tYm9keS5rdGgtaGVyby1ib2R5e3Bvc2l0aW9uOnN0YXRpYyFpbXBvcnRhbnQ7bGVmdDphdXRvIWltcG9ydGFudDtyaWdodDphdXRvIWltcG9ydGFudDt0b3A6YXV0byFpbXBvcnRhbnQ7Ym90dG9tOmF1dG8haW1wb3J0YW50O3dpZHRoOmF1dG8haW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDttYXgtaGVpZ2h0Om5vbmUhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjEzcHggMCAwIDAhaW1wb3J0YW50O2JhY2tncm91bmQ6bm9uZSFpbXBvcnRhbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lIWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtaGVyby1ib2R5Lmt0aC1oZXJvLWJvZHkua3RoLWhlcm8tYm9keS5rdGgtaGVyby1ib2R5OjpiZWZvcmV7ZGlzcGxheTpub25lIWltcG9ydGFudDtjb250ZW50Om5vbmUhaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLWJvZHkua3RoLWhlcm8tYm9keSAqe2NvbG9yOiMxMjEzMWEhaW1wb3J0YW50O3RleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxle2ZvbnQtc2l6ZToyMXB4IWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjMyIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzotLjJweCFpbXBvcnRhbnQ7Y29sb3I6IzEyMTMxYSFpbXBvcnRhbnQ7bWF4LWhlaWdodDpub25lIWltcG9ydGFudDtvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudDttYXJnaW46MCAwIDhweCFpbXBvcnRhbnR9Cmh0bWwgYm9keSAua3RoLWhlcm8tbGVmdCAua3RoLWJhZGdlLmt0aC1iYWRnZS5rdGgtYmFkZ2V7Y29sb3I6IzZlNmU2OCFpbXBvcnRhbnR9Cmh0bWwgYm9keSAua3RoLWhlcm8tYm9keSAua3RoLW1ldGEsaHRtbCBib2R5IC5rdGgtaGVyby1ib2R5IC5rdGgtbWV0YSAqe2NvbG9yOiM2ZTZlNjghaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLW1haW4ua3RoLWhlcm8tbWFpbi5rdGgtaGVyby1tYWluLmt0aC1oZXJvLW1haW57bWF4LWhlaWdodDpub25lIWltcG9ydGFudDttaW4taGVpZ2h0OjAhaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLWxlZnQua3RoLWhlcm8tbGVmdC5rdGgtaGVyby1sZWZ0Lmt0aC1oZXJvLWxlZnR7bWF4LWhlaWdodDpub25lIWltcG9ydGFudDtvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtaGVyby1yaWdodC5rdGgtaGVyby1yaWdodC5rdGgtaGVyby1yaWdodHttYXgtaGVpZ2h0Om5vbmUhaW1wb3J0YW50O292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLXNpZGUtY2FyZC5rdGgtaGVyby1zaWRlLWNhcmQua3RoLWhlcm8tc2lkZS1jYXJke2hlaWdodDphdXRvIWltcG9ydGFudDttYXgtaGVpZ2h0Om5vbmUhaW1wb3J0YW50O21pbi1oZWlnaHQ6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9Cn0KQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjEwMjNweCl7Cmh0bWwgYm9keSAua3RoLWhlcm8tbGVmdC5rdGgtaGVyby1sZWZ0Lmt0aC1oZXJvLWxlZnQua3RoLWhlcm8tbGVmdHt3aWR0aDphdXRvIWltcG9ydGFudDtmbGV4OjEgMSBhdXRvIWltcG9ydGFudDttYXgtd2lkdGg6NTglIWltcG9ydGFudH0KfQovKiAwOTA1IHRpdGxlIGNsYW1wIGZpeDogdGhlbWUgY2xhbXBzIGxlYWQgdGl0bGUgdG8gMiBsaW5lcyBidXQgb3ZlcmZsb3cgaXMgdmlzaWJsZSwgM3JkIGxpbmUgb3ZlcmxhcHBlZCB0aGUgZGF0ZSAqL0BtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXtodG1sIGJvZHkgLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxle2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50Oy13ZWJraXQtbGluZS1jbGFtcDp1bnNldCFpbXBvcnRhbnQ7bGluZS1jbGFtcDpub25lIWltcG9ydGFudDstd2Via2l0LWJveC1vcmllbnQ6aW5pdGlhbCFpbXBvcnRhbnQ7bWF4LWhlaWdodDpub25lIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnR9aHRtbCBib2R5IC5rdGgtaGVyby1ib2R5Lmt0aC1oZXJvLWJvZHkua3RoLWhlcm8tYm9keS5rdGgtaGVyby1ib2R5IC5rdGgtbWV0YXtwb3NpdGlvbjpzdGF0aWMhaW1wb3J0YW50O21hcmdpbi10b3A6NnB4IWltcG9ydGFudH19Cjwvc3R5bGU+CjxzdHlsZSBpZD0ia3RoLWxlYWQtY3NzIj4KaHRtbCBib2R5IC5rdGgtaGVyby1pbWcua3RoLWhlcm8taW1nLmt0aC1oZXJvLWltZy5rdGgtaGVyby1pbWcua3RoLWhlcm8taW1ne2FzcGVjdC1yYXRpbzozLzIhaW1wb3J0YW50fQpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Cmh0bWwgYm9keSAua3RoLWhlcm8td3JhcC5rdGgtaGVyby13cmFwLmt0aC1oZXJvLXdyYXAua3RoLWhlcm8td3JhcHthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtaGVyby1yaWdodC5rdGgtaGVyby1yaWdodC5rdGgtaGVyby1yaWdodC5rdGgtaGVyby1yaWdodHtkaXNwbGF5OmZsZXghaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtaGVyby1zaWRlLWNhcmQua3RoLWhlcm8tc2lkZS1jYXJkLmt0aC1oZXJvLXNpZGUtY2FyZC5rdGgtaGVyby1zaWRlLWNhcmR7ZmxleDoxIDEgMCFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4IWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O21heC1oZWlnaHQ6bm9uZSFpbXBvcnRhbnQ7bWluLWhlaWdodDowIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnR9Cmh0bWwgYm9keSAua3RoLWhlcm8tc2lkZS1jYXJkLmt0aC1oZXJvLXNpZGUtY2FyZC5rdGgtaGVyby1zaWRlLWNhcmQua3RoLWhlcm8tc2lkZS1jYXJkOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U2ZTJkOCFpbXBvcnRhbnR9Cn0KaHRtbCBib2R5IC5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZXt3b3JkLWJyZWFrOmtlZXAtYWxsIWltcG9ydGFudDt0ZXh0LXdyYXA6cHJldHR5IWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtaGVyby1ib2R5Lmt0aC1oZXJvLWJvZHkua3RoLWhlcm8tYm9keS5rdGgtaGVyby1ib2R5Lmt0aC1oZXJvLWJvZHl7YmFja2dyb3VuZDojZjZmM2VjIWltcG9ydGFudDtwYWRkaW5nOjE2cHggMjBweCAxOHB4IWltcG9ydGFudH1odG1sIGJvZHkgLmt0aC1oZXJvLW1haW4ua3RoLWhlcm8tbWFpbi5rdGgtaGVyby1tYWluLmt0aC1oZXJvLW1haW57YXNwZWN0LXJhdGlvOmF1dG8haW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDttYXgtaGVpZ2h0Om5vbmUhaW1wb3J0YW50O21pbi1oZWlnaHQ6MCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLWltZy5rdGgtaGVyby1pbWcua3RoLWhlcm8taW1nLmt0aC1oZXJvLWltZ3twb3NpdGlvbjpzdGF0aWMhaW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDttYXgtaGVpZ2h0Om5vbmUhaW1wb3J0YW50O2FzcGVjdC1yYXRpbzoxNi85IWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtaGVyby1ib2R5Lmt0aC1oZXJvLWJvZHkua3RoLWhlcm8tYm9keS5rdGgtaGVyby1ib2R5e3Bvc2l0aW9uOnN0YXRpYyFpbXBvcnRhbnQ7bGVmdDphdXRvIWltcG9ydGFudDtyaWdodDphdXRvIWltcG9ydGFudDt0b3A6YXV0byFpbXBvcnRhbnQ7Ym90dG9tOmF1dG8haW1wb3J0YW50O3dpZHRoOmF1dG8haW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDttYXgtaGVpZ2h0Om5vbmUhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjE0cHggMCAwIDAhaW1wb3J0YW50O2JhY2tncm91bmQ6bm9uZSFpbXBvcnRhbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lIWltcG9ydGFudH0KaHRtbCBib2R5IC5rdGgtaGVyby1ib2R5Lmt0aC1oZXJvLWJvZHkua3RoLWhlcm8tYm9keS5rdGgtaGVyby1ib2R5OjpiZWZvcmV7ZGlzcGxheTpub25lIWltcG9ydGFudDtjb250ZW50Om5vbmUhaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLWJvZHkua3RoLWhlcm8tYm9keSAqe2NvbG9yOiMxMjEzMWEhaW1wb3J0YW50O3RleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLWxlZnQua3RoLWhlcm8tbGVmdC5rdGgtaGVyby1sZWZ0Lmt0aC1oZXJvLWxlZnR7aGVpZ2h0OmF1dG8haW1wb3J0YW50O21heC1oZWlnaHQ6bm9uZSFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnR9Cmh0bWwgYm9keSAua3RoLWhlcm8tbGVmdCAua3RoLWJhZGdlLmt0aC1iYWRnZS5rdGgtYmFkZ2V7Y29sb3I6IzZlNmU2OCFpbXBvcnRhbnR9Cmh0bWwgYm9keSAua3RoLWhlcm8tYm9keSAua3RoLW1ldGEsaHRtbCBib2R5IC5rdGgtaGVyby1ib2R5IC5rdGgtbWV0YSAqe2NvbG9yOiM2ZTZlNjghaW1wb3J0YW50fQpodG1sIGJvZHkgLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxle2NvbG9yOiMxMjEzMWEhaW1wb3J0YW50O21heC1oZWlnaHQ6bm9uZSFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7bWFyZ2luOjAgMCA5cHghaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjYwMCFpbXBvcnRhbnR9CkBtZWRpYSAobWluLXdpZHRoOjEwMjRweCl7aHRtbCBib2R5IC5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZXtmb250LXNpemU6MjZweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4yOCFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LS4zcHghaW1wb3J0YW50fX0KQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjEwMjNweCl7aHRtbCBib2R5IC5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZS5rdGgtaGVyby10aXRsZXtmb250LXNpemU6MjNweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4zIWltcG9ydGFudH19CkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXtodG1sIGJvZHkgLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxlLmt0aC1oZXJvLXRpdGxle2ZvbnQtc2l6ZToyMXB4IWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjMyIWltcG9ydGFudH19aHRtbCBib2R5IC5rdGgtaGVyby1tYWluIC5rdGgtYmFkZ2Uua3RoLWJhZGdlLmt0aC1iYWRnZS5rdGgtYmFkZ2Uua3RoLWJhZGdle2NvbG9yOiMxNjMwNWMhaW1wb3J0YW50fWh0bWwgYm9keSAua3RoLWhlcm8tbGVmdCAua3RoLWJhZGdlLmt0aC1iYWRnZS5rdGgtYmFkZ2Uua3RoLWJhZGdlLmt0aC1iYWRnZXtjb2xvcjojMTYzMDVjIWltcG9ydGFudH1odG1sIGJvZHkgLmt0aC1oZXJvLW1haW4gLmt0aC1iYWRnZS5rdGgtYmFkZ2Uua3RoLWJhZGdlLmt0aC1iYWRnZS5rdGgtYmFkZ2U6OmFmdGVye2JhY2tncm91bmQ6I2M5YzRiNyFpbXBvcnRhbnR9aHRtbCBib2R5IC5rdGgtaGVyby1sZWZ0IC5rdGgtYmFkZ2Uua3RoLWJhZGdlLmt0aC1iYWRnZS5rdGgtYmFkZ2Uua3RoLWJhZGdlOjphZnRlcntiYWNrZ3JvdW5kOiNjOWM0YjchaW1wb3J0YW50fTwvc3R5bGU+CjxzdHlsZSBpZD0ia3RoLXBvbGlzaC1jc3MiPmh0bWwgYm9keSAucmVhZHkgLnBzLXNlY3Rpb24gLnBzLWl0ZW0gLnBzLWl0ZW0tdGl0bGV7LXdlYmtpdC1saW5lLWNsYW1wOjIhaW1wb3J0YW50O2xpbmUtY2xhbXA6MiFpbXBvcnRhbnQ7bWF4LWhlaWdodDpub25lIWltcG9ydGFudH1odG1sIGJvZHkgLnJlYWR5IC5wcy1zZWN0aW9uIC5wcy1pdGVte21hcmdpbi1ib3R0b206OHB4IWltcG9ydGFudH1odG1sIGJvZHkgLnJlYWR5IC5wcy1zZWN0aW9uIC5wcy10aXRsZXttYXJnaW4tYm90dG9tOjhweCFpbXBvcnRhbnR9aHRtbCBib2R5IC5yZWFkeXtwYWRkaW5nLWJvdHRvbToxMHB4IWltcG9ydGFudDtzY3JvbGxiYXItd2lkdGg6dGhpbiFpbXBvcnRhbnQ7LXdlYmtpdC1tYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIzAwMCBjYWxjKDEwMCUgLSAxNnB4KSxyZ2JhKDAsMCwwLDApKTttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIzAwMCBjYWxjKDEwMCUgLSAxNnB4KSxyZ2JhKDAsMCwwLDApKX1odG1sIGJvZHkgLnByaWNlcy5mdWxsLXByaWNlLWxpc3QgLnByaWNle2FsaWduLWl0ZW1zOmJhc2VsaW5lfWh0bWwgYm9keSAucHJpY2VzLmZ1bGwtcHJpY2UtbGlzdCAucHJpY2UtbGFiZWx7Y29sb3I6IzZlNmU2ODtmb250LXdlaWdodDo1MDB9PC9zdHlsZT4KPHNjcmlwdCBpZD0ia3RoLXBvbGlzaC1qcyI+CihmdW5jdGlvbigpewp2YXIgTU9OPVsnSmFudWFyeScsJ0ZlYnJ1YXJ5JywnTWFyY2gnLCdBcHJpbCcsJ01heScsJ0p1bmUnLCdKdWx5JywnQXVndXN0JywnU2VwdGVtYmVyJywnT2N0b2JlcicsJ05vdmVtYmVyJywnRGVjZW1iZXInXTsKdmFyIE1PTlM9WydKYW4nLCdGZWInLCdNYXInLCdBcHInLCdNYXknLCdKdW4nLCdKdWwnLCdBdWcnLCdTZXAnLCdPY3QnLCdOb3YnLCdEZWMnXTsKdmFyIFdEPVsnU3VuZGF5JywnTW9uZGF5JywnVHVlc2RheScsJ1dlZG5lc2RheScsJ1RodXJzZGF5JywnRnJpZGF5JywnU2F0dXJkYXknXTsKdmFyIFdESz1bJ+ydvCcsJ+yblCcsJ+2ZlCcsJ+yImCcsJ+uqqScsJ+q4iCcsJ+2GoCddOwpmdW5jdGlvbiBpc0tvKCl7dmFyIGg9KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKXx8JycpLnRvTG93ZXJDYXNlKCk7CiBpZihoLmluZGV4T2YoJ2tvJyk9PT0wKXJldHVybiB0cnVlOyBpZihoLmluZGV4T2YoJ2VuJyk9PT0wKXJldHVybiBmYWxzZTsKIHRyeXtyZXR1cm4gKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdrdGhfbGFuZycpfHwna28nKSE9PSdlbic7fWNhdGNoKGUpe3JldHVybiB0cnVlO319CmZ1bmN0aW9uIG1pKHMpe3ZhciBpPU1PTi5pbmRleE9mKHMpOyBpZihpPj0wKXJldHVybiBpOyByZXR1cm4gTU9OUy5pbmRleE9mKHMuc2xpY2UoMCwzKSk7fQpmdW5jdGlvbiBmbXQobyxrbyl7CiBpZihvLnNoKXJldHVybiBrbz8oby5tbysn7JuUICcrby5kKyfsnbwnKTooTU9OU1tvLm1vLTFdKycgJytvLmQpOwogaWYoby53ZCl7dmFyIHc9bmV3IERhdGUoby55LG8ubW8tMSxvLmQpLmdldERheSgpOwogIHJldHVybiBrbz8oby55KyfrhYQgJytvLm1vKyfsm5QgJytvLmQrJ+ydvCAnK1dES1t3XSsn7JqU7J28Jyk6KFdEW3ddKycsICcrTU9OW28ubW8tMV0rJyAnK28uZCsnLCAnK28ueSk7fQogcmV0dXJuIGtvPyhvLnkrJ+uFhCAnK28ubW8rJ+yblCAnK28uZCsn7J28Jyk6KE1PTltvLm1vLTFdKycgJytvLmQrJywgJytvLnkpO30KZnVuY3Rpb24gcGFyc2VTaG9ydCh0KXt2YXIgbTsKIGlmKG09dC5tYXRjaCgvXihcZHsxLDJ9KeyblFxzKihcZHsxLDJ9KeydvCQvKSlyZXR1cm4ge21vOittWzFdLGQ6K21bMl0sc2g6MX07CiBpZihtPXQubWF0Y2goL14oW0EtWl1bYS16XXsyfSlccysoXGR7MSwyfSkkLykpe3ZhciBqPW1pKG1bMV0pOyBpZihqPDApcmV0dXJuIG51bGw7IHJldHVybiB7bW86aisxLGQ6K21bMl0sc2g6MX07fQogcmV0dXJuIG51bGw7fQpmdW5jdGlvbiBmaXhTdHIodCxrbyl7dmFyIHM9dDsKIHM9cy5yZXBsYWNlKC9KdW5nIEhhbi9nLCdAQEpIQEAnKS5yZXBsYWNlKC/tlZzsoJXtm4gvZywnQEBKSEBAJyk7CiBzPXMucmVwbGFjZSgvQEBKSEBAL2csIGtvPyftlZzsoJXtm4gnOidKdW5nIEhhbicpOwogcz1zLnJlcGxhY2UoLyhbQS1aXVthLXpdK2RheSksXHMqKFtBLVpdW2Etel0rKVxzKyhcZHsxLDJ9KSxccyooXGR7NH0pL2csZnVuY3Rpb24odyxhLGIsYyxkKXt2YXIgaT1taShiKTsgaWYoaTwwKXJldHVybiB3OyByZXR1cm4gZm10KHt5OitkLG1vOmkrMSxkOitjLHdkOjF9LGtvKTt9KTsKIHM9cy5yZXBsYWNlKC8oXGR7NH0p64WEXHMqKFxkezEsMn0p7JuUXHMqKFxkezEsMn0p7J28XHMqW+qwgC3tnqNd7JqU7J28L2csZnVuY3Rpb24odyx5LG0sZCl7cmV0dXJuIGZtdCh7eToreSxtbzorbSxkOitkLHdkOjF9LGtvKTt9KTsKIHM9cy5yZXBsYWNlKC8oXGR7NH0p64WEXHMqKFxkezEsMn0p7JuUXHMqKFxkezEsMn0p7J28L2csZnVuY3Rpb24odyx5LG0sZCl7cmV0dXJuIGZtdCh7eToreSxtbzorbSxkOitkfSxrbyk7fSk7CiBzPXMucmVwbGFjZSgvKFxkezEsMn0p7JuUXHMqKFxkezEsMn0pLFxzKihcZHs0fSkvZyxmdW5jdGlvbih3LG0sZCx5KXtyZXR1cm4gZm10KHt5Oit5LG1vOittLGQ6K2R9LGtvKTt9KTsKIHM9cy5yZXBsYWNlKC8oW0EtWl1bYS16XXsyLDh9KVwuP1xzKyhcZHsxLDJ9KSxccyooXGR7NH0pL2csZnVuY3Rpb24odyxiLGMsZCl7dmFyIGk9bWkoYik7IGlmKGk8MClyZXR1cm4gdzsgcmV0dXJuIGZtdCh7eTorZCxtbzppKzEsZDorY30sa28pO30pOwogcmV0dXJuIHM7fQpmdW5jdGlvbiBpc01ldGEoZSl7dmFyIGM9JycrKGUuY2xhc3NOYW1lfHwnJyk7CiBpZigvbWV0YXxkYXRlfGJ5bGluZXxhdXRob3J8dGltZS9pLnRlc3QoYykpcmV0dXJuIHRydWU7CiBpZigvKF58XHMpW0EtWmEtejAtOS1dKi1kKFxzfCQpLy50ZXN0KGMpKXJldHVybiB0cnVlOwogdmFyIHA9ZS5wYXJlbnRFbGVtZW50OyBpZihwKXt2YXIgcGM9JycrKHAuY2xhc3NOYW1lfHwnJyk7CiAgaWYoL21ldGF8ZGF0ZXxieWxpbmV8YXV0aG9yL2kudGVzdChwYykpcmV0dXJuIHRydWU7CiAgaWYoLyhefFxzKVtBLVphLXowLTktXSotZChcc3wkKS8udGVzdChwYykpcmV0dXJuIHRydWU7fQogcmV0dXJuIGZhbHNlO30KdmFyIEhBUz0vXGR7NH3rhYR8XGR7MSwyfeyblHxKdW5nIEhhbnztlZzsoJXtm4h8W0EtWl1bYS16XXsyLDh9XHMrXGR7MSwyfSxccypcZHs0fS87CmZ1bmN0aW9uIG5vcm0oa28pe3ZhciBhbGw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbWFpbiAqLCBmb290ZXIgKiwgaGVhZGVyICosIC5yZWFkeSAqLCAua3RoLW1yIConKSxuPTA7CiBmb3IodmFyIGk9MDtpPGFsbC5sZW5ndGg7aSsrKXt2YXIgZWw9YWxsW2ldOwogIGlmKGVsLmNoaWxkcmVuLmxlbmd0aCljb250aW51ZTsKICB2YXIgdD1lbC50ZXh0Q29udGVudDsgaWYoIXQpY29udGludWU7CiAgdmFyIHR0PXQudHJpbSgpOyBpZighdHR8fHR0Lmxlbmd0aD45MCljb250aW51ZTsKICBpZighSEFTLnRlc3QodHQpKWNvbnRpbnVlOwogIGlmKCFpc01ldGEoZWwpKWNvbnRpbnVlOwogIHZhciBzaD1wYXJzZVNob3J0KHR0KTsKICB2YXIgdiA9IHNoPyBmbXQoc2gsa28pIDogZml4U3RyKHQsa28pOwogIGlmKHYhPT10KXtlbC50ZXh0Q29udGVudD12O24rKzt9fQogcmV0dXJuIG47fQpmdW5jdGlvbiBwcmljZXMoa28pe3ZhciBMPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wcmljZXMuZnVsbC1wcmljZS1saXN0Jyk7CiBmb3IodmFyIGk9MDtpPEwubGVuZ3RoO2krKyl7dmFyIHA9TFtpXTsgaWYocC5nZXRBdHRyaWJ1dGUoJ2RhdGEta3RocCcpPT09JzEnKWNvbnRpbnVlOwogIHZhciByb3dzPXAucXVlcnlTZWxlY3RvckFsbCgnLnByaWNlJyk7IGlmKCFyb3dzLmxlbmd0aCljb250aW51ZTsgdmFyIHY9W107CiAgZm9yKHZhciBqPTA7ajxyb3dzLmxlbmd0aDtqKyspe3YucHVzaCh7cjpyb3dzW2pdLGw6cm93c1tqXS5xdWVyeVNlbGVjdG9yKCcucHJpY2UtbGFiZWwnKSx0Oihyb3dzW2pdLnF1ZXJ5U2VsZWN0b3IoJy5wcmljZS10ZXh0Jyl8fHt0ZXh0Q29udGVudDonJ30pLnRleHRDb250ZW50LnRyaW0oKX0pO30KICBmb3IodmFyIHE9MDtxPHYubGVuZ3RoO3ErKyl7dmFyIHRlPXZbcV0uci5xdWVyeVNlbGVjdG9yKCcucHJpY2UtdGV4dCcpOyBpZih0ZSl7dmFyIHN0PXRlLnRleHRDb250ZW50LnRyaW0oKTsgaWYoc3Q9PT0n66y066OMJyYmIWtvKXRlLnRleHRDb250ZW50PSdGcmVlJzsgZWxzZSBpZigvXkZyZWUkL2kudGVzdChzdCkmJmtvKXRlLnRleHRDb250ZW50PSfrrLTro4wnOyB2W3FdLnQ9dGUudGV4dENvbnRlbnQudHJpbSgpO319CiAgdmFyIGZyPWZ1bmN0aW9uKHgpe3JldHVybiAvXijrrLTro4x8RnJlZSkkL2kudGVzdCh4KX07CiAgdmFyIGFsbD10cnVlOyBmb3IodmFyIGs9MDtrPHYubGVuZ3RoO2srKyl7aWYoIWZyKHZba10udCkpYWxsPWZhbHNlO30KICBpZihhbGx8fHYubGVuZ3RoPT09MSl7IGlmKHZbMF0ubCl2WzBdLmwuc3R5bGUuZGlzcGxheT0nbm9uZSc7CiAgIGZvcih2YXIgazI9MTtrMjx2Lmxlbmd0aDtrMisrKXZbazJdLnIuc3R5bGUuZGlzcGxheT0nbm9uZSc7IH0KICBlbHNleyBmb3IodmFyIGszPTA7azM8di5sZW5ndGg7azMrKyl7IGlmKCF2W2szXS5sKWNvbnRpbnVlOwogICAgdmFyIHBkPS/snKDro4x8UGFpZHxNZW1iZXIvaS50ZXN0KHZbazNdLmwudGV4dENvbnRlbnR8fCcnKTsKICAgIHZbazNdLmwudGV4dENvbnRlbnQgPSBrbz8ocGQ/J+uppOuyhOyLrSc6J+ydvOuwmCcpOihwZD8nTWVtYmVycyc6J1N0YW5kYXJkJyk7IH0gfQogIHAuc2V0QXR0cmlidXRlKCdkYXRhLWt0aHAnLCcxJyk7fQogdmFyIFM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmt0aC1zaG9wLXN0cmlwLXByaWNlJyk7CiBmb3IodmFyIHM9MDtzPFMubGVuZ3RoO3MrKyl7dmFyIGU9U1tzXSx0PShlLnRleHRDb250ZW50fHwnJykucmVwbGFjZSgvXHMrL2csJyAnKS50cmltKCksbz1udWxsLG07CiAgaWYoL14o66y066OMIO2ajOybkOqwgHxGcmVlW17igqldezAsMjB9KVxzKijrrLTro4x8RnJlZSkkL2kudGVzdCh0KSlvPWtvPyfrrLTro4wnOidGcmVlJzsKICBlbHNlIGlmKG09dC5tYXRjaCgvKOKCqVtcZCxdKylccypbwrd8XT9ccyooPzrsnKDro4wg7ZqM7JuQ6rCAfFBhaWRbXuustEZdezAsMjB9KVxzKig/OuustOujjHxGcmVlKS9pKSlvPWtvPyhtWzFdKycgwrcg66mk67KE7IutIOustOujjCcpOihtWzFdKycgwrcgRnJlZSBmb3IgbWVtYmVycycpOwogIGVsc2UgaWYobT10Lm1hdGNoKC9eKD8666y066OMIO2ajOybkOqwgHxGcmVlW17igqldezAsMjB9KVxzKijigqlbXGQsXSspJC9pKSlvPW1bMV07CiAgaWYobyYmbyE9PXQpZS50ZXh0Q29udGVudD1vO319CmZ1bmN0aW9uIGxhYmVscygpe3ZhciBhbGw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbmF2ICosIGhlYWRlciAqLCBtYWluIConKTsKIGZvcih2YXIgaT0wO2k8YWxsLmxlbmd0aDtpKyspe3ZhciBlPWFsbFtpXTsgaWYoZS5jaGlsZHJlbi5sZW5ndGgpY29udGludWU7IHZhciB0PWUudGV4dENvbnRlbnQ7CiAgaWYoIXR8fHQubGVuZ3RoPjQ0fHwhL1RlbGNvL2kudGVzdCh0KSljb250aW51ZTsKICB2YXIgdj10LnJlcGxhY2UoL1RWXHMqJlxzKlRlbGNvL2dpLCdUViAmIFRlbGVjb20nKS5yZXBsYWNlKC9UZWxjby9naSwnVGVsZWNvbScpOwogIGlmKHYhPT10KWUudGV4dENvbnRlbnQ9djt9CiB2YXIgdGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmt0aC10YWctY291bnQnKTsKIGZvcih2YXIgaz0wO2s8dGMubGVuZ3RoO2srKyl7IGlmKCEvXGQvLnRlc3QodGNba10udGV4dENvbnRlbnR8fCcnKSkgdGNba10uc3R5bGUuZGlzcGxheT0nbm9uZSc7IH0KfQpmdW5jdGlvbiBuYXZkZChrbyl7CiB2YXIgbT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubmF2LWxvY2FsLXRlY2ggLmt0aC1kZC1tJyk7IGlmKCFtfHxtLmdldEF0dHJpYnV0ZSgnZGF0YS1rdGhzdCcpPT09JzEnKXJldHVybjsKIHZhciBiYXNlPW0ucXVlcnlTZWxlY3RvcignYScpOyBpZighYmFzZSlyZXR1cm47CiB2YXIgYT1iYXNlLmNsb25lTm9kZSh0cnVlKTsKIGEuc2V0QXR0cmlidXRlKCdocmVmJywnL3NldXRldXJpbWluZy1jd2FseWVvbmdqaS10dWVvLWppZG8tMi8nKTsKIGEuY2xhc3NOYW1lPScnOyBhLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jdXJyZW50Jyk7CiBmb3IodmFyIGk9MDtpPGEuY2hpbGROb2Rlcy5sZW5ndGg7aSsrKXsgaWYoYS5jaGlsZE5vZGVzW2ldLm5vZGVUeXBlPT09MyYmYS5jaGlsZE5vZGVzW2ldLnRleHRDb250ZW50LnRyaW0oKSl7IGEuY2hpbGROb2Rlc1tpXS50ZXh0Q29udGVudCA9IGtvPyfsiqTtirjrpqzrsI0g7Yis7Ja066as7KaYJzonU3RyZWFtaW5nIFRvdXJpc20nOyBicmVhazsgfSB9CiB2YXIgc3A9YS5xdWVyeVNlbGVjdG9yKCdzcGFuJyk7IGlmKHNwKSBzcC50ZXh0Q29udGVudCA9IGtvPydLLey9mO2FkOy4oCDstKzsmIHsp4Ag7KeA64+EJzonSy1jb250ZW50IGZpbG1pbmcgbG9jYXRpb25zJzsKIG0uYXBwZW5kQ2hpbGQoYSk7IG0uc2V0QXR0cmlidXRlKCdkYXRhLWt0aHN0JywnMScpOwp9CmZ1bmN0aW9uIHRhZ2Rlc2Moa28pewogdmFyIGQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmt0aC10YWctZGVzYycpOyBpZighZClyZXR1cm47CiB2YXIgZnVsbD1kLmdldEF0dHJpYnV0ZSgnZGF0YS1rdGhmdWxsJyl8fChkLnRleHRDb250ZW50fHwnJykudHJpbSgpOyBpZighZnVsbClyZXR1cm47CiB2YXIgbW09ZnVsbC5tYXRjaCgvXihbXHNcU10qPylccypbXCjvvIhdKFteKe+8iV0qW0EtWmEtel1bXinvvIldKilbXCnvvIldXHMqJC8pOyBpZighbW0pcmV0dXJuOwogZC5zZXRBdHRyaWJ1dGUoJ2RhdGEta3RoZnVsbCcsIGZ1bGwpOwogdmFyIHYgPSBrbyA/IG1tWzFdLnRyaW0oKSA6IG1tWzJdLnRyaW0oKTsKIGlmKHYgJiYgZC50ZXh0Q29udGVudC50cmltKCkhPT12KSBkLnRleHRDb250ZW50PXY7Cn0KZnVuY3Rpb24gZGVkdXBlKCl7aWYobG9jYXRpb24ucGF0aG5hbWUhPT0nLycpcmV0dXJuIDA7CiB2YXIgbWFpbj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtYWluJyk7IGlmKCFtYWluKXJldHVybiAwOyB2YXIgc2Vlbj17fSxybT0wOwogdmFyIGtpZHM9W10uc2xpY2UuY2FsbChtYWluLmNoaWxkcmVuKTsKIGZvcih2YXIgaT0wO2k8a2lkcy5sZW5ndGg7aSsrKXt2YXIgZWw9a2lkc1tpXTsKICB2YXIgY249KHR5cGVvZiBlbC5jbGFzc05hbWU9PT0nc3RyaW5nJyk/ZWwuY2xhc3NOYW1lLnRyaW0oKTonJzsgaWYoIWNuKWNvbnRpbnVlOwogIHZhciBjPWNuLnNwbGl0KC9ccysvKVswXTsgaWYoYy5pbmRleE9mKCdrdGgtJykhPT0wKWNvbnRpbnVlOwogIHZhciB0eD0oZWwudGV4dENvbnRlbnR8fCcnKS5yZXBsYWNlKC9bXjAtOUEtWmEteuqwgC3tnqNdL2csJycpOyBpZih0eC5sZW5ndGg8MzApY29udGludWU7CiAgdmFyIGtleT1jKyd8Jyt0eC5zbGljZSgwLDYwKTsKICBpZihzZWVuW2tleV0pe2VsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpO3JtKys7fWVsc2V7c2VlbltrZXldPTE7fX0KIHJldHVybiBybTt9CnZhciBydW5zPTA7CmZ1bmN0aW9uIG5hdmxhbmcoa28pe3ZhciBhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImxpLm5hdi1kYXRhPmEsbGkubmF2LWRlaXRlbz5hIik7aWYoIWEpcmV0dXJuO3ZhciBuPWEuZmlyc3RDaGlsZDtpZihuJiZuLm5vZGVUeXBlPT09Myl7aWYobi5ub2RlVmFsdWUudHJpbSgpIT09IkRhdGEiKW4ubm9kZVZhbHVlPSJEYXRhIjt9ZWxzZSBpZihhLnRleHRDb250ZW50LnRyaW0oKSE9PSJEYXRhIil7YS50ZXh0Q29udGVudD0iRGF0YSI7fXZhciB3PWtvPyIvdGFnL2RhdGEta3IvIjoiL3RhZy9kYXRhLWVuLyI7dmFyIGg9YS5nZXRBdHRyaWJ1dGUoImhyZWYiKXx8IiI7aWYoaC5pbmRleE9mKHcpPDApYS5zZXRBdHRyaWJ1dGUoImhyZWYiLHcpO30KZnVuY3Rpb24gcnVuKCl7aWYocnVucysrPjkwKXJldHVybjsgdmFyIGtvPWlzS28oKTsgZGVkdXBlKCk7IG5vcm0oa28pOyBwcmljZXMoa28pOyBsYWJlbHMoKTsgbmF2ZGQoa28pOyB0YWdkZXNjKGtvKTsgbmF2bGFuZyhrbyk7fQpydW4oKTsKdmFyIG49MCxpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3J1bigpOyBpZigrK24+MjQpY2xlYXJJbnRlcnZhbChpdik7fSw2MDApOwp2YXIgdG1yPW51bGw7CnRyeXtuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0bXIpO3Rtcj1zZXRUaW1lb3V0KHJ1biwzMjApO30pLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7Y2hpbGRMaXN0OnRydWUsc3VidHJlZTp0cnVlfSk7fWNhdGNoKGUpe30Kd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGZ1bmN0aW9uKCl7c2V0VGltZW91dChydW4sMzAwKTtzZXRUaW1lb3V0KHJ1biwxNjAwKTtzZXRUaW1lb3V0KHJ1biw0MjAwKTt9KTsKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7c2V0VGltZW91dChydW4sNDAwKTt9LHRydWUpOwp9KSgpOwo8L3NjcmlwdD4KPHNjcmlwdCBpZD0ia3RoLXBlb3BsZS1qcyI+KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYWRkKCl7dmFyIHVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInVsLm5hdiIpO2lmKCF1bClyZXR1cm47aWYodWwucXVlcnlTZWxlY3RvcigibGkubmF2LXBlb3BsZSIpKXJldHVybjt2YXIgcmVmPXVsLnF1ZXJ5U2VsZWN0b3IoImxpLm5hdi1vcGluaW9uIil8fHVsLnF1ZXJ5U2VsZWN0b3IoImxpLm5hdi1hYm91dCIpO2lmKCFyZWYpcmV0dXJuO3ZhciBsaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpO2xpLmNsYXNzTmFtZT0ibmF2LXBlb3BsZSI7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2EuaHJlZj0iL3RhZy9wZW9wbGUvIjthLnRleHRDb250ZW50PSJQZW9wbGUiO3ZhciBzPXJlZi5xdWVyeVNlbGVjdG9yKCJhIik7aWYocyYmcy5jbGFzc05hbWUpYS5jbGFzc05hbWU9cy5jbGFzc05hbWU7bGkuYXBwZW5kQ2hpbGQoYSk7cmVmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGxpLHJlZi5uZXh0U2libGluZyk7fWZ1bmN0aW9uIGdvKCl7aWYoIWRvY3VtZW50LmJvZHkpe3NldFRpbWVvdXQoZ28sNTApO3JldHVybjt9YWRkKCk7dHJ5e25ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHdpbmRvdy5fX2twcFQpO3dpbmRvdy5fX2twcFQ9c2V0VGltZW91dChhZGQsMjAwKTt9KS5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2NoaWxkTGlzdDp0cnVlLHN1YnRyZWU6dHJ1ZX0pO31jYXRjaChlKXt9dmFyIG49MCxpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2FkZCgpO2lmKCsrbj4yMCljbGVhckludGVydmFsKGl2KTt9LDYwMCk7fWdvKCk7fSkoKTs8L3NjcmlwdD4KPHNjcmlwdCBpZD0ia3RoLWNhcmRmaXgtanMiPihmdW5jdGlvbigpe3ZhciBtYXA9bnVsbDtmdW5jdGlvbiBidWlsZChjYil7dHJ5e2ZldGNoKGxvY2F0aW9uLnBhdGhuYW1lLHtjYWNoZToiZm9yY2UtY2FjaGUifSkudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gci50ZXh0KCl9KS50aGVuKGZ1bmN0aW9uKHQpe3ZhciBkPW5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodCwidGV4dC9odG1sIik7bWFwPXt9O2QucXVlcnlTZWxlY3RvckFsbCgiYS5rdGgtY2FyZCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGltPWEucXVlcnlTZWxlY3RvcigiLmt0aC1jYXJkLWltZyBpbWciKTtpZihpbSYmaW0uZ2V0QXR0cmlidXRlKCJzcmMiKSltYXBbYS5nZXRBdHRyaWJ1dGUoImhyZWYiKV09aW0uZ2V0QXR0cmlidXRlKCJzcmMiKTt9KTtpZihjYiljYigpO30pLmNhdGNoKGZ1bmN0aW9uKCl7fSk7fWNhdGNoKGUpe319ZnVuY3Rpb24gZml4KCl7aWYoIW1hcClyZXR1cm47ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiYS5rdGgtY2FyZCIpLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoYS5xdWVyeVNlbGVjdG9yKCIua3RoLWNhcmQtaW1nIikpcmV0dXJuO3ZhciBzPW1hcFthLmdldEF0dHJpYnV0ZSgiaHJlZiIpXTtpZighcylyZXR1cm47dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5jbGFzc05hbWU9Imt0aC1jYXJkLWltZyI7dmFyIGltPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO2ltLnNyYz1zO2ltLmFsdD0iIjtpbS5sb2FkaW5nPSJsYXp5IjtkLmFwcGVuZENoaWxkKGltKTthLmluc2VydEJlZm9yZShkLGEuZmlyc3RDaGlsZCk7fSk7fXZhciB0PW51bGw7ZnVuY3Rpb24gc2NoZWQoKXtpZih0KXJldHVybjt0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0PW51bGw7Zml4KCk7fSwyMDApO31mdW5jdGlvbiBnbygpe2lmKCFkb2N1bWVudC5ib2R5KXtzZXRUaW1lb3V0KGdvLDYwKTtyZXR1cm47fWJ1aWxkKGZ1bmN0aW9uKCl7Zml4KCk7fSk7c2V0SW50ZXJ2YWwoZml4LDE1MDApO3RyeXtuZXcgTXV0YXRpb25PYnNlcnZlcihzY2hlZCkub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHtjaGlsZExpc3Q6dHJ1ZSxzdWJ0cmVlOnRydWV9KTt9Y2F0Y2goZSl7fXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZml4LDMwMCk7c2V0VGltZW91dChmaXgsMTUwMCk7fSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7c2V0VGltZW91dChmaXgsNDAwKTtzZXRUaW1lb3V0KGZpeCwxMjAwKTt9LHRydWUpO31nbygpO30pKCk7PC9zY3JpcHQ+PHN0eWxlIGlkPSJrdGgtcGFpcmZpeC1jc3MiPkBtZWRpYSAobWluLXdpZHRoOjYwMXB4KXtodG1sIGJvZHkgLmt0aC1wYWlyLXRoLmt0aC1wYWlyLXRoe3dpZHRoOjExMnB4O2ZsZXg6MCAwIDExMnB4fX1AbWVkaWEgKG1heC13aWR0aDo2MDBweCl7aHRtbCBib2R5IC5rdGgtcGFpci10aC5rdGgtcGFpci10aHtoZWlnaHQ6YXV0bzthc3BlY3QtcmF0aW86NC8zfX1odG1sIGJvZHkgLmt0aC1wYWlyLXgua3RoLXBhaXIteHstd2Via2l0LWxpbmUtY2xhbXA6M308L3N0eWxlPjxzdHlsZSBpZD0ia3RoLWtyZWxheS1jc3MiPmh0bWwgYm9keSAua3RoLXl0IC5rdGgta3JlbGF5LWxvZ297ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleDowIDAgYXV0bzthbGlnbi1zZWxmOmNlbnRlcjt3aWR0aDoxMjJweDtoZWlnaHQ6NDBweDttYXJnaW46MCAxMnB4IDAgMDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbn1odG1sIGJvZHkgLmt0aC15dCAua3RoLXNlY3Rpb24tdGl0bGUua3RoLWhhcy1rcmVsYXk+c3Zne2Rpc3BsYXk6bm9uZX1odG1sIGJvZHkgLmt0aC15dCAua3RoLXNlY3Rpb24tdGl0bGUua3RoLWhhcy1rcmVsYXkgLmt0aC1rZXRsb2dve2Rpc3BsYXk6bm9uZX1AbWVkaWEgKG1heC13aWR0aDo2MDBweCl7aHRtbCBib2R5IC5rdGgteXQgLmt0aC1rcmVsYXktbG9nb3t3aWR0aDo5OHB4O2hlaWdodDozMnB4O21hcmdpbi1yaWdodDo5cHh9fTwvc3R5bGU+PHNjcmlwdCBpZD0ia3RoLWtyZWxheS1qcyI+KGZ1bmN0aW9uKCl7dmFyIEw9Imh0dHBzOi8vY2RuLm1lZGlhLmJsdWVkb3Quc28vYmx1ZWRvdC5rZW50ZXJ0ZWNoaHViLzIwMjYvMDgvbHBwMnR3XzIwMjYwODI5MTIwMS5wbmciO2Z1bmN0aW9uIGluamVjdCgpe3ZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5rdGgteXQgLmt0aC1zZWN0aW9uLXRpdGxlIik7aWYoIXQpcmV0dXJuO2lmKCF0LnF1ZXJ5U2VsZWN0b3IoIi5rdGgta3JlbGF5LWxvZ28iKSl7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3MuY2xhc3NOYW1lPSJrdGgta3JlbGF5LWxvZ28iO3Muc2V0QXR0cmlidXRlKCJyb2xlIiwiaW1nIik7cy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCJLLVJFTEFZIFRWIik7cy5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9InVybCgiK0wrIikiO3QuaW5zZXJ0QmVmb3JlKHMsdC5maXJzdENoaWxkKTt0LmNsYXNzTGlzdC5hZGQoImt0aC1oYXMta3JlbGF5Iik7dmFyIG5zPXQuY2hpbGROb2Rlcztmb3IodmFyIGk9MDtpPG5zLmxlbmd0aDtpKyspe3ZhciBuPW5zW2ldO2lmKG4ubm9kZVR5cGU9PT0zJiYvSy0/UkVMQVkvaS50ZXN0KG4ubm9kZVZhbHVlKSl7bi5ub2RlVmFsdWU9IiI7fX19fWZ1bmN0aW9uIHJ1bigpe3RyeXtpbmplY3QoKX1jYXRjaChlKXt9fXJ1bigpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHJ1bik7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHJ1bik7dmFyIGM9MCxpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3J1bigpO2lmKCsrYz4zMCljbGVhckludGVydmFsKGl2KX0sNzAwKTt0cnl7dmFyIG1vPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHdpbmRvdy5fX2tydCk7d2luZG93Ll9fa3J0PXNldFRpbWVvdXQocnVuLDIwMCl9KTttby5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx7Y2hpbGRMaXN0OnRydWUsc3VidHJlZTp0cnVlfSl9Y2F0Y2goZSl7fX0pKCk7PC9zY3JpcHQ+PHNjcmlwdCBpZD0ia3RoLWtyZWxheS1hYm91dC1qcyI+KGZ1bmN0aW9uKCl7dmFyIEtUPSLrqYDti7Ag7ZSM656r7Y+8IEvsu6zsspgg7Iqk7Yqc65SU7JikIixFVD0iTXVsdGktUGxhdGZvcm0gSy1DdWx0dXJlIFN0dWRpbyIsS0I9IjxkaXYgc3R5bGU9XCJkaXNwbGF5OmZsZXg7Z2FwOjIycHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtmbGV4LXdyYXA6d3JhcFwiPjxkaXYgcm9sZT1cImltZ1wiIGFyaWEtbGFiZWw9XCJLLVJFTEFZIFRWXCIgc3R5bGU9XCJmbGV4OjAgMCAyMDBweDtoZWlnaHQ6NjJweDtiYWNrZ3JvdW5kLWltYWdlOnVybChodHRwczovL2Nkbi5tZWRpYS5ibHVlZG90LnNvL2JsdWVkb3Qua2VudGVydGVjaGh1Yi8yMDI2LzA4L2xwcDJ0d18yMDI2MDgyOTEyMDEucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6Y29udGFpblwiPjwvZGl2PjxwIHN0eWxlPVwiZmxleDoxIDEgMzAwcHg7bWFyZ2luOjBcIj5LLUVudGVyVGVjaCBIdWLripQg66mA7YuwIO2UjOueq+2PvCBL7Lus7LKYIOyKpO2KnOuUlOyYpCA8Yj5LLVJFTEFZIFRWPC9iPuulvCDsmrTsmIHtlZjqs6Ag7J6I7Iq164uI64ukLiDtlZzqta3slrQg7LGE64SQ6rO8IOq4gOuhnOuyjCjsmIHslrQpIOyxhOuEkOydhCDtlajqu5gg65GQ6rOgIEvtjJ3Ct+uTnOudvOuniMK3S+2RuOuTnMK365287J207ZSE7Iqk7YOA7J28IOuTsSBL7Lus7LKYIOy9mO2FkOy4oOulvCDsp4HsoJEg7KCc7J6R7ZW0IOycoO2KnOu4jOyZgCDshozshZwg7IiP7Y+8IOuTsSDsl6zrn6wg7ZSM656r7Y+87Jy866GcIOycoO2Gte2VqeuLiOuLpC4g7Leo7J6s7JmAIOu2hOyEneyXkOyEnCDslrvsnYAg7IKw7JeF7J2YIOunpeudveydhCDsmIHsg4Eg7Ja47Ja066GcIOyYruq4sOuKlCDqsoPsnbQgSy1SRUxBWSBUVuydmCDsl63tlaDsnoXri4jri6QuPC9wPjwvZGl2PiIsRUI9IjxkaXYgc3R5bGU9XCJkaXNwbGF5OmZsZXg7Z2FwOjIycHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtmbGV4LXdyYXA6d3JhcFwiPjxkaXYgcm9sZT1cImltZ1wiIGFyaWEtbGFiZWw9XCJLLVJFTEFZIFRWXCIgc3R5bGU9XCJmbGV4OjAgMCAyMDBweDtoZWlnaHQ6NjJweDtiYWNrZ3JvdW5kLWltYWdlOnVybChodHRwczovL2Nkbi5tZWRpYS5ibHVlZG90LnNvL2JsdWVkb3Qua2VudGVydGVjaGh1Yi8yMDI2LzA4L2xwcDJ0d18yMDI2MDgyOTEyMDEucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6Y29udGFpblwiPjwvZGl2PjxwIHN0eWxlPVwiZmxleDoxIDEgMzAwcHg7bWFyZ2luOjBcIj5LLUVudGVyVGVjaCBIdWIgb3BlcmF0ZXMgPGI+Sy1SRUxBWSBUVjwvYj4sIGEgbXVsdGktcGxhdGZvcm0gSy1jdWx0dXJlIHN0dWRpby4gV2l0aCBhIEtvcmVhbiBjaGFubmVsIGFuZCBhIGdsb2JhbCAoRW5nbGlzaCkgY2hhbm5lbCwgaXQgcHJvZHVjZXMgb3JpZ2luYWwgdmlkZW8gb24gSy1wb3AsIGRyYW1hLCBLLWZvb2QgYW5kIGxpZmVzdHlsZSwgYW5kIGRpc3RyaWJ1dGVzIGl0IGFjcm9zcyBZb3VUdWJlIGFuZCBzb2NpYWwgc2hvcnQtZm9ybSBwbGF0Zm9ybXMg4oCUIGNhcnJ5aW5nIHRoZSBpbmR1c3RyeSBjb250ZXh0IGJlaGluZCBvdXIgcmVwb3J0aW5nIGludG8gdmlkZW8uPC9wPjwvZGl2PiI7ZnVuY3Rpb24gYnVpbGQodCxiKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWN0aW9uIik7cy5jbGFzc05hbWU9ImthLXNlYyBrdGgta3JlbGF5LWFib3V0IjtzLmlubmVySFRNTD0iPGRpdiBjbGFzcz1cImthLWxhYlwiPjxzcGFuPjAwPC9zcGFuPiIrdCsiPC9kaXY+PGRpdiBjbGFzcz1cImthLWJvZHlcIj4iK2IrIjwvZGl2PiI7cmV0dXJuIHM7fWZ1bmN0aW9uIHJ1bigpe3RyeXtpZighL15cL2Fib3V0XC8/Ly50ZXN0KGxvY2F0aW9uLnBhdGhuYW1lKSlyZXR1cm47dmFyIGFiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5rdC1hYm91dCIpO2lmKCFhYilyZXR1cm47dmFyIGJsPVtdLmZpbHRlci5jYWxsKGFiLmNoaWxkcmVuLGZ1bmN0aW9uKGMpe3JldHVybiBjLnF1ZXJ5U2VsZWN0b3ImJmMucXVlcnlTZWxlY3RvcigiLmthLWhlcm8iKTt9KTtmb3IodmFyIGk9MDtpPGJsLmxlbmd0aCYmaTwyO2krKyl7dmFyIGI9YmxbaV07aWYoYi5xdWVyeVNlbGVjdG9yKCIua3RoLWtyZWxheS1hYm91dCIpKWNvbnRpbnVlO3ZhciBzcz1iLnF1ZXJ5U2VsZWN0b3JBbGwoIi5rYS1zZWMiKTtpZihzcy5sZW5ndGg8Myljb250aW51ZTt2YXIgcz1idWlsZChpPT09MD9LVDpFVCxpPT09MD9LQjpFQik7c3NbMl0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocyxzc1syXSk7dmFyIGFsbD1iLnF1ZXJ5U2VsZWN0b3JBbGwoIi5rYS1zZWMiKTtmb3IodmFyIGs9MDtrPGFsbC5sZW5ndGg7aysrKXt2YXIgc3A9YWxsW2tdLnF1ZXJ5U2VsZWN0b3IoIi5rYS1sYWIgc3BhbiIpO2lmKHNwKXNwLnRleHRDb250ZW50PShrKzE8MTA/IjAiOiIiKSsoaysxKTt9fX1jYXRjaChlKXt9fXJ1bigpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHJ1bik7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHJ1bik7dmFyIGM9MCxpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3J1bigpO2lmKCsrYz40MCljbGVhckludGVydmFsKGl2KX0sODAwKTt0cnl7dmFyIG1vPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHdpbmRvdy5fX2FidCk7d2luZG93Ll9fYWJ0PXNldFRpbWVvdXQocnVuLDI1MCl9KTttby5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx7Y2hpbGRMaXN0OnRydWUsc3VidHJlZTp0cnVlfSl9Y2F0Y2goZSl7fX0pKCk7PC9zY3JpcHQ+PHNjcmlwdCBpZD0ia3RoLXNlby1sZCI+KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZml4KCl7dHJ5e3ZhciBMPShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZ3x8ImtvIikuaW5kZXhPZigiZW4iKT09PTA/ImVuIjoia28iO3ZhciBwYWlkPSEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnBvc3QtdXBncmFkZS1tZXNzYWdlLC5ibHVlZG90LXBheW1lbnQtcG9wdXAiKTt2YXIgbnM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgic2NyaXB0W3R5cGU9J2FwcGxpY2F0aW9uL2xkK2pzb24nXSIpO2Zvcih2YXIgaT0wO2k8bnMubGVuZ3RoO2krKyl7dmFyIGVsPW5zW2ldO2lmKGVsLmdldEF0dHJpYnV0ZSgiZGF0YS1rdGhsZCIpKWNvbnRpbnVlO3ZhciBvO3RyeXtvPUpTT04ucGFyc2UoZWwudGV4dENvbnRlbnQpfWNhdGNoKGUpe2NvbnRpbnVlfXZhciB0PW9bIkB0eXBlIl18fCIiO2lmKCEvQXJ0aWNsZS8udGVzdCh0KSljb250aW51ZTtvLmluTGFuZ3VhZ2U9TDtpZihvLnB1Ymxpc2hlciYmdHlwZW9mIG8ucHVibGlzaGVyPT09Im9iamVjdCIpe28ucHVibGlzaGVyLm5hbWU9IkstRW50ZXJUZWNoIEh1YiI7fWlmKHBhaWQmJnQ9PT0iTmV3c0FydGljbGUiJiYhby5pc0FjY2Vzc2libGVGb3JGcmVlKXtvLmlzQWNjZXNzaWJsZUZvckZyZWU9IkZhbHNlIjt9ZWwudGV4dENvbnRlbnQ9SlNPTi5zdHJpbmdpZnkobyk7ZWwuc2V0QXR0cmlidXRlKCJkYXRhLWt0aGxkIiwiMSIpO319Y2F0Y2goZSl7fX1maXgoKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmaXgpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmaXgpO3ZhciBjPTAsaXY9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtmaXgoKTtpZigrK2M+MjApY2xlYXJJbnRlcnZhbChpdil9LDcwMCk7fSkoKTs8L3NjcmlwdD48c2NyaXB0IGlkPSJrdGgtc2hvcGxhbmctanMiPihmdW5jdGlvbigpe3ZhciBIQU49L1tcdTMxMzEtXHUzMThFXHVBQzAwLVx1RDdBM10vO2Z1bmN0aW9uIGlzS28oKXt2YXIgbD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZ3x8IiI7aWYobC5pbmRleE9mKCJlbiIpPT09MClyZXR1cm4gZmFsc2U7aWYobC5pbmRleE9mKCJrbyIpPT09MClyZXR1cm4gdHJ1ZTt0cnl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJrdGhfbGFuZyIpIT09ImVuIn1jYXRjaChlKXtyZXR1cm4gdHJ1ZX19ZnVuY3Rpb24gdHh0KGVsKXt2YXIgdD0iIjt2YXIgaD1lbC5xdWVyeVNlbGVjdG9yKCJoMyxoMiwua3RoLXNob3Atc3RyaXAtdCxbY2xhc3MqPXRpdGxlXSIpO2lmKGgpdCs9IiAiKyhoLnRleHRDb250ZW50fHwiIik7dmFyIHA9ZWwucXVlcnlTZWxlY3RvcigicC5leGNlcnB0LC5rdGgtc2hvcC1zdHJpcC14LFtjbGFzcyo9ZXhjZXJwdF0iKTtpZihwKXQrPSIgIisocC50ZXh0Q29udGVudHx8IiIpO2lmKCF0LnJlcGxhY2UoL1xzL2csIiIpKXt0PShlbC50ZXh0Q29udGVudHx8IiIpO3ZhciBsYj1lbC5xdWVyeVNlbGVjdG9yQWxsKCJbY2xhc3MqPWxhYmVsXSxbY2xhc3MqPXByaWNlXSxbY2xhc3MqPWJhZGdlXSIpO2Zvcih2YXIgaT0wO2k8bGIubGVuZ3RoO2krKyl7dD10LnNwbGl0KGxiW2ldLnRleHRDb250ZW50fHwiIikuam9pbigiICIpO319cmV0dXJuIHQ7fWZ1bmN0aW9uIGxhbmcoZWwpe3JldHVybiBIQU4udGVzdCh0eHQoZWwpKT8ia28iOiJlbiI7fWZ1bmN0aW9uIGZpbHQobGlzdCl7aWYoIWxpc3QubGVuZ3RoKXJldHVybiAwO3ZhciB3YW50PWlzS28oKT8ia28iOiJlbiI7dmFyIG49MCxpO2ZvcihpPTA7aTxsaXN0Lmxlbmd0aDtpKyspe3ZhciBnPWxpc3RbaV0uZ2V0QXR0cmlidXRlKCJkYXRhLWt0aGxnIik7aWYoIWcpe2c9bGFuZyhsaXN0W2ldKTtsaXN0W2ldLnNldEF0dHJpYnV0ZSgiZGF0YS1rdGhsZyIsZyk7fWlmKGc9PT13YW50KW4rKzt9Zm9yKGk9MDtpPGxpc3QubGVuZ3RoO2krKyl7dmFyIHNoPShuPT09MHx8bGlzdFtpXS5nZXRBdHRyaWJ1dGUoImRhdGEta3RobGciKT09PXdhbnQpO2lmKHNoKXtsaXN0W2ldLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJkaXNwbGF5Iik7fWVsc2V7bGlzdFtpXS5zdHlsZS5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsIm5vbmUiLCJpbXBvcnRhbnQiKTt9fXJldHVybiBuO31mdW5jdGlvbiBydW4oKXt0cnl7ZmlsdChbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ibHVlZG90LXByb2R1Y3QtY2FyZCIpKSk7dmFyIHN0cmlwPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5rdGgtc2hvcC1zdHJpcCIpO2lmKHN0cmlwKXt2YXIgbj1maWx0KFtdLnNsaWNlLmNhbGwoc3RyaXAucXVlcnlTZWxlY3RvckFsbCgiLmt0aC1zaG9wLXN0cmlwLWl0ZW0iKSkpO3ZhciBub3RlPXN0cmlwLnF1ZXJ5U2VsZWN0b3IoIi5rdGgtc2hvcC1ub3RlIik7aWYobm90ZSl7aWYoaXNLbygpKXtub3RlLnN0eWxlLmRpc3BsYXk9Im5vbmUiO31lbHNle25vdGUuc3R5bGUuZGlzcGxheT0iIjtub3RlLnRleHRDb250ZW50PW4+MD8iRW5nbGlzaC1sYW5ndWFnZSByZXBvcnRzLiBTd2l0Y2ggdG8gdGhlIEtvcmVhbiBlZGl0aW9uIGZvciB0aGUgZnVsbCByZXBvcnQgbGlicmFyeS4iOiJSZXBvcnRzIGFyZSBwdWJsaXNoZWQgaW4gS29yZWFuLiI7fX19fWNhdGNoKGUpe319cnVuKCk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIscnVuKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIscnVuKTt2YXIgYz0wLGl2PXNldEludGVydmFsKGZ1bmN0aW9uKCl7cnVuKCk7aWYoKytjPjMwKWNsZWFySW50ZXJ2YWwoaXYpfSw3MDApO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe3NldFRpbWVvdXQocnVuLDMwMCk7c2V0VGltZW91dChydW4sMTIwMCk7fSx0cnVlKTt0cnl7dmFyIG1vPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHdpbmRvdy5fX3NocHQpO3dpbmRvdy5fX3NocHQ9c2V0VGltZW91dChydW4sMjUwKX0pO21vLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHtjaGlsZExpc3Q6dHJ1ZSxzdWJ0cmVlOnRydWV9KX1jYXRjaChlKXt9fSkoKTs8L3NjcmlwdD48c3R5bGUgaWQ9Imt0aC1wdWJwaG90by1jc3MiPmh0bWwgYm9keSAua3QtYWJvdXQgLmthLXB1Yi1oLmt0aC1oYXNwaWN7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MThweDtmbGV4LXdyYXA6d3JhcH1odG1sIGJvZHkgLmt0LWFib3V0IC5rdGgtcHViLXBob3Rve2ZsZXg6MCAwIDk2cHg7d2lkdGg6OTZweDtoZWlnaHQ6OTZweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXIgMTQlO2JhY2tncm91bmQtc2l6ZTpjb3Zlcjtib3JkZXI6MXB4IHNvbGlkICNlNmUyZDg7Ym94LXNoYWRvdzowIDFweCAzcHggcmdiYSgxOCwxOSwyNiwuMDgpfWh0bWwgYm9keSAua3QtYWJvdXQgLmthLXB1Yi1oLmt0aC1oYXNwaWM+Kjpub3QoLmt0aC1wdWItcGhvdG8pe2ZsZXg6MSAxIDIyMHB4O21pbi13aWR0aDowfUBtZWRpYSAobWF4LXdpZHRoOjYwMHB4KXtodG1sIGJvZHkgLmt0LWFib3V0IC5rdGgtcHViLXBob3Rve2ZsZXg6MCAwIDc0cHg7d2lkdGg6NzRweDtoZWlnaHQ6NzRweH19PC9zdHlsZT48c2NyaXB0IGlkPSJrdGgtcHVicGhvdG8tanMiPihmdW5jdGlvbigpe3ZhciBVPSJodHRwczovL2Nkbi5tZWRpYS5ibHVlZG90LnNvL2JsdWVkb3Qua2VudGVydGVjaGh1Yi8yMDI2LzA4LzVxbHNqb18yMDI2MDgyOTIxMzQucG5nIjtmdW5jdGlvbiBydW4oKXt0cnl7aWYoIS9eXC9hYm91dFwvPy8udGVzdChsb2NhdGlvbi5wYXRobmFtZSkpcmV0dXJuO3ZhciBocz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIua3QtYWJvdXQgLmthLXB1Yi1oIik7Zm9yKHZhciBpPTA7aTxocy5sZW5ndGg7aSsrKXt2YXIgaD1oc1tpXTtpZihoLnF1ZXJ5U2VsZWN0b3IoIi5rdGgtcHViLXBob3RvIikpY29udGludWU7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5jbGFzc05hbWU9Imt0aC1wdWItcGhvdG8iO2Quc2V0QXR0cmlidXRlKCJyb2xlIiwiaW1nIik7ZC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCJKdW5nIEhhbiIpO2Quc3R5bGUuYmFja2dyb3VuZEltYWdlPSJ1cmwoIitVKyIpIjtoLmluc2VydEJlZm9yZShkLGguZmlyc3RDaGlsZCk7aC5jbGFzc05hbWUrPSIga3RoLWhhc3BpYyI7fX1jYXRjaChlKXt9fXJ1bigpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHJ1bik7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHJ1bik7dmFyIGM9MCxpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3J1bigpO2lmKCsrYz40MCljbGVhckludGVydmFsKGl2KX0sODAwKTt0cnl7dmFyIG1vPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHdpbmRvdy5fX3BidCk7d2luZG93Ll9fcGJ0PXNldFRpbWVvdXQocnVuLDI1MCl9KTttby5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx7Y2hpbGRMaXN0OnRydWUsc3VidHJlZTp0cnVlfSl9Y2F0Y2goZSl7fX0pKCk7PC9zY3JpcHQ+PHNjcmlwdCBpZD0ia3RoLXBheWxhbmctanMiPihmdW5jdGlvbigpe3ZhciBNQVA9W1si6rKw7KCc66W8IOychO2VtCDroZzqt7jsnbjtlZjquLAiLCJTaWduIGluIHRvIGNvbnRpbnVlIl0sWyLqsrDsoJztlZjquLAiLCJDaGVja291dCJdLFsi6rKw7KCcIOyImOuLqCIsIlBheW1lbnQgbWV0aG9kIl0sWyLrrLTro4wg7ZqM7JuQ6rCAIiwiRnJlZSBtZW1iZXIgcHJpY2UiXSxbIuycoOujjCDtmozsm5DqsIAiLCJNZW1iZXIgcHJpY2UiXSxbIu2ajOybkCDsoITsmqnqsIAiLCJNZW1iZXIgcHJpY2UiXSxbIuydvOuwmCDtmozsm5DqsIAiLCJTdGFuZGFyZCBwcmljZSJdLFsi6rWs66ek7ZWY6riwIiwiUHVyY2hhc2UiXSxbIuyjvOusuCDrgrTsl60iLCJPcmRlciBoaXN0b3J5Il0sWyLqsrDsoJwg7Leo7IaMIiwiQ2FuY2VsIHBheW1lbnQiXSxbIuqysOygnCDsmYTro4wiLCJQYXltZW50IGNvbXBsZXRlIl0sWyLroZzqt7jsnbjtlZjquLAiLCJTaWduIGluIl0sWyLtmozsm5DqsIDsnoUiLCJTaWduIHVwIl0sWyLrqaTrsoTsi60iLCJNZW1iZXJzaGlwIl0sWyLsnbzrsJjqsIAiLCJTdGFuZGFyZCJdLFsi7ZqM7JuQ6rCAIiwiTWVtYmVyIHByaWNlIl0sWyLtmozsm5AiLCJNZW1iZXIiXSxbIuqysOygnCIsIlBheW1lbnQiXSxbIuuLq+q4sCIsIkNsb3NlIl0sWyLst6jshowiLCJDYW5jZWwiXSxbIu2ZleyduCIsIk9LIl0sWyLrrLTro4wiLCJGcmVlIl1dO2Z1bmN0aW9uIGlzS28oKXt2YXIgbD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZ3x8IiI7aWYobC5pbmRleE9mKCJlbiIpPT09MClyZXR1cm4gZmFsc2U7aWYobC5pbmRleE9mKCJrbyIpPT09MClyZXR1cm4gdHJ1ZTt0cnl7cmV0dXJuICh3aW5kb3cuS1RITEFOR1A/d2luZG93LktUSExBTkdQKCk6bG9jYWxTdG9yYWdlLmdldEl0ZW0oImt0aF9sYW5nIikpIT09ImVuIn1jYXRjaChlKXtyZXR1cm4gdHJ1ZX19dmFyIE9LPS9wYXltZW50fG1vZGFsfHBvcHVwfHBvcnRhbHxjaGVja291dHxvcmRlcnxwdXJjaGFzZXxkcmF3ZXJ8ZGlhbG9nL2k7ZnVuY3Rpb24gaW5VSShuKXt2YXIgcD1uLnBhcmVudEVsZW1lbnQsZD0wO3doaWxlKHAmJmQ8OCl7aWYocC5jbGFzc05hbWUmJk9LLnRlc3QoU3RyaW5nKHAuY2xhc3NOYW1lKSkpcmV0dXJuIHRydWU7aWYocC5nZXRBdHRyaWJ1dGUmJnAuZ2V0QXR0cmlidXRlKCJyb2xlIik9PT0iZGlhbG9nIilyZXR1cm4gdHJ1ZTtwPXAucGFyZW50RWxlbWVudDtkKys7fXJldHVybiBmYWxzZTt9ZnVuY3Rpb24gcnVuKCl7dHJ5e2lmKGlzS28oKSlyZXR1cm47dmFyIHc9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkb2N1bWVudC5ib2R5LE5vZGVGaWx0ZXIuU0hPV19URVhULG51bGwsZmFsc2UpLG47d2hpbGUobj13Lm5leHROb2RlKCkpe3ZhciB2PW4ubm9kZVZhbHVlO2lmKCF2KWNvbnRpbnVlO2lmKCEvW1x1QUMwMC1cdUQ3QTNdLy50ZXN0KHYpKWNvbnRpbnVlO2lmKG4ucGFyZW50RWxlbWVudCYmL1NDUklQVHxTVFlMRS8udGVzdChuLnBhcmVudEVsZW1lbnQudGFnTmFtZSkpY29udGludWU7aWYoIWluVUkobikpY29udGludWU7dmFyIG89djtmb3IodmFyIGk9MDtpPE1BUC5sZW5ndGg7aSsrKXtpZih2LmluZGV4T2YoTUFQW2ldWzBdKT49MCl2PXYuc3BsaXQoTUFQW2ldWzBdKS5qb2luKE1BUFtpXVsxXSk7fWlmKC9bXHVBQzAwLVx1RDdBM10vLnRlc3QodikmJi9zaWduID9pbnzroZzqt7jsnbgvaS50ZXN0KHYpKXY9IlNpZ24gaW4gdG8gY29udGludWUiO2lmKC9bXHVBQzAwLVx1RDdBM10vLnRlc3Qodikpdj12LnJlcGxhY2UoL+ulvCDsnITtlbRccyovZywiICIpLnJlcGxhY2UoL1xzezIsfS9nLCIgIikucmVwbGFjZSgvW1x1QUMwMC1cdUQ3QTNdKy9nLCIiKS50cmltKCk7aWYodiE9PW8pbi5ub2RlVmFsdWU9djt9fWNhdGNoKGUpe319cnVuKCk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIscnVuKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIscnVuKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KHJ1biwxNTApO3NldFRpbWVvdXQocnVuLDYwMCk7c2V0VGltZW91dChydW4sMTUwMCk7fSx0cnVlKTtzZXRJbnRlcnZhbChydW4sMTIwMCk7dHJ5e3ZhciBtbz1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2NsZWFyVGltZW91dCh3aW5kb3cuX19weXQpO3dpbmRvdy5fX3B5dD1zZXRUaW1lb3V0KHJ1biwxMjApfSk7bW8ub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQse2NoaWxkTGlzdDp0cnVlLHN1YnRyZWU6dHJ1ZX0pfWNhdGNoKGUpe319KSgpOzwvc2NyaXB0PjxzdHlsZSBpZD0ia3RoLWZvbnQtY3NzIj5odG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IHAsaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCBwLGh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQgbGksaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCBsaSxodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IGJsb2NrcXVvdGUsaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCBibG9ja3F1b3Rle2ZvbnQtZmFtaWx5OiJTb3VyY2UgU2VyaWYgNCIsIk5vdG8gU2VyaWYgS1IiLEdlb3JnaWEsc2VyaWYhaW1wb3J0YW50O2ZvbnQtdmFyaWFudC1udW1lcmljOmxpbmluZy1udW1zIWltcG9ydGFudDtmb250LWZlYXR1cmUtc2V0dGluZ3M6ImxudW0iIDEhaW1wb3J0YW50fWh0bWwgYm9keSAubnl0LXBvc3QtdGl0bGUubnl0LXBvc3QtdGl0bGUubnl0LXBvc3QtdGl0bGUsaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudCBoMixodG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQuYy1jb250ZW50IGgyLGh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQgaDMsaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCBoMyxodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IGg0LGh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudC5jLWNvbnRlbnQgaDR7Zm9udC1mYW1pbHk6IlNvdXJjZSBTZXJpZiA0IiwiTm90byBTZXJpZiBLUiIsR2VvcmdpYSxzZXJpZiFpbXBvcnRhbnQ7Zm9udC12YXJpYW50LW51bWVyaWM6bGluaW5nLW51bXMhaW1wb3J0YW50fWh0bWwgYm9keSAubnl0LXBvc3QtdGl0bGUubnl0LXBvc3QtdGl0bGUubnl0LXBvc3QtdGl0bGV7Zm9udC13ZWlnaHQ6NjAwIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzotLjAxMmVtIWltcG9ydGFudH08L3N0eWxlPjxzdHlsZSBpZD0ia3RoLW1vcmUtY3NzIj4ua3RoLXNlYzIua3RoLWhpZHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5rdGgtbW9yZXttYXgtd2lkdGg6MTIwMHB4O21hcmdpbjo1NnB4IGF1dG8gMDtwYWRkaW5nOjAgMjBweDtib3gtc2l6aW5nOmJvcmRlci1ib3h9Lmt0aC1tb3JlLWh7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTRweDttYXJnaW4tYm90dG9tOjI0cHh9Lmt0aC1tb3JlLWg6YWZ0ZXJ7Y29udGVudDoiIjtmbGV4OjEgMSBhdXRvO2hlaWdodDoxcHg7YmFja2dyb3VuZDojZGNkYWQyfS5rdGgtbW9yZS10e2ZvbnQ6ODAwIDE1cHgvMS4yIEludGVyLCJQcmV0ZW5kYXJkIFZhcmlhYmxlIixzeXN0ZW0tdWksc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMDJlbTtjb2xvcjojMTQxNTFhO3doaXRlLXNwYWNlOm5vd3JhcH0ua3RoLW1vcmUtZ3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LDFmcik7Z2FwOjAgMzRweH0ua3RoLW1vcmUtY29se21pbi13aWR0aDowfS5rdGgtbW9yZS1jYXR7ZGlzcGxheTpibG9jaztmb250OjcwMCAxMS41cHgvMSBJbnRlciwiUHJldGVuZGFyZCBWYXJpYWJsZSIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjA5ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOiM2ZTZlNjg7cGFkZGluZy1ib3R0b206OXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICMxNDE1MWE7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lmt0aC1tb3JlLWNhdDpob3Zlcntjb2xvcjojOGE2ZDJmfS5rdGgtbW9yZS1pe2Rpc3BsYXk6YmxvY2s7cGFkZGluZzoxMXB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U4ZTZkZjt0ZXh0LWRlY29yYXRpb246bm9uZX0ua3RoLW1vcmUtY29sIC5rdGgtbW9yZS1pOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTowfS5rdGgtbW9yZS1ue2Rpc3BsYXk6LXdlYmtpdC1ib3g7LXdlYmtpdC1saW5lLWNsYW1wOjM7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsO292ZXJmbG93OmhpZGRlbjtmb250OjYwMCAxNS41cHgvMS40MiAiU291cmNlIFNlcmlmIDQiLCJOb3RvIFNlcmlmIEtSIixHZW9yZ2lhLHNlcmlmO2NvbG9yOiMxMjEzMWF9Lmt0aC1tb3JlLWk6aG92ZXIgLmt0aC1tb3JlLW57Y29sb3I6IzhhNmQyZn0ua3RoLW1vcmUtZHtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6NXB4O2ZvbnQ6NDAwIDExLjVweC8xIEludGVyLCJQcmV0ZW5kYXJkIFZhcmlhYmxlIixzeXN0ZW0tdWksc2Fucy1zZXJpZjtjb2xvcjojOGE4YTg0fUBtZWRpYShtYXgtd2lkdGg6MTAyM3B4KXsua3RoLW1vcmUtZ3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsMWZyKTtnYXA6MCAyNnB4fS5rdGgtbW9yZS1jb2x7bWFyZ2luLWJvdHRvbToyNHB4fX1AbWVkaWEobWF4LXdpZHRoOjY0MHB4KXsua3RoLW1vcmV7bWFyZ2luLXRvcDo0MHB4fS5rdGgtbW9yZS1ne2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9fTwvc3R5bGU+PHNjcmlwdCBpZD0ia3RoLW1vcmUtanMiPihmdW5jdGlvbigpewp2YXIgRk9MRD1bImNyZWF0b3IiLCJuZXZhZGEtdXMtc3RhdGUtd2F0Y2giLCJzcGVjaWFsIiwiVFYiXTsKdmFyIE9SREVSPVsidGVjaDIiLCJBSSIsInN0cmVhbWluZyIsIm1lZGlhcG9saWN5Il07CmZ1bmN0aW9uIHRnKHMpe3ZhciBhPXMucXVlcnlTZWxlY3RvcigiYS5rdGgtc2VjMi1tIik7aWYoIWEpcmV0dXJuICIiO3JldHVybiAoYS5nZXRBdHRyaWJ1dGUoImhyZWYiKXx8IiIpLnJlcGxhY2UoL1svXSskLywiIikuc3BsaXQoIi8iKS5wb3AoKTt9CmZ1bmN0aW9uIGlza28oKXtyZXR1cm4gL15rby9pLnRlc3QoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgibGFuZyIpfHwiIik7fQpmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzKS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKTt9CmZ1bmN0aW9uIHJ1bigpewp2YXIgbWFpbj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJtYWluIil8fGRvY3VtZW50LmJvZHk7CnZhciBzZWNzPVtdLnNsaWNlLmNhbGwobWFpbi5jaGlsZHJlbikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsYXNzTGlzdCYmZS5jbGFzc0xpc3QuY29udGFpbnMoImt0aC1zZWMyIik7fSk7CmlmKHNlY3MubGVuZ3RoPDYpcmV0dXJuOwp2YXIga2VlcD1bXSxmb2xkPVtdOwpzZWNzLmZvckVhY2goZnVuY3Rpb24ocyl7KEZPTEQuaW5kZXhPZih0ZyhzKSk+PTA/Zm9sZDprZWVwKS5wdXNoKHMpO30pOwppZighZm9sZC5sZW5ndGh8fCFrZWVwLmxlbmd0aClyZXR1cm47CmZvbGQuZm9yRWFjaChmdW5jdGlvbihzKXtzLmNsYXNzTGlzdC5hZGQoImt0aC1oaWQiKTt9KTsKdmFyIGFuY2hvcj1udWxsOwpPUkRFUi5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBzPW51bGw7Zm9yKHZhciBpPTA7aTxrZWVwLmxlbmd0aDtpKyspe2lmKHRnKGtlZXBbaV0pPT09dCl7cz1rZWVwW2ldO2JyZWFrO319CmlmKCFzKXJldHVybjsKaWYoYW5jaG9yJiZhbmNob3IubmV4dEVsZW1lbnRTaWJsaW5nIT09cyl7bWFpbi5pbnNlcnRCZWZvcmUocyxhbmNob3IubmV4dFNpYmxpbmcpO30KYW5jaG9yPXM7fSk7CnZhciBsYXN0PWFuY2hvcnx8a2VlcFtrZWVwLmxlbmd0aC0xXTsKdmFyIHNpZz1bXSxjb2xzPVtdOwpmb2xkLmZvckVhY2goZnVuY3Rpb24ocyl7CnZhciB0dD0oKHMucXVlcnlTZWxlY3RvcigiLmt0aC1zZWMyLXQiKXx8e30pLnRleHRDb250ZW50fHwiIikudHJpbSgpOwp2YXIgbW89cy5xdWVyeVNlbGVjdG9yKCJhLmt0aC1zZWMyLW0iKTsKdmFyIGl0cz1bXS5zbGljZS5jYWxsKHMucXVlcnlTZWxlY3RvckFsbCgiYS5rdGgtc2VjMi1jIikpLnNsaWNlKDAsNSkubWFwKGZ1bmN0aW9uKGEpewp2YXIgbj0oKGEucXVlcnlTZWxlY3RvcigiLmt0aC1zZWMyLW4iKXx8e30pLnRleHRDb250ZW50fHwiIikudHJpbSgpOwp2YXIgZD0oKGEucXVlcnlTZWxlY3RvcigiLmt0aC1zZWMyLWQiKXx8e30pLnRleHRDb250ZW50fHwiIik7CnZhciBwPWQuc3BsaXQoIsK3Iik7ZD0ocFtwLmxlbmd0aC0xXXx8IiIpLnRyaW0oKTsKcmV0dXJuIHtoOmEuZ2V0QXR0cmlidXRlKCJocmVmIil8fCIjIixuOm4sZDpkfTt9KTsKc2lnLnB1c2godHQrInwiK2l0cy5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIGkuaCtpLm47fSkuam9pbigifiIpKTsKY29scy5wdXNoKHt0OnR0LGg6bW8/KG1vLmdldEF0dHJpYnV0ZSgiaHJlZiIpfHwiIyIpOiIjIixpOml0c30pO30pOwp2YXIgSz1pc2tvKCk7CnZhciBzZz0oSz8ia28iOiJlbiIpKyIjIitzaWcuam9pbigiIyMiKTsKdmFyIGJveD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgia3RoLW1vcmUiKTsKaWYoYm94JiZib3guZ2V0QXR0cmlidXRlKCJkYXRhLWt0aHNpZyIpPT09c2cmJmJveC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nPT09bGFzdClyZXR1cm47CmlmKCFib3gpe2JveD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWN0aW9uIik7Ym94LmlkPSJrdGgtbW9yZSI7Ym94LmNsYXNzTmFtZT0ia3RoLW1vcmUiO30KdmFyIGg9JzxkaXYgY2xhc3M9Imt0aC1tb3JlLWgiPjxkaXYgY2xhc3M9Imt0aC1tb3JlLXQiPicrKEs/IuuNlCDsnb3quLAiOiJNb3JlIGZyb20gSy1FbnRlclRlY2ggSHViIikrJzwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Imt0aC1tb3JlLWciPic7CmNvbHMuZm9yRWFjaChmdW5jdGlvbihjKXtoKz0nPGRpdiBjbGFzcz0ia3RoLW1vcmUtY29sIj48YSBjbGFzcz0ia3RoLW1vcmUtY2F0IiBocmVmPSInK2VzYyhjLmgpKyciPicrZXNjKGMudCkrJzwvYT4nOwpjLmkuZm9yRWFjaChmdW5jdGlvbihpKXtoKz0nPGEgY2xhc3M9Imt0aC1tb3JlLWkiIGhyZWY9IicrZXNjKGkuaCkrJyI+PHNwYW4gY2xhc3M9Imt0aC1tb3JlLW4iPicrZXNjKGkubikrJzwvc3Bhbj48c3BhbiBjbGFzcz0ia3RoLW1vcmUtZCI+Jytlc2MoaS5kKSsnPC9zcGFuPjwvYT4nO30pOwpoKz0nPC9kaXY+Jzt9KTsKaCs9JzwvZGl2Pic7CmJveC5pbm5lckhUTUw9aDtib3guc2V0QXR0cmlidXRlKCJkYXRhLWt0aHNpZyIsc2cpOwppZihib3gucHJldmlvdXNFbGVtZW50U2libGluZyE9PWxhc3QpbWFpbi5pbnNlcnRCZWZvcmUoYm94LGxhc3QubmV4dFNpYmxpbmcpOwp9CnZhciB0MD1EYXRlLm5vdygpLG49MCx0bz1udWxsOwpmdW5jdGlvbiBzY2goKXtpZih0bylyZXR1cm47dG89c2V0VGltZW91dChmdW5jdGlvbigpe3RvPW51bGw7dHJ5e3J1bigpfWNhdGNoKGUpe319LDI1MCk7fQp0cnl7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtpZihEYXRlLm5vdygpLXQwPDI0MDAwMClzY2goKTt9KS5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx7Y2hpbGRMaXN0OnRydWUsc3VidHJlZTp0cnVlfSk7fWNhdGNoKGUpe30KdmFyIGl2PXNldEludGVydmFsKGZ1bmN0aW9uKCl7bisrO3RyeXtydW4oKX1jYXRjaChlKXt9aWYobj44MCljbGVhckludGVydmFsKGl2KTt9LDE1MDApOwppZihkb2N1bWVudC5yZWFkeVN0YXRlPT09ImxvYWRpbmciKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixzY2gpO31lbHNle3NjaCgpO30Kd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHNjaCk7CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe3NldFRpbWVvdXQoc2NoLDQ1MCk7fSx0cnVlKTsKfSkoKTs8L3NjcmlwdD4KPHNjcmlwdCBpZD0ia3RoLW5ld3Mtc2VvIj4oZnVuY3Rpb24oKXtmdW5jdGlvbiBnbygpe3RyeXt2YXIgbGRzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NjcmlwdFt0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIl0nKTt2YXIgY2w9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigibGlua1tyZWw9Y2Fub25pY2FsXSIpO3ZhciBjYW5vbj1jbD9jbC5ocmVmOmxvY2F0aW9uLmhyZWY7dmFyIHBhaWQ9ISFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIucG9zdC11cGdyYWRlLW1lc3NhZ2UiKTt2YXIgbGFuZz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZ3x8ImtvIjtmb3IodmFyIGk9MDtpPGxkcy5sZW5ndGg7aSsrKXt2YXIgbzt0cnl7bz1KU09OLnBhcnNlKGxkc1tpXS50ZXh0Q29udGVudCk7fWNhdGNoKGUpe2NvbnRpbnVlO312YXIgYXJyPUFycmF5LmlzQXJyYXkobyk/bzpbb107dmFyIGNoPWZhbHNlO2Zvcih2YXIgaj0wO2o8YXJyLmxlbmd0aDtqKyspe3ZhciBuPWFycltqXTtpZighbnx8IW5bIkB0eXBlIl0pY29udGludWU7aWYoblsiQHR5cGUiXT09PSJBcnRpY2xlIil7blsiQHR5cGUiXT0iTmV3c0FydGljbGUiO2NoPXRydWU7fWlmKG5bIkB0eXBlIl0hPT0iTmV3c0FydGljbGUiKWNvbnRpbnVlO2lmKCFuLm1haW5FbnRpdHlPZlBhZ2V8fG4ubWFpbkVudGl0eU9mUGFnZVsiQHR5cGUiXSE9PSJXZWJQYWdlIil7bi5tYWluRW50aXR5T2ZQYWdlPXsiQHR5cGUiOiJXZWJQYWdlIiwiQGlkIjpjYW5vbn07Y2g9dHJ1ZTt9aWYoIW4uaW5MYW5ndWFnZSl7bi5pbkxhbmd1YWdlPWxhbmc7Y2g9dHJ1ZTt9aWYocGFpZCYmbi5pc0FjY2Vzc2libGVGb3JGcmVlIT09ZmFsc2Upe24uaXNBY2Nlc3NpYmxlRm9yRnJlZT1mYWxzZTtuLmhhc1BhcnQ9W3siQHR5cGUiOiJXZWJQYWdlRWxlbWVudCIsImlzQWNjZXNzaWJsZUZvckZyZWUiOmZhbHNlLCJjc3NTZWxlY3RvciI6Ii5wb3N0LXVwZ3JhZGUtbWVzc2FnZSJ9XTtjaD10cnVlO31pZighcGFpZCYmbi5pc0FjY2Vzc2libGVGb3JGcmVlPT09dW5kZWZpbmVkKXtuLmlzQWNjZXNzaWJsZUZvckZyZWU9dHJ1ZTtjaD10cnVlO319aWYoY2gpe2xkc1tpXS50ZXh0Q29udGVudD1KU09OLnN0cmluZ2lmeShBcnJheS5pc0FycmF5KG8pP2FycjphcnJbMF0pO319dmFyIGJlc3Q9bnVsbCxiZXN0U2NvcmU9LTEsbm9kZXM9W107Zm9yKHZhciBrPTA7azxsZHMubGVuZ3RoO2srKyl7dmFyIG9vO3RyeXtvbz1KU09OLnBhcnNlKGxkc1trXS50ZXh0Q29udGVudCk7fWNhdGNoKGUpe2NvbnRpbnVlO312YXIgYWE9QXJyYXkuaXNBcnJheShvbyk/b286W29vXTtmb3IodmFyIHE9MDtxPGFhLmxlbmd0aDtxKyspe3ZhciBubj1hYVtxXTtpZihubiYmbm5bIkB0eXBlIl09PT0iTmV3c0FydGljbGUiKXt2YXIgc2M9T2JqZWN0LmtleXMobm4pLmxlbmd0aDtub2Rlcy5wdXNoKHtlbDpsZHNba10sbm9kZTpubixyb290Om9vLGFycjphYSxzYzpzY30pO2lmKHNjPmJlc3RTY29yZSl7YmVzdFNjb3JlPXNjO2Jlc3Q9bm47fX19fWlmKG5vZGVzLmxlbmd0aD4xJiZiZXN0KXtmb3IodmFyIHo9MDt6PG5vZGVzLmxlbmd0aDt6Kyspe3ZhciBpdD1ub2Rlc1t6XTtpZihpdC5ub2RlPT09YmVzdCljb250aW51ZTt2YXIgaDE9KGl0Lm5vZGUuaGVhZGxpbmV8fCIiKSsiIixoMj0oYmVzdC5oZWFkbGluZXx8IiIpKyIiO2lmKGgxJiZoMiYmaDEhPT1oMiljb250aW51ZTt2YXIgcmVzdD1pdC5hcnIuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4IT09aXQubm9kZTt9KTtpZihyZXN0Lmxlbmd0aD09PTApe2l0LmVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaXQuZWwpO31lbHNle2l0LmVsLnRleHRDb250ZW50PUpTT04uc3RyaW5naWZ5KHJlc3QubGVuZ3RoPT09MT9yZXN0WzBdOnJlc3QpO319fWlmKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhW3Byb3BlcnR5PSJvZzpsb2NhbGUiXScpKXt2YXIgbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJtZXRhIik7bS5zZXRBdHRyaWJ1dGUoInByb3BlcnR5Iiwib2c6bG9jYWxlIik7bS5jb250ZW50PShsYW5nPT09ImVuIik/ImVuX1VTIjoia29fS1IiO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobSk7fX1jYXRjaChlKXt9fWZ1bmN0aW9uIGJvb3QoKXtzZXRUaW1lb3V0KGdvLDE0MDApO31pZihkb2N1bWVudC5ib2R5KXtib290KCk7fWVsc2V7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsYm9vdCk7fX0pKCk7PC9zY3JpcHQ+PHN0eWxlIGlkPSJrdGgtcGF5LWNzcyI+LnBvc3QtdXBncmFkZS1tZXNzYWdlLC5wb3N0LXVwZ3JhZGUtbWVzc2FnZSAqe2xldHRlci1zcGFjaW5nOm5vcm1hbCFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnBvc3QtdXBncmFkZS1tZXNzYWdlLWNvbnRlbnR7bWF4LXdpZHRoOjY4MHB4O21hcmdpbjowIGF1dG87cGFkZGluZzozMnB4IDAgNnB4O2JvcmRlci10b3A6MXB4IHNvbGlkICMxMjEzMWE7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH1ib2R5IC5wb3N0LXVwZ3JhZGUtbWVzc2FnZSBoNXtmb250LWZhbWlseTpHZW9yZ2lhLCJTb3VyY2UgU2VyaWYgNCIsIk5vdG8gU2VyaWYgS1IiLHNlcmlmIWltcG9ydGFudDtmb250LXNpemU6MjdweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4zIWltcG9ydGFudDtmb250LXdlaWdodDo3MDAhaW1wb3J0YW50O2NvbG9yOiMxMjEzMWEhaW1wb3J0YW50O21hcmdpbjowIDAgMTBweCFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudDt0ZXh0LXRyYW5zZm9ybTpub25lIWltcG9ydGFudH1ib2R5IC5wb3N0LXVwZ3JhZGUtbWVzc2FnZSA+LnBvc3QtdXBncmFkZS1tZXNzYWdlLWNvbnRlbnQ+aDN7Zm9udC1mYW1pbHk6SW50ZXIsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sIk5vdG8gU2FucyBLUiIsc2Fucy1zZXJpZiFpbXBvcnRhbnQ7Zm9udC1zaXplOjEzLjVweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NDAwIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjYhaW1wb3J0YW50O2NvbG9yOiM2ZTZlNjghaW1wb3J0YW50O21hcmdpbjowIDAgMThweCFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZSFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnByaWNlLXdyYXB7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UwZGVkNjtnYXA6MjJweH1ib2R5IC5wb3N0LXVwZ3JhZGUtbWVzc2FnZSAucHJpY2V7ZGlzcGxheTpmbGV4IWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudDtnYXA6OHB4O3BhZGRpbmc6MThweCAwIWltcG9ydGFudDtib3JkZXItYm90dG9tOjAhaW1wb3J0YW50O2JhY2tncm91bmQ6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50O3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnByaWNlLWluZm97ZmxleDoxIDEgYXV0bzt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnByaWNlLWluZm8gKnt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fWJvZHkgLnBvc3QtdXBncmFkZS1tZXNzYWdlIC5wcmljZS1pbmZvPmg0e2ZvbnQtZmFtaWx5OkludGVyLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLCJOb3RvIFNhbnMgS1IiLHNhbnMtc2VyaWYhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMy41cHghaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjYwMCFpbXBvcnRhbnQ7Y29sb3I6IzEyMTMxYSFpbXBvcnRhbnQ7bWFyZ2luOjAgMCA2cHghaW1wb3J0YW50O3RleHQtdHJhbnNmb3JtOm5vbmUhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDtib3JkZXItYm90dG9tOjAhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcCFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnByaWNlLWluZm8+aDQ6OmFmdGVye2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnByaWNlLWluZm8+aDQ6OmJlZm9yZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fWJvZHkgLnBvc3QtdXBncmFkZS1tZXNzYWdlIC5wcmljZS1pbmZvIGgze2ZvbnQtZmFtaWx5Okdlb3JnaWEsIlNvdXJjZSBTZXJpZiA0IiwiTm90byBTZXJpZiBLUiIsc2VyaWYhaW1wb3J0YW50O2ZvbnQtc2l6ZToyMnB4IWltcG9ydGFudDtmb250LXdlaWdodDo3MDAhaW1wb3J0YW50O2NvbG9yOiMxMjEzMWEhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjIhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcCFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnByaWNlLWluZm8gaDQuc3RyaWtle2ZvbnQtZmFtaWx5Okdlb3JnaWEsIlNvdXJjZSBTZXJpZiA0IiwiTm90byBTZXJpZiBLUiIsc2VyaWYhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMy41cHghaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjQwMCFpbXBvcnRhbnQ7Y29sb3I6IzlhOTg4ZiFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaCFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7bWFyZ2luOjAgMCAycHghaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuMiFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbTowIWltcG9ydGFudDt3aGl0ZS1zcGFjZTpub3dyYXAhaW1wb3J0YW50fWJvZHkgLnBvc3QtdXBncmFkZS1tZXNzYWdlIC5rdGgtdXNke2ZvbnQtc2l6ZTouNmVtIWltcG9ydGFudDtmb250LXdlaWdodDo0MDAhaW1wb3J0YW50O2NvbG9yOiM3Nzc1NmUhaW1wb3J0YW50O21hcmdpbi1sZWZ0OjNweDt3aGl0ZS1zcGFjZTpub3dyYXAhaW1wb3J0YW50fWJvZHkgLnBvc3QtdXBncmFkZS1tZXNzYWdlIC5leHRyYXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtmb250LWZhbWlseTpJbnRlcixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSwiTm90byBTYW5zIEtSIixzYW5zLXNlcmlmIWltcG9ydGFudDtmb250LXNpemU6MTJweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NDAwIWltcG9ydGFudDtjb2xvcjojNmU2ZTY4IWltcG9ydGFudDttYXJnaW4tdG9wOjZweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS41IWltcG9ydGFudH1ib2R5IC5wb3N0LXVwZ3JhZGUtbWVzc2FnZSBhLmJsdWVkb3QtYnV0dG9uLnN1YnNjcmliZXtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoxMDAlIWltcG9ydGFudDttYXgtd2lkdGg6MjEwcHg7aGVpZ2h0OmF1dG8haW1wb3J0YW50O21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnQ7cGFkZGluZzoxMHB4IDE2cHghaW1wb3J0YW50O2JhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lIWltcG9ydGFudDtjb2xvcjojMTIxMzFhIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkICMxMjEzMWEhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MnB4IWltcG9ydGFudDtmb250LWZhbWlseTpJbnRlcixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSwiTm90byBTYW5zIEtSIixzYW5zLXNlcmlmIWltcG9ydGFudDtmb250LXNpemU6MTNweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NjAwIWltcG9ydGFudDtsaW5lLWhlaWdodDoxIWltcG9ydGFudDt3aGl0ZS1zcGFjZTpub3dyYXAhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50O3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzIGVhc2UsY29sb3IgLjE1cyBlYXNlfWJvZHkgLnBvc3QtdXBncmFkZS1tZXNzYWdlIGEuYmx1ZWRvdC1idXR0b24uc3Vic2NyaWJlOmhvdmVye2JhY2tncm91bmQ6IzEyMTMxYSFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnByaWNlLmt0aC1wcmkgYS5ibHVlZG90LWJ1dHRvbi5zdWJzY3JpYmV7YmFja2dyb3VuZDojMTIxMzFhIWltcG9ydGFudDtjb2xvcjojZmZmIWltcG9ydGFudDtib3JkZXItY29sb3I6IzEyMTMxYSFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnByaWNlLmt0aC1wcmkgYS5ibHVlZG90LWJ1dHRvbi5zdWJzY3JpYmU6aG92ZXJ7YmFja2dyb3VuZDojM2EzYjQyIWltcG9ydGFudDtib3JkZXItY29sb3I6IzNhM2I0MiFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnByaWNlLWZvb3RlcntwYWRkaW5nLXRvcDoxNnB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNlMGRlZDY7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH1ib2R5IC5wb3N0LXVwZ3JhZGUtbWVzc2FnZSAucHJpY2UtZm9vdGVyIHB7Zm9udC1mYW1pbHk6SW50ZXIsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sIk5vdG8gU2FucyBLUiIsc2Fucy1zZXJpZiFpbXBvcnRhbnQ7Zm9udC1zaXplOjEyLjVweCFpbXBvcnRhbnQ7Y29sb3I6IzZlNmU2OCFpbXBvcnRhbnQ7bWFyZ2luOjAgMCA4cHghaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuNTUhaW1wb3J0YW50O3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLmxvZ2luLXdyYXB7Zm9udC1mYW1pbHk6SW50ZXIsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sIk5vdG8gU2FucyBLUiIsc2Fucy1zZXJpZiFpbXBvcnRhbnQ7Zm9udC1zaXplOjEzLjVweCFpbXBvcnRhbnQ7Y29sb3I6IzEyMTMxYSFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH1ib2R5IC5wb3N0LXVwZ3JhZGUtbWVzc2FnZSAubG9naW4td3JhcCBhe2NvbG9yOiMxMjEzMWEhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUhaW1wb3J0YW50O3RleHQtdW5kZXJsaW5lLW9mZnNldDoycHh9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnBvd2VyZWQtYmx1ZWRvdHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYShtYXgtd2lkdGg6NzAwcHgpe2JvZHkgLnBvc3QtdXBncmFkZS1tZXNzYWdlIC5wcmljZS13cmFwe2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnQ7Z2FwOjAhaW1wb3J0YW50fWJvZHkgLnBvc3QtdXBncmFkZS1tZXNzYWdlIC5wcmljZXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTBkZWQ2IWltcG9ydGFudH1ib2R5IC5wb3N0LXVwZ3JhZGUtbWVzc2FnZSBhLmJsdWVkb3QtYnV0dG9uLnN1YnNjcmliZXttYXgtd2lkdGg6bm9uZSFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgaDV7Zm9udC1zaXplOjIzcHghaW1wb3J0YW50fX1ib2R5IC5wb3N0LXVwZ3JhZGUtbWVzc2FnZSAucHJpY2Utd3JhcHtnYXA6MThweCFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLnByaWNlLXdyYXAgPiAucHJpY2V7ZmxleDoxIDEgMCFpbXBvcnRhbnQ7bWluLXdpZHRoOjAhaW1wb3J0YW50fWJvZHkgLnBvc3QtdXBncmFkZS1tZXNzYWdlIGEuYmx1ZWRvdC1idXR0b24uc3Vic2NyaWJle21heC13aWR0aDpub25lIWltcG9ydGFudDtwYWRkaW5nOjEwcHggOHB4IWltcG9ydGFudDtmb250LXNpemU6MTIuNXB4IWltcG9ydGFudH1ib2R5IC5wb3N0LXVwZ3JhZGUtbWVzc2FnZSAucHJpY2UtaW5mbyBoM3tmb250LXNpemU6MjFweCFpbXBvcnRhbnR9Ym9keSAucG9zdC11cGdyYWRlLW1lc3NhZ2UgLmt0aC11c2R7Zm9udC1zaXplOi41OGVtIWltcG9ydGFudH1AbWVkaWEobWF4LXdpZHRoOjcwMHB4KXtib2R5IC5wb3N0LXVwZ3JhZGUtbWVzc2FnZSAucHJpY2Utd3JhcCA+IC5wcmljZXtmbGV4OjEgMSBhdXRvIWltcG9ydGFudH19PC9zdHlsZT48c2NyaXB0IGlkPSJrdGgtcGF5LWpzIj4oZnVuY3Rpb24oKXt2YXIgQlM9U3RyaW5nLmZyb21DaGFyQ29kZSg5Mik7dmFyIEQ9QlMrQlM7dmFyIFJFPW5ldyBSZWdFeHAoRCsiezEsMn11KFswLTlhLWZBLUZdezR9KSIsImciKTt2YXIgUkUyPW5ldyBSZWdFeHAoRCsiezEsMn0oW15BLVphLXowLTldKSIsImciKTtmdW5jdGlvbiBmaXgodCl7dD10LnJlcGxhY2UoUkUsZnVuY3Rpb24obSxoKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChoLDE2KSk7fSk7cmV0dXJuIHQucmVwbGFjZShSRTIsIiQxIik7fWZ1bmN0aW9uIGNsZWFuKHMpe3JldHVybiBzLnJlcGxhY2UoIuuppOuyhOyLrSIsIiIpLnJlcGxhY2UoIm1lbWJlcnNoaXAiLCIiKS5yZXBsYWNlKCJNZW1iZXJzaGlwIiwiIikudHJpbSgpO31mdW5jdGlvbiBydW4oKXt2YXIgYm94PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5wb3N0LXVwZ3JhZGUtbWVzc2FnZSIpO2lmKCFib3gpcmV0dXJuO3ZhciB3PWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoYm94LE5vZGVGaWx0ZXIuU0hPV19URVhULG51bGwsZmFsc2UpLG47d2hpbGUoKG49dy5uZXh0Tm9kZSgpKSl7dmFyIHY9bi5ub2RlVmFsdWU7aWYodiYmdi5pbmRleE9mKEJTKT4tMSl7dmFyIGY9Zml4KHYpO2lmKGYhPT12KW4ubm9kZVZhbHVlPWY7fX12YXIgcHM9Ym94LnF1ZXJ5U2VsZWN0b3JBbGwoIi5wcmljZS13cmFwID4gLnByaWNlIik7dmFyIGk7Zm9yKGk9MDtpPHBzLmxlbmd0aDtpKyspe2lmKGk9PT0wKXBzW2ldLmNsYXNzTGlzdC5hZGQoImt0aC1wcmkiKTtlbHNlIHBzW2ldLmNsYXNzTGlzdC5yZW1vdmUoImt0aC1wcmkiKTt9dmFyIHN1bT1ib3gucXVlcnlTZWxlY3RvcigiLnBvc3QtdXBncmFkZS1tZXNzYWdlLWNvbnRlbnQgPiBoMyIpO2lmKHN1bSYmcHMubGVuZ3RoPjEpe3ZhciBwYXJ0cz1bXTtmb3IoaT0wO2k8cHMubGVuZ3RoO2krKyl7dmFyIG5tPXBzW2ldLnF1ZXJ5U2VsZWN0b3IoIi5wcmljZS1pbmZvID4gaDQiKTt2YXIgc3Q9cHNbaV0ucXVlcnlTZWxlY3RvcigiLnByaWNlLWluZm8gaDQuc3RyaWtlIik7dmFyIHByPXBzW2ldLnF1ZXJ5U2VsZWN0b3IoIi5wcmljZS1pbmZvIGgzIik7dmFyIG5tdj1ubT9jbGVhbihubS50ZXh0Q29udGVudCk6IiI7dmFyIHB2PShzdHx8cHIpPyhzdHx8cHIpLnRleHRDb250ZW50LnRyaW0oKToiIjtpZihubXYmJnB2KXBhcnRzLnB1c2gobm12KyIgIitwdik7fWlmKHBhcnRzLmxlbmd0aD09PXBzLmxlbmd0aCl7dmFyIGxpbmU9cGFydHMuam9pbigiIMK3ICIpO2lmKHN1bS50ZXh0Q29udGVudC50cmltKCkhPT1saW5lKXN1bS50ZXh0Q29udGVudD1saW5lO319fWZ1bmN0aW9uIGdvKCl7aWYoIWRvY3VtZW50LmJvZHkpe3JldHVybiBzZXRUaW1lb3V0KGdvLDYwKTt9cnVuKCk7dmFyIHQ9bnVsbDtuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0KTt0PXNldFRpbWVvdXQocnVuLDIwMCk7fSkub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHtjaGlsZExpc3Q6dHJ1ZSxzdWJ0cmVlOnRydWUsY2hhcmFjdGVyRGF0YTp0cnVlfSk7dmFyIGs9MCxpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3J1bigpO2lmKCsraz4yNSljbGVhckludGVydmFsKGl2KTt9LDYwMCk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7c2V0VGltZW91dChydW4sMzAwKTtzZXRUaW1lb3V0KHJ1biwxNTAwKTt9KTt9Z28oKTt9KSgpOzwvc2NyaXB0PgoKPHNjcmlwdCBpZD0ia3RoLWZpeHBheS1qcyI+KGZ1bmN0aW9uKCl7CmZ1bmN0aW9uIExHKCl7cmV0dXJuICcvc2lnbmluLz9yZWRpcmVjdD0nK2VuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5wYXRobmFtZSk7fQpmdW5jdGlvbiBnbygpewogaWYod2luZG93Ll9fa3RoRml4UGF5KXJldHVybjsgd2luZG93Ll9fa3RoRml4UGF5PTE7CiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZSl7CiAgdmFyIHQ9ZS50YXJnZXQ7IGlmKCF0fHwhdC5jbG9zZXN0KXJldHVybjsKICB2YXIgYT10LmNsb3Nlc3QoJy5wb3N0LXVwZ3JhZGUtbWVzc2FnZSBhLnN1YnNjcmliZSwucHJpY2UgYS5zdWJzY3JpYmUsYS5zdWJzY3JpYmVbZGF0YS1wYXl3YWxsLXBsYW5dJyk7CiAgaWYoIWEpcmV0dXJuOwogIGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKICB2YXIgZHA9YS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcG9ydGFsJyk7CiAgdmFyIGg7CiAgaWYoZHApe2g9JyMvcG9ydGFsLycrZHA7fQogIGVsc2V7aD0nIy9wb3J0YWwvc2lnbnVwLycrKGEuZ2V0QXR0cmlidXRlKCdkYXRhLXBheXdhbGwtcGxhbicpfHwnbW9udGhseScpO30KICBpZihsb2NhdGlvbi5oYXNoPT09aCl7bG9jYXRpb24uaGFzaD0nJzt9CiAgc2V0VGltZW91dChmdW5jdGlvbigpe2xvY2F0aW9uLmhhc2g9aDt9LDEwKTsKIH0sdHJ1ZSk7CiBmdW5jdGlvbiBmeCgpewogIHZhciBlbHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxvZ2luLXdyYXAnKTsKICBmb3IodmFyIGk9MDtpPGVscy5sZW5ndGg7aSsrKXt2YXIgZWw9ZWxzW2ldOwogICBpZihlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEta3RobGcnKSljb250aW51ZTsKICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLWt0aGxnJywnMScpOwogICBlbC5zdHlsZS5jdXJzb3I9J3BvaW50ZXInOyBlbC5zdHlsZS50ZXh0RGVjb3JhdGlvbj0ndW5kZXJsaW5lJzsgZWwuc3R5bGUudGV4dFVuZGVybGluZU9mZnNldD0nM3B4JzsKICAgZWwuc2V0QXR0cmlidXRlKCdyb2xlJywnbGluaycpOyBlbC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywnMCcpOwogICBlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtsb2NhdGlvbi5ocmVmPUxHKCk7fSk7CiAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLGZ1bmN0aW9uKGV2KXtpZihldi5rZXk9PT0nRW50ZXInKXtsb2NhdGlvbi5ocmVmPUxHKCk7fX0pOwogIH0KIH0KIGZ4KCk7IHZhciBuPTA7IHZhciBpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2Z4KCk7IGlmKCsrbj4yNSljbGVhckludGVydmFsKGl2KTt9LDYwMCk7CiBpZihkb2N1bWVudC5ib2R5KXt0cnl7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZngpLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7Y2hpbGRMaXN0OnRydWUsc3VidHJlZTp0cnVlfSk7fWNhdGNoKGUpe319Cn0KaWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSdsb2FkaW5nJyl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZ28pO31lbHNle2dvKCk7fQp9KSgpOzwvc2NyaXB0PgoKCgoKCgoKCgoKCgoKPHN0eWxlIGlkPSJrdGgtY2xvY2stY3NzIj4ua3RoLWNsb2Nrcy1iYXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U4ZTZkZjt3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5rdGgtY2xvY2tze2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6MjBweDttYXgtd2lkdGg6MTIwMHB4O21hcmdpbjowIGF1dG87cGFkZGluZzo2cHggMTJweDtmbGV4LXdyYXA6d3JhcH0ua3RoLWNsa3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo3cHg7bGluZS1oZWlnaHQ6MX0ua3RoLWNsay1me3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7ZmxleDpub25lO2Rpc3BsYXk6YmxvY2t9Lmt0aC1jbGstdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7Z2FwOjZweH0ua3RoLWNsay1se2ZvbnQ6NjAwIDlweC8xIC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMDllbTtjb2xvcjojNmU2ZTY4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt3aGl0ZS1zcGFjZTpub3dyYXB9Lmt0aC1jbGstbntmb250OjYwMCAxM3B4LzEgLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOiMxMjEzMWE7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zO3doaXRlLXNwYWNlOm5vd3JhcH0ua3RoLWNsay1uIGl7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1zaXplOjkuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzouMDZlbTtjb2xvcjojNmU2ZTY4O21hcmdpbi1sZWZ0OjNweH0ua3RoLWNsay1ye2ZpbGw6bm9uZTtzdHJva2U6I2I2YjRhZDtzdHJva2Utd2lkdGg6MS4yO3N0cm9rZS1kYXNoYXJyYXk6MSAyLjY7c3Ryb2tlLWxpbmVjYXA6cm91bmR9Lmt0aC1jbGstaHtzdHJva2U6IzEyMTMxYTtzdHJva2Utd2lkdGg6MS45O3N0cm9rZS1saW5lY2FwOnJvdW5kfS5rdGgtY2xrLW17c3Ryb2tlOiMxMjEzMWE7c3Ryb2tlLXdpZHRoOjEuMztzdHJva2UtbGluZWNhcDpyb3VuZH0ua3RoLWNsay1ze3N0cm9rZTojYTgzNDJhO3N0cm9rZS13aWR0aDouODtzdHJva2UtbGluZWNhcDpyb3VuZH0ua3RoLWNsay1je2ZpbGw6IzEyMTMxYX1AbWVkaWEgKG1heC13aWR0aDo4NjBweCl7Lmt0aC1jbG9ja3N7Z2FwOjlweDtwYWRkaW5nOjVweCA4cHh9Lmt0aC1jbGstZntkaXNwbGF5Om5vbmV9Lmt0aC1jbGstbHtmb250LXNpemU6OHB4fS5rdGgtY2xrLW57Zm9udC1zaXplOjExcHh9Lmt0aC1jbGstbiBpe2ZvbnQtc2l6ZTo4cHh9Lmt0aC1jbGstdHtnYXA6NHB4fX08L3N0eWxlPgoKPHNjcmlwdCBpZD0ia3RoLWNsb2NrLWpzIj4oZnVuY3Rpb24oKXsKdmFyIFo9W1snTkVXIFlPUksnLCdBbWVyaWNhL05ld19Zb3JrJywnZW4tVVMnLG51bGwsJ05ZJ10sCiBbJ0xPUyBBTkdFTEVTXHUwMGI3UkVOTycsJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnLCdlbi1VUycsbnVsbCwnTEFcdTAwYjdSRU5PJ10sCiBbJ1NFT1VMJywnQXNpYS9TZW91bCcsJ2VuLVVTJywnS1NUJywnU0VPVUwnXSwKIFsnTE9ORE9OJywnRXVyb3BlL0xvbmRvbicsJ2VuLUdCJyxudWxsLCdMT05ET04nXSwKIFsnU0lOR0FQT1JFJywnQXNpYS9TaW5nYXBvcmUnLCdlbi1VUycsJ1NHVCcsJ1NHJ11dOwp2YXIgTlM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKZnVuY3Rpb24gZWwobixhKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsbik7Zm9yKHZhciBrIGluIGEpZS5zZXRBdHRyaWJ1dGUoayxhW2tdKTtyZXR1cm4gZTt9CmZ1bmN0aW9uIGZhY2UoKXt2YXIgcz1lbCgnc3ZnJyx7dmlld0JveDonMCAwIDQwIDQwJywnY2xhc3MnOidrdGgtY2xrLWYnfSk7CiBzLmFwcGVuZENoaWxkKGVsKCdjaXJjbGUnLHtjeDoyMCxjeToyMCxyOjE4LjQsJ2NsYXNzJzona3RoLWNsay1yJ30pKTsKIHZhciBoPWVsKCdsaW5lJyx7eDE6MjAseTE6MjAseDI6MjAseTI6MTEuNSwnY2xhc3MnOidrdGgtY2xrLWgnfSk7CiB2YXIgbT1lbCgnbGluZScse3gxOjIwLHkxOjIwLHgyOjIwLHkyOjcuNSwnY2xhc3MnOidrdGgtY2xrLW0nfSk7CiB2YXIgYz1lbCgnbGluZScse3gxOjIwLHkxOjIyLjUseDI6MjAseTI6OC41LCdjbGFzcyc6J2t0aC1jbGstcyd9KTsKIHMuYXBwZW5kQ2hpbGQoaCk7cy5hcHBlbmRDaGlsZChtKTtzLmFwcGVuZENoaWxkKGMpOwogcy5hcHBlbmRDaGlsZChlbCgnY2lyY2xlJyx7Y3g6MjAsY3k6MjAscjoxLjE1LCdjbGFzcyc6J2t0aC1jbGstYyd9KSk7CiByZXR1cm4ge3M6cyxoOmgsbTptLGM6Y307fQpmdW5jdGlvbiBhYmJyKHR6LGxvYyxmeCl7aWYoZngpcmV0dXJuIGZ4O3RyeXt2YXIgcHM9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jfHwnZW4tVVMnLHt0aW1lWm9uZTp0eix0aW1lWm9uZU5hbWU6J3Nob3J0J30pLmZvcm1hdFRvUGFydHMobmV3IERhdGUoKSk7Zm9yKHZhciBpPTA7aTxwcy5sZW5ndGg7aSsrKXtpZihwc1tpXS50eXBlPT09J3RpbWVab25lTmFtZScpcmV0dXJuIHBzW2ldLnZhbHVlO319Y2F0Y2goZSl7fXJldHVybiAnJzt9CmZ1bmN0aW9uIGxhYmVsKHope3ZhciBubT0od2luZG93LmlubmVyV2lkdGg8PTYyMD96WzRdOnpbMF0pO3ZhciBhPWFiYnIoelsxXSx6WzJdLHpbM10pO3JldHVybiBubSsoYT8nICgnK2ErJyknOicnKTt9CmZ1bmN0aW9uIG5vdyh0eil7dmFyIG89e307bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJyx7dGltZVpvbmU6dHosaG91cjonbnVtZXJpYycsbWludXRlOicyLWRpZ2l0JyxzZWNvbmQ6JzItZGlnaXQnLGhvdXIxMjp0cnVlfSkuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgpKS5mb3JFYWNoKGZ1bmN0aW9uKHApe29bcC50eXBlXT1wLnZhbHVlO30pOwogcmV0dXJuIHtoOigrby5ob3VyKSUxMixtOitvLm1pbnV0ZSxzOitvLnNlY29uZCx0eHQ6by5ob3VyKyc6JytvLm1pbnV0ZSxhcDooby5kYXlQZXJpb2R8fCcnKS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoL1wuL2csJycpfTt9CmZ1bmN0aW9uIGJ1aWxkKCl7CiB2YXIgaGRyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWRlci5zaXRlLWhlYWRlcicpOwogaWYoIWhkcilyZXR1cm4gZmFsc2U7CiBpZihoZHIucXVlcnlTZWxlY3RvcignLmt0aC1jbG9ja3MtYmFyJykpcmV0dXJuIHRydWU7CiB2YXIgYmFyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO2Jhci5jbGFzc05hbWU9J2t0aC1jbG9ja3MtYmFyJzsKIHZhciB3cmFwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3dyYXAuY2xhc3NOYW1lPSdrdGgtY2xvY2tzJztiYXIuYXBwZW5kQ2hpbGQod3JhcCk7CiB2YXIgaXRlbXM9W107CiBaLmZvckVhY2goZnVuY3Rpb24oeil7CiAgdmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7ZC5jbGFzc05hbWU9J2t0aC1jbGsnOwogIHZhciBmPWZhY2UoKTsKICB2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTt0LmNsYXNzTmFtZT0na3RoLWNsay10JzsKICB2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7bC5jbGFzc05hbWU9J2t0aC1jbGstbCc7bC50ZXh0Q29udGVudD1sYWJlbCh6KTsKICB2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7bi5jbGFzc05hbWU9J2t0aC1jbGstbic7CiAgdC5hcHBlbmRDaGlsZChsKTt0LmFwcGVuZENoaWxkKG4pO2QuYXBwZW5kQ2hpbGQoZi5zKTtkLmFwcGVuZENoaWxkKHQpO3dyYXAuYXBwZW5kQ2hpbGQoZCk7CiAgaXRlbXMucHVzaCh7dHo6elsxXSxmOmYsbjpuLGw6bCx6Onp9KTsKIH0pOwogaGRyLmFwcGVuZENoaWxkKGJhcik7CiBmdW5jdGlvbiB0aWNrKCl7aXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdCl7dmFyIHQ9bm93KGl0LnR6KTsKICBpdC5mLmguc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCdyb3RhdGUoJysoKHQuaCt0Lm0vNjApKjMwKSsnIDIwIDIwKScpOwogIGl0LmYubS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsJ3JvdGF0ZSgnKygodC5tK3Qucy82MCkqNikrJyAyMCAyMCknKTsKICBpdC5mLmMuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCdyb3RhdGUoJysodC5zKjYpKycgMjAgMjApJyk7CiAgaXQubi50ZXh0Q29udGVudD10LnR4dDt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpJyk7aS50ZXh0Q29udGVudD10LmFwO2l0Lm4uYXBwZW5kQ2hpbGQoaSk7fSk7fQogZnVuY3Rpb24gcmVsYWJlbCgpe2l0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXQpe2l0LmwudGV4dENvbnRlbnQ9bGFiZWwoaXQueik7fSk7fQogdGljaygpOyBzZXRJbnRlcnZhbCh0aWNrLDEwMDApOyBzZXRJbnRlcnZhbChyZWxhYmVsLDYwMDAwMCk7CiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJyxyZWxhYmVsKTsKIHJldHVybiB0cnVlO30KZnVuY3Rpb24gZ28oKXtpZihidWlsZCgpKXJldHVybjt2YXIgbj0wO3ZhciBpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKGJ1aWxkKCl8fCsrbj40MCljbGVhckludGVydmFsKGl2KTt9LDQwMCk7fQppZihkb2N1bWVudC5yZWFkeVN0YXRlPT09J2xvYWRpbmcnKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxnbyk7fWVsc2V7Z28oKTt9Cn0pKCk7PC9zY3JpcHQ+Cgo8c3R5bGUgaWQ9Imt0aC1zcmZpeC1jc3MiPmJvZHkgI3NlYXJjaC1yZXN1bHRzLGJvZHkgI21vYi1zZWFyY2gtcmVze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Ym9keSAjc2VhcmNoLXJlc3VsdHMua3RoLWhhcyxib2R5ICNtb2Itc2VhcmNoLXJlcy5rdGgtaGFze2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fWJvZHkgI3NlYXJjaC1yZXN1bHRze2JveC1zaGFkb3c6MCA4cHggMjRweCByZ2JhKDAsMCwwLC4xMCkhaW1wb3J0YW50O2JvcmRlcjoxcHggc29saWQgI2UyZTBkOSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czo0cHghaW1wb3J0YW50fTwvc3R5bGU+CjxzY3JpcHQgaWQ9Imt0aC1zcmZpeC1qcyI+KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gc3luYygpe1snc2VhcmNoLXJlc3VsdHMnLCdtb2Itc2VhcmNoLXJlcyddLmZvckVhY2goZnVuY3Rpb24oaWQpe3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtpZighZSlyZXR1cm47dmFyIGhhcz1lLnF1ZXJ5U2VsZWN0b3IoJyonKSE9PW51bGw7aWYoaGFzKWUuY2xhc3NMaXN0LmFkZCgna3RoLWhhcycpO2Vsc2UgZS5jbGFzc0xpc3QucmVtb3ZlKCdrdGgtaGFzJyk7fSk7fWZ1bmN0aW9uIGdvKCl7c3luYygpO1snc2VhcmNoLXJlc3VsdHMnLCdtb2Itc2VhcmNoLXJlcyddLmZvckVhY2goZnVuY3Rpb24oaWQpe3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtpZighZSlyZXR1cm47dHJ5e25ldyBNdXRhdGlvbk9ic2VydmVyKHN5bmMpLm9ic2VydmUoZSx7Y2hpbGRMaXN0OnRydWUsc3VidHJlZTp0cnVlfSk7fWNhdGNoKGVycil7fX0pO31pZihkb2N1bWVudC5yZWFkeVN0YXRlPT09J2xvYWRpbmcnKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxnbyk7fWVsc2V7Z28oKTt9c2V0VGltZW91dChnbyw4MDApO3NldFRpbWVvdXQoZ28sMjUwMCk7c2V0SW50ZXJ2YWwoc3luYywxNTAwKTt9KSgpOzwvc2NyaXB0PgoKPHN0eWxlIGlkPSJrdGgtaGRyZml4LWNzcyI+aHRtbCBib2R5IC5oZWFkZXItYXZhdGFye3dpZHRoOjI2cHghaW1wb3J0YW50O2hlaWdodDoyNnB4IWltcG9ydGFudDttaW4td2lkdGg6MCFpbXBvcnRhbnQ7bWluLWhlaWdodDowIWltcG9ydGFudDttYXgtd2lkdGg6MjZweCFpbXBvcnRhbnQ7bWF4LWhlaWdodDoyNnB4IWltcG9ydGFudDtib3JkZXItcmFkaXVzOjUwJSFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpjb3ZlcjtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtmbGV4Om5vbmUhaW1wb3J0YW50fWh0bWwgYm9keSAuaGVhZGVyLW1lbWJlcntkaXNwbGF5OmZsZXghaW1wb3J0YW50O2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnQ7Z2FwOjhweCFpbXBvcnRhbnQ7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcH1odG1sIGJvZHkgLmhlYWRlci1yaWdodHthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50O2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDttaW4td2lkdGg6MH1odG1sIGJvZHkgLmhlYWRlci1tZW1iZXItYnRuLS1hY2NvdW50e2hlaWdodDozMnB4IWltcG9ydGFudDttaW4taGVpZ2h0OjAhaW1wb3J0YW50O3BhZGRpbmc6MCAzcHghaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MTZweCFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudDtmbGV4Om5vbmUhaW1wb3J0YW50O2JveC1zaXppbmc6Ym9yZGVyLWJveCFpbXBvcnRhbnR9aHRtbCBib2R5IC5oZWFkZXItbWVtYmVyLWJ0bi0tYWNjb3VudD5zcGFuOmVtcHR5e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9aHRtbCBib2R5IC5oZWFkZXItbWVtYmVyLWJ0bntmbGV4Om5vbmUhaW1wb3J0YW50fWh0bWwgYm9keSAua3RoLWxhbmd0b2dnbGV7ZmxleDpub25lIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9QG1lZGlhIChtYXgtd2lkdGg6ODYwcHgpe2h0bWwgYm9keSAuaGVhZGVyLWJhbm5lcntnYXA6OHB4IWltcG9ydGFudDtwYWRkaW5nOjAgMTBweCFpbXBvcnRhbnR9aHRtbCBib2R5IC5oZWFkZXItbWVtYmVye2dhcDo2cHghaW1wb3J0YW50fWh0bWwgYm9keSAua3RoLWxhbmd0b2dnbGV7aGVpZ2h0OjI1cHghaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MTNweCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50fWh0bWwgYm9keSAua3RoLWxhbmd0b2dnbGUgYnV0dG9ue2hlaWdodDoyNXB4IWltcG9ydGFudDtsaW5lLWhlaWdodDoyNXB4IWltcG9ydGFudDtwYWRkaW5nOjAgOHB4IWltcG9ydGFudDtmb250LXNpemU6MTBweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NjAwIWltcG9ydGFudH1odG1sIGJvZHkgLmhlYWRlci1tZW1iZXItYnRue2hlaWdodDoyNXB4IWltcG9ydGFudDtwYWRkaW5nOjAgOXB4IWltcG9ydGFudDtmb250LXNpemU6OS41cHghaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MTNweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MjVweCFpbXBvcnRhbnR9aHRtbCBib2R5IC5oZWFkZXItbWVtYmVyLWJ0bi0tYWNjb3VudHtoZWlnaHQ6MjVweCFpbXBvcnRhbnQ7cGFkZGluZzowIDNweCFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoxM3B4IWltcG9ydGFudH1odG1sIGJvZHkgLmhlYWRlci1hdmF0YXJ7d2lkdGg6MTlweCFpbXBvcnRhbnQ7aGVpZ2h0OjE5cHghaW1wb3J0YW50O21heC13aWR0aDoxOXB4IWltcG9ydGFudDttYXgtaGVpZ2h0OjE5cHghaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo0MzBweCl7aHRtbCBib2R5IGhlYWRlci5zaXRlLWhlYWRlciBkaXYuaGVhZGVyLWJhbm5lcntwYWRkaW5nLWxlZnQ6NXB4IWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OjVweCFpbXBvcnRhbnQ7Z2FwOjRweCFpbXBvcnRhbnR9aHRtbCBib2R5IGhlYWRlci5zaXRlLWhlYWRlciBkaXYuaGVhZGVyLWJhbm5lciBkaXYuaGVhZGVyLXJpZ2h0e2dhcDo2cHghaW1wb3J0YW50O21pbi13aWR0aDowIWltcG9ydGFudH1odG1sIGJvZHkgaGVhZGVyLnNpdGUtaGVhZGVyIGRpdi5oZWFkZXItYmFubmVyIGRpdi5oZWFkZXItcmlnaHQgZGl2LmhlYWRlci1tZW1iZXIgYS5oZWFkZXItbWVtYmVyLWJ0bntwYWRkaW5nOjAgN3B4IWltcG9ydGFudDtmb250LXNpemU6MTBweCFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LjNweCFpbXBvcnRhbnQ7d2hpdGUtc3BhY2U6bm93cmFwIWltcG9ydGFudH1odG1sIGJvZHkgaGVhZGVyLnNpdGUtaGVhZGVyIGRpdi5oZWFkZXItYmFubmVyIGRpdi5oZWFkZXItcmlnaHQgZGl2Lmt0aC1sYW5ndG9nZ2xlIGJ1dHRvbntwYWRkaW5nOjAgNXB4IWltcG9ydGFudDtmb250LXNpemU6OS41cHghaW1wb3J0YW50fX08L3N0eWxlPgo8c2NyaXB0IGlkPSJrdGgtcm9ib3RzLWpzIj4oZnVuY3Rpb24oKXt0cnl7aWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPSJyb2JvdHMiXScpKXJldHVybjt2YXIgbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdtZXRhJyk7bS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCdyb2JvdHMnKTttLnNldEF0dHJpYnV0ZSgnY29udGVudCcsJ2luZGV4LGZvbGxvdyxtYXgtaW1hZ2UtcHJldmlldzpsYXJnZSxtYXgtc25pcHBldDotMSxtYXgtdmlkZW8tcHJldmlldzotMScpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobSk7fWNhdGNoKGUpe319KSgpOzwvc2NyaXB0Pgo8c3R5bGUgaWQ9Imt0aC1hY2N0LWNzcyI+aHRtbCBib2R5IC5oZWFkZXItbWVtYmVyLWJ0bi0tYWNjb3VudHtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudDttYXgtd2lkdGg6bm9uZSFpbXBvcnRhbnQ7aGVpZ2h0OjMycHghaW1wb3J0YW50O3BhZGRpbmc6MCAxMnB4IWltcG9ydGFudDtnYXA6NnB4IWltcG9ydGFudDtib3JkZXItcmFkaXVzOjE2cHghaW1wb3J0YW50O2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnQ7ZmxleDpub25lIWltcG9ydGFudDtmb250LXNpemU6MTFweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NTAwIWltcG9ydGFudDt3aGl0ZS1zcGFjZTpub3dyYXAhaW1wb3J0YW50fWh0bWwgYm9keSAuaGVhZGVyLW1lbWJlci1idG4tLWFjY291bnQgLmt0aC1hY2N0LWx7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEhaW1wb3J0YW50fUBtZWRpYSAobWF4LXdpZHRoOjg2MHB4KXtodG1sIGJvZHkgLmhlYWRlci1tZW1iZXItYnRuLS1hY2NvdW50e2hlaWdodDoyNXB4IWltcG9ydGFudDtwYWRkaW5nOjAgOXB4IWltcG9ydGFudDtmb250LXNpemU6OS41cHghaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MTNweCFpbXBvcnRhbnQ7Z2FwOjVweCFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjQzMHB4KXtodG1sIGJvZHkgLmhlYWRlci1tZW1iZXItYnRuLS1hY2NvdW50e2hlaWdodDoyMnB4IWltcG9ydGFudDtwYWRkaW5nOjAgN3B4IWltcG9ydGFudDtmb250LXNpemU6OXB4IWltcG9ydGFudDtib3JkZXItcmFkaXVzOjExcHghaW1wb3J0YW50O2dhcDo0cHghaW1wb3J0YW50fX1odG1sIGJvZHkgLmhlYWRlci1tZW1iZXItYnRuLS1hY2NvdW50IGltZyxodG1sIGJvZHkgLmhlYWRlci1tZW1iZXItYnRuLS1hY2NvdW50IC5oZWFkZXItYXZhdGFye2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9aHRtbCBib2R5IC5oZWFkZXItbWVtYmVyLWJ0bi0tYWNjb3VudHtnYXA6MCFpbXBvcnRhbnQ7cGFkZGluZzowIDEycHghaW1wb3J0YW50fTwvc3R5bGU+Cgo8c2NyaXB0IGlkPSJrdGgtYWNjdC1qcyI+KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZW4oKXt0cnl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdrdGhfbGFuZycpPT09J2VuJzt9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlO319ZnVuY3Rpb24gc2V0VHh0KGVsLHQpe2lmKGVsJiZlbC50ZXh0Q29udGVudC50cmltKCkhPT10KXtlbC50ZXh0Q29udGVudD10O319ZnVuY3Rpb24gZml4KCl7dmFyIGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhlYWRlci1tZW1iZXItYnRuLS1hY2NvdW50Jyk7aWYoYSl7dmFyIGltZz1hLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpO2lmKGltZylpbWcuc3R5bGUuZGlzcGxheT0nbm9uZSc7dmFyIHM9YS5xdWVyeVNlbGVjdG9yKCcua3RoLWFjY3QtbCcpO2lmKCFzKXtzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtzLmNsYXNzTmFtZT0na3RoLWFjY3QtbCc7YS5hcHBlbmRDaGlsZChzKTt9c2V0VHh0KHMsZW4oKT8nTXkgUGFnZSc6J1x1QjlDOFx1Qzc3NFx1RDM5OFx1Qzc3NFx1QzlDMCcpO312YXIgc289ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhlYWRlci1tZW1iZXItYnRuLS1zaWdub3V0Jyk7aWYoc28pe3ZhciBsPXNvLnF1ZXJ5U2VsZWN0b3IoJy5rdGgtc28tbCcpO2lmKCFsKXtsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtsLmNsYXNzTmFtZT0na3RoLXNvLWwnO3NvLnRleHRDb250ZW50PScnO3NvLmFwcGVuZENoaWxkKGwpO31zZXRUeHQobCxlbigpPydTaWduIE91dCc6J1x1Qjg1Q1x1QURGOFx1QzU0NFx1QzZDMycpO319ZnVuY3Rpb24gZ28oKXtpZighZW4oKSl7dW5kbygpO31maXgoKTt2YXIgbj0wO3ZhciBpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2ZpeCgpO2lmKCsrbj40MCljbGVhckludGVydmFsKGl2KTt9LDYwMCk7dHJ5e25ldyBNdXRhdGlvbk9ic2VydmVyKGZpeCkub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHtjaGlsZExpc3Q6dHJ1ZSxzdWJ0cmVlOnRydWV9KTt9Y2F0Y2goZSl7fXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJyxmaXgpO31pZihkb2N1bWVudC5yZWFkeVN0YXRlPT09J2xvYWRpbmcnKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxnbyk7fWVsc2V7Z28oKTt9fSkoKTs8L3NjcmlwdD48c2NyaXB0IGlkPSJrdGgtc2QtanMiPihmdW5jdGlvbigpe2Z1bmN0aW9uIHJ1bigpe3RyeXt2YXIgYj0oZG9jdW1lbnQuYm9keSYmZG9jdW1lbnQuYm9keS5jbGFzc05hbWUpfHwiIjtpZihiLmluZGV4T2YoInBvc3QtdGVtcGxhdGUiKTwwKXJldHVybjt2YXIgd2FsbD0hIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5wb3N0LXVwZ3JhZGUtbWVzc2FnZSwuaGF2ZS1wYXl3YWxsLW1lc3NhZ2UiKTt2YXIgZWxzPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc2NyaXB0W3R5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iXScpKTt2YXIgYXJ0PW51bGw7ZWxzLmZvckVhY2goZnVuY3Rpb24oZWwpe3ZhciBvO3RyeXtvPUpTT04ucGFyc2UoZWwudGV4dENvbnRlbnQpO31jYXRjaChlKXtyZXR1cm47fWlmKG9bIkB0eXBlIl09PT0iQXJ0aWNsZSImJlN0cmluZyhvLmlzQWNjZXNzaWJsZUZvckZyZWUpPT09IkZhbHNlIil7YXJ0PW87fX0pO3ZhciBwYWlkPXdhbGx8fCEhYXJ0O3ZhciBIUD0oYXJ0JiZhcnQuaGFzUGFydCYmYXJ0Lmhhc1BhcnQubGVuZ3RoKT9hcnQuaGFzUGFydDpbeyJAdHlwZSI6IldlYlBhZ2VFbGVtZW50Iixjc3NTZWxlY3RvcjoiLnBvc3QtdXBncmFkZS1tZXNzYWdlIixpc0FjY2Vzc2libGVGb3JGcmVlOiJGYWxzZSJ9XTtlbHMuZm9yRWFjaChmdW5jdGlvbihlbCl7dmFyIG87dHJ5e289SlNPTi5wYXJzZShlbC50ZXh0Q29udGVudCk7fWNhdGNoKGUpe3JldHVybjt9dmFyIHQ9b1siQHR5cGUiXTtpZih0IT09Ik5ld3NBcnRpY2xlIiYmdCE9PSJBcnRpY2xlIilyZXR1cm47dmFyIGNoPWZhbHNlO2lmKHBhaWQpe2lmKFN0cmluZyhvLmlzQWNjZXNzaWJsZUZvckZyZWUpIT09IkZhbHNlIiYmby5pc0FjY2Vzc2libGVGb3JGcmVlIT09ZmFsc2Upe28uaXNBY2Nlc3NpYmxlRm9yRnJlZT1mYWxzZTtjaD10cnVlO31pZighby5oYXNQYXJ0fHwhby5oYXNQYXJ0Lmxlbmd0aCl7by5oYXNQYXJ0PUhQO2NoPXRydWU7fX1lbHNlIGlmKG8uaXNBY2Nlc3NpYmxlRm9yRnJlZT09PXVuZGVmaW5lZCl7by5pc0FjY2Vzc2libGVGb3JGcmVlPXRydWU7Y2g9dHJ1ZTt9aWYoY2gpe2VsLnRleHRDb250ZW50PUpTT04uc3RyaW5naWZ5KG8pO319KTt9Y2F0Y2goZSl7fX1zZXRUaW1lb3V0KHJ1biwyMDAwKTtzZXRUaW1lb3V0KHJ1biw0NTAwKTt9KSgpOzwvc2NyaXB0PjxzdHlsZSBpZD0ia3RoLWF1dGgtY3NzIj5odG1sIGJvZHkua3RoLWF1dGh7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9Ym9keS5rdGgtYXV0aCAuc2lnbmluLXN1YnRpdGxle2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Ym9keS5rdGgtYXV0aCAucG93ZXJlZC1ibHVlZG90e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Ym9keS5rdGgtYXV0aCBmb3JtLnNpZ25pbi1mb3Jte21heC13aWR0aDo0MDBweCFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fWJvZHkua3RoLWF1dGggLnNpZ25pbi10aXRsZXtmb250LWZhbWlseTpHZW9yZ2lhLCJUaW1lcyBOZXcgUm9tYW4iLHNlcmlmIWltcG9ydGFudDtmb250LXNpemU6MjdweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4yNSFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LS4ycHghaW1wb3J0YW50O3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudDtjb2xvcjojMTIxNDFhIWltcG9ydGFudDttYXJnaW46MCAwIDZweCFpbXBvcnRhbnR9Ym9keS5rdGgtYXV0aCAua3RoLWF1dGgtc3Vie2Rpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEzcHg7Y29sb3I6Izc3NzU2ZTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAyNHB4fWJvZHkua3RoLWF1dGggLnNpZ25pbi1ib3ggaW5wdXRbdHlwZT1lbWFpbF0sYm9keS5rdGgtYXV0aCAuc2lnbmluLWJveCBpbnB1dFt0eXBlPXRleHRde2JhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCAjZDVkMmM5IWltcG9ydGFudDtib3JkZXItcmFkaXVzOjJweCFpbXBvcnRhbnQ7aGVpZ2h0OjQ2cHghaW1wb3J0YW50O2ZvbnQtc2l6ZToxNHB4IWltcG9ydGFudDtjb2xvcjojMTIxNDFhIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzpub3JtYWwhaW1wb3J0YW50fWJvZHkua3RoLWF1dGggLnNpZ25pbi1ib3ggaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMxMjE0MWEhaW1wb3J0YW50O291dGxpbmU6bm9uZSFpbXBvcnRhbnR9Ym9keS5rdGgtYXV0aCAuYmx1ZWRvdC1idXR0b24uYmx1ZWRvdHtiYWNrZ3JvdW5kOiMxMjE0MWEhaW1wb3J0YW50O2NvbG9yOiNmZmYhaW1wb3J0YW50O2JvcmRlcjoxcHggc29saWQgIzEyMTQxYSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHghaW1wb3J0YW50O2hlaWdodDo0NnB4IWltcG9ydGFudDtmb250LXNpemU6MTRweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NjAwIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzpub3JtYWwhaW1wb3J0YW50fWJvZHkua3RoLWF1dGggLmJsdWVkb3QtYnV0dG9uLmJsdWVkb3Q6aG92ZXJ7YmFja2dyb3VuZDojMDAwIWltcG9ydGFudH1ib2R5Lmt0aC1hdXRoIC53aXRoLW1hZ2ljbGluayAudGV4dCxib2R5Lmt0aC1hdXRoIC53aXRoLW1hZ2ljbGluayBhe2ZvbnQtc2l6ZToxMi41cHghaW1wb3J0YW50O2NvbG9yOiM3Nzc1NmUhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOm5vcm1hbCFpbXBvcnRhbnR9Ym9keS5rdGgtYXV0aCAud2l0aC1tYWdpY2xpbmsgYXt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIWltcG9ydGFudH1ib2R5Lmt0aC1hdXRoIC5vci1zb2NpYWwtc2lnbmluLXdyYXAgLm9ye2ZvbnQtc2l6ZToxMnB4IWltcG9ydGFudDtjb2xvcjojOWE5ODhmIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzpub3JtYWwhaW1wb3J0YW50O3RleHQtdHJhbnNmb3JtOm5vbmUhaW1wb3J0YW50fWJvZHkua3RoLWF1dGggYS5sb2dpbi1idXR0b257YmFja2dyb3VuZDojZmZmIWltcG9ydGFudDtjb2xvcjojMTIxNDFhIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkICNkNWQyYzkhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MnB4IWltcG9ydGFudDtoZWlnaHQ6NDRweCFpbXBvcnRhbnQ7Zm9udC1zaXplOjEzLjVweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NTAwIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzpub3JtYWwhaW1wb3J0YW50fWJvZHkua3RoLWF1dGggYS5sb2dpbi1idXR0b246aG92ZXJ7Ym9yZGVyLWNvbG9yOiMxMjE0MWEhaW1wb3J0YW50fWJvZHkua3RoLWF1dGggZm9ybS5zaWduaW4tZm9ybT5we2ZvbnQtc2l6ZToxM3B4IWltcG9ydGFudDtjb2xvcjojNTU1MzRkIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzpub3JtYWwhaW1wb3J0YW50O3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudDttYXJnaW4tdG9wOjIycHghaW1wb3J0YW50fWJvZHkua3RoLWF1dGggZm9ybS5zaWduaW4tZm9ybT5wIGF7Y29sb3I6IzEyMTQxYSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NjAwIWltcG9ydGFudH08L3N0eWxlPjxzY3JpcHQgaWQ9Imt0aC1hdXRoLWpzIj4oZnVuY3Rpb24oKXt2YXIgUD1sb2NhdGlvbi5wYXRobmFtZTtpZighL15cLyhzaWduaW58c2lnbnVwKVwvPyQvLnRlc3QoUCkpcmV0dXJuO3ZhciBLTz0obG9jYWxTdG9yYWdlLmdldEl0ZW0oImt0aF9sYW5nIil8fCJlbiIpPT09ImtvIjt2YXIgU1VCPXtrbzp7c2lnbmluOiLqtazrj4Ug7ZqM7JuQ7J2066m0IOydtOuplOydvOuhnCDroZzqt7jsnbjtlZjshLjsmpQuIixzaWdudXA6IuydtOuplOydvCDso7zshozrp4wg7J6I7Jy866m0IOuwlOuhnCDsi5zsnpHtlaAg7IiYIOyeiOyKteuLiOuLpC4ifSxlbjp7c2lnbmluOiJTaWduIGluIHdpdGggdGhlIGVtYWlsIHlvdSBzdWJzY3JpYmVkIHdpdGguIixzaWdudXA6IkFsbCB5b3UgbmVlZCBpcyBhbiBlbWFpbCBhZGRyZXNzLiJ9fTt2YXIgS0VZPVAuaW5kZXhPZigic2lnbnVwIik+LTE/InNpZ251cCI6InNpZ25pbiI7dmFyIFNSQz1udWxsO2Z1bmN0aW9uIHRuKGVsKXt2YXIgbz1bXSx3PWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZWwsTm9kZUZpbHRlci5TSE9XX1RFWFQsbnVsbCxmYWxzZSksbjt3aGlsZShuPXcubmV4dE5vZGUoKSl7aWYobi5ub2RlVmFsdWUmJm4ubm9kZVZhbHVlLnRyaW0oKSlvLnB1c2gobik7fXJldHVybiBvO312YXIgU0VMPVsiLnNpZ25pbi10aXRsZSIsIi5zaWduaW4tYm94IC5ibHVlZG90LWJ1dHRvbiIsImxhYmVsLndpdGgtbWFnaWNsaW5rIiwiLm9yLXNvY2lhbC1zaWduaW4td3JhcCAub3IiLCJhLmxvZ2luLWJ1dHRvbi5rYWthbyIsImEubG9naW4tYnV0dG9uLmdvb2dsZSIsImZvcm0uc2lnbmluLWZvcm0+cDpub3QoLmt0aC1hdXRoLXN1YikiLCIuc2lnbmluLWJveCAudGVybXMtd3JhcCJdO2Z1bmN0aW9uIHJlc3RvcmUoKXtpZighU1JDKXJldHVybjtTRUwuZm9yRWFjaChmdW5jdGlvbihzKXt2YXIgYSxiO3RyeXthPVNSQy5xdWVyeVNlbGVjdG9yKHMpO2I9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzKTt9Y2F0Y2goZSl7cmV0dXJuO31pZighYXx8IWIpcmV0dXJuO3ZhciB4PXRuKGEpLHk9dG4oYik7aWYoeC5sZW5ndGghPT15Lmxlbmd0aClyZXR1cm47Zm9yKHZhciBpPTA7aTx4Lmxlbmd0aDtpKyspe2lmKHlbaV0ubm9kZVZhbHVlIT09eFtpXS5ub2RlVmFsdWUpeVtpXS5ub2RlVmFsdWU9eFtpXS5ub2RlVmFsdWU7fX0pO3ZhciBhaT1TUkMucXVlcnlTZWxlY3RvckFsbCgiLnNpZ25pbi1ib3ggaW5wdXQiKSxiaT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2lnbmluLWJveCBpbnB1dCIpO2lmKGFpLmxlbmd0aD09PWJpLmxlbmd0aCl7Zm9yKHZhciBrPTA7azxhaS5sZW5ndGg7aysrKXtpZihhaVtrXS5wbGFjZWhvbGRlciliaVtrXS5wbGFjZWhvbGRlcj1haVtrXS5wbGFjZWhvbGRlcjt9fX1mdW5jdGlvbiBzdWIoKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuc2lnbmluLXRpdGxlIik7aWYoIXR8fCF0LnBhcmVudE5vZGUpcmV0dXJuO3ZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5rdGgtYXV0aC1zdWIiKTtpZighZSl7ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTmFtZT0ia3RoLWF1dGgtc3ViIjt0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdC5uZXh0U2libGluZyk7fXZhciB2PShLTz9TVUIua286U1VCLmVuKVtLRVldO2lmKGUudGV4dENvbnRlbnQhPT12KWUudGV4dENvbnRlbnQ9djt9ZnVuY3Rpb24gdHRsKCl7aWYoS08pcmV0dXJuO3ZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5zaWduaW4tdGl0bGUiKTtpZighdClyZXR1cm47dmFyIHY9KEtFWT09PSJzaWdudXAiKT8iQ3JlYXRlIHlvdXIgYWNjb3VudCI6IlNpZ24gaW4iO2lmKHQudGV4dENvbnRlbnQudHJpbSgpIT09dil0LnRleHRDb250ZW50PXY7fWZ1bmN0aW9uIHJ1bigpe2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgia3RoLWF1dGgiKTtpZihLTylyZXN0b3JlKCk7dHRsKCk7c3ViKCk7fXJ1bigpO2lmKEtPKXtmZXRjaChQLHtjcmVkZW50aWFsczoib21pdCJ9KS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiByLnRleHQoKTt9KS50aGVuKGZ1bmN0aW9uKHQpe1NSQz1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHQsInRleHQvaHRtbCIpO3J1bigpO30pLmNhdGNoKGZ1bmN0aW9uKCl7fSk7fXZhciBuPTAsaXY9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtydW4oKTtpZigrK24+MjQpY2xlYXJJbnRlcnZhbChpdik7fSw1MDApO3RyeXtuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe3J1bigpO30pLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7Y2hpbGRMaXN0OnRydWUsc3VidHJlZTp0cnVlLGNoYXJhY3RlckRhdGE6dHJ1ZX0pO31jYXRjaChlKXt9fSkoKTs8L3NjcmlwdD48c3R5bGUgaWQ9Imt0aC1oZHJ3LWNzcyI+aHRtbCBib2R5IGhlYWRlci5zaXRlLWhlYWRlcnttYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnR9aHRtbCBib2R5IC5oZWFkZXItbmF2LWJhcnttaW4td2lkdGg6MCFpbXBvcnRhbnQ7bWF4LXdpZHRoOjEwMCUhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnR9aHRtbCBib2R5IC5oZWFkZXItbmF2LWJhcj5uYXYuc2l0ZS1uYXZ7bWluLXdpZHRoOjAhaW1wb3J0YW50O2ZsZXg6MSAxIGF1dG8haW1wb3J0YW50fWh0bWwgYm9keSB1bC5uYXZ7bWluLXdpZHRoOjAhaW1wb3J0YW50O292ZXJmbG93LXg6YXV0byFpbXBvcnRhbnQ7c2Nyb2xsYmFyLXdpZHRoOm5vbmUhaW1wb3J0YW50Oy1tcy1vdmVyZmxvdy1zdHlsZTpub25lIWltcG9ydGFudH1odG1sIGJvZHkgdWwubmF2Ojotd2Via2l0LXNjcm9sbGJhcntkaXNwbGF5Om5vbmUhaW1wb3J0YW50O2hlaWdodDowIWltcG9ydGFudH1AbWVkaWEgKG1heC13aWR0aDoxNDAwcHgpe2h0bWwgYm9keSB1bC5uYXY+bGk+YXtwYWRkaW5nLWxlZnQ6N3B4IWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OjdweCFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LjRweCFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjExNjBweCl7aHRtbCBib2R5IHVsLm5hdj5saT5he3BhZGRpbmctbGVmdDo1cHghaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6NXB4IWltcG9ydGFudDtmb250LXNpemU6MTAuNXB4IWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMnB4IWltcG9ydGFudH19QG1lZGlhIChtYXgtd2lkdGg6NDMwcHgpe2h0bWwgYm9keSBoZWFkZXIuc2l0ZS1oZWFkZXIgZGl2LmhlYWRlci1iYW5uZXJ7cGFkZGluZy1sZWZ0OjVweCFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDo1cHghaW1wb3J0YW50O2dhcDo0cHghaW1wb3J0YW50O2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7bWluLWhlaWdodDowIWltcG9ydGFudDtyb3ctZ2FwOjJweCFpbXBvcnRhbnR9aHRtbCBib2R5IGhlYWRlci5zaXRlLWhlYWRlciBkaXYuaGVhZGVyLWJhbm5lciBkaXYuaGVhZGVyLXJpZ2h0IHtnYXA6NXB4IWltcG9ydGFudDttaW4td2lkdGg6MCFpbXBvcnRhbnQ7ZmxleC13cmFwOndyYXAhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnQ7cm93LWdhcDoycHghaW1wb3J0YW50fWh0bWwgYm9keSBoZWFkZXIuc2l0ZS1oZWFkZXIgZGl2LmhlYWRlci1iYW5uZXIgZGl2LmhlYWRlci1yaWdodCBkaXYuaGVhZGVyLW1lbWJlcntnYXA6NXB4IWltcG9ydGFudDtmbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudDtyb3ctZ2FwOjJweCFpbXBvcnRhbnR9aHRtbCBib2R5IGhlYWRlci5zaXRlLWhlYWRlciBkaXYuaGVhZGVyLWJhbm5lciBkaXYuaGVhZGVyLXJpZ2h0IGRpdi5oZWFkZXItbWVtYmVyIGEuaGVhZGVyLW1lbWJlci1idG57cGFkZGluZzowIDdweCFpbXBvcnRhbnQ7Zm9udC1zaXplOjEwcHghaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi4zcHghaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcCFpbXBvcnRhbnR9aHRtbCBib2R5IGhlYWRlci5zaXRlLWhlYWRlciBkaXYuaGVhZGVyLWJhbm5lciBkaXYuaGVhZGVyLXJpZ2h0IGRpdi5rdGgtbGFuZ3RvZ2dsZSBidXR0b257cGFkZGluZzowIDZweCFpbXBvcnRhbnQ7Zm9udC1zaXplOjkuNXB4IWltcG9ydGFudH19PC9zdHlsZT48c2NyaXB0IGlkPSJrdGgtaGRyZml0LWpzIj4oZnVuY3Rpb24oKXtmdW5jdGlvbiBxKHMpe3JldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHMpO31mdW5jdGlvbiBvdigpe3ZhciBiPXEoIi5oZWFkZXItYmFubmVyIiksbT1xKCIuaGVhZGVyLW1lbWJlciIpO2lmKCFifHwhbSlyZXR1cm4gMDtyZXR1cm4gTWF0aC5yb3VuZChtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0LShiLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0LTQpKTt9ZnVuY3Rpb24gc2V0cChlLHBhZCxmcyl7aWYoIWUpcmV0dXJuO2Uuc3R5bGUuc2V0UHJvcGVydHkoInBhZGRpbmctbGVmdCIscGFkKyJweCIsImltcG9ydGFudCIpO2Uuc3R5bGUuc2V0UHJvcGVydHkoInBhZGRpbmctcmlnaHQiLHBhZCsicHgiLCJpbXBvcnRhbnQiKTtlLnN0eWxlLnNldFByb3BlcnR5KCJmb250LXNpemUiLGZzKyJweCIsImltcG9ydGFudCIpO2Uuc3R5bGUuc2V0UHJvcGVydHkoIndoaXRlLXNwYWNlIiwibm93cmFwIiwiaW1wb3J0YW50Iik7fWZ1bmN0aW9uIGxibChlLHQpe2lmKCFlKXJldHVybjt2YXIgdz1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGUsTm9kZUZpbHRlci5TSE9XX1RFWFQsbnVsbCxmYWxzZSksbixmPW51bGw7d2hpbGUobj13Lm5leHROb2RlKCkpe2lmKG4ubm9kZVZhbHVlJiZuLm5vZGVWYWx1ZS50cmltKCkpe2Y9bjticmVhazt9fWlmKGYmJmYubm9kZVZhbHVlLnRyaW0oKSE9PXQpZi5ub2RlVmFsdWU9dDt9ZnVuY3Rpb24gZml0KCl7dHJ5e2lmKHdpbmRvdy5pbm5lcldpZHRoPjQ2MClyZXR1cm47dmFyIGI9cSgiLmhlYWRlci1iYW5uZXIiKSxtPXEoIi5oZWFkZXItbWVtYmVyIikscj1xKCIuaGVhZGVyLXJpZ2h0Iik7aWYoIWJ8fCFtKXJldHVybjtiLnN0eWxlLnNldFByb3BlcnR5KCJwYWRkaW5nLWxlZnQiLCI1cHgiLCJpbXBvcnRhbnQiKTtiLnN0eWxlLnNldFByb3BlcnR5KCJwYWRkaW5nLXJpZ2h0IiwiNXB4IiwiaW1wb3J0YW50Iik7Yi5zdHlsZS5zZXRQcm9wZXJ0eSgiZ2FwIiwiNHB4IiwiaW1wb3J0YW50Iik7aWYocilyLnN0eWxlLnNldFByb3BlcnR5KCJnYXAiLCI1cHgiLCJpbXBvcnRhbnQiKTttLnN0eWxlLnNldFByb3BlcnR5KCJnYXAiLCI1cHgiLCJpbXBvcnRhbnQiKTt2YXIgYnRucz1tLnF1ZXJ5U2VsZWN0b3JBbGwoIi5oZWFkZXItbWVtYmVyLWJ0biIpO3ZhciB0Yj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIua3RoLWxhbmd0b2dnbGUgYnV0dG9uIik7W10uZm9yRWFjaC5jYWxsKGJ0bnMsZnVuY3Rpb24oZSl7c2V0cChlLDcsMTApO30pO1tdLmZvckVhY2guY2FsbCh0YixmdW5jdGlvbihlKXtzZXRwKGUsNiw5LjUpO30pO2lmKG92KCk8PTApcmV0dXJuO1tdLmZvckVhY2guY2FsbChidG5zLGZ1bmN0aW9uKGUpe3NldHAoZSw1LDkuNSk7fSk7W10uZm9yRWFjaC5jYWxsKHRiLGZ1bmN0aW9uKGUpe3NldHAoZSw0LDkpO30pO2lmKG92KCk8PTApcmV0dXJuO3ZhciBrbz0obG9jYWxTdG9yYWdlLmdldEl0ZW0oImt0aF9sYW5nIil8fCJlbiIpPT09ImtvIjt2YXIgc2I9cSgiLmhlYWRlci1tZW1iZXItYnRuLS1zdWJzY3JpYmUiKSxzaT1xKCIuaGVhZGVyLW1lbWJlci1idG4tLXNpZ25pbiIpO2xibChzYixrbz8i6rWs64+FIjoiSk9JTiIpO2xibChzaSxrbz8i66Gc6re47J24IjoiTE9HIElOIik7aWYob3YoKTw9MClyZXR1cm47aWYocil7ci5zdHlsZS5zZXRQcm9wZXJ0eSgiZmxleC13cmFwIiwid3JhcCIsImltcG9ydGFudCIpO3Iuc3R5bGUuc2V0UHJvcGVydHkoImp1c3RpZnktY29udGVudCIsImZsZXgtZW5kIiwiaW1wb3J0YW50Iik7ci5zdHlsZS5zZXRQcm9wZXJ0eSgicm93LWdhcCIsIjJweCIsImltcG9ydGFudCIpO31iLnN0eWxlLnNldFByb3BlcnR5KCJmbGV4LXdyYXAiLCJ3cmFwIiwiaW1wb3J0YW50Iik7Yi5zdHlsZS5zZXRQcm9wZXJ0eSgiaGVpZ2h0IiwiYXV0byIsImltcG9ydGFudCIpO2Iuc3R5bGUuc2V0UHJvcGVydHkoInJvdy1nYXAiLCIycHgiLCJpbXBvcnRhbnQiKTt9Y2F0Y2goZSl7fX1mdW5jdGlvbiBnbygpe2ZpdCgpO31pZihkb2N1bWVudC5yZWFkeVN0YXRlPT09ImxvYWRpbmciKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixnbyk7fWVsc2V7Z28oKTt9dmFyIG49MCxpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2dvKCk7aWYoKytuPjIwKWNsZWFySW50ZXJ2YWwoaXYpO30sNDAwKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixnbyk7fSkoKTs8L3NjcmlwdD48c3R5bGUgaWQ9Imt0aC10YmwtY3NzIj5odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQuYy1jb250ZW50IC5rdGgtdHcsaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudCAua3RoLXR3e292ZXJmbG93LXg6YXV0byFpbXBvcnRhbnQ7bWF4LXdpZHRoOjEwMCUhaW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O21hcmdpbjoyOHB4IDAgMTBweCFpbXBvcnRhbnQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnQ7Ym94LXNoYWRvdzpub25lIWltcG9ydGFudH1odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlLGh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQgdGFibGV7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7bWluLXdpZHRoOjAhaW1wb3J0YW50O21heC13aWR0aDoxMDAlIWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlIWltcG9ydGFudDt0YWJsZS1sYXlvdXQ6YXV0byFpbXBvcnRhbnQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym94LXNoYWRvdzpub25lIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnR9aHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0cixodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IHRhYmxlIHRyLGh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudC5jLWNvbnRlbnQgdGFibGUgdGhlYWQsaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudCB0YWJsZSB0aGVhZCxodG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRib2R5LGh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQgdGFibGUgdGJvZHl7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lIWltcG9ydGFudH1odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRkLGh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQgdGFibGUgdGQsaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0aCxodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IHRhYmxlIHRoe2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZSFpbXBvcnRhbnQ7Y29sb3I6IzFhMWIyMCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQ5ZDAhaW1wb3J0YW50O3BhZGRpbmc6MTNweCAxMnB4IWltcG9ydGFudDtmb250LXNpemU6MTVweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS42IWltcG9ydGFudDt2ZXJ0aWNhbC1hbGlnbjp0b3AhaW1wb3J0YW50O3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6bm9ybWFsIWltcG9ydGFudDtmb250LXdlaWdodDo0MDAhaW1wb3J0YW50O3dvcmQtYnJlYWs6a2VlcC1hbGwhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vcm1hbCFpbXBvcnRhbnR9aHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0ZCAqLGh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQgdGFibGUgdGQgKixodG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRoICosaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudCB0YWJsZSB0aCAqe2NvbG9yOmluaGVyaXQhaW1wb3J0YW50O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZSFpbXBvcnRhbnQ7Zm9udC1mYW1pbHk6aW5oZXJpdCFpbXBvcnRhbnQ7Zm9udC1zaXplOmluaGVyaXQhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OmluaGVyaXQhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOm5vcm1hbCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3RleHQtYWxpZ246aW5oZXJpdCFpbXBvcnRhbnR9aHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0ciB0ZDpmaXJzdC1jaGlsZCxodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IHRhYmxlIHRyIHRkOmZpcnN0LWNoaWxkLGh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudC5jLWNvbnRlbnQgdGFibGUgdHIgdGg6Zmlyc3QtY2hpbGQsaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudCB0YWJsZSB0ciB0aDpmaXJzdC1jaGlsZHtjb2xvcjojMTQxNTFhIWltcG9ydGFudDtmb250LXdlaWdodDo2MDAhaW1wb3J0YW50O3BhZGRpbmctbGVmdDowIWltcG9ydGFudDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudH1odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRkOmxhc3QtY2hpbGQsaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudCB0YWJsZSB0ZDpsYXN0LWNoaWxkLGh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudC5jLWNvbnRlbnQgdGFibGUgdGg6bGFzdC1jaGlsZCxodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IHRhYmxlIHRoOmxhc3QtY2hpbGR7cGFkZGluZy1yaWdodDowIWltcG9ydGFudH1odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRyOmZpcnN0LWNoaWxkIHRkLGh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQgdGFibGUgdHI6Zmlyc3QtY2hpbGQgdGQsaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0cjpmaXJzdC1jaGlsZCB0aCxodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IHRhYmxlIHRyOmZpcnN0LWNoaWxkIHRoLGh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudC5jLWNvbnRlbnQgdGFibGUgdGhlYWQgdGQsaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudCB0YWJsZSB0aGVhZCB0ZCxodG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRoZWFkIHRoLGh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQgdGFibGUgdGhlYWQgdGh7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Y29sb3I6IzE0MTUxYSFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudDtmb250LXNpemU6MTJweCFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LjhweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS40IWltcG9ydGFudDtib3JkZXItdG9wOjJweCBzb2xpZCAjMTQxNTFhIWltcG9ydGFudDtib3JkZXItYm90dG9tOjEuNXB4IHNvbGlkICMxNDE1MWEhaW1wb3J0YW50O3BhZGRpbmctdG9wOjExcHghaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjExcHghaW1wb3J0YW50fWh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudC5jLWNvbnRlbnQgdGFibGUgdHI6bGFzdC1jaGlsZCB0ZCxodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IHRhYmxlIHRyOmxhc3QtY2hpbGQgdGQsaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0cjpsYXN0LWNoaWxkIHRoLGh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQgdGFibGUgdHI6bGFzdC1jaGlsZCB0aHtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMTQxNTFhIWltcG9ydGFudH1AbWVkaWEgKG1heC13aWR0aDo2MDBweCl7aHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0ZCxodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IHRhYmxlIHRkLGh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudC5jLWNvbnRlbnQgdGFibGUgdGgsaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudCB0YWJsZSB0aHtmb250LXNpemU6MTNweCFpbXBvcnRhbnQ7cGFkZGluZzoxMHB4IDZweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS41NSFpbXBvcnRhbnR9aHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZCxodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IHRhYmxlIHRyOmZpcnN0LWNoaWxkIHRkLGh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudC5jLWNvbnRlbnQgdGFibGUgdHI6Zmlyc3QtY2hpbGQgdGgsaHRtbCBib2R5IC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudCB0YWJsZSB0cjpmaXJzdC1jaGlsZCB0aCxodG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRoZWFkIHRkLGh0bWwgYm9keSAubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50Lm55dC1wb3N0LWNvbnRlbnQgdGFibGUgdGhlYWQgdGQsaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0aGVhZCB0aCxodG1sIGJvZHkgLm55dC1wb3N0LWNvbnRlbnQubnl0LXBvc3QtY29udGVudC5ueXQtcG9zdC1jb250ZW50IHRhYmxlIHRoZWFkIHRoe2ZvbnQtc2l6ZToxMXB4IWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouNHB4IWltcG9ydGFudDtwYWRkaW5nLXRvcDo5cHghaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjlweCFpbXBvcnRhbnR9fTwvc3R5bGU+PHNjcmlwdCBpZD0ia3RoLXRibC1qcyI+KGZ1bmN0aW9uKCl7dmFyIFJVTEU9IiNkZGQ5ZDAiLElOSz0iIzE0MTUxYSIsVFhUPSIjMWExYjIwIjtmdW5jdGlvbiBTKGVsLG8pe2Zvcih2YXIgayBpbiBvKXt0cnl7ZWwuc3R5bGUuc2V0UHJvcGVydHkoayxvW2tdLCJpbXBvcnRhbnQiKTt9Y2F0Y2goZSl7fX19ZnVuY3Rpb24gbnVtKHMpe3M9KHN8fCIiKS50cmltKCk7aWYoIXMpcmV0dXJuIHRydWU7cmV0dXJuIC9eWzAtOVx1MjIxMlwtXHUyMDEzXHUyMDE0XS8udGVzdChzKSYmcy5sZW5ndGg8PTI2O31mdW5jdGlvbiBydW4oKXt0cnl7dmFyIHNtPXdpbmRvdy5pbm5lcldpZHRoPD02MDA7dmFyIGZzPXNtPyIxM3B4IjoiMTVweCIsaGY9c20/IjExcHgiOiIxMnB4IixwYWQ9c20/IjEwcHggNnB4IjoiMTNweCAxMnB4IixocD1zbT8iOXB4IjoiMTFweCIsbHM9c20/Ii40cHgiOiIuOHB4Ijt2YXIgdHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmMtY29udGVudCB0YWJsZSwucG9zdC1jb250ZW50IHRhYmxlLC5ueXQtcG9zdC1jb250ZW50IHRhYmxlIik7W10uZm9yRWFjaC5jYWxsKHRzLGZ1bmN0aW9uKHQpe3ZhciB3PXQucGFyZW50RWxlbWVudDtpZih3JiZTdHJpbmcody5jbGFzc05hbWUpLmluZGV4T2YoImt0aC10dyIpPi0xKXtTKHcseyJvdmVyZmxvdy14IjoiYXV0byIsIm1heC13aWR0aCI6IjEwMCUiLCJ3aWR0aCI6IjEwMCUiLCJiYWNrZ3JvdW5kIjoidHJhbnNwYXJlbnQiLCJib3JkZXIiOiIwIiwiYm9yZGVyLXJhZGl1cyI6IjAiLCJib3gtc2hhZG93Ijoibm9uZSIsIm1hcmdpbiI6IjI4cHggMCAxMHB4In0pO31TKHQseyJ3aWR0aCI6IjEwMCUiLCJtaW4td2lkdGgiOiIwIiwibWF4LXdpZHRoIjoiMTAwJSIsImJvcmRlciI6IjAiLCJib3JkZXItY29sbGFwc2UiOiJjb2xsYXBzZSIsInRhYmxlLWxheW91dCI6ImF1dG8iLCJiYWNrZ3JvdW5kIjoidHJhbnNwYXJlbnQiLCJib3gtc2hhZG93Ijoibm9uZSIsIm1hcmdpbiI6IjAifSk7dmFyIHJvd3M9dC5yb3dzLGxhc3Q9cm93cy5sZW5ndGgtMTt2YXIgbmM9MDtmb3IodmFyIGE9MDthPHJvd3MubGVuZ3RoO2ErKyl7aWYocm93c1thXS5jZWxscy5sZW5ndGg+bmMpbmM9cm93c1thXS5jZWxscy5sZW5ndGg7fWlmKHNtJiZuYz49NSl7Uyh0LHsibWluLXdpZHRoIjpNYXRoLm1pbig3MjAsbmMqOTIpKyJweCIsIndpZHRoIjoiYXV0byJ9KTt9dmFyIGFsaWduPVtdO2Zvcih2YXIgYzI9MDtjMjxuYztjMisrKXtpZihjMj09PTApe2FsaWduLnB1c2goImxlZnQiKTtjb250aW51ZTt9dmFyIHRvdD0wLGhpdD0wO2Zvcih2YXIgcjI9MTtyMjxyb3dzLmxlbmd0aDtyMisrKXt2YXIgY2M9cm93c1tyMl0uY2VsbHNbYzJdO2lmKCFjYyljb250aW51ZTt0b3QrKztpZihudW0oY2MudGV4dENvbnRlbnQpKWhpdCsrO31hbGlnbi5wdXNoKCh0b3Q+MCYmaGl0L3RvdD49MC43KT8icmlnaHQiOiJsZWZ0Iik7fWZvcih2YXIgaT0wO2k8cm93cy5sZW5ndGg7aSsrKXtTKHJvd3NbaV0seyJiYWNrZ3JvdW5kIjoidHJhbnNwYXJlbnQiLCJiYWNrZ3JvdW5kLWltYWdlIjoibm9uZSJ9KTt2YXIgY3M9cm93c1tpXS5jZWxscztmb3IodmFyIGs9MDtrPGNzLmxlbmd0aDtrKyspe3ZhciBjPWNzW2tdO3ZhciBhbD1hbGlnbltrXXx8ImxlZnQiO1MoYyx7ImJhY2tncm91bmQiOiJ0cmFuc3BhcmVudCIsImJhY2tncm91bmQtaW1hZ2UiOiJub25lIiwiY29sb3IiOihrPT09MD9JTks6VFhUKSwiYm9yZGVyIjoiMCIsImJvcmRlci1ib3R0b20iOiIxcHggc29saWQgIitSVUxFLCJwYWRkaW5nIjpwYWQsImZvbnQtc2l6ZSI6ZnMsImxpbmUtaGVpZ2h0IjoiMS42IiwidmVydGljYWwtYWxpZ24iOiJ0b3AiLCJ0ZXh0LWFsaWduIjphbCwibGV0dGVyLXNwYWNpbmciOiJub3JtYWwiLCJmb250LXdlaWdodCI6KGs9PT0wPyI2MDAiOiI0MDAiKSwid2hpdGUtc3BhY2UiOiJub3JtYWwiLCJ3b3JkLWJyZWFrIjoia2VlcC1hbGwifSk7aWYoaz09PTApUyhjLHsicGFkZGluZy1sZWZ0IjoiMCIsIm1pbi13aWR0aCI6KHNtPyI3NnB4IjoiMTA0cHgiKSwid29yZC1icmVhayI6ImtlZXAtYWxsIn0pO2lmKGs9PT1jcy5sZW5ndGgtMSlTKGMseyJwYWRkaW5nLXJpZ2h0IjoiMCJ9KTtpZihpPT09MCl7UyhjLHsiY29sb3IiOklOSywiZm9udC13ZWlnaHQiOiI3MDAiLCJmb250LXNpemUiOmhmLCJsZXR0ZXItc3BhY2luZyI6bHMsImxpbmUtaGVpZ2h0IjoiMS40IiwiYm9yZGVyLXRvcCI6IjJweCBzb2xpZCAiK0lOSywiYm9yZGVyLWJvdHRvbSI6IjEuNXB4IHNvbGlkICIrSU5LLCJwYWRkaW5nLXRvcCI6aHAsInBhZGRpbmctYm90dG9tIjpocH0pO31pZihpPT09bGFzdCl7UyhjLHsiYm9yZGVyLWJvdHRvbSI6IjJweCBzb2xpZCAiK0lOS30pO312YXIga2lkcz1jLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKTtmb3IodmFyIHE9MDtxPGtpZHMubGVuZ3RoO3ErKyl7UyhraWRzW3FdLHsiY29sb3IiOiJpbmhlcml0IiwiYmFja2dyb3VuZCI6InRyYW5zcGFyZW50IiwiYmFja2dyb3VuZC1jb2xvciI6InRyYW5zcGFyZW50IiwiYmFja2dyb3VuZC1pbWFnZSI6Im5vbmUiLCJmb250LXNpemUiOiJpbmhlcml0IiwibGluZS1oZWlnaHQiOiJpbmhlcml0IiwibGV0dGVyLXNwYWNpbmciOiJub3JtYWwiLCJtYXJnaW4iOiIwIiwidGV4dC1hbGlnbiI6ImluaGVyaXQifSk7fX19fSk7fWNhdGNoKGUpe319aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJsb2FkaW5nIil7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIscnVuKTt9ZWxzZXtydW4oKTt9dmFyIG49MCxpdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3J1bigpO2lmKCsrbj4yNCljbGVhckludGVydmFsKGl2KTt9LDUwMCk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIscnVuKTt0cnl7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtydW4oKTt9KS5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2NoaWxkTGlzdDp0cnVlLHN1YnRyZWU6dHJ1ZX0pO31jYXRjaChlKXt9fSkoKTs8L3NjcmlwdD48c2NyaXB0IGlkPSJrdGgtc2hvcGkxOG4tanMiPihmdW5jdGlvbigpe3ZhciBNQVA9eyLrlJTsp4DthLjrtoEiOiJEaWdpdGFsIEJvb2siLCLsnbTrsqTtirggOiDsmKgm7Jik7ZSEIjoiRXZlbnQgwrcgT25saW5lICYgT2ZmbGluZSIsIuydtOuypO2KuCA6IOyYqOudvOyduCI6IkV2ZW50IMK3IE9ubGluZSIsIuydtOuypO2KuCA6IOyYpO2UhOudvOyduCI6IkV2ZW50IMK3IE9mZmxpbmUiLCLsm7nruYTrgpgiOiJXZWJpbmFyIiwi6rWs66ekIOu2iOqwgCI6IlVuYXZhaWxhYmxlIiwi7YyQ66ekIOyiheujjCI6IkNsb3NlZCIsIu2SiOygiCI6IlNvbGQgT3V0Iiwi66y066OMIjoiRnJlZSJ9O2Z1bmN0aW9uIGlzS28oKXt2YXIgbD0oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgibGFuZyIpfHwiIikudG9Mb3dlckNhc2UoKTtpZihsKXJldHVybiBsLmluZGV4T2YoImtvIik9PT0wO3RyeXtyZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oImt0aF9sYW5nIikhPT0iZW4ifWNhdGNoKGUpe3JldHVybiB0cnVlfX1mdW5jdGlvbiBydW4oKXt2YXIga289aXNLbygpO3ZhciBjYXJkcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuYmx1ZWRvdC1wcm9kdWN0LWNhcmQsLmJsdWVkb3QtcHJvZHVjdC1kZXRhaWwsLmJsdWVkb3QtcHJvZHVjdCIpO2Zvcih2YXIgYz0wO2M8Y2FyZHMubGVuZ3RoO2MrKyl7dmFyIHJvd3M9Y2FyZHNbY10ucXVlcnlTZWxlY3RvckFsbCgiLnByaWNlIik7Zm9yKHZhciByPTA7cjxyb3dzLmxlbmd0aDtyKyspe3ZhciBsYWI9cm93c1tyXS5xdWVyeVNlbGVjdG9yKCIucHJpY2UtbGFiZWwiKTtpZighbGFiKWNvbnRpbnVlO3ZhciB0PShsYWIudGV4dENvbnRlbnR8fCIiKS5yZXBsYWNlKC9ccysvZywiICIpLnRyaW0oKTtpZigvXuustOujjFxzKu2ajOybkOqwgCQvLnRlc3QodCkpe2lmKHJvd3MubGVuZ3RoPD0xKXtsYWIuc3R5bGUuc2V0UHJvcGVydHkoImRpc3BsYXkiLCJub25lIiwiaW1wb3J0YW50Iik7fWVsc2UgaWYoIWtvKXtsYWIudGV4dENvbnRlbnQ9IlN0YW5kYXJkIjt9fWVsc2UgaWYoIWtvJiYvXuycoOujjFxzKu2ajOybkOqwgCQvLnRlc3QodCkpe2xhYi50ZXh0Q29udGVudD0iTWVtYmVycyI7fX19aWYoa28pcmV0dXJuO3ZhciBlbHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmxhYmVsLC5wcmljZS10ZXh0LC5ibHVlZG90LXByb2R1Y3QtY2FyZCAuYmFkZ2UiKTtmb3IodmFyIGk9MDtpPGVscy5sZW5ndGg7aSsrKXt2YXIgZT1lbHNbaV07aWYoZS5jaGlsZHJlbi5sZW5ndGgpY29udGludWU7dmFyIHM9KGUudGV4dENvbnRlbnR8fCIiKS5yZXBsYWNlKC9ccysvZywiICIpLnRyaW0oKTtpZihNQVBbc10pe2lmKCFlLmdldEF0dHJpYnV0ZSgiZGF0YS1rdGhzaSIpKWUuc2V0QXR0cmlidXRlKCJkYXRhLWt0aHNpIixzKTtlLnRleHRDb250ZW50PU1BUFtzXTt9fX12YXIgdG09bnVsbDtmdW5jdGlvbiBnbygpe2NsZWFyVGltZW91dCh0bSk7dG09c2V0VGltZW91dChydW4sMTIwKX1pZihkb2N1bWVudC5yZWFkeVN0YXRlIT09ImxvYWRpbmciKWdvKCk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsZ28pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixnbyk7dHJ5e25ldyBNdXRhdGlvbk9ic2VydmVyKGdvKS5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx7Y2hpbGRMaXN0OnRydWUsc3VidHJlZTp0cnVlfSl9Y2F0Y2goZSl7fXZhciBuPTAsaXY9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtydW4oKTtpZigrK24+NDApY2xlYXJJbnRlcnZhbChpdil9LDcwMCk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7c2V0VGltZW91dChydW4sMTgwKTtzZXRUaW1lb3V0KHJ1biw3MDApfSx0cnVlKTt9KSgpOzwvc2NyaXB0Pgo8c2NyaXB0IGlkPSJrdGgtbWxzdWIiPihmdW5jdGlvbigpe3ZhciBVPSJodHRwczovL3ByZXZpZXcubWFpbGVybGl0ZS5pby9mb3Jtcy8yNjE2ODc1LzE5NzgxMzA4ODEzMjUzMTI0MC9zaGFyZSI7ZnVuY3Rpb24gZW4oKXt0cnl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJrdGhfbGFuZyIpPT09ImVuIjt9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlfX0KZnVuY3Rpb24gdW5kbygpe3ZhciBsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImFbZGF0YS1rdGhtbF0iKTtmb3IodmFyIGk9MDtpPGwubGVuZ3RoO2krKyl7dmFyIGE9bFtpXTthLnNldEF0dHJpYnV0ZSgiaHJlZiIsYS5nZXRBdHRyaWJ1dGUoImRhdGEta3RobWwiKSk7YS5yZW1vdmVBdHRyaWJ1dGUoImRhdGEta3RobWwiKTthLnJlbW92ZUF0dHJpYnV0ZSgidGFyZ2V0Iik7fX0KZnVuY3Rpb24gZml4KCl7aWYoIWVuKCl8fCFkb2N1bWVudC5ib2R5KXJldHVybjt2YXIgc2Vlbj0wO3ZhciBsaXN0PVtdOwpbXS5wdXNoLmFwcGx5KGxpc3QsZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmt0aC1ubGIgYS5rdGgtbmxiLWZyZWUiKSk7CltdLnB1c2guYXBwbHkobGlzdCxbXS5maWx0ZXIuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJhLmt0aC1zdWItYiIpLGZ1bmN0aW9uKGEpe3ZhciBoPWEuZ2V0QXR0cmlidXRlKCJocmVmIil8fCIiO3JldHVybiBoLmluZGV4T2YoIi9uZXdzbGV0dGVyIik+LTF9KSk7CltdLnB1c2guYXBwbHkobGlzdCxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWYkPSIvbmV3c2xldHRlci8iXSwgYVtocmVmJD0iL25ld3NsZXR0ZXIiXScpKTsKW10ucHVzaC5hcHBseShsaXN0LFtdLmZpbHRlci5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImEua3AtYnRuIiksZnVuY3Rpb24oYSl7cmV0dXJuIC9mcmVlL2kudGVzdChhLnRleHRDb250ZW50fHwiIil9KSk7CmZvcih2YXIgaT0wO2k8bGlzdC5sZW5ndGg7aSsrKXt2YXIgYT1saXN0W2ldO2lmKCFhfHxhLmdldEF0dHJpYnV0ZSgiZGF0YS1rdGhtbCIpKWNvbnRpbnVlO3ZhciBoPWEuZ2V0QXR0cmlidXRlKCJocmVmIil8fCIiO2lmKGguaW5kZXhPZigibWFpbGVybGl0ZSIpPi0xKWNvbnRpbnVlO2lmKGguY2hhckF0KDApPT09IiMiKWNvbnRpbnVlO2lmKC9wYWlkfHByZW1pdW18cGxhbi9pLnRlc3QoYS50ZXh0Q29udGVudHx8IiIpKWNvbnRpbnVlO2Euc2V0QXR0cmlidXRlKCJkYXRhLWt0aG1sIixoKTthLnNldEF0dHJpYnV0ZSgiaHJlZiIsVSk7YS5zZXRBdHRyaWJ1dGUoInRhcmdldCIsIl9ibGFuayIpO2Euc2V0QXR0cmlidXRlKCJyZWwiLCJub29wZW5lciIpO3NlZW4rKzt9CnJldHVybiBzZWVuO30KZnVuY3Rpb24gZ28oKXtmaXgoKTtzZXRUaW1lb3V0KGZpeCw0MDApO3NldFRpbWVvdXQoZml4LDEyMDApO3NldFRpbWVvdXQoZml4LDI1MDApO3RyeXtuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2ZpeCgpfSkub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHtjaGlsZExpc3Q6dHJ1ZSxzdWJ0cmVlOnRydWV9KTt9Y2F0Y2goZSl7fX0KaWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJsb2FkaW5nIilkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixnbyk7ZWxzZSBnbygpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrdGgtbGFuZyIsZ28pO30pKCk7PC9zY3JpcHQ+CjxzY3JpcHQgaWQ9Imt0aC15dGxhenkiPihmdW5jdGlvbigpe3ZhciBQPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTciO3ZhciBkb25lPWZhbHNlLGJvdW5kPWZhbHNlOwpmdW5jdGlvbiBkZWZlcihpbWcpe2lmKGRvbmUpcmV0dXJuO2lmKGltZy5nZXRBdHRyaWJ1dGUoImRhdGEta3RoeXQiKSlyZXR1cm47dmFyIHM9aW1nLmdldEF0dHJpYnV0ZSgic3JjIik7aWYoIXN8fHM9PT1QKXJldHVybjtpZihzLmluZGV4T2YoInl0aW1nIik8MCYmcy5pbmRleE9mKCJnZ3BodCIpPDApcmV0dXJuO2ltZy5zZXRBdHRyaWJ1dGUoImRhdGEta3RoeXQiLHMpO2ltZy5zZXRBdHRyaWJ1dGUoInNyYyIsUCk7aW1nLnNldEF0dHJpYnV0ZSgibG9hZGluZyIsImxhenkiKTtpbWcuc2V0QXR0cmlidXRlKCJkZWNvZGluZyIsImFzeW5jIik7fQpmdW5jdGlvbiBsb2FkKCl7aWYoZG9uZSlyZXR1cm47ZG9uZT10cnVlO3ZhciBsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImltZ1tkYXRhLWt0aHl0XSIpO2Zvcih2YXIgaT0wO2k8bC5sZW5ndGg7aSsrKXt2YXIgYT1sW2ldO2Euc2V0QXR0cmlidXRlKCJzcmMiLGEuZ2V0QXR0cmlidXRlKCJkYXRhLWt0aHl0IikpO2EucmVtb3ZlQXR0cmlidXRlKCJkYXRhLWt0aHl0Iik7fX0KZnVuY3Rpb24gc2Nhbigpe2lmKGRvbmUpcmV0dXJuO3ZhciBsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5rdGgteXQgaW1nLCAua3RoLXl0LXRodW1iIik7Zm9yKHZhciBpPTA7aTxsLmxlbmd0aDtpKyspZGVmZXIobFtpXSk7YmluZCgpO30KZnVuY3Rpb24gYmluZCgpe2lmKGJvdW5kfHxkb25lKXJldHVybjtib3VuZD10cnVlO3ZhciBldj1bInNjcm9sbCIsIndoZWVsIiwidG91Y2hzdGFydCIsInBvaW50ZXJkb3duIiwicG9pbnRlcm1vdmUiLCJrZXlkb3duIl07Zm9yKHZhciBpPTA7aTxldi5sZW5ndGg7aSsrKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldltpXSxsb2FkLHtvbmNlOnRydWUscGFzc2l2ZTp0cnVlLGNhcHR1cmU6dHJ1ZX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZbaV0sbG9hZCx7b25jZTp0cnVlLHBhc3NpdmU6dHJ1ZSxjYXB0dXJlOnRydWV9KTt9CnZhciB3PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5rdGgteXQiKTtpZih3JiYiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiIGluIHdpbmRvdyl7dHJ5e3ZhciBpbz1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZXMpe2Zvcih2YXIgaz0wO2s8ZXMubGVuZ3RoO2srKyl7aWYoZXNba10uaXNJbnRlcnNlY3Rpbmcpe2lvLmRpc2Nvbm5lY3QoKTtsb2FkKCk7cmV0dXJuO319fSx7cm9vdE1hcmdpbjoiODAwcHggMHB4In0pO2lvLm9ic2VydmUodyk7fWNhdGNoKGUpe319CnNldFRpbWVvdXQobG9hZCw2MDAwKTt9CmZ1bmN0aW9uIGdvKCl7aWYoIWRvY3VtZW50LmJvZHkpcmV0dXJuO3NjYW4oKTt0cnl7dmFyIG1vPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7aWYoZG9uZSl7bW8uZGlzY29ubmVjdCgpO3JldHVybjt9c2NhbigpO30pO21vLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7Y2hpbGRMaXN0OnRydWUsc3VidHJlZTp0cnVlLGF0dHJpYnV0ZXM6dHJ1ZSxhdHRyaWJ1dGVGaWx0ZXI6WyJzcmMiXX0pO31jYXRjaChlKXt9c2V0VGltZW91dChzY2FuLDQwMCk7c2V0VGltZW91dChzY2FuLDEyMDApO3NldFRpbWVvdXQoc2NhbiwyNTAwKTt9CmlmKGRvY3VtZW50LnJlYWR5U3RhdGU9PT0ibG9hZGluZyIpZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsZ28pO2Vsc2UgZ28oKTt9KSgpOzwvc2NyaXB0Pgo8c2NyaXB0IGlkPSJrdGgtaW1nYWx0Ij4oZnVuY3Rpb24oKXt2YXIgU0VMPSJpbWc6bm90KFthbHRdKSwgaW1nW2FsdD0nJ10iOwpmdW5jdGlvbiB0eHQoZWwpe2lmKCFlbClyZXR1cm4gIiI7dmFyIHQ9KGVsLmdldEF0dHJpYnV0ZSYmZWwuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIikpfHxlbC5pbm5lclRleHR8fGVsLnRleHRDb250ZW50fHwiIjtyZXR1cm4gdC5yZXBsYWNlKC9ccysvZywiICIpLnRyaW0oKTt9CmZ1bmN0aW9uIGxhYmVsKGltZyl7dmFyIHA9aW1nLnBhcmVudEVsZW1lbnQsaG9wPTAsYmVzdD0iIjt3aGlsZShwJiZob3A8NCl7dmFyIHQ9dHh0KHApO2lmKHQmJnQubGVuZ3RoPjMpe2Jlc3Q9dDticmVhazt9cD1wLnBhcmVudEVsZW1lbnQ7aG9wKys7fQppZighYmVzdCYmaW1nLmNsb3Nlc3Qpe2Jlc3Q9dHh0KGltZy5jbG9zZXN0KCJhIikpO30KaWYoIWJlc3QpcmV0dXJuICIiO2lmKGJlc3QubGVuZ3RoPjEyMCliZXN0PWJlc3Quc2xpY2UoMCwxMTcpKyIuLi4iO3JldHVybiBiZXN0O30KZnVuY3Rpb24gZml4KCl7dmFyIGw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChTRUwpO2Zvcih2YXIgaT0wO2k8bC5sZW5ndGg7aSsrKXt2YXIgaW1nPWxbaV07aWYoaW1nLmdldEF0dHJpYnV0ZSgiZGF0YS1rdGhhbHQiKSljb250aW51ZTt2YXIgcz1sYWJlbChpbWcpO2lmKCFzKWNvbnRpbnVlO2ltZy5zZXRBdHRyaWJ1dGUoImFsdCIscyk7aW1nLnNldEF0dHJpYnV0ZSgiZGF0YS1rdGhhbHQiLCIxIik7fX0KZnVuY3Rpb24gZ28oKXtpZighZG9jdW1lbnQuYm9keSlyZXR1cm47Zml4KCk7dHJ5e25ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Zml4KCk7fSkub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHtjaGlsZExpc3Q6dHJ1ZSxzdWJ0cmVlOnRydWV9KTt9Y2F0Y2goZSl7fXNldFRpbWVvdXQoZml4LDYwMCk7c2V0VGltZW91dChmaXgsMTgwMCk7c2V0VGltZW91dChmaXgsMzUwMCk7fQppZihkb2N1bWVudC5yZWFkeVN0YXRlPT09ImxvYWRpbmciKWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGdvKTtlbHNlIGdvKCk7fSkoKTs8L3NjcmlwdD4KPHNjcmlwdCBpZD0ia3RoLXJlYWR0aW1lIj4oZnVuY3Rpb24oKXsKZnVuY3Rpb24gYm9keSgpe3JldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIubnl0LXBvc3QtY29udGVudCIpfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIucG9zdC1jb250ZW50Iil8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImFydGljbGUiKTt9CmZ1bmN0aW9uIGZpeCgpe3ZhciBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIua3RoLXJlYWQiKTtpZighZWx8fGVsLmdldEF0dHJpYnV0ZSgiZGF0YS1rdGhydCIpKXJldHVybjt2YXIgYz1ib2R5KCk7aWYoIWMpcmV0dXJuOwp2YXIgdD0oYy5pbm5lclRleHR8fCIiKTt2YXIgaGFuPSh0Lm1hdGNoKC9bXHVBQzAwLVx1RDdBM10vZyl8fFtdKS5sZW5ndGg7aWYoaGFuPDIwMClyZXR1cm47CnZhciBjaGFycz10LnJlcGxhY2UoL1xzL2csIiIpLmxlbmd0aDtpZihjaGFyczw1MClyZXR1cm47dmFyIG09TWF0aC5tYXgoMSxNYXRoLnJvdW5kKGNoYXJzLzUwMCkpOwplbC50ZXh0Q29udGVudD1tKyLrtoQg7J296riwIjtlbC5zZXRBdHRyaWJ1dGUoImRhdGEta3RocnQiLCIxIik7CnZhciBuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5ueXQtcG9zdC1yZWFkIik7aWYobiluLnRleHRDb250ZW50PW0rIuu2hCDsnb3quLAiO30KZnVuY3Rpb24gZ28oKXtpZighZG9jdW1lbnQuYm9keSlyZXR1cm47Zml4KCk7c2V0VGltZW91dChmaXgsNzAwKTtzZXRUaW1lb3V0KGZpeCwyMDAwKTtzZXRUaW1lb3V0KGZpeCw0MDAwKTt0cnl7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtmaXgoKTt9KS5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2NoaWxkTGlzdDp0cnVlLHN1YnRyZWU6dHJ1ZX0pO31jYXRjaChlKXt9fQppZihkb2N1bWVudC5yZWFkeVN0YXRlPT09ImxvYWRpbmciKWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGdvKTtlbHNlIGdvKCk7fSkoKTs8L3NjcmlwdD48c3R5bGUgaWQ9Imt0aC1zaWRlLWNzcyI+I3Bvc3Qtc2lkZWJhci5rdGgtc2lkZS1vZmYsYm9keSAjcG9zdC1zaWRlYmFyLnJlYWR5Lmt0aC1zaWRlLW9mZntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQpAbWVkaWEgKG1heC13aWR0aDoxMDk5cHgpe2JvZHkgI3Bvc3Qtc2lkZWJhcixib2R5ICNwb3N0LXNpZGViYXIucmVhZHl7ZGlzcGxheTpub25lIWltcG9ydGFudH19CmJvZHkgLmt0aC1tb3JlLWd7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LG1pbm1heCgwLDFmcikpIWltcG9ydGFudH0KQG1lZGlhIChtYXgtd2lkdGg6MTAyM3B4KXtib2R5IC5rdGgtbW9yZS1ne2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKSFpbXBvcnRhbnR9fQpAbWVkaWEgKG1heC13aWR0aDo2NDBweCl7Ym9keSAua3RoLW1vcmUtZ3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSFpbXBvcnRhbnR9fQpib2R5LnBvc3QtdGVtcGxhdGUgLmt0aC1tb3JlLWd7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpIWltcG9ydGFudH0KQG1lZGlhIChtYXgtd2lkdGg6NjQwcHgpe2JvZHkucG9zdC10ZW1wbGF0ZSAua3RoLW1vcmUtZ3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSFpbXBvcnRhbnR9fQpib2R5IC5rdGgtbW9yZXttYXgtd2lkdGg6MTAwJX0KYm9keSAua3RoLW1vcmUtY3ttaW4td2lkdGg6MDttYXgtd2lkdGg6MTAwJX0KYm9keSAua3RoLW1vcmUtdGh7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJX0KYm9keSAua3RoLW1vcmUtdGggaW1ne3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9PC9zdHlsZT48c2NyaXB0IGlkPSJrdGgtc2lkZS1qcyI+KGZ1bmN0aW9uKCl7dmFyIGVsPW51bGwscmFmPTAsb2ZmPWZhbHNlLGNzMj1udWxsLGNzdD0wLGxhc3RIPTU2MDtmdW5jdGlvbiBzeSgpe3JldHVybiB3aW5kb3cucGFnZVlPZmZzZXR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fDA7fWZ1bmN0aW9uIHN0b3BZKCl7dmFyIG49RGF0ZS5ub3coKTtpZihjczIhPW51bGwmJm4tY3N0PDIwMDApcmV0dXJuIGNzMjt2YXIgYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIua3RoLW1vcmUiKXx8ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnNpdGUtZm9vdGVyIik7aWYoIWMpcmV0dXJuIG51bGw7dmFyIHI9Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjczI9ci50b3Arc3koKTtjc3Q9bjtyZXR1cm4gY3MyO31mdW5jdGlvbiB0aWNrKCl7cmFmPTA7dHJ5e2lmKCFkb2N1bWVudC5ib2R5fHxkb2N1bWVudC5ib2R5LmNsYXNzTmFtZS5pbmRleE9mKCJwb3N0LXRlbXBsYXRlIik8MClyZXR1cm47aWYoIWVsfHwhZWwuaXNDb25uZWN0ZWQpe2VsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3N0LXNpZGViYXIiKTtvZmY9ZmFsc2U7fWlmKCFlbClyZXR1cm47dmFyIHM9c3RvcFkoKTtpZihzPT1udWxsKXJldHVybjt2YXIgaD1lbC5vZmZzZXRIZWlnaHQ7aWYoaD4wKXtsYXN0SD1oO31lbHNle2g9bGFzdEg7fXZhciB3YW50PShzeSgpKzgwK2grMjgpPnM7aWYod2FudCE9PW9mZil7b2ZmPXdhbnQ7ZWwuY2xhc3NMaXN0LnRvZ2dsZSgia3RoLXNpZGUtb2ZmIix3YW50KTt9fWNhdGNoKGUpe319ZnVuY3Rpb24gb24oKXtpZighcmFmKXJhZj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljayk7fWZ1bmN0aW9uIHJlc2V0KCl7Y3MyPW51bGw7b24oKTt9YWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixvbix7cGFzc2l2ZTp0cnVlfSk7YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixyZXNldCx7cGFzc2l2ZTp0cnVlfSk7YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIscmVzZXQpO3NldEludGVydmFsKHJlc2V0LDE1MDApO29uKCk7fSkoKTs8L3NjcmlwdD4=
K-EnterTech Hub

Cross Border Content Studio and news media outlet with entertainment tech, streaming, AI, Metaverse

Quick Links
Home Entertainment Tech AI Streaming/FAST Creator Membership Shop About Sign In
Contact

✉️ existen75@kentertechhub.com

📞 +82-(0)10-3686-8722

🌐 6955 Speedway Blvd, T104,
Las Vegas, NV 89115, USA

K엔터테크허브 (K-EnterTech Hub) 대표: Jung Han 사업자등록번호: 812-83-77424 개인정보보호 책임자: Jung Han

© 2026 K-EnterTech Hub. All rights reserved.