@valtimo/plugin 12.5.1 → 12.6.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 (63) hide show
  1. package/esm2022/lib/components/default-plugin-configuration/default-plugin-configuration.component.mjs +1 -1
  2. package/esm2022/lib/components/plugin-configuration-container/plugin-configuration-container.component.mjs +16 -3
  3. package/esm2022/lib/models/plugin.mjs +1 -1
  4. package/esm2022/lib/plugins/besluiten-api/components/besluiten-api-configuration/besluiten-api-configuration.component.mjs +3 -3
  5. package/esm2022/lib/plugins/besluiten-api/components/create-zaak-besluit/create-zaak-besluit-configuration.component.mjs +3 -3
  6. package/esm2022/lib/plugins/besluiten-api/components/link-document-to-besluit/link-document-to-besluit-configuration.component.mjs +3 -3
  7. package/esm2022/lib/plugins/catalogi-api/components/catalogi-api-configuration/catalogi-api-configuration.component.mjs +3 -3
  8. package/esm2022/lib/plugins/catalogi-api/components/get-besluittype/get-besluittype-configuration.component.mjs +3 -3
  9. package/esm2022/lib/plugins/catalogi-api/components/get-resultaattype/get-resultaattype-configuration.component.mjs +3 -3
  10. package/esm2022/lib/plugins/catalogi-api/components/get-statustype/get-statustype-configuration.component.mjs +3 -3
  11. package/esm2022/lib/plugins/documenten-api/components/documenten-api-configuration/documenten-api-configuration.component.mjs +3 -3
  12. package/esm2022/lib/plugins/documenten-api/components/download-document/download-document-configuration.component.mjs +3 -3
  13. package/esm2022/lib/plugins/documenten-api/components/store-temp-document/store-temp-document-configuration.component.mjs +3 -3
  14. package/esm2022/lib/plugins/exact/components/exact-action-get-request-configuration/exact-get-request-configuration.component.mjs +3 -3
  15. package/esm2022/lib/plugins/exact/components/exact-action-post-request-configuration/exact-post-request-configuration.component.mjs +3 -3
  16. package/esm2022/lib/plugins/exact/components/exact-action-put-request-configuration/exact-put-request-configuration.component.mjs +3 -3
  17. package/esm2022/lib/plugins/exact/components/exact-plugin-configuration/exact-plugin-configuration.component.mjs +3 -3
  18. package/esm2022/lib/plugins/notificaties-api/components/notificaties-api-configuration/notificaties-api-configuration.component.mjs +3 -3
  19. package/esm2022/lib/plugins/notificaties-api-authentication/components/open-notificaties-configuration/open-notificaties-configuration.component.mjs +3 -3
  20. package/esm2022/lib/plugins/object-token-authentication/components/object-token-authentication-configuration/object-token-authencation-configuration.component.mjs +3 -3
  21. package/esm2022/lib/plugins/objecten-api/components/delete-object/delete-object.component.mjs +3 -3
  22. package/esm2022/lib/plugins/objecten-api/components/objecten-api-configuration/objecten-api-configuration.component.mjs +3 -3
  23. package/esm2022/lib/plugins/objecttypen-api/components/objecttypen-api-configuration/objecttypen-api-configuration.component.mjs +3 -3
  24. package/esm2022/lib/plugins/open-zaak/components/open-zaak-configuration/open-zaak-configuration.component.mjs +3 -3
  25. package/esm2022/lib/plugins/portaaltaak/components/create-portal-task/create-portal-task.component.mjs +3 -3
  26. package/esm2022/lib/plugins/portaaltaak/components/portaaltaak-configuration/portaaltaak-configuration.component.mjs +3 -3
  27. package/esm2022/lib/plugins/smart-documents/components/generate-document-configuration/generate-document-configuration.component.mjs +3 -3
  28. package/esm2022/lib/plugins/smart-documents/components/get-template-names/get-template-names.component.mjs +3 -3
  29. package/esm2022/lib/plugins/smart-documents/components/smart-documents-configuration/smart-documents-configuration.component.mjs +3 -3
  30. package/esm2022/lib/plugins/verzoek/components/verzoek-configuration/verzoek-configuration.component.mjs +3 -3
  31. package/esm2022/lib/plugins/zaken-api/components/create-natuurlijk-persoon-zaak-rol/create-natuurlijk-persoon-zaak-rol.component.mjs +3 -3
  32. package/esm2022/lib/plugins/zaken-api/components/create-niet-natuurlijk-persoon-zaak-rol/create-niet-natuurlijk-persoon-zaak-rol.component.mjs +3 -3
  33. package/esm2022/lib/plugins/zaken-api/components/create-zaak/create-zaak-configuration.component.mjs +43 -11
  34. package/esm2022/lib/plugins/zaken-api/components/create-zaak-resultaat/create-zaak-resultaat-configuration.component.mjs +3 -3
  35. package/esm2022/lib/plugins/zaken-api/components/create-zaakeigenschap/create-zaakeigenschap.component.mjs +3 -3
  36. package/esm2022/lib/plugins/zaken-api/components/delete-zaakeigenschap/delete-zaakeigenschap.component.mjs +3 -3
  37. package/esm2022/lib/plugins/zaken-api/components/link-document-to-zaak/link-document-to-zaak-configuration.component.mjs +3 -3
  38. package/esm2022/lib/plugins/zaken-api/components/set-zaak-status/set-zaak-status-configuration.component.mjs +3 -3
  39. package/esm2022/lib/plugins/zaken-api/components/set-zaakopschorting/set-zaakopschorting.component.mjs +3 -3
  40. package/esm2022/lib/plugins/zaken-api/components/start-hersteltermijn/start-hersteltermijn-configuration.component.mjs +3 -3
  41. package/esm2022/lib/plugins/zaken-api/components/update-zaakeigenschap/update-zaakeigenschap.component.mjs +3 -3
  42. package/esm2022/lib/plugins/zaken-api/components/zaken-api-configuration/zaken-api-configuration.component.mjs +3 -3
  43. package/esm2022/lib/plugins/zaken-api/models/config.mjs +1 -1
  44. package/esm2022/lib/plugins/zaken-api/models/create-zaak-properties.mjs +6 -0
  45. package/esm2022/lib/plugins/zaken-api/zaken-api-plugin.module.mjs +20 -4
  46. package/esm2022/lib/plugins/zaken-api/zaken-api-plugin.specification.mjs +13 -1
  47. package/fesm2022/valtimo-plugin.mjs +178 -101
  48. package/fesm2022/valtimo-plugin.mjs.map +1 -1
  49. package/lib/components/plugin-configuration-container/plugin-configuration-container.component.d.ts +3 -2
  50. package/lib/components/plugin-configuration-container/plugin-configuration-container.component.d.ts.map +1 -1
  51. package/lib/models/plugin.d.ts +1 -0
  52. package/lib/models/plugin.d.ts.map +1 -1
  53. package/lib/plugins/documenten-api/components/store-temp-document/store-temp-document-configuration.component.d.ts.map +1 -1
  54. package/lib/plugins/zaken-api/components/create-zaak/create-zaak-configuration.component.d.ts +10 -1
  55. package/lib/plugins/zaken-api/components/create-zaak/create-zaak-configuration.component.d.ts.map +1 -1
  56. package/lib/plugins/zaken-api/models/config.d.ts +3 -0
  57. package/lib/plugins/zaken-api/models/config.d.ts.map +1 -1
  58. package/lib/plugins/zaken-api/models/create-zaak-properties.d.ts +3 -0
  59. package/lib/plugins/zaken-api/models/create-zaak-properties.d.ts.map +1 -0
  60. package/lib/plugins/zaken-api/zaken-api-plugin.module.d.ts +2 -1
  61. package/lib/plugins/zaken-api/zaken-api-plugin.module.d.ts.map +1 -1
  62. package/lib/plugins/zaken-api/zaken-api-plugin.specification.d.ts.map +1 -1
  63. package/package.json +1 -1
@@ -16,25 +16,29 @@
16
16
  import { Component, EventEmitter, Input, Output } from '@angular/core';
17
17
  import { BehaviorSubject, combineLatest, filter, map, switchMap, take, tap, } from 'rxjs';
18
18
  import { PluginTranslatePipe } from '../../../../pipes';
19
+ import { Add16, TrashCan16 } from '@carbon/icons';
20
+ import { ExtraPropertiesOptions } from '../../models/create-zaak-properties';
19
21
  import * as i0 from "@angular/core";
20
22
  import * as i1 from "@valtimo/resource";
21
23
  import * as i2 from "@valtimo/document";
22
24
  import * as i3 from "@valtimo/components";
23
25
  import * as i4 from "../../../../pipes";
24
- import * as i5 from "@angular/common";
25
- import * as i6 from "carbon-components-angular";
26
+ import * as i5 from "carbon-components-angular";
27
+ import * as i6 from "@angular/common";
26
28
  import * as i7 from "../../../../pipes/plugin-translate/plugin-translate.pipe";
27
29
  export class CreateZaakConfigurationComponent {
28
30
  set pluginId(value) {
29
31
  this.pluginId$.next(value);
30
32
  }
31
- constructor(openZaakService, documentService, modalService, pluginTranslatePipe) {
33
+ constructor(openZaakService, documentService, modalService, pluginTranslatePipe, iconService) {
32
34
  this.openZaakService = openZaakService;
33
35
  this.documentService = documentService;
34
36
  this.modalService = modalService;
35
37
  this.pluginTranslatePipe = pluginTranslatePipe;
38
+ this.iconService = iconService;
36
39
  this.valid = new EventEmitter();
37
40
  this.configuration = new EventEmitter();
41
+ this.propertyList = [];
38
42
  this.pluginId$ = new BehaviorSubject('');
39
43
  this.selectedInputOption$ = new BehaviorSubject('selection');
40
44
  this.inputTypeOptions$ = this.pluginId$.pipe(filter(pluginId => !!pluginId), switchMap(pluginId => combineLatest([
@@ -46,6 +50,7 @@ export class CreateZaakConfigurationComponent {
46
50
  ]));
47
51
  this.formValue$ = new BehaviorSubject(null);
48
52
  this.valid$ = new BehaviorSubject(false);
53
+ this._properties = new Map();
49
54
  this.loading$ = new BehaviorSubject(true);
50
55
  this.zaakTypeItems$ = this.modalService.modalData$.pipe(switchMap(params => this.documentService.findProcessDocumentDefinitionsByProcessDefinitionKey(params?.processDefinitionKey)), switchMap(processDocumentDefinitions => combineLatest([
51
56
  this.openZaakService.getZaakTypes(),
@@ -71,14 +76,19 @@ export class CreateZaakConfigurationComponent {
71
76
  }), tap(() => {
72
77
  this.loading$.next(false);
73
78
  }));
79
+ this.iconService.registerAll([Add16, TrashCan16]);
74
80
  }
75
81
  ngOnInit() {
76
82
  this.openSaveSubscription();
83
+ this.prefillConfiguration$.pipe(take(1)).subscribe(prefill => {
84
+ ExtraPropertiesOptions.filter(property => !!prefill[property]).forEach(property => this.addCaseProperty(property));
85
+ });
77
86
  }
78
87
  ngOnDestroy() {
79
88
  this.saveSubscription?.unsubscribe();
80
89
  }
81
90
  formValueChange(formValue) {
91
+ this._properties.forEach((value, key) => (formValue[key] = value));
82
92
  const inputTypeZaakTypeToggle = formValue.inputTypeZaakTypeToggle;
83
93
  this.formValue$.next(formValue);
84
94
  this.handleValid(formValue);
@@ -99,7 +109,8 @@ export class CreateZaakConfigurationComponent {
99
109
  return false;
100
110
  }
101
111
  handleValid(formValue) {
102
- const valid = !!(formValue.rsin && formValue.zaaktypeUrl);
112
+ const isPropertyInvalid = this.propertyList.some(property => !!!formValue[property]);
113
+ const valid = !!(formValue.rsin && formValue.zaaktypeUrl) && !isPropertyInvalid;
103
114
  this.valid$.next(valid);
104
115
  this.valid.emit(valid);
105
116
  }
@@ -109,22 +120,43 @@ export class CreateZaakConfigurationComponent {
109
120
  .pipe(take(1))
110
121
  .subscribe(([formValue, valid]) => {
111
122
  if (valid) {
112
- this.configuration.emit({
123
+ const payload = {
113
124
  rsin: formValue.rsin,
114
125
  zaaktypeUrl: formValue.zaaktypeUrl,
115
126
  manualZaakTypeUrl: formValue.manualZaakTypeUrl,
116
- });
127
+ };
128
+ this.propertyList.forEach(property => (payload[property] = formValue[property]));
129
+ this.configuration.emit(payload);
117
130
  }
118
131
  });
119
132
  });
120
133
  }
121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateZaakConfigurationComponent, deps: [{ token: i1.OpenZaakService }, { token: i2.DocumentService }, { token: i3.ModalService }, { token: i4.PluginTranslatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateZaakConfigurationComponent, selector: "valtimo-create-zaak-configuration", inputs: { save$: "save$", disabled$: "disabled$", pluginId: "pluginId", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, providers: [PluginTranslatePipe], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n zaakTypeSelectItems: zaakTypeItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'createZaakInformation' | pluginTranslate: obs.pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n name=\"rsin\"\n [title]=\"'rsin' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.rsin\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [tooltip]=\"'rsinTooltip' | pluginTranslate: obs.pluginId | async\"\n [widthPx]=\"350\"\n >\n </v-input>\n <v-radio\n name=\"inputTypeZaakTypeToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakTypeToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakTypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.zaaktypeUrl\"\n [disabled]=\"obs.disabled || obs.selectedInputOption === 'selection'\"\n [required]=\"true\"\n [tooltip]=\"'zaakTypeTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.zaakTypeSelectItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakType' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n oneSelectItem(obs.zaakTypeSelectItems)\n \"\n [defaultSelectionId]=\"\n (selectItemsIncludeId(obs.zaakTypeSelectItems, obs.prefill?.zaaktypeUrl) &&\n obs.prefill?.zaaktypeUrl) ||\n (oneSelectItem(obs.zaakTypeSelectItems) && obs.zaakTypeSelectItems[0].id)\n \"\n [required]=\"true\"\n [loading]=\"!obs.zaakTypeSelectItems\"\n [tooltip]=\"'zaakTypeSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n ></v-select>\n </ng-container>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}\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: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i3.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId"], outputs: ["valueChange"] }, { kind: "component", type: i3.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "component", type: i3.ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth", "margin", "italic", "loading", "dataTestId"] }, { kind: "component", type: i3.RadioComponent, selector: "v-radio", inputs: ["name", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "tooltip", "required", "smallLabel", "rows", "clear$", "radioValues"], outputs: ["valueChange"] }, { kind: "component", type: i6.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.PluginTranslatePipe, name: "pluginTranslate" }] }); }
134
+ addCaseProperty(property) {
135
+ this.propertyList.push(property);
136
+ }
137
+ removeCaseProperty(property) {
138
+ this.propertyList.splice(this.propertyList.indexOf(property), 1);
139
+ this._properties.delete(property);
140
+ this.onPropertyChanged(property, undefined);
141
+ }
142
+ hasPropertyBeenAdded(property) {
143
+ return this.propertyList.indexOf(property) !== -1;
144
+ }
145
+ onPropertyChanged(property, value) {
146
+ this._properties.set(property, value);
147
+ this.formValue$
148
+ .pipe(filter(formValue => formValue !== null), take(1))
149
+ .subscribe(formValue => {
150
+ this.formValueChange(formValue);
151
+ });
152
+ }
153
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateZaakConfigurationComponent, deps: [{ token: i1.OpenZaakService }, { token: i2.DocumentService }, { token: i3.ModalService }, { token: i4.PluginTranslatePipe }, { token: i5.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
154
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CreateZaakConfigurationComponent, selector: "valtimo-create-zaak-configuration", inputs: { save$: "save$", disabled$: "disabled$", pluginId: "pluginId", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, providers: [PluginTranslatePipe], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n zaakTypeSelectItems: zaakTypeItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'createZaakInformation' | pluginTranslate: obs.pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n name=\"rsin\"\n [title]=\"'rsin' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.rsin\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'rsinTooltip' | pluginTranslate: obs.pluginId | async\"\n [widthPx]=\"350\"\n >\n </v-input>\n <v-radio\n name=\"inputTypeZaakTypeToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakTypeToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakTypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.zaaktypeUrl\"\n [disabled]=\"obs.disabled || obs.selectedInputOption === 'selection'\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'zaakTypeTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.zaakTypeSelectItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakType' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n oneSelectItem(obs.zaakTypeSelectItems)\n \"\n [defaultSelectionId]=\"\n (selectItemsIncludeId(obs.zaakTypeSelectItems, obs.prefill?.zaaktypeUrl) &&\n obs.prefill?.zaaktypeUrl) ||\n (oneSelectItem(obs.zaakTypeSelectItems) && obs.zaakTypeSelectItems[0].id)\n \"\n [required]=\"true\"\n [loading]=\"!obs.zaakTypeSelectItems\"\n [tooltip]=\"'zaakTypeSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n ></v-select>\n </ng-container>\n\n @for (property of propertyList; track property) {\n @if (property === 'description') {\n <div class=\"property-input\">\n <v-input\n name=\"description\"\n [title]=\"'beschrijving' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.description\"\n [required]=\"true\"\n (valueChange)=\"onPropertyChanged('description', $event)\"\n />\n\n <button class=\"btn btn-space delete-button\" (click)=\"removeCaseProperty('description')\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n } @else if (property === 'plannedEndDate') {\n <div class=\"property-input\">\n <v-input\n name=\"plannedEndDate\"\n [title]=\"'plannedEndDate' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.plannedEndDate\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'dateformatTooltip' | pluginTranslate: obs.pluginId | async\"\n (valueChange)=\"onPropertyChanged('plannedEndDate', $event)\"\n ></v-input>\n\n <button\n class=\"btn btn-space delete-button\"\n (click)=\"removeCaseProperty('plannedEndDate')\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n } @else if (property === 'finalDeliveryDate') {\n <div class=\"property-input\">\n <v-input\n name=\"finalDeliveryDate\"\n [title]=\"'finalDeliveryDate' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.finalDeliveryDate\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'dateformatTooltip' | pluginTranslate: obs.pluginId | async\"\n (valueChange)=\"onPropertyChanged('finalDeliveryDate', $event)\"\n ></v-input>\n\n <button\n class=\"btn btn-space delete-button\"\n (click)=\"removeCaseProperty('finalDeliveryDate')\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n }\n }\n\n <button\n cdsButton=\"primary\"\n [size]=\"'md'\"\n [cdsOverflowMenu]=\"addCasePropertyList\"\n [customPane]=\"true\"\n placement=\"bottom\"\n >\n {{ 'addZaakProperty' | pluginTranslate: obs.pluginId | async }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #addCasePropertyList>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('description')\"\n *ngIf=\"!hasPropertyBeenAdded('description')\"\n >\n {{ 'beschrijving' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('plannedEndDate')\"\n *ngIf=\"!hasPropertyBeenAdded('plannedEndDate')\"\n >\n {{ 'plannedEndDate' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('finalDeliveryDate')\"\n *ngIf=\"!hasPropertyBeenAdded('finalDeliveryDate')\"\n >\n {{ 'finalDeliveryDate' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}::ng-deep .cds--overflow-menu-options{z-index:10000!important;width:230px}.property-input{display:flex}.property-input v-input,.property-input cds-date-picker-input{flex-grow:1}.property-input button{height:46px;width:46px;margin:16px}.delete-button:hover{background-color:#e12717}\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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i3.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim"], outputs: ["valueChange"] }, { kind: "component", type: i3.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "component", type: i3.ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth", "margin", "italic", "loading", "dataTestId"] }, { kind: "component", type: i3.RadioComponent, selector: "v-radio", inputs: ["name", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "tooltip", "required", "smallLabel", "rows", "clear$", "radioValues"], outputs: ["valueChange"] }, { kind: "component", type: i5.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i5.OverflowMenuDirective, selector: "[cdsOverflowMenu], [ibmOverflowMenu]", inputs: ["ibmOverflowMenu", "cdsOverflowMenu", "flip", "offset", "wrapperClass", "customPane"], exportAs: ["overflowMenu"] }, { kind: "component", type: i5.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "directive", type: i5.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.PluginTranslatePipe, name: "pluginTranslate" }] }); }
123
155
  }
124
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateZaakConfigurationComponent, decorators: [{
125
157
  type: Component,
126
- args: [{ selector: 'valtimo-create-zaak-configuration', providers: [PluginTranslatePipe], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n zaakTypeSelectItems: zaakTypeItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'createZaakInformation' | pluginTranslate: obs.pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n name=\"rsin\"\n [title]=\"'rsin' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.rsin\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [tooltip]=\"'rsinTooltip' | pluginTranslate: obs.pluginId | async\"\n [widthPx]=\"350\"\n >\n </v-input>\n <v-radio\n name=\"inputTypeZaakTypeToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakTypeToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakTypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.zaaktypeUrl\"\n [disabled]=\"obs.disabled || obs.selectedInputOption === 'selection'\"\n [required]=\"true\"\n [tooltip]=\"'zaakTypeTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.zaakTypeSelectItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakType' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n oneSelectItem(obs.zaakTypeSelectItems)\n \"\n [defaultSelectionId]=\"\n (selectItemsIncludeId(obs.zaakTypeSelectItems, obs.prefill?.zaaktypeUrl) &&\n obs.prefill?.zaaktypeUrl) ||\n (oneSelectItem(obs.zaakTypeSelectItems) && obs.zaakTypeSelectItems[0].id)\n \"\n [required]=\"true\"\n [loading]=\"!obs.zaakTypeSelectItems\"\n [tooltip]=\"'zaakTypeSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n ></v-select>\n </ng-container>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}\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"] }]
127
- }], ctorParameters: () => [{ type: i1.OpenZaakService }, { type: i2.DocumentService }, { type: i3.ModalService }, { type: i4.PluginTranslatePipe }], propDecorators: { save$: [{
158
+ args: [{ selector: 'valtimo-create-zaak-configuration', providers: [PluginTranslatePipe], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n zaakTypeSelectItems: zaakTypeItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'createZaakInformation' | pluginTranslate: obs.pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n name=\"rsin\"\n [title]=\"'rsin' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.rsin\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'rsinTooltip' | pluginTranslate: obs.pluginId | async\"\n [widthPx]=\"350\"\n >\n </v-input>\n <v-radio\n name=\"inputTypeZaakTypeToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakTypeToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakTypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.zaaktypeUrl\"\n [disabled]=\"obs.disabled || obs.selectedInputOption === 'selection'\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'zaakTypeTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.zaakTypeSelectItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakType' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n oneSelectItem(obs.zaakTypeSelectItems)\n \"\n [defaultSelectionId]=\"\n (selectItemsIncludeId(obs.zaakTypeSelectItems, obs.prefill?.zaaktypeUrl) &&\n obs.prefill?.zaaktypeUrl) ||\n (oneSelectItem(obs.zaakTypeSelectItems) && obs.zaakTypeSelectItems[0].id)\n \"\n [required]=\"true\"\n [loading]=\"!obs.zaakTypeSelectItems\"\n [tooltip]=\"'zaakTypeSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n ></v-select>\n </ng-container>\n\n @for (property of propertyList; track property) {\n @if (property === 'description') {\n <div class=\"property-input\">\n <v-input\n name=\"description\"\n [title]=\"'beschrijving' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.description\"\n [required]=\"true\"\n (valueChange)=\"onPropertyChanged('description', $event)\"\n />\n\n <button class=\"btn btn-space delete-button\" (click)=\"removeCaseProperty('description')\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n } @else if (property === 'plannedEndDate') {\n <div class=\"property-input\">\n <v-input\n name=\"plannedEndDate\"\n [title]=\"'plannedEndDate' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.plannedEndDate\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'dateformatTooltip' | pluginTranslate: obs.pluginId | async\"\n (valueChange)=\"onPropertyChanged('plannedEndDate', $event)\"\n ></v-input>\n\n <button\n class=\"btn btn-space delete-button\"\n (click)=\"removeCaseProperty('plannedEndDate')\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n } @else if (property === 'finalDeliveryDate') {\n <div class=\"property-input\">\n <v-input\n name=\"finalDeliveryDate\"\n [title]=\"'finalDeliveryDate' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.finalDeliveryDate\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'dateformatTooltip' | pluginTranslate: obs.pluginId | async\"\n (valueChange)=\"onPropertyChanged('finalDeliveryDate', $event)\"\n ></v-input>\n\n <button\n class=\"btn btn-space delete-button\"\n (click)=\"removeCaseProperty('finalDeliveryDate')\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n }\n }\n\n <button\n cdsButton=\"primary\"\n [size]=\"'md'\"\n [cdsOverflowMenu]=\"addCasePropertyList\"\n [customPane]=\"true\"\n placement=\"bottom\"\n >\n {{ 'addZaakProperty' | pluginTranslate: obs.pluginId | async }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #addCasePropertyList>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('description')\"\n *ngIf=\"!hasPropertyBeenAdded('description')\"\n >\n {{ 'beschrijving' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('plannedEndDate')\"\n *ngIf=\"!hasPropertyBeenAdded('plannedEndDate')\"\n >\n {{ 'plannedEndDate' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('finalDeliveryDate')\"\n *ngIf=\"!hasPropertyBeenAdded('finalDeliveryDate')\"\n >\n {{ 'finalDeliveryDate' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}::ng-deep .cds--overflow-menu-options{z-index:10000!important;width:230px}.property-input{display:flex}.property-input v-input,.property-input cds-date-picker-input{flex-grow:1}.property-input button{height:46px;width:46px;margin:16px}.delete-button:hover{background-color:#e12717}\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"] }]
159
+ }], ctorParameters: () => [{ type: i1.OpenZaakService }, { type: i2.DocumentService }, { type: i3.ModalService }, { type: i4.PluginTranslatePipe }, { type: i5.IconService }], propDecorators: { save$: [{
128
160
  type: Input
129
161
  }], disabled$: [{
130
162
  type: Input
@@ -137,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
137
169
  }], configuration: [{
138
170
  type: Output
139
171
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvY3JlYXRlLXphYWsvY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvY3JlYXRlLXphYWsvY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLE1BQU0sRUFDTixHQUFHLEVBR0gsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFLZCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7O0FBUXRELE1BQU0sT0FBTyxnQ0FBZ0M7SUFLM0MsSUFBYSxRQUFRLENBQUMsS0FBYTtRQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBMkVELFlBQ21CLGVBQWdDLEVBQ2hDLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLG1CQUF3QztRQUh4QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHdC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O1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBaEpVLGdDQUFnQzttR0FBaEMsZ0NBQWdDLG1QQUZoQyxDQUFDLG1CQUFtQixDQUFDLDBCQ3ZDbEMsZ2lIQThGQTs7NEZEckRhLGdDQUFnQztrQkFONUMsU0FBUzsrQkFDRSxtQ0FBbUMsYUFHbEMsQ0FBQyxtQkFBbUIsQ0FBQzsrS0FLdkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ08sUUFBUTtzQkFBcEIsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Z1bmN0aW9uQ29uZmlndXJhdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDcmVhdGVaYWFrQ29uZmlnLCBJbnB1dE9wdGlvbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7T3BlblphYWtTZXJ2aWNlLCBaYWFrVHlwZSwgWmFha1R5cGVMaW5rfSBmcm9tICdAdmFsdGltby9yZXNvdXJjZSc7XG5pbXBvcnQge0RvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtNb2RhbFNlcnZpY2UsIFJhZGlvVmFsdWUsIFNlbGVjdEl0ZW19IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtQbHVnaW5UcmFuc2xhdGVQaXBlfSBmcm9tICcuLi8uLi8uLi8uLi9waXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tY3JlYXRlLXphYWstY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtemFhay1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtQbHVnaW5UcmFuc2xhdGVQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlWmFha0NvbmZpZ3VyYXRpb25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHNhdmUkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICBASW5wdXQoKSBkaXNhYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIEBJbnB1dCgpIHNldCBwbHVnaW5JZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wbHVnaW5JZCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgcHJlZmlsbENvbmZpZ3VyYXRpb24kOiBPYnNlcnZhYmxlPENyZWF0ZVphYWtDb25maWc+O1xuICBAT3V0cHV0KCkgdmFsaWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNvbmZpZ3VyYXRpb246IEV2ZW50RW1pdHRlcjxDcmVhdGVaYWFrQ29uZmlnPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q3JlYXRlWmFha0NvbmZpZz4oKTtcblxuICByZWFkb25seSBwbHVnaW5JZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBzZWxlY3RlZElucHV0T3B0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW5wdXRPcHRpb24+KCdzZWxlY3Rpb24nKTtcblxuICByZWFkb25seSBpbnB1dFR5cGVPcHRpb25zJDogT2JzZXJ2YWJsZTxBcnJheTxSYWRpb1ZhbHVlPj4gPSB0aGlzLnBsdWdpbklkJC5waXBlKFxuICAgIGZpbHRlcihwbHVnaW5JZCA9PiAhIXBsdWdpbklkKSxcbiAgICBzd2l0Y2hNYXAocGx1Z2luSWQgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLnBsdWdpblRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKCdzZWxlY3Rpb24nLCBwbHVnaW5JZCksXG4gICAgICAgIHRoaXMucGx1Z2luVHJhbnNsYXRlUGlwZS50cmFuc2Zvcm0oJ3RleHQnLCBwbHVnaW5JZCksXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbc2VsZWN0aW9uVHJhbnNsYXRpb24sIHRleHRUcmFuc2xhdGlvbl0pID0+IFtcbiAgICAgIHt2YWx1ZTogJ3NlbGVjdGlvbicsIHRpdGxlOiBzZWxlY3Rpb25UcmFuc2xhdGlvbn0sXG4gICAgICB7dmFsdWU6ICd0ZXh0JywgdGl0bGU6IHRleHRUcmFuc2xhdGlvbn0sXG4gICAgXSlcbiAgKTtcblxuICBwcml2YXRlIHNhdmVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDcmVhdGVaYWFrQ29uZmlnIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IHphYWtUeXBlSXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PFNlbGVjdEl0ZW0+PiA9IHRoaXMubW9kYWxTZXJ2aWNlLm1vZGFsRGF0YSQucGlwZShcbiAgICBzd2l0Y2hNYXAocGFyYW1zID0+XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5maW5kUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNCeVByb2Nlc3NEZWZpbml0aW9uS2V5KFxuICAgICAgICBwYXJhbXM/LnByb2Nlc3NEZWZpbml0aW9uS2V5XG4gICAgICApXG4gICAgKSxcbiAgICBzd2l0Y2hNYXAocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZS5nZXRaYWFrVHlwZXMoKSxcbiAgICAgICAgLi4ucHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubWFwKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPT5cbiAgICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZS5nZXRaYWFrVHlwZUxpbmsoXG4gICAgICAgICAgICBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLmRvY3VtZW50RGVmaW5pdGlvbklkLm5hbWVcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgY29uc3QgemFha1R5cGVzID0gcmVzdWx0c1swXSBhcyBBcnJheTxaYWFrVHlwZT47XG4gICAgICBjb25zdCB6YWFrVHlwZUxpbmtzID0gcmVzdWx0cy5maWx0ZXIoKHJlc3VsdCwgaW5kZXgpID0+IGluZGV4ICE9PSAwKSBhcyBBcnJheTxaYWFrVHlwZUxpbms+O1xuXG4gICAgICByZXR1cm4gemFha1R5cGVMaW5rc1xuICAgICAgICAuZmlsdGVyKHphYWtUeXBlTGluayA9PiAhIXphYWtUeXBlTGluaz8uemFha1R5cGVVcmwpXG4gICAgICAgIC5tYXAoemFha1R5cGVMaW5rID0+ICh7XG4gICAgICAgICAgaWQ6IHphYWtUeXBlTGluay56YWFrVHlwZVVybCxcbiAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgemFha1R5cGVzLmZpbmQoemFha1R5cGUgPT4gemFha1R5cGUudXJsID09PSB6YWFrVHlwZUxpbmsuemFha1R5cGVVcmwpPy5vbXNjaHJpanZpbmcgfHxcbiAgICAgICAgICAgIHphYWtUeXBlTGluay56YWFrVHlwZVVybCxcbiAgICAgICAgfSkpO1xuICAgIH0pLFxuICAgIHRhcCh6YWFrVHlwZVNlbGVjdEl0ZW1zID0+IHtcbiAgICAgIHRoaXMucHJlZmlsbENvbmZpZ3VyYXRpb24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHByZWZpbGxDb25maWcgPT4ge1xuICAgICAgICBjb25zdCB6YWFrVHlwZVVybCA9IHByZWZpbGxDb25maWc/LnphYWt0eXBlVXJsO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB6YWFrVHlwZVVybCAmJlxuICAgICAgICAgICEoKHphYWtUeXBlU2VsZWN0SXRlbXMgYXMgQXJyYXk8U2VsZWN0SXRlbT4pIHx8IFtdKS5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gemFha1R5cGVVcmwpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbnB1dE9wdGlvbiQubmV4dCgndGV4dCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlblphYWtTZXJ2aWNlOiBPcGVuWmFha1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luVHJhbnNsYXRlUGlwZTogUGx1Z2luVHJhbnNsYXRlUGlwZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU2F2ZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZm9ybVZhbHVlQ2hhbmdlKGZvcm1WYWx1ZTogQ3JlYXRlWmFha0NvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VHlwZVphYWtUeXBlVG9nZ2xlID0gZm9ybVZhbHVlLmlucHV0VHlwZVphYWtUeXBlVG9nZ2xlO1xuICAgIHRoaXMuZm9ybVZhbHVlJC5uZXh0KGZvcm1WYWx1ZSk7XG4gICAgdGhpcy5oYW5kbGVWYWxpZChmb3JtVmFsdWUpO1xuXG4gICAgaWYgKGlucHV0VHlwZVphYWtUeXBlVG9nZ2xlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5wdXRPcHRpb24kLm5leHQoaW5wdXRUeXBlWmFha1R5cGVUb2dnbGUpO1xuICAgIH1cbiAgfVxuXG4gIG9uZVNlbGVjdEl0ZW0oc2VsZWN0SXRlbXM6IEFycmF5PFNlbGVjdEl0ZW0+KTogYm9vbGVhbiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0SXRlbXMpKSB7XG4gICAgICByZXR1cm4gc2VsZWN0SXRlbXMubGVuZ3RoID09PSAxO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNlbGVjdEl0ZW1zSW5jbHVkZUlkKHNlbGVjdEl0ZW1zOiBBcnJheTxTZWxlY3RJdGVtPiwgaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdEl0ZW1zKSkge1xuICAgICAgcmV0dXJuICEhc2VsZWN0SXRlbXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZhbGlkKGZvcm1WYWx1ZTogQ3JlYXRlWmFha0NvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkID0gISEoZm9ybVZhbHVlLnJzaW4gJiYgZm9ybVZhbHVlLnphYWt0eXBlVXJsKTtcblxuICAgIHRoaXMudmFsaWQkLm5leHQodmFsaWQpO1xuICAgIHRoaXMudmFsaWQuZW1pdCh2YWxpZCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5TYXZlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc2F2ZSQ/LnN1YnNjcmliZShzYXZlID0+IHtcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZm9ybVZhbHVlJCwgdGhpcy52YWxpZCRdKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZm9ybVZhbHVlLCB2YWxpZF0pID0+IHtcbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5lbWl0KHtcbiAgICAgICAgICAgICAgcnNpbjogZm9ybVZhbHVlLnJzaW4sXG4gICAgICAgICAgICAgIHphYWt0eXBlVXJsOiBmb3JtVmFsdWUuemFha3R5cGVVcmwsXG4gICAgICAgICAgICAgIG1hbnVhbFphYWtUeXBlVXJsOiBmb3JtVmFsdWUubWFudWFsWmFha1R5cGVVcmwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jLFxuICAgIHByZWZpbGw6IHByZWZpbGxDb25maWd1cmF0aW9uJCA/IChwcmVmaWxsQ29uZmlndXJhdGlvbiQgfCBhc3luYykgOiBudWxsLFxuICAgIHBsdWdpbklkOiBwbHVnaW5JZCQgfCBhc3luYyxcbiAgICBzZWxlY3RlZElucHV0T3B0aW9uOiBzZWxlY3RlZElucHV0T3B0aW9uJCB8IGFzeW5jLFxuICAgIHphYWtUeXBlU2VsZWN0SXRlbXM6IHphYWtUeXBlSXRlbXMkIHwgYXN5bmMsXG4gICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmxvYWRpbmcgPT09IGZhbHNlOyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8di1wYXJhZ3JhcGggW21hcmdpbl09XCJ0cnVlXCIgW2l0YWxpY109XCJ0cnVlXCI+XG4gICAgICB7eyAnY3JlYXRlWmFha0luZm9ybWF0aW9uJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmMgfX1cbiAgICA8L3YtcGFyYWdyYXBoPlxuICAgIDx2LWZvcm0gKHZhbHVlQ2hhbmdlKT1cImZvcm1WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8di1pbnB1dFxuICAgICAgICBuYW1lPVwicnNpblwiXG4gICAgICAgIFt0aXRsZV09XCIncnNpbicgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8ucnNpblwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIidyc2luVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW3dpZHRoUHhdPVwiMzUwXCJcbiAgICAgID5cbiAgICAgIDwvdi1pbnB1dD5cbiAgICAgIDx2LXJhZGlvXG4gICAgICAgIG5hbWU9XCJpbnB1dFR5cGVaYWFrVHlwZVRvZ2dsZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbdGl0bGVdPVwiJ2lucHV0VHlwZVphYWtUeXBlVG9nZ2xlJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICBbcmFkaW9WYWx1ZXNdPVwiaW5wdXRUeXBlT3B0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgIFtkZWZhdWx0VmFsdWVdPVwic2VsZWN0ZWRJbnB1dE9wdGlvbiQgfCBhc3luY1wiXG4gICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICA8L3YtcmFkaW8+XG4gICAgICA8di1pbnB1dFxuICAgICAgICAqbmdJZj1cIm9icy5zZWxlY3RlZElucHV0T3B0aW9uID09PSAndGV4dCdcIlxuICAgICAgICBuYW1lPVwiemFha3R5cGVVcmxcIlxuICAgICAgICBbdGl0bGVdPVwiJ3phYWtUeXBlVXJsJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICBbZGVmYXVsdFZhbHVlXT1cIm9icy5wcmVmaWxsPy56YWFrdHlwZVVybFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWQgfHwgb2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICdzZWxlY3Rpb24nXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbdG9vbHRpcF09XCInemFha1R5cGVUb29sdGlwJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgPlxuICAgICAgPC92LWlucHV0PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9icy5zZWxlY3RlZElucHV0T3B0aW9uID09PSAnc2VsZWN0aW9uJ1wiPlxuICAgICAgICA8di1zZWxlY3RcbiAgICAgICAgICBbaXRlbXNdPVwib2JzLnphYWtUeXBlU2VsZWN0SXRlbXNcIlxuICAgICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgICAgW3dpZHRoSW5QeF09XCIzNTBcIlxuICAgICAgICAgIG5hbWU9XCJ6YWFrdHlwZVVybFwiXG4gICAgICAgICAgW3RpdGxlXT1cIid6YWFrVHlwZScgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICBvYnMuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgIG9icy5zZWxlY3RlZElucHV0T3B0aW9uID09PSAndGV4dCcgfHxcbiAgICAgICAgICAgIG9uZVNlbGVjdEl0ZW0ob2JzLnphYWtUeXBlU2VsZWN0SXRlbXMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZGVmYXVsdFNlbGVjdGlvbklkXT1cIlxuICAgICAgICAgICAgKHNlbGVjdEl0ZW1zSW5jbHVkZUlkKG9icy56YWFrVHlwZVNlbGVjdEl0ZW1zLCBvYnMucHJlZmlsbD8uemFha3R5cGVVcmwpICYmXG4gICAgICAgICAgICAgIG9icy5wcmVmaWxsPy56YWFrdHlwZVVybCkgfHxcbiAgICAgICAgICAgIChvbmVTZWxlY3RJdGVtKG9icy56YWFrVHlwZVNlbGVjdEl0ZW1zKSAmJiBvYnMuemFha1R5cGVTZWxlY3RJdGVtc1swXS5pZClcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbbG9hZGluZ109XCIhb2JzLnphYWtUeXBlU2VsZWN0SXRlbXNcIlxuICAgICAgICAgIFt0b29sdGlwXT1cIid6YWFrVHlwZVNlbGVjdFRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgID48L3Ytc2VsZWN0PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC92LWZvcm0+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgPGNkcy1sb2FkaW5nPjwvY2RzLWxvYWRpbmc+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvY3JlYXRlLXphYWsvY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvY3JlYXRlLXphYWsvY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLE1BQU0sRUFDTixHQUFHLEVBR0gsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFLZCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUMsc0JBQXNCLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7OztBQVE1RixNQUFNLE9BQU8sZ0NBQWdDO0lBSzNDLElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQThFRCxZQUNtQixlQUFnQyxFQUNoQyxlQUFnQyxFQUNoQyxZQUEwQixFQUMxQixt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Qyw4cU9BMkxBOzs0RkQvSWEsZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNFLG1DQUFtQyxhQUdsQyxDQUFDLG1CQUFtQixDQUFDO3lNQUt2QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxRQUFRO3NCQUFwQixLQUFLO2dCQUdHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NyZWF0ZVphYWtDb25maWcsIElucHV0T3B0aW9ufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtPcGVuWmFha1NlcnZpY2UsIFphYWtUeXBlLCBaYWFrVHlwZUxpbmt9IGZyb20gJ0B2YWx0aW1vL3Jlc291cmNlJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge01vZGFsU2VydmljZSwgUmFkaW9WYWx1ZSwgU2VsZWN0SXRlbX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1BsdWdpblRyYW5zbGF0ZVBpcGV9IGZyb20gJy4uLy4uLy4uLy4uL3BpcGVzJztcbmltcG9ydCB7QWRkMTYsIFRyYXNoQ2FuMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtJY29uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0V4dHJhUHJvcGVydGllc09wdGlvbnMsIEV4dHJhUHJvcGVydGllc30gZnJvbSAnLi4vLi4vbW9kZWxzL2NyZWF0ZS16YWFrLXByb3BlcnRpZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWNyZWF0ZS16YWFrLWNvbmZpZ3VyYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS16YWFrLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbUGx1Z2luVHJhbnNsYXRlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIENyZWF0ZVphYWtDb25maWd1cmF0aW9uQ29tcG9uZW50XG4gIGltcGxlbWVudHMgRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKSBzYXZlJDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgQElucHV0KCkgZGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBASW5wdXQoKSBzZXQgcGx1Z2luSWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMucGx1Z2luSWQkLm5leHQodmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHByZWZpbGxDb25maWd1cmF0aW9uJDogT2JzZXJ2YWJsZTxDcmVhdGVaYWFrQ29uZmlnPjtcbiAgQE91dHB1dCgpIHZhbGlkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBjb25maWd1cmF0aW9uOiBFdmVudEVtaXR0ZXI8Q3JlYXRlWmFha0NvbmZpZz4gPSBuZXcgRXZlbnRFbWl0dGVyPENyZWF0ZVphYWtDb25maWc+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHByb3BlcnR5TGlzdDogQXJyYXk8RXh0cmFQcm9wZXJ0aWVzPiA9IFtdO1xuXG4gIHJlYWRvbmx5IHBsdWdpbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkSW5wdXRPcHRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbnB1dE9wdGlvbj4oJ3NlbGVjdGlvbicpO1xuXG4gIHJlYWRvbmx5IGlucHV0VHlwZU9wdGlvbnMkOiBPYnNlcnZhYmxlPEFycmF5PFJhZGlvVmFsdWU+PiA9IHRoaXMucGx1Z2luSWQkLnBpcGUoXG4gICAgZmlsdGVyKHBsdWdpbklkID0+ICEhcGx1Z2luSWQpLFxuICAgIHN3aXRjaE1hcChwbHVnaW5JZCA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMucGx1Z2luVHJhbnNsYXRlUGlwZS50cmFuc2Zvcm0oJ3NlbGVjdGlvbicsIHBsdWdpbklkKSxcbiAgICAgICAgdGhpcy5wbHVnaW5UcmFuc2xhdGVQaXBlLnRyYW5zZm9ybSgndGV4dCcsIHBsdWdpbklkKSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFtzZWxlY3Rpb25UcmFuc2xhdGlvbiwgdGV4dFRyYW5zbGF0aW9uXSkgPT4gW1xuICAgICAge3ZhbHVlOiAnc2VsZWN0aW9uJywgdGl0bGU6IHNlbGVjdGlvblRyYW5zbGF0aW9ufSxcbiAgICAgIHt2YWx1ZTogJ3RleHQnLCB0aXRsZTogdGV4dFRyYW5zbGF0aW9ufSxcbiAgICBdKVxuICApO1xuXG4gIHByaXZhdGUgc2F2ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENyZWF0ZVphYWtDb25maWcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvcGVydGllcyA9IG5ldyBNYXA8RXh0cmFQcm9wZXJ0aWVzLCBzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IHphYWtUeXBlSXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PFNlbGVjdEl0ZW0+PiA9IHRoaXMubW9kYWxTZXJ2aWNlLm1vZGFsRGF0YSQucGlwZShcbiAgICBzd2l0Y2hNYXAocGFyYW1zID0+XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5maW5kUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNCeVByb2Nlc3NEZWZpbml0aW9uS2V5KFxuICAgICAgICBwYXJhbXM/LnByb2Nlc3NEZWZpbml0aW9uS2V5XG4gICAgICApXG4gICAgKSxcbiAgICBzd2l0Y2hNYXAocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZS5nZXRaYWFrVHlwZXMoKSxcbiAgICAgICAgLi4ucHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubWFwKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPT5cbiAgICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZS5nZXRaYWFrVHlwZUxpbmsoXG4gICAgICAgICAgICBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLmRvY3VtZW50RGVmaW5pdGlvbklkLm5hbWVcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgY29uc3QgemFha1R5cGVzID0gcmVzdWx0c1swXSBhcyBBcnJheTxaYWFrVHlwZT47XG4gICAgICBjb25zdCB6YWFrVHlwZUxpbmtzID0gcmVzdWx0cy5maWx0ZXIoKHJlc3VsdCwgaW5kZXgpID0+IGluZGV4ICE9PSAwKSBhcyBBcnJheTxaYWFrVHlwZUxpbms+O1xuXG4gICAgICByZXR1cm4gemFha1R5cGVMaW5rc1xuICAgICAgICAuZmlsdGVyKHphYWtUeXBlTGluayA9PiAhIXphYWtUeXBlTGluaz8uemFha1R5cGVVcmwpXG4gICAgICAgIC5tYXAoemFha1R5cGVMaW5rID0+ICh7XG4gICAgICAgICAgaWQ6IHphYWtUeXBlTGluay56YWFrVHlwZVVybCxcbiAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgemFha1R5cGVzLmZpbmQoemFha1R5cGUgPT4gemFha1R5cGUudXJsID09PSB6YWFrVHlwZUxpbmsuemFha1R5cGVVcmwpPy5vbXNjaHJpanZpbmcgfHxcbiAgICAgICAgICAgIHphYWtUeXBlTGluay56YWFrVHlwZVVybCxcbiAgICAgICAgfSkpO1xuICAgIH0pLFxuICAgIHRhcCh6YWFrVHlwZVNlbGVjdEl0ZW1zID0+IHtcbiAgICAgIHRoaXMucHJlZmlsbENvbmZpZ3VyYXRpb24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHByZWZpbGxDb25maWcgPT4ge1xuICAgICAgICBjb25zdCB6YWFrVHlwZVVybCA9IHByZWZpbGxDb25maWc/LnphYWt0eXBlVXJsO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB6YWFrVHlwZVVybCAmJlxuICAgICAgICAgICEoKHphYWtUeXBlU2VsZWN0SXRlbXMgYXMgQXJyYXk8U2VsZWN0SXRlbT4pIHx8IFtdKS5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gemFha1R5cGVVcmwpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbnB1dE9wdGlvbiQubmV4dCgndGV4dCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlblphYWtTZXJ2aWNlOiBPcGVuWmFha1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luVHJhbnNsYXRlUGlwZTogUGx1Z2luVHJhbnNsYXRlUGlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyQWxsKFtBZGQxNiwgVHJhc2hDYW4xNl0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU2F2ZVN1YnNjcmlwdGlvbigpO1xuXG4gICAgdGhpcy5wcmVmaWxsQ29uZmlndXJhdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocHJlZmlsbCA9PiB7XG4gICAgICBFeHRyYVByb3BlcnRpZXNPcHRpb25zLmZpbHRlcihwcm9wZXJ0eSA9PiAhIXByZWZpbGxbcHJvcGVydHldKS5mb3JFYWNoKHByb3BlcnR5ID0+XG4gICAgICAgIHRoaXMuYWRkQ2FzZVByb3BlcnR5KHByb3BlcnR5KVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGZvcm1WYWx1ZUNoYW5nZShmb3JtVmFsdWU6IENyZWF0ZVphYWtDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IChmb3JtVmFsdWVba2V5XSA9IHZhbHVlKSk7XG5cbiAgICBjb25zdCBpbnB1dFR5cGVaYWFrVHlwZVRvZ2dsZSA9IGZvcm1WYWx1ZS5pbnB1dFR5cGVaYWFrVHlwZVRvZ2dsZTtcbiAgICB0aGlzLmZvcm1WYWx1ZSQubmV4dChmb3JtVmFsdWUpO1xuICAgIHRoaXMuaGFuZGxlVmFsaWQoZm9ybVZhbHVlKTtcblxuICAgIGlmIChpbnB1dFR5cGVaYWFrVHlwZVRvZ2dsZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZElucHV0T3B0aW9uJC5uZXh0KGlucHV0VHlwZVphYWtUeXBlVG9nZ2xlKTtcbiAgICB9XG4gIH1cblxuICBvbmVTZWxlY3RJdGVtKHNlbGVjdEl0ZW1zOiBBcnJheTxTZWxlY3RJdGVtPik6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdEl0ZW1zKSkge1xuICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zLmxlbmd0aCA9PT0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzZWxlY3RJdGVtc0luY2x1ZGVJZChzZWxlY3RJdGVtczogQXJyYXk8U2VsZWN0SXRlbT4sIGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RJdGVtcykpIHtcbiAgICAgIHJldHVybiAhIXNlbGVjdEl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBpZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWxpZChmb3JtVmFsdWU6IENyZWF0ZVphYWtDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBpc1Byb3BlcnR5SW52YWxpZCA9IHRoaXMucHJvcGVydHlMaXN0LnNvbWUocHJvcGVydHkgPT4gISEhZm9ybVZhbHVlW3Byb3BlcnR5XSk7XG4gICAgY29uc3QgdmFsaWQgPSAhIShmb3JtVmFsdWUucnNpbiAmJiBmb3JtVmFsdWUuemFha3R5cGVVcmwpICYmICFpc1Byb3BlcnR5SW52YWxpZDtcblxuICAgIHRoaXMudmFsaWQkLm5leHQodmFsaWQpO1xuICAgIHRoaXMudmFsaWQuZW1pdCh2YWxpZCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5TYXZlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc2F2ZSQ/LnN1YnNjcmliZShzYXZlID0+IHtcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZm9ybVZhbHVlJCwgdGhpcy52YWxpZCRdKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZm9ybVZhbHVlLCB2YWxpZF0pID0+IHtcbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQ6IENyZWF0ZVphYWtDb25maWcgPSB7XG4gICAgICAgICAgICAgIHJzaW46IGZvcm1WYWx1ZS5yc2luLFxuICAgICAgICAgICAgICB6YWFrdHlwZVVybDogZm9ybVZhbHVlLnphYWt0eXBlVXJsLFxuICAgICAgICAgICAgICBtYW51YWxaYWFrVHlwZVVybDogZm9ybVZhbHVlLm1hbnVhbFphYWtUeXBlVXJsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHlMaXN0LmZvckVhY2gocHJvcGVydHkgPT4gKHBheWxvYWRbcHJvcGVydHldID0gZm9ybVZhbHVlW3Byb3BlcnR5XSkpO1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmVtaXQocGF5bG9hZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDYXNlUHJvcGVydHkocHJvcGVydHk6IEV4dHJhUHJvcGVydGllcyk6IHZvaWQge1xuICAgIHRoaXMucHJvcGVydHlMaXN0LnB1c2gocHJvcGVydHkpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUNhc2VQcm9wZXJ0eShwcm9wZXJ0eTogRXh0cmFQcm9wZXJ0aWVzKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wZXJ0eUxpc3Quc3BsaWNlKHRoaXMucHJvcGVydHlMaXN0LmluZGV4T2YocHJvcGVydHkpLCAxKTtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzLmRlbGV0ZShwcm9wZXJ0eSk7XG4gICAgdGhpcy5vblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNQcm9wZXJ0eUJlZW5BZGRlZChwcm9wZXJ0eTogRXh0cmFQcm9wZXJ0aWVzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlMaXN0LmluZGV4T2YocHJvcGVydHkpICE9PSAtMTtcbiAgfVxuXG4gIHB1YmxpYyBvblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eTogRXh0cmFQcm9wZXJ0aWVzLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fcHJvcGVydGllcy5zZXQocHJvcGVydHksIHZhbHVlKTtcbiAgICB0aGlzLmZvcm1WYWx1ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoZm9ybVZhbHVlID0+IGZvcm1WYWx1ZSAhPT0gbnVsbCksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgICAgdGhpcy5mb3JtVmFsdWVDaGFuZ2UoZm9ybVZhbHVlKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jLFxuICAgIHByZWZpbGw6IHByZWZpbGxDb25maWd1cmF0aW9uJCA/IChwcmVmaWxsQ29uZmlndXJhdGlvbiQgfCBhc3luYykgOiBudWxsLFxuICAgIHBsdWdpbklkOiBwbHVnaW5JZCQgfCBhc3luYyxcbiAgICBzZWxlY3RlZElucHV0T3B0aW9uOiBzZWxlY3RlZElucHV0T3B0aW9uJCB8IGFzeW5jLFxuICAgIHphYWtUeXBlU2VsZWN0SXRlbXM6IHphYWtUeXBlSXRlbXMkIHwgYXN5bmMsXG4gICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmxvYWRpbmcgPT09IGZhbHNlOyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8di1wYXJhZ3JhcGggW21hcmdpbl09XCJ0cnVlXCIgW2l0YWxpY109XCJ0cnVlXCI+XG4gICAgICB7eyAnY3JlYXRlWmFha0luZm9ybWF0aW9uJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmMgfX1cbiAgICA8L3YtcGFyYWdyYXBoPlxuICAgIDx2LWZvcm0gKHZhbHVlQ2hhbmdlKT1cImZvcm1WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8di1pbnB1dFxuICAgICAgICBuYW1lPVwicnNpblwiXG4gICAgICAgIFt0aXRsZV09XCIncnNpbicgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8ucnNpblwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFt0cmltXT1cInRydWVcIlxuICAgICAgICBbdG9vbHRpcF09XCIncnNpblRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIFt3aWR0aFB4XT1cIjM1MFwiXG4gICAgICA+XG4gICAgICA8L3YtaW5wdXQ+XG4gICAgICA8di1yYWRpb1xuICAgICAgICBuYW1lPVwiaW5wdXRUeXBlWmFha1R5cGVUb2dnbGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgICAgW3RpdGxlXT1cIidpbnB1dFR5cGVaYWFrVHlwZVRvZ2dsZScgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW3JhZGlvVmFsdWVzXT1cImlucHV0VHlwZU9wdGlvbnMkIHwgYXN5bmNcIlxuICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInNlbGVjdGVkSW5wdXRPcHRpb24kIHwgYXN5bmNcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgPlxuICAgICAgPC92LXJhZGlvPlxuICAgICAgPHYtaW5wdXRcbiAgICAgICAgKm5nSWY9XCJvYnMuc2VsZWN0ZWRJbnB1dE9wdGlvbiA9PT0gJ3RleHQnXCJcbiAgICAgICAgbmFtZT1cInphYWt0eXBlVXJsXCJcbiAgICAgICAgW3RpdGxlXT1cIid6YWFrVHlwZVVybCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8uemFha3R5cGVVcmxcIlxuICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkIHx8IG9icy5zZWxlY3RlZElucHV0T3B0aW9uID09PSAnc2VsZWN0aW9uJ1wiXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW3RyaW1dPVwidHJ1ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIid6YWFrVHlwZVRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICA8L3YtaW5wdXQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICdzZWxlY3Rpb24nXCI+XG4gICAgICAgIDx2LXNlbGVjdFxuICAgICAgICAgIFtpdGVtc109XCJvYnMuemFha1R5cGVTZWxlY3RJdGVtc1wiXG4gICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICBbd2lkdGhJblB4XT1cIjM1MFwiXG4gICAgICAgICAgbmFtZT1cInphYWt0eXBlVXJsXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ3phYWtUeXBlJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgIG9icy5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgb2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICd0ZXh0JyB8fFxuICAgICAgICAgICAgb25lU2VsZWN0SXRlbShvYnMuemFha1R5cGVTZWxlY3RJdGVtcylcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtkZWZhdWx0U2VsZWN0aW9uSWRdPVwiXG4gICAgICAgICAgICAoc2VsZWN0SXRlbXNJbmNsdWRlSWQob2JzLnphYWtUeXBlU2VsZWN0SXRlbXMsIG9icy5wcmVmaWxsPy56YWFrdHlwZVVybCkgJiZcbiAgICAgICAgICAgICAgb2JzLnByZWZpbGw/LnphYWt0eXBlVXJsKSB8fFxuICAgICAgICAgICAgKG9uZVNlbGVjdEl0ZW0ob2JzLnphYWtUeXBlU2VsZWN0SXRlbXMpICYmIG9icy56YWFrVHlwZVNlbGVjdEl0ZW1zWzBdLmlkKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgIFtsb2FkaW5nXT1cIiFvYnMuemFha1R5cGVTZWxlY3RJdGVtc1wiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ3phYWtUeXBlU2VsZWN0VG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgPjwvdi1zZWxlY3Q+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgQGZvciAocHJvcGVydHkgb2YgcHJvcGVydHlMaXN0OyB0cmFjayBwcm9wZXJ0eSkge1xuICAgICAgICBAaWYgKHByb3BlcnR5ID09PSAnZGVzY3JpcHRpb24nKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LWlucHV0XCI+XG4gICAgICAgICAgICA8di1pbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ2Jlc2NocmlqdmluZycgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblByb3BlcnR5Q2hhbmdlZCgnZGVzY3JpcHRpb24nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNwYWNlIGRlbGV0ZS1idXR0b25cIiAoY2xpY2spPVwicmVtb3ZlQ2FzZVByb3BlcnR5KCdkZXNjcmlwdGlvbicpXCI+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJ0cmFzaC1jYW5cIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIGlmIChwcm9wZXJ0eSA9PT0gJ3BsYW5uZWRFbmREYXRlJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1pbnB1dFwiPlxuICAgICAgICAgICAgPHYtaW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cInBsYW5uZWRFbmREYXRlXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGFubmVkRW5kRGF0ZScgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8ucGxhbm5lZEVuZERhdGVcIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFt0cmltXT1cInRydWVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCInZGF0ZWZvcm1hdFRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblByb3BlcnR5Q2hhbmdlZCgncGxhbm5lZEVuZERhdGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgID48L3YtaW5wdXQ+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNwYWNlIGRlbGV0ZS1idXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2FzZVByb3BlcnR5KCdwbGFubmVkRW5kRGF0ZScpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKHByb3BlcnR5ID09PSAnZmluYWxEZWxpdmVyeURhdGUnKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LWlucHV0XCI+XG4gICAgICAgICAgICA8di1pbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiZmluYWxEZWxpdmVyeURhdGVcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ2ZpbmFsRGVsaXZlcnlEYXRlJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cIm9icy5wcmVmaWxsPy5maW5hbERlbGl2ZXJ5RGF0ZVwiXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3RyaW1dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cIidkYXRlZm9ybWF0VG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUHJvcGVydHlDaGFuZ2VkKCdmaW5hbERlbGl2ZXJ5RGF0ZScsICRldmVudClcIlxuICAgICAgICAgICAgPjwvdi1pbnB1dD5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc3BhY2UgZGVsZXRlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDYXNlUHJvcGVydHkoJ2ZpbmFsRGVsaXZlcnlEYXRlJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICBbc2l6ZV09XCInbWQnXCJcbiAgICAgICAgW2Nkc092ZXJmbG93TWVudV09XCJhZGRDYXNlUHJvcGVydHlMaXN0XCJcbiAgICAgICAgW2N1c3RvbVBhbmVdPVwidHJ1ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdhZGRaYWFrUHJvcGVydHknIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luYyB9fVxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3YtZm9ybT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgICA8Y2RzLWxvYWRpbmc+PC9jZHMtbG9hZGluZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FkZENhc2VQcm9wZXJ0eUxpc3Q+XG4gIDxjZHMtb3ZlcmZsb3ctbWVudS1vcHRpb25cbiAgICAoY2xpY2spPVwiYWRkQ2FzZVByb3BlcnR5KCdkZXNjcmlwdGlvbicpXCJcbiAgICAqbmdJZj1cIiFoYXNQcm9wZXJ0eUJlZW5BZGRlZCgnZGVzY3JpcHRpb24nKVwiXG4gID5cbiAgICB7eyAnYmVzY2hyaWp2aW5nJyB8IHBsdWdpblRyYW5zbGF0ZTogKHBsdWdpbklkJCB8IGFzeW5jKSB8IGFzeW5jIH19XG4gIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuICA8Y2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uXG4gICAgKGNsaWNrKT1cImFkZENhc2VQcm9wZXJ0eSgncGxhbm5lZEVuZERhdGUnKVwiXG4gICAgKm5nSWY9XCIhaGFzUHJvcGVydHlCZWVuQWRkZWQoJ3BsYW5uZWRFbmREYXRlJylcIlxuICA+XG4gICAge3sgJ3BsYW5uZWRFbmREYXRlJyB8IHBsdWdpblRyYW5zbGF0ZTogKHBsdWdpbklkJCB8IGFzeW5jKSB8IGFzeW5jIH19XG4gIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuICA8Y2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uXG4gICAgKGNsaWNrKT1cImFkZENhc2VQcm9wZXJ0eSgnZmluYWxEZWxpdmVyeURhdGUnKVwiXG4gICAgKm5nSWY9XCIhaGFzUHJvcGVydHlCZWVuQWRkZWQoJ2ZpbmFsRGVsaXZlcnlEYXRlJylcIlxuICA+XG4gICAge3sgJ2ZpbmFsRGVsaXZlcnlEYXRlJyB8IHBsdWdpblRyYW5zbGF0ZTogKHBsdWdpbklkJCB8IGFzeW5jKSB8IGFzeW5jIH19XG4gIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -139,11 +139,11 @@ export class CreateZaakResultaatConfigurationComponent {
139
139
  });
140
140
  }
141
141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateZaakResultaatConfigurationComponent, deps: [{ token: i1.ModalService }, { token: i2.DocumentService }, { token: i3.ZakenApiService }, { token: i4.PluginTranslatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateZaakResultaatConfigurationComponent, selector: "valtimo-create-zaak-resultaat-configuration", inputs: { save$: "save$", disabled$: "disabled$", pluginId: "pluginId", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, providers: [PluginTranslatePipe], 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<v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n loading: loading$ | async,\n caseDefinitionItems: caseDefinitionSelectItems$ | async,\n resultaatTypeItems: resultaatTypeSelectItems$ | async,\n selectedCaseDefinitionId: selectedCaseDefinitionId$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-input\n name=\"toelichting\"\n [title]=\"'resultaattoelichting' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.toelichting\"\n [disabled]=\"obs.disabled\"\n [required]=\"false\"\n [tooltip]=\"'resultaattoelichtingTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <v-radio\n name=\"inputTypeZaakResultaatToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakResultaatToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"resultaattypeUrl\"\n [title]=\"'resultaattypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.resultaattypeUrl\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [tooltip]=\"'resultaattypeUrlTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.caseDefinitionItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"caseDefinition\"\n [title]=\"'caseDefinition' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.caseDefinitionItems ||\n oneSelectItem(obs.caseDefinitionItems)\n \"\n [required]=\"true\"\n [loading]=\"!obs.caseDefinitionItems\"\n [tooltip]=\"'caseDefinitionTooltipResultaat' | pluginTranslate: obs.pluginId | async\"\n (selectedChange)=\"selectCaseDefinition($event)\"\n [defaultSelectionId]=\"obs?.selectedCaseDefinitionId\"\n ></v-select>\n <v-select\n [items]=\"obs.resultaatTypeItems && obs.resultaatTypeItems[obs.selectedCaseDefinitionId]\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"resultaattypeUrl\"\n [title]=\"'resultaattypeUrlSelect' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.resultaatTypeItems ||\n !obs.resultaatTypeItems[obs.selectedCaseDefinitionId]\n \"\n [defaultSelectionId]=\"obs.prefill?.resultaattypeUrl\"\n [required]=\"true\"\n [loading]=\"!obs.resultaatTypeItems\"\n [tooltip]=\"'resultaattypeUrlSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n [clearSelectionSubject$]=\"clearStatusSelection$\"\n ></v-select>\n </ng-container>\n </ng-container>\n</v-form>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}\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: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i1.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId"], outputs: ["valueChange"] }, { kind: "component", type: i1.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "component", type: i1.RadioComponent, selector: "v-radio", inputs: ["name", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "tooltip", "required", "smallLabel", "rows", "clear$", "radioValues"], outputs: ["valueChange"] }, { kind: "component", type: i6.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.PluginTranslatePipe, name: "pluginTranslate" }] }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateZaakResultaatConfigurationComponent, selector: "valtimo-create-zaak-resultaat-configuration", inputs: { save$: "save$", disabled$: "disabled$", pluginId: "pluginId", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, providers: [PluginTranslatePipe], 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<v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n loading: loading$ | async,\n caseDefinitionItems: caseDefinitionSelectItems$ | async,\n resultaatTypeItems: resultaatTypeSelectItems$ | async,\n selectedCaseDefinitionId: selectedCaseDefinitionId$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-input\n name=\"toelichting\"\n [title]=\"'resultaattoelichting' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.toelichting\"\n [disabled]=\"obs.disabled\"\n [required]=\"false\"\n [tooltip]=\"'resultaattoelichtingTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <v-radio\n name=\"inputTypeZaakResultaatToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakResultaatToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"resultaattypeUrl\"\n [title]=\"'resultaattypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.resultaattypeUrl\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'resultaattypeUrlTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.caseDefinitionItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"caseDefinition\"\n [title]=\"'caseDefinition' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.caseDefinitionItems ||\n oneSelectItem(obs.caseDefinitionItems)\n \"\n [required]=\"true\"\n [loading]=\"!obs.caseDefinitionItems\"\n [tooltip]=\"'caseDefinitionTooltipResultaat' | pluginTranslate: obs.pluginId | async\"\n (selectedChange)=\"selectCaseDefinition($event)\"\n [defaultSelectionId]=\"obs?.selectedCaseDefinitionId\"\n ></v-select>\n <v-select\n [items]=\"obs.resultaatTypeItems && obs.resultaatTypeItems[obs.selectedCaseDefinitionId]\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"resultaattypeUrl\"\n [title]=\"'resultaattypeUrlSelect' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.resultaatTypeItems ||\n !obs.resultaatTypeItems[obs.selectedCaseDefinitionId]\n \"\n [defaultSelectionId]=\"obs.prefill?.resultaattypeUrl\"\n [required]=\"true\"\n [loading]=\"!obs.resultaatTypeItems\"\n [tooltip]=\"'resultaattypeUrlSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n [clearSelectionSubject$]=\"clearStatusSelection$\"\n ></v-select>\n </ng-container>\n </ng-container>\n</v-form>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}\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: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i1.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim"], outputs: ["valueChange"] }, { kind: "component", type: i1.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "component", type: i1.RadioComponent, selector: "v-radio", inputs: ["name", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "tooltip", "required", "smallLabel", "rows", "clear$", "radioValues"], outputs: ["valueChange"] }, { kind: "component", type: i6.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.PluginTranslatePipe, name: "pluginTranslate" }] }); }
143
143
  }
144
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateZaakResultaatConfigurationComponent, decorators: [{
145
145
  type: Component,
146
- args: [{ selector: 'valtimo-create-zaak-resultaat-configuration', providers: [PluginTranslatePipe], 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<v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n loading: loading$ | async,\n caseDefinitionItems: caseDefinitionSelectItems$ | async,\n resultaatTypeItems: resultaatTypeSelectItems$ | async,\n selectedCaseDefinitionId: selectedCaseDefinitionId$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-input\n name=\"toelichting\"\n [title]=\"'resultaattoelichting' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.toelichting\"\n [disabled]=\"obs.disabled\"\n [required]=\"false\"\n [tooltip]=\"'resultaattoelichtingTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <v-radio\n name=\"inputTypeZaakResultaatToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakResultaatToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"resultaattypeUrl\"\n [title]=\"'resultaattypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.resultaattypeUrl\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [tooltip]=\"'resultaattypeUrlTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.caseDefinitionItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"caseDefinition\"\n [title]=\"'caseDefinition' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.caseDefinitionItems ||\n oneSelectItem(obs.caseDefinitionItems)\n \"\n [required]=\"true\"\n [loading]=\"!obs.caseDefinitionItems\"\n [tooltip]=\"'caseDefinitionTooltipResultaat' | pluginTranslate: obs.pluginId | async\"\n (selectedChange)=\"selectCaseDefinition($event)\"\n [defaultSelectionId]=\"obs?.selectedCaseDefinitionId\"\n ></v-select>\n <v-select\n [items]=\"obs.resultaatTypeItems && obs.resultaatTypeItems[obs.selectedCaseDefinitionId]\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"resultaattypeUrl\"\n [title]=\"'resultaattypeUrlSelect' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.resultaatTypeItems ||\n !obs.resultaatTypeItems[obs.selectedCaseDefinitionId]\n \"\n [defaultSelectionId]=\"obs.prefill?.resultaattypeUrl\"\n [required]=\"true\"\n [loading]=\"!obs.resultaatTypeItems\"\n [tooltip]=\"'resultaattypeUrlSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n [clearSelectionSubject$]=\"clearStatusSelection$\"\n ></v-select>\n </ng-container>\n </ng-container>\n</v-form>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}\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"] }]
146
+ args: [{ selector: 'valtimo-create-zaak-resultaat-configuration', providers: [PluginTranslatePipe], 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<v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n loading: loading$ | async,\n caseDefinitionItems: caseDefinitionSelectItems$ | async,\n resultaatTypeItems: resultaatTypeSelectItems$ | async,\n selectedCaseDefinitionId: selectedCaseDefinitionId$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-input\n name=\"toelichting\"\n [title]=\"'resultaattoelichting' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.toelichting\"\n [disabled]=\"obs.disabled\"\n [required]=\"false\"\n [tooltip]=\"'resultaattoelichtingTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <v-radio\n name=\"inputTypeZaakResultaatToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakResultaatToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"resultaattypeUrl\"\n [title]=\"'resultaattypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.resultaattypeUrl\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'resultaattypeUrlTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.caseDefinitionItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"caseDefinition\"\n [title]=\"'caseDefinition' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.caseDefinitionItems ||\n oneSelectItem(obs.caseDefinitionItems)\n \"\n [required]=\"true\"\n [loading]=\"!obs.caseDefinitionItems\"\n [tooltip]=\"'caseDefinitionTooltipResultaat' | pluginTranslate: obs.pluginId | async\"\n (selectedChange)=\"selectCaseDefinition($event)\"\n [defaultSelectionId]=\"obs?.selectedCaseDefinitionId\"\n ></v-select>\n <v-select\n [items]=\"obs.resultaatTypeItems && obs.resultaatTypeItems[obs.selectedCaseDefinitionId]\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"resultaattypeUrl\"\n [title]=\"'resultaattypeUrlSelect' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.resultaatTypeItems ||\n !obs.resultaatTypeItems[obs.selectedCaseDefinitionId]\n \"\n [defaultSelectionId]=\"obs.prefill?.resultaattypeUrl\"\n [required]=\"true\"\n [loading]=\"!obs.resultaatTypeItems\"\n [tooltip]=\"'resultaattypeUrlSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n [clearSelectionSubject$]=\"clearStatusSelection$\"\n ></v-select>\n </ng-container>\n </ng-container>\n</v-form>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}\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"] }]
147
147
  }], ctorParameters: () => [{ type: i1.ModalService }, { type: i2.DocumentService }, { type: i3.ZakenApiService }, { type: i4.PluginTranslatePipe }], propDecorators: { save$: [{
148
148
  type: Input
149
149
  }], disabled$: [{
@@ -157,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
157
157
  }], configuration: [{
158
158
  type: Output
159
159
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXphYWstcmVzdWx0YWF0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wbHVnaW4vc3JjL2xpYi9wbHVnaW5zL3pha2VuLWFwaS9jb21wb25lbnRzL2NyZWF0ZS16YWFrLXJlc3VsdGFhdC9jcmVhdGUtemFhay1yZXN1bHRhYXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvY3JlYXRlLXphYWstcmVzdWx0YWF0L2NyZWF0ZS16YWFrLXJlc3VsdGFhdC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsTUFBTSxFQUVOLEVBQUUsRUFDRixPQUFPLEVBRVAsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFJZCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7OztBQVF0RCxNQUFNLE9BQU8seUNBQXlDO0lBS3BELElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQXdHRCxZQUNtQixZQUEwQixFQUMxQixlQUFnQyxFQUNoQyxlQUFnQyxF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Q0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F4S1UseUNBQXlDO21HQUF6Qyx5Q0FBeUMsNlBBRnpDLENBQUMsbUJBQW1CLENBQUMsMEJDekNsQyxncElBNEdBOzs0RkRqRWEseUNBQXlDO2tCQU5yRCxTQUFTOytCQUNFLDZDQUE2QyxhQUc1QyxDQUFDLG1CQUFtQixDQUFDOytLQUt2QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxRQUFRO3NCQUFwQixLQUFLO2dCQUdHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmaWx0ZXIsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q3JlYXRlWmFha1Jlc3VsdGFhdENvbmZpZywgSW5wdXRPcHRpb259IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01vZGFsU2VydmljZSwgUmFkaW9WYWx1ZSwgU2VsZWN0SXRlbX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0RvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7WmFrZW5BcGlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1BsdWdpblRyYW5zbGF0ZVBpcGV9IGZyb20gJy4uLy4uLy4uLy4uL3BpcGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1jcmVhdGUtemFhay1yZXN1bHRhYXQtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtemFhay1yZXN1bHRhYXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS16YWFrLXJlc3VsdGFhdC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1BsdWdpblRyYW5zbGF0ZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVaYWFrUmVzdWx0YWF0Q29uZmlndXJhdGlvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgc2F2ZSQ6IE9ic2VydmFibGU8dm9pZD47XG4gIEBJbnB1dCgpIGRpc2FibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQElucHV0KCkgc2V0IHBsdWdpbklkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBsdWdpbklkJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBwcmVmaWxsQ29uZmlndXJhdGlvbiQ6IE9ic2VydmFibGU8Q3JlYXRlWmFha1Jlc3VsdGFhdENvbmZpZz47XG4gIEBPdXRwdXQoKSB2YWxpZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY29uZmlndXJhdGlvbjogRXZlbnRFbWl0dGVyPENyZWF0ZVphYWtSZXN1bHRhYXRDb25maWc+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPENyZWF0ZVphYWtSZXN1bHRhYXRDb25maWc+KCk7XG5cbiAgcmVhZG9ubHkgY2FzZURlZmluaXRpb25TZWxlY3RJdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PFNlbGVjdEl0ZW0+PihudWxsKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGNsZWFyU3RhdHVzU2VsZWN0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IHJlc3VsdGFhdFR5cGVTZWxlY3RJdGVtcyQ6IE9ic2VydmFibGU8e1tjYXNlRGVmaW5pdGlvbklkOiBzdHJpbmddOiBBcnJheTxTZWxlY3RJdGVtPn0+ID1cbiAgICB0aGlzLm1vZGFsU2VydmljZS5tb2RhbERhdGEkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocGFyYW1zID0+XG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmZpbmRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc0J5UHJvY2Vzc0RlZmluaXRpb25LZXkoXG4gICAgICAgICAgcGFyYW1zPy5wcm9jZXNzRGVmaW5pdGlvbktleVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgdGFwKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zID0+IHtcbiAgICAgICAgY29uc3QgY2FzZURlZlNlbGVjdEl0ZW1zID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubWFwKHByb2Nlc3NEb2NEZWYgPT4gKHtcbiAgICAgICAgICB0ZXh0OiBwcm9jZXNzRG9jRGVmLmlkLmRvY3VtZW50RGVmaW5pdGlvbklkLm5hbWUsXG4gICAgICAgICAgaWQ6IHByb2Nlc3NEb2NEZWYuaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHRoaXMuY2FzZURlZmluaXRpb25TZWxlY3RJdGVtcyQubmV4dChjYXNlRGVmU2VsZWN0SXRlbXMpO1xuXG4gICAgICAgIGlmICh0aGlzLm9uZVNlbGVjdEl0ZW0oY2FzZURlZlNlbGVjdEl0ZW1zKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJC5uZXh0KGNhc2VEZWZTZWxlY3RJdGVtc1swXS5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zID0+XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIG9mKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLm1hcChwcm9jZXNzRG9jID0+IHByb2Nlc3NEb2MuaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZSkpLFxuICAgICAgICAgIC4uLnByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLm1hcChwcm9jZXNzRG9jRGVmID0+XG4gICAgICAgICAgICB0aGlzLnpha2VuQXBpU2VydmljZS5nZXRSZXN1bHRhYXRUeXBlc0J5Q2FzZURlZmluaXRpb24oXG4gICAgICAgICAgICAgIHByb2Nlc3NEb2NEZWYuaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgIF0pXG4gICAgICApLFxuICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgIGNvbnN0IGNhc2VEZWZpbml0aW9uSWRzID0gcmVzWzBdO1xuICAgICAgICBjb25zdCByZXN1bHRhYXRUeXBlcyA9IHJlcy5maWx0ZXIoKGN1cnIsIGluZGV4KSA9PiBpbmRleCAhPT0gMCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdE9iamVjdCA9IHt9O1xuXG4gICAgICAgIGNhc2VEZWZpbml0aW9uSWRzLmZvckVhY2goKGNhc2VEZWZpbml0aW9uSWQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgc2VsZWN0T2JqZWN0W2Nhc2VEZWZpbml0aW9uSWRdID0gcmVzdWx0YWF0VHlwZXNbaW5kZXhdLm1hcChzdGF0dXNUeXBlID0+ICh7XG4gICAgICAgICAgICBpZDogc3RhdHVzVHlwZS51cmwsXG4gICAgICAgICAgICB0ZXh0OiBzdGF0dXNUeXBlLm5hbWUsXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0T2JqZWN0O1xuICAgICAgfSksXG4gICAgICB0YXAoc2VsZWN0T2JqZWN0ID0+IHtcbiAgICAgICAgdGhpcy5wcmVmaWxsQ29uZmlndXJhdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocHJlZmlsbENvbmZpZyA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0YWF0VHlwZVVybCA9IHByZWZpbGxDb25maWc/LnJlc3VsdGFhdHR5cGVVcmw7XG5cbiAgICAgICAgICBpZiAocmVzdWx0YWF0VHlwZVVybCkge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCE6IHN0cmluZztcblxuICAgICAgICAgICAgT2JqZWN0LmtleXMoc2VsZWN0T2JqZWN0KS5mb3JFYWNoKGNhc2VEZWZpbml0aW9uSWQgPT4ge1xuICAgICAgICAgICAgICBpZiAoc2VsZWN0T2JqZWN0W2Nhc2VEZWZpbml0aW9uSWRdLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSByZXN1bHRhYXRUeXBlVXJsKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCA9IGNhc2VEZWZpbml0aW9uSWQ7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VEZWZpbml0aW9uSWQkLm5leHQoc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5wdXRPcHRpb24kLm5leHQoJ3RleHQnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZElucHV0T3B0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW5wdXRPcHRpb24+KCdzZWxlY3Rpb24nKTtcblxuICByZWFkb25seSBwbHVnaW5JZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHJlYWRvbmx5IGlucHV0VHlwZU9wdGlvbnMkOiBPYnNlcnZhYmxlPEFycmF5PFJhZGlvVmFsdWU+PiA9IHRoaXMucGx1Z2luSWQkLnBpcGUoXG4gICAgZmlsdGVyKHBsdWdpbklkID0+ICEhcGx1Z2luSWQpLFxuICAgIHN3aXRjaE1hcChwbHVnaW5JZCA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMucGx1Z2luVHJhbnNsYXRlUGlwZS50cmFuc2Zvcm0oJ3NlbGVjdGlvbicsIHBsdWdpbklkKSxcbiAgICAgICAgdGhpcy5wbHVnaW5UcmFuc2xhdGVQaXBlLnRyYW5zZm9ybSgndGV4dCcsIHBsdWdpbklkKSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFtzZWxlY3Rpb25UcmFuc2xhdGlvbiwgdGV4dFRyYW5zbGF0aW9uXSkgPT4gW1xuICAgICAge3ZhbHVlOiAnc2VsZWN0aW9uJywgdGl0bGU6IHNlbGVjdGlvblRyYW5zbGF0aW9ufSxcbiAgICAgIHt2YWx1ZTogJ3RleHQnLCB0aXRsZTogdGV4dFRyYW5zbGF0aW9ufSxcbiAgICBdKVxuICApO1xuXG4gIHByaXZhdGUgc2F2ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENyZWF0ZVphYWtSZXN1bHRhYXRDb25maWcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB6YWtlbkFwaVNlcnZpY2U6IFpha2VuQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpblRyYW5zbGF0ZVBpcGU6IFBsdWdpblRyYW5zbGF0ZVBpcGVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlblNhdmVTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGZvcm1WYWx1ZUNoYW5nZShmb3JtVmFsdWU6IENyZWF0ZVphYWtSZXN1bHRhYXRDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1WYWx1ZSQubmV4dChmb3JtVmFsdWUpO1xuICAgIHRoaXMuaGFuZGxlVmFsaWQoZm9ybVZhbHVlKTtcblxuICAgIGlmIChmb3JtVmFsdWUuaW5wdXRUeXBlWmFha1Jlc3VsdGFhdFRvZ2dsZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZElucHV0T3B0aW9uJC5uZXh0KGZvcm1WYWx1ZS5pbnB1dFR5cGVaYWFrUmVzdWx0YWF0VG9nZ2xlKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDYXNlRGVmaW5pdGlvbihjYXNlRGVmaW5pdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCQubmV4dChjYXNlRGVmaW5pdGlvbklkKTtcbiAgICB0aGlzLmNsZWFyU3RhdHVzU2VsZWN0aW9uJC5uZXh0KCk7XG4gIH1cblxuICBvbmVTZWxlY3RJdGVtKHNlbGVjdEl0ZW1zOiBBcnJheTxTZWxlY3RJdGVtPik6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdEl0ZW1zKSkge1xuICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zLmxlbmd0aCA9PT0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZhbGlkKGZvcm1WYWx1ZTogQ3JlYXRlWmFha1Jlc3VsdGFhdENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkID0gISFmb3JtVmFsdWUucmVzdWx0YWF0dHlwZVVybDtcblxuICAgIHRoaXMudmFsaWQkLm5leHQodmFsaWQpO1xuICAgIHRoaXMudmFsaWQuZW1pdCh2YWxpZCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5TYXZlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc2F2ZSQ/LnN1YnNjcmliZShzYXZlID0+IHtcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZm9ybVZhbHVlJCwgdGhpcy52YWxpZCRdKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZm9ybVZhbHVlLCB2YWxpZF0pID0+IHtcbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5lbWl0KHtcbiAgICAgICAgICAgICAgdG9lbGljaHRpbmc6IGZvcm1WYWx1ZS50b2VsaWNodGluZyxcbiAgICAgICAgICAgICAgcmVzdWx0YWF0dHlwZVVybDogZm9ybVZhbHVlLnJlc3VsdGFhdHR5cGVVcmwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjx2LWZvcm1cbiAgKHZhbHVlQ2hhbmdlKT1cImZvcm1WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgKm5nSWY9XCJ7XG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jLFxuICAgIHByZWZpbGw6IHByZWZpbGxDb25maWd1cmF0aW9uJCA/IChwcmVmaWxsQ29uZmlndXJhdGlvbiQgfCBhc3luYykgOiBudWxsLFxuICAgIHBsdWdpbklkOiBwbHVnaW5JZCQgfCBhc3luYyxcbiAgICBzZWxlY3RlZElucHV0T3B0aW9uOiBzZWxlY3RlZElucHV0T3B0aW9uJCB8IGFzeW5jLFxuICAgIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmMsXG4gICAgY2FzZURlZmluaXRpb25JdGVtczogY2FzZURlZmluaXRpb25TZWxlY3RJdGVtcyQgfCBhc3luYyxcbiAgICByZXN1bHRhYXRUeXBlSXRlbXM6IHJlc3VsdGFhdFR5cGVTZWxlY3RJdGVtcyQgfCBhc3luYyxcbiAgICBzZWxlY3RlZENhc2VEZWZpbml0aW9uSWQ6IHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmxvYWRpbmcgPT09IGZhbHNlOyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8di1pbnB1dFxuICAgICAgbmFtZT1cInRvZWxpY2h0aW5nXCJcbiAgICAgIFt0aXRsZV09XCIncmVzdWx0YWF0dG9lbGljaHRpbmcnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8udG9lbGljaHRpbmdcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICBbcmVxdWlyZWRdPVwiZmFsc2VcIlxuICAgICAgW3Rvb2x0aXBdPVwiJ3Jlc3VsdGFhdHRvZWxpY2h0aW5nVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgPlxuICAgIDwvdi1pbnB1dD5cbiAgICA8di1yYWRpb1xuICAgICAgbmFtZT1cImlucHV0VHlwZVphYWtSZXN1bHRhYXRUb2dnbGVcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICBbdGl0bGVdPVwiJ2lucHV0VHlwZVphYWtSZXN1bHRhYXRUb2dnbGUnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICBbcmFkaW9WYWx1ZXNdPVwiaW5wdXRUeXBlT3B0aW9ucyQgfCBhc3luY1wiXG4gICAgICBbZGVmYXVsdFZhbHVlXT1cInNlbGVjdGVkSW5wdXRPcHRpb24kIHwgYXN5bmNcIlxuICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICA+XG4gICAgPC92LXJhZGlvPlxuICAgIDx2LWlucHV0XG4gICAgICAqbmdJZj1cIm9icy5zZWxlY3RlZElucHV0T3B0aW9uID09PSAndGV4dCdcIlxuICAgICAgbmFtZT1cInJlc3VsdGFhdHR5cGVVcmxcIlxuICAgICAgW3RpdGxlXT1cIidyZXN1bHRhYXR0eXBlVXJsJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwib2JzLnByZWZpbGw/LnJlc3VsdGFhdHR5cGVVcmxcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICBbdG9vbHRpcF09XCIncmVzdWx0YWF0dHlwZVVybFRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgID5cbiAgICA8L3YtaW5wdXQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9icy5zZWxlY3RlZElucHV0T3B0aW9uID09PSAnc2VsZWN0aW9uJ1wiPlxuICAgICAgPHYtc2VsZWN0XG4gICAgICAgIFtpdGVtc109XCJvYnMuY2FzZURlZmluaXRpb25JdGVtc1wiXG4gICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgIFt3aWR0aEluUHhdPVwiMzUwXCJcbiAgICAgICAgbmFtZT1cImNhc2VEZWZpbml0aW9uXCJcbiAgICAgICAgW3RpdGxlXT1cIidjYXNlRGVmaW5pdGlvbicgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgIG9icy5kaXNhYmxlZCB8fFxuICAgICAgICAgIG9icy5zZWxlY3RlZElucHV0T3B0aW9uID09PSAndGV4dCcgfHxcbiAgICAgICAgICAhb2JzLmNhc2VEZWZpbml0aW9uSXRlbXMgfHxcbiAgICAgICAgICBvbmVTZWxlY3RJdGVtKG9icy5jYXNlRGVmaW5pdGlvbkl0ZW1zKVxuICAgICAgICBcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtsb2FkaW5nXT1cIiFvYnMuY2FzZURlZmluaXRpb25JdGVtc1wiXG4gICAgICAgIFt0b29sdGlwXT1cIidjYXNlRGVmaW5pdGlvblRvb2x0aXBSZXN1bHRhYXQnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJzZWxlY3RDYXNlRGVmaW5pdGlvbigkZXZlbnQpXCJcbiAgICAgICAgW2RlZmF1bHRTZWxlY3Rpb25JZF09XCJvYnM/LnNlbGVjdGVkQ2FzZURlZmluaXRpb25JZFwiXG4gICAgICA+PC92LXNlbGVjdD5cbiAgICAgIDx2LXNlbGVjdFxuICAgICAgICBbaXRlbXNdPVwib2JzLnJlc3VsdGFhdFR5cGVJdGVtcyAmJiBvYnMucmVzdWx0YWF0VHlwZUl0ZW1zW29icy5zZWxlY3RlZENhc2VEZWZpbml0aW9uSWRdXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW3dpZHRoSW5QeF09XCIzNTBcIlxuICAgICAgICBuYW1lPVwicmVzdWx0YWF0dHlwZVVybFwiXG4gICAgICAgIFt0aXRsZV09XCIncmVzdWx0YWF0dHlwZVVybFNlbGVjdCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgIG9icy5kaXNhYmxlZCB8fFxuICAgICAgICAgIG9icy5zZWxlY3RlZElucHV0T3B0aW9uID09PSAndGV4dCcgfHxcbiAgICAgICAgICAhb2JzLnJlc3VsdGFhdFR5cGVJdGVtcyB8fFxuICAgICAgICAgICFvYnMucmVzdWx0YWF0VHlwZUl0ZW1zW29icy5zZWxlY3RlZENhc2VEZWZpbml0aW9uSWRdXG4gICAgICAgIFwiXG4gICAgICAgIFtkZWZhdWx0U2VsZWN0aW9uSWRdPVwib2JzLnByZWZpbGw/LnJlc3VsdGFhdHR5cGVVcmxcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtsb2FkaW5nXT1cIiFvYnMucmVzdWx0YWF0VHlwZUl0ZW1zXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ3Jlc3VsdGFhdHR5cGVVcmxTZWxlY3RUb29sdGlwJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICBbY2xlYXJTZWxlY3Rpb25TdWJqZWN0JF09XCJjbGVhclN0YXR1c1NlbGVjdGlvbiRcIlxuICAgICAgPjwvdi1zZWxlY3Q+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC92LWZvcm0+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgPGNkcy1sb2FkaW5nPjwvY2RzLWxvYWRpbmc+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXphYWstcmVzdWx0YWF0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wbHVnaW4vc3JjL2xpYi9wbHVnaW5zL3pha2VuLWFwaS9jb21wb25lbnRzL2NyZWF0ZS16YWFrLXJlc3VsdGFhdC9jcmVhdGUtemFhay1yZXN1bHRhYXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvY3JlYXRlLXphYWstcmVzdWx0YWF0L2NyZWF0ZS16YWFrLXJlc3VsdGFhdC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsTUFBTSxFQUVOLEVBQUUsRUFDRixPQUFPLEVBRVAsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFJZCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7OztBQVF0RCxNQUFNLE9BQU8seUNBQXlDO0lBS3BELElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQXdHRCxZQUNtQixZQUEwQixFQUMxQixlQUFnQyxFQUNoQyxlQUFnQyxF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Q0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F4S1UseUNBQXlDO21HQUF6Qyx5Q0FBeUMsNlBBRnpDLENBQUMsbUJBQW1CLENBQUMsMEJDekNsQyx1cUlBNkdBOzs0RkRsRWEseUNBQXlDO2tCQU5yRCxTQUFTOytCQUNFLDZDQUE2QyxhQUc1QyxDQUFDLG1CQUFtQixDQUFDOytLQUt2QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxRQUFRO3NCQUFwQixLQUFLO2dCQUdHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmaWx0ZXIsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q3JlYXRlWmFha1Jlc3VsdGFhdENvbmZpZywgSW5wdXRPcHRpb259IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01vZGFsU2VydmljZSwgUmFkaW9WYWx1ZSwgU2VsZWN0SXRlbX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0RvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7WmFrZW5BcGlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1BsdWdpblRyYW5zbGF0ZVBpcGV9IGZyb20gJy4uLy4uLy4uLy4uL3BpcGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1jcmVhdGUtemFhay1yZXN1bHRhYXQtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtemFhay1yZXN1bHRhYXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS16YWFrLXJlc3VsdGFhdC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1BsdWdpblRyYW5zbGF0ZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVaYWFrUmVzdWx0YWF0Q29uZmlndXJhdGlvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgc2F2ZSQ6IE9ic2VydmFibGU8dm9pZD47XG4gIEBJbnB1dCgpIGRpc2FibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQElucHV0KCkgc2V0IHBsdWdpbklkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBsdWdpbklkJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBwcmVmaWxsQ29uZmlndXJhdGlvbiQ6IE9ic2VydmFibGU8Q3JlYXRlWmFha1Jlc3VsdGFhdENvbmZpZz47XG4gIEBPdXRwdXQoKSB2YWxpZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY29uZmlndXJhdGlvbjogRXZlbnRFbWl0dGVyPENyZWF0ZVphYWtSZXN1bHRhYXRDb25maWc+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPENyZWF0ZVphYWtSZXN1bHRhYXRDb25maWc+KCk7XG5cbiAgcmVhZG9ubHkgY2FzZURlZmluaXRpb25TZWxlY3RJdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PFNlbGVjdEl0ZW0+PihudWxsKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGNsZWFyU3RhdHVzU2VsZWN0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IHJlc3VsdGFhdFR5cGVTZWxlY3RJdGVtcyQ6IE9ic2VydmFibGU8e1tjYXNlRGVmaW5pdGlvbklkOiBzdHJpbmddOiBBcnJheTxTZWxlY3RJdGVtPn0+ID1cbiAgICB0aGlzLm1vZGFsU2VydmljZS5tb2RhbERhdGEkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocGFyYW1zID0+XG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmZpbmRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc0J5UHJvY2Vzc0RlZmluaXRpb25LZXkoXG4gICAgICAgICAgcGFyYW1zPy5wcm9jZXNzRGVmaW5pdGlvbktleVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgdGFwKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zID0+IHtcbiAgICAgICAgY29uc3QgY2FzZURlZlNlbGVjdEl0ZW1zID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubWFwKHByb2Nlc3NEb2NEZWYgPT4gKHtcbiAgICAgICAgICB0ZXh0OiBwcm9jZXNzRG9jRGVmLmlkLmRvY3VtZW50RGVmaW5pdGlvbklkLm5hbWUsXG4gICAgICAgICAgaWQ6IHByb2Nlc3NEb2NEZWYuaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHRoaXMuY2FzZURlZmluaXRpb25TZWxlY3RJdGVtcyQubmV4dChjYXNlRGVmU2VsZWN0SXRlbXMpO1xuXG4gICAgICAgIGlmICh0aGlzLm9uZVNlbGVjdEl0ZW0oY2FzZURlZlNlbGVjdEl0ZW1zKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJC5uZXh0KGNhc2VEZWZTZWxlY3RJdGVtc1swXS5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zID0+XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIG9mKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLm1hcChwcm9jZXNzRG9jID0+IHByb2Nlc3NEb2MuaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZSkpLFxuICAgICAgICAgIC4uLnByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLm1hcChwcm9jZXNzRG9jRGVmID0+XG4gICAgICAgICAgICB0aGlzLnpha2VuQXBpU2VydmljZS5nZXRSZXN1bHRhYXRUeXBlc0J5Q2FzZURlZmluaXRpb24oXG4gICAgICAgICAgICAgIHByb2Nlc3NEb2NEZWYuaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgIF0pXG4gICAgICApLFxuICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgIGNvbnN0IGNhc2VEZWZpbml0aW9uSWRzID0gcmVzWzBdO1xuICAgICAgICBjb25zdCByZXN1bHRhYXRUeXBlcyA9IHJlcy5maWx0ZXIoKGN1cnIsIGluZGV4KSA9PiBpbmRleCAhPT0gMCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdE9iamVjdCA9IHt9O1xuXG4gICAgICAgIGNhc2VEZWZpbml0aW9uSWRzLmZvckVhY2goKGNhc2VEZWZpbml0aW9uSWQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgc2VsZWN0T2JqZWN0W2Nhc2VEZWZpbml0aW9uSWRdID0gcmVzdWx0YWF0VHlwZXNbaW5kZXhdLm1hcChzdGF0dXNUeXBlID0+ICh7XG4gICAgICAgICAgICBpZDogc3RhdHVzVHlwZS51cmwsXG4gICAgICAgICAgICB0ZXh0OiBzdGF0dXNUeXBlLm5hbWUsXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0T2JqZWN0O1xuICAgICAgfSksXG4gICAgICB0YXAoc2VsZWN0T2JqZWN0ID0+IHtcbiAgICAgICAgdGhpcy5wcmVmaWxsQ29uZmlndXJhdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocHJlZmlsbENvbmZpZyA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0YWF0VHlwZVVybCA9IHByZWZpbGxDb25maWc/LnJlc3VsdGFhdHR5cGVVcmw7XG5cbiAgICAgICAgICBpZiAocmVzdWx0YWF0VHlwZVVybCkge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCE6IHN0cmluZztcblxuICAgICAgICAgICAgT2JqZWN0LmtleXMoc2VsZWN0T2JqZWN0KS5mb3JFYWNoKGNhc2VEZWZpbml0aW9uSWQgPT4ge1xuICAgICAgICAgICAgICBpZiAoc2VsZWN0T2JqZWN0W2Nhc2VEZWZpbml0aW9uSWRdLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSByZXN1bHRhYXRUeXBlVXJsKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCA9IGNhc2VEZWZpbml0aW9uSWQ7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VEZWZpbml0aW9uSWQkLm5leHQoc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5wdXRPcHRpb24kLm5leHQoJ3RleHQnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZElucHV0T3B0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW5wdXRPcHRpb24+KCdzZWxlY3Rpb24nKTtcblxuICByZWFkb25seSBwbHVnaW5JZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHJlYWRvbmx5IGlucHV0VHlwZU9wdGlvbnMkOiBPYnNlcnZhYmxlPEFycmF5PFJhZGlvVmFsdWU+PiA9IHRoaXMucGx1Z2luSWQkLnBpcGUoXG4gICAgZmlsdGVyKHBsdWdpbklkID0+ICEhcGx1Z2luSWQpLFxuICAgIHN3aXRjaE1hcChwbHVnaW5JZCA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMucGx1Z2luVHJhbnNsYXRlUGlwZS50cmFuc2Zvcm0oJ3NlbGVjdGlvbicsIHBsdWdpbklkKSxcbiAgICAgICAgdGhpcy5wbHVnaW5UcmFuc2xhdGVQaXBlLnRyYW5zZm9ybSgndGV4dCcsIHBsdWdpbklkKSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFtzZWxlY3Rpb25UcmFuc2xhdGlvbiwgdGV4dFRyYW5zbGF0aW9uXSkgPT4gW1xuICAgICAge3ZhbHVlOiAnc2VsZWN0aW9uJywgdGl0bGU6IHNlbGVjdGlvblRyYW5zbGF0aW9ufSxcbiAgICAgIHt2YWx1ZTogJ3RleHQnLCB0aXRsZTogdGV4dFRyYW5zbGF0aW9ufSxcbiAgICBdKVxuICApO1xuXG4gIHByaXZhdGUgc2F2ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENyZWF0ZVphYWtSZXN1bHRhYXRDb25maWcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB6YWtlbkFwaVNlcnZpY2U6IFpha2VuQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpblRyYW5zbGF0ZVBpcGU6IFBsdWdpblRyYW5zbGF0ZVBpcGVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlblNhdmVTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGZvcm1WYWx1ZUNoYW5nZShmb3JtVmFsdWU6IENyZWF0ZVphYWtSZXN1bHRhYXRDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1WYWx1ZSQubmV4dChmb3JtVmFsdWUpO1xuICAgIHRoaXMuaGFuZGxlVmFsaWQoZm9ybVZhbHVlKTtcblxuICAgIGlmIChmb3JtVmFsdWUuaW5wdXRUeXBlWmFha1Jlc3VsdGFhdFRvZ2dsZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZElucHV0T3B0aW9uJC5uZXh0KGZvcm1WYWx1ZS5pbnB1dFR5cGVaYWFrUmVzdWx0YWF0VG9nZ2xlKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDYXNlRGVmaW5pdGlvbihjYXNlRGVmaW5pdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCQubmV4dChjYXNlRGVmaW5pdGlvbklkKTtcbiAgICB0aGlzLmNsZWFyU3RhdHVzU2VsZWN0aW9uJC5uZXh0KCk7XG4gIH1cblxuICBvbmVTZWxlY3RJdGVtKHNlbGVjdEl0ZW1zOiBBcnJheTxTZWxlY3RJdGVtPik6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdEl0ZW1zKSkge1xuICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zLmxlbmd0aCA9PT0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZhbGlkKGZvcm1WYWx1ZTogQ3JlYXRlWmFha1Jlc3VsdGFhdENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkID0gISFmb3JtVmFsdWUucmVzdWx0YWF0dHlwZVVybDtcblxuICAgIHRoaXMudmFsaWQkLm5leHQodmFsaWQpO1xuICAgIHRoaXMudmFsaWQuZW1pdCh2YWxpZCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5TYXZlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc2F2ZSQ/LnN1YnNjcmliZShzYXZlID0+IHtcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZm9ybVZhbHVlJCwgdGhpcy52YWxpZCRdKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZm9ybVZhbHVlLCB2YWxpZF0pID0+IHtcbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5lbWl0KHtcbiAgICAgICAgICAgICAgdG9lbGljaHRpbmc6IGZvcm1WYWx1ZS50b2VsaWNodGluZyxcbiAgICAgICAgICAgICAgcmVzdWx0YWF0dHlwZVVybDogZm9ybVZhbHVlLnJlc3VsdGFhdHR5cGVVcmwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjx2LWZvcm1cbiAgKHZhbHVlQ2hhbmdlKT1cImZvcm1WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgKm5nSWY9XCJ7XG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jLFxuICAgIHByZWZpbGw6IHByZWZpbGxDb25maWd1cmF0aW9uJCA/IChwcmVmaWxsQ29uZmlndXJhdGlvbiQgfCBhc3luYykgOiBudWxsLFxuICAgIHBsdWdpbklkOiBwbHVnaW5JZCQgfCBhc3luYyxcbiAgICBzZWxlY3RlZElucHV0T3B0aW9uOiBzZWxlY3RlZElucHV0T3B0aW9uJCB8IGFzeW5jLFxuICAgIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmMsXG4gICAgY2FzZURlZmluaXRpb25JdGVtczogY2FzZURlZmluaXRpb25TZWxlY3RJdGVtcyQgfCBhc3luYyxcbiAgICByZXN1bHRhYXRUeXBlSXRlbXM6IHJlc3VsdGFhdFR5cGVTZWxlY3RJdGVtcyQgfCBhc3luYyxcbiAgICBzZWxlY3RlZENhc2VEZWZpbml0aW9uSWQ6IHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmxvYWRpbmcgPT09IGZhbHNlOyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8di1pbnB1dFxuICAgICAgbmFtZT1cInRvZWxpY2h0aW5nXCJcbiAgICAgIFt0aXRsZV09XCIncmVzdWx0YWF0dG9lbGljaHRpbmcnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8udG9lbGljaHRpbmdcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICBbcmVxdWlyZWRdPVwiZmFsc2VcIlxuICAgICAgW3Rvb2x0aXBdPVwiJ3Jlc3VsdGFhdHRvZWxpY2h0aW5nVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgPlxuICAgIDwvdi1pbnB1dD5cbiAgICA8di1yYWRpb1xuICAgICAgbmFtZT1cImlucHV0VHlwZVphYWtSZXN1bHRhYXRUb2dnbGVcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICBbdGl0bGVdPVwiJ2lucHV0VHlwZVphYWtSZXN1bHRhYXRUb2dnbGUnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICBbcmFkaW9WYWx1ZXNdPVwiaW5wdXRUeXBlT3B0aW9ucyQgfCBhc3luY1wiXG4gICAgICBbZGVmYXVsdFZhbHVlXT1cInNlbGVjdGVkSW5wdXRPcHRpb24kIHwgYXN5bmNcIlxuICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICA+XG4gICAgPC92LXJhZGlvPlxuICAgIDx2LWlucHV0XG4gICAgICAqbmdJZj1cIm9icy5zZWxlY3RlZElucHV0T3B0aW9uID09PSAndGV4dCdcIlxuICAgICAgbmFtZT1cInJlc3VsdGFhdHR5cGVVcmxcIlxuICAgICAgW3RpdGxlXT1cIidyZXN1bHRhYXR0eXBlVXJsJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwib2JzLnByZWZpbGw/LnJlc3VsdGFhdHR5cGVVcmxcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICBbdHJpbV09XCJ0cnVlXCJcbiAgICAgIFt0b29sdGlwXT1cIidyZXN1bHRhYXR0eXBlVXJsVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgPlxuICAgIDwvdi1pbnB1dD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICdzZWxlY3Rpb24nXCI+XG4gICAgICA8di1zZWxlY3RcbiAgICAgICAgW2l0ZW1zXT1cIm9icy5jYXNlRGVmaW5pdGlvbkl0ZW1zXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW3dpZHRoSW5QeF09XCIzNTBcIlxuICAgICAgICBuYW1lPVwiY2FzZURlZmluaXRpb25cIlxuICAgICAgICBbdGl0bGVdPVwiJ2Nhc2VEZWZpbml0aW9uJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgb2JzLmRpc2FibGVkIHx8XG4gICAgICAgICAgb2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICd0ZXh0JyB8fFxuICAgICAgICAgICFvYnMuY2FzZURlZmluaXRpb25JdGVtcyB8fFxuICAgICAgICAgIG9uZVNlbGVjdEl0ZW0ob2JzLmNhc2VEZWZpbml0aW9uSXRlbXMpXG4gICAgICAgIFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW2xvYWRpbmddPVwiIW9icy5jYXNlRGVmaW5pdGlvbkl0ZW1zXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ2Nhc2VEZWZpbml0aW9uVG9vbHRpcFJlc3VsdGFhdCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cInNlbGVjdENhc2VEZWZpbml0aW9uKCRldmVudClcIlxuICAgICAgICBbZGVmYXVsdFNlbGVjdGlvbklkXT1cIm9icz8uc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkXCJcbiAgICAgID48L3Ytc2VsZWN0PlxuICAgICAgPHYtc2VsZWN0XG4gICAgICAgIFtpdGVtc109XCJvYnMucmVzdWx0YWF0VHlwZUl0ZW1zICYmIG9icy5yZXN1bHRhYXRUeXBlSXRlbXNbb2JzLnNlbGVjdGVkQ2FzZURlZmluaXRpb25JZF1cIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICBbd2lkdGhJblB4XT1cIjM1MFwiXG4gICAgICAgIG5hbWU9XCJyZXN1bHRhYXR0eXBlVXJsXCJcbiAgICAgICAgW3RpdGxlXT1cIidyZXN1bHRhYXR0eXBlVXJsU2VsZWN0JyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgb2JzLmRpc2FibGVkIHx8XG4gICAgICAgICAgb2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICd0ZXh0JyB8fFxuICAgICAgICAgICFvYnMucmVzdWx0YWF0VHlwZUl0ZW1zIHx8XG4gICAgICAgICAgIW9icy5yZXN1bHRhYXRUeXBlSXRlbXNbb2JzLnNlbGVjdGVkQ2FzZURlZmluaXRpb25JZF1cbiAgICAgICAgXCJcbiAgICAgICAgW2RlZmF1bHRTZWxlY3Rpb25JZF09XCJvYnMucHJlZmlsbD8ucmVzdWx0YWF0dHlwZVVybFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW2xvYWRpbmddPVwiIW9icy5yZXN1bHRhYXRUeXBlSXRlbXNcIlxuICAgICAgICBbdG9vbHRpcF09XCIncmVzdWx0YWF0dHlwZVVybFNlbGVjdFRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIFtjbGVhclNlbGVjdGlvblN1YmplY3QkXT1cImNsZWFyU3RhdHVzU2VsZWN0aW9uJFwiXG4gICAgICA+PC92LXNlbGVjdD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L3YtZm9ybT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgICA8Y2RzLWxvYWRpbmc+PC9jZHMtbG9hZGluZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19