@valtimo/case-management 13.19.0 → 13.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/fesm2022/valtimo-case-management.mjs +228 -61
  2. package/fesm2022/valtimo-case-management.mjs.map +1 -1
  3. package/lib/components/case-management-create/case-management-create.component.d.ts +9 -0
  4. package/lib/components/case-management-create/case-management-create.component.d.ts.map +1 -1
  5. package/lib/components/case-management-deployment/case-management-deployment.component.d.ts +9 -4
  6. package/lib/components/case-management-deployment/case-management-deployment.component.d.ts.map +1 -1
  7. package/lib/components/case-management-detail/case-management-detail.component.d.ts +15 -4
  8. package/lib/components/case-management-detail/case-management-detail.component.d.ts.map +1 -1
  9. package/lib/components/case-management-detail/tabs/case-management-general/components/case-management-case-handler/case-management-case-handler.component.d.ts +4 -0
  10. package/lib/components/case-management-detail/tabs/case-management-general/components/case-management-case-handler/case-management-case-handler.component.d.ts.map +1 -1
  11. package/lib/components/case-management-detail/tabs/case-management-general/components/case-management-external-start-form/case-management-external-start-form.component.d.ts +6 -0
  12. package/lib/components/case-management-detail/tabs/case-management-general/components/case-management-external-start-form/case-management-external-start-form.component.d.ts.map +1 -1
  13. package/lib/components/case-management-detail/tabs/case-management-list-columns/case-management-list-columns.component.d.ts +20 -0
  14. package/lib/components/case-management-detail/tabs/case-management-list-columns/case-management-list-columns.component.d.ts.map +1 -1
  15. package/lib/components/case-management-detail/tabs/case-management-statuses/case-management-status-modal/case-management-status-modal.component.d.ts +10 -0
  16. package/lib/components/case-management-detail/tabs/case-management-statuses/case-management-status-modal/case-management-status-modal.component.d.ts.map +1 -1
  17. package/lib/components/case-management-detail/tabs/case-management-statuses/case-management-statuses.component.d.ts +3 -0
  18. package/lib/components/case-management-detail/tabs/case-management-statuses/case-management-statuses.component.d.ts.map +1 -1
  19. package/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags-modal/case-management-tags-modal.component.d.ts +9 -0
  20. package/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags-modal/case-management-tags-modal.component.d.ts.map +1 -1
  21. package/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags.component.d.ts +3 -0
  22. package/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags.component.d.ts.map +1 -1
  23. package/lib/components/case-management-detail-actions/case-management-detail-actions.component.d.ts +15 -4
  24. package/lib/components/case-management-detail-actions/case-management-detail-actions.component.d.ts.map +1 -1
  25. package/lib/components/case-management-list/case-management-list.component.d.ts +12 -5
  26. package/lib/components/case-management-list/case-management-list.component.d.ts.map +1 -1
  27. package/lib/components/case-management-upload/case-management-upload.component.d.ts +8 -0
  28. package/lib/components/case-management-upload/case-management-upload.component.d.ts.map +1 -1
  29. package/lib/constants/case-management.test-ids.d.ts +88 -0
  30. package/lib/constants/case-management.test-ids.d.ts.map +1 -0
  31. package/lib/constants/index.d.ts +2 -0
  32. package/lib/constants/index.d.ts.map +1 -0
  33. package/lib/models/case-deployment.model.d.ts +12 -0
  34. package/lib/models/case-deployment.model.d.ts.map +1 -1
  35. package/lib/models/case-list.model.d.ts +2 -0
  36. package/lib/models/case-list.model.d.ts.map +1 -1
  37. package/lib/services/case-management.service.d.ts +2 -1
  38. package/lib/services/case-management.service.d.ts.map +1 -1
  39. package/package.json +1 -1
  40. package/public-api.d.ts +1 -0
  41. package/public-api.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-case-management.mjs","sources":["../../../../projects/valtimo/case-management/src/lib/models/list-column.model.ts","../../../../projects/valtimo/case-management/src/lib/models/status.model.ts","../../../../projects/valtimo/case-management/src/lib/models/tab.model.ts","../../../../projects/valtimo/case-management/src/lib/models/case-list.model.ts","../../../../projects/valtimo/case-management/src/lib/models/case-deployment.model.ts","../../../../projects/valtimo/case-management/src/lib/models/index.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-draft-warning/case-management-draft-warning.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-draft-warning/case-management-draft-warning.component.html","../../../../projects/valtimo/case-management/src/lib/services/case-header-widget-management.service.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-header/case-management-header.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-header/case-management-header.component.html","../../../../projects/valtimo/case-management/src/lib/services/case-detail.service.ts","../../../../projects/valtimo/case-management/src/lib/services/tab-management.service.ts","../../../../projects/valtimo/case-management/src/lib/services/tab.service.ts","../../../../projects/valtimo/case-management/src/lib/services/widget-tab-management.service.ts","../../../../projects/valtimo/case-management/src/lib/services/case-management.service.ts","../../../../projects/valtimo/case-management/src/lib/services/index.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/tab-form/tab-form.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/tab-form/tab-form.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-add-tab-modal/case-management-add-tab-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-add-tab-modal/case-management-add-tab-modal.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-edit-tab-modal/case-management-edit-tab-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-edit-tab-modal/case-management-edit-tab-modal.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-tabs.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-tabs.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-statuses/case-management-status-modal/case-management-status-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-statuses/case-management-status-modal/case-management-status-modal.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-statuses/case-management-statuses.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-statuses/case-management-statuses.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags-modal/case-management-tags-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags-modal/case-management-tags-modal.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-case-detail/case-management-case-detail.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-case-detail/case-management-case-detail.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-search-fields/case-management-search-fields.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-search-fields/case-management-search-fields.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-list-columns/case-management-list-columns.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-list-columns/case-management-list-columns.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-case-list/case-management-case-list.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-case-list/case-management-case-list.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-create-draft-version/case-management-create-draft-version.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-create-draft-version/case-management-create-draft-version.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-deployment/case-management-deployment.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-deployment/case-management-deployment.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-select-version-modal/case-management-select-version-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-select-version-modal/case-management-select-version-modal.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail-actions/case-management-detail-actions.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail-actions/case-management-detail-actions.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/case-management-detail.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/case-management-detail.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-document-definition/case-management-document-definition.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-document-definition/case-management-document-definition.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/components/case-management-case-handler/case-management-case-handler.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/components/case-management-case-handler/case-management-case-handler.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/components/case-management-external-start-form/case-management-external-start-form.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/components/case-management-external-start-form/case-management-external-start-form.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/case-management-general.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/case-management-general.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/widget-tab/case-management-widget-tab-edit-modal/case-management-widget-tab-edit-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/widget-tab/case-management-widget-tab-edit-modal/case-management-widget-tab-edit-modal.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/widget-tab/case-management-widget-tab/case-management-widget-tab.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/widget-tab/case-management-widget-tab/case-management-widget-tab.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-upload/case-management-upload.constants.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-upload/step/case-management-upload-step.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-upload/step/case-management-upload-step.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-upload/case-management-upload.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-upload/case-management-upload.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-create/case-management-create.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-create/case-management-create.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-list/case-management-list.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-list/case-management-list.component.html","../../../../projects/valtimo/case-management/src/lib/case-management-routing.module.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-assignee/case-management-assignee.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-assignee/case-management-assignee.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-connect-modal/case-management-connect-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-connect-modal/case-management-connect-modal.component.html","../../../../projects/valtimo/case-management/src/lib/case-management.module.ts","../../../../projects/valtimo/case-management/src/public-api.ts","../../../../projects/valtimo/case-management/src/valtimo-case-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ntype ListColumnModal = 'create' | 'edit';\n\nexport {ListColumnModal};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ntype StatusModalType = 'edit' | 'add' | 'closed';\n\ntype StatusModalCloseEvent = 'close' | 'closeAndRefresh';\n\nexport {StatusModalType, StatusModalCloseEvent};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport enum TabEnum {\n GENERAL = 'general',\n DOCUMENT = 'document',\n CASE = 'case',\n PROCESSES = 'processes',\n SEARCH = 'search',\n LIST = 'list',\n TABS = 'tabs',\n STATUSES = 'statuses',\n FORMS = 'forms',\n FORM_FLOWS = 'form-flows',\n TAGS = 'tags',\n DECISIONS = 'decisions',\n CASE_LIST = 'case-list',\n CASE_DETAILS = 'case-details',\n TASKS = 'tasks',\n HEADER = 'header',\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class CaseListItem {\n autoAssignTasks: boolean;\n canHaveAssignee: boolean;\n caseDefinitionKey: string;\n caseDefinitionVersionTag: string;\n name: string;\n final: boolean;\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class CaseDefinition {\n caseDefinitionKey: string;\n caseDefinitionVersionTag: string;\n name: string;\n description: string;\n createdBy: string;\n createdDate: Date;\n basedOnVersionTag: string;\n final: boolean;\n canHaveAssignee: boolean;\n autoAssignTasks: boolean;\n active: boolean;\n conflictingVersions: string;\n}\n\nexport class ReleaseVersionData {\n caseDefinitionVersionTag: string;\n basedOnVersionTag: string;\n}\n\nexport class ReleaseInformationData {\n createdBy: string;\n createdDate: Date;\n description: string;\n}\n\nexport class DraftVersion {\n name: string;\n caseDefinitionKey: string;\n caseDefinitionVersion: string;\n description: string;\n basedOnCaseDefinitionVersion?: string;\n}\n\nexport interface CaseDefinitionFinalizationCheckResult {\n finalizable: boolean;\n code: string;\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './list-column.model';\nexport * from './status.model';\nexport * from './tab.model';\nexport * from './case-list.model';\nexport * from './case-deployment.model';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {NotificationContent, NotificationModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable} from 'rxjs';\n\n@Component({\n selector: 'valtimo-case-management-draft-warning',\n templateUrl: './case-management-draft-warning.component.html',\n styleUrl: './case-management-draft-warning.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, NotificationModule, TranslateModule],\n})\nexport class CaseManagementDraftWarningComponent {\n private readonly _name$ = new BehaviorSubject<string>('-');\n @Input() public set name(value: string) {\n this._name$.next(value || '-');\n }\n public readonly notificationObj$: Observable<NotificationContent> = combineLatest([\n this._name$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([name]) => ({\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant('caseManagement.draftWarning.title'),\n message: this.translateService.instant('caseManagement.draftWarning.description', {name}),\n showClose: false,\n }))\n );\n\n constructor(private readonly translateService: TranslateService) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-inline-notification [notificationObj]=\"notificationObj$ | async\"></cds-inline-notification>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {\n BaseApiService,\n CaseManagementParams,\n ConfigService,\n InterceptorSkip,\n} from '@valtimo/shared';\nimport {BasicWidget, IWidgetManagementService} from '@valtimo/layout';\nimport {BehaviorSubject, catchError, filter, map, Observable, of, switchMap} from 'rxjs';\nimport {isEqual} from 'lodash';\n\n@Injectable()\nexport class CaseHeaderWidgetManagementService\n extends BaseApiService\n implements IWidgetManagementService<CaseManagementParams>\n{\n private readonly _params$ = new BehaviorSubject<CaseManagementParams | null>(null);\n public readonly params$: Observable<CaseManagementParams | null> = this._params$.asObservable();\n private readonly paramsRequired$ = this._params$.pipe(\n filter((p): p is CaseManagementParams => !!p)\n );\n\n constructor(\n protected override httpClient: HttpClient,\n protected override configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public initParams(...params: any[]): void {\n const serviceParams = params[0] as CaseManagementParams;\n if (!isEqual(serviceParams, this._params$.getValue())) {\n this._params$.next(serviceParams);\n }\n }\n\n public getWidgetConfiguration(): Observable<BasicWidget[]> {\n return this.paramsRequired$.pipe(\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.httpClient\n .get<BasicWidget>(\n this.getApiUrl(\n `management/v1/case-definition/${encodeURIComponent(\n caseDefinitionKey\n )}/version/${encodeURIComponent(caseDefinitionVersionTag)}/header-widget`\n ),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n }\n )\n .pipe(\n map(widget => [widget].filter(Boolean)),\n catchError(err => {\n if (err?.status === 404) return of([] as BasicWidget[]);\n throw err;\n })\n )\n )\n );\n }\n\n public updateWidgetConfiguration(widgets: BasicWidget[]): Observable<BasicWidget[]> {\n const widget = widgets[0];\n return this.paramsRequired$.pipe(\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.httpClient.put<BasicWidget>(\n this.getApiUrl(\n `management/v1/case-definition/${encodeURIComponent(\n caseDefinitionKey\n )}/version/${encodeURIComponent(caseDefinitionVersionTag)}/header-widget`\n ),\n widget\n )\n ),\n map(updated => [updated].filter(Boolean))\n );\n }\n\n public deleteWidget(_: BasicWidget): Observable<void> {\n return this.paramsRequired$.pipe(\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.httpClient.delete<void>(\n this.getApiUrl(\n `management/v1/case-definition/${encodeURIComponent(\n caseDefinitionKey\n )}/version/${encodeURIComponent(caseDefinitionVersionTag)}/header-widget`\n )\n )\n )\n );\n }\n\n public updateWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.paramsRequired$.pipe(\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.httpClient.put<BasicWidget>(\n this.getApiUrl(\n `management/v1/case-definition/${encodeURIComponent(\n caseDefinitionKey\n )}/version/${encodeURIComponent(caseDefinitionVersionTag)}/header-widget`\n ),\n widget\n )\n )\n );\n }\n\n public createWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.paramsRequired$.pipe(\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.httpClient.post<BasicWidget>(\n this.getApiUrl(\n `management/v1/case-definition/${encodeURIComponent(\n caseDefinitionKey\n )}/version/${encodeURIComponent(caseDefinitionVersionTag)}/header-widget`\n ),\n widget\n )\n )\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n IWidgetManagementService,\n ManagementWidgetDetailsComponent,\n WIDGET_MANAGEMENT_SERVICE,\n WidgetManagementComponent,\n WidgetType,\n WidgetWizardService,\n WidgetWizardStep,\n} from '@valtimo/layout';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {Subscription} from 'rxjs';\nimport {CaseHeaderWidgetManagementService} from '../../../../services/case-header-widget-management.service';\n\n@Component({\n standalone: true,\n selector: 'valtimo-case-management-header',\n templateUrl: './case-management-header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, WidgetManagementComponent],\n providers: [\n {\n provide: WIDGET_MANAGEMENT_SERVICE,\n useClass: CaseHeaderWidgetManagementService,\n },\n ],\n})\nexport class CaseManagementHeaderComponent\n extends ManagementWidgetDetailsComponent\n implements OnInit, OnDestroy\n{\n public readonly AVAILABLE_WIDGET_TYPES = [WidgetType.FIELDS];\n public readonly WIDGET_WIZARD_STEPS = [\n WidgetWizardStep.TYPE,\n WidgetWizardStep.CONTENT,\n ];\n\n private readonly _params$ = getCaseManagementRouteParams(this.route);\n private readonly _subscriptions = new Subscription();\n\n constructor(\n protected readonly widgetWizardService: WidgetWizardService,\n @Inject(WIDGET_MANAGEMENT_SERVICE)\n private readonly widgetManagementService: IWidgetManagementService<CaseManagementParams>,\n private readonly route: ActivatedRoute\n ) {\n super(widgetWizardService);\n }\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this._params$.subscribe(params => {\n this.widgetManagementService.initParams(params);\n this.setContext('case');\n this.widgetWizardService.$disableActionButton.set(true);\n this.setTitleDisabled(true);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-management\n [availableWidgetTypes]=\"AVAILABLE_WIDGET_TYPES\"\n [disableDuplicate]=\"true\"\n [enableWidgetDivider]=\"false\"\n [singleWidget]=\"true\"\n [disableJsonEditor]=\"true\"\n [defaultWidth]=\"4\"\n [widgetWizardSteps]=\"WIDGET_WIZARD_STEPS\"\n></valtimo-widget-management>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n startWith,\n Subject,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {DocumentDefinition, DocumentService} from '@valtimo/document';\nimport {EditorModel, PageTitleService} from '@valtimo/components';\n\n@Injectable()\nexport class CaseDetailService implements OnDestroy {\n private readonly _loadingDocumentDefinition$ = new BehaviorSubject<boolean>(true);\n private readonly _previousSelectedCaseDefinitionVersionTag$ = new BehaviorSubject<string | null>(\n null\n );\n private readonly _selectedCaseDefinitionVersionTag$ = new BehaviorSubject<string | null>(null);\n private readonly _selectedCaseDefinitionKey$ = new BehaviorSubject<string>('');\n private readonly _documentDefinition$ = new BehaviorSubject<DocumentDefinition | null>(null);\n private readonly _documentDefinitionModel$: Observable<EditorModel> =\n this.documentDefinition$.pipe(\n map((definition: DocumentDefinition | null) => ({\n value: JSON.stringify(definition?.schema, null, 2),\n language: 'json',\n }))\n );\n private readonly _reloadDocumentDefinition$ = new Subject<void>();\n\n public get selectedCaseDefinitionVersionTag$(): Observable<string | null> {\n return this._selectedCaseDefinitionVersionTag$.pipe(\n filter(version => typeof version === 'string'),\n distinctUntilChanged()\n );\n }\n\n public get previousSelectedCaseDefinitionVersionTag$(): Observable<string | null> {\n return this._previousSelectedCaseDefinitionVersionTag$.asObservable();\n }\n\n public get selectedCaseDefinitionKey$(): Observable<string> {\n return this._selectedCaseDefinitionKey$.pipe(\n filter(name => !!name),\n distinctUntilChanged()\n );\n }\n\n public get selectedDocumentDefinitionIsReadOnly$(): Observable<boolean> {\n return this.documentDefinition$.pipe(\n map(definition => definition?.readOnly ?? false),\n distinctUntilChanged()\n );\n }\n\n public get loadingDocumentDefinition$(): Observable<boolean> {\n return this._loadingDocumentDefinition$.pipe(distinctUntilChanged());\n }\n\n public get documentDefinition$(): Observable<DocumentDefinition | null> {\n return this._documentDefinition$.pipe(\n filter(def => !!def),\n distinctUntilChanged()\n );\n }\n\n public get documentDefinitionModel$(): Observable<EditorModel> {\n return this._documentDefinitionModel$.pipe(distinctUntilChanged());\n }\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly pageTitleService: PageTitleService\n ) {\n this.openDocumentDefinitionSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setSelectedCaseDefinitionVersionTag(versionTag: string): void {\n this._selectedCaseDefinitionVersionTag$.next(versionTag);\n }\n\n public setPreviousSelectedCaseDefinitionVersionTag(versionTag: string | null): void {\n this._previousSelectedCaseDefinitionVersionTag$.next(versionTag);\n }\n\n public setSelectedCaseDefinitionKey(key: string): void {\n this._selectedCaseDefinitionKey$.next(key);\n }\n\n public setLoadingDocumentDefinition(loading: boolean): void {\n this._loadingDocumentDefinition$.next(loading);\n }\n\n public reloadDocumentDefinition(): void {\n this._reloadDocumentDefinition$.next(null);\n }\n\n private openDocumentDefinitionSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.selectedCaseDefinitionVersionTag$,\n this.selectedCaseDefinitionKey$,\n this._reloadDocumentDefinition$.pipe(startWith(null)),\n ])\n .pipe(\n tap(() => {\n this.pageTitleService.setCustomPageTitleSet(false);\n this.setLoadingDocumentDefinition(true);\n }),\n switchMap(([selectedVersionTag, selectedKey]) =>\n this.documentService.getDocumentDefinitionByVersion(selectedKey, selectedVersionTag)\n ),\n tap(res => {\n this._documentDefinition$.next(res);\n this.pageTitleService.setCustomPageTitle(res?.schema?.title || '-', true);\n this.setLoadingDocumentDefinition(false);\n })\n )\n .subscribe()\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService, CaseManagementParams} from '@valtimo/shared';\nimport {ApiTabItem} from '@valtimo/case';\nimport {BehaviorSubject, Observable, of} from 'rxjs';\nimport {catchError, switchMap, take, tap} from 'rxjs/operators';\n\n@Injectable()\nexport class TabManagementService {\n private _valtimoEndpointBase: string;\n private _params!: CaseManagementParams;\n\n public readonly tabs$ = new BehaviorSubject<ApiTabItem[]>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this._valtimoEndpointBase = `${this.configService.config.valtimoApi.endpointUri}management/v1/case-definition`;\n }\n\n public setParams(params: CaseManagementParams): void {\n this._params = params;\n }\n\n private get _caseDefinitionUrl(): string {\n return `${this._valtimoEndpointBase}/${this._params.caseDefinitionKey}/version/${this._params.caseDefinitionVersionTag}`;\n }\n\n public loadTabs(): void {\n this.loading$.next(true);\n this.getTabList()\n .pipe(take(1))\n .subscribe({\n next: (items: ApiTabItem[]) => {\n this.tabs$.next(items);\n this.loading$.next(false);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n\n public dispatchAction(actionResult: Observable<ApiTabItem | ApiTabItem[] | null>): void {\n actionResult\n .pipe(\n tap(() => {\n this.loading$.next(true);\n this.tabs$.next([]);\n }),\n switchMap((result: ApiTabItem | ApiTabItem[] | null) =>\n Array.isArray(result) ? of(result) : this.getTabList()\n ),\n take(1),\n catchError(error => of(error))\n )\n .subscribe({\n next: (tabs: ApiTabItem[]) => {\n this.loading$.next(false);\n this.tabs$.next(tabs);\n },\n error: error => {\n console.log(error);\n },\n });\n }\n\n public addTab(tab: Partial<ApiTabItem>): Observable<ApiTabItem> {\n return this.http.post<ApiTabItem>(`${this._caseDefinitionUrl}/tab`, this.getTabDto(tab));\n }\n\n public deleteTab(tabKey: string): Observable<null> {\n return this.http.delete<null>(`${this._caseDefinitionUrl}/tab/${tabKey}`);\n }\n\n public editTab(tab: Partial<ApiTabItem>, tabKey: string): Observable<ApiTabItem> {\n return this.http.put<ApiTabItem>(\n `${this._caseDefinitionUrl}/tab/${tabKey}`,\n this.getTabDto(tab)\n );\n }\n\n public editTabsOrder(tabList: ApiTabItem[]): Observable<ApiTabItem[]> {\n return this.http.put<ApiTabItem[]>(`${this._caseDefinitionUrl}/tab`, tabList);\n }\n\n public getTab(tabKey: string): Observable<ApiTabItem> {\n return this.http.get<ApiTabItem>(`${this._caseDefinitionUrl}/tab/${tabKey}`);\n }\n\n private getTabList(): Observable<ApiTabItem[]> {\n return this.http.get<ApiTabItem[]>(`${this._caseDefinitionUrl}/tab`);\n }\n\n private getTabDto(tab: Partial<ApiTabItem>): Partial<ApiTabItem> {\n if (tab.name === '') {\n delete tab.name;\n }\n return tab;\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CASE_TAB_TOKEN, CaseTabConfig, DefaultTabs} from '@valtimo/case';\nimport {\n CASE_MANAGEMENT_TAB_TOKEN,\n CaseManagementParams,\n CaseManagementTabConfig,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\nimport {ListItem} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, of, switchMap} from 'rxjs';\nimport {TabEnum} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabService {\n public configuredTabKeys: string[];\n\n private _injectedCaseManagementTabs$ = new BehaviorSubject<CaseManagementTabConfig[]>([]);\n\n public get injectedCaseManagementTabs$(): Observable<CaseManagementTabConfig[]> {\n return this._injectedCaseManagementTabs$.asObservable();\n }\n\n private _currentTab$ = new BehaviorSubject<TabEnum | string>(TabEnum.DOCUMENT);\n public get currentTab$(): Observable<TabEnum | string> {\n return this._currentTab$.asObservable();\n }\n public set currentTab(tab: TabEnum | string) {\n this._currentTab$.next(tab);\n }\n\n private _configuredContentKeys$ = new BehaviorSubject<string[]>([]);\n public get configuredContentKeys$(): Observable<string[]> {\n return this._configuredContentKeys$.asObservable();\n }\n public set configuredContentKeys(value: string[]) {\n this._configuredContentKeys$.next(value);\n }\n\n public readonly customComponentKeys$ = new BehaviorSubject<ListItem[]>(\n !this.caseTabConfig\n ? []\n : Object.keys(this.caseTabConfig).map((contentKey: string) => ({\n contentKey,\n content: contentKey,\n selected: false,\n }))\n );\n\n public readonly defaultTabs$: Observable<ListItem[]> = this.translateService.stream('key').pipe(\n map(() =>\n Object.values(DefaultTabs).map((key: string) => ({\n contentKey: key,\n content: this.translateService.instant(`case.tabs.${key}`),\n selected: false,\n }))\n )\n );\n\n constructor(\n @Optional() @Inject(CASE_TAB_TOKEN) private readonly caseTabConfig: CaseTabConfig,\n @Optional()\n @Inject(CASE_MANAGEMENT_TAB_TOKEN)\n private readonly caseManagementTabConfig: CaseManagementTabConfig[],\n private readonly formService: FormService,\n private readonly translateService: TranslateService\n ) {\n this.setInjectedCaseManagementTabs(this.caseManagementTabConfig);\n }\n\n public getDisabledAddTabs(route: ActivatedRoute): Observable<{\n standard: boolean;\n custom: boolean;\n formIO: boolean;\n widgets: boolean;\n }> {\n return combineLatest([\n this.configuredContentKeys$,\n this.getFormDefinitions(route),\n this.defaultTabs$,\n this.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => ({\n standard: defaultTabs.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n custom:\n !customComponentKeys.length ||\n customComponentKeys.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n formIO:\n !formDefinitions.length ||\n formDefinitions.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n widgets: false,\n }))\n );\n }\n\n public getFormDefinitions(route: ActivatedRoute): Observable<ListItem[]> {\n return getCaseManagementRouteParams(route).pipe(\n switchMap((params: CaseManagementParams) => {\n return this.formService\n .getAllFormDefinitionsForCaseDefinition(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n .pipe(\n map((formDefinitions: FormDefinitionOption[]) => {\n return formDefinitions.map((formDefinition: FormDefinitionOption) => ({\n contentKey: formDefinition.name,\n content: formDefinition.name,\n selected: false,\n }));\n })\n );\n })\n );\n }\n\n private setInjectedCaseManagementTabs(\n caseManagementTabConfig?: CaseManagementTabConfig[] | CaseManagementTabConfig\n ): void {\n if (!caseManagementTabConfig) return;\n const tabs = Array.isArray(caseManagementTabConfig)\n ? caseManagementTabConfig\n : [caseManagementTabConfig];\n\n this._injectedCaseManagementTabs$.next(\n tabs.map(tab => ({...tab, enabled$: tab.enabled$ ?? of(true)}))\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {CaseManagementParams, ConfigService} from '@valtimo/shared';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {BasicWidget, IWidgetManagementService} from '@valtimo/layout';\nimport {CaseWidgetsRes} from '@valtimo/case';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseWidgetManagementApiService\n implements IWidgetManagementService<CaseManagementParams & {key: string}>\n{\n private readonly valtimoEndpointBase: string;\n private _widgetConfigurationCache: BasicWidget[] = [];\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this.valtimoEndpointBase = `${this.configService.config.valtimoApi.endpointUri}management/v1/case-definition`;\n }\n\n public readonly params$: BehaviorSubject<CaseManagementParams & {key: string}> =\n new BehaviorSubject<CaseManagementParams & {key: string}>({\n caseDefinitionKey: '',\n caseDefinitionVersionTag: '',\n key: '',\n });\n\n public initParams(params: CaseManagementParams & {key: string}): void {\n this.params$.next(params);\n }\n public deleteWidget(widget: BasicWidget): Observable<void> {\n return this.updateWidgets(\n this._widgetConfigurationCache.filter(\n (cachedWidget: BasicWidget) => cachedWidget.key !== widget.key\n )\n );\n }\n public updateWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.updateWidgets(\n this._widgetConfigurationCache.map((cachedWidget: BasicWidget) =>\n cachedWidget.key === widget.key ? widget : cachedWidget\n )\n );\n }\n public createWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.updateWidgets([...this._widgetConfigurationCache, widget]);\n }\n\n public getWidgetConfiguration(): Observable<BasicWidget[]> {\n return this.params$.pipe(\n switchMap((params: CaseManagementParams & {key: string}) =>\n this.http.get<any>(\n `${this.valtimoEndpointBase}/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}/widget-tab/${params.key}`\n )\n ),\n map((res: CaseWidgetsRes) => {\n this._widgetConfigurationCache = res.widgets;\n return res.widgets;\n })\n );\n }\n\n public updateWidgetConfiguration(widgets: BasicWidget[]): Observable<BasicWidget[]> {\n return this.updateWidgets(widgets);\n }\n\n private updateWidgets(widgets: BasicWidget[]): Observable<any> {\n return this.params$.pipe(\n switchMap((params: CaseManagementParams & {key: string}) =>\n this.http.post<any>(\n `${this.valtimoEndpointBase}/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}/widget-tab/${params.key}`,\n {...params, widgets}\n )\n )\n );\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {HttpClient, HttpHeaders, HttpResponse} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {\n BaseApiService,\n ConfigService,\n InterceptorSkip,\n InterceptorSkipHeader,\n} from '@valtimo/shared';\nimport {Page} from '@valtimo/document';\nimport {map, Observable, tap} from 'rxjs';\nimport {CaseListItem} from '../models';\nimport {CaseVersionListItem} from '../models/case-version-list.model';\nimport {\n CaseDefinition,\n CaseDefinitionFinalizationCheckResult,\n DraftVersion,\n} from '../models/case-deployment.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseManagementService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getCaseDefinitions(params: any): Observable<Page<CaseListItem>> {\n return this.httpClient.get<Page<CaseListItem>>(\n this.getApiUrl('management/v1/case-definition'),\n {params}\n );\n }\n\n public getCaseDefinitionVersions(caseDefinitionKey: string): Observable<any[]> {\n return this.httpClient.get<any[]>(\n this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version`),\n {\n params: {size: 100},\n }\n );\n }\n\n public createDraftVersion(payload: DraftVersion): Observable<any[]> {\n return this.httpClient.post<any[]>(\n this.getApiUrl(`management/v1/case-definition/draft`),\n payload\n );\n }\n\n public isDraftVersion(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<boolean> {\n return this.httpClient\n .get<CaseDefinition>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`\n ),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '403'),\n }\n )\n .pipe(map(caseDefinition => !caseDefinition.final));\n }\n\n public getGlobalActiveCase(caseDefinitionKey: string): Observable<any> {\n return this.httpClient.get<any[]>(\n this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}`)\n );\n }\n\n public setGlobalActiveCaseVersion(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<any[]> {\n return this.httpClient.post<any[]>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/active`\n ),\n {}\n );\n }\n\n public getAllCaseVersions(params: any): Observable<Page<CaseVersionListItem>> {\n return this.httpClient.get<Page<CaseVersionListItem>>(\n this.getApiUrl(`management/v1/case-definition`),\n {params}\n );\n }\n\n public finalizeDraftCaseVersion(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<any[]> {\n return this.httpClient.post<any[]>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/finalize`\n ),\n {}\n );\n }\n\n public deleteDraftCaseVersion(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<null> {\n return this.httpClient.delete<null>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`\n )\n );\n }\n\n public getCaseDefinition(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<CaseDefinition> {\n return this.httpClient.get<CaseDefinition>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`\n ),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '403'),\n }\n );\n }\n\n public importDocumentDefinitionZip(file: FormData): Observable<HttpResponse<Blob>> {\n return this.httpClient.post<HttpResponse<Blob>>(\n this.getApiUrl(`management/v1/case/import`),\n file\n ).pipe(tap(res => console.log({res})));\n }\n\n public exportDocumentDefinition(\n caseDefinitionKey: string,\n caseDefinitionVersionTag = '0'\n ): Observable<HttpResponse<Blob>> {\n return this.httpClient.get<Blob>(\n this.getApiUrl(\n `management/v1/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/export`\n ),\n {observe: 'response', responseType: 'blob' as 'json', headers: InterceptorSkipHeader}\n );\n }\n\n public getCaseDefinitionFinalizationCheck(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<CaseDefinitionFinalizationCheckResult> {\n return this.httpClient.get<CaseDefinitionFinalizationCheckResult>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/finalizable`\n )\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './case-detail.service';\nexport * from './tab-management.service';\nexport * from './tab.service';\nexport * from './widget-tab-management.service';\nexport * from './case-management.service';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {AbstractControl, FormGroup, FormGroupDirective} from '@angular/forms';\nimport {ApiTabType, DefaultTabs} from '@valtimo/case';\nimport {ListItem} from 'carbon-components-angular';\nimport {combineLatest, map, startWith, Subscription} from 'rxjs';\nimport {TabService} from '../../../../../services';\nimport {ConfigService} from '@valtimo/shared';\nimport {ActivatedRoute} from '@angular/router';\n\n@Component({\n standalone: false,\n selector: 'valtimo-tab-form',\n templateUrl: './tab-form.component.html',\n styleUrls: ['./tab-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabFormComponent implements OnInit, OnDestroy {\n @Input() public tabType: ApiTabType;\n\n public disableTaskListVisibleToggle = signal(false);\n\n public readonly listItems$ = combineLatest([\n this.tabService.configuredContentKeys$,\n this.tabService.getFormDefinitions(this.route),\n this.tabService.defaultTabs$,\n this.tabService.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => {\n switch (this.tabType) {\n case ApiTabType.STANDARD:\n return this.getListItems(defaultTabs, tabKeys);\n case ApiTabType.CUSTOM:\n return this.getListItems(customComponentKeys, tabKeys);\n case ApiTabType.FORMIO:\n return this.getListItems(formDefinitions, tabKeys);\n case ApiTabType.WIDGETS:\n return [];\n }\n }),\n startWith([])\n );\n\n public form!: FormGroup;\n\n public showTasks!: AbstractControl<boolean>;\n\n private _searchActive: boolean;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly configService: ConfigService,\n private readonly tabService: TabService,\n private readonly formGroupDirective: FormGroupDirective,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this.form = this.formGroupDirective.control;\n this.showTasks = this.form.get('showTasks');\n this.openTaskListToggleSubscription();\n\n if (this.tabType == ApiTabType.WIDGETS) {\n this.form.get('contentKey')?.disable();\n } else {\n this.form.get('contentKey')?.enable();\n }\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public isKeyError(): boolean {\n return this.form.get('key')?.hasError('uniqueKey') || this.form.get('key')?.hasError('pattern');\n }\n\n public getKeyErrorMessage(): string {\n if (this.form.get('key')?.hasError('uniqueKey'))\n return 'caseManagement.tabManagement.addModal.uniqueKeyError';\n if (this.form.get('key')?.hasError('pattern'))\n return 'caseManagement.tabManagement.addModal.invalidKeyError';\n return '';\n }\n\n public onSearch(): void {\n if (this._searchActive) {\n return;\n }\n\n this._searchActive = true;\n this.form.get('contentKey')?.reset('');\n }\n\n public onSelected(): void {\n this._searchActive = false;\n }\n\n public toggleCheckedChange(event: boolean): void {\n this.showTasks?.patchValue(!!event);\n }\n\n private openTaskListToggleSubscription(): void {\n this.form.get('contentKey').valueChanges.subscribe(contentKey => {\n const summarySelected = contentKey === DefaultTabs.summary;\n\n if (summarySelected) {\n this.toggleCheckedChange(true);\n this.disableTaskListVisibleToggle.set(true);\n } else {\n this.disableTaskListVisibleToggle.set(false);\n }\n });\n }\n\n private getListItems(tabItems: ListItem[], configuredContentKeys: string[]): ListItem[] {\n return tabItems\n .filter(\n (tabItem: ListItem) =>\n !configuredContentKeys.includes(tabItem.contentKey) ||\n this.form?.get('contentKey')?.value === tabItem.contentKey\n )\n .map((tabItem: ListItem) => ({\n ...tabItem,\n selected: this.form?.get('contentKey')?.value === tabItem.contentKey,\n }));\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form *ngIf=\"form\" [formGroup]=\"form\" class=\"valtimo-tab-form-modal\" [cdsLayer]=\"1\">\n <cds-label>\n {{ 'caseManagement.tabManagement.addModal.tabNameLabel' | translate }}\n\n <input cdsText formControlName=\"name\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label [invalid]=\"!!isKeyError()\" [invalidText]=\"getKeyErrorMessage() | translate\">\n {{ 'caseManagement.tabManagement.addModal.tabKeyLabel' | translate }}\n\n <input\n cdsText\n formControlName=\"key\"\n pattern=\"[a-zA-Z0-9\\-]+\"\n [invalid]=\"!!isKeyError()\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-combo-box\n *ngIf=\"tabType !== 'widgets'\"\n [cdsLayer]=\"1\"\n [dropUp]=\"false\"\n formControlName=\"contentKey\"\n [items]=\"listItems$ | async\"\n itemValueKey=\"contentKey\"\n [label]=\"'caseManagement.tabManagement.contentLabels.' + tabType | translate\"\n (search)=\"onSearch($event)\"\n (selected)=\"onSelected($event)\"\n >\n <cds-dropdown-list [cdsLayer]=\"1\"></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-toggle\n [label]=\"'caseManagement.tabManagement.addModal.visibleTitle' | translate\"\n [onText]=\"'caseManagement.tabManagement.addModal.visible' | translate\"\n [offText]=\"'caseManagement.tabManagement.addModal.invisible' | translate\"\n [checked]=\"showTasks?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n [disabled]=\"disableTaskListVisibleToggle()\"\n ></cds-toggle>\n</form>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {Code16, Development16, TableBuilt16, WatsonHealthPageScroll16} from '@carbon/icons';\nimport {ApiTabItem, ApiTabType, TabSelectItem} from '@valtimo/case';\nimport {CaseManagementParams, ConfigService} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable} from 'rxjs';\nimport {TabService} from '../../../../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-add-tab-modal',\n templateUrl: './case-management-add-tab-modal.component.html',\n styleUrls: ['./case-management-add-tab-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CaseManagementAddTabModalComponent {\n @Input() params: CaseManagementParams;\n @Input() open = false;\n\n @Output() closeModalEvent = new EventEmitter<Partial<ApiTabItem> | null>();\n\n public readonly ApiTabType = ApiTabType;\n\n public readonly tabTypes$: Observable<TabSelectItem[]> = combineLatest([\n this.tabService.getDisabledAddTabs(this.route),\n this.configService.featureToggles$,\n ]).pipe(\n map(([disabled, featureToggles]) => [\n {\n icon: 'development',\n title: 'caseManagement.tabManagement.addModal.standardTab',\n type: ApiTabType.STANDARD,\n disabled: disabled.standard,\n disabledTooltipTranslationKey: 'caseManagement.tabManagement.addModal.standardTabDisabled',\n },\n {\n icon: 'page-scroll',\n title: 'caseManagement.tabManagement.addModal.formIOComponent',\n type: ApiTabType.FORMIO,\n disabled: disabled.formIO,\n disabledTooltipTranslationKey:\n 'caseManagement.tabManagement.addModal.formIOComponentDisabled',\n },\n {\n icon: 'code',\n title: 'caseManagement.tabManagement.addModal.customComponent',\n type: ApiTabType.CUSTOM,\n disabled: disabled.custom,\n disabledTooltipTranslationKey:\n 'caseManagement.tabManagement.addModal.customComponentDisabled',\n },\n {\n icon: 'table--built',\n title: 'caseManagement.tabManagement.addModal.widgetsComponent',\n type: ApiTabType.WIDGETS,\n disabled: disabled.widgets,\n },\n ])\n );\n\n public readonly form = this.fb.group({\n name: this.fb.control(null),\n key: this.fb.control('', [Validators.required, this.uniqueKeyValidator()]),\n contentKey: this.fb.control('', Validators.required),\n showTasks: this.fb.control(false, Validators.required),\n });\n public readonly selectedTabType$ = new BehaviorSubject<ApiTabType | null>(null);\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly tabService: TabService,\n private readonly configService: ConfigService,\n private readonly route: ActivatedRoute\n ) {\n this.iconService.registerAll([Code16, Development16, TableBuilt16, WatsonHealthPageScroll16]);\n }\n\n public addTab(type: ApiTabType): void {\n let {contentKey, key, name, showTasks} = this.form.getRawValue();\n if (!contentKey) {\n contentKey = '-';\n }\n\n if (!key) {\n return;\n }\n this.closeModalEvent.emit({name, key, contentKey, type, showTasks});\n }\n\n public backClick(): void {\n this.resetModal();\n }\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n this.resetModal();\n }\n\n public onTabTypeSelect(type: ApiTabType): void {\n this.selectedTabType$.next(type);\n }\n\n private resetModal(): void {\n this.selectedTabType$.next(null);\n this.form.reset();\n }\n\n private uniqueKeyValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null =>\n this.tabService.configuredTabKeys.every((key: string) => key !== control.value)\n ? null\n : {uniqueKey: {value: control.value}};\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal *ngIf=\"{selectedTabType: selectedTabType$ | async} as obs\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\" [cdsLayer]=\"1\">\n <h3 cdsModalHeaderHeading>\n {{\n !obs.selectedTabType\n ? ('caseManagement.tabManagement.addModal.title'\n | translate: {documentDefinitionName: (params.caseDefinitionKey | titlecase)})\n : ('caseManagement.tabManagement.titles.' + obs.selectedTabType | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent class=\"valtimo-add-tab-modal__content\" [cdsLayer]=\"1\">\n <valtimo-tab-form\n *ngIf=\"obs.selectedTabType; else tabTypeSelection\"\n [tabType]=\"obs.selectedTabType\"\n ></valtimo-tab-form>\n\n <ng-template #tabTypeSelection>\n <span> {{ 'caseManagement.tabManagement.addModal.description' | translate }} </span>\n\n <div *ngIf=\"tabTypes$ | async as tabTypes\" class=\"valtimo-add-tab-modal__types\">\n <cds-tooltip\n *ngFor=\"let tabType of tabTypes\"\n [caret]=\"true\"\n enterDelayMs=\"0\"\n leaveDelayMs=\"0\"\n [description]=\"tabType.disabledTooltipTranslationKey | translate\"\n [disabled]=\"!tabType.disabled\"\n align=\"bottom\"\n >\n <button\n cdsButton=\"secondary\"\n [disabled]=\"tabType.disabled\"\n (click)=\"onTabTypeSelect(tabType.type)\"\n >\n {{ tabType.title | translate }}\n\n <svg [cdsIcon]=\"tabType.icon\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </cds-tooltip>\n </div>\n </ng-template>\n </section>\n\n <cds-modal-footer class=\"valtimo-add-tab-modal__footer\" [cdsLayer]=\"1\">\n <button class=\"valtimo-add-tab-modal__cancel\" cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <div class=\"valtimo-add-tab-modal__actions\" *ngIf=\"obs.selectedTabType\">\n <button cdsButton=\"secondary\" (click)=\"backClick()\">\n {{ 'interface.back' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"addTab(obs.selectedTabType)\">\n {{ 'caseManagement.tabManagement.addModal.addTab' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {ApiTabItem} from '@valtimo/case';\nimport {TabService} from '../../../../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-edit-tab-modal',\n templateUrl: './case-management-edit-tab-modal.component.html',\n})\nexport class CaseManagementEditTabModalComponent {\n @Input() open: boolean;\n\n private _tab: ApiTabItem;\n @Input() public set tab(value: ApiTabItem) {\n if (!value) {\n return;\n }\n\n if (!!this.tabService.configuredContentKeys) {\n this.configuredKeysForEdit = this.tabService.configuredContentKeys.filter(\n (tabKey: string) => tabKey !== value.contentKey\n );\n }\n\n this._tab = value;\n this.form = this.fb.group({\n name: this.fb.control(value.name),\n key: this.fb.control({value: value.key, disabled: true}, Validators.required),\n contentKey: this.fb.control(value.contentKey, Validators.required),\n showTasks: this.fb.control(value.showTasks, Validators.required),\n });\n }\n public get tab(): ApiTabItem {\n return this._tab;\n }\n\n @Output() closeModalEvent = new EventEmitter<ApiTabItem | null>();\n\n public form: FormGroup;\n public configuredKeysForEdit: string[];\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly tabService: TabService\n ) {}\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n }\n\n public editTab(): void {\n const {contentKey, name, showTasks} = this.form.getRawValue();\n\n if (!contentKey) {\n return;\n }\n\n this.closeModalEvent.emit({...this.tab, name, contentKey, showTasks});\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal *ngIf=\"form\" [open]=\"open\" (close)=\"onCloseModal()\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n 'caseManagement.tabManagement.editModal.title'\n | translate: {name: tab?.name ?? 'case.tabs.' + tab.key | translate}\n }}\n </h3>\n </cds-modal-header>\n\n <section\n [formGroup]=\"form\"\n cdsModalContent\n [cdsLayer]=\"1\"\n >\n <valtimo-tab-form\n [configuredContentKeys]=\"configuredKeysForEdit\"\n [tabType]=\"tab?.type\"\n ></valtimo-tab-form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"editTab()\">\n {{ 'caseManagement.tabManagement.editModal.updateTab' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n signal,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ApiTabItem, ApiTabType} from '@valtimo/case';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {\n CaseManagementParams,\n EditPermissionsService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, filter, map, Observable, switchMap, take, tap} from 'rxjs';\nimport {TabManagementService, TabService} from '../../../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-tabs',\n templateUrl: './case-management-tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CaseManagementTabsComponent implements AfterViewInit {\n @ViewChild('tabContentColumn') tabContentColumnTemplate: TemplateRef<any>;\n @ViewChild('tabTypeColumn') tabTypeColumnTemplate: TemplateRef<any>;\n @ViewChild('moveButtonsTemplate') moveButtonsTemplate: TemplateRef<any>;\n\n public readonly caseManagementRouteParams$ = getCaseManagementRouteParams(this.route).pipe(\n tap(params => {\n this.tabManagementService.setParams(params);\n this.tabManagementService.loadTabs();\n })\n );\n\n public actionItems: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.openDeleteConfirmationModal.bind(this),\n type: 'danger',\n },\n ];\n public readonly deleteRowKey$ = new BehaviorSubject<string | null>(null);\n public readonly showDeleteModal$: Observable<boolean> = this.deleteRowKey$.pipe(\n map((key: string | null) => !!key)\n );\n public readonly openEditModal$ = new BehaviorSubject<boolean>(false);\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n public readonly loading$: Observable<boolean> = this.tabManagementService.loading$;\n public readonly openAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly lastItemIndex$ = new BehaviorSubject<number>(-1);\n\n public readonly tabs$: Observable<ApiTabItem[]> = this.tabManagementService.tabs$.pipe(\n tap(tabs => {\n this.tabService.configuredContentKeys = tabs.map((tab: ApiTabItem) => tab.contentKey);\n this.tabService.configuredTabKeys = tabs.map((tab: ApiTabItem) => tab.key);\n this.lastItemIndex$.next(tabs.length - 1);\n this.dragAndDropDisabled.set(false);\n })\n );\n\n public readonly tab$ = new BehaviorSubject<ApiTabItem | null>(null);\n public readonly dragAndDropDisabled = signal(false);\n\n private readonly params$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n\n public readonly hasEditPermissions$: Observable<boolean> = this.params$.pipe(\n switchMap(params =>\n this.editPermissionsService.hasEditPermissions(\n params?.caseDefinitionKey,\n params?.caseDefinitionVersionTag\n )\n )\n );\n\n constructor(\n private readonly cd: ChangeDetectorRef,\n private readonly iconService: IconService,\n private readonly tabManagementService: TabManagementService,\n private readonly tabService: TabService,\n private readonly translateService: TranslateService,\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly editPermissionsService: EditPermissionsService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n this.cd.detectChanges();\n this.setFields();\n }\n\n public isTranslated(key: string): boolean {\n return this.translateService.instant(key) !== key;\n }\n\n public openAddTabModal(): void {\n this.openAddModal$.next(true);\n }\n\n public openEditModal(tab: ApiTabItem): void {\n this.tab$.next(tab);\n this.openEditModal$.next(true);\n }\n\n public onRowClicked(tab: ApiTabItem): void {\n this.hasEditPermissions$\n .pipe(\n filter(hasPermission => hasPermission),\n take(1)\n )\n .subscribe(() => {\n this.tab$.next(tab);\n\n if (tab.type === ApiTabType.WIDGETS) {\n this.router.navigate(['widget-tab', tab.key], {relativeTo: this.route});\n } else {\n this.openEditModal$.next(true);\n }\n });\n }\n\n public onCloseAddModalEvent(tab: ApiTabItem | null): void {\n this.openAddModal$.next(false);\n\n if (!tab) {\n return;\n }\n\n this.addTab(tab);\n }\n\n public onCloseEditModalEvent(tab: ApiTabItem | null): void {\n this.openEditModal$.next(false);\n this.tab$.next(null);\n\n if (!tab) {\n return;\n }\n\n this.editTab(tab);\n }\n\n public openDeleteConfirmationModal(tab: ApiTabItem): void {\n this.deleteRowKey$.next(tab.key);\n }\n\n public onConfirmEvent(tabKey: string): void {\n this.deleteTab(tabKey);\n }\n\n public onItemsReorderedEvent(reorderedItems: ApiTabItem[]): void {\n if (!reorderedItems) return;\n\n this.dragAndDropDisabled.set(true);\n\n this.tabManagementService.dispatchAction(\n this.tabManagementService.editTabsOrder(reorderedItems)\n );\n }\n\n private addTab(tab: Partial<ApiTabItem>): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.addTab(tab));\n }\n\n private deleteTab(tabKey: string): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.deleteTab(tabKey));\n }\n\n private editTab(tab: ApiTabItem): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.editTab(tab, tab.key));\n }\n\n private setFields(): void {\n this.fields$.next([\n {\n key: 'name',\n label: 'caseManagement.tabManagement.columns.name',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'caseManagement.tabManagement.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabTypeColumnTemplate,\n key: '',\n label: 'caseManagement.tabManagement.columns.type',\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabContentColumnTemplate,\n key: '',\n label: 'caseManagement.tabManagement.columns.content',\n },\n {\n viewType: ViewType.BOOLEAN,\n key: 'showTasks',\n label: 'caseManagement.tabManagement.columns.showTasks',\n },\n ]);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n routeParams: caseManagementRouteParams$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n *ngIf=\"{fields: fields$ | async, loading: loading$ | async, tabs: tabs$ | async} as obs\"\n [actionItems]=\"actionItems\"\n [items]=\"obs.tabs\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n (rowClicked)=\"onRowClicked($event)\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"dragAndDropDisabled() || !(hasEditPermissions$ | async)\"\n (itemsReordered)=\"onItemsReorderedEvent($event)\"\n >\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addTabButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addTabButton\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <ng-template #tabTypeColumn let-data=\"data\">\n {{\n isTranslated('caseManagement.tabType.' + data.item.type)\n ? ('caseManagement.tabType.' + data.item.type | translate)\n : data.item.type\n }}\n </ng-template>\n\n <ng-template #tabContentColumn let-data=\"data\">\n {{\n isTranslated('case.tabs.' + data.item.contentKey)\n ? ('case.tabs.' + data.item.contentKey | translate)\n : data.item.contentKey\n }}\n </ng-template>\n\n <ng-template #addTabButton>\n <button cdsButton=\"primary\" *ngIf=\"obs.hasEditPermissions\" (click)=\"openAddTabModal()\">\n {{ 'caseManagement.tabManagement.addModal.addTab' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </ng-template>\n\n <valtimo-case-management-add-tab-modal\n *ngIf=\"openAddModal$ | async\"\n [params]=\"obs.routeParams\"\n [open]=\"openAddModal$ | async\"\n (closeModalEvent)=\"onCloseAddModalEvent($event)\"\n ></valtimo-case-management-add-tab-modal>\n\n <valtimo-case-management-edit-tab-modal\n *ngIf=\"openEditModal$ | async\"\n [tab]=\"tab$ | async\"\n (closeModalEvent)=\"onCloseEditModalEvent($event)\"\n [open]=\"openEditModal$ | async\"\n ></valtimo-case-management-edit-tab-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"caseManagement.tabManagement.deleteModal.description\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"caseManagement.tabManagement.deleteModal.title\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {StatusModalCloseEvent, StatusModalType} from '../../../../../models';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {\n AbstractControl,\n AsyncValidatorFn,\n FormBuilder,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {CaseStatusService, InternalCaseStatus, InternalCaseStatusUtils} from '@valtimo/document';\nimport {IconService, ListItem} from 'carbon-components-angular';\nimport {Edit16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TagColor} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-status-modal',\n templateUrl: './case-management-status-modal.component.html',\n styleUrls: ['./case-management-status-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementStatusModalComponent implements OnInit, OnDestroy {\n @Input() public set type(value: StatusModalType) {\n this._type$.next(value);\n\n if (value === 'closed') {\n setTimeout(() => {\n this._typeAnimationDelay$.next(value);\n }, CARBON_CONSTANTS.modalAnimationMs);\n } else {\n this._typeAnimationDelay$.next(value);\n }\n }\n\n @Input() public set prefill(value: InternalCaseStatus) {\n this._prefillStatus.next(value);\n }\n\n @Input() public usedKeys!: string[];\n @Input() public caseDefinitionKey!: string;\n\n @Output() public closeModalEvent = new EventEmitter<StatusModalCloseEvent>();\n\n private readonly _type$ = new BehaviorSubject<StatusModalType>(undefined);\n private readonly _typeAnimationDelay$ = new BehaviorSubject<StatusModalType>(undefined);\n private readonly _prefillStatus = new BehaviorSubject<InternalCaseStatus>(undefined);\n\n public readonly statusFormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', [\n Validators.required,\n Validators.minLength(3),\n this.uniqueKeyValidator,\n ]),\n retentionPeriodInDays: this.fb.control(-1, [\n Validators.required,\n Validators.pattern(/^(?:-1|0|[1-9]\\d*)$/),\n ]),\n visibleInCaseListByDefault: this.fb.control(true, Validators.required),\n color: this.fb.control('', Validators.required),\n });\n\n private _isEdit!: boolean;\n\n public readonly isEdit$ = combineLatest([this._typeAnimationDelay$, this._prefillStatus]).pipe(\n tap(([type, prefillStatus]) => {\n if (type === 'edit' && prefillStatus) this.prefillForm(prefillStatus);\n }),\n map(([type]) => type === 'edit'),\n tap(isEdit => (this._isEdit = isEdit))\n );\n\n public readonly isAdd$ = this._typeAnimationDelay$.pipe(\n map(type => type === 'add'),\n tap(isAdd => {\n if (isAdd) this.resetForm();\n })\n );\n\n public readonly isClosed$ = this._type$.pipe(map(type => type === 'closed'));\n\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly COLORS: TagColor[] = Object.values(TagColor);\n\n private readonly _selectedColor$ = new BehaviorSubject<TagColor | undefined>(undefined);\n\n public readonly colorListItems$: Observable<ListItem[]> = combineLatest([\n this._selectedColor$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedColor]) =>\n this.COLORS.map(color => ({\n selected: color === selectedColor,\n content: this.translateService.instant(\n 'interface.tagType.' +\n InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color)\n ),\n color,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color),\n }))\n )\n );\n\n public get visibleInCaseListByDefault(): AbstractControl<boolean, boolean> {\n return this.statusFormGroup?.get('visibleInCaseListByDefault');\n }\n\n public get key(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('key');\n }\n\n public get title(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('title');\n }\n\n public get retentionPeriodInDays(): AbstractControl<number, number> {\n return this.statusFormGroup?.get('retentionPeriodInDays');\n }\n\n public get color(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('color');\n }\n\n public get invalid(): boolean {\n return !!this.statusFormGroup?.invalid;\n }\n\n public get pristine(): boolean {\n return !!this.statusFormGroup?.pristine;\n }\n\n public readonly editingKey$ = new BehaviorSubject<boolean>(false);\n\n public readonly showRetentionPeriod$ = new BehaviorSubject<boolean>(false);\n\n public toggleRetentionPeriod(checked: boolean): void {\n this.showRetentionPeriod$.next(checked);\n if (!checked) {\n this.retentionPeriodInDays.setValue(-1);\n this.retentionPeriodInDays.markAsDirty();\n this.statusFormGroup.markAsDirty();\n }\n }\n\n private readonly _originalStatusKey$ = new BehaviorSubject<string>('');\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly caseStatusService: CaseStatusService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.registerAll([Edit16]);\n }\n\n public ngOnInit(): void {\n this.openAutoKeySubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onClose(): void {\n this.close();\n }\n\n public toggleCheckedChange(checked: boolean): void {\n this.statusFormGroup.patchValue({\n visibleInCaseListByDefault: checked,\n });\n this.statusFormGroup.markAsDirty();\n }\n\n public addStatus(): void {\n this.disable();\n\n this.caseStatusService\n .createInternalCaseStatus(this.caseDefinitionKey, this.getFormValue())\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editStatus(): void {\n this.disable();\n\n this._originalStatusKey$\n .pipe(\n take(1),\n switchMap(originalStatusKey =>\n this.caseStatusService.updateInternalCaseStatus(\n this.caseDefinitionKey,\n originalStatusKey,\n this.getFormValue()\n )\n )\n )\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editKeyButtonClick(): void {\n this.editingKey$.next(true);\n }\n\n public colorDropdownChange(event: {\n item: {color: string; content: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const newColor = event?.item?.color as TagColor;\n\n if (newColor) {\n this._selectedColor$.next(newColor);\n this.statusFormGroup.patchValue({color: newColor});\n this.statusFormGroup.markAsDirty();\n }\n }\n\n private prefillForm(prefillStatus: InternalCaseStatus): void {\n const retentionPeriodInDays = prefillStatus.retentionPeriodInDays ?? -1;\n this.showRetentionPeriod$.next(retentionPeriodInDays !== -1);\n this._originalStatusKey$.next(prefillStatus.key);\n this.statusFormGroup.patchValue({\n key: prefillStatus.key,\n title: prefillStatus.title,\n retentionPeriodInDays: retentionPeriodInDays,\n visibleInCaseListByDefault: prefillStatus.visibleInCaseListByDefault,\n color: prefillStatus.color,\n });\n this._selectedColor$.next(prefillStatus.color);\n this.statusFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetForm(): void {\n this.showRetentionPeriod$.next(false);\n this.statusFormGroup.patchValue({\n key: '',\n title: '',\n visibleInCaseListByDefault: true,\n retentionPeriodInDays: -1,\n color: TagColor.Magenta,\n });\n this._selectedColor$.next(TagColor.Blue);\n this.statusFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetEditingKey(): void {\n this.editingKey$.next(false);\n }\n\n private openAutoKeySubscription(): void {\n this._subscriptions.add(\n combineLatest([this.isAdd$, this.title.valueChanges, this.editingKey$]).subscribe(\n ([isAdd, titleValue, editingKey]) => {\n if (isAdd && !editingKey) {\n if (titleValue) {\n this.statusFormGroup.patchValue({key: this.getUniqueKey(titleValue)});\n } else {\n this.clearKey();\n }\n }\n }\n )\n );\n }\n\n private getUniqueKey(title: string): string {\n const dashCaseKey = `${title}`\n .toLowerCase()\n .replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')\n .replace(/_[-_]+/g, '_')\n .replace(/^[^a-z]+/g, '');\n const usedKeys = this.usedKeys;\n\n if (!usedKeys.includes(dashCaseKey)) {\n return dashCaseKey;\n }\n\n return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);\n }\n\n private getUniqueKeyWithNumber(dashCaseKey: string, usedKeys: string[]): string {\n const numbersFromCurrentKey = (dashCaseKey.match(/^\\d+|\\d+\\b|\\d+(?=\\w)/g) || []).map(\n (numberValue: string) => +numberValue\n );\n const lastNumberFromCurrentKey =\n numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];\n const newKey = lastNumberFromCurrentKey\n ? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`\n : `${dashCaseKey}-1`;\n\n if (usedKeys.includes(newKey)) {\n return this.getUniqueKeyWithNumber(newKey, usedKeys);\n }\n\n return newKey;\n }\n\n private clearKey(): void {\n this.statusFormGroup.patchValue({key: ''});\n }\n\n private uniqueKeyValidator(): AsyncValidatorFn {\n return (control: AbstractControl): Observable<ValidationErrors | null> =>\n combineLatest([this.isEdit$, control.valueChanges]).pipe(\n map(([isEdit, keyValue]) =>\n this.usedKeys?.every((key: string) => key !== keyValue) || isEdit\n ? null\n : {uniqueKey: {value: control.value}}\n )\n );\n }\n\n private disable(): void {\n this.disabled$.next(true);\n this.statusFormGroup.disable();\n }\n\n private enable(delay = true): void {\n setTimeout(\n () => {\n this.disabled$.next(false);\n this.statusFormGroup.enable();\n },\n delay ? CARBON_CONSTANTS.modalAnimationMs : 0\n );\n }\n\n private close(): void {\n this.closeModalEvent.emit('close');\n }\n\n private closeAndRefresh(): void {\n this.closeModalEvent.emit('closeAndRefresh');\n }\n\n private getFormValue(): InternalCaseStatus {\n return {\n key: this.key.value,\n title: this.title.value,\n retentionPeriodInDays: this.retentionPeriodInDays.value,\n visibleInCaseListByDefault: this.visibleInCaseListByDefault.value,\n color: this.color.value as TagColor,\n };\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async,\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n (close)=\"onClose()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onClose()\" [cdsLayer]=\"1\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isAdd ? ('caseManagement.statuses.add' | translate) : '' }}\n {{ obs.isEdit ? ('caseManagement.statuses.edit' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"statusForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"dropdown-color-tag\">\n <cds-tag *ngIf=\"item && item.content\" class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n </div>\n</ng-template>\n\n<ng-template #statusForm let-obs=\"obs\">\n <form [formGroup]=\"statusFormGroup\" class=\"status-form\">\n <cds-label>\n {{ 'caseManagement.statuses.columns.title' | translate }}\n\n <input cdsText formControlName=\"title\" data-test-id=\"caseStatusTitleInput\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'caseManagement.statuses.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n data-test-id=\"caseStatusKeyInput\"\n [readOnly]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('caseManagement.statuses.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n data-test-id=\"caseStatusEditKeyButton\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'caseManagement.statuses.columns.color' | translate }}\n\n <cds-dropdown\n [id]=\"'status-color-dropdown'\"\n data-test-id=\"caseStatusColorDropdown\"\n [appendInline]=\"false\"\n [placeholder]=\"'caseManagement.statuses.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-toggle\n data-test-id=\"caseStatusVisibilityToggle\"\n [label]=\"'caseManagement.statuses.visibleTitle' | translate\"\n [onText]=\"'caseManagement.statuses.visible' | translate\"\n [offText]=\"'caseManagement.statuses.invisible' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"visibleInCaseListByDefault?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </div>\n\n <cds-toggle\n [label]=\"'caseManagement.statuses.showRetentionPeriod' | translate\"\n [onText]=\"'interface.yes' | translate\"\n [offText]=\"'interface.no' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"showRetentionPeriod$ | async\"\n (checkedChange)=\"toggleRetentionPeriod($event)\"\n ></cds-toggle>\n\n <cds-label class=\"status-form-retention-period__label\" *ngIf=\"showRetentionPeriod$ | async\">\n <div>\n {{ 'caseManagement.statuses.columns.retentionPeriod' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'caseManagement.statuses.columns.retentionPeriodTooltip' | translate\"\n ></v-tooltip-icon>\n </div>\n\n <input cdsText formControlName=\"retentionPeriodInDays\" />\n </cds-label>\n\n <cds-notification\n class=\"deployment-warning-notification\"\n *ngIf=\"!obs.editingKey && !obs.isAdd\"\n [notificationObj]=\"{\n type: 'warning',\n message:\n ('caseManagement.statuses.retentionPeriodExistingCasesWarning'\n | translate: notificationContent),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-notification>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"ghost\" data-test-id=\"caseStatusCancelButton\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n data-test-id=\"caseStatusAddConfirmButton\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addStatus()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n data-test-id=\"caseStatusSaveButton\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editStatus()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {\n EditPermissionsService,\n EnvironmentService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {CaseStatusService, InternalCaseStatus, InternalCaseStatusUtils} from '@valtimo/document';\nimport {BehaviorSubject, combineLatest, map, Observable, Subject, switchMap, take, tap} from 'rxjs';\nimport {StatusModalCloseEvent, StatusModalType} from '../../../../models';\nimport {CaseManagementService} from '../../../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-statuses',\n templateUrl: './case-management-statuses.component.html',\n styleUrls: ['./case-management-statuses.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementStatusesComponent implements AfterViewInit {\n @ViewChild('colorColumnTemplate') colorColumnTemplate: TemplateRef<any>;\n @ViewChild('retentionPeriodColumnTemplate') retentionPeriodColumnTemplate: TemplateRef<any>;\n\n private readonly _reload$ = new BehaviorSubject<null | 'noAnimation'>(null);\n\n private readonly _params$ = getCaseManagementRouteParams(this.route);\n\n public readonly caseDefinitionKey$ = this._params$.pipe(map(params => params.caseDefinitionKey));\n\n public readonly caseDefinitionVersionTag$ = this._params$.pipe(\n map(params => params.caseDefinitionVersionTag)\n );\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n\n public readonly caseStatuses$ = combineLatest([this.caseDefinitionKey$, this._reload$]).pipe(\n tap(([_, reload]) => {\n if (reload === null) {\n this.loading$.next(true);\n }\n }),\n switchMap(([caseDefinitionKey]) =>\n this.caseStatusService.getInternalCaseStatusesManagement(caseDefinitionKey)\n ),\n map(statuses =>\n statuses.map(status => ({\n ...status,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n }))\n ),\n tap(statuses => {\n this.usedKeys$.next(statuses.map(status => status.key));\n this.loading$.next(false);\n })\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest(\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$\n ).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.editPermissionsService.hasEditPermissions(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly isDraftVersion$: Observable<boolean> = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.isDraftVersion(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.openDeleteModal.bind(this),\n type: 'danger',\n },\n ];\n\n public readonly statusModalType$ = new BehaviorSubject<StatusModalType>('closed');\n public readonly prefillStatus$ = new BehaviorSubject<InternalCaseStatus>(undefined);\n\n public readonly statusToDelete$ = new BehaviorSubject<InternalCaseStatus>(undefined);\n public readonly showDeleteModal$ = new Subject<boolean>();\n\n constructor(\n private readonly caseStatusService: CaseStatusService,\n private readonly route: ActivatedRoute,\n private readonly environmentService: EnvironmentService,\n private readonly editPermissionsService: EditPermissionsService,\n private readonly caseManagementService: CaseManagementService\n ) {}\n\n public ngAfterViewInit(): void {\n this.initFields();\n }\n\n public openDeleteModal(status: InternalCaseStatus): void {\n this.statusToDelete$.next(status);\n this.showDeleteModal$.next(true);\n }\n\n public openEditModal(status: InternalCaseStatus): void {\n this.hasEditPermissions$.pipe(take(1)).subscribe(hasPermission => {\n if (!hasPermission) return;\n\n this.prefillStatus$.next(status);\n this.statusModalType$.next('edit');\n });\n }\n\n public openAddModal(): void {\n this.statusModalType$.next('add');\n }\n\n public closeModal(closeModalEvent: StatusModalCloseEvent): void {\n if (closeModalEvent === 'closeAndRefresh') {\n this.reload();\n }\n\n this.statusModalType$.next('closed');\n }\n\n public confirmDeleteStatus(status: InternalCaseStatus): void {\n this.caseDefinitionKey$\n .pipe(\n switchMap(caseDefinitionKey =>\n this.caseStatusService.deleteInternalCaseStatus(caseDefinitionKey, status.key)\n )\n )\n .subscribe(() => {\n this.reload();\n });\n }\n\n public onItemsReordered(reorderedItems: InternalCaseStatus[]): void {\n if (!reorderedItems) return;\n\n this.caseDefinitionKey$\n .pipe(\n switchMap(caseDefinitionKey =>\n this.caseStatusService.updateInternalCaseStatuses(caseDefinitionKey, reorderedItems)\n )\n )\n .subscribe(() => {\n this.reload(true);\n });\n }\n\n private reload(noAnimation = false): void {\n this._reload$.next(noAnimation ? 'noAnimation' : null);\n }\n\n private initFields(): void {\n this.fields$.next([\n {\n key: 'title',\n label: 'caseManagement.statuses.columns.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'caseManagement.statuses.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'visibleInCaseListByDefault',\n label: 'caseManagement.statuses.columns.visible',\n viewType: ViewType.BOOLEAN,\n },\n {\n key: 'retentionPeriodInDays',\n label: 'caseManagement.statuses.columns.retentionPeriod',\n viewType: ViewType.TEMPLATE,\n template: this.retentionPeriodColumnTemplate,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.colorColumnTemplate,\n key: 'color',\n label: 'caseManagement.statuses.columns.color',\n },\n ]);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{\n loading: loading$ | async,\n caseStatuses: caseStatuses$ | async,\n isDraftVersion: isDraftVersion$ | async,\n } as obs\"\n [items]=\"obs.caseStatuses\"\n [fields]=\"fields$ | async\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"obs.loading || !(hasEditPermissions$ | async)\"\n [actionItems]=\"ACTION_ITEMS\"\n (rowClicked)=\"openEditModal($event)\"\n (itemsReordered)=\"onItemsReordered($event)\"\n>\n <ng-container carbonToolbarContent *ngTemplateOutlet=\"addStatusButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addStatusButton\"\n [description]=\"\n obs.isDraftVersion\n ? ('caseManagement.statuses.noResults.description' | translate)\n : ('caseManagement.statuses.noResultsFinalVersion.description' | translate)\n \"\n [title]=\"'caseManagement.statuses.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-case-management-status-modal\n [type]=\"statusModalType$ | async\"\n [prefill]=\"prefillStatus$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n (closeModalEvent)=\"closeModal($event)\"\n></valtimo-case-management-status-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"caseManagement.statuses.deleteText\"\n [outputOnConfirm]=\"statusToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"confirmDeleteStatus($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #addStatusButton>\n <button\n *ngIf=\"hasEditPermissions$ | async\"\n cdsButton=\"primary\"\n data-test-id=\"caseStatusAddButton\"\n [disabled]=\"loading$ | async\"\n (click)=\"openAddModal()\"\n >\n {{ 'caseManagement.statuses.add' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-template #colorColumnTemplate let-data=\"data\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"data?.item?.tagType\">\n {{ 'interface.tagType.' + data?.item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n\n<ng-template #retentionPeriodColumnTemplate let-data=\"data\">\n @if (data?.item?.retentionPeriodInDays === 0) {\n {{ 'caseManagement.statuses.columns.deletedImmediately' | translate }}\n } @else if (data?.item?.retentionPeriodInDays === -1 ) {\n {{ '-' }}\n } @else {\n {{ data?.item?.retentionPeriodInDays }}\n }\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {StatusModalCloseEvent, StatusModalType} from '../../../../../models';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, switchMap, take} from 'rxjs';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {\n AbstractControl,\n AsyncValidatorFn,\n FormBuilder,\n FormControl,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {CaseTag, CaseTagService, CaseTagsUtils} from '@valtimo/document';\nimport {IconService, ListItem} from 'carbon-components-angular';\nimport {Edit16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TagColor} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-tags-modal',\n templateUrl: './case-management-tags-modal.component.html',\n styleUrls: ['./case-management-tags-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementTagsModalComponent implements OnInit, OnDestroy {\n @Input() public set type(value: StatusModalType) {\n this._type$.next(value);\n\n if (value === 'closed') {\n setTimeout(() => {\n this._typeAnimationDelay$.next(value);\n }, CARBON_CONSTANTS.modalAnimationMs);\n } else {\n this._typeAnimationDelay$.next(value);\n }\n }\n\n @Input() public set prefill(value: CaseTag) {\n this._prefillCaseTag.next(value);\n }\n\n @Input() public usedKeys!: string[];\n @Input() public caseDefinitionKey!: string;\n @Input() public caseDefinitionVersionTag!: string;\n\n @Output() public closeModalEvent = new EventEmitter<StatusModalCloseEvent>();\n\n private readonly _type$ = new BehaviorSubject<StatusModalType | undefined>(undefined);\n private readonly _typeAnimationDelay$ = new BehaviorSubject<StatusModalType | undefined>(\n undefined\n );\n private readonly _prefillCaseTag = new BehaviorSubject<CaseTag | undefined>(undefined);\n\n public readonly caseTagFormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', [\n Validators.required,\n Validators.minLength(3),\n this.uniqueKeyValidator,\n ]),\n color: this.fb.control('', Validators.required),\n });\n\n public readonly isEdit$ = combineLatest([this._typeAnimationDelay$, this._prefillCaseTag]).pipe(\n map(([type, prefillCaseTag]) => {\n if (type === 'edit' && prefillCaseTag) {\n this.prefillForm(prefillCaseTag);\n }\n return type === 'edit';\n })\n );\n\n public readonly isAdd$ = this._typeAnimationDelay$.pipe(\n map(type => {\n if (type === 'add') this.resetForm();\n return type === 'add';\n })\n );\n\n public readonly isClosed$ = this._type$.pipe(map(type => type === 'closed'));\n\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly COLORS: TagColor[] = Object.values(TagColor);\n private readonly _selectedColor$ = new BehaviorSubject<TagColor | undefined>(undefined);\n\n public readonly colorListItems$: Observable<ListItem[]> = combineLatest([\n this._selectedColor$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedColor]) =>\n this.COLORS.map(color => ({\n selected: color === selectedColor,\n content: this.translateService.instant(\n 'interface.tagType.' + CaseTagsUtils.getTagTypeFromCaseTagColor(color)\n ),\n color,\n tagType: CaseTagsUtils.getTagTypeFromCaseTagColor(color),\n }))\n )\n );\n\n public get key(): AbstractControl<string | null, string | null> {\n return this.caseTagFormGroup?.get('key') ?? new FormControl('');\n }\n\n public get title(): AbstractControl<string | null, string | null> {\n return this.caseTagFormGroup?.get('title') ?? new FormControl('');\n }\n\n public get color(): AbstractControl<string | null, string | null> {\n return this.caseTagFormGroup?.get('color') ?? new FormControl('');\n }\n\n public get invalid(): boolean {\n return !!this.caseTagFormGroup?.invalid;\n }\n\n public get pristine(): boolean {\n return !!this.caseTagFormGroup?.pristine;\n }\n\n public readonly editingKey$ = new BehaviorSubject<boolean>(false);\n\n private readonly _originalCaseTagKey$ = new BehaviorSubject<string>('');\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService,\n private readonly caseTagService: CaseTagService\n ) {\n this.iconService.registerAll([Edit16]);\n }\n\n public ngOnInit(): void {\n this.openAutoKeySubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public addCaseTag(): void {\n this.disable();\n this.caseTagService\n .saveCaseTag(this.caseDefinitionKey, this.caseDefinitionVersionTag, this.getFormValue())\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editCaseTag(): void {\n this.disable();\n\n this._originalCaseTagKey$\n .pipe(\n take(1),\n switchMap(originalCaseTagKey => {\n return this.caseTagService.updateCaseTag(\n this.caseDefinitionKey,\n this.caseDefinitionVersionTag,\n originalCaseTagKey,\n this.getFormValue()\n );\n })\n )\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editKeyButtonClick(): void {\n this.editingKey$.next(true);\n }\n\n public colorDropdownChange(event: {\n item: {color: string; content: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const newColor = event?.item?.color as TagColor;\n\n if (newColor) {\n this._selectedColor$.next(newColor);\n this.caseTagFormGroup.patchValue({color: newColor});\n this.caseTagFormGroup.markAsDirty();\n }\n }\n\n public close(): void {\n this.closeModalEvent.emit('close');\n }\n\n private prefillForm(prefillCaseTag: CaseTag): void {\n this._originalCaseTagKey$.next(prefillCaseTag.key);\n this.caseTagFormGroup.patchValue({\n key: prefillCaseTag.key,\n title: prefillCaseTag.title,\n color: prefillCaseTag.color,\n });\n this._selectedColor$.next(prefillCaseTag.color);\n this.caseTagFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetForm(): void {\n this.caseTagFormGroup.patchValue({\n key: '',\n title: '',\n color: TagColor.Blue,\n });\n this._selectedColor$.next(TagColor.Blue);\n this.caseTagFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetEditingKey(): void {\n this.editingKey$.next(false);\n }\n\n private openAutoKeySubscription(): void {\n this._subscriptions.add(\n combineLatest([this.isAdd$, this.title.valueChanges, this.editingKey$]).subscribe(\n ([isAdd, titleValue, editingKey]) => {\n if (isAdd && !editingKey) {\n if (titleValue) {\n this.caseTagFormGroup.patchValue({key: this.getUniqueKey(titleValue)});\n } else {\n this.clearKey();\n }\n }\n }\n )\n );\n }\n\n private getUniqueKey(title: string): string {\n const dashCaseKey = `${title}`\n .toLowerCase()\n .replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')\n .replace(/_[-_]+/g, '_')\n .replace(/^[^a-z]+/g, '');\n const usedKeys = this.usedKeys;\n\n if (!usedKeys.includes(dashCaseKey)) {\n return dashCaseKey;\n }\n\n return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);\n }\n\n private getUniqueKeyWithNumber(dashCaseKey: string, usedKeys: string[]): string {\n const numbersFromCurrentKey = (dashCaseKey.match(/^\\d+|\\d+\\b|\\d+(?=\\w)/g) || []).map(\n (numberValue: string) => +numberValue\n );\n const lastNumberFromCurrentKey =\n numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];\n const newKey = lastNumberFromCurrentKey\n ? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`\n : `${dashCaseKey}-1`;\n\n if (usedKeys.includes(newKey)) {\n return this.getUniqueKeyWithNumber(newKey, usedKeys);\n }\n\n return newKey;\n }\n\n private clearKey(): void {\n this.caseTagFormGroup.patchValue({key: ''});\n }\n\n private uniqueKeyValidator(): AsyncValidatorFn {\n return (control: AbstractControl): Observable<ValidationErrors | null> =>\n combineLatest([this.isEdit$, control.valueChanges]).pipe(\n map(([isEdit, keyValue]) =>\n this.usedKeys?.every((key: string) => key !== keyValue) || isEdit\n ? null\n : {uniqueKey: {value: control.value}}\n )\n );\n }\n\n private disable(): void {\n this.disabled$.next(true);\n this.caseTagFormGroup.disable();\n }\n\n private enable(delay = true): void {\n setTimeout(\n () => {\n this.disabled$.next(false);\n this.caseTagFormGroup.enable();\n },\n delay ? CARBON_CONSTANTS.modalAnimationMs : 0\n );\n }\n\n private closeAndRefresh(): void {\n this.closeModalEvent.emit('closeAndRefresh');\n }\n\n private getFormValue(): CaseTag {\n return {\n key: this.key.value,\n title: this.title.value,\n color: this.color.value as TagColor,\n };\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async,\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"close()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isEdit ? ('caseManagement.caseTags.edit' | translate) : '' }}\n {{ obs.isAdd ? ('caseManagement.caseTags.add' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <form [formGroup]=\"caseTagFormGroup\" class=\"case-tag-form\">\n <cds-label>\n {{ 'caseManagement.caseTags.columns.title' | translate }}\n <input cdsText formControlName=\"title\" data-test-id=\"caseTagTitleInput\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'caseManagement.caseTags.columns.key' | translate }}\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n data-test-id=\"caseTagKeyInput\"\n [readOnly]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('caseManagement.caseTags.keyAutoGenerated' | translate)\n : ''\n \"\n />\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n data-test-id=\"caseTagEditKeyButton\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'caseManagement.caseTags.columns.color' | translate }}\n <cds-dropdown\n id=\"status-color-dropdown\"\n data-test-id=\"caseTagColorDropdown\"\n [appendInline]=\"false\"\n [placeholder]=\"'caseManagement.caseTags.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list\n [items]=\"colorListItems$\"\n [listTpl]=\"colorDropdownItemTemplate\"\n ></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" data-test-id=\"caseTagCancelButton\" (click)=\"close()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n data-test-id=\"caseTagAddConfirmButton\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addCaseTag()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n data-test-id=\"caseTagSaveButton\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editCaseTag()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <cds-tag\n *ngIf=\"item && item.content\"\n class=\"cds-tag--no-margin case-tag-margins\"\n [type]=\"item?.tagType\"\n >\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {EditPermissionsService, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {CaseTag, CaseTagService, CaseTagsUtils} from '@valtimo/document';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n Subject,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {StatusModalCloseEvent, StatusModalType} from '../../../../models';\nimport {CaseManagementService} from '../../../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-tags',\n templateUrl: './case-management-tags.component.html',\n styleUrls: ['./case-management-tags.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementTagsComponent implements AfterViewInit, OnDestroy {\n @ViewChild('colorColumnTemplate') colorColumnTemplate: TemplateRef<any>;\n\n private readonly _reload$ = new BehaviorSubject<null | 'noAnimation'>(null);\n\n private readonly _params$ = getCaseManagementRouteParams(this.route);\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly caseDefinitionKey$ = this._params$.pipe(map(p => p.caseDefinitionKey));\n public readonly caseDefinitionVersionTag$ = this._params$.pipe(\n map(p => p.caseDefinitionVersionTag)\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest(\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$\n ).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.editPermissionsService.hasEditPermissions(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n\n private readonly _subscriptions = new Subscription();\n\n public readonly caseTags$ = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n this._reload$,\n ]).pipe(\n tap(([_, __, reload]) => {\n if (reload === null) {\n this.loading$.next(true);\n }\n }),\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseTagService.getCaseTagsManagement(caseDefinitionKey, caseDefinitionVersionTag)\n ),\n map(caseTags =>\n caseTags.map(caseTag => ({\n ...caseTag,\n tagType: CaseTagsUtils.getTagTypeFromCaseTagColor(caseTag.color),\n }))\n ),\n tap(caseTags => {\n this.usedKeys$.next(caseTags.map(caseTag => caseTag.key));\n this.loading$.next(false);\n })\n );\n\n public readonly isDraftVersion$: Observable<boolean> = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.isDraftVersion(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.openDeleteModal.bind(this),\n type: 'danger',\n },\n ];\n\n public readonly statusModalType$ = new BehaviorSubject<StatusModalType>('closed');\n public readonly prefillCaseTag$ = new BehaviorSubject<CaseTag | undefined>(undefined);\n\n public readonly caseTagToDelete$ = new BehaviorSubject<CaseTag | undefined>(undefined);\n public readonly showDeleteModal$ = new Subject<boolean>();\n\n constructor(\n private readonly caseTagService: CaseTagService,\n private readonly route: ActivatedRoute,\n private readonly editPermissionsService: EditPermissionsService,\n private readonly caseManagementService: CaseManagementService\n ) {}\n\n public ngAfterViewInit(): void {\n this.initFields();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public openDeleteModal(caseTag: CaseTag): void {\n this.caseTagToDelete$.next(caseTag);\n this.showDeleteModal$.next(true);\n }\n\n public openEditModal(caseTag: CaseTag): void {\n this.hasEditPermissions$.pipe(filter(hasPermission => hasPermission)).subscribe(() => {\n this.prefillCaseTag$.next(caseTag);\n this.statusModalType$.next('edit');\n });\n }\n\n public openAddModal(): void {\n this.statusModalType$.next('add');\n }\n\n public closeModal(closeModalEvent: StatusModalCloseEvent): void {\n if (closeModalEvent === 'closeAndRefresh') {\n this.reload();\n }\n\n this.statusModalType$.next('closed');\n }\n\n public confirmDeleteCaseTag(caseTag: CaseTag): void {\n this._subscriptions.add(\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$])\n .pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseTagService.deleteCaseTag(\n caseDefinitionKey,\n caseDefinitionVersionTag,\n caseTag.key\n )\n )\n )\n .subscribe(() => {\n this.reload();\n })\n );\n }\n\n public onItemsReorderedEvent(reorderedItems: CaseTag[]): void {\n if (!reorderedItems) return;\n\n this.hasEditPermissions$\n .pipe(\n filter(hasPermission => hasPermission),\n switchMap(() =>\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$]).pipe(take(1))\n ),\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseTagService.updateCaseTags(\n caseDefinitionKey,\n caseDefinitionVersionTag,\n reorderedItems\n )\n )\n )\n .subscribe(() => {\n this.reload(true);\n });\n }\n\n private reload(noAnimation = false): void {\n this._reload$.next(noAnimation ? 'noAnimation' : null);\n }\n\n private initFields(): void {\n this.fields$.next([\n {\n key: 'title',\n label: 'caseManagement.caseTags.columns.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'caseManagement.caseTags.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.colorColumnTemplate,\n key: 'color',\n label: 'caseManagement.caseTags.columns.color',\n },\n ]);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{\n loading: loading$ | async,\n caseTags: caseTags$ | async,\n fields: fields$ | async,\n isDraftVersion: isDraftVersion$ | async,\n } as obs\"\n [items]=\"obs.caseTags\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n [actionItems]=\"ACTION_ITEMS\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"!(hasEditPermissions$ | async)\"\n (itemsReordered)=\"onItemsReorderedEvent($event)\"\n (rowClicked)=\"openEditModal($event)\"\n>\n <ng-container carbonToolbarContent *ngTemplateOutlet=\"addTagButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addTagButton\"\n [description]=\"\n obs.isDraftVersion\n ? ('caseManagement.caseTags.noResults.description' | translate)\n : ('caseManagement.caseTags.noResultsFinalVersion.description' | translate)\n \"\n [title]=\"'caseManagement.caseTags.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-case-management-tags-modal\n [type]=\"statusModalType$ | async\"\n [prefill]=\"prefillCaseTag$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [caseDefinitionVersionTag]=\"caseDefinitionVersionTag$ | async\"\n (closeModalEvent)=\"closeModal($event)\"\n></valtimo-case-management-tags-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"caseManagement.caseTags.deleteText\"\n [outputOnConfirm]=\"caseTagToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"confirmDeleteCaseTag($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #addTagButton>\n <button\n *ngIf=\"hasEditPermissions$ | async\"\n cdsButton=\"primary\"\n data-test-id=\"caseTagAddButton\"\n [disabled]=\"loading$ | async\"\n (click)=\"openAddModal()\"\n >\n {{ 'caseManagement.caseTags.add' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-template #colorColumnTemplate let-data=\"data\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"data?.item?.tagType\">\n {{ 'interface.tagType.' + data?.item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n CaseManagementParams,\n DraftVersionService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {BehaviorSubject, Observable, of, switchMap} from 'rxjs';\nimport {TabEnum} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './case-management-case-detail.component.html',\n styleUrl: './case-management-case-detail.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementCaseDetailComponent {\n public readonly isDraftVersion$: Observable<boolean> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n switchMap((params: CaseManagementParams | undefined) =>\n !params\n ? of(false)\n : this.draftVersionService.isDraftVersion(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n )\n );\n public readonly currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.TABS);\n public readonly TabEnum = TabEnum;\n\n constructor(\n private readonly draftVersionService: DraftVersionService,\n private readonly route: ActivatedRoute\n ) {}\n\n public switchTab(tab: TabEnum): void {\n this.currentTab$.next(tab);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@if (currentTab$ | async; as currentTab) {\n <valtimo-case-management-draft-warning\n *ngIf=\"(isDraftVersion$ | async) === true && currentTab === TabEnum.STATUSES\"\n [name]=\"'caseManagement.tabs.caseDetailsTab.statuses' | translate | lowercase\"\n ></valtimo-case-management-draft-warning>\n\n <cds-tabs class=\"case-management-tabs\" type=\"contained\">\n <cds-tab\n [active]=\"currentTab === TabEnum.TABS\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.tabs' | translate\"\n (selected)=\"switchTab(TabEnum.TABS)\"\n >\n <valtimo-case-management-tabs\n *ngIf=\"currentTab === TabEnum.TABS\"\n ></valtimo-case-management-tabs>\n </cds-tab>\n\n <cds-tab\n [active]=\"currentTab === TabEnum.STATUSES\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.statuses' | translate\"\n (selected)=\"switchTab(TabEnum.STATUSES)\"\n >\n <valtimo-case-management-statuses\n *ngIf=\"currentTab === TabEnum.STATUSES\"\n ></valtimo-case-management-statuses>\n </cds-tab>\n\n <cds-tab\n [active]=\"currentTab === TabEnum.TAGS\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.tags' | translate\"\n (selected)=\"switchTab(TabEnum.TAGS)\"\n >\n <valtimo-case-management-tags\n *ngIf=\"currentTab === TabEnum.TAGS\"\n ></valtimo-case-management-tags>\n </cds-tab>\n\n <cds-tab\n [active]=\"currentTab === TabEnum.HEADER\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.header' | translate\"\n (selected)=\"switchTab(TabEnum.HEADER)\"\n >\n <valtimo-case-management-header\n *ngIf=\"currentTab === TabEnum.HEADER\"\n ></valtimo-case-management-header>\n </cds-tab>\n </cds-tabs>\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n computed,\n signal,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Code16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CARBON_CONSTANTS,\n ColumnConfig,\n EditorModel,\n MultiInputOutput,\n MultiInputValues,\n SelectItem,\n TableColumn,\n ValuePathSelectorPrefix,\n ViewType,\n} from '@valtimo/components';\nimport {\n EditPermissionsService,\n SearchField,\n SearchFieldDataType,\n SearchFieldFieldType,\n SearchFieldMatchType,\n} from '@valtimo/shared';\nimport {DocumentService} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {v4 as uuidv4} from 'uuid';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-search-fields',\n templateUrl: './case-management-search-fields.component.html',\n styleUrls: ['./case-management-search-fields.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementSearchFieldsComponent implements OnInit, OnDestroy, AfterViewInit {\n public readonly downloadName$ = new BehaviorSubject<string>('');\n public readonly downloadUrl$ = new BehaviorSubject<string | undefined>(undefined);\n public readonly disableInput$ = new BehaviorSubject<boolean>(false);\n public readonly showActionItems$ = new BehaviorSubject<boolean>(false);\n public readonly selectedSearchField$ = new BehaviorSubject<SearchField | undefined>(undefined);\n public readonly selectedDeleteSearchField$ = new BehaviorSubject<SearchField | undefined>(\n undefined\n );\n public readonly formData$ = new BehaviorSubject<SearchField | null>(null);\n public readonly valid$ = new BehaviorSubject<boolean>(false);\n public readonly showFields$ = new BehaviorSubject<boolean>(false);\n public readonly modalShowing$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly jsonEditorActive = signal<boolean>(false);\n public readonly buttonTheme = computed(() => (this.jsonEditorActive() ? 'primary' : 'ghost'));\n\n private _subscriptions = new Subscription();\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.showEditModal.bind(this),\n type: 'normal',\n },\n {\n callback: this.showDeleteModal.bind(this),\n label: 'interface.delete',\n type: 'danger',\n },\n ];\n\n public readonly fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'title',\n label: 'searchFieldsOverview.title',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'key',\n label: 'searchFieldsOverview.key',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'path',\n label: 'searchFieldsOverview.path',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'dataType',\n label: 'searchFieldsOverview.dataType',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'fieldType',\n label: 'searchFieldsOverview.fieldType',\n },\n ];\n\n public readonly dropdownColumns$ = new BehaviorSubject<Array<TableColumn>>([\n {\n labelTranslationKey: 'searchFieldsOverview.id',\n dataKey: 'key',\n },\n {\n labelTranslationKey: 'searchFieldsOverview.text',\n dataKey: 'value',\n },\n ]);\n\n private readonly DATA_TYPES: Array<SearchFieldDataType> = [\n 'text',\n 'number',\n 'date',\n 'datetime',\n 'boolean',\n ];\n\n public readonly dataTypeItems$: Observable<Array<SelectItem>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.DATA_TYPES.map(dataType => ({\n id: dataType,\n text: this.translateService.instant(`searchFields.${dataType}`),\n }))\n )\n );\n\n public readonly dataTypeIsBoolean$ = new BehaviorSubject<boolean>(false);\n private readonly dataTypeIsText$ = new BehaviorSubject<boolean>(false);\n private readonly ALL_FIELD_TYPES: Array<SearchFieldFieldType> = [\n 'single',\n 'range',\n 'single-select-dropdown',\n 'multi-select-dropdown',\n ];\n private readonly NON_TEXT_FIELD_TYPES: Array<SearchFieldFieldType> = ['single', 'range'];\n private readonly BOOLEAN_FIELD_TYPES: Array<SearchFieldFieldType> = ['single'];\n public readonly fieldTypeItems$: Observable<Array<SelectItem>> = combineLatest([\n this.dataTypeIsBoolean$,\n this.dataTypeIsText$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeIsBoolean, dataTypeIsText]) => {\n if (dataTypeIsBoolean) {\n return this.BOOLEAN_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n } else if (!dataTypeIsText) {\n return this.NON_TEXT_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n }\n\n return this.ALL_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n })\n );\n\n private readonly MATCH_TYPES: Array<SearchFieldMatchType> = ['exact', 'like'];\n public readonly matchTypeItems$: Observable<Array<SelectItem>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.MATCH_TYPES.map(matchType => ({\n id: matchType,\n text: this.translateService.instant(`searchFieldsOverview.${matchType}`),\n }))\n )\n );\n\n private _caseDefinitionKey: string;\n\n public readonly caseDefinitionKey$: Observable<string> = this.route.parent.params.pipe(\n map(params => params.caseDefinitionKey || ''),\n filter(caseDefinitionKey => !!caseDefinitionKey),\n tap((caseDefinitionKey: string) => (this._caseDefinitionKey = caseDefinitionKey))\n );\n\n public readonly caseDefinitionVersionTag$: Observable<string> = this.route.parent.params.pipe(\n map(params => params.caseDefinitionVersionTag || ''),\n filter(caseDefinitionVersionTag => !!caseDefinitionVersionTag)\n );\n\n private cachedSearchFields!: Array<SearchField>;\n\n public searchFieldActionTypeIsAdd: boolean;\n\n private readonly refreshSearchFields$ = new BehaviorSubject<null>(null);\n\n private readonly searchFields$: Observable<Array<SearchField>> = combineLatest([\n this.caseDefinitionKey$,\n this.refreshSearchFields$,\n ]).pipe(\n switchMap(([caseDefinitionKey]) =>\n this.documentService.getDocumentSearchFields(caseDefinitionKey)\n ),\n tap(searchFields => {\n this.caseDefinitionKey$.pipe(take(1)).subscribe(caseDefinitionKey => {\n if (searchFields && Array.isArray(searchFields) && searchFields?.length > 0) {\n this.setDownload(caseDefinitionKey, searchFields);\n }\n });\n }),\n tap(searchFields => {\n this.cachedSearchFields = searchFields;\n })\n );\n\n private _cachedSearchFieldsWithUuid: SearchField[] = [];\n\n public readonly jsonEditorModel$: Observable<EditorModel> = this.searchFields$.pipe(\n map((searchFields: SearchField[]) => ({\n value: JSON.stringify(searchFields),\n language: 'json',\n }))\n );\n\n public readonly translatedSearchFields$: Observable<Array<SearchField>> = combineLatest([\n this.searchFields$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([searchFields]) => {\n const searchFieldsWithUuid = searchFields.map(field => ({...field, uuid: uuidv4()}));\n\n this._cachedSearchFieldsWithUuid = searchFieldsWithUuid;\n\n return searchFieldsWithUuid.map(searchField => ({\n ...searchField,\n title: searchField.title ? searchField.title : '',\n dataType: this.translateService.instant(`searchFields.${searchField.dataType}`),\n matchType: this.translateService.instant(`searchFieldsOverview.${searchField.matchType}`),\n fieldType: this.translateService.instant(`searchFieldsOverview.${searchField.fieldType}`),\n }));\n })\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.editPermissionsService.hasEditPermissions(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly fieldTypeIsDropdown$ = new BehaviorSubject<boolean>(false);\n\n public readonly dropdownDataProviderNames$: Observable<Array<SelectItem>> = combineLatest([\n this.documentService.getDropdownDataProviders(),\n this.translateService.stream('key'),\n ]).pipe(\n map(([providers]) =>\n providers.map(provider => ({\n id: provider,\n text: this.translateService.instant(`searchFieldsOverview.${provider}`),\n }))\n )\n );\n\n private readonly modifiedDropdownValues$ = new BehaviorSubject<MultiInputValues>([]);\n\n public readonly initialDropdownValues$: Observable<MultiInputValues> = combineLatest([\n this.caseDefinitionKey$,\n this.formData$,\n ]).pipe(\n distinctUntilChanged(\n ([prevCaseDefinitionKey, prevFormData], [currCaseDefinitionKey, currFormData]) =>\n prevCaseDefinitionKey === currCaseDefinitionKey &&\n prevFormData?.dropdownDataProvider === currFormData?.dropdownDataProvider &&\n prevFormData?.key === currFormData?.key\n ),\n switchMap(([caseDefinitionKey, formData]) => {\n if (!formData || !formData.dropdownDataProvider) {\n return of([]);\n }\n\n return this.documentService\n .getDropdownData(formData.dropdownDataProvider, caseDefinitionKey, formData.key)\n .pipe(\n map(dropdownData =>\n dropdownData\n ? Object.keys(dropdownData).map(dropdownFieldKey => ({\n key: dropdownFieldKey,\n value: dropdownData[dropdownFieldKey],\n }))\n : []\n )\n );\n })\n );\n\n public readonly showMatchTypes$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n ]).pipe(map(([dataTypeIsText, fieldTypeIsDropdown]) => dataTypeIsText && !fieldTypeIsDropdown));\n\n public readonly showReadonlyDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n !!formData?.dropdownDataProvider &&\n !this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n public readonly showInputDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n !!formData?.dropdownDataProvider &&\n this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n public readonly CARBON_THEME = 'white';\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly iconService: IconService,\n private readonly editPermissionsService: EditPermissionsService\n ) {\n this.iconService.registerAll([Code16]);\n }\n\n public ngOnInit(): void {\n this.openSelectedSearchFieldSubscription();\n }\n\n public ngAfterViewInit(): void {\n this.openModalShowingSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public searchFieldClicked(searchField: SearchField, searchFieldActionTypeIsAdd: boolean): void {\n combineLatest([this.disableInput$, this.hasEditPermissions$])\n .pipe(\n take(1),\n filter(([inputDisabled, hasPermission]) => !inputDisabled && hasPermission)\n )\n .subscribe(() => {\n this.searchFieldActionTypeIsAdd = searchFieldActionTypeIsAdd;\n const searchFieldToSelect = this.cachedSearchFields.find(\n field => field.key === searchField.key\n );\n this.selectedSearchField$.next(searchFieldToSelect || ({} as SearchField));\n this.showModal();\n });\n }\n\n public formValueChange(data: SearchField): void {\n setTimeout(() => {\n this.nextIfChanged(this.dataTypeIsText$, data.dataType === 'text');\n this.nextIfChanged(this.dataTypeIsBoolean$, data.dataType === 'boolean');\n this.nextIfChanged(this.fieldTypeIsDropdown$, this.isFieldTypeDropdown(data.fieldType));\n this.nextIfChanged(this.formData$, data);\n this.nextIfChanged(this.valid$, this.isValid(data));\n }, 0);\n }\n\n public pathValueChange(path: string): void {\n this.formData$.pipe(take(1)).subscribe(currentData => {\n const newData = {...currentData, path};\n this.nextIfChanged(this.formData$, newData);\n this.nextIfChanged(this.valid$, this.isValid(newData));\n });\n }\n\n public dropdownDatalistChange(data: MultiInputOutput): void {\n this.modifiedDropdownValues$.next(data as MultiInputValues);\n }\n\n public onItemsReordered(caseDefinitionKey: string, items: SearchField[]): void {\n if (!items || !caseDefinitionKey) return;\n\n const unformattedSearchFields = items.map(searchField =>\n this._cachedSearchFieldsWithUuid.find(cachedField => cachedField.uuid === searchField.uuid)\n );\n\n this.updateSearchFields(caseDefinitionKey, unformattedSearchFields);\n }\n\n public onDeleteSelectedSearchFieldConfirm(selectedSearchField: SearchField): void {\n this.disableInput();\n\n if (this.dropdownDataProviderSupportsUpdates(selectedSearchField?.dropdownDataProvider)) {\n this.documentService\n .deleteDropdownData(\n selectedSearchField?.dropdownDataProvider ?? '',\n this._caseDefinitionKey,\n selectedSearchField.key\n )\n .subscribe();\n }\n\n this.documentService\n .deleteDocumentSearch(this._caseDefinitionKey, selectedSearchField.key)\n .subscribe({\n next: () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n public saveSearchField(caseDefinitionKey: string): void {\n this.disableInput();\n\n this.formData$.pipe(take(1)).subscribe(formData => {\n if (!formData) {\n return;\n }\n const mappedFormData: SearchField = {\n ...formData,\n matchType:\n !this.isFieldTypeDropdown(formData?.fieldType) && formData?.dataType === 'text'\n ? formData.matchType\n : 'exact',\n fieldType: formData.dataType !== 'boolean' ? formData.fieldType : 'single',\n };\n\n const prevFormData = this.selectedSearchField$.value;\n if (\n this.dropdownDataProviderSupportsUpdates(prevFormData?.dropdownDataProvider) &&\n prevFormData?.dropdownDataProvider !== mappedFormData?.dropdownDataProvider\n ) {\n this.documentService\n .deleteDropdownData(\n prevFormData?.dropdownDataProvider ?? '',\n caseDefinitionKey,\n prevFormData?.key ?? ''\n )\n .subscribe();\n }\n\n if (this.dropdownDataProviderSupportsUpdates(mappedFormData.dropdownDataProvider)) {\n this.modifiedDropdownValues$.pipe(take(1)).subscribe(dropdownValues => {\n const request = dropdownValues.reduce(\n (acc, keyValue) => ({...acc, [keyValue.key]: keyValue.value}),\n {}\n );\n this.documentService\n .postDropdownData(\n mappedFormData.dropdownDataProvider ?? '',\n caseDefinitionKey,\n mappedFormData.key,\n request\n )\n .subscribe();\n });\n }\n\n if (this.searchFieldActionTypeIsAdd) {\n this.documentService.postDocumentSearch(caseDefinitionKey, mappedFormData).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n } else {\n const newFields = [...this.cachedSearchFields];\n const indexToReplace = newFields.findIndex(field => field.key === mappedFormData.key);\n const filteredFields = newFields.filter(field => field.key !== mappedFormData.key);\n\n filteredFields.splice(indexToReplace, 0, mappedFormData);\n this.updateSearchFields(caseDefinitionKey, filteredFields);\n }\n });\n }\n\n public updateSearchFields(caseDefinitionKey: string, newSearchFields: Array<SearchField>): void {\n this.disableInput();\n\n this.documentService.putDocumentSearch(caseDefinitionKey, newSearchFields).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n public onModalClose(): void {\n this.hideModal();\n }\n\n public onDownloadClick(): void {\n combineLatest([this.downloadUrl$, this.downloadName$])\n .pipe(take(1))\n .subscribe(([url, name]) => {\n if (!url || !name) return;\n\n const anchor = document.createElement('a');\n anchor.href = url.toString();\n anchor.download = name;\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n });\n }\n\n public switchView(): void {\n this.jsonEditorActive.set(!this.jsonEditorActive());\n\n if (!this.jsonEditorActive()) this.refreshSearchFields$.next(null);\n }\n\n private nextIfChanged(behaviourSubject$: BehaviorSubject<any>, value: any) {\n if (JSON.stringify(behaviourSubject$.value) !== JSON.stringify(value)) {\n behaviourSubject$.next(value);\n }\n }\n\n private isValid(data: SearchField): boolean {\n const validMatchType =\n data.dataType === 'text' && !this.isFieldTypeDropdown(data.fieldType) ? data.matchType : true;\n const validDropdownDataProvider = this.isFieldTypeDropdown(data.fieldType)\n ? data.dropdownDataProvider\n : true;\n const containsAllValues = !!(\n data.key &&\n data.dataType &&\n validMatchType &&\n validDropdownDataProvider &&\n data.path &&\n data.fieldType\n );\n const keyIsUnique =\n !this.searchFieldActionTypeIsAdd ||\n this.cachedSearchFields.findIndex(field => field.key === data.key) === -1;\n\n return containsAllValues && keyIsUnique;\n }\n\n private isFieldTypeDropdown(fieldType?: SearchFieldFieldType): boolean {\n return fieldType === 'single-select-dropdown' || fieldType === 'multi-select-dropdown';\n }\n\n private dropdownDataProviderSupportsUpdates(dropdownDataProvider?: string): boolean {\n return dropdownDataProvider === 'dropdownDatabaseDataProvider';\n }\n\n private openSelectedSearchFieldSubscription(): void {\n this._subscriptions.add(\n this.selectedSearchField$.subscribe(selectedSearchField => {\n if (selectedSearchField) this.showModal();\n })\n );\n }\n\n private openModalShowingSubscription(): void {\n this._subscriptions.add(\n this.modalShowing$.subscribe(modalShowing => {\n if (modalShowing) {\n setTimeout(() => {\n this.showFields$.next(true);\n }, 0);\n } else {\n setTimeout(() => {\n this.showFields$.next(false);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n })\n );\n }\n\n private setDownload(caseDefinitionKey: string, searchFields: Array<SearchField>): void {\n this.downloadName$.next(`${caseDefinitionKey}.json`);\n this.downloadUrl$.next(\n 'data:text/json;charset=UTF-8,' + encodeURIComponent(JSON.stringify({searchFields}, null, 2))\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n }\n\n private showModal(): void {\n this.modalShowing$.next(true);\n }\n\n private hideModal(): void {\n this.modalShowing$.next(false);\n }\n\n private refreshSearchFields(): void {\n this.refreshSearchFields$.next(null);\n }\n\n private showDeleteModal(searchField: SearchField): void {\n this.selectedDeleteSearchField$.next(searchField);\n this.showDeleteModal$.next(true);\n }\n\n private showEditModal(searchField: SearchField): void {\n this.searchFieldClicked(searchField, false);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n caseDefinitionKey: caseDefinitionKey$ | async,\n disableInput: disableInput$ | async,\n downloadName: downloadName$ | async,\n downloadUrl: downloadUrl$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n jsonEditorModel: jsonEditorModel$ | async,\n searchFields: translatedSearchFields$ | async,\n showActionItems: showActionItems$ | async,\n valid: valid$ | async,\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"content; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"modal; context: {obs: obs}\"></ng-container>\n</ng-container>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n [outputOnConfirm]=\"selectedDeleteSearchField$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteSelectedSearchFieldConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #buttons let-obs=\"obs\">\n <ng-container *ngTemplateOutlet=\"viewToggle\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"downloadButton; context: {obs: obs}\"></ng-container>\n\n <button\n cdsButton=\"primary\"\n data-test-id=\"case-management-search-add\"\n *ngIf=\"obs.hasEditPermissions\"\n [disabled]=\"loadingSearchFields || obs.disableInput\"\n (click)=\"searchFieldClicked($event, true)\"\n >\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFieldsOverview.addRow' | translate }}\n </button>\n</ng-template>\n\n<ng-template #content let-obs=\"obs\">\n @if (!jsonEditorActive()) {\n <valtimo-carbon-list\n data-test-id=\"searchFieldsList\"\n [actionItems]=\"actionItems\"\n [showActionItems]=\"obs.hasEditPermissions\"\n [fields]=\"fields\"\n [header]=\"false\"\n [items]=\"obs.searchFields\"\n [loading]=\"!obs.searchFields\"\n (rowClicked)=\"searchFieldClicked($event, false)\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"obs.disableInput\"\n (itemsReordered)=\"onItemsReordered(obs.caseDefinitionKey, $event)\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [title]=\"'searchFieldsOverview.noSearchfieldsTitle' | translate\"\n [description]=\"'searchFieldsOverview.noSearchfieldsDescription' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n } @else {\n <valtimo-json-editor\n [model]=\"obs.jsonEditorModel\"\n [fitPage]=\"true\"\n [fitPageSpaceAdjustment]=\"248\"\n [showEditButton]=\"obs.hasEditPermissions\"\n (saveEvent)=\"updateSearchFields(obs.caseDefinitionKey, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"viewToggle\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"downloadButton; context: {obs: obs}\"></ng-container>\n </valtimo-json-editor>\n }\n</ng-template>\n\n<ng-template #modal let-obs=\"obs\">\n <cds-modal\n valtimoCdsModal\n [title]=\"\n searchFieldActionTypeIsAdd\n ? ('searchFieldsOverview.addRow' | translate)\n : ('searchFieldsOverview.edit' | translate)\n \"\n [open]=\"modalShowing$ | async\"\n [showFooter]=\"true\"\n size=\"sm\"\n (close)=\"onModalClose()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onModalClose()\">\n <h3 cdsModalHeaderHeading>\n {{\n (searchFieldActionTypeIsAdd ? 'searchFieldsOverview.addRow' : 'searchFieldsOverview.edit')\n | translate\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"\n (showFields$ | async) && {\n searchField: selectedSearchField$ | async,\n } as searchObs\n \"\n >\n <v-input\n name=\"title\"\n dataTestId=\"case-management-search-title\"\n [title]=\"'searchFieldsOverview.title' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.title\"\n [disabled]=\"obs.disableInput\"\n [required]=\"false\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </v-input>\n\n <v-input\n name=\"key\"\n dataTestId=\"case-management-search-key\"\n [title]=\"'searchFieldsOverview.key' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.key\"\n [disabled]=\"obs.disableInput || !searchFieldActionTypeIsAdd\"\n [required]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </v-input>\n\n <valtimo-value-path-selector\n name=\"path\"\n [label]=\"'searchFieldsOverview.path' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n [marginXl]=\"true\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [caseDefinitionVersionTag]=\"caseDefinitionVersionTag$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [defaultValue]=\"searchObs.searchField?.path\"\n [disabled]=\"obs.disableInput\"\n ></valtimo-value-path-selector>\n\n <v-select\n *ngIf=\"dataTypeItems$ | async as dataTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"dataTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"dataType\"\n [defaultSelectionId]=\"searchObs.searchField?.dataType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"case-management-search-dataTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"(showMatchTypes$ | async) && (matchTypeItems$ | async) as matchTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"matchTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"matchType\"\n [defaultSelectionId]=\"searchObs.searchField?.matchType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"case-management-search-matchTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"fieldTypeItems$ | async as fieldTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"fieldTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"fieldType\"\n [defaultSelectionId]=\"searchObs.searchField?.fieldType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"case-management-search-fieldTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"\n (fieldTypeIsDropdown$ | async) &&\n (dropdownDataProviderNames$ | async) as dropdownDataProviderNames\n \"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"dropdownDataProviderNames\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"false\"\n name=\"dropdownDataProvider\"\n [defaultSelectionId]=\"searchObs.searchField?.dropdownDataProvider\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"case-management-search-dropdownDataProvider\"\n ></v-select>\n\n <valtimo-carbon-multi-input\n *ngIf=\"\n (showInputDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n name=\"dropdownValues\"\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n type=\"keyValue\"\n [disabled]=\"obs.disableInput\"\n [defaultValues]=\"initialDropdownValues\"\n [margin]=\"true\"\n [required]=\"false\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n (valueChange)=\"dropdownDatalistChange($event)\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </valtimo-carbon-multi-input>\n\n <v-table\n *ngIf=\"\n (showReadonlyDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n [items]=\"initialDropdownValues\"\n [columns]=\"dropdownColumns$ | async\"\n [showEditButtons]=\"false\"\n [itemsTranslationKey]=\"'searchFieldsOverview'\"\n [showPagination]=\"false\"\n [mobileBreakpointPx]=\"200\"\n [carbonTheme]=\"CARBON_THEME\"\n ></v-table>\n </v-form>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttonsFooterModal; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n </cds-modal>\n</ng-template>\n\n<ng-template #buttonsFooterModal let-obs=\"obs\">\n <button\n data-test-id=\"case-management-search-close\"\n cdsButton=\"secondary\"\n (click)=\"onModalClose()\"\n [disabled]=\"obs.disableInput\"\n >\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n data-test-id=\"case-management-search-save\"\n cdsButton=\"primary\"\n [disabled]=\"obs.disableInput || !obs.valid\"\n (click)=\"saveSearchField(obs.caseDefinitionKey)\"\n >\n {{ 'searchFieldsOverview.submit' | translate }}\n </button>\n</ng-template>\n\n<ng-template #viewToggle>\n <cds-tooltip [description]=\"'JSON editor'\">\n <button\n [cdsButton]=\"buttonTheme()\"\n data-test-id=\"case-management-search-fields-switch-view\"\n iconOnly=\"true\"\n (click)=\"switchView()\"\n >\n <svg cdsIcon=\"code\" size=\"16\"></svg>\n </button>\n </cds-tooltip>\n</ng-template>\n\n<ng-template #downloadButton let-obs=\"obs\">\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n data-test-id=\"case-management-search-download\"\n [disabled]=\"\n !obs.downloadUrl || !obs.downloadName || obs.searchFields?.length <= 0 || obs.disableInput\n \"\n (click)=\"onDownloadClick()\"\n >\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {AfterViewInit, Component, computed, OnDestroy, signal} from '@angular/core';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n ColumnConfig,\n EditorModel,\n MultiInputValues,\n ValuePathSelectorPrefix,\n ViewType,\n} from '@valtimo/components';\nimport {\n EditPermissionsService,\n getCaseManagementRouteParams,\n getDisplayTypeParametersView,\n} from '@valtimo/shared';\nimport {CaseListColumn, CaseListColumnView, DocumentService} from '@valtimo/document';\nimport {IconService, ListItem} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n delay,\n filter,\n map,\n Observable,\n startWith,\n Subject,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ListColumnModal} from '../../../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-list-columns',\n templateUrl: './case-management-list-columns.component.html',\n styleUrls: ['./case-management-list-columns.component.scss'],\n})\nexport class CaseManagementListColumnsComponent implements AfterViewInit, OnDestroy {\n public readonly downloadName$ = new BehaviorSubject<string>('');\n public readonly downloadUrl$ = new BehaviorSubject<string | null>(null);\n private readonly _subscriptions = new Subscription();\n\n public readonly actionItems: ActionItem[] = [\n {label: 'interface.delete', callback: this.deleteRow.bind(this), type: 'danger'},\n ];\n\n public readonly params$ = getCaseManagementRouteParams(this.route);\n\n public readonly loadingCaseListColumns$ = new BehaviorSubject<boolean>(true);\n\n public readonly lastItemIndex$ = new BehaviorSubject<number>(-1);\n\n public readonly fields: Array<ColumnConfig> = [\n {viewType: 'string', sortable: false, key: 'title', label: 'listColumn.title'},\n {viewType: 'string', sortable: false, key: 'key', label: 'listColumn.key'},\n {viewType: 'string', sortable: false, key: 'path', label: 'listColumn.path'},\n {viewType: 'string', sortable: false, key: 'displayType', label: 'listColumn.displayType'},\n {\n viewType: 'string',\n sortable: false,\n key: 'displayTypeParameters',\n label: 'listColumn.displayTypeParameters',\n },\n {viewType: 'string', sortable: false, key: 'sortable', label: 'listColumn.sortable'},\n {viewType: 'string', sortable: false, key: 'defaultSort', label: 'listColumn.defaultSort'},\n {viewType: 'boolean', sortable: false, key: 'exportable', label: 'listColumn.exportField'},\n ];\n\n public readonly disableInput$ = new BehaviorSubject<boolean>(false);\n\n private cachedCaseListColumns: Array<CaseListColumn> = [];\n\n private readonly refreshCaseListcolumns$ = new BehaviorSubject<null>(null);\n\n private readonly caseListColumns$: Observable<Array<CaseListColumn>> = combineLatest([\n this.params$,\n this.refreshCaseListcolumns$,\n ]).pipe(\n switchMap(([params]) =>\n this.documentService.getCaseListForManagement(params.caseDefinitionKey)\n ),\n tap(caseListColumns => {\n this.params$.pipe(take(1)).subscribe(params => {\n if (caseListColumns && Array.isArray(caseListColumns) && caseListColumns.length > 0) {\n this.setDownload(params.caseDefinitionKey, caseListColumns);\n }\n });\n }),\n tap(caseListColumns => {\n this.lastItemIndex$.next(caseListColumns.length - 1);\n this.cachedCaseListColumns = caseListColumns;\n this.loadingCaseListColumns$.next(false);\n this.enableInput();\n })\n );\n\n public readonly jsonEditorModel$: Observable<EditorModel> = this.caseListColumns$.pipe(\n map((caseListColumns: CaseListColumn[]) => ({\n value: JSON.stringify(caseListColumns),\n language: 'json',\n }))\n );\n\n public readonly translatedCaseListColumns$: Observable<Array<CaseListColumnView>> = combineLatest(\n [this.caseListColumns$, this.translateService.stream('key')]\n ).pipe(\n map(([columns]) =>\n columns.map(column => ({\n ...column,\n title: column.title || '-',\n sortable: column.sortable\n ? this.translateService.instant('listColumn.sortableYes')\n : this.translateService.instant('listColumn.sortableNo'),\n defaultSort:\n (column.defaultSort === 'ASC' &&\n this.translateService.instant('listColumn.sortableAsc')) ||\n (column.defaultSort === 'DESC' &&\n this.translateService.instant('listColumn.sortableDesc')) ||\n '-',\n displayType: this.translateService.instant(\n `listColumnDisplayType.${column?.displayType?.type}`\n ),\n displayTypeParameters: getDisplayTypeParametersView(\n column.displayType.displayTypeParameters\n ),\n }))\n )\n );\n\n public readonly currentModalType$ = new BehaviorSubject<ListColumnModal>('create');\n\n public readonly showModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly modalShowing$ = this.showModal$.pipe(delay(250));\n\n public readonly INVALID_KEY = 'invalid';\n\n public readonly formGroup = new FormGroup({\n title: new FormControl(''),\n key: new FormControl('', Validators.required),\n path: new FormControl('', Validators.required),\n dateFormat: new FormControl(''),\n displayType: new FormControl({key: this.INVALID_KEY}),\n sortable: new FormControl(false),\n defaultSort: new FormControl({key: this.INVALID_KEY}),\n enum: new FormControl([]),\n tagAmount: new FormControl(1),\n exportable: new FormControl(false),\n });\n\n public readonly disableDefaultSort$ = combineLatest([\n this.currentModalType$,\n this.formGroup.valueChanges,\n ]).pipe(\n map(\n ([currentModalType]) =>\n currentModalType === 'create' &&\n this.cachedCaseListColumns.find(column => !!column.defaultSort)\n ),\n startWith(false)\n );\n\n public readonly DISPLAY_TYPES: Array<ViewType> = [\n ViewType.TEXT,\n ViewType.DATE,\n ViewType.BOOLEAN,\n ViewType.ENUM,\n ViewType.ARRAY_COUNT,\n ViewType.UNDERSCORES_TO_SPACES,\n ViewType.TAGS,\n ];\n\n public readonly showDateFormat$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[1])),\n tap(showDateFormat => {\n if (showDateFormat === false && !!this.formGroup.value.dateFormat) {\n this.formGroup.patchValue({dateFormat: ''});\n }\n }),\n startWith(false)\n );\n\n public readonly showTagAmount$ = this.formGroup.valueChanges.pipe(\n map(formValues => formValues.displayType?.key === this.DISPLAY_TYPES[6]),\n startWith(this.formGroup.value.displayType?.key === this.DISPLAY_TYPES[6] ? true : false)\n );\n\n public readonly showEnum$ = this.formGroup.valueChanges.pipe(\n map(\n formValues =>\n !!(\n formValues.displayType?.key === this.DISPLAY_TYPES[3] ||\n formValues.displayType?.key === this.DISPLAY_TYPES[2]\n )\n ),\n tap(showEnum => {\n const enumValue = this.formGroup.value.enum;\n if (showEnum === false && Array.isArray(enumValue) && enumValue.length > 0) {\n this.formGroup.patchValue({enum: []});\n }\n }),\n startWith(false)\n );\n\n public readonly isYesNo$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[2]))\n );\n\n public readonly selectedViewTypeItemIndex$ = new BehaviorSubject<number>(0);\n\n public readonly viewTypeItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedViewTypeItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedViewTypeItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumnDisplayType.select`),\n key: this.INVALID_KEY,\n },\n ...this.DISPLAY_TYPES.map(type => ({\n content: this.translateService.instant(`listColumnDisplayType.${type}`),\n key: type,\n })),\n ].map((item, index) => ({...item, selected: index === selectedViewTypeItemIndex}))\n )\n );\n\n public readonly selectedSortItemIndex$ = new BehaviorSubject<number>(0);\n\n public readonly sortItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedSortItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedSortItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumn.selectDefaultSort`),\n key: this.INVALID_KEY,\n },\n {content: this.translateService.instant(`listColumn.sortableAsc`), key: 'ASC'},\n {content: this.translateService.instant(`listColumn.sortableDesc`), key: 'DESC'},\n ].map((item, index) => ({...item, selected: index === selectedSortItemIndex}))\n )\n );\n\n public readonly validKey$ = combineLatest([\n this.formGroup.valueChanges,\n this.currentModalType$,\n ]).pipe(\n map(([formValues, currentModalType]) => {\n const existingKeys = this.cachedCaseListColumns.map(column => column.key);\n return currentModalType === 'create' ? !existingKeys.includes(formValues.key ?? '') : true;\n }),\n startWith(false)\n );\n\n public readonly valid$ = combineLatest([this.formGroup.valueChanges, this.validKey$]).pipe(\n map(\n ([formValues, validKey]) =>\n !!(\n formValues.displayType?.key !== this.INVALID_KEY &&\n formValues.path &&\n validKey &&\n (formValues?.displayType?.key === 'enum' ? formValues.enum?.length > 0 : true) &&\n (formValues?.displayType?.key === 'tags' ? formValues.tagAmount > 0 : true)\n )\n ),\n startWith(false)\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = this.params$.pipe(\n switchMap(params =>\n this.editPermissionsService.hasEditPermissions(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n )\n );\n\n readonly showDeleteModal$ = new Subject<boolean>();\n\n readonly deleteRowKey$ = new BehaviorSubject<string>('');\n\n readonly defaultEnumValues$ = new BehaviorSubject<MultiInputValues | null>(null);\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n public readonly jsonEditorActive = signal<boolean>(false);\n public readonly buttonTheme = computed(() => (this.jsonEditorActive() ? 'primary' : 'ghost'));\n public displayExportButton = true;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly iconService: IconService,\n private readonly editPermissionsService: EditPermissionsService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n this.disableExportToggle();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public openModal(modalType: ListColumnModal): void {\n this.showModal$.next(true);\n this.currentModalType$.next(modalType);\n\n if (modalType === 'create') {\n this.formGroup.controls['key'].enable();\n this.resetFormGroup();\n } else if (modalType === 'edit') {\n this.formGroup.controls['key'].disable();\n }\n }\n\n public closeModal(): void {\n this.showModal$.next(false);\n }\n\n public deleteRow(caseListColumn: CaseListColumn): void {\n this.showDeleteModal$.next(true);\n this.deleteRowKey$.next(caseListColumn.key);\n }\n\n public deleteRowConfirmation(columnKey: string): void {\n if (columnKey) {\n this.disableInput();\n\n this.params$.pipe(take(1)).subscribe(params => {\n this.documentService\n .deleteCaseListForManagement(params.caseDefinitionKey, columnKey)\n .subscribe({\n next: () => {\n this.refreshCaseListColumns();\n },\n error: () => {\n this.enableInput();\n },\n });\n });\n }\n }\n\n public onItemsReordered(caseDefinitionKey: string, items: CaseListColumn[]): void {\n if (!items || !caseDefinitionKey) return;\n\n this.hasEditPermissions$.pipe(take(1)).subscribe(hasEditPermissions => {\n if (!hasEditPermissions) {\n return;\n }\n\n const unformattedColumns = items.map(column =>\n this.cachedCaseListColumns.find(cachedColumn => cachedColumn.key === column.key)\n );\n this.updateCaseListColumns(caseDefinitionKey, unformattedColumns);\n });\n }\n\n public saveCaseListColumns(): void {\n this.disableInput();\n\n this.currentModalType$.pipe(take(1)).subscribe(currentModalType => {\n if (currentModalType === 'create') {\n this.addColumn();\n } else {\n this.updateColumn();\n }\n });\n }\n\n public enumValueChange(value: Array<{[key: string]: string}>): void {\n this.formGroup.patchValue({enum: value});\n }\n\n public columnRowClicked(row: {key: string}): void {\n this.resetFormGroup();\n\n this.hasEditPermissions$\n .pipe(\n filter(hasEditPermissions => hasEditPermissions),\n take(1),\n switchMap(() => combineLatest([this.viewTypeItems$, this.sortItems$]).pipe(take(1)))\n )\n .subscribe(([viewTypeItems, sortItems]) => {\n const column = this.cachedCaseListColumns.find(\n cachedColumn => cachedColumn.key === row.key\n );\n const viewTypeItem = viewTypeItems.find(item => item.key === column?.displayType.type);\n const viewTypeItemIndex = viewTypeItems.findIndex(\n item => item.key === column?.displayType.type\n );\n const sortItem = sortItems.find(item => item.key === column?.defaultSort);\n const sortItemIndex = sortItems.findIndex(item => item.key === column?.defaultSort);\n const enumValues = column?.displayType?.displayTypeParameters?.enum;\n const mappedEnumValues: MultiInputValues = [];\n const columnDateFormat = column?.displayType?.displayTypeParameters?.dateFormat;\n const tagAmount = column?.displayType?.displayTypeParameters?.tagAmount;\n\n this.selectedViewTypeItemIndex$.next(viewTypeItemIndex);\n\n if (sortItem) {\n this.selectedSortItemIndex$.next(sortItemIndex);\n }\n\n if (enumValues) {\n Object.keys(enumValues).forEach(key => {\n mappedEnumValues.push({key, value: enumValues[key]});\n });\n this.defaultEnumValues$.next(mappedEnumValues);\n } else {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n }\n\n this.formGroup.patchValue({\n key: column?.key,\n title: column?.title,\n path: column?.path,\n sortable: column?.sortable,\n // @ts-ignore\n displayType: {...viewTypeItem},\n // @ts-ignore\n defaultSort: sortItem ? {...sortItem} : {...sortItems[0]},\n ...(columnDateFormat && {dateFormat: columnDateFormat}),\n ...(tagAmount && {tagAmount: tagAmount}),\n exportable: column?.exportable,\n });\n\n this.openModal('edit');\n });\n }\n public selectedDisplayType(event: ListItem): void {\n if (event.item.selected && event.item.key === 'tags') {\n this.formGroup.patchValue({sortable: undefined, defaultSort: undefined});\n }\n }\n\n public onDownloadClick(): void {\n combineLatest([this.downloadUrl$, this.downloadName$])\n .pipe(take(1))\n .subscribe(([url, name]) => {\n if (!url || !name) return;\n\n const anchor = document.createElement('a');\n anchor.href = url.toString();\n anchor.download = name;\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n });\n }\n\n public switchView(): void {\n this.jsonEditorActive.set(!this.jsonEditorActive());\n\n if (!this.jsonEditorActive()) this.refreshCaseListcolumns$.next(null);\n }\n\n private updateCaseListColumns(\n caseDefinitionKey: string,\n newCaseListColumns: Array<CaseListColumn>\n ): void {\n this.disableInput();\n\n this.documentService.putCaseListForManagement(caseDefinitionKey, newCaseListColumns).subscribe({\n next: () => {\n this.refreshCaseListColumns();\n localStorage.setItem(`list-search-${caseDefinitionKey}`, '');\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n private addColumn(): void {\n const formValue = this.formGroup.value;\n\n this.params$.pipe(take(1)).subscribe(params => {\n this.documentService\n .postCaseListForManagement(params.caseDefinitionKey, this.mapFormValuesToColumn(formValue))\n .subscribe({\n next: () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n error: () => {\n this.enableInput();\n },\n });\n });\n }\n\n private updateColumn(): void {\n const updatedColumnFormValue = this.formGroup.value;\n const mappedUpdatedColumn = this.mapFormValuesToColumn(updatedColumnFormValue);\n const currentColumns = this.cachedCaseListColumns;\n const mappedCurrentColumns = currentColumns.map(column => {\n const columnCopy = {...column};\n if (columnCopy.key === updatedColumnFormValue.key) {\n const changedColumn = {...columnCopy, ...mappedUpdatedColumn};\n if (!mappedUpdatedColumn.defaultSort) {\n delete changedColumn.defaultSort;\n }\n return changedColumn;\n }\n if (mappedUpdatedColumn.defaultSort) {\n delete columnCopy.defaultSort;\n }\n return columnCopy;\n });\n\n this.params$.pipe(take(1)).subscribe(params => {\n this.documentService\n .putCaseListForManagement(params.caseDefinitionKey, mappedCurrentColumns)\n .subscribe({\n next: () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n error: () => {\n this.enableInput();\n },\n });\n });\n }\n\n private setDownload(caseDefinitionKey: string, caseListColumns: Array<CaseListColumn>): void {\n this.downloadName$.next(`${caseDefinitionKey}.json`);\n this.downloadUrl$.next(\n 'data:text/json;charset=UTF-8,' + encodeURIComponent(JSON.stringify(caseListColumns, null, 2))\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n this.formGroup.disable();\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n this.formGroup.enable();\n if (this.formGroup.value.displayType?.key === 'tags') {\n this.formGroup.controls.defaultSort.disable();\n this.formGroup.controls.sortable.disable();\n }\n }\n\n private refreshCaseListColumns(): void {\n this.refreshCaseListcolumns$.next(null);\n }\n\n private resetFormGroup(): void {\n this.formGroup.reset();\n combineLatest([this.sortItems$, this.viewTypeItems$])\n .pipe(take(1))\n .subscribe(([sortItems, viewTypeItems]) => {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n this.selectedViewTypeItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({displayType: viewTypeItems[0]});\n this.selectedSortItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({defaultSort: sortItems[0]});\n });\n }\n\n private mapFormValuesToColumn(formValue: any): CaseListColumn {\n return {\n key: formValue.key,\n sortable: formValue.sortable,\n ...(formValue.defaultSort?.key !== this.INVALID_KEY && {\n defaultSort: formValue.defaultSort?.key,\n }),\n title: formValue.title || '',\n path: formValue.path,\n displayType: {\n type: formValue.displayType?.key,\n displayTypeParameters: {\n ...(formValue.tagAmount && {tagAmount: formValue.tagAmount}),\n ...(formValue.dateFormat && {dateFormat: formValue.dateFormat}),\n ...(Array.isArray(formValue.enum) &&\n formValue.enum.length > 0 && {\n enum: formValue.enum.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {}),\n }),\n },\n },\n exportable: this.displayExportButton ? formValue.exportable : false,\n };\n }\n\n private disableExportToggle(): void {\n this.formGroup.controls.path.valueChanges\n .pipe(startWith(this.formGroup.controls.path.value))\n .subscribe(value => {\n const pathMustStartWithCaseOrDocRegex = /^(case:|doc:)/;\n this.displayExportButton = pathMustStartWithCaseOrDocRegex.test(String(value));\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n caseListColumn: translatedCaseListColumns$ | async,\n disableInput: disableInput$ | async,\n downloadName: downloadName$ | async,\n downloadUrl: downloadUrl$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n jsonEditorModel: jsonEditorModel$ | async,\n loadingCaseListColumns: loadingCaseListColumns$ | async,\n params: params$ | async,\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"content; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #content let-obs=\"obs\">\n @if (!jsonEditorActive()) {\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [loading]=\"obs.loadingCaseListColumns\"\n [items]=\"obs?.caseListColumn || []\"\n [fields]=\"fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n (rowClicked)=\"columnRowClicked($event)\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"obs.disableInput\"\n (itemsReordered)=\"onItemsReordered(obs.params.caseDefinitionKey, $event)\"\n data-test-id=\"caseListColumnsList\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n } @else {\n <valtimo-json-editor\n [model]=\"obs.jsonEditorModel\"\n [fitPage]=\"true\"\n [fitPageSpaceAdjustment]=\"248\"\n [showEditButton]=\"obs.hasEditPermissions\"\n (saveEvent)=\"updateCaseListColumns(obs.params.caseDefinitionKey, $event)\"\n data-test-id=\"listColumnJSONEditor\"\n >\n <ng-container *ngTemplateOutlet=\"viewToggle\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"downloadButton; context: {obs: obs}\"></ng-container>\n </valtimo-json-editor>\n }\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <ng-container *ngTemplateOutlet=\"viewToggle\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"downloadButton; context: {obs: obs}\"></ng-container>\n\n <button\n *ngIf=\"obs.hasEditPermissions\"\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n [disabled]=\"obs.loadingCaseListColumns || !(hasEditPermissions$ | async)\"\n data-test-id=\"caseManagementAddListColumn\"\n >\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2 pt-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'listColumn.noConfigWarningTitle' | translate,\n message: 'listColumn.noConfigWarning' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n showEnum: showEnum$ | async,\n isYesNo: isYesNo$ | async,\n showTagAmount: showTagAmount$ | async,\n params: params$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n size=\"sm\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\" [cdsLayer]=\"1\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"title\" data-test-id=\"listColumnTitle\" />\n </cds-label>\n\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input\n cdsText\n formControlName=\"key\"\n [invalid]=\"modalObs.validKey === false\"\n data-test-id=\"listColumnKey\"\n />\n </cds-label>\n\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"modalObs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"modalObs.params?.caseDefinitionVersionTag\"\n data-test-id=\"listColumnValuePathSelector\"\n ></valtimo-value-path-selector>\n </cds-label>\n\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n formControlName=\"displayType\"\n [disabled]=\"modalObs.disableInput\"\n (selected)=\"selectedDisplayType($event)\"\n data-test-id=\"listColumnDisplayType\"\n >\n <cds-dropdown-list [items]=\"(viewTypeItems$ | async) || []\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-label *ngIf=\"modalObs.showTagAmount\" [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.tagAmount' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.tagAmountTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <cds-number\n formControlName=\"tagAmount\"\n [min]=\"1\"\n [step]=\"1\"\n data-test-id=\"listColumnTagAmount\"\n ></cds-number>\n </cds-label>\n\n <cds-label *ngIf=\"showDateFormat$ | async\" [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"dateFormat\" data-test-id=\"listColumnDateFormat\" />\n </cds-label>\n\n <cds-label *ngIf=\"modalObs.showEnum || modalObs.isYesNo\" [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{\n modalObs.isYesNo\n ? ('listColumn.enumTitleOptional' | translate)\n : ('listColumn.enumTitle' | translate)\n }}\n\n <v-tooltip-icon\n [tooltip]=\"\n modalObs.isYesNo\n ? ('listColumn.enumTooltipOptional' | translate)\n : ('listColumn.enumTooltip' | translate)\n \"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"(showModal$ | async) || (modalShowing$ | async)\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n [defaultValues]=\"defaultEnumValues$ | async\"\n [hideAddButton]=\"modalObs.isYesNo\"\n [hideDeleteButton]=\"modalObs.isYesNo\"\n [maxRows]=\"modalObs.isYesNo ? 1 : null\"\n [keyColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.Yes' | translate)\"\n [valueColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.No' | translate)\"\n data-test-id=\"listColumnMultiInput\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n\n <cds-checkbox\n formControlName=\"sortable\"\n [disabled]=\"modalObs.showTagAmount || modalObs.disableInput\"\n data-test-id=\"listColumnSortableCheckbox\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort || modalObs.showTagAmount\"\n >\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n formControlName=\"defaultSort\"\n [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort || modalObs.showTagAmount\"\n data-test-id=\"listColumnDefaultSort\"\n >\n <cds-dropdown-list [items]=\"(sortItems$ | async) || []\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-label *ngIf=\"displayExportButton\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.exportField' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.exportTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <cds-toggle\n formControlName=\"exportable\"\n data-testid=\"export-selector-toggle\"\n [onText]=\"'listColumn.sortableYes' | translate\"\n [offText]=\"'listColumn.sortableNo' | translate\"\n [keyColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.Yes' | translate)\"\n [valueColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.No' | translate)\"\n [required]=\"false\"\n [size]=\"'sm'\"\n data-test-id=\"listColumnExportable\"\n ></cds-toggle>\n </cds-label>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer [cdsLayer]=\"1\">\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n data-test-id=\"listColumnCancelButton\"\n >\n {{ 'listColumn.close' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveCaseListColumns()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n data-test-id=\"listColumnSaveButton\"\n >\n {{ 'listColumn.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n data-test-id=\"listColumnConfirmationModal\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #viewToggle>\n <cds-tooltip [description]=\"'JSON editor'\">\n <button\n [cdsButton]=\"buttonTheme()\"\n data-test-id=\"listColumnSwitchView\"\n iconOnly=\"true\"\n (click)=\"switchView()\"\n >\n <svg cdsIcon=\"code\" size=\"16\"></svg>\n </button>\n </cds-tooltip>\n</ng-template>\n\n<ng-template #downloadButton let-obs=\"obs\">\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n (click)=\"onDownloadClick()\"\n [disabled]=\"\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.caseListColumn?.length < 1 ||\n obs.disableInput ||\n obs.loadingCaseListColumns\n \"\n data-test-id=\"listColumnDownloadButton\"\n >\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n CaseManagementParams,\n DraftVersionService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {BehaviorSubject, switchMap, of, Observable} from 'rxjs';\nimport {TabEnum} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './case-management-case-list.component.html',\n styleUrl: './case-management-case-list.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementCaseListComponent {\n public readonly isDraftVersion$: Observable<boolean> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n switchMap((params: CaseManagementParams | undefined) =>\n !params\n ? of(false)\n : this.draftVersionService.isDraftVersion(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n )\n );\n public readonly currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.SEARCH);\n public readonly DRAFT_WARNING_MESSAGE = {\n [TabEnum.SEARCH]: 'caseManagement.tabs.caseListTab.searchFields',\n [TabEnum.LIST]: 'caseManagement.tabs.caseListTab.columns',\n };\n public readonly TabEnum = TabEnum;\n\n constructor(\n private readonly draftVersionService: DraftVersionService,\n private readonly route: ActivatedRoute\n ) {}\n\n public switchTab(tab: TabEnum): void {\n this.currentTab$.next(tab);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n@if (currentTab$ | async; as currentTab) {\n <valtimo-case-management-draft-warning\n *ngIf=\"isDraftVersion$ | async\"\n [name]=\"DRAFT_WARNING_MESSAGE[currentTab] | translate | lowercase\"\n ></valtimo-case-management-draft-warning>\n\n <cds-tabs class=\"case-management-tabs\" type=\"contained\">\n <cds-tab\n [active]=\"currentTab === TabEnum.LIST\"\n [heading]=\"'caseManagement.tabs.caseListTab.columns' | translate\"\n [id]=\"'caseManagementListColumns'\"\n (selected)=\"switchTab(TabEnum.LIST)\"\n >\n <valtimo-case-management-list-columns\n *ngIf=\"currentTab === TabEnum.LIST\"\n ></valtimo-case-management-list-columns>\n </cds-tab>\n\n <cds-tab\n [active]=\"currentTab === TabEnum.SEARCH\"\n [heading]=\"'caseManagement.tabs.caseListTab.searchFields' | translate\"\n [id]=\"'caseManagementListSearchFields'\"\n (selected)=\"switchTab(TabEnum.SEARCH)\"\n >\n <valtimo-case-management-search-fields\n *ngIf=\"currentTab === TabEnum.SEARCH\"\n ></valtimo-case-management-search-fields>\n </cds-tab>\n </cds-tabs>\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {Edit16, Information16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TemplatePayload} from '@valtimo/document';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport * as semver from 'semver';\nimport {CaseManagementService} from '../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-create-draft-version',\n styleUrls: ['./case-management-create-draft-version.component.scss'],\n templateUrl: './case-management-create-draft-version.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementCreateDraftVersionComponent implements OnInit {\n @Input() public readonly open = false;\n\n public readonly caseDefinitionPayload$ = new BehaviorSubject<any>({});\n @Input() set caseDefinitionPayload(payload: any) {\n if (payload) {\n this.caseDefinitionPayload$.next(payload);\n this.updateFormFromPayload(payload);\n }\n }\n @Output() closeModal = new EventEmitter<TemplatePayload | null>();\n\n public caseDefinitionVersions: string[] = [];\n\n public draftVersionForm: FormGroup = this.fb.group({\n name: this.fb.control('', Validators.required),\n caseDefinitionKey: this.fb.control({value: '', disabled: true}, [\n Validators.required,\n Validators.pattern('[A-Za-z0-9-]*'),\n ]),\n caseDefinitionVersion: this.fb.control('', Validators.required),\n description: this.fb.control(''),\n basedOnCaseDefinitionVersion: this.fb.control(''),\n });\n\n private readonly _caseParams$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n\n public readonly createDraftDescription$ = this.getDraftDescription(\n 'caseManagement.deployment.createDraftConfirmationModal.description'\n );\n\n public readonly versionError$ = new BehaviorSubject<string | null>(null);\n\n public readonly caseDefinitionVersions$: Observable<any[] | null> = this._caseParams$.pipe(\n map(params => params?.caseDefinitionKey ?? ''),\n switchMap(caseDefinitionKey =>\n this.caseManagementService.getCaseDefinitionVersions(caseDefinitionKey)\n ),\n map(caseDefinitions => caseDefinitions.map(caseDefinition => caseDefinition.versionTag))\n );\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService,\n private readonly route: ActivatedRoute,\n private readonly caseManagementService: CaseManagementService\n ) {\n this.iconService.registerAll([Edit16, Information16]);\n }\n\n public ngOnInit(): void {\n this.caseDefinitionVersions$.pipe(take(1)).subscribe(versions => {\n this.caseDefinitionVersions = versions || [];\n });\n }\n\n public onCloseModal(definitionCreated?: boolean): void {\n if (!definitionCreated) {\n this.closeModal.emit(null);\n this.updateFormFromPayload(this.caseDefinitionPayload$.getValue());\n this.versionError$.next(null);\n return;\n }\n\n const caseDefinitionVersion = this.draftVersionForm.get('caseDefinitionVersion')?.value;\n\n if (!this.isVersionValid(caseDefinitionVersion)) {\n this.versionError$.next('caseManagement.createDefinition.versionError');\n return;\n }\n\n if (this.doesVersionExist(caseDefinitionVersion)) {\n this.versionError$.next('caseManagement.createDefinition.versionExistsError');\n return;\n }\n\n this.closeModal.emit(this.draftVersionForm.getRawValue());\n }\n\n private isVersionValid(version: string): boolean {\n return semver.valid(version) !== null;\n }\n\n private doesVersionExist(version: string): boolean {\n return this.caseDefinitionVersions.some(existingVersion => semver.eq(existingVersion, version));\n }\n\n private updateFormFromPayload(payload): void {\n this.draftVersionForm.patchValue({\n name: payload.name || '',\n caseDefinitionKey: payload.caseDefinitionKey || '',\n caseDefinitionVersion: '',\n description: '',\n basedOnCaseDefinitionVersion: payload.basedOnCaseDefinitionVersion || '',\n });\n }\n\n private getDraftDescription(translationKey: string): Observable<string> {\n return this._caseParams$.pipe(\n take(1),\n switchMap(params =>\n this.translateService.get(translationKey, {\n caseDefinitionKey: params?.caseDefinitionKey,\n caseDefinitionVersionTag: params?.caseDefinitionVersionTag,\n })\n )\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n versionError: versionError$ | async,\n createDraftDescription: createDraftDescription$ | async,\n } as obs\"\n valtimoCdsModal\n showFooter=\"true\"\n class=\"valtimo-definition-create\"\n [open]=\"open\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'caseManagement.createDefinition.modalTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <div cdsModalContent [cdsLayer]=\"1\">\n <p class=\"valtimo-definition-create__description\">{{ obs.createDraftDescription }}</p>\n\n <form [formGroup]=\"draftVersionForm\" class=\"valtimo-definition-create__content\">\n <cds-label>\n {{ 'caseManagement.createDefinition.name' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.nameTooltip' | translate\"\n >\n <svg cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"name\"\n cdsText\n placeholder=\"{{ 'caseManagement.createDefinition.namePlaceholder' | translate }}\"\n [cdsLayer]=\"1\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-label>\n {{ 'caseManagement.createDefinition.key' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.keyTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"caseDefinitionKey\"\n cdsText\n placeholder=\"{{ 'caseManagement.createDefinition.versionPlaceholder' | translate }}\"\n [cdsLayer]=\"1\"\n />\n </cds-label>\n\n <cds-label [invalid]=\"!!obs.versionError\" [invalidText]=\"obs.versionError | translate\">\n {{ 'caseManagement.createDefinition.version' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.versionTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"caseDefinitionVersion\"\n cdsText\n placeholder=\"{{ 'caseManagement.createDefinition.versionPlaceholder' | translate }}\"\n [cdsLayer]=\"1\"\n [invalid]=\"!!obs.versionError\"\n />\n </cds-label>\n\n <cds-textarea-label>\n {{ 'caseManagement.createDefinition.description' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.descriptionTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <textarea\n cdsTextArea\n formControlName=\"description\"\n placeholder=\"{{ 'caseManagement.createDefinition.descriptionPlaceholder' | translate }}\"\n [cdsLayer]=\"1\"\n [rows]=\"3\"\n [cols]=\"150\"\n ></textarea>\n </cds-textarea-label>\n </form>\n </div>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"draftVersionForm.invalid\" (click)=\"onCloseModal(true)\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {DatePipe, Location as AngularLocation} from '@angular/common';\nimport {AfterViewInit, Component, OnInit, TemplateRef, ViewChild} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Return16, Save16, TrashCan16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {BreadcrumbService} from '@valtimo/components';\nimport {EnvironmentService, GlobalNotificationService} from '@valtimo/shared';\nimport {IconService, Notification, NotificationContent} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap} from 'rxjs';\nimport {take, tap} from 'rxjs/operators';\nimport * as semver from 'semver';\nimport {CaseDefinition, CaseDefinitionFinalizationCheckResult} from '../../models';\nimport {CaseManagementService} from '../../services';\n\n@Component({\n standalone: false,\n templateUrl: './case-management-deployment.component.html',\n styleUrls: ['./case-management-deployment.component.scss'],\n})\nexport class CaseManagementDeploymentComponent implements OnInit, AfterViewInit {\n @ViewChild('createDraftMessage')\n private readonly _createDraftMessageTemplateRef: TemplateRef<HTMLDivElement>;\n\n @ViewChild('finalizeDraftMessage')\n private readonly _finalizeDraftMessageTemplateRef: TemplateRef<HTMLDivElement>;\n\n @ViewChild('deleteDraftMessage')\n private readonly _deleteDraftMessageTemplateRef: TemplateRef<HTMLDivElement>;\n\n public caseDefinitionVersions: string[] = [];\n public readonly hasConflictingVersions$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteDraftConfirmationModal$ = new BehaviorSubject<boolean>(false);\n public readonly showFinalizeDraftConfirmationModal$ = new BehaviorSubject<boolean>(false);\n public readonly showCreateDraftVersionConfirmationModal$ = new BehaviorSubject<boolean>(false);\n private readonly refreshDraftVersion$ = new BehaviorSubject<null>(null);\n\n public readonly params$: Observable<{\n caseDefinitionKey: string;\n caseDefinitionVersionTag: string;\n }> = this.route.params.pipe(\n map(({caseDefinitionKey, caseDefinitionVersionTag}) => ({\n caseDefinitionKey: caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionVersionTag,\n }))\n );\n\n public readonly caseDefinitionKey$: Observable<string> = this.params$.pipe(\n map(params => params.caseDefinitionKey || '')\n );\n\n public readonly caseDefinitionVersionTag$: Observable<string> = this.params$.pipe(\n map(params => params.caseDefinitionVersionTag || '')\n );\n\n public readonly canUpdateGlobalConfiguration$ =\n this.environmentService.canUpdateGlobalConfiguration();\n\n private getDraftDescription$(translationKey: string): Observable<string> {\n return combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n this.translateService.stream('key'),\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.translateService.get(translationKey, {caseDefinitionKey, caseDefinitionVersionTag})\n )\n );\n }\n\n public readonly finalizeDraftDescription$ = this.getDraftDescription$(\n 'caseManagement.deployment.finalizeDraftConfirmationModal.description'\n );\n\n public readonly globalActiveCase$: Observable<any> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n this.caseManagementService.getGlobalActiveCase(caseDefinitionKey)\n )\n );\n\n public readonly isGloballyActive$: Observable<boolean> = combineLatest([\n this.globalActiveCase$,\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n map(([globalActiveCase, caseDefinitionKey, caseDefinitionVersionTag]) => {\n return (\n globalActiveCase.caseDefinitionKey === caseDefinitionKey &&\n globalActiveCase.caseDefinitionVersionTag === caseDefinitionVersionTag\n );\n })\n );\n\n public readonly _caseDefinitionTitle$: Observable<string> = this.globalActiveCase$.pipe(\n map(result => result.name)\n );\n\n public readonly caseDefinition$: Observable<CaseDefinition> = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.getCaseDefinition(caseDefinitionKey, caseDefinitionVersionTag)\n ),\n tap(caseDefinition => {\n this.hasConflictingVersions$.next(!!caseDefinition.conflictingVersions);\n })\n );\n\n public readonly isDraftVersion$: Observable<boolean> = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n this.refreshDraftVersion$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.isDraftVersion(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly caseDefinitionPayload$ = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.getCaseDefinition(caseDefinitionKey, caseDefinitionVersionTag)\n ),\n map(caseDefinition => ({\n name: caseDefinition.name,\n caseDefinitionKey: caseDefinition.caseDefinitionKey,\n caseDefinitionVersion: semver.inc(caseDefinition.caseDefinitionVersionTag, 'patch'),\n description: caseDefinition.description,\n basedOnCaseDefinitionVersion: caseDefinition.caseDefinitionVersionTag,\n }))\n );\n\n public readonly caseDefinitionVersions$: Observable<any[] | null> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n this.caseManagementService.getCaseDefinitionVersions(caseDefinitionKey)\n ),\n map(caseDefinitions => caseDefinitions.map(caseDefinition => caseDefinition.versionTag))\n );\n\n public readonly notificationContent$: Observable<{\n basedOnVersionTag: string;\n conflictingVersions: string;\n }> = this.caseDefinition$.pipe(\n map(({basedOnVersionTag, conflictingVersions}) => ({\n basedOnVersionTag: basedOnVersionTag ?? '-',\n conflictingVersions: conflictingVersions ?? '-',\n }))\n );\n\n public readonly releaseVersionEntries$: Observable<{key: string; value: string}[]> =\n this.caseDefinition$.pipe(\n map(caseDefinition => {\n const releaseVersionData = {\n caseDefinitionVersionTag: caseDefinition.caseDefinitionVersionTag ?? '-',\n basedOnVersionTag: caseDefinition.basedOnVersionTag ?? '-',\n };\n\n return Object.entries(releaseVersionData).map(([key, value]) => ({key, value}));\n })\n );\n\n public readonly releaseInformationDataEntries$: Observable<\n {key: string; value: string | Date}[]\n > = this.caseDefinition$.pipe(\n map(caseDefinition => {\n const releaseInformationData = {\n createdBy: caseDefinition.createdBy ?? '-',\n createdDate: this.datePipe.transform(caseDefinition.createdDate ?? '', 'dd-MM-yyyy'),\n description: caseDefinition.description ?? '-',\n };\n\n return Object.entries(releaseInformationData).map(([key, value]) => ({key, value}));\n })\n );\n\n private readonly _deploymentNotificationObject$ = new BehaviorSubject<NotificationContent>(null);\n public readonly deploymentNotificationObject$ =\n this._deploymentNotificationObject$.asObservable();\n\n public readonly caseDefinitionFinalizationCheckResult$: Observable<CaseDefinitionFinalizationCheckResult> =\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.getCaseDefinitionFinalizationCheck(\n caseDefinitionKey,\n caseDefinitionVersionTag\n )\n ),\n switchMap(res =>\n this.translateService.stream('key').pipe(\n tap(() => {\n switch (res.code) {\n case 'OK':\n this._deploymentNotificationObject$.next(null);\n break;\n case 'BUILDING_BLOCK_NOT_FINAL':\n this._deploymentNotificationObject$.next({\n type: 'warning',\n title: this.translateService.instant(\n 'caseManagement.deployment.notFinalizableWarning.title'\n ),\n message: this.translateService.instant(\n `caseManagement.deployment.notFinalizableWarning.${res.code}`\n ),\n showClose: false,\n lowContrast: true,\n });\n break;\n }\n }),\n map(() => res)\n )\n )\n );\n\n private _currentNotification!: Notification;\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly caseManagementService: CaseManagementService,\n private readonly datePipe: DatePipe,\n private readonly environmentService: EnvironmentService,\n private readonly iconService: IconService,\n private readonly location: AngularLocation,\n private readonly notificationService: GlobalNotificationService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(Return16);\n this.iconService.register(TrashCan16);\n this.iconService.register(Save16);\n }\n\n public ngOnInit(): void {\n this.caseDefinitionVersions$.pipe(take(1)).subscribe(versions => {\n this.caseDefinitionVersions = versions || [];\n });\n }\n\n public ngAfterViewInit(): void {\n this.initBreadcrumbs();\n }\n\n public goToCaseList(): void {\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearSecondBreadcrumb();\n this.router.navigate(['/case-management']);\n }\n\n public goBack(): void {\n this.breadcrumbService.clearThirdBreadcrumb();\n\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$])\n .pipe(take(1))\n .subscribe(([caseDefinitionKey, caseDefinitionVersionTag]) => {\n this.router.navigate([\n `/case-management/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/general`,\n ]);\n });\n }\n\n public openDeleteDraftModal(): void {\n this.showDeleteDraftConfirmationModal$.next(true);\n }\n\n public closeDeleteDraftModal(): void {\n this.showDeleteDraftConfirmationModal$.next(false);\n }\n\n public openFinalizeDraftConfirmationModal(): void {\n this.showFinalizeDraftConfirmationModal$.next(true);\n }\n\n public closeFinalizeDraftModal(): void {\n this.showFinalizeDraftConfirmationModal$.next(false);\n }\n\n public openCreateDraftVersionConfirmationModal(): void {\n this.showCreateDraftVersionConfirmationModal$.next(true);\n }\n\n public onCloseCreateDraftVersionModal(payload?): void {\n if (payload) {\n this.createDraftVersion(payload);\n }\n this.showCreateDraftVersionConfirmationModal$.next(false);\n }\n\n public deleteDraftCaseVersion(): void {\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._deleteDraftMessageTemplateRef,\n });\n\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$])\n .pipe(\n take(1),\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.deleteDraftCaseVersion(\n caseDefinitionKey,\n caseDefinitionVersionTag\n )\n )\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'caseManagement.deployment.deleteDraftConfirmationModal.successTitle'\n ),\n duration: 5000,\n });\n\n this.goToCaseList();\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'caseManagement.deployment.deleteDraftConfirmationModal.errorMessage'\n ),\n message: this.translateService.instant(\n 'caseManagement.deployment.deleteDraftConfirmationModal.errorMessage'\n ),\n duration: 5000,\n });\n },\n });\n\n this.closeDeleteDraftModal();\n }\n\n public finalizeDraftCaseVersion(): void {\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._finalizeDraftMessageTemplateRef,\n });\n\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$])\n .pipe(\n take(1),\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) => {\n return this.caseManagementService.finalizeDraftCaseVersion(\n caseDefinitionKey,\n caseDefinitionVersionTag\n );\n })\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'caseManagement.deployment.finalizeDraftConfirmationModal.successMessage'\n ),\n duration: 5000,\n });\n\n this.refreshDraftVersion$.next(null);\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'caseManagement.deployment.finalizeDraftConfirmationModal.errorMessage'\n ),\n message: this.translateService.instant(\n 'caseManagement.deployment.finalizeDraftConfirmationModal.errorMessage'\n ),\n duration: 5000,\n });\n },\n });\n\n this.closeFinalizeDraftModal();\n }\n\n public createDraftVersion(payload): void {\n this.showInfoNotification(this._createDraftMessageTemplateRef);\n\n this.caseManagementService.createDraftVersion(payload).subscribe({\n next: (response: any) => {\n this.router.navigate([\n '/case-management/case/',\n response.caseDefinitionKey,\n 'version',\n response.caseDefinitionVersionTag,\n ]);\n this.showSuccessNotification(\n 'caseManagement.deployment.createDraftConfirmationModal.successMessage'\n );\n },\n error: () => {\n this.showErrorNotification(\n 'caseManagement.deployment.createDraftConfirmationModal.errorTitle',\n 'caseManagement.deployment.createDraftConfirmationModal.errorMessage'\n );\n },\n });\n\n this.showCreateDraftVersionConfirmationModal$.next(false);\n }\n\n private initBreadcrumbs(): void {\n combineLatest([this.params$, this._caseDefinitionTitle$])\n .pipe(\n tap(([{caseDefinitionKey, caseDefinitionVersionTag}, caseDefinitionTitle]) => {\n const route = `/case-management/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`;\n\n this.breadcrumbService.setThirdBreadcrumb({\n route: [route],\n content: `${caseDefinitionTitle} `,\n href: route,\n });\n })\n )\n .subscribe();\n }\n\n private closeCurrentNotification(): void {\n if (this._currentNotification) {\n this.notificationService.close(this._currentNotification);\n }\n }\n\n private showInfoNotification(templateRef: TemplateRef<any>): void {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: templateRef,\n });\n }\n\n private showSuccessNotification(message: string): void {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(message),\n duration: 5000,\n });\n }\n\n private showErrorNotification(titleKey: string, messageKey: string): void {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(titleKey),\n message: this.translateService.instant(messageKey),\n duration: 5000,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n releaseVersionEntries: releaseVersionEntries$ | async,\n releaseInformationDataEntries: releaseInformationDataEntries$ | async,\n isDraftVersion: isDraftVersion$ | async,\n hasConflictingVersions: hasConflictingVersions$ | async,\n notificationContent: notificationContent$ | async,\n canUpdateGlobalConfiguration: canUpdateGlobalConfiguration$ | async,\n isGloballyActive: isGloballyActive$ | async,\n caseDefinitionFinalizationCheckResult: caseDefinitionFinalizationCheckResult$ | async,\n deploymentNotificationObject: deploymentNotificationObject$ | async,\n } as obs\"\n>\n <cds-notification\n *ngIf=\"\n obs.canUpdateGlobalConfiguration && obs.isDraftVersion && obs.deploymentNotificationObject\n \"\n class=\"deployment-warning-notification\"\n [notificationObj]=\"obs.deploymentNotificationObject\"\n ></cds-notification>\n\n <div class=\"header-buttons\">\n <button cdsButton=\"secondary\" (click)=\"goBack()\">\n {{ 'caseManagement.deployment.buttons.back' | translate }}\n <svg cdsIcon=\"return\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n @if (obs.canUpdateGlobalConfiguration) {\n @if (obs.isDraftVersion) {\n <div class=\"draft-buttons\">\n <button\n *ngIf=\"caseDefinitionVersions.length === 1 || !obs.isGloballyActive\"\n cdsButton=\"danger\"\n (click)=\"openDeleteDraftModal()\"\n >\n {{ 'caseManagement.deployment.buttons.delete' | translate }}\n <svg cdsIcon=\"trash-can\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n (click)=\"openFinalizeDraftConfirmationModal()\"\n [disabled]=\"!obs?.caseDefinitionFinalizationCheckResult?.finalizable\"\n >\n {{ 'caseManagement.deployment.buttons.finalize' | translate }}\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n } @else {\n <button cdsButton=\"primary\" (click)=\"openCreateDraftVersionConfirmationModal()\">\n {{ 'caseManagement.deployment.buttons.createDraft' | translate }}\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n }\n }\n </div>\n\n <div class=\"deployment-panels\">\n <ng-container\n *ngTemplateOutlet=\"\n releaseVersionPanel;\n context: {\n data: obs.releaseVersionEntries,\n showNotification: obs.hasConflictingVersions,\n notificationContent: {\n basedOnVersionTag: obs.notificationContent?.basedOnVersionTag,\n conflictingVersions: obs.notificationContent?.conflictingVersions,\n },\n }\n \"\n ></ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n releaseInformationPanel;\n context: {data: obs.releaseInformationDataEntries}\n \"\n ></ng-container>\n </div>\n</ng-container>\n\n<ng-template\n #releaseVersionPanel\n let-data=\"data\"\n let-showNotification=\"showNotification\"\n let-notificationContent=\"notificationContent\"\n>\n <div class=\"release-version\">\n <p class=\"deployment-panel-title\">\n {{ 'caseManagement.deployment.releaseVersion.title' | translate }}\n </p>\n\n <div class=\"release-version-columns\">\n <div *ngFor=\"let entry of data\" class=\"release-version-data\">\n <label class=\"release-version-data__label\">\n {{ 'caseManagement.deployment.releaseVersion.fields.' + entry.key | translate }}\n </label>\n <div class=\"release-version-data__value\">\n {{ entry.value }}\n </div>\n </div>\n </div>\n\n <cds-notification\n *ngIf=\"showNotification\"\n class=\"full-width-notification\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('caseManagement.deployment.releaseVersion.warning.title' | translate),\n message:\n ('caseManagement.deployment.releaseVersion.warning.description'\n | translate: notificationContent),\n showClose: false,\n lowContrast: true,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #releaseInformationPanel let-data=\"data\">\n <div class=\"release-information\">\n <p class=\"deployment-panel-title\">\n {{ 'caseManagement.deployment.releaseInformation.title' | translate }}\n </p>\n\n <div class=\"release-version-columns\">\n <ng-container *ngFor=\"let entry of data\">\n <div class=\"release-version-data\" *ngIf=\"entry?.key && entry?.value !== undefined\">\n <label class=\"release-version-data__label\">\n {{ 'caseManagement.deployment.releaseInformation.fields.' + entry.key | translate }}\n </label>\n <div class=\"release-version-data__value\">\n {{ entry.value }}\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteDraftConfirmationModal$\"\n (confirmEvent)=\"deleteDraftCaseVersion()\"\n (cancelEvent)=\"closeDeleteDraftModal()\"\n cancelButtonType=\"ghost\"\n confirmButtonType=\"danger\"\n confirmButtonTextTranslationKey=\"caseManagement.deployment.deleteDraftConfirmationModal.confirm\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n titleTranslationKey=\"caseManagement.deployment.deleteDraftConfirmationModal.title\"\n contentTranslationKey=\"caseManagement.deployment.deleteDraftConfirmationModal.description\"\n>\n</valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showFinalizeDraftConfirmationModal$\"\n [content]=\"finalizeDraftDescription$ | async\"\n (confirmEvent)=\"finalizeDraftCaseVersion()\"\n (cancelEvent)=\"closeFinalizeDraftModal()\"\n cancelButtonType=\"ghost\"\n confirmButtonType=\"primary\"\n confirmButtonTextTranslationKey=\"caseManagement.deployment.finalizeDraftConfirmationModal.confirm\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n titleTranslationKey=\"caseManagement.deployment.finalizeDraftConfirmationModal.title\"\n></valtimo-confirmation-modal>\n\n<valtimo-case-management-create-draft-version\n [open]=\"showCreateDraftVersionConfirmationModal$ | async\"\n [caseDefinitionPayload]=\"caseDefinitionPayload$ | async\"\n (closeModal)=\"onCloseCreateDraftVersionModal($event)\"\n></valtimo-case-management-create-draft-version>\n\n<ng-template #loadingMessage let-translationKey=\"translationKey\">\n <div>\n <span class=\"cds--inline-notification__title\">\n {{ translationKey | translate }}\n </span>\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #createDraftMessage>\n <ng-container\n *ngTemplateOutlet=\"\n loadingMessage;\n context: {\n translationKey: 'caseManagement.deployment.createDraftConfirmationModal.loadingText',\n }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template #finalizeDraftMessage>\n <ng-container\n *ngTemplateOutlet=\"\n loadingMessage;\n context: {\n translationKey: 'caseManagement.deployment.finalizeDraftConfirmationModal.loadingText',\n }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template #deleteDraftMessage>\n <ng-container\n *ngTemplateOutlet=\"\n loadingMessage;\n context: {\n translationKey: 'caseManagement.deployment.finalizeDraftConfirmationModal.loadingText',\n }\n \"\n >\n </ng-container>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {BehaviorSubject, Observable, switchMap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {ColumnConfig, Pagination, ViewType} from '@valtimo/components';\nimport {CaseManagementService} from '../../services';\nimport {map} from 'rxjs/operators';\nimport {CaseListItem} from '../../models';\nimport {Page} from '@valtimo/document';\nimport {CaseVersionListItem} from '../../models/case-version-list.model';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-select-version-modal',\n templateUrl: './case-management-select-version-modal.component.html',\n styleUrls: ['./case-management-select-version-modal.component.scss'],\n})\nexport class CaseManagementSelectVersionModalComponent {\n @Input() open = false;\n @Input() previousSelectedVersion = '';\n\n public readonly caseDefinitionKey$ = new BehaviorSubject<string>('');\n public readonly caseDefinitionTitle$ = new BehaviorSubject<string>('');\n @Input() set caseDefinitionKey(value: string) {\n this.caseDefinitionKey$.next(value);\n }\n @Input() set caseDefinitionTitle(value: string) {\n this.caseDefinitionTitle$.next(value);\n }\n\n @Output() closeEvent = new EventEmitter();\n @Output() selectedVersion = new EventEmitter();\n\n private _paginationInitialized = false;\n\n public pagination: Pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n };\n\n public readonly pagination$ = new BehaviorSubject<Pagination | null>(null);\n\n public readonly versionItems$: Observable<CaseListItem[]> = this.caseDefinitionKey$.pipe(\n switchMap(key => this.caseManagementService.getAllCaseVersions({caseDefinitionKey: key})),\n map((page: Page<CaseVersionListItem>) => {\n this.pagination$.next({\n size: page.size,\n page: page.number + 1,\n collectionSize: +page.totalElements,\n });\n\n return page.content.map((version: any) => ({\n ...version,\n versionTags: [\n {\n content: version.final\n ? version.caseDefinitionVersionTag\n : `DRAFT: ${version.caseDefinitionVersionTag}`,\n type: version.final ? 'green' : 'red',\n },\n ],\n }));\n\n return page.content;\n })\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'versionTags',\n label: 'caseManagement.allVersionsModal.columns.version',\n viewType: ViewType.TAGS,\n },\n {\n key: 'createdDate',\n label: 'caseManagement.allVersionsModal.columns.release',\n viewType: ViewType.DATE_TIME,\n },\n {\n key: 'description',\n label: 'caseManagement.allVersionsModal.columns.description',\n viewType: ViewType.TEXT,\n },\n ];\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly caseManagementService: CaseManagementService\n ) {}\n\n public paginationClicked(page: number): void {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {page: page - 1},\n queryParamsHandling: 'merge',\n });\n }\n\n public paginationSet(size: number): void {\n if (!this._paginationInitialized) {\n this._paginationInitialized = true;\n return;\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {size},\n queryParamsHandling: 'merge',\n });\n }\n\n public selectActiveVersion(event: {caseDefinitionVersionTag: string}): void {\n this.emitSelectedVersion(event?.caseDefinitionVersionTag);\n }\n\n public onCloseModal(): void {\n this.emitSelectedVersion(this.previousSelectedVersion);\n }\n\n private emitSelectedVersion(caseDefinitionVersionTag: string): void {\n this.selectedVersion.emit(caseDefinitionVersionTag);\n this.closeEvent.emit();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal showFooter=\"true\" [open]=\"open\" (close)=\"onCloseModal()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n 'caseManagement.allVersionsModal.title'\n | translate: {value: (caseDefinitionTitle$ | async) ?? ''}\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <valtimo-carbon-list\n [hideToolbar]=\"true\"\n [items]=\"versionItems$ | async\"\n [fields]=\"FIELDS\"\n (rowClicked)=\"selectActiveVersion($event)\"\n [pagination]=\"pagination$ | async\"\n paginationIdentifier=\"caseManagementList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n cdsLayer=\"1\"\n >\n <valtimo-no-results\n [title]=\"'caseManagement.allVersionsModal.noResults.description' | translate\"\n [description]=\"'caseManagement.allVersionsModal.noResults.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'caseManagement.allVersionsModal.closeButton' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {DOCUMENT} from '@angular/common';\nimport {HttpResponse} from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Deploy16, Version16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PageHeaderService} from '@valtimo/components';\nimport {getCaseManagementRouteParams, GlobalNotificationService} from '@valtimo/shared';\nimport {IconService, ListItem, Notification} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, of, switchMap, tap} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {lt, valid} from 'semver';\nimport {CaseDetailService, CaseManagementService} from '../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-detail-actions',\n templateUrl: './case-management-detail-actions.component.html',\n styleUrls: ['./case-management-detail-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementDetailActionsComponent {\n @ViewChild('exportingMessage')\n private readonly _exportMessageTemplateRef: TemplateRef<HTMLDivElement>;\n\n @Input() public documentDefinitionTitle = '';\n @Input() public set caseDefinitionKey(value: string) {\n this.caseDetailService.setSelectedCaseDefinitionKey(value);\n }\n @Output() public versionSet = new EventEmitter<number>();\n\n public readonly CARBON_THEME = 'g10';\n\n public readonly showAllVersionsModal$ = new BehaviorSubject<boolean>(false);\n public readonly exporting$ = new BehaviorSubject<boolean>(false);\n public readonly selectedVersionNumber$ = this.caseDetailService.selectedCaseDefinitionVersionTag$;\n public readonly selectedVersion$ = new BehaviorSubject<string>('');\n\n public readonly params$ = getCaseManagementRouteParams(this.route).pipe(\n tap(({caseDefinitionVersionTag}) => this.selectedVersion$.next(caseDefinitionVersionTag))\n );\n public readonly caseDefinitionKey$: Observable<string> = this.params$.pipe(\n map(params => params.caseDefinitionKey || '')\n );\n public readonly caseDefinitionVersionTag$: Observable<string> = this.params$.pipe(\n map(params => params.caseDefinitionVersionTag || '')\n );\n\n public readonly globalActiveVersion$ = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n this.caseManagementService\n .getGlobalActiveCase(caseDefinitionKey)\n .pipe(map(result => result.caseDefinitionVersionTag))\n )\n );\n\n public readonly selectedVersionIsGloballyActive$: Observable<boolean> = combineLatest([\n this.selectedVersion$,\n this.globalActiveVersion$,\n ]).pipe(map(([selectedVersion, globalActiveVersion]) => selectedVersion === globalActiveVersion));\n\n private readonly _caseDefinitionKey$ = this.caseDetailService.selectedCaseDefinitionKey$;\n public readonly loadingVersion$ = new BehaviorSubject<boolean>(true);\n public readonly showGlobalVersionModal$ = new BehaviorSubject<boolean>(false);\n public readonly showGlobalVersionConfirmationModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly _globalActiveCase$: Observable<any> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n this.caseManagementService.getGlobalActiveCase(caseDefinitionKey)\n )\n );\n\n public readonly _caseDefinitionTitle$: Observable<string> = this._globalActiveCase$.pipe(\n map(result => result.name)\n );\n\n public readonly selectedDocumentDefinition$ = this.caseDetailService.documentDefinition$;\n\n public readonly selectedDocumentDefinitionIsReadOnly$ =\n this.caseDetailService.selectedDocumentDefinitionIsReadOnly$;\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n public readonly isOlderVersionSelected$: Observable<boolean> = combineLatest([\n this.globalActiveVersion$,\n this.selectedVersion$,\n ]).pipe(\n map(([currentVersion, selectedVersion]) => {\n return valid(currentVersion) && valid(selectedVersion) && lt(selectedVersion, currentVersion);\n })\n );\n\n private readonly _cachedVersions = new BehaviorSubject<ListItem[] | null>(null);\n public readonly versionSelectorItems$: Observable<ListItem[] | null> = combineLatest([\n this.route.params,\n this.selectedVersion$,\n ]).pipe(\n switchMap(([{caseDefinitionKey}, selectedVersion]) =>\n combineLatest([\n this._cachedVersions.getValue() === null\n ? this.caseManagementService.getCaseDefinitionVersions(caseDefinitionKey)\n : this._cachedVersions.asObservable(),\n of(selectedVersion),\n ])\n ),\n map(([caseDefinitionVersions, selectedVersion]) => {\n if (!caseDefinitionVersions) {\n return null;\n }\n\n this.loadingVersion$.next(false);\n\n const dropdownListVersions = caseDefinitionVersions.slice(0, 5);\n const isSelectedOnTheList = dropdownListVersions.some(\n version => version.versionTag === selectedVersion\n );\n\n let limitedVersions = dropdownListVersions;\n\n if (!isSelectedOnTheList && selectedVersion) {\n const selectedVersionObj = caseDefinitionVersions.find(\n caseVersion => caseVersion.versionTag === selectedVersion\n );\n if (selectedVersionObj) {\n limitedVersions = [...dropdownListVersions.slice(0, 4), selectedVersionObj];\n }\n }\n\n const mapping: ListItem[] = limitedVersions.map(({versionTag, active, final}) => ({\n content: versionTag,\n selected: versionTag === selectedVersion,\n active,\n tagType: final ? 'green' : 'red',\n isAllVersionsOption: false,\n draft: !final,\n 'data-test-id': `caseVersion${versionTag}`,\n }));\n\n const allVersionsItem: ListItem = {\n content: this.translateService.instant('caseManagement.seeAllVersions'),\n selected: false,\n active: false,\n isAllVersionsOption: true,\n 'data-test-id': 'caseSeeAllVersionsButton',\n };\n\n return [...mapping, allVersionsItem];\n })\n );\n\n private _currentNotification!: Notification;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private readonly caseManagementService: CaseManagementService,\n private readonly caseDetailService: CaseDetailService,\n private readonly notificationService: GlobalNotificationService,\n private readonly iconService: IconService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(Version16);\n this.iconService.register(Deploy16);\n }\n\n public export(): void {\n this.closeCurrentNotification();\n\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._exportMessageTemplateRef,\n });\n\n let selectedVersionNumber!: string;\n\n this.startExporting();\n\n combineLatest([this.selectedVersionNumber$, this._caseDefinitionKey$])\n .pipe(\n take(1),\n tap(([selectedVersion]) => (selectedVersionNumber = selectedVersion ?? '0')),\n switchMap(([selectedVersion, documentDefinitionName]) =>\n this.caseManagementService.exportDocumentDefinition(\n documentDefinitionName,\n selectedVersion ?? '0'\n )\n )\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('caseManagement.exportSuccessTitle'),\n duration: 5000,\n });\n this.downloadZip(response, selectedVersionNumber);\n this.stopExporting();\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('caseManagement.exportErrorTitle'),\n message: this.translateService.instant('caseManagement.exportErrorMessage'),\n duration: 5000,\n });\n this.stopExporting();\n },\n });\n }\n\n public selectVersion(version: any): void {\n if (version?.item?.isAllVersionsOption) {\n this.showAllVersionsModal();\n } else {\n this.setVersion(version?.item?.content);\n }\n }\n\n public selectVersionFromModal(version: string): void {\n this.setVersion(version);\n }\n\n public openGlobalActiveVersionModal(): void {\n this.showGlobalVersionModal$.next(true);\n }\n\n public closeGlobalVersionCaseModal(): void {\n this.showGlobalVersionModal$.next(false);\n }\n\n public showAllVersionsModal(): void {\n this.showAllVersionsModal$.next(true);\n }\n\n public closeAllVersionsModal(): void {\n this.showAllVersionsModal$.next(false);\n }\n\n public openGlobalCaseVersionConfirmationModal(): void {\n this.showGlobalVersionModal$.next(false);\n this.showGlobalVersionConfirmationModal$.next(true);\n }\n\n public closeGlobalCaseConfirmationModal(): void {\n this.showGlobalVersionConfirmationModal$.next(false);\n }\n\n public setGlobalActiveCaseVersion(): void {\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._exportMessageTemplateRef,\n });\n\n combineLatest([this._caseDefinitionKey$, this.selectedVersion$])\n .pipe(\n take(1),\n switchMap(([caseDefinitionKey, selectedVersion]) =>\n this.caseManagementService.setGlobalActiveCaseVersion(caseDefinitionKey, selectedVersion)\n ),\n tap((result: any) => this.selectedVersion$.next(result.caseDefinitionVersionTag))\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'caseManagement.setGlobalActiveVersionSuccessTitle'\n ),\n duration: 5000,\n });\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('caseManagement.setGlobalActiveVersionErrorTitle'),\n message: this.translateService.instant(\n 'caseManagement.setGlobalActiveVersionErrorMessage'\n ),\n duration: 5000,\n });\n },\n });\n\n this.showGlobalVersionConfirmationModal$.next(false);\n }\n\n public redirectToDeployment(): void {\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$])\n .pipe(\n tap(([caseDefinitionKey, caseDefinitionVersionTag]) => {\n this.router.navigate([\n '/case-management/case',\n caseDefinitionKey,\n 'version',\n caseDefinitionVersionTag,\n 'deployment',\n ]);\n })\n )\n .subscribe();\n }\n\n private startExporting(): void {\n this.exporting$.next(true);\n }\n\n private stopExporting(): void {\n this.exporting$.next(false);\n }\n\n private downloadZip(response: HttpResponse<Blob>, caseDefinitionVersionTag: string): void {\n const link = document.createElement('a');\n const contentDisposition = response.headers.get('content-disposition');\n const splitContentDisposition = contentDisposition?.split('filename=') ?? [];\n const fileName = splitContentDisposition.length > 1 && splitContentDisposition[1];\n\n link.href = this.document.defaultView?.URL.createObjectURL(response.body) ?? '';\n link.download = fileName || `${this.caseDefinitionKey}_${caseDefinitionVersionTag}.valtimo.zip`;\n link.target = '_blank';\n link.click();\n link.remove();\n }\n\n private closeCurrentNotification(): void {\n if (this._currentNotification) {\n this.notificationService.close(this._currentNotification);\n }\n }\n\n private findLargestInArray(array: Array<number>): number {\n return array.reduce(function (a, b) {\n return a > b ? a : b;\n });\n }\n\n private setVersion(version: string): void {\n this.selectedVersion$.next(version);\n this.router.navigate([`../${version}/${this.route.firstChild?.routeConfig?.path}`], {\n relativeTo: this.route,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"case-actions\"\n *ngIf=\"{\n exporting: exporting$ | async,\n loadingVersion: loadingVersion$ | async,\n versionItems: versionSelectorItems$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n selectedDocumentDefinitionIsReadOnly: selectedDocumentDefinitionIsReadOnly$ | async,\n selectedVersionIsGloballyActive: selectedVersionIsGloballyActive$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n [ngClass]=\"{'--compact': obs.compactMode}\"\n>\n <div class=\"case-metadata\">\n <ng-container *ngTemplateOutlet=\"versionSelection; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"readOnly; context: {obs: obs}\"></ng-container>\n </div>\n\n <div class=\"case-buttons\">\n <ng-container *ngTemplateOutlet=\"deploymentButton; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"exportMenu; context: {obs: obs}\"></ng-container>\n </div>\n</div>\n\n<ng-template #versionSelection let-obs=\"obs\">\n <cds-dropdown\n class=\"version-selector\"\n data-test-id=\"caseVersionSelectDropdown\"\n selectionFeedback=\"fixed\"\n [displayValue]=\"versionItemTemplate\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n [appendInline]=\"false\"\n [disabled]=\"!obs?.versionItems?.length || obs?.versionItems?.length === 1\"\n [skeleton]=\"obs.loadingVersion\"\n (selected)=\"selectVersion($event)\"\n >\n <cds-dropdown-list\n [items]=\"obs?.versionItems || []\"\n [listTpl]=\"versionItemTemplate\"\n ></cds-dropdown-list>\n </cds-dropdown>\n</ng-template>\n\n<ng-template #versionItemTemplate let-item=\"item\">\n <div\n [attr.data-test-id]=\"item?.['data-test-id']\"\n *ngIf=\"item?.isAllVersionsOption; else regularVersionTemplate\"\n >\n <span>{{ item?.content }}</span>\n <svg cdsIcon=\"version\" size=\"16\"></svg>\n </div>\n\n <ng-template #regularVersionTemplate>\n <div [attr.data-test-id]=\"item?.['data-test-id']\" class=\"version-selector-dropdown-template\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"item?.tagType\" [title]=\"item?.content\">\n {{ item?.draft ? 'DRAFT: ' + item?.content : item?.content }}\n </cds-tag>\n\n <cds-tag\n *ngIf=\"item?.active\"\n data-test-id=\"globally-active-case-version\"\n class=\"cds-tag--no-margin\"\n type=\"high-contrast\"\n >\n {{ 'caseManagement.globallyActive' | translate }}\n </cds-tag>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #deploymentButton let-obs=\"obs\">\n <button\n cdsButton=\"secondary\"\n data-test-id=\"caseVersionManagementButton\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"redirectToDeployment()\"\n >\n {{ 'caseManagement.deployment.title' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #exportMenu let-obs=\"obs\">\n <cds-overflow-menu\n valtimoCdsOverflowButton\n [width]=\"250\"\n [customTrigger]=\"customTrigger\"\n [offset]=\"{y: 48, x: 37}\"\n class=\"overflow-button\"\n >\n <cds-overflow-menu-option\n data-test-id=\"caseExportButton\"\n [id]=\"'exportDocumentDefinition'\"\n [disabled]=\"obs.exporting || obs.loadingVersion\"\n (selected)=\"export()\"\n >{{ 'caseManagement.export' | translate: {value: documentDefinitionTitle} }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n data-test-id=\"caseSetActiveVersionButton\"\n [id]=\"'setGlobalActiveVersion'\"\n [disabled]=\"obs.selectedVersionIsGloballyActive\"\n (selected)=\"openGlobalActiveVersionModal()\"\n >{{ 'caseManagement.setGlobalActiveVersion' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n</ng-template>\n\n<ng-template #customTrigger>\n <button\n cdsButton=\"tertiary\"\n data-test-id=\"caseMoreButton\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n >\n {{ 'caseManagement.more' | translate }}\n\n <svg\n class=\"cds--btn__icon case-management-overflow-icon\"\n cdsIcon=\"overflow-menu--vertical\"\n size=\"16\"\n ></svg>\n </button>\n</ng-template>\n\n<ng-template #exportingMessage>\n <div class=\"exporting-message\">\n <span class=\"cds--inline-notification__title\">{{\n 'caseManagement.preparingDownload' | translate\n }}</span>\n\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #readOnly let-obs=\"obs\">\n <cds-tag *ngIf=\"obs.selectedDocumentDefinitionIsReadOnly\" type=\"blue\">{{\n 'caseManagement.readonly' | translate\n }}</cds-tag>\n</ng-template>\n\n<valtimo-case-management-select-version-modal\n [open]=\"showAllVersionsModal$ | async\"\n [caseDefinitionTitle]=\"_caseDefinitionTitle$ | async\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [previousSelectedVersion]=\"selectedVersion$ | async\"\n (closeEvent)=\"closeAllVersionsModal()\"\n (selectedVersion)=\"selectVersionFromModal($event)\"\n></valtimo-case-management-select-version-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showGlobalVersionModal$\"\n cancelButtonType=\"ghost\"\n cancelButtonTextTranslationKey=\"caseManagement.globalActiveVersionModal.cancel\"\n confirmButtonTextTranslationKey=\"caseManagement.globalActiveVersionModal.continue\"\n titleTranslationKey=\"caseManagement.globalActiveVersionModal.title\"\n contentTranslationKey=\"caseManagement.globalActiveVersionModal.description\"\n (cancelEvent)=\"closeGlobalVersionCaseModal()\"\n (confirmEvent)=\"openGlobalCaseVersionConfirmationModal()\"\n>\n <cds-notification\n *ngIf=\"isOlderVersionSelected$ | async\"\n class=\"full-width-notification\"\n [notificationObj]=\"{\n type: 'warning',\n title: 'caseManagement.globalActiveVersionModal.warningTitle' | translate,\n message: 'caseManagement.globalActiveVersionModal.warningMessage' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n >\n </cds-notification>\n</valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showGlobalVersionConfirmationModal$\"\n cancelButtonType=\"ghost\"\n cancelButtonTextTranslationKey=\"caseManagement.confirmationGlobalVersionModal.cancel\"\n confirmButtonType=\"danger\"\n confirmButtonTextTranslationKey=\"caseManagement.confirmationGlobalVersionModal.confirm\"\n contentTranslationKey=\"caseManagement.confirmationGlobalVersionModal.description\"\n titleTranslationKey=\"caseManagement.confirmationGlobalVersionModal.title\"\n (cancelEvent)=\"closeGlobalCaseConfirmationModal()\"\n (confirmEvent)=\"setGlobalActiveCaseVersion()\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {PageTitleService} from '@valtimo/components';\nimport {DocumentDefinition} from '@valtimo/document';\nimport {\n CaseManagementParams,\n CaseManagementTabConfig,\n ConfigService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {Tab} from 'carbon-components-angular';\nimport {combineLatest, filter, map, Observable, startWith, Subscription} from 'rxjs';\nimport {TabEnum} from '../../models';\nimport {CaseDetailService, TabService} from '../../services';\n\n@Component({\n standalone: false,\n templateUrl: './case-management-detail.component.html',\n styleUrls: ['./case-management-detail.component.scss'],\n providers: [CaseDetailService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementDetailComponent implements OnInit, OnDestroy {\n @ViewChildren(Tab) private _tabs: QueryList<Tab>;\n\n private _params: CaseManagementParams | undefined;\n\n public readonly params$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n\n public readonly caseDefinitionKey$ = this.params$.pipe(\n map(params => params?.caseDefinitionKey ?? '')\n );\n\n public caseListColumn!: boolean;\n public tabManagementEnabled!: boolean;\n\n public _activeTab: TabEnum | string;\n public pendingTab: TabEnum | null | string;\n\n public readonly currentTab$ = this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map(event => {\n const urlWithoutQuery = (event as NavigationEnd).urlAfterRedirects.split('?')[0];\n const splitUrl = urlWithoutQuery.split('/');\n return splitUrl[splitUrl.length - 1];\n }),\n startWith(this.route.firstChild?.routeConfig?.path)\n );\n\n public readonly injectedCaseManagementTabs$: Observable<CaseManagementTabConfig[]> =\n this.tabService.injectedCaseManagementTabs$;\n\n public readonly documentDefinitionTitle$ = this.pageTitleService.customPageTitle$;\n\n public readonly TabEnum = TabEnum;\n\n private _activeVersion: string | null;\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly caseDetailService: CaseDetailService,\n private readonly configService: ConfigService,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly tabService: TabService\n ) {\n const featureToggles = this.configService.config.featureToggles;\n this.caseListColumn = featureToggles?.caseListColumn ?? true;\n this.tabManagementEnabled = featureToggles?.enableTabManagement ?? true;\n }\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.caseDetailService.documentDefinition$.subscribe(\n (documentDefinition: DocumentDefinition | null) => {\n if (!documentDefinition) return;\n\n this.pageTitleService.setCustomPageTitle(documentDefinition.schema.title);\n }\n )\n );\n this.openActiveVersionSubscription();\n this.pageTitleService.disableReset();\n this.openParamsSubscription();\n }\n\n public ngOnDestroy(): void {\n this.tabService.currentTab = TabEnum.GENERAL;\n this._subscriptions.unsubscribe();\n this.pageTitleService.enableReset();\n }\n\n public navigateToTab(tab: TabEnum | string): void {\n if (!this._params) return;\n\n this.router.navigateByUrl(\n `case-management/case/${this._params.caseDefinitionKey}/version/${this._params.caseDefinitionVersionTag}/${tab}`\n );\n }\n\n public openTabCheckSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._tabs.changes, this.currentTab$]).subscribe(([tabs, currentTab]) => {\n tabs.forEach((tab: Tab) => (tab.active = tab.id === currentTab));\n })\n );\n }\n\n public onCancelRedirectEvent(): void {\n if (this._activeVersion) {\n this.caseDetailService.setPreviousSelectedCaseDefinitionVersionTag(`${this._activeVersion}`);\n this._activeVersion = null;\n return;\n }\n\n if (!this.pendingTab) {\n return;\n }\n this.tabService.currentTab = this.pendingTab;\n }\n\n public onVersionSet(version: number): void {\n this.caseDetailService.setSelectedCaseDefinitionVersionTag(`${version}`);\n }\n\n private openActiveVersionSubscription(): void {\n this._subscriptions.add(\n this.caseDetailService.selectedCaseDefinitionVersionTag$.subscribe(\n (versionTag: string | null) => {\n this._activeVersion = versionTag;\n }\n )\n );\n }\n\n private openParamsSubscription(): void {\n this._subscriptions.add(\n this.params$.subscribe(params => {\n this.caseDetailService.setSelectedCaseDefinitionKey(params?.caseDefinitionKey ?? '');\n this.caseDetailService.setSelectedCaseDefinitionVersionTag(\n params?.caseDefinitionVersionTag ?? ''\n );\n this._params = params;\n })\n );\n }\n\n protected onCanDeactivate(): void {\n //TODO: Fix pending changes with new routing\n // this._documentDefinitionTab?.onCanDeactivate();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n currentTab: currentTab$ | async,\n injectedTabs: injectedCaseManagementTabs$ | async,\n } as obs\"\n class=\"case-management-detail-container\"\n>\n <cds-tabs class=\"case-management-tabs\" type=\"inline\" data-test-id=\"caseManagementTabs\">\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.GENERAL\"\n [active]=\"obs.currentTab === TabEnum.GENERAL\"\n [heading]=\"'caseManagement.tabs.general' | translate\"\n (selected)=\"navigateToTab(TabEnum.GENERAL)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.PROCESSES\"\n [active]=\"obs.currentTab === TabEnum.PROCESSES\"\n [heading]=\"'caseManagement.tabs.processes' | translate\"\n (selected)=\"navigateToTab(TabEnum.PROCESSES)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.DECISIONS\"\n [active]=\"obs.currentTab === TabEnum.DECISIONS\"\n [heading]=\"'caseManagement.tabs.decision' | translate\"\n (selected)=\"navigateToTab(TabEnum.DECISIONS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.DOCUMENT\"\n [active]=\"obs.currentTab === TabEnum.DOCUMENT\"\n [heading]=\"'caseManagement.tabs.document' | translate\"\n (selected)=\"navigateToTab(TabEnum.DOCUMENT)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.FORMS\"\n [active]=\"obs.currentTab === TabEnum.FORMS\"\n [heading]=\"'caseManagement.tabs.forms' | translate\"\n (selected)=\"navigateToTab(TabEnum.FORMS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.FORM_FLOWS\"\n [active]=\"obs.currentTab === TabEnum.FORM_FLOWS\"\n [heading]=\"'caseManagement.tabs.formFlows' | translate\"\n (selected)=\"navigateToTab(TabEnum.FORM_FLOWS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.TASKS\"\n [active]=\"obs.currentTab === TabEnum.TASKS\"\n [heading]=\"'caseManagement.tabs.tasks' | translate\"\n (selected)=\"navigateToTab(TabEnum.TASKS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [id]=\"TabEnum.CASE_LIST\"\n [active]=\"obs.currentTab === TabEnum.CASE_LIST\"\n [heading]=\"'caseManagement.tabs.caseListTab.title' | translate\"\n (selected)=\"navigateToTab(TabEnum.CASE_LIST)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [id]=\"TabEnum.CASE_DETAILS\"\n [active]=\"obs.currentTab === TabEnum.CASE_DETAILS\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.title' | translate\"\n (selected)=\"navigateToTab(TabEnum.CASE_DETAILS)\"\n >\n </cds-tab>\n\n @for (injectedTab of obs.injectedTabs; track injectedTab.translationKey) {\n @if (injectedTab.enabled$ | async) {\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === injectedTab.translationKey\"\n [heading]=\"injectedTab.translationKey | translate\"\n (selected)=\"navigateToTab(injectedTab.tabRoute ?? injectedTab.translationKey)\"\n >\n </cds-tab>\n }\n }\n </cds-tabs>\n\n <div class=\"case-management-detail-container__content\">\n <router-outlet></router-outlet>\n </div>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <valtimo-case-management-detail-actions\n [documentDefinitionTitle]=\"documentDefinitionTitle$ | async\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n (versionSet)=\"onVersionSet($event)\"\n ></valtimo-case-management-detail-actions>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Edit16, Save16} from '@carbon/icons';\nimport {ConfirmationModalComponent, EditorModel, PageHeaderService} from '@valtimo/components';\nimport {DocumentDefinitionCreateRequest, DocumentService} from '@valtimo/document';\nimport {\n CaseManagementParams,\n EditPermissionsService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {switchMap, take} from 'rxjs/operators';\nimport {CaseDetailService} from '../../../../services';\n\n@Component({\n standalone: false,\n templateUrl: './case-management-document-definition.component.html',\n styleUrls: ['./case-management-document-definition.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementDocumentDefinitionComponent {\n @ViewChild('cancelModal') public cancelModal: ConfirmationModalComponent;\n @Input() caseDefinitionKey: string;\n @Output() cancelRedirect = new EventEmitter();\n @Output() confirmRedirect = new EventEmitter();\n @Output() pendingChangesUpdate = new EventEmitter<boolean>();\n\n public readonly loadingDocumentDefinition$ = this.caseDetailService.loadingDocumentDefinition$;\n private readonly _refreshEditor$ = new BehaviorSubject<null>(null);\n public readonly documentDefinitionModel$: Observable<EditorModel> = this._refreshEditor$.pipe(\n switchMap(() => this.caseDetailService.documentDefinitionModel$)\n );\n\n private readonly _pendingChanges$ = new BehaviorSubject<boolean>(false);\n public readonly selectedDocumentDefinition$ = this.caseDetailService.documentDefinition$;\n\n public readonly params$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n\n public readonly hasEditPermissions$: Observable<boolean> = this.params$.pipe(\n switchMap(params =>\n this.editPermissionsService.hasEditPermissions(\n params?.caseDefinitionKey ?? '',\n params?.caseDefinitionVersionTag ?? ''\n )\n )\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly caseDetailService: CaseDetailService,\n private readonly iconService: IconService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly route: ActivatedRoute,\n private readonly editPermissionsService: EditPermissionsService\n ) {\n this.iconService.registerAll([Edit16, Save16]);\n this._pendingChanges$.subscribe((pendingChanges: boolean) =>\n this.pendingChangesUpdate.emit(pendingChanges)\n );\n }\n\n public downloadDefinition(): void {\n this.selectedDocumentDefinition$.pipe(take(1)).subscribe(definition => {\n const {blueprintKey, blueprintVersionTag} = definition.id.blueprintId;\n const dataString =\n 'data:text/json;charset=utf-8,' +\n encodeURIComponent(JSON.stringify(definition.schema, null, 2));\n const downloadAnchorElement = document.getElementById('downloadAnchorElement');\n if (!downloadAnchorElement) {\n return;\n }\n\n downloadAnchorElement.setAttribute('href', dataString);\n downloadAnchorElement.setAttribute(\n 'download',\n `${blueprintKey}-v${blueprintVersionTag}.json`\n );\n downloadAnchorElement.click();\n });\n }\n\n public onDiscardEvent(): void {\n this._pendingChanges$.next(false);\n this.confirmRedirect.emit();\n }\n\n public onKeepEditingEvent(): void {\n this.cancelRedirect.emit();\n }\n\n public onSaveEvent(definition): void {\n const newDocumentDefinition = new DocumentDefinitionCreateRequest(JSON.stringify(definition));\n\n this.params$\n .pipe(\n switchMap(params =>\n this.documentService.updateDocumentDefinitionForManagement(\n params?.caseDefinitionKey ?? '',\n params?.caseDefinitionVersionTag ?? '',\n newDocumentDefinition\n )\n )\n )\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.caseDetailService.setSelectedCaseDefinitionKey(this.caseDefinitionKey);\n this.confirmRedirect.emit();\n this._pendingChanges$.next(false);\n this.caseDetailService.reloadDocumentDefinition();\n },\n error: () => {\n this.cancelRedirect.emit();\n },\n });\n }\n\n public onChangeEvent(): void {\n this._pendingChanges$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-json-editor\n [model]=\"documentDefinitionModel$ | async\"\n [fitPage]=\"true\"\n [fitPageSpaceAdjustment]=\"128\"\n [showEditButton]=\"hasEditPermissions$ | async\"\n (changeEvent)=\"onChangeEvent()\"\n (discardEvent)=\"onDiscardEvent()\"\n (keepEditingEvent)=\"onKeepEditingEvent()\"\n (saveEvent)=\"onSaveEvent($event)\"\n>\n <button\n cdsButton=\"ghost\"\n [disabled]=\"\n (loadingDocumentDefinition$ | async) || (selectedDocumentDefinition$ | async) === null\n \"\n (click)=\"downloadDefinition()\"\n >\n {{ 'interface.download' | translate }}\n\n <svg cdsIcon=\"download\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</valtimo-json-editor>\n\n<a id=\"downloadAnchorElement\" style=\"display: none\"></a>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, Input} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Information16} from '@carbon/icons';\nimport {CaseSettings, DocumentService} from '@valtimo/document';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n finalize,\n map,\n Observable,\n switchMap,\n of,\n debounceTime,\n startWith,\n} from 'rxjs';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-case-handler',\n templateUrl: './case-management-case-handler.component.html',\n styleUrl: './case-management-case-handler.component.scss',\n})\nexport class CaseManagementCaseHandlerComponent {\n @Input() public readonly isReadOnly: boolean;\n\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly params$: Observable<CaseManagementParams> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n map((params: CaseManagementParams | undefined) => ({\n caseDefinitionKey: params?.caseDefinitionKey ?? '',\n caseDefinitionVersionTag: params?.caseDefinitionVersionTag ?? '',\n }))\n );\n\n public readonly caseDefinitionKey$: Observable<string> | undefined = this.params$?.pipe(\n map(({caseDefinitionKey}) => caseDefinitionKey || '')\n );\n\n public readonly caseDefinitionVersionTag$: Observable<string> | undefined = this.params$?.pipe(\n map(({caseDefinitionVersionTag}) => caseDefinitionVersionTag || '')\n );\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n public readonly currentValue$: Observable<CaseSettings> = this._refresh$.pipe(\n switchMap(() => this.params$),\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.documentService.getCaseSettingsForManagement(caseDefinitionKey, caseDefinitionVersionTag)\n ),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private route: ActivatedRoute\n ) {\n this.iconService.registerAll([Information16]);\n }\n\n public updateCaseSettings(\n caseSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): void {\n this.disableInput();\n\n this.documentService\n .patchCaseSettingsForManagement(caseDefinitionKey, caseDefinitionVersionTag, caseSettings)\n .pipe(finalize(() => this.enableInput()))\n .subscribe(() => this.refreshSettings());\n }\n\n public disableInput(): void {\n this.disabled$.next(true);\n }\n\n public enableInput(): void {\n this.disabled$.next(false);\n }\n\n private refreshSettings(): void {\n this._refresh$.next(null);\n }\n\n public toggleAssignee(\n currentSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ) {\n const newCanHaveAssignee = !currentSettings?.canHaveAssignee;\n\n this.updateCaseSettings(\n {\n canHaveAssignee: newCanHaveAssignee,\n autoAssignTasks: newCanHaveAssignee ? currentSettings.autoAssignTasks : false,\n },\n caseDefinitionKey,\n caseDefinitionVersionTag\n );\n }\n\n public toggleTaskAssignment(\n currentSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ) {\n this.updateCaseSettings(\n {\n canHaveAssignee: currentSettings?.canHaveAssignee,\n autoAssignTasks: !currentSettings.autoAssignTasks,\n },\n caseDefinitionKey,\n caseDefinitionVersionTag\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n currentValue: currentValue$ | async,\n caseDefinitionKey: caseDefinitionKey$ | async,\n caseDefinitionVersionTag: caseDefinitionVersionTag$ | async,\n loading: loading$ | async,\n disabled: disabled$ | async,\n } as obs\"\n class=\"case-handler-process\"\n [cdsLayer]=\"0\"\n>\n <p class=\"case-handler-process__title\">\n {{ 'caseManagement.tabs.generalTab.caseHandler.title' | translate }}\n </p>\n\n <div class=\"case-handler-process__toggles\">\n <cds-toggle\n valtimoReadOnly\n [isReadOnly]=\"isReadOnly\"\n [checked]=\"obs?.currentValue?.canHaveAssignee\"\n [disabled]=\"obs.disabled || isReadOnly\"\n (checkedChange)=\"\n toggleAssignee(obs?.currentValue, obs.caseDefinitionKey, obs.caseDefinitionVersionTag)\n \"\n [label]=\"'caseManagement.tabs.generalTab.caseHandler.canHaveHandler' | translate\"\n [onText]=\"'caseManagement.tabs.generalTab.caseHandler.toggle.onText' | translate\"\n [offText]=\"'caseManagement.tabs.generalTab.caseHandler.toggle.offText' | translate\"\n data-test-id=\"caseHandlerCanHaveHandler\"\n ></cds-toggle>\n\n <cds-tooltip\n [isOpen]=\"false\"\n [description]=\"\n 'caseManagement.tabs.generalTab.caseHandler.disabledAutoAssignTooltip' | translate\n \"\n [align]=\"'top'\"\n >\n <cds-toggle\n valtimoReadOnly\n [isReadOnly]=\"isReadOnly\"\n [checked]=\"obs?.currentValue?.autoAssignTasks\"\n [disabled]=\"!obs?.currentValue?.canHaveAssignee || isReadOnly\"\n (checkedChange)=\"\n toggleTaskAssignment(\n obs?.currentValue,\n obs?.caseDefinitionKey,\n obs.caseDefinitionVersionTag\n )\n \"\n [label]=\"'caseManagement.toggleAutoAssignTasks.checkboxDescription' | translate\"\n [onText]=\"'caseManagement.tabs.generalTab.caseHandler.toggle.onText' | translate\"\n [offText]=\"'caseManagement.tabs.generalTab.caseHandler.toggle.offText' | translate\"\n data-test-id=\"caseHandlerAutomaticallyAssign\"\n ></cds-toggle>\n </cds-tooltip>\n </div>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CaseSettings, DocumentService} from '@valtimo/document';\nimport {\n CaseManagementParams,\n getCaseManagementRouteParams,\n GlobalNotificationService,\n} from '@valtimo/shared';\nimport {NGXLogger} from 'ngx-logger';\nimport {BehaviorSubject, map, Observable, Subscription, switchMap, take, tap} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-external-start-form',\n templateUrl: './case-management-external-start-form.component.html',\n styleUrl: './case-management-external-start-form.component.scss',\n})\nexport class CaseManagementExternalStartFormComponent implements OnInit, OnDestroy {\n private _isReadOnly: boolean;\n @Input() public set isReadOnly(value: boolean) {\n this._isReadOnly = value;\n\n if (value) {\n this.form.get('externalFormUrl')?.disable();\n this.form.get('description')?.disable();\n } else {\n this.form.get('externalFormUrl')?.enable();\n this.form.get('description')?.enable();\n }\n }\n public get isReadOnly(): boolean {\n return this._isReadOnly;\n }\n\n private readonly _URL_PATTERN = new RegExp(\n '^(?:https?:\\\\/\\\\/)?(?:localhost|[\\\\w]+(?:-[\\\\w]+)*(?:\\\\.[\\\\w]+(?:-[\\\\w]+)*)+)(:\\\\d+)?(\\\\/\\\\S*)?$'\n );\n\n public readonly form = this.fb.group({\n hasExternalForm: [false],\n externalFormUrl: [\n {value: '', disabled: true},\n [Validators.required, Validators.pattern(this._URL_PATTERN), Validators.maxLength(512)],\n ],\n description: [''],\n });\n\n public readonly params$: Observable<CaseManagementParams> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n map((params: CaseManagementParams | undefined) => ({\n caseDefinitionKey: params?.caseDefinitionKey ?? '',\n caseDefinitionVersionTag: params?.caseDefinitionVersionTag ?? '',\n }))\n );\n\n public readonly caseSettings$ = new BehaviorSubject<CaseSettings | null>(null);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly documentService: DocumentService,\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService,\n private readonly logger: NGXLogger,\n private readonly globalNotificationService: GlobalNotificationService\n ) {}\n\n public ngOnInit(): void {\n this.logger.debug('External Case Start Form - onInit');\n\n this._subscriptions.add(\n this.params$\n .pipe(\n switchMap(params =>\n this.documentService.getCaseSettingsForManagement(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n ),\n tap(caseSettings => {\n this.logger.debug('Fetched case definition settings', caseSettings);\n this.caseSettings$.next(caseSettings);\n })\n )\n .subscribe()\n );\n\n this._subscriptions.add(\n this.caseSettings$.subscribe((caseSettings: CaseSettings | null) => {\n if (!!caseSettings) {\n this.logger.debug('Applying case definition settings to form', caseSettings);\n this.form.setValue({\n hasExternalForm: caseSettings.hasExternalStartForm ?? false,\n externalFormUrl: caseSettings.externalStartFormUrl ?? '',\n description: caseSettings.externalStartFormDescription ?? '',\n });\n }\n })\n );\n }\n\n public ngOnDestroy(): void {\n this.logger.debug('External Case Start Form - onDestroy');\n this._subscriptions.unsubscribe();\n }\n\n public get hasExternalForm(): AbstractControl<boolean> {\n return this.form.get('hasExternalForm');\n }\n\n public get externalFormUrl(): AbstractControl<string> {\n return this.form.get('externalFormUrl');\n }\n\n public get description(): AbstractControl<string> {\n return this.form.get('description');\n }\n\n public onSubmit(): void {\n if (!this.form.valid) return;\n\n this.logger.debug('Submitted case definition settings form with values:', this.form.value);\n\n this.params$.pipe(take(1)).subscribe(params => {\n this.updateCaseSettings(params.caseDefinitionKey, params.caseDefinitionVersionTag, {\n hasExternalStartForm: this.hasExternalForm.value,\n externalStartFormUrl:\n typeof this.externalFormUrl.value === 'string'\n ? this.externalFormUrl.value.trim()\n : this.externalFormUrl.value,\n externalStartFormDescription: this.description.value || '',\n });\n });\n }\n\n private updateCaseSettings(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string,\n caseSettings: CaseSettings\n ): void {\n this.logger.debug('Updating case definition settings', caseDefinitionKey, caseSettings);\n this.documentService\n .patchCaseSettingsForManagement(caseDefinitionKey, caseDefinitionVersionTag, caseSettings)\n .subscribe({\n next: result => {\n this.logger.debug('Updated case definition settings', result);\n this.caseSettings$.next(result);\n },\n error: e => {\n this.logger.error('An error occurred while updating case definition settings', e);\n\n this.globalNotificationService.showToast({\n type: 'error',\n title: this.translateService.instant(\n 'caseManagement.externalStartForm.notification.error'\n ),\n });\n },\n complete: () => {\n this.logger.debug('Finished updating case definition settings');\n\n this.globalNotificationService.showToast({\n type: 'success',\n title: this.translateService.instant(\n 'caseManagement.externalStartForm.notification.success'\n ),\n });\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-tile\n class=\"external-case-form-container\"\n *ngIf=\"{params: params$ | async, caseSettings: caseSettings$ | async} as obs\"\n>\n <h4 class=\"external-case-form-container__title\">\n {{ 'caseManagement.externalStartForm.title' | translate }}\n </h4>\n\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" [cdsLayer]=\"1\">\n <cds-toggle\n valtimoReadOnly\n [isReadOnly]=\"isReadOnly\"\n [disabled]=\"isReadOnly\"\n formControlName=\"hasExternalForm\"\n label=\"{{ 'caseManagement.externalStartForm.enabledToggle' | translate }}\"\n onText=\"{{ 'caseManagement.externalStartForm.enabledToggleOn' | translate }}\"\n offText=\"{{ 'caseManagement.externalStartForm.enabledToggleOff' | translate }}\"\n data-test-id=\"caseManagementHasExternalForm\"\n ></cds-toggle>\n\n <cds-label>\n {{ 'caseManagement.externalStartForm.externalUrl' | translate }}\n\n <input\n cdsText\n valtimoReadOnly\n [isReadOnly]=\"isReadOnly\"\n type=\"text\"\n formControlName=\"externalFormUrl\"\n data-test-id=\"caseManagementExternalFormUrl\"\n [placeholder]=\"\n isReadOnly ? '-' : ('caseManagement.externalStartForm.externalUrlPlaceholder' | translate)\n \"\n maxlength=\"512\"\n />\n </cds-label>\n\n <cds-label>\n {{ 'caseManagement.externalStartForm.description' | translate }}\n\n <input\n cdsText\n valtimoReadOnly\n [isReadOnly]=\"isReadOnly\"\n type=\"text\"\n formControlName=\"description\"\n data-test-id=\"caseManagementExternalFormDescription\"\n [placeholder]=\"\n isReadOnly ? '-' : ('caseManagement.externalStartForm.descriptionPlaceholder' | translate)\n \"\n maxlength=\"512\"\n />\n </cds-label>\n\n <button\n *ngIf=\"!isReadOnly\"\n cdsButton=\"primary\"\n type=\"submit\"\n [disabled]=\"!form.valid || isReadOnly\"\n data-test-id=\"caseManagementExternalFormSave\"\n >\n {{ 'caseManagement.externalStartForm.apply' | translate }}\n </button>\n </form>\n</cds-tile>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Inject,\n Optional,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {map, Observable, switchMap} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentDefinition, DocumentService} from '@valtimo/document';\nimport {CASE_CONFIGURATION_EXTENSIONS_TOKEN, EditPermissionsService} from '@valtimo/shared';\nimport {CaseManagementService} from '../../../../services';\nimport {MuuriItemComponent} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-general',\n templateUrl: './case-management-general.component.html',\n styleUrl: './case-management-general.component.scss',\n})\nexport class CaseManagementGeneralComponent implements AfterViewInit {\n @ViewChild('extensions', {read: ViewContainerRef})\n private _extensions: ViewContainerRef;\n\n public readonly params$: Observable<any> | undefined = this.route.parent?.params.pipe(\n map(({caseDefinitionKey, caseDefinitionVersionTag}) => ({\n caseDefinitionKey: caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionVersionTag,\n }))\n );\n\n public readonly documentDefinition$: Observable<DocumentDefinition> = this.params$.pipe(\n switchMap(({caseDefinitionKey}) =>\n this.documentService.getDocumentDefinitionForManagement(caseDefinitionKey)\n )\n );\n\n public readonly isReadOnly$: Observable<boolean> = this.params$.pipe(\n switchMap(params =>\n this.editPermissionsService\n .hasEditPermissions(params?.caseDefinitionKey, params?.caseDefinitionVersionTag)\n .pipe(map(hasPermissions => !hasPermissions))\n )\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly cdr: ChangeDetectorRef,\n private readonly caseManagementService: CaseManagementService,\n @Optional()\n @Inject(CASE_CONFIGURATION_EXTENSIONS_TOKEN)\n private readonly caseConfigurationExtensionComponents: Type<any>[],\n private readonly editPermissionsService: EditPermissionsService\n ) {}\n\n public ngAfterViewInit(): void {\n this.renderExtensions();\n }\n\n private renderExtensions(): void {\n if (\n !Array.isArray(this.caseConfigurationExtensionComponents) ||\n this.caseConfigurationExtensionComponents.length === 0\n ) {\n return;\n }\n\n this.caseConfigurationExtensionComponents.forEach(extensionComponent => {\n const itemRef = this._extensions.createComponent(MuuriItemComponent);\n\n const wrapperInstance = itemRef.instance;\n const container = wrapperInstance.container;\n\n const componentRef = container.createComponent(extensionComponent);\n componentRef.setInput('isReadOnly$', this.isReadOnly$);\n });\n\n this.cdr.detectChanges();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n isReadOnly: isReadOnly$ | async,\n } as obs\"\n>\n @if (obs.isReadOnly) {\n <cds-notification\n class=\"read-only-notification\"\n [notificationObj]=\"{\n type: 'info',\n title: 'caseManagement.tabs.generalTab.readOnlyNotification.title' | translate,\n message: 'caseManagement.tabs.generalTab.readOnlyNotification.message' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n >\n </cds-notification>\n }\n\n <div class=\"case-management-general-tab\" muuri [columnMinWidth]=\"350\">\n <ng-template #extensions></ng-template>\n\n <valtimo-muuri-item>\n <valtimo-case-management-case-handler\n muuriItem\n [isReadOnly]=\"obs.isReadOnly\"\n *ngIf=\"documentDefinition$ | async\"\n ></valtimo-case-management-case-handler>\n </valtimo-muuri-item>\n\n <valtimo-muuri-item>\n <valtimo-case-management-external-start-form [isReadOnly]=\"obs.isReadOnly\">\n </valtimo-case-management-external-start-form>\n </valtimo-muuri-item>\n </div>\n</ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {CARBON_CONSTANTS, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {TabManagementService} from '../../../../../../services';\nimport {ApiTabItem, ApiTabType} from '@valtimo/case';\nimport {ButtonModule, InputModule, ModalModule} from 'carbon-components-angular';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-case-management-widget-tab-edit-modal',\n templateUrl: './case-management-widget-tab-edit-modal.html',\n styleUrls: ['./case-management-widget-tab-edit-modal.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n ReactiveFormsModule,\n InputModule,\n ButtonModule,\n ],\n})\nexport class CaseManagementWidgetTabEditModalComponent implements OnInit, OnDestroy {\n @Input() public showModal$: Observable<boolean>;\n @Input() public tabItem: ApiTabItem;\n @Output() public saveEvent = new EventEmitter<any>();\n\n public readonly open$ = new BehaviorSubject<boolean>(false);\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n public readonly editWidgetTabForm = this.fb.group({\n name: this.fb.control('', [Validators.required]),\n });\n\n public get widgetTabName(): AbstractControl<string | null, string | null> | null {\n return this.editWidgetTabForm.get('name');\n }\n\n private _openSubscription!: Subscription;\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly tabManagementService: TabManagementService\n ) {}\n\n public ngOnInit(): void {\n this.openOpenSubscription();\n }\n\n public ngOnDestroy(): void {\n this._openSubscription?.unsubscribe();\n }\n\n public closeModal(): void {\n this.open$.next(false);\n\n setTimeout(() => {\n this.editWidgetTabForm.reset();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public saveWidgetTab(): void {\n this.disable();\n\n this.tabManagementService\n .editTab(\n {\n key: this.tabItem.key,\n name: this.widgetTabName?.value,\n contentKey: '-',\n type: ApiTabType.WIDGETS,\n },\n this.tabItem.key\n )\n .subscribe(() => {\n this.saveEvent.emit();\n this.closeModal();\n });\n }\n\n private setEditWidgetTabForm(): void {\n if (this.tabItem) {\n this.widgetTabName?.setValue(this.tabItem.name ?? '');\n }\n\n this.enable();\n }\n\n private openOpenSubscription(): void {\n this._openSubscription = this.showModal$.subscribe(show => {\n this.setEditWidgetTabForm();\n this.open$.next(show);\n });\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{disabled: disabled$ | async} as obs\"\n valtimoCdsModal\n [open]=\"open$ | async\"\n showFooter=\"true\"\n title=\"{{ 'widgetTabManagement.tab.editWidgetTab' | translate }}\"\n class=\"edit-widget-tab-modal\"\n (close)=\"closeModal()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'widgetTabManagement.tab.editWidgetTab' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"editWidgetTabFormTemplate;context:{obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"editWidgetTabButtons;context:{obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #editWidgetTabFormTemplate let-obs=\"obs\">\n <form *ngIf=\"editWidgetTabForm\" [formGroup]=\"editWidgetTabForm\" class=\"widget-tab-modal__form\">\n <cds-label [disabled]=\"obs.disabled\" [invalid]=\"widgetTabName.dirty && widgetTabName.invalid\">\n {{ 'widgetTabManagement.tab.form.tabName' | translate }}\n\n <input\n cdsText\n [disabled]=\"obs.disabled\"\n [invalid]=\"widgetTabName.dirty && widgetTabName.invalid\"\n formControlName=\"name\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n </form>\n</ng-template>\n\n<ng-template #editWidgetTabButtons let-obs=\"obs\">\n <button cdsButton=\"secondary\" [disabled]=\"obs.disabled\" (click)=\"closeModal()\">\n {{ 'widgetTabManagement.tab.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"editWidgetTabForm.invalid || obs.disabled\"\n (click)=\"saveWidgetTab()\"\n >\n {{ 'widgetTabManagement.tab.save' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Edit16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {ApiTabItem} from '@valtimo/case';\nimport {\n BreadcrumbService,\n PageHeaderService,\n PageTitleService,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {\n IWidgetManagementService,\n ManagementWidgetDetailsComponent,\n WIDGET_MANAGEMENT_SERVICE,\n WidgetManagementComponent,\n WidgetType,\n WidgetWizardService,\n} from '@valtimo/layout';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {ButtonModule, IconModule, IconService, TabsModule} from 'carbon-components-angular';\nimport moment from 'moment/moment';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, switchMap, tap} from 'rxjs';\n\nimport {TabManagementService, CaseWidgetManagementApiService} from '../../../../../../services';\nimport {CaseManagementWidgetTabEditModalComponent} from '../case-management-widget-tab-edit-modal/case-management-widget-tab-edit-modal.component';\n\n@Component({\n templateUrl: './case-management-widget-tab.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n CaseManagementWidgetTabEditModalComponent,\n RenderInPageHeaderDirective,\n ButtonModule,\n IconModule,\n TabsModule,\n WidgetManagementComponent,\n ],\n providers: [\n {\n provide: WIDGET_MANAGEMENT_SERVICE,\n useClass: CaseWidgetManagementApiService,\n },\n ],\n})\nexport class CaseManagementWidgetTabComponent\n extends ManagementWidgetDetailsComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n public readonly caseManagementRouteParams$ = getCaseManagementRouteParams(this.route).pipe(\n tap(params => {\n this.tabManagementService.setParams(params);\n this.tabManagementService.loadTabs();\n }),\n map(\n (params: CaseManagementParams | undefined) =>\n params ?? {caseDefinitionKey: '', caseDefinitionVersionTag: ''}\n )\n );\n\n public readonly tabWidgetKey$: Observable<string> = this.route.params.pipe(\n map(params => params.key || '')\n );\n\n public readonly params$ = combineLatest([\n this.caseManagementRouteParams$,\n this.tabWidgetKey$,\n ]).pipe(\n filter(([caseManagementRouteParams, key]) => !!caseManagementRouteParams && !!key),\n map(([caseManagementRouteParams, key]) => ({\n ...caseManagementRouteParams,\n key,\n }))\n );\n\n private readonly _refreshWidgetTabSubject$ = new BehaviorSubject<null>(null);\n public readonly showEditWidgetTabModal$ = new BehaviorSubject<boolean>(false);\n public readonly currentWidgetTabItem$: Observable<ApiTabItem> = combineLatest([\n this.params$,\n this.translateService.stream('key'),\n this._refreshWidgetTabSubject$,\n ]).pipe(\n switchMap(([params]) => this.tabManagementService.getTab(params.key)),\n tap(tabItem => {\n const title =\n tabItem.name ||\n this.translateService.instant(`widgetTabManagement.metadata.${tabItem.key}`);\n this.pageTitleService.setCustomPageTitle(title);\n this.pageTitleService.setCustomPageSubtitle(\n this.translateService.instant('widgetTabManagement.tab.metadata', {\n createdBy: tabItem?.createdBy || '-',\n createdOn: !!tabItem?.createdOn\n ? moment(tabItem?.createdOn).format('DD MMM YYYY HH:mm')\n : '-',\n key: tabItem.key,\n })\n );\n })\n );\n\n public readonly currentWidgetTab$ = combineLatest([\n this.caseWidgetManagementApiService.params$,\n this._refreshWidgetTabSubject$,\n ]).pipe(\n filter(([params]) => !!params),\n switchMap(() => this.caseWidgetManagementApiService.getWidgetConfiguration())\n );\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n public readonly AVAILABLE_WIDGET_TYPES = [\n WidgetType.FIELDS,\n WidgetType.COLLECTION,\n WidgetType.CUSTOM,\n WidgetType.FORMIO,\n WidgetType.TABLE,\n WidgetType.MAP,\n ];\n\n constructor(\n protected readonly widgetWizardService: WidgetWizardService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly iconService: IconService,\n private readonly pageTitleService: PageTitleService,\n private readonly route: ActivatedRoute,\n private readonly tabManagementService: TabManagementService,\n @Inject(WIDGET_MANAGEMENT_SERVICE)\n private readonly caseWidgetManagementApiService: IWidgetManagementService<\n CaseManagementParams & {key: string}\n >,\n private readonly translateService: TranslateService,\n private readonly pageHeaderService: PageHeaderService\n ) {\n super(widgetWizardService);\n }\n\n public ngOnInit(): void {\n this.setContext('case');\n this.pageTitleService.enableReset();\n }\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([Edit16]);\n this.initBreadcrumbs();\n }\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n this.pageTitleService.disableReset();\n }\n\n public editWidgetTab(): void {\n this.showEditWidgetTabModal();\n }\n\n private showEditWidgetTabModal(): void {\n this.showEditWidgetTabModal$.next(true);\n }\n\n public refreshWidgetTab(): void {\n this._refreshWidgetTabSubject$.next(null);\n }\n\n private initBreadcrumbs(): void {\n this.caseManagementRouteParams$.subscribe(params => {\n const route = `/case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}`;\n\n this.breadcrumbService.setThirdBreadcrumb({\n route: [route],\n content: `${params.caseDefinitionKey} (${params.caseDefinitionVersionTag})`,\n href: route,\n });\n\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`${route}/case-details`],\n content: this.translateService.instant('caseManagement.tabs.caseDetailsTab.title'),\n href: `${route}/case-details`,\n });\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-management\n [availableWidgetTypes]=\"AVAILABLE_WIDGET_TYPES\"\n [params]=\"params$ | async\"\n></valtimo-widget-management>\n\n<valtimo-case-management-widget-tab-edit-modal\n [tabItem]=\"currentWidgetTabItem$ | async\"\n [showModal$]=\"showEditWidgetTabModal$\"\n (saveEvent)=\"refreshWidgetTab()\"\n>\n</valtimo-case-management-widget-tab-edit-modal>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"tertiary\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n (click)=\"editWidgetTab()\"\n >\n {{ 'widgetTabManagement.tab.editButton' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nenum UPLOAD_STATUS {\n ACTIVE = 'active',\n ERROR = 'error',\n FINISHED = 'finished',\n}\n\nenum UPLOAD_STEP {\n ACCESS_CONTROL = 'accessControl',\n DASHBOARD = 'dashboard',\n FILE_SELECT = 'fileSelect',\n FILE_UPLOAD = 'fileUpload',\n PLUGINS = 'plugins',\n}\n\nconst STEPS = [\n UPLOAD_STEP.PLUGINS,\n UPLOAD_STEP.FILE_SELECT,\n UPLOAD_STEP.FILE_UPLOAD,\n UPLOAD_STEP.ACCESS_CONTROL,\n UPLOAD_STEP.DASHBOARD,\n];\n\nexport {STEPS, UPLOAD_STATUS, UPLOAD_STEP};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, Input} from '@angular/core';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-upload-step',\n templateUrl: './case-management-upload-step.component.html',\n styleUrls: ['./case-management-upload-step.component.scss'],\n})\nexport class CaseManagementUploadStepComponent {\n @Input() illustration!: string;\n @Input() message!: string;\n @Input() title!: string;\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"valtimo-upload-step__content\">\n <div class=\"valtimo-upload-step__title\">{{ title }}</div>\n\n <div class=\"valtimo-upload-step__message\">{{ message }}</div>\n</div>\n\n<img [src]=\"illustration\" alt=\"{{ illustration }}\" class=\"valtimo-upload-step__illustration\" />\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n signal,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {WarningFilled16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {DocumentDefinitionCreateRequest, DocumentService} from '@valtimo/document';\nimport {FileItem, IconService, NotificationContent} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, switchMap, take} from 'rxjs';\nimport {STEPS, UPLOAD_STATUS, UPLOAD_STEP} from './case-management-upload.constants';\nimport {CaseManagementService} from '../../services';\nimport {toObservable} from '@angular/core/rxjs-interop';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-upload',\n templateUrl: './case-management-upload.component.html',\n styleUrls: ['./case-management-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementUploadComponent implements OnInit, OnDestroy {\n @Input() open = false;\n @Output() closeModal = new EventEmitter<boolean>();\n\n public acceptedFiles: string[] = ['.json', '.zip'];\n public selectedFile: File | null;\n\n private readonly _disabled$ = new BehaviorSubject<boolean>(true);\n\n public readonly UPLOAD_STEP = UPLOAD_STEP;\n public readonly UPLOAD_STATUS = UPLOAD_STATUS;\n public readonly activeStep$ = new BehaviorSubject<UPLOAD_STEP>(UPLOAD_STEP.PLUGINS);\n public readonly backButtonEnabled$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.ACCESS_CONTROL, UPLOAD_STEP.DASHBOARD].includes(\n activeStep\n )\n )\n );\n public readonly isStepAfterUpload$: Observable<boolean> = this.activeStep$.pipe(\n map(\n (activeStep: UPLOAD_STEP) =>\n ![UPLOAD_STEP.PLUGINS, UPLOAD_STEP.FILE_SELECT].includes(activeStep)\n )\n );\n public readonly showCloseButton$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.PLUGINS, UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.FILE_UPLOAD].includes(activeStep)\n )\n );\n public readonly $warningChecked = signal(false);\n\n public readonly nextButtonDisabled$: Observable<boolean> = combineLatest([\n this.activeStep$,\n this._disabled$,\n toObservable(this.$warningChecked),\n ]).pipe(\n map(([activeStep, disabled, warningChecked]) => {\n const warningNotChecked = activeStep === UPLOAD_STEP.FILE_SELECT && !warningChecked;\n return warningNotChecked || (activeStep !== UPLOAD_STEP.PLUGINS && disabled);\n })\n );\n public readonly notificationObj$: Observable<NotificationContent> = combineLatest([\n this.translateService.stream('interface.warning'),\n this.translateService.stream('caseManagement.importDefinition.overwriteWarning'),\n ]).pipe(\n map(([title, message]) => ({\n type: 'warning',\n title,\n message,\n showClose: false,\n lowContrast: true,\n }))\n );\n public readonly showCheckboxError$ = new BehaviorSubject<boolean>(false);\n public readonly uploadStatus$ = new BehaviorSubject<UPLOAD_STATUS>(UPLOAD_STATUS.ACTIVE);\n\n public form: FormGroup = this.fb.group({\n file: this.fb.control(new Set<any>(), [Validators.required]),\n });\n\n private readonly _importFile$ = new BehaviorSubject<string | FormData>('');\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly caseManagementService: CaseManagementService,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(WarningFilled16);\n }\n\n public ngOnInit(): void {\n const control: AbstractControl | null = this.form.get('file');\n if (!control) {\n return;\n }\n\n this._subscriptions.add(\n this.form.get('file').valueChanges.subscribe((fileSet: Set<FileItem>) => {\n const [fileItem] = fileSet;\n if (!fileItem) {\n this._disabled$.next(true);\n this.showCheckboxError$.next(false);\n this.$warningChecked.set(false);\n return;\n }\n\n if (fileItem.file.type === 'application/json') {\n this.setJsonFile(fileItem);\n return;\n }\n\n this.setZipFile(fileItem);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.resetModal();\n }\n\n public onCloseModal(definitionUploaded?: boolean): void {\n this.closeModal.emit(definitionUploaded ?? false);\n this.resetModal();\n }\n\n public onBackClick(activeStep: UPLOAD_STEP): void {\n const prevIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) - 1;\n if (prevIndex === -1) {\n return;\n }\n\n this.activeStep$.next(STEPS[prevIndex]);\n }\n\n public onNextClick(activeStep: UPLOAD_STEP): void {\n const nextIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) + 1;\n if (nextIndex === STEPS.length) {\n return;\n }\n\n if (activeStep === UPLOAD_STEP.FILE_SELECT && !this.$warningChecked()) {\n this.showCheckboxError$.next(true);\n return;\n }\n\n this.activeStep$.next(STEPS[nextIndex]);\n if (STEPS[nextIndex] !== UPLOAD_STEP.FILE_UPLOAD) {\n return;\n }\n\n this.uploadDefinition();\n }\n\n public onCheckedChange(checked: boolean): void {\n this.$warningChecked.set(checked);\n\n if (!checked) {\n return;\n }\n\n this.showCheckboxError$.next(false);\n }\n\n private setJsonFile(fileItem: FileItem | undefined): void {\n const file = fileItem?.file;\n\n if (!file) {\n this.clearJsonString();\n return;\n }\n const reader = new FileReader();\n\n reader.onloadend = () => {\n const result = (reader.result ?? '').toString();\n if (this.stringIsValidJson(result)) {\n this._disabled$.next(false);\n this._importFile$.next(result);\n return;\n }\n\n this.clearJsonString();\n this.setErrorState(fileItem);\n };\n\n reader.readAsText(file);\n }\n\n private setZipFile(fileItem: FileItem): void {\n const file = fileItem?.file;\n\n if (!file) {\n this._importFile$.next('');\n return;\n }\n\n const blob = new Blob([fileItem.file], {type: fileItem.file.type});\n const fd = new FormData();\n fd.append('file', blob, fileItem.file.name);\n this._importFile$.next(fd);\n this._disabled$.next(false);\n }\n\n private uploadDefinition(): void {\n this._disabled$.next(true);\n this._importFile$\n .pipe(\n switchMap((file: string | FormData) =>\n file instanceof FormData\n ? this.caseManagementService.importDocumentDefinitionZip(file)\n : this.documentService.createDocumentDefinitionForManagement(\n new DocumentDefinitionCreateRequest(file)\n )\n ),\n take(1)\n )\n .subscribe({\n next: () => {\n this._disabled$.next(false);\n this.uploadStatus$.next(UPLOAD_STATUS.FINISHED);\n },\n error: () => {\n this.uploadStatus$.next(UPLOAD_STATUS.ERROR);\n this._disabled$.next(false);\n },\n });\n }\n\n private clearJsonString(): void {\n this._importFile$.next('');\n }\n\n private stringIsValidJson(string: string) {\n try {\n JSON.parse(string);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n private setErrorState(fileItem: FileItem): void {\n this._disabled$.next(true);\n fileItem.invalid = true;\n fileItem.invalidTitle = this.translateService.instant(\n 'caseManagement.importDefinition.invalidJsonError.title'\n );\n fileItem.invalidText = this.translateService.instant(\n 'caseManagement.importDefinition.invalidJsonError.text'\n );\n }\n\n private resetModal(): void {\n setTimeout(() => {\n this.activeStep$.next(UPLOAD_STEP.PLUGINS);\n this.uploadStatus$.next(UPLOAD_STATUS.ACTIVE);\n this.showCheckboxError$.next(false);\n this.form.reset({file: new Set<any>()});\n this._importFile$.next('');\n this._disabled$.next(true);\n this.$warningChecked.set(false);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async,\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'caseManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section\n [ngSwitch]=\"obs.activeStep\"\n [cdsLayer]=\"1\"\n cdsModalContent\n class=\"valtimo-definition-uploader__content\"\n >\n <ng-template ngSwitchDefault>\n <valtimo-case-management-upload-step\n [message]=\"\n 'caseManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"'caseManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-case-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'caseManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'caseManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'caseManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n data-test-id=\"caseFileUploader\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'caseManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'caseManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'caseManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"'caseManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n data-test-id=\"uploadWizardCancelButton\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n data-test-id=\"uploadWizardNextButton\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'caseManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n data-test-id=\"uploadWizardFinishButton\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {Edit16, Information16} from '@carbon/icons';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {DocumentService, TemplatePayload} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, take, tap} from 'rxjs';\nimport * as semver from 'semver';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-create',\n styleUrls: ['./case-management-create.component.scss'],\n templateUrl: './case-management-create.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementCreateComponent {\n @Input() open = false;\n @Output() closeModal = new EventEmitter<TemplatePayload | null>();\n\n public formGroup: FormGroup = this.fb.group({\n name: this.fb.control('', Validators.required),\n caseDefinitionKey: this.fb.control({value: '', disabled: true}, [\n Validators.required,\n Validators.pattern('[A-Za-z0-9-]*'),\n ]),\n caseDefinitionVersion: this.fb.control('', Validators.required),\n description: this.fb.control(''),\n });\n\n private readonly _editActive$ = new BehaviorSubject<boolean>(false);\n public readonly editActive$ = this._editActive$.pipe(\n tap((editActive: boolean) => {\n const caseDefinitionKey: AbstractControl | null = this.formGroup.get('caseDefinitionKey');\n if (!caseDefinitionKey) {\n return;\n }\n\n if (editActive) {\n caseDefinitionKey.enable();\n return;\n }\n caseDefinitionKey.disable();\n })\n );\n public readonly editDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly idError$ = new BehaviorSubject<string | null>(null);\n public readonly versionError$ = new BehaviorSubject<string | null>(null);\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Edit16, Information16]);\n }\n\n public onCloseModal(definitionCreated?: boolean): void {\n if (!definitionCreated) {\n this.closeModal.emit(null);\n this.resetForm();\n return;\n }\n\n const {caseDefinitionKey, name, caseDefinitionVersion, description} = this.formGroup.controls;\n if (!caseDefinitionKey || !name || !caseDefinitionVersion) {\n return;\n }\n\n if (!semver.valid(caseDefinitionVersion.value)) {\n this.versionError$.next('caseManagement.createDefinition.versionError');\n return;\n }\n\n this.documentService\n .getDocumentDefinition(caseDefinitionKey.value, true)\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.idError$.next('caseManagement.createDefinition.idError');\n this.editDisabled$.next(false);\n this.enableEdit();\n },\n error: () => {\n this.closeModal.emit({\n name: name.value,\n caseDefinitionKey: caseDefinitionKey.value,\n caseDefinitionVersion: caseDefinitionVersion.value,\n description: description.value,\n });\n this.resetForm();\n },\n });\n }\n\n public enableEdit(): void {\n this._editActive$.next(true);\n }\n\n public onFocusOut(): void {\n const {caseDefinitionKey, name, caseDefinitionVersion} = this.formGroup.controls;\n if (!caseDefinitionKey || !name || !caseDefinitionVersion) {\n return;\n }\n\n caseDefinitionKey.patchValue(name.value.replace(/\\W+/g, '-').replace(/\\-$/, '').toLowerCase());\n this.editDisabled$.next(false);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.formGroup.reset();\n this.idError$.next(null);\n this._editActive$.next(false);\n this.editDisabled$.next(true);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n editDisabled: editDisabled$ | async,\n idError: idError$ | async,\n versionError: versionError$ | async,\n editActive: editActive$ | async,\n } as obs\"\n [open]=\"open\"\n showFooter=\"true\"\n valtimoCdsModal\n class=\"valtimo-definition-create\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'caseManagement.createDefinition.modalTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <form\n [formGroup]=\"formGroup\"\n cdsModalContent\n [cdsLayer]=\"1\"\n class=\"valtimo-definition-create__content\"\n >\n <cds-label>\n {{ 'caseManagement.createDefinition.name' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.nameTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"name\"\n cdsText\n placeholder=\"{{ 'caseManagement.createDefinition.namePlaceholder' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n data-test-id=\"caseDefinitionNameInput\"\n (focusout)=\"onFocusOut()\"\n />\n </cds-label>\n\n <cds-label [invalid]=\"!!obs.idError\" [invalidText]=\"obs.idError | translate\">\n {{ 'caseManagement.createDefinition.key' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.keyTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <div class=\"valtimo-definition-create__name\">\n <input\n cdsText\n data-test-id=\"caseDefinitionKeyInput\"\n formControlName=\"caseDefinitionKey\"\n [invalid]=\"!!obs.idError\"\n [placeholder]=\"'caseManagement.createDefinition.keyPlaceholder' | translate\"\n [attr.modal-primary-focus]=\"true\"\n />\n\n <button\n *ngIf=\"!obs.editActive\"\n cdsButton=\"secondary\"\n data-test-id=\"caseDefinitionKeyEditButton\"\n [disabled]=\"obs.editDisabled\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"enableEdit()\"\n >\n <svg cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </div>\n </cds-label>\n\n <cds-label [invalid]=\"!!obs.versionError\" [invalidText]=\"obs.versionError | translate\">\n {{ 'caseManagement.createDefinition.version' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.versionTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"caseDefinitionVersion\"\n data-test-id=\"caseDefinitionVersionInput\"\n cdsText\n placeholder=\"{{ 'caseManagement.createDefinition.versionPlaceholder' | translate }}\"\n [invalid]=\"!!obs.versionError\"\n [attr.modal-primary-focus]=\"true\"\n (focusout)=\"onFocusOut()\"\n />\n </cds-label>\n\n <cds-textarea-label>\n {{ 'caseManagement.createDefinition.description' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.descriptionTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <textarea\n cdsTextArea\n formControlName=\"description\"\n data-test-id=\"caseDefinitionDescriptionInput\"\n placeholder=\"{{ 'caseManagement.createDefinition.descriptionPlaceholder' | translate }}\"\n [rows]=\"3\"\n [cols]=\"150\"\n [attr.modal-primary-focus]=\"true\"\n (focusout)=\"onFocusOut()\"\n ></textarea>\n </cds-textarea-label>\n </form>\n\n <cds-modal-footer>\n <button data-test-id=\"caseCreateCloseButton\" cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n data-test-id=\"caseCreateSaveButton\"\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Search20, TrashCan20, Upload16} from '@carbon/icons';\nimport {ColumnConfig, MenuService, Pagination} from '@valtimo/components';\nimport {Page, TemplatePayload} from '@valtimo/document';\nimport {EnvironmentService} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport moment from 'moment';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, take} from 'rxjs';\nimport {CaseListItem} from '../../models';\nimport {CaseManagementService} from '../../services';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-list',\n templateUrl: './case-management-list.component.html',\n styleUrls: ['./case-management-list.component.scss'],\n})\nexport class CaseManagementListComponent {\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly pagination$ = new BehaviorSubject<Pagination | null>(null);\n\n public readonly canUpdateGlobalConfiguration$ =\n this.environmentService.canUpdateGlobalConfiguration();\n\n public readonly caseListItems$ = combineLatest([\n this.route.queryParams,\n this.canUpdateGlobalConfiguration$,\n this._refresh$,\n ]).pipe(\n switchMap(([params, canUpdate]) =>\n this.caseManagementService.getCaseDefinitions({\n ...params,\n active: true,\n final: canUpdate ? '' : true,\n })\n ),\n map((page: Page<CaseListItem>) => {\n this.pagination$.next({\n size: page.size,\n page: page.number + 1,\n collectionSize: +page.totalElements,\n });\n return page.content;\n })\n );\n\n public pagination: Pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n };\n\n public readonly FIELDS: ColumnConfig[] = [\n {key: 'name', label: 'caseManagement.listColumns.name'},\n {key: 'caseDefinitionKey', label: 'caseManagement.listColumns.key'},\n {key: 'caseDefinitionVersionTag', label: 'caseManagement.listColumns.version'},\n ];\n\n public readonly showCreateModal$ = new BehaviorSubject<boolean>(false);\n public readonly showUploadModal$ = new BehaviorSubject<boolean>(false);\n\n private _paginationInitialized = false;\n constructor(\n private readonly caseManagementService: CaseManagementService,\n private readonly iconService: IconService,\n private readonly menuService: MenuService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly environmentService: EnvironmentService\n ) {\n this.iconService.registerAll([Search20, TrashCan20, Upload16]);\n }\n\n public onCloseUploadModal(definitionUploaded: boolean): void {\n this.showUploadModal$.next(false);\n\n if (!definitionUploaded) {\n return;\n }\n this._refresh$.next(null);\n this.menuService.reload();\n }\n\n public onCloseCreateModal(templatePayload: TemplatePayload | null): void {\n this.showCreateModal$.next(false);\n if (!templatePayload) {\n return;\n }\n\n this.caseManagementService\n .createDraftVersion(templatePayload)\n .pipe(take(1))\n .subscribe((response: any) => {\n this.router.navigate([\n '/case-management/case',\n response.caseDefinitionKey,\n 'version',\n response.caseDefinitionVersionTag,\n ]);\n this._refresh$.next(null);\n this.menuService.reload();\n });\n }\n\n public paginationClicked(page: number): void {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {page: page - 1},\n queryParamsHandling: 'merge',\n });\n }\n\n public paginationSet(size: number): void {\n if (!this._paginationInitialized) {\n this._paginationInitialized = true;\n return;\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {size},\n queryParamsHandling: 'merge',\n });\n }\n\n public redirectToDetails(caseListItem: CaseListItem): void {\n this.router.navigate([\n '/case-management/case',\n caseListItem.caseDefinitionKey,\n 'version',\n caseListItem.caseDefinitionVersionTag,\n ]);\n }\n\n public showUploadModal(): void {\n this.showUploadModal$.next(true);\n }\n\n public showCreateModal(): void {\n this.showCreateModal$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [items]=\"caseListItems$ | async\"\n [fields]=\"FIELDS\"\n (rowClicked)=\"redirectToDetails($event)\"\n [pagination]=\"pagination$ | async\"\n paginationIdentifier=\"caseManagementList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n>\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"importCaseDefinitionButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"importCaseDefinitionButton\"\n [description]=\"'caseManagement.noResults.description' | translate\"\n [title]=\"'caseManagement.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #loading>\n <valtimo-carbon-list loading=\"true\"></valtimo-carbon-list>\n</ng-template>\n\n<valtimo-case-management-upload\n [open]=\"showUploadModal$ | async\"\n (closeModal)=\"onCloseUploadModal($event)\"\n></valtimo-case-management-upload>\n\n<valtimo-case-management-create\n [open]=\"showCreateModal$ | async\"\n (closeModal)=\"onCloseCreateModal($event)\"\n></valtimo-case-management-create>\n\n<ng-template #importCaseDefinitionButton>\n <div class=\"valtimo-case-management-list__actions\">\n <button data-test-id=\"caseManagementUploadButton\" cdsButton=\"ghost\" (click)=\"showUploadModal()\">\n {{ 'Upload' | translate }}\n\n <svg cdsIcon=\"upload\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n *ngIf=\"canUpdateGlobalConfiguration$ | async\"\n data-test-id=\"caseManagementCreateButton\"\n cdsButton=\"primary\"\n (click)=\"showCreateModal()\"\n >\n {{ 'interface.create' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Inject, NgModule, Optional} from '@angular/core';\nimport {Route, Router, RouterModule, Routes} from '@angular/router';\nimport {pendingChangesGuard} from '@valtimo/components';\nimport {\n DecisionListComponent,\n DecisionManagementRouteData,\n DecisionModelerComponent,\n} from '@valtimo/decision';\nimport {FormFlowEditorComponent, FormFlowOverviewComponent} from '@valtimo/form-flow-management';\nimport {\n FormManagementComponent,\n FormManagementEditComponent,\n FormManagementRouteData,\n} from '@valtimo/form-management';\nimport {\n ProcessManagementBuilderComponent,\n ProcessManagementComponent,\n ProcessManagementRouteData,\n} from '@valtimo/process-management';\nimport {AuthGuardService} from '@valtimo/security';\n\nimport {CASE_MANAGEMENT_TAB_TOKEN, CaseManagementTabConfig, ROLE_ADMIN} from '@valtimo/shared';\nimport {TaskManagementDetailComponent} from '@valtimo/task-management';\nimport {CaseManagementCaseDetailComponent} from './components/case-management-case-detail/case-management-case-detail.component';\nimport {CaseManagementCaseListComponent} from './components/case-management-case-list/case-management-case-list.component';\nimport {CaseManagementDeploymentComponent} from './components/case-management-deployment/case-management-deployment.component';\nimport {CaseManagementDetailComponent} from './components/case-management-detail/case-management-detail.component';\nimport {CaseManagementDocumentDefinitionComponent} from './components/case-management-detail/tabs/case-management-document-definition/case-management-document-definition.component';\nimport {CaseManagementGeneralComponent} from './components/case-management-detail/tabs/case-management-general/case-management-general.component';\nimport {CaseManagementWidgetTabComponent} from './components/case-management-detail/tabs/case-management-tabs/widget-tab/case-management-widget-tab/case-management-widget-tab.component';\nimport {CaseManagementListComponent} from './components/case-management-list/case-management-list.component';\nimport {TabEnum} from './models';\n\nconst routes: Routes = [\n {\n path: 'case-management',\n component: CaseManagementListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Cases', roles: [ROLE_ADMIN]},\n },\n {\n path: 'case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag',\n component: CaseManagementDetailComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Case details',\n roles: [ROLE_ADMIN],\n id: 'caseManagementDetails',\n customPageTitle: true,\n },\n children: [\n {path: TabEnum.GENERAL, component: CaseManagementGeneralComponent},\n {path: TabEnum.DOCUMENT, component: CaseManagementDocumentDefinitionComponent},\n {\n path: TabEnum.PROCESSES,\n component: ProcessManagementComponent,\n data: {context: 'case'} as ProcessManagementRouteData,\n },\n {\n path: TabEnum.DECISIONS,\n component: DecisionListComponent,\n data: {context: 'case'} as DecisionManagementRouteData,\n },\n {path: TabEnum.CASE_LIST, component: CaseManagementCaseListComponent},\n {path: TabEnum.CASE_DETAILS, component: CaseManagementCaseDetailComponent},\n {\n path: TabEnum.FORMS,\n component: FormManagementComponent,\n data: {context: 'case'} as FormManagementRouteData,\n },\n {path: TabEnum.FORM_FLOWS, component: FormFlowOverviewComponent},\n {path: TabEnum.TASKS, component: TaskManagementDetailComponent},\n ],\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/deployment`,\n component: CaseManagementDeploymentComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Deployment', roles: [ROLE_ADMIN]},\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.FORMS}/:formDefinitionId`,\n component: FormManagementEditComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Forms',\n roles: [ROLE_ADMIN],\n context: 'case',\n customPageTitle: true,\n } as FormManagementRouteData,\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.CASE_DETAILS}/widget-tab/:key`,\n component: CaseManagementWidgetTabComponent,\n canActivate: [AuthGuardService],\n //TODO: enable when pendingChanges is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Widget tab',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n customPageSubtitle: true,\n },\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.PROCESSES}/create`,\n component: ProcessManagementBuilderComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Create new Process',\n customPageTitle: false,\n roles: [ROLE_ADMIN],\n context: 'case',\n } as ProcessManagementRouteData,\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.PROCESSES}/:processDefinitionKey`,\n component: ProcessManagementBuilderComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Process details',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n context: 'case',\n } as ProcessManagementRouteData,\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.DECISIONS}/:id`,\n component: DecisionModelerComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Process details',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n context: 'case',\n } as ProcessManagementRouteData,\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.FORM_FLOWS}/:formFlowDefinitionKey`,\n component: FormFlowEditorComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Form flow details', roles: [ROLE_ADMIN], customPageTitle: true},\n },\n];\n\n@NgModule({imports: [RouterModule.forChild(routes)], exports: [RouterModule], declarations: []})\nexport class CaseManagementRoutingModule {\n constructor(\n @Optional()\n @Inject(CASE_MANAGEMENT_TAB_TOKEN)\n private readonly caseManagementTabConfig: CaseManagementTabConfig[],\n private readonly router: Router\n ) {\n if (!this.caseManagementTabConfig) return;\n\n const detailsRoute: Route | undefined = this.router.config.find(\n (route: Route) => route.data?.id === 'caseManagementDetails'\n );\n if (!detailsRoute) return;\n detailsRoute.children?.push(\n ...this.caseManagementTabConfig.map((tabConfig: CaseManagementTabConfig) => ({\n path: tabConfig.tabRoute ?? tabConfig.translationKey,\n component: tabConfig.component,\n }))\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\nimport {CaseSettings, DocumentService} from '@valtimo/document';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-assignee',\n templateUrl: './case-management-assignee.component.html',\n styleUrls: ['./case-management-assignee.component.scss'],\n})\nexport class CaseManagementAssigneeComponent {\n readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly params$: Observable<any> | undefined = this.route.parent?.params.pipe(\n map(({caseDefinitionKey, caseDefinitionVersionTag}) => ({\n caseDefinitionKey: caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionVersionTag,\n }))\n );\n\n public readonly currentValue$: Observable<CaseSettings> = this._refresh$.pipe(\n switchMap(() => this.params$),\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.documentService.getCaseSettingsForManagement(caseDefinitionKey, caseDefinitionVersionTag)\n ),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private route: ActivatedRoute\n ) {\n this.disabled$ = new BehaviorSubject<boolean>(false);\n }\n\n updateCaseSettings(\n caseSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): void {\n this.disableInput();\n\n this.documentService\n .patchCaseSettingsForManagement(caseDefinitionKey, caseDefinitionVersionTag, caseSettings)\n .subscribe(\n () => {\n this.enableInput();\n this.refreshSettings();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n disableInput(): void {\n this.disabled$.next(true);\n }\n\n enableInput(): void {\n this.disabled$.next(false);\n }\n\n private refreshSettings(): void {\n this._refresh$.next(null);\n }\n\n toggleAssignee(\n currentSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ) {\n this.updateCaseSettings(\n {\n canHaveAssignee: !currentSettings?.canHaveAssignee,\n autoAssignTasks: currentSettings.autoAssignTasks,\n },\n caseDefinitionKey,\n caseDefinitionVersionTag\n );\n }\n\n toggleTaskAssignment(\n currentSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ) {\n this.updateCaseSettings(\n {\n canHaveAssignee: currentSettings?.canHaveAssignee,\n autoAssignTasks: !currentSettings.autoAssignTasks,\n },\n caseDefinitionKey,\n caseDefinitionVersionTag\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<h2 class=\"mb-4\">{{ 'caseManagement.toggleAssignee.title' | translate }}</h2>\n\n<ng-container\n *ngIf=\"{\n currentValue: currentValue$ | async,\n loading: loading$ | async,\n disabled: disabled$ | async,\n params: params$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs?.currentValue?.canHaveAssignee\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleAssignee(obs?.currentValue, obs.params?.caseDefinitionKey)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'caseManagement.toggleAssignee.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n <ng-container *ngIf=\"obs?.currentValue?.canHaveAssignee\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs?.currentValue?.autoAssignTasks\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleTaskAssignment(obs?.currentValue, obs.params?.caseDefinitionKey)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'caseManagement.toggleAutoAssignTasks.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <valtimo-spinner></valtimo-spinner>\n</ng-template>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ModalComponent} from '@valtimo/components';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {\n DocumentDefinition,\n DocumentService,\n ProcessDocumentDefinition,\n ProcessDocumentDefinitionRequest,\n} from '@valtimo/document';\nimport {ProcessDefinition, ProcessService} from '@valtimo/process';\nimport {switchMap, take} from 'rxjs';\nimport {CaseDetailService} from '../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-connect-modal',\n templateUrl: './case-management-connect-modal.component.html',\n styleUrls: ['./case-management-connect-modal.component.scss'],\n})\nexport class CaseManagementConnectModalComponent implements OnInit {\n @ViewChild('caseConnectModal') private readonly _modal: ModalComponent;\n @Output() public reloadProcessDocumentDefinitions = new EventEmitter<any>();\n\n public documentDefinition: DocumentDefinition | null = null;\n public processDefinitions: ProcessDefinition[];\n public newDocumentProcessDefinition: ProcessDefinition | null = null;\n public newDocumentProcessDefinitionInit = true;\n public newDocumentProcessDefinitionStartableByUser = false;\n public processDocumentDefinitionExists: any = {};\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly caseDetailService: CaseDetailService,\n private readonly notificationService: GlobalNotificationService,\n private readonly processService: ProcessService,\n private readonly translateService: TranslateService\n ) {}\n\n public loadProcessDocumentDefinitions(): void {\n if (!this.documentDefinition) {\n return;\n }\n const {blueprintKey, blueprintVersionTag} = this.documentDefinition.id.blueprintId;\n this.processDocumentDefinitionExists = {};\n this.documentService\n .findProcessDocumentDefinitionsByVersion(blueprintKey, blueprintVersionTag)\n .subscribe((processDocumentDefinitions: ProcessDocumentDefinition[]) => {\n processDocumentDefinitions.forEach(\n (processDocumentDefinition: ProcessDocumentDefinition) => {\n this.processDocumentDefinitionExists[\n processDocumentDefinition.id.processDefinitionKey\n ] = true;\n }\n );\n });\n }\n\n public loadProcessDefinitions(): void {\n this.processService\n .getProcessDefinitions()\n .subscribe((processDefinitions: ProcessDefinition[]) => {\n this.processDefinitions = processDefinitions;\n });\n }\n\n public ngOnInit(): void {\n this.loadProcessDefinitions();\n }\n\n public openModal(document: DocumentDefinition): void {\n this.documentDefinition = document;\n this.newDocumentProcessDefinition = null;\n this.newDocumentProcessDefinitionInit = true;\n this.newDocumentProcessDefinitionStartableByUser = false;\n this.loadProcessDocumentDefinitions();\n this._modal.show();\n }\n\n public submit(): void {\n if (!this.documentDefinition || !this.newDocumentProcessDefinition) {\n return;\n }\n\n const request: ProcessDocumentDefinitionRequest = {\n canInitializeDocument: this.newDocumentProcessDefinitionInit,\n caseDefinitionKey: this.documentDefinition.id.blueprintId.blueprintKey,\n caseDefinitionVersionTag: `${this.documentDefinition.id.blueprintId.blueprintVersionTag}`,\n processDefinitionKey: this.newDocumentProcessDefinition.key,\n startableByUser: this.newDocumentProcessDefinitionStartableByUser,\n };\n\n this.caseDetailService.selectedCaseDefinitionVersionTag$\n .pipe(\n switchMap((caseDefinitionVersionTag: string) =>\n this.documentService.createProcessDocumentDefinition({\n ...request,\n caseDefinitionVersionTag,\n })\n ),\n take(1)\n )\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'caseManagement.processLinkNotification.linkSuccess'\n ),\n duration: 5000,\n });\n this.reloadProcessDocumentDefinitions.emit();\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'caseManagement.processLinkNotification.linkFailure'\n ),\n duration: 5000,\n });\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #caseConnectModal\n elementId=\"caseConnectModal\"\n [title]=\"documentDefinition ? documentDefinition.schema.title : 'Document definition'\"\n subtitle=\"Connect document definition to process definition\"\n showFooter=\"true\"\n>\n <div body *ngIf=\"documentDefinition\">\n <p>\n {{ 'Select process definition for document definition' | translate }}\n <strong>{{ documentDefinition.id.name }} *</strong>\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <select class=\"form-control\" [(ngModel)]=\"newDocumentProcessDefinition\">\n <option [ngValue]=\"null\">{{ 'caseManagement.selectProcessDef' | translate }}</option>\n <option\n *ngFor=\"let processDefinition of processDefinitions\"\n [disabled]=\"processDocumentDefinitionExists[processDefinition.key]\"\n [ngValue]=\"processDefinition\"\n >\n {{ processDefinition.name }} ({{ processDefinition.key }})\n </option>\n </select>\n </div>\n <p>\n {{ 'Select options for the selected process' | translate }}\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.processCreatesCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionInit\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.processCreatesCase' | translate\n }}</span>\n </label>\n <label\n class=\"custom-control custom-checkbox custom-control-inline ml-2 pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.startableWithinCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionStartableByUser\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.startableWithinCase' | translate\n }}</span>\n </label>\n </div>\n </div>\n <div footer>\n <button\n (click)=\"submit()\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\"\n [disabled]=\"!newDocumentProcessDefinition\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</valtimo-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n CarbonMultiInputModule,\n ConfirmationModalModule,\n DropzoneModule,\n EditorModule,\n EllipsisPipe,\n FormModule,\n InputModule,\n JsonEditorComponent,\n ModalModule,\n MultiselectDropdownModule,\n MuuriDirectiveModule,\n ParagraphModule,\n ReadOnlyDirective,\n RenderInPageHeaderDirective,\n SelectModule,\n SpinnerModule,\n TableModule,\n TooltipIconModule,\n ValtimoCdsModalDirective,\n ValtimoCdsOverflowButtonDirective,\n ValuePathSelectorComponent,\n WidgetModule,\n} from '@valtimo/components';\nimport {FormManagementComponent} from '@valtimo/form-management';\nimport {ConfigModule} from '@valtimo/shared';\nimport {\n ButtonModule,\n CheckboxModule,\n ComboBoxModule,\n DialogModule,\n DropdownModule,\n FileUploaderModule,\n IconModule,\n InputModule as CarbonInputModule,\n LayerModule,\n LinkModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n NumberModule,\n ProgressBarModule,\n TabsModule,\n TagModule,\n ToggleModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {CaseManagementRoutingModule} from './case-management-routing.module';\nimport {CaseManagementAssigneeComponent} from './components/case-management-assignee/case-management-assignee.component';\nimport {CaseManagementCaseDetailComponent} from './components/case-management-case-detail/case-management-case-detail.component';\nimport {CaseManagementCaseListComponent} from './components/case-management-case-list/case-management-case-list.component';\nimport {CaseManagementConnectModalComponent} from './components/case-management-connect-modal/case-management-connect-modal.component';\nimport {CaseManagementCreateDraftVersionComponent} from './components/case-management-create-draft-version/case-management-create-draft-version.component';\nimport {CaseManagementCreateComponent} from './components/case-management-create/case-management-create.component';\nimport {CaseManagementDeploymentComponent} from './components/case-management-deployment/case-management-deployment.component';\nimport {CaseManagementDetailActionsComponent} from './components/case-management-detail-actions/case-management-detail-actions.component';\nimport {CaseManagementDetailComponent} from './components/case-management-detail/case-management-detail.component';\nimport {CaseManagementDocumentDefinitionComponent} from './components/case-management-detail/tabs/case-management-document-definition/case-management-document-definition.component';\nimport {CaseManagementGeneralComponent} from './components/case-management-detail/tabs/case-management-general/case-management-general.component';\nimport {CaseManagementCaseHandlerComponent} from './components/case-management-detail/tabs/case-management-general/components/case-management-case-handler/case-management-case-handler.component';\nimport {CaseManagementExternalStartFormComponent} from './components/case-management-detail/tabs/case-management-general/components/case-management-external-start-form/case-management-external-start-form.component';\nimport {CaseManagementListColumnsComponent} from './components/case-management-detail/tabs/case-management-list-columns/case-management-list-columns.component';\nimport {CaseManagementSearchFieldsComponent} from './components/case-management-detail/tabs/case-management-search-fields/case-management-search-fields.component';\nimport {CaseManagementStatusModalComponent} from './components/case-management-detail/tabs/case-management-statuses/case-management-status-modal/case-management-status-modal.component';\nimport {CaseManagementStatusesComponent} from './components/case-management-detail/tabs/case-management-statuses/case-management-statuses.component';\nimport {CaseManagementAddTabModalComponent} from './components/case-management-detail/tabs/case-management-tabs/case-management-add-tab-modal/case-management-add-tab-modal.component';\nimport {CaseManagementEditTabModalComponent} from './components/case-management-detail/tabs/case-management-tabs/case-management-edit-tab-modal/case-management-edit-tab-modal.component';\nimport {CaseManagementTabsComponent} from './components/case-management-detail/tabs/case-management-tabs/case-management-tabs.component';\nimport {TabFormComponent} from './components/case-management-detail/tabs/case-management-tabs/tab-form/tab-form.component';\nimport {CaseManagementTagsModalComponent} from './components/case-management-detail/tabs/case-management-tags/case-management-tags-modal/case-management-tags-modal.component';\nimport {CaseManagementTagsComponent} from './components/case-management-detail/tabs/case-management-tags/case-management-tags.component';\nimport {CaseManagementListComponent} from './components/case-management-list/case-management-list.component';\nimport {CaseManagementSelectVersionModalComponent} from './components/case-management-select-version-modal/case-management-select-version-modal.component';\nimport {CaseManagementUploadComponent} from './components/case-management-upload/case-management-upload.component';\nimport {CaseManagementUploadStepComponent} from './components/case-management-upload/step/case-management-upload-step.component';\nimport {TabManagementService} from './services';\nimport {CaseManagementDraftWarningComponent} from './components/case-management-draft-warning/case-management-draft-warning.component';\nimport {CaseManagementHeaderComponent} from './components/case-management-detail/tabs/case-management-header/case-management-header.component';\n\n@NgModule({\n declarations: [\n CaseManagementListComponent,\n CaseManagementConnectModalComponent,\n CaseManagementSelectVersionModalComponent,\n CaseManagementUploadComponent,\n CaseManagementSearchFieldsComponent,\n CaseManagementDetailComponent,\n CaseManagementAssigneeComponent,\n CaseManagementListColumnsComponent,\n CaseManagementTabsComponent,\n CaseManagementAddTabModalComponent,\n TabFormComponent,\n CaseManagementEditTabModalComponent,\n CaseManagementDetailActionsComponent,\n CaseManagementDocumentDefinitionComponent,\n CaseManagementUploadStepComponent,\n CaseManagementStatusesComponent,\n CaseManagementStatusModalComponent,\n CaseManagementCreateComponent,\n CaseManagementGeneralComponent,\n CaseManagementCaseHandlerComponent,\n CaseManagementExternalStartFormComponent,\n CaseManagementDeploymentComponent,\n CaseManagementTagsComponent,\n CaseManagementTagsModalComponent,\n CaseManagementCreateDraftVersionComponent,\n CaseManagementCaseListComponent,\n CaseManagementCaseDetailComponent,\n ],\n imports: [\n CommonModule,\n WidgetModule,\n DropzoneModule,\n CaseManagementRoutingModule,\n FormsModule,\n TranslateModule,\n ModalModule,\n ConfigModule,\n NgbTooltipModule,\n MultiselectDropdownModule,\n ParagraphModule,\n SelectModule,\n SpinnerModule,\n InputModule,\n SelectModule,\n FormModule,\n NotificationModule,\n ButtonModule,\n IconModule,\n CarbonModalModule,\n CarbonInputModule,\n ReactiveFormsModule,\n DropdownModule,\n CheckboxModule,\n TooltipIconModule,\n CarbonMultiInputModule,\n LoadingModule,\n LinkModule,\n ConfirmationModalModule,\n TableModule,\n ValtimoCdsModalDirective,\n CarbonListModule,\n ComboBoxModule,\n RenderInPageHeaderDirective,\n DialogModule,\n ValtimoCdsOverflowButtonDirective,\n EditorModule,\n CarbonListModule,\n TabsModule,\n TagModule,\n FileUploaderModule,\n ProgressBarModule,\n ConfirmationModalModule,\n ToggleModule,\n TooltipModule,\n ValuePathSelectorComponent,\n LayerModule,\n FormManagementComponent,\n EllipsisPipe,\n MuuriDirectiveModule,\n NumberModule,\n ReadOnlyDirective,\n CaseManagementDraftWarningComponent,\n JsonEditorComponent,\n CaseManagementHeaderComponent,\n ],\n providers: [TabManagementService],\n})\nexport class CaseManagementModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of case-management\n */\n\nexport * from './lib/models';\nexport * from './lib/case-management.module';\nexport * from './lib/components/case-management-list/case-management-list.component';\nexport * from './lib/components/case-management-draft-warning/case-management-draft-warning.component';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","tap","switchMap","catchError","i2.TabService","i3","i4","i5","i6","i7","i3.TabService","i8.TabFormComponent","i9","i6.TabFormComponent","take","i2.TabManagementService","i8.CaseManagementAddTabModalComponent","i9.CaseManagementEditTabModalComponent","i4.CaseManagementService","i8.CaseManagementStatusModalComponent","i8.CaseManagementTagsModalComponent","i5.CaseManagementDraftWarningComponent","i6.CaseManagementHeaderComponent","i7.CaseManagementTabsComponent","i8.CaseManagementStatusesComponent","i9.CaseManagementTagsComponent","i10","uuidv4","i8","i6.CaseManagementSearchFieldsComponent","i7.CaseManagementListColumnsComponent","i5.CaseManagementService","i2.CaseManagementService","i8.CaseManagementCreateDraftVersionComponent","map","i1.CaseManagementService","i1.CaseDetailService","i8.CaseManagementSelectVersionModalComponent","i2.CaseDetailService","i7.CaseManagementDetailActionsComponent","i8.CaseManagementCaseHandlerComponent","i9.CaseManagementExternalStartFormComponent","i8.CaseManagementUploadStepComponent","moment","i7.CaseManagementUploadComponent","i8.CaseManagementCreateComponent","ModalModule","InputModule","CarbonModalModule","CarbonInputModule"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-case-management.mjs","sources":["../../../../projects/valtimo/case-management/src/lib/models/list-column.model.ts","../../../../projects/valtimo/case-management/src/lib/models/status.model.ts","../../../../projects/valtimo/case-management/src/lib/models/tab.model.ts","../../../../projects/valtimo/case-management/src/lib/models/case-list.model.ts","../../../../projects/valtimo/case-management/src/lib/models/case-deployment.model.ts","../../../../projects/valtimo/case-management/src/lib/models/index.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-draft-warning/case-management-draft-warning.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-draft-warning/case-management-draft-warning.component.html","../../../../projects/valtimo/case-management/src/lib/services/case-header-widget-management.service.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-header/case-management-header.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-header/case-management-header.component.html","../../../../projects/valtimo/case-management/src/lib/services/case-detail.service.ts","../../../../projects/valtimo/case-management/src/lib/services/tab-management.service.ts","../../../../projects/valtimo/case-management/src/lib/services/tab.service.ts","../../../../projects/valtimo/case-management/src/lib/services/widget-tab-management.service.ts","../../../../projects/valtimo/case-management/src/lib/services/case-management.service.ts","../../../../projects/valtimo/case-management/src/lib/services/index.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/tab-form/tab-form.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/tab-form/tab-form.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-add-tab-modal/case-management-add-tab-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-add-tab-modal/case-management-add-tab-modal.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-edit-tab-modal/case-management-edit-tab-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-edit-tab-modal/case-management-edit-tab-modal.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-tabs.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/case-management-tabs.component.html","../../../../projects/valtimo/case-management/src/lib/constants/case-management.test-ids.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-statuses/case-management-status-modal/case-management-status-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-statuses/case-management-status-modal/case-management-status-modal.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-statuses/case-management-statuses.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-statuses/case-management-statuses.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags-modal/case-management-tags-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags-modal/case-management-tags-modal.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tags/case-management-tags.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-case-detail/case-management-case-detail.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-case-detail/case-management-case-detail.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-search-fields/case-management-search-fields.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-search-fields/case-management-search-fields.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-list-columns/case-management-list-columns.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-list-columns/case-management-list-columns.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-case-list/case-management-case-list.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-case-list/case-management-case-list.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-create-draft-version/case-management-create-draft-version.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-create-draft-version/case-management-create-draft-version.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-deployment/case-management-deployment.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-deployment/case-management-deployment.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-select-version-modal/case-management-select-version-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-select-version-modal/case-management-select-version-modal.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail-actions/case-management-detail-actions.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail-actions/case-management-detail-actions.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/case-management-detail.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/case-management-detail.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-document-definition/case-management-document-definition.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-document-definition/case-management-document-definition.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/components/case-management-case-handler/case-management-case-handler.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/components/case-management-case-handler/case-management-case-handler.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/components/case-management-external-start-form/case-management-external-start-form.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/components/case-management-external-start-form/case-management-external-start-form.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/case-management-general.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-general/case-management-general.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/widget-tab/case-management-widget-tab-edit-modal/case-management-widget-tab-edit-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/widget-tab/case-management-widget-tab-edit-modal/case-management-widget-tab-edit-modal.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/widget-tab/case-management-widget-tab/case-management-widget-tab.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-detail/tabs/case-management-tabs/widget-tab/case-management-widget-tab/case-management-widget-tab.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-upload/case-management-upload.constants.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-upload/step/case-management-upload-step.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-upload/step/case-management-upload-step.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-upload/case-management-upload.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-upload/case-management-upload.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-create/case-management-create.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-create/case-management-create.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-list/case-management-list.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-list/case-management-list.component.html","../../../../projects/valtimo/case-management/src/lib/case-management-routing.module.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-assignee/case-management-assignee.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-assignee/case-management-assignee.component.html","../../../../projects/valtimo/case-management/src/lib/components/case-management-connect-modal/case-management-connect-modal.component.ts","../../../../projects/valtimo/case-management/src/lib/components/case-management-connect-modal/case-management-connect-modal.component.html","../../../../projects/valtimo/case-management/src/lib/case-management.module.ts","../../../../projects/valtimo/case-management/src/public-api.ts","../../../../projects/valtimo/case-management/src/valtimo-case-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ntype ListColumnModal = 'create' | 'edit';\n\nexport {ListColumnModal};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ntype StatusModalType = 'edit' | 'add' | 'closed';\n\ntype StatusModalCloseEvent = 'close' | 'closeAndRefresh';\n\nexport {StatusModalType, StatusModalCloseEvent};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport enum TabEnum {\n GENERAL = 'general',\n DOCUMENT = 'document',\n CASE = 'case',\n PROCESSES = 'processes',\n SEARCH = 'search',\n LIST = 'list',\n TABS = 'tabs',\n STATUSES = 'statuses',\n FORMS = 'forms',\n FORM_FLOWS = 'form-flows',\n TAGS = 'tags',\n DECISIONS = 'decisions',\n CASE_LIST = 'case-list',\n CASE_DETAILS = 'case-details',\n TASKS = 'tasks',\n HEADER = 'header',\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class CaseListItem {\n active: boolean;\n autoAssignTasks: boolean;\n canHaveAssignee: boolean;\n caseDefinitionKey: string;\n caseDefinitionVersionTag: string;\n name: string;\n final: boolean;\n hasConfigurationIssues: boolean;\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class CaseDefinition {\n caseDefinitionKey: string;\n caseDefinitionVersionTag: string;\n name: string;\n description: string;\n createdBy: string;\n createdDate: Date;\n basedOnVersionTag: string;\n final: boolean;\n canHaveAssignee: boolean;\n autoAssignTasks: boolean;\n active: boolean;\n conflictingVersions: string;\n}\n\nexport class ReleaseVersionData {\n caseDefinitionVersionTag: string;\n basedOnVersionTag: string;\n}\n\nexport class ReleaseInformationData {\n createdBy: string;\n createdDate: Date;\n description: string;\n}\n\nexport class DraftVersion {\n name: string;\n caseDefinitionKey: string;\n caseDefinitionVersion: string;\n description: string;\n basedOnCaseDefinitionVersion?: string;\n}\n\nexport interface CaseDefinitionFinalizationCheckResult {\n finalizable: boolean;\n code: string;\n}\n\nexport interface CaseDefinitionConfigurationIssue {\n id: string;\n issueType: string;\n resolved: boolean;\n createdAt: string;\n resolvedAt: string | null;\n}\n\nexport interface ConfigurationIssueUpdatedSseEvent {\n eventType?: string;\n caseDefinitionKey: string;\n caseDefinitionVersionTag: string;\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './list-column.model';\nexport * from './status.model';\nexport * from './tab.model';\nexport * from './case-list.model';\nexport * from './case-deployment.model';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {NotificationContent, NotificationModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable} from 'rxjs';\n\n@Component({\n selector: 'valtimo-case-management-draft-warning',\n templateUrl: './case-management-draft-warning.component.html',\n styleUrl: './case-management-draft-warning.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, NotificationModule, TranslateModule],\n})\nexport class CaseManagementDraftWarningComponent {\n private readonly _name$ = new BehaviorSubject<string>('-');\n @Input() public set name(value: string) {\n this._name$.next(value || '-');\n }\n public readonly notificationObj$: Observable<NotificationContent> = combineLatest([\n this._name$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([name]) => ({\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant('caseManagement.draftWarning.title'),\n message: this.translateService.instant('caseManagement.draftWarning.description', {name}),\n showClose: false,\n }))\n );\n\n constructor(private readonly translateService: TranslateService) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-inline-notification [notificationObj]=\"notificationObj$ | async\"></cds-inline-notification>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {\n BaseApiService,\n CaseManagementParams,\n ConfigService,\n InterceptorSkip,\n} from '@valtimo/shared';\nimport {BasicWidget, IWidgetManagementService} from '@valtimo/layout';\nimport {BehaviorSubject, catchError, filter, map, Observable, of, switchMap} from 'rxjs';\nimport {isEqual} from 'lodash';\n\n@Injectable()\nexport class CaseHeaderWidgetManagementService\n extends BaseApiService\n implements IWidgetManagementService<CaseManagementParams>\n{\n private readonly _params$ = new BehaviorSubject<CaseManagementParams | null>(null);\n public readonly params$: Observable<CaseManagementParams | null> = this._params$.asObservable();\n private readonly paramsRequired$ = this._params$.pipe(\n filter((p): p is CaseManagementParams => !!p)\n );\n\n constructor(\n protected override httpClient: HttpClient,\n protected override configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public initParams(...params: any[]): void {\n const serviceParams = params[0] as CaseManagementParams;\n if (!isEqual(serviceParams, this._params$.getValue())) {\n this._params$.next(serviceParams);\n }\n }\n\n public getWidgetConfiguration(): Observable<BasicWidget[]> {\n return this.paramsRequired$.pipe(\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.httpClient\n .get<BasicWidget>(\n this.getApiUrl(\n `management/v1/case-definition/${encodeURIComponent(\n caseDefinitionKey\n )}/version/${encodeURIComponent(caseDefinitionVersionTag)}/header-widget`\n ),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n }\n )\n .pipe(\n map(widget => [widget].filter(Boolean)),\n catchError(err => {\n if (err?.status === 404) return of([] as BasicWidget[]);\n throw err;\n })\n )\n )\n );\n }\n\n public updateWidgetConfiguration(widgets: BasicWidget[]): Observable<BasicWidget[]> {\n const widget = widgets[0];\n return this.paramsRequired$.pipe(\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.httpClient.put<BasicWidget>(\n this.getApiUrl(\n `management/v1/case-definition/${encodeURIComponent(\n caseDefinitionKey\n )}/version/${encodeURIComponent(caseDefinitionVersionTag)}/header-widget`\n ),\n widget\n )\n ),\n map(updated => [updated].filter(Boolean))\n );\n }\n\n public deleteWidget(_: BasicWidget): Observable<void> {\n return this.paramsRequired$.pipe(\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.httpClient.delete<void>(\n this.getApiUrl(\n `management/v1/case-definition/${encodeURIComponent(\n caseDefinitionKey\n )}/version/${encodeURIComponent(caseDefinitionVersionTag)}/header-widget`\n )\n )\n )\n );\n }\n\n public updateWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.paramsRequired$.pipe(\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.httpClient.put<BasicWidget>(\n this.getApiUrl(\n `management/v1/case-definition/${encodeURIComponent(\n caseDefinitionKey\n )}/version/${encodeURIComponent(caseDefinitionVersionTag)}/header-widget`\n ),\n widget\n )\n )\n );\n }\n\n public createWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.paramsRequired$.pipe(\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.httpClient.post<BasicWidget>(\n this.getApiUrl(\n `management/v1/case-definition/${encodeURIComponent(\n caseDefinitionKey\n )}/version/${encodeURIComponent(caseDefinitionVersionTag)}/header-widget`\n ),\n widget\n )\n )\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n IWidgetManagementService,\n ManagementWidgetDetailsComponent,\n WIDGET_MANAGEMENT_SERVICE,\n WidgetManagementComponent,\n WidgetType,\n WidgetWizardService,\n WidgetWizardStep,\n} from '@valtimo/layout';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {Subscription} from 'rxjs';\nimport {CaseHeaderWidgetManagementService} from '../../../../services/case-header-widget-management.service';\n\n@Component({\n standalone: true,\n selector: 'valtimo-case-management-header',\n templateUrl: './case-management-header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, WidgetManagementComponent],\n providers: [\n {\n provide: WIDGET_MANAGEMENT_SERVICE,\n useClass: CaseHeaderWidgetManagementService,\n },\n ],\n})\nexport class CaseManagementHeaderComponent\n extends ManagementWidgetDetailsComponent\n implements OnInit, OnDestroy\n{\n public readonly AVAILABLE_WIDGET_TYPES = [WidgetType.FIELDS];\n public readonly WIDGET_WIZARD_STEPS = [\n WidgetWizardStep.TYPE,\n WidgetWizardStep.CONTENT,\n ];\n\n private readonly _params$ = getCaseManagementRouteParams(this.route);\n private readonly _subscriptions = new Subscription();\n\n constructor(\n protected readonly widgetWizardService: WidgetWizardService,\n @Inject(WIDGET_MANAGEMENT_SERVICE)\n private readonly widgetManagementService: IWidgetManagementService<CaseManagementParams>,\n private readonly route: ActivatedRoute\n ) {\n super(widgetWizardService);\n }\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this._params$.subscribe(params => {\n this.widgetManagementService.initParams(params);\n this.setContext('case');\n this.widgetWizardService.$disableActionButton.set(true);\n this.setTitleDisabled(true);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-management\n [availableWidgetTypes]=\"AVAILABLE_WIDGET_TYPES\"\n [disableDuplicate]=\"true\"\n [enableWidgetDivider]=\"false\"\n [singleWidget]=\"true\"\n [disableJsonEditor]=\"true\"\n [defaultWidth]=\"4\"\n [widgetWizardSteps]=\"WIDGET_WIZARD_STEPS\"\n></valtimo-widget-management>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n startWith,\n Subject,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {DocumentDefinition, DocumentService} from '@valtimo/document';\nimport {EditorModel, PageTitleService} from '@valtimo/components';\n\n@Injectable()\nexport class CaseDetailService implements OnDestroy {\n private readonly _loadingDocumentDefinition$ = new BehaviorSubject<boolean>(true);\n private readonly _previousSelectedCaseDefinitionVersionTag$ = new BehaviorSubject<string | null>(\n null\n );\n private readonly _selectedCaseDefinitionVersionTag$ = new BehaviorSubject<string | null>(null);\n private readonly _selectedCaseDefinitionKey$ = new BehaviorSubject<string>('');\n private readonly _documentDefinition$ = new BehaviorSubject<DocumentDefinition | null>(null);\n private readonly _documentDefinitionModel$: Observable<EditorModel> =\n this.documentDefinition$.pipe(\n map((definition: DocumentDefinition | null) => ({\n value: JSON.stringify(definition?.schema, null, 2),\n language: 'json',\n }))\n );\n private readonly _reloadDocumentDefinition$ = new Subject<void>();\n\n public get selectedCaseDefinitionVersionTag$(): Observable<string | null> {\n return this._selectedCaseDefinitionVersionTag$.pipe(\n filter(version => typeof version === 'string'),\n distinctUntilChanged()\n );\n }\n\n public get previousSelectedCaseDefinitionVersionTag$(): Observable<string | null> {\n return this._previousSelectedCaseDefinitionVersionTag$.asObservable();\n }\n\n public get selectedCaseDefinitionKey$(): Observable<string> {\n return this._selectedCaseDefinitionKey$.pipe(\n filter(name => !!name),\n distinctUntilChanged()\n );\n }\n\n public get selectedDocumentDefinitionIsReadOnly$(): Observable<boolean> {\n return this.documentDefinition$.pipe(\n map(definition => definition?.readOnly ?? false),\n distinctUntilChanged()\n );\n }\n\n public get loadingDocumentDefinition$(): Observable<boolean> {\n return this._loadingDocumentDefinition$.pipe(distinctUntilChanged());\n }\n\n public get documentDefinition$(): Observable<DocumentDefinition | null> {\n return this._documentDefinition$.pipe(\n filter(def => !!def),\n distinctUntilChanged()\n );\n }\n\n public get documentDefinitionModel$(): Observable<EditorModel> {\n return this._documentDefinitionModel$.pipe(distinctUntilChanged());\n }\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly pageTitleService: PageTitleService\n ) {\n this.openDocumentDefinitionSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setSelectedCaseDefinitionVersionTag(versionTag: string): void {\n this._selectedCaseDefinitionVersionTag$.next(versionTag);\n }\n\n public setPreviousSelectedCaseDefinitionVersionTag(versionTag: string | null): void {\n this._previousSelectedCaseDefinitionVersionTag$.next(versionTag);\n }\n\n public setSelectedCaseDefinitionKey(key: string): void {\n this._selectedCaseDefinitionKey$.next(key);\n }\n\n public setLoadingDocumentDefinition(loading: boolean): void {\n this._loadingDocumentDefinition$.next(loading);\n }\n\n public reloadDocumentDefinition(): void {\n this._reloadDocumentDefinition$.next(null);\n }\n\n private openDocumentDefinitionSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.selectedCaseDefinitionVersionTag$,\n this.selectedCaseDefinitionKey$,\n this._reloadDocumentDefinition$.pipe(startWith(null)),\n ])\n .pipe(\n tap(() => {\n this.pageTitleService.setCustomPageTitleSet(false);\n this.setLoadingDocumentDefinition(true);\n }),\n switchMap(([selectedVersionTag, selectedKey]) =>\n this.documentService.getDocumentDefinitionByVersion(selectedKey, selectedVersionTag)\n ),\n tap(res => {\n this._documentDefinition$.next(res);\n this.pageTitleService.setCustomPageTitle(res?.schema?.title || '-', true);\n this.setLoadingDocumentDefinition(false);\n })\n )\n .subscribe()\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService, CaseManagementParams} from '@valtimo/shared';\nimport {ApiTabItem} from '@valtimo/case';\nimport {BehaviorSubject, Observable, of} from 'rxjs';\nimport {catchError, switchMap, take, tap} from 'rxjs/operators';\n\n@Injectable()\nexport class TabManagementService {\n private _valtimoEndpointBase: string;\n private _params!: CaseManagementParams;\n\n public readonly tabs$ = new BehaviorSubject<ApiTabItem[]>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this._valtimoEndpointBase = `${this.configService.config.valtimoApi.endpointUri}management/v1/case-definition`;\n }\n\n public setParams(params: CaseManagementParams): void {\n this._params = params;\n }\n\n private get _caseDefinitionUrl(): string {\n return `${this._valtimoEndpointBase}/${this._params.caseDefinitionKey}/version/${this._params.caseDefinitionVersionTag}`;\n }\n\n public loadTabs(): void {\n this.loading$.next(true);\n this.getTabList()\n .pipe(take(1))\n .subscribe({\n next: (items: ApiTabItem[]) => {\n this.tabs$.next(items);\n this.loading$.next(false);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n\n public dispatchAction(actionResult: Observable<ApiTabItem | ApiTabItem[] | null>): void {\n actionResult\n .pipe(\n tap(() => {\n this.loading$.next(true);\n this.tabs$.next([]);\n }),\n switchMap((result: ApiTabItem | ApiTabItem[] | null) =>\n Array.isArray(result) ? of(result) : this.getTabList()\n ),\n take(1),\n catchError(error => of(error))\n )\n .subscribe({\n next: (tabs: ApiTabItem[]) => {\n this.loading$.next(false);\n this.tabs$.next(tabs);\n },\n error: error => {\n console.log(error);\n },\n });\n }\n\n public addTab(tab: Partial<ApiTabItem>): Observable<ApiTabItem> {\n return this.http.post<ApiTabItem>(`${this._caseDefinitionUrl}/tab`, this.getTabDto(tab));\n }\n\n public deleteTab(tabKey: string): Observable<null> {\n return this.http.delete<null>(`${this._caseDefinitionUrl}/tab/${tabKey}`);\n }\n\n public editTab(tab: Partial<ApiTabItem>, tabKey: string): Observable<ApiTabItem> {\n return this.http.put<ApiTabItem>(\n `${this._caseDefinitionUrl}/tab/${tabKey}`,\n this.getTabDto(tab)\n );\n }\n\n public editTabsOrder(tabList: ApiTabItem[]): Observable<ApiTabItem[]> {\n return this.http.put<ApiTabItem[]>(`${this._caseDefinitionUrl}/tab`, tabList);\n }\n\n public getTab(tabKey: string): Observable<ApiTabItem> {\n return this.http.get<ApiTabItem>(`${this._caseDefinitionUrl}/tab/${tabKey}`);\n }\n\n private getTabList(): Observable<ApiTabItem[]> {\n return this.http.get<ApiTabItem[]>(`${this._caseDefinitionUrl}/tab`);\n }\n\n private getTabDto(tab: Partial<ApiTabItem>): Partial<ApiTabItem> {\n if (tab.name === '') {\n delete tab.name;\n }\n return tab;\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CASE_TAB_TOKEN, CaseTabConfig, DefaultTabs} from '@valtimo/case';\nimport {\n CASE_MANAGEMENT_TAB_TOKEN,\n CaseManagementParams,\n CaseManagementTabConfig,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\nimport {ListItem} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, of, switchMap} from 'rxjs';\nimport {TabEnum} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabService {\n public configuredTabKeys: string[];\n\n private _injectedCaseManagementTabs$ = new BehaviorSubject<CaseManagementTabConfig[]>([]);\n\n public get injectedCaseManagementTabs$(): Observable<CaseManagementTabConfig[]> {\n return this._injectedCaseManagementTabs$.asObservable();\n }\n\n private _currentTab$ = new BehaviorSubject<TabEnum | string>(TabEnum.DOCUMENT);\n public get currentTab$(): Observable<TabEnum | string> {\n return this._currentTab$.asObservable();\n }\n public set currentTab(tab: TabEnum | string) {\n this._currentTab$.next(tab);\n }\n\n private _configuredContentKeys$ = new BehaviorSubject<string[]>([]);\n public get configuredContentKeys$(): Observable<string[]> {\n return this._configuredContentKeys$.asObservable();\n }\n public set configuredContentKeys(value: string[]) {\n this._configuredContentKeys$.next(value);\n }\n\n public readonly customComponentKeys$ = new BehaviorSubject<ListItem[]>(\n !this.caseTabConfig\n ? []\n : Object.keys(this.caseTabConfig).map((contentKey: string) => ({\n contentKey,\n content: contentKey,\n selected: false,\n }))\n );\n\n public readonly defaultTabs$: Observable<ListItem[]> = this.translateService.stream('key').pipe(\n map(() =>\n Object.values(DefaultTabs).map((key: string) => ({\n contentKey: key,\n content: this.translateService.instant(`case.tabs.${key}`),\n selected: false,\n }))\n )\n );\n\n constructor(\n @Optional() @Inject(CASE_TAB_TOKEN) private readonly caseTabConfig: CaseTabConfig,\n @Optional()\n @Inject(CASE_MANAGEMENT_TAB_TOKEN)\n private readonly caseManagementTabConfig: CaseManagementTabConfig[],\n private readonly formService: FormService,\n private readonly translateService: TranslateService\n ) {\n this.setInjectedCaseManagementTabs(this.caseManagementTabConfig);\n }\n\n public getDisabledAddTabs(route: ActivatedRoute): Observable<{\n standard: boolean;\n custom: boolean;\n formIO: boolean;\n widgets: boolean;\n }> {\n return combineLatest([\n this.configuredContentKeys$,\n this.getFormDefinitions(route),\n this.defaultTabs$,\n this.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => ({\n standard: defaultTabs.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n custom:\n !customComponentKeys.length ||\n customComponentKeys.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n formIO:\n !formDefinitions.length ||\n formDefinitions.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n widgets: false,\n }))\n );\n }\n\n public getFormDefinitions(route: ActivatedRoute): Observable<ListItem[]> {\n return getCaseManagementRouteParams(route).pipe(\n switchMap((params: CaseManagementParams) => {\n return this.formService\n .getAllFormDefinitionsForCaseDefinition(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n .pipe(\n map((formDefinitions: FormDefinitionOption[]) => {\n return formDefinitions.map((formDefinition: FormDefinitionOption) => ({\n contentKey: formDefinition.name,\n content: formDefinition.name,\n selected: false,\n }));\n })\n );\n })\n );\n }\n\n private setInjectedCaseManagementTabs(\n caseManagementTabConfig?: CaseManagementTabConfig[] | CaseManagementTabConfig\n ): void {\n if (!caseManagementTabConfig) return;\n const tabs = Array.isArray(caseManagementTabConfig)\n ? caseManagementTabConfig\n : [caseManagementTabConfig];\n\n this._injectedCaseManagementTabs$.next(\n tabs.map(tab => ({...tab, enabled$: tab.enabled$ ?? of(true)}))\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {CaseManagementParams, ConfigService} from '@valtimo/shared';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {BasicWidget, IWidgetManagementService} from '@valtimo/layout';\nimport {CaseWidgetsRes} from '@valtimo/case';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseWidgetManagementApiService\n implements IWidgetManagementService<CaseManagementParams & {key: string}>\n{\n private readonly valtimoEndpointBase: string;\n private _widgetConfigurationCache: BasicWidget[] = [];\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this.valtimoEndpointBase = `${this.configService.config.valtimoApi.endpointUri}management/v1/case-definition`;\n }\n\n public readonly params$: BehaviorSubject<CaseManagementParams & {key: string}> =\n new BehaviorSubject<CaseManagementParams & {key: string}>({\n caseDefinitionKey: '',\n caseDefinitionVersionTag: '',\n key: '',\n });\n\n public initParams(params: CaseManagementParams & {key: string}): void {\n this.params$.next(params);\n }\n public deleteWidget(widget: BasicWidget): Observable<void> {\n return this.updateWidgets(\n this._widgetConfigurationCache.filter(\n (cachedWidget: BasicWidget) => cachedWidget.key !== widget.key\n )\n );\n }\n public updateWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.updateWidgets(\n this._widgetConfigurationCache.map((cachedWidget: BasicWidget) =>\n cachedWidget.key === widget.key ? widget : cachedWidget\n )\n );\n }\n public createWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.updateWidgets([...this._widgetConfigurationCache, widget]);\n }\n\n public getWidgetConfiguration(): Observable<BasicWidget[]> {\n return this.params$.pipe(\n switchMap((params: CaseManagementParams & {key: string}) =>\n this.http.get<any>(\n `${this.valtimoEndpointBase}/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}/widget-tab/${params.key}`\n )\n ),\n map((res: CaseWidgetsRes) => {\n this._widgetConfigurationCache = res.widgets;\n return res.widgets;\n })\n );\n }\n\n public updateWidgetConfiguration(widgets: BasicWidget[]): Observable<BasicWidget[]> {\n return this.updateWidgets(widgets);\n }\n\n private updateWidgets(widgets: BasicWidget[]): Observable<any> {\n return this.params$.pipe(\n switchMap((params: CaseManagementParams & {key: string}) =>\n this.http.post<any>(\n `${this.valtimoEndpointBase}/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}/widget-tab/${params.key}`,\n {...params, widgets}\n )\n )\n );\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {HttpClient, HttpHeaders, HttpResponse} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {\n BaseApiService,\n ConfigService,\n InterceptorSkip,\n InterceptorSkipHeader,\n} from '@valtimo/shared';\nimport {Page} from '@valtimo/document';\nimport {map, Observable, tap} from 'rxjs';\nimport {CaseListItem} from '../models';\nimport {CaseVersionListItem} from '../models/case-version-list.model';\nimport {\n CaseDefinition,\n CaseDefinitionConfigurationIssue,\n CaseDefinitionFinalizationCheckResult,\n DraftVersion,\n} from '../models/case-deployment.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseManagementService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getCaseDefinitions(params: any): Observable<Page<CaseListItem>> {\n return this.httpClient.get<Page<CaseListItem>>(\n this.getApiUrl('management/v1/case-definition'),\n {params}\n );\n }\n\n public getCaseDefinitionVersions(caseDefinitionKey: string): Observable<any[]> {\n return this.httpClient.get<any[]>(\n this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version`),\n {\n params: {size: 100},\n }\n );\n }\n\n public createDraftVersion(payload: DraftVersion): Observable<any[]> {\n return this.httpClient.post<any[]>(\n this.getApiUrl(`management/v1/case-definition/draft`),\n payload\n );\n }\n\n public isDraftVersion(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<boolean> {\n return this.httpClient\n .get<CaseDefinition>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`\n ),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '403'),\n }\n )\n .pipe(map(caseDefinition => !caseDefinition.final));\n }\n\n public getGlobalActiveCase(caseDefinitionKey: string): Observable<any> {\n return this.httpClient.get<any[]>(\n this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}`),\n {headers: new HttpHeaders().set(InterceptorSkip, '404')}\n );\n }\n\n public setGlobalActiveCaseVersion(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<any[]> {\n return this.httpClient.post<any[]>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/active`\n ),\n {}\n );\n }\n\n public getAllCaseVersions(params: any): Observable<Page<CaseVersionListItem>> {\n return this.httpClient.get<Page<CaseVersionListItem>>(\n this.getApiUrl(`management/v1/case-definition`),\n {params}\n );\n }\n\n public finalizeDraftCaseVersion(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<any[]> {\n return this.httpClient.post<any[]>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/finalize`\n ),\n {}\n );\n }\n\n public deleteDraftCaseVersion(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<null> {\n return this.httpClient.delete<null>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`\n )\n );\n }\n\n public getCaseDefinition(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<CaseDefinition> {\n return this.httpClient.get<CaseDefinition>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`\n ),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '403'),\n }\n );\n }\n\n public importDocumentDefinitionZip(file: FormData): Observable<HttpResponse<Blob>> {\n return this.httpClient\n .post<HttpResponse<Blob>>(this.getApiUrl(`management/v1/case/import`), file)\n .pipe(tap(res => console.log({res})));\n }\n\n public exportDocumentDefinition(\n caseDefinitionKey: string,\n caseDefinitionVersionTag = '0'\n ): Observable<HttpResponse<Blob>> {\n return this.httpClient.get<Blob>(\n this.getApiUrl(\n `management/v1/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/export`\n ),\n {observe: 'response', responseType: 'blob' as 'json', headers: InterceptorSkipHeader}\n );\n }\n\n public getConfigurationIssues(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<CaseDefinitionConfigurationIssue[]> {\n return this.httpClient.get<CaseDefinitionConfigurationIssue[]>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/configuration-issues`\n )\n );\n }\n\n public getCaseDefinitionFinalizationCheck(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): Observable<CaseDefinitionFinalizationCheckResult> {\n return this.httpClient.get<CaseDefinitionFinalizationCheckResult>(\n this.getApiUrl(\n `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/finalizable`\n )\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './case-detail.service';\nexport * from './tab-management.service';\nexport * from './tab.service';\nexport * from './widget-tab-management.service';\nexport * from './case-management.service';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {AbstractControl, FormGroup, FormGroupDirective} from '@angular/forms';\nimport {ApiTabType, DefaultTabs} from '@valtimo/case';\nimport {ListItem} from 'carbon-components-angular';\nimport {combineLatest, map, startWith, Subscription} from 'rxjs';\nimport {TabService} from '../../../../../services';\nimport {ConfigService} from '@valtimo/shared';\nimport {ActivatedRoute} from '@angular/router';\n\n@Component({\n standalone: false,\n selector: 'valtimo-tab-form',\n templateUrl: './tab-form.component.html',\n styleUrls: ['./tab-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabFormComponent implements OnInit, OnDestroy {\n @Input() public tabType: ApiTabType;\n\n public disableTaskListVisibleToggle = signal(false);\n\n public readonly listItems$ = combineLatest([\n this.tabService.configuredContentKeys$,\n this.tabService.getFormDefinitions(this.route),\n this.tabService.defaultTabs$,\n this.tabService.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => {\n switch (this.tabType) {\n case ApiTabType.STANDARD:\n return this.getListItems(defaultTabs, tabKeys);\n case ApiTabType.CUSTOM:\n return this.getListItems(customComponentKeys, tabKeys);\n case ApiTabType.FORMIO:\n return this.getListItems(formDefinitions, tabKeys);\n case ApiTabType.WIDGETS:\n return [];\n }\n }),\n startWith([])\n );\n\n public form!: FormGroup;\n\n public showTasks!: AbstractControl<boolean>;\n\n private _searchActive: boolean;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly configService: ConfigService,\n private readonly tabService: TabService,\n private readonly formGroupDirective: FormGroupDirective,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this.form = this.formGroupDirective.control;\n this.showTasks = this.form.get('showTasks');\n this.openTaskListToggleSubscription();\n\n if (this.tabType == ApiTabType.WIDGETS) {\n this.form.get('contentKey')?.disable();\n } else {\n this.form.get('contentKey')?.enable();\n }\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public isKeyError(): boolean {\n return this.form.get('key')?.hasError('uniqueKey') || this.form.get('key')?.hasError('pattern');\n }\n\n public getKeyErrorMessage(): string {\n if (this.form.get('key')?.hasError('uniqueKey'))\n return 'caseManagement.tabManagement.addModal.uniqueKeyError';\n if (this.form.get('key')?.hasError('pattern'))\n return 'caseManagement.tabManagement.addModal.invalidKeyError';\n return '';\n }\n\n public onSearch(): void {\n if (this._searchActive) {\n return;\n }\n\n this._searchActive = true;\n this.form.get('contentKey')?.reset('');\n }\n\n public onSelected(): void {\n this._searchActive = false;\n }\n\n public toggleCheckedChange(event: boolean): void {\n this.showTasks?.patchValue(!!event);\n }\n\n private openTaskListToggleSubscription(): void {\n this.form.get('contentKey').valueChanges.subscribe(contentKey => {\n const summarySelected = contentKey === DefaultTabs.summary;\n\n if (summarySelected) {\n this.toggleCheckedChange(true);\n this.disableTaskListVisibleToggle.set(true);\n } else {\n this.disableTaskListVisibleToggle.set(false);\n }\n });\n }\n\n private getListItems(tabItems: ListItem[], configuredContentKeys: string[]): ListItem[] {\n return tabItems\n .filter(\n (tabItem: ListItem) =>\n !configuredContentKeys.includes(tabItem.contentKey) ||\n this.form?.get('contentKey')?.value === tabItem.contentKey\n )\n .map((tabItem: ListItem) => ({\n ...tabItem,\n selected: this.form?.get('contentKey')?.value === tabItem.contentKey,\n }));\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form *ngIf=\"form\" [formGroup]=\"form\" class=\"valtimo-tab-form-modal\" [cdsLayer]=\"1\">\n <cds-label>\n {{ 'caseManagement.tabManagement.addModal.tabNameLabel' | translate }}\n\n <input cdsText formControlName=\"name\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label [invalid]=\"!!isKeyError()\" [invalidText]=\"getKeyErrorMessage() | translate\">\n {{ 'caseManagement.tabManagement.addModal.tabKeyLabel' | translate }}\n\n <input\n cdsText\n formControlName=\"key\"\n pattern=\"[a-zA-Z0-9\\-]+\"\n [invalid]=\"!!isKeyError()\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-combo-box\n *ngIf=\"tabType !== 'widgets'\"\n [cdsLayer]=\"1\"\n [dropUp]=\"false\"\n formControlName=\"contentKey\"\n [items]=\"listItems$ | async\"\n itemValueKey=\"contentKey\"\n [label]=\"'caseManagement.tabManagement.contentLabels.' + tabType | translate\"\n (search)=\"onSearch($event)\"\n (selected)=\"onSelected($event)\"\n >\n <cds-dropdown-list [cdsLayer]=\"1\"></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-toggle\n [label]=\"'caseManagement.tabManagement.addModal.visibleTitle' | translate\"\n [onText]=\"'caseManagement.tabManagement.addModal.visible' | translate\"\n [offText]=\"'caseManagement.tabManagement.addModal.invisible' | translate\"\n [checked]=\"showTasks?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n [disabled]=\"disableTaskListVisibleToggle()\"\n ></cds-toggle>\n</form>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {Code16, Development16, TableBuilt16, WatsonHealthPageScroll16} from '@carbon/icons';\nimport {ApiTabItem, ApiTabType, TabSelectItem} from '@valtimo/case';\nimport {CaseManagementParams, ConfigService} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable} from 'rxjs';\nimport {TabService} from '../../../../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-add-tab-modal',\n templateUrl: './case-management-add-tab-modal.component.html',\n styleUrls: ['./case-management-add-tab-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CaseManagementAddTabModalComponent {\n @Input() params: CaseManagementParams;\n @Input() open = false;\n\n @Output() closeModalEvent = new EventEmitter<Partial<ApiTabItem> | null>();\n\n public readonly ApiTabType = ApiTabType;\n\n public readonly tabTypes$: Observable<TabSelectItem[]> = combineLatest([\n this.tabService.getDisabledAddTabs(this.route),\n this.configService.featureToggles$,\n ]).pipe(\n map(([disabled, featureToggles]) => [\n {\n icon: 'development',\n title: 'caseManagement.tabManagement.addModal.standardTab',\n type: ApiTabType.STANDARD,\n disabled: disabled.standard,\n disabledTooltipTranslationKey: 'caseManagement.tabManagement.addModal.standardTabDisabled',\n },\n {\n icon: 'page-scroll',\n title: 'caseManagement.tabManagement.addModal.formIOComponent',\n type: ApiTabType.FORMIO,\n disabled: disabled.formIO,\n disabledTooltipTranslationKey:\n 'caseManagement.tabManagement.addModal.formIOComponentDisabled',\n },\n {\n icon: 'code',\n title: 'caseManagement.tabManagement.addModal.customComponent',\n type: ApiTabType.CUSTOM,\n disabled: disabled.custom,\n disabledTooltipTranslationKey:\n 'caseManagement.tabManagement.addModal.customComponentDisabled',\n },\n {\n icon: 'table--built',\n title: 'caseManagement.tabManagement.addModal.widgetsComponent',\n type: ApiTabType.WIDGETS,\n disabled: disabled.widgets,\n },\n ])\n );\n\n public readonly form = this.fb.group({\n name: this.fb.control(null),\n key: this.fb.control('', [Validators.required, this.uniqueKeyValidator()]),\n contentKey: this.fb.control('', Validators.required),\n showTasks: this.fb.control(false, Validators.required),\n });\n public readonly selectedTabType$ = new BehaviorSubject<ApiTabType | null>(null);\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly tabService: TabService,\n private readonly configService: ConfigService,\n private readonly route: ActivatedRoute\n ) {\n this.iconService.registerAll([Code16, Development16, TableBuilt16, WatsonHealthPageScroll16]);\n }\n\n public addTab(type: ApiTabType): void {\n let {contentKey, key, name, showTasks} = this.form.getRawValue();\n if (!contentKey) {\n contentKey = '-';\n }\n\n if (!key) {\n return;\n }\n this.closeModalEvent.emit({name, key, contentKey, type, showTasks});\n }\n\n public backClick(): void {\n this.resetModal();\n }\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n this.resetModal();\n }\n\n public onTabTypeSelect(type: ApiTabType): void {\n this.selectedTabType$.next(type);\n }\n\n private resetModal(): void {\n this.selectedTabType$.next(null);\n this.form.reset();\n }\n\n private uniqueKeyValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null =>\n this.tabService.configuredTabKeys.every((key: string) => key !== control.value)\n ? null\n : {uniqueKey: {value: control.value}};\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal *ngIf=\"{selectedTabType: selectedTabType$ | async} as obs\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\" [cdsLayer]=\"1\">\n <h3 cdsModalHeaderHeading>\n {{\n !obs.selectedTabType\n ? ('caseManagement.tabManagement.addModal.title'\n | translate: {documentDefinitionName: (params.caseDefinitionKey | titlecase)})\n : ('caseManagement.tabManagement.titles.' + obs.selectedTabType | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent class=\"valtimo-add-tab-modal__content\" [cdsLayer]=\"1\">\n <valtimo-tab-form\n *ngIf=\"obs.selectedTabType; else tabTypeSelection\"\n [tabType]=\"obs.selectedTabType\"\n ></valtimo-tab-form>\n\n <ng-template #tabTypeSelection>\n <span> {{ 'caseManagement.tabManagement.addModal.description' | translate }} </span>\n\n <div *ngIf=\"tabTypes$ | async as tabTypes\" class=\"valtimo-add-tab-modal__types\">\n <cds-tooltip\n *ngFor=\"let tabType of tabTypes\"\n [caret]=\"true\"\n enterDelayMs=\"0\"\n leaveDelayMs=\"0\"\n [description]=\"tabType.disabledTooltipTranslationKey | translate\"\n [disabled]=\"!tabType.disabled\"\n align=\"bottom\"\n >\n <button\n cdsButton=\"secondary\"\n [disabled]=\"tabType.disabled\"\n (click)=\"onTabTypeSelect(tabType.type)\"\n >\n {{ tabType.title | translate }}\n\n <svg [cdsIcon]=\"tabType.icon\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </cds-tooltip>\n </div>\n </ng-template>\n </section>\n\n <cds-modal-footer class=\"valtimo-add-tab-modal__footer\" [cdsLayer]=\"1\">\n <button class=\"valtimo-add-tab-modal__cancel\" cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <div class=\"valtimo-add-tab-modal__actions\" *ngIf=\"obs.selectedTabType\">\n <button cdsButton=\"secondary\" (click)=\"backClick()\">\n {{ 'interface.back' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"addTab(obs.selectedTabType)\">\n {{ 'caseManagement.tabManagement.addModal.addTab' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {ApiTabItem} from '@valtimo/case';\nimport {TabService} from '../../../../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-edit-tab-modal',\n templateUrl: './case-management-edit-tab-modal.component.html',\n})\nexport class CaseManagementEditTabModalComponent {\n @Input() open: boolean;\n\n private _tab: ApiTabItem;\n @Input() public set tab(value: ApiTabItem) {\n if (!value) {\n return;\n }\n\n if (!!this.tabService.configuredContentKeys) {\n this.configuredKeysForEdit = this.tabService.configuredContentKeys.filter(\n (tabKey: string) => tabKey !== value.contentKey\n );\n }\n\n this._tab = value;\n this.form = this.fb.group({\n name: this.fb.control(value.name),\n key: this.fb.control({value: value.key, disabled: true}, Validators.required),\n contentKey: this.fb.control(value.contentKey, Validators.required),\n showTasks: this.fb.control(value.showTasks, Validators.required),\n });\n }\n public get tab(): ApiTabItem {\n return this._tab;\n }\n\n @Output() closeModalEvent = new EventEmitter<ApiTabItem | null>();\n\n public form: FormGroup;\n public configuredKeysForEdit: string[];\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly tabService: TabService\n ) {}\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n }\n\n public editTab(): void {\n const {contentKey, name, showTasks} = this.form.getRawValue();\n\n if (!contentKey) {\n return;\n }\n\n this.closeModalEvent.emit({...this.tab, name, contentKey, showTasks});\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal *ngIf=\"form\" [open]=\"open\" (close)=\"onCloseModal()\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n 'caseManagement.tabManagement.editModal.title'\n | translate: {name: tab?.name ?? 'case.tabs.' + tab.key | translate}\n }}\n </h3>\n </cds-modal-header>\n\n <section\n [formGroup]=\"form\"\n cdsModalContent\n [cdsLayer]=\"1\"\n >\n <valtimo-tab-form\n [configuredContentKeys]=\"configuredKeysForEdit\"\n [tabType]=\"tab?.type\"\n ></valtimo-tab-form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"editTab()\">\n {{ 'caseManagement.tabManagement.editModal.updateTab' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n signal,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ApiTabItem, ApiTabType} from '@valtimo/case';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {\n CaseManagementParams,\n EditPermissionsService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, filter, map, Observable, switchMap, take, tap} from 'rxjs';\nimport {TabManagementService, TabService} from '../../../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-tabs',\n templateUrl: './case-management-tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CaseManagementTabsComponent implements AfterViewInit {\n @ViewChild('tabContentColumn') tabContentColumnTemplate: TemplateRef<any>;\n @ViewChild('tabTypeColumn') tabTypeColumnTemplate: TemplateRef<any>;\n @ViewChild('moveButtonsTemplate') moveButtonsTemplate: TemplateRef<any>;\n\n public readonly caseManagementRouteParams$ = getCaseManagementRouteParams(this.route).pipe(\n tap(params => {\n this.tabManagementService.setParams(params);\n this.tabManagementService.loadTabs();\n })\n );\n\n public actionItems: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.openDeleteConfirmationModal.bind(this),\n type: 'danger',\n },\n ];\n public readonly deleteRowKey$ = new BehaviorSubject<string | null>(null);\n public readonly showDeleteModal$: Observable<boolean> = this.deleteRowKey$.pipe(\n map((key: string | null) => !!key)\n );\n public readonly openEditModal$ = new BehaviorSubject<boolean>(false);\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n public readonly loading$: Observable<boolean> = this.tabManagementService.loading$;\n public readonly openAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly lastItemIndex$ = new BehaviorSubject<number>(-1);\n\n public readonly tabs$: Observable<ApiTabItem[]> = this.tabManagementService.tabs$.pipe(\n tap(tabs => {\n this.tabService.configuredContentKeys = tabs.map((tab: ApiTabItem) => tab.contentKey);\n this.tabService.configuredTabKeys = tabs.map((tab: ApiTabItem) => tab.key);\n this.lastItemIndex$.next(tabs.length - 1);\n this.dragAndDropDisabled.set(false);\n })\n );\n\n public readonly tab$ = new BehaviorSubject<ApiTabItem | null>(null);\n public readonly dragAndDropDisabled = signal(false);\n\n private readonly params$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n\n public readonly hasEditPermissions$: Observable<boolean> = this.params$.pipe(\n switchMap(params =>\n this.editPermissionsService.hasEditPermissions(\n params?.caseDefinitionKey,\n params?.caseDefinitionVersionTag\n )\n )\n );\n\n constructor(\n private readonly cd: ChangeDetectorRef,\n private readonly iconService: IconService,\n private readonly tabManagementService: TabManagementService,\n private readonly tabService: TabService,\n private readonly translateService: TranslateService,\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly editPermissionsService: EditPermissionsService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n this.cd.detectChanges();\n this.setFields();\n }\n\n public isTranslated(key: string): boolean {\n return this.translateService.instant(key) !== key;\n }\n\n public openAddTabModal(): void {\n this.openAddModal$.next(true);\n }\n\n public openEditModal(tab: ApiTabItem): void {\n this.tab$.next(tab);\n this.openEditModal$.next(true);\n }\n\n public onRowClicked(tab: ApiTabItem): void {\n this.hasEditPermissions$\n .pipe(\n filter(hasPermission => hasPermission),\n take(1)\n )\n .subscribe(() => {\n this.tab$.next(tab);\n\n if (tab.type === ApiTabType.WIDGETS) {\n this.router.navigate(['widget-tab', tab.key], {relativeTo: this.route});\n } else {\n this.openEditModal$.next(true);\n }\n });\n }\n\n public onCloseAddModalEvent(tab: ApiTabItem | null): void {\n this.openAddModal$.next(false);\n\n if (!tab) {\n return;\n }\n\n this.addTab(tab);\n }\n\n public onCloseEditModalEvent(tab: ApiTabItem | null): void {\n this.openEditModal$.next(false);\n this.tab$.next(null);\n\n if (!tab) {\n return;\n }\n\n this.editTab(tab);\n }\n\n public openDeleteConfirmationModal(tab: ApiTabItem): void {\n this.deleteRowKey$.next(tab.key);\n }\n\n public onConfirmEvent(tabKey: string): void {\n this.deleteTab(tabKey);\n }\n\n public onItemsReorderedEvent(reorderedItems: ApiTabItem[]): void {\n if (!reorderedItems) return;\n\n this.dragAndDropDisabled.set(true);\n\n this.tabManagementService.dispatchAction(\n this.tabManagementService.editTabsOrder(reorderedItems)\n );\n }\n\n private addTab(tab: Partial<ApiTabItem>): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.addTab(tab));\n }\n\n private deleteTab(tabKey: string): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.deleteTab(tabKey));\n }\n\n private editTab(tab: ApiTabItem): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.editTab(tab, tab.key));\n }\n\n private setFields(): void {\n this.fields$.next([\n {\n key: 'name',\n label: 'caseManagement.tabManagement.columns.name',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'caseManagement.tabManagement.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabTypeColumnTemplate,\n key: '',\n label: 'caseManagement.tabManagement.columns.type',\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabContentColumnTemplate,\n key: '',\n label: 'caseManagement.tabManagement.columns.content',\n },\n {\n viewType: ViewType.BOOLEAN,\n key: 'showTasks',\n label: 'caseManagement.tabManagement.columns.showTasks',\n },\n ]);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n routeParams: caseManagementRouteParams$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n *ngIf=\"{fields: fields$ | async, loading: loading$ | async, tabs: tabs$ | async} as obs\"\n [actionItems]=\"actionItems\"\n [items]=\"obs.tabs\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n (rowClicked)=\"onRowClicked($event)\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"dragAndDropDisabled() || !(hasEditPermissions$ | async)\"\n (itemsReordered)=\"onItemsReorderedEvent($event)\"\n >\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addTabButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addTabButton\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <ng-template #tabTypeColumn let-data=\"data\">\n {{\n isTranslated('caseManagement.tabType.' + data.item.type)\n ? ('caseManagement.tabType.' + data.item.type | translate)\n : data.item.type\n }}\n </ng-template>\n\n <ng-template #tabContentColumn let-data=\"data\">\n {{\n isTranslated('case.tabs.' + data.item.contentKey)\n ? ('case.tabs.' + data.item.contentKey | translate)\n : data.item.contentKey\n }}\n </ng-template>\n\n <ng-template #addTabButton>\n <button cdsButton=\"primary\" *ngIf=\"obs.hasEditPermissions\" (click)=\"openAddTabModal()\">\n {{ 'caseManagement.tabManagement.addModal.addTab' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </ng-template>\n\n <valtimo-case-management-add-tab-modal\n *ngIf=\"openAddModal$ | async\"\n [params]=\"obs.routeParams\"\n [open]=\"openAddModal$ | async\"\n (closeModalEvent)=\"onCloseAddModalEvent($event)\"\n ></valtimo-case-management-add-tab-modal>\n\n <valtimo-case-management-edit-tab-modal\n *ngIf=\"openEditModal$ | async\"\n [tab]=\"tab$ | async\"\n (closeModalEvent)=\"onCloseEditModalEvent($event)\"\n [open]=\"openEditModal$ | async\"\n ></valtimo-case-management-edit-tab-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"caseManagement.tabManagement.deleteModal.description\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"caseManagement.tabManagement.deleteModal.title\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n","export const CASE_MANAGEMENT_LIST_TEST_IDS = {\n uploadButton: 'caseManagementUploadButton',\n createButton: 'caseManagementCreateButton',\n} as const;\n\nexport const CASE_MANAGEMENT_DETAIL_TEST_IDS = {\n tabs: 'caseManagementTabs',\n} as const;\n\nexport const CASE_MANAGEMENT_UPLOAD_TEST_IDS = {\n fileUploader: 'caseFileUploader',\n uploadWarningNotification: 'uploadWarningNotification',\n uploadWarningCheckbox: 'uploadWarningCheckbox',\n cancelButton: 'uploadWizardCancelButton',\n nextButton: 'uploadWizardNextButton',\n finishButton: 'uploadWizardFinishButton',\n} as const;\n\nexport const CASE_MANAGEMENT_DETAIL_ACTIONS_TEST_IDS = {\n versionSelectDropdown: 'caseVersionSelectDropdown',\n globallyActiveCaseVersion: 'globally-active-case-version',\n versionManagementButton: 'caseVersionManagementButton',\n exportButton: 'caseExportButton',\n setActiveVersionButton: 'caseSetActiveVersionButton',\n moreButton: 'caseMoreButton',\n} as const;\n\nexport const CASE_MANAGEMENT_CREATE_TEST_IDS = {\n nameInput: 'caseDefinitionNameInput',\n keyInput: 'caseDefinitionKeyInput',\n keyEditButton: 'caseDefinitionKeyEditButton',\n versionInput: 'caseDefinitionVersionInput',\n descriptionInput: 'caseDefinitionDescriptionInput',\n closeButton: 'caseCreateCloseButton',\n saveButton: 'caseCreateSaveButton',\n} as const;\n\nexport const CASE_MANAGEMENT_STATUSES_TEST_IDS = {\n addButton: 'caseStatusAddButton',\n} as const;\n\nexport const CASE_MANAGEMENT_EXTERNAL_START_FORM_TEST_IDS = {\n hasExternalForm: 'caseManagementHasExternalForm',\n externalFormUrl: 'caseManagementExternalFormUrl',\n externalFormDescription: 'caseManagementExternalFormDescription',\n externalFormSave: 'caseManagementExternalFormSave',\n} as const;\n\nexport const CASE_MANAGEMENT_STATUS_MODAL_TEST_IDS = {\n titleInput: 'caseStatusTitleInput',\n keyInput: 'caseStatusKeyInput',\n editKeyButton: 'caseStatusEditKeyButton',\n colorDropdown: 'caseStatusColorDropdown',\n visibilityToggle: 'caseStatusVisibilityToggle',\n cancelButton: 'caseStatusCancelButton',\n addConfirmButton: 'caseStatusAddConfirmButton',\n saveButton: 'caseStatusSaveButton',\n} as const;\n\nexport const CASE_MANAGEMENT_LIST_COLUMNS_TEST_IDS = {\n columnsList: 'caseListColumnsList',\n jsonEditor: 'listColumnJSONEditor',\n addListColumn: 'caseManagementAddListColumn',\n title: 'listColumnTitle',\n key: 'listColumnKey',\n valuePathSelector: 'listColumnValuePathSelector',\n displayType: 'listColumnDisplayType',\n tagAmount: 'listColumnTagAmount',\n dateFormat: 'listColumnDateFormat',\n multiInput: 'listColumnMultiInput',\n sortableCheckbox: 'listColumnSortableCheckbox',\n defaultSort: 'listColumnDefaultSort',\n exportable: 'listColumnExportable',\n cancelButton: 'listColumnCancelButton',\n saveButton: 'listColumnSaveButton',\n confirmationModal: 'listColumnConfirmationModal',\n switchView: 'listColumnSwitchView',\n downloadButton: 'listColumnDownloadButton',\n} as const;\n\nexport const CASE_MANAGEMENT_CASE_HANDLER_TEST_IDS = {\n canHaveHandler: 'caseHandlerCanHaveHandler',\n automaticallyAssign: 'caseHandlerAutomaticallyAssign',\n} as const;\n\nexport const CASE_MANAGEMENT_TAGS_MODAL_TEST_IDS = {\n titleInput: 'caseTagTitleInput',\n keyInput: 'caseTagKeyInput',\n editKeyButton: 'caseTagEditKeyButton',\n colorDropdown: 'caseTagColorDropdown',\n cancelButton: 'caseTagCancelButton',\n addConfirmButton: 'caseTagAddConfirmButton',\n saveButton: 'caseTagSaveButton',\n} as const;\n\nexport const CASE_MANAGEMENT_TAGS_TEST_IDS = {\n addButton: 'caseTagAddButton',\n} as const;\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {StatusModalCloseEvent, StatusModalType} from '../../../../../models';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {\n AbstractControl,\n AsyncValidatorFn,\n FormBuilder,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {CaseStatusService, InternalCaseStatus, InternalCaseStatusUtils} from '@valtimo/document';\nimport {IconService, ListItem} from 'carbon-components-angular';\nimport {Edit16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TagColor} from '@valtimo/shared';\nimport {CASE_MANAGEMENT_STATUS_MODAL_TEST_IDS} from '../../../../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-status-modal',\n templateUrl: './case-management-status-modal.component.html',\n styleUrls: ['./case-management-status-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementStatusModalComponent implements OnInit, OnDestroy {\n protected readonly testIds = CASE_MANAGEMENT_STATUS_MODAL_TEST_IDS;\n\n @Input() public set type(value: StatusModalType) {\n this._type$.next(value);\n\n if (value === 'closed') {\n setTimeout(() => {\n this._typeAnimationDelay$.next(value);\n }, CARBON_CONSTANTS.modalAnimationMs);\n } else {\n this._typeAnimationDelay$.next(value);\n }\n }\n\n @Input() public set prefill(value: InternalCaseStatus) {\n this._prefillStatus.next(value);\n }\n\n @Input() public usedKeys!: string[];\n @Input() public caseDefinitionKey!: string;\n\n @Output() public closeModalEvent = new EventEmitter<StatusModalCloseEvent>();\n\n private readonly _type$ = new BehaviorSubject<StatusModalType>(undefined);\n private readonly _typeAnimationDelay$ = new BehaviorSubject<StatusModalType>(undefined);\n private readonly _prefillStatus = new BehaviorSubject<InternalCaseStatus>(undefined);\n\n public readonly statusFormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', [\n Validators.required,\n Validators.minLength(3),\n this.uniqueKeyValidator,\n ]),\n retentionPeriodInDays: this.fb.control(-1, [\n Validators.required,\n Validators.pattern(/^(?:-1|0|[1-9]\\d*)$/),\n ]),\n visibleInCaseListByDefault: this.fb.control(true, Validators.required),\n color: this.fb.control('', Validators.required),\n });\n\n private _isEdit!: boolean;\n\n public readonly isEdit$ = combineLatest([this._typeAnimationDelay$, this._prefillStatus]).pipe(\n tap(([type, prefillStatus]) => {\n if (type === 'edit' && prefillStatus) this.prefillForm(prefillStatus);\n }),\n map(([type]) => type === 'edit'),\n tap(isEdit => (this._isEdit = isEdit))\n );\n\n public readonly isAdd$ = this._typeAnimationDelay$.pipe(\n map(type => type === 'add'),\n tap(isAdd => {\n if (isAdd) this.resetForm();\n })\n );\n\n public readonly isClosed$ = this._type$.pipe(map(type => type === 'closed'));\n\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly COLORS: TagColor[] = Object.values(TagColor);\n\n private readonly _selectedColor$ = new BehaviorSubject<TagColor | undefined>(undefined);\n\n public readonly colorListItems$: Observable<ListItem[]> = combineLatest([\n this._selectedColor$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedColor]) =>\n this.COLORS.map(color => ({\n selected: color === selectedColor,\n content: this.translateService.instant(\n 'interface.tagType.' +\n InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color)\n ),\n color,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color),\n }))\n )\n );\n\n public get visibleInCaseListByDefault(): AbstractControl<boolean, boolean> {\n return this.statusFormGroup?.get('visibleInCaseListByDefault');\n }\n\n public get key(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('key');\n }\n\n public get title(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('title');\n }\n\n public get retentionPeriodInDays(): AbstractControl<number, number> {\n return this.statusFormGroup?.get('retentionPeriodInDays');\n }\n\n public get color(): AbstractControl<string, string> {\n return this.statusFormGroup?.get('color');\n }\n\n public get invalid(): boolean {\n return !!this.statusFormGroup?.invalid;\n }\n\n public get pristine(): boolean {\n return !!this.statusFormGroup?.pristine;\n }\n\n public readonly editingKey$ = new BehaviorSubject<boolean>(false);\n\n public readonly showRetentionPeriod$ = new BehaviorSubject<boolean>(false);\n\n public toggleRetentionPeriod(checked: boolean): void {\n this.showRetentionPeriod$.next(checked);\n if (!checked) {\n this.retentionPeriodInDays.setValue(-1);\n this.retentionPeriodInDays.markAsDirty();\n this.statusFormGroup.markAsDirty();\n }\n }\n\n private readonly _originalStatusKey$ = new BehaviorSubject<string>('');\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly caseStatusService: CaseStatusService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.registerAll([Edit16]);\n }\n\n public ngOnInit(): void {\n this.openAutoKeySubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onClose(): void {\n this.close();\n }\n\n public toggleCheckedChange(checked: boolean): void {\n this.statusFormGroup.patchValue({\n visibleInCaseListByDefault: checked,\n });\n this.statusFormGroup.markAsDirty();\n }\n\n public addStatus(): void {\n this.disable();\n\n this.caseStatusService\n .createInternalCaseStatus(this.caseDefinitionKey, this.getFormValue())\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editStatus(): void {\n this.disable();\n\n this._originalStatusKey$\n .pipe(\n take(1),\n switchMap(originalStatusKey =>\n this.caseStatusService.updateInternalCaseStatus(\n this.caseDefinitionKey,\n originalStatusKey,\n this.getFormValue()\n )\n )\n )\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editKeyButtonClick(): void {\n this.editingKey$.next(true);\n }\n\n public colorDropdownChange(event: {\n item: {color: string; content: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const newColor = event?.item?.color as TagColor;\n\n if (newColor) {\n this._selectedColor$.next(newColor);\n this.statusFormGroup.patchValue({color: newColor});\n this.statusFormGroup.markAsDirty();\n }\n }\n\n private prefillForm(prefillStatus: InternalCaseStatus): void {\n const retentionPeriodInDays = prefillStatus.retentionPeriodInDays ?? -1;\n this.showRetentionPeriod$.next(retentionPeriodInDays !== -1);\n this._originalStatusKey$.next(prefillStatus.key);\n this.statusFormGroup.patchValue({\n key: prefillStatus.key,\n title: prefillStatus.title,\n retentionPeriodInDays: retentionPeriodInDays,\n visibleInCaseListByDefault: prefillStatus.visibleInCaseListByDefault,\n color: prefillStatus.color,\n });\n this._selectedColor$.next(prefillStatus.color);\n this.statusFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetForm(): void {\n this.showRetentionPeriod$.next(false);\n this.statusFormGroup.patchValue({\n key: '',\n title: '',\n visibleInCaseListByDefault: true,\n retentionPeriodInDays: -1,\n color: TagColor.Magenta,\n });\n this._selectedColor$.next(TagColor.Blue);\n this.statusFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetEditingKey(): void {\n this.editingKey$.next(false);\n }\n\n private openAutoKeySubscription(): void {\n this._subscriptions.add(\n combineLatest([this.isAdd$, this.title.valueChanges, this.editingKey$]).subscribe(\n ([isAdd, titleValue, editingKey]) => {\n if (isAdd && !editingKey) {\n if (titleValue) {\n this.statusFormGroup.patchValue({key: this.getUniqueKey(titleValue)});\n } else {\n this.clearKey();\n }\n }\n }\n )\n );\n }\n\n private getUniqueKey(title: string): string {\n const dashCaseKey = `${title}`\n .toLowerCase()\n .replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')\n .replace(/_[-_]+/g, '_')\n .replace(/^[^a-z]+/g, '');\n const usedKeys = this.usedKeys;\n\n if (!usedKeys.includes(dashCaseKey)) {\n return dashCaseKey;\n }\n\n return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);\n }\n\n private getUniqueKeyWithNumber(dashCaseKey: string, usedKeys: string[]): string {\n const numbersFromCurrentKey = (dashCaseKey.match(/^\\d+|\\d+\\b|\\d+(?=\\w)/g) || []).map(\n (numberValue: string) => +numberValue\n );\n const lastNumberFromCurrentKey =\n numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];\n const newKey = lastNumberFromCurrentKey\n ? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`\n : `${dashCaseKey}-1`;\n\n if (usedKeys.includes(newKey)) {\n return this.getUniqueKeyWithNumber(newKey, usedKeys);\n }\n\n return newKey;\n }\n\n private clearKey(): void {\n this.statusFormGroup.patchValue({key: ''});\n }\n\n private uniqueKeyValidator(): AsyncValidatorFn {\n return (control: AbstractControl): Observable<ValidationErrors | null> =>\n combineLatest([this.isEdit$, control.valueChanges]).pipe(\n map(([isEdit, keyValue]) =>\n this.usedKeys?.every((key: string) => key !== keyValue) || isEdit\n ? null\n : {uniqueKey: {value: control.value}}\n )\n );\n }\n\n private disable(): void {\n this.disabled$.next(true);\n this.statusFormGroup.disable();\n }\n\n private enable(delay = true): void {\n setTimeout(\n () => {\n this.disabled$.next(false);\n this.statusFormGroup.enable();\n },\n delay ? CARBON_CONSTANTS.modalAnimationMs : 0\n );\n }\n\n private close(): void {\n this.closeModalEvent.emit('close');\n }\n\n private closeAndRefresh(): void {\n this.closeModalEvent.emit('closeAndRefresh');\n }\n\n private getFormValue(): InternalCaseStatus {\n return {\n key: this.key.value,\n title: this.title.value,\n retentionPeriodInDays: this.retentionPeriodInDays.value,\n visibleInCaseListByDefault: this.visibleInCaseListByDefault.value,\n color: this.color.value as TagColor,\n };\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async,\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n (close)=\"onClose()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onClose()\" [cdsLayer]=\"1\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isAdd ? ('caseManagement.statuses.add' | translate) : '' }}\n {{ obs.isEdit ? ('caseManagement.statuses.edit' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"statusForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"dropdown-color-tag\">\n <cds-tag *ngIf=\"item && item.content\" class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n </div>\n</ng-template>\n\n<ng-template #statusForm let-obs=\"obs\">\n <form [formGroup]=\"statusFormGroup\" class=\"status-form\">\n <cds-label>\n {{ 'caseManagement.statuses.columns.title' | translate }}\n\n <input cdsText formControlName=\"title\" [attr.data-test-id]=\"testIds.titleInput\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'caseManagement.statuses.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [attr.data-test-id]=\"testIds.keyInput\"\n [readOnly]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('caseManagement.statuses.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [attr.data-test-id]=\"testIds.editKeyButton\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'caseManagement.statuses.columns.color' | translate }}\n\n <cds-dropdown\n [id]=\"'status-color-dropdown'\"\n [attr.data-test-id]=\"testIds.colorDropdown\"\n [appendInline]=\"false\"\n [placeholder]=\"'caseManagement.statuses.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-toggle\n [attr.data-test-id]=\"testIds.visibilityToggle\"\n [label]=\"'caseManagement.statuses.visibleTitle' | translate\"\n [onText]=\"'caseManagement.statuses.visible' | translate\"\n [offText]=\"'caseManagement.statuses.invisible' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"visibleInCaseListByDefault?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </div>\n\n <cds-toggle\n [label]=\"'caseManagement.statuses.showRetentionPeriod' | translate\"\n [onText]=\"'interface.yes' | translate\"\n [offText]=\"'interface.no' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"showRetentionPeriod$ | async\"\n (checkedChange)=\"toggleRetentionPeriod($event)\"\n ></cds-toggle>\n\n <cds-label class=\"status-form-retention-period__label\" *ngIf=\"showRetentionPeriod$ | async\">\n <div>\n {{ 'caseManagement.statuses.columns.retentionPeriod' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'caseManagement.statuses.columns.retentionPeriodTooltip' | translate\"\n ></v-tooltip-icon>\n </div>\n\n <input cdsText formControlName=\"retentionPeriodInDays\" />\n </cds-label>\n\n <cds-notification\n class=\"deployment-warning-notification\"\n *ngIf=\"!obs.editingKey && !obs.isAdd\"\n [notificationObj]=\"{\n type: 'warning',\n message:\n ('caseManagement.statuses.retentionPeriodExistingCasesWarning'\n | translate: notificationContent),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-notification>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"ghost\" [attr.data-test-id]=\"testIds.cancelButton\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [attr.data-test-id]=\"testIds.addConfirmButton\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addStatus()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [attr.data-test-id]=\"testIds.saveButton\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editStatus()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {\n EditPermissionsService,\n EnvironmentService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {CaseStatusService, InternalCaseStatus, InternalCaseStatusUtils} from '@valtimo/document';\nimport {BehaviorSubject, combineLatest, map, Observable, Subject, switchMap, take, tap} from 'rxjs';\nimport {StatusModalCloseEvent, StatusModalType} from '../../../../models';\nimport {CaseManagementService} from '../../../../services';\nimport {CASE_MANAGEMENT_STATUSES_TEST_IDS} from '../../../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-statuses',\n templateUrl: './case-management-statuses.component.html',\n styleUrls: ['./case-management-statuses.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementStatusesComponent implements AfterViewInit {\n protected readonly testIds = CASE_MANAGEMENT_STATUSES_TEST_IDS;\n\n @ViewChild('colorColumnTemplate') colorColumnTemplate: TemplateRef<any>;\n @ViewChild('retentionPeriodColumnTemplate') retentionPeriodColumnTemplate: TemplateRef<any>;\n\n private readonly _reload$ = new BehaviorSubject<null | 'noAnimation'>(null);\n\n private readonly _params$ = getCaseManagementRouteParams(this.route);\n\n public readonly caseDefinitionKey$ = this._params$.pipe(map(params => params.caseDefinitionKey));\n\n public readonly caseDefinitionVersionTag$ = this._params$.pipe(\n map(params => params.caseDefinitionVersionTag)\n );\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n\n public readonly caseStatuses$ = combineLatest([this.caseDefinitionKey$, this._reload$]).pipe(\n tap(([_, reload]) => {\n if (reload === null) {\n this.loading$.next(true);\n }\n }),\n switchMap(([caseDefinitionKey]) =>\n this.caseStatusService.getInternalCaseStatusesManagement(caseDefinitionKey)\n ),\n map(statuses =>\n statuses.map(status => ({\n ...status,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n }))\n ),\n tap(statuses => {\n this.usedKeys$.next(statuses.map(status => status.key));\n this.loading$.next(false);\n })\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest(\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$\n ).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.editPermissionsService.hasEditPermissions(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly isDraftVersion$: Observable<boolean> = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.isDraftVersion(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.openDeleteModal.bind(this),\n type: 'danger',\n },\n ];\n\n public readonly statusModalType$ = new BehaviorSubject<StatusModalType>('closed');\n public readonly prefillStatus$ = new BehaviorSubject<InternalCaseStatus>(undefined);\n\n public readonly statusToDelete$ = new BehaviorSubject<InternalCaseStatus>(undefined);\n public readonly showDeleteModal$ = new Subject<boolean>();\n\n constructor(\n private readonly caseStatusService: CaseStatusService,\n private readonly route: ActivatedRoute,\n private readonly environmentService: EnvironmentService,\n private readonly editPermissionsService: EditPermissionsService,\n private readonly caseManagementService: CaseManagementService\n ) {}\n\n public ngAfterViewInit(): void {\n this.initFields();\n }\n\n public openDeleteModal(status: InternalCaseStatus): void {\n this.statusToDelete$.next(status);\n this.showDeleteModal$.next(true);\n }\n\n public openEditModal(status: InternalCaseStatus): void {\n this.hasEditPermissions$.pipe(take(1)).subscribe(hasPermission => {\n if (!hasPermission) return;\n\n this.prefillStatus$.next(status);\n this.statusModalType$.next('edit');\n });\n }\n\n public openAddModal(): void {\n this.statusModalType$.next('add');\n }\n\n public closeModal(closeModalEvent: StatusModalCloseEvent): void {\n if (closeModalEvent === 'closeAndRefresh') {\n this.reload();\n }\n\n this.statusModalType$.next('closed');\n }\n\n public confirmDeleteStatus(status: InternalCaseStatus): void {\n this.caseDefinitionKey$\n .pipe(\n switchMap(caseDefinitionKey =>\n this.caseStatusService.deleteInternalCaseStatus(caseDefinitionKey, status.key)\n )\n )\n .subscribe(() => {\n this.reload();\n });\n }\n\n public onItemsReordered(reorderedItems: InternalCaseStatus[]): void {\n if (!reorderedItems) return;\n\n this.caseDefinitionKey$\n .pipe(\n switchMap(caseDefinitionKey =>\n this.caseStatusService.updateInternalCaseStatuses(caseDefinitionKey, reorderedItems)\n )\n )\n .subscribe(() => {\n this.reload(true);\n });\n }\n\n private reload(noAnimation = false): void {\n this._reload$.next(noAnimation ? 'noAnimation' : null);\n }\n\n private initFields(): void {\n this.fields$.next([\n {\n key: 'title',\n label: 'caseManagement.statuses.columns.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'caseManagement.statuses.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'visibleInCaseListByDefault',\n label: 'caseManagement.statuses.columns.visible',\n viewType: ViewType.BOOLEAN,\n },\n {\n key: 'retentionPeriodInDays',\n label: 'caseManagement.statuses.columns.retentionPeriod',\n viewType: ViewType.TEMPLATE,\n template: this.retentionPeriodColumnTemplate,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.colorColumnTemplate,\n key: 'color',\n label: 'caseManagement.statuses.columns.color',\n },\n ]);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{\n loading: loading$ | async,\n caseStatuses: caseStatuses$ | async,\n isDraftVersion: isDraftVersion$ | async,\n } as obs\"\n [items]=\"obs.caseStatuses\"\n [fields]=\"fields$ | async\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"obs.loading || !(hasEditPermissions$ | async)\"\n [actionItems]=\"ACTION_ITEMS\"\n (rowClicked)=\"openEditModal($event)\"\n (itemsReordered)=\"onItemsReordered($event)\"\n>\n <ng-container carbonToolbarContent *ngTemplateOutlet=\"addStatusButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addStatusButton\"\n [description]=\"\n obs.isDraftVersion\n ? ('caseManagement.statuses.noResults.description' | translate)\n : ('caseManagement.statuses.noResultsFinalVersion.description' | translate)\n \"\n [title]=\"'caseManagement.statuses.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-case-management-status-modal\n [type]=\"statusModalType$ | async\"\n [prefill]=\"prefillStatus$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n (closeModalEvent)=\"closeModal($event)\"\n></valtimo-case-management-status-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"caseManagement.statuses.deleteText\"\n [outputOnConfirm]=\"statusToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"confirmDeleteStatus($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #addStatusButton>\n <button\n *ngIf=\"hasEditPermissions$ | async\"\n cdsButton=\"primary\"\n [attr.data-test-id]=\"testIds.addButton\"\n [disabled]=\"loading$ | async\"\n (click)=\"openAddModal()\"\n >\n {{ 'caseManagement.statuses.add' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-template #colorColumnTemplate let-data=\"data\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"data?.item?.tagType\">\n {{ 'interface.tagType.' + data?.item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n\n<ng-template #retentionPeriodColumnTemplate let-data=\"data\">\n @if (data?.item?.retentionPeriodInDays === 0) {\n {{ 'caseManagement.statuses.columns.deletedImmediately' | translate }}\n } @else if (data?.item?.retentionPeriodInDays === -1 ) {\n {{ '-' }}\n } @else {\n {{ data?.item?.retentionPeriodInDays }}\n }\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {StatusModalCloseEvent, StatusModalType} from '../../../../../models';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, switchMap, take} from 'rxjs';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {\n AbstractControl,\n AsyncValidatorFn,\n FormBuilder,\n FormControl,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {CaseTag, CaseTagService, CaseTagsUtils} from '@valtimo/document';\nimport {IconService, ListItem} from 'carbon-components-angular';\nimport {Edit16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TagColor} from '@valtimo/shared';\nimport {CASE_MANAGEMENT_TAGS_MODAL_TEST_IDS} from '../../../../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-tags-modal',\n templateUrl: './case-management-tags-modal.component.html',\n styleUrls: ['./case-management-tags-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementTagsModalComponent implements OnInit, OnDestroy {\n protected readonly testIds = CASE_MANAGEMENT_TAGS_MODAL_TEST_IDS;\n\n @Input() public set type(value: StatusModalType) {\n this._type$.next(value);\n\n if (value === 'closed') {\n setTimeout(() => {\n this._typeAnimationDelay$.next(value);\n }, CARBON_CONSTANTS.modalAnimationMs);\n } else {\n this._typeAnimationDelay$.next(value);\n }\n }\n\n @Input() public set prefill(value: CaseTag) {\n this._prefillCaseTag.next(value);\n }\n\n @Input() public usedKeys!: string[];\n @Input() public caseDefinitionKey!: string;\n @Input() public caseDefinitionVersionTag!: string;\n\n @Output() public closeModalEvent = new EventEmitter<StatusModalCloseEvent>();\n\n private readonly _type$ = new BehaviorSubject<StatusModalType | undefined>(undefined);\n private readonly _typeAnimationDelay$ = new BehaviorSubject<StatusModalType | undefined>(\n undefined\n );\n private readonly _prefillCaseTag = new BehaviorSubject<CaseTag | undefined>(undefined);\n\n public readonly caseTagFormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', [\n Validators.required,\n Validators.minLength(3),\n this.uniqueKeyValidator,\n ]),\n color: this.fb.control('', Validators.required),\n });\n\n public readonly isEdit$ = combineLatest([this._typeAnimationDelay$, this._prefillCaseTag]).pipe(\n map(([type, prefillCaseTag]) => {\n if (type === 'edit' && prefillCaseTag) {\n this.prefillForm(prefillCaseTag);\n }\n return type === 'edit';\n })\n );\n\n public readonly isAdd$ = this._typeAnimationDelay$.pipe(\n map(type => {\n if (type === 'add') this.resetForm();\n return type === 'add';\n })\n );\n\n public readonly isClosed$ = this._type$.pipe(map(type => type === 'closed'));\n\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly COLORS: TagColor[] = Object.values(TagColor);\n private readonly _selectedColor$ = new BehaviorSubject<TagColor | undefined>(undefined);\n\n public readonly colorListItems$: Observable<ListItem[]> = combineLatest([\n this._selectedColor$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedColor]) =>\n this.COLORS.map(color => ({\n selected: color === selectedColor,\n content: this.translateService.instant(\n 'interface.tagType.' + CaseTagsUtils.getTagTypeFromCaseTagColor(color)\n ),\n color,\n tagType: CaseTagsUtils.getTagTypeFromCaseTagColor(color),\n }))\n )\n );\n\n public get key(): AbstractControl<string | null, string | null> {\n return this.caseTagFormGroup?.get('key') ?? new FormControl('');\n }\n\n public get title(): AbstractControl<string | null, string | null> {\n return this.caseTagFormGroup?.get('title') ?? new FormControl('');\n }\n\n public get color(): AbstractControl<string | null, string | null> {\n return this.caseTagFormGroup?.get('color') ?? new FormControl('');\n }\n\n public get invalid(): boolean {\n return !!this.caseTagFormGroup?.invalid;\n }\n\n public get pristine(): boolean {\n return !!this.caseTagFormGroup?.pristine;\n }\n\n public readonly editingKey$ = new BehaviorSubject<boolean>(false);\n\n private readonly _originalCaseTagKey$ = new BehaviorSubject<string>('');\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService,\n private readonly caseTagService: CaseTagService\n ) {\n this.iconService.registerAll([Edit16]);\n }\n\n public ngOnInit(): void {\n this.openAutoKeySubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public addCaseTag(): void {\n this.disable();\n this.caseTagService\n .saveCaseTag(this.caseDefinitionKey, this.caseDefinitionVersionTag, this.getFormValue())\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editCaseTag(): void {\n this.disable();\n\n this._originalCaseTagKey$\n .pipe(\n take(1),\n switchMap(originalCaseTagKey => {\n return this.caseTagService.updateCaseTag(\n this.caseDefinitionKey,\n this.caseDefinitionVersionTag,\n originalCaseTagKey,\n this.getFormValue()\n );\n })\n )\n .subscribe({\n next: () => {\n this.enable();\n this.closeAndRefresh();\n },\n error: () => {\n this.enable(false);\n },\n });\n }\n\n public editKeyButtonClick(): void {\n this.editingKey$.next(true);\n }\n\n public colorDropdownChange(event: {\n item: {color: string; content: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const newColor = event?.item?.color as TagColor;\n\n if (newColor) {\n this._selectedColor$.next(newColor);\n this.caseTagFormGroup.patchValue({color: newColor});\n this.caseTagFormGroup.markAsDirty();\n }\n }\n\n public close(): void {\n this.closeModalEvent.emit('close');\n }\n\n private prefillForm(prefillCaseTag: CaseTag): void {\n this._originalCaseTagKey$.next(prefillCaseTag.key);\n this.caseTagFormGroup.patchValue({\n key: prefillCaseTag.key,\n title: prefillCaseTag.title,\n color: prefillCaseTag.color,\n });\n this._selectedColor$.next(prefillCaseTag.color);\n this.caseTagFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetForm(): void {\n this.caseTagFormGroup.patchValue({\n key: '',\n title: '',\n color: TagColor.Blue,\n });\n this._selectedColor$.next(TagColor.Blue);\n this.caseTagFormGroup.markAsPristine();\n this.resetEditingKey();\n }\n\n private resetEditingKey(): void {\n this.editingKey$.next(false);\n }\n\n private openAutoKeySubscription(): void {\n this._subscriptions.add(\n combineLatest([this.isAdd$, this.title.valueChanges, this.editingKey$]).subscribe(\n ([isAdd, titleValue, editingKey]) => {\n if (isAdd && !editingKey) {\n if (titleValue) {\n this.caseTagFormGroup.patchValue({key: this.getUniqueKey(titleValue)});\n } else {\n this.clearKey();\n }\n }\n }\n )\n );\n }\n\n private getUniqueKey(title: string): string {\n const dashCaseKey = `${title}`\n .toLowerCase()\n .replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')\n .replace(/_[-_]+/g, '_')\n .replace(/^[^a-z]+/g, '');\n const usedKeys = this.usedKeys;\n\n if (!usedKeys.includes(dashCaseKey)) {\n return dashCaseKey;\n }\n\n return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);\n }\n\n private getUniqueKeyWithNumber(dashCaseKey: string, usedKeys: string[]): string {\n const numbersFromCurrentKey = (dashCaseKey.match(/^\\d+|\\d+\\b|\\d+(?=\\w)/g) || []).map(\n (numberValue: string) => +numberValue\n );\n const lastNumberFromCurrentKey =\n numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];\n const newKey = lastNumberFromCurrentKey\n ? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`\n : `${dashCaseKey}-1`;\n\n if (usedKeys.includes(newKey)) {\n return this.getUniqueKeyWithNumber(newKey, usedKeys);\n }\n\n return newKey;\n }\n\n private clearKey(): void {\n this.caseTagFormGroup.patchValue({key: ''});\n }\n\n private uniqueKeyValidator(): AsyncValidatorFn {\n return (control: AbstractControl): Observable<ValidationErrors | null> =>\n combineLatest([this.isEdit$, control.valueChanges]).pipe(\n map(([isEdit, keyValue]) =>\n this.usedKeys?.every((key: string) => key !== keyValue) || isEdit\n ? null\n : {uniqueKey: {value: control.value}}\n )\n );\n }\n\n private disable(): void {\n this.disabled$.next(true);\n this.caseTagFormGroup.disable();\n }\n\n private enable(delay = true): void {\n setTimeout(\n () => {\n this.disabled$.next(false);\n this.caseTagFormGroup.enable();\n },\n delay ? CARBON_CONSTANTS.modalAnimationMs : 0\n );\n }\n\n private closeAndRefresh(): void {\n this.closeModalEvent.emit('closeAndRefresh');\n }\n\n private getFormValue(): CaseTag {\n return {\n key: this.key.value,\n title: this.title.value,\n color: this.color.value as TagColor,\n };\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async,\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"close()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isEdit ? ('caseManagement.caseTags.edit' | translate) : '' }}\n {{ obs.isAdd ? ('caseManagement.caseTags.add' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <form [formGroup]=\"caseTagFormGroup\" class=\"case-tag-form\">\n <cds-label>\n {{ 'caseManagement.caseTags.columns.title' | translate }}\n <input cdsText formControlName=\"title\" [attr.data-test-id]=\"testIds.titleInput\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'caseManagement.caseTags.columns.key' | translate }}\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [attr.data-test-id]=\"testIds.keyInput\"\n [readOnly]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('caseManagement.caseTags.keyAutoGenerated' | translate)\n : ''\n \"\n />\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [attr.data-test-id]=\"testIds.editKeyButton\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'caseManagement.caseTags.columns.color' | translate }}\n <cds-dropdown\n id=\"status-color-dropdown\"\n [attr.data-test-id]=\"testIds.colorDropdown\"\n [appendInline]=\"false\"\n [placeholder]=\"'caseManagement.caseTags.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list\n [items]=\"colorListItems$\"\n [listTpl]=\"colorDropdownItemTemplate\"\n ></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" [attr.data-test-id]=\"testIds.cancelButton\" (click)=\"close()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [attr.data-test-id]=\"testIds.addConfirmButton\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addCaseTag()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [attr.data-test-id]=\"testIds.saveButton\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editCaseTag()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <cds-tag\n *ngIf=\"item && item.content\"\n class=\"cds-tag--no-margin case-tag-margins\"\n [type]=\"item?.tagType\"\n >\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {EditPermissionsService, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {CaseTag, CaseTagService, CaseTagsUtils} from '@valtimo/document';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n Subject,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {StatusModalCloseEvent, StatusModalType} from '../../../../models';\nimport {CaseManagementService} from '../../../../services';\nimport {CASE_MANAGEMENT_TAGS_TEST_IDS} from '../../../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-tags',\n templateUrl: './case-management-tags.component.html',\n styleUrls: ['./case-management-tags.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementTagsComponent implements AfterViewInit, OnDestroy {\n protected readonly testIds = CASE_MANAGEMENT_TAGS_TEST_IDS;\n\n @ViewChild('colorColumnTemplate') colorColumnTemplate: TemplateRef<any>;\n\n private readonly _reload$ = new BehaviorSubject<null | 'noAnimation'>(null);\n\n private readonly _params$ = getCaseManagementRouteParams(this.route);\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly caseDefinitionKey$ = this._params$.pipe(map(p => p.caseDefinitionKey));\n public readonly caseDefinitionVersionTag$ = this._params$.pipe(\n map(p => p.caseDefinitionVersionTag)\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest(\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$\n ).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.editPermissionsService.hasEditPermissions(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n\n private readonly _subscriptions = new Subscription();\n\n public readonly caseTags$ = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n this._reload$,\n ]).pipe(\n tap(([_, __, reload]) => {\n if (reload === null) {\n this.loading$.next(true);\n }\n }),\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseTagService.getCaseTagsManagement(caseDefinitionKey, caseDefinitionVersionTag)\n ),\n map(caseTags =>\n caseTags.map(caseTag => ({\n ...caseTag,\n tagType: CaseTagsUtils.getTagTypeFromCaseTagColor(caseTag.color),\n }))\n ),\n tap(caseTags => {\n this.usedKeys$.next(caseTags.map(caseTag => caseTag.key));\n this.loading$.next(false);\n })\n );\n\n public readonly isDraftVersion$: Observable<boolean> = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.isDraftVersion(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.openEditModal.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.openDeleteModal.bind(this),\n type: 'danger',\n },\n ];\n\n public readonly statusModalType$ = new BehaviorSubject<StatusModalType>('closed');\n public readonly prefillCaseTag$ = new BehaviorSubject<CaseTag | undefined>(undefined);\n\n public readonly caseTagToDelete$ = new BehaviorSubject<CaseTag | undefined>(undefined);\n public readonly showDeleteModal$ = new Subject<boolean>();\n\n constructor(\n private readonly caseTagService: CaseTagService,\n private readonly route: ActivatedRoute,\n private readonly editPermissionsService: EditPermissionsService,\n private readonly caseManagementService: CaseManagementService\n ) {}\n\n public ngAfterViewInit(): void {\n this.initFields();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public openDeleteModal(caseTag: CaseTag): void {\n this.caseTagToDelete$.next(caseTag);\n this.showDeleteModal$.next(true);\n }\n\n public openEditModal(caseTag: CaseTag): void {\n this.hasEditPermissions$.pipe(filter(hasPermission => hasPermission)).subscribe(() => {\n this.prefillCaseTag$.next(caseTag);\n this.statusModalType$.next('edit');\n });\n }\n\n public openAddModal(): void {\n this.statusModalType$.next('add');\n }\n\n public closeModal(closeModalEvent: StatusModalCloseEvent): void {\n if (closeModalEvent === 'closeAndRefresh') {\n this.reload();\n }\n\n this.statusModalType$.next('closed');\n }\n\n public confirmDeleteCaseTag(caseTag: CaseTag): void {\n this._subscriptions.add(\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$])\n .pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseTagService.deleteCaseTag(\n caseDefinitionKey,\n caseDefinitionVersionTag,\n caseTag.key\n )\n )\n )\n .subscribe(() => {\n this.reload();\n })\n );\n }\n\n public onItemsReorderedEvent(reorderedItems: CaseTag[]): void {\n if (!reorderedItems) return;\n\n this.hasEditPermissions$\n .pipe(\n filter(hasPermission => hasPermission),\n switchMap(() =>\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$]).pipe(take(1))\n ),\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseTagService.updateCaseTags(\n caseDefinitionKey,\n caseDefinitionVersionTag,\n reorderedItems\n )\n )\n )\n .subscribe(() => {\n this.reload(true);\n });\n }\n\n private reload(noAnimation = false): void {\n this._reload$.next(noAnimation ? 'noAnimation' : null);\n }\n\n private initFields(): void {\n this.fields$.next([\n {\n key: 'title',\n label: 'caseManagement.caseTags.columns.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'caseManagement.caseTags.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.colorColumnTemplate,\n key: 'color',\n label: 'caseManagement.caseTags.columns.color',\n },\n ]);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{\n loading: loading$ | async,\n caseTags: caseTags$ | async,\n fields: fields$ | async,\n isDraftVersion: isDraftVersion$ | async,\n } as obs\"\n [items]=\"obs.caseTags\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n [actionItems]=\"ACTION_ITEMS\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"!(hasEditPermissions$ | async)\"\n (itemsReordered)=\"onItemsReorderedEvent($event)\"\n (rowClicked)=\"openEditModal($event)\"\n>\n <ng-container carbonToolbarContent *ngTemplateOutlet=\"addTagButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addTagButton\"\n [description]=\"\n obs.isDraftVersion\n ? ('caseManagement.caseTags.noResults.description' | translate)\n : ('caseManagement.caseTags.noResultsFinalVersion.description' | translate)\n \"\n [title]=\"'caseManagement.caseTags.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-case-management-tags-modal\n [type]=\"statusModalType$ | async\"\n [prefill]=\"prefillCaseTag$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [caseDefinitionVersionTag]=\"caseDefinitionVersionTag$ | async\"\n (closeModalEvent)=\"closeModal($event)\"\n></valtimo-case-management-tags-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"caseManagement.caseTags.deleteText\"\n [outputOnConfirm]=\"caseTagToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"confirmDeleteCaseTag($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #addTagButton>\n <button\n *ngIf=\"hasEditPermissions$ | async\"\n cdsButton=\"primary\"\n [attr.data-test-id]=\"testIds.addButton\"\n [disabled]=\"loading$ | async\"\n (click)=\"openAddModal()\"\n >\n {{ 'caseManagement.caseTags.add' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-template #colorColumnTemplate let-data=\"data\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"data?.item?.tagType\">\n {{ 'interface.tagType.' + data?.item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n CaseManagementParams,\n DraftVersionService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {BehaviorSubject, Observable, of, switchMap} from 'rxjs';\nimport {TabEnum} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './case-management-case-detail.component.html',\n styleUrl: './case-management-case-detail.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementCaseDetailComponent {\n public readonly isDraftVersion$: Observable<boolean> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n switchMap((params: CaseManagementParams | undefined) =>\n !params\n ? of(false)\n : this.draftVersionService.isDraftVersion(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n )\n );\n public readonly currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.TABS);\n public readonly TabEnum = TabEnum;\n\n constructor(\n private readonly draftVersionService: DraftVersionService,\n private readonly route: ActivatedRoute\n ) {}\n\n public switchTab(tab: TabEnum): void {\n this.currentTab$.next(tab);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@if (currentTab$ | async; as currentTab) {\n <valtimo-case-management-draft-warning\n *ngIf=\"(isDraftVersion$ | async) === true && currentTab === TabEnum.STATUSES\"\n [name]=\"'caseManagement.tabs.caseDetailsTab.statuses' | translate | lowercase\"\n ></valtimo-case-management-draft-warning>\n\n <cds-tabs class=\"case-management-tabs\" type=\"contained\">\n <cds-tab\n [active]=\"currentTab === TabEnum.TABS\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.tabs' | translate\"\n (selected)=\"switchTab(TabEnum.TABS)\"\n >\n <valtimo-case-management-tabs\n *ngIf=\"currentTab === TabEnum.TABS\"\n ></valtimo-case-management-tabs>\n </cds-tab>\n\n <cds-tab\n [active]=\"currentTab === TabEnum.STATUSES\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.statuses' | translate\"\n (selected)=\"switchTab(TabEnum.STATUSES)\"\n >\n <valtimo-case-management-statuses\n *ngIf=\"currentTab === TabEnum.STATUSES\"\n ></valtimo-case-management-statuses>\n </cds-tab>\n\n <cds-tab\n [active]=\"currentTab === TabEnum.TAGS\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.tags' | translate\"\n (selected)=\"switchTab(TabEnum.TAGS)\"\n >\n <valtimo-case-management-tags\n *ngIf=\"currentTab === TabEnum.TAGS\"\n ></valtimo-case-management-tags>\n </cds-tab>\n\n <cds-tab\n [active]=\"currentTab === TabEnum.HEADER\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.header' | translate\"\n (selected)=\"switchTab(TabEnum.HEADER)\"\n >\n <valtimo-case-management-header\n *ngIf=\"currentTab === TabEnum.HEADER\"\n ></valtimo-case-management-header>\n </cds-tab>\n </cds-tabs>\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n computed,\n signal,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Code16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CARBON_CONSTANTS,\n ColumnConfig,\n EditorModel,\n MultiInputOutput,\n MultiInputValues,\n SelectItem,\n TableColumn,\n ValuePathSelectorPrefix,\n ViewType,\n} from '@valtimo/components';\nimport {\n EditPermissionsService,\n SearchField,\n SearchFieldDataType,\n SearchFieldFieldType,\n SearchFieldMatchType,\n} from '@valtimo/shared';\nimport {DocumentService} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {v4 as uuidv4} from 'uuid';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-search-fields',\n templateUrl: './case-management-search-fields.component.html',\n styleUrls: ['./case-management-search-fields.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementSearchFieldsComponent implements OnInit, OnDestroy, AfterViewInit {\n public readonly downloadName$ = new BehaviorSubject<string>('');\n public readonly downloadUrl$ = new BehaviorSubject<string | undefined>(undefined);\n public readonly disableInput$ = new BehaviorSubject<boolean>(false);\n public readonly showActionItems$ = new BehaviorSubject<boolean>(false);\n public readonly selectedSearchField$ = new BehaviorSubject<SearchField | undefined>(undefined);\n public readonly selectedDeleteSearchField$ = new BehaviorSubject<SearchField | undefined>(\n undefined\n );\n public readonly formData$ = new BehaviorSubject<SearchField | null>(null);\n public readonly valid$ = new BehaviorSubject<boolean>(false);\n public readonly showFields$ = new BehaviorSubject<boolean>(false);\n public readonly modalShowing$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly jsonEditorActive = signal<boolean>(false);\n public readonly buttonTheme = computed(() => (this.jsonEditorActive() ? 'primary' : 'ghost'));\n\n private _subscriptions = new Subscription();\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.showEditModal.bind(this),\n type: 'normal',\n },\n {\n callback: this.showDeleteModal.bind(this),\n label: 'interface.delete',\n type: 'danger',\n },\n ];\n\n public readonly fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'title',\n label: 'searchFieldsOverview.title',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'key',\n label: 'searchFieldsOverview.key',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'path',\n label: 'searchFieldsOverview.path',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'dataType',\n label: 'searchFieldsOverview.dataType',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'fieldType',\n label: 'searchFieldsOverview.fieldType',\n },\n ];\n\n public readonly dropdownColumns$ = new BehaviorSubject<Array<TableColumn>>([\n {\n labelTranslationKey: 'searchFieldsOverview.id',\n dataKey: 'key',\n },\n {\n labelTranslationKey: 'searchFieldsOverview.text',\n dataKey: 'value',\n },\n ]);\n\n private readonly DATA_TYPES: Array<SearchFieldDataType> = [\n 'text',\n 'number',\n 'date',\n 'datetime',\n 'boolean',\n ];\n\n public readonly dataTypeItems$: Observable<Array<SelectItem>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.DATA_TYPES.map(dataType => ({\n id: dataType,\n text: this.translateService.instant(`searchFields.${dataType}`),\n }))\n )\n );\n\n public readonly dataTypeIsBoolean$ = new BehaviorSubject<boolean>(false);\n private readonly dataTypeIsText$ = new BehaviorSubject<boolean>(false);\n private readonly ALL_FIELD_TYPES: Array<SearchFieldFieldType> = [\n 'single',\n 'range',\n 'single-select-dropdown',\n 'multi-select-dropdown',\n ];\n private readonly NON_TEXT_FIELD_TYPES: Array<SearchFieldFieldType> = ['single', 'range'];\n private readonly BOOLEAN_FIELD_TYPES: Array<SearchFieldFieldType> = ['single'];\n public readonly fieldTypeItems$: Observable<Array<SelectItem>> = combineLatest([\n this.dataTypeIsBoolean$,\n this.dataTypeIsText$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeIsBoolean, dataTypeIsText]) => {\n if (dataTypeIsBoolean) {\n return this.BOOLEAN_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n } else if (!dataTypeIsText) {\n return this.NON_TEXT_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n }\n\n return this.ALL_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n })\n );\n\n private readonly MATCH_TYPES: Array<SearchFieldMatchType> = ['exact', 'like'];\n public readonly matchTypeItems$: Observable<Array<SelectItem>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.MATCH_TYPES.map(matchType => ({\n id: matchType,\n text: this.translateService.instant(`searchFieldsOverview.${matchType}`),\n }))\n )\n );\n\n private _caseDefinitionKey: string;\n\n public readonly caseDefinitionKey$: Observable<string> = this.route.parent.params.pipe(\n map(params => params.caseDefinitionKey || ''),\n filter(caseDefinitionKey => !!caseDefinitionKey),\n tap((caseDefinitionKey: string) => (this._caseDefinitionKey = caseDefinitionKey))\n );\n\n public readonly caseDefinitionVersionTag$: Observable<string> = this.route.parent.params.pipe(\n map(params => params.caseDefinitionVersionTag || ''),\n filter(caseDefinitionVersionTag => !!caseDefinitionVersionTag)\n );\n\n private cachedSearchFields!: Array<SearchField>;\n\n public searchFieldActionTypeIsAdd: boolean;\n\n private readonly refreshSearchFields$ = new BehaviorSubject<null>(null);\n\n private readonly searchFields$: Observable<Array<SearchField>> = combineLatest([\n this.caseDefinitionKey$,\n this.refreshSearchFields$,\n ]).pipe(\n switchMap(([caseDefinitionKey]) =>\n this.documentService.getDocumentSearchFields(caseDefinitionKey)\n ),\n tap(searchFields => {\n this.caseDefinitionKey$.pipe(take(1)).subscribe(caseDefinitionKey => {\n if (searchFields && Array.isArray(searchFields) && searchFields?.length > 0) {\n this.setDownload(caseDefinitionKey, searchFields);\n }\n });\n }),\n tap(searchFields => {\n this.cachedSearchFields = searchFields;\n })\n );\n\n private _cachedSearchFieldsWithUuid: SearchField[] = [];\n\n public readonly jsonEditorModel$: Observable<EditorModel> = this.searchFields$.pipe(\n map((searchFields: SearchField[]) => ({\n value: JSON.stringify(searchFields),\n language: 'json',\n }))\n );\n\n public readonly translatedSearchFields$: Observable<Array<SearchField>> = combineLatest([\n this.searchFields$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([searchFields]) => {\n const searchFieldsWithUuid = searchFields.map(field => ({...field, uuid: uuidv4()}));\n\n this._cachedSearchFieldsWithUuid = searchFieldsWithUuid;\n\n return searchFieldsWithUuid.map(searchField => ({\n ...searchField,\n title: searchField.title ? searchField.title : '',\n dataType: this.translateService.instant(`searchFields.${searchField.dataType}`),\n matchType: this.translateService.instant(`searchFieldsOverview.${searchField.matchType}`),\n fieldType: this.translateService.instant(`searchFieldsOverview.${searchField.fieldType}`),\n }));\n })\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.editPermissionsService.hasEditPermissions(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly fieldTypeIsDropdown$ = new BehaviorSubject<boolean>(false);\n\n public readonly dropdownDataProviderNames$: Observable<Array<SelectItem>> = combineLatest([\n this.documentService.getDropdownDataProviders(),\n this.translateService.stream('key'),\n ]).pipe(\n map(([providers]) =>\n providers.map(provider => ({\n id: provider,\n text: this.translateService.instant(`searchFieldsOverview.${provider}`),\n }))\n )\n );\n\n private readonly modifiedDropdownValues$ = new BehaviorSubject<MultiInputValues>([]);\n\n public readonly initialDropdownValues$: Observable<MultiInputValues> = combineLatest([\n this.caseDefinitionKey$,\n this.formData$,\n ]).pipe(\n distinctUntilChanged(\n ([prevCaseDefinitionKey, prevFormData], [currCaseDefinitionKey, currFormData]) =>\n prevCaseDefinitionKey === currCaseDefinitionKey &&\n prevFormData?.dropdownDataProvider === currFormData?.dropdownDataProvider &&\n prevFormData?.key === currFormData?.key\n ),\n switchMap(([caseDefinitionKey, formData]) => {\n if (!formData || !formData.dropdownDataProvider) {\n return of([]);\n }\n\n return this.documentService\n .getDropdownData(formData.dropdownDataProvider, caseDefinitionKey, formData.key)\n .pipe(\n map(dropdownData =>\n dropdownData\n ? Object.keys(dropdownData).map(dropdownFieldKey => ({\n key: dropdownFieldKey,\n value: dropdownData[dropdownFieldKey],\n }))\n : []\n )\n );\n })\n );\n\n public readonly showMatchTypes$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n ]).pipe(map(([dataTypeIsText, fieldTypeIsDropdown]) => dataTypeIsText && !fieldTypeIsDropdown));\n\n public readonly showReadonlyDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n !!formData?.dropdownDataProvider &&\n !this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n public readonly showInputDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n !!formData?.dropdownDataProvider &&\n this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n public readonly CARBON_THEME = 'white';\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly iconService: IconService,\n private readonly editPermissionsService: EditPermissionsService\n ) {\n this.iconService.registerAll([Code16]);\n }\n\n public ngOnInit(): void {\n this.openSelectedSearchFieldSubscription();\n }\n\n public ngAfterViewInit(): void {\n this.openModalShowingSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public searchFieldClicked(searchField: SearchField, searchFieldActionTypeIsAdd: boolean): void {\n combineLatest([this.disableInput$, this.hasEditPermissions$])\n .pipe(\n take(1),\n filter(([inputDisabled, hasPermission]) => !inputDisabled && hasPermission)\n )\n .subscribe(() => {\n this.searchFieldActionTypeIsAdd = searchFieldActionTypeIsAdd;\n const searchFieldToSelect = this.cachedSearchFields.find(\n field => field.key === searchField.key\n );\n this.selectedSearchField$.next(searchFieldToSelect || ({} as SearchField));\n this.showModal();\n });\n }\n\n public formValueChange(data: SearchField): void {\n setTimeout(() => {\n this.nextIfChanged(this.dataTypeIsText$, data.dataType === 'text');\n this.nextIfChanged(this.dataTypeIsBoolean$, data.dataType === 'boolean');\n this.nextIfChanged(this.fieldTypeIsDropdown$, this.isFieldTypeDropdown(data.fieldType));\n this.nextIfChanged(this.formData$, data);\n this.nextIfChanged(this.valid$, this.isValid(data));\n }, 0);\n }\n\n public pathValueChange(path: string): void {\n this.formData$.pipe(take(1)).subscribe(currentData => {\n const newData = {...currentData, path};\n this.nextIfChanged(this.formData$, newData);\n this.nextIfChanged(this.valid$, this.isValid(newData));\n });\n }\n\n public dropdownDatalistChange(data: MultiInputOutput): void {\n this.modifiedDropdownValues$.next(data as MultiInputValues);\n }\n\n public onItemsReordered(caseDefinitionKey: string, items: SearchField[]): void {\n if (!items || !caseDefinitionKey) return;\n\n const unformattedSearchFields = items.map(searchField =>\n this._cachedSearchFieldsWithUuid.find(cachedField => cachedField.uuid === searchField.uuid)\n );\n\n this.updateSearchFields(caseDefinitionKey, unformattedSearchFields);\n }\n\n public onDeleteSelectedSearchFieldConfirm(selectedSearchField: SearchField): void {\n this.disableInput();\n\n if (this.dropdownDataProviderSupportsUpdates(selectedSearchField?.dropdownDataProvider)) {\n this.documentService\n .deleteDropdownData(\n selectedSearchField?.dropdownDataProvider ?? '',\n this._caseDefinitionKey,\n selectedSearchField.key\n )\n .subscribe();\n }\n\n this.documentService\n .deleteDocumentSearch(this._caseDefinitionKey, selectedSearchField.key)\n .subscribe({\n next: () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n public saveSearchField(caseDefinitionKey: string): void {\n this.disableInput();\n\n this.formData$.pipe(take(1)).subscribe(formData => {\n if (!formData) {\n return;\n }\n const mappedFormData: SearchField = {\n ...formData,\n matchType:\n !this.isFieldTypeDropdown(formData?.fieldType) && formData?.dataType === 'text'\n ? formData.matchType\n : 'exact',\n fieldType: formData.dataType !== 'boolean' ? formData.fieldType : 'single',\n };\n\n const prevFormData = this.selectedSearchField$.value;\n if (\n this.dropdownDataProviderSupportsUpdates(prevFormData?.dropdownDataProvider) &&\n prevFormData?.dropdownDataProvider !== mappedFormData?.dropdownDataProvider\n ) {\n this.documentService\n .deleteDropdownData(\n prevFormData?.dropdownDataProvider ?? '',\n caseDefinitionKey,\n prevFormData?.key ?? ''\n )\n .subscribe();\n }\n\n if (this.dropdownDataProviderSupportsUpdates(mappedFormData.dropdownDataProvider)) {\n this.modifiedDropdownValues$.pipe(take(1)).subscribe(dropdownValues => {\n const request = dropdownValues.reduce(\n (acc, keyValue) => ({...acc, [keyValue.key]: keyValue.value}),\n {}\n );\n this.documentService\n .postDropdownData(\n mappedFormData.dropdownDataProvider ?? '',\n caseDefinitionKey,\n mappedFormData.key,\n request\n )\n .subscribe();\n });\n }\n\n if (this.searchFieldActionTypeIsAdd) {\n this.documentService.postDocumentSearch(caseDefinitionKey, mappedFormData).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n } else {\n const newFields = [...this.cachedSearchFields];\n const indexToReplace = newFields.findIndex(field => field.key === mappedFormData.key);\n const filteredFields = newFields.filter(field => field.key !== mappedFormData.key);\n\n filteredFields.splice(indexToReplace, 0, mappedFormData);\n this.updateSearchFields(caseDefinitionKey, filteredFields);\n }\n });\n }\n\n public updateSearchFields(caseDefinitionKey: string, newSearchFields: Array<SearchField>): void {\n this.disableInput();\n\n this.documentService.putDocumentSearch(caseDefinitionKey, newSearchFields).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n public onModalClose(): void {\n this.hideModal();\n }\n\n public onDownloadClick(): void {\n combineLatest([this.downloadUrl$, this.downloadName$])\n .pipe(take(1))\n .subscribe(([url, name]) => {\n if (!url || !name) return;\n\n const anchor = document.createElement('a');\n anchor.href = url.toString();\n anchor.download = name;\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n });\n }\n\n public switchView(): void {\n this.jsonEditorActive.set(!this.jsonEditorActive());\n\n if (!this.jsonEditorActive()) this.refreshSearchFields$.next(null);\n }\n\n private nextIfChanged(behaviourSubject$: BehaviorSubject<any>, value: any) {\n if (JSON.stringify(behaviourSubject$.value) !== JSON.stringify(value)) {\n behaviourSubject$.next(value);\n }\n }\n\n private isValid(data: SearchField): boolean {\n const validMatchType =\n data.dataType === 'text' && !this.isFieldTypeDropdown(data.fieldType) ? data.matchType : true;\n const validDropdownDataProvider = this.isFieldTypeDropdown(data.fieldType)\n ? data.dropdownDataProvider\n : true;\n const containsAllValues = !!(\n data.key &&\n data.dataType &&\n validMatchType &&\n validDropdownDataProvider &&\n data.path &&\n data.fieldType\n );\n const keyIsUnique =\n !this.searchFieldActionTypeIsAdd ||\n this.cachedSearchFields.findIndex(field => field.key === data.key) === -1;\n\n return containsAllValues && keyIsUnique;\n }\n\n private isFieldTypeDropdown(fieldType?: SearchFieldFieldType): boolean {\n return fieldType === 'single-select-dropdown' || fieldType === 'multi-select-dropdown';\n }\n\n private dropdownDataProviderSupportsUpdates(dropdownDataProvider?: string): boolean {\n return dropdownDataProvider === 'dropdownDatabaseDataProvider';\n }\n\n private openSelectedSearchFieldSubscription(): void {\n this._subscriptions.add(\n this.selectedSearchField$.subscribe(selectedSearchField => {\n if (selectedSearchField) this.showModal();\n })\n );\n }\n\n private openModalShowingSubscription(): void {\n this._subscriptions.add(\n this.modalShowing$.subscribe(modalShowing => {\n if (modalShowing) {\n setTimeout(() => {\n this.showFields$.next(true);\n }, 0);\n } else {\n setTimeout(() => {\n this.showFields$.next(false);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n })\n );\n }\n\n private setDownload(caseDefinitionKey: string, searchFields: Array<SearchField>): void {\n this.downloadName$.next(`${caseDefinitionKey}.json`);\n this.downloadUrl$.next(\n 'data:text/json;charset=UTF-8,' + encodeURIComponent(JSON.stringify({searchFields}, null, 2))\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n }\n\n private showModal(): void {\n this.modalShowing$.next(true);\n }\n\n private hideModal(): void {\n this.modalShowing$.next(false);\n }\n\n private refreshSearchFields(): void {\n this.refreshSearchFields$.next(null);\n }\n\n private showDeleteModal(searchField: SearchField): void {\n this.selectedDeleteSearchField$.next(searchField);\n this.showDeleteModal$.next(true);\n }\n\n private showEditModal(searchField: SearchField): void {\n this.searchFieldClicked(searchField, false);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n caseDefinitionKey: caseDefinitionKey$ | async,\n disableInput: disableInput$ | async,\n downloadName: downloadName$ | async,\n downloadUrl: downloadUrl$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n jsonEditorModel: jsonEditorModel$ | async,\n searchFields: translatedSearchFields$ | async,\n showActionItems: showActionItems$ | async,\n valid: valid$ | async,\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"content; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"modal; context: {obs: obs}\"></ng-container>\n</ng-container>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n [outputOnConfirm]=\"selectedDeleteSearchField$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteSelectedSearchFieldConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #buttons let-obs=\"obs\">\n <ng-container *ngTemplateOutlet=\"viewToggle\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"downloadButton; context: {obs: obs}\"></ng-container>\n\n <button\n cdsButton=\"primary\"\n data-test-id=\"case-management-search-add\"\n *ngIf=\"obs.hasEditPermissions\"\n [disabled]=\"loadingSearchFields || obs.disableInput\"\n (click)=\"searchFieldClicked($event, true)\"\n >\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFieldsOverview.addRow' | translate }}\n </button>\n</ng-template>\n\n<ng-template #content let-obs=\"obs\">\n @if (!jsonEditorActive()) {\n <valtimo-carbon-list\n data-test-id=\"searchFieldsList\"\n [actionItems]=\"actionItems\"\n [showActionItems]=\"obs.hasEditPermissions\"\n [fields]=\"fields\"\n [header]=\"false\"\n [items]=\"obs.searchFields\"\n [loading]=\"!obs.searchFields\"\n (rowClicked)=\"searchFieldClicked($event, false)\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"obs.disableInput\"\n (itemsReordered)=\"onItemsReordered(obs.caseDefinitionKey, $event)\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [title]=\"'searchFieldsOverview.noSearchfieldsTitle' | translate\"\n [description]=\"'searchFieldsOverview.noSearchfieldsDescription' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n } @else {\n <valtimo-json-editor\n [model]=\"obs.jsonEditorModel\"\n [fitPage]=\"true\"\n [fitPageSpaceAdjustment]=\"248\"\n [showEditButton]=\"obs.hasEditPermissions\"\n (saveEvent)=\"updateSearchFields(obs.caseDefinitionKey, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"viewToggle\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"downloadButton; context: {obs: obs}\"></ng-container>\n </valtimo-json-editor>\n }\n</ng-template>\n\n<ng-template #modal let-obs=\"obs\">\n <cds-modal\n valtimoCdsModal\n [title]=\"\n searchFieldActionTypeIsAdd\n ? ('searchFieldsOverview.addRow' | translate)\n : ('searchFieldsOverview.edit' | translate)\n \"\n [open]=\"modalShowing$ | async\"\n [showFooter]=\"true\"\n size=\"sm\"\n (close)=\"onModalClose()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onModalClose()\">\n <h3 cdsModalHeaderHeading>\n {{\n (searchFieldActionTypeIsAdd ? 'searchFieldsOverview.addRow' : 'searchFieldsOverview.edit')\n | translate\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"\n (showFields$ | async) && {\n searchField: selectedSearchField$ | async,\n } as searchObs\n \"\n >\n <v-input\n name=\"title\"\n dataTestId=\"case-management-search-title\"\n [title]=\"'searchFieldsOverview.title' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.title\"\n [disabled]=\"obs.disableInput\"\n [required]=\"false\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </v-input>\n\n <v-input\n name=\"key\"\n dataTestId=\"case-management-search-key\"\n [title]=\"'searchFieldsOverview.key' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.key\"\n [disabled]=\"obs.disableInput || !searchFieldActionTypeIsAdd\"\n [required]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </v-input>\n\n <valtimo-value-path-selector\n name=\"path\"\n [label]=\"'searchFieldsOverview.path' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n [marginXl]=\"true\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [caseDefinitionVersionTag]=\"caseDefinitionVersionTag$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [defaultValue]=\"searchObs.searchField?.path\"\n [disabled]=\"obs.disableInput\"\n ></valtimo-value-path-selector>\n\n <v-select\n *ngIf=\"dataTypeItems$ | async as dataTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"dataTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"dataType\"\n [defaultSelectionId]=\"searchObs.searchField?.dataType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"case-management-search-dataTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"(showMatchTypes$ | async) && (matchTypeItems$ | async) as matchTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"matchTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"matchType\"\n [defaultSelectionId]=\"searchObs.searchField?.matchType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"case-management-search-matchTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"fieldTypeItems$ | async as fieldTypeItems\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"fieldTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"fieldType\"\n [defaultSelectionId]=\"searchObs.searchField?.fieldType\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"case-management-search-fieldTypes\"\n ></v-select>\n\n <v-select\n *ngIf=\"\n (fieldTypeIsDropdown$ | async) &&\n (dropdownDataProviderNames$ | async) as dropdownDataProviderNames\n \"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"dropdownDataProviderNames\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"false\"\n name=\"dropdownDataProvider\"\n [defaultSelectionId]=\"searchObs.searchField?.dropdownDataProvider\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n [carbonTheme]=\"CARBON_THEME\"\n dataTestId=\"case-management-search-dropdownDataProvider\"\n ></v-select>\n\n <valtimo-carbon-multi-input\n *ngIf=\"\n (showInputDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n name=\"dropdownValues\"\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n type=\"keyValue\"\n [disabled]=\"obs.disableInput\"\n [defaultValues]=\"initialDropdownValues\"\n [margin]=\"true\"\n [required]=\"false\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n (valueChange)=\"dropdownDatalistChange($event)\"\n [carbonTheme]=\"CARBON_THEME\"\n >\n </valtimo-carbon-multi-input>\n\n <v-table\n *ngIf=\"\n (showReadonlyDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n [items]=\"initialDropdownValues\"\n [columns]=\"dropdownColumns$ | async\"\n [showEditButtons]=\"false\"\n [itemsTranslationKey]=\"'searchFieldsOverview'\"\n [showPagination]=\"false\"\n [mobileBreakpointPx]=\"200\"\n [carbonTheme]=\"CARBON_THEME\"\n ></v-table>\n </v-form>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttonsFooterModal; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n </cds-modal>\n</ng-template>\n\n<ng-template #buttonsFooterModal let-obs=\"obs\">\n <button\n data-test-id=\"case-management-search-close\"\n cdsButton=\"secondary\"\n (click)=\"onModalClose()\"\n [disabled]=\"obs.disableInput\"\n >\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n data-test-id=\"case-management-search-save\"\n cdsButton=\"primary\"\n [disabled]=\"obs.disableInput || !obs.valid\"\n (click)=\"saveSearchField(obs.caseDefinitionKey)\"\n >\n {{ 'searchFieldsOverview.submit' | translate }}\n </button>\n</ng-template>\n\n<ng-template #viewToggle>\n <cds-tooltip [description]=\"'JSON editor'\">\n <button\n [cdsButton]=\"buttonTheme()\"\n data-test-id=\"case-management-search-fields-switch-view\"\n iconOnly=\"true\"\n (click)=\"switchView()\"\n >\n <svg cdsIcon=\"code\" size=\"16\"></svg>\n </button>\n </cds-tooltip>\n</ng-template>\n\n<ng-template #downloadButton let-obs=\"obs\">\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n data-test-id=\"case-management-search-download\"\n [disabled]=\"\n !obs.downloadUrl || !obs.downloadName || obs.searchFields?.length <= 0 || obs.disableInput\n \"\n (click)=\"onDownloadClick()\"\n >\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {AfterViewInit, Component, computed, OnDestroy, signal} from '@angular/core';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n ColumnConfig,\n EditorModel,\n MultiInputValues,\n ValuePathSelectorPrefix,\n ViewType,\n} from '@valtimo/components';\nimport {\n EditPermissionsService,\n getCaseManagementRouteParams,\n getDisplayTypeParametersView,\n} from '@valtimo/shared';\nimport {CaseListColumn, CaseListColumnView, DocumentService} from '@valtimo/document';\nimport {IconService, ListItem} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n delay,\n filter,\n map,\n Observable,\n startWith,\n Subject,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ListColumnModal} from '../../../../models';\nimport {CASE_MANAGEMENT_LIST_COLUMNS_TEST_IDS} from '../../../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-list-columns',\n templateUrl: './case-management-list-columns.component.html',\n styleUrls: ['./case-management-list-columns.component.scss'],\n})\nexport class CaseManagementListColumnsComponent implements AfterViewInit, OnDestroy {\n protected readonly testIds = CASE_MANAGEMENT_LIST_COLUMNS_TEST_IDS;\n\n public readonly downloadName$ = new BehaviorSubject<string>('');\n public readonly downloadUrl$ = new BehaviorSubject<string | null>(null);\n private readonly _subscriptions = new Subscription();\n\n public readonly actionItems: ActionItem[] = [\n {label: 'interface.delete', callback: this.deleteRow.bind(this), type: 'danger'},\n ];\n\n public readonly params$ = getCaseManagementRouteParams(this.route);\n\n public readonly loadingCaseListColumns$ = new BehaviorSubject<boolean>(true);\n\n public readonly lastItemIndex$ = new BehaviorSubject<number>(-1);\n\n public readonly fields: Array<ColumnConfig> = [\n {viewType: 'string', sortable: false, key: 'title', label: 'listColumn.title'},\n {viewType: 'string', sortable: false, key: 'key', label: 'listColumn.key'},\n {viewType: 'string', sortable: false, key: 'path', label: 'listColumn.path'},\n {viewType: 'string', sortable: false, key: 'displayType', label: 'listColumn.displayType'},\n {\n viewType: 'string',\n sortable: false,\n key: 'displayTypeParameters',\n label: 'listColumn.displayTypeParameters',\n },\n {viewType: 'string', sortable: false, key: 'sortable', label: 'listColumn.sortable'},\n {viewType: 'string', sortable: false, key: 'defaultSort', label: 'listColumn.defaultSort'},\n {viewType: 'boolean', sortable: false, key: 'exportable', label: 'listColumn.exportField'},\n ];\n\n public readonly disableInput$ = new BehaviorSubject<boolean>(false);\n\n private cachedCaseListColumns: Array<CaseListColumn> = [];\n\n private readonly refreshCaseListcolumns$ = new BehaviorSubject<null>(null);\n\n private readonly caseListColumns$: Observable<Array<CaseListColumn>> = combineLatest([\n this.params$,\n this.refreshCaseListcolumns$,\n ]).pipe(\n switchMap(([params]) =>\n this.documentService.getCaseListForManagement(params.caseDefinitionKey)\n ),\n tap(caseListColumns => {\n this.params$.pipe(take(1)).subscribe(params => {\n if (caseListColumns && Array.isArray(caseListColumns) && caseListColumns.length > 0) {\n this.setDownload(params.caseDefinitionKey, caseListColumns);\n }\n });\n }),\n tap(caseListColumns => {\n this.lastItemIndex$.next(caseListColumns.length - 1);\n this.cachedCaseListColumns = caseListColumns;\n this.loadingCaseListColumns$.next(false);\n this.enableInput();\n })\n );\n\n public readonly jsonEditorModel$: Observable<EditorModel> = this.caseListColumns$.pipe(\n map((caseListColumns: CaseListColumn[]) => ({\n value: JSON.stringify(caseListColumns),\n language: 'json',\n }))\n );\n\n public readonly translatedCaseListColumns$: Observable<Array<CaseListColumnView>> = combineLatest(\n [this.caseListColumns$, this.translateService.stream('key')]\n ).pipe(\n map(([columns]) =>\n columns.map(column => ({\n ...column,\n title: column.title || '-',\n sortable: column.sortable\n ? this.translateService.instant('listColumn.sortableYes')\n : this.translateService.instant('listColumn.sortableNo'),\n defaultSort:\n (column.defaultSort === 'ASC' &&\n this.translateService.instant('listColumn.sortableAsc')) ||\n (column.defaultSort === 'DESC' &&\n this.translateService.instant('listColumn.sortableDesc')) ||\n '-',\n displayType: this.translateService.instant(\n `listColumnDisplayType.${column?.displayType?.type}`\n ),\n displayTypeParameters: getDisplayTypeParametersView(\n column.displayType.displayTypeParameters\n ),\n }))\n )\n );\n\n public readonly currentModalType$ = new BehaviorSubject<ListColumnModal>('create');\n\n public readonly showModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly modalShowing$ = this.showModal$.pipe(delay(250));\n\n public readonly INVALID_KEY = 'invalid';\n\n public readonly formGroup = new FormGroup({\n title: new FormControl(''),\n key: new FormControl('', Validators.required),\n path: new FormControl('', Validators.required),\n dateFormat: new FormControl(''),\n displayType: new FormControl({key: this.INVALID_KEY}),\n sortable: new FormControl(false),\n defaultSort: new FormControl({key: this.INVALID_KEY}),\n enum: new FormControl([]),\n tagAmount: new FormControl(1),\n exportable: new FormControl(false),\n });\n\n public readonly disableDefaultSort$ = combineLatest([\n this.currentModalType$,\n this.formGroup.valueChanges,\n ]).pipe(\n map(\n ([currentModalType]) =>\n currentModalType === 'create' &&\n this.cachedCaseListColumns.find(column => !!column.defaultSort)\n ),\n startWith(false)\n );\n\n public readonly DISPLAY_TYPES: Array<ViewType> = [\n ViewType.TEXT,\n ViewType.DATE,\n ViewType.BOOLEAN,\n ViewType.ENUM,\n ViewType.ARRAY_COUNT,\n ViewType.UNDERSCORES_TO_SPACES,\n ViewType.TAGS,\n ];\n\n public readonly showDateFormat$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[1])),\n tap(showDateFormat => {\n if (showDateFormat === false && !!this.formGroup.value.dateFormat) {\n this.formGroup.patchValue({dateFormat: ''});\n }\n }),\n startWith(false)\n );\n\n public readonly showTagAmount$ = this.formGroup.valueChanges.pipe(\n map(formValues => formValues.displayType?.key === this.DISPLAY_TYPES[6]),\n startWith(this.formGroup.value.displayType?.key === this.DISPLAY_TYPES[6] ? true : false)\n );\n\n public readonly showEnum$ = this.formGroup.valueChanges.pipe(\n map(\n formValues =>\n !!(\n formValues.displayType?.key === this.DISPLAY_TYPES[3] ||\n formValues.displayType?.key === this.DISPLAY_TYPES[2]\n )\n ),\n tap(showEnum => {\n const enumValue = this.formGroup.value.enum;\n if (showEnum === false && Array.isArray(enumValue) && enumValue.length > 0) {\n this.formGroup.patchValue({enum: []});\n }\n }),\n startWith(false)\n );\n\n public readonly isYesNo$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[2]))\n );\n\n public readonly selectedViewTypeItemIndex$ = new BehaviorSubject<number>(0);\n\n public readonly viewTypeItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedViewTypeItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedViewTypeItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumnDisplayType.select`),\n key: this.INVALID_KEY,\n },\n ...this.DISPLAY_TYPES.map(type => ({\n content: this.translateService.instant(`listColumnDisplayType.${type}`),\n key: type,\n })),\n ].map((item, index) => ({...item, selected: index === selectedViewTypeItemIndex}))\n )\n );\n\n public readonly selectedSortItemIndex$ = new BehaviorSubject<number>(0);\n\n public readonly sortItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedSortItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedSortItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumn.selectDefaultSort`),\n key: this.INVALID_KEY,\n },\n {content: this.translateService.instant(`listColumn.sortableAsc`), key: 'ASC'},\n {content: this.translateService.instant(`listColumn.sortableDesc`), key: 'DESC'},\n ].map((item, index) => ({...item, selected: index === selectedSortItemIndex}))\n )\n );\n\n public readonly validKey$ = combineLatest([\n this.formGroup.valueChanges,\n this.currentModalType$,\n ]).pipe(\n map(([formValues, currentModalType]) => {\n const existingKeys = this.cachedCaseListColumns.map(column => column.key);\n return currentModalType === 'create' ? !existingKeys.includes(formValues.key ?? '') : true;\n }),\n startWith(false)\n );\n\n public readonly valid$ = combineLatest([this.formGroup.valueChanges, this.validKey$]).pipe(\n map(\n ([formValues, validKey]) =>\n !!(\n formValues.displayType?.key !== this.INVALID_KEY &&\n formValues.path &&\n validKey &&\n (formValues?.displayType?.key === 'enum' ? formValues.enum?.length > 0 : true) &&\n (formValues?.displayType?.key === 'tags' ? formValues.tagAmount > 0 : true)\n )\n ),\n startWith(false)\n );\n\n public readonly hasEditPermissions$: Observable<boolean> = this.params$.pipe(\n switchMap(params =>\n this.editPermissionsService.hasEditPermissions(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n )\n );\n\n readonly showDeleteModal$ = new Subject<boolean>();\n\n readonly deleteRowKey$ = new BehaviorSubject<string>('');\n\n readonly defaultEnumValues$ = new BehaviorSubject<MultiInputValues | null>(null);\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n public readonly jsonEditorActive = signal<boolean>(false);\n public readonly buttonTheme = computed(() => (this.jsonEditorActive() ? 'primary' : 'ghost'));\n public displayExportButton = true;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly iconService: IconService,\n private readonly editPermissionsService: EditPermissionsService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n this.disableExportToggle();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public openModal(modalType: ListColumnModal): void {\n this.showModal$.next(true);\n this.currentModalType$.next(modalType);\n\n if (modalType === 'create') {\n this.formGroup.controls['key'].enable();\n this.resetFormGroup();\n } else if (modalType === 'edit') {\n this.formGroup.controls['key'].disable();\n }\n }\n\n public closeModal(): void {\n this.showModal$.next(false);\n }\n\n public deleteRow(caseListColumn: CaseListColumn): void {\n this.showDeleteModal$.next(true);\n this.deleteRowKey$.next(caseListColumn.key);\n }\n\n public deleteRowConfirmation(columnKey: string): void {\n if (columnKey) {\n this.disableInput();\n\n this.params$.pipe(take(1)).subscribe(params => {\n this.documentService\n .deleteCaseListForManagement(params.caseDefinitionKey, columnKey)\n .subscribe({\n next: () => {\n this.refreshCaseListColumns();\n },\n error: () => {\n this.enableInput();\n },\n });\n });\n }\n }\n\n public onItemsReordered(caseDefinitionKey: string, items: CaseListColumn[]): void {\n if (!items || !caseDefinitionKey) return;\n\n this.hasEditPermissions$.pipe(take(1)).subscribe(hasEditPermissions => {\n if (!hasEditPermissions) {\n return;\n }\n\n const unformattedColumns = items.map(column =>\n this.cachedCaseListColumns.find(cachedColumn => cachedColumn.key === column.key)\n );\n this.updateCaseListColumns(caseDefinitionKey, unformattedColumns);\n });\n }\n\n public saveCaseListColumns(): void {\n this.disableInput();\n\n this.currentModalType$.pipe(take(1)).subscribe(currentModalType => {\n if (currentModalType === 'create') {\n this.addColumn();\n } else {\n this.updateColumn();\n }\n });\n }\n\n public enumValueChange(value: Array<{[key: string]: string}>): void {\n this.formGroup.patchValue({enum: value});\n }\n\n public columnRowClicked(row: {key: string}): void {\n this.resetFormGroup();\n\n this.hasEditPermissions$\n .pipe(\n filter(hasEditPermissions => hasEditPermissions),\n take(1),\n switchMap(() => combineLatest([this.viewTypeItems$, this.sortItems$]).pipe(take(1)))\n )\n .subscribe(([viewTypeItems, sortItems]) => {\n const column = this.cachedCaseListColumns.find(\n cachedColumn => cachedColumn.key === row.key\n );\n const viewTypeItem = viewTypeItems.find(item => item.key === column?.displayType.type);\n const viewTypeItemIndex = viewTypeItems.findIndex(\n item => item.key === column?.displayType.type\n );\n const sortItem = sortItems.find(item => item.key === column?.defaultSort);\n const sortItemIndex = sortItems.findIndex(item => item.key === column?.defaultSort);\n const enumValues = column?.displayType?.displayTypeParameters?.enum;\n const mappedEnumValues: MultiInputValues = [];\n const columnDateFormat = column?.displayType?.displayTypeParameters?.dateFormat;\n const tagAmount = column?.displayType?.displayTypeParameters?.tagAmount;\n\n this.selectedViewTypeItemIndex$.next(viewTypeItemIndex);\n\n if (sortItem) {\n this.selectedSortItemIndex$.next(sortItemIndex);\n }\n\n if (enumValues) {\n Object.keys(enumValues).forEach(key => {\n mappedEnumValues.push({key, value: enumValues[key]});\n });\n this.defaultEnumValues$.next(mappedEnumValues);\n } else {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n }\n\n this.formGroup.patchValue({\n key: column?.key,\n title: column?.title,\n path: column?.path,\n sortable: column?.sortable,\n // @ts-ignore\n displayType: {...viewTypeItem},\n // @ts-ignore\n defaultSort: sortItem ? {...sortItem} : {...sortItems[0]},\n ...(columnDateFormat && {dateFormat: columnDateFormat}),\n ...(tagAmount && {tagAmount: tagAmount}),\n exportable: column?.exportable,\n });\n\n this.openModal('edit');\n });\n }\n public selectedDisplayType(event: ListItem): void {\n if (event.item.selected && event.item.key === 'tags') {\n this.formGroup.patchValue({sortable: undefined, defaultSort: undefined});\n }\n }\n\n public onDownloadClick(): void {\n combineLatest([this.downloadUrl$, this.downloadName$])\n .pipe(take(1))\n .subscribe(([url, name]) => {\n if (!url || !name) return;\n\n const anchor = document.createElement('a');\n anchor.href = url.toString();\n anchor.download = name;\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n });\n }\n\n public switchView(): void {\n this.jsonEditorActive.set(!this.jsonEditorActive());\n\n if (!this.jsonEditorActive()) this.refreshCaseListcolumns$.next(null);\n }\n\n private updateCaseListColumns(\n caseDefinitionKey: string,\n newCaseListColumns: Array<CaseListColumn>\n ): void {\n this.disableInput();\n\n this.documentService.putCaseListForManagement(caseDefinitionKey, newCaseListColumns).subscribe({\n next: () => {\n this.refreshCaseListColumns();\n localStorage.setItem(`list-search-${caseDefinitionKey}`, '');\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n private addColumn(): void {\n const formValue = this.formGroup.value;\n\n this.params$.pipe(take(1)).subscribe(params => {\n this.documentService\n .postCaseListForManagement(params.caseDefinitionKey, this.mapFormValuesToColumn(formValue))\n .subscribe({\n next: () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n error: () => {\n this.enableInput();\n },\n });\n });\n }\n\n private updateColumn(): void {\n const updatedColumnFormValue = this.formGroup.value;\n const mappedUpdatedColumn = this.mapFormValuesToColumn(updatedColumnFormValue);\n const currentColumns = this.cachedCaseListColumns;\n const mappedCurrentColumns = currentColumns.map(column => {\n const columnCopy = {...column};\n if (columnCopy.key === updatedColumnFormValue.key) {\n const changedColumn = {...columnCopy, ...mappedUpdatedColumn};\n if (!mappedUpdatedColumn.defaultSort) {\n delete changedColumn.defaultSort;\n }\n return changedColumn;\n }\n if (mappedUpdatedColumn.defaultSort) {\n delete columnCopy.defaultSort;\n }\n return columnCopy;\n });\n\n this.params$.pipe(take(1)).subscribe(params => {\n this.documentService\n .putCaseListForManagement(params.caseDefinitionKey, mappedCurrentColumns)\n .subscribe({\n next: () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n error: () => {\n this.enableInput();\n },\n });\n });\n }\n\n private setDownload(caseDefinitionKey: string, caseListColumns: Array<CaseListColumn>): void {\n this.downloadName$.next(`${caseDefinitionKey}.json`);\n this.downloadUrl$.next(\n 'data:text/json;charset=UTF-8,' + encodeURIComponent(JSON.stringify(caseListColumns, null, 2))\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n this.formGroup.disable();\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n this.formGroup.enable();\n if (this.formGroup.value.displayType?.key === 'tags') {\n this.formGroup.controls.defaultSort.disable();\n this.formGroup.controls.sortable.disable();\n }\n }\n\n private refreshCaseListColumns(): void {\n this.refreshCaseListcolumns$.next(null);\n }\n\n private resetFormGroup(): void {\n this.formGroup.reset();\n combineLatest([this.sortItems$, this.viewTypeItems$])\n .pipe(take(1))\n .subscribe(([sortItems, viewTypeItems]) => {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n this.selectedViewTypeItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({displayType: viewTypeItems[0]});\n this.selectedSortItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({defaultSort: sortItems[0]});\n });\n }\n\n private mapFormValuesToColumn(formValue: any): CaseListColumn {\n return {\n key: formValue.key,\n sortable: formValue.sortable,\n ...(formValue.defaultSort?.key !== this.INVALID_KEY && {\n defaultSort: formValue.defaultSort?.key,\n }),\n title: formValue.title || '',\n path: formValue.path,\n displayType: {\n type: formValue.displayType?.key,\n displayTypeParameters: {\n ...(formValue.tagAmount && {tagAmount: formValue.tagAmount}),\n ...(formValue.dateFormat && {dateFormat: formValue.dateFormat}),\n ...(Array.isArray(formValue.enum) &&\n formValue.enum.length > 0 && {\n enum: formValue.enum.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {}),\n }),\n },\n },\n exportable: this.displayExportButton ? formValue.exportable : false,\n };\n }\n\n private disableExportToggle(): void {\n this.formGroup.controls.path.valueChanges\n .pipe(startWith(this.formGroup.controls.path.value))\n .subscribe(value => {\n const pathMustStartWithCaseOrDocRegex = /^(case:|doc:)/;\n this.displayExportButton = pathMustStartWithCaseOrDocRegex.test(String(value));\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n caseListColumn: translatedCaseListColumns$ | async,\n disableInput: disableInput$ | async,\n downloadName: downloadName$ | async,\n downloadUrl: downloadUrl$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n jsonEditorModel: jsonEditorModel$ | async,\n loadingCaseListColumns: loadingCaseListColumns$ | async,\n params: params$ | async,\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"content; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #content let-obs=\"obs\">\n @if (!jsonEditorActive()) {\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [loading]=\"obs.loadingCaseListColumns\"\n [items]=\"obs?.caseListColumn || []\"\n [fields]=\"fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n (rowClicked)=\"columnRowClicked($event)\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"obs.disableInput\"\n (itemsReordered)=\"onItemsReordered(obs.params.caseDefinitionKey, $event)\"\n [attr.data-test-id]=\"testIds.columnsList\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n } @else {\n <valtimo-json-editor\n [model]=\"obs.jsonEditorModel\"\n [fitPage]=\"true\"\n [fitPageSpaceAdjustment]=\"248\"\n [showEditButton]=\"obs.hasEditPermissions\"\n (saveEvent)=\"updateCaseListColumns(obs.params.caseDefinitionKey, $event)\"\n [attr.data-test-id]=\"testIds.jsonEditor\"\n >\n <ng-container *ngTemplateOutlet=\"viewToggle\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"downloadButton; context: {obs: obs}\"></ng-container>\n </valtimo-json-editor>\n }\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <ng-container *ngTemplateOutlet=\"viewToggle\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"downloadButton; context: {obs: obs}\"></ng-container>\n\n <button\n *ngIf=\"obs.hasEditPermissions\"\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n [disabled]=\"obs.loadingCaseListColumns || !(hasEditPermissions$ | async)\"\n [attr.data-test-id]=\"testIds.addListColumn\"\n >\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2 pt-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'listColumn.noConfigWarningTitle' | translate,\n message: 'listColumn.noConfigWarning' | translate,\n showClose: false,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n showEnum: showEnum$ | async,\n isYesNo: isYesNo$ | async,\n showTagAmount: showTagAmount$ | async,\n params: params$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n size=\"sm\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\" [cdsLayer]=\"1\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"title\" [attr.data-test-id]=\"testIds.title\" />\n </cds-label>\n\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input\n cdsText\n formControlName=\"key\"\n [invalid]=\"modalObs.validKey === false\"\n [attr.data-test-id]=\"testIds.key\"\n />\n </cds-label>\n\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"modalObs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"modalObs.params?.caseDefinitionVersionTag\"\n [attr.data-test-id]=\"testIds.valuePathSelector\"\n ></valtimo-value-path-selector>\n </cds-label>\n\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n formControlName=\"displayType\"\n [disabled]=\"modalObs.disableInput\"\n (selected)=\"selectedDisplayType($event)\"\n [attr.data-test-id]=\"testIds.displayType\"\n >\n <cds-dropdown-list [items]=\"(viewTypeItems$ | async) || []\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-label *ngIf=\"modalObs.showTagAmount\" [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.tagAmount' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.tagAmountTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <cds-number\n formControlName=\"tagAmount\"\n [min]=\"1\"\n [step]=\"1\"\n [attr.data-test-id]=\"testIds.tagAmount\"\n ></cds-number>\n </cds-label>\n\n <cds-label *ngIf=\"showDateFormat$ | async\" [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"dateFormat\" [attr.data-test-id]=\"testIds.dateFormat\" />\n </cds-label>\n\n <cds-label *ngIf=\"modalObs.showEnum || modalObs.isYesNo\" [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{\n modalObs.isYesNo\n ? ('listColumn.enumTitleOptional' | translate)\n : ('listColumn.enumTitle' | translate)\n }}\n\n <v-tooltip-icon\n [tooltip]=\"\n modalObs.isYesNo\n ? ('listColumn.enumTooltipOptional' | translate)\n : ('listColumn.enumTooltip' | translate)\n \"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"(showModal$ | async) || (modalShowing$ | async)\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n [defaultValues]=\"defaultEnumValues$ | async\"\n [hideAddButton]=\"modalObs.isYesNo\"\n [hideDeleteButton]=\"modalObs.isYesNo\"\n [maxRows]=\"modalObs.isYesNo ? 1 : null\"\n [keyColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.Yes' | translate)\"\n [valueColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.No' | translate)\"\n [attr.data-test-id]=\"testIds.multiInput\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n\n <cds-checkbox\n formControlName=\"sortable\"\n [disabled]=\"modalObs.showTagAmount || modalObs.disableInput\"\n [attr.data-test-id]=\"testIds.sortableCheckbox\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort || modalObs.showTagAmount\"\n >\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n formControlName=\"defaultSort\"\n [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort || modalObs.showTagAmount\"\n [attr.data-test-id]=\"testIds.defaultSort\"\n >\n <cds-dropdown-list [items]=\"(sortItems$ | async) || []\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-label *ngIf=\"displayExportButton\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.exportField' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.exportTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n\n <cds-toggle\n formControlName=\"exportable\"\n data-testid=\"export-selector-toggle\"\n [onText]=\"'listColumn.sortableYes' | translate\"\n [offText]=\"'listColumn.sortableNo' | translate\"\n [keyColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.Yes' | translate)\"\n [valueColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.No' | translate)\"\n [required]=\"false\"\n [size]=\"'sm'\"\n [attr.data-test-id]=\"testIds.exportable\"\n ></cds-toggle>\n </cds-label>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer [cdsLayer]=\"1\">\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n [attr.data-test-id]=\"testIds.cancelButton\"\n >\n {{ 'listColumn.close' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveCaseListColumns()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n [attr.data-test-id]=\"testIds.saveButton\"\n >\n {{ 'listColumn.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n [attr.data-test-id]=\"testIds.confirmationModal\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #viewToggle>\n <cds-tooltip [description]=\"'JSON editor'\">\n <button\n [cdsButton]=\"buttonTheme()\"\n [attr.data-test-id]=\"testIds.switchView\"\n iconOnly=\"true\"\n (click)=\"switchView()\"\n >\n <svg cdsIcon=\"code\" size=\"16\"></svg>\n </button>\n </cds-tooltip>\n</ng-template>\n\n<ng-template #downloadButton let-obs=\"obs\">\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n (click)=\"onDownloadClick()\"\n [disabled]=\"\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.caseListColumn?.length < 1 ||\n obs.disableInput ||\n obs.loadingCaseListColumns\n \"\n [attr.data-test-id]=\"testIds.downloadButton\"\n >\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n CaseManagementParams,\n DraftVersionService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {BehaviorSubject, switchMap, of, Observable} from 'rxjs';\nimport {TabEnum} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './case-management-case-list.component.html',\n styleUrl: './case-management-case-list.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementCaseListComponent {\n public readonly isDraftVersion$: Observable<boolean> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n switchMap((params: CaseManagementParams | undefined) =>\n !params\n ? of(false)\n : this.draftVersionService.isDraftVersion(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n )\n );\n public readonly currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.SEARCH);\n public readonly DRAFT_WARNING_MESSAGE = {\n [TabEnum.SEARCH]: 'caseManagement.tabs.caseListTab.searchFields',\n [TabEnum.LIST]: 'caseManagement.tabs.caseListTab.columns',\n };\n public readonly TabEnum = TabEnum;\n\n constructor(\n private readonly draftVersionService: DraftVersionService,\n private readonly route: ActivatedRoute\n ) {}\n\n public switchTab(tab: TabEnum): void {\n this.currentTab$.next(tab);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n@if (currentTab$ | async; as currentTab) {\n <valtimo-case-management-draft-warning\n *ngIf=\"isDraftVersion$ | async\"\n [name]=\"DRAFT_WARNING_MESSAGE[currentTab] | translate | lowercase\"\n ></valtimo-case-management-draft-warning>\n\n <cds-tabs class=\"case-management-tabs\" type=\"contained\">\n <cds-tab\n [active]=\"currentTab === TabEnum.LIST\"\n [heading]=\"'caseManagement.tabs.caseListTab.columns' | translate\"\n [id]=\"'caseManagementListColumns'\"\n (selected)=\"switchTab(TabEnum.LIST)\"\n >\n <valtimo-case-management-list-columns\n *ngIf=\"currentTab === TabEnum.LIST\"\n ></valtimo-case-management-list-columns>\n </cds-tab>\n\n <cds-tab\n [active]=\"currentTab === TabEnum.SEARCH\"\n [heading]=\"'caseManagement.tabs.caseListTab.searchFields' | translate\"\n [id]=\"'caseManagementListSearchFields'\"\n (selected)=\"switchTab(TabEnum.SEARCH)\"\n >\n <valtimo-case-management-search-fields\n *ngIf=\"currentTab === TabEnum.SEARCH\"\n ></valtimo-case-management-search-fields>\n </cds-tab>\n </cds-tabs>\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {Edit16, Information16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TemplatePayload} from '@valtimo/document';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport * as semver from 'semver';\nimport {CaseManagementService} from '../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-create-draft-version',\n styleUrls: ['./case-management-create-draft-version.component.scss'],\n templateUrl: './case-management-create-draft-version.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementCreateDraftVersionComponent implements OnInit {\n @Input() public readonly open = false;\n\n public readonly caseDefinitionPayload$ = new BehaviorSubject<any>({});\n @Input() set caseDefinitionPayload(payload: any) {\n if (payload) {\n this.caseDefinitionPayload$.next(payload);\n this.updateFormFromPayload(payload);\n }\n }\n @Output() closeModal = new EventEmitter<TemplatePayload | null>();\n\n public caseDefinitionVersions: string[] = [];\n\n public draftVersionForm: FormGroup = this.fb.group({\n name: this.fb.control('', Validators.required),\n caseDefinitionKey: this.fb.control({value: '', disabled: true}, [\n Validators.required,\n Validators.pattern('[A-Za-z0-9-]*'),\n ]),\n caseDefinitionVersion: this.fb.control('', Validators.required),\n description: this.fb.control(''),\n basedOnCaseDefinitionVersion: this.fb.control(''),\n });\n\n private readonly _caseParams$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n\n public readonly createDraftDescription$ = this.getDraftDescription(\n 'caseManagement.deployment.createDraftConfirmationModal.description'\n );\n\n public readonly versionError$ = new BehaviorSubject<string | null>(null);\n\n public readonly caseDefinitionVersions$: Observable<any[] | null> = this._caseParams$.pipe(\n map(params => params?.caseDefinitionKey ?? ''),\n switchMap(caseDefinitionKey =>\n this.caseManagementService.getCaseDefinitionVersions(caseDefinitionKey)\n ),\n map(caseDefinitions => caseDefinitions.map(caseDefinition => caseDefinition.versionTag))\n );\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService,\n private readonly route: ActivatedRoute,\n private readonly caseManagementService: CaseManagementService\n ) {\n this.iconService.registerAll([Edit16, Information16]);\n }\n\n public ngOnInit(): void {\n this.caseDefinitionVersions$.pipe(take(1)).subscribe(versions => {\n this.caseDefinitionVersions = versions || [];\n });\n }\n\n public onCloseModal(definitionCreated?: boolean): void {\n if (!definitionCreated) {\n this.closeModal.emit(null);\n this.updateFormFromPayload(this.caseDefinitionPayload$.getValue());\n this.versionError$.next(null);\n return;\n }\n\n const caseDefinitionVersion = this.draftVersionForm.get('caseDefinitionVersion')?.value;\n\n if (!this.isVersionValid(caseDefinitionVersion)) {\n this.versionError$.next('caseManagement.createDefinition.versionError');\n return;\n }\n\n if (this.doesVersionExist(caseDefinitionVersion)) {\n this.versionError$.next('caseManagement.createDefinition.versionExistsError');\n return;\n }\n\n this.closeModal.emit(this.draftVersionForm.getRawValue());\n }\n\n private isVersionValid(version: string): boolean {\n return semver.valid(version) !== null;\n }\n\n private doesVersionExist(version: string): boolean {\n return this.caseDefinitionVersions.some(existingVersion => semver.eq(existingVersion, version));\n }\n\n private updateFormFromPayload(payload): void {\n this.draftVersionForm.patchValue({\n name: payload.name || '',\n caseDefinitionKey: payload.caseDefinitionKey || '',\n caseDefinitionVersion: '',\n description: '',\n basedOnCaseDefinitionVersion: payload.basedOnCaseDefinitionVersion || '',\n });\n }\n\n private getDraftDescription(translationKey: string): Observable<string> {\n return this._caseParams$.pipe(\n take(1),\n switchMap(params =>\n this.translateService.get(translationKey, {\n caseDefinitionKey: params?.caseDefinitionKey,\n caseDefinitionVersionTag: params?.caseDefinitionVersionTag,\n })\n )\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n versionError: versionError$ | async,\n createDraftDescription: createDraftDescription$ | async,\n } as obs\"\n valtimoCdsModal\n showFooter=\"true\"\n class=\"valtimo-definition-create\"\n [open]=\"open\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'caseManagement.createDefinition.modalTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <div cdsModalContent [cdsLayer]=\"1\">\n <p class=\"valtimo-definition-create__description\">{{ obs.createDraftDescription }}</p>\n\n <form [formGroup]=\"draftVersionForm\" class=\"valtimo-definition-create__content\">\n <cds-label>\n {{ 'caseManagement.createDefinition.name' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.nameTooltip' | translate\"\n >\n <svg cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"name\"\n cdsText\n placeholder=\"{{ 'caseManagement.createDefinition.namePlaceholder' | translate }}\"\n [cdsLayer]=\"1\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-label>\n {{ 'caseManagement.createDefinition.key' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.keyTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"caseDefinitionKey\"\n cdsText\n placeholder=\"{{ 'caseManagement.createDefinition.versionPlaceholder' | translate }}\"\n [cdsLayer]=\"1\"\n />\n </cds-label>\n\n <cds-label [invalid]=\"!!obs.versionError\" [invalidText]=\"obs.versionError | translate\">\n {{ 'caseManagement.createDefinition.version' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.versionTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"caseDefinitionVersion\"\n cdsText\n placeholder=\"{{ 'caseManagement.createDefinition.versionPlaceholder' | translate }}\"\n [cdsLayer]=\"1\"\n [invalid]=\"!!obs.versionError\"\n />\n </cds-label>\n\n <cds-textarea-label>\n {{ 'caseManagement.createDefinition.description' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.descriptionTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <textarea\n cdsTextArea\n formControlName=\"description\"\n placeholder=\"{{ 'caseManagement.createDefinition.descriptionPlaceholder' | translate }}\"\n [cdsLayer]=\"1\"\n [rows]=\"3\"\n [cols]=\"150\"\n ></textarea>\n </cds-textarea-label>\n </form>\n </div>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"draftVersionForm.invalid\" (click)=\"onCloseModal(true)\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {DatePipe, Location as AngularLocation} from '@angular/common';\nimport {AfterViewInit, Component, OnDestroy, OnInit, TemplateRef, ViewChild} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Return16, Save16, TrashCan16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {BreadcrumbService} from '@valtimo/components';\nimport {EnvironmentService, GlobalNotificationService} from '@valtimo/shared';\nimport {SseService} from '@valtimo/sse';\nimport {IconService, Notification, NotificationContent} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {take, tap, withLatestFrom} from 'rxjs/operators';\nimport * as semver from 'semver';\nimport {\n CaseDefinition,\n CaseDefinitionFinalizationCheckResult,\n ConfigurationIssueUpdatedSseEvent,\n} from '../../models';\nimport {CaseManagementService} from '../../services';\n\n@Component({\n standalone: false,\n templateUrl: './case-management-deployment.component.html',\n styleUrls: ['./case-management-deployment.component.scss'],\n})\nexport class CaseManagementDeploymentComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('createDraftMessage')\n private readonly _createDraftMessageTemplateRef: TemplateRef<HTMLDivElement>;\n\n @ViewChild('finalizeDraftMessage')\n private readonly _finalizeDraftMessageTemplateRef: TemplateRef<HTMLDivElement>;\n\n @ViewChild('deleteDraftMessage')\n private readonly _deleteDraftMessageTemplateRef: TemplateRef<HTMLDivElement>;\n\n public caseDefinitionVersions: string[] = [];\n public readonly hasConflictingVersions$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteDraftConfirmationModal$ = new BehaviorSubject<boolean>(false);\n public readonly showFinalizeDraftConfirmationModal$ = new BehaviorSubject<boolean>(false);\n public readonly showCreateDraftVersionConfirmationModal$ = new BehaviorSubject<boolean>(false);\n private readonly refreshDraftVersion$ = new BehaviorSubject<null>(null);\n private readonly _refreshFinalizationCheck$ = new BehaviorSubject<null>(null);\n private readonly _subscriptions = new Subscription();\n\n public readonly params$: Observable<{\n caseDefinitionKey: string;\n caseDefinitionVersionTag: string;\n }> = this.route.params.pipe(\n map(({caseDefinitionKey, caseDefinitionVersionTag}) => ({\n caseDefinitionKey: caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionVersionTag,\n }))\n );\n\n public readonly caseDefinitionKey$: Observable<string> = this.params$.pipe(\n map(params => params.caseDefinitionKey || '')\n );\n\n public readonly caseDefinitionVersionTag$: Observable<string> = this.params$.pipe(\n map(params => params.caseDefinitionVersionTag || '')\n );\n\n public readonly canUpdateGlobalConfiguration$ =\n this.environmentService.canUpdateGlobalConfiguration();\n\n private getDraftDescription$(translationKey: string): Observable<string> {\n return combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n this.translateService.stream('key'),\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.translateService.get(translationKey, {caseDefinitionKey, caseDefinitionVersionTag})\n )\n );\n }\n\n public readonly finalizeDraftDescription$ = this.getDraftDescription$(\n 'caseManagement.deployment.finalizeDraftConfirmationModal.description'\n );\n\n public readonly globalActiveCase$: Observable<any | null> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n this.caseManagementService\n .getGlobalActiveCase(caseDefinitionKey)\n .pipe(catchError(() => of(null)))\n )\n );\n\n public readonly isGloballyActive$: Observable<boolean> = combineLatest([\n this.globalActiveCase$,\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n map(([globalActiveCase, caseDefinitionKey, caseDefinitionVersionTag]) => {\n return (\n globalActiveCase?.caseDefinitionKey === caseDefinitionKey &&\n globalActiveCase?.caseDefinitionVersionTag === caseDefinitionVersionTag\n );\n })\n );\n\n public readonly _caseDefinitionTitle$: Observable<string> = this.globalActiveCase$.pipe(\n map(result => result?.name ?? '')\n );\n\n public readonly caseDefinition$: Observable<CaseDefinition> = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.getCaseDefinition(caseDefinitionKey, caseDefinitionVersionTag)\n ),\n tap(caseDefinition => {\n this.hasConflictingVersions$.next(!!caseDefinition.conflictingVersions);\n })\n );\n\n public readonly isDraftVersion$: Observable<boolean> = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n this.refreshDraftVersion$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.isDraftVersion(caseDefinitionKey, caseDefinitionVersionTag)\n )\n );\n\n public readonly caseDefinitionPayload$ = combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.getCaseDefinition(caseDefinitionKey, caseDefinitionVersionTag)\n ),\n map(caseDefinition => ({\n name: caseDefinition.name,\n caseDefinitionKey: caseDefinition.caseDefinitionKey,\n caseDefinitionVersion: semver.inc(caseDefinition.caseDefinitionVersionTag, 'patch'),\n description: caseDefinition.description,\n basedOnCaseDefinitionVersion: caseDefinition.caseDefinitionVersionTag,\n }))\n );\n\n public readonly caseDefinitionVersions$: Observable<any[] | null> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n this.caseManagementService.getCaseDefinitionVersions(caseDefinitionKey)\n ),\n map(caseDefinitions => caseDefinitions.map(caseDefinition => caseDefinition.versionTag))\n );\n\n public readonly notificationContent$: Observable<{\n basedOnVersionTag: string;\n conflictingVersions: string;\n }> = this.caseDefinition$.pipe(\n map(({basedOnVersionTag, conflictingVersions}) => ({\n basedOnVersionTag: basedOnVersionTag ?? '-',\n conflictingVersions: conflictingVersions ?? '-',\n }))\n );\n\n public readonly releaseVersionEntries$: Observable<{key: string; value: string}[]> =\n this.caseDefinition$.pipe(\n map(caseDefinition => {\n const releaseVersionData = {\n caseDefinitionVersionTag: caseDefinition.caseDefinitionVersionTag ?? '-',\n basedOnVersionTag: caseDefinition.basedOnVersionTag ?? '-',\n };\n\n return Object.entries(releaseVersionData).map(([key, value]) => ({key, value}));\n })\n );\n\n public readonly releaseInformationDataEntries$: Observable<\n {key: string; value: string | Date}[]\n > = this.caseDefinition$.pipe(\n map(caseDefinition => {\n const releaseInformationData = {\n createdBy: caseDefinition.createdBy ?? '-',\n createdDate: this.datePipe.transform(caseDefinition.createdDate ?? '', 'dd-MM-yyyy'),\n description: caseDefinition.description ?? '-',\n };\n\n return Object.entries(releaseInformationData).map(([key, value]) => ({key, value}));\n })\n );\n\n private readonly _deploymentNotificationObject$ = new BehaviorSubject<NotificationContent>(null);\n public readonly deploymentNotificationObject$ =\n this._deploymentNotificationObject$.asObservable();\n\n public readonly caseDefinitionFinalizationCheckResult$: Observable<CaseDefinitionFinalizationCheckResult> =\n combineLatest([\n this.caseDefinitionKey$,\n this.caseDefinitionVersionTag$,\n this._refreshFinalizationCheck$,\n ]).pipe(\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.getCaseDefinitionFinalizationCheck(\n caseDefinitionKey,\n caseDefinitionVersionTag\n )\n ),\n switchMap(res =>\n this.translateService.stream('key').pipe(\n tap(() => {\n switch (res.code) {\n case 'OK':\n this._deploymentNotificationObject$.next(null);\n break;\n case 'BUILDING_BLOCK_NOT_FINAL':\n case 'CONFIGURATION_ISSUES':\n this._deploymentNotificationObject$.next({\n type: 'warning',\n title: this.translateService.instant(\n 'caseManagement.deployment.notFinalizableWarning.title'\n ),\n message: this.translateService.instant(\n `caseManagement.deployment.notFinalizableWarning.${res.code}`\n ),\n showClose: false,\n lowContrast: true,\n });\n break;\n }\n }),\n map(() => res)\n )\n )\n );\n\n private _currentNotification!: Notification;\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly caseManagementService: CaseManagementService,\n private readonly datePipe: DatePipe,\n private readonly environmentService: EnvironmentService,\n private readonly iconService: IconService,\n private readonly location: AngularLocation,\n private readonly notificationService: GlobalNotificationService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly sseService: SseService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(Return16);\n this.iconService.register(TrashCan16);\n this.iconService.register(Save16);\n }\n\n public ngOnInit(): void {\n this.caseDefinitionVersions$.pipe(take(1)).subscribe(versions => {\n this.caseDefinitionVersions = versions || [];\n });\n\n this._subscriptions.add(\n this.sseService\n .getSseEventObservable<ConfigurationIssueUpdatedSseEvent>('CONFIGURATION_ISSUE_UPDATED')\n .pipe(\n withLatestFrom(this.caseDefinitionKey$),\n filter(([event, key]) => event.caseDefinitionKey === key)\n )\n .subscribe(() => {\n this._refreshFinalizationCheck$.next(null);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public ngAfterViewInit(): void {\n this.initBreadcrumbs();\n }\n\n public goToCaseList(): void {\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearSecondBreadcrumb();\n this.router.navigate(['/case-management']);\n }\n\n public goBack(): void {\n this.breadcrumbService.clearThirdBreadcrumb();\n\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$])\n .pipe(take(1))\n .subscribe(([caseDefinitionKey, caseDefinitionVersionTag]) => {\n this.router.navigate([\n `/case-management/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/general`,\n ]);\n });\n }\n\n public openDeleteDraftModal(): void {\n this.showDeleteDraftConfirmationModal$.next(true);\n }\n\n public closeDeleteDraftModal(): void {\n this.showDeleteDraftConfirmationModal$.next(false);\n }\n\n public openFinalizeDraftConfirmationModal(): void {\n this.showFinalizeDraftConfirmationModal$.next(true);\n }\n\n public closeFinalizeDraftModal(): void {\n this.showFinalizeDraftConfirmationModal$.next(false);\n }\n\n public openCreateDraftVersionConfirmationModal(): void {\n this.showCreateDraftVersionConfirmationModal$.next(true);\n }\n\n public onCloseCreateDraftVersionModal(payload?): void {\n if (payload) {\n this.createDraftVersion(payload);\n }\n this.showCreateDraftVersionConfirmationModal$.next(false);\n }\n\n public deleteDraftCaseVersion(): void {\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._deleteDraftMessageTemplateRef,\n });\n\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$])\n .pipe(\n take(1),\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) =>\n this.caseManagementService.deleteDraftCaseVersion(\n caseDefinitionKey,\n caseDefinitionVersionTag\n )\n )\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'caseManagement.deployment.deleteDraftConfirmationModal.successTitle'\n ),\n duration: 5000,\n });\n\n this.goToCaseList();\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'caseManagement.deployment.deleteDraftConfirmationModal.errorMessage'\n ),\n message: this.translateService.instant(\n 'caseManagement.deployment.deleteDraftConfirmationModal.errorMessage'\n ),\n duration: 5000,\n });\n },\n });\n\n this.closeDeleteDraftModal();\n }\n\n public finalizeDraftCaseVersion(): void {\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._finalizeDraftMessageTemplateRef,\n });\n\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$])\n .pipe(\n take(1),\n switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) => {\n return this.caseManagementService.finalizeDraftCaseVersion(\n caseDefinitionKey,\n caseDefinitionVersionTag\n );\n })\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'caseManagement.deployment.finalizeDraftConfirmationModal.successMessage'\n ),\n duration: 5000,\n });\n\n this.refreshDraftVersion$.next(null);\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'caseManagement.deployment.finalizeDraftConfirmationModal.errorMessage'\n ),\n message: this.translateService.instant(\n 'caseManagement.deployment.finalizeDraftConfirmationModal.errorMessage'\n ),\n duration: 5000,\n });\n },\n });\n\n this.closeFinalizeDraftModal();\n }\n\n public createDraftVersion(payload): void {\n this.showInfoNotification(this._createDraftMessageTemplateRef);\n\n this.caseManagementService.createDraftVersion(payload).subscribe({\n next: (response: any) => {\n this.router.navigate([\n '/case-management/case/',\n response.caseDefinitionKey,\n 'version',\n response.caseDefinitionVersionTag,\n ]);\n this.showSuccessNotification(\n 'caseManagement.deployment.createDraftConfirmationModal.successMessage'\n );\n },\n error: () => {\n this.showErrorNotification(\n 'caseManagement.deployment.createDraftConfirmationModal.errorTitle',\n 'caseManagement.deployment.createDraftConfirmationModal.errorMessage'\n );\n },\n });\n\n this.showCreateDraftVersionConfirmationModal$.next(false);\n }\n\n private initBreadcrumbs(): void {\n this._subscriptions.add(\n combineLatest([this.params$, this._caseDefinitionTitle$])\n .pipe(\n tap(([{caseDefinitionKey, caseDefinitionVersionTag}, caseDefinitionTitle]) => {\n const route = `/case-management/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`;\n\n this.breadcrumbService.setThirdBreadcrumb({\n route: [route],\n content: `${caseDefinitionTitle} `,\n href: route,\n });\n })\n )\n .subscribe()\n );\n }\n\n private closeCurrentNotification(): void {\n if (this._currentNotification) {\n this.notificationService.close(this._currentNotification);\n }\n }\n\n private showInfoNotification(templateRef: TemplateRef<any>): void {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: templateRef,\n });\n }\n\n private showSuccessNotification(message: string): void {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(message),\n duration: 5000,\n });\n }\n\n private showErrorNotification(titleKey: string, messageKey: string): void {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(titleKey),\n message: this.translateService.instant(messageKey),\n duration: 5000,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n releaseVersionEntries: releaseVersionEntries$ | async,\n releaseInformationDataEntries: releaseInformationDataEntries$ | async,\n isDraftVersion: isDraftVersion$ | async,\n hasConflictingVersions: hasConflictingVersions$ | async,\n notificationContent: notificationContent$ | async,\n canUpdateGlobalConfiguration: canUpdateGlobalConfiguration$ | async,\n isGloballyActive: isGloballyActive$ | async,\n caseDefinitionFinalizationCheckResult: caseDefinitionFinalizationCheckResult$ | async,\n deploymentNotificationObject: deploymentNotificationObject$ | async,\n } as obs\"\n>\n <cds-notification\n *ngIf=\"\n obs.canUpdateGlobalConfiguration && obs.isDraftVersion && obs.deploymentNotificationObject\n \"\n class=\"deployment-warning-notification\"\n [notificationObj]=\"obs.deploymentNotificationObject\"\n ></cds-notification>\n\n <div class=\"header-buttons\">\n <button cdsButton=\"secondary\" (click)=\"goBack()\">\n {{ 'caseManagement.deployment.buttons.back' | translate }}\n <svg cdsIcon=\"return\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n @if (obs.canUpdateGlobalConfiguration) {\n @if (obs.isDraftVersion) {\n <div class=\"draft-buttons\">\n <button\n *ngIf=\"caseDefinitionVersions.length === 1 || !obs.isGloballyActive\"\n cdsButton=\"danger\"\n (click)=\"openDeleteDraftModal()\"\n >\n {{ 'caseManagement.deployment.buttons.delete' | translate }}\n <svg cdsIcon=\"trash-can\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n (click)=\"openFinalizeDraftConfirmationModal()\"\n [disabled]=\"!obs?.caseDefinitionFinalizationCheckResult?.finalizable\"\n >\n {{ 'caseManagement.deployment.buttons.finalize' | translate }}\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n } @else {\n <button cdsButton=\"primary\" (click)=\"openCreateDraftVersionConfirmationModal()\">\n {{ 'caseManagement.deployment.buttons.createDraft' | translate }}\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n }\n }\n </div>\n\n <div class=\"deployment-panels\">\n <ng-container\n *ngTemplateOutlet=\"\n releaseVersionPanel;\n context: {\n data: obs.releaseVersionEntries,\n showNotification: obs.hasConflictingVersions,\n notificationContent: {\n basedOnVersionTag: obs.notificationContent?.basedOnVersionTag,\n conflictingVersions: obs.notificationContent?.conflictingVersions,\n },\n }\n \"\n ></ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n releaseInformationPanel;\n context: {data: obs.releaseInformationDataEntries}\n \"\n ></ng-container>\n </div>\n</ng-container>\n\n<ng-template\n #releaseVersionPanel\n let-data=\"data\"\n let-showNotification=\"showNotification\"\n let-notificationContent=\"notificationContent\"\n>\n <div class=\"release-version\">\n <p class=\"deployment-panel-title\">\n {{ 'caseManagement.deployment.releaseVersion.title' | translate }}\n </p>\n\n <div class=\"release-version-columns\">\n <div *ngFor=\"let entry of data\" class=\"release-version-data\">\n <label class=\"release-version-data__label\">\n {{ 'caseManagement.deployment.releaseVersion.fields.' + entry.key | translate }}\n </label>\n <div class=\"release-version-data__value\">\n {{ entry.value }}\n </div>\n </div>\n </div>\n\n <cds-notification\n *ngIf=\"showNotification\"\n class=\"full-width-notification\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('caseManagement.deployment.releaseVersion.warning.title' | translate),\n message:\n ('caseManagement.deployment.releaseVersion.warning.description'\n | translate: notificationContent),\n showClose: false,\n lowContrast: true,\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #releaseInformationPanel let-data=\"data\">\n <div class=\"release-information\">\n <p class=\"deployment-panel-title\">\n {{ 'caseManagement.deployment.releaseInformation.title' | translate }}\n </p>\n\n <div class=\"release-version-columns\">\n <ng-container *ngFor=\"let entry of data\">\n <div class=\"release-version-data\" *ngIf=\"entry?.key && entry?.value !== undefined\">\n <label class=\"release-version-data__label\">\n {{ 'caseManagement.deployment.releaseInformation.fields.' + entry.key | translate }}\n </label>\n <div class=\"release-version-data__value\">\n {{ entry.value }}\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteDraftConfirmationModal$\"\n (confirmEvent)=\"deleteDraftCaseVersion()\"\n (cancelEvent)=\"closeDeleteDraftModal()\"\n cancelButtonType=\"ghost\"\n confirmButtonType=\"danger\"\n confirmButtonTextTranslationKey=\"caseManagement.deployment.deleteDraftConfirmationModal.confirm\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n titleTranslationKey=\"caseManagement.deployment.deleteDraftConfirmationModal.title\"\n contentTranslationKey=\"caseManagement.deployment.deleteDraftConfirmationModal.description\"\n>\n</valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showFinalizeDraftConfirmationModal$\"\n [content]=\"finalizeDraftDescription$ | async\"\n (confirmEvent)=\"finalizeDraftCaseVersion()\"\n (cancelEvent)=\"closeFinalizeDraftModal()\"\n cancelButtonType=\"ghost\"\n confirmButtonType=\"primary\"\n confirmButtonTextTranslationKey=\"caseManagement.deployment.finalizeDraftConfirmationModal.confirm\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n titleTranslationKey=\"caseManagement.deployment.finalizeDraftConfirmationModal.title\"\n></valtimo-confirmation-modal>\n\n<valtimo-case-management-create-draft-version\n [open]=\"showCreateDraftVersionConfirmationModal$ | async\"\n [caseDefinitionPayload]=\"caseDefinitionPayload$ | async\"\n (closeModal)=\"onCloseCreateDraftVersionModal($event)\"\n></valtimo-case-management-create-draft-version>\n\n<ng-template #loadingMessage let-translationKey=\"translationKey\">\n <div>\n <span class=\"cds--inline-notification__title\">\n {{ translationKey | translate }}\n </span>\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #createDraftMessage>\n <ng-container\n *ngTemplateOutlet=\"\n loadingMessage;\n context: {\n translationKey: 'caseManagement.deployment.createDraftConfirmationModal.loadingText',\n }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template #finalizeDraftMessage>\n <ng-container\n *ngTemplateOutlet=\"\n loadingMessage;\n context: {\n translationKey: 'caseManagement.deployment.finalizeDraftConfirmationModal.loadingText',\n }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template #deleteDraftMessage>\n <ng-container\n *ngTemplateOutlet=\"\n loadingMessage;\n context: {\n translationKey: 'caseManagement.deployment.finalizeDraftConfirmationModal.loadingText',\n }\n \"\n >\n </ng-container>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {BehaviorSubject, Observable, switchMap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {ColumnConfig, Pagination, ViewType} from '@valtimo/components';\nimport {CaseManagementService} from '../../services';\nimport {map} from 'rxjs/operators';\nimport {CaseListItem} from '../../models';\nimport {Page} from '@valtimo/document';\nimport {CaseVersionListItem} from '../../models/case-version-list.model';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-select-version-modal',\n templateUrl: './case-management-select-version-modal.component.html',\n styleUrls: ['./case-management-select-version-modal.component.scss'],\n})\nexport class CaseManagementSelectVersionModalComponent {\n @Input() open = false;\n @Input() previousSelectedVersion = '';\n\n public readonly caseDefinitionKey$ = new BehaviorSubject<string>('');\n public readonly caseDefinitionTitle$ = new BehaviorSubject<string>('');\n @Input() set caseDefinitionKey(value: string) {\n this.caseDefinitionKey$.next(value);\n }\n @Input() set caseDefinitionTitle(value: string) {\n this.caseDefinitionTitle$.next(value);\n }\n\n @Output() closeEvent = new EventEmitter();\n @Output() selectedVersion = new EventEmitter();\n\n private _paginationInitialized = false;\n\n public pagination: Pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n };\n\n public readonly pagination$ = new BehaviorSubject<Pagination | null>(null);\n\n public readonly versionItems$: Observable<CaseListItem[]> = this.caseDefinitionKey$.pipe(\n switchMap(key => this.caseManagementService.getAllCaseVersions({caseDefinitionKey: key})),\n map((page: Page<CaseVersionListItem>) => {\n this.pagination$.next({\n size: page.size,\n page: page.number + 1,\n collectionSize: +page.totalElements,\n });\n\n return page.content.map((version: any) => ({\n ...version,\n versionTags: [\n {\n content: version.final\n ? version.caseDefinitionVersionTag\n : `DRAFT: ${version.caseDefinitionVersionTag}`,\n type: version.final ? 'green' : 'red',\n },\n ],\n }));\n\n return page.content;\n })\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'versionTags',\n label: 'caseManagement.allVersionsModal.columns.version',\n viewType: ViewType.TAGS,\n },\n {\n key: 'createdDate',\n label: 'caseManagement.allVersionsModal.columns.release',\n viewType: ViewType.DATE_TIME,\n },\n {\n key: 'description',\n label: 'caseManagement.allVersionsModal.columns.description',\n viewType: ViewType.TEXT,\n },\n ];\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly caseManagementService: CaseManagementService\n ) {}\n\n public paginationClicked(page: number): void {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {page: page - 1},\n queryParamsHandling: 'merge',\n });\n }\n\n public paginationSet(size: number): void {\n if (!this._paginationInitialized) {\n this._paginationInitialized = true;\n return;\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {size},\n queryParamsHandling: 'merge',\n });\n }\n\n public selectActiveVersion(event: {caseDefinitionVersionTag: string}): void {\n this.emitSelectedVersion(event?.caseDefinitionVersionTag);\n }\n\n public onCloseModal(): void {\n this.emitSelectedVersion(this.previousSelectedVersion);\n }\n\n private emitSelectedVersion(caseDefinitionVersionTag: string): void {\n this.selectedVersion.emit(caseDefinitionVersionTag);\n this.closeEvent.emit();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal showFooter=\"true\" [open]=\"open\" (close)=\"onCloseModal()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n 'caseManagement.allVersionsModal.title'\n | translate: {value: (caseDefinitionTitle$ | async) ?? ''}\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <valtimo-carbon-list\n [hideToolbar]=\"true\"\n [items]=\"versionItems$ | async\"\n [fields]=\"FIELDS\"\n (rowClicked)=\"selectActiveVersion($event)\"\n [pagination]=\"pagination$ | async\"\n paginationIdentifier=\"caseManagementList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n cdsLayer=\"1\"\n >\n <valtimo-no-results\n [title]=\"'caseManagement.allVersionsModal.noResults.description' | translate\"\n [description]=\"'caseManagement.allVersionsModal.noResults.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'caseManagement.allVersionsModal.closeButton' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {DOCUMENT} from '@angular/common';\nimport {HttpResponse} from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Deploy16, Version16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PageHeaderService} from '@valtimo/components';\nimport {\n ConfigurationIssueService,\n getCaseManagementRouteParams,\n GlobalNotificationService,\n} from '@valtimo/shared';\nimport {IconService, ListItem, Notification} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n map,\n Observable,\n of,\n switchMap,\n tap,\n} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {lt, valid} from 'semver';\nimport {CaseDetailService, CaseManagementService} from '../../services';\nimport {CASE_MANAGEMENT_DETAIL_ACTIONS_TEST_IDS} from '../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-detail-actions',\n templateUrl: './case-management-detail-actions.component.html',\n styleUrls: ['./case-management-detail-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementDetailActionsComponent {\n protected readonly testIds = CASE_MANAGEMENT_DETAIL_ACTIONS_TEST_IDS;\n\n @ViewChild('exportingMessage')\n private readonly _exportMessageTemplateRef: TemplateRef<HTMLDivElement>;\n\n @Input() public documentDefinitionTitle = '';\n @Input() public set caseDefinitionKey(value: string) {\n this.caseDetailService.setSelectedCaseDefinitionKey(value);\n }\n @Output() public versionSet = new EventEmitter<number>();\n\n public readonly CARBON_THEME = 'g10';\n\n public readonly showAllVersionsModal$ = new BehaviorSubject<boolean>(false);\n public readonly exporting$ = new BehaviorSubject<boolean>(false);\n public readonly selectedVersionNumber$ = this.caseDetailService.selectedCaseDefinitionVersionTag$;\n public readonly selectedVersion$ = new BehaviorSubject<string>('');\n\n public readonly params$ = getCaseManagementRouteParams(this.route).pipe(\n tap(({caseDefinitionVersionTag}) => this.selectedVersion$.next(caseDefinitionVersionTag))\n );\n public readonly caseDefinitionKey$: Observable<string> = this.params$.pipe(\n map(params => params.caseDefinitionKey || '')\n );\n public readonly caseDefinitionVersionTag$: Observable<string> = this.params$.pipe(\n map(params => params.caseDefinitionVersionTag || '')\n );\n\n public readonly globalActiveVersion$: Observable<string | null> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n this.caseManagementService.getGlobalActiveCase(caseDefinitionKey).pipe(\n map(result => result.caseDefinitionVersionTag),\n catchError(() => of(null))\n )\n )\n );\n\n public readonly selectedVersionIsGloballyActive$: Observable<boolean> = combineLatest([\n this.selectedVersion$,\n this.globalActiveVersion$,\n ]).pipe(map(([selectedVersion, globalActiveVersion]) => selectedVersion === globalActiveVersion));\n\n public readonly hasUnresolvedConfigurationIssues$: Observable<boolean> =\n this.configurationIssueService.hasAnyIssues$;\n\n public readonly setActiveDisabled$: Observable<boolean> = combineLatest([\n this.selectedVersionIsGloballyActive$,\n this.hasUnresolvedConfigurationIssues$,\n ]).pipe(map(([isActive, hasIssues]) => isActive || hasIssues));\n\n private readonly _caseDefinitionKey$ = this.caseDetailService.selectedCaseDefinitionKey$;\n public readonly loadingVersion$ = new BehaviorSubject<boolean>(true);\n public readonly showGlobalVersionModal$ = new BehaviorSubject<boolean>(false);\n public readonly showGlobalVersionConfirmationModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly _globalActiveCase$: Observable<any | null> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n this.caseManagementService\n .getGlobalActiveCase(caseDefinitionKey)\n .pipe(catchError(() => of(null)))\n )\n );\n\n public readonly _caseDefinitionTitle$: Observable<string> = this._globalActiveCase$.pipe(\n map(result => result?.name ?? '')\n );\n\n public readonly selectedDocumentDefinition$ = this.caseDetailService.documentDefinition$;\n\n public readonly selectedDocumentDefinitionIsReadOnly$ =\n this.caseDetailService.selectedDocumentDefinitionIsReadOnly$;\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n public readonly isOlderVersionSelected$: Observable<boolean> = combineLatest([\n this.globalActiveVersion$,\n this.selectedVersion$,\n ]).pipe(\n map(([currentVersion, selectedVersion]) => {\n return valid(currentVersion) && valid(selectedVersion) && lt(selectedVersion, currentVersion);\n })\n );\n\n private readonly _cachedVersions = new BehaviorSubject<ListItem[] | null>(null);\n public readonly versionSelectorItems$: Observable<ListItem[] | null> = combineLatest([\n this.route.params,\n this.selectedVersion$,\n ]).pipe(\n switchMap(([{caseDefinitionKey}, selectedVersion]) =>\n combineLatest([\n this._cachedVersions.getValue() === null\n ? this.caseManagementService.getCaseDefinitionVersions(caseDefinitionKey)\n : this._cachedVersions.asObservable(),\n of(selectedVersion),\n ])\n ),\n map(([caseDefinitionVersions, selectedVersion]) => {\n if (!caseDefinitionVersions) {\n return null;\n }\n\n this.loadingVersion$.next(false);\n\n const dropdownListVersions = caseDefinitionVersions.slice(0, 5);\n const isSelectedOnTheList = dropdownListVersions.some(\n version => version.versionTag === selectedVersion\n );\n\n let limitedVersions = dropdownListVersions;\n\n if (!isSelectedOnTheList && selectedVersion) {\n const selectedVersionObj = caseDefinitionVersions.find(\n caseVersion => caseVersion.versionTag === selectedVersion\n );\n if (selectedVersionObj) {\n limitedVersions = [...dropdownListVersions.slice(0, 4), selectedVersionObj];\n }\n }\n\n const mapping: ListItem[] = limitedVersions.map(({versionTag, active, final}) => ({\n content: versionTag,\n selected: versionTag === selectedVersion,\n active,\n tagType: final ? 'green' : 'red',\n isAllVersionsOption: false,\n draft: !final,\n 'data-test-id': `caseVersion${versionTag}`,\n }));\n\n const allVersionsItem: ListItem = {\n content: this.translateService.instant('caseManagement.seeAllVersions'),\n selected: false,\n active: false,\n isAllVersionsOption: true,\n 'data-test-id': 'caseSeeAllVersionsButton',\n };\n\n return [...mapping, allVersionsItem];\n })\n );\n\n private _currentNotification!: Notification;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private readonly caseManagementService: CaseManagementService,\n private readonly caseDetailService: CaseDetailService,\n private readonly notificationService: GlobalNotificationService,\n private readonly iconService: IconService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly translateService: TranslateService,\n private readonly configurationIssueService: ConfigurationIssueService\n ) {\n this.iconService.register(Version16);\n this.iconService.register(Deploy16);\n }\n\n public export(): void {\n this.closeCurrentNotification();\n\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._exportMessageTemplateRef,\n });\n\n let selectedVersionNumber!: string;\n\n this.startExporting();\n\n combineLatest([this.selectedVersionNumber$, this._caseDefinitionKey$])\n .pipe(\n take(1),\n tap(([selectedVersion]) => (selectedVersionNumber = selectedVersion ?? '0')),\n switchMap(([selectedVersion, documentDefinitionName]) =>\n this.caseManagementService.exportDocumentDefinition(\n documentDefinitionName,\n selectedVersion ?? '0'\n )\n )\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('caseManagement.exportSuccessTitle'),\n duration: 5000,\n });\n this.downloadZip(response, selectedVersionNumber);\n this.stopExporting();\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('caseManagement.exportErrorTitle'),\n message: this.translateService.instant('caseManagement.exportErrorMessage'),\n duration: 5000,\n });\n this.stopExporting();\n },\n });\n }\n\n public selectVersion(version: any): void {\n if (version?.item?.isAllVersionsOption) {\n this.showAllVersionsModal();\n } else {\n this.setVersion(version?.item?.content);\n }\n }\n\n public selectVersionFromModal(version: string): void {\n this.setVersion(version);\n }\n\n public openGlobalActiveVersionModal(): void {\n this.showGlobalVersionModal$.next(true);\n }\n\n public closeGlobalVersionCaseModal(): void {\n this.showGlobalVersionModal$.next(false);\n }\n\n public showAllVersionsModal(): void {\n this.showAllVersionsModal$.next(true);\n }\n\n public closeAllVersionsModal(): void {\n this.showAllVersionsModal$.next(false);\n }\n\n public openGlobalCaseVersionConfirmationModal(): void {\n this.showGlobalVersionModal$.next(false);\n this.showGlobalVersionConfirmationModal$.next(true);\n }\n\n public closeGlobalCaseConfirmationModal(): void {\n this.showGlobalVersionConfirmationModal$.next(false);\n }\n\n public setGlobalActiveCaseVersion(): void {\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._exportMessageTemplateRef,\n });\n\n combineLatest([this._caseDefinitionKey$, this.selectedVersion$])\n .pipe(\n take(1),\n switchMap(([caseDefinitionKey, selectedVersion]) =>\n this.caseManagementService.setGlobalActiveCaseVersion(caseDefinitionKey, selectedVersion)\n ),\n tap((result: any) => this.selectedVersion$.next(result.caseDefinitionVersionTag))\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'caseManagement.setGlobalActiveVersionSuccessTitle'\n ),\n duration: 5000,\n });\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('caseManagement.setGlobalActiveVersionErrorTitle'),\n message: this.translateService.instant(\n 'caseManagement.setGlobalActiveVersionErrorMessage'\n ),\n duration: 5000,\n });\n },\n });\n\n this.showGlobalVersionConfirmationModal$.next(false);\n }\n\n public redirectToDeployment(): void {\n combineLatest([this.caseDefinitionKey$, this.caseDefinitionVersionTag$])\n .pipe(\n tap(([caseDefinitionKey, caseDefinitionVersionTag]) => {\n this.router.navigate([\n '/case-management/case',\n caseDefinitionKey,\n 'version',\n caseDefinitionVersionTag,\n 'deployment',\n ]);\n })\n )\n .subscribe();\n }\n\n private startExporting(): void {\n this.exporting$.next(true);\n }\n\n private stopExporting(): void {\n this.exporting$.next(false);\n }\n\n private downloadZip(response: HttpResponse<Blob>, caseDefinitionVersionTag: string): void {\n const link = document.createElement('a');\n const contentDisposition = response.headers.get('content-disposition');\n const splitContentDisposition = contentDisposition?.split('filename=') ?? [];\n const fileName = splitContentDisposition.length > 1 && splitContentDisposition[1];\n\n link.href = this.document.defaultView?.URL.createObjectURL(response.body) ?? '';\n link.download = fileName || `${this.caseDefinitionKey}_${caseDefinitionVersionTag}.valtimo.zip`;\n link.target = '_blank';\n link.click();\n link.remove();\n }\n\n private closeCurrentNotification(): void {\n if (this._currentNotification) {\n this.notificationService.close(this._currentNotification);\n }\n }\n\n private findLargestInArray(array: Array<number>): number {\n return array.reduce(function (a, b) {\n return a > b ? a : b;\n });\n }\n\n private setVersion(version: string): void {\n this.selectedVersion$.next(version);\n this.router.navigate([`../${version}/${this.route.firstChild?.routeConfig?.path}`], {\n relativeTo: this.route,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"case-actions\"\n *ngIf=\"{\n exporting: exporting$ | async,\n loadingVersion: loadingVersion$ | async,\n versionItems: versionSelectorItems$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n selectedDocumentDefinitionIsReadOnly: selectedDocumentDefinitionIsReadOnly$ | async,\n selectedVersionIsGloballyActive: selectedVersionIsGloballyActive$ | async,\n setActiveDisabled: setActiveDisabled$ | async,\n hasUnresolvedConfigurationIssues: hasUnresolvedConfigurationIssues$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n [ngClass]=\"{'--compact': obs.compactMode}\"\n>\n <div class=\"case-metadata\">\n <ng-container *ngTemplateOutlet=\"versionSelection; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"readOnly; context: {obs: obs}\"></ng-container>\n </div>\n\n <div class=\"case-buttons\">\n <ng-container *ngTemplateOutlet=\"deploymentButton; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"exportMenu; context: {obs: obs}\"></ng-container>\n </div>\n\n\n</div>\n\n<ng-template #versionSelection let-obs=\"obs\">\n <cds-dropdown\n class=\"version-selector\"\n [attr.data-test-id]=\"testIds.versionSelectDropdown\"\n selectionFeedback=\"fixed\"\n [displayValue]=\"versionItemTemplate\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n [appendInline]=\"false\"\n [disabled]=\"!obs?.versionItems?.length || obs?.versionItems?.length === 1\"\n [skeleton]=\"obs.loadingVersion\"\n (selected)=\"selectVersion($event)\"\n >\n <cds-dropdown-list\n [items]=\"obs?.versionItems || []\"\n [listTpl]=\"versionItemTemplate\"\n ></cds-dropdown-list>\n </cds-dropdown>\n</ng-template>\n\n<ng-template #versionItemTemplate let-item=\"item\">\n <div\n [attr.data-test-id]=\"item?.['data-test-id']\"\n *ngIf=\"item?.isAllVersionsOption; else regularVersionTemplate\"\n >\n <span>{{ item?.content }}</span>\n <svg cdsIcon=\"version\" size=\"16\"></svg>\n </div>\n\n <ng-template #regularVersionTemplate>\n <div [attr.data-test-id]=\"item?.['data-test-id']\" class=\"version-selector-dropdown-template\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"item?.tagType\" [title]=\"item?.content\">\n {{ item?.draft ? 'DRAFT: ' + item?.content : item?.content }}\n </cds-tag>\n\n <cds-tag\n *ngIf=\"item?.active\"\n [attr.data-test-id]=\"testIds.globallyActiveCaseVersion\"\n class=\"cds-tag--no-margin\"\n type=\"high-contrast\"\n >\n {{ 'caseManagement.globallyActive' | translate }}\n </cds-tag>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #deploymentButton let-obs=\"obs\">\n <button\n cdsButton=\"secondary\"\n [attr.data-test-id]=\"testIds.versionManagementButton\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"redirectToDeployment()\"\n >\n {{ 'caseManagement.deployment.title' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #exportMenu let-obs=\"obs\">\n <cds-overflow-menu\n valtimoCdsOverflowButton\n [width]=\"250\"\n [customTrigger]=\"customTrigger\"\n [offset]=\"{y: 48, x: 37}\"\n class=\"overflow-button\"\n >\n <cds-overflow-menu-option\n [attr.data-test-id]=\"testIds.exportButton\"\n [id]=\"'exportDocumentDefinition'\"\n [disabled]=\"obs.exporting || obs.loadingVersion\"\n (selected)=\"export()\"\n >{{ 'caseManagement.export' | translate: {value: documentDefinitionTitle} }}\n </cds-overflow-menu-option>\n\n <span\n *ngIf=\"obs.hasUnresolvedConfigurationIssues && !obs.selectedVersionIsGloballyActive; else setActiveDefault\"\n >\n <cds-tooltip\n [description]=\"'caseManagement.setGlobalActiveVersionConfigurationIssuesWarning' | translate\"\n [align]=\"'bottom'\"\n >\n <cds-overflow-menu-option\n [attr.data-test-id]=\"testIds.setActiveVersionButton\"\n [id]=\"'setGlobalActiveVersion'\"\n [disabled]=\"true\"\n >{{ 'caseManagement.setGlobalActiveVersion' | translate }}\n </cds-overflow-menu-option>\n </cds-tooltip>\n </span>\n\n <ng-template #setActiveDefault>\n <cds-overflow-menu-option\n data-test-id=\"caseSetActiveVersionButton\"\n [id]=\"'setGlobalActiveVersion'\"\n [disabled]=\"obs.selectedVersionIsGloballyActive\"\n (selected)=\"openGlobalActiveVersionModal()\"\n >{{ 'caseManagement.setGlobalActiveVersion' | translate }}\n </cds-overflow-menu-option>\n </ng-template>\n </cds-overflow-menu>\n</ng-template>\n\n<ng-template #customTrigger>\n <button\n cdsButton=\"tertiary\"\n [attr.data-test-id]=\"testIds.moreButton\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n >\n {{ 'caseManagement.more' | translate }}\n\n <svg\n class=\"cds--btn__icon case-management-overflow-icon\"\n cdsIcon=\"overflow-menu--vertical\"\n size=\"16\"\n ></svg>\n </button>\n</ng-template>\n\n<ng-template #exportingMessage>\n <div class=\"exporting-message\">\n <span class=\"cds--inline-notification__title\">{{\n 'caseManagement.preparingDownload' | translate\n }}</span>\n\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #readOnly let-obs=\"obs\">\n <cds-tag *ngIf=\"obs.selectedDocumentDefinitionIsReadOnly\" type=\"blue\">{{\n 'caseManagement.readonly' | translate\n }}</cds-tag>\n</ng-template>\n\n<valtimo-case-management-select-version-modal\n [open]=\"showAllVersionsModal$ | async\"\n [caseDefinitionTitle]=\"_caseDefinitionTitle$ | async\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [previousSelectedVersion]=\"selectedVersion$ | async\"\n (closeEvent)=\"closeAllVersionsModal()\"\n (selectedVersion)=\"selectVersionFromModal($event)\"\n></valtimo-case-management-select-version-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showGlobalVersionModal$\"\n cancelButtonType=\"ghost\"\n cancelButtonTextTranslationKey=\"caseManagement.globalActiveVersionModal.cancel\"\n confirmButtonTextTranslationKey=\"caseManagement.globalActiveVersionModal.continue\"\n titleTranslationKey=\"caseManagement.globalActiveVersionModal.title\"\n contentTranslationKey=\"caseManagement.globalActiveVersionModal.description\"\n (cancelEvent)=\"closeGlobalVersionCaseModal()\"\n (confirmEvent)=\"openGlobalCaseVersionConfirmationModal()\"\n>\n <cds-notification\n *ngIf=\"isOlderVersionSelected$ | async\"\n class=\"full-width-notification\"\n [notificationObj]=\"{\n type: 'warning',\n title: 'caseManagement.globalActiveVersionModal.warningTitle' | translate,\n message: 'caseManagement.globalActiveVersionModal.warningMessage' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n >\n </cds-notification>\n</valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showGlobalVersionConfirmationModal$\"\n cancelButtonType=\"ghost\"\n cancelButtonTextTranslationKey=\"caseManagement.confirmationGlobalVersionModal.cancel\"\n confirmButtonType=\"danger\"\n confirmButtonTextTranslationKey=\"caseManagement.confirmationGlobalVersionModal.confirm\"\n contentTranslationKey=\"caseManagement.confirmationGlobalVersionModal.description\"\n titleTranslationKey=\"caseManagement.confirmationGlobalVersionModal.title\"\n (cancelEvent)=\"closeGlobalCaseConfirmationModal()\"\n (confirmEvent)=\"setGlobalActiveCaseVersion()\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {PageTitleService} from '@valtimo/components';\nimport {DocumentDefinition} from '@valtimo/document';\nimport {\n CaseManagementParams,\n CaseManagementTabConfig,\n ConfigService,\n ConfigurationIssueService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {SseService} from '@valtimo/sse';\nimport {Tab} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n shareReplay,\n startWith,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {\n CaseDefinitionConfigurationIssue,\n ConfigurationIssueUpdatedSseEvent,\n TabEnum,\n} from '../../models';\nimport {CaseDetailService, CaseManagementService, TabService} from '../../services';\nimport {CASE_MANAGEMENT_DETAIL_TEST_IDS} from '../../constants';\n\n@Component({\n standalone: false,\n templateUrl: './case-management-detail.component.html',\n styleUrls: ['./case-management-detail.component.scss'],\n providers: [CaseDetailService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementDetailComponent implements OnInit, OnDestroy {\n protected readonly testIds = CASE_MANAGEMENT_DETAIL_TEST_IDS;\n\n @ViewChildren(Tab) private _tabs: QueryList<Tab>;\n\n private _params: CaseManagementParams | undefined;\n\n public readonly params$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n\n public readonly caseDefinitionKey$ = this.params$.pipe(\n map(params => params?.caseDefinitionKey ?? '')\n );\n\n public caseListColumn!: boolean;\n public tabManagementEnabled!: boolean;\n\n public _activeTab: TabEnum | string;\n public pendingTab: TabEnum | null | string;\n\n public readonly currentTab$ = this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map(event => {\n const urlWithoutQuery = (event as NavigationEnd).urlAfterRedirects.split('?')[0];\n const splitUrl = urlWithoutQuery.split('/');\n return splitUrl[splitUrl.length - 1];\n }),\n startWith(this.route.firstChild?.routeConfig?.path)\n );\n\n public readonly injectedCaseManagementTabs$: Observable<CaseManagementTabConfig[]> =\n this.tabService.injectedCaseManagementTabs$;\n\n public readonly documentDefinitionTitle$ = this.pageTitleService.customPageTitle$;\n\n public readonly TabEnum = TabEnum;\n\n private _activeVersion: string | null;\n private _subscriptions = new Subscription();\n private readonly _refreshConfigurationIssues$ = new BehaviorSubject<null>(null);\n\n public readonly configurationIssues$: Observable<CaseDefinitionConfigurationIssue[]> =\n combineLatest([\n this.caseDetailService.selectedCaseDefinitionKey$,\n this.caseDetailService.selectedCaseDefinitionVersionTag$,\n this._refreshConfigurationIssues$,\n ]).pipe(\n switchMap(([key, version]) =>\n this.caseManagementService.getConfigurationIssues(key, version)\n ),\n map(issues => issues.filter(issue => !issue.resolved)),\n shareReplay(1)\n );\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly caseDetailService: CaseDetailService,\n private readonly caseManagementService: CaseManagementService,\n private readonly configService: ConfigService,\n private readonly configurationIssueService: ConfigurationIssueService,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly sseService: SseService,\n private readonly tabService: TabService\n ) {\n const featureToggles = this.configService.config.featureToggles;\n this.caseListColumn = featureToggles?.caseListColumn ?? true;\n this.tabManagementEnabled = featureToggles?.enableTabManagement ?? true;\n }\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.caseDetailService.documentDefinition$.subscribe(\n (documentDefinition: DocumentDefinition | null) => {\n if (!documentDefinition) return;\n\n this.pageTitleService.setCustomPageTitle(documentDefinition.schema.title);\n }\n )\n );\n this.openActiveVersionSubscription();\n this.openConfigurationIssueSseSubscription();\n this.openConfigurationIssueSubscription();\n this.pageTitleService.disableReset();\n this.openParamsSubscription();\n }\n\n public ngOnDestroy(): void {\n this.tabService.currentTab = TabEnum.GENERAL;\n this._subscriptions.unsubscribe();\n this.pageTitleService.enableReset();\n this.configurationIssueService.setUnresolvedIssueTypes([]);\n }\n\n public navigateToTab(tab: TabEnum | string): void {\n if (!this._params) return;\n\n this.router.navigateByUrl(\n `case-management/case/${this._params.caseDefinitionKey}/version/${this._params.caseDefinitionVersionTag}/${tab}`\n );\n }\n\n public openTabCheckSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._tabs.changes, this.currentTab$]).subscribe(([tabs, currentTab]) => {\n tabs.forEach((tab: Tab) => (tab.active = tab.id === currentTab));\n })\n );\n }\n\n public onCancelRedirectEvent(): void {\n if (this._activeVersion) {\n this.caseDetailService.setPreviousSelectedCaseDefinitionVersionTag(`${this._activeVersion}`);\n this._activeVersion = null;\n return;\n }\n\n if (!this.pendingTab) {\n return;\n }\n this.tabService.currentTab = this.pendingTab;\n }\n\n public onVersionSet(version: number): void {\n this.caseDetailService.setSelectedCaseDefinitionVersionTag(`${version}`);\n }\n\n private openActiveVersionSubscription(): void {\n this._subscriptions.add(\n this.caseDetailService.selectedCaseDefinitionVersionTag$.subscribe(\n (versionTag: string | null) => {\n this._activeVersion = versionTag;\n }\n )\n );\n }\n\n private openConfigurationIssueSubscription(): void {\n this._subscriptions.add(\n this.configurationIssues$.subscribe(issues =>\n this.configurationIssueService.setUnresolvedIssueTypes(issues.map(issue => issue.issueType))\n )\n );\n }\n\n private openConfigurationIssueSseSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.caseDetailService.selectedCaseDefinitionKey$,\n this.sseService.getSseEventObservable<ConfigurationIssueUpdatedSseEvent>(\n 'CONFIGURATION_ISSUE_UPDATED'\n ),\n ])\n .pipe(filter(([key, event]) => event.caseDefinitionKey === key))\n .subscribe(() => {\n this._refreshConfigurationIssues$.next(null);\n })\n );\n }\n\n private openParamsSubscription(): void {\n this._subscriptions.add(\n this.params$.subscribe(params => {\n this.caseDetailService.setSelectedCaseDefinitionKey(params?.caseDefinitionKey ?? '');\n this.caseDetailService.setSelectedCaseDefinitionVersionTag(\n params?.caseDefinitionVersionTag ?? ''\n );\n this._params = params;\n })\n );\n }\n\n protected onCanDeactivate(): void {\n //TODO: Fix pending changes with new routing\n // this._documentDefinitionTab?.onCanDeactivate();\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n currentTab: currentTab$ | async,\n injectedTabs: injectedCaseManagementTabs$ | async,\n } as obs\"\n class=\"case-management-detail-container\"\n>\n @if (configurationIssues$ | async; as issues) {\n @if (issues.length > 0) {\n <cds-notification\n class=\"environment-config-warning\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('caseManagement.environmentConfig.bannerTitle' | translate),\n message: ('caseManagement.environmentConfig.bannerMessage' | translate),\n showClose: false,\n lowContrast: true\n }\"\n (click)=\"navigateToTab('zgw')\"\n ></cds-notification>\n }\n }\n\n <cds-tabs class=\"case-management-tabs\" type=\"inline\" [attr.data-test-id]=\"testIds.tabs\">\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.GENERAL\"\n [active]=\"obs.currentTab === TabEnum.GENERAL\"\n [heading]=\"'caseManagement.tabs.general' | translate\"\n (selected)=\"navigateToTab(TabEnum.GENERAL)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.PROCESSES\"\n [active]=\"obs.currentTab === TabEnum.PROCESSES\"\n [heading]=\"'caseManagement.tabs.processes' | translate\"\n (selected)=\"navigateToTab(TabEnum.PROCESSES)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.DECISIONS\"\n [active]=\"obs.currentTab === TabEnum.DECISIONS\"\n [heading]=\"'caseManagement.tabs.decision' | translate\"\n (selected)=\"navigateToTab(TabEnum.DECISIONS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.DOCUMENT\"\n [active]=\"obs.currentTab === TabEnum.DOCUMENT\"\n [heading]=\"'caseManagement.tabs.document' | translate\"\n (selected)=\"navigateToTab(TabEnum.DOCUMENT)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.FORMS\"\n [active]=\"obs.currentTab === TabEnum.FORMS\"\n [heading]=\"'caseManagement.tabs.forms' | translate\"\n (selected)=\"navigateToTab(TabEnum.FORMS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.FORM_FLOWS\"\n [active]=\"obs.currentTab === TabEnum.FORM_FLOWS\"\n [heading]=\"'caseManagement.tabs.formFlows' | translate\"\n (selected)=\"navigateToTab(TabEnum.FORM_FLOWS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.TASKS\"\n [active]=\"obs.currentTab === TabEnum.TASKS\"\n [heading]=\"'caseManagement.tabs.tasks' | translate\"\n (selected)=\"navigateToTab(TabEnum.TASKS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [id]=\"TabEnum.CASE_LIST\"\n [active]=\"obs.currentTab === TabEnum.CASE_LIST\"\n [heading]=\"'caseManagement.tabs.caseListTab.title' | translate\"\n (selected)=\"navigateToTab(TabEnum.CASE_LIST)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [id]=\"TabEnum.CASE_DETAILS\"\n [active]=\"obs.currentTab === TabEnum.CASE_DETAILS\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.title' | translate\"\n (selected)=\"navigateToTab(TabEnum.CASE_DETAILS)\"\n >\n </cds-tab>\n\n @for (injectedTab of obs.injectedTabs; track injectedTab.translationKey) {\n @if (injectedTab.enabled$ | async) {\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === (injectedTab.tabRoute ?? injectedTab.translationKey)\"\n [heading]=\"injectedTab.translationKey | translate\"\n (selected)=\"navigateToTab(injectedTab.tabRoute ?? injectedTab.translationKey)\"\n >\n </cds-tab>\n }\n }\n </cds-tabs>\n\n <div class=\"case-management-detail-container__content\">\n <router-outlet></router-outlet>\n </div>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <valtimo-case-management-detail-actions\n [documentDefinitionTitle]=\"documentDefinitionTitle$ | async\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n (versionSet)=\"onVersionSet($event)\"\n ></valtimo-case-management-detail-actions>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Edit16, Save16} from '@carbon/icons';\nimport {ConfirmationModalComponent, EditorModel, PageHeaderService} from '@valtimo/components';\nimport {DocumentDefinitionCreateRequest, DocumentService} from '@valtimo/document';\nimport {\n CaseManagementParams,\n EditPermissionsService,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {switchMap, take} from 'rxjs/operators';\nimport {CaseDetailService} from '../../../../services';\n\n@Component({\n standalone: false,\n templateUrl: './case-management-document-definition.component.html',\n styleUrls: ['./case-management-document-definition.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementDocumentDefinitionComponent {\n @ViewChild('cancelModal') public cancelModal: ConfirmationModalComponent;\n @Input() caseDefinitionKey: string;\n @Output() cancelRedirect = new EventEmitter();\n @Output() confirmRedirect = new EventEmitter();\n @Output() pendingChangesUpdate = new EventEmitter<boolean>();\n\n public readonly loadingDocumentDefinition$ = this.caseDetailService.loadingDocumentDefinition$;\n private readonly _refreshEditor$ = new BehaviorSubject<null>(null);\n public readonly documentDefinitionModel$: Observable<EditorModel> = this._refreshEditor$.pipe(\n switchMap(() => this.caseDetailService.documentDefinitionModel$)\n );\n\n private readonly _pendingChanges$ = new BehaviorSubject<boolean>(false);\n public readonly selectedDocumentDefinition$ = this.caseDetailService.documentDefinition$;\n\n public readonly params$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n\n public readonly hasEditPermissions$: Observable<boolean> = this.params$.pipe(\n switchMap(params =>\n this.editPermissionsService.hasEditPermissions(\n params?.caseDefinitionKey ?? '',\n params?.caseDefinitionVersionTag ?? ''\n )\n )\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly caseDetailService: CaseDetailService,\n private readonly iconService: IconService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly route: ActivatedRoute,\n private readonly editPermissionsService: EditPermissionsService\n ) {\n this.iconService.registerAll([Edit16, Save16]);\n this._pendingChanges$.subscribe((pendingChanges: boolean) =>\n this.pendingChangesUpdate.emit(pendingChanges)\n );\n }\n\n public downloadDefinition(): void {\n this.selectedDocumentDefinition$.pipe(take(1)).subscribe(definition => {\n const {blueprintKey, blueprintVersionTag} = definition.id.blueprintId;\n const dataString =\n 'data:text/json;charset=utf-8,' +\n encodeURIComponent(JSON.stringify(definition.schema, null, 2));\n const downloadAnchorElement = document.getElementById('downloadAnchorElement');\n if (!downloadAnchorElement) {\n return;\n }\n\n downloadAnchorElement.setAttribute('href', dataString);\n downloadAnchorElement.setAttribute(\n 'download',\n `${blueprintKey}-v${blueprintVersionTag}.json`\n );\n downloadAnchorElement.click();\n });\n }\n\n public onDiscardEvent(): void {\n this._pendingChanges$.next(false);\n this.confirmRedirect.emit();\n }\n\n public onKeepEditingEvent(): void {\n this.cancelRedirect.emit();\n }\n\n public onSaveEvent(definition): void {\n const newDocumentDefinition = new DocumentDefinitionCreateRequest(JSON.stringify(definition));\n\n this.params$\n .pipe(\n switchMap(params =>\n this.documentService.updateDocumentDefinitionForManagement(\n params?.caseDefinitionKey ?? '',\n params?.caseDefinitionVersionTag ?? '',\n newDocumentDefinition\n )\n )\n )\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.caseDetailService.setSelectedCaseDefinitionKey(this.caseDefinitionKey);\n this.confirmRedirect.emit();\n this._pendingChanges$.next(false);\n this.caseDetailService.reloadDocumentDefinition();\n },\n error: () => {\n this.cancelRedirect.emit();\n },\n });\n }\n\n public onChangeEvent(): void {\n this._pendingChanges$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-json-editor\n [model]=\"documentDefinitionModel$ | async\"\n [fitPage]=\"true\"\n [fitPageSpaceAdjustment]=\"128\"\n [showEditButton]=\"hasEditPermissions$ | async\"\n (changeEvent)=\"onChangeEvent()\"\n (discardEvent)=\"onDiscardEvent()\"\n (keepEditingEvent)=\"onKeepEditingEvent()\"\n (saveEvent)=\"onSaveEvent($event)\"\n>\n <button\n cdsButton=\"ghost\"\n [disabled]=\"\n (loadingDocumentDefinition$ | async) || (selectedDocumentDefinition$ | async) === null\n \"\n (click)=\"downloadDefinition()\"\n >\n {{ 'interface.download' | translate }}\n\n <svg cdsIcon=\"download\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</valtimo-json-editor>\n\n<a id=\"downloadAnchorElement\" style=\"display: none\"></a>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, Input} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Information16} from '@carbon/icons';\nimport {CaseSettings, DocumentService} from '@valtimo/document';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n finalize,\n map,\n Observable,\n switchMap,\n of,\n debounceTime,\n startWith,\n} from 'rxjs';\nimport {tap} from 'rxjs/operators';\nimport {CASE_MANAGEMENT_CASE_HANDLER_TEST_IDS} from '../../../../../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-case-handler',\n templateUrl: './case-management-case-handler.component.html',\n styleUrl: './case-management-case-handler.component.scss',\n})\nexport class CaseManagementCaseHandlerComponent {\n protected readonly testIds = CASE_MANAGEMENT_CASE_HANDLER_TEST_IDS;\n\n @Input() public readonly isReadOnly: boolean;\n\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly params$: Observable<CaseManagementParams> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n map((params: CaseManagementParams | undefined) => ({\n caseDefinitionKey: params?.caseDefinitionKey ?? '',\n caseDefinitionVersionTag: params?.caseDefinitionVersionTag ?? '',\n }))\n );\n\n public readonly caseDefinitionKey$: Observable<string> | undefined = this.params$?.pipe(\n map(({caseDefinitionKey}) => caseDefinitionKey || '')\n );\n\n public readonly caseDefinitionVersionTag$: Observable<string> | undefined = this.params$?.pipe(\n map(({caseDefinitionVersionTag}) => caseDefinitionVersionTag || '')\n );\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n public readonly currentValue$: Observable<CaseSettings> = this._refresh$.pipe(\n switchMap(() => this.params$),\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.documentService.getCaseSettingsForManagement(caseDefinitionKey, caseDefinitionVersionTag)\n ),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private route: ActivatedRoute\n ) {\n this.iconService.registerAll([Information16]);\n }\n\n public updateCaseSettings(\n caseSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): void {\n this.disableInput();\n\n this.documentService\n .patchCaseSettingsForManagement(caseDefinitionKey, caseDefinitionVersionTag, caseSettings)\n .pipe(finalize(() => this.enableInput()))\n .subscribe(() => this.refreshSettings());\n }\n\n public disableInput(): void {\n this.disabled$.next(true);\n }\n\n public enableInput(): void {\n this.disabled$.next(false);\n }\n\n private refreshSettings(): void {\n this._refresh$.next(null);\n }\n\n public toggleAssignee(\n currentSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ) {\n const newCanHaveAssignee = !currentSettings?.canHaveAssignee;\n\n this.updateCaseSettings(\n {\n canHaveAssignee: newCanHaveAssignee,\n autoAssignTasks: newCanHaveAssignee ? currentSettings.autoAssignTasks : false,\n },\n caseDefinitionKey,\n caseDefinitionVersionTag\n );\n }\n\n public toggleTaskAssignment(\n currentSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ) {\n this.updateCaseSettings(\n {\n canHaveAssignee: currentSettings?.canHaveAssignee,\n autoAssignTasks: !currentSettings.autoAssignTasks,\n },\n caseDefinitionKey,\n caseDefinitionVersionTag\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n currentValue: currentValue$ | async,\n caseDefinitionKey: caseDefinitionKey$ | async,\n caseDefinitionVersionTag: caseDefinitionVersionTag$ | async,\n loading: loading$ | async,\n disabled: disabled$ | async,\n } as obs\"\n class=\"case-handler-process\"\n [cdsLayer]=\"0\"\n>\n <p class=\"case-handler-process__title\">\n {{ 'caseManagement.tabs.generalTab.caseHandler.title' | translate }}\n </p>\n\n <div class=\"case-handler-process__toggles\">\n <cds-toggle\n valtimoReadOnly\n [isReadOnly]=\"isReadOnly\"\n [checked]=\"obs?.currentValue?.canHaveAssignee\"\n [disabled]=\"obs.disabled || isReadOnly\"\n (checkedChange)=\"\n toggleAssignee(obs?.currentValue, obs.caseDefinitionKey, obs.caseDefinitionVersionTag)\n \"\n [label]=\"'caseManagement.tabs.generalTab.caseHandler.canHaveHandler' | translate\"\n [onText]=\"'caseManagement.tabs.generalTab.caseHandler.toggle.onText' | translate\"\n [offText]=\"'caseManagement.tabs.generalTab.caseHandler.toggle.offText' | translate\"\n [attr.data-test-id]=\"testIds.canHaveHandler\"\n ></cds-toggle>\n\n <cds-tooltip\n [isOpen]=\"false\"\n [description]=\"\n 'caseManagement.tabs.generalTab.caseHandler.disabledAutoAssignTooltip' | translate\n \"\n [align]=\"'top'\"\n >\n <cds-toggle\n valtimoReadOnly\n [isReadOnly]=\"isReadOnly\"\n [checked]=\"obs?.currentValue?.autoAssignTasks\"\n [disabled]=\"!obs?.currentValue?.canHaveAssignee || isReadOnly\"\n (checkedChange)=\"\n toggleTaskAssignment(\n obs?.currentValue,\n obs?.caseDefinitionKey,\n obs.caseDefinitionVersionTag\n )\n \"\n [label]=\"'caseManagement.toggleAutoAssignTasks.checkboxDescription' | translate\"\n [onText]=\"'caseManagement.tabs.generalTab.caseHandler.toggle.onText' | translate\"\n [offText]=\"'caseManagement.tabs.generalTab.caseHandler.toggle.offText' | translate\"\n [attr.data-test-id]=\"testIds.automaticallyAssign\"\n ></cds-toggle>\n </cds-tooltip>\n </div>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CaseSettings, DocumentService} from '@valtimo/document';\nimport {\n CaseManagementParams,\n getCaseManagementRouteParams,\n GlobalNotificationService,\n} from '@valtimo/shared';\nimport {NGXLogger} from 'ngx-logger';\nimport {BehaviorSubject, map, Observable, Subscription, switchMap, take, tap} from 'rxjs';\nimport {CASE_MANAGEMENT_EXTERNAL_START_FORM_TEST_IDS} from '../../../../../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-external-start-form',\n templateUrl: './case-management-external-start-form.component.html',\n styleUrl: './case-management-external-start-form.component.scss',\n})\nexport class CaseManagementExternalStartFormComponent implements OnInit, OnDestroy {\n protected readonly testIds = CASE_MANAGEMENT_EXTERNAL_START_FORM_TEST_IDS;\n\n private _isReadOnly: boolean;\n @Input() public set isReadOnly(value: boolean) {\n this._isReadOnly = value;\n\n if (value) {\n this.form.get('externalFormUrl')?.disable();\n this.form.get('description')?.disable();\n } else {\n this.form.get('externalFormUrl')?.enable();\n this.form.get('description')?.enable();\n }\n }\n public get isReadOnly(): boolean {\n return this._isReadOnly;\n }\n\n private readonly _URL_PATTERN = new RegExp(\n '^(?:https?:\\\\/\\\\/)?(?:localhost|[\\\\w]+(?:-[\\\\w]+)*(?:\\\\.[\\\\w]+(?:-[\\\\w]+)*)+)(:\\\\d+)?(\\\\/\\\\S*)?$'\n );\n\n public readonly form = this.fb.group({\n hasExternalForm: [false],\n externalFormUrl: [\n {value: '', disabled: true},\n [Validators.required, Validators.pattern(this._URL_PATTERN), Validators.maxLength(512)],\n ],\n description: [''],\n });\n\n public readonly params$: Observable<CaseManagementParams> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n map((params: CaseManagementParams | undefined) => ({\n caseDefinitionKey: params?.caseDefinitionKey ?? '',\n caseDefinitionVersionTag: params?.caseDefinitionVersionTag ?? '',\n }))\n );\n\n public readonly caseSettings$ = new BehaviorSubject<CaseSettings | null>(null);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly documentService: DocumentService,\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService,\n private readonly logger: NGXLogger,\n private readonly globalNotificationService: GlobalNotificationService\n ) {}\n\n public ngOnInit(): void {\n this.logger.debug('External Case Start Form - onInit');\n\n this._subscriptions.add(\n this.params$\n .pipe(\n switchMap(params =>\n this.documentService.getCaseSettingsForManagement(\n params.caseDefinitionKey,\n params.caseDefinitionVersionTag\n )\n ),\n tap(caseSettings => {\n this.logger.debug('Fetched case definition settings', caseSettings);\n this.caseSettings$.next(caseSettings);\n })\n )\n .subscribe()\n );\n\n this._subscriptions.add(\n this.caseSettings$.subscribe((caseSettings: CaseSettings | null) => {\n if (!!caseSettings) {\n this.logger.debug('Applying case definition settings to form', caseSettings);\n this.form.setValue({\n hasExternalForm: caseSettings.hasExternalStartForm ?? false,\n externalFormUrl: caseSettings.externalStartFormUrl ?? '',\n description: caseSettings.externalStartFormDescription ?? '',\n });\n }\n })\n );\n }\n\n public ngOnDestroy(): void {\n this.logger.debug('External Case Start Form - onDestroy');\n this._subscriptions.unsubscribe();\n }\n\n public get hasExternalForm(): AbstractControl<boolean> {\n return this.form.get('hasExternalForm');\n }\n\n public get externalFormUrl(): AbstractControl<string> {\n return this.form.get('externalFormUrl');\n }\n\n public get description(): AbstractControl<string> {\n return this.form.get('description');\n }\n\n public onSubmit(): void {\n if (!this.form.valid) return;\n\n this.logger.debug('Submitted case definition settings form with values:', this.form.value);\n\n this.params$.pipe(take(1)).subscribe(params => {\n this.updateCaseSettings(params.caseDefinitionKey, params.caseDefinitionVersionTag, {\n hasExternalStartForm: this.hasExternalForm.value,\n externalStartFormUrl:\n typeof this.externalFormUrl.value === 'string'\n ? this.externalFormUrl.value.trim()\n : this.externalFormUrl.value,\n externalStartFormDescription: this.description.value || '',\n });\n });\n }\n\n private updateCaseSettings(\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string,\n caseSettings: CaseSettings\n ): void {\n this.logger.debug('Updating case definition settings', caseDefinitionKey, caseSettings);\n this.documentService\n .patchCaseSettingsForManagement(caseDefinitionKey, caseDefinitionVersionTag, caseSettings)\n .subscribe({\n next: result => {\n this.logger.debug('Updated case definition settings', result);\n this.caseSettings$.next(result);\n },\n error: e => {\n this.logger.error('An error occurred while updating case definition settings', e);\n\n this.globalNotificationService.showToast({\n type: 'error',\n title: this.translateService.instant(\n 'caseManagement.externalStartForm.notification.error'\n ),\n });\n },\n complete: () => {\n this.logger.debug('Finished updating case definition settings');\n\n this.globalNotificationService.showToast({\n type: 'success',\n title: this.translateService.instant(\n 'caseManagement.externalStartForm.notification.success'\n ),\n });\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-tile\n class=\"external-case-form-container\"\n *ngIf=\"{params: params$ | async, caseSettings: caseSettings$ | async} as obs\"\n>\n <h4 class=\"external-case-form-container__title\">\n {{ 'caseManagement.externalStartForm.title' | translate }}\n </h4>\n\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" [cdsLayer]=\"1\">\n <cds-toggle\n valtimoReadOnly\n [isReadOnly]=\"isReadOnly\"\n [disabled]=\"isReadOnly\"\n formControlName=\"hasExternalForm\"\n label=\"{{ 'caseManagement.externalStartForm.enabledToggle' | translate }}\"\n onText=\"{{ 'caseManagement.externalStartForm.enabledToggleOn' | translate }}\"\n offText=\"{{ 'caseManagement.externalStartForm.enabledToggleOff' | translate }}\"\n [attr.data-test-id]=\"testIds.hasExternalForm\"\n ></cds-toggle>\n\n <cds-label>\n {{ 'caseManagement.externalStartForm.externalUrl' | translate }}\n\n <input\n cdsText\n valtimoReadOnly\n [isReadOnly]=\"isReadOnly\"\n type=\"text\"\n formControlName=\"externalFormUrl\"\n [attr.data-test-id]=\"testIds.externalFormUrl\"\n [placeholder]=\"\n isReadOnly ? '-' : ('caseManagement.externalStartForm.externalUrlPlaceholder' | translate)\n \"\n maxlength=\"512\"\n />\n </cds-label>\n\n <cds-label>\n {{ 'caseManagement.externalStartForm.description' | translate }}\n\n <input\n cdsText\n valtimoReadOnly\n [isReadOnly]=\"isReadOnly\"\n type=\"text\"\n formControlName=\"description\"\n [attr.data-test-id]=\"testIds.externalFormDescription\"\n [placeholder]=\"\n isReadOnly ? '-' : ('caseManagement.externalStartForm.descriptionPlaceholder' | translate)\n \"\n maxlength=\"512\"\n />\n </cds-label>\n\n <button\n *ngIf=\"!isReadOnly\"\n cdsButton=\"primary\"\n type=\"submit\"\n [disabled]=\"!form.valid || isReadOnly\"\n [attr.data-test-id]=\"testIds.externalFormSave\"\n >\n {{ 'caseManagement.externalStartForm.apply' | translate }}\n </button>\n </form>\n</cds-tile>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Inject,\n Optional,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {map, Observable, switchMap} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentDefinition, DocumentService} from '@valtimo/document';\nimport {CASE_CONFIGURATION_EXTENSIONS_TOKEN, EditPermissionsService} from '@valtimo/shared';\nimport {CaseManagementService} from '../../../../services';\nimport {MuuriItemComponent} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-general',\n templateUrl: './case-management-general.component.html',\n styleUrl: './case-management-general.component.scss',\n})\nexport class CaseManagementGeneralComponent implements AfterViewInit {\n @ViewChild('extensions', {read: ViewContainerRef})\n private _extensions: ViewContainerRef;\n\n public readonly params$: Observable<any> | undefined = this.route.parent?.params.pipe(\n map(({caseDefinitionKey, caseDefinitionVersionTag}) => ({\n caseDefinitionKey: caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionVersionTag,\n }))\n );\n\n public readonly documentDefinition$: Observable<DocumentDefinition> = this.params$.pipe(\n switchMap(({caseDefinitionKey}) =>\n this.documentService.getDocumentDefinitionForManagement(caseDefinitionKey)\n )\n );\n\n public readonly isReadOnly$: Observable<boolean> = this.params$.pipe(\n switchMap(params =>\n this.editPermissionsService\n .hasEditPermissions(params?.caseDefinitionKey, params?.caseDefinitionVersionTag)\n .pipe(map(hasPermissions => !hasPermissions))\n )\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly cdr: ChangeDetectorRef,\n private readonly caseManagementService: CaseManagementService,\n @Optional()\n @Inject(CASE_CONFIGURATION_EXTENSIONS_TOKEN)\n private readonly caseConfigurationExtensionComponents: Type<any>[],\n private readonly editPermissionsService: EditPermissionsService\n ) {}\n\n public ngAfterViewInit(): void {\n this.renderExtensions();\n }\n\n private renderExtensions(): void {\n if (\n !Array.isArray(this.caseConfigurationExtensionComponents) ||\n this.caseConfigurationExtensionComponents.length === 0\n ) {\n return;\n }\n\n this.caseConfigurationExtensionComponents.forEach(extensionComponent => {\n const itemRef = this._extensions.createComponent(MuuriItemComponent);\n\n const wrapperInstance = itemRef.instance;\n const container = wrapperInstance.container;\n\n const componentRef = container.createComponent(extensionComponent);\n componentRef.setInput('isReadOnly$', this.isReadOnly$);\n });\n\n this.cdr.detectChanges();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n isReadOnly: isReadOnly$ | async,\n } as obs\"\n>\n @if (obs.isReadOnly) {\n <cds-notification\n class=\"read-only-notification\"\n [notificationObj]=\"{\n type: 'info',\n title: 'caseManagement.tabs.generalTab.readOnlyNotification.title' | translate,\n message: 'caseManagement.tabs.generalTab.readOnlyNotification.message' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n >\n </cds-notification>\n }\n\n <div class=\"case-management-general-tab\" muuri [columnMinWidth]=\"350\">\n <ng-template #extensions></ng-template>\n\n <valtimo-muuri-item>\n <valtimo-case-management-case-handler\n muuriItem\n [isReadOnly]=\"obs.isReadOnly\"\n *ngIf=\"documentDefinition$ | async\"\n ></valtimo-case-management-case-handler>\n </valtimo-muuri-item>\n\n <valtimo-muuri-item>\n <valtimo-case-management-external-start-form [isReadOnly]=\"obs.isReadOnly\">\n </valtimo-case-management-external-start-form>\n </valtimo-muuri-item>\n </div>\n</ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {CARBON_CONSTANTS, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {TabManagementService} from '../../../../../../services';\nimport {ApiTabItem, ApiTabType} from '@valtimo/case';\nimport {ButtonModule, InputModule, ModalModule} from 'carbon-components-angular';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-case-management-widget-tab-edit-modal',\n templateUrl: './case-management-widget-tab-edit-modal.html',\n styleUrls: ['./case-management-widget-tab-edit-modal.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n ReactiveFormsModule,\n InputModule,\n ButtonModule,\n ],\n})\nexport class CaseManagementWidgetTabEditModalComponent implements OnInit, OnDestroy {\n @Input() public showModal$: Observable<boolean>;\n @Input() public tabItem: ApiTabItem;\n @Output() public saveEvent = new EventEmitter<any>();\n\n public readonly open$ = new BehaviorSubject<boolean>(false);\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n public readonly editWidgetTabForm = this.fb.group({\n name: this.fb.control('', [Validators.required]),\n });\n\n public get widgetTabName(): AbstractControl<string | null, string | null> | null {\n return this.editWidgetTabForm.get('name');\n }\n\n private _openSubscription!: Subscription;\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly tabManagementService: TabManagementService\n ) {}\n\n public ngOnInit(): void {\n this.openOpenSubscription();\n }\n\n public ngOnDestroy(): void {\n this._openSubscription?.unsubscribe();\n }\n\n public closeModal(): void {\n this.open$.next(false);\n\n setTimeout(() => {\n this.editWidgetTabForm.reset();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public saveWidgetTab(): void {\n this.disable();\n\n this.tabManagementService\n .editTab(\n {\n key: this.tabItem.key,\n name: this.widgetTabName?.value,\n contentKey: '-',\n type: ApiTabType.WIDGETS,\n },\n this.tabItem.key\n )\n .subscribe(() => {\n this.saveEvent.emit();\n this.closeModal();\n });\n }\n\n private setEditWidgetTabForm(): void {\n if (this.tabItem) {\n this.widgetTabName?.setValue(this.tabItem.name ?? '');\n }\n\n this.enable();\n }\n\n private openOpenSubscription(): void {\n this._openSubscription = this.showModal$.subscribe(show => {\n this.setEditWidgetTabForm();\n this.open$.next(show);\n });\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{disabled: disabled$ | async} as obs\"\n valtimoCdsModal\n [open]=\"open$ | async\"\n showFooter=\"true\"\n title=\"{{ 'widgetTabManagement.tab.editWidgetTab' | translate }}\"\n class=\"edit-widget-tab-modal\"\n (close)=\"closeModal()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'widgetTabManagement.tab.editWidgetTab' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"editWidgetTabFormTemplate;context:{obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"editWidgetTabButtons;context:{obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #editWidgetTabFormTemplate let-obs=\"obs\">\n <form *ngIf=\"editWidgetTabForm\" [formGroup]=\"editWidgetTabForm\" class=\"widget-tab-modal__form\">\n <cds-label [disabled]=\"obs.disabled\" [invalid]=\"widgetTabName.dirty && widgetTabName.invalid\">\n {{ 'widgetTabManagement.tab.form.tabName' | translate }}\n\n <input\n cdsText\n [disabled]=\"obs.disabled\"\n [invalid]=\"widgetTabName.dirty && widgetTabName.invalid\"\n formControlName=\"name\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n </form>\n</ng-template>\n\n<ng-template #editWidgetTabButtons let-obs=\"obs\">\n <button cdsButton=\"secondary\" [disabled]=\"obs.disabled\" (click)=\"closeModal()\">\n {{ 'widgetTabManagement.tab.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"editWidgetTabForm.invalid || obs.disabled\"\n (click)=\"saveWidgetTab()\"\n >\n {{ 'widgetTabManagement.tab.save' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Edit16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {ApiTabItem} from '@valtimo/case';\nimport {\n BreadcrumbService,\n PageHeaderService,\n PageTitleService,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {\n IWidgetManagementService,\n ManagementWidgetDetailsComponent,\n WIDGET_MANAGEMENT_SERVICE,\n WidgetManagementComponent,\n WidgetType,\n WidgetWizardService,\n} from '@valtimo/layout';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {ButtonModule, IconModule, IconService, TabsModule} from 'carbon-components-angular';\nimport moment from 'moment/moment';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, switchMap, tap} from 'rxjs';\n\nimport {TabManagementService, CaseWidgetManagementApiService} from '../../../../../../services';\nimport {CaseManagementWidgetTabEditModalComponent} from '../case-management-widget-tab-edit-modal/case-management-widget-tab-edit-modal.component';\n\n@Component({\n templateUrl: './case-management-widget-tab.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n CaseManagementWidgetTabEditModalComponent,\n RenderInPageHeaderDirective,\n ButtonModule,\n IconModule,\n TabsModule,\n WidgetManagementComponent,\n ],\n providers: [\n {\n provide: WIDGET_MANAGEMENT_SERVICE,\n useClass: CaseWidgetManagementApiService,\n },\n ],\n})\nexport class CaseManagementWidgetTabComponent\n extends ManagementWidgetDetailsComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n public readonly caseManagementRouteParams$ = getCaseManagementRouteParams(this.route).pipe(\n tap(params => {\n this.tabManagementService.setParams(params);\n this.tabManagementService.loadTabs();\n }),\n map(\n (params: CaseManagementParams | undefined) =>\n params ?? {caseDefinitionKey: '', caseDefinitionVersionTag: ''}\n )\n );\n\n public readonly tabWidgetKey$: Observable<string> = this.route.params.pipe(\n map(params => params.key || '')\n );\n\n public readonly params$ = combineLatest([\n this.caseManagementRouteParams$,\n this.tabWidgetKey$,\n ]).pipe(\n filter(([caseManagementRouteParams, key]) => !!caseManagementRouteParams && !!key),\n map(([caseManagementRouteParams, key]) => ({\n ...caseManagementRouteParams,\n key,\n }))\n );\n\n private readonly _refreshWidgetTabSubject$ = new BehaviorSubject<null>(null);\n public readonly showEditWidgetTabModal$ = new BehaviorSubject<boolean>(false);\n public readonly currentWidgetTabItem$: Observable<ApiTabItem> = combineLatest([\n this.params$,\n this.translateService.stream('key'),\n this._refreshWidgetTabSubject$,\n ]).pipe(\n switchMap(([params]) => this.tabManagementService.getTab(params.key)),\n tap(tabItem => {\n const title =\n tabItem.name ||\n this.translateService.instant(`widgetTabManagement.metadata.${tabItem.key}`);\n this.pageTitleService.setCustomPageTitle(title);\n this.pageTitleService.setCustomPageSubtitle(\n this.translateService.instant('widgetTabManagement.tab.metadata', {\n createdBy: tabItem?.createdBy || '-',\n createdOn: !!tabItem?.createdOn\n ? moment(tabItem?.createdOn).format('DD MMM YYYY HH:mm')\n : '-',\n key: tabItem.key,\n })\n );\n })\n );\n\n public readonly currentWidgetTab$ = combineLatest([\n this.caseWidgetManagementApiService.params$,\n this._refreshWidgetTabSubject$,\n ]).pipe(\n filter(([params]) => !!params),\n switchMap(() => this.caseWidgetManagementApiService.getWidgetConfiguration())\n );\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n public readonly AVAILABLE_WIDGET_TYPES = [\n WidgetType.FIELDS,\n WidgetType.COLLECTION,\n WidgetType.CUSTOM,\n WidgetType.FORMIO,\n WidgetType.TABLE,\n WidgetType.MAP,\n ];\n\n constructor(\n protected readonly widgetWizardService: WidgetWizardService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly iconService: IconService,\n private readonly pageTitleService: PageTitleService,\n private readonly route: ActivatedRoute,\n private readonly tabManagementService: TabManagementService,\n @Inject(WIDGET_MANAGEMENT_SERVICE)\n private readonly caseWidgetManagementApiService: IWidgetManagementService<\n CaseManagementParams & {key: string}\n >,\n private readonly translateService: TranslateService,\n private readonly pageHeaderService: PageHeaderService\n ) {\n super(widgetWizardService);\n }\n\n public ngOnInit(): void {\n this.setContext('case');\n this.pageTitleService.enableReset();\n }\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([Edit16]);\n this.initBreadcrumbs();\n }\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n this.pageTitleService.disableReset();\n }\n\n public editWidgetTab(): void {\n this.showEditWidgetTabModal();\n }\n\n private showEditWidgetTabModal(): void {\n this.showEditWidgetTabModal$.next(true);\n }\n\n public refreshWidgetTab(): void {\n this._refreshWidgetTabSubject$.next(null);\n }\n\n private initBreadcrumbs(): void {\n this.caseManagementRouteParams$.subscribe(params => {\n const route = `/case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}`;\n\n this.breadcrumbService.setThirdBreadcrumb({\n route: [route],\n content: `${params.caseDefinitionKey} (${params.caseDefinitionVersionTag})`,\n href: route,\n });\n\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`${route}/case-details`],\n content: this.translateService.instant('caseManagement.tabs.caseDetailsTab.title'),\n href: `${route}/case-details`,\n });\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-management\n [availableWidgetTypes]=\"AVAILABLE_WIDGET_TYPES\"\n [params]=\"params$ | async\"\n></valtimo-widget-management>\n\n<valtimo-case-management-widget-tab-edit-modal\n [tabItem]=\"currentWidgetTabItem$ | async\"\n [showModal$]=\"showEditWidgetTabModal$\"\n (saveEvent)=\"refreshWidgetTab()\"\n>\n</valtimo-case-management-widget-tab-edit-modal>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"tertiary\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n (click)=\"editWidgetTab()\"\n >\n {{ 'widgetTabManagement.tab.editButton' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nenum UPLOAD_STATUS {\n ACTIVE = 'active',\n ERROR = 'error',\n FINISHED = 'finished',\n}\n\nenum UPLOAD_STEP {\n ACCESS_CONTROL = 'accessControl',\n DASHBOARD = 'dashboard',\n FILE_SELECT = 'fileSelect',\n FILE_UPLOAD = 'fileUpload',\n PLUGINS = 'plugins',\n}\n\nconst STEPS = [\n UPLOAD_STEP.PLUGINS,\n UPLOAD_STEP.FILE_SELECT,\n UPLOAD_STEP.FILE_UPLOAD,\n UPLOAD_STEP.ACCESS_CONTROL,\n UPLOAD_STEP.DASHBOARD,\n];\n\nexport {STEPS, UPLOAD_STATUS, UPLOAD_STEP};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, Input} from '@angular/core';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-upload-step',\n templateUrl: './case-management-upload-step.component.html',\n styleUrls: ['./case-management-upload-step.component.scss'],\n})\nexport class CaseManagementUploadStepComponent {\n @Input() illustration!: string;\n @Input() message!: string;\n @Input() title!: string;\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"valtimo-upload-step__content\">\n <div class=\"valtimo-upload-step__title\">{{ title }}</div>\n\n <div class=\"valtimo-upload-step__message\">{{ message }}</div>\n</div>\n\n<img [src]=\"illustration\" alt=\"{{ illustration }}\" class=\"valtimo-upload-step__illustration\" />\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n signal,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {WarningFilled16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {DocumentDefinitionCreateRequest, DocumentService} from '@valtimo/document';\nimport {FileItem, IconService, NotificationContent} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, switchMap, take} from 'rxjs';\nimport {STEPS, UPLOAD_STATUS, UPLOAD_STEP} from './case-management-upload.constants';\nimport {CaseManagementService} from '../../services';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {CASE_MANAGEMENT_UPLOAD_TEST_IDS} from '../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-upload',\n templateUrl: './case-management-upload.component.html',\n styleUrls: ['./case-management-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementUploadComponent implements OnInit, OnDestroy {\n @Input() open = false;\n @Output() closeModal = new EventEmitter<boolean>();\n\n protected readonly testIds = CASE_MANAGEMENT_UPLOAD_TEST_IDS;\n\n public acceptedFiles: string[] = ['.json', '.zip'];\n public selectedFile: File | null;\n\n private readonly _disabled$ = new BehaviorSubject<boolean>(true);\n\n public readonly UPLOAD_STEP = UPLOAD_STEP;\n public readonly UPLOAD_STATUS = UPLOAD_STATUS;\n public readonly activeStep$ = new BehaviorSubject<UPLOAD_STEP>(UPLOAD_STEP.PLUGINS);\n public readonly backButtonEnabled$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.ACCESS_CONTROL, UPLOAD_STEP.DASHBOARD].includes(\n activeStep\n )\n )\n );\n public readonly isStepAfterUpload$: Observable<boolean> = this.activeStep$.pipe(\n map(\n (activeStep: UPLOAD_STEP) =>\n ![UPLOAD_STEP.PLUGINS, UPLOAD_STEP.FILE_SELECT].includes(activeStep)\n )\n );\n public readonly showCloseButton$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.PLUGINS, UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.FILE_UPLOAD].includes(activeStep)\n )\n );\n public readonly $warningChecked = signal(false);\n\n public readonly nextButtonDisabled$: Observable<boolean> = combineLatest([\n this.activeStep$,\n this._disabled$,\n toObservable(this.$warningChecked),\n ]).pipe(\n map(([activeStep, disabled, warningChecked]) => {\n const warningNotChecked = activeStep === UPLOAD_STEP.FILE_SELECT && !warningChecked;\n return warningNotChecked || (activeStep !== UPLOAD_STEP.PLUGINS && disabled);\n })\n );\n public readonly notificationObj$: Observable<NotificationContent> = combineLatest([\n this.translateService.stream('interface.warning'),\n this.translateService.stream('caseManagement.importDefinition.overwriteWarning'),\n ]).pipe(\n map(([title, message]) => ({\n type: 'warning',\n title,\n message,\n showClose: false,\n lowContrast: true,\n }))\n );\n public readonly showCheckboxError$ = new BehaviorSubject<boolean>(false);\n public readonly uploadStatus$ = new BehaviorSubject<UPLOAD_STATUS>(UPLOAD_STATUS.ACTIVE);\n\n public form: FormGroup = this.fb.group({\n file: this.fb.control(new Set<any>(), [Validators.required]),\n });\n\n private readonly _importFile$ = new BehaviorSubject<string | FormData>('');\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly caseManagementService: CaseManagementService,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(WarningFilled16);\n }\n\n public ngOnInit(): void {\n const control: AbstractControl | null = this.form.get('file');\n if (!control) {\n return;\n }\n\n this._subscriptions.add(\n this.form.get('file').valueChanges.subscribe((fileSet: Set<FileItem>) => {\n const [fileItem] = fileSet;\n if (!fileItem) {\n this._disabled$.next(true);\n this.showCheckboxError$.next(false);\n this.$warningChecked.set(false);\n return;\n }\n\n if (fileItem.file.type === 'application/json') {\n this.setJsonFile(fileItem);\n return;\n }\n\n this.setZipFile(fileItem);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.resetModal();\n }\n\n public onCloseModal(definitionUploaded?: boolean): void {\n this.closeModal.emit(definitionUploaded ?? false);\n this.resetModal();\n }\n\n public onBackClick(activeStep: UPLOAD_STEP): void {\n const prevIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) - 1;\n if (prevIndex === -1) {\n return;\n }\n\n this.activeStep$.next(STEPS[prevIndex]);\n }\n\n public onNextClick(activeStep: UPLOAD_STEP): void {\n const nextIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) + 1;\n if (nextIndex === STEPS.length) {\n return;\n }\n\n if (activeStep === UPLOAD_STEP.FILE_SELECT && !this.$warningChecked()) {\n this.showCheckboxError$.next(true);\n return;\n }\n\n this.activeStep$.next(STEPS[nextIndex]);\n if (STEPS[nextIndex] !== UPLOAD_STEP.FILE_UPLOAD) {\n return;\n }\n\n this.uploadDefinition();\n }\n\n public onCheckedChange(checked: boolean): void {\n this.$warningChecked.set(checked);\n\n if (!checked) {\n return;\n }\n\n this.showCheckboxError$.next(false);\n }\n\n private setJsonFile(fileItem: FileItem | undefined): void {\n const file = fileItem?.file;\n\n if (!file) {\n this.clearJsonString();\n return;\n }\n const reader = new FileReader();\n\n reader.onloadend = () => {\n const result = (reader.result ?? '').toString();\n if (this.stringIsValidJson(result)) {\n this._disabled$.next(false);\n this._importFile$.next(result);\n return;\n }\n\n this.clearJsonString();\n this.setErrorState(fileItem);\n };\n\n reader.readAsText(file);\n }\n\n private setZipFile(fileItem: FileItem): void {\n const file = fileItem?.file;\n\n if (!file) {\n this._importFile$.next('');\n return;\n }\n\n const blob = new Blob([fileItem.file], {type: fileItem.file.type});\n const fd = new FormData();\n fd.append('file', blob, fileItem.file.name);\n this._importFile$.next(fd);\n this._disabled$.next(false);\n }\n\n private uploadDefinition(): void {\n this._disabled$.next(true);\n this._importFile$\n .pipe(\n switchMap((file: string | FormData) =>\n file instanceof FormData\n ? this.caseManagementService.importDocumentDefinitionZip(file)\n : this.documentService.createDocumentDefinitionForManagement(\n new DocumentDefinitionCreateRequest(file)\n )\n ),\n take(1)\n )\n .subscribe({\n next: () => {\n this._disabled$.next(false);\n this.uploadStatus$.next(UPLOAD_STATUS.FINISHED);\n },\n error: () => {\n this.uploadStatus$.next(UPLOAD_STATUS.ERROR);\n this._disabled$.next(false);\n },\n });\n }\n\n private clearJsonString(): void {\n this._importFile$.next('');\n }\n\n private stringIsValidJson(string: string) {\n try {\n JSON.parse(string);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n private setErrorState(fileItem: FileItem): void {\n this._disabled$.next(true);\n fileItem.invalid = true;\n fileItem.invalidTitle = this.translateService.instant(\n 'caseManagement.importDefinition.invalidJsonError.title'\n );\n fileItem.invalidText = this.translateService.instant(\n 'caseManagement.importDefinition.invalidJsonError.text'\n );\n }\n\n private resetModal(): void {\n setTimeout(() => {\n this.activeStep$.next(UPLOAD_STEP.PLUGINS);\n this.uploadStatus$.next(UPLOAD_STATUS.ACTIVE);\n this.showCheckboxError$.next(false);\n this.form.reset({file: new Set<any>()});\n this._importFile$.next('');\n this._disabled$.next(true);\n this.$warningChecked.set(false);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async,\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'caseManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section\n [ngSwitch]=\"obs.activeStep\"\n [cdsLayer]=\"1\"\n cdsModalContent\n class=\"valtimo-definition-uploader__content\"\n >\n <ng-template ngSwitchDefault>\n <valtimo-case-management-upload-step\n [message]=\"\n 'caseManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"'caseManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-case-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'caseManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'caseManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'caseManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n [attr.data-test-id]=\"testIds.fileUploader\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <cds-inline-notification\n data-test-id=\"uploadWarningNotification\"\n [notificationObj]=\"obs.notificationObj\"\n ></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n data-test-id=\"uploadWarningCheckbox\"\n [attr.data-test-id]=\"testIds.uploadWarningCheckbox\"\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'caseManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'caseManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'caseManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"'caseManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n [attr.data-test-id]=\"testIds.cancelButton\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n [attr.data-test-id]=\"testIds.nextButton\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'caseManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n [attr.data-test-id]=\"testIds.finishButton\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {Edit16, Information16} from '@carbon/icons';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {DocumentService, TemplatePayload} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, take, tap} from 'rxjs';\nimport * as semver from 'semver';\nimport {CASE_MANAGEMENT_CREATE_TEST_IDS} from '../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-create',\n styleUrls: ['./case-management-create.component.scss'],\n templateUrl: './case-management-create.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseManagementCreateComponent {\n @Input() open = false;\n @Output() closeModal = new EventEmitter<TemplatePayload | null>();\n\n protected readonly testIds = CASE_MANAGEMENT_CREATE_TEST_IDS;\n\n public formGroup: FormGroup = this.fb.group({\n name: this.fb.control('', Validators.required),\n caseDefinitionKey: this.fb.control({value: '', disabled: true}, [\n Validators.required,\n Validators.pattern('[A-Za-z0-9-]*'),\n ]),\n caseDefinitionVersion: this.fb.control('', Validators.required),\n description: this.fb.control(''),\n });\n\n private readonly _editActive$ = new BehaviorSubject<boolean>(false);\n public readonly editActive$ = this._editActive$.pipe(\n tap((editActive: boolean) => {\n const caseDefinitionKey: AbstractControl | null = this.formGroup.get('caseDefinitionKey');\n if (!caseDefinitionKey) {\n return;\n }\n\n if (editActive) {\n caseDefinitionKey.enable();\n return;\n }\n caseDefinitionKey.disable();\n })\n );\n public readonly editDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly idError$ = new BehaviorSubject<string | null>(null);\n public readonly versionError$ = new BehaviorSubject<string | null>(null);\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Edit16, Information16]);\n }\n\n public onCloseModal(definitionCreated?: boolean): void {\n if (!definitionCreated) {\n this.closeModal.emit(null);\n this.resetForm();\n return;\n }\n\n const {caseDefinitionKey, name, caseDefinitionVersion, description} = this.formGroup.controls;\n if (!caseDefinitionKey || !name || !caseDefinitionVersion) {\n return;\n }\n\n if (!semver.valid(caseDefinitionVersion.value)) {\n this.versionError$.next('caseManagement.createDefinition.versionError');\n return;\n }\n\n this.documentService\n .getDocumentDefinition(caseDefinitionKey.value, true)\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.idError$.next('caseManagement.createDefinition.idError');\n this.editDisabled$.next(false);\n this.enableEdit();\n },\n error: () => {\n this.closeModal.emit({\n name: name.value,\n caseDefinitionKey: caseDefinitionKey.value,\n caseDefinitionVersion: caseDefinitionVersion.value,\n description: description.value,\n });\n this.resetForm();\n },\n });\n }\n\n public enableEdit(): void {\n this._editActive$.next(true);\n }\n\n public onFocusOut(): void {\n const {caseDefinitionKey, name, caseDefinitionVersion} = this.formGroup.controls;\n if (!caseDefinitionKey || !name || !caseDefinitionVersion) {\n return;\n }\n\n caseDefinitionKey.patchValue(name.value.replace(/\\W+/g, '-').replace(/\\-$/, '').toLowerCase());\n this.editDisabled$.next(false);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.formGroup.reset();\n this.idError$.next(null);\n this._editActive$.next(false);\n this.editDisabled$.next(true);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n editDisabled: editDisabled$ | async,\n idError: idError$ | async,\n versionError: versionError$ | async,\n editActive: editActive$ | async,\n } as obs\"\n [open]=\"open\"\n showFooter=\"true\"\n valtimoCdsModal\n class=\"valtimo-definition-create\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'caseManagement.createDefinition.modalTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <form\n [formGroup]=\"formGroup\"\n cdsModalContent\n [cdsLayer]=\"1\"\n class=\"valtimo-definition-create__content\"\n >\n <cds-label>\n {{ 'caseManagement.createDefinition.name' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.nameTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"name\"\n cdsText\n placeholder=\"{{ 'caseManagement.createDefinition.namePlaceholder' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n [attr.data-test-id]=\"testIds.nameInput\"\n (focusout)=\"onFocusOut()\"\n />\n </cds-label>\n\n <cds-label [invalid]=\"!!obs.idError\" [invalidText]=\"obs.idError | translate\">\n {{ 'caseManagement.createDefinition.key' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.keyTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <div class=\"valtimo-definition-create__name\">\n <input\n cdsText\n [attr.data-test-id]=\"testIds.keyInput\"\n formControlName=\"caseDefinitionKey\"\n [invalid]=\"!!obs.idError\"\n [placeholder]=\"'caseManagement.createDefinition.keyPlaceholder' | translate\"\n [attr.modal-primary-focus]=\"true\"\n />\n\n <button\n *ngIf=\"!obs.editActive\"\n cdsButton=\"secondary\"\n [attr.data-test-id]=\"testIds.keyEditButton\"\n [disabled]=\"obs.editDisabled\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"enableEdit()\"\n >\n <svg cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </div>\n </cds-label>\n\n <cds-label [invalid]=\"!!obs.versionError\" [invalidText]=\"obs.versionError | translate\">\n {{ 'caseManagement.createDefinition.version' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.versionTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <input\n formControlName=\"caseDefinitionVersion\"\n [attr.data-test-id]=\"testIds.versionInput\"\n cdsText\n placeholder=\"{{ 'caseManagement.createDefinition.versionPlaceholder' | translate }}\"\n [invalid]=\"!!obs.versionError\"\n [attr.modal-primary-focus]=\"true\"\n (focusout)=\"onFocusOut()\"\n />\n </cds-label>\n\n <cds-textarea-label>\n {{ 'caseManagement.createDefinition.description' | translate }}\n\n <cds-tooltip\n [caret]=\"true\"\n [description]=\"'caseManagement.createDefinition.descriptionTooltip' | translate\"\n >\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n\n <textarea\n cdsTextArea\n formControlName=\"description\"\n [attr.data-test-id]=\"testIds.descriptionInput\"\n placeholder=\"{{ 'caseManagement.createDefinition.descriptionPlaceholder' | translate }}\"\n [rows]=\"3\"\n [cols]=\"150\"\n [attr.modal-primary-focus]=\"true\"\n (focusout)=\"onFocusOut()\"\n ></textarea>\n </cds-textarea-label>\n </form>\n\n <cds-modal-footer>\n <button [attr.data-test-id]=\"testIds.closeButton\" cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n [attr.data-test-id]=\"testIds.saveButton\"\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {AfterViewInit, Component, TemplateRef, ViewChild} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Search20, TrashCan20, Upload16} from '@carbon/icons';\nimport {ColumnConfig, MenuService, Pagination, ViewType} from '@valtimo/components';\nimport {Page, TemplatePayload} from '@valtimo/document';\nimport {EnvironmentService} from '@valtimo/shared';\nimport {IconService} from 'carbon-components-angular';\nimport moment from 'moment';\nimport {BehaviorSubject, combineLatest, map, switchMap, take} from 'rxjs';\nimport {CaseListItem} from '../../models';\nimport {CaseManagementService} from '../../services';\nimport {CASE_MANAGEMENT_LIST_TEST_IDS} from '../../constants';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-list',\n templateUrl: './case-management-list.component.html',\n styleUrls: ['./case-management-list.component.scss'],\n})\nexport class CaseManagementListComponent implements AfterViewInit {\n @ViewChild('statusColumnTemplate') statusColumnTemplate: TemplateRef<any>;\n\n protected readonly testIds = CASE_MANAGEMENT_LIST_TEST_IDS;\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly pagination$ = new BehaviorSubject<Pagination | null>(null);\n\n public readonly canUpdateGlobalConfiguration$ =\n this.environmentService.canUpdateGlobalConfiguration();\n\n public readonly caseListItems$ = combineLatest([\n this.route.queryParams,\n this.canUpdateGlobalConfiguration$,\n this._refresh$,\n ]).pipe(\n switchMap(([params, canUpdate]) =>\n this.caseManagementService.getCaseDefinitions({\n ...params,\n final: canUpdate ? '' : true,\n })\n ),\n map((page: Page<CaseListItem>) => {\n this.pagination$.next({\n size: page.size,\n page: page.number + 1,\n collectionSize: +page.totalElements,\n });\n return page.content;\n })\n );\n\n public pagination: Pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n };\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n\n public readonly showCreateModal$ = new BehaviorSubject<boolean>(false);\n public readonly showUploadModal$ = new BehaviorSubject<boolean>(false);\n\n private _paginationInitialized = false;\n constructor(\n private readonly caseManagementService: CaseManagementService,\n private readonly iconService: IconService,\n private readonly menuService: MenuService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly environmentService: EnvironmentService\n ) {\n this.iconService.registerAll([Search20, TrashCan20, Upload16]);\n }\n\n public ngAfterViewInit(): void {\n this.fields$.next([\n {key: 'name', label: 'caseManagement.listColumns.name'},\n {key: 'caseDefinitionKey', label: 'caseManagement.listColumns.key'},\n {key: 'caseDefinitionVersionTag', label: 'caseManagement.listColumns.version'},\n {\n key: 'status',\n label: 'caseManagement.listColumns.status',\n viewType: ViewType.TEMPLATE,\n template: this.statusColumnTemplate,\n },\n ]);\n }\n\n public onCloseUploadModal(definitionUploaded: boolean): void {\n this.showUploadModal$.next(false);\n\n if (!definitionUploaded) {\n return;\n }\n this._refresh$.next(null);\n this.menuService.reload();\n }\n\n public onCloseCreateModal(templatePayload: TemplatePayload | null): void {\n this.showCreateModal$.next(false);\n if (!templatePayload) {\n return;\n }\n\n this.caseManagementService\n .createDraftVersion(templatePayload)\n .pipe(take(1))\n .subscribe((response: any) => {\n this.router.navigate([\n '/case-management/case',\n response.caseDefinitionKey,\n 'version',\n response.caseDefinitionVersionTag,\n ]);\n this._refresh$.next(null);\n this.menuService.reload();\n });\n }\n\n public paginationClicked(page: number): void {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {page: page - 1},\n queryParamsHandling: 'merge',\n });\n }\n\n public paginationSet(size: number): void {\n if (!this._paginationInitialized) {\n this._paginationInitialized = true;\n return;\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {size},\n queryParamsHandling: 'merge',\n });\n }\n\n public redirectToDetails(caseListItem: CaseListItem): void {\n this.router.navigate([\n '/case-management/case',\n caseListItem.caseDefinitionKey,\n 'version',\n caseListItem.caseDefinitionVersionTag,\n ]);\n }\n\n public showUploadModal(): void {\n this.showUploadModal$.next(true);\n }\n\n public showCreateModal(): void {\n this.showCreateModal$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [items]=\"caseListItems$ | async\"\n [fields]=\"fields$ | async\"\n (rowClicked)=\"redirectToDetails($event)\"\n [pagination]=\"pagination$ | async\"\n paginationIdentifier=\"caseManagementList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n>\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"importCaseDefinitionButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"importCaseDefinitionButton\"\n [description]=\"'caseManagement.noResults.description' | translate\"\n [title]=\"'caseManagement.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #loading>\n <valtimo-carbon-list loading=\"true\"></valtimo-carbon-list>\n</ng-template>\n\n<valtimo-case-management-upload\n [open]=\"showUploadModal$ | async\"\n (closeModal)=\"onCloseUploadModal($event)\"\n></valtimo-case-management-upload>\n\n<valtimo-case-management-create\n [open]=\"showCreateModal$ | async\"\n (closeModal)=\"onCloseCreateModal($event)\"\n></valtimo-case-management-create>\n\n<ng-template #statusColumnTemplate let-data=\"data\">\n @if (!data?.item?.active) {\n <cds-tag type=\"purple\" class=\"cds-tag--no-margin\">\n {{ 'caseManagement.inactive' | translate }}\n </cds-tag>\n }\n @if (data?.item?.hasConfigurationIssues) {\n <cds-tag type=\"red\" class=\"cds-tag--no-margin\">\n {{ 'caseManagement.needsConfiguration' | translate }}\n </cds-tag>\n }\n</ng-template>\n\n<ng-template #importCaseDefinitionButton>\n <div class=\"valtimo-case-management-list__actions\">\n <button [attr.data-test-id]=\"testIds.uploadButton\" cdsButton=\"ghost\" (click)=\"showUploadModal()\">\n {{ 'Upload' | translate }}\n\n <svg cdsIcon=\"upload\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n *ngIf=\"canUpdateGlobalConfiguration$ | async\"\n [attr.data-test-id]=\"testIds.createButton\"\n cdsButton=\"primary\"\n (click)=\"showCreateModal()\"\n >\n {{ 'interface.create' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Inject, NgModule, Optional} from '@angular/core';\nimport {Route, Router, RouterModule, Routes} from '@angular/router';\nimport {pendingChangesGuard} from '@valtimo/components';\nimport {\n DecisionListComponent,\n DecisionManagementRouteData,\n DecisionModelerComponent,\n} from '@valtimo/decision';\nimport {FormFlowEditorComponent, FormFlowOverviewComponent} from '@valtimo/form-flow-management';\nimport {\n FormManagementComponent,\n FormManagementEditComponent,\n FormManagementRouteData,\n} from '@valtimo/form-management';\nimport {\n ProcessManagementBuilderComponent,\n ProcessManagementComponent,\n ProcessManagementRouteData,\n} from '@valtimo/process-management';\nimport {AuthGuardService} from '@valtimo/security';\n\nimport {CASE_MANAGEMENT_TAB_TOKEN, CaseManagementTabConfig, ROLE_ADMIN} from '@valtimo/shared';\nimport {TaskManagementDetailComponent} from '@valtimo/task-management';\nimport {CaseManagementCaseDetailComponent} from './components/case-management-case-detail/case-management-case-detail.component';\nimport {CaseManagementCaseListComponent} from './components/case-management-case-list/case-management-case-list.component';\nimport {CaseManagementDeploymentComponent} from './components/case-management-deployment/case-management-deployment.component';\nimport {CaseManagementDetailComponent} from './components/case-management-detail/case-management-detail.component';\nimport {CaseManagementDocumentDefinitionComponent} from './components/case-management-detail/tabs/case-management-document-definition/case-management-document-definition.component';\nimport {CaseManagementGeneralComponent} from './components/case-management-detail/tabs/case-management-general/case-management-general.component';\nimport {CaseManagementWidgetTabComponent} from './components/case-management-detail/tabs/case-management-tabs/widget-tab/case-management-widget-tab/case-management-widget-tab.component';\nimport {CaseManagementListComponent} from './components/case-management-list/case-management-list.component';\nimport {TabEnum} from './models';\n\nconst routes: Routes = [\n {\n path: 'case-management',\n component: CaseManagementListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Cases', roles: [ROLE_ADMIN]},\n },\n {\n path: 'case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag',\n component: CaseManagementDetailComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Case details',\n roles: [ROLE_ADMIN],\n id: 'caseManagementDetails',\n customPageTitle: true,\n },\n children: [\n {path: TabEnum.GENERAL, component: CaseManagementGeneralComponent},\n {path: TabEnum.DOCUMENT, component: CaseManagementDocumentDefinitionComponent},\n {\n path: TabEnum.PROCESSES,\n component: ProcessManagementComponent,\n data: {context: 'case'} as ProcessManagementRouteData,\n },\n {\n path: TabEnum.DECISIONS,\n component: DecisionListComponent,\n data: {context: 'case'} as DecisionManagementRouteData,\n },\n {path: TabEnum.CASE_LIST, component: CaseManagementCaseListComponent},\n {path: TabEnum.CASE_DETAILS, component: CaseManagementCaseDetailComponent},\n {\n path: TabEnum.FORMS,\n component: FormManagementComponent,\n data: {context: 'case'} as FormManagementRouteData,\n },\n {path: TabEnum.FORM_FLOWS, component: FormFlowOverviewComponent},\n {path: TabEnum.TASKS, component: TaskManagementDetailComponent},\n ],\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/deployment`,\n component: CaseManagementDeploymentComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Deployment', roles: [ROLE_ADMIN]},\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.FORMS}/:formDefinitionId`,\n component: FormManagementEditComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Forms',\n roles: [ROLE_ADMIN],\n context: 'case',\n customPageTitle: true,\n } as FormManagementRouteData,\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.CASE_DETAILS}/widget-tab/:key`,\n component: CaseManagementWidgetTabComponent,\n canActivate: [AuthGuardService],\n //TODO: enable when pendingChanges is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Widget tab',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n customPageSubtitle: true,\n },\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.PROCESSES}/create`,\n component: ProcessManagementBuilderComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Create new Process',\n customPageTitle: false,\n roles: [ROLE_ADMIN],\n context: 'case',\n } as ProcessManagementRouteData,\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.PROCESSES}/:processDefinitionKey`,\n component: ProcessManagementBuilderComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Process details',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n context: 'case',\n } as ProcessManagementRouteData,\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.DECISIONS}/:id`,\n component: DecisionModelerComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Process details',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n context: 'case',\n } as ProcessManagementRouteData,\n },\n {\n path: `case-management/case/:caseDefinitionKey/version/:caseDefinitionVersionTag/${TabEnum.FORM_FLOWS}/:formFlowDefinitionKey`,\n component: FormFlowEditorComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Form flow details', roles: [ROLE_ADMIN], customPageTitle: true},\n },\n];\n\n@NgModule({imports: [RouterModule.forChild(routes)], exports: [RouterModule], declarations: []})\nexport class CaseManagementRoutingModule {\n constructor(\n @Optional()\n @Inject(CASE_MANAGEMENT_TAB_TOKEN)\n private readonly caseManagementTabConfig: CaseManagementTabConfig[],\n private readonly router: Router\n ) {\n if (!this.caseManagementTabConfig) return;\n\n const detailsRoute: Route | undefined = this.router.config.find(\n (route: Route) => route.data?.id === 'caseManagementDetails'\n );\n if (!detailsRoute) return;\n detailsRoute.children?.push(\n ...this.caseManagementTabConfig.map((tabConfig: CaseManagementTabConfig) => ({\n path: tabConfig.tabRoute ?? tabConfig.translationKey,\n component: tabConfig.component,\n }))\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\nimport {CaseSettings, DocumentService} from '@valtimo/document';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-assignee',\n templateUrl: './case-management-assignee.component.html',\n styleUrls: ['./case-management-assignee.component.scss'],\n})\nexport class CaseManagementAssigneeComponent {\n readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly params$: Observable<any> | undefined = this.route.parent?.params.pipe(\n map(({caseDefinitionKey, caseDefinitionVersionTag}) => ({\n caseDefinitionKey: caseDefinitionKey,\n caseDefinitionVersionTag: caseDefinitionVersionTag,\n }))\n );\n\n public readonly currentValue$: Observable<CaseSettings> = this._refresh$.pipe(\n switchMap(() => this.params$),\n switchMap(({caseDefinitionKey, caseDefinitionVersionTag}) =>\n this.documentService.getCaseSettingsForManagement(caseDefinitionKey, caseDefinitionVersionTag)\n ),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private route: ActivatedRoute\n ) {\n this.disabled$ = new BehaviorSubject<boolean>(false);\n }\n\n updateCaseSettings(\n caseSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): void {\n this.disableInput();\n\n this.documentService\n .patchCaseSettingsForManagement(caseDefinitionKey, caseDefinitionVersionTag, caseSettings)\n .subscribe(\n () => {\n this.enableInput();\n this.refreshSettings();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n disableInput(): void {\n this.disabled$.next(true);\n }\n\n enableInput(): void {\n this.disabled$.next(false);\n }\n\n private refreshSettings(): void {\n this._refresh$.next(null);\n }\n\n toggleAssignee(\n currentSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ) {\n this.updateCaseSettings(\n {\n canHaveAssignee: !currentSettings?.canHaveAssignee,\n autoAssignTasks: currentSettings.autoAssignTasks,\n },\n caseDefinitionKey,\n caseDefinitionVersionTag\n );\n }\n\n toggleTaskAssignment(\n currentSettings: CaseSettings,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ) {\n this.updateCaseSettings(\n {\n canHaveAssignee: currentSettings?.canHaveAssignee,\n autoAssignTasks: !currentSettings.autoAssignTasks,\n },\n caseDefinitionKey,\n caseDefinitionVersionTag\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<h2 class=\"mb-4\">{{ 'caseManagement.toggleAssignee.title' | translate }}</h2>\n\n<ng-container\n *ngIf=\"{\n currentValue: currentValue$ | async,\n loading: loading$ | async,\n disabled: disabled$ | async,\n params: params$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs?.currentValue?.canHaveAssignee\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleAssignee(obs?.currentValue, obs.params?.caseDefinitionKey)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'caseManagement.toggleAssignee.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n <ng-container *ngIf=\"obs?.currentValue?.canHaveAssignee\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs?.currentValue?.autoAssignTasks\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleTaskAssignment(obs?.currentValue, obs.params?.caseDefinitionKey)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'caseManagement.toggleAutoAssignTasks.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <valtimo-spinner></valtimo-spinner>\n</ng-template>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ModalComponent} from '@valtimo/components';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {\n DocumentDefinition,\n DocumentService,\n ProcessDocumentDefinition,\n ProcessDocumentDefinitionRequest,\n} from '@valtimo/document';\nimport {ProcessDefinition, ProcessService} from '@valtimo/process';\nimport {switchMap, take} from 'rxjs';\nimport {CaseDetailService} from '../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-management-connect-modal',\n templateUrl: './case-management-connect-modal.component.html',\n styleUrls: ['./case-management-connect-modal.component.scss'],\n})\nexport class CaseManagementConnectModalComponent implements OnInit {\n @ViewChild('caseConnectModal') private readonly _modal: ModalComponent;\n @Output() public reloadProcessDocumentDefinitions = new EventEmitter<any>();\n\n public documentDefinition: DocumentDefinition | null = null;\n public processDefinitions: ProcessDefinition[];\n public newDocumentProcessDefinition: ProcessDefinition | null = null;\n public newDocumentProcessDefinitionInit = true;\n public newDocumentProcessDefinitionStartableByUser = false;\n public processDocumentDefinitionExists: any = {};\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly caseDetailService: CaseDetailService,\n private readonly notificationService: GlobalNotificationService,\n private readonly processService: ProcessService,\n private readonly translateService: TranslateService\n ) {}\n\n public loadProcessDocumentDefinitions(): void {\n if (!this.documentDefinition) {\n return;\n }\n const {blueprintKey, blueprintVersionTag} = this.documentDefinition.id.blueprintId;\n this.processDocumentDefinitionExists = {};\n this.documentService\n .findProcessDocumentDefinitionsByVersion(blueprintKey, blueprintVersionTag)\n .subscribe((processDocumentDefinitions: ProcessDocumentDefinition[]) => {\n processDocumentDefinitions.forEach(\n (processDocumentDefinition: ProcessDocumentDefinition) => {\n this.processDocumentDefinitionExists[\n processDocumentDefinition.id.processDefinitionKey\n ] = true;\n }\n );\n });\n }\n\n public loadProcessDefinitions(): void {\n this.processService\n .getProcessDefinitions()\n .subscribe((processDefinitions: ProcessDefinition[]) => {\n this.processDefinitions = processDefinitions;\n });\n }\n\n public ngOnInit(): void {\n this.loadProcessDefinitions();\n }\n\n public openModal(document: DocumentDefinition): void {\n this.documentDefinition = document;\n this.newDocumentProcessDefinition = null;\n this.newDocumentProcessDefinitionInit = true;\n this.newDocumentProcessDefinitionStartableByUser = false;\n this.loadProcessDocumentDefinitions();\n this._modal.show();\n }\n\n public submit(): void {\n if (!this.documentDefinition || !this.newDocumentProcessDefinition) {\n return;\n }\n\n const request: ProcessDocumentDefinitionRequest = {\n canInitializeDocument: this.newDocumentProcessDefinitionInit,\n caseDefinitionKey: this.documentDefinition.id.blueprintId.blueprintKey,\n caseDefinitionVersionTag: `${this.documentDefinition.id.blueprintId.blueprintVersionTag}`,\n processDefinitionKey: this.newDocumentProcessDefinition.key,\n startableByUser: this.newDocumentProcessDefinitionStartableByUser,\n };\n\n this.caseDetailService.selectedCaseDefinitionVersionTag$\n .pipe(\n switchMap((caseDefinitionVersionTag: string) =>\n this.documentService.createProcessDocumentDefinition({\n ...request,\n caseDefinitionVersionTag,\n })\n ),\n take(1)\n )\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'caseManagement.processLinkNotification.linkSuccess'\n ),\n duration: 5000,\n });\n this.reloadProcessDocumentDefinitions.emit();\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'caseManagement.processLinkNotification.linkFailure'\n ),\n duration: 5000,\n });\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #caseConnectModal\n elementId=\"caseConnectModal\"\n [title]=\"documentDefinition ? documentDefinition.schema.title : 'Document definition'\"\n subtitle=\"Connect document definition to process definition\"\n showFooter=\"true\"\n>\n <div body *ngIf=\"documentDefinition\">\n <p>\n {{ 'Select process definition for document definition' | translate }}\n <strong>{{ documentDefinition.id.name }} *</strong>\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <select class=\"form-control\" [(ngModel)]=\"newDocumentProcessDefinition\">\n <option [ngValue]=\"null\">{{ 'caseManagement.selectProcessDef' | translate }}</option>\n <option\n *ngFor=\"let processDefinition of processDefinitions\"\n [disabled]=\"processDocumentDefinitionExists[processDefinition.key]\"\n [ngValue]=\"processDefinition\"\n >\n {{ processDefinition.name }} ({{ processDefinition.key }})\n </option>\n </select>\n </div>\n <p>\n {{ 'Select options for the selected process' | translate }}\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.processCreatesCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionInit\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.processCreatesCase' | translate\n }}</span>\n </label>\n <label\n class=\"custom-control custom-checkbox custom-control-inline ml-2 pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.startableWithinCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionStartableByUser\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.startableWithinCase' | translate\n }}</span>\n </label>\n </div>\n </div>\n <div footer>\n <button\n (click)=\"submit()\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\"\n [disabled]=\"!newDocumentProcessDefinition\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</valtimo-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n CarbonMultiInputModule,\n ConfirmationModalModule,\n DropzoneModule,\n EditorModule,\n EllipsisPipe,\n FormModule,\n InputModule,\n JsonEditorComponent,\n ModalModule,\n MultiselectDropdownModule,\n MuuriDirectiveModule,\n ParagraphModule,\n ReadOnlyDirective,\n RenderInPageHeaderDirective,\n SelectModule,\n SpinnerModule,\n TableModule,\n TooltipIconModule,\n ValtimoCdsModalDirective,\n ValtimoCdsOverflowButtonDirective,\n ValuePathSelectorComponent,\n WidgetModule,\n} from '@valtimo/components';\nimport {FormManagementComponent} from '@valtimo/form-management';\nimport {ConfigModule} from '@valtimo/shared';\nimport {\n ButtonModule,\n CheckboxModule,\n ComboBoxModule,\n DialogModule,\n DropdownModule,\n FileUploaderModule,\n IconModule,\n InputModule as CarbonInputModule,\n LayerModule,\n LinkModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n NumberModule,\n ProgressBarModule,\n TabsModule,\n TagModule,\n ToggleModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {CaseManagementRoutingModule} from './case-management-routing.module';\nimport {CaseManagementAssigneeComponent} from './components/case-management-assignee/case-management-assignee.component';\nimport {CaseManagementCaseDetailComponent} from './components/case-management-case-detail/case-management-case-detail.component';\nimport {CaseManagementCaseListComponent} from './components/case-management-case-list/case-management-case-list.component';\nimport {CaseManagementConnectModalComponent} from './components/case-management-connect-modal/case-management-connect-modal.component';\nimport {CaseManagementCreateDraftVersionComponent} from './components/case-management-create-draft-version/case-management-create-draft-version.component';\nimport {CaseManagementCreateComponent} from './components/case-management-create/case-management-create.component';\nimport {CaseManagementDeploymentComponent} from './components/case-management-deployment/case-management-deployment.component';\nimport {CaseManagementDetailActionsComponent} from './components/case-management-detail-actions/case-management-detail-actions.component';\nimport {CaseManagementDetailComponent} from './components/case-management-detail/case-management-detail.component';\nimport {CaseManagementDocumentDefinitionComponent} from './components/case-management-detail/tabs/case-management-document-definition/case-management-document-definition.component';\nimport {CaseManagementGeneralComponent} from './components/case-management-detail/tabs/case-management-general/case-management-general.component';\nimport {CaseManagementCaseHandlerComponent} from './components/case-management-detail/tabs/case-management-general/components/case-management-case-handler/case-management-case-handler.component';\nimport {CaseManagementExternalStartFormComponent} from './components/case-management-detail/tabs/case-management-general/components/case-management-external-start-form/case-management-external-start-form.component';\nimport {CaseManagementListColumnsComponent} from './components/case-management-detail/tabs/case-management-list-columns/case-management-list-columns.component';\nimport {CaseManagementSearchFieldsComponent} from './components/case-management-detail/tabs/case-management-search-fields/case-management-search-fields.component';\nimport {CaseManagementStatusModalComponent} from './components/case-management-detail/tabs/case-management-statuses/case-management-status-modal/case-management-status-modal.component';\nimport {CaseManagementStatusesComponent} from './components/case-management-detail/tabs/case-management-statuses/case-management-statuses.component';\nimport {CaseManagementAddTabModalComponent} from './components/case-management-detail/tabs/case-management-tabs/case-management-add-tab-modal/case-management-add-tab-modal.component';\nimport {CaseManagementEditTabModalComponent} from './components/case-management-detail/tabs/case-management-tabs/case-management-edit-tab-modal/case-management-edit-tab-modal.component';\nimport {CaseManagementTabsComponent} from './components/case-management-detail/tabs/case-management-tabs/case-management-tabs.component';\nimport {TabFormComponent} from './components/case-management-detail/tabs/case-management-tabs/tab-form/tab-form.component';\nimport {CaseManagementTagsModalComponent} from './components/case-management-detail/tabs/case-management-tags/case-management-tags-modal/case-management-tags-modal.component';\nimport {CaseManagementTagsComponent} from './components/case-management-detail/tabs/case-management-tags/case-management-tags.component';\nimport {CaseManagementListComponent} from './components/case-management-list/case-management-list.component';\nimport {CaseManagementSelectVersionModalComponent} from './components/case-management-select-version-modal/case-management-select-version-modal.component';\nimport {CaseManagementUploadComponent} from './components/case-management-upload/case-management-upload.component';\nimport {CaseManagementUploadStepComponent} from './components/case-management-upload/step/case-management-upload-step.component';\nimport {TabManagementService} from './services';\nimport {CaseManagementDraftWarningComponent} from './components/case-management-draft-warning/case-management-draft-warning.component';\nimport {CaseManagementHeaderComponent} from './components/case-management-detail/tabs/case-management-header/case-management-header.component';\n\n@NgModule({\n declarations: [\n CaseManagementListComponent,\n CaseManagementConnectModalComponent,\n CaseManagementSelectVersionModalComponent,\n CaseManagementUploadComponent,\n CaseManagementSearchFieldsComponent,\n CaseManagementDetailComponent,\n CaseManagementAssigneeComponent,\n CaseManagementListColumnsComponent,\n CaseManagementTabsComponent,\n CaseManagementAddTabModalComponent,\n TabFormComponent,\n CaseManagementEditTabModalComponent,\n CaseManagementDetailActionsComponent,\n CaseManagementDocumentDefinitionComponent,\n CaseManagementUploadStepComponent,\n CaseManagementStatusesComponent,\n CaseManagementStatusModalComponent,\n CaseManagementCreateComponent,\n CaseManagementGeneralComponent,\n CaseManagementCaseHandlerComponent,\n CaseManagementExternalStartFormComponent,\n CaseManagementDeploymentComponent,\n CaseManagementTagsComponent,\n CaseManagementTagsModalComponent,\n CaseManagementCreateDraftVersionComponent,\n CaseManagementCaseListComponent,\n CaseManagementCaseDetailComponent,\n ],\n imports: [\n CommonModule,\n WidgetModule,\n DropzoneModule,\n CaseManagementRoutingModule,\n FormsModule,\n TranslateModule,\n ModalModule,\n ConfigModule,\n NgbTooltipModule,\n MultiselectDropdownModule,\n ParagraphModule,\n SelectModule,\n SpinnerModule,\n InputModule,\n SelectModule,\n FormModule,\n NotificationModule,\n ButtonModule,\n IconModule,\n CarbonModalModule,\n CarbonInputModule,\n ReactiveFormsModule,\n DropdownModule,\n CheckboxModule,\n TooltipIconModule,\n CarbonMultiInputModule,\n LoadingModule,\n LinkModule,\n ConfirmationModalModule,\n TableModule,\n ValtimoCdsModalDirective,\n CarbonListModule,\n ComboBoxModule,\n RenderInPageHeaderDirective,\n DialogModule,\n ValtimoCdsOverflowButtonDirective,\n EditorModule,\n CarbonListModule,\n TabsModule,\n TagModule,\n FileUploaderModule,\n ProgressBarModule,\n ConfirmationModalModule,\n ToggleModule,\n TooltipModule,\n ValuePathSelectorComponent,\n LayerModule,\n FormManagementComponent,\n EllipsisPipe,\n MuuriDirectiveModule,\n NumberModule,\n ReadOnlyDirective,\n CaseManagementDraftWarningComponent,\n JsonEditorComponent,\n CaseManagementHeaderComponent,\n ],\n providers: [TabManagementService],\n})\nexport class CaseManagementModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of case-management\n */\n\nexport * from './lib/models';\nexport * from './lib/case-management.module';\nexport * from './lib/components/case-management-list/case-management-list.component';\nexport * from './lib/components/case-management-draft-warning/case-management-draft-warning.component';\nexport * from './lib/services';\nexport * from './lib/constants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","tap","switchMap","catchError","i2.TabService","i3","i4","i5","i6","i7","i3.TabService","i8.TabFormComponent","i9","i6.TabFormComponent","take","i2.TabManagementService","i8.CaseManagementAddTabModalComponent","i9.CaseManagementEditTabModalComponent","i4.CaseManagementService","i8.CaseManagementStatusModalComponent","i8.CaseManagementTagsModalComponent","i5.CaseManagementDraftWarningComponent","i6.CaseManagementHeaderComponent","i7.CaseManagementTabsComponent","i8.CaseManagementStatusesComponent","i9.CaseManagementTagsComponent","i10","uuidv4","i8","i6.CaseManagementSearchFieldsComponent","i7.CaseManagementListColumnsComponent","i5.CaseManagementService","i2.CaseManagementService","i9.CaseManagementCreateDraftVersionComponent","map","i1.CaseManagementService","i1.CaseDetailService","i8.CaseManagementSelectVersionModalComponent","i2.CaseDetailService","i8.CaseManagementDetailActionsComponent","i8.CaseManagementCaseHandlerComponent","i9.CaseManagementExternalStartFormComponent","i8.CaseManagementUploadStepComponent","moment","i7.CaseManagementUploadComponent","i8.CaseManagementCreateComponent","ModalModule","InputModule","CarbonModalModule","CarbonInputModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;IAES;AAAZ,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,OAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,OAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,OAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,OAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,OAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,OAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,OAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,OAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,OAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,OAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,OAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,OAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,OAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAjBW,OAAO,KAAP,OAAO,GAAA,EAAA,CAAA,CAAA;;AChBnB;;;;;;;;;;;;;;AAcG;MAEU,YAAY,CAAA;AASxB;;ACzBD;;;;;;;;;;;;;;AAcG;MAEU,cAAc,CAAA;AAa1B;MAEY,kBAAkB,CAAA;AAG9B;MAEY,sBAAsB,CAAA;AAIlC;MAEY,YAAY,CAAA;AAMxB;;AChDD;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MAgBU,mCAAmC,CAAA;IAE9C,IAAoB,IAAI,CAAC,KAAa,EAAA;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC;IAChC;AAcA,IAAA,WAAA,CAA6B,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;AAjB5B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAS,GAAG,CAAC;QAI1C,IAAA,CAAA,gBAAgB,GAAoC,aAAa,CAAC;AAChF,YAAA,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AACf,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mCAAmC,CAAC;AACzE,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,yCAAyC,EAAE,EAAC,IAAI,EAAC,CAAC;AACzF,YAAA,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC,CACJ;IAEiE;+GAlBvD,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,2HC9BhD,svBAiBA,EAAA,MAAA,EAAA,CAAA,msBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDWY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,2MAAE,eAAe,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEhD,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAR/C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EAAA,eAAA,EAGhC,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,kBAAkB,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,svBAAA,EAAA,MAAA,EAAA,CAAA,msBAAA,CAAA,EAAA;qFAIxC,IAAI,EAAA,CAAA;sBAAvB;;;AEhCH;;;;;;;;;;;;;;AAcG;AAeG,MAAO,iCACX,SAAQ,cAAc,CAAA;IAStB,WAAA,CACqB,UAAsB,EACtB,aAA4B,EAAA;AAE/C,QAAA,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC;QAHb,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,aAAa,GAAb,aAAa;AARjB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAA8B,IAAI,CAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAA4C,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AAC9E,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACnD,MAAM,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,CAAC,CAC9C;IAOD;IAEO,UAAU,CAAC,GAAG,MAAa,EAAA;AAChC,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAyB;AACvD,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE;AACrD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;QACnC;IACF;IAEO,sBAAsB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,SAAS,CAAC,CAAC,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,KACtD,IAAI,CAAC;AACF,aAAA,GAAG,CACF,IAAI,CAAC,SAAS,CACZ,iCAAiC,kBAAkB,CACjD,iBAAiB,CAClB,YAAY,kBAAkB,CAAC,wBAAwB,CAAC,CAAA,cAAA,CAAgB,CAC1E,EACD;YACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;SACvD;aAEF,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EACvC,UAAU,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG;AAAE,gBAAA,OAAO,EAAE,CAAC,EAAmB,CAAC;AACvD,YAAA,MAAM,GAAG;AACX,QAAA,CAAC,CAAC,CACH,CACJ,CACF;IACH;AAEO,IAAA,yBAAyB,CAAC,OAAsB,EAAA;AACrD,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,SAAS,CAAC,CAAC,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,KACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,SAAS,CACZ,CAAA,8BAAA,EAAiC,kBAAkB,CACjD,iBAAiB,CAClB,CAAA,SAAA,EAAY,kBAAkB,CAAC,wBAAwB,CAAC,CAAA,cAAA,CAAgB,CAC1E,EACD,MAAM,CACP,CACF,EACD,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAC1C;IACH;AAEO,IAAA,YAAY,CAAC,CAAc,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,SAAS,CAAC,CAAC,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,KACtD,IAAI,CAAC,UAAU,CAAC,MAAM,CACpB,IAAI,CAAC,SAAS,CACZ,CAAA,8BAAA,EAAiC,kBAAkB,CACjD,iBAAiB,CAClB,YAAY,kBAAkB,CAAC,wBAAwB,CAAC,CAAA,cAAA,CAAgB,CAC1E,CACF,CACF,CACF;IACH;AAEO,IAAA,YAAY,CAAC,MAAmB,EAAA;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,SAAS,CAAC,CAAC,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,KACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,SAAS,CACZ,CAAA,8BAAA,EAAiC,kBAAkB,CACjD,iBAAiB,CAClB,CAAA,SAAA,EAAY,kBAAkB,CAAC,wBAAwB,CAAC,gBAAgB,CAC1E,EACD,MAAM,CACP,CACF,CACF;IACH;AAEO,IAAA,YAAY,CAAC,MAAmB,EAAA;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,SAAS,CAAC,CAAC,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,KACtD,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,SAAS,CACZ,CAAA,8BAAA,EAAiC,kBAAkB,CACjD,iBAAiB,CAClB,CAAA,SAAA,EAAY,kBAAkB,CAAC,wBAAwB,CAAC,gBAAgB,CAC1E,EACD,MAAM,CACP,CACF,CACF;IACH;+GA5GW,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjC,iCAAiC,EAAA,CAAA,CAAA;;4FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C;;;AC5BD;;;;;;;;;;;;;;AAcG;AA8BG,MAAO,6BACX,SAAQ,gCAAgC,CAAA;AAYxC,IAAA,WAAA,CACqB,mBAAwC,EAE1C,uBAAuE,EACvE,KAAqB,EAAA;QAEtC,KAAK,CAAC,mBAAmB,CAAC;QALP,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QAErB,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACvB,IAAA,CAAA,KAAK,GAAL,KAAK;AAbR,QAAA,IAAA,CAAA,sBAAsB,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAC5C,QAAA,IAAA,CAAA,mBAAmB,GAAG;AACpC,YAAA,gBAAgB,CAAC,IAAI;AACrB,YAAA,gBAAgB,CAAC,OAAO;SACzB;AAEgB,QAAA,IAAA,CAAA,QAAQ,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;IASpD;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAG;AAC/B,YAAA,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC;AAC/C,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACvB,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AACvD,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC7B,CAAC,CAAC,CACH;IACH;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;AAnCW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,uDAe9B,yBAAyB,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAfxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,SAAA,EAP7B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,yBAAyB;AAClC,gBAAA,QAAQ,EAAE,iCAAiC;AAC5C,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CH,s8BAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDWY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAQtC,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAbzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,QAAA,EACN,gCAAgC,EAAA,eAAA,EAEzB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,YAAY,EAAE,yBAAyB,CAAC,EAAA,SAAA,EACvC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,yBAAyB;AAClC,4BAAA,QAAQ,EAAE,iCAAiC;AAC5C,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,s8BAAA,EAAA;;0BAiBE,MAAM;2BAAC,yBAAyB;;;AE3DrC;;;;;;;;;;;;;;AAcG;MAoBU,iBAAiB,CAAA;AAiB5B,IAAA,IAAW,iCAAiC,GAAA;QAC1C,OAAO,IAAI,CAAC,kCAAkC,CAAC,IAAI,CACjD,MAAM,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,EAC9C,oBAAoB,EAAE,CACvB;IACH;AAEA,IAAA,IAAW,yCAAyC,GAAA;AAClD,QAAA,OAAO,IAAI,CAAC,0CAA0C,CAAC,YAAY,EAAE;IACvE;AAEA,IAAA,IAAW,0BAA0B,GAAA;QACnC,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAC1C,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EACtB,oBAAoB,EAAE,CACvB;IACH;AAEA,IAAA,IAAW,qCAAqC,GAAA;QAC9C,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAClC,GAAG,CAAC,UAAU,IAAI,UAAU,EAAE,QAAQ,IAAI,KAAK,CAAC,EAChD,oBAAoB,EAAE,CACvB;IACH;AAEA,IAAA,IAAW,0BAA0B,GAAA;QACnC,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACtE;AAEA,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACnC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EACpB,oBAAoB,EAAE,CACvB;IACH;AAEA,IAAA,IAAW,wBAAwB,GAAA;QACjC,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACpE;IAIA,WAAA,CACmB,eAAgC,EAChC,gBAAkC,EAAA;QADlC,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;AA5DlB,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAChE,QAAA,IAAA,CAAA,0CAA0C,GAAG,IAAI,eAAe,CAC/E,IAAI,CACL;AACgB,QAAA,IAAA,CAAA,kCAAkC,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AAC7E,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC7D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC;AAC3E,QAAA,IAAA,CAAA,yBAAyB,GACxC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,GAAG,CAAC,CAAC,UAAqC,MAAM;AAC9C,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,YAAA,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC,CACJ;AACc,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,OAAO,EAAQ;AA0CzD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QAMzC,IAAI,CAAC,kCAAkC,EAAE;IAC3C;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;AAEO,IAAA,mCAAmC,CAAC,UAAkB,EAAA;AAC3D,QAAA,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1D;AAEO,IAAA,2CAA2C,CAAC,UAAyB,EAAA;AAC1E,QAAA,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,UAAU,CAAC;IAClE;AAEO,IAAA,4BAA4B,CAAC,GAAW,EAAA;AAC7C,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5C;AAEO,IAAA,4BAA4B,CAAC,OAAgB,EAAA;AAClD,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;IAChD;IAEO,wBAAwB,GAAA;AAC7B,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5C;IAEQ,kCAAkC,GAAA;AACxC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,iCAAiC;AACtC,YAAA,IAAI,CAAC,0BAA0B;YAC/B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACtD;AACE,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAClD,YAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC;AACzC,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,WAAW,CAAC,KAC1C,IAAI,CAAC,eAAe,CAAC,8BAA8B,CAAC,WAAW,EAAE,kBAAkB,CAAC,CACrF,EACD,GAAG,CAAC,GAAG,IAAG;AACR,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,YAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,CAAC;AACzE,YAAA,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC;AAC1C,QAAA,CAAC,CAAC;aAEH,SAAS,EAAE,CACf;IACH;+GAjHW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MCTY,oBAAoB,CAAA;IAO/B,WAAA,CACmB,aAA4B,EAC5B,IAAgB,EAAA;QADhB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,IAAI,GAAJ,IAAI;AALP,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAe,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAM5D,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,+BAA+B;IAChH;AAEO,IAAA,SAAS,CAAC,MAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;IACvB;AAEA,IAAA,IAAY,kBAAkB,GAAA;AAC5B,QAAA,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,YAAY,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE;IAC1H;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU;AACZ,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,KAAmB,KAAI;AAC5B,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,CAAC;YACD,KAAK,EAAE,KAAK,IAAG;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACtB,CAAC;AACF,SAAA,CAAC;IACN;AAEO,IAAA,cAAc,CAAC,YAA0D,EAAA;QAC9E;AACG,aAAA,IAAI,CACHC,KAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,CAAC,CAAC,EACFC,WAAS,CAAC,CAAC,MAAwC,KACjD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CACvD,EACD,IAAI,CAAC,CAAC,CAAC,EACPC,YAAU,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AAE/B,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,IAAkB,KAAI;AAC3B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,CAAC;YACD,KAAK,EAAE,KAAK,IAAG;AACb,gBAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACpB,CAAC;AACF,SAAA,CAAC;IACN;AAEO,IAAA,MAAM,CAAC,GAAwB,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,GAAG,IAAI,CAAC,kBAAkB,CAAA,IAAA,CAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1F;AAEO,IAAA,SAAS,CAAC,MAAc,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE,CAAC;IAC3E;IAEO,OAAO,CAAC,GAAwB,EAAE,MAAc,EAAA;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,kBAAkB,QAAQ,MAAM,CAAA,CAAE,EAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CACpB;IACH;AAEO,IAAA,aAAa,CAAC,OAAqB,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,IAAA,CAAM,EAAE,OAAO,CAAC;IAC/E;AAEO,IAAA,MAAM,CAAC,MAAc,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE,CAAC;IAC9E;IAEQ,UAAU,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,IAAA,CAAM,CAAC;IACtE;AAEQ,IAAA,SAAS,CAAC,GAAwB,EAAA;AACxC,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE;YACnB,OAAO,GAAG,CAAC,IAAI;QACjB;AACA,QAAA,OAAO,GAAG;IACZ;+GA7FW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAApB,oBAAoB,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;;ACvBD;;;;;;;;;;;;;;AAcG;MAmBU,UAAU,CAAA;AAKrB,IAAA,IAAW,2BAA2B,GAAA;AACpC,QAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE;IACzD;AAGA,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;IACzC;IACA,IAAW,UAAU,CAAC,GAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7B;AAGA,IAAA,IAAW,sBAAsB,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE;IACpD;IACA,IAAW,qBAAqB,CAAC,KAAe,EAAA;AAC9C,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1C;AAsBA,IAAA,WAAA,CACuD,aAA4B,EAGhE,uBAAkD,EAClD,WAAwB,EACxB,gBAAkC,EAAA;QALE,IAAA,CAAA,aAAa,GAAb,aAAa;QAGjD,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACvB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;AAhD3B,QAAA,IAAA,CAAA,4BAA4B,GAAG,IAAI,eAAe,CAA4B,EAAE,CAAC;QAMjF,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAmB,OAAO,CAAC,QAAQ,CAAC;AAQtE,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;AAQnD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CACxD,CAAC,IAAI,CAAC;AACJ,cAAE;AACF,cAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,UAAkB,MAAM;gBAC3D,UAAU;AACV,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC,CACR;AAEe,QAAA,IAAA,CAAA,YAAY,GAA2B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAC7F,GAAG,CAAC,MACF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAW,MAAM;AAC/C,YAAA,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,UAAA,EAAa,GAAG,CAAA,CAAE,CAAC;AAC1D,YAAA,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC,CACJ,CACF;AAUC,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAClE;AAEO,IAAA,kBAAkB,CAAC,KAAqB,EAAA;AAM7C,QAAA,OAAO,aAAa,CAAC;AACnB,YAAA,IAAI,CAAC,sBAAsB;AAC3B,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,YAAY;AACjB,YAAA,IAAI,CAAC,oBAAoB;AAC1B,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,CAAC,MAAM;AACrE,YAAA,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,OAAiB,KAAK,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxF,YAAA,MAAM,EACJ,CAAC,mBAAmB,CAAC,MAAM;AAC3B,gBAAA,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAiB,KAAK,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxF,YAAA,MAAM,EACJ,CAAC,eAAe,CAAC,MAAM;AACvB,gBAAA,eAAe,CAAC,KAAK,CAAC,CAAC,OAAiB,KAAK,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpF,YAAA,OAAO,EAAE,KAAK;SACf,CAAC,CAAC,CACJ;IACH;AAEO,IAAA,kBAAkB,CAAC,KAAqB,EAAA;AAC7C,QAAA,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC,IAAI,CAC7C,SAAS,CAAC,CAAC,MAA4B,KAAI;YACzC,OAAO,IAAI,CAAC;iBACT,sCAAsC,CACrC,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,wBAAwB;AAEhC,iBAAA,IAAI,CACH,GAAG,CAAC,CAAC,eAAuC,KAAI;gBAC9C,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,cAAoC,MAAM;oBACpE,UAAU,EAAE,cAAc,CAAC,IAAI;oBAC/B,OAAO,EAAE,cAAc,CAAC,IAAI;AAC5B,oBAAA,QAAQ,EAAE,KAAK;AAChB,iBAAA,CAAC,CAAC;YACL,CAAC,CAAC,CACH;QACL,CAAC,CAAC,CACH;IACH;AAEQ,IAAA,6BAA6B,CACnC,uBAA6E,EAAA;AAE7E,QAAA,IAAI,CAAC,uBAAuB;YAAE;AAC9B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB;AAChD,cAAE;AACF,cAAE,CAAC,uBAAuB,CAAC;AAE7B,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CACpC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,EAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAChE;IACH;+GAjHW,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA8CC,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAE1B,yBAAyB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAhDxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;4FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BA+CI;;0BAAY,MAAM;2BAAC,cAAc;;0BACjC;;0BACA,MAAM;2BAAC,yBAAyB;;;MCvDxB,8BAA8B,CAAA;IAMzC,WAAA,CACmB,IAAgB,EAChB,aAA4B,EAAA;QAD5B,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,aAAa,GAAb,aAAa;QAJxB,IAAA,CAAA,yBAAyB,GAAkB,EAAE;QASrC,IAAA,CAAA,OAAO,GACrB,IAAI,eAAe,CAAuC;AACxD,YAAA,iBAAiB,EAAE,EAAE;AACrB,YAAA,wBAAwB,EAAE,EAAE;AAC5B,YAAA,GAAG,EAAE,EAAE;AACR,SAAA,CAAC;AARF,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,+BAA+B;IAC/G;AASO,IAAA,UAAU,CAAC,MAA4C,EAAA;AAC5D,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B;AACO,IAAA,YAAY,CAAC,MAAmB,EAAA;QACrC,OAAO,IAAI,CAAC,aAAa,CACvB,IAAI,CAAC,yBAAyB,CAAC,MAAM,CACnC,CAAC,YAAyB,KAAK,YAAY,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAC/D,CACF;IACH;AACO,IAAA,YAAY,CAAC,MAAmB,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,aAAa,CACvB,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,YAAyB,KAC3D,YAAY,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,YAAY,CACxD,CACF;IACH;AACO,IAAA,YAAY,CAAC,MAAmB,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IACxE;IAEO,sBAAsB,GAAA;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtB,SAAS,CAAC,CAAC,MAA4C,KACrD,IAAI,CAAC,IAAI,CAAC,GAAG,CACX,GAAG,IAAI,CAAC,mBAAmB,CAAA,CAAA,EAAI,MAAM,CAAC,iBAAiB,CAAA,SAAA,EAAY,MAAM,CAAC,wBAAwB,eAAe,MAAM,CAAC,GAAG,CAAA,CAAE,CAC9H,CACF,EACD,GAAG,CAAC,CAAC,GAAmB,KAAI;AAC1B,YAAA,IAAI,CAAC,yBAAyB,GAAG,GAAG,CAAC,OAAO;YAC5C,OAAO,GAAG,CAAC,OAAO;QACpB,CAAC,CAAC,CACH;IACH;AAEO,IAAA,yBAAyB,CAAC,OAAsB,EAAA;AACrD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;IACpC;AAEQ,IAAA,aAAa,CAAC,OAAsB,EAAA;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtB,SAAS,CAAC,CAAC,MAA4C,KACrD,IAAI,CAAC,IAAI,CAAC,IAAI,CACZ,CAAA,EAAG,IAAI,CAAC,mBAAmB,IAAI,MAAM,CAAC,iBAAiB,CAAA,SAAA,EAAY,MAAM,CAAC,wBAAwB,CAAA,YAAA,EAAe,MAAM,CAAC,GAAG,EAAE,EAC7H,EAAC,GAAG,MAAM,EAAE,OAAO,EAAC,CACrB,CACF,CACF;IACH;+GApEW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cAF7B,MAAM,EAAA,CAAA,CAAA;;4FAEP,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACzBD;;;;;;;;;;;;;;AAcG;AAuBG,MAAO,qBAAsB,SAAQ,cAAc,CAAA;IACvD,WAAA,CACqB,UAAsB,EACtB,aAA4B,EAAA;AAE/C,QAAA,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC;QAHb,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,aAAa,GAAb,aAAa;IAGlC;AAEO,IAAA,kBAAkB,CAAC,MAAW,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,SAAS,CAAC,+BAA+B,CAAC,EAC/C,EAAC,MAAM,EAAC,CACT;IACH;AAEO,IAAA,yBAAyB,CAAC,iBAAyB,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,SAAS,CAAC,CAAA,8BAAA,EAAiC,iBAAiB,CAAA,QAAA,CAAU,CAAC,EAC5E;AACE,YAAA,MAAM,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC;AACpB,SAAA,CACF;IACH;AAEO,IAAA,kBAAkB,CAAC,OAAqB,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB,IAAI,CAAC,SAAS,CAAC,CAAA,mCAAA,CAAqC,CAAC,EACrD,OAAO,CACR;IACH;IAEO,cAAc,CACnB,iBAAyB,EACzB,wBAAgC,EAAA;QAEhC,OAAO,IAAI,CAAC;aACT,GAAG,CACF,IAAI,CAAC,SAAS,CACZ,CAAA,8BAAA,EAAiC,iBAAiB,CAAA,SAAA,EAAY,wBAAwB,CAAA,CAAE,CACzF,EACD;YACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;SACvD;AAEF,aAAA,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvD;AAEO,IAAA,mBAAmB,CAAC,iBAAyB,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,SAAS,CAAC,CAAA,8BAAA,EAAiC,iBAAiB,EAAE,CAAC,EACpE,EAAC,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,EAAC,CACzD;IACH;IAEO,0BAA0B,CAC/B,iBAAyB,EACzB,wBAAgC,EAAA;AAEhC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB,IAAI,CAAC,SAAS,CACZ,CAAA,8BAAA,EAAiC,iBAAiB,YAAY,wBAAwB,CAAA,OAAA,CAAS,CAChG,EACD,EAAE,CACH;IACH;AAEO,IAAA,kBAAkB,CAAC,MAAW,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,SAAS,CAAC,+BAA+B,CAAC,EAC/C,EAAC,MAAM,EAAC,CACT;IACH;IAEO,wBAAwB,CAC7B,iBAAyB,EACzB,wBAAgC,EAAA;AAEhC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB,IAAI,CAAC,SAAS,CACZ,CAAA,8BAAA,EAAiC,iBAAiB,YAAY,wBAAwB,CAAA,SAAA,CAAW,CAClG,EACD,EAAE,CACH;IACH;IAEO,sBAAsB,CAC3B,iBAAyB,EACzB,wBAAgC,EAAA;AAEhC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAC3B,IAAI,CAAC,SAAS,CACZ,iCAAiC,iBAAiB,CAAA,SAAA,EAAY,wBAAwB,CAAA,CAAE,CACzF,CACF;IACH;IAEO,iBAAiB,CACtB,iBAAyB,EACzB,wBAAgC,EAAA;AAEhC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,SAAS,CACZ,iCAAiC,iBAAiB,CAAA,SAAA,EAAY,wBAAwB,CAAA,CAAE,CACzF,EACD;YACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;AACvD,SAAA,CACF;IACH;AAEO,IAAA,2BAA2B,CAAC,IAAc,EAAA;QAC/C,OAAO,IAAI,CAAC;aACT,IAAI,CAAqB,IAAI,CAAC,SAAS,CAAC,CAAA,yBAAA,CAA2B,CAAC,EAAE,IAAI;AAC1E,aAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,EAAC,GAAG,EAAC,CAAC,CAAC,CAAC;IACzC;AAEO,IAAA,wBAAwB,CAC7B,iBAAyB,EACzB,wBAAwB,GAAG,GAAG,EAAA;AAE9B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,SAAS,CACZ,CAAA,mBAAA,EAAsB,iBAAiB,YAAY,wBAAwB,CAAA,OAAA,CAAS,CACrF,EACD,EAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAgB,EAAE,OAAO,EAAE,qBAAqB,EAAC,CACtF;IACH;IAEO,sBAAsB,CAC3B,iBAAyB,EACzB,wBAAgC,EAAA;AAEhC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,SAAS,CACZ,iCAAiC,iBAAiB,CAAA,SAAA,EAAY,wBAAwB,CAAA,qBAAA,CAAuB,CAC9G,CACF;IACH;IAEO,kCAAkC,CACvC,iBAAyB,EACzB,wBAAgC,EAAA;AAEhC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,SAAS,CACZ,iCAAiC,iBAAiB,CAAA,SAAA,EAAY,wBAAwB,CAAA,YAAA,CAAc,CACrG,CACF;IACH;+GApJW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;4FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACpCD;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MAiBU,gBAAgB,CAAA;AAkC3B,IAAA,WAAA,CACmB,aAA4B,EAC5B,UAAsB,EACtB,kBAAsC,EACtC,KAAqB,EAAA;QAHrB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,KAAK,GAAL,KAAK;AAnCjB,QAAA,IAAA,CAAA,4BAA4B,GAAG,MAAM,CAAC,KAAK,CAAC;QAEnC,IAAA,CAAA,UAAU,GAAG,aAAa,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,sBAAsB;YACtC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,YAAY;YAC5B,IAAI,CAAC,UAAU,CAAC,oBAAoB;AACrC,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,CAAC,KAAI;AACnE,YAAA,QAAQ,IAAI,CAAC,OAAO;gBAClB,KAAK,UAAU,CAAC,QAAQ;oBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC;gBAChD,KAAK,UAAU,CAAC,MAAM;oBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC;gBACxD,KAAK,UAAU,CAAC,MAAM;oBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;gBACpD,KAAK,UAAU,CAAC,OAAO;AACrB,oBAAA,OAAO,EAAE;;AAEf,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,EAAE,CAAC,CACd;AAQO,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;IAOxC;IAEI,QAAQ,GAAA;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,8BAA8B,EAAE;QAErC,IAAI,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE;QACxC;aAAO;YACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE;QACvC;IACF;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;IAEO,UAAU,GAAA;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC;IACjG;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC;AAC7C,YAAA,OAAO,sDAAsD;AAC/D,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC;AAC3C,YAAA,OAAO,uDAAuD;AAChE,QAAA,OAAO,EAAE;IACX;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IACxC;IAEO,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC5B;AAEO,IAAA,mBAAmB,CAAC,KAAc,EAAA;QACvC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;IACrC;IAEQ,8BAA8B,GAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,IAAG;AAC9D,YAAA,MAAM,eAAe,GAAG,UAAU,KAAK,WAAW,CAAC,OAAO;YAE1D,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC;YAC7C;iBAAO;AACL,gBAAA,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,KAAK,CAAC;YAC9C;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,YAAY,CAAC,QAAoB,EAAE,qBAA+B,EAAA;AACxE,QAAA,OAAO;AACJ,aAAA,MAAM,CACL,CAAC,OAAiB,KAChB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;AACnD,YAAA,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,UAAU;AAE7D,aAAA,GAAG,CAAC,CAAC,OAAiB,MAAM;AAC3B,YAAA,GAAG,OAAO;AACV,YAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,UAAU;AACrE,SAAA,CAAC,CAAC;IACP;+GA9GW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,6GC/B7B,kpEA0DA,EAAA,MAAA,EAAA,CAAA,60BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD3Ba,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kpEAAA,EAAA,MAAA,EAAA,CAAA,60BAAA,CAAA,EAAA;4KAG/B,OAAO,EAAA,CAAA;sBAAtB;;;AEhCH;;;;;;;;;;;;;;AAcG;MAgCU,kCAAkC,CAAA;IAqD7C,WAAA,CACmB,EAAe,EACf,WAAwB,EACxB,UAAsB,EACtB,aAA4B,EAC5B,KAAqB,EAAA;QAJrB,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,KAAK,GAAL,KAAK;QAxDf,IAAA,CAAA,IAAI,GAAG,KAAK;AAEX,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAA8B;QAE1D,IAAA,CAAA,UAAU,GAAG,UAAU;QAEvB,IAAA,CAAA,SAAS,GAAgC,aAAa,CAAC;YACrE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,eAAe;AACnC,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK;AAClC,YAAA;AACE,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,KAAK,EAAE,mDAAmD;gBAC1D,IAAI,EAAE,UAAU,CAAC,QAAQ;gBACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC3B,gBAAA,6BAA6B,EAAE,2DAA2D;AAC3F,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,KAAK,EAAE,uDAAuD;gBAC9D,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM;AACzB,gBAAA,6BAA6B,EAC3B,+DAA+D;AAClE,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,uDAAuD;gBAC9D,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM;AACzB,gBAAA,6BAA6B,EAC3B,+DAA+D;AAClE,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,wDAAwD;gBAC/D,IAAI,EAAE,UAAU,CAAC,OAAO;gBACxB,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC3B,aAAA;AACF,SAAA,CAAC,CACH;AAEe,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,YAAA,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC1E,YAAA,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACpD,YAAA,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvD,SAAA,CAAC;AACc,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC;AAS7E,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAC/F;AAEO,IAAA,MAAM,CAAC,IAAgB,EAAA;AAC5B,QAAA,IAAI,EAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAChE,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,GAAG,GAAG;QAClB;QAEA,IAAI,CAAC,GAAG,EAAE;YACR;QACF;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC;IACrE;IAEO,SAAS,GAAA;QACd,IAAI,CAAC,UAAU,EAAE;IACnB;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,UAAU,EAAE;IACnB;AAEO,IAAA,eAAe,CAAC,IAAgB,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACnB;IAEQ,kBAAkB,GAAA;QACxB,OAAO,CAAC,OAAwB,KAC9B,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,GAAW,KAAK,GAAG,KAAK,OAAO,CAAC,KAAK;AAC5E,cAAE;AACF,cAAE,EAAC,SAAS,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC;IAC3C;+GAlGW,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,+LC9C/C,4iGA6EA,EAAA,MAAA,EAAA,CAAA,ypCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FD/Ba,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAR9C,SAAS;iCACI,KAAK,EAAA,QAAA,EACP,uCAAuC,EAAA,eAAA,EAGhC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,4iGAAA,EAAA,MAAA,EAAA,CAAA,ypCAAA,CAAA,EAAA;+LAG5B,MAAM,EAAA,CAAA;sBAAd;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAES,eAAe,EAAA,CAAA;sBAAxB;;;AElDH;;;;;;;;;;;;;;AAcG;MAWU,mCAAmC,CAAA;IAI9C,IAAoB,GAAG,CAAC,KAAiB,EAAA;QACvC,IAAI,CAAC,KAAK,EAAE;YACV;QACF;QAEA,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;YAC3C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,MAAM,CACvE,CAAC,MAAc,KAAK,MAAM,KAAK,KAAK,CAAC,UAAU,CAChD;QACH;AAEA,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACjC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC7E,YAAA,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC;AAClE,YAAA,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC;AACjE,SAAA,CAAC;IACJ;AACA,IAAA,IAAW,GAAG,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI;IAClB;IAOA,WAAA,CACmB,EAAe,EACf,UAAsB,EAAA;QADtB,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,UAAU,GAAV,UAAU;AAPnB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAqB;IAQ9D;IAEI,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC;IAEO,OAAO,GAAA;AACZ,QAAA,MAAM,EAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAE7D,IAAI,CAAC,UAAU,EAAE;YACf;QACF;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC;IACvE;+GAjDW,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,0LCzBhD,knDA+CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDtBa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,wCAAwC,EAAA,QAAA,EAAA,knDAAA,EAAA;wGAIzC,IAAI,EAAA,CAAA;sBAAZ;gBAGmB,GAAG,EAAA,CAAA;sBAAtB;gBAuBS,eAAe,EAAA,CAAA;sBAAxB;;;AEpDH;;;;;;;;;;;;;;AAcG;MAgCU,2BAA2B,CAAA;AA0DtC,IAAA,WAAA,CACmB,EAAqB,EACrB,WAAwB,EACxB,oBAA0C,EAC1C,UAAsB,EACtB,gBAAkC,EAClC,MAAc,EACd,KAAqB,EACrB,sBAA8C,EAAA;QAP9C,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;AA7DzB,QAAA,IAAA,CAAA,0BAA0B,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACxF,GAAG,CAAC,MAAM,IAAG;AACX,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC;AAC3C,YAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;QACtC,CAAC,CAAC,CACH;AAEM,QAAA,IAAA,CAAA,WAAW,GAAiB;AACjC,YAAA;AACE,gBAAA,KAAK,EAAE,gBAAgB;gBACvB,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;AACrD,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;AACe,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AACxD,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,CAC7E,GAAG,CAAC,CAAC,GAAkB,KAAK,CAAC,CAAC,GAAG,CAAC,CACnC;AACe,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACpD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAiB,EAAE,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,oBAAoB,CAAC,QAAQ;AAClE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AAEhD,QAAA,IAAA,CAAA,KAAK,GAA6B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CACpF,GAAG,CAAC,IAAI,IAAG;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAe,KAAK,GAAG,CAAC,UAAU,CAAC;AACrF,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAe,KAAK,GAAG,CAAC,GAAG,CAAC;YAC1E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;QACrC,CAAC,CAAC,CACH;AAEe,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC;AACnD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC;AAElC,QAAA,IAAA,CAAA,OAAO,GACtB,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;AAE1B,QAAA,IAAA,CAAA,mBAAmB,GAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,CAC1E,SAAS,CAAC,MAAM,IACd,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAC5C,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,wBAAwB,CACjC,CACF,CACF;IAWE;IAEI,eAAe,GAAA;QACpB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;QACvB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEO,IAAA,YAAY,CAAC,GAAW,EAAA;QAC7B,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG;IACnD;IAEO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;AAEO,IAAA,aAAa,CAAC,GAAe,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC;AAEO,IAAA,YAAY,CAAC,GAAe,EAAA;AACjC,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,MAAM,CAAC,aAAa,IAAI,aAAa,CAAC,EACtCK,MAAI,CAAC,CAAC,CAAC;aAER,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAEnB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE;gBACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC;YACzE;iBAAO;AACL,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC;AACF,QAAA,CAAC,CAAC;IACN;AAEO,IAAA,oBAAoB,CAAC,GAAsB,EAAA;AAChD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAE9B,IAAI,CAAC,GAAG,EAAE;YACR;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAClB;AAEO,IAAA,qBAAqB,CAAC,GAAsB,EAAA;AACjD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAEpB,IAAI,CAAC,GAAG,EAAE;YACR;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACnB;AAEO,IAAA,2BAA2B,CAAC,GAAe,EAAA;QAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClC;AAEO,IAAA,cAAc,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IACxB;AAEO,IAAA,qBAAqB,CAAC,cAA4B,EAAA;AACvD,QAAA,IAAI,CAAC,cAAc;YAAE;AAErB,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AAElC,QAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,CACtC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,cAAc,CAAC,CACxD;IACH;AAEQ,IAAA,MAAM,CAAC,GAAwB,EAAA;AACrC,QAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjF;AAEQ,IAAA,SAAS,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvF;AAEQ,IAAA,OAAO,CAAC,GAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3F;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,YAAA;AACE,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,KAAK,EAAE,2CAA2C;gBAClD,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,KAAK,EAAE,0CAA0C;gBACjD,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,IAAI,CAAC,qBAAqB;AACpC,gBAAA,GAAG,EAAE,EAAE;AACP,gBAAA,KAAK,EAAE,2CAA2C;AACnD,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,IAAI,CAAC,wBAAwB;AACvC,gBAAA,GAAG,EAAE,EAAE;AACP,gBAAA,KAAK,EAAE,8CAA8C;AACtD,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC1B,gBAAA,GAAG,EAAE,WAAW;AAChB,gBAAA,KAAK,EAAE,gDAAgD;AACxD,aAAA;AACF,SAAA,CAAC;IACJ;+GA1LW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAf,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAgB,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,6aC9CxC,s3GA6FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,kCAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FD/Ca,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;iCACI,KAAK,EAAA,QAAA,EACP,8BAA8B,EAAA,eAAA,EAEvB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,s3GAAA,EAAA;kSAGN,wBAAwB,EAAA,CAAA;sBAAtD,SAAS;uBAAC,kBAAkB;gBACD,qBAAqB,EAAA,CAAA;sBAAhD,SAAS;uBAAC,eAAe;gBACQ,mBAAmB,EAAA,CAAA;sBAApD,SAAS;uBAAC,qBAAqB;;;AEjD3B,MAAM,6BAA6B,GAAG;AAC3C,IAAA,YAAY,EAAE,4BAA4B;AAC1C,IAAA,YAAY,EAAE,4BAA4B;;AAGrC,MAAM,+BAA+B,GAAG;AAC7C,IAAA,IAAI,EAAE,oBAAoB;;AAGrB,MAAM,+BAA+B,GAAG;AAC7C,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,yBAAyB,EAAE,2BAA2B;AACtD,IAAA,qBAAqB,EAAE,uBAAuB;AAC9C,IAAA,YAAY,EAAE,0BAA0B;AACxC,IAAA,UAAU,EAAE,wBAAwB;AACpC,IAAA,YAAY,EAAE,0BAA0B;;AAGnC,MAAM,uCAAuC,GAAG;AACrD,IAAA,qBAAqB,EAAE,2BAA2B;AAClD,IAAA,yBAAyB,EAAE,8BAA8B;AACzD,IAAA,uBAAuB,EAAE,6BAA6B;AACtD,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,sBAAsB,EAAE,4BAA4B;AACpD,IAAA,UAAU,EAAE,gBAAgB;;AAGvB,MAAM,+BAA+B,GAAG;AAC7C,IAAA,SAAS,EAAE,yBAAyB;AACpC,IAAA,QAAQ,EAAE,wBAAwB;AAClC,IAAA,aAAa,EAAE,6BAA6B;AAC5C,IAAA,YAAY,EAAE,4BAA4B;AAC1C,IAAA,gBAAgB,EAAE,gCAAgC;AAClD,IAAA,WAAW,EAAE,uBAAuB;AACpC,IAAA,UAAU,EAAE,sBAAsB;;AAG7B,MAAM,iCAAiC,GAAG;AAC/C,IAAA,SAAS,EAAE,qBAAqB;;AAG3B,MAAM,4CAA4C,GAAG;AAC1D,IAAA,eAAe,EAAE,+BAA+B;AAChD,IAAA,eAAe,EAAE,+BAA+B;AAChD,IAAA,uBAAuB,EAAE,uCAAuC;AAChE,IAAA,gBAAgB,EAAE,gCAAgC;;AAG7C,MAAM,qCAAqC,GAAG;AACnD,IAAA,UAAU,EAAE,sBAAsB;AAClC,IAAA,QAAQ,EAAE,oBAAoB;AAC9B,IAAA,aAAa,EAAE,yBAAyB;AACxC,IAAA,aAAa,EAAE,yBAAyB;AACxC,IAAA,gBAAgB,EAAE,4BAA4B;AAC9C,IAAA,YAAY,EAAE,wBAAwB;AACtC,IAAA,gBAAgB,EAAE,4BAA4B;AAC9C,IAAA,UAAU,EAAE,sBAAsB;;AAG7B,MAAM,qCAAqC,GAAG;AACnD,IAAA,WAAW,EAAE,qBAAqB;AAClC,IAAA,UAAU,EAAE,sBAAsB;AAClC,IAAA,aAAa,EAAE,6BAA6B;AAC5C,IAAA,KAAK,EAAE,iBAAiB;AACxB,IAAA,GAAG,EAAE,eAAe;AACpB,IAAA,iBAAiB,EAAE,6BAA6B;AAChD,IAAA,WAAW,EAAE,uBAAuB;AACpC,IAAA,SAAS,EAAE,qBAAqB;AAChC,IAAA,UAAU,EAAE,sBAAsB;AAClC,IAAA,UAAU,EAAE,sBAAsB;AAClC,IAAA,gBAAgB,EAAE,4BAA4B;AAC9C,IAAA,WAAW,EAAE,uBAAuB;AACpC,IAAA,UAAU,EAAE,sBAAsB;AAClC,IAAA,YAAY,EAAE,wBAAwB;AACtC,IAAA,UAAU,EAAE,sBAAsB;AAClC,IAAA,iBAAiB,EAAE,6BAA6B;AAChD,IAAA,UAAU,EAAE,sBAAsB;AAClC,IAAA,cAAc,EAAE,0BAA0B;;AAGrC,MAAM,qCAAqC,GAAG;AACnD,IAAA,cAAc,EAAE,2BAA2B;AAC3C,IAAA,mBAAmB,EAAE,gCAAgC;;AAGhD,MAAM,mCAAmC,GAAG;AACjD,IAAA,UAAU,EAAE,mBAAmB;AAC/B,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,aAAa,EAAE,sBAAsB;AACrC,IAAA,aAAa,EAAE,sBAAsB;AACrC,IAAA,YAAY,EAAE,qBAAqB;AACnC,IAAA,gBAAgB,EAAE,yBAAyB;AAC3C,IAAA,UAAU,EAAE,mBAAmB;;AAG1B,MAAM,6BAA6B,GAAG;AAC3C,IAAA,SAAS,EAAE,kBAAkB;;;AChG/B;;;;;;;;;;;;;;AAcG;MA4CU,kCAAkC,CAAA;IAG7C,IAAoB,IAAI,CAAC,KAAsB,EAAA;AAC7C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAEvB,QAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;YACtB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AACvC,YAAA,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;QACvC;aAAO;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QACvC;IACF;IAEA,IAAoB,OAAO,CAAC,KAAyB,EAAA;AACnD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;AAoEA,IAAA,IAAW,0BAA0B,GAAA;QACnC,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,4BAA4B,CAAC;IAChE;AAEA,IAAA,IAAW,GAAG,GAAA;QACZ,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC;IACzC;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC;IAC3C;AAEA,IAAA,IAAW,qBAAqB,GAAA;QAC9B,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,uBAAuB,CAAC;IAC3D;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC;IAC3C;AAEA,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO;IACxC;AAEA,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ;IACzC;AAMO,IAAA,qBAAqB,CAAC,OAAgB,EAAA;AAC3C,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;AACxC,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;QACpC;IACF;AAMA,IAAA,WAAA,CACmB,EAAe,EACf,WAAwB,EACxB,iBAAoC,EACpC,gBAAkC,EAAA;QAHlC,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QArIhB,IAAA,CAAA,OAAO,GAAG,qCAAqC;AAqBjD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAyB;AAE3D,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAkB,SAAS,CAAC;AACxD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAkB,SAAS,CAAC;AACtE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC;AAEpE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC9C,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC/C,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;AACvB,gBAAA,UAAU,CAAC,QAAQ;AACnB,gBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,kBAAkB;aACxB,CAAC;YACF,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACzC,gBAAA,UAAU,CAAC,QAAQ;AACnB,gBAAA,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC;aAC1C,CAAC;AACF,YAAA,0BAA0B,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtE,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAChD,SAAA,CAAC;QAIc,IAAA,CAAA,OAAO,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAC5F,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,KAAI;AAC5B,YAAA,IAAI,IAAI,KAAK,MAAM,IAAI,aAAa;AAAE,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACvE,QAAA,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,EAChC,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CACvC;QAEe,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACrD,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,EAC3B,GAAG,CAAC,KAAK,IAAG;AACV,YAAA,IAAI,KAAK;gBAAE,IAAI,CAAC,SAAS,EAAE;QAC7B,CAAC,CAAC,CACH;AAEe,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC;AAE5D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE9C,QAAA,IAAA,CAAA,MAAM,GAAe,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAE5C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAuB,SAAS,CAAC;QAEvE,IAAA,CAAA,eAAe,GAA2B,aAAa,CAAC;AACtE,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK;YACxB,QAAQ,EAAE,KAAK,KAAK,aAAa;AACjC,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,oBAAoB;AAClB,gBAAA,uBAAuB,CAAC,qCAAqC,CAAC,KAAK,CAAC,CACvE;YACD,KAAK;AACL,YAAA,OAAO,EAAE,uBAAuB,CAAC,qCAAqC,CAAC,KAAK,CAAC;SAC9E,CAAC,CAAC,CACJ,CACF;AA8Be,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEjD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAWzD,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAErD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QAQlD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IACxC;IAEO,QAAQ,GAAA;QACb,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;IAEO,OAAO,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;IACd;AAEO,IAAA,mBAAmB,CAAC,OAAgB,EAAA;AACzC,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AAC9B,YAAA,0BAA0B,EAAE,OAAO;AACpC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;IACpC;IAEO,SAAS,GAAA;QACd,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,IAAI,CAAC;aACF,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,EAAE;AACpE,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,eAAe,EAAE;YACxB,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACpB,CAAC;AACF,SAAA,CAAC;IACN;IAEO,UAAU,GAAA;QACf,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACHH,MAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,iBAAiB,IACzB,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAC7C,IAAI,CAAC,iBAAiB,EACtB,iBAAiB,EACjB,IAAI,CAAC,YAAY,EAAE,CACpB,CACF;AAEF,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,eAAe,EAAE;YACxB,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACpB,CAAC;AACF,SAAA,CAAC;IACN;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;AAEO,IAAA,mBAAmB,CAAC,KAG1B,EAAA;AACC,QAAA,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,EAAE,KAAiB;QAE/C,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;AAClD,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;QACpC;IACF;AAEQ,IAAA,WAAW,CAAC,aAAiC,EAAA;QACnD,MAAM,qBAAqB,GAAG,aAAa,CAAC,qBAAqB,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AAChD,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;YAC9B,GAAG,EAAE,aAAa,CAAC,GAAG;YACtB,KAAK,EAAE,aAAa,CAAC,KAAK;AAC1B,YAAA,qBAAqB,EAAE,qBAAqB;YAC5C,0BAA0B,EAAE,aAAa,CAAC,0BAA0B;YACpE,KAAK,EAAE,aAAa,CAAC,KAAK;AAC3B,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9C,QAAA,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;QACrC,IAAI,CAAC,eAAe,EAAE;IACxB;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AAC9B,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,0BAA0B,EAAE,IAAI;YAChC,qBAAqB,EAAE,CAAC,CAAC;YACzB,KAAK,EAAE,QAAQ,CAAC,OAAO;AACxB,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;QACrC,IAAI,CAAC,eAAe,EAAE;IACxB;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAC/E,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,KAAI;AAClC,YAAA,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE;gBACxB,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAC,CAAC;gBACvE;qBAAO;oBACL,IAAI,CAAC,QAAQ,EAAE;gBACjB;YACF;QACF,CAAC,CACF,CACF;IACH;AAEQ,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,MAAM,WAAW,GAAG,CAAA,EAAG,KAAK,CAAA;AACzB,aAAA,WAAW;AACX,aAAA,OAAO,CAAC,2BAA2B,EAAE,GAAG;AACxC,aAAA,OAAO,CAAC,SAAS,EAAE,GAAG;AACtB,aAAA,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAE9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACnC,YAAA,OAAO,WAAW;QACpB;QAEA,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC;IAC3D;IAEQ,sBAAsB,CAAC,WAAmB,EAAE,QAAkB,EAAA;QACpE,MAAM,qBAAqB,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE,GAAG,CAClF,CAAC,WAAmB,KAAK,CAAC,WAAW,CACtC;AACD,QAAA,MAAM,wBAAwB,GAC5B,qBAAqB,CAAC,MAAM,GAAG,CAAC,IAAI,qBAAqB,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG;AACb,cAAE,CAAA,EAAG,WAAW,CAAC,OAAO,CAAC,CAAA,EAAG,wBAAwB,CAAA,CAAE,EAAE,GAAG,wBAAwB,GAAG,CAAC,CAAA,CAAE,CAAC,CAAA;AAC1F,cAAE,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI;AAEtB,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC;QACtD;AAEA,QAAA,OAAO,MAAM;IACf;IAEQ,QAAQ,GAAA;QACd,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAC,GAAG,EAAE,EAAE,EAAC,CAAC;IAC5C;IAEQ,kBAAkB,GAAA;QACxB,OAAO,CAAC,OAAwB,KAC9B,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,KACrB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,GAAW,KAAK,GAAG,KAAK,QAAQ,CAAC,IAAI;AACzD,cAAE;AACF,cAAE,EAAC,SAAS,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC,CACxC,CACF;IACL;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;IAChC;IAEQ,MAAM,CAAC,KAAK,GAAG,IAAI,EAAA;QACzB,UAAU,CACR,MAAK;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;AAC/B,QAAA,CAAC,EACD,KAAK,GAAG,gBAAgB,CAAC,gBAAgB,GAAG,CAAC,CAC9C;IACH;IAEQ,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;IACpC;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC9C;IAEQ,YAAY,GAAA;QAClB,OAAO;AACL,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;AACnB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;AACvB,YAAA,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK;AACvD,YAAA,0BAA0B,EAAE,IAAI,CAAC,0BAA0B,CAAC,KAAK;AACjE,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAiB;SACpC;IACH;+GAxVW,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,8PC1D/C,0hMAiLA,EAAA,MAAA,EAAA,CAAA,6zCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDvHa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,sCAAsC,EAAA,eAAA,EAG/B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0hMAAA,EAAA,MAAA,EAAA,CAAA,6zCAAA,CAAA,EAAA;6KAK3B,IAAI,EAAA,CAAA;sBAAvB;gBAYmB,OAAO,EAAA,CAAA;sBAA1B;gBAIe,QAAQ,EAAA,CAAA;sBAAvB;gBACe,iBAAiB,EAAA,CAAA;sBAAhC;gBAEgB,eAAe,EAAA,CAAA;sBAA/B;;;AEhFH;;;;;;;;;;;;;;AAcG;MA4BU,+BAA+B,CAAA;IAgF1C,WAAA,CACmB,iBAAoC,EACpC,KAAqB,EACrB,kBAAsC,EACtC,sBAA8C,EAC9C,qBAA4C,EAAA;QAJ5C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QApFrB,IAAA,CAAA,OAAO,GAAG,iCAAiC;AAK7C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAuB,IAAI,CAAC;AAE1D,QAAA,IAAA,CAAA,QAAQ,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;AAEpD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEhF,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC5D,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAC/C;AAEe,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;QAE7C,IAAA,CAAA,aAAa,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC1F,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAI;AAClB,YAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B;AACF,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAC5B,IAAI,CAAC,iBAAiB,CAAC,iCAAiC,CAAC,iBAAiB,CAAC,CAC5E,EACD,GAAG,CAAC,QAAQ,IACV,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK;AACtB,YAAA,GAAG,MAAM;YACT,OAAO,EAAE,uBAAuB,CAAC,qCAAqC,CAAC,MAAM,CAAC,KAAK,CAAC;AACrF,SAAA,CAAC,CAAC,CACJ,EACD,GAAG,CAAC,QAAQ,IAAG;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,CACH;AAEe,QAAA,IAAA,CAAA,mBAAmB,GAAwB,aAAa,CACtE,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,yBAAyB,CAC/B,CAAC,IAAI,CACJ,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAC5F,CACF;QAEe,IAAA,CAAA,eAAe,GAAwB,aAAa,CAAC;AACnE,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,yBAAyB;SAC/B,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CACvF,CACF;AAEe,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAiB,EAAE,CAAC;AAEjD,QAAA,IAAA,CAAA,YAAY,GAAiB;AAC3C,YAAA;AACE,gBAAA,KAAK,EAAE,gBAAgB;gBACvB,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;AAEe,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAkB,QAAQ,CAAC;AACjE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC;AAEnE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC;AACpE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAW;IAQtD;IAEI,eAAe,GAAA;QACpB,IAAI,CAAC,UAAU,EAAE;IACnB;AAEO,IAAA,eAAe,CAAC,MAA0B,EAAA;AAC/C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEO,IAAA,aAAa,CAAC,MAA0B,EAAA;AAC7C,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAACQ,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,IAAG;AAC/D,YAAA,IAAI,CAAC,aAAa;gBAAE;AAEpB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;AACpC,QAAA,CAAC,CAAC;IACJ;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;AAEO,IAAA,UAAU,CAAC,eAAsC,EAAA;AACtD,QAAA,IAAI,eAAe,KAAK,iBAAiB,EAAE;YACzC,IAAI,CAAC,MAAM,EAAE;QACf;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtC;AAEO,IAAA,mBAAmB,CAAC,MAA0B,EAAA;AACnD,QAAA,IAAI,CAAC;aACF,IAAI,CACH,SAAS,CAAC,iBAAiB,IACzB,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,CAC/E;aAEF,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,MAAM,EAAE;AACf,QAAA,CAAC,CAAC;IACN;AAEO,IAAA,gBAAgB,CAAC,cAAoC,EAAA;AAC1D,QAAA,IAAI,CAAC,cAAc;YAAE;AAErB,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,SAAS,CAAC,iBAAiB,IACzB,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,cAAc,CAAC,CACrF;aAEF,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC,CAAC;IACN;IAEQ,MAAM,CAAC,WAAW,GAAG,KAAK,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,aAAa,GAAG,IAAI,CAAC;IACxD;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,YAAA;AACE,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,uCAAuC;gBAC9C,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,KAAK,EAAE,qCAAqC;gBAC5C,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,4BAA4B;AACjC,gBAAA,KAAK,EAAE,yCAAyC;gBAChD,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC3B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,uBAAuB;AAC5B,gBAAA,KAAK,EAAE,iDAAiD;gBACxD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,IAAI,CAAC,6BAA6B;AAC7C,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,IAAI,CAAC,mBAAmB;AAClC,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,uCAAuC;AAC/C,aAAA;AACF,SAAA,CAAC;IACJ;+GAlLW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,0VC1C5C,qvGA4FA,EAAA,MAAA,EAAA,CAAA,gtBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,kCAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDlDa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,kCAAkC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qvGAAA,EAAA,MAAA,EAAA,CAAA,gtBAAA,CAAA,EAAA;kOAKb,mBAAmB,EAAA,CAAA;sBAApD,SAAS;uBAAC,qBAAqB;gBACY,6BAA6B,EAAA,CAAA;sBAAxE,SAAS;uBAAC,+BAA+B;;;AE9C5C;;;;;;;;;;;;;;AAcG;MAoCU,gCAAgC,CAAA;IAG3C,IAAoB,IAAI,CAAC,KAAsB,EAAA;AAC7C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAEvB,QAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;YACtB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AACvC,YAAA,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;QACvC;aAAO;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QACvC;IACF;IAEA,IAAoB,OAAO,CAAC,KAAc,EAAA;AACxC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC;AA+DA,IAAA,IAAW,GAAG,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC,EAAE,CAAC;IACjE;AAEA,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,EAAE,CAAC;IACnE;AAEA,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,EAAE,CAAC;IACnE;AAEA,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO;IACzC;AAEA,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ;IAC1C;AAQA,IAAA,WAAA,CACmB,EAAe,EACf,WAAwB,EACxB,gBAAkC,EAClC,cAA8B,EAAA;QAH9B,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,cAAc,GAAd,cAAc;QA7Gd,IAAA,CAAA,OAAO,GAAG,mCAAmC;AAsB/C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAyB;AAE3D,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAA8B,SAAS,CAAC;AACpE,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CACzD,SAAS,CACV;AACgB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAsB,SAAS,CAAC;AAEtE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC/C,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC/C,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;AACvB,gBAAA,UAAU,CAAC,QAAQ;AACnB,gBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,kBAAkB;aACxB,CAAC;AACF,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAChD,SAAA,CAAC;QAEc,IAAA,CAAA,OAAO,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAC7F,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,cAAc,CAAC,KAAI;AAC7B,YAAA,IAAI,IAAI,KAAK,MAAM,IAAI,cAAc,EAAE;AACrC,gBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;YAClC;YACA,OAAO,IAAI,KAAK,MAAM;QACxB,CAAC,CAAC,CACH;QAEe,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACrD,GAAG,CAAC,IAAI,IAAG;YACT,IAAI,IAAI,KAAK,KAAK;gBAAE,IAAI,CAAC,SAAS,EAAE;YACpC,OAAO,IAAI,KAAK,KAAK;QACvB,CAAC,CAAC,CACH;AAEe,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC;AAE5D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE9C,QAAA,IAAA,CAAA,MAAM,GAAe,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC5C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAuB,SAAS,CAAC;QAEvE,IAAA,CAAA,eAAe,GAA2B,aAAa,CAAC;AACtE,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK;YACxB,QAAQ,EAAE,KAAK,KAAK,aAAa;AACjC,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,oBAAoB,GAAG,aAAa,CAAC,0BAA0B,CAAC,KAAK,CAAC,CACvE;YACD,KAAK;AACL,YAAA,OAAO,EAAE,aAAa,CAAC,0BAA0B,CAAC,KAAK,CAAC;SACzD,CAAC,CAAC,CACJ,CACF;AAsBe,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEhD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAEtD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QAQlD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IACxC;IAEO,QAAQ,GAAA;QACb,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;IAEO,UAAU,GAAA;QACf,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC;AACF,aAAA,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,YAAY,EAAE;AACtF,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,eAAe,EAAE;YACxB,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACpB,CAAC;AACF,SAAA,CAAC;IACN;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,IAAI,CAAC;aACF,IAAI,CACHE,MAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,kBAAkB,IAAG;YAC7B,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CACtC,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,wBAAwB,EAC7B,kBAAkB,EAClB,IAAI,CAAC,YAAY,EAAE,CACpB;AACH,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,eAAe,EAAE;YACxB,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACpB,CAAC;AACF,SAAA,CAAC;IACN;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;AAEO,IAAA,mBAAmB,CAAC,KAG1B,EAAA;AACC,QAAA,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,EAAE,KAAiB;QAE/C,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;AACnD,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;QACrC;IACF;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;IACpC;AAEQ,IAAA,WAAW,CAAC,cAAuB,EAAA;QACzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AAClD,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;YAC/B,GAAG,EAAE,cAAc,CAAC,GAAG;YACvB,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,KAAK,EAAE,cAAc,CAAC,KAAK;AAC5B,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;QACtC,IAAI,CAAC,eAAe,EAAE;IACxB;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AAC/B,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ,CAAC,IAAI;AACrB,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;QACtC,IAAI,CAAC,eAAe,EAAE;IACxB;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAC/E,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,KAAI;AAClC,YAAA,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE;gBACxB,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAC,CAAC;gBACxE;qBAAO;oBACL,IAAI,CAAC,QAAQ,EAAE;gBACjB;YACF;QACF,CAAC,CACF,CACF;IACH;AAEQ,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,MAAM,WAAW,GAAG,CAAA,EAAG,KAAK,CAAA;AACzB,aAAA,WAAW;AACX,aAAA,OAAO,CAAC,2BAA2B,EAAE,GAAG;AACxC,aAAA,OAAO,CAAC,SAAS,EAAE,GAAG;AACtB,aAAA,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAE9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACnC,YAAA,OAAO,WAAW;QACpB;QAEA,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC;IAC3D;IAEQ,sBAAsB,CAAC,WAAmB,EAAE,QAAkB,EAAA;QACpE,MAAM,qBAAqB,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE,GAAG,CAClF,CAAC,WAAmB,KAAK,CAAC,WAAW,CACtC;AACD,QAAA,MAAM,wBAAwB,GAC5B,qBAAqB,CAAC,MAAM,GAAG,CAAC,IAAI,qBAAqB,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG;AACb,cAAE,CAAA,EAAG,WAAW,CAAC,OAAO,CAAC,CAAA,EAAG,wBAAwB,CAAA,CAAE,EAAE,GAAG,wBAAwB,GAAG,CAAC,CAAA,CAAE,CAAC,CAAA;AAC1F,cAAE,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI;AAEtB,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC;QACtD;AAEA,QAAA,OAAO,MAAM;IACf;IAEQ,QAAQ,GAAA;QACd,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAC,GAAG,EAAE,EAAE,EAAC,CAAC;IAC7C;IAEQ,kBAAkB,GAAA;QACxB,OAAO,CAAC,OAAwB,KAC9B,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,KACrB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,GAAW,KAAK,GAAG,KAAK,QAAQ,CAAC,IAAI;AACzD,cAAE;AACF,cAAE,EAAC,SAAS,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC,CACxC,CACF;IACL;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;IACjC;IAEQ,MAAM,CAAC,KAAK,GAAG,IAAI,EAAA;QACzB,UAAU,CACR,MAAK;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAChC,QAAA,CAAC,EACD,KAAK,GAAG,gBAAgB,CAAC,gBAAgB,GAAG,CAAC,CAC9C;IACH;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC9C;IAEQ,YAAY,GAAA;QAClB,OAAO;AACL,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;AACnB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;AACvB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAiB;SACpC;IACH;+GA5SW,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,kTClD7C,6rIA4HA,EAAA,MAAA,EAAA,CAAA,ykCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD1Ea,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAP5C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,oCAAoC,EAAA,eAAA,EAG7B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6rIAAA,EAAA,MAAA,EAAA,CAAA,ykCAAA,CAAA,EAAA;0KAK3B,IAAI,EAAA,CAAA;sBAAvB;gBAYmB,OAAO,EAAA,CAAA;sBAA1B;gBAIe,QAAQ,EAAA,CAAA;sBAAvB;gBACe,iBAAiB,EAAA,CAAA;sBAAhC;gBACe,wBAAwB,EAAA,CAAA;sBAAvC;gBAEgB,eAAe,EAAA,CAAA;sBAA/B;;;AEzEH;;;;;;;;;;;;;;AAcG;MAoCU,2BAA2B,CAAA;AAoFtC,IAAA,WAAA,CACmB,cAA8B,EAC9B,KAAqB,EACrB,sBAA8C,EAC9C,qBAA4C,EAAA;QAH5C,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QAvFrB,IAAA,CAAA,OAAO,GAAG,6BAA6B;AAIzC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAuB,IAAI,CAAC;AAE1D,QAAA,IAAA,CAAA,QAAQ,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;AAEpD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAE7C,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACtE,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC5D,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,wBAAwB,CAAC,CACrC;AAEe,QAAA,IAAA,CAAA,mBAAmB,GAAwB,aAAa,CACtE,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,yBAAyB,CAC/B,CAAC,IAAI,CACJ,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAC5F,CACF;AAEe,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;AAE5C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QAEpC,IAAA,CAAA,SAAS,GAAG,aAAa,CAAC;AACxC,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,yBAAyB;AAC9B,YAAA,IAAI,CAAC,QAAQ;AACd,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAI;AACtB,YAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B;AACF,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CACvF,EACD,GAAG,CAAC,QAAQ,IACV,QAAQ,CAAC,GAAG,CAAC,OAAO,KAAK;AACvB,YAAA,GAAG,OAAO;YACV,OAAO,EAAE,aAAa,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,CAAC;AACjE,SAAA,CAAC,CAAC,CACJ,EACD,GAAG,CAAC,QAAQ,IAAG;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;AACzD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,CACH;QAEe,IAAA,CAAA,eAAe,GAAwB,aAAa,CAAC;AACnE,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,yBAAyB;SAC/B,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CACvF,CACF;AAEe,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAiB,EAAE,CAAC;AAEjD,QAAA,IAAA,CAAA,YAAY,GAAiB;AAC3C,YAAA;AACE,gBAAA,KAAK,EAAE,gBAAgB;gBACvB,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;AAEe,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAkB,QAAQ,CAAC;AACjE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAsB,SAAS,CAAC;AAErE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAsB,SAAS,CAAC;AACtE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAW;IAOtD;IAEI,eAAe,GAAA;QACpB,IAAI,CAAC,UAAU,EAAE;IACnB;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;AAEO,IAAA,eAAe,CAAC,OAAgB,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEO,IAAA,aAAa,CAAC,OAAgB,EAAA;AACnC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACnF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;AACpC,QAAA,CAAC,CAAC;IACJ;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;AAEO,IAAA,UAAU,CAAC,eAAsC,EAAA;AACtD,QAAA,IAAI,eAAe,KAAK,iBAAiB,EAAE;YACzC,IAAI,CAAC,MAAM,EAAE;QACf;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtC;AAEO,IAAA,oBAAoB,CAAC,OAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,yBAAyB,CAAC;aACpE,IAAI,CACH,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,cAAc,CAAC,aAAa,CAC/B,iBAAiB,EACjB,wBAAwB,EACxB,OAAO,CAAC,GAAG,CACZ,CACF;aAEF,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,MAAM,EAAE;QACf,CAAC,CAAC,CACL;IACH;AAEO,IAAA,qBAAqB,CAAC,cAAyB,EAAA;AACpD,QAAA,IAAI,CAAC,cAAc;YAAE;AAErB,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,MAAM,CAAC,aAAa,IAAI,aAAa,CAAC,EACtC,SAAS,CAAC,MACR,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAACO,MAAI,CAAC,CAAC,CAAC,CAAC,CACvF,EACD,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,cAAc,CAAC,cAAc,CAChC,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,CACf,CACF;aAEF,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC,CAAC;IACN;IAEQ,MAAM,CAAC,WAAW,GAAG,KAAK,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,aAAa,GAAG,IAAI,CAAC;IACxD;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,YAAA;AACE,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,uCAAuC;gBAC9C,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,KAAK,EAAE,qCAAqC;gBAC5C,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,IAAI,CAAC,mBAAmB;AAClC,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,uCAAuC;AAC/C,aAAA;AACF,SAAA,CAAC;IACJ;+GA1LW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,qNClDxC,u9FAoFA,EAAA,MAAA,EAAA,CAAA,yqBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,gCAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAb,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDlCa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,8BAA8B,EAAA,eAAA,EAGvB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,u9FAAA,EAAA,MAAA,EAAA,CAAA,yqBAAA,CAAA,EAAA;4LAKb,mBAAmB,EAAA,CAAA;sBAApD,SAAS;uBAAC,qBAAqB;;;AErDlC;;;;;;;;;;;;;;AAcG;MAiBU,iCAAiC,CAAA;IAgB5C,WAAA,CACmB,mBAAwC,EACxC,KAAqB,EAAA;QADrB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,KAAK,GAAL,KAAK;AAjBR,QAAA,IAAA,CAAA,eAAe,GAAwB,4BAA4B,CACjF,IAAI,CAAC,KAAK,CACX,CAAC,IAAI,CACJ,SAAS,CAAC,CAAC,MAAwC,KACjD,CAAC;AACC,cAAE,EAAE,CAAC,KAAK;AACV,cAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,CACrC,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,wBAAwB,CAChC,CACN,CACF;QACe,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAU,OAAO,CAAC,IAAI,CAAC;QACxD,IAAA,CAAA,OAAO,GAAG,OAAO;IAK9B;AAEI,IAAA,SAAS,CAAC,GAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B;+GAvBW,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,yEC/B9C,s2EAgEA,EAAA,MAAA,EAAA,CAAA,urBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,mCAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAqB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDjCa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;iCACI,KAAK,EAAA,eAAA,EAGA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,s2EAAA,EAAA,MAAA,EAAA,CAAA,urBAAA,CAAA,EAAA;;;AE7BjD;;;;;;;;;;;;;;AAcG;MAyDU,mCAAmC,CAAA;IA6S9C,WAAA,CACmB,eAAgC,EAChC,KAAqB,EACrB,gBAAkC,EAClC,WAAwB,EACxB,sBAA8C,EAAA;QAJ9C,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;AAjTzB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC;AACjE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACtD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAA0B,SAAS,CAAC;AAC9E,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,eAAe,CAC9D,SAAS,CACV;AACe,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAqB,IAAI,CAAC;AACzD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACjD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEtD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,CAAC;QACzC,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,gBAAgB,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC;AAErF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAiB;AAC1C,YAAA;AACE,gBAAA,KAAK,EAAE,gBAAgB;gBACvB,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF;AAEe,QAAA,IAAA,CAAA,MAAM,GAAmB;AACvC,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,4BAA4B;AACpC,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,KAAK,EAAE,0BAA0B;AAClC,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,KAAK,EAAE,2BAA2B;AACnC,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,UAAU;AACf,gBAAA,KAAK,EAAE,+BAA+B;AACvC,aAAA;AACD,YAAA;gBACE,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,WAAW;AAChB,gBAAA,KAAK,EAAE,gCAAgC;AACxC,aAAA;SACF;QAEe,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAqB;AACzE,YAAA;AACE,gBAAA,mBAAmB,EAAE,yBAAyB;AAC9C,gBAAA,OAAO,EAAE,KAAK;AACf,aAAA;AACD,YAAA;AACE,gBAAA,mBAAmB,EAAE,2BAA2B;AAChD,gBAAA,OAAO,EAAE,OAAO;AACjB,aAAA;AACF,SAAA,CAAC;AAEe,QAAA,IAAA,CAAA,UAAU,GAA+B;YACxD,MAAM;YACN,QAAQ;YACR,MAAM;YACN,UAAU;YACV,SAAS;SACV;QAEe,IAAA,CAAA,cAAc,GAAkC,IAAI,CAAC;aAClE,MAAM,CAAC,KAAK;AACZ,aAAA,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,KAAK;AAC/B,YAAA,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,aAAA,EAAgB,QAAQ,CAAA,CAAE,CAAC;SAChE,CAAC,CAAC,CACJ,CACF;AAEa,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACvD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACrD,QAAA,IAAA,CAAA,eAAe,GAAgC;YAC9D,QAAQ;YACR,OAAO;YACP,wBAAwB;YACxB,uBAAuB;SACxB;AACgB,QAAA,IAAA,CAAA,oBAAoB,GAAgC,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvE,QAAA,IAAA,CAAA,mBAAmB,GAAgC,CAAC,QAAQ,CAAC;QAC9D,IAAA,CAAA,eAAe,GAAkC,aAAa,CAAC;AAC7E,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,cAAc,CAAC,KAAI;YAC1C,IAAI,iBAAiB,EAAE;gBACrB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,KAAK;AAChD,oBAAA,EAAE,EAAE,SAAS;oBACb,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,SAAS,CAAA,CAAE,CAAC;AACzE,iBAAA,CAAC,CAAC;YACL;iBAAO,IAAI,CAAC,cAAc,EAAE;gBAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,KAAK;AACjD,oBAAA,EAAE,EAAE,SAAS;oBACb,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,SAAS,CAAA,CAAE,CAAC;AACzE,iBAAA,CAAC,CAAC;YACL;YAEA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,KAAK;AAC5C,gBAAA,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,SAAS,CAAA,CAAE,CAAC;AACzE,aAAA,CAAC,CAAC;QACL,CAAC,CAAC,CACH;AAEgB,QAAA,IAAA,CAAA,WAAW,GAAgC,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7D,IAAA,CAAA,eAAe,GAAkC,IAAI,CAAC;aACnE,MAAM,CAAC,KAAK;AACZ,aAAA,IAAI,CACH,GAAG,CAAC,MACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,KAAK;AACjC,YAAA,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,SAAS,CAAA,CAAE,CAAC;SACzE,CAAC,CAAC,CACJ,CACF;QAIa,IAAA,CAAA,kBAAkB,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACpF,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC,EAC7C,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAChD,GAAG,CAAC,CAAC,iBAAyB,MAAM,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,CAAC,CAClF;AAEe,QAAA,IAAA,CAAA,yBAAyB,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAC3F,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,wBAAwB,IAAI,EAAE,CAAC,EACpD,MAAM,CAAC,wBAAwB,IAAI,CAAC,CAAC,wBAAwB,CAAC,CAC/D;AAMgB,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;QAEtD,IAAA,CAAA,aAAa,GAAmC,aAAa,CAAC;AAC7E,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,oBAAoB;SAC1B,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAC5B,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAChE,EACD,GAAG,CAAC,YAAY,IAAG;AACjB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAACZ,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,IAAG;AAClE,gBAAA,IAAI,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,EAAE,MAAM,GAAG,CAAC,EAAE;AAC3E,oBAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,YAAY,CAAC;gBACnD;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC,EACF,GAAG,CAAC,YAAY,IAAG;AACjB,YAAA,IAAI,CAAC,kBAAkB,GAAG,YAAY;QACxC,CAAC,CAAC,CACH;QAEO,IAAA,CAAA,2BAA2B,GAAkB,EAAE;AAEvC,QAAA,IAAA,CAAA,gBAAgB,GAA4B,IAAI,CAAC,aAAa,CAAC,IAAI,CACjF,GAAG,CAAC,CAAC,YAA2B,MAAM;AACpC,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AACnC,YAAA,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC,CACJ;QAEe,IAAA,CAAA,uBAAuB,GAAmC,aAAa,CAAC;AACtF,YAAA,IAAI,CAAC,aAAa;AAClB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAI;YACrB,MAAM,oBAAoB,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,KAAK,EAAC,GAAG,KAAK,EAAE,IAAI,EAAEa,EAAM,EAAE,EAAC,CAAC,CAAC;AAEpF,YAAA,IAAI,CAAC,2BAA2B,GAAG,oBAAoB;YAEvD,OAAO,oBAAoB,CAAC,GAAG,CAAC,WAAW,KAAK;AAC9C,gBAAA,GAAG,WAAW;AACd,gBAAA,KAAK,EAAE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,EAAE;AACjD,gBAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,aAAA,EAAgB,WAAW,CAAC,QAAQ,CAAA,CAAE,CAAC;AAC/E,gBAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,WAAW,CAAC,SAAS,CAAA,CAAE,CAAC;AACzF,gBAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,WAAW,CAAC,SAAS,CAAA,CAAE,CAAC;AAC1F,aAAA,CAAC,CAAC;QACL,CAAC,CAAC,CACH;QAEe,IAAA,CAAA,mBAAmB,GAAwB,aAAa,CAAC;AACvE,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,yBAAyB;SAC/B,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAC5F,CACF;AAEe,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAE1D,IAAA,CAAA,0BAA0B,GAAkC,aAAa,CAAC;AACxF,YAAA,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE;AAC/C,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KACd,SAAS,CAAC,GAAG,CAAC,QAAQ,KAAK;AACzB,YAAA,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,QAAQ,CAAA,CAAE,CAAC;SACxE,CAAC,CAAC,CACJ,CACF;AAEgB,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAmB,EAAE,CAAC;QAEpE,IAAA,CAAA,sBAAsB,GAAiC,aAAa,CAAC;AACnF,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,SAAS;SACf,CAAC,CAAC,IAAI,CACL,oBAAoB,CAClB,CAAC,CAAC,qBAAqB,EAAE,YAAY,CAAC,EAAE,CAAC,qBAAqB,EAAE,YAAY,CAAC,KAC3E,qBAAqB,KAAK,qBAAqB;AAC/C,YAAA,YAAY,EAAE,oBAAoB,KAAK,YAAY,EAAE,oBAAoB;AACzE,YAAA,YAAY,EAAE,GAAG,KAAK,YAAY,EAAE,GAAG,CAC1C,EACD,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,KAAI;YAC1C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AAC/C,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC;YACf;YAEA,OAAO,IAAI,CAAC;iBACT,eAAe,CAAC,QAAQ,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,GAAG;AAC9E,iBAAA,IAAI,CACH,GAAG,CAAC,YAAY,IACd;AACE,kBAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,KAAK;AACjD,oBAAA,GAAG,EAAE,gBAAgB;AACrB,oBAAA,KAAK,EAAE,YAAY,CAAC,gBAAgB,CAAC;AACtC,iBAAA,CAAC;AACJ,kBAAE,EAAE,CACP,CACF;QACL,CAAC,CAAC,CACH;QAEe,IAAA,CAAA,eAAe,GAAwB,aAAa,CAAC;AACnE,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,oBAAoB;SAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,mBAAmB,CAAC,KAAK,cAAc,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE/E,IAAA,CAAA,0BAA0B,GAAwB,aAAa,CAAC;AAC9E,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,SAAS;AACf,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,cAAc,EAAE,mBAAmB,EAAE,QAAQ,CAAC,KAC9C,cAAc;YACd,mBAAmB;YACnB,CAAC,CAAC,QAAQ,EAAE,oBAAoB;YAChC,CAAC,IAAI,CAAC,mCAAmC,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAC5E,CACF;QAEe,IAAA,CAAA,uBAAuB,GAAwB,aAAa,CAAC;AAC3E,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,SAAS;AACf,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,cAAc,EAAE,mBAAmB,EAAE,QAAQ,CAAC,KAC9C,cAAc;YACd,mBAAmB;YACnB,CAAC,CAAC,QAAQ,EAAE,oBAAoB;YAChC,IAAI,CAAC,mCAAmC,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAC3E,CACF;QAEe,IAAA,CAAA,YAAY,GAAG,OAAO;QAEtB,IAAA,CAAA,uBAAuB,GAAG,uBAAuB;QAS/D,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IACxC;IAEO,QAAQ,GAAA;QACb,IAAI,CAAC,mCAAmC,EAAE;IAC5C;IAEO,eAAe,GAAA;QACpB,IAAI,CAAC,4BAA4B,EAAE;IACrC;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;IAEO,kBAAkB,CAAC,WAAwB,EAAE,0BAAmC,EAAA;QACrF,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC;aACzD,IAAI,CACHb,MAAI,CAAC,CAAC,CAAC,EACP,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,aAAa,IAAI,aAAa,CAAC;aAE5E,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,0BAA0B,GAAG,0BAA0B;YAC5D,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACtD,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CACvC;YACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,IAAK,EAAkB,CAAC;YAC1E,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC,CAAC;IACN;AAEO,IAAA,eAAe,CAAC,IAAiB,EAAA;QACtC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;AAClE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;AACxE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AACxC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC,EAAE,CAAC,CAAC;IACP;AAEO,IAAA,eAAe,CAAC,IAAY,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,IAAG;YACnD,MAAM,OAAO,GAAG,EAAC,GAAG,WAAW,EAAE,IAAI,EAAC;YACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;AAC3C,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxD,QAAA,CAAC,CAAC;IACJ;AAEO,IAAA,sBAAsB,CAAC,IAAsB,EAAA;AAClD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAwB,CAAC;IAC7D;IAEO,gBAAgB,CAAC,iBAAyB,EAAE,KAAoB,EAAA;AACrE,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB;YAAE;AAElC,QAAA,MAAM,uBAAuB,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,IACnD,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,CAC5F;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;IACrE;AAEO,IAAA,kCAAkC,CAAC,mBAAgC,EAAA;QACxE,IAAI,CAAC,YAAY,EAAE;QAEnB,IAAI,IAAI,CAAC,mCAAmC,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,EAAE;AACvF,YAAA,IAAI,CAAC;AACF,iBAAA,kBAAkB,CACjB,mBAAmB,EAAE,oBAAoB,IAAI,EAAE,EAC/C,IAAI,CAAC,kBAAkB,EACvB,mBAAmB,CAAC,GAAG;AAExB,iBAAA,SAAS,EAAE;QAChB;AAEA,QAAA,IAAI,CAAC;aACF,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,GAAG;AACrE,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,mBAAmB,EAAE;YAC5B,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,WAAW,EAAE;YACpB,CAAC;AACF,SAAA,CAAC;IACN;AAEO,IAAA,eAAe,CAAC,iBAAyB,EAAA;QAC9C,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;YAChD,IAAI,CAAC,QAAQ,EAAE;gBACb;YACF;AACA,YAAA,MAAM,cAAc,GAAgB;AAClC,gBAAA,GAAG,QAAQ;AACX,gBAAA,SAAS,EACP,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,QAAQ,EAAE,QAAQ,KAAK;sBACrE,QAAQ,CAAC;AACX,sBAAE,OAAO;AACb,gBAAA,SAAS,EAAE,QAAQ,CAAC,QAAQ,KAAK,SAAS,GAAG,QAAQ,CAAC,SAAS,GAAG,QAAQ;aAC3E;AAED,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK;AACpD,YAAA,IACE,IAAI,CAAC,mCAAmC,CAAC,YAAY,EAAE,oBAAoB,CAAC;AAC5E,gBAAA,YAAY,EAAE,oBAAoB,KAAK,cAAc,EAAE,oBAAoB,EAC3E;AACA,gBAAA,IAAI,CAAC;AACF,qBAAA,kBAAkB,CACjB,YAAY,EAAE,oBAAoB,IAAI,EAAE,EACxC,iBAAiB,EACjB,YAAY,EAAE,GAAG,IAAI,EAAE;AAExB,qBAAA,SAAS,EAAE;YAChB;YAEA,IAAI,IAAI,CAAC,mCAAmC,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE;AACjF,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,IAAG;AACpE,oBAAA,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,QAAQ,MAAM,EAAC,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAC,CAAC,EAC7D,EAAE,CACH;AACD,oBAAA,IAAI,CAAC;AACF,yBAAA,gBAAgB,CACf,cAAc,CAAC,oBAAoB,IAAI,EAAE,EACzC,iBAAiB,EACjB,cAAc,CAAC,GAAG,EAClB,OAAO;AAER,yBAAA,SAAS,EAAE;AAChB,gBAAA,CAAC,CAAC;YACJ;AAEA,YAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,gBAAA,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,SAAS,CAClF,MAAK;oBACH,IAAI,CAAC,WAAW,EAAE;oBAClB,IAAI,CAAC,SAAS,EAAE;oBAChB,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,CAAC,EACD,MAAK;oBACH,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,CAAC,CACF;YACH;iBAAO;gBACL,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAC9C,gBAAA,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC;AACrF,gBAAA,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC;gBAElF,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,EAAE,cAAc,CAAC;AACxD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,cAAc,CAAC;YAC5D;AACF,QAAA,CAAC,CAAC;IACJ;IAEO,kBAAkB,CAAC,iBAAyB,EAAE,eAAmC,EAAA;QACtF,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,SAAS,CAClF,MAAK;YACH,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,mBAAmB,EAAE;QAC5B,CAAC,EACD,MAAK;YACH,IAAI,CAAC,WAAW,EAAE;AACpB,QAAA,CAAC,CACF;IACH;IAEO,YAAY,GAAA;QACjB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEO,eAAe,GAAA;QACpB,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC;AAClD,aAAA,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAI;AACzB,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;gBAAE;YAEnB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AAC1C,YAAA,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE;AAC5B,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI;AACtB,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACjC,MAAM,CAAC,KAAK,EAAE;AACd,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACnC,QAAA,CAAC,CAAC;IACN;IAEO,UAAU,GAAA;QACf,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAEnD,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAAE,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;IACpE;IAEQ,aAAa,CAAC,iBAAuC,EAAE,KAAU,EAAA;AACvE,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACrE,YAAA,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B;IACF;AAEQ,IAAA,OAAO,CAAC,IAAiB,EAAA;QAC/B,MAAM,cAAc,GAClB,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI;QAC/F,MAAM,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS;cACrE,IAAI,CAAC;cACL,IAAI;AACR,QAAA,MAAM,iBAAiB,GAAG,CAAC,EACzB,IAAI,CAAC,GAAG;AACR,YAAA,IAAI,CAAC,QAAQ;YACb,cAAc;YACd,yBAAyB;AACzB,YAAA,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,SAAS,CACf;AACD,QAAA,MAAM,WAAW,GACf,CAAC,IAAI,CAAC,0BAA0B;YAChC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3E,OAAO,iBAAiB,IAAI,WAAW;IACzC;AAEQ,IAAA,mBAAmB,CAAC,SAAgC,EAAA;AAC1D,QAAA,OAAO,SAAS,KAAK,wBAAwB,IAAI,SAAS,KAAK,uBAAuB;IACxF;AAEQ,IAAA,mCAAmC,CAAC,oBAA6B,EAAA;QACvE,OAAO,oBAAoB,KAAK,8BAA8B;IAChE;IAEQ,mCAAmC,GAAA;AACzC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,mBAAmB,IAAG;AACxD,YAAA,IAAI,mBAAmB;gBAAE,IAAI,CAAC,SAAS,EAAE;QAC3C,CAAC,CAAC,CACH;IACH;IAEQ,4BAA4B,GAAA;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,IAAG;YAC1C,IAAI,YAAY,EAAE;gBAChB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,CAAC,EAAE,CAAC,CAAC;YACP;iBAAO;gBACL,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,gBAAA,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;YACvC;QACF,CAAC,CAAC,CACH;IACH;IAEQ,WAAW,CAAC,iBAAyB,EAAE,YAAgC,EAAA;QAC7E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA,EAAG,iBAAiB,CAAA,KAAA,CAAO,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,+BAA+B,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,YAAY,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAC9F;IACH;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;IACtC;AAEQ,IAAA,eAAe,CAAC,WAAwB,EAAA;AAC9C,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC;AACjD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEQ,IAAA,aAAa,CAAC,WAAwB,EAAA;AAC5C,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC;IAC7C;+GAxlBW,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,kGCvEhD,q9XAwUA,EAAA,MAAA,EAAA,CAAA,guCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,oCAAA,EAAA,2BAAA,EAAA,6CAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,mCAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDjQa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAP/C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,uCAAuC,EAAA,eAAA,EAGhC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,q9XAAA,EAAA,MAAA,EAAA,CAAA,guCAAA,CAAA,EAAA;;;AErEjD;;;;;;;;;;;;;;AAcG;MA4CU,kCAAkC,CAAA;IAiQ7C,WAAA,CACmB,eAAgC,EAChC,KAAqB,EACrB,gBAAkC,EAClC,WAAwB,EACxB,sBAA8C,EAAA;QAJ9C,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QArQtB,IAAA,CAAA,OAAO,GAAG,qCAAqC;AAElD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AAEpC,QAAA,IAAA,CAAA,WAAW,GAAiB;AAC1C,YAAA,EAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAC;SACjF;AAEe,QAAA,IAAA,CAAA,OAAO,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;AAElD,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAE5D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AAEhD,QAAA,IAAA,CAAA,MAAM,GAAwB;AAC5C,YAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAC;AAC9E,YAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAC;AAC1E,YAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAC;AAC5E,YAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,wBAAwB,EAAC;AAC1F,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,uBAAuB;AAC5B,gBAAA,KAAK,EAAE,kCAAkC;AAC1C,aAAA;AACD,YAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,qBAAqB,EAAC;AACpF,YAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,wBAAwB,EAAC;AAC1F,YAAA,EAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,wBAAwB,EAAC;SAC3F;AAEe,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAE3D,IAAA,CAAA,qBAAqB,GAA0B,EAAE;AAExC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;QAEzD,IAAA,CAAA,gBAAgB,GAAsC,aAAa,CAAC;AACnF,YAAA,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,uBAAuB;AAC7B,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KACjB,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CACxE,EACD,GAAG,CAAC,eAAe,IAAG;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAC5C,gBAAA,IAAI,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC;gBAC7D;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC,EACF,GAAG,CAAC,eAAe,IAAG;YACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,qBAAqB,GAAG,eAAe;AAC5C,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;YACxC,IAAI,CAAC,WAAW,EAAE;QACpB,CAAC,CAAC,CACH;AAEe,QAAA,IAAA,CAAA,gBAAgB,GAA4B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACpF,GAAG,CAAC,CAAC,eAAiC,MAAM;AAC1C,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AACtC,YAAA,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC,CACJ;AAEe,QAAA,IAAA,CAAA,0BAA0B,GAA0C,aAAa,CAC/F,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC7D,CAAC,IAAI,CACJ,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KACZ,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK;AACrB,YAAA,GAAG,MAAM;AACT,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG;YAC1B,QAAQ,EAAE,MAAM,CAAC;kBACb,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wBAAwB;kBACtD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAC1D,YAAA,WAAW,EACT,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK;AAC3B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,CAAC;AACzD,iBAAC,MAAM,CAAC,WAAW,KAAK,MAAM;AAC5B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;gBAC3D,GAAG;AACL,YAAA,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACxC,CAAA,sBAAA,EAAyB,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CACrD;YACD,qBAAqB,EAAE,4BAA4B,CACjD,MAAM,CAAC,WAAW,CAAC,qBAAqB,CACzC;SACF,CAAC,CAAC,CACJ,CACF;AAEe,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAkB,QAAQ,CAAC;AAElE,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEhD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEhD,IAAA,CAAA,WAAW,GAAG,SAAS;QAEvB,IAAA,CAAA,SAAS,GAAG,IAAI,SAAS,CAAC;AACxC,YAAA,KAAK,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;YAC1B,GAAG,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC7C,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC9C,YAAA,UAAU,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;YAC/B,WAAW,EAAE,IAAI,WAAW,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAC,CAAC;AACrD,YAAA,QAAQ,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC;YAChC,WAAW,EAAE,IAAI,WAAW,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAC,CAAC;AACrD,YAAA,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;AACzB,YAAA,SAAS,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC;AAC7B,YAAA,UAAU,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC;AACnC,SAAA,CAAC;QAEc,IAAA,CAAA,mBAAmB,GAAG,aAAa,CAAC;AAClD,YAAA,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,SAAS,CAAC,YAAY;AAC5B,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,gBAAgB,CAAC,KACjB,gBAAgB,KAAK,QAAQ;YAC7B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAClE,EACD,SAAS,CAAC,KAAK,CAAC,CACjB;AAEe,QAAA,IAAA,CAAA,aAAa,GAAoB;AAC/C,YAAA,QAAQ,CAAC,IAAI;AACb,YAAA,QAAQ,CAAC,IAAI;AACb,YAAA,QAAQ,CAAC,OAAO;AAChB,YAAA,QAAQ,CAAC,IAAI;AACb,YAAA,QAAQ,CAAC,WAAW;AACpB,YAAA,QAAQ,CAAC,qBAAqB;AAC9B,YAAA,QAAQ,CAAC,IAAI;SACd;AAEe,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAChE,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5E,GAAG,CAAC,cAAc,IAAG;AACnB,YAAA,IAAI,cAAc,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE;gBACjE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,UAAU,EAAE,EAAE,EAAC,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,CACjB;QAEe,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAC/D,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EACxE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAC1F;AAEe,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAC1D,GAAG,CACD,UAAU,IACR,CAAC,EACC,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AACrD,YAAA,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CACtD,CACJ,EACD,GAAG,CAAC,QAAQ,IAAG;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;AAC3C,YAAA,IAAI,QAAQ,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1E,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,EAAE,EAAC,CAAC;YACvC;AACF,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,CACjB;AAEe,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CACzD,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7E;AAEe,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;QAE3D,IAAA,CAAA,cAAc,GAAgC,aAAa,CAAC;AAC1E,YAAA,IAAI,CAAC,0BAA0B;AAC/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAC9B;AACE,YAAA;gBACE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8BAA8B,CAAC;gBACtE,GAAG,EAAE,IAAI,CAAC,WAAW;AACtB,aAAA;YACD,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK;gBACjC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAA,CAAE,CAAC;AACvE,gBAAA,GAAG,EAAE,IAAI;AACV,aAAA,CAAC,CAAC;SACJ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,EAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,KAAK,yBAAyB,EAAC,CAAC,CAAC,CACnF,CACF;AAEe,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;QAEvD,IAAA,CAAA,UAAU,GAAgC,aAAa,CAAC;AACtE,YAAA,IAAI,CAAC,sBAAsB;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAC1B;AACE,YAAA;gBACE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8BAA8B,CAAC;gBACtE,GAAG,EAAE,IAAI,CAAC,WAAW;AACtB,aAAA;AACD,YAAA,EAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,sBAAA,CAAwB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAC;AAC9E,YAAA,EAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,uBAAA,CAAyB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAC;SACjF,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,EAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,KAAK,qBAAqB,EAAC,CAAC,CAAC,CAC/E,CACF;QAEe,IAAA,CAAA,SAAS,GAAG,aAAa,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,YAAY;AAC3B,YAAA,IAAI,CAAC,iBAAiB;AACvB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,KAAI;AACrC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC;YACzE,OAAO,gBAAgB,KAAK,QAAQ,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI;AAC5F,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,CACjB;AAEe,QAAA,IAAA,CAAA,MAAM,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACxF,GAAG,CACD,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,KACrB,CAAC,EACC,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,WAAW;AAChD,YAAA,UAAU,CAAC,IAAI;YACf,QAAQ;aACP,UAAU,EAAE,WAAW,EAAE,GAAG,KAAK,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;AAC9E,aAAC,UAAU,EAAE,WAAW,EAAE,GAAG,KAAK,MAAM,GAAG,UAAU,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAC5E,CACJ,EACD,SAAS,CAAC,KAAK,CAAC,CACjB;AAEe,QAAA,IAAA,CAAA,mBAAmB,GAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,CAC1E,SAAS,CAAC,MAAM,IACd,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAC5C,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,wBAAwB,CAChC,CACF,CACF;AAEQ,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAW;AAEzC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAE/C,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAA0B,IAAI,CAAC;QAEhE,IAAA,CAAA,uBAAuB,GAAG,uBAAuB;AAEjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,CAAC;QACzC,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,gBAAgB,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC;QACtF,IAAA,CAAA,mBAAmB,GAAG,IAAI;IAQ9B;IAEI,eAAe,GAAA;QACpB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;AAEO,IAAA,SAAS,CAAC,SAA0B,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;AAEtC,QAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;YACvC,IAAI,CAAC,cAAc,EAAE;QACvB;AAAO,aAAA,IAAI,SAAS,KAAK,MAAM,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;QAC1C;IACF;IAEO,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;AAEO,IAAA,SAAS,CAAC,cAA8B,EAAA;AAC7C,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;IAC7C;AAEO,IAAA,qBAAqB,CAAC,SAAiB,EAAA;QAC5C,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,YAAY,EAAE;AAEnB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAC5C,gBAAA,IAAI,CAAC;AACF,qBAAA,2BAA2B,CAAC,MAAM,CAAC,iBAAiB,EAAE,SAAS;AAC/D,qBAAA,SAAS,CAAC;oBACT,IAAI,EAAE,MAAK;wBACT,IAAI,CAAC,sBAAsB,EAAE;oBAC/B,CAAC;oBACD,KAAK,EAAE,MAAK;wBACV,IAAI,CAAC,WAAW,EAAE;oBACpB,CAAC;AACF,iBAAA,CAAC;AACN,YAAA,CAAC,CAAC;QACJ;IACF;IAEO,gBAAgB,CAAC,iBAAyB,EAAE,KAAuB,EAAA;AACxE,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB;YAAE;AAElC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,kBAAkB,IAAG;YACpE,IAAI,CAAC,kBAAkB,EAAE;gBACvB;YACF;AAEA,YAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,IACzC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,CACjF;AACD,YAAA,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;AACnE,QAAA,CAAC,CAAC;IACJ;IAEO,mBAAmB,GAAA;QACxB,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,IAAG;AAChE,YAAA,IAAI,gBAAgB,KAAK,QAAQ,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE;YAClB;iBAAO;gBACL,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC,CAAC;IACJ;AAEO,IAAA,eAAe,CAAC,KAAqC,EAAA;QAC1D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;IAC1C;AAEO,IAAA,gBAAgB,CAAC,GAAkB,EAAA;QACxC,IAAI,CAAC,cAAc,EAAE;AAErB,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,MAAM,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,EAChD,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAErF,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,KAAI;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAC5C,YAAY,IAAI,YAAY,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAC7C;YACD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC;YACtF,MAAM,iBAAiB,GAAG,aAAa,CAAC,SAAS,CAC/C,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,EAAE,WAAW,CAAC,IAAI,CAC9C;AACD,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,EAAE,WAAW,CAAC;AACzE,YAAA,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,EAAE,WAAW,CAAC;YACnF,MAAM,UAAU,GAAG,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI;YACnE,MAAM,gBAAgB,GAAqB,EAAE;YAC7C,MAAM,gBAAgB,GAAG,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,UAAU;YAC/E,MAAM,SAAS,GAAG,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,SAAS;AAEvE,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAEvD,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC;YACjD;YAEA,IAAI,UAAU,EAAE;gBACd,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AACpC,oBAAA,gBAAgB,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAC,CAAC;AACtD,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAChD;iBAAO;AACL,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;YACtD;AAEA,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;gBACxB,GAAG,EAAE,MAAM,EAAE,GAAG;gBAChB,KAAK,EAAE,MAAM,EAAE,KAAK;gBACpB,IAAI,EAAE,MAAM,EAAE,IAAI;gBAClB,QAAQ,EAAE,MAAM,EAAE,QAAQ;;AAE1B,gBAAA,WAAW,EAAE,EAAC,GAAG,YAAY,EAAC;;AAE9B,gBAAA,WAAW,EAAE,QAAQ,GAAG,EAAC,GAAG,QAAQ,EAAC,GAAG,EAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAC;gBACzD,IAAI,gBAAgB,IAAI,EAAC,UAAU,EAAE,gBAAgB,EAAC,CAAC;gBACvD,IAAI,SAAS,IAAI,EAAC,SAAS,EAAE,SAAS,EAAC,CAAC;gBACxC,UAAU,EAAE,MAAM,EAAE,UAAU;AAC/B,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACxB,QAAA,CAAC,CAAC;IACN;AACO,IAAA,mBAAmB,CAAC,KAAe,EAAA;AACxC,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,EAAE;AACpD,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAC,CAAC;QAC1E;IACF;IAEO,eAAe,GAAA;QACpB,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC;AAClD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAI;AACzB,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;gBAAE;YAEnB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AAC1C,YAAA,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE;AAC5B,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI;AACtB,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACjC,MAAM,CAAC,KAAK,EAAE;AACd,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACnC,QAAA,CAAC,CAAC;IACN;IAEO,UAAU,GAAA;QACf,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAEnD,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAAE,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;IACvE;IAEQ,qBAAqB,CAC3B,iBAAyB,EACzB,kBAAyC,EAAA;QAEzC,IAAI,CAAC,YAAY,EAAE;QAEnB,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC;YAC7F,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,sBAAsB,EAAE;gBAC7B,YAAY,CAAC,OAAO,CAAC,CAAA,YAAA,EAAe,iBAAiB,CAAA,CAAE,EAAE,EAAE,CAAC;YAC9D,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,WAAW,EAAE;YACpB,CAAC;AACF,SAAA,CAAC;IACJ;IAEQ,SAAS,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;AAEtC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAC5C,YAAA,IAAI,CAAC;iBACF,yBAAyB,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;AACzF,iBAAA,SAAS,CAAC;gBACT,IAAI,EAAE,MAAK;oBACT,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,CAAC;gBACD,KAAK,EAAE,MAAK;oBACV,IAAI,CAAC,WAAW,EAAE;gBACpB,CAAC;AACF,aAAA,CAAC;AACN,QAAA,CAAC,CAAC;IACJ;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;QACnD,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC;AAC9E,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB;QACjD,MAAM,oBAAoB,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,IAAG;AACvD,YAAA,MAAM,UAAU,GAAG,EAAC,GAAG,MAAM,EAAC;YAC9B,IAAI,UAAU,CAAC,GAAG,KAAK,sBAAsB,CAAC,GAAG,EAAE;gBACjD,MAAM,aAAa,GAAG,EAAC,GAAG,UAAU,EAAE,GAAG,mBAAmB,EAAC;AAC7D,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;oBACpC,OAAO,aAAa,CAAC,WAAW;gBAClC;AACA,gBAAA,OAAO,aAAa;YACtB;AACA,YAAA,IAAI,mBAAmB,CAAC,WAAW,EAAE;gBACnC,OAAO,UAAU,CAAC,WAAW;YAC/B;AACA,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAC5C,YAAA,IAAI,CAAC;AACF,iBAAA,wBAAwB,CAAC,MAAM,CAAC,iBAAiB,EAAE,oBAAoB;AACvE,iBAAA,SAAS,CAAC;gBACT,IAAI,EAAE,MAAK;oBACT,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,CAAC;gBACD,KAAK,EAAE,MAAK;oBACV,IAAI,CAAC,WAAW,EAAE;gBACpB,CAAC;AACF,aAAA,CAAC;AACN,QAAA,CAAC,CAAC;IACJ;IAEQ,WAAW,CAAC,iBAAyB,EAAE,eAAsC,EAAA;QACnF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA,EAAG,iBAAiB,CAAA,KAAA,CAAO,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,+BAA+B,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAC/F;IACH;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;IAC1B;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,MAAM,EAAE;YACpD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE;YAC7C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC5C;IACF;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;IACzC;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QACtB,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC;AACjD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,KAAI;AACxC,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;;AAEvC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,EAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;;AAEnC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,EAAC,CAAC;AACxD,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,qBAAqB,CAAC,SAAc,EAAA;QAC1C,OAAO;YACL,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC,WAAW,IAAI;AACrD,gBAAA,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG;aACxC,CAAC;AACF,YAAA,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;AACpB,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG;AAChC,gBAAA,qBAAqB,EAAE;AACrB,oBAAA,IAAI,SAAS,CAAC,SAAS,IAAI,EAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAC,CAAC;AAC5D,oBAAA,IAAI,SAAS,CAAC,UAAU,IAAI,EAAC,UAAU,EAAE,SAAS,CAAC,UAAU,EAAC,CAAC;oBAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/B,wBAAA,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI;AAC3B,wBAAA,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,EAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAC,CAAC,EAAE,EAAE,CAAC;qBACnF,CAAC;AACL,iBAAA;AACF,aAAA;AACD,YAAA,UAAU,EAAE,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC,UAAU,GAAG,KAAK;SACpE;IACH;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;aAClD,SAAS,CAAC,KAAK,IAAG;YACjB,MAAM,+BAA+B,GAAG,eAAe;AACvD,YAAA,IAAI,CAAC,mBAAmB,GAAG,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChF,QAAA,CAAC,CAAC;IACN;+GAxjBW,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,iGC1D/C,22bAqZA,EAAA,MAAA,EAAA,CAAA,wpCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,IAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,oCAAA,EAAA,2BAAA,EAAA,6CAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,mCAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD3Va,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,sCAAsC,EAAA,QAAA,EAAA,22bAAA,EAAA,MAAA,EAAA,CAAA,wpCAAA,CAAA,EAAA;;;AEtDlD;;;;;;;;;;;;;;AAcG;MAiBU,+BAA+B,CAAA;IAoB1C,WAAA,CACmB,mBAAwC,EACxC,KAAqB,EAAA;QADrB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,KAAK,GAAL,KAAK;AArBR,QAAA,IAAA,CAAA,eAAe,GAAwB,4BAA4B,CACjF,IAAI,CAAC,KAAK,CACX,CAAC,IAAI,CACJ,SAAS,CAAC,CAAC,MAAwC,KACjD,CAAC;AACC,cAAE,EAAE,CAAC,KAAK;AACV,cAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,CACrC,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,wBAAwB,CAChC,CACN,CACF;QACe,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAU,OAAO,CAAC,MAAM,CAAC;AAC1D,QAAA,IAAA,CAAA,qBAAqB,GAAG;AACtC,YAAA,CAAC,OAAO,CAAC,MAAM,GAAG,8CAA8C;AAChE,YAAA,CAAC,OAAO,CAAC,IAAI,GAAG,yCAAyC;SAC1D;QACe,IAAA,CAAA,OAAO,GAAG,OAAO;IAK9B;AAEI,IAAA,SAAS,CAAC,GAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B;+GA3BW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7B,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,yEC/B5C,wvDA6CA,EAAA,MAAA,EAAA,CAAA,urBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,mCAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,mCAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kCAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAzB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAuB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDda,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;iCACI,KAAK,EAAA,eAAA,EAGA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wvDAAA,EAAA,MAAA,EAAA,CAAA,urBAAA,CAAA,EAAA;;;AE7BjD;;;;;;;;;;;;;;AAcG;MA4BU,yCAAyC,CAAA;IAIpD,IAAa,qBAAqB,CAAC,OAAY,EAAA;QAC7C,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AACzC,YAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;QACrC;IACF;IAiCA,WAAA,CACmB,EAAe,EACf,WAAwB,EACxB,gBAAkC,EAClC,KAAqB,EACrB,qBAA4C,EAAA;QAJ5C,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QA9Cf,IAAA,CAAA,IAAI,GAAG,KAAK;AAErB,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,eAAe,CAAM,EAAE,CAAC;AAO3D,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA0B;QAE1D,IAAA,CAAA,sBAAsB,GAAa,EAAE;AAErC,QAAA,IAAA,CAAA,gBAAgB,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACjD,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC9C,YAAA,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE;AAC9D,gBAAA,UAAU,CAAC,QAAQ;AACnB,gBAAA,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC;aACpC,CAAC;AACF,YAAA,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC/D,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,4BAA4B,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;AAClD,SAAA,CAAC;AAEe,QAAA,IAAA,CAAA,YAAY,GAC3B,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;AAE1B,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,CAChE,oEAAoE,CACrE;AAEe,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;QAExD,IAAA,CAAA,uBAAuB,GAA6B,IAAI,CAAC,YAAY,CAAC,IAAI,CACxF,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,iBAAiB,IAAI,EAAE,CAAC,EAC9C,SAAS,CAAC,iBAAiB,IACzB,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CACxE,EACD,GAAG,CAAC,eAAe,IAAI,eAAe,CAAC,GAAG,CAAC,cAAc,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CACzF;QASC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACvD;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC9D,YAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,IAAI,EAAE;AAC9C,QAAA,CAAC,CAAC;IACJ;AAEO,IAAA,YAAY,CAAC,iBAA2B,EAAA;QAC7C,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;AAClE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B;QACF;AAEA,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,KAAK;QAEvF,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,8CAA8C,CAAC;YACvE;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oDAAoD,CAAC;YAC7E;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;IAC3D;AAEQ,IAAA,cAAc,CAAC,OAAe,EAAA;QACpC,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI;IACvC;AAEQ,IAAA,gBAAgB,CAAC,OAAe,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACjG;AAEQ,IAAA,qBAAqB,CAAC,OAAO,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AAC/B,YAAA,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;AACxB,YAAA,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,EAAE;AAClD,YAAA,qBAAqB,EAAE,EAAE;AACzB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,4BAA4B,EAAE,OAAO,CAAC,4BAA4B,IAAI,EAAE;AACzE,SAAA,CAAC;IACJ;AAEQ,IAAA,mBAAmB,CAAC,cAAsB,EAAA;QAChD,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAC3B,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,MAAM,IACd,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE;YACxC,iBAAiB,EAAE,MAAM,EAAE,iBAAiB;YAC5C,wBAAwB,EAAE,MAAM,EAAE,wBAAwB;SAC3D,CAAC,CACH,CACF;IACH;+GA7GW,yCAAyC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7B,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAyB,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yCAAyC,0NC1CtD,0vIA6HA,EAAA,MAAA,EAAA,CAAA,m5BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDnFa,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAPrD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,8CAA8C,EAAA,eAAA,EAGvC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0vIAAA,EAAA,MAAA,EAAA,CAAA,m5BAAA,CAAA,EAAA;2MAGtB,IAAI,EAAA,CAAA;sBAA5B;gBAGY,qBAAqB,EAAA,CAAA;sBAAjC;gBAMS,UAAU,EAAA,CAAA;sBAAnB;;;MEHU,iCAAiC,CAAA;AAwCpC,IAAA,oBAAoB,CAAC,cAAsB,EAAA;AACjD,QAAA,OAAO,aAAa,CAAC;AACnB,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,yBAAyB;AAC9B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,CAAC,CACzF,CACF;IACH;IA8JA,WAAA,CACmB,iBAAoC,EACpC,qBAA4C,EAC5C,QAAkB,EAClB,kBAAsC,EACtC,WAAwB,EACxB,QAAyB,EACzB,mBAA8C,EAC9C,KAAqB,EACrB,MAAc,EACd,UAAsB,EACtB,gBAAkC,EAAA;QAVlC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAjN5B,IAAA,CAAA,sBAAsB,GAAa,EAAE;AAC5B,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC7D,QAAA,IAAA,CAAA,iCAAiC,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACvE,QAAA,IAAA,CAAA,mCAAmC,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACzE,QAAA,IAAA,CAAA,wCAAwC,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC7E,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AACtD,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAC5D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QAEpC,IAAA,CAAA,OAAO,GAGlB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACzB,GAAG,CAAC,CAAC,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,MAAM;AACtD,YAAA,iBAAiB,EAAE,iBAAiB;AACpC,YAAA,wBAAwB,EAAE,wBAAwB;SACnD,CAAC,CAAC,CACJ;QAEe,IAAA,CAAA,kBAAkB,GAAuB,IAAI,CAAC,OAAO,CAAC,IAAI,CACxE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAC9C;QAEe,IAAA,CAAA,yBAAyB,GAAuB,IAAI,CAAC,OAAO,CAAC,IAAI,CAC/E,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,wBAAwB,IAAI,EAAE,CAAC,CACrD;AAEe,QAAA,IAAA,CAAA,6BAA6B,GAC3C,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,EAAE;AAcxC,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CACnE,sEAAsE,CACvE;AAEe,QAAA,IAAA,CAAA,iBAAiB,GAA2B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACtF,SAAS,CAAC,iBAAiB,IACzB,IAAI,CAAC;aACF,mBAAmB,CAAC,iBAAiB;AACrC,aAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CACpC,CACF;QAEe,IAAA,CAAA,iBAAiB,GAAwB,aAAa,CAAC;AACrE,YAAA,IAAI,CAAC,iBAAiB;AACtB,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,yBAAyB;AAC/B,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,CAAC,KAAI;AACtE,YAAA,QACE,gBAAgB,EAAE,iBAAiB,KAAK,iBAAiB;AACzD,gBAAA,gBAAgB,EAAE,wBAAwB,KAAK,wBAAwB;QAE3E,CAAC,CAAC,CACH;QAEe,IAAA,CAAA,qBAAqB,GAAuB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACrF,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAClC;QAEe,IAAA,CAAA,eAAe,GAA+B,aAAa,CAAC;AAC1E,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,yBAAyB;AAC/B,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAC1F,EACDE,KAAG,CAAC,cAAc,IAAG;YACnB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC;QACzE,CAAC,CAAC,CACH;QAEe,IAAA,CAAA,eAAe,GAAwB,aAAa,CAAC;AACnE,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,yBAAyB;AAC9B,YAAA,IAAI,CAAC,oBAAoB;SAC1B,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CACvF,CACF;QAEe,IAAA,CAAA,sBAAsB,GAAG,aAAa,CAAC;AACrD,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,yBAAyB;AAC/B,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAC1F,EACD,GAAG,CAAC,cAAc,KAAK;YACrB,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;YACnD,qBAAqB,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,wBAAwB,EAAE,OAAO,CAAC;YACnF,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,4BAA4B,EAAE,cAAc,CAAC,wBAAwB;SACtE,CAAC,CAAC,CACJ;AAEe,QAAA,IAAA,CAAA,uBAAuB,GAA6B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAC9F,SAAS,CAAC,iBAAiB,IACzB,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CACxE,EACD,GAAG,CAAC,eAAe,IAAI,eAAe,CAAC,GAAG,CAAC,cAAc,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CACzF;AAEe,QAAA,IAAA,CAAA,oBAAoB,GAG/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAC5B,GAAG,CAAC,CAAC,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM;YACjD,iBAAiB,EAAE,iBAAiB,IAAI,GAAG;YAC3C,mBAAmB,EAAE,mBAAmB,IAAI,GAAG;SAChD,CAAC,CAAC,CACJ;QAEe,IAAA,CAAA,sBAAsB,GACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,GAAG,CAAC,cAAc,IAAG;AACnB,YAAA,MAAM,kBAAkB,GAAG;AACzB,gBAAA,wBAAwB,EAAE,cAAc,CAAC,wBAAwB,IAAI,GAAG;AACxE,gBAAA,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,IAAI,GAAG;aAC3D;YAED,OAAO,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC,CAAC;QACjF,CAAC,CAAC,CACH;QAEa,IAAA,CAAA,8BAA8B,GAE1C,IAAI,CAAC,eAAe,CAAC,IAAI,CAC3B,GAAG,CAAC,cAAc,IAAG;AACnB,YAAA,MAAM,sBAAsB,GAAG;AAC7B,gBAAA,SAAS,EAAE,cAAc,CAAC,SAAS,IAAI,GAAG;AAC1C,gBAAA,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,IAAI,EAAE,EAAE,YAAY,CAAC;AACpF,gBAAA,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,GAAG;aAC/C;YAED,OAAO,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC,CAAC;QACrF,CAAC,CAAC,CACH;AAEgB,QAAA,IAAA,CAAA,8BAA8B,GAAG,IAAI,eAAe,CAAsB,IAAI,CAAC;AAChF,QAAA,IAAA,CAAA,6BAA6B,GAC3C,IAAI,CAAC,8BAA8B,CAAC,YAAY,EAAE;QAEpC,IAAA,CAAA,sCAAsC,GACpD,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,yBAAyB;AAC9B,YAAA,IAAI,CAAC,0BAA0B;SAChC,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,qBAAqB,CAAC,kCAAkC,CAC3D,iBAAiB,EACjB,wBAAwB,CACzB,CACF,EACD,SAAS,CAAC,GAAG,IACX,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CACtCA,KAAG,CAAC,MAAK;AACP,YAAA,QAAQ,GAAG,CAAC,IAAI;AACd,gBAAA,KAAK,IAAI;AACP,oBAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC9C;AACF,gBAAA,KAAK,0BAA0B;AAC/B,gBAAA,KAAK,sBAAsB;AACzB,oBAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC;AACvC,wBAAA,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,uDAAuD,CACxD;AACD,wBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,CAAA,gDAAA,EAAmD,GAAG,CAAC,IAAI,CAAA,CAAE,CAC9D;AACD,wBAAA,SAAS,EAAE,KAAK;AAChB,wBAAA,WAAW,EAAE,IAAI;AAClB,qBAAA,CAAC;oBACF;;AAEN,QAAA,CAAC,CAAC,EACF,GAAG,CAAC,MAAM,GAAG,CAAC,CACf,CACF,CACF;AAiBD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;IACnC;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC9D,YAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,IAAI,EAAE;AAC9C,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC;aACF,qBAAqB,CAAoC,6BAA6B;aACtF,IAAI,CACH,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,EACvC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,CAAC,iBAAiB,KAAK,GAAG,CAAC;aAE1D,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,CAAC,CAAC,CACL;IACH;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;IAEO,eAAe,GAAA;QACpB,IAAI,CAAC,eAAe,EAAE;IACxB;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;AAC7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE;QAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC5C;IAEO,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;QAE7C,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,yBAAyB,CAAC;AACpE,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KAAI;AAC3D,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACnB,CAAA,sBAAA,EAAyB,iBAAiB,CAAA,SAAA,EAAY,wBAAwB,CAAA,QAAA,CAAU;AACzF,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACN;IAEO,oBAAoB,GAAA;AACzB,QAAA,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC;IACnD;IAEO,qBAAqB,GAAA;AAC1B,QAAA,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC;IACpD;IAEO,kCAAkC,GAAA;AACvC,QAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC;IACrD;IAEO,uBAAuB,GAAA;AAC5B,QAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,KAAK,CAAC;IACtD;IAEO,uCAAuC,GAAA;AAC5C,QAAA,IAAI,CAAC,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1D;AAEO,IAAA,8BAA8B,CAAC,OAAQ,EAAA;QAC5C,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAClC;AACA,QAAA,IAAI,CAAC,wCAAwC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3D;IAEO,sBAAsB,GAAA;QAC3B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI,CAAC,8BAA8B;AAC9C,SAAA,CAAC;QAEF,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,yBAAyB,CAAC;AACpE,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KACtD,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAC/C,iBAAiB,EACjB,wBAAwB,CACzB,CACF;AAEF,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,QAAQ,IAAG;gBACf,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,oBAAA,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,qEAAqE,CACtE;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;gBAEF,IAAI,CAAC,YAAY,EAAE;YACrB,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,qEAAqE,CACtE;oBACD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,qEAAqE,CACtE;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;QAEJ,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEO,wBAAwB,GAAA;QAC7B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI,CAAC,gCAAgC;AAChD,SAAA,CAAC;QAEF,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,yBAAyB,CAAC;AACpE,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KAAI;YAC1D,OAAO,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CACxD,iBAAiB,EACjB,wBAAwB,CACzB;AACH,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,QAAQ,IAAG;gBACf,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,oBAAA,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,yEAAyE,CAC1E;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;AAEF,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,uEAAuE,CACxE;oBACD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,uEAAuE,CACxE;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;QAEJ,IAAI,CAAC,uBAAuB,EAAE;IAChC;AAEO,IAAA,kBAAkB,CAAC,OAAO,EAAA;AAC/B,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC;QAE9D,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AAC/D,YAAA,IAAI,EAAE,CAAC,QAAa,KAAI;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACnB,wBAAwB;AACxB,oBAAA,QAAQ,CAAC,iBAAiB;oBAC1B,SAAS;AACT,oBAAA,QAAQ,CAAC,wBAAwB;AAClC,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,uBAAuB,CAC1B,uEAAuE,CACxE;YACH,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,qBAAqB,CACxB,mEAAmE,EACnE,qEAAqE,CACtE;YACH,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,wCAAwC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3D;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC;AACrD,aAAA,IAAI,CACHA,KAAG,CAAC,CAAC,CAAC,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,EAAE,mBAAmB,CAAC,KAAI;AAC3E,YAAA,MAAM,KAAK,GAAG,CAAA,sBAAA,EAAyB,iBAAiB,CAAA,SAAA,EAAY,wBAAwB,EAAE;AAE9F,YAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;gBACxC,KAAK,EAAE,CAAC,KAAK,CAAC;gBACd,OAAO,EAAE,CAAA,EAAG,mBAAmB,CAAA,CAAA,CAAG;AAClC,gBAAA,IAAI,EAAE,KAAK;AACZ,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;aAEH,SAAS,EAAE,CACf;IACH;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAC3D;IACF;AAEQ,IAAA,oBAAoB,CAAC,WAA6B,EAAA;QACxD,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,QAAQ,EAAE,WAAW;AACtB,SAAA,CAAC;IACJ;AAEQ,IAAA,uBAAuB,CAAC,OAAe,EAAA;QAC7C,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,YAAA,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC;IACJ;IAEQ,qBAAqB,CAAC,QAAgB,EAAE,UAAkB,EAAA;QAChE,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,YAAA,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC9C,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;AAClD,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC;IACJ;+GAxdW,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA3B,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAmB,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,icCjD9C,8mQAsOA,EAAA,MAAA,EAAA,CAAA,siDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkC,yCAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA5B,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAuB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDrLa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;iCACI,KAAK,EAAA,QAAA,EAAA,8mQAAA,EAAA,MAAA,EAAA,CAAA,siDAAA,CAAA,EAAA;4XAMA,8BAA8B,EAAA,CAAA;sBAD9C,SAAS;uBAAC,oBAAoB;gBAId,gCAAgC,EAAA,CAAA;sBADhD,SAAS;uBAAC,sBAAsB;gBAIhB,8BAA8B,EAAA,CAAA;sBAD9C,SAAS;uBAAC,oBAAoB;;;AExDjC;;;;;;;;;;;;;;AAcG;MAkBU,yCAAyC,CAAA;IAMpD,IAAa,iBAAiB,CAAC,KAAa,EAAA;AAC1C,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC;IACA,IAAa,mBAAmB,CAAC,KAAa,EAAA;AAC5C,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC;AA0DA,IAAA,WAAA,CACmB,KAAqB,EACrB,MAAc,EACd,qBAA4C,EAAA;QAF5C,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QAvE/B,IAAA,CAAA,IAAI,GAAG,KAAK;QACZ,IAAA,CAAA,uBAAuB,GAAG,EAAE;AAErB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AACpD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAQ5D,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE;AAC/B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE;QAEtC,IAAA,CAAA,sBAAsB,GAAG,KAAK;AAE/B,QAAA,IAAA,CAAA,UAAU,GAAe;AAC9B,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,EAAE;SACT;AAEe,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC;AAE1D,QAAA,IAAA,CAAA,aAAa,GAA+B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACtF,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,EAAC,iBAAiB,EAAE,GAAG,EAAC,CAAC,CAAC,EACzFM,KAAG,CAAC,CAAC,IAA+B,KAAI;AACtC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;AACrB,gBAAA,cAAc,EAAE,CAAC,IAAI,CAAC,aAAa;AACpC,aAAA,CAAC;YAEF,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAY,MAAM;AACzC,gBAAA,GAAG,OAAO;AACV,gBAAA,WAAW,EAAE;AACX,oBAAA;wBACE,OAAO,EAAE,OAAO,CAAC;8BACb,OAAO,CAAC;AACV,8BAAE,CAAA,OAAA,EAAU,OAAO,CAAC,wBAAwB,CAAA,CAAE;wBAChD,IAAI,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,KAAK;AACtC,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,OAAO;QACrB,CAAC,CAAC,CACH;AAEe,QAAA,IAAA,CAAA,MAAM,GAAmB;AACvC,YAAA;AACE,gBAAA,GAAG,EAAE,aAAa;AAClB,gBAAA,KAAK,EAAE,iDAAiD;gBACxD,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,aAAa;AAClB,gBAAA,KAAK,EAAE,iDAAiD;gBACxD,QAAQ,EAAE,QAAQ,CAAC,SAAS;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,aAAa;AAClB,gBAAA,KAAK,EAAE,qDAAqD;gBAC5D,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,aAAA;SACF;IAME;AAEI,IAAA,iBAAiB,CAAC,IAAY,EAAA;AACnC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,KAAK;AACtB,YAAA,WAAW,EAAE,EAAC,IAAI,EAAE,IAAI,GAAG,CAAC,EAAC;AAC7B,YAAA,mBAAmB,EAAE,OAAO;AAC7B,SAAA,CAAC;IACJ;AAEO,IAAA,aAAa,CAAC,IAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;YAClC;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,KAAK;YACtB,WAAW,EAAE,EAAC,IAAI,EAAC;AACnB,YAAA,mBAAmB,EAAE,OAAO;AAC7B,SAAA,CAAC;IACJ;AAEO,IAAA,mBAAmB,CAAC,KAAyC,EAAA;AAClE,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,CAAC;IAC3D;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,uBAAuB,CAAC;IACxD;AAEQ,IAAA,mBAAmB,CAAC,wBAAgC,EAAA;AAC1D,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC;AACnD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IACxB;+GA3GW,yCAAyC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAnC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yCAAyC,sVChCtD,u6DAmDA,EAAA,MAAA,EAAA,CAAA,osBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3B,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDnBa,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBANrD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,8CAA8C,EAAA,QAAA,EAAA,u6DAAA,EAAA,MAAA,EAAA,CAAA,osBAAA,CAAA,EAAA;6IAK/C,IAAI,EAAA,CAAA;sBAAZ;gBACQ,uBAAuB,EAAA,CAAA;sBAA/B;gBAIY,iBAAiB,EAAA,CAAA;sBAA7B;gBAGY,mBAAmB,EAAA,CAAA;sBAA/B;gBAIS,UAAU,EAAA,CAAA;sBAAnB;gBACS,eAAe,EAAA,CAAA;sBAAxB;;;AE9CH;;;;;;;;;;;;;;AAcG;MA6CU,oCAAoC,CAAA;IAO/C,IAAoB,iBAAiB,CAAC,KAAa,EAAA;AACjD,QAAA,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,KAAK,CAAC;IAC5D;AAuIA,IAAA,WAAA,CAC4B,QAAkB,EAC3B,qBAA4C,EAC5C,iBAAoC,EACpC,mBAA8C,EAC9C,WAAwB,EACxB,iBAAoC,EACpC,KAAqB,EACrB,MAAc,EACd,gBAAkC,EAClC,yBAAoD,EAAA;QAT3C,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACjB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;QAzJzB,IAAA,CAAA,OAAO,GAAG,uCAAuC;QAKpD,IAAA,CAAA,uBAAuB,GAAG,EAAE;AAI3B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU;QAExC,IAAA,CAAA,YAAY,GAAG,KAAK;AAEpB,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC3D,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAChD,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,iCAAiC;AACjF,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAElD,QAAA,IAAA,CAAA,OAAO,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACrE,GAAG,CAAC,CAAC,EAAC,wBAAwB,EAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAC1F;QACe,IAAA,CAAA,kBAAkB,GAAuB,IAAI,CAAC,OAAO,CAAC,IAAI,CACxE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAC9C;QACe,IAAA,CAAA,yBAAyB,GAAuB,IAAI,CAAC,OAAO,CAAC,IAAI,CAC/E,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,wBAAwB,IAAI,EAAE,CAAC,CACrD;QAEe,IAAA,CAAA,oBAAoB,GAA8B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAC5F,SAAS,CAAC,iBAAiB,IACzB,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,wBAAwB,CAAC,EAC9C,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAC3B,CACF,CACF;QAEe,IAAA,CAAA,gCAAgC,GAAwB,aAAa,CAAC;AACpF,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,oBAAoB;AAC1B,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,mBAAmB,CAAC,KAAK,eAAe,KAAK,mBAAmB,CAAC,CAAC;AAEjF,QAAA,IAAA,CAAA,iCAAiC,GAC/C,IAAI,CAAC,yBAAyB,CAAC,aAAa;QAE9B,IAAA,CAAA,kBAAkB,GAAwB,aAAa,CAAC;AACtE,YAAA,IAAI,CAAC,gCAAgC;AACrC,YAAA,IAAI,CAAC,iCAAiC;AACvC,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC;AAE7C,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B;AACxE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AACpD,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC7D,QAAA,IAAA,CAAA,mCAAmC,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEzE,QAAA,IAAA,CAAA,kBAAkB,GAA2B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACvF,SAAS,CAAC,iBAAiB,IACzB,IAAI,CAAC;aACF,mBAAmB,CAAC,iBAAiB;AACrC,aAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CACpC,CACF;QAEe,IAAA,CAAA,qBAAqB,GAAuB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACtF,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAClC;AAEe,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB;AAExE,QAAA,IAAA,CAAA,qCAAqC,GACnD,IAAI,CAAC,iBAAiB,CAAC,qCAAqC;AAE9C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY;QAElD,IAAA,CAAA,uBAAuB,GAAwB,aAAa,CAAC;AAC3E,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,gBAAgB;AACtB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,eAAe,CAAC,KAAI;AACxC,YAAA,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC;QAC/F,CAAC,CAAC,CACH;AAEgB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC;QAC/D,IAAA,CAAA,qBAAqB,GAAkC,aAAa,CAAC;YACnF,IAAI,CAAC,KAAK,CAAC,MAAM;AACjB,YAAA,IAAI,CAAC,gBAAgB;AACtB,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,EAAC,iBAAiB,EAAC,EAAE,eAAe,CAAC,KAC/C,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK;kBAChC,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,iBAAiB;AACxE,kBAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;YACvC,EAAE,CAAC,eAAe,CAAC;SACpB,CAAC,CACH,EACD,GAAG,CAAC,CAAC,CAAC,sBAAsB,EAAE,eAAe,CAAC,KAAI;YAChD,IAAI,CAAC,sBAAsB,EAAE;AAC3B,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;YAEhC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/D,YAAA,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,IAAI,CACnD,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,eAAe,CAClD;YAED,IAAI,eAAe,GAAG,oBAAoB;AAE1C,YAAA,IAAI,CAAC,mBAAmB,IAAI,eAAe,EAAE;AAC3C,gBAAA,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,CACpD,WAAW,IAAI,WAAW,CAAC,UAAU,KAAK,eAAe,CAC1D;gBACD,IAAI,kBAAkB,EAAE;AACtB,oBAAA,eAAe,GAAG,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,CAAC;gBAC7E;YACF;AAEA,YAAA,MAAM,OAAO,GAAe,eAAe,CAAC,GAAG,CAAC,CAAC,EAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAC,MAAM;AAChF,gBAAA,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,UAAU,KAAK,eAAe;gBACxC,MAAM;gBACN,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK;AAChC,gBAAA,mBAAmB,EAAE,KAAK;gBAC1B,KAAK,EAAE,CAAC,KAAK;gBACb,cAAc,EAAE,CAAA,WAAA,EAAc,UAAU,CAAA,CAAE;AAC3C,aAAA,CAAC,CAAC;AAEH,YAAA,MAAM,eAAe,GAAa;gBAChC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,+BAA+B,CAAC;AACvE,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,mBAAmB,EAAE,IAAI;AACzB,gBAAA,cAAc,EAAE,0BAA0B;aAC3C;AAED,YAAA,OAAO,CAAC,GAAG,OAAO,EAAE,eAAe,CAAC;QACtC,CAAC,CAAC,CACH;AAgBC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACrC;IAEO,MAAM,GAAA;QACX,IAAI,CAAC,wBAAwB,EAAE;QAE/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI,CAAC,yBAAyB;AACzC,SAAA,CAAC;AAEF,QAAA,IAAI,qBAA8B;QAElC,IAAI,CAAC,cAAc,EAAE;QAErB,aAAa,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,mBAAmB,CAAC;aAClE,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,qBAAqB,GAAG,eAAe,IAAI,GAAG,CAAC,CAAC,EAC5E,SAAS,CAAC,CAAC,CAAC,eAAe,EAAE,sBAAsB,CAAC,KAClD,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CACjD,sBAAsB,EACtB,eAAe,IAAI,GAAG,CACvB,CACF;AAEF,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,QAAQ,IAAG;gBACf,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,oBAAA,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mCAAmC,CAAC;AACzE,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,qBAAqB,CAAC;gBACjD,IAAI,CAAC,aAAa,EAAE;YACtB,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iCAAiC,CAAC;oBACvE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mCAAmC,CAAC;AAC3E,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;gBACF,IAAI,CAAC,aAAa,EAAE;YACtB,CAAC;AACF,SAAA,CAAC;IACN;AAEO,IAAA,aAAa,CAAC,OAAY,EAAA;AAC/B,QAAA,IAAI,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACtC,IAAI,CAAC,oBAAoB,EAAE;QAC7B;aAAO;YACL,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC;QACzC;IACF;AAEO,IAAA,sBAAsB,CAAC,OAAe,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IAC1B;IAEO,4BAA4B,GAAA;AACjC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;IACzC;IAEO,2BAA2B,GAAA;AAChC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1C;IAEO,oBAAoB,GAAA;AACzB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;IACvC;IAEO,qBAAqB,GAAA;AAC1B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;IACxC;IAEO,sCAAsC,GAAA;AAC3C,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,QAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC;IACrD;IAEO,gCAAgC,GAAA;AACrC,QAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,KAAK,CAAC;IACtD;IAEO,0BAA0B,GAAA;QAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI,CAAC,yBAAyB;AACzC,SAAA,CAAC;QAEF,aAAa,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC;aAC5D,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,eAAe,CAAC,KAC7C,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAC1F,EACD,GAAG,CAAC,CAAC,MAAW,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAElF,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,QAAQ,IAAG;gBACf,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,oBAAA,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,mDAAmD,CACpD;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;YACJ,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACpE,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iDAAiD,CAAC;oBACvF,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpC,mDAAmD,CACpD;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;AAEJ,QAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,KAAK,CAAC;IACtD;IAEO,oBAAoB,GAAA;QACzB,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,yBAAyB,CAAC;aACpE,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KAAI;AACpD,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACnB,uBAAuB;gBACvB,iBAAiB;gBACjB,SAAS;gBACT,wBAAwB;gBACxB,YAAY;AACb,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,EAAE;IAChB;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;IAEQ,WAAW,CAAC,QAA4B,EAAE,wBAAgC,EAAA;QAChF,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;QACxC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACtE,MAAM,uBAAuB,GAAG,kBAAkB,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;AAC5E,QAAA,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,GAAG,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC;AAEjF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;AAC/E,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAA,CAAA,EAAI,wBAAwB,CAAA,YAAA,CAAc;AAC/F,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;QACtB,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,MAAM,EAAE;IACf;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAC3D;IACF;AAEQ,IAAA,kBAAkB,CAAC,KAAoB,EAAA;AAC7C,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;YAChC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,UAAU,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA,GAAA,EAAM,OAAO,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAA,CAAE,CAAC,EAAE;YAClF,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,SAAA,CAAC;IACJ;AAvVW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,kBAiJrC,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA2B,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAApC,IAAA,CAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjJP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,iXC3DjD,woQAiOA,EAAA,MAAA,EAAA,CAAA,6wDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgC,yCAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA5B,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDtKa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAPhD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,wCAAwC,EAAA,eAAA,EAGjC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,woQAAA,EAAA,MAAA,EAAA,CAAA,6wDAAA,CAAA,EAAA;;0BAmJ5C,MAAM;2BAAC,QAAQ;0UA7ID,yBAAyB,EAAA,CAAA;sBADzC,SAAS;uBAAC,kBAAkB;gBAGb,uBAAuB,EAAA,CAAA;sBAAtC;gBACmB,iBAAiB,EAAA,CAAA;sBAApC;gBAGgB,UAAU,EAAA,CAAA;sBAA1B;;;AErEH;;;;;;;;;;;;;;AAcG;MA+CU,6BAA6B,CAAA;AAsDxC,IAAA,WAAA,CACmB,KAAqB,EACrB,iBAAoC,EACpC,qBAA4C,EAC5C,aAA4B,EAC5B,yBAAoD,EACpD,gBAAkC,EAClC,MAAc,EACd,UAAsB,EACtB,UAAsB,EAAA;QARtB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;QACzB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,UAAU,GAAV,UAAU;QA9DV,IAAA,CAAA,OAAO,GAAG,+BAA+B;AAM5C,QAAA,IAAA,CAAA,OAAO,GACrB,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACpD,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAC/C;QAQe,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACnD,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,GAAG,CAAC,KAAK,IAAG;AACV,YAAA,MAAM,eAAe,GAAI,KAAuB,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChF,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;YAC3C,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,CACpD;AAEe,QAAA,IAAA,CAAA,2BAA2B,GACzC,IAAI,CAAC,UAAU,CAAC,2BAA2B;AAE7B,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB;QAEjE,IAAA,CAAA,OAAO,GAAG,OAAO;AAGzB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AAC1B,QAAA,IAAA,CAAA,4BAA4B,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;QAE/D,IAAA,CAAA,oBAAoB,GAClC,aAAa,CAAC;YACZ,IAAI,CAAC,iBAAiB,CAAC,0BAA0B;YACjD,IAAI,CAAC,iBAAiB,CAAC,iCAAiC;AACxD,YAAA,IAAI,CAAC,4BAA4B;SAClC,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KACvB,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAChE,EACD,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EACtD,WAAW,CAAC,CAAC,CAAC,CACf;QAaD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc;QAC/D,IAAI,CAAC,cAAc,GAAG,cAAc,EAAE,cAAc,IAAI,IAAI;QAC5D,IAAI,CAAC,oBAAoB,GAAG,cAAc,EAAE,mBAAmB,IAAI,IAAI;IACzE;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,SAAS,CAClD,CAAC,kBAA6C,KAAI;AAChD,YAAA,IAAI,CAAC,kBAAkB;gBAAE;YAEzB,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3E,CAAC,CACF,CACF;QACD,IAAI,CAAC,6BAA6B,EAAE;QACpC,IAAI,CAAC,qCAAqC,EAAE;QAC5C,IAAI,CAAC,kCAAkC,EAAE;AACzC,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;QACpC,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO;AAC5C,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5D;AAEO,IAAA,aAAa,CAAC,GAAqB,EAAA;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;QAEnB,IAAI,CAAC,MAAM,CAAC,aAAa,CACvB,CAAA,qBAAA,EAAwB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAA,SAAA,EAAY,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CACjH;IACH;IAEO,wBAAwB,GAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,KAAI;YACrF,IAAI,CAAC,OAAO,CAAC,CAAC,GAAQ,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QAClE,CAAC,CAAC,CACH;IACH;IAEO,qBAAqB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,iBAAiB,CAAC,2CAA2C,CAAC,CAAA,EAAG,IAAI,CAAC,cAAc,CAAA,CAAE,CAAC;AAC5F,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;YAC1B;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;QACF;QACA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;IAC9C;AAEO,IAAA,YAAY,CAAC,OAAe,EAAA;QACjC,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,CAAC,CAAA,EAAG,OAAO,CAAA,CAAE,CAAC;IAC1E;IAEQ,6BAA6B,GAAA;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,iBAAiB,CAAC,iCAAiC,CAAC,SAAS,CAChE,CAAC,UAAyB,KAAI;AAC5B,YAAA,IAAI,CAAC,cAAc,GAAG,UAAU;QAClC,CAAC,CACF,CACF;IACH;IAEQ,kCAAkC,GAAA;AACxC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,IACxC,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAC7F,CACF;IACH;IAEQ,qCAAqC,GAAA;AAC3C,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC;YACZ,IAAI,CAAC,iBAAiB,CAAC,0BAA0B;AACjD,YAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,CACnC,6BAA6B,CAC9B;SACF;AACE,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,KAAK,CAAC,iBAAiB,KAAK,GAAG,CAAC;aAC9D,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9C,CAAC,CAAC,CACL;IACH;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAG;YAC9B,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,MAAM,EAAE,iBAAiB,IAAI,EAAE,CAAC;YACpF,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,CACxD,MAAM,EAAE,wBAAwB,IAAI,EAAE,CACvC;AACD,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QACvB,CAAC,CAAC,CACH;IACH;IAEU,eAAe,GAAA;;;IAGzB;+GA/KW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAuC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA3B,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,4DAH7B,CAAC,iBAAiB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAMhB,GAAG,gDChEnB,soKAoJA,EAAA,MAAA,EAAA,CAAA,kyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,oCAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA3B,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDvFa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,aAGN,CAAC,iBAAiB,CAAC,EAAA,eAAA,EACb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,soKAAA,EAAA,MAAA,EAAA,CAAA,kyCAAA,CAAA,EAAA;kUAKpB,KAAK,EAAA,CAAA;sBAA/B,YAAY;uBAAC,GAAG;;;AEhEnB;;;;;;;;;;;;;;AAcG;MA6BU,yCAAyC,CAAA;IA4BpD,WAAA,CACmB,eAAgC,EAChC,iBAAoC,EACpC,WAAwB,EACxB,iBAAoC,EACpC,KAAqB,EACrB,sBAA8C,EAAA;QAL9C,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;AA/B/B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AACnC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE;AACpC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAW;AAE5C,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B;AAC7E,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAClD,QAAA,IAAA,CAAA,wBAAwB,GAA4B,IAAI,CAAC,eAAe,CAAC,IAAI,CAC3FV,WAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CACjE;AAEgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACvD,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB;AAExE,QAAA,IAAA,CAAA,OAAO,GACrB,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;AAE1B,QAAA,IAAA,CAAA,mBAAmB,GAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,CAC1EA,WAAS,CAAC,MAAM,IACd,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAC5C,MAAM,EAAE,iBAAiB,IAAI,EAAE,EAC/B,MAAM,EAAE,wBAAwB,IAAI,EAAE,CACvC,CACF,CACF;QAUC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,cAAuB,KACtD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAC/C;IACH;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;YACpE,MAAM,EAAC,YAAY,EAAE,mBAAmB,EAAC,GAAG,UAAU,CAAC,EAAE,CAAC,WAAW;YACrE,MAAM,UAAU,GACd,+BAA+B;AAC/B,gBAAA,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAChE,MAAM,qBAAqB,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC;YAC9E,IAAI,CAAC,qBAAqB,EAAE;gBAC1B;YACF;AAEA,YAAA,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;YACtD,qBAAqB,CAAC,YAAY,CAChC,UAAU,EACV,CAAA,EAAG,YAAY,CAAA,EAAA,EAAK,mBAAmB,CAAA,KAAA,CAAO,CAC/C;YACD,qBAAqB,CAAC,KAAK,EAAE;AAC/B,QAAA,CAAC,CAAC;IACJ;IAEO,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;IAC7B;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;IAC5B;AAEO,IAAA,WAAW,CAAC,UAAU,EAAA;AAC3B,QAAA,MAAM,qBAAqB,GAAG,IAAI,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAE7F,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACHA,WAAS,CAAC,MAAM,IACd,IAAI,CAAC,eAAe,CAAC,qCAAqC,CACxD,MAAM,EAAE,iBAAiB,IAAI,EAAE,EAC/B,MAAM,EAAE,wBAAwB,IAAI,EAAE,EACtC,qBAAqB,CACtB,CACF;AAEF,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC3E,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AAC3B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,EAAE;YACnD,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC5B,CAAC;AACF,SAAA,CAAC;IACN;IAEO,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;+GApGW,yCAAyC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAuC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAjC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yCAAyC,0WC3CtD,2gDA8CA,EAAA,MAAA,EAAA,CAAA,yzBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAmB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDHa,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBANrD,SAAS;iCACI,KAAK,EAAA,eAAA,EAGA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2gDAAA,EAAA,MAAA,EAAA,CAAA,yzBAAA,CAAA,EAAA;mPAGd,WAAW,EAAA,CAAA;sBAA3C,SAAS;uBAAC,aAAa;gBACf,iBAAiB,EAAA,CAAA;sBAAzB;gBACS,cAAc,EAAA,CAAA;sBAAvB;gBACS,eAAe,EAAA,CAAA;sBAAxB;gBACS,oBAAoB,EAAA,CAAA;sBAA7B;;;AEhDH;;;;;;;;;;;;;;AAcG;MA0BU,kCAAkC,CAAA;AAoC7C,IAAA,WAAA,CACmB,eAAgC,EAChC,WAAwB,EACjC,KAAqB,EAAA;QAFZ,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,WAAW,GAAX,WAAW;QACpB,IAAA,CAAA,KAAK,GAAL,KAAK;QAtCI,IAAA,CAAA,OAAO,GAAG,qCAAqC;AAIlD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE/C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAE7C,QAAA,IAAA,CAAA,OAAO,GAAqC,4BAA4B,CACtF,IAAI,CAAC,KAAK,CACX,CAAC,IAAI,CACJ,GAAG,CAAC,CAAC,MAAwC,MAAM;AACjD,YAAA,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,IAAI,EAAE;AAClD,YAAA,wBAAwB,EAAE,MAAM,EAAE,wBAAwB,IAAI,EAAE;SACjE,CAAC,CAAC,CACJ;QAEe,IAAA,CAAA,kBAAkB,GAAmC,IAAI,CAAC,OAAO,EAAE,IAAI,CACrF,GAAG,CAAC,CAAC,EAAC,iBAAiB,EAAC,KAAK,iBAAiB,IAAI,EAAE,CAAC,CACtD;QAEe,IAAA,CAAA,yBAAyB,GAAmC,IAAI,CAAC,OAAO,EAAE,IAAI,CAC5F,GAAG,CAAC,CAAC,EAAC,wBAAwB,EAAC,KAAK,wBAAwB,IAAI,EAAE,CAAC,CACpE;AAEgB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;QAE5C,IAAA,CAAA,aAAa,GAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAC3E,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAC7B,SAAS,CAAC,CAAC,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,KACtD,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAC/F,EACD3B,KAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACrC;QAOC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC;IAC/C;AAEO,IAAA,kBAAkB,CACvB,YAA0B,EAC1B,iBAAyB,EACzB,wBAAgC,EAAA;QAEhC,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC;AACF,aAAA,8BAA8B,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,YAAY;aACxF,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;aACvC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC5C;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5B;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;AAEO,IAAA,cAAc,CACnB,eAA6B,EAC7B,iBAAyB,EACzB,wBAAgC,EAAA;AAEhC,QAAA,MAAM,kBAAkB,GAAG,CAAC,eAAe,EAAE,eAAe;QAE5D,IAAI,CAAC,kBAAkB,CACrB;AACE,YAAA,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,kBAAkB,GAAG,eAAe,CAAC,eAAe,GAAG,KAAK;AAC9E,SAAA,EACD,iBAAiB,EACjB,wBAAwB,CACzB;IACH;AAEO,IAAA,oBAAoB,CACzB,eAA6B,EAC7B,iBAAyB,EACzB,wBAAgC,EAAA;QAEhC,IAAI,CAAC,kBAAkB,CACrB;YACE,eAAe,EAAE,eAAe,EAAE,eAAe;AACjD,YAAA,eAAe,EAAE,CAAC,eAAe,CAAC,eAAe;AAClD,SAAA,EACD,iBAAiB,EACjB,wBAAwB,CACzB;IACH;+GAnGW,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,uICxC/C,4wFAyEA,EAAA,MAAA,EAAA,CAAA,2gCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjCa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,sCAAsC,EAAA,QAAA,EAAA,4wFAAA,EAAA,MAAA,EAAA,CAAA,2gCAAA,CAAA,EAAA;+IAOvB,UAAU,EAAA,CAAA;sBAAlC;;;AE3CH;;;;;;;;;;;;;;AAcG;MAqBU,wCAAwC,CAAA;IAInD,IAAoB,UAAU,CAAC,KAAc,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QAExB,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE;QACzC;aAAO;YACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE;QACxC;IACF;AACA,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;IACzB;IA4BA,WAAA,CACmB,KAAqB,EACrB,eAAgC,EAChC,EAAe,EACf,gBAAkC,EAClC,MAAiB,EACjB,yBAAoD,EAAA;QALpD,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;QAlDzB,IAAA,CAAA,OAAO,GAAG,4CAA4C;AAkBxD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,MAAM,CACxC,kGAAkG,CACnG;AAEe,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACnC,eAAe,EAAE,CAAC,KAAK,CAAC;AACxB,YAAA,eAAe,EAAE;AACf,gBAAA,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC;AAC3B,gBAAA,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACxF,aAAA;YACD,WAAW,EAAE,CAAC,EAAE,CAAC;AAClB,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,OAAO,GAAqC,4BAA4B,CACtF,IAAI,CAAC,KAAK,CACX,CAAC,IAAI,CACJ,GAAG,CAAC,CAAC,MAAwC,MAAM;AACjD,YAAA,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,IAAI,EAAE;AAClD,YAAA,wBAAwB,EAAE,MAAM,EAAE,wBAAwB,IAAI,EAAE;SACjE,CAAC,CAAC,CACJ;AAEe,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAsB,IAAI,CAAC;AAE7D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;IASjD;IAEI,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC;AAEtD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC;aACF,IAAI,CACH,SAAS,CAAC,MAAM,IACd,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAC/C,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,wBAAwB,CAChC,CACF,EACD,GAAG,CAAC,YAAY,IAAG;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,YAAY,CAAC;AACnE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;AACvC,QAAA,CAAC,CAAC;aAEH,SAAS,EAAE,CACf;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,YAAiC,KAAI;AACjE,YAAA,IAAI,CAAC,CAAC,YAAY,EAAE;gBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,YAAY,CAAC;AAC5E,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjB,oBAAA,eAAe,EAAE,YAAY,CAAC,oBAAoB,IAAI,KAAK;AAC3D,oBAAA,eAAe,EAAE,YAAY,CAAC,oBAAoB,IAAI,EAAE;AACxD,oBAAA,WAAW,EAAE,YAAY,CAAC,4BAA4B,IAAI,EAAE;AAC7D,iBAAA,CAAC;YACJ;QACF,CAAC,CAAC,CACH;IACH;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC;AACzD,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;AAEA,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACzC;AAEA,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACzC;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;IACrC;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;AAEtB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAE1F,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAACM,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;YAC5C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,wBAAwB,EAAE;AACjF,gBAAA,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;gBAChD,oBAAoB,EAClB,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,KAAK;sBAClC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI;AACjC,sBAAE,IAAI,CAAC,eAAe,CAAC,KAAK;AAChC,gBAAA,4BAA4B,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;AAC3D,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,kBAAkB,CACxB,iBAAyB,EACzB,wBAAgC,EAChC,YAA0B,EAAA;QAE1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,iBAAiB,EAAE,YAAY,CAAC;AACvF,QAAA,IAAI,CAAC;AACF,aAAA,8BAA8B,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,YAAY;AACxF,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAM,IAAG;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,MAAM,CAAC;AAC7D,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;YACjC,CAAC;YACD,KAAK,EAAE,CAAC,IAAG;gBACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2DAA2D,EAAE,CAAC,CAAC;AAEjF,gBAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;AACvC,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,qDAAqD,CACtD;AACF,iBAAA,CAAC;YACJ,CAAC;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC;AAE/D,gBAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;AACvC,oBAAA,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,uDAAuD,CACxD;AACF,iBAAA,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;IACN;+GA5JW,wCAAwC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wCAAwC,8ICnCrD,8vFAiFA,EAAA,MAAA,EAAA,CAAA,w8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuB,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuB,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD9Ca,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBANpD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,6CAA6C,EAAA,QAAA,EAAA,8vFAAA,EAAA,MAAA,EAAA,CAAA,w8BAAA,CAAA,EAAA;kPAQnC,UAAU,EAAA,CAAA;sBAA7B;;;AEvCH;;;;;;;;;;;;;;AAcG;MAyBU,8BAA8B,CAAA;IAyBzC,WAAA,CACmB,eAAgC,EAChC,KAAqB,EACrB,GAAsB,EACtB,qBAA4C,EAG5C,oCAAiD,EACjD,sBAA8C,EAAA;QAP9C,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QAGrB,IAAA,CAAA,oCAAoC,GAApC,oCAAoC;QACpC,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QA7BzB,IAAA,CAAA,OAAO,GAAgC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CACnF,GAAG,CAAC,CAAC,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,MAAM;AACtD,YAAA,iBAAiB,EAAE,iBAAiB;AACpC,YAAA,wBAAwB,EAAE,wBAAwB;SACnD,CAAC,CAAC,CACJ;QAEe,IAAA,CAAA,mBAAmB,GAAmC,IAAI,CAAC,OAAO,CAAC,IAAI,CACrF,SAAS,CAAC,CAAC,EAAC,iBAAiB,EAAC,KAC5B,IAAI,CAAC,eAAe,CAAC,kCAAkC,CAAC,iBAAiB,CAAC,CAC3E,CACF;AAEe,QAAA,IAAA,CAAA,WAAW,GAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,CAClE,SAAS,CAAC,MAAM,IACd,IAAI,CAAC;aACF,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,wBAAwB;AAC9E,aAAA,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,CAAC,CAChD,CACF;IAWE;IAEI,eAAe,GAAA;QACpB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEQ,gBAAgB,GAAA;QACtB,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC;AACzD,YAAA,IAAI,CAAC,oCAAoC,CAAC,MAAM,KAAK,CAAC,EACtD;YACA;QACF;AAEA,QAAA,IAAI,CAAC,oCAAoC,CAAC,OAAO,CAAC,kBAAkB,IAAG;YACrE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,kBAAkB,CAAC;AAEpE,YAAA,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ;AACxC,YAAA,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS;YAE3C,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,kBAAkB,CAAC;YAClE,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;AACxD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;AA3DW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,sJA+B/B,mCAAmC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGA/BlC,8BAA8B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACT,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxClD,wuDAoDA,EAAA,MAAA,EAAA,CAAA,utBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgC,kCAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wCAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAmB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDba,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,iCAAiC,EAAA,QAAA,EAAA,wuDAAA,EAAA,MAAA,EAAA,CAAA,utBAAA,CAAA,EAAA;;0BAkCxC;;0BACA,MAAM;2BAAC,mCAAmC;gFA7BrC,WAAW,EAAA,CAAA;sBADlB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC;;;AExCnD;;;;;;;;;;;;;;AAcG;MAqCU,yCAAyC,CAAA;AAWpD,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;IAC3C;IAIA,WAAA,CACmB,EAAe,EACf,oBAA0C,EAAA;QAD1C,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;AAhBtB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAO;AAEpC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC/C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAChD,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjD,SAAA,CAAC;IAWC;IAEI,QAAQ,GAAA;QACb,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE;IACvC;IAEO,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAEtB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAChC,QAAA,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;IACvC;IAEO,aAAa,GAAA;QAClB,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,IAAI,CAAC;AACF,aAAA,OAAO,CACN;AACE,YAAA,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;AACrB,YAAA,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK;AAC/B,YAAA,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,UAAU,CAAC,OAAO;AACzB,SAAA,EACD,IAAI,CAAC,OAAO,CAAC,GAAG;aAEjB,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YACrB,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;IACN;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QACvD;QAEA,IAAI,CAAC,MAAM,EAAE;IACf;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAG;YACxD,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,CAAC,CAAC;IACJ;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;IAEQ,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5B;+GA9EW,yCAAyC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA3B,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAgB,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yCAAyC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnDtD,u7EAmEA,EAAA,MAAA,EAAA,CAAA,uvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzBI,YAAY,8VACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,WAAW,yWACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGH,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAjBrD,SAAS;+BACE,+CAA+C,EAAA,aAAA,EAG1C,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,eAAe;wBACf,WAAW;wBACX,wBAAwB;wBACxB,mBAAmB;wBACnB,WAAW;wBACX,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,u7EAAA,EAAA,MAAA,EAAA,CAAA,uvBAAA,CAAA,EAAA;kHAGe,UAAU,EAAA,CAAA;sBAAzB;gBACe,OAAO,EAAA,CAAA;sBAAtB;gBACgB,SAAS,EAAA,CAAA;sBAAzB;;;AEtDH;;;;;;;;;;;;;;AAcG;AAyDG,MAAO,gCACX,SAAQ,gCAAgC,CAAA;AAwExC,IAAA,WAAA,CACqB,mBAAwC,EAC1C,iBAAoC,EACpC,WAAwB,EACxB,gBAAkC,EAClC,KAAqB,EACrB,oBAA0C,EAE1C,8BAEhB,EACgB,gBAAkC,EAClC,iBAAoC,EAAA;QAErD,KAAK,CAAC,mBAAmB,CAAC;QAbP,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACrB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QAEpB,IAAA,CAAA,8BAA8B,GAA9B,8BAA8B;QAG9B,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;AAjFpB,QAAA,IAAA,CAAA,0BAA0B,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACxF,GAAG,CAAC,MAAM,IAAG;AACX,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC;AAC3C,YAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;QACtC,CAAC,CAAC,EACF,GAAG,CACD,CAAC,MAAwC,KACvC,MAAM,IAAI,EAAC,iBAAiB,EAAE,EAAE,EAAE,wBAAwB,EAAE,EAAE,EAAC,CAClE,CACF;QAEe,IAAA,CAAA,aAAa,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACxE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAChC;QAEe,IAAA,CAAA,OAAO,GAAG,aAAa,CAAC;AACtC,YAAA,IAAI,CAAC,0BAA0B;AAC/B,YAAA,IAAI,CAAC,aAAa;AACnB,SAAA,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,CAAC,CAAC,yBAAyB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,yBAAyB,IAAI,CAAC,CAAC,GAAG,CAAC,EAClF,GAAG,CAAC,CAAC,CAAC,yBAAyB,EAAE,GAAG,CAAC,MAAM;AACzC,YAAA,GAAG,yBAAyB;YAC5B,GAAG;SACJ,CAAC,CAAC,CACJ;AAEgB,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAC5D,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAC7D,IAAA,CAAA,qBAAqB,GAA2B,aAAa,CAAC;AAC5E,YAAA,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,yBAAyB;AAC/B,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EACrE,GAAG,CAAC,OAAO,IAAG;AACZ,YAAA,MAAM,KAAK,GACT,OAAO,CAAC,IAAI;gBACZ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,6BAAA,EAAgC,OAAO,CAAC,GAAG,CAAA,CAAE,CAAC;AAC9E,YAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC/C,YAAA,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CACzC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,kCAAkC,EAAE;AAChE,gBAAA,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,GAAG;AACpC,gBAAA,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;sBAClB,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,mBAAmB;AACvD,sBAAE,GAAG;gBACP,GAAG,EAAE,OAAO,CAAC,GAAG;AACjB,aAAA,CAAC,CACH;QACH,CAAC,CAAC,CACH;QAEe,IAAA,CAAA,iBAAiB,GAAG,aAAa,CAAC;YAChD,IAAI,CAAC,8BAA8B,CAAC,OAAO;AAC3C,YAAA,IAAI,CAAC,yBAAyB;AAC/B,SAAA,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAC9B,SAAS,CAAC,MAAM,IAAI,CAAC,8BAA8B,CAAC,sBAAsB,EAAE,CAAC,CAC9E;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY;AAClD,QAAA,IAAA,CAAA,sBAAsB,GAAG;AACvC,YAAA,UAAU,CAAC,MAAM;AACjB,YAAA,UAAU,CAAC,UAAU;AACrB,YAAA,UAAU,CAAC,MAAM;AACjB,YAAA,UAAU,CAAC,MAAM;AACjB,YAAA,UAAU,CAAC,KAAK;AAChB,YAAA,UAAU,CAAC,GAAG;SACf;IAiBD;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;IACrC;IAEO,eAAe,GAAA;QACpB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,eAAe,EAAE;IACxB;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;AAC7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE;AAC9C,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;IACtC;IAEO,aAAa,GAAA;QAClB,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;IACzC;IAEO,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3C;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,MAAM,IAAG;YACjD,MAAM,KAAK,GAAG,CAAA,sBAAA,EAAyB,MAAM,CAAC,iBAAiB,CAAA,SAAA,EAAY,MAAM,CAAC,wBAAwB,CAAA,CAAE;AAE5G,YAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;gBACxC,KAAK,EAAE,CAAC,KAAK,CAAC;gBACd,OAAO,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAA,EAAA,EAAK,MAAM,CAAC,wBAAwB,CAAA,CAAA,CAAG;AAC3E,gBAAA,IAAI,EAAE,KAAK;AACZ,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;AACzC,gBAAA,KAAK,EAAE,CAAC,CAAA,EAAG,KAAK,eAAe,CAAC;gBAChC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,0CAA0C,CAAC;gBAClF,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,aAAA,CAAe;AAC9B,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAtIW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,oNAgFjC,yBAAyB,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAhFxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAPhC;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,yBAAyB;AAClC,gBAAA,QAAQ,EAAE,8BAA8B;AACzC,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrEH,u4CAyCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDcI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,4FACf,yCAAyC,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzC,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC3B,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,UAAU,+BACV,yBAAyB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAShB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBArB5C,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,eAAe;wBACf,yCAAyC;wBACzC,2BAA2B;wBAC3B,YAAY;wBACZ,UAAU;wBACV,UAAU;wBACV,yBAAyB;qBAC1B,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,yBAAyB;AAClC,4BAAA,QAAQ,EAAE,8BAA8B;AACzC,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,u4CAAA,EAAA;;0BAkFE,MAAM;2BAAC,yBAAyB;;;AEvJrC;;;;;;;;;;;;;;AAcG;AAEH,IAAK,aAIJ;AAJD,CAAA,UAAK,aAAa,EAAA;AAChB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAJI,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;AAMlB,IAAK,WAMJ;AAND,CAAA,UAAK,WAAW,EAAA;AACd,IAAA,WAAA,CAAA,gBAAA,CAAA,GAAA,eAAgC;AAChC,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EANI,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;AAQhB,MAAM,KAAK,GAAG;AACZ,IAAA,WAAW,CAAC,OAAO;AACnB,IAAA,WAAW,CAAC,WAAW;AACvB,IAAA,WAAW,CAAC,WAAW;AACvB,IAAA,WAAW,CAAC,cAAc;AAC1B,IAAA,WAAW,CAAC,SAAS;CACtB;;ACpCD;;;;;;;;;;;;;;AAcG;MAUU,iCAAiC,CAAA;+GAAjC,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,8KCxB9C,q7BAuBA,EAAA,MAAA,EAAA,CAAA,w+BAAA,CAAA,EAAA,CAAA,CAAA;;4FDCa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,qCAAqC,EAAA,QAAA,EAAA,q7BAAA,EAAA,MAAA,EAAA,CAAA,w+BAAA,CAAA,EAAA;8BAKtC,YAAY,EAAA,CAAA;sBAApB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;AE3BH;;;;;;;;;;;;;;AAcG;MA8BU,6BAA6B,CAAA;IAkExC,WAAA,CACmB,eAAgC,EAChC,qBAA4C,EAC5C,EAAe,EACf,WAAwB,EACxB,gBAAkC,EAAA;QAJlC,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAtE1B,IAAA,CAAA,IAAI,GAAG,KAAK;AACX,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAW;QAE/B,IAAA,CAAA,OAAO,GAAG,+BAA+B;AAErD,QAAA,IAAA,CAAA,aAAa,GAAa,CAAC,OAAO,EAAE,MAAM,CAAC;AAGjC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;QAEhD,IAAA,CAAA,WAAW,GAAG,WAAW;QACzB,IAAA,CAAA,aAAa,GAAG,aAAa;QAC7B,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAc,WAAW,CAAC,OAAO,CAAC;AACnE,QAAA,IAAA,CAAA,kBAAkB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC7E,GAAG,CAAC,CAAC,UAAuB,KAC1B,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,cAAc,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,CACnF,UAAU,CACX,CACF,CACF;AACe,QAAA,IAAA,CAAA,kBAAkB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC7E,GAAG,CACD,CAAC,UAAuB,KACtB,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CACvE,CACF;AACe,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAC3E,GAAG,CAAC,CAAC,UAAuB,KAC1B,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC7F,CACF;AACe,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;QAE/B,IAAA,CAAA,mBAAmB,GAAwB,aAAa,CAAC;AACvE,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,UAAU;AACf,YAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AACnC,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAI;YAC7C,MAAM,iBAAiB,GAAG,UAAU,KAAK,WAAW,CAAC,WAAW,IAAI,CAAC,cAAc;YACnF,OAAO,iBAAiB,KAAK,UAAU,KAAK,WAAW,CAAC,OAAO,IAAI,QAAQ,CAAC;QAC9E,CAAC,CAAC,CACH;QACe,IAAA,CAAA,gBAAgB,GAAoC,aAAa,CAAC;AAChF,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,CAAC;AACjD,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,kDAAkD,CAAC;AACjF,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM;AACzB,YAAA,IAAI,EAAE,SAAS;YACf,KAAK;YACL,OAAO;AACP,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC,CACJ;AACe,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QACxD,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAgB,aAAa,CAAC,MAAM,CAAC;AAEjF,QAAA,IAAA,CAAA,IAAI,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,EAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7D,SAAA,CAAC;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAoB,EAAE,CAAC;AACzD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AASlD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC5C;IAEO,QAAQ,GAAA;QACb,MAAM,OAAO,GAA2B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;QAEA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAsB,KAAI;AACtE,YAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO;YAC1B,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC/B;YACF;YAEA,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE;AAC7C,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;gBAC1B;YACF;AAEA,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC3B,CAAC,CAAC,CACH;IACH;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;QACjC,IAAI,CAAC,UAAU,EAAE;IACnB;AAEO,IAAA,YAAY,CAAC,kBAA4B,EAAA;QAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE;IACnB;AAEO,IAAA,WAAW,CAAC,UAAuB,EAAA;AACxC,QAAA,MAAM,SAAS,GAAW,KAAK,CAAC,SAAS,CAAC,CAAC,IAAiB,KAAK,IAAI,KAAK,UAAU,CAAC,GAAG,CAAC;AACzF,QAAA,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;YACpB;QACF;QAEA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC;AAEO,IAAA,WAAW,CAAC,UAAuB,EAAA;AACxC,QAAA,MAAM,SAAS,GAAW,KAAK,CAAC,SAAS,CAAC,CAAC,IAAiB,KAAK,IAAI,KAAK,UAAU,CAAC,GAAG,CAAC;AACzF,QAAA,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM,EAAE;YAC9B;QACF;AAEA,QAAA,IAAI,UAAU,KAAK,WAAW,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;AACrE,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC;QACF;QAEA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,WAAW,EAAE;YAChD;QACF;QAEA,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEO,IAAA,eAAe,CAAC,OAAgB,EAAA;AACrC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;QAEjC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC;AAEQ,IAAA,WAAW,CAAC,QAA8B,EAAA;AAChD,QAAA,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI;QAE3B,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,eAAe,EAAE;YACtB;QACF;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAE/B,QAAA,MAAM,CAAC,SAAS,GAAG,MAAK;AACtB,YAAA,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,EAAE;AAC/C,YAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC9B;YACF;YAEA,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC9B,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;IACzB;AAEQ,IAAA,UAAU,CAAC,QAAkB,EAAA;AACnC,QAAA,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI;QAE3B,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B;QACF;QAEA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC;AAClE,QAAA,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE;AACzB,QAAA,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC;aACF,IAAI,CACH,SAAS,CAAC,CAAC,IAAuB,KAChC,IAAI,YAAY;cACZ,IAAI,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,IAAI;AAC7D,cAAE,IAAI,CAAC,eAAe,CAAC,qCAAqC,CACxD,IAAI,+BAA+B,CAAC,IAAI,CAAC,CAC1C,CACN,EACDS,MAAI,CAAC,CAAC,CAAC;AAER,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;YACjD,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,CAAC;AACF,SAAA,CAAC;IACN;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5B;AAEQ,IAAA,iBAAiB,CAAC,MAAc,EAAA;AACtC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACpB;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,aAAa,CAAC,QAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,QAAQ,CAAC,OAAO,GAAG,IAAI;QACvB,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACnD,wDAAwD,CACzD;QACD,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClD,uDAAuD,CACxD;IACH;IAEQ,UAAU,GAAA;QAChB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,IAAI,EAAE,IAAI,GAAG,EAAO,EAAC,CAAC;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,QAAA,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;IACvC;+GAxPW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA3B,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,4JC5C1C,qwLA2JA,EAAA,MAAA,EAAA,CAAA,88DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,IAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,OAAA,EAAA,YAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoC,iCAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAnC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD/Ga,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,gCAAgC,EAAA,eAAA,EAGzB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qwLAAA,EAAA,MAAA,EAAA,CAAA,88DAAA,CAAA,EAAA;4MAGtC,IAAI,EAAA,CAAA;sBAAZ;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;AE9CH;;;;;;;;;;;;;;AAcG;MAkBU,6BAA6B,CAAA;AAmCxC,IAAA,WAAA,CACmB,eAAgC,EAChC,EAAe,EACf,WAAwB,EAAA;QAFxB,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,WAAW,GAAX,WAAW;QArCrB,IAAA,CAAA,IAAI,GAAG,KAAK;AACX,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA0B;QAE9C,IAAA,CAAA,OAAO,GAAG,+BAA+B;AAErD,QAAA,IAAA,CAAA,SAAS,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC1C,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC9C,YAAA,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE;AAC9D,gBAAA,UAAU,CAAC,QAAQ;AACnB,gBAAA,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC;aACpC,CAAC;AACF,YAAA,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC/D,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,SAAA,CAAC;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAClD,GAAG,CAAC,CAAC,UAAmB,KAAI;YAC1B,MAAM,iBAAiB,GAA2B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;YACzF,IAAI,CAAC,iBAAiB,EAAE;gBACtB;YACF;YAEA,IAAI,UAAU,EAAE;gBACd,iBAAiB,CAAC,MAAM,EAAE;gBAC1B;YACF;YACA,iBAAiB,CAAC,OAAO,EAAE;QAC7B,CAAC,CAAC,CACH;AACe,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAClD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AACnD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;QAOtE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACvD;AAEO,IAAA,YAAY,CAAC,iBAA2B,EAAA;QAC7C,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,SAAS,EAAE;YAChB;QACF;AAEA,QAAA,MAAM,EAAC,iBAAiB,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ;QAC7F,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACzD;QACF;QAEA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,8CAA8C,CAAC;YACvE;QACF;AAEA,QAAA,IAAI,CAAC;AACF,aAAA,qBAAqB,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI;AACnD,aAAA,IAAI,CAACO,MAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yCAAyC,CAAC;AAC7D,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,IAAI,CAAC,UAAU,EAAE;YACnB,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACnB,IAAI,EAAE,IAAI,CAAC,KAAK;oBAChB,iBAAiB,EAAE,iBAAiB,CAAC,KAAK;oBAC1C,qBAAqB,EAAE,qBAAqB,CAAC,KAAK;oBAClD,WAAW,EAAE,WAAW,CAAC,KAAK;AAC/B,iBAAA,CAAC;gBACF,IAAI,CAAC,SAAS,EAAE;YAClB,CAAC;AACF,SAAA,CAAC;IACN;IAEO,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;IAEO,UAAU,GAAA;AACf,QAAA,MAAM,EAAC,iBAAiB,EAAE,IAAI,EAAE,qBAAqB,EAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ;QAChF,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACzD;QACF;QAEA,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9F,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;IAEQ,SAAS,GAAA;QACf,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;IACvC;+GAtGW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,4JChC1C,wlKA0JA,EAAA,MAAA,EAAA,CAAA,w1BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD1Ha,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,gCAAgC,EAAA,eAAA,EAGzB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wlKAAA,EAAA,MAAA,EAAA,CAAA,w1BAAA,CAAA,EAAA;4IAGtC,IAAI,EAAA,CAAA;sBAAZ;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;AElCH;;;;;;;;;;;;;;AAcG;AAcHmC,QAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;MAQvC,2BAA2B,CAAA;IA4CtC,WAAA,CACmB,qBAA4C,EAC5C,WAAwB,EACxB,WAAwB,EACxB,KAAqB,EACrB,MAAc,EACd,kBAAsC,EAAA;QALtC,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QA/ClB,IAAA,CAAA,OAAO,GAAG,6BAA6B;AAEzC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC;AAE1D,QAAA,IAAA,CAAA,6BAA6B,GAC3C,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,EAAE;QAExC,IAAA,CAAA,cAAc,GAAG,aAAa,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,WAAW;AACtB,YAAA,IAAI,CAAC,6BAA6B;AAClC,YAAA,IAAI,CAAC,SAAS;AACf,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,KAC5B,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC;AAC5C,YAAA,GAAG,MAAM;YACT,KAAK,EAAE,SAAS,GAAG,EAAE,GAAG,IAAI;AAC7B,SAAA,CAAC,CACH,EACD,GAAG,CAAC,CAAC,IAAwB,KAAI;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;AACrB,gBAAA,cAAc,EAAE,CAAC,IAAI,CAAC,aAAa;AACpC,aAAA,CAAC;YACF,OAAO,IAAI,CAAC,OAAO;QACrB,CAAC,CAAC,CACH;AAEM,QAAA,IAAA,CAAA,UAAU,GAAe;AAC9B,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,EAAE;SACT;AAEe,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAiB,EAAE,CAAC;AAEjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACtD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAE9D,IAAA,CAAA,sBAAsB,GAAG,KAAK;AASpC,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChE;IAEO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,YAAA,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,iCAAiC,EAAC;AACvD,YAAA,EAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,gCAAgC,EAAC;AACnE,YAAA,EAAC,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,oCAAoC,EAAC;AAC9E,YAAA;AACE,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,KAAK,EAAE,mCAAmC;gBAC1C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,IAAI,CAAC,oBAAoB;AACpC,aAAA;AACF,SAAA,CAAC;IACJ;AAEO,IAAA,kBAAkB,CAAC,kBAA2B,EAAA;AACnD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAEjC,IAAI,CAAC,kBAAkB,EAAE;YACvB;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IAC3B;AAEO,IAAA,kBAAkB,CAAC,eAAuC,EAAA;AAC/D,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,eAAe,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,CAAC;aACF,kBAAkB,CAAC,eAAe;AAClC,aAAA,IAAI,CAAC7B,MAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,QAAa,KAAI;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACnB,uBAAuB;AACvB,gBAAA,QAAQ,CAAC,iBAAiB;gBAC1B,SAAS;AACT,gBAAA,QAAQ,CAAC,wBAAwB;AAClC,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;AAEO,IAAA,iBAAiB,CAAC,IAAY,EAAA;AACnC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,KAAK;AACtB,YAAA,WAAW,EAAE,EAAC,IAAI,EAAE,IAAI,GAAG,CAAC,EAAC;AAC7B,YAAA,mBAAmB,EAAE,OAAO;AAC7B,SAAA,CAAC;IACJ;AAEO,IAAA,aAAa,CAAC,IAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;YAClC;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,KAAK;YACtB,WAAW,EAAE,EAAC,IAAI,EAAC;AACnB,YAAA,mBAAmB,EAAE,OAAO;AAC7B,SAAA,CAAC;IACJ;AAEO,IAAA,iBAAiB,CAAC,YAA0B,EAAA;AACjD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACnB,uBAAuB;AACvB,YAAA,YAAY,CAAC,iBAAiB;YAC9B,SAAS;AACT,YAAA,YAAY,CAAC,wBAAwB;AACtC,SAAA,CAAC;IACJ;IAEO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;IAEO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;+GAxIW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAqB,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA9B,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,uNCpCxC,4zFAiFA,EAAA,MAAA,EAAA,CAAA,srBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuC,6BAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD7Ca,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,8BAA8B,EAAA,QAAA,EAAA,4zFAAA,EAAA,MAAA,EAAA,CAAA,srBAAA,CAAA,EAAA;oOAKL,oBAAoB,EAAA,CAAA;sBAAtD,SAAS;uBAAC,sBAAsB;;;AErCnC;;;;;;;;;;;;;;AAcG;AAkCH,MAAM,MAAM,GAAW;AACrB,IAAA;AACE,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,SAAS,EAAE,2BAA2B;QACtC,WAAW,EAAE,CAAC,gBAAgB,CAAC;QAC/B,IAAI,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAC;AAC5C,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,2EAA2E;AACjF,QAAA,SAAS,EAAE,6BAA6B;QACxC,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,CAAC,UAAU,CAAC;AACnB,YAAA,EAAE,EAAE,uBAAuB;AAC3B,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA;AACD,QAAA,QAAQ,EAAE;YACR,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAC;YAClE,EAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,yCAAyC,EAAC;AAC9E,YAAA;gBACE,IAAI,EAAE,OAAO,CAAC,SAAS;AACvB,gBAAA,SAAS,EAAE,0BAA0B;AACrC,gBAAA,IAAI,EAAE,EAAC,OAAO,EAAE,MAAM,EAA+B;AACtD,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,OAAO,CAAC,SAAS;AACvB,gBAAA,SAAS,EAAE,qBAAqB;AAChC,gBAAA,IAAI,EAAE,EAAC,OAAO,EAAE,MAAM,EAAgC;AACvD,aAAA;YACD,EAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,+BAA+B,EAAC;YACrE,EAAC,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,iCAAiC,EAAC;AAC1E,YAAA;gBACE,IAAI,EAAE,OAAO,CAAC,KAAK;AACnB,gBAAA,SAAS,EAAE,uBAAuB;AAClC,gBAAA,IAAI,EAAE,EAAC,OAAO,EAAE,MAAM,EAA4B;AACnD,aAAA;YACD,EAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,yBAAyB,EAAC;YAChE,EAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,6BAA6B,EAAC;AAChE,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAA,oFAAA,CAAsF;AAC5F,QAAA,SAAS,EAAE,iCAAiC;QAC5C,WAAW,EAAE,CAAC,gBAAgB,CAAC;QAC/B,IAAI,EAAE,EAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAC;AACjD,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAA,0EAAA,EAA6E,OAAO,CAAC,KAAK,CAAA,kBAAA,CAAoB;AACpH,QAAA,SAAS,EAAE,2BAA2B;QACtC,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,UAAU,CAAC;AACnB,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,eAAe,EAAE,IAAI;AACK,SAAA;AAC7B,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAA,0EAAA,EAA6E,OAAO,CAAC,YAAY,CAAA,gBAAA,CAAkB;AACzH,QAAA,SAAS,EAAE,gCAAgC;QAC3C,WAAW,EAAE,CAAC,gBAAgB,CAAC;;;AAG/B,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,CAAC,UAAU,CAAC;AACnB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,kBAAkB,EAAE,IAAI;AACzB,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAA,0EAAA,EAA6E,OAAO,CAAC,SAAS,CAAA,OAAA,CAAS;AAC7G,QAAA,SAAS,EAAE,iCAAiC;QAC5C,WAAW,EAAE,CAAC,gBAAgB,CAAC;;;AAG/B,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,eAAe,EAAE,KAAK;YACtB,KAAK,EAAE,CAAC,UAAU,CAAC;AACnB,YAAA,OAAO,EAAE,MAAM;AACc,SAAA;AAChC,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAA,0EAAA,EAA6E,OAAO,CAAC,SAAS,CAAA,sBAAA,CAAwB;AAC5H,QAAA,SAAS,EAAE,iCAAiC;QAC5C,WAAW,EAAE,CAAC,gBAAgB,CAAC;;;AAG/B,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,CAAC,UAAU,CAAC;AACnB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,OAAO,EAAE,MAAM;AACc,SAAA;AAChC,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAA,0EAAA,EAA6E,OAAO,CAAC,SAAS,CAAA,IAAA,CAAM;AAC1G,QAAA,SAAS,EAAE,wBAAwB;QACnC,WAAW,EAAE,CAAC,gBAAgB,CAAC;;;AAG/B,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,CAAC,UAAU,CAAC;AACnB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,OAAO,EAAE,MAAM;AACc,SAAA;AAChC,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,CAAA,0EAAA,EAA6E,OAAO,CAAC,UAAU,CAAA,uBAAA,CAAyB;AAC9H,QAAA,SAAS,EAAE,uBAAuB;QAClC,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAA,IAAI,EAAE,EAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,IAAI,EAAC;AAC/E,KAAA;CACF;MAGY,2BAA2B,CAAA;IACtC,WAAA,CAGmB,uBAAkD,EAClD,MAAc,EAAA;QADd,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACvB,IAAA,CAAA,MAAM,GAAN,MAAM;QAEvB,IAAI,CAAC,IAAI,CAAC,uBAAuB;YAAE;QAEnC,MAAM,YAAY,GAAsB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAC7D,CAAC,KAAY,KAAK,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,uBAAuB,CAC7D;AACD,QAAA,IAAI,CAAC,YAAY;YAAE;AACnB,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,CACzB,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,SAAkC,MAAM;AAC3E,YAAA,IAAI,EAAE,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,cAAc;YACpD,SAAS,EAAE,SAAS,CAAC,SAAS;SAC/B,CAAC,CAAC,CACJ;IACH;AAnBW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,kBAG5B,yBAAyB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAHxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,0CADuB,YAAY,CAAA,EAAA,CAAA,CAAA;gHAC9D,2BAA2B,EAAA,OAAA,EAAA,CADnB,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAa,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAC9D,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,QAAQ;mBAAC,EAAC,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,EAAE,EAAC;;0BAG1F;;0BACA,MAAM;2BAAC,yBAAyB;;;AC1KrC;;;;;;;;;;;;;;AAcG;MAcU,+BAA+B,CAAA;IAsB1C,WAAA,CACmB,eAAgC,EACzC,KAAqB,EAAA;QADZ,IAAA,CAAA,eAAe,GAAf,eAAe;QACxB,IAAA,CAAA,KAAK,GAAL,KAAK;AAvBN,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEvC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAEnD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;QAEtC,IAAA,CAAA,OAAO,GAAgC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CACnF,GAAG,CAAC,CAAC,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,MAAM;AACtD,YAAA,iBAAiB,EAAE,iBAAiB;AACpC,YAAA,wBAAwB,EAAE,wBAAwB;SACnD,CAAC,CAAC,CACJ;QAEe,IAAA,CAAA,aAAa,GAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAC3E,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAC7B,SAAS,CAAC,CAAC,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,KACtD,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAC/F,EACDE,KAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACrC;QAMC,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;IACtD;AAEA,IAAA,kBAAkB,CAChB,YAA0B,EAC1B,iBAAyB,EACzB,wBAAgC,EAAA;QAEhC,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC;AACF,aAAA,8BAA8B,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,YAAY;aACxF,SAAS,CACR,MAAK;YACH,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,eAAe,EAAE;QACxB,CAAC,EACD,MAAK;YACH,IAAI,CAAC,WAAW,EAAE;AACpB,QAAA,CAAC,CACF;IACL;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5B;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;AAEA,IAAA,cAAc,CACZ,eAA6B,EAC7B,iBAAyB,EACzB,wBAAgC,EAAA;QAEhC,IAAI,CAAC,kBAAkB,CACrB;AACE,YAAA,eAAe,EAAE,CAAC,eAAe,EAAE,eAAe;YAClD,eAAe,EAAE,eAAe,CAAC,eAAe;AACjD,SAAA,EACD,iBAAiB,EACjB,wBAAwB,CACzB;IACH;AAEA,IAAA,oBAAoB,CAClB,eAA6B,EAC7B,iBAAyB,EACzB,wBAAgC,EAAA;QAEhC,IAAI,CAAC,kBAAkB,CACrB;YACE,eAAe,EAAE,eAAe,EAAE,eAAe;AACjD,YAAA,eAAe,EAAE,CAAC,eAAe,CAAC,eAAe;AAClD,SAAA,EACD,iBAAiB,EACjB,wBAAwB,CACzB;IACH;+GAzFW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,6FC5B5C,sxEA+DA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDnCa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,kCAAkC,EAAA,QAAA,EAAA,sxEAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA;;;AExB9C;;;;;;;;;;;;;;AAcG;MAqBU,mCAAmC,CAAA;IAW9C,WAAA,CACmB,eAAgC,EAChC,iBAAoC,EACpC,mBAA8C,EAC9C,cAA8B,EAC9B,gBAAkC,EAAA;QAJlC,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;AAdlB,QAAA,IAAA,CAAA,gCAAgC,GAAG,IAAI,YAAY,EAAO;QAEpE,IAAA,CAAA,kBAAkB,GAA8B,IAAI;QAEpD,IAAA,CAAA,4BAA4B,GAA6B,IAAI;QAC7D,IAAA,CAAA,gCAAgC,GAAG,IAAI;QACvC,IAAA,CAAA,2CAA2C,GAAG,KAAK;QACnD,IAAA,CAAA,+BAA+B,GAAQ,EAAE;IAQ7C;IAEI,8BAA8B,GAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B;QACF;AACA,QAAA,MAAM,EAAC,YAAY,EAAE,mBAAmB,EAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,WAAW;AAClF,QAAA,IAAI,CAAC,+BAA+B,GAAG,EAAE;AACzC,QAAA,IAAI,CAAC;AACF,aAAA,uCAAuC,CAAC,YAAY,EAAE,mBAAmB;AACzE,aAAA,SAAS,CAAC,CAAC,0BAAuD,KAAI;AACrE,YAAA,0BAA0B,CAAC,OAAO,CAChC,CAAC,yBAAoD,KAAI;gBACvD,IAAI,CAAC,+BAA+B,CAClC,yBAAyB,CAAC,EAAE,CAAC,oBAAoB,CAClD,GAAG,IAAI;AACV,YAAA,CAAC,CACF;AACH,QAAA,CAAC,CAAC;IACN;IAEO,sBAAsB,GAAA;AAC3B,QAAA,IAAI,CAAC;AACF,aAAA,qBAAqB;AACrB,aAAA,SAAS,CAAC,CAAC,kBAAuC,KAAI;AACrD,YAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;AAC9C,QAAA,CAAC,CAAC;IACN;IAEO,QAAQ,GAAA;QACb,IAAI,CAAC,sBAAsB,EAAE;IAC/B;AAEO,IAAA,SAAS,CAAC,QAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ;AAClC,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI;AACxC,QAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI;AAC5C,QAAA,IAAI,CAAC,2CAA2C,GAAG,KAAK;QACxD,IAAI,CAAC,8BAA8B,EAAE;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEO,MAAM,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;YAClE;QACF;AAEA,QAAA,MAAM,OAAO,GAAqC;YAChD,qBAAqB,EAAE,IAAI,CAAC,gCAAgC;YAC5D,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY;YACtE,wBAAwB,EAAE,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,WAAW,CAAC,mBAAmB,CAAA,CAAE;AACzF,YAAA,oBAAoB,EAAE,IAAI,CAAC,4BAA4B,CAAC,GAAG;YAC3D,eAAe,EAAE,IAAI,CAAC,2CAA2C;SAClE;QAED,IAAI,CAAC,iBAAiB,CAAC;AACpB,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,wBAAgC,KACzC,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC;AACnD,YAAA,GAAG,OAAO;YACV,wBAAwB;AACzB,SAAA,CAAC,CACH,EACDO,MAAI,CAAC,CAAC,CAAC;AAER,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACxC,oBAAA,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,oDAAoD,CACrD;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,gCAAgC,CAAC,IAAI,EAAE;YAC9C,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AACxC,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,oDAAoD,CACrD;AACD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;IACN;+GAvGW,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAuC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAjC,IAAA,CAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,iSCnChD,gpGAmFA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDhDa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAN/C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,uCAAuC,EAAA,QAAA,EAAA,gpGAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA;yNAKD,MAAM,EAAA,CAAA;sBAArD,SAAS;uBAAC,kBAAkB;gBACZ,gCAAgC,EAAA,CAAA;sBAAhD;;;AErCH;;;;;;;;;;;;;;AAcG;MA+KU,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAvF7B,2BAA2B;YAC3B,mCAAmC;YACnC,yCAAyC;YACzC,6BAA6B;YAC7B,mCAAmC;YACnC,6BAA6B;YAC7B,+BAA+B;YAC/B,kCAAkC;YAClC,2BAA2B;YAC3B,kCAAkC;YAClC,gBAAgB;YAChB,mCAAmC;YACnC,oCAAoC;YACpC,yCAAyC;YACzC,iCAAiC;YACjC,+BAA+B;YAC/B,kCAAkC;YAClC,6BAA6B;YAC7B,8BAA8B;YAC9B,kCAAkC;YAClC,wCAAwC;YACxC,iCAAiC;YACjC,2BAA2B;YAC3B,gCAAgC;YAChC,yCAAyC;YACzC,+BAA+B;AAC/B,YAAA,iCAAiC,aAGjC,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,2BAA2B;YAC3B,WAAW;YACX,eAAe;YACfuC,aAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,yBAAyB;YACzB,eAAe;YACf,YAAY;YACZ,aAAa;YACbC,aAAW;YACX,YAAY;YACZ,UAAU;YACV,kBAAkB;YAClB,YAAY;YACZ,UAAU;YACVC,WAAiB;YACjBC,WAAiB;YACjB,mBAAmB;YACnB,cAAc;YACd,cAAc;YACd,iBAAiB;YACjB,sBAAsB;YACtB,aAAa;YACb,UAAU;YACV,uBAAuB;YACvB,WAAW;YACX,wBAAwB;YACxB,gBAAgB;YAChB,cAAc;YACd,2BAA2B;YAC3B,YAAY;YACZ,iCAAiC;YACjC,YAAY;YACZ,gBAAgB;YAChB,UAAU;YACV,SAAS;YACT,kBAAkB;YAClB,iBAAiB;YACjB,uBAAuB;YACvB,YAAY;YACZ,aAAa;YACb,0BAA0B;YAC1B,WAAW;YACX,uBAAuB;YACvB,YAAY;YACZ,oBAAoB;YACpB,YAAY;YACZ,iBAAiB;YACjB,mCAAmC;YACnC,mBAAmB;YACnB,6BAA6B,CAAA,EAAA,CAAA,CAAA;AAIpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,SAAA,EAFpB,CAAC,oBAAoB,CAAC,YAxD/B,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,2BAA2B;YAC3B,WAAW;YACX,eAAe;YACfH,aAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,yBAAyB;YACzB,eAAe;YACf,YAAY;YACZ,aAAa;YACbC,aAAW;YACX,YAAY;YACZ,UAAU;YACV,kBAAkB;YAClB,YAAY;YACZ,UAAU;YACVC,WAAiB;YACjBC,WAAiB;YACjB,mBAAmB;YACnB,cAAc;YACd,cAAc;YACd,iBAAiB;YACjB,sBAAsB;YACtB,aAAa;YACb,UAAU;YACV,uBAAuB;YACvB,WAAW;YAEX,gBAAgB;YAChB,cAAc;YAEd,YAAY;YAEZ,YAAY;YACZ,gBAAgB;YAChB,UAAU;YACV,SAAS;YACT,kBAAkB;YAClB,iBAAiB;YACjB,uBAAuB;YACvB,YAAY;YACZ,aAAa;YACb,0BAA0B;YAC1B,WAAW;YACX,uBAAuB;YAEvB,oBAAoB;YACpB,YAAY;YAEZ,mCAAmC;YACnC,mBAAmB;YACnB,6BAA6B,CAAA,EAAA,CAAA,CAAA;;4FAIpB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAzFhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,2BAA2B;wBAC3B,mCAAmC;wBACnC,yCAAyC;wBACzC,6BAA6B;wBAC7B,mCAAmC;wBACnC,6BAA6B;wBAC7B,+BAA+B;wBAC/B,kCAAkC;wBAClC,2BAA2B;wBAC3B,kCAAkC;wBAClC,gBAAgB;wBAChB,mCAAmC;wBACnC,oCAAoC;wBACpC,yCAAyC;wBACzC,iCAAiC;wBACjC,+BAA+B;wBAC/B,kCAAkC;wBAClC,6BAA6B;wBAC7B,8BAA8B;wBAC9B,kCAAkC;wBAClC,wCAAwC;wBACxC,iCAAiC;wBACjC,2BAA2B;wBAC3B,gCAAgC;wBAChC,yCAAyC;wBACzC,+BAA+B;wBAC/B,iCAAiC;AAClC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;wBACZ,cAAc;wBACd,2BAA2B;wBAC3B,WAAW;wBACX,eAAe;wBACfH,aAAW;wBACX,YAAY;wBACZ,gBAAgB;wBAChB,yBAAyB;wBACzB,eAAe;wBACf,YAAY;wBACZ,aAAa;wBACbC,aAAW;wBACX,YAAY;wBACZ,UAAU;wBACV,kBAAkB;wBAClB,YAAY;wBACZ,UAAU;wBACVC,WAAiB;wBACjBC,WAAiB;wBACjB,mBAAmB;wBACnB,cAAc;wBACd,cAAc;wBACd,iBAAiB;wBACjB,sBAAsB;wBACtB,aAAa;wBACb,UAAU;wBACV,uBAAuB;wBACvB,WAAW;wBACX,wBAAwB;wBACxB,gBAAgB;wBAChB,cAAc;wBACd,2BAA2B;wBAC3B,YAAY;wBACZ,iCAAiC;wBACjC,YAAY;wBACZ,gBAAgB;wBAChB,UAAU;wBACV,SAAS;wBACT,kBAAkB;wBAClB,iBAAiB;wBACjB,uBAAuB;wBACvB,YAAY;wBACZ,aAAa;wBACb,0BAA0B;wBAC1B,WAAW;wBACX,uBAAuB;wBACvB,YAAY;wBACZ,oBAAoB;wBACpB,YAAY;wBACZ,iBAAiB;wBACjB,mCAAmC;wBACnC,mBAAmB;wBACnB,6BAA6B;AAC9B,qBAAA;oBACD,SAAS,EAAE,CAAC,oBAAoB,CAAC;AAClC,iBAAA;;;AC5LD;;;;;;;;;;;;;;AAcG;AAEH;;AAEG;;AClBH;;AAEG;;;;"}