kwikid-forms 0.0.9 → 0.1.0

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.
@@ -156,6 +156,9 @@ export class KwikIDFormsRendererComponent {
156
156
  }
157
157
  else {
158
158
  this.toggleErrorNotification(true);
159
+ setTimeout(() => {
160
+ this.toggleErrorNotification(false);
161
+ }, 3000);
159
162
  }
160
163
  }))();
161
164
  }
@@ -251,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
251
254
  }], onClickApiCall: [{
252
255
  type: Output
253
256
  }] } });
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDaEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7OztBQW1CM0QsTUFBTSxPQUFPLDRCQUE0QjtJQW1EdkMsWUFDUyxlQUFzQyxFQUNyQyxXQUF1QjtRQUR4QixvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUF4QmpDLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFHcEIsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFHMUIsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUczRCxnQkFBVyxHQUFzQixJQUFJLFlB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USxDQUFDO2dCQXdCekMsVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRUFjdGlvbktleSB9IGZyb20gXCIuL2Zvcm0tdmlldy9kZWZpbml0aW9ucy9hY3Rpb25zL2Zvcm0tdmlldy5hY3Rpb25zLmVudW0uZGVmaW5pdGlvbnNcIjtcclxuaW1wb3J0IHsgU291cmNlcyB9IGZyb20gXCIuL2hlbHBlcnMvcmVuZGVyZXIuc291cmNlcy5oZWxwZXJcIjtcclxuaW1wb3J0IHsgVmFsaWRhdGlvbnMgfSBmcm9tIFwiLi9oZWxwZXJzL3JlbmRlcmVyLnZhbGlkYXRpb25zLmhlbHBlclwiO1xyXG5pbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi9yZW5kZXJlci5jb25maWctY29udmVydGVyLmhlbHBlclwiO1xyXG5pbXBvcnQgeyBpc1NpbmdsZUZvcm0gfSBmcm9tIFwiLi9yZW5kZXJlci5oZWxwZXJcIjtcclxuaW1wb3J0IHsgS3dpa0lEUmVuZGVyZXJTZXJ2aWNlIH0gZnJvbSBcIi4vcmVuZGVyZXIuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwia3dpa2lkLWZvcm1zLXJlbmRlcmVyXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9yZW5kZXJlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9yZW5kZXJlci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKFwicGFuZWxJbk91dFwiLCBbXHJcbiAgICAgIHRyYW5zaXRpb24oXCI6ZW50ZXJcIiwgW1xyXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoMTAwJSlcIiB9KSxcclxuICAgICAgICBhbmltYXRlKDE1MClcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oXCI6bGVhdmVcIiwgW1xyXG4gICAgICAgIGFuaW1hdGUoMTAwLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDEwMCUpXCIgfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdKVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbS3dpa0lEUmVuZGVyZXJTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybXNSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAvLyBUaGUgZmluYWwgdmFsdWUgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHNlcnZpY2UsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gYWxsIGNvbXBvbmVudHNcclxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgd2luZG93UmVzaXplV2F0Y2hlcigpIHtcclxuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcclxuICAgICAgaWYgKHRoaXMuc2hvd0Zvcm0pIHtcclxuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5pc01vYmlsZVZpZXcgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc2hvd0Zvcm0pIHtcclxuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmlzTW9iaWxlVmlldyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICB1c2VyQ29uZmlnOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZm9ybXNEYXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgQElucHV0KClcclxuICBhcGlDYWxsUmVzcG9uc2U6IGFueSA9IHt9O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkNsaWNrU3VibWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBnZXRGb3JtRGF0YTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb25DbGlja0FwaUNhbGw6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gZGlzcGxheSBmb3JtcyBhbmQgbGlzdCBjb25kaXRpb25hbGx5XHJcbiAgc2hvd0Zvcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93Rm9ybUZpZWxkczogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2hvd0Zvcm1TZWN0aW9uczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyU2VydmljZTogS3dpa0lEUmVuZGVyZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBob3N0RWxlbWVudDogRWxlbWVudFJlZlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLnNldEZvcm1zTGlzdCh0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHMpO1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1zKCk7XHJcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgdmVyaWZ5Q2hhbmdlID0gKHByb3A6IHN0cmluZykgPT4ge1xyXG4gICAgICByZXR1cm4gY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJiAhY2hhbmdlc1twcm9wXS5maXJzdENoYW5nZTtcclxuICAgIH07XHJcbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwidXNlckNvbmZpZ1wiKSkge1xyXG4gICAgICB0aGlzLnVzZXJDb25maWcgPSBjaGFuZ2VzLnVzZXJDb25maWcuY3VycmVudFZhbHVlO1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImZvcm1zRGF0YVwiKSkge1xyXG4gICAgICB0aGlzLmZvcm1zRGF0YSA9IGNoYW5nZXMuZm9ybXNEYXRhLmN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1zKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiYXBpQ2FsbFJlc3BvbnNlXCIpKSB7XHJcbiAgICAgIHRoaXMuYXBpQ2FsbFJlc3BvbnNlID0gY2hhbmdlcy5hcGlDYWxsUmVzcG9uc2UuY3VycmVudFZhbHVlO1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pdGlhbGl6ZUZvcm1zKCkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLnNldEFsbEZvcm1zRGF0YSh0aGlzLmZvcm1zRGF0YSk7XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlclNlcnZpY2UudXBkYXRlRm9ybXNMaXN0KCk7XHJcblxyXG4gICAgdGhpcy5oYW5kbGVSZXNpemUodGhpcy5yZW5kZXJlclNlcnZpY2UuZm9ybXNMaXN0KTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmZvcm1zTGlzdC5sZW5ndGggIT09XHJcbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmZvcm1zTGlzdENvbXBsZXRlZC5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZU9uQ2xpY2tTZXRBY3RpdmVGb3JtKFxyXG4gICAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmFjdGl2ZUZvcm1Db25maWcua2V5XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dGb3JtID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUoZm9ybXNMaXN0OiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA8IDYwMCkge1xyXG4gICAgICBpZiAoIWlzU2luZ2xlRm9ybShmb3Jtc0xpc3QpKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5pc01vYmlsZVZpZXcgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2UuaXNNb2JpbGVWaWV3ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBmb3Jtcy1saXN0IGxpc3RlbmVyXHJcbiAgYXN5bmMgaGFuZGxlT25DbGlja1NldEFjdGl2ZUZvcm0oc2VsZWN0ZWRGb3JtOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmVGb3JtQ29uZmlnID0gdGhpcy5yZW5kZXJlclNlcnZpY2UuZm9ybXNMaXN0LmZpbmQoKGZvcm0pID0+IHtcclxuICAgICAgaWYgKGZvcm0ua2V5ID09PSBzZWxlY3RlZEZvcm0pIHtcclxuICAgICAgICByZXR1cm4gZm9ybTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGZvcm1Db25maWcgPSBhd2FpdCB0aGlzLnJlbmRlcmVyU2VydmljZS5mZXRjaEZvcm1Db25maWcoXHJcbiAgICAgIGFjdGl2ZUZvcm1Db25maWcuZm9ybUNvbnRlbnQudXJsXHJcbiAgICApO1xyXG5cclxuICAgIGZvcm1Db25maWcgPSBuZXcgQ29udmVydGVyKCkuY29udmVydEZvcm1Db25maWcoZm9ybUNvbmZpZyk7XHJcblxyXG4gICAgY29uc3QgYWN0aXZlRm9ybURhdGEgPVxyXG4gICAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5hbGxGb3Jtc0RhdGFbZm9ybUNvbmZpZy5rZXldID8/IHt9O1xyXG4gICAgdGhpcy5yZW5kZXJlclNlcnZpY2Uuc2V0QWN0aXZlRm9ybURhdGEoYWN0aXZlRm9ybURhdGEpO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLnNldEFjdGl2ZUZvcm1Db25maWcoe1xyXG4gICAgICAuLi5hY3RpdmVGb3JtQ29uZmlnLFxyXG4gICAgICAuLi5mb3JtQ29uZmlnXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDwgNjAwKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoID49IDYwMCkge1xyXG4gICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dGb3JtID0gdHJ1ZTtcclxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBmb3Jtcy1saXN0IGxpc3RlbmVyXHJcbiAgaGFuZGxlT25DbGlja1N1Ym1pdEZvcm1zKGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudXNlckNvbmZpZy51c2VyRm9ybUZpZWxkc0NvbmZpZy52YWxpZGF0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25zID0gbmV3IFZhbGlkYXRpb25zKFxyXG4gICAgICAgIHRoaXMudXNlckNvbmZpZyxcclxuICAgICAgICB0aGlzLnRha2VBY3Rpb24uYmluZCh0aGlzKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgKGFzeW5jICgpID0+IHtcclxuICAgICAgICBhd2FpdCB2YWxpZGF0aW9ucy52YWxpZGF0ZUZpZWxkKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHNDb25maWcuc3RhdHVzID09PSBcImNvbXBsZXRlZFwiKSB7XHJcbiAgICAgICAgICB0aGlzLm9uQ2xpY2tTdWJtaXQuZW1pdChlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2dnbGVFcnJvck5vdGlmaWNhdGlvbih0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBmb3JtLXZpZXcgbGlzdGVuZXJcclxuICBoYW5kbGVPbkNsaWNrQXBpQ2FsbChlOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMub25DbGlja0FwaUNhbGwuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIC8vIGZvcm0tdmlldyBsaXN0ZW5lclxyXG4gIGhhbmRsZUdldEFjdGl2ZUZvcm1EYXRhKGU6IGFueSkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5nZXRGb3JtRGF0YS5lbWl0KHtcclxuICAgICAgW3RoaXMucmVuZGVyZXJTZXJ2aWNlLmFjdGl2ZUZvcm1Db25maWcua2V5XTogZVtcImRhdGFcIl1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9ybS12aWV3IGxpc3RlbmVyXHJcbiAgaGFuZGxlT25DbGlja1NhdmVGb3JtKGU6IGFueSkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLnNldEFjdGl2ZUZvcm1EYXRhKHt9KTtcclxuXHJcbiAgICB0aGlzLmdldEZvcm1EYXRhLmVtaXQoe1xyXG4gICAgICBbdGhpcy5yZW5kZXJlclNlcnZpY2UuYWN0aXZlRm9ybUNvbmZpZy5rZXldOiBlW1wiZGF0YVwiXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3JtLXZpZXcgbGlzdGVuZXJcclxuICBoYW5kbGVPbkNsaWNrVmlld0Zvcm1zKGU6IGFueSkge1xyXG4gICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNob3dFcnJvck5vdGlmaWNhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRvZ2dsZUVycm9yTm90aWZpY2F0aW9uKHNob3cpIHtcclxuICAgIHRoaXMuc2hvd0Vycm9yTm90aWZpY2F0aW9uID0gc2hvdztcclxuICB9XHJcblxyXG4gIGFzeW5jIHRha2VBY3Rpb24oYWN0aW9uOiBhbnksIHVzZXJDb25maWc6IGFueSkge1xyXG4gICAgc3dpdGNoIChhY3Rpb24ua2V5KSB7XHJcbiAgICAgIGNhc2UgRUFjdGlvbktleS5TRVRfVkFMVUU6XHJcbiAgICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2VzKHVzZXJDb25maWcpO1xyXG5cclxuICAgICAgICBjb25zdCBzb3VyY2VWYWx1ZSA9IGF3YWl0IHNvdXJjZXMuZ2V0VmFsdWVGcm9tU291cmNlKFxyXG4gICAgICAgICAgYWN0aW9uLnByb3BzLnZhbHVlLnNvdXJjZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgc291cmNlcy5zZXRWYWx1ZVRvU291cmNlKGFjdGlvbi5wcm9wcy52YWx1ZS5kZXN0aW5hdGlvbiwgc291cmNlVmFsdWUpO1xyXG5cclxuICAgICAgICB0aGlzLnVzZXJDb25maWcgPSBzb3VyY2VzLnVzZXJDb25maWc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgbmdDbGFzcz1cImt3aWtpZC1yZW5kZXJlclwiPlxyXG4gIDxkaXZcclxuICAgIG5nQ2xhc3M9XCJrd2lraWQtbGF5b3V0LWNvbnRhaW5lclwiXHJcbiAgICAqbmdJZj1cIiFsb2FkaW5nXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIG5nQ2xhc3M9XCJrd2lraWQtc2VjdGlvbnMtY29udGFpbmVyXCJcclxuICAgICAgKm5nSWY9XCJzaG93Rm9ybVNlY3Rpb25zXCJcclxuICAgICAgY2xhc3M9XCJhY3RpdmVcIlxyXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dGb3JtU2VjdGlvbnNcIlxyXG4gICAgICBbY2xhc3MubW9iaWxlXT1cInJlbmRlcmVyU2VydmljZS5pc01vYmlsZVZpZXdcIlxyXG4gICAgPlxyXG4gICAgICA8a3dpa2lkLWZvcm1zLWxpc3RcclxuICAgICAgICBbc2hvd0Zvcm1GaWVsZHNdPVwidGhpcy5zaG93Rm9ybUZpZWxkc1wiXHJcbiAgICAgICAgW3VzZXJDb25maWddPVwidGhpcy51c2VyQ29uZmlnXCJcclxuICAgICAgICBbZm9ybXNMaXN0XT1cInRoaXMucmVuZGVyZXJTZXJ2aWNlLmZvcm1zTGlzdFwiXHJcbiAgICAgICAgW2Zvcm1zTGlzdENvbXBsZXRlZF09XCJ0aGlzLnJlbmRlcmVyU2VydmljZS5mb3Jtc0xpc3RDb21wbGV0ZWRcIlxyXG4gICAgICAgIFtpc01vYmlsZVZpZXddPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuaXNNb2JpbGVWaWV3XCJcclxuICAgICAgICAob25DbGlja1NldEFjdGl2ZUZvcm0pPVwidGhpcy5oYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybSgkZXZlbnQpXCJcclxuICAgICAgICAob25DbGlja1N1Ym1pdEZvcm1zKT1cInRoaXMuaGFuZGxlT25DbGlja1N1Ym1pdEZvcm1zKCRldmVudClcIlxyXG4gICAgICA+PC9rd2lraWQtZm9ybXMtbGlzdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBuZ0NsYXNzPVwia3dpa2lkLWZvcm1zLWNvbnRhaW5lclwiXHJcbiAgICAgICpuZ0lmPVwidGhpcy5zaG93Rm9ybSAmJiB0aGlzLnNob3dGb3JtRmllbGRzXCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzaG93Rm9ybUZpZWxkc1wiXHJcbiAgICAgIFtjbGFzcy5tb2JpbGVdPVwicmVuZGVyZXJTZXJ2aWNlLmlzTW9iaWxlVmlld1wiXHJcbiAgICAgIFtAcGFuZWxJbk91dF1cclxuICAgID5cclxuICAgICAgPGt3aWtpZC1mb3JtLXZpZXdcclxuICAgICAgICBbZm9ybUNvbmZpZ109XCJ0aGlzLnJlbmRlcmVyU2VydmljZS5hY3RpdmVGb3JtQ29uZmlnXCJcclxuICAgICAgICBbZm9ybURhdGFdPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuYWN0aXZlRm9ybURhdGFcIlxyXG4gICAgICAgIFthcGlDYWxsUmVzcG9uc2VdPVwidGhpcy5hcGlDYWxsUmVzcG9uc2VcIlxyXG4gICAgICAgIFtmb3Jtc0xpc3RdPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuZm9ybXNMaXN0XCJcclxuICAgICAgICBbYWxsRm9ybXNEYXRhXT1cInRoaXMucmVuZGVyZXJTZXJ2aWNlLmFsbEZvcm1zRGF0YVwiXHJcbiAgICAgICAgW2lzTW9iaWxlVmlld109XCJ0aGlzLnJlbmRlcmVyU2VydmljZS5pc01vYmlsZVZpZXdcIlxyXG4gICAgICAgIChvbkNsaWNrQXBpQ2FsbCk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tBcGlDYWxsKCRldmVudClcIlxyXG4gICAgICAgIChvbkNsaWNrVmlld0Zvcm1zKT1cInRoaXMuaGFuZGxlT25DbGlja1ZpZXdGb3JtcygkZXZlbnQpXCJcclxuICAgICAgICAob25DbGlja1NhdmVGb3JtKT1cInRoaXMuaGFuZGxlT25DbGlja1NhdmVGb3JtKCRldmVudClcIlxyXG4gICAgICAgIChnZXRBY3RpdmVGb3JtRGF0YSk9XCJ0aGlzLmhhbmRsZUdldEFjdGl2ZUZvcm1EYXRhKCRldmVudClcIlxyXG4gICAgICA+PC9rd2lraWQtZm9ybS12aWV3PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2XHJcbiAgbmdDbGFzcz1cImt3aWtpZC1mb3Jtcy1yZW5kZXJlci1sb2FkZXJcIlxyXG4gICpuZ0lmPVwibG9hZGVyXCJcclxuPlxyXG4gIDxzcGFuIGNsYXNzPVwibG9hZGVyXCI+PC9zcGFuPlxyXG48L2Rpdj5cclxuPHR1aS1wdXNoXHJcbiAgaWQ9XCJlcnJvci1ub3RpZmljYXRpb25cIlxyXG4gICp0dWlQdXNoPVwic2hvd0Vycm9yTm90aWZpY2F0aW9uXCJcclxuICBoZWFkaW5nPVwiUGxlYXNlIGNvbXBsZXRlIHRoZSByZXF1aXJlZCBGb3JtcyFcIlxyXG4gIHR5cGU9XCJFcnJvclwiXHJcbiAgKGNsb3NlKT1cInRvZ2dsZUVycm9yTm90aWZpY2F0aW9uKGZhbHNlKVwiXHJcbj5cclxuICA8dHVpLXN2Z1xyXG4gICAgc3JjPVwidHVpSWNvbkNhbmNlbFwiXHJcbiAgICBzdHlsZT1cImNvbG9yOiAjZmZmICFpbXBvcnRhbnRcIlxyXG4gID5cclxuICA8L3R1aS1zdmc+XHJcbjwvdHVpLXB1c2g+XHJcbiJdfQ==
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDaEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7OztBQW1CM0QsTUFBTSxPQUFPLDRCQUE0QjtJQW1EdkMsWUFDUyxlQUFzQyxFQUNyQyxXQUF1QjtRQUR4QixvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUF4QmpDLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFHcEIsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFHMUIsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUczRCxnQkFBVyxHQUFzQixJQUFJLFlB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LENBQUM7cUJBQ0g7b0JBQ0QsU0FBUyxFQUFFLENBQUMscUJBQXFCLENBQUM7aUJBQ25DO3FJQUlDLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBd0J6QyxVQUFVO3NCQURULEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixhQUFhO3NCQURaLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBFQWN0aW9uS2V5IH0gZnJvbSBcIi4vZm9ybS12aWV3L2RlZmluaXRpb25zL2FjdGlvbnMvZm9ybS12aWV3LmFjdGlvbnMuZW51bS5kZWZpbml0aW9uc1wiO1xyXG5pbXBvcnQgeyBTb3VyY2VzIH0gZnJvbSBcIi4vaGVscGVycy9yZW5kZXJlci5zb3VyY2VzLmhlbHBlclwiO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9ucyB9IGZyb20gXCIuL2hlbHBlcnMvcmVuZGVyZXIudmFsaWRhdGlvbnMuaGVscGVyXCI7XHJcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gXCIuL3JlbmRlcmVyLmNvbmZpZy1jb252ZXJ0ZXIuaGVscGVyXCI7XHJcbmltcG9ydCB7IGlzU2luZ2xlRm9ybSB9IGZyb20gXCIuL3JlbmRlcmVyLmhlbHBlclwiO1xyXG5pbXBvcnQgeyBLd2lrSURSZW5kZXJlclNlcnZpY2UgfSBmcm9tIFwiLi9yZW5kZXJlci5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJrd2lraWQtZm9ybXMtcmVuZGVyZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3JlbmRlcmVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3JlbmRlcmVyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoXCJwYW5lbEluT3V0XCIsIFtcclxuICAgICAgdHJhbnNpdGlvbihcIjplbnRlclwiLCBbXHJcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSgxMDAlKVwiIH0pLFxyXG4gICAgICAgIGFuaW1hdGUoMTUwKVxyXG4gICAgICBdKSxcclxuICAgICAgdHJhbnNpdGlvbihcIjpsZWF2ZVwiLCBbXHJcbiAgICAgICAgYW5pbWF0ZSgxMDAsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoMTAwJSlcIiB9KSlcclxuICAgICAgXSlcclxuICAgIF0pXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtLd2lrSURSZW5kZXJlclNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLd2lrSURGb3Jtc1JlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIC8vIFRoZSBmaW5hbCB2YWx1ZSBzaG91bGQgYmUgcHJvdmlkZWQgdG8gc2VydmljZSwgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBhbGwgY29tcG9uZW50c1xyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIsIFtcIiRldmVudFwiXSlcclxuICB3aW5kb3dSZXNpemVXYXRjaGVyKCkge1xyXG4gICAgaWYgKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA8IDYwMCkge1xyXG4gICAgICBpZiAodGhpcy5zaG93Rm9ybSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmlzTW9iaWxlVmlldyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5zaG93Rm9ybSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2UuaXNNb2JpbGVWaWV3ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHVzZXJDb25maWc6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBmb3Jtc0RhdGE6IGFueSA9IHt9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFwaUNhbGxSZXNwb25zZTogYW55ID0ge307XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uQ2xpY2tTdWJtaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGdldEZvcm1EYXRhOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkNsaWNrQXBpQ2FsbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBkaXNwbGF5IGZvcm1zIGFuZCBsaXN0IGNvbmRpdGlvbmFsbHlcclxuICBzaG93Rm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dGb3JtRmllbGRzOiBib29sZWFuID0gdHJ1ZTtcclxuICBzaG93Rm9ybVNlY3Rpb25zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXJTZXJ2aWNlOiBLd2lrSURSZW5kZXJlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlclNlcnZpY2Uuc2V0Rm9ybXNMaXN0KHRoaXMudXNlckNvbmZpZy51c2VyRm9ybUZpZWxkcyk7XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybXMoKTtcclxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB2ZXJpZnlDaGFuZ2UgPSAocHJvcDogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHJldHVybiBjaGFuZ2VzLmhhc093blByb3BlcnR5KHByb3ApICYmICFjaGFuZ2VzW3Byb3BdLmZpcnN0Q2hhbmdlO1xyXG4gICAgfTtcclxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJ1c2VyQ29uZmlnXCIpKSB7XHJcbiAgICAgIHRoaXMudXNlckNvbmZpZyA9IGNoYW5nZXMudXNlckNvbmZpZy5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiZm9ybXNEYXRhXCIpKSB7XHJcbiAgICAgIHRoaXMuZm9ybXNEYXRhID0gY2hhbmdlcy5mb3Jtc0RhdGEuY3VycmVudFZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybXMoKTtcclxuICAgIH1cclxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJhcGlDYWxsUmVzcG9uc2VcIikpIHtcclxuICAgICAgdGhpcy5hcGlDYWxsUmVzcG9uc2UgPSBjaGFuZ2VzLmFwaUNhbGxSZXNwb25zZS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0aWFsaXplRm9ybXMoKSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlclNlcnZpY2Uuc2V0QWxsRm9ybXNEYXRhKHRoaXMuZm9ybXNEYXRhKTtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyU2VydmljZS51cGRhdGVGb3Jtc0xpc3QoKTtcclxuXHJcbiAgICB0aGlzLmhhbmRsZVJlc2l6ZSh0aGlzLnJlbmRlcmVyU2VydmljZS5mb3Jtc0xpc3QpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2UuZm9ybXNMaXN0Lmxlbmd0aCAhPT1cclxuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2UuZm9ybXNMaXN0Q29tcGxldGVkLmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlT25DbGlja1NldEFjdGl2ZUZvcm0oXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2UuYWN0aXZlRm9ybUNvbmZpZy5rZXlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVJlc2l6ZShmb3Jtc0xpc3Q6IGFueVtdKSB7XHJcbiAgICBpZiAodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDwgNjAwKSB7XHJcbiAgICAgIGlmICghaXNTaW5nbGVGb3JtKGZvcm1zTGlzdCkpIHtcclxuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dGb3JtID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmlzTW9iaWxlVmlldyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5pc01vYmlsZVZpZXcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGZvcm1zLWxpc3QgbGlzdGVuZXJcclxuICBhc3luYyBoYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybShzZWxlY3RlZEZvcm06IHN0cmluZykge1xyXG4gICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGFjdGl2ZUZvcm1Db25maWcgPSB0aGlzLnJlbmRlcmVyU2VydmljZS5mb3Jtc0xpc3QuZmluZCgoZm9ybSkgPT4ge1xyXG4gICAgICBpZiAoZm9ybS5rZXkgPT09IHNlbGVjdGVkRm9ybSkge1xyXG4gICAgICAgIHJldHVybiBmb3JtO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgZm9ybUNvbmZpZyA9IGF3YWl0IHRoaXMucmVuZGVyZXJTZXJ2aWNlLmZldGNoRm9ybUNvbmZpZyhcclxuICAgICAgYWN0aXZlRm9ybUNvbmZpZy5mb3JtQ29udGVudC51cmxcclxuICAgICk7XHJcblxyXG4gICAgZm9ybUNvbmZpZyA9IG5ldyBDb252ZXJ0ZXIoKS5jb252ZXJ0Rm9ybUNvbmZpZyhmb3JtQ29uZmlnKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmVGb3JtRGF0YSA9XHJcbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmFsbEZvcm1zRGF0YVtmb3JtQ29uZmlnLmtleV0gPz8ge307XHJcbiAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5zZXRBY3RpdmVGb3JtRGF0YShhY3RpdmVGb3JtRGF0YSk7XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlclNlcnZpY2Uuc2V0QWN0aXZlRm9ybUNvbmZpZyh7XHJcbiAgICAgIC4uLmFjdGl2ZUZvcm1Db25maWcsXHJcbiAgICAgIC4uLmZvcm1Db25maWdcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcclxuICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPj0gNjAwKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd0Zvcm0gPSB0cnVlO1xyXG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vIGZvcm1zLWxpc3QgbGlzdGVuZXJcclxuICBoYW5kbGVPbkNsaWNrU3VibWl0Rm9ybXMoZTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuXHJcbiAgICBpZiAodGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzQ29uZmlnLnZhbGlkYXRpb24pIHtcclxuICAgICAgY29uc3QgdmFsaWRhdGlvbnMgPSBuZXcgVmFsaWRhdGlvbnMoXHJcbiAgICAgICAgdGhpcy51c2VyQ29uZmlnLFxyXG4gICAgICAgIHRoaXMudGFrZUFjdGlvbi5iaW5kKHRoaXMpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGF3YWl0IHZhbGlkYXRpb25zLnZhbGlkYXRlRmllbGQoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudXNlckNvbmZpZy51c2VyRm9ybUZpZWxkc0NvbmZpZy5zdGF0dXMgPT09IFwiY29tcGxldGVkXCIpIHtcclxuICAgICAgICAgIHRoaXMub25DbGlja1N1Ym1pdC5lbWl0KGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvZ2dsZUVycm9yTm90aWZpY2F0aW9uKHRydWUpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlRXJyb3JOb3RpZmljYXRpb24oZmFsc2UpO1xyXG4gICAgICAgICAgfSwgMzAwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gZm9ybS12aWV3IGxpc3RlbmVyXHJcbiAgaGFuZGxlT25DbGlja0FwaUNhbGwoZTogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLm9uQ2xpY2tBcGlDYWxsLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3JtLXZpZXcgbGlzdGVuZXJcclxuICBoYW5kbGVHZXRBY3RpdmVGb3JtRGF0YShlOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2V0Rm9ybURhdGEuZW1pdCh7XHJcbiAgICAgIFt0aGlzLnJlbmRlcmVyU2VydmljZS5hY3RpdmVGb3JtQ29uZmlnLmtleV06IGVbXCJkYXRhXCJdXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIGZvcm0tdmlldyBsaXN0ZW5lclxyXG4gIGhhbmRsZU9uQ2xpY2tTYXZlRm9ybShlOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5zZXRBY3RpdmVGb3JtRGF0YSh7fSk7XHJcblxyXG4gICAgdGhpcy5nZXRGb3JtRGF0YS5lbWl0KHtcclxuICAgICAgW3RoaXMucmVuZGVyZXJTZXJ2aWNlLmFjdGl2ZUZvcm1Db25maWcua2V5XTogZVtcImRhdGFcIl1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9ybS12aWV3IGxpc3RlbmVyXHJcbiAgaGFuZGxlT25DbGlja1ZpZXdGb3JtcyhlOiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dGb3JtID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzaG93RXJyb3JOb3RpZmljYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0b2dnbGVFcnJvck5vdGlmaWNhdGlvbihzaG93KSB7XHJcbiAgICB0aGlzLnNob3dFcnJvck5vdGlmaWNhdGlvbiA9IHNob3c7XHJcbiAgfVxyXG5cclxuICBhc3luYyB0YWtlQWN0aW9uKGFjdGlvbjogYW55LCB1c2VyQ29uZmlnOiBhbnkpIHtcclxuICAgIHN3aXRjaCAoYWN0aW9uLmtleSkge1xyXG4gICAgICBjYXNlIEVBY3Rpb25LZXkuU0VUX1ZBTFVFOlxyXG4gICAgICAgIGNvbnN0IHNvdXJjZXMgPSBuZXcgU291cmNlcyh1c2VyQ29uZmlnKTtcclxuXHJcbiAgICAgICAgY29uc3Qgc291cmNlVmFsdWUgPSBhd2FpdCBzb3VyY2VzLmdldFZhbHVlRnJvbVNvdXJjZShcclxuICAgICAgICAgIGFjdGlvbi5wcm9wcy52YWx1ZS5zb3VyY2VcclxuICAgICAgICApO1xyXG4gICAgICAgIHNvdXJjZXMuc2V0VmFsdWVUb1NvdXJjZShhY3Rpb24ucHJvcHMudmFsdWUuZGVzdGluYXRpb24sIHNvdXJjZVZhbHVlKTtcclxuXHJcbiAgICAgICAgdGhpcy51c2VyQ29uZmlnID0gc291cmNlcy51c2VyQ29uZmlnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IG5nQ2xhc3M9XCJrd2lraWQtcmVuZGVyZXJcIj5cclxuICA8ZGl2XHJcbiAgICBuZ0NsYXNzPVwia3dpa2lkLWxheW91dC1jb250YWluZXJcIlxyXG4gICAgKm5nSWY9XCIhbG9hZGluZ1wiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBuZ0NsYXNzPVwia3dpa2lkLXNlY3Rpb25zLWNvbnRhaW5lclwiXHJcbiAgICAgICpuZ0lmPVwic2hvd0Zvcm1TZWN0aW9uc1wiXHJcbiAgICAgIGNsYXNzPVwiYWN0aXZlXCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzaG93Rm9ybVNlY3Rpb25zXCJcclxuICAgICAgW2NsYXNzLm1vYmlsZV09XCJyZW5kZXJlclNlcnZpY2UuaXNNb2JpbGVWaWV3XCJcclxuICAgID5cclxuICAgICAgPGt3aWtpZC1mb3Jtcy1saXN0XHJcbiAgICAgICAgW3Nob3dGb3JtRmllbGRzXT1cInRoaXMuc2hvd0Zvcm1GaWVsZHNcIlxyXG4gICAgICAgIFt1c2VyQ29uZmlnXT1cInRoaXMudXNlckNvbmZpZ1wiXHJcbiAgICAgICAgW2Zvcm1zTGlzdF09XCJ0aGlzLnJlbmRlcmVyU2VydmljZS5mb3Jtc0xpc3RcIlxyXG4gICAgICAgIFtmb3Jtc0xpc3RDb21wbGV0ZWRdPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuZm9ybXNMaXN0Q29tcGxldGVkXCJcclxuICAgICAgICBbaXNNb2JpbGVWaWV3XT1cInRoaXMucmVuZGVyZXJTZXJ2aWNlLmlzTW9iaWxlVmlld1wiXHJcbiAgICAgICAgKG9uQ2xpY2tTZXRBY3RpdmVGb3JtKT1cInRoaXMuaGFuZGxlT25DbGlja1NldEFjdGl2ZUZvcm0oJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQ2xpY2tTdWJtaXRGb3Jtcyk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tTdWJtaXRGb3JtcygkZXZlbnQpXCJcclxuICAgICAgPjwva3dpa2lkLWZvcm1zLWxpc3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgbmdDbGFzcz1cImt3aWtpZC1mb3Jtcy1jb250YWluZXJcIlxyXG4gICAgICAqbmdJZj1cInRoaXMuc2hvd0Zvcm0gJiYgdGhpcy5zaG93Rm9ybUZpZWxkc1wiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2hvd0Zvcm1GaWVsZHNcIlxyXG4gICAgICBbY2xhc3MubW9iaWxlXT1cInJlbmRlcmVyU2VydmljZS5pc01vYmlsZVZpZXdcIlxyXG4gICAgICBbQHBhbmVsSW5PdXRdXHJcbiAgICA+XHJcbiAgICAgIDxrd2lraWQtZm9ybS12aWV3XHJcbiAgICAgICAgW2Zvcm1Db25maWddPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuYWN0aXZlRm9ybUNvbmZpZ1wiXHJcbiAgICAgICAgW2Zvcm1EYXRhXT1cInRoaXMucmVuZGVyZXJTZXJ2aWNlLmFjdGl2ZUZvcm1EYXRhXCJcclxuICAgICAgICBbYXBpQ2FsbFJlc3BvbnNlXT1cInRoaXMuYXBpQ2FsbFJlc3BvbnNlXCJcclxuICAgICAgICBbZm9ybXNMaXN0XT1cInRoaXMucmVuZGVyZXJTZXJ2aWNlLmZvcm1zTGlzdFwiXHJcbiAgICAgICAgW2FsbEZvcm1zRGF0YV09XCJ0aGlzLnJlbmRlcmVyU2VydmljZS5hbGxGb3Jtc0RhdGFcIlxyXG4gICAgICAgIFtpc01vYmlsZVZpZXddPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuaXNNb2JpbGVWaWV3XCJcclxuICAgICAgICAob25DbGlja0FwaUNhbGwpPVwidGhpcy5oYW5kbGVPbkNsaWNrQXBpQ2FsbCgkZXZlbnQpXCJcclxuICAgICAgICAob25DbGlja1ZpZXdGb3Jtcyk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tWaWV3Rm9ybXMoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQ2xpY2tTYXZlRm9ybSk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tTYXZlRm9ybSgkZXZlbnQpXCJcclxuICAgICAgICAoZ2V0QWN0aXZlRm9ybURhdGEpPVwidGhpcy5oYW5kbGVHZXRBY3RpdmVGb3JtRGF0YSgkZXZlbnQpXCJcclxuICAgICAgPjwva3dpa2lkLWZvcm0tdmlldz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdlxyXG4gIG5nQ2xhc3M9XCJrd2lraWQtZm9ybXMtcmVuZGVyZXItbG9hZGVyXCJcclxuICAqbmdJZj1cImxvYWRlclwiXHJcbj5cclxuICA8c3BhbiBjbGFzcz1cImxvYWRlclwiPjwvc3Bhbj5cclxuPC9kaXY+XHJcbjx0dWktcHVzaFxyXG4gIGlkPVwiZXJyb3Itbm90aWZpY2F0aW9uXCJcclxuICAqdHVpUHVzaD1cInNob3dFcnJvck5vdGlmaWNhdGlvblwiXHJcbiAgaGVhZGluZz1cIlBsZWFzZSBjb21wbGV0ZSB0aGUgcmVxdWlyZWQgRm9ybXMhXCJcclxuICB0eXBlPVwiRXJyb3JcIlxyXG4gIChjbG9zZSk9XCJ0b2dnbGVFcnJvck5vdGlmaWNhdGlvbihmYWxzZSlcIlxyXG4+XHJcbiAgPHR1aS1zdmdcclxuICAgIHNyYz1cInR1aUljb25DYW5jZWxcIlxyXG4gICAgc3R5bGU9XCJjb2xvcjogI2ZmZiAhaW1wb3J0YW50XCJcclxuICA+XHJcbiAgPC90dWktc3ZnPlxyXG48L3R1aS1wdXNoPlxyXG4iXX0=
@@ -35,11 +35,6 @@ export class Converter {
35
35
  convertFormConfig(formConfig) {
36
36
  const updateOnFieldType = (field) => {
37
37
  const formatFieldTypeTitle = (field) => {
38
- const fieldKey = `${field.type}_${field.label
39
- .split(" ")
40
- .join("_")
41
- .toLocaleLowerCase()}`;
42
- field = this.setFieldKeyValue(field, "key", fieldKey);
43
38
  field = this.setFieldKeyValue(field, "hidden", false);
44
39
  return field;
45
40
  };
@@ -315,7 +310,6 @@ export class Converter {
315
310
  default:
316
311
  break;
317
312
  }
318
- console.log(field.key, field.validators);
319
313
  if (isEmpty((_a = field.validators) === null || _a === void 0 ? void 0 : _a.min)) {
320
314
  delete field.validators.min;
321
315
  }
@@ -541,11 +535,27 @@ export class Converter {
541
535
  }
542
536
  return formConfig;
543
537
  };
538
+ const setFormFieldGroups = (formConfig, groups) => {
539
+ formConfig["fieldGroups"] = groups;
540
+ return formConfig;
541
+ };
542
+ const updateFormFieldGroups = (fieldGroups, field) => {
543
+ if (hasKey(field, "groupKey")) {
544
+ if (hasKey(fieldGroups, field.groupKey)) {
545
+ fieldGroups[field.groupKey].push(field.key);
546
+ }
547
+ else {
548
+ fieldGroups[field.groupKey] = [field.key];
549
+ }
550
+ }
551
+ return fieldGroups;
552
+ };
544
553
  let connectedFieldMapping = {
545
554
  parent: {},
546
555
  child: {}
547
556
  };
548
557
  let fields = this.getFormFields(formConfig);
558
+ let fieldGroups = {};
549
559
  for (let field of fields) {
550
560
  field = updateOnFieldType(field);
551
561
  field = formatFieldKeys(field);
@@ -554,11 +564,13 @@ export class Converter {
554
564
  // connectedFieldMapping
555
565
  // );
556
566
  // field = updateConnectedElementsKeyValue(field, connectedFieldMapping);
567
+ fieldGroups = updateFormFieldGroups(fieldGroups, field);
557
568
  field = updateFieldDefaultValueConfig(field);
558
569
  field = updateFieldValidatorConfig(field);
559
570
  field = updateFieldResetButton(field);
560
571
  field = updateFieldMessages(field);
561
572
  }
573
+ formConfig = setFormFieldGroups(formConfig, fieldGroups);
562
574
  formConfig = setFormFields(formConfig, fields);
563
575
  return formConfig;
564
576
  }
@@ -566,4 +578,4 @@ export class Converter {
566
578
  __decorate([
567
579
  log
568
580
  ], Converter.prototype, "convertFormConfig", null);
569
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuY29uZmlnLWNvbnZlcnRlci5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9yZW5kZXJlci5jb25maWctY29udmVydGVyLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEUsTUFBTSxPQUFPLFNBQVM7SUFBdEI7UUFDRSxrQkFBYSxHQUFHLENBQUMsVUFBZSxFQUFTLEVBQUU7WUFDekMsSUFBSSxNQUFhLENBQUM7WUFFbEIsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7YUFDdEM7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7YUFDNUI7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUM7UUFFRiw0QkFBdUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxHQUFXLEVBQUUsS0FBVSxFQUFPLEVBQUU7WUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZCLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDcEI7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztRQUVGLHFCQUFnQixHQUFHLENBQUMsS0FBVSxFQUFFLEdBQVcsRUFBRSxLQUFVLEVB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QUMsVUFBVSxDQUFDLEdBQUcsQ0FBQzs0QkFDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDOzRCQUN4QixDQUFDLENBQUMsSUFBSTt3QkFDUixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7NEJBQ3RCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzs0QkFDbkIsQ0FBQyxDQUFDLElBQUksRUFDUixHQUFHLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUM7d0JBQzVCLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQzs0QkFDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDOzRCQUN4QixDQUFDLENBQUMsSUFBSTt3QkFDUixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7NEJBQ3RCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzs0QkFDbkIsQ0FBQyxDQUFDLElBQUksRUFDUixRQUFRLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7d0JBQ3RDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQzt3QkFDOUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDOzRCQUMzQixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7NEJBQ3pCLENBQUMsQ0FBQyxLQUFLLEVBQ1QsU0FBUyxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDO3dCQUN4QyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7NEJBQ2hDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQzs0QkFDOUIsQ0FBQyxDQUFDLElBQUk7d0JBQ1IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDOzRC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QyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUF2ckJDO0lBREMsR0FBRztrREF1ckJIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHVpRGF5IH0gZnJvbSBcIkB0YWlnYS11aS9jZGtcIjtcclxuaW1wb3J0IHsgbG9nIH0gZnJvbSBcIi4vZm9ybS12aWV3L2Zvcm0tdmlldy5kZWNvcmF0b3JzXCI7XHJcbmltcG9ydCB7IGNvbnZlcnREYXRlU3RyaW5nVG9UdWlEYXlGb3JtYXQgfSBmcm9tIFwiLi9mb3JtLXZpZXcvaGVscGVycy9mb3JtLXZpZXcuZmllbGRzLmhlbHBlclwiO1xyXG5pbXBvcnQgeyBoYXNLZXksIGlzRW1wdHksIGlzTm90RW1wdHkgfSBmcm9tIFwiLi9yZW5kZXJlci5oZWxwZXJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBDb252ZXJ0ZXIge1xyXG4gIGdldEZvcm1GaWVsZHMgPSAoZm9ybUNvbmZpZzogYW55KTogYW55W10gPT4ge1xyXG4gICAgbGV0IGZpZWxkczogYW55W107XHJcblxyXG4gICAgaWYgKGhhc0tleShmb3JtQ29uZmlnLCBcIm11bHRpRm9ybVwiKSkge1xyXG4gICAgICBmaWVsZHMgPSBmb3JtQ29uZmlnLm11bHRpRm9ybS5maWVsZHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWVsZHMgPSBmb3JtQ29uZmlnLmZpZWxkcztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmllbGRzO1xyXG4gIH07XHJcblxyXG4gIHNldE1pc3NpbmdGaWVsZEtleVZhbHVlID0gKGZpZWxkOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55ID0+IHtcclxuICAgIGlmICghaGFzS2V5KGZpZWxkLCBrZXkpKSB7XHJcbiAgICAgIGZpZWxkW2tleV0gPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWVsZDtcclxuICB9O1xyXG5cclxuICBzZXRGaWVsZEtleVZhbHVlID0gKGZpZWxkOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55ID0+IHtcclxuICAgIGZpZWxkW2tleV0gPSB2YWx1ZTtcclxuXHJcbiAgICByZXR1cm4gZmllbGQ7XHJcbiAgfTtcclxuXHJcbiAgcmVtb3ZlRmllbGRLZXkgPSAoZmllbGQ6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkgPT4ge1xyXG4gICAgaWYgKGhhc0tleShmaWVsZCwga2V5KSkge1xyXG4gICAgICBkZWxldGUgZmllbGRba2V5XTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmllbGQ7XHJcbiAgfTtcclxuXHJcbiAgQGxvZ1xyXG4gIGNvbnZlcnRGb3JtQ29uZmlnKGZvcm1Db25maWc6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCB1cGRhdGVPbkZpZWxkVHlwZSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcclxuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlVGl0bGUgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmllbGRLZXk6IHN0cmluZyA9IGAke2ZpZWxkLnR5cGV9XyR7ZmllbGQubGFiZWxcclxuICAgICAgICAgIC5zcGxpdChcIiBcIilcclxuICAgICAgICAgIC5qb2luKFwiX1wiKVxyXG4gICAgICAgICAgLnRvTG9jYWxlTG93ZXJDYXNlKCl9YDtcclxuICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJrZXlcIiwgZmllbGRLZXkpO1xyXG4gICAgICAgIGZpZWxkID0gdGhpcy5zZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcImhpZGRlblwiLCBmYWxzZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmaWVsZDtcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlUmFkaW8gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgXCJzaXplXCIsXHJcbiAgICAgICAgICBcIm1cIlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgXCJvcmllbnRhdGlvblwiLFxyXG4gICAgICAgICAgXCJ2ZXJ0aWNhbFwiXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJoaWRkZW5cIiwgZmFsc2UpO1xyXG5cclxuICAgICAgICBmaWVsZC5vcHRpb25zID0gZmllbGQub3B0aW9ucy5tYXAoKHg6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHggPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IHgsIGRpc2FibGVkOiBmYWxzZSB9O1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGhhc0tleSh4LCBcImxhYmVsXCIpICYmIGhhc0tleSh4LCBcImRpc2FibGVkXCIpKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVPdHAgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgXCJtYXNrXCIsXHJcbiAgICAgICAgICBuZXcgQXJyYXkoZmllbGQucHJvcGVydGllcy5vdHBMZW5ndGgpLmZpbGwoXCIjXCIpLmpvaW4oXCIgXCIpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJoaWRkZW5cIiwgZmFsc2UpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZURhdGUgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgaWYgKGhhc0tleShmaWVsZCwgXCJtaW5cIikpIHtcclxuICAgICAgICAgIGNvbnN0IHR1aURheSA9IGNvbnZlcnREYXRlU3RyaW5nVG9UdWlEYXlGb3JtYXQoZmllbGRbXCJtaW5cIl0pO1xyXG4gICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgXCJtaW5cIixcclxuICAgICAgICAgICAgdHVpRGF5XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gdGhpcy5zZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgXCJtaW5cIixcclxuICAgICAgICAgICAgbmV3IFR1aURheSgwLCAwLCAxKVxyXG4gICAgICAgICAgKTsgLy8gWWVhciAtIDAwMDAsIE1vbnRoIC0gMCAoMCBJbmRleGluZyksIERheSAtIDFcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChoYXNLZXkoZmllbGQsIFwibWF4XCIpKSB7XHJcbiAgICAgICAgICBjb25zdCB0dWlEYXkgPSBjb252ZXJ0RGF0ZVN0cmluZ1RvVHVpRGF5Rm9ybWF0KGZpZWxkW1wibWF4XCJdKTtcclxuICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIFwibWF4XCIsXHJcbiAgICAgICAgICAgIHR1aURheVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIFwibWF4XCIsXHJcbiAgICAgICAgICAgIG5ldyBUdWlEYXkoXHJcbiAgICAgICAgICAgICAgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCAvLyBZZWFyIC0gOTk5OVxyXG4gICAgICAgICAgICAgIG5ldyBEYXRlKCkuZ2V0TW9udGgoKSwgLy8gTW9udGggLSAxMSAoMCBJbmRleGluZylcclxuICAgICAgICAgICAgICBuZXcgRGF0ZSgpLmdldERhdGUoKSAvLyBEYXkgLSAzMVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZmllbGQgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwiaGlkZGVuXCIsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVOdW1iZXIgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgaWYgKGhhc0tleShmaWVsZCwgXCJrZXlcIikpIHtcclxuICAgICAgICAgIGlmIChmaWVsZC5rZXkgPT09IFwiYWFkaGFhcl9udW1iZXJcIikge1xyXG4gICAgICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwiYWFkaGFhcl9udW1iZXJcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZmllbGQua2V5ID09PSBcImNvbnRhY3RfbnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgZmllbGQgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidHlwZVwiLCBcInBob25lXCIpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBcInBob25lXCIgfHwgZmllbGQudHlwZSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gdGhpcy5zZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgICAgIFwiY291bnRyeUNvZGVcIixcclxuICAgICAgICAgICAgICBcIis5MVwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKFxyXG4gICAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgICAgXCJwaG9uZU1hc2tBZnRlckNvdW50cnlDb2RlXCIsXHJcbiAgICAgICAgICAgICAgXCIjIyMjLSMjIyMjI1wiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKFxyXG4gICAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgICAgXCJyZW1vdmVDb3VudHJ5Q29kZUZyb21WYWx1ZVwiLFxyXG4gICAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgICBcImRlY2ltYWxcIixcclxuICAgICAgICAgICAgICBcIm5ldmVyXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgICBcInByZWZpeFwiLFxyXG4gICAgICAgICAgICAgIFwiXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgICBcInBvc3RmaXhcIixcclxuICAgICAgICAgICAgICBcIlwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKFxyXG4gICAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgICAgXCJtaW5cIixcclxuICAgICAgICAgICAgICAtSW5maW5pdHlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgICBcIm1heFwiLFxyXG4gICAgICAgICAgICAgIEluZmluaXR5XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKFxyXG4gICAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgICAgXCJwcmVjaXNpb25cIixcclxuICAgICAgICAgICAgICAyXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJoaWRkZW5cIiwgZmFsc2UpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZUFwaUNhbGwgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgaWYgKCFoYXNLZXkoZmllbGQucHJvcGVydGllcywgXCJzaGFwZVwiKSkge1xyXG4gICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgXCJzaGFwZVwiLFxyXG4gICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWhhc0tleShmaWVsZCwgXCJzaG93TG9hZGVyXCIpKSB7XHJcbiAgICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJzaG93TG9hZGVyXCIsIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFoYXNLZXkoZmllbGQucHJvcGVydGllcywgXCJzaXplXCIpKSB7XHJcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gdGhpcy5zZXRGaWVsZEtleVZhbHVlKFxyXG4gICAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgICBcInNpemVcIixcclxuICAgICAgICAgICAgXCJtXCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaGFzS2V5KGZpZWxkLCBcImFwaVwiKSkge1xyXG4gICAgICAgICAgZmllbGQgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwiYXBpXCIsIHt9KTtcclxuXHJcbiAgICAgICAgICBmaWVsZC5hcGkgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLmFwaSwgXCJ1cmxcIiwgXCJcIik7XHJcbiAgICAgICAgICBmaWVsZC5hcGkgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLmFwaSwgXCJyZXF1ZXN0XCIsIFwiXCIpO1xyXG4gICAgICAgICAgZmllbGQuYXBpID0gdGhpcy5zZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShmaWVsZC5hcGksIFwicmVzcG9uc2VcIiwgXCJcIik7XHJcbiAgICAgICAgICBmaWVsZC5hcGkgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLmFwaSwgXCJzdGF0dXNcIiwgXCJcIik7XHJcblxyXG4gICAgICAgICAgZmllbGQuYXBpLnN0YXR1cyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgIGZpZWxkLmFwaS5zdGF0dXMsXHJcbiAgICAgICAgICAgIFwidmFsdWVcIixcclxuICAgICAgICAgICAgXCJkZWZhdWx0XCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBmaWVsZC5hcGkuc3RhdHVzID0gdGhpcy5zZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgZmllbGQuYXBpLnN0YXR1cyxcclxuICAgICAgICAgICAgXCJsYWJlbHNcIixcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6IFwiQ2FsbCBBUElcIixcclxuICAgICAgICAgICAgICBsb2FkaW5nOiBcIkNhbGwgQVBJXCIsXHJcbiAgICAgICAgICAgICAgc3VjY2VzczogXCJBUEkgU3VjY2Vzc1wiLFxyXG4gICAgICAgICAgICAgIGZhaWxlZDogXCJBUEkgRmFpbGVkXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVTZWFyY2hUZXh0ID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAgIGlmIChoYXNLZXkoZmllbGQsIFwidHlwZVwiKSkge1xyXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IFwic2VhcmNoLXRleHRcIikge1xyXG4gICAgICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgICBmaWVsZCxcclxuICAgICAgICAgICAgICBcInR5cGVcIixcclxuICAgICAgICAgICAgICBcImRyb3Bkb3duLXdpdGgtc2VhcmNoXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmaWVsZDtcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlVGV4dCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcclxuICAgICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcclxuICAgICAgICBjYXNlIFwidGl0bGVcIjpcclxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlVGl0bGUoZmllbGQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcInJhZGlvXCI6XHJcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVJhZGlvKGZpZWxkKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJvdHBcIjpcclxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlT3RwKGZpZWxkKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJkYXRlXCI6XHJcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZURhdGUoZmllbGQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVOdW1iZXIoZmllbGQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImFwaS1jYWxsXCI6XHJcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUFwaUNhbGwoZmllbGQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcInNlYXJjaC10ZXh0XCI6XHJcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVNlYXJjaFRleHQoZmllbGQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGdldENvbm5lY3RlZEVsZW1lbnRLZXlWYWx1ZU9iamVjdCA9IChrZXk6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIGNvbnN0IG9iamVjdCA9IHtcclxuICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICBjb25kaXRpb25zOiB7IGZvcm11bGE6IFwiXCIsIHJ1bGVzOiBbXSB9LFxyXG4gICAgICAgIGFjdGlvbnM6IHsgc3VjY2VzczogW10sIGZhaWx1cmU6IFtdIH1cclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIG9iamVjdDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZm9ybWF0RmllbGRLZXlzID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICBpZiAoaGFzS2V5KGZpZWxkLCBcImNvbm5lY3RlZFRvXCIpKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZFtcImNvbm5lY3RlZFRvXCJdID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICBmaWVsZFtcImNvbm5lY3RlZEVsZW1lbnRzXCJdID0gW1xyXG4gICAgICAgICAgICBnZXRDb25uZWN0ZWRFbGVtZW50S2V5VmFsdWVPYmplY3QoZmllbGRbXCJjb25uZWN0ZWRUb1wiXSlcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpZWxkW1wiY29ubmVjdGVkVG9cIl0gPSBmaWVsZFtcImNvbm5lY3RlZFRvXCJdLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldENvbm5lY3RlZEVsZW1lbnRLZXlWYWx1ZU9iamVjdChrZXkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBmaWVsZFtcImNvbm5lY3RlZEVsZW1lbnRzXCJdID0gZmllbGRbXCJjb25uZWN0ZWRUb1wiXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZW1vdmVGaWVsZEtleShmaWVsZCwgXCJjb25uZWN0ZWRUb1wiKTtcclxuXHJcbiAgICAgIGlmIChoYXNLZXkoZmllbGQsIFwiY29ubmVjdGVkVG9QYXJlbnRcIikpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkW1wiY29ubmVjdGVkVG9QYXJlbnRcIl0gPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIGZpZWxkW1wiY29ubmVjdGVkUGFyZW50RmllbGRzXCJdID0gW1xyXG4gICAgICAgICAgICBnZXRDb25uZWN0ZWRFbGVtZW50S2V5VmFsdWVPYmplY3QoZmllbGRbXCJjb25uZWN0ZWRUb1BhcmVudFwiXSlcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpZWxkW1wiY29ubmVjdGVkUGFyZW50RmllbGRzXCJdID0gZ2V0Q29ubmVjdGVkRWxlbWVudEtleVZhbHVlT2JqZWN0KFxyXG4gICAgICAgICAgICBmaWVsZFtcImNvbm5lY3RlZFRvUGFyZW50XCJdXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbW92ZUZpZWxkS2V5KGZpZWxkLCBcImNvbm5lY3RlZFRvUGFyZW50XCIpO1xyXG5cclxuICAgICAgdGhpcy5yZW1vdmVGaWVsZEtleShmaWVsZCwgXCJzaWRlRWZmZWN0XCIpO1xyXG5cclxuICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBnZXRDb25uZWN0ZWRFbGVtZW50RmllbGRNYXBwaW5nID0gKFxyXG4gICAgICBmaWVsZDogYW55LFxyXG4gICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmc6IGFueVxyXG4gICAgKTogYW55ID0+IHtcclxuICAgICAgY29uc3QgZ2V0Q29ubmVjdGVkRWxlbWVudENoaWxkRmllbGRNYXBwaW5nID0gKFxyXG4gICAgICAgIGZpZWxkOiBhbnksXHJcbiAgICAgICAgY29ubmVjdGVkRmllbGRNYXBwaW5nOiBhbnlcclxuICAgICAgKTogYW55ID0+IHtcclxuICAgICAgICBpZiAoaGFzS2V5KGZpZWxkLCBcImNvbm5lY3RlZEVsZW1lbnRzXCIpKSB7XHJcbiAgICAgICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJjaGlsZFwiXVtmaWVsZC5rZXldID0gZmllbGQuY29ubmVjdGVkRWxlbWVudHM7XHJcbiAgICAgICAgfSBlbHNlIGlmIChoYXNLZXkoY29ubmVjdGVkRmllbGRNYXBwaW5nW1wiY2hpbGRcIl0sIGZpZWxkLmtleSkpIHtcclxuICAgICAgICAgIGZpZWxkW1wiY29ubmVjdGVkRWxlbWVudHNcIl0gPVxyXG4gICAgICAgICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJjaGlsZFwiXVtmaWVsZC5rZXldO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHsgZmllbGQ6IGZpZWxkLCBjb25uZWN0ZWRGaWVsZE1hcHBpbmc6IGNvbm5lY3RlZEZpZWxkTWFwcGluZyB9O1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc3QgZ2V0Q29ubmVjdGVkRWxlbWVudFBhcmVudEZpZWxkTWFwcGluZyA9IChcclxuICAgICAgICBmaWVsZDogYW55LFxyXG4gICAgICAgIGNvbm5lY3RlZEZpZWxkTWFwcGluZzogYW55XHJcbiAgICAgICk6IGFueSA9PiB7XHJcbiAgICAgICAgaWYgKGhhc0tleShjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJjaGlsZFwiXSwgZmllbGQua2V5KSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgY29ubmVjdGVkUGFyZW50S2V5IG9mIGNvbm5lY3RlZEZpZWxkTWFwcGluZ1tcImNoaWxkXCJdW1xyXG4gICAgICAgICAgICBmaWVsZC5rZXlcclxuICAgICAgICAgIF0pIHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGhhc0tleShjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJwYXJlbnRcIl0sIGNvbm5lY3RlZFBhcmVudEtleVtcImtleVwiXSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29ubmVjdGVkRmllbGRNYXBwaW5nW1wicGFyZW50XCJdW2Nvbm5lY3RlZFBhcmVudEtleVtcImtleVwiXV0ucHVzaChcclxuICAgICAgICAgICAgICAgIGZpZWxkLmtleVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29ubmVjdGVkRmllbGRNYXBwaW5nW1wicGFyZW50XCJdW2Nvbm5lY3RlZFBhcmVudEtleVtcImtleVwiXV0gPSBbXHJcbiAgICAgICAgICAgICAgICBmaWVsZC5rZXlcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geyBmaWVsZDogZmllbGQsIGNvbm5lY3RlZEZpZWxkTWFwcGluZzogY29ubmVjdGVkRmllbGRNYXBwaW5nIH07XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBjb25uZWN0ZWRDaGlsZEZpZWxkTWFwcGluZyA9IGdldENvbm5lY3RlZEVsZW1lbnRDaGlsZEZpZWxkTWFwcGluZyhcclxuICAgICAgICBmaWVsZCxcclxuICAgICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmdcclxuICAgICAgKTtcclxuICAgICAgZmllbGQgPSBjb25uZWN0ZWRDaGlsZEZpZWxkTWFwcGluZ1tcImZpZWxkXCJdO1xyXG4gICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmcgPVxyXG4gICAgICAgIGNvbm5lY3RlZENoaWxkRmllbGRNYXBwaW5nW1wiY29ubmVjdGVkRmllbGRNYXBwaW5nXCJdO1xyXG5cclxuICAgICAgY29uc3QgY29ubmVjdGVkUGFyZW50RmllbGRNYXBwaW5nID0gZ2V0Q29ubmVjdGVkRWxlbWVudFBhcmVudEZpZWxkTWFwcGluZyhcclxuICAgICAgICBmaWVsZCxcclxuICAgICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmdcclxuICAgICAgKTtcclxuICAgICAgZmllbGQgPSBjb25uZWN0ZWRQYXJlbnRGaWVsZE1hcHBpbmdbXCJmaWVsZFwiXTtcclxuICAgICAgY29ubmVjdGVkRmllbGRNYXBwaW5nID1cclxuICAgICAgICBjb25uZWN0ZWRQYXJlbnRGaWVsZE1hcHBpbmdbXCJjb25uZWN0ZWRGaWVsZE1hcHBpbmdcIl07XHJcblxyXG4gICAgICByZXR1cm4gY29ubmVjdGVkRmllbGRNYXBwaW5nO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVDb25uZWN0ZWRFbGVtZW50c0tleVZhbHVlID0gKFxyXG4gICAgICBmaWVsZDogYW55LFxyXG4gICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmc6IGFueVxyXG4gICAgKTogYW55ID0+IHtcclxuICAgICAgaWYgKGhhc0tleShjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJjaGlsZFwiXSwgZmllbGQua2V5KSkge1xyXG4gICAgICAgIGZpZWxkW1wiY29ubmVjdGVkRWxlbWVudHNcIl0gPSBjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJjaGlsZFwiXVtmaWVsZC5rZXldO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaGFzS2V5KGNvbm5lY3RlZEZpZWxkTWFwcGluZ1tcInBhcmVudFwiXSwgZmllbGQua2V5KSkge1xyXG4gICAgICAgIGZpZWxkW1wiY29ubmVjdGVkUGFyZW50RmllbGRzXCJdID1cclxuICAgICAgICAgIGNvbm5lY3RlZEZpZWxkTWFwcGluZ1tcInBhcmVudFwiXVtmaWVsZC5rZXldO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkVmFsaWRhdG9yQ29uZmlnID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQudHlwZSAhPT0gXCJ0aXRsZVwiKSB7XHJcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IGhhc0tleShmaWVsZCwgXCJ2YWxpZGF0b3JzXCIpID8gZmllbGQudmFsaWRhdG9ycyA6IHt9O1xyXG5cclxuICAgICAgICBmaWVsZCA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoZmllbGQsIFwidmFsaWRhdG9yc1wiLCB7fSk7XHJcbiAgICAgICAgZmllbGQgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidmFsaWRhdG9yc1wiLCB7XHJcbiAgICAgICAgICAuLi5maWVsZFtcInZhbGlkYXRvcnNcIl0sXHJcbiAgICAgICAgICBtaW46IGhhc0tleSh2YWxpZGF0b3JzLCBcIm1pblwiKVxyXG4gICAgICAgICAgICA/IGlzTm90RW1wdHkodmFsaWRhdG9ycy5taW4pXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodmFsaWRhdG9ycy5taW4pXHJcbiAgICAgICAgICAgICAgOiBudWxsXHJcbiAgICAgICAgICAgIDogaGFzS2V5KGZpZWxkLCBcIm1pblwiKVxyXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5taW4pXHJcbiAgICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICAgIG1heDogaGFzS2V5KHZhbGlkYXRvcnMsIFwibWF4XCIpXHJcbiAgICAgICAgICAgID8gaXNOb3RFbXB0eSh2YWxpZGF0b3JzLm1heClcclxuICAgICAgICAgICAgICA/IE51bWJlcih2YWxpZGF0b3JzLm1heClcclxuICAgICAgICAgICAgICA6IG51bGxcclxuICAgICAgICAgICAgOiBoYXNLZXkoZmllbGQsIFwibWF4XCIpXHJcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLm1heClcclxuICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgICAgcmVxdWlyZWQ6IGhhc0tleSh2YWxpZGF0b3JzLCBcInJlcXVpcmVkXCIpXHJcbiAgICAgICAgICAgID8gQm9vbGVhbih2YWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgICAgICAgICA6IGhhc0tleShmaWVsZCwgXCJyZXF1aXJlZFwiKVxyXG4gICAgICAgICAgICA/IEJvb2xlYW4oZmllbGQucmVxdWlyZWQpXHJcbiAgICAgICAgICAgIDogZmFsc2UsXHJcbiAgICAgICAgICBtaW5MZW5ndGg6IGhhc0tleSh2YWxpZGF0b3JzLCBcIm1pbkxlbmd0aFwiKVxyXG4gICAgICAgICAgICA/IGlzTm90RW1wdHkodmFsaWRhdG9ycy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodmFsaWRhdG9ycy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgICAgOiBudWxsXHJcbiAgICAgICAgICAgIDogaGFzS2V5KGZpZWxkLCBcIm1pbkxlbmd0aFwiKVxyXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICAgIG1heExlbmd0aDogaGFzS2V5KHZhbGlkYXRvcnMsIFwibWF4TGVuZ3RoXCIpXHJcbiAgICAgICAgICAgID8gaXNOb3RFbXB0eSh2YWxpZGF0b3JzLm1heExlbmd0aClcclxuICAgICAgICAgICAgICA/IE51bWJlcih2YWxpZGF0b3JzLm1heExlbmd0aClcclxuICAgICAgICAgICAgICA6IG51bGxcclxuICAgICAgICAgICAgOiBoYXNLZXkoZmllbGQsIFwibGVuZ3RoXCIpXHJcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLmxlbmd0aClcclxuICAgICAgICAgICAgOiBoYXNLZXkoZmllbGQsIFwibWF4TGVuZ3RoXCIpXHJcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLm1heExlbmd0aClcclxuICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgICAgcGF0dGVybjogaGFzS2V5KHZhbGlkYXRvcnMsIFwicGF0dGVyblwiKVxyXG4gICAgICAgICAgICA/IGlzTm90RW1wdHkodmFsaWRhdG9ycy5wYXR0ZXJuKVxyXG4gICAgICAgICAgICAgID8gdmFsaWRhdG9ycy5wYXR0ZXJuXHJcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgOiBoYXNLZXkoZmllbGQsIFwicGF0dGVyblwiKVxyXG4gICAgICAgICAgICA/IHsga2V5OiBcIkNVU1RPTVwiLCBwYXR0ZXJuOiBTdHJpbmcoZmllbGQucGF0dGVybikgfVxyXG4gICAgICAgICAgICA6IGhhc0tleShmaWVsZCwgXCJyZWdleFwiKVxyXG4gICAgICAgICAgICA/IHsga2V5OiBcIkNVU1RPTVwiLCBwYXR0ZXJuOiBTdHJpbmcoZmllbGQucmVnZXgpIH1cclxuICAgICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZGVsZXRlIGZpZWxkLm1pbjtcclxuICAgICAgICBkZWxldGUgZmllbGQubWF4O1xyXG4gICAgICAgIGRlbGV0ZSBmaWVsZC5yZXF1aXJlZDtcclxuICAgICAgICBkZWxldGUgZmllbGQubWluTGVuZ3RoO1xyXG4gICAgICAgIGRlbGV0ZSBmaWVsZC5sZW5ndGg7XHJcbiAgICAgICAgZGVsZXRlIGZpZWxkLm1heExlbmd0aDtcclxuICAgICAgICBkZWxldGUgZmllbGQucGF0dGVybjtcclxuICAgICAgICBkZWxldGUgZmllbGQucmVnZXg7XHJcblxyXG4gICAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcInRleHRcIjpcclxuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluO1xyXG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXg7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhmaWVsZC5rZXksIGZpZWxkLnZhbGlkYXRvcnMpO1xyXG5cclxuICAgICAgICBpZiAoaXNFbXB0eShmaWVsZC52YWxpZGF0b3JzPy5taW4pKSB7XHJcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0VtcHR5KGZpZWxkLnZhbGlkYXRvcnM/Lm1heCkpIHtcclxuICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzRW1wdHkoZmllbGQudmFsaWRhdG9ycz8ubWluTGVuZ3RoKSkge1xyXG4gICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluTGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNFbXB0eShmaWVsZC52YWxpZGF0b3JzPy5tYXhMZW5ndGgpKSB7XHJcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0VtcHR5KGZpZWxkLnZhbGlkYXRvcnM/LnBhdHRlcm4pKSB7XHJcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5wYXR0ZXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVGaWVsZERlZmF1bHRWYWx1ZUNvbmZpZyA9IChmaWVsZDogYW55KTogYW55ID0+IHtcclxuICAgICAgaWYgKGZpZWxkLnR5cGUgIT09IFwidGl0bGVcIikge1xyXG4gICAgICAgIGlmIChoYXNLZXkoZmllbGQsIFwiZGVmYXVsdFZhbHVlXCIpKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICAgICAgfSBlbHNlIGlmIChoYXNLZXkoZmllbGQsIFwiZGVmYXVsdFwiKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaGFzS2V5KGZpZWxkLCBcImRlZmF1bHRWYWxcIikpIHtcclxuICAgICAgICAgICAgLy8gQ3VycmVudGx5IGJlbG93IGxpbmUgaXMgY29tbWVudGVkIGJlY2F1c2UgaXQgY2F1c2VkIGlzc3VlcyBpbiBzZXR0aW5nIERlZmF1bHQgVmFsdWUuXHJcbiAgICAgICAgICAgIC8vIGZpZWxkW1wiZGVmYXVsdFZhbHVlXCJdID0gZmllbGRbXCJkZWZhdWx0VmFsXCJdO1xyXG4gICAgICAgICAgICAvLyBkZWxldGUgZmllbGRbXCJkZWZhdWx0VmFsXCJdO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFRPRE86IENvbmRpdGlvbiBmb3IgYWxsX2Zvcm1zX2RhdGEgaXMgbm90IGNvbnNpZGVyZWQgeWV0LlxyXG4gICAgICAgICAgaWYgKGZpZWxkLmF1dG9Qb3B1bGF0ZUZyb21TdW1tYXJ5RGF0YSkge1xyXG4gICAgICAgICAgICBmaWVsZFtcImRlZmF1bHRWYWx1ZVwiXSA9IHtcclxuICAgICAgICAgICAgICBpc19mb3VuZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXHJcbiAgICAgICAgICAgICAgc291cmNlczogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBzb3VyY2U6IFwic3VtbWFyeV9kYXRhXCIsXHJcbiAgICAgICAgICAgICAgICAgIHN1bW1hcnlfZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGAkLiR7ZmllbGQua2V5fWAsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcnVsZXM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCIxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpc19ub3RfZW1wdHlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19ub3RfZW1wdHk6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXRfZGVmYXVsdF92YWx1ZV9mb3VuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2RlZmF1bHRfdmFsdWVfZm91bmQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJlbmFibGVfZmllbGRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IFwiMSBPUiBOT1QoMSlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfZmllbGQ6IHsgdmFsdWU6IHRydWUgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNLZXkoZmllbGQsIFwiYXV0b2ZpbGxcIikpIHtcclxuICAgICAgICAgICAgaWYgKGhhc0tleShmaWVsZC5hdXRvZmlsbCwgXCJ0eXBlXCIpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGZpZWxkLmF1dG9maWxsLnR5cGUgPT09IFwic3RvcmFnZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBmaWVsZFtcImRlZmF1bHRWYWx1ZVwiXSA9IHtcclxuICAgICAgICAgICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcclxuICAgICAgICAgICAgICAgICAgc291cmNlczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogXCJicm93c2VyX3N0b3JhZ2VcIixcclxuICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXJfc3RvcmFnZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBgJC4ke2ZpZWxkLmtleX1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZXM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIjFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpc19ub3RfZW1wdHlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfbm90X2VtcHR5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInNldF9kZWZhdWx0X3ZhbHVlX2ZvdW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9kZWZhdWx0X3ZhbHVlX2ZvdW5kOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJlbmFibGVfZmllbGRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcIjEgT1IgTk9UKDEpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9maWVsZDogeyB2YWx1ZTogdHJ1ZSB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuYXV0b2ZpbGwudHlwZSA9PT0gXCJjb25maWdcIikge1xyXG4gICAgICAgICAgICAgICAgZmllbGRbXCJkZWZhdWx0VmFsdWVcIl0gPSB7XHJcbiAgICAgICAgICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgIHNvdXJjZXM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IFwiZmllbGRfY29uZmlnXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZF9jb25maWc6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogYCQuJHtmaWVsZC5rZXl9YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCIxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaXNfbm90X2VtcHR5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX25vdF9lbXB0eToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXRfZGVmYXVsdF92YWx1ZV9mb3VuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IFwiMVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZGVmYXVsdF92YWx1ZV9mb3VuZDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiZW5hYmxlX2ZpZWxkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxIE9SIE5PVCgxKVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfZmllbGQ6IHsgdmFsdWU6IHRydWUgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpZWxkW1wiZGVmYXVsdFZhbHVlXCJdID0ge1xyXG4gICAgICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcclxuICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcclxuICAgICAgICAgICAgICBzb3VyY2VzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogXCJmb3JtX2RhdGFcIixcclxuICAgICAgICAgICAgICAgICAgZm9ybV9kYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogYCQuJHtmaWVsZC5rZXl9YCxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBydWxlczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIjFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImlzX25vdF9lbXB0eVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzX25vdF9lbXB0eToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInNldF9kZWZhdWx0X3ZhbHVlX2ZvdW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcIjFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZGVmYXVsdF92YWx1ZV9mb3VuZDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImVuYWJsZV9maWVsZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxIE9SIE5PVCgxKVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9maWVsZDogeyB2YWx1ZTogdHJ1ZSB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZWxldGUgZmllbGRbXCJkZWZhdWx0VmFsXCJdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkTWVzc2FnZXMgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC50eXBlICE9PSBcInRpdGxlXCIpIHtcclxuICAgICAgICBmaWVsZCA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoZmllbGQsIFwibWVzc2FnZXNcIiwgW10pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkUmVzZXRCdXR0b24gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSBcInRpdGxlXCIpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBoYXNLZXkoZmllbGQsIFwiYWN0aW9uXCIpICYmXHJcbiAgICAgICAgICBmaWVsZC5hY3Rpb24gPT09IFwicmVzZXRcIiAmJlxyXG4gICAgICAgICAgaGFzS2V5KGZpZWxkLCBcImZpZWxkc1wiKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZmllbGQgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwicmVzZXRcIiwge1xyXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkc1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNldEZvcm1GaWVsZHMgPSAoZm9ybUNvbmZpZzogYW55LCBmaWVsZHM6IGFueVtdKTogYW55ID0+IHtcclxuICAgICAgaWYgKGhhc0tleShmb3JtQ29uZmlnLCBcIm11bHRpRm9ybVwiKSkge1xyXG4gICAgICAgIGZvcm1Db25maWcubXVsdGlGb3JtW1wiZmllbGRzXCJdID0gZmllbGRzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvcm1Db25maWdbXCJmaWVsZHNcIl0gPSBmaWVsZHM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmb3JtQ29uZmlnO1xyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgY29ubmVjdGVkRmllbGRNYXBwaW5nOiBhbnkgPSB7XHJcbiAgICAgIHBhcmVudDoge30sXHJcbiAgICAgIGNoaWxkOiB7fVxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgZmllbGRzOiBhbnlbXSA9IHRoaXMuZ2V0Rm9ybUZpZWxkcyhmb3JtQ29uZmlnKTtcclxuXHJcbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmaWVsZHMpIHtcclxuICAgICAgZmllbGQgPSB1cGRhdGVPbkZpZWxkVHlwZShmaWVsZCk7XHJcblxyXG4gICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkS2V5cyhmaWVsZCk7XHJcblxyXG4gICAgICAvLyBjb25uZWN0ZWRGaWVsZE1hcHBpbmcgPSBnZXRDb25uZWN0ZWRFbGVtZW50RmllbGRNYXBwaW5nKFxyXG4gICAgICAvLyAgIGZpZWxkLFxyXG4gICAgICAvLyAgIGNvbm5lY3RlZEZpZWxkTWFwcGluZ1xyXG4gICAgICAvLyApO1xyXG4gICAgICAvLyBmaWVsZCA9IHVwZGF0ZUNvbm5lY3RlZEVsZW1lbnRzS2V5VmFsdWUoZmllbGQsIGNvbm5lY3RlZEZpZWxkTWFwcGluZyk7XHJcblxyXG4gICAgICBmaWVsZCA9IHVwZGF0ZUZpZWxkRGVmYXVsdFZhbHVlQ29uZmlnKGZpZWxkKTtcclxuXHJcbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGRWYWxpZGF0b3JDb25maWcoZmllbGQpO1xyXG5cclxuICAgICAgZmllbGQgPSB1cGRhdGVGaWVsZFJlc2V0QnV0dG9uKGZpZWxkKTtcclxuXHJcbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGRNZXNzYWdlcyhmaWVsZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9ybUNvbmZpZyA9IHNldEZvcm1GaWVsZHMoZm9ybUNvbmZpZywgZmllbGRzKTtcclxuXHJcbiAgICByZXR1cm4gZm9ybUNvbmZpZztcclxuICB9XHJcbn1cclxuIl19
581
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuY29uZmlnLWNvbnZlcnRlci5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9yZW5kZXJlci5jb25maWctY29udmVydGVyLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEUsTUFBTSxPQUFPLFNBQVM7SUFBdEI7UUFDRSxrQkFBYSxHQUFHLENBQUMsVUFBZSxFQUFTLEVBQUU7WUFDekMsSUFBSSxNQUFhLENBQUM7WUFFbEIsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7YUFDdEM7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7YUFDNUI7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUM7UUFFRiw0QkFBdUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxHQUFXLEVBQUUsS0FBVSxFQUFPLEVBQUU7WUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZCLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDcEI7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztRQUVGLHFCQUFnQixHQUFHLENBQUMsS0FBVSxFQUFFLEdBQVcsRUFBRSxLQUFVLEVB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QUF5RTtZQUN6RSxXQUFXLEdBQUcscUJBQXFCLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXhELEtBQUssR0FBRyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU3QyxLQUFLLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFMUMsS0FBSyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXRDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQztRQUVELFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFekQsVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0MsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztDQUNGO0FBdnNCQztJQURDLEdBQUc7a0RBdXNCSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR1aURheSB9IGZyb20gXCJAdGFpZ2EtdWkvY2RrXCI7XHJcbmltcG9ydCB7IGxvZyB9IGZyb20gXCIuL2Zvcm0tdmlldy9mb3JtLXZpZXcuZGVjb3JhdG9yc1wiO1xyXG5pbXBvcnQgeyBjb252ZXJ0RGF0ZVN0cmluZ1RvVHVpRGF5Rm9ybWF0IH0gZnJvbSBcIi4vZm9ybS12aWV3L2hlbHBlcnMvZm9ybS12aWV3LmZpZWxkcy5oZWxwZXJcIjtcclxuaW1wb3J0IHsgaGFzS2V5LCBpc0VtcHR5LCBpc05vdEVtcHR5IH0gZnJvbSBcIi4vcmVuZGVyZXIuaGVscGVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQ29udmVydGVyIHtcclxuICBnZXRGb3JtRmllbGRzID0gKGZvcm1Db25maWc6IGFueSk6IGFueVtdID0+IHtcclxuICAgIGxldCBmaWVsZHM6IGFueVtdO1xyXG5cclxuICAgIGlmIChoYXNLZXkoZm9ybUNvbmZpZywgXCJtdWx0aUZvcm1cIikpIHtcclxuICAgICAgZmllbGRzID0gZm9ybUNvbmZpZy5tdWx0aUZvcm0uZmllbGRzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmllbGRzID0gZm9ybUNvbmZpZy5maWVsZHM7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpZWxkcztcclxuICB9O1xyXG5cclxuICBzZXRNaXNzaW5nRmllbGRLZXlWYWx1ZSA9IChmaWVsZDogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSA9PiB7XHJcbiAgICBpZiAoIWhhc0tleShmaWVsZCwga2V5KSkge1xyXG4gICAgICBmaWVsZFtrZXldID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGQ7XHJcbiAgfTtcclxuXHJcbiAgc2V0RmllbGRLZXlWYWx1ZSA9IChmaWVsZDogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSA9PiB7XHJcbiAgICBmaWVsZFtrZXldID0gdmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIGZpZWxkO1xyXG4gIH07XHJcblxyXG4gIHJlbW92ZUZpZWxkS2V5ID0gKGZpZWxkOiBhbnksIGtleTogc3RyaW5nKTogYW55ID0+IHtcclxuICAgIGlmIChoYXNLZXkoZmllbGQsIGtleSkpIHtcclxuICAgICAgZGVsZXRlIGZpZWxkW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpZWxkO1xyXG4gIH07XHJcblxyXG4gIEBsb2dcclxuICBjb252ZXJ0Rm9ybUNvbmZpZyhmb3JtQ29uZmlnOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgdXBkYXRlT25GaWVsZFR5cGUgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVRpdGxlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAgIGZpZWxkID0gdGhpcy5zZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcImhpZGRlblwiLCBmYWxzZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmaWVsZDtcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlUmFkaW8gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgXCJzaXplXCIsXHJcbiAgICAgICAgICBcIm1cIlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgXCJvcmllbnRhdGlvblwiLFxyXG4gICAgICAgICAgXCJ2ZXJ0aWNhbFwiXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJoaWRkZW5cIiwgZmFsc2UpO1xyXG5cclxuICAgICAgICBmaWVsZC5vcHRpb25zID0gZmllbGQub3B0aW9ucy5tYXAoKHg6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHggPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IHgsIGRpc2FibGVkOiBmYWxzZSB9O1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGhhc0tleSh4LCBcImxhYmVsXCIpICYmIGhhc0tleSh4LCBcImRpc2FibGVkXCIpKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVPdHAgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgXCJtYXNrXCIsXHJcbiAgICAgICAgICBuZXcgQXJyYXkoZmllbGQucHJvcGVydGllcy5vdHBMZW5ndGgpLmZpbGwoXCIjXCIpLmpvaW4oXCIgXCIpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJoaWRkZW5cIiwgZmFsc2UpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZURhdGUgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgaWYgKGhhc0tleShmaWVsZCwgXCJtaW5cIikpIHtcclxuICAgICAgICAgIGNvbnN0IHR1aURheSA9IGNvbnZlcnREYXRlU3RyaW5nVG9UdWlEYXlGb3JtYXQoZmllbGRbXCJtaW5cIl0pO1xyXG4gICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgXCJtaW5cIixcclxuICAgICAgICAgICAgdHVpRGF5XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gdGhpcy5zZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgXCJtaW5cIixcclxuICAgICAgICAgICAgbmV3IFR1aURheSgwLCAwLCAxKVxyXG4gICAgICAgICAgKTsgLy8gWWVhciAtIDAwMDAsIE1vbnRoIC0gMCAoMCBJbmRleGluZyksIERheSAtIDFcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChoYXNLZXkoZmllbGQsIFwibWF4XCIpKSB7XHJcbiAgICAgICAgICBjb25zdCB0dWlEYXkgPSBjb252ZXJ0RGF0ZVN0cmluZ1RvVHVpRGF5Rm9ybWF0KGZpZWxkW1wibWF4XCJdKTtcclxuICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIFwibWF4XCIsXHJcbiAgICAgICAgICAgIHR1aURheVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIFwibWF4XCIsXHJcbiAgICAgICAgICAgIG5ldyBUdWlEYXkoXHJcbiAgICAgICAgICAgICAgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCAvLyBZZWFyIC0gOTk5OVxyXG4gICAgICAgICAgICAgIG5ldyBEYXRlKCkuZ2V0TW9udGgoKSwgLy8gTW9udGggLSAxMSAoMCBJbmRleGluZylcclxuICAgICAgICAgICAgICBuZXcgRGF0ZSgpLmdldERhdGUoKSAvLyBEYXkgLSAzMVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZmllbGQgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwiaGlkZGVuXCIsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVOdW1iZXIgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgaWYgKGhhc0tleShmaWVsZCwgXCJrZXlcIikpIHtcclxuICAgICAgICAgIGlmIChmaWVsZC5rZXkgPT09IFwiYWFkaGFhcl9udW1iZXJcIikge1xyXG4gICAgICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwiYWFkaGFhcl9udW1iZXJcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZmllbGQua2V5ID09PSBcImNvbnRhY3RfbnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgZmllbGQgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidHlwZVwiLCBcInBob25lXCIpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBcInBob25lXCIgfHwgZmllbGQudHlwZSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gdGhpcy5zZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgICAgIFwiY291bnRyeUNvZGVcIixcclxuICAgICAgICAgICAgICBcIis5MVwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKFxyXG4gICAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgICAgXCJwaG9uZU1hc2tBZnRlckNvdW50cnlDb2RlXCIsXHJcbiAgICAgICAgICAgICAgXCIjIyMjLSMjIyMjI1wiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKFxyXG4gICAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgICAgXCJyZW1vdmVDb3VudHJ5Q29kZUZyb21WYWx1ZVwiLFxyXG4gICAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgICBcImRlY2ltYWxcIixcclxuICAgICAgICAgICAgICBcIm5ldmVyXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgICBcInByZWZpeFwiLFxyXG4gICAgICAgICAgICAgIFwiXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgICBcInBvc3RmaXhcIixcclxuICAgICAgICAgICAgICBcIlwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKFxyXG4gICAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgICAgXCJtaW5cIixcclxuICAgICAgICAgICAgICAtSW5maW5pdHlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgICBcIm1heFwiLFxyXG4gICAgICAgICAgICAgIEluZmluaXR5XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKFxyXG4gICAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgICAgXCJwcmVjaXNpb25cIixcclxuICAgICAgICAgICAgICAyXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJoaWRkZW5cIiwgZmFsc2UpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZUFwaUNhbGwgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgaWYgKCFoYXNLZXkoZmllbGQucHJvcGVydGllcywgXCJzaGFwZVwiKSkge1xyXG4gICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyxcclxuICAgICAgICAgICAgXCJzaGFwZVwiLFxyXG4gICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWhhc0tleShmaWVsZCwgXCJzaG93TG9hZGVyXCIpKSB7XHJcbiAgICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJzaG93TG9hZGVyXCIsIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFoYXNLZXkoZmllbGQucHJvcGVydGllcywgXCJzaXplXCIpKSB7XHJcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gdGhpcy5zZXRGaWVsZEtleVZhbHVlKFxyXG4gICAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgICBcInNpemVcIixcclxuICAgICAgICAgICAgXCJtXCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaGFzS2V5KGZpZWxkLCBcImFwaVwiKSkge1xyXG4gICAgICAgICAgZmllbGQgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwiYXBpXCIsIHt9KTtcclxuXHJcbiAgICAgICAgICBmaWVsZC5hcGkgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLmFwaSwgXCJ1cmxcIiwgXCJcIik7XHJcbiAgICAgICAgICBmaWVsZC5hcGkgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLmFwaSwgXCJyZXF1ZXN0XCIsIFwiXCIpO1xyXG4gICAgICAgICAgZmllbGQuYXBpID0gdGhpcy5zZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShmaWVsZC5hcGksIFwicmVzcG9uc2VcIiwgXCJcIik7XHJcbiAgICAgICAgICBmaWVsZC5hcGkgPSB0aGlzLnNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLmFwaSwgXCJzdGF0dXNcIiwgXCJcIik7XHJcblxyXG4gICAgICAgICAgZmllbGQuYXBpLnN0YXR1cyA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoXHJcbiAgICAgICAgICAgIGZpZWxkLmFwaS5zdGF0dXMsXHJcbiAgICAgICAgICAgIFwidmFsdWVcIixcclxuICAgICAgICAgICAgXCJkZWZhdWx0XCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBmaWVsZC5hcGkuc3RhdHVzID0gdGhpcy5zZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgZmllbGQuYXBpLnN0YXR1cyxcclxuICAgICAgICAgICAgXCJsYWJlbHNcIixcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6IFwiQ2FsbCBBUElcIixcclxuICAgICAgICAgICAgICBsb2FkaW5nOiBcIkNhbGwgQVBJXCIsXHJcbiAgICAgICAgICAgICAgc3VjY2VzczogXCJBUEkgU3VjY2Vzc1wiLFxyXG4gICAgICAgICAgICAgIGZhaWxlZDogXCJBUEkgRmFpbGVkXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVTZWFyY2hUZXh0ID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAgIGlmIChoYXNLZXkoZmllbGQsIFwidHlwZVwiKSkge1xyXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IFwic2VhcmNoLXRleHRcIikge1xyXG4gICAgICAgICAgICBmaWVsZCA9IHRoaXMuc2V0RmllbGRLZXlWYWx1ZShcclxuICAgICAgICAgICAgICBmaWVsZCxcclxuICAgICAgICAgICAgICBcInR5cGVcIixcclxuICAgICAgICAgICAgICBcImRyb3Bkb3duLXdpdGgtc2VhcmNoXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmaWVsZDtcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlVGV4dCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcclxuICAgICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcclxuICAgICAgICBjYXNlIFwidGl0bGVcIjpcclxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlVGl0bGUoZmllbGQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcInJhZGlvXCI6XHJcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVJhZGlvKGZpZWxkKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJvdHBcIjpcclxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlT3RwKGZpZWxkKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJkYXRlXCI6XHJcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZURhdGUoZmllbGQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVOdW1iZXIoZmllbGQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImFwaS1jYWxsXCI6XHJcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUFwaUNhbGwoZmllbGQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcInNlYXJjaC10ZXh0XCI6XHJcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVNlYXJjaFRleHQoZmllbGQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGdldENvbm5lY3RlZEVsZW1lbnRLZXlWYWx1ZU9iamVjdCA9IChrZXk6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIGNvbnN0IG9iamVjdCA9IHtcclxuICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICBjb25kaXRpb25zOiB7IGZvcm11bGE6IFwiXCIsIHJ1bGVzOiBbXSB9LFxyXG4gICAgICAgIGFjdGlvbnM6IHsgc3VjY2VzczogW10sIGZhaWx1cmU6IFtdIH1cclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIG9iamVjdDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZm9ybWF0RmllbGRLZXlzID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICBpZiAoaGFzS2V5KGZpZWxkLCBcImNvbm5lY3RlZFRvXCIpKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZFtcImNvbm5lY3RlZFRvXCJdID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICBmaWVsZFtcImNvbm5lY3RlZEVsZW1lbnRzXCJdID0gW1xyXG4gICAgICAgICAgICBnZXRDb25uZWN0ZWRFbGVtZW50S2V5VmFsdWVPYmplY3QoZmllbGRbXCJjb25uZWN0ZWRUb1wiXSlcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpZWxkW1wiY29ubmVjdGVkVG9cIl0gPSBmaWVsZFtcImNvbm5lY3RlZFRvXCJdLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldENvbm5lY3RlZEVsZW1lbnRLZXlWYWx1ZU9iamVjdChrZXkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBmaWVsZFtcImNvbm5lY3RlZEVsZW1lbnRzXCJdID0gZmllbGRbXCJjb25uZWN0ZWRUb1wiXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZW1vdmVGaWVsZEtleShmaWVsZCwgXCJjb25uZWN0ZWRUb1wiKTtcclxuXHJcbiAgICAgIGlmIChoYXNLZXkoZmllbGQsIFwiY29ubmVjdGVkVG9QYXJlbnRcIikpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkW1wiY29ubmVjdGVkVG9QYXJlbnRcIl0gPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIGZpZWxkW1wiY29ubmVjdGVkUGFyZW50RmllbGRzXCJdID0gW1xyXG4gICAgICAgICAgICBnZXRDb25uZWN0ZWRFbGVtZW50S2V5VmFsdWVPYmplY3QoZmllbGRbXCJjb25uZWN0ZWRUb1BhcmVudFwiXSlcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpZWxkW1wiY29ubmVjdGVkUGFyZW50RmllbGRzXCJdID0gZ2V0Q29ubmVjdGVkRWxlbWVudEtleVZhbHVlT2JqZWN0KFxyXG4gICAgICAgICAgICBmaWVsZFtcImNvbm5lY3RlZFRvUGFyZW50XCJdXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbW92ZUZpZWxkS2V5KGZpZWxkLCBcImNvbm5lY3RlZFRvUGFyZW50XCIpO1xyXG5cclxuICAgICAgdGhpcy5yZW1vdmVGaWVsZEtleShmaWVsZCwgXCJzaWRlRWZmZWN0XCIpO1xyXG5cclxuICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBnZXRDb25uZWN0ZWRFbGVtZW50RmllbGRNYXBwaW5nID0gKFxyXG4gICAgICBmaWVsZDogYW55LFxyXG4gICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmc6IGFueVxyXG4gICAgKTogYW55ID0+IHtcclxuICAgICAgY29uc3QgZ2V0Q29ubmVjdGVkRWxlbWVudENoaWxkRmllbGRNYXBwaW5nID0gKFxyXG4gICAgICAgIGZpZWxkOiBhbnksXHJcbiAgICAgICAgY29ubmVjdGVkRmllbGRNYXBwaW5nOiBhbnlcclxuICAgICAgKTogYW55ID0+IHtcclxuICAgICAgICBpZiAoaGFzS2V5KGZpZWxkLCBcImNvbm5lY3RlZEVsZW1lbnRzXCIpKSB7XHJcbiAgICAgICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJjaGlsZFwiXVtmaWVsZC5rZXldID0gZmllbGQuY29ubmVjdGVkRWxlbWVudHM7XHJcbiAgICAgICAgfSBlbHNlIGlmIChoYXNLZXkoY29ubmVjdGVkRmllbGRNYXBwaW5nW1wiY2hpbGRcIl0sIGZpZWxkLmtleSkpIHtcclxuICAgICAgICAgIGZpZWxkW1wiY29ubmVjdGVkRWxlbWVudHNcIl0gPVxyXG4gICAgICAgICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJjaGlsZFwiXVtmaWVsZC5rZXldO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHsgZmllbGQ6IGZpZWxkLCBjb25uZWN0ZWRGaWVsZE1hcHBpbmc6IGNvbm5lY3RlZEZpZWxkTWFwcGluZyB9O1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc3QgZ2V0Q29ubmVjdGVkRWxlbWVudFBhcmVudEZpZWxkTWFwcGluZyA9IChcclxuICAgICAgICBmaWVsZDogYW55LFxyXG4gICAgICAgIGNvbm5lY3RlZEZpZWxkTWFwcGluZzogYW55XHJcbiAgICAgICk6IGFueSA9PiB7XHJcbiAgICAgICAgaWYgKGhhc0tleShjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJjaGlsZFwiXSwgZmllbGQua2V5KSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgY29ubmVjdGVkUGFyZW50S2V5IG9mIGNvbm5lY3RlZEZpZWxkTWFwcGluZ1tcImNoaWxkXCJdW1xyXG4gICAgICAgICAgICBmaWVsZC5rZXlcclxuICAgICAgICAgIF0pIHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGhhc0tleShjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJwYXJlbnRcIl0sIGNvbm5lY3RlZFBhcmVudEtleVtcImtleVwiXSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29ubmVjdGVkRmllbGRNYXBwaW5nW1wicGFyZW50XCJdW2Nvbm5lY3RlZFBhcmVudEtleVtcImtleVwiXV0ucHVzaChcclxuICAgICAgICAgICAgICAgIGZpZWxkLmtleVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29ubmVjdGVkRmllbGRNYXBwaW5nW1wicGFyZW50XCJdW2Nvbm5lY3RlZFBhcmVudEtleVtcImtleVwiXV0gPSBbXHJcbiAgICAgICAgICAgICAgICBmaWVsZC5rZXlcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geyBmaWVsZDogZmllbGQsIGNvbm5lY3RlZEZpZWxkTWFwcGluZzogY29ubmVjdGVkRmllbGRNYXBwaW5nIH07XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBjb25uZWN0ZWRDaGlsZEZpZWxkTWFwcGluZyA9IGdldENvbm5lY3RlZEVsZW1lbnRDaGlsZEZpZWxkTWFwcGluZyhcclxuICAgICAgICBmaWVsZCxcclxuICAgICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmdcclxuICAgICAgKTtcclxuICAgICAgZmllbGQgPSBjb25uZWN0ZWRDaGlsZEZpZWxkTWFwcGluZ1tcImZpZWxkXCJdO1xyXG4gICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmcgPVxyXG4gICAgICAgIGNvbm5lY3RlZENoaWxkRmllbGRNYXBwaW5nW1wiY29ubmVjdGVkRmllbGRNYXBwaW5nXCJdO1xyXG5cclxuICAgICAgY29uc3QgY29ubmVjdGVkUGFyZW50RmllbGRNYXBwaW5nID0gZ2V0Q29ubmVjdGVkRWxlbWVudFBhcmVudEZpZWxkTWFwcGluZyhcclxuICAgICAgICBmaWVsZCxcclxuICAgICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmdcclxuICAgICAgKTtcclxuICAgICAgZmllbGQgPSBjb25uZWN0ZWRQYXJlbnRGaWVsZE1hcHBpbmdbXCJmaWVsZFwiXTtcclxuICAgICAgY29ubmVjdGVkRmllbGRNYXBwaW5nID1cclxuICAgICAgICBjb25uZWN0ZWRQYXJlbnRGaWVsZE1hcHBpbmdbXCJjb25uZWN0ZWRGaWVsZE1hcHBpbmdcIl07XHJcblxyXG4gICAgICByZXR1cm4gY29ubmVjdGVkRmllbGRNYXBwaW5nO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVDb25uZWN0ZWRFbGVtZW50c0tleVZhbHVlID0gKFxyXG4gICAgICBmaWVsZDogYW55LFxyXG4gICAgICBjb25uZWN0ZWRGaWVsZE1hcHBpbmc6IGFueVxyXG4gICAgKTogYW55ID0+IHtcclxuICAgICAgaWYgKGhhc0tleShjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJjaGlsZFwiXSwgZmllbGQua2V5KSkge1xyXG4gICAgICAgIGZpZWxkW1wiY29ubmVjdGVkRWxlbWVudHNcIl0gPSBjb25uZWN0ZWRGaWVsZE1hcHBpbmdbXCJjaGlsZFwiXVtmaWVsZC5rZXldO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaGFzS2V5KGNvbm5lY3RlZEZpZWxkTWFwcGluZ1tcInBhcmVudFwiXSwgZmllbGQua2V5KSkge1xyXG4gICAgICAgIGZpZWxkW1wiY29ubmVjdGVkUGFyZW50RmllbGRzXCJdID1cclxuICAgICAgICAgIGNvbm5lY3RlZEZpZWxkTWFwcGluZ1tcInBhcmVudFwiXVtmaWVsZC5rZXldO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkVmFsaWRhdG9yQ29uZmlnID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQudHlwZSAhPT0gXCJ0aXRsZVwiKSB7XHJcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IGhhc0tleShmaWVsZCwgXCJ2YWxpZGF0b3JzXCIpID8gZmllbGQudmFsaWRhdG9ycyA6IHt9O1xyXG5cclxuICAgICAgICBmaWVsZCA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoZmllbGQsIFwidmFsaWRhdG9yc1wiLCB7fSk7XHJcbiAgICAgICAgZmllbGQgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidmFsaWRhdG9yc1wiLCB7XHJcbiAgICAgICAgICAuLi5maWVsZFtcInZhbGlkYXRvcnNcIl0sXHJcbiAgICAgICAgICBtaW46IGhhc0tleSh2YWxpZGF0b3JzLCBcIm1pblwiKVxyXG4gICAgICAgICAgICA/IGlzTm90RW1wdHkodmFsaWRhdG9ycy5taW4pXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodmFsaWRhdG9ycy5taW4pXHJcbiAgICAgICAgICAgICAgOiBudWxsXHJcbiAgICAgICAgICAgIDogaGFzS2V5KGZpZWxkLCBcIm1pblwiKVxyXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5taW4pXHJcbiAgICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICAgIG1heDogaGFzS2V5KHZhbGlkYXRvcnMsIFwibWF4XCIpXHJcbiAgICAgICAgICAgID8gaXNOb3RFbXB0eSh2YWxpZGF0b3JzLm1heClcclxuICAgICAgICAgICAgICA/IE51bWJlcih2YWxpZGF0b3JzLm1heClcclxuICAgICAgICAgICAgICA6IG51bGxcclxuICAgICAgICAgICAgOiBoYXNLZXkoZmllbGQsIFwibWF4XCIpXHJcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLm1heClcclxuICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgICAgcmVxdWlyZWQ6IGhhc0tleSh2YWxpZGF0b3JzLCBcInJlcXVpcmVkXCIpXHJcbiAgICAgICAgICAgID8gQm9vbGVhbih2YWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgICAgICAgICA6IGhhc0tleShmaWVsZCwgXCJyZXF1aXJlZFwiKVxyXG4gICAgICAgICAgICA/IEJvb2xlYW4oZmllbGQucmVxdWlyZWQpXHJcbiAgICAgICAgICAgIDogZmFsc2UsXHJcbiAgICAgICAgICBtaW5MZW5ndGg6IGhhc0tleSh2YWxpZGF0b3JzLCBcIm1pbkxlbmd0aFwiKVxyXG4gICAgICAgICAgICA/IGlzTm90RW1wdHkodmFsaWRhdG9ycy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodmFsaWRhdG9ycy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgICAgOiBudWxsXHJcbiAgICAgICAgICAgIDogaGFzS2V5KGZpZWxkLCBcIm1pbkxlbmd0aFwiKVxyXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICAgIG1heExlbmd0aDogaGFzS2V5KHZhbGlkYXRvcnMsIFwibWF4TGVuZ3RoXCIpXHJcbiAgICAgICAgICAgID8gaXNOb3RFbXB0eSh2YWxpZGF0b3JzLm1heExlbmd0aClcclxuICAgICAgICAgICAgICA/IE51bWJlcih2YWxpZGF0b3JzLm1heExlbmd0aClcclxuICAgICAgICAgICAgICA6IG51bGxcclxuICAgICAgICAgICAgOiBoYXNLZXkoZmllbGQsIFwibGVuZ3RoXCIpXHJcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLmxlbmd0aClcclxuICAgICAgICAgICAgOiBoYXNLZXkoZmllbGQsIFwibWF4TGVuZ3RoXCIpXHJcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLm1heExlbmd0aClcclxuICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgICAgcGF0dGVybjogaGFzS2V5KHZhbGlkYXRvcnMsIFwicGF0dGVyblwiKVxyXG4gICAgICAgICAgICA/IGlzTm90RW1wdHkodmFsaWRhdG9ycy5wYXR0ZXJuKVxyXG4gICAgICAgICAgICAgID8gdmFsaWRhdG9ycy5wYXR0ZXJuXHJcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgOiBoYXNLZXkoZmllbGQsIFwicGF0dGVyblwiKVxyXG4gICAgICAgICAgICA/IHsga2V5OiBcIkNVU1RPTVwiLCBwYXR0ZXJuOiBTdHJpbmcoZmllbGQucGF0dGVybikgfVxyXG4gICAgICAgICAgICA6IGhhc0tleShmaWVsZCwgXCJyZWdleFwiKVxyXG4gICAgICAgICAgICA/IHsga2V5OiBcIkNVU1RPTVwiLCBwYXR0ZXJuOiBTdHJpbmcoZmllbGQucmVnZXgpIH1cclxuICAgICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZGVsZXRlIGZpZWxkLm1pbjtcclxuICAgICAgICBkZWxldGUgZmllbGQubWF4O1xyXG4gICAgICAgIGRlbGV0ZSBmaWVsZC5yZXF1aXJlZDtcclxuICAgICAgICBkZWxldGUgZmllbGQubWluTGVuZ3RoO1xyXG4gICAgICAgIGRlbGV0ZSBmaWVsZC5sZW5ndGg7XHJcbiAgICAgICAgZGVsZXRlIGZpZWxkLm1heExlbmd0aDtcclxuICAgICAgICBkZWxldGUgZmllbGQucGF0dGVybjtcclxuICAgICAgICBkZWxldGUgZmllbGQucmVnZXg7XHJcblxyXG4gICAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcInRleHRcIjpcclxuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluO1xyXG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXg7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXNFbXB0eShmaWVsZC52YWxpZGF0b3JzPy5taW4pKSB7XHJcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0VtcHR5KGZpZWxkLnZhbGlkYXRvcnM/Lm1heCkpIHtcclxuICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzRW1wdHkoZmllbGQudmFsaWRhdG9ycz8ubWluTGVuZ3RoKSkge1xyXG4gICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluTGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNFbXB0eShmaWVsZC52YWxpZGF0b3JzPy5tYXhMZW5ndGgpKSB7XHJcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0VtcHR5KGZpZWxkLnZhbGlkYXRvcnM/LnBhdHRlcm4pKSB7XHJcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5wYXR0ZXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVGaWVsZERlZmF1bHRWYWx1ZUNvbmZpZyA9IChmaWVsZDogYW55KTogYW55ID0+IHtcclxuICAgICAgaWYgKGZpZWxkLnR5cGUgIT09IFwidGl0bGVcIikge1xyXG4gICAgICAgIGlmIChoYXNLZXkoZmllbGQsIFwiZGVmYXVsdFZhbHVlXCIpKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICAgICAgfSBlbHNlIGlmIChoYXNLZXkoZmllbGQsIFwiZGVmYXVsdFwiKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZpZWxkO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaGFzS2V5KGZpZWxkLCBcImRlZmF1bHRWYWxcIikpIHtcclxuICAgICAgICAgICAgLy8gQ3VycmVudGx5IGJlbG93IGxpbmUgaXMgY29tbWVudGVkIGJlY2F1c2UgaXQgY2F1c2VkIGlzc3VlcyBpbiBzZXR0aW5nIERlZmF1bHQgVmFsdWUuXHJcbiAgICAgICAgICAgIC8vIGZpZWxkW1wiZGVmYXVsdFZhbHVlXCJdID0gZmllbGRbXCJkZWZhdWx0VmFsXCJdO1xyXG4gICAgICAgICAgICAvLyBkZWxldGUgZmllbGRbXCJkZWZhdWx0VmFsXCJdO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFRPRE86IENvbmRpdGlvbiBmb3IgYWxsX2Zvcm1zX2RhdGEgaXMgbm90IGNvbnNpZGVyZWQgeWV0LlxyXG4gICAgICAgICAgaWYgKGZpZWxkLmF1dG9Qb3B1bGF0ZUZyb21TdW1tYXJ5RGF0YSkge1xyXG4gICAgICAgICAgICBmaWVsZFtcImRlZmF1bHRWYWx1ZVwiXSA9IHtcclxuICAgICAgICAgICAgICBpc19mb3VuZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXHJcbiAgICAgICAgICAgICAgc291cmNlczogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBzb3VyY2U6IFwic3VtbWFyeV9kYXRhXCIsXHJcbiAgICAgICAgICAgICAgICAgIHN1bW1hcnlfZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGAkLiR7ZmllbGQua2V5fWAsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcnVsZXM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCIxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpc19ub3RfZW1wdHlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19ub3RfZW1wdHk6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXRfZGVmYXVsdF92YWx1ZV9mb3VuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2RlZmF1bHRfdmFsdWVfZm91bmQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJlbmFibGVfZmllbGRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IFwiMSBPUiBOT1QoMSlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfZmllbGQ6IHsgdmFsdWU6IHRydWUgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNLZXkoZmllbGQsIFwiYXV0b2ZpbGxcIikpIHtcclxuICAgICAgICAgICAgaWYgKGhhc0tleShmaWVsZC5hdXRvZmlsbCwgXCJ0eXBlXCIpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGZpZWxkLmF1dG9maWxsLnR5cGUgPT09IFwic3RvcmFnZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBmaWVsZFtcImRlZmF1bHRWYWx1ZVwiXSA9IHtcclxuICAgICAgICAgICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcclxuICAgICAgICAgICAgICAgICAgc291cmNlczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogXCJicm93c2VyX3N0b3JhZ2VcIixcclxuICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXJfc3RvcmFnZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBgJC4ke2ZpZWxkLmtleX1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZXM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIjFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpc19ub3RfZW1wdHlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfbm90X2VtcHR5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInNldF9kZWZhdWx0X3ZhbHVlX2ZvdW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9kZWZhdWx0X3ZhbHVlX2ZvdW5kOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJlbmFibGVfZmllbGRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcIjEgT1IgTk9UKDEpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9maWVsZDogeyB2YWx1ZTogdHJ1ZSB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuYXV0b2ZpbGwudHlwZSA9PT0gXCJjb25maWdcIikge1xyXG4gICAgICAgICAgICAgICAgZmllbGRbXCJkZWZhdWx0VmFsdWVcIl0gPSB7XHJcbiAgICAgICAgICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgIHNvdXJjZXM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IFwiZmllbGRfY29uZmlnXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZF9jb25maWc6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogYCQuJHtmaWVsZC5rZXl9YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCIxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaXNfbm90X2VtcHR5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX25vdF9lbXB0eToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXRfZGVmYXVsdF92YWx1ZV9mb3VuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IFwiMVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZGVmYXVsdF92YWx1ZV9mb3VuZDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiZW5hYmxlX2ZpZWxkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxIE9SIE5PVCgxKVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfZmllbGQ6IHsgdmFsdWU6IHRydWUgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpZWxkW1wiZGVmYXVsdFZhbHVlXCJdID0ge1xyXG4gICAgICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcclxuICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcclxuICAgICAgICAgICAgICBzb3VyY2VzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogXCJmb3JtX2RhdGFcIixcclxuICAgICAgICAgICAgICAgICAgZm9ybV9kYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogYCQuJHtmaWVsZC5rZXl9YCxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBydWxlczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIjFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImlzX25vdF9lbXB0eVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzX25vdF9lbXB0eToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInNldF9kZWZhdWx0X3ZhbHVlX2ZvdW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcIjFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZGVmYXVsdF92YWx1ZV9mb3VuZDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImVuYWJsZV9maWVsZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxIE9SIE5PVCgxKVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9maWVsZDogeyB2YWx1ZTogdHJ1ZSB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZWxldGUgZmllbGRbXCJkZWZhdWx0VmFsXCJdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkTWVzc2FnZXMgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC50eXBlICE9PSBcInRpdGxlXCIpIHtcclxuICAgICAgICBmaWVsZCA9IHRoaXMuc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoZmllbGQsIFwibWVzc2FnZXNcIiwgW10pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkUmVzZXRCdXR0b24gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSBcInRpdGxlXCIpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBoYXNLZXkoZmllbGQsIFwiYWN0aW9uXCIpICYmXHJcbiAgICAgICAgICBmaWVsZC5hY3Rpb24gPT09IFwicmVzZXRcIiAmJlxyXG4gICAgICAgICAgaGFzS2V5KGZpZWxkLCBcImZpZWxkc1wiKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZmllbGQgPSB0aGlzLnNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwicmVzZXRcIiwge1xyXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkc1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmllbGQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNldEZvcm1GaWVsZHMgPSAoZm9ybUNvbmZpZzogYW55LCBmaWVsZHM6IGFueVtdKTogYW55ID0+IHtcclxuICAgICAgaWYgKGhhc0tleShmb3JtQ29uZmlnLCBcIm11bHRpRm9ybVwiKSkge1xyXG4gICAgICAgIGZvcm1Db25maWcubXVsdGlGb3JtW1wiZmllbGRzXCJdID0gZmllbGRzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvcm1Db25maWdbXCJmaWVsZHNcIl0gPSBmaWVsZHM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmb3JtQ29uZmlnO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzZXRGb3JtRmllbGRHcm91cHMgPSAoZm9ybUNvbmZpZzogYW55LCBncm91cHM6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIGZvcm1Db25maWdbXCJmaWVsZEdyb3Vwc1wiXSA9IGdyb3VwcztcclxuXHJcbiAgICAgIHJldHVybiBmb3JtQ29uZmlnO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVGb3JtRmllbGRHcm91cHMgPSAoZmllbGRHcm91cHM6IGFueSwgZmllbGQ6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIGlmIChoYXNLZXkoZmllbGQsIFwiZ3JvdXBLZXlcIikpIHtcclxuICAgICAgICBpZiAoaGFzS2V5KGZpZWxkR3JvdXBzLCBmaWVsZC5ncm91cEtleSkpIHtcclxuICAgICAgICAgIGZpZWxkR3JvdXBzW2ZpZWxkLmdyb3VwS2V5XS5wdXNoKGZpZWxkLmtleSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpZWxkR3JvdXBzW2ZpZWxkLmdyb3VwS2V5XSA9IFtmaWVsZC5rZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGZpZWxkR3JvdXBzO1xyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgY29ubmVjdGVkRmllbGRNYXBwaW5nOiBhbnkgPSB7XHJcbiAgICAgIHBhcmVudDoge30sXHJcbiAgICAgIGNoaWxkOiB7fVxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgZmllbGRzOiBhbnlbXSA9IHRoaXMuZ2V0Rm9ybUZpZWxkcyhmb3JtQ29uZmlnKTtcclxuXHJcbiAgICBsZXQgZmllbGRHcm91cHM6IGFueSA9IHt9O1xyXG5cclxuICAgIGZvciAobGV0IGZpZWxkIG9mIGZpZWxkcykge1xyXG4gICAgICBmaWVsZCA9IHVwZGF0ZU9uRmllbGRUeXBlKGZpZWxkKTtcclxuXHJcbiAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRLZXlzKGZpZWxkKTtcclxuXHJcbiAgICAgIC8vIGNvbm5lY3RlZEZpZWxkTWFwcGluZyA9IGdldENvbm5lY3RlZEVsZW1lbnRGaWVsZE1hcHBpbmcoXHJcbiAgICAgIC8vICAgZmllbGQsXHJcbiAgICAgIC8vICAgY29ubmVjdGVkRmllbGRNYXBwaW5nXHJcbiAgICAgIC8vICk7XHJcbiAgICAgIC8vIGZpZWxkID0gdXBkYXRlQ29ubmVjdGVkRWxlbWVudHNLZXlWYWx1ZShmaWVsZCwgY29ubmVjdGVkRmllbGRNYXBwaW5nKTtcclxuICAgICAgZmllbGRHcm91cHMgPSB1cGRhdGVGb3JtRmllbGRHcm91cHMoZmllbGRHcm91cHMsIGZpZWxkKTtcclxuXHJcbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGREZWZhdWx0VmFsdWVDb25maWcoZmllbGQpO1xyXG5cclxuICAgICAgZmllbGQgPSB1cGRhdGVGaWVsZFZhbGlkYXRvckNvbmZpZyhmaWVsZCk7XHJcblxyXG4gICAgICBmaWVsZCA9IHVwZGF0ZUZpZWxkUmVzZXRCdXR0b24oZmllbGQpO1xyXG5cclxuICAgICAgZmllbGQgPSB1cGRhdGVGaWVsZE1lc3NhZ2VzKGZpZWxkKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3JtQ29uZmlnID0gc2V0Rm9ybUZpZWxkR3JvdXBzKGZvcm1Db25maWcsIGZpZWxkR3JvdXBzKTtcclxuXHJcbiAgICBmb3JtQ29uZmlnID0gc2V0Rm9ybUZpZWxkcyhmb3JtQ29uZmlnLCBmaWVsZHMpO1xyXG5cclxuICAgIHJldHVybiBmb3JtQ29uZmlnO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -88,12 +88,28 @@ export class KwikIDRendererService {
88
88
  }
89
89
  return formsList;
90
90
  }
91
+ filterAllFormsData(allFormsData, formsList) {
92
+ let currentUserFormAllFormsData = {};
93
+ for (let form of formsList) {
94
+ if (hasKey(allFormsData, form.key)) {
95
+ currentUserFormAllFormsData = Object.assign(Object.assign({}, currentUserFormAllFormsData), { [form.key]: allFormsData[form.key] });
96
+ }
97
+ }
98
+ return currentUserFormAllFormsData;
99
+ }
91
100
  updateFormsList() {
92
101
  let formsList = this.formsList;
93
102
  let formsListCompleted;
94
103
  let activeFormConfig;
95
104
  formsList = this.assignSequenceNoToForm(formsList);
96
- formsListCompleted = this.findCompletedFormsList(this.allFormsData);
105
+ /**
106
+ * Below code identifies the allFormsData required for the current User Form.
107
+ * Why? Because allFormsData will actually contain the whole journey's all
108
+ * possible User Form steps. So, it is important to set the form data which
109
+ * this particular User Form only has to LOCAL METHOD Variable.
110
+ */
111
+ const currentUserFormAllFormsData = this.filterAllFormsData(this.allFormsData, formsList);
112
+ formsListCompleted = this.findCompletedFormsList(currentUserFormAllFormsData);
97
113
  formsList = this.markFormInFormsListAsCompleted(formsList, formsListCompleted);
98
114
  formsList = this.markFormInFormsListAsDisabled(formsList, formsListCompleted);
99
115
  if (formsList.length !== formsListCompleted.length) {
@@ -112,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
112
128
  providedIn: "root"
113
129
  }]
114
130
  }], ctorParameters: function () { return []; } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL3JlbmRlcmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUszQyxNQUFNLE9BQU8scUJBQXFCO0lBb0NoQztRQW5DQSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQWVyQixpQkFBWSxHQUFRLEVBQUUsQ0FBQztJQW9CUixDQUFDO0lBbENoQixlQUFlLENBQUMsWUFBcUI7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUdELFlBQVksQ0FBQyxTQUFnQjtRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBR0QscUJBQXFCLENBQUMsa0JBQXlCO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztJQUMvQyxDQUFDO0lBR0QsZUFBZSxDQUFDLFlBQW1CO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFHRCxtQkFBbUIsQ0FBQyxnQkFBcUI7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzNDLENBQUM7SUFHRCxtQkFBbUIsQ0FBQyxnQkFBdUI7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzNDLENBQUM7SUFHRCxpQkFBaUIsQ0FBQyxjQUFtQjtRQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBSUss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bkIsS0FBSyxJQUFJLElBQUksSUFBSSxTQUFTLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLEVBQUUsQ0FBQztTQUNoQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxTQUFTLEdBQVUsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxJQUFJLGtCQUE0QixDQUFDO1FBQ2pDLElBQUksZ0JBQXFCLENBQUM7UUFFMUIsU0FBUyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVuRCxrQkFBa0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXBFLFNBQVMsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQzdDLFNBQVMsRUFDVCxrQkFBa0IsQ0FDbkIsQ0FBQztRQUVGLFNBQVMsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQzVDLFNBQVMsRUFDVCxrQkFBa0IsQ0FDbkIsQ0FBQztRQUVGLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUU7WUFDbEQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXhELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNqRCxDQUFDOztzSUEzSVUscUJBQXFCOzBJQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IHNldFZhbHVlVG9PYmplY3QgfSBmcm9tIFwiLi9mb3JtLXZpZXcvaGVscGVycy9mb3JtLXZpZXcuY29tbW9uLmhlbHBlclwiO1xyXG5pbXBvcnQgeyBoYXNLZXkgfSBmcm9tIFwiLi9yZW5kZXJlci5oZWxwZXJcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3dpa0lEUmVuZGVyZXJTZXJ2aWNlIHtcclxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcclxuICBzZXRJc01vYmlsZVZpZXcoaXNNb2JpbGVWaWV3OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmlzTW9iaWxlVmlldyA9IGlzTW9iaWxlVmlldztcclxuICB9XHJcblxyXG4gIGZvcm1zTGlzdDogYW55W107XHJcbiAgc2V0Rm9ybXNMaXN0KGZvcm1zTGlzdDogYW55W10pIHtcclxuICAgIHRoaXMuZm9ybXNMaXN0ID0gZm9ybXNMaXN0O1xyXG4gIH1cclxuXHJcbiAgZm9ybXNMaXN0Q29tcGxldGVkOiBzdHJpbmdbXTtcclxuICBzZXRGb3Jtc0xpc3RDb21wbGV0ZWQoZm9ybXNMaXN0Q29tcGxldGVkOiBhbnlbXSkge1xyXG4gICAgdGhpcy5mb3Jtc0xpc3RDb21wbGV0ZWQgPSBmb3Jtc0xpc3RDb21wbGV0ZWQ7XHJcbiAgfVxyXG5cclxuICBhbGxGb3Jtc0RhdGE6IGFueSA9IHt9O1xyXG4gIHNldEFsbEZvcm1zRGF0YShhbGxGb3Jtc0RhdGE6IGFueVtdKSB7XHJcbiAgICB0aGlzLmFsbEZvcm1zRGF0YSA9IGFsbEZvcm1zRGF0YTtcclxuICB9XHJcblxyXG4gIGFjdGl2ZUZvcm1Db25maWc6IGFueTtcclxuICBzZXRBY3RpdmVGb3JtQ29uZmlnKGFjdGl2ZUZvcm1Db25maWc6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVGb3JtQ29uZmlnID0gYWN0aXZlRm9ybUNvbmZpZztcclxuICB9XHJcblxyXG4gIGFjdGl2ZUZvcm1GaWVsZHM6IGFueVtdO1xyXG4gIHNldEFjdGl2ZUZvcm1GaWVsZHMoYWN0aXZlRm9ybUZpZWxkczogYW55W10pIHtcclxuICAgIHRoaXMuYWN0aXZlRm9ybUZpZWxkcyA9IGFjdGl2ZUZvcm1GaWVsZHM7XHJcbiAgfVxyXG5cclxuICBhY3RpdmVGb3JtRGF0YTogYW55O1xyXG4gIHNldEFjdGl2ZUZvcm1EYXRhKGFjdGl2ZUZvcm1EYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlRm9ybURhdGEgPSBhY3RpdmVGb3JtRGF0YTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgYXN5bmMgZmV0Y2hGb3JtQ29uZmlnKHVybDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgeyBtZXRob2Q6IFwiR0VUXCIgfSk7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBmaW5kQWN0aXZlRm9ybUNvbmZpZyhmb3Jtc0xpc3Q6IGFueVtdKTogYW55IHtcclxuICAgIGNvbnN0IGFjdGl2ZUZvcm1Db25maWcgPSBmb3Jtc0xpc3QuZmluZCgoZm9ybSkgPT4ge1xyXG4gICAgICByZXR1cm4gZm9ybS5zdGF0dXMgPT09IFwiZWRpdGFibGVcIiAmJiAhZm9ybS5kaXNhYmxlZDtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGFjdGl2ZUZvcm1Db25maWc7XHJcbiAgfVxyXG5cclxuICBmaW5kQ29tcGxldGVkRm9ybXNMaXN0KGFsbEZvcm1zRGF0YTogYW55KTogc3RyaW5nW10ge1xyXG4gICAgbGV0IGZvcm1zTGlzdENvbXBsZXRlZDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhhbGxGb3Jtc0RhdGEpLm1hcCgoZm9ybUtleSkgPT4ge1xyXG4gICAgICBmb3Jtc0xpc3RDb21wbGV0ZWQucHVzaChmb3JtS2V5KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3Jtc0xpc3RDb21wbGV0ZWQ7XHJcbiAgfVxyXG5cclxuICBtYXJrRm9ybUluRm9ybXNMaXN0QXNDb21wbGV0ZWQoXHJcbiAgICBmb3Jtc0xpc3Q6IGFueVtdLFxyXG4gICAgZm9ybXNMaXN0Q29tcGxldGVkOiBzdHJpbmdbXVxyXG4gICk6IGFueVtdIHtcclxuICAgIGZvciAobGV0IGZvcm0gb2YgZm9ybXNMaXN0KSB7XHJcbiAgICAgIGlmIChmb3Jtc0xpc3RDb21wbGV0ZWQuaW5jbHVkZXMoZm9ybS5rZXkpKSB7XHJcbiAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3QoZm9ybSwgXCJzdGF0dXNcIiwgXCJjb21wbGV0ZWRcIik7XHJcbiAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3QoZm9ybSwgXCJkaXNhYmxlZFwiLCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybXNMaXN0O1xyXG4gIH1cclxuXHJcbiAgbWFya0Zvcm1JbkZvcm1zTGlzdEFzRGlzYWJsZWQoXHJcbiAgICBmb3Jtc0xpc3Q6IGFueVtdLFxyXG4gICAgZm9ybXNMaXN0Q29tcGxldGVkOiBzdHJpbmdbXVxyXG4gICk6IGFueVtdIHtcclxuICAgIGZvciAobGV0IGZvcm0gb2YgZm9ybXNMaXN0KSB7XHJcbiAgICAgIGlmIChmb3JtLnN0YXR1cyAhPT0gXCJjb21wbGV0ZWRcIikge1xyXG4gICAgICAgIGlmIChoYXNLZXkoZm9ybSwgXCJkZXBlbmRlbnRPblwiKSkge1xyXG4gICAgICAgICAgY29uc3QgaXNEZXBlbmRlbnQgPSBmb3JtLmRlcGVuZGVudE9uLmV2ZXJ5KChyOiBzdHJpbmcpID0+XHJcbiAgICAgICAgICAgIGZvcm1zTGlzdENvbXBsZXRlZC5pbmNsdWRlcyhyKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChpc0RlcGVuZGVudCkge1xyXG4gICAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcInN0YXR1c1wiLCBcImVkaXRhYmxlXCIpO1xyXG4gICAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcImRpc2FibGVkXCIsIGZhbHNlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwic3RhdHVzXCIsIFwibG9ja2VkXCIpO1xyXG4gICAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcImRpc2FibGVkXCIsIHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcImRlcGVuZGVudE9uXCIsIFtdKTtcclxuICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwic3RhdHVzXCIsIFwiZWRpdGFibGVcIik7XHJcbiAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcImRpc2FibGVkXCIsIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybXNMaXN0O1xyXG4gIH1cclxuXHJcbiAgYXNzaWduU2VxdWVuY2VOb1RvRm9ybShmb3Jtc0xpc3Q6IGFueVtdKTogYW55W10ge1xyXG4gICAgbGV0IHNlcXVlbmNlTm8gPSAxO1xyXG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcclxuICAgICAgZm9ybS5zZXF1ZW5jZU5vID0gc2VxdWVuY2VObysrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3Jtc0xpc3Q7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGb3Jtc0xpc3QoKSB7XHJcbiAgICBsZXQgZm9ybXNMaXN0OiBhbnlbXSA9IHRoaXMuZm9ybXNMaXN0O1xyXG4gICAgbGV0IGZvcm1zTGlzdENvbXBsZXRlZDogc3RyaW5nW107XHJcbiAgICBsZXQgYWN0aXZlRm9ybUNvbmZpZzogYW55O1xyXG5cclxuICAgIGZvcm1zTGlzdCA9IHRoaXMuYXNzaWduU2VxdWVuY2VOb1RvRm9ybShmb3Jtc0xpc3QpO1xyXG5cclxuICAgIGZvcm1zTGlzdENvbXBsZXRlZCA9IHRoaXMuZmluZENvbXBsZXRlZEZvcm1zTGlzdCh0aGlzLmFsbEZvcm1zRGF0YSk7XHJcblxyXG4gICAgZm9ybXNMaXN0ID0gdGhpcy5tYXJrRm9ybUluRm9ybXNMaXN0QXNDb21wbGV0ZWQoXHJcbiAgICAgIGZvcm1zTGlzdCxcclxuICAgICAgZm9ybXNMaXN0Q29tcGxldGVkXHJcbiAgICApO1xyXG5cclxuICAgIGZvcm1zTGlzdCA9IHRoaXMubWFya0Zvcm1JbkZvcm1zTGlzdEFzRGlzYWJsZWQoXHJcbiAgICAgIGZvcm1zTGlzdCxcclxuICAgICAgZm9ybXNMaXN0Q29tcGxldGVkXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChmb3Jtc0xpc3QubGVuZ3RoICE9PSBmb3Jtc0xpc3RDb21wbGV0ZWQubGVuZ3RoKSB7XHJcbiAgICAgIGFjdGl2ZUZvcm1Db25maWcgPSB0aGlzLmZpbmRBY3RpdmVGb3JtQ29uZmlnKGZvcm1zTGlzdCk7XHJcblxyXG4gICAgICB0aGlzLnNldEFjdGl2ZUZvcm1Db25maWcoYWN0aXZlRm9ybUNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRGb3Jtc0xpc3QoZm9ybXNMaXN0KTtcclxuICAgIHRoaXMuc2V0Rm9ybXNMaXN0Q29tcGxldGVkKGZvcm1zTGlzdENvbXBsZXRlZCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL3JlbmRlcmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUszQyxNQUFNLE9BQU8scUJBQXFCO0lBb0NoQztRQW5DQSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQWVyQixpQkFBWSxHQUFRLEVBQUUsQ0FBQztJQW9CUixDQUFDO0lBbENoQixlQUFlLENBQUMsWUFBcUI7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUdELFlBQVksQ0FBQyxTQUFnQjtRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBR0QscUJBQXFCLENBQUMsa0JBQXlCO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztJQUMvQyxDQUFDO0lBR0QsZUFBZSxDQUFDLFlBQW1CO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFHRCxtQkFBbUIsQ0FBQyxnQkFBcUI7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzNDLENBQUM7SUFHRCxtQkFBbUIsQ0FBQyxnQkFBdUI7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzNDLENBQUM7SUFHRCxpQkFBaUIsQ0FBQyxjQUFtQjtRQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBSUss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RUFBRTtZQUNsRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFeEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDNUM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2pELENBQUM7O3NJQXZLVSxxQkFBcUI7MElBQXJCLHFCQUFxQixjQUZwQixNQUFNOzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgc2V0VmFsdWVUb09iamVjdCB9IGZyb20gXCIuL2Zvcm0tdmlldy9oZWxwZXJzL2Zvcm0tdmlldy5jb21tb24uaGVscGVyXCI7XHJcbmltcG9ydCB7IGhhc0tleSB9IGZyb20gXCIuL3JlbmRlcmVyLmhlbHBlclwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLd2lrSURSZW5kZXJlclNlcnZpY2Uge1xyXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xyXG4gIHNldElzTW9iaWxlVmlldyhpc01vYmlsZVZpZXc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gaXNNb2JpbGVWaWV3O1xyXG4gIH1cclxuXHJcbiAgZm9ybXNMaXN0OiBhbnlbXTtcclxuICBzZXRGb3Jtc0xpc3QoZm9ybXNMaXN0OiBhbnlbXSkge1xyXG4gICAgdGhpcy5mb3Jtc0xpc3QgPSBmb3Jtc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdO1xyXG4gIHNldEZvcm1zTGlzdENvbXBsZXRlZChmb3Jtc0xpc3RDb21wbGV0ZWQ6IGFueVtdKSB7XHJcbiAgICB0aGlzLmZvcm1zTGlzdENvbXBsZXRlZCA9IGZvcm1zTGlzdENvbXBsZXRlZDtcclxuICB9XHJcblxyXG4gIGFsbEZvcm1zRGF0YTogYW55ID0ge307XHJcbiAgc2V0QWxsRm9ybXNEYXRhKGFsbEZvcm1zRGF0YTogYW55W10pIHtcclxuICAgIHRoaXMuYWxsRm9ybXNEYXRhID0gYWxsRm9ybXNEYXRhO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlRm9ybUNvbmZpZzogYW55O1xyXG4gIHNldEFjdGl2ZUZvcm1Db25maWcoYWN0aXZlRm9ybUNvbmZpZzogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWcgPSBhY3RpdmVGb3JtQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlRm9ybUZpZWxkczogYW55W107XHJcbiAgc2V0QWN0aXZlRm9ybUZpZWxkcyhhY3RpdmVGb3JtRmllbGRzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5hY3RpdmVGb3JtRmllbGRzID0gYWN0aXZlRm9ybUZpZWxkcztcclxuICB9XHJcblxyXG4gIGFjdGl2ZUZvcm1EYXRhOiBhbnk7XHJcbiAgc2V0QWN0aXZlRm9ybURhdGEoYWN0aXZlRm9ybURhdGE6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVGb3JtRGF0YSA9IGFjdGl2ZUZvcm1EYXRhO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBhc3luYyBmZXRjaEZvcm1Db25maWcodXJsOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7IG1ldGhvZDogXCJHRVRcIiB9KTtcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIGZpbmRBY3RpdmVGb3JtQ29uZmlnKGZvcm1zTGlzdDogYW55W10pOiBhbnkge1xyXG4gICAgY29uc3QgYWN0aXZlRm9ybUNvbmZpZyA9IGZvcm1zTGlzdC5maW5kKChmb3JtKSA9PiB7XHJcbiAgICAgIHJldHVybiBmb3JtLnN0YXR1cyA9PT0gXCJlZGl0YWJsZVwiICYmICFmb3JtLmRpc2FibGVkO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYWN0aXZlRm9ybUNvbmZpZztcclxuICB9XHJcblxyXG4gIGZpbmRDb21wbGV0ZWRGb3Jtc0xpc3QoYWxsRm9ybXNEYXRhOiBhbnkpOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgZm9ybXNMaXN0Q29tcGxldGVkOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKGFsbEZvcm1zRGF0YSkubWFwKChmb3JtS2V5KSA9PiB7XHJcbiAgICAgIGZvcm1zTGlzdENvbXBsZXRlZC5wdXNoKGZvcm1LZXkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGZvcm1zTGlzdENvbXBsZXRlZDtcclxuICB9XHJcblxyXG4gIG1hcmtGb3JtSW5Gb3Jtc0xpc3RBc0NvbXBsZXRlZChcclxuICAgIGZvcm1zTGlzdDogYW55W10sXHJcbiAgICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdXHJcbiAgKTogYW55W10ge1xyXG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcclxuICAgICAgaWYgKGZvcm1zTGlzdENvbXBsZXRlZC5pbmNsdWRlcyhmb3JtLmtleSkpIHtcclxuICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcInN0YXR1c1wiLCBcImNvbXBsZXRlZFwiKTtcclxuICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdChmb3JtLCBcImRpc2FibGVkXCIsIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3Jtc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBtYXJrRm9ybUluRm9ybXNMaXN0QXNEaXNhYmxlZChcclxuICAgIGZvcm1zTGlzdDogYW55W10sXHJcbiAgICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdXHJcbiAgKTogYW55W10ge1xyXG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcclxuICAgICAgaWYgKGZvcm0uc3RhdHVzICE9PSBcImNvbXBsZXRlZFwiKSB7XHJcbiAgICAgICAgaWYgKGhhc0tleShmb3JtLCBcImRlcGVuZGVudE9uXCIpKSB7XHJcbiAgICAgICAgICBjb25zdCBpc0RlcGVuZGVudCA9IGZvcm0uZGVwZW5kZW50T24uZXZlcnkoKHI6IHN0cmluZykgPT5cclxuICAgICAgICAgICAgZm9ybXNMaXN0Q29tcGxldGVkLmluY2x1ZGVzKHIpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGlzRGVwZW5kZW50KSB7XHJcbiAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwic3RhdHVzXCIsIFwiZWRpdGFibGVcIik7XHJcbiAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwiZGlzYWJsZWRcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3QoZm9ybSwgXCJzdGF0dXNcIiwgXCJsb2NrZWRcIik7XHJcbiAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwiZGlzYWJsZWRcIiwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwiZGVwZW5kZW50T25cIiwgW10pO1xyXG4gICAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3QoZm9ybSwgXCJzdGF0dXNcIiwgXCJlZGl0YWJsZVwiKTtcclxuICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0KGZvcm0sIFwiZGlzYWJsZWRcIiwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3Jtc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBhc3NpZ25TZXF1ZW5jZU5vVG9Gb3JtKGZvcm1zTGlzdDogYW55W10pOiBhbnlbXSB7XHJcbiAgICBsZXQgc2VxdWVuY2VObyA9IDE7XHJcbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xyXG4gICAgICBmb3JtLnNlcXVlbmNlTm8gPSBzZXF1ZW5jZU5vKys7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcm1zTGlzdDtcclxuICB9XHJcblxyXG4gIGZpbHRlckFsbEZvcm1zRGF0YShhbGxGb3Jtc0RhdGE6IGFueSwgZm9ybXNMaXN0OiBhbnlbXSk6IGFueSB7XHJcbiAgICBsZXQgY3VycmVudFVzZXJGb3JtQWxsRm9ybXNEYXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xyXG4gICAgICBpZiAoaGFzS2V5KGFsbEZvcm1zRGF0YSwgZm9ybS5rZXkpKSB7XHJcbiAgICAgICAgY3VycmVudFVzZXJGb3JtQWxsRm9ybXNEYXRhID0ge1xyXG4gICAgICAgICAgLi4uY3VycmVudFVzZXJGb3JtQWxsRm9ybXNEYXRhLFxyXG4gICAgICAgICAgW2Zvcm0ua2V5XTogYWxsRm9ybXNEYXRhW2Zvcm0ua2V5XVxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY3VycmVudFVzZXJGb3JtQWxsRm9ybXNEYXRhO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRm9ybXNMaXN0KCkge1xyXG4gICAgbGV0IGZvcm1zTGlzdDogYW55W10gPSB0aGlzLmZvcm1zTGlzdDtcclxuICAgIGxldCBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdO1xyXG4gICAgbGV0IGFjdGl2ZUZvcm1Db25maWc6IGFueTtcclxuXHJcbiAgICBmb3Jtc0xpc3QgPSB0aGlzLmFzc2lnblNlcXVlbmNlTm9Ub0Zvcm0oZm9ybXNMaXN0KTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEJlbG93IGNvZGUgaWRlbnRpZmllcyB0aGUgYWxsRm9ybXNEYXRhIHJlcXVpcmVkIGZvciB0aGUgY3VycmVudCBVc2VyIEZvcm0uXHJcbiAgICAgKiBXaHk/IEJlY2F1c2UgYWxsRm9ybXNEYXRhIHdpbGwgYWN0dWFsbHkgY29udGFpbiB0aGUgd2hvbGUgam91cm5leSdzIGFsbFxyXG4gICAgICogcG9zc2libGUgVXNlciBGb3JtIHN0ZXBzLiBTbywgaXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGUgZm9ybSBkYXRhIHdoaWNoXHJcbiAgICAgKiB0aGlzIHBhcnRpY3VsYXIgVXNlciBGb3JtIG9ubHkgaGFzIHRvIExPQ0FMIE1FVEhPRCBWYXJpYWJsZS5cclxuICAgICAqL1xyXG4gICAgY29uc3QgY3VycmVudFVzZXJGb3JtQWxsRm9ybXNEYXRhID0gdGhpcy5maWx0ZXJBbGxGb3Jtc0RhdGEoXHJcbiAgICAgIHRoaXMuYWxsRm9ybXNEYXRhLFxyXG4gICAgICBmb3Jtc0xpc3RcclxuICAgICk7XHJcblxyXG4gICAgZm9ybXNMaXN0Q29tcGxldGVkID0gdGhpcy5maW5kQ29tcGxldGVkRm9ybXNMaXN0KFxyXG4gICAgICBjdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGFcclxuICAgICk7XHJcblxyXG4gICAgZm9ybXNMaXN0ID0gdGhpcy5tYXJrRm9ybUluRm9ybXNMaXN0QXNDb21wbGV0ZWQoXHJcbiAgICAgIGZvcm1zTGlzdCxcclxuICAgICAgZm9ybXNMaXN0Q29tcGxldGVkXHJcbiAgICApO1xyXG5cclxuICAgIGZvcm1zTGlzdCA9IHRoaXMubWFya0Zvcm1JbkZvcm1zTGlzdEFzRGlzYWJsZWQoXHJcbiAgICAgIGZvcm1zTGlzdCxcclxuICAgICAgZm9ybXNMaXN0Q29tcGxldGVkXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChmb3Jtc0xpc3QubGVuZ3RoICE9PSBmb3Jtc0xpc3RDb21wbGV0ZWQubGVuZ3RoKSB7XHJcbiAgICAgIGFjdGl2ZUZvcm1Db25maWcgPSB0aGlzLmZpbmRBY3RpdmVGb3JtQ29uZmlnKGZvcm1zTGlzdCk7XHJcblxyXG4gICAgICB0aGlzLnNldEFjdGl2ZUZvcm1Db25maWcoYWN0aXZlRm9ybUNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRGb3Jtc0xpc3QoZm9ybXNMaXN0KTtcclxuICAgIHRoaXMuc2V0Rm9ybXNMaXN0Q29tcGxldGVkKGZvcm1zTGlzdENvbXBsZXRlZCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==