@valtimo/task-management 12.14.0 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/fesm2022/valtimo-task-management.mjs +144 -343
  2. package/fesm2022/valtimo-task-management.mjs.map +1 -1
  3. package/lib/components/index.d.ts +3 -4
  4. package/lib/components/index.d.ts.map +1 -1
  5. package/lib/components/task-management-column-modal/task-management-column-modal.component.d.ts +14 -14
  6. package/lib/components/task-management-column-modal/task-management-column-modal.component.d.ts.map +1 -1
  7. package/lib/components/task-management-columns/task-management-columns.component.d.ts +10 -12
  8. package/lib/components/task-management-columns/task-management-columns.component.d.ts.map +1 -1
  9. package/lib/components/task-management-detail/task-management-detail.component.d.ts +4 -15
  10. package/lib/components/task-management-detail/task-management-detail.component.d.ts.map +1 -1
  11. package/lib/components/task-management-search-fields/task-management-search-fields.component.d.ts +1 -1
  12. package/lib/components/task-management-search-fields/task-management-search-fields.component.d.ts.map +1 -1
  13. package/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.d.ts +9 -11
  14. package/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.d.ts.map +1 -1
  15. package/lib/services/task-management-api.service.d.ts +6 -5
  16. package/lib/services/task-management-api.service.d.ts.map +1 -1
  17. package/lib/services/task-management-search-fields.service.d.ts +3 -3
  18. package/lib/services/task-management-search-fields.service.d.ts.map +1 -1
  19. package/package.json +4 -6
  20. package/public_api.d.ts +0 -1
  21. package/public_api.d.ts.map +1 -1
  22. package/esm2022/lib/components/index.mjs +0 -21
  23. package/esm2022/lib/components/task-management/index.mjs +0 -17
  24. package/esm2022/lib/components/task-management/task-management.component.mjs +0 -73
  25. package/esm2022/lib/components/task-management-column-modal/index.mjs +0 -17
  26. package/esm2022/lib/components/task-management-column-modal/task-management-column-modal.component.mjs +0 -373
  27. package/esm2022/lib/components/task-management-columns/index.mjs +0 -17
  28. package/esm2022/lib/components/task-management-columns/task-management-columns.component.mjs +0 -218
  29. package/esm2022/lib/components/task-management-detail/index.mjs +0 -17
  30. package/esm2022/lib/components/task-management-detail/task-management-detail.component.mjs +0 -68
  31. package/esm2022/lib/components/task-management-search-fields/task-management-search-fields.component.mjs +0 -178
  32. package/esm2022/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.mjs +0 -359
  33. package/esm2022/lib/models/index.mjs +0 -17
  34. package/esm2022/lib/models/task-management.model.mjs +0 -22
  35. package/esm2022/lib/services/index.mjs +0 -19
  36. package/esm2022/lib/services/task-management-api.service.mjs +0 -48
  37. package/esm2022/lib/services/task-management-search-fields.service.mjs +0 -47
  38. package/esm2022/lib/services/task-management.service.mjs +0 -36
  39. package/esm2022/lib/task-management-routing.module.mjs +0 -50
  40. package/esm2022/lib/task-management.module.mjs +0 -31
  41. package/esm2022/public_api.mjs +0 -23
  42. package/esm2022/valtimo-task-management.mjs +0 -5
  43. package/lib/components/task-management/index.d.ts +0 -2
  44. package/lib/components/task-management/index.d.ts.map +0 -1
  45. package/lib/components/task-management/task-management.component.d.ts +0 -20
  46. package/lib/components/task-management/task-management.component.d.ts.map +0 -1
  47. package/lib/components/task-management-column-modal/index.d.ts +0 -2
  48. package/lib/components/task-management-column-modal/index.d.ts.map +0 -1
  49. package/lib/components/task-management-columns/index.d.ts +0 -2
  50. package/lib/components/task-management-columns/index.d.ts.map +0 -1
  51. package/lib/components/task-management-detail/index.d.ts +0 -2
  52. package/lib/components/task-management-detail/index.d.ts.map +0 -1
  53. package/lib/task-management-routing.module.d.ts +0 -9
  54. package/lib/task-management-routing.module.d.ts.map +0 -1
  55. package/lib/task-management.module.d.ts +0 -9
  56. package/lib/task-management.module.d.ts.map +0 -1
@@ -1,218 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
17
- import { CARBON_CONSTANTS, CARBON_THEME, CarbonListModule, ConfirmationModalModule, MoveRowDirection, } from '@valtimo/components';
18
- import { CommonModule } from '@angular/common';
19
- import { TranslateModule } from '@ngx-translate/core';
20
- import { ButtonModule, IconModule, TabsModule } from 'carbon-components-angular';
21
- import { TaskManagementService } from '../../services';
22
- import { BehaviorSubject, combineLatest, filter, map, Subject, switchMap, take, tap, } from 'rxjs';
23
- import { TaskManagementColumnModalComponent } from '../task-management-column-modal/task-management-column-modal.component';
24
- import * as i0 from "@angular/core";
25
- import * as i1 from "@angular/router";
26
- import * as i2 from "../../services";
27
- import * as i3 from "@ngx-translate/core";
28
- import * as i4 from "@angular/common";
29
- import * as i5 from "@valtimo/components";
30
- import * as i6 from "carbon-components-angular";
31
- export class TaskManagementColumnsComponent {
32
- constructor(route, taskManagementApiService, translateService) {
33
- this.route = route;
34
- this.taskManagementApiService = taskManagementApiService;
35
- this.translateService = translateService;
36
- this.carbonTheme = CARBON_THEME.G10;
37
- this._refreshColumns$ = new BehaviorSubject(null);
38
- this.documentDefinitionName$ = this.route.params.pipe(map(params => params?.name), filter(name => !!name));
39
- this.loadingColumns$ = new BehaviorSubject(true);
40
- this.selectedTaskListColumn$ = new Subject();
41
- this.cachedTaskListColumns$ = new BehaviorSubject([]);
42
- this.taskListColumns$ = combineLatest([
43
- this.documentDefinitionName$,
44
- this._refreshColumns$,
45
- this.translateService.stream('key'),
46
- ]).pipe(tap(([_, refresh]) => {
47
- if (refresh !== 'noAnimation')
48
- this.loadingColumns$.next(true);
49
- }), switchMap(([documentDefinitionName]) => this.taskManagementApiService.getTaskListColumns(documentDefinitionName)), tap(columns => {
50
- this.cachedTaskListColumns$.next(columns);
51
- }), map(columns => columns.map(column => ({
52
- ...column,
53
- title: column.title || '-',
54
- sortable: column.sortable
55
- ? this.translateService.instant('listColumn.sortableYes')
56
- : this.translateService.instant('listColumn.sortableNo'),
57
- defaultSort: (column.defaultSort === 'ASC' &&
58
- this.translateService.instant('listColumn.sortableAsc')) ||
59
- (column.defaultSort === 'DESC' &&
60
- this.translateService.instant('listColumn.sortableDesc')) ||
61
- '-',
62
- displayType: this.translateService.instant(`listColumnDisplayType.${column?.displayType?.type}`),
63
- displayTypeParameters: this.getDisplayTypeParametersView(column.displayType.displayTypeParameters),
64
- }))), tap(() => {
65
- this.enable();
66
- this.loadingColumns$.next(false);
67
- }));
68
- this.showDeleteModal$ = new Subject();
69
- this.deleteRowKey$ = new BehaviorSubject('');
70
- this.disabled$ = new BehaviorSubject(true);
71
- this.fields = [
72
- {
73
- viewType: 'string',
74
- sortable: false,
75
- key: 'title',
76
- label: 'listColumn.title',
77
- },
78
- {
79
- viewType: 'string',
80
- sortable: false,
81
- key: 'key',
82
- label: 'listColumn.key',
83
- },
84
- {
85
- viewType: 'string',
86
- sortable: false,
87
- key: 'path',
88
- label: 'listColumn.path',
89
- },
90
- {
91
- viewType: 'string',
92
- sortable: false,
93
- key: 'displayType',
94
- label: 'listColumn.displayType',
95
- },
96
- {
97
- viewType: 'string',
98
- sortable: false,
99
- key: 'displayTypeParameters',
100
- label: 'listColumn.displayTypeParameters',
101
- },
102
- {
103
- viewType: 'string',
104
- sortable: false,
105
- key: 'sortable',
106
- label: 'listColumn.sortable',
107
- },
108
- {
109
- viewType: 'string',
110
- sortable: false,
111
- key: 'defaultSort',
112
- label: 'listColumn.defaultSort',
113
- },
114
- ];
115
- this.actionItems = [
116
- {
117
- label: 'interface.delete',
118
- callback: this.deleteRow.bind(this),
119
- type: 'danger',
120
- },
121
- ];
122
- this.modalType$ = new Subject();
123
- this.showModal$ = new Subject();
124
- }
125
- refreshColumns(noAnimation = false) {
126
- this._refreshColumns$.next(noAnimation ? 'noAnimation' : null);
127
- }
128
- deleteRow(taskListColumn) {
129
- this.showDeleteModal$.next(true);
130
- this.deleteRowKey$.next(taskListColumn.key);
131
- }
132
- onMoveRowClick(event, documentDefinitionName) {
133
- const { direction, index } = event;
134
- this.disable();
135
- this.cachedTaskListColumns$
136
- .pipe(take(1), switchMap(taskListColumns => this.taskManagementApiService.swapTaskListColumns(documentDefinitionName, taskListColumns[index], taskListColumns[direction === MoveRowDirection.UP ? index - 1 : index + 1])))
137
- .subscribe({
138
- next: () => {
139
- this.refreshColumns(true);
140
- },
141
- error: () => this.enable(),
142
- });
143
- }
144
- columnRowClicked(row) {
145
- this.cachedTaskListColumns$.pipe(take(1)).subscribe(cachedTaskListColumns => {
146
- const selectedTaskListColumn = cachedTaskListColumns.find(column => column.key === row.key);
147
- this.selectedTaskListColumn$.next(selectedTaskListColumn);
148
- this.showModal('edit');
149
- });
150
- }
151
- showModal(type) {
152
- this.modalType$.next(type);
153
- this.showModal$.next(true);
154
- }
155
- onModalCloseEvent(event) {
156
- this.showModal$.next(false);
157
- if (event === 'refresh') {
158
- this.disable();
159
- this.refreshColumns();
160
- }
161
- setTimeout(() => {
162
- this.clearSelectedTaskListColumn();
163
- }, CARBON_CONSTANTS.modalAnimationMs);
164
- }
165
- deleteRowConfirmation(columnKey, documentDefinitionName) {
166
- this.disable();
167
- this.taskManagementApiService
168
- .deleteTaskListColumn(documentDefinitionName, columnKey)
169
- .subscribe({
170
- next: () => {
171
- this.refreshColumns(true);
172
- },
173
- error: () => this.enable(),
174
- });
175
- }
176
- getDisplayTypeParametersView(displayTypeParameters) {
177
- if (displayTypeParameters?.dateFormat) {
178
- return displayTypeParameters.dateFormat;
179
- }
180
- else if (displayTypeParameters?.enum) {
181
- return Object.keys(displayTypeParameters.enum).reduce((acc, curr) => {
182
- const keyValuePairString = `${curr}: ${displayTypeParameters.enum[curr]}`;
183
- if (!acc) {
184
- return `${keyValuePairString}`;
185
- }
186
- return `${acc}, ${keyValuePairString}`;
187
- }, '');
188
- }
189
- return '-';
190
- }
191
- disable() {
192
- this.disabled$.next(true);
193
- }
194
- enable() {
195
- this.disabled$.next(false);
196
- }
197
- clearSelectedTaskListColumn() {
198
- this.selectedTaskListColumn$.next(null);
199
- }
200
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskManagementColumnsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.TaskManagementApiService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TaskManagementColumnsComponent, isStandalone: true, selector: "valtimo-task-management-columns", inputs: { carbonTheme: "carbonTheme" }, providers: [TaskManagementService], 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 taskListColumns: taskListColumns$ | async,\n cachedTaskListColumns: cachedTaskListColumns$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n loadingColumns: loadingColumns$ | async,\n modalType: modalType$ | async,\n showModal: showModal$ | async,\n disabled: disabled$ | async,\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n\n <valtimo-task-management-column-modal\n [taskListColumns]=\"obs.cachedTaskListColumns\"\n [type]=\"obs.modalType\"\n [show]=\"obs.showModal\"\n [documentDefinitionName]=\"obs.documentDefinitionName\"\n [selectedTaskListColumn]=\"selectedTaskListColumn$ | async\"\n (closeEvent)=\"onModalCloseEvent($event)\"\n ></valtimo-task-management-column-modal>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event, obs.documentDefinitionName)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.taskListColumns\"\n [loading]=\"obs.loadingColumns\"\n [fields]=\"fields\"\n [header]=\"false\"\n [movingRowsEnabled]=\"true\"\n (rowClicked)=\"columnRowClicked($event)\"\n (moveRow)=\"onMoveRowClick($event, obs.documentDefinitionName)\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"primary\" (click)=\"showModal('add')\" [disabled]=\"obs.disabled\">\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i5.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: i5.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: TaskManagementColumnModalComponent, selector: "valtimo-task-management-column-modal", inputs: ["carbonTheme", "taskListColumns", "type", "show", "documentDefinitionName", "selectedTaskListColumn"], outputs: ["closeEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i5.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
202
- }
203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskManagementColumnsComponent, decorators: [{
204
- type: Component,
205
- args: [{ selector: 'valtimo-task-management-columns', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
206
- CommonModule,
207
- CarbonListModule,
208
- TranslateModule,
209
- TabsModule,
210
- TaskManagementColumnModalComponent,
211
- ButtonModule,
212
- IconModule,
213
- ConfirmationModalModule,
214
- ], providers: [TaskManagementService], 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 taskListColumns: taskListColumns$ | async,\n cachedTaskListColumns: cachedTaskListColumns$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n loadingColumns: loadingColumns$ | async,\n modalType: modalType$ | async,\n showModal: showModal$ | async,\n disabled: disabled$ | async,\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n\n <valtimo-task-management-column-modal\n [taskListColumns]=\"obs.cachedTaskListColumns\"\n [type]=\"obs.modalType\"\n [show]=\"obs.showModal\"\n [documentDefinitionName]=\"obs.documentDefinitionName\"\n [selectedTaskListColumn]=\"selectedTaskListColumn$ | async\"\n (closeEvent)=\"onModalCloseEvent($event)\"\n ></valtimo-task-management-column-modal>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event, obs.documentDefinitionName)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.taskListColumns\"\n [loading]=\"obs.loadingColumns\"\n [fields]=\"fields\"\n [header]=\"false\"\n [movingRowsEnabled]=\"true\"\n (rowClicked)=\"columnRowClicked($event)\"\n (moveRow)=\"onMoveRowClick($event, obs.documentDefinitionName)\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"primary\" (click)=\"showModal('add')\" [disabled]=\"obs.disabled\">\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n" }]
215
- }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.TaskManagementApiService }, { type: i3.TranslateService }], propDecorators: { carbonTheme: [{
216
- type: Input
217
- }] } });
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1tYW5hZ2VtZW50LWNvbHVtbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby90YXNrLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL3Rhc2stbWFuYWdlbWVudC1jb2x1bW5zL3Rhc2stbWFuYWdlbWVudC1jb2x1bW5zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vdGFzay1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy90YXNrLW1hbmFnZW1lbnQtY29sdW1ucy90YXNrLW1hbmFnZW1lbnQtY29sdW1ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGdCQUFnQixFQUVoQix1QkFBdUIsRUFDdkIsZ0JBQWdCLEdBRWpCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0UsT0FBTyxFQUEyQixxQkFBcUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLE1BQU0sRUFDTixHQUFHLEVBRUgsT0FBTyxFQUNQLFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBUWQsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1B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QUM7SUFFTyxPQUFPO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVPLE1BQU07UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQzsrR0FqT1UsOEJBQThCO21HQUE5Qiw4QkFBOEIsc0hBRjlCLENBQUMscUJBQXFCLENBQUMsMEJDbEVwQyw4N0ZBOEVBLDJDRHJCSSxZQUFZLDhWQUNaLGdCQUFnQix3MUJBQ2hCLGVBQWUsMkZBQ2YsVUFBVSwrQkFDVixrQ0FBa0MseU5BQ2xDLFlBQVksZ01BQ1osVUFBVSw0TkFDVix1QkFBdUI7OzRGQUlkLDhCQUE4QjtrQkFqQjFDLFNBQVM7K0JBQ0UsaUNBQWlDLGNBRS9CLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixVQUFVO3dCQUNWLGtDQUFrQzt3QkFDbEMsWUFBWTt3QkFDWixVQUFVO3dCQUNWLHVCQUF1QjtxQkFDeEIsYUFDVSxDQUFDLHFCQUFxQixDQUFDO3lKQUdsQixXQUFXO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3Rpb25JdGVtLFxuICBDQVJCT05fQ09OU1RBTlRTLFxuICBDQVJCT05fVEhFTUUsXG4gIENhcmJvbkxpc3RNb2R1bGUsXG4gIENvbHVtbkNvbmZpZyxcbiAgQ29uZmlybWF0aW9uTW9kYWxNb2R1bGUsXG4gIE1vdmVSb3dEaXJlY3Rpb24sXG4gIE1vdmVSb3dFdmVudCxcbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBJY29uTW9kdWxlLCBUYWJzTW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7VGFza01hbmFnZW1lbnRBcGlTZXJ2aWNlLCBUYXNrTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBUYXNrTGlzdENvbHVtbixcbiAgVGFza0xpc3RDb2x1bW5EaXNwbGF5VHlwZVBhcmFtZXRlcnMsXG4gIFRhc2tMaXN0Q29sdW1uTW9kYWxDbG9zZUV2ZW50LFxuICBUYXNrTGlzdENvbHVtbk1vZGFsVHlwZSxcbn0gZnJvbSAnQHZhbHRpbW8vdGFzayc7XG5pbXBvcnQge1Rhc2tNYW5hZ2VtZW50Q29sdW1uTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL3Rhc2stbWFuYWdlbWVudC1jb2x1bW4tbW9kYWwvdGFzay1tYW5hZ2VtZW50LWNvbHVtbi1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXRhc2stbWFuYWdlbWVudC1jb2x1bW5zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stbWFuYWdlbWVudC1jb2x1bW5zLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgVGFic01vZHVsZSxcbiAgICBUYXNrTWFuYWdlbWVudENvbHVtbk1vZGFsQ29tcG9uZW50LFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIENvbmZpcm1hdGlvbk1vZGFsTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtUYXNrTWFuYWdlbWVudFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBUYXNrTWFuYWdlbWVudENvbHVtbnNDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgY2FyYm9uVGhlbWU6IENBUkJPTl9USEVNRSA9IENBUkJPTl9USEVNRS5HMTA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaENvbHVtbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudWxsIHwgJ25vQW5pbWF0aW9uJz4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5uYW1lKSxcbiAgICBmaWx0ZXIobmFtZSA9PiAhIW5hbWUpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmdDb2x1bW5zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkVGFza0xpc3RDb2x1bW4kID0gbmV3IFN1YmplY3Q8VGFza0xpc3RDb2x1bW4+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhY2hlZFRhc2tMaXN0Q29sdW1ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhc2tMaXN0Q29sdW1uW10+KFtdKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGFza0xpc3RDb2x1bW5zJDogT2JzZXJ2YWJsZTxUYXNrTGlzdENvbHVtbltdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQsXG4gICAgdGhpcy5fcmVmcmVzaENvbHVtbnMkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIHRhcCgoW18sIHJlZnJlc2hdKSA9PiB7XG4gICAgICBpZiAocmVmcmVzaCAhPT0gJ25vQW5pbWF0aW9uJykgdGhpcy5sb2FkaW5nQ29sdW1ucyQubmV4dCh0cnVlKTtcbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoKFtkb2N1bWVudERlZmluaXRpb25OYW1lXSkgPT5cbiAgICAgIHRoaXMudGFza01hbmFnZW1lbnRBcGlTZXJ2aWNlLmdldFRhc2tMaXN0Q29sdW1ucyhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICksXG4gICAgdGFwKGNvbHVtbnMgPT4ge1xuICAgICAgdGhpcy5jYWNoZWRUYXNrTGlzdENvbHVtbnMkLm5leHQoY29sdW1ucyk7XG4gICAgfSksXG4gICAgbWFwKGNvbHVtbnMgPT5cbiAgICAgIGNvbHVtbnMubWFwKGNvbHVtbiA9PiAoe1xuICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgIHRpdGxlOiBjb2x1bW4udGl0bGUgfHwgJy0nLFxuICAgICAgICBzb3J0YWJsZTogY29sdW1uLnNvcnRhYmxlXG4gICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnbGlzdENvbHVtbi5zb3J0YWJsZVllcycpXG4gICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnbGlzdENvbHVtbi5zb3J0YWJsZU5vJyksXG4gICAgICAgIGRlZmF1bHRTb3J0OlxuICAgICAgICAgIChjb2x1bW4uZGVmYXVsdFNvcnQgPT09ICdBU0MnICYmXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnbGlzdENvbHVtbi5zb3J0YWJsZUFzYycpKSB8fFxuICAgICAgICAgIChjb2x1bW4uZGVmYXVsdFNvcnQgPT09ICdERVNDJyAmJlxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2xpc3RDb2x1bW4uc29ydGFibGVEZXNjJykpIHx8XG4gICAgICAgICAgJy0nLFxuICAgICAgICBkaXNwbGF5VHlwZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgYGxpc3RDb2x1bW5EaXNwbGF5VHlwZS4ke2NvbHVtbj8uZGlzcGxheVR5cGU/LnR5cGV9YFxuICAgICAgICApLFxuICAgICAgICBkaXNwbGF5VHlwZVBhcmFtZXRlcnM6IHRoaXMuZ2V0RGlzcGxheVR5cGVQYXJhbWV0ZXJzVmlldyhcbiAgICAgICAgICBjb2x1bW4uZGlzcGxheVR5cGUuZGlzcGxheVR5cGVQYXJhbWV0ZXJzXG4gICAgICAgICksXG4gICAgICB9KSlcbiAgICApLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmVuYWJsZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nQ29sdW1ucyQubmV4dChmYWxzZSk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0RlbGV0ZU1vZGFsJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVSb3dLZXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzOiBBcnJheTxDb2x1bW5Db25maWc+ID0gW1xuICAgIHtcbiAgICAgIHZpZXdUeXBlOiAnc3RyaW5nJyxcbiAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgIGtleTogJ3RpdGxlJyxcbiAgICAgIGxhYmVsOiAnbGlzdENvbHVtbi50aXRsZScsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogJ3N0cmluZycsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBrZXk6ICdrZXknLFxuICAgICAgbGFiZWw6ICdsaXN0Q29sdW1uLmtleScsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogJ3N0cmluZycsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBrZXk6ICdwYXRoJyxcbiAgICAgIGxhYmVsOiAnbGlzdENvbHVtbi5wYXRoJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZpZXdUeXBlOiAnc3RyaW5nJyxcbiAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgIGtleTogJ2Rpc3BsYXlUeXBlJyxcbiAgICAgIGxhYmVsOiAnbGlzdENvbHVtbi5kaXNwbGF5VHlwZScsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogJ3N0cmluZycsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBrZXk6ICdkaXNwbGF5VHlwZVBhcmFtZXRlcnMnLFxuICAgICAgbGFiZWw6ICdsaXN0Q29sdW1uLmRpc3BsYXlUeXBlUGFyYW1ldGVycycsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogJ3N0cmluZycsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBrZXk6ICdzb3J0YWJsZScsXG4gICAgICBsYWJlbDogJ2xpc3RDb2x1bW4uc29ydGFibGUnLFxuICAgIH0sXG4gICAge1xuICAgICAgdmlld1R5cGU6ICdzdHJpbmcnLFxuICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAga2V5OiAnZGVmYXVsdFNvcnQnLFxuICAgICAgbGFiZWw6ICdsaXN0Q29sdW1uLmRlZmF1bHRTb3J0JyxcbiAgICB9LFxuICBdO1xuXG4gIHB1YmxpYyByZWFkb25seSBhY3Rpb25JdGVtczogQWN0aW9uSXRlbVtdID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnaW50ZXJmYWNlLmRlbGV0ZScsXG4gICAgICBjYWxsYmFjazogdGhpcy5kZWxldGVSb3cuYmluZCh0aGlzKSxcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgIH0sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IG1vZGFsVHlwZSQgPSBuZXcgU3ViamVjdDxUYXNrTGlzdENvbHVtbk1vZGFsVHlwZT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dNb2RhbCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFza01hbmFnZW1lbnRBcGlTZXJ2aWNlOiBUYXNrTWFuYWdlbWVudEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgcmVmcmVzaENvbHVtbnMobm9BbmltYXRpb24gPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMuX3JlZnJlc2hDb2x1bW5zJC5uZXh0KG5vQW5pbWF0aW9uID8gJ25vQW5pbWF0aW9uJyA6IG51bGwpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVJvdyh0YXNrTGlzdENvbHVtbjogVGFza0xpc3RDb2x1bW4pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dEZWxldGVNb2RhbCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlbGV0ZVJvd0tleSQubmV4dCh0YXNrTGlzdENvbHVtbi5rZXkpO1xuICB9XG5cbiAgcHVibGljIG9uTW92ZVJvd0NsaWNrKGV2ZW50OiBNb3ZlUm93RXZlbnQsIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHtkaXJlY3Rpb24sIGluZGV4fSA9IGV2ZW50O1xuXG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLmNhY2hlZFRhc2tMaXN0Q29sdW1ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAodGFza0xpc3RDb2x1bW5zID0+XG4gICAgICAgICAgdGhpcy50YXNrTWFuYWdlbWVudEFwaVNlcnZpY2Uuc3dhcFRhc2tMaXN0Q29sdW1ucyhcbiAgICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICB0YXNrTGlzdENvbHVtbnNbaW5kZXhdLFxuICAgICAgICAgICAgdGFza0xpc3RDb2x1bW5zW2RpcmVjdGlvbiA9PT0gTW92ZVJvd0RpcmVjdGlvbi5VUCA/IGluZGV4IC0gMSA6IGluZGV4ICsgMV1cbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoQ29sdW1ucyh0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMuZW5hYmxlKCksXG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjb2x1bW5Sb3dDbGlja2VkKHJvdzoge2tleTogc3RyaW5nfSk6IHZvaWQge1xuICAgIHRoaXMuY2FjaGVkVGFza0xpc3RDb2x1bW5zJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShjYWNoZWRUYXNrTGlzdENvbHVtbnMgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUYXNrTGlzdENvbHVtbiA9IGNhY2hlZFRhc2tMaXN0Q29sdW1ucy5maW5kKGNvbHVtbiA9PiBjb2x1bW4ua2V5ID09PSByb3cua2V5KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYXNrTGlzdENvbHVtbiQubmV4dChzZWxlY3RlZFRhc2tMaXN0Q29sdW1uKTtcbiAgICAgIHRoaXMuc2hvd01vZGFsKCdlZGl0Jyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd01vZGFsKHR5cGU6IFRhc2tMaXN0Q29sdW1uTW9kYWxUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbFR5cGUkLm5leHQodHlwZSk7XG4gICAgdGhpcy5zaG93TW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25Nb2RhbENsb3NlRXZlbnQoZXZlbnQ6IFRhc2tMaXN0Q29sdW1uTW9kYWxDbG9zZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zaG93TW9kYWwkLm5leHQoZmFsc2UpO1xuXG4gICAgaWYgKGV2ZW50ID09PSAncmVmcmVzaCcpIHtcbiAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgICAgdGhpcy5yZWZyZXNoQ29sdW1ucygpO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jbGVhclNlbGVjdGVkVGFza0xpc3RDb2x1bW4oKTtcbiAgICB9LCBDQVJCT05fQ09OU1RBTlRTLm1vZGFsQW5pbWF0aW9uTXMpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVJvd0NvbmZpcm1hdGlvbihjb2x1bW5LZXk6IHN0cmluZywgZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLnRhc2tNYW5hZ2VtZW50QXBpU2VydmljZVxuICAgICAgLmRlbGV0ZVRhc2tMaXN0Q29sdW1uKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIGNvbHVtbktleSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoQ29sdW1ucyh0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMuZW5hYmxlKCksXG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlzcGxheVR5cGVQYXJhbWV0ZXJzVmlldyhcbiAgICBkaXNwbGF5VHlwZVBhcmFtZXRlcnM6IFRhc2tMaXN0Q29sdW1uRGlzcGxheVR5cGVQYXJhbWV0ZXJzXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKGRpc3BsYXlUeXBlUGFyYW1ldGVycz8uZGF0ZUZvcm1hdCkge1xuICAgICAgcmV0dXJuIGRpc3BsYXlUeXBlUGFyYW1ldGVycy5kYXRlRm9ybWF0O1xuICAgIH0gZWxzZSBpZiAoZGlzcGxheVR5cGVQYXJhbWV0ZXJzPy5lbnVtKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZGlzcGxheVR5cGVQYXJhbWV0ZXJzLmVudW0pLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleVZhbHVlUGFpclN0cmluZyA9IGAke2N1cnJ9OiAke2Rpc3BsYXlUeXBlUGFyYW1ldGVycy5lbnVtW2N1cnJdfWA7XG4gICAgICAgIGlmICghYWNjKSB7XG4gICAgICAgICAgcmV0dXJuIGAke2tleVZhbHVlUGFpclN0cmluZ31gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGAke2FjY30sICR7a2V5VmFsdWVQYWlyU3RyaW5nfWA7XG4gICAgICB9LCAnJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICctJztcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU2VsZWN0ZWRUYXNrTGlzdENvbHVtbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVGFza0xpc3RDb2x1bW4kLm5leHQobnVsbCk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIntcbiAgICB0YXNrTGlzdENvbHVtbnM6IHRhc2tMaXN0Q29sdW1ucyQgfCBhc3luYyxcbiAgICBjYWNoZWRUYXNrTGlzdENvbHVtbnM6IGNhY2hlZFRhc2tMaXN0Q29sdW1ucyQgfCBhc3luYyxcbiAgICBkb2N1bWVudERlZmluaXRpb25OYW1lOiBkb2N1bWVudERlZmluaXRpb25OYW1lJCB8IGFzeW5jLFxuICAgIGxvYWRpbmdDb2x1bW5zOiBsb2FkaW5nQ29sdW1ucyQgfCBhc3luYyxcbiAgICBtb2RhbFR5cGU6IG1vZGFsVHlwZSQgfCBhc3luYyxcbiAgICBzaG93TW9kYWw6IHNob3dNb2RhbCQgfCBhc3luYyxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3Q7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cblxuICA8dmFsdGltby10YXNrLW1hbmFnZW1lbnQtY29sdW1uLW1vZGFsXG4gICAgW3Rhc2tMaXN0Q29sdW1uc109XCJvYnMuY2FjaGVkVGFza0xpc3RDb2x1bW5zXCJcbiAgICBbdHlwZV09XCJvYnMubW9kYWxUeXBlXCJcbiAgICBbc2hvd109XCJvYnMuc2hvd01vZGFsXCJcbiAgICBbZG9jdW1lbnREZWZpbml0aW9uTmFtZV09XCJvYnMuZG9jdW1lbnREZWZpbml0aW9uTmFtZVwiXG4gICAgW3NlbGVjdGVkVGFza0xpc3RDb2x1bW5dPVwic2VsZWN0ZWRUYXNrTGlzdENvbHVtbiQgfCBhc3luY1wiXG4gICAgKGNsb3NlRXZlbnQpPVwib25Nb2RhbENsb3NlRXZlbnQoJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tdGFzay1tYW5hZ2VtZW50LWNvbHVtbi1tb2RhbD5cblxuICA8dmFsdGltby1jb25maXJtYXRpb24tbW9kYWxcbiAgICBbc2hvd01vZGFsU3ViamVjdCRdPVwic2hvd0RlbGV0ZU1vZGFsJFwiXG4gICAgW291dHB1dE9uQ29uZmlybV09XCJkZWxldGVSb3dLZXkkIHwgYXN5bmNcIlxuICAgIChjb25maXJtRXZlbnQpPVwiZGVsZXRlUm93Q29uZmlybWF0aW9uKCRldmVudCwgb2JzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXCJcbiAgICBjb25maXJtQnV0dG9uVGV4dFRyYW5zbGF0aW9uS2V5PVwibGlzdENvbHVtbi5kZWxldGVDb2x1bW5cIlxuICAgIHRpdGxlVHJhbnNsYXRpb25LZXk9XCJsaXN0Q29sdW1uLmRlbGV0ZUNvbHVtblwiXG4gICAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwibGlzdENvbHVtbi5kZWxldGVDb2x1bW5Db25maXJtYXRpb25cIlxuICA+PC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2xpc3QgbGV0LW9icz1cIm9ic1wiPlxuICA8dmFsdGltby1jYXJib24tbGlzdFxuICAgIFthY3Rpb25JdGVtc109XCJhY3Rpb25JdGVtc1wiXG4gICAgW2l0ZW1zXT1cIm9icy50YXNrTGlzdENvbHVtbnNcIlxuICAgIFtsb2FkaW5nXT1cIm9icy5sb2FkaW5nQ29sdW1uc1wiXG4gICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgIFtoZWFkZXJdPVwiZmFsc2VcIlxuICAgIFttb3ZpbmdSb3dzRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAocm93Q2xpY2tlZCk9XCJjb2x1bW5Sb3dDbGlja2VkKCRldmVudClcIlxuICAgIChtb3ZlUm93KT1cIm9uTW92ZVJvd0NsaWNrKCRldmVudCwgb2JzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIGNhcmJvblRvb2xiYXJDb250ZW50XG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnM7IGNvbnRleHQ6IHtvYnM6IG9ic31cIlxuICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFt0aXRsZV09XCInbGlzdENvbHVtbi5ub0NvbmZpZ1dhcm5pbmdUaXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIidsaXN0Q29sdW1uLm5vQ29uZmlnV2FybmluZycgfCB0cmFuc2xhdGVcIlxuICAgICAgaWxsdXN0cmF0aW9uPVwidmFsdGltby1sYXlvdXQvaW1nL2VtcHR5c3RhdGUtZW1wdHkuc3ZnXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIDwvdmFsdGltby1jYXJib24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9ucyBsZXQtb2JzPVwib2JzXCI+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIChjbGljayk9XCJzaG93TW9kYWwoJ2FkZCcpXCIgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiPlxuICAgIHt7ICdsaXN0Q29sdW1uLmFkZEJ1dHRvblRleHQnIHwgdHJhbnNsYXRlIH19XG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImFkZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,17 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- export * from './task-management-detail.component';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvdGFzay1tYW5hZ2VtZW50LWRldGFpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILGNBQWMsb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3Rhc2stbWFuYWdlbWVudC1kZXRhaWwuY29tcG9uZW50JztcbiJdfQ==
@@ -1,68 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { CommonModule } from '@angular/common';
17
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
18
- import { TranslateModule } from '@ngx-translate/core';
19
- import { CARBON_THEME, CarbonListModule } from '@valtimo/components';
20
- import { TabsModule } from 'carbon-components-angular';
21
- import { filter, map, switchMap, tap } from 'rxjs';
22
- import { TaskManagementTab } from '../../models';
23
- import { TaskManagementService } from '../../services';
24
- import { TaskManagementColumnsComponent } from '../task-management-columns';
25
- import { TaskManagementSearchFieldsComponent } from '../task-management-search-fields/task-management-search-fields.component';
26
- import * as i0 from "@angular/core";
27
- import * as i1 from "@valtimo/config";
28
- import * as i2 from "@valtimo/document";
29
- import * as i3 from "@valtimo/components";
30
- import * as i4 from "@angular/router";
31
- import * as i5 from "../../services";
32
- import * as i6 from "@angular/common";
33
- import * as i7 from "@ngx-translate/core";
34
- import * as i8 from "carbon-components-angular";
35
- export class TaskManagementDetailComponent {
36
- constructor(configService, documentService, pageTitleService, route, taskManagementService) {
37
- this.configService = configService;
38
- this.documentService = documentService;
39
- this.pageTitleService = pageTitleService;
40
- this.route = route;
41
- this.taskManagementService = taskManagementService;
42
- this.carbonTheme = CARBON_THEME.G10;
43
- this.setDocumentDefinitionName$ = this.route.params.pipe(map(params => params.name || ''), filter(docDefName => !!docDefName), switchMap(documentDefinitionName => this.documentService.getDocumentDefinitionForManagement(documentDefinitionName)), tap(documentDefinition => {
44
- this.pageTitleService.setCustomPageTitle(documentDefinition?.schema?.title || '-');
45
- }));
46
- this.activeTab$ = this.taskManagementService.activeTab$;
47
- this.TAB_ENUM = TaskManagementTab;
48
- }
49
- setActiveTab(tab) {
50
- this.taskManagementService.setActiveTab(tab);
51
- }
52
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskManagementDetailComponent, deps: [{ token: i1.ConfigService }, { token: i2.DocumentService }, { token: i3.PageTitleService }, { token: i4.ActivatedRoute }, { token: i5.TaskManagementService }], target: i0.ɵɵFactoryTarget.Component }); }
53
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TaskManagementDetailComponent, isStandalone: true, selector: "ng-component", inputs: { carbonTheme: "carbonTheme" }, providers: [TaskManagementService], 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<div\n *ngIf=\"{\n activeTab: activeTab$ | async,\n documentDefinitionName: setDocumentDefinitionName$ | async,\n } as obs\"\n class=\"task-management-detail\"\n>\n <cds-tabs class=\"dossier-management-tabs\" type=\"contained\">\n <cds-tab\n [active]=\"obs.activeTab === TAB_ENUM.COLUMNS\"\n [heading]=\"'taskManagement.columns' | translate\"\n (selected)=\"setActiveTab(TAB_ENUM.COLUMNS)\"\n >\n <valtimo-task-management-columns> </valtimo-task-management-columns>\n </cds-tab>\n\n <cds-tab\n [active]=\"obs.activeTab === TAB_ENUM.SEARCH_FIELDS\"\n [heading]=\"'taskManagement.searchFields' | translate\"\n (selected)=\"setActiveTab(TAB_ENUM.SEARCH_FIELDS)\"\n >\n <valtimo-task-management-search-fields> </valtimo-task-management-search-fields>\n </cds-tab>\n </cds-tabs>\n</div>\n", styles: [".task-management-detail .cds--tab-content{padding:0}\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: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i8.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i8.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: TaskManagementColumnsComponent, selector: "valtimo-task-management-columns", inputs: ["carbonTheme"] }, { kind: "component", type: TaskManagementSearchFieldsComponent, selector: "valtimo-task-management-search-fields" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
54
- }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskManagementDetailComponent, decorators: [{
56
- type: Component,
57
- args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
58
- CommonModule,
59
- CarbonListModule,
60
- TranslateModule,
61
- TabsModule,
62
- TaskManagementColumnsComponent,
63
- TaskManagementSearchFieldsComponent,
64
- ], providers: [TaskManagementService], 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<div\n *ngIf=\"{\n activeTab: activeTab$ | async,\n documentDefinitionName: setDocumentDefinitionName$ | async,\n } as obs\"\n class=\"task-management-detail\"\n>\n <cds-tabs class=\"dossier-management-tabs\" type=\"contained\">\n <cds-tab\n [active]=\"obs.activeTab === TAB_ENUM.COLUMNS\"\n [heading]=\"'taskManagement.columns' | translate\"\n (selected)=\"setActiveTab(TAB_ENUM.COLUMNS)\"\n >\n <valtimo-task-management-columns> </valtimo-task-management-columns>\n </cds-tab>\n\n <cds-tab\n [active]=\"obs.activeTab === TAB_ENUM.SEARCH_FIELDS\"\n [heading]=\"'taskManagement.searchFields' | translate\"\n (selected)=\"setActiveTab(TAB_ENUM.SEARCH_FIELDS)\"\n >\n <valtimo-task-management-search-fields> </valtimo-task-management-search-fields>\n </cds-tab>\n </cds-tabs>\n</div>\n", styles: [".task-management-detail .cds--tab-content{padding:0}\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"] }]
65
- }], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.DocumentService }, { type: i3.PageTitleService }, { type: i4.ActivatedRoute }, { type: i5.TaskManagementService }], propDecorators: { carbonTheme: [{
66
- type: Input
67
- }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1tYW5hZ2VtZW50LWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvdGFzay1tYW5hZ2VtZW50LWRldGFpbC90YXNrLW1hbmFnZW1lbnQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vdGFzay1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy90YXNrLW1hbmFnZW1lbnQtZGV0YWlsL3Rhc2stbWFuYWdlbWVudC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFFckYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLDBFQUEwRSxDQUFDOzs7Ozs7Ozs7O0FBbUI3SCxNQUFNLE9BQU8sNkJBQTZCO0lBbUJ4QyxZQUNtQixhQUE0QixFQUM1QixlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsS0FBcUIsRUFDckIscUJBQTRDO1FBSjVDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUF2Qi9DLGdCQUFXLEdBQWlCLFlBQVksQ0FBQyxHQUFHLENBQUM7UUFFN0MsK0JBQTBCLEdBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDcEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFDaEMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUNsQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLGtDQUFrQyxDQUFDLHNCQUFzQixDQUFDLENBQ2hGLEVBQ0QsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFFLGtCQUEwQixFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksR0FBRyxDQUFDLENBQUM7UUFDOUYsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVZLGVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDO1FBRW5ELGFBQVEsR0FBRyxpQkFBaUIsQ0FBQztJQVExQyxDQUFDO0lBRUcsWUFBWSxDQUFDLEdBQXNCO1FBQ3hDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsQ0FBQzsrR0E3QlUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsbUdBSDdCLENBQUMscUJBQXFCLENBQUMsMEJDMUNwQyxzK0NBeUNBLDZ1QkROSSxZQUFZLHVMQUNaLGdCQUFnQiw4QkFDaEIsZUFBZSwyRkFDZixVQUFVLGdjQUNWLDhCQUE4QixxR0FDOUIsbUNBQW1DOzs0RkFLMUIsNkJBQTZCO2tCQWhCekMsU0FBUztpQ0FHSSxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsVUFBVTt3QkFDViw4QkFBOEI7d0JBQzlCLG1DQUFtQztxQkFDcEMsYUFDVSxDQUFDLHFCQUFxQixDQUFDLGlCQUNuQixpQkFBaUIsQ0FBQyxJQUFJO2dOQUdyQixXQUFXO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q0FSQk9OX1RIRU1FLCBDYXJib25MaXN0TW9kdWxlLCBQYWdlVGl0bGVTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7RG9jdW1lbnREZWZpbml0aW9uLCBEb2N1bWVudFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7VGFic01vZHVsZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge2ZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Rhc2tNYW5hZ2VtZW50VGFifSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtUYXNrTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7VGFza01hbmFnZW1lbnRDb2x1bW5zQ29tcG9uZW50fSBmcm9tICcuLi90YXNrLW1hbmFnZW1lbnQtY29sdW1ucyc7XG5pbXBvcnQge1Rhc2tNYW5hZ2VtZW50U2VhcmNoRmllbGRzQ29tcG9uZW50fSBmcm9tICcuLi90YXNrLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkcy90YXNrLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkcy5jb21wb25lbnQnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stbWFuYWdlbWVudC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YXNrLW1hbmFnZW1lbnQtZGV0YWlsLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFRhYnNNb2R1bGUsXG4gICAgVGFza01hbmFnZW1lbnRDb2x1bW5zQ29tcG9uZW50LFxuICAgIFRhc2tNYW5hZ2VtZW50U2VhcmNoRmllbGRzQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtUYXNrTWFuYWdlbWVudFNlcnZpY2VdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBUYXNrTWFuYWdlbWVudERldGFpbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXJib25UaGVtZTogQ0FSQk9OX1RIRU1FID0gQ0FSQk9OX1RIRU1FLkcxMDtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2V0RG9jdW1lbnREZWZpbml0aW9uTmFtZSQ6IE9ic2VydmFibGU8RG9jdW1lbnREZWZpbml0aW9uPiA9XG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLm5hbWUgfHwgJycpLFxuICAgICAgZmlsdGVyKGRvY0RlZk5hbWUgPT4gISFkb2NEZWZOYW1lKSxcbiAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50RGVmaW5pdGlvbkZvck1hbmFnZW1lbnQoZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgICksXG4gICAgICB0YXAoZG9jdW1lbnREZWZpbml0aW9uID0+IHtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLnNldEN1c3RvbVBhZ2VUaXRsZSgoZG9jdW1lbnREZWZpbml0aW9uIGFzIGFueSk/LnNjaGVtYT8udGl0bGUgfHwgJy0nKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlVGFiJCA9IHRoaXMudGFza01hbmFnZW1lbnRTZXJ2aWNlLmFjdGl2ZVRhYiQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IFRBQl9FTlVNID0gVGFza01hbmFnZW1lbnRUYWI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFza01hbmFnZW1lbnRTZXJ2aWNlOiBUYXNrTWFuYWdlbWVudFNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVUYWIodGFiOiBUYXNrTWFuYWdlbWVudFRhYik6IHZvaWQge1xuICAgIHRoaXMudGFza01hbmFnZW1lbnRTZXJ2aWNlLnNldEFjdGl2ZVRhYih0YWIpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXZcbiAgKm5nSWY9XCJ7XG4gICAgYWN0aXZlVGFiOiBhY3RpdmVUYWIkIHwgYXN5bmMsXG4gICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc2V0RG9jdW1lbnREZWZpbml0aW9uTmFtZSQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuICBjbGFzcz1cInRhc2stbWFuYWdlbWVudC1kZXRhaWxcIlxuPlxuICA8Y2RzLXRhYnMgY2xhc3M9XCJkb3NzaWVyLW1hbmFnZW1lbnQtdGFic1wiIHR5cGU9XCJjb250YWluZWRcIj5cbiAgICA8Y2RzLXRhYlxuICAgICAgW2FjdGl2ZV09XCJvYnMuYWN0aXZlVGFiID09PSBUQUJfRU5VTS5DT0xVTU5TXCJcbiAgICAgIFtoZWFkaW5nXT1cIid0YXNrTWFuYWdlbWVudC5jb2x1bW5zJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoc2VsZWN0ZWQpPVwic2V0QWN0aXZlVGFiKFRBQl9FTlVNLkNPTFVNTlMpXCJcbiAgICA+XG4gICAgICA8dmFsdGltby10YXNrLW1hbmFnZW1lbnQtY29sdW1ucz4gPC92YWx0aW1vLXRhc2stbWFuYWdlbWVudC1jb2x1bW5zPlxuICAgIDwvY2RzLXRhYj5cblxuICAgIDxjZHMtdGFiXG4gICAgICBbYWN0aXZlXT1cIm9icy5hY3RpdmVUYWIgPT09IFRBQl9FTlVNLlNFQVJDSF9GSUVMRFNcIlxuICAgICAgW2hlYWRpbmddPVwiJ3Rhc2tNYW5hZ2VtZW50LnNlYXJjaEZpZWxkcycgfCB0cmFuc2xhdGVcIlxuICAgICAgKHNlbGVjdGVkKT1cInNldEFjdGl2ZVRhYihUQUJfRU5VTS5TRUFSQ0hfRklFTERTKVwiXG4gICAgPlxuICAgICAgPHZhbHRpbW8tdGFzay1tYW5hZ2VtZW50LXNlYXJjaC1maWVsZHM+IDwvdmFsdGltby10YXNrLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkcz5cbiAgICA8L2Nkcy10YWI+XG4gIDwvY2RzLXRhYnM+XG48L2Rpdj5cbiJdfQ==