@acorex-platform/extension-project-management-jira-client 0.0.21

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-extension-project-management-jira-client.mjs","sources":["../../../../libs/extensions/project-management/jira/client/src/lib/entity.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/features/jira-project/jira-project-status.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/features/project-management/jira-project-link-expression-evaluator-scope.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/features/project-management/project-jira.entity-modifier.ts","../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-logo-key.ts","../../../../libs/extensions/project-management/jira/client/src/lib/integration/jira.integration.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/integration/jira.integration-runtime.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/integration/jira.connection-established.handler.ts","../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-logo.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/manifest.ts","../../../../libs/extensions/project-management/jira/client/src/lib/menu.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/jira-extension.module.ts","../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-mark.paths.ts","../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-logo.component.ts","../../../../libs/extensions/project-management/jira/client/src/lib/features/project-import/jira-project-import-popup.component.ts","../../../../libs/extensions/project-management/jira/client/src/acorex-platform-extension-project-management-jira-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { AXPEntityDefinitionLoader, AXPEntityPreloadEntity } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/extension-project-management-jira-client/contracts';\n\n//#endregion\n\n//#region ---- Entity Provider ----\n\n@Injectable()\nexport class AXEJiraEntityProvider implements AXPEntityDefinitionLoader {\n preload(): AXPEntityPreloadEntity[] {\n const module = RootConfig.module.name;\n return Object.values(RootConfig.entities).map((entity) => ({\n module,\n entity: entity.name,\n }));\n }\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (moduleName !== RootConfig.module.name) {\n return null;\n }\n\n switch (entityName) {\n case RootConfig.entities.jiraInstance.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraInstanceFactory();\n case RootConfig.entities.jiraProject.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraProjectFactory();\n case RootConfig.entities.jiraIssueType.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraIssueTypeFactory();\n case RootConfig.entities.jiraField.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraFieldFactory();\n case RootConfig.entities.jiraProjectIssueType.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraProjectIssueTypeFactory();\n case RootConfig.entities.jiraProjectIssueTypeField.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraProjectIssueTypeFieldFactory();\n case RootConfig.entities.jiraWorkflowStatus.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraWorkflowStatusFactory();\n case RootConfig.entities.jiraIssue.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraIssueFactory();\n case RootConfig.entities.jiraWorklog.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraWorklogFactory();\n default:\n return null;\n }\n }\n\n async list(): Promise<{ name: string; module: string }[]> {\n const module = RootConfig.module.name;\n return Object.values(RootConfig.entities).map((entity) => ({\n name: entity.name,\n module,\n }));\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPStatusDefinition, AXPStatusProvider, AXPStatusTransition } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Status Helper ----\n\nconst status = (\n name: string,\n title: string,\n color: string,\n options: Partial<AXPStatusDefinition> = {},\n): AXPStatusDefinition => ({\n name,\n title,\n color,\n ...options,\n});\n\n//#endregion\n\n//#region ---- Jira Project Status Provider ----\n\n/**\n * Operational sync status for mirrored Jira projects (not Jira workflow statuses).\n */\nexport class AXEJiraProjectStatusProvider extends AXPStatusProvider {\n readonly key = 'extensions-jira.status.jira-project';\n\n readonly statuses: AXPStatusDefinition[] = [\n status('Active', '@extensions-jira:projects.statuses.active', 'success', {\n order: 1,\n generateView: true,\n isInitial: true,\n icon: 'fa-light fa-circle-check',\n }),\n status('Archived', '@extensions-jira:projects.statuses.archived', 'neutral', {\n order: 2,\n generateView: true,\n isFinal: true,\n icon: 'fa-light fa-box-archive',\n }),\n status('SyncError', '@extensions-jira:projects.statuses.sync-error', 'danger', {\n order: 3,\n generateView: true,\n icon: 'fa-light fa-triangle-exclamation',\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n {\n from: 'Active',\n to: 'Archived',\n title: '@extensions-jira:projects.transitions.archive',\n },\n {\n from: 'Archived',\n to: 'Active',\n title: '@extensions-jira:projects.transitions.activate',\n },\n {\n from: 'Active',\n to: 'SyncError',\n title: '@extensions-jira:projects.transitions.mark-sync-error',\n },\n {\n from: 'SyncError',\n to: 'Active',\n title: '@extensions-jira:projects.transitions.resolve-sync-error',\n },\n ];\n\n readonly defaultStatus = 'Active';\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPIntegrationRuntimeService } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport type { AXEJiraProjectEntityModel } from '@acorex-platform/extension-project-management-jira-domain';\n\n//#endregion\n\n/** Expression scope namespace (no hyphens — safe for `with (scope)` eval). */\nexport const AXE_JIRA_EXPRESSION_SCOPE = 'JiraExtension';\n\n//#region ---- Provider ----\n\nexport class AXEJiraProjectLinkExpressionEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {\n private readonly entityService = inject(AXPEntityService);\n private readonly integrationRuntime = inject(AXPIntegrationRuntimeService);\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(AXE_JIRA_EXPRESSION_SCOPE, {\n hasProjectLink: async (platformProjectIdRaw?: unknown): Promise<boolean> => {\n const platformProjectId = typeof platformProjectIdRaw === 'string' ? platformProjectIdRaw.trim() : '';\n if (!platformProjectId) {\n return false;\n }\n\n const result = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.jiraProject.name)\n .data<string, AXEJiraProjectEntityModel>()\n .query({\n skip: 0,\n take: 1,\n filter: {\n field: 'platformProjectId',\n operator: { type: 'equal' },\n value: platformProjectId,\n },\n });\n\n return (result.items?.length ?? 0) > 0;\n },\n hasJiraConnection: async (): Promise<boolean> => {\n try {\n await this.integrationRuntime.getConnection({ providerId: 'jira', connectionScope: 'tenant' });\n return true;\n } catch {\n return false;\n }\n },\n });\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSystemActionType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityAction, AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';\nimport {\n actionExists,\n AXPEntityModifierProvider,\n ensureListActions,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { AXEJiraCommandKeys } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport { RootConfig as PmRootConfig } from '@acorex-platform/module-project-management-client/contracts';\nimport { AXE_JIRA_EXPRESSION_SCOPE } from './jira-project-link-expression-evaluator-scope.provider';\n\n//#endregion\n\nconst IMPORT_ORDER = 35;\nconst SYNC_ORDER = 36;\n\nfunction buildImportAction(): AXPEntityAction {\n return {\n name: AXEJiraCommandKeys.ProjectImportFromJira,\n title: '@extensions-jira:actions.import-from-jira.title',\n command: { name: AXEJiraCommandKeys.ProjectImportFromJira },\n priority: 'secondary',\n type: AXPSystemActionType.Import,\n icon: 'fa-brands fa-jira',\n scope: AXPEntityCommandScope.TypeLevel,\n order: IMPORT_ORDER,\n };\n}\n\nfunction buildSyncAction(): AXPEntityAction {\n return {\n name: AXEJiraCommandKeys.ProjectSync,\n title: '@extensions-jira:actions.sync.title',\n command: {\n name: AXEJiraCommandKeys.ProjectSync,\n options: { platformProjectId: '{{ context.eval(\"id\") }}' },\n },\n priority: 'secondary',\n type: AXPSystemActionType.Sync,\n icon: 'fa-light fa-arrows-rotate',\n scope: AXPEntityCommandScope.Individual,\n order: SYNC_ORDER,\n hidden: `{{ !(await ${AXE_JIRA_EXPRESSION_SCOPE}.hasProjectLink(context.eval(\"id\"))) }}`,\n };\n}\n\n/** Adds Jira import/sync actions to ProjectManagement.Project views. */\nexport const AXEJiraProjectEntityModifier: AXPEntityModifierProvider = {\n entityName: PmRootConfig.entities.project.name,\n order: 50,\n modifier: (ctx) => {\n if (ctx.module.get() !== PmRootConfig.module.name) {\n return;\n }\n\n ensureListActions(ctx);\n\n ctx.interfaces.update((interfaces) => {\n const next = (interfaces ?? {}) as Record<string, unknown>;\n const master = (next['master'] ?? {}) as Record<string, unknown>;\n const list = (master['list'] ?? { actions: [], views: [] }) as Record<string, unknown>;\n const listActions = (list['actions'] ?? []) as AXPEntityAction[];\n\n if (!actionExists(listActions, AXEJiraCommandKeys.ProjectImportFromJira)) {\n listActions.push(buildImportAction());\n }\n list['actions'] = listActions;\n master['list'] = list;\n\n const single = master['single'] as Record<string, unknown> | undefined;\n if (single) {\n const singleActions = (single['actions'] ?? []) as AXPEntityAction[];\n if (!actionExists(singleActions, AXEJiraCommandKeys.ProjectSync)) {\n singleActions.push(buildSyncAction());\n }\n single['actions'] = singleActions;\n }\n\n next['master'] = master;\n return next as typeof interfaces;\n });\n },\n};\n\n//#endregion\n","//#region ---- Jira logo registry key ----\n\nexport const axpJiraLogoKey = 'jira' as const;\n\n//#endregion\n","import { AXP_INTEGRATION_AUTH_METHOD_TYPE, AXP_INTEGRATION_CAPABILITY, AXP_INTEGRATION_CONNECTION_SCOPE, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPIntegrationProvider,\n AXPIntegrationProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable } from '@angular/core';\nimport { AXEJiraCommandKeys, RootConfig } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport { axpJiraLogoKey } from '../brand/jira-logo-key';\n\n@Injectable()\nexport class AXEJiraIntegrationProvider implements AXPIntegrationProvider {\n async provide(context: AXPIntegrationProviderContext): Promise<void> {\n const I18N = `@${RootConfig.config.i18n}:integration`;\n\n context.register({\n domainId: 'project-management',\n id: 'jira',\n module: RootConfig.module.name,\n displayName: `${I18N}.display-name`,\n description: `${I18N}.description`,\n icon: RootConfig.module.icon,\n logoKey: axpJiraLogoKey,\n capabilities: [\n AXP_INTEGRATION_CAPABILITY.IssueTracking,\n AXP_INTEGRATION_CAPABILITY.Sync,\n AXP_INTEGRATION_CAPABILITY.TimeLogging,\n ],\n connectionScopes: [AXP_INTEGRATION_CONNECTION_SCOPE.Tenant, AXP_INTEGRATION_CONNECTION_SCOPE.User],\n allowMultipleConnections: true,\n defaultConnectionKey: 'default',\n connectCommandKey: AXEJiraCommandKeys.ConnectionConnect,\n authMethods: [\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.Pat,\n label: `${I18N}.auth.pat.label`,\n instructions: `${I18N}.auth.pat.instructions`,\n supportsValidation: true,\n fields: [\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'baseUrl',\n options: { placeholder: `${I18N}.auth.pat.base-url.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.PasswordBox,\n path: 'token',\n options: { placeholder: `${I18N}.auth.pat.token.placeholder` },\n },\n ],\n },\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.Basic,\n label: `${I18N}.auth.basic.label`,\n instructions: `${I18N}.auth.basic.instructions`,\n supportsValidation: true,\n fields: [\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'baseUrl',\n options: { placeholder: `${I18N}.auth.basic.base-url.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'username',\n options: { placeholder: `${I18N}.auth.basic.username.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.PasswordBox,\n path: 'password',\n options: { placeholder: `${I18N}.auth.basic.password.placeholder` },\n },\n ],\n },\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.ApiToken,\n label: `${I18N}.auth.api-token.label`,\n instructions: `${I18N}.auth.api-token.instructions`,\n supportsValidation: true,\n fields: [\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'siteUrl',\n options: { placeholder: `${I18N}.auth.api-token.site-url.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'email',\n options: { placeholder: `${I18N}.auth.api-token.email.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.PasswordBox,\n path: 'apiToken',\n options: { placeholder: `${I18N}.auth.api-token.token.placeholder` },\n },\n ],\n },\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.OAuth2,\n label: `${I18N}.auth.oauth.label`,\n instructions: `${I18N}.auth.oauth.instructions`,\n usesRedirect: true,\n supportsRefresh: true,\n supportsRevoke: false,\n supportsValidation: true,\n defaultScopes: ['read:jira-work', 'read:jira-user'],\n fields: [],\n },\n ],\n });\n }\n}\n\n//#endregion\n","import { AXP_INTEGRATION_AUTH_METHOD_TYPE, AXP_INTEGRATION_CONNECTION_STATUS, type AXPIntegrationProviderRuntimeHooks, type AXPIntegrationRuntimeContext, type AXPIntegrationValidationResult } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_INTEGRATION_RUNTIME_PROVIDER,\n AXP_INTEGRATION_SECRET_STORE,\n type AXPIntegrationRuntimeProvider,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, trim } from 'lodash-es';\n\n@Injectable()\nexport class AXEJiraIntegrationRuntimeProvider implements AXPIntegrationRuntimeProvider {\n readonly providerId = 'jira';\n\n private readonly secretStore = inject(AXP_INTEGRATION_SECRET_STORE, { optional: true });\n\n async getHooks(): Promise<AXPIntegrationProviderRuntimeHooks> {\n return {\n validateConnection: (ctx) => this.validateConnection(ctx),\n createClient: (ctx) => this.createClient(ctx),\n };\n }\n\n private async validateConnection(ctx: AXPIntegrationRuntimeContext): Promise<AXPIntegrationValidationResult> {\n if (!this.secretStore) {\n return { valid: false, status: AXP_INTEGRATION_CONNECTION_STATUS.Invalid, errorMessage: 'Secret store unavailable.' };\n }\n\n try {\n const credentials = await this.secretStore.resolve(ctx.secretRef, ctx);\n const token =\n credentials.token ??\n credentials.apiToken ??\n credentials.accessToken;\n\n if (!trim(defaultTo(token, ''))) {\n return {\n valid: false,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Invalid,\n errorMessage: 'No token available for Jira connection.',\n };\n }\n\n return {\n valid: true,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n externalAccountName: defaultTo(ctx.instanceUrl, 'Jira'),\n };\n } catch {\n return {\n valid: false,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Invalid,\n errorMessage: 'Failed to validate Jira credentials.',\n };\n }\n }\n\n private async createClient(ctx: AXPIntegrationRuntimeContext): Promise<{ token: string; baseUrl?: string }> {\n if (!this.secretStore) {\n throw new Error('Secret store unavailable.');\n }\n\n const credentials = await this.secretStore.resolve(ctx.secretRef, ctx);\n const token =\n credentials.token ??\n credentials.apiToken ??\n credentials.accessToken;\n\n if (!trim(defaultTo(token, ''))) {\n throw new Error('Jira connection has no usable token.');\n }\n\n return {\n token: token!,\n baseUrl: defaultTo(ctx.instanceUrl, undefined),\n };\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_INTEGRATION_CONNECTION_ESTABLISHED, type AXPIntegrationConnectionEstablishedHandler } from '@acorex-platform/framework-client/common';\nimport { AXP_INTEGRATION_CONNECTION_SCOPE, type AXPSafeIntegrationConnectionDto } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { trim } from 'lodash-es';\n\nimport { RootConfig } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport type { AXEJiraInstanceEntityModel } from '@acorex-platform/extension-project-management-jira-domain';\n\n//#endregion\n\n//#region ---- Handler ----\n\n@Injectable()\nexport class AXEJiraConnectionEstablishedHandler implements AXPIntegrationConnectionEstablishedHandler {\n readonly providerId = 'jira';\n\n private readonly entityService = inject(AXPEntityService);\n\n async onEstablished(connection: AXPSafeIntegrationConnectionDto): Promise<void> {\n if (connection.connectionScope !== AXP_INTEGRATION_CONNECTION_SCOPE.Tenant) {\n return;\n }\n\n const connectionKey = trim(connection.connectionKey);\n if (!connectionKey) {\n return;\n }\n\n const accessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.jiraInstance.name)\n .data<string, AXEJiraInstanceEntityModel>();\n\n const result = await accessor.query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'name', operator: { type: 'equal' }, value: connectionKey }],\n },\n });\n\n const instance = result.items?.[0];\n if (!instance || instance.integrationConnectionId === connection.id) {\n return;\n }\n\n await accessor.update(instance.id, { integrationConnectionId: connection.id });\n }\n}\n\nexport const provideJiraConnectionEstablishedHandler = {\n provide: AXP_INTEGRATION_CONNECTION_ESTABLISHED,\n useClass: AXEJiraConnectionEstablishedHandler,\n multi: true,\n};\n\n//#endregion\n","import {\n AXP_LOGO_PROVIDER,\n type AXPLogoProvider,\n type AXPLogoRequest,\n type AXPLogoView,\n} from '@acorex-platform/framework-client/core';\nimport { axpJiraLogoKey } from './jira-logo-key';\n\nconst jiraLogoProvider: AXPLogoProvider = {\n key: axpJiraLogoKey,\n resolve: async (request: AXPLogoRequest): Promise<AXPLogoView> => ({\n kind: 'component',\n load: () => import('./jira-logo.component').then((module) => module.AXEJiraLogoComponent),\n inputs: {\n appearance: request.appearance,\n size: request.size,\n },\n }),\n};\n\nexport const AXE_JIRA_LOGO_PROVIDER = {\n provide: AXP_LOGO_PROVIDER,\n useValue: jiraLogoProvider,\n multi: true,\n} as const;\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/extension-project-management-jira-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest ----\n\nexport const JiraExtensionManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'integration',\n domain: 'project-management',\n dependencies: [],\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject, Injectable } from '@angular/core';\nimport {\n AXEJiraMenuKeys,\n RootConfig,\n AXPAdministrationPermissionKeys\n} from '@acorex-platform/extension-project-management-jira-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\n@Injectable()\nexport class AXEJiraMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const policy = {\n features: [module.name],\n permissions: [AXPAdministrationPermissionKeys.MaintainConnections],\n };\n\n const configMenu = context.find(AXPCommonMenuKeys.Configuration);\n if (!context.find(AXEJiraMenuKeys.JiraExtensionConfig).exists) {\n configMenu.addItems([\n {\n name: AXEJiraMenuKeys.JiraExtensionConfig,\n text: '@extensions-jira:module.menus.configuration.title',\n icon: module.icon,\n type: 'menu',\n priority: 8935,\n policy,\n children: [],\n },\n ]);\n }\n\n const jiraConfig = context.find(AXEJiraMenuKeys.JiraExtensionConfig);\n const catalogPolicy = {\n features: [module.name],\n permissions: [AXPAdministrationPermissionKeys.ViewIntegrations],\n };\n\n jiraConfig.addItems([\n {\n name: AXEJiraMenuKeys.Instances,\n text: RootConfig.entities.jiraInstance.titlePlural,\n path: this.entityService.createPath(module.name, RootConfig.entities.jiraInstance.name),\n icon: RootConfig.entities.jiraInstance.icon,\n priority: 1,\n policy,\n },\n {\n name: AXEJiraMenuKeys.IssueTypes,\n text: RootConfig.entities.jiraIssueType.titlePlural,\n path: this.entityService.createPath(module.name, RootConfig.entities.jiraIssueType.name),\n icon: RootConfig.entities.jiraIssueType.icon,\n priority: 3,\n policy: catalogPolicy,\n },\n {\n name: AXEJiraMenuKeys.Fields,\n text: RootConfig.entities.jiraField.titlePlural,\n path: this.entityService.createPath(module.name, RootConfig.entities.jiraField.name),\n icon: RootConfig.entities.jiraField.icon,\n priority: 4,\n policy: catalogPolicy,\n },\n {\n name: AXEJiraMenuKeys.Issues,\n text: RootConfig.entities.jiraIssue.titlePlural,\n path: this.entityService.createPath(module.name, RootConfig.entities.jiraIssue.name),\n icon: RootConfig.entities.jiraIssue.icon,\n priority: 5,\n policy: {\n features: [module.name],\n permissions: [AXPAdministrationPermissionKeys.ViewIntegrations],\n },\n },\n {\n name: AXEJiraMenuKeys.Worklogs,\n text: RootConfig.entities.jiraWorklog.titlePlural,\n path: this.entityService.createPath(module.name, RootConfig.entities.jiraWorklog.name),\n icon: RootConfig.entities.jiraWorklog.icon,\n priority: 6,\n policy: {\n features: [module.name],\n permissions: [AXPAdministrationPermissionKeys.ViewIntegrations],\n },\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXMIntegrationManagementModule } from '@acorex-platform/module-integration-management-client';\nimport {\n AXP_INTEGRATION_PROVIDER,\n AXP_INTEGRATION_RUNTIME_PROVIDER,\n AXP_MENU_PROVIDER,\n AXP_STATUS_PROVIDERS,\n} from '@acorex-platform/framework-client/common';\nimport { AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER } from '@acorex-platform/framework-client/layout/entity';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\nimport { AXEJiraCommandKeys } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport { AXEJiraEntityProvider } from './entity.provider';\nimport { AXEJiraProjectStatusProvider } from './features/jira-project/jira-project-status.provider';\nimport { AXEJiraProjectLinkExpressionEvaluatorScopeProvider } from './features/project-management/jira-project-link-expression-evaluator-scope.provider';\nimport { AXEJiraProjectEntityModifier } from './features/project-management/project-jira.entity-modifier';\nimport { AXEJiraIntegrationProvider } from './integration/jira.integration.provider';\nimport { AXEJiraIntegrationRuntimeProvider } from './integration/jira.integration-runtime.provider';\nimport { provideJiraConnectionEstablishedHandler } from './integration/jira.connection-established.handler';\nimport { AXE_JIRA_LOGO_PROVIDER } from './brand/jira-logo.provider';\nimport { JiraExtensionManifest } from './manifest';\nimport { AXEJiraMenuProvider } from './menu.provider';\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [AXMIntegrationManagementModule],\n providers: [\n AXE_JIRA_LOGO_PROVIDER,\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: JiraExtensionManifest,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXEJiraMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXEJiraEntityProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_MODIFIER,\n useValue: AXEJiraProjectEntityModifier,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXEJiraProjectLinkExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXEJiraProjectStatusProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_PROVIDER,\n useClass: AXEJiraIntegrationProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_RUNTIME_PROVIDER,\n useClass: AXEJiraIntegrationRuntimeProvider,\n multi: true,\n },\n provideJiraConnectionEstablishedHandler,\n provideCommandSetups([\n {\n key: AXEJiraCommandKeys.ConnectionConnect,\n command: () => import('./features/connect/connect-jira.command').then((c) => c.ConnectJiraCommand),\n },\n ]),\n ],\n})\nexport class AXEJiraExtensionModule {}\n\n//#endregion\n","//#region ---- Atlassian / Jira mark vector paths ----\n\nexport const AXE_JIRA_MARK_BLUE = '#2684FF';\n\n/** Left sail */\nexport const AXE_JIRA_MARK_LEFT_PATH =\n 'M7.12 11.084a.683.683 0 0 0-1.16.126L.075 22.974a.703.703 0 0 0 .63 1.018h8.19a.678.678 0 0 0 .63-.39c1.767-3.65.696-9.203-2.406-12.52z';\n\n/** Right sail */\nexport const AXE_JIRA_MARK_RIGHT_PATH =\n 'M11.434.386a15.515 15.515 0 0 0-.906 15.317l3.95 7.9a.703.703 0 0 0 .628.388h8.19a.703.703 0 0 0 .63-1.017L12.63.38a.664.664 0 0 0-1.196.006z';\n\n//#endregion\n","import type { AXPLogoAppearance } from '@acorex-platform/framework-client/core';\nimport { Component, computed, input, ChangeDetectionStrategy } from '@angular/core';\nimport {\n AXE_JIRA_MARK_BLUE,\n AXE_JIRA_MARK_LEFT_PATH,\n AXE_JIRA_MARK_RIGHT_PATH,\n} from './jira-mark.paths';\n\n//#region ---- Jira brand logo (owned by Jira extension) ----\n\n@Component({\n selector: 'axe-jira-logo',\n host: { class: 'inline-flex items-center justify-center' },\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n @switch (resolvedAppearance()) {\n @case ('monochrome') {\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path fill=\"currentColor\" [attr.d]=\"leftPath\" />\n <path fill=\"currentColor\" [attr.d]=\"rightPath\" />\n </svg>\n }\n @default {\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path [attr.fill]=\"markBlue\" [attr.d]=\"leftPath\" />\n <path [attr.fill]=\"markBlue\" [attr.d]=\"rightPath\" />\n </svg>\n }\n }\n `,\n})\nexport class AXEJiraLogoComponent {\n appearance = input<AXPLogoAppearance>('colored');\n size = input(20);\n\n protected readonly leftPath = AXE_JIRA_MARK_LEFT_PATH;\n protected readonly rightPath = AXE_JIRA_MARK_RIGHT_PATH;\n protected readonly markBlue = AXE_JIRA_MARK_BLUE;\n\n protected readonly resolvedAppearance = computed(() => {\n const value = this.appearance();\n return value === 'monochrome' ? 'monochrome' : 'colored';\n });\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXEJiraProjectSyncStrategy } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport { AXE_JIRA_PROJECT_SYNC_STRATEGIES } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport type { AXEJiraInstanceEntityModel } from '@acorex-platform/extension-project-management-jira-domain';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport type { AXEJiraRemoteProject } from '@acorex-platform/extension-project-management-jira-client/contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXEJiraProjectImportPopupData {\n instance: AXEJiraInstanceEntityModel;\n defaultProjectTypeId: string;\n projectTypes: Array<{ id: string; title: string }>;\n remoteProjects: AXEJiraRemoteProject[];\n alreadyLinkedJiraIds: Set<string>;\n}\n\nexport interface AXEJiraProjectImportPopupResult {\n defaultProjectTypeId: string;\n rows: Array<{\n remote: AXEJiraRemoteProject;\n selected: boolean;\n syncStrategy: AXEJiraProjectSyncStrategy;\n }>;\n}\n\ninterface ImportRowState {\n remote: AXEJiraRemoteProject;\n selected: boolean;\n syncStrategy: AXEJiraProjectSyncStrategy;\n alreadyLinked: boolean;\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axe-jira-project-import-popup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n FormsModule,\n AXButtonModule,\n AXCheckBoxModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXSelectBoxModule,\n AXTranslationModule,\n ],\n template: `\n <div class=\"flex flex-col gap-4 p-4 max-h-[70vh] overflow-auto\">\n <div class=\"flex flex-col gap-1\">\n <span class=\"text-sm font-medium\">\n {{ '@extensions-jira:import.popup.default-project-type' | translate | async }}\n </span>\n <ax-select-box\n [dataSource]=\"projectTypes\"\n valueField=\"id\"\n textField=\"title\"\n [ngModel]=\"defaultProjectTypeId()\"\n (onValueChanged)=\"handleProjectTypeChange($event)\"\n ></ax-select-box>\n </div>\n\n @if (loading()) {\n <ax-loading></ax-loading>\n } @else if (rows().length === 0) {\n <p class=\"text-sm opacity-70\">\n {{ '@extensions-jira:import.popup.empty' | translate | async }}\n </p>\n } @else {\n <table class=\"w-full text-sm\">\n <thead>\n <tr class=\"border-b\">\n <th class=\"p-2 text-start\"></th>\n <th class=\"p-2 text-start\">{{ '@extensions-jira:import.popup.columns.key' | translate | async }}</th>\n <th class=\"p-2 text-start\">{{ '@extensions-jira:import.popup.columns.name' | translate | async }}</th>\n <th class=\"p-2 text-start\">{{ '@extensions-jira:import.popup.columns.strategy' | translate | async }}</th>\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track row.remote.id) {\n <tr class=\"border-b border-opacity-20\">\n <td class=\"p-2\">\n <ax-check-box\n [ngModel]=\"row.selected\"\n [disabled]=\"row.alreadyLinked\"\n (onValueChanged)=\"toggleRow(row.remote.id, $event)\"\n ></ax-check-box>\n </td>\n <td class=\"p-2\">{{ row.remote.key }}</td>\n <td class=\"p-2\">{{ row.remote.name }}</td>\n <td class=\"p-2\">\n <ax-select-box\n class=\"min-w-40\"\n [dataSource]=\"strategyOptions\"\n valueField=\"id\"\n textField=\"title\"\n [ngModel]=\"row.syncStrategy\"\n [disabled]=\"!row.selected\"\n (onValueChanged)=\"changeStrategy(row.remote.id, $event)\"\n ></ax-select-box>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"outline\"\n [text]=\"'@general:actions.cancel.title' | translate | async\"\n (onClick)=\"close()\"\n ></ax-button>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [disabled]=\"!hasSelection()\"\n [text]=\"'@extensions-jira:import.popup.confirm' | translate | async\"\n (onClick)=\"confirm()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n})\nexport class AXEJiraProjectImportPopupComponent extends AXBasePageComponent {\n protected loading = signal(false);\n protected defaultProjectTypeId = signal('');\n protected rows = signal<ImportRowState[]>([]);\n\n instance!: AXEJiraInstanceEntityModel;\n projectTypes: Array<{ id: string; title: string }> = [];\n remoteProjects: AXEJiraRemoteProject[] = [];\n alreadyLinkedJiraIds = new Set<string>();\n\n protected readonly strategyOptions = AXE_JIRA_PROJECT_SYNC_STRATEGIES.map((id) => ({\n id,\n title: `@extensions-jira:import.sync-strategy.${id}`,\n }));\n\n protected override ngOnInit(): void {\n super.ngOnInit();\n this.defaultProjectTypeId.set(this.projectTypes[0]?.id ?? '');\n this.rows.set(\n this.remoteProjects.map((remote) => ({\n remote,\n selected: !this.alreadyLinkedJiraIds.has(remote.id),\n syncStrategy: 'merge' as AXEJiraProjectSyncStrategy,\n alreadyLinked: this.alreadyLinkedJiraIds.has(remote.id),\n })),\n );\n }\n\n protected handleProjectTypeChange(event: AXValueChangedEvent<string>): void {\n this.defaultProjectTypeId.set(event.value ?? '');\n }\n\n protected toggleRow(remoteId: string, event: AXValueChangedEvent<boolean>): void {\n const selected = !!event.value;\n this.rows.update((items) =>\n items.map((row) => (row.remote.id === remoteId ? { ...row, selected } : row)),\n );\n }\n\n protected changeStrategy(remoteId: string, event: AXValueChangedEvent<AXEJiraProjectSyncStrategy>): void {\n const syncStrategy = event.value ?? 'merge';\n this.rows.update((items) =>\n items.map((row) => (row.remote.id === remoteId ? { ...row, syncStrategy } : row)),\n );\n }\n\n protected hasSelection(): boolean {\n return this.rows().some((row) => row.selected && !row.alreadyLinked);\n }\n\n protected confirm(): void {\n const result: AXEJiraProjectImportPopupResult = {\n defaultProjectTypeId: this.defaultProjectTypeId(),\n rows: this.rows()\n .filter((row) => row.selected && !row.alreadyLinked)\n .map((row) => ({\n remote: row.remote,\n selected: true,\n syncStrategy: row.syncStrategy,\n })),\n };\n this.close(result);\n }\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PmRootConfig"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA;AAEA;MAGa,qBAAqB,CAAA;IAChC,OAAO,GAAA;AACL,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI;AACrC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;YACzD,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,IAAI;AACpB,SAAA,CAAC,CAAC;IACL;AAEA,IAAA,MAAM,GAAG,CAAC,UAAkB,EAAE,UAAkB,EAAA;QAC9C,IAAI,UAAU,KAAK,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;AACzC,YAAA,OAAO,IAAI;QACb;QAEA,QAAQ,UAAU;AAChB,YAAA,KAAK,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;gBACxC,OAAO,CAAC,MAAM,OAAO,2DAA2D,CAAC,EAAE,mBAAmB,EAAE;AAC1G,YAAA,KAAK,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;gBACvC,OAAO,CAAC,MAAM,OAAO,2DAA2D,CAAC,EAAE,kBAAkB,EAAE;AACzG,YAAA,KAAK,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI;gBACzC,OAAO,CAAC,MAAM,OAAO,2DAA2D,CAAC,EAAE,oBAAoB,EAAE;AAC3G,YAAA,KAAK,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;gBACrC,OAAO,CAAC,MAAM,OAAO,2DAA2D,CAAC,EAAE,gBAAgB,EAAE;AACvG,YAAA,KAAK,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI;gBAChD,OAAO,CAAC,MAAM,OAAO,2DAA2D,CAAC,EAAE,2BAA2B,EAAE;AAClH,YAAA,KAAK,UAAU,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI;gBACrD,OAAO,CAAC,MAAM,OAAO,2DAA2D,CAAC,EAAE,gCAAgC,EAAE;AACvH,YAAA,KAAK,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI;gBAC9C,OAAO,CAAC,MAAM,OAAO,2DAA2D,CAAC,EAAE,yBAAyB,EAAE;AAChH,YAAA,KAAK,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;gBACrC,OAAO,CAAC,MAAM,OAAO,2DAA2D,CAAC,EAAE,gBAAgB,EAAE;AACvG,YAAA,KAAK,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;gBACvC,OAAO,CAAC,MAAM,OAAO,2DAA2D,CAAC,EAAE,kBAAkB,EAAE;AACzG,YAAA;AACE,gBAAA,OAAO,IAAI;;IAEjB;AAEA,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI;AACrC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;YACzD,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM;AACP,SAAA,CAAC,CAAC;IACL;8GA5CW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACXD;AAIA;AAEA;AAEA,MAAM,MAAM,GAAG,CACb,IAAY,EACZ,KAAa,EACb,KAAa,EACb,OAAA,GAAwC,EAAE,MACjB;IACzB,IAAI;IACJ,KAAK;IACL,KAAK;AACL,IAAA,GAAG,OAAO;AACX,CAAA,CAAC;AAEF;AAEA;AAEA;;AAEG;AACG,MAAO,4BAA6B,SAAQ,iBAAiB,CAAA;AAAnE,IAAA,WAAA,GAAA;;QACW,IAAA,CAAA,GAAG,GAAG,qCAAqC;AAE3C,QAAA,IAAA,CAAA,QAAQ,GAA0B;AACzC,YAAA,MAAM,CAAC,QAAQ,EAAE,2CAA2C,EAAE,SAAS,EAAE;AACvE,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,IAAI,EAAE,0BAA0B;aACjC,CAAC;AACF,YAAA,MAAM,CAAC,UAAU,EAAE,6CAA6C,EAAE,SAAS,EAAE;AAC3E,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,IAAI,EAAE,yBAAyB;aAChC,CAAC;AACF,YAAA,MAAM,CAAC,WAAW,EAAE,+CAA+C,EAAE,QAAQ,EAAE;AAC7E,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,IAAI,EAAE,kCAAkC;aACzC,CAAC;SACH;AAEQ,QAAA,IAAA,CAAA,WAAW,GAA0B;AAC5C,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,EAAE,EAAE,UAAU;AACd,gBAAA,KAAK,EAAE,+CAA+C;AACvD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,EAAE,EAAE,QAAQ;AACZ,gBAAA,KAAK,EAAE,gDAAgD;AACxD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,EAAE,EAAE,WAAW;AACf,gBAAA,KAAK,EAAE,uDAAuD;AAC/D,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,EAAE,EAAE,QAAQ;AACZ,gBAAA,KAAK,EAAE,0DAA0D;AAClE,aAAA;SACF;QAEQ,IAAA,CAAA,aAAa,GAAG,QAAQ;IACnC;AAAC;AAED;;AC5EA;AASA;AAEA;AACO,MAAM,yBAAyB,GAAG,eAAe;AAExD;MAEa,kDAAkD,CAAA;AAA/D,IAAA,WAAA,GAAA;AACmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,4BAA4B,CAAC;IAmC5E;IAjCE,MAAM,OAAO,CAAC,OAAmD,EAAA;AAC/D,QAAA,OAAO,CAAC,QAAQ,CAAC,yBAAyB,EAAE;AAC1C,YAAA,cAAc,EAAE,OAAO,oBAA8B,KAAsB;AACzE,gBAAA,MAAM,iBAAiB,GAAG,OAAO,oBAAoB,KAAK,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE;gBACrG,IAAI,CAAC,iBAAiB,EAAE;AACtB,oBAAA,OAAO,KAAK;gBACd;AAEA,gBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;AACvB,qBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AACvE,qBAAA,IAAI;AACJ,qBAAA,KAAK,CAAC;AACL,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,MAAM,EAAE;AACN,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3B,wBAAA,KAAK,EAAE,iBAAiB;AACzB,qBAAA;AACF,iBAAA,CAAC;gBAEJ,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;YACxC,CAAC;YACD,iBAAiB,EAAE,YAA6B;AAC9C,gBAAA,IAAI;AACF,oBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;AAC9F,oBAAA,OAAO,IAAI;gBACb;AAAE,gBAAA,MAAM;AACN,oBAAA,OAAO,KAAK;gBACd;YACF,CAAC;AACF,SAAA,CAAC;IACJ;AACD;AAED;;ACvDA;AAaA;AAEA,MAAM,YAAY,GAAG,EAAE;AACvB,MAAM,UAAU,GAAG,EAAE;AAErB,SAAS,iBAAiB,GAAA;IACxB,OAAO;QACL,IAAI,EAAE,kBAAkB,CAAC,qBAAqB;AAC9C,QAAA,KAAK,EAAE,iDAAiD;AACxD,QAAA,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,qBAAqB,EAAE;AAC3D,QAAA,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,QAAA,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,qBAAqB,CAAC,SAAS;AACtC,QAAA,KAAK,EAAE,YAAY;KACpB;AACH;AAEA,SAAS,eAAe,GAAA;IACtB,OAAO;QACL,IAAI,EAAE,kBAAkB,CAAC,WAAW;AACpC,QAAA,KAAK,EAAE,qCAAqC;AAC5C,QAAA,OAAO,EAAE;YACP,IAAI,EAAE,kBAAkB,CAAC,WAAW;AACpC,YAAA,OAAO,EAAE,EAAE,iBAAiB,EAAE,0BAA0B,EAAE;AAC3D,SAAA;AACD,QAAA,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,mBAAmB,CAAC,IAAI;AAC9B,QAAA,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,qBAAqB,CAAC,UAAU;AACvC,QAAA,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,CAAA,WAAA,EAAc,yBAAyB,CAAA,uCAAA,CAAyC;KACzF;AACH;AAEA;AACO,MAAM,4BAA4B,GAA8B;AACrE,IAAA,UAAU,EAAEA,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI;AAC9C,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,QAAQ,EAAE,CAAC,GAAG,KAAI;AAChB,QAAA,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,KAAKA,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;YACjD;QACF;QAEA,iBAAiB,CAAC,GAAG,CAAC;QAEtB,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,KAAI;AACnC,YAAA,MAAM,IAAI,IAAI,UAAU,IAAI,EAAE,CAA4B;YAC1D,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAA4B;AAChE,YAAA,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAA4B;YACtF,MAAM,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAsB;YAEhE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,EAAE;AACxE,gBAAA,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvC;AACA,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW;AAC7B,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;AAErB,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAwC;YACtE,IAAI,MAAM,EAAE;gBACV,MAAM,aAAa,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAsB;gBACpE,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAE;AAChE,oBAAA,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvC;AACA,gBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,aAAa;YACnC;AAEA,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM;AACvB,YAAA,OAAO,IAAyB;AAClC,QAAA,CAAC,CAAC;IACJ,CAAC;CACF;AAED;;ACtFA;AAEO,MAAM,cAAc,GAAG;AAE9B;;MCMa,0BAA0B,CAAA;IACrC,MAAM,OAAO,CAAC,OAAsC,EAAA;QAClD,MAAM,IAAI,GAAG,CAAA,CAAA,EAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,YAAA,CAAc;QAErD,OAAO,CAAC,QAAQ,CAAC;AACf,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,EAAE,EAAE,MAAM;AACV,YAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;YAC9B,WAAW,EAAE,CAAA,EAAG,IAAI,CAAA,aAAA,CAAe;YACnC,WAAW,EAAE,CAAA,EAAG,IAAI,CAAA,YAAA,CAAc;AAClC,YAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,YAAY,EAAE;AACZ,gBAAA,0BAA0B,CAAC,aAAa;AACxC,gBAAA,0BAA0B,CAAC,IAAI;AAC/B,gBAAA,0BAA0B,CAAC,WAAW;AACvC,aAAA;YACD,gBAAgB,EAAE,CAAC,gCAAgC,CAAC,MAAM,EAAE,gCAAgC,CAAC,IAAI,CAAC;AAClG,YAAA,wBAAwB,EAAE,IAAI;AAC9B,YAAA,oBAAoB,EAAE,SAAS;YAC/B,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB;AACvD,YAAA,WAAW,EAAE;AACX,gBAAA;oBACE,IAAI,EAAE,gCAAgC,CAAC,GAAG;oBAC1C,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,eAAA,CAAiB;oBAC/B,YAAY,EAAE,CAAA,EAAG,IAAI,CAAA,sBAAA,CAAwB;AAC7C,oBAAA,kBAAkB,EAAE,IAAI;AACxB,oBAAA,MAAM,EAAE;AACN,wBAAA;AACE,4BAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;AACpC,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,OAAO,EAAE,EAAE,WAAW,EAAE,CAAA,EAAG,IAAI,gCAAgC,EAAE;AAClE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW;AACxC,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,OAAO,EAAE,EAAE,WAAW,EAAE,CAAA,EAAG,IAAI,6BAA6B,EAAE;AAC/D,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;oBACE,IAAI,EAAE,gCAAgC,CAAC,KAAK;oBAC5C,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,iBAAA,CAAmB;oBACjC,YAAY,EAAE,CAAA,EAAG,IAAI,CAAA,wBAAA,CAA0B;AAC/C,oBAAA,kBAAkB,EAAE,IAAI;AACxB,oBAAA,MAAM,EAAE;AACN,wBAAA;AACE,4BAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;AACpC,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,OAAO,EAAE,EAAE,WAAW,EAAE,CAAA,EAAG,IAAI,kCAAkC,EAAE;AACpE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;AACpC,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,OAAO,EAAE,EAAE,WAAW,EAAE,CAAA,EAAG,IAAI,kCAAkC,EAAE;AACpE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW;AACxC,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,OAAO,EAAE,EAAE,WAAW,EAAE,CAAA,EAAG,IAAI,kCAAkC,EAAE;AACpE,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;oBACE,IAAI,EAAE,gCAAgC,CAAC,QAAQ;oBAC/C,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,qBAAA,CAAuB;oBACrC,YAAY,EAAE,CAAA,EAAG,IAAI,CAAA,4BAAA,CAA8B;AACnD,oBAAA,kBAAkB,EAAE,IAAI;AACxB,oBAAA,MAAM,EAAE;AACN,wBAAA;AACE,4BAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;AACpC,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,OAAO,EAAE,EAAE,WAAW,EAAE,CAAA,EAAG,IAAI,sCAAsC,EAAE;AACxE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;AACpC,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,OAAO,EAAE,EAAE,WAAW,EAAE,CAAA,EAAG,IAAI,mCAAmC,EAAE;AACrE,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW;AACxC,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,OAAO,EAAE,EAAE,WAAW,EAAE,CAAA,EAAG,IAAI,mCAAmC,EAAE;AACrE,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;oBACE,IAAI,EAAE,gCAAgC,CAAC,MAAM;oBAC7C,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,iBAAA,CAAmB;oBACjC,YAAY,EAAE,CAAA,EAAG,IAAI,CAAA,wBAAA,CAA0B;AAC/C,oBAAA,YAAY,EAAE,IAAI;AAClB,oBAAA,eAAe,EAAE,IAAI;AACrB,oBAAA,cAAc,EAAE,KAAK;AACrB,oBAAA,kBAAkB,EAAE,IAAI;AACxB,oBAAA,aAAa,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AACnD,oBAAA,MAAM,EAAE,EAAE;AACX,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;IACJ;8GAnGW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA1B,0BAA0B,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;;MCCY,iCAAiC,CAAA;AAD9C,IAAA,WAAA,GAAA;QAEW,IAAA,CAAA,UAAU,GAAG,MAAM;QAEX,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AA+DxF,IAAA;AA7DC,IAAA,MAAM,QAAQ,GAAA;QACZ,OAAO;YACL,kBAAkB,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;YACzD,YAAY,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;SAC9C;IACH;IAEQ,MAAM,kBAAkB,CAAC,GAAiC,EAAA;AAChE,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,CAAC,OAAO,EAAE,YAAY,EAAE,2BAA2B,EAAE;QACvH;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC;AACtE,YAAA,MAAM,KAAK,GACT,WAAW,CAAC,KAAK;AACjB,gBAAA,WAAW,CAAC,QAAQ;gBACpB,WAAW,CAAC,WAAW;YAEzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE;gBAC/B,OAAO;AACL,oBAAA,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,iCAAiC,CAAC,OAAO;AACjD,oBAAA,YAAY,EAAE,yCAAyC;iBACxD;YACH;YAEA,OAAO;AACL,gBAAA,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,iCAAiC,CAAC,SAAS;gBACnD,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC;aACxD;QACH;AAAE,QAAA,MAAM;YACN,OAAO;AACL,gBAAA,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,iCAAiC,CAAC,OAAO;AACjD,gBAAA,YAAY,EAAE,sCAAsC;aACrD;QACH;IACF;IAEQ,MAAM,YAAY,CAAC,GAAiC,EAAA;AAC1D,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;QAC9C;AAEA,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC;AACtE,QAAA,MAAM,KAAK,GACT,WAAW,CAAC,KAAK;AACjB,YAAA,WAAW,CAAC,QAAQ;YACpB,WAAW,CAAC,WAAW;QAEzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;QACzD;QAEA,OAAO;AACL,YAAA,KAAK,EAAE,KAAM;YACb,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;SAC/C;IACH;8GAjEW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjC,iCAAiC,EAAA,CAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C;;;ACTD;AAWA;AAEA;MAGa,mCAAmC,CAAA;AADhD,IAAA,WAAA,GAAA;QAEW,IAAA,CAAA,UAAU,GAAG,MAAM;AAEX,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAgC1D,IAAA;IA9BC,MAAM,aAAa,CAAC,UAA2C,EAAA;QAC7D,IAAI,UAAU,CAAC,eAAe,KAAK,gCAAgC,CAAC,MAAM,EAAE;YAC1E;QACF;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QACpD,IAAI,CAAC,aAAa,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;AACnB,aAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AACxE,aAAA,IAAI,EAAsC;AAE7C,QAAA,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AAChF,aAAA;AACF,SAAA,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,uBAAuB,KAAK,UAAU,CAAC,EAAE,EAAE;YACnE;QACF;AAEA,QAAA,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,uBAAuB,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;IAChF;8GAlCW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnC,mCAAmC,EAAA,CAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C;;AAsCM,MAAM,uCAAuC,GAAG;AACrD,IAAA,OAAO,EAAE,sCAAsC;AAC/C,IAAA,QAAQ,EAAE,mCAAmC;AAC7C,IAAA,KAAK,EAAE,IAAI;CACZ;;ACjDD,MAAM,gBAAgB,GAAoB;AACxC,IAAA,GAAG,EAAE,cAAc;AACnB,IAAA,OAAO,EAAE,OAAO,OAAuB,MAA4B;AACjE,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,MAAM,kEAA+B,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,oBAAoB,CAAC;AACzF,QAAA,MAAM,EAAE;YACN,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;AACnB,SAAA;KACF,CAAC;CACH;AAEM,MAAM,sBAAsB,GAAG;AACpC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,KAAK,EAAE,IAAI;;;ACvBb;AAKA;AAEA;AAEO,MAAM,qBAAqB,GAAsB;AACtD,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK;AAC9B,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,MAAM,EAAE,oBAAoB;AAC5B,IAAA,YAAY,EAAE,EAAE;CACjB;AAED;;ACpBA;AAcA;AAEA;MAGa,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AA+E1D,IAAA;IA7EC,MAAM,OAAO,CAAC,OAA+B,EAAA;AAC3C,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;AAChC,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,YAAA,WAAW,EAAE,CAAC,+BAA+B,CAAC,mBAAmB,CAAC;SACnE;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;AAChE,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,MAAM,EAAE;YAC7D,UAAU,CAAC,QAAQ,CAAC;AAClB,gBAAA;oBACE,IAAI,EAAE,eAAe,CAAC,mBAAmB;AACzC,oBAAA,IAAI,EAAE,mDAAmD;oBACzD,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,QAAQ,EAAE,IAAI;oBACd,MAAM;AACN,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;AACF,aAAA,CAAC;QACJ;QAEA,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC;AACpE,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,YAAA,WAAW,EAAE,CAAC,+BAA+B,CAAC,gBAAgB,CAAC;SAChE;QAED,UAAU,CAAC,QAAQ,CAAC;AAClB,YAAA;gBACE,IAAI,EAAE,eAAe,CAAC,SAAS;AAC/B,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW;AAClD,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;AACvF,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AAC3C,gBAAA,QAAQ,EAAE,CAAC;gBACX,MAAM;AACP,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,eAAe,CAAC,UAAU;AAChC,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW;AACnD,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AACxF,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI;AAC5C,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE,aAAa;AACtB,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,eAAe,CAAC,MAAM;AAC5B,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW;AAC/C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;AACpF,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;AACxC,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE,aAAa;AACtB,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,eAAe,CAAC,MAAM;AAC5B,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW;AAC/C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;AACpF,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;AACxC,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,oBAAA,WAAW,EAAE,CAAC,+BAA+B,CAAC,gBAAgB,CAAC;AAChE,iBAAA;AACF,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,eAAe,CAAC,QAAQ;AAC9B,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW;AACjD,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AACtF,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AAC1C,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,oBAAA,WAAW,EAAE,CAAC,+BAA+B,CAAC,gBAAgB,CAAC;AAChE,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;IACJ;8GA/EW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;AClBD;AAyBA;AAEA;MAuDa,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YApDvB,8BAA8B,CAAA,EAAA,CAAA,CAAA;AAoD7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,SAAA,EAnDtB;YACT,sBAAsB;AACtB,YAAA;AACE,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,QAAQ,EAAE,qBAAqB;AAC/B,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,mBAAmB;AAC7B,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,QAAQ,EAAE,qBAAqB;AAC/B,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,QAAQ,EAAE,4BAA4B;AACtC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,uCAAuC;AAChD,gBAAA,QAAQ,EAAE,kDAAkD;AAC5D,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,oBAAoB;AAC7B,gBAAA,QAAQ,EAAE,4BAA4B;AACtC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,QAAQ,EAAE,0BAA0B;AACpC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,gCAAgC;AACzC,gBAAA,QAAQ,EAAE,iCAAiC;AAC3C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;YACD,uCAAuC;AACvC,YAAA,oBAAoB,CAAC;AACnB,gBAAA;oBACE,GAAG,EAAE,kBAAkB,CAAC,iBAAiB;AACzC,oBAAA,OAAO,EAAE,MAAM,OAAO,8FAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC;AACnG,iBAAA;aACF,CAAC;AACH,SAAA,EAAA,OAAA,EAAA,CAlDS,8BAA8B,CAAA,EAAA,CAAA,CAAA;;2FAoD7B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBArDlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,8BAA8B,CAAC;AACzC,oBAAA,SAAS,EAAE;wBACT,sBAAsB;AACtB,wBAAA;AACE,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,QAAQ,EAAE,qBAAqB;AAC/B,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,mBAAmB;AAC7B,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,QAAQ,EAAE,qBAAqB;AAC/B,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,QAAQ,EAAE,4BAA4B;AACtC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,uCAAuC;AAChD,4BAAA,QAAQ,EAAE,kDAAkD;AAC5D,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,oBAAoB;AAC7B,4BAAA,QAAQ,EAAE,4BAA4B;AACtC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,wBAAwB;AACjC,4BAAA,QAAQ,EAAE,0BAA0B;AACpC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,gCAAgC;AACzC,4BAAA,QAAQ,EAAE,iCAAiC;AAC3C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;wBACD,uCAAuC;AACvC,wBAAA,oBAAoB,CAAC;AACnB,4BAAA;gCACE,GAAG,EAAE,kBAAkB,CAAC,iBAAiB;AACzC,gCAAA,OAAO,EAAE,MAAM,OAAO,8FAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC;AACnG,6BAAA;yBACF,CAAC;AACH,qBAAA;AACF,iBAAA;;;ACjFD;AAEO,MAAM,kBAAkB,GAAG;AAElC;AACO,MAAM,uBAAuB,GAClC;AAEF;AACO,MAAM,wBAAwB,GACnC;AAEF;;ACJA;MAuBa,oBAAoB,CAAA;AArBjC,IAAA,WAAA,GAAA;QAsBE,IAAA,CAAA,UAAU,GAAG,KAAK,CAAoB,SAAS;uFAAC;QAChD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE;iFAAC;QAEG,IAAA,CAAA,QAAQ,GAAG,uBAAuB;QAClC,IAAA,CAAA,SAAS,GAAG,wBAAwB;QACpC,IAAA,CAAA,QAAQ,GAAG,kBAAkB;AAE7B,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACpD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;YAC/B,OAAO,KAAK,KAAK,YAAY,GAAG,YAAY,GAAG,SAAS;QAC1D,CAAC;+FAAC;AACH,IAAA;8GAZY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBrB;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;;2FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBArBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE;oBAC1D,eAAe,EAAE,uBAAuB,CAAC,KAAK;AAC9C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;AAeT,EAAA,CAAA;AACF,iBAAA;;;;;;;;ACgBD;AAEA;AA6FM,MAAO,kCAAmC,SAAQ,mBAAmB,CAAA;AA3F3E,IAAA,WAAA,GAAA;;QA4FY,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK;oFAAC;QACvB,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,EAAE;iGAAC;QACjC,IAAA,CAAA,IAAI,GAAG,MAAM,CAAmB,EAAE;iFAAC;QAG7C,IAAA,CAAA,YAAY,GAAyC,EAAE;QACvD,IAAA,CAAA,cAAc,GAA2B,EAAE;AAC3C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,GAAG,EAAU;QAErB,IAAA,CAAA,eAAe,GAAG,gCAAgC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM;YACjF,EAAE;YACF,KAAK,EAAE,CAAA,sCAAA,EAAyC,EAAE,CAAA,CAAE;AACrD,SAAA,CAAC,CAAC;AAkDJ,IAAA;IAhDoB,QAAQ,GAAA;QACzB,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;AAC7D,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CACX,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;YACnC,MAAM;YACN,QAAQ,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AACnD,YAAA,YAAY,EAAE,OAAqC;YACnD,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;SACxD,CAAC,CAAC,CACJ;IACH;AAEU,IAAA,uBAAuB,CAAC,KAAkC,EAAA;QAClE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAClD;IAEU,SAAS,CAAC,QAAgB,EAAE,KAAmC,EAAA;AACvE,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KACrB,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,GAAG,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAC,CAC9E;IACH;IAEU,cAAc,CAAC,QAAgB,EAAE,KAAsD,EAAA;AAC/F,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KACrB,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,GAAG,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC,CAClF;IACH;IAEU,YAAY,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;IACtE;IAEU,OAAO,GAAA;AACf,QAAA,MAAM,MAAM,GAAoC;AAC9C,YAAA,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACjD,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI;AACZ,iBAAA,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,aAAa;AAClD,iBAAA,GAAG,CAAC,CAAC,GAAG,MAAM;gBACb,MAAM,EAAE,GAAG,CAAC,MAAM;AAClB,gBAAA,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,GAAG,CAAC,YAAY;AAC/B,aAAA,CAAC,CAAC;SACN;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACpB;8GA9DW,kCAAkC,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9EnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4ET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EApFC,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,UAAA,EAAA,IAAA,EACX,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,WAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,mBAAmB,0BAPnB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAuFA,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBA3F9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;oBACzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE;wBACP,SAAS;wBACT,WAAW;wBACX,cAAc;wBACd,gBAAgB;wBAChB,iBAAiB;wBACjB,eAAe;wBACf,iBAAiB;wBACjB,mBAAmB;AACpB,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4ET,EAAA,CAAA;AACF,iBAAA;;;AC5ID;;AAEG;;;;"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@acorex-platform/extension-project-management-jira-client",
3
+ "version": "0.0.21",
4
+ "sideEffects": false,
5
+ "peerDependencies": {
6
+ "@angular/common": "^21.0.0",
7
+ "@angular/core": "^21.0.0"
8
+ },
9
+ "dependencies": {
10
+ "tslib": "^2.3.0"
11
+ },
12
+ "module": "fesm2022/acorex-platform-extension-project-management-jira-client.mjs",
13
+ "typings": "types/acorex-platform-extension-project-management-jira-client.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./types/acorex-platform-extension-project-management-jira-client.d.ts",
20
+ "default": "./fesm2022/acorex-platform-extension-project-management-jira-client.mjs"
21
+ },
22
+ "./contracts": {
23
+ "types": "./types/acorex-platform-extension-project-management-jira-client-contracts.d.ts",
24
+ "default": "./fesm2022/acorex-platform-extension-project-management-jira-client-contracts.mjs"
25
+ }
26
+ },
27
+ "type": "module"
28
+ }
@@ -0,0 +1,221 @@
1
+ import { AXEPMProjectSyncStrategy } from '@acorex-platform/extension-project-management-core-contracts';
2
+ export { AXEPMProjectSyncStrategy as AXEJiraProjectSyncStrategy, AXEPMProjectSyncStrategy, AXE_PM_PROJECT_SYNC_STRATEGIES as AXE_JIRA_PROJECT_SYNC_STRATEGIES } from '@acorex-platform/extension-project-management-core-contracts';
3
+
4
+ declare const RootConfig: {
5
+ config: {
6
+ i18n: string;
7
+ };
8
+ module: {
9
+ name: string;
10
+ title: string;
11
+ icon: string;
12
+ };
13
+ entities: {
14
+ jiraInstance: {
15
+ name: string;
16
+ fullName: string;
17
+ title: string;
18
+ titlePlural: string;
19
+ icon: string;
20
+ };
21
+ jiraProject: {
22
+ name: string;
23
+ fullName: string;
24
+ title: string;
25
+ titlePlural: string;
26
+ icon: string;
27
+ };
28
+ jiraIssueType: {
29
+ name: string;
30
+ fullName: string;
31
+ title: string;
32
+ titlePlural: string;
33
+ icon: string;
34
+ };
35
+ jiraField: {
36
+ name: string;
37
+ fullName: string;
38
+ title: string;
39
+ titlePlural: string;
40
+ icon: string;
41
+ };
42
+ jiraProjectIssueType: {
43
+ name: string;
44
+ fullName: string;
45
+ title: string;
46
+ titlePlural: string;
47
+ icon: string;
48
+ };
49
+ jiraProjectIssueTypeField: {
50
+ name: string;
51
+ fullName: string;
52
+ title: string;
53
+ titlePlural: string;
54
+ icon: string;
55
+ };
56
+ jiraWorkflowStatus: {
57
+ name: string;
58
+ fullName: string;
59
+ title: string;
60
+ titlePlural: string;
61
+ icon: string;
62
+ };
63
+ jiraIssue: {
64
+ name: string;
65
+ fullName: string;
66
+ title: string;
67
+ titlePlural: string;
68
+ icon: string;
69
+ };
70
+ jiraWorklog: {
71
+ name: string;
72
+ fullName: string;
73
+ title: string;
74
+ titlePlural: string;
75
+ icon: string;
76
+ };
77
+ };
78
+ };
79
+
80
+ declare const AXEJiraCommandKeys: {
81
+ readonly ConnectionConnect: "jira-extension.Connection:Connect";
82
+ readonly ProjectImportFromJira: "jira-extension.Project:ImportFromJira";
83
+ readonly ProjectSync: "jira-extension.Project:Sync";
84
+ };
85
+
86
+ declare const AXEJiraQueryKeys: {
87
+ readonly ProjectListRemote: "jira-extension.Project:ListRemote";
88
+ };
89
+
90
+ declare const AXEJiraMenuKeys: {
91
+ readonly JiraExtensionConfig: "jira-extension:Menu:Configuration";
92
+ readonly Instances: "jira-extension:Menu:Instances";
93
+ readonly IssueTypes: "jira-extension:Menu:IssueTypes";
94
+ readonly Fields: "jira-extension:Menu:Fields";
95
+ readonly Issues: "jira-extension:Menu:Issues";
96
+ readonly Worklogs: "jira-extension:Menu:Worklogs";
97
+ };
98
+
99
+ /**
100
+ * Administration capabilities used by this extension.
101
+ * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
102
+ */
103
+ declare const AXPAdministrationPermissionKeys: {
104
+ readonly Access: "Administration:Permission:Access";
105
+ readonly MaintainUsersAndRoles: "Administration:Permission:MaintainUsersAndRoles";
106
+ readonly ManageSessions: "Administration:Permission:ManageSessions";
107
+ readonly MaintainPolicies: "Administration:Permission:MaintainPolicies";
108
+ readonly ViewIntegrations: "Administration:Permission:ViewIntegrations";
109
+ readonly MaintainConnections: "Administration:Permission:MaintainConnections";
110
+ readonly ManageIntegrationActions: "Administration:Permission:ManageIntegrationActions";
111
+ readonly MaintainWorkflows: "Administration:Permission:MaintainWorkflows";
112
+ readonly ManageWorkflowActions: "Administration:Permission:ManageWorkflowActions";
113
+ readonly ViewRules: "Administration:Permission:ViewRules";
114
+ readonly MaintainRules: "Administration:Permission:MaintainRules";
115
+ readonly ManageRuleActions: "Administration:Permission:ManageRuleActions";
116
+ readonly MaintainAi: "Administration:Permission:MaintainAi";
117
+ readonly UseAiAssist: "Administration:Permission:UseAiAssist";
118
+ readonly MaintainDashboards: "Administration:Permission:MaintainDashboards";
119
+ readonly ViewJobs: "Administration:Permission:ViewJobs";
120
+ readonly ManageJobActions: "Administration:Permission:ManageJobActions";
121
+ readonly ViewObservability: "Administration:Permission:ViewObservability";
122
+ readonly MaintainObservability: "Administration:Permission:MaintainObservability";
123
+ };
124
+ /**
125
+ * @deprecated Prefer {@link AXPAdministrationPermissionKeys}.
126
+ * Legacy nested shape kept so existing imports compile during migration.
127
+ */
128
+ declare const AXEJiraPermissions: {
129
+ readonly JiraExtension: {
130
+ readonly Management: "Administration:Permission:MaintainConnections";
131
+ readonly JiraInstance: {
132
+ readonly View: "Administration:Permission:ViewIntegrations";
133
+ readonly Create: "Administration:Permission:MaintainConnections";
134
+ readonly Update: "Administration:Permission:MaintainConnections";
135
+ readonly Delete: "Administration:Permission:MaintainConnections";
136
+ };
137
+ readonly JiraProject: {
138
+ readonly View: "Administration:Permission:ViewIntegrations";
139
+ readonly Create: "Administration:Permission:MaintainConnections";
140
+ readonly Update: "Administration:Permission:MaintainConnections";
141
+ readonly Delete: "Administration:Permission:MaintainConnections";
142
+ };
143
+ readonly JiraIssue: {
144
+ readonly View: "Administration:Permission:ViewIntegrations";
145
+ readonly Create: "Administration:Permission:MaintainConnections";
146
+ readonly Update: "Administration:Permission:MaintainConnections";
147
+ readonly Delete: "Administration:Permission:MaintainConnections";
148
+ };
149
+ readonly JiraWorklog: {
150
+ readonly View: "Administration:Permission:ViewIntegrations";
151
+ readonly Create: "Administration:Permission:MaintainConnections";
152
+ readonly Update: "Administration:Permission:MaintainConnections";
153
+ readonly Delete: "Administration:Permission:MaintainConnections";
154
+ };
155
+ readonly Catalog: {
156
+ readonly View: "Administration:Permission:ViewIntegrations";
157
+ readonly Manage: "Administration:Permission:MaintainConnections";
158
+ };
159
+ readonly ProjectImport: {
160
+ readonly Execute: "Administration:Permission:ManageIntegrationActions";
161
+ };
162
+ readonly ProjectSync: {
163
+ readonly Execute: "Administration:Permission:ManageIntegrationActions";
164
+ };
165
+ };
166
+ };
167
+
168
+ /** Subset of Jira REST API project resource used for import/sync. */
169
+ interface AXEJiraRemoteProject {
170
+ id: string;
171
+ key: string;
172
+ name: string;
173
+ description?: string | null;
174
+ projectTypeKey?: string | null;
175
+ style?: string | null;
176
+ simplified?: boolean | null;
177
+ lead?: {
178
+ accountId?: string;
179
+ displayName?: string;
180
+ } | null;
181
+ avatarUrls?: Record<string, string> | null;
182
+ }
183
+ type AXEJiraProjectImportStatus = 'imported' | 'not_imported';
184
+ interface AXEJiraRemoteProjectListItem extends AXEJiraRemoteProject {
185
+ importStatus: AXEJiraProjectImportStatus;
186
+ platformProjectId?: string | null;
187
+ }
188
+ interface AXEJiraListRemoteProjectsRequest {
189
+ instanceId?: string;
190
+ }
191
+ interface AXEJiraListRemoteProjectsResponse {
192
+ instanceId: string;
193
+ projects: AXEJiraRemoteProjectListItem[];
194
+ }
195
+ interface AXEJiraProjectImportRowInput {
196
+ remote: AXEJiraRemoteProject;
197
+ selected: boolean;
198
+ syncStrategy: AXEPMProjectSyncStrategy;
199
+ existingPlatformProjectId?: string | null;
200
+ }
201
+ interface AXEJiraImportProjectsRequest {
202
+ instanceId?: string;
203
+ defaultProjectTypeId: string;
204
+ rows: AXEJiraProjectImportRowInput[];
205
+ }
206
+ interface AXEJiraProjectImportResult {
207
+ imported: number;
208
+ updated: number;
209
+ skipped: number;
210
+ issuesImported?: number;
211
+ issuesUpdated?: number;
212
+ issuesRemoved?: number;
213
+ worklogsImported?: number;
214
+ worklogsUpdated?: number;
215
+ }
216
+ interface AXEJiraSyncPlatformProjectRequest {
217
+ platformProjectId: string;
218
+ }
219
+
220
+ export { AXEJiraCommandKeys, AXEJiraMenuKeys, AXEJiraPermissions, AXEJiraQueryKeys, AXPAdministrationPermissionKeys, RootConfig };
221
+ export type { AXEJiraImportProjectsRequest, AXEJiraListRemoteProjectsRequest, AXEJiraListRemoteProjectsResponse, AXEJiraProjectImportResult, AXEJiraProjectImportRowInput, AXEJiraProjectImportStatus, AXEJiraRemoteProject, AXEJiraRemoteProjectListItem, AXEJiraSyncPlatformProjectRequest };
@@ -0,0 +1,80 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as i1 from '@acorex-platform/module-integration-management-client';
3
+ import { AXPLogoAppearance, AXPLogoProvider } from '@acorex-platform/framework-client/core';
4
+ import { AXValueChangedEvent } from '@acorex/cdk/common';
5
+ import { AXBasePageComponent } from '@acorex/components/page';
6
+ import { AXEJiraRemoteProject, AXEJiraProjectSyncStrategy } from '@acorex-platform/extension-project-management-jira-client/contracts';
7
+ import { AXEJiraInstanceEntityModel } from '@acorex-platform/extension-project-management-jira-domain';
8
+
9
+ declare class AXEJiraExtensionModule {
10
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEJiraExtensionModule, never>;
11
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXEJiraExtensionModule, never, [typeof i1.AXMIntegrationManagementModule], never>;
12
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXEJiraExtensionModule>;
13
+ }
14
+
15
+ declare class AXEJiraLogoComponent {
16
+ appearance: _angular_core.InputSignal<AXPLogoAppearance>;
17
+ size: _angular_core.InputSignal<number>;
18
+ protected readonly leftPath = "M7.12 11.084a.683.683 0 0 0-1.16.126L.075 22.974a.703.703 0 0 0 .63 1.018h8.19a.678.678 0 0 0 .63-.39c1.767-3.65.696-9.203-2.406-12.52z";
19
+ protected readonly rightPath = "M11.434.386a15.515 15.515 0 0 0-.906 15.317l3.95 7.9a.703.703 0 0 0 .628.388h8.19a.703.703 0 0 0 .63-1.017L12.63.38a.664.664 0 0 0-1.196.006z";
20
+ protected readonly markBlue = "#2684FF";
21
+ protected readonly resolvedAppearance: _angular_core.Signal<"colored" | "monochrome">;
22
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEJiraLogoComponent, never>;
23
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXEJiraLogoComponent, "axe-jira-logo", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
24
+ }
25
+
26
+ declare const axpJiraLogoKey: "jira";
27
+
28
+ declare const AXE_JIRA_MARK_BLUE = "#2684FF";
29
+ /** Left sail */
30
+ declare const AXE_JIRA_MARK_LEFT_PATH = "M7.12 11.084a.683.683 0 0 0-1.16.126L.075 22.974a.703.703 0 0 0 .63 1.018h8.19a.678.678 0 0 0 .63-.39c1.767-3.65.696-9.203-2.406-12.52z";
31
+ /** Right sail */
32
+ declare const AXE_JIRA_MARK_RIGHT_PATH = "M11.434.386a15.515 15.515 0 0 0-.906 15.317l3.95 7.9a.703.703 0 0 0 .628.388h8.19a.703.703 0 0 0 .63-1.017L12.63.38a.664.664 0 0 0-1.196.006z";
33
+
34
+ declare const AXE_JIRA_LOGO_PROVIDER: {
35
+ readonly provide: _angular_core.InjectionToken<AXPLogoProvider[]>;
36
+ readonly useValue: AXPLogoProvider;
37
+ readonly multi: true;
38
+ };
39
+
40
+ interface AXEJiraProjectImportPopupResult {
41
+ defaultProjectTypeId: string;
42
+ rows: Array<{
43
+ remote: AXEJiraRemoteProject;
44
+ selected: boolean;
45
+ syncStrategy: AXEJiraProjectSyncStrategy;
46
+ }>;
47
+ }
48
+ interface ImportRowState {
49
+ remote: AXEJiraRemoteProject;
50
+ selected: boolean;
51
+ syncStrategy: AXEJiraProjectSyncStrategy;
52
+ alreadyLinked: boolean;
53
+ }
54
+ declare class AXEJiraProjectImportPopupComponent extends AXBasePageComponent {
55
+ protected loading: _angular_core.WritableSignal<boolean>;
56
+ protected defaultProjectTypeId: _angular_core.WritableSignal<string>;
57
+ protected rows: _angular_core.WritableSignal<ImportRowState[]>;
58
+ instance: AXEJiraInstanceEntityModel;
59
+ projectTypes: Array<{
60
+ id: string;
61
+ title: string;
62
+ }>;
63
+ remoteProjects: AXEJiraRemoteProject[];
64
+ alreadyLinkedJiraIds: Set<string>;
65
+ protected readonly strategyOptions: {
66
+ id: AXEJiraProjectSyncStrategy;
67
+ title: string;
68
+ }[];
69
+ protected ngOnInit(): void;
70
+ protected handleProjectTypeChange(event: AXValueChangedEvent<string>): void;
71
+ protected toggleRow(remoteId: string, event: AXValueChangedEvent<boolean>): void;
72
+ protected changeStrategy(remoteId: string, event: AXValueChangedEvent<AXEJiraProjectSyncStrategy>): void;
73
+ protected hasSelection(): boolean;
74
+ protected confirm(): void;
75
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEJiraProjectImportPopupComponent, never>;
76
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXEJiraProjectImportPopupComponent, "axe-jira-project-import-popup", never, {}, {}, never, never, true, never>;
77
+ }
78
+
79
+ export { AXEJiraExtensionModule, AXEJiraLogoComponent, AXEJiraProjectImportPopupComponent, AXE_JIRA_LOGO_PROVIDER, AXE_JIRA_MARK_BLUE, AXE_JIRA_MARK_LEFT_PATH, AXE_JIRA_MARK_RIGHT_PATH, axpJiraLogoKey };
80
+ export type { AXEJiraProjectImportPopupResult };