@alfresco/adf-core 8.1.0-15578727966 → 8.1.0-15586688821

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.
@@ -452,7 +452,8 @@
452
452
  "CANCEL": "Cancel",
453
453
  "RESET": "Reset",
454
454
  "THUMBNAILS": "Document thumbnails",
455
- "THUMBNAILS_PANLEL_CLOSE": "Close thumbnails panel"
455
+ "THUMBNAILS_PANLEL_CLOSE": "Close thumbnails panel",
456
+ "LOADING": "Document is loading"
456
457
  },
457
458
  "PAGE_LABEL": {
458
459
  "SHOWING": "Showing",
@@ -46,8 +46,14 @@ export class NumberWidgetComponent extends WidgetComponent {
46
46
  this.displayValue = this.field.value;
47
47
  }
48
48
  }
49
+ onNumberChange(value) {
50
+ if (value === null || value === undefined || value === '') {
51
+ this.field.value = null;
52
+ }
53
+ this.onFieldChanged(this.field);
54
+ }
49
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NumberWidgetComponent, deps: [{ token: i1.FormService }, { token: i2.DecimalNumberPipe }], target: i0.ɵɵFactoryTarget.Component }); }
50
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NumberWidgetComponent, isStandalone: true, selector: "number-widget", host: { listeners: { "click": "event($event)", "blur": "event($event)", "change": "event($event)", "focus": "event($event)", "focusin": "event($event)", "focusout": "event($event)", "input": "event($event)", "invalid": "event($event)", "select": "event($event)" } }, providers: [DecimalNumberPipe], usesInheritance: true, ngImport: i0, template: "<div class=\"adf-textfield adf-number-widget {{ field.className }}\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n [class.adf-left-label-input-container]=\"field.leftLabels\">\n <div *ngIf=\"field.leftLabels\">\n <label class=\"adf-label adf-left-label\"\n [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </label>\n </div>\n <div>\n <mat-form-field [hideRequiredMarker]=\"true\">\n <mat-label class=\"adf-label\" *ngIf=\"!field.leftLabels\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </mat-label>\n <input matInput\n class=\"adf-input\"\n type=\"text\"\n pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n [id]=\"field.id\"\n [required]=\"isRequired()\"\n [value]=\"displayValue\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onFieldChanged(field)\"\n [disabled]=\"field.readOnly\"\n [placeholder]=\"field.placeholder\"\n [title]=\"field.tooltip\"\n (blur)=\"markAsTouched()\">\n </mat-form-field>\n <div class=\"adf-error-messages-container\">\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget\n *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"\n />\n </div>\n </div>\n</div>\n", styles: [".adf-number-widget{width:100%}.adf-number-widget .adf-label{top:20px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ErrorWidgetComponent, selector: "error-widget", inputs: ["error", "required"] }], encapsulation: i0.ViewEncapsulation.None }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NumberWidgetComponent, isStandalone: true, selector: "number-widget", host: { listeners: { "click": "event($event)", "blur": "event($event)", "change": "event($event)", "focus": "event($event)", "focusin": "event($event)", "focusout": "event($event)", "input": "event($event)", "invalid": "event($event)", "select": "event($event)" } }, providers: [DecimalNumberPipe], usesInheritance: true, ngImport: i0, template: "<div class=\"adf-textfield adf-number-widget {{ field.className }}\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n [class.adf-left-label-input-container]=\"field.leftLabels\">\n <div *ngIf=\"field.leftLabels\">\n <label class=\"adf-label adf-left-label\"\n [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </label>\n </div>\n <div>\n <mat-form-field [hideRequiredMarker]=\"true\">\n <mat-label class=\"adf-label\" *ngIf=\"!field.leftLabels\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </mat-label>\n <input matInput\n class=\"adf-input\"\n type=\"text\"\n pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n [id]=\"field.id\"\n [required]=\"isRequired()\"\n [value]=\"displayValue\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onNumberChange($event)\"\n [disabled]=\"field.readOnly\"\n [placeholder]=\"field.placeholder\"\n [title]=\"field.tooltip\"\n (blur)=\"markAsTouched()\">\n </mat-form-field>\n <div class=\"adf-error-messages-container\">\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget\n *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"\n />\n </div>\n </div>\n</div>\n", styles: [".adf-number-widget{width:100%}.adf-number-widget .adf-label{top:20px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ErrorWidgetComponent, selector: "error-widget", inputs: ["error", "required"] }], encapsulation: i0.ViewEncapsulation.None }); }
51
57
  }
52
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NumberWidgetComponent, decorators: [{
53
59
  type: Component,
@@ -61,6 +67,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
61
67
  '(input)': 'event($event)',
62
68
  '(invalid)': 'event($event)',
63
69
  '(select)': 'event($event)'
64
- }, imports: [NgIf, TranslateModule, MatFormFieldModule, MatInputModule, FormsModule, ErrorWidgetComponent], providers: [DecimalNumberPipe], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-textfield adf-number-widget {{ field.className }}\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n [class.adf-left-label-input-container]=\"field.leftLabels\">\n <div *ngIf=\"field.leftLabels\">\n <label class=\"adf-label adf-left-label\"\n [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </label>\n </div>\n <div>\n <mat-form-field [hideRequiredMarker]=\"true\">\n <mat-label class=\"adf-label\" *ngIf=\"!field.leftLabels\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </mat-label>\n <input matInput\n class=\"adf-input\"\n type=\"text\"\n pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n [id]=\"field.id\"\n [required]=\"isRequired()\"\n [value]=\"displayValue\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onFieldChanged(field)\"\n [disabled]=\"field.readOnly\"\n [placeholder]=\"field.placeholder\"\n [title]=\"field.tooltip\"\n (blur)=\"markAsTouched()\">\n </mat-form-field>\n <div class=\"adf-error-messages-container\">\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget\n *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"\n />\n </div>\n </div>\n</div>\n", styles: [".adf-number-widget{width:100%}.adf-number-widget .adf-label{top:20px}\n"] }]
70
+ }, imports: [NgIf, TranslateModule, MatFormFieldModule, MatInputModule, FormsModule, ErrorWidgetComponent], providers: [DecimalNumberPipe], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-textfield adf-number-widget {{ field.className }}\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n [class.adf-left-label-input-container]=\"field.leftLabels\">\n <div *ngIf=\"field.leftLabels\">\n <label class=\"adf-label adf-left-label\"\n [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </label>\n </div>\n <div>\n <mat-form-field [hideRequiredMarker]=\"true\">\n <mat-label class=\"adf-label\" *ngIf=\"!field.leftLabels\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </mat-label>\n <input matInput\n class=\"adf-input\"\n type=\"text\"\n pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n [id]=\"field.id\"\n [required]=\"isRequired()\"\n [value]=\"displayValue\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onNumberChange($event)\"\n [disabled]=\"field.readOnly\"\n [placeholder]=\"field.placeholder\"\n [title]=\"field.tooltip\"\n (blur)=\"markAsTouched()\">\n </mat-form-field>\n <div class=\"adf-error-messages-container\">\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget\n *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"\n />\n </div>\n </div>\n</div>\n", styles: [".adf-number-widget{width:100%}.adf-number-widget .adf-label{top:20px}\n"] }]
65
71
  }], ctorParameters: () => [{ type: i1.FormService }, { type: i2.DecimalNumberPipe }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLndpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvbnVtYmVyL251bWJlci53aWRnZXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL251bWJlci9udW1iZXIud2lkZ2V0Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsd0ZBQXdGO0FBRXhGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBc0J0RCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQUd0RCxZQUFtQixXQUF3QixFQUFVLGlCQUFvQztRQUNyRixLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFESixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFFekYsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0UsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pDLENBQUM7SUFDTCxDQUFDOytHQWJRLHFCQUFxQjttR0FBckIscUJBQXFCLHVVQUhuQixDQUFDLGlCQUFpQixDQUFDLGlEQy9DbEMsMnlEQXNDQSxpSURRYyxJQUFJLDRGQUFFLGVBQWUsMkZBQUUsa0JBQWtCLDBTQUFFLGNBQWMsMFdBQUUsV0FBVyxxK0JBQUUsb0JBQW9COzs0RkFJN0YscUJBQXFCO2tCQXBCakMsU0FBUzsrQkFDSSxlQUFlLGNBQ2IsSUFBSSxRQUdWO3dCQUNGLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixRQUFRLEVBQUUsZUFBZTt3QkFDekIsVUFBVSxFQUFFLGVBQWU7d0JBQzNCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsWUFBWSxFQUFFLGVBQWU7d0JBQzdCLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixXQUFXLEVBQUUsZUFBZTt3QkFDNUIsVUFBVSxFQUFFLGVBQWU7cUJBQzlCLFdBQ1EsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQUMsYUFDNUYsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFDZixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yLCBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lICovXG5cbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IERlY2ltYWxOdW1iZXJQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMnO1xuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXJyb3JXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuLi9lcnJvci9lcnJvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vd2lkZ2V0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbnVtYmVyLXdpZGdldCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbnVtYmVyLndpZGdldC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9udW1iZXIud2lkZ2V0LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoY2xpY2spJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGNoYW5nZSknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXMpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzaW4pJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoaW52YWxpZCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoc2VsZWN0KSc6ICdldmVudCgkZXZlbnQpJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW05nSWYsIFRyYW5zbGF0ZU1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgRm9ybXNNb2R1bGUsIEVycm9yV2lkZ2V0Q29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFtEZWNpbWFsTnVtYmVyUGlwZV0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGRpc3BsYXlWYWx1ZTogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSwgcHJpdmF0ZSBkZWNpbWFsTnVtYmVyUGlwZTogRGVjaW1hbE51bWJlclBpcGUpIHtcbiAgICAgICAgc3VwZXIoZm9ybVNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5maWVsZC5yZWFkT25seSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmRlY2ltYWxOdW1iZXJQaXBlLnRyYW5zZm9ybSh0aGlzLmZpZWxkLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5maWVsZC52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGYtdGV4dGZpZWxkIGFkZi1udW1iZXItd2lkZ2V0IHt7IGZpZWxkLmNsYXNzTmFtZSB9fVwiXG4gICAgIFtjbGFzcy5hZGYtaW52YWxpZF09XCIhZmllbGQuaXNWYWxpZCAmJiBpc1RvdWNoZWQoKVwiXG4gICAgIFtjbGFzcy5hZGYtcmVhZG9ubHldPVwiZmllbGQucmVhZE9ubHlcIlxuICAgICBbY2xhc3MuYWRmLWxlZnQtbGFiZWwtaW5wdXQtY29udGFpbmVyXT1cImZpZWxkLmxlZnRMYWJlbHNcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQubGVmdExhYmVsc1wiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJhZGYtbGFiZWwgYWRmLWxlZnQtbGFiZWxcIlxuICAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cImZpZWxkLmlkXCI+XG4gICAgICAgICAgICB7eyBmaWVsZC5uYW1lIHwgdHJhbnNsYXRlIH19PHNwYW4gY2xhc3M9XCJhZGYtYXN0ZXJpc2tcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJpc1JlcXVpcmVkKCkgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiPio8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFtoaWRlUmVxdWlyZWRNYXJrZXJdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImFkZi1sYWJlbFwiICpuZ0lmPVwiIWZpZWxkLmxlZnRMYWJlbHNcIiBbYXR0ci5mb3JdPVwiZmllbGQuaWRcIj5cbiAgICAgICAgICAgICAgICB7eyBmaWVsZC5uYW1lIHwgdHJhbnNsYXRlIH19PHNwYW4gY2xhc3M9XCJhZGYtYXN0ZXJpc2tcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJpc1JlcXVpcmVkKCkgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiPio8L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgcGF0dGVybj1cIi0/WzAtOV0qKFxcLlswLTldKyk/XCJcbiAgICAgICAgICAgICAgICAgICBbaWRdPVwiZmllbGQuaWRcIlxuICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkKClcIlxuICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2VkKGZpZWxkKVwiXG4gICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmaWVsZC50b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJtYXJrQXNUb3VjaGVkKClcIj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci1tZXNzYWdlcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxlcnJvci13aWRnZXQgW2Vycm9yXT1cImZpZWxkLnZhbGlkYXRpb25TdW1tYXJ5XCIgLz5cbiAgICAgICAgICAgIDxlcnJvci13aWRnZXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzSW52YWxpZEZpZWxkUmVxdWlyZWQoKSAmJiBpc1RvdWNoZWQoKVwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJ7eyAnRk9STS5GSUVMRC5SRVFVSVJFRCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLndpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvbnVtYmVyL251bWJlci53aWRnZXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL251bWJlci9udW1iZXIud2lkZ2V0Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsd0ZBQXdGO0FBRXhGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBc0J0RCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQUd0RCxZQUFtQixXQUF3QixFQUFVLGlCQUFvQztRQUNyRixLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFESixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFFekYsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0UsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pDLENBQUM7SUFDTCxDQUFDO0lBRVMsY0FBYyxDQUFDLEtBQWE7UUFDbEMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQzsrR0FyQlEscUJBQXFCO21HQUFyQixxQkFBcUIsdVVBSG5CLENBQUMsaUJBQWlCLENBQUMsaURDL0NsQyw0eURBc0NBLGlJRFFjLElBQUksNEZBQUUsZUFBZSwyRkFBRSxrQkFBa0IsMFNBQUUsY0FBYywwV0FBRSxXQUFXLHErQkFBRSxvQkFBb0I7OzRGQUk3RixxQkFBcUI7a0JBcEJqQyxTQUFTOytCQUNJLGVBQWUsY0FDYixJQUFJLFFBR1Y7d0JBQ0YsU0FBUyxFQUFFLGVBQWU7d0JBQzFCLFFBQVEsRUFBRSxlQUFlO3dCQUN6QixVQUFVLEVBQUUsZUFBZTt3QkFDM0IsU0FBUyxFQUFFLGVBQWU7d0JBQzFCLFdBQVcsRUFBRSxlQUFlO3dCQUM1QixZQUFZLEVBQUUsZUFBZTt3QkFDN0IsU0FBUyxFQUFFLGVBQWU7d0JBQzFCLFdBQVcsRUFBRSxlQUFlO3dCQUM1QixVQUFVLEVBQUUsZUFBZTtxQkFDOUIsV0FDUSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxhQUM1RixDQUFDLGlCQUFpQixDQUFDLGlCQUNmLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IsIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWUgKi9cblxuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRGVjaW1hbE51bWJlclBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi9waXBlcyc7XG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvcldpZGdldENvbXBvbmVudCB9IGZyb20gJy4uL2Vycm9yL2Vycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuLi93aWRnZXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdudW1iZXItd2lkZ2V0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9udW1iZXIud2lkZ2V0Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL251bWJlci53aWRnZXQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhjbGljayknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoY2hhbmdlKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXNpbiknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXNvdXQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGlucHV0KSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhpbnZhbGlkKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhzZWxlY3QpJzogJ2V2ZW50KCRldmVudCknXG4gICAgfSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVHJhbnNsYXRlTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgRXJyb3JXaWRnZXRDb21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogW0RlY2ltYWxOdW1iZXJQaXBlXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlcldpZGdldENvbXBvbmVudCBleHRlbmRzIFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgZGlzcGxheVZhbHVlOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLCBwcml2YXRlIGRlY2ltYWxOdW1iZXJQaXBlOiBEZWNpbWFsTnVtYmVyUGlwZSkge1xuICAgICAgICBzdXBlcihmb3JtU2VydmljZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuZGVjaW1hbE51bWJlclBpcGUudHJhbnNmb3JtKHRoaXMuZmllbGQudmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLmZpZWxkLnZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTnVtYmVyQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25GaWVsZENoYW5nZWQodGhpcy5maWVsZCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi10ZXh0ZmllbGQgYWRmLW51bWJlci13aWRnZXQge3sgZmllbGQuY2xhc3NOYW1lIH19XCJcbiAgICAgW2NsYXNzLmFkZi1pbnZhbGlkXT1cIiFmaWVsZC5pc1ZhbGlkICYmIGlzVG91Y2hlZCgpXCJcbiAgICAgW2NsYXNzLmFkZi1yZWFkb25seV09XCJmaWVsZC5yZWFkT25seVwiXG4gICAgIFtjbGFzcy5hZGYtbGVmdC1sYWJlbC1pbnB1dC1jb250YWluZXJdPVwiZmllbGQubGVmdExhYmVsc1wiPlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5sZWZ0TGFiZWxzXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImFkZi1sYWJlbCBhZGYtbGVmdC1sYWJlbFwiXG4gICAgICAgICAgICAgICBbYXR0ci5mb3JdPVwiZmllbGQuaWRcIj5cbiAgICAgICAgICAgIHt7IGZpZWxkLm5hbWUgfCB0cmFuc2xhdGUgfX08c3BhbiBjbGFzcz1cImFkZi1hc3Rlcmlza1wiIFtzdHlsZS52aXNpYmlsaXR5XT1cImlzUmVxdWlyZWQoKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCI+Kjwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2hpZGVSZXF1aXJlZE1hcmtlcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiYWRmLWxhYmVsXCIgKm5nSWY9XCIhZmllbGQubGVmdExhYmVsc1wiIFthdHRyLmZvcl09XCJmaWVsZC5pZFwiPlxuICAgICAgICAgICAgICAgIHt7IGZpZWxkLm5hbWUgfCB0cmFuc2xhdGUgfX08c3BhbiBjbGFzcz1cImFkZi1hc3Rlcmlza1wiIFtzdHlsZS52aXNpYmlsaXR5XT1cImlzUmVxdWlyZWQoKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICBwYXR0ZXJuPVwiLT9bMC05XSooXFwuWzAtOV0rKT9cIlxuICAgICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZC5pZFwiXG4gICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25OdW1iZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmaWVsZC50b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJtYXJrQXNUb3VjaGVkKClcIj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci1tZXNzYWdlcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxlcnJvci13aWRnZXQgW2Vycm9yXT1cImZpZWxkLnZhbGlkYXRpb25TdW1tYXJ5XCIgLz5cbiAgICAgICAgICAgIDxlcnJvci13aWRnZXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzSW52YWxpZEZpZWxkUmVxdWlyZWQoKSAmJiBpc1RvdWNoZWQoKVwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJ7eyAnRk9STS5GSUVMRC5SRVFVSVJFRCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -506,7 +506,7 @@ export class PdfViewerComponent {
506
506
  }
507
507
  }
508
508
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
509
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PdfViewerComponent, isStandalone: true, selector: "adf-pdf-viewer", inputs: { urlFile: "urlFile", blobFile: "blobFile", fileName: "fileName", showToolbar: "showToolbar", allowThumbnails: "allowThumbnails", thumbnailsTemplate: "thumbnailsTemplate", cacheType: "cacheType" }, outputs: { rendered: "rendered", error: "error", close: "close", pagesLoaded: "pagesLoaded" }, host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "adf-pdf-viewer" }, providers: [RenderingQueueServices], usesOnChanges: true, ngImport: i0, template: "<div class=\"adf-pdf-viewer__container\">\n <ng-container *ngIf=\"showThumbnails\">\n <div class=\"adf-pdf-viewer__thumbnails\">\n <div class=\"adf-thumbnails-template__container\">\n <div class=\"adf-thumbnails-template__buttons\">\n <button mat-icon-button\n data-automation-id='adf-thumbnails-close'\n (click)=\"toggleThumbnails()\"\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS_PANLEL_CLOSE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container *ngIf=\"thumbnailsTemplate\">\n <ng-container *ngTemplateOutlet=\"thumbnailsTemplate;context:pdfThumbnailsContext\" />\n </ng-container>\n <adf-pdf-thumbnails *ngIf=\"!thumbnailsTemplate && !isPanelDisabled\"\n (close)=\"toggleThumbnails()\"\n [pdfViewer]=\"pdfViewer\" />\n </div>\n </div>\n </ng-container>\n\n <div class=\"adf-pdf-viewer__content\">\n <div [id]=\"randomPdfId + '-viewer-pdf-viewer'\"\n class=\"adf-viewer-pdf-viewer\"\n (window:resize)=\"onResize()\">\n <div [id]=\"randomPdfId + '-viewer-viewerPdf'\"\n class=\"adf-pdfViewer pdfViewer\"\n role=\"document\"\n tabindex=\"0\"\n aria-expanded=\"true\">\n <div id=\"loader-container\" class=\"adf-loader-container\">\n <div class=\"adf-loader-item\">\n <mat-progress-bar class=\"adf-loader-item-progress-bar\" mode=\"indeterminate\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"adf-pdf-viewer__toolbar\" *ngIf=\"showToolbar\" [ngStyle]=\"documentOverflow && {bottom: '25px'}\">\n <adf-toolbar>\n\n <ng-container *ngIf=\"allowThumbnails\">\n <button mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS' | translate\"\n [attr.aria-expanded]=\"showThumbnails\"\n data-automation-id=\"adf-thumbnails-button\"\n [disabled]=\"isPanelDisabled\"\n (click)=\"toggleThumbnails()\">\n <mat-icon>dashboard</mat-icon>\n </button>\n <adf-toolbar-divider />\n </ng-container>\n\n <button id=\"viewer-previous-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"previousPage()\">\n <mat-icon>keyboard_arrow_up</mat-icon>\n </button>\n\n <button id=\"viewer-next-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"nextPage()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n\n <div class=\"adf-pdf-viewer__toolbar-page-selector\">\n <label for=\"page-selector\">{{ 'ADF_VIEWER.PAGE_LABEL.SHOWING' | translate }}</label>\n <input #page\n id=\"page-selector\"\n type=\"text\"\n data-automation-id=\"adf-page-selector\"\n pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n value=\"{{ displayPage }}\"\n [attr.aria-label]=\"'ADF_VIEWER.PAGE_LABEL.PAGE_SELECTOR_LABEL' | translate\"\n (keyup.enter)=\"inputPage(page.value)\">\n <span>{{ 'ADF_VIEWER.PAGE_LABEL.OF' | translate }} {{ totalPages }}</span>\n </div>\n\n <div class=\"adf-pdf-viewer__toolbar-page-scale\" data-automation-id=\"adf-page-scale\">\n {{ currentScaleText }}\n </div>\n\n <button id=\"viewer-zoom-in-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n mat-icon-button\n (click)=\"zoomIn()\">\n <mat-icon>zoom_in</mat-icon>\n </button>\n\n <button id=\"viewer-zoom-out-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n mat-icon-button\n (click)=\"zoomOut()\">\n <mat-icon>zoom_out</mat-icon>\n </button>\n\n <button id=\"viewer-scale-page-button\"\n role=\"button\" aria-pressed=\"true\"\n title=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"pageFit()\">\n <mat-icon>zoom_out_map</mat-icon>\n </button>\n\n </adf-toolbar>\n</div>\n", styles: [".adf-pdf-viewer .textLayer{position:absolute;inset:0;overflow:hidden;opacity:.2;line-height:1;border:1px solid gray}.adf-pdf-viewer .textLayer>div{color:transparent;position:absolute;white-space:pre;cursor:text;transform-origin:0 0}.adf-pdf-viewer .textLayer .adf-highlight{margin:-1px;padding:1px;background-color:#b400aa;border-radius:4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-begin{border-radius:4px 0 0 4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-end{border-radius:0 4px 4px 0}.adf-pdf-viewer .textLayer .adf-highlight.adf-middle{border-radius:0}.adf-pdf-viewer .textLayer .adf-highlight.adf-selected{background-color:#006400}.adf-pdf-viewer .textLayer::selection{background:#00f}.adf-pdf-viewer .textLayer .adf-endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.adf-pdf-viewer .textLayer .adf-endOfContent.adf-active{top:0}.adf-pdf-viewer .adf-annotationLayer section{position:absolute}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7) 0 0 repeat}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.adf-pdf-viewer .adf-annotationLayer .adf-textAnnotation img{position:absolute;cursor:pointer}.adf-pdf-viewer .adf-annotationLayer .adf-popupWrapper{position:absolute;width:20em}.adf-pdf-viewer .adf-annotationLayer .adf-popup{position:absolute;z-index:200;max-width:20em;background-color:#ff9;box-shadow:0 2px 5px #333;border-radius:2px;padding:.6em;margin-left:5px;cursor:pointer;word-wrap:break-word}.adf-pdf-viewer .adf-annotationLayer .adf-popup h1{font-size:1em;border-bottom:1px solid #000;padding-bottom:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-popup p{padding-top:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-highlightAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-underlineAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-squigglyAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-strikeoutAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-fileAttachmentAnnotation{cursor:pointer}.adf-pdf-viewer .adf-pdfViewer .canvasWrapper{overflow:hidden}.adf-pdf-viewer .adf-pdfViewer .page{direction:ltr;width:816px;height:1056px;margin:1px auto -8px;position:relative;overflow:visible;border:9px solid transparent;background-clip:content-box;background-color:#fff}.adf-pdf-viewer .adf-pdfViewer .page canvas{margin:0;display:block}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon{position:absolute;display:block;width:100px;height:100px;inset:50% 0 0 50%;margin-top:-50px;margin-left:-50px;font-size:5px;text-indent:-9999em;border-top:1.1em solid rgba(3,0,2,.2);border-right:1.1em solid rgba(3,0,2,.2);border-bottom:1.1em solid rgba(3,0,2,.2);border-left:1.1em solid #030002;animation:load8 1.1s infinite linear;border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon:after{border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page *{padding:0;margin:0}.adf-pdf-viewer .adf-pdfViewer.adf-removePageBorders .adf-page{margin:0 auto 10px;border:none}.adf-pdf-viewer .adf-hidden,.adf-pdf-viewer [hidden]{display:none}.adf-viewer-pdf-viewer{overflow:auto;-webkit-overflow-scrolling:touch;position:absolute;inset:0;outline:none}html[dir=ltr] .adf-viewer-pdf-viewer{box-shadow:inset 1px 0 #ffffff0d}html[dir=rtl] .adf-viewer-pdf-viewer{box-shadow:inset -1px 0 #ffffff0d}\n", ".adf-pdf-viewer{width:100%;height:100%;margin:0}.adf-pdf-viewer .adf-loader-container{display:flex;flex-direction:row;height:100%}.adf-pdf-viewer__thumbnails{position:relative;height:100%;width:190px;background-color:#0000001f;display:flex;flex-direction:column;padding:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout{display:flex;flex-direction:column;flex:1;background:#e6e6e6}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-header{margin-bottom:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content{padding:0;height:100%;overflow:hidden}.adf-pdf-viewer__thumbnails .adf-info-drawer-content{height:100%}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content>*:last-child{height:100%;overflow:hidden}.adf-pdf-viewer .adf-thumbnails-template__container{display:flex;flex-direction:column;height:100%}.adf-pdf-viewer .adf-thumbnails-template__buttons{height:45px;justify-content:flex-end;align-items:flex-end;display:flex;color:var(--adf-theme-foreground-text-color-054)}.adf-pdf-viewer__container{display:flex;height:100%;min-height:1px}.adf-pdf-viewer__content{flex:1 1 auto;position:relative}.adf-pdf-viewer .adf-loader-item{margin:auto;max-height:100px;max-width:300px}.adf-pdf-viewer .adf-loader-item .adf-loader-item-progress-bar{max-width:300px;margin:0;position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.adf-pdf-viewer__toolbar{z-index:100;position:absolute;bottom:5px;left:50%;transform:translate(-50%)}.adf-pdf-viewer__toolbar .adf-toolbar .mat-toolbar{max-height:48px;background-color:var(--adf-theme-background-card-color);border-width:0;border-radius:2px;box-shadow:0 2px 2px #000,0 0 2px #0000001f}.adf-pdf-viewer__toolbar-page-selector{padding-left:10px;padding-right:10px;white-space:nowrap;font-size:var(--theme-body-1-font-size)}.adf-pdf-viewer__toolbar-page-selector>input{border:1px solid var(--adf-theme-foreground-text-color-007);background-color:var(--adf-theme-background-card-color);color:inherit;font-size:var(--theme-body-1-font-size);padding:5px;height:24px;line-height:24px;text-align:right;width:33px;margin-right:4px;outline-width:1px;outline-color:gray}.adf-pdf-viewer__toolbar-page-scale{cursor:default;width:79px;height:24px;font-size:var(--theme-body-1-font-size);border:1px solid var(--adf-theme-foreground-text-color-007);text-align:center;line-height:24px;margin-left:4px;margin-right:4px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: PdfThumbListComponent, selector: "adf-pdf-thumbnails", inputs: ["pdfViewer"], outputs: ["close"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i4.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: ToolbarDividerComponent, selector: "adf-toolbar-divider" }], encapsulation: i0.ViewEncapsulation.None }); }
509
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PdfViewerComponent, isStandalone: true, selector: "adf-pdf-viewer", inputs: { urlFile: "urlFile", blobFile: "blobFile", fileName: "fileName", showToolbar: "showToolbar", allowThumbnails: "allowThumbnails", thumbnailsTemplate: "thumbnailsTemplate", cacheType: "cacheType" }, outputs: { rendered: "rendered", error: "error", close: "close", pagesLoaded: "pagesLoaded" }, host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "adf-pdf-viewer" }, providers: [RenderingQueueServices], usesOnChanges: true, ngImport: i0, template: "<div class=\"adf-pdf-viewer__container\">\n <ng-container *ngIf=\"showThumbnails\">\n <div class=\"adf-pdf-viewer__thumbnails\">\n <div class=\"adf-thumbnails-template__container\">\n <div class=\"adf-thumbnails-template__buttons\">\n <button mat-icon-button\n data-automation-id='adf-thumbnails-close'\n (click)=\"toggleThumbnails()\"\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS_PANLEL_CLOSE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container *ngIf=\"thumbnailsTemplate\">\n <ng-container *ngTemplateOutlet=\"thumbnailsTemplate;context:pdfThumbnailsContext\" />\n </ng-container>\n <adf-pdf-thumbnails *ngIf=\"!thumbnailsTemplate && !isPanelDisabled\"\n (close)=\"toggleThumbnails()\"\n [pdfViewer]=\"pdfViewer\" />\n </div>\n </div>\n </ng-container>\n\n <div class=\"adf-pdf-viewer__content\">\n <div [id]=\"randomPdfId + '-viewer-pdf-viewer'\"\n class=\"adf-viewer-pdf-viewer\"\n (window:resize)=\"onResize()\">\n <div [id]=\"randomPdfId + '-viewer-viewerPdf'\"\n class=\"adf-pdfViewer pdfViewer\"\n role=\"document\"\n tabindex=\"0\"\n aria-expanded=\"true\">\n <div id=\"loader-container\" class=\"adf-loader-container\">\n <div class=\"adf-loader-item\">\n <mat-progress-bar [attr.aria-label]=\"'ADF_VIEWER.ARIA.LOADING' | translate\"\n class=\"adf-loader-item-progress-bar\" mode=\"indeterminate\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"adf-pdf-viewer__toolbar\" *ngIf=\"showToolbar\" [ngStyle]=\"documentOverflow && {bottom: '25px'}\">\n <adf-toolbar>\n\n <ng-container *ngIf=\"allowThumbnails\">\n <button mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS' | translate\"\n [attr.aria-expanded]=\"showThumbnails\"\n data-automation-id=\"adf-thumbnails-button\"\n [disabled]=\"isPanelDisabled\"\n (click)=\"toggleThumbnails()\">\n <mat-icon>dashboard</mat-icon>\n </button>\n <adf-toolbar-divider />\n </ng-container>\n\n <button id=\"viewer-previous-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"previousPage()\">\n <mat-icon>keyboard_arrow_up</mat-icon>\n </button>\n\n <button id=\"viewer-next-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"nextPage()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n\n <div class=\"adf-pdf-viewer__toolbar-page-selector\">\n <label for=\"page-selector\">{{ 'ADF_VIEWER.PAGE_LABEL.SHOWING' | translate }}</label>\n <input #page\n id=\"page-selector\"\n type=\"text\"\n data-automation-id=\"adf-page-selector\"\n pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n value=\"{{ displayPage }}\"\n [attr.aria-label]=\"'ADF_VIEWER.PAGE_LABEL.PAGE_SELECTOR_LABEL' | translate\"\n (keyup.enter)=\"inputPage(page.value)\">\n <span>{{ 'ADF_VIEWER.PAGE_LABEL.OF' | translate }} {{ totalPages }}</span>\n </div>\n\n <div class=\"adf-pdf-viewer__toolbar-page-scale\" data-automation-id=\"adf-page-scale\">\n {{ currentScaleText }}\n </div>\n\n <button id=\"viewer-zoom-in-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n mat-icon-button\n (click)=\"zoomIn()\">\n <mat-icon>zoom_in</mat-icon>\n </button>\n\n <button id=\"viewer-zoom-out-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n mat-icon-button\n (click)=\"zoomOut()\">\n <mat-icon>zoom_out</mat-icon>\n </button>\n\n <button id=\"viewer-scale-page-button\"\n role=\"button\" aria-pressed=\"true\"\n title=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"pageFit()\">\n <mat-icon>zoom_out_map</mat-icon>\n </button>\n\n </adf-toolbar>\n</div>\n", styles: [".adf-pdf-viewer .textLayer{position:absolute;inset:0;overflow:hidden;opacity:.2;line-height:1;border:1px solid gray}.adf-pdf-viewer .textLayer>div{color:transparent;position:absolute;white-space:pre;cursor:text;transform-origin:0 0}.adf-pdf-viewer .textLayer .adf-highlight{margin:-1px;padding:1px;background-color:#b400aa;border-radius:4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-begin{border-radius:4px 0 0 4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-end{border-radius:0 4px 4px 0}.adf-pdf-viewer .textLayer .adf-highlight.adf-middle{border-radius:0}.adf-pdf-viewer .textLayer .adf-highlight.adf-selected{background-color:#006400}.adf-pdf-viewer .textLayer::selection{background:#00f}.adf-pdf-viewer .textLayer .adf-endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.adf-pdf-viewer .textLayer .adf-endOfContent.adf-active{top:0}.adf-pdf-viewer .adf-annotationLayer section{position:absolute}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7) 0 0 repeat}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.adf-pdf-viewer .adf-annotationLayer .adf-textAnnotation img{position:absolute;cursor:pointer}.adf-pdf-viewer .adf-annotationLayer .adf-popupWrapper{position:absolute;width:20em}.adf-pdf-viewer .adf-annotationLayer .adf-popup{position:absolute;z-index:200;max-width:20em;background-color:#ff9;box-shadow:0 2px 5px #333;border-radius:2px;padding:.6em;margin-left:5px;cursor:pointer;word-wrap:break-word}.adf-pdf-viewer .adf-annotationLayer .adf-popup h1{font-size:1em;border-bottom:1px solid #000;padding-bottom:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-popup p{padding-top:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-highlightAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-underlineAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-squigglyAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-strikeoutAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-fileAttachmentAnnotation{cursor:pointer}.adf-pdf-viewer .adf-pdfViewer .canvasWrapper{overflow:hidden}.adf-pdf-viewer .adf-pdfViewer .page{direction:ltr;width:816px;height:1056px;margin:1px auto -8px;position:relative;overflow:visible;border:9px solid transparent;background-clip:content-box;background-color:#fff}.adf-pdf-viewer .adf-pdfViewer .page canvas{margin:0;display:block}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon{position:absolute;display:block;width:100px;height:100px;inset:50% 0 0 50%;margin-top:-50px;margin-left:-50px;font-size:5px;text-indent:-9999em;border-top:1.1em solid rgba(3,0,2,.2);border-right:1.1em solid rgba(3,0,2,.2);border-bottom:1.1em solid rgba(3,0,2,.2);border-left:1.1em solid #030002;animation:load8 1.1s infinite linear;border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon:after{border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page *{padding:0;margin:0}.adf-pdf-viewer .adf-pdfViewer.adf-removePageBorders .adf-page{margin:0 auto 10px;border:none}.adf-pdf-viewer .adf-hidden,.adf-pdf-viewer [hidden]{display:none}.adf-viewer-pdf-viewer{overflow:auto;-webkit-overflow-scrolling:touch;position:absolute;inset:0;outline:none}html[dir=ltr] .adf-viewer-pdf-viewer{box-shadow:inset 1px 0 #ffffff0d}html[dir=rtl] .adf-viewer-pdf-viewer{box-shadow:inset -1px 0 #ffffff0d}\n", ".adf-pdf-viewer{width:100%;height:100%;margin:0}.adf-pdf-viewer .adf-loader-container{display:flex;flex-direction:row;height:100%}.adf-pdf-viewer__thumbnails{position:relative;height:100%;width:190px;background-color:#0000001f;display:flex;flex-direction:column;padding:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout{display:flex;flex-direction:column;flex:1;background:#e6e6e6}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-header{margin-bottom:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content{padding:0;height:100%;overflow:hidden}.adf-pdf-viewer__thumbnails .adf-info-drawer-content{height:100%}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content>*:last-child{height:100%;overflow:hidden}.adf-pdf-viewer .adf-thumbnails-template__container{display:flex;flex-direction:column;height:100%}.adf-pdf-viewer .adf-thumbnails-template__buttons{height:45px;justify-content:flex-end;align-items:flex-end;display:flex;color:var(--adf-theme-foreground-text-color-054)}.adf-pdf-viewer__container{display:flex;height:100%;min-height:1px}.adf-pdf-viewer__content{flex:1 1 auto;position:relative}.adf-pdf-viewer .adf-loader-item{margin:auto;max-height:100px;max-width:300px}.adf-pdf-viewer .adf-loader-item .adf-loader-item-progress-bar{max-width:300px;margin:0;position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.adf-pdf-viewer__toolbar{z-index:100;position:absolute;bottom:5px;left:50%;transform:translate(-50%)}.adf-pdf-viewer__toolbar .adf-toolbar .mat-toolbar{max-height:48px;background-color:var(--adf-theme-background-card-color);border-width:0;border-radius:2px;box-shadow:0 2px 2px #000,0 0 2px #0000001f}.adf-pdf-viewer__toolbar-page-selector{padding-left:10px;padding-right:10px;white-space:nowrap;font-size:var(--theme-body-1-font-size)}.adf-pdf-viewer__toolbar-page-selector>input{border:1px solid var(--adf-theme-foreground-text-color-007);background-color:var(--adf-theme-background-card-color);color:inherit;font-size:var(--theme-body-1-font-size);padding:5px;height:24px;line-height:24px;text-align:right;width:33px;margin-right:4px;outline-width:1px;outline-color:gray}.adf-pdf-viewer__toolbar-page-scale{cursor:default;width:79px;height:24px;font-size:var(--theme-body-1-font-size);border:1px solid var(--adf-theme-foreground-text-color-007);text-align:center;line-height:24px;margin-left:4px;margin-right:4px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: PdfThumbListComponent, selector: "adf-pdf-thumbnails", inputs: ["pdfViewer"], outputs: ["close"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i4.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: ToolbarDividerComponent, selector: "adf-toolbar-divider" }], encapsulation: i0.ViewEncapsulation.None }); }
510
510
  }
511
511
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfViewerComponent, decorators: [{
512
512
  type: Component,
@@ -521,7 +521,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
521
521
  NgStyle,
522
522
  ToolbarComponent,
523
523
  ToolbarDividerComponent
524
- ], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-pdf-viewer__container\">\n <ng-container *ngIf=\"showThumbnails\">\n <div class=\"adf-pdf-viewer__thumbnails\">\n <div class=\"adf-thumbnails-template__container\">\n <div class=\"adf-thumbnails-template__buttons\">\n <button mat-icon-button\n data-automation-id='adf-thumbnails-close'\n (click)=\"toggleThumbnails()\"\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS_PANLEL_CLOSE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container *ngIf=\"thumbnailsTemplate\">\n <ng-container *ngTemplateOutlet=\"thumbnailsTemplate;context:pdfThumbnailsContext\" />\n </ng-container>\n <adf-pdf-thumbnails *ngIf=\"!thumbnailsTemplate && !isPanelDisabled\"\n (close)=\"toggleThumbnails()\"\n [pdfViewer]=\"pdfViewer\" />\n </div>\n </div>\n </ng-container>\n\n <div class=\"adf-pdf-viewer__content\">\n <div [id]=\"randomPdfId + '-viewer-pdf-viewer'\"\n class=\"adf-viewer-pdf-viewer\"\n (window:resize)=\"onResize()\">\n <div [id]=\"randomPdfId + '-viewer-viewerPdf'\"\n class=\"adf-pdfViewer pdfViewer\"\n role=\"document\"\n tabindex=\"0\"\n aria-expanded=\"true\">\n <div id=\"loader-container\" class=\"adf-loader-container\">\n <div class=\"adf-loader-item\">\n <mat-progress-bar class=\"adf-loader-item-progress-bar\" mode=\"indeterminate\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"adf-pdf-viewer__toolbar\" *ngIf=\"showToolbar\" [ngStyle]=\"documentOverflow && {bottom: '25px'}\">\n <adf-toolbar>\n\n <ng-container *ngIf=\"allowThumbnails\">\n <button mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS' | translate\"\n [attr.aria-expanded]=\"showThumbnails\"\n data-automation-id=\"adf-thumbnails-button\"\n [disabled]=\"isPanelDisabled\"\n (click)=\"toggleThumbnails()\">\n <mat-icon>dashboard</mat-icon>\n </button>\n <adf-toolbar-divider />\n </ng-container>\n\n <button id=\"viewer-previous-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"previousPage()\">\n <mat-icon>keyboard_arrow_up</mat-icon>\n </button>\n\n <button id=\"viewer-next-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"nextPage()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n\n <div class=\"adf-pdf-viewer__toolbar-page-selector\">\n <label for=\"page-selector\">{{ 'ADF_VIEWER.PAGE_LABEL.SHOWING' | translate }}</label>\n <input #page\n id=\"page-selector\"\n type=\"text\"\n data-automation-id=\"adf-page-selector\"\n pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n value=\"{{ displayPage }}\"\n [attr.aria-label]=\"'ADF_VIEWER.PAGE_LABEL.PAGE_SELECTOR_LABEL' | translate\"\n (keyup.enter)=\"inputPage(page.value)\">\n <span>{{ 'ADF_VIEWER.PAGE_LABEL.OF' | translate }} {{ totalPages }}</span>\n </div>\n\n <div class=\"adf-pdf-viewer__toolbar-page-scale\" data-automation-id=\"adf-page-scale\">\n {{ currentScaleText }}\n </div>\n\n <button id=\"viewer-zoom-in-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n mat-icon-button\n (click)=\"zoomIn()\">\n <mat-icon>zoom_in</mat-icon>\n </button>\n\n <button id=\"viewer-zoom-out-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n mat-icon-button\n (click)=\"zoomOut()\">\n <mat-icon>zoom_out</mat-icon>\n </button>\n\n <button id=\"viewer-scale-page-button\"\n role=\"button\" aria-pressed=\"true\"\n title=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"pageFit()\">\n <mat-icon>zoom_out_map</mat-icon>\n </button>\n\n </adf-toolbar>\n</div>\n", styles: [".adf-pdf-viewer .textLayer{position:absolute;inset:0;overflow:hidden;opacity:.2;line-height:1;border:1px solid gray}.adf-pdf-viewer .textLayer>div{color:transparent;position:absolute;white-space:pre;cursor:text;transform-origin:0 0}.adf-pdf-viewer .textLayer .adf-highlight{margin:-1px;padding:1px;background-color:#b400aa;border-radius:4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-begin{border-radius:4px 0 0 4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-end{border-radius:0 4px 4px 0}.adf-pdf-viewer .textLayer .adf-highlight.adf-middle{border-radius:0}.adf-pdf-viewer .textLayer .adf-highlight.adf-selected{background-color:#006400}.adf-pdf-viewer .textLayer::selection{background:#00f}.adf-pdf-viewer .textLayer .adf-endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.adf-pdf-viewer .textLayer .adf-endOfContent.adf-active{top:0}.adf-pdf-viewer .adf-annotationLayer section{position:absolute}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7) 0 0 repeat}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.adf-pdf-viewer .adf-annotationLayer .adf-textAnnotation img{position:absolute;cursor:pointer}.adf-pdf-viewer .adf-annotationLayer .adf-popupWrapper{position:absolute;width:20em}.adf-pdf-viewer .adf-annotationLayer .adf-popup{position:absolute;z-index:200;max-width:20em;background-color:#ff9;box-shadow:0 2px 5px #333;border-radius:2px;padding:.6em;margin-left:5px;cursor:pointer;word-wrap:break-word}.adf-pdf-viewer .adf-annotationLayer .adf-popup h1{font-size:1em;border-bottom:1px solid #000;padding-bottom:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-popup p{padding-top:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-highlightAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-underlineAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-squigglyAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-strikeoutAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-fileAttachmentAnnotation{cursor:pointer}.adf-pdf-viewer .adf-pdfViewer .canvasWrapper{overflow:hidden}.adf-pdf-viewer .adf-pdfViewer .page{direction:ltr;width:816px;height:1056px;margin:1px auto -8px;position:relative;overflow:visible;border:9px solid transparent;background-clip:content-box;background-color:#fff}.adf-pdf-viewer .adf-pdfViewer .page canvas{margin:0;display:block}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon{position:absolute;display:block;width:100px;height:100px;inset:50% 0 0 50%;margin-top:-50px;margin-left:-50px;font-size:5px;text-indent:-9999em;border-top:1.1em solid rgba(3,0,2,.2);border-right:1.1em solid rgba(3,0,2,.2);border-bottom:1.1em solid rgba(3,0,2,.2);border-left:1.1em solid #030002;animation:load8 1.1s infinite linear;border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon:after{border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page *{padding:0;margin:0}.adf-pdf-viewer .adf-pdfViewer.adf-removePageBorders .adf-page{margin:0 auto 10px;border:none}.adf-pdf-viewer .adf-hidden,.adf-pdf-viewer [hidden]{display:none}.adf-viewer-pdf-viewer{overflow:auto;-webkit-overflow-scrolling:touch;position:absolute;inset:0;outline:none}html[dir=ltr] .adf-viewer-pdf-viewer{box-shadow:inset 1px 0 #ffffff0d}html[dir=rtl] .adf-viewer-pdf-viewer{box-shadow:inset -1px 0 #ffffff0d}\n", ".adf-pdf-viewer{width:100%;height:100%;margin:0}.adf-pdf-viewer .adf-loader-container{display:flex;flex-direction:row;height:100%}.adf-pdf-viewer__thumbnails{position:relative;height:100%;width:190px;background-color:#0000001f;display:flex;flex-direction:column;padding:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout{display:flex;flex-direction:column;flex:1;background:#e6e6e6}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-header{margin-bottom:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content{padding:0;height:100%;overflow:hidden}.adf-pdf-viewer__thumbnails .adf-info-drawer-content{height:100%}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content>*:last-child{height:100%;overflow:hidden}.adf-pdf-viewer .adf-thumbnails-template__container{display:flex;flex-direction:column;height:100%}.adf-pdf-viewer .adf-thumbnails-template__buttons{height:45px;justify-content:flex-end;align-items:flex-end;display:flex;color:var(--adf-theme-foreground-text-color-054)}.adf-pdf-viewer__container{display:flex;height:100%;min-height:1px}.adf-pdf-viewer__content{flex:1 1 auto;position:relative}.adf-pdf-viewer .adf-loader-item{margin:auto;max-height:100px;max-width:300px}.adf-pdf-viewer .adf-loader-item .adf-loader-item-progress-bar{max-width:300px;margin:0;position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.adf-pdf-viewer__toolbar{z-index:100;position:absolute;bottom:5px;left:50%;transform:translate(-50%)}.adf-pdf-viewer__toolbar .adf-toolbar .mat-toolbar{max-height:48px;background-color:var(--adf-theme-background-card-color);border-width:0;border-radius:2px;box-shadow:0 2px 2px #000,0 0 2px #0000001f}.adf-pdf-viewer__toolbar-page-selector{padding-left:10px;padding-right:10px;white-space:nowrap;font-size:var(--theme-body-1-font-size)}.adf-pdf-viewer__toolbar-page-selector>input{border:1px solid var(--adf-theme-foreground-text-color-007);background-color:var(--adf-theme-background-card-color);color:inherit;font-size:var(--theme-body-1-font-size);padding:5px;height:24px;line-height:24px;text-align:right;width:33px;margin-right:4px;outline-width:1px;outline-color:gray}.adf-pdf-viewer__toolbar-page-scale{cursor:default;width:79px;height:24px;font-size:var(--theme-body-1-font-size);border:1px solid var(--adf-theme-foreground-text-color-007);text-align:center;line-height:24px;margin-left:4px;margin-right:4px}\n"] }]
524
+ ], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-pdf-viewer__container\">\n <ng-container *ngIf=\"showThumbnails\">\n <div class=\"adf-pdf-viewer__thumbnails\">\n <div class=\"adf-thumbnails-template__container\">\n <div class=\"adf-thumbnails-template__buttons\">\n <button mat-icon-button\n data-automation-id='adf-thumbnails-close'\n (click)=\"toggleThumbnails()\"\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS_PANLEL_CLOSE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container *ngIf=\"thumbnailsTemplate\">\n <ng-container *ngTemplateOutlet=\"thumbnailsTemplate;context:pdfThumbnailsContext\" />\n </ng-container>\n <adf-pdf-thumbnails *ngIf=\"!thumbnailsTemplate && !isPanelDisabled\"\n (close)=\"toggleThumbnails()\"\n [pdfViewer]=\"pdfViewer\" />\n </div>\n </div>\n </ng-container>\n\n <div class=\"adf-pdf-viewer__content\">\n <div [id]=\"randomPdfId + '-viewer-pdf-viewer'\"\n class=\"adf-viewer-pdf-viewer\"\n (window:resize)=\"onResize()\">\n <div [id]=\"randomPdfId + '-viewer-viewerPdf'\"\n class=\"adf-pdfViewer pdfViewer\"\n role=\"document\"\n tabindex=\"0\"\n aria-expanded=\"true\">\n <div id=\"loader-container\" class=\"adf-loader-container\">\n <div class=\"adf-loader-item\">\n <mat-progress-bar [attr.aria-label]=\"'ADF_VIEWER.ARIA.LOADING' | translate\"\n class=\"adf-loader-item-progress-bar\" mode=\"indeterminate\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"adf-pdf-viewer__toolbar\" *ngIf=\"showToolbar\" [ngStyle]=\"documentOverflow && {bottom: '25px'}\">\n <adf-toolbar>\n\n <ng-container *ngIf=\"allowThumbnails\">\n <button mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS' | translate\"\n [attr.aria-expanded]=\"showThumbnails\"\n data-automation-id=\"adf-thumbnails-button\"\n [disabled]=\"isPanelDisabled\"\n (click)=\"toggleThumbnails()\">\n <mat-icon>dashboard</mat-icon>\n </button>\n <adf-toolbar-divider />\n </ng-container>\n\n <button id=\"viewer-previous-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"previousPage()\">\n <mat-icon>keyboard_arrow_up</mat-icon>\n </button>\n\n <button id=\"viewer-next-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"nextPage()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n\n <div class=\"adf-pdf-viewer__toolbar-page-selector\">\n <label for=\"page-selector\">{{ 'ADF_VIEWER.PAGE_LABEL.SHOWING' | translate }}</label>\n <input #page\n id=\"page-selector\"\n type=\"text\"\n data-automation-id=\"adf-page-selector\"\n pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n value=\"{{ displayPage }}\"\n [attr.aria-label]=\"'ADF_VIEWER.PAGE_LABEL.PAGE_SELECTOR_LABEL' | translate\"\n (keyup.enter)=\"inputPage(page.value)\">\n <span>{{ 'ADF_VIEWER.PAGE_LABEL.OF' | translate }} {{ totalPages }}</span>\n </div>\n\n <div class=\"adf-pdf-viewer__toolbar-page-scale\" data-automation-id=\"adf-page-scale\">\n {{ currentScaleText }}\n </div>\n\n <button id=\"viewer-zoom-in-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n mat-icon-button\n (click)=\"zoomIn()\">\n <mat-icon>zoom_in</mat-icon>\n </button>\n\n <button id=\"viewer-zoom-out-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n mat-icon-button\n (click)=\"zoomOut()\">\n <mat-icon>zoom_out</mat-icon>\n </button>\n\n <button id=\"viewer-scale-page-button\"\n role=\"button\" aria-pressed=\"true\"\n title=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"pageFit()\">\n <mat-icon>zoom_out_map</mat-icon>\n </button>\n\n </adf-toolbar>\n</div>\n", styles: [".adf-pdf-viewer .textLayer{position:absolute;inset:0;overflow:hidden;opacity:.2;line-height:1;border:1px solid gray}.adf-pdf-viewer .textLayer>div{color:transparent;position:absolute;white-space:pre;cursor:text;transform-origin:0 0}.adf-pdf-viewer .textLayer .adf-highlight{margin:-1px;padding:1px;background-color:#b400aa;border-radius:4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-begin{border-radius:4px 0 0 4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-end{border-radius:0 4px 4px 0}.adf-pdf-viewer .textLayer .adf-highlight.adf-middle{border-radius:0}.adf-pdf-viewer .textLayer .adf-highlight.adf-selected{background-color:#006400}.adf-pdf-viewer .textLayer::selection{background:#00f}.adf-pdf-viewer .textLayer .adf-endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.adf-pdf-viewer .textLayer .adf-endOfContent.adf-active{top:0}.adf-pdf-viewer .adf-annotationLayer section{position:absolute}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7) 0 0 repeat}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.adf-pdf-viewer .adf-annotationLayer .adf-textAnnotation img{position:absolute;cursor:pointer}.adf-pdf-viewer .adf-annotationLayer .adf-popupWrapper{position:absolute;width:20em}.adf-pdf-viewer .adf-annotationLayer .adf-popup{position:absolute;z-index:200;max-width:20em;background-color:#ff9;box-shadow:0 2px 5px #333;border-radius:2px;padding:.6em;margin-left:5px;cursor:pointer;word-wrap:break-word}.adf-pdf-viewer .adf-annotationLayer .adf-popup h1{font-size:1em;border-bottom:1px solid #000;padding-bottom:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-popup p{padding-top:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-highlightAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-underlineAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-squigglyAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-strikeoutAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-fileAttachmentAnnotation{cursor:pointer}.adf-pdf-viewer .adf-pdfViewer .canvasWrapper{overflow:hidden}.adf-pdf-viewer .adf-pdfViewer .page{direction:ltr;width:816px;height:1056px;margin:1px auto -8px;position:relative;overflow:visible;border:9px solid transparent;background-clip:content-box;background-color:#fff}.adf-pdf-viewer .adf-pdfViewer .page canvas{margin:0;display:block}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon{position:absolute;display:block;width:100px;height:100px;inset:50% 0 0 50%;margin-top:-50px;margin-left:-50px;font-size:5px;text-indent:-9999em;border-top:1.1em solid rgba(3,0,2,.2);border-right:1.1em solid rgba(3,0,2,.2);border-bottom:1.1em solid rgba(3,0,2,.2);border-left:1.1em solid #030002;animation:load8 1.1s infinite linear;border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon:after{border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page *{padding:0;margin:0}.adf-pdf-viewer .adf-pdfViewer.adf-removePageBorders .adf-page{margin:0 auto 10px;border:none}.adf-pdf-viewer .adf-hidden,.adf-pdf-viewer [hidden]{display:none}.adf-viewer-pdf-viewer{overflow:auto;-webkit-overflow-scrolling:touch;position:absolute;inset:0;outline:none}html[dir=ltr] .adf-viewer-pdf-viewer{box-shadow:inset 1px 0 #ffffff0d}html[dir=rtl] .adf-viewer-pdf-viewer{box-shadow:inset -1px 0 #ffffff0d}\n", ".adf-pdf-viewer{width:100%;height:100%;margin:0}.adf-pdf-viewer .adf-loader-container{display:flex;flex-direction:row;height:100%}.adf-pdf-viewer__thumbnails{position:relative;height:100%;width:190px;background-color:#0000001f;display:flex;flex-direction:column;padding:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout{display:flex;flex-direction:column;flex:1;background:#e6e6e6}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-header{margin-bottom:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content{padding:0;height:100%;overflow:hidden}.adf-pdf-viewer__thumbnails .adf-info-drawer-content{height:100%}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content>*:last-child{height:100%;overflow:hidden}.adf-pdf-viewer .adf-thumbnails-template__container{display:flex;flex-direction:column;height:100%}.adf-pdf-viewer .adf-thumbnails-template__buttons{height:45px;justify-content:flex-end;align-items:flex-end;display:flex;color:var(--adf-theme-foreground-text-color-054)}.adf-pdf-viewer__container{display:flex;height:100%;min-height:1px}.adf-pdf-viewer__content{flex:1 1 auto;position:relative}.adf-pdf-viewer .adf-loader-item{margin:auto;max-height:100px;max-width:300px}.adf-pdf-viewer .adf-loader-item .adf-loader-item-progress-bar{max-width:300px;margin:0;position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.adf-pdf-viewer__toolbar{z-index:100;position:absolute;bottom:5px;left:50%;transform:translate(-50%)}.adf-pdf-viewer__toolbar .adf-toolbar .mat-toolbar{max-height:48px;background-color:var(--adf-theme-background-card-color);border-width:0;border-radius:2px;box-shadow:0 2px 2px #000,0 0 2px #0000001f}.adf-pdf-viewer__toolbar-page-selector{padding-left:10px;padding-right:10px;white-space:nowrap;font-size:var(--theme-body-1-font-size)}.adf-pdf-viewer__toolbar-page-selector>input{border:1px solid var(--adf-theme-foreground-text-color-007);background-color:var(--adf-theme-background-card-color);color:inherit;font-size:var(--theme-body-1-font-size);padding:5px;height:24px;line-height:24px;text-align:right;width:33px;margin-right:4px;outline-width:1px;outline-color:gray}.adf-pdf-viewer__toolbar-page-scale{cursor:default;width:79px;height:24px;font-size:var(--theme-body-1-font-size);border:1px solid var(--adf-theme-foreground-text-color-007);text-align:center;line-height:24px;margin-left:4px;margin-right:4px}\n"] }]
525
525
  }], ctorParameters: () => [], propDecorators: { urlFile: [{
526
526
  type: Input
527
527
  }], blobFile: [{
@@ -548,4 +548,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
548
548
  type: HostListener,
549
549
  args: ['document:keydown', ['$event']]
550
550
  }] } });
551
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3ZpZXdlci9jb21wb25lbnRzL3BkZi12aWV3ZXIvcGRmLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3ZpZXdlci9jb21wb25lbnRzL3BkZi12aWV3ZXIvcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCx5REFBeUQ7QUFDekQseUNBQXlDO0FBQ3pDLHFEQUFxRDtBQUVyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFB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Z0I7d0JBQ2hCLHVCQUF1QjtxQkFDMUIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSTt3REFJckMsT0FBTztzQkFETixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTTtnQkFJUCxLQUFLO3NCQURKLE1BQU07Z0JBSVAsS0FBSztzQkFESixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkEyZ0JQLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmUgKi9cblxuaW1wb3J0IHsgTmdJZiwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGZyb20sIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29uZmlnJztcbmltcG9ydCB7IFRvb2xiYXJDb21wb25lbnQsIFRvb2xiYXJEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdG9vbGJhcic7XG5pbXBvcnQgeyBSZW5kZXJpbmdRdWV1ZVNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVuZGVyaW5nLXF1ZXVlLnNlcnZpY2VzJztcbmltcG9ydCB7IFBkZlBhc3N3b3JkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vcGRmLXZpZXdlci1wYXNzd29yZC1kaWFsb2cvcGRmLXZpZXdlci1wYXNzd29yZC1kaWFsb2cnO1xuaW1wb3J0IHsgUGRmVGh1bWJMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vcGRmLXZpZXdlci10aHVtYm5haWxzL3BkZi12aWV3ZXItdGh1bWJuYWlscy5jb21wb25lbnQnO1xuaW1wb3J0ICogYXMgcGRmanNMaWIgZnJvbSAncGRmanMtZGlzdC9idWlsZC9wZGYubWluLm1qcyc7XG5pbXBvcnQgeyBFdmVudEJ1cywgUERGVmlld2VyIH0gZnJvbSAncGRmanMtZGlzdC93ZWIvcGRmX3ZpZXdlci5tanMnO1xuaW1wb3J0IHsgT25Qcm9ncmVzc1BhcmFtZXRlcnMsIFBERkRvY3VtZW50TG9hZGluZ1Rhc2ssIFBERkRvY3VtZW50UHJveHkgfSBmcm9tICdwZGZqcy1kaXN0L3R5cGVzL3NyYy9kaXNwbGF5L2FwaSc7XG5cbmV4cG9ydCB0eXBlIFBkZlNjYWxlTW9kZSA9ICdpbml0JyB8ICdwYWdlLWFjdHVhbCcgfCAncGFnZS13aWR0aCcgfCAncGFnZS1oZWlnaHQnIHwgJ3BhZ2UtZml0JyB8ICdhdXRvJztcblxuZXhwb3J0IGNvbnN0IFBERkpTX01PRFVMRSA9IG5ldyBJbmplY3Rpb25Ub2tlbignUERGSlNfTU9EVUxFJywgeyBmYWN0b3J5OiAoKSA9PiBwZGZqc0xpYiB9KTtcbmV4cG9ydCBjb25zdCBQREZKU19WSUVXRVJfTU9EVUxFID0gbmV3IEluamVjdGlvblRva2VuKCdQREZKU19WSUVXRVJfTU9EVUxFJywgeyBmYWN0b3J5OiAoKSA9PiBQREZWaWV3ZXIgfSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXBkZi12aWV3ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BkZi12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3BkZi12aWV3ZXItaG9zdC5jb21wb25lbnQuc2NzcycsICcuL3BkZi12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtSZW5kZXJpbmdRdWV1ZVNlcnZpY2VzXSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLXBkZi12aWV3ZXInIH0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgUGRmVGh1bWJMaXN0Q29tcG9uZW50LFxuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhckRpdmlkZXJDb21wb25lbnRcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUGRmVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgdXJsRmlsZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBibG9iRmlsZTogQmxvYjtcblxuICAgIEBJbnB1dCgpXG4gICAgZmlsZU5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd1Rvb2xiYXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBhbGxvd1RodW1ibmFpbHMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgdGh1bWJuYWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FjaGVUeXBlOiBzdHJpbmcgPSAnJztcblxuICAgIEBPdXRwdXQoKVxuICAgIHJlbmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHBhZ2VzTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgcGFnZTogbnVtYmVyO1xuICAgIGRpc3BsYXlQYWdlOiBudW1iZXI7XG4gICAgdG90YWxQYWdlczogbnVtYmVyO1xuICAgIGxvYWRpbmdQZXJjZW50OiBudW1iZXI7XG4gICAgcGRmVmlld2VyOiBQREZWaWV3ZXI7XG4gICAgcGRmSnNXb3JrZXJVcmw6IHN0cmluZztcbiAgICBwZGZKc1dvcmtlckluc3RhbmNlOiBXb3JrZXI7XG4gICAgY3VycmVudFNjYWxlTW9kZTogUGRmU2NhbGVNb2RlID0gJ2luaXQnO1xuXG4gICAgTUFYX0FVVE9fU0NBTEU6IG51bWJlciA9IDEuMjU7XG4gICAgREVGQVVMVF9TQ0FMRV9ERUxUQTogbnVtYmVyID0gMS4xO1xuICAgIE1JTl9TQ0FMRTogbnVtYmVyID0gMC4yNTtcbiAgICBNQVhfU0NBTEU6IG51bWJlciA9IDEwLjA7XG5cbiAgICBsb2FkaW5nVGFzazogUERGRG9jdW1lbnRMb2FkaW5nVGFzaztcbiAgICBpc1BhbmVsRGlzYWJsZWQgPSB0cnVlO1xuICAgIHNob3dUaHVtYm5haWxzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcGRmVGh1bWJuYWlsc0NvbnRleHQ6IHsgdmlld2VyOiBhbnkgfSA9IHsgdmlld2VyOiBudWxsIH07XG4gICAgcmFuZG9tUGRmSWQ6IHN0cmluZztcbiAgICBkb2N1bWVudE92ZXJmbG93ID0gZmFsc2U7XG5cbiAgICBnZXQgY3VycmVudFNjYWxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjdXJyZW50U2NhbGVWYWx1ZVN0ciA9IHRoaXMucGRmVmlld2VyPy5jdXJyZW50U2NhbGVWYWx1ZTtcbiAgICAgICAgY29uc3Qgc2NhbGVOdW1iZXIgPSBOdW1iZXIoY3VycmVudFNjYWxlVmFsdWVTdHIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTY2FsZVRleHQgPSBzY2FsZU51bWJlciA/IGAke01hdGgucm91bmQoc2NhbGVOdW1iZXIgKiAxMDApfSVgIDogJyc7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRTY2FsZVRleHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwZGZqc0xpYiA9IGluamVjdChQREZKU19NT0RVTEUpO1xuICAgIHByaXZhdGUgcGRmanNWaWV3ZXIgPSBpbmplY3QoUERGSlNfVklFV0VSX01PRFVMRSk7XG5cbiAgICBwcml2YXRlIGV2ZW50QnVzID0gbmV3IEV2ZW50QnVzKCk7XG4gICAgcHJpdmF0ZSBwZGZqc0RlZmF1bHRPcHRpb25zID0ge1xuICAgICAgICBkaXNhYmxlQXV0b0ZldGNoOiB0cnVlLFxuICAgICAgICBkaXNhYmxlU3RyZWFtOiB0cnVlLFxuICAgICAgICBjTWFwVXJsOiAnLi9jbWFwcy8nLFxuICAgICAgICBjTWFwUGFja2VkOiB0cnVlXG4gICAgfTtcbiAgICBwcml2YXRlIHBkZmpzV29ya2VyRGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcbiAgICBwcml2YXRlIHJlbmRlcmluZ1F1ZXVlU2VydmljZXMgPSBpbmplY3QoUmVuZGVyaW5nUXVldWVTZXJ2aWNlcyk7XG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlID0gaW5qZWN0KEFwcENvbmZpZ1NlcnZpY2UpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIG5lZWRlZCB0byBwcmVzZXJ2ZSBcInRoaXNcIiBjb250ZXh0XG4gICAgICAgIHRoaXMub25QYWdlQ2hhbmdlID0gdGhpcy5vblBhZ2VDaGFuZ2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5vblBhZ2VzTG9hZGVkID0gdGhpcy5vblBhZ2VzTG9hZGVkLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMub25QYWdlUmVuZGVyZWQgPSB0aGlzLm9uUGFnZVJlbmRlcmVkLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdGhpcy5yYW5kb21QZGZJZCA9IERhdGUubm93KCkudG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5wZGZqc1dvcmtlckRlc3Ryb3kkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG51bGwpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBmcm9tKHRoaXMuZGVzdHJveVBmZEpzV29ya2VyKCkpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgZ2V0VXNlclNjYWxpbmcoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHNjYWxlQ29uZmlnID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldDxudW1iZXI+KCdhZGYtdmlld2VyLnBkZi12aWV3ZXItc2NhbGluZycsIHVuZGVmaW5lZCk7XG5cbiAgICAgICAgaWYgKHNjYWxlQ29uZmlnKSB7XG4gICAgICAgICAgICBzY2FsZUNvbmZpZyA9IHNjYWxlQ29uZmlnIC8gMTAwO1xuICAgICAgICAgICAgc2NhbGVDb25maWcgPSB0aGlzLmNoZWNrTGltaXRzKHNjYWxlQ29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzY2FsZUNvbmZpZztcbiAgICB9XG5cbiAgICBjaGVja0xpbWl0cyhzY2FsZUNvbmZpZzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHNjYWxlQ29uZmlnID4gdGhpcy5NQVhfU0NBTEUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLk1BWF9TQ0FMRTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2FsZUNvbmZpZyA8IHRoaXMuTUlOX1NDQUxFKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5NSU5fU0NBTEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gc2NhbGVDb25maWc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGJsb2JGaWxlID0gY2hhbmdlc1snYmxvYkZpbGUnXTtcblxuICAgICAgICBpZiAoYmxvYkZpbGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGRmT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5wZGZqc0RlZmF1bHRPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiByZWFkZXIucmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXQ8Ym9vbGVhbj4oJ2F1dGgud2l0aENyZWRlbnRpYWxzJywgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgaXNFdmFsU3VwcG9ydGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlUGRmKHBkZk9wdGlvbnMpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iRmlsZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJsRmlsZSA9IGNoYW5nZXNbJ3VybEZpbGUnXTtcbiAgICAgICAgaWYgKHVybEZpbGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcGRmT3B0aW9uczogYW55ID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMucGRmanNEZWZhdWx0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICB1cmw6IHVybEZpbGUuY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldDxib29sZWFuPignYXV0aC53aXRoQ3JlZGVudGlhbHMnLCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIGlzRXZhbFN1cHBvcnRlZDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGhpcy5jYWNoZVR5cGUpIHtcbiAgICAgICAgICAgICAgICBwZGZPcHRpb25zLmh0dHBIZWFkZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICAnQ2FjaGUtQ29udHJvbCc6IHRoaXMuY2FjaGVUeXBlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZVBkZihwZGZPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy51cmxGaWxlICYmICF0aGlzLmJsb2JGaWxlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dHJpYnV0ZSB1cmxGaWxlIG9yIGJsb2JGaWxlIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleGVjdXRlUGRmKHBkZk9wdGlvbnM6IGFueSkge1xuICAgICAgICB0aGlzLnNldHVwUGRmSnNXb3JrZXIoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1Rhc2sgPSB0aGlzLnBkZmpzTGliLmdldERvY3VtZW50KHBkZk9wdGlvbnMpO1xuXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdUYXNrLm9uUGFzc3dvcmQgPSAoY2FsbGJhY2ssIHJlYXNvbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25QZGZQYXNzd29yZChjYWxsYmFjaywgcmVhc29uKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1Rhc2sub25Qcm9ncmVzcyA9IChwcm9ncmVzc0RhdGE6IE9uUHJvZ3Jlc3NQYXJhbWV0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGV2ZWwgPSBwcm9ncmVzc0RhdGEubG9hZGVkIC8gcHJvZ3Jlc3NEYXRhLnRvdGFsO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1BlcmNlbnQgPSBNYXRoLnJvdW5kKGxldmVsICogMTAwKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuaXNQYW5lbERpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nVGFzay5wcm9taXNlXG4gICAgICAgICAgICAgICAgLnRoZW4oKHBkZkRvY3VtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxQYWdlcyA9IHBkZkRvY3VtZW50Lm51bVBhZ2VzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAxO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlQYWdlID0gMTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0UERGVmlld2VyKHBkZkRvY3VtZW50KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGRmRG9jdW1lbnQuZ2V0UGFnZSgxKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNjYWxlUGFnZSgnaW5pdCcpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLmVycm9yLmVtaXQoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0dXBQZGZKc1dvcmtlcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMucGRmSnNXb3JrZXJJbnN0YW5jZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kZXN0cm95UGZkSnNXb3JrZXIoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5wZGZKc1dvcmtlclVybCkge1xuICAgICAgICAgICAgdGhpcy5wZGZKc1dvcmtlclVybCA9IGF3YWl0IHRoaXMuZ2V0UGRmSnNXb3JrZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBkZkpzV29ya2VySW5zdGFuY2UgPSBuZXcgV29ya2VyKHRoaXMucGRmSnNXb3JrZXJVcmwsIHsgdHlwZTogJ21vZHVsZScgfSk7XG4gICAgICAgIHRoaXMucGRmanNMaWIuR2xvYmFsV29ya2VyT3B0aW9ucy53b3JrZXJQb3J0ID0gdGhpcy5wZGZKc1dvcmtlckluc3RhbmNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0UGRmSnNXb3JrZXIoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnLi9wZGYud29ya2VyLm1pbi5tanMnKTtcbiAgICAgICAgY29uc3Qgd29ya2VyU2NyaXB0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3dvcmtlclNjcmlwdF0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnIH0pO1xuICAgICAgICByZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICB9XG5cbiAgICBpbml0UERGVmlld2VyKHBkZkRvY3VtZW50OiBQREZEb2N1bWVudFByb3h5KSB7XG4gICAgICAgIGNvbnN0IHZpZXdlcjogYW55ID0gdGhpcy5nZXRWaWV3ZXIoKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXREb2N1bWVudENvbnRhaW5lcigpO1xuXG4gICAgICAgIGlmICh2aWV3ZXIgJiYgY29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnBkZlZpZXdlciA9IG5ldyB0aGlzLnBkZmpzVmlld2VyKHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgICAgICAgdmlld2VyLFxuICAgICAgICAgICAgICAgIHJlbmRlcmluZ1F1ZXVlOiB0aGlzLnJlbmRlcmluZ1F1ZXVlU2VydmljZXMsXG4gICAgICAgICAgICAgICAgZXZlbnRCdXM6IHRoaXMuZXZlbnRCdXMsXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbk1vZGU6IDBcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBjc3BlbGw6IGRpc2FibGUtbmV4dFxuICAgICAgICAgICAgdGhpcy5ldmVudEJ1cy5vbigncGFnZWNoYW5naW5nJywgdGhpcy5vblBhZ2VDaGFuZ2UpO1xuICAgICAgICAgICAgLy8gY3NwZWxsOiBkaXNhYmxlLW5leHRcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMub24oJ3BhZ2VzbG9hZGVkJywgdGhpcy5vblBhZ2VzTG9hZGVkKTtcbiAgICAgICAgICAgIC8vIGNzcGVsbDogZGlzYWJsZS1uZXh0XG4gICAgICAgICAgICB0aGlzLmV2ZW50QnVzLm9uKCd0ZXh0bGF5ZXJyZW5kZXJlZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZVJlbmRlcmVkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMub24oJ3BhZ2VyZW5kZXJlZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZVJlbmRlcmVkKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJpbmdRdWV1ZVNlcnZpY2VzLnNldFZpZXdlcih0aGlzLnBkZlZpZXdlcik7XG4gICAgICAgICAgICB0aGlzLnBkZlZpZXdlci5zZXREb2N1bWVudChwZGZEb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnBkZlRodW1ibmFpbHNDb250ZXh0LnZpZXdlciA9IHRoaXMucGRmVmlld2VyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnBkZlZpZXdlcikge1xuICAgICAgICAgICAgLy8gY3NwZWxsOiBkaXNhYmxlLW5leHRcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMub2ZmKCdwYWdlY2hhbmdpbmcnLCAoKSA9PiB7fSk7XG4gICAgICAgICAgICAvLyBjc3BlbGw6IGRpc2FibGUtbmV4dFxuICAgICAgICAgICAgdGhpcy5ldmVudEJ1cy5vZmYoJ3BhZ2VzbG9hZGVkJywgKCkgPT4ge30pO1xuICAgICAgICAgICAgLy8gY3NwZWxsOiBkaXNhYmxlLW5leHRcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMub2ZmKCd0ZXh0bGF5ZXJyZW5kZXJlZCcsICgpID0+IHt9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmdUYXNrKSB7XG4gICAgICAgICAgICB0aGlzLnBkZmpzV29ya2VyRGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBkZmpzV29ya2VyRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5yZXZva2VQZGZKc1dvcmtlclVybCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZGVzdHJveVBmZEpzV29ya2VyKCkge1xuICAgICAgICBpZiAodGhpcy5sb2FkaW5nVGFzay5kZXN0cm95KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRpbmdUYXNrLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wZGZKc1dvcmtlckluc3RhbmNlKSB7XG4gICAgICAgICAgICB0aGlzLnBkZkpzV29ya2VySW5zdGFuY2UudGVybWluYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nVGFzayA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXZva2VQZGZKc1dvcmtlclVybCgpOiB2b2lkIHtcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLnBkZkpzV29ya2VyVXJsKTtcbiAgICB9XG5cbiAgICB0b2dnbGVUaHVtYm5haWxzKCkge1xuICAgICAgICB0aGlzLnNob3dUaHVtYm5haWxzID0gIXRoaXMuc2hvd1RodW1ibmFpbHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRvIHNjYWxlIHRoZSBwYWdlIGN1cnJlbnQgc3VwcG9ydCBpbXBsZW1lbnRhdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIHNjYWxlTW9kZSAtIG5ldyBzY2FsZSBtb2RlXG4gICAgICovXG4gICAgc2NhbGVQYWdlKHNjYWxlTW9kZTogUGRmU2NhbGVNb2RlKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNjYWxlTW9kZSA9IHNjYWxlTW9kZTtcblxuICAgICAgICBjb25zdCB2aWV3ZXJDb250YWluZXIgPSB0aGlzLmdldE1haW5Db250YWluZXIoKTtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRDb250YWluZXIgPSB0aGlzLmdldERvY3VtZW50Q29udGFpbmVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMucGRmVmlld2VyICYmIGRvY3VtZW50Q29udGFpbmVyKSB7XG4gICAgICAgICAgICBsZXQgd2lkdGhDb250YWluZXI6IG51bWJlcjtcbiAgICAgICAgICAgIGxldCBoZWlnaHRDb250YWluZXI6IG51bWJlcjtcblxuICAgICAgICAgICAgaWYgKHZpZXdlckNvbnRhaW5lciAmJiB2aWV3ZXJDb250YWluZXIuY2xpZW50V2lkdGggPD0gZG9jdW1lbnRDb250YWluZXIuY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aENvbnRhaW5lciA9IHZpZXdlckNvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICBoZWlnaHRDb250YWluZXIgPSB2aWV3ZXJDb250YWluZXIuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aWR0aENvbnRhaW5lciA9IGRvY3VtZW50Q29udGFpbmVyLmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgIGhlaWdodENvbnRhaW5lciA9IGRvY3VtZW50Q29udGFpbmVyLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY3VycmVudFBhZ2UgPSB0aGlzLnBkZlZpZXdlci5fcGFnZXNbdGhpcy5wZGZWaWV3ZXIuX2N1cnJlbnRQYWdlTnVtYmVyIC0gMV07XG5cbiAgICAgICAgICAgIGNvbnN0IHBhZGRpbmcgPSAyMDtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2VXaWR0aFNjYWxlID0gKCh3aWR0aENvbnRhaW5lciAtIHBhZGRpbmcpIC8gY3VycmVudFBhZ2Uud2lkdGgpICogY3VycmVudFBhZ2Uuc2NhbGU7XG4gICAgICAgICAgICBjb25zdCBwYWdlSGVpZ2h0U2NhbGUgPSAoKGhlaWdodENvbnRhaW5lciAtIHBhZGRpbmcpIC8gY3VycmVudFBhZ2Uud2lkdGgpICogY3VycmVudFBhZ2Uuc2NhbGU7XG5cbiAgICAgICAgICAgIGxldCBzY2FsZTogbnVtYmVyO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmN1cnJlbnRTY2FsZU1vZGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpbml0JzpcbiAgICAgICAgICAgICAgICBjYXNlICdwYWdlLWZpdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgc2NhbGUgPSB0aGlzLmdldFVzZXJTY2FsaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlID0gdGhpcy5hdXRvU2NhbGluZyhwYWdlSGVpZ2h0U2NhbGUsIHBhZ2VXaWR0aFNjYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAncGFnZS1hY3R1YWwnOiB7XG4gICAgICAgICAgICAgICAgICAgIHNjYWxlID0gMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ3BhZ2Utd2lkdGgnOiB7XG4gICAgICAgICAgICAgICAgICAgIHNjYWxlID0gcGFnZVdpZHRoU2NhbGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdwYWdlLWhlaWdodCc6IHtcbiAgICAgICAgICAgICAgICAgICAgc2NhbGUgPSBwYWdlSGVpZ2h0U2NhbGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoge1xuICAgICAgICAgICAgICAgICAgICBzY2FsZSA9IHRoaXMuYXV0b1NjYWxpbmcocGFnZUhlaWdodFNjYWxlLCBwYWdlV2lkdGhTY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2V0U2NhbGVVcGRhdGVQYWdlcyhzY2FsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGF1dG9TY2FsaW5nKHBhZ2VIZWlnaHRTY2FsZTogbnVtYmVyLCBwYWdlV2lkdGhTY2FsZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBob3Jpem9udGFsU2NhbGU6IG51bWJlcjtcbiAgICAgICAgaWYgKHRoaXMuaXNMYW5kc2NhcGUpIHtcbiAgICAgICAgICAgIGhvcml6b250YWxTY2FsZSA9IE1hdGgubWluKHBhZ2VIZWlnaHRTY2FsZSwgcGFnZVdpZHRoU2NhbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG9yaXpvbnRhbFNjYWxlID0gcGFnZVdpZHRoU2NhbGU7XG4gICAgICAgIH1cbiAgICAgICAgaG9yaXpvbnRhbFNjYWxlID0gTWF0aC5yb3VuZChob3Jpem9udGFsU2NhbGUpO1xuICAgICAgICBjb25zdCBzY2FsZSA9IE1hdGgubWluKHRoaXMuTUFYX0FVVE9fU0NBTEUsIGhvcml6b250YWxTY2FsZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrUGFnZUZpdEluQ29udGFpbmVyKHNjYWxlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1haW5Db250YWluZXIoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5yYW5kb21QZGZJZH0tdmlld2VyLW1haW4tY29udGFpbmVyYCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREb2N1bWVudENvbnRhaW5lcigpOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLnJhbmRvbVBkZklkfS12aWV3ZXItcGRmLXZpZXdlcmApIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Vmlld2VyKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke3RoaXMucmFuZG9tUGRmSWR9LXZpZXdlci12aWV3ZXJQZGZgKTtcbiAgICB9XG5cbiAgICBjaGVja1BhZ2VGaXRJbkNvbnRhaW5lcihzY2FsZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRDb250YWluZXJTaXplID0gdGhpcy5nZXREb2N1bWVudENvbnRhaW5lcigpO1xuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5wZGZWaWV3ZXIuX3BhZ2VzW3RoaXMucGRmVmlld2VyLl9jdXJyZW50UGFnZU51bWJlciAtIDFdO1xuXG4gICAgICAgIGlmIChwYWdlLndpZHRoID4gZG9jdW1lbnRDb250YWluZXJTaXplLmNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICBzY2FsZSA9IE1hdGguZnJvdW5kKChkb2N1bWVudENvbnRhaW5lclNpemUuY2xpZW50V2lkdGggLSAyMCkgLyBwYWdlLndpZHRoKTtcbiAgICAgICAgICAgIGlmIChzY2FsZSA8IHRoaXMuTUlOX1NDQUxFKSB7XG4gICAgICAgICAgICAgICAgc2NhbGUgPSB0aGlzLk1JTl9TQ0FMRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzY2FsZTtcbiAgICB9XG5cbiAgICBzZXREb2N1bWVudE92ZXJmbG93KCkge1xuICAgICAgICBjb25zdCBkb2N1bWVudENvbnRhaW5lclNpemUgPSB0aGlzLmdldERvY3VtZW50Q29udGFpbmVyKCk7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLnBkZlZpZXdlci5fcGFnZXNbdGhpcy5wZGZWaWV3ZXIuX2N1cnJlbnRQYWdlTnVtYmVyIC0gMV07XG5cbiAgICAgICAgdGhpcy5kb2N1bWVudE92ZXJmbG93ID0gcGFnZS53aWR0aCA+IGRvY3VtZW50Q29udGFpbmVyU2l6ZS5jbGllbnRXaWR0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgYWxsIHRoZSBwYWdlcyB3aXRoIHRoZSBuZXdTY2FsZSBzY2FsZVxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld1NjYWxlIC0gbmV3IHNjYWxlIHBhZ2VcbiAgICAgKi9cbiAgICBzZXRTY2FsZVVwZGF0ZVBhZ2VzKG5ld1NjYWxlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucGRmVmlld2VyKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTYW1lU2NhbGUodGhpcy5wZGZWaWV3ZXIuY3VycmVudFNjYWxlVmFsdWUsIG5ld1NjYWxlLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wZGZWaWV3ZXIuY3VycmVudFNjYWxlVmFsdWUgPSBuZXdTY2FsZS50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wZGZWaWV3ZXIudXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREb2N1bWVudE92ZXJmbG93KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIHJlcXVlc3Qgc2NhbGUgb2YgdGhlIHBhZ2UgaXMgdGhlIHNhbWUgZm9yIGF2b2lkIHVzZWxlc3MgcmUtcmVuZGVyaW5nXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2xkU2NhbGUgLSBvbGQgc2NhbGUgcGFnZVxuICAgICAqIEBwYXJhbSBuZXdTY2FsZSAtIG5ldyBzY2FsZSBwYWdlXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzY2FsZSBpcyB0aGUgc2FtZSwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBpc1NhbWVTY2FsZShvbGRTY2FsZTogc3RyaW5nLCBuZXdTY2FsZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBuZXdTY2FsZSA9PT0gb2xkU2NhbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgaXMgYSBsYW5kIHNjYXBlIHZpZXdcbiAgICAgKlxuICAgICAqIEBwYXJhbSB3aWR0aCB0YXJnZXQgd2lkdGhcbiAgICAgKiBAcGFyYW0gaGVpZ2h0IHRhcmdldCBoZWlnaHRcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHRhcmdldCBpcyBpbiB0aGUgbGFuZHNjYXBlIG1vZGUsIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgaXNMYW5kc2NhcGUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHdpZHRoID4gaGVpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0cmlnZ2VyZWQgd2hlbiB0aGUgcGFnZSBpcyByZXNpemVkXG4gICAgICovXG4gICAgb25SZXNpemUoKSB7XG4gICAgICAgIHRoaXMuc2NhbGVQYWdlKHRoaXMuY3VycmVudFNjYWxlTW9kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdG9nZ2xlIHRoZSBmaXQgcGFnZSBwZGZcbiAgICAgKi9cbiAgICBwYWdlRml0KCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50U2NhbGVNb2RlICE9PSAncGFnZS1maXQnKSB7XG4gICAgICAgICAgICB0aGlzLnNjYWxlUGFnZSgncGFnZS1maXQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2NhbGVQYWdlKCdhdXRvJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB6b29tIGluIHBhZ2UgcGRmXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGlja3MgbnVtYmVyIG9mIHRpY2tzIHRvIHpvb21cbiAgICAgKi9cbiAgICB6b29tSW4odGlja3M/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IG5ld1NjYWxlOiBhbnkgPSB0aGlzLnBkZlZpZXdlci5jdXJyZW50U2NhbGVWYWx1ZTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgbmV3U2NhbGUgPSAobmV3U2NhbGUgKiB0aGlzLkRFRkFVTFRfU0NBTEVfREVMVEEpLnRvRml4ZWQoMik7XG4gICAgICAgICAgICBuZXdTY2FsZSA9IE1hdGguY2VpbChuZXdTY2FsZSAqIDEwKSAvIDEwO1xuICAgICAgICAgICAgbmV3U2NhbGUgPSBNYXRoLm1pbih0aGlzLk1BWF9TQ0FMRSwgbmV3U2NhbGUpO1xuICAgICAgICB9IHdoaWxlICgtLXRpY2tzID4gMCAmJiBuZXdTY2FsZSA8IHRoaXMuTUFYX1NDQUxFKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2NhbGVNb2RlID0gJ2F1dG8nO1xuICAgICAgICB0aGlzLnNldFNjYWxlVXBkYXRlUGFnZXMobmV3U2NhbGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHpvb20gb3V0IHBhZ2UgcGRmXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGlja3MgbnVtYmVyIG9mIHRpY2tzIHRvIHNjYWxlXG4gICAgICovXG4gICAgem9vbU91dCh0aWNrcz86IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgbmV3U2NhbGU6IGFueSA9IHRoaXMucGRmVmlld2VyLmN1cnJlbnRTY2FsZVZhbHVlO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBuZXdTY2FsZSA9IChuZXdTY2FsZSAvIHRoaXMuREVGQVVMVF9TQ0FMRV9ERUxUQSkudG9GaXhlZCgyKTtcbiAgICAgICAgICAgIG5ld1NjYWxlID0gTWF0aC5mbG9vcihuZXdTY2FsZSAqIDEwKSAvIDEwO1xuICAgICAgICAgICAgbmV3U2NhbGUgPSBNYXRoLm1heCh0aGlzLk1JTl9TQ0FMRSwgbmV3U2NhbGUpO1xuICAgICAgICB9IHdoaWxlICgtLXRpY2tzID4gMCAmJiBuZXdTY2FsZSA+IHRoaXMuTUlOX1NDQUxFKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2NhbGVNb2RlID0gJ2F1dG8nO1xuICAgICAgICB0aGlzLnNldFNjYWxlVXBkYXRlUGFnZXMobmV3U2NhbGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWQgdGhlIHByZXZpb3VzIHBhZ2VcbiAgICAgKi9cbiAgICBwcmV2aW91c1BhZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnBkZlZpZXdlciAmJiB0aGlzLnBhZ2UgPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UtLTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVBhZ2UgPSB0aGlzLnBhZ2U7XG5cbiAgICAgICAgICAgIHRoaXMucGRmVmlld2VyLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5wYWdlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9hZCB0aGUgbmV4dCBwYWdlXG4gICAgICovXG4gICAgbmV4dFBhZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnBkZlZpZXdlciAmJiB0aGlzLnBhZ2UgPCB0aGlzLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZSsrO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGFnZSA9IHRoaXMucGFnZTtcblxuICAgICAgICAgICAgdGhpcy5wZGZWaWV3ZXIuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLnBhZ2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkIHRoZSBwYWdlIGluIGlucHV0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFnZSB0byBsb2FkXG4gICAgICovXG4gICAgaW5wdXRQYWdlKHBhZ2U6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwYWdlSW5wdXQgPSBwYXJzZUludChwYWdlLCAxMCk7XG5cbiAgICAgICAgaWYgKCFpc05hTihwYWdlSW5wdXQpICYmIHBhZ2VJbnB1dCA+IDAgJiYgcGFnZUlucHV0IDw9IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgICAgICAgdGhpcy5wYWdlID0gcGFnZUlucHV0O1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGFnZSA9IHRoaXMucGFnZTtcbiAgICAgICAgICAgIHRoaXMucGRmVmlld2VyLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5wYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGFnZSA9IHRoaXMucGFnZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhZ2UgQ2hhbmdlIEV2ZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgZXZlbnRcbiAgICAgKi9cbiAgICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAoZXZlbnQuc291cmNlICYmIGV2ZW50LnNvdXJjZS5jb250YWluZXIuaWQgPT09IGAke3RoaXMucmFuZG9tUGRmSWR9LXZpZXdlci1wZGYtdmlld2VyYCkge1xuICAgICAgICAgICAgdGhpcy5wYWdlID0gZXZlbnQucGFnZU51bWJlcjtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVBhZ2UgPSBldmVudC5wYWdlTnVtYmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QZGZQYXNzd29yZChjYWxsYmFjaywgcmVhc29uKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nXG4gICAgICAgICAgICAub3BlbihQZGZQYXNzd29yZERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHsgcmVhc29uIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocGFzc3dvcmQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGFzc3dvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socGFzc3dvcmQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhZ2UgUmVuZGVyZWQgRXZlbnRcbiAgICAgKi9cbiAgICBvblBhZ2VSZW5kZXJlZCgpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFnZXMgTG9hZGVkIEV2ZW50XG4gICAgICpcbiAgICAgKi9cbiAgICBvblBhZ2VzTG9hZGVkKCkge1xuICAgICAgICB0aGlzLmlzUGFuZWxEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBhZ2VzTG9hZGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBFdmVudCBMaXN0ZW5lclxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50IEtleWJvYXJkRXZlbnRcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleUNvZGU7XG4gICAgICAgIGlmIChrZXkgPT09IDM5KSB7XG4gICAgICAgICAgICAvLyByaWdodCBhcnJvd1xuICAgICAgICAgICAgdGhpcy5uZXh0UGFnZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gMzcpIHtcbiAgICAgICAgICAgIC8vIGxlZnQgYXJyb3dcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNQYWdlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLXBkZi12aWV3ZXJfX2NvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VGh1bWJuYWlsc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXBkZi12aWV3ZXJfX3RodW1ibmFpbHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdGh1bWJuYWlscy10ZW1wbGF0ZV9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi10aHVtYm5haWxzLXRlbXBsYXRlX19idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPSdhZGYtdGh1bWJuYWlscy1jbG9zZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlVGh1bWJuYWlscygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFSSUEuVEhVTUJOQUlMU19QQU5MRUxfQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aHVtYm5haWxzVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRodW1ibmFpbHNUZW1wbGF0ZTtjb250ZXh0OnBkZlRodW1ibmFpbHNDb250ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8YWRmLXBkZi10aHVtYm5haWxzICpuZ0lmPVwiIXRodW1ibmFpbHNUZW1wbGF0ZSAmJiAhaXNQYW5lbERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJ0b2dnbGVUaHVtYm5haWxzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BkZlZpZXdlcl09XCJwZGZWaWV3ZXJcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImFkZi1wZGYtdmlld2VyX19jb250ZW50XCI+XG4gICAgICAgIDxkaXYgW2lkXT1cInJhbmRvbVBkZklkICsgJy12aWV3ZXItcGRmLXZpZXdlcidcIlxuICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXZpZXdlci1wZGYtdmlld2VyXCJcbiAgICAgICAgICAgICAod2luZG93OnJlc2l6ZSk9XCJvblJlc2l6ZSgpXCI+XG4gICAgICAgICAgICA8ZGl2IFtpZF09XCJyYW5kb21QZGZJZCArICctdmlld2VyLXZpZXdlclBkZidcIlxuICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wZGZWaWV3ZXIgcGRmVmlld2VyXCJcbiAgICAgICAgICAgICAgICAgcm9sZT1cImRvY3VtZW50XCJcbiAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwibG9hZGVyLWNvbnRhaW5lclwiIGNsYXNzPVwiYWRmLWxvYWRlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1sb2FkZXItaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY2xhc3M9XCJhZGYtbG9hZGVyLWl0ZW0tcHJvZ3Jlc3MtYmFyXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiYWRmLXBkZi12aWV3ZXJfX3Rvb2xiYXJcIiAqbmdJZj1cInNob3dUb29sYmFyXCIgW25nU3R5bGVdPVwiZG9jdW1lbnRPdmVyZmxvdyAmJiB7Ym90dG9tOiAnMjVweCd9XCI+XG4gICAgPGFkZi10b29sYmFyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd1RodW1ibmFpbHNcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQVJJQS5USFVNQk5BSUxTJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwic2hvd1RodW1ibmFpbHNcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdGh1bWJuYWlscy1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNQYW5lbERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRodW1ibmFpbHMoKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5kYXNoYm9hcmQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YWRmLXRvb2xiYXItZGl2aWRlciAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8YnV0dG9uIGlkPVwidmlld2VyLXByZXZpb3VzLXBhZ2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFSSUEuUFJFVklPVVNfUEFHRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7ICdBREZfVklFV0VSLkFSSUEuUFJFVklPVVNfUEFHRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c1BhZ2UoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X3VwPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInZpZXdlci1uZXh0LXBhZ2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFSSUEuTkVYVF9QQUdFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgJ0FERl9WSUVXRVIuQVJJQS5ORVhUX1BBR0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dFBhZ2UoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXBkZi12aWV3ZXJfX3Rvb2xiYXItcGFnZS1zZWxlY3RvclwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhZ2Utc2VsZWN0b3JcIj57eyAnQURGX1ZJRVdFUi5QQUdFX0xBQkVMLlNIT1dJTkcnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCAjcGFnZVxuICAgICAgICAgICAgICAgICAgIGlkPVwicGFnZS1zZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1wYWdlLXNlbGVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICBwYXR0ZXJuPVwiLT9bMC05XSooXFwuWzAtOV0rKT9cIlxuICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgZGlzcGxheVBhZ2UgfX1cIlxuICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuUEFHRV9MQUJFTC5QQUdFX1NFTEVDVE9SX0xBQkVMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImlucHV0UGFnZShwYWdlLnZhbHVlKVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ0FERl9WSUVXRVIuUEFHRV9MQUJFTC5PRicgfCB0cmFuc2xhdGUgfX0ge3sgdG90YWxQYWdlcyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1wZGYtdmlld2VyX190b29sYmFyLXBhZ2Utc2NhbGVcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtcGFnZS1zY2FsZVwiPlxuICAgICAgICAgICAge3sgY3VycmVudFNjYWxlVGV4dCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8YnV0dG9uIGlkPVwidmlld2VyLXpvb20taW4tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFSSUEuWk9PTV9JTicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7ICdBREZfVklFV0VSLkFSSUEuWk9PTV9JTicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ6b29tSW4oKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPnpvb21faW48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uIGlkPVwidmlld2VyLXpvb20tb3V0LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BUklBLlpPT01fT1VUJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgJ0FERl9WSUVXRVIuQVJJQS5aT09NX09VVCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ6b29tT3V0KClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj56b29tX291dDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b24gaWQ9XCJ2aWV3ZXItc2NhbGUtcGFnZS1idXR0b25cIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIiBhcmlhLXByZXNzZWQ9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFSSUEuRklUX1BBR0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyAnQURGX1ZJRVdFUi5BUklBLkZJVF9QQUdFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInBhZ2VGaXQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPnpvb21fb3V0X21hcDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgPC9hZGYtdG9vbGJhcj5cbjwvZGl2PlxuIl19
551
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3ZpZXdlci9jb21wb25lbnRzL3BkZi12aWV3ZXIvcGRmLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3ZpZXdlci9jb21wb25lbnRzL3BkZi12aWV3ZXIvcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCx5REFBeUQ7QUFDekQseUNBQXlDO0FBQ3pDLHFEQUFxRDtBQUVyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFB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Z0I7d0JBQ2hCLHVCQUF1QjtxQkFDMUIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSTt3REFJckMsT0FBTztzQkFETixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTTtnQkFJUCxLQUFLO3NCQURKLE1BQU07Z0JBSVAsS0FBSztzQkFESixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkEyZ0JQLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmUgKi9cblxuaW1wb3J0IHsgTmdJZiwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGZyb20sIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29uZmlnJztcbmltcG9ydCB7IFRvb2xiYXJDb21wb25lbnQsIFRvb2xiYXJEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdG9vbGJhcic7XG5pbXBvcnQgeyBSZW5kZXJpbmdRdWV1ZVNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVuZGVyaW5nLXF1ZXVlLnNlcnZpY2VzJztcbmltcG9ydCB7IFBkZlBhc3N3b3JkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vcGRmLXZpZXdlci1wYXNzd29yZC1kaWFsb2cvcGRmLXZpZXdlci1wYXNzd29yZC1kaWFsb2cnO1xuaW1wb3J0IHsgUGRmVGh1bWJMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vcGRmLXZpZXdlci10aHVtYm5haWxzL3BkZi12aWV3ZXItdGh1bWJuYWlscy5jb21wb25lbnQnO1xuaW1wb3J0ICogYXMgcGRmanNMaWIgZnJvbSAncGRmanMtZGlzdC9idWlsZC9wZGYubWluLm1qcyc7XG5pbXBvcnQgeyBFdmVudEJ1cywgUERGVmlld2VyIH0gZnJvbSAncGRmanMtZGlzdC93ZWIvcGRmX3ZpZXdlci5tanMnO1xuaW1wb3J0IHsgT25Qcm9ncmVzc1BhcmFtZXRlcnMsIFBERkRvY3VtZW50TG9hZGluZ1Rhc2ssIFBERkRvY3VtZW50UHJveHkgfSBmcm9tICdwZGZqcy1kaXN0L3R5cGVzL3NyYy9kaXNwbGF5L2FwaSc7XG5cbmV4cG9ydCB0eXBlIFBkZlNjYWxlTW9kZSA9ICdpbml0JyB8ICdwYWdlLWFjdHVhbCcgfCAncGFnZS13aWR0aCcgfCAncGFnZS1oZWlnaHQnIHwgJ3BhZ2UtZml0JyB8ICdhdXRvJztcblxuZXhwb3J0IGNvbnN0IFBERkpTX01PRFVMRSA9IG5ldyBJbmplY3Rpb25Ub2tlbignUERGSlNfTU9EVUxFJywgeyBmYWN0b3J5OiAoKSA9PiBwZGZqc0xpYiB9KTtcbmV4cG9ydCBjb25zdCBQREZKU19WSUVXRVJfTU9EVUxFID0gbmV3IEluamVjdGlvblRva2VuKCdQREZKU19WSUVXRVJfTU9EVUxFJywgeyBmYWN0b3J5OiAoKSA9PiBQREZWaWV3ZXIgfSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXBkZi12aWV3ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BkZi12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3BkZi12aWV3ZXItaG9zdC5jb21wb25lbnQuc2NzcycsICcuL3BkZi12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtSZW5kZXJpbmdRdWV1ZVNlcnZpY2VzXSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLXBkZi12aWV3ZXInIH0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgUGRmVGh1bWJMaXN0Q29tcG9uZW50LFxuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhckRpdmlkZXJDb21wb25lbnRcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUGRmVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgdXJsRmlsZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBibG9iRmlsZTogQmxvYjtcblxuICAgIEBJbnB1dCgpXG4gICAgZmlsZU5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd1Rvb2xiYXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBhbGxvd1RodW1ibmFpbHMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgdGh1bWJuYWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FjaGVUeXBlOiBzdHJpbmcgPSAnJztcblxuICAgIEBPdXRwdXQoKVxuICAgIHJlbmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHBhZ2VzTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgcGFnZTogbnVtYmVyO1xuICAgIGRpc3BsYXlQYWdlOiBudW1iZXI7XG4gICAgdG90YWxQYWdlczogbnVtYmVyO1xuICAgIGxvYWRpbmdQZXJjZW50OiBudW1iZXI7XG4gICAgcGRmVmlld2VyOiBQREZWaWV3ZXI7XG4gICAgcGRmSnNXb3JrZXJVcmw6IHN0cmluZztcbiAgICBwZGZKc1dvcmtlckluc3RhbmNlOiBXb3JrZXI7XG4gICAgY3VycmVudFNjYWxlTW9kZTogUGRmU2NhbGVNb2RlID0gJ2luaXQnO1xuXG4gICAgTUFYX0FVVE9fU0NBTEU6IG51bWJlciA9IDEuMjU7XG4gICAgREVGQVVMVF9TQ0FMRV9ERUxUQTogbnVtYmVyID0gMS4xO1xuICAgIE1JTl9TQ0FMRTogbnVtYmVyID0gMC4yNTtcbiAgICBNQVhfU0NBTEU6IG51bWJlciA9IDEwLjA7XG5cbiAgICBsb2FkaW5nVGFzazogUERGRG9jdW1lbnRMb2FkaW5nVGFzaztcbiAgICBpc1BhbmVsRGlzYWJsZWQgPSB0cnVlO1xuICAgIHNob3dUaHVtYm5haWxzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcGRmVGh1bWJuYWlsc0NvbnRleHQ6IHsgdmlld2VyOiBhbnkgfSA9IHsgdmlld2VyOiBudWxsIH07XG4gICAgcmFuZG9tUGRmSWQ6IHN0cmluZztcbiAgICBkb2N1bWVudE92ZXJmbG93ID0gZmFsc2U7XG5cbiAgICBnZXQgY3VycmVudFNjYWxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjdXJyZW50U2NhbGVWYWx1ZVN0ciA9IHRoaXMucGRmVmlld2VyPy5jdXJyZW50U2NhbGVWYWx1ZTtcbiAgICAgICAgY29uc3Qgc2NhbGVOdW1iZXIgPSBOdW1iZXIoY3VycmVudFNjYWxlVmFsdWVTdHIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTY2FsZVRleHQgPSBzY2FsZU51bWJlciA/IGAke01hdGgucm91bmQoc2NhbGVOdW1iZXIgKiAxMDApfSVgIDogJyc7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRTY2FsZVRleHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwZGZqc0xpYiA9IGluamVjdChQREZKU19NT0RVTEUpO1xuICAgIHByaXZhdGUgcGRmanNWaWV3ZXIgPSBpbmplY3QoUERGSlNfVklFV0VSX01PRFVMRSk7XG5cbiAgICBwcml2YXRlIGV2ZW50QnVzID0gbmV3IEV2ZW50QnVzKCk7XG4gICAgcHJpdmF0ZSBwZGZqc0RlZmF1bHRPcHRpb25zID0ge1xuICAgICAgICBkaXNhYmxlQXV0b0ZldGNoOiB0cnVlLFxuICAgICAgICBkaXNhYmxlU3RyZWFtOiB0cnVlLFxuICAgICAgICBjTWFwVXJsOiAnLi9jbWFwcy8nLFxuICAgICAgICBjTWFwUGFja2VkOiB0cnVlXG4gICAgfTtcbiAgICBwcml2YXRlIHBkZmpzV29ya2VyRGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcbiAgICBwcml2YXRlIHJlbmRlcmluZ1F1ZXVlU2VydmljZXMgPSBpbmplY3QoUmVuZGVyaW5nUXVldWVTZXJ2aWNlcyk7XG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlID0gaW5qZWN0KEFwcENvbmZpZ1NlcnZpY2UpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIG5lZWRlZCB0byBwcmVzZXJ2ZSBcInRoaXNcIiBjb250ZXh0XG4gICAgICAgIHRoaXMub25QYWdlQ2hhbmdlID0gdGhpcy5vblBhZ2VDaGFuZ2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5vblBhZ2VzTG9hZGVkID0gdGhpcy5vblBhZ2VzTG9hZGVkLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMub25QYWdlUmVuZGVyZWQgPSB0aGlzLm9uUGFnZVJlbmRlcmVkLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdGhpcy5yYW5kb21QZGZJZCA9IERhdGUubm93KCkudG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5wZGZqc1dvcmtlckRlc3Ryb3kkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG51bGwpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBmcm9tKHRoaXMuZGVzdHJveVBmZEpzV29ya2VyKCkpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgZ2V0VXNlclNjYWxpbmcoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHNjYWxlQ29uZmlnID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldDxudW1iZXI+KCdhZGYtdmlld2VyLnBkZi12aWV3ZXItc2NhbGluZycsIHVuZGVmaW5lZCk7XG5cbiAgICAgICAgaWYgKHNjYWxlQ29uZmlnKSB7XG4gICAgICAgICAgICBzY2FsZUNvbmZpZyA9IHNjYWxlQ29uZmlnIC8gMTAwO1xuICAgICAgICAgICAgc2NhbGVDb25maWcgPSB0aGlzLmNoZWNrTGltaXRzKHNjYWxlQ29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzY2FsZUNvbmZpZztcbiAgICB9XG5cbiAgICBjaGVja0xpbWl0cyhzY2FsZUNvbmZpZzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHNjYWxlQ29uZmlnID4gdGhpcy5NQVhfU0NBTEUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLk1BWF9TQ0FMRTtcbiAgICAgICAgfSBlbHNlIGlmIChzY2FsZUNvbmZpZyA8IHRoaXMuTUlOX1NDQUxFKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5NSU5fU0NBTEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gc2NhbGVDb25maWc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGJsb2JGaWxlID0gY2hhbmdlc1snYmxvYkZpbGUnXTtcblxuICAgICAgICBpZiAoYmxvYkZpbGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGRmT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5wZGZqc0RlZmF1bHRPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiByZWFkZXIucmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXQ8Ym9vbGVhbj4oJ2F1dGgud2l0aENyZWRlbnRpYWxzJywgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgaXNFdmFsU3VwcG9ydGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlUGRmKHBkZk9wdGlvbnMpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iRmlsZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJsRmlsZSA9IGNoYW5nZXNbJ3VybEZpbGUnXTtcbiAgICAgICAgaWYgKHVybEZpbGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcGRmT3B0aW9uczogYW55ID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMucGRmanNEZWZhdWx0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICB1cmw6IHVybEZpbGUuY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldDxib29sZWFuPignYXV0aC53aXRoQ3JlZGVudGlhbHMnLCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIGlzRXZhbFN1cHBvcnRlZDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGhpcy5jYWNoZVR5cGUpIHtcbiAgICAgICAgICAgICAgICBwZGZPcHRpb25zLmh0dHBIZWFkZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICAnQ2FjaGUtQ29udHJvbCc6IHRoaXMuY2FjaGVUeXBlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZVBkZihwZGZPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy51cmxGaWxlICYmICF0aGlzLmJsb2JGaWxlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dHJpYnV0ZSB1cmxGaWxlIG9yIGJsb2JGaWxlIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleGVjdXRlUGRmKHBkZk9wdGlvbnM6IGFueSkge1xuICAgICAgICB0aGlzLnNldHVwUGRmSnNXb3JrZXIoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1Rhc2sgPSB0aGlzLnBkZmpzTGliLmdldERvY3VtZW50KHBkZk9wdGlvbnMpO1xuXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdUYXNrLm9uUGFzc3dvcmQgPSAoY2FsbGJhY2ssIHJlYXNvbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25QZGZQYXNzd29yZChjYWxsYmFjaywgcmVhc29uKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1Rhc2sub25Qcm9ncmVzcyA9IChwcm9ncmVzc0RhdGE6IE9uUHJvZ3Jlc3NQYXJhbWV0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGV2ZWwgPSBwcm9ncmVzc0RhdGEubG9hZGVkIC8gcHJvZ3Jlc3NEYXRhLnRvdGFsO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1BlcmNlbnQgPSBNYXRoLnJvdW5kKGxldmVsICogMTAwKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuaXNQYW5lbERpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nVGFzay5wcm9taXNlXG4gICAgICAgICAgICAgICAgLnRoZW4oKHBkZkRvY3VtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxQYWdlcyA9IHBkZkRvY3VtZW50Lm51bVBhZ2VzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAxO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlQYWdlID0gMTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0UERGVmlld2VyKHBkZkRvY3VtZW50KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGRmRG9jdW1lbnQuZ2V0UGFnZSgxKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNjYWxlUGFnZSgnaW5pdCcpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLmVycm9yLmVtaXQoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0dXBQZGZKc1dvcmtlcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMucGRmSnNXb3JrZXJJbnN0YW5jZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kZXN0cm95UGZkSnNXb3JrZXIoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5wZGZKc1dvcmtlclVybCkge1xuICAgICAgICAgICAgdGhpcy5wZGZKc1dvcmtlclVybCA9IGF3YWl0IHRoaXMuZ2V0UGRmSnNXb3JrZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBkZkpzV29ya2VySW5zdGFuY2UgPSBuZXcgV29ya2VyKHRoaXMucGRmSnNXb3JrZXJVcmwsIHsgdHlwZTogJ21vZHVsZScgfSk7XG4gICAgICAgIHRoaXMucGRmanNMaWIuR2xvYmFsV29ya2VyT3B0aW9ucy53b3JrZXJQb3J0ID0gdGhpcy5wZGZKc1dvcmtlckluc3RhbmNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0UGRmSnNXb3JrZXIoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnLi9wZGYud29ya2VyLm1pbi5tanMnKTtcbiAgICAgICAgY29uc3Qgd29ya2VyU2NyaXB0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3dvcmtlclNjcmlwdF0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnIH0pO1xuICAgICAgICByZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICB9XG5cbiAgICBpbml0UERGVmlld2VyKHBkZkRvY3VtZW50OiBQREZEb2N1bWVudFByb3h5KSB7XG4gICAgICAgIGNvbnN0IHZpZXdlcjogYW55ID0gdGhpcy5nZXRWaWV3ZXIoKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXREb2N1bWVudENvbnRhaW5lcigpO1xuXG4gICAgICAgIGlmICh2aWV3ZXIgJiYgY29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnBkZlZpZXdlciA9IG5ldyB0aGlzLnBkZmpzVmlld2VyKHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgICAgICAgdmlld2VyLFxuICAgICAgICAgICAgICAgIHJlbmRlcmluZ1F1ZXVlOiB0aGlzLnJlbmRlcmluZ1F1ZXVlU2VydmljZXMsXG4gICAgICAgICAgICAgICAgZXZlbnRCdXM6IHRoaXMuZXZlbnRCdXMsXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbk1vZGU6IDBcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBjc3BlbGw6IGRpc2FibGUtbmV4dFxuICAgICAgICAgICAgdGhpcy5ldmVudEJ1cy5vbigncGFnZWNoYW5naW5nJywgdGhpcy5vblBhZ2VDaGFuZ2UpO1xuICAgICAgICAgICAgLy8gY3NwZWxsOiBkaXNhYmxlLW5leHRcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMub24oJ3BhZ2VzbG9hZGVkJywgdGhpcy5vblBhZ2VzTG9hZGVkKTtcbiAgICAgICAgICAgIC8vIGNzcGVsbDogZGlzYWJsZS1uZXh0XG4gICAgICAgICAgICB0aGlzLmV2ZW50QnVzLm9uKCd0ZXh0bGF5ZXJyZW5kZXJlZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZVJlbmRlcmVkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMub24oJ3BhZ2VyZW5kZXJlZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZVJlbmRlcmVkKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJpbmdRdWV1ZVNlcnZpY2VzLnNldFZpZXdlcih0aGlzLnBkZlZpZXdlcik7XG4gICAgICAgICAgICB0aGlzLnBkZlZpZXdlci5zZXREb2N1bWVudChwZGZEb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnBkZlRodW1ibmFpbHNDb250ZXh0LnZpZXdlciA9IHRoaXMucGRmVmlld2VyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnBkZlZpZXdlcikge1xuICAgICAgICAgICAgLy8gY3NwZWxsOiBkaXNhYmxlLW5leHRcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMub2ZmKCdwYWdlY2hhbmdpbmcnLCAoKSA9PiB7fSk7XG4gICAgICAgICAgICAvLyBjc3BlbGw6IGRpc2FibGUtbmV4dFxuICAgICAgICAgICAgdGhpcy5ldmVudEJ1cy5vZmYoJ3BhZ2VzbG9hZGVkJywgKCkgPT4ge30pO1xuICAgICAgICAgICAgLy8gY3NwZWxsOiBkaXNhYmxlLW5leHRcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMub2ZmKCd0ZXh0bGF5ZXJyZW5kZXJlZCcsICgpID0+IHt9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmdUYXNrKSB7XG4gICAgICAgICAgICB0aGlzLnBkZmpzV29ya2VyRGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBkZmpzV29ya2VyRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5yZXZva2VQZGZKc1dvcmtlclVybCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZGVzdHJveVBmZEpzV29ya2VyKCkge1xuICAgICAgICBpZiAodGhpcy5sb2FkaW5nVGFzay5kZXN0cm95KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRpbmdUYXNrLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wZGZKc1dvcmtlckluc3RhbmNlKSB7XG4gICAgICAgICAgICB0aGlzLnBkZkpzV29ya2VySW5zdGFuY2UudGVybWluYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nVGFzayA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXZva2VQZGZKc1dvcmtlclVybCgpOiB2b2lkIHtcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLnBkZkpzV29ya2VyVXJsKTtcbiAgICB9XG5cbiAgICB0b2dnbGVUaHVtYm5haWxzKCkge1xuICAgICAgICB0aGlzLnNob3dUaHVtYm5haWxzID0gIXRoaXMuc2hvd1RodW1ibmFpbHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRvIHNjYWxlIHRoZSBwYWdlIGN1cnJlbnQgc3VwcG9ydCBpbXBsZW1lbnRhdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIHNjYWxlTW9kZSAtIG5ldyBzY2FsZSBtb2RlXG4gICAgICovXG4gICAgc2NhbGVQYWdlKHNjYWxlTW9kZTogUGRmU2NhbGVNb2RlKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNjYWxlTW9kZSA9IHNjYWxlTW9kZTtcblxuICAgICAgICBjb25zdCB2aWV3ZXJDb250YWluZXIgPSB0aGlzLmdldE1haW5Db250YWluZXIoKTtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRDb250YWluZXIgPSB0aGlzLmdldERvY3VtZW50Q29udGFpbmVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMucGRmVmlld2VyICYmIGRvY3VtZW50Q29udGFpbmVyKSB7XG4gICAgICAgICAgICBsZXQgd2lkdGhDb250YWluZXI6IG51bWJlcjtcbiAgICAgICAgICAgIGxldCBoZWlnaHRDb250YWluZXI6IG51bWJlcjtcblxuICAgICAgICAgICAgaWYgKHZpZXdlckNvbnRhaW5lciAmJiB2aWV3ZXJDb250YWluZXIuY2xpZW50V2lkdGggPD0gZG9jdW1lbnRDb250YWluZXIuY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aENvbnRhaW5lciA9IHZpZXdlckNvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICBoZWlnaHRDb250YWluZXIgPSB2aWV3ZXJDb250YWluZXIuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aWR0aENvbnRhaW5lciA9IGRvY3VtZW50Q29udGFpbmVyLmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgIGhlaWdodENvbnRhaW5lciA9IGRvY3VtZW50Q29udGFpbmVyLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY3VycmVudFBhZ2UgPSB0aGlzLnBkZlZpZXdlci5fcGFnZXNbdGhpcy5wZGZWaWV3ZXIuX2N1cnJlbnRQYWdlTnVtYmVyIC0gMV07XG5cbiAgICAgICAgICAgIGNvbnN0IHBhZGRpbmcgPSAyMDtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2VXaWR0aFNjYWxlID0gKCh3aWR0aENvbnRhaW5lciAtIHBhZGRpbmcpIC8gY3VycmVudFBhZ2Uud2lkdGgpICogY3VycmVudFBhZ2Uuc2NhbGU7XG4gICAgICAgICAgICBjb25zdCBwYWdlSGVpZ2h0U2NhbGUgPSAoKGhlaWdodENvbnRhaW5lciAtIHBhZGRpbmcpIC8gY3VycmVudFBhZ2Uud2lkdGgpICogY3VycmVudFBhZ2Uuc2NhbGU7XG5cbiAgICAgICAgICAgIGxldCBzY2FsZTogbnVtYmVyO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmN1cnJlbnRTY2FsZU1vZGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpbml0JzpcbiAgICAgICAgICAgICAgICBjYXNlICdwYWdlLWZpdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgc2NhbGUgPSB0aGlzLmdldFVzZXJTY2FsaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlID0gdGhpcy5hdXRvU2NhbGluZyhwYWdlSGVpZ2h0U2NhbGUsIHBhZ2VXaWR0aFNjYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAncGFnZS1hY3R1YWwnOiB7XG4gICAgICAgICAgICAgICAgICAgIHNjYWxlID0gMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ3BhZ2Utd2lkdGgnOiB7XG4gICAgICAgICAgICAgICAgICAgIHNjYWxlID0gcGFnZVdpZHRoU2NhbGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdwYWdlLWhlaWdodCc6IHtcbiAgICAgICAgICAgICAgICAgICAgc2NhbGUgPSBwYWdlSGVpZ2h0U2NhbGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoge1xuICAgICAgICAgICAgICAgICAgICBzY2FsZSA9IHRoaXMuYXV0b1NjYWxpbmcocGFnZUhlaWdodFNjYWxlLCBwYWdlV2lkdGhTY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2V0U2NhbGVVcGRhdGVQYWdlcyhzY2FsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGF1dG9TY2FsaW5nKHBhZ2VIZWlnaHRTY2FsZTogbnVtYmVyLCBwYWdlV2lkdGhTY2FsZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBob3Jpem9udGFsU2NhbGU6IG51bWJlcjtcbiAgICAgICAgaWYgKHRoaXMuaXNMYW5kc2NhcGUpIHtcbiAgICAgICAgICAgIGhvcml6b250YWxTY2FsZSA9IE1hdGgubWluKHBhZ2VIZWlnaHRTY2FsZSwgcGFnZVdpZHRoU2NhbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG9yaXpvbnRhbFNjYWxlID0gcGFnZVdpZHRoU2NhbGU7XG4gICAgICAgIH1cbiAgICAgICAgaG9yaXpvbnRhbFNjYWxlID0gTWF0aC5yb3VuZChob3Jpem9udGFsU2NhbGUpO1xuICAgICAgICBjb25zdCBzY2FsZSA9IE1hdGgubWluKHRoaXMuTUFYX0FVVE9fU0NBTEUsIGhvcml6b250YWxTY2FsZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrUGFnZUZpdEluQ29udGFpbmVyKHNjYWxlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1haW5Db250YWluZXIoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5yYW5kb21QZGZJZH0tdmlld2VyLW1haW4tY29udGFpbmVyYCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREb2N1bWVudENvbnRhaW5lcigpOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLnJhbmRvbVBkZklkfS12aWV3ZXItcGRmLXZpZXdlcmApIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Vmlld2VyKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke3RoaXMucmFuZG9tUGRmSWR9LXZpZXdlci12aWV3ZXJQZGZgKTtcbiAgICB9XG5cbiAgICBjaGVja1BhZ2VGaXRJbkNvbnRhaW5lcihzY2FsZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRDb250YWluZXJTaXplID0gdGhpcy5nZXREb2N1bWVudENvbnRhaW5lcigpO1xuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5wZGZWaWV3ZXIuX3BhZ2VzW3RoaXMucGRmVmlld2VyLl9jdXJyZW50UGFnZU51bWJlciAtIDFdO1xuXG4gICAgICAgIGlmIChwYWdlLndpZHRoID4gZG9jdW1lbnRDb250YWluZXJTaXplLmNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICBzY2FsZSA9IE1hdGguZnJvdW5kKChkb2N1bWVudENvbnRhaW5lclNpemUuY2xpZW50V2lkdGggLSAyMCkgLyBwYWdlLndpZHRoKTtcbiAgICAgICAgICAgIGlmIChzY2FsZSA8IHRoaXMuTUlOX1NDQUxFKSB7XG4gICAgICAgICAgICAgICAgc2NhbGUgPSB0aGlzLk1JTl9TQ0FMRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzY2FsZTtcbiAgICB9XG5cbiAgICBzZXREb2N1bWVudE92ZXJmbG93KCkge1xuICAgICAgICBjb25zdCBkb2N1bWVudENvbnRhaW5lclNpemUgPSB0aGlzLmdldERvY3VtZW50Q29udGFpbmVyKCk7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLnBkZlZpZXdlci5fcGFnZXNbdGhpcy5wZGZWaWV3ZXIuX2N1cnJlbnRQYWdlTnVtYmVyIC0gMV07XG5cbiAgICAgICAgdGhpcy5kb2N1bWVudE92ZXJmbG93ID0gcGFnZS53aWR0aCA+IGRvY3VtZW50Q29udGFpbmVyU2l6ZS5jbGllbnRXaWR0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgYWxsIHRoZSBwYWdlcyB3aXRoIHRoZSBuZXdTY2FsZSBzY2FsZVxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld1NjYWxlIC0gbmV3IHNjYWxlIHBhZ2VcbiAgICAgKi9cbiAgICBzZXRTY2FsZVVwZGF0ZVBhZ2VzKG5ld1NjYWxlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucGRmVmlld2VyKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTYW1lU2NhbGUodGhpcy5wZGZWaWV3ZXIuY3VycmVudFNjYWxlVmFsdWUsIG5ld1NjYWxlLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wZGZWaWV3ZXIuY3VycmVudFNjYWxlVmFsdWUgPSBuZXdTY2FsZS50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wZGZWaWV3ZXIudXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREb2N1bWVudE92ZXJmbG93KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIHJlcXVlc3Qgc2NhbGUgb2YgdGhlIHBhZ2UgaXMgdGhlIHNhbWUgZm9yIGF2b2lkIHVzZWxlc3MgcmUtcmVuZGVyaW5nXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2xkU2NhbGUgLSBvbGQgc2NhbGUgcGFnZVxuICAgICAqIEBwYXJhbSBuZXdTY2FsZSAtIG5ldyBzY2FsZSBwYWdlXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzY2FsZSBpcyB0aGUgc2FtZSwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBpc1NhbWVTY2FsZShvbGRTY2FsZTogc3RyaW5nLCBuZXdTY2FsZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBuZXdTY2FsZSA9PT0gb2xkU2NhbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgaXMgYSBsYW5kIHNjYXBlIHZpZXdcbiAgICAgKlxuICAgICAqIEBwYXJhbSB3aWR0aCB0YXJnZXQgd2lkdGhcbiAgICAgKiBAcGFyYW0gaGVpZ2h0IHRhcmdldCBoZWlnaHRcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHRhcmdldCBpcyBpbiB0aGUgbGFuZHNjYXBlIG1vZGUsIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgaXNMYW5kc2NhcGUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHdpZHRoID4gaGVpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0cmlnZ2VyZWQgd2hlbiB0aGUgcGFnZSBpcyByZXNpemVkXG4gICAgICovXG4gICAgb25SZXNpemUoKSB7XG4gICAgICAgIHRoaXMuc2NhbGVQYWdlKHRoaXMuY3VycmVudFNjYWxlTW9kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdG9nZ2xlIHRoZSBmaXQgcGFnZSBwZGZcbiAgICAgKi9cbiAgICBwYWdlRml0KCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50U2NhbGVNb2RlICE9PSAncGFnZS1maXQnKSB7XG4gICAgICAgICAgICB0aGlzLnNjYWxlUGFnZSgncGFnZS1maXQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2NhbGVQYWdlKCdhdXRvJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB6b29tIGluIHBhZ2UgcGRmXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGlja3MgbnVtYmVyIG9mIHRpY2tzIHRvIHpvb21cbiAgICAgKi9cbiAgICB6b29tSW4odGlja3M/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IG5ld1NjYWxlOiBhbnkgPSB0aGlzLnBkZlZpZXdlci5jdXJyZW50U2NhbGVWYWx1ZTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgbmV3U2NhbGUgPSAobmV3U2NhbGUgKiB0aGlzLkRFRkFVTFRfU0NBTEVfREVMVEEpLnRvRml4ZWQoMik7XG4gICAgICAgICAgICBuZXdTY2FsZSA9IE1hdGguY2VpbChuZXdTY2FsZSAqIDEwKSAvIDEwO1xuICAgICAgICAgICAgbmV3U2NhbGUgPSBNYXRoLm1pbih0aGlzLk1BWF9TQ0FMRSwgbmV3U2NhbGUpO1xuICAgICAgICB9IHdoaWxlICgtLXRpY2tzID4gMCAmJiBuZXdTY2FsZSA8IHRoaXMuTUFYX1NDQUxFKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2NhbGVNb2RlID0gJ2F1dG8nO1xuICAgICAgICB0aGlzLnNldFNjYWxlVXBkYXRlUGFnZXMobmV3U2NhbGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHpvb20gb3V0IHBhZ2UgcGRmXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGlja3MgbnVtYmVyIG9mIHRpY2tzIHRvIHNjYWxlXG4gICAgICovXG4gICAgem9vbU91dCh0aWNrcz86IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgbmV3U2NhbGU6IGFueSA9IHRoaXMucGRmVmlld2VyLmN1cnJlbnRTY2FsZVZhbHVlO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBuZXdTY2FsZSA9IChuZXdTY2FsZSAvIHRoaXMuREVGQVVMVF9TQ0FMRV9ERUxUQSkudG9GaXhlZCgyKTtcbiAgICAgICAgICAgIG5ld1NjYWxlID0gTWF0aC5mbG9vcihuZXdTY2FsZSAqIDEwKSAvIDEwO1xuICAgICAgICAgICAgbmV3U2NhbGUgPSBNYXRoLm1heCh0aGlzLk1JTl9TQ0FMRSwgbmV3U2NhbGUpO1xuICAgICAgICB9IHdoaWxlICgtLXRpY2tzID4gMCAmJiBuZXdTY2FsZSA+IHRoaXMuTUlOX1NDQUxFKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2NhbGVNb2RlID0gJ2F1dG8nO1xuICAgICAgICB0aGlzLnNldFNjYWxlVXBkYXRlUGFnZXMobmV3U2NhbGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWQgdGhlIHByZXZpb3VzIHBhZ2VcbiAgICAgKi9cbiAgICBwcmV2aW91c1BhZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnBkZlZpZXdlciAmJiB0aGlzLnBhZ2UgPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UtLTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVBhZ2UgPSB0aGlzLnBhZ2U7XG5cbiAgICAgICAgICAgIHRoaXMucGRmVmlld2VyLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5wYWdlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9hZCB0aGUgbmV4dCBwYWdlXG4gICAgICovXG4gICAgbmV4dFBhZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnBkZlZpZXdlciAmJiB0aGlzLnBhZ2UgPCB0aGlzLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZSsrO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGFnZSA9IHRoaXMucGFnZTtcblxuICAgICAgICAgICAgdGhpcy5wZGZWaWV3ZXIuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLnBhZ2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkIHRoZSBwYWdlIGluIGlucHV0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFnZSB0byBsb2FkXG4gICAgICovXG4gICAgaW5wdXRQYWdlKHBhZ2U6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwYWdlSW5wdXQgPSBwYXJzZUludChwYWdlLCAxMCk7XG5cbiAgICAgICAgaWYgKCFpc05hTihwYWdlSW5wdXQpICYmIHBhZ2VJbnB1dCA+IDAgJiYgcGFnZUlucHV0IDw9IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgICAgICAgdGhpcy5wYWdlID0gcGFnZUlucHV0O1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGFnZSA9IHRoaXMucGFnZTtcbiAgICAgICAgICAgIHRoaXMucGRmVmlld2VyLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5wYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGFnZSA9IHRoaXMucGFnZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhZ2UgQ2hhbmdlIEV2ZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgZXZlbnRcbiAgICAgKi9cbiAgICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAoZXZlbnQuc291cmNlICYmIGV2ZW50LnNvdXJjZS5jb250YWluZXIuaWQgPT09IGAke3RoaXMucmFuZG9tUGRmSWR9LXZpZXdlci1wZGYtdmlld2VyYCkge1xuICAgICAgICAgICAgdGhpcy5wYWdlID0gZXZlbnQucGFnZU51bWJlcjtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVBhZ2UgPSBldmVudC5wYWdlTnVtYmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QZGZQYXNzd29yZChjYWxsYmFjaywgcmVhc29uKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nXG4gICAgICAgICAgICAub3BlbihQZGZQYXNzd29yZERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHsgcmVhc29uIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocGFzc3dvcmQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGFzc3dvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socGFzc3dvcmQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhZ2UgUmVuZGVyZWQgRXZlbnRcbiAgICAgKi9cbiAgICBvblBhZ2VSZW5kZXJlZCgpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFnZXMgTG9hZGVkIEV2ZW50XG4gICAgICpcbiAgICAgKi9cbiAgICBvblBhZ2VzTG9hZGVkKCkge1xuICAgICAgICB0aGlzLmlzUGFuZWxEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBhZ2VzTG9hZGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBFdmVudCBMaXN0ZW5lclxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50IEtleWJvYXJkRXZlbnRcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleUNvZGU7XG4gICAgICAgIGlmIChrZXkgPT09IDM5KSB7XG4gICAgICAgICAgICAvLyByaWdodCBhcnJvd1xuICAgICAgICAgICAgdGhpcy5uZXh0UGFnZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gMzcpIHtcbiAgICAgICAgICAgIC8vIGxlZnQgYXJyb3dcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNQYWdlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLXBkZi12aWV3ZXJfX2NvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VGh1bWJuYWlsc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXBkZi12aWV3ZXJfX3RodW1ibmFpbHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdGh1bWJuYWlscy10ZW1wbGF0ZV9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi10aHVtYm5haWxzLXRlbXBsYXRlX19idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPSdhZGYtdGh1bWJuYWlscy1jbG9zZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlVGh1bWJuYWlscygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFSSUEuVEhVTUJOQUlMU19QQU5MRUxfQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aHVtYm5haWxzVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRodW1ibmFpbHNUZW1wbGF0ZTtjb250ZXh0OnBkZlRodW1ibmFpbHNDb250ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8YWRmLXBkZi10aHVtYm5haWxzICpuZ0lmPVwiIXRodW1ibmFpbHNUZW1wbGF0ZSAmJiAhaXNQYW5lbERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJ0b2dnbGVUaHVtYm5haWxzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BkZlZpZXdlcl09XCJwZGZWaWV3ZXJcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImFkZi1wZGYtdmlld2VyX19jb250ZW50XCI+XG4gICAgICAgIDxkaXYgW2lkXT1cInJhbmRvbVBkZklkICsgJy12aWV3ZXItcGRmLXZpZXdlcidcIlxuICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXZpZXdlci1wZGYtdmlld2VyXCJcbiAgICAgICAgICAgICAod2luZG93OnJlc2l6ZSk9XCJvblJlc2l6ZSgpXCI+XG4gICAgICAgICAgICA8ZGl2IFtpZF09XCJyYW5kb21QZGZJZCArICctdmlld2VyLXZpZXdlclBkZidcIlxuICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wZGZWaWV3ZXIgcGRmVmlld2VyXCJcbiAgICAgICAgICAgICAgICAgcm9sZT1cImRvY3VtZW50XCJcbiAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwibG9hZGVyLWNvbnRhaW5lclwiIGNsYXNzPVwiYWRmLWxvYWRlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1sb2FkZXItaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BUklBLkxPQURJTkcnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWxvYWRlci1pdGVtLXByb2dyZXNzLWJhclwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImFkZi1wZGYtdmlld2VyX190b29sYmFyXCIgKm5nSWY9XCJzaG93VG9vbGJhclwiIFtuZ1N0eWxlXT1cImRvY3VtZW50T3ZlcmZsb3cgJiYge2JvdHRvbTogJzI1cHgnfVwiPlxuICAgIDxhZGYtdG9vbGJhcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dUaHVtYm5haWxzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFSSUEuVEhVTUJOQUlMUycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInNob3dUaHVtYm5haWxzXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRodW1ibmFpbHMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUGFuZWxEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVUaHVtYm5haWxzKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGFzaGJvYXJkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGFkZi10b29sYmFyLWRpdmlkZXIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInZpZXdlci1wcmV2aW91cy1wYWdlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BUklBLlBSRVZJT1VTX1BBR0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyAnQURGX1ZJRVdFUi5BUklBLlBSRVZJT1VTX1BBR0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNQYWdlKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd191cDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b24gaWQ9XCJ2aWV3ZXItbmV4dC1wYWdlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BUklBLk5FWFRfUEFHRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7ICdBREZfVklFV0VSLkFSSUEuTkVYVF9QQUdFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRQYWdlKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1wZGYtdmlld2VyX190b29sYmFyLXBhZ2Utc2VsZWN0b3JcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYWdlLXNlbGVjdG9yXCI+e3sgJ0FERl9WSUVXRVIuUEFHRV9MQUJFTC5TSE9XSU5HJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgI3BhZ2VcbiAgICAgICAgICAgICAgICAgICBpZD1cInBhZ2Utc2VsZWN0b3JcIlxuICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtcGFnZS1zZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICAgcGF0dGVybj1cIi0/WzAtOV0qKFxcLlswLTldKyk/XCJcbiAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7IGRpc3BsYXlQYWdlIH19XCJcbiAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLlBBR0VfTEFCRUwuUEFHRV9TRUxFQ1RPUl9MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJpbnB1dFBhZ2UocGFnZS52YWx1ZSlcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdBREZfVklFV0VSLlBBR0VfTEFCRUwuT0YnIHwgdHJhbnNsYXRlIH19IHt7IHRvdGFsUGFnZXMgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtcGRmLXZpZXdlcl9fdG9vbGJhci1wYWdlLXNjYWxlXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXBhZ2Utc2NhbGVcIj5cbiAgICAgICAgICAgIHt7IGN1cnJlbnRTY2FsZVRleHQgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInZpZXdlci16b29tLWluLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BUklBLlpPT01fSU4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyAnQURGX1ZJRVdFUi5BUklBLlpPT01fSU4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiem9vbUluKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj56b29tX2luPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInZpZXdlci16b29tLW91dC1idXR0b25cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQVJJQS5aT09NX09VVCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7ICdBREZfVklFV0VSLkFSSUEuWk9PTV9PVVQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiem9vbU91dCgpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+em9vbV9vdXQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uIGlkPVwidmlld2VyLXNjYWxlLXBhZ2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCIgYXJpYS1wcmVzc2VkPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BUklBLkZJVF9QQUdFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgJ0FERl9WSUVXRVIuQVJJQS5GSVRfUEFHRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwYWdlRml0KClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj56b29tX291dF9tYXA8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgIDwvYWRmLXRvb2xiYXI+XG48L2Rpdj5cbiJdfQ==