@onecx/angular-accelerator 5.29.0 → 5.30.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.
@@ -67,11 +67,11 @@ export class ColumnGroupSelectionComponent {
67
67
  });
68
68
  }
69
69
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ColumnGroupSelectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
70
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ColumnGroupSelectionComponent, selector: "ocx-column-group-selection", inputs: { selectedGroupKey: "selectedGroupKey", columns: "columns", placeholderKey: "placeholderKey", defaultGroupKey: "defaultGroupKey", customGroupKey: "customGroupKey" }, outputs: { groupSelectionChanged: "groupSelectionChanged", componentStateChanged: "componentStateChanged" }, ngImport: i0, template: "<p-floatLabel>\n <p-dropdown\n inputId=\"columnGroupSelectionDropdown\"\n *ngIf=\"(allGroupKeys$ | async)?.length\"\n (onChange)=\"changeGroupSelection($event)\"\n [options]=\"(allGroupKeys$ | async) || []\"\n [placeholder]=\"placeholderKey | translate\"\n [(ngModel)]=\"selectedGroupKey\"\n [ariaLabel]=\"'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABEL' | translate\"\n >\n <ng-template let-item pTemplate=\"item\"> {{ item ? (item | translate) : ''}} </ng-template>\n <ng-template let-item pTemplate=\"selectedItem\"> {{ item ? (item | translate) : ''}} </ng-template>\n </p-dropdown>\n <label *ngIf=\"(allGroupKeys$ | async)?.length\" for=\"columnGroupSelectionDropdown\"\n >{{ (\"OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DROPDOWN_LABEL\" | translate) }}</label\n >\n</p-floatLabel>\n", styles: [":host ::ng-deep .p-dropdown{min-width:12rem}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i4.FloatLabel, selector: "p-floatLabel" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ColumnGroupSelectionComponent, selector: "ocx-column-group-selection", inputs: { selectedGroupKey: "selectedGroupKey", columns: "columns", placeholderKey: "placeholderKey", defaultGroupKey: "defaultGroupKey", customGroupKey: "customGroupKey" }, outputs: { groupSelectionChanged: "groupSelectionChanged", componentStateChanged: "componentStateChanged" }, ngImport: i0, template: "<p-floatLabel>\n <p-dropdown\n inputId=\"columnGroupSelectionDropdown\"\n id=\"columnGroupSelectionDropdownElement\"\n *ngIf=\"(allGroupKeys$ | async)?.length\"\n (onChange)=\"changeGroupSelection($event)\"\n [options]=\"(allGroupKeys$ | async) || []\"\n [placeholder]=\"placeholderKey | translate\"\n [(ngModel)]=\"selectedGroupKey\"\n [ariaLabel]=\"'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABEL' | translate\"\n >\n <ng-template let-item pTemplate=\"item\"> {{ item ? (item | translate) : ''}} </ng-template>\n <ng-template let-item pTemplate=\"selectedItem\"> {{ item ? (item | translate) : ''}} </ng-template>\n </p-dropdown>\n <label *ngIf=\"(allGroupKeys$ | async)?.length\" for=\"columnGroupSelectionDropdown\"\n >{{ (\"OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DROPDOWN_LABEL\" | translate) }}</label\n >\n</p-floatLabel>\n", styles: [":host ::ng-deep .p-dropdown{min-width:12rem}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i4.FloatLabel, selector: "p-floatLabel" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
71
71
  }
72
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ColumnGroupSelectionComponent, decorators: [{
73
73
  type: Component,
74
- args: [{ selector: 'ocx-column-group-selection', template: "<p-floatLabel>\n <p-dropdown\n inputId=\"columnGroupSelectionDropdown\"\n *ngIf=\"(allGroupKeys$ | async)?.length\"\n (onChange)=\"changeGroupSelection($event)\"\n [options]=\"(allGroupKeys$ | async) || []\"\n [placeholder]=\"placeholderKey | translate\"\n [(ngModel)]=\"selectedGroupKey\"\n [ariaLabel]=\"'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABEL' | translate\"\n >\n <ng-template let-item pTemplate=\"item\"> {{ item ? (item | translate) : ''}} </ng-template>\n <ng-template let-item pTemplate=\"selectedItem\"> {{ item ? (item | translate) : ''}} </ng-template>\n </p-dropdown>\n <label *ngIf=\"(allGroupKeys$ | async)?.length\" for=\"columnGroupSelectionDropdown\"\n >{{ (\"OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DROPDOWN_LABEL\" | translate) }}</label\n >\n</p-floatLabel>\n", styles: [":host ::ng-deep .p-dropdown{min-width:12rem}\n"] }]
74
+ args: [{ selector: 'ocx-column-group-selection', template: "<p-floatLabel>\n <p-dropdown\n inputId=\"columnGroupSelectionDropdown\"\n id=\"columnGroupSelectionDropdownElement\"\n *ngIf=\"(allGroupKeys$ | async)?.length\"\n (onChange)=\"changeGroupSelection($event)\"\n [options]=\"(allGroupKeys$ | async) || []\"\n [placeholder]=\"placeholderKey | translate\"\n [(ngModel)]=\"selectedGroupKey\"\n [ariaLabel]=\"'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABEL' | translate\"\n >\n <ng-template let-item pTemplate=\"item\"> {{ item ? (item | translate) : ''}} </ng-template>\n <ng-template let-item pTemplate=\"selectedItem\"> {{ item ? (item | translate) : ''}} </ng-template>\n </p-dropdown>\n <label *ngIf=\"(allGroupKeys$ | async)?.length\" for=\"columnGroupSelectionDropdown\"\n >{{ (\"OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DROPDOWN_LABEL\" | translate) }}</label\n >\n</p-floatLabel>\n", styles: [":host ::ng-deep .p-dropdown{min-width:12rem}\n"] }]
75
75
  }], propDecorators: { selectedGroupKey: [{
76
76
  type: Input
77
77
  }], columns: [{
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
87
87
  }], componentStateChanged: [{
88
88
  type: Output
89
89
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWdyb3VwLXNlbGVjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2NvbHVtbi1ncm91cC1zZWxlY3Rpb24vY29sdW1uLWdyb3VwLXNlbGVjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2NvbHVtbi1ncm91cC1zZWxlY3Rpb24vY29sdW1uLWdyb3VwLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQTs7Ozs7Ozs7QUFhdEUsTUFBTSxPQUFPLDZCQUE2QjtJQUwxQztRQU1FLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFBO1FBY25ELGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsRUFBRSxDQUFDLENBQUE7UUFRNUMsbUJBQWMsR0FBRyxFQUFFLENBQUE7UUFDbkIsb0JBQWUsR0FBRyxFQUFFLENBQUE7UUFDcEIsbUJBQWMsR0FBRyxFQUFFLENBQUE7UUFFbEIsMEJBQXFCLEdBQTZDLElBQUksWUFBWSxFQUFFLENBQUE7UUFDcEYsMEJBQXFCLEdBQXFELElBQUksWUFBWSxFQUFFLENBQUE7S0EwQ3ZHO0lBcEVDLElBQ0ksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQzFDLENBQUM7SUFDRCxJQUFJLGdCQUFnQixDQUFDLEtBQWE7UUFDaEMs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QixFQUFFLGFBQWE7U0FDaEMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0FyRVUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsNlZDZDFDLDZ5QkFpQkE7OzRGREhhLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFFRSw0QkFBNEI7OEJBTWxDLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFlRixPQUFPO3NCQURWLEtBQUs7Z0JBT0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUkscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS10YWJsZS1jb2x1bW4ubW9kZWwnXG5cbmV4cG9ydCB0eXBlIEdyb3VwU2VsZWN0aW9uQ2hhbmdlZEV2ZW50ID0geyBhY3RpdmVDb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXTsgZ3JvdXBLZXk6IHN0cmluZyB9XG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkdyb3VwU2VsZWN0aW9uQ29tcG9uZW50U3RhdGUge1xuICBhY3RpdmVDb2x1bW5Hcm91cEtleT86IHN0cmluZ1xuICBkaXNwbGF5ZWRDb2x1bW5zPzogRGF0YVRhYmxlQ29sdW1uW11cbn1cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLWdyb3VwLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHNlbGVjdG9yOiAnb2N4LWNvbHVtbi1ncm91cC1zZWxlY3Rpb24nLFxuICBzdHlsZVVybHM6IFsnLi9jb2x1bW4tZ3JvdXAtc2VsZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtbkdyb3VwU2VsZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgc2VsZWN0ZWRHcm91cEtleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZEdyb3VwS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRHcm91cEtleSQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBzZWxlY3RlZEdyb3VwS2V5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBLZXkkLm5leHQodmFsdWUpXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEtleSA9PT0gdGhpcy5jdXN0b21Hcm91cEtleSkge1xuICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgIGFjdGl2ZUNvbHVtbkdyb3VwS2V5OiB2YWx1ZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY29sdW1ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFUYWJsZUNvbHVtbltdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbnMoKTogRGF0YVRhYmxlQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMkLmdldFZhbHVlKClcbiAgfVxuICBzZXQgY29sdW1ucyh2YWx1ZTogRGF0YVRhYmxlQ29sdW1uW10pIHtcbiAgICB0aGlzLmNvbHVtbnMkLm5leHQodmFsdWUpXG4gIH1cbiAgQElucHV0KCkgcGxhY2Vob2xkZXJLZXkgPSAnJ1xuICBASW5wdXQoKSBkZWZhdWx0R3JvdXBLZXkgPSAnJ1xuICBASW5wdXQoKSBjdXN0b21Hcm91cEtleSA9ICcnXG5cbiAgQE91dHB1dCgpIGdyb3VwU2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEdyb3VwU2VsZWN0aW9uQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgY29tcG9uZW50U3RhdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q29sdW1uR3JvdXBTZWxlY3Rpb25Db21wb25lbnRTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICBhbGxHcm91cEtleXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB8IHVuZGVmaW5lZFxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWxsR3JvdXBLZXlzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY29sdW1ucyQsIHRoaXMuc2VsZWN0ZWRHcm91cEtleSRdKS5waXBlKFxuICAgICAgbWFwKChbY29sdW1ucywgc2VsZWN0ZWRHcm91cEtleV0pID0+XG4gICAgICAgIGNvbHVtbnNcbiAgICAgICAgICAubWFwKChrZXlzKSA9PiBrZXlzLnByZWRlZmluZWRHcm91cEtleXMgfHwgW10pXG4gICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgIC5jb25jYXQoW3RoaXMuZGVmYXVsdEdyb3VwS2V5XSlcbiAgICAgICAgICAuY29uY2F0KFtzZWxlY3RlZEdyb3VwS2V5XSlcbiAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSkgPT4gISF2YWx1ZSlcbiAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIHNlbGYpID0+IHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4ICYmIHZhbHVlICE9IG51bGwpXG4gICAgICApXG4gICAgKVxuICAgIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBLZXkgPT09IHRoaXMuY3VzdG9tR3JvdXBLZXkpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICBhY3RpdmVDb2x1bW5Hcm91cEtleTogdGhpcy5zZWxlY3RlZEdyb3VwS2V5LFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYWN0aXZlQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoKGMpID0+XG4gICAgICAgIGMucHJlZGVmaW5lZEdyb3VwS2V5cz8uaW5jbHVkZXModGhpcy5zZWxlY3RlZEdyb3VwS2V5JC5nZXRWYWx1ZSgpID8/IHRoaXMuZGVmYXVsdEdyb3VwS2V5KVxuICAgICAgKVxuICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgIGFjdGl2ZUNvbHVtbkdyb3VwS2V5OiB0aGlzLnNlbGVjdGVkR3JvdXBLZXksXG4gICAgICAgIGRpc3BsYXllZENvbHVtbnM6IGFjdGl2ZUNvbHVtbnMsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUdyb3VwU2VsZWN0aW9uKGV2ZW50OiB7IHZhbHVlOiBzdHJpbmcgfSkge1xuICAgIGlmIChldmVudC52YWx1ZSA9PT0gdGhpcy5jdXN0b21Hcm91cEtleSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGFjdGl2ZUNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKChjKSA9PiBjLnByZWRlZmluZWRHcm91cEtleXM/LmluY2x1ZGVzKGV2ZW50LnZhbHVlKSlcbiAgICB0aGlzLmdyb3VwU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHsgYWN0aXZlQ29sdW1ucywgZ3JvdXBLZXk6IGV2ZW50LnZhbHVlIH0pXG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICBhY3RpdmVDb2x1bW5Hcm91cEtleTogZXZlbnQudmFsdWUsXG4gICAgICBkaXNwbGF5ZWRDb2x1bW5zOiBhY3RpdmVDb2x1bW5zLFxuICAgIH0pXG4gIH1cbn1cbiIsIjxwLWZsb2F0TGFiZWw+XG4gIDxwLWRyb3Bkb3duXG4gICAgaW5wdXRJZD1cImNvbHVtbkdyb3VwU2VsZWN0aW9uRHJvcGRvd25cIlxuICAgICpuZ0lmPVwiKGFsbEdyb3VwS2V5cyQgfCBhc3luYyk/Lmxlbmd0aFwiXG4gICAgKG9uQ2hhbmdlKT1cImNoYW5nZUdyb3VwU2VsZWN0aW9uKCRldmVudClcIlxuICAgIFtvcHRpb25zXT1cIihhbGxHcm91cEtleXMkIHwgYXN5bmMpIHx8IFtdXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJLZXkgfCB0cmFuc2xhdGVcIlxuICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRHcm91cEtleVwiXG4gICAgW2FyaWFMYWJlbF09XCInT0NYX0NVU1RPTV9HUk9VUF9DT0xVTU5fU0VMRUNUT1IuQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIj4ge3sgaXRlbSA/IChpdGVtIHwgdHJhbnNsYXRlKSA6ICcnfX0gPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwic2VsZWN0ZWRJdGVtXCI+IHt7IGl0ZW0gPyAoaXRlbSB8IHRyYW5zbGF0ZSkgOiAnJ319IDwvbmctdGVtcGxhdGU+XG4gIDwvcC1kcm9wZG93bj5cbiAgPGxhYmVsICpuZ0lmPVwiKGFsbEdyb3VwS2V5cyQgfCBhc3luYyk/Lmxlbmd0aFwiIGZvcj1cImNvbHVtbkdyb3VwU2VsZWN0aW9uRHJvcGRvd25cIlxuICAgID57eyAoXCJPQ1hfQ1VTVE9NX0dST1VQX0NPTFVNTl9TRUxFQ1RPUi5EUk9QRE9XTl9MQUJFTFwiIHwgdHJhbnNsYXRlKSB9fTwvbGFiZWxcbiAgPlxuPC9wLWZsb2F0TGFiZWw+XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWdyb3VwLXNlbGVjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2NvbHVtbi1ncm91cC1zZWxlY3Rpb24vY29sdW1uLWdyb3VwLXNlbGVjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2NvbHVtbi1ncm91cC1zZWxlY3Rpb24vY29sdW1uLWdyb3VwLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQTs7Ozs7Ozs7QUFhdEUsTUFBTSxPQUFPLDZCQUE2QjtJQUwxQztRQU1FLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFBO1FBY25ELGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsRUFBRSxDQUFDLENBQUE7UUFRNUMsbUJBQWMsR0FBRyxFQUFFLENBQUE7UUFDbkIsb0JBQWUsR0FBRyxFQUFFLENBQUE7UUFDcEIsbUJBQWMsR0FBRyxFQUFFLENBQUE7UUFFbEIsMEJBQXFCLEdBQTZDLElBQUksWUFBWSxFQUFFLENBQUE7UUFDcEYsMEJBQXFCLEdBQXFELElBQUksWUFBWSxFQUFFLENBQUE7S0EwQ3ZHO0lBcEVDLElBQ0ksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQzFDLENBQUM7SUFDRCxJQUFJLGdCQUFnQixDQUFDLEtBQWE7UUFDaEMs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QixFQUFFLGFBQWE7U0FDaEMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0FyRVUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsNlZDZDFDLDYxQkFrQkE7OzRGREphLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFFRSw0QkFBNEI7OEJBTWxDLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFlRixPQUFPO3NCQURWLEtBQUs7Z0JBT0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUkscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS10YWJsZS1jb2x1bW4ubW9kZWwnXG5cbmV4cG9ydCB0eXBlIEdyb3VwU2VsZWN0aW9uQ2hhbmdlZEV2ZW50ID0geyBhY3RpdmVDb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXTsgZ3JvdXBLZXk6IHN0cmluZyB9XG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkdyb3VwU2VsZWN0aW9uQ29tcG9uZW50U3RhdGUge1xuICBhY3RpdmVDb2x1bW5Hcm91cEtleT86IHN0cmluZ1xuICBkaXNwbGF5ZWRDb2x1bW5zPzogRGF0YVRhYmxlQ29sdW1uW11cbn1cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLWdyb3VwLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHNlbGVjdG9yOiAnb2N4LWNvbHVtbi1ncm91cC1zZWxlY3Rpb24nLFxuICBzdHlsZVVybHM6IFsnLi9jb2x1bW4tZ3JvdXAtc2VsZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtbkdyb3VwU2VsZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgc2VsZWN0ZWRHcm91cEtleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZEdyb3VwS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRHcm91cEtleSQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBzZWxlY3RlZEdyb3VwS2V5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBLZXkkLm5leHQodmFsdWUpXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEtleSA9PT0gdGhpcy5jdXN0b21Hcm91cEtleSkge1xuICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgIGFjdGl2ZUNvbHVtbkdyb3VwS2V5OiB2YWx1ZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY29sdW1ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFUYWJsZUNvbHVtbltdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbnMoKTogRGF0YVRhYmxlQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMkLmdldFZhbHVlKClcbiAgfVxuICBzZXQgY29sdW1ucyh2YWx1ZTogRGF0YVRhYmxlQ29sdW1uW10pIHtcbiAgICB0aGlzLmNvbHVtbnMkLm5leHQodmFsdWUpXG4gIH1cbiAgQElucHV0KCkgcGxhY2Vob2xkZXJLZXkgPSAnJ1xuICBASW5wdXQoKSBkZWZhdWx0R3JvdXBLZXkgPSAnJ1xuICBASW5wdXQoKSBjdXN0b21Hcm91cEtleSA9ICcnXG5cbiAgQE91dHB1dCgpIGdyb3VwU2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEdyb3VwU2VsZWN0aW9uQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgY29tcG9uZW50U3RhdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q29sdW1uR3JvdXBTZWxlY3Rpb25Db21wb25lbnRTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICBhbGxHcm91cEtleXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB8IHVuZGVmaW5lZFxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWxsR3JvdXBLZXlzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY29sdW1ucyQsIHRoaXMuc2VsZWN0ZWRHcm91cEtleSRdKS5waXBlKFxuICAgICAgbWFwKChbY29sdW1ucywgc2VsZWN0ZWRHcm91cEtleV0pID0+XG4gICAgICAgIGNvbHVtbnNcbiAgICAgICAgICAubWFwKChrZXlzKSA9PiBrZXlzLnByZWRlZmluZWRHcm91cEtleXMgfHwgW10pXG4gICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgIC5jb25jYXQoW3RoaXMuZGVmYXVsdEdyb3VwS2V5XSlcbiAgICAgICAgICAuY29uY2F0KFtzZWxlY3RlZEdyb3VwS2V5XSlcbiAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSkgPT4gISF2YWx1ZSlcbiAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIHNlbGYpID0+IHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4ICYmIHZhbHVlICE9IG51bGwpXG4gICAgICApXG4gICAgKVxuICAgIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBLZXkgPT09IHRoaXMuY3VzdG9tR3JvdXBLZXkpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICBhY3RpdmVDb2x1bW5Hcm91cEtleTogdGhpcy5zZWxlY3RlZEdyb3VwS2V5LFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYWN0aXZlQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoKGMpID0+XG4gICAgICAgIGMucHJlZGVmaW5lZEdyb3VwS2V5cz8uaW5jbHVkZXModGhpcy5zZWxlY3RlZEdyb3VwS2V5JC5nZXRWYWx1ZSgpID8/IHRoaXMuZGVmYXVsdEdyb3VwS2V5KVxuICAgICAgKVxuICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgIGFjdGl2ZUNvbHVtbkdyb3VwS2V5OiB0aGlzLnNlbGVjdGVkR3JvdXBLZXksXG4gICAgICAgIGRpc3BsYXllZENvbHVtbnM6IGFjdGl2ZUNvbHVtbnMsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUdyb3VwU2VsZWN0aW9uKGV2ZW50OiB7IHZhbHVlOiBzdHJpbmcgfSkge1xuICAgIGlmIChldmVudC52YWx1ZSA9PT0gdGhpcy5jdXN0b21Hcm91cEtleSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGFjdGl2ZUNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKChjKSA9PiBjLnByZWRlZmluZWRHcm91cEtleXM/LmluY2x1ZGVzKGV2ZW50LnZhbHVlKSlcbiAgICB0aGlzLmdyb3VwU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHsgYWN0aXZlQ29sdW1ucywgZ3JvdXBLZXk6IGV2ZW50LnZhbHVlIH0pXG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICBhY3RpdmVDb2x1bW5Hcm91cEtleTogZXZlbnQudmFsdWUsXG4gICAgICBkaXNwbGF5ZWRDb2x1bW5zOiBhY3RpdmVDb2x1bW5zLFxuICAgIH0pXG4gIH1cbn1cbiIsIjxwLWZsb2F0TGFiZWw+XG4gIDxwLWRyb3Bkb3duXG4gICAgaW5wdXRJZD1cImNvbHVtbkdyb3VwU2VsZWN0aW9uRHJvcGRvd25cIlxuICAgIGlkPVwiY29sdW1uR3JvdXBTZWxlY3Rpb25Ecm9wZG93bkVsZW1lbnRcIlxuICAgICpuZ0lmPVwiKGFsbEdyb3VwS2V5cyQgfCBhc3luYyk/Lmxlbmd0aFwiXG4gICAgKG9uQ2hhbmdlKT1cImNoYW5nZUdyb3VwU2VsZWN0aW9uKCRldmVudClcIlxuICAgIFtvcHRpb25zXT1cIihhbGxHcm91cEtleXMkIHwgYXN5bmMpIHx8IFtdXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJLZXkgfCB0cmFuc2xhdGVcIlxuICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRHcm91cEtleVwiXG4gICAgW2FyaWFMYWJlbF09XCInT0NYX0NVU1RPTV9HUk9VUF9DT0xVTU5fU0VMRUNUT1IuQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIj4ge3sgaXRlbSA/IChpdGVtIHwgdHJhbnNsYXRlKSA6ICcnfX0gPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwic2VsZWN0ZWRJdGVtXCI+IHt7IGl0ZW0gPyAoaXRlbSB8IHRyYW5zbGF0ZSkgOiAnJ319IDwvbmctdGVtcGxhdGU+XG4gIDwvcC1kcm9wZG93bj5cbiAgPGxhYmVsICpuZ0lmPVwiKGFsbEdyb3VwS2V5cyQgfCBhc3luYyk/Lmxlbmd0aFwiIGZvcj1cImNvbHVtbkdyb3VwU2VsZWN0aW9uRHJvcGRvd25cIlxuICAgID57eyAoXCJPQ1hfQ1VTVE9NX0dST1VQX0NPTFVNTl9TRUxFQ1RPUi5EUk9QRE9XTl9MQUJFTFwiIHwgdHJhbnNsYXRlKSB9fTwvbGFiZWxcbiAgPlxuPC9wLWZsb2F0TGFiZWw+XG4iXX0=
@@ -54,6 +54,12 @@ export class DiagramComponent {
54
54
  constructor(translateService) {
55
55
  this.translateService = translateService;
56
56
  this.sumKey = 'OCX_DIAGRAM.SUM';
57
+ /**
58
+ * This property determines if diagram should generate the colors for the data that does not have any set.
59
+ *
60
+ * Setting this property to false will result in using the provided colors only if every data item has one. In the scenario where at least one item does not have a color set, diagram will generate all colors.
61
+ */
62
+ this.fillMissingColors = true;
57
63
  this._diagramType = "PIE" /* DiagramType.PIE */;
58
64
  this.chartType = 'pie';
59
65
  this._supportedDiagramTypes = [];
@@ -80,7 +86,7 @@ export class DiagramComponent {
80
86
  if (this.data) {
81
87
  const inputData = this.data.map((diagramData) => diagramData.value);
82
88
  this.amountOfData = this.data.reduce((acc, current) => acc + current.value, 0);
83
- const COLORS = interpolateColors(this.data.length, colorScale, colorRangeInfo);
89
+ const COLORS = this.generateColors(this.data, colorScale, colorRangeInfo);
84
90
  this.chartData = {
85
91
  labels: this.data.map((data) => data.label),
86
92
  datasets: [
@@ -109,6 +115,21 @@ export class DiagramComponent {
109
115
  }),
110
116
  };
111
117
  }
118
+ generateColors(data, colorScale, colorRangeInfo) {
119
+ const dataColors = data.map((diagramData) => diagramData.backgroundColor);
120
+ if (dataColors.filter((v) => v !== undefined).length === data.length) {
121
+ return dataColors;
122
+ }
123
+ else if (this.fillMissingColors) {
124
+ // it is intended to generate more colors than needed, so interval for generated colors is same as amount of items on the diagram
125
+ const interpolatedColors = interpolateColors(dataColors.length, colorScale, colorRangeInfo);
126
+ let interpolatedIndex = 0;
127
+ return dataColors.map((color) => (color === undefined ? interpolatedColors[interpolatedIndex++] : color));
128
+ }
129
+ else {
130
+ return interpolateColors(data.length, colorScale, colorRangeInfo);
131
+ }
132
+ }
112
133
  generateTotal(data) {
113
134
  return data.reduce((acc, current) => acc + current.value, 0);
114
135
  }
@@ -134,7 +155,7 @@ export class DiagramComponent {
134
155
  });
135
156
  }
136
157
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DiagramComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
137
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: DiagramComponent, selector: "ocx-diagram", inputs: { data: "data", sumKey: "sumKey", diagramType: "diagramType", supportedDiagramTypes: "supportedDiagramTypes" }, outputs: { dataSelected: "dataSelected", diagramTypeChanged: "diagramTypeChanged", componentStateChanged: "componentStateChanged" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"this.data\">\n <div class=\"flex justify-content-center pb-2\" *ngIf=\"shownDiagramTypes.length > 1\">\n <p-selectButton\n [options]=\"shownDiagramTypes\"\n [(ngModel)]=\"selectedDiagramType\"\n optionLabel=\"id\"\n (onChange)=\"onDiagramTypeChanged($event)\"\n name=\"diagram-type-select-button\"\n >\n <ng-template let-item pTemplate>\n <i\n [class]=\"item.icon\"\n [pTooltip]=\"item.tooltip || (item.tooltipKey | translate)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n ></i>\n <label style=\"display: none\" id=\"{{item.id}}\"> {{item.label ? item.label : item.labelKey | translate}} </label>\n </ng-template>\n </p-selectButton>\n </div>\n <div class=\"w-full flex justify-content-center\">\n <p-chart\n id=\"diagram\"\n [type]=\"chartType\"\n [data]=\"chartData\"\n [responsive]=\"false\"\n [options]=\"chartOptions\"\n (onDataSelect)=\"dataClicked($event)\"\n [ariaLabel]=\"(data ? 'OCX_DIAGRAM.ARIA_LABEL' : 'OCX_DIAGRAM.EMPTY_ARIA_LABEL') | translate: {total: generateTotal(data), valueString: generateDiagramValueString(data)}\"\n ></p-chart>\n </div>\n <div class=\"w-full flex justify-content-center mt-2 sumKey\">\n <p class=\"text-md font-medium text-700\">\n <span name=\"sumLabel\"> {{ sumKey | translate }}</span> : <span name=\"amountOfData\">{{ amountOfData}}</span>\n </p>\n </div>\n</ng-container>\n\n<div *ngIf=\"!this.data\" class=\"w-full flex justify-content-center\">\n <p-message severity=\"info\" text=\"{{ 'OCX_DIAGRAM.NO_DATA' | translate }}\"></p-message>\n</div>\n", styles: ["::ng-deep .p-buttonset .p-button{min-width:auto}::ng-deep .p-buttonset{display:flex}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.SelectButton, selector: "p-selectButton", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "unselectable", "tabindex", "multiple", "allowEmpty", "style", "styleClass", "ariaLabelledBy", "disabled", "dataKey", "autofocus"], outputs: ["onOptionClick", "onChange"] }, { kind: "component", type: i6.UIChart, selector: "p-chart", inputs: ["type", "plugins", "width", "height", "responsive", "ariaLabel", "ariaLabelledBy", "data", "options"], outputs: ["onDataSelect"] }, { kind: "component", type: i7.UIMessage, selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
158
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: DiagramComponent, selector: "ocx-diagram", inputs: { data: "data", sumKey: "sumKey", fillMissingColors: "fillMissingColors", diagramType: "diagramType", supportedDiagramTypes: "supportedDiagramTypes" }, outputs: { dataSelected: "dataSelected", diagramTypeChanged: "diagramTypeChanged", componentStateChanged: "componentStateChanged" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"this.data\">\n <div class=\"flex justify-content-center pb-2\" *ngIf=\"shownDiagramTypes.length > 1\">\n <p-selectButton\n [options]=\"shownDiagramTypes\"\n [(ngModel)]=\"selectedDiagramType\"\n optionLabel=\"id\"\n (onChange)=\"onDiagramTypeChanged($event)\"\n name=\"diagram-type-select-button\"\n >\n <ng-template let-item pTemplate>\n <i\n [class]=\"item.icon\"\n [pTooltip]=\"item.tooltip || (item.tooltipKey | translate)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n ></i>\n <label style=\"display: none\" id=\"{{item.id}}\"> {{item.label ? item.label : item.labelKey | translate}} </label>\n </ng-template>\n </p-selectButton>\n </div>\n <div class=\"w-full flex justify-content-center\">\n <p-chart\n id=\"diagram\"\n [type]=\"chartType\"\n [data]=\"chartData\"\n [responsive]=\"false\"\n [options]=\"chartOptions\"\n (onDataSelect)=\"dataClicked($event)\"\n [ariaLabel]=\"(data ? 'OCX_DIAGRAM.ARIA_LABEL' : 'OCX_DIAGRAM.EMPTY_ARIA_LABEL') | translate: {total: generateTotal(data), valueString: generateDiagramValueString(data)}\"\n ></p-chart>\n </div>\n <div class=\"w-full flex justify-content-center mt-2 sumKey\">\n <p class=\"text-md font-medium text-700\">\n <span name=\"sumLabel\"> {{ sumKey | translate }}</span> : <span name=\"amountOfData\">{{ amountOfData}}</span>\n </p>\n </div>\n</ng-container>\n\n<div *ngIf=\"!this.data\" class=\"w-full flex justify-content-center\">\n <p-message severity=\"info\" text=\"{{ 'OCX_DIAGRAM.NO_DATA' | translate }}\"></p-message>\n</div>\n", styles: ["::ng-deep .p-buttonset .p-button{min-width:auto}::ng-deep .p-buttonset{display:flex}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.SelectButton, selector: "p-selectButton", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "unselectable", "tabindex", "multiple", "allowEmpty", "style", "styleClass", "ariaLabelledBy", "disabled", "dataKey", "autofocus"], outputs: ["onOptionClick", "onChange"] }, { kind: "component", type: i6.UIChart, selector: "p-chart", inputs: ["type", "plugins", "width", "height", "responsive", "ariaLabel", "ariaLabelledBy", "data", "options"], outputs: ["onDataSelect"] }, { kind: "component", type: i7.UIMessage, selector: "p-message", inputs: ["severity", "text", "escape", "style", "styleClass"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
138
159
  }
139
160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DiagramComponent, decorators: [{
140
161
  type: Component,
@@ -143,6 +164,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
143
164
  type: Input
144
165
  }], sumKey: [{
145
166
  type: Input
167
+ }], fillMissingColors: [{
168
+ type: Input
146
169
  }], diagramType: [{
147
170
  type: Input
148
171
  }], supportedDiagramTypes: [{
@@ -157,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
157
180
  function interpolateColors(amountOfData, colorScale, colorRangeInfo) {
158
181
  return ColorUtils.interpolateColors(amountOfData, colorScale, colorRangeInfo);
159
182
  }
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW0vZGlhZ3JhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW0vZGlhZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUV0RCxPQUFPLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFBOzs7Ozs7Ozs7O0FBaUJuRCxNQUFNLGVBQWUsR0FBcUI7SUFDeEM7UUFDRSxFQUFFLEVBQUUsYUFBYTtRQUNqQixJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVM7UUFDMUIsTUFBTSw2QkFBaUI7UUFDdkIsVUFBVSxFQUFFLHFDQUFxQztRQUNqRCxRQUFRLEVBQUUscUNBQXFDO0tBQ2hEO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsd0JBQXdCO1FBQzVCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtRQUNyQixNQUFNLG1EQUE0QjtRQUNsQyxVQUFVLEVBQUUsZ0RBQWdEO1FBQzVELFFBQVEsRUFBRSxnREFBZ0Q7S0FDM0Q7SUFDRDtRQUNFLEVBQUUsRUFBRSxzQkFBc0I7UUFDMUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTO1FBQzFCLE1BQU0sK0NBQTBCO1FBQ2hDLFVBQVUs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LENBQUMsWUFBb0IsRUFBRSxVQUFlLEVBQUUsY0FBbUI7SUFDbkYsT0FBTyxVQUFVLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQTtBQUMvRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgQ2hhcnREYXRhLCBDaGFydE9wdGlvbnMgfSBmcm9tICdjaGFydC5qcydcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzLXNjYWxlLWNocm9tYXRpYydcbmltcG9ydCB7IFByaW1lSWNvbnMgfSBmcm9tICdwcmltZW5nL2FwaSdcbmltcG9ydCB7IERpYWdyYW1EYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGlhZ3JhbS1kYXRhJ1xuaW1wb3J0IHsgRGlhZ3JhbVR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbC9kaWFncmFtLXR5cGUnXG5pbXBvcnQgeyBDb2xvclV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3J1dGlscydcbmltcG9ydCB7IFByaW1lSWNvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3ByaW1laWNvbi51dGlscydcblxuZXhwb3J0IGludGVyZmFjZSBEaWFncmFtTGF5b3V0cyB7XG4gIGlkOiBzdHJpbmdcbiAgaWNvbjogUHJpbWVJY29uXG4gIGxheW91dDogRGlhZ3JhbVR5cGVcbiAgdG9vbHRpcD86IHN0cmluZ1xuICB0b29sdGlwS2V5OiBzdHJpbmdcbiAgbGFiZWw/OiBzdHJpbmdcbiAgbGFiZWxLZXk6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpYWdyYW1Db21wb25lbnRTdGF0ZSB7XG4gIGFjdGl2ZURpYWdyYW1UeXBlPzogRGlhZ3JhbVR5cGVcbn1cblxuY29uc3QgYWxsRGlhZ3JhbVR5cGVzOiBEaWFncmFtTGF5b3V0c1tdID0gW1xuICB7XG4gICAgaWQ6ICdkaWFncmFtLXBpZScsXG4gICAgaWNvbjogUHJpbWVJY29ucy5DSEFSVF9QSUUsXG4gICAgbGF5b3V0OiBEaWFncmFtVHlwZS5QSUUsXG4gICAgdG9vbHRpcEtleTogJ09DWF9ESUFHUkFNLlNXSVRDSF9ESUFHUkFNX1RZUEUuUElFJyxcbiAgICBsYWJlbEtleTogJ09DWF9ESUFHUkFNLlNXSVRDSF9ESUFHUkFNX1RZUEUuUElFJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnZGlhZ3JhbS1ob3Jpem9udGFsLWJhcicsXG4gICAgaWNvbjogUHJpbWVJY29ucy5CQVJTLFxuICAgIGxheW91dDogRGlhZ3JhbVR5cGUuSE9SSVpPTlRBTF9CQVIsXG4gICAgdG9vbHRpcEtleTogJ09DWF9ESUFHUkFNLlNXSVRDSF9ESUFHUkFNX1RZUEUuSE9SSVpPTlRBTF9CQVInLFxuICAgIGxhYmVsS2V5OiAnT0NYX0RJQUdSQU0uU1dJVENIX0RJQUdSQU1fVFlQRS5IT1JJWk9OVEFMX0JBUicsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2RpYWdyYW0tdmVydGljYWwtYmFyJyxcbiAgICBpY29uOiBQcmltZUljb25zLkNIQVJUX0JBUixcbiAgICBsYXlvdXQ6IERpYWdyYW1UeXBlLlZFUlRJQ0FMX0JBUixcbiAgICB0b29sdGlwS2V5OiAnT0NYX0RJQUdSQU0uU1dJVENIX0RJQUdSQU1fVFlQRS5WRVJUSUNBTF9CQVInLFxuICAgIGxhYmVsS2V5OiAnT0NYX0RJQUdSQU0uU1dJVENIX0RJQUdSQU1fVFlQRS5WRVJUSUNBTF9CQVInLFxuICB9LFxuXVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtZGlhZ3JhbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFncmFtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGlhZ3JhbS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEaWFncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkYXRhOiBEaWFncmFtRGF0YVtdIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIHN1bUtleSA9ICdPQ1hfRElBR1JBTS5TVU0nXG4gIHByaXZhdGUgX2RpYWdyYW1UeXBlOiBEaWFncmFtVHlwZSA9IERpYWdyYW1UeXBlLlBJRVxuICBzZWxlY3RlZERpYWdyYW1UeXBlOiBEaWFncmFtTGF5b3V0cyB8IHVuZGVmaW5lZFxuICBwdWJsaWMgY2hhcnRUeXBlOiAnYmFyJyB8ICdsaW5lJyB8ICdzY2F0dGVyJyB8ICdidWJibGUnIHwgJ3BpZScgfCAnZG91Z2hudXQnIHwgJ3BvbGFyQXJlYScgfCAncmFkYXInID0gJ3BpZSdcbiAgQElucHV0KClcbiAgZ2V0IGRpYWdyYW1UeXBlKCk6IERpYWdyYW1UeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fZGlhZ3JhbVR5cGVcbiAgfVxuICBzZXQgZGlhZ3JhbVR5cGUodmFsdWU6IERpYWdyYW1UeXBlKSB7XG4gICAgdGhpcy5fZGlhZ3JhbVR5cGUgPSB2YWx1ZVxuICAgIHRoaXMuc2VsZWN0ZWREaWFncmFtVHlwZSA9IGFsbERpYWdyYW1UeXBlcy5maW5kKCh2KSA9PiB2LmxheW91dCA9PT0gdmFsdWUpXG4gICAgdGhpcy5jaGFydFR5cGUgPSB0aGlzLmRpYWdyYW1UeXBlVG9DaGFydFR5cGUodmFsdWUpXG4gIH1cbiAgcHJpdmF0ZSBfc3VwcG9ydGVkRGlhZ3JhbVR5cGVzOiBEaWFncmFtVHlwZVtdID0gW11cbiAgQElucHV0KClcbiAgZ2V0IHN1cHBvcnRlZERpYWdyYW1UeXBlcygpOiBEaWFncmFtVHlwZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fc3VwcG9ydGVkRGlhZ3JhbVR5cGVzXG4gIH1cbiAgc2V0IHN1cHBvcnRlZERpYWdyYW1UeXBlcyh2YWx1ZTogRGlhZ3JhbVR5cGVbXSkge1xuICAgIHRoaXMuX3N1cHBvcnRlZERpYWdyYW1UeXBlcyA9IHZhbHVlXG4gICAgdGhpcy5zaG93bkRpYWdyYW1UeXBlcyA9IGFsbERpYWdyYW1UeXBlcy5maWx0ZXIoKHZsKSA9PiB0aGlzLnN1cHBvcnRlZERpYWdyYW1UeXBlcy5pbmNsdWRlcyh2bC5sYXlvdXQpKVxuICB9XG4gIEBPdXRwdXQoKSBkYXRhU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSBkaWFncmFtVHlwZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxEaWFncmFtVHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIGNvbXBvbmVudFN0YXRlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPERpYWdyYW1Db21wb25lbnRTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgY2hhcnRPcHRpb25zOiBDaGFydE9wdGlvbnMgfCB1bmRlZmluZWRcbiAgY2hhcnREYXRhOiBDaGFydERhdGEgfCB1bmRlZmluZWRcbiAgYW1vdW50T2ZEYXRhOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsXG4gIHNob3duRGlhZ3JhbVR5cGVzOiBEaWFncmFtTGF5b3V0c1tdID0gW11cbiAgLy8gQ2hhbmdpbmcgdGhlIGNvbG9yUmFuZ2VJbmZvLCB3aWxsIGNoYW5nZSB0aGUgcmFuZ2Ugb2YgdGhlIGNvbG9yIHBhbGV0dGUgb2YgdGhlIGRpYWdyYW0uXG4gIHByaXZhdGUgY29sb3JSYW5nZUluZm8gPSB7XG4gICAgY29sb3JTdGFydDogMCxcbiAgICBjb2xvckVuZDogMSxcbiAgICB1c2VFbmRBc1N0YXJ0OiBmYWxzZSxcbiAgfVxuICAvLyBDaGFuZ2luZyB0aGUgY29sb3JTY2FsZSwgd2lsbCBjaGFuZ2UgdGhlIHRoZW1hdGljIGNvbG9yIGFwcGVhcmFuY2Ugb2YgdGhlIGRpYWdyYW0uXG4gIHByaXZhdGUgY29sb3JTY2FsZSA9IGQzLmludGVycG9sYXRlQ29vbFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmdlbmVyYXRlQ2hhcnQodGhpcy5jb2xvclNjYWxlLCB0aGlzLmNvbG9yUmFuZ2VJbmZvKVxuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2VuZXJhdGVDaGFydCh0aGlzLmNvbG9yU2NhbGUsIHRoaXMuY29sb3JSYW5nZUluZm8pXG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVDaGFydChjb2xvclNjYWxlOiBhbnksIGNvbG9yUmFuZ2VJbmZvOiBhbnkpIHtcbiAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICBjb25zdCBpbnB1dERhdGEgPSB0aGlzLmRhdGEubWFwKChkaWFncmFtRGF0YSkgPT4gZGlhZ3JhbURhdGEudmFsdWUpXG5cbiAgICAgIHRoaXMuYW1vdW50T2ZEYXRhID0gdGhpcy5kYXRhLnJlZHVjZSgoYWNjLCBjdXJyZW50KSA9PiBhY2MgKyBjdXJyZW50LnZhbHVlLCAwKVxuICAgICAgY29uc3QgQ09MT1JTID0gaW50ZXJwb2xhdGVDb2xvcnModGhpcy5kYXRhLmxlbmd0aCwgY29sb3JTY2FsZSwgY29sb3JSYW5nZUluZm8pXG4gICAgICB0aGlzLmNoYXJ0RGF0YSA9IHtcbiAgICAgICAgbGFiZWxzOiB0aGlzLmRhdGEubWFwKChkYXRhKSA9PiBkYXRhLmxhYmVsKSxcbiAgICAgICAgZGF0YXNldHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkYXRhOiBpbnB1dERhdGEsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IENPTE9SUyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2hhcnRPcHRpb25zID0ge1xuICAgICAgcGx1Z2luczoge1xuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICAuLi4odGhpcy5fZGlhZ3JhbVR5cGUgPT09IERpYWdyYW1UeXBlLlZFUlRJQ0FMX0JBUiAmJiB7XG4gICAgICAgIHBsdWdpbnM6IHsgbGVnZW5kOiB7IGRpc3BsYXk6IGZhbHNlIH0gfSxcbiAgICAgICAgc2NhbGVzOiB7IHk6IHsgdGlja3M6IHsgcHJlY2lzaW9uOiAwIH0gfSB9LFxuICAgICAgfSksXG4gICAgICAuLi4odGhpcy5fZGlhZ3JhbVR5cGUgPT09IERpYWdyYW1UeXBlLkhPUklaT05UQUxfQkFSICYmIHtcbiAgICAgICAgaW5kZXhBeGlzOiAneScsXG4gICAgICAgIHBsdWdpbnM6IHsgbGVnZW5kOiB7IGRpc3BsYXk6IGZhbHNlIH0gfSxcbiAgICAgICAgc2NhbGVzOiB7IHg6IHsgdGlja3M6IHsgcHJlY2lzaW9uOiAwIH0gfSB9LFxuICAgICAgfSksXG4gICAgfVxuICB9XG5cbiAgZ2VuZXJhdGVUb3RhbChkYXRhOiBEaWFncmFtRGF0YVtdKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0YS5yZWR1Y2UoKGFjYywgY3VycmVudCkgPT4gYWNjICsgY3VycmVudC52YWx1ZSwgMClcbiAgfVxuXG4gIGdlbmVyYXRlRGlhZ3JhbVZhbHVlU3RyaW5nKGRhdGE6IERpYWdyYW1EYXRhW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRhLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5sYWJlbH06JHtpdGVtLnZhbHVlfWApLmpvaW4oJywgJylcbiAgfVxuXG4gIHByaXZhdGUgZGlhZ3JhbVR5cGVUb0NoYXJ0VHlwZShcbiAgICB2YWx1ZTogRGlhZ3JhbVR5cGVcbiAgKTogJ2JhcicgfCAnbGluZScgfCAnc2NhdHRlcicgfCAnYnViYmxlJyB8ICdwaWUnIHwgJ2RvdWdobnV0JyB8ICdwb2xhckFyZWEnIHwgJ3JhZGFyJyB7XG4gICAgaWYgKHZhbHVlID09PSBEaWFncmFtVHlwZS5QSUUpIHJldHVybiAncGllJ1xuICAgIGVsc2UgaWYgKHZhbHVlID09PSBEaWFncmFtVHlwZS5IT1JJWk9OVEFMX0JBUiB8fCB2YWx1ZSA9PT0gRGlhZ3JhbVR5cGUuVkVSVElDQUxfQkFSKSByZXR1cm4gJ2JhcidcbiAgICByZXR1cm4gJ3BpZSdcbiAgfVxuXG4gIGRhdGFDbGlja2VkKGV2ZW50OiBbXSkge1xuICAgIHRoaXMuZGF0YVNlbGVjdGVkLmVtaXQoZXZlbnQubGVuZ3RoKVxuICB9XG5cbiAgb25EaWFncmFtVHlwZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZGlhZ3JhbVR5cGUgPSBldmVudC52YWx1ZS5sYXlvdXRcbiAgICB0aGlzLmdlbmVyYXRlQ2hhcnQodGhpcy5jb2xvclNjYWxlLCB0aGlzLmNvbG9yUmFuZ2VJbmZvKVxuICAgIHRoaXMuZGlhZ3JhbVR5cGVDaGFuZ2VkLmVtaXQoZXZlbnQudmFsdWUubGF5b3V0KVxuICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgYWN0aXZlRGlhZ3JhbVR5cGU6IGV2ZW50LnZhbHVlLmxheW91dCxcbiAgICB9KVxuICB9XG59XG5mdW5jdGlvbiBpbnRlcnBvbGF0ZUNvbG9ycyhhbW91bnRPZkRhdGE6IG51bWJlciwgY29sb3JTY2FsZTogYW55LCBjb2xvclJhbmdlSW5mbzogYW55KSB7XG4gIHJldHVybiBDb2xvclV0aWxzLmludGVycG9sYXRlQ29sb3JzKGFtb3VudE9mRGF0YSwgY29sb3JTY2FsZSwgY29sb3JSYW5nZUluZm8pXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidGhpcy5kYXRhXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgcGItMlwiICpuZ0lmPVwic2hvd25EaWFncmFtVHlwZXMubGVuZ3RoID4gMVwiPlxuICAgIDxwLXNlbGVjdEJ1dHRvblxuICAgICAgW29wdGlvbnNdPVwic2hvd25EaWFncmFtVHlwZXNcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERpYWdyYW1UeXBlXCJcbiAgICAgIG9wdGlvbkxhYmVsPVwiaWRcIlxuICAgICAgKG9uQ2hhbmdlKT1cIm9uRGlhZ3JhbVR5cGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgbmFtZT1cImRpYWdyYW0tdHlwZS1zZWxlY3QtYnV0dG9uXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPlxuICAgICAgICA8aVxuICAgICAgICAgIFtjbGFzc109XCJpdGVtLmljb25cIlxuICAgICAgICAgIFtwVG9vbHRpcF09XCJpdGVtLnRvb2x0aXAgfHwgKGl0ZW0udG9vbHRpcEtleSB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgdG9vbHRpcEV2ZW50PVwiaG92ZXJcIlxuICAgICAgICA+PC9pPlxuICAgICAgICA8bGFiZWwgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgaWQ9XCJ7e2l0ZW0uaWR9fVwiPiB7e2l0ZW0ubGFiZWwgPyBpdGVtLmxhYmVsIDogaXRlbS5sYWJlbEtleSB8IHRyYW5zbGF0ZX19IDwvbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC1zZWxlY3RCdXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxwLWNoYXJ0XG4gICAgICBpZD1cImRpYWdyYW1cIlxuICAgICAgW3R5cGVdPVwiY2hhcnRUeXBlXCJcbiAgICAgIFtkYXRhXT1cImNoYXJ0RGF0YVwiXG4gICAgICBbcmVzcG9uc2l2ZV09XCJmYWxzZVwiXG4gICAgICBbb3B0aW9uc109XCJjaGFydE9wdGlvbnNcIlxuICAgICAgKG9uRGF0YVNlbGVjdCk9XCJkYXRhQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgIFthcmlhTGFiZWxdPVwiKGRhdGEgPyAnT0NYX0RJQUdSQU0uQVJJQV9MQUJFTCcgOiAnT0NYX0RJQUdSQU0uRU1QVFlfQVJJQV9MQUJFTCcpIHwgdHJhbnNsYXRlOiB7dG90YWw6IGdlbmVyYXRlVG90YWwoZGF0YSksIHZhbHVlU3RyaW5nOiBnZW5lcmF0ZURpYWdyYW1WYWx1ZVN0cmluZyhkYXRhKX1cIlxuICAgID48L3AtY2hhcnQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0yIHN1bUtleVwiPlxuICAgIDxwIGNsYXNzPVwidGV4dC1tZCBmb250LW1lZGl1bSB0ZXh0LTcwMFwiPlxuICAgICAgPHNwYW4gbmFtZT1cInN1bUxhYmVsXCI+IHt7IHN1bUtleSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj4gOiA8c3BhbiBuYW1lPVwiYW1vdW50T2ZEYXRhXCI+e3sgYW1vdW50T2ZEYXRhfX08L3NwYW4+XG4gICAgPC9wPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2ICpuZ0lmPVwiIXRoaXMuZGF0YVwiIGNsYXNzPVwidy1mdWxsIGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICA8cC1tZXNzYWdlIHNldmVyaXR5PVwiaW5mb1wiIHRleHQ9XCJ7eyAnT0NYX0RJQUdSQU0uTk9fREFUQScgfCB0cmFuc2xhdGUgfX1cIj48L3AtbWVzc2FnZT5cbjwvZGl2PlxuIl19
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW0vZGlhZ3JhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW0vZGlhZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUV0RCxPQUFPLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFBOzs7Ozs7Ozs7O0FBaUJuRCxNQUFNLGVBQWUsR0FBcUI7SUFDeEM7UUFDRSxFQUFFLEVBQUUsYUFBYTtRQUNqQixJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVM7UUFDMUIsTUFBTSw2QkFBaUI7UUFDdkIsVUFBVSxFQUFFLHFDQUFxQztRQUNqRCxRQUFRLEVBQUUscUNBQXFDO0tBQ2hEO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsd0JBQXdCO1FBQzVCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtRQUNyQixNQUFNLG1EQUE0QjtRQUNsQyxVQUFVLEVBQUUsZ0RBQWdEO1FBQzVELFFBQVEsRUFBRSxnREFBZ0Q7S0FDM0Q7SUFDRDtRQUNFLEVBQUUsRUFBRSxzQkFBc0I7UUFDMUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTO1FBQzFCLE1BQU0sK0NBQTBCO1FBQ2hDLFVBQVUs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IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IENoYXJ0RGF0YSwgQ2hhcnRPcHRpb25zIH0gZnJvbSAnY2hhcnQuanMnXG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMy1zY2FsZS1jaHJvbWF0aWMnXG5pbXBvcnQgeyBQcmltZUljb25zIH0gZnJvbSAncHJpbWVuZy9hcGknXG5pbXBvcnQgeyBEaWFncmFtRGF0YSB9IGZyb20gJy4uLy4uL21vZGVsL2RpYWdyYW0tZGF0YSdcbmltcG9ydCB7IERpYWdyYW1UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGlhZ3JhbS10eXBlJ1xuaW1wb3J0IHsgQ29sb3JVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9ydXRpbHMnXG5pbXBvcnQgeyBQcmltZUljb24gfSBmcm9tICcuLi8uLi91dGlscy9wcmltZWljb24udXRpbHMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhZ3JhbUxheW91dHMge1xuICBpZDogc3RyaW5nXG4gIGljb246IFByaW1lSWNvblxuICBsYXlvdXQ6IERpYWdyYW1UeXBlXG4gIHRvb2x0aXA/OiBzdHJpbmdcbiAgdG9vbHRpcEtleTogc3RyaW5nXG4gIGxhYmVsPzogc3RyaW5nXG4gIGxhYmVsS2V5OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaWFncmFtQ29tcG9uZW50U3RhdGUge1xuICBhY3RpdmVEaWFncmFtVHlwZT86IERpYWdyYW1UeXBlXG59XG5cbmNvbnN0IGFsbERpYWdyYW1UeXBlczogRGlhZ3JhbUxheW91dHNbXSA9IFtcbiAge1xuICAgIGlkOiAnZGlhZ3JhbS1waWUnLFxuICAgIGljb246IFByaW1lSWNvbnMuQ0hBUlRfUElFLFxuICAgIGxheW91dDogRGlhZ3JhbVR5cGUuUElFLFxuICAgIHRvb2x0aXBLZXk6ICdPQ1hfRElBR1JBTS5TV0lUQ0hfRElBR1JBTV9UWVBFLlBJRScsXG4gICAgbGFiZWxLZXk6ICdPQ1hfRElBR1JBTS5TV0lUQ0hfRElBR1JBTV9UWVBFLlBJRScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2RpYWdyYW0taG9yaXpvbnRhbC1iYXInLFxuICAgIGljb246IFByaW1lSWNvbnMuQkFSUyxcbiAgICBsYXlvdXQ6IERpYWdyYW1UeXBlLkhPUklaT05UQUxfQkFSLFxuICAgIHRvb2x0aXBLZXk6ICdPQ1hfRElBR1JBTS5TV0lUQ0hfRElBR1JBTV9UWVBFLkhPUklaT05UQUxfQkFSJyxcbiAgICBsYWJlbEtleTogJ09DWF9ESUFHUkFNLlNXSVRDSF9ESUFHUkFNX1RZUEUuSE9SSVpPTlRBTF9CQVInLFxuICB9LFxuICB7XG4gICAgaWQ6ICdkaWFncmFtLXZlcnRpY2FsLWJhcicsXG4gICAgaWNvbjogUHJpbWVJY29ucy5DSEFSVF9CQVIsXG4gICAgbGF5b3V0OiBEaWFncmFtVHlwZS5WRVJUSUNBTF9CQVIsXG4gICAgdG9vbHRpcEtleTogJ09DWF9ESUFHUkFNLlNXSVRDSF9ESUFHUkFNX1RZUEUuVkVSVElDQUxfQkFSJyxcbiAgICBsYWJlbEtleTogJ09DWF9ESUFHUkFNLlNXSVRDSF9ESUFHUkFNX1RZUEUuVkVSVElDQUxfQkFSJyxcbiAgfSxcbl1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LWRpYWdyYW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlhZ3JhbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpYWdyYW0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGlhZ3JhbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZGF0YTogRGlhZ3JhbURhdGFbXSB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBzdW1LZXkgPSAnT0NYX0RJQUdSQU0uU1VNJ1xuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZXRlcm1pbmVzIGlmIGRpYWdyYW0gc2hvdWxkIGdlbmVyYXRlIHRoZSBjb2xvcnMgZm9yIHRoZSBkYXRhIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgc2V0LlxuICAgKlxuICAgKiBTZXR0aW5nIHRoaXMgcHJvcGVydHkgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gdXNpbmcgdGhlIHByb3ZpZGVkIGNvbG9ycyBvbmx5IGlmIGV2ZXJ5IGRhdGEgaXRlbSBoYXMgb25lLiBJbiB0aGUgc2NlbmFyaW8gd2hlcmUgYXQgbGVhc3Qgb25lIGl0ZW0gZG9lcyBub3QgaGF2ZSBhIGNvbG9yIHNldCwgZGlhZ3JhbSB3aWxsIGdlbmVyYXRlIGFsbCBjb2xvcnMuXG4gICAqL1xuICBASW5wdXQoKSBmaWxsTWlzc2luZ0NvbG9ycyA9IHRydWVcbiAgcHJpdmF0ZSBfZGlhZ3JhbVR5cGU6IERpYWdyYW1UeXBlID0gRGlhZ3JhbVR5cGUuUElFXG4gIHNlbGVjdGVkRGlhZ3JhbVR5cGU6IERpYWdyYW1MYXlvdXRzIHwgdW5kZWZpbmVkXG4gIHB1YmxpYyBjaGFydFR5cGU6ICdiYXInIHwgJ2xpbmUnIHwgJ3NjYXR0ZXInIHwgJ2J1YmJsZScgfCAncGllJyB8ICdkb3VnaG51dCcgfCAncG9sYXJBcmVhJyB8ICdyYWRhcicgPSAncGllJ1xuICBASW5wdXQoKVxuICBnZXQgZGlhZ3JhbVR5cGUoKTogRGlhZ3JhbVR5cGUge1xuICAgIHJldHVybiB0aGlzLl9kaWFncmFtVHlwZVxuICB9XG4gIHNldCBkaWFncmFtVHlwZSh2YWx1ZTogRGlhZ3JhbVR5cGUpIHtcbiAgICB0aGlzLl9kaWFncmFtVHlwZSA9IHZhbHVlXG4gICAgdGhpcy5zZWxlY3RlZERpYWdyYW1UeXBlID0gYWxsRGlhZ3JhbVR5cGVzLmZpbmQoKHYpID0+IHYubGF5b3V0ID09PSB2YWx1ZSlcbiAgICB0aGlzLmNoYXJ0VHlwZSA9IHRoaXMuZGlhZ3JhbVR5cGVUb0NoYXJ0VHlwZSh2YWx1ZSlcbiAgfVxuICBwcml2YXRlIF9zdXBwb3J0ZWREaWFncmFtVHlwZXM6IERpYWdyYW1UeXBlW10gPSBbXVxuICBASW5wdXQoKVxuICBnZXQgc3VwcG9ydGVkRGlhZ3JhbVR5cGVzKCk6IERpYWdyYW1UeXBlW10ge1xuICAgIHJldHVybiB0aGlzLl9zdXBwb3J0ZWREaWFncmFtVHlwZXNcbiAgfVxuICBzZXQgc3VwcG9ydGVkRGlhZ3JhbVR5cGVzKHZhbHVlOiBEaWFncmFtVHlwZVtdKSB7XG4gICAgdGhpcy5fc3VwcG9ydGVkRGlhZ3JhbVR5cGVzID0gdmFsdWVcbiAgICB0aGlzLnNob3duRGlhZ3JhbVR5cGVzID0gYWxsRGlhZ3JhbVR5cGVzLmZpbHRlcigodmwpID0+IHRoaXMuc3VwcG9ydGVkRGlhZ3JhbVR5cGVzLmluY2x1ZGVzKHZsLmxheW91dCkpXG4gIH1cbiAgQE91dHB1dCgpIGRhdGFTZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIGRpYWdyYW1UeXBlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPERpYWdyYW1UeXBlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgY29tcG9uZW50U3RhdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8RGlhZ3JhbUNvbXBvbmVudFN0YXRlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBjaGFydE9wdGlvbnM6IENoYXJ0T3B0aW9ucyB8IHVuZGVmaW5lZFxuICBjaGFydERhdGE6IENoYXJ0RGF0YSB8IHVuZGVmaW5lZFxuICBhbW91bnRPZkRhdGE6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGxcbiAgc2hvd25EaWFncmFtVHlwZXM6IERpYWdyYW1MYXlvdXRzW10gPSBbXVxuICAvLyBDaGFuZ2luZyB0aGUgY29sb3JSYW5nZUluZm8sIHdpbGwgY2hhbmdlIHRoZSByYW5nZSBvZiB0aGUgY29sb3IgcGFsZXR0ZSBvZiB0aGUgZGlhZ3JhbS5cbiAgcHJpdmF0ZSBjb2xvclJhbmdlSW5mbyA9IHtcbiAgICBjb2xvclN0YXJ0OiAwLFxuICAgIGNvbG9yRW5kOiAxLFxuICAgIHVzZUVuZEFzU3RhcnQ6IGZhbHNlLFxuICB9XG4gIC8vIENoYW5naW5nIHRoZSBjb2xvclNjYWxlLCB3aWxsIGNoYW5nZSB0aGUgdGhlbWF0aWMgY29sb3IgYXBwZWFyYW5jZSBvZiB0aGUgZGlhZ3JhbS5cbiAgcHJpdmF0ZSBjb2xvclNjYWxlID0gZDMuaW50ZXJwb2xhdGVDb29sXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZ2VuZXJhdGVDaGFydCh0aGlzLmNvbG9yU2NhbGUsIHRoaXMuY29sb3JSYW5nZUluZm8pXG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZW5lcmF0ZUNoYXJ0KHRoaXMuY29sb3JTY2FsZSwgdGhpcy5jb2xvclJhbmdlSW5mbylcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZUNoYXJ0KGNvbG9yU2NhbGU6IGFueSwgY29sb3JSYW5nZUluZm86IGFueSkge1xuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIGNvbnN0IGlucHV0RGF0YSA9IHRoaXMuZGF0YS5tYXAoKGRpYWdyYW1EYXRhKSA9PiBkaWFncmFtRGF0YS52YWx1ZSlcblxuICAgICAgdGhpcy5hbW91bnRPZkRhdGEgPSB0aGlzLmRhdGEucmVkdWNlKChhY2MsIGN1cnJlbnQpID0+IGFjYyArIGN1cnJlbnQudmFsdWUsIDApXG4gICAgICBjb25zdCBDT0xPUlMgPSB0aGlzLmdlbmVyYXRlQ29sb3JzKHRoaXMuZGF0YSwgY29sb3JTY2FsZSwgY29sb3JSYW5nZUluZm8pXG4gICAgICB0aGlzLmNoYXJ0RGF0YSA9IHtcbiAgICAgICAgbGFiZWxzOiB0aGlzLmRhdGEubWFwKChkYXRhKSA9PiBkYXRhLmxhYmVsKSxcbiAgICAgICAgZGF0YXNldHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkYXRhOiBpbnB1dERhdGEsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IENPTE9SUyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2hhcnRPcHRpb25zID0ge1xuICAgICAgcGx1Z2luczoge1xuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICAuLi4odGhpcy5fZGlhZ3JhbVR5cGUgPT09IERpYWdyYW1UeXBlLlZFUlRJQ0FMX0JBUiAmJiB7XG4gICAgICAgIHBsdWdpbnM6IHsgbGVnZW5kOiB7IGRpc3BsYXk6IGZhbHNlIH0gfSxcbiAgICAgICAgc2NhbGVzOiB7IHk6IHsgdGlja3M6IHsgcHJlY2lzaW9uOiAwIH0gfSB9LFxuICAgICAgfSksXG4gICAgICAuLi4odGhpcy5fZGlhZ3JhbVR5cGUgPT09IERpYWdyYW1UeXBlLkhPUklaT05UQUxfQkFSICYmIHtcbiAgICAgICAgaW5kZXhBeGlzOiAneScsXG4gICAgICAgIHBsdWdpbnM6IHsgbGVnZW5kOiB7IGRpc3BsYXk6IGZhbHNlIH0gfSxcbiAgICAgICAgc2NhbGVzOiB7IHg6IHsgdGlja3M6IHsgcHJlY2lzaW9uOiAwIH0gfSB9LFxuICAgICAgfSksXG4gICAgfVxuICB9XG5cbiAgZ2VuZXJhdGVDb2xvcnMoZGF0YTogRGlhZ3JhbURhdGFbXSwgY29sb3JTY2FsZTogYW55LCBjb2xvclJhbmdlSW5mbzogYW55KSB7XG4gICAgY29uc3QgZGF0YUNvbG9ycyA9IGRhdGEubWFwKChkaWFncmFtRGF0YSkgPT4gZGlhZ3JhbURhdGEuYmFja2dyb3VuZENvbG9yKVxuICAgIGlmIChkYXRhQ29sb3JzLmZpbHRlcigodikgPT4gdiAhPT0gdW5kZWZpbmVkKS5sZW5ndGggPT09IGRhdGEubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZGF0YUNvbG9yc1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWxsTWlzc2luZ0NvbG9ycykge1xuICAgICAgLy8gaXQgaXMgaW50ZW5kZWQgdG8gZ2VuZXJhdGUgbW9yZSBjb2xvcnMgdGhhbiBuZWVkZWQsIHNvIGludGVydmFsIGZvciBnZW5lcmF0ZWQgY29sb3JzIGlzIHNhbWUgYXMgYW1vdW50IG9mIGl0ZW1zIG9uIHRoZSBkaWFncmFtXG4gICAgICBjb25zdCBpbnRlcnBvbGF0ZWRDb2xvcnMgPSBpbnRlcnBvbGF0ZUNvbG9ycyhkYXRhQ29sb3JzLmxlbmd0aCwgY29sb3JTY2FsZSwgY29sb3JSYW5nZUluZm8pXG4gICAgICBsZXQgaW50ZXJwb2xhdGVkSW5kZXggPSAwXG4gICAgICByZXR1cm4gZGF0YUNvbG9ycy5tYXAoKGNvbG9yKSA9PiAoY29sb3IgPT09IHVuZGVmaW5lZCA/IGludGVycG9sYXRlZENvbG9yc1tpbnRlcnBvbGF0ZWRJbmRleCsrXSA6IGNvbG9yKSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGludGVycG9sYXRlQ29sb3JzKGRhdGEubGVuZ3RoLCBjb2xvclNjYWxlLCBjb2xvclJhbmdlSW5mbylcbiAgICB9XG4gIH1cblxuICBnZW5lcmF0ZVRvdGFsKGRhdGE6IERpYWdyYW1EYXRhW10pOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRhLnJlZHVjZSgoYWNjLCBjdXJyZW50KSA9PiBhY2MgKyBjdXJyZW50LnZhbHVlLCAwKVxuICB9XG5cbiAgZ2VuZXJhdGVEaWFncmFtVmFsdWVTdHJpbmcoZGF0YTogRGlhZ3JhbURhdGFbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGEubWFwKChpdGVtKSA9PiBgJHtpdGVtLmxhYmVsfToke2l0ZW0udmFsdWV9YCkuam9pbignLCAnKVxuICB9XG5cbiAgcHJpdmF0ZSBkaWFncmFtVHlwZVRvQ2hhcnRUeXBlKFxuICAgIHZhbHVlOiBEaWFncmFtVHlwZVxuICApOiAnYmFyJyB8ICdsaW5lJyB8ICdzY2F0dGVyJyB8ICdidWJibGUnIHwgJ3BpZScgfCAnZG91Z2hudXQnIHwgJ3BvbGFyQXJlYScgfCAncmFkYXInIHtcbiAgICBpZiAodmFsdWUgPT09IERpYWdyYW1UeXBlLlBJRSkgcmV0dXJuICdwaWUnXG4gICAgZWxzZSBpZiAodmFsdWUgPT09IERpYWdyYW1UeXBlLkhPUklaT05UQUxfQkFSIHx8IHZhbHVlID09PSBEaWFncmFtVHlwZS5WRVJUSUNBTF9CQVIpIHJldHVybiAnYmFyJ1xuICAgIHJldHVybiAncGllJ1xuICB9XG5cbiAgZGF0YUNsaWNrZWQoZXZlbnQ6IFtdKSB7XG4gICAgdGhpcy5kYXRhU2VsZWN0ZWQuZW1pdChldmVudC5sZW5ndGgpXG4gIH1cblxuICBvbkRpYWdyYW1UeXBlQ2hhbmdlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5kaWFncmFtVHlwZSA9IGV2ZW50LnZhbHVlLmxheW91dFxuICAgIHRoaXMuZ2VuZXJhdGVDaGFydCh0aGlzLmNvbG9yU2NhbGUsIHRoaXMuY29sb3JSYW5nZUluZm8pXG4gICAgdGhpcy5kaWFncmFtVHlwZUNoYW5nZWQuZW1pdChldmVudC52YWx1ZS5sYXlvdXQpXG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICBhY3RpdmVEaWFncmFtVHlwZTogZXZlbnQudmFsdWUubGF5b3V0LFxuICAgIH0pXG4gIH1cbn1cbmZ1bmN0aW9uIGludGVycG9sYXRlQ29sb3JzKGFtb3VudE9mRGF0YTogbnVtYmVyLCBjb2xvclNjYWxlOiBhbnksIGNvbG9yUmFuZ2VJbmZvOiBhbnkpIHtcbiAgcmV0dXJuIENvbG9yVXRpbHMuaW50ZXJwb2xhdGVDb2xvcnMoYW1vdW50T2ZEYXRhLCBjb2xvclNjYWxlLCBjb2xvclJhbmdlSW5mbylcbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ0aGlzLmRhdGFcIj5cbiAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBwYi0yXCIgKm5nSWY9XCJzaG93bkRpYWdyYW1UeXBlcy5sZW5ndGggPiAxXCI+XG4gICAgPHAtc2VsZWN0QnV0dG9uXG4gICAgICBbb3B0aW9uc109XCJzaG93bkRpYWdyYW1UeXBlc1wiXG4gICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGlhZ3JhbVR5cGVcIlxuICAgICAgb3B0aW9uTGFiZWw9XCJpZFwiXG4gICAgICAob25DaGFuZ2UpPVwib25EaWFncmFtVHlwZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICBuYW1lPVwiZGlhZ3JhbS10eXBlLXNlbGVjdC1idXR0b25cIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU+XG4gICAgICAgIDxpXG4gICAgICAgICAgW2NsYXNzXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgW3BUb29sdGlwXT1cIml0ZW0udG9vbHRpcCB8fCAoaXRlbS50b29sdGlwS2V5IHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICB0b29sdGlwRXZlbnQ9XCJob3ZlclwiXG4gICAgICAgID48L2k+XG4gICAgICAgIDxsYWJlbCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiBpZD1cInt7aXRlbS5pZH19XCI+IHt7aXRlbS5sYWJlbCA/IGl0ZW0ubGFiZWwgOiBpdGVtLmxhYmVsS2V5IHwgdHJhbnNsYXRlfX0gPC9sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLXNlbGVjdEJ1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPHAtY2hhcnRcbiAgICAgIGlkPVwiZGlhZ3JhbVwiXG4gICAgICBbdHlwZV09XCJjaGFydFR5cGVcIlxuICAgICAgW2RhdGFdPVwiY2hhcnREYXRhXCJcbiAgICAgIFtyZXNwb25zaXZlXT1cImZhbHNlXCJcbiAgICAgIFtvcHRpb25zXT1cImNoYXJ0T3B0aW9uc1wiXG4gICAgICAob25EYXRhU2VsZWN0KT1cImRhdGFDbGlja2VkKCRldmVudClcIlxuICAgICAgW2FyaWFMYWJlbF09XCIoZGF0YSA/ICdPQ1hfRElBR1JBTS5BUklBX0xBQkVMJyA6ICdPQ1hfRElBR1JBTS5FTVBUWV9BUklBX0xBQkVMJykgfCB0cmFuc2xhdGU6IHt0b3RhbDogZ2VuZXJhdGVUb3RhbChkYXRhKSwgdmFsdWVTdHJpbmc6IGdlbmVyYXRlRGlhZ3JhbVZhbHVlU3RyaW5nKGRhdGEpfVwiXG4gICAgPjwvcC1jaGFydD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTIgc3VtS2V5XCI+XG4gICAgPHAgY2xhc3M9XCJ0ZXh0LW1kIGZvbnQtbWVkaXVtIHRleHQtNzAwXCI+XG4gICAgICA8c3BhbiBuYW1lPVwic3VtTGFiZWxcIj4ge3sgc3VtS2V5IHwgdHJhbnNsYXRlIH19PC9zcGFuPiA6IDxzcGFuIG5hbWU9XCJhbW91bnRPZkRhdGFcIj57eyBhbW91bnRPZkRhdGF9fTwvc3Bhbj5cbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgKm5nSWY9XCIhdGhpcy5kYXRhXCIgY2xhc3M9XCJ3LWZ1bGwgZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gIDxwLW1lc3NhZ2Ugc2V2ZXJpdHk9XCJpbmZvXCIgdGV4dD1cInt7ICdPQ1hfRElBR1JBTS5OT19EQVRBJyB8IHRyYW5zbGF0ZSB9fVwiPjwvcC1tZXNzYWdlPlxuPC9kaXY+XG4iXX0=
@@ -42,30 +42,44 @@ export class GroupByCountDiagramComponent {
42
42
  this.columnType = value.columnType;
43
43
  this.columnField = value.id;
44
44
  }
45
+ get colors() {
46
+ return this._colors$.getValue();
47
+ }
48
+ set colors(value) {
49
+ this._colors$.next(value);
50
+ }
45
51
  constructor(translateService) {
46
52
  this.translateService = translateService;
47
53
  this.sumKey = 'SEARCH.SUMMARY_TITLE';
48
54
  this.diagramType = "PIE" /* DiagramType.PIE */;
55
+ /**
56
+ * This property determines if diagram should generate the colors for the data that does not have any set.
57
+ *
58
+ * Setting this property to false will result in using the provided colors only if every data item has one. In the scenario where at least one item does not have a color set, diagram will generate all colors.
59
+ */
60
+ this.fillMissingColors = true;
49
61
  this.supportedDiagramTypes = [];
50
62
  this._data$ = new BehaviorSubject([]);
51
63
  this._columnType$ = new BehaviorSubject(ColumnType.STRING);
52
64
  this._columnField$ = new BehaviorSubject('');
65
+ this._colors$ = new BehaviorSubject({});
53
66
  this.dataSelected = new EventEmitter();
54
67
  this.diagramTypeChanged = new EventEmitter();
55
68
  this.componentStateChanged = new EventEmitter();
56
69
  }
57
70
  ngOnInit() {
58
- this.diagramData$ = combineLatest([this._data$, this._columnField$, this._columnType$]).pipe(mergeMap(([data, columnField, columnType]) => {
71
+ this.diagramData$ = combineLatest([this._data$, this._columnField$, this._columnType$, this._colors$]).pipe(mergeMap(([data, columnField, columnType, colors]) => {
59
72
  const columnData = data.map((d) => ObjectUtils.resolveFieldData(d, columnField));
60
73
  const occurrences = columnData.reduce((acc, current) => {
61
74
  return acc.some((e) => e.label === current)
62
75
  ? (acc.find((e) => e.label === current).value++, acc)
63
- : [...acc, { label: current, value: 1 }];
76
+ : [...acc, { label: current, value: 1, backgroundColor: colors[current.toString()] }];
64
77
  }, []);
65
78
  if (columnType === ColumnType.TRANSLATION_KEY && occurrences.length > 0) {
66
79
  return this.translateService.get(occurrences.map((o) => o.label)).pipe(map((translations) => occurrences.map((o) => ({
67
80
  label: translations[o.label],
68
81
  value: o.value,
82
+ backgroundColor: o.backgroundColor,
69
83
  }))));
70
84
  }
71
85
  else {
@@ -80,19 +94,21 @@ export class GroupByCountDiagramComponent {
80
94
  this.diagramType = newDiagramType;
81
95
  this.diagramTypeChanged.emit(newDiagramType);
82
96
  this.componentStateChanged.emit({
83
- activeDiagramType: newDiagramType
97
+ activeDiagramType: newDiagramType,
84
98
  });
85
99
  }
86
100
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: GroupByCountDiagramComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
87
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: GroupByCountDiagramComponent, selector: "ocx-group-by-count-diagram", inputs: { sumKey: "sumKey", diagramType: "diagramType", type: "type", supportedDiagramTypes: "supportedDiagramTypes", data: "data", columnType: "columnType", columnField: "columnField", column: "column" }, outputs: { dataSelected: "dataSelected", diagramTypeChanged: "diagramTypeChanged", componentStateChanged: "componentStateChanged" }, ngImport: i0, template: "<ocx-diagram\n [data]=\"(diagramData$ | async) || []\"\n [sumKey]=\"sumKey\"\n [diagramType]=\"diagramType\"\n (onDataSelect)=\"dataClicked($event)\"\n [supportedDiagramTypes]=\"supportedDiagramTypes\"\n (diagramTypeChanged)=\"onDiagramTypeChanged($event)\"\n></ocx-diagram>\n", dependencies: [{ kind: "component", type: i2.DiagramComponent, selector: "ocx-diagram", inputs: ["data", "sumKey", "diagramType", "supportedDiagramTypes"], outputs: ["dataSelected", "diagramTypeChanged", "componentStateChanged"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: GroupByCountDiagramComponent, selector: "ocx-group-by-count-diagram", inputs: { sumKey: "sumKey", diagramType: "diagramType", fillMissingColors: "fillMissingColors", type: "type", supportedDiagramTypes: "supportedDiagramTypes", data: "data", columnType: "columnType", columnField: "columnField", column: "column", colors: "colors" }, outputs: { dataSelected: "dataSelected", diagramTypeChanged: "diagramTypeChanged", componentStateChanged: "componentStateChanged" }, ngImport: i0, template: "<ocx-diagram\n [data]=\"(diagramData$ | async) || []\"\n [fillMissingColors]=\"fillMissingColors\"\n [sumKey]=\"sumKey\"\n [diagramType]=\"diagramType\"\n (onDataSelect)=\"dataClicked($event)\"\n [supportedDiagramTypes]=\"supportedDiagramTypes\"\n (diagramTypeChanged)=\"onDiagramTypeChanged($event)\"\n></ocx-diagram>\n", dependencies: [{ kind: "component", type: i2.DiagramComponent, selector: "ocx-diagram", inputs: ["data", "sumKey", "fillMissingColors", "diagramType", "supportedDiagramTypes"], outputs: ["dataSelected", "diagramTypeChanged", "componentStateChanged"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
88
102
  }
89
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: GroupByCountDiagramComponent, decorators: [{
90
104
  type: Component,
91
- args: [{ selector: 'ocx-group-by-count-diagram', template: "<ocx-diagram\n [data]=\"(diagramData$ | async) || []\"\n [sumKey]=\"sumKey\"\n [diagramType]=\"diagramType\"\n (onDataSelect)=\"dataClicked($event)\"\n [supportedDiagramTypes]=\"supportedDiagramTypes\"\n (diagramTypeChanged)=\"onDiagramTypeChanged($event)\"\n></ocx-diagram>\n" }]
105
+ args: [{ selector: 'ocx-group-by-count-diagram', template: "<ocx-diagram\n [data]=\"(diagramData$ | async) || []\"\n [fillMissingColors]=\"fillMissingColors\"\n [sumKey]=\"sumKey\"\n [diagramType]=\"diagramType\"\n (onDataSelect)=\"dataClicked($event)\"\n [supportedDiagramTypes]=\"supportedDiagramTypes\"\n (diagramTypeChanged)=\"onDiagramTypeChanged($event)\"\n></ocx-diagram>\n" }]
92
106
  }], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { sumKey: [{
93
107
  type: Input
94
108
  }], diagramType: [{
95
109
  type: Input
110
+ }], fillMissingColors: [{
111
+ type: Input
96
112
  }], type: [{
97
113
  type: Input
98
114
  }], supportedDiagramTypes: [{
@@ -105,6 +121,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
105
121
  type: Input
106
122
  }], column: [{
107
123
  type: Input
124
+ }], colors: [{
125
+ type: Input
108
126
  }], dataSelected: [{
109
127
  type: Output
110
128
  }], diagramTypeChanged: [{
@@ -112,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
112
130
  }], componentStateChanged: [{
113
131
  type: Output
114
132
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnktY291bnQtZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2dyb3VwLWJ5LWNvdW50LWRpYWdyYW0vZ3JvdXAtYnktY291bnQtZGlhZ3JhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2dyb3VwLWJ5LWNvdW50LWRpYWdyYW0vZ3JvdXAtYnktY291bnQtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUUxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7Ozs7O0FBWXJELE1BQU0sT0FBTyw0QkFBNEI7SUFHdkM7O09BRUc7SUFDSCxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDekIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLEtBQWtCO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFBO0lBQzFCLENBQUM7SUFHRCxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0IsQ0FBQztJQUNELElBQUksSUFBSSxD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QkFBN0IsS0FBSztnQkFHRixJQUFJO3NCQURQLEtBQUs7Z0JBV0YsVUFBVTtzQkFEYixLQUFLO2dCQVVGLFdBQVc7c0JBRGQsS0FBSztnQkFTRixNQUFNO3NCQURULEtBQUs7Z0JBU0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgbWFwLCBtZXJnZU1hcCwgb2YgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgQ29sdW1uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL2NvbHVtbi10eXBlLm1vZGVsJ1xuaW1wb3J0IHsgRGlhZ3JhbUNvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVsL2RpYWdyYW0tY29sdW1uJ1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy9vYmplY3R1dGlscydcbmltcG9ydCB7IERpYWdyYW1EYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGlhZ3JhbS1kYXRhJ1xuaW1wb3J0IHsgRGlhZ3JhbVR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbC9kaWFncmFtLXR5cGUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBCeUNvdW50RGlhZ3JhbUNvbXBvbmVudFN0YXRlIHtcbiAgYWN0aXZlRGlhZ3JhbVR5cGU/OiBEaWFncmFtVHlwZVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtZ3JvdXAtYnktY291bnQtZGlhZ3JhbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncm91cC1ieS1jb3VudC1kaWFncmFtLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgR3JvdXBCeUNvdW50RGlhZ3JhbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHN1bUtleSA9ICdTRUFSQ0guU1VNTUFSWV9USVRMRSdcbiAgQElucHV0KCkgZGlhZ3JhbVR5cGUgPSBEaWFncmFtVHlwZS5QSUVcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVwbGFjZWQgYnkgZGlhZ3JhbVR5cGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB0eXBlKCk6IERpYWdyYW1UeXBlIHtcbiAgICByZXR1cm4gdGhpcy5kaWFncmFtVHlwZVxuICB9XG4gIHNldCB0eXBlKHZhbHVlOiBEaWFncmFtVHlwZSkge1xuICAgIHRoaXMuZGlhZ3JhbVR5cGUgPSB2YWx1ZVxuICB9XG4gIEBJbnB1dCgpIHN1cHBvcnRlZERpYWdyYW1UeXBlczogRGlhZ3JhbVR5cGVbXSA9IFtdXG4gIHByaXZhdGUgX2RhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx1bmtub3duW10+KFtdKVxuICBASW5wdXQoKVxuICBnZXQgZGF0YSgpOiB1bmtub3duW10ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGRhdGEodmFsdWU6IHVua25vd25bXSkge1xuICAgIHRoaXMuX2RhdGEkLm5leHQodmFsdWUpXG4gIH1cbiAgZGlhZ3JhbURhdGEkOiBPYnNlcnZhYmxlPERpYWdyYW1EYXRhW10+IHwgdW5kZWZpbmVkXG5cbiAgcHJpdmF0ZSBfY29sdW1uVHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbHVtblR5cGU+KENvbHVtblR5cGUuU1RSSU5HKVxuICBASW5wdXQoKVxuICBnZXQgY29sdW1uVHlwZSgpOiBDb2x1bW5UeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uVHlwZSQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBjb2x1bW5UeXBlKHZhbHVlOiBDb2x1bW5UeXBlKSB7XG4gICAgdGhpcy5fY29sdW1uVHlwZSQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIHByaXZhdGUgX2NvbHVtbkZpZWxkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJylcbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbkZpZWxkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbkZpZWxkJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGNvbHVtbkZpZWxkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb2x1bW5GaWVsZCQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBjb2x1bW4oKTogRGlhZ3JhbUNvbHVtbiB7XG4gICAgcmV0dXJuIHsgY29sdW1uVHlwZTogdGhpcy5jb2x1bW5UeXBlLCBpZDogdGhpcy5jb2x1bW5GaWVsZCB9XG4gIH1cbiAgc2V0IGNvbHVtbih2YWx1ZTogRGlhZ3JhbUNvbHVtbikge1xuICAgIHRoaXMuY29sdW1uVHlwZSA9IHZhbHVlLmNvbHVtblR5cGVcbiAgICB0aGlzLmNvbHVtbkZpZWxkID0gdmFsdWUuaWRcbiAgfVxuXG4gIEBPdXRwdXQoKSBkYXRhU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSBkaWFncmFtVHlwZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxEaWFncmFtVHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIGNvbXBvbmVudFN0YXRlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEdyb3VwQnlDb3VudERpYWdyYW1Db21wb25lbnRTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFncmFtRGF0YSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9kYXRhJCwgdGhpcy5fY29sdW1uRmllbGQkLCB0aGlzLl9jb2x1bW5UeXBlJF0pLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoW2RhdGEsIGNvbHVtbkZpZWxkLCBjb2x1bW5UeXBlXSkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW5EYXRhID0gZGF0YS5tYXAoKGQpID0+IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEoZCwgY29sdW1uRmllbGQpKVxuICAgICAgICBjb25zdCBvY2N1cnJlbmNlcyA9IGNvbHVtbkRhdGEucmVkdWNlKChhY2MsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYWNjLnNvbWUoKGU6IHsgbGFiZWw6IGFueSB9KSA9PiBlLmxhYmVsID09PSBjdXJyZW50KVxuICAgICAgICAgICAgPyAoYWNjLmZpbmQoKGU6IHsgbGFiZWw6IGFueSB9KSA9PiBlLmxhYmVsID09PSBjdXJyZW50KS52YWx1ZSsrLCBhY2MpXG4gICAgICAgICAgICA6IFsuLi5hY2MsIHsgbGFiZWw6IGN1cnJlbnQsIHZhbHVlOiAxIH1dXG4gICAgICAgIH0sIFtdKVxuICAgICAgICBpZiAoY29sdW1uVHlwZSA9PT0gQ29sdW1uVHlwZS5UUkFOU0xBVElPTl9LRVkgJiYgb2NjdXJyZW5jZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KG9jY3VycmVuY2VzLm1hcCgobzogeyBsYWJlbDogYW55IH0pID0+IG8ubGFiZWwpKS5waXBlKFxuICAgICAgICAgICAgbWFwKCh0cmFuc2xhdGlvbnM6IHsgW3g6IHN0cmluZ106IGFueSB9KSA9PlxuICAgICAgICAgICAgICBvY2N1cnJlbmNlcy5tYXAoKG86IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueSB9KSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnNbby5sYWJlbF0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IG8udmFsdWUsXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2Yob2NjdXJyZW5jZXMpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZGF0YUNsaWNrZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZGF0YVNlbGVjdGVkLmVtaXQoZXZlbnQpXG4gIH1cblxuICBvbkRpYWdyYW1UeXBlQ2hhbmdlZChuZXdEaWFncmFtVHlwZTogRGlhZ3JhbVR5cGUpIHtcbiAgICB0aGlzLmRpYWdyYW1UeXBlID0gbmV3RGlhZ3JhbVR5cGVcbiAgICB0aGlzLmRpYWdyYW1UeXBlQ2hhbmdlZC5lbWl0KG5ld0RpYWdyYW1UeXBlKVxuICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgYWN0aXZlRGlhZ3JhbVR5cGU6IG5ld0RpYWdyYW1UeXBlXG4gICAgfSlcbiAgfVxufVxuIiwiPG9jeC1kaWFncmFtXG4gIFtkYXRhXT1cIihkaWFncmFtRGF0YSQgfCBhc3luYykgfHwgW11cIlxuICBbc3VtS2V5XT1cInN1bUtleVwiXG4gIFtkaWFncmFtVHlwZV09XCJkaWFncmFtVHlwZVwiXG4gIChvbkRhdGFTZWxlY3QpPVwiZGF0YUNsaWNrZWQoJGV2ZW50KVwiXG4gIFtzdXBwb3J0ZWREaWFncmFtVHlwZXNdPVwic3VwcG9ydGVkRGlhZ3JhbVR5cGVzXCJcbiAgKGRpYWdyYW1UeXBlQ2hhbmdlZCk9XCJvbkRpYWdyYW1UeXBlQ2hhbmdlZCgkZXZlbnQpXCJcbj48L29jeC1kaWFncmFtPlxuIl19
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnktY291bnQtZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2dyb3VwLWJ5LWNvdW50LWRpYWdyYW0vZ3JvdXAtYnktY291bnQtZGlhZ3JhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2dyb3VwLWJ5LWNvdW50LWRpYWdyYW0vZ3JvdXAtYnktY291bnQtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUUxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7Ozs7O0FBWXJELE1BQU0sT0FBTyw0QkFBNEI7SUFTdkM7O09BRUc7SUFDSCxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDekIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLEtBQWtCO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFBO0lBQzFCLENBQUM7SUFHRCxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0IsQ0FBQztJQUNELElBQUksSUFBSSxD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RCxvQkFBb0IsQ0FBQyxjQUEyQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQzVDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7WUFDOUIsaUJBQWlCLEVBQUUsY0FBYztTQUNsQyxDQUFDLENBQUE7SUFDSixDQUFDOytHQTVHVSw0QkFBNEI7bUdBQTVCLDRCQUE0QiwrY0NqQnpDLHlVQVNBOzs0RkRRYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UsNEJBQTRCO3FGQUk3QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFNRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBS0YsSUFBSTtzQkFEUCxLQUFLO2dCQU9HLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFHRixJQUFJO3NCQURQLEtBQUs7Z0JBV0YsVUFBVTtzQkFEYixLQUFLO2dCQVVGLFdBQVc7c0JBRGQsS0FBSztnQkFTRixNQUFNO3NCQURULEtBQUs7Z0JBV0YsTUFBTTtzQkFEVCxLQUFLO2dCQVFJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIG1hcCwgbWVyZ2VNYXAsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IENvbHVtblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbC9jb2x1bW4tdHlwZS5tb2RlbCdcbmltcG9ydCB7IERpYWdyYW1Db2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbC9kaWFncmFtLWNvbHVtbidcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0dXRpbHMnXG5pbXBvcnQgeyBEaWFncmFtRGF0YSB9IGZyb20gJy4uLy4uL21vZGVsL2RpYWdyYW0tZGF0YSdcbmltcG9ydCB7IERpYWdyYW1UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGlhZ3JhbS10eXBlJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwQnlDb3VudERpYWdyYW1Db21wb25lbnRTdGF0ZSB7XG4gIGFjdGl2ZURpYWdyYW1UeXBlPzogRGlhZ3JhbVR5cGVcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LWdyb3VwLWJ5LWNvdW50LWRpYWdyYW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXAtYnktY291bnQtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEdyb3VwQnlDb3VudERpYWdyYW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzdW1LZXkgPSAnU0VBUkNILlNVTU1BUllfVElUTEUnXG4gIEBJbnB1dCgpIGRpYWdyYW1UeXBlID0gRGlhZ3JhbVR5cGUuUElFXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRldGVybWluZXMgaWYgZGlhZ3JhbSBzaG91bGQgZ2VuZXJhdGUgdGhlIGNvbG9ycyBmb3IgdGhlIGRhdGEgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBzZXQuXG4gICAqXG4gICAqIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiB1c2luZyB0aGUgcHJvdmlkZWQgY29sb3JzIG9ubHkgaWYgZXZlcnkgZGF0YSBpdGVtIGhhcyBvbmUuIEluIHRoZSBzY2VuYXJpbyB3aGVyZSBhdCBsZWFzdCBvbmUgaXRlbSBkb2VzIG5vdCBoYXZlIGEgY29sb3Igc2V0LCBkaWFncmFtIHdpbGwgZ2VuZXJhdGUgYWxsIGNvbG9ycy5cbiAgICovXG4gIEBJbnB1dCgpIGZpbGxNaXNzaW5nQ29sb3JzID0gdHJ1ZVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZXBsYWNlZCBieSBkaWFncmFtVHlwZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHR5cGUoKTogRGlhZ3JhbVR5cGUge1xuICAgIHJldHVybiB0aGlzLmRpYWdyYW1UeXBlXG4gIH1cbiAgc2V0IHR5cGUodmFsdWU6IERpYWdyYW1UeXBlKSB7XG4gICAgdGhpcy5kaWFncmFtVHlwZSA9IHZhbHVlXG4gIH1cbiAgQElucHV0KCkgc3VwcG9ydGVkRGlhZ3JhbVR5cGVzOiBEaWFncmFtVHlwZVtdID0gW11cbiAgcHJpdmF0ZSBfZGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHVua25vd25bXT4oW10pXG4gIEBJbnB1dCgpXG4gIGdldCBkYXRhKCk6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEkLmdldFZhbHVlKClcbiAgfVxuICBzZXQgZGF0YSh2YWx1ZTogdW5rbm93bltdKSB7XG4gICAgdGhpcy5fZGF0YSQubmV4dCh2YWx1ZSlcbiAgfVxuICBkaWFncmFtRGF0YSQ6IE9ic2VydmFibGU8RGlhZ3JhbURhdGFbXT4gfCB1bmRlZmluZWRcblxuICBwcml2YXRlIF9jb2x1bW5UeXBlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29sdW1uVHlwZT4oQ29sdW1uVHlwZS5TVFJJTkcpXG4gIEBJbnB1dCgpXG4gIGdldCBjb2x1bW5UeXBlKCk6IENvbHVtblR5cGUge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5UeXBlJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGNvbHVtblR5cGUodmFsdWU6IENvbHVtblR5cGUpIHtcbiAgICB0aGlzLl9jb2x1bW5UeXBlJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgcHJpdmF0ZSBfY29sdW1uRmllbGQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKVxuICBASW5wdXQoKVxuICBnZXQgY29sdW1uRmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uRmllbGQkLmdldFZhbHVlKClcbiAgfVxuICBzZXQgY29sdW1uRmllbGQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbHVtbkZpZWxkJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbigpOiBEaWFncmFtQ29sdW1uIHtcbiAgICByZXR1cm4geyBjb2x1bW5UeXBlOiB0aGlzLmNvbHVtblR5cGUsIGlkOiB0aGlzLmNvbHVtbkZpZWxkIH1cbiAgfVxuICBzZXQgY29sdW1uKHZhbHVlOiBEaWFncmFtQ29sdW1uKSB7XG4gICAgdGhpcy5jb2x1bW5UeXBlID0gdmFsdWUuY29sdW1uVHlwZVxuICAgIHRoaXMuY29sdW1uRmllbGQgPSB2YWx1ZS5pZFxuICB9XG5cbiAgcHJpdmF0ZSBfY29sb3JzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pXG4gIEBJbnB1dCgpXG4gIGdldCBjb2xvcnMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbG9ycyQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBjb2xvcnModmFsdWU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcbiAgICB0aGlzLl9jb2xvcnMkLm5leHQodmFsdWUpXG4gIH1cblxuICBAT3V0cHV0KCkgZGF0YVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgZGlhZ3JhbVR5cGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8RGlhZ3JhbVR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSBjb21wb25lbnRTdGF0ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxHcm91cEJ5Q291bnREaWFncmFtQ29tcG9uZW50U3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGlhZ3JhbURhdGEkID0gY29tYmluZUxhdGVzdChbdGhpcy5fZGF0YSQsIHRoaXMuX2NvbHVtbkZpZWxkJCwgdGhpcy5fY29sdW1uVHlwZSQsIHRoaXMuX2NvbG9ycyRdKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKFtkYXRhLCBjb2x1bW5GaWVsZCwgY29sdW1uVHlwZSwgY29sb3JzXSkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW5EYXRhID0gZGF0YS5tYXAoKGQpID0+IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEoZCwgY29sdW1uRmllbGQpKVxuICAgICAgICBjb25zdCBvY2N1cnJlbmNlcyA9IGNvbHVtbkRhdGEucmVkdWNlKChhY2MsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYWNjLnNvbWUoKGU6IHsgbGFiZWw6IGFueSB9KSA9PiBlLmxhYmVsID09PSBjdXJyZW50KVxuICAgICAgICAgICAgPyAoYWNjLmZpbmQoKGU6IHsgbGFiZWw6IGFueSB9KSA9PiBlLmxhYmVsID09PSBjdXJyZW50KS52YWx1ZSsrLCBhY2MpXG4gICAgICAgICAgICA6IFsuLi5hY2MsIHsgbGFiZWw6IGN1cnJlbnQsIHZhbHVlOiAxLCBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yc1tjdXJyZW50LnRvU3RyaW5nKCldIH1dXG4gICAgICAgIH0sIFtdKVxuICAgICAgICBpZiAoY29sdW1uVHlwZSA9PT0gQ29sdW1uVHlwZS5UUkFOU0xBVElPTl9LRVkgJiYgb2NjdXJyZW5jZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KG9jY3VycmVuY2VzLm1hcCgobzogeyBsYWJlbDogYW55IH0pID0+IG8ubGFiZWwpKS5waXBlKFxuICAgICAgICAgICAgbWFwKCh0cmFuc2xhdGlvbnM6IHsgW3g6IHN0cmluZ106IGFueSB9KSA9PlxuICAgICAgICAgICAgICBvY2N1cnJlbmNlcy5tYXAoKG86IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueTsgYmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgfSkgPT4gKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zW28ubGFiZWxdLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBvLnZhbHVlLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogby5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2Yob2NjdXJyZW5jZXMpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZGF0YUNsaWNrZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZGF0YVNlbGVjdGVkLmVtaXQoZXZlbnQpXG4gIH1cblxuICBvbkRpYWdyYW1UeXBlQ2hhbmdlZChuZXdEaWFncmFtVHlwZTogRGlhZ3JhbVR5cGUpIHtcbiAgICB0aGlzLmRpYWdyYW1UeXBlID0gbmV3RGlhZ3JhbVR5cGVcbiAgICB0aGlzLmRpYWdyYW1UeXBlQ2hhbmdlZC5lbWl0KG5ld0RpYWdyYW1UeXBlKVxuICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgYWN0aXZlRGlhZ3JhbVR5cGU6IG5ld0RpYWdyYW1UeXBlLFxuICAgIH0pXG4gIH1cbn1cbiIsIjxvY3gtZGlhZ3JhbVxuICBbZGF0YV09XCIoZGlhZ3JhbURhdGEkIHwgYXN5bmMpIHx8IFtdXCJcbiAgW2ZpbGxNaXNzaW5nQ29sb3JzXT1cImZpbGxNaXNzaW5nQ29sb3JzXCJcbiAgW3N1bUtleV09XCJzdW1LZXlcIlxuICBbZGlhZ3JhbVR5cGVdPVwiZGlhZ3JhbVR5cGVcIlxuICAob25EYXRhU2VsZWN0KT1cImRhdGFDbGlja2VkKCRldmVudClcIlxuICBbc3VwcG9ydGVkRGlhZ3JhbVR5cGVzXT1cInN1cHBvcnRlZERpYWdyYW1UeXBlc1wiXG4gIChkaWFncmFtVHlwZUNoYW5nZWQpPVwib25EaWFncmFtVHlwZUNoYW5nZWQoJGV2ZW50KVwiXG4+PC9vY3gtZGlhZ3JhbT5cbiJdfQ==