ngx-histaff-alpha 4.7.7 → 4.7.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,14 +32,14 @@ export class CoreApiProgressComponent extends BaseComponent {
32
32
  this.onClose.emit(true);
33
33
  }
34
34
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: CoreApiProgressComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.LongTaskService }], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: CoreApiProgressComponent, isStandalone: true, selector: "core-api-progress", outputs: { onClose: "onClose" }, usesInheritance: true, ngImport: i0, template: "<div class=\"modal-container\">\r\n <div class=\"modal-content-root d-flex d-flex-v d-flex-around\">\r\n <div class=\"d-flex d-flex-v d-flex-around me\">\r\n <div class=\"close-wrapper\">\r\n <i class=\"feather-x\" (click)=\"onClickClose()\"></i>\r\n </div>\r\n\r\n <div class=\"main-message\">{{ message || 'APP \u0110ANG X\u1EEC L\u00DD T\u00C1C V\u1EE4, XIN VUI L\u00D2NG \u0110\u1EE2I...' }}</div>\r\n\r\n @if (!hideProgressBar) {\r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n <div class=\"message d-flex d-flex-start w-100\">{{ outerMessage || '...' }}</div>\r\n <div class=\"track p-relative\">\r\n <div class=\"outer-percent p-absolute\"\r\n [ngStyle]=\"{ width: outerPercent + 'px', backgroundColor: !!error ? 'brown' : '#358ccb' }\">\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n <div class=\"message d-flex d-flex-start w-100\">{{ innerMessage || '...' }}</div>\r\n <div class=\"track p-relative\">\r\n <div class=\"inner-percent p-absolute\"\r\n [ngStyle]=\"{ width: innerPercent + 'px', backgroundColor: !!error ? 'brown' : '#358ccb' }\">\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>", styles: [".me{height:auto;padding:auto}.me .main-message{max-width:480px;font-size:15px;height:80px;line-height:80px}.me .track{height:25px;width:500px;background-color:#d3d3d3;border-radius:12.5px}.me .track .outer-percent,.me .track .inner-percent{top:5px;left:5px;height:15px;transition:width .5s linear;border-radius:7.5px}.me .message{max-width:500px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:13px}.me .close-wrapper{position:absolute;top:12px;right:12px;cursor:pointer}.me .close-wrapper i{color:#848484;font-size:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: CoreApiProgressComponent, isStandalone: true, selector: "core-api-progress", outputs: { onClose: "onClose" }, usesInheritance: true, ngImport: i0, template: "<div class=\"modal-container\">\r\n <div class=\"modal-content-root d-flex d-flex-v d-flex-around\">\r\n <div class=\"d-flex d-flex-v d-flex-around me\">\r\n <div class=\"close-wrapper\">\r\n <i class=\"feather-x\" (click)=\"onClickClose()\"></i>\r\n </div>\r\n\r\n <div class=\"main-message\">{{ message || 'APP \u0110ANG X\u1EEC L\u00DD T\u00C1C V\u1EE4, XIN VUI L\u00D2NG \u0110\u1EE2I...' }}</div>\r\n\r\n @if (!hideProgressBar) {\r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n <div class=\"message d-flex d-flex-start w-100\">{{ outerMessage || '...' }}</div>\r\n <div class=\"track p-relative\">\r\n <div class=\"outer-percent p-absolute\"\r\n [ngStyle]=\"{ width: outerPercent + 'px', backgroundColor: !!error ? 'brown' : '#358ccb' }\">\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n <div class=\"message d-flex d-flex-start w-100\">{{ innerMessage || '...' }}</div>\r\n <div class=\"track p-relative\">\r\n <div class=\"inner-percent p-absolute\"\r\n [ngStyle]=\"{ width: innerPercent + 'px', backgroundColor: !!error ? 'brown' : '#358ccb' }\">\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>", styles: [".me{height:auto;padding:auto}.me .main-message{max-width:480px;font-size:15px;height:80px;line-height:80px;-webkit-user-select:none;user-select:none}.me .track{height:25px;width:500px;background-color:#d3d3d3;border-radius:12.5px}.me .track .outer-percent,.me .track .inner-percent{top:5px;left:5px;height:15px;transition:width .5s linear;border-radius:7.5px}.me .message{max-width:500px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:13px;-webkit-user-select:none;user-select:none}.me .close-wrapper{position:absolute;top:12px;right:12px;cursor:pointer}.me .close-wrapper i{color:#848484;font-size:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
36
36
  }
37
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: CoreApiProgressComponent, decorators: [{
38
38
  type: Component,
39
39
  args: [{ selector: 'core-api-progress', imports: [
40
40
  CommonModule
41
- ], template: "<div class=\"modal-container\">\r\n <div class=\"modal-content-root d-flex d-flex-v d-flex-around\">\r\n <div class=\"d-flex d-flex-v d-flex-around me\">\r\n <div class=\"close-wrapper\">\r\n <i class=\"feather-x\" (click)=\"onClickClose()\"></i>\r\n </div>\r\n\r\n <div class=\"main-message\">{{ message || 'APP \u0110ANG X\u1EEC L\u00DD T\u00C1C V\u1EE4, XIN VUI L\u00D2NG \u0110\u1EE2I...' }}</div>\r\n\r\n @if (!hideProgressBar) {\r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n <div class=\"message d-flex d-flex-start w-100\">{{ outerMessage || '...' }}</div>\r\n <div class=\"track p-relative\">\r\n <div class=\"outer-percent p-absolute\"\r\n [ngStyle]=\"{ width: outerPercent + 'px', backgroundColor: !!error ? 'brown' : '#358ccb' }\">\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n <div class=\"message d-flex d-flex-start w-100\">{{ innerMessage || '...' }}</div>\r\n <div class=\"track p-relative\">\r\n <div class=\"inner-percent p-absolute\"\r\n [ngStyle]=\"{ width: innerPercent + 'px', backgroundColor: !!error ? 'brown' : '#358ccb' }\">\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>", styles: [".me{height:auto;padding:auto}.me .main-message{max-width:480px;font-size:15px;height:80px;line-height:80px}.me .track{height:25px;width:500px;background-color:#d3d3d3;border-radius:12.5px}.me .track .outer-percent,.me .track .inner-percent{top:5px;left:5px;height:15px;transition:width .5s linear;border-radius:7.5px}.me .message{max-width:500px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:13px}.me .close-wrapper{position:absolute;top:12px;right:12px;cursor:pointer}.me .close-wrapper i{color:#848484;font-size:24px}\n"] }]
41
+ ], template: "<div class=\"modal-container\">\r\n <div class=\"modal-content-root d-flex d-flex-v d-flex-around\">\r\n <div class=\"d-flex d-flex-v d-flex-around me\">\r\n <div class=\"close-wrapper\">\r\n <i class=\"feather-x\" (click)=\"onClickClose()\"></i>\r\n </div>\r\n\r\n <div class=\"main-message\">{{ message || 'APP \u0110ANG X\u1EEC L\u00DD T\u00C1C V\u1EE4, XIN VUI L\u00D2NG \u0110\u1EE2I...' }}</div>\r\n\r\n @if (!hideProgressBar) {\r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n <div class=\"message d-flex d-flex-start w-100\">{{ outerMessage || '...' }}</div>\r\n <div class=\"track p-relative\">\r\n <div class=\"outer-percent p-absolute\"\r\n [ngStyle]=\"{ width: outerPercent + 'px', backgroundColor: !!error ? 'brown' : '#358ccb' }\">\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n <div class=\"message d-flex d-flex-start w-100\">{{ innerMessage || '...' }}</div>\r\n <div class=\"track p-relative\">\r\n <div class=\"inner-percent p-absolute\"\r\n [ngStyle]=\"{ width: innerPercent + 'px', backgroundColor: !!error ? 'brown' : '#358ccb' }\">\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>", styles: [".me{height:auto;padding:auto}.me .main-message{max-width:480px;font-size:15px;height:80px;line-height:80px;-webkit-user-select:none;user-select:none}.me .track{height:25px;width:500px;background-color:#d3d3d3;border-radius:12.5px}.me .track .outer-percent,.me .track .inner-percent{top:5px;left:5px;height:15px;transition:width .5s linear;border-radius:7.5px}.me .message{max-width:500px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:13px;-webkit-user-select:none;user-select:none}.me .close-wrapper{position:absolute;top:12px;right:12px;cursor:pointer}.me .close-wrapper i{color:#848484;font-size:24px}\n"] }]
42
42
  }], ctorParameters: () => [{ type: i1.MultiLanguageService }, { type: i2.LongTaskService }], propDecorators: { onClose: [{
43
43
  type: Output
44
44
  }] } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1hcGktcHJvZ3Jlc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtYXBpLXByb2dyZXNzL2NvcmUtYXBpLXByb2dyZXNzL2NvcmUtYXBpLXByb2dyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFVL0MsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFXekQsWUFDa0IsR0FBeUIsRUFDakMsZUFBZ0M7UUFFdEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBSEcsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDakMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBWGhDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBY25DLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLFFBQVE7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FDN0MsQ0FBQTtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUMvRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FDL0UsQ0FBQTtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUM5RSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFBO1lBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxDQUNILENBQUE7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQS9DVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixxSUNkckMsc2pEQThCTSx3bEJEckJFLFlBQVk7OzJGQUtQLHdCQUF3QjtrQkFScEMsU0FBUzsrQkFDSSxtQkFBbUIsV0FDcEI7d0JBQ0wsWUFBWTtxQkFDZjt1SEFNTyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvbmdUYXNrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvbmctdGFzay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UvYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjb3JlLWFwaS1wcm9ncmVzcycsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGVcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb3JlLWFwaS1wcm9ncmVzcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29yZS1hcGktcHJvZ3Jlc3MuY29tcG9uZW50LnNjc3MnXVxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVBcGlQcm9ncmVzc0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAT3V0cHV0KCkgb25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBtZXNzYWdlITogc3RyaW5nO1xyXG4gIG91dGVyTWVzc2FnZSE6IHN0cmluZztcclxuICBvdXRlclBlcmNlbnQhOiBudW1iZXI7XHJcbiAgaW5uZXJNZXNzYWdlITogc3RyaW5nO1xyXG4gIGlubmVyUGVyY2VudCE6IG51bWJlcjtcclxuICBlcnJvciE6IGJvb2xlYW47XHJcbiAgaGlkZVByb2dyZXNzQmFyITogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9uZ1Rhc2tTZXJ2aWNlOiBMb25nVGFza1NlcnZpY2VcclxuICAgICkge1xyXG4gICAgICBzdXBlcihtbHMpO1xyXG4gICAgICB0aGlzLmxvbmdUYXNrU2VydmljZS5tZXNzYWdlJC5uZXh0KCcnKTtcclxuICAgICAgdGhpcy5sb25nVGFza1NlcnZpY2UuZGF0YSQubmV4dChudWxsKTtcclxuICAgIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmxvbmdUYXNrU2VydmljZS5tZXNzYWdlJC5zdWJzY3JpYmUoeCA9PiB0aGlzLm1lc3NhZ2UgPSB4KVxyXG4gICAgKVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubG9uZ1Rhc2tTZXJ2aWNlLmhpZGVQcm9ncmVzc0JhciQuc3Vic2NyaWJlKHggPT4gdGhpcy5oaWRlUHJvZ3Jlc3NCYXIgPSB4KVxyXG4gICAgKVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubG9uZ1Rhc2tTZXJ2aWNlLmRhdGEkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLm91dGVyTWVzc2FnZSA9IHg/Lm91dGVyTWVzc2FnZSB8fCBcIlwiO1xyXG4gICAgICAgIHRoaXMub3V0ZXJQZXJjZW50ID0gTnVtYmVyKHg/Lm91dGVyUGVyY2VudC5yZXBsYWNlKCclJywgJycpKSAvIDEwMCAqIDUwMCAtIDEwO1xyXG4gICAgICAgIHRoaXMuaW5uZXJNZXNzYWdlID0geD8uaW5uZXJNZXNzYWdlIHx8IFwiXCJcclxuICAgICAgICB0aGlzLmlubmVyUGVyY2VudCA9IE51bWJlcih4Py5pbm5lclBlcmNlbnQucmVwbGFjZSgnJScsICcnKSkgLyAxMDAgKiA1MDAgLSAxMDtcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmxvbmdUYXNrU2VydmljZS5lcnJvciQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMuZXJyb3IgPSAhIXhcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tDbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMub25DbG9zZS5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQtcm9vdCBkLWZsZXggZC1mbGV4LXYgZC1mbGV4LWFyb3VuZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZC1mbGV4LXYgZC1mbGV4LWFyb3VuZCBtZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2Utd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIiAoY2xpY2spPVwib25DbGlja0Nsb3NlKClcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tbWVzc2FnZVwiPnt7IG1lc3NhZ2UgfHwgJ0FQUCDEkEFORyBY4busIEzDnSBUw4FDIFbhu6QsIFhJTiBWVUkgTMOSTkcgxJDhu6JJLi4uJyB9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgQGlmICghaGlkZVByb2dyZXNzQmFyKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGQtZmxleC12IGQtZmxleC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZSBkLWZsZXggZC1mbGV4LXN0YXJ0IHctMTAwXCI+e3sgb3V0ZXJNZXNzYWdlIHx8ICcuLi4nIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYWNrIHAtcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dGVyLXBlcmNlbnQgcC1hYnNvbHV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBvdXRlclBlcmNlbnQgKyAncHgnLCBiYWNrZ3JvdW5kQ29sb3I6ICEhZXJyb3IgPyAnYnJvd24nIDogJyMzNThjY2InIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWZsZXgtdiBkLWZsZXgtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UgZC1mbGV4IGQtZmxleC1zdGFydCB3LTEwMFwiPnt7IGlubmVyTWVzc2FnZSB8fCAnLi4uJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFjayBwLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1wZXJjZW50IHAtYWJzb2x1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyB3aWR0aDogaW5uZXJQZXJjZW50ICsgJ3B4JywgYmFja2dyb3VuZENvbG9yOiAhIWVycm9yID8gJ2Jyb3duJyA6ICcjMzU4Y2NiJyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1hcGktcHJvZ3Jlc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtYXBpLXByb2dyZXNzL2NvcmUtYXBpLXByb2dyZXNzL2NvcmUtYXBpLXByb2dyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFVL0MsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFXekQsWUFDa0IsR0FBeUIsRUFDakMsZUFBZ0M7UUFFdEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBSEcsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDakMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBWGhDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBY25DLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLFFBQVE7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FDN0MsQ0FBQTtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUMvRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FDL0UsQ0FBQTtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUM5RSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFBO1lBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxDQUNILENBQUE7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQS9DVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixxSUNkckMsc2pEQThCTSw0cUJEckJFLFlBQVk7OzJGQUtQLHdCQUF3QjtrQkFScEMsU0FBUzsrQkFDSSxtQkFBbUIsV0FDcEI7d0JBQ0wsWUFBWTtxQkFDZjt1SEFNTyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvbmdUYXNrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvbmctdGFzay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UvYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjb3JlLWFwaS1wcm9ncmVzcycsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGVcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb3JlLWFwaS1wcm9ncmVzcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29yZS1hcGktcHJvZ3Jlc3MuY29tcG9uZW50LnNjc3MnXVxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVBcGlQcm9ncmVzc0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAT3V0cHV0KCkgb25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBtZXNzYWdlITogc3RyaW5nO1xyXG4gIG91dGVyTWVzc2FnZSE6IHN0cmluZztcclxuICBvdXRlclBlcmNlbnQhOiBudW1iZXI7XHJcbiAgaW5uZXJNZXNzYWdlITogc3RyaW5nO1xyXG4gIGlubmVyUGVyY2VudCE6IG51bWJlcjtcclxuICBlcnJvciE6IGJvb2xlYW47XHJcbiAgaGlkZVByb2dyZXNzQmFyITogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9uZ1Rhc2tTZXJ2aWNlOiBMb25nVGFza1NlcnZpY2VcclxuICAgICkge1xyXG4gICAgICBzdXBlcihtbHMpO1xyXG4gICAgICB0aGlzLmxvbmdUYXNrU2VydmljZS5tZXNzYWdlJC5uZXh0KCcnKTtcclxuICAgICAgdGhpcy5sb25nVGFza1NlcnZpY2UuZGF0YSQubmV4dChudWxsKTtcclxuICAgIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmxvbmdUYXNrU2VydmljZS5tZXNzYWdlJC5zdWJzY3JpYmUoeCA9PiB0aGlzLm1lc3NhZ2UgPSB4KVxyXG4gICAgKVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubG9uZ1Rhc2tTZXJ2aWNlLmhpZGVQcm9ncmVzc0JhciQuc3Vic2NyaWJlKHggPT4gdGhpcy5oaWRlUHJvZ3Jlc3NCYXIgPSB4KVxyXG4gICAgKVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubG9uZ1Rhc2tTZXJ2aWNlLmRhdGEkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLm91dGVyTWVzc2FnZSA9IHg/Lm91dGVyTWVzc2FnZSB8fCBcIlwiO1xyXG4gICAgICAgIHRoaXMub3V0ZXJQZXJjZW50ID0gTnVtYmVyKHg/Lm91dGVyUGVyY2VudC5yZXBsYWNlKCclJywgJycpKSAvIDEwMCAqIDUwMCAtIDEwO1xyXG4gICAgICAgIHRoaXMuaW5uZXJNZXNzYWdlID0geD8uaW5uZXJNZXNzYWdlIHx8IFwiXCJcclxuICAgICAgICB0aGlzLmlubmVyUGVyY2VudCA9IE51bWJlcih4Py5pbm5lclBlcmNlbnQucmVwbGFjZSgnJScsICcnKSkgLyAxMDAgKiA1MDAgLSAxMDtcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmxvbmdUYXNrU2VydmljZS5lcnJvciQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMuZXJyb3IgPSAhIXhcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tDbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMub25DbG9zZS5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQtcm9vdCBkLWZsZXggZC1mbGV4LXYgZC1mbGV4LWFyb3VuZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZC1mbGV4LXYgZC1mbGV4LWFyb3VuZCBtZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2Utd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIiAoY2xpY2spPVwib25DbGlja0Nsb3NlKClcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tbWVzc2FnZVwiPnt7IG1lc3NhZ2UgfHwgJ0FQUCDEkEFORyBY4busIEzDnSBUw4FDIFbhu6QsIFhJTiBWVUkgTMOSTkcgxJDhu6JJLi4uJyB9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgQGlmICghaGlkZVByb2dyZXNzQmFyKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGQtZmxleC12IGQtZmxleC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZSBkLWZsZXggZC1mbGV4LXN0YXJ0IHctMTAwXCI+e3sgb3V0ZXJNZXNzYWdlIHx8ICcuLi4nIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYWNrIHAtcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dGVyLXBlcmNlbnQgcC1hYnNvbHV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBvdXRlclBlcmNlbnQgKyAncHgnLCBiYWNrZ3JvdW5kQ29sb3I6ICEhZXJyb3IgPyAnYnJvd24nIDogJyMzNThjY2InIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWZsZXgtdiBkLWZsZXgtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UgZC1mbGV4IGQtZmxleC1zdGFydCB3LTEwMFwiPnt7IGlubmVyTWVzc2FnZSB8fCAnLi4uJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFjayBwLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1wZXJjZW50IHAtYWJzb2x1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyB3aWR0aDogaW5uZXJQZXJjZW50ICsgJ3B4JywgYmFja2dyb3VuZENvbG9yOiAhIWVycm9yID8gJ2Jyb3duJyA6ICcjMzU4Y2NiJyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -21,6 +21,7 @@ export class CoreCompareDbPipelineComponent extends BaseComponent {
21
21
  this.appService = appService;
22
22
  this.data = [];
23
23
  this.tabHeaders = ["Dev-Test-Live", "Dev-Extended"];
24
+ this.activeTabIndex = 0;
24
25
  this.columns = [
25
26
  {
26
27
  field: 'id',
@@ -255,8 +256,12 @@ export class CoreCompareDbPipelineComponent extends BaseComponent {
255
256
  tryFilterTargetNullability[0].templateRef = this.targetNullability;
256
257
  }
257
258
  this.tableHeight = window.innerHeight - 60 - 50 - 46 - 30 - 45;
258
- this.queryListRequest$ = this.request$.pipe(distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)), tap(() => this.longApiRunning = true), switchMap(x => this.appService.post('/api/SqlServerPipeline/CompareDbStructure?usehub=true', x)));
259
- this.queryListSubscription = this.queryListRequest$.subscribe(x => {
259
+ this.queryListRequest$ = this.request$.pipe(distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)), tap(() => {
260
+ this.controller?.abort();
261
+ if (!this.longApiRunning)
262
+ this.longApiRunning = true;
263
+ }), switchMap(x => this.appService.post('/api/SqlServerPipeline/CompareDbStructure?usehub=true', x)));
264
+ this.subscriptions.push(this.queryListRequest$.subscribe(x => {
260
265
  this.longApiRunning = false;
261
266
  if (x.ok && x.status === 200 && x.body?.statusCode === 200) {
262
267
  this.data = x.body.innerBody.data;
@@ -264,7 +269,7 @@ export class CoreCompareDbPipelineComponent extends BaseComponent {
264
269
  this.currentPage$.next(x.body.innerBody.pageNumber);
265
270
  this.conflictTotal = x.body.innerBody.count || 0;
266
271
  }
267
- });
272
+ }));
268
273
  this.subscriptions.push(this.currentPage$.subscribe(x => {
269
274
  const newRequest = {
270
275
  ...this.request$.value,
@@ -326,27 +331,14 @@ export class CoreCompareDbPipelineComponent extends BaseComponent {
326
331
  };
327
332
  this.request$.next(JSON.parse(JSON.stringify(newRequest)));
328
333
  }
329
- setTimeout(() => {
330
- this.queryListSubscription = this.queryListRequest$.subscribe(x => {
331
- this.longApiRunning = false;
332
- if (x.ok && x.status === 200 && x.body?.statusCode === 200) {
333
- this.data = x.body.innerBody.data;
334
- this.pageCount = Math.ceil(x.body.innerBody.count / this.pageSize$.value);
335
- this.currentPage$.next(x.body.innerBody.pageNumber);
336
- this.conflictTotal = x.body.innerBody.count || 0;
337
- }
338
- });
339
- });
340
334
  }
341
335
  onProgressWindowClose(e) {
342
336
  console.log("onProgressWindowClose", e);
343
337
  this.controller?.abort();
344
338
  this.longApiRunning = false;
345
- this.queryListSubscription?.unsubscribe();
346
339
  }
347
340
  ngOnDestroy() {
348
341
  this.subscriptions.forEach(x => x?.unsubscribe);
349
- this.queryListSubscription?.unsubscribe();
350
342
  }
351
343
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: CoreCompareDbPipelineComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.AppService }], target: i0.ɵɵFactoryTarget.Component }); }
352
344
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: CoreCompareDbPipelineComponent, isStandalone: true, selector: "core-compare-db-pipeline", viewQueries: [{ propertyName: "toolBlock", first: true, predicate: ["toolBlock"], descendants: true }, { propertyName: "conflictType", first: true, predicate: ["conflictType"], descendants: true }, { propertyName: "sourceNullability", first: true, predicate: ["sourceNullability"], descendants: true }, { propertyName: "targetNullability", first: true, predicate: ["targetNullability"], descendants: true }, { propertyName: "sourceIsPrimaryKey", first: true, predicate: ["sourceIsPrimaryKey"], descendants: true }, { propertyName: "targetIsPrimaryKey", first: true, predicate: ["targetIsPrimaryKey"], descendants: true }, { propertyName: "sourceIsIdentityColumn", first: true, predicate: ["sourceIsIdentityColumn"], descendants: true }, { propertyName: "targetIsIdentityColumn", first: true, predicate: ["targetIsIdentityColumn"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"core-compare-db-pipeline-container\">\r\n <core-page-header [title]=\"'DB STRUCTURE COMPARE'\"\r\n [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[]\" [height]=\"45\" [headerLineHeight]=\"45\"\r\n (onHeaderClick)=\"onCoreTabsHeaderClick($event)\">\r\n </core-tabs>\r\n\r\n\r\n <core-table [columns]=\"columns\" [height]=\"tableHeight\" [data]=\"data\" [loading]=\"longApiRunning\"\r\n [autoColumnFitAvailableSpace]=\"false\" [frozen]=\"3\" [lazyLoading]=\"true\" [headerFirstRowHeight]=\"80\"\r\n (onSearching)=\"onSearching($event)\"></core-table>\r\n <div class=\"h15\"></div>\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <div class=\"conflict-total\" [class.error]=\"!!conflictTotal\">\r\n {{ !!longApiRunning ? 'Scanning for issues...' : (!!conflictTotal ? conflictTotal + ' conflicts found!' : 'No conflict found') }} \r\n </div>\r\n <core-pagination [$height]=\"46\" [$currentPage]=\"currentPage$\" [$pageCount]=\"pageCount\" [$loading]=\"longApiRunning\"\r\n [$background]=\"'#848484'\" [$fixedPageSize]=\"20\"\r\n [$suspendCurrentPageSubscription]=\"suspendCurrentPageSubscription$\"></core-pagination>\r\n </div>\r\n\r\n @if (longApiRunning) {\r\n <core-api-progress (onClose)=\"onProgressWindowClose($event)\"></core-api-progress>\r\n }\r\n\r\n @if (showRowResolverWindow) {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"row-resolver-window\">\r\n <core-page-header [title]=\"'RESOLVER WINDOW'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <i class=\"close-icon pointer feather-x fs24\" (click)=\"closeRowResolver($event)\"></i>\r\n <textarea class=\"form-control\" [rows]=\"'10'\" style=\"height: 400px; padding: 15px;\" disabled>\r\n {{ sqlCommand }}\r\n </textarea>\r\n <button class=\"btn btn-primary\" (click)=\"resolve($event)\" style=\"margin-top: 15px;\">Run</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #conflictType let-context=\"context\">\r\n <div class=\"conflict-type-wrapper d-flex d-flex-between\" [appTooltip]=\"context.conflictType\" [showAnyway]=\"true\">\r\n \r\n @switch (context.conflictType) {\r\n @case ('TMIT') {\r\n <i [class]=\"'feather-layout ' + context.conflictType\"></i>\r\n }\r\n @case ('CMIT') {\r\n <i [class]=\"'feather-sidebar ' + context.conflictType\"></i>\r\n }\r\n @case ('CPKM') {\r\n <i [class]=\"'feather-zap ' + context.conflictType\"></i>\r\n }\r\n @case ('CTM') {\r\n <i [class]=\"'feather-type ' + context.conflictType\"></i>\r\n }\r\n @case ('CSM') {\r\n <i [class]=\"'feather-layers ' + context.conflictType\"></i>\r\n }\r\n @case ('CNM') {\r\n <i [class]=\"'feather-droplet ' + context.conflictType\"></i>\r\n }\r\n @case ('CPSM') {\r\n <i [class]=\"'feather-move ' + context.conflictType\"></i>\r\n }\r\n @case ('RT') {\r\n <i [class]=\"'feather-trash ' + context.conflictType\"></i>\r\n }\r\n @case ('RC') {\r\n <i [class]=\"'feather-trash ' + context.conflictType\"></i>\r\n }\r\n }\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #toolBlock let-context=\"context\">\r\n <div class=\"tools inter-font d-flex d-flex-start\">\r\n <div class=\"icon-wrapper\" [appTooltip]=\"'Resolve'\" [position]=\"'right'\" [showAnyway]=\"true\" (click)=\"openRowResolver($event, context)\">\r\n <i class=\"feather-play fs24\"></i>\r\n </div>\r\n <span>{{ context.difference }}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template #sourceNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #sourceIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #sourceIsIdentityColumn let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceIsIdentityColumn\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetIsIdentityColumn let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetIsIdentityColumn\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n\r\n</div>", styles: [".core-compare-db-pipeline-container .h15{height:15px}.core-compare-db-pipeline-container .tools{height:36px}.core-compare-db-pipeline-container .tools .icon-wrapper{color:#848484;opacity:.5;display:inline-flex;width:36px;height:36px;border-radius:50%}.core-compare-db-pipeline-container .tools .icon-wrapper:hover{opacity:1;color:#fff;background-color:#848484}.core-compare-db-pipeline-container .modal-content-root{padding-top:0}.core-compare-db-pipeline-container .close-icon{display:block;position:absolute;top:8px;right:8px;color:#848484}.core-compare-db-pipeline-container .close-icon:hover{color:inherit}.core-compare-db-pipeline-container .row-resolver-window{display:block;width:992px;max-width:100vw!important;height:500px}.core-compare-db-pipeline-container .conflict-total{height:50px;display:flex;align-items:center;justify-content:flex-start;color:#848484;font-size:24px;font-weight:700}.core-compare-db-pipeline-container .conflict-total.error{color:brown}.core-compare-db-pipeline-container .conflict-type-wrapper i{font-size:20px;font-weight:700}.core-compare-db-pipeline-container .conflict-type-wrapper .TMIT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .CMIT{color:orange}.core-compare-db-pipeline-container .conflict-type-wrapper .CTM{color:#d2691e}.core-compare-db-pipeline-container .conflict-type-wrapper .CSM{color:#ffa07a}.core-compare-db-pipeline-container .conflict-type-wrapper .CNM{color:#ffb6c1}.core-compare-db-pipeline-container .conflict-type-wrapper .RT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .RC{color:#d2691e}\n"], dependencies: [{ kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "borderRadius", "headerColor", "headerBackgroundColor", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "disableSorting", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "primaryKey", "rowHoverBgColor", "noPaddingCell", "autoColumnFitAvailableSpace"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CorePaginationComponent, selector: "core-pagination", inputs: ["$currentPage", "$height", "$pageCount", "$loading", "$suspendCurrentPageSubscription", "$showAdd", "$background", "$fixedPageSize"], outputs: ["$onClickAdd"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }, { kind: "component", type: CoreApiProgressComponent, selector: "core-api-progress", outputs: ["onClose"] }] }); }
@@ -389,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
389
381
  type: ViewChild,
390
382
  args: ['targetIsIdentityColumn']
391
383
  }] } });
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUvY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUvY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUEwQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHNUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQTRCLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7QUFDN0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9FQUFvRSxDQUFDOzs7OztBQXVEOUcsTUFBTSxPQUFPLDhCQUErQixTQUFRLGFBQWE7SUFzTi9ELFlBQ2tCLEdBQXlCLEVBQ2pDLFVBQXNCO1FBRTlCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUhLLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUE3TWhDLFNBQUksR0FBNkIsRUFBRSxDQUFDO1FBSXBDLGVBQVUsR0FBYSxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUV4RCxZQUFPLEdBQTJCO1lBQ2hDO2dCQUNFLEtBQUssRUFBRSxJQUFJO2dCQUNYLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxJQUFJO2dCQUNiLEtBQUssRUFBRSxNQUFNO2dCQUNiLE1BQU0sRUFBRSxJQUFJO2dCQUNaLEtBQUssRUFBRSxDQUFDO2FBQ1Q7WUFDRDtnQkFDRSxLQUFLLEVBQUUsWUFBWTtnQkFDbkIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLEtBQUssRUFBRSxNQUFNO2dCQUNiLFlBQVksRUFBRSxJQUFJO2dCQUNsQixLQUFLLEVBQUUsR0FBRzthQUNYO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLGNBQWM7Z0JBQ3JCLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixLQUFLLEVBQUUsUUFBUTtnQkFDZixLQUFLLEVBQUUsRUFBRTthQUNWO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixLQUFLLEVBQUUsTUFBTTtnQkFDYixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLEVBQUU7YUFDVjtZQUNEO2dCQUNFLEtBQUssRUFBRSxhQUFhO2dCQUNwQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxPQUFPLEVBQUUsUUFBUTtnQkFDakIsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLEtBQUssRUFBRSxHQUFHO2FBQ1g7WUFDRDtnQkFDRSxLQUFLLEVBQUUsV0FBVztnQkFDbEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLEtBQUssRUFBRSxNQUFNO2dCQUNiLFlBQVksRUFBRSxJQUFJO2dCQUNsQixLQUFLLEVBQUUsR0FBRzthQUNYO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixLQUFLLEVBQUUsTUFBTTtnQkFDYixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLEdBQUc7YUFDWDtZQUNEO2dCQUNFLEtBQUssRUFBRSxZQUFZO2dCQUNuQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLEtBQUssRUFBRSxHQUFHO2FBQ1g7WUFDRDtnQkFDRSxLQUFLLEVBQUUsb0JBQW9CO2dCQUMzQixJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsY0FBYztnQkFDdkIsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLEtBQUssRUFBRSxFQUFFO2FBQ1Y7WUFDRDtnQkFDRSxLQUFLLEVBQUUsd0JBQXdCO2dCQUMvQixJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsb0JBQW9CO2dCQUM3QixLQUFLLEVBQUUsUUFBUTtnQkFDZixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLEVBQUU7YUFDVjtZQUNEO2dCQUNFLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzFCLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSxvQkFBb0I7Z0JBQzdCLEtBQUssRUFBRSxRQUFRO2dCQUNmLFlBQVksRUFBRSxJQUFJO2dCQUNsQixLQUFLLEVBQUUsRUFBRTthQUNWO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixLQUFLLEVBQUUsT0FBTztnQkFDZCxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLEdBQUc7YUFDWDtZQUNEO2dCQUNFLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLEtBQUssRUFBRSxPQUFPO2dCQUNkLFlBQVksRUFBRSxJQUFJO2dCQUNsQixLQUFLLEVBQUUsRUFBRTthQUNWO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixLQUFLLEVBQUUsT0FBTztnQkFDZCxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLEVBQUU7YUFDVjtZQUNEO2dCQUNFLEtBQUssRUFBRSxZQUFZO2dCQUNuQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLEtBQUssRUFBRSxHQUFHO2FBQ1g7WUFDRDtnQkFDRSxLQUFLLEVBQUUsb0JBQW9CO2dCQUMzQixJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsY0FBYztnQkFDdkIsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLEtBQUssRUFBRSxFQUFFO2FBQ1Y7WUFDRDtnQkFDRSxLQUFLLEVBQUUsd0JBQXdCO2dCQUMvQixJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsb0JBQW9CO2dCQUM3QixLQUFLLEVBQUUsUUFBUTtnQkFDZixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLEVBQUU7YUFDVjtZQUNEO2dCQUNFLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzFCLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSxvQkFBb0I7Z0JBQzdCLEtBQUssRUFBRSxRQUFRO2dCQUNmLFlBQVksRUFBRSxJQUFJO2dCQUNsQixLQUFLLEVBQUUsRUFBRTthQUNWO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixLQUFLLEVBQUUsT0FBTztnQkFDZCxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLEdBQUc7YUFDWDtZQUNEO2dCQUNFLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLEtBQUssRUFBRSxPQUFPO2dCQUNkLFlBQVksRUFBRSxJQUFJO2dCQUNsQixLQUFLLEVBQUUsRUFBRTthQUNWO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixLQUFLLEVBQUUsT0FBTztnQkFDZCxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLEVBQUU7YUFDVjtTQUNGLENBQUE7UUFFRCxnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQUUxQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUVoQyxtQkFBYyxHQUErQjtZQUMzQyxVQUFVLEVBQUUsQ0FBQztZQUNiLFFBQVEsRUFBRSxFQUFFO1NBQ2IsQ0FBQTtRQUVELGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBNkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWhGLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFFdEIsb0NBQStCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFdEUsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFFL0Isa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFLbEIsZUFBVSxHQUEyQixJQUFJLENBQUE7SUFPakQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHVEQUF1RCxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO2FBQ3ZILFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUE7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0wsQ0FBQTtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUVkLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLGNBQWMsQ0FBQyxDQUFDO1lBQ25GLElBQUksQ0FBQyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMzRCxDQUFDO1lBQ0QsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2pDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3RELENBQUM7WUFDRCxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxvQkFBb0IsQ0FBQyxDQUFDO1lBQy9GLElBQUksQ0FBQyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN6QywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3ZFLENBQUM7WUFDRCxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxvQkFBb0IsQ0FBQyxDQUFDO1lBQy9GLElBQUksQ0FBQyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN6QywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3ZFLENBQUM7WUFDRCxNQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxDQUFDLCtCQUErQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQy9FLENBQUM7WUFDRCxNQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxDQUFDLCtCQUErQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQy9FLENBQUM7WUFDRCxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzdGLElBQUksQ0FBQyxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN4QywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ3JFLENBQUM7WUFDRCxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzdGLElBQUksQ0FBQyxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN4QywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ3JFLENBQUM7WUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUUvRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3pDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQy9FLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxFQUNyQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyx1REFBdUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNqRyxDQUFDO1lBRUYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7b0JBQzNELElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFBO29CQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7Z0JBQ25ELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUdGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDOUIsTUFBTSxVQUFVLEdBQStCO29CQUM3QyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSztvQkFDdEIsVUFBVSxFQUFFLENBQUM7aUJBQ2QsQ0FBQTtnQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzVELENBQUMsQ0FBQyxDQUNILENBQUE7UUFFSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBTTtRQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM3QixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDcEQsTUFBTSxTQUFTLEdBQUc7WUFDaEIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUs7WUFDdEIsTUFBTSxFQUFFLFFBQVE7U0FDakIsQ0FBQTtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFVLEVBQUUsT0FBWTtRQUN0QyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwRyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQTtnQkFDM0QsSUFBSSxDQUFDLFVBQVUsR0FBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25FLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxFQUFFO1lBQ3hFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDekMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFVO1FBQzlCLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLFVBQVUsR0FBK0I7Z0JBQzdDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLO2dCQUN0QixXQUFXLEVBQUUsS0FBSzthQUNuQixDQUFBO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sVUFBVSxHQUErQjtnQkFDN0MsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUs7Z0JBQ3RCLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUE7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7b0JBQzNELElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFBO29CQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7Z0JBQ25ELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHFCQUFxQixDQUFDLENBQU07UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsQ0FBQTtJQUMzQyxDQUFDO0lBRVEsV0FBVztRQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQTtRQUMvQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQzs4R0FwWVUsOEJBQThCO2tHQUE5Qiw4QkFBOEIsZzhCQ3JFM0MsbTJLQXdHTSwybkREL0NGLHVCQUF1Qiw2SkFDdkIsa0JBQWtCLHF5QkFDbEIsdUJBQXVCLHFPQUN2QixnQkFBZ0IsdUlBQ2hCLHFCQUFxQix5SkFDckIsV0FBVywrVkFDWCxpQkFBaUIsbUxBQ2pCLHdCQUF3Qjs7MkZBS2YsOEJBQThCO2tCQWhCMUMsU0FBUzsrQkFDRSwwQkFBMEIsV0FDM0I7d0JBQ1AsMkJBQTJCO3dCQUMzQix1QkFBdUI7d0JBQ3ZCLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjt3QkFDckIsV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLHdCQUF3QjtxQkFDekI7a0hBTXVCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ08saUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNHLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ0Usa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDTSxzQkFBc0I7c0JBQTFELFNBQVM7dUJBQUMsd0JBQXdCO2dCQUNFLHNCQUFzQjtzQkFBMUQsU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1jb21wb25lbnQvYmFzZS9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtdGFibGUvY29yZS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZVBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9jb3JlLXBhZ2luYXRpb24vY29yZS1wYWdpbmF0aW9uL2NvcmUtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvcmVDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC9jb3JlLWNoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3JlVGFic0NvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtdGFicy9jb3JlLXRhYnMvY29yZS10YWJzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVBcGlQcm9ncmVzc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtYXBpLXByb2dyZXNzL2NvcmUtYXBpLXByb2dyZXNzL2NvcmUtYXBpLXByb2dyZXNzLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgSUNvbXBhcmVEYlN0cnVjdHVyZUZpbHRlckl0ZW0ge1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAgc2VhcmNoRm9yOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJQ29tcGFyZURiU3RydWN0dXJlUmVxdWVzdCB7XHJcbiAgZmlsdGVyPzogSUNvbXBhcmVEYlN0cnVjdHVyZUZpbHRlckl0ZW1bXTtcclxuICBwYWdlTnVtYmVyOiBudW1iZXI7XHJcbiAgcGFnZVNpemU6IG51bWJlcjtcclxuICBmb3JFeHRlbmRlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmludGVyZmFjZSBJRGJTdHJ1Y3R1cmVEaWZmZXJlbmNlIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHNvdXJjZUFsaWFzOiBzdHJpbmc7XHJcbiAgdGFyZ2V0QWxpYXM6IHN0cmluZztcclxuICB0YWJsZU5hbWU6IHN0cmluZztcclxuICBjb2x1bW5OYW1lOiBzdHJpbmc7XHJcbiAgY29uZmxpY3RUeXBlOiBzdHJpbmc7XHJcbiAgc291cmNlVHlwZT86IHN0cmluZztcclxuICBzb3VyY2VJc1ByaW1hcnlLZXk/OiBib29sZWFuO1xyXG4gIHNvdXJjZUlzSWRlbnRpdHlDb2x1bW4/OiBib29sZWFuO1xyXG4gIHNvdXJjZVNpemU/OiBudW1iZXI7XHJcbiAgc291cmNlTnVsbGFiaWxpdHk/OiBib29sZWFuO1xyXG4gIHNvdXJjZVByZWNpc2lvbj86IG51bWJlcjtcclxuICBzb3VyY2VTY2FsZT86IG51bWJlcjtcclxuICB0YXJnZXRUeXBlPzogc3RyaW5nO1xyXG4gIHRhcmdldElzUHJpbWFyeUtleT86IGJvb2xlYW47XHJcbiAgdGFyZ2V0SXNJZGVudGl0eUNvbHVtbj86IGJvb2xlYW47XHJcbiAgdGFyZ2V0U2l6ZT86IG51bWJlcjtcclxuICB0YXJnZXROdWxsYWJpbGl0eT86IGJvb2xlYW47XHJcbiAgdGFyZ2V0UHJlY2lzaW9uPzogbnVtYmVyO1xyXG4gIHRhcmdldFNjYWxlPzogbnVtYmVyO1xyXG4gIGRpZmZlcmVuY2U6IHN0cmluZztcclxuICByZXNvbHZlclNlc3Npb25JZD86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUnLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudCxcclxuICAgIENvcmVQYWdlSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgQ29yZVRhYmxlQ29tcG9uZW50LFxyXG4gICAgQ29yZVBhZ2luYXRpb25Db21wb25lbnQsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgQ29yZUNoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlVGFic0NvbXBvbmVudCxcclxuICAgIENvcmVBcGlQcm9ncmVzc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtY29tcGFyZS1kYi1waXBlbGluZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NvcmUtY29tcGFyZS1kYi1waXBlbGluZS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVDb21wYXJlRGJQaXBlbGluZUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBAVmlld0NoaWxkKCd0b29sQmxvY2snKSB0b29sQmxvY2shOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbmZsaWN0VHlwZScpIGNvbmZsaWN0VHlwZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnc291cmNlTnVsbGFiaWxpdHknKSBzb3VyY2VOdWxsYWJpbGl0eSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgndGFyZ2V0TnVsbGFiaWxpdHknKSB0YXJnZXROdWxsYWJpbGl0eSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnc291cmNlSXNQcmltYXJ5S2V5Jykgc291cmNlSXNQcmltYXJ5S2V5ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCd0YXJnZXRJc1ByaW1hcnlLZXknKSB0YXJnZXRJc1ByaW1hcnlLZXkhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3NvdXJjZUlzSWRlbnRpdHlDb2x1bW4nKSBzb3VyY2VJc0lkZW50aXR5Q29sdW1uITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCd0YXJnZXRJc0lkZW50aXR5Q29sdW1uJykgdGFyZ2V0SXNJZGVudGl0eUNvbHVtbiE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGRhdGE6IElEYlN0cnVjdHVyZURpZmZlcmVuY2VbXSA9IFtdO1xyXG5cclxuICBzaG93Um93UmVzb2x2ZXJXaW5kb3chOiBib29sZWFuO1xyXG5cclxuICB0YWJIZWFkZXJzOiBzdHJpbmdbXSA9IFtcIkRldi1UZXN0LUxpdmVcIiwgXCJEZXYtRXh0ZW5kZWRcIl1cclxuXHJcbiAgY29sdW1uczogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXSA9IFtcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdpZCcsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnaWQnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICBoaWRkZW46IHRydWUsXHJcbiAgICAgIHdpZHRoOiAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ2RpZmZlcmVuY2UnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1Byb2JsZW0nLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAzMDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnY29uZmxpY3RUeXBlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdNYXJrZXInLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHdpZHRoOiA1MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdzb3VyY2VBbGlhcycsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnU291cmNlJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNjBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAndGFyZ2V0QWxpYXMnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1RhcmdldCcsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDIwMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YWJsZU5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1RhYmxlJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogMjAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ2NvbHVtbk5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ0NvbHVtbicsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDIwMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdzb3VyY2VUeXBlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdTb3VyY2UgdHlwZScsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdzb3VyY2VJc1ByaW1hcnlLZXknLFxyXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgIGNhcHRpb246ICdTb3VyY2UgaXMgUEsnLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDYwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZUlzSWRlbnRpdHlDb2x1bW4nLFxyXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgIGNhcHRpb246ICdTb3VyY2UgaXMgSWRlbnRpdHknLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDYwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZU51bGxhYmlsaXR5JyxcclxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxyXG4gICAgICBjYXB0aW9uOiAnU291cmNlIG51bGxhYmlsaXR5JyxcclxuICAgICAgYWxpZ246ICdjZW50ZXInLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiA3MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdzb3VyY2VTaXplJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdTb3VyY2Ugc2l6ZScsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAxMDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnc291cmNlUHJlY2lzaW9uJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdTb3VyY2UgcHJlY2lzaW9uJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDUwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZVNjYWxlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdTb3VyY2Ugc2NhbGUnLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNTBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAndGFyZ2V0VHlwZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2V0IHR5cGUnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAxMDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAndGFyZ2V0SXNQcmltYXJ5S2V5JyxcclxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2V0IGlzIFBLJyxcclxuICAgICAgYWxpZ246ICdjZW50ZXInLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiA2MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRJc0lkZW50aXR5Q29sdW1uJyxcclxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2V0IGlzIElkZW50aXR5JyxcclxuICAgICAgYWxpZ246ICdjZW50ZXInLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiA2MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXROdWxsYWJpbGl0eScsXHJcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcclxuICAgICAgY2FwdGlvbjogJ1RhcmdldCBudWxsYWJpbGl0eScsXHJcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNzBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAndGFyZ2V0U2l6ZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2VyIHNpemUnLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogMTAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3RhcmdldFByZWNpc2lvbicsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2V0IHByZWNpc2lvbicsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiA1MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRTY2FsZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2V0IHNjYWxlJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDUwXHJcbiAgICB9LFxyXG4gIF1cclxuXHJcbiAgdGFibGVIZWlnaHQ6IG51bWJlciA9IDUwMDtcclxuXHJcbiAgbG9uZ0FwaVJ1bm5pbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZGVmYXVsdFJlcXVlc3Q6IElDb21wYXJlRGJTdHJ1Y3R1cmVSZXF1ZXN0ID0ge1xyXG4gICAgcGFnZU51bWJlcjogMSxcclxuICAgIHBhZ2VTaXplOiA1MFxyXG4gIH1cclxuXHJcbiAgcmVxdWVzdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDb21wYXJlRGJTdHJ1Y3R1cmVSZXF1ZXN0Pih0aGlzLmRlZmF1bHRSZXF1ZXN0KTtcclxuXHJcbiAgY3VycmVudFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDEpO1xyXG4gIHBhZ2VTaXplJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPig1MCk7XHJcbiAgcGFnZUNvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICBzdXNwZW5kQ3VycmVudFBhZ2VTdWJzY3JpcHRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHNxbENvbW1hbmQ6IHN0cmluZyA9ICcnO1xyXG4gIHJlc29sdmVyU2Vzc2lvbklkOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uZmxpY3RUb3RhbDogbnVtYmVyID0gMDtcclxuXHJcbiAgcXVlcnlMaXN0UmVxdWVzdCQhOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgcXVlcnlMaXN0U3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIGNvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlciB8IG51bGwgPSBudWxsXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG92ZXJyaWRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKG1scyk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoTGlzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcclxuICAgIHRoaXMubG9uZ0FwaVJ1bm5pbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0KCcvYXBpL1NxbFNlcnZlclBpcGVsaW5lL0NvbXBhcmVEYlN0cnVjdHVyZT91c2VodWI9dHJ1ZScsIHRoaXMucmVxdWVzdCQudmFsdWUsIHRoaXMuY29udHJvbGxlci5zaWduYWwpXHJcbiAgICAgICAgLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIHRoaXMubG9uZ0FwaVJ1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0geC5ib2R5LmlubmVyQm9keS5kYXRhXHJcbiAgICAgICAgICAgIHRoaXMucGFnZUNvdW50ID0gTWF0aC5jZWlsKHguYm9keS5pbm5lckJvZHkuY291bnQgLyB0aGlzLnBhZ2VTaXplJC52YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UkLm5leHQoeC5ib2R5LmlubmVyQm9keS5wYWdlTnVtYmVyKTtcclxuICAgICAgICAgICAgdGhpcy5jb25mbGljdFRvdGFsID0geC5ib2R5LmlubmVyQm9keS5jb3VudCB8fCAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IHRyeUZpbHRlckNvbmZsaWN0VHlwZSA9IHRoaXMuY29sdW1ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSAnY29uZmxpY3RUeXBlJyk7XHJcbiAgICAgIGlmICghIXRyeUZpbHRlckNvbmZsaWN0VHlwZS5sZW5ndGgpIHtcclxuICAgICAgICB0cnlGaWx0ZXJDb25mbGljdFR5cGVbMF0udGVtcGxhdGVSZWYgPSB0aGlzLmNvbmZsaWN0VHlwZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0cnlGaWx0ZXJEaWZmZXJlbmNlID0gdGhpcy5jb2x1bW5zLmZpbHRlcih4ID0+IHguZmllbGQgPT09ICdkaWZmZXJlbmNlJyk7XHJcbiAgICAgIGlmICghIXRyeUZpbHRlckRpZmZlcmVuY2UubGVuZ3RoKSB7XHJcbiAgICAgICAgdHJ5RmlsdGVyRGlmZmVyZW5jZVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMudG9vbEJsb2NrO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRyeUZpbHRlclNvdXJjZUlzUHJpbWFyeUtleSA9IHRoaXMuY29sdW1ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSAnc291cmNlSXNQcmltYXJ5S2V5Jyk7XHJcbiAgICAgIGlmICghIXRyeUZpbHRlclNvdXJjZUlzUHJpbWFyeUtleS5sZW5ndGgpIHtcclxuICAgICAgICB0cnlGaWx0ZXJTb3VyY2VJc1ByaW1hcnlLZXlbMF0udGVtcGxhdGVSZWYgPSB0aGlzLnNvdXJjZUlzUHJpbWFyeUtleTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0cnlGaWx0ZXJUYXJnZXRJc1ByaW1hcnlLZXkgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ3RhcmdldElzUHJpbWFyeUtleScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJUYXJnZXRJc1ByaW1hcnlLZXkubGVuZ3RoKSB7XHJcbiAgICAgICAgdHJ5RmlsdGVyVGFyZ2V0SXNQcmltYXJ5S2V5WzBdLnRlbXBsYXRlUmVmID0gdGhpcy50YXJnZXRJc1ByaW1hcnlLZXk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyU291cmNlSXNJZGVudGl0eUNvbHVtbiA9IHRoaXMuY29sdW1ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSAnc291cmNlSXNJZGVudGl0eUNvbHVtbicpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJTb3VyY2VJc0lkZW50aXR5Q29sdW1uLmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlclNvdXJjZUlzSWRlbnRpdHlDb2x1bW5bMF0udGVtcGxhdGVSZWYgPSB0aGlzLnNvdXJjZUlzSWRlbnRpdHlDb2x1bW47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyVGFyZ2V0SXNJZGVudGl0eUNvbHVtbiA9IHRoaXMuY29sdW1ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSAndGFyZ2V0SXNJZGVudGl0eUNvbHVtbicpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJUYXJnZXRJc0lkZW50aXR5Q29sdW1uLmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlclRhcmdldElzSWRlbnRpdHlDb2x1bW5bMF0udGVtcGxhdGVSZWYgPSB0aGlzLnRhcmdldElzSWRlbnRpdHlDb2x1bW47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyU291cmNlTnVsbGFiaWxpdHkgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ3NvdXJjZU51bGxhYmlsaXR5Jyk7XHJcbiAgICAgIGlmICghIXRyeUZpbHRlclNvdXJjZU51bGxhYmlsaXR5Lmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlclNvdXJjZU51bGxhYmlsaXR5WzBdLnRlbXBsYXRlUmVmID0gdGhpcy5zb3VyY2VOdWxsYWJpbGl0eTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0cnlGaWx0ZXJUYXJnZXROdWxsYWJpbGl0eSA9IHRoaXMuY29sdW1ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSAndGFyZ2V0TnVsbGFiaWxpdHknKTtcclxuICAgICAgaWYgKCEhdHJ5RmlsdGVyVGFyZ2V0TnVsbGFiaWxpdHkubGVuZ3RoKSB7XHJcbiAgICAgICAgdHJ5RmlsdGVyVGFyZ2V0TnVsbGFiaWxpdHlbMF0udGVtcGxhdGVSZWYgPSB0aGlzLnRhcmdldE51bGxhYmlsaXR5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRhYmxlSGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gNjAgLSA1MCAtIDQ2IC0gMzAgLSA0NTtcclxuXHJcbiAgICAgIHRoaXMucXVlcnlMaXN0UmVxdWVzdCQgPSB0aGlzLnJlcXVlc3QkLnBpcGUoXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZSwgY3VyKSA9PiBKU09OLnN0cmluZ2lmeShwcmUpID09PSBKU09OLnN0cmluZ2lmeShjdXIpKSxcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5sb25nQXBpUnVubmluZyA9IHRydWUpLFxyXG4gICAgICAgIHN3aXRjaE1hcCh4ID0+IHRoaXMuYXBwU2VydmljZS5wb3N0KCcvYXBpL1NxbFNlcnZlclBpcGVsaW5lL0NvbXBhcmVEYlN0cnVjdHVyZT91c2VodWI9dHJ1ZScsIHgpKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5xdWVyeUxpc3RTdWJzY3JpcHRpb24gPSB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxvbmdBcGlSdW5uaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCAmJiB4LmJvZHk/LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5kYXRhID0geC5ib2R5LmlubmVyQm9keS5kYXRhXHJcbiAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9IE1hdGguY2VpbCh4LmJvZHkuaW5uZXJCb2R5LmNvdW50IC8gdGhpcy5wYWdlU2l6ZSQudmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSQubmV4dCh4LmJvZHkuaW5uZXJCb2R5LnBhZ2VOdW1iZXIpO1xyXG4gICAgICAgICAgdGhpcy5jb25mbGljdFRvdGFsID0geC5ib2R5LmlubmVyQm9keS5jb3VudCB8fCAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBuZXdSZXF1ZXN0OiBJQ29tcGFyZURiU3RydWN0dXJlUmVxdWVzdCA9IHtcclxuICAgICAgICAgICAgLi4udGhpcy5yZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICAgICAgcGFnZU51bWJlcjogeFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yZXF1ZXN0JC5uZXh0KEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobmV3UmVxdWVzdCkpKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hpbmcoZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcIm9uU2VhcmNoaW5nXCIsIGUpXHJcbiAgICBjb25zdCBmaWx0ZXJlZCA9IGUuZmlsdGVyKHggPT4gISF4LnNlYXJjaEZvci5sZW5ndGgpXHJcbiAgICBjb25zdCByZXFDbG9uZWQgPSB7XHJcbiAgICAgIC4uLnRoaXMucmVxdWVzdCQudmFsdWUsXHJcbiAgICAgIGZpbHRlcjogZmlsdGVyZWRcclxuICAgIH1cclxuICAgIHRoaXMucmVxdWVzdCQubmV4dChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcUNsb25lZCkpKVxyXG4gIH1cclxuXHJcbiAgb3BlblJvd1Jlc29sdmVyKGV2ZW50OiBhbnksIGNvbnRleHQ6IGFueSkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmxvbmdBcGlSdW5uaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdCgnL2FwaS9TcWxTZXJ2ZXJQaXBlbGluZS9HZW5lcmF0ZUNvbmZsaWN0UmVzb2x2ZXJDb21tYW5kJywgY29udGV4dCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMubG9uZ0FwaVJ1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSb3dSZXNvbHZlcldpbmRvdyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnJlc29sdmVyU2Vzc2lvbklkID0geC5ib2R5LmlubmVyQm9keS5yZXNvbHZlclNlc3Npb25JZFxyXG4gICAgICAgICAgdGhpcy5zcWxDb21tYW5kID0gKHguYm9keS5pbm5lckJvZHkuc3FsQ29tbWFuZCBhcyBzdHJpbmcpLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjbG9zZVJvd1Jlc29sdmVyKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1Jvd1Jlc29sdmVyV2luZG93ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZXNvbHZlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubG9uZ0FwaVJ1bm5pbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0KCcvYXBpL1NxbFNlcnZlclBpcGVsaW5lL1J1bkNvbmZsaWN0UmVzb2x2ZXJDb21tYW5kJywge1xyXG4gICAgICAgIHJlc29sdmVyU2Vzc2lvbklkOiB0aGlzLnJlc29sdmVyU2Vzc2lvbklkLFxyXG4gICAgICAgIHNxbENvbW1hbmQ6IHRoaXMuc3FsQ29tbWFuZFxyXG4gICAgICB9KS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5sb25nQXBpUnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1Jvd1Jlc29sdmVyV2luZG93ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgb25Db3JlVGFic0hlYWRlckNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5pbmRleCA9PT0gMCkge1xyXG4gICAgICBjb25zdCBuZXdSZXF1ZXN0OiBJQ29tcGFyZURiU3RydWN0dXJlUmVxdWVzdCA9IHtcclxuICAgICAgICAuLi50aGlzLnJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgIGZvckV4dGVuZGVkOiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVxdWVzdCQubmV4dChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5ld1JlcXVlc3QpKSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmluZGV4ID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IG5ld1JlcXVlc3Q6IElDb21wYXJlRGJTdHJ1Y3R1cmVSZXF1ZXN0ID0ge1xyXG4gICAgICAgIC4uLnRoaXMucmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgZm9yRXh0ZW5kZWQ6IHRydWVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlcXVlc3QkLm5leHQoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuZXdSZXF1ZXN0KSkpO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucXVlcnlMaXN0U3Vic2NyaXB0aW9uID0gdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5sb25nQXBpUnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuZGF0YSA9IHguYm9keS5pbm5lckJvZHkuZGF0YVxyXG4gICAgICAgICAgdGhpcy5wYWdlQ291bnQgPSBNYXRoLmNlaWwoeC5ib2R5LmlubmVyQm9keS5jb3VudCAvIHRoaXMucGFnZVNpemUkLnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UkLm5leHQoeC5ib2R5LmlubmVyQm9keS5wYWdlTnVtYmVyKTtcclxuICAgICAgICAgIHRoaXMuY29uZmxpY3RUb3RhbCA9IHguYm9keS5pbm5lckJvZHkuY291bnQgfHwgMDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25Qcm9ncmVzc1dpbmRvd0Nsb3NlKGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJvblByb2dyZXNzV2luZG93Q2xvc2VcIiwgZSk7XHJcbiAgICB0aGlzLmNvbnRyb2xsZXI/LmFib3J0KCk7XHJcbiAgICB0aGlzLmxvbmdBcGlSdW5uaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnF1ZXJ5TGlzdFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh4ID0+IHg/LnVuc3Vic2NyaWJlKVxyXG4gICAgdGhpcy5xdWVyeUxpc3RTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLWNvbnRhaW5lclwiPlxyXG4gICAgPGNvcmUtcGFnZS1oZWFkZXIgW3RpdGxlXT1cIidEQiBTVFJVQ1RVUkUgQ09NUEFSRSdcIlxyXG4gICAgICAgIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuXHJcbiAgICA8Y29yZS10YWJzIFtoZWFkZXJzXT1cInRhYkhlYWRlcnNcIiBbY29udGVudHNdPVwiW11cIiBbaGVpZ2h0XT1cIjQ1XCIgW2hlYWRlckxpbmVIZWlnaHRdPVwiNDVcIlxyXG4gICAgICAgIChvbkhlYWRlckNsaWNrKT1cIm9uQ29yZVRhYnNIZWFkZXJDbGljaygkZXZlbnQpXCI+XHJcbiAgICA8L2NvcmUtdGFicz5cclxuXHJcblxyXG4gICAgPGNvcmUtdGFibGUgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFtoZWlnaHRdPVwidGFibGVIZWlnaHRcIiBbZGF0YV09XCJkYXRhXCIgW2xvYWRpbmddPVwibG9uZ0FwaVJ1bm5pbmdcIlxyXG4gICAgICAgIFthdXRvQ29sdW1uRml0QXZhaWxhYmxlU3BhY2VdPVwiZmFsc2VcIiBbZnJvemVuXT1cIjNcIiBbbGF6eUxvYWRpbmddPVwidHJ1ZVwiIFtoZWFkZXJGaXJzdFJvd0hlaWdodF09XCI4MFwiXHJcbiAgICAgICAgKG9uU2VhcmNoaW5nKT1cIm9uU2VhcmNoaW5nKCRldmVudClcIj48L2NvcmUtdGFibGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaDE1XCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGQtZmxleC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZsaWN0LXRvdGFsXCIgW2NsYXNzLmVycm9yXT1cIiEhY29uZmxpY3RUb3RhbFwiPlxyXG4gICAgICAgICAgICB7eyAhIWxvbmdBcGlSdW5uaW5nID8gJ1NjYW5uaW5nIGZvciBpc3N1ZXMuLi4nIDogKCEhY29uZmxpY3RUb3RhbCA/IGNvbmZsaWN0VG90YWwgKyAnIGNvbmZsaWN0cyBmb3VuZCEnIDogJ05vIGNvbmZsaWN0IGZvdW5kJykgfX0gXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGNvcmUtcGFnaW5hdGlvbiBbJGhlaWdodF09XCI0NlwiIFskY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2UkXCIgWyRwYWdlQ291bnRdPVwicGFnZUNvdW50XCIgWyRsb2FkaW5nXT1cImxvbmdBcGlSdW5uaW5nXCJcclxuICAgICAgICAgICAgWyRiYWNrZ3JvdW5kXT1cIicjODQ4NDg0J1wiIFskZml4ZWRQYWdlU2l6ZV09XCIyMFwiXHJcbiAgICAgICAgICAgIFskc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uXT1cInN1c3BlbmRDdXJyZW50UGFnZVN1YnNjcmlwdGlvbiRcIj48L2NvcmUtcGFnaW5hdGlvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAobG9uZ0FwaVJ1bm5pbmcpIHtcclxuICAgICAgICA8Y29yZS1hcGktcHJvZ3Jlc3MgKG9uQ2xvc2UpPVwib25Qcm9ncmVzc1dpbmRvd0Nsb3NlKCRldmVudClcIj48L2NvcmUtYXBpLXByb2dyZXNzPlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoc2hvd1Jvd1Jlc29sdmVyV2luZG93KSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudC1yb290XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXJlc29sdmVyLXdpbmRvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCInUkVTT0xWRVIgV0lORE9XJ1wiIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNsb3NlLWljb24gcG9pbnRlciBmZWF0aGVyLXggZnMyNFwiIChjbGljayk9XCJjbG9zZVJvd1Jlc29sdmVyKCRldmVudClcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3Jvd3NdPVwiJzEwJ1wiIHN0eWxlPVwiaGVpZ2h0OiA0MDBweDsgcGFkZGluZzogMTVweDtcIiBkaXNhYmxlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc3FsQ29tbWFuZCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJyZXNvbHZlKCRldmVudClcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+UnVuPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNjb25mbGljdFR5cGUgbGV0LWNvbnRleHQ9XCJjb250ZXh0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZsaWN0LXR5cGUtd3JhcHBlciBkLWZsZXggZC1mbGV4LWJldHdlZW5cIiBbYXBwVG9vbHRpcF09XCJjb250ZXh0LmNvbmZsaWN0VHlwZVwiIFtzaG93QW55d2F5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIEBzd2l0Y2ggKGNvbnRleHQuY29uZmxpY3RUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ1RNSVQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLWxheW91dCAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NNSVQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLXNpZGViYXIgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDUEtNJykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCInZmVhdGhlci16YXAgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDVE0nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLXR5cGUgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDU00nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLWxheWVycyAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NOTScpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZlYXRoZXItZHJvcGxldCAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NQU00nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLW1vdmUgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdSVCcpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZlYXRoZXItdHJhc2ggJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdSQycpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZlYXRoZXItdHJhc2ggJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3Rvb2xCbG9jayBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMgaW50ZXItZm9udCBkLWZsZXggZC1mbGV4LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLXdyYXBwZXJcIiBbYXBwVG9vbHRpcF09XCInUmVzb2x2ZSdcIiBbcG9zaXRpb25dPVwiJ3JpZ2h0J1wiIFtzaG93QW55d2F5XT1cInRydWVcIiAoY2xpY2spPVwib3BlblJvd1Jlc29sdmVyKCRldmVudCwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1wbGF5IGZzMjRcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3Bhbj57eyBjb250ZXh0LmRpZmZlcmVuY2UgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNzb3VyY2VOdWxsYWJpbGl0eSBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8Y29yZS1jaGVja2JveCBbbmdNb2RlbF09XCIhIWNvbnRleHQuc291cmNlTnVsbGFiaWxpdHlcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RhcmdldE51bGxhYmlsaXR5IGxldC1jb250ZXh0PVwiY29udGV4dFwiPlxyXG4gICAgICAgIDxjb3JlLWNoZWNrYm94IFtuZ01vZGVsXT1cIiEhY29udGV4dC50YXJnZXROdWxsYWJpbGl0eVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc291cmNlSXNQcmltYXJ5S2V5IGxldC1jb250ZXh0PVwiY29udGV4dFwiPlxyXG4gICAgICAgIDxjb3JlLWNoZWNrYm94IFtuZ01vZGVsXT1cIiEhY29udGV4dC5zb3VyY2VJc1ByaW1hcnlLZXlcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3NvdXJjZUlzSWRlbnRpdHlDb2x1bW4gbGV0LWNvbnRleHQ9XCJjb250ZXh0XCI+XHJcbiAgICAgICAgPGNvcmUtY2hlY2tib3ggW25nTW9kZWxdPVwiISFjb250ZXh0LnNvdXJjZUlzSWRlbnRpdHlDb2x1bW5cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RhcmdldElzUHJpbWFyeUtleSBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8Y29yZS1jaGVja2JveCBbbmdNb2RlbF09XCIhIWNvbnRleHQudGFyZ2V0SXNQcmltYXJ5S2V5XCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICN0YXJnZXRJc0lkZW50aXR5Q29sdW1uIGxldC1jb250ZXh0PVwiY29udGV4dFwiPlxyXG4gICAgICAgIDxjb3JlLWNoZWNrYm94IFtuZ01vZGVsXT1cIiEhY29udGV4dC50YXJnZXRJc0lkZW50aXR5Q29sdW1uXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPC9kaXY+Il19
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUvY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUvY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUEwQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHNUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQTRCLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7QUFDN0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRD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O3VCQUFDLHdCQUF3QjtnQkFDRSxzQkFBc0I7c0JBQTFELFNBQVM7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UvYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcmVUYWJsZUNvbHVtbkl0ZW0gfSBmcm9tICcuLi9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1wYWdpbmF0aW9uL2NvcmUtcGFnaW5hdGlvbi9jb3JlLXBhZ2luYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZUJ1dHRvbkdyb3VwVm5zQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZVRhYnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLXRhYnMvY29yZS10YWJzL2NvcmUtdGFicy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQXBpUHJvZ3Jlc3NDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy5jb21wb25lbnQnO1xyXG5cclxuaW50ZXJmYWNlIElDb21wYXJlRGJTdHJ1Y3R1cmVGaWx0ZXJJdGVtIHtcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIHNlYXJjaEZvcjogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSUNvbXBhcmVEYlN0cnVjdHVyZVJlcXVlc3Qge1xyXG4gIGZpbHRlcj86IElDb21wYXJlRGJTdHJ1Y3R1cmVGaWx0ZXJJdGVtW107XHJcbiAgcGFnZU51bWJlcjogbnVtYmVyO1xyXG4gIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgZm9yRXh0ZW5kZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSURiU3RydWN0dXJlRGlmZmVyZW5jZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBzb3VyY2VBbGlhczogc3RyaW5nO1xyXG4gIHRhcmdldEFsaWFzOiBzdHJpbmc7XHJcbiAgdGFibGVOYW1lOiBzdHJpbmc7XHJcbiAgY29sdW1uTmFtZTogc3RyaW5nO1xyXG4gIGNvbmZsaWN0VHlwZTogc3RyaW5nO1xyXG4gIHNvdXJjZVR5cGU/OiBzdHJpbmc7XHJcbiAgc291cmNlSXNQcmltYXJ5S2V5PzogYm9vbGVhbjtcclxuICBzb3VyY2VJc0lkZW50aXR5Q29sdW1uPzogYm9vbGVhbjtcclxuICBzb3VyY2VTaXplPzogbnVtYmVyO1xyXG4gIHNvdXJjZU51bGxhYmlsaXR5PzogYm9vbGVhbjtcclxuICBzb3VyY2VQcmVjaXNpb24/OiBudW1iZXI7XHJcbiAgc291cmNlU2NhbGU/OiBudW1iZXI7XHJcbiAgdGFyZ2V0VHlwZT86IHN0cmluZztcclxuICB0YXJnZXRJc1ByaW1hcnlLZXk/OiBib29sZWFuO1xyXG4gIHRhcmdldElzSWRlbnRpdHlDb2x1bW4/OiBib29sZWFuO1xyXG4gIHRhcmdldFNpemU/OiBudW1iZXI7XHJcbiAgdGFyZ2V0TnVsbGFiaWxpdHk/OiBib29sZWFuO1xyXG4gIHRhcmdldFByZWNpc2lvbj86IG51bWJlcjtcclxuICB0YXJnZXRTY2FsZT86IG51bWJlcjtcclxuICBkaWZmZXJlbmNlOiBzdHJpbmc7XHJcbiAgcmVzb2x2ZXJTZXNzaW9uSWQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCxcclxuICAgIENvcmVUYWJsZUNvbXBvbmVudCxcclxuICAgIENvcmVQYWdpbmF0aW9uQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZVRhYnNDb21wb25lbnQsXHJcbiAgICBDb3JlQXBpUHJvZ3Jlc3NDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlQ29tcGFyZURiUGlwZWxpbmVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZCgndG9vbEJsb2NrJykgdG9vbEJsb2NrITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdjb25mbGljdFR5cGUnKSBjb25mbGljdFR5cGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3NvdXJjZU51bGxhYmlsaXR5Jykgc291cmNlTnVsbGFiaWxpdHkhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3RhcmdldE51bGxhYmlsaXR5JykgdGFyZ2V0TnVsbGFiaWxpdHkhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3NvdXJjZUlzUHJpbWFyeUtleScpIHNvdXJjZUlzUHJpbWFyeUtleSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgndGFyZ2V0SXNQcmltYXJ5S2V5JykgdGFyZ2V0SXNQcmltYXJ5S2V5ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdzb3VyY2VJc0lkZW50aXR5Q29sdW1uJykgc291cmNlSXNJZGVudGl0eUNvbHVtbiE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgndGFyZ2V0SXNJZGVudGl0eUNvbHVtbicpIHRhcmdldElzSWRlbnRpdHlDb2x1bW4hOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBkYXRhOiBJRGJTdHJ1Y3R1cmVEaWZmZXJlbmNlW10gPSBbXTtcclxuXHJcbiAgc2hvd1Jvd1Jlc29sdmVyV2luZG93ITogYm9vbGVhbjtcclxuXHJcbiAgdGFiSGVhZGVyczogc3RyaW5nW10gPSBbXCJEZXYtVGVzdC1MaXZlXCIsIFwiRGV2LUV4dGVuZGVkXCJdXHJcblxyXG4gIGFjdGl2ZVRhYkluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICBjb2x1bW5zOiBJQ29yZVRhYmxlQ29sdW1uSXRlbVtdID0gW1xyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdpZCcsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIGhpZGRlbjogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnZGlmZmVyZW5jZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnUHJvYmxlbScsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDMwMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdjb25mbGljdFR5cGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ01hcmtlcicsXHJcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgd2lkdGg6IDUwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZUFsaWFzJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdTb3VyY2UnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiA2MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRBbGlhcycsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2V0JyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogMjAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3RhYmxlTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFibGUnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAyMDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnY29sdW1uTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnQ29sdW1uJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogMjAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZVR5cGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSB0eXBlJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogMTAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZUlzUHJpbWFyeUtleScsXHJcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBpcyBQSycsXHJcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNjBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnc291cmNlSXNJZGVudGl0eUNvbHVtbicsXHJcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBpcyBJZGVudGl0eScsXHJcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNjBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnc291cmNlTnVsbGFiaWxpdHknLFxyXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgIGNhcHRpb246ICdTb3VyY2UgbnVsbGFiaWxpdHknLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDcwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZVNpemUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBzaXplJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdzb3VyY2VQcmVjaXNpb24nLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBwcmVjaXNpb24nLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNTBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnc291cmNlU2NhbGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBzY2FsZScsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiA1MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRUeXBlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdUYXJnZXQgdHlwZScsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRJc1ByaW1hcnlLZXknLFxyXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgIGNhcHRpb246ICdUYXJnZXQgaXMgUEsnLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDYwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3RhcmdldElzSWRlbnRpdHlDb2x1bW4nLFxyXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgIGNhcHRpb246ICdUYXJnZXQgaXMgSWRlbnRpdHknLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDYwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3RhcmdldE51bGxhYmlsaXR5JyxcclxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2V0IG51bGxhYmlsaXR5JyxcclxuICAgICAgYWxpZ246ICdjZW50ZXInLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiA3MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRTaXplJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdUYXJnZXIgc2l6ZScsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAxMDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAndGFyZ2V0UHJlY2lzaW9uJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdUYXJnZXQgcHJlY2lzaW9uJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDUwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3RhcmdldFNjYWxlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdUYXJnZXQgc2NhbGUnLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNTBcclxuICAgIH0sXHJcbiAgXVxyXG5cclxuICB0YWJsZUhlaWdodDogbnVtYmVyID0gNTAwO1xyXG5cclxuICBsb25nQXBpUnVubmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBkZWZhdWx0UmVxdWVzdDogSUNvbXBhcmVEYlN0cnVjdHVyZVJlcXVlc3QgPSB7XHJcbiAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgcGFnZVNpemU6IDUwXHJcbiAgfVxyXG5cclxuICByZXF1ZXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUNvbXBhcmVEYlN0cnVjdHVyZVJlcXVlc3Q+KHRoaXMuZGVmYXVsdFJlcXVlc3QpO1xyXG5cclxuICBjdXJyZW50UGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XHJcbiAgcGFnZVNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDUwKTtcclxuICBwYWdlQ291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gIHN1c3BlbmRDdXJyZW50UGFnZVN1YnNjcmlwdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgc3FsQ29tbWFuZDogc3RyaW5nID0gJyc7XHJcbiAgcmVzb2x2ZXJTZXNzaW9uSWQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBjb25mbGljdFRvdGFsOiBudW1iZXIgPSAwO1xyXG5cclxuICBxdWVyeUxpc3RSZXF1ZXN0JCE6IE9ic2VydmFibGU8YW55PjtcclxuXHJcbiAgcHJpdmF0ZSBjb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIgfCBudWxsID0gbnVsbFxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBvdmVycmlkZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtbHMpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaExpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XHJcbiAgICB0aGlzLmxvbmdBcGlSdW5uaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdCgnL2FwaS9TcWxTZXJ2ZXJQaXBlbGluZS9Db21wYXJlRGJTdHJ1Y3R1cmU/dXNlaHViPXRydWUnLCB0aGlzLnJlcXVlc3QkLnZhbHVlLCB0aGlzLmNvbnRyb2xsZXIuc2lnbmFsKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvbmdBcGlSdW5uaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHguYm9keS5pbm5lckJvZHkuZGF0YVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9IE1hdGguY2VpbCh4LmJvZHkuaW5uZXJCb2R5LmNvdW50IC8gdGhpcy5wYWdlU2l6ZSQudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlJC5uZXh0KHguYm9keS5pbm5lckJvZHkucGFnZU51bWJlcik7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmxpY3RUb3RhbCA9IHguYm9keS5pbm5lckJvZHkuY291bnQgfHwgMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICBjb25zdCB0cnlGaWx0ZXJDb25mbGljdFR5cGUgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ2NvbmZsaWN0VHlwZScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJDb25mbGljdFR5cGUubGVuZ3RoKSB7XHJcbiAgICAgICAgdHJ5RmlsdGVyQ29uZmxpY3RUeXBlWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5jb25mbGljdFR5cGU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyRGlmZmVyZW5jZSA9IHRoaXMuY29sdW1ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSAnZGlmZmVyZW5jZScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJEaWZmZXJlbmNlLmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlckRpZmZlcmVuY2VbMF0udGVtcGxhdGVSZWYgPSB0aGlzLnRvb2xCbG9jaztcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0cnlGaWx0ZXJTb3VyY2VJc1ByaW1hcnlLZXkgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ3NvdXJjZUlzUHJpbWFyeUtleScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJTb3VyY2VJc1ByaW1hcnlLZXkubGVuZ3RoKSB7XHJcbiAgICAgICAgdHJ5RmlsdGVyU291cmNlSXNQcmltYXJ5S2V5WzBdLnRlbXBsYXRlUmVmID0gdGhpcy5zb3VyY2VJc1ByaW1hcnlLZXk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyVGFyZ2V0SXNQcmltYXJ5S2V5ID0gdGhpcy5jb2x1bW5zLmZpbHRlcih4ID0+IHguZmllbGQgPT09ICd0YXJnZXRJc1ByaW1hcnlLZXknKTtcclxuICAgICAgaWYgKCEhdHJ5RmlsdGVyVGFyZ2V0SXNQcmltYXJ5S2V5Lmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlclRhcmdldElzUHJpbWFyeUtleVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMudGFyZ2V0SXNQcmltYXJ5S2V5O1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRyeUZpbHRlclNvdXJjZUlzSWRlbnRpdHlDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ3NvdXJjZUlzSWRlbnRpdHlDb2x1bW4nKTtcclxuICAgICAgaWYgKCEhdHJ5RmlsdGVyU291cmNlSXNJZGVudGl0eUNvbHVtbi5sZW5ndGgpIHtcclxuICAgICAgICB0cnlGaWx0ZXJTb3VyY2VJc0lkZW50aXR5Q29sdW1uWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5zb3VyY2VJc0lkZW50aXR5Q29sdW1uO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRyeUZpbHRlclRhcmdldElzSWRlbnRpdHlDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ3RhcmdldElzSWRlbnRpdHlDb2x1bW4nKTtcclxuICAgICAgaWYgKCEhdHJ5RmlsdGVyVGFyZ2V0SXNJZGVudGl0eUNvbHVtbi5sZW5ndGgpIHtcclxuICAgICAgICB0cnlGaWx0ZXJUYXJnZXRJc0lkZW50aXR5Q29sdW1uWzBdLnRlbXBsYXRlUmVmID0gdGhpcy50YXJnZXRJc0lkZW50aXR5Q29sdW1uO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRyeUZpbHRlclNvdXJjZU51bGxhYmlsaXR5ID0gdGhpcy5jb2x1bW5zLmZpbHRlcih4ID0+IHguZmllbGQgPT09ICdzb3VyY2VOdWxsYWJpbGl0eScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJTb3VyY2VOdWxsYWJpbGl0eS5sZW5ndGgpIHtcclxuICAgICAgICB0cnlGaWx0ZXJTb3VyY2VOdWxsYWJpbGl0eVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuc291cmNlTnVsbGFiaWxpdHk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyVGFyZ2V0TnVsbGFiaWxpdHkgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ3RhcmdldE51bGxhYmlsaXR5Jyk7XHJcbiAgICAgIGlmICghIXRyeUZpbHRlclRhcmdldE51bGxhYmlsaXR5Lmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlclRhcmdldE51bGxhYmlsaXR5WzBdLnRlbXBsYXRlUmVmID0gdGhpcy50YXJnZXROdWxsYWJpbGl0eTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy50YWJsZUhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIDYwIC0gNTAgLSA0NiAtIDMwIC0gNDU7XHJcblxyXG4gICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkID0gdGhpcy5yZXF1ZXN0JC5waXBlKFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmUsIGN1cikgPT4gSlNPTi5zdHJpbmdpZnkocHJlKSA9PT0gSlNPTi5zdHJpbmdpZnkoY3VyKSksXHJcbiAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29udHJvbGxlcj8uYWJvcnQoKTtcclxuICAgICAgICAgIGlmICghdGhpcy5sb25nQXBpUnVubmluZykgdGhpcy5sb25nQXBpUnVubmluZyA9IHRydWVcclxuICAgICAgICB9KSxcclxuICAgICAgICBzd2l0Y2hNYXAoeCA9PiB0aGlzLmFwcFNlcnZpY2UucG9zdCgnL2FwaS9TcWxTZXJ2ZXJQaXBlbGluZS9Db21wYXJlRGJTdHJ1Y3R1cmU/dXNlaHViPXRydWUnLCB4KSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIFxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIHRoaXMubG9uZ0FwaVJ1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0geC5ib2R5LmlubmVyQm9keS5kYXRhXHJcbiAgICAgICAgICAgIHRoaXMucGFnZUNvdW50ID0gTWF0aC5jZWlsKHguYm9keS5pbm5lckJvZHkuY291bnQgLyB0aGlzLnBhZ2VTaXplJC52YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UkLm5leHQoeC5ib2R5LmlubmVyQm9keS5wYWdlTnVtYmVyKTtcclxuICAgICAgICAgICAgdGhpcy5jb25mbGljdFRvdGFsID0geC5ib2R5LmlubmVyQm9keS5jb3VudCB8fCAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5ld1JlcXVlc3Q6IElDb21wYXJlRGJTdHJ1Y3R1cmVSZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLnJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgICAgICBwYWdlTnVtYmVyOiB4XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnJlcXVlc3QkLm5leHQoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuZXdSZXF1ZXN0KSkpXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvblNlYXJjaGluZyhlOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwib25TZWFyY2hpbmdcIiwgZSlcclxuICAgIGNvbnN0IGZpbHRlcmVkID0gZS5maWx0ZXIoeCA9PiAhIXguc2VhcmNoRm9yLmxlbmd0aClcclxuICAgIGNvbnN0IHJlcUNsb25lZCA9IHtcclxuICAgICAgLi4udGhpcy5yZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgZmlsdGVyOiBmaWx0ZXJlZFxyXG4gICAgfVxyXG4gICAgdGhpcy5yZXF1ZXN0JC5uZXh0KEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVxQ2xvbmVkKSkpXHJcbiAgfVxyXG5cclxuICBvcGVuUm93UmVzb2x2ZXIoZXZlbnQ6IGFueSwgY29udGV4dDogYW55KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMubG9uZ0FwaVJ1bm5pbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0KCcvYXBpL1NxbFNlcnZlclBpcGVsaW5lL0dlbmVyYXRlQ29uZmxpY3RSZXNvbHZlckNvbW1hbmQnLCBjb250ZXh0KS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5sb25nQXBpUnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1Jvd1Jlc29sdmVyV2luZG93ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVzb2x2ZXJTZXNzaW9uSWQgPSB4LmJvZHkuaW5uZXJCb2R5LnJlc29sdmVyU2Vzc2lvbklkXHJcbiAgICAgICAgICB0aGlzLnNxbENvbW1hbmQgPSAoeC5ib2R5LmlubmVyQm9keS5zcWxDb21tYW5kIGFzIHN0cmluZykudHJpbSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNsb3NlUm93UmVzb2x2ZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaG93Um93UmVzb2x2ZXJXaW5kb3cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlc29sdmUoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5sb25nQXBpUnVubmluZyA9IHRydWU7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoJy9hcGkvU3FsU2VydmVyUGlwZWxpbmUvUnVuQ29uZmxpY3RSZXNvbHZlckNvbW1hbmQnLCB7XHJcbiAgICAgICAgcmVzb2x2ZXJTZXNzaW9uSWQ6IHRoaXMucmVzb2x2ZXJTZXNzaW9uSWQsXHJcbiAgICAgICAgc3FsQ29tbWFuZDogdGhpcy5zcWxDb21tYW5kXHJcbiAgICAgIH0pLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxvbmdBcGlSdW5uaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCAmJiB4LmJvZHk/LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93Um93UmVzb2x2ZXJXaW5kb3cgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaExpc3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBvbkNvcmVUYWJzSGVhZGVyQ2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIGlmIChldmVudC5pbmRleCA9PT0gMCkge1xyXG4gICAgICBjb25zdCBuZXdSZXF1ZXN0OiBJQ29tcGFyZURiU3RydWN0dXJlUmVxdWVzdCA9IHtcclxuICAgICAgICAuLi50aGlzLnJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgIGZvckV4dGVuZGVkOiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVxdWVzdCQubmV4dChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5ld1JlcXVlc3QpKSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmluZGV4ID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IG5ld1JlcXVlc3Q6IElDb21wYXJlRGJTdHJ1Y3R1cmVSZXF1ZXN0ID0ge1xyXG4gICAgICAgIC4uLnRoaXMucmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgZm9yRXh0ZW5kZWQ6IHRydWVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlcXVlc3QkLm5leHQoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuZXdSZXF1ZXN0KSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Qcm9ncmVzc1dpbmRvd0Nsb3NlKGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJvblByb2dyZXNzV2luZG93Q2xvc2VcIiwgZSk7XHJcbiAgICB0aGlzLmNvbnRyb2xsZXI/LmFib3J0KCk7XHJcbiAgICB0aGlzLmxvbmdBcGlSdW5uaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHggPT4geD8udW5zdWJzY3JpYmUpXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLWNvbnRhaW5lclwiPlxyXG4gICAgPGNvcmUtcGFnZS1oZWFkZXIgW3RpdGxlXT1cIidEQiBTVFJVQ1RVUkUgQ09NUEFSRSdcIlxyXG4gICAgICAgIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuXHJcbiAgICA8Y29yZS10YWJzIFtoZWFkZXJzXT1cInRhYkhlYWRlcnNcIiBbY29udGVudHNdPVwiW11cIiBbaGVpZ2h0XT1cIjQ1XCIgW2hlYWRlckxpbmVIZWlnaHRdPVwiNDVcIlxyXG4gICAgICAgIChvbkhlYWRlckNsaWNrKT1cIm9uQ29yZVRhYnNIZWFkZXJDbGljaygkZXZlbnQpXCI+XHJcbiAgICA8L2NvcmUtdGFicz5cclxuXHJcblxyXG4gICAgPGNvcmUtdGFibGUgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFtoZWlnaHRdPVwidGFibGVIZWlnaHRcIiBbZGF0YV09XCJkYXRhXCIgW2xvYWRpbmddPVwibG9uZ0FwaVJ1bm5pbmdcIlxyXG4gICAgICAgIFthdXRvQ29sdW1uRml0QXZhaWxhYmxlU3BhY2VdPVwiZmFsc2VcIiBbZnJvemVuXT1cIjNcIiBbbGF6eUxvYWRpbmddPVwidHJ1ZVwiIFtoZWFkZXJGaXJzdFJvd0hlaWdodF09XCI4MFwiXHJcbiAgICAgICAgKG9uU2VhcmNoaW5nKT1cIm9uU2VhcmNoaW5nKCRldmVudClcIj48L2NvcmUtdGFibGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaDE1XCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGQtZmxleC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZsaWN0LXRvdGFsXCIgW2NsYXNzLmVycm9yXT1cIiEhY29uZmxpY3RUb3RhbFwiPlxyXG4gICAgICAgICAgICB7eyAhIWxvbmdBcGlSdW5uaW5nID8gJ1NjYW5uaW5nIGZvciBpc3N1ZXMuLi4nIDogKCEhY29uZmxpY3RUb3RhbCA/IGNvbmZsaWN0VG90YWwgKyAnIGNvbmZsaWN0cyBmb3VuZCEnIDogJ05vIGNvbmZsaWN0IGZvdW5kJykgfX0gXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGNvcmUtcGFnaW5hdGlvbiBbJGhlaWdodF09XCI0NlwiIFskY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2UkXCIgWyRwYWdlQ291bnRdPVwicGFnZUNvdW50XCIgWyRsb2FkaW5nXT1cImxvbmdBcGlSdW5uaW5nXCJcclxuICAgICAgICAgICAgWyRiYWNrZ3JvdW5kXT1cIicjODQ4NDg0J1wiIFskZml4ZWRQYWdlU2l6ZV09XCIyMFwiXHJcbiAgICAgICAgICAgIFskc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uXT1cInN1c3BlbmRDdXJyZW50UGFnZVN1YnNjcmlwdGlvbiRcIj48L2NvcmUtcGFnaW5hdGlvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAobG9uZ0FwaVJ1bm5pbmcpIHtcclxuICAgICAgICA8Y29yZS1hcGktcHJvZ3Jlc3MgKG9uQ2xvc2UpPVwib25Qcm9ncmVzc1dpbmRvd0Nsb3NlKCRldmVudClcIj48L2NvcmUtYXBpLXByb2dyZXNzPlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoc2hvd1Jvd1Jlc29sdmVyV2luZG93KSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudC1yb290XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXJlc29sdmVyLXdpbmRvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCInUkVTT0xWRVIgV0lORE9XJ1wiIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNsb3NlLWljb24gcG9pbnRlciBmZWF0aGVyLXggZnMyNFwiIChjbGljayk9XCJjbG9zZVJvd1Jlc29sdmVyKCRldmVudClcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3Jvd3NdPVwiJzEwJ1wiIHN0eWxlPVwiaGVpZ2h0OiA0MDBweDsgcGFkZGluZzogMTVweDtcIiBkaXNhYmxlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc3FsQ29tbWFuZCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJyZXNvbHZlKCRldmVudClcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+UnVuPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNjb25mbGljdFR5cGUgbGV0LWNvbnRleHQ9XCJjb250ZXh0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZsaWN0LXR5cGUtd3JhcHBlciBkLWZsZXggZC1mbGV4LWJldHdlZW5cIiBbYXBwVG9vbHRpcF09XCJjb250ZXh0LmNvbmZsaWN0VHlwZVwiIFtzaG93QW55d2F5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIEBzd2l0Y2ggKGNvbnRleHQuY29uZmxpY3RUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ1RNSVQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLWxheW91dCAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NNSVQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLXNpZGViYXIgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDUEtNJykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCInZmVhdGhlci16YXAgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDVE0nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLXR5cGUgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDU00nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLWxheWVycyAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NOTScpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZlYXRoZXItZHJvcGxldCAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NQU00nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLW1vdmUgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdSVCcpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZlYXRoZXItdHJhc2ggJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdSQycpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZlYXRoZXItdHJhc2ggJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3Rvb2xCbG9jayBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMgaW50ZXItZm9udCBkLWZsZXggZC1mbGV4LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLXdyYXBwZXJcIiBbYXBwVG9vbHRpcF09XCInUmVzb2x2ZSdcIiBbcG9zaXRpb25dPVwiJ3JpZ2h0J1wiIFtzaG93QW55d2F5XT1cInRydWVcIiAoY2xpY2spPVwib3BlblJvd1Jlc29sdmVyKCRldmVudCwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1wbGF5IGZzMjRcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3Bhbj57eyBjb250ZXh0LmRpZmZlcmVuY2UgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNzb3VyY2VOdWxsYWJpbGl0eSBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8Y29yZS1jaGVja2JveCBbbmdNb2RlbF09XCIhIWNvbnRleHQuc291cmNlTnVsbGFiaWxpdHlcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RhcmdldE51bGxhYmlsaXR5IGxldC1jb250ZXh0PVwiY29udGV4dFwiPlxyXG4gICAgICAgIDxjb3JlLWNoZWNrYm94IFtuZ01vZGVsXT1cIiEhY29udGV4dC50YXJnZXROdWxsYWJpbGl0eVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc291cmNlSXNQcmltYXJ5S2V5IGxldC1jb250ZXh0PVwiY29udGV4dFwiPlxyXG4gICAgICAgIDxjb3JlLWNoZWNrYm94IFtuZ01vZGVsXT1cIiEhY29udGV4dC5zb3VyY2VJc1ByaW1hcnlLZXlcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3NvdXJjZUlzSWRlbnRpdHlDb2x1bW4gbGV0LWNvbnRleHQ9XCJjb250ZXh0XCI+XHJcbiAgICAgICAgPGNvcmUtY2hlY2tib3ggW25nTW9kZWxdPVwiISFjb250ZXh0LnNvdXJjZUlzSWRlbnRpdHlDb2x1bW5cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RhcmdldElzUHJpbWFyeUtleSBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8Y29yZS1jaGVja2JveCBbbmdNb2RlbF09XCIhIWNvbnRleHQudGFyZ2V0SXNQcmltYXJ5S2V5XCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICN0YXJnZXRJc0lkZW50aXR5Q29sdW1uIGxldC1jb250ZXh0PVwiY29udGV4dFwiPlxyXG4gICAgICAgIDxjb3JlLWNoZWNrYm94IFtuZ01vZGVsXT1cIiEhY29udGV4dC50YXJnZXRJc0lkZW50aXR5Q29sdW1uXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPC9kaXY+Il19
@@ -56,9 +56,16 @@ export class CoreNavigationTrackerComponent {
56
56
  ngAfterViewInit() {
57
57
  setTimeout(() => {
58
58
  const isDevelopment = isDevMode();
59
- console.log("isDevelopment", isDevelopment);
60
59
  if (isDevelopment && !this.dvs.securityPassed$.value) {
61
- this.dvs.validateDeveloperViaPopup();
60
+ this.dvs.validateFromCookie().subscribe(x => {
61
+ if (x.ok && x.status === 200 && x.body?.innerBody === true) {
62
+ this.dvs.securityPassed$.next(true);
63
+ }
64
+ this.dvs.securityCheckedViaApi$.next(true);
65
+ });
66
+ this.subscriptions.push(this.dvs.securityCheckedViaApi$.pipe(filter(x => !!x)).subscribe(_ => {
67
+ this.dvs.validateDeveloperViaPopup();
68
+ }));
62
69
  }
63
70
  });
64
71
  setTimeout(() => {
@@ -314,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
314
321
  type: Component,
315
322
  args: [{ selector: 'core-navigation-tracker', imports: [], template: "" }]
316
323
  }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.DeveloperValidationService }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i4.RoutingService }, { type: i5.LayoutService }, { type: i6.HubConnectionService }, { type: i7.UserActivityService }, { type: i8.UrlService }, { type: i9.NavigatorService }, { type: i10.AlertService }, { type: i11.DialogService }, { type: i12.MultiLanguageService }, { type: i13.AppService }, { type: i14.AppConfigService }, { type: i15.MenuService }, { type: i16.ClientService }] });
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBMEMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQXlDLE1BQU0saUJBQWlCLENBQUM7QUFDdk0sT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFNBQVMsRUFBTyxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFZaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHMUQsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTTNGLE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCakYsTUFBTSxPQUFPLDhCQUE4QjtJQXNDekMsWUFDVSxXQUF3QixFQUN4QixHQUErQixFQUMvQixN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Q0FBQTtZQUNsQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDOzhHQTlYVSw4QkFBOEI7a0dBQTlCLDhCQUE4QixtRkMxQzNDLEVBQUE7OzJGRDBDYSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0UseUJBQXlCLFdBQzFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FcnJvciwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZUNvbmZpZ0xvYWRFbmQsIFJvdXRlciwgUm91dGVyRXZlbnQsIFJvdXRlc1JlY29nbml6ZWQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZpbHRlciwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW51bVNpZ25hbFJUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZW51bS9FbnVtU2lnbmFsUlR5cGUnO1xyXG5pbXBvcnQgeyBJSHViQ29ubmVjdGlvbkFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JSHViQ29ubmVjdGlvbkFjdGl2aXR5JztcclxuaW1wb3J0IHsgUm91dGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yb3V0aW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2h1Yi1jb25uZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXNlci1hY3Rpdml0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVJvdXRpbmdIaXN0b3J5SXRlbSB9IGZyb20gJy4uLy4uL2NvcmUtcm91dGluZy1oaXN0b3J5L2NvcmUtcm91dGluZy1oaXN0b3J5L2NvcmUtcm91dGluZy1oaXN0b3J5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFVybFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91cmwuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJTmF2aWdhdG9ySXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSU5hdmlnYXRvckl0ZW0nO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhbGVydE9wdGlvbnMsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElBdXRoRGF0YSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUF1dGhEYXRhJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IERldmVsb3BlclZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZGV2ZWxvcGVyLXZhbGlkYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xpZW50U2VydmljZSwgRW51bURldmljZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMb2dVc2VyQWN0aXZpdHkge1xyXG4gIGNsaWVudENvZGU6IHN0cmluZztcclxuICBhcHBUeXBlOiBzdHJpbmc7XHJcbiAgdXNlcm5hbWU/OiBzdHJpbmc7XHJcbiAgc2lkPzogc3RyaW5nO1xyXG4gIGxvZ2luVGltZT86IERhdGU7XHJcbiAgYWNjZXNzVGltZTogRGF0ZTtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XHJcbn1cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLW5hdmlnYXRpb24tdHJhY2tlcicsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlTmF2aWdhdGlvblRyYWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBuYXZpZ2F0aW5nITogYm9vbGVhbjtcclxuICB1cmwhOiBzdHJpbmc7XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIGFwcENvbmZpZzogYW55ID0ge1xyXG4gICAgc2hvd0xheW91dDogJ2ZhbHNlJ1xyXG4gIH07XHJcblxyXG4gIGFwcEluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgc3VibWl0dGluZyE6IGJvb2xlYW47XHJcbiAgbWVudU9wZW4hOiBib29sZWFuO1xyXG4gIGxlZnRiYXJSZWR1Y2VkITogYm9vbGVhbjtcclxuICBrZXl3b3JkITogc3RyaW5nO1xyXG4gIHNpZCE6IHN0cmluZztcclxuICB1c2VybmFtZSE6IHN0cmluZztcclxuICBleHBpcmVzQXQhOiBzdHJpbmc7XHJcbiAgYXZhdGFyITogc3RyaW5nO1xyXG5cclxuXHJcbiAgdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICByb3V0aW5nSGlzdG9yeTogSVJvdXRpbmdIaXN0b3J5SXRlbVtdID0gW107XHJcblxyXG4gIHBlbmRpbmdVcmwhOiBzdHJpbmc7XHJcbiAgbGFzdENsaWNrZWRNZW51SXRlbSE6IElOYXZpZ2F0b3JJdGVtIHwgbnVsbDtcclxuICBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nITogc3RyaW5nO1xyXG5cclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgZHZzVmFsaWRhdGluZyE6IGJvb2xlYW47XHJcbiAgZHZzU2VjdXJpdHlQYXNzZWQhOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkdnM6IERldmVsb3BlclZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgaHViQ29ubmVjdGlvblNlcnZpY2U6IEh1YkNvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyQWN0aXZpdHlTZXJ2aWNlOiBVc2VyQWN0aXZpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1cmxTZXJ2aWNlOiBVcmxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwU2VydmljZTogQXBwU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbGllbnRTZXJ2aWNlOiBDbGllbnRTZXJ2aWNlXHJcbiAgKSB7XHJcblxyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJjb2RlVmVyaWZpZXJcIilcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC5waXBlKGZpbHRlcihzID0+ICEhcykpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW0gPSB4XHJcbiAgICAgICAgdGhpcy5sYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nID0gYFske3g/LmlkfV09PiR7dGhpcy5tbHMudHJhbnMoeCEuY29kZSl9PT4oJHt4Py51cmx9KWBcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgaXNEZXZlbG9wbWVudCA9IGlzRGV2TW9kZSgpO1xyXG4gICAgICBjb25zb2xlLmxvZyhcImlzRGV2ZWxvcG1lbnRcIiwgaXNEZXZlbG9wbWVudClcclxuICAgICAgaWYgKGlzRGV2ZWxvcG1lbnQgJiYgIXRoaXMuZHZzLnNlY3VyaXR5UGFzc2VkJC52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZHZzLnZhbGlkYXRlRGV2ZWxvcGVyVmlhUG9wdXAoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQodGhpcy5yb3V0ZXIudXJsKTtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLnN1YnNjcmliZSh4ID0+IHRoaXMucm91dGluZ0hpc3RvcnkgPSB4KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChyb3V0ZXJFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrUm91dGVyRXZlbnQocm91dGVyRXZlbnQgYXMgUm91dGVyRXZlbnQpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQucGlwZShcclxuICAgICAgICAgIGZpbHRlcih4ID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDb25maXJtRGlhbG9nJC52YWx1ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4gISEhWycvJ10uaW5jbHVkZXMoeClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpZ25vcmVkUGF0aHMgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLmlnbm9yZWRQYXRocyQudmFsdWU7XHJcbiAgICAgICAgICBjb25zdCBmdWxsRnVuY3Rpb25zID0gdGhpcy5yb3V0aW5nU2VydmljZS5mdWxsRnVuY3Rpb25zJC52YWx1ZT8uZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gIWlnbm9yZWRQYXRocz8uaW5jbHVkZXMoZi5wYXRoKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBjb25zdCBmdW5jdGlvbkZpbHRlciA9IGZ1bGxGdW5jdGlvbnMuZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZi5wYXRoRnVsbE1hdGNoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGYucGF0aCA9PT0geDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvL3JldHVybiB4LmluZGV4T2YoZi5wYXRoKSA9PT0gMFxyXG5cclxuICAgICAgICAgICAgICAvLyBleHBlcmltZW50YWwgc2luY2UgMjAyNC0wNC0wMlxyXG4gICAgICAgICAgICAgIHJldHVybiB4LmluZGV4T2YoZi5wYXRoKSA+PSAwIC8vIGZvciBzb21lIGF1eGlsaWFyeSByb3V0ZXMsIGZvciBleCAuLi4ocG9wdXBBdXgyOm9ubGluZS11c2VycykgdG8gYmUgYWNjZXB0YWJsZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZ1bmN0aW9uRmlsdGVyXCIsIGlnbm9yZWRQYXRocylcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZnVuY3Rpb25GaWx0ZXJcIiwgZnVuY3Rpb25GaWx0ZXIpXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZ1bmN0aW9uRmlsdGVyXCIsIGlnbm9yZWRQYXRocy5pbmNsdWRlcyhcIi9jbXMvc3lzdGVtL3VwZXJtaXNzaW9uLzBcIikpXHJcblxyXG4gICAgICAgICAgaWYgKHguaW5kZXhPZignL3Jvb3QnKSAhPT0gMCAmJiAhISFmdW5jdGlvbkZpbHRlci5sZW5ndGggJiYgISEhaWdub3JlZFBhdGhzLmluY2x1ZGVzKHgpICYmICEhdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC52YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNSb290KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtZWQ6IGZhbHNlXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNyZWF0ZU5ldyhcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19USVRMRSxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuWUVTLFxyXG4gICAgICAgICAgICAgICAgRW51bVRyYW5zbGF0ZUtleS5JR05PUkUsXHJcbiAgICAgICAgICAgICAgICBmYWxzZSxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuUk9PVF9DVVJSRU5UX1VSTF9ET0VTX05PVF9FWElTVF9JTl9BUFBfRlVOQ1RJT05fUEFUSF9ET19ZT1VfV0FOVF9UT19NQVAsXHJcbiAgICAgICAgICAgICAgICBbeF1cclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoZnVuY3Rpb25GaWx0ZXIubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGByb3V0aW5nU2VydmljZS5jdXJyZW50RnVuY3Rpb24kIGNoYW5nZWQgdG8gYCwgZnVuY3Rpb25GaWx0ZXJbMF0ucGF0aClcclxuICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50RnVuY3Rpb24kLm5leHQoZnVuY3Rpb25GaWx0ZXJbMF0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIC8vIHRyeSB0byBzZXQgY3VycmVudCBmdW5jdGlvbiBpbW1lZGlhdGVseSB3aGVuIHVzZXIgaGFzIHByZXNzZWQgRjVcclxuXHJcblxyXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICAgIGNvbnN0IGlnbm9yZWRQYXRocyA9IHRoaXMucm91dGluZ1NlcnZpY2UuaWdub3JlZFBhdGhzJC52YWx1ZTtcclxuICAgICAgY29uc3QgZnVsbEZ1bmN0aW9ucyA9IHRoaXMucm91dGluZ1NlcnZpY2UuZnVsbEZ1bmN0aW9ucyQudmFsdWU/LmZpbHRlcihmID0+IHtcclxuICAgICAgICByZXR1cm4gIWlnbm9yZWRQYXRocz8uaW5jbHVkZXMoZi5wYXRoKVxyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgZnVuY3Rpb25GaWx0ZXIgPSBmdWxsRnVuY3Rpb25zLmZpbHRlcihmID0+IHtcclxuICAgICAgICBpZiAoZi5wYXRoRnVsbE1hdGNoKSB7XHJcbiAgICAgICAgICByZXR1cm4gZi5wYXRoID09PSB1cmw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB1cmwuaW5kZXhPZihmLnBhdGgpID09PSAwXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgICBpZiAoISFmdW5jdGlvbkZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoZnVuY3Rpb25GaWx0ZXIubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgIHZhciBmdW5jdGlvbkZpbHRlckxpbmtzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgICBmdW5jdGlvbkZpbHRlci5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgICAgZnVuY3Rpb25GaWx0ZXJMaW5rcy5wdXNoKHgucGF0aCArIFwiIChcIiArICh4LnBhdGhGdWxsTWF0Y2ggPyBcInTGsMahbmcg4bupbmcgdG/DoG4gcGjhuqduXCIgOiBcInTGsMahbmcg4bupbmcgcGjhuqduIGLDqm4gdHLDoWlcIikgKyBcIilcIilcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgYE5oaeG7gXUgaMahbiAwMSBjaOG7qWMgbsSDbmcgY8O5bmcgxJFhbmcgdMawxqFuZyDhu6luZyB24bubaSDEkWnhu4F1IGjGsOG7m25nICR7dXJsfTpcXG4ke0pTT04uc3RyaW5naWZ5KGZ1bmN0aW9uRmlsdGVyTGlua3MsIG51bGwsIDIpfWAsXHJcbiAgICAgICAgICAgICAgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnNcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gTuG6v3Uga2jDtG5nIHBo4bqjaSBJU19ST09UIGPFqW5nIGtow7RuZyBwaOG6o2kgSVNfQURNSU4gdGjDrCDEkWnhu4F1IGjGsOG7m25nIHbhu4EgdHJhbmcgY2jhu6dcclxuICAgICAgICAgIGlmICghdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNSb290ICYmICF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc0FkbWluKSB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvaG9tZScpXHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gS2nhu4NtIHRyYSB4ZW0gY8OzIHF1eeG7gW4gduG7m2kgRnVuY3Rpb24gaGnhu4duIHThuqFpIGhheSBraMO0bmdcclxuICAgICAgICAgIGNvbnN0IHRyeUZpbmQgPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5wZXJtaXNzaW9uQWN0aW9ucy5maWx0ZXIoeCA9PiB4LmZ1bmN0aW9uSWQgPT09IGZ1bmN0aW9uRmlsdGVyWzBdLmlkKVxyXG4gICAgICAgICAgLy8gTuG6v3Uga2jDtG5nIHTDrG0gdGjhuqV5IHbDoCBraMO0bmcgcGjhuqNpIElTX1JPT1QgY8Wpbmcga2jDtG5nIHBo4bqjaSBJU19BRE1JTiB0aMOsIMSRxrBhIHJhIHRow7RuZyBiw6FvIHbDoCDEkWnhu4F1IGjGsOG7m25nIHbhu4EgdHJhbmcgY2jhu6dcclxuICAgICAgICAgIC8vIFwiL2F1dGgvbG9naW5cIiDEkcaw4bujYyBi4buPIHF1YVxyXG4gICAgICAgICAgaWYgKCF0cnlGaW5kPy5sZW5ndGggJiYgIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzUm9vdCAmJiAhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNBZG1pbikge1xyXG4gICAgICAgICAgICBpZiAoIShbXCIvYXV0aC9sb2dpblwiLCBcIi9ob21lXCJdLmluY2x1ZGVzKGZ1bmN0aW9uRmlsdGVyWzBdLnBhdGgpKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbkZpbHRlclswXS5wYXRoICsgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoJ0NPUkUuUEVSTUlTU0lPTi5USEVfUEFUSF9JU19OT1RfUEVSTUlUVEVEJyksXHJcbiAgICAgICAgICAgICAgICBhbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2hvbWUnKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50RnVuY3Rpb24kLm5leHQoZnVuY3Rpb25GaWx0ZXJbMF0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNoZWNrUm91dGVyRXZlbnQocm91dGVyRXZlbnQ6IFJvdXRlckV2ZW50KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XHJcblxyXG4gICAgICBpZiAodGhpcy5jbGllbnRTZXJ2aWNlLmdldEJyb3dzZXJPU0FuZERldmljZSgpLmRldmljZVR5cGUgPT09IEVudW1EZXZpY2VUeXBlLk1PQklMRV9ERVZJQ0UpIHtcclxuICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmlzT3BlbiQubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UubmF2aWdhdGlvblVybCQubmV4dChyb3V0ZXJFdmVudC51cmwpO1xyXG5cclxuICAgICAgLy8gU2tpcCBuYXZpZ2F0aW5nIGVmZmVjdCB3aGVuIHRoZSBuYXZpZ2F0aW9uIHN0YXJ0cyB3aXRoIC9jbXMvcHJvZmlsZS9idXNpbmVzcy9zdGFmZnByb2ZpbGVcclxuICAgICAgaWYgKHJvdXRlckV2ZW50LnVybC5pbmRleE9mKFwiL2Ntcy9wcm9maWxlL2J1c2luZXNzL3N0YWZmcHJvZmlsZVwiKSAhPT0gMCkge1xyXG4gICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UubmF2aWdhdGluZyQubmV4dCh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChyb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuXHJcbiAgICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNGaXJzdExvZ2luICYmIHRoaXMudXJsICE9PSAnL2Ntcy9jaGFuZ2UtcGFzc3dvcmQnKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjbXMnLCAnY2hhbmdlLXBhc3N3b3JkJywgYnRvYSgodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZSBhcyBJQXV0aERhdGEpLnJlZnJlc2hUb2tlbi51c2VyKV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdSb3V0aW5nSGlzdG9yeTogSVJvdXRpbmdIaXN0b3J5SXRlbVtdID0gdGhpcy5yb3V0aW5nU2VydmljZS5yb3V0aW5nSGlzdG9yeSQudmFsdWU7XHJcbiAgICAgIG5ld1JvdXRpbmdIaXN0b3J5LnB1c2goeyBmdWxsVXJsOiB0aGlzLnVybCB9KTtcclxuICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5yb3V0aW5nSGlzdG9yeSQubmV4dChuZXdSb3V0aW5nSGlzdG9yeSk7XHJcblxyXG4gICAgICBjb25zdCB1c2VyQWN0aXZpdHkgPSB0aGlzLnVzZXJBY3Rpdml0eVNlcnZpY2UudXNlckFjdGl2aXR5JC52YWx1ZTtcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU7XHJcblxyXG4gICAgICBjb25zdCBuZXdVc2VyQWN0aXZpdHkgPSB1c2VyQWN0aXZpdHkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zaWQgIT09IGF1dGg/LmlkKVxyXG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5odWJDb25uZWN0aW9uJC52YWx1ZTtcclxuICAgICAgbmV3VXNlckFjdGl2aXR5LnB1c2goe1xyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUhLFxyXG4gICAgICAgIHVzZXJuYW1lOiBhdXRoPy51c2VyTmFtZSEsXHJcbiAgICAgICAgcGF0aG5hbWU6IHRoaXMudXJsLFxyXG4gICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyISxcclxuICAgICAgICBodWJDb25uZWN0aW9uSWQ6IGNvbm5lY3Rpb24/LmNvbm5lY3Rpb25JZCEsXHJcbiAgICAgICAgYWNjZXNzVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCksXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBjb25zdCBhY2Nlc3NNb21lbnQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBjb25zdCBhY2Nlc3NUaW1lID0gYWNjZXNzTW9tZW50LmdldFRpbWUoKTtcclxuXHJcbiAgICAgIGNvbnN0IGFjdGl2aXR5OiBJSHViQ29ubmVjdGlvbkFjdGl2aXR5ID0ge1xyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUhLFxyXG4gICAgICAgIHNpZ25hbFR5cGU6IEVudW1TaWduYWxSVHlwZS5BQ1RJVklUWSxcclxuICAgICAgICB1c2VybmFtZTogYXV0aD8udXNlck5hbWUhLFxyXG4gICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyISxcclxuICAgICAgICBtZXNzYWdlOiBgJHthdXRoPy51c2VyTmFtZX0gbmF2aWdhdGVkIHRvICR7bG9jYXRpb24ucGF0aG5hbWV9YCxcclxuICAgICAgICBsb2dpblRpbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmxvZ2luVGltZSEsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgc2lkOiBhdXRoPy5mdWxsTmFtZSxcclxuICAgICAgICAgIHVzZXJOYW1lOiBhdXRoPy51c2VyTmFtZSxcclxuICAgICAgICAgIHBhdGhuYW1lOiB0aGlzLnVybCxcclxuICAgICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyLFxyXG4gICAgICAgICAgaHViQ29ubmVjdGlvbklkOiBjb25uZWN0aW9uPy5jb25uZWN0aW9uSWQhLFxyXG4gICAgICAgICAgYWNjZXNzVGltZSxcclxuICAgICAgICAgIHVzZXJBY3Rpdml0eTogbmV3VXNlckFjdGl2aXR5LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qIGlmIGxvZyBuZWVkZWRcclxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGNvbnN0IGxvZ1BheWxvYWQ6IElMb2dVc2VyQWN0aXZpdHkgPSB7XHJcbiAgICAgICAgY2xpZW50Q29kZTogJ1ZOUycsXHJcbiAgICAgICAgYXBwVHlwZTogJ1dFQkFQUCcsXHJcbiAgICAgICAgdXNlcm5hbWU6IGF1dGg/LnVzZXJOYW1lLFxyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUsXHJcbiAgICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUgPyBuZXcgRGF0ZSh0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUpIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGFjY2Vzc1RpbWU6IGFjY2Vzc01vbWVudCxcclxuICAgICAgICBwYXRoOiB3aW5kb3cubG9jYXRpb24uaHJlZixcclxuICAgICAgICBwYXRobmFtZTogJydcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2xvY2FsaG9zdCcpIDwgMCAmJiB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCcud2ViLmFwcCcpIDwgMCkge1xyXG4gICAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0RnVsbFVybChcImh0dHBzOi8vYmxvZy50YW5sZWljYS5jb20vYXBpL0xvZ1VzZXJBY3Rpdml0eS9DcmVhdGVcIiwgbG9nUGF5bG9hZCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgICovXHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIk5hdmlnYXRpb25FbmQgYWN0aXZpdHlcIiwgYWN0aXZpdHkpXHJcbiAgICAgIGlmICghIWNvbm5lY3Rpb24pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29ubmVjdGlvbj8uaW52b2tlKFwiU2VuZE1lc3NhZ2VcIiwgYWN0aXZpdHkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8XHJcbiAgICAgIHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fFxyXG4gICAgICByb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xyXG5cclxuXHJcbiAgICAgIGNvbnNvbGUuZ3JvdXAoXCJyb3V0ZXJFdmVudC51cmxcIilcclxuICAgICAgY29uc29sZS5sb2cocm91dGVyRXZlbnQudXJsKVxyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLnBvcnRhbFJvdXRlcyQudmFsdWUuZmlsdGVyKHggPT4geC5wYXRoID09PSByb3V0ZXJFdmVudC51cmwpO1xyXG4gICAgICBpZiAoZmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxhbmcgPT09IFwidmlcIikge1xyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dChmaWx0ZXJbMF0udmkpXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxhbmcgPT09IFwiZW5cIikge1xyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dChmaWx0ZXJbMF0uZW4pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudFNjcmVlbkNhcHRpb24kLm5leHQoZmlsdGVyWzBdLnZpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRTY3JlZW5DYXB0aW9uJC5uZXh0KCcnKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmdyb3VwRW5kKClcclxuXHJcbiAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UubmF2aWdhdGluZyQubmV4dChmYWxzZSk7XHJcblxyXG4gICAgICBzd2l0Y2ggKHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfVFlQRSkge1xyXG4gICAgICAgIGNhc2UgXCJXRUJBUFBcIjpcclxuXHJcbiAgICAgICAgICB0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQubmV4dCh0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5uZXh0KHJvdXRlckV2ZW50LnVybCk7XHJcblxyXG4gICAgICAgICAgLy8gdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5uZXh0KHRydWUpOyAvLyBpZiB3ZSB3YW50IGF1dG8tcmVkdWNlIHRoZSBtZW51LCB1bmNvbW1lbnQgdGhpcyBsaW5lXHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlZnRCYXIgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLWxlZnQtYmFyLWN1cnJlbnQtd2lkdGgnKS5yZXBsYWNlKCdweCcsICcnKTtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRCYXJDdXJyZW50V2lkdGgkLm5leHQoTnVtYmVyKGxlZnRCYXIpKVxyXG4gICAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UuY29udGVudENvbnRhaW5lcldpZHRoJC5uZXh0KHdpbmRvdy5pbm5lcldpZHRoIC0gTnVtYmVyKGxlZnRCYXIpKVxyXG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tY29udGVudC1jb250YWluZXItd2lkdGgnLCB3aW5kb3cuaW5uZXJXaWR0aCAtIE51bWJlcihsZWZ0QmFyKSArICdweCcpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgKi9cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBcIlBPUlRBTFwiOlxyXG5cclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2tSb3V0ZXJFdmVudFwiLCByb3V0ZXJFdmVudC51cmwpO1xyXG5cclxuICAgICAgICAgIGlmICghcm91dGVyRXZlbnQudXJsLmVuZHNXaXRoKCctZWRpdCcpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5wcmV2aW91c1JvdXRlVXJsJC5uZXh0KHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLnZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQubmV4dChyb3V0ZXJFdmVudC51cmwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQocm91dGVyRXZlbnQudXJsKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJvdXRlckV2ZW50IGluc3RhbmNlb2YgUm91dGVDb25maWdMb2FkRW5kKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiUm91dGVDb25maWdMb2FkRW5kXCIsIHJvdXRlckV2ZW50KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRBY3Rpdml0eUhpc3RvcnkoKTogdm9pZCB7XHJcbiAgICBjb25zdCBhdXRoID0gdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZTtcclxuICAgIGlmICghYXV0aD8uaXNBZG1pbikgcmV0dXJuO1xyXG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuaHViQ29ubmVjdGlvblNlcnZpY2UuaHViQ29ubmVjdGlvbiQudmFsdWU7XHJcbiAgICBjb25zdCBhY3Rpdml0eTogSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSA9IHtcclxuICAgICAgc2lkOiBhdXRoPy5mdWxsTmFtZSEsXHJcbiAgICAgIHNpZ25hbFR5cGU6IEVudW1TaWduYWxSVHlwZS5BQ1RJVklUWV9ISVNUT1JZX1JFU0VULFxyXG4gICAgICB1c2VybmFtZTogYXV0aD8udXNlck5hbWUhLFxyXG4gICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhciEsXHJcbiAgICAgIG1lc3NhZ2U6IGAke2F1dGg/LnVzZXJOYW1lfSBoYXMgcmVzZXQgYWN0aXZpdHkgaGlzdG9yeWAsXHJcbiAgICAgIGxvZ2luVGltZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lISxcclxuICAgICAgZGF0YTogbnVsbCxcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISFjb25uZWN0aW9uKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29ubmVjdGlvbj8uaW52b2tlKFwiU2VuZE1lc3NhZ2VcIiwgYWN0aXZpdHkpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKVxyXG4gIH1cclxuXHJcbn1cclxuIiwiIl19
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBMEMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQXlDLE1BQU0saUJBQWlCLENBQUM7QUFDdk0sT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFNBQVMsRUFBTyxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFZaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHMUQsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTTNGLE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCakYsTUFBTSxPQUFPLDhCQUE4QjtJQXNDekMsWUFDVSxXQUF3QixFQUN4QixHQUErQixFQUMvQixN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YyxDQUFDLEtBQUssQ0FBQztRQUNsRSxNQUFNLFFBQVEsR0FBMkI7WUFDdkMsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFTO1lBQ3BCLFVBQVUsRUFBRSxlQUFlLENBQUMsc0JBQXNCO1lBQ2xELFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUztZQUN6QixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU87WUFDckIsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLFFBQVEsNkJBQTZCO1lBQ3ZELFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBVTtZQUNuRCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUE7UUFFRCxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUM7Z0JBQ0gsVUFBVSxFQUFFLE1BQU0sQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNsQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDOzhHQXZZVSw4QkFBOEI7a0dBQTlCLDhCQUE4QixtRkMxQzNDLEVBQUE7OzJGRDBDYSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0UseUJBQXlCLFdBQzFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FcnJvciwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZUNvbmZpZ0xvYWRFbmQsIFJvdXRlciwgUm91dGVyRXZlbnQsIFJvdXRlc1JlY29nbml6ZWQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZpbHRlciwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW51bVNpZ25hbFJUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZW51bS9FbnVtU2lnbmFsUlR5cGUnO1xyXG5pbXBvcnQgeyBJSHViQ29ubmVjdGlvbkFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JSHViQ29ubmVjdGlvbkFjdGl2aXR5JztcclxuaW1wb3J0IHsgUm91dGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yb3V0aW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2h1Yi1jb25uZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXNlci1hY3Rpdml0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVJvdXRpbmdIaXN0b3J5SXRlbSB9IGZyb20gJy4uLy4uL2NvcmUtcm91dGluZy1oaXN0b3J5L2NvcmUtcm91dGluZy1oaXN0b3J5L2NvcmUtcm91dGluZy1oaXN0b3J5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFVybFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91cmwuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJTmF2aWdhdG9ySXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSU5hdmlnYXRvckl0ZW0nO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhbGVydE9wdGlvbnMsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElBdXRoRGF0YSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUF1dGhEYXRhJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IERldmVsb3BlclZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZGV2ZWxvcGVyLXZhbGlkYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xpZW50U2VydmljZSwgRW51bURldmljZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMb2dVc2VyQWN0aXZpdHkge1xyXG4gIGNsaWVudENvZGU6IHN0cmluZztcclxuICBhcHBUeXBlOiBzdHJpbmc7XHJcbiAgdXNlcm5hbWU/OiBzdHJpbmc7XHJcbiAgc2lkPzogc3RyaW5nO1xyXG4gIGxvZ2luVGltZT86IERhdGU7XHJcbiAgYWNjZXNzVGltZTogRGF0ZTtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XHJcbn1cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLW5hdmlnYXRpb24tdHJhY2tlcicsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlTmF2aWdhdGlvblRyYWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBuYXZpZ2F0aW5nITogYm9vbGVhbjtcclxuICB1cmwhOiBzdHJpbmc7XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIGFwcENvbmZpZzogYW55ID0ge1xyXG4gICAgc2hvd0xheW91dDogJ2ZhbHNlJ1xyXG4gIH07XHJcblxyXG4gIGFwcEluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgc3VibWl0dGluZyE6IGJvb2xlYW47XHJcbiAgbWVudU9wZW4hOiBib29sZWFuO1xyXG4gIGxlZnRiYXJSZWR1Y2VkITogYm9vbGVhbjtcclxuICBrZXl3b3JkITogc3RyaW5nO1xyXG4gIHNpZCE6IHN0cmluZztcclxuICB1c2VybmFtZSE6IHN0cmluZztcclxuICBleHBpcmVzQXQhOiBzdHJpbmc7XHJcbiAgYXZhdGFyITogc3RyaW5nO1xyXG5cclxuXHJcbiAgdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICByb3V0aW5nSGlzdG9yeTogSVJvdXRpbmdIaXN0b3J5SXRlbVtdID0gW107XHJcblxyXG4gIHBlbmRpbmdVcmwhOiBzdHJpbmc7XHJcbiAgbGFzdENsaWNrZWRNZW51SXRlbSE6IElOYXZpZ2F0b3JJdGVtIHwgbnVsbDtcclxuICBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nITogc3RyaW5nO1xyXG5cclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgZHZzVmFsaWRhdGluZyE6IGJvb2xlYW47XHJcbiAgZHZzU2VjdXJpdHlQYXNzZWQhOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkdnM6IERldmVsb3BlclZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgaHViQ29ubmVjdGlvblNlcnZpY2U6IEh1YkNvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyQWN0aXZpdHlTZXJ2aWNlOiBVc2VyQWN0aXZpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1cmxTZXJ2aWNlOiBVcmxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwU2VydmljZTogQXBwU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbGllbnRTZXJ2aWNlOiBDbGllbnRTZXJ2aWNlXHJcbiAgKSB7XHJcblxyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJjb2RlVmVyaWZpZXJcIilcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC5waXBlKGZpbHRlcihzID0+ICEhcykpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW0gPSB4XHJcbiAgICAgICAgdGhpcy5sYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nID0gYFske3g/LmlkfV09PiR7dGhpcy5tbHMudHJhbnMoeCEuY29kZSl9PT4oJHt4Py51cmx9KWBcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgaXNEZXZlbG9wbWVudCA9IGlzRGV2TW9kZSgpO1xyXG4gICAgICBpZiAoaXNEZXZlbG9wbWVudCAmJiAhdGhpcy5kdnMuc2VjdXJpdHlQYXNzZWQkLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5kdnMudmFsaWRhdGVGcm9tQ29va2llKCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCAmJiB4LmJvZHk/LmlubmVyQm9keSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmR2cy5zZWN1cml0eVBhc3NlZCQubmV4dCh0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZHZzLnNlY3VyaXR5Q2hlY2tlZFZpYUFwaSQubmV4dCh0cnVlKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5kdnMuc2VjdXJpdHlDaGVja2VkVmlhQXBpJC5waXBlKCBmaWx0ZXIoeCA9PiAhIXgpKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZHZzLnZhbGlkYXRlRGV2ZWxvcGVyVmlhUG9wdXAoKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKSAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5uZXh0KHRoaXMucm91dGVyLnVybCk7XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnJvdXRpbmdIaXN0b3J5JC5zdWJzY3JpYmUoeCA9PiB0aGlzLnJvdXRpbmdIaXN0b3J5ID0geClcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocm91dGVyRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja1JvdXRlckV2ZW50KHJvdXRlckV2ZW50IGFzIFJvdXRlckV2ZW50KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoeCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29uZmlybURpYWxvZyQudmFsdWUpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuICEhIVsnLyddLmluY2x1ZGVzKHgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgY29uc3QgaWdub3JlZFBhdGhzID0gdGhpcy5yb3V0aW5nU2VydmljZS5pZ25vcmVkUGF0aHMkLnZhbHVlO1xyXG4gICAgICAgICAgY29uc3QgZnVsbEZ1bmN0aW9ucyA9IHRoaXMucm91dGluZ1NlcnZpY2UuZnVsbEZ1bmN0aW9ucyQudmFsdWU/LmZpbHRlcihmID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuICFpZ25vcmVkUGF0aHM/LmluY2x1ZGVzKGYucGF0aClcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3QgZnVuY3Rpb25GaWx0ZXIgPSBmdWxsRnVuY3Rpb25zLmZpbHRlcihmID0+IHtcclxuICAgICAgICAgICAgaWYgKGYucGF0aEZ1bGxNYXRjaCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmLnBhdGggPT09IHg7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy9yZXR1cm4geC5pbmRleE9mKGYucGF0aCkgPT09IDBcclxuXHJcbiAgICAgICAgICAgICAgLy8gZXhwZXJpbWVudGFsIHNpbmNlIDIwMjQtMDQtMDJcclxuICAgICAgICAgICAgICByZXR1cm4geC5pbmRleE9mKGYucGF0aCkgPj0gMCAvLyBmb3Igc29tZSBhdXhpbGlhcnkgcm91dGVzLCBmb3IgZXggLi4uKHBvcHVwQXV4MjpvbmxpbmUtdXNlcnMpIHRvIGJlIGFjY2VwdGFibGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJmdW5jdGlvbkZpbHRlclwiLCBpZ25vcmVkUGF0aHMpXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZ1bmN0aW9uRmlsdGVyXCIsIGZ1bmN0aW9uRmlsdGVyKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJmdW5jdGlvbkZpbHRlclwiLCBpZ25vcmVkUGF0aHMuaW5jbHVkZXMoXCIvY21zL3N5c3RlbS91cGVybWlzc2lvbi8wXCIpKVxyXG5cclxuICAgICAgICAgIGlmICh4LmluZGV4T2YoJy9yb290JykgIT09IDAgJiYgISEhZnVuY3Rpb25GaWx0ZXIubGVuZ3RoICYmICEhIWlnbm9yZWRQYXRocy5pbmNsdWRlcyh4KSAmJiAhIXRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQudmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzUm9vdCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZGlhbG9nQ29uZmlybWVkJC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlTnVtYmVyOiB0aGlzLmRpYWxvZ0luc3RhbmNlTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybWVkOiBmYWxzZVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jcmVhdGVOZXcoXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfQ09ORklSTV9ESUFMT0dfVElUTEUsXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LllFUyxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuSUdOT1JFLFxyXG4gICAgICAgICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LlJPT1RfQ1VSUkVOVF9VUkxfRE9FU19OT1RfRVhJU1RfSU5fQVBQX0ZVTkNUSU9OX1BBVEhfRE9fWU9VX1dBTlRfVE9fTUFQLFxyXG4gICAgICAgICAgICAgICAgW3hdXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uRmlsdGVyLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgcm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJCBjaGFuZ2VkIHRvIGAsIGZ1bmN0aW9uRmlsdGVyWzBdLnBhdGgpXHJcbiAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC5uZXh0KGZ1bmN0aW9uRmlsdGVyWzBdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICAvLyB0cnkgdG8gc2V0IGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHkgd2hlbiB1c2VyIGhhcyBwcmVzc2VkIEY1XHJcblxyXG5cclxuICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgICBjb25zdCBpZ25vcmVkUGF0aHMgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLmlnbm9yZWRQYXRocyQudmFsdWU7XHJcbiAgICAgIGNvbnN0IGZ1bGxGdW5jdGlvbnMgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLmZ1bGxGdW5jdGlvbnMkLnZhbHVlPy5maWx0ZXIoZiA9PiB7XHJcbiAgICAgICAgcmV0dXJuICFpZ25vcmVkUGF0aHM/LmluY2x1ZGVzKGYucGF0aClcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGZ1bmN0aW9uRmlsdGVyID0gZnVsbEZ1bmN0aW9ucy5maWx0ZXIoZiA9PiB7XHJcbiAgICAgICAgaWYgKGYucGF0aEZ1bGxNYXRjaCkge1xyXG4gICAgICAgICAgcmV0dXJuIGYucGF0aCA9PT0gdXJsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdXJsLmluZGV4T2YoZi5wYXRoKSA9PT0gMFxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgaWYgKCEhZnVuY3Rpb25GaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKGZ1bmN0aW9uRmlsdGVyLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICB2YXIgZnVuY3Rpb25GaWx0ZXJMaW5rczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAgICAgZnVuY3Rpb25GaWx0ZXIubWFwKHggPT4ge1xyXG4gICAgICAgICAgICAgIGZ1bmN0aW9uRmlsdGVyTGlua3MucHVzaCh4LnBhdGggKyBcIiAoXCIgKyAoeC5wYXRoRnVsbE1hdGNoID8gXCJ0xrDGoW5nIOG7qW5nIHRvw6BuIHBo4bqnblwiIDogXCJ0xrDGoW5nIOG7qW5nIHBo4bqnbiBiw6puIHRyw6FpXCIpICsgXCIpXCIpXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICAgIGBOaGnhu4F1IGjGoW4gMDEgY2jhu6ljIG7Eg25nIGPDuW5nIMSRYW5nIHTGsMahbmcg4bupbmcgduG7m2kgxJFp4buBdSBoxrDhu5tuZyAke3VybH06XFxuJHtKU09OLnN0cmluZ2lmeShmdW5jdGlvbkZpbHRlckxpbmtzLCBudWxsLCAyKX1gLFxyXG4gICAgICAgICAgICAgIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIE7hur91IGtow7RuZyBwaOG6o2kgSVNfUk9PVCBjxaluZyBraMO0bmcgcGjhuqNpIElTX0FETUlOIHRow6wgxJFp4buBdSBoxrDhu5tuZyB24buBIHRyYW5nIGNo4bunXHJcbiAgICAgICAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzUm9vdCAmJiAhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNBZG1pbikgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2hvbWUnKVxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIEtp4buDbSB0cmEgeGVtIGPDsyBxdXnhu4FuIHbhu5tpIEZ1bmN0aW9uIGhp4buHbiB04bqhaSBoYXkga2jDtG5nXHJcbiAgICAgICAgICBjb25zdCB0cnlGaW5kID0gdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ucGVybWlzc2lvbkFjdGlvbnMuZmlsdGVyKHggPT4geC5mdW5jdGlvbklkID09PSBmdW5jdGlvbkZpbHRlclswXS5pZClcclxuICAgICAgICAgIC8vIE7hur91IGtow7RuZyB0w6xtIHRo4bqleSB2w6Aga2jDtG5nIHBo4bqjaSBJU19ST09UIGPFqW5nIGtow7RuZyBwaOG6o2kgSVNfQURNSU4gdGjDrCDEkcawYSByYSB0aMO0bmcgYsOhbyB2w6AgxJFp4buBdSBoxrDhu5tuZyB24buBIHRyYW5nIGNo4bunXHJcbiAgICAgICAgICAvLyBcIi9hdXRoL2xvZ2luXCIgxJHGsOG7o2MgYuG7jyBxdWFcclxuICAgICAgICAgIGlmICghdHJ5RmluZD8ubGVuZ3RoICYmICF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc1Jvb3QgJiYgIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzQWRtaW4pIHtcclxuICAgICAgICAgICAgaWYgKCEoW1wiL2F1dGgvbG9naW5cIiwgXCIvaG9tZVwiXS5pbmNsdWRlcyhmdW5jdGlvbkZpbHRlclswXS5wYXRoKSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKFxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25GaWx0ZXJbMF0ucGF0aCArIFwiIFwiICtcclxuICAgICAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKCdDT1JFLlBFUk1JU1NJT04uVEhFX1BBVEhfSVNfTk9UX1BFUk1JVFRFRCcpLFxyXG4gICAgICAgICAgICAgICAgYWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC5uZXh0KGZ1bmN0aW9uRmlsdGVyWzBdKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjaGVja1JvdXRlckV2ZW50KHJvdXRlckV2ZW50OiBSb3V0ZXJFdmVudCk6IHZvaWQge1xyXG5cclxuICAgIGlmIChyb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xyXG5cclxuICAgICAgaWYgKHRoaXMuY2xpZW50U2VydmljZS5nZXRCcm93c2VyT1NBbmREZXZpY2UoKS5kZXZpY2VUeXBlID09PSBFbnVtRGV2aWNlVHlwZS5NT0JJTEVfREVWSUNFKSB7XHJcbiAgICAgICAgdGhpcy5tZW51U2VydmljZS5pc09wZW4kLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLm5hdmlnYXRpb25VcmwkLm5leHQocm91dGVyRXZlbnQudXJsKTtcclxuXHJcbiAgICAgIC8vIFNraXAgbmF2aWdhdGluZyBlZmZlY3Qgd2hlbiB0aGUgbmF2aWdhdGlvbiBzdGFydHMgd2l0aCAvY21zL3Byb2ZpbGUvYnVzaW5lc3Mvc3RhZmZwcm9maWxlXHJcbiAgICAgIGlmIChyb3V0ZXJFdmVudC51cmwuaW5kZXhPZihcIi9jbXMvcHJvZmlsZS9idXNpbmVzcy9zdGFmZnByb2ZpbGVcIikgIT09IDApIHtcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLm5hdmlnYXRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcblxyXG4gICAgICB0aGlzLnVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHJcbiAgICAgIGlmICghIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzRmlyc3RMb2dpbiAmJiB0aGlzLnVybCAhPT0gJy9jbXMvY2hhbmdlLXBhc3N3b3JkJykge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY21zJywgJ2NoYW5nZS1wYXNzd29yZCcsIGJ0b2EoKHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWUgYXMgSUF1dGhEYXRhKS5yZWZyZXNoVG9rZW4udXNlcildKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgbmV3Um91dGluZ0hpc3Rvcnk6IElSb3V0aW5nSGlzdG9yeUl0ZW1bXSA9IHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLnZhbHVlO1xyXG4gICAgICBuZXdSb3V0aW5nSGlzdG9yeS5wdXNoKHsgZnVsbFVybDogdGhpcy51cmwgfSk7XHJcbiAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLm5leHQobmV3Um91dGluZ0hpc3RvcnkpO1xyXG5cclxuICAgICAgY29uc3QgdXNlckFjdGl2aXR5ID0gdGhpcy51c2VyQWN0aXZpdHlTZXJ2aWNlLnVzZXJBY3Rpdml0eSQudmFsdWU7XHJcbiAgICAgIGNvbnN0IGF1dGggPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlO1xyXG5cclxuICAgICAgY29uc3QgbmV3VXNlckFjdGl2aXR5ID0gdXNlckFjdGl2aXR5LmZpbHRlcihpdGVtID0+IGl0ZW0uc2lkICE9PSBhdXRoPy5pZClcclxuICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuaHViQ29ubmVjdGlvblNlcnZpY2UuaHViQ29ubmVjdGlvbiQudmFsdWU7XHJcbiAgICAgIG5ld1VzZXJBY3Rpdml0eS5wdXNoKHtcclxuICAgICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lISxcclxuICAgICAgICB1c2VybmFtZTogYXV0aD8udXNlck5hbWUhLFxyXG4gICAgICAgIHBhdGhuYW1lOiB0aGlzLnVybCxcclxuICAgICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhciEsXHJcbiAgICAgICAgaHViQ29ubmVjdGlvbklkOiBjb25uZWN0aW9uPy5jb25uZWN0aW9uSWQhLFxyXG4gICAgICAgIGFjY2Vzc1RpbWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxyXG4gICAgICB9KVxyXG5cclxuICAgICAgY29uc3QgYWNjZXNzTW9tZW50ID0gbmV3IERhdGUoKTtcclxuICAgICAgY29uc3QgYWNjZXNzVGltZSA9IGFjY2Vzc01vbWVudC5nZXRUaW1lKCk7XHJcblxyXG4gICAgICBjb25zdCBhY3Rpdml0eTogSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSA9IHtcclxuICAgICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lISxcclxuICAgICAgICBzaWduYWxUeXBlOiBFbnVtU2lnbmFsUlR5cGUuQUNUSVZJVFksXHJcbiAgICAgICAgdXNlcm5hbWU6IGF1dGg/LnVzZXJOYW1lISxcclxuICAgICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhciEsXHJcbiAgICAgICAgbWVzc2FnZTogYCR7YXV0aD8udXNlck5hbWV9IG5hdmlnYXRlZCB0byAke2xvY2F0aW9uLnBhdGhuYW1lfWAsXHJcbiAgICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUhLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUsXHJcbiAgICAgICAgICB1c2VyTmFtZTogYXV0aD8udXNlck5hbWUsXHJcbiAgICAgICAgICBwYXRobmFtZTogdGhpcy51cmwsXHJcbiAgICAgICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhcixcclxuICAgICAgICAgIGh1YkNvbm5lY3Rpb25JZDogY29ubmVjdGlvbj8uY29ubmVjdGlvbklkISxcclxuICAgICAgICAgIGFjY2Vzc1RpbWUsXHJcbiAgICAgICAgICB1c2VyQWN0aXZpdHk6IG5ld1VzZXJBY3Rpdml0eSxcclxuICAgICAgICB9LFxyXG4gICAgICB9XHJcblxyXG4gICAgICAvKiBpZiBsb2cgbmVlZGVkXHJcbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBjb25zdCBsb2dQYXlsb2FkOiBJTG9nVXNlckFjdGl2aXR5ID0ge1xyXG4gICAgICAgIGNsaWVudENvZGU6ICdWTlMnLFxyXG4gICAgICAgIGFwcFR5cGU6ICdXRUJBUFAnLFxyXG4gICAgICAgIHVzZXJuYW1lOiBhdXRoPy51c2VyTmFtZSxcclxuICAgICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lLFxyXG4gICAgICAgIGxvZ2luVGltZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lID8gbmV3IERhdGUodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lKSA6IHVuZGVmaW5lZCxcclxuICAgICAgICBhY2Nlc3NUaW1lOiBhY2Nlc3NNb21lbnQsXHJcbiAgICAgICAgcGF0aDogd2luZG93LmxvY2F0aW9uLmhyZWYsXHJcbiAgICAgICAgcGF0aG5hbWU6ICcnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCdsb2NhbGhvc3QnKSA8IDAgJiYgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignLndlYi5hcHAnKSA8IDApIHtcclxuICAgICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdEZ1bGxVcmwoXCJodHRwczovL2Jsb2cudGFubGVpY2EuY29tL2FwaS9Mb2dVc2VyQWN0aXZpdHkvQ3JlYXRlXCIsIGxvZ1BheWxvYWQpLnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICAqL1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJOYXZpZ2F0aW9uRW5kIGFjdGl2aXR5XCIsIGFjdGl2aXR5KVxyXG4gICAgICBpZiAoISFjb25uZWN0aW9uKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbm5lY3Rpb24/Lmludm9rZShcIlNlbmRNZXNzYWdlXCIsIGFjdGl2aXR5KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fFxyXG4gICAgICByb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwgfHxcclxuICAgICAgcm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcclxuXHJcblxyXG4gICAgICBjb25zb2xlLmdyb3VwKFwicm91dGVyRXZlbnQudXJsXCIpXHJcbiAgICAgIGNvbnNvbGUubG9nKHJvdXRlckV2ZW50LnVybClcclxuICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5yb3V0aW5nU2VydmljZS5wb3J0YWxSb3V0ZXMkLnZhbHVlLmZpbHRlcih4ID0+IHgucGF0aCA9PT0gcm91dGVyRXZlbnQudXJsKTtcclxuICAgICAgaWYgKGZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICBpZiAodGhpcy5sYW5nID09PSBcInZpXCIpIHtcclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudFNjcmVlbkNhcHRpb24kLm5leHQoZmlsdGVyWzBdLnZpKVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5sYW5nID09PSBcImVuXCIpIHtcclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudFNjcmVlbkNhcHRpb24kLm5leHQoZmlsdGVyWzBdLmVuKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRTY3JlZW5DYXB0aW9uJC5uZXh0KGZpbHRlclswXS52aSlcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dCgnJyk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5ncm91cEVuZCgpXHJcblxyXG4gICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLm5hdmlnYXRpbmckLm5leHQoZmFsc2UpO1xyXG5cclxuICAgICAgc3dpdGNoICh0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVBQX1RZUEUpIHtcclxuICAgICAgICBjYXNlIFwiV0VCQVBQXCI6XHJcblxyXG4gICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLnByZXZpb3VzUm91dGVVcmwkLm5leHQodGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQudmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQubmV4dChyb3V0ZXJFdmVudC51cmwpO1xyXG5cclxuICAgICAgICAgIC8vIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0YmFyUmVkdWNlZCQubmV4dCh0cnVlKTsgLy8gaWYgd2Ugd2FudCBhdXRvLXJlZHVjZSB0aGUgbWVudSwgdW5jb21tZW50IHRoaXMgbGluZVxyXG4gICAgICAgICAgLypcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBsZWZ0QmFyID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1sZWZ0LWJhci1jdXJyZW50LXdpZHRoJykucmVwbGFjZSgncHgnLCAnJyk7XHJcbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC5uZXh0KE51bWJlcihsZWZ0QmFyKSlcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbnRlbnRDb250YWluZXJXaWR0aCQubmV4dCh3aW5kb3cuaW5uZXJXaWR0aCAtIE51bWJlcihsZWZ0QmFyKSlcclxuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNvbnRlbnQtY29udGFpbmVyLXdpZHRoJywgd2luZG93LmlubmVyV2lkdGggLSBOdW1iZXIobGVmdEJhcikgKyAncHgnKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICovXHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgXCJQT1JUQUxcIjpcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImNoZWNrUm91dGVyRXZlbnRcIiwgcm91dGVyRXZlbnQudXJsKTtcclxuXHJcbiAgICAgICAgICBpZiAoIXJvdXRlckV2ZW50LnVybC5lbmRzV2l0aCgnLWVkaXQnKSkge1xyXG4gICAgICAgICAgICB0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQubmV4dCh0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC52YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQocm91dGVyRXZlbnQudXJsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5uZXh0KHJvdXRlckV2ZW50LnVybClcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmIChyb3V0ZXJFdmVudCBpbnN0YW5jZW9mIFJvdXRlQ29uZmlnTG9hZEVuZCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlJvdXRlQ29uZmlnTG9hZEVuZFwiLCByb3V0ZXJFdmVudClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0QWN0aXZpdHlIaXN0b3J5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgYXV0aCA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU7XHJcbiAgICBpZiAoIWF1dGg/LmlzQWRtaW4pIHJldHVybjtcclxuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLmh1YkNvbm5lY3Rpb24kLnZhbHVlO1xyXG4gICAgY29uc3QgYWN0aXZpdHk6IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgPSB7XHJcbiAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUhLFxyXG4gICAgICBzaWduYWxUeXBlOiBFbnVtU2lnbmFsUlR5cGUuQUNUSVZJVFlfSElTVE9SWV9SRVNFVCxcclxuICAgICAgdXNlcm5hbWU6IGF1dGg/LnVzZXJOYW1lISxcclxuICAgICAgYXZhdGFyOiBhdXRoPy5hdmF0YXIhLFxyXG4gICAgICBtZXNzYWdlOiBgJHthdXRoPy51c2VyTmFtZX0gaGFzIHJlc2V0IGFjdGl2aXR5IGhpc3RvcnlgLFxyXG4gICAgICBsb2dpblRpbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmxvZ2luVGltZSEsXHJcbiAgICAgIGRhdGE6IG51bGwsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhY29ubmVjdGlvbikge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbm5lY3Rpb24/Lmludm9rZShcIlNlbmRNZXNzYWdlXCIsIGFjdGl2aXR5KTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSlcclxuICB9XHJcblxyXG59XHJcbiIsIiJdfQ==