@valtimo/dossier 12.10.2 → 12.11.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 (38) hide show
  1. package/esm2022/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.mjs +4 -3
  2. package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +12 -4
  3. package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +51 -15
  4. package/esm2022/lib/components/dossier-list-actions/dossier-list-actions.component.mjs +46 -18
  5. package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +26 -18
  6. package/esm2022/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +22 -14
  7. package/esm2022/lib/constants/case-status.constants.mjs +3 -3
  8. package/esm2022/lib/dossier.module.mjs +17 -5
  9. package/esm2022/lib/models/dossier-parameters.model.mjs +1 -1
  10. package/esm2022/lib/services/dossier-column.service.mjs +5 -1
  11. package/esm2022/lib/services/dossier-list-case-tag.service.mjs +59 -0
  12. package/esm2022/lib/services/dossier-parameter.service.mjs +29 -2
  13. package/esm2022/lib/services/index.mjs +2 -1
  14. package/fesm2022/valtimo-dossier.mjs +243 -62
  15. package/fesm2022/valtimo-dossier.mjs.map +1 -1
  16. package/lib/components/dossier-detail/dossier-detail.component.d.ts +3 -1
  17. package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -1
  18. package/lib/components/dossier-list/dossier-list.component.d.ts +10 -3
  19. package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -1
  20. package/lib/components/dossier-list-actions/dossier-list-actions.component.d.ts +10 -3
  21. package/lib/components/dossier-list-actions/dossier-list-actions.component.d.ts.map +1 -1
  22. package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts +7 -4
  23. package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -1
  24. package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts +5 -2
  25. package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +1 -1
  26. package/lib/constants/case-status.constants.d.ts.map +1 -1
  27. package/lib/dossier.module.d.ts +1 -1
  28. package/lib/dossier.module.d.ts.map +1 -1
  29. package/lib/models/dossier-parameters.model.d.ts +1 -0
  30. package/lib/models/dossier-parameters.model.d.ts.map +1 -1
  31. package/lib/services/dossier-column.service.d.ts.map +1 -1
  32. package/lib/services/dossier-list-case-tag.service.d.ts +21 -0
  33. package/lib/services/dossier-list-case-tag.service.d.ts.map +1 -0
  34. package/lib/services/dossier-parameter.service.d.ts +2 -0
  35. package/lib/services/dossier-parameter.service.d.ts.map +1 -1
  36. package/lib/services/index.d.ts +1 -0
  37. package/lib/services/index.d.ts.map +1 -1
  38. package/package.json +1 -1
@@ -16,7 +16,7 @@
16
16
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
17
17
  import { CARBON_CONSTANTS } from '@valtimo/components';
18
18
  import { NotificationService } from 'carbon-components-angular';
19
- import { BehaviorSubject, combineLatest, map, of, switchMap } from 'rxjs';
19
+ import { BehaviorSubject, combineLatest, filter, map, of, Subscription, switchMap, } from 'rxjs';
20
20
  import * as i0 from "@angular/core";
21
21
  import * as i1 from "@valtimo/document";
22
22
  import * as i2 from "../../services";
@@ -24,11 +24,15 @@ import * as i3 from "carbon-components-angular";
24
24
  import * as i4 from "@angular/router";
25
25
  import * as i5 from "@ngx-translate/core";
26
26
  import * as i6 from "@angular/common";
27
- import * as i7 from "../dossier-process-start-modal/dossier-process-start-modal.component";
27
+ import * as i7 from "@valtimo/components";
28
+ import * as i8 from "../dossier-process-start-modal/dossier-process-start-modal.component";
28
29
  export class DossierListActionsComponent {
29
30
  set loading(value) {
30
31
  this._loading$.next(value);
31
32
  }
33
+ get _caseSettings() {
34
+ return this._caseSettings$.getValue();
35
+ }
32
36
  constructor(documentService, listService, notificationService, router, translateService) {
33
37
  this.documentService = documentService;
34
38
  this.listService = listService;
@@ -38,41 +42,57 @@ export class DossierListActionsComponent {
38
42
  this._loading$ = new BehaviorSubject(true);
39
43
  this.formFlowComplete = new EventEmitter();
40
44
  this.startButtonDisableEvent = new EventEmitter();
45
+ this._caseSettings$ = new BehaviorSubject(null);
46
+ this.caseSettings$ = this._caseSettings$.pipe(filter(settings => !!settings));
41
47
  this.associatedProcessDocumentDefinitions$ = this.listService.documentDefinitionName$.pipe(switchMap(documentDefinitionName => combineLatest([
42
48
  documentDefinitionName
43
49
  ? this.documentService.findProcessDocumentDefinitionsByCanInitializeDocument(documentDefinitionName, true)
44
50
  : of([]),
45
51
  this._loading$,
46
- ])), map(([processDocumentDefinitions, loading]) => {
52
+ this.caseSettings$,
53
+ ])), map(([processDocumentDefinitions, loading, caseSettings]) => {
47
54
  this._cachedAssociatedProcessDocumentDefinitions = processDocumentDefinitions;
48
- this.startButtonDisableEvent.emit(processDocumentDefinitions.length === 0 || loading);
55
+ this.startButtonDisableEvent.emit(loading || (processDocumentDefinitions.length === 0 && !caseSettings.hasExternalStartForm));
49
56
  return processDocumentDefinitions.filter(definition => definition.canInitializeDocument);
50
57
  }));
58
+ this.startSelectionModalOpen$ = new BehaviorSubject(false);
51
59
  this.selectedProcessDocumentDefinition = null;
52
- this.modalListenerAdded = false;
53
60
  this._cachedAssociatedProcessDocumentDefinitions = [];
61
+ this._subscriptions = new Subscription();
54
62
  }
55
63
  ngOnInit() {
56
- this.modalListenerAdded = false;
64
+ this._subscriptions.add(this.listService.documentDefinitionName$
65
+ .pipe(switchMap(documentDefinitionName => this.documentService.getCaseSettings(documentDefinitionName)))
66
+ .subscribe(caseSettings => {
67
+ this._caseSettings$.next(caseSettings);
68
+ }));
69
+ }
70
+ ngOnDestroy() {
71
+ this._subscriptions.unsubscribe();
57
72
  }
58
73
  startDossier() {
59
74
  const associatedProcessDocumentDefinitions = this._cachedAssociatedProcessDocumentDefinitions;
75
+ const hasExternalStartForm = this._caseSettings?.hasExternalStartForm;
60
76
  if (associatedProcessDocumentDefinitions.length > 1) {
61
- $('#startProcess').modal('show');
77
+ this.startSelectionModalOpen$.next(true);
62
78
  }
63
79
  else {
64
- this.selectedProcessDocumentDefinition = associatedProcessDocumentDefinitions[0];
65
- this.showStartProcessModal();
80
+ if (hasExternalStartForm && associatedProcessDocumentDefinitions.length === 0) {
81
+ this.openExternalCaseStartForm();
82
+ }
83
+ else if (associatedProcessDocumentDefinitions.length === 1 && !hasExternalStartForm) {
84
+ this.selectedProcessDocumentDefinition = associatedProcessDocumentDefinitions[0];
85
+ this.showStartProcessModal();
86
+ }
87
+ else if (associatedProcessDocumentDefinitions.length > 0) {
88
+ this.startSelectionModalOpen$.next(true);
89
+ }
66
90
  }
67
91
  }
68
92
  selectProcess(processDocumentDefinition) {
69
- const modal = $('#startProcess');
70
- if (!this.modalListenerAdded) {
71
- modal.on('hidden.bs.modal', this.showStartProcessModal.bind(this));
72
- this.modalListenerAdded = true;
73
- }
74
93
  this.selectedProcessDocumentDefinition = processDocumentDefinition;
75
- modal.modal('hide');
94
+ this.startSelectionModalOpen$.next(false);
95
+ this.showStartProcessModal();
76
96
  }
77
97
  onFormFlowComplete() {
78
98
  this.formFlowComplete.emit(null);
@@ -92,6 +112,14 @@ export class DossierListActionsComponent {
92
112
  duration: CARBON_CONSTANTS.notificationDuration,
93
113
  });
94
114
  }
115
+ openExternalCaseStartForm(closeModal = false) {
116
+ window.open(this._caseSettings?.externalStartFormUrl, '_blank');
117
+ if (closeModal)
118
+ this.startSelectionModalOpen$.next(false);
119
+ }
120
+ onCloseSelect() {
121
+ this.startSelectionModalOpen$.next(false);
122
+ }
95
123
  showStartProcessModal() {
96
124
  if (this.selectedProcessDocumentDefinition !== null) {
97
125
  this.processStart.openModal(this.selectedProcessDocumentDefinition);
@@ -99,11 +127,11 @@ export class DossierListActionsComponent {
99
127
  }
100
128
  }
101
129
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierListActionsComponent, deps: [{ token: i1.DocumentService }, { token: i2.DossierListService }, { token: i3.NotificationService }, { token: i4.Router }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
102
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierListActionsComponent, selector: "valtimo-dossier-list-actions", inputs: { loading: "loading" }, outputs: { formFlowComplete: "formFlowComplete", startButtonDisableEvent: "startButtonDisableEvent" }, providers: [NotificationService], viewQueries: [{ propertyName: "processStart", first: true, predicate: ["processStartModal"], descendants: true }], 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 *ngIf=\"associatedProcessDocumentDefinitions$ | async as associatedProcessDocumentDefinitions\">\n <div\n class=\"modal fade\"\n id=\"startProcess\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"startProcessLabel\"\n aria-hidden=\"true\"\n >\n <div class=\"modal-dialog modal-dialog-centered\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"startProcessLabel\">\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"table-responsive\">\n <table class=\"table m-0\">\n <tr\n *ngFor=\"let processDocumentDefinition of associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n style=\"cursor: pointer\"\n >\n <td>{{ processDocumentDefinition.processName }}</td>\n </tr>\n </table>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">\n {{ 'cta.close' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<valtimo-dossier-process-start-modal\n #processStartModal\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked()\"\n></valtimo-dossier-process-start-modal>\n", styles: ["/*!\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: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.DossierProcessStartModalComponent, selector: "valtimo-dossier-process-start-modal", outputs: ["formFlowComplete", "noProcessLinked"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
130
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierListActionsComponent, selector: "valtimo-dossier-list-actions", inputs: { loading: "loading" }, outputs: { formFlowComplete: "formFlowComplete", startButtonDisableEvent: "startButtonDisableEvent" }, providers: [NotificationService], viewQueries: [{ propertyName: "processStart", first: true, predicate: ["processStartModal"], descendants: true }], 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<cds-modal\n valtimoCdsModal\n [open]=\"startSelectionModalOpen$ | async\"\n size=\"xs\"\n *ngIf=\"{\n associatedProcessDocumentDefinitions: associatedProcessDocumentDefinitions$ | async,\n caseSettings: caseSettings$ | async,\n } as obs\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"start-modal-content\" [cdsLayer]=\"1\">\n <cds-clickable-tile\n *ngIf=\"obs.caseSettings?.hasExternalStartForm\"\n (click)=\"openExternalCaseStartForm(true)\"\n >\n {{ obs?.caseSettings.externalStartFormDescription || '-' }}\n </cds-clickable-tile>\n\n <cds-clickable-tile\n *ngFor=\"let processDocumentDefinition of obs?.associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n >\n {{ processDocumentDefinition.processName }}\n </cds-clickable-tile>\n </section>\n</cds-modal>\n\n<valtimo-dossier-process-start-modal\n #processStartModal\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked()\"\n></valtimo-dossier-process-start-modal>\n", styles: [".start-modal-content{display:flex;flex-direction:column;gap:8px}\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: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "directive", type: i3.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i3.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i7.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]" }, { kind: "component", type: i3.ClickableTile, selector: "cds-clickable-tile, ibm-clickable-tile", inputs: ["theme", "href", "target", "disabled", "route", "routeExtras"], outputs: ["navigation"] }, { kind: "directive", type: i3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: i8.DossierProcessStartModalComponent, selector: "valtimo-dossier-process-start-modal", outputs: ["formFlowComplete", "noProcessLinked"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
103
131
  }
104
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierListActionsComponent, decorators: [{
105
133
  type: Component,
106
- args: [{ selector: 'valtimo-dossier-list-actions', providers: [NotificationService], 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 *ngIf=\"associatedProcessDocumentDefinitions$ | async as associatedProcessDocumentDefinitions\">\n <div\n class=\"modal fade\"\n id=\"startProcess\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"startProcessLabel\"\n aria-hidden=\"true\"\n >\n <div class=\"modal-dialog modal-dialog-centered\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"startProcessLabel\">\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"table-responsive\">\n <table class=\"table m-0\">\n <tr\n *ngFor=\"let processDocumentDefinition of associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n style=\"cursor: pointer\"\n >\n <td>{{ processDocumentDefinition.processName }}</td>\n </tr>\n </table>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">\n {{ 'cta.close' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<valtimo-dossier-process-start-modal\n #processStartModal\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked()\"\n></valtimo-dossier-process-start-modal>\n", styles: ["/*!\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"] }]
134
+ args: [{ selector: 'valtimo-dossier-list-actions', providers: [NotificationService], 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<cds-modal\n valtimoCdsModal\n [open]=\"startSelectionModalOpen$ | async\"\n size=\"xs\"\n *ngIf=\"{\n associatedProcessDocumentDefinitions: associatedProcessDocumentDefinitions$ | async,\n caseSettings: caseSettings$ | async,\n } as obs\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"start-modal-content\" [cdsLayer]=\"1\">\n <cds-clickable-tile\n *ngIf=\"obs.caseSettings?.hasExternalStartForm\"\n (click)=\"openExternalCaseStartForm(true)\"\n >\n {{ obs?.caseSettings.externalStartFormDescription || '-' }}\n </cds-clickable-tile>\n\n <cds-clickable-tile\n *ngFor=\"let processDocumentDefinition of obs?.associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n >\n {{ processDocumentDefinition.processName }}\n </cds-clickable-tile>\n </section>\n</cds-modal>\n\n<valtimo-dossier-process-start-modal\n #processStartModal\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked()\"\n></valtimo-dossier-process-start-modal>\n", styles: [".start-modal-content{display:flex;flex-direction:column;gap:8px}\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"] }]
107
135
  }], ctorParameters: () => [{ type: i1.DocumentService }, { type: i2.DossierListService }, { type: i3.NotificationService }, { type: i4.Router }, { type: i5.TranslateService }], propDecorators: { processStart: [{
108
136
  type: ViewChild,
109
137
  args: ['processStartModal']
@@ -114,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
114
142
  }], startButtonDisableEvent: [{
115
143
  type: Output
116
144
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1saXN0LWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWxpc3QtYWN0aW9ucy9kb3NzaWVyLWxpc3QtYWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbGlzdC1hY3Rpb25zL2Rvc3NpZXItbGlzdC1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHeEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQVlwRixNQUFNLE9BQU8sMkJBQTJCO0lBSXRDLElBQWEsT0FBTyxDQUFDLEtBQWM7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQThCRCxZQUNtQixlQUFnQyxFQUNoQyxXQUErQixFQUMvQixtQkFBd0MsRUFDeEMsTUFBYyxFQUNkLGdCQUFrQztRQUpsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7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QUNQO29CQUNFLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO29CQUN4RCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUN0RDthQUNGO1lBQ0QsUUFBUSxFQUFFLGdCQUFnQixDQUFDLG9CQUFvQjtTQUNoRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksSUFBSSxDQUFDLGlDQUFpQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7K0dBL0ZVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDhMQUYzQixDQUFDLG1CQUFtQixDQUFDLDZJQy9CbEMsMDBFQWlFQTs7NEZEaENhLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSw4QkFBOEIsYUFHN0IsQ0FBQyxtQkFBbUIsQ0FBQzsyTUFHQSxZQUFZO3NCQUEzQyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFHakIsT0FBTztzQkFBbkIsS0FBSztnQkFJb0IsZ0JBQWdCO3NCQUF6QyxNQUFNO2dCQUNtQix1QkFBdUI7c0JBQWhELE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDQVJCT05fQ09OU1RBTlRTfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlLCBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ufSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge05vdGlmaWNhdGlvblNlcnZpY2V9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Rvc3NpZXJMaXN0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb3NzaWVyUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50JztcblxuZGVjbGFyZSBjb25zdCAkO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbGlzdC1hY3Rpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbGlzdC1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1saXN0LWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbTm90aWZpY2F0aW9uU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJMaXN0QWN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3Byb2Nlc3NTdGFydE1vZGFsJykgcHJvY2Vzc1N0YXJ0OiBEb3NzaWVyUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBASW5wdXQoKSBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQodmFsdWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBmb3JtRmxvd0NvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHN0YXJ0QnV0dG9uRGlzYWJsZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMkOiBPYnNlcnZhYmxlPFxuICAgIEFycmF5PFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24+XG4gID4gPSB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICBkb2N1bWVudERlZmluaXRpb25OYW1lXG4gICAgICAgICAgPyB0aGlzLmRvY3VtZW50U2VydmljZS5maW5kUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNCeUNhbkluaXRpYWxpemVEb2N1bWVudChcbiAgICAgICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogb2YoW10pLFxuICAgICAgICB0aGlzLl9sb2FkaW5nJCxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFtwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucywgbG9hZGluZ10pID0+IHtcbiAgICAgIHRoaXMuX2NhY2hlZEFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyA9IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zO1xuICAgICAgdGhpcy5zdGFydEJ1dHRvbkRpc2FibGVFdmVudC5lbWl0KHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA9PT0gMCB8fCBsb2FkaW5nKTtcbiAgICAgIHJldHVybiBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5maWx0ZXIoZGVmaW5pdGlvbiA9PiBkZWZpbml0aW9uLmNhbkluaXRpYWxpemVEb2N1bWVudCk7XG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIHNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG1vZGFsTGlzdGVuZXJBZGRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9jYWNoZWRBc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnM6IEFycmF5PFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24+ID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RTZXJ2aWNlOiBEb3NzaWVyTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbExpc3RlbmVyQWRkZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydERvc3NpZXIoKTogdm9pZCB7XG4gICAgY29uc3QgYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zID0gdGhpcy5fY2FjaGVkQXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zO1xuXG4gICAgaWYgKGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAkKCcjc3RhcnRQcm9jZXNzJykubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPSBhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNbMF07XG4gICAgICB0aGlzLnNob3dTdGFydFByb2Nlc3NNb2RhbCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RQcm9jZXNzKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb246IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbCA9ICQoJyNzdGFydFByb2Nlc3MnKTtcbiAgICBpZiAoIXRoaXMubW9kYWxMaXN0ZW5lckFkZGVkKSB7XG4gICAgICBtb2RhbC5vbignaGlkZGVuLmJzLm1vZGFsJywgdGhpcy5zaG93U3RhcnRQcm9jZXNzTW9kYWwuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLm1vZGFsTGlzdGVuZXJBZGRlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjtcbiAgICBtb2RhbC5tb2RhbCgnaGlkZScpO1xuICB9XG5cbiAgcHVibGljIG9uRm9ybUZsb3dDb21wbGV0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1GbG93Q29tcGxldGUuZW1pdChudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk5vUHJvY2Vzc0xpbmtlZCgpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UubmdPbkRlc3Ryb3koKTtcblxuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93QWN0aW9uYWJsZSh7XG4gICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICBsb3dDb250cmFzdDogdHJ1ZSxcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZG9zc2llci5ub0xpbmtlZFN0YXJ0UHJvY2Vzc05vdGlmaWNhdGlvbicpLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Rvc3NpZXIuY29uZmlndXJlJyksXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Byb2Nlc3MtbGlua3MnXSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZHVyYXRpb246IENBUkJPTl9DT05TVEFOVFMubm90aWZpY2F0aW9uRHVyYXRpb24sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dTdGFydFByb2Nlc3NNb2RhbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gIT09IG51bGwpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1N0YXJ0Lm9wZW5Nb2RhbCh0aGlzLnNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbik7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgKm5nSWY9XCJhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMkIHwgYXN5bmMgYXMgYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1vZGFsIGZhZGVcIlxuICAgIGlkPVwic3RhcnRQcm9jZXNzXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJzdGFydFByb2Nlc3NMYWJlbFwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInN0YXJ0UHJvY2Vzc0xhYmVsXCI+XG4gICAgICAgICAgICB7eyAnZGFzaGJvYXJkLnN0YXJ0UHJvY2Vzcy50aXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2gzPlxuXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgbS0wXCI+XG4gICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uIG9mIGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFByb2Nlc3MocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbilcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0ZD57eyBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLnByb2Nlc3NOYW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cbiAgICAgICAgICAgIHt7ICdjdGEuY2xvc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjx2YWx0aW1vLWRvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbFxuICAjcHJvY2Vzc1N0YXJ0TW9kYWxcbiAgKGZvcm1GbG93Q29tcGxldGUpPVwib25Gb3JtRmxvd0NvbXBsZXRlKClcIlxuICAobm9Qcm9jZXNzTGlua2VkKT1cIm9uTm9Qcm9jZXNzTGlua2VkKClcIlxuPjwvdmFsdGltby1kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWw+XG4iXX0=
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1saXN0LWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWxpc3QtYWN0aW9ucy9kb3NzaWVyLWxpc3QtYWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbGlzdC1hY3Rpb25zL2Rvc3NpZXItbGlzdC1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHeEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsTUFBTSxFQUNOLEdBQUcsRUFFSCxFQUFFLEVBQ0YsWUFBWSxFQUNaLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQVlkLE1BQU0sT0FBTywyQkFBMkI7SUFJdEMsSUFBYSxPQUFPLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBU0QsSUFBWSxhQUFhO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBaUNELFlBQ21CLGVBQWdDLEVBQ2hDLFdBQStCLEVBQy9CLG1CQUF3QyxFQUN4QyxNQUFjLEVBQ2QsZ0JB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ZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NBUkJPTl9DT05TVEFOVFN9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtDYXNlU2V0dGluZ3MsIERvY3VtZW50U2VydmljZSwgUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbn0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtOb3RpZmljYXRpb25TZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Rvc3NpZXJMaXN0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb3NzaWVyUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50JztcblxuZGVjbGFyZSBjb25zdCAkO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbGlzdC1hY3Rpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbGlzdC1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1saXN0LWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbTm90aWZpY2F0aW9uU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJMaXN0QWN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3Byb2Nlc3NTdGFydE1vZGFsJykgcHJvY2Vzc1N0YXJ0OiBEb3NzaWVyUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBASW5wdXQoKSBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQodmFsdWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBmb3JtRmxvd0NvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHN0YXJ0QnV0dG9uRGlzYWJsZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Nhc2VTZXR0aW5ncyQ6IEJlaGF2aW9yU3ViamVjdDxDYXNlU2V0dGluZ3M+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FzZVNldHRpbmdzJCA9IHRoaXMuX2Nhc2VTZXR0aW5ncyQucGlwZShmaWx0ZXIoc2V0dGluZ3MgPT4gISFzZXR0aW5ncykpO1xuXG4gIHByaXZhdGUgZ2V0IF9jYXNlU2V0dGluZ3MoKTogQ2FzZVNldHRpbmdzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2Nhc2VTZXR0aW5ncyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMkOiBPYnNlcnZhYmxlPFxuICAgIEFycmF5PFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24+XG4gID4gPSB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICBkb2N1bWVudERlZmluaXRpb25OYW1lXG4gICAgICAgICAgPyB0aGlzLmRvY3VtZW50U2VydmljZS5maW5kUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNCeUNhbkluaXRpYWxpemVEb2N1bWVudChcbiAgICAgICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogb2YoW10pLFxuICAgICAgICB0aGlzLl9sb2FkaW5nJCxcbiAgICAgICAgdGhpcy5jYXNlU2V0dGluZ3MkLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcCgoW3Byb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLCBsb2FkaW5nLCBjYXNlU2V0dGluZ3NdKSA9PiB7XG4gICAgICB0aGlzLl9jYWNoZWRBc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucztcbiAgICAgIHRoaXMuc3RhcnRCdXR0b25EaXNhYmxlRXZlbnQuZW1pdChcbiAgICAgICAgbG9hZGluZyB8fCAocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubGVuZ3RoID09PSAwICYmICFjYXNlU2V0dGluZ3MuaGFzRXh0ZXJuYWxTdGFydEZvcm0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmZpbHRlcihkZWZpbml0aW9uID0+IGRlZmluaXRpb24uY2FuSW5pdGlhbGl6ZURvY3VtZW50KTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzdGFydFNlbGVjdGlvbk1vZGFsT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIHNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9jYWNoZWRBc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnM6IEFycmF5PFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24+ID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlzdFNlcnZpY2U6IERvc3NpZXJMaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMubGlzdFNlcnZpY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldENhc2VTZXR0aW5ncyhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKGNhc2VTZXR0aW5ncyA9PiB7XG4gICAgICAgICAgdGhpcy5fY2FzZVNldHRpbmdzJC5uZXh0KGNhc2VTZXR0aW5ncyk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc3RhcnREb3NzaWVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyA9IHRoaXMuX2NhY2hlZEFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucztcbiAgICBjb25zdCBoYXNFeHRlcm5hbFN0YXJ0Rm9ybSA9IHRoaXMuX2Nhc2VTZXR0aW5ncz8uaGFzRXh0ZXJuYWxTdGFydEZvcm07XG5cbiAgICBpZiAoYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuc3RhcnRTZWxlY3Rpb25Nb2RhbE9wZW4kLm5leHQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXNFeHRlcm5hbFN0YXJ0Rm9ybSAmJiBhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMub3BlbkV4dGVybmFsQ2FzZVN0YXJ0Rm9ybSgpO1xuICAgICAgfSBlbHNlIGlmIChhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubGVuZ3RoID09PSAxICYmICFoYXNFeHRlcm5hbFN0YXJ0Rm9ybSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiA9IGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc1swXTtcbiAgICAgICAgdGhpcy5zaG93U3RhcnRQcm9jZXNzTW9kYWwoKTtcbiAgICAgIH0gZWxzZSBpZiAoYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zdGFydFNlbGVjdGlvbk1vZGFsT3BlbiQubmV4dCh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0UHJvY2Vzcyhwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uO1xuICAgIHRoaXMuc3RhcnRTZWxlY3Rpb25Nb2RhbE9wZW4kLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuc2hvd1N0YXJ0UHJvY2Vzc01vZGFsKCk7XG4gIH1cblxuICBwdWJsaWMgb25Gb3JtRmxvd0NvbXBsZXRlKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUZsb3dDb21wbGV0ZS5lbWl0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIG9uTm9Qcm9jZXNzTGlua2VkKCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5uZ09uRGVzdHJveSgpO1xuXG4gICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dBY3Rpb25hYmxlKHtcbiAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgIGxvd0NvbnRyYXN0OiB0cnVlLFxuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdkb3NzaWVyLm5vTGlua2VkU3RhcnRQcm9jZXNzTm90aWZpY2F0aW9uJyksXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZG9zc2llci5jb25maWd1cmUnKSxcbiAgICAgICAgICBjbGljazogKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvY2Vzcy1saW5rcyddKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBkdXJhdGlvbjogQ0FSQk9OX0NPTlNUQU5UUy5ub3RpZmljYXRpb25EdXJhdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRXh0ZXJuYWxDYXNlU3RhcnRGb3JtKGNsb3NlTW9kYWwgPSBmYWxzZSk6IHZvaWQge1xuICAgIHdpbmRvdy5vcGVuKHRoaXMuX2Nhc2VTZXR0aW5ncz8uZXh0ZXJuYWxTdGFydEZvcm1VcmwsICdfYmxhbmsnKTtcblxuICAgIGlmIChjbG9zZU1vZGFsKSB0aGlzLnN0YXJ0U2VsZWN0aW9uTW9kYWxPcGVuJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlU2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRTZWxlY3Rpb25Nb2RhbE9wZW4kLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93U3RhcnRQcm9jZXNzTW9kYWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnByb2Nlc3NTdGFydC5vcGVuTW9kYWwodGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24pO1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Y2RzLW1vZGFsXG4gIHZhbHRpbW9DZHNNb2RhbFxuICBbb3Blbl09XCJzdGFydFNlbGVjdGlvbk1vZGFsT3BlbiQgfCBhc3luY1wiXG4gIHNpemU9XCJ4c1wiXG4gICpuZ0lmPVwie1xuICAgIGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uczogYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zJCB8IGFzeW5jLFxuICAgIGNhc2VTZXR0aW5nczogY2FzZVNldHRpbmdzJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4+XG4gIDxjZHMtbW9kYWwtaGVhZGVyIFtzaG93Q2xvc2VCdXR0b25dPVwidHJ1ZVwiIChjbG9zZVNlbGVjdCk9XCJvbkNsb3NlU2VsZWN0KClcIlxuICAgID48aDMgY2RzTW9kYWxIZWFkZXJIZWFkaW5nPlxuICAgICAge3sgJ2Rhc2hib2FyZC5zdGFydFByb2Nlc3MudGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9oMz5cbiAgPC9jZHMtbW9kYWwtaGVhZGVyPlxuXG4gIDxzZWN0aW9uIGNkc01vZGFsQ29udGVudCBjbGFzcz1cInN0YXJ0LW1vZGFsLWNvbnRlbnRcIiBbY2RzTGF5ZXJdPVwiMVwiPlxuICAgIDxjZHMtY2xpY2thYmxlLXRpbGVcbiAgICAgICpuZ0lmPVwib2JzLmNhc2VTZXR0aW5ncz8uaGFzRXh0ZXJuYWxTdGFydEZvcm1cIlxuICAgICAgKGNsaWNrKT1cIm9wZW5FeHRlcm5hbENhc2VTdGFydEZvcm0odHJ1ZSlcIlxuICAgID5cbiAgICAgIHt7IG9icz8uY2FzZVNldHRpbmdzLmV4dGVybmFsU3RhcnRGb3JtRGVzY3JpcHRpb24gfHwgJy0nIH19XG4gICAgPC9jZHMtY2xpY2thYmxlLXRpbGU+XG5cbiAgICA8Y2RzLWNsaWNrYWJsZS10aWxlXG4gICAgICAqbmdGb3I9XCJsZXQgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiBvZiBvYnM/LmFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc1wiXG4gICAgICAoY2xpY2spPVwic2VsZWN0UHJvY2Vzcyhwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKVwiXG4gICAgPlxuICAgICAge3sgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5wcm9jZXNzTmFtZSB9fVxuICAgIDwvY2RzLWNsaWNrYWJsZS10aWxlPlxuICA8L3NlY3Rpb24+XG48L2Nkcy1tb2RhbD5cblxuPHZhbHRpbW8tZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsXG4gICNwcm9jZXNzU3RhcnRNb2RhbFxuICAoZm9ybUZsb3dDb21wbGV0ZSk9XCJvbkZvcm1GbG93Q29tcGxldGUoKVwiXG4gIChub1Byb2Nlc3NMaW5rZWQpPVwib25Ob1Byb2Nlc3NMaW5rZWQoKVwiXG4+PC92YWx0aW1vLWRvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbD5cbiJdfQ==
@@ -29,9 +29,10 @@ import * as i5 from "@valtimo/security";
29
29
  import * as i6 from "@valtimo/access-control";
30
30
  import * as i7 from "../../services";
31
31
  import * as i8 from "@valtimo/config";
32
- import * as i9 from "@angular/common";
33
- import * as i10 from "@valtimo/components";
34
- import * as i11 from "@ngx-translate/core";
32
+ import * as i9 from "@valtimo/components";
33
+ import * as i10 from "@ngx-translate/core";
34
+ import * as i11 from "carbon-components-angular";
35
+ import * as i12 from "@angular/common";
35
36
  export class DossierProcessStartModalComponent {
36
37
  constructor(route, router, processService, documentService, processLinkService, formFlowService, userProviderService, permissionService, listService, startModalService, configService, formViewModel, formCustomComponentConfig, urlResolverService) {
37
38
  this.route = route;
@@ -52,6 +53,7 @@ export class DossierProcessStartModalComponent {
52
53
  this.isUIComponent = false;
53
54
  this.formFlowComplete = new EventEmitter();
54
55
  this.noProcessLinked = new EventEmitter();
56
+ this.modalOpen$ = new BehaviorSubject(false);
55
57
  this._subscriptions = new Subscription();
56
58
  this._formCustomComponentConfig$ = new BehaviorSubject({});
57
59
  this._useStartEventNameAsStartFormTitle =
@@ -83,12 +85,12 @@ export class DossierProcessStartModalComponent {
83
85
  this.formDefinition = startProcessResult.properties.prefilledForm;
84
86
  this.processLinkId = startProcessResult.processLinkId;
85
87
  this.isFormViewModel = false;
86
- this.modal.show();
88
+ this.openCdsModal();
87
89
  break;
88
90
  case 'form-flow':
89
91
  this.formFlowInstanceId = startProcessResult.properties.formFlowInstanceId;
90
92
  this.isFormViewModel = false;
91
- this.modal.show();
93
+ this.openCdsModal();
92
94
  break;
93
95
  case 'form-view-model':
94
96
  this.formDefinition = startProcessResult.properties.formDefinition;
@@ -96,7 +98,7 @@ export class DossierProcessStartModalComponent {
96
98
  this.processLinkId = startProcessResult.processLinkId;
97
99
  this.isFormViewModel = true;
98
100
  this.setFormViewModelComponent();
99
- this.modal.show();
101
+ this.openCdsModal();
100
102
  break;
101
103
  case 'url':
102
104
  this.processLinkId = startProcessResult.processLinkId;
@@ -116,7 +118,7 @@ export class DossierProcessStartModalComponent {
116
118
  case 'ui-component':
117
119
  this.setFormCustomComponent(startProcessResult.properties.componentKey);
118
120
  this.isUIComponent = true;
119
- this.modal.show();
121
+ this.openCdsModal();
120
122
  break;
121
123
  }
122
124
  }
@@ -126,7 +128,7 @@ export class DossierProcessStartModalComponent {
126
128
  });
127
129
  }
128
130
  gotoProcessLinkScreen() {
129
- this.modal.hide();
131
+ this.closeCdsModal();
130
132
  this.router.navigate(['process-links'], { queryParams: { process: this.processDefinitionKey } });
131
133
  }
132
134
  get modalTitle() {
@@ -161,7 +163,7 @@ export class DossierProcessStartModalComponent {
161
163
  }
162
164
  formFlowSubmitted() {
163
165
  this.formFlowComplete.emit(null);
164
- this.modal.hide();
166
+ this.closeCdsModal();
165
167
  }
166
168
  isUserAdmin() {
167
169
  this.userProviderService.getUserSubject().subscribe(userIdentity => {
@@ -170,8 +172,11 @@ export class DossierProcessStartModalComponent {
170
172
  this.isAdmin = false;
171
173
  });
172
174
  }
175
+ onCloseSelect() {
176
+ this.closeCdsModal();
177
+ }
173
178
  submitCompleted(formSubmissionResult) {
174
- this.modal.hide();
179
+ this.closeCdsModal();
175
180
  this.permissionService
176
181
  .requestPermission(CAN_VIEW_CASE_PERMISSION, {
177
182
  resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
@@ -203,7 +208,7 @@ export class DossierProcessStartModalComponent {
203
208
  formViewModelComponent.instance.documentDefinitionName = this.documentDefinitionName;
204
209
  this._subscriptions.add(formViewModelComponent.instance.formSubmit.subscribe(() => {
205
210
  this.listService.forceRefresh();
206
- this.modal.hide();
211
+ this.closeCdsModal();
207
212
  }));
208
213
  }
209
214
  setFormCustomComponent(formCustomComponentKey) {
@@ -216,16 +221,22 @@ export class DossierProcessStartModalComponent {
216
221
  renderedComponent.instance.processDefinitionKey = this.processDefinitionKey;
217
222
  renderedComponent.instance.documentDefinitionName = this.documentDefinitionName;
218
223
  renderedComponent.instance.submittedEvent.subscribe(() => {
219
- this.modal.hide();
224
+ this.closeCdsModal();
220
225
  });
221
226
  });
222
227
  }
228
+ openCdsModal() {
229
+ this.modalOpen$.next(true);
230
+ }
231
+ closeCdsModal() {
232
+ this.modalOpen$.next(false);
233
+ }
223
234
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierProcessStartModalComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.ProcessService }, { token: i3.DocumentService }, { token: i4.ProcessLinkService }, { token: i4.FormFlowService }, { token: i5.UserProviderService }, { token: i6.PermissionService }, { token: i7.DossierListService }, { token: i7.StartModalService }, { token: i8.ConfigService }, { token: FORM_VIEW_MODEL_TOKEN, optional: true }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }, { token: i4.UrlResolverService }], target: i0.ɵɵFactoryTarget.Component }); }
224
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierProcessStartModalComponent, selector: "valtimo-dossier-process-start-modal", outputs: { formFlowComplete: "formFlowComplete", noProcessLinked: "noProcessLinked" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "modal", first: true, predicate: ["processStartModal"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], 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<valtimo-modal #processStartModal elementId=\"processStartModal\" [title]=\"modalTitle\">\n <div body *ngIf=\"formDefinition && !isFormViewModel\">\n <valtimo-form-io #form [form]=\"formDefinition\" [options]=\"options\" (submit)=\"onSubmit($event)\">\n </valtimo-form-io>\n </div>\n <div body>\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n <div body *ngIf=\"formFlowInstanceId\">\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted()\"\n ></valtimo-form-flow>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n </div>\n</valtimo-modal>\n", styles: ["#processStartModal .formio-component-submit{text-align:right}\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: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i10.ModalComponent, selector: "valtimo-modal", inputs: ["elementId", "title", "subtitle", "templateBelowSubtitle", "showFooter"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.FormFlowComponent, selector: "valtimo-form-flow", inputs: ["formIoFormData", "formFlowInstanceId"], outputs: ["formFlowComplete", "formFlowChange"] }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
235
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DossierProcessStartModalComponent, selector: "valtimo-dossier-process-start-modal", outputs: { formFlowComplete: "formFlowComplete", noProcessLinked: "noProcessLinked" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], 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<cds-modal [open]=\"modalOpen$ | async\" valtimoCdsModal size=\"sm\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ modalTitle }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" class=\"process-start-modal-content\">\n <ng-template #formViewModelComponent></ng-template>\n\n <ng-template #formCustomComponent></ng-template>\n\n @if (formDefinition && !isFormViewModel) {\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n }\n\n @if (formFlowInstanceId) {\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n\n @if (!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n }\n </section>\n</cds-modal>\n", styles: [".process-start-modal-content{padding:16px}\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: "component", type: i9.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "directive", type: i10.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.FormFlowComponent, selector: "valtimo-form-flow", inputs: ["formIoFormData", "formFlowInstanceId"], outputs: ["formFlowComplete", "formFlowChange"] }, { kind: "component", type: i11.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i11.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i11.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i11.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i9.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]" }, { kind: "directive", type: i11.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "pipe", type: i12.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
225
236
  }
226
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierProcessStartModalComponent, decorators: [{
227
238
  type: Component,
228
- args: [{ selector: 'valtimo-dossier-process-start-modal', 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<valtimo-modal #processStartModal elementId=\"processStartModal\" [title]=\"modalTitle\">\n <div body *ngIf=\"formDefinition && !isFormViewModel\">\n <valtimo-form-io #form [form]=\"formDefinition\" [options]=\"options\" (submit)=\"onSubmit($event)\">\n </valtimo-form-io>\n </div>\n <div body>\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n <div body *ngIf=\"formFlowInstanceId\">\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted()\"\n ></valtimo-form-flow>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n </div>\n</valtimo-modal>\n", styles: ["#processStartModal .formio-component-submit{text-align:right}\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"] }]
239
+ args: [{ selector: 'valtimo-dossier-process-start-modal', 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<cds-modal [open]=\"modalOpen$ | async\" valtimoCdsModal size=\"sm\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ modalTitle }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" class=\"process-start-modal-content\">\n <ng-template #formViewModelComponent></ng-template>\n\n <ng-template #formCustomComponent></ng-template>\n\n @if (formDefinition && !isFormViewModel) {\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n }\n\n @if (formFlowInstanceId) {\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n\n @if (!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n }\n </section>\n</cds-modal>\n", styles: [".process-start-modal-content{padding:16px}\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"] }]
229
240
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.ProcessService }, { type: i3.DocumentService }, { type: i4.ProcessLinkService }, { type: i4.FormFlowService }, { type: i5.UserProviderService }, { type: i6.PermissionService }, { type: i7.DossierListService }, { type: i7.StartModalService }, { type: i8.ConfigService }, { type: undefined, decorators: [{
230
241
  type: Optional
231
242
  }, {
@@ -239,9 +250,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
239
250
  }] }, { type: i4.UrlResolverService }], propDecorators: { form: [{
240
251
  type: ViewChild,
241
252
  args: ['form', { static: false }]
242
- }], modal: [{
243
- type: ViewChild,
244
- args: ['processStartModal', { static: false }]
245
253
  }], formViewModelDynamicContainer: [{
246
254
  type: ViewChild,
247
255
  args: ['formViewModelComponent', { static: true, read: ViewContainerRef }]
@@ -253,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
253
261
  }], noProcessLinked: [{
254
262
  type: Output
255
263
  }] } });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQ0wsMkJBQTJCLEdBTzVCLE1BQU0sdUJBQXVCLENBQUM7QUFHL0IsT0FBTyxFQUVMLGlCQUFpQixHQUlsQixNQUFNLHFCQUFxQixDQUFDO0FBSTdCLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwQyxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsa0NBQWtDLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUcvRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsZUFBZSxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7OztBQVFuRCxNQUFNLE9BQU8saUNBQWlDO0lBOEI1QyxZQUNVLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxjQUE4QixFQUM5QixlQUFn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IEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2FjY2Vzcy1jb250cm9sJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlLCBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ufSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge1xuICBGT1JNX0NVU1RPTV9DT01QT05FTlRfVE9LRU4sXG4gIEZvcm1DdXN0b21Db21wb25lbnQsXG4gIEZvcm1DdXN0b21Db21wb25lbnRDb25maWcsXG4gIEZvcm1GbG93U2VydmljZSxcbiAgRm9ybVN1Ym1pc3Npb25SZXN1bHQsXG4gIFByb2Nlc3NMaW5rU2VydmljZSxcbiAgVXJsUmVzb2x2ZXJTZXJ2aWNlLFxufSBmcm9tICdAdmFsdGltby9wcm9jZXNzLWxpbmsnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQcm9jZXNzU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcyc7XG5pbXBvcnQge1xuICBGb3JtaW9Db21wb25lbnQsXG4gIEZvcm1pb09wdGlvbnNJbXBsLFxuICBGb3JtaW9TdWJtaXNzaW9uLFxuICBNb2RhbENvbXBvbmVudCxcbiAgVmFsdGltb0Zvcm1pb09wdGlvbnMsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtaW9CZWZvcmVTdWJtaXR9IGZyb20gJ0Bmb3JtaW8vYW5ndWxhci9mb3JtaW8uY29tbW9uJztcbmltcG9ydCB7Rm9ybWlvRm9ybX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHt0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0NBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwgRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRX0gZnJvbSAnLi4vLi4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtEb3NzaWVyTGlzdFNlcnZpY2UsIFN0YXJ0TW9kYWxTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0ZPUk1fVklFV19NT0RFTF9UT0tFTn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7Rm9ybVZpZXdNb2RlbH0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llclByb2Nlc3NTdGFydE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb25LZXk6IHN0cmluZztcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uSWQ6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZztcbiAgcHVibGljIHByb2Nlc3NOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX3N0YXJ0RXZlbnROYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VzZVN0YXJ0RXZlbnROYW1lQXNTdGFydEZvcm1UaXRsZSE6IGJvb2xlYW47XG4gIHB1YmxpYyBmb3JtRGVmaW5pdGlvbjogRm9ybWlvRm9ybTtcbiAgcHVibGljIGZvcm1OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtRmxvd0luc3RhbmNlSWQ6IHN0cmluZztcbiAgcHVibGljIGZvcm1pb1N1Ym1pc3Npb246IEZvcm1pb1N1Ym1pc3Npb247XG4gIHByaXZhdGUgcHJvY2Vzc0xpbmtJZDogc3RyaW5nO1xuICBwdWJsaWMgb3B0aW9uczogVmFsdGltb0Zvcm1pb09wdGlvbnM7XG4gIHB1YmxpYyBpc0FkbWluOiBib29sZWFuO1xuICBwdWJsaWMgaXNGb3JtVmlld01vZGVsID0gZmFsc2U7XG4gIHB1YmxpYyBpc1VJQ29tcG9uZW50ID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ2Zvcm0nLCB7c3RhdGljOiBmYWxzZX0pIGZvcm06IEZvcm1pb0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgncHJvY2Vzc1N0YXJ0TW9kYWwnLCB7c3RhdGljOiBmYWxzZX0pIG1vZGFsOiBNb2RhbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZm9ybVZpZXdNb2RlbENvbXBvbmVudCcsIHtzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICBwdWJsaWMgZm9ybVZpZXdNb2RlbER5bmFtaWNDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Zvcm1DdXN0b21Db21wb25lbnQnLCB7c3RhdGljOiBmYWxzZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gIHB1YmxpYyBmb3JtQ3VzdG9tQ29tcG9uZW50RHluYW1pY0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcbiAgQE91dHB1dCgpIGZvcm1GbG93Q29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBub1Byb2Nlc3NMaW5rZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIEZvcm1DdXN0b21Db21wb25lbnRDb25maWcgfCB7fVxuICA+KHt9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcHJvY2Vzc1NlcnZpY2U6IFByb2Nlc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9jZXNzTGlua1NlcnZpY2U6IFByb2Nlc3NMaW5rU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1GbG93U2VydmljZTogRm9ybUZsb3dTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclByb3ZpZGVyU2VydmljZTogVXNlclByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIGxpc3RTZXJ2aWNlOiBEb3NzaWVyTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdGFydE1vZGFsU2VydmljZTogU3RhcnRNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRk9STV9WSUVXX01PREVMX1RPS0VOKSBwcml2YXRlIHJlYWRvbmx5IGZvcm1WaWV3TW9kZWw6IEZvcm1WaWV3TW9kZWwsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEZPUk1fQ1VTVE9NX0NPTVBPTkVOVF9UT0tFTilcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1DdXN0b21Db21wb25lbnRDb25maWc6IEZvcm1DdXN0b21Db21wb25lbnRDb25maWcsXG4gICAgcHJpdmF0ZSB1cmxSZXNvbHZlclNlcnZpY2U6IFVybFJlc29sdmVyU2VydmljZVxuICApIHtcbiAgICB0aGlzLl91c2VTdGFydEV2ZW50TmFtZUFzU3RhcnRGb3JtVGl0bGUgPVxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5mZWF0dXJlVG9nZ2xlcz8udXNlU3RhcnRFdmVudE5hbWVBc1N0YXJ0Rm9ybVRpdGxlO1xuXG4gICAgdGhpcy5fZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyQubmV4dChmb3JtQ3VzdG9tQ29tcG9uZW50Q29uZmlnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNVc2VyQWRtaW4oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFByb2Nlc3NMaW5rKCkge1xuICAgIHRoaXMucHJvY2Vzc0xpbmtJZCA9IG51bGw7XG4gICAgdGhpcy5mb3JtRGVmaW5pdGlvbiA9IG51bGw7XG4gICAgdGhpcy5mb3JtRmxvd0luc3RhbmNlSWQgPSBudWxsO1xuICAgIGlmICh0aGlzLl91c2VTdGFydEV2ZW50TmFtZUFzU3RhcnRGb3JtVGl0bGUpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb25YbWwodGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5fc3RhcnRFdmVudE5hbWUgPSB0aGlzLnN0YXJ0TW9kYWxTZXJ2aWNlLmdldFN0YW5kYXJkU3RhcnRFdmVudFRpdGxlKHJlc3VsdC5icG1uMjBYbWwpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2VcbiAgICAgIC5nZXRQcm9jZXNzRGVmaW5pdGlvblN0YXJ0UHJvY2Vzc0xpbmsoXG4gICAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lXG4gICAgICApXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZShzdGFydFByb2Nlc3NSZXN1bHQgPT4ge1xuICAgICAgICBpZiAoc3RhcnRQcm9jZXNzUmVzdWx0KSB7XG4gICAgICAgICAgc3dpdGNoIChzdGFydFByb2Nlc3NSZXN1bHQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgICAgICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5wcmVmaWxsZWRGb3JtO1xuICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaW5rSWQgPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvY2Vzc0xpbmtJZDtcbiAgICAgICAgICAgICAgdGhpcy5pc0Zvcm1WaWV3TW9kZWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zaG93KCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZm9ybS1mbG93JzpcbiAgICAgICAgICAgICAgdGhpcy5mb3JtRmxvd0luc3RhbmNlSWQgPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5mb3JtRmxvd0luc3RhbmNlSWQ7XG4gICAgICAgICAgICAgIHRoaXMuaXNGb3JtVmlld01vZGVsID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMubW9kYWwuc2hvdygpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Zvcm0tdmlldy1tb2RlbCc6XG4gICAgICAgICAgICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5mb3JtRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgdGhpcy5mb3JtTmFtZSA9IHN0YXJ0UHJvY2Vzc1Jlc3VsdC5wcm9wZXJ0aWVzLmZvcm1OYW1lO1xuICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaW5rSWQgPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvY2Vzc0xpbmtJZDtcbiAgICAgICAgICAgICAgdGhpcy5pc0Zvcm1WaWV3TW9kZWwgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1WaWV3TW9kZWxDb21wb25lbnQoKTtcbiAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zaG93KCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTGlua0lkID0gc3RhcnRQcm9jZXNzUmVzdWx0LnByb2Nlc3NMaW5rSWQ7XG4gICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0xpbmtTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldFZhcmlhYmxlcygpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHZhcmlhYmxlcyA9PiB7XG4gICAgICAgICAgICAgICAgICBsZXQgdXJsID0gdGhpcy51cmxSZXNvbHZlclNlcnZpY2UucmVzb2x2ZVVybFZhcmlhYmxlcyhcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMudXJsLFxuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMudmFyaWFibGVzXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJykuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0xpbmtTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5zdWJtaXRVUkxQcm9jZXNzTGluayh0aGlzLnByb2Nlc3NMaW5rSWQpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdENvbXBsZXRlZChyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1aS1jb21wb25lbnQnOlxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1DdXN0b21Db21wb25lbnQoc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMuY29tcG9uZW50S2V5KTtcbiAgICAgICAgICAgICAgdGhpcy5pc1VJQ29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zaG93KCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm5vUHJvY2Vzc0xpbmtlZC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdvdG9Qcm9jZXNzTGlua1NjcmVlbigpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3Byb2Nlc3MtbGlua3MnXSwge3F1ZXJ5UGFyYW1zOiB7cHJvY2VzczogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleX19KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kYWxUaXRsZSgpIHtcbiAgICBjb25zdCBmYWxsYmFja1RpdGxlID0gYFN0YXJ0IC0gJHt0aGlzLnByb2Nlc3NOYW1lfWA7XG4gICAgcmV0dXJuIHRoaXMuX3VzZVN0YXJ0RXZlbnROYW1lQXNTdGFydEZvcm1UaXRsZVxuICAgICAgPyB0aGlzLl9zdGFydEV2ZW50TmFtZSB8fCBmYWxsYmFja1RpdGxlXG4gICAgICA6IGZhbGxiYWNrVGl0bGU7XG4gIH1cblxuICBvcGVuTW9kYWwocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbikge1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLnByb2Nlc3NEZWZpbml0aW9uS2V5O1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCA9IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24ubGF0ZXN0VmVyc2lvbklkO1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24uaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZTtcbiAgICB0aGlzLnByb2Nlc3NOYW1lID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5wcm9jZXNzTmFtZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBuZXcgRm9ybWlvT3B0aW9uc0ltcGwoKTtcbiAgICB0aGlzLm9wdGlvbnMuZGlzYWJsZUFsZXJ0cyA9IHRydWU7XG4gICAgY29uc3QgZm9ybWlvQmVmb3JlU3VibWl0OiBGb3JtaW9CZWZvcmVTdWJtaXQgPSBmdW5jdGlvbiAoc3VibWlzc2lvbiwgY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKG51bGwsIHN1Ym1pc3Npb24pO1xuICAgIH07XG4gICAgdGhpcy5vcHRpb25zLnNldEhvb2tzKGZvcm1pb0JlZm9yZVN1Ym1pdCk7XG4gICAgdGhpcy5sb2FkUHJvY2Vzc0xpbmsoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdChzdWJtaXNzaW9uOiBGb3JtaW9TdWJtaXNzaW9uKSB7XG4gICAgdGhpcy5mb3JtaW9TdWJtaXNzaW9uID0gc3VibWlzc2lvbjtcblxuICAgIHRoaXMucHJvY2Vzc0xpbmtTZXJ2aWNlLnN1Ym1pdEZvcm0odGhpcy5wcm9jZXNzTGlua0lkLCBzdWJtaXNzaW9uLmRhdGEpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZm9ybVN1Ym1pc3Npb25SZXN1bHQ6IEZvcm1TdWJtaXNzaW9uUmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMuc3VibWl0Q29tcGxldGVkKGZvcm1TdWJtaXNzaW9uUmVzdWx0KTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyb3JzID0+IHtcbiAgICAgICAgdGhpcy5mb3JtLnNob3dFcnJvcnMoZXJyb3JzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZm9ybUZsb3dTdWJtaXR0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtRmxvd0NvbXBsZXRlLmVtaXQobnVsbCk7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gIH1cblxuICBwdWJsaWMgaXNVc2VyQWRtaW4oKTogdm9pZCB7XG4gICAgdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlLmdldFVzZXJTdWJqZWN0KCkuc3Vic2NyaWJlKFxuICAgICAgdXNlcklkZW50aXR5ID0+IHtcbiAgICAgICAgdGhpcy5pc0FkbWluID0gdXNlcklkZW50aXR5LnJvbGVzLmluY2x1ZGVzKCdST0xFX0FETUlOJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLmlzQWRtaW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJtaXRDb21wbGV0ZWQoZm9ybVN1Ym1pc3Npb25SZXN1bHQ6IEZvcm1TdWJtaXNzaW9uUmVzdWx0KTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZVxuICAgICAgLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICByZXNvdXJjZTogRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRS5qc29uU2NoZW1hRG9jdW1lbnQsXG4gICAgICAgIGlkZW50aWZpZXI6IGZvcm1TdWJtaXNzaW9uUmVzdWx0LmRvY3VtZW50SWQsXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZShjYW5WaWV3Q2FzZSA9PiB7XG4gICAgICAgIGlmIChjYW5WaWV3Q2FzZSkge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgICdkb3NzaWVycycsXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICAnZG9jdW1lbnQnLFxuICAgICAgICAgICAgZm9ybVN1Ym1pc3Npb25SZXN1bHQuZG9jdW1lbnRJZCxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxpc3RTZXJ2aWNlLmZvcmNlUmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9ybVZpZXdNb2RlbENvbXBvbmVudCgpIHtcbiAgICBpZiAoIXRoaXMuZm9ybVZpZXdNb2RlbC5jb21wb25lbnQpIHJldHVybjtcbiAgICB0aGlzLmZvcm1WaWV3TW9kZWxEeW5hbWljQ29udGFpbmVyLmNsZWFyKCk7XG4gICAgY29uc3QgZm9ybVZpZXdNb2RlbENvbXBvbmVudCA9IHRoaXMuZm9ybVZpZXdNb2RlbER5bmFtaWNDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgdGhpcy5mb3JtVmlld01vZGVsLmNvbXBvbmVudFxuICAgICk7XG4gICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5mb3JtID0gdGhpcy5mb3JtRGVmaW5pdGlvbjtcbiAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmZvcm1OYW1lID0gdGhpcy5mb3JtTmFtZTtcbiAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmlzU3RhcnRGb3JtID0gdHJ1ZTtcbiAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLnByb2Nlc3NEZWZpbml0aW9uS2V5ID0gdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWU7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBmb3JtVmlld01vZGVsQ29tcG9uZW50Lmluc3RhbmNlLmZvcm1TdWJtaXQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5saXN0U2VydmljZS5mb3JjZVJlZnJlc2goKTtcbiAgICAgICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldEZvcm1DdXN0b21Db21wb25lbnQoZm9ybUN1c3RvbUNvbXBvbmVudEtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQ3VzdG9tQ29tcG9uZW50RHluYW1pY0NvbnRhaW5lci5jbGVhcigpO1xuICAgIGlmICghdGhpcy5mb3JtQ3VzdG9tQ29tcG9uZW50Q29uZmlnKSByZXR1cm47XG4gICAgdGhpcy5fZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyA9PiB7XG4gICAgICBjb25zdCBjdXN0b21Db21wb25lbnQgPSBmb3JtQ3VzdG9tQ29tcG9uZW50Q29uZmlnW2Zvcm1DdXN0b21Db21wb25lbnRLZXldO1xuICAgICAgY29uc3QgcmVuZGVyZWRDb21wb25lbnQgPSB0aGlzLmZvcm1DdXN0b21Db21wb25lbnREeW5hbWljQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgY3VzdG9tQ29tcG9uZW50XG4gICAgICApIGFzIENvbXBvbmVudFJlZjxGb3JtQ3VzdG9tQ29tcG9uZW50PjtcblxuICAgICAgcmVuZGVyZWRDb21wb25lbnQuaW5zdGFuY2UucHJvY2Vzc0RlZmluaXRpb25LZXkgPSB0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5O1xuICAgICAgcmVuZGVyZWRDb21wb25lbnQuaW5zdGFuY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZTtcblxuICAgICAgcmVuZGVyZWRDb21wb25lbnQuaW5zdGFuY2Uuc3VibWl0dGVkRXZlbnQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPHZhbHRpbW8tbW9kYWwgI3Byb2Nlc3NTdGFydE1vZGFsIGVsZW1lbnRJZD1cInByb2Nlc3NTdGFydE1vZGFsXCIgW3RpdGxlXT1cIm1vZGFsVGl0bGVcIj5cbiAgPGRpdiBib2R5ICpuZ0lmPVwiZm9ybURlZmluaXRpb24gJiYgIWlzRm9ybVZpZXdNb2RlbFwiPlxuICAgIDx2YWx0aW1vLWZvcm0taW8gI2Zvcm0gW2Zvcm1dPVwiZm9ybURlZmluaXRpb25cIiBbb3B0aW9uc109XCJvcHRpb25zXCIgKHN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCI+XG4gICAgPC92YWx0aW1vLWZvcm0taW8+XG4gIDwvZGl2PlxuICA8ZGl2IGJvZHk+XG4gICAgPG5nLXRlbXBsYXRlICNmb3JtVmlld01vZGVsQ29tcG9uZW50PjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb3JtQ3VzdG9tQ29tcG9uZW50PjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2IGJvZHkgKm5nSWY9XCJmb3JtRmxvd0luc3RhbmNlSWRcIj5cbiAgICA8dmFsdGltby1mb3JtLWZsb3dcbiAgICAgIFtmb3JtRmxvd0luc3RhbmNlSWRdPVwiZm9ybUZsb3dJbnN0YW5jZUlkXCJcbiAgICAgIChmb3JtRmxvd0NvbXBsZXRlKT1cImZvcm1GbG93U3VibWl0dGVkKClcIlxuICAgID48L3ZhbHRpbW8tZm9ybS1mbG93PlxuICA8L2Rpdj5cbiAgPGRpdiBib2R5ICpuZ0lmPVwiIWZvcm1GbG93SW5zdGFuY2VJZCAmJiAhZm9ybURlZmluaXRpb24gJiYgaXNBZG1pbiAmJiAhaXNVSUNvbXBvbmVudFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTAgcC0zIHRleHQtY2VudGVyXCJcbiAgICAgIFt0cmFuc2xhdGVdPVwiJ2Zvcm1NYW5hZ2VtZW50Lm5vRm9ybURlZmluaXRpb25Gb3VuZEFkbWluJ1wiXG4gICAgPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYi0wIG10LTQgcC0zIHRleHQtY2VudGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJnb3RvUHJvY2Vzc0xpbmtTY3JlZW4oKVwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNwYWNlXCJcbiAgICAgICAgaWQ9XCJwcm9jZXNzLWxpbmstYnV0dG9uXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIHt7ICdmb3JtTWFuYWdlbWVudC5nb3RvUHJvY2Vzc0xpbmtzQnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGJvZHkgKm5nSWY9XCIhZm9ybUZsb3dJbnN0YW5jZUlkICYmICFmb3JtRGVmaW5pdGlvbiAmJiAhaXNBZG1pbiAmJiAhaXNVSUNvbXBvbmVudFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTAgcC0zIHRleHQtY2VudGVyXCJcbiAgICAgIFt0cmFuc2xhdGVdPVwiJ2Zvcm1NYW5hZ2VtZW50Lm5vRm9ybURlZmluaXRpb25Gb3VuZFVzZXInXCJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PlxuPC92YWx0aW1vLW1vZGFsPlxuIl19
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQ0wsMkJBQTJCLEdBTzVCLE1BQU0sdUJBQXVCLENBQUM7QUFHL0IsT0FBTyxFQUVMLGlCQUFpQixHQUdsQixNQUFNLHFCQUFxQixDQUFDO0FBSTdCLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwQyxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsa0NBQWtDLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUUvRixPQUFPLEVBQWdCLHFCQUFxQixFQUFnQixNQUFNLGlCQUFpQixDQUFDO0FBQ3BGLE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVFuRCxNQUFNLE9BQU8saUNBQWlDO0lBK0I1QyxZQUNVLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxjQUE4QixFQUM5Qixl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c0JBQXpCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtEb2N1bWVudFNlcnZpY2UsIFByb2Nlc3NEb2N1bWVudERlZmluaXRpb259IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7XG4gIEZPUk1fQ1VTVE9NX0NPTVBPTkVOVF9UT0tFTixcbiAgRm9ybUN1c3RvbUNvbXBvbmVudCxcbiAgRm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyxcbiAgRm9ybUZsb3dTZXJ2aWNlLFxuICBGb3JtU3VibWlzc2lvblJlc3VsdCxcbiAgUHJvY2Vzc0xpbmtTZXJ2aWNlLFxuICBVcmxSZXNvbHZlclNlcnZpY2UsXG59IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MtbGluayc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1Byb2Nlc3NTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9wcm9jZXNzJztcbmltcG9ydCB7XG4gIEZvcm1pb0NvbXBvbmVudCxcbiAgRm9ybWlvT3B0aW9uc0ltcGwsXG4gIEZvcm1pb1N1Ym1pc3Npb24sXG4gIFZhbHRpbW9Gb3JtaW9PcHRpb25zLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Rm9ybWlvQmVmb3JlU3VibWl0fSBmcm9tICdAZm9ybWlvL2FuZ3VsYXIvZm9ybWlvLmNvbW1vbic7XG5pbXBvcnQge0Zvcm1pb0Zvcm19IGZyb20gJ0Bmb3JtaW8vYW5ndWxhcic7XG5pbXBvcnQge1VzZXJQcm92aWRlclNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDQU5fVklFV19DQVNFX1BFUk1JU1NJT04sIERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0V9IGZyb20gJy4uLy4uL3Blcm1pc3Npb25zJztcbmltcG9ydCB7RG9zc2llckxpc3RTZXJ2aWNlLCBTdGFydE1vZGFsU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBGT1JNX1ZJRVdfTU9ERUxfVE9LRU4sIEZvcm1WaWV3TW9kZWx9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJQcm9jZXNzU3RhcnRNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmc7XG4gIHB1YmxpYyBwcm9jZXNzRGVmaW5pdGlvbklkOiBzdHJpbmc7XG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBwcm9jZXNzTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9zdGFydEV2ZW50TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF91c2VTdGFydEV2ZW50TmFtZUFzU3RhcnRGb3JtVGl0bGUhOiBib29sZWFuO1xuICBwdWJsaWMgZm9ybURlZmluaXRpb246IEZvcm1pb0Zvcm07XG4gIHB1YmxpYyBmb3JtTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZm9ybUZsb3dJbnN0YW5jZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtaW9TdWJtaXNzaW9uOiBGb3JtaW9TdWJtaXNzaW9uO1xuICBwcml2YXRlIHByb2Nlc3NMaW5rSWQ6IHN0cmluZztcbiAgcHVibGljIG9wdGlvbnM6IFZhbHRpbW9Gb3JtaW9PcHRpb25zO1xuICBwdWJsaWMgaXNBZG1pbjogYm9vbGVhbjtcbiAgcHVibGljIGlzRm9ybVZpZXdNb2RlbCA9IGZhbHNlO1xuICBwdWJsaWMgaXNVSUNvbXBvbmVudCA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdmb3JtJywge3N0YXRpYzogZmFsc2V9KSBmb3JtOiBGb3JtaW9Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2Zvcm1WaWV3TW9kZWxDb21wb25lbnQnLCB7c3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmfSlcbiAgcHVibGljIGZvcm1WaWV3TW9kZWxEeW5hbWljQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuICBAVmlld0NoaWxkKCdmb3JtQ3VzdG9tQ29tcG9uZW50Jywge3N0YXRpYzogZmFsc2UsIHJlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICBwdWJsaWMgZm9ybUN1c3RvbUNvbXBvbmVudER5bmFtaWNDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG4gIEBPdXRwdXQoKSBmb3JtRmxvd0NvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbm9Qcm9jZXNzTGlua2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBtb2RhbE9wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIEZvcm1DdXN0b21Db21wb25lbnRDb25maWcgfCB7fVxuICA+KHt9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcHJvY2Vzc1NlcnZpY2U6IFByb2Nlc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9jZXNzTGlua1NlcnZpY2U6IFByb2Nlc3NMaW5rU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1GbG93U2VydmljZTogRm9ybUZsb3dTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclByb3ZpZGVyU2VydmljZTogVXNlclByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIGxpc3RTZXJ2aWNlOiBEb3NzaWVyTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdGFydE1vZGFsU2VydmljZTogU3RhcnRNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRk9STV9WSUVXX01PREVMX1RPS0VOKSBwcml2YXRlIHJlYWRvbmx5IGZvcm1WaWV3TW9kZWw6IEZvcm1WaWV3TW9kZWwsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEZPUk1fQ1VTVE9NX0NPTVBPTkVOVF9UT0tFTilcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1DdXN0b21Db21wb25lbnRDb25maWc6IEZvcm1DdXN0b21Db21wb25lbnRDb25maWcsXG4gICAgcHJpdmF0ZSB1cmxSZXNvbHZlclNlcnZpY2U6IFVybFJlc29sdmVyU2VydmljZVxuICApIHtcbiAgICB0aGlzLl91c2VTdGFydEV2ZW50TmFtZUFzU3RhcnRGb3JtVGl0bGUgPVxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5mZWF0dXJlVG9nZ2xlcz8udXNlU3RhcnRFdmVudE5hbWVBc1N0YXJ0Rm9ybVRpdGxlO1xuXG4gICAgdGhpcy5fZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZyQubmV4dChmb3JtQ3VzdG9tQ29tcG9uZW50Q29uZmlnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNVc2VyQWRtaW4oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFByb2Nlc3NMaW5rKCkge1xuICAgIHRoaXMucHJvY2Vzc0xpbmtJZCA9IG51bGw7XG4gICAgdGhpcy5mb3JtRGVmaW5pdGlvbiA9IG51bGw7XG4gICAgdGhpcy5mb3JtRmxvd0luc3RhbmNlSWQgPSBudWxsO1xuICAgIGlmICh0aGlzLl91c2VTdGFydEV2ZW50TmFtZUFzU3RhcnRGb3JtVGl0bGUpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb25YbWwodGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5fc3RhcnRFdmVudE5hbWUgPSB0aGlzLnN0YXJ0TW9kYWxTZXJ2aWNlLmdldFN0YW5kYXJkU3RhcnRFdmVudFRpdGxlKHJlc3VsdC5icG1uMjBYbWwpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2VcbiAgICAgIC5nZXRQcm9jZXNzRGVmaW5pdGlvblN0YXJ0UHJvY2Vzc0xpbmsoXG4gICAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lXG4gICAgICApXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZShzdGFydFByb2Nlc3NSZXN1bHQgPT4ge1xuICAgICAgICBpZiAoc3RhcnRQcm9jZXNzUmVzdWx0KSB7XG4gICAgICAgICAgc3dpdGNoIChzdGFydFByb2Nlc3NSZXN1bHQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgICAgICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5wcmVmaWxsZWRGb3JtO1xuICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaW5rSWQgPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvY2Vzc0xpbmtJZDtcbiAgICAgICAgICAgICAgdGhpcy5pc0Zvcm1WaWV3TW9kZWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuQ2RzTW9kYWwoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmb3JtLWZsb3cnOlxuICAgICAgICAgICAgICB0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCA9IHN0YXJ0UHJvY2Vzc1Jlc3VsdC5wcm9wZXJ0aWVzLmZvcm1GbG93SW5zdGFuY2VJZDtcbiAgICAgICAgICAgICAgdGhpcy5pc0Zvcm1WaWV3TW9kZWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuQ2RzTW9kYWwoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmb3JtLXZpZXctbW9kZWwnOlxuICAgICAgICAgICAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMuZm9ybURlZmluaXRpb247XG4gICAgICAgICAgICAgIHRoaXMuZm9ybU5hbWUgPSBzdGFydFByb2Nlc3NSZXN1bHQucHJvcGVydGllcy5mb3JtTmFtZTtcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTGlua0lkID0gc3RhcnRQcm9jZXNzUmVzdWx0LnByb2Nlc3NMaW5rSWQ7XG4gICAgICAgICAgICAgIHRoaXMuaXNGb3JtVmlld01vZGVsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtVmlld01vZGVsQ29tcG9uZW50KCk7XG4gICAgICAgICAgICAgIHRoaXMub3BlbkNkc01vZGFsKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTGlua0lkID0gc3RhcnRQcm9jZXNzUmVzdWx0LnByb2Nlc3NMaW5rSWQ7XG4gICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0xpbmtTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldFZhcmlhYmxlcygpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHZhcmlhYmxlcyA9PiB7XG4gICAgICAgICAgICAgICAgICBsZXQgdXJsID0gdGhpcy51cmxSZXNvbHZlclNlcnZpY2UucmVzb2x2ZVVybFZhcmlhYmxlcyhcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMudXJsLFxuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMudmFyaWFibGVzXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJykuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0xpbmtTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5zdWJtaXRVUkxQcm9jZXNzTGluayh0aGlzLnByb2Nlc3NMaW5rSWQpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdENvbXBsZXRlZChyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1aS1jb21wb25lbnQnOlxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1DdXN0b21Db21wb25lbnQoc3RhcnRQcm9jZXNzUmVzdWx0LnByb3BlcnRpZXMuY29tcG9uZW50S2V5KTtcbiAgICAgICAgICAgICAgdGhpcy5pc1VJQ29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuQ2RzTW9kYWwoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubm9Qcm9jZXNzTGlua2VkLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ290b1Byb2Nlc3NMaW5rU2NyZWVuKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VDZHNNb2RhbCgpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsncHJvY2Vzcy1saW5rcyddLCB7cXVlcnlQYXJhbXM6IHtwcm9jZXNzOiB0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5fX0pO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RhbFRpdGxlKCkge1xuICAgIGNvbnN0IGZhbGxiYWNrVGl0bGUgPSBgU3RhcnQgLSAke3RoaXMucHJvY2Vzc05hbWV9YDtcbiAgICByZXR1cm4gdGhpcy5fdXNlU3RhcnRFdmVudE5hbWVBc1N0YXJ0Rm9ybVRpdGxlXG4gICAgICA/IHRoaXMuX3N0YXJ0RXZlbnROYW1lIHx8IGZhbGxiYWNrVGl0bGVcbiAgICAgIDogZmFsbGJhY2tUaXRsZTtcbiAgfVxuXG4gIG9wZW5Nb2RhbChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKSB7XG4gICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSA9IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24uaWQucHJvY2Vzc0RlZmluaXRpb25LZXk7XG4gICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5sYXRlc3RWZXJzaW9uSWQ7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5pZC5kb2N1bWVudERlZmluaXRpb25JZC5uYW1lO1xuICAgIHRoaXMucHJvY2Vzc05hbWUgPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLnByb2Nlc3NOYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG5ldyBGb3JtaW9PcHRpb25zSW1wbCgpO1xuICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlQWxlcnRzID0gdHJ1ZTtcbiAgICBjb25zdCBmb3JtaW9CZWZvcmVTdWJtaXQ6IEZvcm1pb0JlZm9yZVN1Ym1pdCA9IGZ1bmN0aW9uIChzdWJtaXNzaW9uLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sobnVsbCwgc3VibWlzc2lvbik7XG4gICAgfTtcbiAgICB0aGlzLm9wdGlvbnMuc2V0SG9va3MoZm9ybWlvQmVmb3JlU3VibWl0KTtcbiAgICB0aGlzLmxvYWRQcm9jZXNzTGluaygpO1xuICB9XG5cbiAgcHVibGljIG9uU3VibWl0KHN1Ym1pc3Npb246IEZvcm1pb1N1Ym1pc3Npb24pIHtcbiAgICB0aGlzLmZvcm1pb1N1Ym1pc3Npb24gPSBzdWJtaXNzaW9uO1xuXG4gICAgdGhpcy5wcm9jZXNzTGlua1NlcnZpY2Uuc3VibWl0Rm9ybSh0aGlzLnByb2Nlc3NMaW5rSWQsIHN1Ym1pc3Npb24uZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChmb3JtU3VibWlzc2lvblJlc3VsdDogRm9ybVN1Ym1pc3Npb25SZXN1bHQpID0+IHtcbiAgICAgICAgdGhpcy5zdWJtaXRDb21wbGV0ZWQoZm9ybVN1Ym1pc3Npb25SZXN1bHQpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnJvcnMgPT4ge1xuICAgICAgICB0aGlzLmZvcm0uc2hvd0Vycm9ycyhlcnJvcnMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtRmxvd1N1Ym1pdHRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1GbG93Q29tcGxldGUuZW1pdChudWxsKTtcbiAgICB0aGlzLmNsb3NlQ2RzTW9kYWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1VzZXJBZG1pbigpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2UuZ2V0VXNlclN1YmplY3QoKS5zdWJzY3JpYmUoXG4gICAgICB1c2VySWRlbnRpdHkgPT4ge1xuICAgICAgICB0aGlzLmlzQWRtaW4gPSB1c2VySWRlbnRpdHkucm9sZXMuaW5jbHVkZXMoJ1JPTEVfQURNSU4nKTtcbiAgICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIHRoaXMuaXNBZG1pbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZVNlbGVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlQ2RzTW9kYWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3VibWl0Q29tcGxldGVkKGZvcm1TdWJtaXNzaW9uUmVzdWx0OiBGb3JtU3VibWlzc2lvblJlc3VsdCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VDZHNNb2RhbCgpO1xuICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2VcbiAgICAgIC5yZXF1ZXN0UGVybWlzc2lvbihDQU5fVklFV19DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50LFxuICAgICAgICBpZGVudGlmaWVyOiBmb3JtU3VibWlzc2lvblJlc3VsdC5kb2N1bWVudElkLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoY2FuVmlld0Nhc2UgPT4ge1xuICAgICAgICBpZiAoY2FuVmlld0Nhc2UpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICAgICAgICAnZG9zc2llcnMnLFxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lLFxuICAgICAgICAgICAgJ2RvY3VtZW50JyxcbiAgICAgICAgICAgIGZvcm1TdWJtaXNzaW9uUmVzdWx0LmRvY3VtZW50SWQsXG4gICAgICAgICAgXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5saXN0U2VydmljZS5mb3JjZVJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldEZvcm1WaWV3TW9kZWxDb21wb25lbnQoKSB7XG4gICAgaWYgKCF0aGlzLmZvcm1WaWV3TW9kZWwuY29tcG9uZW50KSByZXR1cm47XG4gICAgdGhpcy5mb3JtVmlld01vZGVsRHluYW1pY0NvbnRhaW5lci5jbGVhcigpO1xuICAgIGNvbnN0IGZvcm1WaWV3TW9kZWxDb21wb25lbnQgPSB0aGlzLmZvcm1WaWV3TW9kZWxEeW5hbWljQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIHRoaXMuZm9ybVZpZXdNb2RlbC5jb21wb25lbnRcbiAgICApO1xuICAgIGZvcm1WaWV3TW9kZWxDb21wb25lbnQuaW5zdGFuY2UuZm9ybSA9IHRoaXMuZm9ybURlZmluaXRpb247XG4gICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5mb3JtTmFtZSA9IHRoaXMuZm9ybU5hbWU7XG4gICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5pc1N0YXJ0Rm9ybSA9IHRydWU7XG4gICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5wcm9jZXNzRGVmaW5pdGlvbktleSA9IHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXk7XG4gICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5kb2N1bWVudERlZmluaXRpb25OYW1lID0gdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgZm9ybVZpZXdNb2RlbENvbXBvbmVudC5pbnN0YW5jZS5mb3JtU3VibWl0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubGlzdFNlcnZpY2UuZm9yY2VSZWZyZXNoKCk7XG4gICAgICAgIHRoaXMuY2xvc2VDZHNNb2RhbCgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb3JtQ3VzdG9tQ29tcG9uZW50KGZvcm1DdXN0b21Db21wb25lbnRLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUN1c3RvbUNvbXBvbmVudER5bmFtaWNDb250YWluZXIuY2xlYXIoKTtcbiAgICBpZiAoIXRoaXMuZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZykgcmV0dXJuO1xuICAgIHRoaXMuX2Zvcm1DdXN0b21Db21wb25lbnRDb25maWckLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZvcm1DdXN0b21Db21wb25lbnRDb25maWcgPT4ge1xuICAgICAgY29uc3QgY3VzdG9tQ29tcG9uZW50ID0gZm9ybUN1c3RvbUNvbXBvbmVudENvbmZpZ1tmb3JtQ3VzdG9tQ29tcG9uZW50S2V5XTtcbiAgICAgIGNvbnN0IHJlbmRlcmVkQ29tcG9uZW50ID0gdGhpcy5mb3JtQ3VzdG9tQ29tcG9uZW50RHluYW1pY0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoXG4gICAgICAgIGN1c3RvbUNvbXBvbmVudFxuICAgICAgKSBhcyBDb21wb25lbnRSZWY8Rm9ybUN1c3RvbUNvbXBvbmVudD47XG5cbiAgICAgIHJlbmRlcmVkQ29tcG9uZW50Lmluc3RhbmNlLnByb2Nlc3NEZWZpbml0aW9uS2V5ID0gdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICAgIHJlbmRlcmVkQ29tcG9uZW50Lmluc3RhbmNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWU7XG5cbiAgICAgIHJlbmRlcmVkQ29tcG9uZW50Lmluc3RhbmNlLnN1Ym1pdHRlZEV2ZW50LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VDZHNNb2RhbCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5DZHNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsT3BlbiQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VDZHNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsT3BlbiQubmV4dChmYWxzZSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy1tb2RhbCBbb3Blbl09XCJtb2RhbE9wZW4kIHwgYXN5bmNcIiB2YWx0aW1vQ2RzTW9kYWwgc2l6ZT1cInNtXCI+XG4gIDxjZHMtbW9kYWwtaGVhZGVyIFtzaG93Q2xvc2VCdXR0b25dPVwidHJ1ZVwiIChjbG9zZVNlbGVjdCk9XCJvbkNsb3NlU2VsZWN0KClcIlxuICAgID48aDMgY2RzTW9kYWxIZWFkZXJIZWFkaW5nPlxuICAgICAge3sgbW9kYWxUaXRsZSB9fVxuICAgIDwvaDM+XG4gIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICA8c2VjdGlvbiBjZHNNb2RhbENvbnRlbnQgW2Nkc0xheWVyXT1cIjFcIiBjbGFzcz1cInByb2Nlc3Mtc3RhcnQtbW9kYWwtY29udGVudFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9ybVZpZXdNb2RlbENvbXBvbmVudD48L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNmb3JtQ3VzdG9tQ29tcG9uZW50PjwvbmctdGVtcGxhdGU+XG5cbiAgICBAaWYgKGZvcm1EZWZpbml0aW9uICYmICFpc0Zvcm1WaWV3TW9kZWwpIHtcbiAgICAgIDx2YWx0aW1vLWZvcm0taW9cbiAgICAgICAgI2Zvcm1cbiAgICAgICAgW2Zvcm1dPVwiZm9ybURlZmluaXRpb25cIlxuICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgICAgKHN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvdmFsdGltby1mb3JtLWlvPlxuICAgIH1cblxuICAgIEBpZiAoZm9ybUZsb3dJbnN0YW5jZUlkKSB7XG4gICAgICA8dmFsdGltby1mb3JtLWZsb3dcbiAgICAgICAgW2Zvcm1GbG93SW5zdGFuY2VJZF09XCJmb3JtRmxvd0luc3RhbmNlSWRcIlxuICAgICAgICAoZm9ybUZsb3dDb21wbGV0ZSk9XCJmb3JtRmxvd1N1Ym1pdHRlZCgpXCJcbiAgICAgID48L3ZhbHRpbW8tZm9ybS1mbG93PlxuICAgIH1cblxuICAgIEBpZiAoIWZvcm1GbG93SW5zdGFuY2VJZCAmJiAhZm9ybURlZmluaXRpb24gJiYgaXNBZG1pbiAmJiAhaXNVSUNvbXBvbmVudCkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImJnLXdhcm5pbmcgdGV4dC1ibGFjayBtYi0wIHAtMyB0ZXh0LWNlbnRlclwiXG4gICAgICAgIFt0cmFuc2xhdGVdPVwiJ2Zvcm1NYW5hZ2VtZW50Lm5vRm9ybURlZmluaXRpb25Gb3VuZEFkbWluJ1wiXG4gICAgICA+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItMCBtdC00IHAtMyB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cImdvdG9Qcm9jZXNzTGlua1NjcmVlbigpXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zcGFjZVwiXG4gICAgICAgICAgaWQ9XCJwcm9jZXNzLWxpbmstYnV0dG9uXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdmb3JtTWFuYWdlbWVudC5nb3RvUHJvY2Vzc0xpbmtzQnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoIWZvcm1GbG93SW5zdGFuY2VJZCAmJiAhZm9ybURlZmluaXRpb24gJiYgIWlzQWRtaW4gJiYgIWlzVUlDb21wb25lbnQpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJiZy13YXJuaW5nIHRleHQtYmxhY2sgbWItMCBwLTMgdGV4dC1jZW50ZXJcIlxuICAgICAgICBbdHJhbnNsYXRlXT1cIidmb3JtTWFuYWdlbWVudC5ub0Zvcm1EZWZpbml0aW9uRm91bmRVc2VyJ1wiXG4gICAgICA+PC9kaXY+XG4gICAgfVxuICA8L3NlY3Rpb24+XG48L2Nkcy1tb2RhbD5cbiJdfQ==