@valtimo/process-link 12.3.1 → 12.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/esm2022/lib/components/choose-process-link-type/choose-process-link-type.component.mjs +3 -3
  2. package/esm2022/lib/components/form-display-configuration/form-display-configuration.component.mjs +109 -0
  3. package/esm2022/lib/components/form-flow/form-flow.component.mjs +97 -22
  4. package/esm2022/lib/components/process-link-modal/process-link-modal.component.mjs +5 -4
  5. package/esm2022/lib/components/select-form/select-form.component.mjs +63 -26
  6. package/esm2022/lib/components/select-form-flow/select-form-flow.component.mjs +60 -25
  7. package/esm2022/lib/components/select-url/select-url.component.mjs +134 -0
  8. package/esm2022/lib/constants/index.mjs +2 -1
  9. package/esm2022/lib/constants/process.link.mjs +23 -0
  10. package/esm2022/lib/models/form-link.model.mjs +1 -1
  11. package/esm2022/lib/models/process-link-url.model.mjs +17 -0
  12. package/esm2022/lib/models/process-link.model.mjs +1 -1
  13. package/esm2022/lib/process-link.module.mjs +25 -5
  14. package/esm2022/lib/services/form-flow.service.mjs +7 -1
  15. package/esm2022/lib/services/process-link-state.service.mjs +6 -1
  16. package/esm2022/lib/services/process-link-step.service.mjs +25 -3
  17. package/esm2022/lib/services/process-link.service.mjs +21 -1
  18. package/esm2022/lib/services/url-resolver.service.mjs +18 -0
  19. package/esm2022/lib/services/url-validator.service.mjs +26 -0
  20. package/esm2022/public-api.mjs +4 -1
  21. package/fesm2022/valtimo-process-link.mjs +590 -100
  22. package/fesm2022/valtimo-process-link.mjs.map +1 -1
  23. package/lib/components/form-display-configuration/form-display-configuration.component.d.ts +40 -0
  24. package/lib/components/form-display-configuration/form-display-configuration.component.d.ts.map +1 -0
  25. package/lib/components/form-flow/form-flow.component.d.ts +25 -6
  26. package/lib/components/form-flow/form-flow.component.d.ts.map +1 -1
  27. package/lib/components/select-form/select-form.component.d.ts +10 -2
  28. package/lib/components/select-form/select-form.component.d.ts.map +1 -1
  29. package/lib/components/select-form-flow/select-form-flow.component.d.ts +10 -2
  30. package/lib/components/select-form-flow/select-form-flow.component.d.ts.map +1 -1
  31. package/lib/components/select-url/select-url.component.d.ts +31 -0
  32. package/lib/components/select-url/select-url.component.d.ts.map +1 -0
  33. package/lib/constants/index.d.ts +1 -0
  34. package/lib/constants/index.d.ts.map +1 -1
  35. package/lib/constants/process.link.d.ts +5 -0
  36. package/lib/constants/process.link.d.ts.map +1 -0
  37. package/lib/models/form-link.model.d.ts +11 -1
  38. package/lib/models/form-link.model.d.ts.map +1 -1
  39. package/lib/models/process-link-url.model.d.ts +5 -0
  40. package/lib/models/process-link-url.model.d.ts.map +1 -0
  41. package/lib/models/process-link.model.d.ts +22 -1
  42. package/lib/models/process-link.model.d.ts.map +1 -1
  43. package/lib/process-link.module.d.ts +10 -8
  44. package/lib/process-link.module.d.ts.map +1 -1
  45. package/lib/services/form-flow.service.d.ts +3 -1
  46. package/lib/services/form-flow.service.d.ts.map +1 -1
  47. package/lib/services/process-link-state.service.d.ts +2 -0
  48. package/lib/services/process-link-state.service.d.ts.map +1 -1
  49. package/lib/services/process-link-step.service.d.ts +2 -0
  50. package/lib/services/process-link-step.service.d.ts.map +1 -1
  51. package/lib/services/process-link.service.d.ts +6 -3
  52. package/lib/services/process-link.service.d.ts.map +1 -1
  53. package/lib/services/url-resolver.service.d.ts +7 -0
  54. package/lib/services/url-resolver.service.d.ts.map +1 -0
  55. package/lib/services/url-validator.service.d.ts +11 -0
  56. package/lib/services/url-validator.service.d.ts.map +1 -0
  57. package/package.json +1 -1
  58. package/public-api.d.ts +3 -0
  59. package/public-api.d.ts.map +1 -1
@@ -29,10 +29,10 @@ export class ChooseProcessLinkTypeComponent {
29
29
  this.processLinkStateService.selectProcessLinkType(processLinkTypeId);
30
30
  }
31
31
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChooseProcessLinkTypeComponent, deps: [{ token: i1.ProcessLinkStateService }], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ChooseProcessLinkTypeComponent, selector: "valtimo-choose-process-link-type", 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 availableProcessLinkTypes: availableProcessLinkTypes$ | async\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"'processLinkTypeDisabledTooltip.' + processLinkTypeId | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".process-link-type-button{width:100%}.process-link-grid{margin-top:24px;display:flex;justify-content:flex-start;width:100%;flex-wrap:wrap;gap:8px}.process-link-item{flex-basis:calc(33.3% - 5.3333333333px)}\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: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i4.TooltipDirective, selector: "[vTooltip]", inputs: ["vTooltip", "onBottom", "tooltipDisabled"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ChooseProcessLinkTypeComponent, selector: "valtimo-choose-process-link-type", 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 availableProcessLinkTypes: availableProcessLinkTypes$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"'processLinkTypeDisabledTooltip.' + processLinkTypeId | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".process-link-type-button{width:100%}.process-link-grid{margin-top:24px;display:flex;justify-content:flex-start;width:100%;flex-wrap:wrap;gap:8px}.process-link-item{flex-basis:calc(33.3% - 5.3333333333px)}\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: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i4.TooltipDirective, selector: "[vTooltip]", inputs: ["vTooltip", "onBottom", "tooltipDisabled"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
33
33
  }
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChooseProcessLinkTypeComponent, decorators: [{
35
35
  type: Component,
36
- args: [{ selector: 'valtimo-choose-process-link-type', 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 availableProcessLinkTypes: availableProcessLinkTypes$ | async\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"'processLinkTypeDisabledTooltip.' + processLinkTypeId | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".process-link-type-button{width:100%}.process-link-grid{margin-top:24px;display:flex;justify-content:flex-start;width:100%;flex-wrap:wrap;gap:8px}.process-link-item{flex-basis:calc(33.3% - 5.3333333333px)}\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"] }]
36
+ args: [{ selector: 'valtimo-choose-process-link-type', 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 availableProcessLinkTypes: availableProcessLinkTypes$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"'processLinkTypeDisabledTooltip.' + processLinkTypeId | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".process-link-type-button{width:100%}.process-link-grid{margin-top:24px;display:flex;justify-content:flex-start;width:100%;flex-wrap:wrap;gap:8px}.process-link-item{flex-basis:calc(33.3% - 5.3333333333px)}\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"] }]
37
37
  }], ctorParameters: () => [{ type: i1.ProcessLinkStateService }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvb3NlLXByb2Nlc3MtbGluay10eXBlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUvY2hvb3NlLXByb2Nlc3MtbGluay10eXBlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUvY2hvb3NlLXByb2Nlc3MtbGluay10eXBlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVF4QyxNQUFNLE9BQU8sOEJBQThCO0lBSXpDLFlBQTZCLHVCQUFnRDtRQUFoRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBSDdELCtCQUEwQixHQUN4QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsMEJBQTBCLENBQUM7SUFFc0IsQ0FBQztJQUVqRixxQkFBcUIsQ0FBQyxpQkFBeUI7UUFDN0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEUsQ0FBQzsrR0FSVSw4QkFBOEI7bUdBQTlCLDhCQUE4Qix3RUN4QjNDLG93RUFnRUE7OzRGRHhDYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0Usa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQcm9jZXNzTGlua1N0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWNob29zZS1wcm9jZXNzLWxpbmstdHlwZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hvb3NlUHJvY2Vzc0xpbmtUeXBlQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGF2YWlsYWJsZVByb2Nlc3NMaW5rVHlwZXMkID1cbiAgICB0aGlzLnByb2Nlc3NMaW5rU3RhdGVTZXJ2aWNlLmF2YWlsYWJsZVByb2Nlc3NMaW5rVHlwZXMkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc0xpbmtTdGF0ZVNlcnZpY2U6IFByb2Nlc3NMaW5rU3RhdGVTZXJ2aWNlKSB7fVxuXG4gIHNlbGVjdFByb2Nlc3NMaW5rVHlwZShwcm9jZXNzTGlua1R5cGVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wcm9jZXNzTGlua1N0YXRlU2VydmljZS5zZWxlY3RQcm9jZXNzTGlua1R5cGUocHJvY2Vzc0xpbmtUeXBlSWQpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlczogYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlcyQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4+XG4gIDxwIGNsYXNzPVwic3RlcC1kZXNjcmlwdGlvblwiPlxuICAgIHt7ICdwcm9jZXNzTGlua0NvbmZpZ3VyYXRpb24uY2hvb3NlUHJvY2Vzc0xpbmtUeXBlRGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XG4gIDwvcD5cbiAgPGRpdiBjbGFzcz1cInByb2Nlc3MtbGluay1ncmlkXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcm9jZXNzLWxpbmstaXRlbVwiXG4gICAgICAqbmdGb3I9XCJsZXQgYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlIG9mIG9icy5hdmFpbGFibGVQcm9jZXNzTGlua1R5cGVzXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlLnByb2Nlc3NMaW5rVHlwZSBhcyBwcm9jZXNzTGlua1R5cGVJZFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFByb2Nlc3NMaW5rVHlwZShwcm9jZXNzTGlua1R5cGVJZClcIlxuICAgICAgICAgIGNkc0J1dHRvbj1cInNlY29uZGFyeVwiXG4gICAgICAgICAgc2l6ZT1cInhsXCJcbiAgICAgICAgICBjbGFzcz1cInByb2Nlc3MtbGluay10eXBlLWJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFhdmFpbGFibGVQcm9jZXNzTGlua1R5cGUuZW5hYmxlZFwiXG4gICAgICAgICAgW3ZUb29sdGlwXT1cIidwcm9jZXNzTGlua1R5cGVEaXNhYmxlZFRvb2x0aXAuJyArIHByb2Nlc3NMaW5rVHlwZUlkIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbb25Cb3R0b21dPVwidHJ1ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCJhdmFpbGFibGVQcm9jZXNzTGlua1R5cGUuZW5hYmxlZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAncHJvY2Vzc0xpbmtUeXBlLicgKyBwcm9jZXNzTGlua1R5cGVJZCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICpuZ0lmPVwicHJvY2Vzc0xpbmtUeXBlSWQgPT09ICdwbHVnaW4nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIlxuICAgICAgICAgICAgY2RzSWNvbj1cImxpbmtcIlxuICAgICAgICAgICAgc2l6ZT1cIjE2XCJcbiAgICAgICAgICA+PC9zdmc+XG4gICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgKm5nSWY9XCJwcm9jZXNzTGlua1R5cGVJZCA9PT0gJ2Zvcm0nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIlxuICAgICAgICAgICAgY2RzSWNvbj1cInJlY2VpcHRcIlxuICAgICAgICAgICAgc2l6ZT1cIjE2XCJcbiAgICAgICAgICA+PC9zdmc+XG4gICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgKm5nSWY9XCJwcm9jZXNzTGlua1R5cGVJZCA9PT0gJ2Zvcm0tZmxvdydcIlxuICAgICAgICAgICAgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiXG4gICAgICAgICAgICBjZHNJY29uPVwiZmxvdy0tZGF0YVwiXG4gICAgICAgICAgICBzaXplPVwiMTZcIlxuICAgICAgICAgID48L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvb3NlLXByb2Nlc3MtbGluay10eXBlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUvY2hvb3NlLXByb2Nlc3MtbGluay10eXBlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUvY2hvb3NlLXByb2Nlc3MtbGluay10eXBlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVF4QyxNQUFNLE9BQU8sOEJBQThCO0lBSXpDLFlBQTZCLHVCQUFnRDtRQUFoRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBSDdELCtCQUEwQixHQUN4QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsMEJBQTBCLENBQUM7SUFFc0IsQ0FBQztJQUVqRixxQkFBcUIsQ0FBQyxpQkFBeUI7UUFDN0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEUsQ0FBQzsrR0FSVSw4QkFBOEI7bUdBQTlCLDhCQUE4Qix3RUN4QjNDLHF3RUFnRUE7OzRGRHhDYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0Usa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQcm9jZXNzTGlua1N0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWNob29zZS1wcm9jZXNzLWxpbmstdHlwZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hvb3NlUHJvY2Vzc0xpbmtUeXBlQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGF2YWlsYWJsZVByb2Nlc3NMaW5rVHlwZXMkID1cbiAgICB0aGlzLnByb2Nlc3NMaW5rU3RhdGVTZXJ2aWNlLmF2YWlsYWJsZVByb2Nlc3NMaW5rVHlwZXMkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc0xpbmtTdGF0ZVNlcnZpY2U6IFByb2Nlc3NMaW5rU3RhdGVTZXJ2aWNlKSB7fVxuXG4gIHNlbGVjdFByb2Nlc3NMaW5rVHlwZShwcm9jZXNzTGlua1R5cGVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wcm9jZXNzTGlua1N0YXRlU2VydmljZS5zZWxlY3RQcm9jZXNzTGlua1R5cGUocHJvY2Vzc0xpbmtUeXBlSWQpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlczogYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlcyQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8cCBjbGFzcz1cInN0ZXAtZGVzY3JpcHRpb25cIj5cbiAgICB7eyAncHJvY2Vzc0xpbmtDb25maWd1cmF0aW9uLmNob29zZVByb2Nlc3NMaW5rVHlwZURlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICA8L3A+XG4gIDxkaXYgY2xhc3M9XCJwcm9jZXNzLWxpbmstZ3JpZFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvY2Vzcy1saW5rLWl0ZW1cIlxuICAgICAgKm5nRm9yPVwibGV0IGF2YWlsYWJsZVByb2Nlc3NMaW5rVHlwZSBvZiBvYnMuYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlc1wiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF2YWlsYWJsZVByb2Nlc3NMaW5rVHlwZS5wcm9jZXNzTGlua1R5cGUgYXMgcHJvY2Vzc0xpbmtUeXBlSWRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQcm9jZXNzTGlua1R5cGUocHJvY2Vzc0xpbmtUeXBlSWQpXCJcbiAgICAgICAgICBjZHNCdXR0b249XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIHNpemU9XCJ4bFwiXG4gICAgICAgICAgY2xhc3M9XCJwcm9jZXNzLWxpbmstdHlwZS1idXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlLmVuYWJsZWRcIlxuICAgICAgICAgIFt2VG9vbHRpcF09XCIncHJvY2Vzc0xpbmtUeXBlRGlzYWJsZWRUb29sdGlwLicgKyBwcm9jZXNzTGlua1R5cGVJZCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW29uQm90dG9tXT1cInRydWVcIlxuICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlLmVuYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ3Byb2Nlc3NMaW5rVHlwZS4nICsgcHJvY2Vzc0xpbmtUeXBlSWQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAqbmdJZj1cInByb2Nlc3NMaW5rVHlwZUlkID09PSAncGx1Z2luJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImNkcy0tYnRuX19pY29uXCJcbiAgICAgICAgICAgIGNkc0ljb249XCJsaW5rXCJcbiAgICAgICAgICAgIHNpemU9XCIxNlwiXG4gICAgICAgICAgPjwvc3ZnPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICpuZ0lmPVwicHJvY2Vzc0xpbmtUeXBlSWQgPT09ICdmb3JtJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImNkcy0tYnRuX19pY29uXCJcbiAgICAgICAgICAgIGNkc0ljb249XCJyZWNlaXB0XCJcbiAgICAgICAgICAgIHNpemU9XCIxNlwiXG4gICAgICAgICAgPjwvc3ZnPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICpuZ0lmPVwicHJvY2Vzc0xpbmtUeXBlSWQgPT09ICdmb3JtLWZsb3cnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIlxuICAgICAgICAgICAgY2RzSWNvbj1cImZsb3ctLWRhdGFcIlxuICAgICAgICAgICAgc2l6ZT1cIjE2XCJcbiAgICAgICAgICA+PC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,109 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest, Subscription } from 'rxjs';
3
+ import { map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services";
6
+ import * as i2 from "@valtimo/config";
7
+ import * as i3 from "@ngx-translate/core";
8
+ import * as i4 from "@angular/common";
9
+ import * as i5 from "carbon-components-angular";
10
+ import * as i6 from "carbon-components-angular/dropdown";
11
+ export class FormDisplayConfigurationComponent {
12
+ constructor(buttonService, configService, stateService, translateService) {
13
+ this.buttonService = buttonService;
14
+ this.configService = configService;
15
+ this.stateService = stateService;
16
+ this.translateService = translateService;
17
+ this.formDisplayValue = new EventEmitter();
18
+ this.formSizeValue = new EventEmitter();
19
+ this.formDisplayValue$ = new BehaviorSubject(null);
20
+ this.formSizeValue$ = new BehaviorSubject(null);
21
+ this.disableFormSizeInput$ = new BehaviorSubject(true);
22
+ this.saving$ = this.stateService.saving$;
23
+ this.taskPanelEnabled$ = new BehaviorSubject(false);
24
+ this.isUserTask$ = new BehaviorSubject(false);
25
+ this._DISPLAY_TYPE_OPTIONS = ['modal', 'panel'];
26
+ this._FORM_SIZE_OPTIONS = ['extraSmall', 'small', 'medium', 'large'];
27
+ this._subscriptions = new Subscription();
28
+ this.formDisplayTypeListItems$ = combineLatest([
29
+ this.formDisplayValue$,
30
+ this.translateService.stream('key'),
31
+ ]).pipe(map(([formDisplayValue]) => this._DISPLAY_TYPE_OPTIONS.map((key) => ({
32
+ content: this.translateService.instant(`processLinkSteps.displayType.options.${key}`),
33
+ key: key,
34
+ selected: this.formDisplayValue$.getValue() === key,
35
+ }))));
36
+ this.formSizeListItems$ = combineLatest([
37
+ this.formSizeValue$,
38
+ this.translateService.stream('key'),
39
+ ]).pipe(map(([formSizeValue]) => this._FORM_SIZE_OPTIONS.map((key) => ({
40
+ content: this.translateService.instant(`processLinkSteps.formSize.options.${key}`),
41
+ key: key,
42
+ selected: this.formSizeValue$.getValue() === key,
43
+ }))));
44
+ this.taskPanelEnabled$.next(!!this.configService.featureToggles?.enableTaskPanel);
45
+ }
46
+ ngOnInit() {
47
+ this._subscriptions.add(combineLatest([
48
+ this.stateService.modalParams$,
49
+ this.stateService.selectedProcessLink$,
50
+ ]).subscribe(([modalParams, selectedProcessLink]) => {
51
+ this.isUserTask$.next(modalParams?.element?.type === 'bpmn:UserTask');
52
+ if (selectedProcessLink) {
53
+ if (selectedProcessLink.formDisplayType)
54
+ this.disableFormSizeInput$.next(false);
55
+ if (selectedProcessLink.activityType.includes('bpmn:UserTask'))
56
+ this.isUserTask$.next(true);
57
+ this.formDisplayValue$.next(selectedProcessLink.formDisplayType);
58
+ this.formSizeValue$.next(selectedProcessLink.formSize);
59
+ }
60
+ }));
61
+ }
62
+ ngOnDestroy() {
63
+ this._subscriptions.unsubscribe();
64
+ }
65
+ selectFormDisplayType(event) {
66
+ this.updateFormDisplayType(event?.key);
67
+ this.enableSaveButtonWhenValid();
68
+ }
69
+ selectFormSize(event) {
70
+ this.updateFormSize(event?.key);
71
+ this.enableSaveButtonWhenValid();
72
+ }
73
+ updateFormDisplayType(formDisplayType) {
74
+ formDisplayType ? this.disableFormSizeInput$.next(false) : this.resetFormSize();
75
+ this.formDisplayValue$.next(formDisplayType);
76
+ this.formDisplayValue.emit(formDisplayType);
77
+ }
78
+ updateFormSize(formSize) {
79
+ this.formSizeValue$.next(formSize);
80
+ this.formSizeValue.emit(formSize);
81
+ }
82
+ resetFormSize() {
83
+ this.disableFormSizeInput$.next(true);
84
+ this.updateFormSize(null);
85
+ }
86
+ enableSaveButtonWhenValid() {
87
+ if (this.selectedFormDefinition &&
88
+ this.formDisplayValue$.getValue() &&
89
+ this.formSizeValue$.getValue()) {
90
+ this.buttonService.enableSaveButton();
91
+ }
92
+ else {
93
+ this.buttonService.disableSaveButton();
94
+ }
95
+ }
96
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormDisplayConfigurationComponent, deps: [{ token: i1.ProcessLinkButtonService }, { token: i2.ConfigService }, { token: i1.ProcessLinkStateService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
97
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormDisplayConfigurationComponent, selector: "valtimo-form-display-configuration", inputs: { selectedFormDefinition: "selectedFormDefinition" }, outputs: { formDisplayValue: "formDisplayValue", formSizeValue: "formSizeValue" }, ngImport: i0, template: "<ng-container\n *ngIf=\"{\n formDisplayValue: formDisplayValue$ | async,\n formDisplayTypeListItems: formDisplayTypeListItems$ | async,\n formSizeListItems: formSizeListItems$ | async,\n disableFormSizeInput: disableFormSizeInput$ | async,\n isUserTask: isUserTask$ | async,\n taskPanelEnabled: taskPanelEnabled$ | async,\n saving: saving$ | async,\n } as obs\"\n>\n @if (obs.taskPanelEnabled && obs.isUserTask) {\n <cds-combo-box\n [placeholder]=\"'processLinkSteps.displayType.placeholder' | translate\"\n [label]=\"'processLinkSteps.displayType.label' | translate\"\n [disabled]=\"obs.saving\"\n (selected)=\"selectFormDisplayType($event)\"\n >\n <cds-dropdown-list [items]=\"obs.formDisplayTypeListItems || []\"></cds-dropdown-list>\n </cds-combo-box>\n <br />\n\n <cds-combo-box\n [placeholder]=\"'processLinkSteps.formSize.placeholder' | translate\"\n [label]=\"'processLinkSteps.formSize.label' | translate\"\n [disabled]=\"obs.disableFormSizeInput || obs.saving\"\n (selected)=\"selectFormSize($event)\"\n >\n <cds-dropdown-list [items]=\"obs.formSizeListItems || []\"></cds-dropdown-list>\n </cds-combo-box>\n }\n</ng-container>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
98
+ }
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormDisplayConfigurationComponent, decorators: [{
100
+ type: Component,
101
+ args: [{ selector: 'valtimo-form-display-configuration', template: "<ng-container\n *ngIf=\"{\n formDisplayValue: formDisplayValue$ | async,\n formDisplayTypeListItems: formDisplayTypeListItems$ | async,\n formSizeListItems: formSizeListItems$ | async,\n disableFormSizeInput: disableFormSizeInput$ | async,\n isUserTask: isUserTask$ | async,\n taskPanelEnabled: taskPanelEnabled$ | async,\n saving: saving$ | async,\n } as obs\"\n>\n @if (obs.taskPanelEnabled && obs.isUserTask) {\n <cds-combo-box\n [placeholder]=\"'processLinkSteps.displayType.placeholder' | translate\"\n [label]=\"'processLinkSteps.displayType.label' | translate\"\n [disabled]=\"obs.saving\"\n (selected)=\"selectFormDisplayType($event)\"\n >\n <cds-dropdown-list [items]=\"obs.formDisplayTypeListItems || []\"></cds-dropdown-list>\n </cds-combo-box>\n <br />\n\n <cds-combo-box\n [placeholder]=\"'processLinkSteps.formSize.placeholder' | translate\"\n [label]=\"'processLinkSteps.formSize.label' | translate\"\n [disabled]=\"obs.disableFormSizeInput || obs.saving\"\n (selected)=\"selectFormSize($event)\"\n >\n <cds-dropdown-list [items]=\"obs.formSizeListItems || []\"></cds-dropdown-list>\n </cds-combo-box>\n }\n</ng-container>\n" }]
102
+ }], ctorParameters: () => [{ type: i1.ProcessLinkButtonService }, { type: i2.ConfigService }, { type: i1.ProcessLinkStateService }, { type: i3.TranslateService }], propDecorators: { selectedFormDefinition: [{
103
+ type: Input
104
+ }], formDisplayValue: [{
105
+ type: Output
106
+ }], formSizeValue: [{
107
+ type: Output
108
+ }] } });
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaXNwbGF5LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wcm9jZXNzLWxpbmsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tZGlzcGxheS1jb25maWd1cmF0aW9uL2Zvcm0tZGlzcGxheS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWRpc3BsYXktY29uZmlndXJhdGlvbi9mb3JtLWRpc3BsYXktY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFLOUUsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQU9uQyxNQUFNLE9BQU8saUNBQWlDO0lBMkM1QyxZQUNtQixhQUF1QyxFQUN2QyxhQUE0QixFQUM1QixZQUFxQyxFQUNyQyxnQkFBa0M7UUFIbEMsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUF5QjtRQUNyQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBNUNwQyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUU1QyxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBeUIsSUFBSSxDQUFDLENBQUM7UUFDdEUs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Q0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixJQUNFLElBQUksQ0FBQyxzQkFBc0I7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtZQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUM5QixDQUFDO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDOytHQS9HVSxpQ0FBaUM7bUdBQWpDLGlDQUFpQywyTkNiOUMscXRDQWdDQTs7NEZEbkJhLGlDQUFpQztrQkFKN0MsU0FBUzsrQkFDRSxvQ0FBb0M7OExBSTlCLHNCQUFzQjtzQkFBckMsS0FBSztnQkFFVyxnQkFBZ0I7c0JBQWhDLE1BQU07Z0JBQ1UsYUFBYTtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtGb3JtRGVmaW5pdGlvbkxpc3RJdGVtLCBGb3JtRGlzcGxheVR5cGUsIEZvcm1TaXplfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7UHJvY2Vzc0xpbmtCdXR0b25TZXJ2aWNlLCBQcm9jZXNzTGlua1N0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtMaXN0SXRlbX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWZvcm0tZGlzcGxheS1jb25maWd1cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZGlzcGxheS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybURpc3BsYXlDb25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRGb3JtRGVmaW5pdGlvbjogRm9ybURlZmluaXRpb25MaXN0SXRlbTtcblxuICBAT3V0cHV0KCkgcHVibGljIGZvcm1EaXNwbGF5VmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBmb3JtU2l6ZVZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcm1EaXNwbGF5VmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRGlzcGxheVR5cGUgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1TaXplVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtU2l6ZSB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZUZvcm1TaXplSW5wdXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNhdmluZyQgPSB0aGlzLnN0YXRlU2VydmljZS5zYXZpbmckO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFza1BhbmVsRW5hYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzVXNlclRhc2skID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfRElTUExBWV9UWVBFX09QVElPTlM6IEZvcm1EaXNwbGF5VHlwZVtdID0gWydtb2RhbCcsICdwYW5lbCddO1xuICBwcml2YXRlIHJlYWRvbmx5IF9GT1JNX1NJWkVfT1BUSU9OUzogRm9ybVNpemVbXSA9IFsnZXh0cmFTbWFsbCcsICdzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnXTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybURpc3BsYXlUeXBlTGlzdEl0ZW1zJDogT2JzZXJ2YWJsZTxMaXN0SXRlbVtdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZm9ybURpc3BsYXlWYWx1ZSQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbZm9ybURpc3BsYXlWYWx1ZV0pID0+XG4gICAgICB0aGlzLl9ESVNQTEFZX1RZUEVfT1BUSU9OUy5tYXAoKGtleTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgcHJvY2Vzc0xpbmtTdGVwcy5kaXNwbGF5VHlwZS5vcHRpb25zLiR7a2V5fWApLFxuICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuZm9ybURpc3BsYXlWYWx1ZSQuZ2V0VmFsdWUoKSA9PT0ga2V5LFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtU2l6ZUxpc3RJdGVtcyQ6IE9ic2VydmFibGU8TGlzdEl0ZW1bXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmZvcm1TaXplVmFsdWUkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2Zvcm1TaXplVmFsdWVdKSA9PlxuICAgICAgdGhpcy5fRk9STV9TSVpFX09QVElPTlMubWFwKChrZXk6IHN0cmluZykgPT4gKHtcbiAgICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYHByb2Nlc3NMaW5rU3RlcHMuZm9ybVNpemUub3B0aW9ucy4ke2tleX1gKSxcbiAgICAgICAga2V5OiBrZXksXG4gICAgICAgIHNlbGVjdGVkOiB0aGlzLmZvcm1TaXplVmFsdWUkLmdldFZhbHVlKCkgPT09IGtleSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1dHRvblNlcnZpY2U6IFByb2Nlc3NMaW5rQnV0dG9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZVNlcnZpY2U6IFByb2Nlc3NMaW5rU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLnRhc2tQYW5lbEVuYWJsZWQkLm5leHQoISF0aGlzLmNvbmZpZ1NlcnZpY2UuZmVhdHVyZVRvZ2dsZXM/LmVuYWJsZVRhc2tQYW5lbCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5zdGF0ZVNlcnZpY2UubW9kYWxQYXJhbXMkLFxuICAgICAgICB0aGlzLnN0YXRlU2VydmljZS5zZWxlY3RlZFByb2Nlc3NMaW5rJCxcbiAgICAgIF0pLnN1YnNjcmliZSgoW21vZGFsUGFyYW1zLCBzZWxlY3RlZFByb2Nlc3NMaW5rXSkgPT4ge1xuICAgICAgICB0aGlzLmlzVXNlclRhc2skLm5leHQobW9kYWxQYXJhbXM/LmVsZW1lbnQ/LnR5cGUgPT09ICdicG1uOlVzZXJUYXNrJyk7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkUHJvY2Vzc0xpbmspIHtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRQcm9jZXNzTGluay5mb3JtRGlzcGxheVR5cGUpIHRoaXMuZGlzYWJsZUZvcm1TaXplSW5wdXQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgIGlmIChzZWxlY3RlZFByb2Nlc3NMaW5rLmFjdGl2aXR5VHlwZS5pbmNsdWRlcygnYnBtbjpVc2VyVGFzaycpKVxuICAgICAgICAgICAgdGhpcy5pc1VzZXJUYXNrJC5uZXh0KHRydWUpO1xuICAgICAgICAgIHRoaXMuZm9ybURpc3BsYXlWYWx1ZSQubmV4dChzZWxlY3RlZFByb2Nlc3NMaW5rLmZvcm1EaXNwbGF5VHlwZSk7XG4gICAgICAgICAgdGhpcy5mb3JtU2l6ZVZhbHVlJC5uZXh0KHNlbGVjdGVkUHJvY2Vzc0xpbmsuZm9ybVNpemUpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEZvcm1EaXNwbGF5VHlwZShldmVudDogTGlzdEl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUZvcm1EaXNwbGF5VHlwZShldmVudD8ua2V5KTtcbiAgICB0aGlzLmVuYWJsZVNhdmVCdXR0b25XaGVuVmFsaWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RGb3JtU2l6ZShldmVudDogTGlzdEl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUZvcm1TaXplKGV2ZW50Py5rZXkpO1xuICAgIHRoaXMuZW5hYmxlU2F2ZUJ1dHRvbldoZW5WYWxpZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGb3JtRGlzcGxheVR5cGUoZm9ybURpc3BsYXlUeXBlKTogdm9pZCB7XG4gICAgZm9ybURpc3BsYXlUeXBlID8gdGhpcy5kaXNhYmxlRm9ybVNpemVJbnB1dCQubmV4dChmYWxzZSkgOiB0aGlzLnJlc2V0Rm9ybVNpemUoKTtcbiAgICB0aGlzLmZvcm1EaXNwbGF5VmFsdWUkLm5leHQoZm9ybURpc3BsYXlUeXBlKTtcbiAgICB0aGlzLmZvcm1EaXNwbGF5VmFsdWUuZW1pdChmb3JtRGlzcGxheVR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGb3JtU2l6ZShmb3JtU2l6ZSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybVNpemVWYWx1ZSQubmV4dChmb3JtU2l6ZSk7XG4gICAgdGhpcy5mb3JtU2l6ZVZhbHVlLmVtaXQoZm9ybVNpemUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZvcm1TaXplKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZUZvcm1TaXplSW5wdXQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy51cGRhdGVGb3JtU2l6ZShudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlU2F2ZUJ1dHRvbldoZW5WYWxpZCgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybURlZmluaXRpb24gJiZcbiAgICAgIHRoaXMuZm9ybURpc3BsYXlWYWx1ZSQuZ2V0VmFsdWUoKSAmJlxuICAgICAgdGhpcy5mb3JtU2l6ZVZhbHVlJC5nZXRWYWx1ZSgpXG4gICAgKSB7XG4gICAgICB0aGlzLmJ1dHRvblNlcnZpY2UuZW5hYmxlU2F2ZUJ1dHRvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1dHRvblNlcnZpY2UuZGlzYWJsZVNhdmVCdXR0b24oKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgZm9ybURpc3BsYXlWYWx1ZTogZm9ybURpc3BsYXlWYWx1ZSQgfCBhc3luYyxcbiAgICBmb3JtRGlzcGxheVR5cGVMaXN0SXRlbXM6IGZvcm1EaXNwbGF5VHlwZUxpc3RJdGVtcyQgfCBhc3luYyxcbiAgICBmb3JtU2l6ZUxpc3RJdGVtczogZm9ybVNpemVMaXN0SXRlbXMkIHwgYXN5bmMsXG4gICAgZGlzYWJsZUZvcm1TaXplSW5wdXQ6IGRpc2FibGVGb3JtU2l6ZUlucHV0JCB8IGFzeW5jLFxuICAgIGlzVXNlclRhc2s6IGlzVXNlclRhc2skIHwgYXN5bmMsXG4gICAgdGFza1BhbmVsRW5hYmxlZDogdGFza1BhbmVsRW5hYmxlZCQgfCBhc3luYyxcbiAgICBzYXZpbmc6IHNhdmluZyQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICBAaWYgKG9icy50YXNrUGFuZWxFbmFibGVkICYmIG9icy5pc1VzZXJUYXNrKSB7XG4gICAgPGNkcy1jb21iby1ib3hcbiAgICAgIFtwbGFjZWhvbGRlcl09XCIncHJvY2Vzc0xpbmtTdGVwcy5kaXNwbGF5VHlwZS5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgW2xhYmVsXT1cIidwcm9jZXNzTGlua1N0ZXBzLmRpc3BsYXlUeXBlLmxhYmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwib2JzLnNhdmluZ1wiXG4gICAgICAoc2VsZWN0ZWQpPVwic2VsZWN0Rm9ybURpc3BsYXlUeXBlKCRldmVudClcIlxuICAgID5cbiAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwib2JzLmZvcm1EaXNwbGF5VHlwZUxpc3RJdGVtcyB8fCBbXVwiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtY29tYm8tYm94PlxuICAgIDxiciAvPlxuXG4gICAgPGNkcy1jb21iby1ib3hcbiAgICAgIFtwbGFjZWhvbGRlcl09XCIncHJvY2Vzc0xpbmtTdGVwcy5mb3JtU2l6ZS5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgW2xhYmVsXT1cIidwcm9jZXNzTGlua1N0ZXBzLmZvcm1TaXplLmxhYmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVGb3JtU2l6ZUlucHV0IHx8IG9icy5zYXZpbmdcIlxuICAgICAgKHNlbGVjdGVkKT1cInNlbGVjdEZvcm1TaXplKCRldmVudClcIlxuICAgID5cbiAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwib2JzLmZvcm1TaXplTGlzdEl0ZW1zIHx8IFtdXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICA8L2Nkcy1jb21iby1ib3g+XG4gIH1cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -14,51 +14,71 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
17
- import { BehaviorSubject } from 'rxjs';
17
+ import { BehaviorSubject, combineLatest, filter, Subscription } from 'rxjs';
18
18
  import { FormioOptionsImpl, } from '@valtimo/components';
19
+ import { map } from 'rxjs/operators';
19
20
  import * as i0 from "@angular/core";
20
21
  import * as i1 from "../../services";
21
22
  import * as i2 from "@valtimo/components";
22
- import * as i3 from "@angular/common";
23
- import * as i4 from "../form-flow-configuration-container/form-flow-configuration-container.component";
23
+ import * as i3 from "@ngx-translate/core";
24
+ import * as i4 from "@valtimo/config";
25
+ import * as i5 from "@angular/common";
26
+ import * as i6 from "carbon-components-angular";
27
+ import * as i7 from "../form-flow-configuration-container/form-flow-configuration-container.component";
24
28
  export class FormFlowComponent {
25
- constructor(formFlowService, modalService) {
29
+ constructor(formFlowService, modalService, translateService, configService) {
26
30
  this.formFlowService = formFlowService;
27
31
  this.modalService = modalService;
32
+ this.translateService = translateService;
33
+ this.configService = configService;
28
34
  this.formIoFormData = new BehaviorSubject(null);
29
35
  this.formFlowComplete = new EventEmitter();
36
+ this.breadcrumbs$ = new BehaviorSubject([]);
30
37
  this.disabled$ = new BehaviorSubject(false);
31
38
  this.formFlowStepType$ = new BehaviorSubject(null);
32
39
  this.FormFlowCustomComponentId$ = new BehaviorSubject('');
40
+ this.currentStepIndex$ = new BehaviorSubject(0);
41
+ this.enableFormFlowBreadcrumbs$ = this.configService.getFeatureToggleObservable('enableFormFlowBreadcrumbs');
42
+ this._subscriptions = new Subscription();
33
43
  this.formioOptions = new FormioOptionsImpl();
34
44
  this.formioOptions.disableAlerts = true;
35
45
  }
36
46
  ngOnInit() {
37
47
  this.getFormFlowStep();
48
+ this.getBreadcrumbs();
49
+ }
50
+ ngOnDestroy() {
51
+ this._subscriptions.unsubscribe();
38
52
  }
39
53
  onChange(event) {
40
- if (event?.data) {
54
+ if (event?.data)
41
55
  this.formIoFormData.next(event.data);
42
- }
43
56
  }
44
57
  onSubmit(submission) {
45
58
  this.disable();
46
59
  if (submission.data) {
47
60
  this.formIoFormData.next(submission.data);
48
61
  }
49
- if (submission.data.submit) {
62
+ if (submission.data.submit && this.formFlowInstanceId && this.formFlowStepInstanceId) {
50
63
  this.formFlowService
51
64
  .submitStep(this.formFlowInstanceId, this.formFlowStepInstanceId, this.formIoFormData.getValue())
52
- .subscribe((result) => this.handleFormFlowStep(result), errors => {
53
- this.form?.showErrors(errors);
54
- this.enable();
65
+ .subscribe({
66
+ next: (result) => {
67
+ this.handleFormFlowStep(result);
68
+ },
69
+ error: errors => {
70
+ this.form?.showErrors(errors);
71
+ this.enable();
72
+ },
55
73
  });
56
74
  }
57
75
  else if (submission.data['back']) {
58
- this.formFlowService.back(this.formFlowInstanceId, submission.data).subscribe((result) => this.handleFormFlowStep(result), errors => {
59
- this.form?.showErrors(errors);
60
- this.enable();
61
- });
76
+ this.back(submission.data);
77
+ }
78
+ }
79
+ onEvent(submission) {
80
+ if (submission.data['back'] || submission.type == 'back') {
81
+ this.back(submission.data);
62
82
  }
63
83
  }
64
84
  saveData() {
@@ -67,13 +87,67 @@ export class FormFlowComponent {
67
87
  this.formFlowService.save(this.formFlowInstanceId, formIoFormDataValue).subscribe(() => null, errors => this.form.showErrors(errors));
68
88
  }
69
89
  }
90
+ onStepSelected(event) {
91
+ this.disable();
92
+ this.currentStepIndex$.next(event.index);
93
+ const submissionData = this.formIoFormData.getValue().data;
94
+ if (!this.formFlowInstanceId || !this.formFlowStepInstanceId)
95
+ return;
96
+ this.formFlowService
97
+ .navigateToStep(this.formFlowInstanceId, this.formFlowStepInstanceId, event.step.stepInstanceId, submissionData)
98
+ .subscribe({
99
+ next: (result) => this.handleFormFlowStep(result),
100
+ error: errors => {
101
+ this.form?.showErrors(errors);
102
+ this.enable();
103
+ },
104
+ });
105
+ }
106
+ getBreadcrumbs() {
107
+ if (!this.formFlowInstanceId)
108
+ return;
109
+ this._subscriptions.add(combineLatest([
110
+ this.enableFormFlowBreadcrumbs$,
111
+ this.formFlowService.getBreadcrumbs(this.formFlowInstanceId),
112
+ this.translateService.stream('key'),
113
+ ])
114
+ .pipe(filter(([enableFormFlowBreadcrumbs]) => enableFormFlowBreadcrumbs), map(([_, breadcrumbs]) => breadcrumbs))
115
+ .subscribe(breadcrumbs => {
116
+ this.currentStepIndex$.next(breadcrumbs.currentStepIndex);
117
+ this.breadcrumbs$.next(breadcrumbs.breadcrumbs.map(breadcrumb => ({
118
+ label: breadcrumb.title ??
119
+ this.translateService.instant(`formFlow.step.${breadcrumb.key}.title`) ??
120
+ breadcrumb.key,
121
+ disabled: breadcrumb.stepInstanceId === null,
122
+ complete: breadcrumb.completed,
123
+ stepInstanceId: breadcrumb.stepInstanceId,
124
+ })));
125
+ const classElement = document.getElementsByClassName('cds--progress-step--current');
126
+ if (classElement.length > 0) {
127
+ classElement[0].scrollIntoView({ behavior: 'smooth', inline: 'center' });
128
+ }
129
+ }));
130
+ }
70
131
  getFormFlowStep() {
132
+ if (!this.formFlowInstanceId)
133
+ return;
71
134
  this.formFlowService
72
135
  .getFormFlowStep(this.formFlowInstanceId)
73
136
  .subscribe((result) => {
74
137
  this.handleFormFlowStep(result);
75
138
  });
76
139
  }
140
+ back(submissionData) {
141
+ if (!this.formFlowInstanceId)
142
+ return;
143
+ this.formFlowService.back(this.formFlowInstanceId, submissionData).subscribe({
144
+ next: (result) => this.handleFormFlowStep(result),
145
+ error: errors => {
146
+ this.form?.showErrors(errors);
147
+ this.enable();
148
+ },
149
+ });
150
+ }
77
151
  handleFormFlowStep(formFlowInstance) {
78
152
  if (formFlowInstance.step === null) {
79
153
  this.formFlowStepType$.next(null);
@@ -83,12 +157,13 @@ export class FormFlowComponent {
83
157
  this.formFlowComplete.emit(null);
84
158
  }
85
159
  else {
160
+ this.getBreadcrumbs();
86
161
  this.modalService.scrollToTop();
87
- this.formFlowStepType$.next(formFlowInstance.step.type);
162
+ this.formFlowStepType$.next(formFlowInstance.step?.type ?? null);
88
163
  this.FormFlowCustomComponentId$.next(formFlowInstance?.step?.typeProperties?.id || '');
89
164
  this.formFlowInstanceId = formFlowInstance.id;
90
- this.formFlowStepInstanceId = formFlowInstance.step.id;
91
- this.formDefinition = formFlowInstance.step.typeProperties.definition;
165
+ this.formFlowStepInstanceId = formFlowInstance.step?.id ?? null;
166
+ this.formDefinition = formFlowInstance.step?.typeProperties.definition;
92
167
  }
93
168
  this.enable();
94
169
  }
@@ -98,13 +173,13 @@ export class FormFlowComponent {
98
173
  enable() {
99
174
  this.disabled$.next(false);
100
175
  }
101
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowComponent, deps: [{ token: i1.FormFlowService }, { token: i2.ValtimoModalService }], target: i0.ɵɵFactoryTarget.Component }); }
102
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormFlowComponent, selector: "valtimo-form-flow", inputs: { formIoFormData: "formIoFormData", formFlowInstanceId: "formFlowInstanceId" }, outputs: { formFlowComplete: "formFlowComplete" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div>\n <div body *ngIf=\"formDefinition && (formFlowStepType$ | async) === 'form'\">\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n <div body *ngIf=\"(formFlowStepType$ | async) === 'custom-component'\">\n <valtimo-form-flow-configuration-container\n [componentId]=\"FormFlowCustomComponentId$ | async\"\n [formFlowInstanceId]=\"formFlowInstanceId\"\n [disabled]=\"disabled$ | async\"\n (submitEvent)=\"onSubmit($event)\"\n (changeEvent)=\"onChange($event)\"\n >\n </valtimo-form-flow-configuration-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change"] }, { kind: "component", type: i4.FormFlowConfigurationContainerComponent, selector: "valtimo-form-flow-configuration-container", inputs: ["disabled", "componentId", "formFlowInstanceId"], outputs: ["changeEvent", "submitEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowComponent, deps: [{ token: i1.FormFlowService }, { token: i2.ValtimoModalService }, { token: i3.TranslateService }, { token: i4.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormFlowComponent, selector: "valtimo-form-flow", inputs: { formIoFormData: "formIoFormData", formFlowInstanceId: "formFlowInstanceId" }, outputs: { formFlowComplete: "formFlowComplete" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n breadcrumbs: breadcrumbs$ | async,\n currentStepIndex: currentStepIndex$ | async,\n enableFormFlowBreadcrumbs: enableFormFlowBreadcrumbs$ | async,\n } as obs\"\n>\n <div *ngIf=\"formDefinition && (formFlowStepType$ | async) === 'form'\">\n <div *ngIf=\"obs.enableFormFlowBreadcrumbs\" class=\"form-flow__progress-bar-indicator\">\n <cds-progress-indicator\n [spacing]=\"'equal'\"\n [skeleton]=\"obs.breadcrumbs.length === 0\"\n [current]=\"obs.currentStepIndex\"\n [steps]=\"obs.breadcrumbs\"\n (stepSelected)=\"onStepSelected($event)\"\n >\n </cds-progress-indicator>\n </div>\n\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n (event)=\"onEvent($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n <div *ngIf=\"(formFlowStepType$ | async) === 'custom-component'\">\n <valtimo-form-flow-configuration-container\n [componentId]=\"FormFlowCustomComponentId$ | async\"\n [formFlowInstanceId]=\"formFlowInstanceId\"\n [disabled]=\"disabled$ | async\"\n (submitEvent)=\"onSubmit($event)\"\n (changeEvent)=\"onChange($event)\"\n >\n </valtimo-form-flow-configuration-container>\n </div>\n</div>\n", styles: [".form-flow__progress-bar-indicator{height:64px;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none}.form-flow__progress-bar-indicator ::-webkit-scrollbar{display:none}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.ProgressIndicator, selector: "cds-progress-indicator, ibm-progress-indicator", inputs: ["current", "steps", "translations", "orientation", "skeleton", "spacing"], outputs: ["stepSelected"] }, { kind: "component", type: i2.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i7.FormFlowConfigurationContainerComponent, selector: "valtimo-form-flow-configuration-container", inputs: ["disabled", "componentId", "formFlowInstanceId"], outputs: ["changeEvent", "submitEvent"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
103
178
  }
104
179
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowComponent, decorators: [{
105
180
  type: Component,
106
- args: [{ selector: 'valtimo-form-flow', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div>\n <div body *ngIf=\"formDefinition && (formFlowStepType$ | async) === 'form'\">\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n <div body *ngIf=\"(formFlowStepType$ | async) === 'custom-component'\">\n <valtimo-form-flow-configuration-container\n [componentId]=\"FormFlowCustomComponentId$ | async\"\n [formFlowInstanceId]=\"formFlowInstanceId\"\n [disabled]=\"disabled$ | async\"\n (submitEvent)=\"onSubmit($event)\"\n (changeEvent)=\"onChange($event)\"\n >\n </valtimo-form-flow-configuration-container>\n </div>\n</div>\n" }]
107
- }], ctorParameters: () => [{ type: i1.FormFlowService }, { type: i2.ValtimoModalService }], propDecorators: { form: [{
181
+ args: [{ selector: 'valtimo-form-flow', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n breadcrumbs: breadcrumbs$ | async,\n currentStepIndex: currentStepIndex$ | async,\n enableFormFlowBreadcrumbs: enableFormFlowBreadcrumbs$ | async,\n } as obs\"\n>\n <div *ngIf=\"formDefinition && (formFlowStepType$ | async) === 'form'\">\n <div *ngIf=\"obs.enableFormFlowBreadcrumbs\" class=\"form-flow__progress-bar-indicator\">\n <cds-progress-indicator\n [spacing]=\"'equal'\"\n [skeleton]=\"obs.breadcrumbs.length === 0\"\n [current]=\"obs.currentStepIndex\"\n [steps]=\"obs.breadcrumbs\"\n (stepSelected)=\"onStepSelected($event)\"\n >\n </cds-progress-indicator>\n </div>\n\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n (event)=\"onEvent($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n <div *ngIf=\"(formFlowStepType$ | async) === 'custom-component'\">\n <valtimo-form-flow-configuration-container\n [componentId]=\"FormFlowCustomComponentId$ | async\"\n [formFlowInstanceId]=\"formFlowInstanceId\"\n [disabled]=\"disabled$ | async\"\n (submitEvent)=\"onSubmit($event)\"\n (changeEvent)=\"onChange($event)\"\n >\n </valtimo-form-flow-configuration-container>\n </div>\n</div>\n", styles: [".form-flow__progress-bar-indicator{height:64px;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none}.form-flow__progress-bar-indicator ::-webkit-scrollbar{display:none}\n"] }]
182
+ }], ctorParameters: () => [{ type: i1.FormFlowService }, { type: i2.ValtimoModalService }, { type: i3.TranslateService }, { type: i4.ConfigService }], propDecorators: { form: [{
108
183
  type: ViewChild,
109
184
  args: ['form']
110
185
  }], formIoFormData: [{
@@ -114,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
114
189
  }], formFlowComplete: [{
115
190
  type: Output
116
191
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3cvZm9ybS1mbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3cvZm9ybS1mbG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBRUwsaUJBQWlCLEdBSWxCLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQVM3QixNQUFNLE9BQU8saUJBQWlCO0lBZTVCLFlBQ21CLGVBQWdDLEVBQ2hDLFlBQWlDO1FBRGpDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFmM0MsbUJBQWMsR0FBZ0MsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFFNUUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoQyxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDaEQsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQTBCLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLCtCQUEwQixHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBVzNFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzdDLElBQUks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QjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7Rm9ybWlvRm9ybX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7XG4gIEZvcm1pb0NvbXBvbmVudCxcbiAgRm9ybWlvT3B0aW9uc0ltcGwsXG4gIEZvcm1pb1N1Ym1pc3Npb24sXG4gIFZhbHRpbW9Gb3JtaW9PcHRpb25zLFxuICBWYWx0aW1vTW9kYWxTZXJ2aWNlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Rm9ybUZsb3dTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0Zvcm1GbG93SW5zdGFuY2UsIEZvcm1GbG93U3RlcFR5cGV9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZm9ybS1mbG93JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmxvdy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmxvdy5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GbG93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnZm9ybScpIGZvcm06IEZvcm1pb0NvbXBvbmVudDtcbiAgQElucHV0KCkgZm9ybUlvRm9ybURhdGE6IEJlaGF2aW9yU3ViamVjdDxhbnk+IHwgbnVsbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgQElucHV0KCkgZm9ybUZsb3dJbnN0YW5jZUlkOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBmb3JtRmxvd0NvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1GbG93U3RlcFR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRmxvd1N0ZXBUeXBlIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBGb3JtRmxvd0N1c3RvbUNvbXBvbmVudElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgZm9ybURlZmluaXRpb246IEZvcm1pb0Zvcm07XG4gIGZvcm1pb09wdGlvbnM6IFZhbHRpbW9Gb3JtaW9PcHRpb25zO1xuXG4gIHByaXZhdGUgZm9ybUZsb3dTdGVwSW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUZsb3dTZXJ2aWNlOiBGb3JtRmxvd1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IFZhbHRpbW9Nb2RhbFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5mb3JtaW9PcHRpb25zID0gbmV3IEZvcm1pb09wdGlvbnNJbXBsKCk7XG4gICAgdGhpcy5mb3JtaW9PcHRpb25zLmRpc2FibGVBbGVydHMgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ2V0Rm9ybUZsb3dTdGVwKCk7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChldmVudD8uZGF0YSkge1xuICAgICAgdGhpcy5mb3JtSW9Gb3JtRGF0YS5uZXh0KGV2ZW50LmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdChzdWJtaXNzaW9uOiBGb3JtaW9TdWJtaXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICBpZiAoc3VibWlzc2lvbi5kYXRhKSB7XG4gICAgICB0aGlzLmZvcm1Jb0Zvcm1EYXRhLm5leHQoc3VibWlzc2lvbi5kYXRhKTtcbiAgICB9XG4gICAgaWYgKHN1Ym1pc3Npb24uZGF0YS5zdWJtaXQpIHtcbiAgICAgIHRoaXMuZm9ybUZsb3dTZXJ2aWNlXG4gICAgICAgIC5zdWJtaXRTdGVwKFxuICAgICAgICAgIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkLFxuICAgICAgICAgIHRoaXMuZm9ybUZsb3dTdGVwSW5zdGFuY2VJZCxcbiAgICAgICAgICB0aGlzLmZvcm1Jb0Zvcm1EYXRhLmdldFZhbHVlKClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXN1bHQ6IEZvcm1GbG93SW5zdGFuY2UpID0+IHRoaXMuaGFuZGxlRm9ybUZsb3dTdGVwKHJlc3VsdCksXG4gICAgICAgICAgZXJyb3JzID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybT8uc2hvd0Vycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzdWJtaXNzaW9uLmRhdGFbJ2JhY2snXSkge1xuICAgICAgdGhpcy5mb3JtRmxvd1NlcnZpY2UuYmFjayh0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCwgc3VibWlzc2lvbi5kYXRhKS5zdWJzY3JpYmUoXG4gICAgICAgIChyZXN1bHQ6IEZvcm1GbG93SW5zdGFuY2UpID0+IHRoaXMuaGFuZGxlRm9ybUZsb3dTdGVwKHJlc3VsdCksXG4gICAgICAgIGVycm9ycyA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtPy5zaG93RXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2F2ZURhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUlvRm9ybURhdGFWYWx1ZSA9IHRoaXMuZm9ybUlvRm9ybURhdGEuZ2V0VmFsdWUoKTtcbiAgICBpZiAoZm9ybUlvRm9ybURhdGFWYWx1ZSAmJiB0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCkge1xuICAgICAgdGhpcy5mb3JtRmxvd1NlcnZpY2Uuc2F2ZSh0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCwgZm9ybUlvRm9ybURhdGFWYWx1ZSkuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiBudWxsLFxuICAgICAgICBlcnJvcnMgPT4gdGhpcy5mb3JtLnNob3dFcnJvcnMoZXJyb3JzKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1GbG93U3RlcCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1GbG93U2VydmljZVxuICAgICAgLmdldEZvcm1GbG93U3RlcCh0aGlzLmZvcm1GbG93SW5zdGFuY2VJZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogRm9ybUZsb3dJbnN0YW5jZSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUZvcm1GbG93U3RlcChyZXN1bHQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZvcm1GbG93U3RlcChmb3JtRmxvd0luc3RhbmNlOiBGb3JtRmxvd0luc3RhbmNlKSB7XG4gICAgaWYgKGZvcm1GbG93SW5zdGFuY2Uuc3RlcCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5mb3JtRmxvd1N0ZXBUeXBlJC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5Gb3JtRmxvd0N1c3RvbUNvbXBvbmVudElkJC5uZXh0KCcnKTtcbiAgICAgIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkID0gbnVsbDtcbiAgICAgIHRoaXMuZm9ybUZsb3dTdGVwSW5zdGFuY2VJZCA9IG51bGw7XG4gICAgICB0aGlzLmZvcm1GbG93Q29tcGxldGUuZW1pdChudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIHRoaXMuZm9ybUZsb3dTdGVwVHlwZSQubmV4dChmb3JtRmxvd0luc3RhbmNlLnN0ZXAudHlwZSk7XG4gICAgICB0aGlzLkZvcm1GbG93Q3VzdG9tQ29tcG9uZW50SWQkLm5leHQoZm9ybUZsb3dJbnN0YW5jZT8uc3RlcD8udHlwZVByb3BlcnRpZXM/LmlkIHx8ICcnKTtcbiAgICAgIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkID0gZm9ybUZsb3dJbnN0YW5jZS5pZDtcbiAgICAgIHRoaXMuZm9ybUZsb3dTdGVwSW5zdGFuY2VJZCA9IGZvcm1GbG93SW5zdGFuY2Uuc3RlcC5pZDtcbiAgICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBmb3JtRmxvd0luc3RhbmNlLnN0ZXAudHlwZVByb3BlcnRpZXMuZGVmaW5pdGlvbjtcbiAgICB9XG5cbiAgICB0aGlzLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2PlxuICA8ZGl2IGJvZHkgKm5nSWY9XCJmb3JtRGVmaW5pdGlvbiAmJiAoZm9ybUZsb3dTdGVwVHlwZSQgfCBhc3luYykgPT09ICdmb3JtJ1wiPlxuICAgIDx2YWx0aW1vLWZvcm0taW9cbiAgICAgICNmb3JtXG4gICAgICBbZm9ybV09XCJmb3JtRGVmaW5pdGlvblwiXG4gICAgICAoc3VibWl0KT1cIm9uU3VibWl0KCRldmVudClcIlxuICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFtvcHRpb25zXT1cImZvcm1pb09wdGlvbnNcIlxuICAgID48L3ZhbHRpbW8tZm9ybS1pbz5cbiAgPC9kaXY+XG4gIDxkaXYgYm9keSAqbmdJZj1cIihmb3JtRmxvd1N0ZXBUeXBlJCB8IGFzeW5jKSA9PT0gJ2N1c3RvbS1jb21wb25lbnQnXCI+XG4gICAgPHZhbHRpbW8tZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyXG4gICAgICBbY29tcG9uZW50SWRdPVwiRm9ybUZsb3dDdXN0b21Db21wb25lbnRJZCQgfCBhc3luY1wiXG4gICAgICBbZm9ybUZsb3dJbnN0YW5jZUlkXT1cImZvcm1GbG93SW5zdGFuY2VJZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgKHN1Ym1pdEV2ZW50KT1cIm9uU3VibWl0KCRldmVudClcIlxuICAgICAgKGNoYW5nZUV2ZW50KT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3cvZm9ybS1mbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3cvZm9ybS1mbG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBYyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFdEYsT0FBTyxFQUVMLGlCQUFpQixHQUlsQixNQUFNLHFCQUFxQixDQUFDO0FBTTdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBT25DLE1BQU0sT0FBTyxpQkFBaUI7SUFzQjVCLFlBQ21CLGVBQWdDLEVBQ2hDLFlBQWlDLEVBQ2pDLGdCQUFrQyxFQUNsQyxhQUE0QjtRQUg1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF4QnRDLG1CQUFjLEdBQWdDLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBRTVFLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEMsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQyxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDaEQsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQTBCLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLCtCQUEwQixHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzdELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ25ELCtCQUEwQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQ3hGLDJCQUEyQixDQUM1QixDQUFDO1FBRWUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBYW5ELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxLQUFLLEVBQUUsSUFBSTtZQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sUUFBUSxDQUFDLFVBQTRCO1FBQzFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVmLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDckYsSUFBSSxDQUFDLGVBQWU7aUJBQ2pCLFVBQVUsQ0FDVCxJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsRUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FDL0I7aUJBQ0EsU0FBUyxDQUFDO2dCQUNULElBQUksRUFBRSxDQUFDLE1BQXdCLEVBQUUsRUFBRTtvQkFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO2dCQUNELEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDZCxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRU0sT0FBTyxDQUFDLFVBQWU7UUFDNUIsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFTSxRQUFRO1FBQ2IsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNELElBQUksbUJBQW1CLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUMvRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQ1YsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FDdkMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQXNEO1FBQzFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCO1lBQUUsT0FBTztRQUNyRSxJQUFJLENBQUMsZUFBZTthQUNqQixjQUFjLENBQ2IsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixJQUFJLENBQUMsc0JBQXNCLEVBQzNCLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUN6QixjQUFjLENBQ2Y7YUFDQSxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxNQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO1lBQ25FLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDZCxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtZQUFFLE9BQU87UUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JCLGFBQWEsQ0FBQztZQUNaLElBQUksQ0FBQywwQkFBMEI7WUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ3BDLENBQUM7YUFDQyxJQUFJLENBQ0gsTUFBTSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxFQUNsRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQ3ZDO2FBQ0EsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3BCLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekMsS0FBSyxFQUNILFVBQVUsQ0FBQyxLQUFLO29CQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGlCQUFpQixVQUFVLENBQUMsR0FBRyxRQUFRLENBQUM7b0JBQ3RFLFVBQVUsQ0FBQyxHQUFHO2dCQUNoQixRQUFRLEVBQUUsVUFBVSxDQUFDLGNBQWMsS0FBSyxJQUFJO2dCQUM1QyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVM7Z0JBQzlCLGNBQWMsRUFBRSxVQUFVLENBQUMsY0FBYzthQUMxQyxDQUFDLENBQUMsQ0FDSixDQUFDO1lBQ0YsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDcEYsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM1QixZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztZQUN6RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCO1lBQUUsT0FBTztRQUNyQyxJQUFJLENBQUMsZUFBZTthQUNqQixlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2FBQ3hDLFNBQVMsQ0FBQyxDQUFDLE1BQXdCLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sSUFBSSxDQUFDLGNBQW1CO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCO1lBQUUsT0FBTztRQUVyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNFLElBQUksRUFBRSxDQUFDLE1BQXdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDbkUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNkLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxnQkFBa0M7UUFDM0QsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDL0IsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUM7WUFDaEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLFVBQVUsQ0FBQztRQUN6RSxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxPQUFPO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVPLE1BQU07UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOytHQTdMVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixrU0N0QzlCLGk5REF1REE7OzRGRGpCYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsbUJBQW1CO2lMQUtWLElBQUk7c0JBQXRCLFNBQVM7dUJBQUMsTUFBTTtnQkFDUixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Zvcm1pb0Zvcm19IGZyb20gJ0Bmb3JtaW8vYW5ndWxhcic7XG5pbXBvcnQge1xuICBGb3JtaW9Db21wb25lbnQsXG4gIEZvcm1pb09wdGlvbnNJbXBsLFxuICBGb3JtaW9TdWJtaXNzaW9uLFxuICBWYWx0aW1vRm9ybWlvT3B0aW9ucyxcbiAgVmFsdGltb01vZGFsU2VydmljZSxcbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0Zvcm1GbG93U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtGb3JtRmxvd0luc3RhbmNlLCBGb3JtRmxvd1N0ZXBUeXBlfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7U3RlcH0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWZvcm0tZmxvdycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZsb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZsb3cuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZsb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2Zvcm0nKSBmb3JtOiBGb3JtaW9Db21wb25lbnQ7XG4gIEBJbnB1dCgpIGZvcm1Jb0Zvcm1EYXRhOiBCZWhhdmlvclN1YmplY3Q8YW55IHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIEBJbnB1dCgpIGZvcm1GbG93SW5zdGFuY2VJZDogc3RyaW5nIHwgbnVsbDtcbiAgQE91dHB1dCgpIGZvcm1GbG93Q29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGJyZWFkY3J1bWJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RlcFtdPihbXSk7XG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1GbG93U3RlcFR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRmxvd1N0ZXBUeXBlIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBGb3JtRmxvd0N1c3RvbUNvbXBvbmVudElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50U3RlcEluZGV4JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHVibGljIHJlYWRvbmx5IGVuYWJsZUZvcm1GbG93QnJlYWRjcnVtYnMkID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldEZlYXR1cmVUb2dnbGVPYnNlcnZhYmxlKFxuICAgICdlbmFibGVGb3JtRmxvd0JyZWFkY3J1bWJzJ1xuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgZm9ybURlZmluaXRpb246IEZvcm1pb0Zvcm07XG4gIGZvcm1pb09wdGlvbnM6IFZhbHRpbW9Gb3JtaW9PcHRpb25zO1xuXG4gIHByaXZhdGUgZm9ybUZsb3dTdGVwSW5zdGFuY2VJZDogc3RyaW5nIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1GbG93U2VydmljZTogRm9ybUZsb3dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlOiBWYWx0aW1vTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5mb3JtaW9PcHRpb25zID0gbmV3IEZvcm1pb09wdGlvbnNJbXBsKCk7XG4gICAgdGhpcy5mb3JtaW9PcHRpb25zLmRpc2FibGVBbGVydHMgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ2V0Rm9ybUZsb3dTdGVwKCk7XG4gICAgdGhpcy5nZXRCcmVhZGNydW1icygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZShldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50Py5kYXRhKSB0aGlzLmZvcm1Jb0Zvcm1EYXRhLm5leHQoZXZlbnQuZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgb25TdWJtaXQoc3VibWlzc2lvbjogRm9ybWlvU3VibWlzc2lvbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgaWYgKHN1Ym1pc3Npb24uZGF0YSkge1xuICAgICAgdGhpcy5mb3JtSW9Gb3JtRGF0YS5uZXh0KHN1Ym1pc3Npb24uZGF0YSk7XG4gICAgfVxuICAgIGlmIChzdWJtaXNzaW9uLmRhdGEuc3VibWl0ICYmIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkICYmIHRoaXMuZm9ybUZsb3dTdGVwSW5zdGFuY2VJZCkge1xuICAgICAgdGhpcy5mb3JtRmxvd1NlcnZpY2VcbiAgICAgICAgLnN1Ym1pdFN0ZXAoXG4gICAgICAgICAgdGhpcy5mb3JtRmxvd0luc3RhbmNlSWQsXG4gICAgICAgICAgdGhpcy5mb3JtRmxvd1N0ZXBJbnN0YW5jZUlkLFxuICAgICAgICAgIHRoaXMuZm9ybUlvRm9ybURhdGEuZ2V0VmFsdWUoKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXN1bHQ6IEZvcm1GbG93SW5zdGFuY2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRm9ybUZsb3dTdGVwKHJlc3VsdCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogZXJyb3JzID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybT8uc2hvd0Vycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHN1Ym1pc3Npb24uZGF0YVsnYmFjayddKSB7XG4gICAgICB0aGlzLmJhY2soc3VibWlzc2lvbi5kYXRhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25FdmVudChzdWJtaXNzaW9uOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoc3VibWlzc2lvbi5kYXRhWydiYWNrJ10gfHwgc3VibWlzc2lvbi50eXBlID09ICdiYWNrJykge1xuICAgICAgdGhpcy5iYWNrKHN1Ym1pc3Npb24uZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhdmVEYXRhKCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1Jb0Zvcm1EYXRhVmFsdWUgPSB0aGlzLmZvcm1Jb0Zvcm1EYXRhLmdldFZhbHVlKCk7XG4gICAgaWYgKGZvcm1Jb0Zvcm1EYXRhVmFsdWUgJiYgdGhpcy5mb3JtRmxvd0luc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZm9ybUZsb3dTZXJ2aWNlLnNhdmUodGhpcy5mb3JtRmxvd0luc3RhbmNlSWQsIGZvcm1Jb0Zvcm1EYXRhVmFsdWUpLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4gbnVsbCxcbiAgICAgICAgZXJyb3JzID0+IHRoaXMuZm9ybS5zaG93RXJyb3JzKGVycm9ycylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU3RlcFNlbGVjdGVkKGV2ZW50OiB7c3RlcDoge3N0ZXBJbnN0YW5jZUlkOiBzdHJpbmd9OyBpbmRleDogbnVtYmVyfSk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgIHRoaXMuY3VycmVudFN0ZXBJbmRleCQubmV4dChldmVudC5pbmRleCk7XG4gICAgY29uc3Qgc3VibWlzc2lvbkRhdGEgPSB0aGlzLmZvcm1Jb0Zvcm1EYXRhLmdldFZhbHVlKCkuZGF0YTtcbiAgICBpZiAoIXRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkIHx8ICF0aGlzLmZvcm1GbG93U3RlcEluc3RhbmNlSWQpIHJldHVybjtcbiAgICB0aGlzLmZvcm1GbG93U2VydmljZVxuICAgICAgLm5hdmlnYXRlVG9TdGVwKFxuICAgICAgICB0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCxcbiAgICAgICAgdGhpcy5mb3JtRmxvd1N0ZXBJbnN0YW5jZUlkLFxuICAgICAgICBldmVudC5zdGVwLnN0ZXBJbnN0YW5jZUlkLFxuICAgICAgICBzdWJtaXNzaW9uRGF0YVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXN1bHQ6IEZvcm1GbG93SW5zdGFuY2UpID0+IHRoaXMuaGFuZGxlRm9ybUZsb3dTdGVwKHJlc3VsdCksXG4gICAgICAgIGVycm9yOiBlcnJvcnMgPT4ge1xuICAgICAgICAgIHRoaXMuZm9ybT8uc2hvd0Vycm9ycyhlcnJvcnMpO1xuICAgICAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnJlYWRjcnVtYnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCkgcmV0dXJuO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZW5hYmxlRm9ybUZsb3dCcmVhZGNydW1icyQsXG4gICAgICAgIHRoaXMuZm9ybUZsb3dTZXJ2aWNlLmdldEJyZWFkY3J1bWJzKHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gICAgICBdKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKFtlbmFibGVGb3JtRmxvd0JyZWFkY3J1bWJzXSkgPT4gZW5hYmxlRm9ybUZsb3dCcmVhZGNydW1icyksXG4gICAgICAgICAgbWFwKChbXywgYnJlYWRjcnVtYnNdKSA9PiBicmVhZGNydW1icylcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKGJyZWFkY3J1bWJzID0+IHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXgkLm5leHQoYnJlYWRjcnVtYnMuY3VycmVudFN0ZXBJbmRleCk7XG4gICAgICAgICAgdGhpcy5icmVhZGNydW1icyQubmV4dChcbiAgICAgICAgICAgIGJyZWFkY3J1bWJzLmJyZWFkY3J1bWJzLm1hcChicmVhZGNydW1iID0+ICh7XG4gICAgICAgICAgICAgIGxhYmVsOlxuICAgICAgICAgICAgICAgIGJyZWFkY3J1bWIudGl0bGUgPz9cbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgZm9ybUZsb3cuc3RlcC4ke2JyZWFkY3J1bWIua2V5fS50aXRsZWApID8/XG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYi5rZXksXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBicmVhZGNydW1iLnN0ZXBJbnN0YW5jZUlkID09PSBudWxsLFxuICAgICAgICAgICAgICBjb21wbGV0ZTogYnJlYWRjcnVtYi5jb21wbGV0ZWQsXG4gICAgICAgICAgICAgIHN0ZXBJbnN0YW5jZUlkOiBicmVhZGNydW1iLnN0ZXBJbnN0YW5jZUlkLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBjbGFzc0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZHMtLXByb2dyZXNzLXN0ZXAtLWN1cnJlbnQnKTtcbiAgICAgICAgICBpZiAoY2xhc3NFbGVtZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNsYXNzRWxlbWVudFswXS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6ICdzbW9vdGgnLCBpbmxpbmU6ICdjZW50ZXInfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1GbG93U3RlcCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkKSByZXR1cm47XG4gICAgdGhpcy5mb3JtRmxvd1NlcnZpY2VcbiAgICAgIC5nZXRGb3JtRmxvd1N0ZXAodGhpcy5mb3JtRmxvd0luc3RhbmNlSWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IEZvcm1GbG93SW5zdGFuY2UpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVGb3JtRmxvd1N0ZXAocmVzdWx0KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBiYWNrKHN1Ym1pc3Npb25EYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkKSByZXR1cm47XG5cbiAgICB0aGlzLmZvcm1GbG93U2VydmljZS5iYWNrKHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkLCBzdWJtaXNzaW9uRGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXN1bHQ6IEZvcm1GbG93SW5zdGFuY2UpID0+IHRoaXMuaGFuZGxlRm9ybUZsb3dTdGVwKHJlc3VsdCksXG4gICAgICBlcnJvcjogZXJyb3JzID0+IHtcbiAgICAgICAgdGhpcy5mb3JtPy5zaG93RXJyb3JzKGVycm9ycyk7XG4gICAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVGb3JtRmxvd1N0ZXAoZm9ybUZsb3dJbnN0YW5jZTogRm9ybUZsb3dJbnN0YW5jZSkge1xuICAgIGlmIChmb3JtRmxvd0luc3RhbmNlLnN0ZXAgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuZm9ybUZsb3dTdGVwVHlwZSQubmV4dChudWxsKTtcbiAgICAgIHRoaXMuRm9ybUZsb3dDdXN0b21Db21wb25lbnRJZCQubmV4dCgnJyk7XG4gICAgICB0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCA9IG51bGw7XG4gICAgICB0aGlzLmZvcm1GbG93U3RlcEluc3RhbmNlSWQgPSBudWxsO1xuICAgICAgdGhpcy5mb3JtRmxvd0NvbXBsZXRlLmVtaXQobnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0QnJlYWRjcnVtYnMoKTtcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLnNjcm9sbFRvVG9wKCk7XG4gICAgICB0aGlzLmZvcm1GbG93U3RlcFR5cGUkLm5leHQoZm9ybUZsb3dJbnN0YW5jZS5zdGVwPy50eXBlID8/IG51bGwpO1xuICAgICAgdGhpcy5Gb3JtRmxvd0N1c3RvbUNvbXBvbmVudElkJC5uZXh0KGZvcm1GbG93SW5zdGFuY2U/LnN0ZXA/LnR5cGVQcm9wZXJ0aWVzPy5pZCB8fCAnJyk7XG4gICAgICB0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCA9IGZvcm1GbG93SW5zdGFuY2UuaWQ7XG4gICAgICB0aGlzLmZvcm1GbG93U3RlcEluc3RhbmNlSWQgPSBmb3JtRmxvd0luc3RhbmNlLnN0ZXA/LmlkID8/IG51bGw7XG4gICAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gZm9ybUZsb3dJbnN0YW5jZS5zdGVwPy50eXBlUHJvcGVydGllcy5kZWZpbml0aW9uO1xuICAgIH1cblxuICAgIHRoaXMuZW5hYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXZcbiAgKm5nSWY9XCJ7XG4gICAgYnJlYWRjcnVtYnM6IGJyZWFkY3J1bWJzJCB8IGFzeW5jLFxuICAgIGN1cnJlbnRTdGVwSW5kZXg6IGN1cnJlbnRTdGVwSW5kZXgkIHwgYXN5bmMsXG4gICAgZW5hYmxlRm9ybUZsb3dCcmVhZGNydW1iczogZW5hYmxlRm9ybUZsb3dCcmVhZGNydW1icyQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8ZGl2ICpuZ0lmPVwiZm9ybURlZmluaXRpb24gJiYgKGZvcm1GbG93U3RlcFR5cGUkIHwgYXN5bmMpID09PSAnZm9ybSdcIj5cbiAgICA8ZGl2ICpuZ0lmPVwib2JzLmVuYWJsZUZvcm1GbG93QnJlYWRjcnVtYnNcIiBjbGFzcz1cImZvcm0tZmxvd19fcHJvZ3Jlc3MtYmFyLWluZGljYXRvclwiPlxuICAgICAgPGNkcy1wcm9ncmVzcy1pbmRpY2F0b3JcbiAgICAgICAgW3NwYWNpbmddPVwiJ2VxdWFsJ1wiXG4gICAgICAgIFtza2VsZXRvbl09XCJvYnMuYnJlYWRjcnVtYnMubGVuZ3RoID09PSAwXCJcbiAgICAgICAgW2N1cnJlbnRdPVwib2JzLmN1cnJlbnRTdGVwSW5kZXhcIlxuICAgICAgICBbc3RlcHNdPVwib2JzLmJyZWFkY3J1bWJzXCJcbiAgICAgICAgKHN0ZXBTZWxlY3RlZCk9XCJvblN0ZXBTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvY2RzLXByb2dyZXNzLWluZGljYXRvcj5cbiAgICA8L2Rpdj5cblxuICAgIDx2YWx0aW1vLWZvcm0taW9cbiAgICAgICNmb3JtXG4gICAgICBbZm9ybV09XCJmb3JtRGVmaW5pdGlvblwiXG4gICAgICAoc3VibWl0KT1cIm9uU3VibWl0KCRldmVudClcIlxuICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChldmVudCk9XCJvbkV2ZW50KCRldmVudClcIlxuICAgICAgW29wdGlvbnNdPVwiZm9ybWlvT3B0aW9uc1wiXG4gICAgPjwvdmFsdGltby1mb3JtLWlvPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIihmb3JtRmxvd1N0ZXBUeXBlJCB8IGFzeW5jKSA9PT0gJ2N1c3RvbS1jb21wb25lbnQnXCI+XG4gICAgPHZhbHRpbW8tZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyXG4gICAgICBbY29tcG9uZW50SWRdPVwiRm9ybUZsb3dDdXN0b21Db21wb25lbnRJZCQgfCBhc3luY1wiXG4gICAgICBbZm9ybUZsb3dJbnN0YW5jZUlkXT1cImZvcm1GbG93SW5zdGFuY2VJZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgKHN1Ym1pdEV2ZW50KT1cIm9uU3VibWl0KCRldmVudClcIlxuICAgICAgKGNoYW5nZUV2ZW50KT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19