myrta-ui 17.1.70 → 17.1.71

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.
@@ -99,6 +99,7 @@ export class InputNumberComponent {
99
99
  }
100
100
  }
101
101
  modelChange = new EventEmitter();
102
+ modelChangeBlur = new EventEmitter();
102
103
  constructor(fb) {
103
104
  this.numberForm = fb.group({
104
105
  number: [''],
@@ -189,8 +190,8 @@ export class InputNumberComponent {
189
190
  }
190
191
  }
191
192
  onPhoneInputBlur() {
193
+ const f = this.getControl('number');
192
194
  if (this.isAutoCorrectingValue) {
193
- const f = this.getControl('number');
194
195
  if (f.value > this._max) {
195
196
  f.setValue(this._max);
196
197
  }
@@ -198,6 +199,7 @@ export class InputNumberComponent {
198
199
  f.setValue(this._min);
199
200
  }
200
201
  }
202
+ this.modelChangeBlur.emit({ value: f.value || null, id: this.uuid });
201
203
  }
202
204
  writeValue(value) {
203
205
  const f = this.getControl('number');
@@ -213,7 +215,7 @@ export class InputNumberComponent {
213
215
  this.onTouchedCallback = fn;
214
216
  }
215
217
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputNumberComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
216
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: InputNumberComponent, selector: "mrx-input-number", inputs: { fields: "fields", placeholder: "placeholder", innerClass: "innerClass", customClasses: "customClasses", required: "required", allowNegative: "allowNegative", size: "size", separator: "separator", decimalSeparator: "decimalSeparator", decimals: "decimals", isNullableValue: "isNullableValue", isAutoCorrectingValue: "isAutoCorrectingValue", invalid: "invalid", checkInvalid: "checkInvalid", setNumberType: ["numberType", "setNumberType"], setInvalidMessage: ["invalidMessage", "setInvalidMessage"], setDisabled: ["disabled", "setDisabled"], setReadonly: ["readonly", "setReadonly"], setMin: ["minValue", "setMin"], setMax: ["maxValue", "setMax"] }, outputs: { modelChange: "modelChange" }, providers: [
218
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: InputNumberComponent, selector: "mrx-input-number", inputs: { fields: "fields", placeholder: "placeholder", innerClass: "innerClass", customClasses: "customClasses", required: "required", allowNegative: "allowNegative", size: "size", separator: "separator", decimalSeparator: "decimalSeparator", decimals: "decimals", isNullableValue: "isNullableValue", isAutoCorrectingValue: "isAutoCorrectingValue", invalid: "invalid", checkInvalid: "checkInvalid", setNumberType: ["numberType", "setNumberType"], setInvalidMessage: ["invalidMessage", "setInvalidMessage"], setDisabled: ["disabled", "setDisabled"], setReadonly: ["readonly", "setReadonly"], setMin: ["minValue", "setMin"], setMax: ["maxValue", "setMax"] }, outputs: { modelChange: "modelChange", modelChangeBlur: "modelChangeBlur" }, providers: [
217
219
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputNumberComponent), multi: true },
218
220
  ], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"mrx-input-number\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"!isValid || invalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n>\r\n <div class=\"mrx-input-number__wrapper\">\r\n <form [formGroup]=\"numberForm\">\r\n <div>\r\n <input\r\n #inputElement\r\n autocomplete=\"nope\"\r\n formControlName=\"number\"\r\n type=\"text\"\r\n [thousandSeparator]=\"thousandsSeparator\"\r\n [decimalMarker]=\"decimalMarker\"\r\n [class]=\"innerClass\"\r\n [mask]=\"'separator.' + decimals\"\r\n [allowNegativeNumbers]=\"allowNegative\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (blur)=\"onPhoneInputBlur()\"\r\n />\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <mrx-error-message *ngIf=\"!isValid && invalidMessageStart\">\r\n {{invalidMessageStart}}\r\n <a href=\"#\" (click)=\"resetToMax($event)\">{{maxMessage}}</a>\r\n {{invalidMessageEnd}}\r\n </mrx-error-message>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n", styles: [".mrx-input-number.mrx-input-number{width:100%;position:relative}.mrx-input-number.mrx-input-number .mrx-input-text__wrapper{position:relative}.mrx-input-number.mrx-input-number input{box-sizing:border-box;border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s}.mrx-input-number.mrx-input-number input:focus,.mrx-input-number.mrx-input-number input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-number.mrx-input-number input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-number.mrx-input-number.mrx-input__readonly input[type=tel]:disabled{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input__readonly input{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input-number-lg input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-lg:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-3) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-lg.mrx-input-number-with-icon input{padding:calc(var(--spacing-3) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-3) + var(--spacing-half) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-md input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-md:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-md.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) + var(--spacing-half) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) + var(--spacing-half) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-sm input{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-sm:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-sm.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-8)}.mrx-input-number.mrx-input-number.mrx-input-error input{border-color:var(--system-bg-controls-negative-default)!important}.mrx-input-number.mrx-input-number.mrx-input-error input:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)!important}.mrx-input-number.mrx-input-number.mrx-input-checked-error input{border-color:var(--system-bg-controls-negative-default)!important;background-color:var(--system-bg-negative-secondary)!important}.mrx-input-number.mrx-input-number.mrx-input-checked-error input:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)!important}.mrx-input-number.mrx-input-number.mrx-input-checked-success input{background-color:var(--system-bg-positive-secondary)!important;border-color:var(--system-bg-controls-positive-default)!important}.mrx-input-number.mrx-input-number.mrx-input-checked-success input:hover{border:var(--border-width-default) solid var(--system-bg-controls-positive-default)!important}.mrx-input-number.mrx-input-number.-disabled input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E)}.mrx-input-number.mrx-input-number.-readonly input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626)}.mrx-input-number.mrx-input-number.-readonly input::placeholder{opacity:.6;color:var(--neutral-text-tertiary, #71767E)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.SaveStateComponent, selector: "mrx-save-state", inputs: ["type", "fields", "id"] }, { kind: "component", type: i4.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalid", "invalidMessage", "customClasses"] }, { kind: "directive", type: i5.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
219
221
  }
@@ -273,5 +275,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
273
275
  args: ['maxValue']
274
276
  }], modelChange: [{
275
277
  type: Output
278
+ }], modelChangeBlur: [{
279
+ type: Output
276
280
  }] } });
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLTCxpQkFBaUIsRUFDakIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLG9CQUFvQixFQUlyQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFHM0UsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO0FBQ2xCLENBQUMsQ0FBQztBQWFGLE1BQU0sT0FBTyxvQkFBb0I7SUFFeEIsTUFBTSxDQUFDLGFBQWEsQ0FBcUI7SUFDeEMsTUFBTSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztJQUN2QyxNQUFNLENBQUMsa0JBQWtCLENBQVM7SUFFbEMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXhCLFVBQVUsQ0FBWTtJQUN0QixtQkFBbUIsQ0FBNEI7SUFDL0MsaUJBQWlCLENB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YTtzQkFBNUIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBR1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUVxQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBR2QsYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxZQUFZO2dCQU1SLGlCQUFpQjtzQkFEM0IsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBYVosV0FBVztzQkFEckIsS0FBSzt1QkFBQyxVQUFVO2dCQWFOLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsVUFBVTtnQkFhTixNQUFNO3NCQURoQixLQUFLO3VCQUFDLFVBQVU7Z0JBWU4sTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVdBLFdBQVc7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFZhbGlkYXRvcnNcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXROdW1iZXJTaXplc0VudW0sXHJcbiAgSW5wdXROdW1iZXJTaXplc1R5cGVzLFxyXG4gIElucHV0TnVtYmVyVHlwZSxcclxuICBJbnB1dE51bWJlclZhbHVlV2l0aElkXHJcbn0gZnJvbSAnLi9pbnB1dC1udW1iZXIuZW51bSc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgcGFpcndpc2UsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zYXZlLXN0b3JlL21vZGVscyc7XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4ge1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgRGVjaW1hbE1hcmtlclR5cGUgPSAnLicgfCAnLCcgfCBbJy4nLCAnLCddO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtbnVtYmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1udW1iZXIuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0TnVtYmVyQ29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dE51bWJlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGRlY2ltYWxNYXJrZXI/OiBEZWNpbWFsTWFya2VyVHlwZTtcclxuICBwcml2YXRlIHN0YXRpYyBfZGVsaW1pdGVyc0luaXRpYWxpc2VkID0gZmFsc2U7XHJcbiAgcHVibGljIHN0YXRpYyB0aG91c2FuZHNTZXBhcmF0b3I6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcblxyXG4gIG51bWJlckZvcm06IEZvcm1Hcm91cDtcclxuICBpbnZhbGlkTWVzc2FnZVN0YXJ0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xyXG4gIGludmFsaWRNZXNzYWdlRW5kOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xyXG5cclxuICBwcml2YXRlIGludm9rZUNoYW5nZWQgPSB0cnVlO1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG4gIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcclxuICBwcml2YXRlIF9taW4gPSAtOTk5OTk5OTk5Ljk5O1xyXG4gIHByaXZhdGUgX21heCA9IDk5OTk5OTk5OS45OTtcclxuICBwcml2YXRlIF9pc1ZhbGlkID0gdHJ1ZTtcclxuXHJcblxyXG4gIC8vIFNBVkUgU1RBVEVcclxuICBwdWJsaWMgdXVpZDogc3RyaW5nID0gdXVpZHY0KCk7XHJcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGlubmVyQ2xhc3MgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd05lZ2F0aXZlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHNpemU6IElucHV0TnVtYmVyU2l6ZXNUeXBlcyA9ICdsYXJnZSc7XHJcbiAgQElucHV0KCkgcHVibGljIHNlcGFyYXRvcj86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZGVjaW1hbFNlcGFyYXRvcj86IERlY2ltYWxNYXJrZXJUeXBlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZWNpbWFsczogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKSBwdWJsaWMgaXNOdWxsYWJsZVZhbHVlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGlzQXV0b0NvcnJlY3RpbmdWYWx1ZSA9IGZhbHNlO1xyXG5cclxuICAvLyBFUlJPUlxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcpIGlucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgnbnVtYmVyVHlwZScpXHJcbiAgcHVibGljIHNldCBzZXROdW1iZXJUeXBlKHZhbHVlOiBJbnB1dE51bWJlclR5cGUpIHtcclxuICAgIHRoaXMuZGVjaW1hbHMgPSB2YWx1ZSA9PT0gJ2Zsb2F0JyA/IDIgOiB2YWx1ZSA9PT0gJ3BlcmNlbnQnID8gMSA6IDA7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2ludmFsaWRNZXNzYWdlJylcclxuICBwdWJsaWMgc2V0IHNldEludmFsaWRNZXNzYWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCBwYXJhID0gdmFsdWUuc3BsaXQoJ3swfScpO1xyXG4gICAgICB0aGlzLmludmFsaWRNZXNzYWdlU3RhcnQgPSBwYXJhWzBdO1xyXG4gICAgICB0aGlzLmludmFsaWRNZXNzYWdlRW5kID0gcGFyYVsxXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VTdGFydCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VFbmQgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCdkaXNhYmxlZCcpXHJcbiAgcHVibGljIHNldCBzZXREaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pbnZva2VDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gdmFsdWVcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLm51bWJlckZvcm0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5udW1iZXJGb3JtLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbnZva2VDaGFuZ2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgncmVhZG9ubHknKVxyXG4gIHB1YmxpYyBzZXQgc2V0UmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaW52b2tlQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZWFkb25seSA9IHZhbHVlXHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5udW1iZXJGb3JtLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubnVtYmVyRm9ybS5lbmFibGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW52b2tlQ2hhbmdlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ21pblZhbHVlJylcclxuICBwdWJsaWMgc2V0IHNldE1pbih2YWw6IG51bWJlcikge1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLl9taW4gPSB2YWw7XHJcbiAgICAgIGNvbnN0IGMgPSB0aGlzLmdldENvbnRyb2woJ251bWJlcicpO1xyXG4gICAgICBpZiAoYykge1xyXG4gICAgICAgIGMuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5taW4odGhpcy5fbWluKSwgVmFsaWRhdG9ycy5tYXgodGhpcy5fbWF4KV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ21heFZhbHVlJylcclxuICBwdWJsaWMgc2V0IHNldE1heCh2YWw6IG51bWJlcikge1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLl9tYXggPSB2YWw7XHJcbiAgICAgIGNvbnN0IGMgPSB0aGlzLmdldENvbnRyb2woJ251bWJlcicpO1xyXG4gICAgICBpZiAoYykge1xyXG4gICAgICAgIGMuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5taW4odGhpcy5fbWluKSwgVmFsaWRhdG9ycy5tYXgodGhpcy5fbWF4KV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPElucHV0TnVtYmVyVmFsdWVXaXRoSWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGZiOiBGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy5udW1iZXJGb3JtID0gZmIuZ3JvdXAoe1xyXG4gICAgICBudW1iZXI6IFsnJ10sXHJcbiAgICB9KTtcclxuXHJcbiAgICBJbnB1dE51bWJlckNvbXBvbmVudC5pbml0TnVtYmVyRm9ybWF0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5ID8gJ21yeC1pbnB1dF9fcmVhZG9ubHknIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID9cclxuICAgICAgJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDpcclxuICAgICAgdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJydcclxuICB9XHJcblxyXG4gIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXROdW1iZXJTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9ICR7dGhpcy5yZWFkb25seUNsYXNzfSAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIGdldCBkZWNpbWFsTWFya2VyKCk6ICcuJyB8ICcsJyB8IFsnLicsICcsJ10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCBJbnB1dE51bWJlckNvbXBvbmVudC5kZWNpbWFsTWFya2VyIHx8ICcsJztcclxuICB9XHJcblxyXG4gIGdldCB0aG91c2FuZHNTZXBhcmF0b3IoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNlcGFyYXRvciB8fCBJbnB1dE51bWJlckNvbXBvbmVudC50aG91c2FuZHNTZXBhcmF0b3I7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRlYyA9IHRoaXMuZGVjaW1hbE1hcmtlclswXTtcclxuICAgIHJldHVybiB0aGlzLl9tYXgudG9Mb2NhbGVTdHJpbmcoJ2VuJykuc3BsaXQoJywnKS5qb2luKHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKS5yZXBsYWNlKCcuJywgZGVjKTtcclxuICB9XHJcblxyXG4gIGdldCBpc1ZlcmlmaWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZiA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICByZXR1cm4gIXRoaXMucmVxdWlyZWQgfHxcclxuICAgICAgKHRoaXMucmVxdWlyZWQgJiYgZi52YWx1ZSAhPT0gbnVsbCAmJiBmLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5pc1ZhbGlkKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpbml0TnVtYmVyRm9ybWF0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2RlbGltaXRlcnNJbml0aWFsaXNlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDRgdC40YHRgtC10LzQvdGL0Lkg0YTQvtGA0LzQsNGCINGH0LjRgdC70LAg0YEg0LTRgNC+0LHQvdC+0Lkg0YfQsNGB0YLRjNGOINC4INCz0YDRg9C/0L/QvtC5INGA0LDQt9GA0LDRj9C00L7QsiAo0YLRi9GB0Y/Rh9C4KVxyXG4gICAgY29uc3QgYyA9IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0VG9QYXJ0cygxMjM0LjUpO1xyXG5cclxuICAgIGNvbnN0IHQgPSBjLmZpbmQoeCA9PiB4LnR5cGUgPT09ICdncm91cCcpPy52YWx1ZTtcclxuXHJcbiAgICAvLyDRgNCw0LfQtNC10LvQuNGC0LXQu9GMINCz0YDRg9C/0L9cclxuICAgIHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yID0gdD8uY2hhckNvZGVBdCgwKSA9PT0gMTYwID8gJyAnIDogdCB8fCAnICc7XHJcblxyXG4gICAgLy8g0YDQsNC30LTQtdC70LjRgtC10LvRjCDQtNGA0L7QsdC90L7QuSDRh9Cw0YHRgtC4XHJcbiAgICB0aGlzLmRlY2ltYWxNYXJrZXIgPSAoYy5maW5kKHggPT4geC50eXBlID09PSAnZGVjaW1hbCcpPy52YWx1ZSBhcyAoJywnIHwgJy4nKSk7XHJcblxyXG4gICAgdGhpcy5fZGVsaW1pdGVyc0luaXRpYWxpc2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5udW1iZXJGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICBzdGFydFdpdGgobnVsbCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHBhaXJ3aXNlKClcclxuICAgICkuc3Vic2NyaWJlKChbb2xkVmFsdWUsIG5ld1ZhbHVlXSkgPT4ge1xyXG4gICAgICB0aGlzLl91cGRhdGVWYWx1ZShuZXdWYWx1ZS5udW1iZXIpXHJcbiAgICB9KTtcclxuICAgIHRoaXMubnVtYmVyRm9ybS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICB0aGlzLmNoZWNrSXNWYWxpZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVWYWx1ZShpbnNpZGVWYWx1ZTogbnVtYmVyIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5pbnZva2VDaGFuZ2VkKSB7XHJcbiAgICAgIGlmICh0aGlzLm51bWJlckZvcm0udmFsaWQpIHtcclxuICAgICAgICBjb25zdCBudW0gPSBpbnNpZGVWYWx1ZTtcclxuICAgICAgICBsZXQgbnVtVmFsdWU6IG51bWJlcjtcclxuICAgICAgICBpZiAobnVtID09PSAnJykge1xyXG4gICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoeyB2YWx1ZTogbnVsbCwgaWQ6IHRoaXMudXVpZCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG51bSAmJiB0eXBlb2YgKG51bSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBudW1WYWx1ZSA9IHBhcnNlRmxvYXQobnVtLnJlcGxhY2UoJywnLCAnLicpLnNwbGl0KHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKS5qb2luKCcnKSk7XHJcbiAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudW1WYWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoeyB2YWx1ZTogbnVtVmFsdWUsIGlkOiB0aGlzLnV1aWQgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgKG51bSkgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICBudW1WYWx1ZSA9IG51bTtcclxuICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bVZhbHVlKTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7IHZhbHVlOiBudW1WYWx1ZSwgaWQ6IHRoaXMudXVpZCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0VG9NYXgoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBjb25zdCBmID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuICAgIGYuc2V0VmFsdWUodGhpcy5fbWF4KTtcclxuICB9XHJcblxyXG4gIGNoZWNrSXNWYWxpZCgpIHtcclxuICAgIGlmICghdGhpcy5pc0F1dG9Db3JyZWN0aW5nVmFsdWUpIHtcclxuICAgICAgY29uc3QgZiA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQgPSB0aGlzLm51bWJlckZvcm0uZGlzYWJsZWQgfHwgKGYgJiYgZi52YWxpZCB8fCAoIWYuZGlydHkgJiYgIWYudG91Y2hlZCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QaG9uZUlucHV0Qmx1cigpIHtcclxuICAgIGlmICh0aGlzLmlzQXV0b0NvcnJlY3RpbmdWYWx1ZSkge1xyXG4gICAgICBjb25zdCBmID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuXHJcbiAgICAgIGlmIChmLnZhbHVlID4gdGhpcy5fbWF4KSB7XHJcbiAgICAgICAgZi5zZXRWYWx1ZSh0aGlzLl9tYXgpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChmLnZhbHVlIDwgdGhpcy5fbWluKSB7XHJcbiAgICAgICAgZi5zZXRWYWx1ZSh0aGlzLl9taW4pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZiA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICBmLnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UsIGVtaXRWaWV3VG9Nb2RlbENoYW5nZTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9sKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubnVtYmVyRm9ybS5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAgIGNsYXNzPVwibXJ4LWlucHV0LW51bWJlclwiXHJcbiAgICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbiAgICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cIiFpc1ZhbGlkIHx8IGludmFsaWRcIlxyXG4gICAgW2NsYXNzLi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICBbY2xhc3MuLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtbnVtYmVyX193cmFwcGVyXCI+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIm51bWJlckZvcm1cIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgI2lucHV0RWxlbWVudFxyXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJub3BlXCJcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbdGhvdXNhbmRTZXBhcmF0b3JdPVwidGhvdXNhbmRzU2VwYXJhdG9yXCJcclxuICAgICAgICAgICAgW2RlY2ltYWxNYXJrZXJdPVwiZGVjaW1hbE1hcmtlclwiXHJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbm5lckNsYXNzXCJcclxuICAgICAgICAgICAgW21hc2tdPVwiJ3NlcGFyYXRvci4nICsgZGVjaW1hbHNcIlxyXG4gICAgICAgICAgICBbYWxsb3dOZWdhdGl2ZU51bWJlcnNdPVwiYWxsb3dOZWdhdGl2ZVwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciA/IHBsYWNlaG9sZGVyIDogJydcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJvblBob25lSW5wdXRCbHVyKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bXJ4LWVycm9yLW1lc3NhZ2UgKm5nSWY9XCIhaXNWYWxpZCAmJiBpbnZhbGlkTWVzc2FnZVN0YXJ0XCI+XHJcbiAgICB7e2ludmFsaWRNZXNzYWdlU3RhcnR9fVxyXG4gICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwicmVzZXRUb01heCgkZXZlbnQpXCI+e3ttYXhNZXNzYWdlfX08L2E+XHJcbiAgICB7e2ludmFsaWRNZXNzYWdlRW5kfX1cclxuICA8L21yeC1lcnJvci1tZXNzYWdlPlxyXG5cclxuICA8bXJ4LXNhdmUtc3RhdGUgW2lkXT1cInV1aWRcIiBbZmllbGRzXT1cImZpZWxkc1wiPjwvbXJ4LXNhdmUtc3RhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLTCxpQkFBaUIsRUFDakIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLG9CQUFvQixFQUlyQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFHM0UsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO0FBQ2xCLENBQUMsQ0FBQztBQWFGLE1BQU0sT0FBTyxvQkFBb0I7SUFFeEIsTUFBTSxDQUFDLGFBQWEsQ0FBcUI7SUFDeEMsTUFBTSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztJQUN2QyxNQUFNLENBQUMsa0JBQWtCLENBQVM7SUFFbEMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXhCLFVBQVUsQ0FBWTtJQUN0QixtQkFBbUIsQ0FBNEI7SUFDL0MsaUJBQWlCLENB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QyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7cUJBQ2pHO2dGQXlCZSxNQUFNO3NCQUFyQixLQUFLO2dCQUVVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBR1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUVxQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBR2QsYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxZQUFZO2dCQU1SLGlCQUFpQjtzQkFEM0IsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBYVosV0FBVztzQkFEckIsS0FBSzt1QkFBQyxVQUFVO2dCQWFOLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsVUFBVTtnQkFhTixNQUFNO3NCQURoQixLQUFLO3VCQUFDLFVBQVU7Z0JBWU4sTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVdBLFdBQVc7c0JBQTNCLE1BQU07Z0JBQ1UsZUFBZTtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgVmFsaWRhdG9yc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBJbnB1dE51bWJlclNpemVzRW51bSxcclxuICBJbnB1dE51bWJlclNpemVzVHlwZXMsXHJcbiAgSW5wdXROdW1iZXJUeXBlLFxyXG4gIElucHV0TnVtYmVyVmFsdWVXaXRoSWRcclxufSBmcm9tICcuL2lucHV0LW51bWJlci5lbnVtJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBwYWlyd2lzZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NhdmUtc3RvcmUvbW9kZWxzJztcclxuXHJcbmNvbnN0IG5vb3AgPSAoKSA9PiB7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBEZWNpbWFsTWFya2VyVHlwZSA9ICcuJyB8ICcsJyB8IFsnLicsICcsJ107XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1udW1iZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1udW1iZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LW51bWJlci5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXROdW1iZXJDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0TnVtYmVyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZGVjaW1hbE1hcmtlcj86IERlY2ltYWxNYXJrZXJUeXBlO1xyXG4gIHByaXZhdGUgc3RhdGljIF9kZWxpbWl0ZXJzSW5pdGlhbGlzZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgc3RhdGljIHRob3VzYW5kc1NlcGFyYXRvcjogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuXHJcbiAgbnVtYmVyRm9ybTogRm9ybUdyb3VwO1xyXG4gIGludmFsaWRNZXNzYWdlU3RhcnQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XHJcbiAgaW52YWxpZE1lc3NhZ2VFbmQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XHJcblxyXG4gIHByaXZhdGUgaW52b2tlQ2hhbmdlZCA9IHRydWU7XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XHJcbiAgcHJpdmF0ZSBwcm9wYWdhdGVDaGFuZ2U6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xyXG4gIHByaXZhdGUgX21pbiA9IC05OTk5OTk5OTkuOTk7XHJcbiAgcHJpdmF0ZSBfbWF4ID0gOTk5OTk5OTk5Ljk5O1xyXG4gIHByaXZhdGUgX2lzVmFsaWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgLy8gU0FWRSBTVEFURVxyXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkdjQoKTtcclxuICBASW5wdXQoKSBwdWJsaWMgZmllbGRzOiBGaWVsZFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgaW5uZXJDbGFzcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21DbGFzc2VzID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGFsbG93TmVnYXRpdmUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogSW5wdXROdW1iZXJTaXplc1R5cGVzID0gJ2xhcmdlJztcclxuICBASW5wdXQoKSBwdWJsaWMgc2VwYXJhdG9yPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZWNpbWFsU2VwYXJhdG9yPzogRGVjaW1hbE1hcmtlclR5cGU7XHJcbiAgQElucHV0KCkgcHVibGljIGRlY2ltYWxzOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc051bGxhYmxlVmFsdWUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaXNBdXRvQ29ycmVjdGluZ1ZhbHVlID0gZmFsc2U7XHJcblxyXG4gIC8vIEVSUk9SXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JykgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCdudW1iZXJUeXBlJylcclxuICBwdWJsaWMgc2V0IHNldE51bWJlclR5cGUodmFsdWU6IElucHV0TnVtYmVyVHlwZSkge1xyXG4gICAgdGhpcy5kZWNpbWFscyA9IHZhbHVlID09PSAnZmxvYXQnID8gMiA6IHZhbHVlID09PSAncGVyY2VudCcgPyAxIDogMDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnaW52YWxpZE1lc3NhZ2UnKVxyXG4gIHB1YmxpYyBzZXQgc2V0SW52YWxpZE1lc3NhZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHBhcmEgPSB2YWx1ZS5zcGxpdCgnezB9Jyk7XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VTdGFydCA9IHBhcmFbMF07XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VFbmQgPSBwYXJhWzFdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZVN0YXJ0ID0gbnVsbDtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZUVuZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2Rpc2FibGVkJylcclxuICBwdWJsaWMgc2V0IHNldERpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmludm9rZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSB2YWx1ZVxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMubnVtYmVyRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm51bWJlckZvcm0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmludm9rZUNoYW5nZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdyZWFkb25seScpXHJcbiAgcHVibGljIHNldCBzZXRSZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pbnZva2VDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlYWRvbmx5ID0gdmFsdWVcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLm51bWJlckZvcm0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5udW1iZXJGb3JtLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbnZva2VDaGFuZ2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnbWluVmFsdWUnKVxyXG4gIHB1YmxpYyBzZXQgc2V0TWluKHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuX21pbiA9IHZhbDtcclxuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgYy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1pbih0aGlzLl9taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLl9tYXgpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgnbWF4VmFsdWUnKVxyXG4gIHB1YmxpYyBzZXQgc2V0TWF4KHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuX21heCA9IHZhbDtcclxuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgYy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1pbih0aGlzLl9taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLl9tYXgpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dE51bWJlclZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJWYWx1ZVdpdGhJZD4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIG1vZGVsQ2hhbmdlQmx1cjogRXZlbnRFbWl0dGVyPElucHV0TnVtYmVyVmFsdWVXaXRoSWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJbnB1dE51bWJlclZhbHVlV2l0aElkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihmYjogRm9ybUJ1aWxkZXIpIHtcclxuICAgIHRoaXMubnVtYmVyRm9ybSA9IGZiLmdyb3VwKHtcclxuICAgICAgbnVtYmVyOiBbJyddLFxyXG4gICAgfSk7XHJcblxyXG4gICAgSW5wdXROdW1iZXJDb21wb25lbnQuaW5pdE51bWJlckZvcm1hdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByZWFkb25seUNsYXNzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSA/ICdtcngtaW5wdXRfX3JlYWRvbmx5JyA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/XHJcbiAgICAgICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6XHJcbiAgICAgIHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnXHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke0lucHV0TnVtYmVyU2l6ZXNFbnVtW3RoaXMuc2l6ZV19ICR7dGhpcy5jdXN0b21DbGFzc2VzfSAke3RoaXMucmVhZG9ubHlDbGFzc30gJHt0aGlzLmNoZWNrVmFsaWRDbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVjaW1hbE1hcmtlcigpOiAnLicgfCAnLCcgfCBbJy4nLCAnLCddIHtcclxuICAgIHJldHVybiB0aGlzLmRlY2ltYWxTZXBhcmF0b3IgfHwgSW5wdXROdW1iZXJDb21wb25lbnQuZGVjaW1hbE1hcmtlciB8fCAnLCc7XHJcbiAgfVxyXG5cclxuICBnZXQgdGhvdXNhbmRzU2VwYXJhdG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXBhcmF0b3IgfHwgSW5wdXROdW1iZXJDb21wb25lbnQudGhvdXNhbmRzU2VwYXJhdG9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNWYWxpZDtcclxuICB9XHJcblxyXG4gIGdldCBtYXhNZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBkZWMgPSB0aGlzLmRlY2ltYWxNYXJrZXJbMF07XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4LnRvTG9jYWxlU3RyaW5nKCdlbicpLnNwbGl0KCcsJykuam9pbih0aGlzLnRob3VzYW5kc1NlcGFyYXRvcikucmVwbGFjZSgnLicsIGRlYyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNWZXJpZmllZCgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGYgPSB0aGlzLmdldENvbnRyb2woJ251bWJlcicpO1xyXG4gICAgcmV0dXJuICF0aGlzLnJlcXVpcmVkIHx8XHJcbiAgICAgICh0aGlzLnJlcXVpcmVkICYmIGYudmFsdWUgIT09IG51bGwgJiYgZi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuaXNWYWxpZCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaW5pdE51bWJlckZvcm1hdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9kZWxpbWl0ZXJzSW5pdGlhbGlzZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8g0YHQuNGB0YLQtdC80L3Ri9C5INGE0L7RgNC80LDRgiDRh9C40YHQu9CwINGBINC00YDQvtCx0L3QvtC5INGH0LDRgdGC0YzRjiDQuCDQs9GA0YPQv9C/0L7QuSDRgNCw0LfRgNCw0Y/QtNC+0LIgKNGC0YvRgdGP0YfQuClcclxuICAgIGNvbnN0IGMgPSBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdFRvUGFydHMoMTIzNC41KTtcclxuXHJcbiAgICBjb25zdCB0ID0gYy5maW5kKHggPT4geC50eXBlID09PSAnZ3JvdXAnKT8udmFsdWU7XHJcblxyXG4gICAgLy8g0YDQsNC30LTQtdC70LjRgtC10LvRjCDQs9GA0YPQv9C/XHJcbiAgICB0aGlzLnRob3VzYW5kc1NlcGFyYXRvciA9IHQ/LmNoYXJDb2RlQXQoMCkgPT09IDE2MCA/ICcgJyA6IHQgfHwgJyAnO1xyXG5cclxuICAgIC8vINGA0LDQt9C00LXQu9C40YLQtdC70Ywg0LTRgNC+0LHQvdC+0Lkg0YfQsNGB0YLQuFxyXG4gICAgdGhpcy5kZWNpbWFsTWFya2VyID0gKGMuZmluZCh4ID0+IHgudHlwZSA9PT0gJ2RlY2ltYWwnKT8udmFsdWUgYXMgKCcsJyB8ICcuJykpO1xyXG5cclxuICAgIHRoaXMuX2RlbGltaXRlcnNJbml0aWFsaXNlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubnVtYmVyRm9ybS52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgc3RhcnRXaXRoKG51bGwpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICBwYWlyd2lzZSgpXHJcbiAgICApLnN1YnNjcmliZSgoW29sZFZhbHVlLCBuZXdWYWx1ZV0pID0+IHtcclxuICAgICAgdGhpcy5fdXBkYXRlVmFsdWUobmV3VmFsdWUubnVtYmVyKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm51bWJlckZvcm0uc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgdGhpcy5jaGVja0lzVmFsaWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlVmFsdWUoaW5zaWRlVmFsdWU6IG51bWJlciB8IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuaW52b2tlQ2hhbmdlZCkge1xyXG4gICAgICBpZiAodGhpcy5udW1iZXJGb3JtLnZhbGlkKSB7XHJcbiAgICAgICAgY29uc3QgbnVtID0gaW5zaWRlVmFsdWU7XHJcbiAgICAgICAgbGV0IG51bVZhbHVlOiBudW1iZXI7XHJcbiAgICAgICAgaWYgKG51bSA9PT0gJycpIHtcclxuICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHsgdmFsdWU6IG51bGwsIGlkOiB0aGlzLnV1aWQgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChudW0gJiYgdHlwZW9mIChudW0pID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgbnVtVmFsdWUgPSBwYXJzZUZsb2F0KG51bS5yZXBsYWNlKCcsJywgJy4nKS5zcGxpdCh0aGlzLnRob3VzYW5kc1NlcGFyYXRvcikuam9pbignJykpO1xyXG4gICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVtVmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHsgdmFsdWU6IG51bVZhbHVlLCBpZDogdGhpcy51dWlkIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIChudW0pID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgbnVtVmFsdWUgPSBudW07XHJcbiAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudW1WYWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoeyB2YWx1ZTogbnVtVmFsdWUsIGlkOiB0aGlzLnV1aWQgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldFRvTWF4KGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgY29uc3QgZiA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICBmLnNldFZhbHVlKHRoaXMuX21heCk7XHJcbiAgfVxyXG5cclxuICBjaGVja0lzVmFsaWQoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNBdXRvQ29ycmVjdGluZ1ZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IGYgPSB0aGlzLmdldENvbnRyb2woJ251bWJlcicpO1xyXG4gICAgICB0aGlzLl9pc1ZhbGlkID0gdGhpcy5udW1iZXJGb3JtLmRpc2FibGVkIHx8IChmICYmIGYudmFsaWQgfHwgKCFmLmRpcnR5ICYmICFmLnRvdWNoZWQpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUGhvbmVJbnB1dEJsdXIoKSB7XHJcbiAgICBjb25zdCBmID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc0F1dG9Db3JyZWN0aW5nVmFsdWUpIHtcclxuICAgICAgaWYgKGYudmFsdWUgPiB0aGlzLl9tYXgpIHtcclxuICAgICAgICBmLnNldFZhbHVlKHRoaXMuX21heClcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGYudmFsdWUgPCB0aGlzLl9taW4pIHtcclxuICAgICAgICBmLnNldFZhbHVlKHRoaXMuX21pbilcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubW9kZWxDaGFuZ2VCbHVyLmVtaXQoeyB2YWx1ZTogZi52YWx1ZSB8fCBudWxsLCBpZDogdGhpcy51dWlkIH0pO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBmID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuICAgIGYuc2V0VmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSwgZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2wobmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5udW1iZXJGb3JtLmdldChuYW1lKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICAgY2xhc3M9XCJtcngtaW5wdXQtbnVtYmVyXCJcclxuICAgIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuICAgIFtjbGFzcy5tcngtaW5wdXQtZXJyb3JdPVwiIWlzVmFsaWQgfHwgaW52YWxpZFwiXHJcbiAgICBbY2xhc3MuLWRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIFtjbGFzcy4tcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1udW1iZXJfX3dyYXBwZXJcIj5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwibnVtYmVyRm9ybVwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAjaW5wdXRFbGVtZW50XHJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm5vcGVcIlxyXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFt0aG91c2FuZFNlcGFyYXRvcl09XCJ0aG91c2FuZHNTZXBhcmF0b3JcIlxyXG4gICAgICAgICAgICBbZGVjaW1hbE1hcmtlcl09XCJkZWNpbWFsTWFya2VyXCJcclxuICAgICAgICAgICAgW2NsYXNzXT1cImlubmVyQ2xhc3NcIlxyXG4gICAgICAgICAgICBbbWFza109XCInc2VwYXJhdG9yLicgKyBkZWNpbWFsc1wiXHJcbiAgICAgICAgICAgIFthbGxvd05lZ2F0aXZlTnVtYmVyc109XCJhbGxvd05lZ2F0aXZlXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiAnJ1wiXHJcbiAgICAgICAgICAgIChibHVyKT1cIm9uUGhvbmVJbnB1dEJsdXIoKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtcngtZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFpc1ZhbGlkICYmIGludmFsaWRNZXNzYWdlU3RhcnRcIj5cclxuICAgIHt7aW52YWxpZE1lc3NhZ2VTdGFydH19XHJcbiAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJyZXNldFRvTWF4KCRldmVudClcIj57e21heE1lc3NhZ2V9fTwvYT5cclxuICAgIHt7aW52YWxpZE1lc3NhZ2VFbmR9fVxyXG4gIDwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG4gIDxtcngtc2F2ZS1zdGF0ZSBbaWRdPVwidXVpZFwiIFtmaWVsZHNdPVwiZmllbGRzXCI+PC9tcngtc2F2ZS1zdGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -276,7 +276,7 @@ export class PdfViewerComponent {
276
276
  URL.revokeObjectURL(objectUrl);
277
277
  }
278
278
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PdfViewerComponent, deps: [{ token: i1.NgxExtendedPdfViewerService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
279
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PdfViewerComponent, selector: "mrx-pdf-viewer", inputs: { showSidebarButton: "showSidebarButton", showHandToolButton: "showHandToolButton", handTool: "handTool", showFindbarButton: "showFindbarButton", showRotateButton: "showRotateButton", showPrintButton: "showPrintButton", showDownloadButton: "showDownloadButton", showExpandButton: "showExpandButton", defaultZoom: "defaultZoom", downloadFileName: "downloadFileName", src: "src" }, host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, providers: [TooltipService], viewQueries: [{ propertyName: "pdfViewer", first: true, predicate: NgxExtendedPdfViewerComponent, descendants: true }, { propertyName: "findMenu", first: true, predicate: ["findMenu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #customToolbar>\r\n <div class=\"mrx-pdf-viewer__toolbar\" id=\"toolbarViewer\">\r\n <div class=\"d-flex g-2\">\r\n <div class=\"d-flex g-1\">\r\n @if (showSidebarButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-burger'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onSidebarViewClick()\"\r\n [ngClass]=\"{'mrx-icon-button--toggled': sidebarVisible}\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C/\u0441\u043A\u0440\u044B\u0442\u044C \u0431\u043E\u043A\u043E\u0432\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showFindbarButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-search'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onSearchClick()\"\r\n [customClasses]=\"'py-1 px-2 mrx-pdf-viewer__find-button'\"\r\n [ngClass]=\"{'mrx-icon-button--toggled': isSearchPanelVisible}\"\r\n [tooltip]=\"'\u041D\u0430\u0439\u0442\u0438 \u0432 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0435'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n }\r\n </div>\r\n\r\n @if (isSearchPanelVisible) {\r\n <div class=\"mrx-pdf-viewer__findbar g-1\" #findMenu>\r\n <mrx-input-text\r\n [customClasses]=\"findState === 1 ? 'mrx-input-error' :''+'searchText'\"\r\n placeholder=\"\u041D\u0430\u0439\u0442\u0438 \u0432 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0435...\"\r\n [ngModel]=\"searchQuery\"\r\n (ngModelChange)=\"onSearch($event)\">\r\n </mrx-input-text>\r\n <div class=\"d-flex\">\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-chevron-left'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'p-1'\"\r\n (mrxClick)=\"findPrevious()\"\r\n ></mrx-icon-button>\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-chevron-right'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'p-1'\"\r\n (mrxClick)=\"findNext()\"\r\n ></mrx-icon-button>\r\n </div>\r\n @if (findState === 0 || findState === 2) {\r\n <div class=\"mrx-pdf-viewer__findbar-result\">\r\n {{ currentFind }} \u0438\u0437 {{ totalFound }} \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439\r\n </div>\r\n }\r\n @if (findState === 1) {\r\n <div class=\"color-negative d-flex align-items-center nowrap\">\u0424\u0440\u0430\u0437\u0430 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430</div>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-pdf-viewer__toolbar--nav\">\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-in-the-end-left'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u0435\u0440\u0432\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n (mrxClick)=\"onPageChange(1)\"\r\n ></mrx-icon-button>\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-chevron-left'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n (mrxClick)=\"onPageChange(page - 1 || 1)\"\r\n ></mrx-icon-button>\r\n <mrx-input-number\r\n [size]=\"'small'\"\r\n [customClasses]=\"'wpx-56'\"\r\n [ngModel]=\"page\"\r\n [numberType]=\"'int'\"\r\n [minValue]=\"1\"\r\n [maxValue]=\"pageCount\"\r\n [isAutoCorrectingValue]=\"true\"\r\n (ngModelChange)=\"onPageChange($event)\"\r\n ></mrx-input-number>\r\n <span class=\"mx-1\">\u0438\u0437 {{ pageCount }}</span>\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-chevron-right'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onNextPage()\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-in-the-end-right'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onLastPage()\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex\">\r\n <mrx-icon-button\r\n (mrxClick)=\"zoomClick(false)\"\r\n [iconClass]=\"'icon-minus'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u0423\u043C\u0435\u043D\u044C\u0448\u0438\u0442\u044C'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n <mrx-icon-button\r\n (mrxClick)=\"zoomClick(true)\"\r\n [iconClass]=\"'icon-plus'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u0423\u0432\u0435\u043B\u0438\u0447\u0438\u0442\u044C'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n <mrx-input-select\r\n [size]=\"'medium'\"\r\n [customClasses]=\"'wpx-156'\"\r\n [items]=\"zoomOptions\"\r\n (ngModelChange)=\"onZoomLevelSelect($event)\"\r\n [ngModel]=\"selectedZoom\"\r\n [clearable]=\"false\">\r\n </mrx-input-select>\r\n </div>\r\n\r\n <div class=\"d-flex\">\r\n @if (showHandToolButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-fc-text'\"\r\n [size]=\"'medium'\"\r\n [ngClass]=\"{'mrx-icon-button--toggled': !handTool}\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onHandToolClick()\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showRotateButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-reload'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onRotate(1)\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u043E \u0447\u0430\u0441\u043E\u0432\u043E\u0439 \u0441\u0442\u0440\u0435\u043B\u043A\u0435'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showRotateButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-return'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onRotate(-1)\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u0440\u043E\u0442\u0438\u0432 \u0447\u0430\u0441\u043E\u0432\u043E\u0439 \u0441\u0442\u0440\u0435\u043B\u043A\u0438'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showExpandButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-arrow-expand'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n (mrxClick)=\"onExpandModeClick()\"\r\n [tooltip]=\"'\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043D\u0430 \u0432\u0435\u0441\u044C \u044D\u043A\u0440\u0430\u043D'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showPrintButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-print'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u0435\u0447\u0430\u0442\u044C'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n (mrxClick)=\"onPrintClick()\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showDownloadButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-download'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u0421\u043A\u0430\u0447\u0430\u0442\u044C'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n (mrxClick)=\"onDownloadClick()\"\r\n ></mrx-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ngx-extended-pdf-viewer\r\n #pdfViewer\r\n class=\"mrx-pdf-viewer\"\r\n [src]=\"src\"\r\n [page]=\"page\"\r\n [sidebarVisible]=\"showSidebarButton && sidebarVisible\"\r\n [customToolbar]=\"customToolbar\"\r\n [showSidebarButton]=\"true\"\r\n [showRotateButton]=\"showRotateButton\"\r\n [showDownloadButton]=\"showDownloadButton\"\r\n [ignoreKeys]=\"ignoreKeys\"\r\n [zoom]=\"selectedZoom.value\"\r\n [textLayer]=\"true\"\r\n [handTool]=\"handTool\"\r\n [rotation]=\"rotation\"\r\n (zoomChange)=\"onZoomChange($event)\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pagesLoaded)=\"onPagesLoaded($event)\"\r\n (updateFindState)=\"onFindStateChanged($event)\"\r\n (sidebarVisibleChange)=\"onSidebarVisibleChange($event)\"\r\n (updateFindMatchesCount)=\"onUpdateMatchCase($event)\"\r\n></ngx-extended-pdf-viewer>\r\n", styles: [".mrx-pdf-viewer__toolbar{display:flex;padding:var(--spacing-1, 4px);justify-content:space-between;align-items:center;background:var(--neutral-bg-island-default, #F8F9FA);box-shadow:0 1px 4px #3b43571a;font-family:var(--body-sm-font-family, \"PT Sans\");font-size:var(--body-sm-font-size, 12px);font-style:normal;font-weight:var(--body-extra-sm-font-weight, 400);line-height:var(--body-lg-bold-font-size, 16px)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-select-container{min-height:28px!important;min-width:var(--sizing-10);padding:2px;padding-left:var(--spacing-1);padding-right:var(--spacing-2);background:var(--brand-bg-tertiary-default, #FFF)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-select-container .ng-value-container{padding-left:var(--spacing-1)!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-select-container .ng-value-container .ng-input{padding-left:var(--spacing-1)!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-select-container .ng-value-container .ng-value .ng-value-label{font-size:var(--body-sm-font-size);line-height:var(--body-sm-line-height)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-value .ng-value-label{font-size:var(--body-sm-font-size);line-height:var(--body-sm-line-height)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{min-height:var(--sizing-5);padding:calc(var(--spacing-1) / 2) var(--spacing-2)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-dropdown-panel .ng-dropdown-panel-items .ng-option span{font-size:var(--body-sm-font-size);line-height:var(--body-sm-line-height)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected:before{content:url(\"data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.3336 4.6665L6.00032 11.9998L2.66699 8.66649' stroke='%23000' stroke-width='0.999998' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A\");right:var(--spacing-2)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-number.mrx-input-number.mrx-input-number-sm:not(.mrx-input-number-with-icon) input{padding:var(--spacing-1, 4px) var(--spacing-2, 8px)!important;min-height:28px;border:var(--border-width-default, 1px) solid var(--neutral-bg-stroke-default, #BFC5CC);text-align:right;font-size:var(--body-sm-font-size, 12px)!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon{color:var(--neutral-icon-default)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon.icon-font-20{font-size:20px!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon.icon-font-24{font-size:24px!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button{position:relative;max-width:36px;max-height:28px;box-sizing:border-box}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button:after{content:\"\";position:absolute;left:0;top:0;width:100%;height:100%;border-radius:var(--border-radius-1, 4px);border:1px solid transparent;transition:.2s}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button--toggled .mrx-icon-button{background:var(--brand-bg-secondary-default, #EDF5FF)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button--toggled .mrx-icon-button:after{border-color:var(--brand-bg-primary-default, #2A6AB8)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button:active{background:var(--brand-bg-secondary-default, #EDF5FF)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button:active:after{border-color:var(--brand-bg-primary-default, #2A6AB8)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button.icon-search.mrx-pdf-viewer__find-button{position:relative}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-pdf-viewer__findbar .mrx-input-text.mrx-input-text-lg input{font-size:var(--body-sm-font-size, 12px)!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-pdf-viewer__findbar mrx-input-text{width:100%}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-pdf-viewer__findbar mrx-input-text .mrx-input-text{box-shadow:0 1px 4px #3a3a3a4d;border-radius:var(--border-radius-1)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-pdf-viewer__findbar mrx-icon-button .mrx-icon-button{max-width:unset;max-height:unset}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-pdf-viewer__findbar-result{display:flex;padding:6px var(--spacing-2, 8px);justify-content:center;align-items:center;gap:10px;border-radius:var(--sizing-1, 4px);background:var(--brand-bg-secondary-default, #EDF5FF);white-space:nowrap}.mrx-pdf-viewer__toolbar--nav{display:flex;align-items:center}.mrx-pdf-viewer__toolbar--nav span{color:var(--neutral-text-tertiary, #71767E)}.mrx-pdf-viewer__toolbar__find-button{position:relative}.mrx-pdf-viewer__findbar{position:absolute;top:47px;left:35px;z-index:100;background:#fff;width:auto;display:flex;padding:var(--spacing-2, 8px);border-radius:var(--sizing-1, 4px);box-shadow:0 1px 4px #3a3a3a4d;max-height:44px;box-sizing:border-box}.mrx-pdf-viewer__findbar:before{position:absolute;content:\"\";background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2212%22%20viewBox%3D%220%200%2024%2012%22%20fill%3D%22none%22%3E%0A%3Cpath%20d%3D%22M24%2012H0L12%200L24%2012Z%22%20fill%3D%22white%22/%3E%0A%3C/svg%3E);background-repeat:no-repeat;top:-12px;left:12px;width:24px;height:12px}.mrx-pdf-viewer__findbar .searchText{position:absolute;top:20px}.mrx-pdf-viewer__findbar ::ng-deep .mrx-input-text.mrx-input-text{max-width:279px;min-width:279px}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar{background-color:var(--neutral-bg-island-default, #F8F9FA);padding:var(--spacing-1, 4px);height:28px!important;box-sizing:border-box;width:100%}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton{margin-top:0;margin-bottom:0;width:var(--sizing-6, 24px);max-width:var(--sizing-6, 24px);height:20px;padding:0;font-family:mrx-icon-font!important;color:var(--neutral-icon-default, #33373C);line-height:1;font-size:var(--body-lg-font-size, 16px);box-sizing:border-box;border-radius:var(--sizing-1, 4px);outline:none;border:1px solid transparent}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton:focus{border:none}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton:hover{background:var(--brand-bg-tertiary-hover, #edf5ff)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton.toggled{border:1px solid var(--brand-bg-primary-default, #2A6AB8);background:var(--brand-bg-secondary-default, #EDF5FF)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton svg{display:none}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton#viewThumbnail:after{content:\"\\e968\"}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton#viewOutline:after{content:\"\\ea1b\"}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton#viewLayers:after{content:\"\\e935\"}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-content #sidebarContent{top:28px!important;background-color:var(--neutral-bg-island-default, #F8F9FA)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView::-webkit-scrollbar,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView::-webkit-scrollbar,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView::-webkit-scrollbar{width:var(--sizing-2, 8px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView::-webkit-scrollbar-thumb,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView::-webkit-scrollbar-thumb,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView::-webkit-scrollbar-thumb{background:var(--neutral-bg-stroke-default, #BFC5CC);border-radius:var(--sizing-1, 4px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView::-webkit-scrollbar-thumb:hover,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView::-webkit-scrollbar-thumb:hover,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView::-webkit-scrollbar-thumb:hover{background:var(--neutral-bg-stroke-default, #BFC5CC)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView{padding:var(--spacing-3, 16px) var(--sizing-10, 40px);width:calc(100% - var(--sizing-20, 80px))}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView .thumbnail{margin:0;border:var(--spacing-1) solid rgba(0,0,0,0);border-radius:0}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView .thumbnail.selected{border:var(--spacing-1, 4px) solid var(--brand-bg-secondary-selected, #BED6F1)!important}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView{padding:var(--spacing-3, 16px);width:calc(100% - var(--spacing-6, 64px))}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem{outline:none}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem:focus,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem:focus,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem:hover,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem:hover{outline:none}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem>a,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem>a{color:var(--neutral-text-primary, #262626);font-size:var(--body-sm-font-size, 12px);line-height:var(--body-lg-bold-font-size, 16px);outline:none;border:none;padding:calc(var(--spacing-1, 4px) / 2) var(--spacing-1, 4px);min-width:calc(100% - var(--sizing-3, 12px))}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem>a:focus,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem>a:focus{outline:none}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem.selected>a,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem.selected>a{border-radius:var(--spacing-1, 4px);border:1px solid var(--brand-bg-primary-default, #2A6AB8)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem input[type=checkbox]:checked,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem input[type=checkbox]:checked{accent-color:var(--brand-bg-primary-default, #2A6AB8)!important}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItemToggler,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItemToggler{font-family:mrx-icon-font!important;color:var(--neutral-icon-default, 33373C);line-height:1;font-size:var(--body-lg-font-size, 16px);box-sizing:border-box;cursor:pointer}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItemToggler:before,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItemToggler:before{content:\"\\e926\"}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItemToggler.treeItemsHidden:before,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItemToggler.treeItemsHidden:before{content:\"\\e925\"}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer #viewerContainer::-webkit-scrollbar{width:var(--sizing-2, 8px);height:var(--sizing-2, 8px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer #viewerContainer::-webkit-scrollbar-thumb{background:var(--neutral-bg-stroke-default, #BFC5CC);border-radius:var(--sizing-1, 4px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer #viewerContainer::-webkit-scrollbar-thumb:hover{background:var(--neutral-bg-stroke-default, #BFC5CC)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer #viewerContainer.grab-to-pan-grab{cursor:default!important}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer .pdfViewer .page{border:none;box-shadow:0 1px 4px #3b43571a;margin-bottom:var(--spacing-2, 8px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer .textLayer .highlight{background-color:var(--brand-bg-primary-default, #2A6AB8)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer .textLayer .highlight.selected{background-color:var(--system-text-positive, #004A1A)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer .textLayer ::selection{background:var(--brand-bg-secondary-hover, #bed6f1)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer .dialogButton{color:var(--neutral-text-primary, #262626);font-size:var(--body-md-font-size, 14px);line-height:20px;background-color:var(--brand-bg-tertiary-default, #FFF);border:var(--brand-bg-tertiary-default, #FFF)!important}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog{box-shadow:0 1px 4px #3a3a3a4d;border:none;padding:var(--spacing-3, 16px);background:var(--brand-bg-tertiary-default, #FFF)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog::backdrop{background:var(--neutral-bg-modal, rgba(38, 38, 38, .25))}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog progress{border-radius:var(--sizing-1, 4px);width:120px;height:var(--sizing-1, 4px);vertical-align:middle}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog progress::-webkit-progress-bar{background-color:var(--neutral-bg-island-default, #F8F9FA);border-radius:var(--sizing-1, 4px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog progress::-webkit-progress-value{background-color:var(--brand-bg-primary-default, #2A6AB8);border-radius:var(--sizing-1, 4px)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i1.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "delayFirstView", "showTextEditor", "showStampEditor", "showDrawEditor", "logLevel", "relativeCoordsOptions", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "useBrowserLocale", "forceUsingLegacyES5", "backgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindCurrentPageOnly", "showFindPageRange", "showFindEntireWord", "showFindEntirePhrase", "showFindMatchDiacritics", "showFindFuzzySearch", "showFindResultsCount", "showFindMessages", "showPagingButtons", "showZoomButtons", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "handTool", "showHandToolButton", "showScrollingButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }, { kind: "component", type: i4.IconButtonComponent, selector: "mrx-icon-button", inputs: ["size", "state", "type", "iconClass", "disabled", "tooltip", "tooltipPosition", "tooltipMaxWidth", "isActive", "customClasses"], outputs: ["mrxClick"] }, { kind: "component", type: i5.InputSelectComponent, selector: "mrx-input-select", inputs: ["fields", "size", "selected", "bindValue", "bindLabel", "customClasses", "wrapperCustomClasses", "multiple", "loading", "addTag", "clearable", "items", "groupBy", "emptyValue", "virtualScroll", "trackByFn", "displayValue", "disabledFromDisplay", "maxLength", "customSearchFn", "isBottomLabel", "search", "required", "disabled", "readonly", "showEmptyFields", "placeholder", "searchable", "loadLabel", "notFoundText", "closeOnSelect", "multiCollapseCount", "dropdownPosition", "invalid", "invalidMessage", "checkInvalid", "label", "labelRequiredHidden", "labelExtraClass", "tooltip", "tooltipHidden", "tooltipVisible", "maxSelectedItems"], outputs: ["changed", "modelChange", "searched"] }, { kind: "component", type: i6.InputNumberComponent, selector: "mrx-input-number", inputs: ["fields", "placeholder", "innerClass", "customClasses", "required", "allowNegative", "size", "separator", "decimalSeparator", "decimals", "isNullableValue", "isAutoCorrectingValue", "invalid", "checkInvalid", "numberType", "invalidMessage", "disabled", "readonly", "minValue", "maxValue"], outputs: ["modelChange"] }, { kind: "component", type: i7.InputTextComponent, selector: "mrx-input-text", inputs: ["fields", "disabled", "required", "readonly", "maxlength", "minlength", "placeholder", "name", "invalid", "invalidMessage", "checkInvalid", "customClasses", "size", "isTooltipValue", "icon", "iconColor", "mask", "maskPrefix", "showMaskTyped", "maskDropSpecialCharacters"], outputs: ["changed", "modelChange"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], animations: [
279
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PdfViewerComponent, selector: "mrx-pdf-viewer", inputs: { showSidebarButton: "showSidebarButton", showHandToolButton: "showHandToolButton", handTool: "handTool", showFindbarButton: "showFindbarButton", showRotateButton: "showRotateButton", showPrintButton: "showPrintButton", showDownloadButton: "showDownloadButton", showExpandButton: "showExpandButton", defaultZoom: "defaultZoom", downloadFileName: "downloadFileName", src: "src" }, host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, providers: [TooltipService], viewQueries: [{ propertyName: "pdfViewer", first: true, predicate: NgxExtendedPdfViewerComponent, descendants: true }, { propertyName: "findMenu", first: true, predicate: ["findMenu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #customToolbar>\r\n <div class=\"mrx-pdf-viewer__toolbar\" id=\"toolbarViewer\">\r\n <div class=\"d-flex g-2\">\r\n <div class=\"d-flex g-1\">\r\n @if (showSidebarButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-burger'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onSidebarViewClick()\"\r\n [ngClass]=\"{'mrx-icon-button--toggled': sidebarVisible}\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C/\u0441\u043A\u0440\u044B\u0442\u044C \u0431\u043E\u043A\u043E\u0432\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showFindbarButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-search'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onSearchClick()\"\r\n [customClasses]=\"'py-1 px-2 mrx-pdf-viewer__find-button'\"\r\n [ngClass]=\"{'mrx-icon-button--toggled': isSearchPanelVisible}\"\r\n [tooltip]=\"'\u041D\u0430\u0439\u0442\u0438 \u0432 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0435'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n }\r\n </div>\r\n\r\n @if (isSearchPanelVisible) {\r\n <div class=\"mrx-pdf-viewer__findbar g-1\" #findMenu>\r\n <mrx-input-text\r\n [customClasses]=\"findState === 1 ? 'mrx-input-error' :''+'searchText'\"\r\n placeholder=\"\u041D\u0430\u0439\u0442\u0438 \u0432 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0435...\"\r\n [ngModel]=\"searchQuery\"\r\n (ngModelChange)=\"onSearch($event)\">\r\n </mrx-input-text>\r\n <div class=\"d-flex\">\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-chevron-left'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'p-1'\"\r\n (mrxClick)=\"findPrevious()\"\r\n ></mrx-icon-button>\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-chevron-right'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'p-1'\"\r\n (mrxClick)=\"findNext()\"\r\n ></mrx-icon-button>\r\n </div>\r\n @if (findState === 0 || findState === 2) {\r\n <div class=\"mrx-pdf-viewer__findbar-result\">\r\n {{ currentFind }} \u0438\u0437 {{ totalFound }} \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439\r\n </div>\r\n }\r\n @if (findState === 1) {\r\n <div class=\"color-negative d-flex align-items-center nowrap\">\u0424\u0440\u0430\u0437\u0430 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430</div>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-pdf-viewer__toolbar--nav\">\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-in-the-end-left'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u0435\u0440\u0432\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n (mrxClick)=\"onPageChange(1)\"\r\n ></mrx-icon-button>\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-chevron-left'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n (mrxClick)=\"onPageChange(page - 1 || 1)\"\r\n ></mrx-icon-button>\r\n <mrx-input-number\r\n [size]=\"'small'\"\r\n [customClasses]=\"'wpx-56'\"\r\n [ngModel]=\"page\"\r\n [numberType]=\"'int'\"\r\n [minValue]=\"1\"\r\n [maxValue]=\"pageCount\"\r\n [isAutoCorrectingValue]=\"true\"\r\n (ngModelChange)=\"onPageChange($event)\"\r\n ></mrx-input-number>\r\n <span class=\"mx-1\">\u0438\u0437 {{ pageCount }}</span>\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-chevron-right'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onNextPage()\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-in-the-end-right'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onLastPage()\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex\">\r\n <mrx-icon-button\r\n (mrxClick)=\"zoomClick(false)\"\r\n [iconClass]=\"'icon-minus'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u0423\u043C\u0435\u043D\u044C\u0448\u0438\u0442\u044C'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n <mrx-icon-button\r\n (mrxClick)=\"zoomClick(true)\"\r\n [iconClass]=\"'icon-plus'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u0423\u0432\u0435\u043B\u0438\u0447\u0438\u0442\u044C'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n <mrx-input-select\r\n [size]=\"'medium'\"\r\n [customClasses]=\"'wpx-156'\"\r\n [items]=\"zoomOptions\"\r\n (ngModelChange)=\"onZoomLevelSelect($event)\"\r\n [ngModel]=\"selectedZoom\"\r\n [clearable]=\"false\">\r\n </mrx-input-select>\r\n </div>\r\n\r\n <div class=\"d-flex\">\r\n @if (showHandToolButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-fc-text'\"\r\n [size]=\"'medium'\"\r\n [ngClass]=\"{'mrx-icon-button--toggled': !handTool}\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onHandToolClick()\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showRotateButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-reload'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onRotate(1)\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u043E \u0447\u0430\u0441\u043E\u0432\u043E\u0439 \u0441\u0442\u0440\u0435\u043B\u043A\u0435'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showRotateButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-return'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n (mrxClick)=\"onRotate(-1)\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u0440\u043E\u0442\u0438\u0432 \u0447\u0430\u0441\u043E\u0432\u043E\u0439 \u0441\u0442\u0440\u0435\u043B\u043A\u0438'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showExpandButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-arrow-expand'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n (mrxClick)=\"onExpandModeClick()\"\r\n [tooltip]=\"'\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043D\u0430 \u0432\u0435\u0441\u044C \u044D\u043A\u0440\u0430\u043D'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showPrintButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-print'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u041F\u0435\u0447\u0430\u0442\u044C'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n (mrxClick)=\"onPrintClick()\"\r\n ></mrx-icon-button>\r\n }\r\n @if (showDownloadButton) {\r\n <mrx-icon-button\r\n [iconClass]=\"'icon-download'\"\r\n [size]=\"'medium'\"\r\n [state]=\"'default'\"\r\n [customClasses]=\"'py-1 px-2'\"\r\n [tooltip]=\"'\u0421\u043A\u0430\u0447\u0430\u0442\u044C'\"\r\n [tooltipPosition]=\"'bottom-start'\"\r\n (mrxClick)=\"onDownloadClick()\"\r\n ></mrx-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ngx-extended-pdf-viewer\r\n #pdfViewer\r\n class=\"mrx-pdf-viewer\"\r\n [src]=\"src\"\r\n [page]=\"page\"\r\n [sidebarVisible]=\"showSidebarButton && sidebarVisible\"\r\n [customToolbar]=\"customToolbar\"\r\n [showSidebarButton]=\"true\"\r\n [showRotateButton]=\"showRotateButton\"\r\n [showDownloadButton]=\"showDownloadButton\"\r\n [ignoreKeys]=\"ignoreKeys\"\r\n [zoom]=\"selectedZoom.value\"\r\n [textLayer]=\"true\"\r\n [handTool]=\"handTool\"\r\n [rotation]=\"rotation\"\r\n (zoomChange)=\"onZoomChange($event)\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pagesLoaded)=\"onPagesLoaded($event)\"\r\n (updateFindState)=\"onFindStateChanged($event)\"\r\n (sidebarVisibleChange)=\"onSidebarVisibleChange($event)\"\r\n (updateFindMatchesCount)=\"onUpdateMatchCase($event)\"\r\n></ngx-extended-pdf-viewer>\r\n", styles: [".mrx-pdf-viewer__toolbar{display:flex;padding:var(--spacing-1, 4px);justify-content:space-between;align-items:center;background:var(--neutral-bg-island-default, #F8F9FA);box-shadow:0 1px 4px #3b43571a;font-family:var(--body-sm-font-family, \"PT Sans\");font-size:var(--body-sm-font-size, 12px);font-style:normal;font-weight:var(--body-extra-sm-font-weight, 400);line-height:var(--body-lg-bold-font-size, 16px)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-select-container{min-height:28px!important;min-width:var(--sizing-10);padding:2px;padding-left:var(--spacing-1);padding-right:var(--spacing-2);background:var(--brand-bg-tertiary-default, #FFF)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-select-container .ng-value-container{padding-left:var(--spacing-1)!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-select-container .ng-value-container .ng-input{padding-left:var(--spacing-1)!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-select-container .ng-value-container .ng-value .ng-value-label{font-size:var(--body-sm-font-size);line-height:var(--body-sm-line-height)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-value .ng-value-label{font-size:var(--body-sm-font-size);line-height:var(--body-sm-line-height)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{min-height:var(--sizing-5);padding:calc(var(--spacing-1) / 2) var(--spacing-2)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-dropdown-panel .ng-dropdown-panel-items .ng-option span{font-size:var(--body-sm-font-size);line-height:var(--body-sm-line-height)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-select .ng-select.mrx-input-select-md .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected:before{content:url(\"data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.3336 4.6665L6.00032 11.9998L2.66699 8.66649' stroke='%23000' stroke-width='0.999998' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A\");right:var(--spacing-2)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-input-number.mrx-input-number.mrx-input-number-sm:not(.mrx-input-number-with-icon) input{padding:var(--spacing-1, 4px) var(--spacing-2, 8px)!important;min-height:28px;border:var(--border-width-default, 1px) solid var(--neutral-bg-stroke-default, #BFC5CC);text-align:right;font-size:var(--body-sm-font-size, 12px)!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon{color:var(--neutral-icon-default)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon.icon-font-20{font-size:20px!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon.icon-font-24{font-size:24px!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button{position:relative;max-width:36px;max-height:28px;box-sizing:border-box}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button:after{content:\"\";position:absolute;left:0;top:0;width:100%;height:100%;border-radius:var(--border-radius-1, 4px);border:1px solid transparent;transition:.2s}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button--toggled .mrx-icon-button{background:var(--brand-bg-secondary-default, #EDF5FF)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button--toggled .mrx-icon-button:after{border-color:var(--brand-bg-primary-default, #2A6AB8)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button:active{background:var(--brand-bg-secondary-default, #EDF5FF)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button:active:after{border-color:var(--brand-bg-primary-default, #2A6AB8)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-icon-button.icon-search.mrx-pdf-viewer__find-button{position:relative}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-pdf-viewer__findbar .mrx-input-text.mrx-input-text-lg input{font-size:var(--body-sm-font-size, 12px)!important}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-pdf-viewer__findbar mrx-input-text{width:100%}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-pdf-viewer__findbar mrx-input-text .mrx-input-text{box-shadow:0 1px 4px #3a3a3a4d;border-radius:var(--border-radius-1)}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-pdf-viewer__findbar mrx-icon-button .mrx-icon-button{max-width:unset;max-height:unset}.mrx-pdf-viewer__toolbar ::ng-deep .mrx-pdf-viewer__findbar-result{display:flex;padding:6px var(--spacing-2, 8px);justify-content:center;align-items:center;gap:10px;border-radius:var(--sizing-1, 4px);background:var(--brand-bg-secondary-default, #EDF5FF);white-space:nowrap}.mrx-pdf-viewer__toolbar--nav{display:flex;align-items:center}.mrx-pdf-viewer__toolbar--nav span{color:var(--neutral-text-tertiary, #71767E)}.mrx-pdf-viewer__toolbar__find-button{position:relative}.mrx-pdf-viewer__findbar{position:absolute;top:47px;left:35px;z-index:100;background:#fff;width:auto;display:flex;padding:var(--spacing-2, 8px);border-radius:var(--sizing-1, 4px);box-shadow:0 1px 4px #3a3a3a4d;max-height:44px;box-sizing:border-box}.mrx-pdf-viewer__findbar:before{position:absolute;content:\"\";background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2212%22%20viewBox%3D%220%200%2024%2012%22%20fill%3D%22none%22%3E%0A%3Cpath%20d%3D%22M24%2012H0L12%200L24%2012Z%22%20fill%3D%22white%22/%3E%0A%3C/svg%3E);background-repeat:no-repeat;top:-12px;left:12px;width:24px;height:12px}.mrx-pdf-viewer__findbar .searchText{position:absolute;top:20px}.mrx-pdf-viewer__findbar ::ng-deep .mrx-input-text.mrx-input-text{max-width:279px;min-width:279px}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar{background-color:var(--neutral-bg-island-default, #F8F9FA);padding:var(--spacing-1, 4px);height:28px!important;box-sizing:border-box;width:100%}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton{margin-top:0;margin-bottom:0;width:var(--sizing-6, 24px);max-width:var(--sizing-6, 24px);height:20px;padding:0;font-family:mrx-icon-font!important;color:var(--neutral-icon-default, #33373C);line-height:1;font-size:var(--body-lg-font-size, 16px);box-sizing:border-box;border-radius:var(--sizing-1, 4px);outline:none;border:1px solid transparent}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton:focus{border:none}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton:hover{background:var(--brand-bg-tertiary-hover, #edf5ff)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton.toggled{border:1px solid var(--brand-bg-primary-default, #2A6AB8);background:var(--brand-bg-secondary-default, #EDF5FF)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton svg{display:none}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton#viewThumbnail:after{content:\"\\e968\"}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton#viewOutline:after{content:\"\\ea1b\"}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-toolbar #toolbarSidebar button.toolbarButton#viewLayers:after{content:\"\\e935\"}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer pdf-sidebar pdf-sidebar-content #sidebarContent{top:28px!important;background-color:var(--neutral-bg-island-default, #F8F9FA)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView::-webkit-scrollbar,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView::-webkit-scrollbar,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView::-webkit-scrollbar{width:var(--sizing-2, 8px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView::-webkit-scrollbar-thumb,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView::-webkit-scrollbar-thumb,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView::-webkit-scrollbar-thumb{background:var(--neutral-bg-stroke-default, #BFC5CC);border-radius:var(--sizing-1, 4px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView::-webkit-scrollbar-thumb:hover,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView::-webkit-scrollbar-thumb:hover,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView::-webkit-scrollbar-thumb:hover{background:var(--neutral-bg-stroke-default, #BFC5CC)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView{padding:var(--spacing-3, 16px) var(--sizing-10, 40px);width:calc(100% - var(--sizing-20, 80px))}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView .thumbnail{margin:0;border:var(--spacing-1) solid rgba(0,0,0,0);border-radius:0}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #thumbnailView .thumbnail.selected{border:var(--spacing-1, 4px) solid var(--brand-bg-secondary-selected, #BED6F1)!important}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView{padding:var(--spacing-3, 16px);width:calc(100% - var(--spacing-6, 64px))}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem{outline:none}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem:focus,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem:focus,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem:hover,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem:hover{outline:none}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem>a,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem>a{color:var(--neutral-text-primary, #262626);font-size:var(--body-sm-font-size, 12px);line-height:var(--body-lg-bold-font-size, 16px);outline:none;border:none;padding:calc(var(--spacing-1, 4px) / 2) var(--spacing-1, 4px);min-width:calc(100% - var(--sizing-3, 12px))}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem>a:focus,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem>a:focus{outline:none}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem.selected>a,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem.selected>a{border-radius:var(--spacing-1, 4px);border:1px solid var(--brand-bg-primary-default, #2A6AB8)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItem input[type=checkbox]:checked,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItem input[type=checkbox]:checked{accent-color:var(--brand-bg-primary-default, #2A6AB8)!important}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItemToggler,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItemToggler{font-family:mrx-icon-font!important;color:var(--neutral-icon-default, 33373C);line-height:1;font-size:var(--body-lg-font-size, 16px);box-sizing:border-box;cursor:pointer}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItemToggler:before,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItemToggler:before{content:\"\\e926\"}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #layersView .treeItemToggler.treeItemsHidden:before,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer.mrx-pdf-viewer .html #outlineView.treeWithDeepNesting .treeItemToggler.treeItemsHidden:before{content:\"\\e925\"}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer #viewerContainer::-webkit-scrollbar{width:var(--sizing-2, 8px);height:var(--sizing-2, 8px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer #viewerContainer::-webkit-scrollbar-thumb{background:var(--neutral-bg-stroke-default, #BFC5CC);border-radius:var(--sizing-1, 4px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer #viewerContainer::-webkit-scrollbar-thumb:hover{background:var(--neutral-bg-stroke-default, #BFC5CC)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer #viewerContainer.grab-to-pan-grab{cursor:default!important}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer .pdfViewer .page{border:none;box-shadow:0 1px 4px #3b43571a;margin-bottom:var(--spacing-2, 8px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer .textLayer .highlight{background-color:var(--brand-bg-primary-default, #2A6AB8)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer .textLayer .highlight.selected{background-color:var(--system-text-positive, #004A1A)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer .textLayer ::selection{background:var(--brand-bg-secondary-hover, #bed6f1)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog,::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer .dialogButton{color:var(--neutral-text-primary, #262626);font-size:var(--body-md-font-size, 14px);line-height:20px;background-color:var(--brand-bg-tertiary-default, #FFF);border:var(--brand-bg-tertiary-default, #FFF)!important}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog{box-shadow:0 1px 4px #3a3a3a4d;border:none;padding:var(--spacing-3, 16px);background:var(--brand-bg-tertiary-default, #FFF)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog::backdrop{background:var(--neutral-bg-modal, rgba(38, 38, 38, .25))}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog progress{border-radius:var(--sizing-1, 4px);width:120px;height:var(--sizing-1, 4px);vertical-align:middle}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog progress::-webkit-progress-bar{background-color:var(--neutral-bg-island-default, #F8F9FA);border-radius:var(--sizing-1, 4px)}::ng-deep mrx-pdf-viewer ngx-extended-pdf-viewer dialog progress::-webkit-progress-value{background-color:var(--brand-bg-primary-default, #2A6AB8);border-radius:var(--sizing-1, 4px)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i1.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "delayFirstView", "showTextEditor", "showStampEditor", "showDrawEditor", "logLevel", "relativeCoordsOptions", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "useBrowserLocale", "forceUsingLegacyES5", "backgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindCurrentPageOnly", "showFindPageRange", "showFindEntireWord", "showFindEntirePhrase", "showFindMatchDiacritics", "showFindFuzzySearch", "showFindResultsCount", "showFindMessages", "showPagingButtons", "showZoomButtons", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "handTool", "showHandToolButton", "showScrollingButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }, { kind: "component", type: i4.IconButtonComponent, selector: "mrx-icon-button", inputs: ["size", "state", "type", "iconClass", "disabled", "tooltip", "tooltipPosition", "tooltipMaxWidth", "isActive", "customClasses"], outputs: ["mrxClick"] }, { kind: "component", type: i5.InputSelectComponent, selector: "mrx-input-select", inputs: ["fields", "size", "selected", "bindValue", "bindLabel", "customClasses", "wrapperCustomClasses", "multiple", "loading", "addTag", "clearable", "items", "groupBy", "emptyValue", "virtualScroll", "trackByFn", "displayValue", "disabledFromDisplay", "maxLength", "customSearchFn", "isBottomLabel", "search", "required", "disabled", "readonly", "showEmptyFields", "placeholder", "searchable", "loadLabel", "notFoundText", "closeOnSelect", "multiCollapseCount", "dropdownPosition", "invalid", "invalidMessage", "checkInvalid", "label", "labelRequiredHidden", "labelExtraClass", "tooltip", "tooltipHidden", "tooltipVisible", "maxSelectedItems"], outputs: ["changed", "modelChange", "searched"] }, { kind: "component", type: i6.InputNumberComponent, selector: "mrx-input-number", inputs: ["fields", "placeholder", "innerClass", "customClasses", "required", "allowNegative", "size", "separator", "decimalSeparator", "decimals", "isNullableValue", "isAutoCorrectingValue", "invalid", "checkInvalid", "numberType", "invalidMessage", "disabled", "readonly", "minValue", "maxValue"], outputs: ["modelChange", "modelChangeBlur"] }, { kind: "component", type: i7.InputTextComponent, selector: "mrx-input-text", inputs: ["fields", "disabled", "required", "readonly", "maxlength", "minlength", "placeholder", "name", "invalid", "invalidMessage", "checkInvalid", "customClasses", "size", "isTooltipValue", "icon", "iconColor", "mask", "maskPrefix", "showMaskTyped", "maskDropSpecialCharacters"], outputs: ["changed", "modelChange"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], animations: [
280
280
  trigger('openClose', [
281
281
  state('open', style({ height: '*', padding: '*', 'margin-bottom': '8px' })),
282
282
  state('closed', style({ height: 0, padding: 0, 'margin-bottom': 0 })),
@@ -327,4 +327,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
327
327
  type: HostListener,
328
328
  args: ['document:keydown', ['$event']]
329
329
  }] } });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXZpZXdlci9wZGYtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9wZGYtdmlld2VyL3BkZi12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFLTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUVMLFNBQVMsRUFDVCw2QkFBNkIsRUFHOUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQWMsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBc0I3RSxNQUFNLE9BQU8sa0JBQWtCO0lBaUVuQjtJQUNBO0lBQ0E7SUFDQTtJQW5FSCxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLFNBQVMsR0FBYyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ3pDLFVBQVUsR0FBVyxDQUFDLENBQUM7SUFDdkIsV0FBVyxHQUFXLENBQUMsQ0FBQztJQUN4QixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1Qsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQzdCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdEIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFlBQVksR0FBOEMsRUFBQyxLQUFLLEVBQUUsTUFB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LEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUMzRDs0QkFDRCxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzs0QkFDbkUsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7NEJBQ3BELFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO3lCQUNyRCxDQUFDO3FCQUNILGFBQ1UsQ0FBQyxjQUFjLENBQUMsbUJBQ1YsdUJBQXVCLENBQUMsTUFBTTtpTEE0QnRDLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRW9DLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsNkJBQTZCO2dCQUNqQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBR3JCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBUb29sdGlwU2VydmljZSB9IGZyb20gJy4uL3Rvb2x0aXAvc2VydmljZXMvdG9vbHRpcC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBGaW5kUmVzdWx0TWF0Y2hlc0NvdW50LFxyXG4gIEZpbmRTdGF0ZSxcclxuICBOZ3hFeHRlbmRlZFBkZlZpZXdlckNvbXBvbmVudCxcclxuICBOZ3hFeHRlbmRlZFBkZlZpZXdlclNlcnZpY2UsXHJcbiAgUGFnZXNMb2FkZWRFdmVudFxyXG59IGZyb20gJ25neC1leHRlbmRlZC1wZGYtdmlld2VyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbnR5cGUgUm90YXRpb25UeXBlID0gMCB8IDkwIHwgMTgwIHwgMjcwO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtcGRmLXZpZXdlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BkZi12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BkZi12aWV3ZXIuY29tcG9uZW50Lmxlc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdvcGVuQ2xvc2UnLCBbXHJcbiAgICAgIHN0YXRlKFxyXG4gICAgICAgICdvcGVuJyxcclxuICAgICAgICBzdHlsZSh7aGVpZ2h0OiAnKicsIHBhZGRpbmc6ICcqJywgJ21hcmdpbi1ib3R0b20nOiAnOHB4J30pXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXRlKCdjbG9zZWQnLCBzdHlsZSh7aGVpZ2h0OiAwLCBwYWRkaW5nOiAwLCAnbWFyZ2luLWJvdHRvbSc6IDB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2VkJywgW2FuaW1hdGUoJzAuNXMgZWFzZScpXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW2FuaW1hdGUoJzAuNXMgZWFzZScpXSksXHJcbiAgICBdKSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1Rvb2x0aXBTZXJ2aWNlXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBkZlZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBwdWJsaWMgc2VhcmNoUXVlcnkgPSAnJztcclxuICBwdWJsaWMgZmluZFN0YXRlOiBGaW5kU3RhdGUgPSBGaW5kU3RhdGUuUEVORElORztcclxuICBwdWJsaWMgdG90YWxGb3VuZDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgY3VycmVudEZpbmQ6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIHBhZ2UgPSAxO1xyXG4gIHB1YmxpYyBpc1NlYXJjaFBhbmVsVmlzaWJsZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaWRlYmFyVmlzaWJsZSA9IHRydWU7XHJcbiAgcHVibGljIHBhZ2VDb3VudCA9IDE7XHJcbiAgcHVibGljIHNlbGVjdGVkWm9vbTogeyB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBsYWJlbDogc3RyaW5nIH0gPSB7dmFsdWU6ICdhdXRvJywgbGFiZWw6ICfQkNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCd9O1xyXG4gIHB1YmxpYyB6b29tT3B0aW9ucyA9IFtcclxuICAgIHt2YWx1ZTogJ2F1dG8nLCBsYWJlbDogJ9CQ0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4J30sXHJcbiAgICB7dmFsdWU6ICdwYWdlLWFjdHVhbCcsIGxhYmVsOiAn0KDQtdCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAnfSxcclxuICAgIHt2YWx1ZTogJ3BnZS1maXQnLCBsYWJlbDogJ9Cf0L4g0YDQsNC30LzQtdGA0YMg0YHRgtGA0LDQvdC40YbRiyd9LFxyXG4gICAge3ZhbHVlOiAncGFnZS13aWR0aCcsIGxhYmVsOiAn0J/QviDRiNC40YDQuNC90LUg0YHRgtGA0LDQvdC40YbRiyd9LFxyXG4gICAge3ZhbHVlOiA1MCwgbGFiZWw6ICc1MCUnfSxcclxuICAgIHt2YWx1ZTogMTAwLCBsYWJlbDogJzEwMCUnfSxcclxuICAgIHt2YWx1ZTogMTI1LCBsYWJlbDogJzEyNSUnfSxcclxuICAgIHt2YWx1ZTogMTUwLCBsYWJlbDogJzE1MCUnfSxcclxuICAgIHt2YWx1ZTogMjAwLCBsYWJlbDogJzIwMCUnfSxcclxuICAgIHt2YWx1ZTogMzAwLCBsYWJlbDogJzMwMCUnfSxcclxuICAgIHt2YWx1ZTogNDAwLCBsYWJlbDogJzQwMCUnfSxcclxuICBdO1xyXG5cclxuICBwdWJsaWMgcm90YXRpb246IFJvdGF0aW9uVHlwZSA9IDA7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dTaWRlYmFyQnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93SGFuZFRvb2xCdXR0b24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBoYW5kVG9vbCA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0ZpbmRiYXJCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dSb3RhdGVCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dQcmludEJ1dHRvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0Rvd25sb2FkQnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RXhwYW5kQnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkZWZhdWx0Wm9vbTogbnVtYmVyIHwgJ2F1dG8nIHwgJ3BhZ2UtYWN0dWFsJyB8ICdwZ2UtZml0JyB8ICdwYWdlLXdpZHRoJyA9ICdhdXRvJztcclxuICBASW5wdXQoKSBkb3dubG9hZEZpbGVOYW1lID0gJyc7XHJcbiAgQElucHV0KCkgc3JjID0gJyc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoTmd4RXh0ZW5kZWRQZGZWaWV3ZXJDb21wb25lbnQpIHBkZlZpZXdlciE6IE5neEV4dGVuZGVkUGRmVmlld2VyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbmRNZW51JykgZmluZE1lbnU6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAncCcgJiYgIXRoaXMuc2hvd1ByaW50QnV0dG9uKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaWdub3JlS2V5cygpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBpZ25vcmVkS2V5cyA9IFtdO1xyXG5cclxuICAgIGlmICghdGhpcy5zaG93Um90YXRlQnV0dG9uKSB7XHJcbiAgICAgIGlnbm9yZWRLZXlzLnB1c2goJ1InLCAnU2hpZnQrUicpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnNob3dEb3dubG9hZEJ1dHRvbikge1xyXG4gICAgICBpZ25vcmVkS2V5cy5wdXNoKCdDVFJMK1MnKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zaG93U2lkZWJhckJ1dHRvbikge1xyXG4gICAgICBpZ25vcmVkS2V5cy5wdXNoKCdGNCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpZ25vcmVkS2V5cztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfcGRmVmlld2VyU2VydmljZTogTmd4RXh0ZW5kZWRQZGZWaWV3ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgX3JlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50XHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snZGVmYXVsdFpvb20nXSAmJiBjaGFuZ2VzWydkZWZhdWx0Wm9vbSddLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzWydkZWZhdWx0Wm9vbSddLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgdGhpcy5pbml0Wm9vbSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdFpvb20oKSB7XHJcbiAgICBjb25zdCBleGlzdGluZ1ZhbHVlID0gdGhpcy56b29tT3B0aW9ucy5maW5kKHggPT4geC52YWx1ZSA9PT0gdGhpcy5kZWZhdWx0Wm9vbSk7XHJcblxyXG4gICAgaWYgKGV4aXN0aW5nVmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFpvb20gPSB7Li4uZXhpc3RpbmdWYWx1ZX07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHt2YWx1ZTogdGhpcy5kZWZhdWx0Wm9vbSwgbGFiZWw6IGAke3RoaXMuZGVmYXVsdFpvb219JWB9O1xyXG4gIH1cclxuXHJcbiAgaW5pdFNlYXJjaCgpIHtcclxuICAgIGlmICh0aGlzLnNob3dGaW5kYmFyQnV0dG9uKSB7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdmJyAmJiBldmVudC5jdHJsS2V5KSB7XHJcbiAgICAgICAgICB0aGlzLmlzU2VhcmNoUGFuZWxWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRTZWFyY2goKTtcclxuICAgIHRoaXMuaW5pdFpvb20oKTtcclxuXHJcbiAgICB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdjbGljaycsIChldmVudDogRXZlbnQpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNTZWFyY2hQYW5lbFZpc2libGUpIHtcclxuICAgICAgICBjb25zdCBpc0luTWVudSA9IHRoaXMuZmluZE1lbnU/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICAgICAgfHwgKGV2ZW50LnRhcmdldCBhcyBhbnkpLmlkID09PSAnZmluZE5leHQnXHJcbiAgICAgICAgICB8fCAoZXZlbnQudGFyZ2V0IGFzIGFueSkuaWQgPT09ICdmaW5kUHJldmlvdXMnO1xyXG5cclxuICAgICAgICBjb25zdCBpc0ZpbmRCdXR0b24gPSAoZXZlbnQudGFyZ2V0IGFzIGFueSkuY2xhc3NMaXN0LmNvbnRhaW5zKCdtcngtcGRmLXZpZXdlcl9fZmluZC1idXR0b24nKTtcclxuXHJcbiAgICAgICAgaWYgKCFpc0luTWVudSAmJiAhaXNGaW5kQnV0dG9uKSB7XHJcbiAgICAgICAgICB0aGlzLmlzU2VhcmNoUGFuZWxWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBhZ2UgPSBldmVudCB8fCAxO1xyXG4gIH1cclxuXHJcbiAgb25OZXh0UGFnZSgpIHtcclxuICAgIGlmICh0aGlzLnBhZ2UgPCB0aGlzLnBhZ2VDb3VudCkge1xyXG4gICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25MYXN0UGFnZSgpIHtcclxuICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZUNvdW50O1xyXG4gIH1cclxuXHJcbiAgb25QYWdlc0xvYWRlZCgkZXZlbnQ6IFBhZ2VzTG9hZGVkRXZlbnQpIHtcclxuICAgIGNvbnN0IHZpZXdPdXRsaW5lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3ZpZXdPdXRsaW5lJyk7XHJcbiAgICBjb25zdCB2aWV3VGh1bWJuYWlsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3ZpZXdUaHVtYm5haWwnKTtcclxuXHJcbiAgICB0aGlzLnBhZ2VDb3VudCA9ICRldmVudC5wYWdlc0NvdW50O1xyXG5cclxuICAgIGlmICh2aWV3T3V0bGluZSkge1xyXG4gICAgICAodmlld091dGxpbmUgYXMgYW55KS50aXRsZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHZpZXdUaHVtYm5haWwsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgIGlmICh2aWV3VGh1bWJuYWlsKSB7XHJcblxyXG4gICAgICAodmlld1RodW1ibmFpbCBhcyBhbnkpLnRpdGxlID0gJ3Rlc3QnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgem9vbUNsaWNrKGluY3JlYXNlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuc2VsZWN0ZWRab29tLnZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHt2YWx1ZTogMTAwLCBsYWJlbDogJzEwMCUnfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gaW5jcmVhc2UgPyB0aGlzLnNlbGVjdGVkWm9vbS52YWx1ZSArPSAyMCA6IHRoaXMuc2VsZWN0ZWRab29tLnZhbHVlIC09IDIwO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRab29tID0ge3ZhbHVlOiBuZXdWYWx1ZSwgbGFiZWw6IGAke25ld1ZhbHVlfSVgfTtcclxuICB9XHJcblxyXG4gIG9uWm9vbUxldmVsU2VsZWN0KGl0ZW06IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFpvb20gPSBpdGVtO1xyXG4gIH1cclxuXHJcbiAgb25ab29tQ2hhbmdlKGV2ZW50OiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgIGNvbnN0IGV4aXN0aW5nT3B0aW9uID0gdGhpcy56b29tT3B0aW9ucy5maW5kKHggPT4geC52YWx1ZSA9PT0gZXZlbnQpO1xyXG5cclxuICAgIGlmIChleGlzdGluZ09wdGlvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHsuLi5leGlzdGluZ09wdGlvbn07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaXhlZFZhbHVlID0gTWF0aC5yb3VuZChOdW1iZXIoZXZlbnQpKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHt2YWx1ZTogZml4ZWRWYWx1ZSwgbGFiZWw6IGAke2ZpeGVkVmFsdWV9JWB9O1xyXG4gIH1cclxuXHJcbiAgb25Sb3RhdGUoZGlyZWN0aW9uOiBudW1iZXIpIHtcclxuICAgIGxldCBkYXRhID0gdGhpcy5yb3RhdGlvbjtcclxuXHJcbiAgICBpZiAoZGlyZWN0aW9uIDwgMCkge1xyXG4gICAgICBkYXRhIC09IDkwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGF0YSArPSA5MDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0YSA+PSAzNjApIHtcclxuICAgICAgdGhpcy5yb3RhdGlvbiA9IGRhdGEgLSAzNjAgYXMgUm90YXRpb25UeXBlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEgPCAwKSB7XHJcbiAgICAgIHRoaXMucm90YXRpb24gPSAzNjAgKyBkYXRhIGFzIFJvdGF0aW9uVHlwZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm90YXRpb24gPSBkYXRhIGFzIFJvdGF0aW9uVHlwZTtcclxuICB9XHJcblxyXG4gIG9uUHJpbnRDbGljaygpIHtcclxuICAgIHRoaXMuX3BkZlZpZXdlclNlcnZpY2UucHJpbnQoKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgcHJpbnREaWFsb2cgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2cjcHJpbnRTZXJ2aWNlRGlhbG9nJyk7XHJcbiAgICAgIGNvbnN0IHByb2dyZXNzVGV4dCA9IHByaW50RGlhbG9nPy5xdWVyeVNlbGVjdG9yKCcucm93IHNwYW4nKTtcclxuICAgICAgY29uc3QgY2FuY2VsQnV0dG9uID0gcHJpbnREaWFsb2c/LnF1ZXJ5U2VsZWN0b3IoJyNwcmludENhbmNlbCBzcGFuJyk7XHJcblxyXG4gICAgICBpZiAocHJvZ3Jlc3NUZXh0KSB7XHJcbiAgICAgICAgcHJvZ3Jlc3NUZXh0LnRleHRDb250ZW50ID0gJ9Cf0L7QtNCz0L7RgtC+0LLQutCwINC00L7QutGD0LzQtdC90YLQsCDQuiDQv9C10YfQsNGC0LguLi4nO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY2FuY2VsQnV0dG9uKSB7XHJcbiAgICAgICAgY2FuY2VsQnV0dG9uLnRleHRDb250ZW50ID0gJ9Ce0YLQvNC10L3QsCc7XHJcbiAgICAgIH1cclxuICAgIH0sIDEpO1xyXG4gIH1cclxuXHJcbiAgb25TaWRlYmFyVmlld0NsaWNrKCkge1xyXG4gICAgdGhpcy5zaWRlYmFyVmlzaWJsZSA9ICF0aGlzLnNpZGViYXJWaXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgb25FeHBhbmRNb2RlQ2xpY2soKSB7XHJcbiAgICBjb25zdCBwZGZWaWV3ZXJBcHBsaWNhdGlvbiA9ICh3aW5kb3cgYXMgYW55KS5QREZWaWV3ZXJBcHBsaWNhdGlvbjtcclxuXHJcbiAgICBpZiAocGRmVmlld2VyQXBwbGljYXRpb24/LnBkZlZpZXdlcikge1xyXG4gICAgICBwZGZWaWV3ZXJBcHBsaWNhdGlvbi5yZXF1ZXN0UHJlc2VudGF0aW9uTW9kZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDbGljaygpIHtcclxuICAgIHRoaXMuaXNTZWFyY2hQYW5lbFZpc2libGUgPSAhdGhpcy5pc1NlYXJjaFBhbmVsVmlzaWJsZTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKCRldmVudDogc3RyaW5nKSB7XHJcbiAgICBpZiAoJGV2ZW50KSB7XHJcbiAgICAgIHRoaXMuX3BkZlZpZXdlclNlcnZpY2UuZmluZCgkZXZlbnQsIHtoaWdobGlnaHRBbGw6IHRydWV9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcGRmVmlld2VyU2VydmljZS5maW5kKCcnLCB7fSk7XHJcbiAgfVxyXG5cclxuICBmaW5kTmV4dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3BkZlZpZXdlclNlcnZpY2UuZmluZE5leHQoKTtcclxuICB9XHJcblxyXG4gIGZpbmRQcmV2aW91cygpOiB2b2lkIHtcclxuICAgIHRoaXMuX3BkZlZpZXdlclNlcnZpY2UuZmluZFByZXZpb3VzKCk7XHJcbiAgfVxyXG5cclxuICBvblVwZGF0ZU1hdGNoQ2FzZShldmVudDogRmluZFJlc3VsdE1hdGNoZXNDb3VudCkge1xyXG4gICAgdGhpcy50b3RhbEZvdW5kID0gZXZlbnQudG90YWw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaW5kID0gZXZlbnQuY3VycmVudDtcclxuICAgIHRoaXMuc2VhcmNoUXVlcnkgPSBldmVudC5xdWVyeVxyXG4gIH1cclxuXHJcbiAgb25GaW5kU3RhdGVDaGFuZ2VkKGV2ZW50OiBGaW5kU3RhdGUpIHtcclxuICAgIHRoaXMuZmluZFN0YXRlID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBvblNpZGViYXJWaXNpYmxlQ2hhbmdlKGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNpZGViYXJWaXNpYmxlID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBvbkhhbmRUb29sQ2xpY2soKSB7XHJcbiAgICB0aGlzLmhhbmRUb29sID0gIXRoaXMuaGFuZFRvb2w7XHJcbiAgfVxyXG5cclxuICBvbkRvd25sb2FkQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5kb3dubG9hZEZpbGVOYW1lKSB7XHJcbiAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSh0aGlzLmRvd25sb2FkRmlsZU5hbWUpLnRoZW4oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuXHJcbiAgICAgIGhlYWRlcnMuc2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ9Cf0LXRh9Cw0YLQvdCw0Y8g0YTQvtGA0LzQsCDQt9Cw0Y/QstC60Lgg0YHQviDRiNGC0LDQvNC/0L7QvC5wZGYnKTtcclxuXHJcbiAgICAgIHRoaXMuX2h0dHAuZ2V0KHRoaXMuc3JjLCB7cmVzcG9uc2VUeXBlOiAnYmxvYicsIG9ic2VydmU6ICdyZXNwb25zZScsfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogSHR0cFJlc3BvbnNlPEJsb2I+KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb250ZW50RGlzcG9zaXRpb24gPSByZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1EaXNwb3NpdGlvbicpO1xyXG5cclxuICAgICAgICAgIGlmICghY29udGVudERpc3Bvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSgnZG9jdW1lbnQucGRmJykudGhlbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3QgZW5jb2RpbmdGaWxlTmFtZSA9IGNvbnRlbnREaXNwb3NpdGlvbi5tYXRjaCgvZmlsZW5hbWVcXCpcXHMqPVxccyooW147XSspL2kpO1xyXG5cclxuICAgICAgICAgIGlmIChlbmNvZGluZ0ZpbGVOYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gZW5jb2RpbmdGaWxlTmFtZVsxXS5zcGxpdCgnXFwnXFwnJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZW5jb2RpbmcgPSBwYXJ0c1swXS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGFydHNbMV07XHJcblxyXG4gICAgICAgICAgICAgIGlmIChlbmNvZGluZyA9PT0gJ3V0Zi04Jykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZG93bmxvYWRGaWxlKGRlY29kZVVSSUNvbXBvbmVudChmaWxlTmFtZSkpLnRoZW4oKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBzaW1wbGVGaWxlTmFtZSA9IGNvbnRlbnREaXNwb3NpdGlvbi5tYXRjaCgvZmlsZW5hbWVcXHMqPVxccypbXCInXT8oW147XCInXSspL2kpO1xyXG5cclxuICAgICAgICAgIGlmIChzaW1wbGVGaWxlTmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9kb3dubG9hZEZpbGUoc2ltcGxlRmlsZU5hbWVbMV0pLnRoZW4oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSgnZG9jdW1lbnQucGRmJykudGhlbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZG93bmxvYWRGaWxlKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJsb2I6IEJsb2IgPSBhd2FpdCB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLmdldEN1cnJlbnREb2N1bWVudEFzQmxvYigpO1xyXG4gICAgY29uc3Qgb2JqZWN0VXJsOiBzdHJpbmcgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgY29uc3QgYTogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XHJcblxyXG4gICAgYS5ocmVmID0gb2JqZWN0VXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XHJcblxyXG4gICAgYS5jbGljaygpO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcblxyXG4gICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI2N1c3RvbVRvb2xiYXI+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX190b29sYmFyXCIgaWQ9XCJ0b29sYmFyVmlld2VyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGctMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGctMVwiPlxyXG4gICAgICAgIEBpZiAoc2hvd1NpZGViYXJCdXR0b24pIHtcclxuICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1idXJnZXInXCJcclxuICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgKG1yeENsaWNrKT1cIm9uU2lkZWJhclZpZXdDbGljaygpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtcngtaWNvbi1idXR0b24tLXRvZ2dsZWQnOiBzaWRlYmFyVmlzaWJsZX1cIlxyXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C+0LrQsNC30LDRgtGML9GB0LrRgNGL0YLRjCDQsdC+0LrQvtCy0YPRjiDQv9Cw0L3QtdC70YwnXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoc2hvd0ZpbmRiYXJCdXR0b24pIHtcclxuICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1zZWFyY2gnXCJcclxuICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgKG1yeENsaWNrKT1cIm9uU2VhcmNoQ2xpY2soKVwiXHJcbiAgICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTIgbXJ4LXBkZi12aWV3ZXJfX2ZpbmQtYnV0dG9uJ1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbXJ4LWljb24tYnV0dG9uLS10b2dnbGVkJzogaXNTZWFyY2hQYW5lbFZpc2libGV9XCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cd0LDQudGC0Lgg0LIg0LTQvtC60YPQvNC10L3RgtC1J1wiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICBAaWYgKGlzU2VhcmNoUGFuZWxWaXNpYmxlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX19maW5kYmFyIGctMVwiICNmaW5kTWVudT5cclxuICAgICAgICAgIDxtcngtaW5wdXQtdGV4dFxyXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCJmaW5kU3RhdGUgPT09IDEgPyAnbXJ4LWlucHV0LWVycm9yJyA6JycrJ3NlYXJjaFRleHQnXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLQndCw0LnRgtC4INCyINC00L7QutGD0LzQtdC90YLQtS4uLlwiXHJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFF1ZXJ5XCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9tcngtaW5wdXQtdGV4dD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tY2hldnJvbi1sZWZ0J1wiXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidwLTEnXCJcclxuICAgICAgICAgICAgICAobXJ4Q2xpY2spPVwiZmluZFByZXZpb3VzKClcIlxyXG4gICAgICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBbaWNvbkNsYXNzXT1cIidpY29uLWNoZXZyb24tcmlnaHQnXCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3AtMSdcIlxyXG4gICAgICAgICAgICAgIChtcnhDbGljayk9XCJmaW5kTmV4dCgpXCJcclxuICAgICAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICBAaWYgKGZpbmRTdGF0ZSA9PT0gMCB8fCBmaW5kU3RhdGUgPT09IDIpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX19maW5kYmFyLXJlc3VsdFwiPlxyXG4gICAgICAgICAgICAgIHt7IGN1cnJlbnRGaW5kIH19INC40Lcge3sgdG90YWxGb3VuZCB9fSDRgdC+0LLQv9Cw0LTQtdC90LjQuVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoZmluZFN0YXRlID09PSAxKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvci1uZWdhdGl2ZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG5vd3JhcFwiPtCk0YDQsNC30LAg0L3QtSDQvdCw0LnQtNC10L3QsDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXBkZi12aWV3ZXJfX3Rvb2xiYXItLW5hdlwiPlxyXG4gICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24taW4tdGhlLWVuZC1sZWZ0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C10YDQstCw0Y8g0YHRgtGA0LDQvdC40YbQsCdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25QYWdlQ2hhbmdlKDEpXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1jaGV2cm9uLWxlZnQnXCJcclxuICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0YDQtdC00YvQtNGD0YnQsNGPINGB0YLRgNCw0L3QuNGG0LAnXCJcclxuICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uUGFnZUNoYW5nZShwYWdlIC0gMSB8fCAxKVwiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgIDxtcngtaW5wdXQtbnVtYmVyXHJcbiAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIid3cHgtNTYnXCJcclxuICAgICAgICAgIFtuZ01vZGVsXT1cInBhZ2VcIlxyXG4gICAgICAgICAgW251bWJlclR5cGVdPVwiJ2ludCdcIlxyXG4gICAgICAgICAgW21pblZhbHVlXT1cIjFcIlxyXG4gICAgICAgICAgW21heFZhbHVlXT1cInBhZ2VDb3VudFwiXHJcbiAgICAgICAgICBbaXNBdXRvQ29ycmVjdGluZ1ZhbHVlXT1cInRydWVcIlxyXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgID48L21yeC1pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+0LjQtyB7eyBwYWdlQ291bnQgfX08L3NwYW4+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1jaGV2cm9uLXJpZ2h0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbk5leHRQYWdlKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Ch0LvQtdC00YPRjtGJ0LDRjyDRgdGC0YDQsNC90LjRhtCwJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1pbi10aGUtZW5kLXJpZ2h0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbkxhc3RQYWdlKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0L7RgdC70LXQtNC90Y/RjyDRgdGC0YDQsNC90LjRhtCwJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgKG1yeENsaWNrKT1cInpvb21DbGljayhmYWxzZSlcIlxyXG4gICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tbWludXMnXCJcclxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgIFt0b29sdGlwXT1cIifQo9C80LXQvdGM0YjQuNGC0YwnXCJcclxuICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgKG1yeENsaWNrKT1cInpvb21DbGljayh0cnVlKVwiXHJcbiAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1wbHVzJ1wiXHJcbiAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICBbdG9vbHRpcF09XCIn0KPQstC10LvQuNGH0LjRgtGMJ1wiXHJcbiAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgID48L21yeC1pY29uLWJ1dHRvbj5cclxuICAgICAgPG1yeC1pbnB1dC1zZWxlY3RcclxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3dweC0xNTYnXCJcclxuICAgICAgICBbaXRlbXNdPVwiem9vbU9wdGlvbnNcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uWm9vbUxldmVsU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkWm9vbVwiXHJcbiAgICAgICAgW2NsZWFyYWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICA8L21yeC1pbnB1dC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgIEBpZiAoc2hvd0hhbmRUb29sQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1mYy10ZXh0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J21yeC1pY29uLWJ1dHRvbi0tdG9nZ2xlZCc6ICFoYW5kVG9vbH1cIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25IYW5kVG9vbENsaWNrKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgID48L21yeC1pY29uLWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHNob3dSb3RhdGVCdXR0b24pIHtcclxuICAgICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBbaWNvbkNsYXNzXT1cIidpY29uLXJlbG9hZCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25Sb3RhdGUoMSlcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0L7QstC10YDQvdGD0YLRjCDQv9C+INGH0LDRgdC+0LLQvtC5INGB0YLRgNC10LvQutC1J1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChzaG93Um90YXRlQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1yZXR1cm4nXCJcclxuICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uUm90YXRlKC0xKVwiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0J/QvtCy0LXRgNC90YPRgtGMINC/0YDQvtGC0LjQsiDRh9Cw0YHQvtCy0L7QuSDRgdGC0YDQtdC70LrQuCdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd0V4cGFuZEJ1dHRvbikge1xyXG4gICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tYXJyb3ctZXhwYW5kJ1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbkV4cGFuZE1vZGVDbGljaygpXCJcclxuICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C+0LrQsNC30LDRgtGMINC90LAg0LLQtdGB0Ywg0Y3QutGA0LDQvSdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd1ByaW50QnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1wcmludCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0J/QtdGH0LDRgtGMJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvblByaW50Q2xpY2soKVwiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd0Rvd25sb2FkQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1kb3dubG9hZCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0KHQutCw0YfQsNGC0YwnXCJcclxuICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uRG93bmxvYWRDbGljaygpXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5neC1leHRlbmRlZC1wZGYtdmlld2VyXHJcbiAgI3BkZlZpZXdlclxyXG4gIGNsYXNzPVwibXJ4LXBkZi12aWV3ZXJcIlxyXG4gIFtzcmNdPVwic3JjXCJcclxuICBbcGFnZV09XCJwYWdlXCJcclxuICBbc2lkZWJhclZpc2libGVdPVwic2hvd1NpZGViYXJCdXR0b24gJiYgc2lkZWJhclZpc2libGVcIlxyXG4gIFtjdXN0b21Ub29sYmFyXT1cImN1c3RvbVRvb2xiYXJcIlxyXG4gIFtzaG93U2lkZWJhckJ1dHRvbl09XCJ0cnVlXCJcclxuICBbc2hvd1JvdGF0ZUJ1dHRvbl09XCJzaG93Um90YXRlQnV0dG9uXCJcclxuICBbc2hvd0Rvd25sb2FkQnV0dG9uXT1cInNob3dEb3dubG9hZEJ1dHRvblwiXHJcbiAgW2lnbm9yZUtleXNdPVwiaWdub3JlS2V5c1wiXHJcbiAgW3pvb21dPVwic2VsZWN0ZWRab29tLnZhbHVlXCJcclxuICBbdGV4dExheWVyXT1cInRydWVcIlxyXG4gIFtoYW5kVG9vbF09XCJoYW5kVG9vbFwiXHJcbiAgW3JvdGF0aW9uXT1cInJvdGF0aW9uXCJcclxuICAoem9vbUNoYW5nZSk9XCJvblpvb21DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gIChwYWdlc0xvYWRlZCk9XCJvblBhZ2VzTG9hZGVkKCRldmVudClcIlxyXG4gICh1cGRhdGVGaW5kU3RhdGUpPVwib25GaW5kU3RhdGVDaGFuZ2VkKCRldmVudClcIlxyXG4gIChzaWRlYmFyVmlzaWJsZUNoYW5nZSk9XCJvblNpZGViYXJWaXNpYmxlQ2hhbmdlKCRldmVudClcIlxyXG4gICh1cGRhdGVGaW5kTWF0Y2hlc0NvdW50KT1cIm9uVXBkYXRlTWF0Y2hDYXNlKCRldmVudClcIlxyXG4+PC9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlcj5cclxuIl19
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXZpZXdlci9wZGYtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9wZGYtdmlld2VyL3BkZi12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFLTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUVMLFNBQVMsRUFDVCw2QkFBNkIsRUFHOUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQWMsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBc0I3RSxNQUFNLE9BQU8sa0JBQWtCO0lBaUVuQjtJQUNBO0lBQ0E7SUFDQTtJQW5FSCxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLFNBQVMsR0FBYyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ3pDLFVBQVUsR0FBVyxDQUFDLENBQUM7SUFDdkIsV0FBVyxHQUFXLENBQUMsQ0FBQztJQUN4QixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1Qsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQzdCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdEIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFlBQVksR0FBOEMsRUFBQyxLQUFLLEVBQUUsTUFB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LEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUMzRDs0QkFDRCxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzs0QkFDbkUsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7NEJBQ3BELFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO3lCQUNyRCxDQUFDO3FCQUNILGFBQ1UsQ0FBQyxjQUFjLENBQUMsbUJBQ1YsdUJBQXVCLENBQUMsTUFBTTtpTEE0QnRDLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRW9DLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsNkJBQTZCO2dCQUNqQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBR3JCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBUb29sdGlwU2VydmljZSB9IGZyb20gJy4uL3Rvb2x0aXAvc2VydmljZXMvdG9vbHRpcC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBGaW5kUmVzdWx0TWF0Y2hlc0NvdW50LFxyXG4gIEZpbmRTdGF0ZSxcclxuICBOZ3hFeHRlbmRlZFBkZlZpZXdlckNvbXBvbmVudCxcclxuICBOZ3hFeHRlbmRlZFBkZlZpZXdlclNlcnZpY2UsXHJcbiAgUGFnZXNMb2FkZWRFdmVudFxyXG59IGZyb20gJ25neC1leHRlbmRlZC1wZGYtdmlld2VyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbnR5cGUgUm90YXRpb25UeXBlID0gMCB8IDkwIHwgMTgwIHwgMjcwO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtcGRmLXZpZXdlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BkZi12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BkZi12aWV3ZXIuY29tcG9uZW50Lmxlc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdvcGVuQ2xvc2UnLCBbXHJcbiAgICAgIHN0YXRlKFxyXG4gICAgICAgICdvcGVuJyxcclxuICAgICAgICBzdHlsZSh7aGVpZ2h0OiAnKicsIHBhZGRpbmc6ICcqJywgJ21hcmdpbi1ib3R0b20nOiAnOHB4J30pXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXRlKCdjbG9zZWQnLCBzdHlsZSh7aGVpZ2h0OiAwLCBwYWRkaW5nOiAwLCAnbWFyZ2luLWJvdHRvbSc6IDB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2VkJywgW2FuaW1hdGUoJzAuNXMgZWFzZScpXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW2FuaW1hdGUoJzAuNXMgZWFzZScpXSksXHJcbiAgICBdKSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1Rvb2x0aXBTZXJ2aWNlXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBkZlZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBwdWJsaWMgc2VhcmNoUXVlcnkgPSAnJztcclxuICBwdWJsaWMgZmluZFN0YXRlOiBGaW5kU3RhdGUgPSBGaW5kU3RhdGUuUEVORElORztcclxuICBwdWJsaWMgdG90YWxGb3VuZDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgY3VycmVudEZpbmQ6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIHBhZ2UgPSAxO1xyXG4gIHB1YmxpYyBpc1NlYXJjaFBhbmVsVmlzaWJsZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaWRlYmFyVmlzaWJsZSA9IHRydWU7XHJcbiAgcHVibGljIHBhZ2VDb3VudCA9IDE7XHJcbiAgcHVibGljIHNlbGVjdGVkWm9vbTogeyB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBsYWJlbDogc3RyaW5nIH0gPSB7dmFsdWU6ICdhdXRvJywgbGFiZWw6ICfQkNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCd9O1xyXG4gIHB1YmxpYyB6b29tT3B0aW9ucyA9IFtcclxuICAgIHt2YWx1ZTogJ2F1dG8nLCBsYWJlbDogJ9CQ0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4J30sXHJcbiAgICB7dmFsdWU6ICdwYWdlLWFjdHVhbCcsIGxhYmVsOiAn0KDQtdCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAnfSxcclxuICAgIHt2YWx1ZTogJ3BnZS1maXQnLCBsYWJlbDogJ9Cf0L4g0YDQsNC30LzQtdGA0YMg0YHRgtGA0LDQvdC40YbRiyd9LFxyXG4gICAge3ZhbHVlOiAncGFnZS13aWR0aCcsIGxhYmVsOiAn0J/QviDRiNC40YDQuNC90LUg0YHRgtGA0LDQvdC40YbRiyd9LFxyXG4gICAge3ZhbHVlOiA1MCwgbGFiZWw6ICc1MCUnfSxcclxuICAgIHt2YWx1ZTogMTAwLCBsYWJlbDogJzEwMCUnfSxcclxuICAgIHt2YWx1ZTogMTI1LCBsYWJlbDogJzEyNSUnfSxcclxuICAgIHt2YWx1ZTogMTUwLCBsYWJlbDogJzE1MCUnfSxcclxuICAgIHt2YWx1ZTogMjAwLCBsYWJlbDogJzIwMCUnfSxcclxuICAgIHt2YWx1ZTogMzAwLCBsYWJlbDogJzMwMCUnfSxcclxuICAgIHt2YWx1ZTogNDAwLCBsYWJlbDogJzQwMCUnfSxcclxuICBdO1xyXG5cclxuICBwdWJsaWMgcm90YXRpb246IFJvdGF0aW9uVHlwZSA9IDA7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dTaWRlYmFyQnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93SGFuZFRvb2xCdXR0b24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBoYW5kVG9vbCA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0ZpbmRiYXJCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dSb3RhdGVCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dQcmludEJ1dHRvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0Rvd25sb2FkQnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RXhwYW5kQnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkZWZhdWx0Wm9vbTogbnVtYmVyIHwgJ2F1dG8nIHwgJ3BhZ2UtYWN0dWFsJyB8ICdwZ2UtZml0JyB8ICdwYWdlLXdpZHRoJyA9ICdhdXRvJztcclxuICBASW5wdXQoKSBkb3dubG9hZEZpbGVOYW1lID0gJyc7XHJcbiAgQElucHV0KCkgc3JjID0gJyc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoTmd4RXh0ZW5kZWRQZGZWaWV3ZXJDb21wb25lbnQpIHBkZlZpZXdlciE6IE5neEV4dGVuZGVkUGRmVmlld2VyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbmRNZW51JykgZmluZE1lbnU6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAncCcgJiYgIXRoaXMuc2hvd1ByaW50QnV0dG9uKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaWdub3JlS2V5cygpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBpZ25vcmVkS2V5cyA9IFtdO1xyXG5cclxuICAgIGlmICghdGhpcy5zaG93Um90YXRlQnV0dG9uKSB7XHJcbiAgICAgIGlnbm9yZWRLZXlzLnB1c2goJ1InLCAnU2hpZnQrUicpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnNob3dEb3dubG9hZEJ1dHRvbikge1xyXG4gICAgICBpZ25vcmVkS2V5cy5wdXNoKCdDVFJMK1MnKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zaG93U2lkZWJhckJ1dHRvbikge1xyXG4gICAgICBpZ25vcmVkS2V5cy5wdXNoKCdGNCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpZ25vcmVkS2V5cztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfcGRmVmlld2VyU2VydmljZTogTmd4RXh0ZW5kZWRQZGZWaWV3ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgX3JlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50XHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snZGVmYXVsdFpvb20nXSAmJiBjaGFuZ2VzWydkZWZhdWx0Wm9vbSddLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzWydkZWZhdWx0Wm9vbSddLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgdGhpcy5pbml0Wm9vbSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdFpvb20oKSB7XHJcbiAgICBjb25zdCBleGlzdGluZ1ZhbHVlID0gdGhpcy56b29tT3B0aW9ucy5maW5kKHggPT4geC52YWx1ZSA9PT0gdGhpcy5kZWZhdWx0Wm9vbSk7XHJcblxyXG4gICAgaWYgKGV4aXN0aW5nVmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFpvb20gPSB7Li4uZXhpc3RpbmdWYWx1ZX07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHt2YWx1ZTogdGhpcy5kZWZhdWx0Wm9vbSwgbGFiZWw6IGAke3RoaXMuZGVmYXVsdFpvb219JWB9O1xyXG4gIH1cclxuXHJcbiAgaW5pdFNlYXJjaCgpIHtcclxuICAgIGlmICh0aGlzLnNob3dGaW5kYmFyQnV0dG9uKSB7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdmJyAmJiBldmVudC5jdHJsS2V5KSB7XHJcbiAgICAgICAgICB0aGlzLmlzU2VhcmNoUGFuZWxWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRTZWFyY2goKTtcclxuICAgIHRoaXMuaW5pdFpvb20oKTtcclxuXHJcbiAgICB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdjbGljaycsIChldmVudDogRXZlbnQpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNTZWFyY2hQYW5lbFZpc2libGUpIHtcclxuICAgICAgICBjb25zdCBpc0luTWVudSA9IHRoaXMuZmluZE1lbnU/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICAgICAgfHwgKGV2ZW50LnRhcmdldCBhcyBhbnkpLmlkID09PSAnZmluZE5leHQnXHJcbiAgICAgICAgICB8fCAoZXZlbnQudGFyZ2V0IGFzIGFueSkuaWQgPT09ICdmaW5kUHJldmlvdXMnO1xyXG5cclxuICAgICAgICBjb25zdCBpc0ZpbmRCdXR0b24gPSAoZXZlbnQudGFyZ2V0IGFzIGFueSkuY2xhc3NMaXN0LmNvbnRhaW5zKCdtcngtcGRmLXZpZXdlcl9fZmluZC1idXR0b24nKTtcclxuXHJcbiAgICAgICAgaWYgKCFpc0luTWVudSAmJiAhaXNGaW5kQnV0dG9uKSB7XHJcbiAgICAgICAgICB0aGlzLmlzU2VhcmNoUGFuZWxWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBhZ2UgPSBldmVudCB8fCAxO1xyXG4gIH1cclxuXHJcbiAgb25OZXh0UGFnZSgpIHtcclxuICAgIGlmICh0aGlzLnBhZ2UgPCB0aGlzLnBhZ2VDb3VudCkge1xyXG4gICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25MYXN0UGFnZSgpIHtcclxuICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZUNvdW50O1xyXG4gIH1cclxuXHJcbiAgb25QYWdlc0xvYWRlZCgkZXZlbnQ6IFBhZ2VzTG9hZGVkRXZlbnQpIHtcclxuICAgIGNvbnN0IHZpZXdPdXRsaW5lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3ZpZXdPdXRsaW5lJyk7XHJcbiAgICBjb25zdCB2aWV3VGh1bWJuYWlsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3ZpZXdUaHVtYm5haWwnKTtcclxuXHJcbiAgICB0aGlzLnBhZ2VDb3VudCA9ICRldmVudC5wYWdlc0NvdW50O1xyXG5cclxuICAgIGlmICh2aWV3T3V0bGluZSkge1xyXG4gICAgICAodmlld091dGxpbmUgYXMgYW55KS50aXRsZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHZpZXdUaHVtYm5haWwsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgIGlmICh2aWV3VGh1bWJuYWlsKSB7XHJcblxyXG4gICAgICAodmlld1RodW1ibmFpbCBhcyBhbnkpLnRpdGxlID0gJ3Rlc3QnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgem9vbUNsaWNrKGluY3JlYXNlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuc2VsZWN0ZWRab29tLnZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHt2YWx1ZTogMTAwLCBsYWJlbDogJzEwMCUnfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gaW5jcmVhc2UgPyB0aGlzLnNlbGVjdGVkWm9vbS52YWx1ZSArPSAyMCA6IHRoaXMuc2VsZWN0ZWRab29tLnZhbHVlIC09IDIwO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRab29tID0ge3ZhbHVlOiBuZXdWYWx1ZSwgbGFiZWw6IGAke25ld1ZhbHVlfSVgfTtcclxuICB9XHJcblxyXG4gIG9uWm9vbUxldmVsU2VsZWN0KGl0ZW06IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFpvb20gPSBpdGVtO1xyXG4gIH1cclxuXHJcbiAgb25ab29tQ2hhbmdlKGV2ZW50OiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgIGNvbnN0IGV4aXN0aW5nT3B0aW9uID0gdGhpcy56b29tT3B0aW9ucy5maW5kKHggPT4geC52YWx1ZSA9PT0gZXZlbnQpO1xyXG5cclxuICAgIGlmIChleGlzdGluZ09wdGlvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHsuLi5leGlzdGluZ09wdGlvbn07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaXhlZFZhbHVlID0gTWF0aC5yb3VuZChOdW1iZXIoZXZlbnQpKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHt2YWx1ZTogZml4ZWRWYWx1ZSwgbGFiZWw6IGAke2ZpeGVkVmFsdWV9JWB9O1xyXG4gIH1cclxuXHJcbiAgb25Sb3RhdGUoZGlyZWN0aW9uOiBudW1iZXIpIHtcclxuICAgIGxldCBkYXRhID0gdGhpcy5yb3RhdGlvbjtcclxuXHJcbiAgICBpZiAoZGlyZWN0aW9uIDwgMCkge1xyXG4gICAgICBkYXRhIC09IDkwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGF0YSArPSA5MDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0YSA+PSAzNjApIHtcclxuICAgICAgdGhpcy5yb3RhdGlvbiA9IGRhdGEgLSAzNjAgYXMgUm90YXRpb25UeXBlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEgPCAwKSB7XHJcbiAgICAgIHRoaXMucm90YXRpb24gPSAzNjAgKyBkYXRhIGFzIFJvdGF0aW9uVHlwZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm90YXRpb24gPSBkYXRhIGFzIFJvdGF0aW9uVHlwZTtcclxuICB9XHJcblxyXG4gIG9uUHJpbnRDbGljaygpIHtcclxuICAgIHRoaXMuX3BkZlZpZXdlclNlcnZpY2UucHJpbnQoKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgcHJpbnREaWFsb2cgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2cjcHJpbnRTZXJ2aWNlRGlhbG9nJyk7XHJcbiAgICAgIGNvbnN0IHByb2dyZXNzVGV4dCA9IHByaW50RGlhbG9nPy5xdWVyeVNlbGVjdG9yKCcucm93IHNwYW4nKTtcclxuICAgICAgY29uc3QgY2FuY2VsQnV0dG9uID0gcHJpbnREaWFsb2c/LnF1ZXJ5U2VsZWN0b3IoJyNwcmludENhbmNlbCBzcGFuJyk7XHJcblxyXG4gICAgICBpZiAocHJvZ3Jlc3NUZXh0KSB7XHJcbiAgICAgICAgcHJvZ3Jlc3NUZXh0LnRleHRDb250ZW50ID0gJ9Cf0L7QtNCz0L7RgtC+0LLQutCwINC00L7QutGD0LzQtdC90YLQsCDQuiDQv9C10YfQsNGC0LguLi4nO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY2FuY2VsQnV0dG9uKSB7XHJcbiAgICAgICAgY2FuY2VsQnV0dG9uLnRleHRDb250ZW50ID0gJ9Ce0YLQvNC10L3QsCc7XHJcbiAgICAgIH1cclxuICAgIH0sIDEpO1xyXG4gIH1cclxuXHJcbiAgb25TaWRlYmFyVmlld0NsaWNrKCkge1xyXG4gICAgdGhpcy5zaWRlYmFyVmlzaWJsZSA9ICF0aGlzLnNpZGViYXJWaXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgb25FeHBhbmRNb2RlQ2xpY2soKSB7XHJcbiAgICBjb25zdCBwZGZWaWV3ZXJBcHBsaWNhdGlvbiA9ICh3aW5kb3cgYXMgYW55KS5QREZWaWV3ZXJBcHBsaWNhdGlvbjtcclxuXHJcbiAgICBpZiAocGRmVmlld2VyQXBwbGljYXRpb24/LnBkZlZpZXdlcikge1xyXG4gICAgICBwZGZWaWV3ZXJBcHBsaWNhdGlvbi5yZXF1ZXN0UHJlc2VudGF0aW9uTW9kZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDbGljaygpIHtcclxuICAgIHRoaXMuaXNTZWFyY2hQYW5lbFZpc2libGUgPSAhdGhpcy5pc1NlYXJjaFBhbmVsVmlzaWJsZTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKCRldmVudDogc3RyaW5nKSB7XHJcbiAgICBpZiAoJGV2ZW50KSB7XHJcbiAgICAgIHRoaXMuX3BkZlZpZXdlclNlcnZpY2UuZmluZCgkZXZlbnQsIHtoaWdobGlnaHRBbGw6IHRydWV9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcGRmVmlld2VyU2VydmljZS5maW5kKCcnLCB7fSk7XHJcbiAgfVxyXG5cclxuICBmaW5kTmV4dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3BkZlZpZXdlclNlcnZpY2UuZmluZE5leHQoKTtcclxuICB9XHJcblxyXG4gIGZpbmRQcmV2aW91cygpOiB2b2lkIHtcclxuICAgIHRoaXMuX3BkZlZpZXdlclNlcnZpY2UuZmluZFByZXZpb3VzKCk7XHJcbiAgfVxyXG5cclxuICBvblVwZGF0ZU1hdGNoQ2FzZShldmVudDogRmluZFJlc3VsdE1hdGNoZXNDb3VudCkge1xyXG4gICAgdGhpcy50b3RhbEZvdW5kID0gZXZlbnQudG90YWw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaW5kID0gZXZlbnQuY3VycmVudDtcclxuICAgIHRoaXMuc2VhcmNoUXVlcnkgPSBldmVudC5xdWVyeVxyXG4gIH1cclxuXHJcbiAgb25GaW5kU3RhdGVDaGFuZ2VkKGV2ZW50OiBGaW5kU3RhdGUpIHtcclxuICAgIHRoaXMuZmluZFN0YXRlID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBvblNpZGViYXJWaXNpYmxlQ2hhbmdlKGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNpZGViYXJWaXNpYmxlID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBvbkhhbmRUb29sQ2xpY2soKSB7XHJcbiAgICB0aGlzLmhhbmRUb29sID0gIXRoaXMuaGFuZFRvb2w7XHJcbiAgfVxyXG5cclxuICBvbkRvd25sb2FkQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5kb3dubG9hZEZpbGVOYW1lKSB7XHJcbiAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSh0aGlzLmRvd25sb2FkRmlsZU5hbWUpLnRoZW4oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuXHJcbiAgICAgIGhlYWRlcnMuc2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ9Cf0LXRh9Cw0YLQvdCw0Y8g0YTQvtGA0LzQsCDQt9Cw0Y/QstC60Lgg0YHQviDRiNGC0LDQvNC/0L7QvC5wZGYnKTtcclxuXHJcbiAgICAgIHRoaXMuX2h0dHAuZ2V0KHRoaXMuc3JjLCB7cmVzcG9uc2VUeXBlOiAnYmxvYicsIG9ic2VydmU6ICdyZXNwb25zZScsfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogSHR0cFJlc3BvbnNlPEJsb2I+KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb250ZW50RGlzcG9zaXRpb24gPSByZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1EaXNwb3NpdGlvbicpO1xyXG5cclxuICAgICAgICAgIGlmICghY29udGVudERpc3Bvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSgnZG9jdW1lbnQucGRmJykudGhlbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3QgZW5jb2RpbmdGaWxlTmFtZSA9IGNvbnRlbnREaXNwb3NpdGlvbi5tYXRjaCgvZmlsZW5hbWVcXCpcXHMqPVxccyooW147XSspL2kpO1xyXG5cclxuICAgICAgICAgIGlmIChlbmNvZGluZ0ZpbGVOYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gZW5jb2RpbmdGaWxlTmFtZVsxXS5zcGxpdCgnXFwnXFwnJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZW5jb2RpbmcgPSBwYXJ0c1swXS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGFydHNbMV07XHJcblxyXG4gICAgICAgICAgICAgIGlmIChlbmNvZGluZyA9PT0gJ3V0Zi04Jykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZG93bmxvYWRGaWxlKGRlY29kZVVSSUNvbXBvbmVudChmaWxlTmFtZSkpLnRoZW4oKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBzaW1wbGVGaWxlTmFtZSA9IGNvbnRlbnREaXNwb3NpdGlvbi5tYXRjaCgvZmlsZW5hbWVcXHMqPVxccypbXCInXT8oW147XCInXSspL2kpO1xyXG5cclxuICAgICAgICAgIGlmIChzaW1wbGVGaWxlTmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9kb3dubG9hZEZpbGUoc2ltcGxlRmlsZU5hbWVbMV0pLnRoZW4oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSgnZG9jdW1lbnQucGRmJykudGhlbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZG93bmxvYWRGaWxlKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJsb2I6IEJsb2IgPSBhd2FpdCB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLmdldEN1cnJlbnREb2N1bWVudEFzQmxvYigpO1xyXG4gICAgY29uc3Qgb2JqZWN0VXJsOiBzdHJpbmcgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgY29uc3QgYTogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XHJcblxyXG4gICAgYS5ocmVmID0gb2JqZWN0VXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XHJcblxyXG4gICAgYS5jbGljaygpO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcblxyXG4gICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI2N1c3RvbVRvb2xiYXI+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX190b29sYmFyXCIgaWQ9XCJ0b29sYmFyVmlld2VyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGctMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGctMVwiPlxyXG4gICAgICAgIEBpZiAoc2hvd1NpZGViYXJCdXR0b24pIHtcclxuICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1idXJnZXInXCJcclxuICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgKG1yeENsaWNrKT1cIm9uU2lkZWJhclZpZXdDbGljaygpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtcngtaWNvbi1idXR0b24tLXRvZ2dsZWQnOiBzaWRlYmFyVmlzaWJsZX1cIlxyXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C+0LrQsNC30LDRgtGML9GB0LrRgNGL0YLRjCDQsdC+0LrQvtCy0YPRjiDQv9Cw0L3QtdC70YwnXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoc2hvd0ZpbmRiYXJCdXR0b24pIHtcclxuICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1zZWFyY2gnXCJcclxuICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgKG1yeENsaWNrKT1cIm9uU2VhcmNoQ2xpY2soKVwiXHJcbiAgICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTIgbXJ4LXBkZi12aWV3ZXJfX2ZpbmQtYnV0dG9uJ1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbXJ4LWljb24tYnV0dG9uLS10b2dnbGVkJzogaXNTZWFyY2hQYW5lbFZpc2libGV9XCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cd0LDQudGC0Lgg0LIg0LTQvtC60YPQvNC10L3RgtC1J1wiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICBAaWYgKGlzU2VhcmNoUGFuZWxWaXNpYmxlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX19maW5kYmFyIGctMVwiICNmaW5kTWVudT5cclxuICAgICAgICAgIDxtcngtaW5wdXQtdGV4dFxyXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCJmaW5kU3RhdGUgPT09IDEgPyAnbXJ4LWlucHV0LWVycm9yJyA6JycrJ3NlYXJjaFRleHQnXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLQndCw0LnRgtC4INCyINC00L7QutGD0LzQtdC90YLQtS4uLlwiXHJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFF1ZXJ5XCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9tcngtaW5wdXQtdGV4dD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tY2hldnJvbi1sZWZ0J1wiXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidwLTEnXCJcclxuICAgICAgICAgICAgICAobXJ4Q2xpY2spPVwiZmluZFByZXZpb3VzKClcIlxyXG4gICAgICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBbaWNvbkNsYXNzXT1cIidpY29uLWNoZXZyb24tcmlnaHQnXCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3AtMSdcIlxyXG4gICAgICAgICAgICAgIChtcnhDbGljayk9XCJmaW5kTmV4dCgpXCJcclxuICAgICAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICBAaWYgKGZpbmRTdGF0ZSA9PT0gMCB8fCBmaW5kU3RhdGUgPT09IDIpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX19maW5kYmFyLXJlc3VsdFwiPlxyXG4gICAgICAgICAgICAgIHt7IGN1cnJlbnRGaW5kIH19INC40Lcge3sgdG90YWxGb3VuZCB9fSDRgdC+0LLQv9Cw0LTQtdC90LjQuVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoZmluZFN0YXRlID09PSAxKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvci1uZWdhdGl2ZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG5vd3JhcFwiPtCk0YDQsNC30LAg0L3QtSDQvdCw0LnQtNC10L3QsDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXBkZi12aWV3ZXJfX3Rvb2xiYXItLW5hdlwiPlxyXG4gICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24taW4tdGhlLWVuZC1sZWZ0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C10YDQstCw0Y8g0YHRgtGA0LDQvdC40YbQsCdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25QYWdlQ2hhbmdlKDEpXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1jaGV2cm9uLWxlZnQnXCJcclxuICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0YDQtdC00YvQtNGD0YnQsNGPINGB0YLRgNCw0L3QuNGG0LAnXCJcclxuICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uUGFnZUNoYW5nZShwYWdlIC0gMSB8fCAxKVwiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgIDxtcngtaW5wdXQtbnVtYmVyXHJcbiAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIid3cHgtNTYnXCJcclxuICAgICAgICAgIFtuZ01vZGVsXT1cInBhZ2VcIlxyXG4gICAgICAgICAgW251bWJlclR5cGVdPVwiJ2ludCdcIlxyXG4gICAgICAgICAgW21pblZhbHVlXT1cIjFcIlxyXG4gICAgICAgICAgW21heFZhbHVlXT1cInBhZ2VDb3VudFwiXHJcbiAgICAgICAgICBbaXNBdXRvQ29ycmVjdGluZ1ZhbHVlXT1cInRydWVcIlxyXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgID48L21yeC1pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+0LjQtyB7eyBwYWdlQ291bnQgfX08L3NwYW4+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1jaGV2cm9uLXJpZ2h0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbk5leHRQYWdlKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Ch0LvQtdC00YPRjtGJ0LDRjyDRgdGC0YDQsNC90LjRhtCwJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1pbi10aGUtZW5kLXJpZ2h0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbkxhc3RQYWdlKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0L7RgdC70LXQtNC90Y/RjyDRgdGC0YDQsNC90LjRhtCwJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgKG1yeENsaWNrKT1cInpvb21DbGljayhmYWxzZSlcIlxyXG4gICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tbWludXMnXCJcclxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgIFt0b29sdGlwXT1cIifQo9C80LXQvdGM0YjQuNGC0YwnXCJcclxuICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgKG1yeENsaWNrKT1cInpvb21DbGljayh0cnVlKVwiXHJcbiAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1wbHVzJ1wiXHJcbiAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICBbdG9vbHRpcF09XCIn0KPQstC10LvQuNGH0LjRgtGMJ1wiXHJcbiAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgID48L21yeC1pY29uLWJ1dHRvbj5cclxuICAgICAgPG1yeC1pbnB1dC1zZWxlY3RcclxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3dweC0xNTYnXCJcclxuICAgICAgICBbaXRlbXNdPVwiem9vbU9wdGlvbnNcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uWm9vbUxldmVsU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkWm9vbVwiXHJcbiAgICAgICAgW2NsZWFyYWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICA8L21yeC1pbnB1dC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgIEBpZiAoc2hvd0hhbmRUb29sQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1mYy10ZXh0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J21yeC1pY29uLWJ1dHRvbi0tdG9nZ2xlZCc6ICFoYW5kVG9vbH1cIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25IYW5kVG9vbENsaWNrKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgID48L21yeC1pY29uLWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHNob3dSb3RhdGVCdXR0b24pIHtcclxuICAgICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBbaWNvbkNsYXNzXT1cIidpY29uLXJlbG9hZCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25Sb3RhdGUoMSlcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0L7QstC10YDQvdGD0YLRjCDQv9C+INGH0LDRgdC+0LLQvtC5INGB0YLRgNC10LvQutC1J1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChzaG93Um90YXRlQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1yZXR1cm4nXCJcclxuICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uUm90YXRlKC0xKVwiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0J/QvtCy0LXRgNC90YPRgtGMINC/0YDQvtGC0LjQsiDRh9Cw0YHQvtCy0L7QuSDRgdGC0YDQtdC70LrQuCdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd0V4cGFuZEJ1dHRvbikge1xyXG4gICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tYXJyb3ctZXhwYW5kJ1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbkV4cGFuZE1vZGVDbGljaygpXCJcclxuICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C+0LrQsNC30LDRgtGMINC90LAg0LLQtdGB0Ywg0Y3QutGA0LDQvSdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd1ByaW50QnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1wcmludCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0J/QtdGH0LDRgtGMJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvblByaW50Q2xpY2soKVwiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd0Rvd25sb2FkQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1kb3dubG9hZCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0KHQutCw0YfQsNGC0YwnXCJcclxuICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uRG93bmxvYWRDbGljaygpXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5neC1leHRlbmRlZC1wZGYtdmlld2VyXHJcbiAgI3BkZlZpZXdlclxyXG4gIGNsYXNzPVwibXJ4LXBkZi12aWV3ZXJcIlxyXG4gIFtzcmNdPVwic3JjXCJcclxuICBbcGFnZV09XCJwYWdlXCJcclxuICBbc2lkZWJhclZpc2libGVdPVwic2hvd1NpZGViYXJCdXR0b24gJiYgc2lkZWJhclZpc2libGVcIlxyXG4gIFtjdXN0b21Ub29sYmFyXT1cImN1c3RvbVRvb2xiYXJcIlxyXG4gIFtzaG93U2lkZWJhckJ1dHRvbl09XCJ0cnVlXCJcclxuICBbc2hvd1JvdGF0ZUJ1dHRvbl09XCJzaG93Um90YXRlQnV0dG9uXCJcclxuICBbc2hvd0Rvd25sb2FkQnV0dG9uXT1cInNob3dEb3dubG9hZEJ1dHRvblwiXHJcbiAgW2lnbm9yZUtleXNdPVwiaWdub3JlS2V5c1wiXHJcbiAgW3pvb21dPVwic2VsZWN0ZWRab29tLnZhbHVlXCJcclxuICBbdGV4dExheWVyXT1cInRydWVcIlxyXG4gIFtoYW5kVG9vbF09XCJoYW5kVG9vbFwiXHJcbiAgW3JvdGF0aW9uXT1cInJvdGF0aW9uXCJcclxuICAoem9vbUNoYW5nZSk9XCJvblpvb21DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gIChwYWdlc0xvYWRlZCk9XCJvblBhZ2VzTG9hZGVkKCRldmVudClcIlxyXG4gICh1cGRhdGVGaW5kU3RhdGUpPVwib25GaW5kU3RhdGVDaGFuZ2VkKCRldmVudClcIlxyXG4gIChzaWRlYmFyVmlzaWJsZUNoYW5nZSk9XCJvblNpZGViYXJWaXNpYmxlQ2hhbmdlKCRldmVudClcIlxyXG4gICh1cGRhdGVGaW5kTWF0Y2hlc0NvdW50KT1cIm9uVXBkYXRlTWF0Y2hDYXNlKCRldmVudClcIlxyXG4+PC9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlcj5cclxuIl19