@decaf-ts/ui-decorators 0.20.4 → 0.20.7
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.
- package/dist/ui-decorators.cjs +1059 -2
- package/dist/ui-decorators.js +1090 -2
- package/lib/cjs/dashboard/constants.cjs +11 -0
- package/lib/cjs/dashboard/decorators.cjs +61 -0
- package/lib/cjs/dashboard/index.cjs +23 -0
- package/lib/cjs/dashboard/reader.cjs +67 -0
- package/lib/cjs/dashboard/registry.cjs +45 -0
- package/lib/cjs/dashboard/types.cjs +4 -0
- package/lib/cjs/graph/GraphExecutionStateMapper.cjs +97 -0
- package/lib/cjs/graph/GraphResolution.cjs +17 -0
- package/lib/cjs/graph/catalog/GraphConnectionPolicy.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphCredentialReference.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphCredentialRequirement.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphDynamicPortRule.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphIconReference.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphManifestCompiler.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodeCapability.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodeDisplayManifest.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodeManifest.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodeManifestSerialization.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodeMethodManifest.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphNodePolicyManifest.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphParameterBase.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphParameterDefinition.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphParameterOption.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphParameterValidation.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphPortManifest.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphResourceLocatorMode.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphValueSchema.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphValueSchemaDerivation.cjs +2 -2
- package/lib/cjs/graph/catalog/GraphVisibilityExpression.cjs +2 -2
- package/lib/cjs/graph/catalog/index.cjs +2 -2
- package/lib/cjs/graph/constants.cjs +159 -3
- package/lib/cjs/graph/decorators.cjs +2 -2
- package/lib/cjs/graph/document/GraphDecoratedWorkflowCompiler.cjs +2 -2
- package/lib/cjs/graph/document/GraphEdgeInstance.cjs +2 -2
- package/lib/cjs/graph/document/GraphEndpoint.cjs +2 -2
- package/lib/cjs/graph/document/GraphJsonValue.cjs +2 -2
- package/lib/cjs/graph/document/GraphLoopConfiguration.cjs +2 -2
- package/lib/cjs/graph/document/GraphNodeBinding.cjs +2 -2
- package/lib/cjs/graph/document/GraphNodeInstance.cjs +2 -2
- package/lib/cjs/graph/document/GraphWorkflowDocument.cjs +2 -2
- package/lib/cjs/graph/document/GraphWorkflowDocumentBuilder.cjs +2 -2
- package/lib/cjs/graph/document/GraphWorkflowDocumentReader.cjs +2 -2
- package/lib/cjs/graph/document/GraphWorkflowDocumentSerializer.cjs +2 -2
- package/lib/cjs/graph/document/GraphWorkflowUiState.cjs +2 -2
- package/lib/cjs/graph/document/index.cjs +2 -2
- package/lib/cjs/graph/index.cjs +5 -2
- package/lib/cjs/graph/nodes/agents/agent.cjs +110 -0
- package/lib/cjs/graph/nodes/base.cjs +36 -0
- package/lib/cjs/graph/nodes/boundary/input-value.cjs +57 -0
- package/lib/cjs/graph/nodes/category-styles.cjs +38 -0
- package/lib/cjs/graph/nodes/flow-control/break.cjs +63 -0
- package/lib/cjs/graph/nodes/flow-control/error-boundary.cjs +67 -0
- package/lib/cjs/graph/nodes/flow-control/human-approval.cjs +69 -0
- package/lib/cjs/graph/nodes/flow-control/if.cjs +71 -0
- package/lib/cjs/graph/nodes/flow-control/parallel.cjs +61 -0
- package/lib/cjs/graph/nodes/flow-control/switch.cjs +121 -0
- package/lib/cjs/graph/nodes/index.cjs +123 -0
- package/lib/cjs/graph/nodes/loops/foreach.cjs +86 -0
- package/lib/cjs/graph/nodes/loops/until.cjs +74 -0
- package/lib/cjs/graph/nodes/loops/while.cjs +74 -0
- package/lib/cjs/graph/nodes/manifests.cjs +338 -0
- package/lib/cjs/graph/nodes/triggers/chat.cjs +70 -0
- package/lib/cjs/graph/nodes/triggers/event.cjs +58 -0
- package/lib/cjs/graph/nodes/triggers/form.cjs +59 -0
- package/lib/cjs/graph/nodes/triggers/manual.cjs +60 -0
- package/lib/cjs/graph/nodes/triggers/schedule.cjs +60 -0
- package/lib/cjs/graph/nodes/triggers/webhook.cjs +62 -0
- package/lib/cjs/graph/nodes/utility/code.cjs +99 -0
- package/lib/cjs/graph/nodes/utility/delay.cjs +61 -0
- package/lib/cjs/graph/nodes/utility/log.cjs +62 -0
- package/lib/cjs/graph/nodes/utility/map.cjs +61 -0
- package/lib/cjs/graph/nodes/utility/merge.cjs +62 -0
- package/lib/cjs/graph/nodes/utility/return.cjs +61 -0
- package/lib/cjs/graph/nodes/utility/utility-log.cjs +66 -0
- package/lib/cjs/graph/overrides/Metadata.cjs +2 -2
- package/lib/cjs/graph/overrides/Rendering.cjs +2 -2
- package/lib/cjs/graph/overrides/index.cjs +2 -2
- package/lib/cjs/graph/overrides/overrides.cjs +2 -2
- package/lib/cjs/graph/reader.cjs +2 -2
- package/lib/cjs/graph/registry.cjs +2 -2
- package/lib/cjs/graph/snapshot.cjs +2 -2
- package/lib/cjs/graph/types.cjs +2 -2
- package/lib/cjs/index.cjs +6 -5
- package/lib/cjs/model/Renderable.cjs +2 -2
- package/lib/cjs/model/decorators.cjs +2 -2
- package/lib/cjs/model/index.cjs +2 -2
- package/lib/cjs/model/model.cjs +2 -2
- package/lib/cjs/model/overrides.cjs +2 -2
- package/lib/cjs/overrides/ModelBuilderExtensions.cjs +2 -2
- package/lib/cjs/overrides/index.cjs +2 -2
- package/lib/cjs/ui/DecafComponent.cjs +2 -2
- package/lib/cjs/ui/DecafEventHandler.cjs +2 -2
- package/lib/cjs/ui/DecafTranslateService.cjs +2 -2
- package/lib/cjs/ui/Rendering.cjs +2 -2
- package/lib/cjs/ui/UIValidator.cjs +2 -2
- package/lib/cjs/ui/constants.cjs +2 -2
- package/lib/cjs/ui/decorators.cjs +2 -2
- package/lib/cjs/ui/errors.cjs +2 -2
- package/lib/cjs/ui/index.cjs +2 -2
- package/lib/cjs/ui/interfaces/IDecafModal.cjs +2 -2
- package/lib/cjs/ui/interfaces/IDecafRouter.cjs +2 -2
- package/lib/cjs/ui/interfaces/IDecafSpinner.cjs +2 -2
- package/lib/cjs/ui/interfaces/IDecafToast.cjs +2 -2
- package/lib/cjs/ui/interfaces/index.cjs +2 -2
- package/lib/cjs/ui/overrides.cjs +2 -2
- package/lib/cjs/ui/types.cjs +2 -2
- package/lib/cjs/ui/utils.cjs +2 -2
- package/lib/cjs/ui/validator.cjs +2 -2
- package/lib/cjs/user-requests/UserRequestHandler.cjs +2 -2
- package/lib/cjs/user-requests/constants.cjs +2 -2
- package/lib/cjs/user-requests/decorators.cjs +2 -2
- package/lib/cjs/user-requests/errors.cjs +2 -2
- package/lib/cjs/user-requests/index.cjs +2 -2
- package/lib/cjs/user-requests/types.cjs +2 -2
- package/lib/esm/dashboard/constants.js +24 -0
- package/lib/esm/dashboard/decorators.js +57 -0
- package/lib/esm/dashboard/index.js +6 -0
- package/lib/esm/dashboard/reader.js +62 -0
- package/lib/esm/dashboard/registry.js +39 -0
- package/lib/esm/dashboard/types.js +9 -0
- package/lib/esm/graph/GraphExecutionStateMapper.js +91 -0
- package/lib/esm/graph/GraphResolution.js +13 -0
- package/lib/esm/graph/catalog/GraphConnectionPolicy.js +1 -1
- package/lib/esm/graph/catalog/GraphCredentialReference.js +1 -1
- package/lib/esm/graph/catalog/GraphCredentialRequirement.js +1 -1
- package/lib/esm/graph/catalog/GraphDynamicPortRule.js +1 -1
- package/lib/esm/graph/catalog/GraphIconReference.js +1 -1
- package/lib/esm/graph/catalog/GraphManifestCompiler.js +1 -1
- package/lib/esm/graph/catalog/GraphNodeCapability.js +1 -1
- package/lib/esm/graph/catalog/GraphNodeDisplayManifest.js +1 -1
- package/lib/esm/graph/catalog/GraphNodeManifest.js +1 -1
- package/lib/esm/graph/catalog/GraphNodeManifestSerialization.js +1 -1
- package/lib/esm/graph/catalog/GraphNodeMethodManifest.js +1 -1
- package/lib/esm/graph/catalog/GraphNodePolicyManifest.js +1 -1
- package/lib/esm/graph/catalog/GraphParameterBase.js +1 -1
- package/lib/esm/graph/catalog/GraphParameterDefinition.js +1 -1
- package/lib/esm/graph/catalog/GraphParameterOption.js +1 -1
- package/lib/esm/graph/catalog/GraphParameterValidation.js +1 -1
- package/lib/esm/graph/catalog/GraphPortManifest.js +1 -1
- package/lib/esm/graph/catalog/GraphResourceLocatorMode.js +1 -1
- package/lib/esm/graph/catalog/GraphValueSchema.js +1 -1
- package/lib/esm/graph/catalog/GraphValueSchemaDerivation.js +1 -1
- package/lib/esm/graph/catalog/GraphVisibilityExpression.js +1 -1
- package/lib/esm/graph/catalog/index.js +1 -1
- package/lib/esm/graph/constants.js +180 -1
- package/lib/esm/graph/decorators.js +1 -1
- package/lib/esm/graph/document/GraphDecoratedWorkflowCompiler.js +1 -1
- package/lib/esm/graph/document/GraphEdgeInstance.js +1 -1
- package/lib/esm/graph/document/GraphEndpoint.js +1 -1
- package/lib/esm/graph/document/GraphJsonValue.js +1 -1
- package/lib/esm/graph/document/GraphLoopConfiguration.js +1 -1
- package/lib/esm/graph/document/GraphNodeBinding.js +1 -1
- package/lib/esm/graph/document/GraphNodeInstance.js +1 -1
- package/lib/esm/graph/document/GraphWorkflowDocument.js +1 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentBuilder.js +1 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentReader.js +1 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentSerializer.js +1 -1
- package/lib/esm/graph/document/GraphWorkflowUiState.js +1 -1
- package/lib/esm/graph/document/index.js +1 -1
- package/lib/esm/graph/index.js +4 -1
- package/lib/esm/graph/nodes/agents/agent.js +101 -0
- package/lib/esm/graph/nodes/base.js +31 -0
- package/lib/esm/graph/nodes/boundary/input-value.js +48 -0
- package/lib/esm/graph/nodes/category-styles.js +34 -0
- package/lib/esm/graph/nodes/flow-control/break.js +54 -0
- package/lib/esm/graph/nodes/flow-control/error-boundary.js +58 -0
- package/lib/esm/graph/nodes/flow-control/human-approval.js +60 -0
- package/lib/esm/graph/nodes/flow-control/if.js +62 -0
- package/lib/esm/graph/nodes/flow-control/parallel.js +52 -0
- package/lib/esm/graph/nodes/flow-control/switch.js +112 -0
- package/lib/esm/graph/nodes/index.js +105 -0
- package/lib/esm/graph/nodes/loops/foreach.js +77 -0
- package/lib/esm/graph/nodes/loops/until.js +65 -0
- package/lib/esm/graph/nodes/loops/while.js +65 -0
- package/lib/esm/graph/nodes/manifests.js +334 -0
- package/lib/esm/graph/nodes/triggers/chat.js +61 -0
- package/lib/esm/graph/nodes/triggers/event.js +49 -0
- package/lib/esm/graph/nodes/triggers/form.js +50 -0
- package/lib/esm/graph/nodes/triggers/manual.js +51 -0
- package/lib/esm/graph/nodes/triggers/schedule.js +51 -0
- package/lib/esm/graph/nodes/triggers/webhook.js +53 -0
- package/lib/esm/graph/nodes/utility/code.js +90 -0
- package/lib/esm/graph/nodes/utility/delay.js +52 -0
- package/lib/esm/graph/nodes/utility/log.js +53 -0
- package/lib/esm/graph/nodes/utility/map.js +52 -0
- package/lib/esm/graph/nodes/utility/merge.js +53 -0
- package/lib/esm/graph/nodes/utility/return.js +52 -0
- package/lib/esm/graph/nodes/utility/utility-log.js +57 -0
- package/lib/esm/graph/overrides/Metadata.js +1 -1
- package/lib/esm/graph/overrides/Rendering.js +1 -1
- package/lib/esm/graph/overrides/index.js +1 -1
- package/lib/esm/graph/overrides/overrides.js +1 -1
- package/lib/esm/graph/reader.js +1 -1
- package/lib/esm/graph/registry.js +1 -1
- package/lib/esm/graph/snapshot.js +1 -1
- package/lib/esm/graph/types.js +1 -1
- package/lib/esm/index.js +5 -4
- package/lib/esm/model/Renderable.js +1 -1
- package/lib/esm/model/decorators.js +1 -1
- package/lib/esm/model/index.js +1 -1
- package/lib/esm/model/model.js +1 -1
- package/lib/esm/model/overrides.js +1 -1
- package/lib/esm/overrides/ModelBuilderExtensions.js +1 -1
- package/lib/esm/overrides/index.js +1 -1
- package/lib/esm/ui/DecafComponent.js +1 -1
- package/lib/esm/ui/DecafEventHandler.js +1 -1
- package/lib/esm/ui/DecafTranslateService.js +1 -1
- package/lib/esm/ui/Rendering.js +1 -1
- package/lib/esm/ui/UIValidator.js +1 -1
- package/lib/esm/ui/constants.js +1 -1
- package/lib/esm/ui/decorators.js +1 -1
- package/lib/esm/ui/errors.js +1 -1
- package/lib/esm/ui/index.js +1 -1
- package/lib/esm/ui/interfaces/IDecafModal.js +1 -1
- package/lib/esm/ui/interfaces/IDecafRouter.js +1 -1
- package/lib/esm/ui/interfaces/IDecafSpinner.js +1 -1
- package/lib/esm/ui/interfaces/IDecafToast.js +1 -1
- package/lib/esm/ui/interfaces/index.js +1 -1
- package/lib/esm/ui/overrides.js +1 -1
- package/lib/esm/ui/types.js +1 -1
- package/lib/esm/ui/utils.js +1 -1
- package/lib/esm/ui/validator.js +1 -1
- package/lib/esm/user-requests/UserRequestHandler.js +1 -1
- package/lib/esm/user-requests/constants.js +1 -1
- package/lib/esm/user-requests/decorators.js +1 -1
- package/lib/esm/user-requests/errors.js +1 -1
- package/lib/esm/user-requests/index.js +1 -1
- package/lib/esm/user-requests/types.js +1 -1
- package/lib/types/dashboard/constants.d.cts +22 -0
- package/lib/types/dashboard/constants.d.mts +22 -0
- package/lib/types/dashboard/decorators.d.cts +34 -0
- package/lib/types/dashboard/decorators.d.mts +34 -0
- package/lib/types/dashboard/index.d.cts +5 -0
- package/lib/types/dashboard/index.d.mts +5 -0
- package/lib/types/dashboard/reader.d.cts +30 -0
- package/lib/types/dashboard/reader.d.mts +30 -0
- package/lib/types/dashboard/registry.d.cts +29 -0
- package/lib/types/dashboard/registry.d.mts +29 -0
- package/lib/types/dashboard/types.d.cts +67 -0
- package/lib/types/dashboard/types.d.mts +67 -0
- package/lib/types/graph/GraphExecutionStateMapper.d.cts +66 -0
- package/lib/types/graph/GraphExecutionStateMapper.d.mts +66 -0
- package/lib/types/graph/GraphResolution.d.cts +53 -0
- package/lib/types/graph/GraphResolution.d.mts +53 -0
- package/lib/types/graph/constants.d.cts +165 -0
- package/lib/types/graph/constants.d.mts +165 -0
- package/lib/types/graph/index.d.cts +3 -0
- package/lib/types/graph/index.d.mts +3 -0
- package/lib/types/graph/nodes/agents/agent.d.cts +44 -0
- package/lib/types/graph/nodes/agents/agent.d.mts +44 -0
- package/lib/types/graph/nodes/base.d.cts +28 -0
- package/lib/types/graph/nodes/base.d.mts +28 -0
- package/lib/types/graph/nodes/boundary/input-value.d.cts +13 -0
- package/lib/types/graph/nodes/boundary/input-value.d.mts +13 -0
- package/lib/types/graph/nodes/category-styles.d.cts +8 -0
- package/lib/types/graph/nodes/category-styles.d.mts +8 -0
- package/lib/types/graph/nodes/flow-control/break.d.cts +15 -0
- package/lib/types/graph/nodes/flow-control/break.d.mts +15 -0
- package/lib/types/graph/nodes/flow-control/error-boundary.d.cts +12 -0
- package/lib/types/graph/nodes/flow-control/error-boundary.d.mts +12 -0
- package/lib/types/graph/nodes/flow-control/human-approval.d.cts +13 -0
- package/lib/types/graph/nodes/flow-control/human-approval.d.mts +13 -0
- package/lib/types/graph/nodes/flow-control/if.d.cts +16 -0
- package/lib/types/graph/nodes/flow-control/if.d.mts +16 -0
- package/lib/types/graph/nodes/flow-control/parallel.d.cts +11 -0
- package/lib/types/graph/nodes/flow-control/parallel.d.mts +11 -0
- package/lib/types/graph/nodes/flow-control/switch.d.cts +21 -0
- package/lib/types/graph/nodes/flow-control/switch.d.mts +21 -0
- package/lib/types/graph/nodes/index.d.cts +79 -0
- package/lib/types/graph/nodes/index.d.mts +79 -0
- package/lib/types/graph/nodes/loops/foreach.d.cts +19 -0
- package/lib/types/graph/nodes/loops/foreach.d.mts +19 -0
- package/lib/types/graph/nodes/loops/until.d.cts +16 -0
- package/lib/types/graph/nodes/loops/until.d.mts +16 -0
- package/lib/types/graph/nodes/loops/while.d.cts +16 -0
- package/lib/types/graph/nodes/loops/while.d.mts +16 -0
- package/lib/types/graph/nodes/manifests.d.cts +62 -0
- package/lib/types/graph/nodes/manifests.d.mts +62 -0
- package/lib/types/graph/nodes/triggers/chat.d.cts +13 -0
- package/lib/types/graph/nodes/triggers/chat.d.mts +13 -0
- package/lib/types/graph/nodes/triggers/event.d.cts +10 -0
- package/lib/types/graph/nodes/triggers/event.d.mts +10 -0
- package/lib/types/graph/nodes/triggers/form.d.cts +11 -0
- package/lib/types/graph/nodes/triggers/form.d.mts +11 -0
- package/lib/types/graph/nodes/triggers/manual.d.cts +12 -0
- package/lib/types/graph/nodes/triggers/manual.d.mts +12 -0
- package/lib/types/graph/nodes/triggers/schedule.d.cts +11 -0
- package/lib/types/graph/nodes/triggers/schedule.d.mts +11 -0
- package/lib/types/graph/nodes/triggers/webhook.d.cts +11 -0
- package/lib/types/graph/nodes/triggers/webhook.d.mts +11 -0
- package/lib/types/graph/nodes/utility/code.d.cts +31 -0
- package/lib/types/graph/nodes/utility/code.d.mts +31 -0
- package/lib/types/graph/nodes/utility/delay.d.cts +11 -0
- package/lib/types/graph/nodes/utility/delay.d.mts +11 -0
- package/lib/types/graph/nodes/utility/log.d.cts +13 -0
- package/lib/types/graph/nodes/utility/log.d.mts +13 -0
- package/lib/types/graph/nodes/utility/map.d.cts +11 -0
- package/lib/types/graph/nodes/utility/map.d.mts +11 -0
- package/lib/types/graph/nodes/utility/merge.d.cts +12 -0
- package/lib/types/graph/nodes/utility/merge.d.mts +12 -0
- package/lib/types/graph/nodes/utility/return.d.cts +11 -0
- package/lib/types/graph/nodes/utility/return.d.mts +11 -0
- package/lib/types/graph/nodes/utility/utility-log.d.cts +15 -0
- package/lib/types/graph/nodes/utility/utility-log.d.mts +15 -0
- package/lib/types/graph/types.d.cts +286 -0
- package/lib/types/graph/types.d.mts +286 -0
- package/lib/types/index.d.cts +4 -3
- package/lib/types/index.d.mts +4 -3
- package/package.json +1 -1
- package/dist/ui-decorators.cjs.map +0 -1
- package/dist/ui-decorators.js.map +0 -1
- package/lib/cjs/graph/catalog/GraphConnectionPolicy.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphCredentialReference.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphCredentialRequirement.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphDynamicPortRule.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphIconReference.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphManifestCompiler.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodeCapability.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodeDisplayManifest.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodeManifest.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodeManifestSerialization.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodeMethodManifest.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphNodePolicyManifest.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphParameterBase.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphParameterDefinition.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphParameterOption.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphParameterValidation.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphPortManifest.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphResourceLocatorMode.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphValueSchema.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphValueSchemaDerivation.cjs.map +0 -1
- package/lib/cjs/graph/catalog/GraphVisibilityExpression.cjs.map +0 -1
- package/lib/cjs/graph/catalog/index.cjs.map +0 -1
- package/lib/cjs/graph/constants.cjs.map +0 -1
- package/lib/cjs/graph/decorators.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphDecoratedWorkflowCompiler.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphEdgeInstance.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphEndpoint.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphJsonValue.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphLoopConfiguration.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphNodeBinding.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphNodeInstance.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphWorkflowDocument.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphWorkflowDocumentBuilder.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphWorkflowDocumentReader.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphWorkflowDocumentSerializer.cjs.map +0 -1
- package/lib/cjs/graph/document/GraphWorkflowUiState.cjs.map +0 -1
- package/lib/cjs/graph/document/index.cjs.map +0 -1
- package/lib/cjs/graph/index.cjs.map +0 -1
- package/lib/cjs/graph/overrides/Metadata.cjs.map +0 -1
- package/lib/cjs/graph/overrides/Rendering.cjs.map +0 -1
- package/lib/cjs/graph/overrides/index.cjs.map +0 -1
- package/lib/cjs/graph/overrides/overrides.cjs.map +0 -1
- package/lib/cjs/graph/reader.cjs.map +0 -1
- package/lib/cjs/graph/registry.cjs.map +0 -1
- package/lib/cjs/graph/snapshot.cjs.map +0 -1
- package/lib/cjs/graph/types.cjs.map +0 -1
- package/lib/cjs/index.cjs.map +0 -1
- package/lib/cjs/model/Renderable.cjs.map +0 -1
- package/lib/cjs/model/decorators.cjs.map +0 -1
- package/lib/cjs/model/index.cjs.map +0 -1
- package/lib/cjs/model/model.cjs.map +0 -1
- package/lib/cjs/model/overrides.cjs.map +0 -1
- package/lib/cjs/overrides/ModelBuilderExtensions.cjs.map +0 -1
- package/lib/cjs/overrides/index.cjs.map +0 -1
- package/lib/cjs/ui/DecafComponent.cjs.map +0 -1
- package/lib/cjs/ui/DecafEventHandler.cjs.map +0 -1
- package/lib/cjs/ui/DecafTranslateService.cjs.map +0 -1
- package/lib/cjs/ui/Rendering.cjs.map +0 -1
- package/lib/cjs/ui/UIValidator.cjs.map +0 -1
- package/lib/cjs/ui/constants.cjs.map +0 -1
- package/lib/cjs/ui/decorators.cjs.map +0 -1
- package/lib/cjs/ui/errors.cjs.map +0 -1
- package/lib/cjs/ui/index.cjs.map +0 -1
- package/lib/cjs/ui/interfaces/IDecafModal.cjs.map +0 -1
- package/lib/cjs/ui/interfaces/IDecafRouter.cjs.map +0 -1
- package/lib/cjs/ui/interfaces/IDecafSpinner.cjs.map +0 -1
- package/lib/cjs/ui/interfaces/IDecafToast.cjs.map +0 -1
- package/lib/cjs/ui/interfaces/index.cjs.map +0 -1
- package/lib/cjs/ui/overrides.cjs.map +0 -1
- package/lib/cjs/ui/types.cjs.map +0 -1
- package/lib/cjs/ui/utils.cjs.map +0 -1
- package/lib/cjs/ui/validator.cjs.map +0 -1
- package/lib/cjs/user-requests/UserRequestHandler.cjs.map +0 -1
- package/lib/cjs/user-requests/constants.cjs.map +0 -1
- package/lib/cjs/user-requests/decorators.cjs.map +0 -1
- package/lib/cjs/user-requests/errors.cjs.map +0 -1
- package/lib/cjs/user-requests/index.cjs.map +0 -1
- package/lib/cjs/user-requests/types.cjs.map +0 -1
- package/lib/esm/graph/catalog/GraphConnectionPolicy.js.map +0 -1
- package/lib/esm/graph/catalog/GraphCredentialReference.js.map +0 -1
- package/lib/esm/graph/catalog/GraphCredentialRequirement.js.map +0 -1
- package/lib/esm/graph/catalog/GraphDynamicPortRule.js.map +0 -1
- package/lib/esm/graph/catalog/GraphIconReference.js.map +0 -1
- package/lib/esm/graph/catalog/GraphManifestCompiler.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodeCapability.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodeDisplayManifest.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodeManifest.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodeManifestSerialization.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodeMethodManifest.js.map +0 -1
- package/lib/esm/graph/catalog/GraphNodePolicyManifest.js.map +0 -1
- package/lib/esm/graph/catalog/GraphParameterBase.js.map +0 -1
- package/lib/esm/graph/catalog/GraphParameterDefinition.js.map +0 -1
- package/lib/esm/graph/catalog/GraphParameterOption.js.map +0 -1
- package/lib/esm/graph/catalog/GraphParameterValidation.js.map +0 -1
- package/lib/esm/graph/catalog/GraphPortManifest.js.map +0 -1
- package/lib/esm/graph/catalog/GraphResourceLocatorMode.js.map +0 -1
- package/lib/esm/graph/catalog/GraphValueSchema.js.map +0 -1
- package/lib/esm/graph/catalog/GraphValueSchemaDerivation.js.map +0 -1
- package/lib/esm/graph/catalog/GraphVisibilityExpression.js.map +0 -1
- package/lib/esm/graph/catalog/index.js.map +0 -1
- package/lib/esm/graph/constants.js.map +0 -1
- package/lib/esm/graph/decorators.js.map +0 -1
- package/lib/esm/graph/document/GraphDecoratedWorkflowCompiler.js.map +0 -1
- package/lib/esm/graph/document/GraphEdgeInstance.js.map +0 -1
- package/lib/esm/graph/document/GraphEndpoint.js.map +0 -1
- package/lib/esm/graph/document/GraphJsonValue.js.map +0 -1
- package/lib/esm/graph/document/GraphLoopConfiguration.js.map +0 -1
- package/lib/esm/graph/document/GraphNodeBinding.js.map +0 -1
- package/lib/esm/graph/document/GraphNodeInstance.js.map +0 -1
- package/lib/esm/graph/document/GraphWorkflowDocument.js.map +0 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentBuilder.js.map +0 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentReader.js.map +0 -1
- package/lib/esm/graph/document/GraphWorkflowDocumentSerializer.js.map +0 -1
- package/lib/esm/graph/document/GraphWorkflowUiState.js.map +0 -1
- package/lib/esm/graph/document/index.js.map +0 -1
- package/lib/esm/graph/index.js.map +0 -1
- package/lib/esm/graph/overrides/Metadata.js.map +0 -1
- package/lib/esm/graph/overrides/Rendering.js.map +0 -1
- package/lib/esm/graph/overrides/index.js.map +0 -1
- package/lib/esm/graph/overrides/overrides.js.map +0 -1
- package/lib/esm/graph/reader.js.map +0 -1
- package/lib/esm/graph/registry.js.map +0 -1
- package/lib/esm/graph/snapshot.js.map +0 -1
- package/lib/esm/graph/types.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/model/Renderable.js.map +0 -1
- package/lib/esm/model/decorators.js.map +0 -1
- package/lib/esm/model/index.js.map +0 -1
- package/lib/esm/model/model.js.map +0 -1
- package/lib/esm/model/overrides.js.map +0 -1
- package/lib/esm/overrides/ModelBuilderExtensions.js.map +0 -1
- package/lib/esm/overrides/index.js.map +0 -1
- package/lib/esm/ui/DecafComponent.js.map +0 -1
- package/lib/esm/ui/DecafEventHandler.js.map +0 -1
- package/lib/esm/ui/DecafTranslateService.js.map +0 -1
- package/lib/esm/ui/Rendering.js.map +0 -1
- package/lib/esm/ui/UIValidator.js.map +0 -1
- package/lib/esm/ui/constants.js.map +0 -1
- package/lib/esm/ui/decorators.js.map +0 -1
- package/lib/esm/ui/errors.js.map +0 -1
- package/lib/esm/ui/index.js.map +0 -1
- package/lib/esm/ui/interfaces/IDecafModal.js.map +0 -1
- package/lib/esm/ui/interfaces/IDecafRouter.js.map +0 -1
- package/lib/esm/ui/interfaces/IDecafSpinner.js.map +0 -1
- package/lib/esm/ui/interfaces/IDecafToast.js.map +0 -1
- package/lib/esm/ui/interfaces/index.js.map +0 -1
- package/lib/esm/ui/overrides.js.map +0 -1
- package/lib/esm/ui/types.js.map +0 -1
- package/lib/esm/ui/utils.js.map +0 -1
- package/lib/esm/ui/validator.js.map +0 -1
- package/lib/esm/user-requests/UserRequestHandler.js.map +0 -1
- package/lib/esm/user-requests/constants.js.map +0 -1
- package/lib/esm/user-requests/decorators.js.map +0 -1
- package/lib/esm/user-requests/errors.js.map +0 -1
- package/lib/esm/user-requests/index.js.map +0 -1
- package/lib/esm/user-requests/types.js.map +0 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @module ui-decorators/graph/nodes/loops/foreach
|
|
12
|
+
* @summary Foreach loop node declaration.
|
|
13
|
+
* @description Shared declaration for the `core.loop.foreach` system node
|
|
14
|
+
* kind (decorator id `graph-foreach-loop-node`), ported from the for-angular
|
|
15
|
+
* demo app so the loop kinds become shared canvas nodes. Its executor is
|
|
16
|
+
* built into the integrations engine (`ForeachGraphNodeExecutor`). The
|
|
17
|
+
* loop-body workflow is demo/app-side content and is not part of the shared
|
|
18
|
+
* declaration — the shared class carries the port/metadata shape only.
|
|
19
|
+
*/
|
|
20
|
+
import { Model, model, required } from "@decaf-ts/decorator-validation";
|
|
21
|
+
import { uielement } from "./../../../ui/decorators.js";
|
|
22
|
+
import { connection, input, node, output } from "./../../decorators.js";
|
|
23
|
+
// Ensure category styles are registered (idempotent).
|
|
24
|
+
import "./../category-styles.js";
|
|
25
|
+
let GraphForeachLoopNode = class GraphForeachLoopNode extends Model {
|
|
26
|
+
};
|
|
27
|
+
__decorate([
|
|
28
|
+
required(),
|
|
29
|
+
uielement('textarea', { label: 'Items', placeholder: 'Array to iterate over' }),
|
|
30
|
+
input({ handle: 'items' }),
|
|
31
|
+
__metadata("design:type", Array)
|
|
32
|
+
], GraphForeachLoopNode.prototype, "items", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
required(),
|
|
35
|
+
uielement('input', { label: 'Slice size', placeholder: 'Items per iteration (default 1)' }),
|
|
36
|
+
input({ handle: 'slice' }),
|
|
37
|
+
__metadata("design:type", Number)
|
|
38
|
+
], GraphForeachLoopNode.prototype, "slice", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
required(),
|
|
41
|
+
output({ handle: 'item' }),
|
|
42
|
+
__metadata("design:type", Object)
|
|
43
|
+
], GraphForeachLoopNode.prototype, "item", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
required(),
|
|
46
|
+
connection({ handle: 'loop', connectionRules: { allowSelf: true, maxConnections: 1 } }),
|
|
47
|
+
__metadata("design:type", Object)
|
|
48
|
+
], GraphForeachLoopNode.prototype, "loop", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
required(),
|
|
51
|
+
output({ handle: 'completed' }),
|
|
52
|
+
__metadata("design:type", Array)
|
|
53
|
+
], GraphForeachLoopNode.prototype, "completed", void 0);
|
|
54
|
+
GraphForeachLoopNode = __decorate([
|
|
55
|
+
node('graph-foreach-loop-node', {
|
|
56
|
+
kind: 'core.loop.foreach',
|
|
57
|
+
category: 'Loop',
|
|
58
|
+
color: '#eab308',
|
|
59
|
+
icon: 'ti-repeat',
|
|
60
|
+
width: 120,
|
|
61
|
+
height: 140,
|
|
62
|
+
labels: ['loop', 'iteration', 'foreach'],
|
|
63
|
+
metadata: {
|
|
64
|
+
title: 'Foreach loop',
|
|
65
|
+
description: 'Iterates over an array input and executes the body once per item (or per slice of items).',
|
|
66
|
+
loop: {
|
|
67
|
+
maxIterations: 100,
|
|
68
|
+
itemPort: 'item',
|
|
69
|
+
resultPort: 'result',
|
|
70
|
+
slice: 1,
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
}),
|
|
74
|
+
model()
|
|
75
|
+
], GraphForeachLoopNode);
|
|
76
|
+
export { GraphForeachLoopNode };
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWFjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9ub2Rlcy9sb29wcy9mb3JlYWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7R0FTRztBQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0NBQStCO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsOEJBQXlCO0FBRW5FLHNEQUFzRDtBQUN0RCxpQ0FBNEI7QUFzQnJCLElBQU0sb0JBQW9CLEdBQTFCLE1BQU0sb0JBQXFCLFNBQVEsS0FBSztDQXNCOUMsQ0FBQTtBQWxCQztJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxDQUFDO0lBQy9FLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7bURBQ1Q7QUFLbEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQUUsQ0FBQztJQUMzRixLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7O21EQUNaO0FBSWY7SUFGQyxRQUFRLEVBQUU7SUFDVixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7O2tEQUNaO0FBSWY7SUFGQyxRQUFRLEVBQUU7SUFDVixVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7O2tEQUN6RTtBQUlmO0lBRkMsUUFBUSxFQUFFO0lBQ1YsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDOzt1REFDVjtBQXJCWCxvQkFBb0I7SUFwQmhDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtRQUMvQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxHQUFHO1FBQ1YsTUFBTSxFQUFFLEdBQUc7UUFDWCxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQztRQUN4QyxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsY0FBYztZQUNyQixXQUFXLEVBQUUsMkZBQTJGO1lBQ3hHLElBQUksRUFBRTtnQkFDSixhQUFhLEVBQUUsR0FBRztnQkFDbEIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFVBQVUsRUFBRSxRQUFRO2dCQUNwQixLQUFLLEVBQUUsQ0FBQzthQUNUO1NBQ0Y7S0FDRixDQUFDO0lBQ0QsS0FBSyxFQUFFO0dBQ0ssb0JBQW9CLENBc0JoQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSB1aS1kZWNvcmF0b3JzL2dyYXBoL25vZGVzL2xvb3BzL2ZvcmVhY2hcbiAqIEBzdW1tYXJ5IEZvcmVhY2ggbG9vcCBub2RlIGRlY2xhcmF0aW9uLlxuICogQGRlc2NyaXB0aW9uIFNoYXJlZCBkZWNsYXJhdGlvbiBmb3IgdGhlIGBjb3JlLmxvb3AuZm9yZWFjaGAgc3lzdGVtIG5vZGVcbiAqIGtpbmQgKGRlY29yYXRvciBpZCBgZ3JhcGgtZm9yZWFjaC1sb29wLW5vZGVgKSwgcG9ydGVkIGZyb20gdGhlIGZvci1hbmd1bGFyXG4gKiBkZW1vIGFwcCBzbyB0aGUgbG9vcCBraW5kcyBiZWNvbWUgc2hhcmVkIGNhbnZhcyBub2Rlcy4gSXRzIGV4ZWN1dG9yIGlzXG4gKiBidWlsdCBpbnRvIHRoZSBpbnRlZ3JhdGlvbnMgZW5naW5lIChgRm9yZWFjaEdyYXBoTm9kZUV4ZWN1dG9yYCkuIFRoZVxuICogbG9vcC1ib2R5IHdvcmtmbG93IGlzIGRlbW8vYXBwLXNpZGUgY29udGVudCBhbmQgaXMgbm90IHBhcnQgb2YgdGhlIHNoYXJlZFxuICogZGVjbGFyYXRpb24g4oCUIHRoZSBzaGFyZWQgY2xhc3MgY2FycmllcyB0aGUgcG9ydC9tZXRhZGF0YSBzaGFwZSBvbmx5LlxuICovXG5pbXBvcnQgeyBNb2RlbCwgbW9kZWwsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgdWllbGVtZW50IH0gZnJvbSBcIi4uLy4uLy4uL3VpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IGNvbm5lY3Rpb24sIGlucHV0LCBub2RlLCBvdXRwdXQgfSBmcm9tIFwiLi4vLi4vZGVjb3JhdG9yc1wiO1xuXG4vLyBFbnN1cmUgY2F0ZWdvcnkgc3R5bGVzIGFyZSByZWdpc3RlcmVkIChpZGVtcG90ZW50KS5cbmltcG9ydCBcIi4uL2NhdGVnb3J5LXN0eWxlc1wiO1xuXG5Abm9kZSgnZ3JhcGgtZm9yZWFjaC1sb29wLW5vZGUnLCB7XG4gIGtpbmQ6ICdjb3JlLmxvb3AuZm9yZWFjaCcsXG4gIGNhdGVnb3J5OiAnTG9vcCcsXG4gIGNvbG9yOiAnI2VhYjMwOCcsXG4gIGljb246ICd0aS1yZXBlYXQnLFxuICB3aWR0aDogMTIwLFxuICBoZWlnaHQ6IDE0MCxcbiAgbGFiZWxzOiBbJ2xvb3AnLCAnaXRlcmF0aW9uJywgJ2ZvcmVhY2gnXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogJ0ZvcmVhY2ggbG9vcCcsXG4gICAgZGVzY3JpcHRpb246ICdJdGVyYXRlcyBvdmVyIGFuIGFycmF5IGlucHV0IGFuZCBleGVjdXRlcyB0aGUgYm9keSBvbmNlIHBlciBpdGVtIChvciBwZXIgc2xpY2Ugb2YgaXRlbXMpLicsXG4gICAgbG9vcDoge1xuICAgICAgbWF4SXRlcmF0aW9uczogMTAwLFxuICAgICAgaXRlbVBvcnQ6ICdpdGVtJyxcbiAgICAgIHJlc3VsdFBvcnQ6ICdyZXN1bHQnLFxuICAgICAgc2xpY2U6IDEsXG4gICAgfSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIEdyYXBoRm9yZWFjaExvb3BOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KCd0ZXh0YXJlYScsIHsgbGFiZWw6ICdJdGVtcycsIHBsYWNlaG9sZGVyOiAnQXJyYXkgdG8gaXRlcmF0ZSBvdmVyJyB9KVxuICBAaW5wdXQoeyBoYW5kbGU6ICdpdGVtcycgfSlcbiAgaXRlbXMhOiB1bmtub3duW107XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudCgnaW5wdXQnLCB7IGxhYmVsOiAnU2xpY2Ugc2l6ZScsIHBsYWNlaG9sZGVyOiAnSXRlbXMgcGVyIGl0ZXJhdGlvbiAoZGVmYXVsdCAxKScgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiAnc2xpY2UnIH0pXG4gIHNsaWNlITogbnVtYmVyO1xuXG4gIEByZXF1aXJlZCgpXG4gIEBvdXRwdXQoeyBoYW5kbGU6ICdpdGVtJyB9KVxuICBpdGVtITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAY29ubmVjdGlvbih7IGhhbmRsZTogJ2xvb3AnLCBjb25uZWN0aW9uUnVsZXM6IHsgYWxsb3dTZWxmOiB0cnVlLCBtYXhDb25uZWN0aW9uczogMSB9IH0pXG4gIGxvb3AhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEBvdXRwdXQoeyBoYW5kbGU6ICdjb21wbGV0ZWQnIH0pXG4gIGNvbXBsZXRlZCE6IHVua25vd25bXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @module ui-decorators/graph/nodes/loops/until
|
|
12
|
+
* @summary Until loop node declaration.
|
|
13
|
+
* @description Shared declaration for the `core.loop.until` system node kind
|
|
14
|
+
* (decorator id `graph-until-loop-node`), ported from the for-angular demo
|
|
15
|
+
* app so the loop kinds become shared canvas nodes. Its executor is built
|
|
16
|
+
* into the integrations engine (`UntilGraphNodeExecutor`). The loop-body
|
|
17
|
+
* workflow is demo/app-side content and is not part of the shared
|
|
18
|
+
* declaration — the shared class carries the port/metadata shape only.
|
|
19
|
+
*/
|
|
20
|
+
import { Model, model, required } from "@decaf-ts/decorator-validation";
|
|
21
|
+
import { uielement } from "./../../../ui/decorators.js";
|
|
22
|
+
import { input, node, output } from "./../../decorators.js";
|
|
23
|
+
// Ensure category styles are registered (idempotent).
|
|
24
|
+
import "./../category-styles.js";
|
|
25
|
+
let GraphUntilLoopNode = class GraphUntilLoopNode extends Model {
|
|
26
|
+
};
|
|
27
|
+
__decorate([
|
|
28
|
+
required(),
|
|
29
|
+
uielement('input', { label: 'State', placeholder: 'Initial state' }),
|
|
30
|
+
input({ handle: 'state' }),
|
|
31
|
+
__metadata("design:type", Object)
|
|
32
|
+
], GraphUntilLoopNode.prototype, "state", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
required(),
|
|
35
|
+
uielement('input', { label: 'Final state', placeholder: 'Final state after loop' }),
|
|
36
|
+
output({ handle: 'state' }),
|
|
37
|
+
__metadata("design:type", Object)
|
|
38
|
+
], GraphUntilLoopNode.prototype, "stateOut", void 0);
|
|
39
|
+
GraphUntilLoopNode = __decorate([
|
|
40
|
+
node('graph-until-loop-node', {
|
|
41
|
+
kind: 'core.loop.until',
|
|
42
|
+
category: 'Loop',
|
|
43
|
+
color: '#db2777',
|
|
44
|
+
icon: 'ti-player-stop',
|
|
45
|
+
width: 96,
|
|
46
|
+
height: 96,
|
|
47
|
+
labels: ['loop', 'conditional', 'until'],
|
|
48
|
+
metadata: {
|
|
49
|
+
title: 'Until loop',
|
|
50
|
+
description: 'Repeats the body until the condition is true (post-condition, runs at least once).',
|
|
51
|
+
loop: {
|
|
52
|
+
maxIterations: 50,
|
|
53
|
+
statePort: 'state',
|
|
54
|
+
condition: {
|
|
55
|
+
type: 'greaterThanOrEqual',
|
|
56
|
+
left: 'iteration',
|
|
57
|
+
right: 2,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
}),
|
|
62
|
+
model()
|
|
63
|
+
], GraphUntilLoopNode);
|
|
64
|
+
export { GraphUntilLoopNode };
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbm9kZXMvbG9vcHMvdW50aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQ0FBK0I7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLDhCQUF5QjtBQUV2RCxzREFBc0Q7QUFDdEQsaUNBQTRCO0FBeUJyQixJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFtQixTQUFRLEtBQUs7Q0FVNUMsQ0FBQTtBQU5DO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQ3BFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7aURBQ1g7QUFLaEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztJQUNuRixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7O29EQUNUO0FBVFIsa0JBQWtCO0lBdkI5QixJQUFJLENBQUMsdUJBQXVCLEVBQUU7UUFDN0IsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixRQUFRLEVBQUUsTUFBTTtRQUNoQixLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUN4QyxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsWUFBWTtZQUNuQixXQUFXLEVBQUUsb0ZBQW9GO1lBQ2pHLElBQUksRUFBRTtnQkFDSixhQUFhLEVBQUUsRUFBRTtnQkFDakIsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsb0JBQTZCO29CQUNuQyxJQUFJLEVBQUUsV0FBVztvQkFDakIsS0FBSyxFQUFFLENBQUM7aUJBQ1Q7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUNELEtBQUssRUFBRTtHQUNLLGtCQUFrQixDQVU5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSB1aS1kZWNvcmF0b3JzL2dyYXBoL25vZGVzL2xvb3BzL3VudGlsXG4gKiBAc3VtbWFyeSBVbnRpbCBsb29wIG5vZGUgZGVjbGFyYXRpb24uXG4gKiBAZGVzY3JpcHRpb24gU2hhcmVkIGRlY2xhcmF0aW9uIGZvciB0aGUgYGNvcmUubG9vcC51bnRpbGAgc3lzdGVtIG5vZGUga2luZFxuICogKGRlY29yYXRvciBpZCBgZ3JhcGgtdW50aWwtbG9vcC1ub2RlYCksIHBvcnRlZCBmcm9tIHRoZSBmb3ItYW5ndWxhciBkZW1vXG4gKiBhcHAgc28gdGhlIGxvb3Aga2luZHMgYmVjb21lIHNoYXJlZCBjYW52YXMgbm9kZXMuIEl0cyBleGVjdXRvciBpcyBidWlsdFxuICogaW50byB0aGUgaW50ZWdyYXRpb25zIGVuZ2luZSAoYFVudGlsR3JhcGhOb2RlRXhlY3V0b3JgKS4gVGhlIGxvb3AtYm9keVxuICogd29ya2Zsb3cgaXMgZGVtby9hcHAtc2lkZSBjb250ZW50IGFuZCBpcyBub3QgcGFydCBvZiB0aGUgc2hhcmVkXG4gKiBkZWNsYXJhdGlvbiDigJQgdGhlIHNoYXJlZCBjbGFzcyBjYXJyaWVzIHRoZSBwb3J0L21ldGFkYXRhIHNoYXBlIG9ubHkuXG4gKi9cbmltcG9ydCB7IE1vZGVsLCBtb2RlbCwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB1aWVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vdWkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgaW5wdXQsIG5vZGUsIG91dHB1dCB9IGZyb20gXCIuLi8uLi9kZWNvcmF0b3JzXCI7XG5cbi8vIEVuc3VyZSBjYXRlZ29yeSBzdHlsZXMgYXJlIHJlZ2lzdGVyZWQgKGlkZW1wb3RlbnQpLlxuaW1wb3J0IFwiLi4vY2F0ZWdvcnktc3R5bGVzXCI7XG5cbkBub2RlKCdncmFwaC11bnRpbC1sb29wLW5vZGUnLCB7XG4gIGtpbmQ6ICdjb3JlLmxvb3AudW50aWwnLFxuICBjYXRlZ29yeTogJ0xvb3AnLFxuICBjb2xvcjogJyNkYjI3NzcnLFxuICBpY29uOiAndGktcGxheWVyLXN0b3AnLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogWydsb29wJywgJ2NvbmRpdGlvbmFsJywgJ3VudGlsJ10sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6ICdVbnRpbCBsb29wJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlcGVhdHMgdGhlIGJvZHkgdW50aWwgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIChwb3N0LWNvbmRpdGlvbiwgcnVucyBhdCBsZWFzdCBvbmNlKS4nLFxuICAgIGxvb3A6IHtcbiAgICAgIG1heEl0ZXJhdGlvbnM6IDUwLFxuICAgICAgc3RhdGVQb3J0OiAnc3RhdGUnLFxuICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgIHR5cGU6ICdncmVhdGVyVGhhbk9yRXF1YWwnIGFzIG5ldmVyLFxuICAgICAgICBsZWZ0OiAnaXRlcmF0aW9uJyxcbiAgICAgICAgcmlnaHQ6IDIsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBHcmFwaFVudGlsTG9vcE5vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoJ2lucHV0JywgeyBsYWJlbDogJ1N0YXRlJywgcGxhY2Vob2xkZXI6ICdJbml0aWFsIHN0YXRlJyB9KVxuICBAaW5wdXQoeyBoYW5kbGU6ICdzdGF0ZScgfSlcbiAgc3RhdGUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoJ2lucHV0JywgeyBsYWJlbDogJ0ZpbmFsIHN0YXRlJywgcGxhY2Vob2xkZXI6ICdGaW5hbCBzdGF0ZSBhZnRlciBsb29wJyB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiAnc3RhdGUnIH0pXG4gIHN0YXRlT3V0ITogdW5rbm93bjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @module ui-decorators/graph/nodes/loops/while
|
|
12
|
+
* @summary While loop node declaration.
|
|
13
|
+
* @description Shared declaration for the `core.loop.while` system node kind
|
|
14
|
+
* (decorator id `graph-while-loop-node`), ported from the for-angular demo
|
|
15
|
+
* app so the loop kinds become shared canvas nodes. Its executor is built
|
|
16
|
+
* into the integrations engine (`WhileGraphNodeExecutor`). The loop-body
|
|
17
|
+
* workflow is demo/app-side content and is not part of the shared
|
|
18
|
+
* declaration — the shared class carries the port/metadata shape only.
|
|
19
|
+
*/
|
|
20
|
+
import { Model, model, required } from "@decaf-ts/decorator-validation";
|
|
21
|
+
import { uielement } from "./../../../ui/decorators.js";
|
|
22
|
+
import { input, node, output } from "./../../decorators.js";
|
|
23
|
+
// Ensure category styles are registered (idempotent).
|
|
24
|
+
import "./../category-styles.js";
|
|
25
|
+
let GraphWhileLoopNode = class GraphWhileLoopNode extends Model {
|
|
26
|
+
};
|
|
27
|
+
__decorate([
|
|
28
|
+
required(),
|
|
29
|
+
uielement('input', { label: 'State', placeholder: 'Initial state' }),
|
|
30
|
+
input({ handle: 'state' }),
|
|
31
|
+
__metadata("design:type", Object)
|
|
32
|
+
], GraphWhileLoopNode.prototype, "state", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
required(),
|
|
35
|
+
uielement('input', { label: 'Final state', placeholder: 'Final state after loop' }),
|
|
36
|
+
output({ handle: 'state' }),
|
|
37
|
+
__metadata("design:type", Object)
|
|
38
|
+
], GraphWhileLoopNode.prototype, "stateOut", void 0);
|
|
39
|
+
GraphWhileLoopNode = __decorate([
|
|
40
|
+
node('graph-while-loop-node', {
|
|
41
|
+
kind: 'core.loop.while',
|
|
42
|
+
category: 'Loop',
|
|
43
|
+
color: '#0891b2',
|
|
44
|
+
icon: 'ti-arrows-loop',
|
|
45
|
+
width: 96,
|
|
46
|
+
height: 96,
|
|
47
|
+
labels: ['loop', 'conditional', 'while'],
|
|
48
|
+
metadata: {
|
|
49
|
+
title: 'While loop',
|
|
50
|
+
description: 'Repeats the body while the condition is true (pre-condition).',
|
|
51
|
+
loop: {
|
|
52
|
+
maxIterations: 50,
|
|
53
|
+
statePort: 'state',
|
|
54
|
+
condition: {
|
|
55
|
+
type: 'lessThan',
|
|
56
|
+
left: 'iteration',
|
|
57
|
+
right: 3,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
}),
|
|
62
|
+
model()
|
|
63
|
+
], GraphWhileLoopNode);
|
|
64
|
+
export { GraphWhileLoopNode };
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbm9kZXMvbG9vcHMvd2hpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQ0FBK0I7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLDhCQUF5QjtBQUV2RCxzREFBc0Q7QUFDdEQsaUNBQTRCO0FBeUJyQixJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFtQixTQUFRLEtBQUs7Q0FVNUMsQ0FBQTtBQU5DO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQ3BFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQzs7aURBQ1g7QUFLaEI7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztJQUNuRixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7O29EQUNUO0FBVFIsa0JBQWtCO0lBdkI5QixJQUFJLENBQUMsdUJBQXVCLEVBQUU7UUFDN0IsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixRQUFRLEVBQUUsTUFBTTtRQUNoQixLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUN4QyxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsWUFBWTtZQUNuQixXQUFXLEVBQUUsK0RBQStEO1lBQzVFLElBQUksRUFBRTtnQkFDSixhQUFhLEVBQUUsRUFBRTtnQkFDakIsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsVUFBbUI7b0JBQ3pCLElBQUksRUFBRSxXQUFXO29CQUNqQixLQUFLLEVBQUUsQ0FBQztpQkFDVDthQUNGO1NBQ0Y7S0FDRixDQUFDO0lBQ0QsS0FBSyxFQUFFO0dBQ0ssa0JBQWtCLENBVTlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnMvZ3JhcGgvbm9kZXMvbG9vcHMvd2hpbGVcbiAqIEBzdW1tYXJ5IFdoaWxlIGxvb3Agbm9kZSBkZWNsYXJhdGlvbi5cbiAqIEBkZXNjcmlwdGlvbiBTaGFyZWQgZGVjbGFyYXRpb24gZm9yIHRoZSBgY29yZS5sb29wLndoaWxlYCBzeXN0ZW0gbm9kZSBraW5kXG4gKiAoZGVjb3JhdG9yIGlkIGBncmFwaC13aGlsZS1sb29wLW5vZGVgKSwgcG9ydGVkIGZyb20gdGhlIGZvci1hbmd1bGFyIGRlbW9cbiAqIGFwcCBzbyB0aGUgbG9vcCBraW5kcyBiZWNvbWUgc2hhcmVkIGNhbnZhcyBub2Rlcy4gSXRzIGV4ZWN1dG9yIGlzIGJ1aWx0XG4gKiBpbnRvIHRoZSBpbnRlZ3JhdGlvbnMgZW5naW5lIChgV2hpbGVHcmFwaE5vZGVFeGVjdXRvcmApLiBUaGUgbG9vcC1ib2R5XG4gKiB3b3JrZmxvdyBpcyBkZW1vL2FwcC1zaWRlIGNvbnRlbnQgYW5kIGlzIG5vdCBwYXJ0IG9mIHRoZSBzaGFyZWRcbiAqIGRlY2xhcmF0aW9uIOKAlCB0aGUgc2hhcmVkIGNsYXNzIGNhcnJpZXMgdGhlIHBvcnQvbWV0YWRhdGEgc2hhcGUgb25seS5cbiAqL1xuaW1wb3J0IHsgTW9kZWwsIG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVpZWxlbWVudCB9IGZyb20gXCIuLi8uLi8uLi91aS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBpbnB1dCwgbm9kZSwgb3V0cHV0IH0gZnJvbSBcIi4uLy4uL2RlY29yYXRvcnNcIjtcblxuLy8gRW5zdXJlIGNhdGVnb3J5IHN0eWxlcyBhcmUgcmVnaXN0ZXJlZCAoaWRlbXBvdGVudCkuXG5pbXBvcnQgXCIuLi9jYXRlZ29yeS1zdHlsZXNcIjtcblxuQG5vZGUoJ2dyYXBoLXdoaWxlLWxvb3Atbm9kZScsIHtcbiAga2luZDogJ2NvcmUubG9vcC53aGlsZScsXG4gIGNhdGVnb3J5OiAnTG9vcCcsXG4gIGNvbG9yOiAnIzA4OTFiMicsXG4gIGljb246ICd0aS1hcnJvd3MtbG9vcCcsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbJ2xvb3AnLCAnY29uZGl0aW9uYWwnLCAnd2hpbGUnXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogJ1doaWxlIGxvb3AnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVwZWF0cyB0aGUgYm9keSB3aGlsZSB0aGUgY29uZGl0aW9uIGlzIHRydWUgKHByZS1jb25kaXRpb24pLicsXG4gICAgbG9vcDoge1xuICAgICAgbWF4SXRlcmF0aW9uczogNTAsXG4gICAgICBzdGF0ZVBvcnQ6ICdzdGF0ZScsXG4gICAgICBjb25kaXRpb246IHtcbiAgICAgICAgdHlwZTogJ2xlc3NUaGFuJyBhcyBuZXZlcixcbiAgICAgICAgbGVmdDogJ2l0ZXJhdGlvbicsXG4gICAgICAgIHJpZ2h0OiAzLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgR3JhcGhXaGlsZUxvb3BOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KCdpbnB1dCcsIHsgbGFiZWw6ICdTdGF0ZScsIHBsYWNlaG9sZGVyOiAnSW5pdGlhbCBzdGF0ZScgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiAnc3RhdGUnIH0pXG4gIHN0YXRlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KCdpbnB1dCcsIHsgbGFiZWw6ICdGaW5hbCBzdGF0ZScsIHBsYWNlaG9sZGVyOiAnRmluYWwgc3RhdGUgYWZ0ZXIgbG9vcCcgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogJ3N0YXRlJyB9KVxuICBzdGF0ZU91dCE6IHVua25vd247XG59XG4iXX0=
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { graphNodeManifest } from "./../catalog/index.js";
|
|
2
|
+
import { AgentNode } from "./agents/agent.js";
|
|
3
|
+
import { BreakFlowNode } from "./flow-control/break.js";
|
|
4
|
+
import { ErrorBoundaryFlowNode } from "./flow-control/error-boundary.js";
|
|
5
|
+
import { HumanApprovalFlowNode } from "./flow-control/human-approval.js";
|
|
6
|
+
import { IfFlowNode } from "./flow-control/if.js";
|
|
7
|
+
import { ParallelFlowNode } from "./flow-control/parallel.js";
|
|
8
|
+
import { SwitchFlowNode } from "./flow-control/switch.js";
|
|
9
|
+
import { CodeFlowNode } from "./utility/code.js";
|
|
10
|
+
import { DelayFlowNode } from "./utility/delay.js";
|
|
11
|
+
import { LogFlowNode } from "./utility/log.js";
|
|
12
|
+
import { MapFlowNode } from "./utility/map.js";
|
|
13
|
+
import { MergeFlowNode } from "./utility/merge.js";
|
|
14
|
+
import { ReturnFlowNode } from "./utility/return.js";
|
|
15
|
+
import { UtilityLogNode } from "./utility/utility-log.js";
|
|
16
|
+
import { ChatTriggerNode } from "./triggers/chat.js";
|
|
17
|
+
import { EventTriggerNode } from "./triggers/event.js";
|
|
18
|
+
import { FormTriggerNode } from "./triggers/form.js";
|
|
19
|
+
import { ManualTriggerNode } from "./triggers/manual.js";
|
|
20
|
+
import { ScheduleTriggerNode } from "./triggers/schedule.js";
|
|
21
|
+
import { WebhookTriggerNode } from "./triggers/webhook.js";
|
|
22
|
+
/**
|
|
23
|
+
* Builds a single {@link GraphPortManifest} from its id, label, direction,
|
|
24
|
+
* and optional extra fields — the terse constructor used by the hand-authored
|
|
25
|
+
* loop manifests below.
|
|
26
|
+
*
|
|
27
|
+
* @param id - Port identifier (matches the decorated property handle).
|
|
28
|
+
* @param label - Human-readable port label.
|
|
29
|
+
* @param direction - Port direction (`input` or `output`).
|
|
30
|
+
* @param extra - Optional manifest fields merged over the defaults.
|
|
31
|
+
* @returns The assembled port manifest.
|
|
32
|
+
*/
|
|
33
|
+
function port(id, label, direction, extra = {}) {
|
|
34
|
+
return { id, label, direction, ...extra };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Compiles a `@node`-decorated class into its published
|
|
38
|
+
* {@link GraphNodeManifest}, so the served shape matches what the Angular
|
|
39
|
+
* palette consumes.
|
|
40
|
+
*
|
|
41
|
+
* @param node - The decorated node class constructor.
|
|
42
|
+
* @param name - Display name override for the compiled manifest.
|
|
43
|
+
* @returns The compiled node manifest.
|
|
44
|
+
*/
|
|
45
|
+
function compile(node, name) {
|
|
46
|
+
return graphNodeManifest(node, { name });
|
|
47
|
+
}
|
|
48
|
+
/** Manifest for the `core.loop.foreach` node: runs the loop body once per item (or slice) of the input array. */
|
|
49
|
+
export const FOREACH_GRAPH_NODE_MANIFEST = {
|
|
50
|
+
kind: "core.loop.foreach",
|
|
51
|
+
capabilities: ["loop"],
|
|
52
|
+
display: {
|
|
53
|
+
name: "Foreach",
|
|
54
|
+
description: "Runs the loop body once per item (or per slice of items) of the input array, collecting the results in order.",
|
|
55
|
+
category: "Flow Control",
|
|
56
|
+
color: "#8b5cf6",
|
|
57
|
+
icon: { type: "catalogue", name: "ti-repeat" },
|
|
58
|
+
width: 120,
|
|
59
|
+
height: 140,
|
|
60
|
+
labels: ["flow", "loop", "foreach", "iteration"],
|
|
61
|
+
},
|
|
62
|
+
inputs: [
|
|
63
|
+
port("items", "Items", "input", {
|
|
64
|
+
required: true,
|
|
65
|
+
schema: { type: "array", items: { type: "any" } },
|
|
66
|
+
}),
|
|
67
|
+
port("slice", "Slice size", "input", { schema: { type: "number", integer: true, min: 1 } }),
|
|
68
|
+
port("state", "Initial state", "input", { schema: { type: "any" } }),
|
|
69
|
+
],
|
|
70
|
+
outputs: [
|
|
71
|
+
port("results", "Results", "output", {
|
|
72
|
+
schema: { type: "array", items: { type: "any" } },
|
|
73
|
+
}),
|
|
74
|
+
port("completed", "Completed", "output", {
|
|
75
|
+
schema: { type: "array", items: { type: "any" } },
|
|
76
|
+
}),
|
|
77
|
+
port("iterations", "Iterations", "output", { schema: { type: "number", integer: true, min: 0 } }),
|
|
78
|
+
port("broken", "Broken", "output", { schema: { type: "boolean" } }),
|
|
79
|
+
port("state", "Final state", "output", { schema: { type: "any" } }),
|
|
80
|
+
],
|
|
81
|
+
parameters: [
|
|
82
|
+
{
|
|
83
|
+
type: "number",
|
|
84
|
+
id: "maxIterations",
|
|
85
|
+
label: "Max iterations",
|
|
86
|
+
integer: true,
|
|
87
|
+
min: 1,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: "object",
|
|
91
|
+
id: "condition",
|
|
92
|
+
label: "Condition",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
type: "string",
|
|
96
|
+
id: "itemPort",
|
|
97
|
+
label: "Item port",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
type: "string",
|
|
101
|
+
id: "resultPort",
|
|
102
|
+
label: "Result port",
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: "string",
|
|
106
|
+
id: "statePort",
|
|
107
|
+
label: "State port",
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: "number",
|
|
111
|
+
id: "slice",
|
|
112
|
+
label: "Slice size",
|
|
113
|
+
integer: true,
|
|
114
|
+
min: 1,
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
};
|
|
118
|
+
/** Manifest for the `core.loop.while` node: repeats the loop body while the condition holds. */
|
|
119
|
+
export const WHILE_GRAPH_NODE_MANIFEST = {
|
|
120
|
+
kind: "core.loop.while",
|
|
121
|
+
capabilities: ["loop"],
|
|
122
|
+
display: {
|
|
123
|
+
name: "While",
|
|
124
|
+
description: "Runs the loop body while the configured condition evaluates to true, threading the state between iterations.",
|
|
125
|
+
category: "Flow Control",
|
|
126
|
+
color: "#8b5cf6",
|
|
127
|
+
icon: { type: "catalogue", name: "ti-repeat-once" },
|
|
128
|
+
width: 120,
|
|
129
|
+
height: 140,
|
|
130
|
+
labels: ["flow", "loop", "while", "condition"],
|
|
131
|
+
},
|
|
132
|
+
inputs: [port("state", "Initial state", "input", { schema: { type: "any" } })],
|
|
133
|
+
outputs: [
|
|
134
|
+
port("state", "Final state", "output", { schema: { type: "any" } }),
|
|
135
|
+
port("iterations", "Iterations", "output", { schema: { type: "number", integer: true, min: 0 } }),
|
|
136
|
+
],
|
|
137
|
+
parameters: [
|
|
138
|
+
{
|
|
139
|
+
type: "number",
|
|
140
|
+
id: "maxIterations",
|
|
141
|
+
label: "Max iterations",
|
|
142
|
+
integer: true,
|
|
143
|
+
min: 1,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: "object",
|
|
147
|
+
id: "condition",
|
|
148
|
+
label: "Condition",
|
|
149
|
+
required: true,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: "string",
|
|
153
|
+
id: "statePort",
|
|
154
|
+
label: "State port",
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: "string",
|
|
158
|
+
id: "inputPort",
|
|
159
|
+
label: "Input port",
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: "string",
|
|
163
|
+
id: "outputPort",
|
|
164
|
+
label: "Output port",
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
};
|
|
168
|
+
/** Manifest for the `core.loop.until` node: repeats the loop body until the condition holds. */
|
|
169
|
+
export const UNTIL_GRAPH_NODE_MANIFEST = {
|
|
170
|
+
kind: "core.loop.until",
|
|
171
|
+
capabilities: ["loop"],
|
|
172
|
+
display: {
|
|
173
|
+
name: "Until",
|
|
174
|
+
description: "Runs the loop body at least once, then repeats until the configured condition evaluates to true.",
|
|
175
|
+
category: "Flow Control",
|
|
176
|
+
color: "#8b5cf6",
|
|
177
|
+
icon: { type: "catalogue", name: "ti-repeat" },
|
|
178
|
+
width: 120,
|
|
179
|
+
height: 140,
|
|
180
|
+
labels: ["flow", "loop", "until", "condition"],
|
|
181
|
+
},
|
|
182
|
+
inputs: [port("state", "Initial state", "input", { schema: { type: "any" } })],
|
|
183
|
+
outputs: [
|
|
184
|
+
port("state", "Final state", "output", { schema: { type: "any" } }),
|
|
185
|
+
port("iterations", "Iterations", "output", { schema: { type: "number", integer: true, min: 0 } }),
|
|
186
|
+
],
|
|
187
|
+
parameters: [
|
|
188
|
+
{
|
|
189
|
+
type: "number",
|
|
190
|
+
id: "maxIterations",
|
|
191
|
+
label: "Max iterations",
|
|
192
|
+
integer: true,
|
|
193
|
+
min: 1,
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
type: "object",
|
|
197
|
+
id: "condition",
|
|
198
|
+
label: "Condition",
|
|
199
|
+
required: true,
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
type: "string",
|
|
203
|
+
id: "statePort",
|
|
204
|
+
label: "State port",
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
type: "string",
|
|
208
|
+
id: "inputPort",
|
|
209
|
+
label: "Input port",
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
type: "string",
|
|
213
|
+
id: "outputPort",
|
|
214
|
+
label: "Output port",
|
|
215
|
+
},
|
|
216
|
+
],
|
|
217
|
+
};
|
|
218
|
+
const switchCompiled = compile(SwitchFlowNode, "Switch");
|
|
219
|
+
/** Manifest for the `core.flow.switch` node: routes execution by switch-case conditions (cases live under `parameters["switch"]`). */
|
|
220
|
+
export const SWITCH_GRAPH_NODE_MANIFEST = {
|
|
221
|
+
...switchCompiled,
|
|
222
|
+
outputs: [],
|
|
223
|
+
parameters: [
|
|
224
|
+
...switchCompiled.parameters,
|
|
225
|
+
{
|
|
226
|
+
type: "collection",
|
|
227
|
+
id: "cases",
|
|
228
|
+
label: "Cases",
|
|
229
|
+
required: true,
|
|
230
|
+
itemIdPath: "outputPort",
|
|
231
|
+
itemLabelPath: "label",
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
type: "boolean",
|
|
235
|
+
id: "hasDefault",
|
|
236
|
+
label: "Has default",
|
|
237
|
+
defaultValue: false,
|
|
238
|
+
},
|
|
239
|
+
],
|
|
240
|
+
dynamicPorts: [
|
|
241
|
+
{
|
|
242
|
+
type: "repeatFromParameter",
|
|
243
|
+
parameter: "cases",
|
|
244
|
+
itemIdPath: "outputPort",
|
|
245
|
+
itemLabelPath: "label",
|
|
246
|
+
direction: "output",
|
|
247
|
+
portIdTemplate: "${id}",
|
|
248
|
+
defaultPort: {
|
|
249
|
+
id: "case",
|
|
250
|
+
label: "Case",
|
|
251
|
+
direction: "output",
|
|
252
|
+
schema: { type: "any" },
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
type: "togglePort",
|
|
257
|
+
parameter: "hasDefault",
|
|
258
|
+
equals: true,
|
|
259
|
+
port: {
|
|
260
|
+
id: "default",
|
|
261
|
+
label: "Default",
|
|
262
|
+
direction: "output",
|
|
263
|
+
schema: { type: "any" },
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
],
|
|
267
|
+
};
|
|
268
|
+
/** Manifest for the manual-trigger node (starts a run on demand). */
|
|
269
|
+
export const MANUAL_TRIGGER_GRAPH_NODE_MANIFEST = compile(ManualTriggerNode, "Manual trigger");
|
|
270
|
+
/** Manifest for the webhook-trigger node (starts a run from an inbound webhook). */
|
|
271
|
+
export const WEBHOOK_TRIGGER_GRAPH_NODE_MANIFEST = compile(WebhookTriggerNode, "Webhook trigger");
|
|
272
|
+
/** Manifest for the schedule-trigger node (starts a run on a schedule). */
|
|
273
|
+
export const SCHEDULE_TRIGGER_GRAPH_NODE_MANIFEST = compile(ScheduleTriggerNode, "Schedule trigger");
|
|
274
|
+
/** Manifest for the event-trigger node (starts a run on an observed event). */
|
|
275
|
+
export const EVENT_TRIGGER_GRAPH_NODE_MANIFEST = compile(EventTriggerNode, "Event trigger");
|
|
276
|
+
/** Manifest for the form-trigger node (starts a run from a form submission). */
|
|
277
|
+
export const FORM_TRIGGER_GRAPH_NODE_MANIFEST = compile(FormTriggerNode, "Form trigger");
|
|
278
|
+
/** Manifest for the chat-trigger node (starts a run from a chat message). */
|
|
279
|
+
export const CHAT_TRIGGER_GRAPH_NODE_MANIFEST = compile(ChatTriggerNode, "Chat trigger");
|
|
280
|
+
/** Manifest for the if node (conditional branch on a boolean condition). */
|
|
281
|
+
export const IF_GRAPH_NODE_MANIFEST = compile(IfFlowNode, "If");
|
|
282
|
+
/** Manifest for the parallel node (runs branches concurrently). */
|
|
283
|
+
export const PARALLEL_GRAPH_NODE_MANIFEST = compile(ParallelFlowNode, "Parallel");
|
|
284
|
+
/** Manifest for the merge node (joins parallel branches). */
|
|
285
|
+
export const MERGE_GRAPH_NODE_MANIFEST = compile(MergeFlowNode, "Merge");
|
|
286
|
+
/** Manifest for the map node (transforms each input item). */
|
|
287
|
+
export const MAP_GRAPH_NODE_MANIFEST = compile(MapFlowNode, "Map");
|
|
288
|
+
/** Manifest for the delay node (pauses execution for a duration). */
|
|
289
|
+
export const DELAY_GRAPH_NODE_MANIFEST = compile(DelayFlowNode, "Delay");
|
|
290
|
+
/** Manifest for the error-boundary node (isolates branch failures). */
|
|
291
|
+
export const ERROR_BOUNDARY_GRAPH_NODE_MANIFEST = compile(ErrorBoundaryFlowNode, "Error boundary");
|
|
292
|
+
/** Manifest for the human-approval node (waits for an approval decision). */
|
|
293
|
+
export const HUMAN_APPROVAL_GRAPH_NODE_MANIFEST = compile(HumanApprovalFlowNode, "Human approval");
|
|
294
|
+
/** Manifest for the return node (terminates the workflow with output values). */
|
|
295
|
+
export const RETURN_GRAPH_NODE_MANIFEST = compile(ReturnFlowNode, "Return");
|
|
296
|
+
/** Manifest for the code node (executes user code). */
|
|
297
|
+
export const CODE_GRAPH_NODE_MANIFEST = compile(CodeFlowNode, "Code");
|
|
298
|
+
/** Manifest for the log node (logs its input). */
|
|
299
|
+
export const LOG_GRAPH_NODE_MANIFEST = compile(LogFlowNode, "Log");
|
|
300
|
+
/** Manifest for the utility-log node (log-shaped utility sink). */
|
|
301
|
+
export const UTILITY_LOG_GRAPH_NODE_MANIFEST = compile(UtilityLogNode, "Utility Log");
|
|
302
|
+
/** Manifest for the break node (exits the enclosing loop). */
|
|
303
|
+
export const BREAK_GRAPH_NODE_MANIFEST = compile(BreakFlowNode, "Break");
|
|
304
|
+
/** Manifest for the agent node (delegates work to an agent). */
|
|
305
|
+
export const AGENT_GRAPH_NODE_MANIFEST = compile(AgentNode, "Agent");
|
|
306
|
+
/** All built-in node manifests, in catalogue display order. */
|
|
307
|
+
export const GRAPH_BUILT_IN_NODE_MANIFESTS = [
|
|
308
|
+
MANUAL_TRIGGER_GRAPH_NODE_MANIFEST,
|
|
309
|
+
WEBHOOK_TRIGGER_GRAPH_NODE_MANIFEST,
|
|
310
|
+
SCHEDULE_TRIGGER_GRAPH_NODE_MANIFEST,
|
|
311
|
+
EVENT_TRIGGER_GRAPH_NODE_MANIFEST,
|
|
312
|
+
FORM_TRIGGER_GRAPH_NODE_MANIFEST,
|
|
313
|
+
CHAT_TRIGGER_GRAPH_NODE_MANIFEST,
|
|
314
|
+
IF_GRAPH_NODE_MANIFEST,
|
|
315
|
+
SWITCH_GRAPH_NODE_MANIFEST,
|
|
316
|
+
PARALLEL_GRAPH_NODE_MANIFEST,
|
|
317
|
+
MERGE_GRAPH_NODE_MANIFEST,
|
|
318
|
+
MAP_GRAPH_NODE_MANIFEST,
|
|
319
|
+
DELAY_GRAPH_NODE_MANIFEST,
|
|
320
|
+
ERROR_BOUNDARY_GRAPH_NODE_MANIFEST,
|
|
321
|
+
HUMAN_APPROVAL_GRAPH_NODE_MANIFEST,
|
|
322
|
+
RETURN_GRAPH_NODE_MANIFEST,
|
|
323
|
+
CODE_GRAPH_NODE_MANIFEST,
|
|
324
|
+
LOG_GRAPH_NODE_MANIFEST,
|
|
325
|
+
UTILITY_LOG_GRAPH_NODE_MANIFEST,
|
|
326
|
+
BREAK_GRAPH_NODE_MANIFEST,
|
|
327
|
+
AGENT_GRAPH_NODE_MANIFEST,
|
|
328
|
+
FOREACH_GRAPH_NODE_MANIFEST,
|
|
329
|
+
WHILE_GRAPH_NODE_MANIFEST,
|
|
330
|
+
UNTIL_GRAPH_NODE_MANIFEST,
|
|
331
|
+
];
|
|
332
|
+
/** Built-in manifests indexed by node `kind` — the source for built-in catalogue registrations. */
|
|
333
|
+
export const GRAPH_BUILT_IN_NODE_MANIFESTS_BY_KIND = Object.fromEntries(GRAPH_BUILT_IN_NODE_MANIFESTS.map((manifest) => [manifest.kind, manifest]));
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL25vZGVzL21hbmlmZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsOEJBQW1CO0FBRS9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsMEJBQXVCO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0NBQTZCO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx5Q0FBc0M7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHlDQUFzQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLDZCQUEwQjtBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUNBQWdDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUNBQThCO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsMEJBQXVCO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsMkJBQXdCO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUseUJBQXNCO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUseUJBQXNCO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsMkJBQXdCO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsNEJBQXlCO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUNBQThCO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsMkJBQXdCO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSw0QkFBeUI7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSwyQkFBd0I7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLDZCQUEwQjtBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsK0JBQTRCO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSw4QkFBMkI7QUFFeEQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsSUFBSSxDQUNYLEVBQVUsRUFDVixLQUFhLEVBQ2IsU0FB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QUN6QixrQ0FBa0M7SUFDbEMsa0NBQWtDO0lBQ2xDLDBCQUEwQjtJQUMxQix3QkFBd0I7SUFDeEIsdUJBQXVCO0lBQ3ZCLCtCQUErQjtJQUMvQix5QkFBeUI7SUFDekIseUJBQXlCO0lBQ3pCLDJCQUEyQjtJQUMzQix5QkFBeUI7SUFDekIseUJBQXlCO0NBQzFCLENBQUM7QUFFRixtR0FBbUc7QUFDbkcsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBRzlDLE1BQU0sQ0FBQyxXQUFXLENBQ3BCLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgdWktZGVjb3JhdG9ycy9ncmFwaC9ub2Rlcy9tYW5pZmVzdHNcbiAqIEBzdW1tYXJ5IEJ1aWx0LWluIG5vZGUgbWFuaWZlc3RzIChERUNBRi01MCDCpzQuMTIpLlxuICogQGRlc2NyaXB0aW9uIFRoZSBjYXRhbG9ndWUtcHVibGlzaGVkIEpTT04gbWFuaWZlc3RzIGZvciBldmVyeSBub2RlIGtpbmRcbiAqIHRoZSBiYWNrZW5kIHNoaXBzLiBMb29wIG1hbmlmZXN0cyBhcmUgaGFuZC1hdXRob3JlZCAodGhlaXIgbG9vcC1ib2R5XG4gKiBzaGFwZXMgYXJlIHN0cnVjdHVyYWwpOyB0aGUgcmVzdCBhcmUgY29tcGlsZWQgZnJvbSB0aGUgc2hhcmVkXG4gKiBgQG5vZGVgLWRlY29yYXRlZCBjbGFzc2VzIHZpYSBgZ3JhcGhOb2RlTWFuaWZlc3RgLCBzbyB0aGUgc2VydmVkIHNoYXBlIGlzXG4gKiBpZGVudGljYWwgdG8gd2hhdCB0aGUgQW5ndWxhciBwYWxldHRlIGNvbnN1bWVzLiBBZ2dyZWdhdGVkIGluXG4gKiBgR1JBUEhfQlVJTFRfSU5fTk9ERV9NQU5JRkVTVFNgIGFuZCBpbmRleGVkIGJ5IGtpbmQgaW5cbiAqIGBHUkFQSF9CVUlMVF9JTl9OT0RFX01BTklGRVNUU19CWV9LSU5EYC5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBHcmFwaE5vZGVNYW5pZmVzdCxcbiAgR3JhcGhQb3J0TWFuaWZlc3QsXG59IGZyb20gXCIuLi9jYXRhbG9nXCI7XG5pbXBvcnQgeyBncmFwaE5vZGVNYW5pZmVzdCB9IGZyb20gXCIuLi9jYXRhbG9nXCI7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBBZ2VudE5vZGUgfSBmcm9tIFwiLi9hZ2VudHMvYWdlbnRcIjtcbmltcG9ydCB7IEJyZWFrRmxvd05vZGUgfSBmcm9tIFwiLi9mbG93LWNvbnRyb2wvYnJlYWtcIjtcbmltcG9ydCB7IEVycm9yQm91bmRhcnlGbG93Tm9kZSB9IGZyb20gXCIuL2Zsb3ctY29udHJvbC9lcnJvci1ib3VuZGFyeVwiO1xuaW1wb3J0IHsgSHVtYW5BcHByb3ZhbEZsb3dOb2RlIH0gZnJvbSBcIi4vZmxvdy1jb250cm9sL2h1bWFuLWFwcHJvdmFsXCI7XG5pbXBvcnQgeyBJZkZsb3dOb2RlIH0gZnJvbSBcIi4vZmxvdy1jb250cm9sL2lmXCI7XG5pbXBvcnQgeyBQYXJhbGxlbEZsb3dOb2RlIH0gZnJvbSBcIi4vZmxvdy1jb250cm9sL3BhcmFsbGVsXCI7XG5pbXBvcnQgeyBTd2l0Y2hGbG93Tm9kZSB9IGZyb20gXCIuL2Zsb3ctY29udHJvbC9zd2l0Y2hcIjtcbmltcG9ydCB7IENvZGVGbG93Tm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvY29kZVwiO1xuaW1wb3J0IHsgRGVsYXlGbG93Tm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvZGVsYXlcIjtcbmltcG9ydCB7IExvZ0Zsb3dOb2RlIH0gZnJvbSBcIi4vdXRpbGl0eS9sb2dcIjtcbmltcG9ydCB7IE1hcEZsb3dOb2RlIH0gZnJvbSBcIi4vdXRpbGl0eS9tYXBcIjtcbmltcG9ydCB7IE1lcmdlRmxvd05vZGUgfSBmcm9tIFwiLi91dGlsaXR5L21lcmdlXCI7XG5pbXBvcnQgeyBSZXR1cm5GbG93Tm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvcmV0dXJuXCI7XG5pbXBvcnQgeyBVdGlsaXR5TG9nTm9kZSB9IGZyb20gXCIuL3V0aWxpdHkvdXRpbGl0eS1sb2dcIjtcbmltcG9ydCB7IENoYXRUcmlnZ2VyTm9kZSB9IGZyb20gXCIuL3RyaWdnZXJzL2NoYXRcIjtcbmltcG9ydCB7IEV2ZW50VHJpZ2dlck5vZGUgfSBmcm9tIFwiLi90cmlnZ2Vycy9ldmVudFwiO1xuaW1wb3J0IHsgRm9ybVRyaWdnZXJOb2RlIH0gZnJvbSBcIi4vdHJpZ2dlcnMvZm9ybVwiO1xuaW1wb3J0IHsgTWFudWFsVHJpZ2dlck5vZGUgfSBmcm9tIFwiLi90cmlnZ2Vycy9tYW51YWxcIjtcbmltcG9ydCB7IFNjaGVkdWxlVHJpZ2dlck5vZGUgfSBmcm9tIFwiLi90cmlnZ2Vycy9zY2hlZHVsZVwiO1xuaW1wb3J0IHsgV2ViaG9va1RyaWdnZXJOb2RlIH0gZnJvbSBcIi4vdHJpZ2dlcnMvd2ViaG9va1wiO1xuXG4vKipcbiAqIEJ1aWxkcyBhIHNpbmdsZSB7QGxpbmsgR3JhcGhQb3J0TWFuaWZlc3R9IGZyb20gaXRzIGlkLCBsYWJlbCwgZGlyZWN0aW9uLFxuICogYW5kIG9wdGlvbmFsIGV4dHJhIGZpZWxkcyDigJQgdGhlIHRlcnNlIGNvbnN0cnVjdG9yIHVzZWQgYnkgdGhlIGhhbmQtYXV0aG9yZWRcbiAqIGxvb3AgbWFuaWZlc3RzIGJlbG93LlxuICpcbiAqIEBwYXJhbSBpZCAtIFBvcnQgaWRlbnRpZmllciAobWF0Y2hlcyB0aGUgZGVjb3JhdGVkIHByb3BlcnR5IGhhbmRsZSkuXG4gKiBAcGFyYW0gbGFiZWwgLSBIdW1hbi1yZWFkYWJsZSBwb3J0IGxhYmVsLlxuICogQHBhcmFtIGRpcmVjdGlvbiAtIFBvcnQgZGlyZWN0aW9uIChgaW5wdXRgIG9yIGBvdXRwdXRgKS5cbiAqIEBwYXJhbSBleHRyYSAtIE9wdGlvbmFsIG1hbmlmZXN0IGZpZWxkcyBtZXJnZWQgb3ZlciB0aGUgZGVmYXVsdHMuXG4gKiBAcmV0dXJucyBUaGUgYXNzZW1ibGVkIHBvcnQgbWFuaWZlc3QuXG4gKi9cbmZ1bmN0aW9uIHBvcnQoXG4gIGlkOiBzdHJpbmcsXG4gIGxhYmVsOiBzdHJpbmcsXG4gIGRpcmVjdGlvbjogXCJpbnB1dFwiIHwgXCJvdXRwdXRcIixcbiAgZXh0cmE6IFBhcnRpYWw8R3JhcGhQb3J0TWFuaWZlc3Q+ID0ge31cbik6IEdyYXBoUG9ydE1hbmlmZXN0IHtcbiAgcmV0dXJuIHsgaWQsIGxhYmVsLCBkaXJlY3Rpb24sIC4uLmV4dHJhIH07XG59XG5cbi8qKlxuICogQ29tcGlsZXMgYSBgQG5vZGVgLWRlY29yYXRlZCBjbGFzcyBpbnRvIGl0cyBwdWJsaXNoZWRcbiAqIHtAbGluayBHcmFwaE5vZGVNYW5pZmVzdH0sIHNvIHRoZSBzZXJ2ZWQgc2hhcGUgbWF0Y2hlcyB3aGF0IHRoZSBBbmd1bGFyXG4gKiBwYWxldHRlIGNvbnN1bWVzLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIGRlY29yYXRlZCBub2RlIGNsYXNzIGNvbnN0cnVjdG9yLlxuICogQHBhcmFtIG5hbWUgLSBEaXNwbGF5IG5hbWUgb3ZlcnJpZGUgZm9yIHRoZSBjb21waWxlZCBtYW5pZmVzdC5cbiAqIEByZXR1cm5zIFRoZSBjb21waWxlZCBub2RlIG1hbmlmZXN0LlxuICovXG5mdW5jdGlvbiBjb21waWxlKG5vZGU6IHVua25vd24sIG5hbWU6IHN0cmluZyk6IEdyYXBoTm9kZU1hbmlmZXN0IHtcbiAgcmV0dXJuIGdyYXBoTm9kZU1hbmlmZXN0KG5vZGUgYXMgQ29uc3RydWN0b3IsIHsgbmFtZSB9KTtcbn1cblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgYGNvcmUubG9vcC5mb3JlYWNoYCBub2RlOiBydW5zIHRoZSBsb29wIGJvZHkgb25jZSBwZXIgaXRlbSAob3Igc2xpY2UpIG9mIHRoZSBpbnB1dCBhcnJheS4gKi9cbmV4cG9ydCBjb25zdCBGT1JFQUNIX0dSQVBIX05PREVfTUFOSUZFU1Q6IEdyYXBoTm9kZU1hbmlmZXN0ID0ge1xuICBraW5kOiBcImNvcmUubG9vcC5mb3JlYWNoXCIsXG4gIGNhcGFiaWxpdGllczogW1wibG9vcFwiXSxcbiAgZGlzcGxheToge1xuICAgIG5hbWU6IFwiRm9yZWFjaFwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJSdW5zIHRoZSBsb29wIGJvZHkgb25jZSBwZXIgaXRlbSAob3IgcGVyIHNsaWNlIG9mIGl0ZW1zKSBvZiB0aGUgaW5wdXQgYXJyYXksIGNvbGxlY3RpbmcgdGhlIHJlc3VsdHMgaW4gb3JkZXIuXCIsXG4gICAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gICAgY29sb3I6IFwiIzhiNWNmNlwiLFxuICAgIGljb246IHsgdHlwZTogXCJjYXRhbG9ndWVcIiwgbmFtZTogXCJ0aS1yZXBlYXRcIiB9LFxuICAgIHdpZHRoOiAxMjAsXG4gICAgaGVpZ2h0OiAxNDAsXG4gICAgbGFiZWxzOiBbXCJmbG93XCIsIFwibG9vcFwiLCBcImZvcmVhY2hcIiwgXCJpdGVyYXRpb25cIl0sXG4gIH0sXG4gIGlucHV0czogW1xuICAgIHBvcnQoXCJpdGVtc1wiLCBcIkl0ZW1zXCIsIFwiaW5wdXRcIiwge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBzY2hlbWE6IHsgdHlwZTogXCJhcnJheVwiLCBpdGVtczogeyB0eXBlOiBcImFueVwiIH0gfSxcbiAgICB9KSxcbiAgICBwb3J0KFwic2xpY2VcIiwgXCJTbGljZSBzaXplXCIsIFwiaW5wdXRcIiwgeyBzY2hlbWE6IHsgdHlwZTogXCJudW1iZXJcIiwgaW50ZWdlcjogdHJ1ZSwgbWluOiAxIH0gfSksXG4gICAgcG9ydChcInN0YXRlXCIsIFwiSW5pdGlhbCBzdGF0ZVwiLCBcImlucHV0XCIsIHsgc2NoZW1hOiB7IHR5cGU6IFwiYW55XCIgfSB9KSxcbiAgXSxcbiAgb3V0cHV0czogW1xuICAgIHBvcnQoXCJyZXN1bHRzXCIsIFwiUmVzdWx0c1wiLCBcIm91dHB1dFwiLCB7XG4gICAgICBzY2hlbWE6IHsgdHlwZTogXCJhcnJheVwiLCBpdGVtczogeyB0eXBlOiBcImFueVwiIH0gfSxcbiAgICB9KSxcbiAgICBwb3J0KFwiY29tcGxldGVkXCIsIFwiQ29tcGxldGVkXCIsIFwib3V0cHV0XCIsIHtcbiAgICAgIHNjaGVtYTogeyB0eXBlOiBcImFycmF5XCIsIGl0ZW1zOiB7IHR5cGU6IFwiYW55XCIgfSB9LFxuICAgIH0pLFxuICAgIHBvcnQoXCJpdGVyYXRpb25zXCIsIFwiSXRlcmF0aW9uc1wiLCBcIm91dHB1dFwiLCB7IHNjaGVtYTogeyB0eXBlOiBcIm51bWJlclwiLCBpbnRlZ2VyOiB0cnVlLCBtaW46IDAgfSB9KSxcbiAgICBwb3J0KFwiYnJva2VuXCIsIFwiQnJva2VuXCIsIFwib3V0cHV0XCIsIHsgc2NoZW1hOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0gfSksXG4gICAgcG9ydChcInN0YXRlXCIsIFwiRmluYWwgc3RhdGVcIiwgXCJvdXRwdXRcIiwgeyBzY2hlbWE6IHsgdHlwZTogXCJhbnlcIiB9IH0pLFxuICBdLFxuICBwYXJhbWV0ZXJzOiBbXG4gICAge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGlkOiBcIm1heEl0ZXJhdGlvbnNcIixcbiAgICAgIGxhYmVsOiBcIk1heCBpdGVyYXRpb25zXCIsXG4gICAgICBpbnRlZ2VyOiB0cnVlLFxuICAgICAgbWluOiAxLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIGlkOiBcImNvbmRpdGlvblwiLFxuICAgICAgbGFiZWw6IFwiQ29uZGl0aW9uXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgaWQ6IFwiaXRlbVBvcnRcIixcbiAgICAgIGxhYmVsOiBcIkl0ZW0gcG9ydFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGlkOiBcInJlc3VsdFBvcnRcIixcbiAgICAgIGxhYmVsOiBcIlJlc3VsdCBwb3J0XCIsXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgaWQ6IFwic3RhdGVQb3J0XCIsXG4gICAgICBsYWJlbDogXCJTdGF0ZSBwb3J0XCIsXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgaWQ6IFwic2xpY2VcIixcbiAgICAgIGxhYmVsOiBcIlNsaWNlIHNpemVcIixcbiAgICAgIGludGVnZXI6IHRydWUsXG4gICAgICBtaW46IDEsXG4gICAgfSxcbiAgXSxcbn07XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGBjb3JlLmxvb3Aud2hpbGVgIG5vZGU6IHJlcGVhdHMgdGhlIGxvb3AgYm9keSB3aGlsZSB0aGUgY29uZGl0aW9uIGhvbGRzLiAqL1xuZXhwb3J0IGNvbnN0IFdISUxFX0dSQVBIX05PREVfTUFOSUZFU1Q6IEdyYXBoTm9kZU1hbmlmZXN0ID0ge1xuICBraW5kOiBcImNvcmUubG9vcC53aGlsZVwiLFxuICBjYXBhYmlsaXRpZXM6IFtcImxvb3BcIl0sXG4gIGRpc3BsYXk6IHtcbiAgICBuYW1lOiBcIldoaWxlXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlJ1bnMgdGhlIGxvb3AgYm9keSB3aGlsZSB0aGUgY29uZmlndXJlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUsIHRocmVhZGluZyB0aGUgc3RhdGUgYmV0d2VlbiBpdGVyYXRpb25zLlwiLFxuICAgIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICAgIGNvbG9yOiBcIiM4YjVjZjZcIixcbiAgICBpY29uOiB7IHR5cGU6IFwiY2F0YWxvZ3VlXCIsIG5hbWU6IFwidGktcmVwZWF0LW9uY2VcIiB9LFxuICAgIHdpZHRoOiAxMjAsXG4gICAgaGVpZ2h0OiAxNDAsXG4gICAgbGFiZWxzOiBbXCJmbG93XCIsIFwibG9vcFwiLCBcIndoaWxlXCIsIFwiY29uZGl0aW9uXCJdLFxuICB9LFxuICBpbnB1dHM6IFtwb3J0KFwic3RhdGVcIiwgXCJJbml0aWFsIHN0YXRlXCIsIFwiaW5wdXRcIiwgeyBzY2hlbWE6IHsgdHlwZTogXCJhbnlcIiB9IH0pXSxcbiAgb3V0cHV0czogW1xuICAgIHBvcnQoXCJzdGF0ZVwiLCBcIkZpbmFsIHN0YXRlXCIsIFwib3V0cHV0XCIsIHsgc2NoZW1hOiB7IHR5cGU6IFwiYW55XCIgfSB9KSxcbiAgICBwb3J0KFwiaXRlcmF0aW9uc1wiLCBcIkl0ZXJhdGlvbnNcIiwgXCJvdXRwdXRcIiwgeyBzY2hlbWE6IHsgdHlwZTogXCJudW1iZXJcIiwgaW50ZWdlcjogdHJ1ZSwgbWluOiAwIH0gfSksXG4gIF0sXG4gIHBhcmFtZXRlcnM6IFtcbiAgICB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgaWQ6IFwibWF4SXRlcmF0aW9uc1wiLFxuICAgICAgbGFiZWw6IFwiTWF4IGl0ZXJhdGlvbnNcIixcbiAgICAgIGludGVnZXI6IHRydWUsXG4gICAgICBtaW46IDEsXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgaWQ6IFwiY29uZGl0aW9uXCIsXG4gICAgICBsYWJlbDogXCJDb25kaXRpb25cIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGlkOiBcInN0YXRlUG9ydFwiLFxuICAgICAgbGFiZWw6IFwiU3RhdGUgcG9ydFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGlkOiBcImlucHV0UG9ydFwiLFxuICAgICAgbGFiZWw6IFwiSW5wdXQgcG9ydFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGlkOiBcIm91dHB1dFBvcnRcIixcbiAgICAgIGxhYmVsOiBcIk91dHB1dCBwb3J0XCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGBjb3JlLmxvb3AudW50aWxgIG5vZGU6IHJlcGVhdHMgdGhlIGxvb3AgYm9keSB1bnRpbCB0aGUgY29uZGl0aW9uIGhvbGRzLiAqL1xuZXhwb3J0IGNvbnN0IFVOVElMX0dSQVBIX05PREVfTUFOSUZFU1Q6IEdyYXBoTm9kZU1hbmlmZXN0ID0ge1xuICBraW5kOiBcImNvcmUubG9vcC51bnRpbFwiLFxuICBjYXBhYmlsaXRpZXM6IFtcImxvb3BcIl0sXG4gIGRpc3BsYXk6IHtcbiAgICBuYW1lOiBcIlVudGlsXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlJ1bnMgdGhlIGxvb3AgYm9keSBhdCBsZWFzdCBvbmNlLCB0aGVuIHJlcGVhdHMgdW50aWwgdGhlIGNvbmZpZ3VyZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxuICAgIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICAgIGNvbG9yOiBcIiM4YjVjZjZcIixcbiAgICBpY29uOiB7IHR5cGU6IFwiY2F0YWxvZ3VlXCIsIG5hbWU6IFwidGktcmVwZWF0XCIgfSxcbiAgICB3aWR0aDogMTIwLFxuICAgIGhlaWdodDogMTQwLFxuICAgIGxhYmVsczogW1wiZmxvd1wiLCBcImxvb3BcIiwgXCJ1bnRpbFwiLCBcImNvbmRpdGlvblwiXSxcbiAgfSxcbiAgaW5wdXRzOiBbcG9ydChcInN0YXRlXCIsIFwiSW5pdGlhbCBzdGF0ZVwiLCBcImlucHV0XCIsIHsgc2NoZW1hOiB7IHR5cGU6IFwiYW55XCIgfSB9KV0sXG4gIG91dHB1dHM6IFtcbiAgICBwb3J0KFwic3RhdGVcIiwgXCJGaW5hbCBzdGF0ZVwiLCBcIm91dHB1dFwiLCB7IHNjaGVtYTogeyB0eXBlOiBcImFueVwiIH0gfSksXG4gICAgcG9ydChcIml0ZXJhdGlvbnNcIiwgXCJJdGVyYXRpb25zXCIsIFwib3V0cHV0XCIsIHsgc2NoZW1hOiB7IHR5cGU6IFwibnVtYmVyXCIsIGludGVnZXI6IHRydWUsIG1pbjogMCB9IH0pLFxuICBdLFxuICBwYXJhbWV0ZXJzOiBbXG4gICAge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGlkOiBcIm1heEl0ZXJhdGlvbnNcIixcbiAgICAgIGxhYmVsOiBcIk1heCBpdGVyYXRpb25zXCIsXG4gICAgICBpbnRlZ2VyOiB0cnVlLFxuICAgICAgbWluOiAxLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIGlkOiBcImNvbmRpdGlvblwiLFxuICAgICAgbGFiZWw6IFwiQ29uZGl0aW9uXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBpZDogXCJzdGF0ZVBvcnRcIixcbiAgICAgIGxhYmVsOiBcIlN0YXRlIHBvcnRcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBpZDogXCJpbnB1dFBvcnRcIixcbiAgICAgIGxhYmVsOiBcIklucHV0IHBvcnRcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBpZDogXCJvdXRwdXRQb3J0XCIsXG4gICAgICBsYWJlbDogXCJPdXRwdXQgcG9ydFwiLFxuICAgIH0sXG4gIF0sXG59O1xuXG5jb25zdCBzd2l0Y2hDb21waWxlZCA9IGNvbXBpbGUoU3dpdGNoRmxvd05vZGUsIFwiU3dpdGNoXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSBgY29yZS5mbG93LnN3aXRjaGAgbm9kZTogcm91dGVzIGV4ZWN1dGlvbiBieSBzd2l0Y2gtY2FzZSBjb25kaXRpb25zIChjYXNlcyBsaXZlIHVuZGVyIGBwYXJhbWV0ZXJzW1wic3dpdGNoXCJdYCkuICovXG5leHBvcnQgY29uc3QgU1dJVENIX0dSQVBIX05PREVfTUFOSUZFU1Q6IEdyYXBoTm9kZU1hbmlmZXN0ID0ge1xuICAuLi5zd2l0Y2hDb21waWxlZCxcbiAgb3V0cHV0czogW10sXG4gIHBhcmFtZXRlcnM6IFtcbiAgICAuLi5zd2l0Y2hDb21waWxlZC5wYXJhbWV0ZXJzLFxuICAgIHtcbiAgICAgIHR5cGU6IFwiY29sbGVjdGlvblwiLFxuICAgICAgaWQ6IFwiY2FzZXNcIixcbiAgICAgIGxhYmVsOiBcIkNhc2VzXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGl0ZW1JZFBhdGg6IFwib3V0cHV0UG9ydFwiLFxuICAgICAgaXRlbUxhYmVsUGF0aDogXCJsYWJlbFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBpZDogXCJoYXNEZWZhdWx0XCIsXG4gICAgICBsYWJlbDogXCJIYXMgZGVmYXVsdFwiLFxuICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICB9LFxuICBdLFxuICBkeW5hbWljUG9ydHM6IFtcbiAgICB7XG4gICAgICB0eXBlOiBcInJlcGVhdEZyb21QYXJhbWV0ZXJcIixcbiAgICAgIHBhcmFtZXRlcjogXCJjYXNlc1wiLFxuICAgICAgaXRlbUlkUGF0aDogXCJvdXRwdXRQb3J0XCIsXG4gICAgICBpdGVtTGFiZWxQYXRoOiBcImxhYmVsXCIsXG4gICAgICBkaXJlY3Rpb246IFwib3V0cHV0XCIsXG4gICAgICBwb3J0SWRUZW1wbGF0ZTogXCIke2lkfVwiLFxuICAgICAgZGVmYXVsdFBvcnQ6IHtcbiAgICAgICAgaWQ6IFwiY2FzZVwiLFxuICAgICAgICBsYWJlbDogXCJDYXNlXCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJvdXRwdXRcIixcbiAgICAgICAgc2NoZW1hOiB7IHR5cGU6IFwiYW55XCIgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcInRvZ2dsZVBvcnRcIixcbiAgICAgIHBhcmFtZXRlcjogXCJoYXNEZWZhdWx0XCIsXG4gICAgICBlcXVhbHM6IHRydWUsXG4gICAgICBwb3J0OiB7XG4gICAgICAgIGlkOiBcImRlZmF1bHRcIixcbiAgICAgICAgbGFiZWw6IFwiRGVmYXVsdFwiLFxuICAgICAgICBkaXJlY3Rpb246IFwib3V0cHV0XCIsXG4gICAgICAgIHNjaGVtYTogeyB0eXBlOiBcImFueVwiIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF0sXG59O1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSBtYW51YWwtdHJpZ2dlciBub2RlIChzdGFydHMgYSBydW4gb24gZGVtYW5kKS4gKi9cbmV4cG9ydCBjb25zdCBNQU5VQUxfVFJJR0dFUl9HUkFQSF9OT0RFX01BTklGRVNUID0gY29tcGlsZShNYW51YWxUcmlnZ2VyTm9kZSwgXCJNYW51YWwgdHJpZ2dlclwiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgd2ViaG9vay10cmlnZ2VyIG5vZGUgKHN0YXJ0cyBhIHJ1biBmcm9tIGFuIGluYm91bmQgd2ViaG9vaykuICovXG5leHBvcnQgY29uc3QgV0VCSE9PS19UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKFdlYmhvb2tUcmlnZ2VyTm9kZSwgXCJXZWJob29rIHRyaWdnZXJcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIHNjaGVkdWxlLXRyaWdnZXIgbm9kZSAoc3RhcnRzIGEgcnVuIG9uIGEgc2NoZWR1bGUpLiAqL1xuZXhwb3J0IGNvbnN0IFNDSEVEVUxFX1RSSUdHRVJfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoU2NoZWR1bGVUcmlnZ2VyTm9kZSwgXCJTY2hlZHVsZSB0cmlnZ2VyXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSBldmVudC10cmlnZ2VyIG5vZGUgKHN0YXJ0cyBhIHJ1biBvbiBhbiBvYnNlcnZlZCBldmVudCkuICovXG5leHBvcnQgY29uc3QgRVZFTlRfVFJJR0dFUl9HUkFQSF9OT0RFX01BTklGRVNUID0gY29tcGlsZShFdmVudFRyaWdnZXJOb2RlLCBcIkV2ZW50IHRyaWdnZXJcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGZvcm0tdHJpZ2dlciBub2RlIChzdGFydHMgYSBydW4gZnJvbSBhIGZvcm0gc3VibWlzc2lvbikuICovXG5leHBvcnQgY29uc3QgRk9STV9UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKEZvcm1UcmlnZ2VyTm9kZSwgXCJGb3JtIHRyaWdnZXJcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGNoYXQtdHJpZ2dlciBub2RlIChzdGFydHMgYSBydW4gZnJvbSBhIGNoYXQgbWVzc2FnZSkuICovXG5leHBvcnQgY29uc3QgQ0hBVF9UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKENoYXRUcmlnZ2VyTm9kZSwgXCJDaGF0IHRyaWdnZXJcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGlmIG5vZGUgKGNvbmRpdGlvbmFsIGJyYW5jaCBvbiBhIGJvb2xlYW4gY29uZGl0aW9uKS4gKi9cbmV4cG9ydCBjb25zdCBJRl9HUkFQSF9OT0RFX01BTklGRVNUID0gY29tcGlsZShJZkZsb3dOb2RlLCBcIklmXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSBwYXJhbGxlbCBub2RlIChydW5zIGJyYW5jaGVzIGNvbmN1cnJlbnRseSkuICovXG5leHBvcnQgY29uc3QgUEFSQUxMRUxfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoUGFyYWxsZWxGbG93Tm9kZSwgXCJQYXJhbGxlbFwiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgbWVyZ2Ugbm9kZSAoam9pbnMgcGFyYWxsZWwgYnJhbmNoZXMpLiAqL1xuZXhwb3J0IGNvbnN0IE1FUkdFX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKE1lcmdlRmxvd05vZGUsIFwiTWVyZ2VcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIG1hcCBub2RlICh0cmFuc2Zvcm1zIGVhY2ggaW5wdXQgaXRlbSkuICovXG5leHBvcnQgY29uc3QgTUFQX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKE1hcEZsb3dOb2RlLCBcIk1hcFwiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgZGVsYXkgbm9kZSAocGF1c2VzIGV4ZWN1dGlvbiBmb3IgYSBkdXJhdGlvbikuICovXG5leHBvcnQgY29uc3QgREVMQVlfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoRGVsYXlGbG93Tm9kZSwgXCJEZWxheVwiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgZXJyb3ItYm91bmRhcnkgbm9kZSAoaXNvbGF0ZXMgYnJhbmNoIGZhaWx1cmVzKS4gKi9cbmV4cG9ydCBjb25zdCBFUlJPUl9CT1VOREFSWV9HUkFQSF9OT0RFX01BTklGRVNUID0gY29tcGlsZShFcnJvckJvdW5kYXJ5Rmxvd05vZGUsIFwiRXJyb3IgYm91bmRhcnlcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGh1bWFuLWFwcHJvdmFsIG5vZGUgKHdhaXRzIGZvciBhbiBhcHByb3ZhbCBkZWNpc2lvbikuICovXG5leHBvcnQgY29uc3QgSFVNQU5fQVBQUk9WQUxfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoSHVtYW5BcHByb3ZhbEZsb3dOb2RlLCBcIkh1bWFuIGFwcHJvdmFsXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSByZXR1cm4gbm9kZSAodGVybWluYXRlcyB0aGUgd29ya2Zsb3cgd2l0aCBvdXRwdXQgdmFsdWVzKS4gKi9cbmV4cG9ydCBjb25zdCBSRVRVUk5fR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoUmV0dXJuRmxvd05vZGUsIFwiUmV0dXJuXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSBjb2RlIG5vZGUgKGV4ZWN1dGVzIHVzZXIgY29kZSkuICovXG5leHBvcnQgY29uc3QgQ09ERV9HUkFQSF9OT0RFX01BTklGRVNUID0gY29tcGlsZShDb2RlRmxvd05vZGUsIFwiQ29kZVwiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgbG9nIG5vZGUgKGxvZ3MgaXRzIGlucHV0KS4gKi9cbmV4cG9ydCBjb25zdCBMT0dfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoTG9nRmxvd05vZGUsIFwiTG9nXCIpO1xuXG4vKiogTWFuaWZlc3QgZm9yIHRoZSB1dGlsaXR5LWxvZyBub2RlIChsb2ctc2hhcGVkIHV0aWxpdHkgc2luaykuICovXG5leHBvcnQgY29uc3QgVVRJTElUWV9MT0dfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoVXRpbGl0eUxvZ05vZGUsIFwiVXRpbGl0eSBMb2dcIik7XG5cbi8qKiBNYW5pZmVzdCBmb3IgdGhlIGJyZWFrIG5vZGUgKGV4aXRzIHRoZSBlbmNsb3NpbmcgbG9vcCkuICovXG5leHBvcnQgY29uc3QgQlJFQUtfR1JBUEhfTk9ERV9NQU5JRkVTVCA9IGNvbXBpbGUoQnJlYWtGbG93Tm9kZSwgXCJCcmVha1wiKTtcblxuLyoqIE1hbmlmZXN0IGZvciB0aGUgYWdlbnQgbm9kZSAoZGVsZWdhdGVzIHdvcmsgdG8gYW4gYWdlbnQpLiAqL1xuZXhwb3J0IGNvbnN0IEFHRU5UX0dSQVBIX05PREVfTUFOSUZFU1QgPSBjb21waWxlKEFnZW50Tm9kZSwgXCJBZ2VudFwiKTtcblxuLyoqIEFsbCBidWlsdC1pbiBub2RlIG1hbmlmZXN0cywgaW4gY2F0YWxvZ3VlIGRpc3BsYXkgb3JkZXIuICovXG5leHBvcnQgY29uc3QgR1JBUEhfQlVJTFRfSU5fTk9ERV9NQU5JRkVTVFM6IEdyYXBoTm9kZU1hbmlmZXN0W10gPSBbXG4gIE1BTlVBTF9UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIFdFQkhPT0tfVFJJR0dFUl9HUkFQSF9OT0RFX01BTklGRVNULFxuICBTQ0hFRFVMRV9UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIEVWRU5UX1RSSUdHRVJfR1JBUEhfTk9ERV9NQU5JRkVTVCxcbiAgRk9STV9UUklHR0VSX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIENIQVRfVFJJR0dFUl9HUkFQSF9OT0RFX01BTklGRVNULFxuICBJRl9HUkFQSF9OT0RFX01BTklGRVNULFxuICBTV0lUQ0hfR1JBUEhfTk9ERV9NQU5JRkVTVCxcbiAgUEFSQUxMRUxfR1JBUEhfTk9ERV9NQU5JRkVTVCxcbiAgTUVSR0VfR1JBUEhfTk9ERV9NQU5JRkVTVCxcbiAgTUFQX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIERFTEFZX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIEVSUk9SX0JPVU5EQVJZX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIEhVTUFOX0FQUFJPVkFMX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIFJFVFVSTl9HUkFQSF9OT0RFX01BTklGRVNULFxuICBDT0RFX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIExPR19HUkFQSF9OT0RFX01BTklGRVNULFxuICBVVElMSVRZX0xPR19HUkFQSF9OT0RFX01BTklGRVNULFxuICBCUkVBS19HUkFQSF9OT0RFX01BTklGRVNULFxuICBBR0VOVF9HUkFQSF9OT0RFX01BTklGRVNULFxuICBGT1JFQUNIX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIFdISUxFX0dSQVBIX05PREVfTUFOSUZFU1QsXG4gIFVOVElMX0dSQVBIX05PREVfTUFOSUZFU1QsXG5dO1xuXG4vKiogQnVpbHQtaW4gbWFuaWZlc3RzIGluZGV4ZWQgYnkgbm9kZSBga2luZGAg4oCUIHRoZSBzb3VyY2UgZm9yIGJ1aWx0LWluIGNhdGFsb2d1ZSByZWdpc3RyYXRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IEdSQVBIX0JVSUxUX0lOX05PREVfTUFOSUZFU1RTX0JZX0tJTkQ6IFJlY29yZDxcbiAgc3RyaW5nLFxuICBHcmFwaE5vZGVNYW5pZmVzdFxuPiA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgR1JBUEhfQlVJTFRfSU5fTk9ERV9NQU5JRkVTVFMubWFwKChtYW5pZmVzdCkgPT4gW21hbmlmZXN0LmtpbmQsIG1hbmlmZXN0XSlcbik7XG4iXX0=
|