@james_jayaraj/test-npm 1.1.7 → 1.1.8

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.
@@ -17,6 +17,8 @@ export class HolaRx {
17
17
  this.tempreferralid = "";
18
18
  this.spinnerflag = false;
19
19
  this.authenticateBlock = false;
20
+ this.Height = "650px";
21
+ this.width = "950px";
20
22
  this.setLoginterval();
21
23
  }
22
24
  ngOnInit() {
@@ -70,13 +72,13 @@ export class HolaRx {
70
72
  if (this.commonLoaderServices.rxInitLoaderHiddden)
71
73
  this.commonLoaderServices.addLoaderElement(false);
72
74
  this.Changedetect.detectChanges();
73
- return this.openNewRx(this.tempRxDetails);
75
+ return this.openNewRx(this.tempRxDetails, this.Height, this.width);
74
76
  }
75
77
  else if (flag == 2) {
76
78
  if (this.commonLoaderServices.rxInitLoaderHiddden)
77
79
  this.commonLoaderServices.addLoaderElement(false);
78
80
  this.Changedetect.detectChanges();
79
- return this.openEditRx(this.tempRxDetails);
81
+ return this.openEditRx(this.tempRxDetails, this.Height, this.width);
80
82
  }
81
83
  else if (flag == 3) {
82
84
  if (this.commonLoaderServices.rxInitLoaderHiddden)
@@ -183,6 +185,8 @@ export class HolaRx {
183
185
  RxDetails.type = "1";
184
186
  RxDetails.clientId = this.commonservice.getCredetial();
185
187
  this.tempRxDetails = RxDetails;
188
+ this.width = !this.IsNullOrEmpty(Width) ? Width : '1200px';
189
+ this.Height = !this.IsNullOrEmpty(Height) ? Height : '650px';
186
190
  if (!this.IsNullOrEmpty(this.commonservice.HolaRxToken)) {
187
191
  this.auditlog(JSON.stringify(RxDetails), config.CREATE_CONSULTATION);
188
192
  if (!this.IsNullOrEmpty(RxDetails.appointmentid)) {
@@ -282,6 +286,8 @@ export class HolaRx {
282
286
  RxDetails.type = "1";
283
287
  RxDetails.clientId = this.commonservice.getCredetial();
284
288
  this.tempRxDetails = RxDetails;
289
+ this.width = !this.IsNullOrEmpty(Width) ? Width : '1200px';
290
+ this.Height = !this.IsNullOrEmpty(Height) ? Height : '650px';
285
291
  if (!this.IsNullOrEmpty(this.commonservice.HolaRxToken)) {
286
292
  this.auditlog(JSON.stringify(RxDetails), config.CREATE_CONSULTATION);
287
293
  if (!this.IsNullOrEmpty(RxDetails.appointmentid)) {
@@ -897,4 +903,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
897
903
  type: ViewChild,
898
904
  args: ["rxwidgets", { static: true }]
899
905
  }] } });
900
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sYS1yeC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU16RCxNQUFNLE9BQU8sTUFBTTtJQVFqQixZQUFvQixhQUE2QixFQUFTLG9CQUEwQyxFQUFVLFVBQXNCLEVBQVUsWUFBK0I7UUFBekosa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQVMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFOckssWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUM1QixRQUFRO0lBRVIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLGFBQWEs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QUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDM0M7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDNUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDOUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs2QkFDdkM7aUNBQ0ksSUFB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bUJBQW1CO1lBQ3JCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN0RixDQUFDLENBQUMsQ0FBQTtTQUNIO1FBQ0QsT0FBTyxFQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUNuRjtJQUNILENBQUM7O21HQXAxQlUsTUFBTTt1RkFBTixNQUFNLG1LQ1puQixrakJBWWM7MkZEQUQsTUFBTTtrQkFMbEIsU0FBUzsrQkFDRSxTQUFTO2lNQVd1QixPQUFPO3NCQUFoRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlcywgQ29tbW9uTG9hZGVyU2VydmljZXMgfSBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbic7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY29uZmlnLCBlcnJvcmNvbmZpZyB9IGZyb20gJy4vZW52aXJvbm1lbnRzL2NvbmZpZyc7XHJcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2hvbGEtcngnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ob2xhLXJ4LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ob2xhLXJ4LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSG9sYVJ4IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIHRlbXBSeERldGFpbHM6IGFueTtcclxuICBwcml2YXRlIG1lc3NhZ2UgPSBcIlwiO1xyXG4gIHByaXZhdGUgdGVtcHJ4aWQgPSBcIlwiO1xyXG4gIHByaXZhdGUgdGVtcHJlZmVycmFsaWQgPSBcIlwiO1xyXG4gIHByaXZhdGUgc3Bpbm5lcmZsYWcgPSBmYWxzZTtcclxuICBwcml2YXRlIGF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZChcInJ4d2lkZ2V0c1wiLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbW1vbnNlcnZpY2U6IENvbW1vblNlcnZpY2VzLCBwdWJsaWMgY29tbW9uTG9hZGVyU2VydmljZXM6IENvbW1vbkxvYWRlclNlcnZpY2VzLCBwcml2YXRlIGFwaXNlcnZpY2U6IEFwaVNlcnZpY2UsIHByaXZhdGUgQ2hhbmdlZGV0ZWN0OiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkgeyB0aGlzLnNldExvZ2ludGVydmFsKCk7IH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldExvZ2ludGVydmFsKCkge1xyXG4gICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUgIT0gbnVsbCAmJiB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUgIT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMuYXBpc2VydmljZS5Qb3N0KHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSwgY29uZmlnLkNSRUFURV9MT0dfRVhDRVBUSU9OKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9LCA1MDAwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaW5pdChjbGllbnRpZDogc3RyaW5nLCBjbGllbnRzZWNyZXQ6IHN0cmluZywgc2FuZGJveDogYm9vbGVhbiwgZmxhZz86IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcpIHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIkluaXQgQXV0aGVudGljYXRpb25cIjtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9IFwiY2xpZW50aWRcIlxyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwiY2xpZW50aWRcIjtcclxuICAgICAgfVxyXG4gICAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgICBjbGllbnRJZDogY2xpZW50aWQsXHJcbiAgICAgICAgY2xpZW50U2VjcmV0OiBjbGllbnRzZWNyZXRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCA9IHNhbmRib3g7XHJcbiAgICAgIGlmICghc2FuZGJveCkge1xyXG4gICAgICAgIGVudmlyb25tZW50LmFwaUVuZHBvaW50ID0gY29uZmlnLkxJVkVfVVJMO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGVudmlyb25tZW50LmFwaUVuZHBvaW50ID0gY29uZmlnLlNUQUdJTkdfVVJMO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5Qb3N0KGRhdGEsIFwiYXV0aGVudGljYXRlXCIpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyeENyZWRlbnRpYWxzJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Rva2VuRXhwaXJ5JywgSlNPTi5zdHJpbmdpZnkocmVzLmV4cGlyZXNpbikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuID0gcmVzLmF1dGguYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFRpbWVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZmxhZyA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuTmV3UngodGhpcy50ZW1wUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BlbkVkaXRSeCh0aGlzLnRlbXBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuUmVmZXJyYWwodGhpcy50ZW1wUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWcgPT0gNCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG93bmxvYWRSeCh0aGlzLnRlbXByeGlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWcgPT0gNSkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG93bmxvYWRSZWZlcnJhbCh0aGlzLnRlbXByZWZlcnJhbGlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghcmVzLmZsYWcpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZyAmJiB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZyAmJiB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJpbml0XCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJpbml0XCIpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZyAmJiB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJpbml0XCIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFRpbWVyKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgdmFyIGV4cGlyeSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rva2VuRXhwaXJ5JykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShleHBpcnkpICYmIHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lICYmICF0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrICYmIChuZXcgRGF0ZShuZXcgRGF0ZShleHBpcnkpLnNldE1pbnV0ZXMobmV3IERhdGUoZXhwaXJ5KS5nZXRNaW51dGVzKCkgLSAxKSkgPD0gbmV3IERhdGUoKSB8fCB0aGlzLmFwaXNlcnZpY2UudW5BdXRob3JpemVkRmxhZykpIHtcclxuICAgICAgICAgIHRoaXMuYXBpc2VydmljZS51bkF1dGhvcml6ZWRGbGFnID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJmbGFnID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXJyLm1lc3NhZ2UsIGVyci5zdGFjaywgXCJIb2xhUnhcIiwgXCJzZXRUaW1lclwiKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwic2V0VGltZXJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuTmV3UngoUnhEZXRhaWxzOiBhbnksIEhlaWdodD86YW55LFdpZHRoPzphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIk5ldyBSeFwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIgPSAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscykgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpID8gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmVtYWlsKSA/IFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwgOiBcIlwiIDogXCJcIiA6IFwiXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcInByYWN0aXRpb25lciBlbWFpbFwiO1xyXG4gICAgdHJ5IHtcclxuICAgICAgUnhEZXRhaWxzLnR5cGUgPSBcIjFcIjtcclxuICAgICAgUnhEZXRhaWxzLmNsaWVudElkID0gdGhpcy5jb21tb25zZXJ2aWNlLmdldENyZWRldGlhbCgpO1xyXG4gICAgICB0aGlzLnRlbXBSeERldGFpbHMgPSBSeERldGFpbHM7XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bG9nKEpTT04uc3RyaW5naWZ5KFJ4RGV0YWlscyksIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKTtcclxuICAgICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMuYXBwb2ludG1lbnRpZCkpIHtcclxuICAgICAgICAgIHRoaXMuYXBwb2ludG1lbnRWYWxpZGF0aW9uKFJ4RGV0YWlscywgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uKFJ4RGV0YWlscywgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY29uc3VsdGF0aW9uSWQgPSBSeERldGFpbHMuY29uc3VsdGF0aW9uaWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscyA9IHJlcy5waHlzaWNpYW5EZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBhdGllbnREZXRhaWxzID0gcmVzLnBhdGllbnREZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmZhY2lsaXR5RGV0YWlscyA9IHJlcy5mYWNpbGl0eURldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yUGF0aWVudElkID0gcmVzLnZlbmRvclBhdGllbnRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JGYWNpbGl0eUlkID0gcmVzLnZlbmRvckZhY2lsaXR5SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yUGh5c2ljaWFuSWQgPSByZXMudmVuZG9yUGh5c2ljaWFuSWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmlzaXRJZCA9IHJlcy52aXNpdElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNyZWF0ZVBhdGllbnRSZXNwb25zZSA9IHJlcztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5lZGl0UHJlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGhhcm1hY3lFbWFpbCA9ICF0aGlzLklzTnVsbE9yRW1wdHkocmVzLnBoYXJtYWN5RW1haWwpID8gcmVzLnBoYXJtYWN5RW1haWwgOiBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmlzU2NyaXB0VG9QaGFybWFjeSA9ICghdGhpcy5Jc051bGxPckVtcHR5KHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kpICYmIHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kpICE9IDAgPyByZXMuaXNTY3JpcHRUb1BoYXJtYWN5IDogMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMpICYmICF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQpICYmIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDApXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuSEl2YWxpZGF0aW9uKHJlcyk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcG9wX3dpZCcsIGAkeyF0aGlzLklzTnVsbE9yRW1wdHkoV2lkdGgpID8gV2lkdGggOiAnMTIwMHB4J31gKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wb3B1cGgnLCBgJHshdGhpcy5Jc051bGxPckVtcHR5KEhlaWdodCkgPyBIZWlnaHQgOiAnNjUwcHgnfWApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5vcGVuUnhXaWRnZXQodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiZXJyb3JcIiwgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5FZGl0UngoUnhEZXRhaWxzOiBhbnksIEhlaWdodD86IGFueSwgV2lkdGg/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIkVkaXQgUnhcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMpID8gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCkgPyBSeERldGFpbHMucHJhY3RpdGlvbmVyLmVtYWlsIDogXCJcIiA6IFwiXCIgOiBcIlwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJwcmFjdGl0aW9uZXIgZW1haWxcIjtcclxuICAgIHRyeSB7XHJcbiAgICAgIFJ4RGV0YWlscy50eXBlID0gXCIxXCI7XHJcbiAgICAgIFJ4RGV0YWlscy5jbGllbnRJZCA9IHRoaXMuY29tbW9uc2VydmljZS5nZXRDcmVkZXRpYWwoKTtcclxuICAgICAgdGhpcy50ZW1wUnhEZXRhaWxzID0gUnhEZXRhaWxzO1xyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShSeERldGFpbHMpLCBjb25maWcuQ1JFQVRFX0NPTlNVTFRBVElPTik7XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmFwcG9pbnRtZW50aWQpKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcG9pbnRtZW50VmFsaWRhdGlvbihSeERldGFpbHMsIDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoYXJtYWN5RW1haWwgPSAhdGhpcy5Jc051bGxPckVtcHR5KHJlcy5waGFybWFjeUVtYWlsKSA/IHJlcy5waGFybWFjeUVtYWlsIDogXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc1NjcmlwdFRvUGhhcm1hY3kgPSAoIXRoaXMuSXNOdWxsT3JFbXB0eShyZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAmJiByZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAhPSAwID8gcmVzLmlzU2NyaXB0VG9QaGFybWFjeSA6IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoUnhEZXRhaWxzLnJ4aWQgIT0gbnVsbCAmJiBSeERldGFpbHMucnhpZCAhPSBcIlwiICYmIFJ4RGV0YWlscy5yeGlkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzLnJ4RGV0YWlscyAhPSBudWxsICYmIHJlcy5yeERldGFpbHMgIT0gXCJcIiAmJiByZXMucnhEZXRhaWxzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5lZGl0UHJlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucnhEZXRhaWxzID0gcmVzLnJ4RGV0YWlscztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucnhpZCA9IHJlcy5yeERldGFpbHMucnhJZDtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzQ2LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY3JlYXRlUGF0aWVudFJlc3BvbnNlID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMpICYmICF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQpICYmIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDApXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuSEl2YWxpZGF0aW9uKHJlcyk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcG9wX3dpZCcsIGAkeyF0aGlzLklzTnVsbE9yRW1wdHkoV2lkdGgpID8gV2lkdGggOiAnMTIwMHB4J31gKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wb3B1cGgnLCBgJHshdGhpcy5Jc051bGxPckVtcHR5KEhlaWdodCkgPyBIZWlnaHQgOiAnNjUwcHgnfWApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5vcGVuUnhXaWRnZXQodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlblJlZmVycmFsKFJ4RGV0YWlsczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJTZW5kIFJlZmVycmFsXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMlwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDMpO1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHRoaXMubWVzc2FnZSwgdGhpcy5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoYXJtYWN5RW1haWwgPSAhdGhpcy5Jc051bGxPckVtcHR5KHJlcy5waGFybWFjeUVtYWlsKSA/IHJlcy5waGFybWFjeUVtYWlsIDogXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc1NjcmlwdFRvUGhhcm1hY3kgPSAoIXRoaXMuSXNOdWxsT3JFbXB0eShyZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAmJiByZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAhPSAwID8gcmVzLmlzU2NyaXB0VG9QaGFybWFjeSA6IDA7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21tb25zZXJ2aWNlLlBhdGhvbG9neSh0aGlzLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpOyB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLCBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgdGhpcy5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCAzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvd25sb2FkUngoUnhJRDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJEb3dubG9hZCBSeFwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIgPSBSeElEO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJyeGlkXCI7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy50ZW1wcnhpZCA9IFJ4SUQ7XHJcbiAgICAgIHZhciBjbGllbnRJZCA9IHRoaXMuY29tbW9uc2VydmljZS5nZXRDcmVkZXRpYWwoKTtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcnhpZDogUnhJRCxcclxuICAgICAgICB0eXBlOiBcIjBcIixcclxuICAgICAgICBjbGllbnRJZDogY2xpZW50SWRcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkKSwgY29uZmlnLlBIWVNJQ0lBTi5SWF9QUklOVCArIFJ4SUQgKyBcIiZ0eXBlPTAmY2xpZW50SWQ9XCIgKyBjbGllbnRJZCk7XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeElEKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzQ2LmNvZGUpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5SWF9QUklOVCArIFJ4SUQgKyBcIiZ0eXBlPTAmY2xpZW50SWQ9XCIgKyBjbGllbnRJZCkucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkRvd25sb2FkKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlc3BvbnNlLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXNwb25zZS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzcG9uc2UuZXJyb3JfY29kZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLCBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCA0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFJlZmVycmFsKFJlZmVycmFsSUQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiRG93bmxvYWQgUmVmZXJyYWxcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gUmVmZXJyYWxJRDtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicmVmZXJyYWwgaWRcIjtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnRlbXByZWZlcnJhbGlkID0gUmVmZXJyYWxJRDtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcmVmZXJyYWxJZDogUmVmZXJyYWxJRFxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bG9nKEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLCBjb25maWcuUEhZU0lDSUFOLlJFRkVSUkFMX1BSSU5UICsgUmVmZXJyYWxJRCk7XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSZWZlcnJhbElEKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80My5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzQzLmNvZGUpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80My5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80My5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5SRUZFUlJBTF9QUklOVCArIFJlZmVycmFsSUQpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Eb3dubG9hZChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXNwb25zZS5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzcG9uc2UuZXJyb3JfY29kZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21tb25Eb3dubG9hZChyZXNwb25zZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICBhLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTpub25lOycpO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICBhLmRvd25sb2FkID0gcmVzcG9uc2UuZmlsZU5hbWU7XHJcbiAgICAgIGEuaHJlZiA9IFwiZGF0YTphcHBsaWNhdGlvbi9wZGY7Y2hhcnNldD11dGYtODtiYXNlNjQsXCIgKyByZXNwb25zZS5maWxlO1xyXG4gICAgICBhLmNsaWNrKCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnc3VjY2VzcycpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJjb21tb25Eb3dubG9hZFwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBhcHBvaW50bWVudFZhbGlkYXRpb24oUnhEZXRhaWxzOiBhbnksIGZsYWc6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMuZmFjaWxpdHlpZCkpIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl80Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzQuY29kZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucnhpZCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJ2YWxpZGF0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIHZhbGlkYXRpb24oUnhEZXRhaWxzOiBhbnksIGZsYWc6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSkge1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmNvbnN1bHRhdGlvbmlkKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZWlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXJpZCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMy5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudGlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOS5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucnhpZCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5yeGlkKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucnhpZCA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZSkpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmlkKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UubmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzUubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmVtYWlsKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl82LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UucGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl83Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LmFkZHJlc3NsaW5lMSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzcxLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcxLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN1YnVyYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzEwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5ocGlvKSkgeyBSeERldGFpbHMucHJhY3RpY2UuaHBpbyA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmZpcnN0bmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmxhc3RuYW1lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTYuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZG9iKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTgubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTguY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xOS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yMC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yMC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzID0ge307XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNzIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNzIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzLmFkZHJlc3NsaW5lMiA9IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yNC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzPy5zdGF0ZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKGZsYWcgPT0gMykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIucHJvdmlkZXJudW1iZXIpKVxyXG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI3Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI3LmNvZGUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuc2lnbmF0dXJlX2ltYWdlKSlcclxuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOC5jb2RlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5ocGlpKSkgeyBSeERldGFpbHMucHJhY3RpdGlvbmVyLmhwaWkgPSAwOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50KSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzMwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzMwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5maXJzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQubGFzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmRvYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5lbWFpbCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQudGltZXpvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNy5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcykpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LmFkZHJlc3NsaW5lMikpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDAubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDAuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnBvc3Rjb2RlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDEuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZSA9IHt9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ubnVtYmVyKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5udW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ucmVmZXJlbmNlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5yZWZlcmVuY2UgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8uZXhwaXJ5KSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5leHBpcnkgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5paGkpKSB7IFJ4RGV0YWlscy5wYXRpZW50LmloaSA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSEl2YWxpZGF0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciB3YXJuaW5nX21zZyA9ICcnO1xyXG4gICAgICBpZiAoIXZhbHVlLmlzX2hwaW9fdmFsaWQpIHtcclxuICAgICAgICB3YXJuaW5nX21zZyA9IHZhbHVlLmhwaW9fcmVzcG9uc2VfbXNnO1xyXG4gICAgICB9IGlmICghdmFsdWUuaXNfaHBpaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaHBpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaHBpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfSBpZiAoIXZhbHVlLmlzX2loaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaWhpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaWhpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh3YXJuaW5nX21zZykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHdhcm5pbmdfbXNnLCBcIndhcm5pbmdcIik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh2YWx1ZS5paGlfcmVzcG9uc2VfbXNnKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4odmFsdWUuaWhpX3Jlc3BvbnNlX21zZywgXCJzdWNjZXNzXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIkhJdmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSXNOdWxsT3JFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCBTdHJpbmcodmFsdWUpLnRyaW0oKSA9PT0gXCJcIikge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiSXNOdWxsT3JFbXB0eVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9udG9hc3QoZXJyb3JfbWVzc2FnZTogYW55LCBlcnJvcl9jb2RlPzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZXJyb3JSZXNwb25zZShlcnJvcl9jb2RlLCBlcnJvcl9tZXNzYWdlKTtcclxuICAgICAgaWYgKHRoaXMubWVzc2FnZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlICs9IFwiPGJyPlwiICsgZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvbnRvYXN0XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlcnJvclJlc3BvbnNlKGVycm9yX2NvZGU6IGFueSwgZXJyb3JfbWVzc2FnZTogYW55LCBzdWNjZXNzZmxhZzogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciByZXNwb25zZTogYW55ID0ge1xyXG4gICAgICAgIHN0YXR1czogc3VjY2Vzc2ZsYWcgPT0gdHJ1ZSA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIHJlc3BvbnNlOiB7XHJcbiAgICAgICAgICByZXNwb25zZV9jb2RlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfY29kZSA6IFwiXCIsXHJcbiAgICAgICAgICByZXNwb25zZV9tZXNzYWdlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfbWVzc2FnZSA6IFwiXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICBlcnJvcl9jb2RlOiBzdWNjZXNzZmxhZyA9PSBmYWxzZSA/IGVycm9yX2NvZGUgOiBcIlwiLFxyXG4gICAgICAgICAgZXJyb3JfbWVzc2FnZTogc3VjY2Vzc2ZsYWcgPT0gZmFsc2UgPyBlcnJvcl9tZXNzYWdlIDogXCJcIlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcbiAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImVycm9yUmVzcG9uc2VcIik7XHJcbiAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXVkaXRsb2codmFsdWU6IGFueSwgYXBpOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgIGlkZW50aWZpZXJWYWx1ZTogdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIsXHJcbiAgICAgICAgaWRlbnRpZmllclR5cGU6IHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSxcclxuICAgICAgICByZXF1ZXN0UGF5bG9hZDogdmFsdWUsXHJcbiAgICAgICAgcmVzcG9uc2VDb2RlOiBcIlwiLFxyXG4gICAgICAgIHJlc3BvbnNlUGF5bG9hZDogXCJcIixcclxuICAgICAgICBjcmVhdGVkQnk6IFwiVUktUnhcIixcclxuICAgICAgICBhcGk6IGFwaSxcclxuICAgICAgICByZXF1ZXN0VXJsOiB3aW5kb3cub3JpZ2luXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlzZXJ2aWNlLlBvc3QoZGF0YSwgY29uZmlnLkFVRElUX0xPRykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVyci5tZXNzYWdlLCBlcnIuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiYXVkaXRsb2dcIik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImF1ZGl0bG9nXCIpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8IS0tIDx1bCBjbGFzcz1cIm5vdGlmaWNhdGlvbnNcIiA+PC91bD5cclxuPGRpdiBbY2xhc3NdPVwieydsb2FkZXJfdmlzaWJsZSc6Y29tbW9uTG9hZGVyU2VydmljZXMuZnVsbFNjcmVlbkxvYWRlciwnbG9hZGVyX2hpZGRlbic6IWNvbW1vbkxvYWRlclNlcnZpY2VzLmZ1bGxTY3JlZW5Mb2FkZXJ9XCJcclxuICAgIGNsYXNzPVwic3BsYXNoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGF1c2VcIj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPiA8aW1nIGNsYXNzPVwic3Bpbm5lci1pbWdcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaG9sYS1oZWFsdGgtc3Bpbm5lci5wbmdcIiBhbHQ9XCJob2xhX2hlYWx0aFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+TG9hZGluZy4uLjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcnh3aWRnZXRzPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
906
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sYS1yeC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU16RCxNQUFNLE9BQU8sTUFBTTtJQVVqQixZQUFvQixhQUE2QixFQUFTLG9CQUEwQyxFQUFVLFVBQXNCLEVBQVUsWUFBK0I7UUFBekosa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQVMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFSckssWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsV0FBTSxHQUFHLE9BQU8sQ0FBQztRQUNqQixVQUFLLEdBQUcsT0FBTyxDQUFDO1FBR3BCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUFDLENBQUM7SUFDNUIsUUFBUTtJQUVSLENBQUM7SUFFTyxjQUFj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TSxtS0NabkIsa2pCQVljOzJGREFELE1BQU07a0JBTGxCLFNBQVM7K0JBQ0UsU0FBUztpTUFhdUIsT0FBTztzQkFBaEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZXMsIENvbW1vbkxvYWRlclNlcnZpY2VzIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb21tb24nO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNvbmZpZywgZXJyb3Jjb25maWcgfSBmcm9tICcuL2Vudmlyb25tZW50cy9jb25maWcnO1xyXG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdob2xhLXJ4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaG9sYS1yeC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaG9sYS1yeC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEhvbGFSeCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSB0ZW1wUnhEZXRhaWxzOiBhbnk7XHJcbiAgcHJpdmF0ZSBtZXNzYWdlID0gXCJcIjtcclxuICBwcml2YXRlIHRlbXByeGlkID0gXCJcIjtcclxuICBwcml2YXRlIHRlbXByZWZlcnJhbGlkID0gXCJcIjtcclxuICBwcml2YXRlIHNwaW5uZXJmbGFnID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBhdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gIHByaXZhdGUgSGVpZ2h0ID0gXCI2NTBweFwiO1xyXG4gIHByaXZhdGUgd2lkdGggPSBcIjk1MHB4XCI7XHJcbiAgQFZpZXdDaGlsZChcInJ4d2lkZ2V0c1wiLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbW1vbnNlcnZpY2U6IENvbW1vblNlcnZpY2VzLCBwdWJsaWMgY29tbW9uTG9hZGVyU2VydmljZXM6IENvbW1vbkxvYWRlclNlcnZpY2VzLCBwcml2YXRlIGFwaXNlcnZpY2U6IEFwaVNlcnZpY2UsIHByaXZhdGUgQ2hhbmdlZGV0ZWN0OiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkgeyB0aGlzLnNldExvZ2ludGVydmFsKCk7IH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldExvZ2ludGVydmFsKCkge1xyXG4gICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUgIT0gbnVsbCAmJiB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUgIT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMuYXBpc2VydmljZS5Qb3N0KHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSwgY29uZmlnLkNSRUFURV9MT0dfRVhDRVBUSU9OKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9LCA1MDAwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaW5pdChjbGllbnRpZDogc3RyaW5nLCBjbGllbnRzZWNyZXQ6IHN0cmluZywgc2FuZGJveDogYm9vbGVhbiwgZmxhZz86IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcpIHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIkluaXQgQXV0aGVudGljYXRpb25cIjtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9IFwiY2xpZW50aWRcIlxyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwiY2xpZW50aWRcIjtcclxuICAgICAgfVxyXG4gICAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgICBjbGllbnRJZDogY2xpZW50aWQsXHJcbiAgICAgICAgY2xpZW50U2VjcmV0OiBjbGllbnRzZWNyZXRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCA9IHNhbmRib3g7XHJcbiAgICAgIGlmICghc2FuZGJveCkge1xyXG4gICAgICAgIGVudmlyb25tZW50LmFwaUVuZHBvaW50ID0gY29uZmlnLkxJVkVfVVJMO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGVudmlyb25tZW50LmFwaUVuZHBvaW50ID0gY29uZmlnLlNUQUdJTkdfVVJMO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5Qb3N0KGRhdGEsIFwiYXV0aGVudGljYXRlXCIpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyeENyZWRlbnRpYWxzJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Rva2VuRXhwaXJ5JywgSlNPTi5zdHJpbmdpZnkocmVzLmV4cGlyZXNpbikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuID0gcmVzLmF1dGguYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFRpbWVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZmxhZyA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuTmV3UngodGhpcy50ZW1wUnhEZXRhaWxzLCB0aGlzLkhlaWdodCwgdGhpcy53aWR0aCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnID09IDIpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5FZGl0UngodGhpcy50ZW1wUnhEZXRhaWxzLCB0aGlzLkhlaWdodCwgdGhpcy53aWR0aCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnID09IDMpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5SZWZlcnJhbCh0aGlzLnRlbXBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFJ4KHRoaXMudGVtcHJ4aWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSA1KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFJlZmVycmFsKHRoaXMudGVtcHJlZmVycmFsaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXMuZmxhZykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzEuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGltZXIoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICB2YXIgZXhwaXJ5ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW5FeHBpcnknKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGV4cGlyeSkgJiYgd2luZG93Lm5hdmlnYXRvci5vbkxpbmUgJiYgIXRoaXMuYXV0aGVudGljYXRlQmxvY2sgJiYgKG5ldyBEYXRlKG5ldyBEYXRlKGV4cGlyeSkuc2V0TWludXRlcyhuZXcgRGF0ZShleHBpcnkpLmdldE1pbnV0ZXMoKSAtIDEpKSA8PSBuZXcgRGF0ZSgpIHx8IHRoaXMuYXBpc2VydmljZS51bkF1dGhvcml6ZWRGbGFnKSkge1xyXG4gICAgICAgICAgdGhpcy5hcGlzZXJ2aWNlLnVuQXV0aG9yaXplZEZsYWcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lcmZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBlcnIubWVzc2FnZSwgZXJyLnN0YWNrLCBcIkhvbGFSeFwiLCBcInNldFRpbWVyXCIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJzZXRUaW1lclwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5OZXdSeChSeERldGFpbHM6IGFueSwgSGVpZ2h0PzphbnksV2lkdGg/OmFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiTmV3IFJ4XCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMVwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgdGhpcy53aWR0aCA9ICF0aGlzLklzTnVsbE9yRW1wdHkoV2lkdGgpID8gV2lkdGggOiAnMTIwMHB4JztcclxuICAgICAgdGhpcy5IZWlnaHQgPSAhdGhpcy5Jc051bGxPckVtcHR5KEhlaWdodCkgPyBIZWlnaHQgOiAnNjUwcHgnO1xyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShSeERldGFpbHMpLCBjb25maWcuQ1JFQVRFX0NPTlNVTFRBVElPTik7XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmFwcG9pbnRtZW50aWQpKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcG9pbnRtZW50VmFsaWRhdGlvbihSeERldGFpbHMsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB2YXIgcmVzID0gdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4odGhpcy5tZXNzYWdlLCBcImVycm9yXCIsIFwiXCIsIDcwMDApO1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2UgPSBudWxsO1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIHJldHVybiBvZihyZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGlzZXJ2aWNlLlBvc3QoUnhEZXRhaWxzLCBjb25maWcuQ1JFQVRFX0NPTlNVTFRBVElPTikucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICB0aGlzLnRlbXBSeERldGFpbHMgPSBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNvbnN1bHRhdGlvbklkID0gUnhEZXRhaWxzLmNvbnN1bHRhdGlvbmlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jcmVhdGVQYXRpZW50UmVzcG9uc2UgPSByZXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZWRpdFByZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoYXJtYWN5RW1haWwgPSAhdGhpcy5Jc051bGxPckVtcHR5KHJlcy5waGFybWFjeUVtYWlsKSA/IHJlcy5waGFybWFjeUVtYWlsIDogXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc1NjcmlwdFRvUGhhcm1hY3kgPSAoIXRoaXMuSXNOdWxsT3JFbXB0eShyZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAmJiByZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAhPSAwID8gcmVzLmlzU2NyaXB0VG9QaGFybWFjeSA6IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuaXNNZWRpY2luZVJlc3RyaWN0ID0gIXRoaXMuY29tbW9uc2VydmljZS5Jc051bGxPckVtcHR5KHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSkgPyByZXMuaXNSZXN0cmljdGVkTWVkaWNpbmUgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkKSAmJiB0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscy5lUHJlc2NyaXB0aW9uQWxsb3dlZCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLkhJdmFsaWRhdGlvbihyZXMpO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXBvcF93aWQnLCBgJHshdGhpcy5Jc051bGxPckVtcHR5KFdpZHRoKSA/IFdpZHRoIDogJzEyMDBweCd9YCk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcG9wdXBoJywgYCR7IXRoaXMuSXNOdWxsT3JFbXB0eShIZWlnaHQpID8gSGVpZ2h0IDogJzY1MHB4J31gKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbW1vbnNlcnZpY2Uub3BlblJ4V2lkZ2V0KHRoaXMuY29udGVudCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLCBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuRWRpdFJ4KFJ4RGV0YWlsczogYW55LCBIZWlnaHQ/OiBhbnksIFdpZHRoPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJFZGl0IFJ4XCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMVwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgdGhpcy53aWR0aCA9ICF0aGlzLklzTnVsbE9yRW1wdHkoV2lkdGgpID8gV2lkdGggOiAnMTIwMHB4JztcclxuICAgICAgdGhpcy5IZWlnaHQgPSAhdGhpcy5Jc051bGxPckVtcHR5KEhlaWdodCkgPyBIZWlnaHQgOiAnNjUwcHgnO1xyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShSeERldGFpbHMpLCBjb25maWcuQ1JFQVRFX0NPTlNVTFRBVElPTik7XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmFwcG9pbnRtZW50aWQpKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcG9pbnRtZW50VmFsaWRhdGlvbihSeERldGFpbHMsIDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoYXJtYWN5RW1haWwgPSAhdGhpcy5Jc051bGxPckVtcHR5KHJlcy5waGFybWFjeUVtYWlsKSA/IHJlcy5waGFybWFjeUVtYWlsIDogXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc1NjcmlwdFRvUGhhcm1hY3kgPSAoIXRoaXMuSXNOdWxsT3JFbXB0eShyZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAmJiByZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAhPSAwID8gcmVzLmlzU2NyaXB0VG9QaGFybWFjeSA6IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoUnhEZXRhaWxzLnJ4aWQgIT0gbnVsbCAmJiBSeERldGFpbHMucnhpZCAhPSBcIlwiICYmIFJ4RGV0YWlscy5yeGlkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzLnJ4RGV0YWlscyAhPSBudWxsICYmIHJlcy5yeERldGFpbHMgIT0gXCJcIiAmJiByZXMucnhEZXRhaWxzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5lZGl0UHJlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucnhEZXRhaWxzID0gcmVzLnJ4RGV0YWlscztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucnhpZCA9IHJlcy5yeERldGFpbHMucnhJZDtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzQ2LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY3JlYXRlUGF0aWVudFJlc3BvbnNlID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMpICYmICF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQpICYmIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDApXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuSEl2YWxpZGF0aW9uKHJlcyk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcG9wX3dpZCcsIGAkeyF0aGlzLklzTnVsbE9yRW1wdHkoV2lkdGgpID8gV2lkdGggOiAnMTIwMHB4J31gKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wb3B1cGgnLCBgJHshdGhpcy5Jc051bGxPckVtcHR5KEhlaWdodCkgPyBIZWlnaHQgOiAnNjUwcHgnfWApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5vcGVuUnhXaWRnZXQodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlblJlZmVycmFsKFJ4RGV0YWlsczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJTZW5kIFJlZmVycmFsXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMlwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDMpO1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHRoaXMubWVzc2FnZSwgdGhpcy5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoYXJtYWN5RW1haWwgPSAhdGhpcy5Jc051bGxPckVtcHR5KHJlcy5waGFybWFjeUVtYWlsKSA/IHJlcy5waGFybWFjeUVtYWlsIDogXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc1NjcmlwdFRvUGhhcm1hY3kgPSAoIXRoaXMuSXNOdWxsT3JFbXB0eShyZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAmJiByZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAhPSAwID8gcmVzLmlzU2NyaXB0VG9QaGFybWFjeSA6IDA7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21tb25zZXJ2aWNlLlBhdGhvbG9neSh0aGlzLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpOyB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLCBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgdGhpcy5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCAzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvd25sb2FkUngoUnhJRDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJEb3dubG9hZCBSeFwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIgPSBSeElEO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJyeGlkXCI7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy50ZW1wcnhpZCA9IFJ4SUQ7XHJcbiAgICAgIHZhciBjbGllbnRJZCA9IHRoaXMuY29tbW9uc2VydmljZS5nZXRDcmVkZXRpYWwoKTtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcnhpZDogUnhJRCxcclxuICAgICAgICB0eXBlOiBcIjBcIixcclxuICAgICAgICBjbGllbnRJZDogY2xpZW50SWRcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkKSwgY29uZmlnLlBIWVNJQ0lBTi5SWF9QUklOVCArIFJ4SUQgKyBcIiZ0eXBlPTAmY2xpZW50SWQ9XCIgKyBjbGllbnRJZCk7XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeElEKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzQ2LmNvZGUpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5SWF9QUklOVCArIFJ4SUQgKyBcIiZ0eXBlPTAmY2xpZW50SWQ9XCIgKyBjbGllbnRJZCkucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkRvd25sb2FkKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlc3BvbnNlLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXNwb25zZS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzcG9uc2UuZXJyb3JfY29kZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLCBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCA0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFJlZmVycmFsKFJlZmVycmFsSUQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiRG93bmxvYWQgUmVmZXJyYWxcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gUmVmZXJyYWxJRDtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicmVmZXJyYWwgaWRcIjtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnRlbXByZWZlcnJhbGlkID0gUmVmZXJyYWxJRDtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcmVmZXJyYWxJZDogUmVmZXJyYWxJRFxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bG9nKEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLCBjb25maWcuUEhZU0lDSUFOLlJFRkVSUkFMX1BSSU5UICsgUmVmZXJyYWxJRCk7XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSZWZlcnJhbElEKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80My5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzQzLmNvZGUpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80My5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80My5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5SRUZFUlJBTF9QUklOVCArIFJlZmVycmFsSUQpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Eb3dubG9hZChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXNwb25zZS5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzcG9uc2UuZXJyb3JfY29kZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21tb25Eb3dubG9hZChyZXNwb25zZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICBhLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTpub25lOycpO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICBhLmRvd25sb2FkID0gcmVzcG9uc2UuZmlsZU5hbWU7XHJcbiAgICAgIGEuaHJlZiA9IFwiZGF0YTphcHBsaWNhdGlvbi9wZGY7Y2hhcnNldD11dGYtODtiYXNlNjQsXCIgKyByZXNwb25zZS5maWxlO1xyXG4gICAgICBhLmNsaWNrKCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnc3VjY2VzcycpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJjb21tb25Eb3dubG9hZFwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBhcHBvaW50bWVudFZhbGlkYXRpb24oUnhEZXRhaWxzOiBhbnksIGZsYWc6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMuZmFjaWxpdHlpZCkpIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl80Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzQuY29kZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucnhpZCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJ2YWxpZGF0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIHZhbGlkYXRpb24oUnhEZXRhaWxzOiBhbnksIGZsYWc6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSkge1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmNvbnN1bHRhdGlvbmlkKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZWlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXJpZCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMy5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudGlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOS5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucnhpZCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5yeGlkKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucnhpZCA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZSkpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmlkKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UubmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzUubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmVtYWlsKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl82LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UucGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl83Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LmFkZHJlc3NsaW5lMSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzcxLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcxLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN1YnVyYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzEwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5ocGlvKSkgeyBSeERldGFpbHMucHJhY3RpY2UuaHBpbyA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmZpcnN0bmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmxhc3RuYW1lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTYuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZG9iKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTgubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTguY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xOS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yMC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yMC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzID0ge307XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNzIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNzIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzLmFkZHJlc3NsaW5lMiA9IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yNC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzPy5zdGF0ZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKGZsYWcgPT0gMykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIucHJvdmlkZXJudW1iZXIpKVxyXG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI3Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI3LmNvZGUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuc2lnbmF0dXJlX2ltYWdlKSlcclxuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOC5jb2RlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5ocGlpKSkgeyBSeERldGFpbHMucHJhY3RpdGlvbmVyLmhwaWkgPSAwOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50KSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzMwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzMwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5maXJzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQubGFzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmRvYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5lbWFpbCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQudGltZXpvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNy5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcykpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LmFkZHJlc3NsaW5lMikpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDAubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDAuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnBvc3Rjb2RlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDEuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZSA9IHt9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ubnVtYmVyKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5udW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ucmVmZXJlbmNlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5yZWZlcmVuY2UgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8uZXhwaXJ5KSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5leHBpcnkgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5paGkpKSB7IFJ4RGV0YWlscy5wYXRpZW50LmloaSA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSEl2YWxpZGF0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciB3YXJuaW5nX21zZyA9ICcnO1xyXG4gICAgICBpZiAoIXZhbHVlLmlzX2hwaW9fdmFsaWQpIHtcclxuICAgICAgICB3YXJuaW5nX21zZyA9IHZhbHVlLmhwaW9fcmVzcG9uc2VfbXNnO1xyXG4gICAgICB9IGlmICghdmFsdWUuaXNfaHBpaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaHBpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaHBpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfSBpZiAoIXZhbHVlLmlzX2loaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaWhpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaWhpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh3YXJuaW5nX21zZykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHdhcm5pbmdfbXNnLCBcIndhcm5pbmdcIik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh2YWx1ZS5paGlfcmVzcG9uc2VfbXNnKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4odmFsdWUuaWhpX3Jlc3BvbnNlX21zZywgXCJzdWNjZXNzXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIkhJdmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSXNOdWxsT3JFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCBTdHJpbmcodmFsdWUpLnRyaW0oKSA9PT0gXCJcIikge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiSXNOdWxsT3JFbXB0eVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9udG9hc3QoZXJyb3JfbWVzc2FnZTogYW55LCBlcnJvcl9jb2RlPzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZXJyb3JSZXNwb25zZShlcnJvcl9jb2RlLCBlcnJvcl9tZXNzYWdlKTtcclxuICAgICAgaWYgKHRoaXMubWVzc2FnZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlICs9IFwiPGJyPlwiICsgZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvbnRvYXN0XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlcnJvclJlc3BvbnNlKGVycm9yX2NvZGU6IGFueSwgZXJyb3JfbWVzc2FnZTogYW55LCBzdWNjZXNzZmxhZzogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciByZXNwb25zZTogYW55ID0ge1xyXG4gICAgICAgIHN0YXR1czogc3VjY2Vzc2ZsYWcgPT0gdHJ1ZSA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIHJlc3BvbnNlOiB7XHJcbiAgICAgICAgICByZXNwb25zZV9jb2RlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfY29kZSA6IFwiXCIsXHJcbiAgICAgICAgICByZXNwb25zZV9tZXNzYWdlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfbWVzc2FnZSA6IFwiXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICBlcnJvcl9jb2RlOiBzdWNjZXNzZmxhZyA9PSBmYWxzZSA/IGVycm9yX2NvZGUgOiBcIlwiLFxyXG4gICAgICAgICAgZXJyb3JfbWVzc2FnZTogc3VjY2Vzc2ZsYWcgPT0gZmFsc2UgPyBlcnJvcl9tZXNzYWdlIDogXCJcIlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcbiAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImVycm9yUmVzcG9uc2VcIik7XHJcbiAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXVkaXRsb2codmFsdWU6IGFueSwgYXBpOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgIGlkZW50aWZpZXJWYWx1ZTogdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIsXHJcbiAgICAgICAgaWRlbnRpZmllclR5cGU6IHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSxcclxuICAgICAgICByZXF1ZXN0UGF5bG9hZDogdmFsdWUsXHJcbiAgICAgICAgcmVzcG9uc2VDb2RlOiBcIlwiLFxyXG4gICAgICAgIHJlc3BvbnNlUGF5bG9hZDogXCJcIixcclxuICAgICAgICBjcmVhdGVkQnk6IFwiVUktUnhcIixcclxuICAgICAgICBhcGk6IGFwaSxcclxuICAgICAgICByZXF1ZXN0VXJsOiB3aW5kb3cub3JpZ2luXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlzZXJ2aWNlLlBvc3QoZGF0YSwgY29uZmlnLkFVRElUX0xPRykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVyci5tZXNzYWdlLCBlcnIuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiYXVkaXRsb2dcIik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImF1ZGl0bG9nXCIpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8IS0tIDx1bCBjbGFzcz1cIm5vdGlmaWNhdGlvbnNcIiA+PC91bD5cclxuPGRpdiBbY2xhc3NdPVwieydsb2FkZXJfdmlzaWJsZSc6Y29tbW9uTG9hZGVyU2VydmljZXMuZnVsbFNjcmVlbkxvYWRlciwnbG9hZGVyX2hpZGRlbic6IWNvbW1vbkxvYWRlclNlcnZpY2VzLmZ1bGxTY3JlZW5Mb2FkZXJ9XCJcclxuICAgIGNsYXNzPVwic3BsYXNoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGF1c2VcIj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPiA8aW1nIGNsYXNzPVwic3Bpbm5lci1pbWdcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaG9sYS1oZWFsdGgtc3Bpbm5lci5wbmdcIiBhbHQ9XCJob2xhX2hlYWx0aFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+TG9hZGluZy4uLjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcnh3aWRnZXRzPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==