@dsivd/prestations-ng 14.5.21 → 14.5.23-beta2

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.
Files changed (27) hide show
  1. package/CHANGELOG.md +7 -2
  2. package/bundles/dsivd-prestations-ng.umd.js +463 -103
  3. package/bundles/dsivd-prestations-ng.umd.js.map +1 -1
  4. package/dsivd-prestations-ng-v14.5.23-beta2.tgz +0 -0
  5. package/esm2015/foehn-checkables/foehn-checkable-group.component.js +11 -3
  6. package/esm2015/foehn-date-picker/foehn-date-picker.component.js +2 -2
  7. package/esm2015/foehn-input/foehn-input-email.component.js +2 -2
  8. package/esm2015/foehn-input/foehn-input-hidden.component.js +2 -2
  9. package/esm2015/foehn-input/foehn-input-number.component.js +2 -2
  10. package/esm2015/foehn-input/foehn-input-password.component.js +2 -2
  11. package/esm2015/foehn-input/foehn-input-phone.component.js +2 -2
  12. package/esm2015/foehn-input/foehn-input-text.component.js +2 -2
  13. package/esm2015/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.js +287 -0
  14. package/esm2015/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.js +42 -0
  15. package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.js +2 -2
  16. package/esm2015/index.js +4 -1
  17. package/esm2015/sdk-dictionary/default-dictionary.js +12 -2
  18. package/esm2015/sdk-recaptcha/grecaptcha/grecaptcha.component.js +2 -2
  19. package/fesm2015/dsivd-prestations-ng.js +427 -101
  20. package/fesm2015/dsivd-prestations-ng.js.map +1 -1
  21. package/foehn-checkables/foehn-checkable-group.component.d.ts +3 -2
  22. package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.d.ts +47 -0
  23. package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.d.ts +13 -0
  24. package/index.d.ts +2 -0
  25. package/package.json +1 -1
  26. package/sdk-recaptcha/grecaptcha/grecaptcha.component.d.ts +1 -1
  27. package/dsivd-prestations-ng-v14.5.21.tgz +0 -0
@@ -1,11 +1,12 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Input, Directive } from '@angular/core';
2
+ import { Input, Directive, Output, EventEmitter } from '@angular/core';
3
3
  import { FoehnInputComponent } from '../foehn-input/foehn-input.component';
4
4
  import { HttpClient } from '@angular/common/http';
5
5
  import { ServiceLocator } from '../service-locator';
6
6
  import { of, Subject } from 'rxjs';
7
7
  import { first, map, shareReplay } from 'rxjs/operators';
8
8
  import { FormSelectOptionGroup } from './form-select-option-group';
9
+ import { ObjectHelper } from '../helpers/object.helper';
9
10
  import * as i0 from "@angular/core";
10
11
  export class FoehnCheckableGroupComponent extends FoehnInputComponent {
11
12
  constructor(ngZone) {
@@ -23,6 +24,7 @@ export class FoehnCheckableGroupComponent extends FoehnInputComponent {
23
24
  this.elementLabel = 'label';
24
25
  this.elementDisabled = 'disabled';
25
26
  this.allElementDisabled = false;
27
+ this.elementsLoaded = new EventEmitter();
26
28
  this.multiple = false;
27
29
  this._onInitSubject = new Subject();
28
30
  this.httpClient = ServiceLocator.injector.get(HttpClient);
@@ -72,6 +74,7 @@ export class FoehnCheckableGroupComponent extends FoehnInputComponent {
72
74
  }
73
75
  setElements(elements) {
74
76
  this.elements = elements;
77
+ this.elementsLoaded.next(elements);
75
78
  this.onElementsRetrieved();
76
79
  }
77
80
  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
@@ -261,6 +264,9 @@ export class FoehnCheckableGroupComponent extends FoehnInputComponent {
261
264
  // Hack to refresh the display value
262
265
  this.updateNgModel(this.model_);
263
266
  }
267
+ else if (change && !ObjectHelper.isEqual(change.currentValue, change.previousValue)) {
268
+ this.elementsLoaded.next(change.currentValue);
269
+ }
264
270
  }
265
271
  onElementsUrlChange(change) {
266
272
  if (change && !change.firstChange) {
@@ -269,7 +275,7 @@ export class FoehnCheckableGroupComponent extends FoehnInputComponent {
269
275
  }
270
276
  }
271
277
  FoehnCheckableGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnCheckableGroupComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
272
- FoehnCheckableGroupComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.4", type: FoehnCheckableGroupComponent, inputs: { elements: "elements", elementsUrl: "elementsUrl", elementValue: "elementValue", elementLabel: "elementLabel", elementValueIdentity: "elementValueIdentity", elementDisabled: "elementDisabled", allElementDisabled: "allElementDisabled", elementGroup: "elementGroup", defaultElementValue: "defaultElementValue" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
278
+ FoehnCheckableGroupComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.4", type: FoehnCheckableGroupComponent, inputs: { elements: "elements", elementsUrl: "elementsUrl", elementValue: "elementValue", elementLabel: "elementLabel", elementValueIdentity: "elementValueIdentity", elementDisabled: "elementDisabled", allElementDisabled: "allElementDisabled", elementGroup: "elementGroup", defaultElementValue: "defaultElementValue" }, outputs: { elementsLoaded: "elementsLoaded" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
273
279
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnCheckableGroupComponent, decorators: [{
274
280
  type: Directive
275
281
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { elements: [{
@@ -288,7 +294,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
288
294
  type: Input
289
295
  }], elementGroup: [{
290
296
  type: Input
297
+ }], elementsLoaded: [{
298
+ type: Output
291
299
  }], defaultElementValue: [{
292
300
  type: Input
293
301
  }] } });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tY2hlY2thYmxlLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1jaGVja2FibGVzL2ZvZWhuLWNoZWNrYWJsZS1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFDSCxLQUFLLEVBTUwsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBR25FLE1BQU0sT0FBZ0IsNEJBQ2xCLFNBQVEsbUJBQXdCO0lBK0RoQyxZQUFvQixNQUFjO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBRFEsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXZEbEM7OztXQUdHO1FBRUgsaUJBQVksR0FBUSxPQUFPLENBQUM7UUFFNUI7OztXQUdHO1FBRUgsaUJBQVksR0FBUSxPQUFPLENBQUM7UUFVNUIsb0JBQWUsR0FBUSxVQUFVLENBQUM7UUFHbEMsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBcUJqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRW5CLG1CQUFjLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7UUFTdEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFD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LElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFvQjtRQUN6QyxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDL0IscUVBQXFFO1lBQ3JFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLG9DQUFvQztZQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxNQUFvQjtRQUM1QyxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDL0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDL0I7SUFDTCxDQUFDOzt5SEE3VWlCLDRCQUE0Qjs2R0FBNUIsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBRGpELFNBQVM7NkZBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFRTixZQUFZO3NCQURYLEtBQUs7Z0JBUU4sWUFBWTtzQkFEWCxLQUFLO2dCQVFOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJRixtQkFBbUI7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge1xuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIERpcmVjdGl2ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFNlcnZpY2VMb2NhdG9yIH0gZnJvbSAnLi4vc2VydmljZS1sb2NhdG9yJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCwgbWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZvcm1TZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJy4vZm9ybS1zZWxlY3Qtb3B0aW9uLWdyb3VwJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRm9laG5DaGVja2FibGVHcm91cENvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxhbnk+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KClcbiAgICBlbGVtZW50czogYW55O1xuXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50c1VybDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIGluIHRoZSBvYmplY3QuIENhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uLlxuICAgICAqIERlZmF1bHRzIHRvIGB2YWx1ZWBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGVsZW1lbnRWYWx1ZTogYW55ID0gJ3ZhbHVlJztcblxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBpbiB0aGUgb2JqZWN0LiBDYW4gYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvblxuICAgICAqIERlZmF1bHRzIHRvIGBsYWJlbGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGVsZW1lbnRMYWJlbDogYW55ID0gJ2xhYmVsJztcblxuICAgIC8qKlxuICAgICAqIFRoZSBpZGVudGlmeSB2YWx1ZSB0byBtYXRjaCB0aGUgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgZWxlbWVudHMuXG4gICAgICogQnkgZGVmYXVsdCBgeCA9PiB4YFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudFZhbHVlSWRlbnRpdHk6IChlbGVtZW50OiBhbnkpID0+IGFueTtcblxuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudERpc2FibGVkOiBhbnkgPSAnZGlzYWJsZWQnO1xuXG4gICAgQElucHV0KClcbiAgICBhbGxFbGVtZW50RGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudEdyb3VwOiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBkZWZhdWx0RWxlbWVudFZhbHVlKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZV8gPSB2YWw7XG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50c1VybCkge1xuICAgICAgICAgICAgdGhpcy5vbkVsZW1lbnRzUmV0cmlldmVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlXztcbiAgICB9XG5cbiAgICBncm91cGVkRWxlbWVudHM6IEZvcm1TZWxlY3RPcHRpb25Hcm91cFtdO1xuXG4gICAgaHR0cENsaWVudDogSHR0cENsaWVudDtcblxuICAgIHByb3RlY3RlZCBtdWx0aXBsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcHVsbGluZ186IE9ic2VydmFibGU8YW55PjtcbiAgICBwcml2YXRlIF9vbkluaXRTdWJqZWN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHJpdmF0ZSBkZWZhdWx0RWxlbWVudFZhbHVlXzogc3RyaW5nO1xuXG4gICAgZ2V0IG9uSW5pdFN1YmplY3QoKTogU3ViamVjdDxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uSW5pdFN1YmplY3Q7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBTZXJ2aWNlTG9jYXRvci5pbmplY3Rvci5nZXQoSHR0cENsaWVudCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzVXJsKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoRWxlbWVudHNGcm9tVXJsKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5lbGVtZW50cykge1xuICAgICAgICAgICAgdGhpcy5vbkVsZW1lbnRzUmV0cmlldmVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIC8vIEhhbmRsZSBhIGNoYW5nZSBpbiB0aGUgZWxlbWVudHMgSW5wdXQuXG4gICAgICAgIHRoaXMub25FbGVtZW50c0NoYW5nZShjaGFuZ2VzLmVsZW1lbnRzKTtcblxuICAgICAgICAvLyBIYW5kbGUgYSBjaGFuZ2UgaW4gdGhlIGVsZW1lbnRzVXJsIElucHV0LlxuICAgICAgICB0aGlzLm9uRWxlbWVudHNVcmxDaGFuZ2UoY2hhbmdlcy5lbGVtZW50c1VybCk7XG4gICAgfVxuXG4gICAgZ2V0RWxlbWVudHMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKCEhdGhpcy5lbGVtZW50c1VybCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVsbGluZ187XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2YodGhpcy5lbGVtZW50cyk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG4gICAgZ2V0R3JvdXAoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFlbGVtZW50IHx8ICF0aGlzLmVsZW1lbnRHcm91cCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWxlbWVudEdyb3VwID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkoZWxlbWVudCwgdGhpcy5lbGVtZW50R3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRHcm91cChlbGVtZW50KTtcbiAgICB9XG5cbiAgICBzZXRFbGVtZW50cyhlbGVtZW50czogYW55W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9IGVsZW1lbnRzO1xuICAgICAgICB0aGlzLm9uRWxlbWVudHNSZXRyaWV2ZWQoKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICAgIGdldFZhbHVlKGVsZW1lbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWxlbWVudFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkoZWxlbWVudCwgdGhpcy5lbGVtZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRWYWx1ZShlbGVtZW50KTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICAgIGdldExhYmVsKGVsZW1lbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbGVtZW50TGFiZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRQcm9wZXJ0eShlbGVtZW50LCB0aGlzLmVsZW1lbnRMYWJlbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudExhYmVsKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG4gICAgZ2V0RGlzYWJsZWQoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsRWxlbWVudERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2Rpc2FibGVkJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbGVtZW50RGlzYWJsZWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRQcm9wZXJ0eShlbGVtZW50LCB0aGlzLmVsZW1lbnREaXNhYmxlZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudERpc2FibGVkKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uQ2hlY2soXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG4gICAgICAgIGVsZW1lbnQ6IGFueSxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgICAgICAgc2VsZWN0RXZlbnQ6IGFueSxcbiAgICAgICAgZmlyZU1vZGVsQ2hhbmdlOiBib29sZWFuID0gdHJ1ZVxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCk7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubW9kZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtb2RlbEFycmF5ID0gdGhpcy5tb2RlbCBhcyBzdHJpbmdbXTtcbiAgICAgICAgICAgIGlmICghIXNlbGVjdEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmluZEluZGV4SW5Nb2RlbCh2YWx1ZSkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVsQXJyYXkucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleEluTW9kZWwgPSB0aGlzLmZpbmRJbmRleEluTW9kZWwodmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleEluTW9kZWwgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBtb2RlbEFycmF5LnNwbGljZShpbmRleEluTW9kZWwsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaXJlTW9kZWxDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gWy4uLm1vZGVsQXJyYXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCEhc2VsZWN0RXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFyZVZhbHVlc0VxdWFscyh0aGlzLm1vZGVsLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgICBpc0VsZW1lbnRTZWxlY3RlZChlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKGVsZW1lbnQpO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwgJiYgdGhpcy5maW5kSW5kZXhJbk1vZGVsKHZhbHVlKSA+PSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXJlVmFsdWVzRXF1YWxzKHRoaXMubW9kZWwsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWZyZXNoRWxlbWVudHNVcmwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzVXJsKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoRWxlbWVudHNGcm9tVXJsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICAgIHByb3RlY3RlZCBmaW5kSW5kZXhJbk1vZGVsKHZhbHVlOiBhbnkpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLm1vZGVsIGFzIGFueVtdKS5maW5kSW5kZXgobW9kZWxWYWx1ZSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuYXJlVmFsdWVzRXF1YWxzKHZhbHVlLCBtb2RlbFZhbHVlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnZmluZEluZGV4SW5Nb2RlbCBjYW5ub3QgYmUgdXNlZCB3aGVuIHRoaXMubXVsdGlwbGUgaXMgZmFsc2UgISdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICAgIHByb3RlY3RlZCBhcmVWYWx1ZXNFcXVhbHModmFsdWUxOiBhbnksIHZhbHVlMjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIEdldCBhbiBvcHRpb24gd2F5IHRvIGNvbXBhcmUgdGhlIHZhbHVlIGZyb20gdGhlIG1vZGVsLlxuICAgICAgICAvLyBUaGlzIGFsbG93cyB1cyB0byBwcm9wZXJseSB1c2UgYW4gb2JqZWN0IGFzIHRoZSBtb2RlbCByYXRoZXJcbiAgICAgICAgLy8gdGhhbiBhIHN0cmluZy5cbiAgICAgICAgY29uc3QgaWRlbnRpdHlGbiA9IHRoaXMuZ2V0VmFsdWVJZGVudGl0eUZ1bmN0aW9uKCk7XG4gICAgICAgIHJldHVybiBpZGVudGl0eUZuKHZhbHVlMSkgPT09IGlkZW50aXR5Rm4odmFsdWUyKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25FbGVtZW50c1JldHJpZXZlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsICYmIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodGhpcy5tb2RlbF8pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncm91cGVkRWxlbWVudHMgPSB0aGlzLmdldEdyb3VwZWRFbGVtZW50cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0R3JvdXBlZEVsZW1lbnRzKCk6IEZvcm1TZWxlY3RPcHRpb25Hcm91cFtdIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnRHcm91cCkge1xuICAgICAgICAgICAgcmV0dXJuIFt7IGdyb3VwVGl0bGU6IG51bGwsIGVsZW1lbnRzOiB0aGlzLmVsZW1lbnRzIH1dO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudHNCeUdyb3VwOiBNYXA8c3RyaW5nLCBhbnlbXT4gPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XG5cbiAgICAgICAgY29uc3QgZW1wdHlHcm91cCA9IG5ldyBGb3JtU2VsZWN0T3B0aW9uR3JvdXAoKTtcbiAgICAgICAgZW1wdHlHcm91cC5lbGVtZW50cyA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB0aGlzLmVsZW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cElkID0gdGhpcy5nZXRHcm91cChlbGVtZW50KTtcbiAgICAgICAgICAgIGlmICghIWdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudHNPZkdyb3VwOiBhbnlbXSA9IGVsZW1lbnRzQnlHcm91cC5nZXQoZ3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50c09mR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNPZkdyb3VwID0gW107XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzQnlHcm91cC5zZXQoZ3JvdXBJZCwgZWxlbWVudHNPZkdyb3VwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxlbWVudHNPZkdyb3VwLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVtcHR5R3JvdXAuZWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1TZWxlY3RPcHRpb25zR3JvdXA6IEZvcm1TZWxlY3RPcHRpb25Hcm91cFtdID0gW107XG5cbiAgICAgICAgaWYgKGVtcHR5R3JvdXAuZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9ybVNlbGVjdE9wdGlvbnNHcm91cC5wdXNoKGVtcHR5R3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIGVsZW1lbnRzQnlHcm91cC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICBmb3JtU2VsZWN0T3B0aW9uc0dyb3VwLnB1c2goeyBncm91cFRpdGxlOiBrZXksIGVsZW1lbnRzOiB2YWx1ZSB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1TZWxlY3RPcHRpb25zR3JvdXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROZXN0ZWRQcm9wZXJ0eShvYmo6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIG9iaikge1xuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICAvLyBpbiBjYXNlIGl0IGlzIGFuIG9iamVjdFxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW3Byb3BlcnR5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXROZXN0ZWRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ialtwcm9wZXJ0eV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXkuc3BsaXQoJy4nKS5zbGljZSgxKS5qb2luKCcuJylcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09PSBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9ialtrZXldOyAvLyByZXR1cm5zIHRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsdWVJZGVudGl0eUZ1bmN0aW9uKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5lbGVtZW50VmFsdWVJZGVudGl0eSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyB0aGlzLmVsZW1lbnRWYWx1ZUlkZW50aXR5XG4gICAgICAgICAgICA6ICh4OiBhbnkpID0+IHg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmZXRjaERhdGEoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5lbGVtZW50c1VybCkucGlwZShcbiAgICAgICAgICAgIG1hcChyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50czogYW55ID0gcjtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEVsZW1lbnRzKGVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudHM7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmZXRjaEVsZW1lbnRzRnJvbVVybCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wdWxsaW5nXyA9IHRoaXMuZmV0Y2hEYXRhKCk7XG4gICAgICAgIHRoaXMucHVsbGluZ18uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25Jbml0U3ViamVjdC5uZXh0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25FbGVtZW50c0NoYW5nZShjaGFuZ2U6IFNpbXBsZUNoYW5nZSk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlICYmICFjaGFuZ2UuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gZWxlbWVudHMgYXJlIGRlZmVycmVkIGZyb20gbmdPbkluaXQgKGkuZS4gcGlwZSBhc3luYyBpcyB1c2VkKVxuICAgICAgICAgICAgdGhpcy5vbkVsZW1lbnRzUmV0cmlldmVkKCk7XG4gICAgICAgICAgICAvLyBIYWNrIHRvIHJlZnJlc2ggdGhlIGRpc3BsYXkgdmFsdWVcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh0aGlzLm1vZGVsXyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRWxlbWVudHNVcmxDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSAmJiAhY2hhbmdlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoRWxlbWVudHNGcm9tVXJsKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tY2hlY2thYmxlLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1jaGVja2FibGVzL2ZvZWhuLWNoZWNrYWJsZS1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFDSCxLQUFLLEVBTUwsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQ2xDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUd4RCxNQUFNLE9BQWdCLDRCQUNsQixTQUFRLG1CQUF3QjtJQWtFaEMsWUFBb0IsTUFBYztRQUM5QixLQUFLLEVBQUUsQ0FBQztRQURRLFdBQU0sR0FBTixNQUFNLENBQVE7UUExRGxDOzs7V0FHRztRQUVILGlCQUFZLEdBQVEsT0FBTyxDQUFDO1FBRTVCOzs7V0FHRztRQUVILGlCQUFZLEdBQVEsT0FBTyxDQUFDO1FBVTVCLG9CQUFlLEdBQVEsVUFBVSxDQUFDO1FBR2xDLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQU0zQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFrQi9CLGFB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QkFEWCxLQUFLO2dCQVFOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixjQUFjO3NCQURiLE1BQU07Z0JBSUgsbUJBQW1CO3NCQUR0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBEaXJlY3RpdmUsIE91dHB1dCwgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU2VydmljZUxvY2F0b3IgfSBmcm9tICcuLi9zZXJ2aWNlLWxvY2F0b3InO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCBtYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybVNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnLi9mb3JtLXNlbGVjdC1vcHRpb24tZ3JvdXAnO1xuaW1wb3J0IHsgT2JqZWN0SGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9vYmplY3QuaGVscGVyJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRm9laG5DaGVja2FibGVHcm91cENvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxhbnk+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KClcbiAgICBlbGVtZW50czogYW55O1xuXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50c1VybDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIGluIHRoZSBvYmplY3QuIENhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uLlxuICAgICAqIERlZmF1bHRzIHRvIGB2YWx1ZWBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGVsZW1lbnRWYWx1ZTogYW55ID0gJ3ZhbHVlJztcblxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBpbiB0aGUgb2JqZWN0LiBDYW4gYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvblxuICAgICAqIERlZmF1bHRzIHRvIGBsYWJlbGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGVsZW1lbnRMYWJlbDogYW55ID0gJ2xhYmVsJztcblxuICAgIC8qKlxuICAgICAqIFRoZSBpZGVudGlmeSB2YWx1ZSB0byBtYXRjaCB0aGUgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgZWxlbWVudHMuXG4gICAgICogQnkgZGVmYXVsdCBgeCA9PiB4YFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudFZhbHVlSWRlbnRpdHk6IChlbGVtZW50OiBhbnkpID0+IGFueTtcblxuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudERpc2FibGVkOiBhbnkgPSAnZGlzYWJsZWQnO1xuXG4gICAgQElucHV0KClcbiAgICBhbGxFbGVtZW50RGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudEdyb3VwOiBhbnk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBlbGVtZW50c0xvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZSh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVfID0gdmFsO1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudHNVcmwpIHtcbiAgICAgICAgICAgIHRoaXMub25FbGVtZW50c1JldHJpZXZlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGRlZmF1bHRFbGVtZW50VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZV87XG4gICAgfVxuXG4gICAgZ3JvdXBlZEVsZW1lbnRzOiBGb3JtU2VsZWN0T3B0aW9uR3JvdXBbXTtcblxuICAgIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQ7XG5cbiAgICBwcm90ZWN0ZWQgbXVsdGlwbGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIHB1bGxpbmdfOiBPYnNlcnZhYmxlPGFueT47XG4gICAgcHJpdmF0ZSBfb25Jbml0U3ViamVjdDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIHByaXZhdGUgZGVmYXVsdEVsZW1lbnRWYWx1ZV86IHN0cmluZztcblxuICAgIGdldCBvbkluaXRTdWJqZWN0KCk6IFN1YmplY3Q8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vbkluaXRTdWJqZWN0O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50ID0gU2VydmljZUxvY2F0b3IuaW5qZWN0b3IuZ2V0KEh0dHBDbGllbnQpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50c1VybCkge1xuICAgICAgICAgICAgdGhpcy5mZXRjaEVsZW1lbnRzRnJvbVVybCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZWxlbWVudHMpIHtcbiAgICAgICAgICAgIHRoaXMub25FbGVtZW50c1JldHJpZXZlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICAvLyBIYW5kbGUgYSBjaGFuZ2UgaW4gdGhlIGVsZW1lbnRzIElucHV0LlxuICAgICAgICB0aGlzLm9uRWxlbWVudHNDaGFuZ2UoY2hhbmdlcy5lbGVtZW50cyk7XG5cbiAgICAgICAgLy8gSGFuZGxlIGEgY2hhbmdlIGluIHRoZSBlbGVtZW50c1VybCBJbnB1dC5cbiAgICAgICAgdGhpcy5vbkVsZW1lbnRzVXJsQ2hhbmdlKGNoYW5nZXMuZWxlbWVudHNVcmwpO1xuICAgIH1cblxuICAgIGdldEVsZW1lbnRzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmICghIXRoaXMuZWxlbWVudHNVcmwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1bGxpbmdfO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuZWxlbWVudHMpO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICAgIGdldEdyb3VwKGVsZW1lbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZWxlbWVudCB8fCAhdGhpcy5lbGVtZW50R3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVsZW1lbnRHcm91cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5lc3RlZFByb3BlcnR5KGVsZW1lbnQsIHRoaXMuZWxlbWVudEdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50R3JvdXAoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgc2V0RWxlbWVudHMoZWxlbWVudHM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMgPSBlbGVtZW50cztcbiAgICAgICAgdGhpcy5lbGVtZW50c0xvYWRlZC5uZXh0KGVsZW1lbnRzKTtcbiAgICAgICAgdGhpcy5vbkVsZW1lbnRzUmV0cmlldmVkKCk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgICBnZXRWYWx1ZShlbGVtZW50OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVsZW1lbnRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5lc3RlZFByb3BlcnR5KGVsZW1lbnQsIHRoaXMuZWxlbWVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50VmFsdWUoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgICBnZXRMYWJlbChlbGVtZW50OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWxlbWVudExhYmVsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkoZWxlbWVudCwgdGhpcy5lbGVtZW50TGFiZWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRMYWJlbChlbGVtZW50KTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICAgIGdldERpc2FibGVkKGVsZW1lbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmFsbEVsZW1lbnREaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuICdkaXNhYmxlZCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWxlbWVudERpc2FibGVkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkoZWxlbWVudCwgdGhpcy5lbGVtZW50RGlzYWJsZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnREaXNhYmxlZChlbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkNoZWNrKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICAgICAgICBlbGVtZW50OiBhbnksXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG4gICAgICAgIHNlbGVjdEV2ZW50OiBhbnksXG4gICAgICAgIGZpcmVNb2RlbENoYW5nZTogYm9vbGVhbiA9IHRydWVcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKGVsZW1lbnQpO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbW9kZWxBcnJheSA9IHRoaXMubW9kZWwgYXMgc3RyaW5nW107XG4gICAgICAgICAgICBpZiAoISFzZWxlY3RFdmVudCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbmRJbmRleEluTW9kZWwodmFsdWUpIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBtb2RlbEFycmF5LnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXhJbk1vZGVsID0gdGhpcy5maW5kSW5kZXhJbk1vZGVsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhJbk1vZGVsID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxBcnJheS5zcGxpY2UoaW5kZXhJbk1vZGVsLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlyZU1vZGVsQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IFsuLi5tb2RlbEFycmF5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghIXNlbGVjdEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcmVWYWx1ZXNFcXVhbHModGhpcy5tb2RlbCwgdmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG4gICAgaXNFbGVtZW50U2VsZWN0ZWQoZWxlbWVudDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZShlbGVtZW50KTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1vZGVsICYmIHRoaXMuZmluZEluZGV4SW5Nb2RlbCh2YWx1ZSkgPj0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmFyZVZhbHVlc0VxdWFscyh0aGlzLm1vZGVsLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5yZXNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVmcmVzaEVsZW1lbnRzVXJsKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50c1VybCkge1xuICAgICAgICAgICAgdGhpcy5mZXRjaEVsZW1lbnRzRnJvbVVybCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgICBwcm90ZWN0ZWQgZmluZEluZGV4SW5Nb2RlbCh2YWx1ZTogYW55KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5tb2RlbCBhcyBhbnlbXSkuZmluZEluZGV4KG1vZGVsVmFsdWUgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmFyZVZhbHVlc0VxdWFscyh2YWx1ZSwgbW9kZWxWYWx1ZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ2ZpbmRJbmRleEluTW9kZWwgY2Fubm90IGJlIHVzZWQgd2hlbiB0aGlzLm11bHRpcGxlIGlzIGZhbHNlICEnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgICBwcm90ZWN0ZWQgYXJlVmFsdWVzRXF1YWxzKHZhbHVlMTogYW55LCB2YWx1ZTI6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBHZXQgYW4gb3B0aW9uIHdheSB0byBjb21wYXJlIHRoZSB2YWx1ZSBmcm9tIHRoZSBtb2RlbC5cbiAgICAgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcHJvcGVybHkgdXNlIGFuIG9iamVjdCBhcyB0aGUgbW9kZWwgcmF0aGVyXG4gICAgICAgIC8vIHRoYW4gYSBzdHJpbmcuXG4gICAgICAgIGNvbnN0IGlkZW50aXR5Rm4gPSB0aGlzLmdldFZhbHVlSWRlbnRpdHlGdW5jdGlvbigpO1xuICAgICAgICByZXR1cm4gaWRlbnRpdHlGbih2YWx1ZTEpID09PSBpZGVudGl0eUZuKHZhbHVlMik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRWxlbWVudHNSZXRyaWV2ZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tb2RlbCAmJiB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHRoaXMubW9kZWxfKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JvdXBlZEVsZW1lbnRzID0gdGhpcy5nZXRHcm91cGVkRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEdyb3VwZWRFbGVtZW50cygpOiBGb3JtU2VsZWN0T3B0aW9uR3JvdXBbXSB7XG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50cykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50R3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBncm91cFRpdGxlOiBudWxsLCBlbGVtZW50czogdGhpcy5lbGVtZW50cyB9XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRzQnlHcm91cDogTWFwPHN0cmluZywgYW55W10+ID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG4gICAgICAgIGNvbnN0IGVtcHR5R3JvdXAgPSBuZXcgRm9ybVNlbGVjdE9wdGlvbkdyb3VwKCk7XG4gICAgICAgIGVtcHR5R3JvdXAuZWxlbWVudHMgPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5lbGVtZW50cykge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBJZCA9IHRoaXMuZ2V0R3JvdXAoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoISFncm91cElkKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzT2ZHcm91cDogYW55W10gPSBlbGVtZW50c0J5R3JvdXAuZ2V0KGdyb3VwSWQpO1xuICAgICAgICAgICAgICAgIGlmICghZWxlbWVudHNPZkdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzT2ZHcm91cCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50c0J5R3JvdXAuc2V0KGdyb3VwSWQsIGVsZW1lbnRzT2ZHcm91cCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsZW1lbnRzT2ZHcm91cC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbXB0eUdyb3VwLmVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtU2VsZWN0T3B0aW9uc0dyb3VwOiBGb3JtU2VsZWN0T3B0aW9uR3JvdXBbXSA9IFtdO1xuXG4gICAgICAgIGlmIChlbXB0eUdyb3VwLmVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvcm1TZWxlY3RPcHRpb25zR3JvdXAucHVzaChlbXB0eUdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50c0J5R3JvdXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgZm9ybVNlbGVjdE9wdGlvbnNHcm91cC5wdXNoKHsgZ3JvdXBUaXRsZToga2V5LCBlbGVtZW50czogdmFsdWUgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmb3JtU2VsZWN0T3B0aW9uc0dyb3VwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TmVzdGVkUHJvcGVydHkob2JqOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XG4gICAgICAgICAgICAgICAgLy8gaW4gY2FzZSBpdCBpcyBhbiBvYmplY3RcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9ialtwcm9wZXJ0eV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkoXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmpbcHJvcGVydHldLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5LnNwbGl0KCcuJykuc2xpY2UoMSkuam9pbignLicpXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmpba2V5XTsgLy8gcmV0dXJucyB0aGUgdmFsdWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbHVlSWRlbnRpdHlGdW5jdGlvbigpOiBhbnkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuZWxlbWVudFZhbHVlSWRlbnRpdHkgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gdGhpcy5lbGVtZW50VmFsdWVJZGVudGl0eVxuICAgICAgICAgICAgOiAoeDogYW55KSA9PiB4O1xuICAgIH1cblxuICAgIHByaXZhdGUgZmV0Y2hEYXRhKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHRoaXMuZWxlbWVudHNVcmwpLnBpcGUoXG4gICAgICAgICAgICBtYXAociA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudHM6IGFueSA9IHI7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRFbGVtZW50cyhlbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmV0Y2hFbGVtZW50c0Zyb21VcmwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHVsbGluZ18gPSB0aGlzLmZldGNoRGF0YSgpO1xuICAgICAgICB0aGlzLnB1bGxpbmdfLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uSW5pdFN1YmplY3QubmV4dCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRWxlbWVudHNDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSAmJiAhY2hhbmdlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICAvLyBXaGVuIGVsZW1lbnRzIGFyZSBkZWZlcnJlZCBmcm9tIG5nT25Jbml0IChpLmUuIHBpcGUgYXN5bmMgaXMgdXNlZClcbiAgICAgICAgICAgIHRoaXMub25FbGVtZW50c1JldHJpZXZlZCgpO1xuICAgICAgICAgICAgLy8gSGFjayB0byByZWZyZXNoIHRoZSBkaXNwbGF5IHZhbHVlXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodGhpcy5tb2RlbF8pO1xuICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZSAmJiAhT2JqZWN0SGVscGVyLmlzRXF1YWwoY2hhbmdlLmN1cnJlbnRWYWx1ZSwgY2hhbmdlLnByZXZpb3VzVmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRzTG9hZGVkLm5leHQoY2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRWxlbWVudHNVcmxDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSAmJiAhY2hhbmdlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoRWxlbWVudHNGcm9tVXJsKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -261,7 +261,7 @@ export class FoehnDatePickerComponent {
261
261
  }
262
262
  }
263
263
  FoehnDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnDatePickerComponent, deps: [{ token: i1.SdkDictionaryService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
264
- FoehnDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: FoehnDatePickerComponent, selector: "foehn-date-picker", inputs: { minYear: "minYear", maxYear: "maxYear", datepickerTriggerHtmlElement: "datepickerTriggerHtmlElement", closeable: "closeable", isDatepickerVisible: "isDatepickerVisible", model: "model" }, outputs: { modelChange: "modelChange", userInput: "userInput", isDatepickerVisibleChange: "isDatepickerVisibleChange" }, host: { listeners: { "keyup": "handleKeyboardUpEvent($event)", "keydown": "handleKeyboardDownEvent($event)" } }, viewQueries: [{ propertyName: "daysButtonsElemRef", predicate: ["dayButtonElemRef"], descendants: true }], ngImport: i0, template: "<div\n id=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n id=\"closeButton\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div id=\"datepicker_header\" class=\"d-flex justify-content-between\">\n <button\n id=\"previous-month\"\n class=\"btn btn-link\"\n (click)=\"previousMonth()\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <span id=\"month-year-label\" aria-live=\"polite\" class=\"sr-only\">\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n id=\"month-input\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"false\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n id=\"year-input\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"false\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n </ng-container>\n <button id=\"next-month\" class=\"btn btn-link\" (click)=\"nextMonth()\">\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title' | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </div>\n <table\n id=\"datepicker_table\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substr(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n class=\"btn w-100\"\n #dayButtonElemRef\n [id]=\"'day_' + indexRow + '_' + indexColumn\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"!isToday(dayOfWeek.date)\"\n [class.btn-secondary]=\"isToday(dayOfWeek.date)\"\n [class.btn-danger]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [disabled]=\"!dayOfWeek.isCurrentMonth\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#000!important}#datepicker_header{margin-bottom:10px}#datepicker_wrapper{max-width:245px;padding:5px;border:1px solid #dfdfdf;background-color:#fff}#datepicker_wrapper .h4{margin-bottom:0}#datepicker_wrapper thead th{text-align:center;width:15%}#datepicker_wrapper .btn{padding:2px 4px}#datepicker_wrapper button.close{position:absolute;right:-14px;top:-18px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:30px;height:30px;opacity:1}#datepicker_wrapper #month-input{width:50%;margin-right:5px}:host ::ng-deep foehn-select select.form-control{padding:0;margin:0;height:30px}:host ::ng-deep foehn-select .form-group{margin:0}\n"], components: [{ type: i2.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { type: i3.FoehnSelectComponent, selector: "foehn-select", inputs: ["multiple"] }, { type: i4.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { type: i5.FoehnAbbrComponent, selector: "foehn-abbr", inputs: ["title", "text"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": i8.SdkDictionaryPipe, "async": i6.AsyncPipe } });
264
+ FoehnDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: FoehnDatePickerComponent, selector: "foehn-date-picker", inputs: { minYear: "minYear", maxYear: "maxYear", datepickerTriggerHtmlElement: "datepickerTriggerHtmlElement", closeable: "closeable", isDatepickerVisible: "isDatepickerVisible", model: "model" }, outputs: { modelChange: "modelChange", userInput: "userInput", isDatepickerVisibleChange: "isDatepickerVisibleChange" }, host: { listeners: { "keyup": "handleKeyboardUpEvent($event)", "keydown": "handleKeyboardDownEvent($event)" } }, viewQueries: [{ propertyName: "daysButtonsElemRef", predicate: ["dayButtonElemRef"], descendants: true }], ngImport: i0, template: "<div\n id=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n id=\"closeButton\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div id=\"datepicker_header\" class=\"d-flex justify-content-between\">\n <button\n id=\"previous-month\"\n class=\"btn btn-link\"\n (click)=\"previousMonth()\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <span id=\"month-year-label\" aria-live=\"polite\" class=\"sr-only\">\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n id=\"month-input\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"false\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n id=\"year-input\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"false\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n </ng-container>\n <button id=\"next-month\" class=\"btn btn-link\" (click)=\"nextMonth()\">\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title' | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </div>\n <table\n id=\"datepicker_table\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substr(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n class=\"btn w-100\"\n #dayButtonElemRef\n [id]=\"'day_' + indexRow + '_' + indexColumn\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"!isToday(dayOfWeek.date)\"\n [class.btn-secondary]=\"isToday(dayOfWeek.date)\"\n [class.btn-danger]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"!dayOfWeek.isCurrentMonth ? 'disabled' : null\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#000!important}#datepicker_header{margin-bottom:10px}#datepicker_wrapper{max-width:245px;padding:5px;border:1px solid #dfdfdf;background-color:#fff}#datepicker_wrapper .h4{margin-bottom:0}#datepicker_wrapper thead th{text-align:center;width:15%}#datepicker_wrapper .btn{padding:2px 4px}#datepicker_wrapper button.close{position:absolute;right:-14px;top:-18px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:30px;height:30px;opacity:1}#datepicker_wrapper #month-input{width:50%;margin-right:5px}:host ::ng-deep foehn-select select.form-control{padding:0;margin:0;height:30px}:host ::ng-deep foehn-select .form-group{margin:0}\n"], components: [{ type: i2.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { type: i3.FoehnSelectComponent, selector: "foehn-select", inputs: ["multiple"] }, { type: i4.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { type: i5.FoehnAbbrComponent, selector: "foehn-abbr", inputs: ["title", "text"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": i8.SdkDictionaryPipe, "async": i6.AsyncPipe } });
265
265
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnDatePickerComponent, decorators: [{
266
266
  type: Component,
267
267
  args: [{
@@ -297,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
297
297
  }], model: [{
298
298
  type: Input
299
299
  }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWRhdGUtcGlja2VyL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1kYXRlLXBpY2tlci9mb2Vobi1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7OztBQUU3RSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBT3RCLE1BQU0sT0FBTyx3QkFBd0I7SUE2Q2pDLFlBQ1ksVUFBZ0MsRUFDaEMsTUFBYztRQURkLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLFdBQU0sR0FBTixNQUFNLENBQVE7UUE1QzFCLFlBQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFHL0IsWUFBTyxHQUFHLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztRQU05QixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBR2pCLGdCQUFXLEdBQUcsSUFB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QkFEUixNQUFNO2dCQUlQLHlCQUF5QjtzQkFEeEIsTUFBTTtnQkFJUCxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsa0JBQWtCO2dCQW9DaEMscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRakMsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRL0IsbUJBQW1CO3NCQUR0QixLQUFLO2dCQXNCRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERheU1vbnRoIH0gZnJvbSAnLi9kYXktbW9udGgudHlwZSc7XG5pbXBvcnQgeyBNb250aFllYXIgfSBmcm9tICcuL21vbnRoLXllYXIudHlwZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VySGVscGVyIH0gZnJvbSAnLi9kYXRlLXBpY2tlci5oZWxwZXInO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybVNlbGVjdE9wdGlvbiB9IGZyb20gJy4uL2ZvZWhuLWNoZWNrYWJsZXMvZm9ybS1zZWxlY3Qtb3B0aW9uJztcblxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCBpc1RvZGF5IGZyb20gJ2RheWpzL3BsdWdpbi9pc1RvZGF5JztcbmltcG9ydCB7IERhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyIH0gZnJvbSAnLi9kYXRlLXBpY2tlci1uYXZpZ2F0aW9uLmhlbHBlcic7XG5cbmRheWpzLmV4dGVuZChpc1RvZGF5KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1kYXRlLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1kYXRlLXBpY2tlci5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5EYXRlUGlja2VyQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KClcbiAgICBtaW5ZZWFyID0gZGF5anMoKS55ZWFyKCkgLSAxMDA7XG5cbiAgICBASW5wdXQoKVxuICAgIG1heFllYXIgPSBkYXlqcygpLnllYXIoKSArIDEwO1xuXG4gICAgQElucHV0KClcbiAgICBkYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VhYmxlID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHVzZXJJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyW10+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBpc0RhdGVwaWNrZXJWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZHJlbignZGF5QnV0dG9uRWxlbVJlZicpXG4gICAgZGF5c0J1dHRvbnNFbGVtUmVmOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICB3ZWVrRGF5czogc3RyaW5nW10gPSBbXTtcbiAgICB3ZWVrczogRGF5TW9udGhbXVtdO1xuXG4gICAgc2VsZWN0ZWREYXRlOiBkYXlqcy5EYXlqcztcbiAgICBjdXJyZW50TW9udGhZZWFyOiBPYnNlcnZhYmxlPE1vbnRoWWVhcj47XG5cbiAgICBtb2RlbF86IG51bWJlcltdO1xuICAgIG1vbnRoTGlzdEl0ZW06IEZvcm1TZWxlY3RPcHRpb25bXSA9IFtdO1xuICAgIHllYXJMaXN0SXRlbTogRm9ybVNlbGVjdE9wdGlvbltdID0gW107XG5cbiAgICBwcml2YXRlIGlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUga2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgY3VycmVudExhbmd1YWdlQ29kZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgZGF0ZVBpY2tlckhlbHBlciA9IG5ldyBEYXRlUGlja2VySGVscGVyKCk7XG4gICAgcHJpdmF0ZSBkYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlciA9IG5ldyBEYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlcigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNwbGF5TmV4dE1vbnRoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNwbGF5UHJldmlvdXNNb250aFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGljdGlvbmFyeTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9udGhZZWFyID0gdGhpcy5kYXRlUGlja2VySGVscGVyLmRpc3BsYXllZE1vbnRoWWVhcjtcbiAgICAgICAgdGhpcy5kaXNwbGF5TmV4dE1vbnRoU3Vic2NyaXB0aW9uID0gdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5kaXNwbGF5TmV4dE1vbnRoLnN1YnNjcmliZShcbiAgICAgICAgICAgICgpID0+IHRoaXMubmV4dE1vbnRoKClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5UHJldmlvdXNNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheVByZXZpb3VzTW9udGguc3Vic2NyaWJlKFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5wcmV2aW91c01vbnRoKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5Ym9hcmRVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlYWJsZSAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duSW5uZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNEYXRlcGlja2VyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlO1xuICAgIH1cblxuICAgIHNldCBpc0RhdGVwaWNrZXJWaXNpYmxlKHZhbDogYm9vbGVhbikge1xuICAgICAgICAvLyBTdG9yZSB0aGUgcHJldmlvdXMgdmFsdWUgdG8gaGFuZGxlIHRyYW5zaXRpb25zIGZyb20gb25lIHN0YXRlIHRvIGFub3RoZXIuXG4gICAgICAgIGNvbnN0IHdhc09wZW4gPSB0aGlzLmlzVmlzaWJsZTtcblxuICAgICAgICAvLyBFbnN1cmUgd2UgYWx3YXlzIGluaXRpYWxpemUgZGF0ZSBwaWNrZXIgZGVwZW5kaW5nIG9uIGl0J3MgbW9kZWxcbiAgICAgICAgaWYgKCF3YXNPcGVuICYmIHRoaXMuY2xvc2VhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5tb2RlbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHZhbDtcbiAgICAgICAgdGhpcy5pc0RhdGVwaWNrZXJWaXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5pc1Zpc2libGUpO1xuXG4gICAgICAgIHRoaXMuZm9jdXNEZWZhdWx0RGF5KCk7XG4gICAgICAgIHRoaXMuZm9jdXNPbkRhdGVwaWNrZXJUcmlnZ2VyKHdhc09wZW4sIHZhbCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbW9kZWwodmFsdWU6IG51bWJlcltdKSB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IG1vZGVsKCk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWxfO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZUNvZGVTdWJzY3JpcHRpb24gPSB0aGlzLmRpY3Rpb25hcnlcbiAgICAgICAgICAgIC5nZXRDdXJyZW50TGFuZ3VhZ2VDb2RlKClcbiAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjb2RlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXJcbiAgICAgICAgICAgICAgICAgICAgLmxvYWRMb2NhbGUoY29kZSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgbG9jYWxlICcke2NvZGV9JyBkb2VzIG5vdCBleGlzdC4gRmFsbGJhY2sgdG8gJ2VuLidgXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVEYXRlcGlja2VyKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRheXNCdXR0b25zRWxlbVJlZi5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmRheXNCdXR0b25zRWxlbVJlZiA9IHRoaXMuZGF5c0J1dHRvbnNFbGVtUmVmO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZUNvZGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLmRpc3BsYXlOZXh0TW9udGhTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIXRoaXMuZGlzcGxheVByZXZpb3VzTW9udGhTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVByZXZpb3VzTW9udGhTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEhdmFsdWUgJiZcbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA+IDIgJiZcbiAgICAgICAgICAgICEhdmFsdWVbMF0gJiZcbiAgICAgICAgICAgIHZhbHVlWzBdID49IHRoaXMubWluWWVhciAmJlxuICAgICAgICAgICAgISF2YWx1ZVsxXSAmJlxuICAgICAgICAgICAgISF2YWx1ZVsyXVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVBc1N0cmluZyA9IGAke3ZhbHVlWzBdfS0ke3ZhbHVlWzFdfS0ke3ZhbHVlWzJdfWA7XG4gICAgICAgICAgICBpZiAoZGF5anMoZGF0ZUFzU3RyaW5nKS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGUoZGF5anMoZGF0ZUFzU3RyaW5nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsdWUpO1xuICAgIH1cblxuICAgIHVwZGF0ZU5nTW9kZWwodmFsdWU6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9kZWxfID0gdmFsdWU7XG4gICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaXNUb2RheShkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZGF0ZS5pc1RvZGF5KCk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGUuaXNTYW1lKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoZGF0ZTogZGF5anMuRGF5anMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGF0ZUFzQXJyYXkgPSB0aGlzLmdldERhdGVBc0FycmF5KGRhdGUpO1xuXG4gICAgICAgIHRoaXMudXNlcklucHV0Lm5leHQoZGF0ZUFzQXJyYXkpO1xuICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwoZGF0ZUFzQXJyYXkpO1xuICAgIH1cblxuICAgIHByZXZpb3VzTW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0UHJldmlvdXNXZWVrc09mTW9udGgoKTtcbiAgICB9XG5cbiAgICBuZXh0TW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0TmV4dFdlZWtzT2ZNb250aCgpO1xuICAgIH1cblxuICAgIHVzZXJJbnB1dE1vbnRoKG1vbnRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuaW5pdGlhbFllYXIsXG4gICAgICAgICAgICAoK21vbnRoICsgMSkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsRGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXNlcklucHV0WWVhcih5ZWFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICB5ZWFyLFxuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyLmluaXRpYWxNb250aCxcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsRGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0TW9udGhBc1JlYWRhYmxlKG1vbnRoSW5kZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoTGlzdEl0ZW0uZmluZChlbGVtID0+IGVsZW0udmFsdWUgPT09IG1vbnRoSW5kZXgpLmxhYmVsO1xuICAgIH1cblxuICAgIG9uRGF5c0ZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuY3VycmVudEZvY3VzZWRFbGVtZW50ID1cbiAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgb25EYXlzRm9jdXNvdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGdldERheVRhYkluZGV4KGRheTogRGF5TW9udGgpOiBudW1iZXIge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubW9udGgoKSA9PT0gZGF5LmRhdGUubW9udGgoKSAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUueWVhcigpID09PSBkYXkuZGF0ZS55ZWFyKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUuZGF0ZSgpID09PSBkYXkuZGF0ZS5kYXRlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzVG9kYXkoZGF5LmRhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGRheS5pc0N1cnJlbnRNb250aCAmJlxuICAgICAgICAgICAgZGF5LmRheU9mTW9udGggPT09IDEgJiZcbiAgICAgICAgICAgIChkYXkuZGF0ZS5tb250aCgpICE9PSBkYXlqcygpLm1vbnRoKCkgfHxcbiAgICAgICAgICAgICAgICBkYXkuZGF0ZS55ZWFyKCkgIT09IGRheWpzKCkueWVhcigpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBmb2N1c0RlZmF1bHREYXkoKTogdm9pZCB7XG4gICAgICAgIC8vIEhhdmUgdG8gd2FpdCBmb3IgYSBtaWNybyB0YXNrIGVtcHR5IGFzIHdlJ3JlIGFmZmVjdGluZyB0aGUgRE9NIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgbGlmZWN5Y2xlLlxuICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmlzaWJsZSAmJiB0aGlzLmRhdGVwaWNrZXJUcmlnZ2VySHRtbEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmZvY3VzRGVmYXVsdERheShcbiAgICAgICAgICAgICAgICAgICAgISF0aGlzLnNlbGVjdGVkRGF0ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZURhdGVwaWNrZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wdWxhdGVNb250aExpc3QoKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZVllYXJMaXN0KCk7XG4gICAgICAgIHRoaXMud2Vla0RheXMgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla0RheXMoKTtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICBkYXlqcygpLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuWUVBUl9TVFJJTkdfRk9STUFUKSxcbiAgICAgICAgICAgIGRheWpzKCkuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5NT05USF9TVFJJTkdfTlVNQkVSX0ZPUk1BVClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERhdGUoZGF0ZTogZGF5anMuRGF5anMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xuXG4gICAgICAgIC8vIEVpdGhlciB3ZSBoYXZlIGEgZGF0ZSB0byBzZXQgb3Igd2UgdGFrZSB0b2RheVxuICAgICAgICBjb25zdCBkYXRlVG9Gb3JtYXQgPSBkYXRlID8gZGF0ZSA6IGRheWpzKCk7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla3NPZk1vbnRoKFxuICAgICAgICAgICAgZGF0ZVRvRm9ybWF0LmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuWUVBUl9TVFJJTkdfRk9STUFUKSxcbiAgICAgICAgICAgIGRhdGVUb0Zvcm1hdC5mb3JtYXQoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyLk1PTlRIX1NUUklOR19OVU1CRVJfRk9STUFUXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZGF0ZVRvRm9ybWF0LmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuREFZX1NUUklOR19OVU1CRVJfRk9STUFUKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0ZUFzQXJyYXkoZGF0ZTogZGF5anMuRGF5anMpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICArZGF0ZS5mb3JtYXQodGhpcy5kYXRlUGlja2VySGVscGVyLllFQVJfU1RSSU5HX0ZPUk1BVCksXG4gICAgICAgICAgICArZGF0ZS5mb3JtYXQodGhpcy5kYXRlUGlja2VySGVscGVyLk1PTlRIX1NUUklOR19OVU1CRVJfRk9STUFUKSxcbiAgICAgICAgICAgICtkYXRlLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuREFZX1NUUklOR19OVU1CRVJfRk9STUFUKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPbkRhdGVwaWNrZXJUcmlnZ2VyKFxuICAgICAgICB3YXNPcGVuOiBib29sZWFuLFxuICAgICAgICBpc1Zpc2libGU6IGJvb2xlYW5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgLy8gRm9jdXMgYmFjayBvbiB0aGUgdHJpZ2dlci4gTm8gbmVlZCBmb3IgYSBzZXRUaW1lb3V0IGFzIHRoZSB0cmlnZ2VyIHNob3VsZCBzdGlsbCBiZSBpbiB0aGUgRE9NLlxuICAgICAgICAvLyBPbmx5IGRvZXMgaXQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkIGZyb20gYSBvcGVuIHN0YXRlIHRvIGF2b2lkIHRvIHNldFxuICAgICAgICAvLyB0aGUgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2Fkcy5cbiAgICAgICAgaWYgKHdhc09wZW4gJiYgIWlzVmlzaWJsZSAmJiB0aGlzLmRhdGVwaWNrZXJUcmlnZ2VySHRtbEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJIdG1sRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZU1vbnRoTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb250aExpc3RJdGVtID0gZGF5anMoKVxuICAgICAgICAgICAgLmxvY2FsZURhdGEoKVxuICAgICAgICAgICAgLm1vbnRocygpXG4gICAgICAgICAgICAubWFwKChtb250aDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBtb250aCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogaW5kZXgudG9TdHJpbmcoKVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcG9wdWxhdGVZZWFyTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBudW1iZXJbXSA9PlxuICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogZW5kIC0gc3RhcnQgKyAxIH0sICh2LCBrKSA9PiBrICsgc3RhcnQpO1xuXG4gICAgICAgIHRoaXMueWVhckxpc3RJdGVtID0gcmFuZ2UodGhpcy5taW5ZZWFyLCB0aGlzLm1heFllYXIpLm1hcChcbiAgICAgICAgICAgICh5ZWFyOiBudW1iZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHllYXIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogeWVhci50b1N0cmluZygpXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25LZXlEb3duSW5uZXIoa2V5RXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgLy8gSUUgZG9lc24ndCBzdXBwb3J0IGtleUV2ZW50LmNvZGUsIGFuZCBoYXMgZGlmZmVyZW50IHZhbHVlc1xuICAgICAgICAvLyBpbiBrZXlFdmVudC5rZXkgKERvd24gaW5zdGVhZCBvZiBBcnJvd0Rvd24gZm9yIGluc3RhbmNlKSwgaGVuY2UgdGhlIG11bHRpLXN1cHBvcnQuXG4gICAgICAgIGNvbnN0IGllMTFDb21wYXRpYmxlQ29kZSA9IGtleUV2ZW50LmNvZGUgfHwga2V5RXZlbnQua2V5O1xuICAgICAgICBzd2l0Y2ggKGllMTFDb21wYXRpYmxlQ29kZSkge1xuICAgICAgICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNOZXh0V2Vla0RheSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVXAnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c1ByZXZpb3VzV2Vla0RheSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnU3BhY2ViYXInOlxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NsaWNrJykpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c05leHREYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmZvY3VzUHJldmlvdXNEYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBrZXlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBrZXlFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGlkPVwiZGF0ZXBpY2tlcl93cmFwcGVyXCJcbiAgICAqbmdJZj1cImlzRGF0ZXBpY2tlclZpc2libGVcIlxuICAgIFtjZGtUcmFwRm9jdXNdPVwiISFkYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICByb2xlPVwiYXBwbGljYXRpb25cIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5jb250YWluZXIuYXJpYS1sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVxuICAgIFwiXG4+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImNsb3NlYWJsZVwiXG4gICAgICAgIChjbGljayk9XCJpc0RhdGVwaWNrZXJWaXNpYmxlID0gZmFsc2VcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gY2xvc2VcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLmNsb3NlLWJ1dHRvbi5hcmlhLWxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgIFwiXG4gICAgICAgIGlkPVwiY2xvc2VCdXR0b25cIlxuICAgID5cbiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGlkPVwiZGF0ZXBpY2tlcl9oZWFkZXJcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZD1cInByZXZpb3VzLW1vbnRoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c01vbnRoKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLWxlZnRcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5wcmV2aW91cy1tb250aC1idXR0b24udGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi1sZWZ0PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRNb250aFllYXIgfCBhc3luYyBhcyBtb250aFllYXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGlkPVwibW9udGgteWVhci1sYWJlbFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLmFjdHVhbC1tb250aC1kaXNwbGF5ZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB7eyBnZXRNb250aEFzUmVhZGFibGUobW9udGhZZWFyLm1vbnRoKSB9fSB7eyBtb250aFllYXIueWVhciB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGZvZWhuLXNlbGVjdFxuICAgICAgICAgICAgICAgIGlkPVwibW9udGgtaW5wdXRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLnNjcmVlbi1yZWFkZXIubW9udGgtaW5wdXQubGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbaXNMYWJlbFNyT25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudHNdPVwibW9udGhMaXN0SXRlbVwiXG4gICAgICAgICAgICAgICAgW21vZGVsXT1cIm1vbnRoWWVhci5tb250aFwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cInVzZXJJbnB1dE1vbnRoKCRldmVudClcIlxuICAgICAgICAgICAgPjwvZm9laG4tc2VsZWN0PlxuICAgICAgICAgICAgPGZvZWhuLXNlbGVjdFxuICAgICAgICAgICAgICAgIGlkPVwieWVhci1pbnB1dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhbGlnbi1zZWxmLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tZGF0ZS1waWNrZXIuc2NyZWVuLXJlYWRlci55ZWFyLWlucHV0LmxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2lzTGFiZWxTck9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRzXT1cInllYXJMaXN0SXRlbVwiXG4gICAgICAgICAgICAgICAgW21vZGVsXT1cIm1vbnRoWWVhci55ZWFyXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwidXNlcklucHV0WWVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2ZvZWhuLXNlbGVjdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxidXR0b24gaWQ9XCJuZXh0LW1vbnRoXCIgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj5cbiAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tcmlnaHRcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5uZXh0LW1vbnRoLWJ1dHRvbi50aXRsZScgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9mb2Vobi1pY29uLWNoZXZyb24tcmlnaHQ+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDx0YWJsZVxuICAgICAgICBpZD1cImRhdGVwaWNrZXJfdGFibGVcIlxuICAgICAgICByb2xlPVwiZ3JpZFwiXG4gICAgICAgIChmb2N1c2luKT1cIm9uRGF5c0ZvY3VzaW4oKVwiXG4gICAgICAgIChmb2N1c291dCk9XCJvbkRheXNGb2N1c291dCgpXCJcbiAgICA+XG4gICAgICAgIDx0aGVhZCByb2xlPVwicHJlc2VudGF0aW9uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8dHIgcm9sZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJjb2x1bW5oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgd2Vla2RheSBvZiB3ZWVrRGF5c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Zm9laG4tYWJiclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwid2Vla2RheS5zdWJzdHIoMCwgMilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIndlZWtkYXlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mb2Vobi1hYmJyPlxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHkgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICAgICAgPHRyIHJvbGU9XCJyb3dcIiAqbmdGb3I9XCJsZXQgd2VlayBvZiB3ZWVrczsgbGV0IGluZGV4Um93ID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheU9mV2VlayBvZiB3ZWVrOyBsZXQgaW5kZXhDb2x1bW4gPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjZGF5QnV0dG9uRWxlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidkYXlfJyArIGluZGV4Um93ICsgJ18nICsgaW5kZXhDb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImdldERheVRhYkluZGV4KGRheU9mV2VlaylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJ0bi1pbmZvXT1cIiFpc1RvZGF5KGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLXNlY29uZGFyeV09XCJpc1RvZGF5KGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLWRhbmdlcl09XCJpc1NlbGVjdGVkKGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtEYXlzW2luZGV4Q29sdW1uXSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlPZldlZWsuZGF0ZUFzUmVhZGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWlzLXRvZGF5XT1cImlzVG9kYXkoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtaXMtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChkYXlPZldlZWsuZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1yb3ctaW5kZXhdPVwiaW5kZXhSb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW4taW5kZXhdPVwiaW5kZXhDb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF5LW51bWJlcl09XCJkYXlPZldlZWsuZGF5T2ZNb250aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWRheU9mV2Vlay5pc0N1cnJlbnRNb250aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlVXNlcklucHV0KGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRheU9mV2Vlay5kYXlPZk1vbnRoIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWRhdGUtcGlja2VyL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1kYXRlLXBpY2tlci9mb2Vobi1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7OztBQUU3RSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBT3RCLE1BQU0sT0FBTyx3QkFBd0I7SUE2Q2pDLFlBQ1ksVUFBZ0MsRUFDaEMsTUFBYztRQURkLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLFdBQU0sR0FBTixNQUFNLENBQVE7UUE1QzFCLFlBQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFHL0IsWUFBTyxHQUFHLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztRQU05QixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBR2pCLGdCQUFXLEdBQUcsSUFB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QkFEUixNQUFNO2dCQUlQLHlCQUF5QjtzQkFEeEIsTUFBTTtnQkFJUCxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsa0JBQWtCO2dCQW9DaEMscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRakMsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRL0IsbUJBQW1CO3NCQUR0QixLQUFLO2dCQXNCRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERheU1vbnRoIH0gZnJvbSAnLi9kYXktbW9udGgudHlwZSc7XG5pbXBvcnQgeyBNb250aFllYXIgfSBmcm9tICcuL21vbnRoLXllYXIudHlwZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VySGVscGVyIH0gZnJvbSAnLi9kYXRlLXBpY2tlci5oZWxwZXInO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybVNlbGVjdE9wdGlvbiB9IGZyb20gJy4uL2ZvZWhuLWNoZWNrYWJsZXMvZm9ybS1zZWxlY3Qtb3B0aW9uJztcblxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCBpc1RvZGF5IGZyb20gJ2RheWpzL3BsdWdpbi9pc1RvZGF5JztcbmltcG9ydCB7IERhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyIH0gZnJvbSAnLi9kYXRlLXBpY2tlci1uYXZpZ2F0aW9uLmhlbHBlcic7XG5cbmRheWpzLmV4dGVuZChpc1RvZGF5KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1kYXRlLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1kYXRlLXBpY2tlci5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5EYXRlUGlja2VyQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KClcbiAgICBtaW5ZZWFyID0gZGF5anMoKS55ZWFyKCkgLSAxMDA7XG5cbiAgICBASW5wdXQoKVxuICAgIG1heFllYXIgPSBkYXlqcygpLnllYXIoKSArIDEwO1xuXG4gICAgQElucHV0KClcbiAgICBkYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VhYmxlID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHVzZXJJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyW10+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBpc0RhdGVwaWNrZXJWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZHJlbignZGF5QnV0dG9uRWxlbVJlZicpXG4gICAgZGF5c0J1dHRvbnNFbGVtUmVmOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICB3ZWVrRGF5czogc3RyaW5nW10gPSBbXTtcbiAgICB3ZWVrczogRGF5TW9udGhbXVtdO1xuXG4gICAgc2VsZWN0ZWREYXRlOiBkYXlqcy5EYXlqcztcbiAgICBjdXJyZW50TW9udGhZZWFyOiBPYnNlcnZhYmxlPE1vbnRoWWVhcj47XG5cbiAgICBtb2RlbF86IG51bWJlcltdO1xuICAgIG1vbnRoTGlzdEl0ZW06IEZvcm1TZWxlY3RPcHRpb25bXSA9IFtdO1xuICAgIHllYXJMaXN0SXRlbTogRm9ybVNlbGVjdE9wdGlvbltdID0gW107XG5cbiAgICBwcml2YXRlIGlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUga2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgY3VycmVudExhbmd1YWdlQ29kZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgZGF0ZVBpY2tlckhlbHBlciA9IG5ldyBEYXRlUGlja2VySGVscGVyKCk7XG4gICAgcHJpdmF0ZSBkYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlciA9IG5ldyBEYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlcigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNwbGF5TmV4dE1vbnRoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNwbGF5UHJldmlvdXNNb250aFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGljdGlvbmFyeTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9udGhZZWFyID0gdGhpcy5kYXRlUGlja2VySGVscGVyLmRpc3BsYXllZE1vbnRoWWVhcjtcbiAgICAgICAgdGhpcy5kaXNwbGF5TmV4dE1vbnRoU3Vic2NyaXB0aW9uID0gdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5kaXNwbGF5TmV4dE1vbnRoLnN1YnNjcmliZShcbiAgICAgICAgICAgICgpID0+IHRoaXMubmV4dE1vbnRoKClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5UHJldmlvdXNNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheVByZXZpb3VzTW9udGguc3Vic2NyaWJlKFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5wcmV2aW91c01vbnRoKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5Ym9hcmRVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlYWJsZSAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duSW5uZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNEYXRlcGlja2VyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlO1xuICAgIH1cblxuICAgIHNldCBpc0RhdGVwaWNrZXJWaXNpYmxlKHZhbDogYm9vbGVhbikge1xuICAgICAgICAvLyBTdG9yZSB0aGUgcHJldmlvdXMgdmFsdWUgdG8gaGFuZGxlIHRyYW5zaXRpb25zIGZyb20gb25lIHN0YXRlIHRvIGFub3RoZXIuXG4gICAgICAgIGNvbnN0IHdhc09wZW4gPSB0aGlzLmlzVmlzaWJsZTtcblxuICAgICAgICAvLyBFbnN1cmUgd2UgYWx3YXlzIGluaXRpYWxpemUgZGF0ZSBwaWNrZXIgZGVwZW5kaW5nIG9uIGl0J3MgbW9kZWxcbiAgICAgICAgaWYgKCF3YXNPcGVuICYmIHRoaXMuY2xvc2VhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5tb2RlbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHZhbDtcbiAgICAgICAgdGhpcy5pc0RhdGVwaWNrZXJWaXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5pc1Zpc2libGUpO1xuXG4gICAgICAgIHRoaXMuZm9jdXNEZWZhdWx0RGF5KCk7XG4gICAgICAgIHRoaXMuZm9jdXNPbkRhdGVwaWNrZXJUcmlnZ2VyKHdhc09wZW4sIHZhbCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbW9kZWwodmFsdWU6IG51bWJlcltdKSB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IG1vZGVsKCk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWxfO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZUNvZGVTdWJzY3JpcHRpb24gPSB0aGlzLmRpY3Rpb25hcnlcbiAgICAgICAgICAgIC5nZXRDdXJyZW50TGFuZ3VhZ2VDb2RlKClcbiAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjb2RlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXJcbiAgICAgICAgICAgICAgICAgICAgLmxvYWRMb2NhbGUoY29kZSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgbG9jYWxlICcke2NvZGV9JyBkb2VzIG5vdCBleGlzdC4gRmFsbGJhY2sgdG8gJ2VuLidgXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVEYXRlcGlja2VyKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRheXNCdXR0b25zRWxlbVJlZi5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmRheXNCdXR0b25zRWxlbVJlZiA9IHRoaXMuZGF5c0J1dHRvbnNFbGVtUmVmO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZUNvZGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLmRpc3BsYXlOZXh0TW9udGhTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIXRoaXMuZGlzcGxheVByZXZpb3VzTW9udGhTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVByZXZpb3VzTW9udGhTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEhdmFsdWUgJiZcbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA+IDIgJiZcbiAgICAgICAgICAgICEhdmFsdWVbMF0gJiZcbiAgICAgICAgICAgIHZhbHVlWzBdID49IHRoaXMubWluWWVhciAmJlxuICAgICAgICAgICAgISF2YWx1ZVsxXSAmJlxuICAgICAgICAgICAgISF2YWx1ZVsyXVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVBc1N0cmluZyA9IGAke3ZhbHVlWzBdfS0ke3ZhbHVlWzFdfS0ke3ZhbHVlWzJdfWA7XG4gICAgICAgICAgICBpZiAoZGF5anMoZGF0ZUFzU3RyaW5nKS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGUoZGF5anMoZGF0ZUFzU3RyaW5nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsdWUpO1xuICAgIH1cblxuICAgIHVwZGF0ZU5nTW9kZWwodmFsdWU6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9kZWxfID0gdmFsdWU7XG4gICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaXNUb2RheShkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZGF0ZS5pc1RvZGF5KCk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGUuaXNTYW1lKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoZGF0ZTogZGF5anMuRGF5anMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGF0ZUFzQXJyYXkgPSB0aGlzLmdldERhdGVBc0FycmF5KGRhdGUpO1xuXG4gICAgICAgIHRoaXMudXNlcklucHV0Lm5leHQoZGF0ZUFzQXJyYXkpO1xuICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwoZGF0ZUFzQXJyYXkpO1xuICAgIH1cblxuICAgIHByZXZpb3VzTW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0UHJldmlvdXNXZWVrc09mTW9udGgoKTtcbiAgICB9XG5cbiAgICBuZXh0TW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0TmV4dFdlZWtzT2ZNb250aCgpO1xuICAgIH1cblxuICAgIHVzZXJJbnB1dE1vbnRoKG1vbnRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuaW5pdGlhbFllYXIsXG4gICAgICAgICAgICAoK21vbnRoICsgMSkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsRGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXNlcklucHV0WWVhcih5ZWFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICB5ZWFyLFxuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyLmluaXRpYWxNb250aCxcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsRGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0TW9udGhBc1JlYWRhYmxlKG1vbnRoSW5kZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoTGlzdEl0ZW0uZmluZChlbGVtID0+IGVsZW0udmFsdWUgPT09IG1vbnRoSW5kZXgpLmxhYmVsO1xuICAgIH1cblxuICAgIG9uRGF5c0ZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuY3VycmVudEZvY3VzZWRFbGVtZW50ID1cbiAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgb25EYXlzRm9jdXNvdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGdldERheVRhYkluZGV4KGRheTogRGF5TW9udGgpOiBudW1iZXIge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubW9udGgoKSA9PT0gZGF5LmRhdGUubW9udGgoKSAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUueWVhcigpID09PSBkYXkuZGF0ZS55ZWFyKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUuZGF0ZSgpID09PSBkYXkuZGF0ZS5kYXRlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzVG9kYXkoZGF5LmRhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGRheS5pc0N1cnJlbnRNb250aCAmJlxuICAgICAgICAgICAgZGF5LmRheU9mTW9udGggPT09IDEgJiZcbiAgICAgICAgICAgIChkYXkuZGF0ZS5tb250aCgpICE9PSBkYXlqcygpLm1vbnRoKCkgfHxcbiAgICAgICAgICAgICAgICBkYXkuZGF0ZS55ZWFyKCkgIT09IGRheWpzKCkueWVhcigpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBmb2N1c0RlZmF1bHREYXkoKTogdm9pZCB7XG4gICAgICAgIC8vIEhhdmUgdG8gd2FpdCBmb3IgYSBtaWNybyB0YXNrIGVtcHR5IGFzIHdlJ3JlIGFmZmVjdGluZyB0aGUgRE9NIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgbGlmZWN5Y2xlLlxuICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmlzaWJsZSAmJiB0aGlzLmRhdGVwaWNrZXJUcmlnZ2VySHRtbEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmZvY3VzRGVmYXVsdERheShcbiAgICAgICAgICAgICAgICAgICAgISF0aGlzLnNlbGVjdGVkRGF0ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZURhdGVwaWNrZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wdWxhdGVNb250aExpc3QoKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZVllYXJMaXN0KCk7XG4gICAgICAgIHRoaXMud2Vla0RheXMgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla0RheXMoKTtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICBkYXlqcygpLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuWUVBUl9TVFJJTkdfRk9STUFUKSxcbiAgICAgICAgICAgIGRheWpzKCkuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5NT05USF9TVFJJTkdfTlVNQkVSX0ZPUk1BVClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERhdGUoZGF0ZTogZGF5anMuRGF5anMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xuXG4gICAgICAgIC8vIEVpdGhlciB3ZSBoYXZlIGEgZGF0ZSB0byBzZXQgb3Igd2UgdGFrZSB0b2RheVxuICAgICAgICBjb25zdCBkYXRlVG9Gb3JtYXQgPSBkYXRlID8gZGF0ZSA6IGRheWpzKCk7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla3NPZk1vbnRoKFxuICAgICAgICAgICAgZGF0ZVRvRm9ybWF0LmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuWUVBUl9TVFJJTkdfRk9STUFUKSxcbiAgICAgICAgICAgIGRhdGVUb0Zvcm1hdC5mb3JtYXQoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyLk1PTlRIX1NUUklOR19OVU1CRVJfRk9STUFUXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZGF0ZVRvRm9ybWF0LmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuREFZX1NUUklOR19OVU1CRVJfRk9STUFUKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0ZUFzQXJyYXkoZGF0ZTogZGF5anMuRGF5anMpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICArZGF0ZS5mb3JtYXQodGhpcy5kYXRlUGlja2VySGVscGVyLllFQVJfU1RSSU5HX0ZPUk1BVCksXG4gICAgICAgICAgICArZGF0ZS5mb3JtYXQodGhpcy5kYXRlUGlja2VySGVscGVyLk1PTlRIX1NUUklOR19OVU1CRVJfRk9STUFUKSxcbiAgICAgICAgICAgICtkYXRlLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuREFZX1NUUklOR19OVU1CRVJfRk9STUFUKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPbkRhdGVwaWNrZXJUcmlnZ2VyKFxuICAgICAgICB3YXNPcGVuOiBib29sZWFuLFxuICAgICAgICBpc1Zpc2libGU6IGJvb2xlYW5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgLy8gRm9jdXMgYmFjayBvbiB0aGUgdHJpZ2dlci4gTm8gbmVlZCBmb3IgYSBzZXRUaW1lb3V0IGFzIHRoZSB0cmlnZ2VyIHNob3VsZCBzdGlsbCBiZSBpbiB0aGUgRE9NLlxuICAgICAgICAvLyBPbmx5IGRvZXMgaXQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkIGZyb20gYSBvcGVuIHN0YXRlIHRvIGF2b2lkIHRvIHNldFxuICAgICAgICAvLyB0aGUgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2Fkcy5cbiAgICAgICAgaWYgKHdhc09wZW4gJiYgIWlzVmlzaWJsZSAmJiB0aGlzLmRhdGVwaWNrZXJUcmlnZ2VySHRtbEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJIdG1sRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZU1vbnRoTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb250aExpc3RJdGVtID0gZGF5anMoKVxuICAgICAgICAgICAgLmxvY2FsZURhdGEoKVxuICAgICAgICAgICAgLm1vbnRocygpXG4gICAgICAgICAgICAubWFwKChtb250aDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBtb250aCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogaW5kZXgudG9TdHJpbmcoKVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcG9wdWxhdGVZZWFyTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBudW1iZXJbXSA9PlxuICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogZW5kIC0gc3RhcnQgKyAxIH0sICh2LCBrKSA9PiBrICsgc3RhcnQpO1xuXG4gICAgICAgIHRoaXMueWVhckxpc3RJdGVtID0gcmFuZ2UodGhpcy5taW5ZZWFyLCB0aGlzLm1heFllYXIpLm1hcChcbiAgICAgICAgICAgICh5ZWFyOiBudW1iZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHllYXIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogeWVhci50b1N0cmluZygpXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25LZXlEb3duSW5uZXIoa2V5RXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgLy8gSUUgZG9lc24ndCBzdXBwb3J0IGtleUV2ZW50LmNvZGUsIGFuZCBoYXMgZGlmZmVyZW50IHZhbHVlc1xuICAgICAgICAvLyBpbiBrZXlFdmVudC5rZXkgKERvd24gaW5zdGVhZCBvZiBBcnJvd0Rvd24gZm9yIGluc3RhbmNlKSwgaGVuY2UgdGhlIG11bHRpLXN1cHBvcnQuXG4gICAgICAgIGNvbnN0IGllMTFDb21wYXRpYmxlQ29kZSA9IGtleUV2ZW50LmNvZGUgfHwga2V5RXZlbnQua2V5O1xuICAgICAgICBzd2l0Y2ggKGllMTFDb21wYXRpYmxlQ29kZSkge1xuICAgICAgICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNOZXh0V2Vla0RheSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVXAnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c1ByZXZpb3VzV2Vla0RheSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnU3BhY2ViYXInOlxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NsaWNrJykpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c05leHREYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmZvY3VzUHJldmlvdXNEYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBrZXlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBrZXlFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGlkPVwiZGF0ZXBpY2tlcl93cmFwcGVyXCJcbiAgICAqbmdJZj1cImlzRGF0ZXBpY2tlclZpc2libGVcIlxuICAgIFtjZGtUcmFwRm9jdXNdPVwiISFkYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICByb2xlPVwiYXBwbGljYXRpb25cIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5jb250YWluZXIuYXJpYS1sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVxuICAgIFwiXG4+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImNsb3NlYWJsZVwiXG4gICAgICAgIChjbGljayk9XCJpc0RhdGVwaWNrZXJWaXNpYmxlID0gZmFsc2VcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gY2xvc2VcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLmNsb3NlLWJ1dHRvbi5hcmlhLWxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgIFwiXG4gICAgICAgIGlkPVwiY2xvc2VCdXR0b25cIlxuICAgID5cbiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGlkPVwiZGF0ZXBpY2tlcl9oZWFkZXJcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZD1cInByZXZpb3VzLW1vbnRoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c01vbnRoKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLWxlZnRcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5wcmV2aW91cy1tb250aC1idXR0b24udGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi1sZWZ0PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRNb250aFllYXIgfCBhc3luYyBhcyBtb250aFllYXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGlkPVwibW9udGgteWVhci1sYWJlbFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLmFjdHVhbC1tb250aC1kaXNwbGF5ZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB7eyBnZXRNb250aEFzUmVhZGFibGUobW9udGhZZWFyLm1vbnRoKSB9fSB7eyBtb250aFllYXIueWVhciB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGZvZWhuLXNlbGVjdFxuICAgICAgICAgICAgICAgIGlkPVwibW9udGgtaW5wdXRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLnNjcmVlbi1yZWFkZXIubW9udGgtaW5wdXQubGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbaXNMYWJlbFNyT25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudHNdPVwibW9udGhMaXN0SXRlbVwiXG4gICAgICAgICAgICAgICAgW21vZGVsXT1cIm1vbnRoWWVhci5tb250aFwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cInVzZXJJbnB1dE1vbnRoKCRldmVudClcIlxuICAgICAgICAgICAgPjwvZm9laG4tc2VsZWN0PlxuICAgICAgICAgICAgPGZvZWhuLXNlbGVjdFxuICAgICAgICAgICAgICAgIGlkPVwieWVhci1pbnB1dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhbGlnbi1zZWxmLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tZGF0ZS1waWNrZXIuc2NyZWVuLXJlYWRlci55ZWFyLWlucHV0LmxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2lzTGFiZWxTck9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRzXT1cInllYXJMaXN0SXRlbVwiXG4gICAgICAgICAgICAgICAgW21vZGVsXT1cIm1vbnRoWWVhci55ZWFyXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwidXNlcklucHV0WWVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2ZvZWhuLXNlbGVjdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxidXR0b24gaWQ9XCJuZXh0LW1vbnRoXCIgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj5cbiAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tcmlnaHRcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5uZXh0LW1vbnRoLWJ1dHRvbi50aXRsZScgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9mb2Vobi1pY29uLWNoZXZyb24tcmlnaHQ+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDx0YWJsZVxuICAgICAgICBpZD1cImRhdGVwaWNrZXJfdGFibGVcIlxuICAgICAgICByb2xlPVwiZ3JpZFwiXG4gICAgICAgIChmb2N1c2luKT1cIm9uRGF5c0ZvY3VzaW4oKVwiXG4gICAgICAgIChmb2N1c291dCk9XCJvbkRheXNGb2N1c291dCgpXCJcbiAgICA+XG4gICAgICAgIDx0aGVhZCByb2xlPVwicHJlc2VudGF0aW9uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8dHIgcm9sZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJjb2x1bW5oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgd2Vla2RheSBvZiB3ZWVrRGF5c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Zm9laG4tYWJiclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwid2Vla2RheS5zdWJzdHIoMCwgMilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIndlZWtkYXlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mb2Vobi1hYmJyPlxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHkgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICAgICAgPHRyIHJvbGU9XCJyb3dcIiAqbmdGb3I9XCJsZXQgd2VlayBvZiB3ZWVrczsgbGV0IGluZGV4Um93ID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheU9mV2VlayBvZiB3ZWVrOyBsZXQgaW5kZXhDb2x1bW4gPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjZGF5QnV0dG9uRWxlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidkYXlfJyArIGluZGV4Um93ICsgJ18nICsgaW5kZXhDb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImdldERheVRhYkluZGV4KGRheU9mV2VlaylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJ0bi1pbmZvXT1cIiFpc1RvZGF5KGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLXNlY29uZGFyeV09XCJpc1RvZGF5KGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLWRhbmdlcl09XCJpc1NlbGVjdGVkKGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtEYXlzW2luZGV4Q29sdW1uXSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlPZldlZWsuZGF0ZUFzUmVhZGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWlzLXRvZGF5XT1cImlzVG9kYXkoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtaXMtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChkYXlPZldlZWsuZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1yb3ctaW5kZXhdPVwiaW5kZXhSb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW4taW5kZXhdPVwiaW5kZXhDb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF5LW51bWJlcl09XCJkYXlPZldlZWsuZGF5T2ZNb250aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhZGF5T2ZXZWVrLmlzQ3VycmVudE1vbnRoID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVVzZXJJbnB1dChkYXlPZldlZWsuZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXlPZldlZWsuZGF5T2ZNb250aCB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
@@ -36,7 +36,7 @@ FoehnInputEmailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
36
36
  useExisting: forwardRef(() => FoehnInputEmailComponent),
37
37
  multi: true
38
38
  }
39
- ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group clearable-input-form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <input\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n [class.clearable-input]=\"displayClearButton() | async\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.maxlength]=\"getMaxLength()\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.type]=\"type\"\n [attr.pattern]=\"pattern\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (paste)=\"onPaste($event)\"\n (ngModelChange)=\"updateNgModel($event)\"\n (input)=\"handleChange(entryComponent.value)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n #entryComponent\n />\n\n <button\n type=\"button\"\n [id]=\"buildChildId() + 'ClearButton'\"\n *ngIf=\"displayClearButton() | async\"\n class=\"clearable-input-clear-button btn\"\n (click)=\"onClear()\"\n >\n <foehn-icon-times\n class=\"clearable-input-clear-button-icon\"\n title=\"R\u00E9initialiser le champs\"\n ></foehn-icon-times>\n </button>\n</div>\n", styles: ["input::-ms-clear{display:none}input.clearable-input{padding-right:30px}.clearable-input-form-group{position:relative}.clearable-input-clear-button{position:absolute;bottom:4px;right:4px;height:30px;width:30px;background:none;border:none}.clearable-input-clear-button-icon{top:4px;right:8px;position:absolute}:host ::ng-deep .clearable-input-clear-button.btn .svg-inline--fa{color:#595959!important}:host ::ng-deep .clearable-input-clear-button.btn:hover .svg-inline--fa{color:#000!important}.chars-remaining{color:#757575;font-size:.9rem}.char-count-exceeded{color:#c21f39}:host ::ng-deep .sameLine-list{display:inline;list-style:none;padding:0}:host ::ng-deep .sameLine-list li{display:inline;padding:3px}\n"], components: [{ type: i1.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: i2.FoehnIconTimesComponent, selector: "foehn-icon-times" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "fromDictionary": i5.SdkDictionaryPipe, "async": i3.AsyncPipe } });
39
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group clearable-input-form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <label\n [attr.id]=\"buildChildId() + 'Label'\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <input\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n [class.clearable-input]=\"displayClearButton() | async\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.maxlength]=\"getMaxLength()\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.type]=\"type\"\n [attr.pattern]=\"pattern\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (paste)=\"onPaste($event)\"\n (ngModelChange)=\"updateNgModel($event)\"\n (input)=\"handleChange(entryComponent.value)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n #entryComponent\n />\n\n <button\n type=\"button\"\n [id]=\"buildChildId() + 'ClearButton'\"\n *ngIf=\"displayClearButton() | async\"\n class=\"clearable-input-clear-button btn\"\n (click)=\"onClear()\"\n >\n <foehn-icon-times\n class=\"clearable-input-clear-button-icon\"\n title=\"R\u00E9initialiser le champs\"\n ></foehn-icon-times>\n </button>\n</div>\n", styles: ["input::-ms-clear{display:none}input.clearable-input{padding-right:30px}.clearable-input-form-group{position:relative}.clearable-input-clear-button{position:absolute;bottom:4px;right:4px;height:30px;width:30px;background:none;border:none}.clearable-input-clear-button-icon{top:4px;right:8px;position:absolute}:host ::ng-deep .clearable-input-clear-button.btn .svg-inline--fa{color:#595959!important}:host ::ng-deep .clearable-input-clear-button.btn:hover .svg-inline--fa{color:#000!important}.chars-remaining{color:#757575;font-size:.9rem}.char-count-exceeded{color:#c21f39}:host ::ng-deep .sameLine-list{display:inline;list-style:none;padding:0}:host ::ng-deep .sameLine-list li{display:inline;padding:3px}\n"], components: [{ type: i1.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: i2.FoehnIconTimesComponent, selector: "foehn-icon-times" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "fromDictionary": i5.SdkDictionaryPipe, "async": i3.AsyncPipe } });
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnInputEmailComponent, decorators: [{
41
41
  type: Component,
42
42
  args: [{
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
52
52
  ]
53
53
  }]
54
54
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LWVtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBY3ZDLE1BQU0sT0FBTyx3QkFDVCxTQUFRLHlCQUF5QjtJQUVqQyxZQUFvQixNQUFjO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBRFEsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUVsQyxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDdkIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDOztxSEFyQlEsd0JBQXdCO3lHQUF4Qix3QkFBd0IsNENBUnRCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7WUFDdkQsS0FBSyxFQUFFLElBQUk7U0FDZDtLQUNKLGlEQ2ZMLDIzRUF1RUE7MkZEdERhLHdCQUF3QjtrQkFacEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsOEJBQThCO29CQUMzQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDMUMsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDOzRCQUN2RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgTmdab25lLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLWlucHV0LXN0cmluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWlucHV0LWVtYWlsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWlucHV0LmNvbXBvbmVudC5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9laG5JbnB1dENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvZWhuSW5wdXRFbWFpbENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobklucHV0RW1haWxDb21wb25lbnRcbiAgICBleHRlbmRzIEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZW1haWwnO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZSA9ICdlbWFpbCc7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICEhdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY2xlYXJhYmxlLWlucHV0LWZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8bGFiZWxcbiAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgKm5nSWY9XCJsYWJlbCAmJiB0eXBlICE9PSAnaGlkZGVuJ1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAnc3Itb25seScgOiBsYWJlbFN0eWxlTW9kaWZpZXJcIlxuICAgID5cbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiIXJlcXVpcmVkICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cblxuICAgIDxmb2Vobi12YWxpZGF0aW9uLWFsZXJ0cyBbY29tcG9uZW50XT1cInRoaXNcIj48L2ZvZWhuLXZhbGlkYXRpb24tYWxlcnRzPlxuXG4gICAgPHNtYWxsXG4gICAgICAgICpuZ0lmPVwiaGVscFRleHQgJiYgdHlwZSAhPT0gJ2hpZGRlbidcIlxuICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoKSArICdIZWxwJ1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgW2lubmVySFRNTF09XCJoZWxwVGV4dFwiXG4gICAgPjwvc21hbGw+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8aW5wdXRcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgaGFzSW5oZXJpdEVycm9yRnJvbVBhcmVudCgpXCJcbiAgICAgICAgW2NsYXNzLmNsZWFyYWJsZS1pbnB1dF09XCJkaXNwbGF5Q2xlYXJCdXR0b24oKSB8IGFzeW5jXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBbbmFtZV09XCJuYW1lIHx8IGxhYmVsXCJcbiAgICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cImdldE1heExlbmd0aCgpXCJcbiAgICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImdldEF1dG9Db21wbGV0ZSgpXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgIFthdHRyLnBhdHRlcm5dPVwicGF0dGVyblwiXG4gICAgICAgIFthdHRyLm1pbl09XCJtaW5cIlxuICAgICAgICBbYXR0ci5tYXhdPVwibWF4XCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImdldERlc2NyaWJlZEJ5KClcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWQgfHwgbnVsbFwiXG4gICAgICAgIFtuZ01vZGVsXT1cIm1vZGVsXCJcbiAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZU5nTW9kZWwoJGV2ZW50KVwiXG4gICAgICAgIChpbnB1dCk9XCJoYW5kbGVDaGFuZ2UoZW50cnlDb21wb25lbnQudmFsdWUpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAjZW50cnlDb21wb25lbnRcbiAgICAvPlxuXG4gICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ0NsZWFyQnV0dG9uJ1wiXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwiY2xlYXJhYmxlLWlucHV0LWNsZWFyLWJ1dHRvbiBidG5cIlxuICAgICAgICAoY2xpY2spPVwib25DbGVhcigpXCJcbiAgICA+XG4gICAgICAgIDxmb2Vobi1pY29uLXRpbWVzXG4gICAgICAgICAgICBjbGFzcz1cImNsZWFyYWJsZS1pbnB1dC1jbGVhci1idXR0b24taWNvblwiXG4gICAgICAgICAgICB0aXRsZT1cIlLDqWluaXRpYWxpc2VyIGxlIGNoYW1wc1wiXG4gICAgICAgID48L2ZvZWhuLWljb24tdGltZXM+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LWVtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBY3ZDLE1BQU0sT0FBTyx3QkFDVCxTQUFRLHlCQUF5QjtJQUVqQyxZQUFvQixNQUFjO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBRFEsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUVsQyxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDdkIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDOztxSEFyQlEsd0JBQXdCO3lHQUF4Qix3QkFBd0IsNENBUnRCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7WUFDdkQsS0FBSyxFQUFFLElBQUk7U0FDZDtLQUNKLGlEQ2ZMLDI2RUF3RUE7MkZEdkRhLHdCQUF3QjtrQkFacEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsOEJBQThCO29CQUMzQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDMUMsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDOzRCQUN2RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgTmdab25lLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLWlucHV0LXN0cmluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWlucHV0LWVtYWlsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWlucHV0LmNvbXBvbmVudC5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9laG5JbnB1dENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvZWhuSW5wdXRFbWFpbENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobklucHV0RW1haWxDb21wb25lbnRcbiAgICBleHRlbmRzIEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZW1haWwnO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZSA9ICdlbWFpbCc7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICEhdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY2xlYXJhYmxlLWlucHV0LWZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8bGFiZWxcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCkgKyAnTGFiZWwnXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgKm5nSWY9XCJsYWJlbCAmJiB0eXBlICE9PSAnaGlkZGVuJ1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAnc3Itb25seScgOiBsYWJlbFN0eWxlTW9kaWZpZXJcIlxuICAgID5cbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiIXJlcXVpcmVkICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cblxuICAgIDxmb2Vobi12YWxpZGF0aW9uLWFsZXJ0cyBbY29tcG9uZW50XT1cInRoaXNcIj48L2ZvZWhuLXZhbGlkYXRpb24tYWxlcnRzPlxuXG4gICAgPHNtYWxsXG4gICAgICAgICpuZ0lmPVwiaGVscFRleHQgJiYgdHlwZSAhPT0gJ2hpZGRlbidcIlxuICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoKSArICdIZWxwJ1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgW2lubmVySFRNTF09XCJoZWxwVGV4dFwiXG4gICAgPjwvc21hbGw+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8aW5wdXRcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgaGFzSW5oZXJpdEVycm9yRnJvbVBhcmVudCgpXCJcbiAgICAgICAgW2NsYXNzLmNsZWFyYWJsZS1pbnB1dF09XCJkaXNwbGF5Q2xlYXJCdXR0b24oKSB8IGFzeW5jXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBbbmFtZV09XCJuYW1lIHx8IGxhYmVsXCJcbiAgICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cImdldE1heExlbmd0aCgpXCJcbiAgICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImdldEF1dG9Db21wbGV0ZSgpXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgIFthdHRyLnBhdHRlcm5dPVwicGF0dGVyblwiXG4gICAgICAgIFthdHRyLm1pbl09XCJtaW5cIlxuICAgICAgICBbYXR0ci5tYXhdPVwibWF4XCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImdldERlc2NyaWJlZEJ5KClcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWQgfHwgbnVsbFwiXG4gICAgICAgIFtuZ01vZGVsXT1cIm1vZGVsXCJcbiAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZU5nTW9kZWwoJGV2ZW50KVwiXG4gICAgICAgIChpbnB1dCk9XCJoYW5kbGVDaGFuZ2UoZW50cnlDb21wb25lbnQudmFsdWUpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAjZW50cnlDb21wb25lbnRcbiAgICAvPlxuXG4gICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ0NsZWFyQnV0dG9uJ1wiXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwiY2xlYXJhYmxlLWlucHV0LWNsZWFyLWJ1dHRvbiBidG5cIlxuICAgICAgICAoY2xpY2spPVwib25DbGVhcigpXCJcbiAgICA+XG4gICAgICAgIDxmb2Vobi1pY29uLXRpbWVzXG4gICAgICAgICAgICBjbGFzcz1cImNsZWFyYWJsZS1pbnB1dC1jbGVhci1idXR0b24taWNvblwiXG4gICAgICAgICAgICB0aXRsZT1cIlLDqWluaXRpYWxpc2VyIGxlIGNoYW1wc1wiXG4gICAgICAgID48L2ZvZWhuLWljb24tdGltZXM+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -39,7 +39,7 @@ FoehnInputHiddenComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
39
39
  useExisting: forwardRef(() => FoehnInputHiddenComponent),
40
40
  multi: true
41
41
  }
42
- ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group clearable-input-form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <input\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n [class.clearable-input]=\"displayClearButton() | async\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.maxlength]=\"getMaxLength()\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.type]=\"type\"\n [attr.pattern]=\"pattern\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (paste)=\"onPaste($event)\"\n (ngModelChange)=\"updateNgModel($event)\"\n (input)=\"handleChange(entryComponent.value)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n #entryComponent\n />\n\n <button\n type=\"button\"\n [id]=\"buildChildId() + 'ClearButton'\"\n *ngIf=\"displayClearButton() | async\"\n class=\"clearable-input-clear-button btn\"\n (click)=\"onClear()\"\n >\n <foehn-icon-times\n class=\"clearable-input-clear-button-icon\"\n title=\"R\u00E9initialiser le champs\"\n ></foehn-icon-times>\n </button>\n</div>\n", components: [{ type: i1.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: i2.FoehnIconTimesComponent, selector: "foehn-icon-times" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "fromDictionary": i5.SdkDictionaryPipe, "async": i3.AsyncPipe } });
42
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group clearable-input-form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <label\n [attr.id]=\"buildChildId() + 'Label'\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <input\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n [class.clearable-input]=\"displayClearButton() | async\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.maxlength]=\"getMaxLength()\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.type]=\"type\"\n [attr.pattern]=\"pattern\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (paste)=\"onPaste($event)\"\n (ngModelChange)=\"updateNgModel($event)\"\n (input)=\"handleChange(entryComponent.value)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n #entryComponent\n />\n\n <button\n type=\"button\"\n [id]=\"buildChildId() + 'ClearButton'\"\n *ngIf=\"displayClearButton() | async\"\n class=\"clearable-input-clear-button btn\"\n (click)=\"onClear()\"\n >\n <foehn-icon-times\n class=\"clearable-input-clear-button-icon\"\n title=\"R\u00E9initialiser le champs\"\n ></foehn-icon-times>\n </button>\n</div>\n", components: [{ type: i1.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: i2.FoehnIconTimesComponent, selector: "foehn-icon-times" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "fromDictionary": i5.SdkDictionaryPipe, "async": i3.AsyncPipe } });
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnInputHiddenComponent, decorators: [{
44
44
  type: Component,
45
45
  args: [{
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
54
54
  ]
55
55
  }]
56
56
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtaGlkZGVuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC1oaWRkZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWF2QyxNQUFNLE9BQU8seUJBQ1QsU0FBUSx5QkFBeUI7SUFFakMsWUFBb0IsTUFBYztRQUM5QixLQUFLLEVBQUUsQ0FBQztRQURRLFdBQU0sR0FBTixNQUFNLENBQVE7SUFFbEMsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNkLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7O3NIQXhCUSx5QkFBeUI7MEdBQXpCLHlCQUF5Qiw2Q0FSdkI7UUFDUDtZQUNJLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztZQUN4RCxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osaURDZkwsMjNFQXVFQTsyRkR0RGEseUJBQXlCO2tCQVhyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSw4QkFBOEI7b0JBQzNDLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIE5nWm9uZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9laG5JbnB1dFN0cmluZ0NvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQtc3RyaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb2VobklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4taW5wdXQtaGlkZGVuJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5JbnB1dEhpZGRlbkNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobklucHV0SGlkZGVuQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBGb2VobklucHV0U3RyaW5nQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ2hpZGRlbic7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICEhdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpc3BsYXlDbGVhckJ1dHRvbigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwIGNsZWFyYWJsZS1pbnB1dC1mb3JtLWdyb3VwXCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbYXR0ci5pZF09XCJidWlsZElkKCdDb250YWluZXInKVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4+XG4gICAgPGxhYmVsXG4gICAgICAgIFthdHRyLmZvcl09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICpuZ0lmPVwibGFiZWwgJiYgdHlwZSAhPT0gJ2hpZGRlbidcIlxuICAgICAgICBbbmdDbGFzc109XCJpc0xhYmVsU3JPbmx5ID8gJ3NyLW9ubHknIDogbGFiZWxTdHlsZU1vZGlmaWVyXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHMgW2NvbXBvbmVudF09XCJ0aGlzXCI+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgIDxzbWFsbFxuICAgICAgICAqbmdJZj1cImhlbHBUZXh0ICYmIHR5cGUgIT09ICdoaWRkZW4nXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCkgKyAnSGVscCdcIlxuICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgID48L3NtYWxsPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPGlucHV0XG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IGhhc0luaGVyaXRFcnJvckZyb21QYXJlbnQoKVwiXG4gICAgICAgIFtjbGFzcy5jbGVhcmFibGUtaW5wdXRdPVwiZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgW25hbWVdPVwibmFtZSB8fCBsYWJlbFwiXG4gICAgICAgIFthdHRyLm1heGxlbmd0aF09XCJnZXRNYXhMZW5ndGgoKVwiXG4gICAgICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJnZXRBdXRvQ29tcGxldGUoKVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICBbYXR0ci50eXBlXT1cInR5cGVcIlxuICAgICAgICBbYXR0ci5wYXR0ZXJuXT1cInBhdHRlcm5cIlxuICAgICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIlxuICAgICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXG4gICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVOZ01vZGVsKCRldmVudClcIlxuICAgICAgICAoaW5wdXQpPVwiaGFuZGxlQ2hhbmdlKGVudHJ5Q29tcG9uZW50LnZhbHVlKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgI2VudHJ5Q29tcG9uZW50XG4gICAgLz5cblxuICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoKSArICdDbGVhckJ1dHRvbidcIlxuICAgICAgICAqbmdJZj1cImRpc3BsYXlDbGVhckJ1dHRvbigpIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cImNsZWFyYWJsZS1pbnB1dC1jbGVhci1idXR0b24gYnRuXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiXG4gICAgPlxuICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgY2xhc3M9XCJjbGVhcmFibGUtaW5wdXQtY2xlYXItYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgdGl0bGU9XCJSw6lpbml0aWFsaXNlciBsZSBjaGFtcHNcIlxuICAgICAgICA+PC9mb2Vobi1pY29uLXRpbWVzPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtaGlkZGVuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC1oaWRkZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWF2QyxNQUFNLE9BQU8seUJBQ1QsU0FBUSx5QkFBeUI7SUFFakMsWUFBb0IsTUFBYztRQUM5QixLQUFLLEVBQUUsQ0FBQztRQURRLFdBQU0sR0FBTixNQUFNLENBQVE7SUFFbEMsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNkLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7O3NIQXhCUSx5QkFBeUI7MEdBQXpCLHlCQUF5Qiw2Q0FSdkI7UUFDUDtZQUNJLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztZQUN4RCxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osaURDZkwsMjZFQXdFQTsyRkR2RGEseUJBQXlCO2tCQVhyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSw4QkFBOEI7b0JBQzNDLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIE5nWm9uZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9laG5JbnB1dFN0cmluZ0NvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQtc3RyaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb2VobklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4taW5wdXQtaGlkZGVuJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5JbnB1dEhpZGRlbkNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobklucHV0SGlkZGVuQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBGb2VobklucHV0U3RyaW5nQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ2hpZGRlbic7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICEhdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpc3BsYXlDbGVhckJ1dHRvbigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwIGNsZWFyYWJsZS1pbnB1dC1mb3JtLWdyb3VwXCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbYXR0ci5pZF09XCJidWlsZElkKCdDb250YWluZXInKVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4+XG4gICAgPGxhYmVsXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ0xhYmVsJ1wiXG4gICAgICAgIFthdHRyLmZvcl09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICpuZ0lmPVwibGFiZWwgJiYgdHlwZSAhPT0gJ2hpZGRlbidcIlxuICAgICAgICBbbmdDbGFzc109XCJpc0xhYmVsU3JPbmx5ID8gJ3NyLW9ubHknIDogbGFiZWxTdHlsZU1vZGlmaWVyXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHMgW2NvbXBvbmVudF09XCJ0aGlzXCI+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgIDxzbWFsbFxuICAgICAgICAqbmdJZj1cImhlbHBUZXh0ICYmIHR5cGUgIT09ICdoaWRkZW4nXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCkgKyAnSGVscCdcIlxuICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgID48L3NtYWxsPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPGlucHV0XG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IGhhc0luaGVyaXRFcnJvckZyb21QYXJlbnQoKVwiXG4gICAgICAgIFtjbGFzcy5jbGVhcmFibGUtaW5wdXRdPVwiZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgW25hbWVdPVwibmFtZSB8fCBsYWJlbFwiXG4gICAgICAgIFthdHRyLm1heGxlbmd0aF09XCJnZXRNYXhMZW5ndGgoKVwiXG4gICAgICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJnZXRBdXRvQ29tcGxldGUoKVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICBbYXR0ci50eXBlXT1cInR5cGVcIlxuICAgICAgICBbYXR0ci5wYXR0ZXJuXT1cInBhdHRlcm5cIlxuICAgICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIlxuICAgICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXG4gICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVOZ01vZGVsKCRldmVudClcIlxuICAgICAgICAoaW5wdXQpPVwiaGFuZGxlQ2hhbmdlKGVudHJ5Q29tcG9uZW50LnZhbHVlKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgI2VudHJ5Q29tcG9uZW50XG4gICAgLz5cblxuICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoKSArICdDbGVhckJ1dHRvbidcIlxuICAgICAgICAqbmdJZj1cImRpc3BsYXlDbGVhckJ1dHRvbigpIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cImNsZWFyYWJsZS1pbnB1dC1jbGVhci1idXR0b24gYnRuXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiXG4gICAgPlxuICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgY2xhc3M9XCJjbGVhcmFibGUtaW5wdXQtY2xlYXItYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgdGl0bGU9XCJSw6lpbml0aWFsaXNlciBsZSBjaGFtcHNcIlxuICAgICAgICA+PC9mb2Vobi1pY29uLXRpbWVzPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=