@valtimo/dashboard-management 12.0.0 → 12.1.1

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.
@@ -1,6 +1,6 @@
1
1
  import { Component, ViewEncapsulation } from '@angular/core';
2
2
  import { ArrowDown16, ArrowUp16, Edit16 } from '@carbon/icons';
3
- import { MoveRowDirection, ViewType, } from '@valtimo/components';
3
+ import { ViewType, } from '@valtimo/components';
4
4
  import { BehaviorSubject, combineLatest, map, switchMap, tap } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "../../services/dashboard-management.service";
@@ -51,24 +51,24 @@ export class DashboardDetailsComponent {
51
51
  }));
52
52
  this.lastItemIndex$ = new BehaviorSubject(0);
53
53
  this.loading$ = new BehaviorSubject(true);
54
+ this.dragAndDropDisabled$ = new BehaviorSubject(false);
54
55
  this._refreshWidgetsSubject$ = new BehaviorSubject(null);
55
56
  this._widgetData = null;
56
57
  this.widgetData$ = combineLatest([
57
58
  this._dashboardKey$,
58
59
  this._refreshWidgetsSubject$,
59
60
  ]).pipe(switchMap(([dashboardKey, refreshWidgets]) => {
60
- this.loading$.next(true);
61
61
  if (!this._widgetData || !refreshWidgets) {
62
+ this.loading$.next(true);
62
63
  return this.dashboardManagementService.getDashboardWidgetConfiguration(dashboardKey);
63
64
  }
64
- const { direction, index } = refreshWidgets;
65
- return this.dashboardManagementService.updateDashboardWidgetConfigurations(dashboardKey, direction === MoveRowDirection.UP
66
- ? this.swapWidgets(this._widgetData, index - 1, index)
67
- : this.swapWidgets(this._widgetData, index, index + 1));
65
+ this.dragAndDropDisabled$.next(true);
66
+ return this.dashboardManagementService.updateDashboardWidgetConfigurations(dashboardKey, refreshWidgets);
68
67
  }), tap((data) => {
69
68
  this._widgetData = data;
70
69
  this.lastItemIndex$.next(data.length - 1);
71
70
  this.loading$.next(false);
71
+ this.dragAndDropDisabled$.next(false);
72
72
  }));
73
73
  this.showModal$ = new BehaviorSubject(false);
74
74
  this.showEditDashboardModal$ = new BehaviorSubject(false);
@@ -93,8 +93,15 @@ export class DashboardDetailsComponent {
93
93
  refreshDashboard() {
94
94
  this._refreshDashboardSubject$.next(null);
95
95
  }
96
- onMoveRowClick(moveEvent) {
97
- this._refreshWidgetsSubject$.next(moveEvent);
96
+ onItemsReordered(items) {
97
+ if (!items)
98
+ return;
99
+ this._refreshWidgetsSubject$.next(items);
100
+ }
101
+ editWidget(event) {
102
+ this.editWidgetConfiguration$.next({ ...event });
103
+ this.modalType = 'edit';
104
+ this.showModal();
98
105
  }
99
106
  setFields() {
100
107
  this.fields = [
@@ -105,11 +112,6 @@ export class DashboardDetailsComponent {
105
112
  },
106
113
  ];
107
114
  }
108
- editWidget(event) {
109
- this.editWidgetConfiguration$.next({ ...event });
110
- this.modalType = 'edit';
111
- this.showModal();
112
- }
113
115
  deleteWidget(event) {
114
116
  this.editWidgetConfiguration$.next({ ...event });
115
117
  this.modalType = 'delete';
@@ -121,16 +123,11 @@ export class DashboardDetailsComponent {
121
123
  showEditDashboardModal() {
122
124
  this.showEditDashboardModal$.next(true);
123
125
  }
124
- swapWidgets(dashboardWidgets, index1, index2) {
125
- const temp = [...dashboardWidgets];
126
- temp[index1] = temp.splice(index2, 1, temp[index1])[0];
127
- return temp;
128
- }
129
126
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DashboardDetailsComponent, deps: [{ token: i1.DashboardManagementService }, { token: i2.DatePipe }, { token: i3.IconService }, { token: i4.PageTitleService }, { token: i5.ActivatedRoute }, { token: i6.TranslateService }, { token: i4.PageHeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
130
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DashboardDetailsComponent, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"\n fields && {\n currentDashboard: currentDashboard$ | async,\n editWidgetConfiguration: editWidgetConfiguration$ | async,\n loading: loading$ | async,\n widgetData: widgetData$ | async\n } as obs\n \"\n>\n <div class=\"dashboard-detail-table\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [fields]=\"fields\"\n [header]=\"false\"\n [items]=\"obs.widgetData\"\n [loading]=\"obs.loading\"\n [movingRowsEnabled]=\"true\"\n (moveRow)=\"onMoveRowClick($event)\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addWidgetButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n description=\"{{ 'dashboardManagement.widgets.noResults.description' | translate }}\"\n title=\"{{ 'dashboardManagement.widgets.noResults.title' | translate }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n </div>\n\n <valtimo-widget-modal\n [dashboard]=\"obs.currentDashboard\"\n [editWidgetConfiguration]=\"obs.editWidgetConfiguration\"\n [showModal$]=\"showModal$\"\n [type]=\"modalType\"\n [widgetKey]=\"obs.editWidgetConfiguration?.key\"\n (saveEvent)=\"refreshWidgets()\"\n ></valtimo-widget-modal>\n\n <valtimo-edit-dashboard-modal\n [dashboard]=\"obs.currentDashboard\"\n [showModal$]=\"showEditDashboardModal$\"\n (saveEvent)=\"refreshDashboard()\"\n >\n </valtimo-edit-dashboard-modal>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"tertiary\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n (click)=\"editDashboard()\"\n >\n {{ 'dashboardManagement.widgets.editButton' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\n\n<ng-template #addWidgetButton>\n <button cdsButton=\"primary\" [disabled]=\"loading$ | async\" (click)=\"addWidget()\">\n {{ 'dashboardManagement.widgets.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: [".dashboard-detail-table .move-buttons-container{width:100%;justify-content:flex-end;display:flex;flex-direction:row;right:-1rem;position:relative}.dashboard-detail-table .move-buttons-container button:not(:last-child){margin-right:8px}.dashboard-detail-table__actions{width:1px}.dashboard-detail-table-no-results{display:flex;justify-content:space-around;padding:6.25rem 0;gap:4rem}.dashboard-detail-table-no-results__title{font-size:1.75rem}.dashboard-detail-table-no-results__content{display:flex;flex-direction:column;justify-content:space-around}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i4.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i4.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title"] }, { kind: "component", type: i7.WidgetModalComponent, selector: "valtimo-widget-modal", inputs: ["showModal$", "type", "dashboard", "widgetKey", "editWidgetConfiguration"], outputs: ["saveEvent"] }, { kind: "component", type: i8.EditDashboardModalComponent, selector: "valtimo-edit-dashboard-modal", inputs: ["showModal$", "dashboard"], outputs: ["saveEvent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
127
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DashboardDetailsComponent, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"\n fields && {\n currentDashboard: currentDashboard$ | async,\n editWidgetConfiguration: editWidgetConfiguration$ | async,\n loading: loading$ | async,\n widgetData: widgetData$ | async,\n dragAndDropDisabled: dragAndDropDisabled$ | async\n } as obs\n \"\n>\n <div class=\"dashboard-detail-table\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [fields]=\"fields\"\n [header]=\"false\"\n [items]=\"obs.widgetData\"\n [loading]=\"obs.loading\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"obs.dragAndDropDisabled\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editWidget($event)\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addWidgetButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n description=\"{{ 'dashboardManagement.widgets.noResults.description' | translate }}\"\n title=\"{{ 'dashboardManagement.widgets.noResults.title' | translate }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n </div>\n\n <valtimo-widget-modal\n [dashboard]=\"obs.currentDashboard\"\n [editWidgetConfiguration]=\"obs.editWidgetConfiguration\"\n [showModal$]=\"showModal$\"\n [type]=\"modalType\"\n [widgetKey]=\"obs.editWidgetConfiguration?.key\"\n (saveEvent)=\"refreshWidgets()\"\n ></valtimo-widget-modal>\n\n <valtimo-edit-dashboard-modal\n [dashboard]=\"obs.currentDashboard\"\n [showModal$]=\"showEditDashboardModal$\"\n (saveEvent)=\"refreshDashboard()\"\n >\n </valtimo-edit-dashboard-modal>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"tertiary\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n (click)=\"editDashboard()\"\n >\n {{ 'dashboardManagement.widgets.editButton' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\n\n<ng-template #addWidgetButton>\n <button cdsButton=\"primary\" [disabled]=\"loading$ | async\" (click)=\"addWidget()\">\n {{ 'dashboardManagement.widgets.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: [".dashboard-detail-table .move-buttons-container{width:100%;justify-content:flex-end;display:flex;flex-direction:row;right:-1rem;position:relative}.dashboard-detail-table .move-buttons-container button:not(:last-child){margin-right:8px}.dashboard-detail-table__actions{width:1px}.dashboard-detail-table-no-results{display:flex;justify-content:space-around;padding:6.25rem 0;gap:4rem}.dashboard-detail-table-no-results__title{font-size:1.75rem}.dashboard-detail-table-no-results__content{display:flex;flex-direction:column;justify-content:space-around}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i4.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i4.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i7.WidgetModalComponent, selector: "valtimo-widget-modal", inputs: ["showModal$", "type", "dashboard", "widgetKey", "editWidgetConfiguration"], outputs: ["saveEvent"] }, { kind: "component", type: i8.EditDashboardModalComponent, selector: "valtimo-edit-dashboard-modal", inputs: ["showModal$", "dashboard"], outputs: ["saveEvent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
131
128
  }
132
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DashboardDetailsComponent, decorators: [{
133
130
  type: Component,
134
- args: [{ encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"\n fields && {\n currentDashboard: currentDashboard$ | async,\n editWidgetConfiguration: editWidgetConfiguration$ | async,\n loading: loading$ | async,\n widgetData: widgetData$ | async\n } as obs\n \"\n>\n <div class=\"dashboard-detail-table\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [fields]=\"fields\"\n [header]=\"false\"\n [items]=\"obs.widgetData\"\n [loading]=\"obs.loading\"\n [movingRowsEnabled]=\"true\"\n (moveRow)=\"onMoveRowClick($event)\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addWidgetButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n description=\"{{ 'dashboardManagement.widgets.noResults.description' | translate }}\"\n title=\"{{ 'dashboardManagement.widgets.noResults.title' | translate }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n </div>\n\n <valtimo-widget-modal\n [dashboard]=\"obs.currentDashboard\"\n [editWidgetConfiguration]=\"obs.editWidgetConfiguration\"\n [showModal$]=\"showModal$\"\n [type]=\"modalType\"\n [widgetKey]=\"obs.editWidgetConfiguration?.key\"\n (saveEvent)=\"refreshWidgets()\"\n ></valtimo-widget-modal>\n\n <valtimo-edit-dashboard-modal\n [dashboard]=\"obs.currentDashboard\"\n [showModal$]=\"showEditDashboardModal$\"\n (saveEvent)=\"refreshDashboard()\"\n >\n </valtimo-edit-dashboard-modal>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"tertiary\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n (click)=\"editDashboard()\"\n >\n {{ 'dashboardManagement.widgets.editButton' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\n\n<ng-template #addWidgetButton>\n <button cdsButton=\"primary\" [disabled]=\"loading$ | async\" (click)=\"addWidget()\">\n {{ 'dashboardManagement.widgets.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: [".dashboard-detail-table .move-buttons-container{width:100%;justify-content:flex-end;display:flex;flex-direction:row;right:-1rem;position:relative}.dashboard-detail-table .move-buttons-container button:not(:last-child){margin-right:8px}.dashboard-detail-table__actions{width:1px}.dashboard-detail-table-no-results{display:flex;justify-content:space-around;padding:6.25rem 0;gap:4rem}.dashboard-detail-table-no-results__title{font-size:1.75rem}.dashboard-detail-table-no-results__content{display:flex;flex-direction:column;justify-content:space-around}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
131
+ args: [{ encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"\n fields && {\n currentDashboard: currentDashboard$ | async,\n editWidgetConfiguration: editWidgetConfiguration$ | async,\n loading: loading$ | async,\n widgetData: widgetData$ | async,\n dragAndDropDisabled: dragAndDropDisabled$ | async\n } as obs\n \"\n>\n <div class=\"dashboard-detail-table\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [fields]=\"fields\"\n [header]=\"false\"\n [items]=\"obs.widgetData\"\n [loading]=\"obs.loading\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"obs.dragAndDropDisabled\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editWidget($event)\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addWidgetButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n description=\"{{ 'dashboardManagement.widgets.noResults.description' | translate }}\"\n title=\"{{ 'dashboardManagement.widgets.noResults.title' | translate }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n </div>\n\n <valtimo-widget-modal\n [dashboard]=\"obs.currentDashboard\"\n [editWidgetConfiguration]=\"obs.editWidgetConfiguration\"\n [showModal$]=\"showModal$\"\n [type]=\"modalType\"\n [widgetKey]=\"obs.editWidgetConfiguration?.key\"\n (saveEvent)=\"refreshWidgets()\"\n ></valtimo-widget-modal>\n\n <valtimo-edit-dashboard-modal\n [dashboard]=\"obs.currentDashboard\"\n [showModal$]=\"showEditDashboardModal$\"\n (saveEvent)=\"refreshDashboard()\"\n >\n </valtimo-edit-dashboard-modal>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"tertiary\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n (click)=\"editDashboard()\"\n >\n {{ 'dashboardManagement.widgets.editButton' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\n\n<ng-template #addWidgetButton>\n <button cdsButton=\"primary\" [disabled]=\"loading$ | async\" (click)=\"addWidget()\">\n {{ 'dashboardManagement.widgets.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: [".dashboard-detail-table .move-buttons-container{width:100%;justify-content:flex-end;display:flex;flex-direction:row;right:-1rem;position:relative}.dashboard-detail-table .move-buttons-container button:not(:last-child){margin-right:8px}.dashboard-detail-table__actions{width:1px}.dashboard-detail-table-no-results{display:flex;justify-content:space-around;padding:6.25rem 0;gap:4rem}.dashboard-detail-table-no-results__title{font-size:1.75rem}.dashboard-detail-table-no-results__content{display:flex;flex-direction:column;justify-content:space-around}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
135
132
  }], ctorParameters: () => [{ type: i1.DashboardManagementService }, { type: i2.DatePipe }, { type: i3.IconService }, { type: i4.PageTitleService }, { type: i5.ActivatedRoute }, { type: i6.TranslateService }, { type: i4.PageHeaderService }] });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLWRldGFpbHMvZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLWRldGFpbHMvZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE9BQU8sRUFBZ0IsU0FBUyxFQUEwQixpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUdMLGdCQUFnQixFQUloQixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUc3QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQVNyRixNQUFNLE9BQU8seUJBQXlCO0lBOEVwQyxZQUNtQiwwQkFBc0QsRUFDdEQsUUFBa0IsRUFDbEIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLEtBQXFCLEVBQ3JCLGdCQUFrQyxFQUNsQyxpQkFBb0M7UUFOcEMsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN0RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIscUJBQWdC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Q0FDakIsZ0JBQW1DLEVBQ25DLE1BQWMsRUFDZCxNQUFjO1FBRWQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBMUpVLHlCQUF5QjtrR0FBekIseUJBQXlCLG9EQ3pDdEMsaXpGQXNGQTs7MkZEN0NhLHlCQUF5QjtrQkFMckMsU0FBUztvQ0FHTyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBcnJvd0Rvd24xNiwgQXJyb3dVcDE2LCBFZGl0MTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkl0ZW0sXG4gIENvbHVtbkNvbmZpZyxcbiAgTW92ZVJvd0RpcmVjdGlvbixcbiAgTW92ZVJvd0V2ZW50LFxuICBQYWdlSGVhZGVyU2VydmljZSxcbiAgUGFnZVRpdGxlU2VydmljZSxcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9ufSBmcm9tICdAdmFsdGltby9kYXNoYm9hcmQnO1xuaW1wb3J0IHtJY29uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Rhc2hib2FyZEl0ZW0sIERhc2hib2FyZFdpZGdldCwgV2lkZ2V0TW9kYWxUeXBlfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXNoYm9hcmQtZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmREZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHB1YmxpYyBtb2RhbFR5cGU6IFdpZGdldE1vZGFsVHlwZSA9ICdjcmVhdGUnO1xuICBwdWJsaWMgZmllbGRzITogQ29sdW1uQ29uZmlnW107XG4gIHB1YmxpYyByZWFkb25seSBhY3Rpb25JdGVtczogQWN0aW9uSXRlbVtdID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnRWRpdCcsXG4gICAgICBjYWxsYmFjazogdGhpcy5lZGl0V2lkZ2V0LmJpbmQodGhpcyksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ0RlbGV0ZScsXG4gICAgICBjYWxsYmFjazogdGhpcy5kZWxldGVXaWRnZXQuYmluZCh0aGlzKSxcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGFzaGJvYXJkS2V5JCA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUobWFwKHBhcmFtcyA9PiBwYXJhbXMuaWQpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaERhc2hib2FyZFN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnREYXNoYm9hcmQkOiBPYnNlcnZhYmxlPERhc2hib2FyZEl0ZW0gfCB1bmRlZmluZWQ+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fZGFzaGJvYXJkS2V5JCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgICB0aGlzLl9yZWZyZXNoRGFzaGJvYXJkU3ViamVjdCQsXG4gIF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbZGFzaGJvYXJkS2V5XSkgPT4gdGhpcy5kYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZS5nZXREYXNoYm9hcmQoZGFzaGJvYXJkS2V5KSksXG4gICAgdGFwKChjdXJyZW50RGFzaGJvYXJkOiBEYXNoYm9hcmRJdGVtKSA9PiB7XG4gICAgICBpZiAoIWN1cnJlbnREYXNoYm9hcmQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2Uuc2V0Q3VzdG9tUGFnZVRpdGxlKGN1cnJlbnREYXNoYm9hcmQudGl0bGUpO1xuICAgICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLnNldEN1c3RvbVBhZ2VTdWJ0aXRsZShcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5tZXRhZGF0YScsIHtcbiAgICAgICAgICBjcmVhdGVkQnk6IGN1cnJlbnREYXNoYm9hcmQuY3JlYXRlZEJ5LFxuICAgICAgICAgIGNyZWF0ZWRPbjogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oY3VycmVudERhc2hib2FyZC5jcmVhdGVkT24gPz8gJycsICdkL00veXksIEg6bW0nKSxcbiAgICAgICAgICBrZXk6IGN1cnJlbnREYXNoYm9hcmQua2V5LFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBsYXN0SXRlbUluZGV4JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgX3JlZnJlc2hXaWRnZXRzU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1vdmVSb3dFdmVudCB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgX3dpZGdldERhdGE6IERhc2hib2FyZFdpZGdldFtdIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXREYXRhJDogT2JzZXJ2YWJsZTxEYXNoYm9hcmRXaWRnZXRbXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9kYXNoYm9hcmRLZXkkLFxuICAgIHRoaXMuX3JlZnJlc2hXaWRnZXRzU3ViamVjdCQsXG4gIF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbZGFzaGJvYXJkS2V5LCByZWZyZXNoV2lkZ2V0c10pID0+IHtcbiAgICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICAgIGlmICghdGhpcy5fd2lkZ2V0RGF0YSB8fCAhcmVmcmVzaFdpZGdldHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UuZ2V0RGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbihkYXNoYm9hcmRLZXkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7ZGlyZWN0aW9uLCBpbmRleH0gPSByZWZyZXNoV2lkZ2V0cztcblxuICAgICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UudXBkYXRlRGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbnMoXG4gICAgICAgIGRhc2hib2FyZEtleSxcbiAgICAgICAgZGlyZWN0aW9uID09PSBNb3ZlUm93RGlyZWN0aW9uLlVQXG4gICAgICAgICAgPyB0aGlzLnN3YXBXaWRnZXRzKHRoaXMuX3dpZGdldERhdGEsIGluZGV4IC0gMSwgaW5kZXgpXG4gICAgICAgICAgOiB0aGlzLnN3YXBXaWRnZXRzKHRoaXMuX3dpZGdldERhdGEsIGluZGV4LCBpbmRleCArIDEpXG4gICAgICApO1xuICAgIH0pLFxuICAgIHRhcCgoZGF0YTogRGFzaGJvYXJkV2lkZ2V0W10pID0+IHtcbiAgICAgIHRoaXMuX3dpZGdldERhdGEgPSBkYXRhO1xuICAgICAgdGhpcy5sYXN0SXRlbUluZGV4JC5uZXh0KGRhdGEubGVuZ3RoIC0gMSk7XG4gICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNob3dNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dFZGl0RGFzaGJvYXJkTW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVkaXRXaWRnZXRDb25maWd1cmF0aW9uJCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9uIHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbXBhY3RNb2RlJCA9IHRoaXMucGFnZUhlYWRlclNlcnZpY2UuY29tcGFjdE1vZGUkO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlOiBEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VUaXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZUhlYWRlclNlcnZpY2U6IFBhZ2VIZWFkZXJTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0Fycm93RG93bjE2LCBBcnJvd1VwMTYsIEVkaXQxNl0pO1xuICAgIHRoaXMuc2V0RmllbGRzKCk7XG4gIH1cblxuICBwdWJsaWMgYWRkV2lkZ2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdFdpZGdldENvbmZpZ3VyYXRpb24kLm5leHQobnVsbCk7XG4gICAgdGhpcy5tb2RhbFR5cGUgPSAnY3JlYXRlJztcbiAgICB0aGlzLnNob3dNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIGVkaXREYXNoYm9hcmQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RWRpdERhc2hib2FyZE1vZGFsKCk7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaFdpZGdldHMoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaFdpZGdldHNTdWJqZWN0JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2hEYXNoYm9hcmQoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaERhc2hib2FyZFN1YmplY3QkLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgb25Nb3ZlUm93Q2xpY2sobW92ZUV2ZW50OiBNb3ZlUm93RXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWZyZXNoV2lkZ2V0c1N1YmplY3QkLm5leHQobW92ZUV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmllbGRzKCk6IHZvaWQge1xuICAgIHRoaXMuZmllbGRzID0gW1xuICAgICAge1xuICAgICAgICB2aWV3VHlwZTogVmlld1R5cGUuVEVYVCxcbiAgICAgICAga2V5OiAndGl0bGUnLFxuICAgICAgICBsYWJlbDogJ05hbWUnLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBlZGl0V2lkZ2V0KGV2ZW50OiBEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0V2lkZ2V0Q29uZmlndXJhdGlvbiQubmV4dCh7Li4uZXZlbnR9KTtcbiAgICB0aGlzLm1vZGFsVHlwZSA9ICdlZGl0JztcbiAgICB0aGlzLnNob3dNb2RhbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVXaWRnZXQoZXZlbnQ6IERhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRXaWRnZXRDb25maWd1cmF0aW9uJC5uZXh0KHsuLi5ldmVudH0pO1xuICAgIHRoaXMubW9kYWxUeXBlID0gJ2RlbGV0ZSc7XG4gICAgdGhpcy5zaG93TW9kYWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd01vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93RWRpdERhc2hib2FyZE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0VkaXREYXNoYm9hcmRNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc3dhcFdpZGdldHMoXG4gICAgZGFzaGJvYXJkV2lkZ2V0czogRGFzaGJvYXJkV2lkZ2V0W10sXG4gICAgaW5kZXgxOiBudW1iZXIsXG4gICAgaW5kZXgyOiBudW1iZXJcbiAgKTogRGFzaGJvYXJkV2lkZ2V0W10ge1xuICAgIGNvbnN0IHRlbXAgPSBbLi4uZGFzaGJvYXJkV2lkZ2V0c107XG4gICAgdGVtcFtpbmRleDFdID0gdGVtcC5zcGxpY2UoaW5kZXgyLCAxLCB0ZW1wW2luZGV4MV0pWzBdO1xuXG4gICAgcmV0dXJuIHRlbXA7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIlxuICAgIGZpZWxkcyAmJiB7XG4gICAgICBjdXJyZW50RGFzaGJvYXJkOiBjdXJyZW50RGFzaGJvYXJkJCB8IGFzeW5jLFxuICAgICAgZWRpdFdpZGdldENvbmZpZ3VyYXRpb246IGVkaXRXaWRnZXRDb25maWd1cmF0aW9uJCB8IGFzeW5jLFxuICAgICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgICAgIHdpZGdldERhdGE6IHdpZGdldERhdGEkIHwgYXN5bmNcbiAgICB9IGFzIG9ic1xuICBcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWRldGFpbC10YWJsZVwiPlxuICAgIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgICBbYWN0aW9uSXRlbXNdPVwiYWN0aW9uSXRlbXNcIlxuICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgICAgW2hlYWRlcl09XCJmYWxzZVwiXG4gICAgICBbaXRlbXNdPVwib2JzLndpZGdldERhdGFcIlxuICAgICAgW2xvYWRpbmddPVwib2JzLmxvYWRpbmdcIlxuICAgICAgW21vdmluZ1Jvd3NFbmFibGVkXT1cInRydWVcIlxuICAgICAgKG1vdmVSb3cpPVwib25Nb3ZlUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGRpdiBjYXJib25Ub29sYmFyQ29udGVudD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGRXaWRnZXRCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICAgIFthY3Rpb25dPVwiYWRkV2lkZ2V0QnV0dG9uXCJcbiAgICAgICAgZGVzY3JpcHRpb249XCJ7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLm5vUmVzdWx0cy5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0aXRsZT1cInt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMubm9SZXN1bHRzLnRpdGxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gICAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuICA8L2Rpdj5cblxuICA8dmFsdGltby13aWRnZXQtbW9kYWxcbiAgICBbZGFzaGJvYXJkXT1cIm9icy5jdXJyZW50RGFzaGJvYXJkXCJcbiAgICBbZWRpdFdpZGdldENvbmZpZ3VyYXRpb25dPVwib2JzLmVkaXRXaWRnZXRDb25maWd1cmF0aW9uXCJcbiAgICBbc2hvd01vZGFsJF09XCJzaG93TW9kYWwkXCJcbiAgICBbdHlwZV09XCJtb2RhbFR5cGVcIlxuICAgIFt3aWRnZXRLZXldPVwib2JzLmVkaXRXaWRnZXRDb25maWd1cmF0aW9uPy5rZXlcIlxuICAgIChzYXZlRXZlbnQpPVwicmVmcmVzaFdpZGdldHMoKVwiXG4gID48L3ZhbHRpbW8td2lkZ2V0LW1vZGFsPlxuXG4gIDx2YWx0aW1vLWVkaXQtZGFzaGJvYXJkLW1vZGFsXG4gICAgW2Rhc2hib2FyZF09XCJvYnMuY3VycmVudERhc2hib2FyZFwiXG4gICAgW3Nob3dNb2RhbCRdPVwic2hvd0VkaXREYXNoYm9hcmRNb2RhbCRcIlxuICAgIChzYXZlRXZlbnQpPVwicmVmcmVzaERhc2hib2FyZCgpXCJcbiAgPlxuICA8L3ZhbHRpbW8tZWRpdC1kYXNoYm9hcmQtbW9kYWw+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciByZW5kZXJJblBhZ2VIZWFkZXI+XG4gIDxuZy10ZW1wbGF0ZT5cbiAgICA8YnV0dG9uXG4gICAgICBjZHNCdXR0b249XCJ0ZXJ0aWFyeVwiXG4gICAgICBbc2l6ZV09XCIoY29tcGFjdE1vZGUkIHwgYXN5bmMpID8gJ3NtJyA6ICdtZCdcIlxuICAgICAgKGNsaWNrKT1cImVkaXREYXNoYm9hcmQoKVwiXG4gICAgPlxuICAgICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5lZGl0QnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiZWRpdFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkV2lkZ2V0QnV0dG9uPlxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwibG9hZGluZyQgfCBhc3luY1wiIChjbGljayk9XCJhZGRXaWRnZXQoKVwiPlxuICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuYWRkJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImFkZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLWRldGFpbHMvZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLWRldGFpbHMvZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBS0wsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFHN0IsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFTckYsTUFBTSxPQUFPLHlCQUF5QjtJQStFcEMsWUFDbUIsMEJBQXNELEVBQ3RELFFBQWtCLEVBQ2xCLFdBQXdCLEVBQ3hCLGdCQUFrQyxFQUNsQyxLQUFxQixFQUNyQixnQkFBa0MsRUFDbEMsaUJBQW9DO1FBTnBDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0Is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Q0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBcnJvd0Rvd24xNiwgQXJyb3dVcDE2LCBFZGl0MTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkl0ZW0sXG4gIENvbHVtbkNvbmZpZyxcbiAgUGFnZUhlYWRlclNlcnZpY2UsXG4gIFBhZ2VUaXRsZVNlcnZpY2UsXG4gIFZpZXdUeXBlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7RGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbn0gZnJvbSAnQHZhbHRpbW8vZGFzaGJvYXJkJztcbmltcG9ydCB7SWNvblNlcnZpY2V9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEYXNoYm9hcmRJdGVtLCBEYXNoYm9hcmRXaWRnZXQsIFdpZGdldE1vZGFsVHlwZX0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7RGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rhc2hib2FyZC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwdWJsaWMgbW9kYWxUeXBlOiBXaWRnZXRNb2RhbFR5cGUgPSAnY3JlYXRlJztcbiAgcHVibGljIGZpZWxkcyE6IENvbHVtbkNvbmZpZ1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aW9uSXRlbXM6IEFjdGlvbkl0ZW1bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ0VkaXQnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuZWRpdFdpZGdldC5iaW5kKHRoaXMpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdEZWxldGUnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuZGVsZXRlV2lkZ2V0LmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICB9LFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rhc2hib2FyZEtleSQgPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKG1hcChwYXJhbXMgPT4gcGFyYW1zLmlkKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlZnJlc2hEYXNoYm9hcmRTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50RGFzaGJvYXJkJDogT2JzZXJ2YWJsZTxEYXNoYm9hcmRJdGVtIHwgdW5kZWZpbmVkPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX2Rhc2hib2FyZEtleSQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gICAgdGhpcy5fcmVmcmVzaERhc2hib2FyZFN1YmplY3QkLFxuICBdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW2Rhc2hib2FyZEtleV0pID0+IHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UuZ2V0RGFzaGJvYXJkKGRhc2hib2FyZEtleSkpLFxuICAgIHRhcCgoY3VycmVudERhc2hib2FyZDogRGFzaGJvYXJkSXRlbSkgPT4ge1xuICAgICAgaWYgKCFjdXJyZW50RGFzaGJvYXJkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLnNldEN1c3RvbVBhZ2VUaXRsZShjdXJyZW50RGFzaGJvYXJkLnRpdGxlKTtcbiAgICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5zZXRDdXN0b21QYWdlU3VidGl0bGUoXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMubWV0YWRhdGEnLCB7XG4gICAgICAgICAgY3JlYXRlZEJ5OiBjdXJyZW50RGFzaGJvYXJkLmNyZWF0ZWRCeSxcbiAgICAgICAgICBjcmVhdGVkT246IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGN1cnJlbnREYXNoYm9hcmQuY3JlYXRlZE9uID8/ICcnLCAnZC9NL3l5LCBIOm1tJyksXG4gICAgICAgICAga2V5OiBjdXJyZW50RGFzaGJvYXJkLmtleSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbGFzdEl0ZW1JbmRleCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyByZWFkb25seSBkcmFnQW5kRHJvcERpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBfcmVmcmVzaFdpZGdldHNTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGFzaGJvYXJkV2lkZ2V0W10gfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIF93aWRnZXREYXRhOiBEYXNoYm9hcmRXaWRnZXRbXSB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgcmVhZG9ubHkgd2lkZ2V0RGF0YSQ6IE9ic2VydmFibGU8RGFzaGJvYXJkV2lkZ2V0W10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fZGFzaGJvYXJkS2V5JCxcbiAgICB0aGlzLl9yZWZyZXNoV2lkZ2V0c1N1YmplY3QkLFxuICBdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW2Rhc2hib2FyZEtleSwgcmVmcmVzaFdpZGdldHNdKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3dpZGdldERhdGEgfHwgIXJlZnJlc2hXaWRnZXRzKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UuZ2V0RGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbihkYXNoYm9hcmRLZXkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRyYWdBbmREcm9wRGlzYWJsZWQkLm5leHQodHJ1ZSk7XG5cbiAgICAgIHJldHVybiB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLnVwZGF0ZURhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb25zKFxuICAgICAgICBkYXNoYm9hcmRLZXksXG4gICAgICAgIHJlZnJlc2hXaWRnZXRzXG4gICAgICApO1xuICAgIH0pLFxuICAgIHRhcCgoZGF0YTogRGFzaGJvYXJkV2lkZ2V0W10pID0+IHtcbiAgICAgIHRoaXMuX3dpZGdldERhdGEgPSBkYXRhO1xuICAgICAgdGhpcy5sYXN0SXRlbUluZGV4JC5uZXh0KGRhdGEubGVuZ3RoIC0gMSk7XG4gICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5kcmFnQW5kRHJvcERpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzaG93TW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93RWRpdERhc2hib2FyZE1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBlZGl0V2lkZ2V0Q29uZmlndXJhdGlvbiQgPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8RGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbiB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb21wYWN0TW9kZSQgPSB0aGlzLnBhZ2VIZWFkZXJTZXJ2aWNlLmNvbXBhY3RNb2RlJDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlOiBEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VUaXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZUhlYWRlclNlcnZpY2U6IFBhZ2VIZWFkZXJTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0Fycm93RG93bjE2LCBBcnJvd1VwMTYsIEVkaXQxNl0pO1xuICAgIHRoaXMuc2V0RmllbGRzKCk7XG4gIH1cblxuICBwdWJsaWMgYWRkV2lkZ2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdFdpZGdldENvbmZpZ3VyYXRpb24kLm5leHQobnVsbCk7XG4gICAgdGhpcy5tb2RhbFR5cGUgPSAnY3JlYXRlJztcbiAgICB0aGlzLnNob3dNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIGVkaXREYXNoYm9hcmQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RWRpdERhc2hib2FyZE1vZGFsKCk7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaFdpZGdldHMoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaFdpZGdldHNTdWJqZWN0JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2hEYXNoYm9hcmQoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaERhc2hib2FyZFN1YmplY3QkLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgb25JdGVtc1Jlb3JkZXJlZChpdGVtczogRGFzaGJvYXJkV2lkZ2V0W10pOiB2b2lkIHtcbiAgICBpZiAoIWl0ZW1zKSByZXR1cm47XG5cbiAgICB0aGlzLl9yZWZyZXNoV2lkZ2V0c1N1YmplY3QkLm5leHQoaXRlbXMpO1xuICB9XG5cbiAgcHVibGljIGVkaXRXaWRnZXQoZXZlbnQ6IERhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRXaWRnZXRDb25maWd1cmF0aW9uJC5uZXh0KHsuLi5ldmVudH0pO1xuICAgIHRoaXMubW9kYWxUeXBlID0gJ2VkaXQnO1xuICAgIHRoaXMuc2hvd01vZGFsKCk7XG4gIH1cblxuICBwcml2YXRlIHNldEZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLmZpZWxkcyA9IFtcbiAgICAgIHtcbiAgICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgICAgIGtleTogJ3RpdGxlJyxcbiAgICAgICAgbGFiZWw6ICdOYW1lJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlV2lkZ2V0KGV2ZW50OiBEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0V2lkZ2V0Q29uZmlndXJhdGlvbiQubmV4dCh7Li4uZXZlbnR9KTtcbiAgICB0aGlzLm1vZGFsVHlwZSA9ICdkZWxldGUnO1xuICAgIHRoaXMuc2hvd01vZGFsKCk7XG4gIH1cblxuICBwcml2YXRlIHNob3dNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0VkaXREYXNoYm9hcmRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dFZGl0RGFzaGJvYXJkTW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIlxuICAgIGZpZWxkcyAmJiB7XG4gICAgICBjdXJyZW50RGFzaGJvYXJkOiBjdXJyZW50RGFzaGJvYXJkJCB8IGFzeW5jLFxuICAgICAgZWRpdFdpZGdldENvbmZpZ3VyYXRpb246IGVkaXRXaWRnZXRDb25maWd1cmF0aW9uJCB8IGFzeW5jLFxuICAgICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgICAgIHdpZGdldERhdGE6IHdpZGdldERhdGEkIHwgYXN5bmMsXG4gICAgICBkcmFnQW5kRHJvcERpc2FibGVkOiBkcmFnQW5kRHJvcERpc2FibGVkJCB8IGFzeW5jXG4gICAgfSBhcyBvYnNcbiAgXCJcbj5cbiAgPGRpdiBjbGFzcz1cImRhc2hib2FyZC1kZXRhaWwtdGFibGVcIj5cbiAgICA8dmFsdGltby1jYXJib24tbGlzdFxuICAgICAgW2FjdGlvbkl0ZW1zXT1cImFjdGlvbkl0ZW1zXCJcbiAgICAgIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgICAgIFtoZWFkZXJdPVwiZmFsc2VcIlxuICAgICAgW2l0ZW1zXT1cIm9icy53aWRnZXREYXRhXCJcbiAgICAgIFtsb2FkaW5nXT1cIm9icy5sb2FkaW5nXCJcbiAgICAgIFtkcmFnQW5kRHJvcF09XCJ0cnVlXCJcbiAgICAgIFtkcmFnQW5kRHJvcERpc2FibGVkXT1cIm9icy5kcmFnQW5kRHJvcERpc2FibGVkXCJcbiAgICAgIChpdGVtc1Jlb3JkZXJlZCk9XCJvbkl0ZW1zUmVvcmRlcmVkKCRldmVudClcIlxuICAgICAgKHJvd0NsaWNrZWQpPVwiZWRpdFdpZGdldCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNhcmJvblRvb2xiYXJDb250ZW50PlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkZFdpZGdldEJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgICAgW2FjdGlvbl09XCJhZGRXaWRnZXRCdXR0b25cIlxuICAgICAgICBkZXNjcmlwdGlvbj1cInt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMubm9SZXN1bHRzLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHRpdGxlPVwie3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5ub1Jlc3VsdHMudGl0bGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgICA8L3ZhbHRpbW8tY2FyYm9uLWxpc3Q+XG4gIDwvZGl2PlxuXG4gIDx2YWx0aW1vLXdpZGdldC1tb2RhbFxuICAgIFtkYXNoYm9hcmRdPVwib2JzLmN1cnJlbnREYXNoYm9hcmRcIlxuICAgIFtlZGl0V2lkZ2V0Q29uZmlndXJhdGlvbl09XCJvYnMuZWRpdFdpZGdldENvbmZpZ3VyYXRpb25cIlxuICAgIFtzaG93TW9kYWwkXT1cInNob3dNb2RhbCRcIlxuICAgIFt0eXBlXT1cIm1vZGFsVHlwZVwiXG4gICAgW3dpZGdldEtleV09XCJvYnMuZWRpdFdpZGdldENvbmZpZ3VyYXRpb24/LmtleVwiXG4gICAgKHNhdmVFdmVudCk9XCJyZWZyZXNoV2lkZ2V0cygpXCJcbiAgPjwvdmFsdGltby13aWRnZXQtbW9kYWw+XG5cbiAgPHZhbHRpbW8tZWRpdC1kYXNoYm9hcmQtbW9kYWxcbiAgICBbZGFzaGJvYXJkXT1cIm9icy5jdXJyZW50RGFzaGJvYXJkXCJcbiAgICBbc2hvd01vZGFsJF09XCJzaG93RWRpdERhc2hib2FyZE1vZGFsJFwiXG4gICAgKHNhdmVFdmVudCk9XCJyZWZyZXNoRGFzaGJvYXJkKClcIlxuICA+XG4gIDwvdmFsdGltby1lZGl0LWRhc2hib2FyZC1tb2RhbD5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyIHJlbmRlckluUGFnZUhlYWRlcj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxidXR0b25cbiAgICAgIGNkc0J1dHRvbj1cInRlcnRpYXJ5XCJcbiAgICAgIFtzaXplXT1cIihjb21wYWN0TW9kZSQgfCBhc3luYykgPyAnc20nIDogJ21kJ1wiXG4gICAgICAoY2xpY2spPVwiZWRpdERhc2hib2FyZCgpXCJcbiAgICA+XG4gICAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmVkaXRCdXR0b24nIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJlZGl0XCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNhZGRXaWRnZXRCdXR0b24+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nJCB8IGFzeW5jXCIgKGNsaWNrKT1cImFkZFdpZGdldCgpXCI+XG4gICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5hZGQnIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -103,7 +103,7 @@ export class DashboardManagementComponent {
103
103
  this.showDeleteModal$.next(true);
104
104
  }
105
105
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DashboardManagementComponent, deps: [{ token: i1.DashboardManagementService }, { token: i2.FormBuilder }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
106
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DashboardManagementComponent, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"tableData$ | async as data\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [header]=\"false\"\n [items]=\"data.items\"\n [loading]=\"data.loading\"\n [fields]=\"fields\"\n (rowClicked)=\"onRowClick($event)\"\n class=\"valtimo-dashboard-management__table\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addDashboardButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addDashboardButton\"\n description=\"{{ 'dashboardManagement.noResults.description' | translate }}\"\n title=\"{{ 'dashboardManagement.noResults.title' | translate }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<cds-modal\n valtimoCdsModal\n [open]=\"openModal$ | async\"\n showFooter=\"true\"\n title=\"{{ 'dashboardManagement.addDashboard' | translate }}\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'dashboardManagement.addDashboard' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\" class=\"valtimo-dashboard-management__form\">\n <cds-label [invalid]=\"getControlInvalid('title')\">\n {{ 'dashboardManagement.addModal.name' | translate }}\n\n <input\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"getControlInvalid('title')\"\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'dashboardManagement.addModal.namePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <cds-label\n [helperText]=\"'dashboardManagement.addModal.descriptionHelperText' | translate\"\n [invalid]=\"getControlInvalid('description')\"\n >\n {{ 'dashboardManagement.description' | translate }}\n\n <input\n [invalid]=\"getControlInvalid('description')\"\n formControlName=\"description\"\n cdsText\n placeholder=\"{{ 'dashboardManagement.addModal.descriptionPlaceholder' | translate }}\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" cdsButton=\"primary\" (click)=\"createDashboard()\">\n {{ 'dashboardManagement.create' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dashboardManagement.deleteModal.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dashboardManagement.deleteModalContent\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dashboardManagement.delete\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #addDashboardButton>\n <button cdsButton=\"primary\" (click)=\"openModal()\">\n {{ 'dashboardManagement.addDashboard' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n", styles: [".valtimo-dashboard-management__actions{width:1px}.valtimo-dashboard-management__form>*:not(:last-child){margin-bottom:32px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i4.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i6.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DashboardManagementComponent, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"tableData$ | async as data\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [header]=\"false\"\n [items]=\"data.items\"\n [loading]=\"data.loading\"\n [fields]=\"fields\"\n (rowClicked)=\"onRowClick($event)\"\n class=\"valtimo-dashboard-management__table\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addDashboardButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addDashboardButton\"\n description=\"{{ 'dashboardManagement.noResults.description' | translate }}\"\n title=\"{{ 'dashboardManagement.noResults.title' | translate }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<cds-modal\n valtimoCdsModal\n [open]=\"openModal$ | async\"\n showFooter=\"true\"\n title=\"{{ 'dashboardManagement.addDashboard' | translate }}\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'dashboardManagement.addDashboard' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\" class=\"valtimo-dashboard-management__form\">\n <cds-label [invalid]=\"getControlInvalid('title')\">\n {{ 'dashboardManagement.addModal.name' | translate }}\n\n <input\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"getControlInvalid('title')\"\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'dashboardManagement.addModal.namePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <cds-label\n [helperText]=\"'dashboardManagement.addModal.descriptionHelperText' | translate\"\n [invalid]=\"getControlInvalid('description')\"\n >\n {{ 'dashboardManagement.description' | translate }}\n\n <input\n [invalid]=\"getControlInvalid('description')\"\n formControlName=\"description\"\n cdsText\n placeholder=\"{{ 'dashboardManagement.addModal.descriptionPlaceholder' | translate }}\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" cdsButton=\"primary\" (click)=\"createDashboard()\">\n {{ 'dashboardManagement.create' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dashboardManagement.deleteModal.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dashboardManagement.deleteModalContent\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dashboardManagement.delete\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #addDashboardButton>\n <button cdsButton=\"primary\" (click)=\"openModal()\">\n {{ 'dashboardManagement.addDashboard' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n", styles: [".valtimo-dashboard-management__actions{width:1px}.valtimo-dashboard-management__form>*:not(:last-child){margin-bottom:32px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i4.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i6.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
107
107
  }
108
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DashboardManagementComponent, decorators: [{
109
109
  type: Component,
@@ -211,7 +211,8 @@ export class WidgetModalComponent {
211
211
  const selectedDataSource = dataSources.find(source => source.key === selectedDataSourceKey);
212
212
  const availableDataFeatures = selectedDataSource?.dataFeatures;
213
213
  const compatibleDisplayTypes = supportedDisplayTypes.filter(displayType => {
214
- const supportedDataFeatures = displayType.requiredDataFeatures.filter(feature => availableDataFeatures?.includes(feature));
214
+ const supportedDataFeatures = displayType.requiredDataFeatures.filter(requiredDataFeature => !!availableDataFeatures?.some(availableDataFeature => this.trimAndToUpperCase(availableDataFeature) ===
215
+ this.trimAndToUpperCase(requiredDataFeature)));
215
216
  return supportedDataFeatures.length === displayType.requiredDataFeatures.length;
216
217
  });
217
218
  this._compatibleDisplayTypes$.next(compatibleDisplayTypes);
@@ -225,6 +226,9 @@ export class WidgetModalComponent {
225
226
  this.disabled$.next(false);
226
227
  this.form.enable();
227
228
  }
229
+ trimAndToUpperCase(text) {
230
+ return `${text}`.trim().toUpperCase();
231
+ }
228
232
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetModalComponent, deps: [{ token: DOCUMENT }, { token: i1.FormBuilder }, { token: i2.TranslateService }, { token: i3.NotificationService }, { token: i4.DashboardManagementService }, { token: i5.WidgetService }, { token: i5.WidgetTranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
229
233
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: WidgetModalComponent, selector: "valtimo-widget-modal", inputs: { showModal$: "showModal$", type: "type", dashboard: "dashboard", widgetKey: "widgetKey", editWidgetConfiguration: "editWidgetConfiguration" }, outputs: { saveEvent: "saveEvent" }, providers: [NotificationService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n isCreate: type === 'create',\n isDelete: type === 'delete',\n isEdit: type === 'edit',\n open: open$ | async\n } as vars\"\n>\n <ng-container\n *ngIf=\"{\n create: vars.isCreate && ('dashboardManagement.widgets.add' | translate),\n delete: vars.isDelete && ('dashboardManagement.widgets.delete' | translate),\n edit: vars.isEdit && ('dashboardManagement.widgets.edit' | translate)\n } as titles\"\n >\n <cds-modal\n *ngIf=\"{\n title: titles.edit || titles.create || titles.delete\n } as translations\"\n valtimoCdsModal\n [open]=\"vars.open\"\n showFooter=\"true\"\n size=\"md\"\n title=\"{{ translations.title }}\"\n class=\"widget-modal\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ translations.title }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngIf=\"vars.isDelete\">\n {{ 'dashboardManagement.widgets.deleteDescription' | translate }}</ng-container\n >\n\n <ng-container *ngIf=\"vars.isEdit || vars.isCreate\">\n <ng-container *ngTemplateOutlet=\"widgetForm; context: {vars: vars}\"></ng-container>\n </ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngIf=\"vars.isEdit || vars.isCreate\">\n <ng-container *ngTemplateOutlet=\"editButtons; context: {vars: vars}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"vars.isDelete\">\n <ng-container *ngTemplateOutlet=\"deleteButtons; context: {vars: vars}\"></ng-container>\n </ng-container>\n </cds-modal-footer>\n </cds-modal>\n </ng-container>\n</ng-container>\n\n<ng-template #widgetForm let-vars=\"vars\">\n <form\n *ngIf=\"\n form && {\n dataSourceItems: dataSourceItems$ | async,\n displayTypeDropdownDisabled: displayTypeDropdownDisabled$ | async,\n displayTypeItems: displayTypeItems$ | async,\n selectedDataSourceKey: selectedDataSourceKey$ | async,\n selectedDisplayTypeKey: selectedDisplayTypeKey$ | async\n } as obs\n \"\n [formGroup]=\"form\"\n class=\"dashboard-modal__form\"\n >\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'dashboardManagement.widgets.form.titleHelperText' | translate\"\n [invalidText]=\"'dashboardManagement.widgets.form.titleHelperText' | translate\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'dashboardManagement.widgets.form.title' | translate }}\n\n <input\n cdsText\n formControlName=\"title\"\n [invalid]=\"title.dirty && title.invalid\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__element\" *ngIf=\"obs.dataSourceItems\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"dataSource\"\n [helperText]=\"'dashboardManagement.widgets.form.dataSourceHelperText' | translate\"\n [invalidText]=\"'dashboardManagement.widgets.form.dateSourceHelperText' | translate\"\n [invalid]=\"dataSource.dirty && dataSource.invalid\"\n [label]=\"'dashboardManagement.widgets.form.dataSource' | translate\"\n (selected)=\"dataSourceSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs.dataSourceItems\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <valtimo-widget-configuration-container\n *ngIf=\"obs.selectedDataSourceKey\"\n [dataSourceKey]=\"obs.selectedDataSourceKey\"\n [disabled]=\"vars.disabled\"\n [prefillConfiguration]=\"dataSourcePrefillConfig$ | async\"\n (configurationEvent)=\"dataSourceConfiguration($event)\"\n ></valtimo-widget-configuration-container>\n\n <div class=\"form__element\" *ngIf=\"obs.displayTypeItems\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"displayType\"\n [helperText]=\"'dashboardManagement.widgets.form.displayTypeHelperText' | translate\"\n [invalid]=\"displayType.dirty && displayType.invalid\"\n [invalidText]=\"'dashboardManagement.widgets.form.displayTypeHelperText' | translate\"\n [label]=\"'dashboardManagement.widgets.form.displayType' | translate\"\n (selected)=\"displayTypeSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs.displayTypeItems\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <valtimo-widget-configuration-container\n *ngIf=\"obs.selectedDisplayTypeKey\"\n [disabled]=\"vars.disabled\"\n [displayTypeKey]=\"obs.selectedDisplayTypeKey\"\n [prefillConfiguration]=\"displayTypePrefillConfig$ | async\"\n (configurationEvent)=\"displayTypeConfiguration($event)\"\n ></valtimo-widget-configuration-container>\n </form>\n</ng-template>\n\n<ng-template #editButtons let-vars=\"vars\">\n <ng-container\n *ngIf=\"{\n dataSourceConfiguration: dataSourceConfiguration$ | async,\n displayTypeConfiguration: displayTypeConfiguration$ | async\n } as obs\"\n >\n <button cdsButton=\"ghost\" [disabled]=\"vars.disabled\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.widgets.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"\n form.invalid ||\n !obs.dataSourceConfiguration.valid ||\n !obs.displayTypeConfiguration.valid ||\n vars.disabled\n \"\n (click)=\"save()\"\n >\n {{ 'dashboardManagement.widgets.save' | translate }}\n </button>\n </ng-container>\n</ng-template>\n\n<ng-template #deleteButtons let-vars=\"vars\">\n <button cdsButton=\"secondary\" [disabled]=\"vars.disabled\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.widgets.cancel' | translate }}\n </button>\n\n <button cdsButton=\"danger\" [disabled]=\"vars.disabled\" (click)=\"delete()\">\n {{ 'dashboardManagement.widgets.delete' | translate }}\n </button>\n</ng-template>\n", styles: [".widget-modal .form__row{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-start}.widget-modal .form__spacer{width:32px}.widget-modal .form__element{width:100%;margin-bottom:32px}.widget-modal .form__element.--with-button{display:flex;align-items:flex-end;flex-direction:row}.widget-modal .form__element.--with-button button{margin-left:16px}.widget-modal .form__element.--readonly input{background-color:transparent}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i3.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "component", type: i3.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i3.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i3.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i3.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.WidgetConfigurationContainerComponent, selector: "valtimo-widget-configuration-container", inputs: ["dataSourceKey", "displayTypeKey", "disabled", "prefillConfiguration"], outputs: ["configurationEvent"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
230
234
  }
@@ -247,4 +251,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
247
251
  }], saveEvent: [{
248
252
  type: Output
249
253
  }] } });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL3dpZGdldC1tb2RhbC93aWRnZXQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvd2lkZ2V0LW1vZGFsL3dpZGdldC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sR0FBRyxFQUdILFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFjLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBVyxtQkFBbUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXhFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7O0FBZ0JyRCxNQUFNLE9BQU8sb0JBQW9CO0lBSy9CLElBQW9CLHVCQUF1QixDQUFDLGFBQTJDO1FBQ3JGLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxrQkFB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SUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQXRSVSxvQkFBb0Isa0JBNEhyQixRQUFRO2tHQTVIUCxvQkFBb0IsNE9BRnBCLENBQUMsbUJBQW1CLENBQUMsMEJDekRsQyxxc05Bd0xBOzsyRkQ3SGEsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLG1CQUFtQixDQUFDOzswQkE4SDdCLE1BQU07MkJBQUMsUUFBUTtnUEEzSEYsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDYyx1QkFBdUI7c0JBQTFDLEtBQUs7Z0JBWVcsU0FBUztzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGFzaGJvYXJkSXRlbSwgV2lkZ2V0RGF0YVNvdXJjZSwgV2lkZ2V0TW9kYWxUeXBlfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtMaXN0SXRlbSwgTm90aWZpY2F0aW9uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rhc2hib2FyZC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtDQVJCT05fQ09OU1RBTlRTfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25PdXRwdXQsXG4gIERhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb24sXG4gIERpc3BsYXlUeXBlU3BlY2lmaWNhdGlvbixcbiAgV2lkZ2V0U2VydmljZSxcbiAgV2lkZ2V0VHJhbnNsYXRpb25TZXJ2aWNlLFxufSBmcm9tICdAdmFsdGltby9kYXNoYm9hcmQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXdpZGdldC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93aWRnZXQtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbTm90aWZpY2F0aW9uU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd01vZGFsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQElucHV0KCkgcHVibGljIHR5cGU6IFdpZGdldE1vZGFsVHlwZTtcbiAgQElucHV0KCkgcHVibGljIGRhc2hib2FyZDogRGFzaGJvYXJkSXRlbTtcbiAgQElucHV0KCkgcHVibGljIHdpZGdldEtleSE6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHNldCBlZGl0V2lkZ2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHRoaXMudGl0bGUuc2V0VmFsdWUoY29uZmlndXJhdGlvbi50aXRsZSk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2VTZWxlY3RlZCh7aXRlbToge2tleTogY29uZmlndXJhdGlvbi5kYXRhU291cmNlS2V5fX0gYXMgYW55KTtcbiAgICAgIHRoaXMuZGlzcGxheVR5cGVTZWxlY3RlZCh7aXRlbToge2tleTogY29uZmlndXJhdGlvbi5kaXNwbGF5VHlwZX19IGFzIGFueSk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2VQcmVmaWxsQ29uZmlnJC5uZXh0KGNvbmZpZ3VyYXRpb24uZGF0YVNvdXJjZVByb3BlcnRpZXMpO1xuICAgICAgdGhpcy5kaXNwbGF5VHlwZVByZWZpbGxDb25maWckLm5leHQoY29uZmlndXJhdGlvbi5kaXNwbGF5VHlwZVByb3BlcnRpZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2VQcmVmaWxsQ29uZmlnJC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5kaXNwbGF5VHlwZVByZWZpbGxDb25maWckLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2F2ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxDb25maWd1cmF0aW9uT3V0cHV0PigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgdGl0bGU6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICBkYXRhU291cmNlOiB0aGlzLmZiLmNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICBkaXNwbGF5VHlwZTogdGhpcy5mYi5jb250cm9sKG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvcGVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWREYXRhU291cmNlS2V5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZERpc3BsYXlUeXBlS2V5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFTb3VyY2VJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8TGlzdEl0ZW0+PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UuZ2V0RGF0YVNvdXJjZXMoKSxcbiAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZUtleSQsXG4gICAgdGhpcy53aWRnZXRTZXJ2aWNlLnN1cHBvcnRlZERhdGFTb3VyY2VzJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBmaWx0ZXIoKFtkYXRhU291cmNlc10pID0+ICEhZGF0YVNvdXJjZXMpLFxuICAgIHRhcCgoW2RhdGFTb3VyY2VzLCBzZWxlY3RlZERhdGFTb3VyY2VLZXldKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhU291cmNlS2V5KSB7XG4gICAgICAgIHRoaXMuc2V0Q29tcGF0aWJsZURpc3BsYXlUeXBlcyhkYXRhU291cmNlcywgc2VsZWN0ZWREYXRhU291cmNlS2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzZXRDb21wYXRpYmxlRGlzcGxheVR5cGVzKCk7XG4gICAgICB9XG4gICAgfSksXG4gICAgbWFwKChbZGF0YVNvdXJjZXMsIHNlbGVjdGVkRGF0YVNvdXJjZUtleSwgc3VwcG9ydGVkRGF0YVNvdXJjZXNdKSA9PlxuICAgICAgZGF0YVNvdXJjZXNcbiAgICAgICAgLmZpbHRlcihkYXRhU291cmNlID0+XG4gICAgICAgICAgc3VwcG9ydGVkRGF0YVNvdXJjZXMuZmluZChcbiAgICAgICAgICAgIHN1cHBvcnRlZERhdGFTb3VyY2UgPT4gc3VwcG9ydGVkRGF0YVNvdXJjZS5kYXRhU291cmNlS2V5ID09PSBkYXRhU291cmNlLmtleVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAubWFwKGRhdGFTb3VyY2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiB0aGlzLndpZGdldFRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KCd0aXRsZScsIGRhdGFTb3VyY2Uua2V5KSxcbiAgICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWREYXRhU291cmNlS2V5ID09PSBkYXRhU291cmNlLmtleSxcbiAgICAgICAgICBrZXk6IGRhdGFTb3VyY2Uua2V5LFxuICAgICAgICB9KSlcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFTb3VyY2VQcmVmaWxsQ29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8b2JqZWN0IHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBkaXNwbGF5VHlwZVByZWZpbGxDb25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxvYmplY3QgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb21wYXRpYmxlRGlzcGxheVR5cGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8RGlzcGxheVR5cGVTcGVjaWZpY2F0aW9uPj4oXG4gICAgW11cbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVR5cGVJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8TGlzdEl0ZW0+PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX2NvbXBhdGlibGVEaXNwbGF5VHlwZXMkLFxuICAgIHRoaXMuc2VsZWN0ZWREaXNwbGF5VHlwZUtleSQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbY29tcGF0aWJsZURpc3BsYXlUeXBlcywgc2VsZWN0ZWREaXNwbGF5VHlwZUtleV0pID0+XG4gICAgICBjb21wYXRpYmxlRGlzcGxheVR5cGVzLm1hcChkaXNwbGF5VHlwZSA9PiAoe1xuICAgICAgICBjb250ZW50OiB0aGlzLndpZGdldFRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KCd0aXRsZScsIGRpc3BsYXlUeXBlLmRpc3BsYXlUeXBlS2V5KSxcbiAgICAgICAgc2VsZWN0ZWQ6IGRpc3BsYXlUeXBlLmRpc3BsYXlUeXBlS2V5ID09PSBzZWxlY3RlZERpc3BsYXlUeXBlS2V5LFxuICAgICAgICBrZXk6IGRpc3BsYXlUeXBlLmRpc3BsYXlUeXBlS2V5LFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkaXNwbGF5VHlwZURyb3Bkb3duRGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fY29tcGF0aWJsZURpc3BsYXlUeXBlcyQsXG4gICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2VLZXkkLFxuICBdKS5waXBlKFxuICAgIG1hcChcbiAgICAgIChbY29tcGF0aWJsZURpc3BsYXlUeXBlcywgc2VsZWN0ZWREYXRhU291cmNlS2V5XSkgPT5cbiAgICAgICAgY29tcGF0aWJsZURpc3BsYXlUeXBlcz8ubGVuZ3RoID09PSAwIHx8ICFzZWxlY3RlZERhdGFTb3VyY2VLZXlcbiAgICApLFxuICAgIHRhcChkaXNwbGF5VHlwZURyb3Bkb3duRGlzYWJsZWQgPT4ge1xuICAgICAgaWYgKGRpc3BsYXlUeXBlRHJvcGRvd25EaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlUeXBlPy5kaXNhYmxlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc3BsYXlUeXBlPy5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkYXRhU291cmNlQ29uZmlndXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbmZpZ3VyYXRpb25PdXRwdXQ+KHtcbiAgICB2YWxpZDogZmFsc2UsXG4gICAgZGF0YToge30sXG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVR5cGVDb25maWd1cmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29uZmlndXJhdGlvbk91dHB1dD4oe1xuICAgIHZhbGlkOiBmYWxzZSxcbiAgICBkYXRhOiB7fSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgX29wZW5TdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgcHVibGljIGdldCB0aXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgndGl0bGUnKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgna2V5Jyk7XG4gIH1cbiAgcHVibGljIGdldCBkYXRhU291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdkYXRhU291cmNlJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXlUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdkaXNwbGF5VHlwZScpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlOiBEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRUcmFuc2xhdGlvblNlcnZpY2U6IFdpZGdldFRyYW5zbGF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk9wZW5TdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuJC5uZXh0KGZhbHNlKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2VLZXkkLm5leHQoJycpO1xuICAgICAgdGhpcy5zZWxlY3RlZERpc3BsYXlUeXBlS2V5JC5uZXh0KCcnKTtcbiAgICB9LCBDQVJCT05fQ09OU1RBTlRTLm1vZGFsQW5pbWF0aW9uTXMpO1xuICB9XG5cbiAgcHVibGljIHNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlS2V5JCxcbiAgICAgIHRoaXMuc2VsZWN0ZWREaXNwbGF5VHlwZUtleSQsXG4gICAgICB0aGlzLmRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbiQsXG4gICAgICB0aGlzLmRhdGFTb3VyY2VDb25maWd1cmF0aW9uJCxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoW1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRhU291cmNlS2V5LFxuICAgICAgICAgICAgc2VsZWN0ZWREaXNwbGF5VHlwZUtleSxcbiAgICAgICAgICAgIGRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbixcbiAgICAgICAgICAgIGRhdGFTb3VyY2VDb25maWd1cmF0aW9uLFxuICAgICAgICAgIF0pID0+ICh7XG4gICAgICAgICAgICB0aXRsZTogdGhpcy50aXRsZS52YWx1ZSxcbiAgICAgICAgICAgIGRpc3BsYXlUeXBlOiBzZWxlY3RlZERpc3BsYXlUeXBlS2V5LFxuICAgICAgICAgICAgZGF0YVNvdXJjZUtleTogc2VsZWN0ZWREYXRhU291cmNlS2V5LFxuICAgICAgICAgICAgZGF0YVNvdXJjZVByb3BlcnRpZXM6IHsuLi5kYXRhU291cmNlQ29uZmlndXJhdGlvbi5kYXRhfSxcbiAgICAgICAgICAgIGRpc3BsYXlUeXBlUHJvcGVydGllczogey4uLmRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbi5kYXRhfSxcbiAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICBzd2l0Y2hNYXAod2lkZ2V0VXBkYXRlT2JqZWN0ID0+XG4gICAgICAgICAgdGhpcy50eXBlID09PSAnY3JlYXRlJ1xuICAgICAgICAgICAgPyB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLmNyZWF0ZURhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmQua2V5LFxuICAgICAgICAgICAgICAgIHdpZGdldFVwZGF0ZU9iamVjdFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UudXBkYXRlRGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbihcbiAgICAgICAgICAgICAgICB0aGlzLmRhc2hib2FyZC5rZXksXG4gICAgICAgICAgICAgICAgey4uLndpZGdldFVwZGF0ZU9iamVjdCwga2V5OiB0aGlzLndpZGdldEtleX1cbiAgICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNhdmVFdmVudC5lbWl0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2VcbiAgICAgIC5kZWxldGVEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9uKHRoaXMuZGFzaGJvYXJkLmtleSwgdGhpcy53aWRnZXRLZXkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNhdmVFdmVudC5lbWl0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRhdGFTb3VyY2VTZWxlY3RlZChkYXRhU291cmNlOiBMaXN0SXRlbSk6IHZvaWQge1xuICAgIGlmICghZGF0YVNvdXJjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlS2V5JC5uZXh0KGRhdGFTb3VyY2U/Lml0ZW0/LmtleSk7XG4gICAgdGhpcy5kYXRhU291cmNlLnNldFZhbHVlKGRhdGFTb3VyY2U/Lml0ZW0/LmtleSk7XG4gIH1cblxuICBwdWJsaWMgZGlzcGxheVR5cGVTZWxlY3RlZChkaXNwbGF5VHlwZTogTGlzdEl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoIWRpc3BsYXlUeXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZERpc3BsYXlUeXBlS2V5JC5uZXh0KGRpc3BsYXlUeXBlPy5pdGVtPy5rZXkpO1xuICAgIHRoaXMuZGlzcGxheVR5cGUuc2V0VmFsdWUoZGlzcGxheVR5cGU/Lml0ZW0/LmtleSk7XG4gIH1cblxuICBwdWJsaWMgZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbk91dHB1dCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24kLm5leHQoY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBwdWJsaWMgZGlzcGxheVR5cGVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb25PdXRwdXQpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbiQubmV4dChjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgb3Blbk9wZW5TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fb3BlblN1YnNjcmlwdGlvbiA9IHRoaXMuc2hvd01vZGFsJC5zdWJzY3JpYmUoc2hvdyA9PiB7XG4gICAgICB0aGlzLm9wZW4kLm5leHQoc2hvdyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Q29tcGF0aWJsZURpc3BsYXlUeXBlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jb21wYXRpYmxlRGlzcGxheVR5cGVzJC5uZXh0KFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29tcGF0aWJsZURpc3BsYXlUeXBlcyhcbiAgICBkYXRhU291cmNlczogQXJyYXk8V2lkZ2V0RGF0YVNvdXJjZT4sXG4gICAgc2VsZWN0ZWREYXRhU291cmNlS2V5OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXRTZXJ2aWNlLnN1cHBvcnRlZERpc3BsYXlUeXBlcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoc3VwcG9ydGVkRGlzcGxheVR5cGVzID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGF0YVNvdXJjZSA9IGRhdGFTb3VyY2VzLmZpbmQoc291cmNlID0+IHNvdXJjZS5rZXkgPT09IHNlbGVjdGVkRGF0YVNvdXJjZUtleSk7XG4gICAgICBjb25zdCBhdmFpbGFibGVEYXRhRmVhdHVyZXMgPSBzZWxlY3RlZERhdGFTb3VyY2U/LmRhdGFGZWF0dXJlcztcbiAgICAgIGNvbnN0IGNvbXBhdGlibGVEaXNwbGF5VHlwZXMgPSBzdXBwb3J0ZWREaXNwbGF5VHlwZXMuZmlsdGVyKGRpc3BsYXlUeXBlID0+IHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkRGF0YUZlYXR1cmVzID0gZGlzcGxheVR5cGUucmVxdWlyZWREYXRhRmVhdHVyZXMuZmlsdGVyKGZlYXR1cmUgPT5cbiAgICAgICAgICBhdmFpbGFibGVEYXRhRmVhdHVyZXM/LmluY2x1ZGVzKGZlYXR1cmUpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBzdXBwb3J0ZWREYXRhRmVhdHVyZXMubGVuZ3RoID09PSBkaXNwbGF5VHlwZS5yZXF1aXJlZERhdGFGZWF0dXJlcy5sZW5ndGg7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fY29tcGF0aWJsZURpc3BsYXlUeXBlcyQubmV4dChjb21wYXRpYmxlRGlzcGxheVR5cGVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIntcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgaXNDcmVhdGU6IHR5cGUgPT09ICdjcmVhdGUnLFxuICAgIGlzRGVsZXRlOiB0eXBlID09PSAnZGVsZXRlJyxcbiAgICBpc0VkaXQ6IHR5cGUgPT09ICdlZGl0JyxcbiAgICBvcGVuOiBvcGVuJCB8IGFzeW5jXG4gIH0gYXMgdmFyc1wiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIntcbiAgICAgIGNyZWF0ZTogdmFycy5pc0NyZWF0ZSAmJiAoJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5hZGQnIHwgdHJhbnNsYXRlKSxcbiAgICAgIGRlbGV0ZTogdmFycy5pc0RlbGV0ZSAmJiAoJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5kZWxldGUnIHwgdHJhbnNsYXRlKSxcbiAgICAgIGVkaXQ6IHZhcnMuaXNFZGl0ICYmICgnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmVkaXQnIHwgdHJhbnNsYXRlKVxuICAgIH0gYXMgdGl0bGVzXCJcbiAgPlxuICAgIDxjZHMtbW9kYWxcbiAgICAgICpuZ0lmPVwie1xuICAgICAgICB0aXRsZTogdGl0bGVzLmVkaXQgfHwgdGl0bGVzLmNyZWF0ZSB8fCB0aXRsZXMuZGVsZXRlXG4gICAgICB9IGFzIHRyYW5zbGF0aW9uc1wiXG4gICAgICB2YWx0aW1vQ2RzTW9kYWxcbiAgICAgIFtvcGVuXT1cInZhcnMub3BlblwiXG4gICAgICBzaG93Rm9vdGVyPVwidHJ1ZVwiXG4gICAgICBzaXplPVwibWRcIlxuICAgICAgdGl0bGU9XCJ7eyB0cmFuc2xhdGlvbnMudGl0bGUgfX1cIlxuICAgICAgY2xhc3M9XCJ3aWRnZXQtbW9kYWxcIlxuICAgID5cbiAgICAgIDxjZHMtbW9kYWwtaGVhZGVyIFtzaG93Q2xvc2VCdXR0b25dPVwidHJ1ZVwiIChjbG9zZVNlbGVjdCk9XCJjbG9zZU1vZGFsKClcIj5cbiAgICAgICAgPGgzIGNkc01vZGFsSGVhZGVySGVhZGluZz5cbiAgICAgICAgICB7eyB0cmFuc2xhdGlvbnMudGl0bGUgfX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICAgICAgPHNlY3Rpb24gY2RzTW9kYWxDb250ZW50PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFycy5pc0RlbGV0ZVwiPlxuICAgICAgICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZGVsZXRlRGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19PC9uZy1jb250YWluZXJcbiAgICAgICAgPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YXJzLmlzRWRpdCB8fCB2YXJzLmlzQ3JlYXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIndpZGdldEZvcm07IGNvbnRleHQ6IHt2YXJzOiB2YXJzfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPGNkcy1tb2RhbC1mb290ZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YXJzLmlzRWRpdCB8fCB2YXJzLmlzQ3JlYXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXRCdXR0b25zOyBjb250ZXh0OiB7dmFyczogdmFyc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhcnMuaXNEZWxldGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVsZXRlQnV0dG9uczsgY29udGV4dDoge3ZhcnM6IHZhcnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9jZHMtbW9kYWwtZm9vdGVyPlxuICAgIDwvY2RzLW1vZGFsPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3dpZGdldEZvcm0gbGV0LXZhcnM9XCJ2YXJzXCI+XG4gIDxmb3JtXG4gICAgKm5nSWY9XCJcbiAgICAgIGZvcm0gJiYge1xuICAgICAgICBkYXRhU291cmNlSXRlbXM6IGRhdGFTb3VyY2VJdGVtcyQgfCBhc3luYyxcbiAgICAgICAgZGlzcGxheVR5cGVEcm9wZG93bkRpc2FibGVkOiBkaXNwbGF5VHlwZURyb3Bkb3duRGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgICAgIGRpc3BsYXlUeXBlSXRlbXM6IGRpc3BsYXlUeXBlSXRlbXMkIHwgYXN5bmMsXG4gICAgICAgIHNlbGVjdGVkRGF0YVNvdXJjZUtleTogc2VsZWN0ZWREYXRhU291cmNlS2V5JCB8IGFzeW5jLFxuICAgICAgICBzZWxlY3RlZERpc3BsYXlUeXBlS2V5OiBzZWxlY3RlZERpc3BsYXlUeXBlS2V5JCB8IGFzeW5jXG4gICAgICB9IGFzIG9ic1xuICAgIFwiXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICBjbGFzcz1cImRhc2hib2FyZC1tb2RhbF9fZm9ybVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZWxlbWVudFwiPlxuICAgICAgPGNkcy1sYWJlbFxuICAgICAgICBbaGVscGVyVGV4dF09XCInZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0udGl0bGVIZWxwZXJUZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpbnZhbGlkVGV4dF09XCInZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0udGl0bGVIZWxwZXJUZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpbnZhbGlkXT1cInRpdGxlLmRpcnR5ICYmIHRpdGxlLmludmFsaWRcIlxuICAgICAgPlxuICAgICAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0udGl0bGUnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcbiAgICAgICAgICBbaW52YWxpZF09XCJ0aXRsZS5kaXJ0eSAmJiB0aXRsZS5pbnZhbGlkXCJcbiAgICAgICAgICBbYXR0ci5tb2RhbC1wcmltYXJ5LWZvY3VzXT1cInRydWVcIlxuICAgICAgICAvPlxuICAgICAgPC9jZHMtbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZWxlbWVudFwiICpuZ0lmPVwib2JzLmRhdGFTb3VyY2VJdGVtc1wiPlxuICAgICAgPGNkcy1kcm9wZG93blxuICAgICAgICBbYXBwZW5kSW5saW5lXT1cInRydWVcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRhU291cmNlXCJcbiAgICAgICAgW2hlbHBlclRleHRdPVwiJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLmRhdGFTb3VyY2VIZWxwZXJUZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpbnZhbGlkVGV4dF09XCInZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0uZGF0ZVNvdXJjZUhlbHBlclRleHQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2ludmFsaWRdPVwiZGF0YVNvdXJjZS5kaXJ0eSAmJiBkYXRhU291cmNlLmludmFsaWRcIlxuICAgICAgICBbbGFiZWxdPVwiJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLmRhdGFTb3VyY2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgKHNlbGVjdGVkKT1cImRhdGFTb3VyY2VTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJvYnMuZGF0YVNvdXJjZUl0ZW1zXCIgdHlwZT1cIm11bHRpXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICAgIDwvY2RzLWRyb3Bkb3duPlxuICAgIDwvZGl2PlxuXG4gICAgPHZhbHRpbW8td2lkZ2V0LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyXG4gICAgICAqbmdJZj1cIm9icy5zZWxlY3RlZERhdGFTb3VyY2VLZXlcIlxuICAgICAgW2RhdGFTb3VyY2VLZXldPVwib2JzLnNlbGVjdGVkRGF0YVNvdXJjZUtleVwiXG4gICAgICBbZGlzYWJsZWRdPVwidmFycy5kaXNhYmxlZFwiXG4gICAgICBbcHJlZmlsbENvbmZpZ3VyYXRpb25dPVwiZGF0YVNvdXJjZVByZWZpbGxDb25maWckIHwgYXN5bmNcIlxuICAgICAgKGNvbmZpZ3VyYXRpb25FdmVudCk9XCJkYXRhU291cmNlQ29uZmlndXJhdGlvbigkZXZlbnQpXCJcbiAgICA+PC92YWx0aW1vLXdpZGdldC1jb25maWd1cmF0aW9uLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtX19lbGVtZW50XCIgKm5nSWY9XCJvYnMuZGlzcGxheVR5cGVJdGVtc1wiPlxuICAgICAgPGNkcy1kcm9wZG93blxuICAgICAgICBbYXBwZW5kSW5saW5lXT1cInRydWVcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5VHlwZVwiXG4gICAgICAgIFtoZWxwZXJUZXh0XT1cIidkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS5kaXNwbGF5VHlwZUhlbHBlclRleHQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2ludmFsaWRdPVwiZGlzcGxheVR5cGUuZGlydHkgJiYgZGlzcGxheVR5cGUuaW52YWxpZFwiXG4gICAgICAgIFtpbnZhbGlkVGV4dF09XCInZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0uZGlzcGxheVR5cGVIZWxwZXJUZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtsYWJlbF09XCInZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0uZGlzcGxheVR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgKHNlbGVjdGVkKT1cImRpc3BsYXlUeXBlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwib2JzLmRpc3BsYXlUeXBlSXRlbXNcIiB0eXBlPVwibXVsdGlcIj48L2Nkcy1kcm9wZG93bi1saXN0PlxuICAgICAgPC9jZHMtZHJvcGRvd24+XG4gICAgPC9kaXY+XG5cbiAgICA8dmFsdGltby13aWRnZXQtY29uZmlndXJhdGlvbi1jb250YWluZXJcbiAgICAgICpuZ0lmPVwib2JzLnNlbGVjdGVkRGlzcGxheVR5cGVLZXlcIlxuICAgICAgW2Rpc2FibGVkXT1cInZhcnMuZGlzYWJsZWRcIlxuICAgICAgW2Rpc3BsYXlUeXBlS2V5XT1cIm9icy5zZWxlY3RlZERpc3BsYXlUeXBlS2V5XCJcbiAgICAgIFtwcmVmaWxsQ29uZmlndXJhdGlvbl09XCJkaXNwbGF5VHlwZVByZWZpbGxDb25maWckIHwgYXN5bmNcIlxuICAgICAgKGNvbmZpZ3VyYXRpb25FdmVudCk9XCJkaXNwbGF5VHlwZUNvbmZpZ3VyYXRpb24oJGV2ZW50KVwiXG4gICAgPjwvdmFsdGltby13aWRnZXQtY29uZmlndXJhdGlvbi1jb250YWluZXI+XG4gIDwvZm9ybT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZWRpdEJ1dHRvbnMgbGV0LXZhcnM9XCJ2YXJzXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIntcbiAgICAgIGRhdGFTb3VyY2VDb25maWd1cmF0aW9uOiBkYXRhU291cmNlQ29uZmlndXJhdGlvbiQgfCBhc3luYyxcbiAgICAgIGRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbjogZGlzcGxheVR5cGVDb25maWd1cmF0aW9uJCB8IGFzeW5jXG4gICAgfSBhcyBvYnNcIlxuICA+XG4gICAgPGJ1dHRvbiBjZHNCdXR0b249XCJnaG9zdFwiIFtkaXNhYmxlZF09XCJ2YXJzLmRpc2FibGVkXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPlxuICAgICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgZm9ybS5pbnZhbGlkIHx8XG4gICAgICAgICFvYnMuZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24udmFsaWQgfHxcbiAgICAgICAgIW9icy5kaXNwbGF5VHlwZUNvbmZpZ3VyYXRpb24udmFsaWQgfHxcbiAgICAgICAgdmFycy5kaXNhYmxlZFxuICAgICAgXCJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgID5cbiAgICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuc2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlbGV0ZUJ1dHRvbnMgbGV0LXZhcnM9XCJ2YXJzXCI+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwic2Vjb25kYXJ5XCIgW2Rpc2FibGVkXT1cInZhcnMuZGlzYWJsZWRcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+XG4gICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gY2RzQnV0dG9uPVwiZGFuZ2VyXCIgW2Rpc2FibGVkXT1cInZhcnMuZGlzYWJsZWRcIiAoY2xpY2spPVwiZGVsZXRlKClcIj5cbiAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmRlbGV0ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL3dpZGdldC1tb2RhbC93aWRnZXQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvd2lkZ2V0LW1vZGFsL3dpZGdldC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sR0FBRyxFQUdILFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFjLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBVyxtQkFBbUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXhFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7O0FBZ0JyRCxNQUFNLE9BQU8sb0JBQW9CO0lBSy9CLElBQW9CLHVCQUF1QixDQUFDLGFBQTJDO1FBQ3JGLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxrQkFB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Q0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLE1BQU07UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZO1FBQ3JDLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDOzhHQS9SVSxvQkFBb0Isa0JBNEhyQixRQUFRO2tHQTVIUCxvQkFBb0IsNE9BRnBCLENBQUMsbUJBQW1CLENBQUMsMEJDekRsQyxxc05Bd0xBOzsyRkQ3SGEsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLG1CQUFtQixDQUFDOzswQkE4SDdCLE1BQU07MkJBQUMsUUFBUTtnUEEzSEYsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDYyx1QkFBdUI7c0JBQTFDLEtBQUs7Z0JBWVcsU0FBUztzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGFzaGJvYXJkSXRlbSwgV2lkZ2V0RGF0YVNvdXJjZSwgV2lkZ2V0TW9kYWxUeXBlfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtMaXN0SXRlbSwgTm90aWZpY2F0aW9uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rhc2hib2FyZC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtDQVJCT05fQ09OU1RBTlRTfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25PdXRwdXQsXG4gIERhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb24sXG4gIERpc3BsYXlUeXBlU3BlY2lmaWNhdGlvbixcbiAgV2lkZ2V0U2VydmljZSxcbiAgV2lkZ2V0VHJhbnNsYXRpb25TZXJ2aWNlLFxufSBmcm9tICdAdmFsdGltby9kYXNoYm9hcmQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXdpZGdldC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93aWRnZXQtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbTm90aWZpY2F0aW9uU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd01vZGFsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQElucHV0KCkgcHVibGljIHR5cGU6IFdpZGdldE1vZGFsVHlwZTtcbiAgQElucHV0KCkgcHVibGljIGRhc2hib2FyZDogRGFzaGJvYXJkSXRlbTtcbiAgQElucHV0KCkgcHVibGljIHdpZGdldEtleSE6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHNldCBlZGl0V2lkZ2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHRoaXMudGl0bGUuc2V0VmFsdWUoY29uZmlndXJhdGlvbi50aXRsZSk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2VTZWxlY3RlZCh7aXRlbToge2tleTogY29uZmlndXJhdGlvbi5kYXRhU291cmNlS2V5fX0gYXMgYW55KTtcbiAgICAgIHRoaXMuZGlzcGxheVR5cGVTZWxlY3RlZCh7aXRlbToge2tleTogY29uZmlndXJhdGlvbi5kaXNwbGF5VHlwZX19IGFzIGFueSk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2VQcmVmaWxsQ29uZmlnJC5uZXh0KGNvbmZpZ3VyYXRpb24uZGF0YVNvdXJjZVByb3BlcnRpZXMpO1xuICAgICAgdGhpcy5kaXNwbGF5VHlwZVByZWZpbGxDb25maWckLm5leHQoY29uZmlndXJhdGlvbi5kaXNwbGF5VHlwZVByb3BlcnRpZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2VQcmVmaWxsQ29uZmlnJC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5kaXNwbGF5VHlwZVByZWZpbGxDb25maWckLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2F2ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxDb25maWd1cmF0aW9uT3V0cHV0PigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgdGl0bGU6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICBkYXRhU291cmNlOiB0aGlzLmZiLmNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICBkaXNwbGF5VHlwZTogdGhpcy5mYi5jb250cm9sKG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvcGVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWREYXRhU291cmNlS2V5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZERpc3BsYXlUeXBlS2V5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFTb3VyY2VJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8TGlzdEl0ZW0+PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UuZ2V0RGF0YVNvdXJjZXMoKSxcbiAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZUtleSQsXG4gICAgdGhpcy53aWRnZXRTZXJ2aWNlLnN1cHBvcnRlZERhdGFTb3VyY2VzJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBmaWx0ZXIoKFtkYXRhU291cmNlc10pID0+ICEhZGF0YVNvdXJjZXMpLFxuICAgIHRhcCgoW2RhdGFTb3VyY2VzLCBzZWxlY3RlZERhdGFTb3VyY2VLZXldKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhU291cmNlS2V5KSB7XG4gICAgICAgIHRoaXMuc2V0Q29tcGF0aWJsZURpc3BsYXlUeXBlcyhkYXRhU291cmNlcywgc2VsZWN0ZWREYXRhU291cmNlS2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzZXRDb21wYXRpYmxlRGlzcGxheVR5cGVzKCk7XG4gICAgICB9XG4gICAgfSksXG4gICAgbWFwKChbZGF0YVNvdXJjZXMsIHNlbGVjdGVkRGF0YVNvdXJjZUtleSwgc3VwcG9ydGVkRGF0YVNvdXJjZXNdKSA9PlxuICAgICAgZGF0YVNvdXJjZXNcbiAgICAgICAgLmZpbHRlcihkYXRhU291cmNlID0+XG4gICAgICAgICAgc3VwcG9ydGVkRGF0YVNvdXJjZXMuZmluZChcbiAgICAgICAgICAgIHN1cHBvcnRlZERhdGFTb3VyY2UgPT4gc3VwcG9ydGVkRGF0YVNvdXJjZS5kYXRhU291cmNlS2V5ID09PSBkYXRhU291cmNlLmtleVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAubWFwKGRhdGFTb3VyY2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiB0aGlzLndpZGdldFRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KCd0aXRsZScsIGRhdGFTb3VyY2Uua2V5KSxcbiAgICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWREYXRhU291cmNlS2V5ID09PSBkYXRhU291cmNlLmtleSxcbiAgICAgICAgICBrZXk6IGRhdGFTb3VyY2Uua2V5LFxuICAgICAgICB9KSlcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFTb3VyY2VQcmVmaWxsQ29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8b2JqZWN0IHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBkaXNwbGF5VHlwZVByZWZpbGxDb25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxvYmplY3QgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb21wYXRpYmxlRGlzcGxheVR5cGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8RGlzcGxheVR5cGVTcGVjaWZpY2F0aW9uPj4oXG4gICAgW11cbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVR5cGVJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8TGlzdEl0ZW0+PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX2NvbXBhdGlibGVEaXNwbGF5VHlwZXMkLFxuICAgIHRoaXMuc2VsZWN0ZWREaXNwbGF5VHlwZUtleSQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbY29tcGF0aWJsZURpc3BsYXlUeXBlcywgc2VsZWN0ZWREaXNwbGF5VHlwZUtleV0pID0+XG4gICAgICBjb21wYXRpYmxlRGlzcGxheVR5cGVzLm1hcChkaXNwbGF5VHlwZSA9PiAoe1xuICAgICAgICBjb250ZW50OiB0aGlzLndpZGdldFRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KCd0aXRsZScsIGRpc3BsYXlUeXBlLmRpc3BsYXlUeXBlS2V5KSxcbiAgICAgICAgc2VsZWN0ZWQ6IGRpc3BsYXlUeXBlLmRpc3BsYXlUeXBlS2V5ID09PSBzZWxlY3RlZERpc3BsYXlUeXBlS2V5LFxuICAgICAgICBrZXk6IGRpc3BsYXlUeXBlLmRpc3BsYXlUeXBlS2V5LFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkaXNwbGF5VHlwZURyb3Bkb3duRGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fY29tcGF0aWJsZURpc3BsYXlUeXBlcyQsXG4gICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2VLZXkkLFxuICBdKS5waXBlKFxuICAgIG1hcChcbiAgICAgIChbY29tcGF0aWJsZURpc3BsYXlUeXBlcywgc2VsZWN0ZWREYXRhU291cmNlS2V5XSkgPT5cbiAgICAgICAgY29tcGF0aWJsZURpc3BsYXlUeXBlcz8ubGVuZ3RoID09PSAwIHx8ICFzZWxlY3RlZERhdGFTb3VyY2VLZXlcbiAgICApLFxuICAgIHRhcChkaXNwbGF5VHlwZURyb3Bkb3duRGlzYWJsZWQgPT4ge1xuICAgICAgaWYgKGRpc3BsYXlUeXBlRHJvcGRvd25EaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlUeXBlPy5kaXNhYmxlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc3BsYXlUeXBlPy5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkYXRhU291cmNlQ29uZmlndXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbmZpZ3VyYXRpb25PdXRwdXQ+KHtcbiAgICB2YWxpZDogZmFsc2UsXG4gICAgZGF0YToge30sXG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVR5cGVDb25maWd1cmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29uZmlndXJhdGlvbk91dHB1dD4oe1xuICAgIHZhbGlkOiBmYWxzZSxcbiAgICBkYXRhOiB7fSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgX29wZW5TdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgcHVibGljIGdldCB0aXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgndGl0bGUnKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgna2V5Jyk7XG4gIH1cbiAgcHVibGljIGdldCBkYXRhU291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdkYXRhU291cmNlJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXlUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdkaXNwbGF5VHlwZScpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlOiBEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRUcmFuc2xhdGlvblNlcnZpY2U6IFdpZGdldFRyYW5zbGF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk9wZW5TdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuJC5uZXh0KGZhbHNlKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2VLZXkkLm5leHQoJycpO1xuICAgICAgdGhpcy5zZWxlY3RlZERpc3BsYXlUeXBlS2V5JC5uZXh0KCcnKTtcbiAgICB9LCBDQVJCT05fQ09OU1RBTlRTLm1vZGFsQW5pbWF0aW9uTXMpO1xuICB9XG5cbiAgcHVibGljIHNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlS2V5JCxcbiAgICAgIHRoaXMuc2VsZWN0ZWREaXNwbGF5VHlwZUtleSQsXG4gICAgICB0aGlzLmRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbiQsXG4gICAgICB0aGlzLmRhdGFTb3VyY2VDb25maWd1cmF0aW9uJCxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoW1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRhU291cmNlS2V5LFxuICAgICAgICAgICAgc2VsZWN0ZWREaXNwbGF5VHlwZUtleSxcbiAgICAgICAgICAgIGRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbixcbiAgICAgICAgICAgIGRhdGFTb3VyY2VDb25maWd1cmF0aW9uLFxuICAgICAgICAgIF0pID0+ICh7XG4gICAgICAgICAgICB0aXRsZTogdGhpcy50aXRsZS52YWx1ZSxcbiAgICAgICAgICAgIGRpc3BsYXlUeXBlOiBzZWxlY3RlZERpc3BsYXlUeXBlS2V5LFxuICAgICAgICAgICAgZGF0YVNvdXJjZUtleTogc2VsZWN0ZWREYXRhU291cmNlS2V5LFxuICAgICAgICAgICAgZGF0YVNvdXJjZVByb3BlcnRpZXM6IHsuLi5kYXRhU291cmNlQ29uZmlndXJhdGlvbi5kYXRhfSxcbiAgICAgICAgICAgIGRpc3BsYXlUeXBlUHJvcGVydGllczogey4uLmRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbi5kYXRhfSxcbiAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICBzd2l0Y2hNYXAod2lkZ2V0VXBkYXRlT2JqZWN0ID0+XG4gICAgICAgICAgdGhpcy50eXBlID09PSAnY3JlYXRlJ1xuICAgICAgICAgICAgPyB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLmNyZWF0ZURhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmQua2V5LFxuICAgICAgICAgICAgICAgIHdpZGdldFVwZGF0ZU9iamVjdFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UudXBkYXRlRGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbihcbiAgICAgICAgICAgICAgICB0aGlzLmRhc2hib2FyZC5rZXksXG4gICAgICAgICAgICAgICAgey4uLndpZGdldFVwZGF0ZU9iamVjdCwga2V5OiB0aGlzLndpZGdldEtleX1cbiAgICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNhdmVFdmVudC5lbWl0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2VcbiAgICAgIC5kZWxldGVEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9uKHRoaXMuZGFzaGJvYXJkLmtleSwgdGhpcy53aWRnZXRLZXkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNhdmVFdmVudC5lbWl0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRhdGFTb3VyY2VTZWxlY3RlZChkYXRhU291cmNlOiBMaXN0SXRlbSk6IHZvaWQge1xuICAgIGlmICghZGF0YVNvdXJjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlS2V5JC5uZXh0KGRhdGFTb3VyY2U/Lml0ZW0/LmtleSk7XG4gICAgdGhpcy5kYXRhU291cmNlLnNldFZhbHVlKGRhdGFTb3VyY2U/Lml0ZW0/LmtleSk7XG4gIH1cblxuICBwdWJsaWMgZGlzcGxheVR5cGVTZWxlY3RlZChkaXNwbGF5VHlwZTogTGlzdEl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoIWRpc3BsYXlUeXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZERpc3BsYXlUeXBlS2V5JC5uZXh0KGRpc3BsYXlUeXBlPy5pdGVtPy5rZXkpO1xuICAgIHRoaXMuZGlzcGxheVR5cGUuc2V0VmFsdWUoZGlzcGxheVR5cGU/Lml0ZW0/LmtleSk7XG4gIH1cblxuICBwdWJsaWMgZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbk91dHB1dCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24kLm5leHQoY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBwdWJsaWMgZGlzcGxheVR5cGVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb25PdXRwdXQpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbiQubmV4dChjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgb3Blbk9wZW5TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fb3BlblN1YnNjcmlwdGlvbiA9IHRoaXMuc2hvd01vZGFsJC5zdWJzY3JpYmUoc2hvdyA9PiB7XG4gICAgICB0aGlzLm9wZW4kLm5leHQoc2hvdyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Q29tcGF0aWJsZURpc3BsYXlUeXBlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jb21wYXRpYmxlRGlzcGxheVR5cGVzJC5uZXh0KFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29tcGF0aWJsZURpc3BsYXlUeXBlcyhcbiAgICBkYXRhU291cmNlczogQXJyYXk8V2lkZ2V0RGF0YVNvdXJjZT4sXG4gICAgc2VsZWN0ZWREYXRhU291cmNlS2V5OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXRTZXJ2aWNlLnN1cHBvcnRlZERpc3BsYXlUeXBlcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoc3VwcG9ydGVkRGlzcGxheVR5cGVzID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGF0YVNvdXJjZSA9IGRhdGFTb3VyY2VzLmZpbmQoc291cmNlID0+IHNvdXJjZS5rZXkgPT09IHNlbGVjdGVkRGF0YVNvdXJjZUtleSk7XG4gICAgICBjb25zdCBhdmFpbGFibGVEYXRhRmVhdHVyZXMgPSBzZWxlY3RlZERhdGFTb3VyY2U/LmRhdGFGZWF0dXJlcztcbiAgICAgIGNvbnN0IGNvbXBhdGlibGVEaXNwbGF5VHlwZXMgPSBzdXBwb3J0ZWREaXNwbGF5VHlwZXMuZmlsdGVyKGRpc3BsYXlUeXBlID0+IHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkRGF0YUZlYXR1cmVzID0gZGlzcGxheVR5cGUucmVxdWlyZWREYXRhRmVhdHVyZXMuZmlsdGVyKFxuICAgICAgICAgIHJlcXVpcmVkRGF0YUZlYXR1cmUgPT5cbiAgICAgICAgICAgICEhYXZhaWxhYmxlRGF0YUZlYXR1cmVzPy5zb21lKFxuICAgICAgICAgICAgICBhdmFpbGFibGVEYXRhRmVhdHVyZSA9PlxuICAgICAgICAgICAgICAgIHRoaXMudHJpbUFuZFRvVXBwZXJDYXNlKGF2YWlsYWJsZURhdGFGZWF0dXJlKSA9PT1cbiAgICAgICAgICAgICAgICB0aGlzLnRyaW1BbmRUb1VwcGVyQ2FzZShyZXF1aXJlZERhdGFGZWF0dXJlKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gc3VwcG9ydGVkRGF0YUZlYXR1cmVzLmxlbmd0aCA9PT0gZGlzcGxheVR5cGUucmVxdWlyZWREYXRhRmVhdHVyZXMubGVuZ3RoO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2NvbXBhdGlibGVEaXNwbGF5VHlwZXMkLm5leHQoY29tcGF0aWJsZURpc3BsYXlUeXBlcyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5mb3JtLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmltQW5kVG9VcHBlckNhc2UodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGV4dH1gLnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jLFxuICAgIGlzQ3JlYXRlOiB0eXBlID09PSAnY3JlYXRlJyxcbiAgICBpc0RlbGV0ZTogdHlwZSA9PT0gJ2RlbGV0ZScsXG4gICAgaXNFZGl0OiB0eXBlID09PSAnZWRpdCcsXG4gICAgb3Blbjogb3BlbiQgfCBhc3luY1xuICB9IGFzIHZhcnNcIlxuPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJ7XG4gICAgICBjcmVhdGU6IHZhcnMuaXNDcmVhdGUgJiYgKCdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuYWRkJyB8IHRyYW5zbGF0ZSksXG4gICAgICBkZWxldGU6IHZhcnMuaXNEZWxldGUgJiYgKCdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZGVsZXRlJyB8IHRyYW5zbGF0ZSksXG4gICAgICBlZGl0OiB2YXJzLmlzRWRpdCAmJiAoJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5lZGl0JyB8IHRyYW5zbGF0ZSlcbiAgICB9IGFzIHRpdGxlc1wiXG4gID5cbiAgICA8Y2RzLW1vZGFsXG4gICAgICAqbmdJZj1cIntcbiAgICAgICAgdGl0bGU6IHRpdGxlcy5lZGl0IHx8IHRpdGxlcy5jcmVhdGUgfHwgdGl0bGVzLmRlbGV0ZVxuICAgICAgfSBhcyB0cmFuc2xhdGlvbnNcIlxuICAgICAgdmFsdGltb0Nkc01vZGFsXG4gICAgICBbb3Blbl09XCJ2YXJzLm9wZW5cIlxuICAgICAgc2hvd0Zvb3Rlcj1cInRydWVcIlxuICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgIHRpdGxlPVwie3sgdHJhbnNsYXRpb25zLnRpdGxlIH19XCJcbiAgICAgIGNsYXNzPVwid2lkZ2V0LW1vZGFsXCJcbiAgICA+XG4gICAgICA8Y2RzLW1vZGFsLWhlYWRlciBbc2hvd0Nsb3NlQnV0dG9uXT1cInRydWVcIiAoY2xvc2VTZWxlY3QpPVwiY2xvc2VNb2RhbCgpXCI+XG4gICAgICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+XG4gICAgICAgICAge3sgdHJhbnNsYXRpb25zLnRpdGxlIH19XG4gICAgICAgIDwvaDM+XG4gICAgICA8L2Nkcy1tb2RhbC1oZWFkZXI+XG5cbiAgICAgIDxzZWN0aW9uIGNkc01vZGFsQ29udGVudD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhcnMuaXNEZWxldGVcIj5cbiAgICAgICAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmRlbGV0ZURlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvbmctY29udGFpbmVyXG4gICAgICAgID5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFycy5pc0VkaXQgfHwgdmFycy5pc0NyZWF0ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ3aWRnZXRGb3JtOyBjb250ZXh0OiB7dmFyczogdmFyc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDxjZHMtbW9kYWwtZm9vdGVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFycy5pc0VkaXQgfHwgdmFycy5pc0NyZWF0ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlZGl0QnV0dG9uczsgY29udGV4dDoge3ZhcnM6IHZhcnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YXJzLmlzRGVsZXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRlbGV0ZUJ1dHRvbnM7IGNvbnRleHQ6IHt2YXJzOiB2YXJzfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvY2RzLW1vZGFsLWZvb3Rlcj5cbiAgICA8L2Nkcy1tb2RhbD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN3aWRnZXRGb3JtIGxldC12YXJzPVwidmFyc1wiPlxuICA8Zm9ybVxuICAgICpuZ0lmPVwiXG4gICAgICBmb3JtICYmIHtcbiAgICAgICAgZGF0YVNvdXJjZUl0ZW1zOiBkYXRhU291cmNlSXRlbXMkIHwgYXN5bmMsXG4gICAgICAgIGRpc3BsYXlUeXBlRHJvcGRvd25EaXNhYmxlZDogZGlzcGxheVR5cGVEcm9wZG93bkRpc2FibGVkJCB8IGFzeW5jLFxuICAgICAgICBkaXNwbGF5VHlwZUl0ZW1zOiBkaXNwbGF5VHlwZUl0ZW1zJCB8IGFzeW5jLFxuICAgICAgICBzZWxlY3RlZERhdGFTb3VyY2VLZXk6IHNlbGVjdGVkRGF0YVNvdXJjZUtleSQgfCBhc3luYyxcbiAgICAgICAgc2VsZWN0ZWREaXNwbGF5VHlwZUtleTogc2VsZWN0ZWREaXNwbGF5VHlwZUtleSQgfCBhc3luY1xuICAgICAgfSBhcyBvYnNcbiAgICBcIlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgY2xhc3M9XCJkYXNoYm9hcmQtbW9kYWxfX2Zvcm1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImZvcm1fX2VsZW1lbnRcIj5cbiAgICAgIDxjZHMtbGFiZWxcbiAgICAgICAgW2hlbHBlclRleHRdPVwiJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLnRpdGxlSGVscGVyVGV4dCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaW52YWxpZFRleHRdPVwiJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLnRpdGxlSGVscGVyVGV4dCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaW52YWxpZF09XCJ0aXRsZS5kaXJ0eSAmJiB0aXRsZS5pbnZhbGlkXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLnRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiXG4gICAgICAgICAgW2ludmFsaWRdPVwidGl0bGUuZGlydHkgJiYgdGl0bGUuaW52YWxpZFwiXG4gICAgICAgICAgW2F0dHIubW9kYWwtcHJpbWFyeS1mb2N1c109XCJ0cnVlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm1fX2VsZW1lbnRcIiAqbmdJZj1cIm9icy5kYXRhU291cmNlSXRlbXNcIj5cbiAgICAgIDxjZHMtZHJvcGRvd25cbiAgICAgICAgW2FwcGVuZElubGluZV09XCJ0cnVlXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGF0YVNvdXJjZVwiXG4gICAgICAgIFtoZWxwZXJUZXh0XT1cIidkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS5kYXRhU291cmNlSGVscGVyVGV4dCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaW52YWxpZFRleHRdPVwiJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLmRhdGVTb3VyY2VIZWxwZXJUZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpbnZhbGlkXT1cImRhdGFTb3VyY2UuZGlydHkgJiYgZGF0YVNvdXJjZS5pbnZhbGlkXCJcbiAgICAgICAgW2xhYmVsXT1cIidkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS5kYXRhU291cmNlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJkYXRhU291cmNlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwib2JzLmRhdGFTb3VyY2VJdGVtc1wiIHR5cGU9XCJtdWx0aVwiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgICA8L2Nkcy1kcm9wZG93bj5cbiAgICA8L2Rpdj5cblxuICAgIDx2YWx0aW1vLXdpZGdldC1jb25maWd1cmF0aW9uLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJvYnMuc2VsZWN0ZWREYXRhU291cmNlS2V5XCJcbiAgICAgIFtkYXRhU291cmNlS2V5XT1cIm9icy5zZWxlY3RlZERhdGFTb3VyY2VLZXlcIlxuICAgICAgW2Rpc2FibGVkXT1cInZhcnMuZGlzYWJsZWRcIlxuICAgICAgW3ByZWZpbGxDb25maWd1cmF0aW9uXT1cImRhdGFTb3VyY2VQcmVmaWxsQ29uZmlnJCB8IGFzeW5jXCJcbiAgICAgIChjb25maWd1cmF0aW9uRXZlbnQpPVwiZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24oJGV2ZW50KVwiXG4gICAgPjwvdmFsdGltby13aWRnZXQtY29uZmlndXJhdGlvbi1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZWxlbWVudFwiICpuZ0lmPVwib2JzLmRpc3BsYXlUeXBlSXRlbXNcIj5cbiAgICAgIDxjZHMtZHJvcGRvd25cbiAgICAgICAgW2FwcGVuZElubGluZV09XCJ0cnVlXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlzcGxheVR5cGVcIlxuICAgICAgICBbaGVscGVyVGV4dF09XCInZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0uZGlzcGxheVR5cGVIZWxwZXJUZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpbnZhbGlkXT1cImRpc3BsYXlUeXBlLmRpcnR5ICYmIGRpc3BsYXlUeXBlLmludmFsaWRcIlxuICAgICAgICBbaW52YWxpZFRleHRdPVwiJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLmRpc3BsYXlUeXBlSGVscGVyVGV4dCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbbGFiZWxdPVwiJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLmRpc3BsYXlUeXBlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJkaXNwbGF5VHlwZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8Y2RzLWRyb3Bkb3duLWxpc3QgW2l0ZW1zXT1cIm9icy5kaXNwbGF5VHlwZUl0ZW1zXCIgdHlwZT1cIm11bHRpXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICAgIDwvY2RzLWRyb3Bkb3duPlxuICAgIDwvZGl2PlxuXG4gICAgPHZhbHRpbW8td2lkZ2V0LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyXG4gICAgICAqbmdJZj1cIm9icy5zZWxlY3RlZERpc3BsYXlUeXBlS2V5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJ2YXJzLmRpc2FibGVkXCJcbiAgICAgIFtkaXNwbGF5VHlwZUtleV09XCJvYnMuc2VsZWN0ZWREaXNwbGF5VHlwZUtleVwiXG4gICAgICBbcHJlZmlsbENvbmZpZ3VyYXRpb25dPVwiZGlzcGxheVR5cGVQcmVmaWxsQ29uZmlnJCB8IGFzeW5jXCJcbiAgICAgIChjb25maWd1cmF0aW9uRXZlbnQpPVwiZGlzcGxheVR5cGVDb25maWd1cmF0aW9uKCRldmVudClcIlxuICAgID48L3ZhbHRpbW8td2lkZ2V0LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyPlxuICA8L2Zvcm0+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VkaXRCdXR0b25zIGxldC12YXJzPVwidmFyc1wiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJ7XG4gICAgICBkYXRhU291cmNlQ29uZmlndXJhdGlvbjogZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24kIHwgYXN5bmMsXG4gICAgICBkaXNwbGF5VHlwZUNvbmZpZ3VyYXRpb246IGRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbiQgfCBhc3luY1xuICAgIH0gYXMgb2JzXCJcbiAgPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwiZ2hvc3RcIiBbZGlzYWJsZWRdPVwidmFycy5kaXNhYmxlZFwiIChjbGljayk9XCJjbG9zZU1vZGFsKClcIj5cbiAgICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIGZvcm0uaW52YWxpZCB8fFxuICAgICAgICAhb2JzLmRhdGFTb3VyY2VDb25maWd1cmF0aW9uLnZhbGlkIHx8XG4gICAgICAgICFvYnMuZGlzcGxheVR5cGVDb25maWd1cmF0aW9uLnZhbGlkIHx8XG4gICAgICAgIHZhcnMuZGlzYWJsZWRcbiAgICAgIFwiXG4gICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICA+XG4gICAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLnNhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWxldGVCdXR0b25zIGxldC12YXJzPVwidmFyc1wiPlxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInNlY29uZGFyeVwiIFtkaXNhYmxlZF09XCJ2YXJzLmRpc2FibGVkXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPlxuICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIGNkc0J1dHRvbj1cImRhbmdlclwiIFtkaXNhYmxlZF09XCJ2YXJzLmRpc2FibGVkXCIgKGNsaWNrKT1cImRlbGV0ZSgpXCI+XG4gICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5kZWxldGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==