@agilemotion/oui-react-js 2.0.21 → 2.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -141,6 +141,9 @@ class ApplicationManager {
141
141
  _defineProperty(this, "addDashboardView", (view, path) => {
142
142
  this.viewContext.dashboard.addView(view);
143
143
  });
144
+ _defineProperty(this, "getDashboardViewContext", () => {
145
+ return this.viewContext.dashboard;
146
+ });
144
147
  /**
145
148
  * clear dashboard view configuration
146
149
  *
@@ -498,6 +501,9 @@ class ApplicationManager {
498
501
  dashboard: new _ViewContext.ViewContext('dashboard'),
499
502
  popup: new _ViewContext.ViewContext('popup')
500
503
  };
504
+ // The dashboard holds many card views simultaneously, so it must
505
+ // accumulate views instead of evicting the top one on each add.
506
+ this.viewContext.dashboard.concurrent = true;
501
507
  this.props = {};
502
508
  this.listeners = [];
503
509
  this.libs = {};
@@ -756,4 +762,4 @@ class ApplicationManager {
756
762
  const instance = new ApplicationManager();
757
763
  Object.freeze(instance);
758
764
  var _default = exports.default = instance;
759
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfT2JzZXJ2YWJsZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX0V2ZW50IiwiX0V2ZW50VHlwZSIsIl9VdGlscyIsIl9EeW5hbWljSlMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9UeXBlZFZhbHVlIiwiX1NvY2tldE1hbmFnZXIiLCJfVmlld0NvbnRleHQiLCJfaGVscGVycyIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIkFQUF9WQVJJQUJMRSIsImV4cG9ydHMiLCJTT0NLRVRfVkFSSUFCTEUiLCJBVkFUQVJfTElTVEVORVJfVFlQRSIsIkRBU0hCT0FSRF9TVEFURSIsIlNZU1RFTV9FVkVOVCIsIlRFTVBMQVRFX1RPS0VOX1JFR0VYIiwiUmVnRXhwIiwiYXBwbGljYXRpb25Db250ZXh0IiwiQXBwbGljYXRpb25NYW5hZ2VyIiwiY29uc3RydWN0b3IiLCJfdGhpcyIsInN1YnNjcmlwdGlvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiZXZlbnRNYW5hZ2VyIiwiYWRkQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9uIiwiY29udHJvbGxlciIsInByb3BzIiwiY29uZmlybWF0aW9uRGlhbG9nQ29udHJvbGxlciIsIm5hbWUiLCJsaWIiLCJsaWJzIiwiaGlzdG9yeSIsImFwcGxpY2F0aW9uSGlzdG9yeSIsInZpZXdJZCIsInRpdGxlIiwia2V5cyIsInZpZXdDb250ZXh0IiwiZm9yRWFjaCIsImtleSIsInVwZGF0ZUFwcEJhclRpdGxlIiwiY2xlYXJBbGxFdmVudExpc3RlbmVycyIsImNsZWFyIiwiZmlsZUNhY2hlIiwic3BsaWNlIiwibGVuZ3RoIiwiZG9tYWluIiwiZmlsZUNhY2hlRWxlbWVudCIsImZpbGUiLCJVdGlscyIsImlzTnVsbCIsImNvbnNvbGUiLCJlcnJvciIsImZpbGVEb21haW5DYWNoZSIsImdldEZpbGVEb21haW5DYWNoZSIsImZpbGVzIiwicHVzaCIsImNhY2hlZEZpbGUiLCJkb21haW5GaWxlIiwiY29ycmVsYXRpb25JZCIsImNvbnRlbnQiLCJ2YWx1ZXMiLCJwdWJsaXNoIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZW1pdENvbnRleHRDaGFuZ2VFdmVudCIsInZpZXciLCJwYXRoIiwiZGFzaGJvYXJkIiwiYWRkVmlldyIsImNsb3NlQWxsVmlld3MiLCJmb3J3YXJkIiwibWFuYWdlcklkIiwicHJlc2VydmVXaW5kb3ciLCJ3aW5kb3dWaWV3Iiwidmlld0NvbnRleHRFbGVtZW50IiwiY2xvc2VQb3B1cFZpZXciLCJnZXRWaWV3IiwiY2xvc2VWaWV3IiwiaWQiLCJoYW5kbGUiLCJhcGkiLCJfdmlldyRoYW5kbGUiLCJnZXRDaGlsZCIsIl92aWV3JGhhbmRsZTIiLCJncmFwaHMiLCJncmFwaCIsImdldEdyYXBocyIsInZpZXdzIiwiZ2V0Vmlld3MiLCJjb21wb25lbnQiLCJnZXRWaWV3Q29tcG9uZW50IiwidGVtcGxhdGUiLCJldmVudERhdGEiLCJtYXRjaGVzIiwibWF0Y2giLCJleHByZXNpb25Db250ZW50Iiwic3Vic3RyaW5nIiwiaW5kZXhPZiIsImxhc3RJbmRleE9mIiwiZXhwcmVzc2lvblZhbHVlIiwic3RhcnRzV2l0aCIsInJlcGxhY2UiLCJzcGxpdCIsInZvIiwicHJvcCIsInJlc29sdmVFeHByZXNzaW9uVmFsdWUiLCJleHByZXNzaW9uIiwicGFyYW1FeHByZXNzaW9uIiwiaXNFdmVudCIsImJhc2VFeHByZXNzaW9uIiwiZXhwcmVzc2lvbkNvbnRlbnQiLCJpc0NvbXBvbmVudCIsImlzTGliIiwidG9rZW5zIiwiaWRUb2tlbiIsInJlc29sdmVDb21wb25lbnRBcGkiLCJleHByZXNzaW9uQ2xvc3VyZSIsImluZGV4IiwicHJvcGVydHlDaGFpbiIsIm9iaiIsImlzQXJyYXkiLCJBcnJheSIsInVwZGF0ZWQiLCJzZXRFeHByZXNzaW9uVmFsdWVzIiwib2JqVmFsdWUiLCJpc0V4cHJlc3Npb24iLCJzY3JpcHRWYWx1ZSIsImR5bmFtaWNKUyIsImV4ZWN1dGVTY3JpcHQiLCJjb25jYXQiLCJNYXRoIiwicmFuZG9tIiwidG9TdHJpbmciLCJvYmpLZXkiLCJpbnN0YW5jZVR5cGUiLCJ0eXBlIiwiY29uZmlnVmFsdWUiLCJqc29uIiwiSlNPTiIsInN0cmluZ2lmeSIsIlRFTVBMQVRFX1JFR0VYIiwicGFyYW1ldGVyQ29uZmlnIiwic3RhdGljIiwiaW5jbHVkZXMiLCJ2YWx1ZUluZGV4IiwidmFsIiwicmVzb2x2ZVBhcmFtZXRlckNvbmZpZ1ZhbHVlIiwiZGF0YSIsIlR5cGVkVmFsdWUiLCJzZXRNb2RlbFZhbHVlIiwicHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnMiLCJnZXRQcmV2aW91c0hpc3RvcnlFbGVtZW50IiwiZ2V0VG9wVmlldyIsImluc3RhbmNlIiwibWFpbiIsIlZpZXdDb250ZXh0Iiwid2luZG93IiwicG9wdXAiLCJsaXN0ZW5lcnMiLCJnZXRJZCIsInJlZnJlc2hVc2VyQXZhdGFyIiwiYXZhdGFyIiwiYWxlcnQiLCJtZXNzYWdlIiwibWVzc2FnZVR5cGUiLCJyZW1vdmVMb2FkZWRHcmFwaCIsInNldEhhc0FjdGl2ZU1lZXRpbmciLCJoYXNBY3RpdmVNZWV0aW5nIiwiZ2V0QWN0aXZlTWVldGluZ0tleSIsImdldFVzZXJEZXRhaWxzIiwiZmlyZUV2ZW50IiwiZXZlbnRUeXBlIiwiZXZlbnQiLCJFdmVudCIsInNvdXJjZSIsInVwZGF0ZUNvbnRleHQiLCJlbWl0U29ja2V0RXZlbnQiLCJzb2NrZXRNYW5hZ2VyIiwiZW1pdEV2ZW50Iiwic2V0QWN0aXZlVGVuYW50IiwidGVuYW50IiwiZ2V0QWN0aXZlVGVuYW50IiwiZ2V0VW5pcXVlT3JnRm9yUm9sZSIsInJvbGUiLCJzZXREYXNoYm9hcmRTdGF0ZSIsImRhc2hib2FyZFN0YXRlIiwiZ2V0RGFzaGJvYXJkU3RhdGUiLCJhcmciLCJwcm90b3R5cGUiLCJwcm9maWxlIiwicGFyc2UiLCJyb2xlcyIsIm9yZ2FuaXNhdGlvbnMiLCJmaWx0ZXIiLCJvcmciLCJtYXAiLCJjb2RlIiwiRXJyb3IiLCJuYXZpZ2F0ZSIsIm5hdmlnYXRvciIsInNldERhc2hib2FyZFNldHRpbmdzIiwiZGFzaGJvYXJkU2V0dGluZ3MiLCJzdGF0ZSIsImxpc3RlbmVyIiwibG9nIiwiaGFuZGxlciIsImdldERhc2hib2FyZFNldHRpbmdzIiwic2V0TmF2aWdhdG9yIiwic2V0QWN0aXZlTWVldGluZ0tleSIsImFjdGl2ZU1lZXRpbmdLZXkiLCJpc1dpbmRvd09wZW4iLCJzZXRTZXJ2aWNlQXBpUGF0aCIsInNlcnZpY2VBcGlQYXRoIiwiZ2V0U2VydmljZUFwaVBhdGgiLCJzZXRVSUNvbmZpZ1BhdGgiLCJ1aUNvbmZpZ1BhdGgiLCJzZXRDb250ZXh0Um9vdCIsImNvbnRleHRSb290IiwiZ2V0Q29udGV4dFJvb3QiLCJnZXRVSUNvbmZpZ1BhdGgiLCJzZXRGaWxlc0FwaVBhdGgiLCJmaWxlc0FwaVBhdGgiLCJnZXRGaWxlc0FwaVBhdGgiLCJhZGRBcHBsaWNhdGlvbkxpc3RlbmVyIiwicmVtb3ZlQXBwbGljYXRpb25MaXN0ZW5lciIsImNvbmZpZyIsIkV2ZW50VHlwZSIsIk1FU1NBR0VfQVJSSVZFRCIsInNldEFwcGxpY2F0aW9uVGhlbWVDb2xvcnMiLCJwcmltYXJ5Iiwic2Vjb25kYXJ5IiwicHJpbWFyeUNvbG9yIiwic2Vjb25kYXJ5Q29sb3IiLCJnZXRBcHBsaWNhdGlvblByaW1hcnlDb2xvciIsImdldEFwcGxpY2F0aW9uU2Vjb25kYXJ5Q29sb3IiLCJvcGVuQ29uZmlybURpYWxvZyIsInJlc3VsdENhbGxiYWNrIiwib3BlbkRpYWxvZyIsImV4ZWN1dGUiLCJyZXN1bHQiLCJvcGVuUG9wdXBWaWV3Iiwib3BlbldpbmRvd1ZpZXciLCJmaWxsRXZlbnREYXRhVmFsdWUiLCJlbmFibGVGb3JtTWFya2VycyIsImVuYWJsZWQiLCJmb3JtTWFya2Vyc0VuYWJsZWQiLCJpc0Zvcm1NYXJrZXJzRW5hYmxlZCIsInNldERhc2hib2FyZFZpZXciLCJkYXNoYm9hcmRWaWV3Iiwic2V0VXNlckRldGFpbHMiLCJ1c2VyRGV0YWlscyIsImxvYWRHcmFwaCIsImlzUGFyZW50IiwicGFyYW1ldGVyVmFsdWVzIiwiaXNXaW5kb3ciLCJzaWduYWxHcmFwaCIsImZyZWV6ZSIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2xpYi9BcHBsaWNhdGlvbk1hbmFnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tICcuL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4vZXZlbnQvRXZlbnQnO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tICcuL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi9VdGlscyc7XG5pbXBvcnQgZHluYW1pY0pTLCB7VEVNUExBVEVfUkVHRVh9IGZyb20gJy4vRHluYW1pY0pTJztcbmltcG9ydCBUeXBlZFZhbHVlIGZyb20gJy4vVHlwZWRWYWx1ZSc7XG5pbXBvcnQgc29ja2V0TWFuYWdlciBmcm9tIFwiLi9jb21wb25lbnRzL1NvY2tldE1hbmFnZXJcIjtcbmltcG9ydCB7Vmlld0NvbnRleHR9IGZyb20gXCIuL1ZpZXdDb250ZXh0XCI7XG5pbXBvcnQge2lzQXJyYXl9IGZyb20gXCJycnVsZS9kaXN0L2VzbS9oZWxwZXJzXCI7XG5cbmV4cG9ydCBjb25zdCBBUFBfVkFSSUFCTEUgPSAnX19BUFBMSUNBVElPTl9PVUlfU1lTX1ZBUl9fJztcbmV4cG9ydCBjb25zdCBTT0NLRVRfVkFSSUFCTEUgPSAnX19TT0NLRVRfVkFSSUFCTEVfT1VJX1NZU19WQVJfXyc7XG5leHBvcnQgY29uc3QgQVZBVEFSX0xJU1RFTkVSX1RZUEUgPSAnQVZBVEFSX0xJU1RFTkVSJztcbmV4cG9ydCBjb25zdCBEQVNIQk9BUkRfU1RBVEUgPSAnREFTSEJPQVJEX1NUQVRFJztcbmV4cG9ydCBjb25zdCBTWVNURU1fRVZFTlQgPSAnU1lTVEVNX0VWRU5UJztcbmV4cG9ydCBjb25zdCBURU1QTEFURV9UT0tFTl9SRUdFWCA9IG5ldyBSZWdFeHAoJygoWyRdezF9W3tdezF9KSgoW2EtekEtWjAtOV8kLkAje31bXFxcXF1dKikrKXsxfShbfV17MX0pKSsnLCAnZycpO1xuXG5jb25zdCBhcHBsaWNhdGlvbkNvbnRleHQgPSB7fTtcblxuY2xhc3MgQXBwbGljYXRpb25NYW5hZ2VyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaWYgKCFBcHBsaWNhdGlvbk1hbmFnZXIuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgbWFpbjogbmV3IFZpZXdDb250ZXh0KCdtYWluJyksXG4gICAgICAgICAgICAgICAgd2luZG93OiBuZXcgVmlld0NvbnRleHQoJ3dpbmRvdycpLFxuICAgICAgICAgICAgICAgIGRhc2hib2FyZDogbmV3IFZpZXdDb250ZXh0KCdkYXNoYm9hcmQnKSxcbiAgICAgICAgICAgICAgICBwb3B1cDogbmV3IFZpZXdDb250ZXh0KCdwb3B1cCcpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucHJvcHMgPSB7fTtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzID0gW107XG4gICAgICAgICAgICB0aGlzLmxpYnMgPSB7fTtcbiAgICAgICAgICAgIHRoaXMuZmlsZUNhY2hlID0gW107XG4gICAgICAgICAgICB0aGlzLmFwaSA9IHtcbiAgICAgICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5nZXRJZCgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVmcmVzaFVzZXJBdmF0YXIoYXZhdGFyKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlZnJlc2hVc2VyQXZhdGFyKGF2YXRhcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhbGVydCh2aWV3SWQsIG1lc3NhZ2UsIG1lc3NhZ2VUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmFsZXJ0KHZpZXdJZCwgbWVzc2FnZSwgbWVzc2FnZVR5cGUsKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbW92ZUxvYWRlZEdyYXBoKHZpZXdDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlbW92ZUxvYWRlZEdyYXBoKHZpZXdDb250ZXh0KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldEhhc0FjdGl2ZU1lZXRpbmcoaGFzQWN0aXZlTWVldGluZykge1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5zZXRIYXNBY3RpdmVNZWV0aW5nKGhhc0FjdGl2ZU1lZXRpbmcpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaGFzQWN0aXZlTWVldGluZygpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhhc0FjdGl2ZU1lZXRpbmcoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdldEFjdGl2ZU1lZXRpbmdLZXkoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5nZXRBY3RpdmVNZWV0aW5nS2V5KCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBnZXRVc2VyRGV0YWlscygpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLmdldFVzZXJEZXRhaWxzKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjbG9zZVBvcHVwVmlldygpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLmNsb3NlUG9wdXBWaWV3KCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmaXJlRXZlbnQoZXZlbnRUeXBlLCBldmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChldmVudFR5cGUsIG5ldyBFdmVudChldmVudC5zb3VyY2UsIGV2ZW50LnZpZXdJZCwgZXZlbnQuZGF0YSkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ29udGV4dCh2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnVwZGF0ZUNvbnRleHQodmFsdWVzKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVtaXRTb2NrZXRFdmVudChldmVudFR5cGUsIGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvY2tldE1hbmFnZXIuZW1pdEV2ZW50KGV2ZW50VHlwZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVUZW5hbnQodGVuYW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnNldEFjdGl2ZVRlbmFudCh0ZW5hbnQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0QWN0aXZlVGVuYW50KCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UuZ2V0QWN0aXZlVGVuYW50KCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBnZXRVbmlxdWVPcmdGb3JSb2xlKHJvbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLmdldFVuaXF1ZU9yZ0ZvclJvbGUocm9sZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXREYXNoYm9hcmRTdGF0ZShkYXNoYm9hcmRTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5zZXREYXNoYm9hcmRTdGF0ZShkYXNoYm9hcmRTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBnZXREYXNoYm9hcmRTdGF0ZSgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLmdldERhc2hib2FyZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KSB7XG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheSA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmcpID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEFwcGxpY2F0aW9uTWFuYWdlci5pbnN0YW5jZSA9IHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQXBwbGljYXRpb25NYW5hZ2VyLmluc3RhbmNlO1xuICAgIH1cblxuICAgIGdldFVuaXF1ZU9yZ0ZvclJvbGUocm9sZSkge1xuICAgICAgICBsZXQgcHJvZmlsZSA9IEpTT04ucGFyc2UodGhpcy5nZXRVc2VyRGV0YWlscygpLnByb2ZpbGUpO1xuICAgICAgICBsZXQgcm9sZXMgPSBwcm9maWxlLm9yZ2FuaXNhdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIob3JnID0+IG9yZy5yb2xlcy5pbmNsdWRlcyhyb2xlKSkgLy8gRmlsdGVyIG9yZ2FuaXNhdGlvbnMgYnkgcm9sZVxuICAgICAgICAgICAgLm1hcChvcmcgPT4gb3JnLmNvZGUpO1xuXG4gICAgICAgIGlmIChyb2xlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGVyZSBpcyBtb3JlIHRoYW4gb25lIG9yZ2FuaXNhdGlvbiBmb3Igcm9sZSA6IFtcIiArIHJvbGUgKyBcIl1cIilcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByb2xlc1swXTtcbiAgICB9XG5cbiAgICBhZGRBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb24gPSAoc3Vic2NyaXB0aW9uKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZEFwcGxpY2F0aW9uQ29udGV4dFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgICAgICAgcmVzb2x2ZShhcHBsaWNhdGlvbkNvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgbmF2aWdhdGUocGF0aCkge1xuICAgICAgICB0aGlzLnByb3BzLm5hdmlnYXRvcihwYXRoKTtcbiAgICB9XG5cbiAgICBzZXREYXNoYm9hcmRTZXR0aW5ncyhkYXNoYm9hcmRTZXR0aW5ncykge1xuICAgICAgICB0aGlzLnByb3BzLmRhc2hib2FyZFNldHRpbmdzID0gZGFzaGJvYXJkU2V0dGluZ3M7XG4gICAgfVxuXG4gICAgc2V0RGFzaGJvYXJkU3RhdGUoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5kYXNoYm9hcmRTdGF0ZSA9IHN0YXRlO1xuICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIHRoaXMubGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhsaXN0ZW5lcik7XG4gICAgICAgICAgICBpZiAobGlzdGVuZXIudHlwZSA9PT0gREFTSEJPQVJEX1NUQVRFKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIuaGFuZGxlcihzdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXREYXNoYm9hcmRTZXR0aW5ncygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuZGFzaGJvYXJkU2V0dGluZ3M7XG4gICAgfVxuXG4gICAgc2V0QWN0aXZlVGVuYW50KHRlbmFudCkge1xuICAgICAgICB0aGlzLnByb3BzLnRlbmFudCA9IHRlbmFudDtcbiAgICB9XG5cbiAgICBnZXRBY3RpdmVUZW5hbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnRlbmFudDtcbiAgICB9XG5cbiAgICBzZXROYXZpZ2F0b3IobmF2aWdhdG9yKSB7XG4gICAgICAgIHRoaXMucHJvcHMubmF2aWdhdG9yID0gbmF2aWdhdG9yO1xuICAgIH1cblxuICAgIHNldEFjdGl2ZU1lZXRpbmdLZXkoYWN0aXZlTWVldGluZ0tleSkge1xuICAgICAgICB0aGlzLnByb3BzLmFjdGl2ZU1lZXRpbmdLZXkgPSBhY3RpdmVNZWV0aW5nS2V5O1xuICAgIH1cblxuICAgIGdldEFjdGl2ZU1lZXRpbmdLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmFjdGl2ZU1lZXRpbmdLZXk7XG4gICAgfVxuXG4gICAgc2V0SGFzQWN0aXZlTWVldGluZyhoYXNBY3RpdmVNZWV0aW5nKSB7XG4gICAgICAgIHRoaXMucHJvcHMuaGFzQWN0aXZlTWVldGluZyA9IGhhc0FjdGl2ZU1lZXRpbmc7XG4gICAgfVxuXG4gICAgaGFzQWN0aXZlTWVldGluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuaGFzQWN0aXZlTWVldGluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcnVlIHdoZW4gdGhlIGZsb2F0aW5nIFdpbmRvd1ZpZXdQb3J0IG92ZXJsYXkgY3VycmVudGx5IGhvc3RzIGEgdmlldy5cbiAgICAgKiBVc2VkIHRvIGRlY2lkZSB3aGV0aGVyIGEgbWVudSBuYXZpZ2F0aW9uIHNob3VsZCBhdXRvLXBpbiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIGlzV2luZG93T3BlbigpIHtcbiAgICAgICAgcmV0dXJuIGFwcGxpY2F0aW9uQ29udGV4dC53aW5kb3dWaWV3ICE9IG51bGw7XG4gICAgfVxuXG4gICAgc2V0U2VydmljZUFwaVBhdGgoc2VydmljZUFwaVBhdGgpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXJ2aWNlQXBpUGF0aCA9IHNlcnZpY2VBcGlQYXRoO1xuICAgIH1cblxuICAgIGdldFNlcnZpY2VBcGlQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5zZXJ2aWNlQXBpUGF0aDtcbiAgICB9XG5cbiAgICBzZXRVSUNvbmZpZ1BhdGgodWlDb25maWdQYXRoKSB7XG4gICAgICAgIHRoaXMucHJvcHMudWlDb25maWdQYXRoID0gdWlDb25maWdQYXRoO1xuICAgIH1cblxuICAgIHNldENvbnRleHRSb290KGNvbnRleHRSb290KSB7XG4gICAgICAgIHRoaXMucHJvcHMuY29udGV4dFJvb3QgPSBjb250ZXh0Um9vdDtcbiAgICB9XG5cbiAgICBnZXRDb250ZXh0Um9vdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY29udGV4dFJvb3Q7XG4gICAgfVxuXG4gICAgZ2V0VUlDb25maWdQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy51aUNvbmZpZ1BhdGg7XG4gICAgfVxuXG4gICAgc2V0RmlsZXNBcGlQYXRoKGZpbGVzQXBpUGF0aCkge1xuICAgICAgICB0aGlzLnByb3BzLmZpbGVzQXBpUGF0aCA9IGZpbGVzQXBpUGF0aDtcbiAgICB9XG5cbiAgICBnZXRGaWxlc0FwaVBhdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmZpbGVzQXBpUGF0aDtcbiAgICB9XG5cbiAgICBhZGRBcHBsaWNhdGlvbkxpc3RlbmVyKGxpc3RlbmVyKSB7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHJlbW92ZUFwcGxpY2F0aW9uTGlzdGVuZXIoaWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpc3RlbmVycykgcmV0dXJuO1xuICAgICAgICAvLyBSZXZlcnNlLWl0ZXJhdGUgKyBzcGxpY2Ug4oCUIGhhbmRsZXMgZHVwbGljYXRlIGlkcyB3aXRob3V0IGluZGV4XG4gICAgICAgIC8vIGRyaWZ0LCBhbmQgbXV0YXRlcyB0aGUgZXhpc3RpbmcgYXJyYXkgKHRoZSBzaW5nbGV0b24gaXNcbiAgICAgICAgLy8gT2JqZWN0LmZyZWV6ZSdkLCBzbyB3ZSBjYW4ndCByZWFzc2lnbiB0aGlzLmxpc3RlbmVycykuXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXJzW2ldLmlkID09PSBpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFsZXJ0KHZpZXdJZCwgbWVzc2FnZSwgbWVzc2FnZVR5cGUpIHtcbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHRoaXMsIHRoaXMuZ2V0Vmlldyh2aWV3SWQpLmNvbmZpZy5pZCwge1xuICAgICAgICAgICAgbWVzc2FnZVR5cGU6IG1lc3NhZ2VUeXBlLFxuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZVxuICAgICAgICB9KTtcblxuICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5NRVNTQUdFX0FSUklWRUQsIGV2ZW50KTtcbiAgICB9XG5cbiAgICByZWZyZXNoVXNlckF2YXRhcihhdmF0YXIpIHtcbiAgICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiB0aGlzLmxpc3RlbmVycykge1xuICAgICAgICAgICAgaWYgKGxpc3RlbmVyLnR5cGUgPT09IEFWQVRBUl9MSVNURU5FUl9UWVBFKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIuaGFuZGxlcihhdmF0YXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0Q29uZmlybURpYWxvZ0hhbmRsZXIgPSAoY29udHJvbGxlcikgPT4ge1xuICAgICAgICB0aGlzLnByb3BzLmNvbmZpcm1hdGlvbkRpYWxvZ0NvbnRyb2xsZXIgPSBjb250cm9sbGVyO1xuICAgIH07XG5cbiAgICBzZXRBcHBsaWNhdGlvblRoZW1lQ29sb3JzKHByaW1hcnksIHNlY29uZGFyeSkge1xuICAgICAgICB0aGlzLnByb3BzLnByaW1hcnlDb2xvciA9IHByaW1hcnk7XG4gICAgICAgIHRoaXMucHJvcHMuc2Vjb25kYXJ5Q29sb3IgPSBzZWNvbmRhcnk7XG4gICAgfVxuXG4gICAgZ2V0QXBwbGljYXRpb25QcmltYXJ5Q29sb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnByaW1hcnlDb2xvcjtcbiAgICB9XG5cbiAgICBnZXRBcHBsaWNhdGlvblNlY29uZGFyeUNvbG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5zZWNvbmRhcnlDb2xvcjtcbiAgICB9XG5cbiAgICBvcGVuQ29uZmlybURpYWxvZyhtZXNzYWdlLCByZXN1bHRDYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5jb25maXJtYXRpb25EaWFsb2dDb250cm9sbGVyLm9wZW5EaWFsb2cobWVzc2FnZSwge1xuICAgICAgICAgICAgZXhlY3V0ZTogKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdENhbGxiYWNrKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvcGVuUG9wdXBWaWV3KHZpZXcpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5jb25maXJtYXRpb25EaWFsb2dDb250cm9sbGVyLm9wZW5Qb3B1cFZpZXcodmlldyk7XG4gICAgfVxuXG4gICAgY2xvc2VQb3B1cFZpZXcoKSB7XG4gICAgICAgIHRoaXMudmlld0NvbnRleHQucG9wdXAuY2xvc2VBbGxWaWV3cygpO1xuICAgICAgICB0aGlzLnByb3BzLmNvbmZpcm1hdGlvbkRpYWxvZ0NvbnRyb2xsZXIuY2xvc2VQb3B1cFZpZXcoKTtcbiAgICB9XG5cbiAgICBvcGVuV2luZG93Vmlldyh2aWV3KSB7XG4gICAgICAgIGV2ZW50TWFuYWdlci5lbWl0Q29udGV4dENoYW5nZUV2ZW50KGFwcGxpY2F0aW9uQ29udGV4dCwge3dpbmRvd1ZpZXc6IHZpZXd9KTtcbiAgICAgICAgYXBwbGljYXRpb25Db250ZXh0LndpbmRvd1ZpZXcgPSB2aWV3O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJlZ2lzdGVycyBhIGxpYnJhcnlcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lXG4gICAgICogQHBhcmFtIGxpYlxuICAgICAqL1xuICAgIHJlZ2lzdGVyTGlicmFyeSA9IChuYW1lLCBsaWIpID0+IHtcbiAgICAgICAgdGhpcy5saWJzW25hbWVdID0gbGliO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBzZXQgYXBwbGljYXRpb24gaGlzdG9yeVxuICAgICAqXG4gICAgICogQHBhcmFtIGhpc3RvcnlcbiAgICAgKi9cbiAgICBzZXRBcHBsaWNhdGlvbkhpc3RvcnkgPSAoaGlzdG9yeSkgPT4ge1xuICAgICAgICB0aGlzLnByb3BzLmFwcGxpY2F0aW9uSGlzdG9yeSA9IGhpc3Rvcnk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIGdldCBhcHBsaWNhdGlvbiBoaXN0b3J5XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBhcHBsaWNhdGlvbiBoaXN0b3J5XG4gICAgICovXG4gICAgZ2V0QXBwbGljYXRpb25IaXN0b3J5ID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5hcHBsaWNhdGlvbkhpc3Rvcnk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIHVwZGF0ZSBhcHBiYXIgdGl0bGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSB2aWV3SWRcbiAgICAgKiBAcGFyYW0gdGl0bGVcbiAgICAgKi9cbiAgICB1cGRhdGVBcHBCYXJUaXRsZSA9ICh2aWV3SWQsIHRpdGxlKSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMudmlld0NvbnRleHQpXG4gICAgICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3Q29udGV4dFtrZXldLnVwZGF0ZUFwcEJhclRpdGxlKHZpZXdJZCwgdGl0bGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIGNsZWFycyBhbGwgdmlld3NcbiAgICAgKlxuICAgICAqL1xuICAgIGNsZWFyID0gKCkgPT4ge1xuICAgICAgICBldmVudE1hbmFnZXIuY2xlYXJBbGxFdmVudExpc3RlbmVycygpO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnZpZXdDb250ZXh0KVxuICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHRba2V5XS5jbGVhcigpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maWxlQ2FjaGUuc3BsaWNlKDAsIHRoaXMuZmlsZUNhY2hlLmxlbmd0aCk7XG4gICAgfTtcblxuICAgIGdldEZpbGVEb21haW5DYWNoZSA9IChkb21haW4pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlQ2FjaGVFbGVtZW50IG9mIHRoaXMuZmlsZUNhY2hlKSB7XG4gICAgICAgICAgICBpZiAoZmlsZUNhY2hlRWxlbWVudC5kb21haW4gPT09IGRvbWFpbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWxlQ2FjaGVFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIGFkZCB2aWV3IGNvbmZpZ3VyYXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkb21haW5cbiAgICAgKiBAcGFyYW0gZmlsZVxuICAgICAqL1xuICAgIGFkZEZpbGUgPSAoZG9tYWluLCBmaWxlKSA9PiB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoZG9tYWluKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignUGxlYXNlIHNwZWNpZnkgZmlsZSBkb21haW4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWxlRG9tYWluQ2FjaGUgPSB0aGlzLmdldEZpbGVEb21haW5DYWNoZShkb21haW4pO1xuICAgICAgICBpZiAoZmlsZURvbWFpbkNhY2hlID09PSBudWxsKSB7XG4gICAgICAgICAgICBmaWxlRG9tYWluQ2FjaGUgPSB7fTtcbiAgICAgICAgICAgIGZpbGVEb21haW5DYWNoZS5kb21haW4gPSBkb21haW47XG4gICAgICAgICAgICBmaWxlRG9tYWluQ2FjaGUuZmlsZXMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuZmlsZUNhY2hlLnB1c2goZmlsZURvbWFpbkNhY2hlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYWNoZWRGaWxlID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBkb21haW5GaWxlIG9mIGZpbGVEb21haW5DYWNoZS5maWxlcykge1xuICAgICAgICAgICAgaWYgKGRvbWFpbkZpbGUuY29ycmVsYXRpb25JZCA9PT0gZmlsZS5jb3JyZWxhdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVkRmlsZSA9IGRvbWFpbkZpbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2FjaGVkRmlsZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgZmlsZURvbWFpbkNhY2hlLmZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRGaWxlLmNvbnRlbnQgPSBmaWxlLmNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdXBkYXRlQ29udGV4dCA9ICh2YWx1ZXMsIHB1Ymxpc2ggPSB0cnVlKSA9PiB7XG4gICAgICAgIGlmKHB1Ymxpc2gpIHtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5lbWl0Q29udGV4dENoYW5nZUV2ZW50KGFwcGxpY2F0aW9uQ29udGV4dCwgdmFsdWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5rZXlzKHZhbHVlcylcbiAgICAgICAgICAgIC5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHRba2V5XSA9IHZhbHVlc1trZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIGFkZCB2aWV3IGNvbmZpZ3VyYXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2aWV3IHRoZSBsaXN0ZW5lciB0byBiZSBhZGRlZFxuICAgICAqIEBwYXJhbSBwYXRoXG4gICAgICogQHBhcmFtIGZvcndhcmRcbiAgICAgKi9cbiAgICBhZGREYXNoYm9hcmRWaWV3ID0gKHZpZXcsIHBhdGgpID0+IHtcbiAgICAgICAgdGhpcy52aWV3Q29udGV4dC5kYXNoYm9hcmQuYWRkVmlldyh2aWV3KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjbGVhciBkYXNoYm9hcmQgdmlldyBjb25maWd1cmF0aW9uXG4gICAgICpcbiAgICAgKi9cbiAgICBjbGVhckRhc2hib2FyZFZpZXdzID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZXdDb250ZXh0LmRhc2hib2FyZC5jbG9zZUFsbFZpZXdzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWRkIHZpZXcgY29uZmlndXJhdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIHZpZXcgdGhlIGxpc3RlbmVyIHRvIGJlIGFkZGVkXG4gICAgICogQHBhcmFtIHBhdGhcbiAgICAgKiBAcGFyYW0gZm9yd2FyZFxuICAgICAqIEBwYXJhbSBtYW5hZ2VySWRcbiAgICAgKi9cbiAgICBhZGRWaWV3ID0gKHZpZXcsIHBhdGgsIGZvcndhcmQsIG1hbmFnZXJJZCkgPT4ge1xuICAgICAgICB0aGlzLnZpZXdDb250ZXh0W21hbmFnZXJJZF0uYWRkVmlldyh2aWV3LCBwYXRoLCBmb3J3YXJkKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogY2xvc2VzIGFsbCB2aWV3c1xuICAgICAqXG4gICAgICovXG4gICAgY2xvc2VBbGxWaWV3cyA9IChwcmVzZXJ2ZVdpbmRvdyA9IGZhbHNlKSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMudmlld0NvbnRleHQpXG4gICAgICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gV2hlbiBwcmVzZXJ2ZVdpbmRvdyBpcyBzZXQsIGxlYXZlIHRoZSBmbG9hdGluZyBXaW5kb3dWaWV3UG9ydCBvdmVybGF5IGludGFjdCDigJQgaXQgaXNcbiAgICAgICAgICAgICAgICAvLyBhIHNlcGFyYXRlIHZpZXdwb3J0IGluIG91ciBtdWx0aS12aWV3cG9ydCBkYXNoYm9hcmQgYW5kIG11c3Qgc3Vydml2ZSBhIG1haW4tdmlld1xuICAgICAgICAgICAgICAgIC8vIG5hdmlnYXRpb24gKGUuZy4gbGF1bmNoaW5nIHRoZSBkYXNoYm9hcmQgZnJvbSB0aGUgbWVudSkuXG4gICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlV2luZG93ICYmIGtleSA9PT0gJ3dpbmRvdycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHRba2V5XS5jbG9zZUFsbFZpZXdzKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXByZXNlcnZlV2luZG93KSB7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZW1pdENvbnRleHRDaGFuZ2VFdmVudChhcHBsaWNhdGlvbkNvbnRleHQsIHt3aW5kb3dWaWV3OiBudWxsfSk7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHQud2luZG93VmlldyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogY2xvc2VzIHRoZSBzcGVjaWZpZWQgdmlld1xuICAgICAqXG4gICAgICogQHBhcmFtIHZpZXdJZCB0aGUgbGlzdGVuZXIgdG8gYmUgYWRkZWRcbiAgICAgKiBAcGFyYW0gZm9yd2FyZFxuICAgICAqL1xuICAgIGNsb3NlVmlldyA9ICh2aWV3SWQsIGZvcndhcmQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy52aWV3Q29udGV4dCkpIHtcbiAgICAgICAgICAgIGxldCB2aWV3Q29udGV4dEVsZW1lbnQgPSB0aGlzLnZpZXdDb250ZXh0W2tleV07XG5cbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdwb3B1cCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmNvbmZpcm1hdGlvbkRpYWxvZ0NvbnRyb2xsZXIuY2xvc2VQb3B1cFZpZXcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmlldyA9IHZpZXdDb250ZXh0RWxlbWVudC5nZXRWaWV3KCk7XG4gICAgICAgICAgICAgICAgaWYgKHZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlld0NvbnRleHRFbGVtZW50LmNsb3NlVmlldyh2aWV3SWQsIGZvcndhcmQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnd2luZG93Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmVtaXRDb250ZXh0Q2hhbmdlRXZlbnQoYXBwbGljYXRpb25Db250ZXh0LCB7d2luZG93VmlldzogbnVsbH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Db250ZXh0LndpbmRvd1ZpZXcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB2aWV3IGNvbmZpZ3VyYXRpb24gd2l0aCBhIHBhcnRpY3VsYXIgaWRcbiAgICAgKlxuICAgICAqL1xuICAgIGdldFZpZXcgPSAoaWQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy52aWV3Q29udGV4dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLnZpZXdDb250ZXh0W2tleV0uZ2V0VmlldyhpZCk7XG4gICAgICAgICAgICBpZiAodmlldykge1xuICAgICAgICAgICAgICAgIHJldHVybiB2aWV3O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIGdldFZpZXdDb21wb25lbnQgPSAodmlldywgaWQpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwodmlldykgJiYgIVV0aWxzLmlzTnVsbCh2aWV3LmhhbmRsZSkgJiYgIVV0aWxzLmlzTnVsbCh2aWV3LmhhbmRsZS5hcGkpKSB7XG4gICAgICAgICAgICBpZiAoaWQgPT09IHZpZXcuaGFuZGxlLmFwaS5pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2aWV3LmhhbmRsZS5hcGk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2aWV3LmhhbmRsZT8uYXBpPy5nZXRDaGlsZCkge1xuICAgICAgICAgICAgICAgIGxldCBoYW5kbGUgPSB2aWV3LmhhbmRsZT8uYXBpPy5nZXRDaGlsZChpZCk7XG4gICAgICAgICAgICAgICAgaWYgKGhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlLmFwaTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaWQgPT09ICd2aWV3Jykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmlldy5oYW5kbGUuYXBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgdmlldyBjb25maWd1cmF0aW9uIHdpdGggYSBwYXJ0aWN1bGFyIGlkXG4gICAgICpcbiAgICAgKi9cbiAgICByZXNvbHZlQ29tcG9uZW50QXBpID0gKGlkKSA9PiB7XG4gICAgICAgIGlmIChBUFBfVkFSSUFCTEUgPT09IGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcGk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZ3JhcGhzID0gW107XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMudmlld0NvbnRleHQpKSB7XG4gICAgICAgICAgICBsZXQgdmlld0NvbnRleHQgPSB0aGlzLnZpZXdDb250ZXh0W2tleV07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyYXBoIG9mIHZpZXdDb250ZXh0LmdldEdyYXBocygpKSB7XG4gICAgICAgICAgICAgICAgZ3JhcGhzLnB1c2goZ3JhcGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBncmFwaCBvZiBncmFwaHMpIHtcbiAgICAgICAgICAgIGlmIChncmFwaC5pZCA9PT0gaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3JhcGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmlld3MgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy52aWV3Q29udGV4dCkpIHtcbiAgICAgICAgICAgIGxldCB2aWV3Q29udGV4dCA9IHRoaXMudmlld0NvbnRleHRba2V5XTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmlldyBvZiB2aWV3Q29udGV4dC5nZXRWaWV3cygpKSB7XG4gICAgICAgICAgICAgICAgdmlld3MucHVzaCh2aWV3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdmlldyBvZiB2aWV3cykge1xuICAgICAgICAgICAgbGV0IGNvbXBvbmVudCA9IHRoaXMuZ2V0Vmlld0NvbXBvbmVudCh2aWV3LCBpZCk7XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBQb3B1bGF0ZSBhbGwgcGxhY2UgaG9sZGVycyBpbiB0aGUgZ2l2ZW4gdGVtcGxhdGVcbiAgICAgKlxuICAgICAqL1xuICAgIHBvcHVsYXRlVGVtcGxhdGUgPSAodGVtcGxhdGUsIGV2ZW50RGF0YSkgPT4ge1xuICAgICAgICBsZXQgbWF0Y2hlcyA9IHRlbXBsYXRlLm1hdGNoKFRFTVBMQVRFX1RPS0VOX1JFR0VYKTtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwobWF0Y2hlcykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgbWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIGxldCBleHByZXNpb25Db250ZW50ID0gbWF0Y2guc3Vic3RyaW5nKG1hdGNoLmluZGV4T2YoJ3snKSArIDEsIG1hdGNoLmxhc3RJbmRleE9mKCd9JykpO1xuICAgICAgICAgICAgICAgIGxldCBleHByZXNzaW9uVmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICBpZiAoZXhwcmVzaW9uQ29udGVudC5zdGFydHNXaXRoKCckZXZlbnQuZGF0YScpICYmICFVdGlscy5pc051bGwoZXZlbnREYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcHMgPSBleHByZXNpb25Db250ZW50LnJlcGxhY2UoJyRldmVudC5kYXRhLicsICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCB2byA9IGV2ZW50RGF0YTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZvID0gdm9bcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uVmFsdWUgPSB2bztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uVmFsdWUgPSB0aGlzLnJlc29sdmVFeHByZXNzaW9uVmFsdWUoZXhwcmVzaW9uQ29udGVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKG1hdGNoLCBleHByZXNzaW9uVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlO1xuICAgIH07XG5cbiAgICByZXNvbHZlRXhwcmVzc2lvblZhbHVlID0gKGV4cHJlc3Npb24sIGV2ZW50RGF0YSA9IG51bGwpID0+IHtcbiAgICAgICAgbGV0IHBhcmFtRXhwcmVzc2lvbiA9IGV4cHJlc3Npb24ubWF0Y2goL1xcKChbXildKilcXCkvKTtcbiAgICAgICAgbGV0IGlzRXZlbnQgPSBleHByZXNzaW9uLnN0YXJ0c1dpdGgoJyRldmVudC5kYXRhJyk7XG4gICAgICAgIGxldCBiYXNlRXhwcmVzc2lvbiA9IGlzRXZlbnQgPyAnJGV2ZW50LmRhdGEnIDogIVV0aWxzLmlzTnVsbChwYXJhbUV4cHJlc3Npb24pICYmIHBhcmFtRXhwcmVzc2lvbi5sZW5ndGggPiAwID9cbiAgICAgICAgICAgIGV4cHJlc3Npb24ucmVwbGFjZShwYXJhbUV4cHJlc3Npb25bMF0sICcnKSA6IGV4cHJlc3Npb247XG5cbiAgICAgICAgbGV0IGV4cHJlc3Npb25Db250ZW50ID0gYmFzZUV4cHJlc3Npb24uc3Vic3RyaW5nKGJhc2VFeHByZXNzaW9uLmluZGV4T2YoJ3snKSArIDEsIGJhc2VFeHByZXNzaW9uLmluZGV4T2YoJ30nKSk7XG4gICAgICAgIGxldCBpc0NvbXBvbmVudCA9IGJhc2VFeHByZXNzaW9uLnN0YXJ0c1dpdGgoJ0AjeycpO1xuICAgICAgICBsZXQgaXNMaWIgPSBiYXNlRXhwcmVzc2lvbi5zdGFydHNXaXRoKCdAQHsnKTtcbiAgICAgICAgbGV0IHRva2VucyA9IGV4cHJlc3Npb25Db250ZW50LnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCBpZFRva2VuID0gdG9rZW5zWzBdO1xuXG4gICAgICAgIGlmIChpc0NvbXBvbmVudCB8fCBpc0V2ZW50KSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBpc0V2ZW50ID8gZXZlbnREYXRhIDogdGhpcy5yZXNvbHZlQ29tcG9uZW50QXBpKGV4cHJlc3Npb25Db250ZW50KTtcbiAgICAgICAgICAgIGxldCBleHByZXNzaW9uQ2xvc3VyZSA9IGlzRXZlbnQgPyAnZGF0YS4nIDogJ30uJztcbiAgICAgICAgICAgIGxldCBpbmRleCA9IGV4cHJlc3Npb24uaW5kZXhPZihleHByZXNzaW9uQ2xvc3VyZSk7XG5cbiAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlDaGFpbiA9IGV4cHJlc3Npb24uc3Vic3RyaW5nKGluZGV4ICsgZXhwcmVzc2lvbkNsb3N1cmUubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBsZXQgcHJvcHMgPSBwcm9wZXJ0eUNoYWluLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTGliKSB7XG4gICAgICAgICAgICAvKmlmIChpZFRva2VuID09PSAndmlldycpIHtcbiAgICAgICAgICAgICAgICBpZFRva2VuID0gdGhpcy5nZXRDdXJyZW50VmlldygpLmNvbmZpZy5pZCArICdfbGliJztcbiAgICAgICAgICAgIH0qL1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5saWJzW2lkVG9rZW5dO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHJlc3Npb247XG4gICAgfTtcblxuICAgIHNldEV4cHJlc3Npb25WYWx1ZXMgPSAob2JqLCBldmVudERhdGEgPSBudWxsKSA9PiB7XG4gICAgICAgIGxldCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShvYmopO1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gaXNBcnJheSA/IFtdIDoge307XG5cbiAgICAgICAgT2JqZWN0LmtleXMob2JqKVxuICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09ICdvYmplY3QnICYmIG9ialtrZXldICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRba2V5XSA9IHRoaXMuc2V0RXhwcmVzc2lvblZhbHVlcyhvYmpba2V5XSwgZXZlbnREYXRhKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb2JqVmFsdWUgPSBvYmpba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqVmFsdWUgPSBvYmpWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ialZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbihvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjcmlwdFZhbHVlID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHQoYHJlc29sdmVQYXJhbV8ke01hdGgucmFuZG9tKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJy4nLCAnXycpfWAsIG9ialZhbHVlLCBudWxsLCBudWxsLCBldmVudERhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NyaXB0VmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2JqS2V5ID0ga2V5ID09PSAndmFsdWVFeHByZXNzaW9uJyA/ICd2YWx1ZScgOiBrZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZFtvYmpLZXldID0gc2NyaXB0VmFsdWUgIT09IG51bGwgJiYgc2NyaXB0VmFsdWUuaW5zdGFuY2VUeXBlID09PSAnVHlwZWRWYWx1ZScgPyBzY3JpcHRWYWx1ZS52YWx1ZSA6IHNjcmlwdFZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVkW29iaktleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1cGRhdGVkLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwcm9jZXNzaW5nIHBhcmFtZXRlciBleHByZXNzaW9uIDogXCIgKyBvYmpWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRba2V5XSA9IG9ialZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfTtcblxuICAgIGZpbGxFdmVudERhdGFWYWx1ZShvYmosIGV2ZW50RGF0YSkge1xuICAgICAgICBpZiAob2JqKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhvYmopXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gb2JqW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxsRXZlbnREYXRhVmFsdWUodmFsLCBldmVudERhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gJyRldmVudC5kYXRhJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2tleV0gPSBldmVudERhdGE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB2aWV3IGNvbmZpZ3VyYXRpb24gd2l0aCBhIHBhcnRpY3VsYXIgaWRcbiAgICAgKlxuICAgICAqL1xuICAgIHJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZSA9IChjb25maWdWYWx1ZSwgZXZlbnREYXRhKSA9PiB7XG4gICAgICAgIGlmICghY29uZmlnVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25maWdWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbihjb25maWdWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVFeHByZXNzaW9uVmFsdWUoY29uZmlnVmFsdWUsIGV2ZW50RGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQganNvbiA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZ1ZhbHVlKTtcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0ganNvbi5tYXRjaChURU1QTEFURV9SRUdFWCk7XG5cbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1hdGNoZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0RXhwcmVzc2lvblZhbHVlcyhjb25maWdWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpc0V4cHJlc3Npb24ob2JqVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG9ialZhbHVlICYmIG9ialZhbHVlLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAuaW5jbHVkZXMoJyRhcHBsaWNhdGlvbicpXG4gICAgICAgICAgICB8fCBvYmpWYWx1ZSAmJiBvYmpWYWx1ZS50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgLnN0YXJ0c1dpdGgoJyRldmVudC5kYXRhJylcbiAgICAgICAgICAgIHx8ICFVdGlscy5pc051bGwob2JqVmFsdWUpICYmIHR5cGVvZiBvYmpWYWx1ZSA9PT0gJ3N0cmluZycgJiYgIVV0aWxzLmlzTnVsbChvYmpWYWx1ZS5tYXRjaChURU1QTEFURV9SRUdFWCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB2aWV3IGNvbmZpZ3VyYXRpb24gd2l0aCBhIHBhcnRpY3VsYXIgaWRcbiAgICAgKlxuICAgICAqL1xuICAgIHJlc29sdmVQYXJhbWV0ZXJWYWx1ZSA9IChwYXJhbWV0ZXJDb25maWcsIGV2ZW50RGF0YSA9IG51bGwpID0+IHtcblxuICAgICAgICBpZiAocGFyYW1ldGVyQ29uZmlnLnN0YXRpYykge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlckNvbmZpZy52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBleHByZXNzaW9uID0gcGFyYW1ldGVyQ29uZmlnLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIGxldCBpc0V2ZW50ID0gZXhwcmVzc2lvbi5zdGFydHNXaXRoKCckZXZlbnQuZGF0YScpO1xuICAgICAgICBpZiAoaXNFdmVudCkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gZXZlbnREYXRhO1xuICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgZXhwcmVzc2lvbi5pbmNsdWRlcygnWycpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlSW5kZXggPSBleHByZXNzaW9uLnN1YnN0cmluZyhleHByZXNzaW9uLmluZGV4T2YoJ1snKSArIDEsIGV4cHJlc3Npb24uaW5kZXhPZignXScpKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlW3ZhbHVlSW5kZXhdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUaGlzIGNoZWNrcyBpZiB0aGVyZSBpcyBhIHJlZmVyZW5jZSB0byBzb21lIGRhdGEgcHJvcGVydHlcbiAgICAgICAgICAgIGxldCBleHByZXNzaW9uQ2xvc3VyZSA9ICdkYXRhLic7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSBleHByZXNzaW9uLmluZGV4T2YoZXhwcmVzc2lvbkNsb3N1cmUpO1xuICAgICAgICAgICAgaWYoaW5kZXggPCAwKSB7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbkNsb3N1cmUgPSBcIl0uXCI7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBleHByZXNzaW9uLmluZGV4T2YoZXhwcmVzc2lvbkNsb3N1cmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5Q2hhaW4gPSBleHByZXNzaW9uLnN1YnN0cmluZyhpbmRleCArIGV4cHJlc3Npb25DbG9zdXJlLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgbGV0IHByb3BzID0gcHJvcGVydHlDaGFpbi5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlW3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwYXJhbWV0ZXJDb25maWcudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdOVUxMIHBhcmFtZXRlciB2YWx1ZSBleHByZXNzaW9uIGluIDogJyArIEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlckNvbmZpZykpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNFeHByZXNzaW9uKHBhcmFtZXRlckNvbmZpZy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbCA9IHRoaXMucmVzb2x2ZVBhcmFtZXRlckNvbmZpZ1ZhbHVlKHBhcmFtZXRlckNvbmZpZy52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IHBhcmFtZXRlckNvbmZpZy52YWx1ZTtcbiAgICAgICAgICAgIHZhbCA9IGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0KGByZXNvbHZlUGFyYW1fJHtNYXRoLnJhbmRvbSgpXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgnLicsICdfJyl9YCwgZXhwcmVzc2lvbiwgbnVsbCwgbnVsbCwge2RhdGE6IGV2ZW50RGF0YX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbCh2YWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHZhbCkgJiYgIVV0aWxzLmlzTnVsbCh2YWwuaW5zdGFuY2VUeXBlKVxuICAgICAgICAgICAgJiYgdmFsLmluc3RhbmNlVHlwZSA9PT0gJ1R5cGVkVmFsdWUnKSB7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXJDb25maWcudHlwZSkpIHtcbiAgICAgICAgICAgICAgICB2YWwudHlwZSA9IHBhcmFtZXRlckNvbmZpZy50eXBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHR5cGUgPSBudWxsO1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXJDb25maWcudHlwZSkpIHtcbiAgICAgICAgICAgIHR5cGUgPSBwYXJhbWV0ZXJDb25maWcudHlwZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWwgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlb2YgdmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUeXBlZFZhbHVlKHR5cGUsIHZhbCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgYSB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIHZpZXcncyBtb2RlbFxuICAgICAqIEBwYXJhbSBrZXlcbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKiBAcGFyYW0gdmlld0lkXG4gICAgICovXG4gICAgc2V0TW9kZWxWYWx1ZSA9IChrZXksIHZhbHVlLCB2aWV3SWQpID0+IHtcbiAgICAgICAgdGhpcy5nZXRWaWV3KHZpZXdJZClcbiAgICAgICAgICAgIC5oYW5kbGVcbiAgICAgICAgICAgIC5hcGlcbiAgICAgICAgICAgIC5zZXRNb2RlbFZhbHVlKGtleSwgdmFsdWUpO1xuICAgICAgICBldmVudE1hbmFnZXIucHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnModmlld0lkKTtcbiAgICB9O1xuXG4gICAgZ2V0SWQgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnYXBwbGljYXRpb25NYW5hZ2VyJztcbiAgICB9O1xuXG4gICAgZW5hYmxlRm9ybU1hcmtlcnMoZW5hYmxlZCkge1xuICAgICAgICB0aGlzLnByb3BzLmZvcm1NYXJrZXJzRW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgfVxuXG4gICAgaXNGb3JtTWFya2Vyc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1NYXJrZXJzRW5hYmxlZDtcbiAgICB9XG5cbiAgICBzZXREYXNoYm9hcmRWaWV3KHZpZXcpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5kYXNoYm9hcmRWaWV3ID0gdmlldztcbiAgICB9XG5cbiAgICBzZXRVc2VyRGV0YWlscyh1c2VyRGV0YWlscykge1xuICAgICAgICB0aGlzLnByb3BzLnVzZXJEZXRhaWxzID0gdXNlckRldGFpbHM7XG4gICAgfVxuXG4gICAgZ2V0VXNlckRldGFpbHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnVzZXJEZXRhaWxzO1xuICAgIH1cblxuICAgIGxvYWRHcmFwaChpc1BhcmVudCwgY29uZmlnLCBwYXJhbWV0ZXJWYWx1ZXMsIHZpZXdDb250ZXh0KSB7XG4gICAgICAgIHRoaXMudmlld0NvbnRleHRbdmlld0NvbnRleHRdLmxvYWRHcmFwaChpc1BhcmVudCwgY29uZmlnLCBwYXJhbWV0ZXJWYWx1ZXMpO1xuICAgIH1cblxuICAgIHJlbW92ZUxvYWRlZEdyYXBoKHZpZXdDb250ZXh0KSB7XG4gICAgICAgIGxldCBncmFwaCA9IHRoaXMudmlld0NvbnRleHRbdmlld0NvbnRleHRdLnJlbW92ZUxvYWRlZEdyYXBoKCk7XG4gICAgICAgIGlmIChncmFwaCAmJiBncmFwaC5jb25maWcuaXNXaW5kb3cpIHtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5lbWl0Q29udGV4dENoYW5nZUV2ZW50KGFwcGxpY2F0aW9uQ29udGV4dCwge3dpbmRvd1ZpZXc6IG51bGx9KTtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uQ29udGV4dC53aW5kb3dWaWV3ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNpZ25hbEdyYXBoKGlkLCBldmVudCkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnZpZXdDb250ZXh0KVxuICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHRba2V5XS5zaWduYWxHcmFwaChpZCwgZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdmlld0NvbnRleHRcbiAgICAgKi9cbiAgICBnZXRQcmV2aW91c0hpc3RvcnlFbGVtZW50ID0gKHZpZXdDb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0W3ZpZXdDb250ZXh0XS5nZXRQcmV2aW91c0hpc3RvcnlFbGVtZW50KCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIHZpZXdDb250ZXh0XG4gICAgICovXG4gICAgZ2V0Q3VycmVudEdyYXBoID0gKHZpZXdDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBncmFwaHMgPSB0aGlzLnZpZXdDb250ZXh0W3ZpZXdDb250ZXh0XS5ncmFwaHM7XG4gICAgICAgIHJldHVybiBncmFwaHMgJiYgZ3JhcGhzLmxlbmd0aCA+IDAgPyBncmFwaHNbZ3JhcGhzLmxlbmd0aCAtIDFdIDogbnVsbDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogdmlld0NvbnRleHRcbiAgICAgKi9cbiAgICBnZXRUb3BWaWV3ID0gKHZpZXdDb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0W3ZpZXdDb250ZXh0XS5nZXRUb3BWaWV3KCk7XG4gICAgfTtcbn1cblxuY29uc3QgaW5zdGFuY2UgPSBuZXcgQXBwbGljYXRpb25NYW5hZ2VyKCk7XG5PYmplY3QuZnJlZXplKGluc3RhbmNlKTtcbmV4cG9ydCBkZWZhdWx0IGluc3RhbmNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFDLHVCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBTSxXQUFB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
765
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfT2JzZXJ2YWJsZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX0V2ZW50IiwiX0V2ZW50VHlwZSIsIl9VdGlscyIsIl9EeW5hbWljSlMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9UeXBlZFZhbHVlIiwiX1NvY2tldE1hbmFnZXIiLCJfVmlld0NvbnRleHQiLCJfaGVscGVycyIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIkFQUF9WQVJJQUJMRSIsImV4cG9ydHMiLCJTT0NLRVRfVkFSSUFCTEUiLCJBVkFUQVJfTElTVEVORVJfVFlQRSIsIkRBU0hCT0FSRF9TVEFURSIsIlNZU1RFTV9FVkVOVCIsIlRFTVBMQVRFX1RPS0VOX1JFR0VYIiwiUmVnRXhwIiwiYXBwbGljYXRpb25Db250ZXh0IiwiQXBwbGljYXRpb25NYW5hZ2VyIiwiY29uc3RydWN0b3IiLCJfdGhpcyIsInN1YnNjcmlwdGlvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiZXZlbnRNYW5hZ2VyIiwiYWRkQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9uIiwiY29udHJvbGxlciIsInByb3BzIiwiY29uZmlybWF0aW9uRGlhbG9nQ29udHJvbGxlciIsIm5hbWUiLCJsaWIiLCJsaWJzIiwiaGlzdG9yeSIsImFwcGxpY2F0aW9uSGlzdG9yeSIsInZpZXdJZCIsInRpdGxlIiwia2V5cyIsInZpZXdDb250ZXh0IiwiZm9yRWFjaCIsImtleSIsInVwZGF0ZUFwcEJhclRpdGxlIiwiY2xlYXJBbGxFdmVudExpc3RlbmVycyIsImNsZWFyIiwiZmlsZUNhY2hlIiwic3BsaWNlIiwibGVuZ3RoIiwiZG9tYWluIiwiZmlsZUNhY2hlRWxlbWVudCIsImZpbGUiLCJVdGlscyIsImlzTnVsbCIsImNvbnNvbGUiLCJlcnJvciIsImZpbGVEb21haW5DYWNoZSIsImdldEZpbGVEb21haW5DYWNoZSIsImZpbGVzIiwicHVzaCIsImNhY2hlZEZpbGUiLCJkb21haW5GaWxlIiwiY29ycmVsYXRpb25JZCIsImNvbnRlbnQiLCJ2YWx1ZXMiLCJwdWJsaXNoIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZW1pdENvbnRleHRDaGFuZ2VFdmVudCIsInZpZXciLCJwYXRoIiwiZGFzaGJvYXJkIiwiYWRkVmlldyIsImNsb3NlQWxsVmlld3MiLCJmb3J3YXJkIiwibWFuYWdlcklkIiwicHJlc2VydmVXaW5kb3ciLCJ3aW5kb3dWaWV3Iiwidmlld0NvbnRleHRFbGVtZW50IiwiY2xvc2VQb3B1cFZpZXciLCJnZXRWaWV3IiwiY2xvc2VWaWV3IiwiaWQiLCJoYW5kbGUiLCJhcGkiLCJfdmlldyRoYW5kbGUiLCJnZXRDaGlsZCIsIl92aWV3JGhhbmRsZTIiLCJncmFwaHMiLCJncmFwaCIsImdldEdyYXBocyIsInZpZXdzIiwiZ2V0Vmlld3MiLCJjb21wb25lbnQiLCJnZXRWaWV3Q29tcG9uZW50IiwidGVtcGxhdGUiLCJldmVudERhdGEiLCJtYXRjaGVzIiwibWF0Y2giLCJleHByZXNpb25Db250ZW50Iiwic3Vic3RyaW5nIiwiaW5kZXhPZiIsImxhc3RJbmRleE9mIiwiZXhwcmVzc2lvblZhbHVlIiwic3RhcnRzV2l0aCIsInJlcGxhY2UiLCJzcGxpdCIsInZvIiwicHJvcCIsInJlc29sdmVFeHByZXNzaW9uVmFsdWUiLCJleHByZXNzaW9uIiwicGFyYW1FeHByZXNzaW9uIiwiaXNFdmVudCIsImJhc2VFeHByZXNzaW9uIiwiZXhwcmVzc2lvbkNvbnRlbnQiLCJpc0NvbXBvbmVudCIsImlzTGliIiwidG9rZW5zIiwiaWRUb2tlbiIsInJlc29sdmVDb21wb25lbnRBcGkiLCJleHByZXNzaW9uQ2xvc3VyZSIsImluZGV4IiwicHJvcGVydHlDaGFpbiIsIm9iaiIsImlzQXJyYXkiLCJBcnJheSIsInVwZGF0ZWQiLCJzZXRFeHByZXNzaW9uVmFsdWVzIiwib2JqVmFsdWUiLCJpc0V4cHJlc3Npb24iLCJzY3JpcHRWYWx1ZSIsImR5bmFtaWNKUyIsImV4ZWN1dGVTY3JpcHQiLCJjb25jYXQiLCJNYXRoIiwicmFuZG9tIiwidG9TdHJpbmciLCJvYmpLZXkiLCJpbnN0YW5jZVR5cGUiLCJ0eXBlIiwiY29uZmlnVmFsdWUiLCJqc29uIiwiSlNPTiIsInN0cmluZ2lmeSIsIlRFTVBMQVRFX1JFR0VYIiwicGFyYW1ldGVyQ29uZmlnIiwic3RhdGljIiwiaW5jbHVkZXMiLCJ2YWx1ZUluZGV4IiwidmFsIiwicmVzb2x2ZVBhcmFtZXRlckNvbmZpZ1ZhbHVlIiwiZGF0YSIsIlR5cGVkVmFsdWUiLCJzZXRNb2RlbFZhbHVlIiwicHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnMiLCJnZXRQcmV2aW91c0hpc3RvcnlFbGVtZW50IiwiZ2V0VG9wVmlldyIsImluc3RhbmNlIiwibWFpbiIsIlZpZXdDb250ZXh0Iiwid2luZG93IiwicG9wdXAiLCJjb25jdXJyZW50IiwibGlzdGVuZXJzIiwiZ2V0SWQiLCJyZWZyZXNoVXNlckF2YXRhciIsImF2YXRhciIsImFsZXJ0IiwibWVzc2FnZSIsIm1lc3NhZ2VUeXBlIiwicmVtb3ZlTG9hZGVkR3JhcGgiLCJzZXRIYXNBY3RpdmVNZWV0aW5nIiwiaGFzQWN0aXZlTWVldGluZyIsImdldEFjdGl2ZU1lZXRpbmdLZXkiLCJnZXRVc2VyRGV0YWlscyIsImZpcmVFdmVudCIsImV2ZW50VHlwZSIsImV2ZW50IiwiRXZlbnQiLCJzb3VyY2UiLCJ1cGRhdGVDb250ZXh0IiwiZW1pdFNvY2tldEV2ZW50Iiwic29ja2V0TWFuYWdlciIsImVtaXRFdmVudCIsInNldEFjdGl2ZVRlbmFudCIsInRlbmFudCIsImdldEFjdGl2ZVRlbmFudCIsImdldFVuaXF1ZU9yZ0ZvclJvbGUiLCJyb2xlIiwic2V0RGFzaGJvYXJkU3RhdGUiLCJkYXNoYm9hcmRTdGF0ZSIsImdldERhc2hib2FyZFN0YXRlIiwiYXJnIiwicHJvdG90eXBlIiwicHJvZmlsZSIsInBhcnNlIiwicm9sZXMiLCJvcmdhbmlzYXRpb25zIiwiZmlsdGVyIiwib3JnIiwibWFwIiwiY29kZSIsIkVycm9yIiwibmF2aWdhdGUiLCJuYXZpZ2F0b3IiLCJzZXREYXNoYm9hcmRTZXR0aW5ncyIsImRhc2hib2FyZFNldHRpbmdzIiwic3RhdGUiLCJsaXN0ZW5lciIsImxvZyIsImhhbmRsZXIiLCJnZXREYXNoYm9hcmRTZXR0aW5ncyIsInNldE5hdmlnYXRvciIsInNldEFjdGl2ZU1lZXRpbmdLZXkiLCJhY3RpdmVNZWV0aW5nS2V5IiwiaXNXaW5kb3dPcGVuIiwic2V0U2VydmljZUFwaVBhdGgiLCJzZXJ2aWNlQXBpUGF0aCIsImdldFNlcnZpY2VBcGlQYXRoIiwic2V0VUlDb25maWdQYXRoIiwidWlDb25maWdQYXRoIiwic2V0Q29udGV4dFJvb3QiLCJjb250ZXh0Um9vdCIsImdldENvbnRleHRSb290IiwiZ2V0VUlDb25maWdQYXRoIiwic2V0RmlsZXNBcGlQYXRoIiwiZmlsZXNBcGlQYXRoIiwiZ2V0RmlsZXNBcGlQYXRoIiwiYWRkQXBwbGljYXRpb25MaXN0ZW5lciIsInJlbW92ZUFwcGxpY2F0aW9uTGlzdGVuZXIiLCJjb25maWciLCJFdmVudFR5cGUiLCJNRVNTQUdFX0FSUklWRUQiLCJzZXRBcHBsaWNhdGlvblRoZW1lQ29sb3JzIiwicHJpbWFyeSIsInNlY29uZGFyeSIsInByaW1hcnlDb2xvciIsInNlY29uZGFyeUNvbG9yIiwiZ2V0QXBwbGljYXRpb25QcmltYXJ5Q29sb3IiLCJnZXRBcHBsaWNhdGlvblNlY29uZGFyeUNvbG9yIiwib3BlbkNvbmZpcm1EaWFsb2ciLCJyZXN1bHRDYWxsYmFjayIsIm9wZW5EaWFsb2ciLCJleGVjdXRlIiwicmVzdWx0Iiwib3BlblBvcHVwVmlldyIsIm9wZW5XaW5kb3dWaWV3IiwiZmlsbEV2ZW50RGF0YVZhbHVlIiwiZW5hYmxlRm9ybU1hcmtlcnMiLCJlbmFibGVkIiwiZm9ybU1hcmtlcnNFbmFibGVkIiwiaXNGb3JtTWFya2Vyc0VuYWJsZWQiLCJzZXREYXNoYm9hcmRWaWV3IiwiZGFzaGJvYXJkVmlldyIsInNldFVzZXJEZXRhaWxzIiwidXNlckRldGFpbHMiLCJsb2FkR3JhcGgiLCJpc1BhcmVudCIsInBhcmFtZXRlclZhbHVlcyIsImlzV2luZG93Iiwic2lnbmFsR3JhcGgiLCJmcmVlemUiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvQXBwbGljYXRpb25NYW5hZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCBFdmVudCBmcm9tICcuL2V2ZW50L0V2ZW50JztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4vVXRpbHMnO1xuaW1wb3J0IGR5bmFtaWNKUywge1RFTVBMQVRFX1JFR0VYfSBmcm9tICcuL0R5bmFtaWNKUyc7XG5pbXBvcnQgVHlwZWRWYWx1ZSBmcm9tICcuL1R5cGVkVmFsdWUnO1xuaW1wb3J0IHNvY2tldE1hbmFnZXIgZnJvbSBcIi4vY29tcG9uZW50cy9Tb2NrZXRNYW5hZ2VyXCI7XG5pbXBvcnQge1ZpZXdDb250ZXh0fSBmcm9tIFwiLi9WaWV3Q29udGV4dFwiO1xuaW1wb3J0IHtpc0FycmF5fSBmcm9tIFwicnJ1bGUvZGlzdC9lc20vaGVscGVyc1wiO1xuXG5leHBvcnQgY29uc3QgQVBQX1ZBUklBQkxFID0gJ19fQVBQTElDQVRJT05fT1VJX1NZU19WQVJfXyc7XG5leHBvcnQgY29uc3QgU09DS0VUX1ZBUklBQkxFID0gJ19fU09DS0VUX1ZBUklBQkxFX09VSV9TWVNfVkFSX18nO1xuZXhwb3J0IGNvbnN0IEFWQVRBUl9MSVNURU5FUl9UWVBFID0gJ0FWQVRBUl9MSVNURU5FUic7XG5leHBvcnQgY29uc3QgREFTSEJPQVJEX1NUQVRFID0gJ0RBU0hCT0FSRF9TVEFURSc7XG5leHBvcnQgY29uc3QgU1lTVEVNX0VWRU5UID0gJ1NZU1RFTV9FVkVOVCc7XG5leHBvcnQgY29uc3QgVEVNUExBVEVfVE9LRU5fUkVHRVggPSBuZXcgUmVnRXhwKCcoKFskXXsxfVt7XXsxfSkoKFthLXpBLVowLTlfJC5AI3t9W1xcXFxdXSopKyl7MX0oW31dezF9KSkrJywgJ2cnKTtcblxuY29uc3QgYXBwbGljYXRpb25Db250ZXh0ID0ge307XG5cbmNsYXNzIEFwcGxpY2F0aW9uTWFuYWdlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGlmICghQXBwbGljYXRpb25NYW5hZ2VyLmluc3RhbmNlKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgIG1haW46IG5ldyBWaWV3Q29udGV4dCgnbWFpbicpLFxuICAgICAgICAgICAgICAgIHdpbmRvdzogbmV3IFZpZXdDb250ZXh0KCd3aW5kb3cnKSxcbiAgICAgICAgICAgICAgICBkYXNoYm9hcmQ6IG5ldyBWaWV3Q29udGV4dCgnZGFzaGJvYXJkJyksXG4gICAgICAgICAgICAgICAgcG9wdXA6IG5ldyBWaWV3Q29udGV4dCgncG9wdXAnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGhlIGRhc2hib2FyZCBob2xkcyBtYW55IGNhcmQgdmlld3Mgc2ltdWx0YW5lb3VzbHksIHNvIGl0IG11c3RcbiAgICAgICAgICAgIC8vIGFjY3VtdWxhdGUgdmlld3MgaW5zdGVhZCBvZiBldmljdGluZyB0aGUgdG9wIG9uZSBvbiBlYWNoIGFkZC5cbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHQuZGFzaGJvYXJkLmNvbmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnByb3BzID0ge307XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVycyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5saWJzID0ge307XG4gICAgICAgICAgICB0aGlzLmZpbGVDYWNoZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5hcGkgPSB7XG4gICAgICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UuZ2V0SWQoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlZnJlc2hVc2VyQXZhdGFyKGF2YXRhcikge1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5yZWZyZXNoVXNlckF2YXRhcihhdmF0YXIpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWxlcnQodmlld0lkLCBtZXNzYWdlLCBtZXNzYWdlVHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5hbGVydCh2aWV3SWQsIG1lc3NhZ2UsIG1lc3NhZ2VUeXBlLCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZW1vdmVMb2FkZWRHcmFwaCh2aWV3Q29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5yZW1vdmVMb2FkZWRHcmFwaCh2aWV3Q29udGV4dCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXRIYXNBY3RpdmVNZWV0aW5nKGhhc0FjdGl2ZU1lZXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2V0SGFzQWN0aXZlTWVldGluZyhoYXNBY3RpdmVNZWV0aW5nKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGhhc0FjdGl2ZU1lZXRpbmcoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5oYXNBY3RpdmVNZWV0aW5nKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBnZXRBY3RpdmVNZWV0aW5nS2V5KCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UuZ2V0QWN0aXZlTWVldGluZ0tleSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0VXNlckRldGFpbHMoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5nZXRVc2VyRGV0YWlscygpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY2xvc2VQb3B1cFZpZXcoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5jbG9zZVBvcHVwVmlldygpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZmlyZUV2ZW50KGV2ZW50VHlwZSwgZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoZXZlbnRUeXBlLCBuZXcgRXZlbnQoZXZlbnQuc291cmNlLCBldmVudC52aWV3SWQsIGV2ZW50LmRhdGEpKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbnRleHQodmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGVDb250ZXh0KHZhbHVlcyk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlbWl0U29ja2V0RXZlbnQoZXZlbnRUeXBlLCBkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChldmVudFR5cGUsIGRhdGEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlVGVuYW50KHRlbmFudCkge1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5zZXRBY3RpdmVUZW5hbnQodGVuYW50KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdldEFjdGl2ZVRlbmFudCgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLmdldEFjdGl2ZVRlbmFudCgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0VW5pcXVlT3JnRm9yUm9sZShyb2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5nZXRVbmlxdWVPcmdGb3JSb2xlKHJvbGUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0RGFzaGJvYXJkU3RhdGUoZGFzaGJvYXJkU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2V0RGFzaGJvYXJkU3RhdGUoZGFzaGJvYXJkU3RhdGUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0RGFzaGJvYXJkU3RhdGUoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5nZXREYXNoYm9hcmRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSkge1xuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkgPSBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJnKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBBcHBsaWNhdGlvbk1hbmFnZXIuaW5zdGFuY2UgPSB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFwcGxpY2F0aW9uTWFuYWdlci5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBnZXRVbmlxdWVPcmdGb3JSb2xlKHJvbGUpIHtcbiAgICAgICAgbGV0IHByb2ZpbGUgPSBKU09OLnBhcnNlKHRoaXMuZ2V0VXNlckRldGFpbHMoKS5wcm9maWxlKTtcbiAgICAgICAgbGV0IHJvbGVzID0gcHJvZmlsZS5vcmdhbmlzYXRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKG9yZyA9PiBvcmcucm9sZXMuaW5jbHVkZXMocm9sZSkpIC8vIEZpbHRlciBvcmdhbmlzYXRpb25zIGJ5IHJvbGVcbiAgICAgICAgICAgIC5tYXAob3JnID0+IG9yZy5jb2RlKTtcblxuICAgICAgICBpZiAocm9sZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBvcmdhbmlzYXRpb24gZm9yIHJvbGUgOiBbXCIgKyByb2xlICsgXCJdXCIpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcm9sZXNbMF07XG4gICAgfVxuXG4gICAgYWRkQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9uID0gKHN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5hZGRBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgIHJlc29sdmUoYXBwbGljYXRpb25Db250ZXh0KTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG5hdmlnYXRlKHBhdGgpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5uYXZpZ2F0b3IocGF0aCk7XG4gICAgfVxuXG4gICAgc2V0RGFzaGJvYXJkU2V0dGluZ3MoZGFzaGJvYXJkU2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5kYXNoYm9hcmRTZXR0aW5ncyA9IGRhc2hib2FyZFNldHRpbmdzO1xuICAgIH1cblxuICAgIHNldERhc2hib2FyZFN0YXRlKHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHJvcHMuZGFzaGJvYXJkU3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiB0aGlzLmxpc3RlbmVycykge1xuICAgICAgICAgICAgY29uc29sZS5sb2cobGlzdGVuZXIpO1xuICAgICAgICAgICAgaWYgKGxpc3RlbmVyLnR5cGUgPT09IERBU0hCT0FSRF9TVEFURSkge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyLmhhbmRsZXIoc3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RGFzaGJvYXJkU2V0dGluZ3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmRhc2hib2FyZFNldHRpbmdzO1xuICAgIH1cblxuICAgIHNldEFjdGl2ZVRlbmFudCh0ZW5hbnQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy50ZW5hbnQgPSB0ZW5hbnQ7XG4gICAgfVxuXG4gICAgZ2V0QWN0aXZlVGVuYW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy50ZW5hbnQ7XG4gICAgfVxuXG4gICAgc2V0TmF2aWdhdG9yKG5hdmlnYXRvcikge1xuICAgICAgICB0aGlzLnByb3BzLm5hdmlnYXRvciA9IG5hdmlnYXRvcjtcbiAgICB9XG5cbiAgICBzZXRBY3RpdmVNZWV0aW5nS2V5KGFjdGl2ZU1lZXRpbmdLZXkpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5hY3RpdmVNZWV0aW5nS2V5ID0gYWN0aXZlTWVldGluZ0tleTtcbiAgICB9XG5cbiAgICBnZXRBY3RpdmVNZWV0aW5nS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5hY3RpdmVNZWV0aW5nS2V5O1xuICAgIH1cblxuICAgIHNldEhhc0FjdGl2ZU1lZXRpbmcoaGFzQWN0aXZlTWVldGluZykge1xuICAgICAgICB0aGlzLnByb3BzLmhhc0FjdGl2ZU1lZXRpbmcgPSBoYXNBY3RpdmVNZWV0aW5nO1xuICAgIH1cblxuICAgIGhhc0FjdGl2ZU1lZXRpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmhhc0FjdGl2ZU1lZXRpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJ1ZSB3aGVuIHRoZSBmbG9hdGluZyBXaW5kb3dWaWV3UG9ydCBvdmVybGF5IGN1cnJlbnRseSBob3N0cyBhIHZpZXcuXG4gICAgICogVXNlZCB0byBkZWNpZGUgd2hldGhlciBhIG1lbnUgbmF2aWdhdGlvbiBzaG91bGQgYXV0by1waW4gdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBpc1dpbmRvd09wZW4oKSB7XG4gICAgICAgIHJldHVybiBhcHBsaWNhdGlvbkNvbnRleHQud2luZG93VmlldyAhPSBudWxsO1xuICAgIH1cblxuICAgIHNldFNlcnZpY2VBcGlQYXRoKHNlcnZpY2VBcGlQYXRoKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2VydmljZUFwaVBhdGggPSBzZXJ2aWNlQXBpUGF0aDtcbiAgICB9XG5cbiAgICBnZXRTZXJ2aWNlQXBpUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuc2VydmljZUFwaVBhdGg7XG4gICAgfVxuXG4gICAgc2V0VUlDb25maWdQYXRoKHVpQ29uZmlnUGF0aCkge1xuICAgICAgICB0aGlzLnByb3BzLnVpQ29uZmlnUGF0aCA9IHVpQ29uZmlnUGF0aDtcbiAgICB9XG5cbiAgICBzZXRDb250ZXh0Um9vdChjb250ZXh0Um9vdCkge1xuICAgICAgICB0aGlzLnByb3BzLmNvbnRleHRSb290ID0gY29udGV4dFJvb3Q7XG4gICAgfVxuXG4gICAgZ2V0Q29udGV4dFJvb3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmNvbnRleHRSb290O1xuICAgIH1cblxuICAgIGdldFVJQ29uZmlnUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMudWlDb25maWdQYXRoO1xuICAgIH1cblxuICAgIHNldEZpbGVzQXBpUGF0aChmaWxlc0FwaVBhdGgpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5maWxlc0FwaVBhdGggPSBmaWxlc0FwaVBhdGg7XG4gICAgfVxuXG4gICAgZ2V0RmlsZXNBcGlQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5maWxlc0FwaVBhdGg7XG4gICAgfVxuXG4gICAgYWRkQXBwbGljYXRpb25MaXN0ZW5lcihsaXN0ZW5lcikge1xuICAgICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICByZW1vdmVBcHBsaWNhdGlvbkxpc3RlbmVyKGlkKSB7XG4gICAgICAgIGlmICghdGhpcy5saXN0ZW5lcnMpIHJldHVybjtcbiAgICAgICAgLy8gUmV2ZXJzZS1pdGVyYXRlICsgc3BsaWNlIOKAlCBoYW5kbGVzIGR1cGxpY2F0ZSBpZHMgd2l0aG91dCBpbmRleFxuICAgICAgICAvLyBkcmlmdCwgYW5kIG11dGF0ZXMgdGhlIGV4aXN0aW5nIGFycmF5ICh0aGUgc2luZ2xldG9uIGlzXG4gICAgICAgIC8vIE9iamVjdC5mcmVlemUnZCwgc28gd2UgY2FuJ3QgcmVhc3NpZ24gdGhpcy5saXN0ZW5lcnMpLlxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5saXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxpc3RlbmVyc1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhbGVydCh2aWV3SWQsIG1lc3NhZ2UsIG1lc3NhZ2VUeXBlKSB7XG4gICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudCh0aGlzLCB0aGlzLmdldFZpZXcodmlld0lkKS5jb25maWcuaWQsIHtcbiAgICAgICAgICAgIG1lc3NhZ2VUeXBlOiBtZXNzYWdlVHlwZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuTUVTU0FHRV9BUlJJVkVELCBldmVudCk7XG4gICAgfVxuXG4gICAgcmVmcmVzaFVzZXJBdmF0YXIoYXZhdGFyKSB7XG4gICAgICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lci50eXBlID09PSBBVkFUQVJfTElTVEVORVJfVFlQRSkge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyLmhhbmRsZXIoYXZhdGFyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldENvbmZpcm1EaWFsb2dIYW5kbGVyID0gKGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgdGhpcy5wcm9wcy5jb25maXJtYXRpb25EaWFsb2dDb250cm9sbGVyID0gY29udHJvbGxlcjtcbiAgICB9O1xuXG4gICAgc2V0QXBwbGljYXRpb25UaGVtZUNvbG9ycyhwcmltYXJ5LCBzZWNvbmRhcnkpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5wcmltYXJ5Q29sb3IgPSBwcmltYXJ5O1xuICAgICAgICB0aGlzLnByb3BzLnNlY29uZGFyeUNvbG9yID0gc2Vjb25kYXJ5O1xuICAgIH1cblxuICAgIGdldEFwcGxpY2F0aW9uUHJpbWFyeUNvbG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5wcmltYXJ5Q29sb3I7XG4gICAgfVxuXG4gICAgZ2V0QXBwbGljYXRpb25TZWNvbmRhcnlDb2xvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuc2Vjb25kYXJ5Q29sb3I7XG4gICAgfVxuXG4gICAgb3BlbkNvbmZpcm1EaWFsb2cobWVzc2FnZSwgcmVzdWx0Q2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY29uZmlybWF0aW9uRGlhbG9nQ29udHJvbGxlci5vcGVuRGlhbG9nKG1lc3NhZ2UsIHtcbiAgICAgICAgICAgIGV4ZWN1dGU6IChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHRDYWxsYmFjayhyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb3BlblBvcHVwVmlldyh2aWV3KSB7XG4gICAgICAgIHRoaXMucHJvcHMuY29uZmlybWF0aW9uRGlhbG9nQ29udHJvbGxlci5vcGVuUG9wdXBWaWV3KHZpZXcpO1xuICAgIH1cblxuICAgIGNsb3NlUG9wdXBWaWV3KCkge1xuICAgICAgICB0aGlzLnZpZXdDb250ZXh0LnBvcHVwLmNsb3NlQWxsVmlld3MoKTtcbiAgICAgICAgdGhpcy5wcm9wcy5jb25maXJtYXRpb25EaWFsb2dDb250cm9sbGVyLmNsb3NlUG9wdXBWaWV3KCk7XG4gICAgfVxuXG4gICAgb3BlbldpbmRvd1ZpZXcodmlldykge1xuICAgICAgICBldmVudE1hbmFnZXIuZW1pdENvbnRleHRDaGFuZ2VFdmVudChhcHBsaWNhdGlvbkNvbnRleHQsIHt3aW5kb3dWaWV3OiB2aWV3fSk7XG4gICAgICAgIGFwcGxpY2F0aW9uQ29udGV4dC53aW5kb3dWaWV3ID0gdmlldztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZWdpc3RlcnMgYSBsaWJyYXJ5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZVxuICAgICAqIEBwYXJhbSBsaWJcbiAgICAgKi9cbiAgICByZWdpc3RlckxpYnJhcnkgPSAobmFtZSwgbGliKSA9PiB7XG4gICAgICAgIHRoaXMubGlic1tuYW1lXSA9IGxpYjtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogc2V0IGFwcGxpY2F0aW9uIGhpc3RvcnlcbiAgICAgKlxuICAgICAqIEBwYXJhbSBoaXN0b3J5XG4gICAgICovXG4gICAgc2V0QXBwbGljYXRpb25IaXN0b3J5ID0gKGhpc3RvcnkpID0+IHtcbiAgICAgICAgdGhpcy5wcm9wcy5hcHBsaWNhdGlvbkhpc3RvcnkgPSBoaXN0b3J5O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBnZXQgYXBwbGljYXRpb24gaGlzdG9yeVxuICAgICAqXG4gICAgICogQHJldHVybnMgYXBwbGljYXRpb24gaGlzdG9yeVxuICAgICAqL1xuICAgIGdldEFwcGxpY2F0aW9uSGlzdG9yeSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuYXBwbGljYXRpb25IaXN0b3J5O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiB1cGRhdGUgYXBwYmFyIHRpdGxlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmlld0lkXG4gICAgICogQHBhcmFtIHRpdGxlXG4gICAgICovXG4gICAgdXBkYXRlQXBwQmFyVGl0bGUgPSAodmlld0lkLCB0aXRsZSkgPT4ge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnZpZXdDb250ZXh0KVxuICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHRba2V5XS51cGRhdGVBcHBCYXJUaXRsZSh2aWV3SWQsIHRpdGxlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBjbGVhcnMgYWxsIHZpZXdzXG4gICAgICpcbiAgICAgKi9cbiAgICBjbGVhciA9ICgpID0+IHtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmNsZWFyQWxsRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy52aWV3Q29udGV4dClcbiAgICAgICAgICAgIC5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250ZXh0W2tleV0uY2xlYXIoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZmlsZUNhY2hlLnNwbGljZSgwLCB0aGlzLmZpbGVDYWNoZS5sZW5ndGgpO1xuICAgIH07XG5cbiAgICBnZXRGaWxlRG9tYWluQ2FjaGUgPSAoZG9tYWluKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZUNhY2hlRWxlbWVudCBvZiB0aGlzLmZpbGVDYWNoZSkge1xuICAgICAgICAgICAgaWYgKGZpbGVDYWNoZUVsZW1lbnQuZG9tYWluID09PSBkb21haW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZUNhY2hlRWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBhZGQgdmlldyBjb25maWd1cmF0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZG9tYWluXG4gICAgICogQHBhcmFtIGZpbGVcbiAgICAgKi9cbiAgICBhZGRGaWxlID0gKGRvbWFpbiwgZmlsZSkgPT4ge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGRvbWFpbikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBzcGVjaWZ5IGZpbGUgZG9tYWluJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZmlsZURvbWFpbkNhY2hlID0gdGhpcy5nZXRGaWxlRG9tYWluQ2FjaGUoZG9tYWluKTtcbiAgICAgICAgaWYgKGZpbGVEb21haW5DYWNoZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgZmlsZURvbWFpbkNhY2hlID0ge307XG4gICAgICAgICAgICBmaWxlRG9tYWluQ2FjaGUuZG9tYWluID0gZG9tYWluO1xuICAgICAgICAgICAgZmlsZURvbWFpbkNhY2hlLmZpbGVzID0gW107XG4gICAgICAgICAgICB0aGlzLmZpbGVDYWNoZS5wdXNoKGZpbGVEb21haW5DYWNoZSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2FjaGVkRmlsZSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZG9tYWluRmlsZSBvZiBmaWxlRG9tYWluQ2FjaGUuZmlsZXMpIHtcbiAgICAgICAgICAgIGlmIChkb21haW5GaWxlLmNvcnJlbGF0aW9uSWQgPT09IGZpbGUuY29ycmVsYXRpb25JZCkge1xuICAgICAgICAgICAgICAgIGNhY2hlZEZpbGUgPSBkb21haW5GaWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNhY2hlZEZpbGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGZpbGVEb21haW5DYWNoZS5maWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkRmlsZS5jb250ZW50ID0gZmlsZS5jb250ZW50O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVwZGF0ZUNvbnRleHQgPSAodmFsdWVzLCBwdWJsaXNoID0gdHJ1ZSkgPT4ge1xuICAgICAgICBpZihwdWJsaXNoKSB7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZW1pdENvbnRleHRDaGFuZ2VFdmVudChhcHBsaWNhdGlvbkNvbnRleHQsIHZhbHVlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZXMpXG4gICAgICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25Db250ZXh0W2tleV0gPSB2YWx1ZXNba2V5XTtcbiAgICAgICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBhZGQgdmlldyBjb25maWd1cmF0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmlldyB0aGUgbGlzdGVuZXIgdG8gYmUgYWRkZWRcbiAgICAgKiBAcGFyYW0gcGF0aFxuICAgICAqIEBwYXJhbSBmb3J3YXJkXG4gICAgICovXG4gICAgYWRkRGFzaGJvYXJkVmlldyA9ICh2aWV3LCBwYXRoKSA9PiB7XG4gICAgICAgIHRoaXMudmlld0NvbnRleHQuZGFzaGJvYXJkLmFkZFZpZXcodmlldyk7XG4gICAgfVxuXG4gICAgZ2V0RGFzaGJvYXJkVmlld0NvbnRleHQgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0LmRhc2hib2FyZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjbGVhciBkYXNoYm9hcmQgdmlldyBjb25maWd1cmF0aW9uXG4gICAgICpcbiAgICAgKi9cbiAgICBjbGVhckRhc2hib2FyZFZpZXdzID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZXdDb250ZXh0LmRhc2hib2FyZC5jbG9zZUFsbFZpZXdzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWRkIHZpZXcgY29uZmlndXJhdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIHZpZXcgdGhlIGxpc3RlbmVyIHRvIGJlIGFkZGVkXG4gICAgICogQHBhcmFtIHBhdGhcbiAgICAgKiBAcGFyYW0gZm9yd2FyZFxuICAgICAqIEBwYXJhbSBtYW5hZ2VySWRcbiAgICAgKi9cbiAgICBhZGRWaWV3ID0gKHZpZXcsIHBhdGgsIGZvcndhcmQsIG1hbmFnZXJJZCkgPT4ge1xuICAgICAgICB0aGlzLnZpZXdDb250ZXh0W21hbmFnZXJJZF0uYWRkVmlldyh2aWV3LCBwYXRoLCBmb3J3YXJkKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogY2xvc2VzIGFsbCB2aWV3c1xuICAgICAqXG4gICAgICovXG4gICAgY2xvc2VBbGxWaWV3cyA9IChwcmVzZXJ2ZVdpbmRvdyA9IGZhbHNlKSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMudmlld0NvbnRleHQpXG4gICAgICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gV2hlbiBwcmVzZXJ2ZVdpbmRvdyBpcyBzZXQsIGxlYXZlIHRoZSBmbG9hdGluZyBXaW5kb3dWaWV3UG9ydCBvdmVybGF5IGludGFjdCDigJQgaXQgaXNcbiAgICAgICAgICAgICAgICAvLyBhIHNlcGFyYXRlIHZpZXdwb3J0IGluIG91ciBtdWx0aS12aWV3cG9ydCBkYXNoYm9hcmQgYW5kIG11c3Qgc3Vydml2ZSBhIG1haW4tdmlld1xuICAgICAgICAgICAgICAgIC8vIG5hdmlnYXRpb24gKGUuZy4gbGF1bmNoaW5nIHRoZSBkYXNoYm9hcmQgZnJvbSB0aGUgbWVudSkuXG4gICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlV2luZG93ICYmIGtleSA9PT0gJ3dpbmRvdycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHRba2V5XS5jbG9zZUFsbFZpZXdzKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXByZXNlcnZlV2luZG93KSB7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZW1pdENvbnRleHRDaGFuZ2VFdmVudChhcHBsaWNhdGlvbkNvbnRleHQsIHt3aW5kb3dWaWV3OiBudWxsfSk7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHQud2luZG93VmlldyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogY2xvc2VzIHRoZSBzcGVjaWZpZWQgdmlld1xuICAgICAqXG4gICAgICogQHBhcmFtIHZpZXdJZCB0aGUgbGlzdGVuZXIgdG8gYmUgYWRkZWRcbiAgICAgKiBAcGFyYW0gZm9yd2FyZFxuICAgICAqL1xuICAgIGNsb3NlVmlldyA9ICh2aWV3SWQsIGZvcndhcmQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy52aWV3Q29udGV4dCkpIHtcbiAgICAgICAgICAgIGxldCB2aWV3Q29udGV4dEVsZW1lbnQgPSB0aGlzLnZpZXdDb250ZXh0W2tleV07XG5cbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdwb3B1cCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmNvbmZpcm1hdGlvbkRpYWxvZ0NvbnRyb2xsZXIuY2xvc2VQb3B1cFZpZXcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmlldyA9IHZpZXdDb250ZXh0RWxlbWVudC5nZXRWaWV3KCk7XG4gICAgICAgICAgICAgICAgaWYgKHZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlld0NvbnRleHRFbGVtZW50LmNsb3NlVmlldyh2aWV3SWQsIGZvcndhcmQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnd2luZG93Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmVtaXRDb250ZXh0Q2hhbmdlRXZlbnQoYXBwbGljYXRpb25Db250ZXh0LCB7d2luZG93VmlldzogbnVsbH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Db250ZXh0LndpbmRvd1ZpZXcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB2aWV3IGNvbmZpZ3VyYXRpb24gd2l0aCBhIHBhcnRpY3VsYXIgaWRcbiAgICAgKlxuICAgICAqL1xuICAgIGdldFZpZXcgPSAoaWQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy52aWV3Q29udGV4dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLnZpZXdDb250ZXh0W2tleV0uZ2V0VmlldyhpZCk7XG4gICAgICAgICAgICBpZiAodmlldykge1xuICAgICAgICAgICAgICAgIHJldHVybiB2aWV3O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIGdldFZpZXdDb21wb25lbnQgPSAodmlldywgaWQpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwodmlldykgJiYgIVV0aWxzLmlzTnVsbCh2aWV3LmhhbmRsZSkgJiYgIVV0aWxzLmlzTnVsbCh2aWV3LmhhbmRsZS5hcGkpKSB7XG4gICAgICAgICAgICBpZiAoaWQgPT09IHZpZXcuaGFuZGxlLmFwaS5pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2aWV3LmhhbmRsZS5hcGk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2aWV3LmhhbmRsZT8uYXBpPy5nZXRDaGlsZCkge1xuICAgICAgICAgICAgICAgIGxldCBoYW5kbGUgPSB2aWV3LmhhbmRsZT8uYXBpPy5nZXRDaGlsZChpZCk7XG4gICAgICAgICAgICAgICAgaWYgKGhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlLmFwaTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaWQgPT09ICd2aWV3Jykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmlldy5oYW5kbGUuYXBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgdmlldyBjb25maWd1cmF0aW9uIHdpdGggYSBwYXJ0aWN1bGFyIGlkXG4gICAgICpcbiAgICAgKi9cbiAgICByZXNvbHZlQ29tcG9uZW50QXBpID0gKGlkKSA9PiB7XG4gICAgICAgIGlmIChBUFBfVkFSSUFCTEUgPT09IGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcGk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZ3JhcGhzID0gW107XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMudmlld0NvbnRleHQpKSB7XG4gICAgICAgICAgICBsZXQgdmlld0NvbnRleHQgPSB0aGlzLnZpZXdDb250ZXh0W2tleV07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyYXBoIG9mIHZpZXdDb250ZXh0LmdldEdyYXBocygpKSB7XG4gICAgICAgICAgICAgICAgZ3JhcGhzLnB1c2goZ3JhcGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBncmFwaCBvZiBncmFwaHMpIHtcbiAgICAgICAgICAgIGlmIChncmFwaC5pZCA9PT0gaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3JhcGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmlld3MgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy52aWV3Q29udGV4dCkpIHtcbiAgICAgICAgICAgIGxldCB2aWV3Q29udGV4dCA9IHRoaXMudmlld0NvbnRleHRba2V5XTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmlldyBvZiB2aWV3Q29udGV4dC5nZXRWaWV3cygpKSB7XG4gICAgICAgICAgICAgICAgdmlld3MucHVzaCh2aWV3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdmlldyBvZiB2aWV3cykge1xuICAgICAgICAgICAgbGV0IGNvbXBvbmVudCA9IHRoaXMuZ2V0Vmlld0NvbXBvbmVudCh2aWV3LCBpZCk7XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBQb3B1bGF0ZSBhbGwgcGxhY2UgaG9sZGVycyBpbiB0aGUgZ2l2ZW4gdGVtcGxhdGVcbiAgICAgKlxuICAgICAqL1xuICAgIHBvcHVsYXRlVGVtcGxhdGUgPSAodGVtcGxhdGUsIGV2ZW50RGF0YSkgPT4ge1xuICAgICAgICBsZXQgbWF0Y2hlcyA9IHRlbXBsYXRlLm1hdGNoKFRFTVBMQVRFX1RPS0VOX1JFR0VYKTtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwobWF0Y2hlcykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgbWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIGxldCBleHByZXNpb25Db250ZW50ID0gbWF0Y2guc3Vic3RyaW5nKG1hdGNoLmluZGV4T2YoJ3snKSArIDEsIG1hdGNoLmxhc3RJbmRleE9mKCd9JykpO1xuICAgICAgICAgICAgICAgIGxldCBleHByZXNzaW9uVmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICBpZiAoZXhwcmVzaW9uQ29udGVudC5zdGFydHNXaXRoKCckZXZlbnQuZGF0YScpICYmICFVdGlscy5pc051bGwoZXZlbnREYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcHMgPSBleHByZXNpb25Db250ZW50LnJlcGxhY2UoJyRldmVudC5kYXRhLicsICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCB2byA9IGV2ZW50RGF0YTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZvID0gdm9bcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uVmFsdWUgPSB2bztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uVmFsdWUgPSB0aGlzLnJlc29sdmVFeHByZXNzaW9uVmFsdWUoZXhwcmVzaW9uQ29udGVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKG1hdGNoLCBleHByZXNzaW9uVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlO1xuICAgIH07XG5cbiAgICByZXNvbHZlRXhwcmVzc2lvblZhbHVlID0gKGV4cHJlc3Npb24sIGV2ZW50RGF0YSA9IG51bGwpID0+IHtcbiAgICAgICAgbGV0IHBhcmFtRXhwcmVzc2lvbiA9IGV4cHJlc3Npb24ubWF0Y2goL1xcKChbXildKilcXCkvKTtcbiAgICAgICAgbGV0IGlzRXZlbnQgPSBleHByZXNzaW9uLnN0YXJ0c1dpdGgoJyRldmVudC5kYXRhJyk7XG4gICAgICAgIGxldCBiYXNlRXhwcmVzc2lvbiA9IGlzRXZlbnQgPyAnJGV2ZW50LmRhdGEnIDogIVV0aWxzLmlzTnVsbChwYXJhbUV4cHJlc3Npb24pICYmIHBhcmFtRXhwcmVzc2lvbi5sZW5ndGggPiAwID9cbiAgICAgICAgICAgIGV4cHJlc3Npb24ucmVwbGFjZShwYXJhbUV4cHJlc3Npb25bMF0sICcnKSA6IGV4cHJlc3Npb247XG5cbiAgICAgICAgbGV0IGV4cHJlc3Npb25Db250ZW50ID0gYmFzZUV4cHJlc3Npb24uc3Vic3RyaW5nKGJhc2VFeHByZXNzaW9uLmluZGV4T2YoJ3snKSArIDEsIGJhc2VFeHByZXNzaW9uLmluZGV4T2YoJ30nKSk7XG4gICAgICAgIGxldCBpc0NvbXBvbmVudCA9IGJhc2VFeHByZXNzaW9uLnN0YXJ0c1dpdGgoJ0AjeycpO1xuICAgICAgICBsZXQgaXNMaWIgPSBiYXNlRXhwcmVzc2lvbi5zdGFydHNXaXRoKCdAQHsnKTtcbiAgICAgICAgbGV0IHRva2VucyA9IGV4cHJlc3Npb25Db250ZW50LnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCBpZFRva2VuID0gdG9rZW5zWzBdO1xuXG4gICAgICAgIGlmIChpc0NvbXBvbmVudCB8fCBpc0V2ZW50KSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBpc0V2ZW50ID8gZXZlbnREYXRhIDogdGhpcy5yZXNvbHZlQ29tcG9uZW50QXBpKGV4cHJlc3Npb25Db250ZW50KTtcbiAgICAgICAgICAgIGxldCBleHByZXNzaW9uQ2xvc3VyZSA9IGlzRXZlbnQgPyAnZGF0YS4nIDogJ30uJztcbiAgICAgICAgICAgIGxldCBpbmRleCA9IGV4cHJlc3Npb24uaW5kZXhPZihleHByZXNzaW9uQ2xvc3VyZSk7XG5cbiAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlDaGFpbiA9IGV4cHJlc3Npb24uc3Vic3RyaW5nKGluZGV4ICsgZXhwcmVzc2lvbkNsb3N1cmUubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBsZXQgcHJvcHMgPSBwcm9wZXJ0eUNoYWluLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTGliKSB7XG4gICAgICAgICAgICAvKmlmIChpZFRva2VuID09PSAndmlldycpIHtcbiAgICAgICAgICAgICAgICBpZFRva2VuID0gdGhpcy5nZXRDdXJyZW50VmlldygpLmNvbmZpZy5pZCArICdfbGliJztcbiAgICAgICAgICAgIH0qL1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5saWJzW2lkVG9rZW5dO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHJlc3Npb247XG4gICAgfTtcblxuICAgIHNldEV4cHJlc3Npb25WYWx1ZXMgPSAob2JqLCBldmVudERhdGEgPSBudWxsKSA9PiB7XG4gICAgICAgIGxldCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShvYmopO1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gaXNBcnJheSA/IFtdIDoge307XG5cbiAgICAgICAgT2JqZWN0LmtleXMob2JqKVxuICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09ICdvYmplY3QnICYmIG9ialtrZXldICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRba2V5XSA9IHRoaXMuc2V0RXhwcmVzc2lvblZhbHVlcyhvYmpba2V5XSwgZXZlbnREYXRhKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb2JqVmFsdWUgPSBvYmpba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqVmFsdWUgPSBvYmpWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ialZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbihvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjcmlwdFZhbHVlID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHQoYHJlc29sdmVQYXJhbV8ke01hdGgucmFuZG9tKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoJy4nLCAnXycpfWAsIG9ialZhbHVlLCBudWxsLCBudWxsLCBldmVudERhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NyaXB0VmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2JqS2V5ID0ga2V5ID09PSAndmFsdWVFeHByZXNzaW9uJyA/ICd2YWx1ZScgOiBrZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZFtvYmpLZXldID0gc2NyaXB0VmFsdWUgIT09IG51bGwgJiYgc2NyaXB0VmFsdWUuaW5zdGFuY2VUeXBlID09PSAnVHlwZWRWYWx1ZScgPyBzY3JpcHRWYWx1ZS52YWx1ZSA6IHNjcmlwdFZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVkW29iaktleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1cGRhdGVkLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwcm9jZXNzaW5nIHBhcmFtZXRlciBleHByZXNzaW9uIDogXCIgKyBvYmpWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRba2V5XSA9IG9ialZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfTtcblxuICAgIGZpbGxFdmVudERhdGFWYWx1ZShvYmosIGV2ZW50RGF0YSkge1xuICAgICAgICBpZiAob2JqKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhvYmopXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gb2JqW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxsRXZlbnREYXRhVmFsdWUodmFsLCBldmVudERhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gJyRldmVudC5kYXRhJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2tleV0gPSBldmVudERhdGE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB2aWV3IGNvbmZpZ3VyYXRpb24gd2l0aCBhIHBhcnRpY3VsYXIgaWRcbiAgICAgKlxuICAgICAqL1xuICAgIHJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZSA9IChjb25maWdWYWx1ZSwgZXZlbnREYXRhKSA9PiB7XG4gICAgICAgIGlmICghY29uZmlnVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25maWdWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbihjb25maWdWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVFeHByZXNzaW9uVmFsdWUoY29uZmlnVmFsdWUsIGV2ZW50RGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQganNvbiA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZ1ZhbHVlKTtcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0ganNvbi5tYXRjaChURU1QTEFURV9SRUdFWCk7XG5cbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1hdGNoZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0RXhwcmVzc2lvblZhbHVlcyhjb25maWdWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpc0V4cHJlc3Npb24ob2JqVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG9ialZhbHVlICYmIG9ialZhbHVlLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAuaW5jbHVkZXMoJyRhcHBsaWNhdGlvbicpXG4gICAgICAgICAgICB8fCBvYmpWYWx1ZSAmJiBvYmpWYWx1ZS50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgLnN0YXJ0c1dpdGgoJyRldmVudC5kYXRhJylcbiAgICAgICAgICAgIHx8ICFVdGlscy5pc051bGwob2JqVmFsdWUpICYmIHR5cGVvZiBvYmpWYWx1ZSA9PT0gJ3N0cmluZycgJiYgIVV0aWxzLmlzTnVsbChvYmpWYWx1ZS5tYXRjaChURU1QTEFURV9SRUdFWCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB2aWV3IGNvbmZpZ3VyYXRpb24gd2l0aCBhIHBhcnRpY3VsYXIgaWRcbiAgICAgKlxuICAgICAqL1xuICAgIHJlc29sdmVQYXJhbWV0ZXJWYWx1ZSA9IChwYXJhbWV0ZXJDb25maWcsIGV2ZW50RGF0YSA9IG51bGwpID0+IHtcblxuICAgICAgICBpZiAocGFyYW1ldGVyQ29uZmlnLnN0YXRpYykge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlckNvbmZpZy52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBleHByZXNzaW9uID0gcGFyYW1ldGVyQ29uZmlnLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIGxldCBpc0V2ZW50ID0gZXhwcmVzc2lvbi5zdGFydHNXaXRoKCckZXZlbnQuZGF0YScpO1xuICAgICAgICBpZiAoaXNFdmVudCkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gZXZlbnREYXRhO1xuICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgZXhwcmVzc2lvbi5pbmNsdWRlcygnWycpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlSW5kZXggPSBleHByZXNzaW9uLnN1YnN0cmluZyhleHByZXNzaW9uLmluZGV4T2YoJ1snKSArIDEsIGV4cHJlc3Npb24uaW5kZXhPZignXScpKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlW3ZhbHVlSW5kZXhdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUaGlzIGNoZWNrcyBpZiB0aGVyZSBpcyBhIHJlZmVyZW5jZSB0byBzb21lIGRhdGEgcHJvcGVydHlcbiAgICAgICAgICAgIGxldCBleHByZXNzaW9uQ2xvc3VyZSA9ICdkYXRhLic7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSBleHByZXNzaW9uLmluZGV4T2YoZXhwcmVzc2lvbkNsb3N1cmUpO1xuICAgICAgICAgICAgaWYoaW5kZXggPCAwKSB7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbkNsb3N1cmUgPSBcIl0uXCI7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBleHByZXNzaW9uLmluZGV4T2YoZXhwcmVzc2lvbkNsb3N1cmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5Q2hhaW4gPSBleHByZXNzaW9uLnN1YnN0cmluZyhpbmRleCArIGV4cHJlc3Npb25DbG9zdXJlLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgbGV0IHByb3BzID0gcHJvcGVydHlDaGFpbi5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlW3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwYXJhbWV0ZXJDb25maWcudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdOVUxMIHBhcmFtZXRlciB2YWx1ZSBleHByZXNzaW9uIGluIDogJyArIEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlckNvbmZpZykpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNFeHByZXNzaW9uKHBhcmFtZXRlckNvbmZpZy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbCA9IHRoaXMucmVzb2x2ZVBhcmFtZXRlckNvbmZpZ1ZhbHVlKHBhcmFtZXRlckNvbmZpZy52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IHBhcmFtZXRlckNvbmZpZy52YWx1ZTtcbiAgICAgICAgICAgIHZhbCA9IGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0KGByZXNvbHZlUGFyYW1fJHtNYXRoLnJhbmRvbSgpXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgnLicsICdfJyl9YCwgZXhwcmVzc2lvbiwgbnVsbCwgbnVsbCwge2RhdGE6IGV2ZW50RGF0YX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbCh2YWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHZhbCkgJiYgIVV0aWxzLmlzTnVsbCh2YWwuaW5zdGFuY2VUeXBlKVxuICAgICAgICAgICAgJiYgdmFsLmluc3RhbmNlVHlwZSA9PT0gJ1R5cGVkVmFsdWUnKSB7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXJDb25maWcudHlwZSkpIHtcbiAgICAgICAgICAgICAgICB2YWwudHlwZSA9IHBhcmFtZXRlckNvbmZpZy50eXBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHR5cGUgPSBudWxsO1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXJDb25maWcudHlwZSkpIHtcbiAgICAgICAgICAgIHR5cGUgPSBwYXJhbWV0ZXJDb25maWcudHlwZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWwgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlb2YgdmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUeXBlZFZhbHVlKHR5cGUsIHZhbCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgYSB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIHZpZXcncyBtb2RlbFxuICAgICAqIEBwYXJhbSBrZXlcbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKiBAcGFyYW0gdmlld0lkXG4gICAgICovXG4gICAgc2V0TW9kZWxWYWx1ZSA9IChrZXksIHZhbHVlLCB2aWV3SWQpID0+IHtcbiAgICAgICAgdGhpcy5nZXRWaWV3KHZpZXdJZClcbiAgICAgICAgICAgIC5oYW5kbGVcbiAgICAgICAgICAgIC5hcGlcbiAgICAgICAgICAgIC5zZXRNb2RlbFZhbHVlKGtleSwgdmFsdWUpO1xuICAgICAgICBldmVudE1hbmFnZXIucHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnModmlld0lkKTtcbiAgICB9O1xuXG4gICAgZ2V0SWQgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnYXBwbGljYXRpb25NYW5hZ2VyJztcbiAgICB9O1xuXG4gICAgZW5hYmxlRm9ybU1hcmtlcnMoZW5hYmxlZCkge1xuICAgICAgICB0aGlzLnByb3BzLmZvcm1NYXJrZXJzRW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgfVxuXG4gICAgaXNGb3JtTWFya2Vyc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1NYXJrZXJzRW5hYmxlZDtcbiAgICB9XG5cbiAgICBzZXREYXNoYm9hcmRWaWV3KHZpZXcpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5kYXNoYm9hcmRWaWV3ID0gdmlldztcbiAgICB9XG5cbiAgICBzZXRVc2VyRGV0YWlscyh1c2VyRGV0YWlscykge1xuICAgICAgICB0aGlzLnByb3BzLnVzZXJEZXRhaWxzID0gdXNlckRldGFpbHM7XG4gICAgfVxuXG4gICAgZ2V0VXNlckRldGFpbHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnVzZXJEZXRhaWxzO1xuICAgIH1cblxuICAgIGxvYWRHcmFwaChpc1BhcmVudCwgY29uZmlnLCBwYXJhbWV0ZXJWYWx1ZXMsIHZpZXdDb250ZXh0KSB7XG4gICAgICAgIHRoaXMudmlld0NvbnRleHRbdmlld0NvbnRleHRdLmxvYWRHcmFwaChpc1BhcmVudCwgY29uZmlnLCBwYXJhbWV0ZXJWYWx1ZXMpO1xuICAgIH1cblxuICAgIHJlbW92ZUxvYWRlZEdyYXBoKHZpZXdDb250ZXh0KSB7XG4gICAgICAgIGxldCBncmFwaCA9IHRoaXMudmlld0NvbnRleHRbdmlld0NvbnRleHRdLnJlbW92ZUxvYWRlZEdyYXBoKCk7XG4gICAgICAgIGlmIChncmFwaCAmJiBncmFwaC5jb25maWcuaXNXaW5kb3cpIHtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5lbWl0Q29udGV4dENoYW5nZUV2ZW50KGFwcGxpY2F0aW9uQ29udGV4dCwge3dpbmRvd1ZpZXc6IG51bGx9KTtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uQ29udGV4dC53aW5kb3dWaWV3ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNpZ25hbEdyYXBoKGlkLCBldmVudCkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnZpZXdDb250ZXh0KVxuICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHRba2V5XS5zaWduYWxHcmFwaChpZCwgZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdmlld0NvbnRleHRcbiAgICAgKi9cbiAgICBnZXRQcmV2aW91c0hpc3RvcnlFbGVtZW50ID0gKHZpZXdDb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0W3ZpZXdDb250ZXh0XS5nZXRQcmV2aW91c0hpc3RvcnlFbGVtZW50KCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIHZpZXdDb250ZXh0XG4gICAgICovXG4gICAgZ2V0Q3VycmVudEdyYXBoID0gKHZpZXdDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBncmFwaHMgPSB0aGlzLnZpZXdDb250ZXh0W3ZpZXdDb250ZXh0XS5ncmFwaHM7XG4gICAgICAgIHJldHVybiBncmFwaHMgJiYgZ3JhcGhzLmxlbmd0aCA+IDAgPyBncmFwaHNbZ3JhcGhzLmxlbmd0aCAtIDFdIDogbnVsbDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogdmlld0NvbnRleHRcbiAgICAgKi9cbiAgICBnZXRUb3BWaWV3ID0gKHZpZXdDb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0W3ZpZXdDb250ZXh0XS5nZXRUb3BWaWV3KCk7XG4gICAgfTtcbn1cblxuY29uc3QgaW5zdGFuY2UgPSBuZXcgQXBwbGljYXRpb25NYW5hZ2VyKCk7XG5PYmplY3QuZnJlZXplKGluc3RhbmNlKTtcbmV4cG9ydCBkZWZhdWx0IGluc3RhbmNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFDLHVCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxjQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxZQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxRQUFBLEdBQUFULE9BQUE7QUFBK0MsU0FBQUssd0JBQUFLLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFQLHVCQUFBLFlBQUFBLENBQUFLLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxRQUFBQyxPQUFBLEVBQUFWLENBQUEsaUJBQUFBLENBQUEsdUJBQUFBLENBQUEseUJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsZ0JBQUFQLENB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
@@ -37,6 +37,9 @@ const InteractionPortalAppHome = /*#__PURE__*/_react.default.memo((props, ref) =
37
37
  const [loadingColor, setLoadingColor] = _react.default.useState(null);
38
38
  const [loading, setLoading] = _react.default.useState(true);
39
39
  const [hasClientError, setHasClientError] = _react.default.useState(false);
40
+ // Gate render on user details so consumers (e.g. PortalDashboard's greeting)
41
+ // never read applicationManager.getUserDetails() before it is populated.
42
+ const [userDetailsReady, setUserDetailsReady] = _react.default.useState(false);
40
43
  const [avatarUrl, setAvatarUrl] = _react.default.useState(location + props.contextRoot + props.implConfig.authUrl + "/user/avatar?" + "access_token=" + sessionStorage.getItem("accessToken") + "&idToken=" + sessionStorage.getItem("idToken"));
41
44
  const navigate = (0, _reactRouterDom.useNavigate)();
42
45
  _react.default.useEffect(() => {
@@ -56,6 +59,7 @@ const InteractionPortalAppHome = /*#__PURE__*/_react.default.memo((props, ref) =
56
59
  _ApplicationManager.default.setUserDetails(response);
57
60
  _SocketManager.default.init();
58
61
  _ApplicationManager.default.setActiveTenant(_ApplicationManager.default.getUniqueOrgForRole('VENDOR'));
62
+ setUserDetailsReady(true);
59
63
  }, e => {
60
64
  console.log(e);
61
65
  });
@@ -88,7 +92,7 @@ const InteractionPortalAppHome = /*#__PURE__*/_react.default.memo((props, ref) =
88
92
  className: "main w-100 h-100 d-inline-block"
89
93
  }, /*#__PURE__*/_react.default.createElement("div", {
90
94
  className: "w-100 h-100"
91
- }, !loading && !_Utils.default.isNull(dashboardSettings) && !hasClientError ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
95
+ }, !loading && !_Utils.default.isNull(dashboardSettings) && userDetailsReady && !hasClientError ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
92
96
  className: "main w-100 h-100 d-inline-block coj-skin"
93
97
  }, /*#__PURE__*/_react.default.createElement("div", {
94
98
  className: "w-100 h-100"
@@ -152,6 +156,18 @@ const InteractionPortalAppHome = /*#__PURE__*/_react.default.memo((props, ref) =
152
156
  appLogoPath: /*dashboardSettings.logo*/null,
153
157
  logoStyle: {
154
158
  width: '120px'
159
+ },
160
+ homeButtonSettings: {
161
+ icon: 'HOME',
162
+ iconSize: 'small',
163
+ text: 'Home',
164
+ color: 'secondary',
165
+ callback: () => {
166
+ // Load the PortalDashboard (rendered by the
167
+ // view/:id route as the dashboard chrome).
168
+ _ApplicationManager.default.closeAllViews(true);
169
+ _ApplicationManager.default.navigate('/view/dashboard');
170
+ }
155
171
  }
156
172
  }), /*#__PURE__*/_react.default.createElement(_LoadingIndicator.default, {
157
173
  color: loadingColor
@@ -162,4 +178,4 @@ const InteractionPortalAppHome = /*#__PURE__*/_react.default.memo((props, ref) =
162
178
  }));
163
179
  });
164
180
  var _default = exports.default = InteractionPortalAppHome;
165
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Mb2FkaW5nSW5kaWNhdG9yIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9Ub2tlbk1hbmFnZXIiLCJfVXRpbHMiLCJfcmVhY3RSb3V0ZXJEb20iLCJfUmVzdFV0aWxzIiwiX1NpZGVNZW51TW9kdWxlRGFzaGJvYXJkIiwiX1NvY2tldE1hbmFnZXIiLCJfRm9sZGluZ1NpZGVUYWJEYXNoYm9hcmQiLCJfbWF0ZXJpYWwiLCJfVGhlbWVQcm92aWRlciIsIl9yZWFjdDIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJsb2NhdGlvbiIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJzdGF0dXMiLCJyZXNwb25zZSIsIm9rIiwiUHJvbWlzZSIsInJlc29sdmUiLCJlcnJvciIsIkVycm9yIiwic3RhdHVzVGV4dCIsImNvZGUiLCJyZWplY3QiLCJqc29uIiwidGV4dCIsIkludGVyYWN0aW9uUG9ydGFsQXBwSG9tZSIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwicmVmIiwiZGFzaGJvYXJkU2V0dGluZ3MiLCJzZXREYXNoYm9hcmRTZXR0aW5ncyIsInVzZVN0YXRlIiwidG9rZW5SZWZyZXNoTW9uaXRvclN0YXJ0ZWQiLCJzZXRUb2tlblJlZnJlc2hNb25pdG9yU3RhcnRlZCIsImxvYWRpbmdDb2xvciIsInNldExvYWRpbmdDb2xvciIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiaGFzQ2xpZW50RXJyb3IiLCJzZXRIYXNDbGllbnRFcnJvciIsImF2YXRhclVybCIsInNldEF2YXRhclVybCIsImNvbnRleHRSb290IiwiaW1wbENvbmZpZyIsImF1dGhVcmwiLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJuYXZpZ2F0ZSIsInVzZU5hdmlnYXRlIiwidXNlRWZmZWN0IiwiYXBwbGljYXRpb01hbmFnZXIiLCJzZXRTZXJ2aWNlQXBpUGF0aCIsInNlcnZpY2VBcGlQYXRoIiwic2V0VUlDb25maWdQYXRoIiwidWlDb25maWdQYXRoIiwic2V0Q29udGV4dFJvb3QiLCJzZXRGaWxlc0FwaVBhdGgiLCJmaWxlc0FwaVBhdGgiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJzZXROYXZpZ2F0b3IiLCJwYXRoIiwic2VuZFJlcXVlc3QiLCJnZXRDb250ZXh0Um9vdCIsImNpZCIsImNvbnNvbGUiLCJsb2ciLCJzZXRVc2VyRGV0YWlscyIsIlNvY2tldHMiLCJpbml0Iiwic2V0QWN0aXZlVGVuYW50IiwiZ2V0VW5pcXVlT3JnRm9yUm9sZSIsInRva2VuTWFuYWdlciIsInN0YXJ0VG9rZW5SZWZyZXNoTW9uaXRvciIsInVzZXJOYW1lIiwiVXRpbHMiLCJpc051bGwiLCJ1c2VyQXZhdGFyIiwidXJsIiwic2V0QXBwbGljYXRpb25UaGVtZUNvbG9ycyIsInByaW1hcnlDb2xvciIsInNlY29uZGFyeUNvbG9yIiwibG9nb3V0IiwicmVtb3ZlSXRlbSIsImNsZWFyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIkZyYWdtZW50IiwiVGhlbWVQcm92aWRlciIsInRoZW1lIiwiY3JlYXRlVGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJzZWNvbmRhcnkiLCJzeXN0ZW1Qcm9maWxlRHRvIiwiZmlyc3RDb3Jwb3JhdGVCcmFuZENvbG9yIiwic2Vjb25kQ29ycG9yYXRlQnJhbmRDb2xvciIsImNvbXBvbmVudHMiLCJNdWlDc3NCYXNlbGluZSIsInN0eWxlT3ZlcnJpZGVzIiwiYm9keSIsInNjcm9sbGJhckNvbG9yIiwic2Nyb2xsYmFyV2lkdGgiLCJ3aWR0aCIsImhlaWdodCIsImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJSYWRpdXMiLCJ0cmFuc2l0aW9uIiwiQ3NzQmFzZWxpbmUiLCJsb2dvdXRDYWxsQmFjayIsInNldHRpbmdzIiwiYXZhdGFyIiwibG9nbyIsInNob3dEYXNoYm9hcmRNZW51IiwiYXBwTG9nb1BhdGgiLCJsb2dvU3R5bGUiLCJjb2xvciIsInN0eWxlIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xpYi9JbnRlcmFjdGlvblBvcnRhbEFwcEhvbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IExvYWRpbmdJbmRpY2F0b3IgZnJvbSAnLi9jb21wb25lbnRzL0xvYWRpbmdJbmRpY2F0b3InO1xuaW1wb3J0IGFwcGxpY2F0aW9NYW5hZ2VyIGZyb20gXCIuL0FwcGxpY2F0aW9uTWFuYWdlclwiO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tIFwiLi9BcHBsaWNhdGlvbk1hbmFnZXJcIjtcbmltcG9ydCB0b2tlbk1hbmFnZXIgZnJvbSBcIi4vc2VjdXJpdHkvVG9rZW5NYW5hZ2VyXCI7XG5pbXBvcnQgVXRpbHMgZnJvbSBcIi4vVXRpbHNcIjtcbmltcG9ydCB7dXNlTmF2aWdhdGV9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCI7XG5pbXBvcnQge3NlbmRSZXF1ZXN0fSBmcm9tIFwiLi9SZXN0VXRpbHNcIjtcbmltcG9ydCBTaWRlTWVudU1vZHVsZURhc2hib2FyZCBmcm9tIFwiLi9jb21wb25lbnRzL2Rhc2hib2FyZC9TaWRlTWVudU1vZHVsZURhc2hib2FyZFwiO1xuaW1wb3J0IFNvY2tldHMgZnJvbSBcIi4vY29tcG9uZW50cy9Tb2NrZXRNYW5hZ2VyXCI7XG5pbXBvcnQgRm9sZGluZ1NpZGVUYWJEYXNoYm9hcmQgZnJvbSBcIi4vY29tcG9uZW50cy9kYXNoYm9hcmQvRm9sZGluZ1NpZGVUYWJEYXNoYm9hcmRcIjtcbmltcG9ydCB7Y3JlYXRlVGhlbWUsIENzc0Jhc2VsaW5lfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFRoZW1lUHJvdmlkZXIgZnJvbSBcIkBtdWkvc3R5bGVzL1RoZW1lUHJvdmlkZXJcIjtcbmltcG9ydCB7VGhlbWVQcm92aWRlciBhcyBFbW90aW9uVGhlbWVQcm92aWRlcn0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcblxuY29uc3Qgc3RhdHVzID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBlcnJvciA9IG5ldyBFcnJvcihyZXNwb25zZS5zdGF0dXNUZXh0KTtcbiAgICAgICAgZXJyb3IuY29kZSA9IHJlc3BvbnNlLnN0YXR1cztcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH1cbn07XG5cbmNvbnN0IGpzb24gPSAocmVzcG9uc2UpID0+IHtcbiAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xufTtcblxuY29uc3QgSW50ZXJhY3Rpb25Qb3J0YWxBcHBIb21lID0gUmVhY3QubWVtbygoKHByb3BzLCByZWYpID0+IHtcbiAgICBjb25zdCBbZGFzaGJvYXJkU2V0dGluZ3MsIHNldERhc2hib2FyZFNldHRpbmdzXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt0b2tlblJlZnJlc2hNb25pdG9yU3RhcnRlZCwgc2V0VG9rZW5SZWZyZXNoTW9uaXRvclN0YXJ0ZWRdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2xvYWRpbmdDb2xvciwgc2V0TG9hZGluZ0NvbG9yXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtoYXNDbGllbnRFcnJvciwgc2V0SGFzQ2xpZW50RXJyb3JdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFthdmF0YXJVcmwsIHNldEF2YXRhclVybF0gPSBSZWFjdC51c2VTdGF0ZShsb2NhdGlvbiArIHByb3BzLmNvbnRleHRSb290XG4gICAgICAgICsgcHJvcHMuaW1wbENvbmZpZy5hdXRoVXJsICsgXCIvdXNlci9hdmF0YXI/XCJcbiAgICAgICAgKyBcImFjY2Vzc190b2tlbj1cIiArIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJhY2Nlc3NUb2tlblwiKVxuICAgICAgICArIFwiJmlkVG9rZW49XCIgKyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiaWRUb2tlblwiKSk7XG5cbiAgICBjb25zdCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgYXBwbGljYXRpb01hbmFnZXIuc2V0U2VydmljZUFwaVBhdGgocHJvcHMuaW1wbENvbmZpZy5zZXJ2aWNlQXBpUGF0aCk7XG4gICAgICAgIGFwcGxpY2F0aW9NYW5hZ2VyLnNldFVJQ29uZmlnUGF0aChwcm9wcy5pbXBsQ29uZmlnLnVpQ29uZmlnUGF0aCk7XG4gICAgICAgIGFwcGxpY2F0aW9NYW5hZ2VyLnNldENvbnRleHRSb290KHByb3BzLmNvbnRleHRSb290KTtcbiAgICAgICAgYXBwbGljYXRpb01hbmFnZXIuc2V0RmlsZXNBcGlQYXRoKHByb3BzLmltcGxDb25maWcuZmlsZXNBcGlQYXRoKTtcbiAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldE5hdmlnYXRvcigocGF0aCkgPT4ge1xuICAgICAgICAgICAgbmF2aWdhdGUocGF0aCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNlbmRSZXF1ZXN0KGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCkgKyAnL3N5c3RlbS9hcGkvdjEvc2V0dXAvJyArIHByb3BzLmltcGxDb25maWcuY2lkLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHNldERhc2hib2FyZFNldHRpbmdzKHJlc3BvbnNlKTtcbiAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzZW5kUmVxdWVzdChsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgJy9hdXRoL2FwaS92MS91c2VyL2ZpbmQnLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRVc2VyRGV0YWlscyhyZXNwb25zZSk7XG4gICAgICAgICAgICBTb2NrZXRzLmluaXQoKTtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVUZW5hbnQoYXBwbGljYXRpb25NYW5hZ2VyLmdldFVuaXF1ZU9yZ0ZvclJvbGUoJ1ZFTkRPUicpKTtcbiAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoZGFzaGJvYXJkU2V0dGluZ3MgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmICghdG9rZW5SZWZyZXNoTW9uaXRvclN0YXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICB0b2tlbk1hbmFnZXIuc3RhcnRUb2tlblJlZnJlc2hNb25pdG9yKGxvY2F0aW9uICsgcHJvcHMuY29udGV4dFJvb3QgKyBwcm9wcy5pbXBsQ29uZmlnLmF1dGhVcmwgKyBcIi9yZWZyZXNoXCIsXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFNldHRpbmdzLnVzZXJOYW1lKTtcbiAgICAgICAgICAgICAgICBzZXRUb2tlblJlZnJlc2hNb25pdG9yU3RhcnRlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZGFzaGJvYXJkU2V0dGluZ3MudXNlckF2YXRhcikpIHtcbiAgICAgICAgICAgICAgICBzZXRBdmF0YXJVcmwoZGFzaGJvYXJkU2V0dGluZ3MudXNlckF2YXRhci51cmwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhcHBsaWNhdGlvTWFuYWdlci5zZXRBcHBsaWNhdGlvblRoZW1lQ29sb3JzKFxuICAgICAgICAgICAgICAgIGRhc2hib2FyZFNldHRpbmdzLnByaW1hcnlDb2xvcixcbiAgICAgICAgICAgICAgICBkYXNoYm9hcmRTZXR0aW5ncy5zZWNvbmRhcnlDb2xvcixcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHNldExvYWRpbmdDb2xvcihkYXNoYm9hcmRTZXR0aW5ncy5wcmltYXJ5Q29sb3IpO1xuICAgICAgICB9XG4gICAgfSwgW2Rhc2hib2FyZFNldHRpbmdzXSk7XG5cblxuICAgIGNvbnN0IGxvZ291dCA9ICgpID0+IHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShcImFjY2Vzc1Rva2VuXCIpO1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFwicmVmcmVzaFRva2VuXCIpO1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFwiaWRUb2tlblwiKTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShcImxhc3RMb2dpblwiKTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShcInVzZXJuYW1lXCIpO1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFwidXNlckF2YXRhcklkXCIpO1xuXG4gICAgICAgIGFwcGxpY2F0aW9NYW5hZ2VyLmNsZWFyKCk7XG4gICAgICAgIGFwcGxpY2F0aW9NYW5hZ2VyLm5hdmlnYXRlKCcvbG9naW4nKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYWluIHctMTAwIGgtMTAwIGQtaW5saW5lLWJsb2NrXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMTAwIGgtMTAwXCI+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAhbG9hZGluZyAmJiAhVXRpbHMuaXNOdWxsKGRhc2hib2FyZFNldHRpbmdzKSAmJiAhaGFzQ2xpZW50RXJyb3IgP1xuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YG1haW4gdy0xMDAgaC0xMDAgZC1pbmxpbmUtYmxvY2sgY29qLXNraW5gfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTEwMCBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEVtb3Rpb25UaGVtZVByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU9e2NyZWF0ZVRoZW1lKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW46IHByb3BzLmltcGxDb25maWcucHJpbWFyeUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZGFyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW46IHByb3BzLmltcGxDb25maWcuc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lPXtjcmVhdGVUaGVtZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluOiBkYXNoYm9hcmRTZXR0aW5ncy5zeXN0ZW1Qcm9maWxlRHRvLmZpcnN0Q29ycG9yYXRlQnJhbmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZGFyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluOiBkYXNoYm9hcmRTZXR0aW5ncy5zeXN0ZW1Qcm9maWxlRHRvLnNlY29uZENvcnBvcmF0ZUJyYW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVpQ3NzQmFzZWxpbmU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaXJlZm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFyQ29sb3I6ICdyZ2JhKDEwMCwgMTAwLCAxMDAsIDAuNCkgdHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGJhcldpZHRoOiAndGhpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2ViS2l0IGJyb3dzZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOjotd2Via2l0LXNjcm9sbGJhcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzhweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnOHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOjotd2Via2l0LXNjcm9sbGJhci10cmFjayc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMTAwLCAxMDAsIDEwMCwgMC40KScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAnYmFja2dyb3VuZC1jb2xvciAwLjNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Zlcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDEwMCwgMTAwLCAxMDAsIDAuNiknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDc3NCYXNlbGluZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9sZGluZ1NpZGVUYWJEYXNoYm9hcmQgbG9nb3V0Q2FsbEJhY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ291dCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncz17ZGFzaGJvYXJkU2V0dGluZ3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmF0YXI9eyFVdGlscy5pc051bGwoYXZhdGFyVXJsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXZhdGFyVXJsIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ289e2Rhc2hib2FyZFNldHRpbmdzLmxvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93RGFzaGJvYXJkTWVudT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBMb2dvUGF0aD17LypkYXNoYm9hcmRTZXR0aW5ncy5sb2dvKi9udWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nb1N0eWxlPXt7d2lkdGg6ICcxMjBweCd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TG9hZGluZ0luZGljYXRvciBjb2xvcj17bG9hZGluZ0NvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRW1vdGlvblRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNDbGllbnRFcnJvciA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17XCJtYXJnaW46IDEyOHB4OyBjb2xvcjogcmVkOyBmb250LXNpemU6IDI0cHhcIn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbSBlcnJvciAtIFVua25vd24gY2xpZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxMb2FkaW5nSW5kaWNhdG9yIGNvbG9yPXtsb2FkaW5nQ29sb3J9Lz5cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn0pKTtcblxuZXhwb3J0IGRlZmF1bHQgSW50ZXJhY3Rpb25Qb3J0YWxBcHBIb21lO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsbUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLGFBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLHdCQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxjQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyx3QkFBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsU0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsY0FBQSxHQUFBWixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVksT0FBQSxHQUFBWixPQUFBO0FBQXFFLFNBQUFE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
181
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Mb2FkaW5nSW5kaWNhdG9yIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9Ub2tlbk1hbmFnZXIiLCJfVXRpbHMiLCJfcmVhY3RSb3V0ZXJEb20iLCJfUmVzdFV0aWxzIiwiX1NpZGVNZW51TW9kdWxlRGFzaGJvYXJkIiwiX1NvY2tldE1hbmFnZXIiLCJfRm9sZGluZ1NpZGVUYWJEYXNoYm9hcmQiLCJfbWF0ZXJpYWwiLCJfVGhlbWVQcm92aWRlciIsIl9yZWFjdDIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJsb2NhdGlvbiIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJzdGF0dXMiLCJyZXNwb25zZSIsIm9rIiwiUHJvbWlzZSIsInJlc29sdmUiLCJlcnJvciIsIkVycm9yIiwic3RhdHVzVGV4dCIsImNvZGUiLCJyZWplY3QiLCJqc29uIiwidGV4dCIsIkludGVyYWN0aW9uUG9ydGFsQXBwSG9tZSIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwicmVmIiwiZGFzaGJvYXJkU2V0dGluZ3MiLCJzZXREYXNoYm9hcmRTZXR0aW5ncyIsInVzZVN0YXRlIiwidG9rZW5SZWZyZXNoTW9uaXRvclN0YXJ0ZWQiLCJzZXRUb2tlblJlZnJlc2hNb25pdG9yU3RhcnRlZCIsImxvYWRpbmdDb2xvciIsInNldExvYWRpbmdDb2xvciIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiaGFzQ2xpZW50RXJyb3IiLCJzZXRIYXNDbGllbnRFcnJvciIsInVzZXJEZXRhaWxzUmVhZHkiLCJzZXRVc2VyRGV0YWlsc1JlYWR5IiwiYXZhdGFyVXJsIiwic2V0QXZhdGFyVXJsIiwiY29udGV4dFJvb3QiLCJpbXBsQ29uZmlnIiwiYXV0aFVybCIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsIm5hdmlnYXRlIiwidXNlTmF2aWdhdGUiLCJ1c2VFZmZlY3QiLCJhcHBsaWNhdGlvTWFuYWdlciIsInNldFNlcnZpY2VBcGlQYXRoIiwic2VydmljZUFwaVBhdGgiLCJzZXRVSUNvbmZpZ1BhdGgiLCJ1aUNvbmZpZ1BhdGgiLCJzZXRDb250ZXh0Um9vdCIsInNldEZpbGVzQXBpUGF0aCIsImZpbGVzQXBpUGF0aCIsImFwcGxpY2F0aW9uTWFuYWdlciIsInNldE5hdmlnYXRvciIsInBhdGgiLCJzZW5kUmVxdWVzdCIsImdldENvbnRleHRSb290IiwiY2lkIiwiY29uc29sZSIsImxvZyIsInNldFVzZXJEZXRhaWxzIiwiU29ja2V0cyIsImluaXQiLCJzZXRBY3RpdmVUZW5hbnQiLCJnZXRVbmlxdWVPcmdGb3JSb2xlIiwidG9rZW5NYW5hZ2VyIiwic3RhcnRUb2tlblJlZnJlc2hNb25pdG9yIiwidXNlck5hbWUiLCJVdGlscyIsImlzTnVsbCIsInVzZXJBdmF0YXIiLCJ1cmwiLCJzZXRBcHBsaWNhdGlvblRoZW1lQ29sb3JzIiwicHJpbWFyeUNvbG9yIiwic2Vjb25kYXJ5Q29sb3IiLCJsb2dvdXQiLCJyZW1vdmVJdGVtIiwiY2xlYXIiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiRnJhZ21lbnQiLCJUaGVtZVByb3ZpZGVyIiwidGhlbWUiLCJjcmVhdGVUaGVtZSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsInNlY29uZGFyeSIsInN5c3RlbVByb2ZpbGVEdG8iLCJmaXJzdENvcnBvcmF0ZUJyYW5kQ29sb3IiLCJzZWNvbmRDb3Jwb3JhdGVCcmFuZENvbG9yIiwiY29tcG9uZW50cyIsIk11aUNzc0Jhc2VsaW5lIiwic3R5bGVPdmVycmlkZXMiLCJib2R5Iiwic2Nyb2xsYmFyQ29sb3IiLCJzY3JvbGxiYXJXaWR0aCIsIndpZHRoIiwiaGVpZ2h0IiwiYmFja2dyb3VuZCIsImJhY2tncm91bmRDb2xvciIsImJvcmRlclJhZGl1cyIsInRyYW5zaXRpb24iLCJDc3NCYXNlbGluZSIsImxvZ291dENhbGxCYWNrIiwic2V0dGluZ3MiLCJhdmF0YXIiLCJsb2dvIiwic2hvd0Rhc2hib2FyZE1lbnUiLCJhcHBMb2dvUGF0aCIsImxvZ29TdHlsZSIsImhvbWVCdXR0b25TZXR0aW5ncyIsImljb24iLCJpY29uU2l6ZSIsImNvbG9yIiwiY2FsbGJhY2siLCJjbG9zZUFsbFZpZXdzIiwic3R5bGUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvbGliL0ludGVyYWN0aW9uUG9ydGFsQXBwSG9tZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgTG9hZGluZ0luZGljYXRvciBmcm9tICcuL2NvbXBvbmVudHMvTG9hZGluZ0luZGljYXRvcic7XG5pbXBvcnQgYXBwbGljYXRpb01hbmFnZXIgZnJvbSBcIi4vQXBwbGljYXRpb25NYW5hZ2VyXCI7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gXCIuL0FwcGxpY2F0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHRva2VuTWFuYWdlciBmcm9tIFwiLi9zZWN1cml0eS9Ub2tlbk1hbmFnZXJcIjtcbmltcG9ydCBVdGlscyBmcm9tIFwiLi9VdGlsc1wiO1xuaW1wb3J0IHt1c2VOYXZpZ2F0ZX0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcbmltcG9ydCB7c2VuZFJlcXVlc3R9IGZyb20gXCIuL1Jlc3RVdGlsc1wiO1xuaW1wb3J0IFNpZGVNZW51TW9kdWxlRGFzaGJvYXJkIGZyb20gXCIuL2NvbXBvbmVudHMvZGFzaGJvYXJkL1NpZGVNZW51TW9kdWxlRGFzaGJvYXJkXCI7XG5pbXBvcnQgU29ja2V0cyBmcm9tIFwiLi9jb21wb25lbnRzL1NvY2tldE1hbmFnZXJcIjtcbmltcG9ydCBGb2xkaW5nU2lkZVRhYkRhc2hib2FyZCBmcm9tIFwiLi9jb21wb25lbnRzL2Rhc2hib2FyZC9Gb2xkaW5nU2lkZVRhYkRhc2hib2FyZFwiO1xuaW1wb3J0IHtjcmVhdGVUaGVtZSwgQ3NzQmFzZWxpbmV9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGhlbWVQcm92aWRlciBmcm9tIFwiQG11aS9zdHlsZXMvVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IHtUaGVtZVByb3ZpZGVyIGFzIEVtb3Rpb25UaGVtZVByb3ZpZGVyfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuXG5jb25zdCBzdGF0dXMgPSAocmVzcG9uc2UpID0+IHtcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yKHJlc3BvbnNlLnN0YXR1c1RleHQpO1xuICAgICAgICBlcnJvci5jb2RlID0gcmVzcG9uc2Uuc3RhdHVzO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfVxufTtcblxuY29uc3QganNvbiA9IChyZXNwb25zZSkgPT4ge1xuICAgIHJldHVybiByZXNwb25zZS50ZXh0KCk7XG59O1xuXG5jb25zdCBJbnRlcmFjdGlvblBvcnRhbEFwcEhvbWUgPSBSZWFjdC5tZW1vKCgocHJvcHMsIHJlZikgPT4ge1xuICAgIGNvbnN0IFtkYXNoYm9hcmRTZXR0aW5ncywgc2V0RGFzaGJvYXJkU2V0dGluZ3NdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3Rva2VuUmVmcmVzaE1vbml0b3JTdGFydGVkLCBzZXRUb2tlblJlZnJlc2hNb25pdG9yU3RhcnRlZF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbG9hZGluZ0NvbG9yLCBzZXRMb2FkaW5nQ29sb3JdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW2hhc0NsaWVudEVycm9yLCBzZXRIYXNDbGllbnRFcnJvcl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgLy8gR2F0ZSByZW5kZXIgb24gdXNlciBkZXRhaWxzIHNvIGNvbnN1bWVycyAoZS5nLiBQb3J0YWxEYXNoYm9hcmQncyBncmVldGluZylcbiAgICAvLyBuZXZlciByZWFkIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpIGJlZm9yZSBpdCBpcyBwb3B1bGF0ZWQuXG4gICAgY29uc3QgW3VzZXJEZXRhaWxzUmVhZHksIHNldFVzZXJEZXRhaWxzUmVhZHldID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFthdmF0YXJVcmwsIHNldEF2YXRhclVybF0gPSBSZWFjdC51c2VTdGF0ZShsb2NhdGlvbiArIHByb3BzLmNvbnRleHRSb290XG4gICAgICAgICsgcHJvcHMuaW1wbENvbmZpZy5hdXRoVXJsICsgXCIvdXNlci9hdmF0YXI/XCJcbiAgICAgICAgKyBcImFjY2Vzc190b2tlbj1cIiArIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJhY2Nlc3NUb2tlblwiKVxuICAgICAgICArIFwiJmlkVG9rZW49XCIgKyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiaWRUb2tlblwiKSk7XG5cbiAgICBjb25zdCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgYXBwbGljYXRpb01hbmFnZXIuc2V0U2VydmljZUFwaVBhdGgocHJvcHMuaW1wbENvbmZpZy5zZXJ2aWNlQXBpUGF0aCk7XG4gICAgICAgIGFwcGxpY2F0aW9NYW5hZ2VyLnNldFVJQ29uZmlnUGF0aChwcm9wcy5pbXBsQ29uZmlnLnVpQ29uZmlnUGF0aCk7XG4gICAgICAgIGFwcGxpY2F0aW9NYW5hZ2VyLnNldENvbnRleHRSb290KHByb3BzLmNvbnRleHRSb290KTtcbiAgICAgICAgYXBwbGljYXRpb01hbmFnZXIuc2V0RmlsZXNBcGlQYXRoKHByb3BzLmltcGxDb25maWcuZmlsZXNBcGlQYXRoKTtcbiAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldE5hdmlnYXRvcigocGF0aCkgPT4ge1xuICAgICAgICAgICAgbmF2aWdhdGUocGF0aCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNlbmRSZXF1ZXN0KGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCkgKyAnL3N5c3RlbS9hcGkvdjEvc2V0dXAvJyArIHByb3BzLmltcGxDb25maWcuY2lkLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHNldERhc2hib2FyZFNldHRpbmdzKHJlc3BvbnNlKTtcbiAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzZW5kUmVxdWVzdChsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgJy9hdXRoL2FwaS92MS91c2VyL2ZpbmQnLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRVc2VyRGV0YWlscyhyZXNwb25zZSk7XG4gICAgICAgICAgICBTb2NrZXRzLmluaXQoKTtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVUZW5hbnQoYXBwbGljYXRpb25NYW5hZ2VyLmdldFVuaXF1ZU9yZ0ZvclJvbGUoJ1ZFTkRPUicpKTtcbiAgICAgICAgICAgIHNldFVzZXJEZXRhaWxzUmVhZHkodHJ1ZSk7XG4gICAgICAgIH0sIChlKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGRhc2hib2FyZFNldHRpbmdzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoIXRva2VuUmVmcmVzaE1vbml0b3JTdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgdG9rZW5NYW5hZ2VyLnN0YXJ0VG9rZW5SZWZyZXNoTW9uaXRvcihsb2NhdGlvbiArIHByb3BzLmNvbnRleHRSb290ICsgcHJvcHMuaW1wbENvbmZpZy5hdXRoVXJsICsgXCIvcmVmcmVzaFwiLFxuICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRTZXR0aW5ncy51c2VyTmFtZSk7XG4gICAgICAgICAgICAgICAgc2V0VG9rZW5SZWZyZXNoTW9uaXRvclN0YXJ0ZWQodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGRhc2hib2FyZFNldHRpbmdzLnVzZXJBdmF0YXIpKSB7XG4gICAgICAgICAgICAgICAgc2V0QXZhdGFyVXJsKGRhc2hib2FyZFNldHRpbmdzLnVzZXJBdmF0YXIudXJsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXBwbGljYXRpb01hbmFnZXIuc2V0QXBwbGljYXRpb25UaGVtZUNvbG9ycyhcbiAgICAgICAgICAgICAgICBkYXNoYm9hcmRTZXR0aW5ncy5wcmltYXJ5Q29sb3IsXG4gICAgICAgICAgICAgICAgZGFzaGJvYXJkU2V0dGluZ3Muc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBzZXRMb2FkaW5nQ29sb3IoZGFzaGJvYXJkU2V0dGluZ3MucHJpbWFyeUNvbG9yKTtcbiAgICAgICAgfVxuICAgIH0sIFtkYXNoYm9hcmRTZXR0aW5nc10pO1xuXG5cbiAgICBjb25zdCBsb2dvdXQgPSAoKSA9PiB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oXCJhY2Nlc3NUb2tlblwiKTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShcInJlZnJlc2hUb2tlblwiKTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShcImlkVG9rZW5cIik7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oXCJsYXN0TG9naW5cIik7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oXCJ1c2VybmFtZVwiKTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShcInVzZXJBdmF0YXJJZFwiKTtcblxuICAgICAgICBhcHBsaWNhdGlvTWFuYWdlci5jbGVhcigpO1xuICAgICAgICBhcHBsaWNhdGlvTWFuYWdlci5uYXZpZ2F0ZSgnL2xvZ2luJyk7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWFpbiB3LTEwMCBoLTEwMCBkLWlubGluZS1ibG9ja1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTEwMCBoLTEwMFwiPlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgIWxvYWRpbmcgJiYgIVV0aWxzLmlzTnVsbChkYXNoYm9hcmRTZXR0aW5ncykgJiYgdXNlckRldGFpbHNSZWFkeSAmJiAhaGFzQ2xpZW50RXJyb3IgP1xuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YG1haW4gdy0xMDAgaC0xMDAgZC1pbmxpbmUtYmxvY2sgY29qLXNraW5gfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTEwMCBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEVtb3Rpb25UaGVtZVByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU9e2NyZWF0ZVRoZW1lKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW46IHByb3BzLmltcGxDb25maWcucHJpbWFyeUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZGFyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW46IHByb3BzLmltcGxDb25maWcuc2Vjb25kYXJ5Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lPXtjcmVhdGVUaGVtZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluOiBkYXNoYm9hcmRTZXR0aW5ncy5zeXN0ZW1Qcm9maWxlRHRvLmZpcnN0Q29ycG9yYXRlQnJhbmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZGFyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluOiBkYXNoYm9hcmRTZXR0aW5ncy5zeXN0ZW1Qcm9maWxlRHRvLnNlY29uZENvcnBvcmF0ZUJyYW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVpQ3NzQmFzZWxpbmU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaXJlZm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFyQ29sb3I6ICdyZ2JhKDEwMCwgMTAwLCAxMDAsIDAuNCkgdHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGJhcldpZHRoOiAndGhpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2ViS2l0IGJyb3dzZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOjotd2Via2l0LXNjcm9sbGJhcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzhweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnOHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOjotd2Via2l0LXNjcm9sbGJhci10cmFjayc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMTAwLCAxMDAsIDEwMCwgMC40KScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAnYmFja2dyb3VuZC1jb2xvciAwLjNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Zlcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDEwMCwgMTAwLCAxMDAsIDAuNiknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDc3NCYXNlbGluZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9sZGluZ1NpZGVUYWJEYXNoYm9hcmQgbG9nb3V0Q2FsbEJhY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ291dCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncz17ZGFzaGJvYXJkU2V0dGluZ3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmF0YXI9eyFVdGlscy5pc051bGwoYXZhdGFyVXJsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXZhdGFyVXJsIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ289e2Rhc2hib2FyZFNldHRpbmdzLmxvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93RGFzaGJvYXJkTWVudT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBMb2dvUGF0aD17LypkYXNoYm9hcmRTZXR0aW5ncy5sb2dvKi9udWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nb1N0eWxlPXt7d2lkdGg6ICcxMjBweCd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9tZUJ1dHRvblNldHRpbmdzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ0hPTUUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICdIb21lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCB0aGUgUG9ydGFsRGFzaGJvYXJkIChyZW5kZXJlZCBieSB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmlldy86aWQgcm91dGUgYXMgdGhlIGRhc2hib2FyZCBjaHJvbWUpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuY2xvc2VBbGxWaWV3cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLm5hdmlnYXRlKCcvdmlldy9kYXNoYm9hcmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TG9hZGluZ0luZGljYXRvciBjb2xvcj17bG9hZGluZ0NvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRW1vdGlvblRoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNDbGllbnRFcnJvciA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17XCJtYXJnaW46IDEyOHB4OyBjb2xvcjogcmVkOyBmb250LXNpemU6IDI0cHhcIn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbSBlcnJvciAtIFVua25vd24gY2xpZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxMb2FkaW5nSW5kaWNhdG9yIGNvbG9yPXtsb2FkaW5nQ29sb3J9Lz5cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn0pKTtcblxuZXhwb3J0IGRlZmF1bHQgSW50ZXJhY3Rpb25Qb3J0YWxBcHBIb21lO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsbUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLGFBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLHdCQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxjQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyx3QkFBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsU0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsY0FBQSxHQUFBWixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVksT0FBQSxHQUFBWixPQUFBO0FBQXFFLFNBQUFELHVCQUFBYyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRXJFLE1BQU1HLFFBQVEsR0FBR0MsTUFBTSxDQUFDRCxRQUFRLENBQUNFLFFBQVEsR0FBRyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0QsUUFBUSxDQUFDRyxRQUFRO0FBRTNFLE1BQU1DLE1BQU0sR0FBSUMsUUFBUSxJQUFLO0VBQ3pC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LFNBQUEsQ0FBQTZHLFdBQVcsTUFBRSxDQUFDLGVBQ2Z6SCxNQUFBLENBQUFpQixPQUFBLENBQUErRSxhQUFBLENBQUNyRix3QkFBQSxDQUFBTSxPQUF1QjtJQUFDeUcsY0FBYyxFQUFFQSxDQUFBLEtBQU07TUFDM0M3QixNQUFNLENBQUMsQ0FBQztJQUNaLENBQUU7SUFDdUI4QixRQUFRLEVBQUVwRixpQkFBa0I7SUFDNUJxRixNQUFNLEVBQUUsQ0FBQ3RDLGNBQUssQ0FBQ0MsTUFBTSxDQUFDbkMsU0FBUyxDQUFDLEdBQzFCQSxTQUFTLEdBQUcsSUFBSztJQUN2QnlFLElBQUksRUFBRXRGLGlCQUFpQixDQUFDc0YsSUFBSztJQUM3QkMsaUJBQWlCLEVBQUUsS0FBTTtJQUN6QkMsV0FBVyxFQUFFLDBCQUEwQixJQUFLO0lBQzVDQyxTQUFTLEVBQUU7TUFBQ2IsS0FBSyxFQUFFO0lBQU8sQ0FBRTtJQUM1QmMsa0JBQWtCLEVBQUU7TUFDaEJDLElBQUksRUFBRSxNQUFNO01BQ1pDLFFBQVEsRUFBRSxPQUFPO01BQ2pCbEcsSUFBSSxFQUFFLE1BQU07TUFDWm1HLEtBQUssRUFBRSxXQUFXO01BQ2xCQyxRQUFRLEVBQUVBLENBQUEsS0FBTTtRQUNaO1FBQ0E7UUFDQS9ELDJCQUFrQixDQUFDZ0UsYUFBYSxDQUFDLElBQUksQ0FBQztRQUN0Q2hFLDJCQUFrQixDQUFDWCxRQUFRLENBQUMsaUJBQWlCLENBQUM7TUFDbEQ7SUFDSjtFQUFFLENBQzFCLENBQUMsZUFDRjNELE1BQUEsQ0FBQWlCLE9BQUEsQ0FBQStFLGFBQUEsQ0FBQzdGLGlCQUFBLENBQUFjLE9BQWdCO0lBQUNtSCxLQUFLLEVBQUV4RjtFQUFhLENBQUUsQ0FDN0IsQ0FDRyxDQUNyQixDQUNKLENBQ1AsQ0FBQyxHQUVISSxjQUFjLGdCQUNWaEQsTUFBQSxDQUFBaUIsT0FBQSxDQUFBK0UsYUFBQTtJQUFLdUMsS0FBSyxFQUFFO0VBQTZDLEdBQUMsK0JBRXJELENBQUMsR0FFTixJQUVYLENBQUMsZUFDTnZJLE1BQUEsQ0FBQWlCLE9BQUEsQ0FBQStFLGFBQUEsQ0FBQzdGLGlCQUFBLENBQUFjLE9BQWdCO0lBQUNtSCxLQUFLLEVBQUV4RjtFQUFhLENBQUMsQ0FDdEMsQ0FBQztBQUVkLENBQUUsQ0FBQztBQUFDLElBQUE0RixRQUFBLEdBQUFDLE9BQUEsQ0FBQXhILE9BQUEsR0FFV2lCLHdCQUF3QiIsImlnbm9yZUxpc3QiOltdfQ==