tt_article批量文章管理http://www.tusay.net/批量文章管理批量文章管理,支持查重文章功能,全新支持1.7.1main.phpinclude.php1涂涂研版1216289200@qq.comhttp://www.tusay.net1729001.7.12017-09-222022-01-1905.2
tt_article/article_all.phpPD9waHANCnJlcXVpcmUgJy4uLy4uLy4uL3piX3N5c3RlbS9mdW5jdGlvbi9jX3N5c3RlbV9iYXNlLnBocCc7DQpyZXF1aXJlICcuLi8uLi8uLi96Yl9zeXN0ZW0vZnVuY3Rpb24vY19zeXN0ZW1fYWRtaW4ucGhwJzsNCiR6YnAtPkxvYWQoKTsNCiRhY3Rpb249J3Jvb3QnOw0KaWYgKCEkemJwLT5DaGVja1JpZ2h0cygkYWN0aW9uKSkgeyR6YnAtPlNob3dFcnJvcig2KTtkaWUoKTt9DQppZiAoISR6YnAtPkNoZWNrUGx1Z2luKCd0dF9hcnRpY2xlJykpIHskemJwLT5TaG93RXJyb3IoNDgpO2RpZSgpO30NCiRwb3N0aWQ9R2V0VmFycygicG9zdGlkIiwiUE9TVCIpOw0KJGlkcyA9IHRyaW0oJHBvc3RpZCk7DQovLyRhYmM9anNvbl9lbmNvZGUoJGlkcyk7DQokYXJ0aWNsZXM9ZXhwbG9kZSgnLCcsJGlkcyk7DQoNCg0KJGFjdD1HZXRWYXJzKCJhY3QiLCJHRVQiKTsNCmlmKCRhY3Q9PSJkZWwiKXsNCmZvcmVhY2goJGFydGljbGVzIGFzICRhcnRpY2xlKXsNCiRhPSR6YnAtPkdldFBvc3RCeUlEKCRhcnRpY2xlKTsNCiRhLT5EZWwoKTsNCn0NCmVjaG8ganNvbl9lbmNvZGUoYXJyYXkoJ3MnPT4nb2snKSk7CQ0KfWVsc2VpZigkYWN0PT0iYWxsIil7DQoJDQokY2F0ZWlkPXRyaW0oR2V0VmFycygiY2F0ZWlkIiwiUE9TVCIpKTsNCiRjbWJTdGF0dXM9dHJpbShHZXRWYXJzKCJjbWJTdGF0dXMiLCJQT1NUIikpOw0KJGNtYk1lbT10cmltKEdldFZhcnMoImNtYk1lbSIsIlBPU1QiKSk7DQokY21idG9wPXRyaW0oR2V0VmFycygiY21idG9wIiwiUE9TVCIpKTsNCiRjbWJ0b3Bfc3RhdHVzPXRyaW0oR2V0VmFycygiY21idG9wX3N0YXR1cyIsIlBPU1QiKSk7DQpmb3JlYWNoKCRhcnRpY2xlcyBhcyAkYXJ0aWNsZSl7DQokYT0kemJwLT5HZXRQb3N0QnlJRCgkYXJ0aWNsZSk7DQovL+WIhuexuw0KaWYoJGNhdGVpZCE9Jycpew0KJGEtPkNhdGVJRD0kY2F0ZWlkOwkNCn0NCi8v54q25oCBDQppZigkY21iU3RhdHVzIT0nJyl7DQokYS0+U3RhdHVzPSRjbWJTdGF0dXM7DQp9DQovL+S9nOiAhQ0KaWYoJGNtYk1lbSE9Jycpew0KJGEtPkF1dGhvcklEPSRjbWJNZW07DQp9DQoNCg0KDQppZigkY21idG9wPT0iMSIpew0KJGEtPklzVG9wPTA7DQokYS0+VG9wVHlwZT0nJzsNCn1lbHNlaWYoJGNtYnRvcD09IjIiKXsNCiRhLT5Jc1RvcD0xOw0KJGEtPlRvcFR5cGU9JGNtYnRvcF9zdGF0dXM7CQ0KfQ0KJGEtPlNhdmUoKTsNCg0KfQ0KZWNobyBqc29uX2VuY29kZShhcnJheSgncyc9PidvaycpKTsJDQoJDQp9DQoNCg0KDQoNCj8+
tt_article/com.jsJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7IA0KLy8g5YWo6YCJL+WPlua2iOWFqOmDqCANCiQoIiNjaGVja0FsbENoYW5nZSIpLmNsaWNrKGZ1bmN0aW9uKCkgeyANCmlmICh0aGlzLmNoZWNrZWQgPT0gdHJ1ZSkgeyANCiQoIi5BcnRpY2xlaWQiKS5lYWNoKGZ1bmN0aW9uKCkgeyANCnRoaXMuY2hlY2tlZCA9IHRydWU7IA0KfSk7IA0KfSBlbHNlIHsgDQokKCIuQXJ0aWNsZWlkIikuZWFjaChmdW5jdGlvbigpIHsgDQp0aGlzLmNoZWNrZWQgPSBmYWxzZTsgDQp9KTsgDQp9IA0KfSk7IA0KLy8g5YWo6YCJIA0KJCgiI2NoZWNrQWxsIikuY2xpY2soZnVuY3Rpb24oKSB7IA0KJCgiLkFydGljbGVpZCIpLmVhY2goZnVuY3Rpb24oKSB7IA0KdGhpcy5jaGVja2VkID0gdHJ1ZTsgDQp9KTsgDQp9KTsgDQovLyDlj5bmtojlhajpg6ggDQokKCIjcmVtb3ZlQWxsIikuY2xpY2soZnVuY3Rpb24oKSB7IA0KJCgiLkFydGljbGVpZCIpLmVhY2goZnVuY3Rpb24oKSB7IA0KdGhpcy5jaGVja2VkID0gZmFsc2U7IA0KfSk7IA0KfSk7IA0KLy8g5Y+N6YCJIA0KJCgiI3JldmVyc2UiKS5jbGljayhmdW5jdGlvbigpIHsgDQokKCIuQXJ0aWNsZWlkIikuZWFjaChmdW5jdGlvbigpIHsgDQppZiAodGhpcy5jaGVja2VkID09IHRydWUpIHsgDQp0aGlzLmNoZWNrZWQgPSBmYWxzZTsgDQp9IGVsc2UgeyANCnRoaXMuY2hlY2tlZCA9IHRydWU7IA0KfSANCn0pIA0KfSk7IA0KLy/mibnph4/liKDpmaQgDQokKCIjZGVsQWxsIikuY2xpY2soZnVuY3Rpb24oKSB7IA0KICB2YXIgaWRzID0gJyc7DQogICQoIi5BcnRpY2xlaWQiKS5lYWNoKGZ1bmN0aW9uKCkgew0KICAgIGlmICgkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpKSB7DQogICAgICBpZHMgKz0gJywnICsgJCh0aGlzKS52YWwoKTsgLy/pgJDkuKrojrflj5ZpZA0KICAgIH0NCiAgfSk7DQogIGlkcyA9IGlkcy5zdWJzdHJpbmcoMSk7IC8vIOWvuWlk6L+b6KGM5aSE55CG77yM5Y676Zmk56ys5LiA5Liq6YCX5Y+3DQogIGlmIChpZHMubGVuZ3RoID09IDApIHsNCiAgICBhbGVydCgn6K+36YCJ5oup6KaB5Yig6Zmk55qE5paH56ug6YCJ6aG5Jyk7DQogIH0gZWxzZSB7DQogICAgaWYgKGNvbmZpcm0oIuehruWumuWIoOmZpO+8n+WIoOmZpOWQjuWwhuaXoOazleaBouWkjeOAgiIpKSB7DQogICAgIA0KCQkkLmFqYXgoew0KCQl0eXBlOidwb3N0JywNCgkJYXN5bmM6dHJ1ZSwNCgkJdXJsOmJsb2dob3N0ICsgInpiX3VzZXJzL3BsdWdpbi90dF9hcnRpY2xlL2FydGljbGVfYWxsLnBocD9hY3Q9ZGVsJiIrbmV3IERhdGUoKSwNCgkJZGF0YTp7DQoJCXBvc3RpZDppZHMNCgkJfSwNCgkJZGF0YVR5cGU6J2pzb24nLA0KCQlzdWNjZXNzOmZ1bmN0aW9uKGRhdGEpew0KCQkJaWYoZGF0YS5zPSJvayIpew0KCQkJICQoIi5BcnRpY2xlaWQiKS5lYWNoKGZ1bmN0aW9uKCkgew0KCQkJCWlmICgkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpKSB7DQoJCQkJICAkKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLnJlbW92ZSgpOyAvL+mAkOS4quWIoOmZpA0KCQkJCX0NCgkJCSAgfSk7DQoJCQkgIGFsZXJ0KCfliKDpmaTmiJDlip8nKTsgCQ0KCQkJfQ0KCQl9LA0KCQllcnJvcjpmdW5jdGlvbihkYXRhKXsNCgkJICAgYWxlcnQoIuWksei0pe+8gSIpOyAgIA0KICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7DQoJCX0NCgkJfSk7CSAgDQoJICANCgkgIA0KICAgIH0NCiAgfQ0KDQoNCg0KDQp9KTsgDQovL+aJuemHj+abtOaUueWIhuexu+OAgeeKtuaAgeOAgeS9nOiAheOAgee9rumhtg0KJCgiI3R0X2FydGljbGVfQWxsIikuY2xpY2soZnVuY3Rpb24oKSB7IA0KICB2YXIgaWRzID0gJyc7DQogIHZhciBjYXRlaWQgPSAkKCIjY21iQ2F0ZUlEIikudmFsKCk7Ly/liIbnsbsNCiAgdmFyIGNtYlN0YXR1cyA9ICQoIiNjbWJTdGF0dXMiKS52YWwoKTsvL+eKtuaAgQ0KICB2YXIgY21iTWVtID0gJCgiI2NtYk1lbSIpLnZhbCgpOy8v5L2c6ICFDQogIHZhciBjbWJ0b3AgPSAkKCIjY21iSXNUb3AiKS52YWwoKTsvL+aYr+WQpue9rumhtg0KICB2YXIgY21idG9wX3N0YXR1cyA9ICQoIiNjbWJ0b3Bfc3RhdHVzIikudmFsKCk7Ly/nva7pobbnsbvlnosNCiAgJCgiLkFydGljbGVpZCIpLmVhY2goZnVuY3Rpb24oKSB7DQogICAgaWYgKCQodGhpcykuaXMoJzpjaGVja2VkJykpIHsNCiAgICAgIGlkcyArPSAnLCcgKyAkKHRoaXMpLnZhbCgpOyAvL+mAkOS4quiOt+WPlmlkDQogICAgfQ0KICB9KTsNCiAgaWRzID0gaWRzLnN1YnN0cmluZygxKTsgLy8g5a+5aWTov5vooYzlpITnkIbvvIzljrvpmaTnrKzkuIDkuKrpgJflj7cNCiAgaWYgKGlkcy5sZW5ndGggPT0gMCkgew0KICAgIGFsZXJ0KCfor7fpgInmi6nopoHmm7TmlLnnmoTmlofnq6DpgInpobknKTsNCiAgfSBlbHNlIHsNCiAgICBpZiAoY29uZmlybSgi56Gu5a6a5pu05pS55LmI77yfIikpIHsNCiAgICAgDQoJCSQuYWpheCh7DQoJCXR5cGU6J3Bvc3QnLA0KCQlhc3luYzp0cnVlLA0KCQl1cmw6YmxvZ2hvc3QgKyAiemJfdXNlcnMvcGx1Z2luL3R0X2FydGljbGUvYXJ0aWNsZV9hbGwucGhwP2FjdD1hbGwmIituZXcgRGF0ZSgpLA0KCQlkYXRhOnsNCgkJcG9zdGlkOmlkcywNCgkJY2F0ZWlkOmNhdGVpZCwNCgkJY21iU3RhdHVzOmNtYlN0YXR1cywNCgkJY21iTWVtOmNtYk1lbSwNCgkJY21idG9wOmNtYnRvcCwNCgkJY21idG9wX3N0YXR1czpjbWJ0b3Bfc3RhdHVzLA0KCQl9LA0KCQlkYXRhVHlwZTonanNvbicsDQoJCXN1Y2Nlc3M6ZnVuY3Rpb24oZGF0YSl7DQoJCQlpZihkYXRhLnM9Im9rIil7DQoJCQlhbGVydCgn5pu05pS55oiQ5YqfJyk7IAkNCgkJCS8vbG9jYXRpb24uaHJlZiA9IGJsb2dob3N0Kyd6Yl91c2Vycy9wbHVnaW4vdHRfYXJ0aWNsZS90dF9hcnRpY2xlX0FydGljbGVNbmcucGhwJzsNCgkJCWxvY2F0aW9uLmhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsNCgkJCX0JICANCgkJfSwNCgkJZXJyb3I6ZnVuY3Rpb24oZGF0YSl7DQoJCSAgIGFsZXJ0KCLmm7TmlLnlpLHotKXvvIEiKTsNCiAgICAgICAgICAvLyBsb2NhdGlvbi5ocmVmID0gYmxvZ2hvc3QrJ3piX3VzZXJzL3BsdWdpbi90dF9hcnRpY2xlL3R0X2FydGljbGVfQXJ0aWNsZU1uZy5waHAnOwkJICAgDQogICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsJCSAgIA0KCQl9DQoJCX0pOwkgIA0KCSAgDQoJICANCiAgICB9DQogIH0NCg0KDQoNCg0KfSk7IA0KfSk7IA0KZnVuY3Rpb24gZ2V0U2Nyb2xsVG9wKCl7DQogICAgdmFyIHNjcm9sbFRvcDsNCiAgICBpZih0eXBlb2Ygd2luZG93LnBhZ2VZT2Zmc2V0ICE9ICd1bmRlZmluZWQnKXsgICAgICAgICAgICAgLy9wYWdlWU9mZnNldOaMh+eahOaYr+a7muWKqOadoemhtumDqOWIsOe9kemhtemhtumDqOeahOi3neemuw0KICAgICAgICBzY3JvbGxUb3AgPSB3aW5kb3cucGFnZVlPZmZzZXQ7DQogICAgfWVsc2UgaWYodHlwZW9mIGRvY3VtZW50LmNvbXBhdE1vZGUgIT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuY29tcGF0TW9kZSAhPSAnQmFja0NvbXBhdCcpICAgICAgICB7DQogICAgICAgIHNjcm9sbFRvcCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7DQogICAgfWVsc2UgaWYodHlwZW9mIGRvY3VtZW50LmJvZHkgIT0gJ3VuZGVmaW5lZCcpew0KICAgICAgICBzY3JvbGxUb3AgPSBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDsNCiAgICB9DQogICAgcmV0dXJuIHNjcm9sbFRvcDsNCn0NCihmdW5jdGlvbigpIHsNCgl2YXIgb0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0dF9hcnRpY2xlX2JvIik7DQoJdmFyIEggPSAyNjAsDQoJaUU2Ow0KCXZhciBZID0gb0RpdjsNCgl3aGlsZSAoWSkgew0KCQlIICs9IFkub2Zmc2V0VG9wOw0KCQlZID0gWS5vZmZzZXRQYXJlbnQNCgl9Ow0KCWlFNiA9IHdpbmRvdy5BY3RpdmVYT2JqZWN0ICYmICF3aW5kb3cuWE1MSHR0cFJlcXVlc3Q7DQoJaWYgKCFpRTYpIHsNCgkJd2luZG93Lm9uc2Nyb2xsID0gZnVuY3Rpb24oKSB7DQoJCQl2YXIgcyA9IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7DQoJCQlpZiAocyA+IEgpIHsNCgkJCQkvL29EaXYuY2xhc3NOYW1lID0gInR0X2FydGljbGVfYm8gZml4ZWQiOw0KCQkJCSAkKCIjdHRfYXJ0aWNsZV9ibyIpLmFkZENsYXNzKCJmaXhlZF9hY3QiKTsNCgkJCQlpZiAoaUU2KSB7DQoJCQkJCW9EaXYuc3R5bGUudG9wID0gKHMgLSBIKSArICJweCINCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCSQoIiN0dF9hcnRpY2xlX2JvIikucmVtb3ZlQ2xhc3MoImZpeGVkX2FjdCIpOw0KCQkJfQ0KCQl9DQoJfQ0KfSkoKTsNCg==
tt_article/function.phpPD9waHANCmZ1bmN0aW9uIHR0X2FydGljbGVfRmlsdGVyX1BsdWdpbl9BZG1pbl9CZWdpbigpew0KZ2xvYmFsICR6YnA7DQoNCmlmKCR6YnAtPnVzZXItPkxldmVsPT0xKXsNCgkkYWN0aW9uID0gR2V0VmFycygnYWN0JywgJ0dFVCcpOw0KCWlmKCRhY3Rpb249PSdBcnRpY2xlTW5nJyl7DQoJUmVkaXJlY3QoJHpicC0+aG9zdC4nemJfdXNlcnMvcGx1Z2luL3R0X2FydGljbGUvdHRfYXJ0aWNsZV9BcnRpY2xlTW5nLnBocCcpOw0KCX0NCn0NCg0KfQ0KZnVuY3Rpb24gdHRfYXJ0aWNsZV9BZG1pbl9BcnRpY2xlTW5nKCkNCnsNCiAgICBnbG9iYWwgJHpicDsNCmdsb2JhbCAkemJwOw0KZWNobyAnPHN0eWxlPg0KLnR0X2FydGljbGVfZGl2ew0KICAgZmxvYXQ6cmlnaHQ7DQogICAgZm9udC1zaXplOiAxNnB4Ow0KfQ0KLnR0X2FydGljbGVfZGl2IGF7DQoNCiAgIA0KICAgIGNvbG9yOiAjZmZmIWltcG9ydGFudDsNCn0NCi5TdWJNZW51e2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fQ0KPC9zdHlsZT4nOw0KZWNobyAnPHNjcmlwdCBzcmM9IicuJHpicC0+aG9zdC4nemJfdXNlcnMvcGx1Z2luL3R0X2FydGljbGUvY29tLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pic7DQogICAgZWNobyAnPGRpdiBjbGFzcz0iZGl2SGVhZGVyIj7mibnph4/mlofnq6DnrqHnkIY8L2Rpdj4nOw0KICAgIGVjaG8gJzxkaXYgY2xhc3M9IlN1Yk1lbnUiPg0KCScudHRfYXJ0aWNsZV9TdWJNZW51KDEpLicnOw0KCQ0KICAgIGZvcmVhY2ggKCRHTE9CQUxTWydob29rcyddWydGaWx0ZXJfUGx1Z2luX0FkbWluX0FydGljbGVNbmdfU3ViTWVudSddIGFzICRmcG5hbWUgPT4gJiRmcHNpZ25hbCkgew0KICAgICAgICAkZnBuYW1lKCk7DQogICAgfQ0KICAgIGVjaG8gJzwvZGl2Pic7DQoJZWNobyAnPHN0eWxlPg0KCS50dF9hcnRpY2xlX2JvIHsNCiAgICBvdmVyZmxvdzogaGlkZGVuOw0KICAgIGJhY2tncm91bmQ6ICMzYTZlYTU7DQogICAgY29sb3I6IHdoaXRlOw0KCQ0KfQ0KDQoJLnR0X2FydGljbGVfYm8gbGl7ZmxvYXQ6bGVmdDtwYWRkaW5nOiAwIDVweDsgICAgbWFyZ2luOiA1cHggMDsNCgl9DQoJaW5wdXQjZGVsQWxsLGlucHV0I3R0X2FydGljbGVfQWxsew0KICAgIGhlaWdodDogMzNweDsNCiAgICBwYWRkaW5nOiA1cHggMTBweDsgICAgYm9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjsNCn0NCiNjbWJJc1RvcHttYXJnaW4tcmlnaHQ6MTBweH0NCi5maXhlZF9hY3R7cG9zaXRpb246IGZpeGVkOw0KICAgIHRvcDogMDsNCiAgICB3aWR0aDogMTAwJTsNCiAgICB6LWluZGV4OiA5OTk5OTt9DQoJDQoJPC9zdHlsZT4nOw0KCQkNCgllY2hvICc8ZGl2IGNsYXNzPSJ0dF9hcnRpY2xlX2JvIiBpZD0idHRfYXJ0aWNsZV9ibyI+JzsNCgkNCiAgICBlY2hvJzxsaT7liIbnsbvvvJo8c2VsZWN0IHN0eWxlPSJ3aWR0aDoxNDBweDsiIGNsYXNzPSJlZGl0IiBzaXplPSIxIiBpZD0iY21iQ2F0ZUlEIj48b3B0aW9uIHZhbHVlPSIiPuS7u+aEjzwvb3B0aW9uPicuT3V0cHV0T3B0aW9uSXRlbXNPZkNhdGVnb3JpZXMoJzk5OTk5JykuJzwvc2VsZWN0PjwvdGg+JzsNCgkgZWNobyc8bGk+572u6aG277yaPHNlbGVjdCBzdHlsZT0id2lkdGg6MTAwcHg7IiBjbGFzcz0iZWRpdCIgc2l6ZT0iMSIgaWQ9ImNtYklzVG9wIj48b3B0aW9uIHZhbHVlPSIiPuS7u+aEjzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IjEiPuS4jee9rumhtjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IjIiPue9rumhtjwvb3B0aW9uPjwvc2VsZWN0PjxzZWxlY3Qgc3R5bGU9IndpZHRoOjEwMHB4OyIgY2xhc3M9ImVkaXQiIHNpemU9IjEiIGlkPSJjbWJ0b3Bfc3RhdHVzIj48b3B0aW9uIHZhbHVlPSJpbmRleCI+6aaW6aG1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZ2xvYmFsIj7lhajlsYA8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjYXRlZ29yeSI+5YiG57G7PC9vcHRpb24+PC9zZWxlY3Q+PC90aD4nOw0KCWVjaG8nPGxpPuexu+Wei++8mjxzZWxlY3Qgc3R5bGU9IndpZHRoOjE0MHB4OyIgY2xhc3M9ImVkaXQiIHNpemU9IjEiIGlkPSJjbWJTdGF0dXMiPjxvcHRpb24gdmFsdWU9IiI+5Lu75oSPPC9vcHRpb24+Jy5PdXRwdXRPcHRpb25JdGVtc09mUG9zdFN0YXR1cygnNScpLic8L3NlbGVjdD48L3RoPic7DQoJZWNobyc8bGk+5L2c6ICF77yaPHNlbGVjdCBzdHlsZT0id2lkdGg6MTQwcHg7bWFyZ2luLXJpZ2h0OjEwcHgiIGNsYXNzPSJlZGl0IiBzaXplPSIxIiBpZD0iY21iTWVtIj48b3B0aW9uIHZhbHVlPSIiPuS7u+aEjzwvb3B0aW9uPicuT3V0cHV0T3B0aW9uSXRlbXNPZk1lbWJlcignOTk5OTknKS4nPC9zZWxlY3Q+PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IuaJuemHj+aJp+ihjOabtOaUuSIgaWQ9InR0X2FydGljbGVfQWxsIj48L3RoPic7DQogICAgZWNobyc8bGk+PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IuaJuemHj+WIoOmZpCIgaWQ9ImRlbEFsbCI+PC9saT4nOy8vb2sNCgkNCiAgICBlY2hvJzxsaT48L2xpPic7DQoJDQoJZWNobyAnPC9kaXY+JzsNCgkNCiAgICBlY2hvICc8ZGl2IGlkPSJkaXZNYWluMiI+JzsNCgkNCg0KCQ0KICAgIGVjaG8gJzxmb3JtIGNsYXNzPSJzZWFyY2giIGlkPSJzZWFyY2giIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIjIj4nOw0KDQogICAgZWNobyAnPHA+JyAuICR6YnAtPmxhbmdbJ21zZyddWydzZWFyY2gnXSAuICc6Jm5ic3A7Jm5ic3A7JyAuICR6YnAtPmxhbmdbJ21zZyddWydjYXRlZ29yeSddIC4gJyA8c2VsZWN0IGNsYXNzPSJlZGl0IiBzaXplPSIxIiBuYW1lPSJjYXRlZ29yeSIgc3R5bGU9IndpZHRoOjE0MHB4OyIgPjxvcHRpb24gdmFsdWU9IiI+JyAuICR6YnAtPmxhbmdbJ21zZyddWydhbnknXSAuICc8L29wdGlvbj4nOw0KICAgIGZvcmVhY2ggKCR6YnAtPmNhdGVnb3JpZXNieW9yZGVyIGFzICRpZCA9PiAkY2F0ZSkgew0KICAgICAgICBlY2hvICc8b3B0aW9uIHZhbHVlPSInIC4gJGNhdGUtPklEIC4gJyI+JyAuICRjYXRlLT5TeW1ib2xOYW1lIC4gJzwvb3B0aW9uPic7DQogICAgfQ0KICAgIGVjaG8gJzwvc2VsZWN0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgLiAkemJwLT5sYW5nWydtc2cnXVsndHlwZSddIC4gJyA8c2VsZWN0IGNsYXNzPSJlZGl0IiBzaXplPSIxIiBuYW1lPSJzdGF0dXMiIHN0eWxlPSJ3aWR0aDoxMDBweDsiID48b3B0aW9uIHZhbHVlPSIiPicgLiAkemJwLT5sYW5nWydtc2cnXVsnYW55J10gLiAnPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IjAiID4nIC4gJHpicC0+bGFuZ1sncG9zdF9zdGF0dXNfbmFtZSddWycwJ10gLiAnPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iMSIgPicgLiAkemJwLT5sYW5nWydwb3N0X3N0YXR1c19uYW1lJ11bJzEnXSAuICc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSIyIiA+JyAuICR6YnAtPmxhbmdbJ3Bvc3Rfc3RhdHVzX25hbWUnXVsnMiddIC4gJzwvb3B0aW9uPjwvc2VsZWN0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImlzdG9wIiB2YWx1ZT0iVHJ1ZSIvPiZuYnNwOycgLiAkemJwLT5sYW5nWydtc2cnXVsndG9wJ10gLiAnPC9sYWJlbD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICA8aW5wdXQgbmFtZT0ic2VhcmNoIiBzdHlsZT0id2lkdGg6MjUwcHg7IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iIiAvPiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0iYnV0dG9uIiB2YWx1ZT0iJyAuICR6YnAtPmxhbmdbJ21zZyddWydzdWJtaXQnXSAuICciLz48L3A+JzsNCiAgICBlY2hvICc8L2Zvcm0+JzsNCg0KICAgICRzZWFyY2ggPSBHZXRWYXJzKCdzZWFyY2gnKTsNCiAgICAkb3JkZXJfZ2V0ID0gR2V0VmFycygnb3JkZXInLCAnR0VUJyk7DQoNCiAgIC8vICRwID0gbmV3IFBhZ2ViYXIoJ3slaG9zdCV9emJfc3lzdGVtL2NtZC5waHA/YWN0PUFydGljbGVNbmd7JnN0YXR1cz0lc3RhdHVzJX17JmlzdG9wPSVpc3RvcCV9eyZjYXRlZ29yeT0lY2F0ZWdvcnklfXsmc2VhcmNoPSVzZWFyY2glfXsmb3JkZXI9JW9yZGVyJX17JnBhZ2U9JXBhZ2UlfScsIGZhbHNlKTsNCgkkcCA9IG5ldyBQYWdlYmFyKCd7JWhvc3QlfXpiX3VzZXJzL3BsdWdpbi90dF9hcnRpY2xlL3R0X2FydGljbGVfQXJ0aWNsZU1uZy5waHA/eyZwYWdlPSVwYWdlJX17JnN0YXR1cz0lc3RhdHVzJX17JmlzdG9wPSVpc3RvcCV9eyZjYXRlZ29yeT0lY2F0ZWdvcnklfXsmc2VhcmNoPSVzZWFyY2glfXsmb3JkZXI9JW9yZGVyJX0nLCBmYWxzZSk7DQogICAvLyAkcC0+UGFnZUNvdW50ID0gJHpicC0+bWFuYWdlY291bnQ7DQoJJHAtPlBhZ2VDb3VudCA9ICR6YnAtPkNvbmZpZygndHRfYXJ0aWNsZScpLT5udW07DQogICAgJHAtPlBhZ2VOb3cgPSAoaW50KSBHZXRWYXJzKCdwYWdlJywgJ0dFVCcpID09IDAgPyAxIDogKGludCkgR2V0VmFycygncGFnZScsICdHRVQnKTsNCiAgICBpZiAoR2V0VmFycygnc2VhcmNoJykgIT09IEdldFZhcnMoJ3NlYXJjaCcsICdHRVQnKSkgew0KICAgICAgICAkcC0+UGFnZU5vdyA9IDE7DQogICAgfQ0KICAgICRwLT5QYWdlQmFyQ291bnQgPSAkemJwLT5wYWdlYmFyY291bnQ7DQoNCiAgICAkcC0+VXJsUnVsZS0+UnVsZXNbJ3slY2F0ZWdvcnklfSddID0gR2V0VmFycygnY2F0ZWdvcnknKTsNCiAgICAkcC0+VXJsUnVsZS0+UnVsZXNbJ3slc2VhcmNoJX0nXSA9IHJhd3VybGVuY29kZSgkc2VhcmNoKTsNCiAgICAkcC0+VXJsUnVsZS0+UnVsZXNbJ3slc3RhdHVzJX0nXSA9IEdldFZhcnMoJ3N0YXR1cycpOw0KICAgICRwLT5VcmxSdWxlLT5SdWxlc1sneyVpc3RvcCV9J10gPSAoYm9vbCkgR2V0VmFycygnaXN0b3AnKTsNCiAgICAkcC0+VXJsUnVsZS0+UnVsZXNbJ3slb3JkZXIlfSddID0gJG9yZGVyX2dldDsNCg0KICAgICR3ID0gYXJyYXkoKTsNCiAgICAkd1tdID0gYXJyYXkoJz0nLCAnbG9nX1R5cGUnLCAwKTsNCg0KICAgIGlmICghJHpicC0+Q2hlY2tSaWdodHMoJ0FydGljbGVBbGwnKSkgew0KICAgICAgICAkd1tdID0gYXJyYXkoJz0nLCAnbG9nX0F1dGhvcklEJywgJHpicC0+dXNlci0+SUQpOw0KICAgIH0NCiAgICBpZiAoR2V0VmFycygnc2VhcmNoJykpIHsNCiAgICAgICAgJHdbXSA9IGFycmF5KCdzZWFyY2gnLCAnbG9nX0NvbnRlbnQnLCAnbG9nX0ludHJvJywgJ2xvZ19UaXRsZScsICRzZWFyY2gpOw0KICAgIH0NCiAgICBpZiAoR2V0VmFycygnaXN0b3AnKSkgew0KICAgICAgICAkd1tdID0gYXJyYXkoJzw+JywgJ2xvZ19Jc3RvcCcsICcwJyk7DQogICAgfQ0KICAgIGlmIChHZXRWYXJzKCdzdGF0dXMnKSAhPT0gbnVsbCAmJiBHZXRWYXJzKCdzdGF0dXMnKSAhPT0gJycpIHsNCiAgICAgICAgJHdbXSA9IGFycmF5KCc9JywgJ2xvZ19TdGF0dXMnLCAoaW50KSBHZXRWYXJzKCdzdGF0dXMnKSk7DQogICAgfQ0KICAgIGlmIChHZXRWYXJzKCdjYXRlZ29yeScpKSB7DQogICAgICAgICR3W10gPSBhcnJheSgnPScsICdsb2dfQ2F0ZUlEJywgR2V0VmFycygnY2F0ZWdvcnknKSk7DQogICAgfQ0KDQogICAgJHMgPSAnJzsNCg0KDQoNCg0KICAgIGlmICgkb3JkZXJfZ2V0ID09ICdpZF9kZXNjJykgew0KICAgICAgICAkb3IgPSBhcnJheSgnbG9nX0lEJyA9PiAnREVTQycpOw0KICAgIH0gZWxzZWlmICgkb3JkZXJfZ2V0ID09ICdpZF9hc2MnKSB7DQogICAgICAgICRvciA9IGFycmF5KCdsb2dfSUQnID0+ICdBU0MnKTsNCiAgICB9IGVsc2VpZiAoJG9yZGVyX2dldCA9PSAnY2F0ZWlkX2Rlc2MnKSB7DQogICAgICAgICRvciA9IGFycmF5KCdsb2dfQ2F0ZUlEJyA9PiAnREVTQycpOw0KICAgIH0gZWxzZWlmICgkb3JkZXJfZ2V0ID09ICdjYXRlaWRfYXNjJykgew0KICAgICAgICAkb3IgPSBhcnJheSgnbG9nX0NhdGVJRCcgPT4gJ0FTQycpOw0KICAgIH0gZWxzZWlmICgkb3JkZXJfZ2V0ID09ICdhdXRob3JpZF9kZXNjJykgew0KICAgICAgICAkb3IgPSBhcnJheSgnbG9nX0F1dGhvcklEJyA9PiAnREVTQycpOw0KICAgIH0gZWxzZWlmICgkb3JkZXJfZ2V0ID09ICdhdXRob3JpZF9hc2MnKSB7DQogICAgICAgICRvciA9IGFycmF5KCdsb2dfQXV0aG9ySUQnID0+ICdBU0MnKTsNCiAgICB9IGVsc2VpZiAoJG9yZGVyX2dldCA9PSAncG9zdHRpbWVfZGVzYycpIHsNCiAgICAgICAgJG9yID0gYXJyYXkoJ2xvZ19Qb3N0VGltZScgPT4gJ0RFU0MnKTsNCiAgICB9IGVsc2VpZiAoJG9yZGVyX2dldCA9PSAncG9zdHRpbWVfYXNjJykgew0KICAgICAgICAkb3IgPSBhcnJheSgnbG9nX1Bvc3RUaW1lJyA9PiAnQVNDJyk7DQogICAgfSBlbHNlaWYgKCRvcmRlcl9nZXQgPT0gJ3VwZGF0ZXRpbWVfZGVzYycpIHsNCiAgICAgICAgJG9yID0gYXJyYXkoJ2xvZ19VcGRhdGVUaW1lJyA9PiAnREVTQycpOw0KICAgIH0gZWxzZWlmICgkb3JkZXJfZ2V0ID09ICd1cGRhdGV0aW1lX2FzYycpIHsNCiAgICAgICAgJG9yID0gYXJyYXkoJ2xvZ19VcGRhdGVUaW1lJyA9PiAnQVNDJyk7DQogICAgfSBlbHNlIHsNCgkJLy/mj5LmiYvmjpLluo8NCiAgICAgICAgJG9yID0gYXJyYXkoJHpicC0+bWFuYWdlb3JkZXIgPT4gJ0RFU0MnKTsNCgkJaWYoJHpicC0+Q29uZmlnKCd0dF9hcnRpY2xlJyktPm9yZGVyPT0yKXsJDQoJCSAkb3IgPSBhcnJheSgnbG9nX0lEJyA9PiAnQVNDJyk7DQoJCX1lbHNlaWYoJHpicC0+Q29uZmlnKCd0dF9hcnRpY2xlJyktPm9yZGVyPT0zKXsNCgkJICRvciA9IGFycmF5KCdsb2dfSUQnID0+ICdERVNDJyk7CQ0KCQl9DQogICAgfQ0KICAgICRsID0gYXJyYXkoKCRwLT5QYWdlTm93IC0gMSkgKiAkcC0+UGFnZUNvdW50LCAkcC0+UGFnZUNvdW50KTsNCiAgICAkb3AgPSBhcnJheSgncGFnZWJhcicgPT4gJHApOw0KDQogICAgJHR5cGUgPSBudWxsOw0KDQogICAgLy8xLjfmlrDliqDlhaXnmoTmjqXlj6MNCiAgICBmb3JlYWNoICgkR0xPQkFMU1snaG9va3MnXVsnRmlsdGVyX1BsdWdpbl9BZG1pbl9BcnRpY2xlTW5nX0NvcmUnXSBhcyAkZnBuYW1lID0+ICYkZnBzaWduYWwpIHsNCiAgICAgICAgJGZwcmV0dXJuID0gJGZwbmFtZSgkcywgJHcsICRvciwgJGwsICRvcCk7DQogICAgfQ0KDQogICAgZm9yZWFjaCAoJEdMT0JBTFNbJ2hvb2tzJ11bJ0ZpbHRlcl9QbHVnaW5fTGFyZ2VEYXRhX0FydGljbGUnXSBhcyAkZnBuYW1lID0+ICYkZnBzaWduYWwpIHsNCiAgICAgICAgJGZwcmV0dXJuID0gJGZwbmFtZSgkcywgJHcsICRvciwgJGwsICRvcCwgJHR5cGUpOw0KICAgIH0NCg0KICAgICRhcnJheSA9ICR6YnAtPkdldFBvc3RMaXN0KA0KICAgICAgICAkcywNCiAgICAgICAgJHcsDQogICAgICAgICRvciwNCiAgICAgICAgJGwsDQogICAgICAgICRvcA0KICAgICk7DQoNCiAgICBlY2hvICc8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iJyAuICR6YnAtPmhvc3QgLiAnemJfc3lzdGVtL2NtZC5waHA/YWN0PVBvc3RCYXQmdHlwZT0nIC4gWkNfUE9TVF9UWVBFX0FSVElDTEUgLiAnIj4nOw0KICAgIGVjaG8gJzx0YWJsZSBib3JkZXI9IjEiIGNsYXNzPSJ0YWJsZUZ1bGwgdGFibGVCb3JkZXIgdGFibGVfaG92ZXIgdGFibGVfc3RyaXBlZCB0YWJsZUJvcmRlci10aGNlbnRlciI+JzsNCgllY2hvICc8dHI+JzsNCiAgICBlY2hvJzx0aCBjbGFzcz0idGRDZW50ZXIiPjxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJjaGVja0FsbCIgdmFsdWU9IuWFqOmAiSIgLz48L3RoPic7DQogICAgZWNobyc8dGg+PGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9InJlbW92ZUFsbCIgdmFsdWU9IuWPlua2iOWFqOmDqCIgLz48L3RoPic7DQogICAgZWNobyc8dGg+PGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9InJldmVyc2UiIHZhbHVlPSLlj43pgIkiIC8+PC90aD4nOw0KICAgIGVjaG8nPHRoPjwvdGg+JzsNCiAgICBlY2hvJzx0aD48L3RoPic7DQoJIGVjaG8nPHRoPjwvdGg+JzsNCglpZigkemJwLT5Db25maWcoJ3R0X2FydGljbGUnKS0+dmlldz09IjEiKXsNCgkJICR0YWJsZXRoc1tdID0gJzx0aD48L3RoPic7DQoJfQ0KICAgIGVjaG8nPHRoPjwvdGg+JzsNCiAgICBlY2hvJzx0aD48L3RoPic7DQogICAgZWNobyc8dGg+PC90aD4nOw0KCWlmICgkemJwLT5DaGVja1JpZ2h0cygnUG9zdEJhdCcpICYmICR6YnAtPm9wdGlvblsnWkNfUE9TVF9CQVRDSF9ERUxFVEUnXSkgew0KCWVjaG8nPHRoPjwvdGg+JzsNCgl9DQogICAvLyBlY2hvJzx0aD48L3RoPic7DQogICAvLyBlY2hvJzx0aD48L3RoPic7DQogICAgZWNobyc8L3RyPic7DQogICAgbGlzdCgkYnV0dG9uX2lkX2h0bWwpID0gTWFrZU9yZGVyQnV0dG9uKCdpZCcsICRwLT5VcmxSdWxlLCAkb3JkZXJfZ2V0KTsNCiAgICBsaXN0KCRidXR0b25fcG9zdHRpbWVfaHRtbCkgPSBNYWtlT3JkZXJCdXR0b24oJ3Bvc3R0aW1lJywgJHAtPlVybFJ1bGUsICRvcmRlcl9nZXQpOw0KICAgIGxpc3QoJGJ1dHRvbl9jYXRlaWRfaHRtbCkgPSBNYWtlT3JkZXJCdXR0b24oJ2NhdGVpZCcsICRwLT5VcmxSdWxlLCAkb3JkZXJfZ2V0KTsNCiAgICBsaXN0KCRidXR0b25fYXV0aG9yaWRfaHRtbCkgPSBNYWtlT3JkZXJCdXR0b24oJ2F1dGhvcmlkJywgJHAtPlVybFJ1bGUsICRvcmRlcl9nZXQpOw0KDQogICAgJHRhYmxlcyA9ICcnOw0KICAgICR0YWJsZXRocyA9IGFycmF5KCk7DQogICAgJHRhYmxldGhzW10gPSAnPHRyPic7DQoJJHRhYmxldGhzW10gPSAnPHRoIGNsYXNzPSJ0ZENlbnRlciI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY2hlY2tBbGxDaGFuZ2UiIC8+PC90aD4nOy8v5re75YqgDQogICAgJHRhYmxldGhzW10gPSAnPHRoPicgLiAkemJwLT5sYW5nWydtc2cnXVsnaWQnXSAuICRidXR0b25faWRfaHRtbCAuICc8L3RoPic7DQogICAgJHRhYmxldGhzW10gPSAnPHRoPicgLiAkemJwLT5sYW5nWydtc2cnXVsnY2F0ZWdvcnknXSAuICRidXR0b25fY2F0ZWlkX2h0bWwgLiAnPC90aD4nOw0KICAgICR0YWJsZXRoc1tdID0gJzx0aD4nIC4gJHpicC0+bGFuZ1snbXNnJ11bJ2F1dGhvciddIC4gJGJ1dHRvbl9hdXRob3JpZF9odG1sIC4gJzwvdGg+JzsNCiAgICAkdGFibGV0aHNbXSA9ICc8dGg+JyAuICR6YnAtPmxhbmdbJ21zZyddWyd0aXRsZSddIC4gJzwvdGg+JzsNCiAgICAkdGFibGV0aHNbXSA9ICc8dGg+JyAuICR6YnAtPmxhbmdbJ21zZyddWydkYXRlJ10gLiAkYnV0dG9uX3Bvc3R0aW1lX2h0bWwgLiAnPC90aD4nOw0KCWlmKCR6YnAtPkNvbmZpZygndHRfYXJ0aWNsZScpLT52aWV3PT0iMSIpew0KCQkgJHRhYmxldGhzW10gPSAnPHRoPua1j+iniOmHjzwvdGg+JzsNCgl9DQogICAgJHRhYmxldGhzW10gPSAnPHRoPicgLiAkemJwLT5sYW5nWydtc2cnXVsnY29tbWVudCddIC4gJzwvdGg+JzsNCiAgICAkdGFibGV0aHNbXSA9ICc8dGg+JyAuICR6YnAtPmxhbmdbJ21zZyddWydzdGF0dXMnXSAuICc8L3RoPic7DQogICAgJHRhYmxldGhzW10gPSAnPHRoPuaTjeS9nDwvdGg+JzsNCgkNCiAgICBpZiAoJHpicC0+Q2hlY2tSaWdodHMoJ1Bvc3RCYXQnKSAmJiAkemJwLT5vcHRpb25bJ1pDX1BPU1RfQkFUQ0hfREVMRVRFJ10pIHsNCiAgICAgICAgJHRhYmxldGhzW10gPSAnPHRoPjxhIGhyZWY9IiIgb25jbGljaz0iQmF0Y2hTZWxlY3RBbGwoKTtyZXR1cm4gZmFsc2U7Ij4nIC4gJHpicC0+bGFuZ1snbXNnJ11bJ3NlbGVjdF9hbGwnXSAuICc8L2E+PC90aD4nOw0KICAgIH0NCiAgICAkdGFibGV0aHNbXSA9ICc8L3RyPic7DQoNCiAgICBmb3JlYWNoICgkYXJyYXkgYXMgJGFydGljbGUpIHsNCiAgICAgICAgJHRhYmxldGRzID0gYXJyYXkoKTsgLy90YWJsZSBzdHJpbmcNCiAgICAgICAgJHRhYmxldGRzW10gPSAnPHRyPic7DQoJCSR0YWJsZXRkc1tdID0gJzx0ZCBjbGFzcz0idGQ1IHRkQ2VudGVyIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJBcnRpY2xlaWQiIHZhbHVlPSInIC4gJGFydGljbGUtPklEIC4gJyIgLz48L3RkPic7DQogICAgICAgICR0YWJsZXRkc1tdID0gJzx0ZCBjbGFzcz0idGQ1Ij4nIC4gJGFydGljbGUtPklEIC4gJzwvdGQ+JzsNCiAgICAgICAgJHRhYmxldGRzW10gPSAnPHRkIGNsYXNzPSJ0ZDEwIj4nIC4gJGFydGljbGUtPkNhdGVnb3J5LT5OYW1lIC4gJzwvdGQ+JzsNCiAgICAgICAgJHRhYmxldGRzW10gPSAnPHRkIGNsYXNzPSJ0ZDEwIj4nIC4gJGFydGljbGUtPkF1dGhvci0+TmFtZSAuICc8L3RkPic7DQogICAgICAgICR0YWJsZXRkc1tdID0gJzx0ZD48YSBocmVmPSInIC4gJGFydGljbGUtPlVybCAuICciIHRhcmdldD0iX2JsYW5rIj48aSBjbGFzcz0iaWNvbi1saW5rLTQ1ZGVnIj48L2k+PC9hPiAnIC4gJGFydGljbGUtPlRpdGxlIC4gJzwvdGQ+JzsNCiAgICAgICAgJHRhYmxldGRzW10gPSAnPHRkIGNsYXNzPSJ0ZDEwIj4nIC4gJGFydGljbGUtPlRpbWUoKSAuICc8L3RkPic7DQoJaWYoJHpicC0+Q29uZmlnKCd0dF9hcnRpY2xlJyktPnZpZXc9PSIxIil7DQoJCSR0YWJsZXRkc1tdID0gJzx0ZCBjbGFzcz0idGQ1Ij4nIC4gJGFydGljbGUtPlZpZXdOdW1zIC4gJzwvdGQ+JzsNCgl9DQogICAgICAgICR0YWJsZXRkc1tdID0gJzx0ZCBjbGFzcz0idGQ1Ij4nIC4gJGFydGljbGUtPkNvbW1OdW1zIC4gJzwvdGQ+JzsNCiAgICAgICAgJHRhYmxldGRzW10gPSAnPHRkIGNsYXNzPSJ0ZDUiPicgLiAoJGFydGljbGUtPklzVG9wID8gJHpicC0+bGFuZ1snbXNnJ11bJ3RvcCddIC4gJ3wnIDogJycpIC4gJGFydGljbGUtPlN0YXR1c05hbWUgLiAnPC90ZD4nOw0KICAgICAgICAkdGFibGV0ZHNbXSA9ICc8dGQgY2xhc3M9InRkMTAgdGRDZW50ZXIiPicgLg0KICAgICAgICAgICAgJzxhIGhyZWY9IicuJHpicC0+aG9zdC4nemJfc3lzdGVtL2NtZC5waHA/YWN0PUFydGljbGVFZHQmYW1wO2lkPScgLiAkYXJ0aWNsZS0+SUQgLiAnIj48aSBjbGFzcz0iaWNvbi1wZW5jaWwtc3F1YXJlIj48L2k+PC9hPicgLg0KICAgICAgICAgICAgJyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgLg0KICAgICAgICAgICAgJzxhIG9uY2xpY2s9InJldHVybiB3aW5kb3cuY29uZmlybShcJycgLiBzdHJfcmVwbGFjZShhcnJheSgnIicsICdcJycpLCAnJywgJHpicC0+bGFuZ1snbXNnJ11bJ2NvbmZpcm1fb3BlcmF0aW5nJ10pIC4gJ1wnKTsiIGhyZWY9IicgLiBCdWlsZFNhZmVDbWRVUkwoJ2FjdD1BcnRpY2xlRGVsJmFtcDtpZD0nIC4gJGFydGljbGUtPklEKSAuICciPjxpIGNsYXNzPSJpY29uLXRyYXNoIj48L2k+PC9hPicgLg0KICAgICAgICAgICAgJzwvdGQ+JzsNCiAgICAgICAgaWYgKCR6YnAtPkNoZWNrUmlnaHRzKCdQb3N0QmF0JykgJiYgJHpicC0+b3B0aW9uWydaQ19QT1NUX0JBVENIX0RFTEVURSddKSB7DQogICAgICAgICAgICAkdGFibGV0ZHNbXSA9ICc8dGQgY2xhc3M9InRkNSB0ZENlbnRlciI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iaWQnIC4gJGFydGljbGUtPklEIC4gJyIgbmFtZT0iaWRbXSIgdmFsdWU9IicgLiAkYXJ0aWNsZS0+SUQgLiAnIj48L3RkPic7DQogICAgICAgIH0NCiAgICAgICAgJHRhYmxldGRzW10gPSAnPC90cj4nOw0KDQogICAgICAgIGZvcmVhY2ggKCRHTE9CQUxTWydob29rcyddWydGaWx0ZXJfUGx1Z2luX0FkbWluX0FydGljbGVNbmdfVGFibGUnXSBhcyAkZnBuYW1lID0+ICYkZnBzaWduYWwpIHsNCiAgICAgICAgICAgIC8v5Lyg5YWlIOW9k+WJjXBvc3TvvIzlvZPliY3ooYzvvIzooajlpLQNCiAgICAgICAgICAgICRmcHJldHVybiA9ICRmcG5hbWUoJGFydGljbGUsICR0YWJsZXRkcywgJHRhYmxldGhzKTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0YWJsZXMgLj0gaW1wbG9kZSgkdGFibGV0ZHMpOw0KICAgIH0NCg0KICAgIGVjaG8gaW1wbG9kZSgkdGFibGV0aHMpIC4gJHRhYmxlczsNCg0KICAgIGVjaG8gJzwvdGFibGU+JzsNCiAgICBlY2hvICc8aHIvPjxwIGNsYXNzPSJwYWdlYmFyIj4nOw0KDQogICAgJHAtPlVybFJ1bGUtPlJ1bGVzWyd7JW9yZGVyJX0nXSA9IEdldFZhcnMoJ29yZGVyJywgJ0dFVCcpOw0KICAgIGZvcmVhY2ggKCRwLT5CdXR0b25zIGFzICRrZXkgPT4gJHZhbHVlKSB7DQogICAgICAgIGlmICgkcC0+UGFnZU5vdyA9PSAka2V5KSB7DQogICAgICAgICAgICBlY2hvICc8c3BhbiBjbGFzcz0ibm93LXBhZ2UiPicgLiAka2V5IC4gJzwvc3Bhbj4mbmJzcDsmbmJzcDsnOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iJyAuICR2YWx1ZSAuICciPicgLiAka2V5IC4gJzwvYT4mbmJzcDsmbmJzcDsnOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICgkemJwLT5DaGVja1JpZ2h0cygnUG9zdEJhdCcpICYmICR6YnAtPm9wdGlvblsnWkNfUE9TVF9CQVRDSF9ERUxFVEUnXSkgew0KICAgICAgICBlY2hvICc8aW5wdXQgIHN0eWxlPSJmbG9hdDpyaWdodDsiIHR5cGU9InN1Ym1pdCIgbmFtZT0iYWxsX2RlbCIgb25jbGljaz0icmV0dXJuIHdpbmRvdy5jb25maXJtKFwnJyAuIHN0cl9yZXBsYWNlKGFycmF5KCciJywgJ1wnJyksICcnLCAkemJwLT5sYW5nWydtc2cnXVsnY29uZmlybV9vcGVyYXRpbmcnXSkgLiAnXCcpOyIgdmFsdWU9IicgLiAkemJwLT5sYW5nWydtc2cnXVsnYWxsX2RlbCddIC4gJyI+JzsNCiAgICB9DQogICAgZWNobyAnPC9wPjwvZm9ybT48L2Rpdj4nOw0KCQ0KDQoJDQoJDQoNCgkNCiAgICBlY2hvICc8c2NyaXB0PkFjdGl2ZUxlZnRNZW51KCJhQXJ0aWNsZU1uZyIpOzwvc2NyaXB0Pic7DQogICAgZWNobyAnPHNjcmlwdD5BZGRIZWFkZXJGb250SWNvbigiaWNvbi1zdGlja2llcyIpOzwvc2NyaXB0Pic7DQogICAgZWNobyAnPHNjcmlwdD4kKFwnYS5vcmRlcl9idXR0b25cJykucGFyZW50KCkuYmluZChcJ21vdXNlZW50ZXIgbW91c2VsZWF2ZVwnLCBmdW5jdGlvbigpIHskKHRoaXMpLmZpbmQoXCdhLm9yZGVyX2J1dHRvblwnKS50b2dnbGVDbGFzcyhcJ2VsZW1lbnQtdmlzaWJpbGl0eS1oaWRkZW5cJyk7fSk7PC9zY3JpcHQ+JzsNCn0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi8qKg0KICog5ZCO5Y+w5paH56ug566h55CGMS43DQogKi8NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmZ1bmN0aW9uIHR0X2FydGljbGVfQWRtaW5fQXJ0aWNsZU1uZ19jKCkNCnsNCiAgICBnbG9iYWwgJHpicDsNCmdsb2JhbCAkemJwOw0KZWNobyAnPHN0eWxlPg0KLnR0X2FydGljbGVfZGl2ew0KICAgZmxvYXQ6cmlnaHQ7DQogICAgZm9udC1zaXplOiAxNnB4Ow0KfQ0KLnR0X2FydGljbGVfZGl2IGF7DQoNCiAgIA0KICAgIGNvbG9yOiAjZmZmIWltcG9ydGFudDsNCn0NCi5TdWJNZW51e2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fQ0KPC9zdHlsZT4nOw0KZWNobyAnPHNjcmlwdCBzcmM9IicuJHpicC0+aG9zdC4nemJfdXNlcnMvcGx1Z2luL3R0X2FydGljbGUvY29tLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pic7DQogICAgZWNobyAnPGRpdiBjbGFzcz0iZGl2SGVhZGVyIj7mibnph4/mlofnq6DnrqHnkIY8L2Rpdj4nOw0KICAgIGVjaG8gJzxkaXYgY2xhc3M9IlN1Yk1lbnUiPg0KCScudHRfYXJ0aWNsZV9TdWJNZW51KDIpLicnOw0KCQ0KICAgIGZvcmVhY2ggKCRHTE9CQUxTWydob29rcyddWydGaWx0ZXJfUGx1Z2luX0FkbWluX0FydGljbGVNbmdfU3ViTWVudSddIGFzICRmcG5hbWUgPT4gJiRmcHNpZ25hbCkgew0KICAgICAgICAkZnBuYW1lKCk7DQogICAgfQ0KICAgIGVjaG8gJzwvZGl2Pic7DQoJZWNobyAnPHN0eWxlPg0KCS50dF9hcnRpY2xlX2JvIHsNCiAgICBvdmVyZmxvdzogaGlkZGVuOw0KICAgIGJhY2tncm91bmQ6ICMzYTZlYTU7DQogICAgY29sb3I6IHdoaXRlOw0KCQ0KfQ0KDQoJLnR0X2FydGljbGVfYm8gbGl7ZmxvYXQ6bGVmdDtwYWRkaW5nOiAwIDVweDsgICAgbWFyZ2luOiA1cHggMDsNCgl9DQoJaW5wdXQjZGVsQWxsLGlucHV0I3R0X2FydGljbGVfQWxsew0KICAgIGhlaWdodDogMzNweDsNCiAgICBwYWRkaW5nOiA1cHggMTBweDsgICAgYm9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjsNCn0NCiNjbWJJc1RvcHttYXJnaW4tcmlnaHQ6MTBweH0NCi5maXhlZF9hY3R7cG9zaXRpb246IGZpeGVkOw0KICAgIHRvcDogMDsNCiAgICB3aWR0aDogMTAwJTsNCiAgICB6LWluZGV4OiA5OTk5OTt9DQoJDQoJPC9zdHlsZT4nOw0KCQkNCgllY2hvICc8ZGl2IGNsYXNzPSJ0dF9hcnRpY2xlX2JvIiBpZD0idHRfYXJ0aWNsZV9ibyI+JzsNCgkNCiAgICBlY2hvJzxsaT7liIbnsbvvvJo8c2VsZWN0IHN0eWxlPSJ3aWR0aDoxNDBweDsiIGNsYXNzPSJlZGl0IiBzaXplPSIxIiBpZD0iY21iQ2F0ZUlEIj48b3B0aW9uIHZhbHVlPSIiPuS7u+aEjzwvb3B0aW9uPicuT3V0cHV0T3B0aW9uSXRlbXNPZkNhdGVnb3JpZXMoJzk5OTk5JykuJzwvc2VsZWN0PjwvdGg+JzsNCgkgZWNobyc8bGk+572u6aG277yaPHNlbGVjdCBzdHlsZT0id2lkdGg6MTAwcHg7IiBjbGFzcz0iZWRpdCIgc2l6ZT0iMSIgaWQ9ImNtYklzVG9wIj48b3B0aW9uIHZhbHVlPSIiPuS7u+aEjzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IjEiPuS4jee9rumhtjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IjIiPue9rumhtjwvb3B0aW9uPjwvc2VsZWN0PjxzZWxlY3Qgc3R5bGU9IndpZHRoOjEwMHB4OyIgY2xhc3M9ImVkaXQiIHNpemU9IjEiIGlkPSJjbWJ0b3Bfc3RhdHVzIj48b3B0aW9uIHZhbHVlPSJpbmRleCI+6aaW6aG1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iZ2xvYmFsIj7lhajlsYA8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJjYXRlZ29yeSI+5YiG57G7PC9vcHRpb24+PC9zZWxlY3Q+PC90aD4nOw0KCWVjaG8nPGxpPuexu+Wei++8mjxzZWxlY3Qgc3R5bGU9IndpZHRoOjE0MHB4OyIgY2xhc3M9ImVkaXQiIHNpemU9IjEiIGlkPSJjbWJTdGF0dXMiPjxvcHRpb24gdmFsdWU9IiI+5Lu75oSPPC9vcHRpb24+Jy5PdXRwdXRPcHRpb25JdGVtc09mUG9zdFN0YXR1cygnNScpLic8L3NlbGVjdD48L3RoPic7DQoJZWNobyc8bGk+5L2c6ICF77yaPHNlbGVjdCBzdHlsZT0id2lkdGg6MTQwcHg7bWFyZ2luLXJpZ2h0OjEwcHgiIGNsYXNzPSJlZGl0IiBzaXplPSIxIiBpZD0iY21iTWVtIj48b3B0aW9uIHZhbHVlPSIiPuS7u+aEjzwvb3B0aW9uPicuT3V0cHV0T3B0aW9uSXRlbXNPZk1lbWJlcignOTk5OTknKS4nPC9zZWxlY3Q+PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IuaJuemHj+aJp+ihjOabtOaUuSIgaWQ9InR0X2FydGljbGVfQWxsIj48L3RoPic7DQogICAgZWNobyc8bGk+PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IuaJuemHj+WIoOmZpCIgaWQ9ImRlbEFsbCI+PC9saT4nOy8vb2sNCgkNCiAgICBlY2hvJzxsaT48L2xpPic7DQoJDQoJZWNobyAnPC9kaXY+JzsNCgkNCiAgICBlY2hvICc8ZGl2IGlkPSJkaXZNYWluMiI+JzsNCgkNCg0KCQ0KICAgIGVjaG8gJzxmb3JtIGNsYXNzPSJzZWFyY2giIGlkPSJzZWFyY2giIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIjIj4nOw0KDQogICAgZWNobyAnPHA+JyAuICR6YnAtPmxhbmdbJ21zZyddWydzZWFyY2gnXSAuICc6Jm5ic3A7Jm5ic3A7JyAuICR6YnAtPmxhbmdbJ21zZyddWydjYXRlZ29yeSddIC4gJyA8c2VsZWN0IGNsYXNzPSJlZGl0IiBzaXplPSIxIiBuYW1lPSJjYXRlZ29yeSIgc3R5bGU9IndpZHRoOjE0MHB4OyIgPjxvcHRpb24gdmFsdWU9IiI+JyAuICR6YnAtPmxhbmdbJ21zZyddWydhbnknXSAuICc8L29wdGlvbj4nOw0KICAgIGZvcmVhY2ggKCR6YnAtPmNhdGVnb3JpZXNieW9yZGVyIGFzICRpZCA9PiAkY2F0ZSkgew0KICAgICAgICBlY2hvICc8b3B0aW9uIHZhbHVlPSInIC4gJGNhdGUtPklEIC4gJyI+JyAuICRjYXRlLT5TeW1ib2xOYW1lIC4gJzwvb3B0aW9uPic7DQogICAgfQ0KICAgIGVjaG8gJzwvc2VsZWN0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgLiAkemJwLT5sYW5nWydtc2cnXVsndHlwZSddIC4gJyA8c2VsZWN0IGNsYXNzPSJlZGl0IiBzaXplPSIxIiBuYW1lPSJzdGF0dXMiIHN0eWxlPSJ3aWR0aDoxMDBweDsiID48b3B0aW9uIHZhbHVlPSIiPicgLiAkemJwLT5sYW5nWydtc2cnXVsnYW55J10gLiAnPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IjAiID4nIC4gJHpicC0+bGFuZ1sncG9zdF9zdGF0dXNfbmFtZSddWycwJ10gLiAnPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iMSIgPicgLiAkemJwLT5sYW5nWydwb3N0X3N0YXR1c19uYW1lJ11bJzEnXSAuICc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSIyIiA+JyAuICR6YnAtPmxhbmdbJ3Bvc3Rfc3RhdHVzX25hbWUnXVsnMiddIC4gJzwvb3B0aW9uPjwvc2VsZWN0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImlzdG9wIiB2YWx1ZT0iVHJ1ZSIvPiZuYnNwOycgLiAkemJwLT5sYW5nWydtc2cnXVsndG9wJ10gLiAnPC9sYWJlbD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICA8aW5wdXQgbmFtZT0ic2VhcmNoIiBzdHlsZT0id2lkdGg6MjUwcHg7IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iIiAvPiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0iYnV0dG9uIiB2YWx1ZT0iJyAuICR6YnAtPmxhbmdbJ21zZyddWydzdWJtaXQnXSAuICciLz48L3A+JzsNCiAgICBlY2hvICc8L2Zvcm0+JzsNCg0KICAgICRzZWFyY2ggPSBHZXRWYXJzKCdzZWFyY2gnKTsNCiAgICAkb3JkZXJfZ2V0ID0gR2V0VmFycygnb3JkZXInLCAnR0VUJyk7DQoNCiAgIC8vICRwID0gbmV3IFBhZ2ViYXIoJ3slaG9zdCV9emJfc3lzdGVtL2NtZC5waHA/YWN0PUFydGljbGVNbmd7JnN0YXR1cz0lc3RhdHVzJX17JmlzdG9wPSVpc3RvcCV9eyZjYXRlZ29yeT0lY2F0ZWdvcnklfXsmc2VhcmNoPSVzZWFyY2glfXsmb3JkZXI9JW9yZGVyJX17JnBhZ2U9JXBhZ2UlfScsIGZhbHNlKTsNCgkkcCA9IG5ldyBQYWdlYmFyKCd7JWhvc3QlfXpiX3VzZXJzL3BsdWdpbi90dF9hcnRpY2xlL3R0X2FydGljbGVfQXJ0aWNsZU1uZ19jLnBocD97JnBhZ2U9JXBhZ2UlfXsmc3RhdHVzPSVzdGF0dXMlfXsmaXN0b3A9JWlzdG9wJX17JmNhdGVnb3J5PSVjYXRlZ29yeSV9eyZzZWFyY2g9JXNlYXJjaCV9eyZvcmRlcj0lb3JkZXIlfScsIGZhbHNlKTsNCiAgIC8vICRwLT5QYWdlQ291bnQgPSAkemJwLT5tYW5hZ2Vjb3VudDsNCgkkcC0+UGFnZUNvdW50ID0gJHpicC0+Q29uZmlnKCd0dF9hcnRpY2xlJyktPm51bTsNCiAgICAkcC0+UGFnZU5vdyA9IChpbnQpIEdldFZhcnMoJ3BhZ2UnLCAnR0VUJykgPT0gMCA/IDEgOiAoaW50KSBHZXRWYXJzKCdwYWdlJywgJ0dFVCcpOw0KICAgIGlmIChHZXRWYXJzKCdzZWFyY2gnKSAhPT0gR2V0VmFycygnc2VhcmNoJywgJ0dFVCcpKSB7DQogICAgICAgICRwLT5QYWdlTm93ID0gMTsNCiAgICB9DQogICAgJHAtPlBhZ2VCYXJDb3VudCA9ICR6YnAtPnBhZ2ViYXJjb3VudDsNCg0KICAgICRwLT5VcmxSdWxlLT5SdWxlc1sneyVjYXRlZ29yeSV9J10gPSBHZXRWYXJzKCdjYXRlZ29yeScpOw0KICAgICRwLT5VcmxSdWxlLT5SdWxlc1sneyVzZWFyY2glfSddID0gcmF3dXJsZW5jb2RlKCRzZWFyY2gpOw0KICAgICRwLT5VcmxSdWxlLT5SdWxlc1sneyVzdGF0dXMlfSddID0gR2V0VmFycygnc3RhdHVzJyk7DQogICAgJHAtPlVybFJ1bGUtPlJ1bGVzWyd7JWlzdG9wJX0nXSA9IChib29sKSBHZXRWYXJzKCdpc3RvcCcpOw0KICAgICRwLT5VcmxSdWxlLT5SdWxlc1sneyVvcmRlciV9J10gPSAkb3JkZXJfZ2V0Ow0KDQogICAgJHcgPSBhcnJheSgpOw0KICAgICR3W10gPSBhcnJheSgnPScsICdsb2dfVHlwZScsIDApOw0KDQogICAgaWYgKCEkemJwLT5DaGVja1JpZ2h0cygnQXJ0aWNsZUFsbCcpKSB7DQogICAgICAgICR3W10gPSBhcnJheSgnPScsICdsb2dfQXV0aG9ySUQnLCAkemJwLT51c2VyLT5JRCk7DQogICAgfQ0KICAgIGlmIChHZXRWYXJzKCdzZWFyY2gnKSkgew0KICAgICAgICAkd1tdID0gYXJyYXkoJ3NlYXJjaCcsICdsb2dfQ29udGVudCcsICdsb2dfSW50cm8nLCAnbG9nX1RpdGxlJywgJHNlYXJjaCk7DQogICAgfQ0KICAgIGlmIChHZXRWYXJzKCdpc3RvcCcpKSB7DQogICAgICAgICR3W10gPSBhcnJheSgnPD4nLCAnbG9nX0lzdG9wJywgJzAnKTsNCiAgICB9DQogICAgaWYgKEdldFZhcnMoJ3N0YXR1cycpICE9PSBudWxsICYmIEdldFZhcnMoJ3N0YXR1cycpICE9PSAnJykgew0KICAgICAgICAkd1tdID0gYXJyYXkoJz0nLCAnbG9nX1N0YXR1cycsIChpbnQpIEdldFZhcnMoJ3N0YXR1cycpKTsNCiAgICB9DQogICAgaWYgKEdldFZhcnMoJ2NhdGVnb3J5JykpIHsNCiAgICAgICAgJHdbXSA9IGFycmF5KCc9JywgJ2xvZ19DYXRlSUQnLCBHZXRWYXJzKCdjYXRlZ29yeScpKTsNCiAgICB9DQoNCiAgICAkcyA9ICcnOw0KDQoNCg0KLyoNCiAgICBpZiAoJG9yZGVyX2dldCA9PSAnaWRfZGVzYycpIHsNCiAgICAgICAgJG9yID0gYXJyYXkoJ2xvZ19JRCcgPT4gJ0RFU0MnKTsNCiAgICB9IGVsc2VpZiAoJG9yZGVyX2dldCA9PSAnaWRfYXNjJykgew0KICAgICAgICAkb3IgPSBhcnJheSgnbG9nX0lEJyA9PiAnQVNDJyk7DQogICAgfSBlbHNlaWYgKCRvcmRlcl9nZXQgPT0gJ2NhdGVpZF9kZXNjJykgew0KICAgICAgICAkb3IgPSBhcnJheSgnbG9nX0NhdGVJRCcgPT4gJ0RFU0MnKTsNCiAgICB9IGVsc2VpZiAoJG9yZGVyX2dldCA9PSAnY2F0ZWlkX2FzYycpIHsNCiAgICAgICAgJG9yID0gYXJyYXkoJ2xvZ19DYXRlSUQnID0+ICdBU0MnKTsNCiAgICB9IGVsc2VpZiAoJG9yZGVyX2dldCA9PSAnYXV0aG9yaWRfZGVzYycpIHsNCiAgICAgICAgJG9yID0gYXJyYXkoJ2xvZ19BdXRob3JJRCcgPT4gJ0RFU0MnKTsNCiAgICB9IGVsc2VpZiAoJG9yZGVyX2dldCA9PSAnYXV0aG9yaWRfYXNjJykgew0KICAgICAgICAkb3IgPSBhcnJheSgnbG9nX0F1dGhvcklEJyA9PiAnQVNDJyk7DQogICAgfSBlbHNlaWYgKCRvcmRlcl9nZXQgPT0gJ3Bvc3R0aW1lX2Rlc2MnKSB7DQogICAgICAgICRvciA9IGFycmF5KCdsb2dfUG9zdFRpbWUnID0+ICdERVNDJyk7DQogICAgfSBlbHNlaWYgKCRvcmRlcl9nZXQgPT0gJ3Bvc3R0aW1lX2FzYycpIHsNCiAgICAgICAgJG9yID0gYXJyYXkoJ2xvZ19Qb3N0VGltZScgPT4gJ0FTQycpOw0KICAgIH0gZWxzZWlmICgkb3JkZXJfZ2V0ID09ICd1cGRhdGV0aW1lX2Rlc2MnKSB7DQogICAgICAgICRvciA9IGFycmF5KCdsb2dfVXBkYXRlVGltZScgPT4gJ0RFU0MnKTsNCiAgICB9IGVsc2VpZiAoJG9yZGVyX2dldCA9PSAndXBkYXRldGltZV9hc2MnKSB7DQogICAgICAgICRvciA9IGFycmF5KCdsb2dfVXBkYXRlVGltZScgPT4gJ0FTQycpOw0KICAgIH0gZWxzZSB7DQoJCS8v5o+S5omL5o6S5bqPDQogICAgICAgICRvciA9IGFycmF5KCR6YnAtPm1hbmFnZW9yZGVyID0+ICdERVNDJyk7DQoJCWlmKCR6YnAtPkNvbmZpZygndHRfYXJ0aWNsZScpLT5vcmRlcj09Mil7CQ0KCQkgJG9yID0gYXJyYXkoJ2xvZ19JRCcgPT4gJ0FTQycpOw0KCQl9ZWxzZWlmKCR6YnAtPkNvbmZpZygndHRfYXJ0aWNsZScpLT5vcmRlcj09Myl7DQoJCSAkb3IgPSBhcnJheSgnbG9nX0lEJyA9PiAnREVTQycpOwkNCgkJfQ0KICAgIH0NCgkqLw0KICAgICRsID0gYXJyYXkoKCRwLT5QYWdlTm93IC0gMSkgKiAkcC0+UGFnZUNvdW50LCAkcC0+UGFnZUNvdW50KTsNCiAgICAkb3B0aW9uID0gYXJyYXkoJ3BhZ2ViYXInID0+ICRwKTsNCiAgICAkdHlwZSA9IG51bGw7DQoJDQoJDQogICAgJG9yID0gYXJyYXkoJ2xvZ19UaXRsZScgPT4gJ0RFU0MnLCdsb2dfUG9zdFRpbWUnID0+ICdkZXNjJyk7DQovKgkNCi8vU2VsZWN0ICogRnJvbSB6YnBfcG9zdCBXaGVyZSBsb2dfVGl0bGUgSW4gKFNlbGVjdCBsb2dfVGl0bGUgRnJvbSB6YnBfcG9zdCBHcm91cCBCeSBsb2dfVGl0bGUgSGF2aW5nIENvdW50KCopPjEpICBPUkRFUiBCWSBsb2dfVGl0bGUgREVTQw0KJHppX3NxbD0nU2VsZWN0IGxvZ19UaXRsZSBGcm9tICcuJHpicC0+dGFibGVbJ1Bvc3QnXS4nIEdyb3VwIEJ5IGxvZ19UaXRsZSBIYXZpbmcgQ291bnQoKik+MSc7DQokemlfc3FsPSdzZWxlY3QgdC4qIGZyb20gJy4kemJwLT50YWJsZVsnUG9zdCddLicgdCBpbm5lciBKT0lOIChzZWxlY3QgbG9nX1RpdGxlLCBjb3VudCgwKSBudW0gZnJvbSAnLiR6YnAtPnRhYmxlWydQb3N0J10uJyBncm91cCBieSBsb2dfVGl0bGUpIHQxIG9uIHQubG9nX1RpdGxlPXQxLmxvZ19UaXRsZSB3aGVyZSB0MS5udW0+MSBsaW1pdCAnOw0KDQovLyR3W10gPSBhcnJheSgnSU4nLCdsb2dfVGl0bGUnLCAkemlfc3FsKTsNCiR3W10gPSBhcnJheSgnSU5ORVJKT0lOJywndC5sb2dfVGl0bGUnLCAkemlfc3FsMik7DQoqLw0KDQovLyR6aV9zcWwyPSdzZWxlY3QgbG9nX1RpdGxlLCBjb3VudCgwKSBudW0gZnJvbSAnLiR6YnAtPnRhYmxlWydQb3N0J10uJyBncm91cCBieSBsb2dfVGl0bGUnOw0KJHppX3NxbDIgPSAkemJwLT5kYi0+c3FsLT5nZXQoKS0+c2VsZWN0YW55KGFycmF5KCdsb2dfVGl0bGUnLCdjb3VudCgwKSc9PidudW0nKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ZnJvbSgnemJwX3Bvc3QnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5ncm91cEJ5KGFycmF5KCdsb2dfVGl0bGUnKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+c3FsOw0KLy9wcmludF9yKCR6aV9zcWwyKTsNCi8vZGllO1NFTEVDVCBsb2dfVGl0bGUsIGNvdW50KDApIEFTIG51bSBGUk9NIHpicF9wb3N0IEdST1VQIEJZIGxvZ19UaXRsZQ0KJHNxbCA9ICR6YnAtPmRiLT5zcWwtPmdldCgpLT5zZWxlY3RhbnkoJyonKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5mcm9tKGFycmF5KCd6YnBfcG9zdCc9Pid0JykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAtPmlubmVyam9pbihhcnJheSgnKCcuJHppX3NxbDIuJyknPT4ndDEnKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+b24oJ3QubG9nX1RpdGxlID0gdDEubG9nX1RpdGxlJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+d2hlcmUoYXJyYXkoJz4nLCd0MS5udW0nLCAxKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+d2hlcmUoJzEgPSAxJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+bGltaXQoJGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAtPnNxbDsNCgkJCQkJCSAgIA0KLy9wcmludF9yKCRzcWwpOw0KLy9TRUxFQ1QgKiBGUk9NIHpicF9wb3N0IEFTIHQgSU5ORVIgSk9JTiAoU0VMRUNUIGxvZ19UaXRsZSwgY291bnQoMCkgQVMgbnVtIEZST00gemJwX3Bvc3QgR1JPVVAgQlkgbG9nX1RpdGxlKSBBUyB0MSBPTiB0LmxvZ19UaXRsZSA9IHQxLmxvZ19UaXRsZSBXSEVSRSB0MS5udW0gPiAnMScgQU5EIDEgPSAxIExJTUlUIDEgT0ZGU0VUIDkNCg0KaWYgKGlzc2V0KCRvcHRpb25bJ3BhZ2ViYXInXSkpIHsNCiAgICAgICAgICAgIGlmICgkb3B0aW9uWydwYWdlYmFyJ10tPkNvdW50ID09PSBudWxsKSB7DQogICAgICAgICAgICAgICAgLy8kc3FscGIgPSAkemJwLT5nZXQoKS0+c2VsZWN0KCR0YWJsZSktPmNvdW50KGFycmF5KCcqJyA9PiAnbnVtJykpLT53aGVyZSgkd2hlcmUpLT5vcHRpb24oJG9wdGlvbik7DQogICAgICAgICAgICAgICAgJHNxbHBiID0gJHpicC0+ZGItPnNxbC0+Z2V0KCktPnNlbGVjdGFueSgnKicpLT5jb3VudChhcnJheSgnKicgPT4gJ251bScpKS0+ZnJvbShhcnJheSgnemJwX3Bvc3QnPT4ndCcpKS0+aW5uZXJqb2luKGFycmF5KCcoJy4kemlfc3FsMi4nKSc9Pid0MScpKS0+b24oJ3QubG9nX1RpdGxlID0gdDEubG9nX1RpdGxlJyktPndoZXJlKGFycmF5KCc+JywndDEubnVtJywgMSkpLT5vcHRpb24oJG9wdGlvbik7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoYXJyYXkoJ0ZST00nLCAnSU5ORVJKT0lOJywgJ0xFRlRKT0lOJywgJ1JJR0hUSk9JTicsICdKT0lOJywgJ0ZVTExKT0lOJywgJ1VTRUlOREVYJywgJ0ZPUkNFSU5ERVgnLCAnSUdOT1JFSU5ERVgnLCAnT04nLCAnV0hFUkUnLCAnR1JPVVBCWScsICdIQVZJTkcnKSBhcyAka2V5ID0+ICRrZXl3b3JkKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uW3N0cnRvbG93ZXIoJGtleXdvcmQpXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRhcmdzID0gYXJyYXkoJG9wdGlvbltzdHJ0b2xvd2VyKCRrZXl3b3JkKV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF91c2VyX2Z1bmNfYXJyYXkoYXJyYXkoJHNxbHBiLCAka2V5d29yZCksICRhcmdzKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkcXVlcnkgPSAkc3FscGItPnF1ZXJ5Ow0KICAgICAgICAgICAgICAgICRvcHRpb25bJ3BhZ2ViYXInXS0+Q291bnQgPSBHZXRWYWx1ZUluQXJyYXlCeUN1cnJlbnQoJHF1ZXJ5LCAnbnVtJyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkb3B0aW9uWydwYWdlYmFyJ10tPkNvdW50ID0gKGludCkgJG9wdGlvblsncGFnZWJhciddLT5Db3VudDsNCiAgICAgICAgICAgJG9wdGlvblsncGFnZWJhciddLT5tYWtlKCk7DQogICAgICAgIH0NCgkJDQoJCQ0KCQkvL3ByaW50X3IoJHApOw0KDQovL2RpZTsNCg0KICAgIC8vMS435paw5Yqg5YWl55qE5o6l5Y+jDQogICAgZm9yZWFjaCAoJEdMT0JBTFNbJ2hvb2tzJ11bJ0ZpbHRlcl9QbHVnaW5fQWRtaW5fQXJ0aWNsZU1uZ19Db3JlJ10gYXMgJGZwbmFtZSA9PiAmJGZwc2lnbmFsKSB7DQogICAgICAgICRmcHJldHVybiA9ICRmcG5hbWUoJHMsICR3LCAkb3IsICRsLCAkb3ApOw0KICAgIH0NCg0KICAgIGZvcmVhY2ggKCRHTE9CQUxTWydob29rcyddWydGaWx0ZXJfUGx1Z2luX0xhcmdlRGF0YV9BcnRpY2xlJ10gYXMgJGZwbmFtZSA9PiAmJGZwc2lnbmFsKSB7DQogICAgICAgICRmcHJldHVybiA9ICRmcG5hbWUoJHMsICR3LCAkb3IsICRsLCAkb3AsICR0eXBlKTsNCiAgICB9DQoJCSRhcnJheSA9ICR6YnAtPkdldExpc3RUeXBlKCdQb3N0JywgJHNxbCk7DQogICAgICAgIGlmIChpc3NldCgkb3B0aW9uWydwYWdlYmFyJ10pICYmIGlzX29iamVjdCgkb3B0aW9uWydwYWdlYmFyJ10pKSB7DQogICAgICAgICAgICAkb3B0aW9uWydwYWdlYmFyJ10tPkN1cnJlbnRDb3VudCA9IGNvdW50KCRhcnJheSk7DQogICAgICAgIH0NCgkJDQoJCS8qDQogICAgJGFycmF5ID0gJHpicC0+R2V0UG9zdExpc3QoDQogICAgICAgICRzLA0KICAgICAgICAkdywNCiAgICAgICAgJG9yLA0KICAgICAgICAkbCwNCiAgICAgICAgJG9wDQogICAgKTsNCiovDQogICAgZWNobyAnPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249IicgLiAkemJwLT5ob3N0IC4gJ3piX3N5c3RlbS9jbWQucGhwP2FjdD1Qb3N0QmF0JnR5cGU9JyAuIFpDX1BPU1RfVFlQRV9BUlRJQ0xFIC4gJyI+JzsNCiAgICBlY2hvICc8dGFibGUgYm9yZGVyPSIxIiBjbGFzcz0idGFibGVGdWxsIHRhYmxlQm9yZGVyIHRhYmxlX2hvdmVyIHRhYmxlX3N0cmlwZWQgdGFibGVCb3JkZXItdGhjZW50ZXIiPic7DQoJZWNobyAnPHRyPic7DQogICAgZWNobyc8dGggY2xhc3M9InRkQ2VudGVyIj48aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iY2hlY2tBbGwiIHZhbHVlPSLlhajpgIkiIC8+PC90aD4nOw0KICAgIGVjaG8nPHRoPjxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJyZW1vdmVBbGwiIHZhbHVlPSLlj5bmtojlhajpg6giIC8+PC90aD4nOw0KICAgIGVjaG8nPHRoPjxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJyZXZlcnNlIiB2YWx1ZT0i5Y+N6YCJIiAvPjwvdGg+JzsNCiAgICBlY2hvJzx0aD48L3RoPic7DQogICAgZWNobyc8dGg+PC90aD4nOw0KCSBlY2hvJzx0aD48L3RoPic7DQoJaWYoJHpicC0+Q29uZmlnKCd0dF9hcnRpY2xlJyktPnZpZXc9PSIxIil7DQoJCSAkdGFibGV0aHNbXSA9ICc8dGg+PC90aD4nOw0KCX0NCiAgICBlY2hvJzx0aD48L3RoPic7DQogICAgZWNobyc8dGg+PC90aD4nOw0KICAgIGVjaG8nPHRoPjwvdGg+JzsNCglpZiAoJHpicC0+Q2hlY2tSaWdodHMoJ1Bvc3RCYXQnKSAmJiAkemJwLT5vcHRpb25bJ1pDX1BPU1RfQkFUQ0hfREVMRVRFJ10pIHsNCgllY2hvJzx0aD48L3RoPic7DQoJfQ0KICAgLy8gZWNobyc8dGg+PC90aD4nOw0KICAgLy8gZWNobyc8dGg+PC90aD4nOw0KICAgIGVjaG8nPC90cj4nOw0KICAgIGxpc3QoJGJ1dHRvbl9pZF9odG1sKSA9IE1ha2VPcmRlckJ1dHRvbignaWQnLCAkcC0+VXJsUnVsZSwgJG9yZGVyX2dldCk7DQogICAgbGlzdCgkYnV0dG9uX3Bvc3R0aW1lX2h0bWwpID0gTWFrZU9yZGVyQnV0dG9uKCdwb3N0dGltZScsICRwLT5VcmxSdWxlLCAkb3JkZXJfZ2V0KTsNCiAgICBsaXN0KCRidXR0b25fY2F0ZWlkX2h0bWwpID0gTWFrZU9yZGVyQnV0dG9uKCdjYXRlaWQnLCAkcC0+VXJsUnVsZSwgJG9yZGVyX2dldCk7DQogICAgbGlzdCgkYnV0dG9uX2F1dGhvcmlkX2h0bWwpID0gTWFrZU9yZGVyQnV0dG9uKCdhdXRob3JpZCcsICRwLT5VcmxSdWxlLCAkb3JkZXJfZ2V0KTsNCg0KICAgICR0YWJsZXMgPSAnJzsNCiAgICAkdGFibGV0aHMgPSBhcnJheSgpOw0KICAgICR0YWJsZXRoc1tdID0gJzx0cj4nOw0KCSR0YWJsZXRoc1tdID0gJzx0aCBjbGFzcz0idGRDZW50ZXIiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNoZWNrQWxsQ2hhbmdlIiAvPjwvdGg+JzsvL+a3u+WKoA0KICAgICR0YWJsZXRoc1tdID0gJzx0aD4nIC4gJHpicC0+bGFuZ1snbXNnJ11bJ2lkJ10gLiAkYnV0dG9uX2lkX2h0bWwgLiAnPC90aD4nOw0KICAgICR0YWJsZXRoc1tdID0gJzx0aD4nIC4gJHpicC0+bGFuZ1snbXNnJ11bJ2NhdGVnb3J5J10gLiAkYnV0dG9uX2NhdGVpZF9odG1sIC4gJzwvdGg+JzsNCiAgICAkdGFibGV0aHNbXSA9ICc8dGg+JyAuICR6YnAtPmxhbmdbJ21zZyddWydhdXRob3InXSAuICRidXR0b25fYXV0aG9yaWRfaHRtbCAuICc8L3RoPic7DQogICAgJHRhYmxldGhzW10gPSAnPHRoPicgLiAkemJwLT5sYW5nWydtc2cnXVsndGl0bGUnXSAuICc8L3RoPic7DQogICAgJHRhYmxldGhzW10gPSAnPHRoPicgLiAkemJwLT5sYW5nWydtc2cnXVsnZGF0ZSddIC4gJGJ1dHRvbl9wb3N0dGltZV9odG1sIC4gJzwvdGg+JzsNCglpZigkemJwLT5Db25maWcoJ3R0X2FydGljbGUnKS0+dmlldz09IjEiKXsNCgkJICR0YWJsZXRoc1tdID0gJzx0aD7mtY/op4jph488L3RoPic7DQoJfQ0KICAgICR0YWJsZXRoc1tdID0gJzx0aD4nIC4gJHpicC0+bGFuZ1snbXNnJ11bJ2NvbW1lbnQnXSAuICc8L3RoPic7DQogICAgJHRhYmxldGhzW10gPSAnPHRoPicgLiAkemJwLT5sYW5nWydtc2cnXVsnc3RhdHVzJ10gLiAnPC90aD4nOw0KICAgICR0YWJsZXRoc1tdID0gJzx0aD7mk43kvZw8L3RoPic7DQoJDQogICAgaWYgKCR6YnAtPkNoZWNrUmlnaHRzKCdQb3N0QmF0JykgJiYgJHpicC0+b3B0aW9uWydaQ19QT1NUX0JBVENIX0RFTEVURSddKSB7DQogICAgICAgICR0YWJsZXRoc1tdID0gJzx0aD48YSBocmVmPSIiIG9uY2xpY2s9IkJhdGNoU2VsZWN0QWxsKCk7cmV0dXJuIGZhbHNlOyI+JyAuICR6YnAtPmxhbmdbJ21zZyddWydzZWxlY3RfYWxsJ10gLiAnPC9hPjwvdGg+JzsNCiAgICB9DQogICAgJHRhYmxldGhzW10gPSAnPC90cj4nOw0KDQogICAgZm9yZWFjaCAoJGFycmF5IGFzICRhcnRpY2xlKSB7DQogICAgICAgICR0YWJsZXRkcyA9IGFycmF5KCk7IC8vdGFibGUgc3RyaW5nDQogICAgICAgICR0YWJsZXRkc1tdID0gJzx0cj4nOw0KCQkkdGFibGV0ZHNbXSA9ICc8dGQgY2xhc3M9InRkNSB0ZENlbnRlciI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iQXJ0aWNsZWlkIiB2YWx1ZT0iJyAuICRhcnRpY2xlLT5JRCAuICciIC8+PC90ZD4nOw0KICAgICAgICAkdGFibGV0ZHNbXSA9ICc8dGQgY2xhc3M9InRkNSI+JyAuICRhcnRpY2xlLT5JRCAuICc8L3RkPic7DQogICAgICAgICR0YWJsZXRkc1tdID0gJzx0ZCBjbGFzcz0idGQxMCI+JyAuICRhcnRpY2xlLT5DYXRlZ29yeS0+TmFtZSAuICc8L3RkPic7DQogICAgICAgICR0YWJsZXRkc1tdID0gJzx0ZCBjbGFzcz0idGQxMCI+JyAuICRhcnRpY2xlLT5BdXRob3ItPk5hbWUgLiAnPC90ZD4nOw0KICAgICAgICAkdGFibGV0ZHNbXSA9ICc8dGQ+PGEgaHJlZj0iJyAuICRhcnRpY2xlLT5VcmwgLiAnIiB0YXJnZXQ9Il9ibGFuayI+PGkgY2xhc3M9Imljb24tbGluay00NWRlZyI+PC9pPjwvYT4gJyAuICRhcnRpY2xlLT5UaXRsZSAuICc8L3RkPic7DQogICAgICAgICR0YWJsZXRkc1tdID0gJzx0ZCBjbGFzcz0idGQxMCI+JyAuICRhcnRpY2xlLT5UaW1lKCkgLiAnPC90ZD4nOw0KCWlmKCR6YnAtPkNvbmZpZygndHRfYXJ0aWNsZScpLT52aWV3PT0iMSIpew0KCQkkdGFibGV0ZHNbXSA9ICc8dGQgY2xhc3M9InRkNSI+JyAuICRhcnRpY2xlLT5WaWV3TnVtcyAuICc8L3RkPic7DQoJfQ0KICAgICAgICAkdGFibGV0ZHNbXSA9ICc8dGQgY2xhc3M9InRkNSI+JyAuICRhcnRpY2xlLT5Db21tTnVtcyAuICc8L3RkPic7DQogICAgICAgICR0YWJsZXRkc1tdID0gJzx0ZCBjbGFzcz0idGQ1Ij4nIC4gKCRhcnRpY2xlLT5Jc1RvcCA/ICR6YnAtPmxhbmdbJ21zZyddWyd0b3AnXSAuICd8JyA6ICcnKSAuICRhcnRpY2xlLT5TdGF0dXNOYW1lIC4gJzwvdGQ+JzsNCiAgICAgICAgJHRhYmxldGRzW10gPSAnPHRkIGNsYXNzPSJ0ZDEwIHRkQ2VudGVyIj4nIC4NCiAgICAgICAgICAgICc8YSBocmVmPSInLiR6YnAtPmhvc3QuJ3piX3N5c3RlbS9jbWQucGhwP2FjdD1BcnRpY2xlRWR0JmFtcDtpZD0nIC4gJGFydGljbGUtPklEIC4gJyI+PGkgY2xhc3M9Imljb24tcGVuY2lsLXNxdWFyZSI+PC9pPjwvYT4nIC4NCiAgICAgICAgICAgICcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnIC4NCiAgICAgICAgICAgICc8YSBvbmNsaWNrPSJyZXR1cm4gd2luZG93LmNvbmZpcm0oXCcnIC4gc3RyX3JlcGxhY2UoYXJyYXkoJyInLCAnXCcnKSwgJycsICR6YnAtPmxhbmdbJ21zZyddWydjb25maXJtX29wZXJhdGluZyddKSAuICdcJyk7IiBocmVmPSInIC4gQnVpbGRTYWZlQ21kVVJMKCdhY3Q9QXJ0aWNsZURlbCZhbXA7aWQ9JyAuICRhcnRpY2xlLT5JRCkgLiAnIj48aSBjbGFzcz0iaWNvbi10cmFzaCI+PC9pPjwvYT4nIC4NCiAgICAgICAgICAgICc8L3RkPic7DQogICAgICAgIGlmICgkemJwLT5DaGVja1JpZ2h0cygnUG9zdEJhdCcpICYmICR6YnAtPm9wdGlvblsnWkNfUE9TVF9CQVRDSF9ERUxFVEUnXSkgew0KICAgICAgICAgICAgJHRhYmxldGRzW10gPSAnPHRkIGNsYXNzPSJ0ZDUgdGRDZW50ZXIiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImlkJyAuICRhcnRpY2xlLT5JRCAuICciIG5hbWU9ImlkW10iIHZhbHVlPSInIC4gJGFydGljbGUtPklEIC4gJyI+PC90ZD4nOw0KICAgICAgICB9DQogICAgICAgICR0YWJsZXRkc1tdID0gJzwvdHI+JzsNCg0KICAgICAgICBmb3JlYWNoICgkR0xPQkFMU1snaG9va3MnXVsnRmlsdGVyX1BsdWdpbl9BZG1pbl9BcnRpY2xlTW5nX1RhYmxlJ10gYXMgJGZwbmFtZSA9PiAmJGZwc2lnbmFsKSB7DQogICAgICAgICAgICAvL+S8oOWFpSDlvZPliY1wb3N077yM5b2T5YmN6KGM77yM6KGo5aS0DQogICAgICAgICAgICAkZnByZXR1cm4gPSAkZnBuYW1lKCRhcnRpY2xlLCAkdGFibGV0ZHMsICR0YWJsZXRocyk7DQogICAgICAgIH0NCg0KICAgICAgICAkdGFibGVzIC49IGltcGxvZGUoJHRhYmxldGRzKTsNCiAgICB9DQoNCiAgICBlY2hvIGltcGxvZGUoJHRhYmxldGhzKSAuICR0YWJsZXM7DQoNCiAgICBlY2hvICc8L3RhYmxlPic7DQogICAgZWNobyAnPGhyLz48cCBjbGFzcz0icGFnZWJhciI+JzsNCg0KICAgICRwLT5VcmxSdWxlLT5SdWxlc1sneyVvcmRlciV9J10gPSBHZXRWYXJzKCdvcmRlcicsICdHRVQnKTsNCiAgICBmb3JlYWNoICgkcC0+QnV0dG9ucyBhcyAka2V5ID0+ICR2YWx1ZSkgew0KICAgICAgICBpZiAoJHAtPlBhZ2VOb3cgPT0gJGtleSkgew0KICAgICAgICAgICAgZWNobyAnPHNwYW4gY2xhc3M9Im5vdy1wYWdlIj4nIC4gJGtleSAuICc8L3NwYW4+Jm5ic3A7Jm5ic3A7JzsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGVjaG8gJzxhIGhyZWY9IicgLiAkdmFsdWUgLiAnIj4nIC4gJGtleSAuICc8L2E+Jm5ic3A7Jm5ic3A7JzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJHpicC0+Q2hlY2tSaWdodHMoJ1Bvc3RCYXQnKSAmJiAkemJwLT5vcHRpb25bJ1pDX1BPU1RfQkFUQ0hfREVMRVRFJ10pIHsNCiAgICAgICAgZWNobyAnPGlucHV0ICBzdHlsZT0iZmxvYXQ6cmlnaHQ7IiB0eXBlPSJzdWJtaXQiIG5hbWU9ImFsbF9kZWwiIG9uY2xpY2s9InJldHVybiB3aW5kb3cuY29uZmlybShcJycgLiBzdHJfcmVwbGFjZShhcnJheSgnIicsICdcJycpLCAnJywgJHpicC0+bGFuZ1snbXNnJ11bJ2NvbmZpcm1fb3BlcmF0aW5nJ10pIC4gJ1wnKTsiIHZhbHVlPSInIC4gJHpicC0+bGFuZ1snbXNnJ11bJ2FsbF9kZWwnXSAuICciPic7DQogICAgfQ0KICAgIGVjaG8gJzwvcD48L2Zvcm0+PC9kaXY+JzsNCgkNCg0KCQ0KCQ0KDQoJDQogICAgZWNobyAnPHNjcmlwdD5BY3RpdmVMZWZ0TWVudSgiYUFydGljbGVNbmciKTs8L3NjcmlwdD4nOw0KICAgIGVjaG8gJzxzY3JpcHQ+QWRkSGVhZGVyRm9udEljb24oImljb24tc3RpY2tpZXMiKTs8L3NjcmlwdD4nOw0KICAgIGVjaG8gJzxzY3JpcHQ+JChcJ2Eub3JkZXJfYnV0dG9uXCcpLnBhcmVudCgpLmJpbmQoXCdtb3VzZWVudGVyIG1vdXNlbGVhdmVcJywgZnVuY3Rpb24oKSB7JCh0aGlzKS5maW5kKFwnYS5vcmRlcl9idXR0b25cJykudG9nZ2xlQ2xhc3MoXCdlbGVtZW50LXZpc2liaWxpdHktaGlkZGVuXCcpO30pOzwvc2NyaXB0Pic7DQp9
tt_article/include.phpPD9waHANCnJlcXVpcmUgZGlybmFtZShfX0ZJTEVfXykgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJy9mdW5jdGlvbi5waHAnOw0KI+azqOWGjOaPkuS7tg0KUmVnaXN0ZXJQbHVnaW4oInR0X2FydGljbGUiLCJBY3RpdmVQbHVnaW5fdHRfYXJ0aWNsZSIpOw0KZnVuY3Rpb24gQWN0aXZlUGx1Z2luX3R0X2FydGljbGUoKSB7DQoJZ2xvYmFsICR6YnA7DQoJDQoJQWRkX0ZpbHRlcl9QbHVnaW4oJ0ZpbHRlcl9QbHVnaW5fQWRtaW5fQmVnaW4nLCd0dF9hcnRpY2xlX0ZpbHRlcl9QbHVnaW5fQWRtaW5fQmVnaW4nKTsNCgkNCn0NCmZ1bmN0aW9uIHR0X2FydGljbGVfU3ViTWVudSgkaWQpew0KZ2xvYmFsICR6YnA7DQokYXJ5U3ViTWVudSA9IGFycmF5KA0KCQkxID0+IGFycmF5KCfmlofnq6DnrqHnkIYnLCAndHRfYXJ0aWNsZV9BcnRpY2xlTW5nLnBocCcsICdsZWZ0JywgZmFsc2UpLA0KCQkvLzIgPT4gYXJyYXkoJ+aWh+eroOafpemHje+8gScsICd0dF9hcnRpY2xlX0FydGljbGVNbmdfYy5waHAnLCAnbGVmdCcsIGZhbHNlKSwNCgkJMyA9PiBhcnJheSgn6K6+572uJywgJ21haW4ucGhwJywgJ2xlZnQnLCBmYWxzZSksDQoJCQ0KKTsNCg0KaWYoJHpicC0+Q29uZmlnKCd0dF9hcnRpY2xlJyktPmlzY2hvbmc9PTEpew0KCSRhcnlTdWJNZW51WzJdPSBhcnJheSgn5paH56ug5p+l6YeN77yBJywgJ3R0X2FydGljbGVfQXJ0aWNsZU1uZ19jLnBocCcsICdsZWZ0JywgZmFsc2UpOw0KfQ0KDQokcz0nJzsNCmZvcmVhY2goJGFyeVN1Yk1lbnUgYXMgJGsgPT4gJHYpew0KCQkkcy49ICc8YSBocmVmPSInLiR2WzFdLiciICcuKCR2WzNdPT10cnVlPyd0YXJnZXQ9Il9ibGFuayInOicnKS4nPjxzcGFuIGNsYXNzPSJtLScuJHZbMl0uJyAnLigkaWQ9PSRrPydtLW5vdyc6JycpLiciPicuJHZbMF0uJzwvc3Bhbj48L2E+JzsNCg0KCX0NCgkkcy49JzxkaXYgY2xhc3M9InR0X2FydGljbGVfZGl2Ij4NCiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3dwYS5xcS5jb20vbXNncmQ/dj0zJnVpbj0yMjgzMjc2OTI3JnNpdGU9cXEmbWVudT15ZXMiIHRhcmdldD0iX2JsYW5rIiA+PHNwYW4gY2xhc3M9Im0tcmlnaHQiPuWumuWItuS4u+mimOaPkuS7tlFR77yaMjI4MzI3NjkyNzwvc3Bhbj48L2E+PGEgaHJlZj0iaHR0cDovL3d3dy50dXNheS5uZXQvZGVzaWduLmh0bWwiIHRhcmdldD0iX2JsYW5rIj48c3BhbiBjbGFzcz0ibS1yaWdodCIgPui1nuWKqTwvc3Bhbj48L2E+PC9kaXY+JzsNCnJldHVybiAkczsNCn0NCg0KZnVuY3Rpb24gSW5zdGFsbFBsdWdpbl90dF9hcnRpY2xlKCkgew0KCWdsb2JhbCAkemJwOw0KCWlmKCEkemJwLT5Db25maWcoJ3R0X2FydGljbGUnKS0+bnVtKXsNCgkJJHpicC0+Q29uZmlnKCd0dF9hcnRpY2xlJyktPm51bT0nNTAnOw0KCQkkemJwLT5TYXZlQ29uZmlnKCd0dF9hcnRpY2xlJyk7DQoJfQ0KfQ0KZnVuY3Rpb24gVW5pbnN0YWxsUGx1Z2luX3R0X2FydGljbGUoKSB7DQoJZ2xvYmFsICR6YnA7DQoJJHpicC0+RGVsQ29uZmlnKCd0dF9hcnRpY2xlJyk7DQp9
tt_article/logo.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
tt_article/main.phpPD9waHANCnJlcXVpcmUgJy4uLy4uLy4uL3piX3N5c3RlbS9mdW5jdGlvbi9jX3N5c3RlbV9iYXNlLnBocCc7DQpyZXF1aXJlICcuLi8uLi8uLi96Yl9zeXN0ZW0vZnVuY3Rpb24vY19zeXN0ZW1fYWRtaW4ucGhwJzsNCg0KJHpicC0+TG9hZCgpOw0KJGFjdGlvbj0ncm9vdCc7DQppZiAoISR6YnAtPkNoZWNrUmlnaHRzKCRhY3Rpb24pKSB7JHpicC0+U2hvd0Vycm9yKDYpO2RpZSgpO30NCmlmICghJHpicC0+Q2hlY2tQbHVnaW4oJ3R0X2FydGljbGUnKSkgeyR6YnAtPlNob3dFcnJvcig0OCk7ZGllKCk7fQ0KJGJsb2d0aXRsZT0n5om56YeP5paH56ug566h55CG6YWN572uJzsNCnJlcXVpcmUgJGJsb2dwYXRoIC4gJ3piX3N5c3RlbS9hZG1pbi9hZG1pbl9oZWFkZXIucGhwJzsNCnJlcXVpcmUgJGJsb2dwYXRoIC4gJ3piX3N5c3RlbS9hZG1pbi9hZG1pbl90b3AucGhwJzsNCj8+DQo8ZGl2IGlkPSJkaXZNYWluIj4NCgk8ZGl2IGNsYXNzPSJkaXZIZWFkZXIiPjw/cGhwIGVjaG8gJGJsb2d0aXRsZTs/PjwvZGl2Pg0KCTxkaXYgY2xhc3M9IlN1Yk1lbnUiPg0KCTw/cGhwIGVjaG8gdHRfYXJ0aWNsZV9TdWJNZW51KDMpPz4NCiAgICAgICAgDQogICAgPC9kaXY+DQoJPGRpdiBpZD0iZGl2TWFpbjIiPg0KCTw/cGhwIA0KaWYoaXNzZXQoJF9QT1NUWydGb3J1bSddKSl7DQpmb3JlYWNoKCRfUE9TVFsnRm9ydW0nXSBhcyAka2V5PT4kdmFsKXsNCiR6YnAtPkNvbmZpZygndHRfYXJ0aWNsZScpLT4ka2V5ID0gJHZhbDsNCn0NCiR6YnAtPlNhdmVDb25maWcoJ3R0X2FydGljbGUnKTsNCiR6YnAtPlNob3dIaW50KCdnb29kJyk7DQp9DQoJPz4NCgkgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBzdHlsZT0ncGFkZGluZzowO21hcmdpbjowO21hcmdpbi1ib3R0b206IDVweDsnIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCcgY2xhc3M9InRhYmxlQm9yZGVyIj4NCgkgPHRyPg0KICAgIDx0ZD48bGFiZWw+DQoJPHA+PHN0cm9uZyBzdHlsZT0iY29sb3I6I0YwMCI+5rip6aao5o+Q56S677yaPC9zdHJvbmc+5raC5raC56CU54mIIHd3dy50dXNheS5uZXQgUVHlrqLmnI3kuLrvvJoyMjgzMjc2OTI3IOWuouacjee+pO+8miA0MjgzNTg1NDcg5Y+v5Lul54K55Ye75LiK6Z2i55qEICJRUeiBlOezu+W4ruWKqSIg5oyJ6ZKu5om+5Yiw5oiR44CCPC9wPg0KCTwvbGFiZWw+PC90ZD4NCgk8L3RyPg0KCTwvdGFibGU+DQoJPGZvcm0gaWQ9ImZvcm0xIiBuYW1lPSJmb3JtMSIgbWV0aG9kPSJwb3N0Ij4gIA0KICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgc3R5bGU9J3BhZGRpbmc6MDttYXJnaW46MDsnIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCcgY2xhc3M9InRhYmxlQm9yZGVyIj4NCgkJPHRyPg0KCQkJPHRoIHdpZHRoPSIxNSUiPjxwIGFsaWduPSJjZW50ZXIiPumFjee9ruWQjeensDwvcD48L3RoPg0KCQkJPHRoIHdpZHRoPSIzMCUiPjxwIGFsaWduPSJjZW50ZXIiPumFjee9ruWGheWuuTwvcD48L3RoPg0KCQkJPHRoIHdpZHRoPScyMCUnPjxwIGFsaWduPSJjZW50ZXIiPumFjee9ruivtOaYjjwvcD48L3RoPg0KCQk8L3RyPg0KCQ0KCQ0KCQk8dHI+DQoJCQk8dGQ+PGxhYmVsID48cCBhbGlnbj0iY2VudGVyIj7loavlhpnkvaDnmoTmibnph4/mlofnq6DnrqHnkIbpobXpnaLmr4/pobXmmL7npLrnmoTmlofnq6DmlbDph4/vvJo8L3A+PC9sYWJlbD48L3RkPg0KCQkJPHRkPjxwIGFsaWduPSJsZWZ0Ij48aW5wdXQgbmFtZT0iRm9ydW1bbnVtXSIgc3R5bGU9IndpZHRoOjI1MHB4OyIgdHlwZT0idGV4dCIgdmFsdWU9Ijw/cGhwIGVjaG8gJHpicC0+Q29uZmlnKCd0dF9hcnRpY2xlJyktPm51bTs/PiI+PC9wPjwvdGQ+DQoNCgkJCTx0ZD48cCBhbGlnbj0ibGVmdCI+5aGr5YaZ5L2g55qE5om56YeP5paH56ug566h55CG6aG16Z2i5q+P6aG15pi+56S655qE5paH56ug5pWw6YeP77yM6buY6K6kNTA8L3A+PC90ZD4NCgkJCQ0KCQk8L3RyPg0KCQk8dHI+DQoJCQk8dGQ+PGxhYmVsID48cCBhbGlnbj0iY2VudGVyIj7mlofnq6DmjpLluo/orr7nva7vvJo8L3A+PC9sYWJlbD48L3RkPg0KCQkJPHRkPjxwIGFsaWduPSJsZWZ0Ij4NCgkJCTxzZWxlY3QgbmFtZT0iRm9ydW1bb3JkZXJdIj4NCgkJCTw/cGhwIGVjaG8gT3V0cHV0T3B0aW9uSXRlbXNPZkNvbW1vbigkemJwLT5Db25maWcoJ3R0X2FydGljbGUnKS0+b3JkZXIsIA0KCQkJYXJyYXkoDQoJCQknMSc9PifmoLnmja7mlofnq6Dlj5HluIPml7bpl7TmjpLluo8nLA0KCQkJJzInPT4n5qC55o2u5paH56ugSUTmjpLluo8tLeato+W6jycsDQoJCQknMyc9PifmoLnmja7mlofnq6BJROaOkuW6jy0t5YCS5bqPJywNCgkJCSkpOz8+DQoJCQk8L3NlbGVjdD4NCgkJCQ0KCQkJPC9wPjwvdGQ+DQoNCgkJCTx0ZD48cCBhbGlnbj0ibGVmdCI+5paH56ug5o6S5bqP6K6+572uPC9wPjwvdGQ+DQoJCQkNCgkJPC90cj4NCgkJPHRyPg0KCQkJPHRkPjxsYWJlbCA+PHAgYWxpZ249ImNlbnRlciI+5paH56ug566h55CG5piv5ZCm5pi+56S65rWP6KeI6YeP77yaPC9wPjwvbGFiZWw+PC90ZD4NCgkJCTx0ZD48cCBhbGlnbj0ibGVmdCI+PGlucHV0IG5hbWU9IkZvcnVtW3ZpZXddIiBjbGFzcz0iY2hlY2tib3giICB0eXBlPSJ0ZXh0IiB2YWx1ZT0iPD9waHAgZWNobyAkemJwLT5Db25maWcoJ3R0X2FydGljbGUnKS0+dmlldzs/PiI+PC9wPjwvdGQ+DQoNCgkJCTx0ZD48cCBhbGlnbj0ibGVmdCI+5paH56ug566h55CG5piv5ZCm5pi+56S65rWP6KeI6YeP77yM6buY6K6k5LiN5pi+56S6PC9wPjwvdGQ+DQoJCQkNCgkJPC90cj4NCgkJPHRyPg0KCQkJPHRkPjxsYWJlbCA+PHAgYWxpZ249ImNlbnRlciI+5piv5ZCm5L2/55So5paH56ug5p+l6YeN5Yqf6IO977yaPC9wPjwvbGFiZWw+PC90ZD4NCgkJCTx0ZD48cCBhbGlnbj0ibGVmdCI+PGlucHV0IG5hbWU9IkZvcnVtW2lzY2hvbmddIiBjbGFzcz0iY2hlY2tib3giICB0eXBlPSJ0ZXh0IiB2YWx1ZT0iPD9waHAgZWNobyAkemJwLT5Db25maWcoJ3R0X2FydGljbGUnKS0+aXNjaG9uZzs/PiI+PC9wPjwvdGQ+DQoNCgkJCTx0ZD48cCBhbGlnbj0ibGVmdCI+5piv5ZCm5L2/55So5paH56ug5p+l6YeN5Yqf6IO977yM6buY6K6k5LiN5pi+56S6LOWkp+aVsOaNruivt+S4jeimgeW8gOWQr+atpOWKn+iDveOAgjwvcD48L3RkPg0KCQkJDQoJCTwvdHI+DQoJPC90YWJsZT4NCgk8YnIgLz4NCiAgIDxpbnB1dCBuYW1lPSIiIHR5cGU9IlN1Ym1pdCIgY2xhc3M9ImJ1dHRvbiIgdmFsdWU9IuS/neWtmCIvPg0KICAgIDwvZm9ybT4JCQ0KCTwvZGl2Pg0KPC9kaXY+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpBY3RpdmVUb3BNZW51KCJ0b3BtZW51X3R0X2FydGljbGUiKTsNCjwvc2NyaXB0PiANCjw/cGhwDQpyZXF1aXJlICRibG9ncGF0aCAuICd6Yl9zeXN0ZW0vYWRtaW4vYWRtaW5fZm9vdGVyLnBocCc7DQpSdW5UaW1lKCk7DQo/Pg==
tt_article/plugin.xmlPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxwbHVnaW4gdmVyc2lvbj0icGhwIj4NCjxpZD50dF9hcnRpY2xlPC9pZD4NCjxuYW1lPuaJuemHj+aWh+eroOeuoeeQhjwvbmFtZT4NCjx1cmw+aHR0cDovL3d3dy50dXNheS5uZXQvPC91cmw+DQo8bm90ZT7mibnph4/mlofnq6DnrqHnkIY8L25vdGU+DQo8ZGVzY3JpcHRpb24+5om56YeP5paH56ug566h55CGLOaUr+aMgeafpemHjeaWh+eroOWKn+iDve+8jOWFqOaWsOaUr+aMgTEuNy4xPC9kZXNjcmlwdGlvbj4NCjxwYXRoPm1haW4ucGhwPC9wYXRoPg0KPGluY2x1ZGU+aW5jbHVkZS5waHA8L2luY2x1ZGU+DQo8bGV2ZWw+MTwvbGV2ZWw+DQo8YXV0aG9yPg0KICA8bmFtZT7mtoLmtoLnoJTniYg8L25hbWU+DQogIDxlbWFpbD4xMjE2Mjg5MjAwQHFxLmNvbTwvZW1haWw+DQogIDx1cmw+aHR0cDovL3d3dy50dXNheS5uZXQ8L3VybD4NCjwvYXV0aG9yPg0KPHNvdXJjZT4NCiAgPG5hbWU+PC9uYW1lPg0KICA8ZW1haWw+PC9lbWFpbD4NCiAgPHVybD48L3VybD4NCjwvc291cmNlPg0KPGFkYXB0ZWQ+MTcyOTAwPC9hZGFwdGVkPg0KPHZlcnNpb24+MS43LjE8L3ZlcnNpb24+DQo8cHViZGF0ZT4yMDE3LTA5LTIyPC9wdWJkYXRlPg0KPG1vZGlmaWVkPjIwMjItMDEtMTk8L21vZGlmaWVkPg0KPHByaWNlPjA8L3ByaWNlPg0KPHBocHZlcj41LjI8L3BocHZlcj4NCjxhZHZhbmNlZD4NCiAgPGRlcGVuZGVuY3k+PC9kZXBlbmRlbmN5Pg0KICA8cmV3cml0ZWZ1bmN0aW9ucz48L3Jld3JpdGVmdW5jdGlvbnM+DQogIDxleGlzdHNmdW5jdGlvbnM+PC9leGlzdHNmdW5jdGlvbnM+DQogIDxjb25mbGljdD48L2NvbmZsaWN0Pg0KPC9hZHZhbmNlZD4NCjxzaWRlYmFycz4NCiAgPHNpZGViYXIxPjwvc2lkZWJhcjE+DQogIDxzaWRlYmFyMj48L3NpZGViYXIyPg0KICA8c2lkZWJhcjM+PC9zaWRlYmFyMz4NCiAgPHNpZGViYXI0Pjwvc2lkZWJhcjQ+DQogIDxzaWRlYmFyNT48L3NpZGViYXI1Pg0KICA8c2lkZWJhcjY+PC9zaWRlYmFyNj4NCiAgPHNpZGViYXI3Pjwvc2lkZWJhcjc+DQogIDxzaWRlYmFyOD48L3NpZGViYXI4Pg0KICA8c2lkZWJhcjk+PC9zaWRlYmFyOT4NCjwvc2lkZWJhcnM+DQo8L3BsdWdpbj4=
tt_article/tt_article_ArticleMng.phpPD9waHANCnJlcXVpcmUgJy4uLy4uLy4uL3piX3N5c3RlbS9mdW5jdGlvbi9jX3N5c3RlbV9iYXNlLnBocCc7DQpyZXF1aXJlICcuLi8uLi8uLi96Yl9zeXN0ZW0vZnVuY3Rpb24vY19zeXN0ZW1fYWRtaW4ucGhwJzsNCg0KJHpicC0+TG9hZCgpOw0KJGFjdGlvbj0ncm9vdCc7DQppZiAoISR6YnAtPkNoZWNrUmlnaHRzKCRhY3Rpb24pKSB7JHpicC0+U2hvd0Vycm9yKDYpO2RpZSgpO30NCmlmICghJHpicC0+Q2hlY2tQbHVnaW4oJ3R0X2FydGljbGUnKSkgeyR6YnAtPlNob3dFcnJvcig0OCk7ZGllKCk7fQ0KJGJsb2d0aXRsZT0n5om56YeP5paH56ug566h55CGJzsNCnJlcXVpcmUgJGJsb2dwYXRoIC4gJ3piX3N5c3RlbS9hZG1pbi9hZG1pbl9oZWFkZXIucGhwJzsNCnJlcXVpcmUgJGJsb2dwYXRoIC4gJ3piX3N5c3RlbS9hZG1pbi9hZG1pbl90b3AucGhwJzsNCj8+DQo8ZGl2IGlkPSJkaXZNYWluIj4NCgk8P3BocCANCgl0dF9hcnRpY2xlX0FkbWluX0FydGljbGVNbmcoKTsNCgk7Pz4NCjwvZGl2Pg0KPD9waHANCnJlcXVpcmUgJGJsb2dwYXRoIC4gJ3piX3N5c3RlbS9hZG1pbi9hZG1pbl9mb290ZXIucGhwJzsNClJ1blRpbWUoKTsNCj8+
tt_article/tt_article_ArticleMng_c.phpPD9waHANCnJlcXVpcmUgJy4uLy4uLy4uL3piX3N5c3RlbS9mdW5jdGlvbi9jX3N5c3RlbV9iYXNlLnBocCc7DQpyZXF1aXJlICcuLi8uLi8uLi96Yl9zeXN0ZW0vZnVuY3Rpb24vY19zeXN0ZW1fYWRtaW4ucGhwJzsNCg0KJHpicC0+TG9hZCgpOw0KJGFjdGlvbj0ncm9vdCc7DQppZiAoISR6YnAtPkNoZWNrUmlnaHRzKCRhY3Rpb24pKSB7JHpicC0+U2hvd0Vycm9yKDYpO2RpZSgpO30NCmlmICghJHpicC0+Q2hlY2tQbHVnaW4oJ3R0X2FydGljbGUnKSkgeyR6YnAtPlNob3dFcnJvcig0OCk7ZGllKCk7fQ0KJGJsb2d0aXRsZT0n5om56YeP5paH56ug566h55CGLS3mlofnq6Dmn6Xph40nOw0KcmVxdWlyZSAkYmxvZ3BhdGggLiAnemJfc3lzdGVtL2FkbWluL2FkbWluX2hlYWRlci5waHAnOw0KcmVxdWlyZSAkYmxvZ3BhdGggLiAnemJfc3lzdGVtL2FkbWluL2FkbWluX3RvcC5waHAnOw0KPz4NCjxkaXYgaWQ9ImRpdk1haW4iPg0KCTw/cGhwIA0KCXR0X2FydGljbGVfQWRtaW5fQXJ0aWNsZU1uZ19jKCk7DQoJOz8+DQo8L2Rpdj4NCjw/cGhwDQpyZXF1aXJlICRibG9ncGF0aCAuICd6Yl9zeXN0ZW0vYWRtaW4vYWRtaW5fZm9vdGVyLnBocCc7DQpSdW5UaW1lKCk7DQo/Pg==
aHR0cDovLzEyNy4wLjAuMS8yMDIxL3picDE3MS8KRjovbmV3L2h0ZG9jcy8yMDIxL3picDE3MS8=