diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fed9dbb..5461033f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). In order to read more about upgrading and BC breaks have a look at the [UPGRADE Document](UPGRADE.md). +## 4.1.1 () + ++ [#361](https://github.com/luyadev/luya-module-cms/issues/361) Fixed an issue where link directive does not load menu data in crud context (without an inital load of the cms view). + ## 4.1.0 (21. September 2021) + [#360](https://github.com/luyadev/luya-module-cms/pull/360) Changed misleading icon for page properties in dropdown menu. diff --git a/src/admin/resources/dist/main.js b/src/admin/resources/dist/main.js index 70e94bfd..e05b6a5b 100644 --- a/src/admin/resources/dist/main.js +++ b/src/admin/resources/dist/main.js @@ -27,7 +27,9 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterat function init() { if ($scope.menuData.length == 0) { - ServiceMenuData.load(); + ServiceMenuData.load().then(function () { + ServiceCurrentWebsite.load(); + }); } } @@ -2093,4 +2095,4 @@ zaa.factory("ServiceWorkingPageVersion", [function () { }; return service; -}]);//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2pzL2Ntc2FkbWluLmpzIiwiLi4vanMvc2VydmljZXMuanMiXSwibmFtZXMiOlsiemFhIiwiZGlyZWN0aXZlIiwiU2VydmljZU1lbnVEYXRhIiwiU2VydmljZUN1cnJlbnRXZWJzaXRlIiwiJGZpbHRlciIsInJlc3RyaWN0Iiwic2NvcGUiLCJuYXZJZCIsImNvbnRyb2xsZXIiLCIkc2NvcGUiLCJjaGFuZ2VNb2RlbCIsImRhdGEiLCJpZCIsImN1cnJlbnRXZWJzaXRlIiwiJG9uIiwiZXZlbnQiLCJtZW51RGF0YSIsImFuZ3VsYXIiLCJjb3B5IiwibWVudURhdGFPcmlnaW5hbCIsImluaXQiLCJsZW5ndGgiLCJsb2FkIiwiY29udGFpbmVyIiwiY29udGFpbmVycyIsImlzSGlkZGVuIiwiJHdhdGNoIiwibiIsIml0ZW1zIiwidGl0bGUiLCJmb3JFYWNoIiwidmFsdWUiLCJidWJibGVQYXJlbnRzIiwicGFyZW50TmF2SWQiLCJjb250YWluZXJJZCIsImluZGV4IiwiaXRlbSIsImV4aXN0cyIsImkiLCJwdXNoIiwicGFyZW50X25hdl9pZCIsIm5hdl9jb250YWluZXJfaWQiLCJ0b2dnbGVyIiwidGVtcGxhdGUiLCJpMThuIiwiJGh0dHAiLCIkc3RhdGUiLCJnZXQiLCJwYXJhbXMiLCJ0aGVuIiwicmVzcG9uc2UiLCJwYXRoIiwidGVtcGxhdGVVcmwiLCJTZXJ2aWNlTGFuZ3VhZ2VzRGF0YSIsIkFkbWluVG9hc3RTZXJ2aWNlIiwiZXJyb3IiLCJzdWNjZXNzIiwiJHBhcmVudCIsIm1lbnVEYXRhUmVsb2FkIiwiaW5pdGlhbGl6ZXIiLCJtZW51IiwibmF2Y29udGFpbmVycyIsIm5hdl9pdGVtX3R5cGUiLCJpc19kcmFmdCIsImRlZmF1bHRfY29udGFpbmVyX2lkIiwibGFuZ3VhZ2VzRGF0YSIsImlzRGVmYXVsdEl0ZW0iLCJmaW5kIiwiaXNfZGVmYXVsdCIsImxhbmdfaWQiLCJvIiwidW5kZWZpbmVkIiwiYWxpYXNTdWdnZXN0aW9uIiwiYWxpYXMiLCJleGVjIiwic2F2ZSIsImlzSW5saW5lIiwiZ2V0SXRlbSIsIm5hdl9pZCIsInJlYXNvbiIsImtleSIsIlNlcnZpY2VMYXlvdXRzRGF0YSIsInBhcmVudCIsIm5hdkl0ZW1JZCIsImxheW91dF9pZCIsImxheW91dHNEYXRhIiwiYXJyYXlUb1NlbGVjdCIsImlucHV0IiwidmFsdWVGaWVsZCIsImxhYmVsRmllbGQiLCJvdXRwdXQiLCJ2ZXJzaW9uc0RhdGEiLCJnZXRWZXJzaW9uTGlzdCIsImlzRWRpdEF2YWlsYWJsZSIsInVzZV9kcmFmdCIsImZyb21fZHJhZnRfaWQiLCJkcmFmdHMiLCJsYXlvdXRzIiwibW9kdWxlcyIsImNvbnRyb2xsZXJzIiwiYWN0aW9ucyIsImFkZFBhcmFtIiwiaGFzT3duUHJvcGVydHkiLCJhY3Rpb25fcGFyYW1zIiwibW9kdWxlX25hbWUiLCJjb250cm9sbGVyX25hbWUiLCJmaWx0ZXIiLCJ3ZWJzaXRlSWQiLCJyZXN1bHQiLCJ3ZWJzaXRlX2lkIiwicmV0dXJuVmFsdWUiLCJmYWN0b3J5Iiwic2VydmljZSIsInN0YXR1cyIsImRlbGVnYXRlIiwiY29uZmlnIiwiJHN0YXRlUHJvdmlkZXIiLCJzdGF0ZSIsInVybCIsImdvIiwiZGFzaGJvYXJkIiwicG9zdCIsImhlYWRlcnMiLCJjcmVhdGVOZXdWZXJzaW9uU3VibWl0IiwiY29weUV4aXN0aW5nVmVyc2lvbiIsInZlcnNpb25MYXlvdXRJZCIsIiQiLCJwYXJhbSIsInZlcnNpb25OYW1lIiwiZnJvbVZlcnNpb25QYWdlSWQiLCJyZWZyZXNoRm9yY2UiLCJpc09wZW4iLCJpdGVtU2VsZWN0aW9uIiwic2VsZWN0aW9uIiwiTmF2SXRlbUNvbnRyb2xsZXIiLCJzZWxlY3QiLCJsb2FkSXRlbXMiLCJOYXZDb250cm9sbGVyIiwibmF2RGF0YSIsImxhbmciLCJyZWZyZXNoIiwiZXJyb3JBcnJheSIsIiRyb290U2NvcGUiLCJTZXJ2aWNlTGl2ZUVkaXRNb2RlIiwibGl2ZUVkaXRTdGF0ZSIsImxvYWRDbXNDb25maWciLCJjbXNDb25maWciLCJjdXJyZW50V2Vic2l0ZVRvZ2dsZXIiLCJuZXdWYWx1ZSIsIm9sZFZhbHVlIiwidG9nZ2xlIiwiZHJvcEVtcHR5Q29udGFpbmVyIiwiZHJhZ2dlZCIsImRyb3BwZWQiLCJwb3NpdGlvbiIsImNhdElkIiwibW92ZUl0ZW1JZCIsImRyb3BwZWRPbkNhdElkIiwic3VjY2VzIiwiZHJvcEl0ZW0iLCJkcmFnIiwiZHJvcCIsInBvcyIsImFwaSIsImRyb3BwZWRBZnRlckl0ZW1JZCIsImRyb3BwZWRCZWZvcmVJdGVtSWQiLCJkcm9wcGVkT25JdGVtSWQiLCJ2YWxpZEl0ZW0iLCJob3ZlciIsImRyYWdlZCIsInJyaXRlbXMiLCJyZWN1cnNpdkl0ZW1WYWxpZGl0eSIsImluZGV4T2YiLCJ0b2dnbGVJdGVtIiwidG9nZ2xlX29wZW4iLCJpZ25vcmVMb2FkaW5nQmFyIiwiY2hhbmdlVXJsIiwibmF2X2l0ZW1faWQiLCJzaG93RHJhZyIsImlzQ3VycmVudEVsZW1lbnQiLCJoaWRkZW5DYXRzIiwidG9nZ2xlQ2F0IiwidG9nZ2xlSXNIaWRkZW4iLCIkcSIsInJlc29sdmUiLCJyZWplY3QiLCIkc3RhdGVQYXJhbXMiLCJQbGFjZWhvbGRlclNlcnZpY2UiLCJTZXJ2aWNlUHJvcGVydGllc0RhdGEiLCJBZG1pbkNsYXNzU2VydmljZSIsIkFkbWluTGFuZ1NlcnZpY2UiLCJIdG1sU3RvcmFnZSIsInBhZ2VTZXR0aW5nc092ZXJsYXlIaWRkZW4iLCJwYWdlU2V0dGluZ3NPdmVybGF5VGFiIiwidG9nZ2xlUGFnZVNldHRpbmdzT3ZlcmxheSIsInQiLCJuYXZDZmciLCJoZWxwdGFncyIsImx1eWFjZmciLCJkaXNwbGF5TGl2ZUNvbnRhaW5lciIsImxpdmVVcmwiLCJwcm9wZXJ0aWVzRGF0YSIsInBsYWNlaG9sZGVyU3RhdGUiLCJpc0Jsb2NraG9sZGVyU21hbGwiLCJnZXRWYWx1ZSIsInRvZ2dsZUJsb2NraG9sZGVyU2l6ZSIsInNldFZhbHVlIiwic2lkZWJhciIsImVuYWJsZVNpZGViYXIiLCJ0b2dnbGVTaWRlYmFyIiwic2hvd0FjdGlvbnMiLCJwYXJzZUludCIsImlzRGVsZXRlZCIsInByb3BWYWx1ZXMiLCJoYXNWYWx1ZXMiLCJwYWdlVGFncyIsImNyZWF0ZURlZXBQYWdlQ29weSIsInNhdmVQYWdlVGFncyIsImNyZWF0ZURlZXBQYWdlQ29weUFzVGVtcGxhdGUiLCJsb2FkTmF2UHJvcGVydGllcyIsImQiLCJhZG1pbl9wcm9wX2lkIiwidG9nZ2xlUHJvcE1hc2siLCJzaG93UHJvcEZvcm0iLCJzdG9yZVByb3BWYWx1ZXMiLCJ0cmFzaCIsImNvbmZpcm0iLCIkdG9hc3QiLCJjbG9zZSIsImlzRHJhZnQiLCJzdWJtaXROYXZGb3JtIiwiaTE4blBhcmFtIiwibWVzc2FnZSIsImlzX29mZmxpbmUiLCJvZmZsaW5lU3RhdHVzIiwiaW5mbyIsImlzX2hpZGRlbiIsImhpZGRlblN0YXR1cyIsImlzX2hvbWUiLCJob21lU3RhdGUiLCIkdGltZW91dCIsIlNlcnZpY2VXb3JraW5nUGFnZVZlcnNpb24iLCJsb2FkZWQiLCJvcGVuTGl2ZVVybCIsInZlcnNpb25JZCIsImxvYWRMaXZlVXJsIiwiY3VycmVudFBhZ2VWZXJzaW9uIiwiaXNUcmFuc2xhdGVkIiwiaXRlbUNvcHkiLCJzZXR0aW5ncyIsInR5cGVEYXRhQ29weSIsInR5cGVEYXRhIiwiZXJyb3JzIiwiaG9tZVVybCIsImN1cnJlbnRQYWdlVmVyc2lvbkFsaWFzIiwidHJhc2hJdGVtIiwiZGVsZXRlIiwiJGJyb2FkY2FzdCIsInJlc2V0IiwibmF2X2l0ZW1fdHlwZV9pZCIsInVwZGF0ZU5hdkl0ZW1EYXRhIiwidGl0bGVfdGFnIiwiZGVzY3JpcHRpb24iLCJrZXl3b3JkcyIsInRpbWVzdGFtcF9jcmVhdGUiLCJpbWFnZV9pZCIsImlzX3VybF9zdHJpY3RfcGFyc2luZ19kaXNhYmxlZCIsImlzX2NhY2hlYWJsZSIsInBhZ2VWZXJzaW9uS2V5IiwiT2JqZWN0Iiwia2V5cyIsInRvZ2dsZVNldHRpbmdzT3ZlcmxheSIsImVycm9yQ2FsbGJhY2siLCJyZW1vdmVWZXJzaW9uIiwidmVyc2lvbiIsInZlcnNpb25fYWxpYXMiLCJwYWdlSWQiLCJlZGl0VmVyc2lvbkl0ZW0iLCJ0YWIiLCJlZGl0VmVyc2lvbiIsInZlcnNpb25JdGVtIiwiY2hhbmdlVGFiIiwiZWRpdFZlcnNpb25VcGRhdGUiLCJsYW5nSWQiLCJtZXRob2QiLCJsYXN0VmVyc2lvbiIsImhhc1ZlcnNpb24iLCJzd2l0Y2hWZXJzaW9uIiwidmVyc2lvbkRyb3BEb3duVmlzYmlsaXR5IiwidG9nZ2xlVmVyc2lvbnNEcm9wZG93biIsInBhZ2VWZXJzaW9uaWQiLCJzdG9yZSIsImlzSW5TZWxlY3Rpb24iLCJzaG9ydF9jb2RlIiwic2V0dGluZ3NPdmVybGF5VmlzaWJpbGl0eSIsInJlZnJlc2hOZXN0ZWQiLCJwcmV2SWQiLCJwbGFjZWhvbGRlclZhciIsIm5hdkl0ZW1QYWdlSWQiLCJfX3BsYWNlaG9sZGVycyIsInBsYWNlaG9sZGVyIiwicmV2UGxhY2Vob2xkZXJzIiwicGxhY2Vob2xkZXJzIiwicmVwbGFjZUNvbnRlbnQiLCJwbGFjZWhvbGRlclJvdyIsInBsYWNlaG9sZGVyS2V5IiwicHJldl9pZCIsInJldkZpbmQiLCJob2xkZXJLZXkiLCJob2xkZXIiLCJkcm9wSXRlbVBsYWNlaG9sZGVyIiwic29ydF9pbmRleCIsImJsb2NrX2lkIiwicGxhY2Vob2xkZXJfdmFyIiwibmF2X2l0ZW1fcGFnZV9pZCIsImNvcHlCbG9ja0lkIiwicHV0IiwiJHNjZSIsIlNlcnZpY2VCbG9ja0NvcHlTdGFjayIsIk5hdkl0ZW1UeXBlUGFnZUNvbnRyb2xsZXIiLCJ2YXIiLCJlbGVtZW50Iiwic29ydEluZGV4IiwiJGluZGV4IiwicmVtb3ZlIiwiY29weUJsb2NrIiwiYmxvY2siLCJ0b2dnbGVIaWRkZW4iLCJibG9ja0lkIiwiaGlkZGVuU3RhdGUiLCJuYW1lIiwiaXNFZGl0YWJsZSIsInZhcnMiLCJpc0NvbmZpZ3VyYWJsZSIsImNmZ3MiLCJ2YWx1ZXMiLCJ2YXJpYXRpb24iLCJldmFsVmFyaWF0aW9uVmlzYmlsaXR5IiwiZ2V0SW5mbyIsInZhckZpZWxkTmFtZSIsImZpZWxkX2hlbHAiLCJ2YXJpYXRlbk5hbWUiLCJ2YXJpYXRpb25zIiwiaXNPYmplY3QiLCJ2IiwiayIsIm9iamVjdCIsImludmlzaWJsZSIsImNmZ2RhdGEiLCJjZmd2YWx1ZXMiLCJlZGl0IiwibW9kYWxIaWRkZW4iLCJtb2RhbE1vZGUiLCJpbml0TW9kYWxNb2RlIiwidG9nZ2xlRWRpdCIsInJlbmRlclRlbXBsYXRlIiwiZGF0YVZhcnMiLCJjZmdWYXJzIiwiZXh0cmFzIiwiVHdpZyIsInR3aWciLCJjb250ZW50IiwicmVuZGVyIiwidHJ1c3RBc0h0bWwiLCJyZW1vdmVCbG9jayIsImlzQW55UmVxdWlyZWRBdHRyaWJ1dGVFbXB0eSIsInZhckl0ZW0iLCJyZXF1aXJlZCIsImlzRW1wdHkiLCJsYWJlbCIsImpzb25fY29uZmlnX3ZhbHVlcyIsImpzb25fY29uZmlnX2NmZ192YWx1ZXMiLCJpc19kaXJ0eSIsIm9iamVjdGRldGFpbCIsIlNlcnZpY2VCbG9ja3NEYXRhIiwiYmxvY2tzRGF0YSIsImJsb2Nrc0RhdGFSZXN0b3JlIiwiYmxvY2tzRGF0YVJlbG9hZCIsImFkZFRvRmF2IiwicmVtb3ZlRnJvbUZhdiIsInRvZ2dsZUdyb3VwIiwiZ3JvdXAiLCJpc1ByZXZpZXdFbmFibGVkIiwicHJldmlld19lbmFibGVkIiwiY29weVN0YWNrIiwic3RhY2siLCJjbGVhclN0YWNrIiwiY2xlYXIiLCJzZWFyY2hRdWVyeSIsInNlYXJjaElzRGlydHkiLCJpc19mYXYiLCJzcGxpY2UiLCJyZXNvbHZlclByb3ZpZGVyIiwiYWRkQ2FsbGJhY2siLCJMdXlhTG9hZGluZyIsInN0YXJ0Iiwic3RvcCIsInNoaWZ0IiwiaWNvbiIsImNvcHlzdGFjayIsImZvcmNlUmVsb2FkIiwic2V0VXJsIiwiaXRlbUlkIiwiRGF0ZSIsImdldFRpbWUiLCJwcmV2aWV3VXJsIiwiZGVmYXVsdFdlYnNpdGUiLCJ3ZWJzaXRlcyIsInciLCJwYWdlIl0sIm1hcHBpbmdzIjoiOztBQUFBLENBQUMsWUFBVztBQUNYLGVB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Q0FBQ3lTLElBQVIsQ0FBYXJJLE1BQWIsSUFBdUJoQyxTQUF2QjtBQUNBLEdBRkQ7O0FBSUFwSSxFQUFBQSxPQUFPLENBQUM4SyxVQUFSLEdBQXFCLFVBQVNWLE1BQVQsRUFBaUI7QUFDckMsUUFBSXBLLE9BQU8sQ0FBQ3lTLElBQVIsQ0FBYW5ULGNBQWIsQ0FBNEI4SyxNQUE1QixDQUFKLEVBQXlDO0FBQ3hDLGFBQU9wSyxPQUFPLENBQUN5UyxJQUFSLENBQWFySSxNQUFiLENBQVA7QUFDQTs7QUFFRCxXQUFPLEtBQVA7QUFDQSxHQU5EOztBQVFBLFNBQU9wSyxPQUFQO0FBQ0EsQ0FsQndDLENBQXpDIiwiZmlsZSI6Im1haW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKSB7XG5cdFwidXNlIHN0cmljdFwiO1xuXHRcblx0Ly8gZGlyZWN0aXZlLmpzXG5cbiAgICB6YWEuZGlyZWN0aXZlKFwibWVudURyb3Bkb3duXCIsIFsnU2VydmljZU1lbnVEYXRhJywgJ1NlcnZpY2VDdXJyZW50V2Vic2l0ZScsICckZmlsdGVyJywgZnVuY3Rpb24oU2VydmljZU1lbnVEYXRhLCBTZXJ2aWNlQ3VycmVudFdlYnNpdGUsICRmaWx0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0IDogJ0UnLFxuICAgICAgICAgICAgc2NvcGUgOiB7XG4gICAgICAgICAgICAgICAgbmF2SWQgOiAnPSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250cm9sbGVyIDogWyckc2NvcGUnLCBmdW5jdGlvbigkc2NvcGUpIHtcblxuICAgICAgICAgICAgICAgICRzY29wZS5jaGFuZ2VNb2RlbCA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm5hdklkID0gZGF0YS5pZDtcbiAgICAgICAgICAgICAgICB9XG5cblx0XHRcdFx0JHNjb3BlLmN1cnJlbnRXZWJzaXRlID0gU2VydmljZUN1cnJlbnRXZWJzaXRlLmN1cnJlbnRXZWJzaXRlO1xuXHRcdFx0XHQkc2NvcGUuJG9uKCdzZXJ2aWNlOkN1cnJlbnRXZWJzaXRlQ2hhbmdlZCcsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdFx0XHRcdFx0JHNjb3BlLmN1cnJlbnRXZWJzaXRlID0gU2VydmljZUN1cnJlbnRXZWJzaXRlLmN1cnJlbnRXZWJzaXRlO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQkc2NvcGUubWVudURhdGEgPSBhbmd1bGFyLmNvcHkoU2VydmljZU1lbnVEYXRhLmRhdGEpO1xuXHRcdFx0XHQkc2NvcGUubWVudURhdGFPcmlnaW5hbCA9IGFuZ3VsYXIuY29weShTZXJ2aWNlTWVudURhdGEuZGF0YSk7XG5cbiAgICAgICAgICAgICAgICAkc2NvcGUuJG9uKCdzZXJ2aWNlOk1lbnVEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcblx0XHRcdFx0XHQkc2NvcGUubWVudURhdGEgPSBhbmd1bGFyLmNvcHkoZGF0YSk7XG5cdFx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhT3JpZ2luYWwgPSBhbmd1bGFyLmNvcHkoZGF0YSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbml0KCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLm1lbnVEYXRhLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlTWVudURhdGEubG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgY29udGFpbmVyIGluICRzY29wZS5tZW51RGF0YS5jb250YWluZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5tZW51RGF0YS5jb250YWluZXJzW2NvbnRhaW5lcl0uaXNIaWRkZW4gPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdFx0JHNjb3BlLiR3YXRjaCgnc2VhcmNoUXVlcnknLCBmdW5jdGlvbihuKSB7XG5cdFx0XHRcdFx0aWYgKG4gPT0gbnVsbCB8fCBuID09ICcnKSB7XG5cdFx0XHRcdFx0XHQkc2NvcGUubWVudURhdGEuaXRlbXMgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLm1lbnVEYXRhT3JpZ2luYWwuaXRlbXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgaXRlbXMgPSAkZmlsdGVyKCdmaWx0ZXInKSgkc2NvcGUubWVudURhdGFPcmlnaW5hbC5pdGVtcywge3RpdGxlOiBufSk7XG5cblx0XHRcdFx0XHQvLyBmaW5kIGFsbCBwYXJlbnQgZWxlbWVudHMgb2YgdGhlIGZvdW5kIGVsZW1lbnRzIGFuZCByZSBhZGQgdGhlbSB0byB0aGUgbWFwIGluIG9yZGVyIHRvIFxuXHRcdFx0XHRcdC8vIGVuc3VyZSBhIGNvcnJlY3QgbWVudSB0cmVlLlxuXHRcdFx0XHRcdGFuZ3VsYXIuZm9yRWFjaChpdGVtcywgZnVuY3Rpb24odmFsdWUpIHtcblx0XHRcdFx0XHRcdGlmICh2YWx1ZVsncGFyZW50X25hdl9pZCddID4gMCkge1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUuYnViYmxlUGFyZW50cyh2YWx1ZVsncGFyZW50X25hdl9pZCddLCB2YWx1ZVsnbmF2X2NvbnRhaW5lcl9pZCddLCBpdGVtcyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHQkc2NvcGUubWVudURhdGEuaXRlbXMgPSBpdGVtcztcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0JHNjb3BlLmJ1YmJsZVBhcmVudHMgPSBmdW5jdGlvbihwYXJlbnROYXZJZCwgY29udGFpbmVySWQsIGluZGV4KSB7XG5cdFx0XHRcdFx0dmFyIGl0ZW0gPSAkZmlsdGVyKCdtZW51Y2hpbGRmaWx0ZXInKSgkc2NvcGUubWVudURhdGFPcmlnaW5hbC5pdGVtcywgY29udGFpbmVySWQsIHBhcmVudE5hdklkKTtcblx0XHRcdFx0XHRpZiAoaXRlbSkge1xuXHRcdFx0XHRcdFx0dmFyIGV4aXN0cyA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0YW5ndWxhci5mb3JFYWNoKGluZGV4LCBmdW5jdGlvbihpKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChpLmlkID09IGl0ZW0uaWQpIHtcblx0XHRcdFx0XHRcdFx0XHRleGlzdHMgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0aWYgKCFleGlzdHMpIHtcblx0XHRcdFx0XHRcdFx0aW5kZXgucHVzaChpdGVtKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCRzY29wZS5idWJibGVQYXJlbnRzKGl0ZW0ucGFyZW50X25hdl9pZCwgaXRlbS5uYXZfY29udGFpbmVyX2lkLCBpbmRleCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXG4gICAgICAgICAgICAgICAgJHNjb3BlLnRvZ2dsZXIgPSB0cnVlO1xuXG5cdFx0XHRcdGluaXQoKTtcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgdGVtcGxhdGUgOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICc8ZGl2PicrXG5cdFx0XHRcdFx0JzxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtYi0yXCI+Jytcblx0XHRcdFx0XHRcdCc8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtcHJlcGVuZFwiIG5nLWhpZGU9XCJzZWFyY2hRdWVyeVwiPjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCI+PGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnNlYXJjaDwvaT48L2Rpdj48L2Rpdj4nK1xuXHRcdFx0XHRcdFx0JzxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1wcmVwZW5kXCIgbmctc2hvdz1cInNlYXJjaFF1ZXJ5XCIgbmctY2xpY2s9XCJzZWFyY2hRdWVyeSA9IFxcJ1xcJ1wiPjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCI+PGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmNsZWFyPC9pPjwvZGl2PjwvZGl2PicrXG5cdFx0XHRcdFx0XHQnPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmctbW9kZWw9XCJzZWFyY2hRdWVyeVwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCInK2kxOG5bJ25ncmVzdF9jcnVkX3NlYXJjaF90ZXh0J10rJ1wiPicrXG5cdFx0XHRcdFx0JzwvZGl2PicgKyBcblx0XHRcdFx0XHQnPGRpdiBuZy1yZXBlYXQ9XCIoa2V5LCBjb250YWluZXIpIGluIG1lbnVEYXRhLmNvbnRhaW5lcnMgfCBtZW51d2Vic2l0ZWZpbHRlcjpjdXJyZW50V2Vic2l0ZS5pZFwiIG5nLWlmPVwiKG1lbnVEYXRhLml0ZW1zIHwgbWVudXBhcmVudGZpbHRlcjpjb250YWluZXIuaWQ6MCkubGVuZ3RoID4gMFwiIGNsYXNzPVwiY2FyZCBtYi0yXCIgbmctY2xhc3M9XCJ7XFwnY2FyZC1jbG9zZWRcXCc6ICFjb250YWluZXIuaXNIaWRkZW59XCI+Jytcblx0XHRcdFx0XHRcdCc8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIiBuZy1jbGljaz1cImNvbnRhaW5lci5pc0hpZGRlbj0hY29udGFpbmVyLmlzSGlkZGVuXCI+Jytcblx0XHRcdFx0XHRcdFx0JzxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY2FyZC10b2dnbGUtaW5kaWNhdG9yXCI+a2V5Ym9hcmRfYXJyb3dfZG93bjwvc3Bhbj4nK1xuXHRcdFx0XHRcdFx0XHQnPHNwYW4+e3tjb250YWluZXIubmFtZX19PC9zcGFuPicrXG5cdFx0XHRcdFx0XHQnPC9kaXY+Jytcblx0XHRcdFx0XHRcdCc8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+JysgXG5cdFx0XHRcdFx0XHRcdCc8ZGl2IGNsYXNzPVwidHJlZXZpZXcgdHJlZXZpZXctY2hvb3NlclwiPicgK1xuXHRcdFx0XHRcdFx0XHRcdCc8dWwgY2xhc3M9XCJ0cmVldmlldy1pdGVtcyB0cmVldmlldy1pdGVtcy1sdmwxXCI+JyArXG5cdFx0XHRcdFx0XHRcdFx0XHQnPGxpIGNsYXNzPVwidHJlZXZpZXctaXRlbSB0cmVldmlldy1pdGVtLWx2bDFcIiBuZy1jbGFzcz1cIntcXCd0cmVldmlldy1pdGVtLWhhcy1jaGlsZHJlblxcJyA6IChtZW51RGF0YS5pdGVtcyB8IG1lbnVwYXJlbnRmaWx0ZXI6Y29udGFpbmVyLmlkOjApLmxlbmd0aH1cIiBuZy1yZXBlYXQ9XCIoa2V5LCBkYXRhKSBpbiBtZW51RGF0YS5pdGVtcyB8IG1lbnVwYXJlbnRmaWx0ZXI6Y29udGFpbmVyLmlkOjAgdHJhY2sgYnkgZGF0YS5pZFwiIG5nLWluY2x1ZGU9XCJcXCdtZW51RHJvcGRvd25SZXZlcnNlXFwnXCI+PC9saT4nICtcblx0XHRcdFx0XHRcdFx0XHQnPC91bD4nICtcblx0XHRcdFx0XHRcdFx0JzwvZGl2PicgK1xuXHRcdFx0XHRcdFx0JzwvZGl2PicgK1xuXHRcdFx0XHRcdCc8L2Rpdj4nK1xuXHRcdFx0XHQnPC9kaXY+JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1dKTtcblxuXHR6YWEuZGlyZWN0aXZlKFwiemFhQ21zUGFnZVwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiBcIkVcIixcbiAgICAgICAgICAgIHNjb3BlOiB7XG4gICAgICAgICAgICAgICAgXCJtb2RlbFwiOiBcIj1cIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjogXCI9XCIsXG4gICAgICAgICAgICAgICAgXCJsYWJlbFwiOiBcIkBsYWJlbFwiLFxuICAgICAgICAgICAgICAgIFwiaTE4blwiOiBcIkBpMThuXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiBcIkBmaWVsZGlkXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiQGZpZWxkbmFtZVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGVtcGxhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgXHRyZXR1cm4gICc8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLXNpZGUtYnktc2lkZVwiIG5nLWNsYXNzPVwie1xcJ2lucHV0LS1oaWRlLWxhYmVsXFwnOiBpMThufVwiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwiZm9ybS1zaWRlIGZvcm0tc2lkZS1sYWJlbFwiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGxhYmVsPnt7bGFiZWx9fTwvbGFiZWw+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwiZm9ybS1zaWRlXCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8bWVudS1kcm9wZG93biBjbGFzcz1cIm1lbnUtZHJvcGRvd25cIiBuYXYtaWQ9XCJtb2RlbFwiPjwvbWVudS1kcm9wZG93bj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG5cdHphYS5kaXJlY3RpdmUoXCJzaG93SW50ZXJuYWxSZWRpcmVjdGlvblwiLCBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0cmVzdHJpY3QgOiAnRScsXG5cdFx0XHRzY29wZSA6IHtcblx0XHRcdFx0bmF2SWQgOiAnPSdcblx0XHRcdH0sXG5cdFx0XHRjb250cm9sbGVyIDogWyckc2NvcGUnLCAnJGh0dHAnLCAnJHN0YXRlJywgZnVuY3Rpb24oJHNjb3BlLCAkaHR0cCwgJHN0YXRlKSB7XG5cblx0XHRcdFx0JHNjb3BlLiR3YXRjaCgnbmF2SWQnLCBmdW5jdGlvbihuKSB7XG5cdFx0XHRcdFx0aWYgKG4pIHtcblx0XHRcdFx0XHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtL2dldC1uYXYtaXRlbS1wYXRoJywgeyBwYXJhbXMgOiB7IG5hdklkIDogJHNjb3BlLm5hdklkIH19KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHRcdCRzY29wZS5wYXRoID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0JGh0dHAuZ2V0KCdhZG1pbi9hcGktY21zLW5hdml0ZW0vZ2V0LW5hdi1jb250YWluZXItbmFtZScsIHsgcGFyYW1zIDogeyBuYXZJZCA6ICRzY29wZS5uYXZJZCB9fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUuY29udGFpbmVyID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XSxcblx0XHRcdHRlbXBsYXRlIDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAnPGEgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc21cIiB1aS1zcmVmPVwiY3VzdG9tLmNtc2VkaXQoeyBuYXZJZCA6IG5hdklkLCB0ZW1wbGF0ZUlkOiBcXCdjbXNhZG1pbi9kZWZhdWx0L2luZGV4XFwnfSlcIj57e3BhdGh9fTwvYT4gaW4ge3tjb250YWluZXJ9fSc7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblx0XG5cdHphYS5kaXJlY3RpdmUoXCJjcmVhdGVGb3JtXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRyZXN0cmljdCA6ICdFQScsXG5cdFx0XHRzY29wZSA6IHtcblx0XHRcdFx0ZGF0YSA6ICc9J1xuXHRcdFx0fSxcblx0XHRcdHRlbXBsYXRlVXJsIDogJ2NyZWF0ZWZvcm0uaHRtbCcsXG5cdFx0XHRjb250cm9sbGVyIDogWyckc2NvcGUnLCAnJGh0dHAnLCAnJGZpbHRlcicsICdTZXJ2aWNlTWVudURhdGEnLCAnU2VydmljZUxhbmd1YWdlc0RhdGEnLCAnQWRtaW5Ub2FzdFNlcnZpY2UnLCAnU2VydmljZUN1cnJlbnRXZWJzaXRlJywgZnVuY3Rpb24oJHNjb3BlLCAkaHR0cCwgJGZpbHRlciwgU2VydmljZU1lbnVEYXRhLCBTZXJ2aWNlTGFuZ3VhZ2VzRGF0YSwgQWRtaW5Ub2FzdFNlcnZpY2UsIFNlcnZpY2VDdXJyZW50V2Vic2l0ZSkge1xuXG5cdFx0XHRcdCRzY29wZS5lcnJvciA9IFtdO1xuXHRcdFx0XHQkc2NvcGUuc3VjY2VzcyA9IGZhbHNlO1xuXG5cdFx0XHRcdCRzY29wZS5jb250cm9sbGVyID0gJHNjb3BlLiRwYXJlbnQ7XG5cblx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhID0gU2VydmljZU1lbnVEYXRhLmRhdGE7XG5cblx0XHRcdFx0JHNjb3BlLiRvbignc2VydmljZTpNZW51RGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdFx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhID0gZGF0YTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhUmVsb2FkID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFNlcnZpY2VNZW51RGF0YS5sb2FkKHRydWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG5cdFx0XHRcdFx0JHNjb3BlLm1lbnUgPSAkc2NvcGUubWVudURhdGEuaXRlbXM7XG5cdFx0XHRcdFx0JHNjb3BlLm5hdmNvbnRhaW5lcnMgPSAkc2NvcGUubWVudURhdGEuY29udGFpbmVycztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGluaXRpYWxpemVyKCk7XG5cblxuXHRcdFx0XHQkc2NvcGUuZGF0YS5uYXZfaXRlbV90eXBlID0gMTtcblx0XHRcdFx0JHNjb3BlLmRhdGEucGFyZW50X25hdl9pZCA9IDA7XG5cdFx0XHRcdCRzY29wZS5kYXRhLmlzX2RyYWZ0ID0gMDtcblxuXHRcdFx0XHQkc2NvcGUuZGF0YS5uYXZfY29udGFpbmVyX2lkID0gU2VydmljZUN1cnJlbnRXZWJzaXRlLmN1cnJlbnRXZWJzaXRlLmRlZmF1bHRfY29udGFpbmVyX2lkO1xuXG5cdFx0XHRcdCRzY29wZS5jdXJyZW50V2Vic2l0ZSA9IFNlcnZpY2VDdXJyZW50V2Vic2l0ZS5jdXJyZW50V2Vic2l0ZTtcblx0XHRcdFx0JHNjb3BlLiRvbignc2VydmljZTpDdXJyZW50V2Vic2l0ZUNoYW5nZWQnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuXHRcdFx0XHRcdGlmIChTZXJ2aWNlQ3VycmVudFdlYnNpdGUuY3VycmVudFdlYnNpdGUpIHtcblx0XHRcdFx0XHRcdCRzY29wZS5jdXJyZW50V2Vic2l0ZSA9IFNlcnZpY2VDdXJyZW50V2Vic2l0ZS5jdXJyZW50V2Vic2l0ZTtcblx0XHRcdFx0XHRcdCRzY29wZS5kYXRhLm5hdl9jb250YWluZXJfaWQgPSBTZXJ2aWNlQ3VycmVudFdlYnNpdGUuY3VycmVudFdlYnNpdGUuZGVmYXVsdF9jb250YWluZXJfaWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQkc2NvcGUubGFuZ3VhZ2VzRGF0YSA9IFNlcnZpY2VMYW5ndWFnZXNEYXRhLmRhdGE7XG5cblx0XHRcdFx0JHNjb3BlLiRvbignc2VydmljZTpMYW5ndWFnZXNEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcblx0XHRcdFx0XHQkc2NvcGUubGFuZ3VhZ2VzRGF0YSA9IGRhdGE7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdCRzY29wZS5pc0RlZmF1bHRJdGVtID0gJHNjb3BlLmxhbmd1YWdlc0RhdGEuZmluZChpdGVtID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gaXRlbS5pc19kZWZhdWx0O1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQkc2NvcGUuZGF0YS5sYW5nX2lkID0gJHNjb3BlLmlzRGVmYXVsdEl0ZW0uaWQ7XG5cblx0XHRcdFx0JHNjb3BlLiR3YXRjaChmdW5jdGlvbigpIHsgcmV0dXJuICRzY29wZS5kYXRhLm5hdl9jb250YWluZXJfaWQgfSwgZnVuY3Rpb24obiwgbykge1xuXHRcdFx0XHRcdGlmIChuICE9PSB1bmRlZmluZWQgJiYgbiAhPT0gbykge1xuXHRcdFx0XHRcdFx0JHNjb3BlLmRhdGEucGFyZW50X25hdl9pZCA9IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQkc2NvcGUuYWxpYXNTdWdnZXN0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0JHNjb3BlLmRhdGEuYWxpYXMgPSAkZmlsdGVyKCdzbHVnaWZ5JykoJHNjb3BlLmRhdGEudGl0bGUpO1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdCRzY29wZS4kd2F0Y2goJ2RhdGEuYWxpYXMnLCBmdW5jdGlvbihuLCBvKSB7XG5cdFx0XHRcdFx0aWYgKG4hPW8gJiYgbiE9bnVsbCkge1xuXHRcdFx0XHRcdFx0JHNjb3BlLmRhdGEuYWxpYXMgPSAkZmlsdGVyKCdzbHVnaWZ5Jykobik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQkc2NvcGUuZXhlYyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHQkc2NvcGUuY29udHJvbGxlci5zYXZlKCkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhUmVsb2FkKCk7XG5cdFx0XHRcdFx0XHQkc2NvcGUuc3VjY2VzcyA9IHRydWU7XG5cdFx0XHRcdFx0XHQkc2NvcGUuZXJyb3IgPSBbXTtcblx0XHRcdFx0XHRcdCRzY29wZS5kYXRhLnRpdGxlID0gbnVsbDtcblx0XHRcdFx0XHRcdCRzY29wZS5kYXRhLmFsaWFzID0gbnVsbDtcblx0XHRcdFx0XHRcdGlmICgkc2NvcGUuZGF0YS5pc0lubGluZSkge1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUuJHBhcmVudC4kcGFyZW50LmdldEl0ZW0oJHNjb3BlLmRhdGEubGFuZ19pZCwgJHNjb3BlLmRhdGEubmF2X2lkKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blsndmlld19pbmRleF9wYWdlX3N1Y2Nlc3MnXSk7XG5cdFx0XHRcdFx0fSwgZnVuY3Rpb24ocmVhc29uKSB7XG5cdFx0XHRcdFx0XHRhbmd1bGFyLmZvckVhY2gocmVhc29uLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG5cdFx0XHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmVycm9yKHZhbHVlWzBdKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0JHNjb3BlLmVycm9yID0gcmVhc29uO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdH1dXG5cdFx0fVxuXHR9KTtcblxuXHQvKiogUEFHRSBDUkVBVEUgJiBVUERBVEUgKi9cbiAgICB6YWEuZGlyZWN0aXZlKFwidXBkYXRlRm9ybVBhZ2VcIiwgWydTZXJ2aWNlTGF5b3V0c0RhdGEnLCBmdW5jdGlvbihTZXJ2aWNlTGF5b3V0c0RhdGEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0IDogJ0VBJyxcbiAgICAgICAgICAgIHNjb3BlIDoge1xuICAgICAgICAgICAgICAgIGRhdGEgOiAnPSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybCA6ICd1cGRhdGVmb3JtcGFnZS5odG1sJyxcbiAgICAgICAgICAgIGNvbnRyb2xsZXIgOiBbJyRzY29wZScsICckaHR0cCcsIGZ1bmN0aW9uKCRzY29wZSwgJGh0dHApIHtcblxuICAgICAgICAgICAgXHQkc2NvcGUucGFyZW50ID0gJHNjb3BlLiRwYXJlbnQuJHBhcmVudDtcblx0XHRcdFx0JHNjb3BlLm5hdkl0ZW1JZCA9ICRzY29wZS5wYXJlbnQuaXRlbS5pZDtcblxuXG5cdFx0XHRcdCRzY29wZS5kYXRhLmxheW91dF9pZCA9IDA7XG5cdFx0XHRcdCRzY29wZS5sYXlvdXRzRGF0YSA9IFNlcnZpY2VMYXlvdXRzRGF0YS5kYXRhO1xuXG5cdFx0XHRcdCRzY29wZS5hcnJheVRvU2VsZWN0ID0gZnVuY3Rpb24oaW5wdXQsIHZhbHVlRmllbGQsIGxhYmVsRmllbGQpIHtcblx0XHRcdFx0XHR2YXIgb3V0cHV0ID0gW107XG5cdFx0XHRcdFx0YW5ndWxhci5mb3JFYWNoKGlucHV0LCBmdW5jdGlvbih2YWx1ZSkge1xuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goe1wibGFiZWxcIjogdmFsdWVbbGFiZWxGaWVsZF0sIFwidmFsdWVcIjogdmFsdWVbdmFsdWVGaWVsZF19KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXR1cm4gb3V0cHV0O1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdCRzY29wZS4kb24oJ3NlcnZpY2U6TGF5b3V0c0RhdGEnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuXHRcdFx0XHRcdCRzY29wZS5sYXlvdXRzRGF0YSA9IFtdOyAvLyAkc2NvcGUuYXJyYXlUb1NlbGVjdChkYXRhKTsgLy8gQFRPRE8gUkVNT1ZFIElGIFZFUklGSUVEXG5cdFx0XHRcdH0pO1xuXG5cblx0XHRcdFx0JHNjb3BlLnZlcnNpb25zRGF0YSA9IFtdO1xuXG5cdFx0XHRcdCRzY29wZS5nZXRWZXJzaW9uTGlzdCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtcGFnZS92ZXJzaW9ucycsIHsgcGFyYW1zIDogeyBuYXZJdGVtSWQgOiAkc2NvcGUubmF2SXRlbUlkIH19KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHQkc2NvcGUudmVyc2lvbnNEYXRhID0gJHNjb3BlLmFycmF5VG9TZWxlY3QocmVzcG9uc2UuZGF0YSwgJ2lkJywgJ3ZlcnNpb25fYWxpYXMnKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblxuICAgICAgICAgICAgXHQkc2NvcGUuaXNFZGl0QXZhaWxhYmxlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuICRzY29wZS52ZXJzaW9uc0RhdGEubGVuZ3RoO1xuICAgICAgICAgICAgXHR9O1xuXG5cdFx0XHRcdGZ1bmN0aW9uIGluaXQoKSB7XG5cdFx0XHRcdFx0JHNjb3BlLmdldFZlcnNpb25MaXN0KCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbml0KCk7XG4gICAgICAgICAgICB9XVxuICAgICAgICB9XG5cdH1dKTtcblx0emFhLmRpcmVjdGl2ZShcImNyZWF0ZUZvcm1QYWdlXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRyZXN0cmljdCA6ICdFQScsXG5cdFx0XHRzY29wZSA6IHtcblx0XHRcdFx0ZGF0YSA6ICc9J1xuXHRcdFx0fSxcblx0XHRcdHRlbXBsYXRlVXJsIDogJ2NyZWF0ZWZvcm1wYWdlLmh0bWwnLFxuXHRcdFx0Y29udHJvbGxlciA6IFsnJHNjb3BlJywgJ1NlcnZpY2VMYXlvdXRzRGF0YScsICdTZXJ2aWNlTWVudURhdGEnLCBmdW5jdGlvbigkc2NvcGUsIFNlcnZpY2VMYXlvdXRzRGF0YSwgU2VydmljZU1lbnVEYXRhKSB7XG5cblx0XHRcdFx0JHNjb3BlLmRhdGEudXNlX2RyYWZ0ID0gMDtcblx0XHRcdFx0JHNjb3BlLmRhdGEubGF5b3V0X2lkID0gMDtcblx0XHRcdFx0JHNjb3BlLmRhdGEuZnJvbV9kcmFmdF9pZCA9IDA7XG5cblx0XHRcdFx0LyogbGF5b3V0c0RhdGEgKi9cblxuXHRcdFx0XHQkc2NvcGUubGF5b3V0c0RhdGEgPSBTZXJ2aWNlTGF5b3V0c0RhdGEuZGF0YTtcblxuICAgICAgICAgICAgXHQkc2NvcGUuJG9uKCdzZXJ2aWNlOkJsb2Nrc0RhdGEnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuICAgICAgICAgICAgXHRcdCRzY29wZS5sYXlvdXRzRGF0YSA9IGRhdGE7XG4gICAgICAgICAgICBcdH0pO1xuXG4gICAgICAgICAgICBcdC8qIG1lbnVEYXRhICovXG5cbiAgICBcdFx0XHQkc2NvcGUubWVudURhdGEgPSBTZXJ2aWNlTWVudURhdGEuZGF0YTtcblxuXHRcdFx0XHQkc2NvcGUuJG9uKCdzZXJ2aWNlOk1lbnVEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcblx0XHRcdFx0XHQkc2NvcGUubWVudURhdGEgPSBkYXRhO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQkc2NvcGUuYXJyYXlUb1NlbGVjdCA9IGZ1bmN0aW9uKGlucHV0LCB2YWx1ZUZpZWxkLCBsYWJlbEZpZWxkKSB7XG5cdFx0XHRcdFx0dmFyIG91dHB1dCA9IFtdO1xuXHRcdFx0XHRcdGFuZ3VsYXIuZm9yRWFjaChpbnB1dCwgZnVuY3Rpb24odmFsdWUpIHtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHtcImxhYmVsXCI6IHZhbHVlW2xhYmVsRmllbGRdLCBcInZhbHVlXCI6IHZhbHVlW3ZhbHVlRmllbGRdfSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuIG91dHB1dDtcblx0XHRcdFx0fTtcblxuICAgICAgICAgICAgXHRmdW5jdGlvbiBpbml0KCkge1xuICAgICAgICAgICAgXHRcdCRzY29wZS5kcmFmdHMgPSAkc2NvcGUuYXJyYXlUb1NlbGVjdCgkc2NvcGUubWVudURhdGEuZHJhZnRzLCAnaWQnLCAndGl0bGUnKTtcblx0XHRcdFx0XHQkc2NvcGUubGF5b3V0cyA9ICRzY29wZS5hcnJheVRvU2VsZWN0KCRzY29wZS5sYXlvdXRzRGF0YSwgJ2lkJywgJ25hbWUnKTtcbiAgICAgICAgICAgIFx0fVxuXG4gICAgICAgICAgICBcdGluaXQoKTtcblxuXHRcdFx0XHQkc2NvcGUuc2F2ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdCRzY29wZS4kcGFyZW50LmV4ZWMoKTtcblx0XHRcdFx0fVxuXHRcdFx0fV1cblx0XHR9XG5cdH0pO1xuXG5cdC8qIFBhZ2UgTU9EVUxFICovXG5cblx0emFhLmRpcmVjdGl2ZShcImZvcm1Nb2R1bGVcIiwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHJlc3RyaWN0IDogJ0VBJyxcblx0XHRcdHNjb3BlIDoge1xuXHRcdFx0XHRkYXRhIDogJz0nXG5cdFx0XHR9LFxuXHRcdFx0dGVtcGxhdGVVcmwgOiAnZm9ybW1vZHVsZS5odG1sJyxcblx0XHRcdGNvbnRyb2xsZXIgOiBbJyRzY29wZScsICckaHR0cCcsIGZ1bmN0aW9uKCRzY29wZSwgJGh0dHApIHtcblxuXHRcdFx0XHQkc2NvcGUubW9kdWxlcyA9IFtdO1xuXHRcdFx0XHQkc2NvcGUuY29udHJvbGxlcnMgPSBbXTtcblx0XHRcdFx0JHNjb3BlLmFjdGlvbnMgPSBbXTtcblx0XHRcdFx0JHNjb3BlLnBhcmFtcyA9IHt9O1xuXG5cdFx0XHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWFkbWluLWNvbW1vbi9kYXRhLW1vZHVsZXMnKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0JHNjb3BlLm1vZHVsZXMgPSByZXNwb25zZS5kYXRhO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQkc2NvcGUuYWRkUGFyYW0gPSBmdW5jdGlvbihrZXkpIHtcblx0XHRcdFx0XHRpZiAoISRzY29wZS5kYXRhLmhhc093blByb3BlcnR5KCdhY3Rpb25fcGFyYW1zJykpIHtcblx0XHRcdFx0XHRcdCRzY29wZS5kYXRhLmFjdGlvbl9wYXJhbXMgPSB7fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0JHNjb3BlLmRhdGEuYWN0aW9uX3BhcmFtc1trZXldID0gJyc7XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0JHNjb3BlLiR3YXRjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gJHNjb3BlLmRhdGEubW9kdWxlX25hbWU7XG5cdFx0XHRcdH0sIGZ1bmN0aW9uKG4pIHtcblx0XHRcdFx0XHRpZiAobikge1xuXHRcdFx0XHRcdFx0JGh0dHAuZ2V0KCdhZG1pbi9hcGktY21zLWFkbWluL21vZHVsZS1jb250cm9sbGVycz9tb2R1bGU9JyArIG4pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmNvbnRyb2xsZXJzID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmFjdGlvbnMgPSBbXTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0JHNjb3BlLiR3YXRjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gJHNjb3BlLmRhdGEuY29udHJvbGxlcl9uYW1lO1xuXHRcdFx0XHR9LCBmdW5jdGlvbihuKSB7XG5cdFx0XHRcdFx0aWYgKG4pIHtcblx0XHRcdFx0XHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWNtcy1hZG1pbi9jb250cm9sbGVyLWFjdGlvbnM/bW9kdWxlPScrJHNjb3BlLmRhdGEubW9kdWxlX25hbWUrJyZjb250cm9sbGVyPScgKyBuKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHRcdCRzY29wZS5hY3Rpb25zID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XVxuXHRcdH1cblx0fSk7XG5cblx0LyogZmlsdGVycyAqL1xuXG5cdHphYS5maWx0ZXIoXCJtZW51d2Vic2l0ZWZpbHRlclwiLCBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24oaW5wdXQsIHdlYnNpdGVJZCkge1xuXHRcdFx0dmFyIHJlc3VsdCA9IFtdO1xuXHRcdFx0YW5ndWxhci5mb3JFYWNoKGlucHV0LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG5cdFx0XHRcdGlmICh2YWx1ZS53ZWJzaXRlX2lkID09IHdlYnNpdGVJZCkge1xuXHRcdFx0XHRcdHJlc3VsdC5wdXNoKHZhbHVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH07XG5cdH0pO1xuXG5cdHphYS5maWx0ZXIoXCJtZW51cGFyZW50ZmlsdGVyXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBmdW5jdGlvbihpbnB1dCwgY29udGFpbmVySWQsIHBhcmVudE5hdklkKSB7XG5cdFx0XHR2YXIgcmVzdWx0ID0gW107XG5cdFx0XHRhbmd1bGFyLmZvckVhY2goaW5wdXQsIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcblx0XHRcdFx0aWYgKHZhbHVlLnBhcmVudF9uYXZfaWQgPT0gcGFyZW50TmF2SWQgJiYgdmFsdWUubmF2X2NvbnRhaW5lcl9pZCA9PSBjb250YWluZXJJZCkge1xuXHRcdFx0XHRcdHJlc3VsdC5wdXNoKHZhbHVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH07XG5cdH0pO1xuXG5cdHphYS5maWx0ZXIoJ21lbnVjaGlsZGZpbHRlcicsIGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBmdW5jdGlvbihpbnB1dCwgY29udGFpbmVySWQsIHBhcmVudE5hdklkKSB7XG5cdFx0XHR2YXIgcmV0dXJuVmFsdWUgPSBmYWxzZTtcblx0XHRcdGFuZ3VsYXIuZm9yRWFjaChpbnB1dCwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuXHRcdFx0XHRpZiAoIXJldHVyblZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKHZhbHVlLmlkID09IHBhcmVudE5hdklkICYmIHZhbHVlLm5hdl9jb250YWluZXJfaWQgPT0gY29udGFpbmVySWQpIHtcblx0XHRcdFx0XHRcdHJldHVyblZhbHVlID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0cmV0dXJuIHJldHVyblZhbHVlO1xuXHRcdH07XG5cdH0pO1xuXG5cdC8qIGZhY3RvcnkuanMgKi9cblxuXHR6YWEuZmFjdG9yeSgnUGxhY2Vob2xkZXJTZXJ2aWNlJywgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHNlcnZpY2UgPSBbXTtcblxuXHRcdHNlcnZpY2Uuc3RhdHVzID0gMTsgLyogMSA9IHNob3dwbGFjZWhvbGRlcnM7IDAgPSBoaWRlIHBsYWNlaG9sZGVycyAqL1xuXG5cdFx0c2VydmljZS5kZWxlZ2F0ZSA9IGZ1bmN0aW9uKHN0YXR1cykge1xuXHRcdFx0c2VydmljZS5zdGF0dXMgPSBzdGF0dXM7XG5cdFx0fTtcblxuXHRcdHJldHVybiBzZXJ2aWNlO1xuXHR9KTtcblxuXHQvKiBsYXlvdXQuanMgKi9cblxuXHR6YWEuY29uZmlnKFsnJHN0YXRlUHJvdmlkZXInLCBmdW5jdGlvbigkc3RhdGVQcm92aWRlcikge1xuXHRcdCRzdGF0ZVByb3ZpZGVyXG5cdFx0LnN0YXRlKFwiY3VzdG9tLmNtc2VkaXRcIiwge1xuXHRcdFx0dXJsIDogXCIvdXBkYXRlLzpuYXZJZFwiLFxuXHRcdFx0dGVtcGxhdGVVcmwgOiAnY21zYWRtaW4vcGFnZS91cGRhdGUnXG5cdFx0fSlcblx0XHQuc3RhdGUoXCJjdXN0b20uY21zYWRkXCIsIHtcblx0XHRcdHVybCA6IFwiL2NyZWF0ZVwiLFxuXHRcdFx0dGVtcGxhdGVVcmwgOiAnY21zYWRtaW4vcGFnZS9jcmVhdGUnXG5cdFx0fSlcblx0XHQuc3RhdGUoXCJjdXN0b20uY21zZHJhZnRcIiwge1xuXHRcdFx0dXJsOiAnL2RyYWZ0cycsXG5cdFx0XHR0ZW1wbGF0ZVVybDogJ2Ntc2FkbWluL3BhZ2UvZHJhZnRzJ1xuXHRcdH0pO1xuXHR9XSk7XG5cblx0LyogY29udHJvbGxlcnMgKi9cblxuXHR6YWEuY29udHJvbGxlcihcIkRyYWZ0c0NvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJHN0YXRlJywgJ1NlcnZpY2VNZW51RGF0YScsIGZ1bmN0aW9uKCRzY29wZSwgJHN0YXRlLCBTZXJ2aWNlTWVudURhdGEpIHtcblxuXHRcdCRzY29wZS5tZW51RGF0YSA9IFNlcnZpY2VNZW51RGF0YS5kYXRhO1xuXG5cdFx0JHNjb3BlLiRvbignc2VydmljZTpNZW51RGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdFx0XHQkc2NvcGUubWVudURhdGEgPSBkYXRhO1xuXHRcdH0pO1xuXG5cdFx0JHNjb3BlLmdvID0gZnVuY3Rpb24obmF2SWQpIHtcblx0XHRcdCRzdGF0ZS5nbygnY3VzdG9tLmNtc2VkaXQnLCB7IG5hdklkIDogbmF2SWQgfSk7XG5cdFx0fTtcblx0fV0pO1xuXG5cdHphYS5jb250cm9sbGVyKFwiQ21zRGFzaGJvYXJkXCIsIFsnJHNjb3BlJywgJyRodHRwJywgZnVuY3Rpb24oJHNjb3BlLCAkaHR0cCkge1xuXHRcdCRzY29wZS5kYXNoYm9hcmQgPSBbXTtcblx0XHQkaHR0cC5nZXQoJ2FkbWluL2FwaS1jbXMtYWRtaW4vZGFzaGJvYXJkLWxvZycpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdCRzY29wZS5kYXNoYm9hcmQgPSByZXNwb25zZS5kYXRhO1xuXHRcdH0pO1xuXHR9XSk7XG5cdFxuXHR6YWEuY29udHJvbGxlcihcIkNvbmZpZ0NvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJGh0dHAnLCAnQWRtaW5Ub2FzdFNlcnZpY2UnLCBmdW5jdGlvbigkc2NvcGUsICRodHRwLCBBZG1pblRvYXN0U2VydmljZSkge1xuXHRcdCRzY29wZS5kYXRhID0ge307XG5cblx0XHQkaHR0cC5nZXQoJ2FkbWluL2FwaS1jbXMtYWRtaW4vY29uZmlnJykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0JHNjb3BlLmRhdGEgPSByZXNwb25zZS5kYXRhO1xuXHRcdH0pO1xuXG5cdFx0JHNjb3BlLnNhdmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtYWRtaW4vY29uZmlnJywgJHNjb3BlLmRhdGEpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2Uuc3VjY2VzcyhpMThuWydqc19jb25maWdfdXBkYXRlX3N1Y2Nlc3MnXSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1dKTtcblxuXHR6YWEuY29udHJvbGxlcihcIlBhZ2VWZXJzaW9uc0NvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJGh0dHAnLCAnU2VydmljZUxheW91dHNEYXRhJywgJ0FkbWluVG9hc3RTZXJ2aWNlJywgZnVuY3Rpb24oJHNjb3BlLCAkaHR0cCwgU2VydmljZUxheW91dHNEYXRhLCBBZG1pblRvYXN0U2VydmljZSkge1xuXHRcdC8qKlxuXHRcdCAqIEB2YXIgb2JqZWN0ICR0eXBlRGF0YSBGcm9tIHBhcmVudCBzY29wZSBjb250cm9sbGVyIE5hdkl0ZW1Db250cm9sbGVyXG5cdFx0ICogQHZhciBvYmplY3QgJGl0ZW0gRnJvbSBwYXJlbnQgc2NvcGUgY29udHJvbGxlciBOYXZJdGVtQ29udHJvbGxlclxuXHRcdCAqIEB2YXIgc3RyaW5nICR2ZXJzaW9uTmFtZSBGcm9tIG5nLW1vZGVsXG5cdFx0ICogQHZhciBpbnRlZ2VyICRmcm9tVmVyc2lvblBhZ2VJZCBGcm9tIG5nLW1vZGVsIHRoZSB2ZXJzaW9uIGNvcHkgZnJvbSBvciAwID0gbmV3IGVtcHR5L2JsYW5rIHZlcnNpb25cblx0XHQgKiBAdmFyIGludGVnZXIgJHZlcnNpb25MYXlvdXRJZCBGcm9tIG5nLW1vZGVsLCBvbmx5IGlmIGZyb21WZXJzaW9uUGFnZUlkIGlzIDBcbiBcdFx0ICovXG5cdFx0dmFyIGhlYWRlcnMgPSB7XCJoZWFkZXJzXCIgOiB7IFwiQ29udGVudC1UeXBlXCIgOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOFwiIH19O1xuXG5cdFx0LyogbGF5b3V0c0RhdGEgKi9cblxuXHRcdCRzY29wZS5sYXlvdXRzRGF0YSA9IFNlcnZpY2VMYXlvdXRzRGF0YS5kYXRhO1xuXG4gICAgXHQkc2NvcGUuJG9uKCdzZXJ2aWNlOkxheW91dHNEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcbiAgICBcdFx0JHNjb3BlLmxheW91dHNEYXRhID0gZGF0YTtcbiAgICBcdH0pO1xuXG4gICAgXHQvKiBjb250cm9sbGVyIGxvZ2ljICovXG5cblx0XHQkc2NvcGUuY3JlYXRlTmV3VmVyc2lvblN1Ym1pdCA9IGZ1bmN0aW9uKGRhdGEpIHtcblx0XHRcdGlmIChkYXRhID09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5lcnJvcihpMThuWydqc192ZXJzaW9uX2Vycm9yX2VtcHR5X2ZpZWxkcyddKTtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZGF0YS5jb3B5RXhpc3RpbmdWZXJzaW9uKSB7XG5cdFx0XHRcdGRhdGEudmVyc2lvbkxheW91dElkID0gMDtcblx0XHRcdH1cblx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2aXRlbS9jcmVhdGUtcGFnZS12ZXJzaW9uJywgJC5wYXJhbSh7J2xheW91dElkJzogZGF0YS52ZXJzaW9uTGF5b3V0SWQsICduYXZJdGVtSWQnOiAkc2NvcGUuaXRlbS5pZCwgJ25hbWUnOiBkYXRhLnZlcnNpb25OYW1lLCAnZnJvbVBhZ2VJZCc6IGRhdGEuZnJvbVZlcnNpb25QYWdlSWR9KSwgaGVhZGVycykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRpZiAocmVzcG9uc2UuZGF0YS5lcnJvcikge1xuXHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmVycm9yKGkxOG5bJ2pzX3ZlcnNpb25fZXJyb3JfZW1wdHlfZmllbGRzJ10pO1xuXHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0JHNjb3BlLnJlZnJlc2hGb3JjZSgpO1xuXG5cdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blsnanNfdmVyc2lvbl9jcmVhdGVfc3VjY2VzcyddKTtcblx0XHRcdH0pO1xuXHRcdH07XG5cdH1dKTtcblxuXHR6YWEuY29udHJvbGxlcihcIkNvcHlQYWdlQ29udHJvbGxlclwiLCBbJyRzY29wZScsICckaHR0cCcsICckZmlsdGVyJywgJ0FkbWluVG9hc3RTZXJ2aWNlJywgZnVuY3Rpb24oJHNjb3BlLCAkaHR0cCwgJGZpbHRlciwgQWRtaW5Ub2FzdFNlcnZpY2UpIHtcblxuXHRcdHZhciBoZWFkZXJzID0ge1wiaGVhZGVyc1wiIDogeyBcIkNvbnRlbnQtVHlwZVwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIiB9fTtcblxuXHRcdCRzY29wZS4kb24oJ2RlbGV0ZWROYXZJdGVtJywgZnVuY3Rpb24oKSB7XG5cdFx0XHQkc2NvcGUuaXNPcGVuID0gZmFsc2U7XG5cdFx0XHQkc2NvcGUuaXRlbVNlbGVjdGlvbiA9IGZhbHNlO1xuXHRcdFx0JHNjb3BlLnNlbGVjdGlvbiA9IDA7XG5cdFx0fSk7XG5cblx0XHQkc2NvcGUuTmF2SXRlbUNvbnRyb2xsZXIgPSAkc2NvcGUuJHBhcmVudDtcblxuXHRcdCRzY29wZS5uYXZJZCA9IDA7XG5cblx0XHQkc2NvcGUuaXRlbXMgPSBudWxsO1xuXG5cdFx0JHNjb3BlLmlzT3BlbiA9IGZhbHNlO1xuXG5cdFx0JHNjb3BlLml0ZW1TZWxlY3Rpb24gPSBmYWxzZTtcblxuXHRcdCRzY29wZS5zZWxlY3Rpb24gPSAwO1xuXG5cdFx0JHNjb3BlLnNlbGVjdCA9IGZ1bmN0aW9uKGl0ZW0pIHtcblx0XHRcdCRzY29wZS5zZWxlY3Rpb24gPSBpdGVtLmlkO1xuXHRcdFx0JHNjb3BlLml0ZW1TZWxlY3Rpb24gPSBhbmd1bGFyLmNvcHkoaXRlbSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS4kd2F0Y2goJ2l0ZW1TZWxlY3Rpb24udGl0bGUnLCBmdW5jdGlvbihuLCBvKSB7XG5cdFx0XHRpZiAobikge1xuXHRcdFx0XHQkc2NvcGUuYWxpYXNTdWdnZXN0aW9uKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0XG5cdFx0JHNjb3BlLmFsaWFzU3VnZ2VzdGlvbiA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XG5cdFx0XHQkc2NvcGUuaXRlbVNlbGVjdGlvbi5hbGlhcyA9ICRmaWx0ZXIoJ3NsdWdpZnknKSgkc2NvcGUuaXRlbVNlbGVjdGlvbi50aXRsZSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS5sb2FkSXRlbXMgPSBmdW5jdGlvbigpIHtcblx0XHRcdCRzY29wZS5uYXZJZCA9ICRzY29wZS5OYXZJdGVtQ29udHJvbGxlci5OYXZDb250cm9sbGVyLm5hdkRhdGEuaWQ7XG5cblx0XHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWNtcy1uYXYvZmluZC1uYXYtaXRlbXMnLCB7IHBhcmFtczogeyBuYXZJZCA6ICRzY29wZS5uYXZJZCB9fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHQkc2NvcGUuaXRlbXMgPSByZXNwb25zZS5kYXRhO1xuXHRcdFx0XHQkc2NvcGUuaXNPcGVuID0gdHJ1ZTtcblx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHQkc2NvcGUuc2F2ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0JHNjb3BlLml0ZW1TZWxlY3Rpb25bJ3RvTGFuZ0lkJ10gPSAkc2NvcGUuTmF2SXRlbUNvbnRyb2xsZXIubGFuZy5pZDtcblx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2L2NyZWF0ZS1mcm9tLXBhZ2UnLCAkLnBhcmFtKCRzY29wZS5pdGVtU2VsZWN0aW9uKSwgaGVhZGVycykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRpZiAocmVzcG9uc2UuZGF0YSkge1xuXHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blsnanNfYWRkZWRfdHJhbnNsYXRpb25fb2snXSk7XG5cdFx0XHRcdFx0JHNjb3BlLk5hdkl0ZW1Db250cm9sbGVyLnJlZnJlc2goKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5lcnJvcihpMThuWydqc19hZGRlZF90cmFuc2xhdGlvbl9lcnJvciddKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuZXJyb3JBcnJheShyZXNwb25zZS5kYXRhKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHR9XSk7XG5cblx0emFhLmNvbnRyb2xsZXIoXCJDbXNNZW51VHJlZUNvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJHJvb3RTY29wZScsICckc3RhdGUnLCAnJGh0dHAnLCAnJGZpbHRlcicsICdTZXJ2aWNlTWVudURhdGEnLCAnU2VydmljZUxpdmVFZGl0TW9kZScsICdTZXJ2aWNlQ3VycmVudFdlYnNpdGUnLCBmdW5jdGlvbigkc2NvcGUsICRyb290U2NvcGUsICRzdGF0ZSwgJGh0dHAsICRmaWx0ZXIsIFNlcnZpY2VNZW51RGF0YSwgU2VydmljZUxpdmVFZGl0TW9kZSwgU2VydmljZUN1cnJlbnRXZWJzaXRlKSB7XG5cblx0XHQvLyBsaXZlIGVkaXQgc2VydmljZVxuXG5cdFx0JHNjb3BlLmxpdmVFZGl0U3RhdGUgPSAwO1xuXG5cdFx0JHNjb3BlLiR3YXRjaCgnbGl2ZUVkaXRTdGF0ZVRvZ2dsZXInLCBmdW5jdGlvbihuKSB7XG5cdFx0XHRTZXJ2aWNlTGl2ZUVkaXRNb2RlLnN0YXRlID0gbjtcblx0XHR9KTtcblxuXHRcdCRzY29wZS5sb2FkQ21zQ29uZmlnID0gZnVuY3Rpb24oKSB7XG5cdFx0XHQkaHR0cC5nZXQoJ2FkbWluL2FwaS1jbXMtYWRtaW4vY29uZmlnJykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHQkcm9vdFNjb3BlLmNtc0NvbmZpZyA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHR9KTtcblx0XHR9O1xuXHRcdFxuXHRcdCRzY29wZS5sb2FkQ21zQ29uZmlnKCk7XG5cdFx0XG5cdFx0Ly8gbWVudSBEYXRhXG5cblx0XHQkc2NvcGUubWVudURhdGEgPSBTZXJ2aWNlTWVudURhdGEuZGF0YTtcblx0XHQkc2NvcGUuY3VycmVudFdlYnNpdGUgPSBTZXJ2aWNlQ3VycmVudFdlYnNpdGUuY3VycmVudFdlYnNpdGU7XG5cblx0XHQkc2NvcGUuJG9uKCdzZXJ2aWNlOk1lbnVEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcblx0XHRcdCRzY29wZS5tZW51RGF0YSA9IGRhdGE7XG5cdFx0fSk7XG5cblx0XHQkc2NvcGUubWVudURhdGFSZWxvYWQgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBTZXJ2aWNlTWVudURhdGEubG9hZCh0cnVlKTtcblx0XHR9O1xuXG5cdFx0Ly8gQ29udGFpbnMgdGhlIGN1cnJlbnQgd2Vic2l0ZSBpZCwgaXMgaW5pdGlhbGl6ZWQgd2l0aCBmYWxzZSBhcyB2YWx1ZVxuXHRcdCRzY29wZS5jdXJyZW50V2Vic2l0ZVRvZ2dsZXIgPSBmYWxzZVxuXG5cdFx0JHNjb3BlLiR3YXRjaCgnY3VycmVudFdlYnNpdGVUb2dnbGVyJywgZnVuY3Rpb24obmV3VmFsdWUsIG9sZFZhbHVlKSB7XG5cdFx0XHRpZiAobmV3VmFsdWUgJiYgbmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG5cdFx0XHRcdFNlcnZpY2VDdXJyZW50V2Vic2l0ZS50b2dnbGUobmV3VmFsdWUpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly8gaW5pdGlhbGl6ZSB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgbWVudSBzZXJ2aWNlXG5cdFx0JHNjb3BlLmN1cnJlbnRXZWJzaXRlID0gU2VydmljZUN1cnJlbnRXZWJzaXRlLmN1cnJlbnRXZWJzaXRlXG5cblx0XHQvLyBpZiB0aGUgc3RhdGUgaGFzIHJlY2l2ZWQgYSB2YWx1ZSwgYWZ0ZXIgdGhlIHNlcnZpY2UgZXZlbnQgaGFzIGJlZW4gdHJpZ2dlcmVkLCB0aGlzIGVuc3VyZXNcblx0XHQvLyB0aGUgY3VycmVudCB3ZWJzaXRlIGlzIGRpc3BsYXllZC4gTGlrZSBhIGxhenkgbG9hZCBlbnN1cmFuY2Vcblx0XHRpZiAoJHNjb3BlLmN1cnJlbnRXZWJzaXRlKSB7XG5cdFx0XHQkc2NvcGUuY3VycmVudFdlYnNpdGVUb2dnbGVyID0gJHNjb3BlLmN1cnJlbnRXZWJzaXRlLmlkXG5cdFx0fVxuXG5cdFx0JHNjb3BlLiRvbignc2VydmljZTpDdXJyZW50V2Vic2l0ZUNoYW5nZWQnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuXHRcdFx0JHNjb3BlLmN1cnJlbnRXZWJzaXRlID0gZGF0YTtcblx0XHRcdCRzY29wZS5jdXJyZW50V2Vic2l0ZVRvZ2dsZXIgPSBkYXRhLmlkO1xuXHRcdFx0U2VydmljZU1lbnVEYXRhLmxvYWQoKTtcblx0XHR9KTtcblxuXHRcdC8vIGNvbnRyb2xsZXIgbG9naWNcblx0XHRcblx0XHQkc2NvcGUuZHJvcEVtcHR5Q29udGFpbmVyID0gZnVuY3Rpb24oZHJhZ2dlZCxkcm9wcGVkLHBvc2l0aW9uLGNhdElkKSB7XG5cdFx0XHQkaHR0cC5nZXQoJ2FkbWluL2FwaS1jbXMtbmF2aXRlbS9tb3ZlLXRvLWNvbnRhaW5lcicsIHsgcGFyYW1zOiB7bW92ZUl0ZW1JZDogZHJhZ2dlZC5pZCwgZHJvcHBlZE9uQ2F0SWQ6IGNhdElkfX0pLnRoZW4oZnVuY3Rpb24oc3VjY2VzKSB7XG5cdFx0XHRcdFNlcnZpY2VNZW51RGF0YS5sb2FkKHRydWUpO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRcblx0XHQkc2NvcGUuZHJvcEl0ZW0gPSBmdW5jdGlvbihkcmFnLGRyb3AscG9zKSB7XG5cdFx0XHRpZiAocG9zID09ICdib3R0b20nKSB7XG5cdFx0XHRcdHZhciBhcGkgPSAnYWRtaW4vYXBpLWNtcy1uYXZpdGVtL21vdmUtYWZ0ZXInO1xuXHRcdFx0XHR2YXIgcGFyYW1zID0ge21vdmVJdGVtSWQ6IGRyYWcuaWQsIGRyb3BwZWRBZnRlckl0ZW1JZDogZHJvcC5pZH07XG5cdFx0XHR9IGVsc2UgaWYgKHBvcyA9PSAndG9wJykge1xuXHRcdFx0XHR2YXIgYXBpID0gJ2FkbWluL2FwaS1jbXMtbmF2aXRlbS9tb3ZlLWJlZm9yZSc7XG5cdFx0XHRcdHZhciBwYXJhbXMgPSB7bW92ZUl0ZW1JZDogZHJhZy5pZCwgZHJvcHBlZEJlZm9yZUl0ZW1JZDogZHJvcC5pZH07XG5cblx0XHRcdH0gZWxzZSBpZiAocG9zID09ICdtaWRkbGUnKSB7XG5cdFx0XHRcdHZhciBhcGkgPSAnYWRtaW4vYXBpLWNtcy1uYXZpdGVtL21vdmUtdG8tY2hpbGQnO1xuXHRcdFx0XHR2YXIgcGFyYW1zID0ge21vdmVJdGVtSWQ6IGRyYWcuaWQsIGRyb3BwZWRPbkl0ZW1JZDogZHJvcC5pZH07XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdCRodHRwLmdldChhcGksIHsgcGFyYW1zIDogcGFyYW1zIH0pLnRoZW4oZnVuY3Rpb24oc3VjY2Vzcykge1xuXHRcdFx0XHRTZXJ2aWNlTWVudURhdGEubG9hZCh0cnVlKTtcblx0XHRcdH0sIGZ1bmN0aW9uKGVycm9yKSB7XG5cdFx0XHRcdFNlcnZpY2VNZW51RGF0YS5sb2FkKHRydWUpO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRcblx0XHQkc2NvcGUudmFsaWRJdGVtID0gZnVuY3Rpb24oaG92ZXIsIGRyYWdlZCkge1xuXHRcdFx0XG5cdFx0XHRpZiAoaG92ZXIuaWQgPT0gZHJhZ2VkLmlkKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0JHNjb3BlLnJyaXRlbXMgPSBbXTtcblx0XHRcdCRzY29wZS5yZWN1cnNpdkl0ZW1WYWxpZGl0eShkcmFnZWQubmF2X2NvbnRhaW5lcl9pZCwgZHJhZ2VkLmlkKTtcblx0XHRcdFxuXHRcdFx0aWYgKCRzY29wZS5ycml0ZW1zLmluZGV4T2YoaG92ZXIuaWQpID09IC0xKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcblx0XHRcblx0XHQkc2NvcGUucnJpdGVtcyA9IFtdO1xuXHRcdFxuXHRcdCRzY29wZS5yZWN1cnNpdkl0ZW1WYWxpZGl0eSA9IGZ1bmN0aW9uKGNvbnRhaW5lcklkLCBwYXJlbnROYXZJZCkge1xuXHRcdFx0dmFyIGl0ZW1zID0gJGZpbHRlcignbWVudXBhcmVudGZpbHRlcicpKCRzY29wZS5tZW51RGF0YS5pdGVtcywgY29udGFpbmVySWQsIHBhcmVudE5hdklkKTtcblx0XHRcdFxuXHRcdFx0YW5ndWxhci5mb3JFYWNoKGl0ZW1zLCBmdW5jdGlvbihpdGVtKSB7XG5cdFx0XHRcdCRzY29wZS5ycml0ZW1zLnB1c2goaXRlbS5pZCk7XG5cdFx0XHRcdCRzY29wZS5yZWN1cnNpdkl0ZW1WYWxpZGl0eShjb250YWluZXJJZCwgaXRlbS5pZCk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLnRvZ2dsZUl0ZW0gPSBmdW5jdGlvbihkYXRhKSB7XG5cdFx0XHRpZiAoZGF0YS50b2dnbGVfb3BlbiA9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0ZGF0YVsndG9nZ2xlX29wZW4nXSA9IDE7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRhWyd0b2dnbGVfb3BlbiddID0gIWRhdGEudG9nZ2xlX29wZW47XG5cdFx0XHR9XG5cblx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2L3RyZWUtaGlzdG9yeScsIHtkYXRhOiBkYXRhfSwge2lnbm9yZUxvYWRpbmdCYXI6IHRydWV9KTtcblxuXHRcdH07XG5cblx0XHQkc2NvcGUuZ28gPSBmdW5jdGlvbihkYXRhKSB7XG5cdFx0XHRTZXJ2aWNlTGl2ZUVkaXRNb2RlLmNoYW5nZVVybChkYXRhLm5hdl9pdGVtX2lkLCAwKTtcblx0XHRcdCRzdGF0ZS5nbygnY3VzdG9tLmNtc2VkaXQnLCB7IG5hdklkIDogZGF0YS5pZCB9KTtcblx0ICAgIH07XG5cblx0ICAgICRzY29wZS5zaG93RHJhZyA9IDA7XG5cblx0ICAgICRzY29wZS5pc0N1cnJlbnRFbGVtZW50ID0gZnVuY3Rpb24oZGF0YSkge1xuXHQgICAgXHRpZiAoZGF0YSAhPT0gbnVsbCAmJiAkc3RhdGUucGFyYW1zLm5hdklkID09IGRhdGEuaWQpIHtcblx0ICAgIFx0XHRyZXR1cm4gdHJ1ZTtcblx0ICAgIFx0fVxuXG5cdCAgICBcdHJldHVybiBmYWxzZTtcblx0ICAgIH07XG5cblx0ICAgICRzY29wZS5oaWRkZW5DYXRzID0gW107XG5cblx0ICAgICRzY29wZS4kd2F0Y2goJ21lbnVEYXRhJywgZnVuY3Rpb24gKG4sIG8pIHtcblx0ICAgIFx0JHNjb3BlLmhpZGRlbkNhdHMgPSBuLmhpZGRlbkNhdHM7XG5cdCAgICB9KTtcblxuXHRcdCRzY29wZS50b2dnbGVDYXQgPSBmdW5jdGlvbihjYXRJZCkge1xuXHRcdFx0aWYgKGNhdElkIGluICRzY29wZS5oaWRkZW5DYXRzKSB7XG5cdFx0XHRcdCRzY29wZS5oaWRkZW5DYXRzW2NhdElkXSA9ICEkc2NvcGUuaGlkZGVuQ2F0c1tjYXRJZF07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQkc2NvcGUuaGlkZGVuQ2F0c1tjYXRJZF0gPSAxO1xuXHRcdFx0fVxuXG5cdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdi9zYXZlLWNhdC10b2dnbGUnLCB7Y2F0SWQ6IGNhdElkLCBzdGF0ZTogJHNjb3BlLmhpZGRlbkNhdHNbY2F0SWRdfSwge2lnbm9yZUxvYWRpbmdCYXI6IHRydWV9KTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLnRvZ2dsZUlzSGlkZGVuID0gZnVuY3Rpb24oY2F0SWQpIHtcblxuXHRcdFx0aWYgKCRzY29wZS5oaWRkZW5DYXRzID09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChjYXRJZCBpbiAkc2NvcGUuaGlkZGVuQ2F0cykge1xuXHRcdFx0XHRpZiAoJHNjb3BlLmhpZGRlbkNhdHNbY2F0SWRdID09IDEpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcblxuXHR9XSk7XG5cblx0emFhLmNvbnRyb2xsZXIoXCJDbXNhZG1pbkNyZWF0ZUNvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJHEnLCAnJGh0dHAnLCBmdW5jdGlvbigkc2NvcGUsICRxLCAkaHR0cCkge1xuXG5cdFx0JHNjb3BlLmRhdGEgPSB7fTtcblx0XHQkc2NvcGUuZGF0YS5pc0lubGluZSA9IGZhbHNlO1xuXG5cdFx0JHNjb3BlLnNhdmUgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0dmFyIGhlYWRlcnMgPSB7XCJoZWFkZXJzXCIgOiB7IFwiQ29udGVudC1UeXBlXCIgOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOFwiIH19O1xuXG5cdFx0XHRyZXR1cm4gJHEoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cblx0XHRcdFx0aWYgKCRzY29wZS5kYXRhLm5hdl9pdGVtX3R5cGUgPT0gMSkge1xuXHRcdFx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2L2NyZWF0ZS1wYWdlJywgJC5wYXJhbSgkc2NvcGUuZGF0YSksIGhlYWRlcnMpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdHJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG5cdFx0XHRcdFx0fSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdHJlamVjdChyZXNwb25zZS5kYXRhKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICgkc2NvcGUuZGF0YS5uYXZfaXRlbV90eXBlID09IDIpIHtcblx0XHRcdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdi9jcmVhdGUtbW9kdWxlJywgJC5wYXJhbSgkc2NvcGUuZGF0YSksIGhlYWRlcnMpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdHJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG5cdFx0XHRcdFx0fSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdHJlamVjdChyZXNwb25zZS5kYXRhKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICgkc2NvcGUuZGF0YS5uYXZfaXRlbV90eXBlID09IDMpIHtcblx0XHRcdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdi9jcmVhdGUtcmVkaXJlY3QnLCAkLnBhcmFtKCRzY29wZS5kYXRhKSwgaGVhZGVycykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcblx0XHRcdFx0XHR9LCBmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0cmVqZWN0KHJlc3BvbnNlLmRhdGEpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9O1xuXHR9XSk7XG5cblx0emFhLmNvbnRyb2xsZXIoXCJDbXNhZG1pbkNyZWF0ZUlubGluZUNvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJHEnLCAnJGh0dHAnLCBmdW5jdGlvbigkc2NvcGUsICRxLCAkaHR0cCkge1xuXG5cdFx0JHNjb3BlLmRhdGEgPSB7XG5cdFx0XHRuYXZfaWQgOiAkc2NvcGUuJHBhcmVudC5OYXZDb250cm9sbGVyLmlkXG5cdFx0fTtcblxuXHRcdCRzY29wZS5kYXRhLmlzSW5saW5lID0gdHJ1ZTtcblxuXHRcdCRzY29wZS5zYXZlID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdCRzY29wZS5kYXRhLmxhbmdfaWQgPSAkc2NvcGUubGFuZy5pZDtcblxuXHRcdFx0dmFyIGhlYWRlcnMgPSB7XCJoZWFkZXJzXCIgOiB7IFwiQ29udGVudC1UeXBlXCIgOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOFwiIH19O1xuXG5cdFx0XHRyZXR1cm4gJHEoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cblx0XHRcdFx0aWYgKCRzY29wZS5kYXRhLm5hdl9pdGVtX3R5cGUgPT0gMSkge1xuXHRcdFx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2L2NyZWF0ZS1wYWdlLWl0ZW0nLCAkLnBhcmFtKCRzY29wZS5kYXRhKSwgaGVhZGVycykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcblx0XHRcdFx0XHR9LCBmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0cmVqZWN0KHJlc3BvbnNlLmRhdGEpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCRzY29wZS5kYXRhLm5hdl9pdGVtX3R5cGUgPT0gMikge1xuXHRcdFx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2L2NyZWF0ZS1tb2R1bGUtaXRlbScsICQucGFyYW0oJHNjb3BlLmRhdGEpLCBoZWFkZXJzKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuXHRcdFx0XHRcdH0sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHRyZWplY3QocmVzcG9uc2UuZGF0YSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoJHNjb3BlLmRhdGEubmF2X2l0ZW1fdHlwZSA9PSAzKSB7XG5cdFx0XHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXYvY3JlYXRlLXJlZGlyZWN0LWl0ZW0nLCAkLnBhcmFtKCRzY29wZS5kYXRhKSwgaGVhZGVycykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcblx0XHRcdFx0XHR9LCBmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0cmVqZWN0KHJlc3BvbnNlLmRhdGEpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH1cblxuXHR9XSk7XG5cblx0emFhLmNvbnRyb2xsZXIoXCJOYXZDb250cm9sbGVyXCIsIFtcblx0XHQnJHNjb3BlJywgJyRyb290U2NvcGUnLCAnJGZpbHRlcicsICckc3RhdGUnLCAnJHN0YXRlUGFyYW1zJywgJyRodHRwJywgJ1BsYWNlaG9sZGVyU2VydmljZScsICdTZXJ2aWNlUHJvcGVydGllc0RhdGEnLCAnU2VydmljZU1lbnVEYXRhJywgJ1NlcnZpY2VMYW5ndWFnZXNEYXRhJywgJ1NlcnZpY2VMaXZlRWRpdE1vZGUnLCAnQWRtaW5Ub2FzdFNlcnZpY2UnLCAnQWRtaW5DbGFzc1NlcnZpY2UnLCAnQWRtaW5MYW5nU2VydmljZScsICdIdG1sU3RvcmFnZScsXG5cdFx0ZnVuY3Rpb24oJHNjb3BlLCAkcm9vdFNjb3BlLCAkZmlsdGVyLCAkc3RhdGUsICRzdGF0ZVBhcmFtcywgJGh0dHAsIFBsYWNlaG9sZGVyU2VydmljZSwgU2VydmljZVByb3BlcnRpZXNEYXRhLCBTZXJ2aWNlTWVudURhdGEsIFNlcnZpY2VMYW5ndWFnZXNEYXRhLCBTZXJ2aWNlTGl2ZUVkaXRNb2RlLCBBZG1pblRvYXN0U2VydmljZSwgQWRtaW5DbGFzc1NlcnZpY2UsIEFkbWluTGFuZ1NlcnZpY2UsIEh0bWxTdG9yYWdlKSB7XG5cblxuXHRcdCRzY29wZS5wYWdlU2V0dGluZ3NPdmVybGF5SGlkZGVuID0gdHJ1ZTtcblx0XHRcblx0XHQkc2NvcGUucGFnZVNldHRpbmdzT3ZlcmxheVRhYiA9IDE7XG5cdFx0XG5cdFx0JHNjb3BlLnRvZ2dsZVBhZ2VTZXR0aW5nc092ZXJsYXkgPSBmdW5jdGlvbih0KSB7XG5cdFx0XHQkc2NvcGUucGFnZVNldHRpbmdzT3ZlcmxheVRhYiA9IHQ7XG5cdFx0XHQkc2NvcGUucGFnZVNldHRpbmdzT3ZlcmxheUhpZGRlbiA9ICEkc2NvcGUucGFnZVNldHRpbmdzT3ZlcmxheUhpZGRlbjtcblx0XHR9O1xuXHRcdFxuXHRcdCRzY29wZS5uYXZDZmcgPSB7XG5cdFx0XHRoZWxwdGFnczogJHJvb3RTY29wZS5sdXlhY2ZnLmhlbHB0YWdzLFxuXHRcdH07XG5cdFx0XG5cdFx0JHNjb3BlLiR3YXRjaChmdW5jdGlvbigpIHsgcmV0dXJuIFNlcnZpY2VMaXZlRWRpdE1vZGUuc3RhdGUgfSwgZnVuY3Rpb24obiwgbykge1xuXHRcdFx0JHNjb3BlLmRpc3BsYXlMaXZlQ29udGFpbmVyID0gbjtcblx0XHR9KTtcblx0XHRcblx0XHQkc2NvcGUuJHdhdGNoKGZ1bmN0aW9uKCkgeyByZXR1cm4gU2VydmljZUxpdmVFZGl0TW9kZS51cmwgfSwgZnVuY3Rpb24obiwgbykge1xuXHRcdFx0JHNjb3BlLmxpdmVVcmwgPSBuO1xuXHRcdH0pO1xuXHRcdFxuXHRcdCRzY29wZS5BZG1pbkxhbmdTZXJ2aWNlID0gQWRtaW5MYW5nU2VydmljZTtcblxuXHRcdC8qIHNlcnZpY2UgQWRtaW5Qcm9wZXJ0eVNlcnZpY2UgaW5oZXJpdGFuY2UgKi9cblxuXHRcdCRzY29wZS5wcm9wZXJ0aWVzRGF0YSA9IFNlcnZpY2VQcm9wZXJ0aWVzRGF0YS5kYXRhO1xuXG5cdFx0JHNjb3BlLiRvbignc2VydmljZTpQcm9wZXJ0aWVzRGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdFx0XHQkc2NvcGUucHJvcGVydGllc0RhdGEgPSBkYXRhO1xuXHRcdH0pO1xuXG5cdFx0Lyogc2VydmljZSBTZXJ2aWNlTWVudURhdGEgaW5oZXJpdGFuY2UgKi9cblxuXHRcdCRzY29wZS5tZW51RGF0YSA9IFNlcnZpY2VNZW51RGF0YS5kYXRhO1xuXG5cdFx0JHNjb3BlLiRvbignc2VydmljZTpNZW51RGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdFx0XHQkc2NvcGUubWVudURhdGEgPSBkYXRhO1xuXHRcdH0pO1xuXG5cdFx0JHNjb3BlLm1lbnVEYXRhUmVsb2FkID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gU2VydmljZU1lbnVEYXRhLmxvYWQodHJ1ZSk7XG5cdFx0fTtcblxuXHRcdC8qIHNlcnZpY2UgU2VydmljZUxhbmdhdWdlc0RhdGEgaW5oZXJpdGFuY2UgKi9cblxuXHRcdCRzY29wZS5sYW5ndWFnZXNEYXRhID0gU2VydmljZUxhbmd1YWdlc0RhdGEuZGF0YTtcblxuXHRcdCRzY29wZS4kb24oJ3NlcnZpY2U6TGFuZ3VhZ2VzRGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdFx0XHQkc2NvcGUubGFuZ3VhZ2VzRGF0YSA9IGRhdGE7XG5cdFx0fSk7XG5cblx0XHQvKiBwbGFjZWhvbGRlcnMgdG9nZ2xlciBzZXJ2aWNlICovXG5cblx0XHQkc2NvcGUuUGxhY2Vob2xkZXJTZXJ2aWNlID0gUGxhY2Vob2xkZXJTZXJ2aWNlO1xuXG5cdFx0JHNjb3BlLnBsYWNlaG9sZGVyU3RhdGUgPSAkc2NvcGUuUGxhY2Vob2xkZXJTZXJ2aWNlLnN0YXR1cztcblxuXHRcdCRzY29wZS4kd2F0Y2goJ3BsYWNlaG9sZGVyU3RhdGUnLCBmdW5jdGlvbihuLCBvKSB7XG5cdFx0XHRpZiAobiAhPT0gbyAmJiBuICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0JHNjb3BlLlBsYWNlaG9sZGVyU2VydmljZS5kZWxlZ2F0ZShuKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdC8qIEJsb2NraG9sZGVyIHNpemUgdG9nZ2xlciAqL1xuXG4gICAgICAgICRzY29wZS5pc0Jsb2NraG9sZGVyU21hbGwgPSBIdG1sU3RvcmFnZS5nZXRWYWx1ZSgnYmxvY2tob2xkZXJUb2dnbGVTdGF0ZScsIHRydWUpO1xuXG4gICAgICAgICRzY29wZS50b2dnbGVCbG9ja2hvbGRlclNpemUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICRzY29wZS5pc0Jsb2NraG9sZGVyU21hbGwgPSAhJHNjb3BlLmlzQmxvY2tob2xkZXJTbWFsbDtcbiAgICAgICAgICAgIEh0bWxTdG9yYWdlLnNldFZhbHVlKCdibG9ja2hvbGRlclRvZ2dsZVN0YXRlJywgJHNjb3BlLmlzQmxvY2tob2xkZXJTbWFsbCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyogc2lkZWJhciBsb2dpYyAqL1xuXG5cdFx0JHNjb3BlLnNpZGViYXIgPSBmYWxzZTtcblxuXHQgICAgJHNjb3BlLmVuYWJsZVNpZGViYXIgPSBmdW5jdGlvbigpIHtcblx0ICAgIFx0JHNjb3BlLnNpZGViYXIgPSB0cnVlO1xuXHQgICAgfTtcblxuXHQgICAgJHNjb3BlLnRvZ2dsZVNpZGViYXIgPSBmdW5jdGlvbigpIHtcblx0ICAgICAgICAkc2NvcGUuc2lkZWJhciA9ICEkc2NvcGUuc2lkZWJhcjtcblx0ICAgIH07XG5cblx0XHQvKiBhcHAgbG9naWMgKi9cblxuXHQgICAgJHNjb3BlLnNob3dBY3Rpb25zID0gMTtcblxuXHRcdCRzY29wZS5pZCA9IHBhcnNlSW50KCRzdGF0ZVBhcmFtcy5uYXZJZCk7XG5cblx0XHQkc2NvcGUuaXNEZWxldGVkID0gZmFsc2U7XG5cblx0XHQkc2NvcGUuQWRtaW5DbGFzc1NlcnZpY2UgPSBBZG1pbkNsYXNzU2VydmljZTtcblxuXHRcdCRzY29wZS5wcm9wVmFsdWVzID0ge307XG5cblx0XHQkc2NvcGUuaGFzVmFsdWVzID0gZmFsc2U7XG5cblx0XHQkc2NvcGUucGFnZVRhZ3MgPSBbXTtcblxuXHRcdCRzY29wZS5idWJibGVQYXJlbnRzID0gZnVuY3Rpb24ocGFyZW50TmF2SWQsIGNvbnRhaW5lcklkKSB7XG5cdCAgICBcdHZhciBpdGVtID0gJGZpbHRlcignbWVudWNoaWxkZmlsdGVyJykoJHNjb3BlLm1lbnVEYXRhLml0ZW1zLCBjb250YWluZXJJZCwgcGFyZW50TmF2SWQpO1xuXHQgICAgXHRpZiAoaXRlbSkge1xuXHQgICAgXHRcdGl0ZW0udG9nZ2xlX29wZW4gPSAxO1xuXHQgICAgXHRcdCRzY29wZS5idWJibGVQYXJlbnRzKGl0ZW0ucGFyZW50X25hdl9pZCwgaXRlbS5uYXZfY29udGFpbmVyX2lkKTtcblx0ICAgIFx0fVxuXHQgICAgfTtcblxuXHRcdCRzY29wZS5jcmVhdGVEZWVwUGFnZUNvcHkgPSBmdW5jdGlvbigpIHtcblx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2L2RlZXAtcGFnZS1jb3B5Jywge25hdklkOiAkc2NvcGUuaWR9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdCRzY29wZS5tZW51RGF0YVJlbG9hZCgpO1xuXHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5zdWNjZXNzKGkxOG5bJ2pzX3BhZ2VfY3JlYXRlX2NvcHlfc3VjY2VzcyddKTtcblx0XHRcdFx0JHNjb3BlLnNob3dBY3Rpb25zID0gMTtcblx0XHRcdFx0JHNjb3BlLnRvZ2dsZVBhZ2VTZXR0aW5nc092ZXJsYXkoKTtcblx0XHRcdH0sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmVycm9yQXJyYXkocmVzcG9uc2UuZGF0YSk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLnBhZ2VUYWdzID0gW107XG5cblx0XHQkaHR0cC5nZXQoJ2FkbWluL2FwaS1jbXMtbmF2LycgKyAkc2NvcGUuaWQgKyAnL3RhZ3MnKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRhbmd1bGFyLmZvckVhY2gocmVzcG9uc2UuZGF0YSwgZnVuY3Rpb24odmFsdWUpIHtcblx0XHRcdFx0JHNjb3BlLnBhZ2VUYWdzLnB1c2godmFsdWUuaWQpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHQkc2NvcGUuc2F2ZVBhZ2VUYWdzID0gZnVuY3Rpb24oKSB7XG5cdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdi8nICsgJHNjb3BlLmlkICsgJy90YWdzJywgJHNjb3BlLnBhZ2VUYWdzKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdCRzY29wZS50b2dnbGVQYWdlU2V0dGluZ3NPdmVybGF5KCk7XG5cdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blsnanNfY29uZmlnX3VwZGF0ZV9zdWNjZXNzJ10pO1xuXHRcdFx0fSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuZXJyb3JBcnJheShyZXNwb25zZS5kYXRhKTtcblx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHQkc2NvcGUuY3JlYXRlRGVlcFBhZ2VDb3B5QXNUZW1wbGF0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXYvZGVlcC1wYWdlLWNvcHktYXMtdGVtcGxhdGUnLCB7bmF2SWQ6ICRzY29wZS5pZH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhUmVsb2FkKCk7XG5cdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blsnanNfcGFnZV9jcmVhdGVfY29weV9hc190ZW1wbGF0ZV9zdWNjZXNzJ10pO1xuXHRcdFx0XHQkc2NvcGUuc2hvd0FjdGlvbnMgPSAxO1xuXHRcdFx0XHQkc2NvcGUudG9nZ2xlUGFnZVNldHRpbmdzT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgICRzdGF0ZS5nbygnY3VzdG9tLmNtc2RyYWZ0Jyk7XG5cdFx0XHR9LCBmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5lcnJvckFycmF5KHJlc3BvbnNlLmRhdGEpO1xuXHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS5sb2FkTmF2UHJvcGVydGllcyA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0JGh0dHAuZ2V0KCdhZG1pbi9hcGktY21zLW5hdi9nZXQtcHJvcGVydGllcycsIHsgcGFyYW1zOiB7bmF2SWQ6ICRzY29wZS5pZH19KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdGZvcih2YXIgaSBpbiByZXNwb25zZS5kYXRhKSB7XG5cdFx0XHRcdFx0dmFyIGQgPSByZXNwb25zZS5kYXRhW2ldO1xuXHRcdFx0XHRcdCRzY29wZS5wcm9wVmFsdWVzW2QuYWRtaW5fcHJvcF9pZF0gPSBkLnZhbHVlO1xuXHRcdFx0XHRcdCRzY29wZS5oYXNWYWx1ZXMgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLnRvZ2dsZVByb3BNYXNrID0gZnVuY3Rpb24oKSB7XG5cdFx0XHQkc2NvcGUuc2hvd1Byb3BGb3JtID0gISRzY29wZS5zaG93UHJvcEZvcm07XG5cdFx0fTtcblxuXHRcdCRzY29wZS5zaG93UHJvcEZvcm0gPSBmYWxzZTtcblxuXHRcdCRzY29wZS5zdG9yZVByb3BWYWx1ZXMgPSBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBoZWFkZXJzID0ge1wiaGVhZGVyc1wiIDogeyBcIkNvbnRlbnQtVHlwZVwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIiB9fTtcblx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2L3NhdmUtcHJvcGVydGllcz9uYXZJZD0nKyRzY29wZS5pZCwgJC5wYXJhbSgkc2NvcGUucHJvcFZhbHVlcyksIGhlYWRlcnMpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2Uuc3VjY2VzcyhpMThuWydqc19wYWdlX3Byb3BlcnR5X3JlZnJlc2gnXSk7XG5cdFx0XHRcdCRzY29wZS5sb2FkTmF2UHJvcGVydGllcygpO1xuXHRcdFx0XHQkc2NvcGUuc2hvd1Byb3BGb3JtID0gZmFsc2U7XG5cdFx0XHRcdCRzY29wZS50b2dnbGVQYWdlU2V0dGluZ3NPdmVybGF5KCk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLnRyYXNoID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRBZG1pblRvYXN0U2VydmljZS5jb25maXJtKGkxOG5bJ2pzX3BhZ2VfY29uZmlybV9kZWxldGUnXSwgaTE4blsnY21zYWRtaW5fc2V0dGluZ3NfdHJhc2hwYWdlX3RpdGxlJ10sIFsnJHRvYXN0JywgZnVuY3Rpb24oJHRvYXN0KSB7XG5cdFx0XHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWNtcy1uYXYvZGVsZXRlJywgeyBwYXJhbXMgOiB7IG5hdklkIDogJHNjb3BlLmlkIH19KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdCAgICBcdFx0XHQkc2NvcGUuaXNEZWxldGVkID0gdHJ1ZTtcblx0ICAgIFx0XHRcdCRzY29wZS5tZW51RGF0YVJlbG9hZCgpLnRoZW4oZnVuY3Rpb24oKSB7XG5cdCAgICBcdFx0XHRcdCR0b2FzdC5jbG9zZSgpO1xuXHQgICAgXHRcdFx0XHQkc2NvcGUudG9nZ2xlUGFnZVNldHRpbmdzT3ZlcmxheSgpO1xuXHQgICAgXHRcdFx0fSk7XG5cdCAgICBcdFx0fSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRpZiAocmVzcG9uc2Uuc3RhdHVzID09IDQxNykge1xuXHRcdFx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuZXJyb3IoaTE4blsnanNfcGFnZV9kZWxldGVfZXJyb3JfY2F1c2VfcmVkaXJlY3RzJ10pO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5lcnJvckFycmF5KHJlc3BvbnNlLmRhdGEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XSk7XG5cdCAgICB9O1xuXG5cdCAgICAkc2NvcGUuaXNEcmFmdCA9IGZhbHNlO1xuXG5cdCAgICAkc2NvcGUuc3VibWl0TmF2Rm9ybSA9IGZ1bmN0aW9uKGRhdGEpIHtcblx0ICAgIFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXYvdXBkYXRlP2lkPScgKyAkc2NvcGUubmF2RGF0YS5pZCwgZGF0YSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHQgICAgXHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blBhcmFtKCdqc19wYWdlX3VwZGF0ZV9sYXlvdXRfc2F2ZV9zdWNjZXNzJykpO1xuXHQgICAgXHRcdCRzY29wZS50b2dnbGVQYWdlU2V0dGluZ3NPdmVybGF5KCk7XG5cdCAgICBcdH0sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdCAgICBcdFx0YW5ndWxhci5mb3JFYWNoKHJlc3BvbnNlLmRhdGEsIGZ1bmN0aW9uKHZhbHVlKSB7XG5cdCAgICBcdFx0XHRBZG1pblRvYXN0U2VydmljZS5lcnJvcih2YWx1ZS5tZXNzYWdlKTtcblx0ICAgIFx0XHR9KTtcblx0ICAgIFx0fSk7XG5cdCAgICB9O1xuXG5cdCAgICBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcblx0XHRcdCRzY29wZS5uYXZEYXRhID0gJGZpbHRlcignZmlsdGVyJykoJHNjb3BlLm1lbnVEYXRhLml0ZW1zLCB7aWQ6ICRzY29wZS5pZH0sIHRydWUpWzBdO1xuXHRcdFx0aWYgKCRzY29wZS5uYXZEYXRhID09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHQkc2NvcGUuaXNEcmFmdCA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdCRzY29wZS5sb2FkTmF2UHJvcGVydGllcygpO1xuXG5cdFx0XHRcdC8qIHByb3BlcnRpZXMgLS0+ICovXG5cblx0XHRcdCAgICAkc2NvcGUuJHdhdGNoKGZ1bmN0aW9uKCkgeyByZXR1cm4gJHNjb3BlLm5hdkRhdGEuaXNfb2ZmbGluZSB9LCBmdW5jdGlvbihuLCBvKSB7XG5cdFx0XHQgICAgXHRpZiAobiAhPT0gbyAmJiBuICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdCAgICBcdFx0JGh0dHAuZ2V0KCdhZG1pbi9hcGktY21zLW5hdi90b2dnbGUtb2ZmbGluZScsIHsgcGFyYW1zIDogeyBuYXZJZCA6ICRzY29wZS5uYXZEYXRhLmlkICwgb2ZmbGluZVN0YXR1cyA6IG4gfX0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCRzY29wZS5uYXZEYXRhLmlzX29mZmxpbmUgPT0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmluZm8oaTE4blBhcmFtKCdqc19zdGF0ZV9vZmZsaW5lJywge3RpdGxlOiAkc2NvcGUubmF2RGF0YS50aXRsZX0pKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5pbmZvKGkxOG5QYXJhbSgnanNfc3RhdGVfb25saW5lJywge3RpdGxlOiAkc2NvcGUubmF2RGF0YS50aXRsZX0pKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0ICAgIFx0XHR9KTtcblx0XHRcdCAgICBcdH1cblx0XHRcdCAgICB9KTtcblxuXHRcdFx0ICAgICRzY29wZS4kd2F0Y2goZnVuY3Rpb24oKSB7IHJldHVybiAkc2NvcGUubmF2RGF0YS5pc19oaWRkZW4gfSwgZnVuY3Rpb24obiwgbykge1xuXHRcdFx0XHRcdGlmIChuICE9PSBvICYmIG4gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0JGh0dHAuZ2V0KCdhZG1pbi9hcGktY21zLW5hdi90b2dnbGUtaGlkZGVuJywgeyBwYXJhbXMgOiB7IG5hdklkIDogJHNjb3BlLm5hdkRhdGEuaWQgLCBoaWRkZW5TdGF0dXMgOiBuIH19KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUubmF2RGF0YS5pc19oaWRkZW4gPT0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmluZm8oaTE4blBhcmFtKCdqc19zdGF0ZV9oaWRkZW4nLCB7dGl0bGU6ICRzY29wZS5uYXZEYXRhLnRpdGxlfSkpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmluZm8oaTE4blBhcmFtKCdqc19zdGF0ZV92aXNpYmxlJywge3RpdGxlOiAkc2NvcGUubmF2RGF0YS50aXRsZX0pKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0ICAgICRzY29wZS4kd2F0Y2goZnVuY3Rpb24oKSB7IHJldHVybiAkc2NvcGUubmF2RGF0YS5pc19ob21lIH0sIGZ1bmN0aW9uKG4sIG8pIHtcblx0XHRcdCAgICBcdGlmIChuICE9PSBvICYmIG4gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0JGh0dHAuZ2V0KCdhZG1pbi9hcGktY21zLW5hdi90b2dnbGUtaG9tZScsIHsgcGFyYW1zIDogeyBuYXZJZCA6ICRzY29wZS5uYXZEYXRhLmlkICwgaG9tZVN0YXRlIDogbiB9fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUubWVudURhdGFSZWxvYWQoKS50aGVuKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUubmF2RGF0YS5pc19ob21lID09IDEpIHtcblx0XHRcdFx0XHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blBhcmFtKCdqc19zdGF0ZV9pc19ob21lJywge3RpdGxlOiAkc2NvcGUubmF2RGF0YS50aXRsZX0pKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2Uuc3VjY2VzcyhpMThuUGFyYW0oJ2pzX3N0YXRlX2lzX25vdF9ob21lJywge3RpdGxlOiAkc2NvcGUubmF2RGF0YS50aXRsZX0pKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0JHNjb3BlLnRvZ2dsZVBhZ2VTZXR0aW5nc092ZXJsYXkoKTtcblx0XHRcdCAgICBcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0XHRpbml0aWFsaXplcigpO1xuXHR9XSk7XG5cblx0LyoqXG5cdCAqIEBwYXJhbSAkc2NvcGUubGFuZyBmcm9tIG5nLXJlcGVhdFxuXHQgKi9cblx0emFhLmNvbnRyb2xsZXIoXCJOYXZJdGVtQ29udHJvbGxlclwiLCBbXG5cdFx0JyRzY29wZScsICckcm9vdFNjb3BlJywgJyRodHRwJywgJyRmaWx0ZXInLCAnJHRpbWVvdXQnLCAnU2VydmljZU1lbnVEYXRhJywgJ0FkbWluTGFuZ1NlcnZpY2UnLCAnQWRtaW5Ub2FzdFNlcnZpY2UnLCAnU2VydmljZUxpdmVFZGl0TW9kZScsICdTZXJ2aWNlTGF5b3V0c0RhdGEnLCAnU2VydmljZVdvcmtpbmdQYWdlVmVyc2lvbicsXG5cdFx0ZnVuY3Rpb24oJHNjb3BlLCAkcm9vdFNjb3BlLCAkaHR0cCwgJGZpbHRlciwgJHRpbWVvdXQsIFNlcnZpY2VNZW51RGF0YSwgQWRtaW5MYW5nU2VydmljZSwgQWRtaW5Ub2FzdFNlcnZpY2UsIFNlcnZpY2VMaXZlRWRpdE1vZGUsIFNlcnZpY2VMYXlvdXRzRGF0YSwgU2VydmljZVdvcmtpbmdQYWdlVmVyc2lvbikge1xuXG5cdFx0JHNjb3BlLmxvYWRlZCA9IGZhbHNlO1xuXG5cdFx0JHNjb3BlLk5hdkNvbnRyb2xsZXIgPSAkc2NvcGUuJHBhcmVudDtcblxuXHRcdCRzY29wZS5saXZlRWRpdFN0YXRlID0gZmFsc2U7XG5cblx0XHQkc2NvcGUuJHdhdGNoKGZ1bmN0aW9uKCkgeyByZXR1cm4gU2VydmljZUxpdmVFZGl0TW9kZS5zdGF0ZSB9LCBmdW5jdGlvbihuLCBvKSB7XG5cdFx0XHQkc2NvcGUubGl2ZUVkaXRTdGF0ZSA9IG47XG5cdFx0fSk7XG5cblx0XHQkc2NvcGUub3BlbkxpdmVVcmwgPSBmdW5jdGlvbihpZCwgdmVyc2lvbklkKSB7XG5cdFx0XHRTZXJ2aWNlTGl2ZUVkaXRNb2RlLmNoYW5nZVVybChpZCwgdmVyc2lvbklkKTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLmxvYWRMaXZlVXJsID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRTZXJ2aWNlTGl2ZUVkaXRNb2RlLmNoYW5nZVVybCgkc2NvcGUuaXRlbS5pZCwgJHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbik7XG5cdFx0fTtcblxuXHRcdC8vIGxheW91dHNEYXRhXG5cblx0XHQkc2NvcGUubGF5b3V0c0RhdGEgPSBTZXJ2aWNlTGF5b3V0c0RhdGEuZGF0YTtcblxuICAgIFx0JHNjb3BlLiRvbignc2VydmljZTpCbG9ja3NEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcbiAgICBcdFx0JHNjb3BlLmxheW91dHNEYXRhID0gZGF0YTtcbiAgICBcdH0pO1xuXHRcdFxuXHRcdC8vIHNlcnZpY2VNZW51RGF0YSBpbmhlcml0YW5jZVxuXG5cdFx0JHNjb3BlLm1lbnVEYXRhUmVsb2FkID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gU2VydmljZU1lbnVEYXRhLmxvYWQodHJ1ZSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS4kb24oJ3NlcnZpY2U6TG9hZExhbmd1YWdlJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcblx0XHRcdGlmICghJHNjb3BlLmxvYWRlZCkge1xuXHRcdFx0XHQkc2NvcGUucmVmcmVzaCgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly8gcHJvcGVydGllczpcblxuXHRcdCRzY29wZS5pc1RyYW5zbGF0ZWQgPSBmYWxzZTtcblxuXHRcdCRzY29wZS5pdGVtID0gW107XG5cblx0XHQkc2NvcGUuaXRlbUNvcHkgPSBbXTtcblxuXHRcdCRzY29wZS5zZXR0aW5ncyA9IGZhbHNlO1xuXG5cdFx0JHNjb3BlLnR5cGVEYXRhQ29weSA9IFtdO1xuXG5cdFx0JHNjb3BlLnR5cGVEYXRhID0gW107XG5cblx0XHQkc2NvcGUuY29udGFpbmVyID0gW107XG5cblx0XHQkc2NvcGUuZXJyb3JzID0gW107XG5cblx0XHQkc2NvcGUuaG9tZVVybCA9ICRyb290U2NvcGUubHV5YWNmZy5ob21lVXJsO1xuXG5cdFx0JHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbiA9IDA7XG5cdFx0XG5cdFx0JHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbkFsaWFzO1xuXG5cdFx0JHNjb3BlLnRyYXNoSXRlbSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCRzY29wZS5sYW5nLmlzX2RlZmF1bHQgPT0gMCkge1xuXHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5jb25maXJtKGkxOG5bJ2pzX3BhZ2VfY29uZmlybV9kZWxldGUnXSwgaTE4blsnY21zYWRtaW5fc2V0dGluZ3NfdHJhc2hwYWdlX3RpdGxlJ10sIFsnJHRvYXN0JywgZnVuY3Rpb24oJHRvYXN0KSB7XG5cdFx0XHRcdFx0JGh0dHAuZGVsZXRlKCdhZG1pbi9hcGktY21zLW5hdml0ZW0vZGVsZXRlP25hdkl0ZW1JZD0nICsgJHNjb3BlLml0ZW0uaWQpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdCRzY29wZS5tZW51RGF0YVJlbG9hZCgpLnRoZW4oZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdCRzY29wZS5pc1RyYW5zbGF0ZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLml0ZW0gPSBbXTtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLml0ZW1Db3B5ID0gW107XG5cdFx0XHRcdFx0XHRcdCRzY29wZS5zZXR0aW5ncyA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUudHlwZURhdGFDb3B5ID0gW107XG5cdFx0XHRcdFx0XHRcdCRzY29wZS50eXBlRGF0YSA9IFtdO1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUuY29udGFpbmVyID0gW107XG5cdFx0XHRcdFx0XHRcdCRzY29wZS5lcnJvcnMgPSBbXTtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbiA9IDA7XG5cdFx0XHRcdFx0XHRcdCRzY29wZS4kYnJvYWRjYXN0KCdkZWxldGVkTmF2SXRlbScpO1xuXHRcdFx0XHRcdFx0XHQkdG9hc3QuY2xvc2UoKTtcblx0XHQgICAgXHRcdFx0fSk7XG5cdFx0ICAgIFx0XHR9LCBmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuZXJyb3IoaTE4blsnanNfcGFnZV9kZWxldGVfZXJyb3JfY2F1c2VfcmVkaXJlY3RzJ10pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XSk7XG5cdFx0XHR9XG5cdCAgICB9O1xuXG5cdFx0JHNjb3BlLnJlc2V0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHQkc2NvcGUuaXRlbUNvcHkgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLml0ZW0pO1xuXHRcdFx0aWYgKCRzY29wZS5pdGVtLm5hdl9pdGVtX3R5cGUgPT0gMSkge1xuXHRcdFx0XHQkc2NvcGUudHlwZURhdGFDb3B5ID0gYW5ndWxhci5jb3B5KHsnbmF2X2l0ZW1fdHlwZV9pZCcgOiAkc2NvcGUuaXRlbS5uYXZfaXRlbV90eXBlX2lkIH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JHNjb3BlLnR5cGVEYXRhQ29weSA9IGFuZ3VsYXIuY29weSgkc2NvcGUudHlwZURhdGEpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHQkc2NvcGUudXBkYXRlTmF2SXRlbURhdGEgPSBmdW5jdGlvbihpdGVtQ29weSwgdHlwZURhdGFDb3B5KSB7XG5cdFx0XHQkc2NvcGUuZXJyb3JzID0gW107XG5cdFx0XHR2YXIgaGVhZGVycyA9IHtcImhlYWRlcnNcIiA6IHsgXCJDb250ZW50LVR5cGVcIiA6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04XCIgfX07XG5cdFx0XHR2YXIgbmF2SXRlbUlkID0gaXRlbUNvcHkuaWQ7XG5cblx0XHRcdHR5cGVEYXRhQ29weS50aXRsZSA9IGl0ZW1Db3B5LnRpdGxlO1xuXHRcdFx0dHlwZURhdGFDb3B5LmFsaWFzID0gaXRlbUNvcHkuYWxpYXM7XG5cdFx0XHR0eXBlRGF0YUNvcHkudGl0bGVfdGFnID0gaXRlbUNvcHkudGl0bGVfdGFnO1xuXHRcdFx0dHlwZURhdGFDb3B5LmRlc2NyaXB0aW9uID0gaXRlbUNvcHkuZGVzY3JpcHRpb247XG5cdFx0XHR0eXBlRGF0YUNvcHkua2V5d29yZHMgPSBpdGVtQ29weS5rZXl3b3Jkcztcblx0XHRcdHR5cGVEYXRhQ29weS50aW1lc3RhbXBfY3JlYXRlID0gaXRlbUNvcHkudGltZXN0YW1wX2NyZWF0ZTtcblx0XHRcdHR5cGVEYXRhQ29weS5pbWFnZV9pZCA9IGl0ZW1Db3B5LmltYWdlX2lkO1xuXHRcdFx0dHlwZURhdGFDb3B5LmlzX3VybF9zdHJpY3RfcGFyc2luZ19kaXNhYmxlZCA9IGl0ZW1Db3B5LmlzX3VybF9zdHJpY3RfcGFyc2luZ19kaXNhYmxlZDtcblx0XHRcdHR5cGVEYXRhQ29weS5pc19jYWNoZWFibGUgPSBpdGVtQ29weS5pc19jYWNoZWFibGU7XG5cdFx0XHQkaHR0cC5wb3N0KFxuXHRcdFx0XHQnYWRtaW4vYXBpLWNtcy1uYXZpdGVtL3VwZGF0ZS1wYWdlLWl0ZW0/bmF2SXRlbUlkPScgKyBuYXZJdGVtSWQgKyAnJm5hdkl0ZW1UeXBlPScgKyBpdGVtQ29weS5uYXZfaXRlbV90eXBlLFxuXHRcdFx0XHQkLnBhcmFtKHR5cGVEYXRhQ29weSksXG5cdFx0XHRcdGhlYWRlcnNcblx0XHRcdCkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRpZiAoaXRlbUNvcHkubmF2X2l0ZW1fdHlwZSAhPT0gMSkge1xuXHRcdFx0XHRcdCRzY29wZS5jdXJyZW50UGFnZVZlcnNpb24gPSAwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdCRzY29wZS5sb2FkZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYgKHJlc3BvbnNlLmRhdGEpIHtcblx0XHRcdFx0XHQvKiBzd2l0Y2ggdmVyc2lvbiBpZiB0eXBlIGlzIHBhZ2UgKi9cblx0XHRcdFx0XHRpZiAoaXRlbUNvcHkubmF2X2l0ZW1fdHlwZSA9PSAxICYmIHR5cGVvZiByZXNwb25zZS5kYXRhWyd0eXBlRGF0YSddID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdFx0LyogY2hvb3NlIGdpdmVuIHZlcnNpb24gb3IgY2hvb3NlIGZpcnN0IGF2YWlsYWJsZSB2ZXJzaW9uICovXG5cdFx0XHRcdFx0XHR2YXIgcGFnZVZlcnNpb25LZXkgPSByZXNwb25zZS5kYXRhWydpdGVtJ10ubmF2X2l0ZW1fdHlwZV9pZDtcblx0XHRcdFx0XHRcdGlmIChwYWdlVmVyc2lvbktleSA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdHBhZ2VWZXJzaW9uS2V5ID0gT2JqZWN0LmtleXMocmVzcG9uc2UuZGF0YVsndHlwZURhdGEnXSlbMF07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQkc2NvcGUuY29udGFpbmVyID0gcmVzcG9uc2UuZGF0YVsndHlwZURhdGEnXVtwYWdlVmVyc2lvbktleV1bJ2NvbnRlbnRBc0FycmF5J107XG5cdFx0XHRcdFx0XHQkc2NvcGUuY3VycmVudFBhZ2VWZXJzaW9uQWxpYXMgPSByZXNwb25zZS5kYXRhWyd0eXBlRGF0YSddW3BhZ2VWZXJzaW9uS2V5XVsndmVyc2lvbl9hbGlhcyddO1xuXHRcdFx0XHRcdFx0JHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbiA9IHBhZ2VWZXJzaW9uS2V5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5zdWNjZXNzKGkxOG5QYXJhbSgnanNfcGFnZV9pdGVtX3VwZGF0ZV9vaycsIHsndGl0bGUnOiBpdGVtQ29weS50aXRsZX0pKTtcblx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhUmVsb2FkKCk7XG5cdFx0XHRcdCRzY29wZS5yZWZyZXNoKCk7XG5cdFx0XHRcdCRzY29wZS50b2dnbGVTZXR0aW5nc092ZXJsYXkoKTtcblx0XHRcdFx0JHNjb3BlLnJlc2V0KCk7XG5cdFx0XHR9LCBmdW5jdGlvbiBlcnJvckNhbGxiYWNrKHJlc3BvbnNlKSB7XG5cdFx0XHRcdGFuZ3VsYXIuZm9yRWFjaChyZXNwb25zZS5kYXRhLCBmdW5jdGlvbihpdGVtKSB7XG5cdFx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuZXJyb3IoaXRlbS5tZXNzYWdlKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLiR3YXRjaCgnaXRlbUNvcHkuYWxpYXMnLCBmdW5jdGlvbihuLCBvKSB7XG5cdFx0XHRpZiAobiE9byAmJiBuIT1udWxsKSB7XG5cdFx0XHRcdCRzY29wZS5pdGVtQ29weS5hbGlhcyA9ICRmaWx0ZXIoJ3NsdWdpZnknKShuKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdCRzY29wZS5yZW1vdmVWZXJzaW9uID0gZnVuY3Rpb24odmVyc2lvbikge1xuXHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuY29uZmlybShpMThuUGFyYW0oJ2pzX3ZlcnNpb25fZGVsZXRlX2NvbmZpcm0nLCB7YWxpYXM6IHZlcnNpb24udmVyc2lvbl9hbGlhc30pLCBpMThuWydjbXNhZG1pbl92ZXJzaW9uX3JlbW92ZSddLCBbJyR0b2FzdCcsICckaHR0cCcsIGZ1bmN0aW9uKCR0b2FzdCwgJGh0dHApIHtcblx0XHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtL3JlbW92ZS1wYWdlLXZlcnNpb24nLCB7cGFnZUlkIDogdmVyc2lvbi5pZH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHQkc2NvcGUucmVmcmVzaEZvcmNlKCk7XG5cdFx0XHRcdFx0JHRvYXN0LmNsb3NlKCk7XG5cdFx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2Uuc3VjY2VzcyhpMThuUGFyYW0oJ2pzX3ZlcnNpb25fZGVsZXRlX2NvbmZpcm1fc3VjY2VzcycsIHthbGlhczogdmVyc2lvbi52ZXJzaW9uX2FsaWFzfSkpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1dKTtcblx0XHR9O1xuXHRcdFxuICAgIFx0JHNjb3BlLmVkaXRWZXJzaW9uSXRlbTtcbiAgICBcdFxuICAgIFx0JHNjb3BlLnRhYiA9IDE7XG4gICAgXHRcbiAgICBcdCRzY29wZS5lZGl0VmVyc2lvbiA9IGZ1bmN0aW9uKHZlcnNpb25JdGVtKSB7XG4gICAgXHRcdCRzY29wZS5jaGFuZ2VUYWIoNCk7XG4gICAgXHRcdCRzY29wZS5lZGl0VmVyc2lvbkl0ZW0gPSB2ZXJzaW9uSXRlbTtcbiAgICBcdH07XG5cbiAgICBcdCRzY29wZS5lZGl0VmVyc2lvblVwZGF0ZSA9IGZ1bmN0aW9uKGVkaXRWZXJzaW9uSXRlbSkge1xuICAgIFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdml0ZW0vY2hhbmdlLXBhZ2UtdmVyc2lvbi1sYXlvdXQnLCB7J3BhZ2VJdGVtSWQnOiBlZGl0VmVyc2lvbkl0ZW0uaWQsICdsYXlvdXRJZCc6IGVkaXRWZXJzaW9uSXRlbS5sYXlvdXRfaWQsICdhbGlhcyc6IGVkaXRWZXJzaW9uSXRlbS52ZXJzaW9uX2FsaWFzfSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuICAgIFx0XHRcdCRzY29wZS5yZWZyZXNoRm9yY2UoKTtcbiAgICBcdFx0XHRBZG1pblRvYXN0U2VydmljZS5zdWNjZXNzKGkxOG5bJ2pzX3ZlcnNpb25fdXBkYXRlX3N1Y2Nlc3MnXSk7XG4gICAgXHRcdFx0JHNjb3BlLnRvZ2dsZVNldHRpbmdzT3ZlcmxheSgpO1xuXHRcdFx0fSk7XG4gICAgXHR9O1xuICAgIFx0XG5cdFx0JHNjb3BlLmdldEl0ZW0gPSBmdW5jdGlvbihsYW5nSWQsIG5hdklkKSB7XG5cdFx0XHQkaHR0cCh7XG5cdFx0XHQgICAgdXJsOiAnYWRtaW4vYXBpLWNtcy1uYXZpdGVtL25hdi1sYW5nLWl0ZW0nLFxuXHRcdFx0ICAgIG1ldGhvZDogXCJHRVRcIixcblx0XHRcdCAgICBwYXJhbXM6IHsgbGFuZ0lkIDogbGFuZ0lkLCBuYXZJZCA6IG5hdklkIH1cblx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0JHNjb3BlLml0ZW0gPSByZXNwb25zZS5kYXRhWydpdGVtJ107XG5cdFx0XHRcdCRzY29wZS50eXBlRGF0YSA9IHJlc3BvbnNlLmRhdGFbJ3R5cGVEYXRhJ107XG5cdFx0XHRcdCRzY29wZS5pc1RyYW5zbGF0ZWQgPSB0cnVlO1xuXHRcdFx0XHQkc2NvcGUucmVzZXQoKTtcblx0XHRcdFx0XG5cdFx0XHRcdGlmICghcmVzcG9uc2UuZGF0YVsnbmF2J10uaXNfZHJhZnQpIHtcblx0XHRcdFx0XHQkc2NvcGUuTmF2Q29udHJvbGxlci5idWJibGVQYXJlbnRzKCRzY29wZS5OYXZDb250cm9sbGVyLm5hdkRhdGEucGFyZW50X25hdl9pZCwgJHNjb3BlLk5hdkNvbnRyb2xsZXIubmF2RGF0YS5uYXZfY29udGFpbmVyX2lkKTtcblx0XHRcdFx0XHRpZiAoJHNjb3BlLml0ZW0ubmF2X2l0ZW1fdHlwZSA9PSAxKSB7XG5cblx0XHRcdFx0XHRcdHZhciBsYXN0VmVyc2lvbiA9IFNlcnZpY2VXb3JraW5nUGFnZVZlcnNpb24uaGFzVmVyc2lvbigkc2NvcGUuaXRlbS5pZCk7XG5cblx0XHRcdFx0XHRcdGlmIChsYXN0VmVyc2lvbikge1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUuc3dpdGNoVmVyc2lvbihsYXN0VmVyc2lvbik7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpZiAoJHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbiA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbiA9IHJlc3BvbnNlLmRhdGEuaXRlbS5uYXZfaXRlbV90eXBlX2lkO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChyZXNwb25zZS5kYXRhLml0ZW0ubmF2X2l0ZW1fdHlwZV9pZCBpbiByZXNwb25zZS5kYXRhLnR5cGVEYXRhKSB7XG5cdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbkFsaWFzID0gJHNjb3BlLmNvbnRhaW5lciA9IHJlc3BvbnNlLmRhdGEudHlwZURhdGFbJHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbl1bJ3ZlcnNpb25fYWxpYXMnXTtcblx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuY29udGFpbmVyID0gcmVzcG9uc2UuZGF0YS50eXBlRGF0YVskc2NvcGUuY3VycmVudFBhZ2VWZXJzaW9uXVsnY29udGVudEFzQXJyYXknXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQkc2NvcGUuY3VycmVudFBhZ2VWZXJzaW9uID0gcmVzcG9uc2UuZGF0YS5pdGVtLm5hdl9pdGVtX3R5cGVfaWQ7XG5cdFx0XHRcdFx0JHNjb3BlLmNvbnRhaW5lciA9IHJlc3BvbnNlLmRhdGEudHlwZURhdGFbJHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbl1bJ2NvbnRlbnRBc0FycmF5J107XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQkc2NvcGUubG9hZGVkID0gdHJ1ZVxuXHRcdFx0fSwgZnVuY3Rpb24oZXJyb3IpIHtcblx0XHRcdFx0Ly8gaXRzIGxvYWRlZCwgYnV0IHRoZSBkYXRhIGRvZXMgbm90IGV4aXN0cy5cblx0XHRcdFx0JHNjb3BlLmxvYWRlZCA9IHRydWU7XG5cdFx0XHR9KTtcblx0XHR9O1xuXHRcdFxuXHRcdCRzY29wZS52ZXJzaW9uRHJvcERvd25WaXNiaWxpdHkgPSBmYWxzZTtcblx0XHRcblx0XHQkc2NvcGUudG9nZ2xlVmVyc2lvbnNEcm9wZG93biA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0JHNjb3BlLnZlcnNpb25Ecm9wRG93blZpc2JpbGl0eSA9ICEkc2NvcGUudmVyc2lvbkRyb3BEb3duVmlzYmlsaXR5O1xuXHRcdH07XG5cdFx0XG5cdFx0JHNjb3BlLnN3aXRjaFZlcnNpb24gPSBmdW5jdGlvbihwYWdlVmVyc2lvbmlkLCB0b2dnbGUpIHtcblx0XHRcdFNlcnZpY2VXb3JraW5nUGFnZVZlcnNpb24uc3RvcmUoJHNjb3BlLml0ZW0uaWQsIHBhZ2VWZXJzaW9uaWQpO1xuXHRcdFx0JHNjb3BlLmNvbnRhaW5lciA9ICRzY29wZS50eXBlRGF0YVtwYWdlVmVyc2lvbmlkXVsnY29udGVudEFzQXJyYXknXTtcblx0XHRcdCRzY29wZS5jdXJyZW50UGFnZVZlcnNpb25BbGlhcyA9ICRzY29wZS50eXBlRGF0YVtwYWdlVmVyc2lvbmlkXVsndmVyc2lvbl9hbGlhcyddO1xuXHRcdFx0JHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbiA9IHBhZ2VWZXJzaW9uaWQ7XG5cdFx0XHQkc2NvcGUubG9hZExpdmVVcmwoKTtcblx0XHRcdGlmICh0b2dnbGUpwqB7XG5cdFx0XHRcdCRzY29wZS50b2dnbGVWZXJzaW9uc0Ryb3Bkb3duKCk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdCRzY29wZS5yZWZyZXNoRm9yY2UgPSBmdW5jdGlvbigpIHtcblx0XHRcdCRzY29wZS5nZXRJdGVtKCRzY29wZS5sYW5nLmlkLCAkc2NvcGUuTmF2Q29udHJvbGxlci5pZCk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS5yZWZyZXNoID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoQWRtaW5MYW5nU2VydmljZS5pc0luU2VsZWN0aW9uKCRzY29wZS5sYW5nLnNob3J0X2NvZGUpKSB7XG5cdFx0XHRcdCRzY29wZS5nZXRJdGVtKCRzY29wZS5sYW5nLmlkLCAkc2NvcGUuTmF2Q29udHJvbGxlci5pZCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRcblx0XHQvKiBuZXcgc2V0dGluZ3Mgb3ZlcmxheSAqL1xuXHRcdFxuXHRcdCRzY29wZS5zZXR0aW5nc092ZXJsYXlWaXNpYmlsaXR5ID0gdHJ1ZTtcblx0XHRcblx0XHQkc2NvcGUudG9nZ2xlU2V0dGluZ3NPdmVybGF5ID0gZnVuY3Rpb24odGFiKSB7XG5cdFx0XHQkc2NvcGUuc2V0dGluZ3NPdmVybGF5VmlzaWJpbGl0eSA9ICEkc2NvcGUuc2V0dGluZ3NPdmVybGF5VmlzaWJpbGl0eTtcblx0XHRcdGlmICh0YWIpIHtcblx0XHRcdFx0JHNjb3BlLnRhYiA9IHRhYjtcblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdFx0JHNjb3BlLmNoYW5nZVRhYiA9IGZ1bmN0aW9uKHRhYikge1xuXHRcdFx0JHNjb3BlLnRhYiA9IHRhYjtcblx0XHR9XG5cdFx0XG5cdFx0LyoqXG5cdFx0ICogUmVmcmVzaCB0aGUgY3VycmVudCBsYXlvdXQgY29udGFpbmVyIGJsb2Nrcy5cblx0XHQgKiBcblx0XHQgKiBBZnRlciBzdWNjZXNzZnVsbCBhcGkgcmVzcG9uc2UgYWxsIGNtcyBsYXlvdXQgYXJlIGZvcmVhY2ggYW5kIHRoZSB2YWx1ZXMgYXJlIHBhc3NlZCB0byByZXZQbGFjZWhvbGRlcnMoKSBtZXRob2QuXG5cdFx0ICovXG5cdFx0JHNjb3BlLnJlZnJlc2hOZXN0ZWQgPSBmdW5jdGlvbihwcmV2SWQsIHBsYWNlaG9sZGVyVmFyKSB7XG5cdFx0XHQkaHR0cCh7XG5cdFx0XHRcdHVybCA6ICdhZG1pbi9hcGktY21zLW5hdml0ZW0vcmVsb2FkLXBsYWNlaG9sZGVyJyxcblx0XHRcdFx0bWV0aG9kIDogJ0dFVCcsXG5cdFx0XHRcdHBhcmFtcyA6IHsgbmF2SXRlbVBhZ2VJZCA6ICRzY29wZS5jdXJyZW50UGFnZVZlcnNpb24sIHByZXZJZCA6IHByZXZJZCwgcGxhY2Vob2xkZXJWYXIgOiBwbGFjZWhvbGRlclZhcn1cblx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0U2VydmljZUxpdmVFZGl0TW9kZS5jaGFuZ2VVcmwoJHNjb3BlLml0ZW0uaWQsICRzY29wZS5jdXJyZW50UGFnZVZlcnNpb24pO1xuXHRcdFx0XHRhbmd1bGFyLmZvckVhY2goJHNjb3BlLmNvbnRhaW5lci5fX3BsYWNlaG9sZGVycywgZnVuY3Rpb24ocGxhY2Vob2xkZXIpIHtcblx0XHRcdFx0XHQkc2NvcGUucmV2UGxhY2Vob2xkZXJzKHBsYWNlaG9sZGVyLCBwcmV2SWQsIHBsYWNlaG9sZGVyVmFyLCByZXNwb25zZS5kYXRhKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXHRcdFxuXHRcdC8qKlxuXHRcdCAqIFRoZSByZXZQbGFjZWhvbGRlcnMgbWV0aG9kIGdvZXMgdHJvdXJnaCB0aGUgbmV3IHJvdy9jb2wgKGdyaWQpIHN5c3RlbSBjb250YWluZXIganNvbiBsYXlvdXQgd2hlcmU6XG5cdFx0ICogXG5cdFx0ICogcm93c1tdWzFdID0gY29sIGxlZnRcblx0XHQgKiByb3dzW11bMl0gPSBjb2wgcmlnaHRcblx0XHQgKiBcblx0XHQgKiBXaGVyZSBhIGxheW91dCBoYXZlIGF0IGxlYXN0IG9uIHJvdyB3aGljaCBjYW4gaGF2ZSBjb2xzIGluc2lkZS4gU28gdGhlcmUgcmV2UGxhY2Vob2xkZXJzIG1ldGhvZCBnb2VzIHRyb3VnaCB0aGUgY29sc1xuXHRcdCAqIGFuZCBjaGVjayBpZiB0aGUgY29sIGlzIGVxdWFsIHRoZSBnaXZlbiBjb2wgdG8gcmVwbGFjZSB0aGUgY29udGVudCB3aXRoICAoZnJvbSByZWZyZXNoTmVzdGVkIG1ldGhvZCkuXG5cdFx0ICovXG5cdFx0JHNjb3BlLnJldlBsYWNlaG9sZGVycyA9IGZ1bmN0aW9uKHBsYWNlaG9sZGVycywgcHJldklkLCBwbGFjZWhvbGRlclZhciwgcmVwbGFjZUNvbnRlbnQpIHtcblx0XHRcdGFuZ3VsYXIuZm9yRWFjaChwbGFjZWhvbGRlcnMsIGZ1bmN0aW9uKHBsYWNlaG9sZGVyUm93LCBwbGFjZWhvbGRlcktleSkge1xuXHRcdFx0XHRpZiAocGFyc2VJbnQocHJldklkKSA9PSBwYXJzZUludChwbGFjZWhvbGRlclJvdy5wcmV2X2lkKSAmJiBwbGFjZWhvbGRlclZhciA9PSBwbGFjZWhvbGRlclJvd1sndmFyJ10pIHtcblx0XHRcdFx0XHRwbGFjZWhvbGRlcnNbcGxhY2Vob2xkZXJLZXldWydfX25hdl9pdGVtX3BhZ2VfYmxvY2tfaXRlbXMnXSA9IHJlcGxhY2VDb250ZW50O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCRzY29wZS5yZXZGaW5kKHBsYWNlaG9sZGVyUm93LCBwcmV2SWQsIHBsYWNlaG9sZGVyVmFyLCByZXBsYWNlQ29udGVudCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0XG5cdFx0LyoqXG5cdFx0ICogVGhlIHJldkZpbmQgbWV0aG9kIGRvZXMgdGhlIHJlY3Vyc2l2IGpvYiB3aXRoaW4gYSBibG9jayBhbiBwYXNzZXMgdGhlIHZhbHVlIGJhY2sgdG8gcmV2UGxhY2Vob2xkZXJzKCkuXG5cdFx0ICovXG5cdFx0JHNjb3BlLnJldkZpbmQgPSBmdW5jdGlvbihwbGFjZWhvbGRlciwgcHJldklkLCBwbGFjZWhvbGRlclZhciwgcmVwbGFjZUNvbnRlbnQpIHtcblx0XHRcdGZvciAodmFyIGkgaW4gcGxhY2Vob2xkZXJbJ19fbmF2X2l0ZW1fcGFnZV9ibG9ja19pdGVtcyddKSB7XG5cdFx0XHRcdGZvciAodmFyIGhvbGRlcktleSBpbiBwbGFjZWhvbGRlclsnX19uYXZfaXRlbV9wYWdlX2Jsb2NrX2l0ZW1zJ11baV1bJ19fcGxhY2Vob2xkZXJzJ10pIHtcblx0XHRcdFx0XHRmb3IgKHZhciBob2xkZXIgaW4gcGxhY2Vob2xkZXJbJ19fbmF2X2l0ZW1fcGFnZV9ibG9ja19pdGVtcyddW2ldWydfX3BsYWNlaG9sZGVycyddW2hvbGRlcktleV0pIHtcblx0XHRcdFx0XHRcdCRzY29wZS5yZXZQbGFjZWhvbGRlcnMocGxhY2Vob2xkZXJbJ19fbmF2X2l0ZW1fcGFnZV9ibG9ja19pdGVtcyddW2ldWydfX3BsYWNlaG9sZGVycyddW2hvbGRlcktleV0sIHByZXZJZCwgcGxhY2Vob2xkZXJWYXIsIHJlcGxhY2VDb250ZW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHRcdFxuXHRcdC8qKlxuXHRcdCAqIGRyb3BzIGl0ZW1zIGluIGFuIGVtcHR5IHBhZ2UgcGxhY2Vob2xkZXIgb2YgQ01TIExBWU9VVCBQTEFDRUhPTERFUlxuXHRcdCAqL1xuXHRcdCRzY29wZS5kcm9wSXRlbVBsYWNlaG9sZGVyID0gZnVuY3Rpb24oZHJhZ2dlZCxkcm9wcGVkLHBvc2l0aW9uKSB7XG5cdFx0XHRpZiAoZHJhZ2dlZC5oYXNPd25Qcm9wZXJ0eSgnZmF2b3JpemVkJykgfHwgZHJhZ2dlZC5oYXNPd25Qcm9wZXJ0eSgnbmV3YmxvY2snKSkge1xuXHRcdFx0XHQvLyBpdHMgYSBuZXcgYmxvY2tcblx0XHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtcGFnZWJsb2NraXRlbS9jcmVhdGUnLCB7XG5cdFx0XHRcdFx0cHJldl9pZDogZHJvcHBlZC5wcmV2X2lkLCBcblx0XHRcdFx0XHRzb3J0X2luZGV4OjAsIFxuXHRcdFx0XHRcdGJsb2NrX2lkOiBkcmFnZ2VkLmlkLCBcblx0XHRcdFx0XHRwbGFjZWhvbGRlcl92YXIgOiBkcm9wcGVkWyd2YXInXSwgXG5cdFx0XHRcdFx0bmF2X2l0ZW1fcGFnZV9pZDogZHJvcHBlZC5uYXZfaXRlbV9wYWdlX2lkXG5cdFx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHQkc2NvcGUucmVmcmVzaE5lc3RlZChkcm9wcGVkWydwcmV2X2lkJ10sIGRyb3BwZWRbJ3ZhciddKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2UgaWYgKGRyYWdnZWQuaGFzT3duUHJvcGVydHkoJ2NvcHlzdGFjaycpKSB7XG5cdFx0XHRcdC8vIGl0cyBhIGJsb2NrIGZyb20gY29weSBzdGFja1xuXHRcdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdml0ZW1ibG9jay9jb3B5LWJsb2NrLWZyb20tc3RhY2snLCB7XG5cdFx0XHRcdFx0Y29weUJsb2NrSWQ6IGRyYWdnZWQuaWQsXG5cdFx0XHRcdFx0c29ydF9pbmRleDogMCxcblx0XHRcdFx0XHRwcmV2X2lkOiAgZHJvcHBlZC5wcmV2X2lkLFxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyX3ZhciA6IGRyb3BwZWRbJ3ZhciddLCBcblx0XHRcdFx0XHRuYXZfaXRlbV9wYWdlX2lkOiBkcm9wcGVkLm5hdl9pdGVtX3BhZ2VfaWRcblx0XHRcdFx0fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdCRzY29wZS5yZWZyZXNoTmVzdGVkKGRyb3BwZWRbJ3ByZXZfaWQnXSwgZHJvcHBlZFsndmFyJ10pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIG1vdmluZyBhbiBleGlzdGluZyBibG9ja1xuXHRcdFx0XHQkaHR0cC5wdXQoJ2FkbWluL2FwaS1jbXMtbmF2aXRlbXBhZ2VibG9ja2l0ZW0vdXBkYXRlP2lkPScgKyBkcmFnZ2VkLmlkLCB7XG5cdFx0XHRcdFx0c29ydF9pbmRleDogMCxcblx0XHRcdFx0XHRwcmV2X2lkOiAgZHJvcHBlZC5wcmV2X2lkLFxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyX3ZhciA6IGRyb3BwZWRbJ3ZhciddLCBcblx0XHRcdFx0fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdCRzY29wZS5yZWZyZXNoRm9yY2UoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHR9O1xuXHRcdFxuXHRcdCRzY29wZS5yZWZyZXNoKCk7XG5cdH1dKTtcblxuXHQvKipcblx0ICogQHBhcmFtICRzY29wZS5ibG9jayBGcm9tIG5nLXJlcGVhdCBzY29wZSBhc3NpZ25tZW50XG5cdCAqL1xuXHR6YWEuY29udHJvbGxlcihcIlBhZ2VCbG9ja0VkaXRDb250cm9sbGVyXCIsIFtcblx0XHQnJHNjb3BlJywgJyRzY2UnLCAnJGh0dHAnLCAnQWRtaW5DbGFzc1NlcnZpY2UnLCAnQWRtaW5Ub2FzdFNlcnZpY2UnLCAnU2VydmljZUJsb2NrQ29weVN0YWNrJywgJ1NlcnZpY2VMaXZlRWRpdE1vZGUnLFxuXHRcdGZ1bmN0aW9uKCRzY29wZSwgJHNjZSwgJGh0dHAsIEFkbWluQ2xhc3NTZXJ2aWNlLCBBZG1pblRvYXN0U2VydmljZSwgU2VydmljZUJsb2NrQ29weVN0YWNrLCBTZXJ2aWNlTGl2ZUVkaXRNb2RlKSB7XG5cblx0XHQkc2NvcGUuTmF2SXRlbVR5cGVQYWdlQ29udHJvbGxlciA9ICRzY29wZS4kcGFyZW50O1xuXG5cdFx0LyoqXG5cdFx0ICogZHJvcHMgYW4gaXRlbSBpbiBhbiBlbXB0eSBwbGFjZWhvbGRlciBvZiBhIEJMT0NLXG5cdFx0ICovXG5cdFx0JHNjb3BlLmRyb3BJdGVtUGxhY2Vob2xkZXIgPSBmdW5jdGlvbihkcmFnZ2VkLGRyb3BwZWQscG9zaXRpb24pIHtcblx0XHRcdGlmIChkcmFnZ2VkLmhhc093blByb3BlcnR5KCdmYXZvcml6ZWQnKSB8fCBkcmFnZ2VkLmhhc093blByb3BlcnR5KCduZXdibG9jaycpKSB7XG5cdFx0XHRcdC8vIGl0cyBhIG5ldyBibG9ja1xuXHRcdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdml0ZW1wYWdlYmxvY2tpdGVtL2NyZWF0ZScsIHtcblx0XHRcdFx0XHRwcmV2X2lkIDogZHJvcHBlZC5wcmV2X2lkLFxuXHRcdFx0XHRcdHNvcnRfaW5kZXg6MCwgXG5cdFx0XHRcdFx0YmxvY2tfaWQgOiBkcmFnZ2VkLmlkLFxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyX3ZhciA6IGRyb3BwZWQudmFyLFxuXHRcdFx0XHRcdG5hdl9pdGVtX3BhZ2VfaWQgOiBkcm9wcGVkLm5hdl9pdGVtX3BhZ2VfaWRcblx0XHRcdFx0fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdCRzY29wZS5OYXZJdGVtVHlwZVBhZ2VDb250cm9sbGVyLnJlZnJlc2hOZXN0ZWQoZHJvcHBlZC5wcmV2X2lkLCBkcm9wcGVkLnZhcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmIChkcmFnZ2VkLmhhc093blByb3BlcnR5KCdjb3B5c3RhY2snKSkge1xuXHRcdFx0XHQvLyBpdHMgYSBibG9jayBmcm9tIGNvcHkgc3RhY2tcblx0XHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtYmxvY2svY29weS1ibG9jay1mcm9tLXN0YWNrJywge1xuXHRcdFx0XHRcdGNvcHlCbG9ja0lkOiBkcmFnZ2VkLmlkLFxuXHRcdFx0XHRcdHNvcnRfaW5kZXg6IDAsXG5cdFx0XHRcdFx0cHJldl9pZDogIGRyb3BwZWQucHJldl9pZCxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcl92YXIgOiBkcm9wcGVkLnZhcixcblx0XHRcdFx0XHRuYXZfaXRlbV9wYWdlX2lkIDogZHJvcHBlZC5uYXZfaXRlbV9wYWdlX2lkXG5cdFx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHQkc2NvcGUuTmF2SXRlbVR5cGVQYWdlQ29udHJvbGxlci5yZWZyZXNoTmVzdGVkKCRzY29wZS5wbGFjZWhvbGRlci5wcmV2X2lkLCAkc2NvcGUucGxhY2Vob2xkZXIudmFyKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBtb3ZpbmcgYW4gZXhpc3RpbmcgYmxvY2tcblx0XHRcdFx0JGh0dHAucHV0KCdhZG1pbi9hcGktY21zLW5hdml0ZW1wYWdlYmxvY2tpdGVtL3VwZGF0ZT9pZD0nICsgZHJhZ2dlZC5pZCwge1xuXHRcdFx0XHRcdHNvcnRfaW5kZXg6IDAsXG5cdFx0XHRcdFx0cHJldl9pZDogIGRyb3BwZWQucHJldl9pZCxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcl92YXIgOiBkcm9wcGVkLnZhcixcblx0XHRcdFx0fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdCRzY29wZS5yZWZyZXNoRm9yY2UoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRcblx0XHQvKipcblx0XHQgKiBEcm9wcyBhIGJsb2NrIGFib3ZlL2JlbG93IGFuIEVYSVNUSU5HIEJMT0NLXG5cdFx0ICovXG5cdFx0JHNjb3BlLmRyb3BJdGVtID0gZnVuY3Rpb24oZHJhZ2dlZCxkcm9wcGVkLHBvc2l0aW9uLGVsZW1lbnQpIHtcblx0XHRcdHZhciBzb3J0SW5kZXggPSAkc2NvcGUuJGluZGV4O1xuXHRcdFx0XG5cdFx0XHRpZiAocG9zaXRpb24gPT0gJ2JvdHRvbScpIHtcblx0XHRcdFx0c29ydEluZGV4ID0gc29ydEluZGV4ICsgMTtcblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0aWYgKGRyYWdnZWQuaGFzT3duUHJvcGVydHkoJ2Zhdm9yaXplZCcpIHx8IGRyYWdnZWQuaGFzT3duUHJvcGVydHkoJ25ld2Jsb2NrJykpIHtcblx0XHRcdFx0Ly8gaXRzIGEgbmV3IGJsb2NrXG5cdFx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2aXRlbXBhZ2VibG9ja2l0ZW0vY3JlYXRlJywgeyBcblx0XHRcdFx0XHRwcmV2X2lkOiAkc2NvcGUucGxhY2Vob2xkZXIucHJldl9pZCxcblx0XHRcdFx0XHRzb3J0X2luZGV4OiBzb3J0SW5kZXgsIFxuXHRcdFx0XHRcdGJsb2NrX2lkOiBkcmFnZ2VkLmlkLCBcblx0XHRcdFx0XHRwbGFjZWhvbGRlcl92YXI6ICRzY29wZS5wbGFjZWhvbGRlclsndmFyJ10sIFxuXHRcdFx0XHRcdG5hdl9pdGVtX3BhZ2VfaWQ6ICRzY29wZS5wbGFjZWhvbGRlci5uYXZfaXRlbV9wYWdlX2lkXG5cdFx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHQkc2NvcGUuTmF2SXRlbVR5cGVQYWdlQ29udHJvbGxlci5yZWZyZXNoTmVzdGVkKCRzY29wZS5wbGFjZWhvbGRlci5wcmV2X2lkLCAkc2NvcGUucGxhY2Vob2xkZXIudmFyKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2UgaWYgKGRyYWdnZWQuaGFzT3duUHJvcGVydHkoJ2NvcHlzdGFjaycpKSB7XG5cdFx0XHRcdC8vIGl0cyBhIGJsb2NrIGZyb20gY29weSBzdGFja1xuXHRcdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdml0ZW1ibG9jay9jb3B5LWJsb2NrLWZyb20tc3RhY2snLCB7XG5cdFx0XHRcdFx0Y29weUJsb2NrSWQ6IGRyYWdnZWQuaWQsXG5cdFx0XHRcdFx0c29ydF9pbmRleDogc29ydEluZGV4LFxuXHRcdFx0XHRcdHByZXZfaWQ6ICRzY29wZS5wbGFjZWhvbGRlci5wcmV2X2lkLFxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyX3ZhcjogJHNjb3BlLnBsYWNlaG9sZGVyWyd2YXInXSxcblx0XHRcdFx0XHRuYXZfaXRlbV9wYWdlX2lkOiAkc2NvcGUucGxhY2Vob2xkZXIubmF2X2l0ZW1fcGFnZV9pZFxuXHRcdFx0XHR9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0JHNjb3BlLk5hdkl0ZW1UeXBlUGFnZUNvbnRyb2xsZXIucmVmcmVzaE5lc3RlZCgkc2NvcGUucGxhY2Vob2xkZXIucHJldl9pZCwgJHNjb3BlLnBsYWNlaG9sZGVyLnZhcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gbW92aW5nIGFuIGV4aXN0aW5nIGJsb2NrXG5cdFx0XHRcdCRodHRwLnB1dCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtcGFnZWJsb2NraXRlbS91cGRhdGU/aWQ9JyArIGRyYWdnZWQuaWQsIHtcblx0XHRcdFx0XHRwcmV2X2lkOiAkc2NvcGUucGxhY2Vob2xkZXIucHJldl9pZCxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcl92YXI6ICRzY29wZS5wbGFjZWhvbGRlclsndmFyJ10sXG5cdFx0XHRcdFx0c29ydF9pbmRleDogc29ydEluZGV4XG5cdFx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHQvKlxuXHRcdFx0XHRcdCAqIEBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2x1eWFkZXYvbHV5YS9pc3N1ZXMvMTYyOVxuXHRcdFx0XHRcdCAqIFRoZSBtb3ZlZCBibG9jaywgc2hvdWxkIHJlbW92ZWQgZnJvbSB0aGUgcHJldmlvdXMgYXJyYXkuIFRoaXMgaXMgb25seSB0aGUgY2FzZSB3aGVuIGRyYWdnaW5nIGZyb20gYW4gT1VURVIgYmxvY2sgaW50byBhbiBJTk5FUiBibG9ja1xuXHRcdFx0XHRcdCAqIGlzIHRoaXMgd2lsbCBub3QgcmVmcmVzaCB0aGUgT1VURVIgYmxvY2ssIGJ1dCBhbHdheXMgd2lsbCBpbiB0aGUgb3Bwb3NpdGUgd2F5LlxuXHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdGFuZ3VsYXIuZWxlbWVudChlbGVtZW50KS5yZW1vdmUoKTtcblx0XHRcdFx0XHQvLyBhcyB0aGUgYmxvY2sgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGV4aXN0aW5nLCByZWZyZXNoIHRoZSBuZXcgcGxhY2Vob2xkZXIuXG5cdFx0XHRcdFx0JHNjb3BlLk5hdkl0ZW1UeXBlUGFnZUNvbnRyb2xsZXIucmVmcmVzaE5lc3RlZCgkc2NvcGUucGxhY2Vob2xkZXIucHJldl9pZCwgJHNjb3BlLnBsYWNlaG9sZGVyLnZhcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0XG5cdFx0JHNjb3BlLmNvcHlCbG9jayA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0U2VydmljZUJsb2NrQ29weVN0YWNrLnB1c2goJHNjb3BlLmJsb2NrKTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLnRvZ2dsZUhpZGRlbiA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCRzY29wZS5ibG9jay5pc19oaWRkZW4gPT0gMCkge1xuXHRcdFx0XHQkc2NvcGUuYmxvY2suaXNfaGlkZGVuID0gMTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCRzY29wZS5ibG9jay5pc19oaWRkZW4gPSAwO1xuXHRcdFx0fVxuXG5cdFx0XHQkaHR0cCh7XG5cdFx0XHQgICAgdXJsOiAnYWRtaW4vYXBpLWNtcy1uYXZpdGVtL3RvZ2dsZS1ibG9jay1oaWRkZW4nLFxuXHRcdFx0ICAgIG1ldGhvZDogXCJHRVRcIixcblx0XHRcdCAgICBwYXJhbXM6IHsgYmxvY2tJZCA6ICRzY29wZS5ibG9jay5pZCwgaGlkZGVuU3RhdGU6ICRzY29wZS5ibG9jay5pc19oaWRkZW4gfVxuXHRcdFx0fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHQvKiBsb2FkIGxpdmUgdXJsIG9uIGhpZGRlbiB0cmlnZ2VyICovXG5cdFx0XHRcdCRzY29wZS5OYXZJdGVtVHlwZVBhZ2VDb250cm9sbGVyLiRwYXJlbnQuJHBhcmVudC5sb2FkTGl2ZVVybCgpO1xuXHRcdFx0XHQvLyBzdWNjZXNzZnVsbCB0b2dnbGUgaGlkZGVuIHN0YXRlIG9mIGJsb2NrXG5cdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmluZm8oaTE4blBhcmFtKCdqc19wYWdlX2Jsb2NrX3Zpc2JpbGl0eV9jaGFuZ2UnLCB7bmFtZTogJHNjb3BlLmJsb2NrLm5hbWV9KSk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXG4gICAgICAgICRzY29wZS5pc0VkaXRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mICRzY29wZS5ibG9jay52YXJzICE9IFwidW5kZWZpbmVkXCIgJiYgJHNjb3BlLmJsb2NrLnZhcnMubGVuZ3RoID4gMDtcbiAgICAgICAgfTtcblxuICAgICAgICAkc2NvcGUuaXNDb25maWd1cmFibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgJHNjb3BlLmJsb2NrLmNmZ3MgIT0gXCJ1bmRlZmluZWRcIiAmJiAkc2NvcGUuYmxvY2suY2Zncy5sZW5ndGggPiAwO1xuICAgICAgICB9O1xuXHRcdFxuXHRcdFxuXHRcdCRzY29wZS4kd2F0Y2goZnVuY3Rpb24oKSB7IHJldHVybiAkc2NvcGUuYmxvY2sudmFsdWVzIH0sIGZ1bmN0aW9uKG4sIG8pIHtcblx0XHRcdCRzY29wZS5kYXRhID0gbjtcblx0XHR9KTtcblxuXHRcdCRzY29wZS4kd2F0Y2goZnVuY3Rpb24oKSB7IHJldHVybiAkc2NvcGUuYmxvY2sudmFyaWF0aW9uIH0sIGZ1bmN0aW9uKG4sIG8pIHtcblx0XHRcdCRzY29wZS5ldmFsVmFyaWF0aW9uVmlzYmlsaXR5KG4pO1xuXHRcdH0pO1xuXHRcdFxuXHRcdCRzY29wZS5nZXRJbmZvID0gZnVuY3Rpb24odmFyRmllbGROYW1lKSB7XG5cdFx0XHRpZiAoJHNjb3BlLmJsb2NrLmZpZWxkX2hlbHAuaGFzT3duUHJvcGVydHkodmFyRmllbGROYW1lKSkge1xuXHRcdFx0XHRyZXR1cm4gJHNjb3BlLmJsb2NrLmZpZWxkX2hlbHBbdmFyRmllbGROYW1lXTtcblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdCRzY29wZS5ldmFsVmFyaWF0aW9uVmlzYmlsaXR5ID0gZnVuY3Rpb24odmFyaWF0ZW5OYW1lKSB7XG5cdFx0XHRpZiAoJHNjb3BlLmJsb2NrLnZhcmlhdGlvbnMuaGFzT3duUHJvcGVydHkodmFyaWF0ZW5OYW1lKSkge1xuXHRcdFx0XHR2YXIgdmFyaWF0aW9uID0gJHNjb3BlLmJsb2NrLnZhcmlhdGlvbnNbJHNjb3BlLmJsb2NrLnZhcmlhdGlvbl07XG5cdFx0XHRcdGFuZ3VsYXIuZm9yRWFjaCh2YXJpYXRpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcblx0XHRcdFx0XHRpZiAoYW5ndWxhci5pc09iamVjdCh2YWx1ZSkpIHtcblx0XHRcdFx0XHRcdGFuZ3VsYXIuZm9yRWFjaCh2YWx1ZSwgZnVuY3Rpb24odiwgaykge1xuXHRcdFx0XHRcdFx0XHRhbmd1bGFyLmZvckVhY2goJHNjb3BlLmJsb2NrW2tleV0sIGZ1bmN0aW9uKG9iamVjdCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChrID09IG9iamVjdC52YXIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdC5pbnZpc2libGUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhbmd1bGFyLmZvckVhY2goJHNjb3BlLmJsb2NrLmNmZ3MsIGZ1bmN0aW9uKG9iamVjdCkge1xuXHRcdFx0XHRcdG9iamVjdC5pbnZpc2libGUgPSBmYWxzZTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuYmxvY2sudmFycywgZnVuY3Rpb24ob2JqZWN0KSB7XG5cdFx0XHRcdFx0b2JqZWN0LmludmlzaWJsZSA9IGZhbHNlO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0JHNjb3BlLmNmZ2RhdGEgPSAkc2NvcGUuYmxvY2suY2ZndmFsdWVzIHx8IHt9O1xuXG5cdFx0JHNjb3BlLmVkaXQgPSBmYWxzZTtcblx0XHRcblx0XHQkc2NvcGUubW9kYWxIaWRkZW4gPSB0cnVlO1xuXG5cdFx0JHNjb3BlLm1vZGFsTW9kZSA9IDE7XG5cblx0XHQkc2NvcGUuaW5pdE1vZGFsTW9kZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCRzY29wZS5ibG9jay52YXJzLmxlbmd0aCAgPT0gMCkge1xuXHRcdFx0XHQkc2NvcGUubW9kYWxNb2RlID0gMjtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0JHNjb3BlLnRvZ2dsZUVkaXQgPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICgkc2NvcGUuaXNFZGl0YWJsZSgpIHx8ICRzY29wZS5pc0NvbmZpZ3VyYWJsZSgpKSB7XG5cdFx0XHRcdCRzY29wZS5tb2RhbEhpZGRlbiA9ICEkc2NvcGUubW9kYWxIaWRkZW47XG5cdFx0XHRcdCRzY29wZS5lZGl0ID0gISRzY29wZS5lZGl0O1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHQkc2NvcGUucmVuZGVyVGVtcGxhdGUgPSBmdW5jdGlvbih0ZW1wbGF0ZSwgZGF0YVZhcnMsIGNmZ1ZhcnMsIGJsb2NrLCBleHRyYXMpIHtcblx0XHRcdGlmICh0ZW1wbGF0ZSA9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0cmV0dXJuICcnO1xuXHRcdFx0fVxuXHRcdFx0dmFyIHRlbXBsYXRlID0gVHdpZy50d2lnKHtcblx0XHRcdCAgICBkYXRhOiB0ZW1wbGF0ZVxuXHRcdFx0fSk7XG5cblx0XHRcdHZhciBjb250ZW50ID0gdGVtcGxhdGUucmVuZGVyKHtcblx0XHRcdFx0dmFycyA6IGRhdGFWYXJzLFxuXHRcdFx0XHRjZmdzIDogY2ZnVmFycyxcblx0XHRcdFx0YmxvY2sgOiBibG9jayxcblx0XHRcdFx0ZXh0cmFzIDogZXh0cmFzXG5cdFx0XHR9KTtcblxuXHRcdFx0cmV0dXJuICRzY2UudHJ1c3RBc0h0bWwoY29udGVudCk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS5yZW1vdmVCbG9jayA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuY29uZmlybShpMThuUGFyYW0oJ2pzX3BhZ2VfYmxvY2tfZGVsZXRlX2NvbmZpcm0nLCB7bmFtZTogJHNjb3BlLmJsb2NrLm5hbWV9KSwgaTE4blsndmlld191cGRhdGVfYmxvY2tfdG9vbHRpcF9kZWxldGUnXSwgWyckdG9hc3QnLCBmdW5jdGlvbigkdG9hc3QpIHtcblx0XHRcdFx0JGh0dHAuZGVsZXRlKCdhZG1pbi9hcGktY21zLW5hdml0ZW1wYWdlYmxvY2tpdGVtL2RlbGV0ZT9pZD0nICsgJHNjb3BlLmJsb2NrLmlkKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0JHNjb3BlLk5hdkl0ZW1UeXBlUGFnZUNvbnRyb2xsZXIucmVmcmVzaE5lc3RlZCgkc2NvcGUucGxhY2Vob2xkZXIucHJldl9pZCwgJHNjb3BlLnBsYWNlaG9sZGVyLnZhcik7XG5cdFx0XHRcdFx0JHNjb3BlLk5hdkl0ZW1UeXBlUGFnZUNvbnRyb2xsZXIubG9hZExpdmVVcmwoKTtcblx0XHRcdFx0XHQkdG9hc3QuY2xvc2UoKTtcblx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5zdWNjZXNzKGkxOG5QYXJhbSgnanNfcGFnZV9ibG9ja19yZW1vdmVfb2snLCB7bmFtZTogJHNjb3BlLmJsb2NrLm5hbWV9KSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fV0pO1xuXHRcdH07XG5cblx0XHQkc2NvcGUuaXNBbnlSZXF1aXJlZEF0dHJpYnV0ZUVtcHR5ID0gIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHR2YXIgcmVzcG9uc2UgPSBmYWxzZTtcblx0XHRcdGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuYmxvY2sudmFycywgZnVuY3Rpb24odmFySXRlbSkge1xuXHRcdFx0XHRpZiAodmFySXRlbS5yZXF1aXJlZCAmJiAkc2NvcGUuaXNFbXB0eSgkc2NvcGUuZGF0YSwgdmFySXRlbS52YXIpKSB7XG5cdFx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuZXJyb3IoaTE4blBhcmFtKCdqc19ibG9ja19hdHRyaWJ1dGVfZW1wdHknLCB7bGFiZWw6IHZhckl0ZW0ubGFiZWx9KSk7XG5cdFx0XHRcdFx0cmVzcG9uc2UgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0YW5ndWxhci5mb3JFYWNoKCRzY29wZS5ibG9jay5jZmdzLCBmdW5jdGlvbih2YXJJdGVtKSB7XG5cblx0XHRcdFx0aWYgKHZhckl0ZW0ucmVxdWlyZWQgJiYgJHNjb3BlLmlzRW1wdHkoJHNjb3BlLmNmZ2RhdGEsIHZhckl0ZW0udmFyKSkge1xuXHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmVycm9yKGkxOG5QYXJhbSgnanNfYmxvY2tfYXR0cmlidXRlX2VtcHR5Jywge2xhYmVsOiB2YXJJdGVtLmxhYmVsfSkpO1xuXHRcdFx0XHRcdHJlc3BvbnNlID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiByZXNwb25zZTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLmlzRW1wdHkgPSBmdW5jdGlvbih2YWx1ZXMsIGtleSkge1xuXHRcdFx0aWYgKHZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHZhbHVlc1trZXldKSB7XG5cdFx0XHRcdGlmICh2YWx1ZXNba2V5XS5sZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH07XG5cblx0XHQkc2NvcGUuc2F2ZSA9IGZ1bmN0aW9uICgpIHtcblxuXHRcdFx0aWYgKCRzY29wZS5pc0FueVJlcXVpcmVkQXR0cmlidXRlRW1wdHkoKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblxuXHRcdFx0JGh0dHAucHV0KCdhZG1pbi9hcGktY21zLW5hdml0ZW1wYWdlYmxvY2tpdGVtL3VwZGF0ZT9pZD0nICsgJHNjb3BlLmJsb2NrLmlkLCB7XG5cdFx0XHRcdGpzb25fY29uZmlnX3ZhbHVlczogJHNjb3BlLmRhdGEsXG5cdFx0XHRcdGpzb25fY29uZmlnX2NmZ192YWx1ZXM6ICRzY29wZS5jZmdkYXRhLFxuXHRcdFx0XHR2YXJpYXRpb246ICRzY29wZS5ibG9jay52YXJpYXRpb25cblx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2Uuc3VjY2VzcyhpMThuUGFyYW0oJ2pzX3BhZ2VfYmxvY2tfdXBkYXRlX29rJywge25hbWU6ICRzY29wZS5ibG9jay5uYW1lfSkpO1xuXHRcdFx0XHQkc2NvcGUudG9nZ2xlRWRpdCgpO1xuXHRcdFx0XHQkc2NvcGUuYmxvY2suaXNfZGlydHkgPSAxO1xuXHRcdFx0XHQkc2NvcGUuYmxvY2sgPSBhbmd1bGFyLmNvcHkocmVzcG9uc2UuZGF0YS5vYmplY3RkZXRhaWwpO1xuXHRcdFx0XHQkc2NvcGUuTmF2SXRlbVR5cGVQYWdlQ29udHJvbGxlci5sb2FkTGl2ZVVybCgpO1xuXHRcdFx0XHQkc2NvcGUuZXZhbFZhcmlhdGlvblZpc2JpbGl0eSgkc2NvcGUuYmxvY2sudmFyaWF0aW9uKTtcblx0XHRcdH0pO1xuXHRcdH07XG5cdH1dKTtcblxuXHR6YWEuY29udHJvbGxlcihcIkRyb3BwYWJsZUJsb2Nrc0NvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJGh0dHAnLCAnQWRtaW5DbGFzc1NlcnZpY2UnLCAnU2VydmljZUJsb2Nrc0RhdGEnLCAnU2VydmljZUJsb2NrQ29weVN0YWNrJywgZnVuY3Rpb24oJHNjb3BlLCAkaHR0cCwgQWRtaW5DbGFzc1NlcnZpY2UsIFNlcnZpY2VCbG9ja3NEYXRhLCBTZXJ2aWNlQmxvY2tDb3B5U3RhY2spIHtcblxuXHRcdC8qIHNlcnZpY2UgU2VydmljZUJsb2Nrc0RhdGEgaW5oZXJpdGFuY2UgKi9cblxuXHRcdCRzY29wZS5ibG9ja3NEYXRhID0gU2VydmljZUJsb2Nrc0RhdGEuZGF0YTtcblxuXHRcdCRzY29wZS5ibG9ja3NEYXRhUmVzdG9yZSA9IGFuZ3VsYXIuY29weSgkc2NvcGUuYmxvY2tzRGF0YSk7XG5cblx0XHQkc2NvcGUuJG9uKCdzZXJ2aWNlOkJsb2Nrc0RhdGEnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuXHRcdFx0JHNjb3BlLmJsb2Nrc0RhdGEgPSBkYXRhO1xuXHRcdH0pO1xuXG5cdFx0JHNjb3BlLmJsb2Nrc0RhdGFSZWxvYWQgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBTZXJ2aWNlQmxvY2tzRGF0YS5sb2FkKHRydWUpO1xuXHRcdH1cblxuXHRcdCRzY29wZS5hZGRUb0ZhdiA9IGZ1bmN0aW9uKGl0ZW0pIHtcblx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtYmxvY2svdG8tZmF2Jywge2Jsb2NrOiBpdGVtIH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0JHNjb3BlLmJsb2Nrc0RhdGFSZWxvYWQoKTtcblx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHQkc2NvcGUucmVtb3ZlRnJvbUZhdiA9IGZ1bmN0aW9uKGl0ZW0pIHtcblx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtYmxvY2svcmVtb3ZlLWZhdicsIHtibG9jazogaXRlbSB9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdCRzY29wZS5ibG9ja3NEYXRhUmVsb2FkKCk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLnRvZ2dsZUdyb3VwID0gZnVuY3Rpb24oZ3JvdXApIHtcblx0XHRcdGlmIChncm91cC50b2dnbGVfb3BlbiA9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Z3JvdXAudG9nZ2xlX29wZW4gPSAxO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Z3JvdXAudG9nZ2xlX29wZW4gPSAhZ3JvdXAudG9nZ2xlX29wZW47XG5cdFx0XHR9XG5cblx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtYmxvY2svdG9nZ2xlLWdyb3VwJywge2dyb3VwOiBncm91cH0sIHtpZ25vcmVMb2FkaW5nQmFyOiB0cnVlfSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS5pc1ByZXZpZXdFbmFibGVkID0gZnVuY3Rpb24oaXRlbSkge1xuXHRcdFx0cmV0dXJuIGl0ZW0ucHJldmlld19lbmFibGVkO1xuXHRcdH07XG5cblx0XHQvLyBjb250cm9sbGVyIGxvZ2ljXG5cblx0XHQkc2NvcGUuY29weVN0YWNrID0gU2VydmljZUJsb2NrQ29weVN0YWNrLnN0YWNrO1xuXG5cdFx0JHNjb3BlLiRvbignc2VydmljZTpDb3B5U3RhY2snLCBmdW5jdGlvbihldmVudCwgc3RhY2spIHtcblx0XHRcdCRzY29wZS5jb3B5U3RhY2sgPSBzdGFjaztcblx0XHR9KTtcblxuXHRcdCRzY29wZS5jbGVhclN0YWNrID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRTZXJ2aWNlQmxvY2tDb3B5U3RhY2suY2xlYXIoKTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLnNlYXJjaFF1ZXJ5ID0gJyc7XG5cblx0XHQkc2NvcGUuc2VhcmNoSXNEaXJ0eSA9IGZhbHNlO1xuXG5cdFx0JHNjb3BlLiR3YXRjaCgnc2VhcmNoUXVlcnknLCBmdW5jdGlvbihuLCBvKSB7XG5cdFx0XHRpZiAobiAhPT0gJycpIHtcblx0XHRcdFx0JHNjb3BlLnNlYXJjaElzRGlydHkgPSB0cnVlO1xuXHRcdFx0XHRhbmd1bGFyLmZvckVhY2goJHNjb3BlLmJsb2Nrc0RhdGEsIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcblx0XHRcdFx0XHRpZiAodmFsdWUuZ3JvdXAuaXNfZmF2KSB7XG5cdFx0XHRcdFx0XHQkc2NvcGUuYmxvY2tzRGF0YS5zcGxpY2Uoa2V5LCAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFsdWUuZ3JvdXAudG9nZ2xlX29wZW4gPSAxXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmKCRzY29wZS5zZWFyY2hJc0RpcnR5KSB7XG5cdFx0XHRcdCRzY29wZS5ibG9ja3NEYXRhID0gYW5ndWxhci5jb3B5KCRzY29wZS5ibG9ja3NEYXRhUmVzdG9yZSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1dKTtcbn0pKCk7IiwiLyoqXG4gKiBhbGwgZ2xvYmFsIGFkbWluIHNlcnZpY2VzXG4gKiBcbiAqIGNvbnRyb2xsZXIgcmVzb2x2ZTogaHR0cHM6Ly9naXRodWIuY29tL2pvaG5wYXBhL2FuZ3VsYXItc3R5bGVndWlkZSNzdHlsZS15MDgwXG4gKiBcbiAqIFNlcnZpY2UgSW5oZXJpdGFuY2U6XG4gKiBcbiAqIDEuIFNlcnZpY2UgbXVzdCBiZSBwcmVmaXggd2l0aCBTZXJ2aWNlXG4gKiAyLiBTZXJ2aWNlIG11c3QgY29udGFpbiBhIGZvcmNlUmVsb2FkIHN0YXRlXG4gKiAzLiBTZXJ2aWNlIG11c3QgYnJvYWRjYXN0IGFuIGV2ZW50ICdzZXJ2aWNlOkZvbGRlcnNEYXRhJ1xuICogNC4gQ29udHJvbGxlciBpbnRlZ3JhdGlvbiBtdXN0IGxvb2sgbGlrZVxuICogXG4gKiBgYGBcbiAqICRzY29wZS5mb2xkZXJzRGF0YSA9IFNlcnZpY2VGb2xkZXJzRGF0YS5kYXRhO1xuICpcdFx0XHRcdFxuICogJHNjb3BlLiRvbignc2VydmljZTpGb2xkZXJzRGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG4gKiAgICAgICRzY29wZS5mb2xkZXJzRGF0YSA9IGRhdGE7XG4gKiB9KTtcbiAqXHRcdFx0XHRcbiAqICRzY29wZS5mb2xkZXJzRGF0YVJlbG9hZCA9IGZ1bmN0aW9uKCkge1xuICogICAgIHJldHVybiBTZXJ2aWNlRm9sZGVyc0RhdGEubG9hZCh0cnVlKTtcbiAqIH1cbiAqIGBgYFxuICogXG4gKi9cblx0XG56YWEuY29uZmlnKFsncmVzb2x2ZXJQcm92aWRlcicsIGZ1bmN0aW9uKHJlc29sdmVyUHJvdmlkZXIpIHtcblx0cmVzb2x2ZXJQcm92aWRlci5hZGRDYWxsYmFjayhbJ1NlcnZpY2VNZW51RGF0YScsICdTZXJ2aWNlQmxvY2tzRGF0YScsICdTZXJ2aWNlTGF5b3V0c0RhdGEnLCAnU2VydmljZUN1cnJlbnRXZWJzaXRlJywgJ0x1eWFMb2FkaW5nJywgZnVuY3Rpb24oU2VydmljZU1lbnVEYXRhLCBTZXJ2aWNlQmxvY2tzRGF0YSwgU2VydmljZUxheW91dHNEYXRhLCBTZXJ2aWNlQ3VycmVudFdlYnNpdGUsIEx1eWFMb2FkaW5nKSB7XG5cdFx0THV5YUxvYWRpbmcuc3RhcnQoKTtcblx0XHRTZXJ2aWNlQmxvY2tzRGF0YS5sb2FkKCk7XG5cdFx0U2VydmljZUxheW91dHNEYXRhLmxvYWQoKTtcblx0XHRTZXJ2aWNlTWVudURhdGEubG9hZCgpLnRoZW4oZnVuY3Rpb24oKSB7XG5cdFx0XHRTZXJ2aWNlQ3VycmVudFdlYnNpdGUubG9hZCgpO1xuXHRcdFx0THV5YUxvYWRpbmcuc3RvcCgpO1xuXHRcdH0pO1xuXHR9XSk7XG59XSk7XG5cblxuLyoqXG4gKiBDb3B5IEJsb2NrIFN0YWNrIHNlcnZpY2UuXG4gKi9cbnphYS5mYWN0b3J5KFwiU2VydmljZUJsb2NrQ29weVN0YWNrXCIsIFsnJHJvb3RTY29wZScsIGZ1bmN0aW9uKCRyb290U2NvcGUpIHtcblx0dmFyIHNlcnZpY2UgPSBbXTtcblx0XG5cdHNlcnZpY2Uuc3RhY2sgPSBbXTtcblx0XG5cdHNlcnZpY2UuY2xlYXIgPSBmdW5jdGlvbigpIHtcblx0XHRzZXJ2aWNlLnN0YWNrID0gW107XG5cdFx0JHJvb3RTY29wZS4kYnJvYWRjYXN0KCdzZXJ2aWNlOkNvcHlTdGFjaycsIHNlcnZpY2Uuc3RhY2spO1xuXHR9O1xuXHRcblx0c2VydmljZS5wdXNoID0gZnVuY3Rpb24oYmxvY2spIHtcblx0XHRpZiAoc2VydmljZS5zdGFjay5sZW5ndGggPiA0KSB7XG5cdFx0XHRzZXJ2aWNlLnN0YWNrLnNoaWZ0KCk7XG5cdFx0fVxuXHRcdHNlcnZpY2Uuc3RhY2sucHVzaCh7YmxvY2tJZDogYmxvY2suYmxvY2tfaWQsIG5hbWU6IGJsb2NrLm5hbWUsIGljb246YmxvY2suaWNvbiwgaWQ6IGJsb2NrLmlkLCBjb3B5c3RhY2s6IDF9KTtcblx0XHQkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ3NlcnZpY2U6Q29weVN0YWNrJywgc2VydmljZS5zdGFjayk7XG5cdH07XG5cdFxuXHRyZXR1cm4gc2VydmljZTtcbn1dKTtcblxuLyoqXG4gKiBNZW51IFNlcnZpY2UuXG4gKiBcbiAqICRzY29wZS5tZW51RGF0YSA9IFNlcnZpY2VNZW51RGF0YS5kYXRhO1xuICogXHRcdFx0XHRcbiAqICRzY29wZS4kb24oJ3NlcnZpY2U6TWVudURhdGEnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuICogXHQkc2NvcGUubWVudURhdGEgPSBkYXRhO1xuICogfSk7XG4gKiBcbiAqICRzY29wZS5tZW51RGF0YVJlbG9hZCA9IGZ1bmN0aW9uKCkge1xuICogXHRyZXR1cm4gU2VydmljZU1lbnVEYXRhLmxvYWQodHJ1ZSk7XG4gKiB9XG4gKiBcdFx0XHRcdFxuICovXG56YWEuZmFjdG9yeShcIlNlcnZpY2VNZW51RGF0YVwiLCBbJyRodHRwJywgJyRxJywgJyRyb290U2NvcGUnLCBmdW5jdGlvbigkaHR0cCwgJHEsICRyb290U2NvcGUpIHtcblx0dmFyIHNlcnZpY2UgPSBbXTtcblx0XG5cdHNlcnZpY2UuZGF0YSA9IFtdO1xuXHRcblx0c2VydmljZS5sb2FkID0gZnVuY3Rpb24oZm9yY2VSZWxvYWQpIHtcblx0XHRyZXR1cm4gJHEoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdFx0XHRpZiAoc2VydmljZS5kYXRhLmxlbmd0aCA+IDAgJiYgZm9yY2VSZWxvYWQgIT09IHRydWUpIHtcblx0XHRcdFx0cmVzb2x2ZShzZXJ2aWNlLmRhdGEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JGh0dHAuZ2V0KFwiYWRtaW4vYXBpLWNtcy1tZW51L2RhdGEtbWVudVwiKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0c2VydmljZS5kYXRhID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHQkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ3NlcnZpY2U6TWVudURhdGEnLCBzZXJ2aWNlLmRhdGEpO1xuXHRcdFx0XHRcdHJlc29sdmUoc2VydmljZS5kYXRhKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH07XG5cdFxuXHRyZXR1cm4gc2VydmljZTtcbn1dKTtcblxuLyoqXG4gKiBCbG9ja3MgU2VydmljZS5cbiAqIFxuICogXG4gKiAkc2NvcGUuYmxvY2tzRGF0YSA9IFNlcnZpY2VCbG9ja3NEYXRhLmRhdGE7XG4gKiBcdFx0XHRcdFxuICogJHNjb3BlLiRvbignc2VydmljZTpCbG9ja3NEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcbiAqIFx0JHNjb3BlLmJsb2Nrc0RhdGEgPSBkYXRhO1xuICogfSk7XG4gKiBcbiAqICRzY29wZS5ibG9ja3NEYXRhUmVsb2FkID0gZnVuY3Rpb24oKSB7XG4gKiBcdHJldHVybiBTZXJ2aWNlQmxvY2tzRGF0YS5sb2FkKHRydWUpO1xuICogfVxuICogXHRcdFx0XHRcbiAqL1xuemFhLmZhY3RvcnkoXCJTZXJ2aWNlQmxvY2tzRGF0YVwiLCBbJyRodHRwJywgJyRxJywgJyRyb290U2NvcGUnLCBmdW5jdGlvbigkaHR0cCwgJHEsICRyb290U2NvcGUpIHtcblx0dmFyIHNlcnZpY2UgPSBbXTtcblx0XG5cdHNlcnZpY2UuZGF0YSA9IFtdO1xuXHRcblx0c2VydmljZS5sb2FkID0gZnVuY3Rpb24oZm9yY2VSZWxvYWQpIHtcblx0XHRyZXR1cm4gJHEoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdFx0XHRpZiAoc2VydmljZS5kYXRhLmxlbmd0aCA+IDAgJiYgZm9yY2VSZWxvYWQgIT09IHRydWUpIHtcblx0XHRcdFx0cmVzb2x2ZShzZXJ2aWNlLmRhdGEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JGh0dHAuZ2V0KFwiYWRtaW4vYXBpLWNtcy1hZG1pbi9kYXRhLWJsb2Nrc1wiKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0c2VydmljZS5kYXRhID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHQkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ3NlcnZpY2U6QmxvY2tzRGF0YScsIHNlcnZpY2UuZGF0YSk7XG5cdFx0XHRcdFx0cmVzb2x2ZShzZXJ2aWNlLmRhdGEpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fTtcblx0XG5cdHJldHVybiBzZXJ2aWNlO1xufV0pO1xuXG4vKipcbiAqIExheW91dHMgU2VydmljZS5cblxuJHNjb3BlLmxheW91dHNEYXRhID0gU2VydmljZUxheW91dHNEYXRhLmRhdGE7XG5cdFx0XHRcdFxuJHNjb3BlLiRvbignc2VydmljZTpCbG9ja3NEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcblx0JHNjb3BlLmxheW91dHNEYXRhID0gZGF0YTtcbn0pO1xuXG4kc2NvcGUubGF5b3V0c0RhdGFSZWxvYWQgPSBmdW5jdGlvbigpIHtcblx0cmV0dXJuIFNlcnZpY2VMYXlvdXRzRGF0YS5sb2FkKHRydWUpO1xufVxuXHRcdFx0XHRcbiovXG56YWEuZmFjdG9yeShcIlNlcnZpY2VMYXlvdXRzRGF0YVwiLCBbJyRodHRwJywgJyRxJywgJyRyb290U2NvcGUnLCBmdW5jdGlvbigkaHR0cCwgJHEsICRyb290U2NvcGUpIHtcblx0dmFyIHNlcnZpY2UgPSBbXTtcblx0XG5cdHNlcnZpY2UuZGF0YSA9IFtdO1xuXHRcblx0c2VydmljZS5sb2FkID0gZnVuY3Rpb24oZm9yY2VSZWxvYWQpIHtcblx0XHRyZXR1cm4gJHEoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdFx0XHRpZiAoc2VydmljZS5kYXRhLmxlbmd0aCA+IDAgJiYgZm9yY2VSZWxvYWQgIT09IHRydWUpIHtcblx0XHRcdFx0cmVzb2x2ZShzZXJ2aWNlLmRhdGEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JGh0dHAuZ2V0KFwiYWRtaW4vYXBpLWNtcy1hZG1pbi9kYXRhLWxheW91dHNcIikudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdHNlcnZpY2UuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0JHJvb3RTY29wZS4kYnJvYWRjYXN0KCdzZXJ2aWNlOkxheW91dHNEYXRhJywgc2VydmljZS5kYXRhKTtcblx0XHRcdFx0XHRyZXNvbHZlKHNlcnZpY2UuZGF0YSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9O1xuXHRcblx0cmV0dXJuIHNlcnZpY2U7XG59XSk7XG5cbi8qKlxuICogQ01TIExJVkUgRURJVCBTRVJJVkNFXG4gKiBcbiAqICRzY29wZS5saXZlRWRpdE1vZGUgPSBTZXJ2aWNlTGl2ZUVkaXRNb2RlLnN0YXRlXG4gKi9cbnphYS5mYWN0b3J5KFwiU2VydmljZUxpdmVFZGl0TW9kZVwiLCBbJyRyb290U2NvcGUnLCBmdW5jdGlvbigkcm9vdFNjb3BlKSB7XG5cdFxuXHR2YXIgc2VydmljZSA9IFtdO1xuXHRcblx0c2VydmljZS5zdGF0ZSA9IDA7XG5cdFxuXHRzZXJ2aWNlLnVybCA9ICRyb290U2NvcGUubHV5YWNmZy5ob21lVXJsO1xuXHRcblx0c2VydmljZS50b2dnbGUgPSBmdW5jdGlvbigpIHtcblx0XHRzZXJ2aWNlLnN0YXRlID0gIXNlcnZpY2Uuc3RhdGU7XG5cdH07XG5cdHNlcnZpY2Uuc2V0VXJsID0gZnVuY3Rpb24oaXRlbUlkLCB2ZXJzaW9uSWQpIHtcblx0XHR2YXIgZCA9IG5ldyBEYXRlKCk7XG5cdFx0dmFyIG4gPSBkLmdldFRpbWUoKTtcblx0XHRzZXJ2aWNlLnVybCA9ICRyb290U2NvcGUuY21zQ29uZmlnLnByZXZpZXdVcmwgKyAnP2l0ZW1JZD0nK2l0ZW1JZCsnJnZlcnNpb249JyArIHZlcnNpb25JZCArICcmZGF0ZT0nICsgbjtcblx0fTtcblx0XG5cdHNlcnZpY2UuY2hhbmdlVXJsID0gZnVuY3Rpb24oaXRlbUlkLCB2ZXJzaW9uSWQpIHtcblx0XHRpZiAodmVyc2lvbklkID09IHVuZGVmaW5lZCkge1xuXHRcdFx0dmVyc2lvbklkID0gMDtcblx0XHR9XG5cdFx0c2VydmljZS5zZXRVcmwoaXRlbUlkLCB2ZXJzaW9uSWQpO1xuXHRcdCRyb290U2NvcGUuJGJyb2FkY2FzdCgnc2VydmljZTpMaXZlRWRpdE1vZGVVcmxDaGFuZ2UnLCBzZXJ2aWNlLnVybCk7XG5cdH07XG5cdFxuXHRyZXR1cm4gc2VydmljZTtcbn1dKTtcblxuLyoqXG4gKiBDTVMgQ3VycmVudCBXZWJzaXRlIFNFUklWQ0VcbiAqXG4gKiAkc2NvcGUuY3VycmVudFdlYnNpdGUgPSBTZXJ2aWNlQ3VycmVudFdlYnNpdGUuY3VycmVudFdlYnNpdGUgXG4gKiBcbiAqICRzY29wZS4kb24oJ3NlcnZpY2U6Q3VycmVudFdlYnNpdGVDaGFuZ2VkJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcbiAqICBcdCRzY29wZS5jdXJyZW50V2Vic2l0ZSA9IGRhdGE7XG4gKiB9KTtcbiAqL1xuemFhLmZhY3RvcnkoXCJTZXJ2aWNlQ3VycmVudFdlYnNpdGVcIiwgWyckcm9vdFNjb3BlJywgJ1NlcnZpY2VNZW51RGF0YScsIGZ1bmN0aW9uKCRyb290U2NvcGUsIFNlcnZpY2VNZW51RGF0YSkge1xuXG5cdHZhciBzZXJ2aWNlID0ge1xuXHRcdGN1cnJlbnRXZWJzaXRlOiBudWxsLFxuXHRcdGRlZmF1bHRXZWJzaXRlOiBudWxsXG5cdH07XG5cblx0c2VydmljZS5sb2FkID0gZnVuY3Rpb24oKSB7XG5cdFx0c2VydmljZS5kZWZhdWx0V2Vic2l0ZSA9IFNlcnZpY2VNZW51RGF0YS5kYXRhLndlYnNpdGVzLmZpbmQodyA9PiB3LmlzX2RlZmF1bHQpIHx8IFNlcnZpY2VNZW51RGF0YS5kYXRhLndlYnNpdGVzWzBdO1xuXHRcdGlmIChzZXJ2aWNlLmRlZmF1bHRXZWJzaXRlKSB7XG5cdFx0XHRzZXJ2aWNlLnRvZ2dsZShzZXJ2aWNlLmRlZmF1bHRXZWJzaXRlLmlkKTtcblx0XHR9XG5cdH1cblxuXHRzZXJ2aWNlLnRvZ2dsZSA9IGZ1bmN0aW9uKHdlYnNpdGVJZCkge1xuXHRcdGlmICh3ZWJzaXRlSWQgJiYgU2VydmljZU1lbnVEYXRhLmRhdGEud2Vic2l0ZXMgJiYgKCFzZXJ2aWNlLmN1cnJlbnRXZWJzaXRlIHx8IHNlcnZpY2UuY3VycmVudFdlYnNpdGUuaWQgIT09IHdlYnNpdGVJZCkpIHtcblx0XHRcdHNlcnZpY2UuY3VycmVudFdlYnNpdGUgPSBTZXJ2aWNlTWVudURhdGEuZGF0YS53ZWJzaXRlcy5maW5kKHcgPT4gdy5pZCA9PT0gd2Vic2l0ZUlkKTtcblx0XHRcdCRyb290U2NvcGUuJGJyb2FkY2FzdCgnc2VydmljZTpDdXJyZW50V2Vic2l0ZUNoYW5nZWQnLCBzZXJ2aWNlLmN1cnJlbnRXZWJzaXRlKTtcblx0XHR9XG5cdH07XG5cblx0cmV0dXJuIHNlcnZpY2U7XG59XSk7XG5cbnphYS5mYWN0b3J5KFwiU2VydmljZVdvcmtpbmdQYWdlVmVyc2lvblwiLCBbZnVuY3Rpb24oKSB7XG5cdHZhciBzZXJ2aWNlID0ge1xuXHRcdHBhZ2U6IHt9XG5cdH07XG5cblx0c2VydmljZS5zdG9yZSA9IGZ1bmN0aW9uKHBhZ2VJZCwgdmVyc2lvbklkKSB7XG5cdFx0c2VydmljZS5wYWdlW3BhZ2VJZF0gPSB2ZXJzaW9uSWQ7XG5cdH07XG5cblx0c2VydmljZS5oYXNWZXJzaW9uID0gZnVuY3Rpb24ocGFnZUlkKSB7XG5cdFx0aWYgKHNlcnZpY2UucGFnZS5oYXNPd25Qcm9wZXJ0eShwYWdlSWQpKSB7XG5cdFx0XHRyZXR1cm4gc2VydmljZS5wYWdlW3BhZ2VJZF07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9O1xuXG5cdHJldHVybiBzZXJ2aWNlO1xufV0pOyJdfQ== \ No newline at end of file +}]);//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2pzL2Ntc2FkbWluLmpzIiwiLi4vanMvc2VydmljZXMuanMiXSwibmFtZXMiOlsiemFhIiwiZGlyZWN0aXZlIiwiU2VydmljZU1lbnVEYXRhIiwiU2VydmljZUN1cnJlbnRXZWJzaXRlIiwiJGZpbHRlciIsInJlc3RyaWN0Iiwic2NvcGUiLCJuYXZJZCIsImNvbnRyb2xsZXIiLCIkc2NvcGUiLCJjaGFuZ2VNb2RlbCIsImRhdGEiLCJpZCIsImN1cnJlbnRXZWJzaXRlIiwiJG9uIiwiZXZlbnQiLCJtZW51RGF0YSIsImFuZ3VsYXIiLCJjb3B5IiwibWVudURhdGFPcmlnaW5hbCIsImluaXQiLCJsZW5ndGgiLCJsb2FkIiwidGhlbiIsImNvbnRhaW5lciIsImNvbnRhaW5lcnMiLCJpc0hpZGRlbiIsIiR3YXRjaCIsIm4iLCJpdGVtcyIsInRpdGxlIiwiZm9yRWFjaCIsInZhbHVlIiwiYnViYmxlUGFyZW50cyIsInBhcmVudE5hdklkIiwiY29udGFpbmVySWQiLCJpbmRleCIsIml0ZW0iLCJleGlzdHMiLCJpIiwicHVzaCIsInBhcmVudF9uYXZfaWQiLCJuYXZfY29udGFpbmVyX2lkIiwidG9nZ2xlciIsInRlbXBsYXRlIiwiaTE4biIsIiRodHRwIiwiJHN0YXRlIiwiZ2V0IiwicGFyYW1zIiwicmVzcG9uc2UiLCJwYXRoIiwidGVtcGxhdGVVcmwiLCJTZXJ2aWNlTGFuZ3VhZ2VzRGF0YSIsIkFkbWluVG9hc3RTZXJ2aWNlIiwiZXJyb3IiLCJzdWNjZXNzIiwiJHBhcmVudCIsIm1lbnVEYXRhUmVsb2FkIiwiaW5pdGlhbGl6ZXIiLCJtZW51IiwibmF2Y29udGFpbmVycyIsIm5hdl9pdGVtX3R5cGUiLCJpc19kcmFmdCIsImRlZmF1bHRfY29udGFpbmVyX2lkIiwibGFuZ3VhZ2VzRGF0YSIsImlzRGVmYXVsdEl0ZW0iLCJmaW5kIiwiaXNfZGVmYXVsdCIsImxhbmdfaWQiLCJvIiwidW5kZWZpbmVkIiwiYWxpYXNTdWdnZXN0aW9uIiwiYWxpYXMiLCJleGVjIiwic2F2ZSIsImlzSW5saW5lIiwiZ2V0SXRlbSIsIm5hdl9pZCIsInJlYXNvbiIsImtleSIsIlNlcnZpY2VMYXlvdXRzRGF0YSIsInBhcmVudCIsIm5hdkl0ZW1JZCIsImxheW91dF9pZCIsImxheW91dHNEYXRhIiwiYXJyYXlUb1NlbGVjdCIsImlucHV0IiwidmFsdWVGaWVsZCIsImxhYmVsRmllbGQiLCJvdXRwdXQiLCJ2ZXJzaW9uc0RhdGEiLCJnZXRWZXJzaW9uTGlzdCIsImlzRWRpdEF2YWlsYWJsZSIsInVzZV9kcmFmdCIsImZyb21fZHJhZnRfaWQiLCJkcmFmdHMiLCJsYXlvdXRzIiwibW9kdWxlcyIsImNvbnRyb2xsZXJzIiwiYWN0aW9ucyIsImFkZFBhcmFtIiwiaGFzT3duUHJvcGVydHkiLCJhY3Rpb25fcGFyYW1zIiwibW9kdWxlX25hbWUiLCJjb250cm9sbGVyX25hbWUiLCJmaWx0ZXIiLCJ3ZWJzaXRlSWQiLCJyZXN1bHQiLCJ3ZWJzaXRlX2lkIiwicmV0dXJuVmFsdWUiLCJmYWN0b3J5Iiwic2VydmljZSIsInN0YXR1cyIsImRlbGVnYXRlIiwiY29uZmlnIiwiJHN0YXRlUHJvdmlkZXIiLCJzdGF0ZSIsInVybCIsImdvIiwiZGFzaGJvYXJkIiwicG9zdCIsImhlYWRlcnMiLCJjcmVhdGVOZXdWZXJzaW9uU3VibWl0IiwiY29weUV4aXN0aW5nVmVyc2lvbiIsInZlcnNpb25MYXlvdXRJZCIsIiQiLCJwYXJhbSIsInZlcnNpb25OYW1lIiwiZnJvbVZlcnNpb25QYWdlSWQiLCJyZWZyZXNoRm9yY2UiLCJpc09wZW4iLCJpdGVtU2VsZWN0aW9uIiwic2VsZWN0aW9uIiwiTmF2SXRlbUNvbnRyb2xsZXIiLCJzZWxlY3QiLCJsb2FkSXRlbXMiLCJOYXZDb250cm9sbGVyIiwibmF2RGF0YSIsImxhbmciLCJyZWZyZXNoIiwiZXJyb3JBcnJheSIsIiRyb290U2NvcGUiLCJTZXJ2aWNlTGl2ZUVkaXRNb2RlIiwibGl2ZUVkaXRTdGF0ZSIsImxvYWRDbXNDb25maWciLCJjbXNDb25maWciLCJjdXJyZW50V2Vic2l0ZVRvZ2dsZXIiLCJuZXdWYWx1ZSIsIm9sZFZhbHVlIiwidG9nZ2xlIiwiZHJvcEVtcHR5Q29udGFpbmVyIiwiZHJhZ2dlZCIsImRyb3BwZWQiLCJwb3NpdGlvbiIsImNhdElkIiwibW92ZUl0ZW1JZCIsImRyb3BwZWRPbkNhdElkIiwic3VjY2VzIiwiZHJvcEl0ZW0iLCJkcmFnIiwiZHJvcCIsInBvcyIsImFwaSIsImRyb3BwZWRBZnRlckl0ZW1JZCIsImRyb3BwZWRCZWZvcmVJdGVtSWQiLCJkcm9wcGVkT25JdGVtSWQiLCJ2YWxpZEl0ZW0iLCJob3ZlciIsImRyYWdlZCIsInJyaXRlbXMiLCJyZWN1cnNpdkl0ZW1WYWxpZGl0eSIsImluZGV4T2YiLCJ0b2dnbGVJdGVtIiwidG9nZ2xlX29wZW4iLCJpZ25vcmVMb2FkaW5nQmFyIiwiY2hhbmdlVXJsIiwibmF2X2l0ZW1faWQiLCJzaG93RHJhZyIsImlzQ3VycmVudEVsZW1lbnQiLCJoaWRkZW5DYXRzIiwidG9nZ2xlQ2F0IiwidG9nZ2xlSXNIaWRkZW4iLCIkcSIsInJlc29sdmUiLCJyZWplY3QiLCIkc3RhdGVQYXJhbXMiLCJQbGFjZWhvbGRlclNlcnZpY2UiLCJTZXJ2aWNlUHJvcGVydGllc0RhdGEiLCJBZG1pbkNsYXNzU2VydmljZSIsIkFkbWluTGFuZ1NlcnZpY2UiLCJIdG1sU3RvcmFnZSIsInBhZ2VTZXR0aW5nc092ZXJsYXlIaWRkZW4iLCJwYWdlU2V0dGluZ3NPdmVybGF5VGFiIiwidG9nZ2xlUGFnZVNldHRpbmdzT3ZlcmxheSIsInQiLCJuYXZDZmciLCJoZWxwdGFncyIsImx1eWFjZmciLCJkaXNwbGF5TGl2ZUNvbnRhaW5lciIsImxpdmVVcmwiLCJwcm9wZXJ0aWVzRGF0YSIsInBsYWNlaG9sZGVyU3RhdGUiLCJpc0Jsb2NraG9sZGVyU21hbGwiLCJnZXRWYWx1ZSIsInRvZ2dsZUJsb2NraG9sZGVyU2l6ZSIsInNldFZhbHVlIiwic2lkZWJhciIsImVuYWJsZVNpZGViYXIiLCJ0b2dnbGVTaWRlYmFyIiwic2hvd0FjdGlvbnMiLCJwYXJzZUludCIsImlzRGVsZXRlZCIsInByb3BWYWx1ZXMiLCJoYXNWYWx1ZXMiLCJwYWdlVGFncyIsImNyZWF0ZURlZXBQYWdlQ29weSIsInNhdmVQYWdlVGFncyIsImNyZWF0ZURlZXBQYWdlQ29weUFzVGVtcGxhdGUiLCJsb2FkTmF2UHJvcGVydGllcyIsImQiLCJhZG1pbl9wcm9wX2lkIiwidG9nZ2xlUHJvcE1hc2siLCJzaG93UHJvcEZvcm0iLCJzdG9yZVByb3BWYWx1ZXMiLCJ0cmFzaCIsImNvbmZpcm0iLCIkdG9hc3QiLCJjbG9zZSIsImlzRHJhZnQiLCJzdWJtaXROYXZGb3JtIiwiaTE4blBhcmFtIiwibWVzc2FnZSIsImlzX29mZmxpbmUiLCJvZmZsaW5lU3RhdHVzIiwiaW5mbyIsImlzX2hpZGRlbiIsImhpZGRlblN0YXR1cyIsImlzX2hvbWUiLCJob21lU3RhdGUiLCIkdGltZW91dCIsIlNlcnZpY2VXb3JraW5nUGFnZVZlcnNpb24iLCJsb2FkZWQiLCJvcGVuTGl2ZVVybCIsInZlcnNpb25JZCIsImxvYWRMaXZlVXJsIiwiY3VycmVudFBhZ2VWZXJzaW9uIiwiaXNUcmFuc2xhdGVkIiwiaXRlbUNvcHkiLCJzZXR0aW5ncyIsInR5cGVEYXRhQ29weSIsInR5cGVEYXRhIiwiZXJyb3JzIiwiaG9tZVVybCIsImN1cnJlbnRQYWdlVmVyc2lvbkFsaWFzIiwidHJhc2hJdGVtIiwiZGVsZXRlIiwiJGJyb2FkY2FzdCIsInJlc2V0IiwibmF2X2l0ZW1fdHlwZV9pZCIsInVwZGF0ZU5hdkl0ZW1EYXRhIiwidGl0bGVfdGFnIiwiZGVzY3JpcHRpb24iLCJrZXl3b3JkcyIsInRpbWVzdGFtcF9jcmVhdGUiLCJpbWFnZV9pZCIsImlzX3VybF9zdHJpY3RfcGFyc2luZ19kaXNhYmxlZCIsImlzX2NhY2hlYWJsZSIsInBhZ2VWZXJzaW9uS2V5IiwiT2JqZWN0Iiwia2V5cyIsInRvZ2dsZVNldHRpbmdzT3ZlcmxheSIsImVycm9yQ2FsbGJhY2siLCJyZW1vdmVWZXJzaW9uIiwidmVyc2lvbiIsInZlcnNpb25fYWxpYXMiLCJwYWdlSWQiLCJlZGl0VmVyc2lvbkl0ZW0iLCJ0YWIiLCJlZGl0VmVyc2lvbiIsInZlcnNpb25JdGVtIiwiY2hhbmdlVGFiIiwiZWRpdFZlcnNpb25VcGRhdGUiLCJsYW5nSWQiLCJtZXRob2QiLCJsYXN0VmVyc2lvbiIsImhhc1ZlcnNpb24iLCJzd2l0Y2hWZXJzaW9uIiwidmVyc2lvbkRyb3BEb3duVmlzYmlsaXR5IiwidG9nZ2xlVmVyc2lvbnNEcm9wZG93biIsInBhZ2VWZXJzaW9uaWQiLCJzdG9yZSIsImlzSW5TZWxlY3Rpb24iLCJzaG9ydF9jb2RlIiwic2V0dGluZ3NPdmVybGF5VmlzaWJpbGl0eSIsInJlZnJlc2hOZXN0ZWQiLCJwcmV2SWQiLCJwbGFjZWhvbGRlclZhciIsIm5hdkl0ZW1QYWdlSWQiLCJfX3BsYWNlaG9sZGVycyIsInBsYWNlaG9sZGVyIiwicmV2UGxhY2Vob2xkZXJzIiwicGxhY2Vob2xkZXJzIiwicmVwbGFjZUNvbnRlbnQiLCJwbGFjZWhvbGRlclJvdyIsInBsYWNlaG9sZGVyS2V5IiwicHJldl9pZCIsInJldkZpbmQiLCJob2xkZXJLZXkiLCJob2xkZXIiLCJkcm9wSXRlbVBsYWNlaG9sZGVyIiwic29ydF9pbmRleCIsImJsb2NrX2lkIiwicGxhY2Vob2xkZXJfdmFyIiwibmF2X2l0ZW1fcGFnZV9pZCIsImNvcHlCbG9ja0lkIiwicHV0IiwiJHNjZSIsIlNlcnZpY2VCbG9ja0NvcHlTdGFjayIsIk5hdkl0ZW1UeXBlUGFnZUNvbnRyb2xsZXIiLCJ2YXIiLCJlbGVtZW50Iiwic29ydEluZGV4IiwiJGluZGV4IiwicmVtb3ZlIiwiY29weUJsb2NrIiwiYmxvY2siLCJ0b2dnbGVIaWRkZW4iLCJibG9ja0lkIiwiaGlkZGVuU3RhdGUiLCJuYW1lIiwiaXNFZGl0YWJsZSIsInZhcnMiLCJpc0NvbmZpZ3VyYWJsZSIsImNmZ3MiLCJ2YWx1ZXMiLCJ2YXJpYXRpb24iLCJldmFsVmFyaWF0aW9uVmlzYmlsaXR5IiwiZ2V0SW5mbyIsInZhckZpZWxkTmFtZSIsImZpZWxkX2hlbHAiLCJ2YXJpYXRlbk5hbWUiLCJ2YXJpYXRpb25zIiwiaXNPYmplY3QiLCJ2IiwiayIsIm9iamVjdCIsImludmlzaWJsZSIsImNmZ2RhdGEiLCJjZmd2YWx1ZXMiLCJlZGl0IiwibW9kYWxIaWRkZW4iLCJtb2RhbE1vZGUiLCJpbml0TW9kYWxNb2RlIiwidG9nZ2xlRWRpdCIsInJlbmRlclRlbXBsYXRlIiwiZGF0YVZhcnMiLCJjZmdWYXJzIiwiZXh0cmFzIiwiVHdpZyIsInR3aWciLCJjb250ZW50IiwicmVuZGVyIiwidHJ1c3RBc0h0bWwiLCJyZW1vdmVCbG9jayIsImlzQW55UmVxdWlyZWRBdHRyaWJ1dGVFbXB0eSIsInZhckl0ZW0iLCJyZXF1aXJlZCIsImlzRW1wdHkiLCJsYWJlbCIsImpzb25fY29uZmlnX3ZhbHVlcyIsImpzb25fY29uZmlnX2NmZ192YWx1ZXMiLCJpc19kaXJ0eSIsIm9iamVjdGRldGFpbCIsIlNlcnZpY2VCbG9ja3NEYXRhIiwiYmxvY2tzRGF0YSIsImJsb2Nrc0RhdGFSZXN0b3JlIiwiYmxvY2tzRGF0YVJlbG9hZCIsImFkZFRvRmF2IiwicmVtb3ZlRnJvbUZhdiIsInRvZ2dsZUdyb3VwIiwiZ3JvdXAiLCJpc1ByZXZpZXdFbmFibGVkIiwicHJldmlld19lbmFibGVkIiwiY29weVN0YWNrIiwic3RhY2siLCJjbGVhclN0YWNrIiwiY2xlYXIiLCJzZWFyY2hRdWVyeSIsInNlYXJjaElzRGlydHkiLCJpc19mYXYiLCJzcGxpY2UiLCJyZXNvbHZlclByb3ZpZGVyIiwiYWRkQ2FsbGJhY2siLCJMdXlhTG9hZGluZyIsInN0YXJ0Iiwic3RvcCIsInNoaWZ0IiwiaWNvbiIsImNvcHlzdGFjayIsImZvcmNlUmVsb2FkIiwic2V0VXJsIiwiaXRlbUlkIiwiRGF0ZSIsImdldFRpbWUiLCJwcmV2aWV3VXJsIiwiZGVmYXVsdFdlYnNpdGUiLCJ3ZWJzaXRlcyIsInciLCJwYWdlIl0sIm1hcHBpbmdzIjoiOztBQUFBLENBQUMsWUFBVztBQUNYLGVB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Q2J5UyxJQUFBQSxJQUFJLEVBQUU7QUFETyxHQUFkOztBQUlBelMsRUFBQUEsT0FBTyxDQUFDbUwsS0FBUixHQUFnQixVQUFTZixNQUFULEVBQWlCaEMsU0FBakIsRUFBNEI7QUFDM0NwSSxJQUFBQSxPQUFPLENBQUN5UyxJQUFSLENBQWFySSxNQUFiLElBQXVCaEMsU0FBdkI7QUFDQSxHQUZEOztBQUlBcEksRUFBQUEsT0FBTyxDQUFDOEssVUFBUixHQUFxQixVQUFTVixNQUFULEVBQWlCO0FBQ3JDLFFBQUlwSyxPQUFPLENBQUN5UyxJQUFSLENBQWFuVCxjQUFiLENBQTRCOEssTUFBNUIsQ0FBSixFQUF5QztBQUN4QyxhQUFPcEssT0FBTyxDQUFDeVMsSUFBUixDQUFhckksTUFBYixDQUFQO0FBQ0E7O0FBRUQsV0FBTyxLQUFQO0FBQ0EsR0FORDs7QUFRQSxTQUFPcEssT0FBUDtBQUNBLENBbEJ3QyxDQUF6QyIsImZpbGUiOiJtYWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCkge1xuXHRcInVzZSBzdHJpY3RcIjtcblx0XG5cdC8vIGRpcmVjdGl2ZS5qc1xuXG4gICAgemFhLmRpcmVjdGl2ZShcIm1lbnVEcm9wZG93blwiLCBbJ1NlcnZpY2VNZW51RGF0YScsICdTZXJ2aWNlQ3VycmVudFdlYnNpdGUnLCAnJGZpbHRlcicsIGZ1bmN0aW9uKFNlcnZpY2VNZW51RGF0YSwgU2VydmljZUN1cnJlbnRXZWJzaXRlLCAkZmlsdGVyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdCA6ICdFJyxcbiAgICAgICAgICAgIHNjb3BlIDoge1xuICAgICAgICAgICAgICAgIG5hdklkIDogJz0nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udHJvbGxlciA6IFsnJHNjb3BlJywgZnVuY3Rpb24oJHNjb3BlKSB7XG5cbiAgICAgICAgICAgICAgICAkc2NvcGUuY2hhbmdlTW9kZWwgPSBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5uYXZJZCA9IGRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgfVxuXG5cdFx0XHRcdCRzY29wZS5jdXJyZW50V2Vic2l0ZSA9IFNlcnZpY2VDdXJyZW50V2Vic2l0ZS5jdXJyZW50V2Vic2l0ZTtcblx0XHRcdFx0JHNjb3BlLiRvbignc2VydmljZTpDdXJyZW50V2Vic2l0ZUNoYW5nZWQnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuXHRcdFx0XHRcdCRzY29wZS5jdXJyZW50V2Vic2l0ZSA9IFNlcnZpY2VDdXJyZW50V2Vic2l0ZS5jdXJyZW50V2Vic2l0ZTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhID0gYW5ndWxhci5jb3B5KFNlcnZpY2VNZW51RGF0YS5kYXRhKTtcblx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhT3JpZ2luYWwgPSBhbmd1bGFyLmNvcHkoU2VydmljZU1lbnVEYXRhLmRhdGEpO1xuXG4gICAgICAgICAgICAgICAgJHNjb3BlLiRvbignc2VydmljZTpNZW51RGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdFx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhID0gYW5ndWxhci5jb3B5KGRhdGEpO1xuXHRcdFx0XHRcdCRzY29wZS5tZW51RGF0YU9yaWdpbmFsID0gYW5ndWxhci5jb3B5KGRhdGEpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5tZW51RGF0YS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZU1lbnVEYXRhLmxvYWQoKS50aGVuKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRTZXJ2aWNlQ3VycmVudFdlYnNpdGUubG9hZCgpO1xuXHRcdFx0XHRcdFx0fSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAodmFyIGNvbnRhaW5lciBpbiAkc2NvcGUubWVudURhdGEuY29udGFpbmVycykge1xuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubWVudURhdGEuY29udGFpbmVyc1tjb250YWluZXJdLmlzSGlkZGVuID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHRcdCRzY29wZS4kd2F0Y2goJ3NlYXJjaFF1ZXJ5JywgZnVuY3Rpb24obikge1xuXHRcdFx0XHRcdGlmIChuID09IG51bGwgfHwgbiA9PSAnJykge1xuXHRcdFx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhLml0ZW1zID0gYW5ndWxhci5jb3B5KCRzY29wZS5tZW51RGF0YU9yaWdpbmFsLml0ZW1zKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGl0ZW1zID0gJGZpbHRlcignZmlsdGVyJykoJHNjb3BlLm1lbnVEYXRhT3JpZ2luYWwuaXRlbXMsIHt0aXRsZTogbn0pO1xuXG5cdFx0XHRcdFx0Ly8gZmluZCBhbGwgcGFyZW50IGVsZW1lbnRzIG9mIHRoZSBmb3VuZCBlbGVtZW50cyBhbmQgcmUgYWRkIHRoZW0gdG8gdGhlIG1hcCBpbiBvcmRlciB0byBcblx0XHRcdFx0XHQvLyBlbnN1cmUgYSBjb3JyZWN0IG1lbnUgdHJlZS5cblx0XHRcdFx0XHRhbmd1bGFyLmZvckVhY2goaXRlbXMsIGZ1bmN0aW9uKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRpZiAodmFsdWVbJ3BhcmVudF9uYXZfaWQnXSA+IDApIHtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmJ1YmJsZVBhcmVudHModmFsdWVbJ3BhcmVudF9uYXZfaWQnXSwgdmFsdWVbJ25hdl9jb250YWluZXJfaWQnXSwgaXRlbXMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhLml0ZW1zID0gaXRlbXM7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdCRzY29wZS5idWJibGVQYXJlbnRzID0gZnVuY3Rpb24ocGFyZW50TmF2SWQsIGNvbnRhaW5lcklkLCBpbmRleCkge1xuXHRcdFx0XHRcdHZhciBpdGVtID0gJGZpbHRlcignbWVudWNoaWxkZmlsdGVyJykoJHNjb3BlLm1lbnVEYXRhT3JpZ2luYWwuaXRlbXMsIGNvbnRhaW5lcklkLCBwYXJlbnROYXZJZCk7XG5cdFx0XHRcdFx0aWYgKGl0ZW0pIHtcblx0XHRcdFx0XHRcdHZhciBleGlzdHMgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGFuZ3VsYXIuZm9yRWFjaChpbmRleCwgZnVuY3Rpb24oaSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoaS5pZCA9PSBpdGVtLmlkKSB7XG5cdFx0XHRcdFx0XHRcdFx0ZXhpc3RzID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdGlmICghZXhpc3RzKSB7XG5cdFx0XHRcdFx0XHRcdGluZGV4LnB1c2goaXRlbSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQkc2NvcGUuYnViYmxlUGFyZW50cyhpdGVtLnBhcmVudF9uYXZfaWQsIGl0ZW0ubmF2X2NvbnRhaW5lcl9pZCwgaW5kZXgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblxuICAgICAgICAgICAgICAgICRzY29wZS50b2dnbGVyID0gdHJ1ZTtcblxuXHRcdFx0XHRpbml0KCk7XG4gICAgICAgICAgICB9XSxcbiAgICAgICAgICAgIHRlbXBsYXRlIDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAnPGRpdj4nK1xuXHRcdFx0XHRcdCc8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbWItMlwiPicrXG5cdFx0XHRcdFx0XHQnPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLXByZXBlbmRcIiBuZy1oaWRlPVwic2VhcmNoUXVlcnlcIj48ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiPjxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5zZWFyY2g8L2k+PC9kaXY+PC9kaXY+Jytcblx0XHRcdFx0XHRcdCc8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtcHJlcGVuZFwiIG5nLXNob3c9XCJzZWFyY2hRdWVyeVwiIG5nLWNsaWNrPVwic2VhcmNoUXVlcnkgPSBcXCdcXCdcIj48ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiPjxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5jbGVhcjwvaT48L2Rpdj48L2Rpdj4nK1xuXHRcdFx0XHRcdFx0JzxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwic2VhcmNoUXVlcnlcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiJytpMThuWyduZ3Jlc3RfY3J1ZF9zZWFyY2hfdGV4dCddKydcIj4nK1xuXHRcdFx0XHRcdCc8L2Rpdj4nICsgXG5cdFx0XHRcdFx0JzxkaXYgbmctcmVwZWF0PVwiKGtleSwgY29udGFpbmVyKSBpbiBtZW51RGF0YS5jb250YWluZXJzIHwgbWVudXdlYnNpdGVmaWx0ZXI6Y3VycmVudFdlYnNpdGUuaWRcIiBuZy1pZj1cIihtZW51RGF0YS5pdGVtcyB8IG1lbnVwYXJlbnRmaWx0ZXI6Y29udGFpbmVyLmlkOjApLmxlbmd0aCA+IDBcIiBjbGFzcz1cImNhcmQgbWItMlwiIG5nLWNsYXNzPVwie1xcJ2NhcmQtY2xvc2VkXFwnOiAhY29udGFpbmVyLmlzSGlkZGVufVwiPicrXG5cdFx0XHRcdFx0XHQnPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgbmctY2xpY2s9XCJjb250YWluZXIuaXNIaWRkZW49IWNvbnRhaW5lci5pc0hpZGRlblwiPicrXG5cdFx0XHRcdFx0XHRcdCc8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGNhcmQtdG9nZ2xlLWluZGljYXRvclwiPmtleWJvYXJkX2Fycm93X2Rvd248L3NwYW4+Jytcblx0XHRcdFx0XHRcdFx0JzxzcGFuPnt7Y29udGFpbmVyLm5hbWV9fTwvc3Bhbj4nK1xuXHRcdFx0XHRcdFx0JzwvZGl2PicrXG5cdFx0XHRcdFx0XHQnPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPicrIFxuXHRcdFx0XHRcdFx0XHQnPGRpdiBjbGFzcz1cInRyZWV2aWV3IHRyZWV2aWV3LWNob29zZXJcIj4nICtcblx0XHRcdFx0XHRcdFx0XHQnPHVsIGNsYXNzPVwidHJlZXZpZXctaXRlbXMgdHJlZXZpZXctaXRlbXMtbHZsMVwiPicgK1xuXHRcdFx0XHRcdFx0XHRcdFx0JzxsaSBjbGFzcz1cInRyZWV2aWV3LWl0ZW0gdHJlZXZpZXctaXRlbS1sdmwxXCIgbmctY2xhc3M9XCJ7XFwndHJlZXZpZXctaXRlbS1oYXMtY2hpbGRyZW5cXCcgOiAobWVudURhdGEuaXRlbXMgfCBtZW51cGFyZW50ZmlsdGVyOmNvbnRhaW5lci5pZDowKS5sZW5ndGh9XCIgbmctcmVwZWF0PVwiKGtleSwgZGF0YSkgaW4gbWVudURhdGEuaXRlbXMgfCBtZW51cGFyZW50ZmlsdGVyOmNvbnRhaW5lci5pZDowIHRyYWNrIGJ5IGRhdGEuaWRcIiBuZy1pbmNsdWRlPVwiXFwnbWVudURyb3Bkb3duUmV2ZXJzZVxcJ1wiPjwvbGk+JyArXG5cdFx0XHRcdFx0XHRcdFx0JzwvdWw+JyArXG5cdFx0XHRcdFx0XHRcdCc8L2Rpdj4nICtcblx0XHRcdFx0XHRcdCc8L2Rpdj4nICtcblx0XHRcdFx0XHQnPC9kaXY+Jytcblx0XHRcdFx0JzwvZGl2Pic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XSk7XG5cblx0emFhLmRpcmVjdGl2ZShcInphYUNtc1BhZ2VcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogXCJFXCIsXG4gICAgICAgICAgICBzY29wZToge1xuICAgICAgICAgICAgICAgIFwibW9kZWxcIjogXCI9XCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IFwiPVwiLFxuICAgICAgICAgICAgICAgIFwibGFiZWxcIjogXCJAbGFiZWxcIixcbiAgICAgICAgICAgICAgICBcImkxOG5cIjogXCJAaTE4blwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogXCJAZmllbGRpZFwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIkBmaWVsZG5hbWVcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIFx0cmV0dXJuICAnPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1zaWRlLWJ5LXNpZGVcIiBuZy1jbGFzcz1cIntcXCdpbnB1dC0taGlkZS1sYWJlbFxcJzogaTE4bn1cIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz1cImZvcm0tc2lkZSBmb3JtLXNpZGUtbGFiZWxcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxsYWJlbD57e2xhYmVsfX08L2xhYmVsPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz1cImZvcm0tc2lkZVwiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPG1lbnUtZHJvcGRvd24gY2xhc3M9XCJtZW51LWRyb3Bkb3duXCIgbmF2LWlkPVwibW9kZWxcIj48L21lbnUtZHJvcGRvd24+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2Pic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuXHR6YWEuZGlyZWN0aXZlKFwic2hvd0ludGVybmFsUmVkaXJlY3Rpb25cIiwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHJlc3RyaWN0IDogJ0UnLFxuXHRcdFx0c2NvcGUgOiB7XG5cdFx0XHRcdG5hdklkIDogJz0nXG5cdFx0XHR9LFxuXHRcdFx0Y29udHJvbGxlciA6IFsnJHNjb3BlJywgJyRodHRwJywgJyRzdGF0ZScsIGZ1bmN0aW9uKCRzY29wZSwgJGh0dHAsICRzdGF0ZSkge1xuXG5cdFx0XHRcdCRzY29wZS4kd2F0Y2goJ25hdklkJywgZnVuY3Rpb24obikge1xuXHRcdFx0XHRcdGlmIChuKSB7XG5cdFx0XHRcdFx0XHQkaHR0cC5nZXQoJ2FkbWluL2FwaS1jbXMtbmF2aXRlbS9nZXQtbmF2LWl0ZW0tcGF0aCcsIHsgcGFyYW1zIDogeyBuYXZJZCA6ICRzY29wZS5uYXZJZCB9fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUucGF0aCA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtL2dldC1uYXYtY29udGFpbmVyLW5hbWUnLCB7IHBhcmFtcyA6IHsgbmF2SWQgOiAkc2NvcGUubmF2SWQgfX0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmNvbnRhaW5lciA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fV0sXG5cdFx0XHR0ZW1wbGF0ZSA6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gJzxhIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNtXCIgdWktc3JlZj1cImN1c3RvbS5jbXNlZGl0KHsgbmF2SWQgOiBuYXZJZCwgdGVtcGxhdGVJZDogXFwnY21zYWRtaW4vZGVmYXVsdC9pbmRleFxcJ30pXCI+e3twYXRofX08L2E+IGluIHt7Y29udGFpbmVyfX0nO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cdFxuXHR6YWEuZGlyZWN0aXZlKFwiY3JlYXRlRm9ybVwiLCBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0cmVzdHJpY3QgOiAnRUEnLFxuXHRcdFx0c2NvcGUgOiB7XG5cdFx0XHRcdGRhdGEgOiAnPSdcblx0XHRcdH0sXG5cdFx0XHR0ZW1wbGF0ZVVybCA6ICdjcmVhdGVmb3JtLmh0bWwnLFxuXHRcdFx0Y29udHJvbGxlciA6IFsnJHNjb3BlJywgJyRodHRwJywgJyRmaWx0ZXInLCAnU2VydmljZU1lbnVEYXRhJywgJ1NlcnZpY2VMYW5ndWFnZXNEYXRhJywgJ0FkbWluVG9hc3RTZXJ2aWNlJywgJ1NlcnZpY2VDdXJyZW50V2Vic2l0ZScsIGZ1bmN0aW9uKCRzY29wZSwgJGh0dHAsICRmaWx0ZXIsIFNlcnZpY2VNZW51RGF0YSwgU2VydmljZUxhbmd1YWdlc0RhdGEsIEFkbWluVG9hc3RTZXJ2aWNlLCBTZXJ2aWNlQ3VycmVudFdlYnNpdGUpIHtcblxuXHRcdFx0XHQkc2NvcGUuZXJyb3IgPSBbXTtcblx0XHRcdFx0JHNjb3BlLnN1Y2Nlc3MgPSBmYWxzZTtcblxuXHRcdFx0XHQkc2NvcGUuY29udHJvbGxlciA9ICRzY29wZS4kcGFyZW50O1xuXG5cdFx0XHRcdCRzY29wZS5tZW51RGF0YSA9IFNlcnZpY2VNZW51RGF0YS5kYXRhO1xuXG5cdFx0XHRcdCRzY29wZS4kb24oJ3NlcnZpY2U6TWVudURhdGEnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuXHRcdFx0XHRcdCRzY29wZS5tZW51RGF0YSA9IGRhdGE7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdCRzY29wZS5tZW51RGF0YVJlbG9hZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBTZXJ2aWNlTWVudURhdGEubG9hZCh0cnVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZ1bmN0aW9uIGluaXRpYWxpemVyKCkge1xuXHRcdFx0XHRcdCRzY29wZS5tZW51ID0gJHNjb3BlLm1lbnVEYXRhLml0ZW1zO1xuXHRcdFx0XHRcdCRzY29wZS5uYXZjb250YWluZXJzID0gJHNjb3BlLm1lbnVEYXRhLmNvbnRhaW5lcnM7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbml0aWFsaXplcigpO1xuXG5cblx0XHRcdFx0JHNjb3BlLmRhdGEubmF2X2l0ZW1fdHlwZSA9IDE7XG5cdFx0XHRcdCRzY29wZS5kYXRhLnBhcmVudF9uYXZfaWQgPSAwO1xuXHRcdFx0XHQkc2NvcGUuZGF0YS5pc19kcmFmdCA9IDA7XG5cblx0XHRcdFx0JHNjb3BlLmRhdGEubmF2X2NvbnRhaW5lcl9pZCA9IFNlcnZpY2VDdXJyZW50V2Vic2l0ZS5jdXJyZW50V2Vic2l0ZS5kZWZhdWx0X2NvbnRhaW5lcl9pZDtcblxuXHRcdFx0XHQkc2NvcGUuY3VycmVudFdlYnNpdGUgPSBTZXJ2aWNlQ3VycmVudFdlYnNpdGUuY3VycmVudFdlYnNpdGU7XG5cdFx0XHRcdCRzY29wZS4kb24oJ3NlcnZpY2U6Q3VycmVudFdlYnNpdGVDaGFuZ2VkJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcblx0XHRcdFx0XHRpZiAoU2VydmljZUN1cnJlbnRXZWJzaXRlLmN1cnJlbnRXZWJzaXRlKSB7XG5cdFx0XHRcdFx0XHQkc2NvcGUuY3VycmVudFdlYnNpdGUgPSBTZXJ2aWNlQ3VycmVudFdlYnNpdGUuY3VycmVudFdlYnNpdGU7XG5cdFx0XHRcdFx0XHQkc2NvcGUuZGF0YS5uYXZfY29udGFpbmVyX2lkID0gU2VydmljZUN1cnJlbnRXZWJzaXRlLmN1cnJlbnRXZWJzaXRlLmRlZmF1bHRfY29udGFpbmVyX2lkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0JHNjb3BlLmxhbmd1YWdlc0RhdGEgPSBTZXJ2aWNlTGFuZ3VhZ2VzRGF0YS5kYXRhO1xuXG5cdFx0XHRcdCRzY29wZS4kb24oJ3NlcnZpY2U6TGFuZ3VhZ2VzRGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdFx0XHRcdFx0JHNjb3BlLmxhbmd1YWdlc0RhdGEgPSBkYXRhO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQkc2NvcGUuaXNEZWZhdWx0SXRlbSA9ICRzY29wZS5sYW5ndWFnZXNEYXRhLmZpbmQoaXRlbSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGl0ZW0uaXNfZGVmYXVsdDtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0JHNjb3BlLmRhdGEubGFuZ19pZCA9ICRzY29wZS5pc0RlZmF1bHRJdGVtLmlkO1xuXG5cdFx0XHRcdCRzY29wZS4kd2F0Y2goZnVuY3Rpb24oKSB7IHJldHVybiAkc2NvcGUuZGF0YS5uYXZfY29udGFpbmVyX2lkIH0sIGZ1bmN0aW9uKG4sIG8pIHtcblx0XHRcdFx0XHRpZiAobiAhPT0gdW5kZWZpbmVkICYmIG4gIT09IG8pIHtcblx0XHRcdFx0XHRcdCRzY29wZS5kYXRhLnBhcmVudF9uYXZfaWQgPSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0JHNjb3BlLmFsaWFzU3VnZ2VzdGlvbiA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdCRzY29wZS5kYXRhLmFsaWFzID0gJGZpbHRlcignc2x1Z2lmeScpKCRzY29wZS5kYXRhLnRpdGxlKTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHQkc2NvcGUuJHdhdGNoKCdkYXRhLmFsaWFzJywgZnVuY3Rpb24obiwgbykge1xuXHRcdFx0XHRcdGlmIChuIT1vICYmIG4hPW51bGwpIHtcblx0XHRcdFx0XHRcdCRzY29wZS5kYXRhLmFsaWFzID0gJGZpbHRlcignc2x1Z2lmeScpKG4pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0JHNjb3BlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0JHNjb3BlLmNvbnRyb2xsZXIuc2F2ZSgpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdCRzY29wZS5tZW51RGF0YVJlbG9hZCgpO1xuXHRcdFx0XHRcdFx0JHNjb3BlLnN1Y2Nlc3MgPSB0cnVlO1xuXHRcdFx0XHRcdFx0JHNjb3BlLmVycm9yID0gW107XG5cdFx0XHRcdFx0XHQkc2NvcGUuZGF0YS50aXRsZSA9IG51bGw7XG5cdFx0XHRcdFx0XHQkc2NvcGUuZGF0YS5hbGlhcyA9IG51bGw7XG5cdFx0XHRcdFx0XHRpZiAoJHNjb3BlLmRhdGEuaXNJbmxpbmUpIHtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLiRwYXJlbnQuJHBhcmVudC5nZXRJdGVtKCRzY29wZS5kYXRhLmxhbmdfaWQsICRzY29wZS5kYXRhLm5hdl9pZCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5zdWNjZXNzKGkxOG5bJ3ZpZXdfaW5kZXhfcGFnZV9zdWNjZXNzJ10pO1xuXHRcdFx0XHRcdH0sIGZ1bmN0aW9uKHJlYXNvbikge1xuXHRcdFx0XHRcdFx0YW5ndWxhci5mb3JFYWNoKHJlYXNvbiwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuXHRcdFx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5lcnJvcih2YWx1ZVswXSk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdCRzY29wZS5lcnJvciA9IHJlYXNvbjtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHR9XVxuXHRcdH1cblx0fSk7XG5cblx0LyoqIFBBR0UgQ1JFQVRFICYgVVBEQVRFICovXG4gICAgemFhLmRpcmVjdGl2ZShcInVwZGF0ZUZvcm1QYWdlXCIsIFsnU2VydmljZUxheW91dHNEYXRhJywgZnVuY3Rpb24oU2VydmljZUxheW91dHNEYXRhKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdCA6ICdFQScsXG4gICAgICAgICAgICBzY29wZSA6IHtcbiAgICAgICAgICAgICAgICBkYXRhIDogJz0nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGVtcGxhdGVVcmwgOiAndXBkYXRlZm9ybXBhZ2UuaHRtbCcsXG4gICAgICAgICAgICBjb250cm9sbGVyIDogWyckc2NvcGUnLCAnJGh0dHAnLCBmdW5jdGlvbigkc2NvcGUsICRodHRwKSB7XG5cbiAgICAgICAgICAgIFx0JHNjb3BlLnBhcmVudCA9ICRzY29wZS4kcGFyZW50LiRwYXJlbnQ7XG5cdFx0XHRcdCRzY29wZS5uYXZJdGVtSWQgPSAkc2NvcGUucGFyZW50Lml0ZW0uaWQ7XG5cblxuXHRcdFx0XHQkc2NvcGUuZGF0YS5sYXlvdXRfaWQgPSAwO1xuXHRcdFx0XHQkc2NvcGUubGF5b3V0c0RhdGEgPSBTZXJ2aWNlTGF5b3V0c0RhdGEuZGF0YTtcblxuXHRcdFx0XHQkc2NvcGUuYXJyYXlUb1NlbGVjdCA9IGZ1bmN0aW9uKGlucHV0LCB2YWx1ZUZpZWxkLCBsYWJlbEZpZWxkKSB7XG5cdFx0XHRcdFx0dmFyIG91dHB1dCA9IFtdO1xuXHRcdFx0XHRcdGFuZ3VsYXIuZm9yRWFjaChpbnB1dCwgZnVuY3Rpb24odmFsdWUpIHtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHtcImxhYmVsXCI6IHZhbHVlW2xhYmVsRmllbGRdLCBcInZhbHVlXCI6IHZhbHVlW3ZhbHVlRmllbGRdfSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuIG91dHB1dDtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHQkc2NvcGUuJG9uKCdzZXJ2aWNlOkxheW91dHNEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcblx0XHRcdFx0XHQkc2NvcGUubGF5b3V0c0RhdGEgPSBbXTsgLy8gJHNjb3BlLmFycmF5VG9TZWxlY3QoZGF0YSk7IC8vIEBUT0RPIFJFTU9WRSBJRiBWRVJJRklFRFxuXHRcdFx0XHR9KTtcblxuXG5cdFx0XHRcdCRzY29wZS52ZXJzaW9uc0RhdGEgPSBbXTtcblxuXHRcdFx0XHQkc2NvcGUuZ2V0VmVyc2lvbkxpc3QgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHQkaHR0cC5nZXQoJ2FkbWluL2FwaS1jbXMtbmF2aXRlbXBhZ2UvdmVyc2lvbnMnLCB7IHBhcmFtcyA6IHsgbmF2SXRlbUlkIDogJHNjb3BlLm5hdkl0ZW1JZCB9fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0JHNjb3BlLnZlcnNpb25zRGF0YSA9ICRzY29wZS5hcnJheVRvU2VsZWN0KHJlc3BvbnNlLmRhdGEsICdpZCcsICd2ZXJzaW9uX2FsaWFzJyk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cbiAgICAgICAgICAgIFx0JHNjb3BlLmlzRWRpdEF2YWlsYWJsZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiAkc2NvcGUudmVyc2lvbnNEYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIFx0fTtcblxuXHRcdFx0XHRmdW5jdGlvbiBpbml0KCkge1xuXHRcdFx0XHRcdCRzY29wZS5nZXRWZXJzaW9uTGlzdCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aW5pdCgpO1xuICAgICAgICAgICAgfV1cbiAgICAgICAgfVxuXHR9XSk7XG5cdHphYS5kaXJlY3RpdmUoXCJjcmVhdGVGb3JtUGFnZVwiLCBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0cmVzdHJpY3QgOiAnRUEnLFxuXHRcdFx0c2NvcGUgOiB7XG5cdFx0XHRcdGRhdGEgOiAnPSdcblx0XHRcdH0sXG5cdFx0XHR0ZW1wbGF0ZVVybCA6ICdjcmVhdGVmb3JtcGFnZS5odG1sJyxcblx0XHRcdGNvbnRyb2xsZXIgOiBbJyRzY29wZScsICdTZXJ2aWNlTGF5b3V0c0RhdGEnLCAnU2VydmljZU1lbnVEYXRhJywgZnVuY3Rpb24oJHNjb3BlLCBTZXJ2aWNlTGF5b3V0c0RhdGEsIFNlcnZpY2VNZW51RGF0YSkge1xuXG5cdFx0XHRcdCRzY29wZS5kYXRhLnVzZV9kcmFmdCA9IDA7XG5cdFx0XHRcdCRzY29wZS5kYXRhLmxheW91dF9pZCA9IDA7XG5cdFx0XHRcdCRzY29wZS5kYXRhLmZyb21fZHJhZnRfaWQgPSAwO1xuXG5cdFx0XHRcdC8qIGxheW91dHNEYXRhICovXG5cblx0XHRcdFx0JHNjb3BlLmxheW91dHNEYXRhID0gU2VydmljZUxheW91dHNEYXRhLmRhdGE7XG5cbiAgICAgICAgICAgIFx0JHNjb3BlLiRvbignc2VydmljZTpCbG9ja3NEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcbiAgICAgICAgICAgIFx0XHQkc2NvcGUubGF5b3V0c0RhdGEgPSBkYXRhO1xuICAgICAgICAgICAgXHR9KTtcblxuICAgICAgICAgICAgXHQvKiBtZW51RGF0YSAqL1xuXG4gICAgXHRcdFx0JHNjb3BlLm1lbnVEYXRhID0gU2VydmljZU1lbnVEYXRhLmRhdGE7XG5cblx0XHRcdFx0JHNjb3BlLiRvbignc2VydmljZTpNZW51RGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdFx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhID0gZGF0YTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0JHNjb3BlLmFycmF5VG9TZWxlY3QgPSBmdW5jdGlvbihpbnB1dCwgdmFsdWVGaWVsZCwgbGFiZWxGaWVsZCkge1xuXHRcdFx0XHRcdHZhciBvdXRwdXQgPSBbXTtcblx0XHRcdFx0XHRhbmd1bGFyLmZvckVhY2goaW5wdXQsIGZ1bmN0aW9uKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaCh7XCJsYWJlbFwiOiB2YWx1ZVtsYWJlbEZpZWxkXSwgXCJ2YWx1ZVwiOiB2YWx1ZVt2YWx1ZUZpZWxkXX0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHJldHVybiBvdXRwdXQ7XG5cdFx0XHRcdH07XG5cbiAgICAgICAgICAgIFx0ZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgICAgIFx0XHQkc2NvcGUuZHJhZnRzID0gJHNjb3BlLmFycmF5VG9TZWxlY3QoJHNjb3BlLm1lbnVEYXRhLmRyYWZ0cywgJ2lkJywgJ3RpdGxlJyk7XG5cdFx0XHRcdFx0JHNjb3BlLmxheW91dHMgPSAkc2NvcGUuYXJyYXlUb1NlbGVjdCgkc2NvcGUubGF5b3V0c0RhdGEsICdpZCcsICduYW1lJyk7XG4gICAgICAgICAgICBcdH1cblxuICAgICAgICAgICAgXHRpbml0KCk7XG5cblx0XHRcdFx0JHNjb3BlLnNhdmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHQkc2NvcGUuJHBhcmVudC5leGVjKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1dXG5cdFx0fVxuXHR9KTtcblxuXHQvKiBQYWdlIE1PRFVMRSAqL1xuXG5cdHphYS5kaXJlY3RpdmUoXCJmb3JtTW9kdWxlXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRyZXN0cmljdCA6ICdFQScsXG5cdFx0XHRzY29wZSA6IHtcblx0XHRcdFx0ZGF0YSA6ICc9J1xuXHRcdFx0fSxcblx0XHRcdHRlbXBsYXRlVXJsIDogJ2Zvcm1tb2R1bGUuaHRtbCcsXG5cdFx0XHRjb250cm9sbGVyIDogWyckc2NvcGUnLCAnJGh0dHAnLCBmdW5jdGlvbigkc2NvcGUsICRodHRwKSB7XG5cblx0XHRcdFx0JHNjb3BlLm1vZHVsZXMgPSBbXTtcblx0XHRcdFx0JHNjb3BlLmNvbnRyb2xsZXJzID0gW107XG5cdFx0XHRcdCRzY29wZS5hY3Rpb25zID0gW107XG5cdFx0XHRcdCRzY29wZS5wYXJhbXMgPSB7fTtcblxuXHRcdFx0XHQkaHR0cC5nZXQoJ2FkbWluL2FwaS1hZG1pbi1jb21tb24vZGF0YS1tb2R1bGVzJykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdCRzY29wZS5tb2R1bGVzID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0JHNjb3BlLmFkZFBhcmFtID0gZnVuY3Rpb24oa2V5KSB7XG5cdFx0XHRcdFx0aWYgKCEkc2NvcGUuZGF0YS5oYXNPd25Qcm9wZXJ0eSgnYWN0aW9uX3BhcmFtcycpKSB7XG5cdFx0XHRcdFx0XHQkc2NvcGUuZGF0YS5hY3Rpb25fcGFyYW1zID0ge307XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCRzY29wZS5kYXRhLmFjdGlvbl9wYXJhbXNba2V5XSA9ICcnO1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdCRzY29wZS4kd2F0Y2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuICRzY29wZS5kYXRhLm1vZHVsZV9uYW1lO1xuXHRcdFx0XHR9LCBmdW5jdGlvbihuKSB7XG5cdFx0XHRcdFx0aWYgKG4pIHtcblx0XHRcdFx0XHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWNtcy1hZG1pbi9tb2R1bGUtY29udHJvbGxlcnM/bW9kdWxlPScgKyBuKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHRcdCRzY29wZS5jb250cm9sbGVycyA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0XHRcdCRzY29wZS5hY3Rpb25zID0gW107XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdCRzY29wZS4kd2F0Y2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuICRzY29wZS5kYXRhLmNvbnRyb2xsZXJfbmFtZTtcblx0XHRcdFx0fSwgZnVuY3Rpb24obikge1xuXHRcdFx0XHRcdGlmIChuKSB7XG5cdFx0XHRcdFx0XHQkaHR0cC5nZXQoJ2FkbWluL2FwaS1jbXMtYWRtaW4vY29udHJvbGxlci1hY3Rpb25zP21vZHVsZT0nKyRzY29wZS5kYXRhLm1vZHVsZV9uYW1lKycmY29udHJvbGxlcj0nICsgbikudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUuYWN0aW9ucyA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fV1cblx0XHR9XG5cdH0pO1xuXG5cdC8qIGZpbHRlcnMgKi9cblxuXHR6YWEuZmlsdGVyKFwibWVudXdlYnNpdGVmaWx0ZXJcIiwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uKGlucHV0LCB3ZWJzaXRlSWQpIHtcblx0XHRcdHZhciByZXN1bHQgPSBbXTtcblx0XHRcdGFuZ3VsYXIuZm9yRWFjaChpbnB1dCwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuXHRcdFx0XHRpZiAodmFsdWUud2Vic2l0ZV9pZCA9PSB3ZWJzaXRlSWQpIHtcblx0XHRcdFx0XHRyZXN1bHQucHVzaCh2YWx1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9O1xuXHR9KTtcblxuXHR6YWEuZmlsdGVyKFwibWVudXBhcmVudGZpbHRlclwiLCBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24oaW5wdXQsIGNvbnRhaW5lcklkLCBwYXJlbnROYXZJZCkge1xuXHRcdFx0dmFyIHJlc3VsdCA9IFtdO1xuXHRcdFx0YW5ndWxhci5mb3JFYWNoKGlucHV0LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG5cdFx0XHRcdGlmICh2YWx1ZS5wYXJlbnRfbmF2X2lkID09IHBhcmVudE5hdklkICYmIHZhbHVlLm5hdl9jb250YWluZXJfaWQgPT0gY29udGFpbmVySWQpIHtcblx0XHRcdFx0XHRyZXN1bHQucHVzaCh2YWx1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9O1xuXHR9KTtcblxuXHR6YWEuZmlsdGVyKCdtZW51Y2hpbGRmaWx0ZXInLCBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24oaW5wdXQsIGNvbnRhaW5lcklkLCBwYXJlbnROYXZJZCkge1xuXHRcdFx0dmFyIHJldHVyblZhbHVlID0gZmFsc2U7XG5cdFx0XHRhbmd1bGFyLmZvckVhY2goaW5wdXQsIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcblx0XHRcdFx0aWYgKCFyZXR1cm5WYWx1ZSkge1xuXHRcdFx0XHRcdGlmICh2YWx1ZS5pZCA9PSBwYXJlbnROYXZJZCAmJiB2YWx1ZS5uYXZfY29udGFpbmVyX2lkID09IGNvbnRhaW5lcklkKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm5WYWx1ZSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiByZXR1cm5WYWx1ZTtcblx0XHR9O1xuXHR9KTtcblxuXHQvKiBmYWN0b3J5LmpzICovXG5cblx0emFhLmZhY3RvcnkoJ1BsYWNlaG9sZGVyU2VydmljZScsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzZXJ2aWNlID0gW107XG5cblx0XHRzZXJ2aWNlLnN0YXR1cyA9IDE7IC8qIDEgPSBzaG93cGxhY2Vob2xkZXJzOyAwID0gaGlkZSBwbGFjZWhvbGRlcnMgKi9cblxuXHRcdHNlcnZpY2UuZGVsZWdhdGUgPSBmdW5jdGlvbihzdGF0dXMpIHtcblx0XHRcdHNlcnZpY2Uuc3RhdHVzID0gc3RhdHVzO1xuXHRcdH07XG5cblx0XHRyZXR1cm4gc2VydmljZTtcblx0fSk7XG5cblx0LyogbGF5b3V0LmpzICovXG5cblx0emFhLmNvbmZpZyhbJyRzdGF0ZVByb3ZpZGVyJywgZnVuY3Rpb24oJHN0YXRlUHJvdmlkZXIpIHtcblx0XHQkc3RhdGVQcm92aWRlclxuXHRcdC5zdGF0ZShcImN1c3RvbS5jbXNlZGl0XCIsIHtcblx0XHRcdHVybCA6IFwiL3VwZGF0ZS86bmF2SWRcIixcblx0XHRcdHRlbXBsYXRlVXJsIDogJ2Ntc2FkbWluL3BhZ2UvdXBkYXRlJ1xuXHRcdH0pXG5cdFx0LnN0YXRlKFwiY3VzdG9tLmNtc2FkZFwiLCB7XG5cdFx0XHR1cmwgOiBcIi9jcmVhdGVcIixcblx0XHRcdHRlbXBsYXRlVXJsIDogJ2Ntc2FkbWluL3BhZ2UvY3JlYXRlJ1xuXHRcdH0pXG5cdFx0LnN0YXRlKFwiY3VzdG9tLmNtc2RyYWZ0XCIsIHtcblx0XHRcdHVybDogJy9kcmFmdHMnLFxuXHRcdFx0dGVtcGxhdGVVcmw6ICdjbXNhZG1pbi9wYWdlL2RyYWZ0cydcblx0XHR9KTtcblx0fV0pO1xuXG5cdC8qIGNvbnRyb2xsZXJzICovXG5cblx0emFhLmNvbnRyb2xsZXIoXCJEcmFmdHNDb250cm9sbGVyXCIsIFsnJHNjb3BlJywgJyRzdGF0ZScsICdTZXJ2aWNlTWVudURhdGEnLCBmdW5jdGlvbigkc2NvcGUsICRzdGF0ZSwgU2VydmljZU1lbnVEYXRhKSB7XG5cblx0XHQkc2NvcGUubWVudURhdGEgPSBTZXJ2aWNlTWVudURhdGEuZGF0YTtcblxuXHRcdCRzY29wZS4kb24oJ3NlcnZpY2U6TWVudURhdGEnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuXHRcdFx0JHNjb3BlLm1lbnVEYXRhID0gZGF0YTtcblx0XHR9KTtcblxuXHRcdCRzY29wZS5nbyA9IGZ1bmN0aW9uKG5hdklkKSB7XG5cdFx0XHQkc3RhdGUuZ28oJ2N1c3RvbS5jbXNlZGl0JywgeyBuYXZJZCA6IG5hdklkIH0pO1xuXHRcdH07XG5cdH1dKTtcblxuXHR6YWEuY29udHJvbGxlcihcIkNtc0Rhc2hib2FyZFwiLCBbJyRzY29wZScsICckaHR0cCcsIGZ1bmN0aW9uKCRzY29wZSwgJGh0dHApIHtcblx0XHQkc2NvcGUuZGFzaGJvYXJkID0gW107XG5cdFx0JGh0dHAuZ2V0KCdhZG1pbi9hcGktY21zLWFkbWluL2Rhc2hib2FyZC1sb2cnKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHQkc2NvcGUuZGFzaGJvYXJkID0gcmVzcG9uc2UuZGF0YTtcblx0XHR9KTtcblx0fV0pO1xuXHRcblx0emFhLmNvbnRyb2xsZXIoXCJDb25maWdDb250cm9sbGVyXCIsIFsnJHNjb3BlJywgJyRodHRwJywgJ0FkbWluVG9hc3RTZXJ2aWNlJywgZnVuY3Rpb24oJHNjb3BlLCAkaHR0cCwgQWRtaW5Ub2FzdFNlcnZpY2UpIHtcblx0XHQkc2NvcGUuZGF0YSA9IHt9O1xuXG5cdFx0JGh0dHAuZ2V0KCdhZG1pbi9hcGktY21zLWFkbWluL2NvbmZpZycpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdCRzY29wZS5kYXRhID0gcmVzcG9uc2UuZGF0YTtcblx0XHR9KTtcblxuXHRcdCRzY29wZS5zYXZlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLWFkbWluL2NvbmZpZycsICRzY29wZS5kYXRhKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blsnanNfY29uZmlnX3VwZGF0ZV9zdWNjZXNzJ10pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XSk7XG5cblx0emFhLmNvbnRyb2xsZXIoXCJQYWdlVmVyc2lvbnNDb250cm9sbGVyXCIsIFsnJHNjb3BlJywgJyRodHRwJywgJ1NlcnZpY2VMYXlvdXRzRGF0YScsICdBZG1pblRvYXN0U2VydmljZScsIGZ1bmN0aW9uKCRzY29wZSwgJGh0dHAsIFNlcnZpY2VMYXlvdXRzRGF0YSwgQWRtaW5Ub2FzdFNlcnZpY2UpIHtcblx0XHQvKipcblx0XHQgKiBAdmFyIG9iamVjdCAkdHlwZURhdGEgRnJvbSBwYXJlbnQgc2NvcGUgY29udHJvbGxlciBOYXZJdGVtQ29udHJvbGxlclxuXHRcdCAqIEB2YXIgb2JqZWN0ICRpdGVtIEZyb20gcGFyZW50IHNjb3BlIGNvbnRyb2xsZXIgTmF2SXRlbUNvbnRyb2xsZXJcblx0XHQgKiBAdmFyIHN0cmluZyAkdmVyc2lvbk5hbWUgRnJvbSBuZy1tb2RlbFxuXHRcdCAqIEB2YXIgaW50ZWdlciAkZnJvbVZlcnNpb25QYWdlSWQgRnJvbSBuZy1tb2RlbCB0aGUgdmVyc2lvbiBjb3B5IGZyb20gb3IgMCA9IG5ldyBlbXB0eS9ibGFuayB2ZXJzaW9uXG5cdFx0ICogQHZhciBpbnRlZ2VyICR2ZXJzaW9uTGF5b3V0SWQgRnJvbSBuZy1tb2RlbCwgb25seSBpZiBmcm9tVmVyc2lvblBhZ2VJZCBpcyAwXG4gXHRcdCAqL1xuXHRcdHZhciBoZWFkZXJzID0ge1wiaGVhZGVyc1wiIDogeyBcIkNvbnRlbnQtVHlwZVwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIiB9fTtcblxuXHRcdC8qIGxheW91dHNEYXRhICovXG5cblx0XHQkc2NvcGUubGF5b3V0c0RhdGEgPSBTZXJ2aWNlTGF5b3V0c0RhdGEuZGF0YTtcblxuICAgIFx0JHNjb3BlLiRvbignc2VydmljZTpMYXlvdXRzRGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG4gICAgXHRcdCRzY29wZS5sYXlvdXRzRGF0YSA9IGRhdGE7XG4gICAgXHR9KTtcblxuICAgIFx0LyogY29udHJvbGxlciBsb2dpYyAqL1xuXG5cdFx0JHNjb3BlLmNyZWF0ZU5ld1ZlcnNpb25TdWJtaXQgPSBmdW5jdGlvbihkYXRhKSB7XG5cdFx0XHRpZiAoZGF0YSA9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuZXJyb3IoaTE4blsnanNfdmVyc2lvbl9lcnJvcl9lbXB0eV9maWVsZHMnXSk7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGRhdGEuY29weUV4aXN0aW5nVmVyc2lvbikge1xuXHRcdFx0XHRkYXRhLnZlcnNpb25MYXlvdXRJZCA9IDA7XG5cdFx0XHR9XG5cdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdml0ZW0vY3JlYXRlLXBhZ2UtdmVyc2lvbicsICQucGFyYW0oeydsYXlvdXRJZCc6IGRhdGEudmVyc2lvbkxheW91dElkLCAnbmF2SXRlbUlkJzogJHNjb3BlLml0ZW0uaWQsICduYW1lJzogZGF0YS52ZXJzaW9uTmFtZSwgJ2Zyb21QYWdlSWQnOiBkYXRhLmZyb21WZXJzaW9uUGFnZUlkfSksIGhlYWRlcnMpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0aWYgKHJlc3BvbnNlLmRhdGEuZXJyb3IpIHtcblx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5lcnJvcihpMThuWydqc192ZXJzaW9uX2Vycm9yX2VtcHR5X2ZpZWxkcyddKTtcblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdCRzY29wZS5yZWZyZXNoRm9yY2UoKTtcblxuXHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5zdWNjZXNzKGkxOG5bJ2pzX3ZlcnNpb25fY3JlYXRlX3N1Y2Nlc3MnXSk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXHR9XSk7XG5cblx0emFhLmNvbnRyb2xsZXIoXCJDb3B5UGFnZUNvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJGh0dHAnLCAnJGZpbHRlcicsICdBZG1pblRvYXN0U2VydmljZScsIGZ1bmN0aW9uKCRzY29wZSwgJGh0dHAsICRmaWx0ZXIsIEFkbWluVG9hc3RTZXJ2aWNlKSB7XG5cblx0XHR2YXIgaGVhZGVycyA9IHtcImhlYWRlcnNcIiA6IHsgXCJDb250ZW50LVR5cGVcIiA6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04XCIgfX07XG5cblx0XHQkc2NvcGUuJG9uKCdkZWxldGVkTmF2SXRlbScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0JHNjb3BlLmlzT3BlbiA9IGZhbHNlO1xuXHRcdFx0JHNjb3BlLml0ZW1TZWxlY3Rpb24gPSBmYWxzZTtcblx0XHRcdCRzY29wZS5zZWxlY3Rpb24gPSAwO1xuXHRcdH0pO1xuXG5cdFx0JHNjb3BlLk5hdkl0ZW1Db250cm9sbGVyID0gJHNjb3BlLiRwYXJlbnQ7XG5cblx0XHQkc2NvcGUubmF2SWQgPSAwO1xuXG5cdFx0JHNjb3BlLml0ZW1zID0gbnVsbDtcblxuXHRcdCRzY29wZS5pc09wZW4gPSBmYWxzZTtcblxuXHRcdCRzY29wZS5pdGVtU2VsZWN0aW9uID0gZmFsc2U7XG5cblx0XHQkc2NvcGUuc2VsZWN0aW9uID0gMDtcblxuXHRcdCRzY29wZS5zZWxlY3QgPSBmdW5jdGlvbihpdGVtKSB7XG5cdFx0XHQkc2NvcGUuc2VsZWN0aW9uID0gaXRlbS5pZDtcblx0XHRcdCRzY29wZS5pdGVtU2VsZWN0aW9uID0gYW5ndWxhci5jb3B5KGl0ZW0pO1xuXHRcdH07XG5cblx0XHQkc2NvcGUuJHdhdGNoKCdpdGVtU2VsZWN0aW9uLnRpdGxlJywgZnVuY3Rpb24obiwgbykge1xuXHRcdFx0aWYgKG4pIHtcblx0XHRcdFx0JHNjb3BlLmFsaWFzU3VnZ2VzdGlvbigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdFxuXHRcdCRzY29wZS5hbGlhc1N1Z2dlc3Rpb24gPSBmdW5jdGlvbigpIHtcblx0XHRcdFxuXHRcdFx0JHNjb3BlLml0ZW1TZWxlY3Rpb24uYWxpYXMgPSAkZmlsdGVyKCdzbHVnaWZ5JykoJHNjb3BlLml0ZW1TZWxlY3Rpb24udGl0bGUpO1xuXHRcdH07XG5cblx0XHQkc2NvcGUubG9hZEl0ZW1zID0gZnVuY3Rpb24oKSB7XG5cdFx0XHQkc2NvcGUubmF2SWQgPSAkc2NvcGUuTmF2SXRlbUNvbnRyb2xsZXIuTmF2Q29udHJvbGxlci5uYXZEYXRhLmlkO1xuXG5cdFx0XHQkaHR0cC5nZXQoJ2FkbWluL2FwaS1jbXMtbmF2L2ZpbmQtbmF2LWl0ZW1zJywgeyBwYXJhbXM6IHsgbmF2SWQgOiAkc2NvcGUubmF2SWQgfX0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0JHNjb3BlLml0ZW1zID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0JHNjb3BlLmlzT3BlbiA9IHRydWU7XG5cdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLnNhdmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdCRzY29wZS5pdGVtU2VsZWN0aW9uWyd0b0xhbmdJZCddID0gJHNjb3BlLk5hdkl0ZW1Db250cm9sbGVyLmxhbmcuaWQ7XG5cdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdi9jcmVhdGUtZnJvbS1wYWdlJywgJC5wYXJhbSgkc2NvcGUuaXRlbVNlbGVjdGlvbiksIGhlYWRlcnMpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0aWYgKHJlc3BvbnNlLmRhdGEpIHtcblx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5zdWNjZXNzKGkxOG5bJ2pzX2FkZGVkX3RyYW5zbGF0aW9uX29rJ10pO1xuXHRcdFx0XHRcdCRzY29wZS5OYXZJdGVtQ29udHJvbGxlci5yZWZyZXNoKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuZXJyb3IoaTE4blsnanNfYWRkZWRfdHJhbnNsYXRpb25fZXJyb3InXSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmVycm9yQXJyYXkocmVzcG9uc2UuZGF0YSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0fV0pO1xuXG5cdHphYS5jb250cm9sbGVyKFwiQ21zTWVudVRyZWVDb250cm9sbGVyXCIsIFsnJHNjb3BlJywgJyRyb290U2NvcGUnLCAnJHN0YXRlJywgJyRodHRwJywgJyRmaWx0ZXInLCAnU2VydmljZU1lbnVEYXRhJywgJ1NlcnZpY2VMaXZlRWRpdE1vZGUnLCAnU2VydmljZUN1cnJlbnRXZWJzaXRlJywgZnVuY3Rpb24oJHNjb3BlLCAkcm9vdFNjb3BlLCAkc3RhdGUsICRodHRwLCAkZmlsdGVyLCBTZXJ2aWNlTWVudURhdGEsIFNlcnZpY2VMaXZlRWRpdE1vZGUsIFNlcnZpY2VDdXJyZW50V2Vic2l0ZSkge1xuXG5cdFx0Ly8gbGl2ZSBlZGl0IHNlcnZpY2VcblxuXHRcdCRzY29wZS5saXZlRWRpdFN0YXRlID0gMDtcblxuXHRcdCRzY29wZS4kd2F0Y2goJ2xpdmVFZGl0U3RhdGVUb2dnbGVyJywgZnVuY3Rpb24obikge1xuXHRcdFx0U2VydmljZUxpdmVFZGl0TW9kZS5zdGF0ZSA9IG47XG5cdFx0fSk7XG5cblx0XHQkc2NvcGUubG9hZENtc0NvbmZpZyA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0JGh0dHAuZ2V0KCdhZG1pbi9hcGktY21zLWFkbWluL2NvbmZpZycpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0JHJvb3RTY29wZS5jbXNDb25maWcgPSByZXNwb25zZS5kYXRhO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRcblx0XHQkc2NvcGUubG9hZENtc0NvbmZpZygpO1xuXHRcdFxuXHRcdC8vIG1lbnUgRGF0YVxuXG5cdFx0JHNjb3BlLm1lbnVEYXRhID0gU2VydmljZU1lbnVEYXRhLmRhdGE7XG5cdFx0JHNjb3BlLmN1cnJlbnRXZWJzaXRlID0gU2VydmljZUN1cnJlbnRXZWJzaXRlLmN1cnJlbnRXZWJzaXRlO1xuXG5cdFx0JHNjb3BlLiRvbignc2VydmljZTpNZW51RGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdFx0XHQkc2NvcGUubWVudURhdGEgPSBkYXRhO1xuXHRcdH0pO1xuXG5cdFx0JHNjb3BlLm1lbnVEYXRhUmVsb2FkID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gU2VydmljZU1lbnVEYXRhLmxvYWQodHJ1ZSk7XG5cdFx0fTtcblxuXHRcdC8vIENvbnRhaW5zIHRoZSBjdXJyZW50IHdlYnNpdGUgaWQsIGlzIGluaXRpYWxpemVkIHdpdGggZmFsc2UgYXMgdmFsdWVcblx0XHQkc2NvcGUuY3VycmVudFdlYnNpdGVUb2dnbGVyID0gZmFsc2VcblxuXHRcdCRzY29wZS4kd2F0Y2goJ2N1cnJlbnRXZWJzaXRlVG9nZ2xlcicsIGZ1bmN0aW9uKG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuXHRcdFx0aWYgKG5ld1ZhbHVlICYmIG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSkge1xuXHRcdFx0XHRTZXJ2aWNlQ3VycmVudFdlYnNpdGUudG9nZ2xlKG5ld1ZhbHVlKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdC8vIGluaXRpYWxpemUgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IG1lbnUgc2VydmljZVxuXHRcdCRzY29wZS5jdXJyZW50V2Vic2l0ZSA9IFNlcnZpY2VDdXJyZW50V2Vic2l0ZS5jdXJyZW50V2Vic2l0ZVxuXG5cdFx0Ly8gaWYgdGhlIHN0YXRlIGhhcyByZWNpdmVkIGEgdmFsdWUsIGFmdGVyIHRoZSBzZXJ2aWNlIGV2ZW50IGhhcyBiZWVuIHRyaWdnZXJlZCwgdGhpcyBlbnN1cmVzXG5cdFx0Ly8gdGhlIGN1cnJlbnQgd2Vic2l0ZSBpcyBkaXNwbGF5ZWQuIExpa2UgYSBsYXp5IGxvYWQgZW5zdXJhbmNlXG5cdFx0aWYgKCRzY29wZS5jdXJyZW50V2Vic2l0ZSkge1xuXHRcdFx0JHNjb3BlLmN1cnJlbnRXZWJzaXRlVG9nZ2xlciA9ICRzY29wZS5jdXJyZW50V2Vic2l0ZS5pZFxuXHRcdH1cblxuXHRcdCRzY29wZS4kb24oJ3NlcnZpY2U6Q3VycmVudFdlYnNpdGVDaGFuZ2VkJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcblx0XHRcdCRzY29wZS5jdXJyZW50V2Vic2l0ZSA9IGRhdGE7XG5cdFx0XHQkc2NvcGUuY3VycmVudFdlYnNpdGVUb2dnbGVyID0gZGF0YS5pZDtcblx0XHRcdFNlcnZpY2VNZW51RGF0YS5sb2FkKCk7XG5cdFx0fSk7XG5cblx0XHQvLyBjb250cm9sbGVyIGxvZ2ljXG5cdFx0XG5cdFx0JHNjb3BlLmRyb3BFbXB0eUNvbnRhaW5lciA9IGZ1bmN0aW9uKGRyYWdnZWQsZHJvcHBlZCxwb3NpdGlvbixjYXRJZCkge1xuXHRcdFx0JGh0dHAuZ2V0KCdhZG1pbi9hcGktY21zLW5hdml0ZW0vbW92ZS10by1jb250YWluZXInLCB7IHBhcmFtczoge21vdmVJdGVtSWQ6IGRyYWdnZWQuaWQsIGRyb3BwZWRPbkNhdElkOiBjYXRJZH19KS50aGVuKGZ1bmN0aW9uKHN1Y2Nlcykge1xuXHRcdFx0XHRTZXJ2aWNlTWVudURhdGEubG9hZCh0cnVlKTtcblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0XG5cdFx0JHNjb3BlLmRyb3BJdGVtID0gZnVuY3Rpb24oZHJhZyxkcm9wLHBvcykge1xuXHRcdFx0aWYgKHBvcyA9PSAnYm90dG9tJykge1xuXHRcdFx0XHR2YXIgYXBpID0gJ2FkbWluL2FwaS1jbXMtbmF2aXRlbS9tb3ZlLWFmdGVyJztcblx0XHRcdFx0dmFyIHBhcmFtcyA9IHttb3ZlSXRlbUlkOiBkcmFnLmlkLCBkcm9wcGVkQWZ0ZXJJdGVtSWQ6IGRyb3AuaWR9O1xuXHRcdFx0fSBlbHNlIGlmIChwb3MgPT0gJ3RvcCcpIHtcblx0XHRcdFx0dmFyIGFwaSA9ICdhZG1pbi9hcGktY21zLW5hdml0ZW0vbW92ZS1iZWZvcmUnO1xuXHRcdFx0XHR2YXIgcGFyYW1zID0ge21vdmVJdGVtSWQ6IGRyYWcuaWQsIGRyb3BwZWRCZWZvcmVJdGVtSWQ6IGRyb3AuaWR9O1xuXG5cdFx0XHR9IGVsc2UgaWYgKHBvcyA9PSAnbWlkZGxlJykge1xuXHRcdFx0XHR2YXIgYXBpID0gJ2FkbWluL2FwaS1jbXMtbmF2aXRlbS9tb3ZlLXRvLWNoaWxkJztcblx0XHRcdFx0dmFyIHBhcmFtcyA9IHttb3ZlSXRlbUlkOiBkcmFnLmlkLCBkcm9wcGVkT25JdGVtSWQ6IGRyb3AuaWR9O1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHQkaHR0cC5nZXQoYXBpLCB7IHBhcmFtcyA6IHBhcmFtcyB9KS50aGVuKGZ1bmN0aW9uKHN1Y2Nlc3MpIHtcblx0XHRcdFx0U2VydmljZU1lbnVEYXRhLmxvYWQodHJ1ZSk7XG5cdFx0XHR9LCBmdW5jdGlvbihlcnJvcikge1xuXHRcdFx0XHRTZXJ2aWNlTWVudURhdGEubG9hZCh0cnVlKTtcblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0XG5cdFx0JHNjb3BlLnZhbGlkSXRlbSA9IGZ1bmN0aW9uKGhvdmVyLCBkcmFnZWQpIHtcblx0XHRcdFxuXHRcdFx0aWYgKGhvdmVyLmlkID09IGRyYWdlZC5pZCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdCRzY29wZS5ycml0ZW1zID0gW107XG5cdFx0XHQkc2NvcGUucmVjdXJzaXZJdGVtVmFsaWRpdHkoZHJhZ2VkLm5hdl9jb250YWluZXJfaWQsIGRyYWdlZC5pZCk7XG5cdFx0XHRcblx0XHRcdGlmICgkc2NvcGUucnJpdGVtcy5pbmRleE9mKGhvdmVyLmlkKSA9PSAtMSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cdFx0XG5cdFx0JHNjb3BlLnJyaXRlbXMgPSBbXTtcblx0XHRcblx0XHQkc2NvcGUucmVjdXJzaXZJdGVtVmFsaWRpdHkgPSBmdW5jdGlvbihjb250YWluZXJJZCwgcGFyZW50TmF2SWQpIHtcblx0XHRcdHZhciBpdGVtcyA9ICRmaWx0ZXIoJ21lbnVwYXJlbnRmaWx0ZXInKSgkc2NvcGUubWVudURhdGEuaXRlbXMsIGNvbnRhaW5lcklkLCBwYXJlbnROYXZJZCk7XG5cdFx0XHRcblx0XHRcdGFuZ3VsYXIuZm9yRWFjaChpdGVtcywgZnVuY3Rpb24oaXRlbSkge1xuXHRcdFx0XHQkc2NvcGUucnJpdGVtcy5wdXNoKGl0ZW0uaWQpO1xuXHRcdFx0XHQkc2NvcGUucmVjdXJzaXZJdGVtVmFsaWRpdHkoY29udGFpbmVySWQsIGl0ZW0uaWQpO1xuXHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS50b2dnbGVJdGVtID0gZnVuY3Rpb24oZGF0YSkge1xuXHRcdFx0aWYgKGRhdGEudG9nZ2xlX29wZW4gPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGRhdGFbJ3RvZ2dsZV9vcGVuJ10gPSAxO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGF0YVsndG9nZ2xlX29wZW4nXSA9ICFkYXRhLnRvZ2dsZV9vcGVuO1xuXHRcdFx0fVxuXG5cdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdi90cmVlLWhpc3RvcnknLCB7ZGF0YTogZGF0YX0sIHtpZ25vcmVMb2FkaW5nQmFyOiB0cnVlfSk7XG5cblx0XHR9O1xuXG5cdFx0JHNjb3BlLmdvID0gZnVuY3Rpb24oZGF0YSkge1xuXHRcdFx0U2VydmljZUxpdmVFZGl0TW9kZS5jaGFuZ2VVcmwoZGF0YS5uYXZfaXRlbV9pZCwgMCk7XG5cdFx0XHQkc3RhdGUuZ28oJ2N1c3RvbS5jbXNlZGl0JywgeyBuYXZJZCA6IGRhdGEuaWQgfSk7XG5cdCAgICB9O1xuXG5cdCAgICAkc2NvcGUuc2hvd0RyYWcgPSAwO1xuXG5cdCAgICAkc2NvcGUuaXNDdXJyZW50RWxlbWVudCA9IGZ1bmN0aW9uKGRhdGEpIHtcblx0ICAgIFx0aWYgKGRhdGEgIT09IG51bGwgJiYgJHN0YXRlLnBhcmFtcy5uYXZJZCA9PSBkYXRhLmlkKSB7XG5cdCAgICBcdFx0cmV0dXJuIHRydWU7XG5cdCAgICBcdH1cblxuXHQgICAgXHRyZXR1cm4gZmFsc2U7XG5cdCAgICB9O1xuXG5cdCAgICAkc2NvcGUuaGlkZGVuQ2F0cyA9IFtdO1xuXG5cdCAgICAkc2NvcGUuJHdhdGNoKCdtZW51RGF0YScsIGZ1bmN0aW9uIChuLCBvKSB7XG5cdCAgICBcdCRzY29wZS5oaWRkZW5DYXRzID0gbi5oaWRkZW5DYXRzO1xuXHQgICAgfSk7XG5cblx0XHQkc2NvcGUudG9nZ2xlQ2F0ID0gZnVuY3Rpb24oY2F0SWQpIHtcblx0XHRcdGlmIChjYXRJZCBpbiAkc2NvcGUuaGlkZGVuQ2F0cykge1xuXHRcdFx0XHQkc2NvcGUuaGlkZGVuQ2F0c1tjYXRJZF0gPSAhJHNjb3BlLmhpZGRlbkNhdHNbY2F0SWRdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JHNjb3BlLmhpZGRlbkNhdHNbY2F0SWRdID0gMTtcblx0XHRcdH1cblxuXHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXYvc2F2ZS1jYXQtdG9nZ2xlJywge2NhdElkOiBjYXRJZCwgc3RhdGU6ICRzY29wZS5oaWRkZW5DYXRzW2NhdElkXX0sIHtpZ25vcmVMb2FkaW5nQmFyOiB0cnVlfSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS50b2dnbGVJc0hpZGRlbiA9IGZ1bmN0aW9uKGNhdElkKSB7XG5cblx0XHRcdGlmICgkc2NvcGUuaGlkZGVuQ2F0cyA9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoY2F0SWQgaW4gJHNjb3BlLmhpZGRlbkNhdHMpIHtcblx0XHRcdFx0aWYgKCRzY29wZS5oaWRkZW5DYXRzW2NhdElkXSA9PSAxKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cblx0fV0pO1xuXG5cdHphYS5jb250cm9sbGVyKFwiQ21zYWRtaW5DcmVhdGVDb250cm9sbGVyXCIsIFsnJHNjb3BlJywgJyRxJywgJyRodHRwJywgZnVuY3Rpb24oJHNjb3BlLCAkcSwgJGh0dHApIHtcblxuXHRcdCRzY29wZS5kYXRhID0ge307XG5cdFx0JHNjb3BlLmRhdGEuaXNJbmxpbmUgPSBmYWxzZTtcblxuXHRcdCRzY29wZS5zYXZlID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdHZhciBoZWFkZXJzID0ge1wiaGVhZGVyc1wiIDogeyBcIkNvbnRlbnQtVHlwZVwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIiB9fTtcblxuXHRcdFx0cmV0dXJuICRxKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG5cdFx0XHRcdGlmICgkc2NvcGUuZGF0YS5uYXZfaXRlbV90eXBlID09IDEpIHtcblx0XHRcdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdi9jcmVhdGUtcGFnZScsICQucGFyYW0oJHNjb3BlLmRhdGEpLCBoZWFkZXJzKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuXHRcdFx0XHRcdH0sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHRyZWplY3QocmVzcG9uc2UuZGF0YSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoJHNjb3BlLmRhdGEubmF2X2l0ZW1fdHlwZSA9PSAyKSB7XG5cdFx0XHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXYvY3JlYXRlLW1vZHVsZScsICQucGFyYW0oJHNjb3BlLmRhdGEpLCBoZWFkZXJzKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuXHRcdFx0XHRcdH0sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHRyZWplY3QocmVzcG9uc2UuZGF0YSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoJHNjb3BlLmRhdGEubmF2X2l0ZW1fdHlwZSA9PSAzKSB7XG5cdFx0XHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXYvY3JlYXRlLXJlZGlyZWN0JywgJC5wYXJhbSgkc2NvcGUuZGF0YSksIGhlYWRlcnMpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdHJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG5cdFx0XHRcdFx0fSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdHJlamVjdChyZXNwb25zZS5kYXRhKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fTtcblx0fV0pO1xuXG5cdHphYS5jb250cm9sbGVyKFwiQ21zYWRtaW5DcmVhdGVJbmxpbmVDb250cm9sbGVyXCIsIFsnJHNjb3BlJywgJyRxJywgJyRodHRwJywgZnVuY3Rpb24oJHNjb3BlLCAkcSwgJGh0dHApIHtcblxuXHRcdCRzY29wZS5kYXRhID0ge1xuXHRcdFx0bmF2X2lkIDogJHNjb3BlLiRwYXJlbnQuTmF2Q29udHJvbGxlci5pZFxuXHRcdH07XG5cblx0XHQkc2NvcGUuZGF0YS5pc0lubGluZSA9IHRydWU7XG5cblx0XHQkc2NvcGUuc2F2ZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQkc2NvcGUuZGF0YS5sYW5nX2lkID0gJHNjb3BlLmxhbmcuaWQ7XG5cblx0XHRcdHZhciBoZWFkZXJzID0ge1wiaGVhZGVyc1wiIDogeyBcIkNvbnRlbnQtVHlwZVwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIiB9fTtcblxuXHRcdFx0cmV0dXJuICRxKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXG5cdFx0XHRcdGlmICgkc2NvcGUuZGF0YS5uYXZfaXRlbV90eXBlID09IDEpIHtcblx0XHRcdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdi9jcmVhdGUtcGFnZS1pdGVtJywgJC5wYXJhbSgkc2NvcGUuZGF0YSksIGhlYWRlcnMpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdHJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG5cdFx0XHRcdFx0fSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdHJlamVjdChyZXNwb25zZS5kYXRhKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICgkc2NvcGUuZGF0YS5uYXZfaXRlbV90eXBlID09IDIpIHtcblx0XHRcdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdi9jcmVhdGUtbW9kdWxlLWl0ZW0nLCAkLnBhcmFtKCRzY29wZS5kYXRhKSwgaGVhZGVycykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcblx0XHRcdFx0XHR9LCBmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0cmVqZWN0KHJlc3BvbnNlLmRhdGEpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCRzY29wZS5kYXRhLm5hdl9pdGVtX3R5cGUgPT0gMykge1xuXHRcdFx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2L2NyZWF0ZS1yZWRpcmVjdC1pdGVtJywgJC5wYXJhbSgkc2NvcGUuZGF0YSksIGhlYWRlcnMpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdHJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG5cdFx0XHRcdFx0fSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdHJlamVjdChyZXNwb25zZS5kYXRhKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9XG5cblx0fV0pO1xuXG5cdHphYS5jb250cm9sbGVyKFwiTmF2Q29udHJvbGxlclwiLCBbXG5cdFx0JyRzY29wZScsICckcm9vdFNjb3BlJywgJyRmaWx0ZXInLCAnJHN0YXRlJywgJyRzdGF0ZVBhcmFtcycsICckaHR0cCcsICdQbGFjZWhvbGRlclNlcnZpY2UnLCAnU2VydmljZVByb3BlcnRpZXNEYXRhJywgJ1NlcnZpY2VNZW51RGF0YScsICdTZXJ2aWNlTGFuZ3VhZ2VzRGF0YScsICdTZXJ2aWNlTGl2ZUVkaXRNb2RlJywgJ0FkbWluVG9hc3RTZXJ2aWNlJywgJ0FkbWluQ2xhc3NTZXJ2aWNlJywgJ0FkbWluTGFuZ1NlcnZpY2UnLCAnSHRtbFN0b3JhZ2UnLFxuXHRcdGZ1bmN0aW9uKCRzY29wZSwgJHJvb3RTY29wZSwgJGZpbHRlciwgJHN0YXRlLCAkc3RhdGVQYXJhbXMsICRodHRwLCBQbGFjZWhvbGRlclNlcnZpY2UsIFNlcnZpY2VQcm9wZXJ0aWVzRGF0YSwgU2VydmljZU1lbnVEYXRhLCBTZXJ2aWNlTGFuZ3VhZ2VzRGF0YSwgU2VydmljZUxpdmVFZGl0TW9kZSwgQWRtaW5Ub2FzdFNlcnZpY2UsIEFkbWluQ2xhc3NTZXJ2aWNlLCBBZG1pbkxhbmdTZXJ2aWNlLCBIdG1sU3RvcmFnZSkge1xuXG5cblx0XHQkc2NvcGUucGFnZVNldHRpbmdzT3ZlcmxheUhpZGRlbiA9IHRydWU7XG5cdFx0XG5cdFx0JHNjb3BlLnBhZ2VTZXR0aW5nc092ZXJsYXlUYWIgPSAxO1xuXHRcdFxuXHRcdCRzY29wZS50b2dnbGVQYWdlU2V0dGluZ3NPdmVybGF5ID0gZnVuY3Rpb24odCkge1xuXHRcdFx0JHNjb3BlLnBhZ2VTZXR0aW5nc092ZXJsYXlUYWIgPSB0O1xuXHRcdFx0JHNjb3BlLnBhZ2VTZXR0aW5nc092ZXJsYXlIaWRkZW4gPSAhJHNjb3BlLnBhZ2VTZXR0aW5nc092ZXJsYXlIaWRkZW47XG5cdFx0fTtcblx0XHRcblx0XHQkc2NvcGUubmF2Q2ZnID0ge1xuXHRcdFx0aGVscHRhZ3M6ICRyb290U2NvcGUubHV5YWNmZy5oZWxwdGFncyxcblx0XHR9O1xuXHRcdFxuXHRcdCRzY29wZS4kd2F0Y2goZnVuY3Rpb24oKSB7IHJldHVybiBTZXJ2aWNlTGl2ZUVkaXRNb2RlLnN0YXRlIH0sIGZ1bmN0aW9uKG4sIG8pIHtcblx0XHRcdCRzY29wZS5kaXNwbGF5TGl2ZUNvbnRhaW5lciA9IG47XG5cdFx0fSk7XG5cdFx0XG5cdFx0JHNjb3BlLiR3YXRjaChmdW5jdGlvbigpIHsgcmV0dXJuIFNlcnZpY2VMaXZlRWRpdE1vZGUudXJsIH0sIGZ1bmN0aW9uKG4sIG8pIHtcblx0XHRcdCRzY29wZS5saXZlVXJsID0gbjtcblx0XHR9KTtcblx0XHRcblx0XHQkc2NvcGUuQWRtaW5MYW5nU2VydmljZSA9IEFkbWluTGFuZ1NlcnZpY2U7XG5cblx0XHQvKiBzZXJ2aWNlIEFkbWluUHJvcGVydHlTZXJ2aWNlIGluaGVyaXRhbmNlICovXG5cblx0XHQkc2NvcGUucHJvcGVydGllc0RhdGEgPSBTZXJ2aWNlUHJvcGVydGllc0RhdGEuZGF0YTtcblxuXHRcdCRzY29wZS4kb24oJ3NlcnZpY2U6UHJvcGVydGllc0RhdGEnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuXHRcdFx0JHNjb3BlLnByb3BlcnRpZXNEYXRhID0gZGF0YTtcblx0XHR9KTtcblxuXHRcdC8qIHNlcnZpY2UgU2VydmljZU1lbnVEYXRhIGluaGVyaXRhbmNlICovXG5cblx0XHQkc2NvcGUubWVudURhdGEgPSBTZXJ2aWNlTWVudURhdGEuZGF0YTtcblxuXHRcdCRzY29wZS4kb24oJ3NlcnZpY2U6TWVudURhdGEnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuXHRcdFx0JHNjb3BlLm1lbnVEYXRhID0gZGF0YTtcblx0XHR9KTtcblxuXHRcdCRzY29wZS5tZW51RGF0YVJlbG9hZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIFNlcnZpY2VNZW51RGF0YS5sb2FkKHRydWUpO1xuXHRcdH07XG5cblx0XHQvKiBzZXJ2aWNlIFNlcnZpY2VMYW5nYXVnZXNEYXRhIGluaGVyaXRhbmNlICovXG5cblx0XHQkc2NvcGUubGFuZ3VhZ2VzRGF0YSA9IFNlcnZpY2VMYW5ndWFnZXNEYXRhLmRhdGE7XG5cblx0XHQkc2NvcGUuJG9uKCdzZXJ2aWNlOkxhbmd1YWdlc0RhdGEnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuXHRcdFx0JHNjb3BlLmxhbmd1YWdlc0RhdGEgPSBkYXRhO1xuXHRcdH0pO1xuXG5cdFx0LyogcGxhY2Vob2xkZXJzIHRvZ2dsZXIgc2VydmljZSAqL1xuXG5cdFx0JHNjb3BlLlBsYWNlaG9sZGVyU2VydmljZSA9IFBsYWNlaG9sZGVyU2VydmljZTtcblxuXHRcdCRzY29wZS5wbGFjZWhvbGRlclN0YXRlID0gJHNjb3BlLlBsYWNlaG9sZGVyU2VydmljZS5zdGF0dXM7XG5cblx0XHQkc2NvcGUuJHdhdGNoKCdwbGFjZWhvbGRlclN0YXRlJywgZnVuY3Rpb24obiwgbykge1xuXHRcdFx0aWYgKG4gIT09IG8gJiYgbiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdCRzY29wZS5QbGFjZWhvbGRlclNlcnZpY2UuZGVsZWdhdGUobik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHQvKiBCbG9ja2hvbGRlciBzaXplIHRvZ2dsZXIgKi9cblxuICAgICAgICAkc2NvcGUuaXNCbG9ja2hvbGRlclNtYWxsID0gSHRtbFN0b3JhZ2UuZ2V0VmFsdWUoJ2Jsb2NraG9sZGVyVG9nZ2xlU3RhdGUnLCB0cnVlKTtcblxuICAgICAgICAkc2NvcGUudG9nZ2xlQmxvY2tob2xkZXJTaXplID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAkc2NvcGUuaXNCbG9ja2hvbGRlclNtYWxsID0gISRzY29wZS5pc0Jsb2NraG9sZGVyU21hbGw7XG4gICAgICAgICAgICBIdG1sU3RvcmFnZS5zZXRWYWx1ZSgnYmxvY2tob2xkZXJUb2dnbGVTdGF0ZScsICRzY29wZS5pc0Jsb2NraG9sZGVyU21hbGwpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qIHNpZGViYXIgbG9naWMgKi9cblxuXHRcdCRzY29wZS5zaWRlYmFyID0gZmFsc2U7XG5cblx0ICAgICRzY29wZS5lbmFibGVTaWRlYmFyID0gZnVuY3Rpb24oKSB7XG5cdCAgICBcdCRzY29wZS5zaWRlYmFyID0gdHJ1ZTtcblx0ICAgIH07XG5cblx0ICAgICRzY29wZS50b2dnbGVTaWRlYmFyID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgICAgJHNjb3BlLnNpZGViYXIgPSAhJHNjb3BlLnNpZGViYXI7XG5cdCAgICB9O1xuXG5cdFx0LyogYXBwIGxvZ2ljICovXG5cblx0ICAgICRzY29wZS5zaG93QWN0aW9ucyA9IDE7XG5cblx0XHQkc2NvcGUuaWQgPSBwYXJzZUludCgkc3RhdGVQYXJhbXMubmF2SWQpO1xuXG5cdFx0JHNjb3BlLmlzRGVsZXRlZCA9IGZhbHNlO1xuXG5cdFx0JHNjb3BlLkFkbWluQ2xhc3NTZXJ2aWNlID0gQWRtaW5DbGFzc1NlcnZpY2U7XG5cblx0XHQkc2NvcGUucHJvcFZhbHVlcyA9IHt9O1xuXG5cdFx0JHNjb3BlLmhhc1ZhbHVlcyA9IGZhbHNlO1xuXG5cdFx0JHNjb3BlLnBhZ2VUYWdzID0gW107XG5cblx0XHQkc2NvcGUuYnViYmxlUGFyZW50cyA9IGZ1bmN0aW9uKHBhcmVudE5hdklkLCBjb250YWluZXJJZCkge1xuXHQgICAgXHR2YXIgaXRlbSA9ICRmaWx0ZXIoJ21lbnVjaGlsZGZpbHRlcicpKCRzY29wZS5tZW51RGF0YS5pdGVtcywgY29udGFpbmVySWQsIHBhcmVudE5hdklkKTtcblx0ICAgIFx0aWYgKGl0ZW0pIHtcblx0ICAgIFx0XHRpdGVtLnRvZ2dsZV9vcGVuID0gMTtcblx0ICAgIFx0XHQkc2NvcGUuYnViYmxlUGFyZW50cyhpdGVtLnBhcmVudF9uYXZfaWQsIGl0ZW0ubmF2X2NvbnRhaW5lcl9pZCk7XG5cdCAgICBcdH1cblx0ICAgIH07XG5cblx0XHQkc2NvcGUuY3JlYXRlRGVlcFBhZ2VDb3B5ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdi9kZWVwLXBhZ2UtY29weScsIHtuYXZJZDogJHNjb3BlLmlkfSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHQkc2NvcGUubWVudURhdGFSZWxvYWQoKTtcblx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2Uuc3VjY2VzcyhpMThuWydqc19wYWdlX2NyZWF0ZV9jb3B5X3N1Y2Nlc3MnXSk7XG5cdFx0XHRcdCRzY29wZS5zaG93QWN0aW9ucyA9IDE7XG5cdFx0XHRcdCRzY29wZS50b2dnbGVQYWdlU2V0dGluZ3NPdmVybGF5KCk7XG5cdFx0XHR9LCBmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5lcnJvckFycmF5KHJlc3BvbnNlLmRhdGEpO1xuXHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS5wYWdlVGFncyA9IFtdO1xuXG5cdFx0JGh0dHAuZ2V0KCdhZG1pbi9hcGktY21zLW5hdi8nICsgJHNjb3BlLmlkICsgJy90YWdzJykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0YW5ndWxhci5mb3JFYWNoKHJlc3BvbnNlLmRhdGEsIGZ1bmN0aW9uKHZhbHVlKSB7XG5cdFx0XHRcdCRzY29wZS5wYWdlVGFncy5wdXNoKHZhbHVlLmlkKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0JHNjb3BlLnNhdmVQYWdlVGFncyA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXYvJyArICRzY29wZS5pZCArICcvdGFncycsICRzY29wZS5wYWdlVGFncykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHQkc2NvcGUudG9nZ2xlUGFnZVNldHRpbmdzT3ZlcmxheSgpO1xuXHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5zdWNjZXNzKGkxOG5bJ2pzX2NvbmZpZ191cGRhdGVfc3VjY2VzcyddKTtcblx0XHRcdH0sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmVycm9yQXJyYXkocmVzcG9uc2UuZGF0YSk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLmNyZWF0ZURlZXBQYWdlQ29weUFzVGVtcGxhdGUgPSBmdW5jdGlvbigpIHtcblx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2L2RlZXAtcGFnZS1jb3B5LWFzLXRlbXBsYXRlJywge25hdklkOiAkc2NvcGUuaWR9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdCRzY29wZS5tZW51RGF0YVJlbG9hZCgpO1xuXHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5zdWNjZXNzKGkxOG5bJ2pzX3BhZ2VfY3JlYXRlX2NvcHlfYXNfdGVtcGxhdGVfc3VjY2VzcyddKTtcblx0XHRcdFx0JHNjb3BlLnNob3dBY3Rpb25zID0gMTtcblx0XHRcdFx0JHNjb3BlLnRvZ2dsZVBhZ2VTZXR0aW5nc092ZXJsYXkoKTtcbiAgICAgICAgICAgICAgICAkc3RhdGUuZ28oJ2N1c3RvbS5jbXNkcmFmdCcpO1xuXHRcdFx0fSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuZXJyb3JBcnJheShyZXNwb25zZS5kYXRhKTtcblx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHQkc2NvcGUubG9hZE5hdlByb3BlcnRpZXMgPSBmdW5jdGlvbigpIHtcblx0XHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWNtcy1uYXYvZ2V0LXByb3BlcnRpZXMnLCB7IHBhcmFtczoge25hdklkOiAkc2NvcGUuaWR9fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRmb3IodmFyIGkgaW4gcmVzcG9uc2UuZGF0YSkge1xuXHRcdFx0XHRcdHZhciBkID0gcmVzcG9uc2UuZGF0YVtpXTtcblx0XHRcdFx0XHQkc2NvcGUucHJvcFZhbHVlc1tkLmFkbWluX3Byb3BfaWRdID0gZC52YWx1ZTtcblx0XHRcdFx0XHQkc2NvcGUuaGFzVmFsdWVzID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS50b2dnbGVQcm9wTWFzayA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0JHNjb3BlLnNob3dQcm9wRm9ybSA9ICEkc2NvcGUuc2hvd1Byb3BGb3JtO1xuXHRcdH07XG5cblx0XHQkc2NvcGUuc2hvd1Byb3BGb3JtID0gZmFsc2U7XG5cblx0XHQkc2NvcGUuc3RvcmVQcm9wVmFsdWVzID0gZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaGVhZGVycyA9IHtcImhlYWRlcnNcIiA6IHsgXCJDb250ZW50LVR5cGVcIiA6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04XCIgfX07XG5cdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdi9zYXZlLXByb3BlcnRpZXM/bmF2SWQ9Jyskc2NvcGUuaWQsICQucGFyYW0oJHNjb3BlLnByb3BWYWx1ZXMpLCBoZWFkZXJzKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blsnanNfcGFnZV9wcm9wZXJ0eV9yZWZyZXNoJ10pO1xuXHRcdFx0XHQkc2NvcGUubG9hZE5hdlByb3BlcnRpZXMoKTtcblx0XHRcdFx0JHNjb3BlLnNob3dQcm9wRm9ybSA9IGZhbHNlO1xuXHRcdFx0XHQkc2NvcGUudG9nZ2xlUGFnZVNldHRpbmdzT3ZlcmxheSgpO1xuXHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS50cmFzaCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuY29uZmlybShpMThuWydqc19wYWdlX2NvbmZpcm1fZGVsZXRlJ10sIGkxOG5bJ2Ntc2FkbWluX3NldHRpbmdzX3RyYXNocGFnZV90aXRsZSddLCBbJyR0b2FzdCcsIGZ1bmN0aW9uKCR0b2FzdCkge1xuXHRcdFx0XHQkaHR0cC5nZXQoJ2FkbWluL2FwaS1jbXMtbmF2L2RlbGV0ZScsIHsgcGFyYW1zIDogeyBuYXZJZCA6ICRzY29wZS5pZCB9fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHQgICAgXHRcdFx0JHNjb3BlLmlzRGVsZXRlZCA9IHRydWU7XG5cdCAgICBcdFx0XHQkc2NvcGUubWVudURhdGFSZWxvYWQoKS50aGVuKGZ1bmN0aW9uKCkge1xuXHQgICAgXHRcdFx0XHQkdG9hc3QuY2xvc2UoKTtcblx0ICAgIFx0XHRcdFx0JHNjb3BlLnRvZ2dsZVBhZ2VTZXR0aW5nc092ZXJsYXkoKTtcblx0ICAgIFx0XHRcdH0pO1xuXHQgICAgXHRcdH0sIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0aWYgKHJlc3BvbnNlLnN0YXR1cyA9PSA0MTcpIHtcblx0XHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmVycm9yKGkxOG5bJ2pzX3BhZ2VfZGVsZXRlX2Vycm9yX2NhdXNlX3JlZGlyZWN0cyddKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuZXJyb3JBcnJheShyZXNwb25zZS5kYXRhKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fV0pO1xuXHQgICAgfTtcblxuXHQgICAgJHNjb3BlLmlzRHJhZnQgPSBmYWxzZTtcblxuXHQgICAgJHNjb3BlLnN1Ym1pdE5hdkZvcm0gPSBmdW5jdGlvbihkYXRhKSB7XG5cdCAgICBcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2L3VwZGF0ZT9pZD0nICsgJHNjb3BlLm5hdkRhdGEuaWQsIGRhdGEpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0ICAgIFx0XHRBZG1pblRvYXN0U2VydmljZS5zdWNjZXNzKGkxOG5QYXJhbSgnanNfcGFnZV91cGRhdGVfbGF5b3V0X3NhdmVfc3VjY2VzcycpKTtcblx0ICAgIFx0XHQkc2NvcGUudG9nZ2xlUGFnZVNldHRpbmdzT3ZlcmxheSgpO1xuXHQgICAgXHR9LCBmdW5jdGlvbihyZXNwb25zZSkge1xuXHQgICAgXHRcdGFuZ3VsYXIuZm9yRWFjaChyZXNwb25zZS5kYXRhLCBmdW5jdGlvbih2YWx1ZSkge1xuXHQgICAgXHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuZXJyb3IodmFsdWUubWVzc2FnZSk7XG5cdCAgICBcdFx0fSk7XG5cdCAgICBcdH0pO1xuXHQgICAgfTtcblxuXHQgICAgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG5cdFx0XHQkc2NvcGUubmF2RGF0YSA9ICRmaWx0ZXIoJ2ZpbHRlcicpKCRzY29wZS5tZW51RGF0YS5pdGVtcywge2lkOiAkc2NvcGUuaWR9LCB0cnVlKVswXTtcblx0XHRcdGlmICgkc2NvcGUubmF2RGF0YSA9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0JHNjb3BlLmlzRHJhZnQgPSB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQkc2NvcGUubG9hZE5hdlByb3BlcnRpZXMoKTtcblxuXHRcdFx0XHQvKiBwcm9wZXJ0aWVzIC0tPiAqL1xuXG5cdFx0XHQgICAgJHNjb3BlLiR3YXRjaChmdW5jdGlvbigpIHsgcmV0dXJuICRzY29wZS5uYXZEYXRhLmlzX29mZmxpbmUgfSwgZnVuY3Rpb24obiwgbykge1xuXHRcdFx0ICAgIFx0aWYgKG4gIT09IG8gJiYgbiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQgICAgXHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWNtcy1uYXYvdG9nZ2xlLW9mZmxpbmUnLCB7IHBhcmFtcyA6IHsgbmF2SWQgOiAkc2NvcGUubmF2RGF0YS5pZCAsIG9mZmxpbmVTdGF0dXMgOiBuIH19KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUubmF2RGF0YS5pc19vZmZsaW5lID09IDEpIHtcblx0XHRcdFx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5pbmZvKGkxOG5QYXJhbSgnanNfc3RhdGVfb2ZmbGluZScsIHt0aXRsZTogJHNjb3BlLm5hdkRhdGEudGl0bGV9KSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuaW5mbyhpMThuUGFyYW0oJ2pzX3N0YXRlX29ubGluZScsIHt0aXRsZTogJHNjb3BlLm5hdkRhdGEudGl0bGV9KSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdCAgICBcdFx0fSk7XG5cdFx0XHQgICAgXHR9XG5cdFx0XHQgICAgfSk7XG5cblx0XHRcdCAgICAkc2NvcGUuJHdhdGNoKGZ1bmN0aW9uKCkgeyByZXR1cm4gJHNjb3BlLm5hdkRhdGEuaXNfaGlkZGVuIH0sIGZ1bmN0aW9uKG4sIG8pIHtcblx0XHRcdFx0XHRpZiAobiAhPT0gbyAmJiBuICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWNtcy1uYXYvdG9nZ2xlLWhpZGRlbicsIHsgcGFyYW1zIDogeyBuYXZJZCA6ICRzY29wZS5uYXZEYXRhLmlkICwgaGlkZGVuU3RhdHVzIDogbiB9fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJHNjb3BlLm5hdkRhdGEuaXNfaGlkZGVuID09IDEpIHtcblx0XHRcdFx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5pbmZvKGkxOG5QYXJhbSgnanNfc3RhdGVfaGlkZGVuJywge3RpdGxlOiAkc2NvcGUubmF2RGF0YS50aXRsZX0pKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5pbmZvKGkxOG5QYXJhbSgnanNfc3RhdGVfdmlzaWJsZScsIHt0aXRsZTogJHNjb3BlLm5hdkRhdGEudGl0bGV9KSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdCAgICAkc2NvcGUuJHdhdGNoKGZ1bmN0aW9uKCkgeyByZXR1cm4gJHNjb3BlLm5hdkRhdGEuaXNfaG9tZSB9LCBmdW5jdGlvbihuLCBvKSB7XG5cdFx0XHQgICAgXHRpZiAobiAhPT0gbyAmJiBuICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdCRodHRwLmdldCgnYWRtaW4vYXBpLWNtcy1uYXYvdG9nZ2xlLWhvbWUnLCB7IHBhcmFtcyA6IHsgbmF2SWQgOiAkc2NvcGUubmF2RGF0YS5pZCAsIGhvbWVTdGF0ZSA6IG4gfX0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLm1lbnVEYXRhUmVsb2FkKCkudGhlbihmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoJHNjb3BlLm5hdkRhdGEuaXNfaG9tZSA9PSAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5zdWNjZXNzKGkxOG5QYXJhbSgnanNfc3RhdGVfaXNfaG9tZScsIHt0aXRsZTogJHNjb3BlLm5hdkRhdGEudGl0bGV9KSk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blBhcmFtKCdqc19zdGF0ZV9pc19ub3RfaG9tZScsIHt0aXRsZTogJHNjb3BlLm5hdkRhdGEudGl0bGV9KSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdCRzY29wZS50b2dnbGVQYWdlU2V0dGluZ3NPdmVybGF5KCk7XG5cdFx0XHQgICAgXHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdFx0aW5pdGlhbGl6ZXIoKTtcblx0fV0pO1xuXG5cdC8qKlxuXHQgKiBAcGFyYW0gJHNjb3BlLmxhbmcgZnJvbSBuZy1yZXBlYXRcblx0ICovXG5cdHphYS5jb250cm9sbGVyKFwiTmF2SXRlbUNvbnRyb2xsZXJcIiwgW1xuXHRcdCckc2NvcGUnLCAnJHJvb3RTY29wZScsICckaHR0cCcsICckZmlsdGVyJywgJyR0aW1lb3V0JywgJ1NlcnZpY2VNZW51RGF0YScsICdBZG1pbkxhbmdTZXJ2aWNlJywgJ0FkbWluVG9hc3RTZXJ2aWNlJywgJ1NlcnZpY2VMaXZlRWRpdE1vZGUnLCAnU2VydmljZUxheW91dHNEYXRhJywgJ1NlcnZpY2VXb3JraW5nUGFnZVZlcnNpb24nLFxuXHRcdGZ1bmN0aW9uKCRzY29wZSwgJHJvb3RTY29wZSwgJGh0dHAsICRmaWx0ZXIsICR0aW1lb3V0LCBTZXJ2aWNlTWVudURhdGEsIEFkbWluTGFuZ1NlcnZpY2UsIEFkbWluVG9hc3RTZXJ2aWNlLCBTZXJ2aWNlTGl2ZUVkaXRNb2RlLCBTZXJ2aWNlTGF5b3V0c0RhdGEsIFNlcnZpY2VXb3JraW5nUGFnZVZlcnNpb24pIHtcblxuXHRcdCRzY29wZS5sb2FkZWQgPSBmYWxzZTtcblxuXHRcdCRzY29wZS5OYXZDb250cm9sbGVyID0gJHNjb3BlLiRwYXJlbnQ7XG5cblx0XHQkc2NvcGUubGl2ZUVkaXRTdGF0ZSA9IGZhbHNlO1xuXG5cdFx0JHNjb3BlLiR3YXRjaChmdW5jdGlvbigpIHsgcmV0dXJuIFNlcnZpY2VMaXZlRWRpdE1vZGUuc3RhdGUgfSwgZnVuY3Rpb24obiwgbykge1xuXHRcdFx0JHNjb3BlLmxpdmVFZGl0U3RhdGUgPSBuO1xuXHRcdH0pO1xuXG5cdFx0JHNjb3BlLm9wZW5MaXZlVXJsID0gZnVuY3Rpb24oaWQsIHZlcnNpb25JZCkge1xuXHRcdFx0U2VydmljZUxpdmVFZGl0TW9kZS5jaGFuZ2VVcmwoaWQsIHZlcnNpb25JZCk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS5sb2FkTGl2ZVVybCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0U2VydmljZUxpdmVFZGl0TW9kZS5jaGFuZ2VVcmwoJHNjb3BlLml0ZW0uaWQsICRzY29wZS5jdXJyZW50UGFnZVZlcnNpb24pO1xuXHRcdH07XG5cblx0XHQvLyBsYXlvdXRzRGF0YVxuXG5cdFx0JHNjb3BlLmxheW91dHNEYXRhID0gU2VydmljZUxheW91dHNEYXRhLmRhdGE7XG5cbiAgICBcdCRzY29wZS4kb24oJ3NlcnZpY2U6QmxvY2tzRGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG4gICAgXHRcdCRzY29wZS5sYXlvdXRzRGF0YSA9IGRhdGE7XG4gICAgXHR9KTtcblx0XHRcblx0XHQvLyBzZXJ2aWNlTWVudURhdGEgaW5oZXJpdGFuY2VcblxuXHRcdCRzY29wZS5tZW51RGF0YVJlbG9hZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIFNlcnZpY2VNZW51RGF0YS5sb2FkKHRydWUpO1xuXHRcdH07XG5cblx0XHQkc2NvcGUuJG9uKCdzZXJ2aWNlOkxvYWRMYW5ndWFnZScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdFx0XHRpZiAoISRzY29wZS5sb2FkZWQpIHtcblx0XHRcdFx0JHNjb3BlLnJlZnJlc2goKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdC8vIHByb3BlcnRpZXM6XG5cblx0XHQkc2NvcGUuaXNUcmFuc2xhdGVkID0gZmFsc2U7XG5cblx0XHQkc2NvcGUuaXRlbSA9IFtdO1xuXG5cdFx0JHNjb3BlLml0ZW1Db3B5ID0gW107XG5cblx0XHQkc2NvcGUuc2V0dGluZ3MgPSBmYWxzZTtcblxuXHRcdCRzY29wZS50eXBlRGF0YUNvcHkgPSBbXTtcblxuXHRcdCRzY29wZS50eXBlRGF0YSA9IFtdO1xuXG5cdFx0JHNjb3BlLmNvbnRhaW5lciA9IFtdO1xuXG5cdFx0JHNjb3BlLmVycm9ycyA9IFtdO1xuXG5cdFx0JHNjb3BlLmhvbWVVcmwgPSAkcm9vdFNjb3BlLmx1eWFjZmcuaG9tZVVybDtcblxuXHRcdCRzY29wZS5jdXJyZW50UGFnZVZlcnNpb24gPSAwO1xuXHRcdFxuXHRcdCRzY29wZS5jdXJyZW50UGFnZVZlcnNpb25BbGlhcztcblxuXHRcdCRzY29wZS50cmFzaEl0ZW0gPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICgkc2NvcGUubGFuZy5pc19kZWZhdWx0ID09IDApIHtcblx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2UuY29uZmlybShpMThuWydqc19wYWdlX2NvbmZpcm1fZGVsZXRlJ10sIGkxOG5bJ2Ntc2FkbWluX3NldHRpbmdzX3RyYXNocGFnZV90aXRsZSddLCBbJyR0b2FzdCcsIGZ1bmN0aW9uKCR0b2FzdCkge1xuXHRcdFx0XHRcdCRodHRwLmRlbGV0ZSgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtL2RlbGV0ZT9uYXZJdGVtSWQ9JyArICRzY29wZS5pdGVtLmlkKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHQkc2NvcGUubWVudURhdGFSZWxvYWQoKS50aGVuKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUuaXNUcmFuc2xhdGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdCRzY29wZS5pdGVtID0gW107XG5cdFx0XHRcdFx0XHRcdCRzY29wZS5pdGVtQ29weSA9IFtdO1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUuc2V0dGluZ3MgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLnR5cGVEYXRhQ29weSA9IFtdO1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUudHlwZURhdGEgPSBbXTtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmNvbnRhaW5lciA9IFtdO1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUuZXJyb3JzID0gW107XG5cdFx0XHRcdFx0XHRcdCRzY29wZS5jdXJyZW50UGFnZVZlcnNpb24gPSAwO1xuXHRcdFx0XHRcdFx0XHQkc2NvcGUuJGJyb2FkY2FzdCgnZGVsZXRlZE5hdkl0ZW0nKTtcblx0XHRcdFx0XHRcdFx0JHRvYXN0LmNsb3NlKCk7XG5cdFx0ICAgIFx0XHRcdH0pO1xuXHRcdCAgICBcdFx0fSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmVycm9yKGkxOG5bJ2pzX3BhZ2VfZGVsZXRlX2Vycm9yX2NhdXNlX3JlZGlyZWN0cyddKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fV0pO1xuXHRcdFx0fVxuXHQgICAgfTtcblxuXHRcdCRzY29wZS5yZXNldCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0JHNjb3BlLml0ZW1Db3B5ID0gYW5ndWxhci5jb3B5KCRzY29wZS5pdGVtKTtcblx0XHRcdGlmICgkc2NvcGUuaXRlbS5uYXZfaXRlbV90eXBlID09IDEpIHtcblx0XHRcdFx0JHNjb3BlLnR5cGVEYXRhQ29weSA9IGFuZ3VsYXIuY29weSh7J25hdl9pdGVtX3R5cGVfaWQnIDogJHNjb3BlLml0ZW0ubmF2X2l0ZW1fdHlwZV9pZCB9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCRzY29wZS50eXBlRGF0YUNvcHkgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLnR5cGVEYXRhKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0JHNjb3BlLnVwZGF0ZU5hdkl0ZW1EYXRhID0gZnVuY3Rpb24oaXRlbUNvcHksIHR5cGVEYXRhQ29weSkge1xuXHRcdFx0JHNjb3BlLmVycm9ycyA9IFtdO1xuXHRcdFx0dmFyIGhlYWRlcnMgPSB7XCJoZWFkZXJzXCIgOiB7IFwiQ29udGVudC1UeXBlXCIgOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOFwiIH19O1xuXHRcdFx0dmFyIG5hdkl0ZW1JZCA9IGl0ZW1Db3B5LmlkO1xuXG5cdFx0XHR0eXBlRGF0YUNvcHkudGl0bGUgPSBpdGVtQ29weS50aXRsZTtcblx0XHRcdHR5cGVEYXRhQ29weS5hbGlhcyA9IGl0ZW1Db3B5LmFsaWFzO1xuXHRcdFx0dHlwZURhdGFDb3B5LnRpdGxlX3RhZyA9IGl0ZW1Db3B5LnRpdGxlX3RhZztcblx0XHRcdHR5cGVEYXRhQ29weS5kZXNjcmlwdGlvbiA9IGl0ZW1Db3B5LmRlc2NyaXB0aW9uO1xuXHRcdFx0dHlwZURhdGFDb3B5LmtleXdvcmRzID0gaXRlbUNvcHkua2V5d29yZHM7XG5cdFx0XHR0eXBlRGF0YUNvcHkudGltZXN0YW1wX2NyZWF0ZSA9IGl0ZW1Db3B5LnRpbWVzdGFtcF9jcmVhdGU7XG5cdFx0XHR0eXBlRGF0YUNvcHkuaW1hZ2VfaWQgPSBpdGVtQ29weS5pbWFnZV9pZDtcblx0XHRcdHR5cGVEYXRhQ29weS5pc191cmxfc3RyaWN0X3BhcnNpbmdfZGlzYWJsZWQgPSBpdGVtQ29weS5pc191cmxfc3RyaWN0X3BhcnNpbmdfZGlzYWJsZWQ7XG5cdFx0XHR0eXBlRGF0YUNvcHkuaXNfY2FjaGVhYmxlID0gaXRlbUNvcHkuaXNfY2FjaGVhYmxlO1xuXHRcdFx0JGh0dHAucG9zdChcblx0XHRcdFx0J2FkbWluL2FwaS1jbXMtbmF2aXRlbS91cGRhdGUtcGFnZS1pdGVtP25hdkl0ZW1JZD0nICsgbmF2SXRlbUlkICsgJyZuYXZJdGVtVHlwZT0nICsgaXRlbUNvcHkubmF2X2l0ZW1fdHlwZSxcblx0XHRcdFx0JC5wYXJhbSh0eXBlRGF0YUNvcHkpLFxuXHRcdFx0XHRoZWFkZXJzXG5cdFx0XHQpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0aWYgKGl0ZW1Db3B5Lm5hdl9pdGVtX3R5cGUgIT09IDEpIHtcblx0XHRcdFx0XHQkc2NvcGUuY3VycmVudFBhZ2VWZXJzaW9uID0gMDtcblx0XHRcdFx0fVxuXHRcdFx0XHQkc2NvcGUubG9hZGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmIChyZXNwb25zZS5kYXRhKSB7XG5cdFx0XHRcdFx0Lyogc3dpdGNoIHZlcnNpb24gaWYgdHlwZSBpcyBwYWdlICovXG5cdFx0XHRcdFx0aWYgKGl0ZW1Db3B5Lm5hdl9pdGVtX3R5cGUgPT0gMSAmJiB0eXBlb2YgcmVzcG9uc2UuZGF0YVsndHlwZURhdGEnXSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRcdC8qIGNob29zZSBnaXZlbiB2ZXJzaW9uIG9yIGNob29zZSBmaXJzdCBhdmFpbGFibGUgdmVyc2lvbiAqL1xuXHRcdFx0XHRcdFx0dmFyIHBhZ2VWZXJzaW9uS2V5ID0gcmVzcG9uc2UuZGF0YVsnaXRlbSddLm5hdl9pdGVtX3R5cGVfaWQ7XG5cdFx0XHRcdFx0XHRpZiAocGFnZVZlcnNpb25LZXkgPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRwYWdlVmVyc2lvbktleSA9IE9iamVjdC5rZXlzKHJlc3BvbnNlLmRhdGFbJ3R5cGVEYXRhJ10pWzBdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0JHNjb3BlLmNvbnRhaW5lciA9IHJlc3BvbnNlLmRhdGFbJ3R5cGVEYXRhJ11bcGFnZVZlcnNpb25LZXldWydjb250ZW50QXNBcnJheSddO1xuXHRcdFx0XHRcdFx0JHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbkFsaWFzID0gcmVzcG9uc2UuZGF0YVsndHlwZURhdGEnXVtwYWdlVmVyc2lvbktleV1bJ3ZlcnNpb25fYWxpYXMnXTtcblx0XHRcdFx0XHRcdCRzY29wZS5jdXJyZW50UGFnZVZlcnNpb24gPSBwYWdlVmVyc2lvbktleTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2Uuc3VjY2VzcyhpMThuUGFyYW0oJ2pzX3BhZ2VfaXRlbV91cGRhdGVfb2snLCB7J3RpdGxlJzogaXRlbUNvcHkudGl0bGV9KSk7XG5cdFx0XHRcdCRzY29wZS5tZW51RGF0YVJlbG9hZCgpO1xuXHRcdFx0XHQkc2NvcGUucmVmcmVzaCgpO1xuXHRcdFx0XHQkc2NvcGUudG9nZ2xlU2V0dGluZ3NPdmVybGF5KCk7XG5cdFx0XHRcdCRzY29wZS5yZXNldCgpO1xuXHRcdFx0fSwgZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhyZXNwb25zZSkge1xuXHRcdFx0XHRhbmd1bGFyLmZvckVhY2gocmVzcG9uc2UuZGF0YSwgZnVuY3Rpb24oaXRlbSkge1xuXHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmVycm9yKGl0ZW0ubWVzc2FnZSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS4kd2F0Y2goJ2l0ZW1Db3B5LmFsaWFzJywgZnVuY3Rpb24obiwgbykge1xuXHRcdFx0aWYgKG4hPW8gJiYgbiE9bnVsbCkge1xuXHRcdFx0XHQkc2NvcGUuaXRlbUNvcHkuYWxpYXMgPSAkZmlsdGVyKCdzbHVnaWZ5Jykobik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHQkc2NvcGUucmVtb3ZlVmVyc2lvbiA9IGZ1bmN0aW9uKHZlcnNpb24pIHtcblx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmNvbmZpcm0oaTE4blBhcmFtKCdqc192ZXJzaW9uX2RlbGV0ZV9jb25maXJtJywge2FsaWFzOiB2ZXJzaW9uLnZlcnNpb25fYWxpYXN9KSwgaTE4blsnY21zYWRtaW5fdmVyc2lvbl9yZW1vdmUnXSwgWyckdG9hc3QnLCAnJGh0dHAnLCBmdW5jdGlvbigkdG9hc3QsICRodHRwKSB7XG5cdFx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2aXRlbS9yZW1vdmUtcGFnZS12ZXJzaW9uJywge3BhZ2VJZCA6IHZlcnNpb24uaWR9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0JHNjb3BlLnJlZnJlc2hGb3JjZSgpO1xuXHRcdFx0XHRcdCR0b2FzdC5jbG9zZSgpO1xuXHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blBhcmFtKCdqc192ZXJzaW9uX2RlbGV0ZV9jb25maXJtX3N1Y2Nlc3MnLCB7YWxpYXM6IHZlcnNpb24udmVyc2lvbl9hbGlhc30pKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XSk7XG5cdFx0fTtcblx0XHRcbiAgICBcdCRzY29wZS5lZGl0VmVyc2lvbkl0ZW07XG4gICAgXHRcbiAgICBcdCRzY29wZS50YWIgPSAxO1xuICAgIFx0XG4gICAgXHQkc2NvcGUuZWRpdFZlcnNpb24gPSBmdW5jdGlvbih2ZXJzaW9uSXRlbSkge1xuICAgIFx0XHQkc2NvcGUuY2hhbmdlVGFiKDQpO1xuICAgIFx0XHQkc2NvcGUuZWRpdFZlcnNpb25JdGVtID0gdmVyc2lvbkl0ZW07XG4gICAgXHR9O1xuXG4gICAgXHQkc2NvcGUuZWRpdFZlcnNpb25VcGRhdGUgPSBmdW5jdGlvbihlZGl0VmVyc2lvbkl0ZW0pIHtcbiAgICBcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtL2NoYW5nZS1wYWdlLXZlcnNpb24tbGF5b3V0JywgeydwYWdlSXRlbUlkJzogZWRpdFZlcnNpb25JdGVtLmlkLCAnbGF5b3V0SWQnOiBlZGl0VmVyc2lvbkl0ZW0ubGF5b3V0X2lkLCAnYWxpYXMnOiBlZGl0VmVyc2lvbkl0ZW0udmVyc2lvbl9hbGlhc30pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICBcdFx0XHQkc2NvcGUucmVmcmVzaEZvcmNlKCk7XG4gICAgXHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2Uuc3VjY2VzcyhpMThuWydqc192ZXJzaW9uX3VwZGF0ZV9zdWNjZXNzJ10pO1xuICAgIFx0XHRcdCRzY29wZS50b2dnbGVTZXR0aW5nc092ZXJsYXkoKTtcblx0XHRcdH0pO1xuICAgIFx0fTtcbiAgICBcdFxuXHRcdCRzY29wZS5nZXRJdGVtID0gZnVuY3Rpb24obGFuZ0lkLCBuYXZJZCkge1xuXHRcdFx0JGh0dHAoe1xuXHRcdFx0ICAgIHVybDogJ2FkbWluL2FwaS1jbXMtbmF2aXRlbS9uYXYtbGFuZy1pdGVtJyxcblx0XHRcdCAgICBtZXRob2Q6IFwiR0VUXCIsXG5cdFx0XHQgICAgcGFyYW1zOiB7IGxhbmdJZCA6IGxhbmdJZCwgbmF2SWQgOiBuYXZJZCB9XG5cdFx0XHR9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdCRzY29wZS5pdGVtID0gcmVzcG9uc2UuZGF0YVsnaXRlbSddO1xuXHRcdFx0XHQkc2NvcGUudHlwZURhdGEgPSByZXNwb25zZS5kYXRhWyd0eXBlRGF0YSddO1xuXHRcdFx0XHQkc2NvcGUuaXNUcmFuc2xhdGVkID0gdHJ1ZTtcblx0XHRcdFx0JHNjb3BlLnJlc2V0KCk7XG5cdFx0XHRcdFxuXHRcdFx0XHRpZiAoIXJlc3BvbnNlLmRhdGFbJ25hdiddLmlzX2RyYWZ0KSB7XG5cdFx0XHRcdFx0JHNjb3BlLk5hdkNvbnRyb2xsZXIuYnViYmxlUGFyZW50cygkc2NvcGUuTmF2Q29udHJvbGxlci5uYXZEYXRhLnBhcmVudF9uYXZfaWQsICRzY29wZS5OYXZDb250cm9sbGVyLm5hdkRhdGEubmF2X2NvbnRhaW5lcl9pZCk7XG5cdFx0XHRcdFx0aWYgKCRzY29wZS5pdGVtLm5hdl9pdGVtX3R5cGUgPT0gMSkge1xuXG5cdFx0XHRcdFx0XHR2YXIgbGFzdFZlcnNpb24gPSBTZXJ2aWNlV29ya2luZ1BhZ2VWZXJzaW9uLmhhc1ZlcnNpb24oJHNjb3BlLml0ZW0uaWQpO1xuXG5cdFx0XHRcdFx0XHRpZiAobGFzdFZlcnNpb24pIHtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLnN3aXRjaFZlcnNpb24obGFzdFZlcnNpb24pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKCRzY29wZS5jdXJyZW50UGFnZVZlcnNpb24gPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdCRzY29wZS5jdXJyZW50UGFnZVZlcnNpb24gPSByZXNwb25zZS5kYXRhLml0ZW0ubmF2X2l0ZW1fdHlwZV9pZDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAocmVzcG9uc2UuZGF0YS5pdGVtLm5hdl9pdGVtX3R5cGVfaWQgaW4gcmVzcG9uc2UuZGF0YS50eXBlRGF0YSkge1xuXHRcdFx0XHRcdFx0XHRcdCRzY29wZS5jdXJyZW50UGFnZVZlcnNpb25BbGlhcyA9ICRzY29wZS5jb250YWluZXIgPSByZXNwb25zZS5kYXRhLnR5cGVEYXRhWyRzY29wZS5jdXJyZW50UGFnZVZlcnNpb25dWyd2ZXJzaW9uX2FsaWFzJ107XG5cdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmNvbnRhaW5lciA9IHJlc3BvbnNlLmRhdGEudHlwZURhdGFbJHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbl1bJ2NvbnRlbnRBc0FycmF5J107XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0JHNjb3BlLmN1cnJlbnRQYWdlVmVyc2lvbiA9IHJlc3BvbnNlLmRhdGEuaXRlbS5uYXZfaXRlbV90eXBlX2lkO1xuXHRcdFx0XHRcdCRzY29wZS5jb250YWluZXIgPSByZXNwb25zZS5kYXRhLnR5cGVEYXRhWyRzY29wZS5jdXJyZW50UGFnZVZlcnNpb25dWydjb250ZW50QXNBcnJheSddO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0JHNjb3BlLmxvYWRlZCA9IHRydWVcblx0XHRcdH0sIGZ1bmN0aW9uKGVycm9yKSB7XG5cdFx0XHRcdC8vIGl0cyBsb2FkZWQsIGJ1dCB0aGUgZGF0YSBkb2VzIG5vdCBleGlzdHMuXG5cdFx0XHRcdCRzY29wZS5sb2FkZWQgPSB0cnVlO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRcblx0XHQkc2NvcGUudmVyc2lvbkRyb3BEb3duVmlzYmlsaXR5ID0gZmFsc2U7XG5cdFx0XG5cdFx0JHNjb3BlLnRvZ2dsZVZlcnNpb25zRHJvcGRvd24gPSBmdW5jdGlvbigpIHtcblx0XHRcdCRzY29wZS52ZXJzaW9uRHJvcERvd25WaXNiaWxpdHkgPSAhJHNjb3BlLnZlcnNpb25Ecm9wRG93blZpc2JpbGl0eTtcblx0XHR9O1xuXHRcdFxuXHRcdCRzY29wZS5zd2l0Y2hWZXJzaW9uID0gZnVuY3Rpb24ocGFnZVZlcnNpb25pZCwgdG9nZ2xlKSB7XG5cdFx0XHRTZXJ2aWNlV29ya2luZ1BhZ2VWZXJzaW9uLnN0b3JlKCRzY29wZS5pdGVtLmlkLCBwYWdlVmVyc2lvbmlkKTtcblx0XHRcdCRzY29wZS5jb250YWluZXIgPSAkc2NvcGUudHlwZURhdGFbcGFnZVZlcnNpb25pZF1bJ2NvbnRlbnRBc0FycmF5J107XG5cdFx0XHQkc2NvcGUuY3VycmVudFBhZ2VWZXJzaW9uQWxpYXMgPSAkc2NvcGUudHlwZURhdGFbcGFnZVZlcnNpb25pZF1bJ3ZlcnNpb25fYWxpYXMnXTtcblx0XHRcdCRzY29wZS5jdXJyZW50UGFnZVZlcnNpb24gPSBwYWdlVmVyc2lvbmlkO1xuXHRcdFx0JHNjb3BlLmxvYWRMaXZlVXJsKCk7XG5cdFx0XHRpZiAodG9nZ2xlKcKge1xuXHRcdFx0XHQkc2NvcGUudG9nZ2xlVmVyc2lvbnNEcm9wZG93bigpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHQkc2NvcGUucmVmcmVzaEZvcmNlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHQkc2NvcGUuZ2V0SXRlbSgkc2NvcGUubGFuZy5pZCwgJHNjb3BlLk5hdkNvbnRyb2xsZXIuaWQpO1xuXHRcdH07XG5cblx0XHQkc2NvcGUucmVmcmVzaCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKEFkbWluTGFuZ1NlcnZpY2UuaXNJblNlbGVjdGlvbigkc2NvcGUubGFuZy5zaG9ydF9jb2RlKSkge1xuXHRcdFx0XHQkc2NvcGUuZ2V0SXRlbSgkc2NvcGUubGFuZy5pZCwgJHNjb3BlLk5hdkNvbnRyb2xsZXIuaWQpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0XG5cdFx0LyogbmV3IHNldHRpbmdzIG92ZXJsYXkgKi9cblx0XHRcblx0XHQkc2NvcGUuc2V0dGluZ3NPdmVybGF5VmlzaWJpbGl0eSA9IHRydWU7XG5cdFx0XG5cdFx0JHNjb3BlLnRvZ2dsZVNldHRpbmdzT3ZlcmxheSA9IGZ1bmN0aW9uKHRhYikge1xuXHRcdFx0JHNjb3BlLnNldHRpbmdzT3ZlcmxheVZpc2liaWxpdHkgPSAhJHNjb3BlLnNldHRpbmdzT3ZlcmxheVZpc2liaWxpdHk7XG5cdFx0XHRpZiAodGFiKSB7XG5cdFx0XHRcdCRzY29wZS50YWIgPSB0YWI7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHRcdCRzY29wZS5jaGFuZ2VUYWIgPSBmdW5jdGlvbih0YWIpIHtcblx0XHRcdCRzY29wZS50YWIgPSB0YWI7XG5cdFx0fVxuXHRcdFxuXHRcdC8qKlxuXHRcdCAqIFJlZnJlc2ggdGhlIGN1cnJlbnQgbGF5b3V0IGNvbnRhaW5lciBibG9ja3MuXG5cdFx0ICogXG5cdFx0ICogQWZ0ZXIgc3VjY2Vzc2Z1bGwgYXBpIHJlc3BvbnNlIGFsbCBjbXMgbGF5b3V0IGFyZSBmb3JlYWNoIGFuZCB0aGUgdmFsdWVzIGFyZSBwYXNzZWQgdG8gcmV2UGxhY2Vob2xkZXJzKCkgbWV0aG9kLlxuXHRcdCAqL1xuXHRcdCRzY29wZS5yZWZyZXNoTmVzdGVkID0gZnVuY3Rpb24ocHJldklkLCBwbGFjZWhvbGRlclZhcikge1xuXHRcdFx0JGh0dHAoe1xuXHRcdFx0XHR1cmwgOiAnYWRtaW4vYXBpLWNtcy1uYXZpdGVtL3JlbG9hZC1wbGFjZWhvbGRlcicsXG5cdFx0XHRcdG1ldGhvZCA6ICdHRVQnLFxuXHRcdFx0XHRwYXJhbXMgOiB7IG5hdkl0ZW1QYWdlSWQgOiAkc2NvcGUuY3VycmVudFBhZ2VWZXJzaW9uLCBwcmV2SWQgOiBwcmV2SWQsIHBsYWNlaG9sZGVyVmFyIDogcGxhY2Vob2xkZXJWYXJ9XG5cdFx0XHR9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFNlcnZpY2VMaXZlRWRpdE1vZGUuY2hhbmdlVXJsKCRzY29wZS5pdGVtLmlkLCAkc2NvcGUuY3VycmVudFBhZ2VWZXJzaW9uKTtcblx0XHRcdFx0YW5ndWxhci5mb3JFYWNoKCRzY29wZS5jb250YWluZXIuX19wbGFjZWhvbGRlcnMsIGZ1bmN0aW9uKHBsYWNlaG9sZGVyKSB7XG5cdFx0XHRcdFx0JHNjb3BlLnJldlBsYWNlaG9sZGVycyhwbGFjZWhvbGRlciwgcHJldklkLCBwbGFjZWhvbGRlclZhciwgcmVzcG9uc2UuZGF0YSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRcblx0XHQvKipcblx0XHQgKiBUaGUgcmV2UGxhY2Vob2xkZXJzIG1ldGhvZCBnb2VzIHRyb3VyZ2ggdGhlIG5ldyByb3cvY29sIChncmlkKSBzeXN0ZW0gY29udGFpbmVyIGpzb24gbGF5b3V0IHdoZXJlOlxuXHRcdCAqIFxuXHRcdCAqIHJvd3NbXVsxXSA9IGNvbCBsZWZ0XG5cdFx0ICogcm93c1tdWzJdID0gY29sIHJpZ2h0XG5cdFx0ICogXG5cdFx0ICogV2hlcmUgYSBsYXlvdXQgaGF2ZSBhdCBsZWFzdCBvbiByb3cgd2hpY2ggY2FuIGhhdmUgY29scyBpbnNpZGUuIFNvIHRoZXJlIHJldlBsYWNlaG9sZGVycyBtZXRob2QgZ29lcyB0cm91Z2ggdGhlIGNvbHNcblx0XHQgKiBhbmQgY2hlY2sgaWYgdGhlIGNvbCBpcyBlcXVhbCB0aGUgZ2l2ZW4gY29sIHRvIHJlcGxhY2UgdGhlIGNvbnRlbnQgd2l0aCAgKGZyb20gcmVmcmVzaE5lc3RlZCBtZXRob2QpLlxuXHRcdCAqL1xuXHRcdCRzY29wZS5yZXZQbGFjZWhvbGRlcnMgPSBmdW5jdGlvbihwbGFjZWhvbGRlcnMsIHByZXZJZCwgcGxhY2Vob2xkZXJWYXIsIHJlcGxhY2VDb250ZW50KSB7XG5cdFx0XHRhbmd1bGFyLmZvckVhY2gocGxhY2Vob2xkZXJzLCBmdW5jdGlvbihwbGFjZWhvbGRlclJvdywgcGxhY2Vob2xkZXJLZXkpIHtcblx0XHRcdFx0aWYgKHBhcnNlSW50KHByZXZJZCkgPT0gcGFyc2VJbnQocGxhY2Vob2xkZXJSb3cucHJldl9pZCkgJiYgcGxhY2Vob2xkZXJWYXIgPT0gcGxhY2Vob2xkZXJSb3dbJ3ZhciddKSB7XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXJzW3BsYWNlaG9sZGVyS2V5XVsnX19uYXZfaXRlbV9wYWdlX2Jsb2NrX2l0ZW1zJ10gPSByZXBsYWNlQ29udGVudDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQkc2NvcGUucmV2RmluZChwbGFjZWhvbGRlclJvdywgcHJldklkLCBwbGFjZWhvbGRlclZhciwgcmVwbGFjZUNvbnRlbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9O1xuXHRcdFxuXHRcdC8qKlxuXHRcdCAqIFRoZSByZXZGaW5kIG1ldGhvZCBkb2VzIHRoZSByZWN1cnNpdiBqb2Igd2l0aGluIGEgYmxvY2sgYW4gcGFzc2VzIHRoZSB2YWx1ZSBiYWNrIHRvIHJldlBsYWNlaG9sZGVycygpLlxuXHRcdCAqL1xuXHRcdCRzY29wZS5yZXZGaW5kID0gZnVuY3Rpb24ocGxhY2Vob2xkZXIsIHByZXZJZCwgcGxhY2Vob2xkZXJWYXIsIHJlcGxhY2VDb250ZW50KSB7XG5cdFx0XHRmb3IgKHZhciBpIGluIHBsYWNlaG9sZGVyWydfX25hdl9pdGVtX3BhZ2VfYmxvY2tfaXRlbXMnXSkge1xuXHRcdFx0XHRmb3IgKHZhciBob2xkZXJLZXkgaW4gcGxhY2Vob2xkZXJbJ19fbmF2X2l0ZW1fcGFnZV9ibG9ja19pdGVtcyddW2ldWydfX3BsYWNlaG9sZGVycyddKSB7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaG9sZGVyIGluIHBsYWNlaG9sZGVyWydfX25hdl9pdGVtX3BhZ2VfYmxvY2tfaXRlbXMnXVtpXVsnX19wbGFjZWhvbGRlcnMnXVtob2xkZXJLZXldKSB7XG5cdFx0XHRcdFx0XHQkc2NvcGUucmV2UGxhY2Vob2xkZXJzKHBsYWNlaG9sZGVyWydfX25hdl9pdGVtX3BhZ2VfYmxvY2tfaXRlbXMnXVtpXVsnX19wbGFjZWhvbGRlcnMnXVtob2xkZXJLZXldLCBwcmV2SWQsIHBsYWNlaG9sZGVyVmFyLCByZXBsYWNlQ29udGVudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRcblx0XHQvKipcblx0XHQgKiBkcm9wcyBpdGVtcyBpbiBhbiBlbXB0eSBwYWdlIHBsYWNlaG9sZGVyIG9mIENNUyBMQVlPVVQgUExBQ0VIT0xERVJcblx0XHQgKi9cblx0XHQkc2NvcGUuZHJvcEl0ZW1QbGFjZWhvbGRlciA9IGZ1bmN0aW9uKGRyYWdnZWQsZHJvcHBlZCxwb3NpdGlvbikge1xuXHRcdFx0aWYgKGRyYWdnZWQuaGFzT3duUHJvcGVydHkoJ2Zhdm9yaXplZCcpIHx8IGRyYWdnZWQuaGFzT3duUHJvcGVydHkoJ25ld2Jsb2NrJykpIHtcblx0XHRcdFx0Ly8gaXRzIGEgbmV3IGJsb2NrXG5cdFx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2aXRlbXBhZ2VibG9ja2l0ZW0vY3JlYXRlJywge1xuXHRcdFx0XHRcdHByZXZfaWQ6IGRyb3BwZWQucHJldl9pZCwgXG5cdFx0XHRcdFx0c29ydF9pbmRleDowLCBcblx0XHRcdFx0XHRibG9ja19pZDogZHJhZ2dlZC5pZCwgXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXJfdmFyIDogZHJvcHBlZFsndmFyJ10sIFxuXHRcdFx0XHRcdG5hdl9pdGVtX3BhZ2VfaWQ6IGRyb3BwZWQubmF2X2l0ZW1fcGFnZV9pZFxuXHRcdFx0XHR9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0JHNjb3BlLnJlZnJlc2hOZXN0ZWQoZHJvcHBlZFsncHJldl9pZCddLCBkcm9wcGVkWyd2YXInXSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmIChkcmFnZ2VkLmhhc093blByb3BlcnR5KCdjb3B5c3RhY2snKSkge1xuXHRcdFx0XHQvLyBpdHMgYSBibG9jayBmcm9tIGNvcHkgc3RhY2tcblx0XHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtYmxvY2svY29weS1ibG9jay1mcm9tLXN0YWNrJywge1xuXHRcdFx0XHRcdGNvcHlCbG9ja0lkOiBkcmFnZ2VkLmlkLFxuXHRcdFx0XHRcdHNvcnRfaW5kZXg6IDAsXG5cdFx0XHRcdFx0cHJldl9pZDogIGRyb3BwZWQucHJldl9pZCxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcl92YXIgOiBkcm9wcGVkWyd2YXInXSwgXG5cdFx0XHRcdFx0bmF2X2l0ZW1fcGFnZV9pZDogZHJvcHBlZC5uYXZfaXRlbV9wYWdlX2lkXG5cdFx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHQkc2NvcGUucmVmcmVzaE5lc3RlZChkcm9wcGVkWydwcmV2X2lkJ10sIGRyb3BwZWRbJ3ZhciddKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBtb3ZpbmcgYW4gZXhpc3RpbmcgYmxvY2tcblx0XHRcdFx0JGh0dHAucHV0KCdhZG1pbi9hcGktY21zLW5hdml0ZW1wYWdlYmxvY2tpdGVtL3VwZGF0ZT9pZD0nICsgZHJhZ2dlZC5pZCwge1xuXHRcdFx0XHRcdHNvcnRfaW5kZXg6IDAsXG5cdFx0XHRcdFx0cHJldl9pZDogIGRyb3BwZWQucHJldl9pZCxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcl92YXIgOiBkcm9wcGVkWyd2YXInXSwgXG5cdFx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHQkc2NvcGUucmVmcmVzaEZvcmNlKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0fTtcblx0XHRcblx0XHQkc2NvcGUucmVmcmVzaCgpO1xuXHR9XSk7XG5cblx0LyoqXG5cdCAqIEBwYXJhbSAkc2NvcGUuYmxvY2sgRnJvbSBuZy1yZXBlYXQgc2NvcGUgYXNzaWdubWVudFxuXHQgKi9cblx0emFhLmNvbnRyb2xsZXIoXCJQYWdlQmxvY2tFZGl0Q29udHJvbGxlclwiLCBbXG5cdFx0JyRzY29wZScsICckc2NlJywgJyRodHRwJywgJ0FkbWluQ2xhc3NTZXJ2aWNlJywgJ0FkbWluVG9hc3RTZXJ2aWNlJywgJ1NlcnZpY2VCbG9ja0NvcHlTdGFjaycsICdTZXJ2aWNlTGl2ZUVkaXRNb2RlJyxcblx0XHRmdW5jdGlvbigkc2NvcGUsICRzY2UsICRodHRwLCBBZG1pbkNsYXNzU2VydmljZSwgQWRtaW5Ub2FzdFNlcnZpY2UsIFNlcnZpY2VCbG9ja0NvcHlTdGFjaywgU2VydmljZUxpdmVFZGl0TW9kZSkge1xuXG5cdFx0JHNjb3BlLk5hdkl0ZW1UeXBlUGFnZUNvbnRyb2xsZXIgPSAkc2NvcGUuJHBhcmVudDtcblxuXHRcdC8qKlxuXHRcdCAqIGRyb3BzIGFuIGl0ZW0gaW4gYW4gZW1wdHkgcGxhY2Vob2xkZXIgb2YgYSBCTE9DS1xuXHRcdCAqL1xuXHRcdCRzY29wZS5kcm9wSXRlbVBsYWNlaG9sZGVyID0gZnVuY3Rpb24oZHJhZ2dlZCxkcm9wcGVkLHBvc2l0aW9uKSB7XG5cdFx0XHRpZiAoZHJhZ2dlZC5oYXNPd25Qcm9wZXJ0eSgnZmF2b3JpemVkJykgfHwgZHJhZ2dlZC5oYXNPd25Qcm9wZXJ0eSgnbmV3YmxvY2snKSkge1xuXHRcdFx0XHQvLyBpdHMgYSBuZXcgYmxvY2tcblx0XHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtcGFnZWJsb2NraXRlbS9jcmVhdGUnLCB7XG5cdFx0XHRcdFx0cHJldl9pZCA6IGRyb3BwZWQucHJldl9pZCxcblx0XHRcdFx0XHRzb3J0X2luZGV4OjAsIFxuXHRcdFx0XHRcdGJsb2NrX2lkIDogZHJhZ2dlZC5pZCxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcl92YXIgOiBkcm9wcGVkLnZhcixcblx0XHRcdFx0XHRuYXZfaXRlbV9wYWdlX2lkIDogZHJvcHBlZC5uYXZfaXRlbV9wYWdlX2lkXG5cdFx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHQkc2NvcGUuTmF2SXRlbVR5cGVQYWdlQ29udHJvbGxlci5yZWZyZXNoTmVzdGVkKGRyb3BwZWQucHJldl9pZCwgZHJvcHBlZC52YXIpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSBpZiAoZHJhZ2dlZC5oYXNPd25Qcm9wZXJ0eSgnY29weXN0YWNrJykpIHtcblx0XHRcdFx0Ly8gaXRzIGEgYmxvY2sgZnJvbSBjb3B5IHN0YWNrXG5cdFx0XHRcdCRodHRwLnBvc3QoJ2FkbWluL2FwaS1jbXMtbmF2aXRlbWJsb2NrL2NvcHktYmxvY2stZnJvbS1zdGFjaycsIHtcblx0XHRcdFx0XHRjb3B5QmxvY2tJZDogZHJhZ2dlZC5pZCxcblx0XHRcdFx0XHRzb3J0X2luZGV4OiAwLFxuXHRcdFx0XHRcdHByZXZfaWQ6ICBkcm9wcGVkLnByZXZfaWQsXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXJfdmFyIDogZHJvcHBlZC52YXIsXG5cdFx0XHRcdFx0bmF2X2l0ZW1fcGFnZV9pZCA6IGRyb3BwZWQubmF2X2l0ZW1fcGFnZV9pZFxuXHRcdFx0XHR9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0JHNjb3BlLk5hdkl0ZW1UeXBlUGFnZUNvbnRyb2xsZXIucmVmcmVzaE5lc3RlZCgkc2NvcGUucGxhY2Vob2xkZXIucHJldl9pZCwgJHNjb3BlLnBsYWNlaG9sZGVyLnZhcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gbW92aW5nIGFuIGV4aXN0aW5nIGJsb2NrXG5cdFx0XHRcdCRodHRwLnB1dCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtcGFnZWJsb2NraXRlbS91cGRhdGU/aWQ9JyArIGRyYWdnZWQuaWQsIHtcblx0XHRcdFx0XHRzb3J0X2luZGV4OiAwLFxuXHRcdFx0XHRcdHByZXZfaWQ6ICBkcm9wcGVkLnByZXZfaWQsXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXJfdmFyIDogZHJvcHBlZC52YXIsXG5cdFx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHQkc2NvcGUucmVmcmVzaEZvcmNlKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0XG5cdFx0LyoqXG5cdFx0ICogRHJvcHMgYSBibG9jayBhYm92ZS9iZWxvdyBhbiBFWElTVElORyBCTE9DS1xuXHRcdCAqL1xuXHRcdCRzY29wZS5kcm9wSXRlbSA9IGZ1bmN0aW9uKGRyYWdnZWQsZHJvcHBlZCxwb3NpdGlvbixlbGVtZW50KSB7XG5cdFx0XHR2YXIgc29ydEluZGV4ID0gJHNjb3BlLiRpbmRleDtcblx0XHRcdFxuXHRcdFx0aWYgKHBvc2l0aW9uID09ICdib3R0b20nKSB7XG5cdFx0XHRcdHNvcnRJbmRleCA9IHNvcnRJbmRleCArIDE7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdGlmIChkcmFnZ2VkLmhhc093blByb3BlcnR5KCdmYXZvcml6ZWQnKSB8fCBkcmFnZ2VkLmhhc093blByb3BlcnR5KCduZXdibG9jaycpKSB7XG5cdFx0XHRcdC8vIGl0cyBhIG5ldyBibG9ja1xuXHRcdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLW5hdml0ZW1wYWdlYmxvY2tpdGVtL2NyZWF0ZScsIHsgXG5cdFx0XHRcdFx0cHJldl9pZDogJHNjb3BlLnBsYWNlaG9sZGVyLnByZXZfaWQsXG5cdFx0XHRcdFx0c29ydF9pbmRleDogc29ydEluZGV4LCBcblx0XHRcdFx0XHRibG9ja19pZDogZHJhZ2dlZC5pZCwgXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXJfdmFyOiAkc2NvcGUucGxhY2Vob2xkZXJbJ3ZhciddLCBcblx0XHRcdFx0XHRuYXZfaXRlbV9wYWdlX2lkOiAkc2NvcGUucGxhY2Vob2xkZXIubmF2X2l0ZW1fcGFnZV9pZFxuXHRcdFx0XHR9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0JHNjb3BlLk5hdkl0ZW1UeXBlUGFnZUNvbnRyb2xsZXIucmVmcmVzaE5lc3RlZCgkc2NvcGUucGxhY2Vob2xkZXIucHJldl9pZCwgJHNjb3BlLnBsYWNlaG9sZGVyLnZhcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmIChkcmFnZ2VkLmhhc093blByb3BlcnR5KCdjb3B5c3RhY2snKSkge1xuXHRcdFx0XHQvLyBpdHMgYSBibG9jayBmcm9tIGNvcHkgc3RhY2tcblx0XHRcdFx0JGh0dHAucG9zdCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtYmxvY2svY29weS1ibG9jay1mcm9tLXN0YWNrJywge1xuXHRcdFx0XHRcdGNvcHlCbG9ja0lkOiBkcmFnZ2VkLmlkLFxuXHRcdFx0XHRcdHNvcnRfaW5kZXg6IHNvcnRJbmRleCxcblx0XHRcdFx0XHRwcmV2X2lkOiAkc2NvcGUucGxhY2Vob2xkZXIucHJldl9pZCxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcl92YXI6ICRzY29wZS5wbGFjZWhvbGRlclsndmFyJ10sXG5cdFx0XHRcdFx0bmF2X2l0ZW1fcGFnZV9pZDogJHNjb3BlLnBsYWNlaG9sZGVyLm5hdl9pdGVtX3BhZ2VfaWRcblx0XHRcdFx0fSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdCRzY29wZS5OYXZJdGVtVHlwZVBhZ2VDb250cm9sbGVyLnJlZnJlc2hOZXN0ZWQoJHNjb3BlLnBsYWNlaG9sZGVyLnByZXZfaWQsICRzY29wZS5wbGFjZWhvbGRlci52YXIpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIG1vdmluZyBhbiBleGlzdGluZyBibG9ja1xuXHRcdFx0XHQkaHR0cC5wdXQoJ2FkbWluL2FwaS1jbXMtbmF2aXRlbXBhZ2VibG9ja2l0ZW0vdXBkYXRlP2lkPScgKyBkcmFnZ2VkLmlkLCB7XG5cdFx0XHRcdFx0cHJldl9pZDogJHNjb3BlLnBsYWNlaG9sZGVyLnByZXZfaWQsXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXJfdmFyOiAkc2NvcGUucGxhY2Vob2xkZXJbJ3ZhciddLFxuXHRcdFx0XHRcdHNvcnRfaW5kZXg6IHNvcnRJbmRleFxuXHRcdFx0XHR9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0Lypcblx0XHRcdFx0XHQgKiBAaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9sdXlhZGV2L2x1eWEvaXNzdWVzLzE2Mjlcblx0XHRcdFx0XHQgKiBUaGUgbW92ZWQgYmxvY2ssIHNob3VsZCByZW1vdmVkIGZyb20gdGhlIHByZXZpb3VzIGFycmF5LiBUaGlzIGlzIG9ubHkgdGhlIGNhc2Ugd2hlbiBkcmFnZ2luZyBmcm9tIGFuIE9VVEVSIGJsb2NrIGludG8gYW4gSU5ORVIgYmxvY2tcblx0XHRcdFx0XHQgKiBpcyB0aGlzIHdpbGwgbm90IHJlZnJlc2ggdGhlIE9VVEVSIGJsb2NrLCBidXQgYWx3YXlzIHdpbGwgaW4gdGhlIG9wcG9zaXRlIHdheS5cblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHRhbmd1bGFyLmVsZW1lbnQoZWxlbWVudCkucmVtb3ZlKCk7XG5cdFx0XHRcdFx0Ly8gYXMgdGhlIGJsb2NrIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBleGlzdGluZywgcmVmcmVzaCB0aGUgbmV3IHBsYWNlaG9sZGVyLlxuXHRcdFx0XHRcdCRzY29wZS5OYXZJdGVtVHlwZVBhZ2VDb250cm9sbGVyLnJlZnJlc2hOZXN0ZWQoJHNjb3BlLnBsYWNlaG9sZGVyLnByZXZfaWQsICRzY29wZS5wbGFjZWhvbGRlci52YXIpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdFxuXHRcdCRzY29wZS5jb3B5QmxvY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdFNlcnZpY2VCbG9ja0NvcHlTdGFjay5wdXNoKCRzY29wZS5ibG9jayk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS50b2dnbGVIaWRkZW4gPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICgkc2NvcGUuYmxvY2suaXNfaGlkZGVuID09IDApIHtcblx0XHRcdFx0JHNjb3BlLmJsb2NrLmlzX2hpZGRlbiA9IDE7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQkc2NvcGUuYmxvY2suaXNfaGlkZGVuID0gMDtcblx0XHRcdH1cblxuXHRcdFx0JGh0dHAoe1xuXHRcdFx0ICAgIHVybDogJ2FkbWluL2FwaS1jbXMtbmF2aXRlbS90b2dnbGUtYmxvY2staGlkZGVuJyxcblx0XHRcdCAgICBtZXRob2Q6IFwiR0VUXCIsXG5cdFx0XHQgICAgcGFyYW1zOiB7IGJsb2NrSWQgOiAkc2NvcGUuYmxvY2suaWQsIGhpZGRlblN0YXRlOiAkc2NvcGUuYmxvY2suaXNfaGlkZGVuIH1cblx0XHRcdH0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0LyogbG9hZCBsaXZlIHVybCBvbiBoaWRkZW4gdHJpZ2dlciAqL1xuXHRcdFx0XHQkc2NvcGUuTmF2SXRlbVR5cGVQYWdlQ29udHJvbGxlci4kcGFyZW50LiRwYXJlbnQubG9hZExpdmVVcmwoKTtcblx0XHRcdFx0Ly8gc3VjY2Vzc2Z1bGwgdG9nZ2xlIGhpZGRlbiBzdGF0ZSBvZiBibG9ja1xuXHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5pbmZvKGkxOG5QYXJhbSgnanNfcGFnZV9ibG9ja192aXNiaWxpdHlfY2hhbmdlJywge25hbWU6ICRzY29wZS5ibG9jay5uYW1lfSkpO1xuXHRcdFx0fSk7XG5cdFx0fTtcblxuICAgICAgICAkc2NvcGUuaXNFZGl0YWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiAkc2NvcGUuYmxvY2sudmFycyAhPSBcInVuZGVmaW5lZFwiICYmICRzY29wZS5ibG9jay52YXJzLmxlbmd0aCA+IDA7XG4gICAgICAgIH07XG5cbiAgICAgICAgJHNjb3BlLmlzQ29uZmlndXJhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mICRzY29wZS5ibG9jay5jZmdzICE9IFwidW5kZWZpbmVkXCIgJiYgJHNjb3BlLmJsb2NrLmNmZ3MubGVuZ3RoID4gMDtcbiAgICAgICAgfTtcblx0XHRcblx0XHRcblx0XHQkc2NvcGUuJHdhdGNoKGZ1bmN0aW9uKCkgeyByZXR1cm4gJHNjb3BlLmJsb2NrLnZhbHVlcyB9LCBmdW5jdGlvbihuLCBvKSB7XG5cdFx0XHQkc2NvcGUuZGF0YSA9IG47XG5cdFx0fSk7XG5cblx0XHQkc2NvcGUuJHdhdGNoKGZ1bmN0aW9uKCkgeyByZXR1cm4gJHNjb3BlLmJsb2NrLnZhcmlhdGlvbiB9LCBmdW5jdGlvbihuLCBvKSB7XG5cdFx0XHQkc2NvcGUuZXZhbFZhcmlhdGlvblZpc2JpbGl0eShuKTtcblx0XHR9KTtcblx0XHRcblx0XHQkc2NvcGUuZ2V0SW5mbyA9IGZ1bmN0aW9uKHZhckZpZWxkTmFtZSkge1xuXHRcdFx0aWYgKCRzY29wZS5ibG9jay5maWVsZF9oZWxwLmhhc093blByb3BlcnR5KHZhckZpZWxkTmFtZSkpIHtcblx0XHRcdFx0cmV0dXJuICRzY29wZS5ibG9jay5maWVsZF9oZWxwW3ZhckZpZWxkTmFtZV07XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQkc2NvcGUuZXZhbFZhcmlhdGlvblZpc2JpbGl0eSA9IGZ1bmN0aW9uKHZhcmlhdGVuTmFtZSkge1xuXHRcdFx0aWYgKCRzY29wZS5ibG9jay52YXJpYXRpb25zLmhhc093blByb3BlcnR5KHZhcmlhdGVuTmFtZSkpIHtcblx0XHRcdFx0dmFyIHZhcmlhdGlvbiA9ICRzY29wZS5ibG9jay52YXJpYXRpb25zWyRzY29wZS5ibG9jay52YXJpYXRpb25dO1xuXHRcdFx0XHRhbmd1bGFyLmZvckVhY2godmFyaWF0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG5cdFx0XHRcdFx0aWYgKGFuZ3VsYXIuaXNPYmplY3QodmFsdWUpKSB7XG5cdFx0XHRcdFx0XHRhbmd1bGFyLmZvckVhY2godmFsdWUsIGZ1bmN0aW9uKHYsIGspIHtcblx0XHRcdFx0XHRcdFx0YW5ndWxhci5mb3JFYWNoKCRzY29wZS5ibG9ja1trZXldLCBmdW5jdGlvbihvYmplY3QpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoayA9PSBvYmplY3QudmFyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3QuaW52aXNpYmxlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YW5ndWxhci5mb3JFYWNoKCRzY29wZS5ibG9jay5jZmdzLCBmdW5jdGlvbihvYmplY3QpIHtcblx0XHRcdFx0XHRvYmplY3QuaW52aXNpYmxlID0gZmFsc2U7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhbmd1bGFyLmZvckVhY2goJHNjb3BlLmJsb2NrLnZhcnMsIGZ1bmN0aW9uKG9iamVjdCkge1xuXHRcdFx0XHRcdG9iamVjdC5pbnZpc2libGUgPSBmYWxzZTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdCRzY29wZS5jZmdkYXRhID0gJHNjb3BlLmJsb2NrLmNmZ3ZhbHVlcyB8fCB7fTtcblxuXHRcdCRzY29wZS5lZGl0ID0gZmFsc2U7XG5cdFx0XG5cdFx0JHNjb3BlLm1vZGFsSGlkZGVuID0gdHJ1ZTtcblxuXHRcdCRzY29wZS5tb2RhbE1vZGUgPSAxO1xuXG5cdFx0JHNjb3BlLmluaXRNb2RhbE1vZGUgPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICgkc2NvcGUuYmxvY2sudmFycy5sZW5ndGggID09IDApIHtcblx0XHRcdFx0JHNjb3BlLm1vZGFsTW9kZSA9IDI7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdCRzY29wZS50b2dnbGVFZGl0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoJHNjb3BlLmlzRWRpdGFibGUoKSB8fCAkc2NvcGUuaXNDb25maWd1cmFibGUoKSkge1xuXHRcdFx0XHQkc2NvcGUubW9kYWxIaWRkZW4gPSAhJHNjb3BlLm1vZGFsSGlkZGVuO1xuXHRcdFx0XHQkc2NvcGUuZWRpdCA9ICEkc2NvcGUuZWRpdDtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0JHNjb3BlLnJlbmRlclRlbXBsYXRlID0gZnVuY3Rpb24odGVtcGxhdGUsIGRhdGFWYXJzLCBjZmdWYXJzLCBibG9jaywgZXh0cmFzKSB7XG5cdFx0XHRpZiAodGVtcGxhdGUgPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHJldHVybiAnJztcblx0XHRcdH1cblx0XHRcdHZhciB0ZW1wbGF0ZSA9IFR3aWcudHdpZyh7XG5cdFx0XHQgICAgZGF0YTogdGVtcGxhdGVcblx0XHRcdH0pO1xuXG5cdFx0XHR2YXIgY29udGVudCA9IHRlbXBsYXRlLnJlbmRlcih7XG5cdFx0XHRcdHZhcnMgOiBkYXRhVmFycyxcblx0XHRcdFx0Y2ZncyA6IGNmZ1ZhcnMsXG5cdFx0XHRcdGJsb2NrIDogYmxvY2ssXG5cdFx0XHRcdGV4dHJhcyA6IGV4dHJhc1xuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiAkc2NlLnRydXN0QXNIdG1sKGNvbnRlbnQpO1xuXHRcdH07XG5cblx0XHQkc2NvcGUucmVtb3ZlQmxvY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmNvbmZpcm0oaTE4blBhcmFtKCdqc19wYWdlX2Jsb2NrX2RlbGV0ZV9jb25maXJtJywge25hbWU6ICRzY29wZS5ibG9jay5uYW1lfSksIGkxOG5bJ3ZpZXdfdXBkYXRlX2Jsb2NrX3Rvb2x0aXBfZGVsZXRlJ10sIFsnJHRvYXN0JywgZnVuY3Rpb24oJHRvYXN0KSB7XG5cdFx0XHRcdCRodHRwLmRlbGV0ZSgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtcGFnZWJsb2NraXRlbS9kZWxldGU/aWQ9JyArICRzY29wZS5ibG9jay5pZCkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdCRzY29wZS5OYXZJdGVtVHlwZVBhZ2VDb250cm9sbGVyLnJlZnJlc2hOZXN0ZWQoJHNjb3BlLnBsYWNlaG9sZGVyLnByZXZfaWQsICRzY29wZS5wbGFjZWhvbGRlci52YXIpO1xuXHRcdFx0XHRcdCRzY29wZS5OYXZJdGVtVHlwZVBhZ2VDb250cm9sbGVyLmxvYWRMaXZlVXJsKCk7XG5cdFx0XHRcdFx0JHRvYXN0LmNsb3NlKCk7XG5cdFx0XHRcdFx0QWRtaW5Ub2FzdFNlcnZpY2Uuc3VjY2VzcyhpMThuUGFyYW0oJ2pzX3BhZ2VfYmxvY2tfcmVtb3ZlX29rJywge25hbWU6ICRzY29wZS5ibG9jay5uYW1lfSkpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1dKTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLmlzQW55UmVxdWlyZWRBdHRyaWJ1dGVFbXB0eSA9ICBmdW5jdGlvbigpIHtcblxuXHRcdFx0dmFyIHJlc3BvbnNlID0gZmFsc2U7XG5cdFx0XHRhbmd1bGFyLmZvckVhY2goJHNjb3BlLmJsb2NrLnZhcnMsIGZ1bmN0aW9uKHZhckl0ZW0pIHtcblx0XHRcdFx0aWYgKHZhckl0ZW0ucmVxdWlyZWQgJiYgJHNjb3BlLmlzRW1wdHkoJHNjb3BlLmRhdGEsIHZhckl0ZW0udmFyKSkge1xuXHRcdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLmVycm9yKGkxOG5QYXJhbSgnanNfYmxvY2tfYXR0cmlidXRlX2VtcHR5Jywge2xhYmVsOiB2YXJJdGVtLmxhYmVsfSkpO1xuXHRcdFx0XHRcdHJlc3BvbnNlID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuYmxvY2suY2ZncywgZnVuY3Rpb24odmFySXRlbSkge1xuXG5cdFx0XHRcdGlmICh2YXJJdGVtLnJlcXVpcmVkICYmICRzY29wZS5pc0VtcHR5KCRzY29wZS5jZmdkYXRhLCB2YXJJdGVtLnZhcikpIHtcblx0XHRcdFx0XHRBZG1pblRvYXN0U2VydmljZS5lcnJvcihpMThuUGFyYW0oJ2pzX2Jsb2NrX2F0dHJpYnV0ZV9lbXB0eScsIHtsYWJlbDogdmFySXRlbS5sYWJlbH0pKTtcblx0XHRcdFx0XHRyZXNwb25zZSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gcmVzcG9uc2U7XG5cdFx0fTtcblxuXHRcdCRzY29wZS5pc0VtcHR5ID0gZnVuY3Rpb24odmFsdWVzLCBrZXkpIHtcblx0XHRcdGlmICh2YWx1ZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiB2YWx1ZXNba2V5XSkge1xuXHRcdFx0XHRpZiAodmFsdWVzW2tleV0ubGVuZ3RoID09IDApIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLnNhdmUgPSBmdW5jdGlvbiAoKSB7XG5cblx0XHRcdGlmICgkc2NvcGUuaXNBbnlSZXF1aXJlZEF0dHJpYnV0ZUVtcHR5KCkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cblx0XHRcdCRodHRwLnB1dCgnYWRtaW4vYXBpLWNtcy1uYXZpdGVtcGFnZWJsb2NraXRlbS91cGRhdGU/aWQ9JyArICRzY29wZS5ibG9jay5pZCwge1xuXHRcdFx0XHRqc29uX2NvbmZpZ192YWx1ZXM6ICRzY29wZS5kYXRhLFxuXHRcdFx0XHRqc29uX2NvbmZpZ19jZmdfdmFsdWVzOiAkc2NvcGUuY2ZnZGF0YSxcblx0XHRcdFx0dmFyaWF0aW9uOiAkc2NvcGUuYmxvY2sudmFyaWF0aW9uXG5cdFx0XHR9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdEFkbWluVG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoaTE4blBhcmFtKCdqc19wYWdlX2Jsb2NrX3VwZGF0ZV9vaycsIHtuYW1lOiAkc2NvcGUuYmxvY2submFtZX0pKTtcblx0XHRcdFx0JHNjb3BlLnRvZ2dsZUVkaXQoKTtcblx0XHRcdFx0JHNjb3BlLmJsb2NrLmlzX2RpcnR5ID0gMTtcblx0XHRcdFx0JHNjb3BlLmJsb2NrID0gYW5ndWxhci5jb3B5KHJlc3BvbnNlLmRhdGEub2JqZWN0ZGV0YWlsKTtcblx0XHRcdFx0JHNjb3BlLk5hdkl0ZW1UeXBlUGFnZUNvbnRyb2xsZXIubG9hZExpdmVVcmwoKTtcblx0XHRcdFx0JHNjb3BlLmV2YWxWYXJpYXRpb25WaXNiaWxpdHkoJHNjb3BlLmJsb2NrLnZhcmlhdGlvbik7XG5cdFx0XHR9KTtcblx0XHR9O1xuXHR9XSk7XG5cblx0emFhLmNvbnRyb2xsZXIoXCJEcm9wcGFibGVCbG9ja3NDb250cm9sbGVyXCIsIFsnJHNjb3BlJywgJyRodHRwJywgJ0FkbWluQ2xhc3NTZXJ2aWNlJywgJ1NlcnZpY2VCbG9ja3NEYXRhJywgJ1NlcnZpY2VCbG9ja0NvcHlTdGFjaycsIGZ1bmN0aW9uKCRzY29wZSwgJGh0dHAsIEFkbWluQ2xhc3NTZXJ2aWNlLCBTZXJ2aWNlQmxvY2tzRGF0YSwgU2VydmljZUJsb2NrQ29weVN0YWNrKSB7XG5cblx0XHQvKiBzZXJ2aWNlIFNlcnZpY2VCbG9ja3NEYXRhIGluaGVyaXRhbmNlICovXG5cblx0XHQkc2NvcGUuYmxvY2tzRGF0YSA9IFNlcnZpY2VCbG9ja3NEYXRhLmRhdGE7XG5cblx0XHQkc2NvcGUuYmxvY2tzRGF0YVJlc3RvcmUgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLmJsb2Nrc0RhdGEpO1xuXG5cdFx0JHNjb3BlLiRvbignc2VydmljZTpCbG9ja3NEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcblx0XHRcdCRzY29wZS5ibG9ja3NEYXRhID0gZGF0YTtcblx0XHR9KTtcblxuXHRcdCRzY29wZS5ibG9ja3NEYXRhUmVsb2FkID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gU2VydmljZUJsb2Nrc0RhdGEubG9hZCh0cnVlKTtcblx0XHR9XG5cblx0XHQkc2NvcGUuYWRkVG9GYXYgPSBmdW5jdGlvbihpdGVtKSB7XG5cdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLWJsb2NrL3RvLWZhdicsIHtibG9jazogaXRlbSB9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG5cdFx0XHRcdCRzY29wZS5ibG9ja3NEYXRhUmVsb2FkKCk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0JHNjb3BlLnJlbW92ZUZyb21GYXYgPSBmdW5jdGlvbihpdGVtKSB7XG5cdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLWJsb2NrL3JlbW92ZS1mYXYnLCB7YmxvY2s6IGl0ZW0gfSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHQkc2NvcGUuYmxvY2tzRGF0YVJlbG9hZCgpO1xuXHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS50b2dnbGVHcm91cCA9IGZ1bmN0aW9uKGdyb3VwKSB7XG5cdFx0XHRpZiAoZ3JvdXAudG9nZ2xlX29wZW4gPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGdyb3VwLnRvZ2dsZV9vcGVuID0gMTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGdyb3VwLnRvZ2dsZV9vcGVuID0gIWdyb3VwLnRvZ2dsZV9vcGVuO1xuXHRcdFx0fVxuXG5cdFx0XHQkaHR0cC5wb3N0KCdhZG1pbi9hcGktY21zLWJsb2NrL3RvZ2dsZS1ncm91cCcsIHtncm91cDogZ3JvdXB9LCB7aWdub3JlTG9hZGluZ0JhcjogdHJ1ZX0pO1xuXHRcdH07XG5cblx0XHQkc2NvcGUuaXNQcmV2aWV3RW5hYmxlZCA9IGZ1bmN0aW9uKGl0ZW0pIHtcblx0XHRcdHJldHVybiBpdGVtLnByZXZpZXdfZW5hYmxlZDtcblx0XHR9O1xuXG5cdFx0Ly8gY29udHJvbGxlciBsb2dpY1xuXG5cdFx0JHNjb3BlLmNvcHlTdGFjayA9IFNlcnZpY2VCbG9ja0NvcHlTdGFjay5zdGFjaztcblxuXHRcdCRzY29wZS4kb24oJ3NlcnZpY2U6Q29weVN0YWNrJywgZnVuY3Rpb24oZXZlbnQsIHN0YWNrKSB7XG5cdFx0XHQkc2NvcGUuY29weVN0YWNrID0gc3RhY2s7XG5cdFx0fSk7XG5cblx0XHQkc2NvcGUuY2xlYXJTdGFjayA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0U2VydmljZUJsb2NrQ29weVN0YWNrLmNsZWFyKCk7XG5cdFx0fTtcblxuXHRcdCRzY29wZS5zZWFyY2hRdWVyeSA9ICcnO1xuXG5cdFx0JHNjb3BlLnNlYXJjaElzRGlydHkgPSBmYWxzZTtcblxuXHRcdCRzY29wZS4kd2F0Y2goJ3NlYXJjaFF1ZXJ5JywgZnVuY3Rpb24obiwgbykge1xuXHRcdFx0aWYgKG4gIT09ICcnKSB7XG5cdFx0XHRcdCRzY29wZS5zZWFyY2hJc0RpcnR5ID0gdHJ1ZTtcblx0XHRcdFx0YW5ndWxhci5mb3JFYWNoKCRzY29wZS5ibG9ja3NEYXRhLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG5cdFx0XHRcdFx0aWYgKHZhbHVlLmdyb3VwLmlzX2Zhdikge1xuXHRcdFx0XHRcdFx0JHNjb3BlLmJsb2Nrc0RhdGEuc3BsaWNlKGtleSwgMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhbHVlLmdyb3VwLnRvZ2dsZV9vcGVuID0gMVxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSBpZigkc2NvcGUuc2VhcmNoSXNEaXJ0eSkge1xuXHRcdFx0XHQkc2NvcGUuYmxvY2tzRGF0YSA9IGFuZ3VsYXIuY29weSgkc2NvcGUuYmxvY2tzRGF0YVJlc3RvcmUpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XSk7XG59KSgpOyIsIi8qKlxuICogYWxsIGdsb2JhbCBhZG1pbiBzZXJ2aWNlc1xuICogXG4gKiBjb250cm9sbGVyIHJlc29sdmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb2hucGFwYS9hbmd1bGFyLXN0eWxlZ3VpZGUjc3R5bGUteTA4MFxuICogXG4gKiBTZXJ2aWNlIEluaGVyaXRhbmNlOlxuICogXG4gKiAxLiBTZXJ2aWNlIG11c3QgYmUgcHJlZml4IHdpdGggU2VydmljZVxuICogMi4gU2VydmljZSBtdXN0IGNvbnRhaW4gYSBmb3JjZVJlbG9hZCBzdGF0ZVxuICogMy4gU2VydmljZSBtdXN0IGJyb2FkY2FzdCBhbiBldmVudCAnc2VydmljZTpGb2xkZXJzRGF0YSdcbiAqIDQuIENvbnRyb2xsZXIgaW50ZWdyYXRpb24gbXVzdCBsb29rIGxpa2VcbiAqIFxuICogYGBgXG4gKiAkc2NvcGUuZm9sZGVyc0RhdGEgPSBTZXJ2aWNlRm9sZGVyc0RhdGEuZGF0YTtcbiAqXHRcdFx0XHRcbiAqICRzY29wZS4kb24oJ3NlcnZpY2U6Rm9sZGVyc0RhdGEnLCBmdW5jdGlvbihldmVudCwgZGF0YSkge1xuICogICAgICAkc2NvcGUuZm9sZGVyc0RhdGEgPSBkYXRhO1xuICogfSk7XG4gKlx0XHRcdFx0XG4gKiAkc2NvcGUuZm9sZGVyc0RhdGFSZWxvYWQgPSBmdW5jdGlvbigpIHtcbiAqICAgICByZXR1cm4gU2VydmljZUZvbGRlcnNEYXRhLmxvYWQodHJ1ZSk7XG4gKiB9XG4gKiBgYGBcbiAqIFxuICovXG5cdFxuemFhLmNvbmZpZyhbJ3Jlc29sdmVyUHJvdmlkZXInLCBmdW5jdGlvbihyZXNvbHZlclByb3ZpZGVyKSB7XG5cdHJlc29sdmVyUHJvdmlkZXIuYWRkQ2FsbGJhY2soWydTZXJ2aWNlTWVudURhdGEnLCAnU2VydmljZUJsb2Nrc0RhdGEnLCAnU2VydmljZUxheW91dHNEYXRhJywgJ1NlcnZpY2VDdXJyZW50V2Vic2l0ZScsICdMdXlhTG9hZGluZycsIGZ1bmN0aW9uKFNlcnZpY2VNZW51RGF0YSwgU2VydmljZUJsb2Nrc0RhdGEsIFNlcnZpY2VMYXlvdXRzRGF0YSwgU2VydmljZUN1cnJlbnRXZWJzaXRlLCBMdXlhTG9hZGluZykge1xuXHRcdEx1eWFMb2FkaW5nLnN0YXJ0KCk7XG5cdFx0U2VydmljZUJsb2Nrc0RhdGEubG9hZCgpO1xuXHRcdFNlcnZpY2VMYXlvdXRzRGF0YS5sb2FkKCk7XG5cdFx0U2VydmljZU1lbnVEYXRhLmxvYWQoKS50aGVuKGZ1bmN0aW9uKCkge1xuXHRcdFx0U2VydmljZUN1cnJlbnRXZWJzaXRlLmxvYWQoKTtcblx0XHRcdEx1eWFMb2FkaW5nLnN0b3AoKTtcblx0XHR9KTtcblx0fV0pO1xufV0pO1xuXG5cbi8qKlxuICogQ29weSBCbG9jayBTdGFjayBzZXJ2aWNlLlxuICovXG56YWEuZmFjdG9yeShcIlNlcnZpY2VCbG9ja0NvcHlTdGFja1wiLCBbJyRyb290U2NvcGUnLCBmdW5jdGlvbigkcm9vdFNjb3BlKSB7XG5cdHZhciBzZXJ2aWNlID0gW107XG5cdFxuXHRzZXJ2aWNlLnN0YWNrID0gW107XG5cdFxuXHRzZXJ2aWNlLmNsZWFyID0gZnVuY3Rpb24oKSB7XG5cdFx0c2VydmljZS5zdGFjayA9IFtdO1xuXHRcdCRyb290U2NvcGUuJGJyb2FkY2FzdCgnc2VydmljZTpDb3B5U3RhY2snLCBzZXJ2aWNlLnN0YWNrKTtcblx0fTtcblx0XG5cdHNlcnZpY2UucHVzaCA9IGZ1bmN0aW9uKGJsb2NrKSB7XG5cdFx0aWYgKHNlcnZpY2Uuc3RhY2subGVuZ3RoID4gNCkge1xuXHRcdFx0c2VydmljZS5zdGFjay5zaGlmdCgpO1xuXHRcdH1cblx0XHRzZXJ2aWNlLnN0YWNrLnB1c2goe2Jsb2NrSWQ6IGJsb2NrLmJsb2NrX2lkLCBuYW1lOiBibG9jay5uYW1lLCBpY29uOmJsb2NrLmljb24sIGlkOiBibG9jay5pZCwgY29weXN0YWNrOiAxfSk7XG5cdFx0JHJvb3RTY29wZS4kYnJvYWRjYXN0KCdzZXJ2aWNlOkNvcHlTdGFjaycsIHNlcnZpY2Uuc3RhY2spO1xuXHR9O1xuXHRcblx0cmV0dXJuIHNlcnZpY2U7XG59XSk7XG5cbi8qKlxuICogTWVudSBTZXJ2aWNlLlxuICogXG4gKiAkc2NvcGUubWVudURhdGEgPSBTZXJ2aWNlTWVudURhdGEuZGF0YTtcbiAqIFx0XHRcdFx0XG4gKiAkc2NvcGUuJG9uKCdzZXJ2aWNlOk1lbnVEYXRhJywgZnVuY3Rpb24oZXZlbnQsIGRhdGEpIHtcbiAqIFx0JHNjb3BlLm1lbnVEYXRhID0gZGF0YTtcbiAqIH0pO1xuICogXG4gKiAkc2NvcGUubWVudURhdGFSZWxvYWQgPSBmdW5jdGlvbigpIHtcbiAqIFx0cmV0dXJuIFNlcnZpY2VNZW51RGF0YS5sb2FkKHRydWUpO1xuICogfVxuICogXHRcdFx0XHRcbiAqL1xuemFhLmZhY3RvcnkoXCJTZXJ2aWNlTWVudURhdGFcIiwgWyckaHR0cCcsICckcScsICckcm9vdFNjb3BlJywgZnVuY3Rpb24oJGh0dHAsICRxLCAkcm9vdFNjb3BlKSB7XG5cdHZhciBzZXJ2aWNlID0gW107XG5cdFxuXHRzZXJ2aWNlLmRhdGEgPSBbXTtcblx0XG5cdHNlcnZpY2UubG9hZCA9IGZ1bmN0aW9uKGZvcmNlUmVsb2FkKSB7XG5cdFx0cmV0dXJuICRxKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXHRcdFx0aWYgKHNlcnZpY2UuZGF0YS5sZW5ndGggPiAwICYmIGZvcmNlUmVsb2FkICE9PSB0cnVlKSB7XG5cdFx0XHRcdHJlc29sdmUoc2VydmljZS5kYXRhKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCRodHRwLmdldChcImFkbWluL2FwaS1jbXMtbWVudS9kYXRhLW1lbnVcIikudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdHNlcnZpY2UuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0JHJvb3RTY29wZS4kYnJvYWRjYXN0KCdzZXJ2aWNlOk1lbnVEYXRhJywgc2VydmljZS5kYXRhKTtcblx0XHRcdFx0XHRyZXNvbHZlKHNlcnZpY2UuZGF0YSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9O1xuXHRcblx0cmV0dXJuIHNlcnZpY2U7XG59XSk7XG5cbi8qKlxuICogQmxvY2tzIFNlcnZpY2UuXG4gKiBcbiAqIFxuICogJHNjb3BlLmJsb2Nrc0RhdGEgPSBTZXJ2aWNlQmxvY2tzRGF0YS5kYXRhO1xuICogXHRcdFx0XHRcbiAqICRzY29wZS4kb24oJ3NlcnZpY2U6QmxvY2tzRGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG4gKiBcdCRzY29wZS5ibG9ja3NEYXRhID0gZGF0YTtcbiAqIH0pO1xuICogXG4gKiAkc2NvcGUuYmxvY2tzRGF0YVJlbG9hZCA9IGZ1bmN0aW9uKCkge1xuICogXHRyZXR1cm4gU2VydmljZUJsb2Nrc0RhdGEubG9hZCh0cnVlKTtcbiAqIH1cbiAqIFx0XHRcdFx0XG4gKi9cbnphYS5mYWN0b3J5KFwiU2VydmljZUJsb2Nrc0RhdGFcIiwgWyckaHR0cCcsICckcScsICckcm9vdFNjb3BlJywgZnVuY3Rpb24oJGh0dHAsICRxLCAkcm9vdFNjb3BlKSB7XG5cdHZhciBzZXJ2aWNlID0gW107XG5cdFxuXHRzZXJ2aWNlLmRhdGEgPSBbXTtcblx0XG5cdHNlcnZpY2UubG9hZCA9IGZ1bmN0aW9uKGZvcmNlUmVsb2FkKSB7XG5cdFx0cmV0dXJuICRxKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXHRcdFx0aWYgKHNlcnZpY2UuZGF0YS5sZW5ndGggPiAwICYmIGZvcmNlUmVsb2FkICE9PSB0cnVlKSB7XG5cdFx0XHRcdHJlc29sdmUoc2VydmljZS5kYXRhKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCRodHRwLmdldChcImFkbWluL2FwaS1jbXMtYWRtaW4vZGF0YS1ibG9ja3NcIikudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuXHRcdFx0XHRcdHNlcnZpY2UuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0JHJvb3RTY29wZS4kYnJvYWRjYXN0KCdzZXJ2aWNlOkJsb2Nrc0RhdGEnLCBzZXJ2aWNlLmRhdGEpO1xuXHRcdFx0XHRcdHJlc29sdmUoc2VydmljZS5kYXRhKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH07XG5cdFxuXHRyZXR1cm4gc2VydmljZTtcbn1dKTtcblxuLyoqXG4gKiBMYXlvdXRzIFNlcnZpY2UuXG5cbiRzY29wZS5sYXlvdXRzRGF0YSA9IFNlcnZpY2VMYXlvdXRzRGF0YS5kYXRhO1xuXHRcdFx0XHRcbiRzY29wZS4kb24oJ3NlcnZpY2U6QmxvY2tzRGF0YScsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG5cdCRzY29wZS5sYXlvdXRzRGF0YSA9IGRhdGE7XG59KTtcblxuJHNjb3BlLmxheW91dHNEYXRhUmVsb2FkID0gZnVuY3Rpb24oKSB7XG5cdHJldHVybiBTZXJ2aWNlTGF5b3V0c0RhdGEubG9hZCh0cnVlKTtcbn1cblx0XHRcdFx0XG4qL1xuemFhLmZhY3RvcnkoXCJTZXJ2aWNlTGF5b3V0c0RhdGFcIiwgWyckaHR0cCcsICckcScsICckcm9vdFNjb3BlJywgZnVuY3Rpb24oJGh0dHAsICRxLCAkcm9vdFNjb3BlKSB7XG5cdHZhciBzZXJ2aWNlID0gW107XG5cdFxuXHRzZXJ2aWNlLmRhdGEgPSBbXTtcblx0XG5cdHNlcnZpY2UubG9hZCA9IGZ1bmN0aW9uKGZvcmNlUmVsb2FkKSB7XG5cdFx0cmV0dXJuICRxKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXHRcdFx0aWYgKHNlcnZpY2UuZGF0YS5sZW5ndGggPiAwICYmIGZvcmNlUmVsb2FkICE9PSB0cnVlKSB7XG5cdFx0XHRcdHJlc29sdmUoc2VydmljZS5kYXRhKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCRodHRwLmdldChcImFkbWluL2FwaS1jbXMtYWRtaW4vZGF0YS1sYXlvdXRzXCIpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcblx0XHRcdFx0XHRzZXJ2aWNlLmRhdGEgPSByZXNwb25zZS5kYXRhO1xuXHRcdFx0XHRcdCRyb290U2NvcGUuJGJyb2FkY2FzdCgnc2VydmljZTpMYXlvdXRzRGF0YScsIHNlcnZpY2UuZGF0YSk7XG5cdFx0XHRcdFx0cmVzb2x2ZShzZXJ2aWNlLmRhdGEpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fTtcblx0XG5cdHJldHVybiBzZXJ2aWNlO1xufV0pO1xuXG4vKipcbiAqIENNUyBMSVZFIEVESVQgU0VSSVZDRVxuICogXG4gKiAkc2NvcGUubGl2ZUVkaXRNb2RlID0gU2VydmljZUxpdmVFZGl0TW9kZS5zdGF0ZVxuICovXG56YWEuZmFjdG9yeShcIlNlcnZpY2VMaXZlRWRpdE1vZGVcIiwgWyckcm9vdFNjb3BlJywgZnVuY3Rpb24oJHJvb3RTY29wZSkge1xuXHRcblx0dmFyIHNlcnZpY2UgPSBbXTtcblx0XG5cdHNlcnZpY2Uuc3RhdGUgPSAwO1xuXHRcblx0c2VydmljZS51cmwgPSAkcm9vdFNjb3BlLmx1eWFjZmcuaG9tZVVybDtcblx0XG5cdHNlcnZpY2UudG9nZ2xlID0gZnVuY3Rpb24oKSB7XG5cdFx0c2VydmljZS5zdGF0ZSA9ICFzZXJ2aWNlLnN0YXRlO1xuXHR9O1xuXHRzZXJ2aWNlLnNldFVybCA9IGZ1bmN0aW9uKGl0ZW1JZCwgdmVyc2lvbklkKSB7XG5cdFx0dmFyIGQgPSBuZXcgRGF0ZSgpO1xuXHRcdHZhciBuID0gZC5nZXRUaW1lKCk7XG5cdFx0c2VydmljZS51cmwgPSAkcm9vdFNjb3BlLmNtc0NvbmZpZy5wcmV2aWV3VXJsICsgJz9pdGVtSWQ9JytpdGVtSWQrJyZ2ZXJzaW9uPScgKyB2ZXJzaW9uSWQgKyAnJmRhdGU9JyArIG47XG5cdH07XG5cdFxuXHRzZXJ2aWNlLmNoYW5nZVVybCA9IGZ1bmN0aW9uKGl0ZW1JZCwgdmVyc2lvbklkKSB7XG5cdFx0aWYgKHZlcnNpb25JZCA9PSB1bmRlZmluZWQpIHtcblx0XHRcdHZlcnNpb25JZCA9IDA7XG5cdFx0fVxuXHRcdHNlcnZpY2Uuc2V0VXJsKGl0ZW1JZCwgdmVyc2lvbklkKTtcblx0XHQkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ3NlcnZpY2U6TGl2ZUVkaXRNb2RlVXJsQ2hhbmdlJywgc2VydmljZS51cmwpO1xuXHR9O1xuXHRcblx0cmV0dXJuIHNlcnZpY2U7XG59XSk7XG5cbi8qKlxuICogQ01TIEN1cnJlbnQgV2Vic2l0ZSBTRVJJVkNFXG4gKlxuICogJHNjb3BlLmN1cnJlbnRXZWJzaXRlID0gU2VydmljZUN1cnJlbnRXZWJzaXRlLmN1cnJlbnRXZWJzaXRlIFxuICogXG4gKiAkc2NvcGUuJG9uKCdzZXJ2aWNlOkN1cnJlbnRXZWJzaXRlQ2hhbmdlZCcsIGZ1bmN0aW9uKGV2ZW50LCBkYXRhKSB7XG4gKiAgXHQkc2NvcGUuY3VycmVudFdlYnNpdGUgPSBkYXRhO1xuICogfSk7XG4gKi9cbnphYS5mYWN0b3J5KFwiU2VydmljZUN1cnJlbnRXZWJzaXRlXCIsIFsnJHJvb3RTY29wZScsICdTZXJ2aWNlTWVudURhdGEnLCBmdW5jdGlvbigkcm9vdFNjb3BlLCBTZXJ2aWNlTWVudURhdGEpIHtcblxuXHR2YXIgc2VydmljZSA9IHtcblx0XHRjdXJyZW50V2Vic2l0ZTogbnVsbCxcblx0XHRkZWZhdWx0V2Vic2l0ZTogbnVsbFxuXHR9O1xuXG5cdHNlcnZpY2UubG9hZCA9IGZ1bmN0aW9uKCkge1xuXHRcdHNlcnZpY2UuZGVmYXVsdFdlYnNpdGUgPSBTZXJ2aWNlTWVudURhdGEuZGF0YS53ZWJzaXRlcy5maW5kKHcgPT4gdy5pc19kZWZhdWx0KSB8fCBTZXJ2aWNlTWVudURhdGEuZGF0YS53ZWJzaXRlc1swXTtcblx0XHRpZiAoc2VydmljZS5kZWZhdWx0V2Vic2l0ZSkge1xuXHRcdFx0c2VydmljZS50b2dnbGUoc2VydmljZS5kZWZhdWx0V2Vic2l0ZS5pZCk7XG5cdFx0fVxuXHR9XG5cblx0c2VydmljZS50b2dnbGUgPSBmdW5jdGlvbih3ZWJzaXRlSWQpIHtcblx0XHRpZiAod2Vic2l0ZUlkICYmIFNlcnZpY2VNZW51RGF0YS5kYXRhLndlYnNpdGVzICYmICghc2VydmljZS5jdXJyZW50V2Vic2l0ZSB8fCBzZXJ2aWNlLmN1cnJlbnRXZWJzaXRlLmlkICE9PSB3ZWJzaXRlSWQpKSB7XG5cdFx0XHRzZXJ2aWNlLmN1cnJlbnRXZWJzaXRlID0gU2VydmljZU1lbnVEYXRhLmRhdGEud2Vic2l0ZXMuZmluZCh3ID0+IHcuaWQgPT09IHdlYnNpdGVJZCk7XG5cdFx0XHQkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ3NlcnZpY2U6Q3VycmVudFdlYnNpdGVDaGFuZ2VkJywgc2VydmljZS5jdXJyZW50V2Vic2l0ZSk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiBzZXJ2aWNlO1xufV0pO1xuXG56YWEuZmFjdG9yeShcIlNlcnZpY2VXb3JraW5nUGFnZVZlcnNpb25cIiwgW2Z1bmN0aW9uKCkge1xuXHR2YXIgc2VydmljZSA9IHtcblx0XHRwYWdlOiB7fVxuXHR9O1xuXG5cdHNlcnZpY2Uuc3RvcmUgPSBmdW5jdGlvbihwYWdlSWQsIHZlcnNpb25JZCkge1xuXHRcdHNlcnZpY2UucGFnZVtwYWdlSWRdID0gdmVyc2lvbklkO1xuXHR9O1xuXG5cdHNlcnZpY2UuaGFzVmVyc2lvbiA9IGZ1bmN0aW9uKHBhZ2VJZCkge1xuXHRcdGlmIChzZXJ2aWNlLnBhZ2UuaGFzT3duUHJvcGVydHkocGFnZUlkKSkge1xuXHRcdFx0cmV0dXJuIHNlcnZpY2UucGFnZVtwYWdlSWRdO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcblxuXHRyZXR1cm4gc2VydmljZTtcbn1dKTsiXX0= \ No newline at end of file diff --git a/src/admin/resources/js/cmsadmin.js b/src/admin/resources/js/cmsadmin.js index 315af4aa..3405d155 100644 --- a/src/admin/resources/js/cmsadmin.js +++ b/src/admin/resources/js/cmsadmin.js @@ -30,7 +30,9 @@ function init() { if ($scope.menuData.length == 0) { - ServiceMenuData.load(); + ServiceMenuData.load().then(function() { + ServiceCurrentWebsite.load(); + }) } }