ontimize-web-ngx 15.0.0-beta.4 → 15.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/esm2020/lib/components/form/navigation/o-form.navigation.class.mjs +5 -2
  2. package/esm2020/lib/components/form/o-form.component.mjs +11 -2
  3. package/esm2020/lib/components/grid/o-grid.component.mjs +11 -1
  4. package/esm2020/lib/components/image/o-image.component.mjs +3 -3
  5. package/esm2020/lib/components/index.mjs +2 -1
  6. package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +3 -3
  7. package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +4 -4
  8. package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +2 -18
  9. package/esm2020/lib/components/input/o-form-service-component.class.mjs +7 -9
  10. package/esm2020/lib/components/o-service-component.class.mjs +3 -6
  11. package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +26 -4
  12. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +20 -4
  13. package/esm2020/lib/components/table/o-table.component.mjs +4 -1
  14. package/esm2020/lib/components/tree/header/index.mjs +2 -0
  15. package/esm2020/lib/components/tree/header/tree-menu/o-tree-menu.component.mjs +33 -0
  16. package/esm2020/lib/components/tree/index.mjs +5 -0
  17. package/esm2020/lib/components/tree/o-tree-dao.service.mjs +43 -0
  18. package/esm2020/lib/components/tree/o-tree.component.mjs +523 -0
  19. package/esm2020/lib/components/tree/o-tree.datasource.mjs +79 -0
  20. package/esm2020/lib/components/tree/o-tree.module.mjs +24 -0
  21. package/esm2020/lib/components/tree/tree-node/tree-node.component.mjs +49 -0
  22. package/esm2020/lib/config/o-modules.mjs +8 -6
  23. package/esm2020/lib/directives/o-mat-error.directive.mjs +4 -1
  24. package/esm2020/lib/i18n/i18n.mjs +17 -8
  25. package/esm2020/lib/layouts/form-layout/o-form-layout-manager-base.class.mjs +1 -1
  26. package/esm2020/lib/ontimize-web-ngx.module.mjs +4 -3
  27. package/esm2020/lib/services/permissions/o-permissions.module.mjs +1 -3
  28. package/esm2020/lib/services/permissions/permissions.service.mjs +18 -8
  29. package/esm2020/lib/services/state/o-tree-component-state.class.mjs +4 -0
  30. package/esm2020/lib/services/state/o-tree-component-state.service.mjs +50 -0
  31. package/fesm2015/ontimize-web-ngx.mjs +6441 -5678
  32. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  33. package/fesm2020/ontimize-web-ngx.mjs +6424 -5665
  34. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  35. package/lib/components/form/o-form.component.d.ts +4 -1
  36. package/lib/components/grid/o-grid.component.d.ts +1 -0
  37. package/lib/components/index.d.ts +1 -0
  38. package/lib/components/input/file-input/o-file-input.component.d.ts +1 -1
  39. package/lib/components/table/extensions/header/table-menu/o-table-menu.component.d.ts +5 -0
  40. package/lib/components/table/o-table.component.d.ts +1 -1
  41. package/lib/components/tree/header/index.d.ts +1 -0
  42. package/lib/components/tree/header/tree-menu/o-tree-menu.component.d.ts +13 -0
  43. package/lib/components/tree/index.d.ts +4 -0
  44. package/lib/components/tree/o-tree-dao.service.d.ts +18 -0
  45. package/lib/components/tree/o-tree.component.d.ts +111 -0
  46. package/lib/components/tree/o-tree.datasource.d.ts +22 -0
  47. package/lib/components/tree/o-tree.module.d.ts +14 -0
  48. package/lib/components/tree/tree-node/tree-node.component.d.ts +14 -0
  49. package/lib/i18n/i18n.d.ts +9 -0
  50. package/lib/layouts/form-layout/o-form-layout-manager-base.class.d.ts +1 -0
  51. package/lib/ontimize-web-ngx.module.d.ts +2 -1
  52. package/lib/services/state/o-tree-component-state.class.d.ts +3 -0
  53. package/lib/services/state/o-tree-component-state.service.d.ts +13 -0
  54. package/package.json +1 -1
  55. package/theme.scss +2 -2
  56. package/theming/ontimize-style-v8.scss +2 -1
  57. package/theming/styles/density.scss +6 -2
  58. package/theming/styles/ontimize-v8/o-form-field-style.scss +6 -3
  59. package/theming/themes/ontimize-black-yellow.scss +13 -3
@@ -140,7 +140,7 @@ OComboSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
140
140
  useExisting: forwardRef(() => OComboSearchComponent),
141
141
  multi: true
142
142
  }
143
- ], viewQueries: [{ propertyName: "searchSelectInput", first: true, predicate: ["searchSelectInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "<input matInput class=\"o-combo-search-hidden\" />\n\n<mat-form-field class=\"o-combo-search-inner\">\n <input matInput #searchSelectInput placeholder=\"{{ placeholder | oTranslate }}\" (keydown)=\"handleKeydown($event)\"\n (input)=\"onInputChange($event.target.value)\" (blur)=\"onBlur($event.target.value)\" class=\"mat-select-search-input\" />\n <button mat-icon-button matSuffix *ngIf=\"value\" (click)=\"reset(true)\" class=\"mat-select-search-clear\">\n <mat-icon>close</mat-icon>\n </button>\n</mat-form-field>\n\n<div *ngIf=\"value && _options?.length === 0\" fxLayoutAlign=\"center center\" class=\"o-combo-search-emmpty\">\n <span>{{ 'INPUT.COMBO.EMPTY' | oTranslate }}</span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;padding:0 16px}:host .o-combo-search-hidden{display:none}:host .o-combo-search-inner{height:3em;width:100%}:host .o-combo-search-emmpty{height:3em;line-height:3em}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: i7.OTranslatePipe, name: "oTranslate" }] });
143
+ ], viewQueries: [{ propertyName: "searchSelectInput", first: true, predicate: ["searchSelectInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "<input matInput class=\"o-combo-search-hidden\" />\n\n<mat-form-field class=\"o-combo-search-inner\" subscriptSizing=\"dynamic\">\n <input matInput #searchSelectInput placeholder=\"{{ placeholder | oTranslate }}\" (keydown)=\"handleKeydown($event)\"\n (input)=\"onInputChange($event.target.value)\" (blur)=\"onBlur($event.target.value)\" class=\"mat-select-search-input\" />\n <button mat-icon-button matSuffix *ngIf=\"value\" (click)=\"reset(true)\" class=\"mat-select-search-clear\">\n <mat-icon>close</mat-icon>\n </button>\n</mat-form-field>\n\n<div *ngIf=\"value && _options?.length === 0\" fxLayoutAlign=\"center center\" class=\"o-combo-search-emmpty\">\n <span>{{ 'INPUT.COMBO.EMPTY' | oTranslate }}</span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;padding:0 16px}:host .o-combo-search-hidden{display:none}:host .o-combo-search-inner{height:3em;width:100%}:host .o-combo-search-emmpty{height:3em;line-height:3em}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: i7.OTranslatePipe, name: "oTranslate" }] });
144
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OComboSearchComponent, decorators: [{
145
145
  type: Component,
146
146
  args: [{ selector: 'o-combo-search', providers: [
@@ -151,7 +151,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
151
151
  }
152
152
  ], host: {
153
153
  '[class.o-combo-search]': 'true'
154
- }, template: "<input matInput class=\"o-combo-search-hidden\" />\n\n<mat-form-field class=\"o-combo-search-inner\">\n <input matInput #searchSelectInput placeholder=\"{{ placeholder | oTranslate }}\" (keydown)=\"handleKeydown($event)\"\n (input)=\"onInputChange($event.target.value)\" (blur)=\"onBlur($event.target.value)\" class=\"mat-select-search-input\" />\n <button mat-icon-button matSuffix *ngIf=\"value\" (click)=\"reset(true)\" class=\"mat-select-search-clear\">\n <mat-icon>close</mat-icon>\n </button>\n</mat-form-field>\n\n<div *ngIf=\"value && _options?.length === 0\" fxLayoutAlign=\"center center\" class=\"o-combo-search-emmpty\">\n <span>{{ 'INPUT.COMBO.EMPTY' | oTranslate }}</span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;padding:0 16px}:host .o-combo-search-hidden{display:none}:host .o-combo-search-inner{height:3em;width:100%}:host .o-combo-search-emmpty{height:3em;line-height:3em}\n"] }]
154
+ }, template: "<input matInput class=\"o-combo-search-hidden\" />\n\n<mat-form-field class=\"o-combo-search-inner\" subscriptSizing=\"dynamic\">\n <input matInput #searchSelectInput placeholder=\"{{ placeholder | oTranslate }}\" (keydown)=\"handleKeydown($event)\"\n (input)=\"onInputChange($event.target.value)\" (blur)=\"onBlur($event.target.value)\" class=\"mat-select-search-input\" />\n <button mat-icon-button matSuffix *ngIf=\"value\" (click)=\"reset(true)\" class=\"mat-select-search-clear\">\n <mat-icon>close</mat-icon>\n </button>\n</mat-form-field>\n\n<div *ngIf=\"value && _options?.length === 0\" fxLayoutAlign=\"center center\" class=\"o-combo-search-emmpty\">\n <span>{{ 'INPUT.COMBO.EMPTY' | oTranslate }}</span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;padding:0 16px}:host .o-combo-search-hidden{display:none}:host .o-combo-search-inner{height:3em;width:100%}:host .o-combo-search-emmpty{height:3em;line-height:3em}\n"] }]
155
155
  }], ctorParameters: function () { return [{ type: i8.MatSelect, decorators: [{
156
156
  type: Inject,
157
157
  args: [MatSelect]
@@ -159,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
159
159
  type: ViewChild,
160
160
  args: ['searchSelectInput', { read: ElementRef }]
161
161
  }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1jb21iby1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvY29tYm8vY29tYm8tc2VhcmNoL28tY29tYm8tc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2NvbWJvL2NvbWJvLXNlYXJjaC9vLWNvbWJvLXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBSU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFpQmpELE1BQU0sT0FBTyxxQkFBcUI7SUFRaEMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFnQkQsWUFDNEIsU0FBb0IsRUFDdEMsaUJBQW9DO1FBRGxCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDdEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQTFCdkMsZ0JBQVcsR0FBVyxRQUFRLENBQUM7UUFtQjVCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3BDLGVBQVUsR0FBRyxJQUFJLE9BQU8s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V0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztZQUNwRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsNkhBc0J1QyxVQUFVLDZCQ2xEcEQsb3NCQWFBOzJGRG9CYSxxQkFBcUI7a0JBZmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLGFBR2Y7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLFFBQ0s7d0JBQ0osd0JBQXdCLEVBQUUsTUFBTTtxQkFDakM7OzBCQTZCRSxNQUFNOzJCQUFDLFNBQVM7NEVBVFQsaUJBQWlCO3NCQUQxQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tY29tYm8tc2VhcmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tY29tYm8tc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1jb21iby1zZWFyY2guY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPQ29tYm9TZWFyY2hDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tY29tYm8tc2VhcmNoXSc6ICd0cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9Db21ib1NlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTRUFSQ0gnO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIE1hdFNlbGVjdCBvcHRpb25zICovXG4gIHB1YmxpYyBfb3B0aW9uczogUXVlcnlMaXN0PE1hdE9wdGlvbj47XG5cbiAgLyoqIEN1cnJlbnQgc2VhcmNoIHZhbHVlICovXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwcm90ZWN0ZWQgX3ZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqIFByZXZpb3VzbHkgc2VsZWN0ZWQgdmFsdWVzIHdoZW4gdXNpbmcgPG1hdC1zZWxlY3QgW211bHRpcGxlXT1cInRydWVcIj4gKi9cbiAgcHJvdGVjdGVkIHByZXZpb3VzU2VsZWN0ZWRWYWx1ZXM6IGFueVtdO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNlYXJjaCBpbnB1dCBmaWVsZCAqL1xuICBAVmlld0NoaWxkKCdzZWFyY2hTZWxlY3RJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcm90ZWN0ZWQgc2VhcmNoU2VsZWN0SW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqIEV2ZW50IHRoYXQgZW1pdHMgd2hlbiB0aGUgY3VycmVudCB2YWx1ZSBjaGFuZ2VzICovXG4gIHByb3RlY3RlZCBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogU3ViamVjdCB0aGF0IGVtaXRzIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBkZXN0cm95ZWQuICovXG4gIHByb3RlY3RlZCBfb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1hdFNlbGVjdCkgcHVibGljIG1hdFNlbGVjdDogTWF0U2VsZWN0LFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIHdoZW4gdGhlIHNlbGVjdCBkcm9wZG93biBwYW5lbCBpcyBvcGVuZWQgb3IgY2xvc2VkLCBmb2N1cyB0aGUgc2VhcmNoIGZpZWxkIHdoZW4gb3BlbmluZyBhbmQgY2xlYXIgaXQgd2hlbiBjbG9zaW5nXG4gICAgdGhpcy5tYXRTZWxlY3Qub3BlbmVkQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUob3BlbmVkID0+IG9wZW5lZCA/IHRoaXMuZm9jdXMoKSA6IHRoaXMucmVzZXQoKSk7XG5cbiAgICAvLyBzZXQgdGhlIGZpcnN0IGl0ZW0gYWN0aXZlIGFmdGVyIHRoZSBvcHRpb25zIGNoYW5nZWRcbiAgICB0aGlzLm1hdFNlbGVjdC5vcGVuZWRDaGFuZ2VcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tYXRTZWxlY3QubXVsdGlwbGUpIHtcbiAgICAgICAgICB0aGlzLnByZXZpb3VzU2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLm1hdFNlbGVjdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5tYXRTZWxlY3Qub3B0aW9ucztcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5jaGFuZ2VzXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXlNYW5hZ2VyID0gdGhpcy5tYXRTZWxlY3QuX2tleU1hbmFnZXI7XG4gICAgICAgICAgICBpZiAoa2V5TWFuYWdlciAmJiB0aGlzLm1hdFNlbGVjdC5wYW5lbE9wZW4pIHtcbiAgICAgICAgICAgICAgLy8gYXZvaWQgXCJleHByZXNzaW9uIGhhcyBiZWVuIGNoYW5nZWRcIiBlcnJvclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGtleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCksIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAvLyBkZXRlY3QgY2hhbmdlcyB3aGVuIHRoZSBpbnB1dCBjaGFuZ2VzXG4gICAgdGhpcy5jaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSk7XG5cbiAgICB0aGlzLmluaXRNdWx0aXBsZUhhbmRsaW5nKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fb25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZTogRnVuY3Rpb24gPSAoXzogYW55KSA9PiB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgcHVibGljIG9uVG91Y2hlZDogRnVuY3Rpb24gPSAoXzogYW55KSA9PiB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGtleSBkb3duIGV2ZW50IHdpdGggTWF0U2VsZWN0LlxuICAgKiBBbGxvd3MgZS5nLiBzZWxlY3Rpbmcgd2l0aCBlbnRlciBrZXksIG5hdmlnYXRpb24gd2l0aCBhcnJvdyBrZXlzLCBldGMuXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcHVibGljIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMzIpIHtcbiAgICAgIC8vIGRvIG5vdCBwcm9wYWdhdGUgc3BhY2VzIHRvIE1hdFNlbGVjdCwgYXMgdGhpcyB3b3VsZCBzZWxlY3QgdGhlIGN1cnJlbnRseSBhY3RpdmUgb3B0aW9uXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25JbnB1dENoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVDaGFuZ2VkID0gdmFsdWUgIT09IHRoaXMuX3ZhbHVlO1xuICAgIGlmICh2YWx1ZUNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkJsdXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZUNoYW5nZWQgPSB2YWx1ZSAhPT0gdGhpcy5fdmFsdWU7XG4gICAgaWYgKHZhbHVlQ2hhbmdlZCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIHNlYXJjaCBpbnB1dCBmaWVsZFxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWFyY2hTZWxlY3RJbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBzYXZlIGFuZCByZXN0b3JlIHNjcm9sbFRvcCBvZiBwYW5lbCwgc2luY2UgaXQgd2lsbCBiZSByZXNldCBieSBmb2N1cygpXG4gICAgLy8gbm90ZTogdGhpcyBpcyBoYWNreVxuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5tYXRTZWxlY3QucGFuZWwubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSBwYW5lbC5zY3JvbGxUb3A7XG5cbiAgICAvLyBmb2N1c1xuICAgIHRoaXMuc2VhcmNoU2VsZWN0SW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgcGFuZWwuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgY3VycmVudCBzZWFyY2ggdmFsdWVcbiAgICogQHBhcmFtIGZvY3VzIHdoZXRoZXIgdG8gZm9jdXMgYWZ0ZXIgcmVzZXR0aW5nXG4gICAqL1xuICBwdWJsaWMgcmVzZXQoZm9jdXM/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFNlbGVjdElucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoU2VsZWN0SW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMub25JbnB1dENoYW5nZSgnJyk7XG4gICAgaWYgKGZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGhhbmRsaW5nIDxtYXQtc2VsZWN0IFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAqIE5vdGU6IHRvIGltcHJvdmUgdGhpcyBjb2RlLCBtYXQtc2VsZWN0IHNob3VsZCBiZSBleHRlbmRlZCB0byBhbGxvdyBkaXNhYmxpbmcgcmVzZXR0aW5nIHRoZSBzZWxlY3Rpb24gd2hpbGUgZmlsdGVyaW5nLlxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXRNdWx0aXBsZUhhbmRsaW5nKCk6IHZvaWQge1xuICAgIC8vIGlmIDxtYXQtc2VsZWN0IFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgLy8gc3RvcmUgcHJldmlvdXNseSBzZWxlY3RlZCB2YWx1ZXMgYW5kIHJlc3RvcmUgdGhlbSB3aGVuIHRoZXkgYXJlIGRlc2VsZWN0ZWRcbiAgICAvLyBiZWNhdXNlIHRoZSBvcHRpb24gaXMgbm90IGF2YWlsYWJsZSB3aGlsZSB3ZSBhcmUgY3VycmVudGx5IGZpbHRlcmluZ1xuICAgIHRoaXMubWF0U2VsZWN0LnZhbHVlQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUodmFsdWVzID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWF0U2VsZWN0Lm11bHRpcGxlKSB7XG4gICAgICAgICAgbGV0IHJlc3RvcmVTZWxlY3RlZFZhbHVlcyA9IGZhbHNlO1xuICAgICAgICAgIGlmICh0aGlzLl92YWx1ZSAmJiB0aGlzLl92YWx1ZS5sZW5ndGhcbiAgICAgICAgICAgICYmIHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcyAmJiBBcnJheS5pc0FycmF5KHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcykpIHtcbiAgICAgICAgICAgIGlmICghdmFsdWVzIHx8ICFBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgdmFsdWVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBvcHRpb25WYWx1ZXMgPSB0aGlzLm1hdFNlbGVjdC5vcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcy5mb3JFYWNoKHByZXZpb3VzVmFsdWUgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsdWVzLmluZGV4T2YocHJldmlvdXNWYWx1ZSkgPT09IC0xICYmIG9wdGlvblZhbHVlcy5pbmRleE9mKHByZXZpb3VzVmFsdWUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIGlmIGEgdmFsdWUgdGhhdCB3YXMgc2VsZWN0ZWQgYmVmb3JlIGlzIGRlc2VsZWN0ZWQgYW5kIG5vdCBmb3VuZCBpbiB0aGUgb3B0aW9ucywgaXQgd2FzIGRlc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAvLyBkdWUgdG8gdGhlIGZpbHRlcmluZywgc28gd2UgcmVzdG9yZSBpdC5cbiAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChwcmV2aW91c1ZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXN0b3JlU2VsZWN0ZWRWYWx1ZXMgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGVkVmFsdWVzKSB7XG4gICAgICAgICAgICB0aGlzLm1hdFNlbGVjdC5fb25DaGFuZ2UodmFsdWVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnByZXZpb3VzU2VsZWN0ZWRWYWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbn1cbiIsIjxpbnB1dCBtYXRJbnB1dCBjbGFzcz1cIm8tY29tYm8tc2VhcmNoLWhpZGRlblwiIC8+XG5cbjxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm8tY29tYm8tc2VhcmNoLWlubmVyXCI+XG4gIDxpbnB1dCBtYXRJbnB1dCAjc2VhcmNoU2VsZWN0SW5wdXQgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlciB8IG9UcmFuc2xhdGUgfX1cIiAoa2V5ZG93bik9XCJoYW5kbGVLZXlkb3duKCRldmVudClcIlxuICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpXCIgKGJsdXIpPVwib25CbHVyKCRldmVudC50YXJnZXQudmFsdWUpXCIgY2xhc3M9XCJtYXQtc2VsZWN0LXNlYXJjaC1pbnB1dFwiIC8+XG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCAqbmdJZj1cInZhbHVlXCIgKGNsaWNrKT1cInJlc2V0KHRydWUpXCIgY2xhc3M9XCJtYXQtc2VsZWN0LXNlYXJjaC1jbGVhclwiPlxuICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuPC9tYXQtZm9ybS1maWVsZD5cblxuPGRpdiAqbmdJZj1cInZhbHVlICYmIF9vcHRpb25zPy5sZW5ndGggPT09IDBcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGNsYXNzPVwiby1jb21iby1zZWFyY2gtZW1tcHR5XCI+XG4gIDxzcGFuPnt7ICdJTlBVVC5DT01CTy5FTVBUWScgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuPC9kaXY+XG4iXX0=
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1jb21iby1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvY29tYm8vY29tYm8tc2VhcmNoL28tY29tYm8tc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2NvbWJvL2NvbWJvLXNlYXJjaC9vLWNvbWJvLXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBSU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFpQmpELE1BQU0sT0FBTyxxQkFBcUI7SUFRaEMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFnQkQsWUFDNEIsU0FBb0IsRUFDdEMsaUJBQW9DO1FBRGxCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDdEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQTFCdkMsZ0JBQVcsR0FBVyxRQUFRLENBQUM7UUFtQjVCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3BDLGVBQVUsR0FBRyxJQUFJLE9BQU8s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V0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztZQUNwRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsNkhBc0J1QyxVQUFVLDZCQ2xEcEQsZ3VCQWFBOzJGRG9CYSxxQkFBcUI7a0JBZmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLGFBR2Y7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLFFBQ0s7d0JBQ0osd0JBQXdCLEVBQUUsTUFBTTtxQkFDakM7OzBCQTZCRSxNQUFNOzJCQUFDLFNBQVM7NEVBVFQsaUJBQWlCO3NCQUQxQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tY29tYm8tc2VhcmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tY29tYm8tc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1jb21iby1zZWFyY2guY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPQ29tYm9TZWFyY2hDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tY29tYm8tc2VhcmNoXSc6ICd0cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9Db21ib1NlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTRUFSQ0gnO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIE1hdFNlbGVjdCBvcHRpb25zICovXG4gIHB1YmxpYyBfb3B0aW9uczogUXVlcnlMaXN0PE1hdE9wdGlvbj47XG5cbiAgLyoqIEN1cnJlbnQgc2VhcmNoIHZhbHVlICovXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwcm90ZWN0ZWQgX3ZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqIFByZXZpb3VzbHkgc2VsZWN0ZWQgdmFsdWVzIHdoZW4gdXNpbmcgPG1hdC1zZWxlY3QgW211bHRpcGxlXT1cInRydWVcIj4gKi9cbiAgcHJvdGVjdGVkIHByZXZpb3VzU2VsZWN0ZWRWYWx1ZXM6IGFueVtdO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNlYXJjaCBpbnB1dCBmaWVsZCAqL1xuICBAVmlld0NoaWxkKCdzZWFyY2hTZWxlY3RJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcm90ZWN0ZWQgc2VhcmNoU2VsZWN0SW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqIEV2ZW50IHRoYXQgZW1pdHMgd2hlbiB0aGUgY3VycmVudCB2YWx1ZSBjaGFuZ2VzICovXG4gIHByb3RlY3RlZCBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogU3ViamVjdCB0aGF0IGVtaXRzIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBkZXN0cm95ZWQuICovXG4gIHByb3RlY3RlZCBfb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1hdFNlbGVjdCkgcHVibGljIG1hdFNlbGVjdDogTWF0U2VsZWN0LFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIHdoZW4gdGhlIHNlbGVjdCBkcm9wZG93biBwYW5lbCBpcyBvcGVuZWQgb3IgY2xvc2VkLCBmb2N1cyB0aGUgc2VhcmNoIGZpZWxkIHdoZW4gb3BlbmluZyBhbmQgY2xlYXIgaXQgd2hlbiBjbG9zaW5nXG4gICAgdGhpcy5tYXRTZWxlY3Qub3BlbmVkQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUob3BlbmVkID0+IG9wZW5lZCA/IHRoaXMuZm9jdXMoKSA6IHRoaXMucmVzZXQoKSk7XG5cbiAgICAvLyBzZXQgdGhlIGZpcnN0IGl0ZW0gYWN0aXZlIGFmdGVyIHRoZSBvcHRpb25zIGNoYW5nZWRcbiAgICB0aGlzLm1hdFNlbGVjdC5vcGVuZWRDaGFuZ2VcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tYXRTZWxlY3QubXVsdGlwbGUpIHtcbiAgICAgICAgICB0aGlzLnByZXZpb3VzU2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLm1hdFNlbGVjdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5tYXRTZWxlY3Qub3B0aW9ucztcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5jaGFuZ2VzXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXlNYW5hZ2VyID0gdGhpcy5tYXRTZWxlY3QuX2tleU1hbmFnZXI7XG4gICAgICAgICAgICBpZiAoa2V5TWFuYWdlciAmJiB0aGlzLm1hdFNlbGVjdC5wYW5lbE9wZW4pIHtcbiAgICAgICAgICAgICAgLy8gYXZvaWQgXCJleHByZXNzaW9uIGhhcyBiZWVuIGNoYW5nZWRcIiBlcnJvclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGtleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCksIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAvLyBkZXRlY3QgY2hhbmdlcyB3aGVuIHRoZSBpbnB1dCBjaGFuZ2VzXG4gICAgdGhpcy5jaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSk7XG5cbiAgICB0aGlzLmluaXRNdWx0aXBsZUhhbmRsaW5nKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fb25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZTogRnVuY3Rpb24gPSAoXzogYW55KSA9PiB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgcHVibGljIG9uVG91Y2hlZDogRnVuY3Rpb24gPSAoXzogYW55KSA9PiB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGtleSBkb3duIGV2ZW50IHdpdGggTWF0U2VsZWN0LlxuICAgKiBBbGxvd3MgZS5nLiBzZWxlY3Rpbmcgd2l0aCBlbnRlciBrZXksIG5hdmlnYXRpb24gd2l0aCBhcnJvdyBrZXlzLCBldGMuXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcHVibGljIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMzIpIHtcbiAgICAgIC8vIGRvIG5vdCBwcm9wYWdhdGUgc3BhY2VzIHRvIE1hdFNlbGVjdCwgYXMgdGhpcyB3b3VsZCBzZWxlY3QgdGhlIGN1cnJlbnRseSBhY3RpdmUgb3B0aW9uXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25JbnB1dENoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVDaGFuZ2VkID0gdmFsdWUgIT09IHRoaXMuX3ZhbHVlO1xuICAgIGlmICh2YWx1ZUNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkJsdXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZUNoYW5nZWQgPSB2YWx1ZSAhPT0gdGhpcy5fdmFsdWU7XG4gICAgaWYgKHZhbHVlQ2hhbmdlZCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIHNlYXJjaCBpbnB1dCBmaWVsZFxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWFyY2hTZWxlY3RJbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBzYXZlIGFuZCByZXN0b3JlIHNjcm9sbFRvcCBvZiBwYW5lbCwgc2luY2UgaXQgd2lsbCBiZSByZXNldCBieSBmb2N1cygpXG4gICAgLy8gbm90ZTogdGhpcyBpcyBoYWNreVxuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5tYXRTZWxlY3QucGFuZWwubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSBwYW5lbC5zY3JvbGxUb3A7XG5cbiAgICAvLyBmb2N1c1xuICAgIHRoaXMuc2VhcmNoU2VsZWN0SW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgcGFuZWwuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgY3VycmVudCBzZWFyY2ggdmFsdWVcbiAgICogQHBhcmFtIGZvY3VzIHdoZXRoZXIgdG8gZm9jdXMgYWZ0ZXIgcmVzZXR0aW5nXG4gICAqL1xuICBwdWJsaWMgcmVzZXQoZm9jdXM/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFNlbGVjdElucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoU2VsZWN0SW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMub25JbnB1dENoYW5nZSgnJyk7XG4gICAgaWYgKGZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGhhbmRsaW5nIDxtYXQtc2VsZWN0IFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAqIE5vdGU6IHRvIGltcHJvdmUgdGhpcyBjb2RlLCBtYXQtc2VsZWN0IHNob3VsZCBiZSBleHRlbmRlZCB0byBhbGxvdyBkaXNhYmxpbmcgcmVzZXR0aW5nIHRoZSBzZWxlY3Rpb24gd2hpbGUgZmlsdGVyaW5nLlxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXRNdWx0aXBsZUhhbmRsaW5nKCk6IHZvaWQge1xuICAgIC8vIGlmIDxtYXQtc2VsZWN0IFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgLy8gc3RvcmUgcHJldmlvdXNseSBzZWxlY3RlZCB2YWx1ZXMgYW5kIHJlc3RvcmUgdGhlbSB3aGVuIHRoZXkgYXJlIGRlc2VsZWN0ZWRcbiAgICAvLyBiZWNhdXNlIHRoZSBvcHRpb24gaXMgbm90IGF2YWlsYWJsZSB3aGlsZSB3ZSBhcmUgY3VycmVudGx5IGZpbHRlcmluZ1xuICAgIHRoaXMubWF0U2VsZWN0LnZhbHVlQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUodmFsdWVzID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWF0U2VsZWN0Lm11bHRpcGxlKSB7XG4gICAgICAgICAgbGV0IHJlc3RvcmVTZWxlY3RlZFZhbHVlcyA9IGZhbHNlO1xuICAgICAgICAgIGlmICh0aGlzLl92YWx1ZSAmJiB0aGlzLl92YWx1ZS5sZW5ndGhcbiAgICAgICAgICAgICYmIHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcyAmJiBBcnJheS5pc0FycmF5KHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcykpIHtcbiAgICAgICAgICAgIGlmICghdmFsdWVzIHx8ICFBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgdmFsdWVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBvcHRpb25WYWx1ZXMgPSB0aGlzLm1hdFNlbGVjdC5vcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcy5mb3JFYWNoKHByZXZpb3VzVmFsdWUgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsdWVzLmluZGV4T2YocHJldmlvdXNWYWx1ZSkgPT09IC0xICYmIG9wdGlvblZhbHVlcy5pbmRleE9mKHByZXZpb3VzVmFsdWUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIGlmIGEgdmFsdWUgdGhhdCB3YXMgc2VsZWN0ZWQgYmVmb3JlIGlzIGRlc2VsZWN0ZWQgYW5kIG5vdCBmb3VuZCBpbiB0aGUgb3B0aW9ucywgaXQgd2FzIGRlc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAvLyBkdWUgdG8gdGhlIGZpbHRlcmluZywgc28gd2UgcmVzdG9yZSBpdC5cbiAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChwcmV2aW91c1ZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXN0b3JlU2VsZWN0ZWRWYWx1ZXMgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGVkVmFsdWVzKSB7XG4gICAgICAgICAgICB0aGlzLm1hdFNlbGVjdC5fb25DaGFuZ2UodmFsdWVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnByZXZpb3VzU2VsZWN0ZWRWYWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbn1cbiIsIjxpbnB1dCBtYXRJbnB1dCBjbGFzcz1cIm8tY29tYm8tc2VhcmNoLWhpZGRlblwiIC8+XG5cbjxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm8tY29tYm8tc2VhcmNoLWlubmVyXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICA8aW5wdXQgbWF0SW5wdXQgI3NlYXJjaFNlbGVjdElucHV0IHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfCBvVHJhbnNsYXRlIH19XCIgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcbiAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIChibHVyKT1cIm9uQmx1cigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIGNsYXNzPVwibWF0LXNlbGVjdC1zZWFyY2gtaW5wdXRcIiAvPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggKm5nSWY9XCJ2YWx1ZVwiIChjbGljayk9XCJyZXNldCh0cnVlKVwiIGNsYXNzPVwibWF0LXNlbGVjdC1zZWFyY2gtY2xlYXJcIj5cbiAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvbWF0LWZvcm0tZmllbGQ+XG5cbjxkaXYgKm5nSWY9XCJ2YWx1ZSAmJiBfb3B0aW9ucz8ubGVuZ3RoID09PSAwXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBjbGFzcz1cIm8tY29tYm8tc2VhcmNoLWVtbXB0eVwiPlxuICA8c3Bhbj57eyAnSU5QVVQuQ09NQk8uRU1QVFknIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
@@ -30,14 +30,14 @@ export class OCurrencyInputComponent extends ORealInputComponent {
30
30
  return this.existsOntimizeIcon() && this.currencySymbolPosition === position;
31
31
  }
32
32
  useSymbol(position) {
33
- return this.currency_symbols.hasOwnProperty(this.currencySymbol) && this.currencySymbolPosition === position;
33
+ return !this.existsOntimizeIcon() && this.currency_symbols.hasOwnProperty(this.currencySymbol) && this.currencySymbolPosition === position;
34
34
  }
35
35
  }
36
36
  OCurrencyInputComponent.currency_icons = ['USD', 'EUR', 'GBP', 'ILS', 'INR', 'JPY', 'KRW', 'BTC'];
37
37
  OCurrencyInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OCurrencyInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
38
- OCurrencyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OCurrencyInputComponent, selector: "o-currency-input", inputs: { currencySymbol: ["currency-symbol", "currencySymbol"], currencySymbolPosition: ["currency-symbol-position", "currencySymbolPosition"] }, usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\n <div *ngIf=\"useSymbol('left')\" matSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('left')\" svgIcon=\"ontimize:{{currencySymbol}}\" matSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\"></mat-icon>\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [type]=\"inputType\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" [min]=\"min\" [max]=\"max\" [step]=\"step\"\n [required]=\"isRequired\" (change)=\"onChangeEvent($event)\">\n\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <div *ngIf=\"useSymbol('right')\" matIconSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('right')\" svgIcon=\"ontimize:{{currencySymbol}}\" matIconSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\">\n </mat-icon>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('min')\">\n {{ 'FORM_VALIDATION.MIN_VALUE' | oTranslate }}: {{ getErrorValue('min', 'requiredMin') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('max')\">\n {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'requiredMax') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('minDecimaldigits')\">\n {{ 'FORM_VALIDATION.MIN_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('minDecimaldigits', 'requiredMinDecimaldigits') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('maxDecimaldigits')\">\n {{ 'FORM_VALIDATION.MAX_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('maxDecimaldigits', 'requiredMaxDecimaldigits') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i10.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
38
+ OCurrencyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OCurrencyInputComponent, selector: "o-currency-input", inputs: { currencySymbol: ["currency-symbol", "currencySymbol"], currencySymbolPosition: ["currency-symbol-position", "currencySymbolPosition"] }, usesInheritance: true, ngImport: i0, template: "<div class=\"currency-container\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\n <div *ngIf=\"useSymbol('left')\" matSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('left')\" svgIcon=\"ontimize:{{currencySymbol}}\" matSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\"></mat-icon>\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [type]=\"inputType\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" [min]=\"min\" [max]=\"max\" [step]=\"step\"\n [required]=\"isRequired\" (change)=\"onChangeEvent($event)\">\n\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <div *ngIf=\"useSymbol('right')\" matIconSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('right')\" svgIcon=\"ontimize:{{currencySymbol}}\" matIconSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\">\n </mat-icon>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('min')\">\n {{ 'FORM_VALIDATION.MIN_VALUE' | oTranslate }}: {{ getErrorValue('min', 'requiredMin') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('max')\">\n {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'requiredMax') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('minDecimaldigits')\">\n {{ 'FORM_VALIDATION.MIN_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('minDecimaldigits', 'requiredMinDecimaldigits') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('maxDecimaldigits')\">\n {{ 'FORM_VALIDATION.MAX_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('maxDecimaldigits', 'requiredMaxDecimaldigits') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n</div>\n", styles: [".currency-container .icon-btn{font-weight:700;font-size:20px;margin-right:4px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i10.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
39
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OCurrencyInputComponent, decorators: [{
40
40
  type: Component,
41
- args: [{ selector: 'o-currency-input', inputs: DEFAULT_INPUTS_O_CURRENCY_INPUT, encapsulation: ViewEncapsulation.None, template: "<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\n <div *ngIf=\"useSymbol('left')\" matSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('left')\" svgIcon=\"ontimize:{{currencySymbol}}\" matSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\"></mat-icon>\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [type]=\"inputType\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" [min]=\"min\" [max]=\"max\" [step]=\"step\"\n [required]=\"isRequired\" (change)=\"onChangeEvent($event)\">\n\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <div *ngIf=\"useSymbol('right')\" matIconSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('right')\" svgIcon=\"ontimize:{{currencySymbol}}\" matIconSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\">\n </mat-icon>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('min')\">\n {{ 'FORM_VALIDATION.MIN_VALUE' | oTranslate }}: {{ getErrorValue('min', 'requiredMin') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('max')\">\n {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'requiredMax') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('minDecimaldigits')\">\n {{ 'FORM_VALIDATION.MIN_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('minDecimaldigits', 'requiredMinDecimaldigits') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('maxDecimaldigits')\">\n {{ 'FORM_VALIDATION.MAX_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('maxDecimaldigits', 'requiredMaxDecimaldigits') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n</div>\n" }]
41
+ args: [{ selector: 'o-currency-input', inputs: DEFAULT_INPUTS_O_CURRENCY_INPUT, encapsulation: ViewEncapsulation.None, template: "<div class=\"currency-container\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\n <div *ngIf=\"useSymbol('left')\" matSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('left')\" svgIcon=\"ontimize:{{currencySymbol}}\" matSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\"></mat-icon>\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [type]=\"inputType\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" [min]=\"min\" [max]=\"max\" [step]=\"step\"\n [required]=\"isRequired\" (change)=\"onChangeEvent($event)\">\n\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <div *ngIf=\"useSymbol('right')\" matIconSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('right')\" svgIcon=\"ontimize:{{currencySymbol}}\" matIconSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\">\n </mat-icon>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('min')\">\n {{ 'FORM_VALIDATION.MIN_VALUE' | oTranslate }}: {{ getErrorValue('min', 'requiredMin') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('max')\">\n {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'requiredMax') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('minDecimaldigits')\">\n {{ 'FORM_VALIDATION.MIN_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('minDecimaldigits', 'requiredMinDecimaldigits') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('maxDecimaldigits')\">\n {{ 'FORM_VALIDATION.MAX_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('maxDecimaldigits', 'requiredMaxDecimaldigits') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n</div>\n", styles: [".currency-container .icon-btn{font-weight:700;font-size:20px;margin-right:4px}\n"] }]
42
42
  }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9jdXJyZW5jeS1pbnB1dC9vLWN1cnJlbmN5LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2N1cnJlbmN5LWlucHV0L28tY3VycmVuY3ktaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBRTdDLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHO0lBQzdDLGlDQUFpQztJQUNqQyxrREFBa0Q7Q0FDbkQsQ0FBQztBQVFGLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFOaEU7O1FBV0UscUJBQWdCLEdBQUcsWUFBWSxDQUFDLG9CQUFvQixDQUFDO1FBRXJELG1CQUFjLEdBQVcsS0FBSyxDQUFDO1FBQy9CLDJCQUFzQixHQUFXLE9BQU8sQ0FBQztLQWExQztJQVhXLGtCQUFrQjtRQUMxQixPQUFPLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBZ0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEtBQUssUUFBUSxDQUFDO0lBQy9FLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBZ0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEtBQUssUUFBUSxDQUFDO0lBQy9HLENBQUM7O0FBakJNLHNDQUFjLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0hBSHRFLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGtPQ2xCcEMsd3VGQTJDQTsyRkR6QmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLGtCQUFrQixVQUVwQiwrQkFBK0IsaUJBQ3hCLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgT1JlYWxJbnB1dENvbXBvbmVudFxufSBmcm9tICcuLi9yZWFsLWlucHV0L28tcmVhbC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VycmVuY3lVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0NVUlJFTkNZX0lOUFVUID0gW1xuICAnY3VycmVuY3lTeW1ib2w6IGN1cnJlbmN5LXN5bWJvbCcsXG4gICdjdXJyZW5jeVN5bWJvbFBvc2l0aW9uOiBjdXJyZW5jeS1zeW1ib2wtcG9zaXRpb24nXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWN1cnJlbmN5LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tY3VycmVuY3ktaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fQ1VSUkVOQ1lfSU5QVVQsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgT0N1cnJlbmN5SW5wdXRDb21wb25lbnQgZXh0ZW5kcyBPUmVhbElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuXG4gIHN0YXRpYyBjdXJyZW5jeV9pY29ucyA9IFsnVVNEJywgJ0VVUicsICdHQlAnLCAnSUxTJywgJ0lOUicsICdKUFknLCAnS1JXJywgJ0JUQyddO1xuXG4gIGN1cnJlbmN5X3N5bWJvbHMgPSBDdXJyZW5jeVV0aWwuY3VycmVuY3lDb2RlVG9TeW1ib2w7XG5cbiAgY3VycmVuY3lTeW1ib2w6IHN0cmluZyA9ICdFVVInO1xuICBjdXJyZW5jeVN5bWJvbFBvc2l0aW9uOiBzdHJpbmcgPSAncmlnaHQnO1xuXG4gIHByb3RlY3RlZCBleGlzdHNPbnRpbWl6ZUljb24oKSB7XG4gICAgcmV0dXJuIE9DdXJyZW5jeUlucHV0Q29tcG9uZW50LmN1cnJlbmN5X2ljb25zLmluZGV4T2YodGhpcy5jdXJyZW5jeVN5bWJvbCkgIT09IC0xO1xuICB9XG5cbiAgdXNlSWNvbihwb3NpdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXhpc3RzT250aW1pemVJY29uKCkgJiYgdGhpcy5jdXJyZW5jeVN5bWJvbFBvc2l0aW9uID09PSBwb3NpdGlvbjtcbiAgfVxuXG4gIHVzZVN5bWJvbChwb3NpdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVuY3lfc3ltYm9scy5oYXNPd25Qcm9wZXJ0eSh0aGlzLmN1cnJlbmN5U3ltYm9sKSAmJiB0aGlzLmN1cnJlbmN5U3ltYm9sUG9zaXRpb24gPT09IHBvc2l0aW9uO1xuICB9XG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZ2V0Rm9ybUdyb3VwKClcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCIgW21hdFRvb2x0aXBDbGFzc109XCJ0b29sdGlwQ2xhc3NcIiBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXG4gIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIiBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCJ0b29sdGlwSGlkZURlbGF5XCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cblxuICA8ZGl2ICpuZ0lmPVwidXNlU3ltYm9sKCdsZWZ0JylcIiBtYXRTdWZmaXggY2xhc3M9XCJpY29uLWJ0blwiIFtjbGFzcy5tYXQtZGlzYWJsZWRdPVwiIWVuYWJsZWRcIj5cbiAgICB7eyBjdXJyZW5jeV9zeW1ib2xzW2N1cnJlbmN5U3ltYm9sXSB9fVxuICA8L2Rpdj5cbiAgPG1hdC1pY29uICpuZ0lmPVwidXNlSWNvbignbGVmdCcpXCIgc3ZnSWNvbj1cIm9udGltaXplOnt7Y3VycmVuY3lTeW1ib2x9fVwiIG1hdFN1ZmZpeCBjbGFzcz1cInN2Zy1pY29uXCIgW2NsYXNzLm1hdC1kaXNhYmxlZF09XCIhZW5hYmxlZFwiPjwvbWF0LWljb24+XG4gIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiIFtoaWRlUmVxdWlyZWRNYXJrZXJdPVwiaGlkZVJlcXVpcmVkTWFya2VyXCIgW2NsYXNzLmN1c3RvbS13aWR0aF09XCJoYXNDdXN0b21XaWR0aFwiXG4gICAgY2xhc3M9XCJpY29uLWZpZWxkXCIgZnhGaWxsIFtzdWJzY3JpcHRTaXppbmddPVwic3Vic2NyaXB0U2l6aW5nXCI+XG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsVmlzaWJsZVwiPnt7IG9sYWJlbCB8IG9UcmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgW3R5cGVdPVwiaW5wdXRUeXBlXCIgW2lkXT1cImdldEF0dHJpYnV0ZSgpXCIgW2Zvcm1Db250cm9sTmFtZV09XCJnZXRBdHRyaWJ1dGUoKVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiXG4gICAgICAoZm9jdXMpPVwiaW5uZXJPbkZvY3VzKCRldmVudClcIiAoYmx1cik9XCJpbm5lck9uQmx1cigkZXZlbnQpXCIgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHlcIiBbbWluXT1cIm1pblwiIFttYXhdPVwibWF4XCIgW3N0ZXBdPVwic3RlcFwiXG4gICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiIChjaGFuZ2UpPVwib25DaGFuZ2VFdmVudCgkZXZlbnQpXCI+XG5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInNob3dDbGVhckJ1dHRvblwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2tDbGVhclZhbHVlKCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgKm5nSWY9XCJ1c2VTeW1ib2woJ3JpZ2h0JylcIiBtYXRJY29uU3VmZml4IGNsYXNzPVwiaWNvbi1idG5cIiBbY2xhc3MubWF0LWRpc2FibGVkXT1cIiFlbmFibGVkXCI+XG4gICAgICB7eyBjdXJyZW5jeV9zeW1ib2xzW2N1cnJlbmN5U3ltYm9sXSB9fVxuICAgIDwvZGl2PlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cInVzZUljb24oJ3JpZ2h0JylcIiBzdmdJY29uPVwib250aW1pemU6e3tjdXJyZW5jeVN5bWJvbH19XCIgbWF0SWNvblN1ZmZpeCBjbGFzcz1cInN2Zy1pY29uXCIgW2NsYXNzLm1hdC1kaXNhYmxlZF09XCIhZW5hYmxlZFwiPlxuICAgIDwvbWF0LWljb24+XG5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5SRVFVSVJFRCcgfCBvVHJhbnNsYXRlIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ21pbicpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLk1JTl9WQUxVRScgfCBvVHJhbnNsYXRlIH19OiB7eyBnZXRFcnJvclZhbHVlKCdtaW4nLCAncmVxdWlyZWRNaW4nKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdtYXgnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5NQVhfVkFMVUUnIHwgb1RyYW5zbGF0ZSB9fToge3sgZ2V0RXJyb3JWYWx1ZSgnbWF4JywgJ3JlcXVpcmVkTWF4JykgfX1cbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignbWluRGVjaW1hbGRpZ2l0cycpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLk1JTl9ERUNJTUFMX0RJR0lUUycgfCBvVHJhbnNsYXRlIH19OiB7eyBnZXRFcnJvclZhbHVlKCdtaW5EZWNpbWFsZGlnaXRzJywgJ3JlcXVpcmVkTWluRGVjaW1hbGRpZ2l0cycpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ21heERlY2ltYWxkaWdpdHMnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5NQVhfREVDSU1BTF9ESUdJVFMnIHwgb1RyYW5zbGF0ZSB9fToge3sgZ2V0RXJyb3JWYWx1ZSgnbWF4RGVjaW1hbGRpZ2l0cycsICdyZXF1aXJlZE1heERlY2ltYWxkaWdpdHMnKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IG9FcnJvciBvZiBnZXRBY3RpdmVPRXJyb3JzKClcIj5cbiAgICAgIHt7IG9FcnJvci50ZXh0IHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9jdXJyZW5jeS1pbnB1dC9vLWN1cnJlbmN5LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2N1cnJlbmN5LWlucHV0L28tY3VycmVuY3ktaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBRTdDLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHO0lBQzdDLGlDQUFpQztJQUNqQyxrREFBa0Q7Q0FDbkQsQ0FBQztBQVNGLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFQaEU7O1FBWUUscUJBQWdCLEdBQUcsWUFBWSxDQUFDLG9CQUFvQixDQUFDO1FBRXJELG1CQUFjLEdBQVcsS0FBSyxDQUFDO1FBQy9CLDJCQUFzQixHQUFXLE9BQU8sQ0FBQztLQWExQztJQVhXLGtCQUFrQjtRQUMxQixPQUFPLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBZ0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEtBQUssUUFBUSxDQUFDO0lBQy9FLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBZ0I7UUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsS0FBSyxRQUFRLENBQUM7SUFDN0ksQ0FBQzs7QUFqQk0sc0NBQWMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztvSEFIdEUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsa09DbkJwQyxxd0ZBMkNBOzJGRHhCYSx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0Usa0JBQWtCLFVBR3BCLCtCQUErQixpQkFDeEIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBPUmVhbElucHV0Q29tcG9uZW50XG59IGZyb20gJy4uL3JlYWwtaW5wdXQvby1yZWFsLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXJyZW5jeVV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fQ1VSUkVOQ1lfSU5QVVQgPSBbXG4gICdjdXJyZW5jeVN5bWJvbDogY3VycmVuY3ktc3ltYm9sJyxcbiAgJ2N1cnJlbmN5U3ltYm9sUG9zaXRpb246IGN1cnJlbmN5LXN5bWJvbC1wb3NpdGlvbidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tY3VycmVuY3ktaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vby1jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tY3VycmVuY3ktaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0NVUlJFTkNZX0lOUFVULFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE9DdXJyZW5jeUlucHV0Q29tcG9uZW50IGV4dGVuZHMgT1JlYWxJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cblxuICBzdGF0aWMgY3VycmVuY3lfaWNvbnMgPSBbJ1VTRCcsICdFVVInLCAnR0JQJywgJ0lMUycsICdJTlInLCAnSlBZJywgJ0tSVycsICdCVEMnXTtcblxuICBjdXJyZW5jeV9zeW1ib2xzID0gQ3VycmVuY3lVdGlsLmN1cnJlbmN5Q29kZVRvU3ltYm9sO1xuXG4gIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmcgPSAnRVVSJztcbiAgY3VycmVuY3lTeW1ib2xQb3NpdGlvbjogc3RyaW5nID0gJ3JpZ2h0JztcblxuICBwcm90ZWN0ZWQgZXhpc3RzT250aW1pemVJY29uKCkge1xuICAgIHJldHVybiBPQ3VycmVuY3lJbnB1dENvbXBvbmVudC5jdXJyZW5jeV9pY29ucy5pbmRleE9mKHRoaXMuY3VycmVuY3lTeW1ib2wpICE9PSAtMTtcbiAgfVxuXG4gIHVzZUljb24ocG9zaXRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4aXN0c09udGltaXplSWNvbigpICYmIHRoaXMuY3VycmVuY3lTeW1ib2xQb3NpdGlvbiA9PT0gcG9zaXRpb247XG4gIH1cblxuICB1c2VTeW1ib2wocG9zaXRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5leGlzdHNPbnRpbWl6ZUljb24oKSAmJiB0aGlzLmN1cnJlbmN5X3N5bWJvbHMuaGFzT3duUHJvcGVydHkodGhpcy5jdXJyZW5jeVN5bWJvbCkgJiYgdGhpcy5jdXJyZW5jeVN5bWJvbFBvc2l0aW9uID09PSBwb3NpdGlvbjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImN1cnJlbmN5LWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZ2V0Rm9ybUdyb3VwKClcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCIgW21hdFRvb2x0aXBDbGFzc109XCJ0b29sdGlwQ2xhc3NcIiBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXG4gIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIiBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCJ0b29sdGlwSGlkZURlbGF5XCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cblxuICA8ZGl2ICpuZ0lmPVwidXNlU3ltYm9sKCdsZWZ0JylcIiBtYXRTdWZmaXggY2xhc3M9XCJpY29uLWJ0blwiIFtjbGFzcy5tYXQtZGlzYWJsZWRdPVwiIWVuYWJsZWRcIj5cbiAgICB7eyBjdXJyZW5jeV9zeW1ib2xzW2N1cnJlbmN5U3ltYm9sXSB9fVxuICA8L2Rpdj5cbiAgPG1hdC1pY29uICpuZ0lmPVwidXNlSWNvbignbGVmdCcpXCIgc3ZnSWNvbj1cIm9udGltaXplOnt7Y3VycmVuY3lTeW1ib2x9fVwiIG1hdFN1ZmZpeCBjbGFzcz1cInN2Zy1pY29uXCIgW2NsYXNzLm1hdC1kaXNhYmxlZF09XCIhZW5hYmxlZFwiPjwvbWF0LWljb24+XG4gIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiIFtoaWRlUmVxdWlyZWRNYXJrZXJdPVwiaGlkZVJlcXVpcmVkTWFya2VyXCIgW2NsYXNzLmN1c3RvbS13aWR0aF09XCJoYXNDdXN0b21XaWR0aFwiXG4gICAgY2xhc3M9XCJpY29uLWZpZWxkXCIgZnhGaWxsIFtzdWJzY3JpcHRTaXppbmddPVwic3Vic2NyaXB0U2l6aW5nXCI+XG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsVmlzaWJsZVwiPnt7IG9sYWJlbCB8IG9UcmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgW3R5cGVdPVwiaW5wdXRUeXBlXCIgW2lkXT1cImdldEF0dHJpYnV0ZSgpXCIgW2Zvcm1Db250cm9sTmFtZV09XCJnZXRBdHRyaWJ1dGUoKVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiXG4gICAgICAoZm9jdXMpPVwiaW5uZXJPbkZvY3VzKCRldmVudClcIiAoYmx1cik9XCJpbm5lck9uQmx1cigkZXZlbnQpXCIgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHlcIiBbbWluXT1cIm1pblwiIFttYXhdPVwibWF4XCIgW3N0ZXBdPVwic3RlcFwiXG4gICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiIChjaGFuZ2UpPVwib25DaGFuZ2VFdmVudCgkZXZlbnQpXCI+XG5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInNob3dDbGVhckJ1dHRvblwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2tDbGVhclZhbHVlKCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgKm5nSWY9XCJ1c2VTeW1ib2woJ3JpZ2h0JylcIiBtYXRJY29uU3VmZml4IGNsYXNzPVwiaWNvbi1idG5cIiBbY2xhc3MubWF0LWRpc2FibGVkXT1cIiFlbmFibGVkXCI+XG4gICAgICB7eyBjdXJyZW5jeV9zeW1ib2xzW2N1cnJlbmN5U3ltYm9sXSB9fVxuICAgIDwvZGl2PlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cInVzZUljb24oJ3JpZ2h0JylcIiBzdmdJY29uPVwib250aW1pemU6e3tjdXJyZW5jeVN5bWJvbH19XCIgbWF0SWNvblN1ZmZpeCBjbGFzcz1cInN2Zy1pY29uXCIgW2NsYXNzLm1hdC1kaXNhYmxlZF09XCIhZW5hYmxlZFwiPlxuICAgIDwvbWF0LWljb24+XG5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5SRVFVSVJFRCcgfCBvVHJhbnNsYXRlIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ21pbicpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLk1JTl9WQUxVRScgfCBvVHJhbnNsYXRlIH19OiB7eyBnZXRFcnJvclZhbHVlKCdtaW4nLCAncmVxdWlyZWRNaW4nKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdtYXgnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5NQVhfVkFMVUUnIHwgb1RyYW5zbGF0ZSB9fToge3sgZ2V0RXJyb3JWYWx1ZSgnbWF4JywgJ3JlcXVpcmVkTWF4JykgfX1cbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignbWluRGVjaW1hbGRpZ2l0cycpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLk1JTl9ERUNJTUFMX0RJR0lUUycgfCBvVHJhbnNsYXRlIH19OiB7eyBnZXRFcnJvclZhbHVlKCdtaW5EZWNpbWFsZGlnaXRzJywgJ3JlcXVpcmVkTWluRGVjaW1hbGRpZ2l0cycpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ21heERlY2ltYWxkaWdpdHMnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5NQVhfREVDSU1BTF9ESUdJVFMnIHwgb1RyYW5zbGF0ZSB9fToge3sgZ2V0RXJyb3JWYWx1ZSgnbWF4RGVjaW1hbGRpZ2l0cycsICdyZXF1aXJlZE1heERlY2ltYWxkaWdpdHMnKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IG9FcnJvciBvZiBnZXRBY3RpdmVPRXJyb3JzKClcIj5cbiAgICAgIHt7IG9FcnJvci50ZXh0IHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
@@ -26,22 +26,6 @@ import * as i13 from "@angular/material/tooltip";
26
26
  import * as i14 from "../../../pipes/o-translate.pipe";
27
27
  import * as i15 from "../../form/o-form.component";
28
28
  export const DEFAULT_INPUTS_O_FILE_INPUT = [
29
- 'oattr: attr',
30
- 'olabel: label',
31
- 'floatLabel: float-label',
32
- 'oplaceholder: placeholder',
33
- 'tooltip',
34
- 'tooltipPosition: tooltip-position',
35
- 'tooltipShowDelay: tooltip-show-delay',
36
- 'tooltipHideDelay: tooltip-hide-delay',
37
- 'enabled',
38
- 'orequired: required',
39
- 'service',
40
- 'entity',
41
- 'serviceType : service-type',
42
- 'width',
43
- 'readOnly: read-only',
44
- 'clearButton: clear-button',
45
29
  'acceptFileType: accept-file-type',
46
30
  'maxFileSize: max-file-size',
47
31
  'multiple',
@@ -233,7 +217,7 @@ export class OFileInputComponent extends OFormDataComponent {
233
217
  }
234
218
  }
235
219
  OFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFileInputComponent, deps: [{ token: forwardRef(() => OFormComponent), optional: true }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
236
- OFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFileInputComponent, selector: "o-file-input", inputs: { oattr: ["attr", "oattr"], olabel: ["label", "olabel"], floatLabel: ["float-label", "floatLabel"], oplaceholder: ["placeholder", "oplaceholder"], tooltip: "tooltip", tooltipPosition: ["tooltip-position", "tooltipPosition"], tooltipShowDelay: ["tooltip-show-delay", "tooltipShowDelay"], tooltipHideDelay: ["tooltip-hide-delay", "tooltipHideDelay"], enabled: "enabled", orequired: ["required", "orequired"], service: "service", entity: "entity", serviceType: ["service-type", "serviceType"], width: "width", readOnly: ["read-only", "readOnly"], clearButton: ["clear-button", "clearButton"], acceptFileType: ["accept-file-type", "acceptFileType"], maxFileSize: ["max-file-size", "maxFileSize"], multiple: "multiple", maxFiles: ["max-files", "maxFiles"], showInfo: ["show-info", "showInfo"], splitUpload: ["split-upload", "splitUpload"], additionalData: ["additional-data", "additionalData"], appearance: "appearance", hideRequiredMarker: ["hide-required-marker", "hideRequiredMarker"], labelVisible: ["label-visible", "labelVisible"] }, outputs: { onBeforeUpload: "onBeforeUpload", onBeforeUploadFile: "onBeforeUploadFile", onProgress: "onProgress", onProgressFile: "onProgressFile", onCancel: "onCancel", onCancelFile: "onCancelFile", onUpload: "onUpload", onUploadFile: "onUploadFile", onComplete: "onComplete", onCompleteFile: "onCompleteFile", onError: "onError", onErrorFile: "onErrorFile" }, providers: [
220
+ OFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFileInputComponent, selector: "o-file-input", inputs: { acceptFileType: ["accept-file-type", "acceptFileType"], maxFileSize: ["max-file-size", "maxFileSize"], multiple: "multiple", maxFiles: ["max-files", "maxFiles"], showInfo: ["show-info", "showInfo"], splitUpload: ["split-upload", "splitUpload"], additionalData: ["additional-data", "additionalData"], appearance: "appearance", hideRequiredMarker: ["hide-required-marker", "hideRequiredMarker"], labelVisible: ["label-visible", "labelVisible"] }, outputs: { onBeforeUpload: "onBeforeUpload", onBeforeUploadFile: "onBeforeUploadFile", onProgress: "onProgress", onProgressFile: "onProgressFile", onCancel: "onCancel", onCancelFile: "onCancelFile", onUpload: "onUpload", onUploadFile: "onUploadFile", onComplete: "onComplete", onCompleteFile: "onCompleteFile", onError: "onError", onErrorFile: "onErrorFile" }, providers: [
237
221
  { provide: OntimizeFileService, useFactory: fileServiceFactory, deps: [Injector] }
238
222
  ], viewQueries: [{ propertyName: "inputFile", first: true, predicate: ["inputFile"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" (click)=\"!enabled || isReadOnly ? null : inputFile.click()\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input #inputShowValue matInput type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n [required]=\"isRequired\" readonly (change)=\"onChangeEvent($event)\">\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <button type=\"button\" *ngIf=\"getValue()\" [disabled]=\"!isValid || uploader.isUploading\" matSuffix mat-icon-button (click)=\"onClickUpload($event)\">\n <mat-icon>file_upload</mat-icon>\n </button>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('fileType')\">\n {{ 'FORM_VALIDATION.FILE_TYPE' | oTranslate}} ({{ getErrorValue('fileType','allowedFileTypes') }})\n </mat-error>\n <mat-error *oMatError=\"hasError('fileSize')\">\n {{ 'FORM_VALIDATION.FILE_MAXSIZE' | oTranslate }}: {{ getErrorValue('fileSize', 'maxFileSize') }} bytes\n </mat-error>\n <mat-error *oMatError=\"hasError('numFile')\">\n {{ 'FORM_VALIDATION.FILE_MAXNUM' | oTranslate }}: {{ getErrorValue('numFile', 'maxFiles') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n <input #inputFile type=\"file\" id=\"{{getAttribute()+'-file-input'}}\"\n [attr.accept]=\"acceptFileType ? acceptFileType.replace(arraySeparatorRegExp, ',') : null\" (change)=\"fileSelected($event)\" hidden=\"true\"\n [attr.multiple]=\"multiple ? '' : null\">\n <div *ngIf=\"showInfo && files\">\n <mat-progress-bar *ngIf=\"!splitUpload && uploader.isUploading\" color=\"accent\" mode=\"determinate\" [value]=\"uploader.progress\"></mat-progress-bar>\n <mat-list>\n <mat-list-item *ngFor=\"let file of files\">\n <mat-icon mat-list-icon>insert_drive_file</mat-icon>\n <span mat-line>{{ file.name }}</span>\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <mat-progress-spinner *ngIf=\"splitUpload && file.isUploading\" color=\"accent\" mode=\"determinate\" [value]=\"file.progress\" class=\"uploading\"\n diameter=\"3\" strokeWidth=\"3\"></mat-progress-spinner>\n <mat-icon *ngIf=\"splitUpload && file.isUploaded && file.isSuccess\" class=\"uploaded\" svgIcon=\"ontimize:check_circle\"></mat-icon>\n <mat-icon *ngIf=\"splitUpload && file.isUploaded && file.isError\" class=\"error\" svgIcon=\"ontimize:error_outline\"></mat-icon>\n </div>\n </mat-list-item>\n </mat-list>\n </div>\n</div>\n", styles: [".o-file-input-buttons{position:absolute;top:0;bottom:0;right:0;margin:auto}mat-icon.uploaded{color:#0f9d58}mat-icon.error{color:#d50000}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i10.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i10.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i12.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i14.OTranslatePipe, name: "oTranslate" }] });
239
223
  __decorate([
@@ -270,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
270
254
  type: ViewChild,
271
255
  args: ['inputFile']
272
256
  }], showInfo: [], multiple: [], splitUpload: [], maxFileSize: [], maxFiles: [] } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1maWxlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2ZpbGUtaW5wdXQvby1maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2ZpbGUtaW5wdXQvby1maWxlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUd2RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3pDLGFBQWE7SUFD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LEVBQUUsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7S0FDbkYseUpDbkZILDh5R0FnREE7QUQrQ0U7SUFBQyxxQkFBcUIsRUFBRTs7cURBQ1M7QUFDakM7SUFBQyxxQkFBcUIsRUFBRTs7cURBQ1M7QUFDakM7SUFBQyxxQkFBcUIsRUFBRTs7d0RBQ1c7QUFFbkM7SUFBQyxvQkFBb0IsRUFBRTs7d0RBQ0k7QUFDM0I7SUFBQyxvQkFBb0IsRUFBRTs7cURBQ007MkZBcEJsQixtQkFBbUI7a0JBVi9CLFNBQVM7K0JBQ0UsY0FBYyxVQUdoQiwyQkFBMkIsV0FDMUIsNEJBQTRCLGFBQzFCO3dCQUNULEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRTtxQkFDbkY7OzBCQTBDRSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7NEZBbEMvQyxTQUFTO3NCQURmLFNBQVM7dUJBQUMsV0FBVztnQkFNZixRQUFRLE1BRVIsUUFBUSxNQUVSLFdBQVcsTUFHWCxXQUFXLE1BRVgsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbmplY3QsIEluamVjdG9yLCBPbkluaXQsIE9wdGlvbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciwgTnVtYmVySW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJRmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2ZpbGUtc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZmlsZVNlcnZpY2VGYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IE9udGltaXplRmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vbnRpbWl6ZS9vbnRpbWl6ZS1maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0NvbmZpZ3VyZVNlcnZpY2VBcmdzIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29uZmlndXJlLXNlcnZpY2UtYXJncy50eXBlJztcbmltcG9ydCB7IEZvcm1WYWx1ZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9mb3JtLXZhbHVlLW9wdGlvbnMudHlwZSc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybS9vLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IE9Gb3JtRGF0YUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL28tZm9ybS1kYXRhLWNvbXBvbmVudC5jbGFzcyc7XG5pbXBvcnQgeyBPVmFsdWVDaGFuZ2VFdmVudCB9IGZyb20gJy4uLy4uL28tdmFsdWUtY2hhbmdlLWV2ZW50LmNsYXNzJztcbmltcG9ydCB7IE9GaWxlSXRlbSB9IGZyb20gJy4vby1maWxlLWl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgT0ZpbGVVcGxvYWRlciB9IGZyb20gJy4vby1maWxlLXVwbG9hZGVyLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fRklMRV9JTlBVVCA9IFtcbiAgJ29hdHRyOiBhdHRyJyxcbiAgJ29sYWJlbDogbGFiZWwnLFxuICAnZmxvYXRMYWJlbDogZmxvYXQtbGFiZWwnLFxuICAnb3BsYWNlaG9sZGVyOiBwbGFjZWhvbGRlcicsXG4gICd0b29sdGlwJyxcbiAgJ3Rvb2x0aXBQb3NpdGlvbjogdG9vbHRpcC1wb3NpdGlvbicsXG4gICd0b29sdGlwU2hvd0RlbGF5OiB0b29sdGlwLXNob3ctZGVsYXknLFxuICAndG9vbHRpcEhpZGVEZWxheTogdG9vbHRpcC1oaWRlLWRlbGF5JyxcbiAgJ2VuYWJsZWQnLFxuICAnb3JlcXVpcmVkOiByZXF1aXJlZCcsXG4gICdzZXJ2aWNlJyxcbiAgJ2VudGl0eScsXG4gICdzZXJ2aWNlVHlwZSA6IHNlcnZpY2UtdHlwZScsXG4gICd3aWR0aCcsXG4gICdyZWFkT25seTogcmVhZC1vbmx5JyxcbiAgJ2NsZWFyQnV0dG9uOiBjbGVhci1idXR0b24nLFxuXG4gIC8vIGFjY2VwdC1maWxlLXR5cGUgW3N0cmluZ106IGZpbGUgdHlwZXMgYWxsb3dlZCBvbiB0aGUgZmlsZSBpbnB1dCwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gIC8vIGZpbGVfZXh0ZW5zaW9uLCBhdWRpby8qLCB2aWRlby8qLCBpbWFnZS8qLCBtZWRpYV90eXBlLiBTZWUgaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL2F0dF9pbnB1dF9hY2NlcHQuYXNwXG4gICdhY2NlcHRGaWxlVHlwZTogYWNjZXB0LWZpbGUtdHlwZScsXG5cbiAgLy8gbWF4LWZpbGUtc2l6ZSBbbnVtYmVyXTogbWF4aW11bSBmaWxlIHNpemUgYWxsb3dlZCwgaW4gYnl0ZXMuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnbWF4RmlsZVNpemU6IG1heC1maWxlLXNpemUnLFxuXG4gIC8vIG11bHRpcGxlIFtib29sZWFuXTogbXVsdGlwbGUgZmlsZSBzZWxlY3Rpb24gYWxsb3dlZC4gRGVmYXVsdDogbm8uXG4gICdtdWx0aXBsZScsXG5cbiAgLy8gbWF4LWZpbGVzIFtudW1iZXJdOiBtYXhpbXVtIG51bWJlciBvZiBmaWxlcyBhbGxvd2VkLiBEZWZhdWx0OiAtMS5cbiAgJ21heEZpbGVzOiBtYXgtZmlsZXMnLFxuXG4gIC8vIHNob3ctaW5mbyBbYm9vbGVhbl06IHNob3cgZmlsZXMgaW5mb3JtYXRpb24uIERlZmF1bHQ6IG5vLlxuICAnc2hvd0luZm86IHNob3ctaW5mbycsXG5cbiAgLy8gc3BsaXQtdXBsb2FkIFtib29sZWFuXTogZWFjaCBmaWxlIGlzIHVwbG9hZGVkIGluIGEgcmVxdWVzdCAodHJ1ZSkgb3IgYWxsIGZpbGVzIGFyZSB1cGxvYWRlZCBpbiBhIHNpbmdsZSByZXF1ZXN0IChmYWxzZSkuIERlZmF1bHQ6IHllcy5cbiAgJ3NwbGl0VXBsb2FkOiBzcGxpdC11cGxvYWQnLFxuXG4gIC8vIGFkZGl0aW9uYWwtZGF0YSBbSlNPTl06IHVzZWQgdG8gc2VuZCBhZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4gdGhlIHVwbG9hZCByZXF1ZXN0LlxuICAnYWRkaXRpb25hbERhdGE6IGFkZGl0aW9uYWwtZGF0YScsXG4gICdhcHBlYXJhbmNlJyxcbiAgJ2hpZGVSZXF1aXJlZE1hcmtlcjpoaWRlLXJlcXVpcmVkLW1hcmtlcicsXG4gICdsYWJlbFZpc2libGU6bGFiZWwtdmlzaWJsZSdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19GSUxFX0lOUFVUID0gW1xuICAnb25CZWZvcmVVcGxvYWQnLFxuICAnb25CZWZvcmVVcGxvYWRGaWxlJyxcbiAgJ29uUHJvZ3Jlc3MnLFxuICAnb25Qcm9ncmVzc0ZpbGUnLFxuICAnb25DYW5jZWwnLFxuICAnb25DYW5jZWxGaWxlJyxcbiAgJ29uVXBsb2FkJyxcbiAgJ29uVXBsb2FkRmlsZScsXG4gICdvbkNvbXBsZXRlJyxcbiAgJ29uQ29tcGxldGVGaWxlJyxcbiAgJ29uRXJyb3InLFxuICAnb25FcnJvckZpbGUnXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWZpbGUtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vby1maWxlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1maWxlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19GSUxFX0lOUFVULFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19GSUxFX0lOUFVULFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE9udGltaXplRmlsZVNlcnZpY2UsIHVzZUZhY3Rvcnk6IGZpbGVTZXJ2aWNlRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT0ZpbGVJbnB1dENvbXBvbmVudCBleHRlbmRzIE9Gb3JtRGF0YUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGFycmF5U2VwYXJhdG9yUmVnRXhwID0gbmV3IFJlZ0V4cCgvXFw7L2dpKTtcbiAgcHVibGljIHVwbG9hZGVyOiBPRmlsZVVwbG9hZGVyO1xuICBwdWJsaWMgZmlsZVNlcnZpY2U6IElGaWxlU2VydmljZTtcbiAgQFZpZXdDaGlsZCgnaW5wdXRGaWxlJylcbiAgcHVibGljIGlucHV0RmlsZTogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgYXV0b0JpbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGF1dG9SZWdpc3RlcmluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHNob3dJbmZvOiBib29sZWFuID0gZmFsc2U7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBzcGxpdFVwbG9hZDogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBhY2NlcHRGaWxlVHlwZTogc3RyaW5nO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlcjtcbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgcHVibGljIG1heEZpbGVzOiBudW1iZXIgPSAtMTtcblxuICBwdWJsaWMgb25CZWZvcmVVcGxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvbkJlZm9yZVVwbG9hZEZpbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvblByb2dyZXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25Qcm9ncmVzc0ZpbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvbkNhbmNlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uQ2FuY2VsRmlsZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uVXBsb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25VcGxvYWRGaWxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25Db21wbGV0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uQ29tcGxldGVGaWxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25FcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uRXJyb3JGaWxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByb3RlY3RlZCBzZXJ2aWNlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBlbnRpdHk6IHN0cmluZztcbiAgcHJvdGVjdGVkIHNlcnZpY2VUeXBlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9Gb3JtQ29tcG9uZW50KSkgZm9ybTogT0Zvcm1Db21wb25lbnQsXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICApIHtcbiAgICBzdXBlcihmb3JtLCBlbFJlZiwgaW5qZWN0b3IpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuXG4gICAgdGhpcy51cGxvYWRlci5vbkJlZm9yZVVwbG9hZEFsbCA9ICgpID0+IHRoaXMub25CZWZvcmVVcGxvYWQuZW1pdCgpO1xuICAgIHRoaXMudXBsb2FkZXIub25CZWZvcmVVcGxvYWRJdGVtID0gaXRlbSA9PiB0aGlzLm9uQmVmb3JlVXBsb2FkRmlsZS5lbWl0KGl0ZW0pO1xuICAgIHRoaXMudXBsb2FkZXIub25Qcm9ncmVzc0FsbCA9IHByb2dyZXNzID0+IHRoaXMub25Qcm9ncmVzcy5lbWl0KHByb2dyZXNzKTtcbiAgICB0aGlzLnVwbG9hZGVyLm9uUHJvZ3Jlc3NJdGVtID0gKGl0ZW0sIHByb2dyZXNzKSA9PiB0aGlzLm9uUHJvZ3Jlc3NGaWxlLmVtaXQoeyBpdGVtOiBpdGVtLCBwcm9ncmVzczogcHJvZ3Jlc3MgfSk7XG4gICAgdGhpcy51cGxvYWRlci5vbkNhbmNlbEFsbCA9ICgpID0+IHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICAgIHRoaXMudXBsb2FkZXIub25DYW5jZWxJdGVtID0gaXRlbSA9PiB0aGlzLm9uQ2FuY2VsRmlsZS5lbWl0KCk7XG4gICAgdGhpcy51cGxvYWRlci5vblN1Y2Nlc3NBbGwgPSByZXNwb25zZSA9PiB0aGlzLm9uVXBsb2FkLmVtaXQoeyByZXNwb25zZTogcmVzcG9uc2UgfSk7XG4gICAgdGhpcy51cGxvYWRlci5vblN1Y2Nlc3NJdGVtID0gKGl0ZW0sIHJlc3BvbnNlKSA9PiB0aGlzLm9uVXBsb2FkRmlsZS5lbWl0KHsgaXRlbTogaXRlbSwgcmVzcG9uc2U6IHJlc3BvbnNlIH0pO1xuICAgIHRoaXMudXBsb2FkZXIub25Db21wbGV0ZUFsbCA9ICgpID0+IHRoaXMub25Db21wbGV0ZS5lbWl0KCk7XG4gICAgdGhpcy51cGxvYWRlci5vbkNvbXBsZXRlSXRlbSA9IGl0ZW0gPT4gdGhpcy5vbkNvbXBsZXRlRmlsZS5lbWl0KGl0ZW0pO1xuICAgIHRoaXMudXBsb2FkZXIub25FcnJvckFsbCA9IGVycm9yID0+IHRoaXMub25FcnJvci5lbWl0KGVycm9yKTtcbiAgICB0aGlzLnVwbG9hZGVyLm9uRXJyb3JJdGVtID0gKGl0ZW0sIGVycm9yKSA9PiB0aGlzLm9uRXJyb3JGaWxlLmVtaXQoeyBpdGVtOiBpdGVtLCBlcnJvcjogZXJyb3IgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5pbml0aWFsaXplKCk7XG5cbiAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5mb3JtLnNlcnZpY2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcbiAgICAgIHRoaXMuZW50aXR5ID0gdGhpcy5mb3JtLmVudGl0eTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZ3VyZVNlcnZpY2UoKTtcbiAgICB0aGlzLnVwbG9hZGVyID0gbmV3IE9GaWxlVXBsb2FkZXIodGhpcy5maWxlU2VydmljZSwgdGhpcy5lbnRpdHkpO1xuICAgIHRoaXMudXBsb2FkZXIuc3BsaXRVcGxvYWQgPSB0aGlzLnNwbGl0VXBsb2FkO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZVNlcnZpY2UoKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlndXJlU2VydmljZUFyZ3M6IE9Db25maWd1cmVTZXJ2aWNlQXJncyA9IHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsIGJhc2VTZXJ2aWNlOiBPbnRpbWl6ZUZpbGVTZXJ2aWNlLCBlbnRpdHk6IHRoaXMuZW50aXR5LCBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsIHNlcnZpY2VUeXBlOiB0aGlzLnNlcnZpY2VUeXBlIH1cbiAgICB0aGlzLmZpbGVTZXJ2aWNlID0gVXRpbC5jb25maWd1cmVTZXJ2aWNlKGNvbmZpZ3VyZVNlcnZpY2VBcmdzKTtcblxuICB9XG5cbiAgcHVibGljIHJlc29sdmVWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBzdXBlci5yZXNvbHZlVmFsaWRhdG9ycygpO1xuICAgIGlmICh0aGlzLmFjY2VwdEZpbGVUeXBlKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5maWxldHlwZVZhbGlkYXRvci5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWF4RmlsZVNpemUpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLm1heEZpbGVTaXplVmFsaWRhdG9yLmJpbmQodGhpcykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLm1heEZpbGVzICE9PSAtMSkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMubWF4RmlsZXNWYWxpZGF0b3IuYmluZCh0aGlzKSk7XG4gICAgfVxuICAgIHJldHVybiB2YWxpZGF0b3JzO1xuICB9XG5cbiAgcHVibGljIGZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgdmFsdWU6IHN0cmluZyA9ICcnO1xuICAgIGlmIChldmVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0OiBhbnkgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBmaWxlczogRmlsZUxpc3QgPSB0YXJnZXQuZmlsZXM7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgIHRoaXMudXBsb2FkZXIuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMCwgZjogRmlsZTsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgZiA9IGZpbGVzW2ldO1xuICAgICAgICAgIGNvbnN0IGZpbGVJdGVtOiBPRmlsZUl0ZW0gPSBuZXcgT0ZpbGVJdGVtKGYsIHRoaXMudXBsb2FkZXIpO1xuICAgICAgICAgIHRoaXMudXBsb2FkZXIuYWRkRmlsZShmaWxlSXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSB0aGlzLnVwbG9hZGVyLmZpbGVzLm1hcChmaWxlID0+IGZpbGUubmFtZSkuam9pbignLCAnKTtcblxuICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSAhPT0gJycgPyB2YWx1ZSA6IHVuZGVmaW5lZCwgeyBjaGFuZ2VUeXBlOiBPVmFsdWVDaGFuZ2VFdmVudC5VU0VSX0NIQU5HRSB9KTtcbiAgICAgICAgICBpZiAodGhpcy5fZkNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBzdXBlci5jbGVhclZhbHVlKCk7XG4gICAqL1xuICBwdWJsaWMgY2xlYXJWYWx1ZShvcHRpb25zPzogRm9ybVZhbHVlT3B0aW9ucywgc2V0RGlydHk6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIHN1cGVyLmNsZWFyVmFsdWUob3B0aW9ucywgc2V0RGlydHkpO1xuICAgIHRoaXMudXBsb2FkZXIuY2xlYXIoKTtcbiAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICBwdWJsaWMgb25DbGlja1VwbG9hZChlOiBFdmVudCk6IHZvaWQge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuaXNWYWxpZCkge1xuICAgICAgdGhpcy51cGxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkZXIudXBsb2FkKCk7XG4gIH1cblxuICBnZXQgZmlsZXMoKTogT0ZpbGVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLnVwbG9hZGVyLmZpbGVzO1xuICB9XG5cbiAgZ2V0IGFkZGl0aW9uYWxEYXRhKCk6IGFueSB7XG4gICAgaWYgKHRoaXMudXBsb2FkZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwbG9hZGVyLmRhdGE7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc2V0IGFkZGl0aW9uYWxEYXRhKGRhdGE6IGFueSkge1xuICAgIGlmICh0aGlzLnVwbG9hZGVyKSB7XG4gICAgICB0aGlzLnVwbG9hZGVyLmRhdGEgPSBkYXRhO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbm5lck9uQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZU9Gb3JtVmFsdWUoZXZlbnQpO1xuICAgIGlmICh0aGlzLl9mQ29udHJvbCAmJiB0aGlzLl9mQ29udHJvbC50b3VjaGVkKSB7XG4gICAgICB0aGlzLl9mQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpbGV0eXBlVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLmFjY2VwdEZpbGVUeXBlKSB7XG4gICAgICBjb25zdCByZWdleDogUmVnRXhwID0gbmV3IFJlZ0V4cCh0aGlzLmFjY2VwdEZpbGVUeXBlLnJlcGxhY2UoJzsnLCAnfCcpKTtcbiAgICAgIGlmICghdGhpcy5maWxlcy5ldmVyeShmaWxlID0+IGZpbGUudHlwZS5tYXRjaChyZWdleCkgIT09IG51bGwgfHwgZmlsZS5uYW1lLnN1YnN0cihmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKSkubWF0Y2gocmVnZXgpICE9PSBudWxsKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGZpbGVUeXBlOiB7XG4gICAgICAgICAgICBhbGxvd2VkRmlsZVR5cGVzOiB0aGlzLmFjY2VwdEZpbGVUeXBlLnJlcGxhY2UoJzsnLCAnLCAnKVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIG1heEZpbGVTaXplVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLm1heEZpbGVTaXplKSB7XG4gICAgICBpZiAoIXRoaXMuZmlsZXMuZXZlcnkoZmlsZSA9PiBmaWxlLnNpemUgPCB0aGlzLm1heEZpbGVTaXplKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGZpbGVTaXplOiB7XG4gICAgICAgICAgICBtYXhGaWxlU2l6ZTogdGhpcy5tYXhGaWxlU2l6ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIG1heEZpbGVzVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLm11bHRpcGxlICYmIHRoaXMubWF4RmlsZXMgIT09IC0xKSB7XG4gICAgICBpZiAodGhpcy5tYXhGaWxlcyA8IHRoaXMuZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbnVtRmlsZToge1xuICAgICAgICAgICAgbWF4RmlsZXM6IHRoaXMubWF4RmlsZXNcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxufVxuIiwiPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZ2V0Rm9ybUdyb3VwKClcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCIgW21hdFRvb2x0aXBDbGFzc109XCJ0b29sdGlwQ2xhc3NcIlxuICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIiBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCJ0b29sdGlwSGlkZURlbGF5XCI+XG4gIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiIFtoaWRlUmVxdWlyZWRNYXJrZXJdPVwiaGlkZVJlcXVpcmVkTWFya2VyXCIgW2NsYXNzLmN1c3RvbS13aWR0aF09XCJoYXNDdXN0b21XaWR0aFwiXG4gICAgY2xhc3M9XCJpY29uLWZpZWxkXCIgKGNsaWNrKT1cIiFlbmFibGVkIHx8IGlzUmVhZE9ubHkgPyBudWxsIDogaW5wdXRGaWxlLmNsaWNrKClcIiBmeEZpbGwgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxWaXNpYmxlXCI+e3sgb2xhYmVsIHwgb1RyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCAjaW5wdXRTaG93VmFsdWUgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwiZ2V0QXR0cmlidXRlKClcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImdldEF0dHJpYnV0ZSgpXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCJcbiAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCIgcmVhZG9ubHkgKGNoYW5nZSk9XCJvbkNoYW5nZUV2ZW50KCRldmVudClcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInNob3dDbGVhckJ1dHRvblwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2tDbGVhclZhbHVlKCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZ2V0VmFsdWUoKVwiIFtkaXNhYmxlZF09XCIhaXNWYWxpZCB8fCB1cGxvYWRlci5pc1VwbG9hZGluZ1wiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2tVcGxvYWQoJGV2ZW50KVwiPlxuICAgICAgPG1hdC1pY29uPmZpbGVfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5SRVFVSVJFRCcgfCBvVHJhbnNsYXRlIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ2ZpbGVUeXBlJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uRklMRV9UWVBFJyB8IG9UcmFuc2xhdGV9fSAoe3sgZ2V0RXJyb3JWYWx1ZSgnZmlsZVR5cGUnLCdhbGxvd2VkRmlsZVR5cGVzJykgfX0pXG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ2ZpbGVTaXplJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uRklMRV9NQVhTSVpFJyB8IG9UcmFuc2xhdGUgfX06IHt7IGdldEVycm9yVmFsdWUoJ2ZpbGVTaXplJywgJ21heEZpbGVTaXplJykgfX0gYnl0ZXNcbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignbnVtRmlsZScpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLkZJTEVfTUFYTlVNJyB8IG9UcmFuc2xhdGUgfX06IHt7IGdldEVycm9yVmFsdWUoJ251bUZpbGUnLCAnbWF4RmlsZXMnKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IG9FcnJvciBvZiBnZXRBY3RpdmVPRXJyb3JzKClcIj5cbiAgICAgIHt7IG9FcnJvci50ZXh0IHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8aW5wdXQgI2lucHV0RmlsZSB0eXBlPVwiZmlsZVwiIGlkPVwie3tnZXRBdHRyaWJ1dGUoKSsnLWZpbGUtaW5wdXQnfX1cIlxuICAgIFthdHRyLmFjY2VwdF09XCJhY2NlcHRGaWxlVHlwZSA/IGFjY2VwdEZpbGVUeXBlLnJlcGxhY2UoYXJyYXlTZXBhcmF0b3JSZWdFeHAsICcsJykgOiBudWxsXCIgKGNoYW5nZSk9XCJmaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIGhpZGRlbj1cInRydWVcIlxuICAgIFthdHRyLm11bHRpcGxlXT1cIm11bHRpcGxlID8gJycgOiBudWxsXCI+XG4gIDxkaXYgKm5nSWY9XCJzaG93SW5mbyAmJiBmaWxlc1wiPlxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiIXNwbGl0VXBsb2FkICYmIHVwbG9hZGVyLmlzVXBsb2FkaW5nXCIgY29sb3I9XCJhY2NlbnRcIiBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwidXBsb2FkZXIucHJvZ3Jlc3NcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPG1hdC1saXN0PlxuICAgICAgPG1hdC1saXN0LWl0ZW0gKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXNcIj5cbiAgICAgICAgPG1hdC1pY29uIG1hdC1saXN0LWljb24+aW5zZXJ0X2RyaXZlX2ZpbGU8L21hdC1pY29uPlxuICAgICAgICA8c3BhbiBtYXQtbGluZT57eyBmaWxlLm5hbWUgfX08L3NwYW4+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cbiAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgKm5nSWY9XCJzcGxpdFVwbG9hZCAmJiBmaWxlLmlzVXBsb2FkaW5nXCIgY29sb3I9XCJhY2NlbnRcIiBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwiZmlsZS5wcm9ncmVzc1wiIGNsYXNzPVwidXBsb2FkaW5nXCJcbiAgICAgICAgICAgIGRpYW1ldGVyPVwiM1wiIHN0cm9rZVdpZHRoPVwiM1wiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic3BsaXRVcGxvYWQgJiYgZmlsZS5pc1VwbG9hZGVkICYmIGZpbGUuaXNTdWNjZXNzXCIgY2xhc3M9XCJ1cGxvYWRlZFwiIHN2Z0ljb249XCJvbnRpbWl6ZTpjaGVja19jaXJjbGVcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNwbGl0VXBsb2FkICYmIGZpbGUuaXNVcGxvYWRlZCAmJiBmaWxlLmlzRXJyb3JcIiBjbGFzcz1cImVycm9yXCIgc3ZnSWNvbj1cIm9udGltaXplOmVycm9yX291dGxpbmVcIj48L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICA8L21hdC1saXN0PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1maWxlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2ZpbGUtaW5wdXQvby1maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2ZpbGUtaW5wdXQvby1maWxlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUd2RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBSXpDLGtDQUFrQztJ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LG9CQUFvQixFQUFFOztxREFDTTsyRkFwQmxCLG1CQUFtQjtrQkFWL0IsU0FBUzsrQkFDRSxjQUFjLFVBR2hCLDJCQUEyQixXQUMxQiw0QkFBNEIsYUFDMUI7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFO3FCQUNuRjs7MEJBMENFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQzs0RkFsQy9DLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxXQUFXO2dCQU1mLFFBQVEsTUFFUixRQUFRLE1BRVIsV0FBVyxNQUdYLFdBQVcsTUFFWCxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIE9uSW5pdCwgT3B0aW9uYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyLCBOdW1iZXJJbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IElGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZmlsZS1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBmaWxlU2VydmljZUZhY3RvcnkgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mYWN0b3JpZXMnO1xuaW1wb3J0IHsgT250aW1pemVGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29udGltaXplL29udGltaXplLWZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBPQ29uZmlndXJlU2VydmljZUFyZ3MgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb25maWd1cmUtc2VydmljZS1hcmdzLnR5cGUnO1xuaW1wb3J0IHsgRm9ybVZhbHVlT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2Zvcm0tdmFsdWUtb3B0aW9ucy50eXBlJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3JtL28tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0Zvcm1EYXRhQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vby1mb3JtLWRhdGEtY29tcG9uZW50LmNsYXNzJztcbmltcG9ydCB7IE9WYWx1ZUNoYW5nZUV2ZW50IH0gZnJvbSAnLi4vLi4vby12YWx1ZS1jaGFuZ2UtZXZlbnQuY2xhc3MnO1xuaW1wb3J0IHsgT0ZpbGVJdGVtIH0gZnJvbSAnLi9vLWZpbGUtaXRlbS5jbGFzcyc7XG5pbXBvcnQgeyBPRmlsZVVwbG9hZGVyIH0gZnJvbSAnLi9vLWZpbGUtdXBsb2FkZXIuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19GSUxFX0lOUFVUID0gW1xuXG4gIC8vIGFjY2VwdC1maWxlLXR5cGUgW3N0cmluZ106IGZpbGUgdHlwZXMgYWxsb3dlZCBvbiB0aGUgZmlsZSBpbnB1dCwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gIC8vIGZpbGVfZXh0ZW5zaW9uLCBhdWRpby8qLCB2aWRlby8qLCBpbWFnZS8qLCBtZWRpYV90eXBlLiBTZWUgaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL2F0dF9pbnB1dF9hY2NlcHQuYXNwXG4gICdhY2NlcHRGaWxlVHlwZTogYWNjZXB0LWZpbGUtdHlwZScsXG5cbiAgLy8gbWF4LWZpbGUtc2l6ZSBbbnVtYmVyXTogbWF4aW11bSBmaWxlIHNpemUgYWxsb3dlZCwgaW4gYnl0ZXMuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnbWF4RmlsZVNpemU6IG1heC1maWxlLXNpemUnLFxuXG4gIC8vIG11bHRpcGxlIFtib29sZWFuXTogbXVsdGlwbGUgZmlsZSBzZWxlY3Rpb24gYWxsb3dlZC4gRGVmYXVsdDogbm8uXG4gICdtdWx0aXBsZScsXG5cbiAgLy8gbWF4LWZpbGVzIFtudW1iZXJdOiBtYXhpbXVtIG51bWJlciBvZiBmaWxlcyBhbGxvd2VkLiBEZWZhdWx0OiAtMS5cbiAgJ21heEZpbGVzOiBtYXgtZmlsZXMnLFxuXG4gIC8vIHNob3ctaW5mbyBbYm9vbGVhbl06IHNob3cgZmlsZXMgaW5mb3JtYXRpb24uIERlZmF1bHQ6IG5vLlxuICAnc2hvd0luZm86IHNob3ctaW5mbycsXG5cbiAgLy8gc3BsaXQtdXBsb2FkIFtib29sZWFuXTogZWFjaCBmaWxlIGlzIHVwbG9hZGVkIGluIGEgcmVxdWVzdCAodHJ1ZSkgb3IgYWxsIGZpbGVzIGFyZSB1cGxvYWRlZCBpbiBhIHNpbmdsZSByZXF1ZXN0IChmYWxzZSkuIERlZmF1bHQ6IHllcy5cbiAgJ3NwbGl0VXBsb2FkOiBzcGxpdC11cGxvYWQnLFxuXG4gIC8vIGFkZGl0aW9uYWwtZGF0YSBbSlNPTl06IHVzZWQgdG8gc2VuZCBhZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4gdGhlIHVwbG9hZCByZXF1ZXN0LlxuICAnYWRkaXRpb25hbERhdGE6IGFkZGl0aW9uYWwtZGF0YScsXG4gICdhcHBlYXJhbmNlJyxcbiAgJ2hpZGVSZXF1aXJlZE1hcmtlcjpoaWRlLXJlcXVpcmVkLW1hcmtlcicsXG4gICdsYWJlbFZpc2libGU6bGFiZWwtdmlzaWJsZSdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19GSUxFX0lOUFVUID0gW1xuICAnb25CZWZvcmVVcGxvYWQnLFxuICAnb25CZWZvcmVVcGxvYWRGaWxlJyxcbiAgJ29uUHJvZ3Jlc3MnLFxuICAnb25Qcm9ncmVzc0ZpbGUnLFxuICAnb25DYW5jZWwnLFxuICAnb25DYW5jZWxGaWxlJyxcbiAgJ29uVXBsb2FkJyxcbiAgJ29uVXBsb2FkRmlsZScsXG4gICdvbkNvbXBsZXRlJyxcbiAgJ29uQ29tcGxldGVGaWxlJyxcbiAgJ29uRXJyb3InLFxuICAnb25FcnJvckZpbGUnXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWZpbGUtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vby1maWxlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1maWxlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19GSUxFX0lOUFVULFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19GSUxFX0lOUFVULFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE9udGltaXplRmlsZVNlcnZpY2UsIHVzZUZhY3Rvcnk6IGZpbGVTZXJ2aWNlRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT0ZpbGVJbnB1dENvbXBvbmVudCBleHRlbmRzIE9Gb3JtRGF0YUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGFycmF5U2VwYXJhdG9yUmVnRXhwID0gbmV3IFJlZ0V4cCgvXFw7L2dpKTtcbiAgcHVibGljIHVwbG9hZGVyOiBPRmlsZVVwbG9hZGVyO1xuICBwdWJsaWMgZmlsZVNlcnZpY2U6IElGaWxlU2VydmljZTtcbiAgQFZpZXdDaGlsZCgnaW5wdXRGaWxlJylcbiAgcHVibGljIGlucHV0RmlsZTogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgYXV0b0JpbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGF1dG9SZWdpc3RlcmluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHNob3dJbmZvOiBib29sZWFuID0gZmFsc2U7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBzcGxpdFVwbG9hZDogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBhY2NlcHRGaWxlVHlwZTogc3RyaW5nO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlcjtcbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgcHVibGljIG1heEZpbGVzOiBudW1iZXIgPSAtMTtcblxuICBwdWJsaWMgb25CZWZvcmVVcGxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvbkJlZm9yZVVwbG9hZEZpbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvblByb2dyZXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25Qcm9ncmVzc0ZpbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvbkNhbmNlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uQ2FuY2VsRmlsZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uVXBsb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25VcGxvYWRGaWxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25Db21wbGV0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uQ29tcGxldGVGaWxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25FcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uRXJyb3JGaWxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByb3RlY3RlZCBzZXJ2aWNlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBlbnRpdHk6IHN0cmluZztcbiAgcHJvdGVjdGVkIHNlcnZpY2VUeXBlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9Gb3JtQ29tcG9uZW50KSkgZm9ybTogT0Zvcm1Db21wb25lbnQsXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICApIHtcbiAgICBzdXBlcihmb3JtLCBlbFJlZiwgaW5qZWN0b3IpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuXG4gICAgdGhpcy51cGxvYWRlci5vbkJlZm9yZVVwbG9hZEFsbCA9ICgpID0+IHRoaXMub25CZWZvcmVVcGxvYWQuZW1pdCgpO1xuICAgIHRoaXMudXBsb2FkZXIub25CZWZvcmVVcGxvYWRJdGVtID0gaXRlbSA9PiB0aGlzLm9uQmVmb3JlVXBsb2FkRmlsZS5lbWl0KGl0ZW0pO1xuICAgIHRoaXMudXBsb2FkZXIub25Qcm9ncmVzc0FsbCA9IHByb2dyZXNzID0+IHRoaXMub25Qcm9ncmVzcy5lbWl0KHByb2dyZXNzKTtcbiAgICB0aGlzLnVwbG9hZGVyLm9uUHJvZ3Jlc3NJdGVtID0gKGl0ZW0sIHByb2dyZXNzKSA9PiB0aGlzLm9uUHJvZ3Jlc3NGaWxlLmVtaXQoeyBpdGVtOiBpdGVtLCBwcm9ncmVzczogcHJvZ3Jlc3MgfSk7XG4gICAgdGhpcy51cGxvYWRlci5vbkNhbmNlbEFsbCA9ICgpID0+IHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICAgIHRoaXMudXBsb2FkZXIub25DYW5jZWxJdGVtID0gaXRlbSA9PiB0aGlzLm9uQ2FuY2VsRmlsZS5lbWl0KCk7XG4gICAgdGhpcy51cGxvYWRlci5vblN1Y2Nlc3NBbGwgPSByZXNwb25zZSA9PiB0aGlzLm9uVXBsb2FkLmVtaXQoeyByZXNwb25zZTogcmVzcG9uc2UgfSk7XG4gICAgdGhpcy51cGxvYWRlci5vblN1Y2Nlc3NJdGVtID0gKGl0ZW0sIHJlc3BvbnNlKSA9PiB0aGlzLm9uVXBsb2FkRmlsZS5lbWl0KHsgaXRlbTogaXRlbSwgcmVzcG9uc2U6IHJlc3BvbnNlIH0pO1xuICAgIHRoaXMudXBsb2FkZXIub25Db21wbGV0ZUFsbCA9ICgpID0+IHRoaXMub25Db21wbGV0ZS5lbWl0KCk7XG4gICAgdGhpcy51cGxvYWRlci5vbkNvbXBsZXRlSXRlbSA9IGl0ZW0gPT4gdGhpcy5vbkNvbXBsZXRlRmlsZS5lbWl0KGl0ZW0pO1xuICAgIHRoaXMudXBsb2FkZXIub25FcnJvckFsbCA9IGVycm9yID0+IHRoaXMub25FcnJvci5lbWl0KGVycm9yKTtcbiAgICB0aGlzLnVwbG9hZGVyLm9uRXJyb3JJdGVtID0gKGl0ZW0sIGVycm9yKSA9PiB0aGlzLm9uRXJyb3JGaWxlLmVtaXQoeyBpdGVtOiBpdGVtLCBlcnJvcjogZXJyb3IgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5pbml0aWFsaXplKCk7XG5cbiAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5mb3JtLnNlcnZpY2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5lbnRpdHkpIHtcbiAgICAgIHRoaXMuZW50aXR5ID0gdGhpcy5mb3JtLmVudGl0eTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZ3VyZVNlcnZpY2UoKTtcbiAgICB0aGlzLnVwbG9hZGVyID0gbmV3IE9GaWxlVXBsb2FkZXIodGhpcy5maWxlU2VydmljZSwgdGhpcy5lbnRpdHkpO1xuICAgIHRoaXMudXBsb2FkZXIuc3BsaXRVcGxvYWQgPSB0aGlzLnNwbGl0VXBsb2FkO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZVNlcnZpY2UoKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlndXJlU2VydmljZUFyZ3M6IE9Db25maWd1cmVTZXJ2aWNlQXJncyA9IHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsIGJhc2VTZXJ2aWNlOiBPbnRpbWl6ZUZpbGVTZXJ2aWNlLCBlbnRpdHk6IHRoaXMuZW50aXR5LCBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsIHNlcnZpY2VUeXBlOiB0aGlzLnNlcnZpY2VUeXBlIH1cbiAgICB0aGlzLmZpbGVTZXJ2aWNlID0gVXRpbC5jb25maWd1cmVTZXJ2aWNlKGNvbmZpZ3VyZVNlcnZpY2VBcmdzKTtcblxuICB9XG5cbiAgcHVibGljIHJlc29sdmVWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBzdXBlci5yZXNvbHZlVmFsaWRhdG9ycygpO1xuICAgIGlmICh0aGlzLmFjY2VwdEZpbGVUeXBlKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5maWxldHlwZVZhbGlkYXRvci5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWF4RmlsZVNpemUpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLm1heEZpbGVTaXplVmFsaWRhdG9yLmJpbmQodGhpcykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLm1heEZpbGVzICE9PSAtMSkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMubWF4RmlsZXNWYWxpZGF0b3IuYmluZCh0aGlzKSk7XG4gICAgfVxuICAgIHJldHVybiB2YWxpZGF0b3JzO1xuICB9XG5cbiAgcHVibGljIGZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgdmFsdWU6IHN0cmluZyA9ICcnO1xuICAgIGlmIChldmVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0OiBhbnkgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBmaWxlczogRmlsZUxpc3QgPSB0YXJnZXQuZmlsZXM7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgIHRoaXMudXBsb2FkZXIuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMCwgZjogRmlsZTsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgZiA9IGZpbGVzW2ldO1xuICAgICAgICAgIGNvbnN0IGZpbGVJdGVtOiBPRmlsZUl0ZW0gPSBuZXcgT0ZpbGVJdGVtKGYsIHRoaXMudXBsb2FkZXIpO1xuICAgICAgICAgIHRoaXMudXBsb2FkZXIuYWRkRmlsZShmaWxlSXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSB0aGlzLnVwbG9hZGVyLmZpbGVzLm1hcChmaWxlID0+IGZpbGUubmFtZSkuam9pbignLCAnKTtcblxuICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSAhPT0gJycgPyB2YWx1ZSA6IHVuZGVmaW5lZCwgeyBjaGFuZ2VUeXBlOiBPVmFsdWVDaGFuZ2VFdmVudC5VU0VSX0NIQU5HRSB9KTtcbiAgICAgICAgICBpZiAodGhpcy5fZkNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBzdXBlci5jbGVhclZhbHVlKCk7XG4gICAqL1xuICBwdWJsaWMgY2xlYXJWYWx1ZShvcHRpb25zPzogRm9ybVZhbHVlT3B0aW9ucywgc2V0RGlydHk6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIHN1cGVyLmNsZWFyVmFsdWUob3B0aW9ucywgc2V0RGlydHkpO1xuICAgIHRoaXMudXBsb2FkZXIuY2xlYXIoKTtcbiAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICBwdWJsaWMgb25DbGlja1VwbG9hZChlOiBFdmVudCk6IHZvaWQge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuaXNWYWxpZCkge1xuICAgICAgdGhpcy51cGxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkZXIudXBsb2FkKCk7XG4gIH1cblxuICBnZXQgZmlsZXMoKTogT0ZpbGVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLnVwbG9hZGVyLmZpbGVzO1xuICB9XG5cbiAgZ2V0IGFkZGl0aW9uYWxEYXRhKCk6IGFueSB7XG4gICAgaWYgKHRoaXMudXBsb2FkZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwbG9hZGVyLmRhdGE7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc2V0IGFkZGl0aW9uYWxEYXRhKGRhdGE6IGFueSkge1xuICAgIGlmICh0aGlzLnVwbG9hZGVyKSB7XG4gICAgICB0aGlzLnVwbG9hZGVyLmRhdGEgPSBkYXRhO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbm5lck9uQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZU9Gb3JtVmFsdWUoZXZlbnQpO1xuICAgIGlmICh0aGlzLl9mQ29udHJvbCAmJiB0aGlzLl9mQ29udHJvbC50b3VjaGVkKSB7XG4gICAgICB0aGlzLl9mQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpbGV0eXBlVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLmFjY2VwdEZpbGVUeXBlKSB7XG4gICAgICBjb25zdCByZWdleDogUmVnRXhwID0gbmV3IFJlZ0V4cCh0aGlzLmFjY2VwdEZpbGVUeXBlLnJlcGxhY2UoJzsnLCAnfCcpKTtcbiAgICAgIGlmICghdGhpcy5maWxlcy5ldmVyeShmaWxlID0+IGZpbGUudHlwZS5tYXRjaChyZWdleCkgIT09IG51bGwgfHwgZmlsZS5uYW1lLnN1YnN0cihmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKSkubWF0Y2gocmVnZXgpICE9PSBudWxsKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGZpbGVUeXBlOiB7XG4gICAgICAgICAgICBhbGxvd2VkRmlsZVR5cGVzOiB0aGlzLmFjY2VwdEZpbGVUeXBlLnJlcGxhY2UoJzsnLCAnLCAnKVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIG1heEZpbGVTaXplVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLm1heEZpbGVTaXplKSB7XG4gICAgICBpZiAoIXRoaXMuZmlsZXMuZXZlcnkoZmlsZSA9PiBmaWxlLnNpemUgPCB0aGlzLm1heEZpbGVTaXplKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGZpbGVTaXplOiB7XG4gICAgICAgICAgICBtYXhGaWxlU2l6ZTogdGhpcy5tYXhGaWxlU2l6ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIG1heEZpbGVzVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLm11bHRpcGxlICYmIHRoaXMubWF4RmlsZXMgIT09IC0xKSB7XG4gICAgICBpZiAodGhpcy5tYXhGaWxlcyA8IHRoaXMuZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbnVtRmlsZToge1xuICAgICAgICAgICAgbWF4RmlsZXM6IHRoaXMubWF4RmlsZXNcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxufVxuIiwiPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZ2V0Rm9ybUdyb3VwKClcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCIgW21hdFRvb2x0aXBDbGFzc109XCJ0b29sdGlwQ2xhc3NcIlxuICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIiBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCJ0b29sdGlwSGlkZURlbGF5XCI+XG4gIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiIFtoaWRlUmVxdWlyZWRNYXJrZXJdPVwiaGlkZVJlcXVpcmVkTWFya2VyXCIgW2NsYXNzLmN1c3RvbS13aWR0aF09XCJoYXNDdXN0b21XaWR0aFwiXG4gICAgY2xhc3M9XCJpY29uLWZpZWxkXCIgKGNsaWNrKT1cIiFlbmFibGVkIHx8IGlzUmVhZE9ubHkgPyBudWxsIDogaW5wdXRGaWxlLmNsaWNrKClcIiBmeEZpbGwgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxWaXNpYmxlXCI+e3sgb2xhYmVsIHwgb1RyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCAjaW5wdXRTaG93VmFsdWUgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwiZ2V0QXR0cmlidXRlKClcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImdldEF0dHJpYnV0ZSgpXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCJcbiAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCIgcmVhZG9ubHkgKGNoYW5nZSk9XCJvbkNoYW5nZUV2ZW50KCRldmVudClcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInNob3dDbGVhckJ1dHRvblwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2tDbGVhclZhbHVlKCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZ2V0VmFsdWUoKVwiIFtkaXNhYmxlZF09XCIhaXNWYWxpZCB8fCB1cGxvYWRlci5pc1VwbG9hZGluZ1wiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2tVcGxvYWQoJGV2ZW50KVwiPlxuICAgICAgPG1hdC1pY29uPmZpbGVfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5SRVFVSVJFRCcgfCBvVHJhbnNsYXRlIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ2ZpbGVUeXBlJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uRklMRV9UWVBFJyB8IG9UcmFuc2xhdGV9fSAoe3sgZ2V0RXJyb3JWYWx1ZSgnZmlsZVR5cGUnLCdhbGxvd2VkRmlsZVR5cGVzJykgfX0pXG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ2ZpbGVTaXplJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uRklMRV9NQVhTSVpFJyB8IG9UcmFuc2xhdGUgfX06IHt7IGdldEVycm9yVmFsdWUoJ2ZpbGVTaXplJywgJ21heEZpbGVTaXplJykgfX0gYnl0ZXNcbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignbnVtRmlsZScpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLkZJTEVfTUFYTlVNJyB8IG9UcmFuc2xhdGUgfX06IHt7IGdldEVycm9yVmFsdWUoJ251bUZpbGUnLCAnbWF4RmlsZXMnKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IG9FcnJvciBvZiBnZXRBY3RpdmVPRXJyb3JzKClcIj5cbiAgICAgIHt7IG9FcnJvci50ZXh0IHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8aW5wdXQgI2lucHV0RmlsZSB0eXBlPVwiZmlsZVwiIGlkPVwie3tnZXRBdHRyaWJ1dGUoKSsnLWZpbGUtaW5wdXQnfX1cIlxuICAgIFthdHRyLmFjY2VwdF09XCJhY2NlcHRGaWxlVHlwZSA/IGFjY2VwdEZpbGVUeXBlLnJlcGxhY2UoYXJyYXlTZXBhcmF0b3JSZWdFeHAsICcsJykgOiBudWxsXCIgKGNoYW5nZSk9XCJmaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIGhpZGRlbj1cInRydWVcIlxuICAgIFthdHRyLm11bHRpcGxlXT1cIm11bHRpcGxlID8gJycgOiBudWxsXCI+XG4gIDxkaXYgKm5nSWY9XCJzaG93SW5mbyAmJiBmaWxlc1wiPlxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiIXNwbGl0VXBsb2FkICYmIHVwbG9hZGVyLmlzVXBsb2FkaW5nXCIgY29sb3I9XCJhY2NlbnRcIiBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwidXBsb2FkZXIucHJvZ3Jlc3NcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPG1hdC1saXN0PlxuICAgICAgPG1hdC1saXN0LWl0ZW0gKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXNcIj5cbiAgICAgICAgPG1hdC1pY29uIG1hdC1saXN0LWljb24+aW5zZXJ0X2RyaXZlX2ZpbGU8L21hdC1pY29uPlxuICAgICAgICA8c3BhbiBtYXQtbGluZT57eyBmaWxlLm5hbWUgfX08L3NwYW4+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cbiAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgKm5nSWY9XCJzcGxpdFVwbG9hZCAmJiBmaWxlLmlzVXBsb2FkaW5nXCIgY29sb3I9XCJhY2NlbnRcIiBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwiZmlsZS5wcm9ncmVzc1wiIGNsYXNzPVwidXBsb2FkaW5nXCJcbiAgICAgICAgICAgIGRpYW1ldGVyPVwiM1wiIHN0cm9rZVdpZHRoPVwiM1wiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic3BsaXRVcGxvYWQgJiYgZmlsZS5pc1VwbG9hZGVkICYmIGZpbGUuaXNTdWNjZXNzXCIgY2xhc3M9XCJ1cGxvYWRlZFwiIHN2Z0ljb249XCJvbnRpbWl6ZTpjaGVja19jaXJjbGVcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNwbGl0VXBsb2FkICYmIGZpbGUuaXNVcGxvYWRlZCAmJiBmaWxlLmlzRXJyb3JcIiBjbGFzcz1cImVycm9yXCIgc3ZnSWNvbj1cIm9udGltaXplOmVycm9yX291dGxpbmVcIj48L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICA8L21hdC1saXN0PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19