@acorex/platform 21.0.0-next.1 → 21.0.0-next.10

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 (87) hide show
  1. package/auth/index.d.ts +235 -5
  2. package/common/index.d.ts +220 -218
  3. package/core/index.d.ts +261 -431
  4. package/fesm2022/acorex-platform-auth.mjs +200 -37
  5. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  6. package/fesm2022/{acorex-platform-common-common-settings.provider-zhqNP3xb.mjs → acorex-platform-common-common-settings.provider-O8usQ0VC.mjs} +4 -4
  7. package/fesm2022/{acorex-platform-common-common-settings.provider-zhqNP3xb.mjs.map → acorex-platform-common-common-settings.provider-O8usQ0VC.mjs.map} +1 -1
  8. package/fesm2022/acorex-platform-common.mjs +215 -198
  9. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  10. package/fesm2022/acorex-platform-core.mjs +545 -585
  11. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-domain.mjs +16 -16
  13. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-layout-builder.mjs +84 -35
  15. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-layout-components.mjs +298 -190
  17. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-layout-designer.mjs +72 -72
  19. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-layout-entity.mjs +2955 -1278
  21. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-layout-views.mjs +25 -17
  23. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  24. package/fesm2022/acorex-platform-layout-widget-core.mjs +189 -108
  25. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  26. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs → acorex-platform-layout-widgets-button-widget-designer.component-D-NsRvRl.mjs} +4 -4
  27. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs.map → acorex-platform-layout-widgets-button-widget-designer.component-D-NsRvRl.mjs.map} +1 -1
  28. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs → acorex-platform-layout-widgets-file-list-popup.component-CCcKHSHj.mjs} +4 -4
  29. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map → acorex-platform-layout-widgets-file-list-popup.component-CCcKHSHj.mjs.map} +1 -1
  30. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs → acorex-platform-layout-widgets-image-preview.popup-IrT52Nh1.mjs} +4 -4
  31. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map → acorex-platform-layout-widgets-image-preview.popup-IrT52Nh1.mjs.map} +1 -1
  32. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs → acorex-platform-layout-widgets-page-widget-designer.component-DFbfh-OX.mjs} +4 -4
  33. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs.map → acorex-platform-layout-widgets-page-widget-designer.component-DFbfh-OX.mjs.map} +1 -1
  34. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-Dw6naXvq.mjs +111 -0
  35. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-Dw6naXvq.mjs.map +1 -0
  36. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component--4R3TUdJ.mjs} +4 -4
  37. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map → acorex-platform-layout-widgets-tabular-data-edit-popup.component--4R3TUdJ.mjs.map} +1 -1
  38. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-BeVQuHFj.mjs} +4 -4
  39. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs.map → acorex-platform-layout-widgets-tabular-data-view-popup.component-BeVQuHFj.mjs.map} +1 -1
  40. package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-CdQxqi0D.mjs} +4 -4
  41. package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs.map → acorex-platform-layout-widgets-text-block-widget-designer.component-CdQxqi0D.mjs.map} +1 -1
  42. package/fesm2022/acorex-platform-layout-widgets.mjs +2247 -1221
  43. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  44. package/fesm2022/acorex-platform-native.mjs +7 -7
  45. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  46. package/fesm2022/acorex-platform-runtime.mjs +43 -43
  47. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  48. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs → acorex-platform-themes-default-entity-master-create-view.component-D2ucwC3F.mjs} +4 -4
  49. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-D2ucwC3F.mjs.map} +1 -1
  50. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs → acorex-platform-themes-default-entity-master-list-view.component-CIV6YDDZ.mjs} +12 -12
  51. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CIV6YDDZ.mjs.map +1 -0
  52. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs → acorex-platform-themes-default-entity-master-modify-view.component-D5BYbUGK.mjs} +7 -8
  53. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-D5BYbUGK.mjs.map +1 -0
  54. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-Cf4ei46_.mjs} +7 -7
  55. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map → acorex-platform-themes-default-entity-master-single-view.component-Cf4ei46_.mjs.map} +1 -1
  56. package/fesm2022/{acorex-platform-themes-default-error-401.component-cfREo88K.mjs → acorex-platform-themes-default-error-401.component-DdMToZ9q.mjs} +4 -4
  57. package/fesm2022/{acorex-platform-themes-default-error-401.component-cfREo88K.mjs.map → acorex-platform-themes-default-error-401.component-DdMToZ9q.mjs.map} +1 -1
  58. package/fesm2022/{acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs → acorex-platform-themes-default-error-404.component-CKsa5aPE.mjs} +4 -4
  59. package/fesm2022/{acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs.map → acorex-platform-themes-default-error-404.component-CKsa5aPE.mjs.map} +1 -1
  60. package/fesm2022/{acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs → acorex-platform-themes-default-error-offline.component-1gxFTAuX.mjs} +4 -4
  61. package/fesm2022/{acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs.map → acorex-platform-themes-default-error-offline.component-1gxFTAuX.mjs.map} +1 -1
  62. package/fesm2022/acorex-platform-themes-default.mjs +39 -42
  63. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  64. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs → acorex-platform-themes-shared-icon-chooser-column.component-Ds8eRMuV.mjs} +4 -4
  65. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs.map → acorex-platform-themes-shared-icon-chooser-column.component-Ds8eRMuV.mjs.map} +1 -1
  66. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs → acorex-platform-themes-shared-icon-chooser-view.component-Dv38sOzr.mjs} +4 -4
  67. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs.map → acorex-platform-themes-shared-icon-chooser-view.component-Dv38sOzr.mjs.map} +1 -1
  68. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-DcO6P6OG.mjs} +11 -11
  69. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DcO6P6OG.mjs.map +1 -0
  70. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-B7T2qtaI.mjs} +4 -4
  71. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs.map → acorex-platform-themes-shared-theme-color-chooser-view.component-B7T2qtaI.mjs.map} +1 -1
  72. package/fesm2022/acorex-platform-themes-shared.mjs +41 -41
  73. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  74. package/fesm2022/acorex-platform-workflow.mjs +1529 -1758
  75. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  76. package/layout/builder/index.d.ts +15 -3
  77. package/layout/components/index.d.ts +23 -6
  78. package/layout/entity/index.d.ts +392 -144
  79. package/layout/views/index.d.ts +16 -11
  80. package/layout/widget-core/index.d.ts +47 -10
  81. package/layout/widgets/index.d.ts +212 -39
  82. package/package.json +5 -5
  83. package/themes/default/index.d.ts +0 -1
  84. package/workflow/index.d.ts +1050 -1759
  85. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +0 -1
  86. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
  87. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-workflow.mjs","sources":["../tmp-esm2022/workflow/lib/errors.types.js","../tmp-esm2022/workflow/lib/workflow-event-dispatcher.service.js","../tmp-esm2022/workflow/lib/workflow-registery.service.js","../tmp-esm2022/workflow/lib/workflow.types.js","../tmp-esm2022/workflow/lib/actions/decide.action.js","../tmp-esm2022/workflow/lib/workflow.service.js","../tmp-esm2022/workflow/lib/actions/start-workflow.action.js","../tmp-esm2022/workflow/lib/engine/workflow-definition.config.js","../tmp-esm2022/workflow/lib/engine/workflow-definition-registry.service.js","../tmp-esm2022/workflow/lib/engine/workflow-instance.types.js","../tmp-esm2022/workflow/lib/engine/activity.types.js","../tmp-esm2022/workflow/lib/engine/activity-provider.service.js","../tmp-esm2022/workflow/lib/engine/activity-category.provider.js","../tmp-esm2022/workflow/lib/engine/runtime/workflow-execution.service.js","../tmp-esm2022/workflow/lib/engine/runtime/workflow-coordinator.js","../tmp-esm2022/workflow/lib/engine/runtime/workflow-execution.types.js","../tmp-esm2022/workflow/lib/engine/runtime/index.js","../tmp-esm2022/workflow/lib/engine/activities/write-line.activity.js","../tmp-esm2022/workflow/lib/engine/activities/sequence.activity.js","../tmp-esm2022/workflow/lib/engine/activities/show-confirm-dialog.activity.js","../tmp-esm2022/workflow/lib/engine/activities/show-alert-dialog.activity.js","../tmp-esm2022/workflow/lib/engine/activities/show-dialog-layout-builder.activity.js","../tmp-esm2022/workflow/lib/engine/activities/show-toast.activity.js","../tmp-esm2022/workflow/lib/engine/activities/navigate.activity.js","../tmp-esm2022/workflow/lib/engine/activities/set-variable.activity.js","../tmp-esm2022/workflow/lib/engine/activities/dispatch-event.activity.js","../tmp-esm2022/workflow/lib/engine/activities/if.activity.js","../tmp-esm2022/workflow/lib/engine/activities/while.activity.js","../tmp-esm2022/workflow/lib/engine/activities/for-each.activity.js","../tmp-esm2022/workflow/lib/engine/activities/execute-command.activity.js","../tmp-esm2022/workflow/lib/engine/activities/execute-query.activity.js","../tmp-esm2022/workflow/lib/engine/activities/start-activity.activity.js","../tmp-esm2022/workflow/lib/engine/activities/end-activity.activity.js","../tmp-esm2022/workflow/lib/engine/activities/activity-command-setups.js","../tmp-esm2022/workflow/lib/engine/activities/index.js","../tmp-esm2022/workflow/lib/engine/index.js","../tmp-esm2022/workflow/lib/workflow.module.js","../tmp-esm2022/workflow/acorex-platform-workflow.js"],"sourcesContent":["export class AXPWorkflowError extends Error {\n constructor(message, inner = null) {\n super(message);\n this.inner = inner;\n this.name = 'AXPWorkflowError';\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2Vycm9ycy50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsS0FBSztJQUN2QyxZQUFZLE9BQWUsRUFBUyxRQUFzQixJQUFJO1FBQzFELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURpQixVQUFLLEdBQUwsS0FBSyxDQUFxQjtRQUUxRCxJQUFJLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBBWFBXb3JrZmxvd0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGlubmVyOiBFcnJvciB8IG51bGwgPSBudWxsKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSAnQVhQV29ya2Zsb3dFcnJvcic7XG4gICAgfVxufSJdfQ==","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXPWorkflowEventService {\n constructor() {\n this.eventSubject = new Subject();\n }\n dispatch(event) {\n this.eventSubject.next(event);\n }\n get events$() {\n return this.eventSubject.asObservable();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowEventService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowEventService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL3dvcmtmbG93LWV2ZW50LWRpc3BhdGNoZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTTNDLE1BQU0sT0FBTyx1QkFBdUI7SUFIcEM7UUFJVSxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFvQixDQUFDO0tBU3hEO0lBUEMsUUFBUSxDQUFDLEtBQXVCO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQzsrR0FUVSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dFdmVudCB9IGZyb20gJy4vd29ya2Zsb3cudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV29ya2Zsb3dFdmVudFNlcnZpY2Uge1xuICBwcml2YXRlIGV2ZW50U3ViamVjdCA9IG5ldyBTdWJqZWN0PEFYUFdvcmtmbG93RXZlbnQ+KCk7XG5cbiAgZGlzcGF0Y2goZXZlbnQ6IEFYUFdvcmtmbG93RXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50U3ViamVjdC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIGdldCBldmVudHMkKCk6IE9ic2VydmFibGU8QVhQV29ya2Zsb3dFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPWorkflowRegistryService {\n constructor() {\n this.functionsMap = new Map();\n this.actionsMap = new Map();\n this.workflowsMap = new Map();\n }\n registerWorkflow(name, workflow) {\n this.workflowsMap.set(name, workflow);\n }\n getWorkflow(name) {\n return this.workflowsMap.get(name);\n }\n registerAction(name, action) {\n this.actionsMap.set(name, action);\n }\n getAction(name) {\n return this.actionsMap.get(name);\n }\n registerFunction(name, func) {\n this.functionsMap.set(name, func);\n }\n getFunction(name) {\n return this.functionsMap.get(name);\n }\n getFunctionNames() {\n return Array.from(this.functionsMap.keys());\n }\n getStep(workflowName, stepName) {\n const workflow = this.workflowsMap.get(workflowName);\n if (workflow) {\n const steps = workflow.steps;\n return steps[stepName];\n }\n return undefined;\n }\n updateStepInWorkflow(workflowName, stepName, step) {\n const workflow = this.workflowsMap.get(workflowName);\n if (workflow) {\n const steps = workflow.steps;\n if (steps[stepName]) {\n steps[stepName] = step;\n }\n else {\n throw new Error(`Step with name ${stepName} does not exist in workflow ${workflowName}.`);\n }\n }\n else {\n throw new Error(`Workflow with name ${workflowName} does not exist.`);\n }\n }\n addStepToWorkflow(workflowName, stepName, step) {\n const workflow = this.workflowsMap.get(workflowName);\n if (workflow) {\n const steps = workflow.steps;\n if (!steps[stepName]) {\n steps[stepName] = step;\n }\n else {\n throw new Error(`Step with name ${stepName} already exists in workflow ${workflowName}.`);\n }\n }\n else {\n throw new Error(`Workflow with name ${workflowName} does not exist.`);\n }\n }\n addAfterStep(workflowId, stepId, newStepId, newStepAction, conditionExpression) {\n const step = this.getStep(workflowId, stepId);\n if (step != undefined) {\n this.addStepToWorkflow(workflowId, newStepId, {\n action: newStepAction,\n nextSteps: step.nextSteps,\n });\n this.updateStepInWorkflow(workflowId, stepId, {\n ...step,\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: conditionExpression }],\n nextStepId: newStepId,\n },\n ],\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowRegistryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcmVnaXN0ZXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvd29ya2Zsb3ctcmVnaXN0ZXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQzs7QUFNakQsTUFBTSxPQUFPLDBCQUEwQjtJQUh2QztRQUlVLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQXFDLENBQUM7UUFDNUQsZUFBVSxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBQ3hELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7S0E0RnZEO0lBMUZDLGdCQUFnQixDQUFDLElBQVksRUFBRSxRQUFxQjtRQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsTUFBK0I7UUFDMUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsSUFBK0I7UUFDNUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWTtRQUN0QixPQUFPLElBQUksQ0FB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QUFDO0lBQ0gsQ0FBQzsrR0E5RlUsMEJBQTBCO21IQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFdvcmtmbG93LCBBWFBXb3JrZmxvd0FjdGlvbiwgQVhQV29ya2Zsb3dGdW5jdGlvbiwgQVhQV29ya2Zsb3dTdGVwIH0gZnJvbSAnLi93b3JrZmxvdy50eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXb3JrZmxvd1JlZ2lzdHJ5U2VydmljZSB7XG4gIHByaXZhdGUgZnVuY3Rpb25zTWFwID0gbmV3IE1hcDxzdHJpbmcsIFR5cGU8QVhQV29ya2Zsb3dGdW5jdGlvbj4+KCk7XG4gIHByaXZhdGUgYWN0aW9uc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBUeXBlPEFYUFdvcmtmbG93QWN0aW9uPj4oKTtcbiAgcHJpdmF0ZSB3b3JrZmxvd3NNYXAgPSBuZXcgTWFwPHN0cmluZywgQVhQV29ya2Zsb3c+KCk7XG5cbiAgcmVnaXN0ZXJXb3JrZmxvdyhuYW1lOiBzdHJpbmcsIHdvcmtmbG93OiBBWFBXb3JrZmxvdyk6IHZvaWQge1xuICAgIHRoaXMud29ya2Zsb3dzTWFwLnNldChuYW1lLCB3b3JrZmxvdyk7XG4gIH1cblxuICBnZXRXb3JrZmxvdyhuYW1lOiBzdHJpbmcpOiBBWFBXb3JrZmxvdyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMud29ya2Zsb3dzTWFwLmdldChuYW1lKTtcbiAgfVxuXG4gIHJlZ2lzdGVyQWN0aW9uKG5hbWU6IHN0cmluZywgYWN0aW9uOiBUeXBlPEFYUFdvcmtmbG93QWN0aW9uPik6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uc01hcC5zZXQobmFtZSwgYWN0aW9uKTtcbiAgfVxuXG4gIGdldEFjdGlvbihuYW1lOiBzdHJpbmcpOiBUeXBlPEFYUFdvcmtmbG93QWN0aW9uPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uc01hcC5nZXQobmFtZSk7XG4gIH1cblxuICByZWdpc3RlckZ1bmN0aW9uKG5hbWU6IHN0cmluZywgZnVuYzogVHlwZTxBWFBXb3JrZmxvd0Z1bmN0aW9uPik6IHZvaWQge1xuICAgIHRoaXMuZnVuY3Rpb25zTWFwLnNldChuYW1lLCBmdW5jKTtcbiAgfVxuXG4gIGdldEZ1bmN0aW9uKG5hbWU6IHN0cmluZyk6IFR5cGU8QVhQV29ya2Zsb3dGdW5jdGlvbj4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc01hcC5nZXQobmFtZSk7XG4gIH1cblxuICBnZXRGdW5jdGlvbk5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZ1bmN0aW9uc01hcC5rZXlzKCkpO1xuICB9XG5cbiAgZ2V0U3RlcCh3b3JrZmxvd05hbWU6IHN0cmluZywgc3RlcE5hbWU6IHN0cmluZyk6IEFYUFdvcmtmbG93U3RlcCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLndvcmtmbG93c01hcC5nZXQod29ya2Zsb3dOYW1lKTtcbiAgICBpZiAod29ya2Zsb3cpIHtcbiAgICAgIGNvbnN0IHN0ZXBzID0gd29ya2Zsb3cuc3RlcHMgYXMgeyBba2V5OiBzdHJpbmddOiBBWFBXb3JrZmxvd1N0ZXAgfTtcbiAgICAgIHJldHVybiBzdGVwc1tzdGVwTmFtZV07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICB1cGRhdGVTdGVwSW5Xb3JrZmxvdyh3b3JrZmxvd05hbWU6IHN0cmluZywgc3RlcE5hbWU6IHN0cmluZywgc3RlcDogQVhQV29ya2Zsb3dTdGVwKTogdm9pZCB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLndvcmtmbG93c01hcC5nZXQod29ya2Zsb3dOYW1lKTtcbiAgICBpZiAod29ya2Zsb3cpIHtcbiAgICAgIGNvbnN0IHN0ZXBzID0gd29ya2Zsb3cuc3RlcHMgYXMgeyBba2V5OiBzdHJpbmddOiBBWFBXb3JrZmxvd1N0ZXAgfTtcbiAgICAgIGlmIChzdGVwc1tzdGVwTmFtZV0pIHtcbiAgICAgICAgc3RlcHNbc3RlcE5hbWVdID0gc3RlcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU3RlcCB3aXRoIG5hbWUgJHtzdGVwTmFtZX0gZG9lcyBub3QgZXhpc3QgaW4gd29ya2Zsb3cgJHt3b3JrZmxvd05hbWV9LmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdvcmtmbG93IHdpdGggbmFtZSAke3dvcmtmbG93TmFtZX0gZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3RlcFRvV29ya2Zsb3cod29ya2Zsb3dOYW1lOiBzdHJpbmcsIHN0ZXBOYW1lOiBzdHJpbmcsIHN0ZXA6IEFYUFdvcmtmbG93U3RlcCk6IHZvaWQge1xuICAgIGNvbnN0IHdvcmtmbG93ID0gdGhpcy53b3JrZmxvd3NNYXAuZ2V0KHdvcmtmbG93TmFtZSk7XG4gICAgaWYgKHdvcmtmbG93KSB7XG4gICAgICBjb25zdCBzdGVwcyA9IHdvcmtmbG93LnN0ZXBzIGFzIHsgW2tleTogc3RyaW5nXTogQVhQV29ya2Zsb3dTdGVwIH07XG4gICAgICBpZiAoIXN0ZXBzW3N0ZXBOYW1lXSkge1xuICAgICAgICBzdGVwc1tzdGVwTmFtZV0gPSBzdGVwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGVwIHdpdGggbmFtZSAke3N0ZXBOYW1lfSBhbHJlYWR5IGV4aXN0cyBpbiB3b3JrZmxvdyAke3dvcmtmbG93TmFtZX0uYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgV29ya2Zsb3cgd2l0aCBuYW1lICR7d29ya2Zsb3dOYW1lfSBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gIH1cblxuICBhZGRBZnRlclN0ZXAoXG4gICAgd29ya2Zsb3dJZDogc3RyaW5nLFxuICAgIHN0ZXBJZDogc3RyaW5nLFxuICAgIG5ld1N0ZXBJZDogc3RyaW5nLFxuICAgIG5ld1N0ZXBBY3Rpb246IHN0cmluZyxcbiAgICBjb25kaXRpb25FeHByZXNzaW9uOiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0U3RlcCh3b3JrZmxvd0lkLCBzdGVwSWQpO1xuICAgIGlmIChzdGVwICE9IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hZGRTdGVwVG9Xb3JrZmxvdyh3b3JrZmxvd0lkLCBuZXdTdGVwSWQsIHtcbiAgICAgICAgYWN0aW9uOiBuZXdTdGVwQWN0aW9uLFxuICAgICAgICBuZXh0U3RlcHM6IHN0ZXAubmV4dFN0ZXBzLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudXBkYXRlU3RlcEluV29ya2Zsb3cod29ya2Zsb3dJZCwgc3RlcElkLCB7XG4gICAgICAgIC4uLnN0ZXAsXG4gICAgICAgIG5leHRTdGVwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IFt7IHR5cGU6ICdTSU5HTEUnLCBleHByZXNzaW9uOiBjb25kaXRpb25FeHByZXNzaW9uIH1dLFxuICAgICAgICAgICAgbmV4dFN0ZXBJZDogbmV3U3RlcElkLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { filter } from 'rxjs';\nimport { AXPWorkflowEventService } from './workflow-event-dispatcher.service';\nimport { cloneDeep, get } from 'lodash-es';\nimport { setSmart } from '@acorex/platform/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPWorkflowContext {\n constructor(initialData = {}) {\n this.variables = {};\n this.stepOutputs = new Map();\n this.variables = cloneDeep(initialData);\n }\n setVariable(key, value) {\n setSmart(this.variables, key, value);\n }\n setVariables(context = {}) {\n this.variables = { ...this.variables, ...context };\n }\n getVariable(key) {\n return !key ? this.variables : get(this.variables, key);\n }\n setOutput(key, output) {\n this.stepOutputs.set(key, output);\n }\n setOutputs(values) {\n this.stepOutputs = new Map([...this.stepOutputs, ...values]);\n }\n getOutput(key) {\n return this.stepOutputs.get(key);\n }\n}\nexport class AXPWorkflowAction {\n constructor() {\n this.eventService = inject(AXPWorkflowEventService);\n }\n dispatch(event) {\n this.eventService.dispatch(event);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowAction, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowAction }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowAction, decorators: [{\n type: Injectable\n }] });\nexport class AXPWorkflowFunction {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowFunction, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowFunction }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowFunction, decorators: [{\n type: Injectable\n }] });\nexport function createWorkFlowEvent(type) {\n const eventCreator = (payload) => ({ type, payload });\n eventCreator.type = type;\n return eventCreator;\n}\nexport function ofType(...allowedTypes) {\n return filter((event) => allowedTypes.some((type) => event.type === type.type));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvd29ya2Zsb3cudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBUWpELE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsWUFBWSxjQUFtQixFQUFFO1FBSXpCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUpoRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBS0QsV0FBVyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBR0QsWUFBWSxDQUFDLFVBQWUsRUFBRTtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELFdBQVcsQ0FBVSxHQUFtQjtRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVcsRUFBRSxNQUFXO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQXdCO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFFRCxTQUFTLENBQVUsR0FBVztRQUM1QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQXlCRCxNQUFNLE9BQWdCLGlCQUFpQjtJQUR2QztRQUVVLGlCQUFZLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7S0FPeEQ7SUFMVyxRQUFRLENBQUMsS0FBdUI7UUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQzsrR0FMbUIsaUJBQWlCO21IQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRHRDLFVBQVU7O0FBWVgsTUFBTSxPQUFnQixtQkFBbUI7K0dBQW5CLG1CQUFtQjttSEFBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUR4QyxVQUFVOztBQVlYLE1BQU0sVUFBVSxtQkFBbUIsQ0FBSSxJQUFZO0lBQ2pELE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDekQsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDekIsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQTZCLEdBQUcsWUFBcUM7SUFDekYsT0FBTyxNQUFNLENBQUMsQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd0V2ZW50U2VydmljZSB9IGZyb20gJy4vd29ya2Zsb3ctZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IHNldFNtYXJ0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXb3JrZmxvdyB7XG4gIHN0ZXBzOiB7IFtzdGVwTmFtZTogc3RyaW5nXTogQVhQV29ya2Zsb3dTdGVwIH07XG4gIHN0YXJ0U3RlcElkOiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGNsYXNzIEFYUFdvcmtmbG93Q29udGV4dCB7XG5cbiAgY29uc3RydWN0b3IoaW5pdGlhbERhdGE6IGFueSA9IHt9KSB7XG4gICAgdGhpcy52YXJpYWJsZXMgPSBjbG9uZURlZXAoaW5pdGlhbERhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YXJpYWJsZXM6IGFueSA9IHt9O1xuICBwcml2YXRlIHN0ZXBPdXRwdXRzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xuXG4gIHNldFZhcmlhYmxlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgc2V0U21hcnQodGhpcy52YXJpYWJsZXMsIGtleSwgdmFsdWUpO1xuICB9XG5cblxuICBzZXRWYXJpYWJsZXMoY29udGV4dDogYW55ID0ge30pIHtcbiAgICB0aGlzLnZhcmlhYmxlcyA9IHsgLi4udGhpcy52YXJpYWJsZXMsIC4uLmNvbnRleHQgfTtcbiAgfVxuXG4gIGdldFZhcmlhYmxlPFQgPSBhbnk+KGtleT86IHN0cmluZyB8IG51bGwpOiBUIHtcbiAgICByZXR1cm4gIWtleSA/IHRoaXMudmFyaWFibGVzIDogZ2V0KHRoaXMudmFyaWFibGVzLCBrZXkpO1xuICB9XG5cbiAgc2V0T3V0cHV0KGtleTogc3RyaW5nLCBvdXRwdXQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc3RlcE91dHB1dHMuc2V0KGtleSwgb3V0cHV0KTtcbiAgfVxuXG4gIHNldE91dHB1dHModmFsdWVzOiBNYXA8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5zdGVwT3V0cHV0cyA9IG5ldyBNYXAoWy4uLnRoaXMuc3RlcE91dHB1dHMsIC4uLnZhbHVlc10pXG4gIH1cblxuICBnZXRPdXRwdXQ8VCA9IGFueT4oa2V5OiBzdHJpbmcpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwT3V0cHV0cy5nZXQoa2V5KTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBBWFBXb3JrZmxvd0FjdGlvbklucHV0ID0gYW55O1xuXG5leHBvcnQgdHlwZSBBWFBXb3JrZmxvd0NvbmRpdGlvblR5cGUgPSAnQU5EJyB8ICdPUicgfCAnU0lOR0xFJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXb3JrZmxvd0NvbmRpdGlvbiB7XG4gIHR5cGU6IEFYUFdvcmtmbG93Q29uZGl0aW9uVHlwZTtcbiAgY29uZGl0aW9ucz86IEFYUFdvcmtmbG93Q29uZGl0aW9uW107IC8vIE5lc3RlZCBjb25kaXRpb25zXG4gIGV4cHJlc3Npb24/OiBzdHJpbmc7IC8vIFVzZWQgaWYgdHlwZSBpcyAnU0lOR0xFJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdvcmtmbG93TmV4dFN0ZXAge1xuICBjb25kaXRpb25zOiBBWFBXb3JrZmxvd0NvbmRpdGlvbltdO1xuICBuZXh0U3RlcElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dTdGVwIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGFjdGlvbjogQVhQV29ya2Zsb3dBY3Rpb24gfCBzdHJpbmc7XG4gIGlucHV0PzogQVhQV29ya2Zsb3dBY3Rpb25JbnB1dDtcbiAgbmV4dFN0ZXBzPzogQVhQV29ya2Zsb3dOZXh0U3RlcFtdO1xuICBjb25kaXRpb25zPzogQVhQV29ya2Zsb3dDb25kaXRpb25bXTtcbn1cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBXb3JrZmxvd0FjdGlvbiB7XG4gIHByaXZhdGUgZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFYUFdvcmtmbG93RXZlbnRTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgZGlzcGF0Y2goZXZlbnQ6IEFYUFdvcmtmbG93RXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50U2VydmljZS5kaXNwYXRjaChldmVudCk7XG4gIH1cblxuICBhYnN0cmFjdCBleGVjdXRlKGNvbnRleHQ6IEFYUFdvcmtmbG93Q29udGV4dCk6IFByb21pc2U8dm9pZD47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBXb3JrZmxvd0Z1bmN0aW9uIHtcbiAgYWJzdHJhY3QgZXhlY3V0ZSguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8YW55PiB8IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXb3JrZmxvd0V2ZW50PFQgPSBhbnk+IHtcbiAgdHlwZTogc3RyaW5nO1xuICBwYXlsb2FkPzogVDtcbn1cblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXb3JrRmxvd0V2ZW50PFQ+KHR5cGU6IHN0cmluZykge1xuICBjb25zdCBldmVudENyZWF0b3IgPSAocGF5bG9hZDogVCkgPT4gKHsgdHlwZSwgcGF5bG9hZCB9KTtcbiAgZXZlbnRDcmVhdG9yLnR5cGUgPSB0eXBlO1xuICByZXR1cm4gZXZlbnRDcmVhdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2ZUeXBlPFQgZXh0ZW5kcyB7IHR5cGU6IHN0cmluZyB9PiguLi5hbGxvd2VkVHlwZXM6IEFycmF5PHsgdHlwZTogc3RyaW5nIH0+KSB7XG4gIHJldHVybiBmaWx0ZXIoKGV2ZW50OiBUKSA9PiBhbGxvd2VkVHlwZXMuc29tZSgodHlwZSkgPT4gZXZlbnQudHlwZSA9PT0gdHlwZS50eXBlKSk7XG59XG4iXX0=","import { Injectable } from \"@angular/core\";\nimport { AXPWorkflowAction } from \"../workflow.types\";\nimport * as i0 from \"@angular/core\";\nexport class AXPWorkflowDecideAction extends AXPWorkflowAction {\n async execute(context) {\n // its a fake action\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowDecideAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowDecideAction, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowDecideAction, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaWRlLmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi9hY3Rpb25zL2RlY2lkZS5hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sbUJBQW1CLENBQUM7O0FBTTFFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxpQkFBaUI7SUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQjtRQUNyQyxvQkFBb0I7SUFDeEIsQ0FBQzsrR0FIUSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZwQixNQUFNOzs0RkFFVCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd0FjdGlvbiwgQVhQV29ya2Zsb3dDb250ZXh0IH0gZnJvbSBcIi4uL3dvcmtmbG93LnR5cGVzXCI7XG5cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV29ya2Zsb3dEZWNpZGVBY3Rpb24gZXh0ZW5kcyBBWFBXb3JrZmxvd0FjdGlvbiB7XG4gICAgYXN5bmMgZXhlY3V0ZShjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gaXRzIGEgZmFrZSBhY3Rpb25cbiAgICB9XG59Il19","import { Injectable, Injector, inject } from '@angular/core';\nimport { cloneDeep, set } from 'lodash-es';\nimport { AXPWorkflowError } from './errors.types';\nimport { AXPWorkflowEventService } from './workflow-event-dispatcher.service';\nimport { AXPWorkflowRegistryService } from './workflow-registery.service';\nimport { AXPWorkflowContext, } from './workflow.types';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./workflow-registery.service\";\nexport class AXPWorkflowService {\n get events$() {\n return this.eventService.events$;\n }\n constructor(registryService, injector) {\n this.registryService = registryService;\n this.injector = injector;\n this.eventService = inject(AXPWorkflowEventService);\n }\n exists(name) {\n return !!this.registryService.getWorkflow(name);\n }\n async execute(workflow, initialContext = null) {\n // Instantiate or retrieve the workflow\n const wk = typeof workflow === 'string' ? this.getWorkflowInstance(workflow) : workflow;\n let currentStepId = wk.startStepId;\n const context = initialContext instanceof AXPWorkflowContext\n ? initialContext\n : new AXPWorkflowContext(this.processData(initialContext) ?? {});\n // Initialize context with initial variables\n while (currentStepId) {\n const currentStep = wk.steps[currentStepId];\n if (!currentStep) {\n throw new AXPWorkflowError(`Step '${currentStepId}' not found in the workflow steps.`);\n }\n // Instantiate or retrieve the action\n const action = typeof currentStep.action === 'string' ? this.getActionInstance(currentStep.action) : currentStep.action;\n //\n if (currentStep.input) {\n let inputs = {};\n await this.processInputs(cloneDeep(currentStep.input), inputs, '', context);\n await new Promise((resolve) => setTimeout(async () => {\n Object.assign(action, inputs);\n resolve(0);\n }));\n }\n try {\n await new Promise((resolve) => setTimeout(async () => {\n await action.execute(context);\n resolve(0);\n }, 0));\n }\n catch (error) {\n console.error(error);\n throw new AXPWorkflowError('Workflow Error', error);\n }\n // Determine the next step based on the conditions\n const nextStepInfo = await this.determineNextStep(currentStep, context);\n if (nextStepInfo) {\n currentStepId = nextStepInfo.nextStepId;\n }\n else {\n break; // Exit the loop if no next step is determined\n }\n }\n return context;\n }\n processData(initialContext) {\n //TODO: update values with expressions and return new object\n return initialContext;\n }\n getActionInstance(actionName) {\n const actionType = this.registryService.getAction(actionName);\n if (!actionType) {\n throw new AXPWorkflowError(`Action type '${actionName}' not found in the registry.`);\n }\n return this.injector.get(actionType);\n }\n getWorkflowInstance(workflowName) {\n const workflowType = this.registryService.getWorkflow(workflowName);\n if (!workflowType) {\n throw new AXPWorkflowError(`Workflow type '${workflowName}' not found in the registry.`);\n }\n return workflowType;\n }\n async determineNextStep(currentStep, context) {\n if (!currentStep.nextSteps) {\n return null;\n }\n for (const nextStep of currentStep.nextSteps) {\n if (await this.evaluateCondition(nextStep.conditions, context)) {\n return nextStep;\n }\n }\n return null;\n }\n async evaluateCondition(conditions, context) {\n if (!conditions || conditions.length === 0) {\n return true; // If no conditions, the step proceeds\n }\n // Map each condition to a promise using evaluateSingleCondition\n const conditionPromises = conditions.map((condition) => this.evaluateSingleCondition(condition, context));\n // Wait for all promises to resolve\n const results = await Promise.all(conditionPromises);\n // Check if every condition is true\n return results.every((result) => result);\n }\n async evaluateSingleCondition(condition, context) {\n switch (condition.type) {\n case 'SINGLE':\n return (!condition.expression ? true : await this.evaluateExpression(condition.expression, context));\n case 'AND':\n // Evaluate all conditions with 'AND' logic\n const andConditions = condition.conditions ?? [];\n const andResults = await Promise.all(andConditions.map((cond) => this.evaluateSingleCondition(cond, context)));\n return andResults.every((result) => result);\n case 'OR':\n // Evaluate all conditions with 'OR' logic\n const orConditions = condition.conditions ?? [];\n const orResults = await Promise.all(orConditions.map((cond) => this.evaluateSingleCondition(cond, context)));\n return orResults.some((result) => result);\n default:\n throw new AXPWorkflowError(`Unsupported condition type: ${condition.type}`);\n }\n }\n //TODO: return any and recursively update object, update scopes\n async evaluateExpression(templateExpression, context) {\n try {\n let expression = '';\n if (typeof templateExpression === 'string' && templateExpression.trim().includes('{{')) {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n expression = expressionMatch[1];\n }\n else {\n expression = templateExpression;\n }\n // Create a scope that includes context and registered functions\n const scope = { context, ...this.createFunctionScope() };\n // Evaluating the expression within the created scope\n const sandbox = new Function('scope', `return (async function() { with (scope) { return ${expression}; } })();`);\n const result = await sandbox(scope);\n return result;\n }\n catch (error) {\n console.error('Error evaluating expression:', error);\n return false;\n }\n }\n async processInputs(obj, inputs, pathPrefix = '', context = {}) {\n if (!obj) {\n return;\n }\n for await (const i of Object.entries(obj)) {\n const key = i[0];\n const value = i[1];\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n if (typeof value === 'string' && value.trim().includes('{{')) {\n const expValue = await this.evaluateExpression(value, context);\n set(inputs, currentPath, expValue);\n }\n else if (typeof value === 'object' &&\n value !== null &&\n (value.constructor === Object || Array.isArray(value))) {\n // Recursively handle nested objects\n this.processInputs(value, inputs, currentPath, context);\n }\n else {\n // Apply static values directly\n set(inputs, currentPath, value);\n }\n }\n }\n createFunctionScope() {\n const scope = {};\n this.registryService.getFunctionNames().forEach((name) => {\n scope[name] = this.getFunctionInstance(name).execute;\n });\n return { methods: { scope } };\n }\n getFunctionInstance(functionName) {\n const functionType = this.registryService.getFunction(functionName);\n if (!functionType) {\n throw new AXPWorkflowError(`Function type '${functionName}' not found in the registry.`);\n }\n return this.injector.get(functionType);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowService, deps: [{ token: i1.AXPWorkflowRegistryService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.AXPWorkflowRegistryService }, { type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi93b3JrZmxvdy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBSUwsa0JBQWtCLEdBS25CLE1BQU0sa0JBQWtCLENBQUM7OztBQUsxQixNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQW9CLGVBQTJDLEVBQVUsUUFBa0I7UUFBdkUsb0JBQWUsR0FBZixlQUFlLENBQTRCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQU5uRixpQkFBWSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBTXdDLENBQUM7SUFFaEcsTUFBTSxDQUFDLElBQVk7UUFDakIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUdELEtBQUssQ0FBQyxPQUFPLENBQ1gsUUFBOEIsRUFDOUIsaUJBQWtELElBQUk7UUFFdEQsdUNBQXVDO1FBQ3ZDLE1BQU0sRUFBRSxHQUFHLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMs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SUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMxRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sK0JBQStCO2dCQUMvQixHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsTUFBTSxLQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2RCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxZQUFvQjtRQUM5QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLGdCQUFnQixDQUFDLGtCQUFrQixZQUFZLDhCQUE4QixDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsQ0FBQzsrR0FwTlUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUFdvcmtmbG93RXJyb3IgfSBmcm9tICcuL2Vycm9ycy50eXBlcyc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd0V2ZW50U2VydmljZSB9IGZyb20gJy4vd29ya2Zsb3ctZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdvcmtmbG93UmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi93b3JrZmxvdy1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQge1xuICBBWFBXb3JrZmxvdyxcbiAgQVhQV29ya2Zsb3dBY3Rpb24sXG4gIEFYUFdvcmtmbG93Q29uZGl0aW9uLFxuICBBWFBXb3JrZmxvd0NvbnRleHQsXG4gIEFYUFdvcmtmbG93RXZlbnQsXG4gIEFYUFdvcmtmbG93RnVuY3Rpb24sXG4gIEFYUFdvcmtmbG93TmV4dFN0ZXAsXG4gIEFYUFdvcmtmbG93U3RlcCxcbn0gZnJvbSAnLi93b3JrZmxvdy50eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXb3JrZmxvd1NlcnZpY2Uge1xuICBwcml2YXRlIGV2ZW50U2VydmljZSA9IGluamVjdChBWFBXb3JrZmxvd0V2ZW50U2VydmljZSk7XG5cbiAgZ2V0IGV2ZW50cyQoKTogT2JzZXJ2YWJsZTxBWFBXb3JrZmxvd0V2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRTZXJ2aWNlLmV2ZW50cyQ7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZ2lzdHJ5U2VydmljZTogQVhQV29ya2Zsb3dSZWdpc3RyeVNlcnZpY2UsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7IH1cblxuICBleGlzdHMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZWdpc3RyeVNlcnZpY2UuZ2V0V29ya2Zsb3cobmFtZSk7XG4gIH1cblxuXG4gIGFzeW5jIGV4ZWN1dGUoXG4gICAgd29ya2Zsb3c6IEFYUFdvcmtmbG93IHwgc3RyaW5nLFxuICAgIGluaXRpYWxDb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHQgfCBhbnkgfCBudWxsID0gbnVsbFxuICApOiBQcm9taXNlPEFYUFdvcmtmbG93Q29udGV4dD4ge1xuICAgIC8vIEluc3RhbnRpYXRlIG9yIHJldHJpZXZlIHRoZSB3b3JrZmxvd1xuICAgIGNvbnN0IHdrID0gdHlwZW9mIHdvcmtmbG93ID09PSAnc3RyaW5nJyA/IHRoaXMuZ2V0V29ya2Zsb3dJbnN0YW5jZSh3b3JrZmxvdykgOiB3b3JrZmxvdztcblxuICAgIGxldCBjdXJyZW50U3RlcElkID0gd2suc3RhcnRTdGVwSWQ7XG4gICAgY29uc3QgY29udGV4dCA9XG4gICAgICBpbml0aWFsQ29udGV4dCBpbnN0YW5jZW9mIEFYUFdvcmtmbG93Q29udGV4dFxuICAgICAgICA/IGluaXRpYWxDb250ZXh0XG4gICAgICAgIDogbmV3IEFYUFdvcmtmbG93Q29udGV4dCh0aGlzLnByb2Nlc3NEYXRhKGluaXRpYWxDb250ZXh0KSA/PyB7fSk7XG4gICAgLy8gSW5pdGlhbGl6ZSBjb250ZXh0IHdpdGggaW5pdGlhbCB2YXJpYWJsZXNcblxuICAgIHdoaWxlIChjdXJyZW50U3RlcElkKSB7XG4gICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHdrLnN0ZXBzW2N1cnJlbnRTdGVwSWRdO1xuICAgICAgaWYgKCFjdXJyZW50U3RlcCkge1xuICAgICAgICB0aHJvdyBuZXcgQVhQV29ya2Zsb3dFcnJvcihgU3RlcCAnJHtjdXJyZW50U3RlcElkfScgbm90IGZvdW5kIGluIHRoZSB3b3JrZmxvdyBzdGVwcy5gKTtcbiAgICAgIH1cblxuICAgICAgLy8gSW5zdGFudGlhdGUgb3IgcmV0cmlldmUgdGhlIGFjdGlvblxuICAgICAgY29uc3QgYWN0aW9uID1cbiAgICAgICAgdHlwZW9mIGN1cnJlbnRTdGVwLmFjdGlvbiA9PT0gJ3N0cmluZycgPyB0aGlzLmdldEFjdGlvbkluc3RhbmNlKGN1cnJlbnRTdGVwLmFjdGlvbikgOiBjdXJyZW50U3RlcC5hY3Rpb247XG4gICAgICAvL1xuICAgICAgaWYgKGN1cnJlbnRTdGVwLmlucHV0KSB7XG4gICAgICAgIGxldCBpbnB1dHM6IGFueSA9IHt9O1xuICAgICAgICBhd2FpdCB0aGlzLnByb2Nlc3NJbnB1dHMoY2xvbmVEZWVwKGN1cnJlbnRTdGVwLmlucHV0KSwgaW5wdXRzLCAnJywgY29udGV4dCk7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PlxuICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpb24sIGlucHV0cyk7XG4gICAgICAgICAgICByZXNvbHZlKDApO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT5cbiAgICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGFjdGlvbi5leGVjdXRlKGNvbnRleHQpO1xuICAgICAgICAgICAgcmVzb2x2ZSgwKTtcbiAgICAgICAgICB9LCAwKVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHRocm93IG5ldyBBWFBXb3JrZmxvd0Vycm9yKCdXb3JrZmxvdyBFcnJvcicsIGVycm9yIGFzIEVycm9yKTtcbiAgICAgIH1cbiAgICAgIC8vIERldGVybWluZSB0aGUgbmV4dCBzdGVwIGJhc2VkIG9uIHRoZSBjb25kaXRpb25zXG4gICAgICBjb25zdCBuZXh0U3RlcEluZm8gPSBhd2FpdCB0aGlzLmRldGVybWluZU5leHRTdGVwKGN1cnJlbnRTdGVwLCBjb250ZXh0KTtcbiAgICAgIGlmIChuZXh0U3RlcEluZm8pIHtcbiAgICAgICAgY3VycmVudFN0ZXBJZCA9IG5leHRTdGVwSW5mby5uZXh0U3RlcElkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7IC8vIEV4aXQgdGhlIGxvb3AgaWYgbm8gbmV4dCBzdGVwIGlzIGRldGVybWluZWRcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NEYXRhKGluaXRpYWxDb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIC8vVE9ETzogdXBkYXRlIHZhbHVlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCByZXR1cm4gbmV3IG9iamVjdFxuICAgIHJldHVybiBpbml0aWFsQ29udGV4dDtcbiAgfVxuXG5cblxuICBwcml2YXRlIGdldEFjdGlvbkluc3RhbmNlKGFjdGlvbk5hbWU6IHN0cmluZyk6IEFYUFdvcmtmbG93QWN0aW9uIHtcbiAgICBjb25zdCBhY3Rpb25UeXBlID0gdGhpcy5yZWdpc3RyeVNlcnZpY2UuZ2V0QWN0aW9uKGFjdGlvbk5hbWUpO1xuICAgIGlmICghYWN0aW9uVHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEFYUFdvcmtmbG93RXJyb3IoYEFjdGlvbiB0eXBlICcke2FjdGlvbk5hbWV9JyBub3QgZm91bmQgaW4gdGhlIHJlZ2lzdHJ5LmApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoYWN0aW9uVHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFdvcmtmbG93SW5zdGFuY2Uod29ya2Zsb3dOYW1lOiBzdHJpbmcpOiBBWFBXb3JrZmxvdyB7XG4gICAgY29uc3Qgd29ya2Zsb3dUeXBlID0gdGhpcy5yZWdpc3RyeVNlcnZpY2UuZ2V0V29ya2Zsb3cod29ya2Zsb3dOYW1lKTtcbiAgICBpZiAoIXdvcmtmbG93VHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEFYUFdvcmtmbG93RXJyb3IoYFdvcmtmbG93IHR5cGUgJyR7d29ya2Zsb3dOYW1lfScgbm90IGZvdW5kIGluIHRoZSByZWdpc3RyeS5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHdvcmtmbG93VHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGV0ZXJtaW5lTmV4dFN0ZXAoXG4gICAgY3VycmVudFN0ZXA6IEFYUFdvcmtmbG93U3RlcCxcbiAgICBjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHRcbiAgKTogUHJvbWlzZTxBWFBXb3JrZmxvd05leHRTdGVwIHwgbnVsbD4ge1xuICAgIGlmICghY3VycmVudFN0ZXAubmV4dFN0ZXBzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZm9yIChjb25zdCBuZXh0U3RlcCBvZiBjdXJyZW50U3RlcC5uZXh0U3RlcHMpIHtcbiAgICAgIGlmIChhd2FpdCB0aGlzLmV2YWx1YXRlQ29uZGl0aW9uKG5leHRTdGVwLmNvbmRpdGlvbnMsIGNvbnRleHQpKSB7XG4gICAgICAgIHJldHVybiBuZXh0U3RlcDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlQ29uZGl0aW9uKGNvbmRpdGlvbnM6IEFYUFdvcmtmbG93Q29uZGl0aW9uW10sIGNvbnRleHQ6IEFYUFdvcmtmbG93Q29udGV4dCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghY29uZGl0aW9ucyB8fCBjb25kaXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7IC8vIElmIG5vIGNvbmRpdGlvbnMsIHRoZSBzdGVwIHByb2NlZWRzXG4gICAgfVxuXG4gICAgLy8gTWFwIGVhY2ggY29uZGl0aW9uIHRvIGEgcHJvbWlzZSB1c2luZyBldmFsdWF0ZVNpbmdsZUNvbmRpdGlvblxuICAgIGNvbnN0IGNvbmRpdGlvblByb21pc2VzID0gY29uZGl0aW9ucy5tYXAoKGNvbmRpdGlvbikgPT4gdGhpcy5ldmFsdWF0ZVNpbmdsZUNvbmRpdGlvbihjb25kaXRpb24sIGNvbnRleHQpKTtcblxuICAgIC8vIFdhaXQgZm9yIGFsbCBwcm9taXNlcyB0byByZXNvbHZlXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKGNvbmRpdGlvblByb21pc2VzKTtcblxuICAgIC8vIENoZWNrIGlmIGV2ZXJ5IGNvbmRpdGlvbiBpcyB0cnVlXG4gICAgcmV0dXJuIHJlc3VsdHMuZXZlcnkoKHJlc3VsdCkgPT4gcmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVTaW5nbGVDb25kaXRpb24oXG4gICAgY29uZGl0aW9uOiBBWFBXb3JrZmxvd0NvbmRpdGlvbixcbiAgICBjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHRcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgc3dpdGNoIChjb25kaXRpb24udHlwZSkge1xuICAgICAgY2FzZSAnU0lOR0xFJzpcbiAgICAgICAgcmV0dXJuICghY29uZGl0aW9uLmV4cHJlc3Npb24gPyB0cnVlIDogYXdhaXQgdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24oY29uZGl0aW9uLmV4cHJlc3Npb24sIGNvbnRleHQpKSBhcyBib29sZWFuO1xuICAgICAgY2FzZSAnQU5EJzpcbiAgICAgICAgLy8gRXZhbHVhdGUgYWxsIGNvbmRpdGlvbnMgd2l0aCAnQU5EJyBsb2dpY1xuICAgICAgICBjb25zdCBhbmRDb25kaXRpb25zID0gY29uZGl0aW9uLmNvbmRpdGlvbnMgPz8gW107XG4gICAgICAgIGNvbnN0IGFuZFJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChhbmRDb25kaXRpb25zLm1hcCgoY29uZCkgPT4gdGhpcy5ldmFsdWF0ZVNpbmdsZUNvbmRpdGlvbihjb25kLCBjb250ZXh0KSkpO1xuICAgICAgICByZXR1cm4gYW5kUmVzdWx0cy5ldmVyeSgocmVzdWx0KSA9PiByZXN1bHQpO1xuXG4gICAgICBjYXNlICdPUic6XG4gICAgICAgIC8vIEV2YWx1YXRlIGFsbCBjb25kaXRpb25zIHdpdGggJ09SJyBsb2dpY1xuICAgICAgICBjb25zdCBvckNvbmRpdGlvbnMgPSBjb25kaXRpb24uY29uZGl0aW9ucyA/PyBbXTtcbiAgICAgICAgY29uc3Qgb3JSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwob3JDb25kaXRpb25zLm1hcCgoY29uZCkgPT4gdGhpcy5ldmFsdWF0ZVNpbmdsZUNvbmRpdGlvbihjb25kLCBjb250ZXh0KSkpO1xuICAgICAgICByZXR1cm4gb3JSZXN1bHRzLnNvbWUoKHJlc3VsdCkgPT4gcmVzdWx0KTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEFYUFdvcmtmbG93RXJyb3IoYFVuc3VwcG9ydGVkIGNvbmRpdGlvbiB0eXBlOiAke2NvbmRpdGlvbi50eXBlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8vVE9ETzogcmV0dXJuIGFueSBhbmQgcmVjdXJzaXZlbHkgdXBkYXRlIG9iamVjdCwgdXBkYXRlIHNjb3Blc1xuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlRXhwcmVzc2lvbih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZywgY29udGV4dDogQVhQV29ya2Zsb3dDb250ZXh0KTogUHJvbWlzZTxCb29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBleHByZXNzaW9uID0gJyc7XG4gICAgICBpZiAodHlwZW9mIHRlbXBsYXRlRXhwcmVzc2lvbiA9PT0gJ3N0cmluZycgJiYgdGVtcGxhdGVFeHByZXNzaW9uLnRyaW0oKS5pbmNsdWRlcygne3snKSkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uTWF0Y2ggPSB0ZW1wbGF0ZUV4cHJlc3Npb24ubWF0Y2goL1xce1xce1xccyooLio/KVxccypcXH1cXH0vKTtcbiAgICAgICAgaWYgKCFleHByZXNzaW9uTWF0Y2gpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcihgTm8gdmFsaWQgZXhwcmVzc2lvbiBmb3VuZCBpbiBcIiR7dGVtcGxhdGVFeHByZXNzaW9ufVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25NYXRjaFsxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4cHJlc3Npb24gPSB0ZW1wbGF0ZUV4cHJlc3Npb247XG4gICAgICB9XG4gICAgICAvLyBDcmVhdGUgYSBzY29wZSB0aGF0IGluY2x1ZGVzIGNvbnRleHQgYW5kIHJlZ2lzdGVyZWQgZnVuY3Rpb25zXG4gICAgICBjb25zdCBzY29wZSA9IHsgY29udGV4dCwgLi4udGhpcy5jcmVhdGVGdW5jdGlvblNjb3BlKCkgfTtcbiAgICAgIC8vIEV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24gd2l0aGluIHRoZSBjcmVhdGVkIHNjb3BlXG4gICAgICBjb25zdCBzYW5kYm94ID0gbmV3IEZ1bmN0aW9uKCdzY29wZScsIGByZXR1cm4gKGFzeW5jIGZ1bmN0aW9uKCkgeyB3aXRoIChzY29wZSkgeyByZXR1cm4gJHtleHByZXNzaW9ufTsgfSB9KSgpO2ApO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FuZGJveChzY29wZSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGV4cHJlc3Npb246JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc0lucHV0cyhvYmo6IGFueSwgaW5wdXRzOiBhbnksIHBhdGhQcmVmaXg6IHN0cmluZyA9ICcnLCBjb250ZXh0OiBhbnkgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghb2JqKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIGF3YWl0IChjb25zdCBpIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICAgIGNvbnN0IGtleSA9IGlbMF07XG4gICAgICBjb25zdCB2YWx1ZSA9IGlbMV07XG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHBhdGhQcmVmaXggPyBgJHtwYXRoUHJlZml4fS4ke2tleX1gIDoga2V5O1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmluY2x1ZGVzKCd7eycpKSB7XG4gICAgICAgIGNvbnN0IGV4cFZhbHVlID0gYXdhaXQgdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24odmFsdWUsIGNvbnRleHQpO1xuICAgICAgICBzZXQoaW5wdXRzLCBjdXJyZW50UGF0aCwgZXhwVmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAodmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdCB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBoYW5kbGUgbmVzdGVkIG9iamVjdHNcbiAgICAgICAgdGhpcy5wcm9jZXNzSW5wdXRzKHZhbHVlLCBpbnB1dHMsIGN1cnJlbnRQYXRoLCBjb250ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFwcGx5IHN0YXRpYyB2YWx1ZXMgZGlyZWN0bHlcbiAgICAgICAgc2V0KGlucHV0cywgY3VycmVudFBhdGgsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZ1bmN0aW9uU2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgdGhpcy5yZWdpc3RyeVNlcnZpY2UuZ2V0RnVuY3Rpb25OYW1lcygpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgIHNjb3BlW25hbWVdID0gdGhpcy5nZXRGdW5jdGlvbkluc3RhbmNlKG5hbWUpLmV4ZWN1dGU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgbWV0aG9kczogeyBzY29wZSB9IH07XG4gIH1cblxuICBwcml2YXRlIGdldEZ1bmN0aW9uSW5zdGFuY2UoZnVuY3Rpb25OYW1lOiBzdHJpbmcpOiBBWFBXb3JrZmxvd0Z1bmN0aW9uIHtcbiAgICBjb25zdCBmdW5jdGlvblR5cGUgPSB0aGlzLnJlZ2lzdHJ5U2VydmljZS5nZXRGdW5jdGlvbihmdW5jdGlvbk5hbWUpO1xuICAgIGlmICghZnVuY3Rpb25UeXBlKSB7XG4gICAgICB0aHJvdyBuZXcgQVhQV29ya2Zsb3dFcnJvcihgRnVuY3Rpb24gdHlwZSAnJHtmdW5jdGlvbk5hbWV9JyBub3QgZm91bmQgaW4gdGhlIHJlZ2lzdHJ5LmApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoZnVuY3Rpb25UeXBlKTtcbiAgfVxufVxuIl19","import { inject, Injectable } from \"@angular/core\";\nimport { AXPWorkflowAction } from \"../workflow.types\";\nimport { AXPWorkflowService } from \"../workflow.service\";\nimport * as i0 from \"@angular/core\";\nexport class AXPStartWorkflowAction extends AXPWorkflowAction {\n constructor() {\n super(...arguments);\n this.workflowService = inject(AXPWorkflowService);\n }\n async execute(context) {\n //console.log(\"start WK current context\", context);\n //console.log(\"start WK input context\", this.context);\n if (this.context)\n context.setVariables(this.context);\n //console.log(\"start WK merged context\", context);\n try {\n await this.workflowService.execute(this.workflow, context);\n }\n catch (e) {\n throw e;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPStartWorkflowAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPStartWorkflowAction, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPStartWorkflowAction, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtd29ya2Zsb3cuYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2FjdGlvbnMvc3RhcnQtd29ya2Zsb3cuYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBc0IsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFLekQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGlCQUFpQjtJQUg3RDs7UUFLWSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0tBa0J2RDtJQWRHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBMkI7UUFDckMsbURBQW1EO1FBQ25ELHNEQUFzRDtRQUN0RCxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQ1osT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdEMsa0RBQWtEO1FBQ2xELElBQUksQ0FBQztZQUNELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsQ0FBQztRQUNaLENBQUM7SUFFTCxDQUFDOytHQW5CUSxzQkFBc0I7bUhBQXRCLHNCQUFzQixjQUZuQixNQUFNOzs0RkFFVCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFYUFdvcmtmbG93QWN0aW9uLCBBWFBXb3JrZmxvd0NvbnRleHQgfSBmcm9tIFwiLi4vd29ya2Zsb3cudHlwZXNcIjtcbmltcG9ydCB7IEFYUFdvcmtmbG93U2VydmljZSB9IGZyb20gXCIuLi93b3JrZmxvdy5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUFN0YXJ0V29ya2Zsb3dBY3Rpb24gZXh0ZW5kcyBBWFBXb3JrZmxvd0FjdGlvbiB7XG5cbiAgICBwcml2YXRlIHdvcmtmbG93U2VydmljZSA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpXG4gICAgcHJpdmF0ZSB3b3JrZmxvdzogc3RyaW5nO1xuICAgIHByaXZhdGUgY29udGV4dDogYW55O1xuXG4gICAgYXN5bmMgZXhlY3V0ZShjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInN0YXJ0IFdLIGN1cnJlbnQgY29udGV4dFwiLCBjb250ZXh0KTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInN0YXJ0IFdLIGlucHV0IGNvbnRleHRcIiwgdGhpcy5jb250ZXh0KTtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dClcbiAgICAgICAgICAgIGNvbnRleHQuc2V0VmFyaWFibGVzKHRoaXMuY29udGV4dClcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInN0YXJ0IFdLIG1lcmdlZCBjb250ZXh0XCIsIGNvbnRleHQpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy53b3JrZmxvd1NlcnZpY2UuZXhlY3V0ZSh0aGlzLndvcmtmbG93LCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG4iXX0=","import { InjectionToken, inject, Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Injection token for workflow definition loaders.\n * Multiple loaders can be provided (multi: true).\n */\nexport const AXP_WORKFLOW_DEFINITION_LOADER = new InjectionToken('AXP_WORKFLOW_DEFINITION_LOADER');\n/**\n * Resolver service for workflow definitions.\n * Aggregates all registered loaders and resolves workflow definitions.\n */\nexport class AXPWorkflowDefinitionResolver {\n constructor() {\n this.loaders = inject(AXP_WORKFLOW_DEFINITION_LOADER, { optional: true });\n }\n /**\n * Get workflow definition by name (unique key).\n * Tries all registered loaders until one returns a definition.\n * @param name - The workflow name (unique key)\n * @returns Workflow definition or null if not found\n */\n async get(name) {\n const loaderArray = Array.isArray(this.loaders) ? this.loaders : this.loaders ? [this.loaders] : [];\n for (const loader of loaderArray) {\n try {\n const definition = await loader.get(name);\n if (definition) {\n return definition;\n }\n }\n catch (error) {\n console.warn(`[AXPWorkflowDefinitionResolver] Loader failed for ${name}:`, error);\n }\n }\n return null;\n }\n /**\n * Get all available workflow names from all loaders.\n * @returns Array of unique workflow names\n */\n async getAllNames() {\n const loaderArray = Array.isArray(this.loaders) ? this.loaders : this.loaders ? [this.loaders] : [];\n const allNames = new Set();\n for (const loader of loaderArray) {\n if (loader.getAllNames) {\n try {\n const names = await loader.getAllNames();\n names.forEach((name) => allNames.add(name));\n }\n catch (error) {\n console.warn('[AXPWorkflowDefinitionResolver] Failed to get names from loader:', error);\n }\n }\n }\n return Array.from(allNames);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowDefinitionResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowDefinitionResolver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowDefinitionResolver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGVmaW5pdGlvbi5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL3dvcmtmbG93LWRlZmluaXRpb24uY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFtQ25FOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUM5RCxnQ0FBZ0MsQ0FDakMsQ0FBQztBQUVGOzs7R0FHRztBQUVILE1BQU0sT0FBTyw2QkFBNkI7SUFEMUM7UUFFVSxZQUFPLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7S0E4QzlFO0lBNUNDOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXBHLEtBQUssTUFBTSxNQUFNLElBQUksV0FBVyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDO2dCQUNILE1BQU0sVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDZixPQUFPLFVBQVUsQ0FBQztnQkFDcEIsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMscURBQXFELElBQUksR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BGLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFdBQVc7UUFDZixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBRW5DLEtBQUssTUFBTSxNQUFNLElBQUksV0FBVyxFQUFFLENBQUM7WUFDakMsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQztvQkFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDekMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDMUYsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7K0dBOUNVLDZCQUE2QjttSEFBN0IsNkJBQTZCLGNBRGhCLE1BQU07OzRGQUNuQiw2QkFBNkI7a0JBRHpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dEZWZpbml0aW9uIH0gZnJvbSAnLi93b3JrZmxvdy1kZWZpbml0aW9uLnR5cGVzJztcblxuLyoqXG4gKiBXb3JrZmxvdyBkZWZpbml0aW9uIGxvYWRlciBpbnRlcmZhY2UuXG4gKiBJbXBsZW1lbnQgdGhpcyB0byBwcm92aWRlIHdvcmtmbG93IGRlZmluaXRpb25zIGZyb20gdmFyaW91cyBzb3VyY2VzIChKU09OIGZpbGVzLCBkYXRhYmFzZSwgZXRjLikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dEZWZpbml0aW9uTG9hZGVyIHtcbiAgLyoqXG4gICAqIEdldCB3b3JrZmxvdyBkZWZpbml0aW9uIGJ5IG5hbWUgKHVuaXF1ZSBrZXkpLlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSB3b3JrZmxvdyBuYW1lICh1bmlxdWUga2V5KVxuICAgKiBAcmV0dXJucyBXb3JrZmxvdyBkZWZpbml0aW9uIG9yIG51bGwgaWYgbm90IGZvdW5kXG4gICAqL1xuICBnZXQobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBXb3JrZmxvd0RlZmluaXRpb24gfCBudWxsPjtcblxuICAvKipcbiAgICogR2V0IGFsbCBhdmFpbGFibGUgd29ya2Zsb3cgbmFtZXMuXG4gICAqIFVzZWQgZm9yIHByZWxvYWRpbmcgYW5kIGRpc2NvdmVyeS5cbiAgICogQHJldHVybnMgQXJyYXkgb2Ygd29ya2Zsb3cgbmFtZXNcbiAgICovXG4gIGdldEFsbE5hbWVzPygpOiBQcm9taXNlPHN0cmluZ1tdPjtcbn1cblxuLyoqXG4gKiBXb3JrZmxvdyBkZWZpbml0aW9uIHByZWxvYWRlciBpbnRlcmZhY2UuXG4gKiBJbXBsZW1lbnQgdGhpcyB0byBwcm92aWRlIGEgbGlzdCBvZiB3b3JrZmxvdyBkZWZpbml0aW9ucyB0aGF0IHNob3VsZCBiZSBwcmVsb2FkZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dEZWZpbml0aW9uUHJlbG9hZGVyIHtcbiAgLyoqXG4gICAqIEdldCBsaXN0IG9mIHdvcmtmbG93IGRlZmluaXRpb24gSURzIHRvIHByZWxvYWQuXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIGRlZmluaXRpb24gSURzXG4gICAqL1xuICBwcmVsb2FkKCk6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3Igd29ya2Zsb3cgZGVmaW5pdGlvbiBsb2FkZXJzLlxuICogTXVsdGlwbGUgbG9hZGVycyBjYW4gYmUgcHJvdmlkZWQgKG11bHRpOiB0cnVlKS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFYUF9XT1JLRkxPV19ERUZJTklUSU9OX0xPQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBXb3JrZmxvd0RlZmluaXRpb25Mb2FkZXI+KFxuICAnQVhQX1dPUktGTE9XX0RFRklOSVRJT05fTE9BREVSJyxcbik7XG5cbi8qKlxuICogUmVzb2x2ZXIgc2VydmljZSBmb3Igd29ya2Zsb3cgZGVmaW5pdGlvbnMuXG4gKiBBZ2dyZWdhdGVzIGFsbCByZWdpc3RlcmVkIGxvYWRlcnMgYW5kIHJlc29sdmVzIHdvcmtmbG93IGRlZmluaXRpb25zLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYUFdvcmtmbG93RGVmaW5pdGlvblJlc29sdmVyIHtcbiAgcHJpdmF0ZSBsb2FkZXJzID0gaW5qZWN0KEFYUF9XT1JLRkxPV19ERUZJTklUSU9OX0xPQURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAvKipcbiAgICogR2V0IHdvcmtmbG93IGRlZmluaXRpb24gYnkgbmFtZSAodW5pcXVlIGtleSkuXG4gICAqIFRyaWVzIGFsbCByZWdpc3RlcmVkIGxvYWRlcnMgdW50aWwgb25lIHJldHVybnMgYSBkZWZpbml0aW9uLlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSB3b3JrZmxvdyBuYW1lICh1bmlxdWUga2V5KVxuICAgKiBAcmV0dXJucyBXb3JrZmxvdyBkZWZpbml0aW9uIG9yIG51bGwgaWYgbm90IGZvdW5kXG4gICAqL1xuICBhc3luYyBnZXQobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBXb3JrZmxvd0RlZmluaXRpb24gfCBudWxsPiB7XG4gICAgY29uc3QgbG9hZGVyQXJyYXkgPSBBcnJheS5pc0FycmF5KHRoaXMubG9hZGVycykgPyB0aGlzLmxvYWRlcnMgOiB0aGlzLmxvYWRlcnMgPyBbdGhpcy5sb2FkZXJzXSA6IFtdO1xuXG4gICAgZm9yIChjb25zdCBsb2FkZXIgb2YgbG9hZGVyQXJyYXkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRlZmluaXRpb24gPSBhd2FpdCBsb2FkZXIuZ2V0KG5hbWUpO1xuICAgICAgICBpZiAoZGVmaW5pdGlvbikge1xuICAgICAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLndhcm4oYFtBWFBXb3JrZmxvd0RlZmluaXRpb25SZXNvbHZlcl0gTG9hZGVyIGZhaWxlZCBmb3IgJHtuYW1lfTpgLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBhdmFpbGFibGUgd29ya2Zsb3cgbmFtZXMgZnJvbSBhbGwgbG9hZGVycy5cbiAgICogQHJldHVybnMgQXJyYXkgb2YgdW5pcXVlIHdvcmtmbG93IG5hbWVzXG4gICAqL1xuICBhc3luYyBnZXRBbGxOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgbG9hZGVyQXJyYXkgPSBBcnJheS5pc0FycmF5KHRoaXMubG9hZGVycykgPyB0aGlzLmxvYWRlcnMgOiB0aGlzLmxvYWRlcnMgPyBbdGhpcy5sb2FkZXJzXSA6IFtdO1xuICAgIGNvbnN0IGFsbE5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGxvYWRlciBvZiBsb2FkZXJBcnJheSkge1xuICAgICAgaWYgKGxvYWRlci5nZXRBbGxOYW1lcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG5hbWVzID0gYXdhaXQgbG9hZGVyLmdldEFsbE5hbWVzKCk7XG4gICAgICAgICAgbmFtZXMuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiBhbGxOYW1lcy5hZGQobmFtZSkpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybignW0FYUFdvcmtmbG93RGVmaW5pdGlvblJlc29sdmVyXSBGYWlsZWQgdG8gZ2V0IG5hbWVzIGZyb20gbG9hZGVyOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5mcm9tKGFsbE5hbWVzKTtcbiAgfVxufVxuXG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXPWorkflowDefinitionResolver } from './workflow-definition.config';\nimport * as i0 from \"@angular/core\";\n/**\n * Registry service for workflow definitions.\n * Caches loaded definitions and provides change notifications.\n */\nexport class AXPWorkflowDefinitionRegistryService {\n constructor() {\n this.resolver = inject(AXPWorkflowDefinitionResolver);\n this.cache = new Map();\n this.onChanged = new Subject();\n }\n /**\n * Observable for workflow definition changes.\n */\n get onChanged$() {\n return this.onChanged.asObservable();\n }\n /**\n * Get workflow definition by name (unique key).\n * Uses cache if available, otherwise loads from resolver.\n * @param name - The workflow name (unique key)\n * @returns Workflow definition or null if not found\n */\n async get(name) {\n // Check cache first\n if (this.cache.has(name)) {\n return this.cache.get(name);\n }\n // Load from resolver\n const definition = await this.resolver.get(name);\n if (definition) {\n this.cache.set(name, definition);\n this.onChanged.next({ name, action: 'registered' });\n }\n return definition;\n }\n /**\n * Register a workflow definition in the cache.\n * @param definition - The workflow definition to register\n */\n register(definition) {\n this.cache.set(definition.name, definition);\n this.onChanged.next({ name: definition.name, action: 'registered' });\n }\n /**\n * Update a workflow definition in the cache.\n * @param definition - The updated workflow definition\n */\n update(definition) {\n if (this.cache.has(definition.name)) {\n this.cache.set(definition.name, definition);\n this.onChanged.next({ name: definition.name, action: 'updated' });\n }\n }\n /**\n * Remove a workflow definition from the cache.\n * @param name - The workflow name to remove\n */\n remove(name) {\n if (this.cache.has(name)) {\n this.cache.delete(name);\n this.onChanged.next({ name, action: 'removed' });\n }\n }\n /**\n * Clear all cached workflow definitions.\n */\n clear() {\n this.cache.clear();\n }\n /**\n * Check if a workflow definition is cached.\n * @param definitionId - The workflow definition ID\n * @returns True if cached, false otherwise\n */\n has(definitionId) {\n return this.cache.has(definitionId);\n }\n /**\n * Get all cached workflow definition IDs.\n * @returns Array of definition IDs (only those that have been loaded)\n */\n getAllIds() {\n return Array.from(this.cache.keys());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowDefinitionRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowDefinitionRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowDefinitionRegistryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGVmaW5pdGlvbi1yZWdpc3RyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2VuZ2luZS93b3JrZmxvdy1kZWZpbml0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFN0U7OztHQUdHO0FBSUgsTUFBTSxPQUFPLG9DQUFvQztJQUhqRDtRQUlVLGFBQVEsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNqRCxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7UUFDakQsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFrRSxDQUFDO0tBcUZuRztJQW5GQzs7T0FFRztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQVk7UUFDcEIsb0JBQW9CO1FBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDO1FBQy9CLENBQUM7UUFFRCxxQkFBcUI7UUFDckIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLFVBQWlDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFVBQWlDO1FBQ3RDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLElBQVk7UUFDakIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxZQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDOytHQXZGVSxvQ0FBb0M7bUhBQXBDLG9DQUFvQyxjQUZuQyxNQUFNOzs0RkFFUCxvQ0FBb0M7a0JBSGhELFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd0RlZmluaXRpb24gfSBmcm9tICcuL3dvcmtmbG93LWRlZmluaXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dEZWZpbml0aW9uUmVzb2x2ZXIgfSBmcm9tICcuL3dvcmtmbG93LWRlZmluaXRpb24uY29uZmlnJztcblxuLyoqXG4gKiBSZWdpc3RyeSBzZXJ2aWNlIGZvciB3b3JrZmxvdyBkZWZpbml0aW9ucy5cbiAqIENhY2hlcyBsb2FkZWQgZGVmaW5pdGlvbnMgYW5kIHByb3ZpZGVzIGNoYW5nZSBub3RpZmljYXRpb25zLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV29ya2Zsb3dEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZXNvbHZlciA9IGluamVjdChBWFBXb3JrZmxvd0RlZmluaXRpb25SZXNvbHZlcik7XG4gIHByaXZhdGUgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQVhQV29ya2Zsb3dEZWZpbml0aW9uPigpO1xuICBwcml2YXRlIG9uQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PHsgbmFtZTogc3RyaW5nOyBhY3Rpb246ICdyZWdpc3RlcmVkJyB8ICd1cGRhdGVkJyB8ICdyZW1vdmVkJyB9PigpO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIGZvciB3b3JrZmxvdyBkZWZpbml0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBnZXQgb25DaGFuZ2VkJCgpIHtcbiAgICByZXR1cm4gdGhpcy5vbkNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHdvcmtmbG93IGRlZmluaXRpb24gYnkgbmFtZSAodW5pcXVlIGtleSkuXG4gICAqIFVzZXMgY2FjaGUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgbG9hZHMgZnJvbSByZXNvbHZlci5cbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgd29ya2Zsb3cgbmFtZSAodW5pcXVlIGtleSlcbiAgICogQHJldHVybnMgV29ya2Zsb3cgZGVmaW5pdGlvbiBvciBudWxsIGlmIG5vdCBmb3VuZFxuICAgKi9cbiAgYXN5bmMgZ2V0KG5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQV29ya2Zsb3dEZWZpbml0aW9uIHwgbnVsbD4ge1xuICAgIC8vIENoZWNrIGNhY2hlIGZpcnN0XG4gICAgaWYgKHRoaXMuY2FjaGUuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZS5nZXQobmFtZSkhO1xuICAgIH1cblxuICAgIC8vIExvYWQgZnJvbSByZXNvbHZlclxuICAgIGNvbnN0IGRlZmluaXRpb24gPSBhd2FpdCB0aGlzLnJlc29sdmVyLmdldChuYW1lKTtcbiAgICBpZiAoZGVmaW5pdGlvbikge1xuICAgICAgdGhpcy5jYWNoZS5zZXQobmFtZSwgZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLm9uQ2hhbmdlZC5uZXh0KHsgbmFtZSwgYWN0aW9uOiAncmVnaXN0ZXJlZCcgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSB3b3JrZmxvdyBkZWZpbml0aW9uIGluIHRoZSBjYWNoZS5cbiAgICogQHBhcmFtIGRlZmluaXRpb24gLSBUaGUgd29ya2Zsb3cgZGVmaW5pdGlvbiB0byByZWdpc3RlclxuICAgKi9cbiAgcmVnaXN0ZXIoZGVmaW5pdGlvbjogQVhQV29ya2Zsb3dEZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5zZXQoZGVmaW5pdGlvbi5uYW1lLCBkZWZpbml0aW9uKTtcbiAgICB0aGlzLm9uQ2hhbmdlZC5uZXh0KHsgbmFtZTogZGVmaW5pdGlvbi5uYW1lLCBhY3Rpb246ICdyZWdpc3RlcmVkJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYSB3b3JrZmxvdyBkZWZpbml0aW9uIGluIHRoZSBjYWNoZS5cbiAgICogQHBhcmFtIGRlZmluaXRpb24gLSBUaGUgdXBkYXRlZCB3b3JrZmxvdyBkZWZpbml0aW9uXG4gICAqL1xuICB1cGRhdGUoZGVmaW5pdGlvbjogQVhQV29ya2Zsb3dEZWZpbml0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FjaGUuaGFzKGRlZmluaXRpb24ubmFtZSkpIHtcbiAgICAgIHRoaXMuY2FjaGUuc2V0KGRlZmluaXRpb24ubmFtZSwgZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLm9uQ2hhbmdlZC5uZXh0KHsgbmFtZTogZGVmaW5pdGlvbi5uYW1lLCBhY3Rpb246ICd1cGRhdGVkJyB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgd29ya2Zsb3cgZGVmaW5pdGlvbiBmcm9tIHRoZSBjYWNoZS5cbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgd29ya2Zsb3cgbmFtZSB0byByZW1vdmVcbiAgICovXG4gIHJlbW92ZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYWNoZS5oYXMobmFtZSkpIHtcbiAgICAgIHRoaXMuY2FjaGUuZGVsZXRlKG5hbWUpO1xuICAgICAgdGhpcy5vbkNoYW5nZWQubmV4dCh7IG5hbWUsIGFjdGlvbjogJ3JlbW92ZWQnIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgY2FjaGVkIHdvcmtmbG93IGRlZmluaXRpb25zLlxuICAgKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgd29ya2Zsb3cgZGVmaW5pdGlvbiBpcyBjYWNoZWQuXG4gICAqIEBwYXJhbSBkZWZpbml0aW9uSWQgLSBUaGUgd29ya2Zsb3cgZGVmaW5pdGlvbiBJRFxuICAgKiBAcmV0dXJucyBUcnVlIGlmIGNhY2hlZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBoYXMoZGVmaW5pdGlvbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZS5oYXMoZGVmaW5pdGlvbklkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGNhY2hlZCB3b3JrZmxvdyBkZWZpbml0aW9uIElEcy5cbiAgICogQHJldHVybnMgQXJyYXkgb2YgZGVmaW5pdGlvbiBJRHMgKG9ubHkgdGhvc2UgdGhhdCBoYXZlIGJlZW4gbG9hZGVkKVxuICAgKi9cbiAgZ2V0QWxsSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNhY2hlLmtleXMoKSk7XG4gIH1cbn1cblxuIl19","// ============================================\n// WORKFLOW INSTANCE v3.0.0 TYPES\n// Based on Elsa Workflow Instance schema: https://elsaworkflows.io/schemas/workflow-instance/v3.0.0/schema.json\n// Compatible with Elsa backend while using ACoreX naming conventions\n// ============================================\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctaW5zdGFuY2UudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL3dvcmtmbG93LWluc3RhbmNlLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxpQ0FBaUM7QUFDakMsZ0hBQWdIO0FBQ2hILHFFQUFxRTtBQUNyRSwrQ0FBK0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gV09SS0ZMT1cgSU5TVEFOQ0UgdjMuMC4wIFRZUEVTXG4vLyBCYXNlZCBvbiBFbHNhIFdvcmtmbG93IEluc3RhbmNlIHNjaGVtYTogaHR0cHM6Ly9lbHNhd29ya2Zsb3dzLmlvL3NjaGVtYXMvd29ya2Zsb3ctaW5zdGFuY2UvdjMuMC4wL3NjaGVtYS5qc29uXG4vLyBDb21wYXRpYmxlIHdpdGggRWxzYSBiYWNrZW5kIHdoaWxlIHVzaW5nIEFDb3JlWCBuYW1pbmcgY29udmVudGlvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogV29ya2Zsb3cgc3RhdHVzLlxuICovXG5leHBvcnQgdHlwZSBBWFBXb3JrZmxvd1N0YXR1cyA9ICdSdW5uaW5nJyB8ICdGaW5pc2hlZCc7XG5cbi8qKlxuICogV29ya2Zsb3cgc3ViLXN0YXR1cy5cbiAqL1xuZXhwb3J0IHR5cGUgQVhQV29ya2Zsb3dTdWJTdGF0dXMgPSAnUGVuZGluZycgfCAnRXhlY3V0aW5nJyB8ICdTdXNwZW5kZWQnIHwgJ0ZpbmlzaGVkJyB8ICdDYW5jZWxsZWQnIHwgJ0ZhdWx0ZWQnO1xuXG4vKipcbiAqIEFjdGl2aXR5IHN0YXR1cy5cbiAqL1xuZXhwb3J0IHR5cGUgQVhQQWN0aXZpdHlTdGF0dXMgPSAnUnVubmluZycgfCAnQ29tcGxldGVkJyB8ICdDYW5jZWxlZCcgfCAnRmF1bHRlZCc7XG5cbi8qKlxuICogRXhjZXB0aW9uIHN0YXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUEV4Y2VwdGlvblN0YXRlIHtcbiAgLyoqXG4gICAqIEV4Y2VwdGlvbiB0eXBlIG5hbWUuXG4gICAqL1xuICB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4Y2VwdGlvbiBtZXNzYWdlLlxuICAgKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdGFjayB0cmFjZSAobnVsbGFibGUpLlxuICAgKi9cbiAgc3RhY2tUcmFjZT86IHN0cmluZyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIElubmVyIGV4Y2VwdGlvbiAobnVsbGFibGUpLlxuICAgKi9cbiAgaW5uZXJFeGNlcHRpb24/OiBBWFBFeGNlcHRpb25TdGF0ZSB8IG51bGw7XG59XG5cbi8qKlxuICogQWN0aXZpdHkgaW5jaWRlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQWN0aXZpdHlJbmNpZGVudCB7XG4gIC8qKlxuICAgKiBBY3Rpdml0eSBJRCB0aGF0IGNhdXNlZCB0aGUgaW5jaWRlbnQuXG4gICAqL1xuICBhY3Rpdml0eUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFjdGl2aXR5IG5vZGUgSUQuXG4gICAqL1xuICBhY3Rpdml0eU5vZGVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY3Rpdml0eSB0eXBlLlxuICAgKi9cbiAgYWN0aXZpdHlUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluY2lkZW50IG1lc3NhZ2UuXG4gICAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4Y2VwdGlvbiAobnVsbGFibGUpLlxuICAgKi9cbiAgZXhjZXB0aW9uPzogQVhQRXhjZXB0aW9uU3RhdGUgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgKElTTyBkYXRlLXRpbWUpLlxuICAgKi9cbiAgdGltZXN0YW1wOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV29ya2Zsb3cgZmF1bHQgc3RhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dGYXVsdFN0YXRlIHtcbiAgLyoqXG4gICAqIEV4Y2VwdGlvbiAobnVsbGFibGUpLlxuICAgKi9cbiAgZXhjZXB0aW9uPzogQVhQRXhjZXB0aW9uU3RhdGUgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBGYXVsdCBtZXNzYWdlLlxuICAgKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGYXVsdGVkIGFjdGl2aXR5IElEIChudWxsYWJsZSkuXG4gICAqL1xuICBmYXVsdGVkQWN0aXZpdHlJZD86IHN0cmluZyB8IG51bGw7XG59XG5cbi8qKlxuICogQm9va21hcmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQm9va21hcmsge1xuICAvKipcbiAgICogQm9va21hcmsgSUQuXG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb29rbWFyayBuYW1lLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb29rbWFyayBoYXNoLlxuICAgKi9cbiAgaGFzaDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb29rbWFyayBwYXlsb2FkIChudWxsYWJsZSkuXG4gICAqL1xuICBwYXlsb2FkPzogYW55IHwgbnVsbDtcblxuICAvKipcbiAgICogQWN0aXZpdHkgbm9kZSBJRC5cbiAgICovXG4gIGFjdGl2aXR5Tm9kZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFjdGl2aXR5IGluc3RhbmNlIElELlxuICAgKi9cbiAgYWN0aXZpdHlJbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF1dG8gYnVybiBmbGFnLlxuICAgKi9cbiAgYXV0b0J1cm4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBtZXRob2QgbmFtZSAobnVsbGFibGUpLlxuICAgKi9cbiAgY2FsbGJhY2tNZXRob2ROYW1lPzogc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogTWV0YWRhdGEgKG51bGxhYmxlKS5cbiAgICovXG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGw7XG59XG5cbi8qKlxuICogQ29tcGxldGlvbiBjYWxsYmFjayBzdGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBDb21wbGV0aW9uQ2FsbGJhY2tTdGF0ZSB7XG4gIC8qKlxuICAgKiBPd25lciBhY3Rpdml0eSBpbnN0YW5jZSBJRC5cbiAgICovXG4gIG93bmVySW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDaGlsZCBhY3Rpdml0eSBub2RlIElELlxuICAgKi9cbiAgY2hpbGROb2RlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogTWV0aG9kIG5hbWUgKG51bGxhYmxlKS5cbiAgICovXG4gIG1ldGhvZE5hbWU/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKipcbiAqIFZhcmlhYmxlIChmb3IgYWN0aXZpdHkgY29udGV4dCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQWN0aXZpdHlWYXJpYWJsZSB7XG4gIC8qKlxuICAgKiBWYXJpYWJsZSBJRC5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhcmlhYmxlIG5hbWUuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgbmFtZS5cbiAgICovXG4gIHR5cGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElzIGFycmF5IGZsYWcuXG4gICAqL1xuICBpc0FycmF5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmFyaWFibGUgdmFsdWUgKG51bGxhYmxlKS5cbiAgICovXG4gIHZhbHVlPzogYW55IHwgbnVsbDtcblxuICAvKipcbiAgICogU3RvcmFnZSBkcml2ZXIgdHlwZSBuYW1lIChudWxsYWJsZSkuXG4gICAqL1xuICBzdG9yYWdlRHJpdmVyVHlwZU5hbWU/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKipcbiAqIEFjdGl2aXR5IGV4ZWN1dGlvbiBjb250ZXh0IHN0YXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUEFjdGl2aXR5RXhlY3V0aW9uQ29udGV4dFN0YXRlIHtcbiAgLyoqXG4gICAqIENvbnRleHQgSUQgKGFjdGl2aXR5IGluc3RhbmNlIElEKS5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhcmVudCBjb250ZXh0IElEIChudWxsYWJsZSkuXG4gICAqL1xuICBwYXJlbnRDb250ZXh0SWQ/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBTY2hlZHVsZWQgYWN0aXZpdHkgbm9kZSBJRC5cbiAgICovXG4gIHNjaGVkdWxlZEFjdGl2aXR5Tm9kZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE93bmVyIGFjdGl2aXR5IG5vZGUgSUQgKG51bGxhYmxlKS5cbiAgICovXG4gIG93bmVyQWN0aXZpdHlOb2RlSWQ/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBQcm9wZXJ0aWVzIGJhZy5cbiAgICovXG4gIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIEFjdGl2aXR5IHN0YXRlIChldmFsdWF0ZWQgcHJvcGVydGllcykgKG51bGxhYmxlKS5cbiAgICovXG4gIGFjdGl2aXR5U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbDtcblxuICAvKipcbiAgICogRHluYW1pYyB2YXJpYWJsZXMuXG4gICAqL1xuICBkeW5hbWljVmFyaWFibGVzOiBBWFBBY3Rpdml0eVZhcmlhYmxlW107XG5cbiAgLyoqXG4gICAqIEFjdGl2aXR5IHN0YXR1cy5cbiAgICovXG4gIHN0YXR1czogQVhQQWN0aXZpdHlTdGF0dXM7XG5cbiAgLyoqXG4gICAqIElzIGV4ZWN1dGluZyBmbGFnLlxuICAgKi9cbiAgaXNFeGVjdXRpbmc6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZhdWx0IGNvdW50LlxuICAgKi9cbiAgZmF1bHRDb3VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTdGFydGVkIGF0IHRpbWVzdGFtcCAoSVNPIGRhdGUtdGltZSkuXG4gICAqL1xuICBzdGFydGVkQXQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ29tcGxldGVkIGF0IHRpbWVzdGFtcCAoSVNPIGRhdGUtdGltZSwgbnVsbGFibGUpLlxuICAgKi9cbiAgY29tcGxldGVkQXQ/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUYWcgKG51bGxhYmxlKS5cbiAgICovXG4gIHRhZz86IGFueSB8IG51bGw7XG59XG5cbi8qKlxuICogV29ya2Zsb3cgc3RhdGUgKGludGVybmFsIGV4ZWN1dGlvbiBzdGF0ZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dTdGF0ZSB7XG4gIC8qKlxuICAgKiBTdGF0ZSBJRC5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IGRlZmluaXRpb24gSUQuXG4gICAqL1xuICBkZWZpbml0aW9uSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogV29ya2Zsb3cgZGVmaW5pdGlvbiB2ZXJzaW9uLlxuICAgKi9cbiAgZGVmaW5pdGlvblZlcnNpb246IG51bWJlcjtcblxuICAvKipcbiAgICogQ29ycmVsYXRpb24gSUQgKG51bGxhYmxlKS5cbiAgICovXG4gIGNvcnJlbGF0aW9uSWQ/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBXb3JrZmxvdyBzdGF0dXMuXG4gICAqL1xuICBzdGF0dXM6IEFYUFdvcmtmbG93U3RhdHVzO1xuXG4gIC8qKlxuICAgKiBXb3JrZmxvdyBzdWItc3RhdHVzLlxuICAgKi9cbiAgc3ViU3RhdHVzOiBBWFBXb3JrZmxvd1N1YlN0YXR1cztcblxuICAvKipcbiAgICogQm9va21hcmtzLlxuICAgKi9cbiAgYm9va21hcmtzOiBBWFBCb29rbWFya1tdO1xuXG4gIC8qKlxuICAgKiBJbmNpZGVudHMuXG4gICAqL1xuICBpbmNpZGVudHM6IEFYUEFjdGl2aXR5SW5jaWRlbnRbXTtcblxuICAvKipcbiAgICogRmF1bHQgKG51bGxhYmxlKS5cbiAgICovXG4gIGZhdWx0PzogQVhQV29ya2Zsb3dGYXVsdFN0YXRlIHwgbnVsbDtcblxuICAvKipcbiAgICogQ29tcGxldGlvbiBjYWxsYmFja3MuXG4gICAqL1xuICBjb21wbGV0aW9uQ2FsbGJhY2tzOiBBWFBDb21wbGV0aW9uQ2FsbGJhY2tTdGF0ZVtdO1xuXG4gIC8qKlxuICAgKiBBY3Rpdml0eSBleGVjdXRpb24gY29udGV4dHMuXG4gICAqL1xuICBhY3Rpdml0eUV4ZWN1dGlvbkNvbnRleHRzOiBBWFBBY3Rpdml0eUV4ZWN1dGlvbkNvbnRleHRTdGF0ZVtdO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBkYXRhLlxuICAgKi9cbiAgaW5wdXQ6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIE91dHB1dCBkYXRhLlxuICAgKi9cbiAgb3V0cHV0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8qKlxuICAgKiBQcm9wZXJ0aWVzIGJhZy5cbiAgICovXG4gIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIENyZWF0ZWQgYXQgdGltZXN0YW1wIChJU08gZGF0ZS10aW1lKS5cbiAgICovXG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcGRhdGVkIGF0IHRpbWVzdGFtcCAoSVNPIGRhdGUtdGltZSkuXG4gICAqL1xuICB1cGRhdGVkQXQ6IHN0cmluZztcblxuICAvKipcbiAgICogRmluaXNoZWQgYXQgdGltZXN0YW1wIChJU08gZGF0ZS10aW1lLCBudWxsYWJsZSkuXG4gICAqL1xuICBmaW5pc2hlZEF0Pzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBXb3JrZmxvdyBpbnN0YW5jZSAoc3RvcmVkIGluIGRhdGFiYXNlKS5cbiAqIFRoaXMgbWF0Y2hlcyB0aGUgRWxzYSBXb3JrZmxvdyBJbnN0YW5jZSBzY2hlbWEgZm9yIGJhY2tlbmQgY29tcGF0aWJpbGl0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBXb3JrZmxvd0luc3RhbmNlIHtcbiAgLyoqXG4gICAqIFNjaGVtYSByZWZlcmVuY2UuXG4gICAqL1xuICAkc2NoZW1hPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgaW5zdGFuY2UgSUQuXG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXb3JrZmxvdyBkZWZpbml0aW9uIElELlxuICAgKi9cbiAgZGVmaW5pdGlvbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IGRlZmluaXRpb24gdmVyc2lvbiBJRC5cbiAgICovXG4gIGRlZmluaXRpb25WZXJzaW9uSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogV29ya2Zsb3cgZGVmaW5pdGlvbiB2ZXJzaW9uIG51bWJlci5cbiAgICovXG4gIHZlcnNpb246IG51bWJlcjtcblxuICAvKipcbiAgICogUGFyZW50IHdvcmtmbG93IGluc3RhbmNlIElEIChudWxsYWJsZSwgZm9yIGNoaWxkIHdvcmtmbG93cykuXG4gICAqL1xuICBwYXJlbnRXb3JrZmxvd0luc3RhbmNlSWQ/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBXb3JrZmxvdyBzdGF0ZSAoaW50ZXJuYWwgZXhlY3V0aW9uIHN0YXRlKS5cbiAgICovXG4gIHdvcmtmbG93U3RhdGU6IEFYUFdvcmtmbG93U3RhdGU7XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IHN0YXR1cy5cbiAgICovXG4gIHN0YXR1czogQVhQV29ya2Zsb3dTdGF0dXM7XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IHN1Yi1zdGF0dXMuXG4gICAqL1xuICBzdWJTdGF0dXM6IEFYUFdvcmtmbG93U3ViU3RhdHVzO1xuXG4gIC8qKlxuICAgKiBDb3JyZWxhdGlvbiBJRCAobnVsbGFibGUpLlxuICAgKi9cbiAgY29ycmVsYXRpb25JZD86IHN0cmluZyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEluc3RhbmNlIG5hbWUgKG51bGxhYmxlKS5cbiAgICovXG4gIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBJbmNpZGVudCBjb3VudC5cbiAgICovXG4gIGluY2lkZW50Q291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQ3JlYXRlZCBhdCB0aW1lc3RhbXAgKElTTyBkYXRlLXRpbWUpLlxuICAgKi9cbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZWQgYXQgdGltZXN0YW1wIChJU08gZGF0ZS10aW1lKS5cbiAgICovXG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaW5pc2hlZCBhdCB0aW1lc3RhbXAgKElTTyBkYXRlLXRpbWUsIG51bGxhYmxlKS5cbiAgICovXG4gIGZpbmlzaGVkQXQ/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4iXX0=","/**\n * Base abstract class for activities.\n * Extend this to create custom activities.\n */\nexport class Activity {\n constructor(type, name) {\n this.type = type;\n this.name = name;\n }\n /**\n * Helper method that returns Done outcome by default.\n */\n createResult(output, outcome = 'Done') {\n return {\n success: true,\n data: {\n output,\n outcomes: { [outcome]: true },\n },\n };\n }\n}\n/**\n * Activity registry for registering and creating activities.\n */\nexport class ActivityRegistry {\n constructor() {\n this.registry = new Map();\n this.descriptors = new Map();\n }\n /**\n * Register an activity type.\n */\n register(type, factory, descriptor) {\n this.registry.set(type, factory);\n this.descriptors.set(type, descriptor);\n }\n /**\n * Create an activity instance.\n */\n create(type) {\n const factory = this.registry.get(type);\n if (!factory) {\n throw new Error(`Unknown activity type: ${type}`);\n }\n return factory();\n }\n /**\n * Get activity descriptor.\n */\n getDescriptor(type) {\n return this.descriptors.get(type);\n }\n /**\n * Get all registered types.\n */\n getTypes() {\n return Array.from(this.registry.keys());\n }\n /**\n * Get all descriptors.\n */\n getAllDescriptors() {\n return Array.from(this.descriptors.values());\n }\n /**\n * Get descriptors by category.\n */\n getDescriptorsByCategory(category) {\n return this.getAllDescriptors().filter(d => d.category === category);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXR5LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdDQTs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLFFBQVE7SUFJNUIsWUFBWSxJQUFZLEVBQUUsSUFBYTtRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBUUQ7O09BRUc7SUFDTyxZQUFZLENBQ3BCLE1BQWUsRUFDZixVQUFrQixNQUFNO1FBRXhCLE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSTtZQUNiLElBQUksRUFBRTtnQkFDSixNQUFNO2dCQUNOLFFBQVEsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFO2FBQzlCO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXFHRDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFBN0I7UUFDVSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7UUFDOUMsZ0JBQVcsR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztJQW9EOUQsQ0FBQztJQWxEQzs7T0FFRztJQUNILFFBQVEsQ0FDTixJQUFZLEVBQ1osT0FBd0IsRUFDeEIsVUFBOEI7UUFFOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsSUFBWTtRQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxPQUFPLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCO1FBQ2YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCx3QkFBd0IsQ0FBQyxRQUFnQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQQ29tbWFuZCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWVcIjtcbmltcG9ydCB7IEFYUEV4ZWN1dGVDb21tYW5kUmVzdWx0LCBBWFBWYWxpZGF0aW9uUnVsZXMgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9jb3JlXCI7XG5pbXBvcnQgeyBBWFBXaWRnZXRUeXBlc01hcCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZVwiO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0lNUExJRklFRCBBQ1RJVklUWSBTWVNURU1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZpdHlQcm9wZXJ0eVdpZGdldCB7XG4gIHR5cGU6IEFYUFdpZGdldFR5cGVzTWFwW2tleW9mIEFYUFdpZGdldFR5cGVzTWFwXSB8IHN0cmluZztcbiAgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbi8qKlxuICogU2ltcGxlIGFjdGl2aXR5IGludGVyZmFjZSAtIGp1c3QgYSBjb21tYW5kIHdpdGggb3V0Y29tZXMuXG4gKiBBbGwgYWN0aXZpdGllcyBhcmUgQVhQQ29tbWFuZCBmb3IgdW5pZmllZCBleGVjdXRpb24gdGhyb3VnaCBDb21tYW5kIEJ1cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQWN0aXZpdHk8VElucHV0ID0gYW55LCBUT3V0cHV0ID0gYW55PiBleHRlbmRzIEFYUENvbW1hbmQ8VElucHV0LCB7XG4gIG91dHB1dDogVE91dHB1dDtcbiAgb3V0Y29tZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG59PiB7XG4gIC8qKlxuICAgKiBBY3Rpdml0eSB0eXBlIG5hbWUuXG4gICAqIEV4YW1wbGU6IFwiV3JpdGVMaW5lXCIsIFwiU2hvd0RpYWxvZ1wiLCBcIkNyZWF0ZVVzZXJDb21tYW5kXCJcbiAgICovXG4gIHR5cGU6IHN0cmluZztcbiAgXG4gIC8qKlxuICAgKiBEaXNwbGF5IG5hbWUgZm9yIFVJLlxuICAgKi9cbiAgbmFtZT86IHN0cmluZztcbiAgXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBhY3Rpdml0eSBhcyBhIGNvbW1hbmQuXG4gICAqIEBwYXJhbSBpbnB1dCAtIEFjdGl2aXR5IGlucHV0IGRhdGFcbiAgICogQHJldHVybnMgUHJvbWlzZSB3aXRoIG91dHB1dCBhbmQgb3V0Y29tZXNcbiAgICovXG4gIGV4ZWN1dGUoaW5wdXQ6IFRJbnB1dCk6IFByb21pc2U8QVhQRXhlY3V0ZUNvbW1hbmRSZXN1bHQ8eyBvdXRwdXQ6IFRPdXRwdXQ7IG91dGNvbWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0+Pjtcbn1cblxuLyoqXG4gKiBCYXNlIGFic3RyYWN0IGNsYXNzIGZvciBhY3Rpdml0aWVzLlxuICogRXh0ZW5kIHRoaXMgdG8gY3JlYXRlIGN1c3RvbSBhY3Rpdml0aWVzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWN0aXZpdHk8VElucHV0ID0gYW55LCBUT3V0cHV0ID0gYW55PiBpbXBsZW1lbnRzIElBY3Rpdml0eTxUSW5wdXQsIFRPdXRwdXQ+IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IHN0cmluZywgbmFtZT86IHN0cmluZykge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBhY3Rpdml0eSBhcyBhIGNvbW1hbmQuXG4gICAqIE92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHN1YmNsYXNzZXMgdG8gaW1wbGVtZW50IGFjdGl2aXR5IGxvZ2ljLlxuICAgKi9cbiAgYWJzdHJhY3QgZXhlY3V0ZShpbnB1dDogVElucHV0KTogUHJvbWlzZTxBWFBFeGVjdXRlQ29tbWFuZFJlc3VsdDx7IG91dHB1dDogVE91dHB1dDsgb3V0Y29tZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gfT4+O1xuICBcbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdGhhdCByZXR1cm5zIERvbmUgb3V0Y29tZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVJlc3VsdChcbiAgICBvdXRwdXQ6IFRPdXRwdXQsXG4gICAgb3V0Y29tZTogc3RyaW5nID0gJ0RvbmUnLFxuICApOiBBWFBFeGVjdXRlQ29tbWFuZFJlc3VsdDx7IG91dHB1dDogVE91dHB1dDsgb3V0Y29tZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgZGF0YToge1xuICAgICAgICBvdXRwdXQsXG4gICAgICAgIG91dGNvbWVzOiB7IFtvdXRjb21lXTogdHJ1ZSB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQWN0aXZpdHkgZGVzY3JpcHRvciAtIG1ldGFkYXRhIGFib3V0IGFuIGFjdGl2aXR5IHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZpdHlEZXNjcmlwdG9yIHtcbiAgLyoqXG4gICAqIEFjdGl2aXR5IHR5cGUgbmFtZS5cbiAgICovXG4gIHR5cGU6IHN0cmluZztcbiAgXG4gIC8qKlxuICAgKiBEaXNwbGF5IG5hbWUgZm9yIFVJLlxuICAgKi9cbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBvZiB3aGF0IHRoZSBhY3Rpdml0eSBkb2VzLlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIFxuICAvKipcbiAgICogQ2F0ZWdvcnkgZm9yIGdyb3VwaW5nIGluIHRvb2xib3guXG4gICAqL1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBcbiAgLyoqXG4gICAqIEljb24gbmFtZSBvciBjbGFzcy5cbiAgICovXG4gIGljb24/OiBzdHJpbmc7XG4gIFxuICAvKipcbiAgICogV2hlcmUgdGhpcyBhY3Rpdml0eSBzaG91bGQgYmUgZXhlY3V0ZWQuXG4gICAqIC0gJ2Zyb250ZW5kJzogRXhlY3V0ZSBpbiBicm93c2VyIChVSSBhY3Rpdml0aWVzLCBjb25zb2xlLCBldmVudHMpXG4gICAqIC0gJ2JhY2tlbmQnOiBFeGVjdXRlIGluIGJhY2tlbmQgKGJ1c2luZXNzIGxvZ2ljLCBBUEkgY2FsbHMpXG4gICAqIC0gJ2JvdGgnOiBFeGVjdXRlIGluIGJvdGggZnJvbnRlbmQgYW5kIGJhY2tlbmQgKGh5YnJpZCBhY3Rpdml0aWVzKVxuICAgKiBcbiAgICogRGVmYXVsdDogJ2Zyb250ZW5kJ1xuICAgKi9cbiAgZXhlY3V0aW9uTW9kZT86ICdmcm9udGVuZCcgfCAnYmFja2VuZCcgfCAnYm90aCc7XG4gIFxuICAvKipcbiAgICogSW5wdXQgZGVzY3JpcHRvcnMuXG4gICAqL1xuICBpbnB1dHM6IElucHV0RGVzY3JpcHRvcltdO1xuICBcbiAgLyoqXG4gICAqIE91dHB1dCBkZXNjcmlwdG9ycy5cbiAgICovXG4gIG91dHB1dHM6IE91dHB1dERlc2NyaXB0b3JbXTtcbiAgXG4gIC8qKlxuICAgKiBTdGF0aWMgb3V0Y29tZXMgKGV4aXQgcG9pbnRzKS5cbiAgICogRXhhbXBsZTogWydEb25lJywgJ1N1Y2Nlc3MnLCAnRmFpbGVkJ11cbiAgICovXG4gIG91dGNvbWVzPzogc3RyaW5nW107XG4gIFxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGFjdGl2aXR5IGlzIGJyb3dzYWJsZSBpbiB0aGUgdG9vbGJveC5cbiAgICogRGVmYXVsdDogdHJ1ZVxuICAgKi9cbiAgaXNCcm93c2FibGU/OiBib29sZWFuO1xuICBcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBhY3Rpdml0eSBpcyBhIGNvbnRhaW5lciAoY2FuIGhhdmUgY2hpbGRyZW4pLlxuICAgKiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgaXNDb250YWluZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIElucHV0IHByb3BlcnR5IGRlc2NyaXB0b3IuXG4gKiBTaW1pbGFyIHRvIEFYUEVudGl0eVByb3BlcnR5IHN0cnVjdHVyZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dERlc2NyaXB0b3Ige1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBzY2hlbWE6IHtcbiAgICBkYXRhVHlwZTogc3RyaW5nO1xuICAgIG51bGxhYmxlPzogYm9vbGVhbjtcbiAgICByZWFkb25seT86IGJvb2xlYW47XG4gICAgaGlkZGVuPzogYm9vbGVhbiB8IHN0cmluZztcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnkgfCBzdHJpbmcgfCAoKGNvbnRleHQ6IGFueSB8IG51bGwpID0+IGFueSk7XG4gICAgaW50ZXJmYWNlPzogQWN0aXZpdHlQcm9wZXJ0eVdpZGdldDtcbiAgfTtcbiAgdmFsaWRhdGlvbnM/OiBBWFBWYWxpZGF0aW9uUnVsZXM7XG59XG5cbi8qKlxuICogT3V0cHV0IHByb3BlcnR5IGRlc2NyaXB0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RGVzY3JpcHRvciB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHNjaGVtYToge1xuICAgIGRhdGFUeXBlOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKlxuICogQWN0aXZpdHkgcmVnaXN0cnkgZm9yIHJlZ2lzdGVyaW5nIGFuZCBjcmVhdGluZyBhY3Rpdml0aWVzLlxuICovXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlSZWdpc3RyeSB7XG4gIHByaXZhdGUgcmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgKCkgPT4gSUFjdGl2aXR5PigpO1xuICBwcml2YXRlIGRlc2NyaXB0b3JzID0gbmV3IE1hcDxzdHJpbmcsIEFjdGl2aXR5RGVzY3JpcHRvcj4oKTtcblxuICAvKipcbiAgICogUmVnaXN0ZXIgYW4gYWN0aXZpdHkgdHlwZS5cbiAgICovXG4gIHJlZ2lzdGVyKFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBmYWN0b3J5OiAoKSA9PiBJQWN0aXZpdHksXG4gICAgZGVzY3JpcHRvcjogQWN0aXZpdHlEZXNjcmlwdG9yXG4gICk6IHZvaWQge1xuICAgIHRoaXMucmVnaXN0cnkuc2V0KHR5cGUsIGZhY3RvcnkpO1xuICAgIHRoaXMuZGVzY3JpcHRvcnMuc2V0KHR5cGUsIGRlc2NyaXB0b3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBhY3Rpdml0eSBpbnN0YW5jZS5cbiAgICovXG4gIGNyZWF0ZSh0eXBlOiBzdHJpbmcpOiBJQWN0aXZpdHkge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLnJlZ2lzdHJ5LmdldCh0eXBlKTtcbiAgICBpZiAoIWZhY3RvcnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBhY3Rpdml0eSB0eXBlOiAke3R5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiBmYWN0b3J5KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFjdGl2aXR5IGRlc2NyaXB0b3IuXG4gICAqL1xuICBnZXREZXNjcmlwdG9yKHR5cGU6IHN0cmluZyk6IEFjdGl2aXR5RGVzY3JpcHRvciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvcnMuZ2V0KHR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgcmVnaXN0ZXJlZCB0eXBlcy5cbiAgICovXG4gIGdldFR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnJlZ2lzdHJ5LmtleXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBkZXNjcmlwdG9ycy5cbiAgICovXG4gIGdldEFsbERlc2NyaXB0b3JzKCk6IEFjdGl2aXR5RGVzY3JpcHRvcltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmRlc2NyaXB0b3JzLnZhbHVlcygpKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCBkZXNjcmlwdG9ycyBieSBjYXRlZ29yeS5cbiAgICovXG4gIGdldERlc2NyaXB0b3JzQnlDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKTogQWN0aXZpdHlEZXNjcmlwdG9yW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbERlc2NyaXB0b3JzKCkuZmlsdGVyKGQgPT4gZC5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkpO1xuICB9XG59Il19","import { Injectable, inject, InjectionToken } from '@angular/core';\nimport { AXPCommandService, AXPCommandRegistry } from '@acorex/platform/runtime';\nimport * as i0 from \"@angular/core\";\n/**\n * Injection token for activity providers.\n */\nexport const AXP_ACTIVITY_PROVIDER = new InjectionToken('AXP_ACTIVITY_PROVIDER');\n/**\n * Activity Provider Service.\n * Collects all activity providers and manages activity registration.\n */\nexport class AXPActivityProviderService {\n constructor() {\n this.activityDescriptors = new Map();\n this.categories = [];\n this.providers = [];\n this.categoryProviders = [];\n this.initialized = false;\n this.commandService = inject(AXPCommandService);\n this.commandRegistry = inject(AXPCommandRegistry);\n }\n /**\n * Register an activity provider.\n */\n registerProvider(provider) {\n this.providers.push(provider);\n if (this.initialized) {\n this.initializeProvider(provider);\n }\n }\n /**\n * Register a category provider.\n */\n registerCategoryProvider(provider) {\n this.categoryProviders.push(provider);\n if (this.initialized) {\n this.initializeCategoryProvider(provider);\n }\n }\n /**\n * Initialize all providers.\n */\n async initialize() {\n if (this.initialized)\n return;\n // Initialize category providers first\n for (const provider of this.categoryProviders) {\n await this.initializeCategoryProvider(provider);\n }\n // Initialize activity providers\n for (const provider of this.providers) {\n await this.initializeProvider(provider);\n }\n this.initialized = true;\n }\n /**\n * Get activity descriptor by key.\n */\n getDescriptor(key) {\n return this.activityDescriptors.get(key);\n }\n /**\n * Get all activity descriptors.\n */\n getAllDescriptors() {\n return Array.from(this.activityDescriptors.values());\n }\n /**\n * Get descriptors by category.\n */\n getDescriptorsByCategory(category) {\n return this.getAllDescriptors().filter(d => d.category === category);\n }\n /**\n * Get all categories.\n */\n getCategories() {\n return [...this.categories].sort((a, b) => (a.order || 999) - (b.order || 999));\n }\n /**\n * Create an activity instance by key using AXPCommandService.\n */\n async createActivity(key) {\n try {\n // Check if command exists\n if (!this.commandService.exists(key)) {\n return null;\n }\n // Get command loader from registry\n const loader = this.commandRegistry.getLoader(key);\n if (!loader) {\n return null;\n }\n // Create command instance\n const command = await loader();\n return command;\n }\n catch (error) {\n return null;\n }\n }\n // ============================================\n // PRIVATE METHODS\n // ============================================\n async initializeProvider(provider) {\n const context = {\n registerActivity: (config) => {\n this.activityDescriptors.set(config.key, config.descriptor);\n }\n };\n await provider.provide(context);\n }\n async initializeCategoryProvider(provider) {\n const context = {\n registerCategories: (categories) => {\n this.categories.push(...categories);\n }\n };\n await provider.provide(context);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityProviderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityProviderService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktcHJvdmlkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi9lbmdpbmUvYWN0aXZpdHktcHJvdmlkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBK0JqRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUF3Qix1QkFBdUIsQ0FBQyxDQUFDO0FBaUJ4Rzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sMEJBQTBCO0lBSHZDO1FBSVUsd0JBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDNUQsZUFBVSxHQUF1QixFQUFFLENBQUM7UUFDcEMsY0FBUyxHQUEwQixFQUFFLENBQUM7UUFDdEMsc0JBQWlCLEdBQWtDLEVBQUUsQ0FBQztRQUN0RCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNYLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0Msb0JBQWUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQW9IL0Q7SUFsSEM7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxRQUE2QjtRQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILHdCQUF3QixDQUFDLFFBQXFDO1FBQzVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNkLElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBRTdCLHNDQUFzQztRQUN0QyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzlDLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxnQ0FBZ0M7UUFDaEMsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUI7UUFDZixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsd0JBQXdCLENBQUMsUUFBZ0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBVztRQUM5QixJQUFJLENBQUM7WUFDSCwwQkFBMEI7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELG1DQUFtQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1osT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsMEJBQTBCO1lBQzFCLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxFQUFFLENBQUM7WUFDL0IsT0FBTyxPQUFvQixDQUFDO1FBQzlCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELCtDQUErQztJQUMvQyxrQkFBa0I7SUFDbEIsK0NBQStDO0lBRXZDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUE2QjtRQUM1RCxNQUFNLE9BQU8sR0FBK0I7WUFDMUMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5RCxDQUFDO1NBQ0YsQ0FBQztRQUVGLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sS0FBSyxDQUFDLDBCQUEwQixDQUFDLFFBQXFDO1FBQzVFLE1BQU0sT0FBTyxHQUF1QztZQUNsRCxrQkFBa0IsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7U0FDRixDQUFDO1FBRUYsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7K0dBMUhVLDBCQUEwQjttSEFBMUIsMEJBQTBCLGNBRnpCLE1BQU07OzRGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBBY3Rpdml0eUNhdGVnb3J5UHJvdmlkZXIsIEFYUEFjdGl2aXR5Q2F0ZWdvcnlQcm92aWRlckNvbnRleHQgfSBmcm9tICcuL2FjdGl2aXR5LWNhdGVnb3J5LnByb3ZpZGVyJztcbmltcG9ydCB7IEFYUENvbW1hbmRTZXJ2aWNlLCBBWFBDb21tYW5kUmVnaXN0cnkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgQWN0aXZpdHlEZXNjcmlwdG9yLCBJQWN0aXZpdHkgfSBmcm9tICcuL2FjdGl2aXR5LnR5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElWSVRZIFBST1ZJREVSIFBBVFRFUk4gKEluZnJhc3RydWN0dXJlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb250ZXh0IGZvciByZWdpc3RlcmluZyBhY3Rpdml0aWVzIGluIGEgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQWN0aXZpdHlQcm92aWRlckNvbnRleHQge1xuICAvKipcbiAgICogUmVnaXN0ZXIgYW4gYWN0aXZpdHkgd2l0aCBpdHMgZGVzY3JpcHRvci5cbiAgICovXG4gIHJlZ2lzdGVyQWN0aXZpdHkoY29uZmlnOiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRvcjogQWN0aXZpdHlEZXNjcmlwdG9yO1xuICB9KTogdm9pZDtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIGFjdGl2aXR5IHByb3ZpZGVycy5cbiAqIE1vZHVsZXMgaW1wbGVtZW50IHRoaXMgdG8gcmVnaXN0ZXIgdGhlaXIgYWN0aXZpdGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBBY3Rpdml0eVByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIFByb3ZpZGUgYWN0aXZpdGllcyB0byB0aGUgc3lzdGVtLlxuICAgKi9cbiAgcHJvdmlkZShjb250ZXh0OiBBWFBBY3Rpdml0eVByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4gfCB2b2lkO1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgYWN0aXZpdHkgcHJvdmlkZXJzLlxuICovXG5leHBvcnQgY29uc3QgQVhQX0FDVElWSVRZX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUEFjdGl2aXR5UHJvdmlkZXJbXT4oJ0FYUF9BQ1RJVklUWV9QUk9WSURFUicpO1xuXG4vKipcbiAqIENhdGVnb3J5IGRlZmluaXRpb24gZm9yIGFjdGl2aXR5IGNhdGVnb3JpemF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5Q2F0ZWdvcnkge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgb3JkZXI/OiBudW1iZXI7XG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gIHRhZ3M/OiBzdHJpbmdbXTtcbn1cblxuXG4vKipcbiAqIEFjdGl2aXR5IFByb3ZpZGVyIFNlcnZpY2UuXG4gKiBDb2xsZWN0cyBhbGwgYWN0aXZpdHkgcHJvdmlkZXJzIGFuZCBtYW5hZ2VzIGFjdGl2aXR5IHJlZ2lzdHJhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQVhQQWN0aXZpdHlQcm92aWRlclNlcnZpY2Uge1xuICBwcml2YXRlIGFjdGl2aXR5RGVzY3JpcHRvcnMgPSBuZXcgTWFwPHN0cmluZywgQWN0aXZpdHlEZXNjcmlwdG9yPigpO1xuICBwcml2YXRlIGNhdGVnb3JpZXM6IEFjdGl2aXR5Q2F0ZWdvcnlbXSA9IFtdO1xuICBwcml2YXRlIHByb3ZpZGVyczogQVhQQWN0aXZpdHlQcm92aWRlcltdID0gW107XG4gIHByaXZhdGUgY2F0ZWdvcnlQcm92aWRlcnM6IEFYUEFjdGl2aXR5Q2F0ZWdvcnlQcm92aWRlcltdID0gW107XG4gIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb21tYW5kU2VydmljZSA9IGluamVjdChBWFBDb21tYW5kU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbWFuZFJlZ2lzdHJ5ID0gaW5qZWN0KEFYUENvbW1hbmRSZWdpc3RyeSk7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFuIGFjdGl2aXR5IHByb3ZpZGVyLlxuICAgKi9cbiAgcmVnaXN0ZXJQcm92aWRlcihwcm92aWRlcjogQVhQQWN0aXZpdHlQcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMucHJvdmlkZXJzLnB1c2gocHJvdmlkZXIpO1xuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVQcm92aWRlcihwcm92aWRlcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgY2F0ZWdvcnkgcHJvdmlkZXIuXG4gICAqL1xuICByZWdpc3RlckNhdGVnb3J5UHJvdmlkZXIocHJvdmlkZXI6IEFYUEFjdGl2aXR5Q2F0ZWdvcnlQcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMuY2F0ZWdvcnlQcm92aWRlcnMucHVzaChwcm92aWRlcik7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUNhdGVnb3J5UHJvdmlkZXIocHJvdmlkZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGFsbCBwcm92aWRlcnMuXG4gICAqL1xuICBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSByZXR1cm47XG5cbiAgICAvLyBJbml0aWFsaXplIGNhdGVnb3J5IHByb3ZpZGVycyBmaXJzdFxuICAgIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgdGhpcy5jYXRlZ29yeVByb3ZpZGVycykge1xuICAgICAgYXdhaXQgdGhpcy5pbml0aWFsaXplQ2F0ZWdvcnlQcm92aWRlcihwcm92aWRlcik7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBhY3Rpdml0eSBwcm92aWRlcnNcbiAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMucHJvdmlkZXJzKSB7XG4gICAgICBhd2FpdCB0aGlzLmluaXRpYWxpemVQcm92aWRlcihwcm92aWRlcik7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFjdGl2aXR5IGRlc2NyaXB0b3IgYnkga2V5LlxuICAgKi9cbiAgZ2V0RGVzY3JpcHRvcihrZXk6IHN0cmluZyk6IEFjdGl2aXR5RGVzY3JpcHRvciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlEZXNjcmlwdG9ycy5nZXQoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGFjdGl2aXR5IGRlc2NyaXB0b3JzLlxuICAgKi9cbiAgZ2V0QWxsRGVzY3JpcHRvcnMoKTogQWN0aXZpdHlEZXNjcmlwdG9yW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuYWN0aXZpdHlEZXNjcmlwdG9ycy52YWx1ZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRlc2NyaXB0b3JzIGJ5IGNhdGVnb3J5LlxuICAgKi9cbiAgZ2V0RGVzY3JpcHRvcnNCeUNhdGVnb3J5KGNhdGVnb3J5OiBzdHJpbmcpOiBBY3Rpdml0eURlc2NyaXB0b3JbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsRGVzY3JpcHRvcnMoKS5maWx0ZXIoZCA9PiBkLmNhdGVnb3J5ID09PSBjYXRlZ29yeSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBjYXRlZ29yaWVzLlxuICAgKi9cbiAgZ2V0Q2F0ZWdvcmllcygpOiBBY3Rpdml0eUNhdGVnb3J5W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5jYXRlZ29yaWVzXS5zb3J0KChhLCBiKSA9PiAoYS5vcmRlciB8fCA5OTkpIC0gKGIub3JkZXIgfHwgOTk5KSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGFjdGl2aXR5IGluc3RhbmNlIGJ5IGtleSB1c2luZyBBWFBDb21tYW5kU2VydmljZS5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZUFjdGl2aXR5KGtleTogc3RyaW5nKTogUHJvbWlzZTxJQWN0aXZpdHkgfCBudWxsPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENoZWNrIGlmIGNvbW1hbmQgZXhpc3RzXG4gICAgICBpZiAoIXRoaXMuY29tbWFuZFNlcnZpY2UuZXhpc3RzKGtleSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIEdldCBjb21tYW5kIGxvYWRlciBmcm9tIHJlZ2lzdHJ5XG4gICAgICBjb25zdCBsb2FkZXIgPSB0aGlzLmNvbW1hbmRSZWdpc3RyeS5nZXRMb2FkZXIoa2V5KTtcbiAgICAgIGlmICghbG9hZGVyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDcmVhdGUgY29tbWFuZCBpbnN0YW5jZVxuICAgICAgY29uc3QgY29tbWFuZCA9IGF3YWl0IGxvYWRlcigpO1xuICAgICAgcmV0dXJuIGNvbW1hbmQgYXMgSUFjdGl2aXR5O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQUklWQVRFIE1FVEhPRFNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemVQcm92aWRlcihwcm92aWRlcjogQVhQQWN0aXZpdHlQcm92aWRlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRleHQ6IEFYUEFjdGl2aXR5UHJvdmlkZXJDb250ZXh0ID0ge1xuICAgICAgcmVnaXN0ZXJBY3Rpdml0eTogKGNvbmZpZykgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2aXR5RGVzY3JpcHRvcnMuc2V0KGNvbmZpZy5rZXksIGNvbmZpZy5kZXNjcmlwdG9yKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYXdhaXQgcHJvdmlkZXIucHJvdmlkZShjb250ZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW5pdGlhbGl6ZUNhdGVnb3J5UHJvdmlkZXIocHJvdmlkZXI6IEFYUEFjdGl2aXR5Q2F0ZWdvcnlQcm92aWRlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRleHQ6IEFYUEFjdGl2aXR5Q2F0ZWdvcnlQcm92aWRlckNvbnRleHQgPSB7XG4gICAgICByZWdpc3RlckNhdGVnb3JpZXM6IChjYXRlZ29yaWVzKSA9PiB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllcy5wdXNoKC4uLmNhdGVnb3JpZXMpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBhd2FpdCBwcm92aWRlci5wcm92aWRlKGNvbnRleHQpO1xuICB9XG59XG4iXX0=","import { Injectable, InjectionToken, Optional, SkipSelf, Inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Injection token for activity category providers.\n */\nexport const AXP_ACTIVITY_CATEGORY_PROVIDER = new InjectionToken('AXP_ACTIVITY_CATEGORY_PROVIDER');\nexport class AXPActivityCategoryProviderService {\n constructor(parent, providers = []) {\n this.parent = parent;\n this.providers = providers;\n this.categories = new Map();\n this.isInitialized = false;\n if (!parent) {\n this.initialize();\n }\n }\n async initialize() {\n if (this.isInitialized) {\n return;\n }\n for (const provider of this.providers) {\n await provider.provide({\n registerCategories: (categories) => {\n categories.forEach(cat => this.categories.set(cat.name, cat));\n }\n });\n }\n this.isInitialized = true;\n }\n getAllCategories() {\n return Array.from(this.categories.values()).sort((a, b) => (a.order || 0) - (b.order || 0));\n }\n getCategory(name) {\n return this.categories.get(name);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityCategoryProviderService, deps: [{ token: AXPActivityCategoryProviderService, optional: true, skipSelf: true }, { token: AXP_ACTIVITY_CATEGORY_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityCategoryProviderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityCategoryProviderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: AXPActivityCategoryProviderService, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [AXP_ACTIVITY_CATEGORY_PROVIDER]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY2F0ZWdvcnkucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXR5LWNhdGVnb3J5LnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsY0FBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXFCL0Y7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLGNBQWMsQ0FBZ0MsZ0NBQWdDLENBQUMsQ0FBQztBQUdsSSxNQUFNLE9BQU8sa0NBQWtDO0lBSTdDLFlBQ2tDLE1BQTJDLEVBQ2YsWUFBMkMsRUFBRTtRQUR6RSxXQUFNLEdBQU4sTUFBTSxDQUFxQztRQUNmLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBTG5HLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBc0MsQ0FBQztRQUMzRCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQU01QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsVUFBVTtRQUN0QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUVELEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDckIsa0JBQWtCLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRTtvQkFDakMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDaEUsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzsrR0FsQ1Usa0NBQWtDLGlHQU12Qiw4QkFBOEI7bUhBTnpDLGtDQUFrQyxjQURyQixNQUFNOzs0RkFDbkIsa0NBQWtDO2tCQUQ5QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBTTdCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBTa2lwU2VsZiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZpdHlDYXRlZ29yeURlc2NyaXB0b3Ige1xuICBuYW1lOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgb3JkZXI/OiBudW1iZXI7XG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gIHRhZ3M/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBBY3Rpdml0eUNhdGVnb3J5UHJvdmlkZXJDb250ZXh0IHtcbiAgcmVnaXN0ZXJDYXRlZ29yaWVzKGNhdGVnb3JpZXM6IEFjdGl2aXR5Q2F0ZWdvcnlEZXNjcmlwdG9yW10pOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEFjdGl2aXR5Q2F0ZWdvcnlQcm92aWRlciB7XG4gIHByb3ZpZGUoY29udGV4dDogQVhQQWN0aXZpdHlDYXRlZ29yeVByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4gfCB2b2lkO1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgYWN0aXZpdHkgY2F0ZWdvcnkgcHJvdmlkZXJzLlxuICovXG5leHBvcnQgY29uc3QgQVhQX0FDVElWSVRZX0NBVEVHT1JZX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUEFjdGl2aXR5Q2F0ZWdvcnlQcm92aWRlcltdPignQVhQX0FDVElWSVRZX0NBVEVHT1JZX1BST1ZJREVSJyk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhQQWN0aXZpdHlDYXRlZ29yeVByb3ZpZGVyU2VydmljZSB7XG4gIHByaXZhdGUgY2F0ZWdvcmllcyA9IG5ldyBNYXA8c3RyaW5nLCBBY3Rpdml0eUNhdGVnb3J5RGVzY3JpcHRvcj4oKTtcbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBwYXJlbnQ/OiBBWFBBY3Rpdml0eUNhdGVnb3J5UHJvdmlkZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVhQX0FDVElWSVRZX0NBVEVHT1JZX1BST1ZJREVSKSBwcml2YXRlIHByb3ZpZGVyczogQVhQQWN0aXZpdHlDYXRlZ29yeVByb3ZpZGVyW10gPSBbXVxuICApIHtcbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMucHJvdmlkZXJzKSB7XG4gICAgICBhd2FpdCBwcm92aWRlci5wcm92aWRlKHtcbiAgICAgICAgcmVnaXN0ZXJDYXRlZ29yaWVzOiAoY2F0ZWdvcmllcykgPT4ge1xuICAgICAgICAgIGNhdGVnb3JpZXMuZm9yRWFjaChjYXQgPT4gdGhpcy5jYXRlZ29yaWVzLnNldChjYXQubmFtZSwgY2F0KSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0QWxsQ2F0ZWdvcmllcygpOiBBY3Rpdml0eUNhdGVnb3J5RGVzY3JpcHRvcltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNhdGVnb3JpZXMudmFsdWVzKCkpLnNvcnQoKGEsIGIpID0+IChhLm9yZGVyIHx8IDApIC0gKGIub3JkZXIgfHwgMCkpO1xuICB9XG5cbiAgZ2V0Q2F0ZWdvcnkobmFtZTogc3RyaW5nKTogQWN0aXZpdHlDYXRlZ29yeURlc2NyaXB0b3IgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNhdGVnb3JpZXMuZ2V0KG5hbWUpO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Abstract service for workflow execution operations.\n *\n * This service handles communication with backend for workflow execution.\n *\n * Implementation should be provided in connectivity layer:\n * - Mock implementation: @acorex/connectivity/mock\n * - API implementation: @acorex/connectivity/api\n *\n * @example\n * ```typescript\n * // In connectivity/mock\n * @Injectable()\n * export class AXCWorkflowExecutionService implements AXPWorkflowExecutionService {\n * async startExecution(request: AXPStartWorkflowExecutionRequest): Promise<AXPStartWorkflowExecutionResponse> {\n * // Mock implementation\n * }\n * }\n *\n * // In connectivity/api\n * @Injectable()\n * export class AXCWorkflowExecutionService implements AXPWorkflowExecutionService {\n * constructor(private http: HttpClient) {}\n *\n * async startExecution(request: AXPStartWorkflowExecutionRequest): Promise<AXPStartWorkflowExecutionResponse> {\n * return firstValueFrom(\n * this.http.post<AXPStartWorkflowExecutionResponse>(\n * `${this.config.baseUrl}/api/workflows/${request.workflowId}/start`,\n * { input: request.input }\n * )\n * );\n * }\n * }\n * ```\n */\nexport class AXPWorkflowExecutionService {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowExecutionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowExecutionService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowExecutionService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZXhlY3V0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL3J1bnRpbWUvd29ya2Zsb3ctZXhlY3V0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFZM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ0c7QUFFSCxNQUFNLE9BQWdCLDJCQUEyQjsrR0FBM0IsMkJBQTJCO21IQUEzQiwyQkFBMkI7OzRGQUEzQiwyQkFBMkI7a0JBRGhELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWFBTdGFydFdvcmtmbG93RXhlY3V0aW9uUmVxdWVzdCxcbiAgQVhQU3RhcnRXb3JrZmxvd0V4ZWN1dGlvblJlc3BvbnNlLFxuICBBWFBSZXN1bWVXb3JrZmxvd0V4ZWN1dGlvblJlcXVlc3QsXG4gIEFYUFJlc3VtZVdvcmtmbG93RXhlY3V0aW9uUmVzcG9uc2UsXG4gIEFYUEdldFdvcmtmbG93RXhlY3V0aW9uU3RhdGVSZXF1ZXN0LFxuICBBWFBHZXRXb3JrZmxvd0RlZmluaXRpb25SZXF1ZXN0LFxuICBBWFBHZXRXb3JrZmxvd0RlZmluaXRpb25SZXNwb25zZSxcbiAgQVhQV29ya2Zsb3dFeGVjdXRpb25TdGF0ZSxcbn0gZnJvbSAnLi93b3JrZmxvdy1leGVjdXRpb24udHlwZXMnO1xuXG4vKipcbiAqIEFic3RyYWN0IHNlcnZpY2UgZm9yIHdvcmtmbG93IGV4ZWN1dGlvbiBvcGVyYXRpb25zLlxuICogXG4gKiBUaGlzIHNlcnZpY2UgaGFuZGxlcyBjb21tdW5pY2F0aW9uIHdpdGggYmFja2VuZCBmb3Igd29ya2Zsb3cgZXhlY3V0aW9uLlxuICogXG4gKiBJbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgcHJvdmlkZWQgaW4gY29ubmVjdGl2aXR5IGxheWVyOlxuICogLSBNb2NrIGltcGxlbWVudGF0aW9uOiBAYWNvcmV4L2Nvbm5lY3Rpdml0eS9tb2NrXG4gKiAtIEFQSSBpbXBsZW1lbnRhdGlvbjogQGFjb3JleC9jb25uZWN0aXZpdHkvYXBpXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbiBjb25uZWN0aXZpdHkvbW9ja1xuICogQEluamVjdGFibGUoKVxuICogZXhwb3J0IGNsYXNzIEFYQ1dvcmtmbG93RXhlY3V0aW9uU2VydmljZSBpbXBsZW1lbnRzIEFYUFdvcmtmbG93RXhlY3V0aW9uU2VydmljZSB7XG4gKiAgIGFzeW5jIHN0YXJ0RXhlY3V0aW9uKHJlcXVlc3Q6IEFYUFN0YXJ0V29ya2Zsb3dFeGVjdXRpb25SZXF1ZXN0KTogUHJvbWlzZTxBWFBTdGFydFdvcmtmbG93RXhlY3V0aW9uUmVzcG9uc2U+IHtcbiAqICAgICAvLyBNb2NrIGltcGxlbWVudGF0aW9uXG4gKiAgIH1cbiAqIH1cbiAqIFxuICogLy8gSW4gY29ubmVjdGl2aXR5L2FwaVxuICogQEluamVjdGFibGUoKVxuICogZXhwb3J0IGNsYXNzIEFYQ1dvcmtmbG93RXhlY3V0aW9uU2VydmljZSBpbXBsZW1lbnRzIEFYUFdvcmtmbG93RXhlY3V0aW9uU2VydmljZSB7XG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cbiAqICAgXG4gKiAgIGFzeW5jIHN0YXJ0RXhlY3V0aW9uKHJlcXVlc3Q6IEFYUFN0YXJ0V29ya2Zsb3dFeGVjdXRpb25SZXF1ZXN0KTogUHJvbWlzZTxBWFBTdGFydFdvcmtmbG93RXhlY3V0aW9uUmVzcG9uc2U+IHtcbiAqICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gKiAgICAgICB0aGlzLmh0dHAucG9zdDxBWFBTdGFydFdvcmtmbG93RXhlY3V0aW9uUmVzcG9uc2U+KFxuICogICAgICAgICBgJHt0aGlzLmNvbmZpZy5iYXNlVXJsfS9hcGkvd29ya2Zsb3dzLyR7cmVxdWVzdC53b3JrZmxvd0lkfS9zdGFydGAsXG4gKiAgICAgICAgIHsgaW5wdXQ6IHJlcXVlc3QuaW5wdXQgfVxuICogICAgICAgKVxuICogICAgICk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQV29ya2Zsb3dFeGVjdXRpb25TZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFN0YXJ0IGEgbmV3IHdvcmtmbG93IGV4ZWN1dGlvbi5cbiAgICogXG4gICAqIENyZWF0ZXMgYSBuZXcgd29ya2Zsb3cgZXhlY3V0aW9uIGluc3RhbmNlIGluIGJhY2tlbmQgYW5kIHJldHVybnMgZXhlY3V0aW9uIElELlxuICAgKiBcbiAgICogQHBhcmFtIHJlcXVlc3QgLSBTdGFydCBleGVjdXRpb24gcmVxdWVzdFxuICAgKiBAcmV0dXJucyBFeGVjdXRpb24gcmVzcG9uc2Ugd2l0aCBleGVjdXRpb25JZCBhbmQgaW5pdGlhbCBzdGF0ZVxuICAgKiBcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IHdvcmtmbG93RXhlY3V0aW9uU2VydmljZS5zdGFydEV4ZWN1dGlvbih7XG4gICAqICAgd29ya2Zsb3dJZDogJ215LXdvcmtmbG93JyxcbiAgICogICBpbnB1dDogeyB1c2VySWQ6ICcxMjMnLCBhY3Rpb246ICdjcmVhdGUnIH1cbiAgICogfSk7XG4gICAqIFxuICAgKiBjb25zb2xlLmxvZygnRXhlY3V0aW9uIElEOicsIHJlc3BvbnNlLmV4ZWN1dGlvbklkKTtcbiAgICogY29uc29sZS5sb2coJ0luaXRpYWwgU3RhdGU6JywgcmVzcG9uc2Uuc3RhdGUpO1xuICAgKiBgYGBcbiAgICovXG4gIGFic3RyYWN0IHN0YXJ0RXhlY3V0aW9uKFxuICAgIHJlcXVlc3Q6IEFYUFN0YXJ0V29ya2Zsb3dFeGVjdXRpb25SZXF1ZXN0XG4gICk6IFByb21pc2U8QVhQU3RhcnRXb3JrZmxvd0V4ZWN1dGlvblJlc3BvbnNlPjtcblxuICAvKipcbiAgICogUmVzdW1lIGEgc3VzcGVuZGVkIHdvcmtmbG93IGV4ZWN1dGlvbi5cbiAgICogXG4gICAqIFJlc3VtZXMgd29ya2Zsb3cgZXhlY3V0aW9uIGFmdGVyIHVzZXIgaW50ZXJhY3Rpb24gKGUuZy4sIGFmdGVyIHNob3ctZGlhbG9nKS5cbiAgICogXG4gICAqIEBwYXJhbSByZXF1ZXN0IC0gUmVzdW1lIGV4ZWN1dGlvbiByZXF1ZXN0XG4gICAqIEByZXR1cm5zIFJlc3VtZSByZXNwb25zZSB3aXRoIG5leHQgc3RlcCBhbmQgdXBkYXRlZCBzdGF0ZVxuICAgKiBcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IHdvcmtmbG93RXhlY3V0aW9uU2VydmljZS5yZXN1bWVFeGVjdXRpb24oe1xuICAgKiAgIGV4ZWN1dGlvbklkOiAnZXhlYy0xMjMnLFxuICAgKiAgIHN0ZXBJZDogJ3N0ZXAtZGlhbG9nLTEnLFxuICAgKiAgIHRhc2tUb2tlbjogJ3NlYy10YXNrLXRva2VuJyxcbiAgICogICBvdXRjb21lOiAnQ29uZmlybWVkJyxcbiAgICogICB1c2VySW5wdXQ6IHsgY29uZmlybWVkOiB0cnVlIH1cbiAgICogfSk7XG4gICAqIFxuICAgKiBjb25zb2xlLmxvZygnTmV4dCBTdGVwOicsIHJlc3BvbnNlLm5leHRTdGVwKTtcbiAgICogY29uc29sZS5sb2coJ1VwZGF0ZWQgU3RhdGU6JywgcmVzcG9uc2Uuc3RhdGUpO1xuICAgKiBgYGBcbiAgICovXG4gIGFic3RyYWN0IHJlc3VtZUV4ZWN1dGlvbihcbiAgICByZXF1ZXN0OiBBWFBSZXN1bWVXb3JrZmxvd0V4ZWN1dGlvblJlcXVlc3RcbiAgKTogUHJvbWlzZTxBWFBSZXN1bWVXb3JrZmxvd0V4ZWN1dGlvblJlc3BvbnNlPjtcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgd29ya2Zsb3cgZXhlY3V0aW9uIHN0YXRlLlxuICAgKiBcbiAgICogUmV0cmlldmVzIGN1cnJlbnQgc3RhdGUgb2YgYSB3b3JrZmxvdyBleGVjdXRpb24gZnJvbSBiYWNrZW5kLlxuICAgKiBcbiAgICogQHBhcmFtIHJlcXVlc3QgLSBHZXQgc3RhdGUgcmVxdWVzdFxuICAgKiBAcmV0dXJucyBDdXJyZW50IHdvcmtmbG93IGV4ZWN1dGlvbiBzdGF0ZVxuICAgKiBcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBzdGF0ZSA9IGF3YWl0IHdvcmtmbG93RXhlY3V0aW9uU2VydmljZS5nZXRFeGVjdXRpb25TdGF0ZSh7XG4gICAqICAgZXhlY3V0aW9uSWQ6ICdleGVjLTEyMydcbiAgICogfSk7XG4gICAqIFxuICAgKiBjb25zb2xlLmxvZygnU3RhdHVzOicsIHN0YXRlLnN0YXR1cyk7XG4gICAqIGNvbnNvbGUubG9nKCdWYXJpYWJsZXM6Jywgc3RhdGUudmFyaWFibGVzKTtcbiAgICogYGBgXG4gICAqL1xuICBhYnN0cmFjdCBnZXRFeGVjdXRpb25TdGF0ZShcbiAgICByZXF1ZXN0OiBBWFBHZXRXb3JrZmxvd0V4ZWN1dGlvblN0YXRlUmVxdWVzdFxuICApOiBQcm9taXNlPEFYUFdvcmtmbG93RXhlY3V0aW9uU3RhdGU+O1xuXG4gIC8qKlxuICAgKiBHZXQgd29ya2Zsb3cgZGVmaW5pdGlvbiBieSBJRC5cbiAgICogXG4gICAqIFJldHJpZXZlcyB3b3JrZmxvdyBkZWZpbml0aW9uIGZyb20gYmFja2VuZC5cbiAgICogXG4gICAqIEBwYXJhbSByZXF1ZXN0IC0gR2V0IHdvcmtmbG93IGRlZmluaXRpb24gcmVxdWVzdFxuICAgKiBAcmV0dXJucyBXb3JrZmxvdyBkZWZpbml0aW9uIGluIGV4ZWN1dGFibGUgZm9ybWF0XG4gICAqIFxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgd29ya2Zsb3dFeGVjdXRpb25TZXJ2aWNlLmdldFdvcmtmbG93RGVmaW5pdGlvbih7XG4gICAqICAgd29ya2Zsb3dJZDogJ215LXdvcmtmbG93J1xuICAgKiB9KTtcbiAgICogXG4gICAqIGNvbnNvbGUubG9nKCdXb3JrZmxvdzonLCByZXNwb25zZS53b3JrZmxvdyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0V29ya2Zsb3dEZWZpbml0aW9uKFxuICAgIHJlcXVlc3Q6IEFYUEdldFdvcmtmbG93RGVmaW5pdGlvblJlcXVlc3RcbiAgKTogUHJvbWlzZTxBWFBHZXRXb3JrZmxvd0RlZmluaXRpb25SZXNwb25zZT47XG59XG5cbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { AXPWorkflowExecutionService } from './workflow-execution.service';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Production Workflow Coordinator.\n *\n * Separates frontend/backend execution:\n * - Frontend activities: Execute with AXPCommand in browser\n * - Backend activities: Execute via API calls to backend\n * - State caching: Caches workflow state in client for performance\n *\n */\nexport class WorkflowCoordinator {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.workflowExecutionService = inject(AXPWorkflowExecutionService);\n this.commandService = inject(AXPCommandService);\n //#endregion\n //#region ---- State Cache (Client-side for Performance) ----\n /**\n * Cache workflow states in memory for quick access.\n * Key: executionId\n * Value: AXPWorkflowExecutionState\n */\n this.stateCache = new Map();\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Start workflow execution in backend.\n *\n * Backend decides what to do: returns pendingTask or indicates completion.\n * Frontend only calls API - no business logic here.\n *\n * @param workflowId - Workflow ID\n * @param input - Initial input data\n * @returns Execution result with pendingTask (if any)\n *\n * @example\n * ```typescript\n * const result = await coordinator.startWorkflow('my-workflow', { userId: '123' });\n *\n * if (result.pendingTask) {\n * // Execute task if frontend, or wait for backend to complete\n * if (result.pendingTask.executionMode === 'frontend') {\n * await coordinator.executeTask(result.pendingTask);\n * await coordinator.completeTask(result.executionId, result.pendingTask, outcome, output);\n * }\n * }\n * ```\n */\n async startWorkflow(workflowId, input = {}) {\n try {\n const execution = await this.startWorkflowExecution(workflowId, input);\n const result = {\n success: true,\n output: execution.state.output,\n nextTask: execution.pendingTask || null,\n executionId: execution.executionId,\n state: execution.state\n };\n return result;\n }\n catch (error) {\n console.error('[WorkflowCoordinator] ❌ Error in startWorkflow', error);\n return {\n success: false,\n error: error.message || 'Failed to start workflow',\n nextTask: null\n };\n }\n }\n /**\n * Execute a frontend task using AXPCommand.\n *\n * Only executes if task.executionMode is 'frontend' or 'both'.\n * Backend tasks are handled automatically by backend.\n *\n * @param task - Task to execute\n * @returns Execution result with output and outcome\n */\n async executeTask(task) {\n // Only execute frontend tasks\n if (task.executionMode !== 'frontend' && task.executionMode !== 'both') {\n throw new Error(`Task '${task.activityId}' is not a frontend task. Backend handles it automatically.`);\n }\n return await this.executeFrontendActivity(task);\n }\n /**\n * Complete a task and get next task from backend.\n *\n * Sends task result to backend API.\n * Backend decides: next task, fail, or complete workflow.\n *\n * @param executionId - Execution ID\n * @param task - Completed task\n * @param outcome - Task outcome (e.g., 'Done', 'Confirmed', 'Cancelled')\n * @param output - Task output/result\n * @returns Next task from backend (if any)\n */\n async completeTask(executionId, task, outcome, output) {\n try {\n // Send result to backend - backend decides next step\n const response = await this.workflowExecutionService.resumeExecution({\n executionId,\n stepId: task.activityId,\n taskToken: task.taskToken,\n outcome,\n userInput: output\n });\n // Update cache\n if (response.state) {\n this.stateCache.set(executionId, response.state);\n }\n return {\n success: true,\n output: response.output,\n nextTask: response.nextTask || null,\n executionId,\n state: response.state\n };\n }\n catch (error) {\n return {\n success: false,\n error: error.message || 'Failed to complete task',\n nextTask: null\n };\n }\n }\n /**\n * Execute workflow by ID (backward compatibility).\n *\n * @deprecated Use startWorkflow + executeTask + completeTask pattern instead.\n * This method is kept for backward compatibility but will be removed.\n */\n async executeWorkflowById(workflowId, input = {}) {\n // Just start workflow - caller should handle task execution\n return await this.startWorkflow(workflowId, input);\n }\n /**\n * Resume a suspended workflow (e.g., after user interaction).\n *\n * Backend determines nextStep based on outcome and outcomeConnections.\n * Client only provides executionId, stepId, outcome, and optional userInput.\n *\n * @param executionId - Workflow execution ID\n * @param stepId - Step ID that was waiting for user input\n * @param outcome - User action outcome (e.g., 'Confirmed', 'Cancelled', 'Submitted')\n * @param userInput - Optional user input data\n */\n async resumeWorkflow(executionId, stepId, outcome, userInput, taskToken) {\n try {\n // Ensure taskToken is provided for secure resumption\n if (!taskToken) {\n throw new Error('Missing taskToken for resumeWorkflow');\n }\n // Backend handles everything: checks outcomeConnections and determines nextStep\n const response = await this.workflowExecutionService.resumeExecution({\n executionId,\n stepId,\n taskToken,\n outcome,\n userInput\n });\n // Update cache with state from backend\n if (response.state) {\n this.stateCache.set(executionId, response.state);\n }\n return {\n success: true,\n output: response.output,\n nextTask: response.nextTask || null, // Backend determines this from outcomeConnections\n executionId,\n state: response.state\n };\n }\n catch (error) {\n return {\n success: false,\n error: error.message || 'Failed to resume workflow',\n nextTask: null\n };\n }\n }\n /**\n * Get workflow execution state (from cache or backend).\n */\n async getWorkflowState(executionId) {\n // Check cache first\n const cached = this.stateCache.get(executionId);\n if (cached) {\n // Cache is valid for 5 minutes\n const cacheAge = Date.now() - cached.lastUpdated.getTime();\n if (cacheAge < 5 * 60 * 1000) {\n return cached;\n }\n }\n // Fetch from backend\n try {\n const state = await this.workflowExecutionService.getExecutionState({\n executionId\n });\n // Update cache\n this.stateCache.set(executionId, state);\n return state;\n }\n catch {\n return null;\n }\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Execute a frontend activity using CommandBus.\n *\n * Frontend activities are executed in the browser using AXPCommandService.\n * Activities can also be executed in both frontend and backend (hybrid mode).\n *\n * @param task - Frontend task to execute\n * @returns Execution result with output and outcome\n */\n async executeFrontendActivity(task) {\n try {\n // Check if command exists\n const commandExists = this.commandService.exists(task.activityType);\n if (!commandExists) {\n console.warn(`[WorkflowCoordinator] ⚠️ Frontend activity '${task.activityType}' is not registered. Skipping execution.`);\n return {\n output: null,\n outcome: 'Done'\n };\n }\n // Execute activity via CommandBus\n // Activities registered as AXPCommand return {output, outcomes}\n // 🎯 Flatten properties if nested (workflow-studio format)\n let commandInput = task.input || task.config || {};\n if (commandInput['properties'] && typeof commandInput['properties'] === 'object') {\n // Flatten: {properties: {text: \"...\"}} -> {text: \"...\"}\n commandInput = { ...commandInput['properties'] };\n }\n const result = await this.commandService.execute(task.activityType, commandInput);\n if (!result) {\n return {\n output: null,\n outcome: 'Failed',\n };\n }\n if (!result.success) {\n return {\n output: {\n error: result.message?.text,\n },\n outcome: 'Failed',\n };\n }\n const commandResult = result.data;\n const outcomes = commandResult?.outcomes ?? {};\n let outcome = 'Done';\n if (Object.keys(outcomes).length > 0) {\n outcome = outcomes['Done'] ? 'Done' : Object.keys(outcomes)[0] || 'Done';\n }\n return {\n output: commandResult?.output ?? null,\n outcome,\n };\n }\n catch (error) {\n console.error(`[WorkflowCoordinator] ❌ Error executing frontend activity '${task.activityType}':`, error);\n return {\n output: { error: error.message || 'Unknown error' },\n outcome: 'Failed'\n };\n }\n }\n /**\n * Start workflow execution in backend.\n * Backend returns executionId, initial state, and first task to execute.\n */\n async startWorkflowExecution(workflowId, input) {\n const response = await this.workflowExecutionService.startExecution({\n workflowId,\n input\n });\n // Cache state\n this.stateCache.set(response.executionId, response.state);\n return {\n executionId: response.executionId,\n state: response.state,\n pendingTask: response.pendingTask\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: WorkflowCoordinator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: WorkflowCoordinator, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: WorkflowCoordinator, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctY29vcmRpbmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL3J1bnRpbWUvd29ya2Zsb3ctY29vcmRpbmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBcUIzRSxZQUFZO0FBRVo7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBSGhDO1FBSUUsK0NBQStDO1FBRTlCLDZCQUF3QixHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQy9ELG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFNUQsWUFBWTtRQUVaLGlFQUFpRTtRQUVqRTs7OztXQUlHO1FBQ0ssZUFBVSxHQUFHLElBQUksR0FBRyxFQUFxQyxDQUFDO0tBeVVuRTtJQXRVQyxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bc0JHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FDakIsVUFBa0IsRUFDbEIsUUFBNkIsRUFBRTtRQUUvQixJQUFJLENBQUM7WUFDSCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFdkUsTUFBTSxNQUFNLEdBQUc7Z0JBQ2IsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsTUFBTSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTTtnQkFDOUIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxXQUFXLElBQUksSUFBSTtnQkFDdkMsV0FB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QUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxLQUFLLENBQUMsc0JBQXNCLENBQ2xDLFVBQWtCLEVBQ2xCLEtBQTBCO1FBRTFCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsQ0FBQztZQUNsRSxVQUFVO1lBQ1YsS0FBSztTQUNOLENBQUMsQ0FBQztRQUVILGNBQWM7UUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxRCxPQUFPO1lBQ0wsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXO1lBQ2pDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztZQUNyQixXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7U0FDbEMsQ0FBQztJQUNKLENBQUM7K0dBclZVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUENvbW1hbmRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEFYUFdvcmtmbG93RXhlY3V0aW9uU2VydmljZSB9IGZyb20gJy4vd29ya2Zsb3ctZXhlY3V0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQVhQV29ya2Zsb3dFeGVjdXRpb25TdGF0ZSxcbiAgQVhQV29ya2Zsb3dUYXNrLFxufSBmcm9tICcuL3dvcmtmbG93LWV4ZWN1dGlvbi50eXBlcyc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgVHlwZXMgJiBJbnRlcmZhY2VzICAgLS0tLVxuXG4vKipcbiAqIFdvcmtmbG93IGV4ZWN1dGlvbiByZXN1bHQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dFeGVjdXRpb25SZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBvdXRwdXQ/OiBhbnk7XG4gIGVycm9yPzogc3RyaW5nO1xuICBuZXh0VGFzaz86IEFYUFdvcmtmbG93VGFzayB8IG51bGw7XG4gIGV4ZWN1dGlvbklkPzogc3RyaW5nO1xuICBzdGF0ZT86IEFYUFdvcmtmbG93RXhlY3V0aW9uU3RhdGU7XG59XG5cblxuLy8jZW5kcmVnaW9uXG5cbi8qKlxuICogUHJvZHVjdGlvbiBXb3JrZmxvdyBDb29yZGluYXRvci5cbiAqIFxuICogU2VwYXJhdGVzIGZyb250ZW5kL2JhY2tlbmQgZXhlY3V0aW9uOlxuICogLSBGcm9udGVuZCBhY3Rpdml0aWVzOiBFeGVjdXRlIHdpdGggQVhQQ29tbWFuZCBpbiBicm93c2VyXG4gKiAtIEJhY2tlbmQgYWN0aXZpdGllczogRXhlY3V0ZSB2aWEgQVBJIGNhbGxzIHRvIGJhY2tlbmRcbiAqIC0gU3RhdGUgY2FjaGluZzogQ2FjaGVzIHdvcmtmbG93IHN0YXRlIGluIGNsaWVudCBmb3IgcGVyZm9ybWFuY2VcbiAqIFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0Nvb3JkaW5hdG9yIHtcbiAgLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlcyAmIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IHdvcmtmbG93RXhlY3V0aW9uU2VydmljZSA9IGluamVjdChBWFBXb3JrZmxvd0V4ZWN1dGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbW1hbmRTZXJ2aWNlID0gaW5qZWN0KEFYUENvbW1hbmRTZXJ2aWNlKTtcbiAgXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgU3RhdGUgQ2FjaGUgKENsaWVudC1zaWRlIGZvciBQZXJmb3JtYW5jZSkgICAtLS0tXG5cbiAgLyoqXG4gICAqIENhY2hlIHdvcmtmbG93IHN0YXRlcyBpbiBtZW1vcnkgZm9yIHF1aWNrIGFjY2Vzcy5cbiAgICogS2V5OiBleGVjdXRpb25JZFxuICAgKiBWYWx1ZTogQVhQV29ya2Zsb3dFeGVjdXRpb25TdGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0ZUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEFYUFdvcmtmbG93RXhlY3V0aW9uU3RhdGU+KCk7XG5cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBTdGFydCB3b3JrZmxvdyBleGVjdXRpb24gaW4gYmFja2VuZC5cbiAgICogXG4gICAqIEJhY2tlbmQgZGVjaWRlcyB3aGF0IHRvIGRvOiByZXR1cm5zIHBlbmRpbmdUYXNrIG9yIGluZGljYXRlcyBjb21wbGV0aW9uLlxuICAgKiBGcm9udGVuZCBvbmx5IGNhbGxzIEFQSSAtIG5vIGJ1c2luZXNzIGxvZ2ljIGhlcmUuXG4gICAqIFxuICAgKiBAcGFyYW0gd29ya2Zsb3dJZCAtIFdvcmtmbG93IElEXG4gICAqIEBwYXJhbSBpbnB1dCAtIEluaXRpYWwgaW5wdXQgZGF0YVxuICAgKiBAcmV0dXJucyBFeGVjdXRpb24gcmVzdWx0IHdpdGggcGVuZGluZ1Rhc2sgKGlmIGFueSlcbiAgICogXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgY29vcmRpbmF0b3Iuc3RhcnRXb3JrZmxvdygnbXktd29ya2Zsb3cnLCB7IHVzZXJJZDogJzEyMycgfSk7XG4gICAqIFxuICAgKiBpZiAocmVzdWx0LnBlbmRpbmdUYXNrKSB7XG4gICAqICAgLy8gRXhlY3V0ZSB0YXNrIGlmIGZyb250ZW5kLCBvciB3YWl0IGZvciBiYWNrZW5kIHRvIGNvbXBsZXRlXG4gICAqICAgaWYgKHJlc3VsdC5wZW5kaW5nVGFzay5leGVjdXRpb25Nb2RlID09PSAnZnJvbnRlbmQnKSB7XG4gICAqICAgICBhd2FpdCBjb29yZGluYXRvci5leGVjdXRlVGFzayhyZXN1bHQucGVuZGluZ1Rhc2spO1xuICAgKiAgICAgYXdhaXQgY29vcmRpbmF0b3IuY29tcGxldGVUYXNrKHJlc3VsdC5leGVjdXRpb25JZCwgcmVzdWx0LnBlbmRpbmdUYXNrLCBvdXRjb21lLCBvdXRwdXQpO1xuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHN0YXJ0V29ya2Zsb3coXG4gICAgd29ya2Zsb3dJZDogc3RyaW5nLFxuICAgIGlucHV0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge31cbiAgKTogUHJvbWlzZTxXb3JrZmxvd0V4ZWN1dGlvblJlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBleGVjdXRpb24gPSBhd2FpdCB0aGlzLnN0YXJ0V29ya2Zsb3dFeGVjdXRpb24od29ya2Zsb3dJZCwgaW5wdXQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIG91dHB1dDogZXhlY3V0aW9uLnN0YXRlLm91dHB1dCxcbiAgICAgICAgbmV4dFRhc2s6IGV4ZWN1dGlvbi5wZW5kaW5nVGFzayB8fCBudWxsLFxuICAgICAgICBleGVjdXRpb25JZDogZXhlY3V0aW9uLmV4ZWN1dGlvbklkLFxuICAgICAgICBzdGF0ZTogZXhlY3V0aW9uLnN0YXRlXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbV29ya2Zsb3dDb29yZGluYXRvcl0g4p2MIEVycm9yIGluIHN0YXJ0V29ya2Zsb3cnLCBlcnJvcik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IGVycm9yLm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byBzdGFydCB3b3JrZmxvdycsXG4gICAgICAgIG5leHRUYXNrOiBudWxsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgZnJvbnRlbmQgdGFzayB1c2luZyBBWFBDb21tYW5kLlxuICAgKiBcbiAgICogT25seSBleGVjdXRlcyBpZiB0YXNrLmV4ZWN1dGlvbk1vZGUgaXMgJ2Zyb250ZW5kJyBvciAnYm90aCcuXG4gICAqIEJhY2tlbmQgdGFza3MgYXJlIGhhbmRsZWQgYXV0b21hdGljYWxseSBieSBiYWNrZW5kLlxuICAgKiBcbiAgICogQHBhcmFtIHRhc2sgLSBUYXNrIHRvIGV4ZWN1dGVcbiAgICogQHJldHVybnMgRXhlY3V0aW9uIHJlc3VsdCB3aXRoIG91dHB1dCBhbmQgb3V0Y29tZVxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZVRhc2soXG4gICAgdGFzazogQVhQV29ya2Zsb3dUYXNrXG4gICk6IFByb21pc2U8eyBvdXRwdXQ6IGFueTsgb3V0Y29tZTogc3RyaW5nIH0+IHtcbiAgICBcbiAgICAvLyBPbmx5IGV4ZWN1dGUgZnJvbnRlbmQgdGFza3NcbiAgICBpZiAodGFzay5leGVjdXRpb25Nb2RlICE9PSAnZnJvbnRlbmQnICYmIHRhc2suZXhlY3V0aW9uTW9kZSAhPT0gJ2JvdGgnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhc2sgJyR7dGFzay5hY3Rpdml0eUlkfScgaXMgbm90IGEgZnJvbnRlbmQgdGFzay4gQmFja2VuZCBoYW5kbGVzIGl0IGF1dG9tYXRpY2FsbHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUZyb250ZW5kQWN0aXZpdHkodGFzayk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGxldGUgYSB0YXNrIGFuZCBnZXQgbmV4dCB0YXNrIGZyb20gYmFja2VuZC5cbiAgICogXG4gICAqIFNlbmRzIHRhc2sgcmVzdWx0IHRvIGJhY2tlbmQgQVBJLlxuICAgKiBCYWNrZW5kIGRlY2lkZXM6IG5leHQgdGFzaywgZmFpbCwgb3IgY29tcGxldGUgd29ya2Zsb3cuXG4gICAqIFxuICAgKiBAcGFyYW0gZXhlY3V0aW9uSWQgLSBFeGVjdXRpb24gSURcbiAgICogQHBhcmFtIHRhc2sgLSBDb21wbGV0ZWQgdGFza1xuICAgKiBAcGFyYW0gb3V0Y29tZSAtIFRhc2sgb3V0Y29tZSAoZS5nLiwgJ0RvbmUnLCAnQ29uZmlybWVkJywgJ0NhbmNlbGxlZCcpXG4gICAqIEBwYXJhbSBvdXRwdXQgLSBUYXNrIG91dHB1dC9yZXN1bHRcbiAgICogQHJldHVybnMgTmV4dCB0YXNrIGZyb20gYmFja2VuZCAoaWYgYW55KVxuICAgKi9cbiAgYXN5bmMgY29tcGxldGVUYXNrKFxuICAgIGV4ZWN1dGlvbklkOiBzdHJpbmcsXG4gICAgdGFzazogQVhQV29ya2Zsb3dUYXNrLFxuICAgIG91dGNvbWU6IHN0cmluZyxcbiAgICBvdXRwdXQ/OiBhbnlcbiAgKTogUHJvbWlzZTxXb3JrZmxvd0V4ZWN1dGlvblJlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBTZW5kIHJlc3VsdCB0byBiYWNrZW5kIC0gYmFja2VuZCBkZWNpZGVzIG5leHQgc3RlcFxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLndvcmtmbG93RXhlY3V0aW9uU2VydmljZS5yZXN1bWVFeGVjdXRpb24oe1xuICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgc3RlcElkOiB0YXNrLmFjdGl2aXR5SWQsXG4gICAgICAgIHRhc2tUb2tlbjogdGFzay50YXNrVG9rZW4sXG4gICAgICAgIG91dGNvbWUsXG4gICAgICAgIHVzZXJJbnB1dDogb3V0cHV0XG4gICAgICB9KTtcblxuICAgICAgLy8gVXBkYXRlIGNhY2hlXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZUNhY2hlLnNldChleGVjdXRpb25JZCwgcmVzcG9uc2Uuc3RhdGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICBvdXRwdXQ6IHJlc3BvbnNlLm91dHB1dCxcbiAgICAgICAgbmV4dFRhc2s6IHJlc3BvbnNlLm5leHRUYXNrIHx8IG51bGwsXG4gICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICBzdGF0ZTogcmVzcG9uc2Uuc3RhdGVcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yOiBlcnJvci5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gY29tcGxldGUgdGFzaycsXG4gICAgICAgIG5leHRUYXNrOiBudWxsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgd29ya2Zsb3cgYnkgSUQgKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpLlxuICAgKiBcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN0YXJ0V29ya2Zsb3cgKyBleGVjdXRlVGFzayArIGNvbXBsZXRlVGFzayBwYXR0ZXJuIGluc3RlYWQuXG4gICAqIFRoaXMgbWV0aG9kIGlzIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYnV0IHdpbGwgYmUgcmVtb3ZlZC5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGVXb3JrZmxvd0J5SWQoXG4gICAgd29ya2Zsb3dJZDogc3RyaW5nLFxuICAgIGlucHV0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge31cbiAgKTogUHJvbWlzZTxXb3JrZmxvd0V4ZWN1dGlvblJlc3VsdD4ge1xuICAgIC8vIEp1c3Qgc3RhcnQgd29ya2Zsb3cgLSBjYWxsZXIgc2hvdWxkIGhhbmRsZSB0YXNrIGV4ZWN1dGlvblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnN0YXJ0V29ya2Zsb3cod29ya2Zsb3dJZCwgaW5wdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3VtZSBhIHN1c3BlbmRlZCB3b3JrZmxvdyAoZS5nLiwgYWZ0ZXIgdXNlciBpbnRlcmFjdGlvbikuXG4gICAqIFxuICAgKiBCYWNrZW5kIGRldGVybWluZXMgbmV4dFN0ZXAgYmFzZWQgb24gb3V0Y29tZSBhbmQgb3V0Y29tZUNvbm5lY3Rpb25zLlxuICAgKiBDbGllbnQgb25seSBwcm92aWRlcyBleGVjdXRpb25JZCwgc3RlcElkLCBvdXRjb21lLCBhbmQgb3B0aW9uYWwgdXNlcklucHV0LlxuICAgKiBcbiAgICogQHBhcmFtIGV4ZWN1dGlvbklkIC0gV29ya2Zsb3cgZXhlY3V0aW9uIElEXG4gICAqIEBwYXJhbSBzdGVwSWQgLSBTdGVwIElEIHRoYXQgd2FzIHdhaXRpbmcgZm9yIHVzZXIgaW5wdXRcbiAgICogQHBhcmFtIG91dGNvbWUgLSBVc2VyIGFjdGlvbiBvdXRjb21lIChlLmcuLCAnQ29uZmlybWVkJywgJ0NhbmNlbGxlZCcsICdTdWJtaXR0ZWQnKVxuICAgKiBAcGFyYW0gdXNlcklucHV0IC0gT3B0aW9uYWwgdXNlciBpbnB1dCBkYXRhXG4gICAqL1xuICBhc3luYyByZXN1bWVXb3JrZmxvdyhcbiAgICBleGVjdXRpb25JZDogc3RyaW5nLFxuICAgIHN0ZXBJZDogc3RyaW5nLFxuICAgIG91dGNvbWU6IHN0cmluZyxcbiAgICB1c2VySW5wdXQ/OiBhbnksXG4gICAgdGFza1Rva2VuPzogc3RyaW5nXG4gICk6IFByb21pc2U8V29ya2Zsb3dFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgLy8gRW5zdXJlIHRhc2tUb2tlbiBpcyBwcm92aWRlZCBmb3Igc2VjdXJlIHJlc3VtcHRpb25cbiAgICAgIGlmICghdGFza1Rva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyB0YXNrVG9rZW4gZm9yIHJlc3VtZVdvcmtmbG93Jyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEJhY2tlbmQgaGFuZGxlcyBldmVyeXRoaW5nOiBjaGVja3Mgb3V0Y29tZUNvbm5lY3Rpb25zIGFuZCBkZXRlcm1pbmVzIG5leHRTdGVwXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMud29ya2Zsb3dFeGVjdXRpb25TZXJ2aWNlLnJlc3VtZUV4ZWN1dGlvbih7XG4gICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICBzdGVwSWQsXG4gICAgICAgIHRhc2tUb2tlbixcbiAgICAgICAgb3V0Y29tZSxcbiAgICAgICAgdXNlcklucHV0XG4gICAgICB9KTtcblxuICAgICAgLy8gVXBkYXRlIGNhY2hlIHdpdGggc3RhdGUgZnJvbSBiYWNrZW5kXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZUNhY2hlLnNldChleGVjdXRpb25JZCwgcmVzcG9uc2Uuc3RhdGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICBvdXRwdXQ6IHJlc3BvbnNlLm91dHB1dCxcbiAgICAgICAgbmV4dFRhc2s6IHJlc3BvbnNlLm5leHRUYXNrIHx8IG51bGwsIC8vIEJhY2tlbmQgZGV0ZXJtaW5lcyB0aGlzIGZyb20gb3V0Y29tZUNvbm5lY3Rpb25zXG4gICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICBzdGF0ZTogcmVzcG9uc2Uuc3RhdGVcbiAgICAgIH07XG5cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IGVycm9yLm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byByZXN1bWUgd29ya2Zsb3cnLFxuICAgICAgICBuZXh0VGFzazogbnVsbFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHdvcmtmbG93IGV4ZWN1dGlvbiBzdGF0ZSAoZnJvbSBjYWNoZSBvciBiYWNrZW5kKS5cbiAgICovXG4gIGFzeW5jIGdldFdvcmtmbG93U3RhdGUoZXhlY3V0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8QVhQV29ya2Zsb3dFeGVjdXRpb25TdGF0ZSB8IG51bGw+IHtcbiAgICAvLyBDaGVjayBjYWNoZSBmaXJzdFxuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuc3RhdGVDYWNoZS5nZXQoZXhlY3V0aW9uSWQpO1xuICAgIGlmIChjYWNoZWQpIHtcbiAgICAgIC8vIENhY2hlIGlzIHZhbGlkIGZvciA1IG1pbnV0ZXNcbiAgICAgIGNvbnN0IGNhY2hlQWdlID0gRGF0ZS5ub3coKSAtIGNhY2hlZC5sYXN0VXBkYXRlZC5nZXRUaW1lKCk7XG4gICAgICBpZiAoY2FjaGVBZ2UgPCA1ICogNjAgKiAxMDAwKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmV0Y2ggZnJvbSBiYWNrZW5kXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRlID0gYXdhaXQgdGhpcy53b3JrZmxvd0V4ZWN1dGlvblNlcnZpY2UuZ2V0RXhlY3V0aW9uU3RhdGUoe1xuICAgICAgICBleGVjdXRpb25JZFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIC8vIFVwZGF0ZSBjYWNoZVxuICAgICAgdGhpcy5zdGF0ZUNhY2hlLnNldChleGVjdXRpb25JZCwgc3RhdGUpO1xuICAgICAgXG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFByaXZhdGUgTWV0aG9kcyAgIC0tLS1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIGZyb250ZW5kIGFjdGl2aXR5IHVzaW5nIENvbW1hbmRCdXMuXG4gICAqIFxuICAgKiBGcm9udGVuZCBhY3Rpdml0aWVzIGFyZSBleGVjdXRlZCBpbiB0aGUgYnJvd3NlciB1c2luZyBBWFBDb21tYW5kU2VydmljZS5cbiAgICogQWN0aXZpdGllcyBjYW4gYWxzbyBiZSBleGVjdXRlZCBpbiBib3RoIGZyb250ZW5kIGFuZCBiYWNrZW5kIChoeWJyaWQgbW9kZSkuXG4gICAqIFxuICAgKiBAcGFyYW0gdGFzayAtIEZyb250ZW5kIHRhc2sgdG8gZXhlY3V0ZVxuICAgKiBAcmV0dXJucyBFeGVjdXRpb24gcmVzdWx0IHdpdGggb3V0cHV0IGFuZCBvdXRjb21lXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVGcm9udGVuZEFjdGl2aXR5KFxuICAgIHRhc2s6IEFYUFdvcmtmbG93VGFza1xuICApOiBQcm9taXNlPHsgb3V0cHV0OiBhbnk7IG91dGNvbWU6IHN0cmluZyB9PiB7XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIC8vIENoZWNrIGlmIGNvbW1hbmQgZXhpc3RzXG4gICAgICBjb25zdCBjb21tYW5kRXhpc3RzID0gdGhpcy5jb21tYW5kU2VydmljZS5leGlzdHModGFzay5hY3Rpdml0eVR5cGUpO1xuICAgICAgXG4gICAgICBpZiAoIWNvbW1hbmRFeGlzdHMpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBbV29ya2Zsb3dDb29yZGluYXRvcl0g4pqg77iPIEZyb250ZW5kIGFjdGl2aXR5ICcke3Rhc2suYWN0aXZpdHlUeXBlfScgaXMgbm90IHJlZ2lzdGVyZWQuIFNraXBwaW5nIGV4ZWN1dGlvbi5gKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvdXRwdXQ6IG51bGwsXG4gICAgICAgICAgb3V0Y29tZTogJ0RvbmUnXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEV4ZWN1dGUgYWN0aXZpdHkgdmlhIENvbW1hbmRCdXNcbiAgICAgIC8vIEFjdGl2aXRpZXMgcmVnaXN0ZXJlZCBhcyBBWFBDb21tYW5kIHJldHVybiB7b3V0cHV0LCBvdXRjb21lc31cbiAgICAgIFxuICAgICAgLy8g8J+OryBGbGF0dGVuIHByb3BlcnRpZXMgaWYgbmVzdGVkICh3b3JrZmxvdy1zdHVkaW8gZm9ybWF0KVxuICAgICAgbGV0IGNvbW1hbmRJbnB1dCA9IHRhc2suaW5wdXQgfHwgdGFzay5jb25maWcgfHwge307XG4gICAgICBpZiAoY29tbWFuZElucHV0Wydwcm9wZXJ0aWVzJ10gJiYgdHlwZW9mIGNvbW1hbmRJbnB1dFsncHJvcGVydGllcyddID09PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBGbGF0dGVuOiB7cHJvcGVydGllczoge3RleHQ6IFwiLi4uXCJ9fSAtPiB7dGV4dDogXCIuLi5cIn1cbiAgICAgICAgY29tbWFuZElucHV0ID0geyAuLi5jb21tYW5kSW5wdXRbJ3Byb3BlcnRpZXMnXSB9O1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbW1hbmRTZXJ2aWNlLmV4ZWN1dGU8UmVjb3JkPHN0cmluZywgYW55Piwge1xuICAgICAgICBvdXRwdXQ6IGFueTtcbiAgICAgICAgb3V0Y29tZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICB9Pih0YXNrLmFjdGl2aXR5VHlwZSwgY29tbWFuZElucHV0KTtcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvdXRwdXQ6IG51bGwsXG4gICAgICAgICAgb3V0Y29tZTogJ0ZhaWxlZCcsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAgIGVycm9yOiByZXN1bHQubWVzc2FnZT8udGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91dGNvbWU6ICdGYWlsZWQnLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb21tYW5kUmVzdWx0ID0gcmVzdWx0LmRhdGE7XG4gICAgICBjb25zdCBvdXRjb21lcyA9IGNvbW1hbmRSZXN1bHQ/Lm91dGNvbWVzID8/IHt9O1xuICAgICAgXG4gICAgICBsZXQgb3V0Y29tZSA9ICdEb25lJztcbiAgICAgIGlmIChPYmplY3Qua2V5cyhvdXRjb21lcykubGVuZ3RoID4gMCkge1xuICAgICAgICBvdXRjb21lID0gb3V0Y29tZXNbJ0RvbmUnXSA/ICdEb25lJyA6IE9iamVjdC5rZXlzKG91dGNvbWVzKVswXSB8fCAnRG9uZSc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG91dHB1dDogY29tbWFuZFJlc3VsdD8ub3V0cHV0ID8/IG51bGwsXG4gICAgICAgIG91dGNvbWUsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtXb3JrZmxvd0Nvb3JkaW5hdG9yXSDinYwgRXJyb3IgZXhlY3V0aW5nIGZyb250ZW5kIGFjdGl2aXR5ICcke3Rhc2suYWN0aXZpdHlUeXBlfSc6YCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0cHV0OiB7IGVycm9yOiBlcnJvci5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJyB9LFxuICAgICAgICBvdXRjb21lOiAnRmFpbGVkJ1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgd29ya2Zsb3cgZXhlY3V0aW9uIGluIGJhY2tlbmQuXG4gICAqIEJhY2tlbmQgcmV0dXJucyBleGVjdXRpb25JZCwgaW5pdGlhbCBzdGF0ZSwgYW5kIGZpcnN0IHRhc2sgdG8gZXhlY3V0ZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc3RhcnRXb3JrZmxvd0V4ZWN1dGlvbihcbiAgICB3b3JrZmxvd0lkOiBzdHJpbmcsXG4gICAgaW5wdXQ6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogUHJvbWlzZTx7IGV4ZWN1dGlvbklkOiBzdHJpbmc7IHN0YXRlOiBBWFBXb3JrZmxvd0V4ZWN1dGlvblN0YXRlOyBwZW5kaW5nVGFzaz86IEFYUFdvcmtmbG93VGFzayB8IG51bGwgfT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy53b3JrZmxvd0V4ZWN1dGlvblNlcnZpY2Uuc3RhcnRFeGVjdXRpb24oe1xuICAgICAgd29ya2Zsb3dJZCxcbiAgICAgIGlucHV0XG4gICAgfSk7XG5cbiAgICAvLyBDYWNoZSBzdGF0ZVxuICAgIHRoaXMuc3RhdGVDYWNoZS5zZXQocmVzcG9uc2UuZXhlY3V0aW9uSWQsIHJlc3BvbnNlLnN0YXRlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBleGVjdXRpb25JZDogcmVzcG9uc2UuZXhlY3V0aW9uSWQsXG4gICAgICBzdGF0ZTogcmVzcG9uc2Uuc3RhdGUsXG4gICAgICBwZW5kaW5nVGFzazogcmVzcG9uc2UucGVuZGluZ1Rhc2tcbiAgICB9O1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbiJdfQ==","/**\n * Types and interfaces for Workflow Execution Service.\n */\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZXhlY3V0aW9uLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2VuZ2luZS9ydW50aW1lL3dvcmtmbG93LWV4ZWN1dGlvbi50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7R0FFRyIsInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBUeXBlcyBhbmQgaW50ZXJmYWNlcyBmb3IgV29ya2Zsb3cgRXhlY3V0aW9uIFNlcnZpY2UuXG4gKi9cblxuaW1wb3J0IHsgQVhQV29ya2Zsb3dEZWZpbml0aW9uIH0gZnJvbSBcIi4uL3dvcmtmbG93LWRlZmluaXRpb24udHlwZXNcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgd29ya2Zsb3cgdGFzayB0aGF0IG5lZWRzIHRvIGJlIGV4ZWN1dGVkLlxuICogSW5zcGlyZWQgYnkgVGVtcG9yYWwncyBBY3Rpdml0eSBUYXNrcyBhbmQgQ2FtdW5kYSdzIEV4dGVybmFsIFRhc2tzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdvcmtmbG93VGFzayB7XG4gIC8qKlxuICAgKiBVbmlxdWUgdG9rZW4gZm9yIHRoaXMgdGFzayAodXNlZCBmb3IgY29tcGxldGlvbi9zZWN1cml0eSkuXG4gICAqL1xuICB0YXNrVG9rZW46IHN0cmluZztcblxuICAvKipcbiAgICogQWN0aXZpdHkgSUQgZnJvbSB3b3JrZmxvdyBkZWZpbml0aW9uLlxuICAgKi9cbiAgYWN0aXZpdHlJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY3Rpdml0eSB0eXBlIChlLmcuLCAnd29ya2Zsb3ctYWN0aXZpdHk6c2hvdy10b2FzdCcpLlxuICAgKi9cbiAgYWN0aXZpdHlUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGFjdGl2aXR5IG5hbWUuXG4gICAqL1xuICBhY3Rpdml0eU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXJlIHRoaXMgdGFzayBzaG91bGQgYmUgZXhlY3V0ZWQuXG4gICAqIC0gJ2Zyb250ZW5kJzogRXhlY3V0ZSBpbiBicm93c2VyIChVSSBhY3Rpdml0aWVzLCBjb25zb2xlLCBldmVudHMpXG4gICAqIC0gJ2JhY2tlbmQnOiBFeGVjdXRlIGluIGJhY2tlbmQgKGJ1c2luZXNzIGxvZ2ljLCBBUEkgY2FsbHMpXG4gICAqIC0gJ2JvdGgnOiBFeGVjdXRlIGluIGJvdGggZnJvbnRlbmQgYW5kIGJhY2tlbmQgKGh5YnJpZCBhY3Rpdml0aWVzKVxuICAgKi9cbiAgZXhlY3V0aW9uTW9kZTogJ2Zyb250ZW5kJyB8ICdiYWNrZW5kJyB8ICdib3RoJztcblxuICAvKipcbiAgICogSW5wdXQgZGF0YSBmb3IgdGhlIGFjdGl2aXR5IChmb3IgZnJvbnRlbmQgYWN0aXZpdGllcykuXG4gICAqL1xuICBpbnB1dD86IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBhY3Rpdml0eSAoZm9yIGZyb250ZW5kIGFjdGl2aXRpZXMpLlxuICAgKi9cbiAgY29uZmlnPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHRvIHN0YXJ0IGEgd29ya2Zsb3cgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFN0YXJ0V29ya2Zsb3dFeGVjdXRpb25SZXF1ZXN0IHtcbiAgLyoqXG4gICAqIFdvcmtmbG93IElEIHRvIGV4ZWN1dGUuXG4gICAqL1xuICB3b3JrZmxvd0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgaW5wdXQgZGF0YSBmb3Igd29ya2Zsb3cuXG4gICAqL1xuICBpbnB1dDogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBhZnRlciBzdGFydGluZyB3b3JrZmxvdyBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQU3RhcnRXb3JrZmxvd0V4ZWN1dGlvblJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBleGVjdXRpb24gSUQgZm9yIHRoaXMgd29ya2Zsb3cgcnVuLlxuICAgKi9cbiAgZXhlY3V0aW9uSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3VycmVudCB3b3JrZmxvdyBzdGF0ZS5cbiAgICovXG4gIHN0YXRlOiBBWFBXb3JrZmxvd0V4ZWN1dGlvblN0YXRlO1xuXG4gIC8qKlxuICAgKiBGaXJzdCB0YXNrIHRvIGV4ZWN1dGUgKGRldGVybWluZWQgYnkgYmFja2VuZCkuXG4gICAqIENsaWVudCBzaG91bGQgZXhlY3V0ZSB0aGlzIHRhc2sgYmFzZWQgb24gZXhlY3V0aW9uTW9kZS5cbiAgICovXG4gIHBlbmRpbmdUYXNrPzogQVhQV29ya2Zsb3dUYXNrIHwgbnVsbDtcbn1cblxuXG4vKipcbiAqIFJlcXVlc3QgdG8gcmVzdW1lIGEgc3VzcGVuZGVkIHdvcmtmbG93LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlc3VtZVdvcmtmbG93RXhlY3V0aW9uUmVxdWVzdCB7XG4gIC8qKlxuICAgKiBFeGVjdXRpb24gSUQuXG4gICAqL1xuICBleGVjdXRpb25JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdGVwIElEIHRoYXQgd2FzIHdhaXRpbmcgZm9yIHVzZXIgaW5wdXQuXG4gICAqL1xuICBzdGVwSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogU2VjdXJlIHRhc2sgdG9rZW4gaXNzdWVkIHdpdGggdGhlIHBlbmRpbmcgdGFzay5cbiAgICogQmFja2VuZCB2YWxpZGF0ZXMgYW5kIHJlc29sdmVzIHRoZSBzdGVwIHVzaW5nIHRoaXMgdG9rZW4uXG4gICAqL1xuICB0YXNrVG9rZW46IHN0cmluZztcblxuICAvKipcbiAgICogVXNlciBhY3Rpb24gb3V0Y29tZSAoZS5nLiwgJ0NvbmZpcm1lZCcsICdDYW5jZWxsZWQnKS5cbiAgICovXG4gIG91dGNvbWU6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBpbnB1dCBkYXRhLlxuICAgKi9cbiAgdXNlcklucHV0PzogYW55O1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGFmdGVyIHJlc3VtaW5nIHdvcmtmbG93LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlc3VtZVdvcmtmbG93RXhlY3V0aW9uUmVzcG9uc2Uge1xuICAvKipcbiAgICogQWN0aXZpdHkgZXhlY3V0aW9uIG91dHB1dC5cbiAgICovXG4gIG91dHB1dDogYW55O1xuXG4gIC8qKlxuICAgKiBBY3Rpdml0eSBleGVjdXRpb24gb3V0Y29tZXMuXG4gICAqL1xuICBvdXRjb21lczogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICAvKipcbiAgICogTmV4dCB0YXNrIHRvIGV4ZWN1dGUgKGlmIGFueSkuXG4gICAqL1xuICBuZXh0VGFzaz86IEFYUFdvcmtmbG93VGFzayB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZWQgd29ya2Zsb3cgc3RhdGUuXG4gICAqL1xuICBzdGF0ZTogQVhQV29ya2Zsb3dFeGVjdXRpb25TdGF0ZTtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHRvIGdldCB3b3JrZmxvdyBleGVjdXRpb24gc3RhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQR2V0V29ya2Zsb3dFeGVjdXRpb25TdGF0ZVJlcXVlc3Qge1xuICAvKipcbiAgICogRXhlY3V0aW9uIElELlxuICAgKi9cbiAgZXhlY3V0aW9uSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHRvIGdldCB3b3JrZmxvdyBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUEdldFdvcmtmbG93RGVmaW5pdGlvblJlcXVlc3Qge1xuICAvKipcbiAgICogV29ya2Zsb3cgSUQgb3IgZGVmaW5pdGlvbiBJRC5cbiAgICovXG4gIHdvcmtmbG93SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSB3aXRoIHdvcmtmbG93IGRlZmluaXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQR2V0V29ya2Zsb3dEZWZpbml0aW9uUmVzcG9uc2Uge1xuICAvKipcbiAgICogV29ya2Zsb3cgZGVmaW5pdGlvbi5cbiAgICovXG4gIHdvcmtmbG93OiBBWFBXb3JrZmxvd0RlZmluaXRpb247XG59XG5cbi8qKlxuICogV29ya2Zsb3cgZXhlY3V0aW9uIHN0YXRlIChtYW5hZ2VkIGJ5IGJhY2tlbmQsIGNhY2hlZCBpbiBjbGllbnQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdvcmtmbG93RXhlY3V0aW9uU3RhdGUge1xuICAvKipcbiAgICogVW5pcXVlIGV4ZWN1dGlvbiBJRC5cbiAgICovXG4gIGV4ZWN1dGlvbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IElELlxuICAgKi9cbiAgd29ya2Zsb3dJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IGV4ZWN1dGlvbiBzdGF0dXMuXG4gICAqL1xuICBzdGF0dXM6ICdydW5uaW5nJyB8ICdjb21wbGV0ZWQnIHwgJ3N1c3BlbmRlZCcgfCAnZXJyb3InO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHN0ZXAgSUQgKGlmIHN1c3BlbmRlZCBvciBydW5uaW5nKS5cbiAgICovXG4gIGN1cnJlbnRTdGVwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IHZhcmlhYmxlcyAoc3RhdGUpLlxuICAgKi9cbiAgdmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIGlucHV0IGRhdGEuXG4gICAqL1xuICBpbnB1dDogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICAvKipcbiAgICogRmluYWwgb3V0cHV0IGRhdGEgKGlmIGNvbXBsZXRlZCkuXG4gICAqL1xuICBvdXRwdXQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8qKlxuICAgKiBMYXN0IHVwZGF0ZSB0aW1lc3RhbXAuXG4gICAqL1xuICBsYXN0VXBkYXRlZDogRGF0ZTtcbn1cblxuIl19","// Production Workflow Coordinator (Frontend/Backend Separation)\nexport * from './workflow-coordinator';\n// Workflow Execution Service (Interface & Types)\nexport * from './workflow-execution.service';\nexport * from './workflow-execution.types';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL3J1bnRpbWUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0VBQWdFO0FBQ2hFLGNBQWMsd0JBQXdCLENBQUM7QUFFdkMsaURBQWlEO0FBQ2pELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFByb2R1Y3Rpb24gV29ya2Zsb3cgQ29vcmRpbmF0b3IgKEZyb250ZW5kL0JhY2tlbmQgU2VwYXJhdGlvbilcbmV4cG9ydCAqIGZyb20gJy4vd29ya2Zsb3ctY29vcmRpbmF0b3InO1xuXG4vLyBXb3JrZmxvdyBFeGVjdXRpb24gU2VydmljZSAoSW50ZXJmYWNlICYgVHlwZXMpXG5leHBvcnQgKiBmcm9tICcuL3dvcmtmbG93LWV4ZWN1dGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vd29ya2Zsb3ctZXhlY3V0aW9uLnR5cGVzJzsiXX0=","import { Activity } from '../activity.types';\n/**\n * WriteLine Activity - Simple console logging activity.\n *\n * Usage:\n * ```typescript\n * const activity = new WriteLine();\n * await activity.execute({ text: 'Hello World' });\n * ```\n */\nexport class WriteLine extends Activity {\n constructor() {\n super('WriteLine');\n }\n async execute(input) {\n const text = input.text || '';\n if (text !== undefined && text !== null) {\n console.log(`[WriteLine] ${text}`);\n }\n return this.createResult(undefined, 'Done');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtbGluZS5hY3Rpdml0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi9lbmdpbmUvYWN0aXZpdGllcy93cml0ZS1saW5lLmFjdGl2aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxTQUFVLFNBQVEsUUFBaUM7SUFDOUQ7UUFDRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBd0I7UUFDcEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFFOUIsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uL2FjdGl2aXR5LnR5cGVzJztcblxuLyoqXG4gKiBXcml0ZUxpbmUgQWN0aXZpdHkgLSBTaW1wbGUgY29uc29sZSBsb2dnaW5nIGFjdGl2aXR5LlxuICogXG4gKiBVc2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFjdGl2aXR5ID0gbmV3IFdyaXRlTGluZSgpO1xuICogYXdhaXQgYWN0aXZpdHkuZXhlY3V0ZSh7IHRleHQ6ICdIZWxsbyBXb3JsZCcgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFdyaXRlTGluZSBleHRlbmRzIEFjdGl2aXR5PHsgdGV4dD86IHN0cmluZyB9LCB2b2lkPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdXcml0ZUxpbmUnKTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGUoaW5wdXQ6IHsgdGV4dD86IHN0cmluZyB9KSB7XG4gICAgY29uc3QgdGV4dCA9IGlucHV0LnRleHQgfHwgJyc7XG5cbiAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkICYmIHRleHQgIT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBbV3JpdGVMaW5lXSAke3RleHR9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzdWx0KHVuZGVmaW5lZCwgJ0RvbmUnKTtcbiAgfVxufSJdfQ==","import { Activity } from '../activity.types';\n/**\n * Sequence Activity - Executes activities in sequential order.\n *\n * Usage:\n * ```typescript\n * const sequence = new Sequence();\n * sequence.activities = [activity1, activity2, activity3];\n * await sequence.execute({});\n * ```\n */\nexport class Sequence extends Activity {\n constructor() {\n super('Sequence');\n /**\n * Activities to execute in sequence.\n */\n this.activities = [];\n }\n async execute(input) {\n // Execute all activities in sequence\n for (const activity of this.activities) {\n const result = await activity.execute(input);\n if (!result.success) {\n return {\n success: false,\n message: result.message,\n data: {\n output: undefined,\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n return this.createResult(undefined, 'Done');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2UuYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXRpZXMvc2VxdWVuY2UuYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBYSxNQUFNLG1CQUFtQixDQUFDO0FBRXhEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxRQUFTLFNBQVEsUUFBa0I7SUFNOUM7UUFDRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFOcEI7O1dBRUc7UUFDSCxlQUFVLEdBQWdCLEVBQUUsQ0FBQztJQUk3QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFTO1FBQ3JCLHFDQUFxQztRQUNyQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QyxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDcEIsT0FBTztvQkFDTCxPQUFPLEVBQUUsS0FBSztvQkFDZCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87b0JBQ3ZCLElBQUksRUFBRTt3QkFDSixNQUFNLEVBQUUsU0FBUzt3QkFDakIsUUFBUSxFQUFFOzRCQUNSLE1BQU0sRUFBRSxJQUFJO3lCQUNiO3FCQUNGO2lCQUNGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZpdHksIElBY3Rpdml0eSB9IGZyb20gJy4uL2FjdGl2aXR5LnR5cGVzJztcblxuLyoqXG4gKiBTZXF1ZW5jZSBBY3Rpdml0eSAtIEV4ZWN1dGVzIGFjdGl2aXRpZXMgaW4gc2VxdWVudGlhbCBvcmRlci5cbiAqIFxuICogVXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgpO1xuICogc2VxdWVuY2UuYWN0aXZpdGllcyA9IFthY3Rpdml0eTEsIGFjdGl2aXR5MiwgYWN0aXZpdHkzXTtcbiAqIGF3YWl0IHNlcXVlbmNlLmV4ZWN1dGUoe30pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXF1ZW5jZSBleHRlbmRzIEFjdGl2aXR5PHt9LCB2b2lkPiB7XG4gIC8qKlxuICAgKiBBY3Rpdml0aWVzIHRvIGV4ZWN1dGUgaW4gc2VxdWVuY2UuXG4gICAqL1xuICBhY3Rpdml0aWVzOiBJQWN0aXZpdHlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdTZXF1ZW5jZScpO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dDoge30pIHtcbiAgICAvLyBFeGVjdXRlIGFsbCBhY3Rpdml0aWVzIGluIHNlcXVlbmNlXG4gICAgZm9yIChjb25zdCBhY3Rpdml0eSBvZiB0aGlzLmFjdGl2aXRpZXMpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFjdGl2aXR5LmV4ZWN1dGUoaW5wdXQpO1xuICAgICAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIG1lc3NhZ2U6IHJlc3VsdC5tZXNzYWdlLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG91dHB1dDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3V0Y29tZXM6IHtcbiAgICAgICAgICAgICAgRmFpbGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN1bHQodW5kZWZpbmVkLCAnRG9uZScpO1xuICB9XG59Il19","import { inject } from '@angular/core';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Activity } from '../activity.types';\n/**\n * Show Confirm Dialog Activity - Displays confirmation dialog to user.\n *\n * Has two outcomes:\n * - 'Confirmed': User clicked confirm/yes\n * - 'Cancelled': User clicked cancel/no\n *\n * Usage:\n * ```typescript\n * const dialog = new ShowConfirmDialog();\n * await dialog.execute({\n * title: 'Confirm Delete',\n * message: 'Are you sure?',\n * color: 'danger'\n * });\n * ```\n */\nexport class ShowConfirmDialog extends Activity {\n //#endregion\n constructor() {\n super('ShowConfirmDialog');\n //#region ---- Services & Dependencies ----\n this.dialogService = inject(AXDialogService);\n this.translationService = inject(AXTranslationService);\n }\n async execute(input) {\n const { title = '', message = '', color = 'primary', defaultAction = 'cancel', align = 'horizontal', backdrop = false } = input;\n // Translate title and message only if they start with '@' (translation key)\n // Otherwise use the text as-is\n const translatedTitle = title\n ? (title.startsWith('@')\n ? await this.translationService.translateAsync(title) || title\n : title)\n : '';\n const translatedMessage = message\n ? (message.startsWith('@')\n ? await this.translationService.translateAsync(message) || message\n : message)\n : '';\n try {\n const confirmResult = await this.dialogService.confirm(translatedTitle, translatedMessage, color, align, backdrop, defaultAction);\n const result = confirmResult.result;\n const action = result ? 'confirm' : 'cancel';\n return this.createResult({\n result,\n action\n }, result ? 'Confirmed' : 'Cancelled');\n }\n catch (err) {\n console.error('[ShowConfirmDialog] Error showing dialog:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Failed to show confirm dialog',\n },\n data: {\n output: {\n result: false,\n action: 'error',\n },\n outcomes: {\n Cancelled: true,\n },\n },\n };\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1jb25maXJtLWRpYWxvZy5hY3Rpdml0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi9lbmdpbmUvYWN0aXZpdGllcy9zaG93LWNvbmZpcm0tZGlhbG9nLmFjdGl2aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3Qzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxRQVVyQztJQU1BLFlBQVk7SUFFWjtRQUNFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBUjdCLCtDQUErQztRQUU5QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4Qyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQU1uRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQU9iO1FBQ0MsTUFBTSxFQUNKLEtBQUssR0FBRyxFQUFFLEVBQ1YsT0FBTyxHQUFHLEVBQUUsRUFDWixLQUFLLEdBQUcsU0FBUyxFQUNqQixhQUFhLEdBQUcsUUFBUSxFQUN4QixLQUFLLEdBQUcsWUFBWSxFQUNwQixRQUFRLEdBQUcsS0FBSyxFQUNqQixHQUFHLEtBQUssQ0FBQztRQUVWLDRFQUE0RTtRQUM1RSwrQkFBK0I7UUFDL0IsTUFBTSxlQUFlLEdBQUcsS0FBSztZQUMzQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLO2dCQUM5RCxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ1YsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNQLE1BQU0saUJBQWlCLEdBQUcsT0FBTztZQUMvQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztnQkFDeEIsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPO2dCQUNsRSxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ1osQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLElBQUksQ0FBQztZQUNILE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQ3BELGVBQWUsRUFDZixpQkFBaUIsRUFDakIsS0FBSyxFQUNMLEtBQUssRUFDTCxRQUFRLEVBQ1IsYUFBYSxDQUNkLENBQUM7WUFFRixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFFN0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUN2QixNQUFNO2dCQUNOLE1BQU07YUFDUCxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV6QyxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEUsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtpQkFDM0U7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRTt3QkFDTixNQUFNLEVBQUUsS0FBSzt3QkFDYixNQUFNLEVBQUUsT0FBTztxQkFDaEI7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLFNBQVMsRUFBRSxJQUFJO3FCQUNoQjtpQkFDRjthQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEFYU3R5bGVDb2xvclR5cGUgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQWN0aXZpdHkgfSBmcm9tICcuLi9hY3Rpdml0eS50eXBlcyc7XG5cbi8qKlxuICogU2hvdyBDb25maXJtIERpYWxvZyBBY3Rpdml0eSAtIERpc3BsYXlzIGNvbmZpcm1hdGlvbiBkaWFsb2cgdG8gdXNlci5cbiAqIFxuICogSGFzIHR3byBvdXRjb21lczpcbiAqIC0gJ0NvbmZpcm1lZCc6IFVzZXIgY2xpY2tlZCBjb25maXJtL3llc1xuICogLSAnQ2FuY2VsbGVkJzogVXNlciBjbGlja2VkIGNhbmNlbC9ub1xuICogXG4gKiBVc2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGRpYWxvZyA9IG5ldyBTaG93Q29uZmlybURpYWxvZygpO1xuICogYXdhaXQgZGlhbG9nLmV4ZWN1dGUoe1xuICogICB0aXRsZTogJ0NvbmZpcm0gRGVsZXRlJyxcbiAqICAgbWVzc2FnZTogJ0FyZSB5b3Ugc3VyZT8nLFxuICogICBjb2xvcjogJ2RhbmdlcidcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTaG93Q29uZmlybURpYWxvZyBleHRlbmRzIEFjdGl2aXR5PHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIGNvbG9yPzogQVhTdHlsZUNvbG9yVHlwZTtcbiAgZGVmYXVsdEFjdGlvbj86ICdjb25maXJtJyB8ICdjYW5jZWwnO1xuICBhbGlnbj86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCc7XG4gIGJhY2tkcm9wPzogYm9vbGVhbjtcbn0sIHtcbiAgcmVzdWx0OiBib29sZWFuO1xuICBhY3Rpb246IHN0cmluZztcbn0+IHtcbiAgLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlcyAmIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQVhEaWFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdTaG93Q29uZmlybURpYWxvZycpO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dDoge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgY29sb3I/OiBBWFN0eWxlQ29sb3JUeXBlO1xuICAgIGRlZmF1bHRBY3Rpb24/OiAnY29uZmlybScgfCAnY2FuY2VsJztcbiAgICBhbGlnbj86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCc7XG4gICAgYmFja2Ryb3A/OiBib29sZWFuO1xuICB9KSB7XG4gICAgY29uc3Qge1xuICAgICAgdGl0bGUgPSAnJyxcbiAgICAgIG1lc3NhZ2UgPSAnJyxcbiAgICAgIGNvbG9yID0gJ3ByaW1hcnknLFxuICAgICAgZGVmYXVsdEFjdGlvbiA9ICdjYW5jZWwnLFxuICAgICAgYWxpZ24gPSAnaG9yaXpvbnRhbCcsXG4gICAgICBiYWNrZHJvcCA9IGZhbHNlXG4gICAgfSA9IGlucHV0O1xuXG4gICAgLy8gVHJhbnNsYXRlIHRpdGxlIGFuZCBtZXNzYWdlIG9ubHkgaWYgdGhleSBzdGFydCB3aXRoICdAJyAodHJhbnNsYXRpb24ga2V5KVxuICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIHRleHQgYXMtaXNcbiAgICBjb25zdCB0cmFuc2xhdGVkVGl0bGUgPSB0aXRsZVxuICAgICAgPyAodGl0bGUuc3RhcnRzV2l0aCgnQCcpXG4gICAgICAgID8gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmModGl0bGUpIHx8IHRpdGxlXG4gICAgICAgIDogdGl0bGUpXG4gICAgICA6ICcnO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRNZXNzYWdlID0gbWVzc2FnZVxuICAgICAgPyAobWVzc2FnZS5zdGFydHNXaXRoKCdAJylcbiAgICAgICAgPyBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhtZXNzYWdlKSB8fCBtZXNzYWdlXG4gICAgICAgIDogbWVzc2FnZSlcbiAgICAgIDogJyc7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY29uZmlybVJlc3VsdCA9IGF3YWl0IHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKFxuICAgICAgICB0cmFuc2xhdGVkVGl0bGUsXG4gICAgICAgIHRyYW5zbGF0ZWRNZXNzYWdlLFxuICAgICAgICBjb2xvcixcbiAgICAgICAgYWxpZ24sXG4gICAgICAgIGJhY2tkcm9wLFxuICAgICAgICBkZWZhdWx0QWN0aW9uXG4gICAgICApO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBjb25maXJtUmVzdWx0LnJlc3VsdDtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHJlc3VsdCA/ICdjb25maXJtJyA6ICdjYW5jZWwnO1xuXG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN1bHQoe1xuICAgICAgICByZXN1bHQsXG4gICAgICAgIGFjdGlvblxuICAgICAgfSwgcmVzdWx0ID8gJ0NvbmZpcm1lZCcgOiAnQ2FuY2VsbGVkJyk7XG5cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tTaG93Q29uZmlybURpYWxvZ10gRXJyb3Igc2hvd2luZyBkaWFsb2c6JywgZXJyKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgdGV4dDogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdGYWlsZWQgdG8gc2hvdyBjb25maXJtIGRpYWxvZycsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAgIHJlc3VsdDogZmFsc2UsXG4gICAgICAgICAgICBhY3Rpb246ICdlcnJvcicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdXRjb21lczoge1xuICAgICAgICAgICAgQ2FuY2VsbGVkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuXG4iXX0=","import { inject } from '@angular/core';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Activity } from '../activity.types';\n/**\n * Show Alert Dialog Activity - Displays alert dialog to user.\n *\n * Has one outcome:\n * - 'Done': User clicked OK\n *\n * Usage:\n * ```typescript\n * const dialog = new ShowAlertDialog();\n * await dialog.execute({\n * title: 'Alert',\n * message: 'This is an alert',\n * color: 'info'\n * });\n * ```\n */\nexport class ShowAlertDialog extends Activity {\n //#endregion\n constructor() {\n super('ShowAlertDialog');\n //#region ---- Services & Dependencies ----\n this.dialogService = inject(AXDialogService);\n this.translationService = inject(AXTranslationService);\n }\n async execute(input) {\n const { title = '', message = '', color = 'primary' } = input;\n // Translate title and message only if they start with '@' (translation key)\n // Otherwise use the text as-is\n const translatedTitle = title\n ? (title.startsWith('@')\n ? await this.translationService.translateAsync(title) || title\n : title)\n : '';\n const translatedMessage = message\n ? (message.startsWith('@')\n ? await this.translationService.translateAsync(message) || message\n : message)\n : '';\n try {\n await this.dialogService.alert(translatedTitle, translatedMessage, color);\n return this.createResult({\n result: true,\n action: 'ok'\n }, 'Done');\n }\n catch (err) {\n console.error('[ShowAlertDialog] Error showing dialog:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Failed to show alert dialog',\n },\n data: {\n output: {\n result: false,\n action: 'error',\n },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1hbGVydC1kaWFsb2cuYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXRpZXMvc2hvdy1hbGVydC1kaWFsb2cuYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLFFBT25DO0lBTUEsWUFBWTtJQUVaO1FBQ0UsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFSM0IsK0NBQStDO1FBRTlCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBTW5FLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBSWI7UUFDQyxNQUFNLEVBQ0osS0FBSyxHQUFHLEVBQUUsRUFDVixPQUFPLEdBQUcsRUFBRSxFQUNaLEtBQUssR0FBRyxTQUFTLEVBQ2xCLEdBQUcsS0FBSyxDQUFDO1FBRVYsNEVBQTRFO1FBQzVFLCtCQUErQjtRQUMvQixNQUFNLGVBQWUsR0FBRyxLQUFLO1lBQzNCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUNwQixDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUs7Z0JBQzlELENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDWixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsTUFBTSxpQkFBaUIsR0FBRyxPQUFPO1lBQy9CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUN0QixDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU87Z0JBQ2xFLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDZCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVAsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFMUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUN2QixNQUFNLEVBQUUsSUFBSTtnQkFDWixNQUFNLEVBQUUsSUFBSTthQUNiLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFYixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUQsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtpQkFDekU7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRTt3QkFDTixNQUFNLEVBQUUsS0FBSzt3QkFDYixNQUFNLEVBQUUsT0FBTztxQkFDaEI7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhTdHlsZUNvbG9yVHlwZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uL2FjdGl2aXR5LnR5cGVzJztcblxuLyoqXG4gKiBTaG93IEFsZXJ0IERpYWxvZyBBY3Rpdml0eSAtIERpc3BsYXlzIGFsZXJ0IGRpYWxvZyB0byB1c2VyLlxuICogXG4gKiBIYXMgb25lIG91dGNvbWU6XG4gKiAtICdEb25lJzogVXNlciBjbGlja2VkIE9LXG4gKiBcbiAqIFVzYWdlOlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGlhbG9nID0gbmV3IFNob3dBbGVydERpYWxvZygpO1xuICogYXdhaXQgZGlhbG9nLmV4ZWN1dGUoe1xuICogICB0aXRsZTogJ0FsZXJ0JyxcbiAqICAgbWVzc2FnZTogJ1RoaXMgaXMgYW4gYWxlcnQnLFxuICogICBjb2xvcjogJ2luZm8nXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2hvd0FsZXJ0RGlhbG9nIGV4dGVuZHMgQWN0aXZpdHk8e1xuICB0aXRsZT86IHN0cmluZztcbiAgbWVzc2FnZT86IHN0cmluZztcbiAgY29sb3I/OiBBWFN0eWxlQ29sb3JUeXBlO1xufSwge1xuICByZXN1bHQ6IGJvb2xlYW47XG4gIGFjdGlvbjogc3RyaW5nO1xufT4ge1xuICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ1Nob3dBbGVydERpYWxvZycpO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dDoge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgY29sb3I/OiBBWFN0eWxlQ29sb3JUeXBlO1xuICB9KSB7XG4gICAgY29uc3Qge1xuICAgICAgdGl0bGUgPSAnJyxcbiAgICAgIG1lc3NhZ2UgPSAnJyxcbiAgICAgIGNvbG9yID0gJ3ByaW1hcnknXG4gICAgfSA9IGlucHV0O1xuXG4gICAgLy8gVHJhbnNsYXRlIHRpdGxlIGFuZCBtZXNzYWdlIG9ubHkgaWYgdGhleSBzdGFydCB3aXRoICdAJyAodHJhbnNsYXRpb24ga2V5KVxuICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIHRleHQgYXMtaXNcbiAgICBjb25zdCB0cmFuc2xhdGVkVGl0bGUgPSB0aXRsZSBcbiAgICAgID8gKHRpdGxlLnN0YXJ0c1dpdGgoJ0AnKSBcbiAgICAgICAgICA/IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKHRpdGxlKSB8fCB0aXRsZVxuICAgICAgICAgIDogdGl0bGUpXG4gICAgICA6ICcnO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRNZXNzYWdlID0gbWVzc2FnZSBcbiAgICAgID8gKG1lc3NhZ2Uuc3RhcnRzV2l0aCgnQCcpIFxuICAgICAgICAgID8gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMobWVzc2FnZSkgfHwgbWVzc2FnZVxuICAgICAgICAgIDogbWVzc2FnZSlcbiAgICAgIDogJyc7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5kaWFsb2dTZXJ2aWNlLmFsZXJ0KHRyYW5zbGF0ZWRUaXRsZSwgdHJhbnNsYXRlZE1lc3NhZ2UsIGNvbG9yKTtcblxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzdWx0KHtcbiAgICAgICAgcmVzdWx0OiB0cnVlLFxuICAgICAgICBhY3Rpb246ICdvaydcbiAgICAgIH0sICdEb25lJyk7XG4gICAgICBcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tTaG93QWxlcnREaWFsb2ddIEVycm9yIHNob3dpbmcgZGlhbG9nOicsIGVycik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgIHRleHQ6IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnRmFpbGVkIHRvIHNob3cgYWxlcnQgZGlhbG9nJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG91dHB1dDoge1xuICAgICAgICAgICAgcmVzdWx0OiBmYWxzZSxcbiAgICAgICAgICAgIGFjdGlvbjogJ2Vycm9yJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91dGNvbWVzOiB7XG4gICAgICAgICAgICBGYWlsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5cbiJdfQ==","import { inject } from '@angular/core';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { Activity } from '../activity.types';\n/**\n * Show Dialog Layout Builder Activity - Displays dialog using Layout Builder.\n *\n * This activity allows you to create custom dialogs using the Layout Builder API.\n * It accepts JSON-serializable content (AXPWidgetNode) and actions configuration.\n *\n * The content can be created using Layout Builder and then converted to JSON:\n * ```typescript\n * const builder = layoutBuilderService.create();\n * builder.flex(flex => {\n * flex.setDirection('column')\n * .formField('First Name', field => {\n * field.path('firstName');\n * field.textBox({ placeholder: 'Enter first name' });\n * });\n * });\n * const contentNode = builder.build();\n * ```\n *\n * Usage in Workflow:\n * ```typescript\n * const dialog = new ShowDialogLayoutBuilder();\n * await dialog.execute({\n * title: 'User Information',\n * size: 'md',\n * context: { firstName: '', lastName: '' },\n * content: {\n * type: 'flex-layout',\n * mode: 'edit',\n * options: {\n * flexDirection: 'column',\n * gap: '16px'\n * },\n * children: [\n * {\n * type: 'form-field',\n * mode: 'edit',\n * options: {\n * label: 'First Name',\n * showLabel: true\n * },\n * children: [{\n * type: 'text-editor',\n * path: 'firstName',\n * options: {\n * placeholder: 'Enter first name'\n * }\n * }]\n * }\n * ]\n * },\n * actions: {\n * cancel: '@general:actions.cancel.title',\n * submit: '@general:actions.submit.title',\n * custom: [{\n * title: 'Save Draft',\n * icon: 'fa-save',\n * color: 'secondary',\n * command: { name: 'save-draft' }\n * }]\n * }\n * });\n * ```\n *\n * Usage in JSON Workflow Definition:\n * ```json\n * {\n * \"type\": \"ShowDialogLayoutBuilder\",\n * \"properties\": {\n * \"title\": \"User Information\",\n * \"size\": \"md\",\n * \"context\": { \"firstName\": \"\", \"lastName\": \"\" },\n * \"content\": {\n * \"type\": \"flex-layout\",\n * \"mode\": \"edit\",\n * \"options\": {\n * \"flexDirection\": \"column\",\n * \"gap\": \"16px\"\n * },\n * \"children\": [\n * {\n * \"type\": \"form-field\",\n * \"mode\": \"edit\",\n * \"options\": {\n * \"label\": \"First Name\",\n * \"showLabel\": true\n * },\n * \"children\": [{\n * \"type\": \"text-editor\",\n * \"path\": \"firstName\",\n * \"options\": {\n * \"placeholder\": \"Enter first name\"\n * }\n * }]\n * }\n * ]\n * },\n * \"actions\": {\n * \"cancel\": \"@general:actions.cancel.title\",\n * \"submit\": \"@general:actions.submit.title\"\n * }\n * }\n * }\n * ```\n */\nexport class ShowDialogLayoutBuilder extends Activity {\n //#endregion\n constructor() {\n super('ShowDialogLayoutBuilder');\n //#region ---- Services & Dependencies ----\n this.layoutBuilder = inject(AXPLayoutBuilderService);\n }\n async execute(input) {\n const { title = '', size = 'md', context = {}, closeButton = false, message, content, actions } = input;\n try {\n // Create dialog using layout builder\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog(dialog => {\n // Set basic dialog options\n dialog\n .setTitle(title)\n .setSize(size)\n .setCloseButton(closeButton)\n .setContext(context);\n // Set message if provided\n if (message) {\n dialog.setMessage(message);\n }\n // Set content if provided\n if (content) {\n // If content is already a flex-layout, use it directly\n // Otherwise, wrap it in a flex container with column direction\n if (content.type === 'flex-layout') {\n // Set content layout directly (accessing internal state of DialogContainerBuilder)\n dialog.contentLayout = content;\n }\n else {\n // Wrap content in a flex container\n const wrappedContent = {\n type: 'flex-layout',\n mode: 'edit',\n options: {\n flexDirection: 'column',\n gap: '10px',\n },\n children: [content],\n };\n dialog.contentLayout = wrappedContent;\n }\n }\n // Set actions if provided\n if (actions) {\n dialog.setActions(actionBuilder => {\n if (actions.cancel) {\n actionBuilder.cancel(actions.cancel);\n }\n if (actions.submit) {\n actionBuilder.submit(actions.submit);\n }\n if (actions.custom) {\n actions.custom.forEach(action => {\n actionBuilder.custom(action);\n });\n }\n });\n }\n })\n .show();\n // Get user action and context\n const action = dialogRef.action() || 'cancel';\n const dialogContext = dialogRef.context();\n // Determine outcomes\n const cancelled = action === 'cancel';\n const confirmed = action === 'submit' || (!cancelled && action !== 'error');\n // Close dialog\n dialogRef.close();\n // Return result with appropriate outcome\n const outcome = cancelled ? 'Cancelled' : confirmed ? 'Confirmed' : 'Done';\n return this.createResult({\n context: dialogContext,\n action,\n cancelled,\n confirmed\n }, outcome);\n }\n catch (err) {\n console.error('[ShowDialogLayoutBuilder] Error showing dialog:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Failed to show dialog',\n },\n data: {\n output: {\n context: {},\n action: 'error',\n cancelled: true,\n confirmed: false,\n },\n outcomes: {\n Error: true,\n },\n },\n };\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1kaWFsb2ctbGF5b3V0LWJ1aWxkZXIuYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXRpZXMvc2hvdy1kaWFsb2ctbGF5b3V0LWJ1aWxkZXIuYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsdUJBQXVCLEVBQWtCLE1BQU0saUNBQWlDLENBQUM7QUFLMUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdHRztBQUNILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxRQXVFM0M7SUFLQSxZQUFZO0lBRVo7UUFDRSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQVBuQywrQ0FBK0M7UUFFOUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQU1qRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQVliO1FBU0MsTUFBTSxFQUNKLEtBQUssR0FBRyxFQUFFLEVBQ1YsSUFBSSxHQUFHLElBQUksRUFDWCxPQUFPLEdBQUcsRUFBRSxFQUNaLFdBQVcsR0FBRyxLQUFLLEVBQ25CLE9BQU8sRUFDUCxPQUFPLEVBQ1AsT0FBTyxFQUNSLEdBQUcsS0FBSyxDQUFDO1FBRVYsSUFBSSxDQUFDO1lBQ0gscUNBQXFDO1lBQ3JDLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWE7aUJBQ3ZDLE1BQU0sRUFBRTtpQkFDUixNQUFNLENBQUMsTUFBTSxDQUFD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QztZQUN0RSxPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsdUJBQXVCO2lCQUNuRTtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osTUFBTSxFQUFFO3dCQUNOLE9BQU8sRUFBRSxFQUFFO3dCQUNYLE1BQU0sRUFBRSxPQUFPO3dCQUNmLFNBQVMsRUFBRSxJQUFJO3dCQUNmLFNBQVMsRUFBRSxLQUFLO3FCQUNqQjtvQkFDRCxRQUFRLEVBQUU7d0JBQ1IsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7YUFDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsIElEaWFsb2dCdWlsZGVyIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBBWFBEaWFsb2dSZWYgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUG9wdXBTaXplVHlwZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFBFeGVjdXRlQ29tbWFuZFJlc3VsdCwgQVhQQWN0aW9uTWVudUl0ZW0gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSAnLi4vYWN0aXZpdHkudHlwZXMnO1xuXG4vKipcbiAqIFNob3cgRGlhbG9nIExheW91dCBCdWlsZGVyIEFjdGl2aXR5IC0gRGlzcGxheXMgZGlhbG9nIHVzaW5nIExheW91dCBCdWlsZGVyLlxuICogXG4gKiBUaGlzIGFjdGl2aXR5IGFsbG93cyB5b3UgdG8gY3JlYXRlIGN1c3RvbSBkaWFsb2dzIHVzaW5nIHRoZSBMYXlvdXQgQnVpbGRlciBBUEkuXG4gKiBJdCBhY2NlcHRzIEpTT04tc2VyaWFsaXphYmxlIGNvbnRlbnQgKEFYUFdpZGdldE5vZGUpIGFuZCBhY3Rpb25zIGNvbmZpZ3VyYXRpb24uXG4gKiBcbiAqIFRoZSBjb250ZW50IGNhbiBiZSBjcmVhdGVkIHVzaW5nIExheW91dCBCdWlsZGVyIGFuZCB0aGVuIGNvbnZlcnRlZCB0byBKU09OOlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYnVpbGRlciA9IGxheW91dEJ1aWxkZXJTZXJ2aWNlLmNyZWF0ZSgpO1xuICogYnVpbGRlci5mbGV4KGZsZXggPT4ge1xuICogICBmbGV4LnNldERpcmVjdGlvbignY29sdW1uJylcbiAqICAgICAuZm9ybUZpZWxkKCdGaXJzdCBOYW1lJywgZmllbGQgPT4ge1xuICogICAgICAgZmllbGQucGF0aCgnZmlyc3ROYW1lJyk7XG4gKiAgICAgICBmaWVsZC50ZXh0Qm94KHsgcGxhY2Vob2xkZXI6ICdFbnRlciBmaXJzdCBuYW1lJyB9KTtcbiAqICAgICB9KTtcbiAqIH0pO1xuICogY29uc3QgY29udGVudE5vZGUgPSBidWlsZGVyLmJ1aWxkKCk7XG4gKiBgYGBcbiAqIFxuICogVXNhZ2UgaW4gV29ya2Zsb3c6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBkaWFsb2cgPSBuZXcgU2hvd0RpYWxvZ0xheW91dEJ1aWxkZXIoKTtcbiAqIGF3YWl0IGRpYWxvZy5leGVjdXRlKHtcbiAqICAgdGl0bGU6ICdVc2VyIEluZm9ybWF0aW9uJyxcbiAqICAgc2l6ZTogJ21kJyxcbiAqICAgY29udGV4dDogeyBmaXJzdE5hbWU6ICcnLCBsYXN0TmFtZTogJycgfSxcbiAqICAgY29udGVudDoge1xuICogICAgIHR5cGU6ICdmbGV4LWxheW91dCcsXG4gKiAgICAgbW9kZTogJ2VkaXQnLFxuICogICAgIG9wdGlvbnM6IHtcbiAqICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICogICAgICAgZ2FwOiAnMTZweCdcbiAqICAgICB9LFxuICogICAgIGNoaWxkcmVuOiBbXG4gKiAgICAgICB7XG4gKiAgICAgICAgIHR5cGU6ICdmb3JtLWZpZWxkJyxcbiAqICAgICAgICAgbW9kZTogJ2VkaXQnLFxuICogICAgICAgICBvcHRpb25zOiB7IFxuICogICAgICAgICAgIGxhYmVsOiAnRmlyc3QgTmFtZScsXG4gKiAgICAgICAgICAgc2hvd0xhYmVsOiB0cnVlXG4gKiAgICAgICAgIH0sXG4gKiAgICAgICAgIGNoaWxkcmVuOiBbe1xuICogICAgICAgICAgIHR5cGU6ICd0ZXh0LWVkaXRvcicsXG4gKiAgICAgICAgICAgcGF0aDogJ2ZpcnN0TmFtZScsXG4gKiAgICAgICAgICAgb3B0aW9uczogeyBcbiAqICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgZmlyc3QgbmFtZSdcbiAqICAgICAgICAgICB9XG4gKiAgICAgICAgIH1dXG4gKiAgICAgICB9XG4gKiAgICAgXVxuICogICB9LFxuICogICBhY3Rpb25zOiB7XG4gKiAgICAgY2FuY2VsOiAnQGdlbmVyYWw6YWN0aW9ucy5jYW5jZWwudGl0bGUnLFxuICogICAgIHN1Ym1pdDogJ0BnZW5lcmFsOmFjdGlvbnMuc3VibWl0LnRpdGxlJyxcbiAqICAgICBjdXN0b206IFt7XG4gKiAgICAgICB0aXRsZTogJ1NhdmUgRHJhZnQnLFxuICogICAgICAgaWNvbjogJ2ZhLXNhdmUnLFxuICogICAgICAgY29sb3I6ICdzZWNvbmRhcnknLFxuICogICAgICAgY29tbWFuZDogeyBuYW1lOiAnc2F2ZS1kcmFmdCcgfVxuICogICAgIH1dXG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKiBcbiAqIFVzYWdlIGluIEpTT04gV29ya2Zsb3cgRGVmaW5pdGlvbjpcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJ0eXBlXCI6IFwiU2hvd0RpYWxvZ0xheW91dEJ1aWxkZXJcIixcbiAqICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAqICAgICBcInRpdGxlXCI6IFwiVXNlciBJbmZvcm1hdGlvblwiLFxuICogICAgIFwic2l6ZVwiOiBcIm1kXCIsXG4gKiAgICAgXCJjb250ZXh0XCI6IHsgXCJmaXJzdE5hbWVcIjogXCJcIiwgXCJsYXN0TmFtZVwiOiBcIlwiIH0sXG4gKiAgICAgXCJjb250ZW50XCI6IHtcbiAqICAgICAgIFwidHlwZVwiOiBcImZsZXgtbGF5b3V0XCIsXG4gKiAgICAgICBcIm1vZGVcIjogXCJlZGl0XCIsXG4gKiAgICAgICBcIm9wdGlvbnNcIjoge1xuICogICAgICAgICBcImZsZXhEaXJlY3Rpb25cIjogXCJjb2x1bW5cIixcbiAqICAgICAgICAgXCJnYXBcIjogXCIxNnB4XCJcbiAqICAgICAgIH0sXG4gKiAgICAgICBcImNoaWxkcmVuXCI6IFtcbiAqICAgICAgICAge1xuICogICAgICAgICAgIFwidHlwZVwiOiBcImZvcm0tZmllbGRcIixcbiAqICAgICAgICAgICBcIm1vZGVcIjogXCJlZGl0XCIsXG4gKiAgICAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAqICAgICAgICAgICAgIFwibGFiZWxcIjogXCJGaXJzdCBOYW1lXCIsXG4gKiAgICAgICAgICAgICBcInNob3dMYWJlbFwiOiB0cnVlXG4gKiAgICAgICAgICAgfSxcbiAqICAgICAgICAgICBcImNoaWxkcmVuXCI6IFt7XG4gKiAgICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0LWVkaXRvclwiLFxuICogICAgICAgICAgICAgXCJwYXRoXCI6IFwiZmlyc3ROYW1lXCIsXG4gKiAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge1xuICogICAgICAgICAgICAgICBcInBsYWNlaG9sZGVyXCI6IFwiRW50ZXIgZmlyc3QgbmFtZVwiXG4gKiAgICAgICAgICAgICB9XG4gKiAgICAgICAgICAgfV1cbiAqICAgICAgICAgfVxuICogICAgICAgXVxuICogICAgIH0sXG4gKiAgICAgXCJhY3Rpb25zXCI6IHtcbiAqICAgICAgIFwiY2FuY2VsXCI6IFwiQGdlbmVyYWw6YWN0aW9ucy5jYW5jZWwudGl0bGVcIixcbiAqICAgICAgIFwic3VibWl0XCI6IFwiQGdlbmVyYWw6YWN0aW9ucy5zdWJtaXQudGl0bGVcIlxuICogICAgIH1cbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTaG93RGlhbG9nTGF5b3V0QnVpbGRlciBleHRlbmRzIEFjdGl2aXR5PHtcbiAgLyoqXG4gICAqIERpYWxvZyB0aXRsZVxuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG4gIFxuICAvKipcbiAgICogRGlhbG9nIHNpemVcbiAgICovXG4gIHNpemU/OiBBWFBvcHVwU2l6ZVR5cGU7XG4gIFxuICAvKipcbiAgICogSW5pdGlhbCBkaWFsb2cgY29udGV4dC9kYXRhXG4gICAqL1xuICBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgXG4gIC8qKlxuICAgKiBTaG93IGNsb3NlIGJ1dHRvblxuICAgKi9cbiAgY2xvc2VCdXR0b24/OiBib29sZWFuO1xuICBcbiAgLyoqXG4gICAqIERpYWxvZyBtZXNzYWdlIChvcHRpb25hbCwgc2hvd24gYWJvdmUgY29udGVudClcbiAgICovXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIFxuICAvKipcbiAgICogRGlhbG9nIGNvbnRlbnQgYXMgQVhQV2lkZ2V0Tm9kZSAoSlNPTi1zZXJpYWxpemFibGUpXG4gICAqIFRoaXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgTGF5b3V0IEJ1aWxkZXIgYW5kIHRoZW4gY29udmVydGVkIHRvIEpTT04uXG4gICAqL1xuICBjb250ZW50PzogQVhQV2lkZ2V0Tm9kZTtcbiAgXG4gIC8qKlxuICAgKiBEaWFsb2cgYWN0aW9ucyBjb25maWd1cmF0aW9uIChKU09OLXNlcmlhbGl6YWJsZSlcbiAgICovXG4gIGFjdGlvbnM/OiB7XG4gICAgLyoqXG4gICAgICogQ2FuY2VsIGJ1dHRvbiB0ZXh0IChvcHRpb25hbClcbiAgICAgKi9cbiAgICBjYW5jZWw/OiBzdHJpbmc7XG4gICAgXG4gICAgLyoqXG4gICAgICogU3VibWl0IGJ1dHRvbiB0ZXh0IChvcHRpb25hbClcbiAgICAgKi9cbiAgICBzdWJtaXQ/OiBzdHJpbmc7XG4gICAgXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGFjdGlvbnMgYXJyYXkgKG9wdGlvbmFsKVxuICAgICAqL1xuICAgIGN1c3RvbT86IEFYUEFjdGlvbk1lbnVJdGVtW107XG4gIH07XG59LCB7XG4gIC8qKlxuICAgKiBEaWFsb2cgY29udGV4dC9kYXRhIGFmdGVyIHVzZXIgaW50ZXJhY3Rpb25cbiAgICovXG4gIGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIFxuICAvKipcbiAgICogQWN0aW9uIHRoYXQgdXNlciBjbGlja2VkIChlLmcuLCAnc3VibWl0JywgJ2NhbmNlbCcsIG9yIGN1c3RvbSBhY3Rpb24gbmFtZSlcbiAgICovXG4gIGFjdGlvbjogc3RyaW5nO1xuICBcbiAgLyoqXG4gICAqIFdoZXRoZXIgdXNlciBjYW5jZWxsZWQgdGhlIGRpYWxvZ1xuICAgKi9cbiAgY2FuY2VsbGVkOiBib29sZWFuO1xuICBcbiAgLyoqXG4gICAqIFdoZXRoZXIgdXNlciBjb25maXJtZWQvc3VibWl0dGVkIHRoZSBkaWFsb2dcbiAgICovXG4gIGNvbmZpcm1lZDogYm9vbGVhbjtcbn0+IHtcbiAgLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlcyAmIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IGxheW91dEJ1aWxkZXIgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdTaG93RGlhbG9nTGF5b3V0QnVpbGRlcicpO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dDoge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHNpemU/OiBBWFBvcHVwU2l6ZVR5cGU7XG4gICAgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY2xvc2VCdXR0b24/OiBib29sZWFuO1xuICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgY29udGVudD86IEFYUFdpZGdldE5vZGU7XG4gICAgYWN0aW9ucz86IHtcbiAgICAgIGNhbmNlbD86IHN0cmluZztcbiAgICAgIHN1Ym1pdD86IHN0cmluZztcbiAgICAgIGN1c3RvbT86IEFYUEFjdGlvbk1lbnVJdGVtW107XG4gICAgfTtcbiAgfSk6IFByb21pc2U8QVhQRXhlY3V0ZUNvbW1hbmRSZXN1bHQ8eyBcbiAgICBvdXRwdXQ6IHsgXG4gICAgICBjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBcbiAgICAgIGFjdGlvbjogc3RyaW5nOyBcbiAgICAgIGNhbmNlbGxlZDogYm9vbGVhbjsgXG4gICAgICBjb25maXJtZWQ6IGJvb2xlYW47IFxuICAgIH07IFxuICAgIG91dGNvbWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IFxuICB9Pj4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHRpdGxlID0gJycsXG4gICAgICBzaXplID0gJ21kJyxcbiAgICAgIGNvbnRleHQgPSB7fSxcbiAgICAgIGNsb3NlQnV0dG9uID0gZmFsc2UsXG4gICAgICBtZXNzYWdlLFxuICAgICAgY29udGVudCxcbiAgICAgIGFjdGlvbnNcbiAgICB9ID0gaW5wdXQ7XG5cbiAgICB0cnkge1xuICAgICAgLy8gQ3JlYXRlIGRpYWxvZyB1c2luZyBsYXlvdXQgYnVpbGRlclxuICAgICAgY29uc3QgZGlhbG9nUmVmID0gYXdhaXQgdGhpcy5sYXlvdXRCdWlsZGVyXG4gICAgICAgIC5jcmVhdGUoKVxuICAgICAgICAuZGlhbG9nKGRpYWxvZyA9PiB7XG4gICAgICAgICAgLy8gU2V0IGJhc2ljIGRpYWxvZyBvcHRpb25zXG4gICAgICAgICAgZGlhbG9nXG4gICAgICAgICAgICAuc2V0VGl0bGUodGl0bGUpXG4gICAgICAgICAgICAuc2V0U2l6ZShzaXplKVxuICAgICAgICAgICAgLnNldENsb3NlQnV0dG9uKGNsb3NlQnV0dG9uKVxuICAgICAgICAgICAgLnNldENvbnRleHQoY29udGV4dCk7XG5cbiAgICAgICAgICAvLyBTZXQgbWVzc2FnZSBpZiBwcm92aWRlZFxuICAgICAgICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICBkaWFsb2cuc2V0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBTZXQgY29udGVudCBpZiBwcm92aWRlZFxuICAgICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICAvLyBJZiBjb250ZW50IGlzIGFscmVhZHkgYSBmbGV4LWxheW91dCwgdXNlIGl0IGRpcmVjdGx5XG4gICAgICAgICAgICAvLyBPdGhlcndpc2UsIHdyYXAgaXQgaW4gYSBmbGV4IGNvbnRhaW5lciB3aXRoIGNvbHVtbiBkaXJlY3Rpb25cbiAgICAgICAgICAgIGlmIChjb250ZW50LnR5cGUgPT09ICdmbGV4LWxheW91dCcpIHtcbiAgICAgICAgICAgICAgLy8gU2V0IGNvbnRlbnQgbGF5b3V0IGRpcmVjdGx5IChhY2Nlc3NpbmcgaW50ZXJuYWwgc3RhdGUgb2YgRGlhbG9nQ29udGFpbmVyQnVpbGRlcilcbiAgICAgICAgICAgICAgKGRpYWxvZyBhcyBhbnkpLmNvbnRlbnRMYXlvdXQgPSBjb250ZW50O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gV3JhcCBjb250ZW50IGluIGEgZmxleCBjb250YWluZXJcbiAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlZENvbnRlbnQ6IEFYUFdpZGdldE5vZGUgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2ZsZXgtbGF5b3V0JyxcbiAgICAgICAgICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICBnYXA6ICcxMHB4JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbY29udGVudF0sXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIChkaWFsb2cgYXMgYW55KS5jb250ZW50TGF5b3V0ID0gd3JhcHBlZENvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU2V0IGFjdGlvbnMgaWYgcHJvdmlkZWRcbiAgICAgICAgICBpZiAoYWN0aW9ucykge1xuICAgICAgICAgICAgZGlhbG9nLnNldEFjdGlvbnMoYWN0aW9uQnVpbGRlciA9PiB7XG4gICAgICAgICAgICAgIGlmIChhY3Rpb25zLmNhbmNlbCkge1xuICAgICAgICAgICAgICAgIGFjdGlvbkJ1aWxkZXIuY2FuY2VsKGFjdGlvbnMuY2FuY2VsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoYWN0aW9ucy5zdWJtaXQpIHtcbiAgICAgICAgICAgICAgICBhY3Rpb25CdWlsZGVyLnN1Ym1pdChhY3Rpb25zLnN1Ym1pdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGFjdGlvbnMuY3VzdG9tKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9ucy5jdXN0b20uZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgYWN0aW9uQnVpbGRlci5jdXN0b20oYWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuc2hvdygpO1xuXG4gICAgICAvLyBHZXQgdXNlciBhY3Rpb24gYW5kIGNvbnRleHRcbiAgICAgIGNvbnN0IGFjdGlvbiA9IGRpYWxvZ1JlZi5hY3Rpb24oKSB8fCAnY2FuY2VsJztcbiAgICAgIGNvbnN0IGRpYWxvZ0NvbnRleHQgPSBkaWFsb2dSZWYuY29udGV4dCgpIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICBcbiAgICAgIC8vIERldGVybWluZSBvdXRjb21lc1xuICAgICAgY29uc3QgY2FuY2VsbGVkID0gYWN0aW9uID09PSAnY2FuY2VsJztcbiAgICAgIGNvbnN0IGNvbmZpcm1lZCA9IGFjdGlvbiA9PT0gJ3N1Ym1pdCcgfHwgKCFjYW5jZWxsZWQgJiYgYWN0aW9uICE9PSAnZXJyb3InKTtcblxuICAgICAgLy8gQ2xvc2UgZGlhbG9nXG4gICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcblxuICAgICAgLy8gUmV0dXJuIHJlc3VsdCB3aXRoIGFwcHJvcHJpYXRlIG91dGNvbWVcbiAgICAgIGNvbnN0IG91dGNvbWUgPSBjYW5jZWxsZWQgPyAnQ2FuY2VsbGVkJyA6IGNvbmZpcm1lZCA/ICdDb25maXJtZWQnIDogJ0RvbmUnO1xuICAgICAgXG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN1bHQoe1xuICAgICAgICBjb250ZXh0OiBkaWFsb2dDb250ZXh0LFxuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhbmNlbGxlZCxcbiAgICAgICAgY29uZmlybWVkXG4gICAgICB9LCBvdXRjb21lKTtcbiAgICAgIFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignW1Nob3dEaWFsb2dMYXlvdXRCdWlsZGVyXSBFcnJvciBzaG93aW5nIGRpYWxvZzonLCBlcnIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICB0ZXh0OiBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0ZhaWxlZCB0byBzaG93IGRpYWxvZycsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAgIGNvbnRleHQ6IHt9LFxuICAgICAgICAgICAgYWN0aW9uOiAnZXJyb3InLFxuICAgICAgICAgICAgY2FuY2VsbGVkOiB0cnVlLFxuICAgICAgICAgICAgY29uZmlybWVkOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91dGNvbWVzOiB7XG4gICAgICAgICAgICBFcnJvcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuIl19","import { inject } from '@angular/core';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Activity } from '../activity.types';\n/**\n * Show Toast Activity - Displays toast notification to user.\n *\n * Usage:\n * ```typescript\n * const toast = new ShowToast();\n * await toast.execute({\n * color: 'success',\n * title: 'Success',\n * message: 'Operation completed successfully!'\n * });\n * ```\n */\nexport class ShowToast extends Activity {\n constructor() {\n super('ShowToast');\n this.toastService = inject(AXToastService);\n this.translationService = inject(AXTranslationService);\n }\n async execute(input) {\n const { color = 'primary', title = '', message = '', duration = 3000 } = input;\n // Translate title and message only if they start with '@' (translation key)\n // Otherwise use the text as-is\n const translatedTitle = title\n ? (title.startsWith('@')\n ? await this.translationService.translateAsync(title) || title\n : title)\n : '';\n const translatedMessage = message\n ? (message.startsWith('@')\n ? await this.translationService.translateAsync(message) || message\n : message)\n : '';\n try {\n await this.toastService.show({\n color: color,\n title: translatedTitle,\n content: translatedMessage,\n closeButton: true,\n timeOut: duration,\n timeOutProgress: true,\n });\n return this.createResult(undefined, 'Done');\n }\n catch (err) {\n console.error('[ShowToast] Error showing toast:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Failed to show toast',\n },\n data: {\n output: undefined,\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy10b2FzdC5hY3Rpdml0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi9lbmdpbmUvYWN0aXZpdGllcy9zaG93LXRvYXN0LmFjdGl2aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3Qzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLE9BQU8sU0FBVSxTQUFRLFFBS3ZCO0lBSU47UUFDRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFKSixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0Qyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUluRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUtiO1FBQ0MsTUFBTSxFQUNKLEtBQUssR0FBRyxTQUFTLEVBQ2pCLEtBQUssR0FBRyxFQUFFLEVBQ1YsT0FBTyxHQUFHLEVBQUUsRUFDWixRQUFRLEdBQUcsSUFBSSxFQUNoQixHQUFHLEtBQUssQ0FBQztRQUVWLDRFQUE0RTtRQUM1RSwrQkFBK0I7UUFDL0IsTUFBTSxlQUFlLEdBQUcsS0FBSztZQUMzQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLO2dCQUM5RCxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ1osQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNQLE1BQU0saUJBQWlCLEdBQUcsT0FBTztZQUMvQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPO2dCQUNsRSxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQzNCLEtBQUssRUFBRSxLQUFLO2dCQUNaLEtBQUssRUFBRSxlQUFlO2dCQUN0QixPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsSUFBSTtnQkFDakIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLGVBQWUsRUFBRSxJQUFJO2FBQ3RCLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7aUJBQ2xFO2dCQUNELElBQUksRUFBRTtvQkFDSixNQUFNLEVBQUUsU0FBUztvQkFDakIsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYU3R5bGVDb2xvclR5cGUgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQWN0aXZpdHkgfSBmcm9tICcuLi9hY3Rpdml0eS50eXBlcyc7XG5cbi8qKlxuICogU2hvdyBUb2FzdCBBY3Rpdml0eSAtIERpc3BsYXlzIHRvYXN0IG5vdGlmaWNhdGlvbiB0byB1c2VyLlxuICogXG4gKiBVc2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHRvYXN0ID0gbmV3IFNob3dUb2FzdCgpO1xuICogYXdhaXQgdG9hc3QuZXhlY3V0ZSh7XG4gKiAgIGNvbG9yOiAnc3VjY2VzcycsXG4gKiAgIHRpdGxlOiAnU3VjY2VzcycsXG4gKiAgIG1lc3NhZ2U6ICdPcGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2hvd1RvYXN0IGV4dGVuZHMgQWN0aXZpdHk8e1xuICBjb2xvcj86IEFYU3R5bGVDb2xvclR5cGU7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBkdXJhdGlvbj86IG51bWJlcjtcbn0sIHZvaWQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ1Nob3dUb2FzdCcpO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dDoge1xuICAgIGNvbG9yPzogQVhTdHlsZUNvbG9yVHlwZTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIGR1cmF0aW9uPzogbnVtYmVyO1xuICB9KSB7XG4gICAgY29uc3Qge1xuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICB0aXRsZSA9ICcnLFxuICAgICAgbWVzc2FnZSA9ICcnLFxuICAgICAgZHVyYXRpb24gPSAzMDAwXG4gICAgfSA9IGlucHV0O1xuXG4gICAgLy8gVHJhbnNsYXRlIHRpdGxlIGFuZCBtZXNzYWdlIG9ubHkgaWYgdGhleSBzdGFydCB3aXRoICdAJyAodHJhbnNsYXRpb24ga2V5KVxuICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIHRleHQgYXMtaXNcbiAgICBjb25zdCB0cmFuc2xhdGVkVGl0bGUgPSB0aXRsZSBcbiAgICAgID8gKHRpdGxlLnN0YXJ0c1dpdGgoJ0AnKSBcbiAgICAgICAgICA/IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKHRpdGxlKSB8fCB0aXRsZVxuICAgICAgICAgIDogdGl0bGUpXG4gICAgICA6ICcnO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRNZXNzYWdlID0gbWVzc2FnZSBcbiAgICAgID8gKG1lc3NhZ2Uuc3RhcnRzV2l0aCgnQCcpIFxuICAgICAgICAgID8gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMobWVzc2FnZSkgfHwgbWVzc2FnZVxuICAgICAgICAgIDogbWVzc2FnZSlcbiAgICAgIDogJyc7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIGNvbG9yOiBjb2xvcixcbiAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZWRUaXRsZSxcbiAgICAgICAgY29udGVudDogdHJhbnNsYXRlZE1lc3NhZ2UsXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICB0aW1lT3V0OiBkdXJhdGlvbixcbiAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJlc3VsdCh1bmRlZmluZWQsICdEb25lJyk7XG4gICAgICBcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tTaG93VG9hc3RdIEVycm9yIHNob3dpbmcgdG9hc3Q6JywgZXJyKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgdGV4dDogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdGYWlsZWQgdG8gc2hvdyB0b2FzdCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBvdXRwdXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBvdXRjb21lczoge1xuICAgICAgICAgICAgRmFpbGVkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxufSJdfQ==","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Activity } from '../activity.types';\n/**\n * Navigate Activity - Navigates to different pages/routes.\n *\n * Usage:\n * ```typescript\n * const navigate = new Navigate();\n * await navigate.execute({\n * mode: 'route',\n * route: '/users',\n * params: { id: '123' }\n * });\n * ```\n */\nexport class Navigate extends Activity {\n constructor() {\n super('Navigate');\n this.router = inject(Router);\n }\n async execute(input) {\n const { mode = 'route', route = '', params = {}, queryParams = {}, entity = '', entityId = '', url = '' } = input;\n try {\n switch (mode) {\n case 'route':\n await this.router.navigate([route], { queryParams });\n break;\n case 'entity-details':\n const detailsRoute = `/entities/${entity}/details/${entityId}`;\n await this.router.navigate([detailsRoute], { queryParams });\n break;\n case 'entity-list':\n const listRoute = `/entities/${entity}`;\n await this.router.navigate([listRoute], { queryParams });\n break;\n case 'external':\n if (url) {\n window.open(url, '_blank');\n }\n break;\n default:\n console.error(`[Navigate] Unknown navigation mode: ${mode}`);\n return {\n success: false,\n message: {\n text: `Unknown navigation mode: ${mode}`,\n },\n data: {\n output: undefined,\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n return this.createResult(undefined, 'Done');\n }\n catch (err) {\n console.error('[Navigate] Error navigating:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Failed to navigate',\n },\n data: {\n output: undefined,\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGUuYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXRpZXMvbmF2aWdhdGUuYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sT0FBTyxRQUFTLFNBQVEsUUFRdEI7SUFHTjtRQUNFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUhILFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFJekMsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsS0FRYjtRQUNDLE1BQU0sRUFDSixJQUFJLEdBQUcsT0FBTyxFQUNkLEtBQUssR0FBRyxFQUFFLEVBQ1YsTUFBTSxHQUFHLEVBQUUsRUFDWCxXQUFXLEdBQUcsRUFBRSxFQUNoQixNQUFNLEdBQUcsRUFBRSxFQUNYLFFBQVEsR0FBRyxFQUFFLEVBQ2IsR0FBRyxHQUFHLEVBQUUsRUFDVCxHQUFHLEtBQUssQ0FBQztRQUVWLElBQUksQ0FBQztZQUNILFFBQVEsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxPQUFPO29CQUNWLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7b0JBQ3JELE1BQU07Z0JBRVIsS0FBSyxnQkFBZ0I7b0JBQ25CLE1BQU0sWUFBWSxHQUFHLGFBQWEsTUFBTSxZQUFZLFFBQVEsRUFBRSxDQUFDO29CQUMvRCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxNQUFNO2dCQUVSLEtBQUssYUFBYTtvQkFDaEIsTUFBTSxTQUFTLEdBQUcsYUFBYSxNQUFNLEVBQUUsQ0FBQztvQkFDeEMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztvQkFDekQsTUFBTTtnQkFFUixLQUFLLFVBQVU7b0JBQ2IsSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDUixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDN0IsQ0FBQztvQkFDRCxNQUFNO2dCQUVSO29CQUNFLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQzdELE9BQU87d0JBQ0wsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSw0QkFBNEIsSUFBSSxFQUFFO3lCQUN6Qzt3QkFDRCxJQUFJLEVBQUU7NEJBQ0osTUFBTSxFQUFFLFNBQVM7NEJBQ2pCLFFBQVEsRUFBRTtnQ0FDUixNQUFNLEVBQUUsSUFBSTs2QkFDYjt5QkFDRjtxQkFDRixDQUFDO1lBQ04sQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7aUJBQ2hFO2dCQUNELElBQUksRUFBRTtvQkFDSixNQUFNLEVBQUUsU0FBUztvQkFDakIsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uL2FjdGl2aXR5LnR5cGVzJztcblxuLyoqXG4gKiBOYXZpZ2F0ZSBBY3Rpdml0eSAtIE5hdmlnYXRlcyB0byBkaWZmZXJlbnQgcGFnZXMvcm91dGVzLlxuICogXG4gKiBVc2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5hdmlnYXRlID0gbmV3IE5hdmlnYXRlKCk7XG4gKiBhd2FpdCBuYXZpZ2F0ZS5leGVjdXRlKHtcbiAqICAgbW9kZTogJ3JvdXRlJyxcbiAqICAgcm91dGU6ICcvdXNlcnMnLFxuICogICBwYXJhbXM6IHsgaWQ6ICcxMjMnIH1cbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBOYXZpZ2F0ZSBleHRlbmRzIEFjdGl2aXR5PHtcbiAgbW9kZT86ICdyb3V0ZScgfCAnZW50aXR5LWRldGFpbHMnIHwgJ2VudGl0eS1saXN0JyB8ICdleHRlcm5hbCc7XG4gIHJvdXRlPzogc3RyaW5nO1xuICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBxdWVyeVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGVudGl0eT86IHN0cmluZztcbiAgZW50aXR5SWQ/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn0sIHZvaWQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignTmF2aWdhdGUnKTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGUoaW5wdXQ6IHtcbiAgICBtb2RlPzogJ3JvdXRlJyB8ICdlbnRpdHktZGV0YWlscycgfCAnZW50aXR5LWxpc3QnIHwgJ2V4dGVybmFsJztcbiAgICByb3V0ZT86IHN0cmluZztcbiAgICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHF1ZXJ5UGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBlbnRpdHk/OiBzdHJpbmc7XG4gICAgZW50aXR5SWQ/OiBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICB9KSB7XG4gICAgY29uc3Qge1xuICAgICAgbW9kZSA9ICdyb3V0ZScsXG4gICAgICByb3V0ZSA9ICcnLFxuICAgICAgcGFyYW1zID0ge30sXG4gICAgICBxdWVyeVBhcmFtcyA9IHt9LFxuICAgICAgZW50aXR5ID0gJycsXG4gICAgICBlbnRpdHlJZCA9ICcnLFxuICAgICAgdXJsID0gJydcbiAgICB9ID0gaW5wdXQ7XG5cbiAgICB0cnkge1xuICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgIGNhc2UgJ3JvdXRlJzpcbiAgICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdLCB7IHF1ZXJ5UGFyYW1zIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAnZW50aXR5LWRldGFpbHMnOlxuICAgICAgICAgIGNvbnN0IGRldGFpbHNSb3V0ZSA9IGAvZW50aXRpZXMvJHtlbnRpdHl9L2RldGFpbHMvJHtlbnRpdHlJZH1gO1xuICAgICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFtkZXRhaWxzUm91dGVdLCB7IHF1ZXJ5UGFyYW1zIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAnZW50aXR5LWxpc3QnOlxuICAgICAgICAgIGNvbnN0IGxpc3RSb3V0ZSA9IGAvZW50aXRpZXMvJHtlbnRpdHl9YDtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbGlzdFJvdXRlXSwgeyBxdWVyeVBhcmFtcyB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICAgIGNhc2UgJ2V4dGVybmFsJzpcbiAgICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIFxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtOYXZpZ2F0ZV0gVW5rbm93biBuYXZpZ2F0aW9uIG1vZGU6ICR7bW9kZX1gKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICAgIHRleHQ6IGBVbmtub3duIG5hdmlnYXRpb24gbW9kZTogJHttb2RlfWAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBvdXRwdXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgb3V0Y29tZXM6IHtcbiAgICAgICAgICAgICAgICBGYWlsZWQ6IHRydWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJlc3VsdCh1bmRlZmluZWQsICdEb25lJyk7XG4gICAgICBcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tOYXZpZ2F0ZV0gRXJyb3IgbmF2aWdhdGluZzonLCBlcnIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICB0ZXh0OiBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0ZhaWxlZCB0byBuYXZpZ2F0ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBvdXRwdXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBvdXRjb21lczoge1xuICAgICAgICAgICAgRmFpbGVkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxufSJdfQ==","import { Activity } from '../activity.types';\n/**\n * Set Variable Activity - Sets a variable value in workflow context.\n *\n * Usage:\n * ```typescript\n * const setVar = new SetVariable();\n * await setVar.execute({\n * variableName: 'userId',\n * value: '12345'\n * });\n * ```\n */\nexport class SetVariable extends Activity {\n constructor() {\n super('workflow-activity:set-variable', 'Set Variable');\n }\n async execute(input) {\n const { variableName, value } = input;\n try {\n // In a real implementation, this would set the variable in workflow context\n // For now, we'll just log it\n console.log(`[SetVariable] Setting ${variableName} = ${JSON.stringify(value)}`);\n return this.createResult(undefined, 'Done');\n }\n catch (err) {\n console.error('[SetVariable] Error setting variable:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Failed to set variable',\n },\n data: {\n output: undefined,\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXZhcmlhYmxlLmFjdGl2aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2VuZ2luZS9hY3Rpdml0aWVzL3NldC12YXJpYWJsZS5hY3Rpdml0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFN0M7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFFBR3pCO0lBQ047UUFDRSxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsS0FHYjtRQUNDLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXRDLElBQUksQ0FBQztZQUNILDRFQUE0RTtZQUM1RSw2QkFBNkI7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsWUFBWSxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWhGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVELE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7aUJBQ3BFO2dCQUNELElBQUksRUFBRTtvQkFDSixNQUFNLEVBQUUsU0FBUztvQkFDakIsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uL2FjdGl2aXR5LnR5cGVzJztcblxuLyoqXG4gKiBTZXQgVmFyaWFibGUgQWN0aXZpdHkgLSBTZXRzIGEgdmFyaWFibGUgdmFsdWUgaW4gd29ya2Zsb3cgY29udGV4dC5cbiAqIFxuICogVXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzZXRWYXIgPSBuZXcgU2V0VmFyaWFibGUoKTtcbiAqIGF3YWl0IHNldFZhci5leGVjdXRlKHtcbiAqICAgdmFyaWFibGVOYW1lOiAndXNlcklkJyxcbiAqICAgdmFsdWU6ICcxMjM0NSdcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXRWYXJpYWJsZSBleHRlbmRzIEFjdGl2aXR5PHtcbiAgdmFyaWFibGVOYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBhbnk7XG59LCB2b2lkPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCd3b3JrZmxvdy1hY3Rpdml0eTpzZXQtdmFyaWFibGUnLCAnU2V0IFZhcmlhYmxlJyk7XG4gIH1cblxuICBhc3luYyBleGVjdXRlKGlucHV0OiB7XG4gICAgdmFyaWFibGVOYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IGFueTtcbiAgfSkge1xuICAgIGNvbnN0IHsgdmFyaWFibGVOYW1lLCB2YWx1ZSB9ID0gaW5wdXQ7XG5cbiAgICB0cnkge1xuICAgICAgLy8gSW4gYSByZWFsIGltcGxlbWVudGF0aW9uLCB0aGlzIHdvdWxkIHNldCB0aGUgdmFyaWFibGUgaW4gd29ya2Zsb3cgY29udGV4dFxuICAgICAgLy8gRm9yIG5vdywgd2UnbGwganVzdCBsb2cgaXRcbiAgICAgIGNvbnNvbGUubG9nKGBbU2V0VmFyaWFibGVdIFNldHRpbmcgJHt2YXJpYWJsZU5hbWV9ID0gJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gICAgICBcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJlc3VsdCh1bmRlZmluZWQsICdEb25lJyk7XG4gICAgICBcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tTZXRWYXJpYWJsZV0gRXJyb3Igc2V0dGluZyB2YXJpYWJsZTonLCBlcnIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICB0ZXh0OiBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0ZhaWxlZCB0byBzZXQgdmFyaWFibGUnLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgb3V0cHV0OiB1bmRlZmluZWQsXG4gICAgICAgICAgb3V0Y29tZXM6IHtcbiAgICAgICAgICAgIEZhaWxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn0iXX0=","import { Activity } from '../activity.types';\n/**\n * Dispatch Event Activity - Dispatches an event to the system.\n *\n * Usage:\n * ```typescript\n * const dispatch = new DispatchEvent();\n * await dispatch.execute({\n * eventName: 'user-created',\n * eventData: { userId: '123', name: 'John' }\n * });\n * ```\n */\nexport class DispatchEvent extends Activity {\n constructor() {\n super('DispatchEvent');\n }\n async execute(input) {\n const { eventName, eventData } = input;\n try {\n // In a real implementation, this would dispatch the event through an event bus\n // For now, we'll just log it\n console.log(`[DispatchEvent] Dispatching event: ${eventName}`, eventData);\n return this.createResult(undefined, 'Done');\n }\n catch (err) {\n console.error('[DispatchEvent] Error dispatching event:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Failed to dispatch event',\n },\n data: {\n output: undefined,\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2gtZXZlbnQuYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXRpZXMvZGlzcGF0Y2gtZXZlbnQuYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUczQjtJQUNOO1FBQ0UsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBR2I7UUFDQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV2QyxJQUFJLENBQUM7WUFDSCwrRUFBK0U7WUFDL0UsNkJBQTZCO1lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLFNBQVMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRTFFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQy9ELE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQywwQkFBMEI7aUJBQ3RFO2dCQUNELElBQUksRUFBRTtvQkFDSixNQUFNLEVBQUUsU0FBUztvQkFDakIsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uL2FjdGl2aXR5LnR5cGVzJztcblxuLyoqXG4gKiBEaXNwYXRjaCBFdmVudCBBY3Rpdml0eSAtIERpc3BhdGNoZXMgYW4gZXZlbnQgdG8gdGhlIHN5c3RlbS5cbiAqIFxuICogVXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBkaXNwYXRjaCA9IG5ldyBEaXNwYXRjaEV2ZW50KCk7XG4gKiBhd2FpdCBkaXNwYXRjaC5leGVjdXRlKHtcbiAqICAgZXZlbnROYW1lOiAndXNlci1jcmVhdGVkJyxcbiAqICAgZXZlbnREYXRhOiB7IHVzZXJJZDogJzEyMycsIG5hbWU6ICdKb2huJyB9XG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgRGlzcGF0Y2hFdmVudCBleHRlbmRzIEFjdGl2aXR5PHtcbiAgZXZlbnROYW1lOiBzdHJpbmc7XG4gIGV2ZW50RGF0YT86IGFueTtcbn0sIHZvaWQ+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ0Rpc3BhdGNoRXZlbnQnKTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGUoaW5wdXQ6IHtcbiAgICBldmVudE5hbWU6IHN0cmluZztcbiAgICBldmVudERhdGE/OiBhbnk7XG4gIH0pIHtcbiAgICBjb25zdCB7IGV2ZW50TmFtZSwgZXZlbnREYXRhIH0gPSBpbnB1dDtcblxuICAgIHRyeSB7XG4gICAgICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgZGlzcGF0Y2ggdGhlIGV2ZW50IHRocm91Z2ggYW4gZXZlbnQgYnVzXG4gICAgICAvLyBGb3Igbm93LCB3ZSdsbCBqdXN0IGxvZyBpdFxuICAgICAgY29uc29sZS5sb2coYFtEaXNwYXRjaEV2ZW50XSBEaXNwYXRjaGluZyBldmVudDogJHtldmVudE5hbWV9YCwgZXZlbnREYXRhKTtcbiAgICAgIFxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzdWx0KHVuZGVmaW5lZCwgJ0RvbmUnKTtcbiAgICAgIFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignW0Rpc3BhdGNoRXZlbnRdIEVycm9yIGRpc3BhdGNoaW5nIGV2ZW50OicsIGVycik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgIHRleHQ6IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnRmFpbGVkIHRvIGRpc3BhdGNoIGV2ZW50JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG91dHB1dDogdW5kZWZpbmVkLFxuICAgICAgICAgIG91dGNvbWVzOiB7XG4gICAgICAgICAgICBGYWlsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59Il19","import { Activity } from '../activity.types';\n/**\n * If Activity - Conditional execution based on a condition.\n *\n * Usage:\n * ```typescript\n * const ifActivity = new If();\n * ifActivity.condition = '{{user.isAdmin}}';\n * ifActivity.thenActivities = [activity1, activity2];\n * ifActivity.elseActivities = [activity3];\n * ```\n */\nexport class If extends Activity {\n constructor() {\n super('If');\n }\n async execute(input) {\n const { condition, thenActivities = [], elseActivities = [] } = input;\n try {\n // Evaluate condition (simplified - in real implementation, use expression evaluator)\n const conditionResult = this.evaluateCondition(condition);\n let result;\n let activities;\n if (conditionResult) {\n activities = thenActivities;\n result = { branch: 'then' };\n }\n else {\n activities = elseActivities;\n result = { branch: 'else' };\n }\n // Execute activities in the chosen branch\n for (const activity of activities) {\n const activityResult = await activity.execute(input);\n if (!activityResult.success) {\n return {\n success: false,\n message: activityResult.message,\n data: {\n output: { branch: conditionResult ? 'then' : 'else', failedActivity: activity },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n return this.createResult(result, conditionResult ? 'Then' : 'Else');\n }\n catch (err) {\n console.error('[If] Error evaluating condition:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Failed to evaluate condition',\n },\n data: {\n output: { branch: 'error' },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n evaluateCondition(condition) {\n if (typeof condition === 'boolean') {\n return condition;\n }\n if (typeof condition === 'string') {\n // Simple evaluation - in real implementation, use proper expression evaluator\n return condition === 'true' || condition === '1' || condition === 'yes';\n }\n return false;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYuYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXRpZXMvaWYuYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBYSxNQUFNLG1CQUFtQixDQUFDO0FBRXhEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sRUFBRyxTQUFRLFFBSWpCO0lBQ0w7UUFDRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUliO1FBQ0MsTUFBTSxFQUFFLFNBQVMsRUFBRSxjQUFjLEdBQUcsRUFBRSxFQUFFLGNBQWMsR0FBRyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFdEUsSUFBSSxDQUFDO1lBQ0gscUZBQXFGO1lBQ3JGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUUxRCxJQUFJLE1BQVcsQ0FBQztZQUNoQixJQUFJLFVBQXVCLENBQUM7WUFFNUIsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsVUFBVSxHQUFHLGNBQWMsQ0FBQztnQkFDNUIsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzlCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixVQUFVLEdBQUcsY0FBYyxDQUFDO2dCQUM1QixNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDOUIsQ0FBQztZQUVELDBDQUEwQztZQUMxQyxLQUFLLE1BQU0sUUFBUSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNsQyxNQUFNLGNBQWMsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzVCLE9BQU87d0JBQ0wsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsT0FBTyxFQUFFLGNBQWMsQ0FBQyxPQUFPO3dCQUMvQixJQUFJLEVBQUU7NEJBQ0osTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRTs0QkFDL0UsUUFBUSxFQUFFO2dDQUNSLE1BQU0sRUFBRSxJQUFJOzZCQUNiO3lCQUNGO3FCQUNGLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV0RSxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkQsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtpQkFDMUU7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7b0JBQzNCLFFBQVEsRUFBRTt3QkFDUixNQUFNLEVBQUUsSUFBSTtxQkFDYjtpQkFDRjthQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFNBQTJCO1FBQ25ELElBQUksT0FBTyxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEMsOEVBQThFO1lBQzlFLE9BQU8sU0FBUyxLQUFLLE1BQU0sSUFBSSxTQUFTLEtBQUssR0FBRyxJQUFJLFNBQVMsS0FBSyxLQUFLLENBQUM7UUFDMUUsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZpdHksIElBY3Rpdml0eSB9IGZyb20gJy4uL2FjdGl2aXR5LnR5cGVzJztcblxuLyoqXG4gKiBJZiBBY3Rpdml0eSAtIENvbmRpdGlvbmFsIGV4ZWN1dGlvbiBiYXNlZCBvbiBhIGNvbmRpdGlvbi5cbiAqIFxuICogVXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpZkFjdGl2aXR5ID0gbmV3IElmKCk7XG4gKiBpZkFjdGl2aXR5LmNvbmRpdGlvbiA9ICd7e3VzZXIuaXNBZG1pbn19JztcbiAqIGlmQWN0aXZpdHkudGhlbkFjdGl2aXRpZXMgPSBbYWN0aXZpdHkxLCBhY3Rpdml0eTJdO1xuICogaWZBY3Rpdml0eS5lbHNlQWN0aXZpdGllcyA9IFthY3Rpdml0eTNdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBJZiBleHRlbmRzIEFjdGl2aXR5PHtcbiAgY29uZGl0aW9uOiBzdHJpbmcgfCBib29sZWFuO1xuICB0aGVuQWN0aXZpdGllcz86IElBY3Rpdml0eVtdO1xuICBlbHNlQWN0aXZpdGllcz86IElBY3Rpdml0eVtdO1xufSwgYW55PiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdJZicpO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dDoge1xuICAgIGNvbmRpdGlvbjogc3RyaW5nIHwgYm9vbGVhbjtcbiAgICB0aGVuQWN0aXZpdGllcz86IElBY3Rpdml0eVtdO1xuICAgIGVsc2VBY3Rpdml0aWVzPzogSUFjdGl2aXR5W107XG4gIH0pIHtcbiAgICBjb25zdCB7IGNvbmRpdGlvbiwgdGhlbkFjdGl2aXRpZXMgPSBbXSwgZWxzZUFjdGl2aXRpZXMgPSBbXSB9ID0gaW5wdXQ7XG5cbiAgICB0cnkge1xuICAgICAgLy8gRXZhbHVhdGUgY29uZGl0aW9uIChzaW1wbGlmaWVkIC0gaW4gcmVhbCBpbXBsZW1lbnRhdGlvbiwgdXNlIGV4cHJlc3Npb24gZXZhbHVhdG9yKVxuICAgICAgY29uc3QgY29uZGl0aW9uUmVzdWx0ID0gdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihjb25kaXRpb24pO1xuICAgICAgXG4gICAgICBsZXQgcmVzdWx0OiBhbnk7XG4gICAgICBsZXQgYWN0aXZpdGllczogSUFjdGl2aXR5W107XG5cbiAgICAgIGlmIChjb25kaXRpb25SZXN1bHQpIHtcbiAgICAgICAgYWN0aXZpdGllcyA9IHRoZW5BY3Rpdml0aWVzO1xuICAgICAgICByZXN1bHQgPSB7IGJyYW5jaDogJ3RoZW4nIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY3Rpdml0aWVzID0gZWxzZUFjdGl2aXRpZXM7XG4gICAgICAgIHJlc3VsdCA9IHsgYnJhbmNoOiAnZWxzZScgfTtcbiAgICAgIH1cblxuICAgICAgLy8gRXhlY3V0ZSBhY3Rpdml0aWVzIGluIHRoZSBjaG9zZW4gYnJhbmNoXG4gICAgICBmb3IgKGNvbnN0IGFjdGl2aXR5IG9mIGFjdGl2aXRpZXMpIHtcbiAgICAgICAgY29uc3QgYWN0aXZpdHlSZXN1bHQgPSBhd2FpdCBhY3Rpdml0eS5leGVjdXRlKGlucHV0KTtcbiAgICAgICAgaWYgKCFhY3Rpdml0eVJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogYWN0aXZpdHlSZXN1bHQubWVzc2FnZSxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgb3V0cHV0OiB7IGJyYW5jaDogY29uZGl0aW9uUmVzdWx0ID8gJ3RoZW4nIDogJ2Vsc2UnLCBmYWlsZWRBY3Rpdml0eTogYWN0aXZpdHkgfSxcbiAgICAgICAgICAgICAgb3V0Y29tZXM6IHtcbiAgICAgICAgICAgICAgICBGYWlsZWQ6IHRydWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzdWx0KHJlc3VsdCwgY29uZGl0aW9uUmVzdWx0ID8gJ1RoZW4nIDogJ0Vsc2UnKTtcbiAgICAgIFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignW0lmXSBFcnJvciBldmFsdWF0aW5nIGNvbmRpdGlvbjonLCBlcnIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICB0ZXh0OiBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0ZhaWxlZCB0byBldmFsdWF0ZSBjb25kaXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgb3V0cHV0OiB7IGJyYW5jaDogJ2Vycm9yJyB9LFxuICAgICAgICAgIG91dGNvbWVzOiB7XG4gICAgICAgICAgICBGYWlsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBldmFsdWF0ZUNvbmRpdGlvbihjb25kaXRpb246IHN0cmluZyB8IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gY29uZGl0aW9uO1xuICAgIH1cbiAgICBcbiAgICBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIFNpbXBsZSBldmFsdWF0aW9uIC0gaW4gcmVhbCBpbXBsZW1lbnRhdGlvbiwgdXNlIHByb3BlciBleHByZXNzaW9uIGV2YWx1YXRvclxuICAgICAgcmV0dXJuIGNvbmRpdGlvbiA9PT0gJ3RydWUnIHx8IGNvbmRpdGlvbiA9PT0gJzEnIHx8IGNvbmRpdGlvbiA9PT0gJ3llcyc7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSJdfQ==","import { Activity } from '../activity.types';\n/**\n * While Activity - Loop execution while condition is true.\n *\n * Usage:\n * ```typescript\n * const whileActivity = new While();\n * whileActivity.condition = '{{counter < 10}}';\n * whileActivity.activities = [incrementActivity, logActivity];\n * ```\n */\nexport class While extends Activity {\n constructor() {\n super('While');\n }\n async execute(input) {\n const { condition, activities = [], maxIterations = 1000 } = input;\n try {\n let iteration = 0;\n let conditionResult = this.evaluateCondition(condition);\n while (conditionResult && iteration < maxIterations) {\n // Execute activities in the loop\n for (const activity of activities) {\n const activityResult = await activity.execute(input);\n if (!activityResult.success) {\n return {\n success: false,\n message: activityResult.message,\n data: {\n output: {\n iterations: iteration,\n completed: false,\n },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n iteration++;\n conditionResult = this.evaluateCondition(condition);\n }\n const result = {\n iterations: iteration,\n completed: iteration < maxIterations\n };\n return this.createResult(result, 'Done');\n }\n catch (err) {\n console.error('[While] Error in loop execution:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Failed during loop execution',\n },\n data: {\n output: { iterations: 0, completed: false },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n evaluateCondition(condition) {\n if (typeof condition === 'boolean') {\n return condition;\n }\n if (typeof condition === 'string') {\n // Simple evaluation - in real implementation, use proper expression evaluator\n return condition === 'true' || condition === '1' || condition === 'yes';\n }\n return false;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpbGUuYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXRpZXMvd2hpbGUuYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBYSxNQUFNLG1CQUFtQixDQUFDO0FBRXhEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxLQUFNLFNBQVEsUUFJcEI7SUFDTDtRQUNFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUliO1FBQ0MsTUFBTSxFQUNKLFNBQVMsRUFDVCxVQUFVLEdBQUcsRUFBRSxFQUNmLGFBQWEsR0FBRyxJQUFJLEVBQ3JCLEdBQUcsS0FBSyxDQUFDO1FBRVYsSUFBSSxDQUFDO1lBQ0gsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV4RCxPQUFPLGVBQWUsSUFBSSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7Z0JBQ3BELGlDQUFpQztnQkFDakMsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDbEMsTUFBTSxjQUFjLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUM1QixPQUFPOzRCQUNMLE9BQU8sRUFBRSxLQUFLOzRCQUNkLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTzs0QkFDL0IsSUFBSSxFQUFFO2dDQUNKLE1BQU0sRUFBRTtvQ0FDTixVQUFVLEVBQUUsU0FBUztvQ0FDckIsU0FBUyxFQUFFLEtBQUs7aUNBQ2pCO2dDQUNELFFBQVEsRUFBRTtvQ0FDUixNQUFNLEVBQUUsSUFBSTtpQ0FDYjs2QkFDRjt5QkFDRixDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxTQUFTLEVBQUUsQ0FBQztnQkFDWixlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRztnQkFDYixVQUFVLEVBQUUsU0FBUztnQkFDckIsU0FBUyxFQUFFLFNBQVMsR0FBRyxhQUFhO2FBQ3JDLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTNDLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2RCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsOEJBQThCO2lCQUMxRTtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO29CQUMzQyxRQUFRLEVBQUU7d0JBQ1IsTUFBTSxFQUFFLElBQUk7cUJBQ2I7aUJBQ0Y7YUFDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxTQUEyQjtRQUNuRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLDhFQUE4RTtZQUM5RSxPQUFPLFNBQVMsS0FBSyxNQUFNLElBQUksU0FBUyxLQUFLLEdBQUcsSUFBSSxTQUFTLEtBQUssS0FBSyxDQUFDO1FBQzFFLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2aXR5LCBJQWN0aXZpdHkgfSBmcm9tICcuLi9hY3Rpdml0eS50eXBlcyc7XG5cbi8qKlxuICogV2hpbGUgQWN0aXZpdHkgLSBMb29wIGV4ZWN1dGlvbiB3aGlsZSBjb25kaXRpb24gaXMgdHJ1ZS5cbiAqIFxuICogVXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB3aGlsZUFjdGl2aXR5ID0gbmV3IFdoaWxlKCk7XG4gKiB3aGlsZUFjdGl2aXR5LmNvbmRpdGlvbiA9ICd7e2NvdW50ZXIgPCAxMH19JztcbiAqIHdoaWxlQWN0aXZpdHkuYWN0aXZpdGllcyA9IFtpbmNyZW1lbnRBY3Rpdml0eSwgbG9nQWN0aXZpdHldO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBXaGlsZSBleHRlbmRzIEFjdGl2aXR5PHtcbiAgY29uZGl0aW9uOiBzdHJpbmcgfCBib29sZWFuO1xuICBhY3Rpdml0aWVzPzogSUFjdGl2aXR5W107XG4gIG1heEl0ZXJhdGlvbnM/OiBudW1iZXI7XG59LCBhbnk+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ1doaWxlJyk7XG4gIH1cblxuICBhc3luYyBleGVjdXRlKGlucHV0OiB7XG4gICAgY29uZGl0aW9uOiBzdHJpbmcgfCBib29sZWFuO1xuICAgIGFjdGl2aXRpZXM/OiBJQWN0aXZpdHlbXTtcbiAgICBtYXhJdGVyYXRpb25zPzogbnVtYmVyO1xuICB9KSB7XG4gICAgY29uc3QgeyBcbiAgICAgIGNvbmRpdGlvbiwgXG4gICAgICBhY3Rpdml0aWVzID0gW10sIFxuICAgICAgbWF4SXRlcmF0aW9ucyA9IDEwMDAgXG4gICAgfSA9IGlucHV0O1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBpdGVyYXRpb24gPSAwO1xuICAgICAgbGV0IGNvbmRpdGlvblJlc3VsdCA9IHRoaXMuZXZhbHVhdGVDb25kaXRpb24oY29uZGl0aW9uKTtcblxuICAgICAgd2hpbGUgKGNvbmRpdGlvblJlc3VsdCAmJiBpdGVyYXRpb24gPCBtYXhJdGVyYXRpb25zKSB7XG4gICAgICAgIC8vIEV4ZWN1dGUgYWN0aXZpdGllcyBpbiB0aGUgbG9vcFxuICAgICAgICBmb3IgKGNvbnN0IGFjdGl2aXR5IG9mIGFjdGl2aXRpZXMpIHtcbiAgICAgICAgICBjb25zdCBhY3Rpdml0eVJlc3VsdCA9IGF3YWl0IGFjdGl2aXR5LmV4ZWN1dGUoaW5wdXQpO1xuICAgICAgICAgIGlmICghYWN0aXZpdHlSZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGFjdGl2aXR5UmVzdWx0Lm1lc3NhZ2UsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAgICAgICAgIGl0ZXJhdGlvbnM6IGl0ZXJhdGlvbixcbiAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvdXRjb21lczoge1xuICAgICAgICAgICAgICAgICAgRmFpbGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZXJhdGlvbisrO1xuICAgICAgICBjb25kaXRpb25SZXN1bHQgPSB0aGlzLmV2YWx1YXRlQ29uZGl0aW9uKGNvbmRpdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICAgaXRlcmF0aW9uczogaXRlcmF0aW9uLFxuICAgICAgICBjb21wbGV0ZWQ6IGl0ZXJhdGlvbiA8IG1heEl0ZXJhdGlvbnNcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJlc3VsdChyZXN1bHQsICdEb25lJyk7XG4gICAgICBcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tXaGlsZV0gRXJyb3IgaW4gbG9vcCBleGVjdXRpb246JywgZXJyKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgdGV4dDogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdGYWlsZWQgZHVyaW5nIGxvb3AgZXhlY3V0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG91dHB1dDogeyBpdGVyYXRpb25zOiAwLCBjb21wbGV0ZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgb3V0Y29tZXM6IHtcbiAgICAgICAgICAgIEZhaWxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV2YWx1YXRlQ29uZGl0aW9uKGNvbmRpdGlvbjogc3RyaW5nIHwgYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgY29uZGl0aW9uID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBjb25kaXRpb247XG4gICAgfVxuICAgIFxuICAgIGlmICh0eXBlb2YgY29uZGl0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gU2ltcGxlIGV2YWx1YXRpb24gLSBpbiByZWFsIGltcGxlbWVudGF0aW9uLCB1c2UgcHJvcGVyIGV4cHJlc3Npb24gZXZhbHVhdG9yXG4gICAgICByZXR1cm4gY29uZGl0aW9uID09PSAndHJ1ZScgfHwgY29uZGl0aW9uID09PSAnMScgfHwgY29uZGl0aW9uID09PSAneWVzJztcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59Il19","import { Activity } from '../activity.types';\n/**\n * ForEach Activity - Iterates over a collection of items.\n *\n * Usage:\n * ```typescript\n * const forEach = new ForEach();\n * await forEach.execute({\n * items: ['item1', 'item2', 'item3'],\n * activities: [processItemActivity]\n * });\n * ```\n */\nexport class ForEach extends Activity {\n constructor() {\n super('ForEach');\n }\n async execute(input) {\n const { items = [], activities = [], itemVariableName = 'currentItem', indexVariableName = 'currentIndex' } = input;\n try {\n const results = [];\n for (let index = 0; index < items.length; index++) {\n const currentItem = items[index];\n // Create context with current item and index\n const itemContext = {\n ...input,\n [itemVariableName]: currentItem,\n [indexVariableName]: index\n };\n // Execute activities for current item\n for (const activity of activities) {\n const activityResult = await activity.execute(itemContext);\n if (!activityResult.success) {\n return {\n success: false,\n message: activityResult.message,\n data: {\n output: {\n totalItems: items.length,\n processedItems: results.length,\n results,\n },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n results.push({\n item: currentItem,\n index,\n processed: true\n });\n }\n const result = {\n totalItems: items.length,\n processedItems: results.length,\n results\n };\n return this.createResult(result, 'Done');\n }\n catch (err) {\n console.error('[ForEach] Error in iteration:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Failed during iteration',\n },\n data: {\n output: { totalItems: 0, processedItems: 0, results: [] },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLWVhY2guYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXRpZXMvZm9yLWVhY2guYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBYSxNQUFNLG1CQUFtQixDQUFDO0FBRXhEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxPQUFPLE9BQVEsU0FBUSxRQUt0QjtJQUNMO1FBQ0UsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBS2I7UUFDQyxNQUFNLEVBQ0osS0FBSyxHQUFHLEVBQUUsRUFDVixVQUFVLEdBQUcsRUFBRSxFQUNmLGdCQUFnQixHQUFHLGFBQWEsRUFDaEMsaUJBQWlCLEdBQUcsY0FBYyxFQUNuQyxHQUFHLEtBQUssQ0FBQztRQUVWLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFVLEVBQUUsQ0FBQztZQUUxQixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNsRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWpDLDZDQUE2QztnQkFDN0MsTUFBTSxXQUFXLEdBQUc7b0JBQ2xCLEdBQUcsS0FBSztvQkFDUixDQUFDLGdCQUFnQixDQUFDLEVBQUUsV0FBVztvQkFDL0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUs7aUJBQzNCLENBQUM7Z0JBRUYsc0NBQXNDO2dCQUN0QyxLQUFLLE1BQU0sUUFBUSxJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUNsQyxNQUFNLGNBQWMsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQzNELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQzVCLE9BQU87NEJBQ0wsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsT0FBTyxFQUFFLGNBQWMsQ0FBQyxPQUFPOzRCQUMvQixJQUFJLEVBQUU7Z0NBQ0osTUFBTSxFQUFFO29DQUNOLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTTtvQ0FDeEIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxNQUFNO29DQUM5QixPQUFPO2lDQUNSO2dDQUNELFFBQVEsRUFBRTtvQ0FDUixNQUFNLEVBQUUsSUFBSTtpQ0FDYjs2QkFDRjt5QkFDRixDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNYLElBQUksRUFBRSxXQUFXO29CQUNqQixLQUFLO29CQUNMLFNBQVMsRUFBRSxJQUFJO2lCQUNoQixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUc7Z0JBQ2IsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUN4QixjQUFjLEVBQUUsT0FBTyxDQUFDLE1BQU07Z0JBQzlCLE9BQU87YUFDUixDQUFDO1lBRUYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUzQyxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDcEQsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtpQkFDckU7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO29CQUN6RCxRQUFRLEVBQUU7d0JBQ1IsTUFBTSxFQUFFLElBQUk7cUJBQ2I7aUJBQ0Y7YUFDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2aXR5LCBJQWN0aXZpdHkgfSBmcm9tICcuLi9hY3Rpdml0eS50eXBlcyc7XG5cbi8qKlxuICogRm9yRWFjaCBBY3Rpdml0eSAtIEl0ZXJhdGVzIG92ZXIgYSBjb2xsZWN0aW9uIG9mIGl0ZW1zLlxuICogXG4gKiBVc2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZvckVhY2ggPSBuZXcgRm9yRWFjaCgpO1xuICogYXdhaXQgZm9yRWFjaC5leGVjdXRlKHtcbiAqICAgaXRlbXM6IFsnaXRlbTEnLCAnaXRlbTInLCAnaXRlbTMnXSxcbiAqICAgYWN0aXZpdGllczogW3Byb2Nlc3NJdGVtQWN0aXZpdHldXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgRm9yRWFjaCBleHRlbmRzIEFjdGl2aXR5PHtcbiAgaXRlbXM6IGFueVtdO1xuICBhY3Rpdml0aWVzPzogSUFjdGl2aXR5W107XG4gIGl0ZW1WYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG4gIGluZGV4VmFyaWFibGVOYW1lPzogc3RyaW5nO1xufSwgYW55PiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdGb3JFYWNoJyk7XG4gIH1cblxuICBhc3luYyBleGVjdXRlKGlucHV0OiB7XG4gICAgaXRlbXM6IGFueVtdO1xuICAgIGFjdGl2aXRpZXM/OiBJQWN0aXZpdHlbXTtcbiAgICBpdGVtVmFyaWFibGVOYW1lPzogc3RyaW5nO1xuICAgIGluZGV4VmFyaWFibGVOYW1lPzogc3RyaW5nO1xuICB9KSB7XG4gICAgY29uc3QgeyBcbiAgICAgIGl0ZW1zID0gW10sIFxuICAgICAgYWN0aXZpdGllcyA9IFtdLCBcbiAgICAgIGl0ZW1WYXJpYWJsZU5hbWUgPSAnY3VycmVudEl0ZW0nLFxuICAgICAgaW5kZXhWYXJpYWJsZU5hbWUgPSAnY3VycmVudEluZGV4J1xuICAgIH0gPSBpbnB1dDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHRzOiBhbnlbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gaXRlbXNbaW5kZXhdO1xuICAgICAgICBcbiAgICAgICAgLy8gQ3JlYXRlIGNvbnRleHQgd2l0aCBjdXJyZW50IGl0ZW0gYW5kIGluZGV4XG4gICAgICAgIGNvbnN0IGl0ZW1Db250ZXh0ID0ge1xuICAgICAgICAgIC4uLmlucHV0LFxuICAgICAgICAgIFtpdGVtVmFyaWFibGVOYW1lXTogY3VycmVudEl0ZW0sXG4gICAgICAgICAgW2luZGV4VmFyaWFibGVOYW1lXTogaW5kZXhcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBFeGVjdXRlIGFjdGl2aXRpZXMgZm9yIGN1cnJlbnQgaXRlbVxuICAgICAgICBmb3IgKGNvbnN0IGFjdGl2aXR5IG9mIGFjdGl2aXRpZXMpIHtcbiAgICAgICAgICBjb25zdCBhY3Rpdml0eVJlc3VsdCA9IGF3YWl0IGFjdGl2aXR5LmV4ZWN1dGUoaXRlbUNvbnRleHQpO1xuICAgICAgICAgIGlmICghYWN0aXZpdHlSZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGFjdGl2aXR5UmVzdWx0Lm1lc3NhZ2UsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAgICAgICAgIHRvdGFsSXRlbXM6IGl0ZW1zLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZEl0ZW1zOiByZXN1bHRzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvdXRjb21lczoge1xuICAgICAgICAgICAgICAgICAgRmFpbGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgaXRlbTogY3VycmVudEl0ZW0sXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgcHJvY2Vzc2VkOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIHRvdGFsSXRlbXM6IGl0ZW1zLmxlbmd0aCxcbiAgICAgICAgcHJvY2Vzc2VkSXRlbXM6IHJlc3VsdHMubGVuZ3RoLFxuICAgICAgICByZXN1bHRzXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN1bHQocmVzdWx0LCAnRG9uZScpO1xuICAgICAgXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbRm9yRWFjaF0gRXJyb3IgaW4gaXRlcmF0aW9uOicsIGVycik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgIHRleHQ6IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnRmFpbGVkIGR1cmluZyBpdGVyYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgb3V0cHV0OiB7IHRvdGFsSXRlbXM6IDAsIHByb2Nlc3NlZEl0ZW1zOiAwLCByZXN1bHRzOiBbXSB9LFxuICAgICAgICAgIG91dGNvbWVzOiB7XG4gICAgICAgICAgICBGYWlsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59Il19","import { inject } from '@angular/core';\nimport { Activity } from '../activity.types';\nimport { AXPCommandService } from '@acorex/platform/runtime';\n/**\n * Execute Command Activity - Executes a command through Command Bus.\n *\n * Usage:\n * ```typescript\n * const executeCmd = new ExecuteCommand();\n * await executeCmd.execute({\n * commandKey: 'UserManagement.CreateUser',\n * input: { name: 'John', email: 'john@example.com' }\n * });\n * ```\n */\nexport class ExecuteCommand extends Activity {\n constructor() {\n super('workflow-activity:execute-command', 'Execute Command');\n this.commandService = inject(AXPCommandService);\n }\n async execute(input) {\n const { commandKey, input: commandInput = {} } = input;\n try {\n // Check if command exists\n if (!this.commandService.exists(commandKey)) {\n console.warn(`[ExecuteCommand] Command '${commandKey}' is not registered. Simulating execution.`);\n // Simulate command execution for unregistered commands\n const result = {\n commandKey,\n success: true,\n output: commandInput,\n executedAt: new Date().toISOString(),\n simulated: true\n };\n return this.createResult(result, 'Done');\n }\n // Execute command through Command Bus\n const result = await this.commandService.execute(commandKey, commandInput);\n if (!result) {\n return {\n success: false,\n message: {\n text: `Command '${commandKey}' returned no result`,\n },\n data: {\n output: {\n commandKey,\n success: false,\n executedAt: new Date().toISOString(),\n },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n if (!result.success) {\n return {\n success: false,\n message: result.message,\n data: {\n output: {\n commandKey,\n success: false,\n executedAt: new Date().toISOString(),\n error: result.message?.text,\n },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n return this.createResult({\n commandKey,\n success: true,\n output: result.data,\n executedAt: new Date().toISOString(),\n }, 'Done');\n }\n catch (err) {\n console.error('[ExecuteCommand] Error executing command:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Unknown error',\n },\n data: {\n output: {\n commandKey,\n success: false,\n error: err instanceof Error ? err.message : 'Unknown error',\n },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS1jb21tYW5kLmFjdGl2aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2VuZ2luZS9hY3Rpdml0aWVzL2V4ZWN1dGUtY29tbWFuZC5hY3Rpdml0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3RDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBTyxjQUFlLFNBQVEsUUFHN0I7SUFHTDtRQUNFLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBSC9DLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFJNUQsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsS0FHYjtRQUNDLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFdkQsSUFBSSxDQUFDO1lBQ0gsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLDZCQUE2QixVQUFVLDRDQUE0QyxDQUFDLENBQUM7Z0JBRWxHLHVEQUF1RDtnQkFDdkQsTUFBTSxNQUFNLEdBQUc7b0JBQ2IsVUFBVTtvQkFDVixPQUFPLEVBQUUsSUFBSTtvQkFDYixNQUFNLEVBQUUsWUFBWTtvQkFDcEIsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO29CQUNwQyxTQUFTLEVBQUUsSUFBSTtpQkFDaEIsQ0FBQztnQkFFRixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFFRCxzQ0FBc0M7WUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNaLE9BQU87b0JBQ0wsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSxZQUFZLFVBQVUsc0JBQXNCO3FCQUNuRDtvQkFDRCxJQUFJLEVBQUU7d0JBQ0osTUFBTSxFQUFFOzRCQUNOLFVBQVU7NEJBQ1YsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO3lCQUNyQzt3QkFDRCxRQUFRLEVBQUU7NEJBQ1IsTUFBTSxFQUFFLElBQUk7eUJBQ2I7cUJBQ0Y7aUJBQ0YsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixPQUFPO29CQUNMLE9BQU8sRUFBRSxLQUFLO29CQUNkLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztvQkFDdkIsSUFBSSxFQUFFO3dCQUNKLE1BQU0sRUFBRTs0QkFDTixVQUFVOzRCQUNWLE9BQU8sRUFBRSxLQUFLOzRCQUNkLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTs0QkFDcEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSTt5QkFDNUI7d0JBQ0QsUUFBUSxFQUFFOzRCQUNSLE1BQU0sRUFBRSxJQUFJO3lCQUNiO3FCQUNGO2lCQUNGLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUN0QjtnQkFDRSxVQUFVO2dCQUNWLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDbkIsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ3JDLEVBQ0QsTUFBTSxDQUNQLENBQUM7UUFFSixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEUsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWU7aUJBQzNEO2dCQUNELElBQUksRUFBRTtvQkFDSixNQUFNLEVBQUU7d0JBQ04sVUFBVTt3QkFDVixPQUFPLEVBQUUsS0FBSzt3QkFDZCxLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZTtxQkFDNUQ7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSAnLi4vYWN0aXZpdHkudHlwZXMnO1xuaW1wb3J0IHsgQVhQQ29tbWFuZFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuXG4vKipcbiAqIEV4ZWN1dGUgQ29tbWFuZCBBY3Rpdml0eSAtIEV4ZWN1dGVzIGEgY29tbWFuZCB0aHJvdWdoIENvbW1hbmQgQnVzLlxuICogXG4gKiBVc2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGV4ZWN1dGVDbWQgPSBuZXcgRXhlY3V0ZUNvbW1hbmQoKTtcbiAqIGF3YWl0IGV4ZWN1dGVDbWQuZXhlY3V0ZSh7XG4gKiAgIGNvbW1hbmRLZXk6ICdVc2VyTWFuYWdlbWVudC5DcmVhdGVVc2VyJyxcbiAqICAgaW5wdXQ6IHsgbmFtZTogJ0pvaG4nLCBlbWFpbDogJ2pvaG5AZXhhbXBsZS5jb20nIH1cbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBFeGVjdXRlQ29tbWFuZCBleHRlbmRzIEFjdGl2aXR5PHtcbiAgY29tbWFuZEtleTogc3RyaW5nO1xuICBpbnB1dD86IGFueTtcbn0sIGFueT4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbW1hbmRTZXJ2aWNlID0gaW5qZWN0KEFYUENvbW1hbmRTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignd29ya2Zsb3ctYWN0aXZpdHk6ZXhlY3V0ZS1jb21tYW5kJywgJ0V4ZWN1dGUgQ29tbWFuZCcpO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dDoge1xuICAgIGNvbW1hbmRLZXk6IHN0cmluZztcbiAgICBpbnB1dD86IGFueTtcbiAgfSkge1xuICAgIGNvbnN0IHsgY29tbWFuZEtleSwgaW5wdXQ6IGNvbW1hbmRJbnB1dCA9IHt9IH0gPSBpbnB1dDtcblxuICAgIHRyeSB7XG4gICAgICAvLyBDaGVjayBpZiBjb21tYW5kIGV4aXN0c1xuICAgICAgaWYgKCF0aGlzLmNvbW1hbmRTZXJ2aWNlLmV4aXN0cyhjb21tYW5kS2V5KSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFtFeGVjdXRlQ29tbWFuZF0gQ29tbWFuZCAnJHtjb21tYW5kS2V5fScgaXMgbm90IHJlZ2lzdGVyZWQuIFNpbXVsYXRpbmcgZXhlY3V0aW9uLmApO1xuICAgICAgICBcbiAgICAgICAgLy8gU2ltdWxhdGUgY29tbWFuZCBleGVjdXRpb24gZm9yIHVucmVnaXN0ZXJlZCBjb21tYW5kc1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgICAgY29tbWFuZEtleSxcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgIG91dHB1dDogY29tbWFuZElucHV0LFxuICAgICAgICAgIGV4ZWN1dGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBzaW11bGF0ZWQ6IHRydWVcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN1bHQocmVzdWx0LCAnRG9uZScpO1xuICAgICAgfVxuXG4gICAgICAvLyBFeGVjdXRlIGNvbW1hbmQgdGhyb3VnaCBDb21tYW5kIEJ1c1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb21tYW5kU2VydmljZS5leGVjdXRlKGNvbW1hbmRLZXksIGNvbW1hbmRJbnB1dCk7XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgIHRleHQ6IGBDb21tYW5kICcke2NvbW1hbmRLZXl9JyByZXR1cm5lZCBubyByZXN1bHRgLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgICAgIGNvbW1hbmRLZXksXG4gICAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICBleGVjdXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3V0Y29tZXM6IHtcbiAgICAgICAgICAgICAgRmFpbGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgbWVzc2FnZTogcmVzdWx0Lm1lc3NhZ2UsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgICAgIGNvbW1hbmRLZXksXG4gICAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICBleGVjdXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICAgIGVycm9yOiByZXN1bHQubWVzc2FnZT8udGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvdXRjb21lczoge1xuICAgICAgICAgICAgICBGYWlsZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJlc3VsdChcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmRLZXksXG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBvdXRwdXQ6IHJlc3VsdC5kYXRhLFxuICAgICAgICAgIGV4ZWN1dGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfSxcbiAgICAgICAgJ0RvbmUnLFxuICAgICAgKTtcbiAgICAgIFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignW0V4ZWN1dGVDb21tYW5kXSBFcnJvciBleGVjdXRpbmcgY29tbWFuZDonLCBlcnIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICB0ZXh0OiBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgICBjb21tYW5kS2V5LFxuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91dGNvbWVzOiB7XG4gICAgICAgICAgICBGYWlsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59Il19","import { inject } from '@angular/core';\nimport { Activity } from '../activity.types';\nimport { AXPQueryService } from '@acorex/platform/runtime';\n/**\n * Execute Query Activity - Executes a query through Query Bus.\n *\n * Usage:\n * ```typescript\n * const executeQuery = new ExecuteQuery();\n * await executeQuery.execute({\n * queryKey: 'UserManagement.GetUsers',\n * input: { page: 1, pageSize: 10 }\n * });\n * ```\n */\nexport class ExecuteQuery extends Activity {\n constructor() {\n super('workflow-activity:execute-query', 'Execute Query');\n this.queryService = inject(AXPQueryService);\n }\n async execute(input) {\n const { queryKey, input: queryInput = {} } = input;\n try {\n // Check if query exists\n if (!this.queryService.exists(queryKey)) {\n console.warn(`[ExecuteQuery] Query '${queryKey}' is not registered. Simulating execution.`);\n // Simulate query execution for unregistered queries\n const result = {\n queryKey,\n success: true,\n data: [],\n totalCount: 0,\n executedAt: new Date().toISOString(),\n simulated: true\n };\n return this.createResult(result, 'Done');\n }\n // Execute query through Query Bus\n const result = await this.queryService.fetch(queryKey, queryInput);\n return this.createResult({\n queryKey,\n success: true,\n data: result,\n totalCount: Array.isArray(result) ? result.length : (result?.totalCount || 0),\n executedAt: new Date().toISOString()\n }, 'Done');\n }\n catch (err) {\n console.error('[ExecuteQuery] Error executing query:', err);\n return {\n success: false,\n message: {\n text: err instanceof Error ? err.message : 'Unknown error',\n },\n data: {\n output: {\n queryKey,\n success: false,\n error: err instanceof Error ? err.message : 'Unknown error',\n },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS1xdWVyeS5hY3Rpdml0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi9lbmdpbmUvYWN0aXZpdGllcy9leGVjdXRlLXF1ZXJ5LmFjdGl2aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBTyxZQUFhLFNBQVEsUUFHM0I7SUFHTDtRQUNFLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUgzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUl4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUdiO1FBQ0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxHQUFHLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUVuRCxJQUFJLENBQUM7WUFDSCx3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLFFBQVEsNENBQTRDLENBQUMsQ0FBQztnQkFFNUYsb0RBQW9EO2dCQUNwRCxNQUFNLE1BQU0sR0FBRztvQkFDYixRQUFRO29CQUNSLE9BQU8sRUFBRSxJQUFJO29CQUNiLElBQUksRUFBRSxFQUFFO29CQUNSLFVBQVUsRUFBRSxDQUFDO29CQUNiLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtvQkFDcEMsU0FBUyxFQUFFLElBQUk7aUJBQ2hCLENBQUM7Z0JBRUYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBRUQsa0NBQWtDO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRW5FLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDdkIsUUFBUTtnQkFDUixPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUUsTUFBTTtnQkFDWixVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQztnQkFDN0UsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ3JDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFYixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUQsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWU7aUJBQzNEO2dCQUNELElBQUksRUFBRTtvQkFDSixNQUFNLEVBQUU7d0JBQ04sUUFBUTt3QkFDUixPQUFPLEVBQUUsS0FBSzt3QkFDZCxLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZTtxQkFDNUQ7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSAnLi4vYWN0aXZpdHkudHlwZXMnO1xuaW1wb3J0IHsgQVhQUXVlcnlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcblxuLyoqXG4gKiBFeGVjdXRlIFF1ZXJ5IEFjdGl2aXR5IC0gRXhlY3V0ZXMgYSBxdWVyeSB0aHJvdWdoIFF1ZXJ5IEJ1cy5cbiAqIFxuICogVXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBleGVjdXRlUXVlcnkgPSBuZXcgRXhlY3V0ZVF1ZXJ5KCk7XG4gKiBhd2FpdCBleGVjdXRlUXVlcnkuZXhlY3V0ZSh7XG4gKiAgIHF1ZXJ5S2V5OiAnVXNlck1hbmFnZW1lbnQuR2V0VXNlcnMnLFxuICogICBpbnB1dDogeyBwYWdlOiAxLCBwYWdlU2l6ZTogMTAgfVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEV4ZWN1dGVRdWVyeSBleHRlbmRzIEFjdGl2aXR5PHtcbiAgcXVlcnlLZXk6IHN0cmluZztcbiAgaW5wdXQ/OiBhbnk7XG59LCBhbnk+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBxdWVyeVNlcnZpY2UgPSBpbmplY3QoQVhQUXVlcnlTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignd29ya2Zsb3ctYWN0aXZpdHk6ZXhlY3V0ZS1xdWVyeScsICdFeGVjdXRlIFF1ZXJ5Jyk7XG4gIH1cblxuICBhc3luYyBleGVjdXRlKGlucHV0OiB7XG4gICAgcXVlcnlLZXk6IHN0cmluZztcbiAgICBpbnB1dD86IGFueTtcbiAgfSkge1xuICAgIGNvbnN0IHsgcXVlcnlLZXksIGlucHV0OiBxdWVyeUlucHV0ID0ge30gfSA9IGlucHV0O1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIENoZWNrIGlmIHF1ZXJ5IGV4aXN0c1xuICAgICAgaWYgKCF0aGlzLnF1ZXJ5U2VydmljZS5leGlzdHMocXVlcnlLZXkpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgW0V4ZWN1dGVRdWVyeV0gUXVlcnkgJyR7cXVlcnlLZXl9JyBpcyBub3QgcmVnaXN0ZXJlZC4gU2ltdWxhdGluZyBleGVjdXRpb24uYCk7XG4gICAgICAgIFxuICAgICAgICAvLyBTaW11bGF0ZSBxdWVyeSBleGVjdXRpb24gZm9yIHVucmVnaXN0ZXJlZCBxdWVyaWVzXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICAgICBxdWVyeUtleSxcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgIGRhdGE6IFtdLFxuICAgICAgICAgIHRvdGFsQ291bnQ6IDAsXG4gICAgICAgICAgZXhlY3V0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIHNpbXVsYXRlZDogdHJ1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJlc3VsdChyZXN1bHQsICdEb25lJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEV4ZWN1dGUgcXVlcnkgdGhyb3VnaCBRdWVyeSBCdXNcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucXVlcnlTZXJ2aWNlLmZldGNoKHF1ZXJ5S2V5LCBxdWVyeUlucHV0KTtcblxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzdWx0KHtcbiAgICAgICAgcXVlcnlLZXksXG4gICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIGRhdGE6IHJlc3VsdCxcbiAgICAgICAgdG90YWxDb3VudDogQXJyYXkuaXNBcnJheShyZXN1bHQpID8gcmVzdWx0Lmxlbmd0aCA6IChyZXN1bHQ/LnRvdGFsQ291bnQgfHwgMCksXG4gICAgICAgIGV4ZWN1dGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSwgJ0RvbmUnKTtcbiAgICAgIFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignW0V4ZWN1dGVRdWVyeV0gRXJyb3IgZXhlY3V0aW5nIHF1ZXJ5OicsIGVycik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgIHRleHQ6IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAgIHF1ZXJ5S2V5LFxuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91dGNvbWVzOiB7XG4gICAgICAgICAgICBGYWlsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59Il19","import { Activity } from '../activity.types';\n/**\n * Start Activity - Marks the start point of a workflow.\n *\n * This is a visual marker activity that doesn't perform any actual work.\n * It's used in workflow designers to clearly indicate where a workflow begins.\n *\n * Usage:\n * ```typescript\n * const start = new StartActivity();\n * await start.execute({});\n * ```\n */\nexport class StartActivity extends Activity {\n constructor() {\n super('StartActivity');\n }\n async execute(input) {\n // This activity is a visual marker only\n // It immediately completes and allows workflow to proceed\n console.log('[StartActivity] Workflow started');\n return this.createResult(undefined, 'Done');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtYWN0aXZpdHkuYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXRpZXMvc3RhcnQtYWN0aXZpdHkuYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUFxQztJQUN0RTtRQUNFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUE0QjtRQUN4Qyx3Q0FBd0M7UUFDeEMsMERBQTBEO1FBQzFELE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUVoRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSAnLi4vYWN0aXZpdHkudHlwZXMnO1xuXG4vKipcbiAqIFN0YXJ0IEFjdGl2aXR5IC0gTWFya3MgdGhlIHN0YXJ0IHBvaW50IG9mIGEgd29ya2Zsb3cuXG4gKiBcbiAqIFRoaXMgaXMgYSB2aXN1YWwgbWFya2VyIGFjdGl2aXR5IHRoYXQgZG9lc24ndCBwZXJmb3JtIGFueSBhY3R1YWwgd29yay5cbiAqIEl0J3MgdXNlZCBpbiB3b3JrZmxvdyBkZXNpZ25lcnMgdG8gY2xlYXJseSBpbmRpY2F0ZSB3aGVyZSBhIHdvcmtmbG93IGJlZ2lucy5cbiAqIFxuICogVXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzdGFydCA9IG5ldyBTdGFydEFjdGl2aXR5KCk7XG4gKiBhd2FpdCBzdGFydC5leGVjdXRlKHt9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU3RhcnRBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5PFJlY29yZDxzdHJpbmcsIG5ldmVyPiwgdm9pZD4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignU3RhcnRBY3Rpdml0eScpO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dDogUmVjb3JkPHN0cmluZywgbmV2ZXI+KSB7XG4gICAgLy8gVGhpcyBhY3Rpdml0eSBpcyBhIHZpc3VhbCBtYXJrZXIgb25seVxuICAgIC8vIEl0IGltbWVkaWF0ZWx5IGNvbXBsZXRlcyBhbmQgYWxsb3dzIHdvcmtmbG93IHRvIHByb2NlZWRcbiAgICBjb25zb2xlLmxvZygnW1N0YXJ0QWN0aXZpdHldIFdvcmtmbG93IHN0YXJ0ZWQnKTtcbiAgICBcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN1bHQodW5kZWZpbmVkLCAnRG9uZScpO1xuICB9XG59XG5cbiJdfQ==","import { Activity } from '../activity.types';\n/**\n * End Activity - Marks the end point of a workflow.\n *\n * This is a visual marker activity that terminates the workflow execution.\n * When this activity is reached, the workflow completes successfully.\n *\n * Usage:\n * ```typescript\n * const end = new EndActivity();\n * await end.execute({});\n * ```\n */\nexport class EndActivity extends Activity {\n constructor() {\n super('EndActivity');\n }\n async execute(input) {\n // This activity marks the end of workflow execution\n console.log('[EndActivity] Workflow completed');\n return this.createResult(undefined, 'Done');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kLWFjdGl2aXR5LmFjdGl2aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2VuZ2luZS9hY3Rpdml0aWVzL2VuZC1hY3Rpdml0eS5hY3Rpdml0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFN0M7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFFBQXFDO0lBQ3BFO1FBQ0UsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQTRCO1FBQ3hDLG9EQUFvRDtRQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFFaEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uL2FjdGl2aXR5LnR5cGVzJztcblxuLyoqXG4gKiBFbmQgQWN0aXZpdHkgLSBNYXJrcyB0aGUgZW5kIHBvaW50IG9mIGEgd29ya2Zsb3cuXG4gKiBcbiAqIFRoaXMgaXMgYSB2aXN1YWwgbWFya2VyIGFjdGl2aXR5IHRoYXQgdGVybWluYXRlcyB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uLlxuICogV2hlbiB0aGlzIGFjdGl2aXR5IGlzIHJlYWNoZWQsIHRoZSB3b3JrZmxvdyBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LlxuICogXG4gKiBVc2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGVuZCA9IG5ldyBFbmRBY3Rpdml0eSgpO1xuICogYXdhaXQgZW5kLmV4ZWN1dGUoe30pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBFbmRBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5PFJlY29yZDxzdHJpbmcsIG5ldmVyPiwgdm9pZD4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignRW5kQWN0aXZpdHknKTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGUoaW5wdXQ6IFJlY29yZDxzdHJpbmcsIG5ldmVyPikge1xuICAgIC8vIFRoaXMgYWN0aXZpdHkgbWFya3MgdGhlIGVuZCBvZiB3b3JrZmxvdyBleGVjdXRpb25cbiAgICBjb25zb2xlLmxvZygnW0VuZEFjdGl2aXR5XSBXb3JrZmxvdyBjb21wbGV0ZWQnKTtcbiAgICBcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN1bHQodW5kZWZpbmVkLCAnRG9uZScpO1xuICB9XG59XG5cbiJdfQ==","import { provideCommandSetups } from '@acorex/platform/runtime';\n/**\n * Command setups for all built-in workflow activities.\n * Registers activities as AXPCommand instances.\n */\nexport const provideWorkflowActivityCommands = () => provideCommandSetups([\n // Workflow Markers\n {\n key: 'workflow-activity:start',\n command: () => import('./start-activity.activity').then(m => m.StartActivity),\n },\n {\n key: 'workflow-activity:end',\n command: () => import('./end-activity.activity').then(m => m.EndActivity),\n },\n // Console Activities\n {\n key: 'workflow-activity:write-line',\n command: () => import('./write-line.activity').then(m => m.WriteLine),\n },\n // Control Flow Activities\n {\n key: 'workflow-activity:sequence',\n command: () => import('./sequence.activity').then(m => m.Sequence),\n },\n {\n key: 'workflow-activity:if',\n command: () => import('./if.activity').then(m => m.If),\n },\n {\n key: 'workflow-activity:while',\n command: () => import('./while.activity').then(m => m.While),\n },\n {\n key: 'workflow-activity:for-each',\n command: () => import('./for-each.activity').then(m => m.ForEach),\n },\n // Dialog Activities\n {\n key: 'workflow-activity:show-confirm-dialog',\n command: () => import('./show-confirm-dialog.activity').then(m => m.ShowConfirmDialog),\n },\n {\n key: 'workflow-activity:show-alert-dialog',\n command: () => import('./show-alert-dialog.activity').then(m => m.ShowAlertDialog),\n },\n // Notification Activities\n {\n key: 'workflow-activity:show-toast',\n command: () => import('./show-toast.activity').then(m => m.ShowToast),\n },\n // Event Activities\n {\n key: 'workflow-activity:dispatch-event',\n command: () => import('./dispatch-event.activity').then(m => m.DispatchEvent),\n },\n // Variable Activities\n {\n key: 'workflow-activity:set-variable',\n command: () => import('./set-variable.activity').then(m => m.SetVariable),\n },\n // Command & Query Activities\n {\n key: 'workflow-activity:execute-command',\n command: () => import('./execute-command.activity').then(m => m.ExecuteCommand),\n },\n {\n key: 'workflow-activity:execute-query',\n command: () => import('./execute-query.activity').then(m => m.ExecuteQuery),\n },\n // Navigation Activities\n {\n key: 'workflow-activity:navigate',\n command: () => import('./navigate.activity').then(m => m.Navigate),\n },\n]);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY29tbWFuZC1zZXR1cHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXRpZXMvYWN0aXZpdHktY29tbWFuZC1zZXR1cHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEU7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7SUFDeEUsbUJBQW1CO0lBQ25CO1FBQ0UsR0FBRyxFQUFFLHlCQUF5QjtRQUM5QixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztLQUM5RTtJQUNEO1FBQ0UsR0FBRyxFQUFFLHVCQUF1QjtRQUM1QixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztLQUMxRTtJQUVELHFCQUFxQjtJQUNyQjtRQUNFLEdBQUcsRUFBRSw4QkFBOEI7UUFDbkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7S0FDdEU7SUFFRCwwQkFBMEI7SUFDMUI7UUFDRSxHQUFHLEVBQUUsNEJBQTRCO1FBQ2pDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0tBQ25FO0lBQ0Q7UUFDRSxHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUN2RDtJQUNEO1FBQ0UsR0FBRyxFQUFFLHlCQUF5QjtRQUM5QixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztLQUM3RDtJQUNEO1FBQ0UsR0FBRyxFQUFFLDRCQUE0QjtRQUNqQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztLQUNsRTtJQUVELG9CQUFvQjtJQUNwQjtRQUNFLEdBQUcsRUFBRSx1Q0FBdUM7UUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztLQUN2RjtJQUNEO1FBQ0UsR0FBRyxFQUFFLHFDQUFxQztRQUMxQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztLQUNuRjtJQUVELDBCQUEwQjtJQUMxQjtRQUNFLEdBQUcsRUFBRSw4QkFBOEI7UUFDbkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7S0FDdEU7SUFFRCxtQkFBbUI7SUFDbkI7UUFDRSxHQUFHLEVBQUUsa0NBQWtDO1FBQ3ZDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO0tBQzlFO0lBRUQsc0JBQXNCO0lBQ3RCO1FBQ0UsR0FBRyxFQUFFLGdDQUFnQztRQUNyQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztLQUMxRTtJQUVELDZCQUE2QjtJQUM3QjtRQUNFLEdBQUcsRUFBRSxtQ0FBbUM7UUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7S0FDaEY7SUFDRDtRQUNFLEdBQUcsRUFBRSxpQ0FBaUM7UUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7S0FDNUU7SUFFRCx3QkFBd0I7SUFDeEI7UUFDRSxHQUFHLEVBQUUsNEJBQTRCO1FBQ2pDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0tBQ25FO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvdmlkZUNvbW1hbmRTZXR1cHMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuXG4vKipcbiAqIENvbW1hbmQgc2V0dXBzIGZvciBhbGwgYnVpbHQtaW4gd29ya2Zsb3cgYWN0aXZpdGllcy5cbiAqIFJlZ2lzdGVycyBhY3Rpdml0aWVzIGFzIEFYUENvbW1hbmQgaW5zdGFuY2VzLlxuICovXG5leHBvcnQgY29uc3QgcHJvdmlkZVdvcmtmbG93QWN0aXZpdHlDb21tYW5kcyA9ICgpID0+IHByb3ZpZGVDb21tYW5kU2V0dXBzKFtcbiAgLy8gV29ya2Zsb3cgTWFya2Vyc1xuICB7XG4gICAga2V5OiAnd29ya2Zsb3ctYWN0aXZpdHk6c3RhcnQnLFxuICAgIGNvbW1hbmQ6ICgpID0+IGltcG9ydCgnLi9zdGFydC1hY3Rpdml0eS5hY3Rpdml0eScpLnRoZW4obSA9PiBtLlN0YXJ0QWN0aXZpdHkpLFxuICB9LFxuICB7XG4gICAga2V5OiAnd29ya2Zsb3ctYWN0aXZpdHk6ZW5kJyxcbiAgICBjb21tYW5kOiAoKSA9PiBpbXBvcnQoJy4vZW5kLWFjdGl2aXR5LmFjdGl2aXR5JykudGhlbihtID0+IG0uRW5kQWN0aXZpdHkpLFxuICB9LFxuXG4gIC8vIENvbnNvbGUgQWN0aXZpdGllc1xuICB7XG4gICAga2V5OiAnd29ya2Zsb3ctYWN0aXZpdHk6d3JpdGUtbGluZScsXG4gICAgY29tbWFuZDogKCkgPT4gaW1wb3J0KCcuL3dyaXRlLWxpbmUuYWN0aXZpdHknKS50aGVuKG0gPT4gbS5Xcml0ZUxpbmUpLFxuICB9LFxuXG4gIC8vIENvbnRyb2wgRmxvdyBBY3Rpdml0aWVzXG4gIHtcbiAgICBrZXk6ICd3b3JrZmxvdy1hY3Rpdml0eTpzZXF1ZW5jZScsXG4gICAgY29tbWFuZDogKCkgPT4gaW1wb3J0KCcuL3NlcXVlbmNlLmFjdGl2aXR5JykudGhlbihtID0+IG0uU2VxdWVuY2UpLFxuICB9LFxuICB7XG4gICAga2V5OiAnd29ya2Zsb3ctYWN0aXZpdHk6aWYnLFxuICAgIGNvbW1hbmQ6ICgpID0+IGltcG9ydCgnLi9pZi5hY3Rpdml0eScpLnRoZW4obSA9PiBtLklmKSxcbiAgfSxcbiAge1xuICAgIGtleTogJ3dvcmtmbG93LWFjdGl2aXR5OndoaWxlJyxcbiAgICBjb21tYW5kOiAoKSA9PiBpbXBvcnQoJy4vd2hpbGUuYWN0aXZpdHknKS50aGVuKG0gPT4gbS5XaGlsZSksXG4gIH0sXG4gIHtcbiAgICBrZXk6ICd3b3JrZmxvdy1hY3Rpdml0eTpmb3ItZWFjaCcsXG4gICAgY29tbWFuZDogKCkgPT4gaW1wb3J0KCcuL2Zvci1lYWNoLmFjdGl2aXR5JykudGhlbihtID0+IG0uRm9yRWFjaCksXG4gIH0sXG5cbiAgLy8gRGlhbG9nIEFjdGl2aXRpZXNcbiAge1xuICAgIGtleTogJ3dvcmtmbG93LWFjdGl2aXR5OnNob3ctY29uZmlybS1kaWFsb2cnLFxuICAgIGNvbW1hbmQ6ICgpID0+IGltcG9ydCgnLi9zaG93LWNvbmZpcm0tZGlhbG9nLmFjdGl2aXR5JykudGhlbihtID0+IG0uU2hvd0NvbmZpcm1EaWFsb2cpLFxuICB9LFxuICB7XG4gICAga2V5OiAnd29ya2Zsb3ctYWN0aXZpdHk6c2hvdy1hbGVydC1kaWFsb2cnLFxuICAgIGNvbW1hbmQ6ICgpID0+IGltcG9ydCgnLi9zaG93LWFsZXJ0LWRpYWxvZy5hY3Rpdml0eScpLnRoZW4obSA9PiBtLlNob3dBbGVydERpYWxvZyksXG4gIH0sXG5cbiAgLy8gTm90aWZpY2F0aW9uIEFjdGl2aXRpZXNcbiAge1xuICAgIGtleTogJ3dvcmtmbG93LWFjdGl2aXR5OnNob3ctdG9hc3QnLFxuICAgIGNvbW1hbmQ6ICgpID0+IGltcG9ydCgnLi9zaG93LXRvYXN0LmFjdGl2aXR5JykudGhlbihtID0+IG0uU2hvd1RvYXN0KSxcbiAgfSxcblxuICAvLyBFdmVudCBBY3Rpdml0aWVzXG4gIHtcbiAgICBrZXk6ICd3b3JrZmxvdy1hY3Rpdml0eTpkaXNwYXRjaC1ldmVudCcsXG4gICAgY29tbWFuZDogKCkgPT4gaW1wb3J0KCcuL2Rpc3BhdGNoLWV2ZW50LmFjdGl2aXR5JykudGhlbihtID0+IG0uRGlzcGF0Y2hFdmVudCksXG4gIH0sXG5cbiAgLy8gVmFyaWFibGUgQWN0aXZpdGllc1xuICB7XG4gICAga2V5OiAnd29ya2Zsb3ctYWN0aXZpdHk6c2V0LXZhcmlhYmxlJyxcbiAgICBjb21tYW5kOiAoKSA9PiBpbXBvcnQoJy4vc2V0LXZhcmlhYmxlLmFjdGl2aXR5JykudGhlbihtID0+IG0uU2V0VmFyaWFibGUpLFxuICB9LFxuXG4gIC8vIENvbW1hbmQgJiBRdWVyeSBBY3Rpdml0aWVzXG4gIHtcbiAgICBrZXk6ICd3b3JrZmxvdy1hY3Rpdml0eTpleGVjdXRlLWNvbW1hbmQnLFxuICAgIGNvbW1hbmQ6ICgpID0+IGltcG9ydCgnLi9leGVjdXRlLWNvbW1hbmQuYWN0aXZpdHknKS50aGVuKG0gPT4gbS5FeGVjdXRlQ29tbWFuZCksXG4gIH0sXG4gIHtcbiAgICBrZXk6ICd3b3JrZmxvdy1hY3Rpdml0eTpleGVjdXRlLXF1ZXJ5JyxcbiAgICBjb21tYW5kOiAoKSA9PiBpbXBvcnQoJy4vZXhlY3V0ZS1xdWVyeS5hY3Rpdml0eScpLnRoZW4obSA9PiBtLkV4ZWN1dGVRdWVyeSksXG4gIH0sXG5cbiAgLy8gTmF2aWdhdGlvbiBBY3Rpdml0aWVzXG4gIHtcbiAgICBrZXk6ICd3b3JrZmxvdy1hY3Rpdml0eTpuYXZpZ2F0ZScsXG4gICAgY29tbWFuZDogKCkgPT4gaW1wb3J0KCcuL25hdmlnYXRlLmFjdGl2aXR5JykudGhlbihtID0+IG0uTmF2aWdhdGUpLFxuICB9LFxuXSk7XG4iXX0=","// Built-in Activities\nexport * from './write-line.activity';\nexport * from './sequence.activity';\nexport * from './show-confirm-dialog.activity';\nexport * from './show-alert-dialog.activity';\nexport * from './show-dialog-layout-builder.activity';\nexport * from './show-toast.activity';\nexport * from './navigate.activity';\nexport * from './set-variable.activity';\nexport * from './dispatch-event.activity';\nexport * from './if.activity';\nexport * from './while.activity';\nexport * from './for-each.activity';\nexport * from './execute-command.activity';\nexport * from './execute-query.activity';\nexport * from './start-activity.activity';\nexport * from './end-activity.activity';\n// Command Setups\nexport * from './activity-command-setups';\n// Re-export activity types\nexport * from '../activity.types';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2FjdGl2aXRpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCO0FBQ3RCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLGlCQUFpQjtBQUNqQixjQUFjLDJCQUEyQixDQUFDO0FBRTFDLDJCQUEyQjtBQUMzQixjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQnVpbHQtaW4gQWN0aXZpdGllc1xuZXhwb3J0ICogZnJvbSAnLi93cml0ZS1saW5lLmFjdGl2aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vc2VxdWVuY2UuYWN0aXZpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9zaG93LWNvbmZpcm0tZGlhbG9nLmFjdGl2aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vc2hvdy1hbGVydC1kaWFsb2cuYWN0aXZpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9zaG93LWRpYWxvZy1sYXlvdXQtYnVpbGRlci5hY3Rpdml0eSc7XG5leHBvcnQgKiBmcm9tICcuL3Nob3ctdG9hc3QuYWN0aXZpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0ZS5hY3Rpdml0eSc7XG5leHBvcnQgKiBmcm9tICcuL3NldC12YXJpYWJsZS5hY3Rpdml0eSc7XG5leHBvcnQgKiBmcm9tICcuL2Rpc3BhdGNoLWV2ZW50LmFjdGl2aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vaWYuYWN0aXZpdHknO1xuZXhwb3J0ICogZnJvbSAnLi93aGlsZS5hY3Rpdml0eSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvci1lYWNoLmFjdGl2aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vZXhlY3V0ZS1jb21tYW5kLmFjdGl2aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vZXhlY3V0ZS1xdWVyeS5hY3Rpdml0eSc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXJ0LWFjdGl2aXR5LmFjdGl2aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vZW5kLWFjdGl2aXR5LmFjdGl2aXR5JztcblxuLy8gQ29tbWFuZCBTZXR1cHNcbmV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHktY29tbWFuZC1zZXR1cHMnO1xuXG4vLyBSZS1leHBvcnQgYWN0aXZpdHkgdHlwZXNcbmV4cG9ydCAqIGZyb20gJy4uL2FjdGl2aXR5LnR5cGVzJzsiXX0=","// Workflow Definition Types (Storage/Database)\nexport * from './workflow-definition.types';\nexport * from './workflow-definition.config';\nexport * from './workflow-definition-registry.service';\n// Workflow Instance Types (Storage/Database)\nexport * from './workflow-instance.types';\n// Activity System Types (Simplified)\nexport * from './activity.types';\n// Activity Provider Infrastructure\nexport * from './activity-provider.service';\nexport * from './activity-category.provider';\n// Simple Runtime (Coordinator only)\nexport * from './runtime';\n// Built-in Activities\nexport * from './activities';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx3Q0FBd0MsQ0FBQztBQUV2RCw2Q0FBNkM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQTRDMUMscUNBQXFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFFakMsbUNBQW1DO0FBQ25DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxvQ0FBb0M7QUFDcEMsY0FBYyxXQUFXLENBQUM7QUFFMUIsc0JBQXNCO0FBQ3RCLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gV29ya2Zsb3cgRGVmaW5pdGlvbiBUeXBlcyAoU3RvcmFnZS9EYXRhYmFzZSlcbmV4cG9ydCAqIGZyb20gJy4vd29ya2Zsb3ctZGVmaW5pdGlvbi50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3dvcmtmbG93LWRlZmluaXRpb24uY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vd29ya2Zsb3ctZGVmaW5pdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcblxuLy8gV29ya2Zsb3cgSW5zdGFuY2UgVHlwZXMgKFN0b3JhZ2UvRGF0YWJhc2UpXG5leHBvcnQgKiBmcm9tICcuL3dvcmtmbG93LWluc3RhbmNlLnR5cGVzJztcblxuLy8gUmUtZXhwb3J0IElBY3Rpdml0eSBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB0eXBlIHsgSUFjdGl2aXR5IH0gZnJvbSAnLi9hY3Rpdml0eS50eXBlcyc7XG5cbi8vIFJlLWV4cG9ydCBXb3JrZmxvdyBEZWZpbml0aW9uIHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIEFYUFdvcmtmbG93RGVmaW5pdGlvbixcbiAgQVhQV29ya2Zsb3dEZWZpbml0aW9uSnNvbixcbiAgQVhQRmxvd2NoYXJ0LFxuICBBWFBBY3Rpdml0eSxcbiAgQVhQQ29ubmVjdGlvbixcbiAgQVhQRW5kcG9pbnQsXG4gIEFYUFBvc2l0aW9uLFxuICBBWFBWYXJpYWJsZURlZmluaXRpb24sXG4gIEFYUFdvcmtmbG93SW5wdXREZWZpbml0aW9uLFxuICBBWFBXb3JrZmxvd091dHB1dERlZmluaXRpb24sXG4gIEFYUEV4cHJlc3Npb24sXG4gIEFYUElucHV0VmFsdWUsXG4gIEFYUE91dHB1dFZhbHVlLFxuICBBWFBWYXJpYWJsZU1vZGVsLFxuICBBWFBNZXRhZGF0YSxcbiAgQVhQQ3VzdG9tUHJvcGVydGllcyxcbiAgQVhQV29ya2Zsb3dPcHRpb25zLFxuICBBWFBTdG9yZWRXb3JrZmxvd0RlZmluaXRpb24sXG4gIEFYUFZlcnNpb25lZEVudGl0eSxcbn0gZnJvbSAnLi93b3JrZmxvdy1kZWZpbml0aW9uLnR5cGVzJztcblxuLy8gUmUtZXhwb3J0IFdvcmtmbG93IEluc3RhbmNlIHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIEFYUFdvcmtmbG93SW5zdGFuY2UsXG4gIEFYUFdvcmtmbG93U3RhdGUsXG4gIEFYUFdvcmtmbG93U3RhdHVzLFxuICBBWFBXb3JrZmxvd1N1YlN0YXR1cyxcbiAgQVhQQWN0aXZpdHlTdGF0dXMsXG4gIEFYUEV4Y2VwdGlvblN0YXRlLFxuICBBWFBBY3Rpdml0eUluY2lkZW50LFxuICBBWFBXb3JrZmxvd0ZhdWx0U3RhdGUsXG4gIEFYUEJvb2ttYXJrLFxuICBBWFBDb21wbGV0aW9uQ2FsbGJhY2tTdGF0ZSxcbiAgQVhQQWN0aXZpdHlWYXJpYWJsZSxcbiAgQVhQQWN0aXZpdHlFeGVjdXRpb25Db250ZXh0U3RhdGUsXG59IGZyb20gJy4vd29ya2Zsb3ctaW5zdGFuY2UudHlwZXMnO1xuXG4vLyBBY3Rpdml0eSBTeXN0ZW0gVHlwZXMgKFNpbXBsaWZpZWQpXG5leHBvcnQgKiBmcm9tICcuL2FjdGl2aXR5LnR5cGVzJztcblxuLy8gQWN0aXZpdHkgUHJvdmlkZXIgSW5mcmFzdHJ1Y3R1cmVcbmV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHktcHJvdmlkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGl2aXR5LWNhdGVnb3J5LnByb3ZpZGVyJztcblxuLy8gU2ltcGxlIFJ1bnRpbWUgKENvb3JkaW5hdG9yIG9ubHkpXG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUnO1xuXG4vLyBCdWlsdC1pbiBBY3Rpdml0aWVzXG5leHBvcnQgKiBmcm9tICcuL2FjdGl2aXRpZXMnOyJdfQ==","import { Inject, NgModule, Optional, inject } from '@angular/core';\nimport { AXPWorkflowDecideAction } from './actions/decide.action';\nimport { AXPStartWorkflowAction } from './actions/start-workflow.action';\nimport { AXPWorkflowRegistryService } from './workflow-registery.service';\nimport { provideWorkflowActivityCommands } from './engine';\nimport { AXP_COMMAND_SETUP } from '@acorex/platform/runtime';\nimport * as i0 from \"@angular/core\";\nexport class AXPWorkflowModule {\n static forRoot(config) {\n return {\n ngModule: AXPWorkflowModule,\n providers: [\n provideWorkflowActivityCommands(),\n {\n provide: 'AXPWorkflowModuleFactory',\n useFactory: (registry) => () => {\n registry.registerAction('start-workflow', AXPStartWorkflowAction);\n registry.registerAction('decide', AXPWorkflowDecideAction);\n //\n if (config?.functions) {\n for (const [key, type] of Object.entries(config.functions)) {\n registry.registerFunction(key, type);\n }\n }\n //\n if (config?.actions) {\n for (const [key, type] of Object.entries(config.actions)) {\n registry.registerAction(key, type);\n }\n }\n //\n if (config?.workflows) {\n for (const [key, type] of Object.entries(config.workflows)) {\n registry.registerWorkflow(key, type);\n }\n }\n },\n deps: [AXPWorkflowRegistryService],\n multi: true,\n },\n ...Object.values(config?.actions ?? { AXPStartWorkflowAction }),\n ...Object.values(config?.functions ?? {}),\n ],\n };\n }\n static forChild(config) {\n return {\n ngModule: AXPWorkflowModule,\n providers: [\n // Built-in activities are already registered in forRoot via @NgModule providers\n // No need to register again in forChild\n {\n provide: 'AXPWorkflowModuleFactory',\n useFactory: (registry) => () => {\n registry.registerAction('start-workflow', AXPStartWorkflowAction);\n registry.registerAction('decide', AXPWorkflowDecideAction);\n //\n if (config?.functions) {\n for (const [key, type] of Object.entries(config.functions)) {\n registry.registerFunction(key, type);\n }\n }\n //\n if (config?.actions) {\n for (const [key, type] of Object.entries(config.actions)) {\n registry.registerAction(key, type);\n }\n }\n //\n if (config?.workflows) {\n for (const [key, type] of Object.entries(config.workflows)) {\n registry.registerWorkflow(key, type);\n }\n }\n },\n deps: [AXPWorkflowRegistryService],\n multi: true,\n },\n ...Object.values(config?.actions ?? {}),\n ...Object.values(config?.functions ?? {}),\n ],\n };\n }\n /**\n * @ignore\n */\n constructor(instances) {\n // Inject AXP_COMMAND_SETUP to trigger command registration factory\n this._commandSetup = inject(AXP_COMMAND_SETUP, { optional: true });\n instances?.forEach((f) => {\n f();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowModule, deps: [{ token: 'AXPWorkflowModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowModule, providers: [\n provideWorkflowActivityCommands(),\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWorkflowModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n provideWorkflowActivityCommands(),\n ],\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['AXPWorkflowModuleFactory']\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL3dvcmtmbG93Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUF1QixRQUFRLEVBQUUsUUFBUSxFQUFRLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBcUI3RCxNQUFNLE9BQU8saUJBQWlCO0lBSTVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBaUM7UUFDOUMsT0FBTztZQUNMLFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsU0FBUyxFQUFFO2dCQUNULCtCQUErQixFQUFFO2dCQUNqQztvQkFDRSxPQUFPLEVBQUUsMEJBQTBCO29CQUNuQyxVQUFVLEVBQUUsQ0FBQyxRQUFvQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUU7d0JBQ3pELFFBQVEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsQ0FBQzt3QkFDbEUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsdUJBQXVCLENBQUMsQ0FBQzt3QkFDM0QsRUFBRTt3QkFDRixJQUFJLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQzs0QkFDdEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0NBQzNELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7NEJBQ3ZDLENBQUM7d0JBQ0gsQ0FBQzt3QkFDRCxFQUFFO3dCQUNGLElBQUksTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDOzRCQUNwQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQ0FDekQsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7NEJBQ3JDLENBQUM7d0JBQ0gsQ0FBQzt3QkFDRCxFQUFFO3dCQUNGLElBQUksTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDOzRCQUN0QixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQ0FDM0QsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQzs0QkFDdkMsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7b0JBQ0QsSUFBSSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ2xDLEtBQUssRUFBRSxJQUFJO2lCQUNaO2dCQUNELEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztnQkFDL0QsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO2FBQzFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQWlDO1FBQy9DLE9BQU87WUFDTCxRQUFRLEVBQUUsaUJBQWlCO1lBQzNCLFNBQVMsRUFBRTtnQkFDVCxnRkFBZ0Y7Z0JBQ2hGLHdDQUF3QztnQkFDeEM7b0JBQ0UsT0FBTyxFQUFFLDBCQUEwQjtvQkFDbkMsVUFBVSxFQUFFLENBQUMsUUFBb0MsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFO3dCQUN6RCxRQUFRLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLENBQUM7d0JBQ2xFLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLHVCQUF1QixDQUFDLENBQUM7d0JBQzNELEVBQUU7d0JBQ0YsSUFBSSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7NEJBQ3RCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dDQUMzRCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUN2QyxDQUFDO3dCQUNILENBQUM7d0JBQ0QsRUFBRTt3QkFDRixJQUFJLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs0QkFDcEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0NBQ3pELFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUNyQyxDQUFDO3dCQUNILENBQUM7d0JBQ0QsRUFBRTt3QkFDRixJQUFJLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQzs0QkFDdEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0NBQzNELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7NEJBQ3ZDLENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO29CQUNELElBQUksRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUNsQyxLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRCxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ3ZDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQzthQUMxQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUE0RCxTQUFnQjtRQW5GNUUsbUVBQW1FO1FBQzNELGtCQUFhLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFtRnBFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F4RlUsaUJBQWlCLGtCQW9GSSwwQkFBMEI7Z0hBcEYvQyxpQkFBaUI7Z0hBQWpCLGlCQUFpQixhQUpqQjtZQUNULCtCQUErQixFQUFFO1NBQ2xDOzs0RkFFVSxpQkFBaUI7a0JBUjdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVCwrQkFBK0IsRUFBRTtxQkFDbEM7aUJBQ0Y7OzBCQXFGYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBUeXBlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFdvcmtmbG93RGVjaWRlQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zL2RlY2lkZS5hY3Rpb24nO1xuaW1wb3J0IHsgQVhQU3RhcnRXb3JrZmxvd0FjdGlvbiB9IGZyb20gJy4vYWN0aW9ucy9zdGFydC13b3JrZmxvdy5hY3Rpb24nO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dvcmtmbG93LXJlZ2lzdGVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdvcmtmbG93LCBBWFBXb3JrZmxvd0FjdGlvbiwgQVhQV29ya2Zsb3dGdW5jdGlvbiB9IGZyb20gJy4vd29ya2Zsb3cudHlwZXMnO1xuaW1wb3J0IHsgcHJvdmlkZVdvcmtmbG93QWN0aXZpdHlDb21tYW5kcyB9IGZyb20gJy4vZW5naW5lJztcbmltcG9ydCB7IEFYUF9DT01NQU5EX1NFVFVQIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dNb2R1bGVDb25maWdzIHtcbiAgZnVuY3Rpb25zPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBUeXBlPEFYUFdvcmtmbG93RnVuY3Rpb24+O1xuICB9O1xuICBhY3Rpb25zPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBUeXBlPEFYUFdvcmtmbG93QWN0aW9uPjtcbiAgfTtcbiAgd29ya2Zsb3dzPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBBWFBXb3JrZmxvdztcbiAgfTtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW10sXG4gIGV4cG9ydHM6IFtdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBwcm92aWRlcnM6IFtcbiAgICBwcm92aWRlV29ya2Zsb3dBY3Rpdml0eUNvbW1hbmRzKCksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUFdvcmtmbG93TW9kdWxlIHtcbiAgLy8gSW5qZWN0IEFYUF9DT01NQU5EX1NFVFVQIHRvIHRyaWdnZXIgY29tbWFuZCByZWdpc3RyYXRpb24gZmFjdG9yeVxuICBwcml2YXRlIF9jb21tYW5kU2V0dXAgPSBpbmplY3QoQVhQX0NPTU1BTkRfU0VUVVAsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogQVhQV29ya2Zsb3dNb2R1bGVDb25maWdzKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBWFBXb3JrZmxvd01vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQVhQV29ya2Zsb3dNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZVdvcmtmbG93QWN0aXZpdHlDb21tYW5kcygpLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogJ0FYUFdvcmtmbG93TW9kdWxlRmFjdG9yeScsXG4gICAgICAgICAgdXNlRmFjdG9yeTogKHJlZ2lzdHJ5OiBBWFBXb3JrZmxvd1JlZ2lzdHJ5U2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXJBY3Rpb24oJ3N0YXJ0LXdvcmtmbG93JywgQVhQU3RhcnRXb3JrZmxvd0FjdGlvbik7XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlckFjdGlvbignZGVjaWRlJywgQVhQV29ya2Zsb3dEZWNpZGVBY3Rpb24pO1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIGlmIChjb25maWc/LmZ1bmN0aW9ucykge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHR5cGVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZy5mdW5jdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXJGdW5jdGlvbihrZXksIHR5cGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgaWYgKGNvbmZpZz8uYWN0aW9ucykge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHR5cGVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZy5hY3Rpb25zKSkge1xuICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQWN0aW9uKGtleSwgdHlwZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICBpZiAoY29uZmlnPy53b3JrZmxvd3MpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB0eXBlXSBvZiBPYmplY3QuZW50cmllcyhjb25maWcud29ya2Zsb3dzKSkge1xuICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyV29ya2Zsb3coa2V5LCB0eXBlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVwczogW0FYUFdvcmtmbG93UmVnaXN0cnlTZXJ2aWNlXSxcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhjb25maWc/LmFjdGlvbnMgPz8geyBBWFBTdGFydFdvcmtmbG93QWN0aW9uIH0pLFxuICAgICAgICAuLi5PYmplY3QudmFsdWVzKGNvbmZpZz8uZnVuY3Rpb25zID8/IHt9KSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JDaGlsZChjb25maWc/OiBBWFBXb3JrZmxvd01vZHVsZUNvbmZpZ3MpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFYUFdvcmtmbG93TW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBWFBXb3JrZmxvd01vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAvLyBCdWlsdC1pbiBhY3Rpdml0aWVzIGFyZSBhbHJlYWR5IHJlZ2lzdGVyZWQgaW4gZm9yUm9vdCB2aWEgQE5nTW9kdWxlIHByb3ZpZGVyc1xuICAgICAgICAvLyBObyBuZWVkIHRvIHJlZ2lzdGVyIGFnYWluIGluIGZvckNoaWxkXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiAnQVhQV29ya2Zsb3dNb2R1bGVGYWN0b3J5JyxcbiAgICAgICAgICB1c2VGYWN0b3J5OiAocmVnaXN0cnk6IEFYUFdvcmtmbG93UmVnaXN0cnlTZXJ2aWNlKSA9PiAoKSA9PiB7XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlckFjdGlvbignc3RhcnQtd29ya2Zsb3cnLCBBWFBTdGFydFdvcmtmbG93QWN0aW9uKTtcbiAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQWN0aW9uKCdkZWNpZGUnLCBBWFBXb3JrZmxvd0RlY2lkZUFjdGlvbik7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgaWYgKGNvbmZpZz8uZnVuY3Rpb25zKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdHlwZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnLmZ1bmN0aW9ucykpIHtcbiAgICAgICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlckZ1bmN0aW9uKGtleSwgdHlwZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICBpZiAoY29uZmlnPy5hY3Rpb25zKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdHlwZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnLmFjdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXJBY3Rpb24oa2V5LCB0eXBlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIGlmIChjb25maWc/LndvcmtmbG93cykge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHR5cGVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZy53b3JrZmxvd3MpKSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXJXb3JrZmxvdyhrZXksIHR5cGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZXBzOiBbQVhQV29ya2Zsb3dSZWdpc3RyeVNlcnZpY2VdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICAuLi5PYmplY3QudmFsdWVzKGNvbmZpZz8uYWN0aW9ucyA/PyB7fSksXG4gICAgICAgIC4uLk9iamVjdC52YWx1ZXMoY29uZmlnPy5mdW5jdGlvbnMgPz8ge30pLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoJ0FYUFdvcmtmbG93TW9kdWxlRmFjdG9yeScpIGluc3RhbmNlczogYW55W10pIHtcbiAgICBpbnN0YW5jZXM/LmZvckVhY2goKGYpID0+IHtcbiAgICAgIGYoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvYWNvcmV4LXBsYXRmb3JtLXdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.AXPWorkflowRegistryService"],"mappings":";;;;;;;;;;;;AAAO,MAAM,gBAAgB,SAAS,KAAK,CAAC;AAC5C,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI,EAAE;AACvC,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,IAAI,GAAG,kBAAkB;AACtC,IAAI;AACJ;;ACHO,MAAM,uBAAuB,CAAC;AACrC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE;AACzC,IAAI;AACJ,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAC/C,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAClK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACnBN,MAAM,0BAA0B,CAAC;AACxC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE;AACrC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE;AACnC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE;AACrC,IAAI;AACJ,IAAI,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE;AACrC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC7C,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1C,IAAI;AACJ,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AACjC,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACzC,IAAI;AACJ,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACxC,IAAI;AACJ,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE;AACjC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AACzC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1C,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACnD,IAAI;AACJ,IAAI,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE;AACpC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5D,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;AACxC,YAAY,OAAO,KAAK,CAAC,QAAQ,CAAC;AAClC,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;AACvD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5D,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;AACxC,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;AACjC,gBAAgB,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;AACtC,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACzG,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACjF,QAAQ;AACR,IAAI;AACJ,IAAI,iBAAiB,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;AACpD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5D,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;AACxC,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AAClC,gBAAgB,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;AACtC,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACzG,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACjF,QAAQ;AACR,IAAI;AACJ,IAAI,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,mBAAmB,EAAE;AACpF,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;AACrD,QAAQ,IAAI,IAAI,IAAI,SAAS,EAAE;AAC/B,YAAY,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE;AAC1D,gBAAgB,MAAM,EAAE,aAAa;AACrC,gBAAgB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzC,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE;AAC1D,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB;AACpB,wBAAwB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC;AACzF,wBAAwB,UAAU,EAAE,SAAS;AAC7C,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACrK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,CAAC;AACrI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACvFN,MAAM,kBAAkB,CAAC;AAChC,IAAI,WAAW,CAAC,WAAW,GAAG,EAAE,EAAE;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE;AAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE;AACpC,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC;AAC/C,IAAI;AACJ,IAAI,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;AAC5B,QAAQ,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;AAC5C,IAAI;AACJ,IAAI,YAAY,CAAC,OAAO,GAAG,EAAE,EAAE;AAC/B,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,EAAE;AAC1D,IAAI;AACJ,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;AAC/D,IAAI;AACJ,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE;AAC3B,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AACzC,IAAI;AACJ,IAAI,UAAU,CAAC,MAAM,EAAE;AACvB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;AACpE,IAAI;AACJ,IAAI,SAAS,CAAC,GAAG,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;AACxC,IAAI;AACJ;AACO,MAAM,iBAAiB,CAAC;AAC/B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC3D,IAAI;AACJ,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACrL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACxI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;AACN,MAAM,mBAAmB,CAAC;AACjC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACvL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC1I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;AACN,SAAS,mBAAmB,CAAC,IAAI,EAAE;AAC1C,IAAI,MAAM,YAAY,GAAG,CAAC,OAAO,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACzD,IAAI,YAAY,CAAC,IAAI,GAAG,IAAI;AAC5B,IAAI,OAAO,YAAY;AACvB;AACO,SAAS,MAAM,CAAC,GAAG,YAAY,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;AACnF;;ACvDO,MAAM,uBAAuB,SAAS,iBAAiB,CAAC;AAC/D,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3B;AACA,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC7L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAClK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACPN,MAAM,kBAAkB,CAAC;AAChC,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO;AACxC,IAAI;AACJ,IAAI,WAAW,CAAC,eAAe,EAAE,QAAQ,EAAE;AAC3C,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe;AAC9C,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC;AACvD,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,EAAE;AACnD;AACA,QAAQ,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAC/F,QAAQ,IAAI,aAAa,GAAG,EAAE,CAAC,WAAW;AAC1C,QAAQ,MAAM,OAAO,GAAG,cAAc,YAAY;AAClD,cAAc;AACd,cAAc,IAAI,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC5E;AACA,QAAQ,OAAO,aAAa,EAAE;AAC9B,YAAY,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;AACvD,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB,MAAM,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,kCAAkC,CAAC,CAAC;AACtG,YAAY;AACZ;AACA,YAAY,MAAM,MAAM,GAAG,OAAO,WAAW,CAAC,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM;AACnI;AACA,YAAY,IAAI,WAAW,CAAC,KAAK,EAAE;AACnC,gBAAgB,IAAI,MAAM,GAAG,EAAE;AAC/B,gBAAgB,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC;AAC3F,gBAAgB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,YAAY;AACtE,oBAAoB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AACjD,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,CAAC,CAAC,CAAC;AACnB,YAAY;AACZ,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,YAAY;AACtE,oBAAoB,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AACjD,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,YAAY;AACZ,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC,gBAAgB,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC;AACnE,YAAY;AACZ;AACA,YAAY,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC;AACnF,YAAY,IAAI,YAAY,EAAE;AAC9B,gBAAgB,aAAa,GAAG,YAAY,CAAC,UAAU;AACvD,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ,IAAI,WAAW,CAAC,cAAc,EAAE;AAChC;AACA,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ,IAAI,iBAAiB,CAAC,UAAU,EAAE;AAClC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC;AACrE,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,MAAM,IAAI,gBAAgB,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,4BAA4B,CAAC,CAAC;AAChG,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5C,IAAI;AACJ,IAAI,mBAAmB,CAAC,YAAY,EAAE;AACtC,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC;AAC3E,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAY,MAAM,IAAI,gBAAgB,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,4BAA4B,CAAC,CAAC;AACpG,QAAQ;AACR,QAAQ,OAAO,YAAY;AAC3B,IAAI;AACJ,IAAI,MAAM,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE;AAClD,QAAQ,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AACpC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,SAAS,EAAE;AACtD,YAAY,IAAI,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;AAC5E,gBAAgB,OAAO,QAAQ;AAC/B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE;AACjD,QAAQ,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,YAAY,OAAO,IAAI,CAAC;AACxB,QAAQ;AACR;AACA,QAAQ,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjH;AACA,QAAQ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC5D;AACA,QAAQ,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AAChD,IAAI;AACJ,IAAI,MAAM,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE;AACtD,QAAQ,QAAQ,SAAS,CAAC,IAAI;AAC9B,YAAY,KAAK,QAAQ;AACzB,gBAAgB,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;AACnH,YAAY,KAAK,KAAK;AACtB;AACA,gBAAgB,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE;AAChE,gBAAgB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9H,gBAAgB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AAC3D,YAAY,KAAK,IAAI;AACrB;AACA,gBAAgB,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE;AAC/D,gBAAgB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5H,gBAAgB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AACzD,YAAY;AACZ,gBAAgB,MAAM,IAAI,gBAAgB,CAAC,CAAC,4BAA4B,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3F;AACA,IAAI;AACJ;AACA,IAAI,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,OAAO,EAAE;AAC1D,QAAQ,IAAI;AACZ,YAAY,IAAI,UAAU,GAAG,EAAE;AAC/B,YAAY,IAAI,OAAO,kBAAkB,KAAK,QAAQ,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACpG,gBAAgB,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,qBAAqB,CAAC;AACvF,gBAAgB,IAAI,CAAC,eAAe,EAAE;AACtC,oBAAoB,MAAM,KAAK,CAAC,CAAC,8BAA8B,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACvF,gBAAgB;AAChB,gBAAgB,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC;AAC/C,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,UAAU,GAAG,kBAAkB;AAC/C,YAAY;AACZ;AACA,YAAY,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE;AACpE;AACA,YAAY,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,iDAAiD,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;AAC5H,YAAY,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;AAC/C,YAAY,OAAO,MAAM;AACzB,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC;AAChE,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;AACpE,QAAQ,IAAI,CAAC,GAAG,EAAE;AAClB,YAAY;AACZ,QAAQ;AACR,QAAQ,WAAW,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACnD,YAAY,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG;AACzE,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1E,gBAAgB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC;AAC9E,gBAAgB,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;AAClD,YAAY;AACZ,iBAAiB,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC9C,gBAAgB,KAAK,KAAK,IAAI;AAC9B,iBAAiB,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AACxE;AACA,gBAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;AACvE,YAAY;AACZ,iBAAiB;AACjB;AACA,gBAAgB,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;AAC/C,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,MAAM,KAAK,GAAG,EAAE;AACxB,QAAQ,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAClE,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO;AAChE,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE;AACrC,IAAI;AACJ,IAAI,mBAAmB,CAAC,YAAY,EAAE;AACtC,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC;AAC3E,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAY,MAAM,IAAI,gBAAgB,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,4BAA4B,CAAC,CAAC;AACpG,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;AAC9C,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEA,0BAA6B,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACtP,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7J;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,0BAA6B,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;;AC/L9F,MAAM,sBAAsB,SAAS,iBAAiB,CAAC;AAC9D,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACzD,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3B;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO;AACxB,YAAY,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9C;AACA,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACtE,QAAQ;AACR,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,MAAM,CAAC;AACnB,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC5L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACjK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC5Bb;AACA;AACA;AACA;AACY,MAAC,8BAA8B,GAAG,IAAI,cAAc,CAAC,gCAAgC;AACjG;AACA;AACA;AACA;AACO,MAAM,6BAA6B,CAAC;AAC3C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjF,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC3G,QAAQ,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE;AAC1C,YAAY,IAAI;AAChB,gBAAgB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACzD,gBAAgB,IAAI,UAAU,EAAE;AAChC,oBAAoB,OAAO,UAAU;AACrC,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,kDAAkD,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACjG,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC3G,QAAQ,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;AAClC,QAAQ,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE;AAC1C,YAAY,IAAI,MAAM,CAAC,WAAW,EAAE;AACpC,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE;AAC5D,oBAAoB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/D,gBAAgB;AAChB,gBAAgB,OAAO,KAAK,EAAE;AAC9B,oBAAoB,OAAO,CAAC,IAAI,CAAC,kEAAkE,EAAE,KAAK,CAAC;AAC3G,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACjM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACxK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,UAAU,EAAE,CAAC;AACxI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;AACzC,SAAS,CAAC,EAAE,CAAC;;AC1Db;AACA;AACA;AACA;AACO,MAAM,oCAAoC,CAAC;AAClD,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAC7D,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE;AAC9B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE;AACtC,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;AAC5C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE;AACpB;AACA,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAClC,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACvC,QAAQ;AACR;AACA,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACxD,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;AAC5C,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAC/D,QAAQ;AACR,QAAQ,OAAO,UAAU;AACzB,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,UAAU,EAAE;AACzB,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC;AACnD,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAC5E,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,UAAU,EAAE;AACvB,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC7C,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC;AACvD,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC7E,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAClC,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC5D,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAC1B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,YAAY,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AAC3C,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC5C,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACxM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/K;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,UAAU,EAAE,CAAC;AAC/I,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AChGb;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACO,MAAM,QAAQ,CAAC;AACtB,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE;AAC3C,QAAQ,OAAO;AACf,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,IAAI,EAAE;AAClB,gBAAgB,MAAM;AACtB,gBAAgB,QAAQ,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE;AAC7C,aAAa;AACb,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA;AACO,MAAM,gBAAgB,CAAC;AAC9B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE;AACjC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE;AACpC,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;AACxC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;AACxC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;AAC9C,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/C,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7D,QAAQ;AACR,QAAQ,OAAO,OAAO,EAAE;AACxB,IAAI;AACJ;AACA;AACA;AACA,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AACzC,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/C,IAAI;AACJ;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AACpD,IAAI;AACJ;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,QAAQ,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC5E,IAAI;AACJ;;ACpEA;AACA;AACA;AACY,MAAC,qBAAqB,GAAG,IAAI,cAAc,CAAC,uBAAuB;AAC/E;AACA;AACA;AACA;AACO,MAAM,0BAA0B,CAAC;AACxC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE;AAC5C,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;AAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE;AAC3B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,EAAE;AACnC,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;AAChC,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACzD,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,QAAQ,EAAE;AAC/B,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC7C,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,QAAQ,EAAE;AACvC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7C,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;AACrD,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,IAAI,IAAI,CAAC,WAAW;AAC5B,YAAY;AACZ;AACA,QAAQ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACvD,YAAY,MAAM,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;AAC3D,QAAQ;AACR;AACA,QAAQ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC/C,YAAY,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACnD,QAAQ;AACR,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,IAAI;AACJ;AACA;AACA;AACA,IAAI,aAAa,CAAC,GAAG,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;AAChD,IAAI;AACJ;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;AAC5D,IAAI;AACJ;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,QAAQ,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC5E,IAAI;AACJ;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;AACvF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,GAAG,EAAE;AAC9B,QAAQ,IAAI;AACZ;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAClD,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ;AACA,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC;AAC9D,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ;AACA,YAAY,MAAM,OAAO,GAAG,MAAM,MAAM,EAAE;AAC1C,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,QAAQ,EAAE;AACvC,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,gBAAgB,EAAE,CAAC,MAAM,KAAK;AAC1C,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;AAC3E,YAAY;AACZ,SAAS;AACT,QAAQ,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;AACvC,IAAI;AACJ,IAAI,MAAM,0BAA0B,CAAC,QAAQ,EAAE;AAC/C,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,kBAAkB,EAAE,CAAC,UAAU,KAAK;AAChD,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;AACnD,YAAY;AACZ,SAAS;AACT,QAAQ,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;AACvC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACrK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,CAAC;AACrI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC9Hb;AACA;AACA;AACY,MAAC,8BAA8B,GAAG,IAAI,cAAc,CAAC,gCAAgC;AAC1F,MAAM,kCAAkC,CAAC;AAChD,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE;AACxC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE;AACnC,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;AAClC,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AAChC,YAAY;AACZ,QAAQ;AACR,QAAQ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC/C,YAAY,MAAM,QAAQ,CAAC,OAAO,CAAC;AACnC,gBAAgB,kBAAkB,EAAE,CAAC,UAAU,KAAK;AACpD,oBAAoB,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjF,gBAAgB;AAChB,aAAa,CAAC;AACd,QAAQ;AACR,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;AACjC,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AACnG,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACxC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9U,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7K;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,CAAC;AAC7I,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;AACzC,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,CAAC;AAC5F,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACtD,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,8BAA8B;AACzD,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;;AChDxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,2BAA2B,CAAC;AACzC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC,CAAC;AAClJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC;AACtI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;ACvCb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAmB,CAAC;AACjC,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,2BAA2B,CAAC;AAC3E,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE;AACnC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE,EAAE;AAChD,QAAQ,IAAI;AACZ,YAAY,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,KAAK,CAAC;AAClF,YAAY,MAAM,MAAM,GAAG;AAC3B,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;AAC9C,gBAAgB,QAAQ,EAAE,SAAS,CAAC,WAAW,IAAI,IAAI;AACvD,gBAAgB,WAAW,EAAE,SAAS,CAAC,WAAW;AAClD,gBAAgB,KAAK,EAAE,SAAS,CAAC;AACjC,aAAa;AACb,YAAY,OAAO,MAAM;AACzB,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC;AAClF,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,0BAA0B;AAClE,gBAAgB,QAAQ,EAAE;AAC1B,aAAa;AACb,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,CAAC,IAAI,EAAE;AAC5B;AACA,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;AAChF,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,2DAA2D,CAAC,CAAC;AAClH,QAAQ;AACR,QAAQ,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACvD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;AAC3D,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC;AACjF,gBAAgB,WAAW;AAC3B,gBAAgB,MAAM,EAAE,IAAI,CAAC,UAAU;AACvC,gBAAgB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzC,gBAAgB,OAAO;AACvB,gBAAgB,SAAS,EAAE;AAC3B,aAAa,CAAC;AACd;AACA,YAAY,IAAI,QAAQ,CAAC,KAAK,EAAE;AAChC,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC;AAChE,YAAY;AACZ,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvC,gBAAgB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;AACnD,gBAAgB,WAAW;AAC3B,gBAAgB,KAAK,EAAE,QAAQ,CAAC;AAChC,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,yBAAyB;AACjE,gBAAgB,QAAQ,EAAE;AAC1B,aAAa;AACb,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE,EAAE;AACtD;AACA,QAAQ,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE;AAC7E,QAAQ,IAAI;AACZ;AACA,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAgB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AACvE,YAAY;AACZ;AACA,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC;AACjF,gBAAgB,WAAW;AAC3B,gBAAgB,MAAM;AACtB,gBAAgB,SAAS;AACzB,gBAAgB,OAAO;AACvB,gBAAgB;AAChB,aAAa,CAAC;AACd;AACA,YAAY,IAAI,QAAQ,CAAC,KAAK,EAAE;AAChC,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC;AAChE,YAAY;AACZ,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvC,gBAAgB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;AACnD,gBAAgB,WAAW;AAC3B,gBAAgB,KAAK,EAAE,QAAQ,CAAC;AAChC,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,2BAA2B;AACnE,gBAAgB,QAAQ,EAAE;AAC1B,aAAa;AACb,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,CAAC,WAAW,EAAE;AACxC;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;AACvD,QAAQ,IAAI,MAAM,EAAE;AACpB;AACA,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE;AACtE,YAAY,IAAI,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE;AAC1C,gBAAgB,OAAO,MAAM;AAC7B,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI;AACZ,YAAY,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC;AAChF,gBAAgB;AAChB,aAAa,CAAC;AACd;AACA,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC;AACnD,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,uBAAuB,CAAC,IAAI,EAAE;AACxC,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/E,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,IAAI,CAAC,YAAY,CAAC,wCAAwC,CAAC,CAAC;AACxI,gBAAgB,OAAO;AACvB,oBAAoB,MAAM,EAAE,IAAI;AAChC,oBAAoB,OAAO,EAAE;AAC7B,iBAAiB;AACjB,YAAY;AACZ;AACA;AACA;AACA,YAAY,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE;AAC9D,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC,IAAI,OAAO,YAAY,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;AAC9F;AACA,gBAAgB,YAAY,GAAG,EAAE,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE;AAChE,YAAY;AACZ,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;AAC7F,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,OAAO;AACvB,oBAAoB,MAAM,EAAE,IAAI;AAChC,oBAAoB,OAAO,EAAE,QAAQ;AACrC,iBAAiB;AACjB,YAAY;AACZ,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACjC,gBAAgB,OAAO;AACvB,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI;AACnD,qBAAqB;AACrB,oBAAoB,OAAO,EAAE,QAAQ;AACrC,iBAAiB;AACjB,YAAY;AACZ,YAAY,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI;AAC7C,YAAY,MAAM,QAAQ,GAAG,aAAa,EAAE,QAAQ,IAAI,EAAE;AAC1D,YAAY,IAAI,OAAO,GAAG,MAAM;AAChC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,gBAAgB,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM;AACxF,YAAY;AACZ,YAAY,OAAO;AACnB,gBAAgB,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,IAAI;AACrD,gBAAgB,OAAO;AACvB,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,2DAA2D,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;AACrH,YAAY,OAAO;AACnB,gBAAgB,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE;AACnE,gBAAgB,OAAO,EAAE;AACzB,aAAa;AACb,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,sBAAsB,CAAC,UAAU,EAAE,KAAK,EAAE;AACpD,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC;AAC5E,YAAY,UAAU;AACtB,YAAY;AACZ,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC;AACjE,QAAQ,OAAO;AACf,YAAY,WAAW,EAAE,QAAQ,CAAC,WAAW;AAC7C,YAAY,KAAK,EAAE,QAAQ,CAAC,KAAK;AACjC,YAAY,WAAW,EAAE,QAAQ,CAAC;AAClC,SAAS;AACT,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACvL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAC9J;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC9Sb;AACA;AACA;;ACFA;;ACCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,SAAS,SAAS,QAAQ,CAAC;AACxC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,WAAW,CAAC;AAC1B,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE;AACrC,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE;AACjD,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9C,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;AACnD,IAAI;AACJ;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAQ,SAAS,QAAQ,CAAC;AACvC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,UAAU,CAAC;AACzB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;AAC5B,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,KAAK,EAAE;AACzB;AACA,QAAQ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AAChD,YAAY,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AACxD,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACjC,gBAAgB,OAAO;AACvB,oBAAoB,OAAO,EAAE,KAAK;AAClC,oBAAoB,OAAO,EAAE,MAAM,CAAC,OAAO;AAC3C,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,MAAM,EAAE,SAAS;AACzC,wBAAwB,QAAQ,EAAE;AAClC,4BAA4B,MAAM,EAAE,IAAI;AACxC,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;AACnD,IAAI;AACJ;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iBAAiB,SAAS,QAAQ,CAAC;AAChD;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,mBAAmB,CAAC;AAClC;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAC9D,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,KAAK,GAAG,SAAS,EAAE,aAAa,GAAG,QAAQ,EAAE,KAAK,GAAG,YAAY,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,KAAK;AACvI;AACA;AACA,QAAQ,MAAM,eAAe,GAAG;AAChC,eAAe,KAAK,CAAC,UAAU,CAAC,GAAG;AACnC,kBAAkB,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI;AACzE,kBAAkB,KAAK;AACvB,cAAc,EAAE;AAChB,QAAQ,MAAM,iBAAiB,GAAG;AAClC,eAAe,OAAO,CAAC,UAAU,CAAC,GAAG;AACrC,kBAAkB,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI;AAC3E,kBAAkB,OAAO;AACzB,cAAc,EAAE;AAChB,QAAQ,IAAI;AACZ,YAAY,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAC;AAC7I,YAAY,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM;AAC/C,YAAY,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ;AACxD,YAAY,OAAO,IAAI,CAAC,YAAY,CAAC;AACrC,gBAAgB,MAAM;AACtB,gBAAgB;AAChB,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;AAClD,QAAQ;AACR,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC;AAC3E,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,OAAO,EAAE;AACzB,oBAAoB,IAAI,EAAE,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,+BAA+B;AAC9F,iBAAiB;AACjB,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB,MAAM,EAAE,KAAK;AACrC,wBAAwB,MAAM,EAAE,OAAO;AACvC,qBAAqB;AACrB,oBAAoB,QAAQ,EAAE;AAC9B,wBAAwB,SAAS,EAAE,IAAI;AACvC,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,QAAQ;AACR,IAAI;AACJ;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,eAAe,SAAS,QAAQ,CAAC;AAC9C;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,iBAAiB,CAAC;AAChC;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAC9D,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,KAAK,GAAG,SAAS,EAAE,GAAG,KAAK;AACrE;AACA;AACA,QAAQ,MAAM,eAAe,GAAG;AAChC,eAAe,KAAK,CAAC,UAAU,CAAC,GAAG;AACnC,kBAAkB,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI;AACzE,kBAAkB,KAAK;AACvB,cAAc,EAAE;AAChB,QAAQ,MAAM,iBAAiB,GAAG;AAClC,eAAe,OAAO,CAAC,UAAU,CAAC,GAAG;AACrC,kBAAkB,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI;AAC3E,kBAAkB,OAAO;AACzB,cAAc,EAAE;AAChB,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,EAAE,KAAK,CAAC;AACrF,YAAY,OAAO,IAAI,CAAC,YAAY,CAAC;AACrC,gBAAgB,MAAM,EAAE,IAAI;AAC5B,gBAAgB,MAAM,EAAE;AACxB,aAAa,EAAE,MAAM,CAAC;AACtB,QAAQ;AACR,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC;AACzE,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,OAAO,EAAE;AACzB,oBAAoB,IAAI,EAAE,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,6BAA6B;AAC5F,iBAAiB;AACjB,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB,MAAM,EAAE,KAAK;AACrC,wBAAwB,MAAM,EAAE,OAAO;AACvC,qBAAqB;AACrB,oBAAoB,QAAQ,EAAE;AAC9B,wBAAwB,MAAM,EAAE,IAAI;AACpC,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,QAAQ;AACR,IAAI;AACJ;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,uBAAuB,SAAS,QAAQ,CAAC;AACtD;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,yBAAyB,CAAC;AACxC;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC5D,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,WAAW,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK;AAC/G,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC;AACzC,iBAAiB,MAAM;AACvB,iBAAiB,MAAM,CAAC,MAAM,IAAI;AAClC;AACA,gBAAgB;AAChB,qBAAqB,QAAQ,CAAC,KAAK;AACnC,qBAAqB,OAAO,CAAC,I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"}
1
+ {"version":3,"file":"acorex-platform-workflow.mjs","sources":["../tmp-esm2022/workflow/lib/errors.types.js","../tmp-esm2022/workflow/lib/workflow-event-dispatcher.service.js","../tmp-esm2022/workflow/lib/workflow-registery.service.js","../tmp-esm2022/workflow/lib/workflow.types.js","../tmp-esm2022/workflow/lib/actions/decide.action.js","../tmp-esm2022/workflow/lib/workflow.service.js","../tmp-esm2022/workflow/lib/actions/start-workflow.action.js","../tmp-esm2022/workflow/lib/engine/workflow-instance.types.js","../tmp-esm2022/workflow/lib/engine/activity/activity-definition.provider.js","../tmp-esm2022/workflow/lib/engine/activity/activity-definition.service.js","../tmp-esm2022/workflow/lib/engine/runtime/workflow-engine.js","../tmp-esm2022/workflow/lib/engine/runtime/workflow-expression-scope.service.js","../tmp-esm2022/workflow/lib/engine/runtime/activity-executor.service.js","../tmp-esm2022/workflow/lib/engine/runtime/workflow-manager.service.js","../tmp-esm2022/workflow/lib/engine/workflow/workflow-definition.provider.js","../tmp-esm2022/workflow/lib/engine/runtime/workflow-local-engine.js","../tmp-esm2022/workflow/lib/engine/runtime/index.js","../tmp-esm2022/workflow/lib/engine/workflow/workflow-definition.service.js","../tmp-esm2022/workflow/lib/engine/index.js","../tmp-esm2022/workflow/lib/workflow.module.js","../tmp-esm2022/workflow/acorex-platform-workflow.js"],"sourcesContent":["export class AXPWorkflowError extends Error {\n constructor(message, inner = null) {\n super(message);\n this.inner = inner;\n this.name = 'AXPWorkflowError';\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2Vycm9ycy50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsS0FBSztJQUN2QyxZQUFZLE9BQWUsRUFBUyxRQUFzQixJQUFJO1FBQzFELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURpQixVQUFLLEdBQUwsS0FBSyxDQUFxQjtRQUUxRCxJQUFJLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBBWFBXb3JrZmxvd0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGlubmVyOiBFcnJvciB8IG51bGwgPSBudWxsKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSAnQVhQV29ya2Zsb3dFcnJvcic7XG4gICAgfVxufSJdfQ==","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXPWorkflowEventService {\n constructor() {\n this.eventSubject = new Subject();\n }\n dispatch(event) {\n this.eventSubject.next(event);\n }\n get events$() {\n return this.eventSubject.asObservable();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowEventService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowEventService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL3dvcmtmbG93LWV2ZW50LWRpc3BhdGNoZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTTNDLE1BQU0sT0FBTyx1QkFBdUI7SUFIcEM7UUFJVSxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFvQixDQUFDO0tBU3hEO0lBUEMsUUFBUSxDQUFDLEtBQXVCO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQzsrR0FUVSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dFdmVudCB9IGZyb20gJy4vd29ya2Zsb3cudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV29ya2Zsb3dFdmVudFNlcnZpY2Uge1xuICBwcml2YXRlIGV2ZW50U3ViamVjdCA9IG5ldyBTdWJqZWN0PEFYUFdvcmtmbG93RXZlbnQ+KCk7XG5cbiAgZGlzcGF0Y2goZXZlbnQ6IEFYUFdvcmtmbG93RXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50U3ViamVjdC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIGdldCBldmVudHMkKCk6IE9ic2VydmFibGU8QVhQV29ya2Zsb3dFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPWorkflowRegistryService {\n constructor() {\n this.functionsMap = new Map();\n this.actionsMap = new Map();\n this.workflowsMap = new Map();\n }\n registerWorkflow(name, workflow) {\n this.workflowsMap.set(name, workflow);\n }\n getWorkflow(name) {\n return this.workflowsMap.get(name);\n }\n registerAction(name, action) {\n this.actionsMap.set(name, action);\n }\n getAction(name) {\n return this.actionsMap.get(name);\n }\n registerFunction(name, func) {\n this.functionsMap.set(name, func);\n }\n getFunction(name) {\n return this.functionsMap.get(name);\n }\n getFunctionNames() {\n return Array.from(this.functionsMap.keys());\n }\n getStep(workflowName, stepName) {\n const workflow = this.workflowsMap.get(workflowName);\n if (workflow) {\n const steps = workflow.steps;\n return steps[stepName];\n }\n return undefined;\n }\n updateStepInWorkflow(workflowName, stepName, step) {\n const workflow = this.workflowsMap.get(workflowName);\n if (workflow) {\n const steps = workflow.steps;\n if (steps[stepName]) {\n steps[stepName] = step;\n }\n else {\n throw new Error(`Step with name ${stepName} does not exist in workflow ${workflowName}.`);\n }\n }\n else {\n throw new Error(`Workflow with name ${workflowName} does not exist.`);\n }\n }\n addStepToWorkflow(workflowName, stepName, step) {\n const workflow = this.workflowsMap.get(workflowName);\n if (workflow) {\n const steps = workflow.steps;\n if (!steps[stepName]) {\n steps[stepName] = step;\n }\n else {\n throw new Error(`Step with name ${stepName} already exists in workflow ${workflowName}.`);\n }\n }\n else {\n throw new Error(`Workflow with name ${workflowName} does not exist.`);\n }\n }\n addAfterStep(workflowId, stepId, newStepId, newStepAction, conditionExpression) {\n const step = this.getStep(workflowId, stepId);\n if (step != undefined) {\n this.addStepToWorkflow(workflowId, newStepId, {\n action: newStepAction,\n nextSteps: step.nextSteps,\n });\n this.updateStepInWorkflow(workflowId, stepId, {\n ...step,\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: conditionExpression }],\n nextStepId: newStepId,\n },\n ],\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowRegistryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcmVnaXN0ZXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvd29ya2Zsb3ctcmVnaXN0ZXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQzs7QUFNakQsTUFBTSxPQUFPLDBCQUEwQjtJQUh2QztRQUlVLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQXFDLENBQUM7UUFDNUQsZUFBVSxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBQ3hELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7S0E0RnZEO0lBMUZDLGdCQUFnQixDQUFDLElBQVksRUFBRSxRQUFxQjtRQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsTUFBK0I7UUFDMUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsSUFBK0I7UUFDNUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWTtRQUN0QixPQUFPLElBQUksQ0FB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QUFDO0lBQ0gsQ0FBQzsrR0E5RlUsMEJBQTBCO21IQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFdvcmtmbG93LCBBWFBXb3JrZmxvd0FjdGlvbiwgQVhQV29ya2Zsb3dGdW5jdGlvbiwgQVhQV29ya2Zsb3dTdGVwIH0gZnJvbSAnLi93b3JrZmxvdy50eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXb3JrZmxvd1JlZ2lzdHJ5U2VydmljZSB7XG4gIHByaXZhdGUgZnVuY3Rpb25zTWFwID0gbmV3IE1hcDxzdHJpbmcsIFR5cGU8QVhQV29ya2Zsb3dGdW5jdGlvbj4+KCk7XG4gIHByaXZhdGUgYWN0aW9uc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBUeXBlPEFYUFdvcmtmbG93QWN0aW9uPj4oKTtcbiAgcHJpdmF0ZSB3b3JrZmxvd3NNYXAgPSBuZXcgTWFwPHN0cmluZywgQVhQV29ya2Zsb3c+KCk7XG5cbiAgcmVnaXN0ZXJXb3JrZmxvdyhuYW1lOiBzdHJpbmcsIHdvcmtmbG93OiBBWFBXb3JrZmxvdyk6IHZvaWQge1xuICAgIHRoaXMud29ya2Zsb3dzTWFwLnNldChuYW1lLCB3b3JrZmxvdyk7XG4gIH1cblxuICBnZXRXb3JrZmxvdyhuYW1lOiBzdHJpbmcpOiBBWFBXb3JrZmxvdyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMud29ya2Zsb3dzTWFwLmdldChuYW1lKTtcbiAgfVxuXG4gIHJlZ2lzdGVyQWN0aW9uKG5hbWU6IHN0cmluZywgYWN0aW9uOiBUeXBlPEFYUFdvcmtmbG93QWN0aW9uPik6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uc01hcC5zZXQobmFtZSwgYWN0aW9uKTtcbiAgfVxuXG4gIGdldEFjdGlvbihuYW1lOiBzdHJpbmcpOiBUeXBlPEFYUFdvcmtmbG93QWN0aW9uPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uc01hcC5nZXQobmFtZSk7XG4gIH1cblxuICByZWdpc3RlckZ1bmN0aW9uKG5hbWU6IHN0cmluZywgZnVuYzogVHlwZTxBWFBXb3JrZmxvd0Z1bmN0aW9uPik6IHZvaWQge1xuICAgIHRoaXMuZnVuY3Rpb25zTWFwLnNldChuYW1lLCBmdW5jKTtcbiAgfVxuXG4gIGdldEZ1bmN0aW9uKG5hbWU6IHN0cmluZyk6IFR5cGU8QVhQV29ya2Zsb3dGdW5jdGlvbj4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc01hcC5nZXQobmFtZSk7XG4gIH1cblxuICBnZXRGdW5jdGlvbk5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZ1bmN0aW9uc01hcC5rZXlzKCkpO1xuICB9XG5cbiAgZ2V0U3RlcCh3b3JrZmxvd05hbWU6IHN0cmluZywgc3RlcE5hbWU6IHN0cmluZyk6IEFYUFdvcmtmbG93U3RlcCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLndvcmtmbG93c01hcC5nZXQod29ya2Zsb3dOYW1lKTtcbiAgICBpZiAod29ya2Zsb3cpIHtcbiAgICAgIGNvbnN0IHN0ZXBzID0gd29ya2Zsb3cuc3RlcHMgYXMgeyBba2V5OiBzdHJpbmddOiBBWFBXb3JrZmxvd1N0ZXAgfTtcbiAgICAgIHJldHVybiBzdGVwc1tzdGVwTmFtZV07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICB1cGRhdGVTdGVwSW5Xb3JrZmxvdyh3b3JrZmxvd05hbWU6IHN0cmluZywgc3RlcE5hbWU6IHN0cmluZywgc3RlcDogQVhQV29ya2Zsb3dTdGVwKTogdm9pZCB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLndvcmtmbG93c01hcC5nZXQod29ya2Zsb3dOYW1lKTtcbiAgICBpZiAod29ya2Zsb3cpIHtcbiAgICAgIGNvbnN0IHN0ZXBzID0gd29ya2Zsb3cuc3RlcHMgYXMgeyBba2V5OiBzdHJpbmddOiBBWFBXb3JrZmxvd1N0ZXAgfTtcbiAgICAgIGlmIChzdGVwc1tzdGVwTmFtZV0pIHtcbiAgICAgICAgc3RlcHNbc3RlcE5hbWVdID0gc3RlcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU3RlcCB3aXRoIG5hbWUgJHtzdGVwTmFtZX0gZG9lcyBub3QgZXhpc3QgaW4gd29ya2Zsb3cgJHt3b3JrZmxvd05hbWV9LmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdvcmtmbG93IHdpdGggbmFtZSAke3dvcmtmbG93TmFtZX0gZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3RlcFRvV29ya2Zsb3cod29ya2Zsb3dOYW1lOiBzdHJpbmcsIHN0ZXBOYW1lOiBzdHJpbmcsIHN0ZXA6IEFYUFdvcmtmbG93U3RlcCk6IHZvaWQge1xuICAgIGNvbnN0IHdvcmtmbG93ID0gdGhpcy53b3JrZmxvd3NNYXAuZ2V0KHdvcmtmbG93TmFtZSk7XG4gICAgaWYgKHdvcmtmbG93KSB7XG4gICAgICBjb25zdCBzdGVwcyA9IHdvcmtmbG93LnN0ZXBzIGFzIHsgW2tleTogc3RyaW5nXTogQVhQV29ya2Zsb3dTdGVwIH07XG4gICAgICBpZiAoIXN0ZXBzW3N0ZXBOYW1lXSkge1xuICAgICAgICBzdGVwc1tzdGVwTmFtZV0gPSBzdGVwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGVwIHdpdGggbmFtZSAke3N0ZXBOYW1lfSBhbHJlYWR5IGV4aXN0cyBpbiB3b3JrZmxvdyAke3dvcmtmbG93TmFtZX0uYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgV29ya2Zsb3cgd2l0aCBuYW1lICR7d29ya2Zsb3dOYW1lfSBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gIH1cblxuICBhZGRBZnRlclN0ZXAoXG4gICAgd29ya2Zsb3dJZDogc3RyaW5nLFxuICAgIHN0ZXBJZDogc3RyaW5nLFxuICAgIG5ld1N0ZXBJZDogc3RyaW5nLFxuICAgIG5ld1N0ZXBBY3Rpb246IHN0cmluZyxcbiAgICBjb25kaXRpb25FeHByZXNzaW9uOiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0U3RlcCh3b3JrZmxvd0lkLCBzdGVwSWQpO1xuICAgIGlmIChzdGVwICE9IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hZGRTdGVwVG9Xb3JrZmxvdyh3b3JrZmxvd0lkLCBuZXdTdGVwSWQsIHtcbiAgICAgICAgYWN0aW9uOiBuZXdTdGVwQWN0aW9uLFxuICAgICAgICBuZXh0U3RlcHM6IHN0ZXAubmV4dFN0ZXBzLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudXBkYXRlU3RlcEluV29ya2Zsb3cod29ya2Zsb3dJZCwgc3RlcElkLCB7XG4gICAgICAgIC4uLnN0ZXAsXG4gICAgICAgIG5leHRTdGVwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IFt7IHR5cGU6ICdTSU5HTEUnLCBleHByZXNzaW9uOiBjb25kaXRpb25FeHByZXNzaW9uIH1dLFxuICAgICAgICAgICAgbmV4dFN0ZXBJZDogbmV3U3RlcElkLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { filter } from 'rxjs';\nimport { AXPWorkflowEventService } from './workflow-event-dispatcher.service';\nimport { cloneDeep, get } from 'lodash-es';\nimport { setSmart } from '@acorex/platform/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPWorkflowContext {\n constructor(initialData = {}) {\n this.variables = {};\n this.stepOutputs = new Map();\n this.variables = cloneDeep(initialData);\n }\n setVariable(key, value) {\n setSmart(this.variables, key, value);\n }\n setVariables(context = {}) {\n this.variables = { ...this.variables, ...context };\n }\n getVariable(key) {\n return !key ? this.variables : get(this.variables, key);\n }\n setOutput(key, output) {\n this.stepOutputs.set(key, output);\n }\n setOutputs(values) {\n this.stepOutputs = new Map([...this.stepOutputs, ...values]);\n }\n getOutput(key) {\n return this.stepOutputs.get(key);\n }\n}\nexport class AXPWorkflowAction {\n constructor() {\n this.eventService = inject(AXPWorkflowEventService);\n }\n dispatch(event) {\n this.eventService.dispatch(event);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowAction, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowAction }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowAction, decorators: [{\n type: Injectable\n }] });\nexport class AXPWorkflowFunction {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowFunction, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowFunction }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowFunction, decorators: [{\n type: Injectable\n }] });\nexport function createWorkFlowEvent(type) {\n const eventCreator = (payload) => ({ type, payload });\n eventCreator.type = type;\n return eventCreator;\n}\nexport function ofType(...allowedTypes) {\n return filter((event) => allowedTypes.some((type) => event.type === type.type));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvd29ya2Zsb3cudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBUWpELE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsWUFBWSxjQUFtQixFQUFFO1FBSXpCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUpoRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBS0QsV0FBVyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBR0QsWUFBWSxDQUFDLFVBQWUsRUFBRTtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELFdBQVcsQ0FBVSxHQUFtQjtRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVcsRUFBRSxNQUFXO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQXdCO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFFRCxTQUFTLENBQVUsR0FBVztRQUM1QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQXlCRCxNQUFNLE9BQWdCLGlCQUFpQjtJQUR2QztRQUVVLGlCQUFZLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7S0FPeEQ7SUFMVyxRQUFRLENBQUMsS0FBdUI7UUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQzsrR0FMbUIsaUJBQWlCO21IQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRHRDLFVBQVU7O0FBWVgsTUFBTSxPQUFnQixtQkFBbUI7K0dBQW5CLG1CQUFtQjttSEFBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUR4QyxVQUFVOztBQVlYLE1BQU0sVUFBVSxtQkFBbUIsQ0FBSSxJQUFZO0lBQ2pELE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDekQsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDekIsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQTZCLEdBQUcsWUFBcUM7SUFDekYsT0FBTyxNQUFNLENBQUMsQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd0V2ZW50U2VydmljZSB9IGZyb20gJy4vd29ya2Zsb3ctZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IHNldFNtYXJ0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXb3JrZmxvdyB7XG4gIHN0ZXBzOiB7IFtzdGVwTmFtZTogc3RyaW5nXTogQVhQV29ya2Zsb3dTdGVwIH07XG4gIHN0YXJ0U3RlcElkOiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGNsYXNzIEFYUFdvcmtmbG93Q29udGV4dCB7XG5cbiAgY29uc3RydWN0b3IoaW5pdGlhbERhdGE6IGFueSA9IHt9KSB7XG4gICAgdGhpcy52YXJpYWJsZXMgPSBjbG9uZURlZXAoaW5pdGlhbERhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YXJpYWJsZXM6IGFueSA9IHt9O1xuICBwcml2YXRlIHN0ZXBPdXRwdXRzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xuXG4gIHNldFZhcmlhYmxlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgc2V0U21hcnQodGhpcy52YXJpYWJsZXMsIGtleSwgdmFsdWUpO1xuICB9XG5cblxuICBzZXRWYXJpYWJsZXMoY29udGV4dDogYW55ID0ge30pIHtcbiAgICB0aGlzLnZhcmlhYmxlcyA9IHsgLi4udGhpcy52YXJpYWJsZXMsIC4uLmNvbnRleHQgfTtcbiAgfVxuXG4gIGdldFZhcmlhYmxlPFQgPSBhbnk+KGtleT86IHN0cmluZyB8IG51bGwpOiBUIHtcbiAgICByZXR1cm4gIWtleSA/IHRoaXMudmFyaWFibGVzIDogZ2V0KHRoaXMudmFyaWFibGVzLCBrZXkpO1xuICB9XG5cbiAgc2V0T3V0cHV0KGtleTogc3RyaW5nLCBvdXRwdXQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc3RlcE91dHB1dHMuc2V0KGtleSwgb3V0cHV0KTtcbiAgfVxuXG4gIHNldE91dHB1dHModmFsdWVzOiBNYXA8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5zdGVwT3V0cHV0cyA9IG5ldyBNYXAoWy4uLnRoaXMuc3RlcE91dHB1dHMsIC4uLnZhbHVlc10pXG4gIH1cblxuICBnZXRPdXRwdXQ8VCA9IGFueT4oa2V5OiBzdHJpbmcpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwT3V0cHV0cy5nZXQoa2V5KTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBBWFBXb3JrZmxvd0FjdGlvbklucHV0ID0gYW55O1xuXG5leHBvcnQgdHlwZSBBWFBXb3JrZmxvd0NvbmRpdGlvblR5cGUgPSAnQU5EJyB8ICdPUicgfCAnU0lOR0xFJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXb3JrZmxvd0NvbmRpdGlvbiB7XG4gIHR5cGU6IEFYUFdvcmtmbG93Q29uZGl0aW9uVHlwZTtcbiAgY29uZGl0aW9ucz86IEFYUFdvcmtmbG93Q29uZGl0aW9uW107IC8vIE5lc3RlZCBjb25kaXRpb25zXG4gIGV4cHJlc3Npb24/OiBzdHJpbmc7IC8vIFVzZWQgaWYgdHlwZSBpcyAnU0lOR0xFJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdvcmtmbG93TmV4dFN0ZXAge1xuICBjb25kaXRpb25zOiBBWFBXb3JrZmxvd0NvbmRpdGlvbltdO1xuICBuZXh0U3RlcElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dTdGVwIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGFjdGlvbjogQVhQV29ya2Zsb3dBY3Rpb24gfCBzdHJpbmc7XG4gIGlucHV0PzogQVhQV29ya2Zsb3dBY3Rpb25JbnB1dDtcbiAgbmV4dFN0ZXBzPzogQVhQV29ya2Zsb3dOZXh0U3RlcFtdO1xuICBjb25kaXRpb25zPzogQVhQV29ya2Zsb3dDb25kaXRpb25bXTtcbn1cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBXb3JrZmxvd0FjdGlvbiB7XG4gIHByaXZhdGUgZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFYUFdvcmtmbG93RXZlbnRTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgZGlzcGF0Y2goZXZlbnQ6IEFYUFdvcmtmbG93RXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50U2VydmljZS5kaXNwYXRjaChldmVudCk7XG4gIH1cblxuICBhYnN0cmFjdCBleGVjdXRlKGNvbnRleHQ6IEFYUFdvcmtmbG93Q29udGV4dCk6IFByb21pc2U8dm9pZD47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBXb3JrZmxvd0Z1bmN0aW9uIHtcbiAgYWJzdHJhY3QgZXhlY3V0ZSguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8YW55PiB8IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXb3JrZmxvd0V2ZW50PFQgPSBhbnk+IHtcbiAgdHlwZTogc3RyaW5nO1xuICBwYXlsb2FkPzogVDtcbn1cblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXb3JrRmxvd0V2ZW50PFQ+KHR5cGU6IHN0cmluZykge1xuICBjb25zdCBldmVudENyZWF0b3IgPSAocGF5bG9hZDogVCkgPT4gKHsgdHlwZSwgcGF5bG9hZCB9KTtcbiAgZXZlbnRDcmVhdG9yLnR5cGUgPSB0eXBlO1xuICByZXR1cm4gZXZlbnRDcmVhdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2ZUeXBlPFQgZXh0ZW5kcyB7IHR5cGU6IHN0cmluZyB9PiguLi5hbGxvd2VkVHlwZXM6IEFycmF5PHsgdHlwZTogc3RyaW5nIH0+KSB7XG4gIHJldHVybiBmaWx0ZXIoKGV2ZW50OiBUKSA9PiBhbGxvd2VkVHlwZXMuc29tZSgodHlwZSkgPT4gZXZlbnQudHlwZSA9PT0gdHlwZS50eXBlKSk7XG59XG4iXX0=","import { Injectable } from \"@angular/core\";\nimport { AXPWorkflowAction } from \"../workflow.types\";\nimport * as i0 from \"@angular/core\";\nexport class AXPWorkflowDecideAction extends AXPWorkflowAction {\n async execute(context) {\n // its a fake action\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowDecideAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowDecideAction, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowDecideAction, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaWRlLmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi9hY3Rpb25zL2RlY2lkZS5hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sbUJBQW1CLENBQUM7O0FBTTFFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxpQkFBaUI7SUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQjtRQUNyQyxvQkFBb0I7SUFDeEIsQ0FBQzsrR0FIUSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZwQixNQUFNOzs0RkFFVCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd0FjdGlvbiwgQVhQV29ya2Zsb3dDb250ZXh0IH0gZnJvbSBcIi4uL3dvcmtmbG93LnR5cGVzXCI7XG5cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV29ya2Zsb3dEZWNpZGVBY3Rpb24gZXh0ZW5kcyBBWFBXb3JrZmxvd0FjdGlvbiB7XG4gICAgYXN5bmMgZXhlY3V0ZShjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gaXRzIGEgZmFrZSBhY3Rpb25cbiAgICB9XG59Il19","import { Injectable, Injector, inject } from '@angular/core';\nimport { cloneDeep, set } from 'lodash-es';\nimport { AXPWorkflowError } from './errors.types';\nimport { AXPWorkflowEventService } from './workflow-event-dispatcher.service';\nimport { AXPWorkflowRegistryService } from './workflow-registery.service';\nimport { AXPWorkflowContext, } from './workflow.types';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./workflow-registery.service\";\nexport class AXPWorkflowService {\n get events$() {\n return this.eventService.events$;\n }\n constructor(registryService, injector) {\n this.registryService = registryService;\n this.injector = injector;\n this.eventService = inject(AXPWorkflowEventService);\n }\n exists(name) {\n return !!this.registryService.getWorkflow(name);\n }\n async execute(workflow, initialContext = null) {\n // Instantiate or retrieve the workflow\n const wk = typeof workflow === 'string' ? this.getWorkflowInstance(workflow) : workflow;\n let currentStepId = wk.startStepId;\n const context = initialContext instanceof AXPWorkflowContext\n ? initialContext\n : new AXPWorkflowContext(this.processData(initialContext) ?? {});\n // Initialize context with initial variables\n while (currentStepId) {\n const currentStep = wk.steps[currentStepId];\n if (!currentStep) {\n throw new AXPWorkflowError(`Step '${currentStepId}' not found in the workflow steps.`);\n }\n // Instantiate or retrieve the action\n const action = typeof currentStep.action === 'string' ? this.getActionInstance(currentStep.action) : currentStep.action;\n //\n if (currentStep.input) {\n let inputs = {};\n await this.processInputs(cloneDeep(currentStep.input), inputs, '', context);\n await new Promise((resolve) => setTimeout(async () => {\n Object.assign(action, inputs);\n resolve(0);\n }));\n }\n try {\n await new Promise((resolve) => setTimeout(async () => {\n await action.execute(context);\n resolve(0);\n }, 0));\n }\n catch (error) {\n console.error(error);\n throw new AXPWorkflowError('Workflow Error', error);\n }\n // Determine the next step based on the conditions\n const nextStepInfo = await this.determineNextStep(currentStep, context);\n if (nextStepInfo) {\n currentStepId = nextStepInfo.nextStepId;\n }\n else {\n break; // Exit the loop if no next step is determined\n }\n }\n return context;\n }\n processData(initialContext) {\n //TODO: update values with expressions and return new object\n return initialContext;\n }\n getActionInstance(actionName) {\n const actionType = this.registryService.getAction(actionName);\n if (!actionType) {\n throw new AXPWorkflowError(`Action type '${actionName}' not found in the registry.`);\n }\n return this.injector.get(actionType);\n }\n getWorkflowInstance(workflowName) {\n const workflowType = this.registryService.getWorkflow(workflowName);\n if (!workflowType) {\n throw new AXPWorkflowError(`Workflow type '${workflowName}' not found in the registry.`);\n }\n return workflowType;\n }\n async determineNextStep(currentStep, context) {\n if (!currentStep.nextSteps) {\n return null;\n }\n for (const nextStep of currentStep.nextSteps) {\n if (await this.evaluateCondition(nextStep.conditions, context)) {\n return nextStep;\n }\n }\n return null;\n }\n async evaluateCondition(conditions, context) {\n if (!conditions || conditions.length === 0) {\n return true; // If no conditions, the step proceeds\n }\n // Map each condition to a promise using evaluateSingleCondition\n const conditionPromises = conditions.map((condition) => this.evaluateSingleCondition(condition, context));\n // Wait for all promises to resolve\n const results = await Promise.all(conditionPromises);\n // Check if every condition is true\n return results.every((result) => result);\n }\n async evaluateSingleCondition(condition, context) {\n switch (condition.type) {\n case 'SINGLE':\n return (!condition.expression ? true : await this.evaluateExpression(condition.expression, context));\n case 'AND':\n // Evaluate all conditions with 'AND' logic\n const andConditions = condition.conditions ?? [];\n const andResults = await Promise.all(andConditions.map((cond) => this.evaluateSingleCondition(cond, context)));\n return andResults.every((result) => result);\n case 'OR':\n // Evaluate all conditions with 'OR' logic\n const orConditions = condition.conditions ?? [];\n const orResults = await Promise.all(orConditions.map((cond) => this.evaluateSingleCondition(cond, context)));\n return orResults.some((result) => result);\n default:\n throw new AXPWorkflowError(`Unsupported condition type: ${condition.type}`);\n }\n }\n //TODO: return any and recursively update object, update scopes\n async evaluateExpression(templateExpression, context) {\n try {\n let expression = '';\n if (typeof templateExpression === 'string' && templateExpression.trim().includes('{{')) {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n expression = expressionMatch[1];\n }\n else {\n expression = templateExpression;\n }\n // Create a scope that includes context and registered functions\n const scope = { context, ...this.createFunctionScope() };\n // Evaluating the expression within the created scope\n const sandbox = new Function('scope', `return (async function() { with (scope) { return ${expression}; } })();`);\n const result = await sandbox(scope);\n return result;\n }\n catch (error) {\n console.error('Error evaluating expression:', error);\n return false;\n }\n }\n async processInputs(obj, inputs, pathPrefix = '', context = {}) {\n if (!obj) {\n return;\n }\n for await (const i of Object.entries(obj)) {\n const key = i[0];\n const value = i[1];\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n if (typeof value === 'string' && value.trim().includes('{{')) {\n const expValue = await this.evaluateExpression(value, context);\n set(inputs, currentPath, expValue);\n }\n else if (typeof value === 'object' &&\n value !== null &&\n (value.constructor === Object || Array.isArray(value))) {\n // Recursively handle nested objects\n this.processInputs(value, inputs, currentPath, context);\n }\n else {\n // Apply static values directly\n set(inputs, currentPath, value);\n }\n }\n }\n createFunctionScope() {\n const scope = {};\n this.registryService.getFunctionNames().forEach((name) => {\n scope[name] = this.getFunctionInstance(name).execute;\n });\n return { methods: { scope } };\n }\n getFunctionInstance(functionName) {\n const functionType = this.registryService.getFunction(functionName);\n if (!functionType) {\n throw new AXPWorkflowError(`Function type '${functionName}' not found in the registry.`);\n }\n return this.injector.get(functionType);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowService, deps: [{ token: i1.AXPWorkflowRegistryService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.AXPWorkflowRegistryService }, { type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi93b3JrZmxvdy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBSUwsa0JBQWtCLEdBS25CLE1BQU0sa0JBQWtCLENBQUM7OztBQUsxQixNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQW9CLGVBQTJDLEVBQVUsUUFBa0I7UUFBdkUsb0JBQWUsR0FBZixlQUFlLENBQTRCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQU5uRixpQkFBWSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBTXdDLENBQUM7SUFFaEcsTUFBTSxDQUFDLElBQVk7UUFDakIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUdELEtBQUssQ0FBQyxPQUFPLENBQ1gsUUFBOEIsRUFDOUIsaUJBQWtELElBQUk7UUFFdEQsdUNBQXVDO1FBQ3ZDLE1BQU0sRUFBRSxHQUFHLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMs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SUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMxRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sK0JBQStCO2dCQUMvQixHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsTUFBTSxLQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2RCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxZQUFvQjtRQUM5QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLGdCQUFnQixDQUFDLGtCQUFrQixZQUFZLDhCQUE4QixDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsQ0FBQzsrR0FwTlUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUFdvcmtmbG93RXJyb3IgfSBmcm9tICcuL2Vycm9ycy50eXBlcyc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd0V2ZW50U2VydmljZSB9IGZyb20gJy4vd29ya2Zsb3ctZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdvcmtmbG93UmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi93b3JrZmxvdy1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQge1xuICBBWFBXb3JrZmxvdyxcbiAgQVhQV29ya2Zsb3dBY3Rpb24sXG4gIEFYUFdvcmtmbG93Q29uZGl0aW9uLFxuICBBWFBXb3JrZmxvd0NvbnRleHQsXG4gIEFYUFdvcmtmbG93RXZlbnQsXG4gIEFYUFdvcmtmbG93RnVuY3Rpb24sXG4gIEFYUFdvcmtmbG93TmV4dFN0ZXAsXG4gIEFYUFdvcmtmbG93U3RlcCxcbn0gZnJvbSAnLi93b3JrZmxvdy50eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXb3JrZmxvd1NlcnZpY2Uge1xuICBwcml2YXRlIGV2ZW50U2VydmljZSA9IGluamVjdChBWFBXb3JrZmxvd0V2ZW50U2VydmljZSk7XG5cbiAgZ2V0IGV2ZW50cyQoKTogT2JzZXJ2YWJsZTxBWFBXb3JrZmxvd0V2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRTZXJ2aWNlLmV2ZW50cyQ7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZ2lzdHJ5U2VydmljZTogQVhQV29ya2Zsb3dSZWdpc3RyeVNlcnZpY2UsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7IH1cblxuICBleGlzdHMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZWdpc3RyeVNlcnZpY2UuZ2V0V29ya2Zsb3cobmFtZSk7XG4gIH1cblxuXG4gIGFzeW5jIGV4ZWN1dGUoXG4gICAgd29ya2Zsb3c6IEFYUFdvcmtmbG93IHwgc3RyaW5nLFxuICAgIGluaXRpYWxDb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHQgfCBhbnkgfCBudWxsID0gbnVsbFxuICApOiBQcm9taXNlPEFYUFdvcmtmbG93Q29udGV4dD4ge1xuICAgIC8vIEluc3RhbnRpYXRlIG9yIHJldHJpZXZlIHRoZSB3b3JrZmxvd1xuICAgIGNvbnN0IHdrID0gdHlwZW9mIHdvcmtmbG93ID09PSAnc3RyaW5nJyA/IHRoaXMuZ2V0V29ya2Zsb3dJbnN0YW5jZSh3b3JrZmxvdykgOiB3b3JrZmxvdztcblxuICAgIGxldCBjdXJyZW50U3RlcElkID0gd2suc3RhcnRTdGVwSWQ7XG4gICAgY29uc3QgY29udGV4dCA9XG4gICAgICBpbml0aWFsQ29udGV4dCBpbnN0YW5jZW9mIEFYUFdvcmtmbG93Q29udGV4dFxuICAgICAgICA/IGluaXRpYWxDb250ZXh0XG4gICAgICAgIDogbmV3IEFYUFdvcmtmbG93Q29udGV4dCh0aGlzLnByb2Nlc3NEYXRhKGluaXRpYWxDb250ZXh0KSA/PyB7fSk7XG4gICAgLy8gSW5pdGlhbGl6ZSBjb250ZXh0IHdpdGggaW5pdGlhbCB2YXJpYWJsZXNcblxuICAgIHdoaWxlIChjdXJyZW50U3RlcElkKSB7XG4gICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHdrLnN0ZXBzW2N1cnJlbnRTdGVwSWRdO1xuICAgICAgaWYgKCFjdXJyZW50U3RlcCkge1xuICAgICAgICB0aHJvdyBuZXcgQVhQV29ya2Zsb3dFcnJvcihgU3RlcCAnJHtjdXJyZW50U3RlcElkfScgbm90IGZvdW5kIGluIHRoZSB3b3JrZmxvdyBzdGVwcy5gKTtcbiAgICAgIH1cblxuICAgICAgLy8gSW5zdGFudGlhdGUgb3IgcmV0cmlldmUgdGhlIGFjdGlvblxuICAgICAgY29uc3QgYWN0aW9uID1cbiAgICAgICAgdHlwZW9mIGN1cnJlbnRTdGVwLmFjdGlvbiA9PT0gJ3N0cmluZycgPyB0aGlzLmdldEFjdGlvbkluc3RhbmNlKGN1cnJlbnRTdGVwLmFjdGlvbikgOiBjdXJyZW50U3RlcC5hY3Rpb247XG4gICAgICAvL1xuICAgICAgaWYgKGN1cnJlbnRTdGVwLmlucHV0KSB7XG4gICAgICAgIGxldCBpbnB1dHM6IGFueSA9IHt9O1xuICAgICAgICBhd2FpdCB0aGlzLnByb2Nlc3NJbnB1dHMoY2xvbmVEZWVwKGN1cnJlbnRTdGVwLmlucHV0KSwgaW5wdXRzLCAnJywgY29udGV4dCk7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PlxuICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpb24sIGlucHV0cyk7XG4gICAgICAgICAgICByZXNvbHZlKDApO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT5cbiAgICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGFjdGlvbi5leGVjdXRlKGNvbnRleHQpO1xuICAgICAgICAgICAgcmVzb2x2ZSgwKTtcbiAgICAgICAgICB9LCAwKVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHRocm93IG5ldyBBWFBXb3JrZmxvd0Vycm9yKCdXb3JrZmxvdyBFcnJvcicsIGVycm9yIGFzIEVycm9yKTtcbiAgICAgIH1cbiAgICAgIC8vIERldGVybWluZSB0aGUgbmV4dCBzdGVwIGJhc2VkIG9uIHRoZSBjb25kaXRpb25zXG4gICAgICBjb25zdCBuZXh0U3RlcEluZm8gPSBhd2FpdCB0aGlzLmRldGVybWluZU5leHRTdGVwKGN1cnJlbnRTdGVwLCBjb250ZXh0KTtcbiAgICAgIGlmIChuZXh0U3RlcEluZm8pIHtcbiAgICAgICAgY3VycmVudFN0ZXBJZCA9IG5leHRTdGVwSW5mby5uZXh0U3RlcElkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7IC8vIEV4aXQgdGhlIGxvb3AgaWYgbm8gbmV4dCBzdGVwIGlzIGRldGVybWluZWRcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NEYXRhKGluaXRpYWxDb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIC8vVE9ETzogdXBkYXRlIHZhbHVlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCByZXR1cm4gbmV3IG9iamVjdFxuICAgIHJldHVybiBpbml0aWFsQ29udGV4dDtcbiAgfVxuXG5cblxuICBwcml2YXRlIGdldEFjdGlvbkluc3RhbmNlKGFjdGlvbk5hbWU6IHN0cmluZyk6IEFYUFdvcmtmbG93QWN0aW9uIHtcbiAgICBjb25zdCBhY3Rpb25UeXBlID0gdGhpcy5yZWdpc3RyeVNlcnZpY2UuZ2V0QWN0aW9uKGFjdGlvbk5hbWUpO1xuICAgIGlmICghYWN0aW9uVHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEFYUFdvcmtmbG93RXJyb3IoYEFjdGlvbiB0eXBlICcke2FjdGlvbk5hbWV9JyBub3QgZm91bmQgaW4gdGhlIHJlZ2lzdHJ5LmApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoYWN0aW9uVHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFdvcmtmbG93SW5zdGFuY2Uod29ya2Zsb3dOYW1lOiBzdHJpbmcpOiBBWFBXb3JrZmxvdyB7XG4gICAgY29uc3Qgd29ya2Zsb3dUeXBlID0gdGhpcy5yZWdpc3RyeVNlcnZpY2UuZ2V0V29ya2Zsb3cod29ya2Zsb3dOYW1lKTtcbiAgICBpZiAoIXdvcmtmbG93VHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEFYUFdvcmtmbG93RXJyb3IoYFdvcmtmbG93IHR5cGUgJyR7d29ya2Zsb3dOYW1lfScgbm90IGZvdW5kIGluIHRoZSByZWdpc3RyeS5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHdvcmtmbG93VHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGV0ZXJtaW5lTmV4dFN0ZXAoXG4gICAgY3VycmVudFN0ZXA6IEFYUFdvcmtmbG93U3RlcCxcbiAgICBjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHRcbiAgKTogUHJvbWlzZTxBWFBXb3JrZmxvd05leHRTdGVwIHwgbnVsbD4ge1xuICAgIGlmICghY3VycmVudFN0ZXAubmV4dFN0ZXBzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZm9yIChjb25zdCBuZXh0U3RlcCBvZiBjdXJyZW50U3RlcC5uZXh0U3RlcHMpIHtcbiAgICAgIGlmIChhd2FpdCB0aGlzLmV2YWx1YXRlQ29uZGl0aW9uKG5leHRTdGVwLmNvbmRpdGlvbnMsIGNvbnRleHQpKSB7XG4gICAgICAgIHJldHVybiBuZXh0U3RlcDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlQ29uZGl0aW9uKGNvbmRpdGlvbnM6IEFYUFdvcmtmbG93Q29uZGl0aW9uW10sIGNvbnRleHQ6IEFYUFdvcmtmbG93Q29udGV4dCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghY29uZGl0aW9ucyB8fCBjb25kaXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7IC8vIElmIG5vIGNvbmRpdGlvbnMsIHRoZSBzdGVwIHByb2NlZWRzXG4gICAgfVxuXG4gICAgLy8gTWFwIGVhY2ggY29uZGl0aW9uIHRvIGEgcHJvbWlzZSB1c2luZyBldmFsdWF0ZVNpbmdsZUNvbmRpdGlvblxuICAgIGNvbnN0IGNvbmRpdGlvblByb21pc2VzID0gY29uZGl0aW9ucy5tYXAoKGNvbmRpdGlvbikgPT4gdGhpcy5ldmFsdWF0ZVNpbmdsZUNvbmRpdGlvbihjb25kaXRpb24sIGNvbnRleHQpKTtcblxuICAgIC8vIFdhaXQgZm9yIGFsbCBwcm9taXNlcyB0byByZXNvbHZlXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKGNvbmRpdGlvblByb21pc2VzKTtcblxuICAgIC8vIENoZWNrIGlmIGV2ZXJ5IGNvbmRpdGlvbiBpcyB0cnVlXG4gICAgcmV0dXJuIHJlc3VsdHMuZXZlcnkoKHJlc3VsdCkgPT4gcmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVTaW5nbGVDb25kaXRpb24oXG4gICAgY29uZGl0aW9uOiBBWFBXb3JrZmxvd0NvbmRpdGlvbixcbiAgICBjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHRcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgc3dpdGNoIChjb25kaXRpb24udHlwZSkge1xuICAgICAgY2FzZSAnU0lOR0xFJzpcbiAgICAgICAgcmV0dXJuICghY29uZGl0aW9uLmV4cHJlc3Npb24gPyB0cnVlIDogYXdhaXQgdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24oY29uZGl0aW9uLmV4cHJlc3Npb24sIGNvbnRleHQpKSBhcyBib29sZWFuO1xuICAgICAgY2FzZSAnQU5EJzpcbiAgICAgICAgLy8gRXZhbHVhdGUgYWxsIGNvbmRpdGlvbnMgd2l0aCAnQU5EJyBsb2dpY1xuICAgICAgICBjb25zdCBhbmRDb25kaXRpb25zID0gY29uZGl0aW9uLmNvbmRpdGlvbnMgPz8gW107XG4gICAgICAgIGNvbnN0IGFuZFJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChhbmRDb25kaXRpb25zLm1hcCgoY29uZCkgPT4gdGhpcy5ldmFsdWF0ZVNpbmdsZUNvbmRpdGlvbihjb25kLCBjb250ZXh0KSkpO1xuICAgICAgICByZXR1cm4gYW5kUmVzdWx0cy5ldmVyeSgocmVzdWx0KSA9PiByZXN1bHQpO1xuXG4gICAgICBjYXNlICdPUic6XG4gICAgICAgIC8vIEV2YWx1YXRlIGFsbCBjb25kaXRpb25zIHdpdGggJ09SJyBsb2dpY1xuICAgICAgICBjb25zdCBvckNvbmRpdGlvbnMgPSBjb25kaXRpb24uY29uZGl0aW9ucyA/PyBbXTtcbiAgICAgICAgY29uc3Qgb3JSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwob3JDb25kaXRpb25zLm1hcCgoY29uZCkgPT4gdGhpcy5ldmFsdWF0ZVNpbmdsZUNvbmRpdGlvbihjb25kLCBjb250ZXh0KSkpO1xuICAgICAgICByZXR1cm4gb3JSZXN1bHRzLnNvbWUoKHJlc3VsdCkgPT4gcmVzdWx0KTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEFYUFdvcmtmbG93RXJyb3IoYFVuc3VwcG9ydGVkIGNvbmRpdGlvbiB0eXBlOiAke2NvbmRpdGlvbi50eXBlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8vVE9ETzogcmV0dXJuIGFueSBhbmQgcmVjdXJzaXZlbHkgdXBkYXRlIG9iamVjdCwgdXBkYXRlIHNjb3Blc1xuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlRXhwcmVzc2lvbih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZywgY29udGV4dDogQVhQV29ya2Zsb3dDb250ZXh0KTogUHJvbWlzZTxCb29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBleHByZXNzaW9uID0gJyc7XG4gICAgICBpZiAodHlwZW9mIHRlbXBsYXRlRXhwcmVzc2lvbiA9PT0gJ3N0cmluZycgJiYgdGVtcGxhdGVFeHByZXNzaW9uLnRyaW0oKS5pbmNsdWRlcygne3snKSkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uTWF0Y2ggPSB0ZW1wbGF0ZUV4cHJlc3Npb24ubWF0Y2goL1xce1xce1xccyooLio/KVxccypcXH1cXH0vKTtcbiAgICAgICAgaWYgKCFleHByZXNzaW9uTWF0Y2gpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcihgTm8gdmFsaWQgZXhwcmVzc2lvbiBmb3VuZCBpbiBcIiR7dGVtcGxhdGVFeHByZXNzaW9ufVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25NYXRjaFsxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4cHJlc3Npb24gPSB0ZW1wbGF0ZUV4cHJlc3Npb247XG4gICAgICB9XG4gICAgICAvLyBDcmVhdGUgYSBzY29wZSB0aGF0IGluY2x1ZGVzIGNvbnRleHQgYW5kIHJlZ2lzdGVyZWQgZnVuY3Rpb25zXG4gICAgICBjb25zdCBzY29wZSA9IHsgY29udGV4dCwgLi4udGhpcy5jcmVhdGVGdW5jdGlvblNjb3BlKCkgfTtcbiAgICAgIC8vIEV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24gd2l0aGluIHRoZSBjcmVhdGVkIHNjb3BlXG4gICAgICBjb25zdCBzYW5kYm94ID0gbmV3IEZ1bmN0aW9uKCdzY29wZScsIGByZXR1cm4gKGFzeW5jIGZ1bmN0aW9uKCkgeyB3aXRoIChzY29wZSkgeyByZXR1cm4gJHtleHByZXNzaW9ufTsgfSB9KSgpO2ApO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FuZGJveChzY29wZSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGV4cHJlc3Npb246JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc0lucHV0cyhvYmo6IGFueSwgaW5wdXRzOiBhbnksIHBhdGhQcmVmaXg6IHN0cmluZyA9ICcnLCBjb250ZXh0OiBhbnkgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghb2JqKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIGF3YWl0IChjb25zdCBpIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICAgIGNvbnN0IGtleSA9IGlbMF07XG4gICAgICBjb25zdCB2YWx1ZSA9IGlbMV07XG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHBhdGhQcmVmaXggPyBgJHtwYXRoUHJlZml4fS4ke2tleX1gIDoga2V5O1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmluY2x1ZGVzKCd7eycpKSB7XG4gICAgICAgIGNvbnN0IGV4cFZhbHVlID0gYXdhaXQgdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24odmFsdWUsIGNvbnRleHQpO1xuICAgICAgICBzZXQoaW5wdXRzLCBjdXJyZW50UGF0aCwgZXhwVmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAodmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdCB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBoYW5kbGUgbmVzdGVkIG9iamVjdHNcbiAgICAgICAgdGhpcy5wcm9jZXNzSW5wdXRzKHZhbHVlLCBpbnB1dHMsIGN1cnJlbnRQYXRoLCBjb250ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFwcGx5IHN0YXRpYyB2YWx1ZXMgZGlyZWN0bHlcbiAgICAgICAgc2V0KGlucHV0cywgY3VycmVudFBhdGgsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZ1bmN0aW9uU2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgdGhpcy5yZWdpc3RyeVNlcnZpY2UuZ2V0RnVuY3Rpb25OYW1lcygpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgIHNjb3BlW25hbWVdID0gdGhpcy5nZXRGdW5jdGlvbkluc3RhbmNlKG5hbWUpLmV4ZWN1dGU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgbWV0aG9kczogeyBzY29wZSB9IH07XG4gIH1cblxuICBwcml2YXRlIGdldEZ1bmN0aW9uSW5zdGFuY2UoZnVuY3Rpb25OYW1lOiBzdHJpbmcpOiBBWFBXb3JrZmxvd0Z1bmN0aW9uIHtcbiAgICBjb25zdCBmdW5jdGlvblR5cGUgPSB0aGlzLnJlZ2lzdHJ5U2VydmljZS5nZXRGdW5jdGlvbihmdW5jdGlvbk5hbWUpO1xuICAgIGlmICghZnVuY3Rpb25UeXBlKSB7XG4gICAgICB0aHJvdyBuZXcgQVhQV29ya2Zsb3dFcnJvcihgRnVuY3Rpb24gdHlwZSAnJHtmdW5jdGlvbk5hbWV9JyBub3QgZm91bmQgaW4gdGhlIHJlZ2lzdHJ5LmApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoZnVuY3Rpb25UeXBlKTtcbiAgfVxufVxuIl19","import { inject, Injectable } from \"@angular/core\";\nimport { AXPWorkflowAction } from \"../workflow.types\";\nimport { AXPWorkflowService } from \"../workflow.service\";\nimport * as i0 from \"@angular/core\";\nexport class AXPStartWorkflowAction extends AXPWorkflowAction {\n constructor() {\n super(...arguments);\n this.workflowService = inject(AXPWorkflowService);\n }\n async execute(context) {\n //console.log(\"start WK current context\", context);\n //console.log(\"start WK input context\", this.context);\n if (this.context)\n context.setVariables(this.context);\n //console.log(\"start WK merged context\", context);\n try {\n await this.workflowService.execute(this.workflow, context);\n }\n catch (e) {\n throw e;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPStartWorkflowAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPStartWorkflowAction, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPStartWorkflowAction, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtd29ya2Zsb3cuYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2FjdGlvbnMvc3RhcnQtd29ya2Zsb3cuYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBc0IsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFLekQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGlCQUFpQjtJQUg3RDs7UUFLWSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0tBa0J2RDtJQWRHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBMkI7UUFDckMsbURBQW1EO1FBQ25ELHNEQUFzRDtRQUN0RCxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQ1osT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdEMsa0RBQWtEO1FBQ2xELElBQUksQ0FBQztZQUNELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsQ0FBQztRQUNaLENBQUM7SUFFTCxDQUFDOytHQW5CUSxzQkFBc0I7bUhBQXRCLHNCQUFzQixjQUZuQixNQUFNOzs0RkFFVCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFYUFdvcmtmbG93QWN0aW9uLCBBWFBXb3JrZmxvd0NvbnRleHQgfSBmcm9tIFwiLi4vd29ya2Zsb3cudHlwZXNcIjtcbmltcG9ydCB7IEFYUFdvcmtmbG93U2VydmljZSB9IGZyb20gXCIuLi93b3JrZmxvdy5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUFN0YXJ0V29ya2Zsb3dBY3Rpb24gZXh0ZW5kcyBBWFBXb3JrZmxvd0FjdGlvbiB7XG5cbiAgICBwcml2YXRlIHdvcmtmbG93U2VydmljZSA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpXG4gICAgcHJpdmF0ZSB3b3JrZmxvdzogc3RyaW5nO1xuICAgIHByaXZhdGUgY29udGV4dDogYW55O1xuXG4gICAgYXN5bmMgZXhlY3V0ZShjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInN0YXJ0IFdLIGN1cnJlbnQgY29udGV4dFwiLCBjb250ZXh0KTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInN0YXJ0IFdLIGlucHV0IGNvbnRleHRcIiwgdGhpcy5jb250ZXh0KTtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dClcbiAgICAgICAgICAgIGNvbnRleHQuc2V0VmFyaWFibGVzKHRoaXMuY29udGV4dClcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInN0YXJ0IFdLIG1lcmdlZCBjb250ZXh0XCIsIGNvbnRleHQpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy53b3JrZmxvd1NlcnZpY2UuZXhlY3V0ZSh0aGlzLndvcmtmbG93LCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG4iXX0=","// ============================================\n// WORKFLOW INSTANCE v3.0.0 TYPES\n// Based on Elsa Workflow Instance schema: https://elsaworkflows.io/schemas/workflow-instance/v3.0.0/schema.json\n// Compatible with Elsa backend while using ACoreX naming conventions\n// ============================================\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctaW5zdGFuY2UudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL3dvcmtmbG93LWluc3RhbmNlLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxpQ0FBaUM7QUFDakMsZ0hBQWdIO0FBQ2hILHFFQUFxRTtBQUNyRSwrQ0FBK0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gV09SS0ZMT1cgSU5TVEFOQ0UgdjMuMC4wIFRZUEVTXG4vLyBCYXNlZCBvbiBFbHNhIFdvcmtmbG93IEluc3RhbmNlIHNjaGVtYTogaHR0cHM6Ly9lbHNhd29ya2Zsb3dzLmlvL3NjaGVtYXMvd29ya2Zsb3ctaW5zdGFuY2UvdjMuMC4wL3NjaGVtYS5qc29uXG4vLyBDb21wYXRpYmxlIHdpdGggRWxzYSBiYWNrZW5kIHdoaWxlIHVzaW5nIEFDb3JlWCBuYW1pbmcgY29udmVudGlvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogV29ya2Zsb3cgc3RhdHVzLlxuICovXG5leHBvcnQgdHlwZSBBWFBXb3JrZmxvd1N0YXR1cyA9ICdSdW5uaW5nJyB8ICdGaW5pc2hlZCc7XG5cbi8qKlxuICogV29ya2Zsb3cgc3ViLXN0YXR1cy5cbiAqL1xuZXhwb3J0IHR5cGUgQVhQV29ya2Zsb3dTdWJTdGF0dXMgPSAnUGVuZGluZycgfCAnRXhlY3V0aW5nJyB8ICdTdXNwZW5kZWQnIHwgJ0ZpbmlzaGVkJyB8ICdDYW5jZWxsZWQnIHwgJ0ZhdWx0ZWQnO1xuXG4vKipcbiAqIEFjdGl2aXR5IHN0YXR1cy5cbiAqL1xuZXhwb3J0IHR5cGUgQVhQQWN0aXZpdHlTdGF0dXMgPSAnUnVubmluZycgfCAnQ29tcGxldGVkJyB8ICdDYW5jZWxlZCcgfCAnRmF1bHRlZCc7XG5cbi8qKlxuICogRXhjZXB0aW9uIHN0YXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUEV4Y2VwdGlvblN0YXRlIHtcbiAgLyoqXG4gICAqIEV4Y2VwdGlvbiB0eXBlIG5hbWUuXG4gICAqL1xuICB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4Y2VwdGlvbiBtZXNzYWdlLlxuICAgKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdGFjayB0cmFjZSAobnVsbGFibGUpLlxuICAgKi9cbiAgc3RhY2tUcmFjZT86IHN0cmluZyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIElubmVyIGV4Y2VwdGlvbiAobnVsbGFibGUpLlxuICAgKi9cbiAgaW5uZXJFeGNlcHRpb24/OiBBWFBFeGNlcHRpb25TdGF0ZSB8IG51bGw7XG59XG5cbi8qKlxuICogQWN0aXZpdHkgaW5jaWRlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQWN0aXZpdHlJbmNpZGVudCB7XG4gIC8qKlxuICAgKiBBY3Rpdml0eSBJRCB0aGF0IGNhdXNlZCB0aGUgaW5jaWRlbnQuXG4gICAqL1xuICBhY3Rpdml0eUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFjdGl2aXR5IG5vZGUgSUQuXG4gICAqL1xuICBhY3Rpdml0eU5vZGVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY3Rpdml0eSB0eXBlLlxuICAgKi9cbiAgYWN0aXZpdHlUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluY2lkZW50IG1lc3NhZ2UuXG4gICAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4Y2VwdGlvbiAobnVsbGFibGUpLlxuICAgKi9cbiAgZXhjZXB0aW9uPzogQVhQRXhjZXB0aW9uU3RhdGUgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgKElTTyBkYXRlLXRpbWUpLlxuICAgKi9cbiAgdGltZXN0YW1wOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV29ya2Zsb3cgZmF1bHQgc3RhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dGYXVsdFN0YXRlIHtcbiAgLyoqXG4gICAqIEV4Y2VwdGlvbiAobnVsbGFibGUpLlxuICAgKi9cbiAgZXhjZXB0aW9uPzogQVhQRXhjZXB0aW9uU3RhdGUgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBGYXVsdCBtZXNzYWdlLlxuICAgKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGYXVsdGVkIGFjdGl2aXR5IElEIChudWxsYWJsZSkuXG4gICAqL1xuICBmYXVsdGVkQWN0aXZpdHlJZD86IHN0cmluZyB8IG51bGw7XG59XG5cbi8qKlxuICogQm9va21hcmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQm9va21hcmsge1xuICAvKipcbiAgICogQm9va21hcmsgSUQuXG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb29rbWFyayBuYW1lLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb29rbWFyayBoYXNoLlxuICAgKi9cbiAgaGFzaDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb29rbWFyayBwYXlsb2FkIChudWxsYWJsZSkuXG4gICAqL1xuICBwYXlsb2FkPzogYW55IHwgbnVsbDtcblxuICAvKipcbiAgICogQWN0aXZpdHkgbm9kZSBJRC5cbiAgICovXG4gIGFjdGl2aXR5Tm9kZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFjdGl2aXR5IGluc3RhbmNlIElELlxuICAgKi9cbiAgYWN0aXZpdHlJbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF1dG8gYnVybiBmbGFnLlxuICAgKi9cbiAgYXV0b0J1cm4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBtZXRob2QgbmFtZSAobnVsbGFibGUpLlxuICAgKi9cbiAgY2FsbGJhY2tNZXRob2ROYW1lPzogc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogTWV0YWRhdGEgKG51bGxhYmxlKS5cbiAgICovXG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGw7XG59XG5cbi8qKlxuICogQ29tcGxldGlvbiBjYWxsYmFjayBzdGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBDb21wbGV0aW9uQ2FsbGJhY2tTdGF0ZSB7XG4gIC8qKlxuICAgKiBPd25lciBhY3Rpdml0eSBpbnN0YW5jZSBJRC5cbiAgICovXG4gIG93bmVySW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDaGlsZCBhY3Rpdml0eSBub2RlIElELlxuICAgKi9cbiAgY2hpbGROb2RlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogTWV0aG9kIG5hbWUgKG51bGxhYmxlKS5cbiAgICovXG4gIG1ldGhvZE5hbWU/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKipcbiAqIFZhcmlhYmxlIChmb3IgYWN0aXZpdHkgY29udGV4dCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQWN0aXZpdHlWYXJpYWJsZSB7XG4gIC8qKlxuICAgKiBWYXJpYWJsZSBJRC5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhcmlhYmxlIG5hbWUuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgbmFtZS5cbiAgICovXG4gIHR5cGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElzIGFycmF5IGZsYWcuXG4gICAqL1xuICBpc0FycmF5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmFyaWFibGUgdmFsdWUgKG51bGxhYmxlKS5cbiAgICovXG4gIHZhbHVlPzogYW55IHwgbnVsbDtcblxuICAvKipcbiAgICogU3RvcmFnZSBkcml2ZXIgdHlwZSBuYW1lIChudWxsYWJsZSkuXG4gICAqL1xuICBzdG9yYWdlRHJpdmVyVHlwZU5hbWU/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKipcbiAqIEFjdGl2aXR5IGV4ZWN1dGlvbiBjb250ZXh0IHN0YXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUEFjdGl2aXR5RXhlY3V0aW9uQ29udGV4dFN0YXRlIHtcbiAgLyoqXG4gICAqIENvbnRleHQgSUQgKGFjdGl2aXR5IGluc3RhbmNlIElEKS5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhcmVudCBjb250ZXh0IElEIChudWxsYWJsZSkuXG4gICAqL1xuICBwYXJlbnRDb250ZXh0SWQ/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBTY2hlZHVsZWQgYWN0aXZpdHkgbm9kZSBJRC5cbiAgICovXG4gIHNjaGVkdWxlZEFjdGl2aXR5Tm9kZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE93bmVyIGFjdGl2aXR5IG5vZGUgSUQgKG51bGxhYmxlKS5cbiAgICovXG4gIG93bmVyQWN0aXZpdHlOb2RlSWQ/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBQcm9wZXJ0aWVzIGJhZy5cbiAgICovXG4gIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIEFjdGl2aXR5IHN0YXRlIChldmFsdWF0ZWQgcHJvcGVydGllcykgKG51bGxhYmxlKS5cbiAgICovXG4gIGFjdGl2aXR5U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbDtcblxuICAvKipcbiAgICogRHluYW1pYyB2YXJpYWJsZXMuXG4gICAqL1xuICBkeW5hbWljVmFyaWFibGVzOiBBWFBBY3Rpdml0eVZhcmlhYmxlW107XG5cbiAgLyoqXG4gICAqIEFjdGl2aXR5IHN0YXR1cy5cbiAgICovXG4gIHN0YXR1czogQVhQQWN0aXZpdHlTdGF0dXM7XG5cbiAgLyoqXG4gICAqIElzIGV4ZWN1dGluZyBmbGFnLlxuICAgKi9cbiAgaXNFeGVjdXRpbmc6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZhdWx0IGNvdW50LlxuICAgKi9cbiAgZmF1bHRDb3VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTdGFydGVkIGF0IHRpbWVzdGFtcCAoSVNPIGRhdGUtdGltZSkuXG4gICAqL1xuICBzdGFydGVkQXQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ29tcGxldGVkIGF0IHRpbWVzdGFtcCAoSVNPIGRhdGUtdGltZSwgbnVsbGFibGUpLlxuICAgKi9cbiAgY29tcGxldGVkQXQ/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUYWcgKG51bGxhYmxlKS5cbiAgICovXG4gIHRhZz86IGFueSB8IG51bGw7XG59XG5cbi8qKlxuICogV29ya2Zsb3cgc3RhdGUgKGludGVybmFsIGV4ZWN1dGlvbiBzdGF0ZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dTdGF0ZSB7XG4gIC8qKlxuICAgKiBTdGF0ZSBJRC5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IGRlZmluaXRpb24gSUQuXG4gICAqL1xuICBkZWZpbml0aW9uSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogV29ya2Zsb3cgZGVmaW5pdGlvbiB2ZXJzaW9uLlxuICAgKi9cbiAgZGVmaW5pdGlvblZlcnNpb246IG51bWJlcjtcblxuICAvKipcbiAgICogQ29ycmVsYXRpb24gSUQgKG51bGxhYmxlKS5cbiAgICovXG4gIGNvcnJlbGF0aW9uSWQ/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBXb3JrZmxvdyBzdGF0dXMuXG4gICAqL1xuICBzdGF0dXM6IEFYUFdvcmtmbG93U3RhdHVzO1xuXG4gIC8qKlxuICAgKiBXb3JrZmxvdyBzdWItc3RhdHVzLlxuICAgKi9cbiAgc3ViU3RhdHVzOiBBWFBXb3JrZmxvd1N1YlN0YXR1cztcblxuICAvKipcbiAgICogQm9va21hcmtzLlxuICAgKi9cbiAgYm9va21hcmtzOiBBWFBCb29rbWFya1tdO1xuXG4gIC8qKlxuICAgKiBJbmNpZGVudHMuXG4gICAqL1xuICBpbmNpZGVudHM6IEFYUEFjdGl2aXR5SW5jaWRlbnRbXTtcblxuICAvKipcbiAgICogRmF1bHQgKG51bGxhYmxlKS5cbiAgICovXG4gIGZhdWx0PzogQVhQV29ya2Zsb3dGYXVsdFN0YXRlIHwgbnVsbDtcblxuICAvKipcbiAgICogQ29tcGxldGlvbiBjYWxsYmFja3MuXG4gICAqL1xuICBjb21wbGV0aW9uQ2FsbGJhY2tzOiBBWFBDb21wbGV0aW9uQ2FsbGJhY2tTdGF0ZVtdO1xuXG4gIC8qKlxuICAgKiBBY3Rpdml0eSBleGVjdXRpb24gY29udGV4dHMuXG4gICAqL1xuICBhY3Rpdml0eUV4ZWN1dGlvbkNvbnRleHRzOiBBWFBBY3Rpdml0eUV4ZWN1dGlvbkNvbnRleHRTdGF0ZVtdO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBkYXRhLlxuICAgKi9cbiAgaW5wdXQ6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIE91dHB1dCBkYXRhLlxuICAgKi9cbiAgb3V0cHV0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8qKlxuICAgKiBQcm9wZXJ0aWVzIGJhZy5cbiAgICovXG4gIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIENyZWF0ZWQgYXQgdGltZXN0YW1wIChJU08gZGF0ZS10aW1lKS5cbiAgICovXG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcGRhdGVkIGF0IHRpbWVzdGFtcCAoSVNPIGRhdGUtdGltZSkuXG4gICAqL1xuICB1cGRhdGVkQXQ6IHN0cmluZztcblxuICAvKipcbiAgICogRmluaXNoZWQgYXQgdGltZXN0YW1wIChJU08gZGF0ZS10aW1lLCBudWxsYWJsZSkuXG4gICAqL1xuICBmaW5pc2hlZEF0Pzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBXb3JrZmxvdyBpbnN0YW5jZSAoc3RvcmVkIGluIGRhdGFiYXNlKS5cbiAqIFRoaXMgbWF0Y2hlcyB0aGUgRWxzYSBXb3JrZmxvdyBJbnN0YW5jZSBzY2hlbWEgZm9yIGJhY2tlbmQgY29tcGF0aWJpbGl0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBXb3JrZmxvd0luc3RhbmNlIHtcbiAgLyoqXG4gICAqIFNjaGVtYSByZWZlcmVuY2UuXG4gICAqL1xuICAkc2NoZW1hPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgaW5zdGFuY2UgSUQuXG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXb3JrZmxvdyBkZWZpbml0aW9uIElELlxuICAgKi9cbiAgZGVmaW5pdGlvbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IGRlZmluaXRpb24gdmVyc2lvbiBJRC5cbiAgICovXG4gIGRlZmluaXRpb25WZXJzaW9uSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogV29ya2Zsb3cgZGVmaW5pdGlvbiB2ZXJzaW9uIG51bWJlci5cbiAgICovXG4gIHZlcnNpb246IG51bWJlcjtcblxuICAvKipcbiAgICogUGFyZW50IHdvcmtmbG93IGluc3RhbmNlIElEIChudWxsYWJsZSwgZm9yIGNoaWxkIHdvcmtmbG93cykuXG4gICAqL1xuICBwYXJlbnRXb3JrZmxvd0luc3RhbmNlSWQ/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBXb3JrZmxvdyBzdGF0ZSAoaW50ZXJuYWwgZXhlY3V0aW9uIHN0YXRlKS5cbiAgICovXG4gIHdvcmtmbG93U3RhdGU6IEFYUFdvcmtmbG93U3RhdGU7XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IHN0YXR1cy5cbiAgICovXG4gIHN0YXR1czogQVhQV29ya2Zsb3dTdGF0dXM7XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IHN1Yi1zdGF0dXMuXG4gICAqL1xuICBzdWJTdGF0dXM6IEFYUFdvcmtmbG93U3ViU3RhdHVzO1xuXG4gIC8qKlxuICAgKiBDb3JyZWxhdGlvbiBJRCAobnVsbGFibGUpLlxuICAgKi9cbiAgY29ycmVsYXRpb25JZD86IHN0cmluZyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEluc3RhbmNlIG5hbWUgKG51bGxhYmxlKS5cbiAgICovXG4gIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBJbmNpZGVudCBjb3VudC5cbiAgICovXG4gIGluY2lkZW50Q291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQ3JlYXRlZCBhdCB0aW1lc3RhbXAgKElTTyBkYXRlLXRpbWUpLlxuICAgKi9cbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZWQgYXQgdGltZXN0YW1wIChJU08gZGF0ZS10aW1lKS5cbiAgICovXG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaW5pc2hlZCBhdCB0aW1lc3RhbXAgKElTTyBkYXRlLXRpbWUsIG51bGxhYmxlKS5cbiAgICovXG4gIGZpbmlzaGVkQXQ/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const AXP_ACTIVITY_PROVIDER = new InjectionToken('AXP_ACTIVITY_PROVIDER', {\n factory: () => [],\n});\nexport const AXP_ACTIVITY_CATEGORY_PROVIDER = new InjectionToken('AXP_ACTIVITY_CATEGORY_PROVIDER', {\n factory: () => [],\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktZGVmaW5pdGlvbi5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi9lbmdpbmUvYWN0aXZpdHkvYWN0aXZpdHktZGVmaW5pdGlvbi5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTy9DLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUE2Qix1QkFBdUIsRUFBRTtJQUN6RyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtDQUNwQixDQUFDLENBQUM7QUF1QkgsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBQXFDLGdDQUFnQyxFQUFFO0lBQ25JLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0NBQ3BCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBBY3Rpdml0eUNhdGVnb3J5LCBBWFBBY3Rpdml0eURlZmluaXRpb24gfSBmcm9tICcuL2FjdGl2aXR5LnR5cGVzJztcblxuZXhwb3J0IHR5cGUgQVhQQWN0aXZpdHlQcm92aWRlclRva2VuID1cbiAgICB8IEFYUEFjdGl2aXR5UHJvdmlkZXJcbiAgICB8IFByb21pc2U8QVhQQWN0aXZpdHlQcm92aWRlcj47XG5cbmV4cG9ydCBjb25zdCBBWFBfQUNUSVZJVFlfUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQQWN0aXZpdHlQcm92aWRlclRva2VuW10+KCdBWFBfQUNUSVZJVFlfUFJPVklERVInLCB7XG4gICAgZmFjdG9yeTogKCkgPT4gW10sXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBBY3Rpdml0eVByb3ZpZGVyIHtcbiAgICAvKipcbiAgICAgKiBHZXQgbGlzdCBvZiBhY3Rpdml0eSBkZWZpbml0aW9ucyBmb3IgYSBjYXRlZ29yeS5cbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZCAtIENhdGVnb3J5IElEIHRvIGZpbHRlciBhY3Rpdml0aWVzXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiBhY3Rpdml0eSBkZWZpbml0aW9ucyBhcnJheVxuICAgICAqL1xuICAgIGdldExpc3QoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBBY3Rpdml0eURlZmluaXRpb25bXT47XG4gICAgXG4gICAgLyoqXG4gICAgICogR2V0IGFjdGl2aXR5IGRlZmluaXRpb24gYnkgbmFtZSAodW5pcXVlIGlkZW50aWZpZXIpLlxuICAgICAqIFRoZSBuYW1lIGlzIHVzZWQgYXMgdGhlIGNvbW1hbmQga2V5IGZvciBleGVjdXRpb24uXG4gICAgICogQHBhcmFtIG5hbWUgLSBBY3Rpdml0eSBuYW1lICh1bmlxdWUgaWRlbnRpZmllciBhbmQgY29tbWFuZCBrZXkpXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiBhY3Rpdml0eSBkZWZpbml0aW9uIG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAgICAgKi9cbiAgICBnZXRCeUlkKG5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQQWN0aXZpdHlEZWZpbml0aW9uIHwgdW5kZWZpbmVkPjtcbn1cblxuZXhwb3J0IHR5cGUgQVhQQWN0aXZpdHlDYXRlZ29yeVByb3ZpZGVyVG9rZW4gPVxuICAgIHwgQVhQQWN0aXZpdHlDYXRlZ29yeVByb3ZpZGVyXG4gICAgfCBQcm9taXNlPEFYUEFjdGl2aXR5Q2F0ZWdvcnlQcm92aWRlcj47XG5cbmV4cG9ydCBjb25zdCBBWFBfQUNUSVZJVFlfQ0FURUdPUllfUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQQWN0aXZpdHlDYXRlZ29yeVByb3ZpZGVyVG9rZW5bXT4oJ0FYUF9BQ1RJVklUWV9DQVRFR09SWV9QUk9WSURFUicsIHtcbiAgICBmYWN0b3J5OiAoKSA9PiBbXSxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEFjdGl2aXR5Q2F0ZWdvcnlQcm92aWRlciB7XG4gICAgZ2V0TGlzdChwYXJlbnRJZD86IHN0cmluZyk6IFByb21pc2U8QVhQQWN0aXZpdHlDYXRlZ29yeVtdPjtcbiAgICBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUEFjdGl2aXR5Q2F0ZWdvcnkgfCB1bmRlZmluZWQ+O1xufVxuXG4iXX0=","//#region ---- Imports ----\nimport { inject, Injectable } from '@angular/core';\nimport { AXP_ACTIVITY_CATEGORY_PROVIDER, AXP_ACTIVITY_PROVIDER } from './activity-definition.provider';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Optimized Activity Definition Service\n *\n * Manages activity definitions (metadata) for UI and tooling.\n * Similar to AXPReportDefinitionService - only handles metadata, not execution.\n *\n * Performance optimizations:\n * 1. Uses childrenCount to determine if category has children (no query needed)\n * 2. Uses itemsCount to determine if category has activities (no query needed)\n * 3. Aggressive caching prevents duplicate API calls\n * 4. Single pending request per resource prevents race conditions\n * 5. Lazy loading - only loads data when needed\n */\nexport class AXPActivityDefinitionService {\n constructor() {\n //#region ---- Providers & Caches ----\n this.categoryProviders = inject(AXP_ACTIVITY_CATEGORY_PROVIDER, { optional: true }) || [];\n this.activityProviders = inject(AXP_ACTIVITY_PROVIDER, { optional: true }) || [];\n //#endregion\n //#region ---- Cache Storage ----\n /** Cache for categories by id - O(1) lookup */\n this.categoriesById = new Map();\n /** Cache for categories by parentId - O(1) lookup */\n this.categoriesByParentId = new Map();\n /** Cache for activity definitions by categoryId - O(1) lookup */\n this.activitiesByCategory = new Map();\n /** Cache for individual activity definitions by name - O(1) lookup */\n this.activitiesByName = new Map();\n /** Track which provider index owns each category (by category ID) */\n this.categoryOwnership = new Map(); // Maps categoryId → provider index\n /** Pending API requests to prevent duplicate calls */\n this.pendingCategoriesRequests = new Map();\n this.pendingActivitiesRequests = new Map();\n this.pendingActivityRequests = new Map();\n }\n //#endregion\n //#region ---- Initialization ----\n //#endregion\n //#region ---- Public API: Categories ----\n /**\n * Get categories by parentId with aggressive caching\n *\n * Optimization: Returns cached result immediately if available,\n * preventing unnecessary API calls during navigation\n *\n * @param parentId - Parent category ID (undefined = root categories)\n * @returns Array of categories with count metadata (childrenCount, itemsCount)\n */\n async getCategories(parentId) {\n // ✅ Fast path: Return cached result\n if (this.categoriesByParentId.has(parentId)) {\n return this.categoriesByParentId.get(parentId);\n }\n // ✅ Prevent duplicate requests: Return pending promise\n if (this.pendingCategoriesRequests.has(parentId)) {\n return this.pendingCategoriesRequests.get(parentId);\n }\n // ✅ Create single request and cache it\n const requestPromise = this.loadCategoriesFromProviders(parentId);\n this.pendingCategoriesRequests.set(parentId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single category by ID with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval, falls back to\n * searching cache, then providers if not found\n */\n async getCategoryById(categoryId) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n // ✅ Search in cached parent-child lists\n for (const categories of this.categoriesByParentId.values()) {\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n this.categoriesById.set(categoryId, found);\n return found;\n }\n }\n // ✅ Load root categories if not loaded\n if (!this.categoriesByParentId.has(undefined)) {\n await this.getCategories();\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n }\n // ✅ Breadth-first search through hierarchy\n return this.searchCategoryInHierarchy(categoryId);\n }\n /**\n * Get category path from root to specified category\n *\n * Optimization: Builds path using cached categories only\n */\n async getCategoriesPathById(categoryId) {\n const path = [];\n let currentCategoryId = categoryId;\n while (currentCategoryId) {\n const category = await this.getCategoryById(currentCategoryId);\n if (!category) {\n throw new Error(`Category '${currentCategoryId}' not found`);\n }\n path.unshift(category);\n currentCategoryId = category.parentId;\n }\n return path;\n }\n //#endregion\n //#region ---- Public API: Activity Definitions ----\n /**\n * Get activity definitions for a category with smart caching\n *\n * Optimization: Checks itemsCount before querying\n * - If itemsCount = 0, returns empty array (no API call)\n * - If itemsCount > 0, loads and caches activity definitions\n * - Returns cached result on subsequent calls\n *\n * @param categoryId - Category ID to get activity definitions from\n * @returns Array of activity definitions\n */\n async getActivitiesByCategoryId(categoryId) {\n // ✅ Fast path: Return cached result\n if (this.activitiesByCategory.has(categoryId)) {\n return this.activitiesByCategory.get(categoryId);\n }\n // ✅ Smart optimization: Check itemsCount before querying\n const category = await this.getCategoryById(categoryId);\n if (category && category.itemsCount !== undefined && category.itemsCount === 0) {\n // Category has no activities - cache empty array and skip API call\n const emptyArray = [];\n this.activitiesByCategory.set(categoryId, emptyArray);\n return emptyArray;\n }\n // ✅ Prevent duplicate requests\n if (this.pendingActivitiesRequests.has(categoryId)) {\n return this.pendingActivitiesRequests.get(categoryId);\n }\n // ✅ Load from providers\n const requestPromise = this.loadActivitiesFromProviders(categoryId);\n this.pendingActivitiesRequests.set(categoryId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single activity definition by name with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval\n *\n * @param name - Activity name (unique identifier and command key)\n * @returns Activity definition or undefined if not found\n */\n async getActivityByName(name) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.activitiesByName.has(name)) {\n return this.activitiesByName.get(name);\n }\n // ✅ Prevent duplicate requests\n if (this.pendingActivityRequests.has(name)) {\n return this.pendingActivityRequests.get(name);\n }\n // ✅ Load from providers\n const requestPromise = this.loadActivityFromProviders(name);\n this.pendingActivityRequests.set(name, requestPromise);\n return requestPromise;\n }\n /**\n * Get category ID containing a specific activity definition\n *\n * Optimization: Searches cache first, loads on-demand if needed\n */\n async getCategoryIdByActivityName(activityName) {\n // ✅ Search in cached activity definitions\n for (const [categoryId, definitions] of this.activitiesByCategory.entries()) {\n if (definitions.some(def => def.name === activityName)) {\n return categoryId;\n }\n }\n // ✅ Try loading the activity definition to find its category\n const definition = await this.getActivityByName(activityName);\n if (definition && definition.category) {\n // Try to find category by name/id\n const categories = await this.getCategories();\n const found = categories.find(cat => cat.id === definition.category || cat.title === definition.category);\n if (found) {\n return found.id;\n }\n }\n return undefined;\n }\n /**\n * Get category path for an activity\n */\n async getCategoriesPathByActivityName(activityName) {\n const categoryId = await this.getCategoryIdByActivityName(activityName);\n if (!categoryId) {\n throw new Error(`Activity '${activityName}' not found in any category`);\n }\n return this.getCategoriesPathById(categoryId);\n }\n //#endregion\n //#region ---- Private: Data Loading ----\n /**\n * Load categories from providers and cache results\n *\n * Optimization: Tracks provider ownership to avoid unnecessary API calls\n * - For root (parentId = undefined): Query ALL providers\n * - For children: Only query the provider that owns the parent\n */\n async loadCategoriesFromProviders(parentId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.categoryProviders);\n const categories = [];\n // Determine which provider(s) to query\n const providerIndicesToQuery = parentId\n ? this.getProviderIndexForCategory(parentId)\n : null; // Root: query all providers\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const cats = await p.value.getList(parentId);\n if (Array.isArray(cats) && cats.length > 0) {\n categories.push(...cats);\n // ✅ Track ownership: This provider INDEX owns these categories\n cats.forEach(cat => this.categoryOwnership.set(cat.id, i));\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.categoriesByParentId.set(parentId, categories);\n categories.forEach(cat => this.categoriesById.set(cat.id, cat));\n return categories;\n }\n finally {\n this.pendingCategoriesRequests.delete(parentId);\n }\n }\n /**\n * Get the provider index that owns a specific category\n *\n * @returns Array with provider index, or null if ownership unknown (query all)\n */\n getProviderIndexForCategory(categoryId) {\n const ownerIndex = this.categoryOwnership.get(categoryId);\n if (ownerIndex !== undefined) {\n return [ownerIndex];\n }\n // Ownership unknown - will query all providers (fallback)\n return null;\n }\n /**\n * Load activity definitions from providers and cache results\n *\n * Optimization: Only queries the provider that owns the category\n * Uses provider INDEX to match category provider with activity provider\n */\n async loadActivitiesFromProviders(categoryId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.activityProviders);\n const definitions = [];\n // ✅ Smart routing: Get provider INDEX that owns this category\n const ownerIndex = this.categoryOwnership.get(categoryId);\n const providerIndicesToQuery = ownerIndex !== undefined ? [ownerIndex] : null;\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const defs = await p.value.getList(categoryId);\n if (Array.isArray(defs)) {\n definitions.push(...defs);\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.activitiesByCategory.set(categoryId, definitions);\n definitions.forEach(def => {\n if (def.name) {\n this.activitiesByName.set(def.name, def);\n }\n });\n return definitions;\n }\n finally {\n this.pendingActivitiesRequests.delete(categoryId);\n }\n }\n /**\n * Load single activity definition from providers and cache result\n */\n async loadActivityFromProviders(name) {\n try {\n const resolvedProviders = await Promise.allSettled(this.activityProviders);\n // Try providers first\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getById === 'function') {\n try {\n const result = await p.value.getById(name);\n if (result) {\n this.activitiesByName.set(name, result);\n return result;\n }\n }\n catch {\n // Continue on error\n }\n }\n }\n // Fallback: Search in cached activity definitions\n for (const definitions of this.activitiesByCategory.values()) {\n const found = definitions.find(def => def.name === name);\n if (found) {\n this.activitiesByName.set(name, found);\n return found;\n }\n }\n return undefined;\n }\n finally {\n this.pendingActivityRequests.delete(name);\n }\n }\n /**\n * Breadth-first search through category hierarchy\n */\n async searchCategoryInHierarchy(categoryId) {\n const searchQueue = [undefined];\n const searched = new Set();\n while (searchQueue.length > 0) {\n const parentId = searchQueue.shift();\n if (searched.has(parentId))\n continue;\n searched.add(parentId);\n const categories = await this.getCategories(parentId);\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n return found;\n }\n // ✅ Optimization: Only search children if childrenCount > 0\n for (const category of categories) {\n if (category.childrenCount > 0 && !searched.has(category.id)) {\n searchQueue.push(category.id);\n }\n }\n }\n return undefined;\n }\n //#endregion\n //#region ---- Cache Management ----\n /**\n * Check if category has children (uses cached count)\n */\n categoryHasChildren(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? category.childrenCount > 0 : false;\n }\n /**\n * Check if category has activities (uses cached count)\n */\n categoryHasActivities(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? (category.itemsCount ?? 0) > 0 : false;\n }\n /**\n * Clear all caches\n */\n clearAllCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.activitiesByCategory.clear();\n this.activitiesByName.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n this.pendingActivitiesRequests.clear();\n this.pendingActivityRequests.clear();\n }\n /**\n * Clear categories cache only\n */\n clearCategoriesCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n }\n /**\n * Clear activities cache only\n */\n clearActivitiesCache() {\n this.activitiesByCategory.clear();\n this.activitiesByName.clear();\n this.pendingActivitiesRequests.clear();\n this.pendingActivityRequests.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPActivityDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPActivityDefinitionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPActivityDefinitionService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktZGVmaW5pdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2VuZ2luZS9hY3Rpdml0eS9hY3Rpdml0eS1kZWZpbml0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUV2RyxZQUFZO0FBRVo7Ozs7Ozs7Ozs7OztHQVlHO0FBSUgsTUFBTSxPQUFPLDRCQUE0QjtJQUh6QztRQUlJLDBDQUEwQztRQUV6QixzQkFBaUIsR0FBRyxNQUFNLENBQUMsOEJBQThCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckYsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTdGLFlBQVk7UUFFWixxQ0FBcUM7UUFFckMsK0NBQStDO1FBQ3ZDLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFFaEUscURBQXFEO1FBQzdDLHlCQUFvQixHQUFHLElBQUksR0FBRyxFQUE2QyxDQUFDO1FBRXBGLGlFQUFpRTtRQUN6RCx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUUxRSxzRUFBc0U7UUFDOUQscUJBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7UUFFcEUscUVBQXFFO1FBQzdELHNCQUFpQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDLENBQUMsbUNBQW1DO1FBRTFGLHNEQUFzRDtRQUM5Qyw4QkFBeUIsR0FBRyxJQUFJ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QUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QyxDQUFDOytHQWhkUSw0QkFBNEI7bUhBQTVCLDRCQUE0QixjQUZ6QixNQUFNOzs0RkFFVCw0QkFBNEI7a0JBSHhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEFjdGl2aXR5Q2F0ZWdvcnksIEFYUEFjdGl2aXR5RGVmaW5pdGlvbiB9IGZyb20gJy4vYWN0aXZpdHkudHlwZXMnO1xuaW1wb3J0IHsgQVhQX0FDVElWSVRZX0NBVEVHT1JZX1BST1ZJREVSLCBBWFBfQUNUSVZJVFlfUFJPVklERVIgfSBmcm9tICcuL2FjdGl2aXR5LWRlZmluaXRpb24ucHJvdmlkZXInO1xuXG4vLyNlbmRyZWdpb25cblxuLyoqXG4gKiBPcHRpbWl6ZWQgQWN0aXZpdHkgRGVmaW5pdGlvbiBTZXJ2aWNlXG4gKiBcbiAqIE1hbmFnZXMgYWN0aXZpdHkgZGVmaW5pdGlvbnMgKG1ldGFkYXRhKSBmb3IgVUkgYW5kIHRvb2xpbmcuXG4gKiBTaW1pbGFyIHRvIEFYUFJlcG9ydERlZmluaXRpb25TZXJ2aWNlIC0gb25seSBoYW5kbGVzIG1ldGFkYXRhLCBub3QgZXhlY3V0aW9uLlxuICogXG4gKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zOlxuICogMS4gVXNlcyBjaGlsZHJlbkNvdW50IHRvIGRldGVybWluZSBpZiBjYXRlZ29yeSBoYXMgY2hpbGRyZW4gKG5vIHF1ZXJ5IG5lZWRlZClcbiAqIDIuIFVzZXMgaXRlbXNDb3VudCB0byBkZXRlcm1pbmUgaWYgY2F0ZWdvcnkgaGFzIGFjdGl2aXRpZXMgKG5vIHF1ZXJ5IG5lZWRlZClcbiAqIDMuIEFnZ3Jlc3NpdmUgY2FjaGluZyBwcmV2ZW50cyBkdXBsaWNhdGUgQVBJIGNhbGxzXG4gKiA0LiBTaW5nbGUgcGVuZGluZyByZXF1ZXN0IHBlciByZXNvdXJjZSBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnNcbiAqIDUuIExhenkgbG9hZGluZyAtIG9ubHkgbG9hZHMgZGF0YSB3aGVuIG5lZWRlZFxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBBY3Rpdml0eURlZmluaXRpb25TZXJ2aWNlIHtcbiAgICAvLyNyZWdpb24gLS0tLSAgIFByb3ZpZGVycyAmIENhY2hlcyAgIC0tLS1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlQcm92aWRlcnMgPSBpbmplY3QoQVhQX0FDVElWSVRZX0NBVEVHT1JZX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pIHx8IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZpdHlQcm92aWRlcnMgPSBpbmplY3QoQVhQX0FDVElWSVRZX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pIHx8IFtdO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIENhY2hlIFN0b3JhZ2UgICAtLS0tXG5cbiAgICAvKiogQ2FjaGUgZm9yIGNhdGVnb3JpZXMgYnkgaWQgLSBPKDEpIGxvb2t1cCAqL1xuICAgIHByaXZhdGUgY2F0ZWdvcmllc0J5SWQgPSBuZXcgTWFwPHN0cmluZywgQVhQQWN0aXZpdHlDYXRlZ29yeT4oKTtcblxuICAgIC8qKiBDYWNoZSBmb3IgY2F0ZWdvcmllcyBieSBwYXJlbnRJZCAtIE8oMSkgbG9va3VwICovXG4gICAgcHJpdmF0ZSBjYXRlZ29yaWVzQnlQYXJlbnRJZCA9IG5ldyBNYXA8c3RyaW5nIHwgdW5kZWZpbmVkLCBBWFBBY3Rpdml0eUNhdGVnb3J5W10+KCk7XG5cbiAgICAvKiogQ2FjaGUgZm9yIGFjdGl2aXR5IGRlZmluaXRpb25zIGJ5IGNhdGVnb3J5SWQgLSBPKDEpIGxvb2t1cCAqL1xuICAgIHByaXZhdGUgYWN0aXZpdGllc0J5Q2F0ZWdvcnkgPSBuZXcgTWFwPHN0cmluZywgQVhQQWN0aXZpdHlEZWZpbml0aW9uW10+KCk7XG5cbiAgICAvKiogQ2FjaGUgZm9yIGluZGl2aWR1YWwgYWN0aXZpdHkgZGVmaW5pdGlvbnMgYnkgbmFtZSAtIE8oMSkgbG9va3VwICovXG4gICAgcHJpdmF0ZSBhY3Rpdml0aWVzQnlOYW1lID0gbmV3IE1hcDxzdHJpbmcsIEFYUEFjdGl2aXR5RGVmaW5pdGlvbj4oKTtcblxuICAgIC8qKiBUcmFjayB3aGljaCBwcm92aWRlciBpbmRleCBvd25zIGVhY2ggY2F0ZWdvcnkgKGJ5IGNhdGVnb3J5IElEKSAqL1xuICAgIHByaXZhdGUgY2F0ZWdvcnlPd25lcnNoaXAgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpOyAvLyBNYXBzIGNhdGVnb3J5SWQg4oaSIHByb3ZpZGVyIGluZGV4XG5cbiAgICAvKiogUGVuZGluZyBBUEkgcmVxdWVzdHMgdG8gcHJldmVudCBkdXBsaWNhdGUgY2FsbHMgKi9cbiAgICBwcml2YXRlIHBlbmRpbmdDYXRlZ29yaWVzUmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZyB8IHVuZGVmaW5lZCwgUHJvbWlzZTxBWFBBY3Rpdml0eUNhdGVnb3J5W10+PigpO1xuICAgIHByaXZhdGUgcGVuZGluZ0FjdGl2aXRpZXNSZXF1ZXN0cyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPEFYUEFjdGl2aXR5RGVmaW5pdGlvbltdPj4oKTtcbiAgICBwcml2YXRlIHBlbmRpbmdBY3Rpdml0eVJlcXVlc3RzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8QVhQQWN0aXZpdHlEZWZpbml0aW9uIHwgdW5kZWZpbmVkPj4oKTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBJbml0aWFsaXphdGlvbiAgIC0tLS1cblxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBBUEk6IENhdGVnb3JpZXMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgY2F0ZWdvcmllcyBieSBwYXJlbnRJZCB3aXRoIGFnZ3Jlc3NpdmUgY2FjaGluZ1xuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogUmV0dXJucyBjYWNoZWQgcmVzdWx0IGltbWVkaWF0ZWx5IGlmIGF2YWlsYWJsZSxcbiAgICAgKiBwcmV2ZW50aW5nIHVubmVjZXNzYXJ5IEFQSSBjYWxscyBkdXJpbmcgbmF2aWdhdGlvblxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwYXJlbnRJZCAtIFBhcmVudCBjYXRlZ29yeSBJRCAodW5kZWZpbmVkID0gcm9vdCBjYXRlZ29yaWVzKVxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIGNhdGVnb3JpZXMgd2l0aCBjb3VudCBtZXRhZGF0YSAoY2hpbGRyZW5Db3VudCwgaXRlbXNDb3VudClcbiAgICAgKi9cbiAgICBhc3luYyBnZXRDYXRlZ29yaWVzKHBhcmVudElkPzogc3RyaW5nKTogUHJvbWlzZTxBWFBBY3Rpdml0eUNhdGVnb3J5W10+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogUmV0dXJuIGNhY2hlZCByZXN1bHRcbiAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuaGFzKHBhcmVudElkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuZ2V0KHBhcmVudElkKSE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHM6IFJldHVybiBwZW5kaW5nIHByb21pc2VcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5oYXMocGFyZW50SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmdldChwYXJlbnRJZCkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIENyZWF0ZSBzaW5nbGUgcmVxdWVzdCBhbmQgY2FjaGUgaXRcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRDYXRlZ29yaWVzRnJvbVByb3ZpZGVycyhwYXJlbnRJZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5zZXQocGFyZW50SWQsIHJlcXVlc3RQcm9taXNlKTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdFByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHNpbmdsZSBjYXRlZ29yeSBieSBJRCB3aXRoIE8oMSkgbG9va3VwXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBVc2VzIE1hcCBmb3IgaW5zdGFudCByZXRyaWV2YWwsIGZhbGxzIGJhY2sgdG9cbiAgICAgKiBzZWFyY2hpbmcgY2FjaGUsIHRoZW4gcHJvdmlkZXJzIGlmIG5vdCBmb3VuZFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3J5QnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUEFjdGl2aXR5Q2F0ZWdvcnkgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogTygxKSBsb29rdXAgaW4gY2FjaGVcbiAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5SWQuaGFzKGNhdGVnb3J5SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVzQnlJZC5nZXQoY2F0ZWdvcnlJZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgU2VhcmNoIGluIGNhY2hlZCBwYXJlbnQtY2hpbGQgbGlzdHNcbiAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yaWVzIG9mIHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gY2F0ZWdvcmllcy5maW5kKGNhdCA9PiBjYXQuaWQgPT09IGNhdGVnb3J5SWQpO1xuICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlJZC5zZXQoY2F0ZWdvcnlJZCwgZm91bmQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOKchSBMb2FkIHJvb3QgY2F0ZWdvcmllcyBpZiBub3QgbG9hZGVkXG4gICAgICAgIGlmICghdGhpcy5jYXRlZ29yaWVzQnlQYXJlbnRJZC5oYXModW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRDYXRlZ29yaWVzKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5jYXRlZ29yaWVzQnlJZC5oYXMoY2F0ZWdvcnlJZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVzQnlJZC5nZXQoY2F0ZWdvcnlJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgQnJlYWR0aC1maXJzdCBzZWFyY2ggdGhyb3VnaCBoaWVyYXJjaHlcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoQ2F0ZWdvcnlJbkhpZXJhcmNoeShjYXRlZ29yeUlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY2F0ZWdvcnkgcGF0aCBmcm9tIHJvb3QgdG8gc3BlY2lmaWVkIGNhdGVnb3J5XG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBCdWlsZHMgcGF0aCB1c2luZyBjYWNoZWQgY2F0ZWdvcmllcyBvbmx5XG4gICAgICovXG4gICAgYXN5bmMgZ2V0Q2F0ZWdvcmllc1BhdGhCeUlkKGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQQWN0aXZpdHlDYXRlZ29yeVtdPiB7XG4gICAgICAgIGNvbnN0IHBhdGg6IEFYUEFjdGl2aXR5Q2F0ZWdvcnlbXSA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudENhdGVnb3J5SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNhdGVnb3J5SWQ7XG5cbiAgICAgICAgd2hpbGUgKGN1cnJlbnRDYXRlZ29yeUlkKSB7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlCeUlkKGN1cnJlbnRDYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGlmICghY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhdGVnb3J5ICcke2N1cnJlbnRDYXRlZ29yeUlkfScgbm90IGZvdW5kYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXRoLnVuc2hpZnQoY2F0ZWdvcnkpO1xuICAgICAgICAgICAgY3VycmVudENhdGVnb3J5SWQgPSBjYXRlZ29yeS5wYXJlbnRJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgQVBJOiBBY3Rpdml0eSBEZWZpbml0aW9ucyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEdldCBhY3Rpdml0eSBkZWZpbml0aW9ucyBmb3IgYSBjYXRlZ29yeSB3aXRoIHNtYXJ0IGNhY2hpbmdcbiAgICAgKiBcbiAgICAgKiBPcHRpbWl6YXRpb246IENoZWNrcyBpdGVtc0NvdW50IGJlZm9yZSBxdWVyeWluZ1xuICAgICAqIC0gSWYgaXRlbXNDb3VudCA9IDAsIHJldHVybnMgZW1wdHkgYXJyYXkgKG5vIEFQSSBjYWxsKVxuICAgICAqIC0gSWYgaXRlbXNDb3VudCA+IDAsIGxvYWRzIGFuZCBjYWNoZXMgYWN0aXZpdHkgZGVmaW5pdGlvbnNcbiAgICAgKiAtIFJldHVybnMgY2FjaGVkIHJlc3VsdCBvbiBzdWJzZXF1ZW50IGNhbGxzXG4gICAgICogXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWQgLSBDYXRlZ29yeSBJRCB0byBnZXQgYWN0aXZpdHkgZGVmaW5pdGlvbnMgZnJvbVxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIGFjdGl2aXR5IGRlZmluaXRpb25zXG4gICAgICovXG4gICAgYXN5bmMgZ2V0QWN0aXZpdGllc0J5Q2F0ZWdvcnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUEFjdGl2aXR5RGVmaW5pdGlvbltdPiB7XG4gICAgICAgIC8vIOKchSBGYXN0IHBhdGg6IFJldHVybiBjYWNoZWQgcmVzdWx0XG4gICAgICAgIGlmICh0aGlzLmFjdGl2aXRpZXNCeUNhdGVnb3J5LmhhcyhjYXRlZ29yeUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZpdGllc0J5Q2F0ZWdvcnkuZ2V0KGNhdGVnb3J5SWQpITtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOKchSBTbWFydCBvcHRpbWl6YXRpb246IENoZWNrIGl0ZW1zQ291bnQgYmVmb3JlIHF1ZXJ5aW5nXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yeUJ5SWQoY2F0ZWdvcnlJZCk7XG4gICAgICAgIGlmIChjYXRlZ29yeSAmJiBjYXRlZ29yeS5pdGVtc0NvdW50ICE9PSB1bmRlZmluZWQgJiYgY2F0ZWdvcnkuaXRlbXNDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gQ2F0ZWdvcnkgaGFzIG5vIGFjdGl2aXRpZXMgLSBjYWNoZSBlbXB0eSBhcnJheSBhbmQgc2tpcCBBUEkgY2FsbFxuICAgICAgICAgICAgY29uc3QgZW1wdHlBcnJheTogQVhQQWN0aXZpdHlEZWZpbml0aW9uW10gPSBbXTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZpdGllc0J5Q2F0ZWdvcnkuc2V0KGNhdGVnb3J5SWQsIGVtcHR5QXJyYXkpO1xuICAgICAgICAgICAgcmV0dXJuIGVtcHR5QXJyYXk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHNcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0FjdGl2aXRpZXNSZXF1ZXN0cy5oYXMoY2F0ZWdvcnlJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdBY3Rpdml0aWVzUmVxdWVzdHMuZ2V0KGNhdGVnb3J5SWQpITtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOKchSBMb2FkIGZyb20gcHJvdmlkZXJzXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQcm9taXNlID0gdGhpcy5sb2FkQWN0aXZpdGllc0Zyb21Qcm92aWRlcnMoY2F0ZWdvcnlJZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0FjdGl2aXRpZXNSZXF1ZXN0cy5zZXQoY2F0ZWdvcnlJZCwgcmVxdWVzdFByb21pc2UpO1xuXG4gICAgICAgIHJldHVybiByZXF1ZXN0UHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc2luZ2xlIGFjdGl2aXR5IGRlZmluaXRpb24gYnkgbmFtZSB3aXRoIE8oMSkgbG9va3VwXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBVc2VzIE1hcCBmb3IgaW5zdGFudCByZXRyaWV2YWxcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbmFtZSAtIEFjdGl2aXR5IG5hbWUgKHVuaXF1ZSBpZGVudGlmaWVyIGFuZCBjb21tYW5kIGtleSlcbiAgICAgKiBAcmV0dXJucyBBY3Rpdml0eSBkZWZpbml0aW9uIG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAgICAgKi9cbiAgICBhc3luYyBnZXRBY3Rpdml0eUJ5TmFtZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEFYUEFjdGl2aXR5RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICAvLyDinIUgRmFzdCBwYXRoOiBPKDEpIGxvb2t1cCBpbiBjYWNoZVxuICAgICAgICBpZiAodGhpcy5hY3Rpdml0aWVzQnlOYW1lLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZpdGllc0J5TmFtZS5nZXQobmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHNcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0FjdGl2aXR5UmVxdWVzdHMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nQWN0aXZpdHlSZXF1ZXN0cy5nZXQobmFtZSkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIExvYWQgZnJvbSBwcm92aWRlcnNcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRBY3Rpdml0eUZyb21Qcm92aWRlcnMobmFtZSk7XG4gICAgICAgIHRoaXMucGVuZGluZ0FjdGl2aXR5UmVxdWVzdHMuc2V0KG5hbWUsIHJlcXVlc3RQcm9taXNlKTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdFByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGNhdGVnb3J5IElEIGNvbnRhaW5pbmcgYSBzcGVjaWZpYyBhY3Rpdml0eSBkZWZpbml0aW9uXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBTZWFyY2hlcyBjYWNoZSBmaXJzdCwgbG9hZHMgb24tZGVtYW5kIGlmIG5lZWRlZFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3J5SWRCeUFjdGl2aXR5TmFtZShhY3Rpdml0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIOKchSBTZWFyY2ggaW4gY2FjaGVkIGFjdGl2aXR5IGRlZmluaXRpb25zXG4gICAgICAgIGZvciAoY29uc3QgW2NhdGVnb3J5SWQsIGRlZmluaXRpb25zXSBvZiB0aGlzLmFjdGl2aXRpZXNCeUNhdGVnb3J5LmVudHJpZXMoKSkge1xuICAgICAgICAgICAgaWYgKGRlZmluaXRpb25zLnNvbWUoZGVmID0+IGRlZi5uYW1lID09PSBhY3Rpdml0eU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhdGVnb3J5SWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgVHJ5IGxvYWRpbmcgdGhlIGFjdGl2aXR5IGRlZmluaXRpb24gdG8gZmluZCBpdHMgY2F0ZWdvcnlcbiAgICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZpdHlCeU5hbWUoYWN0aXZpdHlOYW1lKTtcbiAgICAgICAgaWYgKGRlZmluaXRpb24gJiYgZGVmaW5pdGlvbi5jYXRlZ29yeSkge1xuICAgICAgICAgICAgLy8gVHJ5IHRvIGZpbmQgY2F0ZWdvcnkgYnkgbmFtZS9pZFxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcmllcygpO1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSBjYXRlZ29yaWVzLmZpbmQoY2F0ID0+IGNhdC5pZCA9PT0gZGVmaW5pdGlvbi5jYXRlZ29yeSB8fCBjYXQudGl0bGUgPT09IGRlZmluaXRpb24uY2F0ZWdvcnkpO1xuICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kLmlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY2F0ZWdvcnkgcGF0aCBmb3IgYW4gYWN0aXZpdHlcbiAgICAgKi9cbiAgICBhc3luYyBnZXRDYXRlZ29yaWVzUGF0aEJ5QWN0aXZpdHlOYW1lKGFjdGl2aXR5TmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBBY3Rpdml0eUNhdGVnb3J5W10+IHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJZCA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlJZEJ5QWN0aXZpdHlOYW1lKGFjdGl2aXR5TmFtZSk7XG4gICAgICAgIGlmICghY2F0ZWdvcnlJZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBY3Rpdml0eSAnJHthY3Rpdml0eU5hbWV9JyBub3QgZm91bmQgaW4gYW55IGNhdGVnb3J5YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2F0ZWdvcmllc1BhdGhCeUlkKGNhdGVnb3J5SWQpO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQcml2YXRlOiBEYXRhIExvYWRpbmcgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBMb2FkIGNhdGVnb3JpZXMgZnJvbSBwcm92aWRlcnMgYW5kIGNhY2hlIHJlc3VsdHNcbiAgICAgKiBcbiAgICAgKiBPcHRpbWl6YXRpb246IFRyYWNrcyBwcm92aWRlciBvd25lcnNoaXAgdG8gYXZvaWQgdW5uZWNlc3NhcnkgQVBJIGNhbGxzXG4gICAgICogLSBGb3Igcm9vdCAocGFyZW50SWQgPSB1bmRlZmluZWQpOiBRdWVyeSBBTEwgcHJvdmlkZXJzXG4gICAgICogLSBGb3IgY2hpbGRyZW46IE9ubHkgcXVlcnkgdGhlIHByb3ZpZGVyIHRoYXQgb3ducyB0aGUgcGFyZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkQ2F0ZWdvcmllc0Zyb21Qcm92aWRlcnMocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUEFjdGl2aXR5Q2F0ZWdvcnlbXT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQcm92aWRlcnMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQodGhpcy5jYXRlZ29yeVByb3ZpZGVycyk7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzOiBBWFBBY3Rpdml0eUNhdGVnb3J5W10gPSBbXTtcblxuICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHByb3ZpZGVyKHMpIHRvIHF1ZXJ5XG4gICAgICAgICAgICBjb25zdCBwcm92aWRlckluZGljZXNUb1F1ZXJ5ID0gcGFyZW50SWRcbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0UHJvdmlkZXJJbmRleEZvckNhdGVnb3J5KHBhcmVudElkKVxuICAgICAgICAgICAgICAgIDogbnVsbDsgLy8gUm9vdDogcXVlcnkgYWxsIHByb3ZpZGVyc1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc29sdmVkUHJvdmlkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IHJlc29sdmVkUHJvdmlkZXJzW2ldO1xuXG4gICAgICAgICAgICAgICAgLy8gU2tpcCBpZiB3ZSBoYXZlIGEgc3BlY2lmaWMgcHJvdmlkZXIgaW5kZXggYW5kIHRoaXMgaXNuJ3QgaXRcbiAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXJJbmRpY2VzVG9RdWVyeSAhPT0gbnVsbCAmJiAhcHJvdmlkZXJJbmRpY2VzVG9RdWVyeS5pbmNsdWRlcyhpKSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnICYmIHAudmFsdWUgJiYgdHlwZW9mIHAudmFsdWUuZ2V0TGlzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2F0cyA9IGF3YWl0IHAudmFsdWUuZ2V0TGlzdChwYXJlbnRJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjYXRzKSAmJiBjYXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2goLi4uY2F0cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDinIUgVHJhY2sgb3duZXJzaGlwOiBUaGlzIHByb3ZpZGVyIElOREVYIG93bnMgdGhlc2UgY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdHMuZm9yRWFjaChjYXQgPT4gdGhpcy5jYXRlZ29yeU93bmVyc2hpcC5zZXQoY2F0LmlkLCBpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgb24gZXJyb3IgLSB0cnkgb3RoZXIgcHJvdmlkZXJzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBDYWNoZSByZXN1bHRzIGZvciBmYXN0IHN1YnNlcXVlbnQgYWNjZXNzXG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLnNldChwYXJlbnRJZCwgY2F0ZWdvcmllcyk7XG4gICAgICAgICAgICBjYXRlZ29yaWVzLmZvckVhY2goY2F0ID0+IHRoaXMuY2F0ZWdvcmllc0J5SWQuc2V0KGNhdC5pZCwgY2F0KSk7XG5cbiAgICAgICAgICAgIHJldHVybiBjYXRlZ29yaWVzO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmRlbGV0ZShwYXJlbnRJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHByb3ZpZGVyIGluZGV4IHRoYXQgb3ducyBhIHNwZWNpZmljIGNhdGVnb3J5XG4gICAgICogXG4gICAgICogQHJldHVybnMgQXJyYXkgd2l0aCBwcm92aWRlciBpbmRleCwgb3IgbnVsbCBpZiBvd25lcnNoaXAgdW5rbm93biAocXVlcnkgYWxsKVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0UHJvdmlkZXJJbmRleEZvckNhdGVnb3J5KGNhdGVnb3J5SWQ6IHN0cmluZyk6IG51bWJlcltdIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IG93bmVySW5kZXggPSB0aGlzLmNhdGVnb3J5T3duZXJzaGlwLmdldChjYXRlZ29yeUlkKTtcblxuICAgICAgICBpZiAob3duZXJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gW293bmVySW5kZXhdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3duZXJzaGlwIHVua25vd24gLSB3aWxsIHF1ZXJ5IGFsbCBwcm92aWRlcnMgKGZhbGxiYWNrKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIGFjdGl2aXR5IGRlZmluaXRpb25zIGZyb20gcHJvdmlkZXJzIGFuZCBjYWNoZSByZXN1bHRzXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBPbmx5IHF1ZXJpZXMgdGhlIHByb3ZpZGVyIHRoYXQgb3ducyB0aGUgY2F0ZWdvcnlcbiAgICAgKiBVc2VzIHByb3ZpZGVyIElOREVYIHRvIG1hdGNoIGNhdGVnb3J5IHByb3ZpZGVyIHdpdGggYWN0aXZpdHkgcHJvdmlkZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRBY3Rpdml0aWVzRnJvbVByb3ZpZGVycyhjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUEFjdGl2aXR5RGVmaW5pdGlvbltdPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZFByb3ZpZGVycyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZCh0aGlzLmFjdGl2aXR5UHJvdmlkZXJzKTtcbiAgICAgICAgICAgIGNvbnN0IGRlZmluaXRpb25zOiBBWFBBY3Rpdml0eURlZmluaXRpb25bXSA9IFtdO1xuXG4gICAgICAgICAgICAvLyDinIUgU21hcnQgcm91dGluZzogR2V0IHByb3ZpZGVyIElOREVYIHRoYXQgb3ducyB0aGlzIGNhdGVnb3J5XG4gICAgICAgICAgICBjb25zdCBvd25lckluZGV4ID0gdGhpcy5jYXRlZ29yeU93bmVyc2hpcC5nZXQoY2F0ZWdvcnlJZCk7XG4gICAgICAgICAgICBjb25zdCBwcm92aWRlckluZGljZXNUb1F1ZXJ5ID0gb3duZXJJbmRleCAhPT0gdW5kZWZpbmVkID8gW293bmVySW5kZXhdIDogbnVsbDtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFByb3ZpZGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSByZXNvbHZlZFByb3ZpZGVyc1tpXTtcblxuICAgICAgICAgICAgICAgIC8vIFNraXAgaWYgd2UgaGF2ZSBhIHNwZWNpZmljIHByb3ZpZGVyIGluZGV4IGFuZCB0aGlzIGlzbid0IGl0XG4gICAgICAgICAgICAgICAgaWYgKHByb3ZpZGVySW5kaWNlc1RvUXVlcnkgIT09IG51bGwgJiYgIXByb3ZpZGVySW5kaWNlc1RvUXVlcnkuaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHAuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiBwLnZhbHVlICYmIHR5cGVvZiBwLnZhbHVlLmdldExpc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZnMgPSBhd2FpdCBwLnZhbHVlLmdldExpc3QoY2F0ZWdvcnlJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZWZzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25zLnB1c2goLi4uZGVmcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgb24gZXJyb3IgLSB0cnkgb3RoZXIgcHJvdmlkZXJzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBDYWNoZSByZXN1bHRzIGZvciBmYXN0IHN1YnNlcXVlbnQgYWNjZXNzXG4gICAgICAgICAgICB0aGlzLmFjdGl2aXRpZXNCeUNhdGVnb3J5LnNldChjYXRlZ29yeUlkLCBkZWZpbml0aW9ucyk7XG4gICAgICAgICAgICBkZWZpbml0aW9ucy5mb3JFYWNoKGRlZiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRlZi5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZpdGllc0J5TmFtZS5zZXQoZGVmLm5hbWUsIGRlZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWZpbml0aW9ucztcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0FjdGl2aXRpZXNSZXF1ZXN0cy5kZWxldGUoY2F0ZWdvcnlJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHNpbmdsZSBhY3Rpdml0eSBkZWZpbml0aW9uIGZyb20gcHJvdmlkZXJzIGFuZCBjYWNoZSByZXN1bHRcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRBY3Rpdml0eUZyb21Qcm92aWRlcnMobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBBY3Rpdml0eURlZmluaXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUHJvdmlkZXJzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHRoaXMuYWN0aXZpdHlQcm92aWRlcnMpO1xuXG4gICAgICAgICAgICAvLyBUcnkgcHJvdmlkZXJzIGZpcnN0XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHAgb2YgcmVzb2x2ZWRQcm92aWRlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAocC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnICYmIHAudmFsdWUgJiYgdHlwZW9mIHAudmFsdWUuZ2V0QnlJZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcC52YWx1ZS5nZXRCeUlkKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZpdGllc0J5TmFtZS5zZXQobmFtZSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIG9uIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEZhbGxiYWNrOiBTZWFyY2ggaW4gY2FjaGVkIGFjdGl2aXR5IGRlZmluaXRpb25zXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRlZmluaXRpb25zIG9mIHRoaXMuYWN0aXZpdGllc0J5Q2F0ZWdvcnkudmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZCA9IGRlZmluaXRpb25zLmZpbmQoZGVmID0+IGRlZi5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpdml0aWVzQnlOYW1lLnNldChuYW1lLCBmb3VuZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdBY3Rpdml0eVJlcXVlc3RzLmRlbGV0ZShuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJyZWFkdGgtZmlyc3Qgc2VhcmNoIHRocm91Z2ggY2F0ZWdvcnkgaGllcmFyY2h5XG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBzZWFyY2hDYXRlZ29yeUluSGllcmFyY2h5KGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQQWN0aXZpdHlDYXRlZ29yeSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCBzZWFyY2hRdWV1ZTogKHN0cmluZyB8IHVuZGVmaW5lZClbXSA9IFt1bmRlZmluZWRdO1xuICAgICAgICBjb25zdCBzZWFyY2hlZCA9IG5ldyBTZXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgICAgIHdoaWxlIChzZWFyY2hRdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRJZCA9IHNlYXJjaFF1ZXVlLnNoaWZ0KCkhO1xuICAgICAgICAgICAgaWYgKHNlYXJjaGVkLmhhcyhwYXJlbnRJZCkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgc2VhcmNoZWQuYWRkKHBhcmVudElkKTtcblxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcmllcyhwYXJlbnRJZCk7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IGNhdGVnb3JpZXMuZmluZChjYXQgPT4gY2F0LmlkID09PSBjYXRlZ29yeUlkKTtcblxuICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDinIUgT3B0aW1pemF0aW9uOiBPbmx5IHNlYXJjaCBjaGlsZHJlbiBpZiBjaGlsZHJlbkNvdW50ID4gMFxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5LmNoaWxkcmVuQ291bnQgPiAwICYmICFzZWFyY2hlZC5oYXMoY2F0ZWdvcnkuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaFF1ZXVlLnB1c2goY2F0ZWdvcnkuaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIENhY2hlIE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBjYXRlZ29yeSBoYXMgY2hpbGRyZW4gKHVzZXMgY2FjaGVkIGNvdW50KVxuICAgICAqL1xuICAgIGNhdGVnb3J5SGFzQ2hpbGRyZW4oY2F0ZWdvcnlJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yaWVzQnlJZC5nZXQoY2F0ZWdvcnlJZCk7XG4gICAgICAgIHJldHVybiBjYXRlZ29yeSA/IGNhdGVnb3J5LmNoaWxkcmVuQ291bnQgPiAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgY2F0ZWdvcnkgaGFzIGFjdGl2aXRpZXMgKHVzZXMgY2FjaGVkIGNvdW50KVxuICAgICAqL1xuICAgIGNhdGVnb3J5SGFzQWN0aXZpdGllcyhjYXRlZ29yeUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXNCeUlkLmdldChjYXRlZ29yeUlkKTtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5ID8gKGNhdGVnb3J5Lml0ZW1zQ291bnQgPz8gMCkgPiAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgYWxsIGNhY2hlc1xuICAgICAqL1xuICAgIGNsZWFyQWxsQ2FjaGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0J5SWQuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlQYXJlbnRJZC5jbGVhcigpO1xuICAgICAgICB0aGlzLmFjdGl2aXRpZXNCeUNhdGVnb3J5LmNsZWFyKCk7XG4gICAgICAgIHRoaXMuYWN0aXZpdGllc0J5TmFtZS5jbGVhcigpO1xuICAgICAgICB0aGlzLmNhdGVnb3J5T3duZXJzaGlwLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5jbGVhcigpO1xuICAgICAgICB0aGlzLnBlbmRpbmdBY3Rpdml0aWVzUmVxdWVzdHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQWN0aXZpdHlSZXF1ZXN0cy5jbGVhcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFyIGNhdGVnb3JpZXMgY2FjaGUgb25seVxuICAgICAqL1xuICAgIGNsZWFyQ2F0ZWdvcmllc0NhY2hlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNCeUlkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeU93bmVyc2hpcC5jbGVhcigpO1xuICAgICAgICB0aGlzLnBlbmRpbmdDYXRlZ29yaWVzUmVxdWVzdHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhY3Rpdml0aWVzIGNhY2hlIG9ubHlcbiAgICAgKi9cbiAgICBjbGVhckFjdGl2aXRpZXNDYWNoZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3Rpdml0aWVzQnlDYXRlZ29yeS5jbGVhcigpO1xuICAgICAgICB0aGlzLmFjdGl2aXRpZXNCeU5hbWUuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQWN0aXZpdGllc1JlcXVlc3RzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0FjdGl2aXR5UmVxdWVzdHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cbn1cblxuIl19","import { InjectionToken } from '@angular/core';\n/**\n * Injection token for workflow engine.\n * Default implementation is AXPWorkflowLocalEngine.\n */\nexport const AXP_WORKFLOW_ENGINE = new InjectionToken('AXP_WORKFLOW_ENGINE');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2VuZ2luZS9ydW50aW1lL3dvcmtmbG93LWVuZ2luZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBc0QvQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQscUJBQXFCLENBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhQU3RhcnRXb3JrZmxvd1JlcXVlc3QsXG4gIEFYUFN0YXJ0V29ya2Zsb3dSZXNwb25zZSxcbiAgQVhQUmVzdW1lV29ya2Zsb3dSZXF1ZXN0LFxuICBBWFBSZXN1bWVXb3JrZmxvd1Jlc3BvbnNlLFxuICBBWFBHZXRXb3JrZmxvd1N0YXRlUmVxdWVzdCxcbiAgQVhQV29ya2Zsb3dJbnN0YW5jZVN0YXRlLFxufSBmcm9tICcuL3dvcmtmbG93LXJ1bnRpbWUudHlwZXMnO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3Igd29ya2Zsb3cgZW5naW5lIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dFbmdpbmUge1xuICAvKipcbiAgICogU3RhcnQgYSBuZXcgd29ya2Zsb3cgaW5zdGFuY2UuXG4gICAqIFxuICAgKiBDcmVhdGVzIGEgbmV3IHdvcmtmbG93IGluc3RhbmNlIGluIGJhY2tlbmQgYW5kIHJldHVybnMgaW5zdGFuY2UgSUQuXG4gICAqIFxuICAgKiBAcGFyYW0gcmVxdWVzdCAtIFN0YXJ0IHdvcmtmbG93IHJlcXVlc3RcbiAgICogQHJldHVybnMgUmVzcG9uc2Ugd2l0aCBpbnN0YW5jZUlkIGFuZCBpbml0aWFsIHN0YXRlXG4gICAqIFxuICAgKi9cbiAgc3RhcnQoXG4gICAgcmVxdWVzdDogQVhQU3RhcnRXb3JrZmxvd1JlcXVlc3RcbiAgKTogUHJvbWlzZTxBWFBTdGFydFdvcmtmbG93UmVzcG9uc2U+O1xuXG4gIC8qKlxuICAgKiBSZXN1bWUgYSBzdXNwZW5kZWQgd29ya2Zsb3cgaW5zdGFuY2UuXG4gICAqIFxuICAgKiBSZXN1bWVzIHdvcmtmbG93IGluc3RhbmNlIGFmdGVyIHVzZXIgaW50ZXJhY3Rpb24gKGUuZy4sIGFmdGVyIHNob3ctZGlhbG9nKS5cbiAgICogXG4gICAqIEBwYXJhbSByZXF1ZXN0IC0gUmVzdW1lIHdvcmtmbG93IHJlcXVlc3RcbiAgICogQHJldHVybnMgUmVzdW1lIHJlc3BvbnNlIHdpdGggbmV4dCBzdGVwIGFuZCB1cGRhdGVkIHN0YXRlXG4gICAqIFxuICAgKi9cbiAgcmVzdW1lKFxuICAgIHJlcXVlc3Q6IEFYUFJlc3VtZVdvcmtmbG93UmVxdWVzdFxuICApOiBQcm9taXNlPEFYUFJlc3VtZVdvcmtmbG93UmVzcG9uc2U+O1xuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCB3b3JrZmxvdyBpbnN0YW5jZSBzdGF0ZS5cbiAgICogXG4gICAqIFJldHJpZXZlcyBjdXJyZW50IHN0YXRlIG9mIGEgd29ya2Zsb3cgaW5zdGFuY2UgZnJvbSBiYWNrZW5kLlxuICAgKiBcbiAgICogQHBhcmFtIHJlcXVlc3QgLSBHZXQgc3RhdGUgcmVxdWVzdFxuICAgKiBAcmV0dXJucyBDdXJyZW50IHdvcmtmbG93IGluc3RhbmNlIHN0YXRlXG4gICAqIFxuICAgKi9cbiAgZ2V0U3RhdGUoXG4gICAgcmVxdWVzdDogQVhQR2V0V29ya2Zsb3dTdGF0ZVJlcXVlc3RcbiAgKTogUHJvbWlzZTxBWFBXb3JrZmxvd0luc3RhbmNlU3RhdGU+O1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3Igd29ya2Zsb3cgZW5naW5lLlxuICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBBWFBXb3JrZmxvd0xvY2FsRW5naW5lLlxuICovXG5leHBvcnQgY29uc3QgQVhQX1dPUktGTE9XX0VOR0lORSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBXb3JrZmxvd0VuZ2luZT4oXG4gICdBWFBfV09SS0ZMT1dfRU5HSU5FJ1xuKTtcblxuIl19","import { Injectable } from '@angular/core';\nimport { get } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Workflow Expression Scope Service\n *\n * Shared service for building expression evaluation scope from workflow data.\n * Used by both Local Engine and Mock Runtime to manage workflow data (inputs, variables, outputs).\n *\n * Responsibilities:\n * - Build expression evaluation scope from workflow state\n * - Provide context.eval() function for accessing workflow data\n * - Manage workflow data structure (inputs, variables, outputs)\n *\n * This service does NOT:\n * - Execute activities\n * - Evaluate expressions (delegates to AXPExpressionEvaluatorService)\n * - Manage workflow state (handled by runtime)\n *\n * @example\n * ```typescript\n * const scopeService = inject(WorkflowExpressionScopeService);\n *\n * // Build scope from workflow state\n * const scope = scopeService.buildScope({\n * inputs: state.input || {},\n * variables: state.variables || {},\n * outputs: activityOutputs\n * });\n *\n * // Or build from state directly\n * const scope = scopeService.buildScopeFromState(state, activityOutputs);\n * ```\n */\nexport class WorkflowExpressionScopeService {\n //#region ---- Public Methods ----\n /**\n * Build expression evaluation scope for workflow activities.\n *\n * Provides workflow-specific data (inputs, variables, outputs) and context.eval() function.\n * Other data (session, current user, etc.) are provided by expression evaluator scope providers.\n *\n * Scope includes:\n * - inputs: Workflow input values (accessible as inputs.propertyName)\n * - variables: Workflow state variables (accessible as variables.propertyName or vars.propertyName)\n * - outputs: Previous activity outputs (accessible as outputs.activityId)\n * - context.eval(path): Function to access nested properties from workflow data\n *\n * Expressions can use:\n * - {{inputs.userName}} - Direct access to workflow input\n * - {{variables.someVar}} or {{vars.someVar}} - Direct access to workflow variable\n * - {{outputs.activityId.property}} - Direct access to previous activity output\n * - {{context.eval(\"inputs.userName\")}} - Access via context.eval (supports nested paths)\n * - {{context.eval(\"variables.someVar\")}} - Access variables via context.eval\n * - {{context.eval(\"outputs.activityId.property\")}} - Access outputs via context.eval\n * - {{session.currentUser().name}} - Access current user via expression evaluator scope providers\n *\n * The context.eval() function provides a unified way to access all workflow data,\n * similar to how entity-detail-list uses context.eval() to access parent data.\n *\n * @param context - Workflow expression context containing inputs, variables, and outputs\n * @returns Expression evaluator scope with workflow data and context.eval() function\n */\n buildScope(context) {\n // Build merged workflow data object for context.eval()\n // This allows expressions like: context.eval(\"inputs.userName\") or context.eval(\"variables.count\")\n const workflowData = {\n inputs: context.inputs || {},\n variables: context.variables || {},\n vars: context.variables || {}, // Alias for convenience\n outputs: context.outputs || {},\n };\n // Build scope object with workflow-specific data and context.eval()\n // Note: AXPExpressionEvaluatorScope type expects { [namespace]: { [name]: Function } }\n // but evaluate() method actually accepts flat objects with values too\n // We'll use 'any' to allow both values and functions\n const scope = {\n // Direct access to workflow data\n inputs: workflowData.inputs,\n variables: workflowData.variables,\n vars: workflowData.vars,\n outputs: workflowData.outputs,\n // Context object with eval function (similar to entity-detail-list pattern)\n context: {\n eval: (path) => {\n // Use lodash get to access nested properties\n // Supports paths like: \"inputs.userName\", \"variables.count\", \"outputs.activityId.property\"\n return get(workflowData, path);\n },\n },\n };\n return scope;\n }\n /**\n * Build expression evaluation scope from workflow instance state.\n *\n * Convenience method that extracts data from AXPWorkflowInstanceState.\n *\n * @param state - Workflow instance state\n * @param activityOutputs - Map of activity outputs (activityId -> output)\n * @returns Expression evaluator scope with workflow data and context.eval() function\n */\n buildScopeFromState(state, activityOutputs) {\n // Convert activity outputs to record format\n const outputs = {};\n if (activityOutputs) {\n if (activityOutputs instanceof Map) {\n activityOutputs.forEach((output, activityId) => {\n outputs[activityId] = output;\n });\n }\n else {\n Object.assign(outputs, activityOutputs);\n }\n }\n return this.buildScope({\n inputs: state.input || {},\n variables: state.variables || {},\n outputs: outputs,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: WorkflowExpressionScopeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: WorkflowExpressionScopeService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: WorkflowExpressionScopeService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZXhwcmVzc2lvbi1zY29wZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2VuZ2luZS9ydW50aW1lL3dvcmtmbG93LWV4cHJlc3Npb24tc2NvcGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBb0JoQyxZQUFZO0FBRVo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUlILE1BQU0sT0FBTyw4QkFBOEI7SUFDekMsc0NBQXNDO0lBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBCRztJQUNILFVBQVUsQ0FBQyxPQUFrQztRQUMzQyx1REFBdUQ7UUFDdkQsbUdBQW1HO1FBQ25HLE1BQU0sWUFBWSxHQUFHO1lBQ25CLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFDNUIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRTtZQUNsQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUUsd0JBQXdCO1lBQ3ZELE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUU7U0FDL0IsQ0FBQztRQUVGLG9FQUFvRTtRQUNwRSx1RkFBdUY7UUFDdkYsc0VBQXNFO1FBQ3RFLHFEQUFxRDtRQUNyRCxNQUFNLEtBQUssR0FBUTtZQUNqQixpQ0FBaUM7WUFDakMsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNO1lBQzNCLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUztZQUNqQyxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDdkIsT0FBTyxFQUFFLFlBQVksQ0FBQyxPQUFPO1lBRTdCLDRFQUE0RTtZQUM1RSxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUU7b0JBQ3JCLDZDQUE2QztvQkFDN0MsMkZBQTJGO29CQUMzRixPQUFPLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7YUFDRjtTQUNGLENBQUM7UUFFRixPQUFPLEtBQW9DLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsbUJBQW1CLENBQ2pCLEtBQStCLEVBQy9CLGVBQXdEO1FBRXhELDRDQUE0QztRQUM1QyxNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFDO1FBQ3hDLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxlQUFlLFlBQVksR0FBRyxFQUFFLENBQUM7Z0JBQ25DLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQUU7b0JBQzdDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3JCLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDekIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRTtZQUNoQyxPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDOytHQTlGVSw4QkFBOEI7bUhBQTlCLDhCQUE4QixjQUY3QixNQUFNOzs0RkFFUCw4QkFBOEI7a0JBSDFDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd0luc3RhbmNlU3RhdGUgfSBmcm9tICcuL3dvcmtmbG93LXJ1bnRpbWUudHlwZXMnO1xuXG4vLyNyZWdpb24gLS0tLSAgIFR5cGVzICYgSW50ZXJmYWNlcyAgIC0tLS1cblxuLyoqXG4gKiBXb3JrZmxvdyBleHByZXNzaW9uIGV2YWx1YXRpb24gY29udGV4dC5cbiAqIENvbnRhaW5zIHdvcmtmbG93IHN0YXRlIGRhdGEgbmVlZGVkIGZvciBleHByZXNzaW9uIGV2YWx1YXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dFeHByZXNzaW9uQ29udGV4dCB7XG4gIC8qKiBXb3JrZmxvdyBpbnB1dCB2YWx1ZXMgKi9cbiAgaW5wdXRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBcbiAgLyoqIFdvcmtmbG93IHN0YXRlIHZhcmlhYmxlcyAqL1xuICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIFxuICAvKiogUHJldmlvdXMgYWN0aXZpdHkgb3V0cHV0cyAoYWN0aXZpdHlJZCAtPiBvdXRwdXQpICovXG4gIG91dHB1dHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vKipcbiAqIFdvcmtmbG93IEV4cHJlc3Npb24gU2NvcGUgU2VydmljZVxuICogXG4gKiBTaGFyZWQgc2VydmljZSBmb3IgYnVpbGRpbmcgZXhwcmVzc2lvbiBldmFsdWF0aW9uIHNjb3BlIGZyb20gd29ya2Zsb3cgZGF0YS5cbiAqIFVzZWQgYnkgYm90aCBMb2NhbCBFbmdpbmUgYW5kIE1vY2sgUnVudGltZSB0byBtYW5hZ2Ugd29ya2Zsb3cgZGF0YSAoaW5wdXRzLCB2YXJpYWJsZXMsIG91dHB1dHMpLlxuICogXG4gKiBSZXNwb25zaWJpbGl0aWVzOlxuICogLSBCdWlsZCBleHByZXNzaW9uIGV2YWx1YXRpb24gc2NvcGUgZnJvbSB3b3JrZmxvdyBzdGF0ZVxuICogLSBQcm92aWRlIGNvbnRleHQuZXZhbCgpIGZ1bmN0aW9uIGZvciBhY2Nlc3Npbmcgd29ya2Zsb3cgZGF0YVxuICogLSBNYW5hZ2Ugd29ya2Zsb3cgZGF0YSBzdHJ1Y3R1cmUgKGlucHV0cywgdmFyaWFibGVzLCBvdXRwdXRzKVxuICogXG4gKiBUaGlzIHNlcnZpY2UgZG9lcyBOT1Q6XG4gKiAtIEV4ZWN1dGUgYWN0aXZpdGllc1xuICogLSBFdmFsdWF0ZSBleHByZXNzaW9ucyAoZGVsZWdhdGVzIHRvIEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTZXJ2aWNlKVxuICogLSBNYW5hZ2Ugd29ya2Zsb3cgc3RhdGUgKGhhbmRsZWQgYnkgcnVudGltZSlcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNjb3BlU2VydmljZSA9IGluamVjdChXb3JrZmxvd0V4cHJlc3Npb25TY29wZVNlcnZpY2UpO1xuICogXG4gKiAvLyBCdWlsZCBzY29wZSBmcm9tIHdvcmtmbG93IHN0YXRlXG4gKiBjb25zdCBzY29wZSA9IHNjb3BlU2VydmljZS5idWlsZFNjb3BlKHtcbiAqICAgaW5wdXRzOiBzdGF0ZS5pbnB1dCB8fCB7fSxcbiAqICAgdmFyaWFibGVzOiBzdGF0ZS52YXJpYWJsZXMgfHwge30sXG4gKiAgIG91dHB1dHM6IGFjdGl2aXR5T3V0cHV0c1xuICogfSk7XG4gKiBcbiAqIC8vIE9yIGJ1aWxkIGZyb20gc3RhdGUgZGlyZWN0bHlcbiAqIGNvbnN0IHNjb3BlID0gc2NvcGVTZXJ2aWNlLmJ1aWxkU2NvcGVGcm9tU3RhdGUoc3RhdGUsIGFjdGl2aXR5T3V0cHV0cyk7XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dFeHByZXNzaW9uU2NvcGVTZXJ2aWNlIHtcbiAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgTWV0aG9kcyAgIC0tLS1cblxuICAvKipcbiAgICogQnVpbGQgZXhwcmVzc2lvbiBldmFsdWF0aW9uIHNjb3BlIGZvciB3b3JrZmxvdyBhY3Rpdml0aWVzLlxuICAgKiBcbiAgICogUHJvdmlkZXMgd29ya2Zsb3ctc3BlY2lmaWMgZGF0YSAoaW5wdXRzLCB2YXJpYWJsZXMsIG91dHB1dHMpIGFuZCBjb250ZXh0LmV2YWwoKSBmdW5jdGlvbi5cbiAgICogT3RoZXIgZGF0YSAoc2Vzc2lvbiwgY3VycmVudCB1c2VyLCBldGMuKSBhcmUgcHJvdmlkZWQgYnkgZXhwcmVzc2lvbiBldmFsdWF0b3Igc2NvcGUgcHJvdmlkZXJzLlxuICAgKiBcbiAgICogU2NvcGUgaW5jbHVkZXM6XG4gICAqIC0gaW5wdXRzOiBXb3JrZmxvdyBpbnB1dCB2YWx1ZXMgKGFjY2Vzc2libGUgYXMgaW5wdXRzLnByb3BlcnR5TmFtZSlcbiAgICogLSB2YXJpYWJsZXM6IFdvcmtmbG93IHN0YXRlIHZhcmlhYmxlcyAoYWNjZXNzaWJsZSBhcyB2YXJpYWJsZXMucHJvcGVydHlOYW1lIG9yIHZhcnMucHJvcGVydHlOYW1lKVxuICAgKiAtIG91dHB1dHM6IFByZXZpb3VzIGFjdGl2aXR5IG91dHB1dHMgKGFjY2Vzc2libGUgYXMgb3V0cHV0cy5hY3Rpdml0eUlkKVxuICAgKiAtIGNvbnRleHQuZXZhbChwYXRoKTogRnVuY3Rpb24gdG8gYWNjZXNzIG5lc3RlZCBwcm9wZXJ0aWVzIGZyb20gd29ya2Zsb3cgZGF0YVxuICAgKiBcbiAgICogRXhwcmVzc2lvbnMgY2FuIHVzZTpcbiAgICogLSB7e2lucHV0cy51c2VyTmFtZX19IC0gRGlyZWN0IGFjY2VzcyB0byB3b3JrZmxvdyBpbnB1dFxuICAgKiAtIHt7dmFyaWFibGVzLnNvbWVWYXJ9fSBvciB7e3ZhcnMuc29tZVZhcn19IC0gRGlyZWN0IGFjY2VzcyB0byB3b3JrZmxvdyB2YXJpYWJsZVxuICAgKiAtIHt7b3V0cHV0cy5hY3Rpdml0eUlkLnByb3BlcnR5fX0gLSBEaXJlY3QgYWNjZXNzIHRvIHByZXZpb3VzIGFjdGl2aXR5IG91dHB1dFxuICAgKiAtIHt7Y29udGV4dC5ldmFsKFwiaW5wdXRzLnVzZXJOYW1lXCIpfX0gLSBBY2Nlc3MgdmlhIGNvbnRleHQuZXZhbCAoc3VwcG9ydHMgbmVzdGVkIHBhdGhzKVxuICAgKiAtIHt7Y29udGV4dC5ldmFsKFwidmFyaWFibGVzLnNvbWVWYXJcIil9fSAtIEFjY2VzcyB2YXJpYWJsZXMgdmlhIGNvbnRleHQuZXZhbFxuICAgKiAtIHt7Y29udGV4dC5ldmFsKFwib3V0cHV0cy5hY3Rpdml0eUlkLnByb3BlcnR5XCIpfX0gLSBBY2Nlc3Mgb3V0cHV0cyB2aWEgY29udGV4dC5ldmFsXG4gICAqIC0ge3tzZXNzaW9uLmN1cnJlbnRVc2VyKCkubmFtZX19IC0gQWNjZXNzIGN1cnJlbnQgdXNlciB2aWEgZXhwcmVzc2lvbiBldmFsdWF0b3Igc2NvcGUgcHJvdmlkZXJzXG4gICAqIFxuICAgKiBUaGUgY29udGV4dC5ldmFsKCkgZnVuY3Rpb24gcHJvdmlkZXMgYSB1bmlmaWVkIHdheSB0byBhY2Nlc3MgYWxsIHdvcmtmbG93IGRhdGEsXG4gICAqIHNpbWlsYXIgdG8gaG93IGVudGl0eS1kZXRhaWwtbGlzdCB1c2VzIGNvbnRleHQuZXZhbCgpIHRvIGFjY2VzcyBwYXJlbnQgZGF0YS5cbiAgICogXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gV29ya2Zsb3cgZXhwcmVzc2lvbiBjb250ZXh0IGNvbnRhaW5pbmcgaW5wdXRzLCB2YXJpYWJsZXMsIGFuZCBvdXRwdXRzXG4gICAqIEByZXR1cm5zIEV4cHJlc3Npb24gZXZhbHVhdG9yIHNjb3BlIHdpdGggd29ya2Zsb3cgZGF0YSBhbmQgY29udGV4dC5ldmFsKCkgZnVuY3Rpb25cbiAgICovXG4gIGJ1aWxkU2NvcGUoY29udGV4dDogV29ya2Zsb3dFeHByZXNzaW9uQ29udGV4dCk6IEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZSB7XG4gICAgLy8gQnVpbGQgbWVyZ2VkIHdvcmtmbG93IGRhdGEgb2JqZWN0IGZvciBjb250ZXh0LmV2YWwoKVxuICAgIC8vIFRoaXMgYWxsb3dzIGV4cHJlc3Npb25zIGxpa2U6IGNvbnRleHQuZXZhbChcImlucHV0cy51c2VyTmFtZVwiKSBvciBjb250ZXh0LmV2YWwoXCJ2YXJpYWJsZXMuY291bnRcIilcbiAgICBjb25zdCB3b3JrZmxvd0RhdGEgPSB7XG4gICAgICBpbnB1dHM6IGNvbnRleHQuaW5wdXRzIHx8IHt9LFxuICAgICAgdmFyaWFibGVzOiBjb250ZXh0LnZhcmlhYmxlcyB8fCB7fSxcbiAgICAgIHZhcnM6IGNvbnRleHQudmFyaWFibGVzIHx8IHt9LCAvLyBBbGlhcyBmb3IgY29udmVuaWVuY2VcbiAgICAgIG91dHB1dHM6IGNvbnRleHQub3V0cHV0cyB8fCB7fSxcbiAgICB9O1xuXG4gICAgLy8gQnVpbGQgc2NvcGUgb2JqZWN0IHdpdGggd29ya2Zsb3ctc3BlY2lmaWMgZGF0YSBhbmQgY29udGV4dC5ldmFsKClcbiAgICAvLyBOb3RlOiBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUgdHlwZSBleHBlY3RzIHsgW25hbWVzcGFjZV06IHsgW25hbWVdOiBGdW5jdGlvbiB9IH1cbiAgICAvLyBidXQgZXZhbHVhdGUoKSBtZXRob2QgYWN0dWFsbHkgYWNjZXB0cyBmbGF0IG9iamVjdHMgd2l0aCB2YWx1ZXMgdG9vXG4gICAgLy8gV2UnbGwgdXNlICdhbnknIHRvIGFsbG93IGJvdGggdmFsdWVzIGFuZCBmdW5jdGlvbnNcbiAgICBjb25zdCBzY29wZTogYW55ID0ge1xuICAgICAgLy8gRGlyZWN0IGFjY2VzcyB0byB3b3JrZmxvdyBkYXRhXG4gICAgICBpbnB1dHM6IHdvcmtmbG93RGF0YS5pbnB1dHMsXG4gICAgICB2YXJpYWJsZXM6IHdvcmtmbG93RGF0YS52YXJpYWJsZXMsXG4gICAgICB2YXJzOiB3b3JrZmxvd0RhdGEudmFycyxcbiAgICAgIG91dHB1dHM6IHdvcmtmbG93RGF0YS5vdXRwdXRzLFxuICAgICAgXG4gICAgICAvLyBDb250ZXh0IG9iamVjdCB3aXRoIGV2YWwgZnVuY3Rpb24gKHNpbWlsYXIgdG8gZW50aXR5LWRldGFpbC1saXN0IHBhdHRlcm4pXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIGV2YWw6IChwYXRoOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAvLyBVc2UgbG9kYXNoIGdldCB0byBhY2Nlc3MgbmVzdGVkIHByb3BlcnRpZXNcbiAgICAgICAgICAvLyBTdXBwb3J0cyBwYXRocyBsaWtlOiBcImlucHV0cy51c2VyTmFtZVwiLCBcInZhcmlhYmxlcy5jb3VudFwiLCBcIm91dHB1dHMuYWN0aXZpdHlJZC5wcm9wZXJ0eVwiXG4gICAgICAgICAgcmV0dXJuIGdldCh3b3JrZmxvd0RhdGEsIHBhdGgpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHNjb3BlIGFzIEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBleHByZXNzaW9uIGV2YWx1YXRpb24gc2NvcGUgZnJvbSB3b3JrZmxvdyBpbnN0YW5jZSBzdGF0ZS5cbiAgICogXG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGV4dHJhY3RzIGRhdGEgZnJvbSBBWFBXb3JrZmxvd0luc3RhbmNlU3RhdGUuXG4gICAqIFxuICAgKiBAcGFyYW0gc3RhdGUgLSBXb3JrZmxvdyBpbnN0YW5jZSBzdGF0ZVxuICAgKiBAcGFyYW0gYWN0aXZpdHlPdXRwdXRzIC0gTWFwIG9mIGFjdGl2aXR5IG91dHB1dHMgKGFjdGl2aXR5SWQgLT4gb3V0cHV0KVxuICAgKiBAcmV0dXJucyBFeHByZXNzaW9uIGV2YWx1YXRvciBzY29wZSB3aXRoIHdvcmtmbG93IGRhdGEgYW5kIGNvbnRleHQuZXZhbCgpIGZ1bmN0aW9uXG4gICAqL1xuICBidWlsZFNjb3BlRnJvbVN0YXRlKFxuICAgIHN0YXRlOiBBWFBXb3JrZmxvd0luc3RhbmNlU3RhdGUsXG4gICAgYWN0aXZpdHlPdXRwdXRzPzogTWFwPHN0cmluZywgYW55PiB8IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlIHtcbiAgICAvLyBDb252ZXJ0IGFjdGl2aXR5IG91dHB1dHMgdG8gcmVjb3JkIGZvcm1hdFxuICAgIGNvbnN0IG91dHB1dHM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBpZiAoYWN0aXZpdHlPdXRwdXRzKSB7XG4gICAgICBpZiAoYWN0aXZpdHlPdXRwdXRzIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgIGFjdGl2aXR5T3V0cHV0cy5mb3JFYWNoKChvdXRwdXQsIGFjdGl2aXR5SWQpID0+IHtcbiAgICAgICAgICBvdXRwdXRzW2FjdGl2aXR5SWRdID0gb3V0cHV0O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24ob3V0cHV0cywgYWN0aXZpdHlPdXRwdXRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5idWlsZFNjb3BlKHtcbiAgICAgIGlucHV0czogc3RhdGUuaW5wdXQgfHwge30sXG4gICAgICB2YXJpYWJsZXM6IHN0YXRlLnZhcmlhYmxlcyB8fCB7fSxcbiAgICAgIG91dHB1dHM6IG91dHB1dHMsXG4gICAgfSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cblxuIl19","import { Injectable, inject } from '@angular/core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport { WorkflowExpressionScopeService } from './workflow-expression-scope.service';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Activity Executor Service\n *\n * Service for executing workflow activities via CommandBus.\n * Automatically evaluates expressions in activity inputs before execution.\n *\n * @example\n * ```typescript\n * const executor = inject(ActivityExecutor);\n *\n * // Execute activity with task and workflow state (expressions will be evaluated)\n * const result = await executor.execute(task, workflowState, activityOutputs);\n * ```\n */\nexport class ActivityExecutor {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.commandService = inject(AXPCommandService);\n this.expressionEvaluator = inject(AXPExpressionEvaluatorService);\n this.expressionScopeService = inject(WorkflowExpressionScopeService);\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Execute a workflow activity with expression evaluation.\n *\n * Evaluates expressions in activity inputs using workflow state,\n * then executes the activity via CommandBus.\n *\n * @param task - Workflow task containing activity information\n * @param workflowState - Current workflow instance state (for expression evaluation)\n * @param activityOutputs - Map of previous activity outputs (for expression evaluation)\n * @returns Execution result with output and outcome\n */\n async execute(task, workflowState, activityOutputs) {\n try {\n console.log('[ActivityExecutor] 🔍 Evaluating inputs:', task.input);\n const activityName = task.activityType;\n // Evaluate inputs if workflow state is provided\n let evaluatedInputs = task.input || {};\n if (workflowState) {\n // Build expression scope from workflow state\n const scope = this.expressionScopeService.buildScopeFromState(workflowState, activityOutputs);\n // Evaluate all inputs recursively (handles nested objects and arrays)\n evaluatedInputs = await this.expressionEvaluator.evaluate(task.input || {}, scope);\n console.log('[ActivityExecutor] 🔍 Evaluated inputs:', evaluatedInputs);\n }\n // Check if command exists\n const commandExists = this.commandService.exists(activityName);\n if (!commandExists) {\n console.warn(`[ActivityExecutor] ⚠️ Activity '${activityName}' is not registered as Command. ` +\n `Skipping execution.`);\n return {\n output: null,\n outcome: 'Done'\n };\n }\n // Flatten properties if nested (workflow-studio format)\n let commandInput = evaluatedInputs;\n if (commandInput['properties'] && typeof commandInput['properties'] === 'object') {\n // Flatten: {properties: {text: \"...\"}} -> {text: \"...\"}\n commandInput = { ...commandInput['properties'] };\n }\n // Execute activity via CommandBus\n // Activities registered as AXPCommand return {output, outcomes}\n const result = await this.commandService.execute(activityName, commandInput);\n if (!result) {\n return {\n output: null,\n outcome: 'Failed',\n };\n }\n if (!result.success) {\n return {\n output: {\n error: result.message?.text,\n },\n outcome: 'Failed',\n };\n }\n const commandResult = result.data;\n const outcomes = commandResult?.outcomes ?? {};\n // Determine outcome from command results\n // Default to 'Done' if no outcomes specified\n let outcome = 'Done';\n if (Object.keys(outcomes).length > 0) {\n outcome = outcomes['Done'] ? 'Done' : Object.keys(outcomes)[0] || 'Done';\n }\n return {\n output: commandResult?.output ?? null,\n outcome,\n };\n }\n catch (error) {\n console.error(`[ActivityExecutor] ❌ Error evaluating expressions or executing activity:`, error);\n return {\n output: { error: error.message || 'Unknown error' },\n outcome: 'Failed'\n };\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: ActivityExecutor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: ActivityExecutor, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: ActivityExecutor, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktZXhlY3V0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi9lbmdpbmUvcnVudGltZS9hY3Rpdml0eS1leGVjdXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQW1CckYsWUFBWTtBQUVaOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFJSCxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBSUUsK0NBQStDO1FBRTlCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0Msd0JBQW1CLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDNUQsMkJBQXNCLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7S0EwR2xGO0lBeEdDLFlBQVk7SUFFWixzQ0FBc0M7SUFFdEM7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQ1gsSUFBcUIsRUFDckIsYUFBd0MsRUFDeEMsZUFBd0Q7UUFHeEQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUV2QyxnREFBZ0Q7WUFDaEQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDdkMsSUFBSSxhQUFh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QU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUENvbW1hbmRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUFdvcmtmbG93VGFzaywgQVhQV29ya2Zsb3dJbnN0YW5jZVN0YXRlIH0gZnJvbSAnLi93b3JrZmxvdy1ydW50aW1lLnR5cGVzJztcbmltcG9ydCB7IFdvcmtmbG93RXhwcmVzc2lvblNjb3BlU2VydmljZSB9IGZyb20gJy4vd29ya2Zsb3ctZXhwcmVzc2lvbi1zY29wZS5zZXJ2aWNlJztcblxuLy8jcmVnaW9uIC0tLS0gICBUeXBlcyAmIEludGVyZmFjZXMgICAtLS0tXG5cbi8qKlxuICogUmVzdWx0IG9mIGV4ZWN1dGluZyBhIHdvcmtmbG93IGFjdGl2aXR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5RXhlY3V0aW9uUmVzdWx0IHtcbiAgLyoqXG4gICAqIEFjdGl2aXR5IGV4ZWN1dGlvbiBvdXRwdXQuXG4gICAqL1xuICBvdXRwdXQ6IGFueTtcblxuICAvKipcbiAgICogQWN0aXZpdHkgZXhlY3V0aW9uIG91dGNvbWUgKGUuZy4sICdEb25lJywgJ0NvbmZpcm1lZCcsICdDYW5jZWxsZWQnLCAnRmFpbGVkJykuXG4gICAqL1xuICBvdXRjb21lOiBzdHJpbmc7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vKipcbiAqIEFjdGl2aXR5IEV4ZWN1dG9yIFNlcnZpY2VcbiAqIFxuICogU2VydmljZSBmb3IgZXhlY3V0aW5nIHdvcmtmbG93IGFjdGl2aXRpZXMgdmlhIENvbW1hbmRCdXMuXG4gKiBBdXRvbWF0aWNhbGx5IGV2YWx1YXRlcyBleHByZXNzaW9ucyBpbiBhY3Rpdml0eSBpbnB1dHMgYmVmb3JlIGV4ZWN1dGlvbi5cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGV4ZWN1dG9yID0gaW5qZWN0KEFjdGl2aXR5RXhlY3V0b3IpO1xuICogXG4gKiAvLyBFeGVjdXRlIGFjdGl2aXR5IHdpdGggdGFzayBhbmQgd29ya2Zsb3cgc3RhdGUgKGV4cHJlc3Npb25zIHdpbGwgYmUgZXZhbHVhdGVkKVxuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY3V0b3IuZXhlY3V0ZSh0YXNrLCB3b3JrZmxvd1N0YXRlLCBhY3Rpdml0eU91dHB1dHMpO1xuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5RXhlY3V0b3Ige1xuICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbWFuZFNlcnZpY2UgPSBpbmplY3QoQVhQQ29tbWFuZFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4cHJlc3Npb25FdmFsdWF0b3IgPSBpbmplY3QoQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4cHJlc3Npb25TY29wZVNlcnZpY2UgPSBpbmplY3QoV29ya2Zsb3dFeHByZXNzaW9uU2NvcGVTZXJ2aWNlKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgd29ya2Zsb3cgYWN0aXZpdHkgd2l0aCBleHByZXNzaW9uIGV2YWx1YXRpb24uXG4gICAqIFxuICAgKiBFdmFsdWF0ZXMgZXhwcmVzc2lvbnMgaW4gYWN0aXZpdHkgaW5wdXRzIHVzaW5nIHdvcmtmbG93IHN0YXRlLFxuICAgKiB0aGVuIGV4ZWN1dGVzIHRoZSBhY3Rpdml0eSB2aWEgQ29tbWFuZEJ1cy5cbiAgICogXG4gICAqIEBwYXJhbSB0YXNrIC0gV29ya2Zsb3cgdGFzayBjb250YWluaW5nIGFjdGl2aXR5IGluZm9ybWF0aW9uXG4gICAqIEBwYXJhbSB3b3JrZmxvd1N0YXRlIC0gQ3VycmVudCB3b3JrZmxvdyBpbnN0YW5jZSBzdGF0ZSAoZm9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbilcbiAgICogQHBhcmFtIGFjdGl2aXR5T3V0cHV0cyAtIE1hcCBvZiBwcmV2aW91cyBhY3Rpdml0eSBvdXRwdXRzIChmb3IgZXhwcmVzc2lvbiBldmFsdWF0aW9uKVxuICAgKiBAcmV0dXJucyBFeGVjdXRpb24gcmVzdWx0IHdpdGggb3V0cHV0IGFuZCBvdXRjb21lXG4gICAqL1xuICBhc3luYyBleGVjdXRlKFxuICAgIHRhc2s6IEFYUFdvcmtmbG93VGFzayxcbiAgICB3b3JrZmxvd1N0YXRlPzogQVhQV29ya2Zsb3dJbnN0YW5jZVN0YXRlLFxuICAgIGFjdGl2aXR5T3V0cHV0cz86IE1hcDxzdHJpbmcsIGFueT4gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICk6IFByb21pc2U8QWN0aXZpdHlFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICBcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5sb2coJ1tBY3Rpdml0eUV4ZWN1dG9yXSDwn5SNIEV2YWx1YXRpbmcgaW5wdXRzOicsIHRhc2suaW5wdXQpO1xuICAgICAgY29uc3QgYWN0aXZpdHlOYW1lID0gdGFzay5hY3Rpdml0eVR5cGU7XG5cbiAgICAgIC8vIEV2YWx1YXRlIGlucHV0cyBpZiB3b3JrZmxvdyBzdGF0ZSBpcyBwcm92aWRlZFxuICAgICAgbGV0IGV2YWx1YXRlZElucHV0cyA9IHRhc2suaW5wdXQgfHwge307XG4gICAgICBpZiAod29ya2Zsb3dTdGF0ZSkge1xuICAgICAgICAvLyBCdWlsZCBleHByZXNzaW9uIHNjb3BlIGZyb20gd29ya2Zsb3cgc3RhdGVcbiAgICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmV4cHJlc3Npb25TY29wZVNlcnZpY2UuYnVpbGRTY29wZUZyb21TdGF0ZSh3b3JrZmxvd1N0YXRlLCBhY3Rpdml0eU91dHB1dHMpO1xuICAgICAgICBcbiAgICAgICAgLy8gRXZhbHVhdGUgYWxsIGlucHV0cyByZWN1cnNpdmVseSAoaGFuZGxlcyBuZXN0ZWQgb2JqZWN0cyBhbmQgYXJyYXlzKVxuICAgICAgICBldmFsdWF0ZWRJbnB1dHMgPSBhd2FpdCB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuZXZhbHVhdGUodGFzay5pbnB1dCB8fCB7fSwgc2NvcGUpO1xuICAgICAgICBjb25zb2xlLmxvZygnW0FjdGl2aXR5RXhlY3V0b3JdIPCflI0gRXZhbHVhdGVkIGlucHV0czonLCBldmFsdWF0ZWRJbnB1dHMpO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBjb21tYW5kIGV4aXN0c1xuICAgICAgY29uc3QgY29tbWFuZEV4aXN0cyA9IHRoaXMuY29tbWFuZFNlcnZpY2UuZXhpc3RzKGFjdGl2aXR5TmFtZSk7XG5cbiAgICAgIGlmICghY29tbWFuZEV4aXN0cykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFtBY3Rpdml0eUV4ZWN1dG9yXSDimqDvuI8gQWN0aXZpdHkgJyR7YWN0aXZpdHlOYW1lfScgaXMgbm90IHJlZ2lzdGVyZWQgYXMgQ29tbWFuZC4gYCArXG4gICAgICAgICAgYFNraXBwaW5nIGV4ZWN1dGlvbi5gXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgb3V0cHV0OiBudWxsLFxuICAgICAgICAgIG91dGNvbWU6ICdEb25lJ1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBGbGF0dGVuIHByb3BlcnRpZXMgaWYgbmVzdGVkICh3b3JrZmxvdy1zdHVkaW8gZm9ybWF0KVxuICAgICAgbGV0IGNvbW1hbmRJbnB1dCA9IGV2YWx1YXRlZElucHV0cztcbiAgICAgIGlmIChjb21tYW5kSW5wdXRbJ3Byb3BlcnRpZXMnXSAmJiB0eXBlb2YgY29tbWFuZElucHV0Wydwcm9wZXJ0aWVzJ10gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIEZsYXR0ZW46IHtwcm9wZXJ0aWVzOiB7dGV4dDogXCIuLi5cIn19IC0+IHt0ZXh0OiBcIi4uLlwifVxuICAgICAgICBjb21tYW5kSW5wdXQgPSB7IC4uLmNvbW1hbmRJbnB1dFsncHJvcGVydGllcyddIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEV4ZWN1dGUgYWN0aXZpdHkgdmlhIENvbW1hbmRCdXNcbiAgICAgIC8vIEFjdGl2aXRpZXMgcmVnaXN0ZXJlZCBhcyBBWFBDb21tYW5kIHJldHVybiB7b3V0cHV0LCBvdXRjb21lc31cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29tbWFuZFNlcnZpY2UuZXhlY3V0ZTxSZWNvcmQ8c3RyaW5nLCBhbnk+LCB7XG4gICAgICAgIG91dHB1dDogYW55O1xuICAgICAgICBvdXRjb21lczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICAgIH0+KGFjdGl2aXR5TmFtZSwgY29tbWFuZElucHV0KTtcbiAgICAgIFxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvdXRwdXQ6IG51bGwsXG4gICAgICAgICAgb3V0Y29tZTogJ0ZhaWxlZCcsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAgIGVycm9yOiByZXN1bHQubWVzc2FnZT8udGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91dGNvbWU6ICdGYWlsZWQnLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb21tYW5kUmVzdWx0ID0gcmVzdWx0LmRhdGE7XG4gICAgICBjb25zdCBvdXRjb21lcyA9IGNvbW1hbmRSZXN1bHQ/Lm91dGNvbWVzID8/IHt9O1xuXG4gICAgICAvLyBEZXRlcm1pbmUgb3V0Y29tZSBmcm9tIGNvbW1hbmQgcmVzdWx0c1xuICAgICAgLy8gRGVmYXVsdCB0byAnRG9uZScgaWYgbm8gb3V0Y29tZXMgc3BlY2lmaWVkXG4gICAgICBsZXQgb3V0Y29tZSA9ICdEb25lJztcbiAgICAgIGlmIChPYmplY3Qua2V5cyhvdXRjb21lcykubGVuZ3RoID4gMCkge1xuICAgICAgICBvdXRjb21lID0gb3V0Y29tZXNbJ0RvbmUnXSA/ICdEb25lJyA6IE9iamVjdC5rZXlzKG91dGNvbWVzKVswXSB8fCAnRG9uZSc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG91dHB1dDogY29tbWFuZFJlc3VsdD8ub3V0cHV0ID8/IG51bGwsXG4gICAgICAgIG91dGNvbWUsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtBY3Rpdml0eUV4ZWN1dG9yXSDinYwgRXJyb3IgZXZhbHVhdGluZyBleHByZXNzaW9ucyBvciBleGVjdXRpbmcgYWN0aXZpdHk6YCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0cHV0OiB7IGVycm9yOiBlcnJvci5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJyB9LFxuICAgICAgICBvdXRjb21lOiAnRmFpbGVkJ1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cblxuIl19","import { Injectable, inject } from '@angular/core';\nimport { AXP_WORKFLOW_ENGINE } from './workflow-engine';\nimport { ActivityExecutor } from './activity-executor.service';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Workflow Manager - Facade for workflow lifecycle orchestration.\n *\n * This service is the ONLY interface the frontend uses to interact with workflows.\n * It follows Clean Architecture principles and does NOT contain execution or business logic.\n *\n * Responsibilities:\n * - Orchestrate workflow lifecycle (start, execute, complete, resume)\n * - Delegate execution to ActivityExecutor\n * - Cache workflow state in memory\n * - Expose a stable API for UI\n *\n * Rules:\n * - No HTTP calls (delegates to AXPWorkflowEngine)\n * - No CommandBus / Command execution (delegates to ActivityExecutor)\n * - No workflow branching logic (backend decides)\n * - No business validation (backend validates)\n * - No backend assumptions (uses abstract runtime service)\n */\nexport class AXPWorkflowManager {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.workflowEngine = inject(AXP_WORKFLOW_ENGINE);\n this.activityExecutor = inject(ActivityExecutor);\n //#endregion\n //#region ---- State Cache ----\n /**\n * Cache workflow states in memory for quick access.\n * Key: instanceId\n * Value: AXPWorkflowInstanceState\n */\n this.stateCache = new Map();\n /**\n * Cache TTL in milliseconds (5 minutes).\n */\n this.CACHE_TTL = 5 * 60 * 1000;\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Start a new workflow instance.\n *\n * Creates a new workflow instance in backend and returns instance ID.\n * Backend decides what to do: returns pendingTask or indicates completion.\n *\n * @param workflowId - Workflow ID to start\n * @param input - Initial input data (optional)\n * @returns Start result with instanceId, state, and nextTask\n *\n * @example\n * ```typescript\n * const result = await workflowManager.start('my-workflow', { userId: '123' });\n *\n * if (result.success && result.nextTask) {\n * // Execute task if frontend\n * if (result.nextTask.executionMode === 'frontend') {\n * const execResult = await workflowManager.execute(result.nextTask);\n * await workflowManager.complete(result.instanceId!, result.nextTask, execResult.outcome, execResult.output);\n * }\n * }\n * ```\n */\n async start(workflowId, input = {}) {\n try {\n const response = await this.workflowEngine.start({\n workflowId,\n input\n });\n // Cache state (normalize Date)\n const startNormalizedState = { ...response.state };\n if (startNormalizedState.lastUpdated && !(startNormalizedState.lastUpdated instanceof Date)) {\n startNormalizedState.lastUpdated = new Date(startNormalizedState.lastUpdated);\n }\n this.stateCache.set(response.instanceId, startNormalizedState);\n return {\n success: true,\n instanceId: response.instanceId,\n state: startNormalizedState,\n nextTask: response.pendingTask || null,\n output: startNormalizedState.output\n };\n }\n catch (error) {\n console.error('[AXPWorkflowManager] ❌ Error starting workflow:', error);\n return {\n success: false,\n error: error.message || 'Failed to start workflow'\n };\n }\n }\n /**\n * Execute a frontend task.\n *\n * Delegates to ActivityExecutor for actual execution.\n * Only executes tasks with executionMode 'frontend' or 'both'.\n *\n * Provides workflow state to executor for expression evaluation.\n *\n * @param task - Task to execute\n * @returns Execution result with output and outcome\n *\n * @throws Error if task is not a frontend task\n */\n async execute(task) {\n // Validate execution mode\n if (task.executionMode !== 'frontend' && task.executionMode !== 'both') {\n console.error(`[AXPWorkflowManager] ❌ Invalid execution mode: ${task.executionMode}`);\n throw new Error(`Task '${task.activityId}' is not a frontend task. ` +\n `Execution mode: ${task.executionMode}. Backend tasks are handled automatically.`);\n }\n // Find workflow state from cache by matching currentStepId with task.activityId\n // This is needed for expression evaluation\n let workflowState;\n for (const [instanceId, state] of this.stateCache.entries()) {\n if (state.currentStepId === task.activityId) {\n workflowState = state;\n break;\n }\n }\n // If not found in cache, try to get from backend\n if (!workflowState) {\n console.warn(`[AXPWorkflowManager] ⚠️ Workflow state not found in cache for task ${task.activityId}. Expression evaluation may not work correctly.`);\n }\n // TODO: Get activity outputs from workflow state\n // For now, pass undefined - executor will build scope from state\n return this.activityExecutor.execute(task, workflowState, undefined);\n }\n /**\n * Complete a task and get next task from backend.\n *\n * Sends task result to backend API.\n * Backend decides: next task, fail, or complete workflow.\n *\n * @param instanceId - Workflow instance ID\n * @param task - Completed task\n * @param outcome - Task outcome (e.g., 'Done', 'Confirmed', 'Cancelled')\n * @param output - Task output/result (optional)\n * @returns Complete result with next task (if any)\n */\n async complete(instanceId, task, outcome, output) {\n try {\n // Send result to backend - backend decides next step\n const response = await this.workflowEngine.resume({\n instanceId,\n stepId: task.activityId,\n taskToken: task.taskToken,\n outcome,\n userInput: output\n });\n // Update cache\n let completeNormalizedState = response.state;\n if (response.state) {\n // Normalize lastUpdated to Date (for cache safety)\n completeNormalizedState = { ...response.state };\n if (completeNormalizedState.lastUpdated && !(completeNormalizedState.lastUpdated instanceof Date)) {\n completeNormalizedState.lastUpdated = new Date(completeNormalizedState.lastUpdated);\n }\n this.stateCache.set(instanceId, completeNormalizedState);\n }\n return {\n success: true,\n instanceId,\n state: completeNormalizedState,\n nextTask: response.nextTask || null,\n output: response.output\n };\n }\n catch (error) {\n console.error('[AXPWorkflowManager] ❌ Error completing task:', error);\n return {\n success: false,\n instanceId,\n error: error.message || 'Failed to complete task'\n };\n }\n }\n /**\n * Resume a suspended workflow (e.g., after user interaction).\n *\n * Backend determines nextStep based on outcome and outcomeConnections.\n * Client only provides instanceId, stepId, outcome, and optional userInput.\n *\n * @param instanceId - Workflow instance ID\n * @param stepId - Step ID that was waiting for user input\n * @param outcome - User action outcome (e.g., 'Confirmed', 'Cancelled', 'Submitted')\n * @param userInput - Optional user input data\n * @param taskToken - Secure task token (required for secure resumption)\n * @returns Resume result with next task (if any)\n */\n async resume(instanceId, stepId, outcome, userInput, taskToken) {\n try {\n // Ensure taskToken is provided for secure resumption\n if (!taskToken) {\n throw new Error('Missing taskToken for resume operation');\n }\n // Backend handles everything: checks outcomeConnections and determines nextStep\n const response = await this.workflowEngine.resume({\n instanceId,\n stepId,\n taskToken,\n outcome,\n userInput\n });\n // Update cache with state from backend\n if (response.state) {\n // Normalize lastUpdated to Date (for cache safety)\n const normalizedState = { ...response.state };\n if (normalizedState.lastUpdated && !(normalizedState.lastUpdated instanceof Date)) {\n normalizedState.lastUpdated = new Date(normalizedState.lastUpdated);\n }\n this.stateCache.set(instanceId, normalizedState);\n }\n // Normalize state Date for return\n const normalizedState = response.state ? { ...response.state } : undefined;\n if (normalizedState && normalizedState.lastUpdated && !(normalizedState.lastUpdated instanceof Date)) {\n normalizedState.lastUpdated = new Date(normalizedState.lastUpdated);\n }\n return {\n success: true,\n instanceId,\n state: normalizedState || response.state,\n nextTask: response.nextTask || null, // Backend determines this from outcomeConnections\n output: response.output\n };\n }\n catch (error) {\n console.error('[AXPWorkflowManager] ❌ Error resuming workflow:', error);\n return {\n success: false,\n instanceId,\n error: error.message || 'Failed to resume workflow'\n };\n }\n }\n /**\n * Get workflow instance state.\n *\n * Retrieves state from cache (if valid) or from backend.\n *\n * @param instanceId - Workflow instance ID\n * @returns Workflow instance state or null if not found\n */\n async getState(instanceId) {\n // Check cache first\n const cached = this.stateCache.get(instanceId);\n if (cached) {\n // Normalize lastUpdated to Date (for cache safety)\n const normalizedCached = { ...cached };\n if (normalizedCached.lastUpdated && !(normalizedCached.lastUpdated instanceof Date)) {\n normalizedCached.lastUpdated = new Date(normalizedCached.lastUpdated);\n }\n // Validate cache age\n const cacheAge = Date.now() - normalizedCached.lastUpdated.getTime();\n if (cacheAge < this.CACHE_TTL) {\n return normalizedCached;\n }\n }\n // Fetch from backend\n try {\n const state = await this.workflowEngine.getState({\n instanceId\n });\n // Normalize lastUpdated to Date (for cache safety)\n const normalizedState = { ...state };\n if (normalizedState.lastUpdated && !(normalizedState.lastUpdated instanceof Date)) {\n normalizedState.lastUpdated = new Date(normalizedState.lastUpdated);\n }\n // Update cache\n this.stateCache.set(instanceId, normalizedState);\n return normalizedState;\n }\n catch (error) {\n console.error('[AXPWorkflowManager] ❌ Error getting workflow state:', error);\n return null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowManager, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowManager, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2VuZ2luZS9ydW50aW1lL3dvcmtmbG93LW1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQXFCLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLM0UsT0FBTyxFQUFFLGdCQUFnQixFQUEyQixNQUFNLDZCQUE2QixDQUFDOztBQTZHeEYsWUFBWTtBQUVaOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFJSCxNQUFNLE9BQU8sa0JBQWtCO0lBSC9CO1FBSUUsK0NBQStDO1FBRTlCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDN0MscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0QsWUFBWTtRQUVaLG1DQUFtQztRQUVuQzs7OztXQUlHO1FBQ0ssZUFBVSxHQUFHLElBQUksR0FBRyxFQUFvQyxDQUFDO1FBRWpFOztXQUVHO1FBQ2MsY0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0tBcVI1QztJQW5SQyxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bc0JHO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FDVCxVQUFrQixFQUNsQixRQUE2QixFQUFFO1FBRS9CLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7Z0JBQy9DLFVBQVU7Z0JBQ1YsS0FBSzthQUNOLENBQUMsQ0FBQztZQUVILCtCQUErQjtZQUMvQixNQUFNLG9CQUFvQixHQUFHLEVB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QUMvQyxVQUFVO2FBQ1gsQ0FBQyxDQUFDO1lBRUgsbURBQW1EO1lBQ25ELE1BQU0sZUFBZSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxJQUFJLGVBQWUsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbEYsZUFBZSxDQUFDLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEUsQ0FBQztZQUVELGVBQWU7WUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFFakQsT0FBTyxlQUFlLENBQUM7UUFDekIsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxzREFBc0QsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3RSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDOytHQXRTVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dFbmdpbmUsIEFYUF9XT1JLRkxPV19FTkdJTkUgfSBmcm9tICcuL3dvcmtmbG93LWVuZ2luZSc7XG5pbXBvcnQge1xuICBBWFBXb3JrZmxvd0luc3RhbmNlU3RhdGUsXG4gIEFYUFdvcmtmbG93VGFzayxcbn0gZnJvbSAnLi93b3JrZmxvdy1ydW50aW1lLnR5cGVzJztcbmltcG9ydCB7IEFjdGl2aXR5RXhlY3V0b3IsIEFjdGl2aXR5RXhlY3V0aW9uUmVzdWx0IH0gZnJvbSAnLi9hY3Rpdml0eS1leGVjdXRvci5zZXJ2aWNlJztcblxuLy8jcmVnaW9uIC0tLS0gICBUeXBlcyAmIEludGVyZmFjZXMgICAtLS0tXG5cbi8qKlxuICogUmVzdWx0IG9mIHN0YXJ0aW5nIGEgd29ya2Zsb3cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dTdGFydFJlc3VsdCB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvcGVyYXRpb24gc3VjY2VlZGVkLlxuICAgKi9cbiAgc3VjY2VzczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV29ya2Zsb3cgaW5zdGFuY2UgSUQuXG4gICAqL1xuICBpbnN0YW5jZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHdvcmtmbG93IHN0YXRlLlxuICAgKi9cbiAgc3RhdGU/OiBBWFBXb3JrZmxvd0luc3RhbmNlU3RhdGU7XG5cbiAgLyoqXG4gICAqIEZpcnN0IHRhc2sgdG8gZXhlY3V0ZSAoaWYgYW55KS5cbiAgICovXG4gIG5leHRUYXNrPzogQVhQV29ya2Zsb3dUYXNrIHwgbnVsbDtcblxuICAvKipcbiAgICogV29ya2Zsb3cgb3V0cHV0IChpZiBjb21wbGV0ZWQgaW1tZWRpYXRlbHkpLlxuICAgKi9cbiAgb3V0cHV0PzogYW55O1xuXG4gIC8qKlxuICAgKiBFcnJvciBtZXNzYWdlIChpZiBmYWlsZWQpLlxuICAgKi9cbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGNvbXBsZXRpbmcgYSB0YXNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93Q29tcGxldGVSZXN1bHQge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZC5cbiAgICovXG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IGluc3RhbmNlIElELlxuICAgKi9cbiAgaW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcGRhdGVkIHdvcmtmbG93IHN0YXRlLlxuICAgKi9cbiAgc3RhdGU/OiBBWFBXb3JrZmxvd0luc3RhbmNlU3RhdGU7XG5cbiAgLyoqXG4gICAqIE5leHQgdGFzayB0byBleGVjdXRlIChpZiBhbnkpLlxuICAgKi9cbiAgbmV4dFRhc2s/OiBBWFBXb3JrZmxvd1Rhc2sgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBXb3JrZmxvdyBvdXRwdXQgKGlmIGNvbXBsZXRlZCkuXG4gICAqL1xuICBvdXRwdXQ/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEVycm9yIG1lc3NhZ2UgKGlmIGZhaWxlZCkuXG4gICAqL1xuICBlcnJvcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgcmVzdW1pbmcgYSB3b3JrZmxvdy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd1Jlc3VtZVJlc3VsdCB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvcGVyYXRpb24gc3VjY2VlZGVkLlxuICAgKi9cbiAgc3VjY2VzczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV29ya2Zsb3cgaW5zdGFuY2UgSUQuXG4gICAqL1xuICBpbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZWQgd29ya2Zsb3cgc3RhdGUuXG4gICAqL1xuICBzdGF0ZT86IEFYUFdvcmtmbG93SW5zdGFuY2VTdGF0ZTtcblxuICAvKipcbiAgICogTmV4dCB0YXNrIHRvIGV4ZWN1dGUgKGlmIGFueSkuXG4gICAqL1xuICBuZXh0VGFzaz86IEFYUFdvcmtmbG93VGFzayB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFdvcmtmbG93IG91dHB1dCAoaWYgY29tcGxldGVkKS5cbiAgICovXG4gIG91dHB1dD86IGFueTtcblxuICAvKipcbiAgICogRXJyb3IgbWVzc2FnZSAoaWYgZmFpbGVkKS5cbiAgICovXG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG4vLyNlbmRyZWdpb25cblxuLyoqXG4gKiBXb3JrZmxvdyBNYW5hZ2VyIC0gRmFjYWRlIGZvciB3b3JrZmxvdyBsaWZlY3ljbGUgb3JjaGVzdHJhdGlvbi5cbiAqIFxuICogVGhpcyBzZXJ2aWNlIGlzIHRoZSBPTkxZIGludGVyZmFjZSB0aGUgZnJvbnRlbmQgdXNlcyB0byBpbnRlcmFjdCB3aXRoIHdvcmtmbG93cy5cbiAqIEl0IGZvbGxvd3MgQ2xlYW4gQXJjaGl0ZWN0dXJlIHByaW5jaXBsZXMgYW5kIGRvZXMgTk9UIGNvbnRhaW4gZXhlY3V0aW9uIG9yIGJ1c2luZXNzIGxvZ2ljLlxuICogXG4gKiBSZXNwb25zaWJpbGl0aWVzOlxuICogLSBPcmNoZXN0cmF0ZSB3b3JrZmxvdyBsaWZlY3ljbGUgKHN0YXJ0LCBleGVjdXRlLCBjb21wbGV0ZSwgcmVzdW1lKVxuICogLSBEZWxlZ2F0ZSBleGVjdXRpb24gdG8gQWN0aXZpdHlFeGVjdXRvclxuICogLSBDYWNoZSB3b3JrZmxvdyBzdGF0ZSBpbiBtZW1vcnlcbiAqIC0gRXhwb3NlIGEgc3RhYmxlIEFQSSBmb3IgVUlcbiAqIFxuICogUnVsZXM6XG4gKiAtIE5vIEhUVFAgY2FsbHMgKGRlbGVnYXRlcyB0byBBWFBXb3JrZmxvd0VuZ2luZSlcbiAqIC0gTm8gQ29tbWFuZEJ1cyAvIENvbW1hbmQgZXhlY3V0aW9uIChkZWxlZ2F0ZXMgdG8gQWN0aXZpdHlFeGVjdXRvcilcbiAqIC0gTm8gd29ya2Zsb3cgYnJhbmNoaW5nIGxvZ2ljIChiYWNrZW5kIGRlY2lkZXMpXG4gKiAtIE5vIGJ1c2luZXNzIHZhbGlkYXRpb24gKGJhY2tlbmQgdmFsaWRhdGVzKVxuICogLSBObyBiYWNrZW5kIGFzc3VtcHRpb25zICh1c2VzIGFic3RyYWN0IHJ1bnRpbWUgc2VydmljZSlcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQVhQV29ya2Zsb3dNYW5hZ2VyIHtcbiAgLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlcyAmIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IHdvcmtmbG93RW5naW5lID0gaW5qZWN0KEFYUF9XT1JLRkxPV19FTkdJTkUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2aXR5RXhlY3V0b3IgPSBpbmplY3QoQWN0aXZpdHlFeGVjdXRvcik7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBTdGF0ZSBDYWNoZSAgIC0tLS1cblxuICAvKipcbiAgICogQ2FjaGUgd29ya2Zsb3cgc3RhdGVzIGluIG1lbW9yeSBmb3IgcXVpY2sgYWNjZXNzLlxuICAgKiBLZXk6IGluc3RhbmNlSWRcbiAgICogVmFsdWU6IEFYUFdvcmtmbG93SW5zdGFuY2VTdGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0ZUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEFYUFdvcmtmbG93SW5zdGFuY2VTdGF0ZT4oKTtcblxuICAvKipcbiAgICogQ2FjaGUgVFRMIGluIG1pbGxpc2Vjb25kcyAoNSBtaW51dGVzKS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgQ0FDSEVfVFRMID0gNSAqIDYwICogMTAwMDtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBTdGFydCBhIG5ldyB3b3JrZmxvdyBpbnN0YW5jZS5cbiAgICogXG4gICAqIENyZWF0ZXMgYSBuZXcgd29ya2Zsb3cgaW5zdGFuY2UgaW4gYmFja2VuZCBhbmQgcmV0dXJucyBpbnN0YW5jZSBJRC5cbiAgICogQmFja2VuZCBkZWNpZGVzIHdoYXQgdG8gZG86IHJldHVybnMgcGVuZGluZ1Rhc2sgb3IgaW5kaWNhdGVzIGNvbXBsZXRpb24uXG4gICAqIFxuICAgKiBAcGFyYW0gd29ya2Zsb3dJZCAtIFdvcmtmbG93IElEIHRvIHN0YXJ0XG4gICAqIEBwYXJhbSBpbnB1dCAtIEluaXRpYWwgaW5wdXQgZGF0YSAob3B0aW9uYWwpXG4gICAqIEByZXR1cm5zIFN0YXJ0IHJlc3VsdCB3aXRoIGluc3RhbmNlSWQsIHN0YXRlLCBhbmQgbmV4dFRhc2tcbiAgICogXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgd29ya2Zsb3dNYW5hZ2VyLnN0YXJ0KCdteS13b3JrZmxvdycsIHsgdXNlcklkOiAnMTIzJyB9KTtcbiAgICogXG4gICAqIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQubmV4dFRhc2spIHtcbiAgICogICAvLyBFeGVjdXRlIHRhc2sgaWYgZnJvbnRlbmRcbiAgICogICBpZiAocmVzdWx0Lm5leHRUYXNrLmV4ZWN1dGlvbk1vZGUgPT09ICdmcm9udGVuZCcpIHtcbiAgICogICAgIGNvbnN0IGV4ZWNSZXN1bHQgPSBhd2FpdCB3b3JrZmxvd01hbmFnZXIuZXhlY3V0ZShyZXN1bHQubmV4dFRhc2spO1xuICAgKiAgICAgYXdhaXQgd29ya2Zsb3dNYW5hZ2VyLmNvbXBsZXRlKHJlc3VsdC5pbnN0YW5jZUlkISwgcmVzdWx0Lm5leHRUYXNrLCBleGVjUmVzdWx0Lm91dGNvbWUsIGV4ZWNSZXN1bHQub3V0cHV0KTtcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBzdGFydChcbiAgICB3b3JrZmxvd0lkOiBzdHJpbmcsXG4gICAgaW5wdXQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxuICApOiBQcm9taXNlPFdvcmtmbG93U3RhcnRSZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLndvcmtmbG93RW5naW5lLnN0YXJ0KHtcbiAgICAgICAgd29ya2Zsb3dJZCxcbiAgICAgICAgaW5wdXRcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDYWNoZSBzdGF0ZSAobm9ybWFsaXplIERhdGUpXG4gICAgICBjb25zdCBzdGFydE5vcm1hbGl6ZWRTdGF0ZSA9IHsgLi4ucmVzcG9uc2Uuc3RhdGUgfTtcbiAgICAgIGlmIChzdGFydE5vcm1hbGl6ZWRTdGF0ZS5sYXN0VXBkYXRlZCAmJiAhKHN0YXJ0Tm9ybWFsaXplZFN0YXRlLmxhc3RVcGRhdGVkIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgICAgc3RhcnROb3JtYWxpemVkU3RhdGUubGFzdFVwZGF0ZWQgPSBuZXcgRGF0ZShzdGFydE5vcm1hbGl6ZWRTdGF0ZS5sYXN0VXBkYXRlZCk7XG4gICAgICB9XG4gICAgICB0aGlzLnN0YXRlQ2FjaGUuc2V0KHJlc3BvbnNlLmluc3RhbmNlSWQsIHN0YXJ0Tm9ybWFsaXplZFN0YXRlKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgaW5zdGFuY2VJZDogcmVzcG9uc2UuaW5zdGFuY2VJZCxcbiAgICAgICAgc3RhdGU6IHN0YXJ0Tm9ybWFsaXplZFN0YXRlLFxuICAgICAgICBuZXh0VGFzazogcmVzcG9uc2UucGVuZGluZ1Rhc2sgfHwgbnVsbCxcbiAgICAgICAgb3V0cHV0OiBzdGFydE5vcm1hbGl6ZWRTdGF0ZS5vdXRwdXRcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgY29uc29sZS5lcnJvcignW0FYUFdvcmtmbG93TWFuYWdlcl0g4p2MIEVycm9yIHN0YXJ0aW5nIHdvcmtmbG93OicsIGVycm9yKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvcjogZXJyb3IubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHN0YXJ0IHdvcmtmbG93J1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIGZyb250ZW5kIHRhc2suXG4gICAqIFxuICAgKiBEZWxlZ2F0ZXMgdG8gQWN0aXZpdHlFeGVjdXRvciBmb3IgYWN0dWFsIGV4ZWN1dGlvbi5cbiAgICogT25seSBleGVjdXRlcyB0YXNrcyB3aXRoIGV4ZWN1dGlvbk1vZGUgJ2Zyb250ZW5kJyBvciAnYm90aCcuXG4gICAqIFxuICAgKiBQcm92aWRlcyB3b3JrZmxvdyBzdGF0ZSB0byBleGVjdXRvciBmb3IgZXhwcmVzc2lvbiBldmFsdWF0aW9uLlxuICAgKiBcbiAgICogQHBhcmFtIHRhc2sgLSBUYXNrIHRvIGV4ZWN1dGVcbiAgICogQHJldHVybnMgRXhlY3V0aW9uIHJlc3VsdCB3aXRoIG91dHB1dCBhbmQgb3V0Y29tZVxuICAgKiBcbiAgICogQHRocm93cyBFcnJvciBpZiB0YXNrIGlzIG5vdCBhIGZyb250ZW5kIHRhc2tcbiAgICovXG4gIGFzeW5jIGV4ZWN1dGUodGFzazogQVhQV29ya2Zsb3dUYXNrKTogUHJvbWlzZTxBY3Rpdml0eUV4ZWN1dGlvblJlc3VsdD4ge1xuICAgIC8vIFZhbGlkYXRlIGV4ZWN1dGlvbiBtb2RlXG4gICAgaWYgKHRhc2suZXhlY3V0aW9uTW9kZSAhPT0gJ2Zyb250ZW5kJyAmJiB0YXNrLmV4ZWN1dGlvbk1vZGUgIT09ICdib3RoJykge1xuICAgICAgY29uc29sZS5lcnJvcihgW0FYUFdvcmtmbG93TWFuYWdlcl0g4p2MIEludmFsaWQgZXhlY3V0aW9uIG1vZGU6ICR7dGFzay5leGVjdXRpb25Nb2RlfWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVGFzayAnJHt0YXNrLmFjdGl2aXR5SWR9JyBpcyBub3QgYSBmcm9udGVuZCB0YXNrLiBgICtcbiAgICAgICAgYEV4ZWN1dGlvbiBtb2RlOiAke3Rhc2suZXhlY3V0aW9uTW9kZX0uIEJhY2tlbmQgdGFza3MgYXJlIGhhbmRsZWQgYXV0b21hdGljYWxseS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEZpbmQgd29ya2Zsb3cgc3RhdGUgZnJvbSBjYWNoZSBieSBtYXRjaGluZyBjdXJyZW50U3RlcElkIHdpdGggdGFzay5hY3Rpdml0eUlkXG4gICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGV4cHJlc3Npb24gZXZhbHVhdGlvblxuICAgIGxldCB3b3JrZmxvd1N0YXRlOiBBWFBXb3JrZmxvd0luc3RhbmNlU3RhdGUgfCB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBbaW5zdGFuY2VJZCwgc3RhdGVdIG9mIHRoaXMuc3RhdGVDYWNoZS5lbnRyaWVzKCkpIHtcbiAgICAgIGlmIChzdGF0ZS5jdXJyZW50U3RlcElkID09PSB0YXNrLmFjdGl2aXR5SWQpIHtcbiAgICAgICAgd29ya2Zsb3dTdGF0ZSA9IHN0YXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gSWYgbm90IGZvdW5kIGluIGNhY2hlLCB0cnkgdG8gZ2V0IGZyb20gYmFja2VuZFxuICAgIGlmICghd29ya2Zsb3dTdGF0ZSkge1xuICAgICAgY29uc29sZS53YXJuKGBbQVhQV29ya2Zsb3dNYW5hZ2VyXSDimqDvuI8gV29ya2Zsb3cgc3RhdGUgbm90IGZvdW5kIGluIGNhY2hlIGZvciB0YXNrICR7dGFzay5hY3Rpdml0eUlkfS4gRXhwcmVzc2lvbiBldmFsdWF0aW9uIG1heSBub3Qgd29yayBjb3JyZWN0bHkuYCk7XG4gICAgfVxuICAgIFxuICAgIC8vIFRPRE86IEdldCBhY3Rpdml0eSBvdXRwdXRzIGZyb20gd29ya2Zsb3cgc3RhdGVcbiAgICAvLyBGb3Igbm93LCBwYXNzIHVuZGVmaW5lZCAtIGV4ZWN1dG9yIHdpbGwgYnVpbGQgc2NvcGUgZnJvbSBzdGF0ZVxuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5RXhlY3V0b3IuZXhlY3V0ZSh0YXNrLCB3b3JrZmxvd1N0YXRlLCB1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBsZXRlIGEgdGFzayBhbmQgZ2V0IG5leHQgdGFzayBmcm9tIGJhY2tlbmQuXG4gICAqIFxuICAgKiBTZW5kcyB0YXNrIHJlc3VsdCB0byBiYWNrZW5kIEFQSS5cbiAgICogQmFja2VuZCBkZWNpZGVzOiBuZXh0IHRhc2ssIGZhaWwsIG9yIGNvbXBsZXRlIHdvcmtmbG93LlxuICAgKiBcbiAgICogQHBhcmFtIGluc3RhbmNlSWQgLSBXb3JrZmxvdyBpbnN0YW5jZSBJRFxuICAgKiBAcGFyYW0gdGFzayAtIENvbXBsZXRlZCB0YXNrXG4gICAqIEBwYXJhbSBvdXRjb21lIC0gVGFzayBvdXRjb21lIChlLmcuLCAnRG9uZScsICdDb25maXJtZWQnLCAnQ2FuY2VsbGVkJylcbiAgICogQHBhcmFtIG91dHB1dCAtIFRhc2sgb3V0cHV0L3Jlc3VsdCAob3B0aW9uYWwpXG4gICAqIEByZXR1cm5zIENvbXBsZXRlIHJlc3VsdCB3aXRoIG5leHQgdGFzayAoaWYgYW55KVxuICAgKi9cbiAgYXN5bmMgY29tcGxldGUoXG4gICAgaW5zdGFuY2VJZDogc3RyaW5nLFxuICAgIHRhc2s6IEFYUFdvcmtmbG93VGFzayxcbiAgICBvdXRjb21lOiBzdHJpbmcsXG4gICAgb3V0cHV0PzogYW55XG4gICk6IFByb21pc2U8V29ya2Zsb3dDb21wbGV0ZVJlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBTZW5kIHJlc3VsdCB0byBiYWNrZW5kIC0gYmFja2VuZCBkZWNpZGVzIG5leHQgc3RlcFxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLndvcmtmbG93RW5naW5lLnJlc3VtZSh7XG4gICAgICAgIGluc3RhbmNlSWQsXG4gICAgICAgIHN0ZXBJZDogdGFzay5hY3Rpdml0eUlkLFxuICAgICAgICB0YXNrVG9rZW46IHRhc2sudGFza1Rva2VuLFxuICAgICAgICBvdXRjb21lLFxuICAgICAgICB1c2VySW5wdXQ6IG91dHB1dFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFVwZGF0ZSBjYWNoZVxuICAgICAgbGV0IGNvbXBsZXRlTm9ybWFsaXplZFN0YXRlID0gcmVzcG9uc2Uuc3RhdGU7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdGUpIHtcbiAgICAgICAgLy8gTm9ybWFsaXplIGxhc3RVcGRhdGVkIHRvIERhdGUgKGZvciBjYWNoZSBzYWZldHkpXG4gICAgICAgIGNvbXBsZXRlTm9ybWFsaXplZFN0YXRlID0geyAuLi5yZXNwb25zZS5zdGF0ZSB9O1xuICAgICAgICBpZiAoY29tcGxldGVOb3JtYWxpemVkU3RhdGUubGFzdFVwZGF0ZWQgJiYgIShjb21wbGV0ZU5vcm1hbGl6ZWRTdGF0ZS5sYXN0VXBkYXRlZCBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICAgICAgY29tcGxldGVOb3JtYWxpemVkU3RhdGUubGFzdFVwZGF0ZWQgPSBuZXcgRGF0ZShjb21wbGV0ZU5vcm1hbGl6ZWRTdGF0ZS5sYXN0VXBkYXRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZUNhY2hlLnNldChpbnN0YW5jZUlkLCBjb21wbGV0ZU5vcm1hbGl6ZWRTdGF0ZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIGluc3RhbmNlSWQsXG4gICAgICAgIHN0YXRlOiBjb21wbGV0ZU5vcm1hbGl6ZWRTdGF0ZSxcbiAgICAgICAgbmV4dFRhc2s6IHJlc3BvbnNlLm5leHRUYXNrIHx8IG51bGwsXG4gICAgICAgIG91dHB1dDogcmVzcG9uc2Uub3V0cHV0XG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tBWFBXb3JrZmxvd01hbmFnZXJdIOKdjCBFcnJvciBjb21wbGV0aW5nIHRhc2s6JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGluc3RhbmNlSWQsXG4gICAgICAgIGVycm9yOiBlcnJvci5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gY29tcGxldGUgdGFzaydcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc3VtZSBhIHN1c3BlbmRlZCB3b3JrZmxvdyAoZS5nLiwgYWZ0ZXIgdXNlciBpbnRlcmFjdGlvbikuXG4gICAqIFxuICAgKiBCYWNrZW5kIGRldGVybWluZXMgbmV4dFN0ZXAgYmFzZWQgb24gb3V0Y29tZSBhbmQgb3V0Y29tZUNvbm5lY3Rpb25zLlxuICAgKiBDbGllbnQgb25seSBwcm92aWRlcyBpbnN0YW5jZUlkLCBzdGVwSWQsIG91dGNvbWUsIGFuZCBvcHRpb25hbCB1c2VySW5wdXQuXG4gICAqIFxuICAgKiBAcGFyYW0gaW5zdGFuY2VJZCAtIFdvcmtmbG93IGluc3RhbmNlIElEXG4gICAqIEBwYXJhbSBzdGVwSWQgLSBTdGVwIElEIHRoYXQgd2FzIHdhaXRpbmcgZm9yIHVzZXIgaW5wdXRcbiAgICogQHBhcmFtIG91dGNvbWUgLSBVc2VyIGFjdGlvbiBvdXRjb21lIChlLmcuLCAnQ29uZmlybWVkJywgJ0NhbmNlbGxlZCcsICdTdWJtaXR0ZWQnKVxuICAgKiBAcGFyYW0gdXNlcklucHV0IC0gT3B0aW9uYWwgdXNlciBpbnB1dCBkYXRhXG4gICAqIEBwYXJhbSB0YXNrVG9rZW4gLSBTZWN1cmUgdGFzayB0b2tlbiAocmVxdWlyZWQgZm9yIHNlY3VyZSByZXN1bXB0aW9uKVxuICAgKiBAcmV0dXJucyBSZXN1bWUgcmVzdWx0IHdpdGggbmV4dCB0YXNrIChpZiBhbnkpXG4gICAqL1xuICBhc3luYyByZXN1bWUoXG4gICAgaW5zdGFuY2VJZDogc3RyaW5nLFxuICAgIHN0ZXBJZDogc3RyaW5nLFxuICAgIG91dGNvbWU6IHN0cmluZyxcbiAgICB1c2VySW5wdXQ/OiBhbnksXG4gICAgdGFza1Rva2VuPzogc3RyaW5nXG4gICk6IFByb21pc2U8V29ya2Zsb3dSZXN1bWVSZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgLy8gRW5zdXJlIHRhc2tUb2tlbiBpcyBwcm92aWRlZCBmb3Igc2VjdXJlIHJlc3VtcHRpb25cbiAgICAgIGlmICghdGFza1Rva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyB0YXNrVG9rZW4gZm9yIHJlc3VtZSBvcGVyYXRpb24nKTtcbiAgICAgIH1cblxuICAgICAgLy8gQmFja2VuZCBoYW5kbGVzIGV2ZXJ5dGhpbmc6IGNoZWNrcyBvdXRjb21lQ29ubmVjdGlvbnMgYW5kIGRldGVybWluZXMgbmV4dFN0ZXBcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy53b3JrZmxvd0VuZ2luZS5yZXN1bWUoe1xuICAgICAgICBpbnN0YW5jZUlkLFxuICAgICAgICBzdGVwSWQsXG4gICAgICAgIHRhc2tUb2tlbixcbiAgICAgICAgb3V0Y29tZSxcbiAgICAgICAgdXNlcklucHV0XG4gICAgICB9KTtcblxuICAgICAgLy8gVXBkYXRlIGNhY2hlIHdpdGggc3RhdGUgZnJvbSBiYWNrZW5kXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdGUpIHtcbiAgICAgICAgLy8gTm9ybWFsaXplIGxhc3RVcGRhdGVkIHRvIERhdGUgKGZvciBjYWNoZSBzYWZldHkpXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRTdGF0ZSA9IHsgLi4ucmVzcG9uc2Uuc3RhdGUgfTtcbiAgICAgICAgaWYgKG5vcm1hbGl6ZWRTdGF0ZS5sYXN0VXBkYXRlZCAmJiAhKG5vcm1hbGl6ZWRTdGF0ZS5sYXN0VXBkYXRlZCBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICAgICAgbm9ybWFsaXplZFN0YXRlLmxhc3RVcGRhdGVkID0gbmV3IERhdGUobm9ybWFsaXplZFN0YXRlLmxhc3RVcGRhdGVkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlQ2FjaGUuc2V0KGluc3RhbmNlSWQsIG5vcm1hbGl6ZWRTdGF0ZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIE5vcm1hbGl6ZSBzdGF0ZSBEYXRlIGZvciByZXR1cm5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRTdGF0ZSA9IHJlc3BvbnNlLnN0YXRlID8geyAuLi5yZXNwb25zZS5zdGF0ZSB9IDogdW5kZWZpbmVkO1xuICAgICAgaWYgKG5vcm1hbGl6ZWRTdGF0ZSAmJiBub3JtYWxpemVkU3RhdGUubGFzdFVwZGF0ZWQgJiYgIShub3JtYWxpemVkU3RhdGUubGFzdFVwZGF0ZWQgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgICBub3JtYWxpemVkU3RhdGUubGFzdFVwZGF0ZWQgPSBuZXcgRGF0ZShub3JtYWxpemVkU3RhdGUubGFzdFVwZGF0ZWQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICBpbnN0YW5jZUlkLFxuICAgICAgICBzdGF0ZTogbm9ybWFsaXplZFN0YXRlIHx8IHJlc3BvbnNlLnN0YXRlLFxuICAgICAgICBuZXh0VGFzazogcmVzcG9uc2UubmV4dFRhc2sgfHwgbnVsbCwgLy8gQmFja2VuZCBkZXRlcm1pbmVzIHRoaXMgZnJvbSBvdXRjb21lQ29ubmVjdGlvbnNcbiAgICAgICAgb3V0cHV0OiByZXNwb25zZS5vdXRwdXRcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgY29uc29sZS5lcnJvcignW0FYUFdvcmtmbG93TWFuYWdlcl0g4p2MIEVycm9yIHJlc3VtaW5nIHdvcmtmbG93OicsIGVycm9yKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBpbnN0YW5jZUlkLFxuICAgICAgICBlcnJvcjogZXJyb3IubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHJlc3VtZSB3b3JrZmxvdydcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB3b3JrZmxvdyBpbnN0YW5jZSBzdGF0ZS5cbiAgICogXG4gICAqIFJldHJpZXZlcyBzdGF0ZSBmcm9tIGNhY2hlIChpZiB2YWxpZCkgb3IgZnJvbSBiYWNrZW5kLlxuICAgKiBcbiAgICogQHBhcmFtIGluc3RhbmNlSWQgLSBXb3JrZmxvdyBpbnN0YW5jZSBJRFxuICAgKiBAcmV0dXJucyBXb3JrZmxvdyBpbnN0YW5jZSBzdGF0ZSBvciBudWxsIGlmIG5vdCBmb3VuZFxuICAgKi9cbiAgYXN5bmMgZ2V0U3RhdGUoaW5zdGFuY2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBXb3JrZmxvd0luc3RhbmNlU3RhdGUgfCBudWxsPiB7XG4gICAgLy8gQ2hlY2sgY2FjaGUgZmlyc3RcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnN0YXRlQ2FjaGUuZ2V0KGluc3RhbmNlSWQpO1xuICAgIGlmIChjYWNoZWQpIHtcbiAgICAgIC8vIE5vcm1hbGl6ZSBsYXN0VXBkYXRlZCB0byBEYXRlIChmb3IgY2FjaGUgc2FmZXR5KVxuICAgICAgY29uc3Qgbm9ybWFsaXplZENhY2hlZCA9IHsgLi4uY2FjaGVkIH07XG4gICAgICBpZiAobm9ybWFsaXplZENhY2hlZC5sYXN0VXBkYXRlZCAmJiAhKG5vcm1hbGl6ZWRDYWNoZWQubGFzdFVwZGF0ZWQgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgICBub3JtYWxpemVkQ2FjaGVkLmxhc3RVcGRhdGVkID0gbmV3IERhdGUobm9ybWFsaXplZENhY2hlZC5sYXN0VXBkYXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIGNhY2hlIGFnZVxuICAgICAgY29uc3QgY2FjaGVBZ2UgPSBEYXRlLm5vdygpIC0gbm9ybWFsaXplZENhY2hlZC5sYXN0VXBkYXRlZC5nZXRUaW1lKCk7XG4gICAgICBpZiAoY2FjaGVBZ2UgPCB0aGlzLkNBQ0hFX1RUTCkge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplZENhY2hlZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGZXRjaCBmcm9tIGJhY2tlbmRcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdGUgPSBhd2FpdCB0aGlzLndvcmtmbG93RW5naW5lLmdldFN0YXRlKHtcbiAgICAgICAgaW5zdGFuY2VJZFxuICAgICAgfSk7XG5cbiAgICAgIC8vIE5vcm1hbGl6ZSBsYXN0VXBkYXRlZCB0byBEYXRlIChmb3IgY2FjaGUgc2FmZXR5KVxuICAgICAgY29uc3Qgbm9ybWFsaXplZFN0YXRlID0geyAuLi5zdGF0ZSB9O1xuICAgICAgaWYgKG5vcm1hbGl6ZWRTdGF0ZS5sYXN0VXBkYXRlZCAmJiAhKG5vcm1hbGl6ZWRTdGF0ZS5sYXN0VXBkYXRlZCBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWRTdGF0ZS5sYXN0VXBkYXRlZCA9IG5ldyBEYXRlKG5vcm1hbGl6ZWRTdGF0ZS5sYXN0VXBkYXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBjYWNoZVxuICAgICAgdGhpcy5zdGF0ZUNhY2hlLnNldChpbnN0YW5jZUlkLCBub3JtYWxpemVkU3RhdGUpO1xuXG4gICAgICByZXR1cm4gbm9ybWFsaXplZFN0YXRlO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tBWFBXb3JrZmxvd01hbmFnZXJdIOKdjCBFcnJvciBnZXR0aW5nIHdvcmtmbG93IHN0YXRlOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuXG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const AXP_WORKFLOW_PROVIDER = new InjectionToken('AXP_WORKFLOW_PROVIDER', {\n factory: () => [],\n});\nexport const AXP_WORKFLOW_CATEGORY_PROVIDER = new InjectionToken('AXP_WORKFLOW_CATEGORY_PROVIDER', {\n factory: () => [],\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGVmaW5pdGlvbi5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd29ya2Zsb3cvc3JjL2xpYi9lbmdpbmUvd29ya2Zsb3cvd29ya2Zsb3ctZGVmaW5pdGlvbi5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBMkIvQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBNkIsdUJBQXVCLEVBQUU7SUFDekcsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Q0FDcEIsQ0FBQyxDQUFDO0FBdUJILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUFxQyxnQ0FBZ0MsRUFBRTtJQUNuSSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtDQUNwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQ2F0ZWdvcnlFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dEZWZpbml0aW9uIH0gZnJvbSAnLi4vd29ya2Zsb3ctZGVmaW5pdGlvbi50eXBlcyc7XG5cbi8qKlxuICogV29ya2Zsb3cgQ2F0ZWdvcnkgLSBFeHRlbmRzIEFYUENhdGVnb3J5RW50aXR5IGZvciBjb25zaXN0ZW5jeSBhbmQgcGVyZm9ybWFuY2VcbiAqIFxuICogSW5oZXJpdGVkIHByb3BlcnRpZXMgZnJvbSBBWFBDYXRlZ29yeUVudGl0eTpcbiAqIC0gaWQ6IHN0cmluZyAgICAgICAgICAgICAgICAgICAtIFVuaXF1ZSBpZGVudGlmaWVyXG4gKiAtIHRpdGxlOiBzdHJpbmcgICAgICAgICAgICAgICAgLSBEaXNwbGF5IG5hbWVcbiAqIC0gZGVzY3JpcHRpb24/OiBzdHJpbmcgICAgICAgICAtIENhdGVnb3J5IGRlc2NyaXB0aW9uXG4gKiAtIHBhcmVudElkPzogc3RyaW5nICAgICAgICAgICAgLSBQYXJlbnQgY2F0ZWdvcnkgSURcbiAqIC0gY2hpbGRyZW5Db3VudDogbnVtYmVyICAgICAgICAtIERpcmVjdCBjaGlsZCBjYXRlZ29yaWVzIGNvdW50IChlbmFibGVzIGxhenkgbG9hZGluZylcbiAqIC0gaXRlbXNDb3VudD86IG51bWJlciAgICAgICAgICAtIERpcmVjdCB3b3JrZmxvd3MgY291bnRcbiAqIC0gdG90YWxDaGlsZHJlbj86IG51bWJlciAgICAgICAtIFRvdGFsIG5lc3RlZCBjYXRlZ29yaWVzIChvcHRpb25hbCwgZm9yIGFuYWx5dGljcylcbiAqIC0gdG90YWxJdGVtcz86IG51bWJlciAgICAgICAgICAtIFRvdGFsIHdvcmtmbG93cyBpbiB0cmVlIChvcHRpb25hbCwgZm9yIGFuYWx5dGljcylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBXb3JrZmxvd0NhdGVnb3J5IGV4dGVuZHMgQVhQQ2F0ZWdvcnlFbnRpdHkge1xuICAgIC8vIE5vIGFkZGl0aW9uYWwgcHJvcGVydGllcyBuZWVkZWQgLSBhbGwgaW5oZXJpdGVkIGZyb20gQVhQQ2F0ZWdvcnlFbnRpdHlcbiAgICAvLyBVc2U6IGNoaWxkcmVuQ291bnQgaW5zdGVhZCBvZiBoYXNDaGlsZFxuICAgIC8vIFVzZTogaXRlbXNDb3VudCBpbnN0ZWFkIG9mIGhhc1dvcmtmbG93XG59XG5cbmV4cG9ydCB0eXBlIEFYUFdvcmtmbG93UHJvdmlkZXJUb2tlbiA9XG4gICAgfCBBWFBXb3JrZmxvd1Byb3ZpZGVyXG4gICAgfCBQcm9taXNlPEFYUFdvcmtmbG93UHJvdmlkZXI+O1xuXG5leHBvcnQgY29uc3QgQVhQX1dPUktGTE9XX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFdvcmtmbG93UHJvdmlkZXJUb2tlbltdPignQVhQX1dPUktGTE9XX1BST1ZJREVSJywge1xuICAgIGZhY3Rvcnk6ICgpID0+IFtdLFxufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dQcm92aWRlciB7XG4gICAgLyoqXG4gICAgICogR2V0IGxpc3Qgb2Ygd29ya2Zsb3cgZGVmaW5pdGlvbnMgZm9yIGEgY2F0ZWdvcnkuXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWQgLSBDYXRlZ29yeSBJRCB0byBmaWx0ZXIgd29ya2Zsb3dzXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiB3b3JrZmxvdyBkZWZpbml0aW9uIGFycmF5XG4gICAgICovXG4gICAgZ2V0TGlzdChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFdvcmtmbG93RGVmaW5pdGlvbltdPjtcbiAgICBcbiAgICAvKipcbiAgICAgKiBHZXQgZnVsbCB3b3JrZmxvdyBkZWZpbml0aW9uIGJ5IG5hbWUgKHVuaXF1ZSBpZGVudGlmaWVyKS5cbiAgICAgKiBVc2VkIGJ5IHdvcmtmbG93IGVuZ2luZXMgZm9yIGV4ZWN1dGlvbiBhbmQgVUkgZm9yIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSBuYW1lIC0gV29ya2Zsb3cgbmFtZSAodW5pcXVlIGlkZW50aWZpZXIpXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiBmdWxsIHdvcmtmbG93IGRlZmluaXRpb24gb3IgbnVsbCBpZiBub3QgZm91bmRcbiAgICAgKi9cbiAgICBnZXRCeU5hbWUobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBXb3JrZmxvd0RlZmluaXRpb24gfCBudWxsPjtcbn1cblxuZXhwb3J0IHR5cGUgQVhQV29ya2Zsb3dDYXRlZ29yeVByb3ZpZGVyVG9rZW4gPVxuICAgIHwgQVhQV29ya2Zsb3dDYXRlZ29yeVByb3ZpZGVyXG4gICAgfCBQcm9taXNlPEFYUFdvcmtmbG93Q2F0ZWdvcnlQcm92aWRlcj47XG5cbmV4cG9ydCBjb25zdCBBWFBfV09SS0ZMT1dfQ0FURUdPUllfUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQV29ya2Zsb3dDYXRlZ29yeVByb3ZpZGVyVG9rZW5bXT4oJ0FYUF9XT1JLRkxPV19DQVRFR09SWV9QUk9WSURFUicsIHtcbiAgICBmYWN0b3J5OiAoKSA9PiBbXSxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdvcmtmbG93Q2F0ZWdvcnlQcm92aWRlciB7XG4gICAgZ2V0TGlzdChwYXJlbnRJZD86IHN0cmluZyk6IFByb21pc2U8QVhQV29ya2Zsb3dDYXRlZ29yeVtdPjtcbiAgICBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFdvcmtmbG93Q2F0ZWdvcnkgfCB1bmRlZmluZWQ+O1xufVxuXG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { AXP_WORKFLOW_PROVIDER, } from '../workflow/workflow-definition.provider';\nimport { AXPActivityDefinitionService } from '../activity/activity-definition.service';\nimport { AXPDataGenerator } from '@acorex/platform/core';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Local engine implementation that manages workflow progression and state.\n *\n * This engine:\n * - Returns frontend/both activities as pendingTask (does NOT execute them)\n * - Skips backend activities (does not error, continues execution)\n * - Maintains workflow state in memory\n * - Does not require backend API calls\n *\n * Execution of frontend tasks is handled by AXPWorkflowManager via ActivityExecutor.\n * This engine only manages workflow progression and state storage.\n *\n * This is the DEFAULT engine provider. Applications can override it with\n * an API-based engine implementation.\n */\nexport class AXPWorkflowLocalEngine {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.activityDefinitionService = inject(AXPActivityDefinitionService);\n this.workflowProviders = inject(AXP_WORKFLOW_PROVIDER, { optional: true }) || [];\n //#endregion\n //#region ---- Instance Storage ----\n /**\n * In-memory storage for workflow instances.\n * Key: instanceId\n * Value: LocalWorkflowState\n */\n this.instances = new Map();\n /**\n * Task token storage for secure resume operations.\n * Key: taskToken\n * Value: { instanceId, activityId }\n */\n this.taskTokens = new Map();\n }\n //#endregion\n //#region ---- Public Methods (AXPWorkflowEngine) ----\n /**\n * Start a new workflow instance.\n *\n * Creates an in-memory workflow instance and progresses it.\n * Frontend/both activities are returned as pendingTask for external execution.\n * Backend activities are skipped.\n */\n async start(request) {\n console.log(`[WorkflowLocalEngine] 🚀 Starting workflow: ${request.workflowId}`, request);\n // Generate instance ID\n const instanceId = AXPDataGenerator.uuid();\n const now = new Date();\n // Load workflow definition\n console.log(`[WorkflowLocalEngine] 📥 Loading workflow definition: ${request.workflowId}`);\n const definition = await this.getDefinition(request.workflowId);\n if (!definition) {\n console.error(`[WorkflowLocalEngine] ❌ Workflow definition not found: ${request.workflowId}`);\n throw new Error(`Workflow definition not found: ${request.workflowId}`);\n }\n console.log(`[WorkflowLocalEngine] ✅ Definition loaded:`, {\n name: definition.name,\n activitiesCount: definition.graph?.activities?.length || 0,\n connectionsCount: definition.graph?.connections?.length || 0,\n });\n // Initialize workflow state\n const state = {\n instanceId,\n workflowId: request.workflowId,\n status: 'running',\n variables: {},\n input: request.input || {},\n output: undefined,\n lastUpdated: now,\n };\n // Create local state\n const localState = {\n instanceId,\n workflowId: request.workflowId,\n definition,\n state,\n completedActivities: new Set(),\n activityResults: new Map(),\n };\n // Store instance\n this.instances.set(instanceId, localState);\n // Execute workflow steps\n console.log(`[WorkflowLocalEngine] ⚙️ Executing workflow steps...`);\n const pendingTask = await this.executeWorkflowSteps(localState);\n // Update state\n localState.state.lastUpdated = new Date();\n console.log(`[WorkflowLocalEngine] ✅ Workflow started:`, {\n instanceId,\n status: localState.state.status,\n hasPendingTask: !!pendingTask,\n pendingTaskType: pendingTask?.activityType,\n });\n return {\n instanceId,\n state: localState.state,\n pendingTask: pendingTask || null,\n };\n }\n /**\n * Resume a suspended workflow instance.\n *\n * Validates task token, applies externally executed result,\n * and continues progressing workflow steps.\n */\n async resume(request) {\n // Validate task token\n const tokenInfo = this.taskTokens.get(request.taskToken);\n if (!tokenInfo || tokenInfo.instanceId !== request.instanceId || tokenInfo.activityId !== request.stepId) {\n throw new Error('Invalid task token');\n }\n // Get instance\n const localState = this.instances.get(request.instanceId);\n if (!localState) {\n throw new Error(`Workflow instance not found: ${request.instanceId}`);\n }\n // Store activity result (from external execution)\n localState.activityResults.set(request.stepId, {\n output: request.userInput || {},\n outcome: request.outcome,\n });\n localState.completedActivities.add(request.stepId);\n // Merge output/userInput into state variables\n if (request.userInput) {\n localState.state.variables = {\n ...localState.state.variables,\n ...(request.userInput || {}),\n };\n }\n // Mark activity as completed and continue progression\n // Continue progressing workflow steps (skipping backend activities)\n const nextTask = await this.executeWorkflowSteps(localState);\n // Update state\n localState.state.lastUpdated = new Date();\n // Determine final status\n if (!nextTask && localState.state.status === 'running') {\n localState.state.status = 'completed';\n localState.state.output = localState.state.variables;\n }\n return {\n output: request.userInput || {},\n outcomes: { [request.outcome]: true },\n state: localState.state,\n nextTask: nextTask || null,\n };\n }\n /**\n * Get current workflow instance state.\n */\n async getState(request) {\n const localState = this.instances.get(request.instanceId);\n if (!localState) {\n throw new Error(`Workflow instance not found: ${request.instanceId}`);\n }\n // Normalize lastUpdated to Date (for cache safety)\n const state = { ...localState.state };\n if (state.lastUpdated && !(state.lastUpdated instanceof Date)) {\n state.lastUpdated = new Date(state.lastUpdated);\n }\n return state;\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Get workflow definition from available providers.\n */\n async getDefinition(workflowId) {\n // Try all providers in order\n const resolvedProviders = await Promise.allSettled(this.workflowProviders);\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value) {\n const provider = p.value;\n // Check if provider has getByName method\n if (typeof provider.getByName === 'function') {\n try {\n const definition = await provider.getByName(workflowId);\n if (definition) {\n return definition;\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n }\n return null;\n }\n /**\n * Progress workflow steps starting from the current position.\n *\n * For frontend/both activities: returns task immediately (suspends workflow).\n * For backend activities: skips and continues.\n *\n * Returns the next pending task (if frontend activity found) or null (if completed).\n */\n async executeWorkflowSteps(localState) {\n const graph = localState.definition.graph;\n const activities = graph.activities || [];\n const connections = graph.connections || [];\n // Build activity map\n const activityMap = new Map();\n activities.forEach(activity => {\n activityMap.set(activity.id, activity);\n });\n // Build connection graph\n const outgoingConnections = new Map();\n const incomingConnections = new Map();\n connections.forEach(conn => {\n const sourceId = conn.source.activtyName;\n const targetId = conn.target.activtyName;\n if (!outgoingConnections.has(sourceId)) {\n outgoingConnections.set(sourceId, []);\n }\n outgoingConnections.get(sourceId).push(conn);\n if (!incomingConnections.has(targetId)) {\n incomingConnections.set(targetId, []);\n }\n incomingConnections.get(targetId).push(conn);\n });\n // Find starting activity (use startActivityId or no incoming connections, or first activity)\n let currentActivityId = localState.currentActivityId;\n if (!currentActivityId) {\n // Use startActivityId if available\n if (graph.startActivityId) {\n currentActivityId = graph.startActivityId;\n }\n else {\n // Find root activity (no incoming connections)\n for (const activity of activities) {\n if (!incomingConnections.has(activity.id)) {\n currentActivityId = activity.id;\n break;\n }\n }\n // If no root found, use first activity\n if (!currentActivityId && activities.length > 0) {\n currentActivityId = activities[0].id;\n }\n }\n }\n // Execute workflow steps\n while (currentActivityId) {\n const activity = activityMap.get(currentActivityId);\n if (!activity) {\n break;\n }\n // Skip if already completed\n if (localState.completedActivities.has(currentActivityId)) {\n // Move to next activity\n const nextId = this.getNextActivityId(currentActivityId, outgoingConnections, localState.activityResults);\n currentActivityId = nextId ?? undefined;\n continue;\n }\n // Get activity definition to retrieve executionMode and title\n console.log(`[WorkflowLocalEngine] 🔍 Getting activity definition for: ${activity.name}`);\n const activityDefinition = await this.activityDefinitionService.getActivityByName(activity.name);\n console.log(`[WorkflowLocalEngine] 📋 Activity definition:`, {\n name: activityDefinition?.name,\n type: activityDefinition?.type,\n executionMode: activityDefinition?.executionMode,\n title: activityDefinition?.title,\n found: !!activityDefinition,\n });\n const executionMode = activityDefinition?.executionMode || 'frontend';\n const activityTitle = activityDefinition?.title;\n // Handle backend activities: skip\n if (executionMode === 'backend') {\n console.log(`[WorkflowLocalEngine] ⏭️ Skipping backend activity: ${activity.name} (${activity.id})`);\n localState.completedActivities.add(currentActivityId);\n localState.activityResults.set(currentActivityId, {\n output: null,\n outcome: 'Done',\n });\n // Move to next activity\n const nextId = this.getNextActivityId(currentActivityId, outgoingConnections, localState.activityResults);\n currentActivityId = nextId ?? undefined;\n continue;\n }\n // Handle frontend/both activities: return as pendingTask (do NOT execute)\n if (executionMode === 'frontend' || executionMode === 'both') {\n // Create task for external execution\n // Note: Expression evaluation will be done by ActivityExecutor\n const task = {\n taskToken: AXPDataGenerator.uuid(),\n activityId: activity.id,\n activityType: activity.name,\n activityName: activityTitle || undefined,\n executionMode: executionMode,\n input: activity.inputs || {}, // Pass raw inputs - executor will evaluate\n config: activity.customProperties || {},\n };\n // Store task token for secure resume\n this.taskTokens.set(task.taskToken, {\n instanceId: localState.instanceId,\n activityId: activity.id,\n });\n // Update state to indicate suspension\n localState.currentActivityId = currentActivityId;\n localState.state.status = 'suspended';\n localState.state.currentStepId = currentActivityId;\n // Return task immediately - AXPWorkflowManager will execute it\n return task;\n }\n // Move to next activity\n const nextId = this.getNextActivityId(currentActivityId, outgoingConnections, localState.activityResults);\n currentActivityId = nextId ?? undefined;\n }\n // Workflow completed\n localState.state.status = 'completed';\n localState.state.output = localState.state.variables;\n localState.currentActivityId = undefined;\n return null;\n }\n /**\n * Get next activity ID based on connections and outcomes.\n */\n getNextActivityId(currentActivityId, outgoingConnections, activityResults) {\n const connections = outgoingConnections.get(currentActivityId) || [];\n if (connections.length === 0) {\n return null; // No outgoing connections - workflow ends\n }\n // Get current activity result\n const result = activityResults.get(currentActivityId);\n const outcome = result?.outcome || 'Done';\n // Find connection matching outcome\n // Outcome matching is typically done via port name (e.g., \"Done\", \"Failed\")\n for (const conn of connections) {\n const sourcePort = conn.source.port || 'Done';\n if (sourcePort === outcome) {\n return conn.target.activtyName;\n }\n }\n // If no matching outcome, use first connection (default path)\n if (connections.length > 0) {\n return connections[0].target.activtyName;\n }\n return null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowLocalEngine, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowLocalEngine }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowLocalEngine, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctbG9jYWwtZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2VuZ2luZS9ydW50aW1lL3dvcmtmbG93LWxvY2FsLWVuZ2luZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWlCbkQsT0FBTyxFQUNMLHFCQUFxQixHQUV0QixNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWlCekQsWUFBWTtBQUVaOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsTUFBTSxPQUFPLHNCQUFzQjtJQURuQztRQUVFLCtDQUErQztRQUU5Qiw4QkFBeUIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNqRSxzQkFBaUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFN0YsWUFBWTtRQUVaLHdDQUF3QztRQUV4Qzs7OztXQUlHO1FBQ0ssY0FBUyxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBRTFEOzs7O1dBSUc7UUFDSyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXNELENBQUM7S0EwWHBGO0lBeFhDLFlBQVk7SUFFWiwwREFBMEQ7SUFFMUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFnQztRQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLCtDQUErQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFMUYsdUJBQXVCO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLGdCQUFn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LG1CQUFpRCxFQUNqRCxlQUE4RDtRQUU5RCxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFckUsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLENBQUMsMENBQTBDO1FBQ3pELENBQUM7UUFFRCw4QkFBOEI7UUFDOUIsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxPQUFPLElBQUksTUFBTSxDQUFDO1FBRTFDLG1DQUFtQztRQUNuQyw0RUFBNEU7UUFDNUUsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUM7WUFDOUMsSUFBSSxVQUFVLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUM7UUFFRCw4REFBOEQ7UUFDOUQsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDM0MsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0E1WVUsc0JBQXNCO21IQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFdvcmtmbG93RW5naW5lIH0gZnJvbSAnLi93b3JrZmxvdy1lbmdpbmUnO1xuaW1wb3J0IHtcbiAgQVhQU3RhcnRXb3JrZmxvd1JlcXVlc3QsXG4gIEFYUFN0YXJ0V29ya2Zsb3dSZXNwb25zZSxcbiAgQVhQUmVzdW1lV29ya2Zsb3dSZXF1ZXN0LFxuICBBWFBSZXN1bWVXb3JrZmxvd1Jlc3BvbnNlLFxuICBBWFBHZXRXb3JrZmxvd1N0YXRlUmVxdWVzdCxcbiAgQVhQV29ya2Zsb3dJbnN0YW5jZVN0YXRlLFxuICBBWFBXb3JrZmxvd1Rhc2ssXG59IGZyb20gJy4vd29ya2Zsb3ctcnVudGltZS50eXBlcyc7XG5pbXBvcnQge1xuICBBWFBXb3JrZmxvd0RlZmluaXRpb24sXG4gIEFYUFdvcmtmbG93R3JhcGgsXG4gIEFYUFdvcmtmbG93QWN0aXZpdHlJbnN0YW5jZSxcbiAgQVhQQ29ubmVjdGlvbixcbn0gZnJvbSAnLi4vd29ya2Zsb3ctZGVmaW5pdGlvbi50eXBlcyc7XG5pbXBvcnQge1xuICBBWFBfV09SS0ZMT1dfUFJPVklERVIsXG4gIEFYUFdvcmtmbG93UHJvdmlkZXIsXG59IGZyb20gJy4uL3dvcmtmbG93L3dvcmtmbG93LWRlZmluaXRpb24ucHJvdmlkZXInO1xuaW1wb3J0IHsgQVhQQWN0aXZpdHlEZWZpbml0aW9uU2VydmljZSB9IGZyb20gJy4uL2FjdGl2aXR5L2FjdGl2aXR5LWRlZmluaXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBWFBEYXRhR2VuZXJhdG9yIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcblxuLy8jcmVnaW9uIC0tLS0gICBUeXBlcyAmIEludGVyZmFjZXMgICAtLS0tXG5cbi8qKlxuICogSW50ZXJuYWwgd29ya2Zsb3cgZXhlY3V0aW9uIHN0YXRlLlxuICovXG5pbnRlcmZhY2UgTG9jYWxXb3JrZmxvd1N0YXRlIHtcbiAgaW5zdGFuY2VJZDogc3RyaW5nO1xuICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gIGRlZmluaXRpb246IEFYUFdvcmtmbG93RGVmaW5pdGlvbjtcbiAgc3RhdGU6IEFYUFdvcmtmbG93SW5zdGFuY2VTdGF0ZTtcbiAgY3VycmVudEFjdGl2aXR5SWQ/OiBzdHJpbmc7XG4gIGNvbXBsZXRlZEFjdGl2aXRpZXM6IFNldDxzdHJpbmc+O1xuICBhY3Rpdml0eVJlc3VsdHM6IE1hcDxzdHJpbmcsIHsgb3V0cHV0OiBhbnk7IG91dGNvbWU6IHN0cmluZyB9Pjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8qKlxuICogTG9jYWwgZW5naW5lIGltcGxlbWVudGF0aW9uIHRoYXQgbWFuYWdlcyB3b3JrZmxvdyBwcm9ncmVzc2lvbiBhbmQgc3RhdGUuXG4gKiBcbiAqIFRoaXMgZW5naW5lOlxuICogLSBSZXR1cm5zIGZyb250ZW5kL2JvdGggYWN0aXZpdGllcyBhcyBwZW5kaW5nVGFzayAoZG9lcyBOT1QgZXhlY3V0ZSB0aGVtKVxuICogLSBTa2lwcyBiYWNrZW5kIGFjdGl2aXRpZXMgKGRvZXMgbm90IGVycm9yLCBjb250aW51ZXMgZXhlY3V0aW9uKVxuICogLSBNYWludGFpbnMgd29ya2Zsb3cgc3RhdGUgaW4gbWVtb3J5XG4gKiAtIERvZXMgbm90IHJlcXVpcmUgYmFja2VuZCBBUEkgY2FsbHNcbiAqIFxuICogRXhlY3V0aW9uIG9mIGZyb250ZW5kIHRhc2tzIGlzIGhhbmRsZWQgYnkgQVhQV29ya2Zsb3dNYW5hZ2VyIHZpYSBBY3Rpdml0eUV4ZWN1dG9yLlxuICogVGhpcyBlbmdpbmUgb25seSBtYW5hZ2VzIHdvcmtmbG93IHByb2dyZXNzaW9uIGFuZCBzdGF0ZSBzdG9yYWdlLlxuICogXG4gKiBUaGlzIGlzIHRoZSBERUZBVUxUIGVuZ2luZSBwcm92aWRlci4gQXBwbGljYXRpb25zIGNhbiBvdmVycmlkZSBpdCB3aXRoXG4gKiBhbiBBUEktYmFzZWQgZW5naW5lIGltcGxlbWVudGF0aW9uLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhQV29ya2Zsb3dMb2NhbEVuZ2luZSBpbXBsZW1lbnRzIEFYUFdvcmtmbG93RW5naW5lIHtcbiAgLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlcyAmIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2aXR5RGVmaW5pdGlvblNlcnZpY2UgPSBpbmplY3QoQVhQQWN0aXZpdHlEZWZpbml0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya2Zsb3dQcm92aWRlcnMgPSBpbmplY3QoQVhQX1dPUktGTE9XX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pIHx8IFtdO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSW5zdGFuY2UgU3RvcmFnZSAgIC0tLS1cblxuICAvKipcbiAgICogSW4tbWVtb3J5IHN0b3JhZ2UgZm9yIHdvcmtmbG93IGluc3RhbmNlcy5cbiAgICogS2V5OiBpbnN0YW5jZUlkXG4gICAqIFZhbHVlOiBMb2NhbFdvcmtmbG93U3RhdGVcbiAgICovXG4gIHByaXZhdGUgaW5zdGFuY2VzID0gbmV3IE1hcDxzdHJpbmcsIExvY2FsV29ya2Zsb3dTdGF0ZT4oKTtcblxuICAvKipcbiAgICogVGFzayB0b2tlbiBzdG9yYWdlIGZvciBzZWN1cmUgcmVzdW1lIG9wZXJhdGlvbnMuXG4gICAqIEtleTogdGFza1Rva2VuXG4gICAqIFZhbHVlOiB7IGluc3RhbmNlSWQsIGFjdGl2aXR5SWQgfVxuICAgKi9cbiAgcHJpdmF0ZSB0YXNrVG9rZW5zID0gbmV3IE1hcDxzdHJpbmcsIHsgaW5zdGFuY2VJZDogc3RyaW5nOyBhY3Rpdml0eUlkOiBzdHJpbmcgfT4oKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBNZXRob2RzIChBWFBXb3JrZmxvd0VuZ2luZSkgICAtLS0tXG5cbiAgLyoqXG4gICAqIFN0YXJ0IGEgbmV3IHdvcmtmbG93IGluc3RhbmNlLlxuICAgKiBcbiAgICogQ3JlYXRlcyBhbiBpbi1tZW1vcnkgd29ya2Zsb3cgaW5zdGFuY2UgYW5kIHByb2dyZXNzZXMgaXQuXG4gICAqIEZyb250ZW5kL2JvdGggYWN0aXZpdGllcyBhcmUgcmV0dXJuZWQgYXMgcGVuZGluZ1Rhc2sgZm9yIGV4dGVybmFsIGV4ZWN1dGlvbi5cbiAgICogQmFja2VuZCBhY3Rpdml0aWVzIGFyZSBza2lwcGVkLlxuICAgKi9cbiAgYXN5bmMgc3RhcnQocmVxdWVzdDogQVhQU3RhcnRXb3JrZmxvd1JlcXVlc3QpOiBQcm9taXNlPEFYUFN0YXJ0V29ya2Zsb3dSZXNwb25zZT4ge1xuICAgIGNvbnNvbGUubG9nKGBbV29ya2Zsb3dMb2NhbEVuZ2luZV0g8J+agCBTdGFydGluZyB3b3JrZmxvdzogJHtyZXF1ZXN0LndvcmtmbG93SWR9YCwgcmVxdWVzdCk7XG4gICAgXG4gICAgLy8gR2VuZXJhdGUgaW5zdGFuY2UgSURcbiAgICBjb25zdCBpbnN0YW5jZUlkID0gQVhQRGF0YUdlbmVyYXRvci51dWlkKCk7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcblxuICAgIC8vIExvYWQgd29ya2Zsb3cgZGVmaW5pdGlvblxuICAgIGNvbnNvbGUubG9nKGBbV29ya2Zsb3dMb2NhbEVuZ2luZV0g8J+TpSBMb2FkaW5nIHdvcmtmbG93IGRlZmluaXRpb246ICR7cmVxdWVzdC53b3JrZmxvd0lkfWApO1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBhd2FpdCB0aGlzLmdldERlZmluaXRpb24ocmVxdWVzdC53b3JrZmxvd0lkKTtcbiAgICBpZiAoIWRlZmluaXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtXb3JrZmxvd0xvY2FsRW5naW5lXSDinYwgV29ya2Zsb3cgZGVmaW5pdGlvbiBub3QgZm91bmQ6ICR7cmVxdWVzdC53b3JrZmxvd0lkfWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXb3JrZmxvdyBkZWZpbml0aW9uIG5vdCBmb3VuZDogJHtyZXF1ZXN0LndvcmtmbG93SWR9YCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coYFtXb3JrZmxvd0xvY2FsRW5naW5lXSDinIUgRGVmaW5pdGlvbiBsb2FkZWQ6YCwge1xuICAgICAgbmFtZTogZGVmaW5pdGlvbi5uYW1lLFxuICAgICAgYWN0aXZpdGllc0NvdW50OiBkZWZpbml0aW9uLmdyYXBoPy5hY3Rpdml0aWVzPy5sZW5ndGggfHwgMCxcbiAgICAgIGNvbm5lY3Rpb25zQ291bnQ6IGRlZmluaXRpb24uZ3JhcGg/LmNvbm5lY3Rpb25zPy5sZW5ndGggfHwgMCxcbiAgICB9KTtcblxuICAgIC8vIEluaXRpYWxpemUgd29ya2Zsb3cgc3RhdGVcbiAgICBjb25zdCBzdGF0ZTogQVhQV29ya2Zsb3dJbnN0YW5jZVN0YXRlID0ge1xuICAgICAgaW5zdGFuY2VJZCxcbiAgICAgIHdvcmtmbG93SWQ6IHJlcXVlc3Qud29ya2Zsb3dJZCxcbiAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgdmFyaWFibGVzOiB7fSxcbiAgICAgIGlucHV0OiByZXF1ZXN0LmlucHV0IHx8IHt9LFxuICAgICAgb3V0cHV0OiB1bmRlZmluZWQsXG4gICAgICBsYXN0VXBkYXRlZDogbm93LFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgbG9jYWwgc3RhdGVcbiAgICBjb25zdCBsb2NhbFN0YXRlOiBMb2NhbFdvcmtmbG93U3RhdGUgPSB7XG4gICAgICBpbnN0YW5jZUlkLFxuICAgICAgd29ya2Zsb3dJZDogcmVxdWVzdC53b3JrZmxvd0lkLFxuICAgICAgZGVmaW5pdGlvbixcbiAgICAgIHN0YXRlLFxuICAgICAgY29tcGxldGVkQWN0aXZpdGllczogbmV3IFNldCgpLFxuICAgICAgYWN0aXZpdHlSZXN1bHRzOiBuZXcgTWFwKCksXG4gICAgfTtcblxuICAgIC8vIFN0b3JlIGluc3RhbmNlXG4gICAgdGhpcy5pbnN0YW5jZXMuc2V0KGluc3RhbmNlSWQsIGxvY2FsU3RhdGUpO1xuXG4gICAgLy8gRXhlY3V0ZSB3b3JrZmxvdyBzdGVwc1xuICAgIGNvbnNvbGUubG9nKGBbV29ya2Zsb3dMb2NhbEVuZ2luZV0g4pqZ77iPIEV4ZWN1dGluZyB3b3JrZmxvdyBzdGVwcy4uLmApO1xuICAgIGNvbnN0IHBlbmRpbmdUYXNrID0gYXdhaXQgdGhpcy5leGVjdXRlV29ya2Zsb3dTdGVwcyhsb2NhbFN0YXRlKTtcblxuICAgIC8vIFVwZGF0ZSBzdGF0ZVxuICAgIGxvY2FsU3RhdGUuc3RhdGUubGFzdFVwZGF0ZWQgPSBuZXcgRGF0ZSgpO1xuXG4gICAgY29uc29sZS5sb2coYFtXb3JrZmxvd0xvY2FsRW5naW5lXSDinIUgV29ya2Zsb3cgc3RhcnRlZDpgLCB7XG4gICAgICBpbnN0YW5jZUlkLFxuICAgICAgc3RhdHVzOiBsb2NhbFN0YXRlLnN0YXRlLnN0YXR1cyxcbiAgICAgIGhhc1BlbmRpbmdUYXNrOiAhIXBlbmRpbmdUYXNrLFxuICAgICAgcGVuZGluZ1Rhc2tUeXBlOiBwZW5kaW5nVGFzaz8uYWN0aXZpdHlUeXBlLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGluc3RhbmNlSWQsXG4gICAgICBzdGF0ZTogbG9jYWxTdGF0ZS5zdGF0ZSxcbiAgICAgIHBlbmRpbmdUYXNrOiBwZW5kaW5nVGFzayB8fCBudWxsLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmVzdW1lIGEgc3VzcGVuZGVkIHdvcmtmbG93IGluc3RhbmNlLlxuICAgKiBcbiAgICogVmFsaWRhdGVzIHRhc2sgdG9rZW4sIGFwcGxpZXMgZXh0ZXJuYWxseSBleGVjdXRlZCByZXN1bHQsXG4gICAqIGFuZCBjb250aW51ZXMgcHJvZ3Jlc3Npbmcgd29ya2Zsb3cgc3RlcHMuXG4gICAqL1xuICBhc3luYyByZXN1bWUocmVxdWVzdDogQVhQUmVzdW1lV29ya2Zsb3dSZXF1ZXN0KTogUHJvbWlzZTxBWFBSZXN1bWVXb3JrZmxvd1Jlc3BvbnNlPiB7XG4gICAgLy8gVmFsaWRhdGUgdGFzayB0b2tlblxuICAgIGNvbnN0IHRva2VuSW5mbyA9IHRoaXMudGFza1Rva2Vucy5nZXQocmVxdWVzdC50YXNrVG9rZW4pO1xuICAgIGlmICghdG9rZW5JbmZvIHx8IHRva2VuSW5mby5pbnN0YW5jZUlkICE9PSByZXF1ZXN0Lmluc3RhbmNlSWQgfHwgdG9rZW5JbmZvLmFjdGl2aXR5SWQgIT09IHJlcXVlc3Quc3RlcElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdGFzayB0b2tlbicpO1xuICAgIH1cblxuICAgIC8vIEdldCBpbnN0YW5jZVxuICAgIGNvbnN0IGxvY2FsU3RhdGUgPSB0aGlzLmluc3RhbmNlcy5nZXQocmVxdWVzdC5pbnN0YW5jZUlkKTtcbiAgICBpZiAoIWxvY2FsU3RhdGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgV29ya2Zsb3cgaW5zdGFuY2Ugbm90IGZvdW5kOiAke3JlcXVlc3QuaW5zdGFuY2VJZH1gKTtcbiAgICB9XG5cbiAgICAvLyBTdG9yZSBhY3Rpdml0eSByZXN1bHQgKGZyb20gZXh0ZXJuYWwgZXhlY3V0aW9uKVxuICAgIGxvY2FsU3RhdGUuYWN0aXZpdHlSZXN1bHRzLnNldChyZXF1ZXN0LnN0ZXBJZCwge1xuICAgICAgb3V0cHV0OiByZXF1ZXN0LnVzZXJJbnB1dCB8fCB7fSxcbiAgICAgIG91dGNvbWU6IHJlcXVlc3Qub3V0Y29tZSxcbiAgICB9KTtcbiAgICBsb2NhbFN0YXRlLmNvbXBsZXRlZEFjdGl2aXRpZXMuYWRkKHJlcXVlc3Quc3RlcElkKTtcblxuICAgIC8vIE1lcmdlIG91dHB1dC91c2VySW5wdXQgaW50byBzdGF0ZSB2YXJpYWJsZXNcbiAgICBpZiAocmVxdWVzdC51c2VySW5wdXQpIHtcbiAgICAgIGxvY2FsU3RhdGUuc3RhdGUudmFyaWFibGVzID0ge1xuICAgICAgICAuLi5sb2NhbFN0YXRlLnN0YXRlLnZhcmlhYmxlcyxcbiAgICAgICAgLi4uKHJlcXVlc3QudXNlcklucHV0IHx8IHt9KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gTWFyayBhY3Rpdml0eSBhcyBjb21wbGV0ZWQgYW5kIGNvbnRpbnVlIHByb2dyZXNzaW9uXG4gICAgLy8gQ29udGludWUgcHJvZ3Jlc3Npbmcgd29ya2Zsb3cgc3RlcHMgKHNraXBwaW5nIGJhY2tlbmQgYWN0aXZpdGllcylcbiAgICBjb25zdCBuZXh0VGFzayA9IGF3YWl0IHRoaXMuZXhlY3V0ZVdvcmtmbG93U3RlcHMobG9jYWxTdGF0ZSk7XG5cbiAgICAvLyBVcGRhdGUgc3RhdGVcbiAgICBsb2NhbFN0YXRlLnN0YXRlLmxhc3RVcGRhdGVkID0gbmV3IERhdGUoKTtcblxuICAgIC8vIERldGVybWluZSBmaW5hbCBzdGF0dXNcbiAgICBpZiAoIW5leHRUYXNrICYmIGxvY2FsU3RhdGUuc3RhdGUuc3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgIGxvY2FsU3RhdGUuc3RhdGUuc3RhdHVzID0gJ2NvbXBsZXRlZCc7XG4gICAgICBsb2NhbFN0YXRlLnN0YXRlLm91dHB1dCA9IGxvY2FsU3RhdGUuc3RhdGUudmFyaWFibGVzO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBvdXRwdXQ6IHJlcXVlc3QudXNlcklucHV0IHx8IHt9LFxuICAgICAgb3V0Y29tZXM6IHsgW3JlcXVlc3Qub3V0Y29tZV06IHRydWUgfSxcbiAgICAgIHN0YXRlOiBsb2NhbFN0YXRlLnN0YXRlLFxuICAgICAgbmV4dFRhc2s6IG5leHRUYXNrIHx8IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCB3b3JrZmxvdyBpbnN0YW5jZSBzdGF0ZS5cbiAgICovXG4gIGFzeW5jIGdldFN0YXRlKHJlcXVlc3Q6IEFYUEdldFdvcmtmbG93U3RhdGVSZXF1ZXN0KTogUHJvbWlzZTxBWFBXb3JrZmxvd0luc3RhbmNlU3RhdGU+IHtcbiAgICBjb25zdCBsb2NhbFN0YXRlID0gdGhpcy5pbnN0YW5jZXMuZ2V0KHJlcXVlc3QuaW5zdGFuY2VJZCk7XG4gICAgaWYgKCFsb2NhbFN0YXRlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdvcmtmbG93IGluc3RhbmNlIG5vdCBmb3VuZDogJHtyZXF1ZXN0Lmluc3RhbmNlSWR9YCk7XG4gICAgfVxuXG4gICAgLy8gTm9ybWFsaXplIGxhc3RVcGRhdGVkIHRvIERhdGUgKGZvciBjYWNoZSBzYWZldHkpXG4gICAgY29uc3Qgc3RhdGUgPSB7IC4uLmxvY2FsU3RhdGUuc3RhdGUgfTtcbiAgICBpZiAoc3RhdGUubGFzdFVwZGF0ZWQgJiYgIShzdGF0ZS5sYXN0VXBkYXRlZCBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICBzdGF0ZS5sYXN0VXBkYXRlZCA9IG5ldyBEYXRlKHN0YXRlLmxhc3RVcGRhdGVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFByaXZhdGUgTWV0aG9kcyAgIC0tLS1cblxuICAvKipcbiAgICogR2V0IHdvcmtmbG93IGRlZmluaXRpb24gZnJvbSBhdmFpbGFibGUgcHJvdmlkZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBnZXREZWZpbml0aW9uKHdvcmtmbG93SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQV29ya2Zsb3dEZWZpbml0aW9uIHwgbnVsbD4ge1xuICAgIC8vIFRyeSBhbGwgcHJvdmlkZXJzIGluIG9yZGVyXG4gICAgY29uc3QgcmVzb2x2ZWRQcm92aWRlcnMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQodGhpcy53b3JrZmxvd1Byb3ZpZGVycyk7XG4gICAgZm9yIChjb25zdCBwIG9mIHJlc29sdmVkUHJvdmlkZXJzKSB7XG4gICAgICBpZiAocC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnICYmIHAudmFsdWUpIHtcbiAgICAgICAgY29uc3QgcHJvdmlkZXIgPSBwLnZhbHVlO1xuICAgICAgICAvLyBDaGVjayBpZiBwcm92aWRlciBoYXMgZ2V0QnlOYW1lIG1ldGhvZFxuICAgICAgICBpZiAodHlwZW9mIHByb3ZpZGVyLmdldEJ5TmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkZWZpbml0aW9uID0gYXdhaXQgcHJvdmlkZXIuZ2V0QnlOYW1lKHdvcmtmbG93SWQpO1xuICAgICAgICAgICAgaWYgKGRlZmluaXRpb24pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBDb250aW51ZSBvbiBlcnJvciAtIHRyeSBvdGhlciBwcm92aWRlcnNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9ncmVzcyB3b3JrZmxvdyBzdGVwcyBzdGFydGluZyBmcm9tIHRoZSBjdXJyZW50IHBvc2l0aW9uLlxuICAgKiBcbiAgICogRm9yIGZyb250ZW5kL2JvdGggYWN0aXZpdGllczogcmV0dXJucyB0YXNrIGltbWVkaWF0ZWx5IChzdXNwZW5kcyB3b3JrZmxvdykuXG4gICAqIEZvciBiYWNrZW5kIGFjdGl2aXRpZXM6IHNraXBzIGFuZCBjb250aW51ZXMuXG4gICAqIFxuICAgKiBSZXR1cm5zIHRoZSBuZXh0IHBlbmRpbmcgdGFzayAoaWYgZnJvbnRlbmQgYWN0aXZpdHkgZm91bmQpIG9yIG51bGwgKGlmIGNvbXBsZXRlZCkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVXb3JrZmxvd1N0ZXBzKGxvY2FsU3RhdGU6IExvY2FsV29ya2Zsb3dTdGF0ZSk6IFByb21pc2U8QVhQV29ya2Zsb3dUYXNrIHwgbnVsbD4ge1xuICAgIGNvbnN0IGdyYXBoID0gbG9jYWxTdGF0ZS5kZWZpbml0aW9uLmdyYXBoO1xuICAgIGNvbnN0IGFjdGl2aXRpZXMgPSBncmFwaC5hY3Rpdml0aWVzIHx8IFtdO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25zID0gZ3JhcGguY29ubmVjdGlvbnMgfHwgW107XG5cbiAgICAvLyBCdWlsZCBhY3Rpdml0eSBtYXBcbiAgICBjb25zdCBhY3Rpdml0eU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBWFBXb3JrZmxvd0FjdGl2aXR5SW5zdGFuY2U+KCk7XG4gICAgYWN0aXZpdGllcy5mb3JFYWNoKGFjdGl2aXR5ID0+IHtcbiAgICAgIGFjdGl2aXR5TWFwLnNldChhY3Rpdml0eS5pZCwgYWN0aXZpdHkpO1xuICAgIH0pO1xuXG4gICAgLy8gQnVpbGQgY29ubmVjdGlvbiBncmFwaFxuICAgIGNvbnN0IG91dGdvaW5nQ29ubmVjdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgQVhQQ29ubmVjdGlvbltdPigpO1xuICAgIGNvbnN0IGluY29taW5nQ29ubmVjdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgQVhQQ29ubmVjdGlvbltdPigpO1xuXG4gICAgY29ubmVjdGlvbnMuZm9yRWFjaChjb25uID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZUlkID0gY29ubi5zb3VyY2UuYWN0aXZ0eU5hbWU7XG4gICAgICBjb25zdCB0YXJnZXRJZCA9IGNvbm4udGFyZ2V0LmFjdGl2dHlOYW1lO1xuXG4gICAgICBpZiAoIW91dGdvaW5nQ29ubmVjdGlvbnMuaGFzKHNvdXJjZUlkKSkge1xuICAgICAgICBvdXRnb2luZ0Nvbm5lY3Rpb25zLnNldChzb3VyY2VJZCwgW10pO1xuICAgICAgfVxuICAgICAgb3V0Z29pbmdDb25uZWN0aW9ucy5nZXQoc291cmNlSWQpIS5wdXNoKGNvbm4pO1xuXG4gICAgICBpZiAoIWluY29taW5nQ29ubmVjdGlvbnMuaGFzKHRhcmdldElkKSkge1xuICAgICAgICBpbmNvbWluZ0Nvbm5lY3Rpb25zLnNldCh0YXJnZXRJZCwgW10pO1xuICAgICAgfVxuICAgICAgaW5jb21pbmdDb25uZWN0aW9ucy5nZXQodGFyZ2V0SWQpIS5wdXNoKGNvbm4pO1xuICAgIH0pO1xuXG4gICAgLy8gRmluZCBzdGFydGluZyBhY3Rpdml0eSAodXNlIHN0YXJ0QWN0aXZpdHlJZCBvciBubyBpbmNvbWluZyBjb25uZWN0aW9ucywgb3IgZmlyc3QgYWN0aXZpdHkpXG4gICAgbGV0IGN1cnJlbnRBY3Rpdml0eUlkID0gbG9jYWxTdGF0ZS5jdXJyZW50QWN0aXZpdHlJZDtcbiAgICBpZiAoIWN1cnJlbnRBY3Rpdml0eUlkKSB7XG4gICAgICAvLyBVc2Ugc3RhcnRBY3Rpdml0eUlkIGlmIGF2YWlsYWJsZVxuICAgICAgaWYgKGdyYXBoLnN0YXJ0QWN0aXZpdHlJZCkge1xuICAgICAgICBjdXJyZW50QWN0aXZpdHlJZCA9IGdyYXBoLnN0YXJ0QWN0aXZpdHlJZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZpbmQgcm9vdCBhY3Rpdml0eSAobm8gaW5jb21pbmcgY29ubmVjdGlvbnMpXG4gICAgICAgIGZvciAoY29uc3QgYWN0aXZpdHkgb2YgYWN0aXZpdGllcykge1xuICAgICAgICAgIGlmICghaW5jb21pbmdDb25uZWN0aW9ucy5oYXMoYWN0aXZpdHkuaWQpKSB7XG4gICAgICAgICAgICBjdXJyZW50QWN0aXZpdHlJZCA9IGFjdGl2aXR5LmlkO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIElmIG5vIHJvb3QgZm91bmQsIHVzZSBmaXJzdCBhY3Rpdml0eVxuICAgICAgICBpZiAoIWN1cnJlbnRBY3Rpdml0eUlkICYmIGFjdGl2aXRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGN1cnJlbnRBY3Rpdml0eUlkID0gYWN0aXZpdGllc1swXS5pZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgd29ya2Zsb3cgc3RlcHNcbiAgICB3aGlsZSAoY3VycmVudEFjdGl2aXR5SWQpIHtcbiAgICAgIGNvbnN0IGFjdGl2aXR5ID0gYWN0aXZpdHlNYXAuZ2V0KGN1cnJlbnRBY3Rpdml0eUlkKTtcbiAgICAgIGlmICghYWN0aXZpdHkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIFNraXAgaWYgYWxyZWFkeSBjb21wbGV0ZWRcbiAgICAgIGlmIChsb2NhbFN0YXRlLmNvbXBsZXRlZEFjdGl2aXRpZXMuaGFzKGN1cnJlbnRBY3Rpdml0eUlkKSkge1xuICAgICAgICAvLyBNb3ZlIHRvIG5leHQgYWN0aXZpdHlcbiAgICAgICAgY29uc3QgbmV4dElkID0gdGhpcy5nZXROZXh0QWN0aXZpdHlJZChcbiAgICAgICAgICBjdXJyZW50QWN0aXZpdHlJZCxcbiAgICAgICAgICBvdXRnb2luZ0Nvbm5lY3Rpb25zLFxuICAgICAgICAgIGxvY2FsU3RhdGUuYWN0aXZpdHlSZXN1bHRzXG4gICAgICAgICk7XG4gICAgICAgIGN1cnJlbnRBY3Rpdml0eUlkID0gbmV4dElkID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEdldCBhY3Rpdml0eSBkZWZpbml0aW9uIHRvIHJldHJpZXZlIGV4ZWN1dGlvbk1vZGUgYW5kIHRpdGxlXG4gICAgICBjb25zb2xlLmxvZyhgW1dvcmtmbG93TG9jYWxFbmdpbmVdIPCflI0gR2V0dGluZyBhY3Rpdml0eSBkZWZpbml0aW9uIGZvcjogJHthY3Rpdml0eS5uYW1lfWApO1xuICAgICAgY29uc3QgYWN0aXZpdHlEZWZpbml0aW9uID0gYXdhaXQgdGhpcy5hY3Rpdml0eURlZmluaXRpb25TZXJ2aWNlLmdldEFjdGl2aXR5QnlOYW1lKGFjdGl2aXR5Lm5hbWUpO1xuICAgICAgY29uc29sZS5sb2coYFtXb3JrZmxvd0xvY2FsRW5naW5lXSDwn5OLIEFjdGl2aXR5IGRlZmluaXRpb246YCwge1xuICAgICAgICBuYW1lOiBhY3Rpdml0eURlZmluaXRpb24/Lm5hbWUsXG4gICAgICAgIHR5cGU6IGFjdGl2aXR5RGVmaW5pdGlvbj8udHlwZSxcbiAgICAgICAgZXhlY3V0aW9uTW9kZTogYWN0aXZpdHlEZWZpbml0aW9uPy5leGVjdXRpb25Nb2RlLFxuICAgICAgICB0aXRsZTogYWN0aXZpdHlEZWZpbml0aW9uPy50aXRsZSxcbiAgICAgICAgZm91bmQ6ICEhYWN0aXZpdHlEZWZpbml0aW9uLFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbk1vZGUgPSBhY3Rpdml0eURlZmluaXRpb24/LmV4ZWN1dGlvbk1vZGUgfHwgJ2Zyb250ZW5kJztcbiAgICAgIGNvbnN0IGFjdGl2aXR5VGl0bGUgPSBhY3Rpdml0eURlZmluaXRpb24/LnRpdGxlO1xuXG4gICAgICAvLyBIYW5kbGUgYmFja2VuZCBhY3Rpdml0aWVzOiBza2lwXG4gICAgICBpZiAoZXhlY3V0aW9uTW9kZSA9PT0gJ2JhY2tlbmQnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBbV29ya2Zsb3dMb2NhbEVuZ2luZV0g4o+t77iPIFNraXBwaW5nIGJhY2tlbmQgYWN0aXZpdHk6ICR7YWN0aXZpdHkubmFtZX0gKCR7YWN0aXZpdHkuaWR9KWBcbiAgICAgICAgKTtcbiAgICAgICAgbG9jYWxTdGF0ZS5jb21wbGV0ZWRBY3Rpdml0aWVzLmFkZChjdXJyZW50QWN0aXZpdHlJZCk7XG4gICAgICAgIGxvY2FsU3RhdGUuYWN0aXZpdHlSZXN1bHRzLnNldChjdXJyZW50QWN0aXZpdHlJZCwge1xuICAgICAgICAgIG91dHB1dDogbnVsbCxcbiAgICAgICAgICBvdXRjb21lOiAnRG9uZScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE1vdmUgdG8gbmV4dCBhY3Rpdml0eVxuICAgICAgICBjb25zdCBuZXh0SWQgPSB0aGlzLmdldE5leHRBY3Rpdml0eUlkKFxuICAgICAgICAgIGN1cnJlbnRBY3Rpdml0eUlkLFxuICAgICAgICAgIG91dGdvaW5nQ29ubmVjdGlvbnMsXG4gICAgICAgICAgbG9jYWxTdGF0ZS5hY3Rpdml0eVJlc3VsdHNcbiAgICAgICAgKTtcbiAgICAgICAgY3VycmVudEFjdGl2aXR5SWQgPSBuZXh0SWQgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGZyb250ZW5kL2JvdGggYWN0aXZpdGllczogcmV0dXJuIGFzIHBlbmRpbmdUYXNrIChkbyBOT1QgZXhlY3V0ZSlcbiAgICAgIGlmIChleGVjdXRpb25Nb2RlID09PSAnZnJvbnRlbmQnIHx8IGV4ZWN1dGlvbk1vZGUgPT09ICdib3RoJykge1xuICAgICAgICAvLyBDcmVhdGUgdGFzayBmb3IgZXh0ZXJuYWwgZXhlY3V0aW9uXG4gICAgICAgIC8vIE5vdGU6IEV4cHJlc3Npb24gZXZhbHVhdGlvbiB3aWxsIGJlIGRvbmUgYnkgQWN0aXZpdHlFeGVjdXRvclxuICAgICAgICBjb25zdCB0YXNrOiBBWFBXb3JrZmxvd1Rhc2sgPSB7XG4gICAgICAgICAgdGFza1Rva2VuOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSxcbiAgICAgICAgICBhY3Rpdml0eUlkOiBhY3Rpdml0eS5pZCxcbiAgICAgICAgICBhY3Rpdml0eVR5cGU6IGFjdGl2aXR5Lm5hbWUsXG4gICAgICAgICAgYWN0aXZpdHlOYW1lOiBhY3Rpdml0eVRpdGxlIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICBleGVjdXRpb25Nb2RlOiBleGVjdXRpb25Nb2RlIGFzICdmcm9udGVuZCcgfCAnYmFja2VuZCcgfCAnYm90aCcsXG4gICAgICAgICAgaW5wdXQ6IGFjdGl2aXR5LmlucHV0cyB8fCB7fSwgLy8gUGFzcyByYXcgaW5wdXRzIC0gZXhlY3V0b3Igd2lsbCBldmFsdWF0ZVxuICAgICAgICAgIGNvbmZpZzogYWN0aXZpdHkuY3VzdG9tUHJvcGVydGllcyB8fCB7fSxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBTdG9yZSB0YXNrIHRva2VuIGZvciBzZWN1cmUgcmVzdW1lXG4gICAgICAgIHRoaXMudGFza1Rva2Vucy5zZXQodGFzay50YXNrVG9rZW4sIHtcbiAgICAgICAgICBpbnN0YW5jZUlkOiBsb2NhbFN0YXRlLmluc3RhbmNlSWQsXG4gICAgICAgICAgYWN0aXZpdHlJZDogYWN0aXZpdHkuaWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBzdGF0ZSB0byBpbmRpY2F0ZSBzdXNwZW5zaW9uXG4gICAgICAgIGxvY2FsU3RhdGUuY3VycmVudEFjdGl2aXR5SWQgPSBjdXJyZW50QWN0aXZpdHlJZDtcbiAgICAgICAgbG9jYWxTdGF0ZS5zdGF0ZS5zdGF0dXMgPSAnc3VzcGVuZGVkJztcbiAgICAgICAgbG9jYWxTdGF0ZS5zdGF0ZS5jdXJyZW50U3RlcElkID0gY3VycmVudEFjdGl2aXR5SWQ7XG5cbiAgICAgICAgLy8gUmV0dXJuIHRhc2sgaW1tZWRpYXRlbHkgLSBBWFBXb3JrZmxvd01hbmFnZXIgd2lsbCBleGVjdXRlIGl0XG4gICAgICAgIHJldHVybiB0YXNrO1xuICAgICAgfVxuXG4gICAgICAvLyBNb3ZlIHRvIG5leHQgYWN0aXZpdHlcbiAgICAgIGNvbnN0IG5leHRJZCA9IHRoaXMuZ2V0TmV4dEFjdGl2aXR5SWQoXG4gICAgICAgIGN1cnJlbnRBY3Rpdml0eUlkLFxuICAgICAgICBvdXRnb2luZ0Nvbm5lY3Rpb25zLFxuICAgICAgICBsb2NhbFN0YXRlLmFjdGl2aXR5UmVzdWx0c1xuICAgICAgKTtcbiAgICAgIGN1cnJlbnRBY3Rpdml0eUlkID0gbmV4dElkID8/IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBXb3JrZmxvdyBjb21wbGV0ZWRcbiAgICBsb2NhbFN0YXRlLnN0YXRlLnN0YXR1cyA9ICdjb21wbGV0ZWQnO1xuICAgIGxvY2FsU3RhdGUuc3RhdGUub3V0cHV0ID0gbG9jYWxTdGF0ZS5zdGF0ZS52YXJpYWJsZXM7XG4gICAgbG9jYWxTdGF0ZS5jdXJyZW50QWN0aXZpdHlJZCA9IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBuZXh0IGFjdGl2aXR5IElEIGJhc2VkIG9uIGNvbm5lY3Rpb25zIGFuZCBvdXRjb21lcy5cbiAgICovXG4gIHByaXZhdGUgZ2V0TmV4dEFjdGl2aXR5SWQoXG4gICAgY3VycmVudEFjdGl2aXR5SWQ6IHN0cmluZyxcbiAgICBvdXRnb2luZ0Nvbm5lY3Rpb25zOiBNYXA8c3RyaW5nLCBBWFBDb25uZWN0aW9uW10+LFxuICAgIGFjdGl2aXR5UmVzdWx0czogTWFwPHN0cmluZywgeyBvdXRwdXQ6IGFueTsgb3V0Y29tZTogc3RyaW5nIH0+XG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGNvbm5lY3Rpb25zID0gb3V0Z29pbmdDb25uZWN0aW9ucy5nZXQoY3VycmVudEFjdGl2aXR5SWQpIHx8IFtdO1xuXG4gICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7IC8vIE5vIG91dGdvaW5nIGNvbm5lY3Rpb25zIC0gd29ya2Zsb3cgZW5kc1xuICAgIH1cblxuICAgIC8vIEdldCBjdXJyZW50IGFjdGl2aXR5IHJlc3VsdFxuICAgIGNvbnN0IHJlc3VsdCA9IGFjdGl2aXR5UmVzdWx0cy5nZXQoY3VycmVudEFjdGl2aXR5SWQpO1xuICAgIGNvbnN0IG91dGNvbWUgPSByZXN1bHQ/Lm91dGNvbWUgfHwgJ0RvbmUnO1xuXG4gICAgLy8gRmluZCBjb25uZWN0aW9uIG1hdGNoaW5nIG91dGNvbWVcbiAgICAvLyBPdXRjb21lIG1hdGNoaW5nIGlzIHR5cGljYWxseSBkb25lIHZpYSBwb3J0IG5hbWUgKGUuZy4sIFwiRG9uZVwiLCBcIkZhaWxlZFwiKVxuICAgIGZvciAoY29uc3QgY29ubiBvZiBjb25uZWN0aW9ucykge1xuICAgICAgY29uc3Qgc291cmNlUG9ydCA9IGNvbm4uc291cmNlLnBvcnQgfHwgJ0RvbmUnO1xuICAgICAgaWYgKHNvdXJjZVBvcnQgPT09IG91dGNvbWUpIHtcbiAgICAgICAgcmV0dXJuIGNvbm4udGFyZ2V0LmFjdGl2dHlOYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIG5vIG1hdGNoaW5nIG91dGNvbWUsIHVzZSBmaXJzdCBjb25uZWN0aW9uIChkZWZhdWx0IHBhdGgpXG4gICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBjb25uZWN0aW9uc1swXS50YXJnZXQuYWN0aXZ0eU5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuXG4gIC8vI2VuZHJlZ2lvblxufVxuXG4iXX0=","// Workflow Runtime Services\nexport * from './workflow-engine';\nexport * from './workflow-runtime.types';\nexport * from './workflow-manager.service';\nexport * from './workflow-local-engine';\nexport * from './activity-executor.service';\nexport * from './workflow-expression-scope.service';\nexport * from './workflow-engine';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL3J1bnRpbWUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQTRCO0FBQzVCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXb3JrZmxvdyBSdW50aW1lIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL3dvcmtmbG93LWVuZ2luZSc7XG5leHBvcnQgKiBmcm9tICcuL3dvcmtmbG93LXJ1bnRpbWUudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi93b3JrZmxvdy1tYW5hZ2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi93b3JrZmxvdy1sb2NhbC1lbmdpbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpdml0eS1leGVjdXRvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vd29ya2Zsb3ctZXhwcmVzc2lvbi1zY29wZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vd29ya2Zsb3ctZW5naW5lJzsiXX0=","//#region ---- Imports ----\nimport { inject, Injectable } from '@angular/core';\nimport { AXP_WORKFLOW_CATEGORY_PROVIDER, AXP_WORKFLOW_PROVIDER } from './workflow-definition.provider';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Optimized Workflow Definition Service\n *\n * Manages workflow definitions (metadata) for UI and tooling.\n * Similar to AXPActivityDefinitionService - only handles metadata, not execution.\n *\n * Performance optimizations:\n * 1. Uses childrenCount to determine if category has children (no query needed)\n * 2. Uses itemsCount to determine if category has workflows (no query needed)\n * 3. Aggressive caching prevents duplicate API calls\n * 4. Single pending request per resource prevents race conditions\n * 5. Lazy loading - only loads data when needed\n */\nexport class AXPWorkflowDefinitionService {\n constructor() {\n //#region ---- Providers & Caches ----\n this.categoryProviders = inject(AXP_WORKFLOW_CATEGORY_PROVIDER, { optional: true }) || [];\n this.workflowProviders = inject(AXP_WORKFLOW_PROVIDER, { optional: true }) || [];\n //#endregion\n //#region ---- Cache Storage ----\n /** Cache for categories by id - O(1) lookup */\n this.categoriesById = new Map();\n /** Cache for categories by parentId - O(1) lookup */\n this.categoriesByParentId = new Map();\n /** Cache for workflow definitions by categoryId - O(1) lookup */\n this.workflowsByCategory = new Map();\n /** Cache for individual workflow definitions by name - O(1) lookup */\n this.workflowsByName = new Map();\n /** Track which provider index owns each category (by category ID) */\n this.categoryOwnership = new Map(); // Maps categoryId → provider index\n /** Pending API requests to prevent duplicate calls */\n this.pendingCategoriesRequests = new Map();\n this.pendingWorkflowsRequests = new Map();\n this.pendingWorkflowRequests = new Map();\n }\n //#endregion\n //#region ---- Public API: Categories ----\n /**\n * Get categories by parentId with aggressive caching\n *\n * Optimization: Returns cached result immediately if available,\n * preventing unnecessary API calls during navigation\n *\n * @param parentId - Parent category ID (undefined = root categories)\n * @returns Array of categories with count metadata (childrenCount, itemsCount)\n */\n async getCategories(parentId) {\n // ✅ Fast path: Return cached result\n if (this.categoriesByParentId.has(parentId)) {\n return this.categoriesByParentId.get(parentId);\n }\n // ✅ Prevent duplicate requests: Return pending promise\n if (this.pendingCategoriesRequests.has(parentId)) {\n return this.pendingCategoriesRequests.get(parentId);\n }\n // ✅ Create single request and cache it\n const requestPromise = this.loadCategoriesFromProviders(parentId);\n this.pendingCategoriesRequests.set(parentId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single category by ID with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval, falls back to\n * searching cache, then providers if not found\n */\n async getCategoryById(categoryId) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n // ✅ Search in cached parent-child lists\n for (const categories of this.categoriesByParentId.values()) {\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n this.categoriesById.set(categoryId, found);\n return found;\n }\n }\n // ✅ Load root categories if not loaded\n if (!this.categoriesByParentId.has(undefined)) {\n await this.getCategories();\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n }\n // ✅ Breadth-first search through hierarchy\n return this.searchCategoryInHierarchy(categoryId);\n }\n /**\n * Get category path from root to specified category\n *\n * Optimization: Builds path using cached categories only\n */\n async getCategoriesPathById(categoryId) {\n const path = [];\n let currentCategoryId = categoryId;\n while (currentCategoryId) {\n const category = await this.getCategoryById(currentCategoryId);\n if (!category) {\n throw new Error(`Category '${currentCategoryId}' not found`);\n }\n path.unshift(category);\n currentCategoryId = category.parentId;\n }\n return path;\n }\n //#endregion\n //#region ---- Public API: Workflow Definitions ----\n /**\n * Get workflow definitions for a category with smart caching\n *\n * Optimization: Checks itemsCount before querying\n * - If itemsCount = 0, returns empty array (no API call)\n * - If itemsCount > 0, loads and caches workflow definitions\n * - Returns cached result on subsequent calls\n *\n * @param categoryId - Category ID to get workflow definitions from\n * @returns Array of workflow definitions\n */\n async getWorkflowsByCategoryId(categoryId) {\n // ✅ Fast path: Return cached result\n if (this.workflowsByCategory.has(categoryId)) {\n return this.workflowsByCategory.get(categoryId);\n }\n // ✅ Smart optimization: Check itemsCount before querying\n const category = await this.getCategoryById(categoryId);\n if (category && category.itemsCount !== undefined && category.itemsCount === 0) {\n // Category has no workflows - cache empty array and skip API call\n const emptyArray = [];\n this.workflowsByCategory.set(categoryId, emptyArray);\n return emptyArray;\n }\n // ✅ Prevent duplicate requests\n if (this.pendingWorkflowsRequests.has(categoryId)) {\n return this.pendingWorkflowsRequests.get(categoryId);\n }\n // ✅ Load from providers\n const requestPromise = this.loadWorkflowsFromProviders(categoryId);\n this.pendingWorkflowsRequests.set(categoryId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single workflow definition by name with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval\n *\n * @param name - Workflow name (unique identifier)\n * @returns Workflow definition or undefined if not found\n */\n async getWorkflowByName(name) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.workflowsByName.has(name)) {\n return this.workflowsByName.get(name);\n }\n // ✅ Prevent duplicate requests\n if (this.pendingWorkflowRequests.has(name)) {\n return this.pendingWorkflowRequests.get(name);\n }\n // ✅ Load from providers\n const requestPromise = this.loadWorkflowFromProviders(name);\n this.pendingWorkflowRequests.set(name, requestPromise);\n return requestPromise;\n }\n /**\n * Get category ID containing a specific workflow definition\n *\n * Optimization: Searches cache first, loads on-demand if needed\n */\n async getCategoryIdByWorkflowName(workflowName) {\n // ✅ Search in cached workflow definitions\n for (const [categoryId, definitions] of this.workflowsByCategory.entries()) {\n if (definitions.some(def => def.name === workflowName)) {\n return categoryId;\n }\n }\n // ✅ Try loading the workflow definition to find its category\n // Note: AXPWorkflowDefinition doesn't have category field\n // Category is managed separately through category providers\n // This method searches through cached categories\n const definition = await this.getWorkflowByName(workflowName);\n if (definition) {\n // Search through all categories to find which one contains this workflow\n const categories = await this.getCategories();\n for (const category of categories) {\n const workflows = await this.getWorkflowsByCategoryId(category.id);\n if (workflows.some(w => w.name === workflowName)) {\n return category.id;\n }\n }\n }\n return undefined;\n }\n /**\n * Get category path for a workflow\n */\n async getCategoriesPathByWorkflowName(workflowName) {\n const categoryId = await this.getCategoryIdByWorkflowName(workflowName);\n if (!categoryId) {\n throw new Error(`Workflow '${workflowName}' not found in any category`);\n }\n return this.getCategoriesPathById(categoryId);\n }\n //#endregion\n //#region ---- Private: Data Loading ----\n /**\n * Load categories from providers and cache results\n *\n * Optimization: Tracks provider ownership to avoid unnecessary API calls\n * - For root (parentId = undefined): Query ALL providers\n * - For children: Only query the provider that owns the parent\n */\n async loadCategoriesFromProviders(parentId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.categoryProviders);\n const categories = [];\n // Determine which provider(s) to query\n const providerIndicesToQuery = parentId\n ? this.getProviderIndexForCategory(parentId)\n : null; // Root: query all providers\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const cats = await p.value.getList(parentId);\n if (Array.isArray(cats) && cats.length > 0) {\n categories.push(...cats);\n // ✅ Track ownership: This provider INDEX owns these categories\n cats.forEach(cat => this.categoryOwnership.set(cat.id, i));\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.categoriesByParentId.set(parentId, categories);\n categories.forEach(cat => this.categoriesById.set(cat.id, cat));\n return categories;\n }\n finally {\n this.pendingCategoriesRequests.delete(parentId);\n }\n }\n /**\n * Get the provider index that owns a specific category\n *\n * @returns Array with provider index, or null if ownership unknown (query all)\n */\n getProviderIndexForCategory(categoryId) {\n const ownerIndex = this.categoryOwnership.get(categoryId);\n if (ownerIndex !== undefined) {\n return [ownerIndex];\n }\n // Ownership unknown - will query all providers (fallback)\n return null;\n }\n /**\n * Load workflow definitions from providers and cache results\n *\n * Optimization: Only queries the provider that owns the category\n * Uses provider INDEX to match category provider with workflow provider\n */\n async loadWorkflowsFromProviders(categoryId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.workflowProviders);\n const definitions = [];\n // ✅ Smart routing: Get provider INDEX that owns this category\n const ownerIndex = this.categoryOwnership.get(categoryId);\n const providerIndicesToQuery = ownerIndex !== undefined ? [ownerIndex] : null;\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const defs = await p.value.getList(categoryId);\n if (Array.isArray(defs)) {\n definitions.push(...defs);\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.workflowsByCategory.set(categoryId, definitions);\n definitions.forEach(def => {\n if (def.name) {\n this.workflowsByName.set(def.name, def);\n }\n });\n return definitions;\n }\n finally {\n this.pendingWorkflowsRequests.delete(categoryId);\n }\n }\n /**\n * Load single workflow definition from providers and cache result\n */\n async loadWorkflowFromProviders(name) {\n try {\n const resolvedProviders = await Promise.allSettled(this.workflowProviders);\n // Try providers first\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getByName === 'function') {\n try {\n const definition = await p.value.getByName(name);\n if (definition) {\n this.workflowsByName.set(name, definition);\n return definition;\n }\n }\n catch {\n // Continue on error\n }\n }\n }\n // Fallback: Search in cached workflow definitions\n for (const definitions of this.workflowsByCategory.values()) {\n const found = definitions.find(def => def.name === name);\n if (found) {\n this.workflowsByName.set(name, found);\n return found;\n }\n }\n return undefined;\n }\n finally {\n this.pendingWorkflowRequests.delete(name);\n }\n }\n /**\n * Breadth-first search through category hierarchy\n */\n async searchCategoryInHierarchy(categoryId) {\n const searchQueue = [undefined];\n const searched = new Set();\n while (searchQueue.length > 0) {\n const parentId = searchQueue.shift();\n if (searched.has(parentId))\n continue;\n searched.add(parentId);\n const categories = await this.getCategories(parentId);\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n return found;\n }\n // ✅ Optimization: Only search children if childrenCount > 0\n for (const category of categories) {\n if (category.childrenCount > 0 && !searched.has(category.id)) {\n searchQueue.push(category.id);\n }\n }\n }\n return undefined;\n }\n //#endregion\n //#region ---- Cache Management ----\n /**\n * Check if category has children (uses cached count)\n */\n categoryHasChildren(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? category.childrenCount > 0 : false;\n }\n /**\n * Check if category has workflows (uses cached count)\n */\n categoryHasWorkflows(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? (category.itemsCount ?? 0) > 0 : false;\n }\n /**\n * Clear all caches\n */\n clearAllCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.workflowsByCategory.clear();\n this.workflowsByName.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n this.pendingWorkflowsRequests.clear();\n this.pendingWorkflowRequests.clear();\n }\n /**\n * Clear categories cache only\n */\n clearCategoriesCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n }\n /**\n * Clear workflows cache only\n */\n clearWorkflowsCache() {\n this.workflowsByCategory.clear();\n this.workflowsByName.clear();\n this.pendingWorkflowsRequests.clear();\n this.pendingWorkflowRequests.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowDefinitionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowDefinitionService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGVmaW5pdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL2VuZ2luZS93b3JrZmxvdy93b3JrZmxvdy1kZWZpbml0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUV2RyxZQUFZO0FBRVo7Ozs7Ozs7Ozs7OztHQVlHO0FBSUgsTUFBTSxPQUFPLDRCQUE0QjtJQUh6QztRQUlJLDBDQUEwQztRQUV6QixzQkFBaUIsR0FBRyxNQUFNLENBQUMsOEJBQThCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckYsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTdGLFlBQVk7UUFFWixxQ0FBcUM7UUFFckMsK0NBQStDO1FBQ3ZDLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFFaEUscURBQXFEO1FBQzdDLHlCQUFvQixHQUFHLElBQUksR0FBRyxFQUE2QyxDQUFDO1FBRXBGLGlFQUFpRTtRQUN6RCx3QkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUV6RSxzRUFBc0U7UUFDOUQsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUVuRSxxRUFBcUU7UUFDN0Qsc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUMsQ0FBQyxtQ0FBbUM7UUFFMUYsc0RBQXNEO1FBQzlDLDhCQUF5QixHQUFHLElBQUks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Q0FBQztRQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pDLENBQUM7K0dBaGRRLDRCQUE0QjttSEFBNUIsNEJBQTRCLGNBRnpCLE1BQU07OzRGQUVULDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dDYXRlZ29yeSB9IGZyb20gJy4vd29ya2Zsb3ctZGVmaW5pdGlvbi5wcm92aWRlcic7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd0RlZmluaXRpb24gfSBmcm9tICcuLi93b3JrZmxvdy1kZWZpbml0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFYUF9XT1JLRkxPV19DQVRFR09SWV9QUk9WSURFUiwgQVhQX1dPUktGTE9XX1BST1ZJREVSIH0gZnJvbSAnLi93b3JrZmxvdy1kZWZpbml0aW9uLnByb3ZpZGVyJztcblxuLy8jZW5kcmVnaW9uXG5cbi8qKlxuICogT3B0aW1pemVkIFdvcmtmbG93IERlZmluaXRpb24gU2VydmljZVxuICogXG4gKiBNYW5hZ2VzIHdvcmtmbG93IGRlZmluaXRpb25zIChtZXRhZGF0YSkgZm9yIFVJIGFuZCB0b29saW5nLlxuICogU2ltaWxhciB0byBBWFBBY3Rpdml0eURlZmluaXRpb25TZXJ2aWNlIC0gb25seSBoYW5kbGVzIG1ldGFkYXRhLCBub3QgZXhlY3V0aW9uLlxuICogXG4gKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zOlxuICogMS4gVXNlcyBjaGlsZHJlbkNvdW50IHRvIGRldGVybWluZSBpZiBjYXRlZ29yeSBoYXMgY2hpbGRyZW4gKG5vIHF1ZXJ5IG5lZWRlZClcbiAqIDIuIFVzZXMgaXRlbXNDb3VudCB0byBkZXRlcm1pbmUgaWYgY2F0ZWdvcnkgaGFzIHdvcmtmbG93cyAobm8gcXVlcnkgbmVlZGVkKVxuICogMy4gQWdncmVzc2l2ZSBjYWNoaW5nIHByZXZlbnRzIGR1cGxpY2F0ZSBBUEkgY2FsbHNcbiAqIDQuIFNpbmdsZSBwZW5kaW5nIHJlcXVlc3QgcGVyIHJlc291cmNlIHByZXZlbnRzIHJhY2UgY29uZGl0aW9uc1xuICogNS4gTGF6eSBsb2FkaW5nIC0gb25seSBsb2FkcyBkYXRhIHdoZW4gbmVlZGVkXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUFdvcmtmbG93RGVmaW5pdGlvblNlcnZpY2Uge1xuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHJvdmlkZXJzICYgQ2FjaGVzICAgLS0tLVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVByb3ZpZGVycyA9IGluamVjdChBWFBfV09SS0ZMT1dfQ0FURUdPUllfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSkgfHwgW107XG4gICAgcHJpdmF0ZSByZWFkb25seSB3b3JrZmxvd1Byb3ZpZGVycyA9IGluamVjdChBWFBfV09SS0ZMT1dfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSkgfHwgW107XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ2FjaGUgU3RvcmFnZSAgIC0tLS1cblxuICAgIC8qKiBDYWNoZSBmb3IgY2F0ZWdvcmllcyBieSBpZCAtIE8oMSkgbG9va3VwICovXG4gICAgcHJpdmF0ZSBjYXRlZ29yaWVzQnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBBWFBXb3JrZmxvd0NhdGVnb3J5PigpO1xuXG4gICAgLyoqIENhY2hlIGZvciBjYXRlZ29yaWVzIGJ5IHBhcmVudElkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGNhdGVnb3JpZXNCeVBhcmVudElkID0gbmV3IE1hcDxzdHJpbmcgfCB1bmRlZmluZWQsIEFYUFdvcmtmbG93Q2F0ZWdvcnlbXT4oKTtcblxuICAgIC8qKiBDYWNoZSBmb3Igd29ya2Zsb3cgZGVmaW5pdGlvbnMgYnkgY2F0ZWdvcnlJZCAtIE8oMSkgbG9va3VwICovXG4gICAgcHJpdmF0ZSB3b3JrZmxvd3NCeUNhdGVnb3J5ID0gbmV3IE1hcDxzdHJpbmcsIEFYUFdvcmtmbG93RGVmaW5pdGlvbltdPigpO1xuXG4gICAgLyoqIENhY2hlIGZvciBpbmRpdmlkdWFsIHdvcmtmbG93IGRlZmluaXRpb25zIGJ5IG5hbWUgLSBPKDEpIGxvb2t1cCAqL1xuICAgIHByaXZhdGUgd29ya2Zsb3dzQnlOYW1lID0gbmV3IE1hcDxzdHJpbmcsIEFYUFdvcmtmbG93RGVmaW5pdGlvbj4oKTtcblxuICAgIC8qKiBUcmFjayB3aGljaCBwcm92aWRlciBpbmRleCBvd25zIGVhY2ggY2F0ZWdvcnkgKGJ5IGNhdGVnb3J5IElEKSAqL1xuICAgIHByaXZhdGUgY2F0ZWdvcnlPd25lcnNoaXAgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpOyAvLyBNYXBzIGNhdGVnb3J5SWQg4oaSIHByb3ZpZGVyIGluZGV4XG5cbiAgICAvKiogUGVuZGluZyBBUEkgcmVxdWVzdHMgdG8gcHJldmVudCBkdXBsaWNhdGUgY2FsbHMgKi9cbiAgICBwcml2YXRlIHBlbmRpbmdDYXRlZ29yaWVzUmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZyB8IHVuZGVmaW5lZCwgUHJvbWlzZTxBWFBXb3JrZmxvd0NhdGVnb3J5W10+PigpO1xuICAgIHByaXZhdGUgcGVuZGluZ1dvcmtmbG93c1JlcXVlc3RzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8QVhQV29ya2Zsb3dEZWZpbml0aW9uW10+PigpO1xuICAgIHByaXZhdGUgcGVuZGluZ1dvcmtmbG93UmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxBWFBXb3JrZmxvd0RlZmluaXRpb24gfCB1bmRlZmluZWQ+PigpO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBBUEk6IENhdGVnb3JpZXMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgY2F0ZWdvcmllcyBieSBwYXJlbnRJZCB3aXRoIGFnZ3Jlc3NpdmUgY2FjaGluZ1xuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogUmV0dXJucyBjYWNoZWQgcmVzdWx0IGltbWVkaWF0ZWx5IGlmIGF2YWlsYWJsZSxcbiAgICAgKiBwcmV2ZW50aW5nIHVubmVjZXNzYXJ5IEFQSSBjYWxscyBkdXJpbmcgbmF2aWdhdGlvblxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwYXJlbnRJZCAtIFBhcmVudCBjYXRlZ29yeSBJRCAodW5kZWZpbmVkID0gcm9vdCBjYXRlZ29yaWVzKVxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIGNhdGVnb3JpZXMgd2l0aCBjb3VudCBtZXRhZGF0YSAoY2hpbGRyZW5Db3VudCwgaXRlbXNDb3VudClcbiAgICAgKi9cbiAgICBhc3luYyBnZXRDYXRlZ29yaWVzKHBhcmVudElkPzogc3RyaW5nKTogUHJvbWlzZTxBWFBXb3JrZmxvd0NhdGVnb3J5W10+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogUmV0dXJuIGNhY2hlZCByZXN1bHRcbiAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuaGFzKHBhcmVudElkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuZ2V0KHBhcmVudElkKSE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHM6IFJldHVybiBwZW5kaW5nIHByb21pc2VcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5oYXMocGFyZW50SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmdldChwYXJlbnRJZCkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIENyZWF0ZSBzaW5nbGUgcmVxdWVzdCBhbmQgY2FjaGUgaXRcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRDYXRlZ29yaWVzRnJvbVByb3ZpZGVycyhwYXJlbnRJZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5zZXQocGFyZW50SWQsIHJlcXVlc3RQcm9taXNlKTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdFByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHNpbmdsZSBjYXRlZ29yeSBieSBJRCB3aXRoIE8oMSkgbG9va3VwXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBVc2VzIE1hcCBmb3IgaW5zdGFudCByZXRyaWV2YWwsIGZhbGxzIGJhY2sgdG9cbiAgICAgKiBzZWFyY2hpbmcgY2FjaGUsIHRoZW4gcHJvdmlkZXJzIGlmIG5vdCBmb3VuZFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3J5QnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFdvcmtmbG93Q2F0ZWdvcnkgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogTygxKSBsb29rdXAgaW4gY2FjaGVcbiAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5SWQuaGFzKGNhdGVnb3J5SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVzQnlJZC5nZXQoY2F0ZWdvcnlJZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgU2VhcmNoIGluIGNhY2hlZCBwYXJlbnQtY2hpbGQgbGlzdHNcbiAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yaWVzIG9mIHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gY2F0ZWdvcmllcy5maW5kKGNhdCA9PiBjYXQuaWQgPT09IGNhdGVnb3J5SWQpO1xuICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlJZC5zZXQoY2F0ZWdvcnlJZCwgZm91bmQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOKchSBMb2FkIHJvb3QgY2F0ZWdvcmllcyBpZiBub3QgbG9hZGVkXG4gICAgICAgIGlmICghdGhpcy5jYXRlZ29yaWVzQnlQYXJlbnRJZC5oYXModW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRDYXRlZ29yaWVzKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5jYXRlZ29yaWVzQnlJZC5oYXMoY2F0ZWdvcnlJZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVzQnlJZC5nZXQoY2F0ZWdvcnlJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgQnJlYWR0aC1maXJzdCBzZWFyY2ggdGhyb3VnaCBoaWVyYXJjaHlcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoQ2F0ZWdvcnlJbkhpZXJhcmNoeShjYXRlZ29yeUlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY2F0ZWdvcnkgcGF0aCBmcm9tIHJvb3QgdG8gc3BlY2lmaWVkIGNhdGVnb3J5XG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBCdWlsZHMgcGF0aCB1c2luZyBjYWNoZWQgY2F0ZWdvcmllcyBvbmx5XG4gICAgICovXG4gICAgYXN5bmMgZ2V0Q2F0ZWdvcmllc1BhdGhCeUlkKGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQV29ya2Zsb3dDYXRlZ29yeVtdPiB7XG4gICAgICAgIGNvbnN0IHBhdGg6IEFYUFdvcmtmbG93Q2F0ZWdvcnlbXSA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudENhdGVnb3J5SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNhdGVnb3J5SWQ7XG5cbiAgICAgICAgd2hpbGUgKGN1cnJlbnRDYXRlZ29yeUlkKSB7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlCeUlkKGN1cnJlbnRDYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGlmICghY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhdGVnb3J5ICcke2N1cnJlbnRDYXRlZ29yeUlkfScgbm90IGZvdW5kYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXRoLnVuc2hpZnQoY2F0ZWdvcnkpO1xuICAgICAgICAgICAgY3VycmVudENhdGVnb3J5SWQgPSBjYXRlZ29yeS5wYXJlbnRJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgQVBJOiBXb3JrZmxvdyBEZWZpbml0aW9ucyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEdldCB3b3JrZmxvdyBkZWZpbml0aW9ucyBmb3IgYSBjYXRlZ29yeSB3aXRoIHNtYXJ0IGNhY2hpbmdcbiAgICAgKiBcbiAgICAgKiBPcHRpbWl6YXRpb246IENoZWNrcyBpdGVtc0NvdW50IGJlZm9yZSBxdWVyeWluZ1xuICAgICAqIC0gSWYgaXRlbXNDb3VudCA9IDAsIHJldHVybnMgZW1wdHkgYXJyYXkgKG5vIEFQSSBjYWxsKVxuICAgICAqIC0gSWYgaXRlbXNDb3VudCA+IDAsIGxvYWRzIGFuZCBjYWNoZXMgd29ya2Zsb3cgZGVmaW5pdGlvbnNcbiAgICAgKiAtIFJldHVybnMgY2FjaGVkIHJlc3VsdCBvbiBzdWJzZXF1ZW50IGNhbGxzXG4gICAgICogXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWQgLSBDYXRlZ29yeSBJRCB0byBnZXQgd29ya2Zsb3cgZGVmaW5pdGlvbnMgZnJvbVxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIHdvcmtmbG93IGRlZmluaXRpb25zXG4gICAgICovXG4gICAgYXN5bmMgZ2V0V29ya2Zsb3dzQnlDYXRlZ29yeUlkKGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQV29ya2Zsb3dEZWZpbml0aW9uW10+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogUmV0dXJuIGNhY2hlZCByZXN1bHRcbiAgICAgICAgaWYgKHRoaXMud29ya2Zsb3dzQnlDYXRlZ29yeS5oYXMoY2F0ZWdvcnlJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndvcmtmbG93c0J5Q2F0ZWdvcnkuZ2V0KGNhdGVnb3J5SWQpITtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOKchSBTbWFydCBvcHRpbWl6YXRpb246IENoZWNrIGl0ZW1zQ291bnQgYmVmb3JlIHF1ZXJ5aW5nXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yeUJ5SWQoY2F0ZWdvcnlJZCk7XG4gICAgICAgIGlmIChjYXRlZ29yeSAmJiBjYXRlZ29yeS5pdGVtc0NvdW50ICE9PSB1bmRlZmluZWQgJiYgY2F0ZWdvcnkuaXRlbXNDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gQ2F0ZWdvcnkgaGFzIG5vIHdvcmtmbG93cyAtIGNhY2hlIGVtcHR5IGFycmF5IGFuZCBza2lwIEFQSSBjYWxsXG4gICAgICAgICAgICBjb25zdCBlbXB0eUFycmF5OiBBWFBXb3JrZmxvd0RlZmluaXRpb25bXSA9IFtdO1xuICAgICAgICAgICAgdGhpcy53b3JrZmxvd3NCeUNhdGVnb3J5LnNldChjYXRlZ29yeUlkLCBlbXB0eUFycmF5KTtcbiAgICAgICAgICAgIHJldHVybiBlbXB0eUFycmF5O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIFByZXZlbnQgZHVwbGljYXRlIHJlcXVlc3RzXG4gICAgICAgIGlmICh0aGlzLnBlbmRpbmdXb3JrZmxvd3NSZXF1ZXN0cy5oYXMoY2F0ZWdvcnlJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdXb3JrZmxvd3NSZXF1ZXN0cy5nZXQoY2F0ZWdvcnlJZCkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIExvYWQgZnJvbSBwcm92aWRlcnNcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRXb3JrZmxvd3NGcm9tUHJvdmlkZXJzKGNhdGVnb3J5SWQpO1xuICAgICAgICB0aGlzLnBlbmRpbmdXb3JrZmxvd3NSZXF1ZXN0cy5zZXQoY2F0ZWdvcnlJZCwgcmVxdWVzdFByb21pc2UpO1xuXG4gICAgICAgIHJldHVybiByZXF1ZXN0UHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc2luZ2xlIHdvcmtmbG93IGRlZmluaXRpb24gYnkgbmFtZSB3aXRoIE8oMSkgbG9va3VwXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBVc2VzIE1hcCBmb3IgaW5zdGFudCByZXRyaWV2YWxcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFdvcmtmbG93IG5hbWUgKHVuaXF1ZSBpZGVudGlmaWVyKVxuICAgICAqIEByZXR1cm5zIFdvcmtmbG93IGRlZmluaXRpb24gb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICAgICAqL1xuICAgIGFzeW5jIGdldFdvcmtmbG93QnlOYW1lKG5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQV29ya2Zsb3dEZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIOKchSBGYXN0IHBhdGg6IE8oMSkgbG9va3VwIGluIGNhY2hlXG4gICAgICAgIGlmICh0aGlzLndvcmtmbG93c0J5TmFtZS5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndvcmtmbG93c0J5TmFtZS5nZXQobmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHNcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ1dvcmtmbG93UmVxdWVzdHMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nV29ya2Zsb3dSZXF1ZXN0cy5nZXQobmFtZSkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIExvYWQgZnJvbSBwcm92aWRlcnNcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRXb3JrZmxvd0Zyb21Qcm92aWRlcnMobmFtZSk7XG4gICAgICAgIHRoaXMucGVuZGluZ1dvcmtmbG93UmVxdWVzdHMuc2V0KG5hbWUsIHJlcXVlc3RQcm9taXNlKTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdFByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGNhdGVnb3J5IElEIGNvbnRhaW5pbmcgYSBzcGVjaWZpYyB3b3JrZmxvdyBkZWZpbml0aW9uXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBTZWFyY2hlcyBjYWNoZSBmaXJzdCwgbG9hZHMgb24tZGVtYW5kIGlmIG5lZWRlZFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3J5SWRCeVdvcmtmbG93TmFtZSh3b3JrZmxvd05hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIOKchSBTZWFyY2ggaW4gY2FjaGVkIHdvcmtmbG93IGRlZmluaXRpb25zXG4gICAgICAgIGZvciAoY29uc3QgW2NhdGVnb3J5SWQsIGRlZmluaXRpb25zXSBvZiB0aGlzLndvcmtmbG93c0J5Q2F0ZWdvcnkuZW50cmllcygpKSB7XG4gICAgICAgICAgICBpZiAoZGVmaW5pdGlvbnMuc29tZShkZWYgPT4gZGVmLm5hbWUgPT09IHdvcmtmbG93TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2F0ZWdvcnlJZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOKchSBUcnkgbG9hZGluZyB0aGUgd29ya2Zsb3cgZGVmaW5pdGlvbiB0byBmaW5kIGl0cyBjYXRlZ29yeVxuICAgICAgICAvLyBOb3RlOiBBWFBXb3JrZmxvd0RlZmluaXRpb24gZG9lc24ndCBoYXZlIGNhdGVnb3J5IGZpZWxkXG4gICAgICAgIC8vIENhdGVnb3J5IGlzIG1hbmFnZWQgc2VwYXJhdGVseSB0aHJvdWdoIGNhdGVnb3J5IHByb3ZpZGVyc1xuICAgICAgICAvLyBUaGlzIG1ldGhvZCBzZWFyY2hlcyB0aHJvdWdoIGNhY2hlZCBjYXRlZ29yaWVzXG4gICAgICAgIGNvbnN0IGRlZmluaXRpb24gPSBhd2FpdCB0aGlzLmdldFdvcmtmbG93QnlOYW1lKHdvcmtmbG93TmFtZSk7XG4gICAgICAgIGlmIChkZWZpbml0aW9uKSB7XG4gICAgICAgICAgICAvLyBTZWFyY2ggdGhyb3VnaCBhbGwgY2F0ZWdvcmllcyB0byBmaW5kIHdoaWNoIG9uZSBjb250YWlucyB0aGlzIHdvcmtmbG93XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yaWVzKCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3b3JrZmxvd3MgPSBhd2FpdCB0aGlzLmdldFdvcmtmbG93c0J5Q2F0ZWdvcnlJZChjYXRlZ29yeS5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKHdvcmtmbG93cy5zb21lKHcgPT4gdy5uYW1lID09PSB3b3JrZmxvd05hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYXRlZ29yeS5pZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjYXRlZ29yeSBwYXRoIGZvciBhIHdvcmtmbG93XG4gICAgICovXG4gICAgYXN5bmMgZ2V0Q2F0ZWdvcmllc1BhdGhCeVdvcmtmbG93TmFtZSh3b3JrZmxvd05hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQV29ya2Zsb3dDYXRlZ29yeVtdPiB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5SWQgPSBhd2FpdCB0aGlzLmdldENhdGVnb3J5SWRCeVdvcmtmbG93TmFtZSh3b3JrZmxvd05hbWUpO1xuICAgICAgICBpZiAoIWNhdGVnb3J5SWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgV29ya2Zsb3cgJyR7d29ya2Zsb3dOYW1lfScgbm90IGZvdW5kIGluIGFueSBjYXRlZ29yeWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmdldENhdGVnb3JpZXNQYXRoQnlJZChjYXRlZ29yeUlkKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHJpdmF0ZTogRGF0YSBMb2FkaW5nICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogTG9hZCBjYXRlZ29yaWVzIGZyb20gcHJvdmlkZXJzIGFuZCBjYWNoZSByZXN1bHRzXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBUcmFja3MgcHJvdmlkZXIgb3duZXJzaGlwIHRvIGF2b2lkIHVubmVjZXNzYXJ5IEFQSSBjYWxsc1xuICAgICAqIC0gRm9yIHJvb3QgKHBhcmVudElkID0gdW5kZWZpbmVkKTogUXVlcnkgQUxMIHByb3ZpZGVyc1xuICAgICAqIC0gRm9yIGNoaWxkcmVuOiBPbmx5IHF1ZXJ5IHRoZSBwcm92aWRlciB0aGF0IG93bnMgdGhlIHBhcmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgbG9hZENhdGVnb3JpZXNGcm9tUHJvdmlkZXJzKHBhcmVudElkPzogc3RyaW5nKTogUHJvbWlzZTxBWFBXb3JrZmxvd0NhdGVnb3J5W10+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUHJvdmlkZXJzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHRoaXMuY2F0ZWdvcnlQcm92aWRlcnMpO1xuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllczogQVhQV29ya2Zsb3dDYXRlZ29yeVtdID0gW107XG5cbiAgICAgICAgICAgIC8vIERldGVybWluZSB3aGljaCBwcm92aWRlcihzKSB0byBxdWVyeVxuICAgICAgICAgICAgY29uc3QgcHJvdmlkZXJJbmRpY2VzVG9RdWVyeSA9IHBhcmVudElkXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldFByb3ZpZGVySW5kZXhGb3JDYXRlZ29yeShwYXJlbnRJZClcbiAgICAgICAgICAgICAgICA6IG51bGw7IC8vIFJvb3Q6IHF1ZXJ5IGFsbCBwcm92aWRlcnNcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFByb3ZpZGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSByZXNvbHZlZFByb3ZpZGVyc1tpXTtcblxuICAgICAgICAgICAgICAgIC8vIFNraXAgaWYgd2UgaGF2ZSBhIHNwZWNpZmljIHByb3ZpZGVyIGluZGV4IGFuZCB0aGlzIGlzbid0IGl0XG4gICAgICAgICAgICAgICAgaWYgKHByb3ZpZGVySW5kaWNlc1RvUXVlcnkgIT09IG51bGwgJiYgIXByb3ZpZGVySW5kaWNlc1RvUXVlcnkuaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHAuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiBwLnZhbHVlICYmIHR5cGVvZiBwLnZhbHVlLmdldExpc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhdHMgPSBhd2FpdCBwLnZhbHVlLmdldExpc3QocGFyZW50SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2F0cykgJiYgY2F0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKC4uLmNhdHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g4pyFIFRyYWNrIG93bmVyc2hpcDogVGhpcyBwcm92aWRlciBJTkRFWCBvd25zIHRoZXNlIGNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRzLmZvckVhY2goY2F0ID0+IHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuc2V0KGNhdC5pZCwgaSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIG9uIGVycm9yIC0gdHJ5IG90aGVyIHByb3ZpZGVyc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDinIUgQ2FjaGUgcmVzdWx0cyBmb3IgZmFzdCBzdWJzZXF1ZW50IGFjY2Vzc1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlQYXJlbnRJZC5zZXQocGFyZW50SWQsIGNhdGVnb3JpZXMpO1xuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKGNhdCA9PiB0aGlzLmNhdGVnb3JpZXNCeUlkLnNldChjYXQuaWQsIGNhdCkpO1xuXG4gICAgICAgICAgICByZXR1cm4gY2F0ZWdvcmllcztcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5kZWxldGUocGFyZW50SWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwcm92aWRlciBpbmRleCB0aGF0IG93bnMgYSBzcGVjaWZpYyBjYXRlZ29yeVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFycmF5IHdpdGggcHJvdmlkZXIgaW5kZXgsIG9yIG51bGwgaWYgb3duZXJzaGlwIHVua25vd24gKHF1ZXJ5IGFsbClcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFByb3ZpZGVySW5kZXhGb3JDYXRlZ29yeShjYXRlZ29yeUlkOiBzdHJpbmcpOiBudW1iZXJbXSB8IG51bGwge1xuICAgICAgICBjb25zdCBvd25lckluZGV4ID0gdGhpcy5jYXRlZ29yeU93bmVyc2hpcC5nZXQoY2F0ZWdvcnlJZCk7XG5cbiAgICAgICAgaWYgKG93bmVySW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFtvd25lckluZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE93bmVyc2hpcCB1bmtub3duIC0gd2lsbCBxdWVyeSBhbGwgcHJvdmlkZXJzIChmYWxsYmFjaylcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZCB3b3JrZmxvdyBkZWZpbml0aW9ucyBmcm9tIHByb3ZpZGVycyBhbmQgY2FjaGUgcmVzdWx0c1xuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogT25seSBxdWVyaWVzIHRoZSBwcm92aWRlciB0aGF0IG93bnMgdGhlIGNhdGVnb3J5XG4gICAgICogVXNlcyBwcm92aWRlciBJTkRFWCB0byBtYXRjaCBjYXRlZ29yeSBwcm92aWRlciB3aXRoIHdvcmtmbG93IHByb3ZpZGVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkV29ya2Zsb3dzRnJvbVByb3ZpZGVycyhjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFdvcmtmbG93RGVmaW5pdGlvbltdPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZFByb3ZpZGVycyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZCh0aGlzLndvcmtmbG93UHJvdmlkZXJzKTtcbiAgICAgICAgICAgIGNvbnN0IGRlZmluaXRpb25zOiBBWFBXb3JrZmxvd0RlZmluaXRpb25bXSA9IFtdO1xuXG4gICAgICAgICAgICAvLyDinIUgU21hcnQgcm91dGluZzogR2V0IHByb3ZpZGVyIElOREVYIHRoYXQgb3ducyB0aGlzIGNhdGVnb3J5XG4gICAgICAgICAgICBjb25zdCBvd25lckluZGV4ID0gdGhpcy5jYXRlZ29yeU93bmVyc2hpcC5nZXQoY2F0ZWdvcnlJZCk7XG4gICAgICAgICAgICBjb25zdCBwcm92aWRlckluZGljZXNUb1F1ZXJ5ID0gb3duZXJJbmRleCAhPT0gdW5kZWZpbmVkID8gW293bmVySW5kZXhdIDogbnVsbDtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFByb3ZpZGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSByZXNvbHZlZFByb3ZpZGVyc1tpXTtcblxuICAgICAgICAgICAgICAgIC8vIFNraXAgaWYgd2UgaGF2ZSBhIHNwZWNpZmljIHByb3ZpZGVyIGluZGV4IGFuZCB0aGlzIGlzbid0IGl0XG4gICAgICAgICAgICAgICAgaWYgKHByb3ZpZGVySW5kaWNlc1RvUXVlcnkgIT09IG51bGwgJiYgIXByb3ZpZGVySW5kaWNlc1RvUXVlcnkuaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHAuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiBwLnZhbHVlICYmIHR5cGVvZiBwLnZhbHVlLmdldExpc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZnMgPSBhd2FpdCBwLnZhbHVlLmdldExpc3QoY2F0ZWdvcnlJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZWZzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25zLnB1c2goLi4uZGVmcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgb24gZXJyb3IgLSB0cnkgb3RoZXIgcHJvdmlkZXJzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBDYWNoZSByZXN1bHRzIGZvciBmYXN0IHN1YnNlcXVlbnQgYWNjZXNzXG4gICAgICAgICAgICB0aGlzLndvcmtmbG93c0J5Q2F0ZWdvcnkuc2V0KGNhdGVnb3J5SWQsIGRlZmluaXRpb25zKTtcbiAgICAgICAgICAgIGRlZmluaXRpb25zLmZvckVhY2goZGVmID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGVmLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd3NCeU5hbWUuc2V0KGRlZi5uYW1lLCBkZWYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZGVmaW5pdGlvbnM7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdXb3JrZmxvd3NSZXF1ZXN0cy5kZWxldGUoY2F0ZWdvcnlJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHNpbmdsZSB3b3JrZmxvdyBkZWZpbml0aW9uIGZyb20gcHJvdmlkZXJzIGFuZCBjYWNoZSByZXN1bHRcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRXb3JrZmxvd0Zyb21Qcm92aWRlcnMobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBXb3JrZmxvd0RlZmluaXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUHJvdmlkZXJzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHRoaXMud29ya2Zsb3dQcm92aWRlcnMpO1xuXG4gICAgICAgICAgICAvLyBUcnkgcHJvdmlkZXJzIGZpcnN0XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHAgb2YgcmVzb2x2ZWRQcm92aWRlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAocC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnICYmIHAudmFsdWUgJiYgdHlwZW9mIHAudmFsdWUuZ2V0QnlOYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZpbml0aW9uID0gYXdhaXQgcC52YWx1ZS5nZXRCeU5hbWUobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVmaW5pdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3dzQnlOYW1lLnNldChuYW1lLCBkZWZpbml0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSBvbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBGYWxsYmFjazogU2VhcmNoIGluIGNhY2hlZCB3b3JrZmxvdyBkZWZpbml0aW9uc1xuICAgICAgICAgICAgZm9yIChjb25zdCBkZWZpbml0aW9ucyBvZiB0aGlzLndvcmtmbG93c0J5Q2F0ZWdvcnkudmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZCA9IGRlZmluaXRpb25zLmZpbmQoZGVmID0+IGRlZi5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd3NCeU5hbWUuc2V0KG5hbWUsIGZvdW5kKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtmbG93UmVxdWVzdHMuZGVsZXRlKG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnJlYWR0aC1maXJzdCBzZWFyY2ggdGhyb3VnaCBjYXRlZ29yeSBoaWVyYXJjaHlcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIHNlYXJjaENhdGVnb3J5SW5IaWVyYXJjaHkoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBXb3JrZmxvd0NhdGVnb3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFF1ZXVlOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdID0gW3VuZGVmaW5lZF07XG4gICAgICAgIGNvbnN0IHNlYXJjaGVkID0gbmV3IFNldDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAgICAgd2hpbGUgKHNlYXJjaFF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gc2VhcmNoUXVldWUuc2hpZnQoKSE7XG4gICAgICAgICAgICBpZiAoc2VhcmNoZWQuaGFzKHBhcmVudElkKSkgY29udGludWU7XG4gICAgICAgICAgICBzZWFyY2hlZC5hZGQocGFyZW50SWQpO1xuXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yaWVzKHBhcmVudElkKTtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gY2F0ZWdvcmllcy5maW5kKGNhdCA9PiBjYXQuaWQgPT09IGNhdGVnb3J5SWQpO1xuXG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBPcHRpbWl6YXRpb246IE9ubHkgc2VhcmNoIGNoaWxkcmVuIGlmIGNoaWxkcmVuQ291bnQgPiAwXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkuY2hpbGRyZW5Db3VudCA+IDAgJiYgIXNlYXJjaGVkLmhhcyhjYXRlZ29yeS5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoUXVldWUucHVzaChjYXRlZ29yeS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ2FjaGUgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGNhdGVnb3J5IGhhcyBjaGlsZHJlbiAodXNlcyBjYWNoZWQgY291bnQpXG4gICAgICovXG4gICAgY2F0ZWdvcnlIYXNDaGlsZHJlbihjYXRlZ29yeUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXNCeUlkLmdldChjYXRlZ29yeUlkKTtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5ID8gY2F0ZWdvcnkuY2hpbGRyZW5Db3VudCA+IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBjYXRlZ29yeSBoYXMgd29ya2Zsb3dzICh1c2VzIGNhY2hlZCBjb3VudClcbiAgICAgKi9cbiAgICBjYXRlZ29yeUhhc1dvcmtmbG93cyhjYXRlZ29yeUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXNCeUlkLmdldChjYXRlZ29yeUlkKTtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5ID8gKGNhdGVnb3J5Lml0ZW1zQ291bnQgPz8gMCkgPiAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgYWxsIGNhY2hlc1xuICAgICAqL1xuICAgIGNsZWFyQWxsQ2FjaGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0J5SWQuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlQYXJlbnRJZC5jbGVhcigpO1xuICAgICAgICB0aGlzLndvcmtmbG93c0J5Q2F0ZWdvcnkuY2xlYXIoKTtcbiAgICAgICAgdGhpcy53b3JrZmxvd3NCeU5hbWUuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeU93bmVyc2hpcC5jbGVhcigpO1xuICAgICAgICB0aGlzLnBlbmRpbmdDYXRlZ29yaWVzUmVxdWVzdHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nV29ya2Zsb3dzUmVxdWVzdHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nV29ya2Zsb3dSZXF1ZXN0cy5jbGVhcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFyIGNhdGVnb3JpZXMgY2FjaGUgb25seVxuICAgICAqL1xuICAgIGNsZWFyQ2F0ZWdvcmllc0NhY2hlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNCeUlkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeU93bmVyc2hpcC5jbGVhcigpO1xuICAgICAgICB0aGlzLnBlbmRpbmdDYXRlZ29yaWVzUmVxdWVzdHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciB3b3JrZmxvd3MgY2FjaGUgb25seVxuICAgICAqL1xuICAgIGNsZWFyV29ya2Zsb3dzQ2FjaGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud29ya2Zsb3dzQnlDYXRlZ29yeS5jbGVhcigpO1xuICAgICAgICB0aGlzLndvcmtmbG93c0J5TmFtZS5jbGVhcigpO1xuICAgICAgICB0aGlzLnBlbmRpbmdXb3JrZmxvd3NSZXF1ZXN0cy5jbGVhcigpO1xuICAgICAgICB0aGlzLnBlbmRpbmdXb3JrZmxvd1JlcXVlc3RzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG59XG5cbiJdfQ==","// Workflow Instance Types (Storage/Database)\nexport * from './workflow-instance.types';\n// Activity System Types (Simplified)\nexport * from './activity/activity.types';\nexport * from './activity';\n// Simple Runtime (Coordinator only)\nexport * from './runtime';\n// Workflow Definition System (Category + Metadata)\nexport * from './workflow/workflow-definition.provider';\nexport * from './workflow/workflow-definition.service';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3dvcmtmbG93L3NyYy9saWIvZW5naW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLDZDQUE2QztBQUM3QyxjQUFjLDJCQUEyQixDQUFDO0FBbUIxQyxxQ0FBcUM7QUFDckMsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxjQUFjLFlBQVksQ0FBQztBQUUzQixvQ0FBb0M7QUFDcEMsY0FBYyxXQUFXLENBQUM7QUFFMUIsbURBQW1EO0FBQ25ELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx3Q0FBd0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFdvcmtmbG93IERlZmluaXRpb24gVHlwZXMgKFN0b3JhZ2UvRGF0YWJhc2UpXG4vLyBFeHBvcnQgd29ya2Zsb3cgZGVmaW5pdGlvbiB0eXBlc1xuZXhwb3J0IHR5cGUge1xuICBBWFBXb3JrZmxvd0RlZmluaXRpb24sXG4gIEFYUFdvcmtmbG93R3JhcGgsXG4gIEFYUFdvcmtmbG93QWN0aXZpdHlJbnN0YW5jZSxcbiAgQVhQQ29ubmVjdGlvbixcbiAgQVhQVmFyaWFibGVEZWZpbml0aW9uLFxuICBBWFBXb3JrZmxvd0lucHV0RGVzY3JpcHRvcixcbiAgQVhQV29ya2Zsb3dPdXRwdXREZXNjcmlwdG9yLFxuICBBWFBXb3JrZmxvd0V4dGVuc2lvbnMsXG4gIEFYUEVsc2FXb3JrZmxvd0V4dGVuc2lvbnMsXG4gIEFYUFdvcmtmbG93QmluZGluZyxcbn0gZnJvbSAnLi93b3JrZmxvdy1kZWZpbml0aW9uLnR5cGVzJztcblxuLy8gV29ya2Zsb3cgSW5zdGFuY2UgVHlwZXMgKFN0b3JhZ2UvRGF0YWJhc2UpXG5leHBvcnQgKiBmcm9tICcuL3dvcmtmbG93LWluc3RhbmNlLnR5cGVzJztcblxuXG4vLyBSZS1leHBvcnQgV29ya2Zsb3cgSW5zdGFuY2UgdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQVhQV29ya2Zsb3dJbnN0YW5jZSxcbiAgQVhQV29ya2Zsb3dTdGF0ZSxcbiAgQVhQV29ya2Zsb3dTdGF0dXMsXG4gIEFYUFdvcmtmbG93U3ViU3RhdHVzLFxuICBBWFBBY3Rpdml0eVN0YXR1cyxcbiAgQVhQRXhjZXB0aW9uU3RhdGUsXG4gIEFYUEFjdGl2aXR5SW5jaWRlbnQsXG4gIEFYUFdvcmtmbG93RmF1bHRTdGF0ZSxcbiAgQVhQQm9va21hcmssXG4gIEFYUENvbXBsZXRpb25DYWxsYmFja1N0YXRlLFxuICBBWFBBY3Rpdml0eVZhcmlhYmxlLFxuICBBWFBBY3Rpdml0eUV4ZWN1dGlvbkNvbnRleHRTdGF0ZSxcbn0gZnJvbSAnLi93b3JrZmxvdy1pbnN0YW5jZS50eXBlcyc7XG5cbi8vIEFjdGl2aXR5IFN5c3RlbSBUeXBlcyAoU2ltcGxpZmllZClcbmV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHkvYWN0aXZpdHkudHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2FjdGl2aXR5JztcblxuLy8gU2ltcGxlIFJ1bnRpbWUgKENvb3JkaW5hdG9yIG9ubHkpXG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUnO1xuXG4vLyBXb3JrZmxvdyBEZWZpbml0aW9uIFN5c3RlbSAoQ2F0ZWdvcnkgKyBNZXRhZGF0YSlcbmV4cG9ydCAqIGZyb20gJy4vd29ya2Zsb3cvd29ya2Zsb3ctZGVmaW5pdGlvbi5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL3dvcmtmbG93L3dvcmtmbG93LWRlZmluaXRpb24uc2VydmljZSc7Il19","import { Inject, NgModule, Optional } from '@angular/core';\nimport { AXPWorkflowDecideAction } from './actions/decide.action';\nimport { AXPStartWorkflowAction } from './actions/start-workflow.action';\nimport { AXPWorkflowRegistryService } from './workflow-registery.service';\nimport { AXP_WORKFLOW_ENGINE, AXPWorkflowLocalEngine } from './engine';\nimport { AXPWorkflowManager } from './engine/runtime/workflow-manager.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPWorkflowModule {\n static forRoot(config) {\n return {\n ngModule: AXPWorkflowModule,\n providers: [\n {\n provide: 'AXPWorkflowModuleFactory',\n useFactory: (registry) => () => {\n registry.registerAction('start-workflow', AXPStartWorkflowAction);\n registry.registerAction('decide', AXPWorkflowDecideAction);\n //\n if (config?.functions) {\n for (const [key, type] of Object.entries(config.functions)) {\n registry.registerFunction(key, type);\n }\n }\n //\n if (config?.actions) {\n for (const [key, type] of Object.entries(config.actions)) {\n registry.registerAction(key, type);\n }\n }\n //\n if (config?.workflows) {\n for (const [key, type] of Object.entries(config.workflows)) {\n registry.registerWorkflow(key, type);\n }\n }\n },\n deps: [AXPWorkflowRegistryService],\n multi: true,\n },\n ...Object.values(config?.actions ?? { AXPStartWorkflowAction }),\n ...Object.values(config?.functions ?? {}),\n ],\n };\n }\n static forChild(config) {\n return {\n ngModule: AXPWorkflowModule,\n providers: [\n // Built-in activities are already registered in forRoot via @NgModule providers\n // No need to register again in forChild\n {\n provide: 'AXPWorkflowModuleFactory',\n useFactory: (registry) => () => {\n registry.registerAction('start-workflow', AXPStartWorkflowAction);\n registry.registerAction('decide', AXPWorkflowDecideAction);\n //\n if (config?.functions) {\n for (const [key, type] of Object.entries(config.functions)) {\n registry.registerFunction(key, type);\n }\n }\n //\n if (config?.actions) {\n for (const [key, type] of Object.entries(config.actions)) {\n registry.registerAction(key, type);\n }\n }\n //\n if (config?.workflows) {\n for (const [key, type] of Object.entries(config.workflows)) {\n registry.registerWorkflow(key, type);\n }\n }\n },\n deps: [AXPWorkflowRegistryService],\n multi: true,\n },\n ...Object.values(config?.actions ?? {}),\n ...Object.values(config?.functions ?? {}),\n ],\n };\n }\n /**\n * @ignore\n */\n constructor(instances) {\n instances?.forEach((f) => {\n f();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowModule, deps: [{ token: 'AXPWorkflowModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowModule, providers: [\n AXPWorkflowLocalEngine,\n {\n provide: AXP_WORKFLOW_ENGINE,\n useExisting: AXPWorkflowLocalEngine,\n },\n AXPWorkflowManager,\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPWorkflowModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n AXPWorkflowLocalEngine,\n {\n provide: AXP_WORKFLOW_ENGINE,\n useExisting: AXPWorkflowLocalEngine,\n },\n AXPWorkflowManager,\n ],\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['AXPWorkflowModuleFactory']\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvbGliL3dvcmtmbG93Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUF1QixRQUFRLEVBQUUsUUFBUSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7O0FBMEIvRSxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBaUM7UUFDOUMsT0FBTztZQUNMLFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSwwQkFBMEI7b0JBQ25DLFVBQVUsRUFBRSxDQUFDLFFBQW9DLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRTt3QkFDekQsUUFBUSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO3dCQUNsRSxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO3dCQUMzRCxFQUFFO3dCQUNGLElBQUksTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDOzRCQUN0QixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FB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TSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO2FBQzFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQTRELFNBQWdCO1FBQzFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FyRlUsaUJBQWlCLGtCQWlGSSwwQkFBMEI7Z0hBakYvQyxpQkFBaUI7Z0hBQWpCLGlCQUFpQixhQVRqQjtZQUNULHNCQUFzQjtZQUN0QjtnQkFDRSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixXQUFXLEVBQUUsc0JBQXNCO2FBQ3BDO1lBQ0Qsa0JBQWtCO1NBQ25COzs0RkFFVSxpQkFBaUI7a0JBYjdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVCxzQkFBc0I7d0JBQ3RCOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxzQkFBc0I7eUJBQ3BDO3dCQUNELGtCQUFrQjtxQkFDbkI7aUJBQ0Y7OzBCQWtGYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBUeXBlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFdvcmtmbG93RGVjaWRlQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zL2RlY2lkZS5hY3Rpb24nO1xuaW1wb3J0IHsgQVhQU3RhcnRXb3JrZmxvd0FjdGlvbiB9IGZyb20gJy4vYWN0aW9ucy9zdGFydC13b3JrZmxvdy5hY3Rpb24nO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dvcmtmbG93LXJlZ2lzdGVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdvcmtmbG93LCBBWFBXb3JrZmxvd0FjdGlvbiwgQVhQV29ya2Zsb3dGdW5jdGlvbiB9IGZyb20gJy4vd29ya2Zsb3cudHlwZXMnO1xuaW1wb3J0IHsgQVhQX1dPUktGTE9XX0VOR0lORSwgQVhQV29ya2Zsb3dMb2NhbEVuZ2luZSB9IGZyb20gJy4vZW5naW5lJztcbmltcG9ydCB7IEFYUFdvcmtmbG93TWFuYWdlciB9IGZyb20gJy4vZW5naW5lL3J1bnRpbWUvd29ya2Zsb3ctbWFuYWdlci5zZXJ2aWNlJztcbmV4cG9ydCBpbnRlcmZhY2UgQVhQV29ya2Zsb3dNb2R1bGVDb25maWdzIHtcbiAgZnVuY3Rpb25zPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBUeXBlPEFYUFdvcmtmbG93RnVuY3Rpb24+O1xuICB9O1xuICBhY3Rpb25zPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBUeXBlPEFYUFdvcmtmbG93QWN0aW9uPjtcbiAgfTtcbiAgd29ya2Zsb3dzPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBBWFBXb3JrZmxvdztcbiAgfTtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW10sXG4gIGV4cG9ydHM6IFtdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBwcm92aWRlcnM6IFtcbiAgICBBWFBXb3JrZmxvd0xvY2FsRW5naW5lLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9XT1JLRkxPV19FTkdJTkUsXG4gICAgICB1c2VFeGlzdGluZzogQVhQV29ya2Zsb3dMb2NhbEVuZ2luZSxcbiAgICB9LFxuICAgIEFYUFdvcmtmbG93TWFuYWdlcixcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV29ya2Zsb3dNb2R1bGUge1xuXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IEFYUFdvcmtmbG93TW9kdWxlQ29uZmlncyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QVhQV29ya2Zsb3dNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYUFdvcmtmbG93TW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiAnQVhQV29ya2Zsb3dNb2R1bGVGYWN0b3J5JyxcbiAgICAgICAgICB1c2VGYWN0b3J5OiAocmVnaXN0cnk6IEFYUFdvcmtmbG93UmVnaXN0cnlTZXJ2aWNlKSA9PiAoKSA9PiB7XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlckFjdGlvbignc3RhcnQtd29ya2Zsb3cnLCBBWFBTdGFydFdvcmtmbG93QWN0aW9uKTtcbiAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQWN0aW9uKCdkZWNpZGUnLCBBWFBXb3JrZmxvd0RlY2lkZUFjdGlvbik7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgaWYgKGNvbmZpZz8uZnVuY3Rpb25zKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdHlwZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnLmZ1bmN0aW9ucykpIHtcbiAgICAgICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlckZ1bmN0aW9uKGtleSwgdHlwZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICBpZiAoY29uZmlnPy5hY3Rpb25zKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdHlwZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnLmFjdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXJBY3Rpb24oa2V5LCB0eXBlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIGlmIChjb25maWc/LndvcmtmbG93cykge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHR5cGVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZy53b3JrZmxvd3MpKSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXJXb3JrZmxvdyhrZXksIHR5cGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZXBzOiBbQVhQV29ya2Zsb3dSZWdpc3RyeVNlcnZpY2VdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICAuLi5PYmplY3QudmFsdWVzKGNvbmZpZz8uYWN0aW9ucyA/PyB7IEFYUFN0YXJ0V29ya2Zsb3dBY3Rpb24gfSksXG4gICAgICAgIC4uLk9iamVjdC52YWx1ZXMoY29uZmlnPy5mdW5jdGlvbnMgPz8ge30pLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZvckNoaWxkKGNvbmZpZz86IEFYUFdvcmtmbG93TW9kdWxlQ29uZmlncyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QVhQV29ya2Zsb3dNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYUFdvcmtmbG93TW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIC8vIEJ1aWx0LWluIGFjdGl2aXRpZXMgYXJlIGFscmVhZHkgcmVnaXN0ZXJlZCBpbiBmb3JSb290IHZpYSBATmdNb2R1bGUgcHJvdmlkZXJzXG4gICAgICAgIC8vIE5vIG5lZWQgdG8gcmVnaXN0ZXIgYWdhaW4gaW4gZm9yQ2hpbGRcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6ICdBWFBXb3JrZmxvd01vZHVsZUZhY3RvcnknLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhQV29ya2Zsb3dSZWdpc3RyeVNlcnZpY2UpID0+ICgpID0+IHtcbiAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQWN0aW9uKCdzdGFydC13b3JrZmxvdycsIEFYUFN0YXJ0V29ya2Zsb3dBY3Rpb24pO1xuICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXJBY3Rpb24oJ2RlY2lkZScsIEFYUFdvcmtmbG93RGVjaWRlQWN0aW9uKTtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICBpZiAoY29uZmlnPy5mdW5jdGlvbnMpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB0eXBlXSBvZiBPYmplY3QuZW50cmllcyhjb25maWcuZnVuY3Rpb25zKSkge1xuICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyRnVuY3Rpb24oa2V5LCB0eXBlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIGlmIChjb25maWc/LmFjdGlvbnMpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB0eXBlXSBvZiBPYmplY3QuZW50cmllcyhjb25maWcuYWN0aW9ucykpIHtcbiAgICAgICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlckFjdGlvbihrZXksIHR5cGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgaWYgKGNvbmZpZz8ud29ya2Zsb3dzKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdHlwZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnLndvcmtmbG93cykpIHtcbiAgICAgICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlcldvcmtmbG93KGtleSwgdHlwZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlcHM6IFtBWFBXb3JrZmxvd1JlZ2lzdHJ5U2VydmljZV0sXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLk9iamVjdC52YWx1ZXMoY29uZmlnPy5hY3Rpb25zID8/IHt9KSxcbiAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhjb25maWc/LmZ1bmN0aW9ucyA/PyB7fSksXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdCgnQVhQV29ya2Zsb3dNb2R1bGVGYWN0b3J5JykgaW5zdGFuY2VzOiBhbnlbXSkge1xuICAgIGluc3RhbmNlcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgZigpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93b3JrZmxvdy9zcmMvYWNvcmV4LXBsYXRmb3JtLXdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.AXPWorkflowRegistryService"],"mappings":";;;;;;;AAAO,MAAM,gBAAgB,SAAS,KAAK,CAAC;AAC5C,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI,EAAE;AACvC,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,IAAI,GAAG,kBAAkB;AACtC,IAAI;AACJ;;ACHO,MAAM,uBAAuB,CAAC;AACrC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE;AACzC,IAAI;AACJ,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAC/C,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAClK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACnBN,MAAM,0BAA0B,CAAC;AACxC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE;AACrC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE;AACnC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE;AACrC,IAAI;AACJ,IAAI,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE;AACrC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC7C,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1C,IAAI;AACJ,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AACjC,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACzC,IAAI;AACJ,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACxC,IAAI;AACJ,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE;AACjC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AACzC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1C,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACnD,IAAI;AACJ,IAAI,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE;AACpC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5D,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;AACxC,YAAY,OAAO,KAAK,CAAC,QAAQ,CAAC;AAClC,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;AACvD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5D,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;AACxC,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;AACjC,gBAAgB,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;AACtC,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACzG,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACjF,QAAQ;AACR,IAAI;AACJ,IAAI,iBAAiB,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;AACpD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5D,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;AACxC,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AAClC,gBAAgB,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;AACtC,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACzG,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACjF,QAAQ;AACR,IAAI;AACJ,IAAI,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,mBAAmB,EAAE;AACpF,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;AACrD,QAAQ,IAAI,IAAI,IAAI,SAAS,EAAE;AAC/B,YAAY,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE;AAC1D,gBAAgB,MAAM,EAAE,aAAa;AACrC,gBAAgB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzC,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE;AAC1D,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB;AACpB,wBAAwB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC;AACzF,wBAAwB,UAAU,EAAE,SAAS;AAC7C,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACrK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,CAAC;AACrI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACvFN,MAAM,kBAAkB,CAAC;AAChC,IAAI,WAAW,CAAC,WAAW,GAAG,EAAE,EAAE;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE;AAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE;AACpC,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC;AAC/C,IAAI;AACJ,IAAI,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;AAC5B,QAAQ,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;AAC5C,IAAI;AACJ,IAAI,YAAY,CAAC,OAAO,GAAG,EAAE,EAAE;AAC/B,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,EAAE;AAC1D,IAAI;AACJ,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;AAC/D,IAAI;AACJ,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE;AAC3B,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AACzC,IAAI;AACJ,IAAI,UAAU,CAAC,MAAM,EAAE;AACvB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;AACpE,IAAI;AACJ,IAAI,SAAS,CAAC,GAAG,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;AACxC,IAAI;AACJ;AACO,MAAM,iBAAiB,CAAC;AAC/B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC3D,IAAI;AACJ,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACrL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACxI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;AACN,MAAM,mBAAmB,CAAC;AACjC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACvL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC1I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;AACN,SAAS,mBAAmB,CAAC,IAAI,EAAE;AAC1C,IAAI,MAAM,YAAY,GAAG,CAAC,OAAO,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACzD,IAAI,YAAY,CAAC,IAAI,GAAG,IAAI;AAC5B,IAAI,OAAO,YAAY;AACvB;AACO,SAAS,MAAM,CAAC,GAAG,YAAY,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;AACnF;;ACvDO,MAAM,uBAAuB,SAAS,iBAAiB,CAAC;AAC/D,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3B;AACA,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC7L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAClK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACPN,MAAM,kBAAkB,CAAC;AAChC,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO;AACxC,IAAI;AACJ,IAAI,WAAW,CAAC,eAAe,EAAE,QAAQ,EAAE;AAC3C,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe;AAC9C,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC;AACvD,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,EAAE;AACnD;AACA,QAAQ,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAC/F,QAAQ,IAAI,aAAa,GAAG,EAAE,CAAC,WAAW;AAC1C,QAAQ,MAAM,OAAO,GAAG,cAAc,YAAY;AAClD,cAAc;AACd,cAAc,IAAI,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC5E;AACA,QAAQ,OAAO,aAAa,EAAE;AAC9B,YAAY,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;AACvD,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB,MAAM,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,kCAAkC,CAAC,CAAC;AACtG,YAAY;AACZ;AACA,YAAY,MAAM,MAAM,GAAG,OAAO,WAAW,CAAC,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM;AACnI;AACA,YAAY,IAAI,WAAW,CAAC,KAAK,EAAE;AACnC,gBAAgB,IAAI,MAAM,GAAG,EAAE;AAC/B,gBAAgB,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC;AAC3F,gBAAgB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,YAAY;AACtE,oBAAoB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AACjD,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,CAAC,CAAC,CAAC;AACnB,YAAY;AACZ,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,YAAY;AACtE,oBAAoB,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AACjD,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,YAAY;AACZ,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC,gBAAgB,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC;AACnE,YAAY;AACZ;AACA,YAAY,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC;AACnF,YAAY,IAAI,YAAY,EAAE;AAC9B,gBAAgB,aAAa,GAAG,YAAY,CAAC,UAAU;AACvD,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ,IAAI,WAAW,CAAC,cAAc,EAAE;AAChC;AACA,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ,IAAI,iBAAiB,CAAC,UAAU,EAAE;AAClC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC;AACrE,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,MAAM,IAAI,gBAAgB,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,4BAA4B,CAAC,CAAC;AAChG,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5C,IAAI;AACJ,IAAI,mBAAmB,CAAC,YAAY,EAAE;AACtC,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC;AAC3E,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAY,MAAM,IAAI,gBAAgB,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,4BAA4B,CAAC,CAAC;AACpG,QAAQ;AACR,QAAQ,OAAO,YAAY;AAC3B,IAAI;AACJ,IAAI,MAAM,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE;AAClD,QAAQ,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AACpC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,SAAS,EAAE;AACtD,YAAY,IAAI,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;AAC5E,gBAAgB,OAAO,QAAQ;AAC/B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE;AACjD,QAAQ,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,YAAY,OAAO,IAAI,CAAC;AACxB,QAAQ;AACR;AACA,QAAQ,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjH;AACA,QAAQ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC5D;AACA,QAAQ,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AAChD,IAAI;AACJ,IAAI,MAAM,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE;AACtD,QAAQ,QAAQ,SAAS,CAAC,IAAI;AAC9B,YAAY,KAAK,QAAQ;AACzB,gBAAgB,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;AACnH,YAAY,KAAK,KAAK;AACtB;AACA,gBAAgB,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE;AAChE,gBAAgB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9H,gBAAgB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AAC3D,YAAY,KAAK,IAAI;AACrB;AACA,gBAAgB,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE;AAC/D,gBAAgB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5H,gBAAgB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AACzD,YAAY;AACZ,gBAAgB,MAAM,IAAI,gBAAgB,CAAC,CAAC,4BAA4B,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3F;AACA,IAAI;AACJ;AACA,IAAI,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,OAAO,EAAE;AAC1D,QAAQ,IAAI;AACZ,YAAY,IAAI,UAAU,GAAG,EAAE;AAC/B,YAAY,IAAI,OAAO,kBAAkB,KAAK,QAAQ,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACpG,gBAAgB,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,qBAAqB,CAAC;AACvF,gBAAgB,IAAI,CAAC,eAAe,EAAE;AACtC,oBAAoB,MAAM,KAAK,CAAC,CAAC,8BAA8B,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACvF,gBAAgB;AAChB,gBAAgB,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC;AAC/C,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,UAAU,GAAG,kBAAkB;AAC/C,YAAY;AACZ;AACA,YAAY,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE;AACpE;AACA,YAAY,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,iDAAiD,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;AAC5H,YAAY,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;AAC/C,YAAY,OAAO,MAAM;AACzB,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC;AAChE,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;AACpE,QAAQ,IAAI,CAAC,GAAG,EAAE;AAClB,YAAY;AACZ,QAAQ;AACR,QAAQ,WAAW,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACnD,YAAY,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG;AACzE,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1E,gBAAgB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC;AAC9E,gBAAgB,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;AAClD,YAAY;AACZ,iBAAiB,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC9C,gBAAgB,KAAK,KAAK,IAAI;AAC9B,iBAAiB,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AACxE;AACA,gBAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;AACvE,YAAY;AACZ,iBAAiB;AACjB;AACA,gBAAgB,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;AAC/C,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,MAAM,KAAK,GAAG,EAAE;AACxB,QAAQ,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAClE,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO;AAChE,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE;AACrC,IAAI;AACJ,IAAI,mBAAmB,CAAC,YAAY,EAAE;AACtC,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC;AAC3E,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAY,MAAM,IAAI,gBAAgB,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,4BAA4B,CAAC,CAAC;AACpG,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;AAC9C,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEA,0BAA6B,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACtP,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7J;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,0BAA6B,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;;AC/L9F,MAAM,sBAAsB,SAAS,iBAAiB,CAAC;AAC9D,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACzD,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3B;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO;AACxB,YAAY,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9C;AACA,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACtE,QAAQ;AACR,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,MAAM,CAAC;AACnB,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC5L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACjK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC9Bb;AACA;AACA;AACA;AACA;;ACHY,MAAC,qBAAqB,GAAG,IAAI,cAAc,CAAC,uBAAuB,EAAE;AACjF,IAAI,OAAO,EAAE,MAAM,EAAE;AACrB,CAAC;AACW,MAAC,8BAA8B,GAAG,IAAI,cAAc,CAAC,gCAAgC,EAAE;AACnG,IAAI,OAAO,EAAE,MAAM,EAAE;AACrB,CAAC;;ACND;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,4BAA4B,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AACjG,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AACxF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE;AACvC;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE;AAC7C;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE;AAC7C;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE;AACzC;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3C;AACA,QAAQ,IAAI,CAAC,yBAAyB,GAAG,IAAI,GAAG,EAAE;AAClD,QAAQ,IAAI,CAAC,yBAAyB,GAAG,IAAI,GAAG,EAAE;AAClD,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,EAAE;AAChD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,QAAQ,EAAE;AAClC;AACA,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACrD,YAAY,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1D,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC1D,YAAY,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/D,QAAQ;AACR;AACA,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC;AACzE,QAAQ,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC;AACpE,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,CAAC,UAAU,EAAE;AACtC;AACA,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACjD,YAAY,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;AACtD,QAAQ;AACR;AACA,QAAQ,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE;AACrE,YAAY,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC;AACvE,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AAC1D,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACvD,YAAY,MAAM,IAAI,CAAC,aAAa,EAAE;AACtC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACrD,gBAAgB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1D,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,OAAO,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC;AACzD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,CAAC,UAAU,EAAE;AAC5C,QAAQ,MAAM,IAAI,GAAG,EAAE;AACvB,QAAQ,IAAI,iBAAiB,GAAG,UAAU;AAC1C,QAAQ,OAAO,iBAAiB,EAAE;AAClC,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC;AAC1E,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAC5E,YAAY;AACZ,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAClC,YAAY,iBAAiB,GAAG,QAAQ,CAAC,QAAQ;AACjD,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,yBAAyB,CAAC,UAAU,EAAE;AAChD;AACA,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACvD,YAAY,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5D,QAAQ;AACR;AACA,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AAC/D,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,KAAK,CAAC,EAAE;AACxF;AACA,YAAY,MAAM,UAAU,GAAG,EAAE;AACjC,YAAY,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;AACjE,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC5D,YAAY,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,UAAU,CAAC;AACjE,QAAQ;AACR;AACA,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC;AAC3E,QAAQ,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC;AACtE,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,CAAC,IAAI,EAAE;AAClC;AACA,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC7C,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAClD,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACpD,YAAY,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;AACzD,QAAQ;AACR;AACA,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;AACnE,QAAQ,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC;AAC9D,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,2BAA2B,CAAC,YAAY,EAAE;AACpD;AACA,QAAQ,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE;AACrF,YAAY,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE;AACpE,gBAAgB,OAAO,UAAU;AACjC,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;AACrE,QAAQ,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,EAAE;AAC/C;AACA,YAAY,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;AACzD,YAAY,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU,CAAC,QAAQ,CAAC;AACrH,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,OAAO,KAAK,CAAC,EAAE;AAC/B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,+BAA+B,CAAC,YAAY,EAAE;AACxD,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC;AAC/E,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,2BAA2B,CAAC,CAAC;AACnF,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;AACrD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,2BAA2B,CAAC,QAAQ,EAAE;AAChD,QAAQ,IAAI;AACZ,YAAY,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACtF,YAAY,MAAM,UAAU,GAAG,EAAE;AACjC;AACA,YAAY,MAAM,sBAAsB,GAAG;AAC3C,kBAAkB,IAAI,CAAC,2BAA2B,CAAC,QAAQ;AAC3D,kBAAkB,IAAI,CAAC;AACvB,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/D,gBAAgB,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;AAC9C;AACA,gBAAgB,IAAI,sBAAsB,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC5F,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;AAClG,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpE,wBAAwB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACpE,4BAA4B,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACpD;AACA,4BAA4B,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACtF,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,MAAM;AAC1B;AACA,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC/D,YAAY,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC3E,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3D,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,2BAA2B,CAAC,UAAU,EAAE;AAC5C,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;AACjE,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE;AACtC,YAAY,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQ;AACR;AACA,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,2BAA2B,CAAC,UAAU,EAAE;AAClD,QAAQ,IAAI;AACZ,YAAY,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACtF,YAAY,MAAM,WAAW,GAAG,EAAE;AAClC;AACA,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;AACrE,YAAY,MAAM,sBAAsB,GAAG,UAAU,KAAK,SAAS,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI;AACzF,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/D,gBAAgB,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;AAC9C;AACA,gBAAgB,IAAI,sBAAsB,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC5F,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;AAClG,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACtE,wBAAwB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACjD,4BAA4B,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACrD,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,MAAM;AAC1B;AACA,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC;AAClE,YAAY,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;AACvC,gBAAgB,IAAI,GAAG,CAAC,IAAI,EAAE;AAC9B,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;AAC5D,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,YAAY,OAAO,WAAW;AAC9B,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,CAAC;AAC7D,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,yBAAyB,CAAC,IAAI,EAAE;AAC1C,QAAQ,IAAI;AACZ,YAAY,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACtF;AACA,YAAY,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE;AAC/C,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;AAClG,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AAClE,wBAAwB,IAAI,MAAM,EAAE;AACpC,4BAA4B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACnE,4BAA4B,OAAO,MAAM;AACzC,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,MAAM;AAC1B;AACA,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE;AAC1E,gBAAgB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;AACxE,gBAAgB,IAAI,KAAK,EAAE;AAC3B,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;AAC1D,oBAAoB,OAAO,KAAK;AAChC,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC;AACrD,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,yBAAyB,CAAC,UAAU,EAAE;AAChD,QAAQ,MAAM,WAAW,GAAG,CAAC,SAAS,CAAC;AACvC,QAAQ,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;AAClC,QAAQ,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,YAAY,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE;AAChD,YAAY,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtC,gBAAgB;AAChB,YAAY,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClC,YAAY,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AACjE,YAAY,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC;AACvE,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ;AACA,YAAY,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AAC/C,gBAAgB,IAAI,QAAQ,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC9E,oBAAoB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjD,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,UAAU,EAAE;AACpC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5D,QAAQ,OAAO,QAAQ,GAAG,QAAQ,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;AAC5D,IAAI;AACJ;AACA;AACA;AACA,IAAI,qBAAqB,CAAC,UAAU,EAAE;AACtC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5D,QAAQ,OAAO,QAAQ,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK;AAChE,IAAI;AACJ;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AACnC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACrC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AACtC,QAAQ,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;AAC9C,QAAQ,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;AAC9C,QAAQ,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;AAC5C,IAAI;AACJ;AACA;AACA;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AACnC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AACtC,QAAQ,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;AAC9C,IAAI;AACJ;AACA;AACA;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACrC,QAAQ,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;AAC9C,QAAQ,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;AAC5C,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAChM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACvK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC;AACvI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACtab;AACA;AACA;AACA;AACY,MAAC,mBAAmB,GAAG,IAAI,cAAc,CAAC,qBAAqB;;ACF3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,8BAA8B,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB;AACA;AACA,QAAQ,MAAM,YAAY,GAAG;AAC7B,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;AACxC,YAAY,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;AAC9C,YAAY,IAAI,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;AACzC,YAAY,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;AAC1C,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,MAAM,KAAK,GAAG;AACtB;AACA,YAAY,MAAM,EAAE,YAAY,CAAC,MAAM;AACvC,YAAY,SAAS,EAAE,YAAY,CAAC,SAAS;AAC7C,YAAY,IAAI,EAAE,YAAY,CAAC,IAAI;AACnC,YAAY,OAAO,EAAE,YAAY,CAAC,OAAO;AACzC;AACA,YAAY,OAAO,EAAE;AACrB,gBAAgB,IAAI,EAAE,CAAC,IAAI,KAAK;AAChC;AACA;AACA,oBAAoB,OAAO,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC;AAClD,gBAAgB,CAAC;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE;AAChD;AACA,QAAQ,MAAM,OAAO,GAAG,EAAE;AAC1B,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,IAAI,eAAe,YAAY,GAAG,EAAE;AAChD,gBAAgB,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK;AAChE,oBAAoB,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM;AAChD,gBAAgB,CAAC,CAAC;AAClB,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC;AACvD,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC;AAC/B,YAAY,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;AACrC,YAAY,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;AAC5C,YAAY,OAAO,EAAE,OAAO;AAC5B,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAClM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACzK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,UAAU,EAAE,CAAC;AACzI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC7Hb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gBAAgB,CAAC;AAC9B,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AACxE,QAAQ,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAC5E,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE;AACxD,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAAE,IAAI,CAAC,KAAK,CAAC;AAC/E,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;AAClD;AACA,YAAY,IAAI,eAAe,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;AAClD,YAAY,IAAI,aAAa,EAAE;AAC/B;AACA,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,aAAa,EAAE,eAAe,CAAC;AAC7G;AACA,gBAAgB,eAAe,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC;AAClG,gBAAgB,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE,eAAe,CAAC;AACvF,YAAY;AACZ;AACA,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC;AAC1E,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,gCAAgC,EAAE,YAAY,CAAC,gCAAgC,CAAC;AAC9G,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;AAC1C,gBAAgB,OAAO;AACvB,oBAAoB,MAAM,EAAE,IAAI;AAChC,oBAAoB,OAAO,EAAE;AAC7B,iBAAiB;AACjB,YAAY;AACZ;AACA,YAAY,IAAI,YAAY,GAAG,eAAe;AAC9C,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC,IAAI,OAAO,YAAY,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;AAC9F;AACA,gBAAgB,YAAY,GAAG,EAAE,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE;AAChE,YAAY;AACZ;AACA;AACA,YAAY,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC;AACxF,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,OAAO;AACvB,oBAAoB,MAAM,EAAE,IAAI;AAChC,oBAAoB,OAAO,EAAE,QAAQ;AACrC,iBAAiB;AACjB,YAAY;AACZ,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACjC,gBAAgB,OAAO;AACvB,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI;AACnD,qBAAqB;AACrB,oBAAoB,OAAO,EAAE,QAAQ;AACrC,iBAAiB;AACjB,YAAY;AACZ,YAAY,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI;AAC7C,YAAY,MAAM,QAAQ,GAAG,aAAa,EAAE,QAAQ,IAAI,EAAE;AAC1D;AACA;AACA,YAAY,IAAI,OAAO,GAAG,MAAM;AAChC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,gBAAgB,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM;AACxF,YAAY;AACZ,YAAY,OAAO;AACnB,gBAAgB,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,IAAI;AACrD,gBAAgB,OAAO;AACvB,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,wEAAwE,CAAC,EAAE,KAAK,CAAC;AAC5G,YAAY,OAAO;AACnB,gBAAgB,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE;AACnE,gBAAgB,OAAO,EAAE;AACzB,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACpL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3J;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC/Gb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,kBAAkB,CAAC;AAChC,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACzD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE;AACnC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI;AACtC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,KAAK,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE,EAAE;AACxC,QAAQ,IAAI;AACZ,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC7D,gBAAgB,UAAU;AAC1B,gBAAgB;AAChB,aAAa,CAAC;AACd;AACA,YAAY,MAAM,oBAAoB,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;AAC9D,YAAY,IAAI,oBAAoB,CAAC,WAAW,IAAI,EAAE,oBAAoB,CAAC,WAAW,YAAY,IAAI,CAAC,EAAE;AACzG,gBAAgB,oBAAoB,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;AAC7F,YAAY;AACZ,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;AAC1E,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,UAAU,EAAE,QAAQ,CAAC,UAAU;AAC/C,gBAAgB,KAAK,EAAE,oBAAoB;AAC3C,gBAAgB,QAAQ,EAAE,QAAQ,CAAC,WAAW,IAAI,IAAI;AACtD,gBAAgB,MAAM,EAAE,oBAAoB,CAAC;AAC7C,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC;AACnF,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI;AACxC,aAAa;AACb,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,OAAO,CAAC,IAAI,EAAE;AACxB;AACA,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;AAChF,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,+CAA+C,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AACjG,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC;AAChF,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,0CAA0C,CAAC,CAAC;AAClG,QAAQ;AACR;AACA;AACA,QAAQ,IAAI,aAAa;AACzB,QAAQ,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE;AACrE,YAAY,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,EAAE;AACzD,gBAAgB,aAAa,GAAG,KAAK;AACrC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,mEAAmE,EAAE,IAAI,CAAC,UAAU,CAAC,+CAA+C,CAAC,CAAC;AAChK,QAAQ;AACR;AACA;AACA,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC;AAC5E,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;AACtD,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC9D,gBAAgB,UAAU;AAC1B,gBAAgB,MAAM,EAAE,IAAI,CAAC,UAAU;AACvC,gBAAgB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzC,gBAAgB,OAAO;AACvB,gBAAgB,SAAS,EAAE;AAC3B,aAAa,CAAC;AACd;AACA,YAAY,IAAI,uBAAuB,GAAG,QAAQ,CAAC,KAAK;AACxD,YAAY,IAAI,QAAQ,CAAC,KAAK,EAAE;AAChC;AACA,gBAAgB,uBAAuB,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;AAC/D,gBAAgB,IAAI,uBAAuB,CAAC,WAAW,IAAI,EAAE,uBAAuB,CAAC,WAAW,YAAY,IAAI,CAAC,EAAE;AACnH,oBAAoB,uBAAuB,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;AACvG,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,uBAAuB,CAAC;AACxE,YAAY;AACZ,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,UAAU;AAC1B,gBAAgB,KAAK,EAAE,uBAAuB;AAC9C,gBAAgB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;AACnD,gBAAgB,MAAM,EAAE,QAAQ,CAAC;AACjC,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC;AACjF,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,UAAU;AAC1B,gBAAgB,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI;AACxC,aAAa;AACb,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE;AACpE,QAAQ,IAAI;AACZ;AACA,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAgB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AACzE,YAAY;AACZ;AACA,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC9D,gBAAgB,UAAU;AAC1B,gBAAgB,MAAM;AACtB,gBAAgB,SAAS;AACzB,gBAAgB,OAAO;AACvB,gBAAgB;AAChB,aAAa,CAAC;AACd;AACA,YAAY,IAAI,QAAQ,CAAC,KAAK,EAAE;AAChC;AACA,gBAAgB,MAAM,eAAe,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;AAC7D,gBAAgB,IAAI,eAAe,CAAC,WAAW,IAAI,EAAE,eAAe,CAAC,WAAW,YAAY,IAAI,CAAC,EAAE;AACnG,oBAAoB,eAAe,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;AACvF,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC;AAChE,YAAY;AACZ;AACA,YAAY,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,SAAS;AACtF,YAAY,IAAI,eAAe,IAAI,eAAe,CAAC,WAAW,IAAI,EAAE,eAAe,CAAC,WAAW,YAAY,IAAI,CAAC,EAAE;AAClH,gBAAgB,eAAe,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;AACnF,YAAY;AACZ,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,UAAU;AAC1B,gBAAgB,KAAK,EAAE,eAAe,IAAI,QAAQ,CAAC,KAAK;AACxD,gBAAgB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;AACnD,gBAAgB,MAAM,EAAE,QAAQ,CAAC;AACjC,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC;AACnF,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,UAAU;AAC1B,gBAAgB,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI;AACxC,aAAa;AACb,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,QAAQ,CAAC,UAAU,EAAE;AAC/B;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AACtD,QAAQ,IAAI,MAAM,EAAE;AACpB;AACA,YAAY,MAAM,gBAAgB,GAAG,EAAE,GAAG,MAAM,EAAE;AAClD,YAAY,IAAI,gBAAgB,CAAC,WAAW,IAAI,EAAE,gBAAgB,CAAC,WAAW,YAAY,IAAI,CAAC,EAAE;AACjG,gBAAgB,gBAAgB,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;AACrF,YAAY;AACZ;AACA,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE;AAChF,YAAY,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE;AAC3C,gBAAgB,OAAO,gBAAgB;AACvC,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI;AACZ,YAAY,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC7D,gBAAgB;AAChB,aAAa,CAAC;AACd;AACA,YAAY,MAAM,eAAe,GAAG,EAAE,GAAG,KAAK,EAAE;AAChD,YAAY,IAAI,eAAe,CAAC,WAAW,IAAI,EAAE,eAAe,CAAC,WAAW,YAAY,IAAI,CAAC,EAAE;AAC/F,gBAAgB,eAAe,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;AACnF,YAAY;AACZ;AACA,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC;AAC5D,YAAY,OAAO,eAAe;AAClC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,KAAK,CAAC;AACxF,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACtL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7J;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AChSD,MAAC,qBAAqB,GAAG,IAAI,cAAc,CAAC,uBAAuB,EAAE;AACjF,IAAI,OAAO,EAAE,MAAM,EAAE;AACrB,CAAC;AACW,MAAC,8BAA8B,GAAG,IAAI,cAAc,CAAC,gCAAgC,EAAE;AACnG,IAAI,OAAO,EAAE,MAAM,EAAE;AACrB,CAAC;;ACDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,sBAAsB,CAAC;AACpC,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAC7E,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE;AAClC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE;AACnC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,4CAA4C,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC;AACjG;AACA,QAAQ,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE;AAClD,QAAQ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AAC9B;AACA,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,sDAAsD,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAClG,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;AACvE,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,uDAAuD,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACzG,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACnF,QAAQ;AACR,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,0CAA0C,CAAC,EAAE;AAClE,YAAY,IAAI,EAAE,UAAU,CAAC,IAAI;AACjC,YAAY,eAAe,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACtE,YAAY,gBAAgB,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACxE,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,KAAK,GAAG;AACtB,YAAY,UAAU;AACtB,YAAY,UAAU,EAAE,OAAO,CAAC,UAAU;AAC1C,YAAY,MAAM,EAAE,SAAS;AAC7B,YAAY,SAAS,EAAE,EAAE;AACzB,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;AACtC,YAAY,MAAM,EAAE,SAAS;AAC7B,YAAY,WAAW,EAAE,GAAG;AAC5B,SAAS;AACT;AACA,QAAQ,MAAM,UAAU,GAAG;AAC3B,YAAY,UAAU;AACtB,YAAY,UAAU,EAAE,OAAO,CAAC,UAAU;AAC1C,YAAY,UAAU;AACtB,YAAY,KAAK;AACjB,YAAY,mBAAmB,EAAE,IAAI,GAAG,EAAE;AAC1C,YAAY,eAAe,EAAE,IAAI,GAAG,EAAE;AACtC,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;AAClD;AACA,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,oDAAoD,CAAC,CAAC;AAC3E,QAAQ,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;AACvE;AACA,QAAQ,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE;AACjD,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,yCAAyC,CAAC,EAAE;AACjE,YAAY,UAAU;AACtB,YAAY,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM;AAC3C,YAAY,cAAc,EAAE,CAAC,CAAC,WAAW;AACzC,YAAY,eAAe,EAAE,WAAW,EAAE,YAAY;AACtD,SAAS,CAAC;AACV,QAAQ,OAAO;AACf,YAAY,UAAU;AACtB,YAAY,KAAK,EAAE,UAAU,CAAC,KAAK;AACnC,YAAY,WAAW,EAAE,WAAW,IAAI,IAAI;AAC5C,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,MAAM,CAAC,OAAO,EAAE;AAC1B;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AAChE,QAAQ,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,EAAE;AAClH,YAAY,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;AACjD,QAAQ;AACR;AACA,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AACjE,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,6BAA6B,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACjF,QAAQ;AACR;AACA,QAAQ,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;AACvD,YAAY,MAAM,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;AAC3C,YAAY,OAAO,EAAE,OAAO,CAAC,OAAO;AACpC,SAAS,CAAC;AACV,QAAQ,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1D;AACA,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE;AAC/B,YAAY,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG;AACzC,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS;AAC7C,gBAAgB,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;AAC5C,aAAa;AACb,QAAQ;AACR;AACA;AACA,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;AACpE;AACA,QAAQ,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE;AACjD;AACA,QAAQ,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;AAChE,YAAY,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW;AACjD,YAAY,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS;AAChE,QAAQ;AACR,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;AAC3C,YAAY,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,EAAE;AACjD,YAAY,KAAK,EAAE,UAAU,CAAC,KAAK;AACnC,YAAY,QAAQ,EAAE,QAAQ,IAAI,IAAI;AACtC,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,QAAQ,CAAC,OAAO,EAAE;AAC5B,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AACjE,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,6BAA6B,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACjF,QAAQ;AACR;AACA,QAAQ,MAAM,KAAK,GAAG,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE;AAC7C,QAAQ,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,KAAK,CAAC,WAAW,YAAY,IAAI,CAAC,EAAE;AACvE,YAAY,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;AAC3D,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,UAAU,EAAE;AACpC;AACA,QAAQ,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAClF,QAAQ,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE;AAC3C,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,EAAE;AACrD,gBAAgB,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK;AACxC;AACA,gBAAgB,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE;AAC9D,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC;AAC/E,wBAAwB,IAAI,UAAU,EAAE;AACxC,4BAA4B,OAAO,UAAU;AAC7C,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,MAAM;AAC1B;AACA,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,oBAAoB,CAAC,UAAU,EAAE;AAC3C,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK;AACjD,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE;AACjD,QAAQ,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE;AACnD;AACA,QAAQ,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AACrC,QAAQ,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAI;AACvC,YAAY,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;AAClD,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAE;AAC7C,QAAQ,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAE;AAC7C,QAAQ,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI;AACpC,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;AACpD,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;AACpD,YAAY,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACpD,gBAAgB,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;AACrD,YAAY;AACZ,YAAY,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACxD,YAAY,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACpD,gBAAgB,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;AACrD,YAAY;AACZ,YAAY,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACxD,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,IAAI,iBAAiB,GAAG,UAAU,CAAC,iBAAiB;AAC5D,QAAQ,IAAI,CAAC,iBAAiB,EAAE;AAChC;AACA,YAAY,IAAI,KAAK,CAAC,eAAe,EAAE;AACvC,gBAAgB,iBAAiB,GAAG,KAAK,CAAC,eAAe;AACzD,YAAY;AACZ,iBAAiB;AACjB;AACA,gBAAgB,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AACnD,oBAAoB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC/D,wBAAwB,iBAAiB,GAAG,QAAQ,CAAC,EAAE;AACvD,wBAAwB;AACxB,oBAAoB;AACpB,gBAAgB;AAChB;AACA,gBAAgB,IAAI,CAAC,iBAAiB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACjE,oBAAoB,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;AACxD,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,OAAO,iBAAiB,EAAE;AAClC,YAAY,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC/D,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;AACvE;AACA,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,CAAC,eAAe,CAAC;AACzH,gBAAgB,iBAAiB,GAAG,MAAM,IAAI,SAAS;AACvD,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,0DAA0D,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACrG,YAAY,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5G,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,6CAA6C,CAAC,EAAE;AACzE,gBAAgB,IAAI,EAAE,kBAAkB,EAAE,IAAI;AAC9C,gBAAgB,IAAI,EAAE,kBAAkB,EAAE,IAAI;AAC9C,gBAAgB,aAAa,EAAE,kBAAkB,EAAE,aAAa;AAChE,gBAAgB,KAAK,EAAE,kBAAkB,EAAE,KAAK;AAChD,gBAAgB,KAAK,EAAE,CAAC,CAAC,kBAAkB;AAC3C,aAAa,CAAC;AACd,YAAY,MAAM,aAAa,GAAG,kBAAkB,EAAE,aAAa,IAAI,UAAU;AACjF,YAAY,MAAM,aAAa,GAAG,kBAAkB,EAAE,KAAK;AAC3D;AACA,YAAY,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7C,gBAAgB,OAAO,CAAC,GAAG,CAAC,CAAC,oDAAoD,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpH,gBAAgB,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACrE,gBAAgB,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAClE,oBAAoB,MAAM,EAAE,IAAI;AAChC,oBAAoB,OAAO,EAAE,MAAM;AACnC,iBAAiB,CAAC;AAClB;AACA,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,CAAC,eAAe,CAAC;AACzH,gBAAgB,iBAAiB,GAAG,MAAM,IAAI,SAAS;AACvD,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,aAAa,KAAK,UAAU,IAAI,aAAa,KAAK,MAAM,EAAE;AAC1E;AACA;AACA,gBAAgB,MAAM,IAAI,GAAG;AAC7B,oBAAoB,SAAS,EAAE,gBAAgB,CAAC,IAAI,EAAE;AACtD,oBAAoB,UAAU,EAAE,QAAQ,CAAC,EAAE;AAC3C,oBAAoB,YAAY,EAAE,QAAQ,CAAC,IAAI;AAC/C,oBAAoB,YAAY,EAAE,aAAa,IAAI,SAAS;AAC5D,oBAAoB,aAAa,EAAE,aAAa;AAChD,oBAAoB,KAAK,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;AAChD,oBAAoB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,IAAI,EAAE;AAC3D,iBAAiB;AACjB;AACA,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE;AACpD,oBAAoB,UAAU,EAAE,UAAU,CAAC,UAAU;AACrD,oBAAoB,UAAU,EAAE,QAAQ,CAAC,EAAE;AAC3C,iBAAiB,CAAC;AAClB;AACA,gBAAgB,UAAU,CAAC,iBAAiB,GAAG,iBAAiB;AAChE,gBAAgB,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW;AACrD,gBAAgB,UAAU,CAAC,KAAK,CAAC,aAAa,GAAG,iBAAiB;AAClE;AACA,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ;AACA,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,CAAC,eAAe,CAAC;AACrH,YAAY,iBAAiB,GAAG,MAAM,IAAI,SAAS;AACnD,QAAQ;AACR;AACA,QAAQ,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW;AAC7C,QAAQ,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS;AAC5D,QAAQ,UAAU,CAAC,iBAAiB,GAAG,SAAS;AAChD,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE;AAC/E,QAAQ,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE;AAC5E,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,YAAY,OAAO,IAAI,CAAC;AACxB,QAAQ;AACR;AACA,QAAQ,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC7D,QAAQ,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,MAAM;AACjD;AACA;AACA,QAAQ,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AACxC,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM;AACzD,YAAY,IAAI,UAAU,KAAK,OAAO,EAAE;AACxC,gBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW;AAC9C,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,YAAY,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;AACpD,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC1L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAC7I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;AC9Vb;;ACAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,4BAA4B,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AACjG,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AACxF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE;AACvC;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE;AAC7C;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE;AAC5C;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE;AACxC;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3C;AACA,QAAQ,IAAI,CAAC,yBAAyB,GAAG,IAAI,GAAG,EAAE;AAClD,QAAQ,IAAI,CAAC,wBAAwB,GAAG,IAAI,GAAG,EAAE;AACjD,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,EAAE;AAChD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,QAAQ,EAAE;AAClC;AACA,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACrD,YAAY,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1D,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC1D,YAAY,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/D,QAAQ;AACR;AACA,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC;AACzE,QAAQ,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC;AACpE,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,CAAC,UAAU,EAAE;AACtC;AACA,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACjD,YAAY,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;AACtD,QAAQ;AACR;AACA,QAAQ,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE;AACrE,YAAY,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC;AACvE,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AAC1D,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACvD,YAAY,MAAM,IAAI,CAAC,aAAa,EAAE;AACtC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACrD,gBAAgB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1D,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,OAAO,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC;AACzD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,CAAC,UAAU,EAAE;AAC5C,QAAQ,MAAM,IAAI,GAAG,EAAE;AACvB,QAAQ,IAAI,iBAAiB,GAAG,UAAU;AAC1C,QAAQ,OAAO,iBAAiB,EAAE;AAClC,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC;AAC1E,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAC5E,YAAY;AACZ,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAClC,YAAY,iBAAiB,GAAG,QAAQ,CAAC,QAAQ;AACjD,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,wBAAwB,CAAC,UAAU,EAAE;AAC/C;AACA,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACtD,YAAY,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC;AAC3D,QAAQ;AACR;AACA,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AAC/D,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,KAAK,CAAC,EAAE;AACxF;AACA,YAAY,MAAM,UAAU,GAAG,EAAE;AACjC,YAAY,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;AAChE,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC3D,YAAY,OAAO,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC;AAChE,QAAQ;AACR;AACA,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC;AAC1E,QAAQ,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC;AACrE,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,CAAC,IAAI,EAAE;AAClC;AACA,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC5C,YAAY,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AACjD,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACpD,YAAY,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;AACzD,QAAQ;AACR;AACA,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;AACnE,QAAQ,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC;AAC9D,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,2BAA2B,CAAC,YAAY,EAAE;AACpD;AACA,QAAQ,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE;AACpF,YAAY,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE;AACpE,gBAAgB,OAAO,UAAU;AACjC,YAAY;AACZ,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;AACrE,QAAQ,IAAI,UAAU,EAAE;AACxB;AACA,YAAY,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;AACzD,YAAY,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AAC/C,gBAAgB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;AAClF,gBAAgB,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE;AAClE,oBAAoB,OAAO,QAAQ,CAAC,EAAE;AACtC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,+BAA+B,CAAC,YAAY,EAAE;AACxD,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC;AAC/E,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,2BAA2B,CAAC,CAAC;AACnF,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;AACrD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,2BAA2B,CAAC,QAAQ,EAAE;AAChD,QAAQ,IAAI;AACZ,YAAY,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACtF,YAAY,MAAM,UAAU,GAAG,EAAE;AACjC;AACA,YAAY,MAAM,sBAAsB,GAAG;AAC3C,kBAAkB,IAAI,CAAC,2BAA2B,CAAC,QAAQ;AAC3D,kBAAkB,IAAI,CAAC;AACvB,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/D,gBAAgB,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;AAC9C;AACA,gBAAgB,IAAI,sBAAsB,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC5F,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;AAClG,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpE,wBAAwB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACpE,4BAA4B,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACpD;AACA,4BAA4B,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACtF,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,MAAM;AAC1B;AACA,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC/D,YAAY,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC3E,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3D,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,2BAA2B,CAAC,UAAU,EAAE;AAC5C,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;AACjE,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE;AACtC,YAAY,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQ;AACR;AACA,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,0BAA0B,CAAC,UAAU,EAAE;AACjD,QAAQ,IAAI;AACZ,YAAY,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACtF,YAAY,MAAM,WAAW,GAAG,EAAE;AAClC;AACA,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;AACrE,YAAY,MAAM,sBAAsB,GAAG,UAAU,KAAK,SAAS,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI;AACzF,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/D,gBAAgB,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;AAC9C;AACA,gBAAgB,IAAI,sBAAsB,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC5F,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;AAClG,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACtE,wBAAwB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACjD,4BAA4B,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACrD,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,MAAM;AAC1B;AACA,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC;AACjE,YAAY,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;AACvC,gBAAgB,IAAI,GAAG,CAAC,IAAI,EAAE;AAC9B,oBAAoB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;AAC3D,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,YAAY,OAAO,WAAW;AAC9B,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5D,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,yBAAyB,CAAC,IAAI,EAAE;AAC1C,QAAQ,IAAI;AACZ,YAAY,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACtF;AACA,YAAY,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE;AAC/C,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,UAAU,EAAE;AACpG,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AACxE,wBAAwB,IAAI,UAAU,EAAE;AACxC,4BAA4B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;AACtE,4BAA4B,OAAO,UAAU;AAC7C,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,MAAM;AAC1B;AACA,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,EAAE;AACzE,gBAAgB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;AACxE,gBAAgB,IAAI,KAAK,EAAE;AAC3B,oBAAoB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;AACzD,oBAAoB,OAAO,KAAK;AAChC,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC;AACrD,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,yBAAyB,CAAC,UAAU,EAAE;AAChD,QAAQ,MAAM,WAAW,GAAG,CAAC,SAAS,CAAC;AACvC,QAAQ,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;AAClC,QAAQ,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,YAAY,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE;AAChD,YAAY,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtC,gBAAgB;AAChB,YAAY,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClC,YAAY,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AACjE,YAAY,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC;AACvE,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ;AACA,YAAY,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AAC/C,gBAAgB,IAAI,QAAQ,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC9E,oBAAoB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjD,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,UAAU,EAAE;AACpC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5D,QAAQ,OAAO,QAAQ,GAAG,QAAQ,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK;AAC5D,IAAI;AACJ;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,UAAU,EAAE;AACrC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5D,QAAQ,OAAO,QAAQ,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK;AAChE,IAAI;AACJ;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AACnC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;AACxC,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AACpC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AACtC,QAAQ,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;AAC9C,QAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE;AAC7C,QAAQ,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;AAC5C,IAAI;AACJ;AACA;AACA;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AACnC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AACtC,QAAQ,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;AAC9C,IAAI;AACJ;AACA;AACA;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;AACxC,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AACpC,QAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE;AAC7C,QAAQ,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;AAC5C,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAChM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACvK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC;AACvI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC1ab;;ACOO,MAAM,iBAAiB,CAAC;AAC/B,IAAI,OAAO,OAAO,CAAC,MAAM,EAAE;AAC3B,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,iBAAiB;AACvC,YAAY,SAAS,EAAE;AACvB,gBAAgB;AAChB,oBAAoB,OAAO,EAAE,0BAA0B;AACvD,oBAAoB,UAAU,EAAE,CAAC,QAAQ,KAAK,MAAM;AACpD,wBAAwB,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;AACzF,wBAAwB,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,uBAAuB,CAAC;AAClF;AACA,wBAAwB,IAAI,MAAM,EAAE,SAAS,EAAE;AAC/C,4BAA4B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACxF,gCAAgC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;AACpE,4BAA4B;AAC5B,wBAAwB;AACxB;AACA,wBAAwB,IAAI,MAAM,EAAE,OAAO,EAAE;AAC7C,4BAA4B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACtF,gCAAgC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;AAClE,4BAA4B;AAC5B,wBAAwB;AACxB;AACA,wBAAwB,IAAI,MAAM,EAAE,SAAS,EAAE;AAC/C,4BAA4B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACxF,gCAAgC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;AACpE,4BAA4B;AAC5B,wBAAwB;AACxB,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,EAAE,CAAC,0BAA0B,CAAC;AACtD,oBAAoB,KAAK,EAAE,IAAI;AAC/B,iBAAiB;AACjB,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,sBAAsB,EAAE,CAAC;AAC/E,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;AACzD,aAAa;AACb,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,QAAQ,CAAC,MAAM,EAAE;AAC5B,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,iBAAiB;AACvC,YAAY,SAAS,EAAE;AACvB;AACA;AACA,gBAAgB;AAChB,oBAAoB,OAAO,EAAE,0BAA0B;AACvD,oBAAoB,UAAU,EAAE,CAAC,QAAQ,KAAK,MAAM;AACpD,wBAAwB,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;AACzF,wBAAwB,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,uBAAuB,CAAC;AAClF;AACA,wBAAwB,IAAI,MAAM,EAAE,SAAS,EAAE;AAC/C,4BAA4B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACxF,gCAAgC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;AACpE,4BAA4B;AAC5B,wBAAwB;AACxB;AACA,wBAAwB,IAAI,MAAM,EAAE,OAAO,EAAE;AAC7C,4BAA4B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACtF,gCAAgC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;AAClE,4BAA4B;AAC5B,wBAAwB;AACxB;AACA,wBAAwB,IAAI,MAAM,EAAE,SAAS,EAAE;AAC/C,4BAA4B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACxF,gCAAgC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;AACpE,4BAA4B;AAC5B,wBAAwB;AACxB,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,EAAE,CAAC,0BAA0B,CAAC;AACtD,oBAAoB,KAAK,EAAE,IAAI;AAC/B,iBAAiB;AACjB,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;AACvD,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;AACzD,aAAa;AACb,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA,IAAI,WAAW,CAAC,SAAS,EAAE;AAC3B,QAAQ,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK;AAClC,YAAY,CAAC,EAAE;AACf,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxO,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACrI,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE;AAC9I,YAAY,sBAAsB;AAClC,YAAY;AACZ,gBAAgB,OAAO,EAAE,mBAAmB;AAC5C,gBAAgB,WAAW,EAAE,sBAAsB;AACnD,aAAa;AACb,YAAY,kBAAkB;AAC9B,SAAS,EAAE,CAAC,CAAC;AACb;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,EAAE;AAC/B,oBAAoB,OAAO,EAAE,EAAE;AAC/B,oBAAoB,YAAY,EAAE,EAAE;AACpC,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB,sBAAsB;AAC9C,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,mBAAmB;AACxD,4BAA4B,WAAW,EAAE,sBAAsB;AAC/D,yBAAyB;AACzB,wBAAwB,kBAAkB;AAC1C,qBAAqB;AACrB,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnE,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,0BAA0B;AACrD,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;;ACzHxB;AACA;AACA;;;;"}