{"version":3,"file":"copilotkit-angular.mjs","sources":["../../src/lib/license-watermark.ts","../../src/lib/config.ts","../../src/lib/activity-renderer.ts","../../src/lib/human-in-the-loop.ts","../../src/lib/components/a2ui/a2ui-surface-host.ts","../../src/lib/components/tools/default-tool-renderer.ts","../../src/lib/components/a2ui/a2ui-progress.ts","../../src/lib/components/a2ui/a2ui-recovery.ts","../../src/lib/components/a2ui/a2ui-activity-renderer.ts","../../src/lib/components/a2ui/a2ui-tool-types.ts","../../src/lib/components/a2ui/a2ui-tool-operations.ts","../../src/lib/components/a2ui/a2ui-tool-renderer.ts","../../src/lib/open-generative-ui.ts","../../src/lib/components/open-generative-ui/process-partial-html.ts","../../src/lib/components/open-generative-ui/open-generative-ui-renderer-utils.ts","../../src/lib/components/open-generative-ui/open-generative-ui-activity-renderer.ts","../../src/lib/components/open-generative-ui/open-generative-ui-tool-renderer.ts","../../src/lib/standard-schema-zod.ts","../../src/lib/copilotkit.ts","../../src/lib/tools.ts","../../src/lib/render-tool-calls.ts","../../src/lib/agent.ts","../../src/lib/chat-configuration.ts","../../src/lib/interrupt.ts","../../src/lib/threads.ts","../../src/lib/chat-config.ts","../../src/lib/chat-state.ts","../../src/lib/transcription.ts","../../src/lib/scroll-position.ts","../../src/lib/resize-observer.ts","../../src/lib/utils.ts","../../src/lib/agent-context.ts","../../src/lib/memories.ts","../../src/lib/slots/slot.types.ts","../../src/lib/slots/slot.utils.ts","../../src/lib/slots/copilot-slot.ts","../../src/lib/directives/copilotkit-agent-context.ts","../../src/lib/directives/stick-to-bottom.ts","../../src/lib/directives/tooltip.ts","../../src/lib/components/chat/copilot-chat-tool-calls-view.ts","../../src/lib/components/chat/copilot-chat-assistant-message-renderer.ts","../../src/lib/components/icons/copilot-icon.ts","../../src/lib/components/chat/copilot-chat-assistant-message-buttons.ts","../../src/lib/components/chat/copilot-chat-assistant-message-toolbar.ts","../../src/lib/components/chat/copilot-chat-view-handlers.ts","../../src/lib/components/chat/copilot-chat-assistant-message.ts","../../src/lib/components/chat/copilot-chat-user-message-renderer.ts","../../src/lib/components/chat/copilot-chat-user-message-buttons.ts","../../src/lib/components/chat/copilot-chat-user-message-toolbar.ts","../../src/lib/components/chat/copilot-chat-user-message-branch-navigation.ts","../../src/lib/components/chat/copilot-chat-attachment-renderer.ts","../../src/lib/components/chat/copilot-chat-user-message-utils.ts","../../src/lib/components/chat/copilot-chat-user-message.ts","../../src/lib/components/chat/copilot-chat-message-view-cursor.ts","../../src/lib/components/chat/copilot-chat-reasoning-message-utils.ts","../../src/lib/components/chat/copilot-chat-reasoning-message.ts","../../src/lib/components/chat/copilot-chat-message-view.ts","../../src/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.ts","../../src/lib/components/chat/copilot-chat-suggestion-pill.ts","../../src/lib/components/chat/copilot-chat-suggestion-view.ts","../../src/lib/components/chat/copilot-chat-view-scroll-view.ts","../../src/lib/components/chat/copilot-chat-view-scroll-view.html","../../src/lib/components/chat/copilot-chat-view-feather.ts","../../src/lib/components/chat/copilot-chat-textarea.ts","../../src/lib/components/chat/copilot-chat-input.types.ts","../../src/lib/components/chat/copilot-chat-audio-recorder.ts","../../src/lib/components/chat/copilot-chat-buttons.ts","../../src/lib/components/chat/copilot-chat-toolbar.ts","../../src/lib/components/chat/copilot-chat-tools-menu.ts","../../src/lib/components/chat/copilot-chat-input.ts","../../src/lib/components/chat/copilot-chat-view-disclaimer.ts","../../src/lib/components/chat/copilot-chat-attachment-queue.ts","../../src/lib/components/chat/copilot-chat-view-input-container.ts","../../src/lib/components/chat/copilot-chat-view.ts","../../src/lib/components/chat/copilot-chat-attachments.directive.ts","../../src/lib/active-thread-connector.ts","../../src/lib/components/chat/copilot-chat.ts","../../src/lib/components/chat/copilot-chat-input-defaults.ts","../../src/lib/components/chat/copilot-threads-drawer.ts","../../src/lib/components/modal/modal-utils.ts","../../src/lib/components/modal/copilot-popup.ts","../../src/lib/components/modal/docked-sidebar-registry.ts","../../src/lib/components/modal/copilot-sidebar.ts","../../src/copilotkit-angular.ts"],"sourcesContent":["// The license watermark is currently disabled. The implementation below is\n// kept intact so it can be re-enabled by flipping this flag back to `true`.\nexport const LICENSE_WATERMARK_ENABLED = false;\n\nconst WATERMARK_ID = \"copilotkit-license-watermark\";\nconst HEADER_NAME = \"X-CopilotCloud-Public-Api-Key\";\nconst LICENSE_KEY_REGEX = /^ck_pub_[0-9a-f]{32}$/i;\n\nfunction hasValidLicenseHeader(headers?: Record<string, string>): boolean {\n  if (!headers) return false;\n  const key = headers[HEADER_NAME];\n  return Boolean(key && LICENSE_KEY_REGEX.test(key));\n}\n\nexport function ensureLicenseWatermark(headers?: Record<string, string>): void {\n  if (!LICENSE_WATERMARK_ENABLED) {\n    return;\n  }\n\n  if (typeof document === \"undefined\" || hasValidLicenseHeader(headers)) {\n    return;\n  }\n\n  if (document.getElementById(WATERMARK_ID)) {\n    return;\n  }\n\n  const watermark = document.createElement(\"div\");\n  watermark.id = WATERMARK_ID;\n  watermark.setAttribute(\"aria-hidden\", \"true\");\n  watermark.textContent = \"CopilotKit Unlicensed\";\n  watermark.style.position = \"fixed\";\n  watermark.style.right = \"12px\";\n  watermark.style.bottom = \"12px\";\n  watermark.style.zIndex = \"2147483647\";\n  watermark.style.pointerEvents = \"none\";\n  watermark.style.userSelect = \"none\";\n  watermark.style.padding = \"6px 10px\";\n  watermark.style.borderRadius = \"8px\";\n  watermark.style.background = \"rgba(17, 24, 39, 0.88)\";\n  watermark.style.color = \"#ffffff\";\n  watermark.style.fontFamily =\n    \"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\";\n  watermark.style.fontSize = \"11px\";\n  watermark.style.fontWeight = \"600\";\n  watermark.style.letterSpacing = \"0.02em\";\n  watermark.style.opacity = \"0.9\";\n  watermark.style.boxShadow = \"0 6px 18px rgba(0, 0, 0, 0.25)\";\n\n  document.body.appendChild(watermark);\n}\n","import { inject, InjectionToken, Provider } from \"@angular/core\";\nimport { AbstractAgent } from \"@ag-ui/client\";\nimport {\n  ClientTool,\n  FrontendToolConfig,\n  HumanInTheLoopConfig,\n  RenderToolCallConfig,\n} from \"./tools\";\nimport { LICENSE_WATERMARK_ENABLED } from \"./license-watermark\";\nimport type { RenderActivityMessageConfig } from \"./activity-renderer\";\nimport type { SuggestionsConfig } from \"@copilotkit/core\";\nimport type { OpenGenerativeUIConfig } from \"./open-generative-ui\";\nimport type {\n  Catalog,\n  LitComponentImplementation,\n  LitRenderable,\n  Theme as A2UITheme,\n} from \"@copilotkit/a2ui-renderer/web-components\";\n\nexport interface A2UIConfig {\n  theme?: A2UITheme;\n  catalog?: Catalog<LitComponentImplementation>;\n  loadingComponent?: () => LitRenderable;\n  includeSchema?: boolean;\n  recovery?: A2UIRecoveryOptions;\n}\n\nexport interface A2UIRecoveryOptions {\n  /** Delay before revealing a transient retry. Defaults to 2000ms. */\n  showAfterMs?: number;\n  /** Attempt number that reveals retry state immediately. Defaults to 2. */\n  showAfterAttempts?: number;\n  /** Client diagnostic visibility, overridden by server lifecycle content. */\n  debugExposure?: \"hidden\" | \"collapsed\" | \"verbose\";\n}\n\nexport interface CopilotKitConfig {\n  runtimeUrl?: string;\n  headers?: Record<string, string>;\n  licenseKey?: string;\n  properties?: Record<string, unknown>;\n  agents?: Record<string, AbstractAgent>;\n  selfManagedAgents?: Record<string, AbstractAgent>;\n  tools?: ClientTool[];\n  renderToolCalls?: RenderToolCallConfig[];\n  renderActivityMessages?: RenderActivityMessageConfig[];\n  suggestionsConfig?: SuggestionsConfig[];\n  frontendTools?: FrontendToolConfig[];\n  humanInTheLoop?: HumanInTheLoopConfig[];\n  /** Opt in to a text-only renderer for otherwise unknown tool calls. */\n  defaultToolRendering?: boolean;\n  a2ui?: A2UIConfig;\n  openGenerativeUI?: OpenGenerativeUIConfig;\n}\n\nconst COPILOT_CLOUD_PUBLIC_API_KEY_HEADER = \"X-CopilotCloud-Public-Api-Key\";\nconst COPILOT_CLOUD_PUBLIC_API_KEY_REGEX = /^ck_pub_[0-9a-f]{32}$/i;\nconst LICENSE_WATERMARK_LOG_FLAG = \"__copilotkitAngularLicenseWatermarkLogged\";\n\ntype ResolvedLicense = {\n  key?: string;\n  valid: boolean;\n  warning?: string;\n};\n\nfunction logLicenseWatermarkWarning(message: string): void {\n  const globalWindow = globalThis as typeof globalThis & {\n    [LICENSE_WATERMARK_LOG_FLAG]?: boolean;\n  };\n  if (globalWindow[LICENSE_WATERMARK_LOG_FLAG]) {\n    return;\n  }\n  globalWindow[LICENSE_WATERMARK_LOG_FLAG] = true;\n\n  console.warn(\n    [\n      \"========================================\",\n      \"[CopilotKit] License Required\",\n      message,\n      \"Get your CopilotCloud license key and add it as `licenseKey` to remove this watermark.\",\n      \"========================================\",\n    ].join(\"\\n\"),\n  );\n}\n\nfunction resolveLicense(config: CopilotKitConfig): ResolvedLicense {\n  const headerKey = config.headers?.[COPILOT_CLOUD_PUBLIC_API_KEY_HEADER];\n  const key = config.licenseKey ?? headerKey;\n\n  if (!key) {\n    return {\n      valid: false,\n      warning:\n        \"No CopilotCloud license key was found. A watermark will be shown until one is added.\",\n    };\n  }\n\n  if (!COPILOT_CLOUD_PUBLIC_API_KEY_REGEX.test(key)) {\n    return {\n      key,\n      valid: false,\n      warning:\n        \"Your CopilotCloud license key appears invalid. A watermark will be shown until a valid key is added.\",\n    };\n  }\n\n  return { key, valid: true };\n}\n\nexport const COPILOT_KIT_CONFIG = new InjectionToken<CopilotKitConfig>(\n  \"COPILOT_KIT_CONFIG\",\n);\n\nexport function injectCopilotKitConfig(): CopilotKitConfig {\n  return inject(COPILOT_KIT_CONFIG);\n}\n\nexport function provideCopilotKit(config: CopilotKitConfig): Provider {\n  const resolvedLicense = resolveLicense(config);\n  const headers = config.headers ?? {};\n  if (\n    LICENSE_WATERMARK_ENABLED &&\n    !resolvedLicense.valid &&\n    resolvedLicense.warning\n  ) {\n    logLicenseWatermarkWarning(resolvedLicense.warning);\n  }\n\n  const mergedHeaders = headers[COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]\n    ? headers\n    : !resolvedLicense.valid || !resolvedLicense.key\n      ? headers\n      : {\n          ...headers,\n          [COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: resolvedLicense.key,\n        };\n\n  return {\n    provide: COPILOT_KIT_CONFIG,\n    useValue: {\n      ...config,\n      headers: mergedHeaders,\n    },\n  };\n}\n","import {\n  DestroyRef,\n  InjectionToken,\n  Type,\n  Signal,\n  inject,\n} from \"@angular/core\";\nimport type { AbstractAgent, ActivityMessage } from \"@ag-ui/client\";\nimport { CopilotKit } from \"./copilotkit\";\n\nexport type AngularActivityContentParseResult<T> =\n  | { success: true; data: T }\n  | { success: false; error?: unknown };\n\nexport interface AngularActivityContentSchema<T> {\n  safeParse(content: unknown): AngularActivityContentParseResult<T>;\n}\n\nexport interface ActivityRenderer<TActivityContent = unknown> {\n  activityType: Signal<string>;\n  content: Signal<TActivityContent>;\n  message: Signal<ActivityMessage>;\n  agent: Signal<AbstractAgent | undefined>;\n}\n\nexport interface RenderActivityMessageConfig<TActivityContent = unknown> {\n  activityType: string;\n  agentId?: string;\n  content: AngularActivityContentSchema<TActivityContent>;\n  component: Type<ActivityRenderer<TActivityContent>>;\n}\n\n/**\n * Extension point used by optional secondary entry points to contribute\n * lower-precedence built-in activity renderers.\n *\n * @internal\n */\nexport const ɵCOPILOTKIT_BUILT_IN_ACTIVITY_RENDERERS = new InjectionToken<\n  RenderActivityMessageConfig[]\n>(\"COPILOTKIT_BUILT_IN_ACTIVITY_RENDERERS\", { factory: () => [] });\n\nexport const anyActivityContentSchema: AngularActivityContentSchema<unknown> = {\n  safeParse: (content: unknown) => ({ success: true, data: content }),\n};\n\n/** Register an activity renderer for the lifetime of the current injector. */\nexport function registerRenderActivityMessage(\n  config: RenderActivityMessageConfig,\n): void {\n  const copilotKit = inject(CopilotKit);\n  const destroyRef = inject(DestroyRef);\n\n  copilotKit.addRenderActivityMessage(config);\n  destroyRef.onDestroy(() => copilotKit.removeRenderActivityMessage(config));\n}\n","import { Injectable } from \"@angular/core\";\nimport { filter, lastValueFrom, Subject, take } from \"rxjs\";\n\n@Injectable({ providedIn: \"root\" })\nexport class HumanInTheLoop {\n  results = new Subject<{\n    toolCallId: string;\n    toolName: string;\n    result: unknown;\n  }>();\n\n  addResult(toolCallId: string, toolName: string, result: unknown) {\n    this.results.next({ toolCallId, toolName, result });\n  }\n\n  onResult(toolCallId: string, toolName: string): Promise<unknown> {\n    return lastValueFrom(\n      this.results.pipe(\n        filter(\n          (result) =>\n            result.toolCallId === toolCallId && result.toolName === toolName,\n        ),\n        take(1),\n      ),\n    );\n  }\n}\n","import {\n  DestroyRef,\n  ElementRef,\n  afterRenderEffect,\n  inject,\n  type Signal,\n} from \"@angular/core\";\nimport type { AbstractAgent } from \"@ag-ui/client\";\nimport type {\n  Catalog,\n  LitComponentImplementation,\n  LitRenderable,\n  Theme,\n} from \"@copilotkit/a2ui-renderer/web-components\";\nimport type { A2UIConfig } from \"../../config\";\n\nexport const A2UI_OPERATIONS_KEY = \"a2ui_operations\";\n\nexport type A2UIOperation = Record<string, unknown>;\n\nexport type A2UISurfaceElement = HTMLElement & {\n  operations?: A2UIOperation[];\n  catalog?: Catalog<LitComponentImplementation>;\n  theme?: Theme;\n  loadingComponent?: () => LitRenderable;\n  updateComplete?: Promise<boolean>;\n};\n\nexport type A2UIConfigLike = { a2ui?: A2UIConfig };\n\ntype CopilotKitActionBridge = {\n  core: {\n    properties: Record<string, unknown>;\n    setProperties(properties: Record<string, unknown>): void;\n    runAgent(options: { agent: AbstractAgent }): Promise<unknown>;\n  };\n};\n\nlet definePromise: Promise<void> | undefined;\n\nexport function defineA2UIWebComponentsOnce(): Promise<void> {\n  if (typeof globalThis.customElements === \"undefined\") {\n    return Promise.resolve();\n  }\n  definePromise ??=\n    import(\"@copilotkit/a2ui-renderer/web-components/define\").then(\n      async (mod) => {\n        mod.defineA2UIWebComponents();\n        await customElements.whenDefined(\"cpk-a2ui-surface\");\n        await Promise.resolve();\n      },\n    );\n  return definePromise;\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n  return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nexport function getA2UIOperations(content: unknown): A2UIOperation[] {\n  if (!isRecord(content)) return [];\n\n  const operations = content[A2UI_OPERATIONS_KEY] ?? content.operations;\n  if (!Array.isArray(operations)) return [];\n  return operations.filter(isRecord);\n}\n\nexport function syncA2UISurface(\n  element: A2UISurfaceElement | null | undefined,\n  operations: A2UIOperation[],\n  config?: A2UIConfigLike | null,\n): void {\n  if (!element) return;\n  element.operations = operations;\n  element.catalog = config?.a2ui?.catalog;\n  element.theme = config?.a2ui?.theme;\n  element.loadingComponent = config?.a2ui?.loadingComponent;\n}\n\n/**\n * Wires a reactive A2UI surface element to its operations source.\n *\n * Defines the web components once, then keeps the surface in sync after every\n * render whenever the `operations` or `surfaceRef` signals change. Must be\n * called from an injection context (e.g. a component constructor).\n */\nexport function connectA2UISurface(options: {\n  surfaceRef: Signal<ElementRef<A2UISurfaceElement> | undefined>;\n  operations: () => A2UIOperation[];\n  config?: A2UIConfigLike | null;\n  onReady?: () => void;\n}): void {\n  const { surfaceRef, operations, config, onReady } = options;\n  const canRender = typeof globalThis.customElements !== \"undefined\";\n  let destroyed = false;\n  inject(DestroyRef).onDestroy(() => {\n    destroyed = true;\n  });\n\n  const sync = (element = surfaceRef()?.nativeElement): void => {\n    if (destroyed || !element) return;\n    const nextOperations = operations();\n    syncA2UISurface(element, nextOperations, config);\n    if (canRender && onReady && surfaceHasRenderableContent(nextOperations)) {\n      void (element.updateComplete ?? Promise.resolve()).then(() => {\n        if (!destroyed) onReady();\n      });\n    }\n  };\n\n  if (canRender) {\n    void defineA2UIWebComponentsOnce().then(\n      () => sync(),\n      (error: unknown) =>\n        console.error(\"[A2UI Angular] failed to load the renderer:\", error),\n    );\n  }\n\n  afterRenderEffect({\n    write: () => {\n      operations();\n      const surface = surfaceRef();\n      if (!surface) return;\n      sync(surface.nativeElement);\n    },\n  });\n}\n\n/** Whether operations can paint visible static or data-bound content. */\nexport function surfaceHasRenderableContent(\n  operations: readonly A2UIOperation[],\n): boolean {\n  const componentOperations = operations.filter((operation) =>\n    isRecord(operation[\"updateComponents\"]),\n  );\n  if (componentOperations.length === 0) return false;\n  const requiresData = JSON.stringify(componentOperations).includes('\"path\"');\n  if (!requiresData) return true;\n  return operations.some((operation) => {\n    const update = operation[\"updateDataModel\"];\n    if (!isRecord(update) || !isRecord(update[\"value\"])) return false;\n    return Object.values(update[\"value\"]).some((value) =>\n      Array.isArray(value)\n        ? value.length > 0\n        : value !== null && value !== undefined && value !== \"\",\n    );\n  });\n}\n\nexport function logA2UIRenderError(event: Event): void {\n  console.warn(\"[A2UI Angular] render error:\", (event as CustomEvent).detail);\n}\n\nexport async function bridgeA2UIAction(\n  copilotKit: CopilotKitActionBridge | null | undefined,\n  agent: AbstractAgent | undefined,\n  detail: unknown,\n): Promise<void> {\n  if (!copilotKit || !agent) return;\n\n  try {\n    copilotKit.core.setProperties({\n      ...copilotKit.core.properties,\n      a2uiAction: detail,\n    });\n    await copilotKit.core.runAgent({ agent });\n  } finally {\n    const { a2uiAction: _a2uiAction, ...rest } = copilotKit.core.properties;\n    copilotKit.core.setProperties(rest);\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n  signal,\n} from \"@angular/core\";\n\nimport type { AngularToolCall, ToolRenderer } from \"../../tools\";\n\n/** Serialize untrusted tool values defensively for text-only display. */\nexport function safeToolValue(value: unknown): string {\n  if (typeof value === \"string\") return value;\n  const seen = new WeakSet<object>();\n  try {\n    const serialized = JSON.stringify(\n      value,\n      (_key, candidate: unknown) => {\n        if (typeof candidate === \"bigint\") return `${candidate.toString()}n`;\n        if (typeof candidate === \"undefined\") return \"[Undefined]\";\n        if (typeof candidate === \"function\") return \"[Function]\";\n        if (typeof candidate === \"symbol\") return candidate.toString();\n        if (typeof candidate === \"object\" && candidate !== null) {\n          if (seen.has(candidate)) return \"[Circular]\";\n          seen.add(candidate);\n        }\n        return candidate;\n      },\n      2,\n    );\n    return serialized ?? String(value);\n  } catch {\n    return \"[Unserializable value]\";\n  }\n}\n\n/** Opt-in text-only fallback for tool calls without an application renderer. */\n@Component({\n  selector: \"copilot-default-tool-renderer\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: \"copilot-default-tool-renderer\" },\n  template: `\n    <article\n      class=\"tool-card\"\n      data-testid=\"copilot-tool-render\"\n      [attr.data-tool-name]=\"toolCall().name || 'unknown'\"\n      [attr.data-status]=\"statusValue()\"\n    >\n      <button\n        type=\"button\"\n        class=\"tool-summary\"\n        [attr.aria-expanded]=\"expanded()\"\n        (click)=\"toggleExpanded()\"\n      >\n        <span class=\"tool-name\">{{ toolCall().name || \"Tool call\" }}</span>\n        <span\n          class=\"tool-status\"\n          data-testid=\"copilot-tool-render-status\"\n          aria-live=\"polite\"\n          >{{ statusLabel() }}</span\n        >\n        <span aria-hidden=\"true\">{{ expanded() ? \"▾\" : \"▸\" }}</span>\n      </button>\n      @if (expanded()) {\n        <div class=\"tool-details\">\n          <h3>Arguments</h3>\n          <pre>{{ argumentsText() }}</pre>\n          @if (toolCall().result !== undefined) {\n            <h3>Result</h3>\n            <pre>{{ resultText() }}</pre>\n          }\n        </div>\n      }\n    </article>\n  `,\n  styles: `\n    :host {\n      display: block;\n      margin-block: 0.5rem;\n    }\n    .tool-card {\n      overflow: hidden;\n      border: 1px solid #dbe3eb;\n      border-radius: 0.5rem;\n      color: #1e293b;\n      background: #f8fafc;\n    }\n    .tool-summary {\n      display: grid;\n      width: 100%;\n      grid-template-columns: minmax(0, 1fr) auto auto;\n      align-items: center;\n      gap: 0.75rem;\n      padding: 0.65rem 0.75rem;\n      border: 0;\n      color: inherit;\n      background: transparent;\n      text-align: left;\n      cursor: pointer;\n    }\n    .tool-summary:focus-visible {\n      outline: 3px solid #2563eb;\n      outline-offset: -3px;\n    }\n    .tool-name {\n      overflow-wrap: anywhere;\n      font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n      font-size: 0.8125rem;\n      font-weight: 600;\n    }\n    .tool-status {\n      color: #52637a;\n      font-size: 0.75rem;\n    }\n    .tool-details {\n      padding: 0 0.75rem 0.75rem;\n      border-top: 1px solid #dbe3eb;\n    }\n    .tool-details h3 {\n      margin: 0.75rem 0 0.25rem;\n      font-size: 0.75rem;\n    }\n    .tool-details pre {\n      max-height: 16rem;\n      margin: 0;\n      overflow: auto;\n      white-space: pre-wrap;\n      overflow-wrap: anywhere;\n      font-size: 0.75rem;\n    }\n  `,\n})\nexport class CopilotDefaultToolRenderer implements ToolRenderer {\n  readonly toolCall = input.required<AngularToolCall>();\n  protected readonly expanded = signal(false);\n  protected readonly argumentsText = computed(() =>\n    safeToolValue(this.toolCall().args),\n  );\n  protected readonly resultText = computed(() =>\n    safeToolValue(this.toolCall().result),\n  );\n  protected readonly statusValue = computed(() => {\n    switch (this.toolCall().status as string) {\n      case \"in-progress\":\n        return \"inProgress\";\n      case \"executing\":\n      case \"complete\":\n        return this.toolCall().status as string;\n      default:\n        return \"unknown\";\n    }\n  });\n  protected readonly statusLabel = computed(() => {\n    switch (this.toolCall().status as string) {\n      case \"in-progress\":\n        return \"Preparing\";\n      case \"executing\":\n        return \"Running\";\n      case \"complete\":\n        return \"Complete\";\n      default:\n        return \"Unknown status\";\n    }\n  });\n\n  protected toggleExpanded(): void {\n    this.expanded.update((value) => !value);\n  }\n}\n","import { ChangeDetectionStrategy, Component, input } from \"@angular/core\";\n\n/**\n * Presentational loading placeholder shown while an A2UI tool call is still\n * streaming. Renders an animated skeleton card whose rows reveal as the\n * estimated token count climbs through `phase`.\n */\n@Component({\n  selector: \"copilot-a2ui-progress\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <div\n      class=\"copilot-a2ui-progress\"\n      data-testid=\"a2ui-progress\"\n      role=\"status\"\n      aria-live=\"polite\"\n    >\n      <div class=\"copilot-a2ui-progress-card\">\n        <div class=\"copilot-a2ui-topbar\">\n          <div class=\"copilot-a2ui-dot-group\">\n            <span class=\"copilot-a2ui-dot\"></span>\n            <span class=\"copilot-a2ui-dot\"></span>\n            <span class=\"copilot-a2ui-dot\"></span>\n          </div>\n          <span [class]=\"topbarBarClass()\"></span>\n        </div>\n\n        <div class=\"copilot-a2ui-lines\">\n          <div [class]=\"rowClass(0, 'cpk:[transition-delay:0s]')\">\n            <span\n              class=\"copilot-a2ui-bar cpk:w-[36px] cpk:h-[7px] cpk:bg-[rgba(147,197,253,0.7)] cpk:[animation-delay:0s]\"\n            ></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-20 cpk:h-[7px] cpk:bg-[rgba(219,234,254,0.8)] cpk:[animation-delay:0.2s]\"\n            ></span>\n          </div>\n\n          <div [class]=\"rowClass(0, 'cpk:[transition-delay:0.1s]')\">\n            <span class=\"copilot-a2ui-spacer\"></span>\n            <span class=\"copilot-a2ui-dot\"></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-[100px] cpk:h-[7px] cpk:bg-[rgba(24,24,27,0.2)] cpk:[animation-delay:0.3s]\"\n            ></span>\n          </div>\n\n          <div [class]=\"rowClass(1, 'cpk:[transition-delay:0.15s]')\">\n            <span class=\"copilot-a2ui-spacer\"></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-12 cpk:h-[7px] cpk:bg-[rgba(24,24,27,0.15)] cpk:[animation-delay:0.1s]\"\n            ></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-10 cpk:h-[7px] cpk:bg-[rgba(153,246,228,0.6)] cpk:[animation-delay:0.5s]\"\n            ></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-14 cpk:h-[7px] cpk:bg-[rgba(147,197,253,0.6)] cpk:[animation-delay:0.3s]\"\n            ></span>\n          </div>\n\n          <div [class]=\"rowClass(1, 'cpk:[transition-delay:0.2s]')\">\n            <span class=\"copilot-a2ui-spacer\"></span>\n            <span class=\"copilot-a2ui-dot\"></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-[60px] cpk:h-[7px] cpk:bg-[rgba(24,24,27,0.15)] cpk:[animation-delay:0.4s]\"\n            ></span>\n          </div>\n\n          <div [class]=\"rowClass(2, 'cpk:[transition-delay:0.25s]')\">\n            <span\n              class=\"copilot-a2ui-bar cpk:w-10 cpk:h-[7px] cpk:bg-[rgba(153,246,228,0.5)] cpk:[animation-delay:0.2s]\"\n            ></span>\n            <span class=\"copilot-a2ui-dot\"></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-12 cpk:h-[7px] cpk:bg-[rgba(24,24,27,0.15)] cpk:[animation-delay:0.6s]\"\n            ></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-16 cpk:h-[7px] cpk:bg-[rgba(147,197,253,0.5)] cpk:[animation-delay:0.1s]\"\n            ></span>\n          </div>\n\n          <div [class]=\"rowClass(2, 'cpk:[transition-delay:0.3s]')\">\n            <span\n              class=\"copilot-a2ui-bar cpk:w-[36px] cpk:h-[7px] cpk:bg-[rgba(147,197,253,0.6)] cpk:[animation-delay:0.5s]\"\n            ></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-[36px] cpk:h-[7px] cpk:bg-[rgba(24,24,27,0.12)] cpk:[animation-delay:0.7s]\"\n            ></span>\n          </div>\n\n          <div [class]=\"rowClass(3, 'cpk:[transition-delay:0.35s]')\">\n            <span class=\"copilot-a2ui-dot\"></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-11 cpk:h-[7px] cpk:bg-[rgba(24,24,27,0.18)] cpk:[animation-delay:0.3s]\"\n            ></span>\n            <span class=\"copilot-a2ui-dot\"></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-14 cpk:h-[7px] cpk:bg-[rgba(153,246,228,0.5)] cpk:[animation-delay:0.8s]\"\n            ></span>\n            <span\n              class=\"copilot-a2ui-bar cpk:w-12 cpk:h-[7px] cpk:bg-[rgba(147,197,253,0.5)] cpk:[animation-delay:0.4s]\"\n            ></span>\n          </div>\n        </div>\n\n        <div class=\"copilot-a2ui-shimmer\"></div>\n      </div>\n\n      <div class=\"copilot-a2ui-label\">\n        <span>{{ label() }}</span>\n        @if (tokens() > 0) {\n          <span class=\"copilot-a2ui-token-count\">\n            ~{{ tokens().toLocaleString() }} tokens\n          </span>\n        }\n      </div>\n    </div>\n  `,\n  styles: [\n    `\n      .copilot-a2ui-progress {\n        margin: 12px 0;\n        max-width: 320px;\n      }\n\n      .copilot-a2ui-progress-card {\n        position: relative;\n        overflow: hidden;\n        border-radius: 12px;\n        border: 1px solid rgba(228, 228, 231, 0.8);\n        background-color: #fff;\n        box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);\n        padding: 16px 18px 14px;\n      }\n\n      .copilot-a2ui-topbar,\n      .copilot-a2ui-row,\n      .copilot-a2ui-label,\n      .copilot-a2ui-dot-group {\n        display: flex;\n        align-items: center;\n      }\n\n      .copilot-a2ui-topbar {\n        gap: 8px;\n        margin-bottom: 12px;\n      }\n\n      .copilot-a2ui-dot-group,\n      .copilot-a2ui-row {\n        gap: 6px;\n      }\n\n      .copilot-a2ui-lines {\n        display: grid;\n        gap: 7px;\n      }\n\n      .copilot-a2ui-row {\n        transition-property: opacity;\n        transition-duration: 0.4s;\n      }\n\n      .copilot-a2ui-dot {\n        width: 7px;\n        height: 7px;\n        border-radius: 9999px;\n        background-color: #d4d4d8;\n        flex-shrink: 0;\n      }\n\n      .copilot-a2ui-spacer {\n        width: 12px;\n        flex: 0 0 12px;\n      }\n\n      .copilot-a2ui-bar {\n        display: inline-flex;\n        border-radius: 9999px;\n        animation: copilot-a2ui-fade 2.4s ease-in-out infinite;\n      }\n\n      .copilot-a2ui-shimmer {\n        pointer-events: none;\n        position: absolute;\n        inset: 0;\n        background: linear-gradient(\n          105deg,\n          transparent 0%,\n          transparent 40%,\n          rgba(255, 255, 255, 0.6) 50%,\n          transparent 60%,\n          transparent 100%\n        );\n        background-size: 250% 100%;\n        animation: copilot-a2ui-sweep 3s ease-in-out infinite;\n      }\n\n      .copilot-a2ui-label {\n        justify-content: center;\n        gap: 8px;\n        margin-top: 8px;\n        font-size: 12px;\n        color: #a1a1aa;\n      }\n\n      .copilot-a2ui-token-count {\n        font-size: 11px;\n        color: #d4d4d8;\n        font-variant-numeric: tabular-nums;\n      }\n\n      @keyframes copilot-a2ui-fade {\n        0%,\n        100% {\n          opacity: 1;\n        }\n        50% {\n          opacity: 0.5;\n        }\n      }\n\n      @keyframes copilot-a2ui-sweep {\n        0% {\n          background-position: 250% 0;\n        }\n        100% {\n          background-position: -250% 0;\n        }\n      }\n\n      @media (prefers-reduced-motion: reduce) {\n        .copilot-a2ui-bar,\n        .copilot-a2ui-shimmer {\n          animation: none;\n        }\n      }\n    `,\n  ],\n})\nexport class CopilotA2UIProgress {\n  readonly phase = input.required<number>();\n  readonly tokens = input(0);\n  readonly label = input(\"Building interface\");\n\n  protected topbarBarClass(): string {\n    return [\n      \"copilot-a2ui-bar\",\n      \"cpk:w-16\",\n      \"cpk:h-1.5\",\n      \"cpk:bg-[#e4e4e7]\",\n      this.phase() >= 1 ? \"cpk:opacity-100\" : \"cpk:opacity-40\",\n    ].join(\" \");\n  }\n\n  protected rowClass(phase: number, delayClass: string): string {\n    return [\n      \"copilot-a2ui-row\",\n      delayClass,\n      this.phase() >= phase ? \"cpk:opacity-100\" : \"cpk:opacity-0\",\n    ].join(\" \");\n  }\n}\n","import { isPlatformBrowser } from \"@angular/common\";\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  NgZone,\n  PLATFORM_ID,\n  computed,\n  effect,\n  inject,\n  input,\n  signal,\n} from \"@angular/core\";\n\nimport type { A2UIRecoveryOptions } from \"../../config\";\nimport { safeToolValue } from \"../tools/default-tool-renderer\";\nimport { CopilotA2UIProgress } from \"./a2ui-progress\";\nimport { isRecord } from \"./a2ui-surface-host\";\n\nexport type A2UIDebugExposure = \"hidden\" | \"collapsed\" | \"verbose\";\nexport type A2UILifecycleStatus = \"building\" | \"retrying\" | \"failed\";\n\nexport interface A2UILifecycleContent {\n  status: A2UILifecycleStatus;\n  attempt?: number;\n  maxAttempts?: number;\n  progressTokens?: number;\n  error?: string;\n  errors?: unknown[];\n  attempts?: unknown[];\n  debugExposure?: A2UIDebugExposure;\n}\n\n/** Read only the server-owned A2UI lifecycle fields from activity content. */\nexport function readA2UILifecycleContent(\n  content: unknown,\n): A2UILifecycleContent {\n  if (!isRecord(content)) return { status: \"building\" };\n  const status =\n    content[\"status\"] === \"retrying\" || content[\"status\"] === \"failed\"\n      ? content[\"status\"]\n      : \"building\";\n  const debugExposure =\n    content[\"debugExposure\"] === \"hidden\" ||\n    content[\"debugExposure\"] === \"verbose\" ||\n    content[\"debugExposure\"] === \"collapsed\"\n      ? content[\"debugExposure\"]\n      : undefined;\n  return {\n    status,\n    attempt:\n      typeof content[\"attempt\"] === \"number\" ? content[\"attempt\"] : undefined,\n    maxAttempts:\n      typeof content[\"maxAttempts\"] === \"number\"\n        ? content[\"maxAttempts\"]\n        : undefined,\n    progressTokens:\n      typeof content[\"progressTokens\"] === \"number\"\n        ? content[\"progressTokens\"]\n        : undefined,\n    error: typeof content[\"error\"] === \"string\" ? content[\"error\"] : undefined,\n    errors: Array.isArray(content[\"errors\"]) ? content[\"errors\"] : undefined,\n    attempts: Array.isArray(content[\"attempts\"])\n      ? content[\"attempts\"]\n      : undefined,\n    debugExposure,\n  };\n}\n\n/** Pre-paint building, retry, and failure UI for a stable A2UI activity. */\n@Component({\n  selector: \"copilot-a2ui-recovery\",\n  imports: [CopilotA2UIProgress],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    @if (lifecycle().status === \"failed\") {\n      <section class=\"failure\" role=\"status\" data-testid=\"a2ui-failure\">\n        <strong>Couldn't generate the UI</strong>\n        <p>\n          Something went wrong rendering this. You can keep chatting and try again.\n        </p>\n        @if (debugExposure() !== \"hidden\") {\n          <details [attr.open]=\"debugExposure() === 'verbose' ? '' : null\">\n            <summary>Developer details</summary>\n            <pre>{{ failureDiagnostics() }}</pre>\n          </details>\n        }\n      </section>\n    } @else {\n      <copilot-a2ui-progress\n        [phase]=\"phase()\"\n        [tokens]=\"lifecycle().progressTokens ?? 0\"\n        [label]=\"label()\"\n      />\n      @if (\n        lifecycle().status === \"retrying\" &&\n        retryRevealed() &&\n        debugExposure() !== \"hidden\" &&\n        (lifecycle().errors?.length ?? 0) > 0\n      ) {\n        <details\n          class=\"diagnostics\"\n          [attr.open]=\"debugExposure() === 'verbose' ? '' : null\"\n        >\n          <summary>Validation issues</summary>\n          <pre>{{ retryDiagnostics() }}</pre>\n        </details>\n      }\n    }\n  `,\n  styles: `\n    .failure {\n      margin-block: 0.75rem;\n      max-width: 32rem;\n      padding: 0.75rem;\n      border: 1px solid #fde68a;\n      border-radius: 0.5rem;\n      color: #92400e;\n      background: #fffbeb;\n      font-size: 0.875rem;\n    }\n    .failure p {\n      margin: 0.25rem 0 0;\n      font-size: 0.75rem;\n    }\n    details {\n      margin-top: 0.5rem;\n      font-size: 0.75rem;\n    }\n    summary {\n      cursor: pointer;\n    }\n    pre {\n      max-height: 14rem;\n      overflow: auto;\n      white-space: pre-wrap;\n      overflow-wrap: anywhere;\n    }\n    .diagnostics {\n      max-width: 32rem;\n      color: #52525b;\n    }\n  `,\n})\nexport class CopilotA2UIRecovery {\n  readonly content = input.required<unknown>();\n  readonly options = input<A2UIRecoveryOptions | undefined>();\n  readonly lifecycle = computed(() => readA2UILifecycleContent(this.content()));\n  readonly retryRevealed = signal(false);\n  readonly debugExposure = computed(\n    () =>\n      this.lifecycle().debugExposure ??\n      this.options()?.debugExposure ??\n      \"collapsed\",\n  );\n  readonly label = computed(() => {\n    const lifecycle = this.lifecycle();\n    if (lifecycle.status !== \"retrying\" || !this.retryRevealed()) {\n      return \"Building interface\";\n    }\n    return lifecycle.attempt !== undefined &&\n      lifecycle.maxAttempts !== undefined\n      ? `Retrying generation… (${lifecycle.attempt}/${lifecycle.maxAttempts} attempts)`\n      : \"Retrying generation…\";\n  });\n  readonly phase = computed(() => {\n    const tokens = this.lifecycle().progressTokens;\n    if (tokens === undefined) return 3;\n    if (tokens < 50) return 0;\n    if (tokens < 200) return 1;\n    if (tokens < 400) return 2;\n    return 3;\n  });\n  readonly failureDiagnostics = computed(() =>\n    safeToolValue({\n      error: this.lifecycle().error,\n      attempts: this.lifecycle().attempts,\n    }),\n  );\n  readonly retryDiagnostics = computed(() =>\n    safeToolValue({\n      attempt: this.lifecycle().attempt,\n      errors: this.lifecycle().errors,\n    }),\n  );\n  readonly #platformId = inject(PLATFORM_ID);\n  readonly #zone = inject(NgZone);\n\n  constructor() {\n    effect((onCleanup) => {\n      const lifecycle = this.lifecycle();\n      const options = this.options();\n      this.retryRevealed.set(false);\n      if (lifecycle.status !== \"retrying\") return;\n\n      const showAfterAttempts = options?.showAfterAttempts ?? 2;\n      if (\n        lifecycle.attempt !== undefined &&\n        lifecycle.attempt >= showAfterAttempts\n      ) {\n        this.retryRevealed.set(true);\n        return;\n      }\n      if (!isPlatformBrowser(this.#platformId)) return;\n      const timeout = this.#zone.runOutsideAngular(() =>\n        globalThis.setTimeout(\n          () => this.#zone.run(() => this.retryRevealed.set(true)),\n          options?.showAfterMs ?? 2000,\n        ),\n      );\n      onCleanup(() => globalThis.clearTimeout(timeout));\n    });\n  }\n}\n","import {\n  CUSTOM_ELEMENTS_SCHEMA,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  NgZone,\n  PLATFORM_ID,\n  computed,\n  effect,\n  inject,\n  input,\n  signal,\n  viewChild,\n} from \"@angular/core\";\nimport { isPlatformBrowser } from \"@angular/common\";\nimport type { AbstractAgent, ActivityMessage } from \"@ag-ui/client\";\nimport type { ActivityRenderer } from \"../../activity-renderer\";\nimport { CopilotKit } from \"../../copilotkit\";\nimport { injectCopilotKitConfig } from \"../../config\";\nimport {\n  bridgeA2UIAction,\n  connectA2UISurface,\n  getA2UIOperations,\n  logA2UIRenderError,\n  type A2UISurfaceElement,\n} from \"./a2ui-surface-host\";\nimport { CopilotA2UIRecovery } from \"./a2ui-recovery\";\n\n@Component({\n  selector: \"copilot-a2ui-activity-renderer\",\n  imports: [CopilotA2UIRecovery],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  host: {\n    class: \"copilot-a2ui-surface-renderer-layout\",\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    @if (hasOperations()) {\n      <div class=\"handoff\">\n        <div\n          class=\"surface-container\"\n          data-testid=\"a2ui-activity-surface-host\"\n          [class.surface-pending]=\"!surfaceReady()\"\n          [attr.aria-hidden]=\"!surfaceReady()\"\n        >\n          <div\n            class=\"copilot-a2ui-surface-scroll\"\n            data-testid=\"a2ui-activity-surface-scroll\"\n          >\n            <cpk-a2ui-surface\n              #surface\n              class=\"copilot-a2ui-surface-scroll-surface\"\n              (a2ui-action)=\"handleAction($event)\"\n              (a2ui-error)=\"handleError($event)\"\n            ></cpk-a2ui-surface>\n          </div>\n        </div>\n        @if (!surfaceReady()) {\n          <copilot-a2ui-recovery\n            [content]=\"loaderContent()\"\n            [options]=\"config.a2ui?.recovery\"\n          />\n        }\n      </div>\n    } @else {\n      <copilot-a2ui-recovery\n        [content]=\"content()\"\n        [options]=\"config.a2ui?.recovery\"\n      />\n    }\n  `,\n  styles: `\n    .handoff {\n      position: relative;\n    }\n    .surface-pending {\n      position: absolute;\n      inset: 0;\n      opacity: 0;\n      pointer-events: none;\n    }\n  `,\n})\nexport class CopilotA2UIActivityRenderer implements ActivityRenderer<unknown> {\n  readonly activityType = input.required<string>();\n  readonly content = input.required<unknown>();\n  readonly message = input.required<ActivityMessage>();\n  readonly agent = input<AbstractAgent | undefined>();\n\n  private readonly surfaceRef = viewChild<\n    unknown,\n    ElementRef<A2UISurfaceElement>\n  >(\"surface\", { read: ElementRef });\n\n  private readonly copilotKit = inject(CopilotKit);\n  protected readonly config = injectCopilotKitConfig();\n  private readonly platformId = inject(PLATFORM_ID);\n  private readonly zone = inject(NgZone);\n  protected readonly operations = computed(() =>\n    getA2UIOperations(this.content()),\n  );\n  protected readonly hasOperations = computed(\n    () => this.operations().length > 0,\n  );\n  protected readonly surfaceReady = signal(false);\n  protected readonly loaderContent = signal<unknown>({ status: \"building\" });\n\n  private readonly markSurfaceReady = (): void => {\n    if (this.surfaceReady()) return;\n    const reveal = () => this.zone.run(() => this.surfaceReady.set(true));\n    if (\n      isPlatformBrowser(this.platformId) &&\n      typeof globalThis.requestAnimationFrame === \"function\"\n    ) {\n      globalThis.requestAnimationFrame(reveal);\n    } else {\n      reveal();\n    }\n  };\n\n  constructor() {\n    connectA2UISurface({\n      surfaceRef: this.surfaceRef,\n      operations: this.operations,\n      config: this.config,\n      onReady: this.markSurfaceReady,\n    });\n    effect(() => {\n      const content = this.content();\n      if (getA2UIOperations(content).length === 0) {\n        this.loaderContent.set(content);\n      }\n    });\n    effect((onCleanup) => {\n      const hasOperations = this.hasOperations();\n      if (!hasOperations) {\n        this.surfaceReady.set(false);\n        return;\n      }\n      this.surfaceReady.set(false);\n      if (!isPlatformBrowser(this.platformId)) return;\n      const timeout = this.zone.runOutsideAngular(() =>\n        globalThis.setTimeout(\n          () => this.zone.run(() => this.surfaceReady.set(true)),\n          8000,\n        ),\n      );\n      onCleanup(() => globalThis.clearTimeout(timeout));\n    });\n  }\n\n  protected async handleAction(event: Event): Promise<void> {\n    await bridgeA2UIAction(\n      this.copilotKit,\n      this.agent(),\n      (event as CustomEvent).detail,\n    );\n  }\n\n  protected handleError(event: Event): void {\n    logA2UIRenderError(event);\n  }\n}\n","import { z } from \"zod\";\n\nexport const RENDER_A2UI_TOOL_NAME = \"render_a2ui\";\nexport const AGUI_SEND_STATE_SNAPSHOT_TOOL_NAME = \"AGUISendStateSnapshot\";\nexport const RenderA2UIArgsSchema = z.record(z.string(), z.unknown());\n\nexport interface RenderA2UIArgs extends Record<string, unknown> {\n  items?: unknown[];\n  components?: unknown[];\n  snapshot?: unknown;\n}\n","import type { AngularToolCall } from \"../../tools\";\nimport {\n  type A2UIOperation,\n  getA2UIOperations,\n  isRecord,\n} from \"./a2ui-surface-host\";\nimport {\n  AGUI_SEND_STATE_SNAPSHOT_TOOL_NAME,\n  type RenderA2UIArgs,\n} from \"./a2ui-tool-types\";\n\nconst BASIC_CATALOG_ID =\n  \"https://a2ui.org/specification/v0_9/basic_catalog.json\";\n\ntype A2UISnapshot = {\n  surfaceId: string;\n  catalogId?: string;\n  data?: unknown;\n  components: unknown[];\n};\n\nfunction parseJsonResult(result: string): unknown {\n  try {\n    return JSON.parse(result);\n  } catch {\n    return undefined;\n  }\n}\n\nfunction getSnapshot(payload: unknown): A2UISnapshot | undefined {\n  if (!isRecord(payload)) return undefined;\n  const snapshot = isRecord(payload.snapshot) ? payload.snapshot : payload;\n  if (\n    typeof snapshot.surfaceId !== \"string\" ||\n    !Array.isArray(snapshot.components)\n  ) {\n    return undefined;\n  }\n\n  return {\n    surfaceId: snapshot.surfaceId,\n    catalogId:\n      typeof snapshot.catalogId === \"string\" ? snapshot.catalogId : undefined,\n    data: snapshot.data,\n    components: snapshot.components,\n  };\n}\n\nfunction operationsFromSnapshot(snapshot: A2UISnapshot): A2UIOperation[] {\n  const operations: A2UIOperation[] = [\n    {\n      version: \"v0.9\",\n      createSurface: {\n        surfaceId: snapshot.surfaceId,\n        catalogId: snapshot.catalogId ?? BASIC_CATALOG_ID,\n        theme: {},\n      },\n    },\n  ];\n\n  if (snapshot.data !== undefined) {\n    operations.push({\n      version: \"v0.9\",\n      updateDataModel: {\n        surfaceId: snapshot.surfaceId,\n        path: \"/\",\n        value: snapshot.data,\n      },\n    });\n  }\n\n  operations.push({\n    version: \"v0.9\",\n    updateComponents: {\n      surfaceId: snapshot.surfaceId,\n      components: snapshot.components,\n    },\n  });\n\n  return operations;\n}\n\nfunction getOperationsFromPayload(payload: unknown): A2UIOperation[] {\n  if (!isRecord(payload)) return [];\n\n  const operations = getA2UIOperations(payload);\n  if (operations.length > 0) return operations;\n\n  const snapshot = getSnapshot(payload);\n  return snapshot ? operationsFromSnapshot(snapshot) : [];\n}\n\nfunction getOperationsFromResult(result: string | undefined): A2UIOperation[] {\n  if (!result) return [];\n  const payload = parseJsonResult(result);\n  return getOperationsFromPayload(payload);\n}\n\nexport function getRenderedA2UIOperations(\n  toolCall: AngularToolCall<RenderA2UIArgs>,\n): A2UIOperation[] {\n  const resultOperations = getOperationsFromResult(toolCall.result);\n  if (resultOperations.length > 0) {\n    return resultOperations;\n  }\n\n  if (\n    toolCall.name === AGUI_SEND_STATE_SNAPSHOT_TOOL_NAME &&\n    toolCall.status !== \"complete\"\n  ) {\n    return [];\n  }\n\n  return getOperationsFromPayload(toolCall.args);\n}\n","import {\n  CUSTOM_ELEMENTS_SCHEMA,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  computed,\n  inject,\n  input,\n  viewChild,\n} from \"@angular/core\";\nimport type { AbstractAgent } from \"@ag-ui/client\";\nimport { COPILOT_KIT_CONFIG } from \"../../config\";\nimport { CopilotKit } from \"../../copilotkit\";\nimport type { AngularToolCall, ToolRenderer } from \"../../tools\";\nimport {\n  bridgeA2UIAction,\n  connectA2UISurface,\n  logA2UIRenderError,\n  type A2UISurfaceElement,\n} from \"./a2ui-surface-host\";\nimport { getRenderedA2UIOperations } from \"./a2ui-tool-operations\";\nimport { CopilotA2UIProgress } from \"./a2ui-progress\";\nimport {\n  AGUI_SEND_STATE_SNAPSHOT_TOOL_NAME,\n  type RenderA2UIArgs,\n} from \"./a2ui-tool-types\";\n\n@Component({\n  selector: \"copilot-a2ui-tool-renderer\",\n  imports: [CopilotA2UIProgress],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  host: {\n    class: \"copilot-a2ui-surface-renderer-layout\",\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    @if (renderedOperations().length > 0) {\n      <div\n        class=\"copilot-a2ui-surface-scroll\"\n        data-testid=\"a2ui-tool-surface-scroll\"\n      >\n        <cpk-a2ui-surface\n          #surface\n          class=\"copilot-a2ui-surface-scroll-surface\"\n          data-testid=\"a2ui-tool-surface\"\n          (a2ui-action)=\"handleAction($event)\"\n          (a2ui-error)=\"handleError($event)\"\n        ></cpk-a2ui-surface>\n      </div>\n    } @else if (!isHidden()) {\n      <copilot-a2ui-progress [phase]=\"phase()\" [tokens]=\"tokens()\" />\n    }\n  `,\n})\nexport class CopilotA2UIToolRenderer implements ToolRenderer<RenderA2UIArgs> {\n  readonly toolCall = input.required<AngularToolCall<RenderA2UIArgs>>();\n  readonly agent = input<AbstractAgent | undefined>();\n\n  private readonly surfaceRef = viewChild<\n    unknown,\n    ElementRef<A2UISurfaceElement>\n  >(\"surface\", { read: ElementRef });\n  private readonly config = inject(COPILOT_KIT_CONFIG, { optional: true });\n  private readonly copilotKit = inject(CopilotKit, { optional: true });\n\n  protected readonly renderedOperations = computed(() =>\n    getRenderedA2UIOperations(this.toolCall()),\n  );\n\n  protected readonly tokens = computed(() =>\n    Math.round(JSON.stringify(this.toolCall().args ?? {}).length / 4),\n  );\n\n  protected readonly phase = computed(() => {\n    const tokens = this.tokens();\n    if (tokens < 50) return 0;\n    if (tokens < 200) return 1;\n    if (tokens < 400) return 2;\n    return 3;\n  });\n\n  protected readonly isHidden = computed(() => {\n    const toolCall = this.toolCall();\n    if (toolCall.status === \"complete\") {\n      return this.renderedOperations().length === 0;\n    }\n\n    if (toolCall.name === AGUI_SEND_STATE_SNAPSHOT_TOOL_NAME) {\n      return false;\n    }\n\n    const { items, components } = toolCall.args;\n    if (Array.isArray(items) && items.length > 0) return true;\n    return Array.isArray(components) && components.length > 2;\n  });\n\n  constructor() {\n    connectA2UISurface({\n      surfaceRef: this.surfaceRef,\n      operations: this.renderedOperations,\n      config: this.config,\n    });\n  }\n\n  protected handleError(event: Event): void {\n    logA2UIRenderError(event);\n  }\n\n  protected async handleAction(event: Event): Promise<void> {\n    await bridgeA2UIAction(\n      this.copilotKit,\n      this.agent(),\n      (event as CustomEvent).detail,\n    );\n  }\n}\n","import type { StandardSchemaV1 } from \"@copilotkit/shared\";\nimport type { FrontendToolHandlerContext } from \"@copilotkit/core\";\nimport { z } from \"zod\";\n\nexport const OPEN_GENERATIVE_UI_ACTIVITY_TYPE = \"open-generative-ui\";\nexport const GENERATE_SANDBOXED_UI_TOOL_NAME = \"generateSandboxedUi\";\n\nexport const DEFAULT_OPEN_GENERATIVE_UI_DESIGN_SKILL = `When generating UI with generateSandboxedUi, follow these design principles inspired by shadcn/ui:\n\n- Use a minimal, flat aesthetic. Avoid drop shadows and gradients — rely on subtle borders (1px solid, light gray like #e5e7eb) to define surfaces.\n- Neutral base palette: white backgrounds, zinc/slate gray text (#09090b for headings, #71717a for secondary text). One accent color for interactive elements.\n- Use system font stacks (system-ui, -apple-system, sans-serif) at readable sizes (14px body, 600 weight for headings). Tight line-heights.\n- Small, consistent border-radius (6–8px). Cards and containers use border, not shadow, for separation.\n- Buttons: solid fill for primary (dark bg, white text), outline for secondary (border + transparent bg). Subtle hover state (slight opacity or background shift).\n- Use CSS Grid or Flexbox for layout. Ensure the UI looks good at any width.\n- Minimal transitions (150ms) for hover/focus states only. No decorative animations.\n- Keep the UI focused and dense — avoid excessive padding. Use compact spacing (8–12px gaps, 10–14px padding in controls).`;\n\nexport const GENERATE_SANDBOXED_UI_DESCRIPTION =\n  \"Generate sandboxed UI. \" +\n  \"IMPORTANT: The generated code runs in a sandboxed iframe WITHOUT same-origin access. \" +\n  \"Do NOT use localStorage, sessionStorage, document.cookie, IndexedDB, or fetch/XMLHttpRequest to same-origin URLs. \" +\n  \"To communicate with the host application, use Websandbox.connection.remote.<functionName>(args) which returns a Promise.\\n\\n\" +\n  \"You CAN use external libraries from CDNs by including <script> or <link> tags in the HTML <head> (e.g., Chart.js, D3, Three.js, x-data-spreadsheet, etc.). \" +\n  \"CDN resources load normally inside the sandbox.\\n\\n\" +\n  \"PARAMETER ORDER IS CRITICAL — generate parameters in exactly this order:\\n\" +\n  \"1. initialHeight + placeholderMessages (shown to user while generating)\\n\" +\n  \"2. css (all styles FIRST — the user sees a placeholder until CSS is complete)\\n\" +\n  \"3. html (streams in live — the user watches the UI build as HTML is generated)\\n\" +\n  \"4. jsFunctions (reusable helper functions)\\n\" +\n  \"5. jsExpressions (applied one-by-one — the user sees each expression take effect)\";\n\nexport const OpenGenerativeUIContentSchema = z.object({\n  initialHeight: z.number().optional(),\n  generating: z.boolean().optional(),\n  css: z.string().optional(),\n  cssComplete: z.boolean().optional(),\n  html: z.array(z.string()).optional(),\n  htmlComplete: z.boolean().optional(),\n  jsFunctions: z.string().optional(),\n  jsFunctionsComplete: z.boolean().optional(),\n  jsExpressions: z.array(z.string()).optional(),\n  jsExpressionsComplete: z.boolean().optional(),\n});\n\nexport type OpenGenerativeUIContent = z.infer<\n  typeof OpenGenerativeUIContentSchema\n>;\n\nexport const GenerateSandboxedUiArgsSchema = z.object({\n  initialHeight: z.number().optional(),\n  placeholderMessages: z.array(z.string()).optional(),\n  css: z.string().optional(),\n  html: z.string().optional(),\n  jsFunctions: z.string().optional(),\n  jsExpressions: z.array(z.string()).optional(),\n});\n\nexport type GenerateSandboxedUiArgs = z.infer<\n  typeof GenerateSandboxedUiArgsSchema\n>;\n\nexport type SandboxFunction<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n> = {\n  name: string;\n  description: string;\n  parameters: StandardSchemaV1<unknown, Args>;\n  handler: (\n    args: Args,\n    context?: FrontendToolHandlerContext,\n  ) => Promise<unknown> | unknown;\n};\n\nexport interface OpenGenerativeUIConfig {\n  sandboxFunctions?: SandboxFunction[];\n  designSkill?: string;\n}\n","/**\n * Extracts all complete `<style>` blocks from raw HTML.\n */\nexport function extractCompleteStyles(html: string): string {\n  const matches = html.match(/<style\\b[^>]*>[\\s\\S]*?<\\/style>/gi);\n  return matches ? matches.join(\"\") : \"\";\n}\n\n/**\n * Processes accumulated HTML into a preview-safe body fragment.\n */\nexport function processPartialHtml(html: string): string {\n  let result = html;\n\n  result = result.replace(/<[^>]*$/, \"\");\n  result = result.replace(/<(style|script|head)\\b[^>]*>[\\s\\S]*?<\\/\\1>/gi, \"\");\n  result = result.replace(/<(style|script|head)\\b[^>]*>[\\s\\S]*$/gi, \"\");\n  result = result.replace(/&[a-zA-Z0-9#]*$/, \"\");\n\n  const bodyMatch = result.match(/<body[^>]*>([\\s\\S]*)/i);\n  if (bodyMatch) {\n    result = bodyMatch[1]!;\n    result = result.replace(/<\\/body>[\\s\\S]*/i, \"\");\n  }\n\n  return result;\n}\n\nexport function ensureHead(html: string): string {\n  if (/<head[\\s>]/i.test(html)) return html;\n  return `<head></head>${html}`;\n}\n\nexport function injectCssIntoHtml(html: string, css: string): string {\n  const headCloseIdx = html.indexOf(\"</head>\");\n  if (headCloseIdx !== -1) {\n    return (\n      html.slice(0, headCloseIdx) +\n      `<style>${css}</style>` +\n      html.slice(headCloseIdx)\n    );\n  }\n  return `<head><style>${css}</style></head>${html}`;\n}\n","import type Websandbox from \"@jetbrains/websandbox\";\nimport {\n  OpenGenerativeUIContentSchema,\n  type OpenGenerativeUIContent,\n} from \"../../open-generative-ui\";\n\nexport type WebsandboxConstructor = typeof Websandbox;\nexport type WebsandboxInstance = InstanceType<WebsandboxConstructor>;\n\nexport type WebsandboxModuleShape = {\n  default:\n    | WebsandboxConstructor\n    | {\n        default: WebsandboxConstructor;\n      };\n};\n\nexport function resolveWebsandboxConstructor(\n  module: WebsandboxModuleShape,\n): WebsandboxConstructor {\n  const defaultExport = module.default;\n  return \"default\" in defaultExport ? defaultExport.default : defaultExport;\n}\n\nexport function hasRenderableOpenGenerativeUIContent(\n  content: OpenGenerativeUIContent | undefined,\n): boolean {\n  if (!content) return false;\n  const hasHtml = !!content.html?.join(\"\").trim();\n  const hasFinalHtml = content.htmlComplete && hasHtml;\n  const hasPreviewHtml =\n    content.cssComplete && !content.htmlComplete && hasHtml;\n  return !!hasFinalHtml || !!hasPreviewHtml;\n}\n\nexport function shouldFlushOpenGenerativeUIImmediately(\n  previous: OpenGenerativeUIContent | undefined,\n  next: OpenGenerativeUIContent,\n): boolean {\n  if (\n    hasRenderableOpenGenerativeUIContent(previous) &&\n    !hasRenderableOpenGenerativeUIContent(next)\n  ) {\n    return true;\n  }\n  if (next.cssComplete && !previous?.cssComplete) return true;\n  if (next.htmlComplete) return true;\n  if (next.generating === false) return true;\n  if (next.jsFunctions && !previous?.jsFunctions) return true;\n  if (\n    (next.jsExpressions?.length ?? 0) > (previous?.jsExpressions?.length ?? 0)\n  ) {\n    return true;\n  }\n  if (next.html?.length && !previous?.html?.length) return true;\n  return false;\n}\n\nexport function parseOpenGenerativeUIContent(\n  content: unknown,\n): OpenGenerativeUIContent {\n  const parsed = OpenGenerativeUIContentSchema.safeParse(content);\n  return parsed.success ? parsed.data : {};\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  ElementRef,\n  type OnChanges,\n  afterRenderEffect,\n  computed,\n  inject,\n  input,\n  signal,\n  viewChild,\n  InjectionToken,\n} from \"@angular/core\";\nimport type { AbstractAgent, ActivityMessage } from \"@ag-ui/client\";\nimport type { API } from \"@jetbrains/websandbox/dist/types\";\nimport type { ActivityRenderer } from \"../../activity-renderer\";\nimport type { OpenGenerativeUIContent } from \"../../open-generative-ui\";\nimport { injectCopilotKitConfig } from \"../../config\";\nimport {\n  ensureHead,\n  extractCompleteStyles,\n  injectCssIntoHtml,\n  processPartialHtml,\n} from \"./process-partial-html\";\nimport {\n  hasRenderableOpenGenerativeUIContent,\n  parseOpenGenerativeUIContent,\n  resolveWebsandboxConstructor,\n  shouldFlushOpenGenerativeUIImmediately,\n  type WebsandboxConstructor,\n  type WebsandboxInstance,\n  type WebsandboxModuleShape,\n} from \"./open-generative-ui-renderer-utils\";\n\nexport const OPEN_GENERATIVE_UI_WEBSANDBOX_LOADER = new InjectionToken<\n  () => Promise<WebsandboxConstructor>\n>(\"OPEN_GENERATIVE_UI_WEBSANDBOX_LOADER\", {\n  providedIn: \"root\",\n  factory: () => async (): Promise<WebsandboxConstructor> => {\n    const websandboxModule =\n      (await import(\"@jetbrains/websandbox\")) as unknown as WebsandboxModuleShape;\n    return resolveWebsandboxConstructor(websandboxModule);\n  },\n});\n\nconst THROTTLE_MS = 1000;\n\ntype OpenGenerativeUIRenderState = {\n  content: OpenGenerativeUIContent;\n  fullHtml: string | undefined;\n  css: string | undefined;\n  hasPreview: boolean;\n  previewBody: string | undefined;\n  previewStyles: string;\n  jsFunctions: string | undefined;\n  jsExpressions: string[] | undefined;\n  generatingDone: boolean;\n};\n\n@Component({\n  selector: \"copilot-open-generative-ui-renderer\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <div\n      #container\n      data-testid=\"open-generative-ui-renderer\"\n      class=\"copilot-open-generative-ui-container\"\n      [style.height.px]=\"height()\"\n      [class.has-visible-sandbox]=\"hasVisibleSandbox()\"\n    >\n      @if (!hasVisibleSandbox() && isGenerating()) {\n        <div\n          data-testid=\"open-generative-ui-placeholder\"\n          class=\"copilot-open-generative-ui-placeholder\"\n        >\n          <svg\n            width=\"48\"\n            height=\"48\"\n            viewBox=\"0 0 24 24\"\n            fill=\"none\"\n            class=\"copilot-open-generative-ui-spinner\"\n          >\n            <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"#e0e0e0\" stroke-width=\"3\" />\n            <path\n              d=\"M12 2a10 10 0 0 1 10 10\"\n              stroke=\"#999\"\n              stroke-width=\"3\"\n              stroke-linecap=\"round\"\n            />\n          </svg>\n        </div>\n      }\n      @if (hasVisibleSandbox() && isGenerating()) {\n        <div\n          data-testid=\"open-generative-ui-progress-overlay\"\n          class=\"copilot-open-generative-ui-overlay\"\n        >\n          <svg\n            width=\"48\"\n            height=\"48\"\n            viewBox=\"0 0 24 24\"\n            fill=\"none\"\n            class=\"copilot-open-generative-ui-spinner\"\n          >\n            <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"#e0e0e0\" stroke-width=\"3\" />\n            <path\n              d=\"M12 2a10 10 0 0 1 10 10\"\n              stroke=\"#999\"\n              stroke-width=\"3\"\n              stroke-linecap=\"round\"\n            />\n          </svg>\n        </div>\n      }\n    </div>\n  `,\n  styles: [\n    `\n      .copilot-open-generative-ui-container {\n        position: relative;\n        width: 100%;\n        border-radius: 8px;\n        background-color: #f5f5f5;\n        border: 1px solid #e0e0e0;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        overflow: hidden;\n      }\n\n      .copilot-open-generative-ui-container.has-visible-sandbox {\n        background-color: transparent;\n        border: none;\n        display: block;\n      }\n\n      .copilot-open-generative-ui-placeholder {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n      }\n\n      .copilot-open-generative-ui-overlay {\n        position: absolute;\n        inset: 0;\n        z-index: 10;\n        pointer-events: all;\n        background-color: rgba(255, 255, 255, 0.5);\n        display: flex;\n        align-items: center;\n        justify-content: center;\n      }\n\n      .copilot-open-generative-ui-spinner {\n        animation: copilot-open-generative-ui-spin 1s linear infinite;\n      }\n\n      @keyframes copilot-open-generative-ui-spin {\n        to {\n          transform: rotate(360deg);\n        }\n      }\n    `,\n  ],\n})\nexport class CopilotOpenGenerativeUIRenderer implements OnChanges {\n  readonly content = input.required<OpenGenerativeUIContent>();\n\n  private readonly containerRef = viewChild<\n    unknown,\n    ElementRef<HTMLDivElement>\n  >(\"container\", { read: ElementRef });\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly config = injectCopilotKitConfig();\n  private readonly loadWebsandboxModule = inject(\n    OPEN_GENERATIVE_UI_WEBSANDBOX_LOADER,\n  );\n  private readonly throttledContent = signal<OpenGenerativeUIContent>({});\n  private throttleTimer: ReturnType<typeof setTimeout> | undefined;\n  private latestContent: OpenGenerativeUIContent = {};\n  private sandbox: WebsandboxInstance | undefined;\n  private previewSandbox: WebsandboxInstance | undefined;\n  private sandboxReady = false;\n  private previewReady = false;\n  private finalSandboxKey: string | undefined;\n  private executedExpressionIndex = 0;\n  private pendingQueue: string[] = [];\n  private jsFunctionsInjected = false;\n  private heightMeasured = false;\n  private autoHeight = signal<number | undefined>(undefined);\n  private hasReceivedContent = false;\n\n  protected readonly fullHtml = computed(() => {\n    const content = this.throttledContent();\n    return content.htmlComplete && content.html?.length\n      ? content.html.join(\"\")\n      : undefined;\n  });\n\n  protected readonly css = computed(() => {\n    const content = this.throttledContent();\n    return content.cssComplete ? content.css : undefined;\n  });\n\n  protected readonly partialHtml = computed(() => {\n    const content = this.throttledContent();\n    return !content.htmlComplete && content.html?.length\n      ? content.html.join(\"\")\n      : undefined;\n  });\n\n  protected readonly previewBody = computed(() => {\n    const partialHtml = this.partialHtml();\n    return partialHtml ? processPartialHtml(partialHtml) : undefined;\n  });\n\n  protected readonly previewStyles = computed(() => {\n    const partialHtml = this.partialHtml();\n    return partialHtml ? extractCompleteStyles(partialHtml) : \"\";\n  });\n\n  protected readonly hasPreview = computed(\n    () => !!this.throttledContent().cssComplete && !!this.previewBody()?.trim(),\n  );\n\n  protected readonly hasVisibleSandbox = computed(\n    () => !!this.fullHtml() || this.hasPreview(),\n  );\n\n  protected readonly height = computed(\n    () => this.autoHeight() ?? this.throttledContent().initialHeight ?? 200,\n  );\n\n  protected readonly isGenerating = computed(\n    () => this.throttledContent().generating !== false,\n  );\n\n  private readonly renderState = computed<OpenGenerativeUIRenderState>(() => {\n    const content = this.throttledContent();\n    return {\n      content,\n      fullHtml: this.fullHtml(),\n      css: this.css(),\n      hasPreview: this.hasPreview(),\n      previewBody: this.previewBody(),\n      previewStyles: this.previewStyles(),\n      jsFunctions: content.jsFunctions,\n      jsExpressions: content.jsExpressions,\n      generatingDone: content.generating === false,\n    };\n  });\n\n  constructor() {\n    this.destroyRef.onDestroy(() => {\n      this.clearThrottle();\n      this.destroyPreviewSandbox();\n      this.destroyFinalSandbox();\n    });\n\n    afterRenderEffect({\n      write: () => {\n        const state = this.renderState();\n        this.containerRef();\n        this.reconcileSandboxState(state);\n\n        if (!state.generatingDone || this.heightMeasured || !this.sandbox) {\n          return;\n        }\n        this.heightMeasured = true;\n        const cleanup = this.measureFinalHeight();\n        if (cleanup) this.destroyRef.onDestroy(cleanup);\n      },\n    });\n  }\n\n  /** Applies input updates synchronously before the matching render pass. */\n  ngOnChanges(): void {\n    const next = parseOpenGenerativeUIContent(this.content());\n    this.latestContent = next;\n    const previous = this.throttledContent();\n\n    if (!this.hasReceivedContent) {\n      this.hasReceivedContent = true;\n      this.clearThrottle();\n      this.commitContent(previous, next);\n      return;\n    }\n\n    if (shouldFlushOpenGenerativeUIImmediately(previous, next)) {\n      this.clearThrottle();\n      this.commitContent(previous, next);\n      return;\n    }\n\n    if (!this.throttleTimer) {\n      this.throttleTimer = setTimeout(() => {\n        this.throttleTimer = undefined;\n        this.throttledContent.set(this.latestContent);\n      }, THROTTLE_MS);\n    }\n  }\n\n  /** Commits content and synchronously removes stale sandbox DOM on restart. */\n  private commitContent(\n    previous: OpenGenerativeUIContent,\n    next: OpenGenerativeUIContent,\n  ): void {\n    this.throttledContent.set(next);\n\n    if (\n      hasRenderableOpenGenerativeUIContent(previous) &&\n      !hasRenderableOpenGenerativeUIContent(next)\n    ) {\n      this.destroyPreviewSandbox();\n      this.destroyFinalSandbox();\n      this.resetFinalRuntimeState();\n      this.autoHeight.set(undefined);\n    }\n  }\n\n  private clearThrottle(): void {\n    if (!this.throttleTimer) return;\n    clearTimeout(this.throttleTimer);\n    this.throttleTimer = undefined;\n  }\n\n  private async loadWebsandbox(): Promise<WebsandboxConstructor> {\n    return this.loadWebsandboxModule();\n  }\n\n  private createLocalApi(): API {\n    const api: API = {};\n    for (const fn of this.config.openGenerativeUI?.sandboxFunctions ?? []) {\n      api[fn.name] = fn.handler;\n    }\n    return api;\n  }\n\n  private createPreviewSandbox(state: OpenGenerativeUIRenderState): void {\n    const container = this.containerRef()?.nativeElement;\n    if (\n      !container ||\n      state.fullHtml ||\n      !state.hasPreview ||\n      this.previewSandbox\n    ) {\n      return;\n    }\n\n    void this.loadWebsandbox()\n      .then((Websandbox) => {\n        if (\n          !this.containerRef() ||\n          this.previewSandbox ||\n          this.renderState().fullHtml ||\n          !this.renderState().hasPreview\n        ) {\n          return;\n        }\n\n        const sandbox = Websandbox.create(\n          {},\n          {\n            frameContainer: container,\n            frameContent: \"<head></head><body></body>\",\n            allowAdditionalAttributes: \"\",\n          },\n        );\n        this.previewSandbox = sandbox;\n        sandbox.iframe.setAttribute(\n          \"data-testid\",\n          \"open-generative-ui-preview-sandbox\",\n        );\n        this.styleIframe(sandbox.iframe);\n\n        sandbox.promise.then(() => {\n          if (this.previewSandbox !== sandbox) return;\n          this.previewReady = true;\n          void sandbox.run(`\n            var s = document.createElement('style');\n            s.textContent = 'html, body { overflow: hidden !important; }';\n            document.head.appendChild(s);\n          `);\n          this.updatePreviewSandbox(this.renderState());\n        });\n      })\n      .catch((error: unknown) => {\n        console.error(\n          \"[OpenGenerativeUI] Failed to load sandbox module:\",\n          error,\n        );\n      });\n  }\n\n  private updatePreviewSandbox(state: OpenGenerativeUIRenderState): void {\n    if (!this.previewSandbox || !this.previewReady) return;\n\n    const headParts: string[] = [];\n    if (state.css) headParts.push(`<style>${state.css}</style>`);\n    if (state.previewStyles) headParts.push(state.previewStyles);\n    if (headParts.length) {\n      void this.previewSandbox.run(\n        `document.head.innerHTML = ${JSON.stringify(headParts.join(\"\"))}`,\n      );\n    }\n    if (state.previewBody) {\n      void this.previewSandbox.run(\n        `document.body.innerHTML = ${JSON.stringify(state.previewBody)}`,\n      );\n    }\n  }\n\n  private reconcileSandboxState(state: OpenGenerativeUIRenderState): void {\n    if (!state.fullHtml) {\n      this.destroyFinalSandbox();\n      this.resetFinalRuntimeState();\n      this.autoHeight.set(undefined);\n\n      if (!state.hasPreview) {\n        this.destroyPreviewSandbox();\n        return;\n      }\n\n      this.createPreviewSandbox(state);\n      this.updatePreviewSandbox(state);\n      return;\n    }\n\n    this.destroyPreviewSandbox();\n    const finalSandboxKey = this.getFinalSandboxKey(state.fullHtml, state.css);\n    if (!this.sandbox || this.finalSandboxKey !== finalSandboxKey) {\n      void this.createFinalSandbox(state.fullHtml, state.css, finalSandboxKey);\n    }\n\n    this.injectJsFunctions(state.jsFunctions);\n    void this.executeNewExpressions(state.jsExpressions);\n  }\n\n  private getFinalSandboxKey(\n    fullHtml: string,\n    css: string | undefined,\n  ): string {\n    return JSON.stringify([fullHtml, css ?? \"\"]);\n  }\n\n  private async createFinalSandbox(\n    fullHtml: string,\n    css: string | undefined,\n    finalSandboxKey: string,\n  ): Promise<void> {\n    const container = this.containerRef()?.nativeElement;\n    if (!container || !fullHtml) return;\n\n    this.destroyPreviewSandbox();\n    this.destroyFinalSandbox();\n    this.finalSandboxKey = finalSandboxKey;\n    this.resetFinalRuntimeState();\n    this.autoHeight.set(undefined);\n\n    const htmlContent = css ? injectCssIntoHtml(fullHtml, css) : fullHtml;\n\n    try {\n      const Websandbox = await this.loadWebsandbox();\n      if (!this.containerRef() || this.finalSandboxKey !== finalSandboxKey) {\n        return;\n      }\n\n      const sandbox = Websandbox.create(this.createLocalApi(), {\n        frameContainer: container,\n        frameContent: ensureHead(htmlContent),\n        allowAdditionalAttributes: \"\",\n      });\n      this.sandbox = sandbox;\n      sandbox.iframe.setAttribute(\n        \"data-testid\",\n        \"open-generative-ui-final-sandbox\",\n      );\n      this.styleIframe(sandbox.iframe);\n\n      sandbox.promise.then(() => {\n        if (this.sandbox !== sandbox) return;\n        this.sandboxReady = true;\n        void sandbox.run(`\n          var s = document.createElement('style');\n          s.textContent = 'html, body { overflow: hidden !important; }';\n          document.head.appendChild(s);\n        `);\n        const queue = this.pendingQueue;\n        this.pendingQueue = [];\n        for (const code of queue) void sandbox.run(code);\n      });\n    } catch (error) {\n      if (this.finalSandboxKey === finalSandboxKey) {\n        this.finalSandboxKey = undefined;\n      }\n      console.error(\"[OpenGenerativeUI] Failed to load sandbox module:\", error);\n    }\n  }\n\n  private resetFinalRuntimeState(): void {\n    this.executedExpressionIndex = 0;\n    this.jsFunctionsInjected = false;\n    this.heightMeasured = false;\n    this.pendingQueue = [];\n    this.sandboxReady = false;\n  }\n\n  private injectJsFunctions(jsFunctions: string | undefined): void {\n    if (!jsFunctions || this.jsFunctionsInjected) return;\n    this.jsFunctionsInjected = true;\n    this.runOrQueue(jsFunctions);\n  }\n\n  private async executeNewExpressions(\n    expressions: string[] | undefined,\n  ): Promise<void> {\n    if (!expressions?.length) return;\n\n    const startIndex = this.executedExpressionIndex;\n    if (startIndex >= expressions.length) return;\n    const newExpressions = expressions.slice(startIndex);\n    this.executedExpressionIndex = expressions.length;\n\n    if (this.sandboxReady && this.sandbox) {\n      for (const expression of newExpressions) {\n        await this.sandbox.run(expression);\n      }\n      return;\n    }\n\n    this.pendingQueue.push(...newExpressions);\n  }\n\n  private runOrQueue(code: string): void {\n    if (this.sandboxReady && this.sandbox) {\n      void this.sandbox.run(code);\n      return;\n    }\n    this.pendingQueue.push(code);\n  }\n\n  private measureFinalHeight(): (() => void) | undefined {\n    const sandbox = this.sandbox;\n    if (!sandbox) return undefined;\n\n    let handled = false;\n    const onMessage = (event: MessageEvent) => {\n      if (handled) return;\n      if (\n        event.source === sandbox.iframe.contentWindow &&\n        event.data?.type === \"__ck_resize\"\n      ) {\n        handled = true;\n        this.autoHeight.set(event.data.height);\n        window.removeEventListener(\"message\", onMessage);\n      }\n    };\n\n    window.addEventListener(\"message\", onMessage);\n\n    const measureOnce = `\n      (function() {\n        var s = document.createElement('style');\n        s.textContent = 'body { height: auto !important; min-height: 0 !important; }';\n        document.head.appendChild(s);\n        var h = document.body.scrollHeight;\n        var cs = getComputedStyle(document.body);\n        h += parseFloat(cs.marginTop) || 0;\n        h += parseFloat(cs.marginBottom) || 0;\n        s.remove();\n        parent.postMessage({ type: \"__ck_resize\", height: Math.ceil(h) }, \"*\");\n      })();\n    `;\n\n    this.runOrQueue(measureOnce);\n    return () => window.removeEventListener(\"message\", onMessage);\n  }\n\n  private styleIframe(iframe: HTMLIFrameElement): void {\n    iframe.style.width = \"100%\";\n    iframe.style.height = \"100%\";\n    iframe.style.border = \"none\";\n    iframe.style.backgroundColor = \"transparent\";\n  }\n\n  private destroyPreviewSandbox(): void {\n    if (!this.previewSandbox) return;\n    this.previewSandbox.destroy();\n    this.previewSandbox = undefined;\n    this.previewReady = false;\n  }\n\n  private destroyFinalSandbox(): void {\n    if (this.sandbox) {\n      this.sandbox.destroy();\n      this.sandbox = undefined;\n    }\n    this.sandboxReady = false;\n    this.heightMeasured = false;\n    this.finalSandboxKey = undefined;\n  }\n}\n\n@Component({\n  selector: \"copilot-open-generative-ui-activity-renderer\",\n  imports: [CopilotOpenGenerativeUIRenderer],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <copilot-open-generative-ui-renderer [content]=\"content()\" />\n  `,\n})\nexport class CopilotOpenGenerativeUIActivityRenderer implements ActivityRenderer<OpenGenerativeUIContent> {\n  readonly activityType = input.required<string>();\n  readonly content = input.required<OpenGenerativeUIContent>();\n  readonly message = input.required<ActivityMessage>();\n  readonly agent = input<AbstractAgent | undefined>();\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  computed,\n  effect,\n  inject,\n  input,\n  signal,\n} from \"@angular/core\";\nimport type { AngularToolCall, ToolRenderer } from \"../../tools\";\nimport type { GenerateSandboxedUiArgs } from \"../../open-generative-ui\";\n\n@Component({\n  selector: \"copilot-open-generative-ui-tool-renderer\",\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    @if (visibleMessage(); as message) {\n      <div\n        data-testid=\"open-generative-ui-tool-placeholder\"\n        class=\"copilot-open-generative-ui-placeholder\"\n      >\n        {{ message }}\n      </div>\n    }\n  `,\n  styles: [\n    `\n      .copilot-open-generative-ui-placeholder {\n        padding: 8px 12px;\n        color: #999;\n        font-size: 14px;\n      }\n    `,\n  ],\n})\nexport class CopilotOpenGenerativeUIToolRenderer implements ToolRenderer<GenerateSandboxedUiArgs> {\n  readonly toolCall =\n    input.required<AngularToolCall<GenerateSandboxedUiArgs>>();\n\n  private readonly visibleMessageIndex = signal(0);\n  private readonly destroyRef = inject(DestroyRef);\n  private previousMessageCount = 0;\n  private interval: ReturnType<typeof setInterval> | undefined;\n\n  protected readonly visibleMessage = computed(() => {\n    const call = this.toolCall();\n    if (call.status === \"complete\") return undefined;\n\n    const messages = call.args.placeholderMessages;\n    if (!messages?.length) return undefined;\n\n    return messages[this.visibleMessageIndex()] ?? messages[0];\n  });\n\n  constructor() {\n    this.destroyRef.onDestroy(() => this.clearTimer());\n\n    effect((onCleanup) => {\n      const call = this.toolCall();\n      const messages = call.args.placeholderMessages;\n      this.clearTimer();\n\n      if (!messages?.length) {\n        this.previousMessageCount = 0;\n        this.visibleMessageIndex.set(0);\n        return;\n      }\n\n      if (messages.length !== this.previousMessageCount) {\n        this.previousMessageCount = messages.length;\n        this.visibleMessageIndex.set(messages.length - 1);\n      }\n\n      if (call.status === \"complete\") return;\n\n      this.interval = setInterval(() => {\n        this.visibleMessageIndex.update(\n          (index) => (index + 1) % messages.length,\n        );\n      }, 5000);\n\n      onCleanup(() => this.clearTimer());\n    });\n  }\n\n  private clearTimer(): void {\n    if (this.interval === undefined) return;\n    clearInterval(this.interval);\n    this.interval = undefined;\n  }\n}\n","import type { SchemaToJsonSchemaOptions } from \"@copilotkit/shared\";\nimport { zodToJsonSchema } from \"zod-to-json-schema\";\n\ntype ZodToJsonSchemaInput = Parameters<typeof zodToJsonSchema>[0];\ntype ZodToJsonSchemaOptions = Parameters<typeof zodToJsonSchema>[1];\n\nexport const standardSchemaZodToJsonSchema: NonNullable<\n  SchemaToJsonSchemaOptions[\"zodToJsonSchema\"]\n> = (schema, options) =>\n  zodToJsonSchema(\n    schema as ZodToJsonSchemaInput,\n    options as ZodToJsonSchemaOptions,\n  ) as Record<string, unknown>;\n","import { AbstractAgent } from \"@ag-ui/client\";\nimport {\n  FrontendTool,\n  CopilotKitCore,\n  CopilotKitCoreRuntimeConnectionStatus,\n  CopilotRuntimeTransport,\n  type CopilotKitCoreGetSuggestionsResult,\n  type IntelligenceRuntimeInfo,\n  type RuntimeLicenseStatus,\n  type SuggestionsConfig,\n  type ThreadEndpointRuntimeInfo,\n} from \"@copilotkit/core\";\nimport {\n  Injectable,\n  Injector,\n  Signal,\n  WritableSignal,\n  computed,\n  runInInjectionContext,\n  signal,\n  inject,\n} from \"@angular/core\";\nimport {\n  FrontendToolConfig,\n  HumanInTheLoopConfig,\n  RenderToolCallConfig,\n} from \"./tools\";\nimport {\n  A2UI_DEFAULT_DESIGN_GUIDELINES,\n  A2UI_DEFAULT_GENERATION_GUIDELINES,\n  schemaToJsonSchema,\n} from \"@copilotkit/shared\";\nimport {\n  A2UI_SCHEMA_CONTEXT_DESCRIPTION,\n  buildCatalogContextValue,\n  extractCatalogComponentSchemas,\n} from \"@copilotkit/a2ui-renderer/web-components\";\nimport {\n  ɵCOPILOTKIT_BUILT_IN_ACTIVITY_RENDERERS,\n  RenderActivityMessageConfig,\n  anyActivityContentSchema,\n} from \"./activity-renderer\";\nimport { injectCopilotKitConfig } from \"./config\";\nimport { HumanInTheLoop } from \"./human-in-the-loop\";\nimport { ensureLicenseWatermark } from \"./license-watermark\";\nimport { CopilotA2UIActivityRenderer } from \"./components/a2ui/a2ui-activity-renderer\";\nimport { CopilotA2UIToolRenderer } from \"./components/a2ui/a2ui-tool-renderer\";\nimport {\n  AGUI_SEND_STATE_SNAPSHOT_TOOL_NAME,\n  RENDER_A2UI_TOOL_NAME,\n  RenderA2UIArgsSchema,\n} from \"./components/a2ui/a2ui-tool-types\";\nimport {\n  DEFAULT_OPEN_GENERATIVE_UI_DESIGN_SKILL,\n  GENERATE_SANDBOXED_UI_DESCRIPTION,\n  GENERATE_SANDBOXED_UI_TOOL_NAME,\n  GenerateSandboxedUiArgsSchema,\n  OPEN_GENERATIVE_UI_ACTIVITY_TYPE,\n  type GenerateSandboxedUiArgs,\n} from \"./open-generative-ui\";\nimport { CopilotOpenGenerativeUIActivityRenderer } from \"./components/open-generative-ui/open-generative-ui-activity-renderer\";\nimport { CopilotOpenGenerativeUIToolRenderer } from \"./components/open-generative-ui/open-generative-ui-tool-renderer\";\nimport { standardSchemaZodToJsonSchema } from \"./standard-schema-zod\";\n\n/**\n * Advertise a client-provided A2UI catalog to the runtime without mutating the\n * caller's properties object. The runtime uses this per-run capability to\n * enable A2UI middleware and inject its render tool when endpoint configuration\n * does not opt in separately; this mirrors the React provider contract.\n */\nfunction withA2UICatalogCapability(\n  properties: Record<string, unknown> | undefined,\n  hasCatalog: boolean,\n): Record<string, unknown> | undefined {\n  return hasCatalog\n    ? { ...properties, a2uiCatalogAvailable: true }\n    : properties;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class CopilotKit {\n  readonly #config = injectCopilotKitConfig();\n  readonly #extensionActivityMessageRenderers = inject(\n    ɵCOPILOTKIT_BUILT_IN_ACTIVITY_RENDERERS,\n  );\n  readonly #hitl = inject(HumanInTheLoop);\n  readonly #rootInjector = inject(Injector);\n  /** Whether unknown tools may use the built-in text-only fallback renderer. */\n  readonly defaultToolRenderingEnabled =\n    this.#config.defaultToolRendering === true;\n  readonly #agents = signal<Record<string, AbstractAgent>>(\n    this.#config.agents ?? {},\n  );\n  readonly agents = this.#agents.asReadonly();\n  readonly #runtimeConnectionStatus =\n    signal<CopilotKitCoreRuntimeConnectionStatus>(\n      CopilotKitCoreRuntimeConnectionStatus.Disconnected,\n    );\n  readonly runtimeConnectionStatus = this.#runtimeConnectionStatus.asReadonly();\n  readonly #runtimeUrl = signal<string | undefined>(undefined);\n  readonly runtimeUrl = this.#runtimeUrl.asReadonly();\n  readonly #runtimeTransport = signal<CopilotRuntimeTransport>(\"auto\");\n  readonly runtimeTransport = this.#runtimeTransport.asReadonly();\n  readonly #headers = signal<Record<string, string>>({});\n  readonly headers = this.#headers.asReadonly();\n  readonly #threadEndpoints = signal<ThreadEndpointRuntimeInfo | undefined>(\n    undefined,\n  );\n  /**\n   * Thread-endpoint capability advertised by the connected runtime's `/info`\n   * response, or `undefined` before the runtime reports `Connected`. Exposed\n   * as a signal (rather than a plain `core.threadEndpoints` read) so reactive\n   * consumers re-run when `/info` lands.\n   */\n  readonly threadEndpoints = this.#threadEndpoints.asReadonly();\n  readonly #intelligence = signal<IntelligenceRuntimeInfo | undefined>(\n    undefined,\n  );\n  /**\n   * Intelligence runtime info advertised by the connected runtime's `/info`\n   * response, or `undefined` before the runtime reports `Connected`. Carries\n   * the realtime `wsUrl`. Exposed as a signal so reactive consumers re-run\n   * when `/info` populates it — even if the connection status does not\n   * transition in the same turn.\n   */\n  readonly intelligence = this.#intelligence.asReadonly();\n  readonly #licenseStatus = signal<RuntimeLicenseStatus | undefined>(undefined);\n  /**\n   * Server-reported license status from the connected runtime's `/info`\n   * response, or `undefined` before the runtime reports it. Exposed as a signal\n   * (rather than a plain `core.licenseStatus` read) so reactive consumers — e.g.\n   * the threads drawer's license gate — re-run once the status resolves.\n   */\n  readonly licenseStatus = this.#licenseStatus.asReadonly();\n  readonly #suggestionsByAgent = signal<\n    Record<string, CopilotKitCoreGetSuggestionsResult>\n  >({});\n  readonly suggestionsByAgent = this.#suggestionsByAgent.asReadonly();\n\n  readonly core = new CopilotKitCore({\n    runtimeUrl: this.#config.runtimeUrl,\n    headers: this.#config.headers,\n    agents__unsafe_dev_only: {\n      ...this.#config.agents,\n      ...this.#config.selfManagedAgents,\n    },\n    tools: this.#config.tools,\n    suggestionsConfig: this.#config.suggestionsConfig,\n    properties: withA2UICatalogCapability(\n      this.#config.properties,\n      this.#config.a2ui?.catalog !== undefined,\n    ),\n  });\n\n  readonly #toolCallRenderConfigs: WritableSignal<RenderToolCallConfig[]> =\n    signal([]);\n  readonly #builtInToolCallRenderConfigs: WritableSignal<\n    RenderToolCallConfig[]\n  > = signal([]);\n  readonly #clientToolCallRenderConfigs: WritableSignal<FrontendToolConfig[]> =\n    signal([]);\n  readonly #builtInClientToolCallRenderConfigs: WritableSignal<\n    FrontendToolConfig[]\n  > = signal([]);\n  readonly #humanInTheLoopToolRenderConfigs: WritableSignal<\n    HumanInTheLoopConfig[]\n  > = signal([]);\n  readonly #activityMessageRenderConfigs: WritableSignal<\n    RenderActivityMessageConfig[]\n  > = signal([]);\n  readonly #builtInActivityMessageRenderConfigs: WritableSignal<\n    RenderActivityMessageConfig[]\n  > = signal([]);\n\n  readonly toolCallRenderConfigs: Signal<RenderToolCallConfig[]> = computed(\n    () => [\n      ...this.#toolCallRenderConfigs(),\n      ...this.#builtInToolCallRenderConfigs(),\n    ],\n  );\n  readonly clientToolCallRenderConfigs: Signal<FrontendToolConfig[]> = computed(\n    () => [\n      ...this.#clientToolCallRenderConfigs(),\n      ...this.#builtInClientToolCallRenderConfigs(),\n    ],\n  );\n  readonly humanInTheLoopToolRenderConfigs: Signal<HumanInTheLoopConfig[]> =\n    this.#humanInTheLoopToolRenderConfigs.asReadonly();\n  readonly activityMessageRenderConfigs: Signal<RenderActivityMessageConfig[]> =\n    computed(() => [\n      ...this.#activityMessageRenderConfigs(),\n      ...this.#extensionActivityMessageRenderers,\n      ...this.#builtInActivityMessageRenderConfigs(),\n    ]);\n\n  #openGenerativeUIToolRegistered = false;\n  #openGenerativeUIContextIds: string[] = [];\n  #a2UIContextIds: string[] = [];\n\n  constructor() {\n    ensureLicenseWatermark(this.#config.headers);\n\n    this.#runtimeConnectionStatus.set(this.core.runtimeConnectionStatus);\n    this.#runtimeUrl.set(this.core.runtimeUrl);\n    this.#runtimeTransport.set(this.core.runtimeTransport);\n    this.#headers.set(this.core.headers);\n    this.#threadEndpoints.set(this.core.threadEndpoints);\n    this.#intelligence.set(this.core.intelligence);\n    this.#licenseStatus.set(this.core.licenseStatus);\n    this.#config.renderToolCalls?.forEach((renderConfig) => {\n      this.addRenderToolCall(renderConfig);\n    });\n    this.#config.renderActivityMessages?.forEach((renderConfig) => {\n      this.addRenderActivityMessage(renderConfig);\n    });\n\n    this.#config.tools?.forEach((tool) => {\n      if (tool.renderer && tool.parameters) {\n        this.addRenderToolCall({\n          name: tool.name,\n          args: tool.parameters,\n          component: tool.renderer,\n          agentId: tool.agentId,\n        });\n      }\n    });\n\n    this.#config.frontendTools?.forEach((clientTool) => {\n      this.addFrontendTool({ ...clientTool, injector: this.#rootInjector });\n    });\n\n    this.#config.humanInTheLoop?.forEach((humanInTheLoopTool) => {\n      this.addHumanInTheLoop(humanInTheLoopTool);\n    });\n\n    this.core.subscribe({\n      onAgentsChanged: () => {\n        this.#agents.set(this.core.agents);\n      },\n      onRuntimeConnectionStatusChanged: ({ status }) => {\n        // Core assigns `threadEndpoints`/`intelligence` synchronously before it\n        // notifies this callback (see agent-registry `ensureRuntimeMode`), so\n        // mirroring them here keeps the signals in lockstep with the status\n        // signal and lets reactive consumers observe `intelligence.wsUrl` once\n        // `/info` resolves.\n        this.#runtimeConnectionStatus.set(status);\n        this.#threadEndpoints.set(this.core.threadEndpoints);\n        this.#intelligence.set(this.core.intelligence);\n        this.#licenseStatus.set(this.core.licenseStatus);\n        this.#syncBuiltInActivityMessageRenderers();\n        this.#syncBuiltInOpenGenerativeUI();\n      },\n      onHeadersChanged: ({ headers }) => {\n        this.#headers.set(headers);\n      },\n      onSuggestionsChanged: ({ agentId, suggestions }) => {\n        this.#setSuggestions(agentId, {\n          suggestions,\n          isLoading: this.core.getSuggestions(agentId).isLoading,\n        });\n      },\n      onSuggestionsStartedLoading: ({ agentId }) => {\n        this.#setSuggestions(agentId, {\n          suggestions: this.core.getSuggestions(agentId).suggestions,\n          isLoading: true,\n        });\n      },\n      onSuggestionsFinishedLoading: ({ agentId }) => {\n        this.#setSuggestions(agentId, {\n          suggestions: this.core.getSuggestions(agentId).suggestions,\n          isLoading: false,\n        });\n      },\n    });\n    this.#syncBuiltInActivityMessageRenderers();\n    this.#syncBuiltInOpenGenerativeUI();\n  }\n\n  #setSuggestions(\n    agentId: string,\n    result: CopilotKitCoreGetSuggestionsResult,\n  ): void {\n    this.#suggestionsByAgent.update((current) => ({\n      ...current,\n      [agentId]: result,\n    }));\n  }\n\n  #bindClientTool(\n    clientToolWithInjector: FrontendToolConfig & {\n      injector: Injector;\n    },\n  ): FrontendTool {\n    const { injector, handler, ...frontendCandidate } = clientToolWithInjector;\n\n    return {\n      ...frontendCandidate,\n      handler: (args, context) =>\n        runInInjectionContext(injector, () => handler(args, context)),\n    };\n  }\n\n  addFrontendTool(\n    clientToolWithInjector: FrontendToolConfig & {\n      injector: Injector;\n    },\n  ): void {\n    const tool = this.#bindClientTool(clientToolWithInjector);\n\n    this.core.addTool(tool);\n\n    this.#clientToolCallRenderConfigs.update((current) => [\n      ...current,\n      clientToolWithInjector,\n    ]);\n  }\n\n  addRenderToolCall(renderConfig: RenderToolCallConfig): void {\n    this.#toolCallRenderConfigs.update((current) => [...current, renderConfig]);\n  }\n\n  addRenderActivityMessage(renderConfig: RenderActivityMessageConfig): void {\n    this.#activityMessageRenderConfigs.update((current) => [\n      ...current,\n      renderConfig,\n    ]);\n  }\n\n  /** Remove one dynamically registered activity renderer by identity. */\n  removeRenderActivityMessage(renderConfig: RenderActivityMessageConfig): void {\n    this.#activityMessageRenderConfigs.update((current) =>\n      current.filter((candidate) => candidate !== renderConfig),\n    );\n  }\n\n  #syncBuiltInActivityMessageRenderers(): void {\n    const renderers: RenderActivityMessageConfig[] = [];\n\n    if (this.#isA2UIActive()) {\n      renderers.push({\n        activityType: \"a2ui-surface\",\n        content: anyActivityContentSchema,\n        component: CopilotA2UIActivityRenderer,\n      });\n    }\n\n    if (this.#isOpenGenerativeUIActive()) {\n      renderers.push({\n        activityType: OPEN_GENERATIVE_UI_ACTIVITY_TYPE,\n        content: anyActivityContentSchema,\n        component: CopilotOpenGenerativeUIActivityRenderer,\n      });\n    }\n\n    this.#builtInActivityMessageRenderConfigs.set(renderers);\n    this.#syncBuiltInA2UI();\n  }\n\n  #syncBuiltInA2UI(): void {\n    if (!this.#isA2UIActive()) {\n      this.#builtInToolCallRenderConfigs.set([]);\n      this.#removeA2UIContexts();\n      return;\n    }\n\n    this.#builtInToolCallRenderConfigs.set([\n      {\n        name: RENDER_A2UI_TOOL_NAME,\n        args: RenderA2UIArgsSchema,\n        component: CopilotA2UIToolRenderer,\n        passAgent: true,\n      },\n      {\n        name: AGUI_SEND_STATE_SNAPSHOT_TOOL_NAME,\n        args: RenderA2UIArgsSchema,\n        component: CopilotA2UIToolRenderer,\n        passAgent: true,\n      },\n    ]);\n    this.#syncA2UIContexts();\n  }\n\n  #getA2UICatalog(): unknown {\n    return this.#config.a2ui?.catalog;\n  }\n\n  /** Return whether runtime capability or an explicit catalog enables A2UI. */\n  #isA2UIActive(): boolean {\n    return this.core.a2uiEnabled || this.#getA2UICatalog() !== undefined;\n  }\n\n  #syncA2UIContexts(): void {\n    this.#removeA2UIContexts();\n\n    const catalog = this.#getA2UICatalog();\n    this.#a2UIContextIds.push(\n      this.core.addContext({\n        description:\n          \"A2UI catalog capabilities: available catalog IDs and custom component definitions the client can render.\",\n        value: buildCatalogContextValue(catalog),\n      }),\n    );\n\n    if (this.#config.a2ui?.includeSchema === false) return;\n\n    this.#a2UIContextIds.push(\n      this.core.addContext({\n        description: A2UI_SCHEMA_CONTEXT_DESCRIPTION,\n        value: JSON.stringify(extractCatalogComponentSchemas(catalog)),\n      }),\n    );\n    this.#a2UIContextIds.push(\n      this.core.addContext({\n        description:\n          \"A2UI generation guidelines — protocol rules, tool arguments, path rules, data model format, and form/two-way-binding instructions.\",\n        value: A2UI_DEFAULT_GENERATION_GUIDELINES,\n      }),\n    );\n    this.#a2UIContextIds.push(\n      this.core.addContext({\n        description:\n          \"A2UI design guidelines — visual design rules, component hierarchy tips, and action handler patterns.\",\n        value: A2UI_DEFAULT_DESIGN_GUIDELINES,\n      }),\n    );\n  }\n\n  #removeA2UIContexts(): void {\n    for (const id of this.#a2UIContextIds) {\n      this.core.removeContext(id);\n    }\n    this.#a2UIContextIds = [];\n  }\n\n  #isOpenGenerativeUIActive(): boolean {\n    return !!this.#config.openGenerativeUI || this.core.openGenerativeUIEnabled;\n  }\n\n  #createOpenGenerativeUITool(): FrontendToolConfig<GenerateSandboxedUiArgs> & {\n    injector: Injector;\n  } {\n    return {\n      name: GENERATE_SANDBOXED_UI_TOOL_NAME,\n      description: GENERATE_SANDBOXED_UI_DESCRIPTION,\n      parameters: GenerateSandboxedUiArgsSchema,\n      component: CopilotOpenGenerativeUIToolRenderer,\n      handler: async () => \"UI generated\",\n      followUp: true,\n      injector: this.#rootInjector,\n    };\n  }\n\n  #syncBuiltInOpenGenerativeUI(): void {\n    const active = this.#isOpenGenerativeUIActive();\n\n    if (!active) {\n      this.#builtInClientToolCallRenderConfigs.set([]);\n      this.#removeOpenGenerativeUIContexts();\n      if (this.#openGenerativeUIToolRegistered) {\n        this.core.removeTool(GENERATE_SANDBOXED_UI_TOOL_NAME);\n        this.#openGenerativeUIToolRegistered = false;\n      }\n      return;\n    }\n\n    const builtInTool = this.#createOpenGenerativeUITool();\n    this.#builtInClientToolCallRenderConfigs.set([builtInTool]);\n\n    if (\n      !this.#openGenerativeUIToolRegistered &&\n      !this.core.getTool({ toolName: GENERATE_SANDBOXED_UI_TOOL_NAME })\n    ) {\n      this.core.addTool(this.#bindClientTool(builtInTool));\n      this.#openGenerativeUIToolRegistered = true;\n    }\n\n    this.#syncOpenGenerativeUIContexts();\n  }\n\n  #syncOpenGenerativeUIContexts(): void {\n    this.#removeOpenGenerativeUIContexts();\n\n    const designSkill =\n      this.#config.openGenerativeUI?.designSkill ??\n      DEFAULT_OPEN_GENERATIVE_UI_DESIGN_SKILL;\n    this.#openGenerativeUIContextIds.push(\n      this.core.addContext({\n        description:\n          \"Design guidelines for the generateSandboxedUi tool. Follow these when building UI.\",\n        value: designSkill,\n      }),\n    );\n\n    const sandboxFunctions =\n      this.#config.openGenerativeUI?.sandboxFunctions ?? [];\n    if (!sandboxFunctions.length) return;\n\n    const descriptors = JSON.stringify(\n      sandboxFunctions.map((fn) => ({\n        name: fn.name,\n        description: fn.description,\n        parameters: schemaToJsonSchema(fn.parameters, {\n          zodToJsonSchema: standardSchemaZodToJsonSchema,\n        }),\n      })),\n    );\n\n    this.#openGenerativeUIContextIds.push(\n      this.core.addContext({\n        description:\n          \"Sandbox functions available in generated sandboxed UI code. Call via: await Websandbox.connection.remote.<functionName>(args)\",\n        value: descriptors,\n      }),\n    );\n  }\n\n  #removeOpenGenerativeUIContexts(): void {\n    for (const id of this.#openGenerativeUIContextIds) {\n      this.core.removeContext(id);\n    }\n    this.#openGenerativeUIContextIds = [];\n  }\n\n  #bindHumanInTheLoopTool(\n    humanInTheLoopTool: HumanInTheLoopConfig,\n  ): FrontendTool {\n    return {\n      ...humanInTheLoopTool,\n      handler: (args, { toolCall }) => {\n        return this.#hitl.onResult(toolCall.id, humanInTheLoopTool.name);\n      },\n    };\n  }\n\n  addHumanInTheLoop(humanInTheLoopTool: HumanInTheLoopConfig): void {\n    this.#humanInTheLoopToolRenderConfigs.update((current) => [\n      ...current,\n      humanInTheLoopTool,\n    ]);\n\n    const tool = this.#bindHumanInTheLoopTool(humanInTheLoopTool);\n\n    this.core.addTool(tool);\n  }\n\n  addSuggestionsConfig(config: SuggestionsConfig): string {\n    return this.core.addSuggestionsConfig(config);\n  }\n\n  removeSuggestionsConfig(id: string): void {\n    this.core.removeSuggestionsConfig(id);\n  }\n\n  reloadSuggestions(agentId: string): void {\n    this.core.reloadSuggestions(agentId);\n  }\n\n  clearSuggestions(agentId: string): void {\n    this.core.clearSuggestions(agentId);\n  }\n\n  getSuggestions(agentId: string): CopilotKitCoreGetSuggestionsResult {\n    return (\n      this.#suggestionsByAgent()[agentId] ?? this.core.getSuggestions(agentId)\n    );\n  }\n\n  #isSameAgentId<T extends { agentId?: string }>(\n    target: T,\n    agentId?: string,\n  ): boolean {\n    if (agentId) {\n      return target.agentId === agentId;\n    }\n\n    return true;\n  }\n\n  removeTool(toolName: string, agentId?: string): void {\n    this.core.removeTool(toolName, agentId);\n    const keep = (config: { name: string; agentId?: string }) =>\n      config.name !== toolName ||\n      (agentId === undefined\n        ? !!config.agentId\n        : !this.#isSameAgentId(config, agentId));\n    this.#clientToolCallRenderConfigs.update((current) => current.filter(keep));\n    this.#humanInTheLoopToolRenderConfigs.update((current) =>\n      current.filter(keep),\n    );\n    this.#toolCallRenderConfigs.update((current) => current.filter(keep));\n  }\n\n  getAgent(agentId: string): AbstractAgent | undefined {\n    return this.core.getAgent(agentId);\n  }\n\n  updateRuntime(options: {\n    runtimeUrl?: string;\n    runtimeTransport?: CopilotRuntimeTransport;\n    headers?: Record<string, string>;\n    properties?: Record<string, unknown>;\n    agents?: Record<string, AbstractAgent>;\n    selfManagedAgents?: Record<string, AbstractAgent>;\n  }): void {\n    if (options.runtimeUrl !== undefined) {\n      this.core.setRuntimeUrl(options.runtimeUrl);\n      this.#runtimeUrl.set(options.runtimeUrl);\n    }\n    if (options.runtimeTransport !== undefined) {\n      this.core.setRuntimeTransport(options.runtimeTransport);\n      this.#runtimeTransport.set(options.runtimeTransport);\n    }\n    if (options.headers !== undefined) {\n      this.core.setHeaders(options.headers);\n      this.#headers.set(options.headers);\n    }\n    if (options.properties !== undefined) {\n      this.core.setProperties(\n        withA2UICatalogCapability(\n          options.properties,\n          this.#config.a2ui?.catalog !== undefined,\n        ) ?? options.properties,\n      );\n    }\n    if (\n      options.agents !== undefined ||\n      options.selfManagedAgents !== undefined\n    ) {\n      this.core.setAgents__unsafe_dev_only({\n        ...(options.agents ?? this.#config.agents),\n        ...(options.selfManagedAgents ?? this.#config.selfManagedAgents),\n      });\n    }\n  }\n}\n","import { DestroyRef, Injector, Signal, Type, inject } from \"@angular/core\";\nimport type { AbstractAgent } from \"@ag-ui/client\";\nimport { FrontendTool, FrontendToolHandlerContext } from \"@copilotkit/core\";\nimport type { StandardSchemaV1 } from \"@copilotkit/shared\";\nimport { CopilotKit } from \"./copilotkit\";\n\nexport type AngularToolCall<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n> =\n  | {\n      name?: string;\n      args: Partial<Args>;\n      status: \"in-progress\";\n      result: undefined;\n    }\n  | {\n      name?: string;\n      args: Args;\n      status: \"executing\";\n      result: undefined;\n    }\n  | {\n      name?: string;\n      args: Args;\n      status: \"complete\";\n      result: string;\n    };\n\nexport type HumanInTheLoopToolCall<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n> =\n  | {\n      name?: string;\n      args: Partial<Args>;\n      status: \"in-progress\";\n      result: undefined;\n      respond: (result: unknown) => void;\n    }\n  | {\n      name?: string;\n      args: Args;\n      status: \"executing\";\n      result: undefined;\n      respond: (result: unknown) => void;\n    }\n  | {\n      name?: string;\n      args: Args;\n      status: \"complete\";\n      result: string;\n      respond: (result: unknown) => void;\n    };\n\nexport interface ToolRenderer<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n> {\n  toolCall: Signal<AngularToolCall<Args>>;\n  agent?: Signal<AbstractAgent | undefined>;\n}\n\nexport interface HumanInTheLoopToolRenderer<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n> {\n  toolCall: Signal<HumanInTheLoopToolCall<Args>>;\n}\n\nexport type ClientTool<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n> = Omit<FrontendTool<Args>, \"handler\"> & {\n  renderer?: Type<ToolRenderer<Args>>;\n};\n\nexport interface RenderToolCallConfig<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n> {\n  name: string;\n  args: StandardSchemaV1<unknown, Args>;\n  component: Type<ToolRenderer<Args>>;\n  agentId?: string;\n  passAgent?: boolean;\n}\n\nexport interface FrontendToolConfig<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n> {\n  name: string;\n  description: string;\n  parameters: StandardSchemaV1<unknown, Args>;\n  component?: Type<ToolRenderer<Args>>;\n  handler: (\n    args: Args,\n    context: FrontendToolHandlerContext,\n  ) => Promise<unknown>;\n  followUp?: boolean;\n  agentId?: string;\n}\n\nexport interface HumanInTheLoopConfig<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n> {\n  name: string;\n  description: string;\n  parameters: StandardSchemaV1<unknown, Args>;\n  component: Type<HumanInTheLoopToolRenderer<Args>>;\n  agentId?: string;\n}\n\nexport function registerRenderToolCall<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n>(renderToolCall: RenderToolCallConfig<Args>): void {\n  const copilotKit = inject(CopilotKit);\n  const destroyRef = inject(DestroyRef);\n\n  copilotKit.addRenderToolCall(renderToolCall);\n\n  destroyRef.onDestroy(() => {\n    copilotKit.removeTool(renderToolCall.name, renderToolCall.agentId);\n  });\n}\n\nexport function registerFrontendTool<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n>(frontendTool: FrontendToolConfig<Args>): void {\n  const injector = inject(Injector);\n  const destroyRef = inject(DestroyRef);\n  const copilotKit = inject(CopilotKit);\n\n  copilotKit.addFrontendTool({\n    ...(frontendTool as FrontendToolConfig),\n    injector,\n  });\n\n  destroyRef.onDestroy(() => {\n    copilotKit.removeTool(frontendTool.name, frontendTool.agentId);\n  });\n}\n\nexport function registerHumanInTheLoop<\n  Args extends Record<string, unknown> = Record<string, unknown>,\n>(humanInTheLoop: HumanInTheLoopConfig<Args>): void {\n  const destroyRef = inject(DestroyRef);\n  const copilotKit = inject(CopilotKit);\n\n  copilotKit.addHumanInTheLoop(humanInTheLoop);\n\n  destroyRef.onDestroy(() => {\n    copilotKit.removeTool(humanInTheLoop.name, humanInTheLoop.agentId);\n  });\n}\n","import { NgComponentOutlet } from \"@angular/common\";\nimport { Component, inject, input } from \"@angular/core\";\nimport {\n  AssistantMessage,\n  Message,\n  ToolCall,\n  ToolMessage,\n} from \"@ag-ui/client\";\nimport type { AbstractAgent } from \"@ag-ui/client\";\nimport { CopilotKit } from \"./copilotkit\";\nimport {\n  FrontendToolConfig,\n  HumanInTheLoopToolCall,\n  HumanInTheLoopConfig,\n  AngularToolCall,\n  RenderToolCallConfig,\n} from \"./tools\";\nimport { partialJSONParse } from \"@copilotkit/shared\";\nimport { HumanInTheLoop } from \"./human-in-the-loop\";\nimport { CopilotDefaultToolRenderer } from \"./components/tools/default-tool-renderer\";\n\ntype RendererToolCallHandler = {\n  type: \"renderer\";\n  config: RenderToolCallConfig;\n};\ntype ClientToolCallHandler = {\n  type: \"clientTool\";\n  config: FrontendToolConfig;\n};\ntype HumanInTheLoopToolCallHandler = {\n  type: \"humanInTheLoopTool\";\n  config: HumanInTheLoopConfig;\n};\ntype BuiltInToolCallHandler = {\n  type: \"builtIn\";\n  config: { component: typeof CopilotDefaultToolRenderer };\n};\n\nexport type ToolCallHandler =\n  | RendererToolCallHandler\n  | ClientToolCallHandler\n  | HumanInTheLoopToolCallHandler\n  | BuiltInToolCallHandler;\n\n/** Parse tool-call arguments without allowing malformed payloads to escape. */\nexport function parseToolCallArguments(\n  rawArguments: string,\n  allowPartial = false,\n): Record<string, unknown> {\n  try {\n    const parsed = allowPartial\n      ? partialJSONParse(rawArguments)\n      : JSON.parse(rawArguments);\n\n    if (\n      typeof parsed === \"object\" &&\n      parsed !== null &&\n      !Array.isArray(parsed)\n    ) {\n      return parsed as Record<string, unknown>;\n    }\n\n    return { _value: parsed };\n  } catch {\n    return { _raw: rawArguments };\n  }\n}\n\ninterface PickToolCallHandlerOptions {\n  name: string;\n  agentId?: string;\n  application: readonly RenderToolCallConfig[];\n  frontend: readonly FrontendToolConfig[];\n  humanInTheLoop: readonly HumanInTheLoopConfig[];\n  builtInFallback: boolean;\n}\n\nfunction namedForAgent<T extends { name: string; agentId?: string }>(\n  entries: readonly T[],\n  name: string,\n  agentId: string | undefined,\n): T | undefined {\n  const scoped =\n    agentId === undefined\n      ? undefined\n      : entries.find(\n          (entry) => entry.name === name && entry.agentId === agentId,\n        );\n  return (\n    scoped ?? entries.find((entry) => entry.name === name && !entry.agentId)\n  );\n}\n\n/** Resolve the documented application/frontend/wildcard/fallback precedence. */\nexport function pickToolCallHandler(\n  options: PickToolCallHandlerOptions,\n): ToolCallHandler | undefined {\n  const application = namedForAgent(\n    options.application.filter((entry) => entry.name !== \"*\"),\n    options.name,\n    options.agentId,\n  );\n  if (application) return { type: \"renderer\", config: application };\n\n  const frontend = namedForAgent(\n    options.frontend.filter((entry) => entry.component !== undefined),\n    options.name,\n    options.agentId,\n  );\n  if (frontend) return { type: \"clientTool\", config: frontend };\n\n  const humanInTheLoop = namedForAgent(\n    options.humanInTheLoop,\n    options.name,\n    options.agentId,\n  );\n  if (humanInTheLoop) {\n    return { type: \"humanInTheLoopTool\", config: humanInTheLoop };\n  }\n\n  const wildcard = namedForAgent(\n    options.application.filter((entry) => entry.name === \"*\"),\n    \"*\",\n    options.agentId,\n  );\n  if (wildcard) return { type: \"renderer\", config: wildcard };\n  if (options.builtInFallback) {\n    return {\n      type: \"builtIn\",\n      config: { component: CopilotDefaultToolRenderer },\n    };\n  }\n  return undefined;\n}\n\n@Component({\n  selector: \"copilot-render-tool-calls\",\n  imports: [NgComponentOutlet],\n  template: `\n    @for (toolCall of message().toolCalls ?? []; track toolCall.id) {\n      @let renderConfig = pickRenderer(toolCall.function.name);\n      @if (\n        renderConfig &&\n        renderConfig.type !== \"humanInTheLoopTool\" &&\n        renderConfig.config.component\n      ) {\n        <ng-container\n          *ngComponentOutlet=\"\n            renderConfig.config.component;\n            inputs: buildRendererInputs(toolCall, renderConfig)\n          \"\n        />\n      }\n      @if (\n        renderConfig &&\n        renderConfig.type === \"humanInTheLoopTool\" &&\n        renderConfig.config.component\n      ) {\n        <ng-container\n          *ngComponentOutlet=\"\n            renderConfig.config.component;\n            inputs: { toolCall: buildHumanInTheLoopToolCall(toolCall) }\n          \"\n        />\n      }\n    }\n  `,\n})\nexport class RenderToolCalls {\n  readonly #copilotKit = inject(CopilotKit);\n  readonly #hitl = inject(HumanInTheLoop);\n  readonly message = input.required<AssistantMessage>();\n  readonly messages = input.required<Message[]>();\n  readonly isLoading = input<boolean>(false);\n  readonly agentId = input<string | undefined>();\n\n  protected pickRenderer(name: string): ToolCallHandler | undefined {\n    type AssistantMessageWithAgent = AssistantMessage & {\n      agentId?: string;\n    };\n    const messageAgentId = (this.message() as AssistantMessageWithAgent)\n      .agentId;\n    const renderers = this.#copilotKit.toolCallRenderConfigs();\n    const clientTools = this.#copilotKit.clientToolCallRenderConfigs();\n    const humanInTheLoopTools =\n      this.#copilotKit.humanInTheLoopToolRenderConfigs();\n\n    return pickToolCallHandler({\n      name,\n      agentId: this.agentId() ?? messageAgentId,\n      application: renderers,\n      frontend: clientTools,\n      humanInTheLoop: humanInTheLoopTools,\n      builtInFallback: this.#copilotKit.defaultToolRenderingEnabled,\n    });\n  }\n\n  protected buildToolCall<Args extends Record<string, unknown>>(\n    toolCall: ToolCall,\n  ): AngularToolCall<Args> {\n    const args = parseToolCallArguments(\n      toolCall.function.arguments,\n      this.isLoading(),\n    ) as Args;\n    const message = this.#getToolMessage(toolCall.id);\n\n    if (message) {\n      return {\n        name: toolCall.function.name,\n        args,\n        status: \"complete\",\n        result: message.content,\n      };\n    } else if (this.isLoading()) {\n      return {\n        name: toolCall.function.name,\n        args,\n        status: \"in-progress\",\n        result: undefined,\n      };\n    } else {\n      return {\n        name: toolCall.function.name,\n        args,\n        status: \"executing\",\n        result: undefined,\n      };\n    }\n  }\n\n  protected buildRendererInputs<Args extends Record<string, unknown>>(\n    toolCall: ToolCall,\n    handler:\n      | RendererToolCallHandler\n      | ClientToolCallHandler\n      | BuiltInToolCallHandler,\n  ): {\n    toolCall: AngularToolCall<Args>;\n    agent?: AbstractAgent;\n  } {\n    const inputs: {\n      toolCall: AngularToolCall<Args>;\n      agent?: AbstractAgent;\n    } = {\n      toolCall: this.buildToolCall<Args>(toolCall),\n    };\n\n    const shouldPassAgent =\n      \"passAgent\" in handler.config && handler.config.passAgent === true;\n\n    if (!shouldPassAgent) {\n      return inputs;\n    }\n\n    const agentId = this.agentId() ?? this.#messageAgentId();\n    if (!agentId) {\n      return inputs;\n    }\n\n    const agent = this.#copilotKit.getAgent(agentId);\n    if (agent) {\n      inputs.agent = agent;\n    }\n\n    return inputs;\n  }\n\n  protected buildHumanInTheLoopToolCall<Args extends Record<string, unknown>>(\n    toolCall: ToolCall,\n  ): HumanInTheLoopToolCall<Args> {\n    const args = parseToolCallArguments(\n      toolCall.function.arguments,\n      this.isLoading(),\n    ) as Args;\n    const message = this.#getToolMessage(toolCall.id);\n    const respond = (result: unknown) => {\n      this.#hitl.addResult(toolCall.id, toolCall.function.name, result);\n    };\n\n    if (message) {\n      return {\n        name: toolCall.function.name,\n        args,\n        status: \"complete\",\n        result: message.content!,\n        respond,\n      };\n    } else if (this.isLoading()) {\n      return {\n        name: toolCall.function.name,\n        args,\n        status: \"in-progress\",\n        result: undefined,\n        respond,\n      };\n    } else {\n      return {\n        name: toolCall.function.name,\n        args,\n        status: \"executing\",\n        result: undefined,\n        respond,\n      };\n    }\n  }\n\n  #getToolMessage(toolCallId: string): ToolMessage | undefined {\n    const message = this.messages().find(\n      (m): m is ToolMessage => m.role === \"tool\" && m.toolCallId === toolCallId,\n    );\n\n    return message;\n  }\n\n  #messageAgentId(): string | undefined {\n    return (this.message() as AssistantMessage & { agentId?: string }).agentId;\n  }\n}\n","import type { Signal, WritableSignal } from \"@angular/core\";\nimport {\n  DestroyRef,\n  Injectable,\n  inject,\n  signal,\n  computed,\n  untracked,\n} from \"@angular/core\";\nimport { CopilotKit } from \"./copilotkit\";\nimport type { AbstractAgent } from \"@ag-ui/client\";\nimport type { AgentSubscriber, Message, State } from \"@ag-ui/client\";\nimport { DEFAULT_AGENT_ID } from \"@copilotkit/shared\";\nimport type { CopilotKitCore } from \"@copilotkit/core\";\nimport {\n  ProxiedCopilotRuntimeAgent,\n  CopilotKitCoreRuntimeConnectionStatus,\n} from \"@copilotkit/core\";\n\n/** Function signature for subscribing to an agent — derived from\n *  CopilotKitCore so the types stay in sync automatically. Injected\n *  by the factory so that AgentStore stays decoupled from the concrete class. */\ntype SubscribeToAgentFn = CopilotKitCore[\"subscribeToAgentWithOptions\"];\ntype AgentWithHeaders = AbstractAgent & { headers?: Record<string, string> };\n\nfunction hasAgentHeaders(agent: AbstractAgent): agent is AgentWithHeaders {\n  return \"headers\" in agent;\n}\n\nexport class AgentStore {\n  readonly #subscription?: {\n    unsubscribe: () => void;\n  };\n  readonly #isRunning: WritableSignal<boolean>;\n  readonly #messages: WritableSignal<Message[]>;\n  readonly #state: WritableSignal<unknown>;\n\n  readonly agent: AbstractAgent;\n  readonly isRunning: Signal<boolean>;\n  readonly messages: Signal<Message[]>;\n  readonly state: Signal<unknown>;\n\n  constructor(\n    abstractAgent: AbstractAgent,\n    destroyRef: DestroyRef,\n    subscribeToAgent: SubscribeToAgentFn,\n  ) {\n    this.agent = abstractAgent;\n    // A connected agent can already carry restored thread data before this\n    // store subscribes. Seed the signals synchronously so the first render is\n    // complete instead of waiting for a future mutation that may never occur.\n    this.#isRunning = signal(abstractAgent.isRunning);\n    this.isRunning = this.#isRunning.asReadonly();\n    this.#messages = signal([...abstractAgent.messages]);\n    this.#state = signal(snapshotState(abstractAgent.state));\n    this.messages = this.#messages.asReadonly();\n    this.state = this.#state.asReadonly();\n\n    this.#subscription = subscribeToAgent(abstractAgent, {\n      onMessagesChanged: () => {\n        this.#isRunning.set(abstractAgent.isRunning);\n        this.#messages.set([...abstractAgent.messages]);\n      },\n      onStateChanged: () => {\n        this.#isRunning.set(abstractAgent.isRunning);\n        this.#state.set(snapshotState(abstractAgent.state));\n      },\n      onRunInitialized: () => {\n        this.#isRunning.set(true);\n      },\n      onRunFinalized: () => {\n        this.#isRunning.set(false);\n      },\n      onRunFailed: () => {\n        this.#isRunning.set(false);\n      },\n      // Protocol-level RUN_ERROR event (distinct from onRunFailed which\n      // handles local exceptions like network errors).\n      onRunErrorEvent: () => {\n        this.#isRunning.set(false);\n      },\n    });\n\n    destroyRef.onDestroy(() => {\n      this.teardown();\n    });\n  }\n\n  teardown(): void {\n    if (this.#subscription) {\n      this.#subscription.unsubscribe();\n    }\n  }\n}\n\nfunction snapshotState(state: unknown): unknown {\n  if (Array.isArray(state)) return [...state];\n  if (state !== null && typeof state === \"object\") return { ...state };\n  return state;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class CopilotkitAgentFactory {\n  readonly #copilotkit = inject(CopilotKit);\n  readonly #provisionalCache = new Map<string, AgentHandoffBridge>();\n\n  createAgentStoreSignal(\n    agentId: Signal<string | undefined>,\n    destroyRef: DestroyRef,\n  ): Signal<AgentStore> {\n    let lastAgentStore: AgentStore | undefined;\n    let lastAgent: AbstractAgent | undefined;\n    const subscribeToAgent: SubscribeToAgentFn =\n      this.#copilotkit.core.subscribeToAgentWithOptions.bind(\n        this.#copilotkit.core,\n      );\n\n    const resolveAgent = (): AbstractAgent => {\n      const resolvedAgentId = agentId() || DEFAULT_AGENT_ID;\n      const existing = this.#copilotkit.getAgent(resolvedAgentId);\n      if (existing) {\n        const handoff = this.#provisionalCache.get(resolvedAgentId);\n        if (handoff && handoff.provisional !== existing) {\n          // Runtime discovery invalidates this computed. Handoff mirroring can\n          // synchronously notify the provisional store, whose subscriber must\n          // update signals outside the computed's read-only reactive context.\n          untracked(() => handoff.attachRegistered(existing));\n        }\n        this.#provisionalCache.delete(resolvedAgentId);\n        return existing;\n      }\n\n      const runtimeUrl = this.#copilotkit.runtimeUrl();\n      const isRuntimeConfigured = runtimeUrl !== undefined;\n      const { runtimeConnectionStatus } = this.#copilotkit.core;\n\n      if (\n        isRuntimeConfigured &&\n        (runtimeConnectionStatus ===\n          CopilotKitCoreRuntimeConnectionStatus.Disconnected ||\n          runtimeConnectionStatus ===\n            CopilotKitCoreRuntimeConnectionStatus.Connecting ||\n          runtimeConnectionStatus ===\n            CopilotKitCoreRuntimeConnectionStatus.Error)\n      ) {\n        const headers = this.#copilotkit.headers();\n        const cached = this.#provisionalCache.get(resolvedAgentId);\n        if (cached) {\n          if (hasAgentHeaders(cached.provisional)) {\n            cached.provisional.headers = { ...headers };\n          }\n          return cached.provisional;\n        }\n\n        const provisional = new ProxiedCopilotRuntimeAgent({\n          runtimeUrl,\n          agentId: resolvedAgentId,\n          transport: this.#copilotkit.runtimeTransport(),\n        });\n        if (hasAgentHeaders(provisional)) {\n          provisional.headers = { ...headers };\n        }\n        const handoff = new AgentHandoffBridge(provisional);\n        this.#provisionalCache.set(resolvedAgentId, handoff);\n        return provisional;\n      }\n\n      const knownAgents = Object.keys(this.#copilotkit.agents() ?? {});\n      const runtimePart = isRuntimeConfigured\n        ? `runtimeUrl=${runtimeUrl}`\n        : \"no runtimeUrl\";\n      throw new Error(\n        `injectAgentStore: Agent '${resolvedAgentId}' not found after runtime sync (${runtimePart}). ` +\n          (knownAgents.length\n            ? `Known agents: [${knownAgents.join(\", \")}]`\n            : \"No agents registered.\") +\n          \" Verify your runtime /info and/or agents__unsafe_dev_only.\",\n      );\n    };\n\n    return computed(() => {\n      this.#copilotkit.agents();\n      this.#copilotkit.runtimeConnectionStatus();\n      this.#copilotkit.runtimeUrl();\n      this.#copilotkit.runtimeTransport();\n      this.#copilotkit.headers();\n\n      const agent = resolveAgent();\n\n      if (lastAgentStore && lastAgent === agent) {\n        return lastAgentStore;\n      }\n\n      lastAgentStore?.teardown();\n      lastAgent = agent;\n      lastAgentStore = new AgentStore(agent, destroyRef, subscribeToAgent);\n      const resolvedAgentId = agentId() || DEFAULT_AGENT_ID;\n      const handoff = this.#provisionalCache.get(resolvedAgentId);\n      if (handoff?.provisional === agent) {\n        handoff.start();\n      }\n      return lastAgentStore;\n    });\n  }\n}\n\ntype HandoffSide = \"provisional\" | \"registered\";\ntype HandoffChannel = \"messages\" | \"state\";\n\nclass AgentHandoffBridge {\n  readonly #provisional: AbstractAgent;\n  #provisionalSubscription?: { unsubscribe: () => void };\n  #registered?: AbstractAgent;\n  #registeredSubscription?: { unsubscribe: () => void };\n  readonly #suppressed: Record<HandoffSide, Record<HandoffChannel, number>> = {\n    provisional: { messages: 0, state: 0 },\n    registered: { messages: 0, state: 0 },\n  };\n\n  constructor(provisional: AbstractAgent) {\n    this.#provisional = provisional;\n  }\n\n  get provisional(): AbstractAgent {\n    return this.#provisional;\n  }\n\n  /**\n   * Subscribe before a provisional run starts. AG-UI snapshots subscribers at\n   * run initialization, so a bridge added only after runtime discovery cannot\n   * observe the remainder of an already-active run. Re-subscribing after each\n   * store is created also keeps the bridge last in the live subscriber list,\n   * so mirrored updates reach every consumer synchronously before suppression.\n   */\n  start(): void {\n    this.#provisionalSubscription?.unsubscribe();\n    this.#provisionalSubscription = this.#provisional.subscribe(\n      this.#subscriber(\n        this.#provisional,\n        () => this.#registered,\n        \"provisional\",\n        \"registered\",\n      ),\n    );\n  }\n\n  /** Attach the identity published by runtime discovery and synchronize it. */\n  attachRegistered(registered: AbstractAgent): void {\n    if (this.#registered === registered) return;\n    this.#registeredSubscription?.unsubscribe();\n    this.#registered = registered;\n    this.#registeredSubscription = registered.subscribe(\n      this.#subscriber(\n        registered,\n        () => this.#provisional,\n        \"registered\",\n        \"provisional\",\n      ),\n    );\n\n    if (hasAgentSessionData(this.#provisional)) {\n      this.#mirrorMessages(this.#provisional, registered, \"registered\");\n      this.#mirrorState(this.#provisional, registered, \"registered\");\n      return;\n    }\n\n    this.#mirrorMessages(registered, this.#provisional, \"provisional\");\n    this.#mirrorState(registered, this.#provisional, \"provisional\");\n  }\n\n  #subscriber(\n    source: AbstractAgent,\n    resolveTarget: () => AbstractAgent | undefined,\n    sourceSide: HandoffSide,\n    targetSide: HandoffSide,\n  ): AgentSubscriber {\n    const mirrorRunStatus = (): void => {\n      const target = resolveTarget();\n      if (!target) return;\n      this.#mirrorRunStatus(source, target, targetSide);\n    };\n    return {\n      onMessagesChanged: () => {\n        if (this.#consumeSuppression(sourceSide, \"messages\")) return;\n        const target = resolveTarget();\n        if (!target) return;\n        this.#mirrorMessages(source, target, targetSide);\n      },\n      onStateChanged: () => {\n        if (this.#consumeSuppression(sourceSide, \"state\")) return;\n        const target = resolveTarget();\n        if (!target) return;\n        this.#mirrorState(source, target, targetSide);\n      },\n      onRunInitialized: mirrorRunStatus,\n      onRunFinalized: mirrorRunStatus,\n      onRunFailed: mirrorRunStatus,\n      onRunErrorEvent: mirrorRunStatus,\n    };\n  }\n\n  #mirrorMessages(\n    source: AbstractAgent,\n    target: AbstractAgent,\n    targetSide: HandoffSide,\n  ): void {\n    this.#suppress(targetSide, \"messages\");\n    this.#syncMetadata(source, target);\n    target.setMessages([...source.messages]);\n  }\n\n  #mirrorState(\n    source: AbstractAgent,\n    target: AbstractAgent,\n    targetSide: HandoffSide,\n  ): void {\n    this.#suppress(targetSide, \"state\");\n    this.#syncMetadata(source, target);\n    target.setState(snapshotState(source.state) as State);\n  }\n\n  #mirrorRunStatus(\n    source: AbstractAgent,\n    target: AbstractAgent,\n    targetSide: HandoffSide,\n  ): void {\n    this.#suppress(targetSide, \"state\");\n    this.#syncMetadata(source, target);\n    target.setState(snapshotState(target.state) as State);\n  }\n\n  #syncMetadata(source: AbstractAgent, target: AbstractAgent): void {\n    target.isRunning = source.isRunning;\n    target.threadId = source.threadId;\n  }\n\n  #suppress(side: HandoffSide, channel: HandoffChannel): void {\n    this.#suppressed[side][channel]++;\n  }\n\n  #consumeSuppression(side: HandoffSide, channel: HandoffChannel): boolean {\n    if (this.#suppressed[side][channel] === 0) return false;\n    this.#suppressed[side][channel]--;\n    return true;\n  }\n}\n\n/** Return whether a provisional agent already owns observable session data. */\nfunction hasAgentSessionData(agent: AbstractAgent): boolean {\n  if (agent.isRunning || agent.messages.length > 0) return true;\n  const state = agent.state;\n  return (\n    state !== null && typeof state === \"object\" && Object.keys(state).length > 0\n  );\n}\n\nexport function injectAgentStore(\n  agentId: string | Signal<string | undefined>,\n): Signal<AgentStore> {\n  const agentFactory = inject(CopilotkitAgentFactory);\n  const destroyRef = inject(DestroyRef);\n  const agentIdSignal =\n    typeof agentId === \"function\" ? agentId : computed(() => agentId);\n\n  return agentFactory.createAgentStoreSignal(agentIdSignal, destroyRef);\n}\n","import {\n  InjectionToken,\n  Injectable,\n  inject,\n  computed,\n  signal,\n} from \"@angular/core\";\nimport type { Provider, Signal } from \"@angular/core\";\nimport { DEFAULT_AGENT_ID, randomUUID } from \"@copilotkit/shared\";\n\n/**\n * Options for configuring the CopilotChat session.\n * Mirrors the React CopilotChatConfigurationProvider props so behaviour\n * is consistent across frameworks.\n */\nexport interface CopilotChatConfigurationOptions {\n  /**\n   * The agent id to connect to.\n   * When omitted the runtime's default agent is used.\n   */\n  agentId?: string;\n\n  /**\n   * An explicit thread id to resume.\n   * When provided the session joins the existing thread instead of starting a\n   * new one.\n   */\n  threadId?: string;\n\n  /**\n   * Whether the thread id was supplied explicitly by the host application.\n   * Defaults to `false`, which seeds a non-explicit thread id that the runtime\n   * may override.\n   */\n  hasExplicitThreadId?: boolean;\n}\n\n/**\n * Angular service that holds the runtime chat configuration state.\n *\n * Active-thread resolution mirrors the React\n * `CopilotChatConfigurationProvider` precedence (prop → override → minted)\n * without parent-provider branches (PR1 has no nested providers).\n */\n@Injectable()\nexport class CopilotChatConfiguration {\n  readonly #options = inject(COPILOT_CHAT_CONFIGURATION_OPTIONS);\n\n  /** Imperative override set by internal runtime helpers (e.g. thread-switch). */\n  readonly #override = signal<{ threadId: string; explicit: boolean } | null>(\n    null,\n  );\n\n  /**\n   * Auto-minted UUID used when neither a prop-driven nor an imperative\n   * override thread id is present.  Generated once per service instance.\n   */\n  readonly #mintedFallback = randomUUID();\n\n  /**\n   * Whether the host application is driving `threadId` authoritatively.\n   * A prop-driven `threadId` without an explicit `hasExplicitThreadId: false`\n   * override locks the session to that value and prevents imperative overrides.\n   */\n  readonly #propIsAuthoritative =\n    this.#options.threadId !== undefined &&\n    this.#options.hasExplicitThreadId !== false;\n\n  /**\n   * The resolved agent id for this chat session.\n   * Falls back to {@link DEFAULT_AGENT_ID} when no agent id is provided.\n   */\n  readonly agentId: Signal<string> = computed(\n    () => this.#options.agentId ?? DEFAULT_AGENT_ID,\n  );\n\n  /**\n   * The resolved thread id for this chat session.\n   *\n   * Precedence (highest → lowest):\n   * 1. Prop-driven `threadId` when `#propIsAuthoritative` is true.\n   * 2. Imperative `#override` set by internal helpers.\n   * 3. Non-authoritative seed `threadId` from options.\n   * 4. Auto-minted UUID fallback.\n   */\n  readonly threadId: Signal<string> = computed(() => {\n    if (this.#propIsAuthoritative) {\n      return this.#options.threadId as string;\n    }\n    const o = this.#override();\n    if (o) {\n      return o.threadId;\n    }\n    if (this.#options.threadId) {\n      return this.#options.threadId;\n    }\n    return this.#mintedFallback;\n  });\n\n  /**\n   * Whether the current thread id was supplied explicitly by the host\n   * application (as opposed to being auto-minted or seeded without intent).\n   */\n  readonly hasExplicitThreadId: Signal<boolean> = computed(() => {\n    if (this.#propIsAuthoritative) {\n      return true;\n    }\n    return (\n      this.#override()?.explicit ?? this.#options.hasExplicitThreadId ?? false\n    );\n  });\n\n  /** Returns `true` when the host application controls the thread id via props. */\n  protected get isControlled(): boolean {\n    return this.#propIsAuthoritative;\n  }\n\n  /**\n   * Sets an imperative thread override.  No-ops when the session is\n   * controlled by the host application via props.\n   *\n   * @param threadId - The thread id to activate.\n   * @param explicit - Whether the override represents a deliberate user choice.\n   */\n  protected _setOverride(threadId: string, explicit: boolean): void {\n    if (this.isControlled) {\n      return;\n    }\n    this.#override.set({ threadId, explicit });\n  }\n\n  /**\n   * Switches the active thread to the given id.\n   *\n   * By default the switch is treated as an explicit user-driven choice\n   * (`explicit` defaults to `true`).  Pass `{ explicit: false }` to mark it as\n   * a non-explicit seed that the runtime may replace.\n   *\n   * No-ops when the threadId is controlled by the host application via props.\n   *\n   * @param threadId - The thread id to activate.\n   * @param options - Optional overrides; `explicit` defaults to `true`.\n   */\n  setActiveThreadId(threadId: string, options?: { explicit?: boolean }): void {\n    this._setOverride(threadId, options?.explicit ?? true);\n  }\n\n  /**\n   * Abandons the current thread and starts a fresh one by minting a new UUID.\n   *\n   * The new thread is marked as non-explicit so the runtime may assign a\n   * server-side thread id once the first message is sent.\n   *\n   * No-ops when the threadId is controlled by the host application via props.\n   */\n  startNewThread(): void {\n    this._setOverride(randomUUID(), false);\n  }\n\n  // ─── Drawer open-state coordination ──────────────────────────────────────\n  // Consumed by CopilotThreadsDrawer to drive the element's controlled `open`\n  // property and to announce drawer presence (so a future header launcher can\n  // render). A future popup/sidebar can additionally use these for mobile\n  // mutual-exclusion between the drawer and other overlays.\n\n  /** Tracks whether the drawer open-state is currently `true`. */\n  readonly #drawerOpen = signal(false);\n\n  /** Count of registered drawer instances. Used to derive {@link drawerRegistered}. */\n  readonly #drawerCount = signal(0);\n\n  /**\n   * Read-only signal reflecting the current drawer open-state.\n   *\n   * @remarks\n   * Consumed by {@link CopilotThreadsDrawer} to drive the element's controlled\n   * `open` property; a future popup or sidebar component may also toggle it to\n   * implement mobile mutual-exclusion between the drawer and other overlays.\n   */\n  readonly drawerOpen = this.#drawerOpen.asReadonly();\n\n  /**\n   * Sets the drawer open-state imperatively.\n   *\n   * @remarks\n   * Called by {@link CopilotThreadsDrawer} in response to the element's\n   * `open-change` event to keep the shared open-state coordinated.\n   *\n   * @param open - `true` to mark the drawer as open, `false` to close it.\n   */\n  setDrawerOpen(open: boolean): void {\n    this.#drawerOpen.set(open);\n  }\n\n  /**\n   * Computed signal that is `true` when at least one drawer instance has\n   * registered itself via {@link registerDrawer}.\n   */\n  readonly drawerRegistered = computed(() => this.#drawerCount() > 0);\n\n  /**\n   * Registers a drawer instance and returns an idempotent unregister function.\n   *\n   * Increments the internal drawer count so that {@link drawerRegistered}\n   * becomes `true`. The returned function decrements the count when called;\n   * calling it more than once is safe — subsequent calls are no-ops (guarded\n   * by an `active` flag, floor at 0).\n   *\n   * @remarks\n   * Called by {@link CopilotThreadsDrawer} on construction with cleanup on\n   * destroy. Intended for future popup/sidebar coordination as well.\n   *\n   * @returns An idempotent cleanup function that unregisters this drawer.\n   */\n  registerDrawer(): () => void {\n    this.#drawerCount.update((n) => n + 1);\n    let active = true;\n    return () => {\n      if (!active) return;\n      active = false;\n      this.#drawerCount.update((n) => Math.max(0, n - 1));\n    };\n  }\n}\n\n/**\n * Injection token for the {@link CopilotChatConfiguration} service instance.\n * Use {@link injectChatConfiguration} to retrieve it from the injector.\n */\nexport const COPILOT_CHAT_CONFIGURATION =\n  new InjectionToken<CopilotChatConfiguration>(\"COPILOT_CHAT_CONFIGURATION\");\n\n/**\n * Injection token for the raw {@link CopilotChatConfigurationOptions} value\n * supplied to {@link provideCopilotChatConfiguration}.\n */\nexport const COPILOT_CHAT_CONFIGURATION_OPTIONS =\n  new InjectionToken<CopilotChatConfigurationOptions>(\n    \"COPILOT_CHAT_CONFIGURATION_OPTIONS\",\n  );\n\n/**\n * Registers the {@link CopilotChatConfiguration} service and its options into\n * the current injector.\n *\n * `CopilotChatConfiguration` is registered as the canonical class provider.\n * `COPILOT_CHAT_CONFIGURATION` is aliased to the same instance via\n * `useExisting`, so both `inject(COPILOT_CHAT_CONFIGURATION)` (via\n * {@link injectChatConfiguration}) and a direct `inject(CopilotChatConfiguration)`\n * resolve to the **same object** with shared signal state.\n *\n * @param options - Optional chat configuration overrides.\n * @returns An array of Angular providers to pass to `providers` or\n *   `TestBed.configureTestingModule`.\n */\nexport function provideCopilotChatConfiguration(\n  options: CopilotChatConfigurationOptions = {},\n): Provider[] {\n  return [\n    { provide: COPILOT_CHAT_CONFIGURATION_OPTIONS, useValue: options },\n    CopilotChatConfiguration,\n    {\n      provide: COPILOT_CHAT_CONFIGURATION,\n      useExisting: CopilotChatConfiguration,\n    },\n  ];\n}\n\n/**\n * Retrieves the {@link CopilotChatConfiguration} service from the current\n * injection context.\n *\n * Must be called inside an injection context (component constructor, factory\n * function, or `TestBed.runInInjectionContext`).\n */\nexport function injectChatConfiguration(): CopilotChatConfiguration {\n  return inject(COPILOT_CHAT_CONFIGURATION);\n}\n","import type { Signal } from \"@angular/core\";\nimport { DestroyRef, computed, effect, inject, signal } from \"@angular/core\";\nimport { randomUUID } from \"@ag-ui/client\";\nimport type {\n  AbstractAgent,\n  Interrupt,\n  Message,\n  ResumeEntry,\n  RunAgentResult,\n} from \"@ag-ui/client\";\nimport {\n  ɵInterruptState,\n  type ɵInterruptDecision,\n  type ɵPendingInterrupt,\n} from \"@copilotkit/core\";\nimport { DEFAULT_AGENT_ID } from \"@copilotkit/shared\";\n\nimport { injectAgentStore } from \"./agent\";\nimport { COPILOT_CHAT_CONFIGURATION } from \"./chat-configuration\";\nimport { CopilotKit } from \"./copilotkit\";\n\nconst INTERRUPT_EVENT_NAME = \"on_interrupt\";\n\ntype PendingInterrupt<TValue> = ɵPendingInterrupt<TValue>;\n\n/** Legacy custom-event interrupt payload. */\nexport interface InterruptEvent<TValue = unknown> {\n  name: string;\n  value: TValue;\n}\n\n/** Options forwarded when resuming an interrupted agent. */\nexport interface InterruptRunOptions {\n  resume?: ResumeEntry[];\n  forwardedProps?: Record<string, unknown>;\n}\n\n/** Injectable interrupt filtering and preprocessing options. */\nexport interface InjectInterruptOptions<TValue = unknown, TResult = never> {\n  /** Agent id or signal. Defaults to the ambient chat agent. */\n  agentId?: string | Signal<string | undefined>;\n  /** Return false to leave this interrupt for a different controller. */\n  enabled?: (event: InterruptEvent<TValue>) => boolean | PromiseLike<boolean>;\n  /** Optionally prepare data for the interrupt UI. */\n  handler?: (\n    props: InterruptHandlerProps<TValue>,\n  ) => TResult | PromiseLike<TResult>;\n}\n\n/** Actions and normalized protocol data passed to interrupt handlers. */\nexport interface InterruptHandlerProps<TValue = unknown> {\n  event: InterruptEvent<TValue>;\n  interrupt: Interrupt | null;\n  interrupts: readonly Interrupt[];\n  resolve: InterruptController<TValue>[\"resolve\"];\n  cancel: InterruptController<TValue>[\"cancel\"];\n}\n\n/** Reactive data suitable for binding to an application interrupt component. */\nexport interface InterruptView<\n  TValue = unknown,\n  TResult = unknown,\n> extends InterruptHandlerProps<TValue> {\n  result: TResult | null;\n}\n\nexport type InterruptRunner = (\n  agent: AbstractAgent,\n  options: InterruptRunOptions,\n) => Promise<RunAgentResult>;\n\n/** Error surfaced when an application attempts to resume an expired interrupt. */\nexport class InterruptExpiredError extends Error {\n  constructor(readonly interrupt: Interrupt) {\n    super(\n      `Interrupt ${interrupt.id} expired at ${interrupt.expiresAt ?? \"an unknown time\"}.`,\n    );\n    this.name = \"InterruptExpiredError\";\n  }\n}\n\nfunction toLegacyEvent<TValue>(\n  pending: PendingInterrupt<TValue>,\n): InterruptEvent<TValue> {\n  if (pending.kind === \"legacy\") return pending.event;\n  return {\n    name: INTERRUPT_EVENT_NAME,\n    value: pending.interrupts[0] as TValue,\n  };\n}\n\nfunction isPromiseLike<TValue>(\n  value: TValue | PromiseLike<TValue>,\n): value is PromiseLike<TValue> {\n  return (\n    (typeof value === \"object\" || typeof value === \"function\") &&\n    value !== null &&\n    typeof Reflect.get(value, \"then\") === \"function\"\n  );\n}\n\n/**\n * Signal-based state machine for standard AG-UI and legacy interrupts.\n *\n * Prefer {@link injectInterrupt} in application components. The public class is\n * useful for framework adapters and deterministic lifecycle tests.\n */\nexport class InterruptController<TValue = unknown, TResult = never> {\n  readonly #pending = signal<PendingInterrupt<TValue> | null>(null);\n  readonly #accepted = signal(false);\n  readonly #result = signal<TResult | null>(null);\n  readonly #error = signal<unknown | null>(null);\n  readonly #interruptState = new ɵInterruptState<TValue>();\n  readonly #runner: InterruptRunner;\n  readonly #options: InjectInterruptOptions<TValue, TResult>;\n  #agent?: AbstractAgent;\n  #unsubscribe?: () => void;\n  #threadId?: string;\n  #handlerGeneration = 0;\n  #resumePromise?: Promise<RunAgentResult | void>;\n\n  readonly event = computed<InterruptEvent<TValue> | null>(() => {\n    const pending = this.#pending();\n    return pending && this.#accepted() ? toLegacyEvent(pending) : null;\n  });\n  readonly interrupt = computed<Interrupt | null>(() => {\n    const pending = this.#pending();\n    return pending?.kind === \"standard\" && this.#accepted()\n      ? (pending.interrupts[0] ?? null)\n      : null;\n  });\n  readonly interrupts = computed<readonly Interrupt[]>(() => {\n    const pending = this.#pending();\n    return pending?.kind === \"standard\" && this.#accepted()\n      ? pending.interrupts\n      : [];\n  });\n  readonly result = this.#result.asReadonly();\n  readonly error = this.#error.asReadonly();\n  readonly hasInterrupt = computed(\n    () => this.#pending() !== null && this.#accepted(),\n  );\n  readonly view = computed<InterruptView<TValue, TResult> | null>(() => {\n    const event = this.event();\n    if (!event) return null;\n    return {\n      event,\n      interrupt: this.interrupt(),\n      interrupts: this.interrupts(),\n      result: this.result(),\n      resolve: this.resolve,\n      cancel: this.cancel,\n    };\n  });\n\n  constructor(\n    runner: InterruptRunner,\n    options: InjectInterruptOptions<TValue, TResult> = {},\n  ) {\n    this.#runner = runner;\n    this.#options = options;\n  }\n\n  /** Subscribe to an agent, replacing any previous lifecycle subscription. */\n  connect(agent: AbstractAgent): void {\n    if (agent === this.#agent) return;\n    this.#unsubscribe?.();\n    this.#agent = agent;\n    this.#threadId = agent.threadId;\n    this.#clear();\n\n    let legacy: InterruptEvent<TValue> | null = null;\n    let standard: Interrupt[] | null = null;\n    const subscription = agent.subscribe({\n      onCustomEvent: ({ event }) => {\n        if (event.name === INTERRUPT_EVENT_NAME) {\n          legacy = {\n            name: event.name,\n            value: event.value as TValue,\n          };\n        }\n      },\n      onRunFinishedEvent: (params) => {\n        if (params.outcome === \"interrupt\") {\n          standard = params.interrupts;\n        }\n      },\n      onRunStartedEvent: () => {\n        legacy = null;\n        standard = null;\n        this.#clear();\n      },\n      onRunFinalized: () => {\n        if (standard && standard.length > 0) {\n          this.#setPending({ kind: \"standard\", interrupts: standard });\n        } else if (legacy) {\n          this.#setPending({ kind: \"legacy\", event: legacy });\n        }\n        legacy = null;\n        standard = null;\n      },\n      onRunFailed: ({ error }) => {\n        legacy = null;\n        standard = null;\n        this.#clear(error);\n      },\n      onRunErrorEvent: ({ event }) => {\n        legacy = null;\n        standard = null;\n        this.#clear(new Error(event.message));\n      },\n    });\n    this.#unsubscribe = () => subscription.unsubscribe();\n    if (agent.pendingInterrupts.length > 0) {\n      this.#setPending({\n        kind: \"standard\",\n        interrupts: [...agent.pendingInterrupts],\n      });\n    }\n  }\n\n  /** Clear pending decisions when the host changes threads. */\n  setThreadId(threadId: string): void {\n    if (this.#threadId === undefined) {\n      this.#threadId = threadId;\n      return;\n    }\n    if (threadId === this.#threadId) return;\n    this.#threadId = threadId;\n    this.#clear();\n  }\n\n  /** Resolve one interrupt, resuming only after the complete set is addressed. */\n  readonly resolve = async (\n    payload?: unknown,\n    interruptId?: string,\n  ): Promise<RunAgentResult | void> => {\n    if (this.#resumePromise) return this.#resumePromise;\n    if (!this.#accepted()) return;\n    const current = this.#pending();\n    const agent = this.#agent;\n    if (!current || !agent) return;\n\n    if (current.kind === \"legacy\") {\n      const decision = this.#interruptState.resolve(payload, interruptId);\n      if (decision.kind !== \"legacy-resume\") return;\n      return this.#startResume(agent, {\n        forwardedProps: {\n          command: {\n            resume: decision.payload,\n            interruptEvent: decision.interruptValue,\n          },\n        },\n      });\n    }\n\n    const id = this.#targetId(current.interrupts, interruptId);\n    if (!id) return;\n    return this.#handleStandardDecision(\n      agent,\n      this.#interruptState.resolve(payload, id),\n    );\n  };\n\n  /** Cancel one standard interrupt; legacy interrupts are dismissed locally. */\n  readonly cancel = async (\n    interruptId?: string,\n  ): Promise<RunAgentResult | void> => {\n    if (this.#resumePromise) return this.#resumePromise;\n    if (!this.#accepted()) return;\n    const current = this.#pending();\n    const agent = this.#agent;\n    if (!current || !agent) return;\n\n    if (current.kind === \"legacy\") {\n      const decision = this.#interruptState.cancel(interruptId);\n      if (decision.kind !== \"dismiss\") return;\n      console.warn(\n        \"[CopilotKit] injectInterrupt: legacy on_interrupt events cannot be cancelled; dismissing.\",\n      );\n      this.#clear();\n      return;\n    }\n\n    const id = this.#targetId(current.interrupts, interruptId);\n    if (!id) return;\n    return this.#handleStandardDecision(agent, this.#interruptState.cancel(id));\n  };\n\n  /** Alias retained for parity with other CopilotKit framework adapters. */\n  readonly resolveInterrupt = this.resolve;\n  /** Alias retained for parity with other CopilotKit framework adapters. */\n  readonly cancelInterrupt = this.cancel;\n\n  /** Release the agent subscription and clear sensitive pending state. */\n  destroy(): void {\n    this.#unsubscribe?.();\n    this.#unsubscribe = undefined;\n    this.#agent = undefined;\n    this.#clear();\n  }\n\n  #setPending(pending: PendingInterrupt<TValue>): void {\n    this.#handlerGeneration += 1;\n    const generation = this.#handlerGeneration;\n    this.#pending.set(pending);\n    this.#accepted.set(false);\n    this.#result.set(null);\n    this.#error.set(null);\n    if (pending.kind === \"standard\") {\n      this.#interruptState.setStandard(pending.interrupts);\n    } else {\n      this.#interruptState.setLegacy(pending.event);\n    }\n\n    const event = toLegacyEvent(pending);\n    let enabled: boolean | PromiseLike<boolean> = true;\n    try {\n      enabled = this.#options.enabled?.(event) ?? true;\n    } catch (error) {\n      this.#handlePredicateFailure(error, generation);\n      return;\n    }\n\n    if (isPromiseLike(enabled)) {\n      Promise.resolve(enabled).then(\n        (accepted) => {\n          if (generation !== this.#handlerGeneration || !accepted) return;\n          this.#activatePending(pending, event, generation);\n        },\n        (error: unknown) => this.#handlePredicateFailure(error, generation),\n      );\n      return;\n    }\n    if (!enabled) return;\n    this.#activatePending(pending, event, generation);\n  }\n\n  #activatePending(\n    pending: PendingInterrupt<TValue>,\n    event: InterruptEvent<TValue>,\n    generation: number,\n  ): void {\n    if (generation !== this.#handlerGeneration) return;\n    this.#accepted.set(true);\n    const handler = this.#options.handler;\n    if (!handler) return;\n    let prepared: TResult | PromiseLike<TResult>;\n    try {\n      prepared = handler({\n        event,\n        interrupt:\n          pending.kind === \"standard\" ? (pending.interrupts[0] ?? null) : null,\n        interrupts: pending.kind === \"standard\" ? pending.interrupts : [],\n        resolve: this.resolve,\n        cancel: this.cancel,\n      });\n    } catch (error) {\n      this.#handlePreparationFailure(error, generation);\n      return;\n    }\n\n    if (isPromiseLike(prepared)) {\n      Promise.resolve(prepared).then(\n        (result) => {\n          if (generation === this.#handlerGeneration) this.#result.set(result);\n        },\n        (error: unknown) => this.#handlePreparationFailure(error, generation),\n      );\n    } else {\n      this.#result.set(prepared);\n    }\n  }\n\n  #handlePredicateFailure(error: unknown, generation: number): void {\n    if (generation !== this.#handlerGeneration) return;\n    console.error(\n      \"[CopilotKit] injectInterrupt enabled predicate failed; ignoring interrupt:\",\n      error,\n    );\n    this.#accepted.set(false);\n    this.#error.set(error);\n  }\n\n  #handlePreparationFailure(error: unknown, generation: number): void {\n    if (generation !== this.#handlerGeneration) return;\n    console.error(\"[CopilotKit] injectInterrupt handler failed:\", error);\n    this.#result.set(null);\n    this.#error.set(error);\n  }\n\n  #targetId(\n    interrupts: readonly Interrupt[],\n    requestedId: string | undefined,\n  ): string | undefined {\n    if (interrupts.length > 1 && requestedId === undefined) {\n      console.warn(\n        `[CopilotKit] injectInterrupt: resolve()/cancel() called without an interruptId while ${interrupts.length} interrupts are open; defaulting to the first.`,\n      );\n    }\n    const id = requestedId ?? interrupts[0]?.id;\n    if (!id || !interrupts.some((interrupt) => interrupt.id === id)) {\n      console.warn(\n        `[CopilotKit] injectInterrupt: ignored unknown interrupt id ${String(id)}.`,\n      );\n      return undefined;\n    }\n    return id;\n  }\n\n  async #handleStandardDecision(\n    agent: AbstractAgent,\n    decision: ɵInterruptDecision,\n  ): Promise<RunAgentResult | void> {\n    if (decision.kind === \"waiting\" || decision.kind === \"ignored\") return;\n    if (decision.kind === \"expired\") {\n      const error = new InterruptExpiredError(decision.interrupt);\n      console.error(`[CopilotKit] injectInterrupt: ${error.message}`);\n      this.#clear(error);\n      return;\n    }\n    if (decision.kind !== \"resume\") return;\n\n    try {\n      const toolMessages = decision.toolResults.map(\n        (toolResult): Message =>\n          ({\n            id: randomUUID(),\n            role: \"tool\",\n            toolCallId: toolResult.toolCallId,\n            content: toolResult.content,\n          }) as Message,\n      );\n      for (const message of toolMessages) agent.addMessage(message);\n      return this.#startResume(agent, { resume: decision.resume });\n    } catch (error) {\n      this.#clear(error);\n      throw error;\n    }\n  }\n\n  #startResume(\n    agent: AbstractAgent,\n    options: InterruptRunOptions,\n  ): Promise<RunAgentResult | void> {\n    const pending = this.#pending();\n    let run: Promise<RunAgentResult>;\n    try {\n      run = this.#runner(agent, options);\n    } catch (error) {\n      this.#clear(error);\n      return Promise.reject(error);\n    }\n\n    const tracked = run.catch((error: unknown) => {\n      const stillCurrent = this.#pending() === pending;\n      console.error(\n        stillCurrent\n          ? \"[CopilotKit] injectInterrupt resume failed; pending state was cleared and the run will not be retried:\"\n          : \"[CopilotKit] a stale injectInterrupt resume failed after the controller moved on:\",\n        error,\n      );\n      if (stillCurrent) this.#clear(error);\n      throw error;\n    });\n    if (this.#pending() === pending) this.#resumePromise = tracked;\n    return tracked;\n  }\n\n  #clear(error: unknown | null = null): void {\n    this.#handlerGeneration += 1;\n    this.#pending.set(null);\n    this.#accepted.set(false);\n    this.#result.set(null);\n    this.#error.set(error);\n    this.#resumePromise = undefined;\n    this.#interruptState.clear();\n  }\n}\n\n/**\n * Create an interrupt controller in the current Angular injection context.\n *\n * The controller follows the ambient chat agent and thread unless an explicit\n * agent is supplied. Bind its signals in a template and call `resolve` or\n * `cancel` from user-driven event handlers.\n */\nexport function injectInterrupt<TValue = unknown, TResult = never>(\n  options: InjectInterruptOptions<TValue, TResult> = {},\n): InterruptController<TValue, TResult> {\n  const copilotKit = inject(CopilotKit);\n  const destroyRef = inject(DestroyRef);\n  const chatConfiguration = inject(COPILOT_CHAT_CONFIGURATION, {\n    optional: true,\n  });\n  const configuredAgentId = options.agentId;\n  const agentId =\n    typeof configuredAgentId === \"function\"\n      ? configuredAgentId\n      : computed(\n          () =>\n            configuredAgentId ??\n            chatConfiguration?.agentId() ??\n            DEFAULT_AGENT_ID,\n        );\n  const store = injectAgentStore(agentId);\n  const controller = new InterruptController<TValue, TResult>(\n    (agent, runOptions) => copilotKit.core.runAgent({ agent, ...runOptions }),\n    options,\n  );\n  const connection = effect(() => {\n    const agent = store().agent;\n    controller.connect(agent);\n    controller.setThreadId(chatConfiguration?.threadId() ?? agent.threadId);\n  });\n\n  destroyRef.onDestroy(() => {\n    connection.destroy();\n    controller.destroy();\n  });\n  return controller;\n}\n","import type { Signal } from \"@angular/core\";\nimport {\n  computed,\n  DestroyRef,\n  effect,\n  inject,\n  Injectable,\n  signal,\n  untracked,\n} from \"@angular/core\";\nimport type { Subscription } from \"rxjs\";\nimport {\n  CopilotKitCoreRuntimeConnectionStatus,\n  ɵcreateThreadStore,\n  ɵselectHasNextPage,\n  ɵselectIsFetchingNextPage,\n  ɵselectIsMutating,\n  ɵselectFetchMoreError,\n  ɵselectThreads,\n  ɵselectThreadsError,\n  ɵselectThreadsIsLoading,\n} from \"@copilotkit/core\";\nimport type {\n  ɵThread,\n  ɵThreadRuntimeContext,\n  ɵThreadStore,\n} from \"@copilotkit/core\";\nimport { CopilotKit } from \"./copilotkit\";\n\n/**\n * A conversation thread managed by the Intelligence platform.\n *\n * Each thread has a unique `id`, an optional human-readable `name`, and\n * timestamp fields tracking creation and update times. This mirrors the\n * `Thread` projection exposed by react-core's `useThreads` so framework\n * wrappers share an identical shape.\n */\nexport interface Thread {\n  /** Stable, server-assigned thread identifier. */\n  id: string;\n  /** The agent this thread belongs to. */\n  agentId: string;\n  /** Human-readable name, or `null` when the thread is unnamed. */\n  name: string | null;\n  /** `true` when the thread has been archived. */\n  archived: boolean;\n  /** ISO-8601 creation timestamp. */\n  createdAt: string;\n  /** ISO-8601 timestamp of the most recent metadata update. */\n  updatedAt: string;\n  /**\n   * ISO-8601 timestamp of the most recent agent run on this thread. Absent\n   * when the thread has never been run. Prefer this over `updatedAt` for\n   * user-facing \"last activity\" displays — it is not bumped by metadata-only\n   * actions like rename or archive.\n   */\n  lastRunAt?: string;\n}\n\n/**\n * Configuration for {@link injectThreads}.\n *\n * Thread operations are scoped to the runtime-authenticated user and the\n * provided agent on the Intelligence platform. Each field may be supplied as\n * a plain value or a {@link Signal}; when a signal is used the underlying\n * runtime context is re-synced whenever its value changes.\n */\nexport interface InjectThreadsInput {\n  /** The ID of the agent whose threads to list and manage. */\n  agentId: string | Signal<string>;\n  /** When `true`, archived threads are included in the list. Defaults to `false`. */\n  includeArchived?: boolean | Signal<boolean | undefined>;\n  /** Maximum number of threads to fetch per page. When set, enables cursor-based pagination. */\n  limit?: number | Signal<number | undefined>;\n  /**\n   * When `false`, the store stays inert: no runtime context is dispatched, so\n   * NO thread-list fetch or realtime subscription is issued, and the\n   * synthesized pre-connect loading state is suppressed. Used by gated\n   * surfaces (e.g. an unlicensed `<copilotkit-threads-drawer>`) that must not touch\n   * the network until the gate opens. Defaults to `true`. Mirrors react-core's\n   * `UseThreadsInput.enabled`.\n   */\n  enabled?: boolean | Signal<boolean | undefined>;\n}\n\n/**\n * Signal-based threads-list API returned by {@link injectThreads}.\n *\n * The `threads` signal is kept in sync with the platform via a realtime\n * WebSocket subscription (when available) and is sorted most-recently-active\n * first. Mutation methods reject with an `Error` if the platform request\n * fails; `delete` additionally rolls back its optimistic removal.\n */\nexport interface InjectThreadsResult {\n  /**\n   * Threads for the current user/agent pair, sorted most-recently-active\n   * first. Updated in realtime when the platform pushes metadata events.\n   * Includes archived threads only when `includeArchived` is set.\n   */\n  threads: Signal<Thread[]>;\n  /**\n   * `true` while the initial thread list is being fetched from the platform.\n   * Subsequent realtime updates do not re-enter the loading state.\n   */\n  isLoading: Signal<boolean>;\n  /**\n   * The most recent error from fetching threads or executing a mutation, or\n   * `null` when there is no error. Reset to `null` on the next successful\n   * fetch.\n   */\n  error: Signal<Error | null>;\n  /**\n   * List/mutation errors only — excludes developer/config errors (missing\n   * runtime URL, runtime without thread endpoints) so consumer UIs do not\n   * surface dev strings to end users. Prefer this over `error` for\n   * user-facing error display.\n   */\n  listError: Signal<Error | null>;\n  /**\n   * Error from the most recent FAILED next-page (fetch-more) load, or `null`.\n   * Tracked separately from {@link InjectThreadsResult.listError} so a\n   * paginated-load failure surfaces an inline \"couldn't load more\" affordance\n   * while the loaded list stays visible. Cleared when a fetch-more is retried\n   * or succeeds.\n   */\n  fetchMoreError: Signal<Error | null>;\n  /**\n   * `true` when there are more threads available to fetch via\n   * {@link InjectThreadsResult.fetchMoreThreads}. Only meaningful when `limit`\n   * is set.\n   */\n  hasMoreThreads: Signal<boolean>;\n  /** `true` while a subsequent page of threads is being fetched. */\n  isFetchingMoreThreads: Signal<boolean>;\n  /**\n   * `true` while at least one thread mutation (rename, archive, unarchive,\n   * delete) is awaiting a server response. Mutations apply optimistically, so\n   * this is primarily useful for disabling controls or showing a subtle\n   * in-flight indicator.\n   */\n  isMutating: Signal<boolean>;\n  /**\n   * Fetch the next page of threads. No-op when\n   * {@link InjectThreadsResult.hasMoreThreads} is `false` or a fetch is\n   * already in progress.\n   */\n  fetchMoreThreads: () => void;\n  /**\n   * Re-fetch the thread list from the platform without clearing the current\n   * list. Backs the drawer's error-state Retry and the Active/All filter\n   * refetch. No-op until the runtime is connected.\n   */\n  refetchThreads: () => void;\n  /**\n   * Reset to a fresh, non-explicit client-side thread so the welcome screen\n   * shows. Lazy creation: no row appears in {@link InjectThreadsResult.threads}\n   * until the new thread's first run persists server-side.\n   */\n  startNewThread: () => void;\n  /**\n   * Rename a thread on the platform. Resolves when the server confirms the\n   * update; rejects on failure.\n   */\n  renameThread: (threadId: string, name: string) => Promise<void>;\n  /**\n   * Archive a thread on the platform. Archived threads are excluded from\n   * subsequent list results. Resolves when the server confirms the update;\n   * rejects on failure.\n   */\n  archiveThread: (threadId: string) => Promise<void>;\n  /**\n   * Restore a previously archived thread on the platform. The thread\n   * re-appears in default (non-archived) list results. Resolves when the\n   * server confirms the update; rejects on failure.\n   */\n  unarchiveThread: (threadId: string) => Promise<void>;\n  /**\n   * Permanently delete a thread from the platform. This is irreversible.\n   * Resolves when the server confirms deletion; rejects on failure (the\n   * optimistic removal is rolled back).\n   */\n  deleteThread: (threadId: string) => Promise<void>;\n}\n\n/** Normalizes a value-or-signal field into a no-arg accessor. */\nfunction toAccessor<T>(value: T | Signal<T>): () => T {\n  return typeof value === \"function\" ? (value as () => T) : () => value;\n}\n\n/**\n * Projects a core {@link ɵThread} record down to the public {@link Thread}\n * shape, omitting `lastRunAt` entirely when the source value is absent so the\n * field stays optional rather than `undefined`.\n */\nfunction projectThread(thread: ɵThread): Thread {\n  const { id, agentId, name, archived, createdAt, updatedAt, lastRunAt } =\n    thread;\n  return {\n    id,\n    agentId,\n    name,\n    archived,\n    createdAt,\n    updatedAt,\n    ...(lastRunAt !== undefined ? { lastRunAt } : {}),\n  };\n}\n\n/**\n * Owns a single core thread store, bridges its selector observables onto\n * Angular writable signals, keeps the store's runtime context in sync with the\n * ambient {@link CopilotKit} configuration, and registers/unregisters the\n * store with core for the active agent.\n *\n * One instance backs each {@link injectThreads} call. Tear-down (selector\n * unsubscribe, store stop, core unregister) runs on the host's\n * {@link DestroyRef}.\n */\nexport class ThreadsStore implements InjectThreadsResult {\n  readonly #copilotkit = inject(CopilotKit);\n  readonly #store: ɵThreadStore = ɵcreateThreadStore({\n    // Cast to `typeof fetch`: the wrapper preserves correct `this` binding for\n    // globalThis.fetch but does not re-expose static members (e.g. `preconnect`)\n    // that newer DOM libs add and that the store never calls.\n    fetch: ((...args: Parameters<typeof fetch>) =>\n      globalThis.fetch(...args)) as typeof fetch,\n  });\n  readonly #subscriptions: Subscription[] = [];\n\n  readonly #threads = signal<Thread[]>([]);\n  readonly #storeIsLoading = signal<boolean>(false);\n  readonly #storeError = signal<Error | null>(null);\n  readonly #fetchMoreError = signal<Error | null>(null);\n  readonly #hasMoreThreads = signal<boolean>(false);\n  readonly #isFetchingMoreThreads = signal<boolean>(false);\n  readonly #isMutating = signal<boolean>(false);\n\n  /**\n   * Tracks whether a real runtime context has been dispatched to the store\n   * yet. The store itself starts `isLoading: false`, so before the first\n   * dispatch consumers would otherwise see an empty, non-loading list (the\n   * empty-list flash). While a runtime URL is configured and the endpoints\n   * are available but no context has been dispatched, we synthesize loading.\n   */\n  readonly #hasDispatchedContext = signal<boolean>(false);\n\n  readonly threads = this.#threads.asReadonly();\n  readonly error: Signal<Error | null>;\n  readonly listError: Signal<Error | null>;\n  readonly fetchMoreError = this.#fetchMoreError.asReadonly();\n  readonly isLoading: Signal<boolean>;\n  readonly hasMoreThreads = this.#hasMoreThreads.asReadonly();\n  readonly isFetchingMoreThreads = this.#isFetchingMoreThreads.asReadonly();\n  readonly isMutating = this.#isMutating.asReadonly();\n\n  constructor(input: InjectThreadsInput, destroyRef: DestroyRef) {\n    const agentId = toAccessor(input.agentId);\n    const includeArchived = toAccessor(input.includeArchived);\n    const limit = toAccessor(input.limit);\n    const enabled = toAccessor(input.enabled);\n    // `enabled` defaults to `true`; only an explicit `false` keeps the store\n    // inert. An unset/`undefined` input is treated as enabled.\n    const isEnabled = (): boolean => enabled() !== false;\n\n    this.#bridgeSelectors();\n    this.#store.start();\n\n    // Synthesized error/loading reconcile the core store's internal state with\n    // configuration-level conditions (no runtime URL, unavailable endpoints),\n    // mirroring react-core's useThreads.\n    const runtimeUrl = this.#copilotkit.runtimeUrl;\n    const runtimeStatus = this.#copilotkit.runtimeConnectionStatus;\n    // Read `threadEndpoints`/`intelligence.wsUrl` through the CopilotKit\n    // signals (not plain `core.*` getters) so the computeds/effect re-run when\n    // `/info` populates them — even if it lands without a connection-status\n    // transition. This mirrors react-core, which lists both in its effect deps.\n    const threadEndpoints = this.#copilotkit.threadEndpoints;\n    const threadListSupported = (): boolean =>\n      threadEndpoints()?.list !== false;\n    const threadMutationsSupported = (): boolean =>\n      threadEndpoints()?.mutations !== false;\n    const threadEndpointsUnavailable = (): boolean =>\n      !!runtimeUrl() &&\n      runtimeStatus() === CopilotKitCoreRuntimeConnectionStatus.Connected &&\n      !threadListSupported();\n\n    const runtimeError = (): Error | null =>\n      runtimeUrl() ? null : new Error(\"Runtime URL is not configured\");\n    const endpointsError = (): Error | null =>\n      threadEndpointsUnavailable()\n        ? new Error(\n            \"Thread endpoints are not available on this CopilotKit runtime\",\n          )\n        : null;\n    const mutationsError = (): Error | null =>\n      threadMutationsSupported()\n        ? null\n        : new Error(\n            \"Thread mutations are not available on this CopilotKit runtime\",\n          );\n\n    const preConnectLoading = (): boolean =>\n      isEnabled() &&\n      !!runtimeUrl() &&\n      !threadEndpointsUnavailable() &&\n      !this.#hasDispatchedContext();\n\n    // Synthesized error/loading combine configuration-level conditions with\n    // the core store's own state; expressed as pure derived signals.\n    this.error = computed(\n      () => runtimeError() ?? endpointsError() ?? this.#storeError(),\n    );\n    // listError exposes only genuine fetch/mutation errors, excluding the\n    // dev/config errors (missing runtime URL, runtime without thread\n    // endpoints). Use this for user-facing error display so dev strings are\n    // never shown to end users.\n    this.listError = computed(() => this.#storeError());\n    this.isLoading = computed(() =>\n      runtimeError() || endpointsError()\n        ? false\n        : preConnectLoading() || this.#storeIsLoading(),\n    );\n\n    // Register/unregister this store with core for the active agent so core can\n    // route realtime/agent-driven thread updates to it. Re-runs when the agent\n    // id changes; the previous registration is cleared first.\n    let registeredAgentId: string | undefined;\n    effect(() => {\n      const nextAgentId = agentId();\n      const enabled = isEnabled();\n      untracked(() => {\n        // Disabled (e.g. unlicensed): ensure this store is NOT registered. The\n        // registry is single-slot/last-writer-wins, so an inert store claiming\n        // the agentId slot would evict — and on destroy tear down — a co-mounted\n        // live store for the same agent. Mirrors react-core's use-threads gate.\n        if (!enabled) {\n          if (registeredAgentId !== undefined) {\n            this.#copilotkit.core.unregisterThreadStore(registeredAgentId);\n            registeredAgentId = undefined;\n          }\n          return;\n        }\n        if (registeredAgentId === nextAgentId) {\n          return;\n        }\n        if (registeredAgentId !== undefined) {\n          this.#copilotkit.core.unregisterThreadStore(registeredAgentId);\n        }\n        this.#copilotkit.core.registerThreadStore(nextAgentId, this.#store);\n        registeredAgentId = nextAgentId;\n      });\n    });\n\n    // Sync the runtime context. Defer until the runtime reports Connected so\n    // the initial context carries `intelligence.wsUrl` and avoids a redundant\n    // second list fetch + subscribe round-trip (mirrors react-core).\n    //\n    // The store dispatches `setContext` onto an `asapScheduler` queue, and its\n    // bootstrap effect issues a list fetch for every queued `contextChanged`\n    // whose state is non-null at drain time. So if this effect runs once with\n    // no URL (clearing to `null`) and again once Connected (the real context)\n    // before that queue drains, BOTH queued actions observe the latest\n    // (non-null) state and two identical list fetches fire — the second\n    // clobbering the first response. We therefore dispatch only on a\n    // meaningful change: skip a clear-to-`null` when nothing was ever\n    // dispatched (the store already holds `null`), and skip a re-dispatch of\n    // an unchanged context. This collapses the benign URL→Connected transition\n    // to a single dispatch and matches react-core's dependency-gated effect.\n    let lastDispatchedContext: string | null = null;\n    effect(() => {\n      // Track every reactive input the dispatched context depends on, so the\n      // effect re-runs when any of them changes — including `wsUrl`, which\n      // arrives with `/info` and (via the dedup signature below) triggers a\n      // single re-dispatch carrying the realtime URL.\n      const active = isEnabled();\n      const url = runtimeUrl();\n      const status = runtimeStatus();\n      const headers = this.#copilotkit.headers();\n      const id = agentId();\n      const archived = includeArchived();\n      const pageLimit = limit();\n      const listSupported = threadListSupported();\n      const wsUrl = this.#copilotkit.intelligence()?.wsUrl;\n\n      untracked(() => {\n        const clearContext = (): void => {\n          if (this.#hasDispatchedContext()) {\n            this.#store.setContext(null);\n          }\n          lastDispatchedContext = null;\n          this.#hasDispatchedContext.set(false);\n        };\n\n        // Disabled: stay inert. Clear any previously-dispatched context so an\n        // in-flight subscription is torn down and no further fetch is issued.\n        if (!active) {\n          clearContext();\n          return;\n        }\n\n        if (!url) {\n          clearContext();\n          return;\n        }\n\n        if (status !== CopilotKitCoreRuntimeConnectionStatus.Connected) {\n          return;\n        }\n\n        if (!listSupported) {\n          clearContext();\n          return;\n        }\n\n        const context: ɵThreadRuntimeContext = {\n          runtimeUrl: url,\n          headers: { ...headers },\n          wsUrl,\n          agentId: id,\n          includeArchived: archived,\n          limit: pageLimit,\n        };\n\n        // Build the dedup signature with header entries sorted, so a\n        // same-content header map with a different key order does not trigger\n        // a redundant setContext (and the refetch + resubscribe it causes).\n        // Mirrors react-core's `headersKey`. The dispatched context keeps its\n        // original header order; only the signature is normalized.\n        const signature = JSON.stringify({\n          ...context,\n          headers: Object.entries(headers).sort(([left], [right]) =>\n            left.localeCompare(right),\n          ),\n        });\n        if (signature === lastDispatchedContext) {\n          return;\n        }\n\n        lastDispatchedContext = signature;\n        this.#store.setContext(context);\n        this.#hasDispatchedContext.set(true);\n      });\n    });\n\n    this.renameThread = this.#guardMutation(mutationsError, (threadId, name) =>\n      this.#store.renameThread(threadId, name),\n    );\n    this.archiveThread = this.#guardMutation(mutationsError, (threadId) =>\n      this.#store.archiveThread(threadId),\n    );\n    this.unarchiveThread = this.#guardMutation(mutationsError, (threadId) =>\n      this.#store.unarchiveThread(threadId),\n    );\n    this.deleteThread = this.#guardMutation(mutationsError, (threadId, _name) =>\n      this.#store.deleteThread(threadId),\n    );\n\n    destroyRef.onDestroy(() => {\n      this.teardown();\n      if (registeredAgentId !== undefined) {\n        this.#copilotkit.core.unregisterThreadStore(registeredAgentId);\n        registeredAgentId = undefined;\n      }\n    });\n  }\n\n  readonly renameThread: (threadId: string, name: string) => Promise<void>;\n  readonly archiveThread: (threadId: string) => Promise<void>;\n  readonly unarchiveThread: (threadId: string) => Promise<void>;\n  readonly deleteThread: (threadId: string) => Promise<void>;\n\n  // Arrow-bound instance fields (not prototype methods) so they keep working\n  // when destructured off the result — matching the mutation members above and\n  // react-core's standalone callbacks.\n  readonly fetchMoreThreads = (): void => {\n    this.#store.fetchNextPage();\n  };\n\n  readonly refetchThreads = (): void => {\n    this.#store.refetchThreads();\n  };\n\n  readonly startNewThread = (): void => {\n    this.#store.startNewThread();\n  };\n\n  /** Unsubscribes all selector bridges and stops the underlying core store. */\n  teardown(): void {\n    for (const subscription of this.#subscriptions) {\n      subscription.unsubscribe();\n    }\n    this.#subscriptions.length = 0;\n    this.#store.stop();\n  }\n\n  /**\n   * Subscribes each core selector to its mirroring writable signal. The\n   * `select` operator emits the current value synchronously on subscribe, so\n   * the signals are seeded immediately and stay current thereafter.\n   */\n  #bridgeSelectors(): void {\n    this.#subscriptions.push(\n      this.#store.select(ɵselectThreads).subscribe((threads) => {\n        this.#threads.set(threads.map(projectThread));\n      }),\n      this.#store.select(ɵselectThreadsIsLoading).subscribe((value) => {\n        this.#storeIsLoading.set(value);\n      }),\n      this.#store.select(ɵselectThreadsError).subscribe((value) => {\n        this.#storeError.set(value);\n      }),\n      this.#store.select(ɵselectFetchMoreError).subscribe((value) => {\n        this.#fetchMoreError.set(value);\n      }),\n      this.#store.select(ɵselectHasNextPage).subscribe((value) => {\n        this.#hasMoreThreads.set(value);\n      }),\n      this.#store.select(ɵselectIsFetchingNextPage).subscribe((value) => {\n        this.#isFetchingMoreThreads.set(value);\n      }),\n      this.#store.select(ɵselectIsMutating).subscribe((value) => {\n        this.#isMutating.set(value);\n      }),\n    );\n  }\n\n  /**\n   * Wraps a mutation so that, when thread mutations are unavailable on the\n   * connected runtime, the call rejects with a descriptive error instead of\n   * issuing a request doomed to fail.\n   */\n  #guardMutation(\n    mutationsError: () => Error | null,\n    mutation: (threadId: string, name: string) => Promise<void>,\n  ): (threadId: string, name?: string) => Promise<void> {\n    return (threadId: string, name = \"\") => {\n      const error = mutationsError();\n      if (error) {\n        return Promise.reject(error);\n      }\n      return mutation(threadId, name);\n    };\n  }\n}\n\n/**\n * Factory for {@link ThreadsStore} instances. Provided at the root so the\n * ambient {@link CopilotKit} configuration is resolved from the application's\n * injector.\n */\n@Injectable({ providedIn: \"root\" })\nexport class CopilotkitThreadsFactory {\n  /**\n   * Creates a {@link ThreadsStore} bound to the given input and host\n   * `DestroyRef`.\n   *\n   * @param input - Agent identifier and optional list controls.\n   * @param destroyRef - Host lifetime; tears the store down on destroy.\n   */\n  create(input: InjectThreadsInput, destroyRef: DestroyRef): ThreadsStore {\n    return new ThreadsStore(input, destroyRef);\n  }\n}\n\n/**\n * Angular threads-list API over the platform-agnostic core thread store —\n * the signal-based counterpart to react-core's `useThreads`.\n *\n * On creation the store fetches the thread list for the runtime-authenticated\n * user and the given `agentId`. When the Intelligence platform exposes a\n * WebSocket URL it also opens a realtime subscription so the `threads` signal\n * stays current without polling. Mutation methods return promises that resolve\n * once the platform confirms the operation and reject with an `Error` on\n * failure.\n *\n * Must be called within an injection context (component/directive constructor\n * or field initializer). The underlying store is torn down on the host's\n * `DestroyRef`.\n *\n * @param input - Agent identifier and optional list controls. Each field\n *   accepts a plain value or a `Signal`.\n * @returns Thread list state as signals plus stable mutation callbacks.\n *\n * @example\n * ```ts\n * @Component({ ... })\n * class ThreadList {\n *   readonly threads = injectThreads({ agentId: \"agent-1\" });\n * }\n * ```\n */\nexport function injectThreads(input: InjectThreadsInput): InjectThreadsResult {\n  const factory = inject(CopilotkitThreadsFactory);\n  const destroyRef = inject(DestroyRef);\n  return factory.create(input, destroyRef);\n}\n","import { inject, InjectionToken, Provider } from \"@angular/core\";\n\n// Type for chat labels\nexport interface CopilotChatLabels {\n  chatInputPlaceholder: string;\n  chatInputToolbarStartTranscribeButtonLabel: string;\n  chatInputToolbarCancelTranscribeButtonLabel: string;\n  chatInputToolbarFinishTranscribeButtonLabel: string;\n  chatInputToolbarAddButtonLabel: string;\n  chatInputToolbarToolsButtonLabel: string;\n  assistantMessageToolbarCopyCodeLabel: string;\n  assistantMessageToolbarCopyCodeCopiedLabel: string;\n  assistantMessageToolbarCopyMessageLabel: string;\n  assistantMessageToolbarThumbsUpLabel: string;\n  assistantMessageToolbarThumbsDownLabel: string;\n  assistantMessageToolbarReadAloudLabel: string;\n  assistantMessageToolbarRegenerateLabel: string;\n  userMessageToolbarCopyMessageLabel: string;\n  userMessageToolbarEditMessageLabel: string;\n  chatDisclaimerText: string;\n  welcomeMessageText: string;\n}\n\n// Default labels constant\nexport const COPILOT_CHAT_DEFAULT_LABELS: CopilotChatLabels = {\n  chatInputPlaceholder: \"Type a message...\",\n  chatInputToolbarStartTranscribeButtonLabel: \"Transcribe\",\n  chatInputToolbarCancelTranscribeButtonLabel: \"Cancel\",\n  chatInputToolbarFinishTranscribeButtonLabel: \"Finish\",\n  chatInputToolbarAddButtonLabel: \"Add photos or files\",\n  chatInputToolbarToolsButtonLabel: \"Tools\",\n  assistantMessageToolbarCopyCodeLabel: \"Copy\",\n  assistantMessageToolbarCopyCodeCopiedLabel: \"Copied\",\n  assistantMessageToolbarCopyMessageLabel: \"Copy\",\n  assistantMessageToolbarThumbsUpLabel: \"Good response\",\n  assistantMessageToolbarThumbsDownLabel: \"Bad response\",\n  assistantMessageToolbarReadAloudLabel: \"Read aloud\",\n  assistantMessageToolbarRegenerateLabel: \"Regenerate\",\n  userMessageToolbarCopyMessageLabel: \"Copy\",\n  userMessageToolbarEditMessageLabel: \"Edit\",\n  chatDisclaimerText:\n    \"AI can make mistakes. Please verify important information.\",\n  welcomeMessageText: \"How can I help you today?\",\n};\n\nexport const COPILOT_CHAT_LABELS = new InjectionToken<CopilotChatLabels>(\n  \"COPILOT_CHAT_LABELS\",\n);\n\nexport function injectChatLabels(): CopilotChatLabels {\n  return (\n    inject(COPILOT_CHAT_LABELS, { optional: true }) ??\n    COPILOT_CHAT_DEFAULT_LABELS\n  );\n}\n\nexport function provideCopilotChatLabels(\n  config: Partial<CopilotChatLabels>,\n): Provider {\n  return {\n    provide: COPILOT_CHAT_LABELS,\n    useValue: {\n      ...COPILOT_CHAT_DEFAULT_LABELS,\n      ...config,\n    },\n  };\n}\n","import {\n  inject,\n  Injectable,\n  Signal,\n  signal,\n  WritableSignal,\n} from \"@angular/core\";\nimport type { Attachment } from \"@copilotkit/shared\";\nimport type { Suggestion } from \"@copilotkit/core\";\n\n@Injectable()\nexport abstract class ChatState {\n  abstract readonly inputValue: WritableSignal<string>;\n  readonly attachments = signal<Attachment[]>([]);\n  readonly attachmentsEnabled: Signal<boolean> = signal(false);\n  readonly attachmentsUploading: Signal<boolean> = signal(false);\n  readonly dragOver = signal(false);\n  readonly suggestions = signal<Suggestion[]>([]);\n  readonly suggestionsLoading = signal(false);\n  readonly isTranscribing = signal(false);\n\n  abstract submitInput(value: string): void;\n  abstract changeInput(value: string): void;\n  selectSuggestion(_suggestion: Suggestion, _index: number): void {}\n  finishTranscription(_audioBlob: Blob): void | Promise<void> {}\n\n  addFile(): void {}\n  removeAttachment(_id: string): void {}\n  handleDragOver(_event: DragEvent): void {}\n  handleDragLeave(_event: DragEvent): void {}\n  handleDrop(_event: DragEvent): void {}\n}\n\nexport function injectChatState(): ChatState {\n  try {\n    return inject(ChatState);\n  } catch {\n    throw new Error(\n      \"ChatState not found. A parent component must provide ChatState.\",\n    );\n  }\n}\n","import type { CopilotKitCore } from \"@copilotkit/core\";\nimport {\n  TranscriptionErrorCode,\n  type TranscriptionErrorResponse,\n} from \"@copilotkit/shared\";\n\nexport { TranscriptionErrorCode };\n\nexport interface TranscriptionResult {\n  text: string;\n  size: number;\n  type: string;\n}\n\nexport interface TranscriptionErrorInfo {\n  code: TranscriptionErrorCode;\n  message: string;\n  retryable: boolean;\n}\n\nexport class TranscriptionError extends Error {\n  readonly info: TranscriptionErrorInfo;\n\n  constructor(info: TranscriptionErrorInfo) {\n    super(info.message);\n    this.name = \"TranscriptionError\";\n    this.info = info;\n  }\n}\n\n/**\n * Transcribe an audio blob via the CopilotKit runtime. Uses single-endpoint\n * (base64 JSON) or REST (multipart `/transcribe`) mode to match the transport\n * configured on the core.\n *\n * @throws {TranscriptionError} with typed error info on any failure.\n */\nexport async function transcribeAudio(\n  core: CopilotKitCore,\n  audioBlob: Blob,\n  filename = \"recording.webm\",\n): Promise<TranscriptionResult> {\n  const { runtimeUrl } = core;\n  if (!runtimeUrl) {\n    throw new TranscriptionError({\n      code: TranscriptionErrorCode.INVALID_REQUEST,\n      message: \"Runtime URL is not configured\",\n      retryable: false,\n    });\n  }\n\n  let response: Response;\n  try {\n    response =\n      core.runtimeTransport === \"single\"\n        ? await fetch(runtimeUrl, {\n            method: \"POST\",\n            headers: { ...core.headers, \"Content-Type\": \"application/json\" },\n            body: JSON.stringify({\n              method: \"transcribe\",\n              body: {\n                audio: await blobToBase64(audioBlob),\n                mimeType: audioBlob.type || \"audio/webm\",\n                filename,\n              },\n            }),\n          })\n        : await fetch(`${runtimeUrl}/transcribe`, {\n            method: \"POST\",\n            // No Content-Type: the browser sets it (with boundary) for FormData.\n            headers: omitContentType(core.headers),\n            body: toFormData(audioBlob, filename),\n          });\n  } catch (error) {\n    throw new TranscriptionError({\n      code: TranscriptionErrorCode.NETWORK_ERROR,\n      message:\n        error instanceof Error ? error.message : \"Network request failed\",\n      retryable: true,\n    });\n  }\n\n  if (!response.ok) {\n    throw await toTranscriptionError(response);\n  }\n\n  return (await response.json()) as TranscriptionResult;\n}\n\nfunction toFormData(audioBlob: Blob, filename: string): FormData {\n  const formData = new FormData();\n  formData.append(\"audio\", audioBlob, filename);\n  return formData;\n}\n\nfunction omitContentType(\n  headers: Readonly<Record<string, string>>,\n): Record<string, string> {\n  const result = { ...headers };\n  delete result[\"Content-Type\"];\n  return result;\n}\n\nfunction blobToBase64(blob: Blob): Promise<string> {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n    reader.onloadend = () => {\n      // Strip the `data:...;base64,` prefix to get the raw base64 payload.\n      const result = reader.result as string;\n      resolve(result.slice(result.indexOf(\",\") + 1));\n    };\n    reader.onerror = () => reject(new Error(\"Failed to read audio data\"));\n    reader.readAsDataURL(blob);\n  });\n}\n\n/** Build a typed error from a non-OK transcription response. */\nasync function toTranscriptionError(\n  response: Response,\n): Promise<TranscriptionError> {\n  const retryable = response.status >= 500;\n\n  let data: unknown;\n  try {\n    data = await response.json();\n  } catch {\n    return new TranscriptionError({\n      code: TranscriptionErrorCode.PROVIDER_ERROR,\n      message: `HTTP ${response.status}: ${response.statusText}`,\n      retryable,\n    });\n  }\n\n  if (isTranscriptionErrorResponse(data)) {\n    return new TranscriptionError({\n      code: data.error,\n      message: data.message,\n      retryable: data.retryable ?? false,\n    });\n  }\n\n  const message =\n    typeof data === \"object\" && data !== null && \"message\" in data\n      ? String((data as { message: unknown }).message)\n      : \"Transcription failed\";\n\n  return new TranscriptionError({\n    code: TranscriptionErrorCode.PROVIDER_ERROR,\n    message,\n    retryable,\n  });\n}\n\nfunction isTranscriptionErrorResponse(\n  data: unknown,\n): data is TranscriptionErrorResponse {\n  return (\n    typeof data === \"object\" &&\n    data !== null &&\n    typeof (data as TranscriptionErrorResponse).error === \"string\" &&\n    typeof (data as TranscriptionErrorResponse).message === \"string\"\n  );\n}\n","import { Injectable, ElementRef, NgZone, OnDestroy } from \"@angular/core\";\nimport { ScrollDispatcher, ViewportRuler } from \"@angular/cdk/scrolling\";\nimport {\n  Observable,\n  Subject,\n  BehaviorSubject,\n  fromEvent,\n  merge,\n  animationFrameScheduler,\n} from \"rxjs\";\nimport {\n  takeUntil,\n  debounceTime,\n  throttleTime,\n  distinctUntilChanged,\n  map,\n  startWith,\n} from \"rxjs/operators\";\n\nexport interface ScrollState {\n  isAtBottom: boolean;\n  scrollTop: number;\n  scrollHeight: number;\n  clientHeight: number;\n}\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class ScrollPosition implements OnDestroy {\n  private destroy$ = new Subject<void>();\n  private scrollStateSubject = new BehaviorSubject<ScrollState>({\n    isAtBottom: true,\n    scrollTop: 0,\n    scrollHeight: 0,\n    clientHeight: 0,\n  });\n\n  public scrollState$ = this.scrollStateSubject.asObservable();\n\n  constructor(\n    private scrollDispatcher: ScrollDispatcher,\n    private viewportRuler: ViewportRuler,\n    private ngZone: NgZone,\n  ) {}\n\n  /**\n   * Monitor scroll position of an element\n   * @param element The element to monitor\n   * @param threshold Pixels from bottom to consider \"at bottom\" (default 10)\n   */\n  monitorScrollPosition(\n    element: ElementRef<HTMLElement> | HTMLElement,\n    threshold: number = 10,\n  ): Observable<ScrollState> {\n    const el = element instanceof ElementRef ? element.nativeElement : element;\n\n    // Create scroll observable\n    const scroll$ = merge(\n      fromEvent(el, \"scroll\"),\n      this.viewportRuler.change(150), // Monitor viewport changes\n    ).pipe(\n      startWith(null), // Emit initial state\n      throttleTime(16, animationFrameScheduler, { trailing: true }), // ~60fps\n      map(() => this.getScrollState(el, threshold)),\n      distinctUntilChanged(\n        (a, b) =>\n          a.isAtBottom === b.isAtBottom &&\n          a.scrollTop === b.scrollTop &&\n          a.scrollHeight === b.scrollHeight,\n      ),\n      takeUntil(this.destroy$),\n    );\n\n    // Subscribe and update subject\n    scroll$.subscribe((state) => {\n      this.scrollStateSubject.next(state);\n    });\n\n    return scroll$;\n  }\n\n  /**\n   * Scroll element to bottom with smooth animation\n   * @param element The element to scroll\n   * @param smooth Whether to use smooth scrolling\n   */\n  scrollToBottom(\n    element: ElementRef<HTMLElement> | HTMLElement,\n    smooth: boolean = true,\n  ): void {\n    const el = element instanceof ElementRef ? element.nativeElement : element;\n\n    this.ngZone.runOutsideAngular(() => {\n      if (smooth && \"scrollBehavior\" in document.documentElement.style) {\n        el.scrollTo({\n          top: el.scrollHeight,\n          behavior: \"smooth\",\n        });\n      } else {\n        el.scrollTop = el.scrollHeight;\n      }\n    });\n  }\n\n  /**\n   * Check if element is at bottom\n   * @param element The element to check\n   * @param threshold Pixels from bottom to consider \"at bottom\"\n   */\n  isAtBottom(\n    element: ElementRef<HTMLElement> | HTMLElement,\n    threshold: number = 10,\n  ): boolean {\n    const el = element instanceof ElementRef ? element.nativeElement : element;\n    return this.getScrollState(el, threshold).isAtBottom;\n  }\n\n  /**\n   * Get current scroll state of element\n   */\n  public getScrollState(element: HTMLElement, threshold: number): ScrollState {\n    const scrollTop = element.scrollTop;\n    const scrollHeight = element.scrollHeight;\n    const clientHeight = element.clientHeight;\n    const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n    const isAtBottom = distanceFromBottom <= threshold;\n\n    return {\n      isAtBottom,\n      scrollTop,\n      scrollHeight,\n      clientHeight,\n    };\n  }\n\n  /**\n   * Create a ResizeObserver for element size changes\n   * @param element The element to observe\n   * @param debounceMs Debounce time in milliseconds\n   */\n  observeResize(\n    element: ElementRef<HTMLElement> | HTMLElement,\n    debounceMs: number = 250,\n  ): Observable<ResizeObserverEntry> {\n    const el = element instanceof ElementRef ? element.nativeElement : element;\n    const resize$ = new Subject<ResizeObserverEntry>();\n\n    const resizeObserver = new ResizeObserver((entries) => {\n      const entry = entries[0];\n      if (entry) {\n        this.ngZone.run(() => {\n          resize$.next(entry);\n        });\n      }\n    });\n\n    resizeObserver.observe(el);\n\n    // Cleanup on destroy\n    this.destroy$.subscribe(() => {\n      resizeObserver.disconnect();\n    });\n\n    return resize$.pipe(debounceTime(debounceMs), takeUntil(this.destroy$));\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.scrollStateSubject.complete();\n  }\n}\n","import { Injectable, ElementRef, NgZone, OnDestroy } from \"@angular/core\";\nimport { Observable, Subject, BehaviorSubject } from \"rxjs\";\nimport { debounceTime, takeUntil, distinctUntilChanged } from \"rxjs/operators\";\n\nexport interface ResizeState {\n  width: number;\n  height: number;\n  isResizing: boolean;\n}\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class ResizeObserverService implements OnDestroy {\n  private destroy$ = new Subject<void>();\n  private observers = new Map<HTMLElement, ResizeObserver>();\n  private resizeStates = new Map<HTMLElement, BehaviorSubject<ResizeState>>();\n  private resizeTimeouts = new Map<HTMLElement, number>();\n\n  constructor(private ngZone: NgZone) {}\n\n  /**\n   * Observe element resize with debouncing and resizing state\n   * @param element Element to observe\n   * @param debounceMs Debounce time (default 250ms)\n   * @param resizingDurationMs How long to show \"isResizing\" state (default 250ms)\n   */\n  observeElement(\n    element: ElementRef<HTMLElement> | HTMLElement,\n    debounceMs: number = 0,\n    resizingDurationMs: number = 250,\n  ): Observable<ResizeState> {\n    const el = element instanceof ElementRef ? element.nativeElement : element;\n\n    // Return existing observer if already observing\n    if (this.resizeStates.has(el)) {\n      return this.resizeStates.get(el)!.asObservable();\n    }\n\n    // Create new subject for this element\n    const resizeState$ = new BehaviorSubject<ResizeState>({\n      width: el.offsetWidth,\n      height: el.offsetHeight,\n      isResizing: false,\n    });\n\n    this.resizeStates.set(el, resizeState$);\n\n    // Create ResizeObserver\n    const resizeObserver = new ResizeObserver((entries) => {\n      if (entries.length === 0) return;\n\n      const entry = entries[0];\n      if (!entry) return;\n\n      const { width, height } = entry.contentRect;\n\n      this.ngZone.run(() => {\n        // Clear existing timeout\n        const existingTimeout = this.resizeTimeouts.get(el);\n        if (existingTimeout) {\n          clearTimeout(existingTimeout);\n        }\n\n        // Update state with isResizing = true\n        resizeState$.next({\n          width,\n          height,\n          isResizing: true,\n        });\n\n        // Set timeout to clear isResizing flag\n        if (resizingDurationMs > 0) {\n          const timeout = window.setTimeout(() => {\n            resizeState$.next({\n              width,\n              height,\n              isResizing: false,\n            });\n            this.resizeTimeouts.delete(el);\n          }, resizingDurationMs);\n\n          this.resizeTimeouts.set(el, timeout);\n        } else {\n          // If no duration, immediately set isResizing to false\n          resizeState$.next({\n            width,\n            height,\n            isResizing: false,\n          });\n        }\n      });\n    });\n\n    // Start observing\n    resizeObserver.observe(el);\n    this.observers.set(el, resizeObserver);\n\n    // Return observable with debouncing if specified\n    const observable = resizeState$.asObservable().pipe(\n      debounceMs > 0 ? debounceTime(debounceMs) : (source) => source,\n      distinctUntilChanged(\n        (a, b) =>\n          a.width === b.width &&\n          a.height === b.height &&\n          a.isResizing === b.isResizing,\n      ),\n      takeUntil(this.destroy$),\n    );\n\n    return observable;\n  }\n\n  /**\n   * Stop observing an element\n   * @param element Element to stop observing\n   */\n  unobserve(element: ElementRef<HTMLElement> | HTMLElement): void {\n    const el = element instanceof ElementRef ? element.nativeElement : element;\n\n    // Clear timeout if exists\n    const timeout = this.resizeTimeouts.get(el);\n    if (timeout) {\n      clearTimeout(timeout);\n      this.resizeTimeouts.delete(el);\n    }\n\n    // Disconnect observer\n    const observer = this.observers.get(el);\n    if (observer) {\n      observer.disconnect();\n      this.observers.delete(el);\n    }\n\n    // Complete and remove subject\n    const subject = this.resizeStates.get(el);\n    if (subject) {\n      subject.complete();\n      this.resizeStates.delete(el);\n    }\n  }\n\n  /**\n   * Get current size of element\n   * @param element Element to measure\n   */\n  getCurrentSize(element: ElementRef<HTMLElement> | HTMLElement): {\n    width: number;\n    height: number;\n  } {\n    const el = element instanceof ElementRef ? element.nativeElement : element;\n    return {\n      width: el.offsetWidth,\n      height: el.offsetHeight,\n    };\n  }\n\n  /**\n   * Get current resize state of element\n   * @param element Element to check\n   */\n  getCurrentState(\n    element: ElementRef<HTMLElement> | HTMLElement,\n  ): ResizeState | null {\n    const el = element instanceof ElementRef ? element.nativeElement : element;\n    const subject = this.resizeStates.get(el);\n    return subject ? subject.value : null;\n  }\n\n  ngOnDestroy(): void {\n    // Clear all timeouts\n    this.resizeTimeouts.forEach((timeout) => clearTimeout(timeout));\n    this.resizeTimeouts.clear();\n\n    // Disconnect all observers\n    this.observers.forEach((observer) => observer.disconnect());\n    this.observers.clear();\n\n    // Complete all subjects\n    this.resizeStates.forEach((subject) => subject.complete());\n    this.resizeStates.clear();\n\n    // Complete destroy subject\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Utility function to merge Tailwind CSS classes\n * Combines clsx for conditional classes and tailwind-merge for proper Tailwind class merging\n */\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n","import { effect, inject, Injector, runInInjectionContext } from \"@angular/core\";\nimport { Context } from \"@ag-ui/client\";\nimport { CopilotKit } from \"./copilotkit\";\n\nexport interface ConnectAgentContextConfig {\n  injector?: Injector;\n}\n\n/**\n * Connects context to the agent.\n *\n * @param context - The context (or reactive zero-argument accessor) to connect.\n * @param config - Optional configuration for connecting the context.\n */\nexport function connectAgentContext(\n  context: Context | (() => Context),\n  config?: ConnectAgentContextConfig,\n): void {\n  const injector = config?.injector ?? inject(Injector);\n\n  runInInjectionContext(injector, () => {\n    const copilotkit = inject(CopilotKit);\n\n    effect((teardown) => {\n      const contextValue = typeof context === \"function\" ? context() : context;\n      const id = copilotkit.core.addContext(contextValue);\n\n      teardown(() => {\n        copilotkit.core.removeContext(id);\n      });\n    });\n  });\n}\n","import { inject, Signal } from \"@angular/core\";\nimport { toSignal } from \"@angular/core/rxjs-interop\";\nimport {\n  ɵselectMemories,\n  ɵselectMemoriesAvailable,\n  ɵselectMemoriesError,\n  ɵselectMemoriesIsLoading,\n  ɵselectMemoriesRealtimeStatus,\n} from \"@copilotkit/core\";\nimport type {\n  Memory,\n  MemoryChanges,\n  MemoryRealtimeStatus,\n  NewMemory,\n} from \"@copilotkit/core\";\nimport { CopilotKit } from \"./copilotkit\";\n\n/**\n * Return value of {@link injectMemories}.\n *\n * The `memories` signal is the server-authoritative list for the current\n * runtime-authenticated user. It is hydrated from a REST snapshot and kept\n * current by realtime `memory_metadata` deltas pushed over the memory store's\n * own channel. Mutations resolve once the platform confirms the operation and\n * reject with an `Error` on failure.\n */\nexport interface MemoriesController {\n  /**\n   * Memories for the current user, newest first. Updated in realtime when the\n   * platform pushes `memory_metadata` events over the memory store's channel.\n   */\n  memories: Signal<Memory[]>;\n  /**\n   * `true` while the initial memory snapshot is being fetched. Subsequent\n   * realtime updates do not re-enter the loading state.\n   */\n  isLoading: Signal<boolean>;\n  /**\n   * The most recent error from fetching memories or a mutation, or `null`\n   * when there is no error. Cleared on the next fetch attempt, on a\n   * successful fetch, when the runtime context changes, and on a successful\n   * mutation (a failed mutation replaces it with that mutation's error).\n   */\n  error: Signal<Error | null>;\n  /**\n   * `true` when the platform memory routes are available. Set to `false`\n   * after a 404 or 501, indicating memory is not supported by the current\n   * runtime configuration.\n   */\n  isAvailable: Signal<boolean>;\n  /**\n   * Health of the realtime connection that streams live `memory_metadata`\n   * deltas. Distinct from `isAvailable`/`error` (which describe the REST list\n   * route): `\"connecting\"` while the socket opens/joins, `\"connected\"` once\n   * live deltas are flowing, and `\"unavailable\"` once the socket permanently\n   * gives up — at which point the list is a frozen snapshot. Lets a template\n   * drop a \"live\" indicator instead of showing it over stale data.\n   */\n  realtimeStatus: Signal<MemoryRealtimeStatus>;\n  /**\n   * Re-fetch the memory snapshot from the platform. Resolves when the re-pull\n   * succeeds; rejects if it fails or the store is torn down mid-flight.\n   */\n  refresh: () => Promise<void>;\n  /**\n   * Create a memory. Resolves to the stored memory (server-authoritative);\n   * rejects on failure.\n   */\n  addMemory: (input: NewMemory) => Promise<Memory>;\n  /**\n   * Supersede a memory: the old memory is retired and a new one is created.\n   * Resolves to the new memory (its `id` differs from the supplied `id`);\n   * rejects on failure.\n   *\n   * Supersede is a FULL replacement, not a partial patch: `changes` is the\n   * complete definition of the new memory. You must re-supply `content` and\n   * `kind`, and an omitted `sourceThreadIds` resets the new memory's source\n   * threads to empty — it does not preserve the prior memory's value.\n   */\n  updateMemory: (id: string, changes: MemoryChanges) => Promise<Memory>;\n  /**\n   * Retire a memory (non-lossy delete). Resolves when the server confirms;\n   * rejects on failure.\n   */\n  removeMemory: (id: string) => Promise<void>;\n}\n\n/**\n * Angular injection function for listing and managing platform memories — the\n * signal-based counterpart to react-core's `useMemories`.\n *\n * Reads the user-scoped memory store owned and wired by `CopilotKitCore`. The\n * binding does not create, register, start, or stop the store: core owns its\n * lifecycle and opens its own `user_meta:memories:<joinCode>` channel, applying\n * `memory_metadata` deltas to the list. The binding only bridges the store's\n * selectors onto Angular signals and forwards the stable mutation callbacks.\n *\n * Mutations are server-authoritative: each resolves once the platform confirms\n * the operation and rejects with an `Error` on failure. You can still call\n * `refresh()` to re-pull the REST snapshot on demand.\n *\n * Must be called inside an injection context (component constructor, field\n * initializer, `inject` callback, or `TestBed.runInInjectionContext`) so the\n * selector→signal bridges (`toSignal`) tear down with the host.\n *\n * @returns Signals for memory state and stable mutation callbacks.\n *\n * @example\n * ```ts\n * import { injectMemories } from \"@copilotkit/angular\";\n *\n * @Component({ ... })\n * class MemoryList {\n *   readonly #m = injectMemories();\n *   memories = this.#m.memories;\n *   isLoading = this.#m.isLoading;\n *   isAvailable = this.#m.isAvailable;\n *\n *   remove(id: string) { this.#m.removeMemory(id); }\n * }\n * ```\n */\nexport function injectMemories(): MemoriesController {\n  const store = inject(CopilotKit).core.getMemoryStore();\n\n  const initialState = store.getState();\n\n  const memories = toSignal(store.select(ɵselectMemories), {\n    initialValue: ɵselectMemories(initialState),\n  });\n  const isLoading = toSignal(store.select(ɵselectMemoriesIsLoading), {\n    initialValue: ɵselectMemoriesIsLoading(initialState),\n  });\n  const error = toSignal(store.select(ɵselectMemoriesError), {\n    initialValue: ɵselectMemoriesError(initialState),\n  });\n  const isAvailable = toSignal(store.select(ɵselectMemoriesAvailable), {\n    initialValue: ɵselectMemoriesAvailable(initialState),\n  });\n  const realtimeStatus = toSignal(store.select(ɵselectMemoriesRealtimeStatus), {\n    initialValue: ɵselectMemoriesRealtimeStatus(initialState),\n  });\n\n  return {\n    memories,\n    isLoading,\n    error,\n    isAvailable,\n    realtimeStatus,\n    refresh: () => store.refresh(),\n    addMemory: (input: NewMemory) => store.addMemory(input),\n    updateMemory: (id: string, changes: MemoryChanges) =>\n      store.updateMemory(id, changes),\n    removeMemory: (id: string) => store.removeMemory(id),\n  };\n}\n","import { Type, TemplateRef, InjectionToken } from \"@angular/core\";\n\n/**\n * Represents a value that can be used as a slot override.\n * Can be a component type or template reference only.\n * @internal - This type is for internal use only\n */\nexport type SlotValue<T = any> = Type<T> | TemplateRef<T>;\n\n/**\n * Configuration for a slot\n * @internal - This interface is for internal use only\n */\nexport interface SlotConfig<T = any> {\n  value?: SlotValue<T>;\n  default?: Type<T>;\n}\n\n/**\n * Context passed to slot templates\n */\nexport interface SlotContext<T = any> {\n  $implicit: T;\n  props?: Partial<T>;\n  [key: string]: any;\n}\n\n/**\n * Slot registry entry\n * @internal - This interface is for internal use only\n */\nexport interface SlotRegistryEntry<T = any> {\n  component?: Type<T>;\n  template?: TemplateRef<T>;\n}\n\n/**\n * Options for rendering a slot\n */\nexport interface RenderSlotOptions<T = any> {\n  slot?: SlotValue<T>;\n  defaultComponent: Type<T>;\n  props?: Partial<T>;\n  injector?: any;\n  outputs?: Record<string, (event: any) => void>;\n}\n\n/**\n * Injection token for slot configuration\n */\nexport const SLOT_CONFIG = new InjectionToken<\n  ReadonlyMap<string, SlotRegistryEntry>\n>(\"SLOT_CONFIG\");\n\n/**\n * Type for components with slots\n */\nexport type WithSlots<S extends Record<string, Type<any>>, Rest = object> = {\n  [K in keyof S as `${string & K}Component`]?: Type<any>;\n} & {\n  [K in keyof S as `${string & K}Template`]?: TemplateRef<any>;\n} & {\n  [K in keyof S as `${string & K}Class`]?: string;\n} & Rest;\n","import {\n  Type,\n  TemplateRef,\n  ViewContainerRef,\n  ComponentRef,\n  EmbeddedViewRef,\n  Injector,\n  inject,\n} from \"@angular/core\";\nimport {\n  SlotValue,\n  RenderSlotOptions,\n  SlotRegistryEntry,\n  SLOT_CONFIG,\n} from \"./slot.types\";\n\n/**\n * Renders a slot value into a ViewContainerRef.\n * This is the core utility for slot rendering.\n *\n * @param viewContainer - The ViewContainerRef to render into\n * @param options - Options for rendering the slot\n * @returns The created component or embedded view reference\n *\n * @example\n * ```typescript\n * export class MyComponent {\n *   @ViewChild('container', { read: ViewContainerRef }) container!: ViewContainerRef;\n *\n *   renderButton() {\n *     renderSlot(this.container, {\n *       slot: this.buttonOverride,\n *       defaultComponent: DefaultButton,\n *       props: { text: 'Click me' },\n *       outputs: { click: (event) => this.handleClick(event) }\n *     });\n *   }\n * }\n * ```\n */\nexport function renderSlot<T = any>(\n  viewContainer: ViewContainerRef,\n  options: RenderSlotOptions<T>,\n): ComponentRef<T> | EmbeddedViewRef<T> | null {\n  const { slot, defaultComponent, props, injector, outputs } = options;\n\n  viewContainer.clear();\n\n  const effectiveSlot = slot ?? defaultComponent;\n  const effectiveInjector = injector ?? viewContainer.injector;\n\n  if (effectiveSlot instanceof TemplateRef) {\n    // TemplateRef: render template\n    return viewContainer.createEmbeddedView(effectiveSlot, {\n      $implicit: props ?? {},\n      props: props ?? {},\n    } as any);\n  } else if (isComponentType(effectiveSlot)) {\n    // Component type - wrap in try/catch for safety\n    try {\n      return createComponent(\n        viewContainer,\n        effectiveSlot as Type<T>,\n        props,\n        effectiveInjector,\n        outputs,\n      );\n    } catch (error) {\n      console.warn(\"Failed to create component:\", effectiveSlot, error);\n      // Fall through to default component\n    }\n  }\n\n  // Default: render default component if provided\n  return defaultComponent\n    ? createComponent(\n        viewContainer,\n        defaultComponent,\n        props,\n        effectiveInjector,\n        outputs,\n      )\n    : null;\n}\n\n/**\n * Creates a component and applies properties.\n */\nfunction createComponent<T>(\n  viewContainer: ViewContainerRef,\n  component: Type<T>,\n  props?: Partial<T>,\n  injector?: Injector,\n  outputs?: Record<string, (event: any) => void>,\n): ComponentRef<T> {\n  const componentRef = viewContainer.createComponent(component, {\n    injector,\n  });\n\n  if (props) {\n    // Apply props using setInput, but only for declared inputs\n    const cmpDef: any = (component as any).ɵcmp;\n    const declaredInputs = new Set<string>(Object.keys(cmpDef?.inputs ?? {}));\n\n    if (declaredInputs.has(\"props\")) {\n      componentRef.setInput(\"props\", props as any);\n    } else {\n      for (const key in props) {\n        if (declaredInputs.has(key)) {\n          const value = (props as any)[key];\n          componentRef.setInput(key, value);\n        }\n      }\n    }\n  }\n\n  if (outputs) {\n    // Wire up output event handlers with proper cleanup\n    const instance = componentRef.instance as any;\n    const subscriptions: any[] = [];\n\n    for (const [eventName, handler] of Object.entries(outputs)) {\n      if (instance[eventName]?.subscribe) {\n        const subscription = instance[eventName].subscribe(handler);\n        subscriptions.push(subscription);\n      }\n    }\n\n    // Register cleanup on component destroy\n    componentRef.onDestroy(() => {\n      subscriptions.forEach((sub) => sub.unsubscribe());\n    });\n  }\n\n  // Trigger change detection\n  componentRef.changeDetectorRef.detectChanges();\n\n  return componentRef;\n}\n\n/**\n * Checks if a value is a component type.\n * Simplified check - rely on try/catch for actual validation.\n */\nexport function isComponentType(value: any): boolean {\n  // Arrow functions and regular functions without a prototype are not components\n  return typeof value === \"function\" && !!value.prototype;\n}\n\n/**\n * Checks if a value is a valid slot value.\n */\nexport function isSlotValue(value: any): value is SlotValue {\n  return value instanceof TemplateRef || isComponentType(value);\n}\n\n/**\n * Normalizes a slot value to a consistent format.\n */\nexport function normalizeSlotValue<T = any>(\n  value: SlotValue<T> | undefined,\n  defaultComponent: Type<T> | undefined,\n): SlotRegistryEntry<T> {\n  if (!value) {\n    return { component: defaultComponent };\n  }\n\n  if (value instanceof TemplateRef) {\n    return { template: value };\n  }\n\n  if (isComponentType(value)) {\n    return { component: value as Type<T> };\n  }\n\n  return { component: defaultComponent };\n}\n\n/**\n * Creates a slot configuration map for a component.\n * \n * @example\n * ```typescript\n * const slots = createSlotConfig({\n    standalone: true,\n*   sendButton: CustomSendButton,\n *   toolbar: 'custom-toolbar-class',\n *   footer: footerTemplate\n * }, {\n *   sendButton: DefaultSendButton,\n *   toolbar: DefaultToolbar,\n *   footer: DefaultFooter\n * });\n * ```\n */\nexport function createSlotConfig<T extends Record<string, Type<any>>>(\n  overrides: Partial<Record<keyof T, SlotValue>>,\n  defaults: T,\n): Map<keyof T, SlotRegistryEntry> {\n  const config = new Map<keyof T, SlotRegistryEntry>();\n\n  for (const key in defaults) {\n    const override = overrides[key];\n    const defaultComponent = defaults[key];\n    config.set(key, normalizeSlotValue(override, defaultComponent));\n  }\n\n  return config;\n}\n\n/**\n * Provides slot configuration to child components via DI.\n * \n * @example\n * ```typescript\n * @Component({\n  standalone: true,\n*   providers: [\n *     provideSlots({\n *       sendButton: CustomSendButton,\n *       toolbar: CustomToolbar\n *     })\n *   ]\n * })\n * ```\n */\nexport function provideSlots(slots: Record<string, Type<any>>) {\n  const slotMap = new Map<string, SlotRegistryEntry>();\n\n  // Only accept component types in DI (templates lack view context)\n  for (const [key, value] of Object.entries(slots)) {\n    if (isComponentType(value)) {\n      slotMap.set(key, { component: value as Type<any> });\n    }\n  }\n\n  return {\n    provide: SLOT_CONFIG,\n    useValue: slotMap,\n  };\n}\n\n/**\n * Gets slot configuration from DI.\n * Must be called within an injection context.\n *\n * @example\n * ```typescript\n * export class MyComponent {\n *   slots = getSlotConfig();\n *\n *   ngOnInit() {\n *     const sendButton = this.slots?.get('sendButton');\n *   }\n * }\n * ```\n */\nexport function getSlotConfig(): ReadonlyMap<string, SlotRegistryEntry> | null {\n  return inject(SLOT_CONFIG, { optional: true });\n}\n\n/**\n * Creates a render function for a specific slot.\n * Useful for creating reusable slot renderers.\n *\n * @example\n * ```typescript\n * const renderSendButton = createSlotRenderer(\n *   DefaultSendButton,\n *   'sendButton'\n * );\n *\n * // Later in template\n * renderSendButton(this.viewContainer, this.sendButtonOverride);\n * ```\n */\nexport function createSlotRenderer<T>(\n  defaultComponent: Type<T>,\n  slotName?: string,\n) {\n  // Get config in the injection context when the renderer is created\n  const config = slotName ? getSlotConfig() : null;\n\n  return (\n    viewContainer: ViewContainerRef,\n    slot?: SlotValue<T>,\n    props?: Partial<T>,\n    outputs?: Record<string, (event: any) => void>,\n  ) => {\n    // Check DI for overrides if slot name provided\n    if (slotName && !slot && config) {\n      const entry = config.get(slotName);\n      if (entry) {\n        if (entry.component) slot = entry.component;\n        else if (entry.template) slot = entry.template;\n      }\n    }\n\n    return renderSlot(viewContainer, {\n      slot,\n      defaultComponent,\n      props,\n      outputs,\n    });\n  };\n}\n","import {\n  Component,\n  TemplateRef,\n  ViewContainerRef,\n  OnInit,\n  OnChanges,\n  SimpleChanges,\n  Inject,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  input,\n  ViewChild,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { renderSlot } from \"./slot.utils\";\nimport { Type } from \"@angular/core\";\n\n/**\n * @internal - This component is for internal use only.\n * Simple slot component for rendering custom content or defaults.\n * Supports templates and components only.\n *\n * @example\n * ```html\n * <!-- With template -->\n * <copilot-slot [slot]=\"sendButtonTemplate\" [context]=\"buttonContext\">\n *   <button class=\"default-btn\">Default</button>\n * </copilot-slot>\n * ```\n */\n@Component({\n  standalone: true,\n  selector: \"copilot-slot\",\n  imports: [CommonModule],\n  template: `\n    <!-- If slot template provided, render it -->\n    @if (slot() && isTemplate(slot)) {\n      <ng-container\n        [ngTemplateOutlet]=\"slot\"\n        [ngTemplateOutletContext]=\"context || {}\"\n      >\n      </ng-container>\n    }\n\n    <!-- If not a template, we'll handle in code -->\n    <ng-container #slotContainer></ng-container>\n\n    <!-- Default content (only shown if no slot) -->\n    @if (!slot && !defaultComponent) {\n      <ng-content></ng-content>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CopilotSlot implements OnInit, OnChanges {\n  slot = input<TemplateRef<any> | Type<any> | undefined>(undefined);\n  context = input<any | undefined>(undefined);\n  defaultComponent = input<Type<any> | undefined>(undefined);\n  outputs = input<Record<string, (event: any) => void> | undefined>(undefined);\n\n  @ViewChild(\"slotContainer\", { read: ViewContainerRef, static: true })\n  private slotContainer!: ViewContainerRef;\n\n  private componentRef?: any;\n\n  constructor(\n    @Inject(ViewContainerRef) private viewContainer: ViewContainerRef,\n    private cdr: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit(): void {\n    this.renderSlot();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes[\"slot\"]) {\n      // Slot changed, need to re-render completely\n      this.renderSlot();\n    } else if (changes[\"context\"] && this.componentRef) {\n      // Just context changed, update existing component\n      this.updateComponentProps();\n      this.cdr.detectChanges();\n    } else if (changes[\"context\"]) {\n      // No component ref yet, render the slot\n      this.renderSlot();\n    }\n  }\n\n  isTemplate(value: any): value is TemplateRef<any> {\n    return value instanceof TemplateRef;\n  }\n\n  private renderSlot(): void {\n    // Skip if it's a template (handled by ngTemplateOutlet)\n    if (this.slot() && this.isTemplate(this.slot())) {\n      this.componentRef = null;\n      return;\n    }\n\n    // Clear previous content\n    this.slotContainer.clear();\n    this.componentRef = null;\n\n    // Skip if no slot and no default component\n    if (!this.slot() && !this.defaultComponent()) {\n      return;\n    }\n\n    // Use the utility to render other slot types\n    if (this.slot() || this.defaultComponent()) {\n      this.componentRef = renderSlot(this.slotContainer, {\n        slot: this.slot(),\n        defaultComponent: this.defaultComponent()!,\n        props: this.context(),\n        outputs: this.outputs(),\n      });\n    }\n  }\n\n  private updateComponentProps(): void {\n    if (!this.componentRef || !this.componentRef.instance) {\n      return;\n    }\n\n    const props = this.context();\n\n    // Update props using setInput, only for declared inputs\n    if (props) {\n      const ctor = this.componentRef.instance.constructor as any;\n      const cmpDef: any = ctor?.ɵcmp;\n      const declaredInputs = new Set<string>(Object.keys(cmpDef?.inputs ?? {}));\n\n      if (declaredInputs.has(\"props\")) {\n        this.componentRef.setInput(\"props\", props);\n      } else {\n        for (const key in props) {\n          if (declaredInputs.has(key)) {\n            const value = props[key];\n            this.componentRef.setInput(key, value);\n          }\n        }\n      }\n    }\n\n    // Trigger change detection\n    if (this.componentRef.changeDetectorRef) {\n      this.componentRef.changeDetectorRef.detectChanges();\n    }\n  }\n}\n","import {\n  Directive,\n  Input,\n  OnInit,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  Inject,\n} from \"@angular/core\";\nimport { CopilotKit } from \"../copilotkit\";\nimport type { Context } from \"@ag-ui/client\";\n\n/**\n * Directive to manage agent context in CopilotKit.\n * Automatically adds context on init, updates on changes, and removes on destroy.\n *\n * @example\n * ```html\n * <!-- With separate inputs -->\n * <div copilotkitAgentContext\n *      [description]=\"'User preferences'\"\n *      [value]=\"userSettings\">\n * </div>\n *\n * <!-- With context object -->\n * <div [copilotkitAgentContext]=\"contextObject\">\n * </div>\n *\n * <!-- With dynamic values -->\n * <div copilotkitAgentContext\n *      description=\"Form state\"\n *      [value]=\"formData$ | async\">\n * </div>\n * ```\n */\n@Directive({\n  selector: \"[copilotkitAgentContext]\",\n  standalone: true,\n})\nexport class CopilotKitAgentContext implements OnInit, OnChanges, OnDestroy {\n  private contextId?: string;\n\n  constructor(@Inject(CopilotKit) private readonly copilotkit: CopilotKit) {}\n\n  /**\n   * Context object containing both description and value.\n   * If provided, this takes precedence over individual inputs.\n   */\n  @Input(\"copilotkitAgentContext\") context?: Context;\n\n  /**\n   * Description of the context.\n   * Used when context object is not provided.\n   */\n  @Input() description?: string;\n\n  /**\n   * Value of the context.\n   * Used when context object is not provided.\n   */\n  @Input() value?: any;\n\n  ngOnInit(): void {\n    this.addContext();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    // Check if any relevant input has changed\n    const hasContextChange = \"context\" in changes;\n    const hasDescriptionChange = \"description\" in changes;\n    const hasValueChange = \"value\" in changes;\n\n    if (hasContextChange || hasDescriptionChange || hasValueChange) {\n      // Skip the first change as ngOnInit handles initial setup\n      if (this.contextId) {\n        this.updateContext();\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.removeContext();\n  }\n\n  /**\n   * Adds the context to CopilotKit\n   */\n  private addContext(): void {\n    const contextToAdd = this.getContext();\n\n    if (contextToAdd) {\n      this.contextId = this.copilotkit.core.addContext(contextToAdd);\n    }\n  }\n\n  /**\n   * Updates the context by removing the old one and adding a new one\n   */\n  private updateContext(): void {\n    this.removeContext();\n    this.addContext();\n  }\n\n  /**\n   * Removes the current context from CopilotKit\n   */\n  private removeContext(): void {\n    if (this.contextId) {\n      this.copilotkit.core.removeContext(this.contextId);\n      this.contextId = undefined;\n    }\n  }\n\n  /**\n   * Gets the context object from inputs\n   */\n  private getContext(): Context | null {\n    // If context object is provided, use it\n    if (this.context) {\n      return this.context;\n    }\n\n    // Otherwise, build from individual inputs\n    // Note: null is a valid value, but undefined means not set\n    if (this.description !== undefined && this.value !== undefined) {\n      return {\n        description: this.description,\n        value: this.value,\n      };\n    }\n\n    return null;\n  }\n}\n","import {\n  Directive,\n  ElementRef,\n  OnDestroy,\n  AfterViewInit,\n  PLATFORM_ID,\n  afterNextRender,\n  inject,\n  input,\n  output,\n} from \"@angular/core\";\nimport { isPlatformBrowser } from \"@angular/common\";\nimport { ScrollPosition } from \"../scroll-position\";\nimport { ResizeObserverService } from \"../resize-observer\";\nimport { Subject } from \"rxjs\";\nimport {\n  takeUntil,\n  debounceTime,\n  filter,\n  distinctUntilChanged,\n} from \"rxjs/operators\";\n\nexport type ScrollBehavior = \"smooth\" | \"instant\" | \"auto\";\n\n/**\n * Directive for implementing stick-to-bottom scroll behavior\n * Similar to the React use-stick-to-bottom library\n *\n * @example\n * ```html\n * <div copilotStickToBottom\n *      [enabled]=\"true\"\n *      [threshold]=\"10\"\n *      [initialBehavior]=\"'smooth'\"\n *      [resizeBehavior]=\"'smooth'\"\n *      (isAtBottomChange)=\"onBottomChange($event)\">\n *   <!-- Content -->\n * </div>\n * ```\n */\n@Directive({\n  standalone: true,\n  selector: \"[copilotStickToBottom]\",\n  providers: [ScrollPosition, ResizeObserverService],\n})\nexport class StickToBottom implements AfterViewInit, OnDestroy {\n  enabled = input<boolean>(true);\n  threshold = input<number>(10);\n  initialBehavior = input<ScrollBehavior>(\"smooth\");\n  resizeBehavior = input<ScrollBehavior>(\"smooth\");\n  debounceMs = input<number>(100);\n\n  isAtBottomChange = output<boolean>();\n  scrollToBottomRequested = output<void>();\n\n  private elementRef = inject(ElementRef);\n  private scrollService = inject(ScrollPosition);\n  private resizeService = inject(ResizeObserverService);\n  private platformId = inject(PLATFORM_ID);\n\n  private destroy$ = new Subject<void>();\n  private contentElement?: HTMLElement;\n  private wasAtBottom = true;\n  private hasInitialized = false;\n  private userHasScrolled = false;\n  private destroyed = false;\n\n  constructor() {\n    afterNextRender(() => {\n      if (this.destroyed) return;\n      this.hasInitialized = true;\n      if (this.enabled()) {\n        this.scrollToBottom(this.initialBehavior());\n      }\n    });\n  }\n\n  ngAfterViewInit(): void {\n    if (!isPlatformBrowser(this.platformId)) return;\n\n    const element = this.elementRef.nativeElement as HTMLElement;\n\n    // Find or create content wrapper\n    this.contentElement = element.querySelector(\n      \"[data-stick-to-bottom-content]\",\n    ) as HTMLElement;\n    if (!this.contentElement) {\n      this.contentElement = element;\n    }\n\n    this.setupScrollMonitoring();\n    this.setupResizeMonitoring();\n    this.setupContentMutationObserver();\n  }\n\n  private setupScrollMonitoring(): void {\n    if (!this.enabled()) return;\n\n    const element = this.elementRef.nativeElement;\n\n    // Monitor scroll position\n    this.scrollService\n      .monitorScrollPosition(element, this.threshold())\n      .pipe(\n        takeUntil(this.destroy$),\n        debounceTime(this.debounceMs()),\n        distinctUntilChanged((a, b) => a.isAtBottom === b.isAtBottom),\n      )\n      .subscribe((state) => {\n        const wasAtBottom = this.wasAtBottom;\n        this.wasAtBottom = state.isAtBottom;\n\n        // Detect user scroll\n        if (!state.isAtBottom && wasAtBottom && this.hasInitialized) {\n          this.userHasScrolled = true;\n        } else if (state.isAtBottom) {\n          this.userHasScrolled = false;\n        }\n\n        // Emit change\n        this.isAtBottomChange.emit(state.isAtBottom);\n      });\n  }\n\n  private setupResizeMonitoring(): void {\n    if (!this.enabled() || !this.contentElement) return;\n\n    // Monitor content resize\n    this.resizeService\n      .observeElement(this.contentElement, 0, 250)\n      .pipe(\n        takeUntil(this.destroy$),\n        filter(() => this.enabled() && !this.userHasScrolled),\n      )\n      .subscribe((state) => {\n        // Auto-scroll on resize if we were at bottom\n        if (this.wasAtBottom && !state.isResizing) {\n          this.scrollToBottom(this.resizeBehavior());\n        }\n      });\n\n    // Monitor container resize\n    const element = this.elementRef.nativeElement;\n    this.resizeService\n      .observeElement(element, 0, 250)\n      .pipe(\n        takeUntil(this.destroy$),\n        filter(\n          () => this.enabled() && !this.userHasScrolled && this.wasAtBottom,\n        ),\n      )\n      .subscribe(() => {\n        // Adjust scroll on container resize\n        this.scrollToBottom(this.resizeBehavior());\n      });\n  }\n\n  private setupContentMutationObserver(): void {\n    if (!this.enabled() || !this.contentElement) return;\n\n    const mutationObserver = new MutationObserver(() => {\n      if (this.enabled() && this.wasAtBottom && !this.userHasScrolled) {\n        // Content changed, scroll to bottom if we were there\n        requestAnimationFrame(() => {\n          this.scrollToBottom(this.resizeBehavior());\n        });\n      }\n    });\n\n    mutationObserver.observe(this.contentElement, {\n      childList: true,\n      subtree: true,\n      characterData: true,\n    });\n\n    // Cleanup on destroy\n    this.destroy$.subscribe(() => {\n      mutationObserver.disconnect();\n    });\n  }\n\n  /**\n   * Public method to scroll to bottom\n   * Can be called from parent component\n   */\n  public scrollToBottom(behavior: ScrollBehavior = \"smooth\"): void {\n    const element = this.elementRef.nativeElement;\n    const smooth = behavior === \"smooth\";\n\n    this.scrollService.scrollToBottom(element, smooth);\n    this.userHasScrolled = false;\n    this.scrollToBottomRequested.emit();\n  }\n\n  /**\n   * Check if currently at bottom\n   */\n  public isAtBottom(): boolean {\n    return this.scrollService.isAtBottom(\n      this.elementRef.nativeElement,\n      this.threshold(),\n    );\n  }\n\n  /**\n   * Get current scroll state\n   */\n  public getScrollState() {\n    const element = this.elementRef.nativeElement;\n    return {\n      scrollTop: element.scrollTop,\n      scrollHeight: element.scrollHeight,\n      clientHeight: element.clientHeight,\n      isAtBottom: this.isAtBottom(),\n    };\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed = true;\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","import {\n  Directive,\n  Input,\n  ElementRef,\n  HostListener,\n  OnDestroy,\n  inject,\n  ViewContainerRef,\n} from \"@angular/core\";\nimport {\n  Overlay,\n  OverlayRef,\n  OverlayPositionBuilder,\n  ConnectedPosition,\n} from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n} from \"@angular/core\";\n\n@Component({\n  selector: \"copilot-tooltip-content\",\n  standalone: true,\n  template: `\n    <div class=\"copilot-tooltip-wrapper\" [attr.data-position]=\"position\">\n      <div class=\"copilot-tooltip\">\n        {{ text }}\n      </div>\n      <div class=\"copilot-tooltip-arrow\"></div>\n    </div>\n  `,\n  styles: [\n    `\n      .copilot-tooltip-wrapper {\n        position: relative;\n        display: inline-block;\n        animation: fadeIn 0.15s ease-in-out;\n      }\n\n      .copilot-tooltip {\n        background-color: #1a1a1a;\n        color: white;\n        padding: 6px 10px;\n        border-radius: 6px;\n        font-size: 12px;\n        font-weight: 500;\n        white-space: nowrap;\n        max-width: 200px;\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n      }\n\n      .copilot-tooltip-arrow {\n        position: absolute;\n        width: 0;\n        height: 0;\n        border-style: solid;\n      }\n\n      /* Arrow for tooltip below element (arrow points up to tooltip) */\n      .copilot-tooltip-wrapper[data-position=\"below\"] .copilot-tooltip-arrow {\n        top: -4px;\n        left: 50%;\n        transform: translateX(-50%);\n        border-width: 0 4px 4px 4px;\n        border-color: transparent transparent #1a1a1a transparent;\n      }\n\n      /* Arrow for tooltip above element (arrow points down to element) */\n      .copilot-tooltip-wrapper[data-position=\"above\"] .copilot-tooltip-arrow {\n        bottom: -4px;\n        left: 50%;\n        transform: translateX(-50%);\n        border-width: 4px 4px 0 4px;\n        border-color: #1a1a1a transparent transparent transparent;\n      }\n\n      /* Arrow for tooltip to the left */\n      .copilot-tooltip-wrapper[data-position=\"left\"] .copilot-tooltip-arrow {\n        right: -4px;\n        top: 50%;\n        transform: translateY(-50%);\n        border-width: 4px 0 4px 4px;\n        border-color: transparent transparent transparent #1a1a1a;\n      }\n\n      /* Arrow for tooltip to the right */\n      .copilot-tooltip-wrapper[data-position=\"right\"] .copilot-tooltip-arrow {\n        left: -4px;\n        top: 50%;\n        transform: translateY(-50%);\n        border-width: 4px 4px 4px 0;\n        border-color: transparent #1a1a1a transparent transparent;\n      }\n\n      @keyframes fadeIn {\n        from {\n          opacity: 0;\n          transform: translateY(2px);\n        }\n        to {\n          opacity: 1;\n          transform: translateY(0);\n        }\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipContent {\n  text = \"\";\n  private _position: \"above\" | \"below\" | \"left\" | \"right\" = \"below\";\n\n  get position(): \"above\" | \"below\" | \"left\" | \"right\" {\n    return this._position;\n  }\n\n  set position(value: \"above\" | \"below\" | \"left\" | \"right\") {\n    this._position = value;\n    this.cdr.markForCheck();\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {}\n}\n\n@Directive({\n  selector: \"[copilotTooltip]\",\n  standalone: true,\n})\nexport class CopilotTooltip implements OnDestroy {\n  @Input(\"copilotTooltip\") tooltipText = \"\";\n  @Input() tooltipPosition: \"above\" | \"below\" | \"left\" | \"right\" = \"below\";\n  @Input() tooltipDelay = 500; // milliseconds\n\n  private overlay = inject(Overlay);\n  private overlayPositionBuilder = inject(OverlayPositionBuilder);\n  private elementRef = inject(ElementRef);\n  private viewContainerRef = inject(ViewContainerRef);\n\n  private overlayRef?: OverlayRef;\n  private tooltipTimeout?: number;\n  private originalTitle?: string;\n\n  @HostListener(\"mouseenter\")\n  onMouseEnter(): void {\n    if (!this.tooltipText) return;\n\n    // Store and remove native title to prevent OS tooltip\n    const element = this.elementRef.nativeElement;\n    if (element.hasAttribute(\"title\")) {\n      this.originalTitle = element.getAttribute(\"title\");\n      element.removeAttribute(\"title\");\n    }\n\n    // Clear any existing timeout\n    if (this.tooltipTimeout) {\n      clearTimeout(this.tooltipTimeout);\n    }\n\n    // Set timeout to show tooltip after delay\n    this.tooltipTimeout = window.setTimeout(() => {\n      this.show();\n    }, this.tooltipDelay);\n  }\n\n  @HostListener(\"mouseleave\")\n  onMouseLeave(): void {\n    // Clear timeout if mouse leaves before tooltip shows\n    if (this.tooltipTimeout) {\n      clearTimeout(this.tooltipTimeout);\n      this.tooltipTimeout = undefined;\n    }\n\n    // Restore original title if it existed\n    if (this.originalTitle !== undefined) {\n      this.elementRef.nativeElement.setAttribute(\"title\", this.originalTitle);\n      this.originalTitle = undefined;\n    }\n\n    // Hide tooltip if it's showing\n    this.hide();\n  }\n\n  private show(): void {\n    if (this.overlayRef) {\n      return;\n    }\n\n    // Create overlay\n    const positionStrategy = this.overlayPositionBuilder\n      .flexibleConnectedTo(this.elementRef)\n      .withPositions(this.getPositions())\n      .withPush(false);\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.close(),\n      hasBackdrop: false,\n    });\n\n    // Create component portal and attach\n    const portal = new ComponentPortal(TooltipContent, this.viewContainerRef);\n    const componentRef = this.overlayRef.attach(portal);\n    componentRef.instance.text = this.tooltipText;\n\n    // Detect actual position after overlay is positioned\n    setTimeout(() => {\n      if (this.overlayRef && this.elementRef.nativeElement) {\n        const tooltipRect =\n          this.overlayRef.overlayElement.getBoundingClientRect();\n        const elementRect =\n          this.elementRef.nativeElement.getBoundingClientRect();\n\n        let actualPosition: \"above\" | \"below\" | \"left\" | \"right\" = \"below\";\n\n        // Determine actual position based on relative positions\n        if (tooltipRect.bottom <= elementRect.top) {\n          actualPosition = \"above\";\n        } else if (tooltipRect.top >= elementRect.bottom) {\n          actualPosition = \"below\";\n        } else if (tooltipRect.right <= elementRect.left) {\n          actualPosition = \"left\";\n        } else if (tooltipRect.left >= elementRect.right) {\n          actualPosition = \"right\";\n        }\n\n        componentRef.instance.position = actualPosition;\n      }\n    }, 0);\n  }\n\n  private hide(): void {\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n      this.overlayRef = undefined;\n    }\n  }\n\n  private getPositions(): ConnectedPosition[] {\n    const positions: Record<string, ConnectedPosition[]> = {\n      above: [\n        {\n          originX: \"center\",\n          originY: \"top\",\n          overlayX: \"center\",\n          overlayY: \"bottom\",\n          offsetY: -12,\n        },\n      ],\n      below: [\n        {\n          originX: \"center\",\n          originY: \"bottom\",\n          overlayX: \"center\",\n          overlayY: \"top\",\n          offsetY: 12,\n        },\n      ],\n      left: [\n        {\n          originX: \"start\",\n          originY: \"center\",\n          overlayX: \"end\",\n          overlayY: \"center\",\n          offsetX: -12,\n        },\n      ],\n      right: [\n        {\n          originX: \"end\",\n          originY: \"center\",\n          overlayX: \"start\",\n          overlayY: \"center\",\n          offsetX: 12,\n        },\n      ],\n    };\n\n    // Prefer below position, but use above as fallback\n    const primary = positions[this.tooltipPosition] || positions.below;\n    // For below position, add above as first fallback\n    const fallbacks =\n      this.tooltipPosition === \"below\"\n        ? [\n            ...(positions.above || []),\n            ...(positions.left || []),\n            ...(positions.right || []),\n          ]\n        : Object.values(positions)\n            .filter((p) => p !== primary)\n            .flat();\n\n    return [...(primary || []), ...fallbacks];\n  }\n\n  ngOnDestroy(): void {\n    if (this.tooltipTimeout) {\n      clearTimeout(this.tooltipTimeout);\n    }\n    // Restore original title if it existed\n    if (this.originalTitle !== undefined) {\n      this.elementRef.nativeElement.setAttribute(\"title\", this.originalTitle);\n    }\n    this.hide();\n  }\n}\n","import { Component, ChangeDetectionStrategy, input } from \"@angular/core\";\n\nimport type { AssistantMessage, Message } from \"@ag-ui/core\";\nimport { RenderToolCalls } from \"../../render-tool-calls\";\n\n@Component({\n  selector: \"copilot-chat-tool-calls-view\",\n  imports: [RenderToolCalls],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <copilot-render-tool-calls\n      [message]=\"message()\"\n      [messages]=\"messages()\"\n      [agentId]=\"agentId()\"\n      [isLoading]=\"isLoading()\"\n    >\n    </copilot-render-tool-calls>\n  `,\n})\nexport class CopilotChatToolCallsView {\n  readonly message = input.required<AssistantMessage>();\n  readonly messages = input.required<Message[]>();\n  readonly agentId = input<string | undefined>();\n  readonly isLoading = input<boolean>(false);\n}\n","import {\n  Component,\n  input,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  computed,\n  effect,\n  inject,\n  ElementRef,\n  AfterViewInit,\n  ViewChild,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { Marked } from \"marked\";\nimport hljs from \"highlight.js\";\nimport * as katex from \"katex\";\nimport { completePartialMarkdown } from \"@copilotkit/core\";\nimport { copyToClipboard } from \"@copilotkit/shared\";\nimport { injectChatLabels } from \"../../chat-config\";\n\nfunction processMathEquationsInHtml(html: string): string {\n  // First, temporarily replace code blocks with placeholders to protect them from math processing\n  const codeBlocks: string[] = [];\n  const placeholder = \"___CODE_BLOCK_PLACEHOLDER_\";\n\n  // Store code blocks and replace with placeholders\n  html = html.replace(/<pre><code[\\s\\S]*?<\\/code><\\/pre>/g, (match) => {\n    const index = codeBlocks.length;\n    codeBlocks.push(match);\n    return `${placeholder}${index}___`;\n  });\n\n  // Also protect inline code\n  const inlineCode: string[] = [];\n  const inlinePlaceholder = \"___INLINE_CODE_PLACEHOLDER_\";\n  html = html.replace(/<code>[\\s\\S]*?<\\/code>/g, (match) => {\n    const index = inlineCode.length;\n    inlineCode.push(match);\n    return `${inlinePlaceholder}${index}___`;\n  });\n\n  // Process display math $$ ... $$\n  html = html.replace(/\\$\\$([\\s\\S]*?)\\$\\$/g, (match, equation) => {\n    try {\n      return katex.renderToString(equation, {\n        displayMode: true,\n        throwOnError: false,\n      });\n    } catch {\n      return match;\n    }\n  });\n\n  // A closing inline-math delimiter cannot be preceded by whitespace or\n  // followed by a digit. Those delimiter rules keep ordinary currency ranges\n  // such as \"$349 ... $289\" from becoming one large KaTeX expression.\n  html = html.replace(\n    /(?<!\\\\)\\$(?!\\s)([^$\\n]*?\\S)\\$(?!\\d)/g,\n    (match, equation) => {\n      try {\n        return katex.renderToString(equation, {\n          displayMode: false,\n          throwOnError: false,\n        });\n      } catch {\n        return match;\n      }\n    },\n  );\n\n  // Restore code blocks\n  codeBlocks.forEach((block, index) => {\n    html = html.replace(`${placeholder}${index}___`, block);\n  });\n\n  // Restore inline code\n  inlineCode.forEach((code, index) => {\n    html = html.replace(`${inlinePlaceholder}${index}___`, code);\n  });\n\n  return html;\n}\n\n@Component({\n  standalone: true,\n  selector: \"copilot-chat-assistant-message-renderer\",\n  imports: [CommonModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div\n      #markdownContainer\n      [class]=\"inputClass()\"\n      (click)=\"handleClick($event)\"\n    ></div>\n  `,\n  styles: [\n    `\n      copilot-chat-assistant-message-renderer {\n        display: block;\n        width: 100%;\n      }\n\n      /* Inline code styling */\n      copilot-chat-assistant-message-renderer code:not(pre code) {\n        padding: 2.5px 4.8px;\n        background-color: rgb(236, 236, 236);\n        border-radius: 0.25rem;\n        font-size: 0.875rem;\n        font-family:\n          ui-monospace, SFMono-Regular, \"SF Mono\", Consolas, \"Liberation Mono\", Menlo,\n          monospace;\n        font-weight: 500;\n        color: #000000;\n      }\n\n      .dark copilot-chat-assistant-message-renderer code:not(pre code) {\n        background-color: #171717; /* same as code blocks */\n        color: rgb(248, 250, 252); /* text-foreground in dark mode */\n      }\n\n      /* Code block container */\n      copilot-chat-assistant-message-renderer .code-block-container {\n        position: relative;\n        margin: 0.25rem 0;\n        background-color: rgb(249, 249, 249);\n        border-radius: 1rem;\n      }\n\n      .dark copilot-chat-assistant-message-renderer .code-block-container {\n        background-color: #171717;\n      }\n\n      copilot-chat-assistant-message-renderer .code-block-header {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        padding: 0.75rem 1rem 0.75rem 1rem;\n        font-size: 0.75rem;\n        background-color: transparent;\n      }\n\n      copilot-chat-assistant-message-renderer .code-block-language {\n        font-weight: 400;\n        color: rgba(115, 115, 115, 1);\n      }\n\n      .dark copilot-chat-assistant-message-renderer .code-block-language {\n        color: white;\n      }\n\n      copilot-chat-assistant-message-renderer .code-block-copy-button {\n        display: flex;\n        align-items: center;\n        gap: 0.125rem;\n        padding: 0 0.5rem;\n        font-size: 0.75rem;\n        color: rgba(115, 115, 115, 1);\n        cursor: pointer;\n        background: none;\n        border: none;\n        transition: opacity 0.2s;\n      }\n\n      .dark copilot-chat-assistant-message-renderer .code-block-copy-button {\n        color: white;\n      }\n\n      copilot-chat-assistant-message-renderer .code-block-copy-button:hover {\n        opacity: 0.8;\n      }\n\n      copilot-chat-assistant-message-renderer .code-block-copy-button svg {\n        width: 10px;\n        height: 10px;\n      }\n\n      copilot-chat-assistant-message-renderer .code-block-copy-button span {\n        font-size: 11px;\n      }\n\n      copilot-chat-assistant-message-renderer pre {\n        margin: 0;\n        padding: 0 1rem 1rem 1rem;\n        overflow-x: auto;\n        background-color: transparent;\n        border-radius: 1rem;\n      }\n\n      .dark copilot-chat-assistant-message-renderer pre {\n        background-color: transparent;\n      }\n\n      copilot-chat-assistant-message-renderer pre code {\n        background-color: transparent;\n        padding: 0;\n        font-size: 0.875rem;\n        font-family:\n          ui-monospace, SFMono-Regular, \"SF Mono\", Consolas, \"Liberation Mono\", Menlo,\n          monospace;\n      }\n\n      /* Highlight.js theme adjustments */\n      copilot-chat-assistant-message-renderer .hljs {\n        background: transparent;\n        color: rgb(56, 58, 66);\n      }\n\n      .dark copilot-chat-assistant-message-renderer .hljs {\n        background: transparent;\n        color: #abb2bf;\n      }\n\n      /* Math equations */\n      copilot-chat-assistant-message-renderer .katex-display {\n        overflow-x: auto;\n        overflow-y: hidden;\n        padding: 1rem 0;\n      }\n    `,\n  ],\n})\nexport class CopilotChatAssistantMessageRenderer implements AfterViewInit {\n  readonly content = input<string>(\"\");\n  readonly inputClass = input<string | undefined>();\n  readonly labels = injectChatLabels();\n\n  @ViewChild(\"markdownContainer\", { static: false })\n  markdownContainer?: ElementRef<HTMLDivElement>;\n\n  private elementRef = inject(ElementRef);\n\n  // Track copy states for code blocks (DOM-updated; no signal needed)\n  private copyStates = new Map<string, boolean>();\n\n  readonly renderedHtml = computed(() => {\n    const currentContent = this.content();\n    const completedMarkdown = completePartialMarkdown(currentContent);\n    return this.renderMarkdown(completedMarkdown);\n  });\n\n  constructor() {\n    // React to content changes using signals\n    effect(() => {\n      // Read content to establish dependency\n      this.content();\n      // Reset copy states when content changes\n      this.copyStates.clear();\n      // If view is ready, update DOM\n      if (this.markdownContainer) {\n        this.updateContent();\n        this.renderMathEquations();\n      }\n    });\n  }\n\n  ngAfterViewInit(): void {\n    this.updateContent();\n    this.renderMathEquations();\n  }\n\n  private updateContent(): void {\n    if (!this.markdownContainer) return;\n    const container = this.markdownContainer.nativeElement;\n    const html = this.renderedHtml();\n    container.innerHTML = html;\n  }\n\n  private codeBlocksMap = new Map<string, string>();\n  private markedInstance: Marked | null = null;\n\n  private initializeMarked(): void {\n    if (this.markedInstance) return;\n\n    // Store highlighted code blocks temporarily\n    const highlightedBlocks = new Map<string, string>();\n\n    // Create a new Marked instance\n    this.markedInstance = new Marked();\n\n    // Configure marked options\n    this.markedInstance.setOptions({\n      gfm: true,\n      breaks: true,\n    });\n\n    // Add a walkTokens function to process code tokens before rendering\n    this.markedInstance.use({\n      walkTokens: (token: any) => {\n        if (token.type === \"code\") {\n          const rawCode = token.text;\n          const lang = token.lang || \"\";\n\n          const blockId = this.generateBlockId(rawCode);\n          // Store the raw code in our map for copying\n          this.codeBlocksMap.set(blockId, rawCode);\n\n          const copyLabel = this.labels.assistantMessageToolbarCopyCodeLabel;\n\n          // Manually highlight the code\n          const language = hljs.getLanguage(lang) ? lang : \"plaintext\";\n          const highlighted = hljs.highlight(rawCode, { language }).value;\n          const codeClass = lang ? `hljs language-${lang}` : \"hljs\";\n\n          // Create the full HTML with header and highlighted code\n          const fullHtml = `\n            <div class=\"code-block-container\">\n              <div class=\"code-block-header\">\n                ${lang ? `<span class=\"code-block-language\">${lang}</span>` : \"<span></span>\"}\n                <button \n                  class=\"code-block-copy-button\" \n                  data-code-block-id=\"${blockId}\"\n                  aria-label=\"${copyLabel} code\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.11 0-2-.9-2-2V4c0-1.11.89-2 2-2h10c1.11 0 2 .89 2 2\"/></svg>\n                  <span>${copyLabel}</span>\n                </button>\n              </div>\n              <pre><code class=\"${codeClass}\">${highlighted}</code></pre>\n            </div>\n          `;\n\n          // Store the highlighted HTML\n          highlightedBlocks.set(blockId, fullHtml);\n\n          // Change the token to an html token to bypass marked's escaping\n          token.type = \"html\";\n          token.text = fullHtml;\n        }\n      },\n    });\n  }\n\n  private renderMarkdown(content: string): string {\n    // Initialize marked if not already done\n    this.initializeMarked();\n\n    // Clear the code blocks map for new render\n    this.codeBlocksMap.clear();\n\n    // Parse markdown\n    let html = this.markedInstance!.parse(content) as string;\n\n    // Process math equations\n    html = processMathEquationsInHtml(html);\n\n    return html;\n  }\n\n  private renderMathEquations(): void {\n    if (!this.markdownContainer) return;\n\n    const container = this.markdownContainer.nativeElement;\n\n    // Find all math placeholders and render them\n    const mathElements = container.querySelectorAll(\".math-placeholder\");\n    mathElements.forEach((element) => {\n      const equation = element.getAttribute(\"data-equation\");\n      const displayMode = element.getAttribute(\"data-display\") === \"true\";\n\n      if (equation) {\n        try {\n          katex.render(equation, element as HTMLElement, {\n            displayMode,\n            throwOnError: false,\n          });\n        } catch (error) {\n          console.error(\"Failed to render math equation:\", error);\n        }\n      }\n    });\n  }\n\n  handleClick(event: MouseEvent): void {\n    const target = event.target as HTMLElement;\n\n    // Check if clicked on copy button or its children\n    const copyButton = target.closest(\n      \".code-block-copy-button\",\n    ) as HTMLButtonElement;\n    if (copyButton) {\n      event.preventDefault();\n      const blockId = copyButton.getAttribute(\"data-code-block-id\");\n\n      if (blockId) {\n        // Get the raw code from our map instead of from DOM\n        const code = this.codeBlocksMap.get(blockId);\n        if (code) {\n          this.copyCodeBlock(blockId, code);\n        }\n      }\n    }\n  }\n\n  private copyCodeBlock(blockId: string, code: string): void {\n    copyToClipboard(code).then((success) => {\n      if (!success) return;\n\n      // Update the button in the DOM\n      const button = this.elementRef.nativeElement.querySelector(\n        `[data-code-block-id=\"${blockId}\"]`,\n      );\n      if (button) {\n        const originalHTML = button.innerHTML;\n        button.innerHTML = `\n            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg>\n            <span>${this.labels.assistantMessageToolbarCopyCodeCopiedLabel}</span>\n          `;\n        button.setAttribute(\n          \"aria-label\",\n          `${this.labels.assistantMessageToolbarCopyCodeCopiedLabel} code`,\n        );\n\n        // Reset after 2 seconds\n        setTimeout(() => {\n          button.innerHTML = originalHTML;\n          button.setAttribute(\n            \"aria-label\",\n            `${this.labels.assistantMessageToolbarCopyCodeLabel} code`,\n          );\n        }, 2000);\n      }\n    });\n  }\n\n  private generateBlockId(code: string): string {\n    // Simple hash function for generating unique IDs\n    let hash = 0;\n    for (let i = 0; i < code.length; i++) {\n      const char = code.charCodeAt(i);\n      hash = (hash << 5) - hash + char;\n      hash = hash & hash; // Convert to 32-bit integer\n    }\n    return `code-block-${hash}`;\n  }\n\n  private escapeHtml(text: string): string {\n    const div = document.createElement(\"div\");\n    div.textContent = text;\n    return div.innerHTML;\n  }\n}\n","import { ChangeDetectionStrategy, Component, input } from \"@angular/core\";\n\nexport interface CopilotIconNode {\n  readonly tag: \"path\" | \"rect\";\n  readonly attributes: Readonly<Record<string, string>>;\n}\n\nexport type CopilotIconData = readonly CopilotIconNode[];\n\n/** Framework-independent renderer for the small Lucide subset used by chat. */\n@Component({\n  selector: \"copilot-icon\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { \"aria-hidden\": \"true\" },\n  styles: `\n    :host {\n      display: inline-flex;\n      line-height: 0;\n    }\n\n    svg {\n      display: block;\n    }\n  `,\n  template: `\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      stroke-width=\"2\"\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      focusable=\"false\"\n      aria-hidden=\"true\"\n      [attr.width]=\"size()\"\n      [attr.height]=\"size()\"\n    >\n      @for (node of img(); track $index) {\n        @switch (node.tag) {\n          @case (\"path\") {\n            <path [attr.d]=\"node.attributes['d']\" />\n          }\n          @case (\"rect\") {\n            <rect\n              [attr.x]=\"node.attributes['x']\"\n              [attr.y]=\"node.attributes['y']\"\n              [attr.width]=\"node.attributes['width']\"\n              [attr.height]=\"node.attributes['height']\"\n              [attr.rx]=\"node.attributes['rx']\"\n              [attr.ry]=\"node.attributes['ry']\"\n            />\n          }\n        }\n      }\n    </svg>\n  `,\n})\nexport class CopilotIcon {\n  readonly img = input.required<CopilotIconData>();\n  readonly size = input(24);\n}\n\nfunction path(d: string): CopilotIconNode {\n  return { tag: \"path\", attributes: { d } };\n}\n\nfunction rect(attributes: Readonly<Record<string, string>>): CopilotIconNode {\n  return { tag: \"rect\", attributes };\n}\n\n// Icon paths are from Lucide (ISC), limited to the subset used by chat.\nexport const ArrowUp: CopilotIconData = [\n  path(\"m5 12 7-7 7 7\"),\n  path(\"M12 19V5\"),\n];\nexport const Check: CopilotIconData = [path(\"M20 6 9 17l-5-5\")];\nexport const ChevronDown: CopilotIconData = [path(\"m6 9 6 6 6-6\")];\nexport const ChevronLeft: CopilotIconData = [path(\"m15 18-6-6 6-6\")];\nexport const ChevronRight: CopilotIconData = [path(\"m9 18 6-6-6-6\")];\nexport const Copy: CopilotIconData = [\n  rect({ width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\" }),\n  path(\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"),\n];\nexport const Edit: CopilotIconData = [\n  path(\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"),\n  path(\n    \"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\",\n  ),\n];\nexport const Mic: CopilotIconData = [\n  path(\"M12 19v3\"),\n  path(\"M19 10v2a7 7 0 0 1-14 0v-2\"),\n  rect({ x: \"9\", y: \"2\", width: \"6\", height: \"13\", rx: \"3\" }),\n];\nexport const Plus: CopilotIconData = [path(\"M5 12h14\"), path(\"M12 5v14\")];\nexport const RefreshCw: CopilotIconData = [\n  path(\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\"),\n  path(\"M21 3v5h-5\"),\n  path(\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\"),\n  path(\"M8 16H3v5\"),\n];\nexport const ThumbsDown: CopilotIconData = [\n  path(\"M17 14V2\"),\n  path(\n    \"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\",\n  ),\n];\nexport const ThumbsUp: CopilotIconData = [\n  path(\"M7 10v12\"),\n  path(\n    \"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\",\n  ),\n];\nexport const Upload: CopilotIconData = [\n  path(\"M12 3v12\"),\n  path(\"m17 8-5-5-5 5\"),\n  path(\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"),\n];\nexport const Volume2: CopilotIconData = [\n  path(\n    \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n  ),\n  path(\"M16 9a5 5 0 0 1 0 6\"),\n  path(\"M19.364 18.364a9 9 0 0 0 0-12.728\"),\n];\nexport const X: CopilotIconData = [path(\"M18 6 6 18\"), path(\"m6 6 12 12\")];\n","import {\n  Component,\n  input,\n  output,\n  signal,\n  computed,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport {\n  CopilotIcon,\n  Copy,\n  Check,\n  ThumbsUp,\n  ThumbsDown,\n  Volume2,\n  RefreshCw,\n} from \"../icons/copilot-icon\";\nimport { CopilotTooltip } from \"../../directives/tooltip\";\nimport { cn } from \"../../utils\";\nimport { injectChatLabels } from \"../../chat-config\";\nimport { copyToClipboard } from \"@copilotkit/shared\";\n\n// Base toolbar button component\n@Component({\n  selector: \"button[copilotChatAssistantMessageToolbarButton]\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <ng-content></ng-content>\n  `,\n  host: {\n    \"[class]\": \"computedClass()\",\n    \"[attr.disabled]\": \"disabled() ? true : null\",\n    type: \"button\",\n    \"[attr.aria-label]\": \"title()\",\n  },\n  hostDirectives: [\n    {\n      directive: CopilotTooltip,\n      inputs: [\"copilotTooltip: title\", \"tooltipPosition\", \"tooltipDelay\"],\n    },\n  ],\n})\nexport class CopilotChatAssistantMessageToolbarButton {\n  title = input<string>(\"\");\n  disabled = input<boolean>(false);\n  inputClass = input<string | undefined>();\n\n  computedClass = computed(() => {\n    return cn(\n      // Flex centering with gap (from React button base styles)\n      \"cpk:inline-flex cpk:items-center cpk:justify-center cpk:gap-2\",\n      // Cursor\n      \"cpk:cursor-pointer\",\n      // Background and text\n      \"cpk:p-0 cpk:text-[rgb(93,93,93)] cpk:hover:bg-[#E8E8E8]\",\n      // Dark mode\n      \"cpk:dark:text-[rgb(243,243,243)] cpk:dark:hover:bg-[#303030]\",\n      // Shape and sizing\n      \"cpk:h-8 cpk:w-8 cpk:rounded-md\",\n      // Interactions\n      \"cpk:transition-colors\",\n      // Hover states\n      \"cpk:hover:text-[rgb(93,93,93)]\",\n      \"cpk:dark:hover:text-[rgb(243,243,243)]\",\n      // Focus states\n      \"cpk:focus:outline-none cpk:focus:ring-2 cpk:focus:ring-offset-2\",\n      // Disabled state\n      \"cpk:disabled:opacity-50 cpk:disabled:cursor-not-allowed\",\n      // SVG styling from React Button component\n      \"cpk:[&_svg]:pointer-events-none cpk:[&_svg]:shrink-0\",\n      // Ensure proper sizing\n      \"cpk:shrink-0\",\n      this.inputClass(),\n    );\n  });\n}\n\n// Copy button component\n@Component({\n  selector: \"copilot-chat-assistant-message-copy-button\",\n  imports: [CopilotIcon, CopilotChatAssistantMessageToolbarButton],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      copilotChatAssistantMessageToolbarButton\n      [title]=\"title() || labels.assistantMessageToolbarCopyMessageLabel\"\n      [disabled]=\"disabled()\"\n      [inputClass]=\"inputClass()\"\n      (click)=\"handleCopy($event)\"\n    >\n      @if (copied()) {\n        <copilot-icon [img]=\"CheckIcon\" [size]=\"18\"></copilot-icon>\n      } @else {\n        <copilot-icon [img]=\"CopyIcon\" [size]=\"18\"></copilot-icon>\n      }\n    </button>\n  `,\n})\nexport class CopilotChatAssistantMessageCopyButton {\n  readonly title = input<string | undefined>();\n  readonly disabled = input<boolean>(false);\n  readonly inputClass = input<string | undefined>();\n  readonly content = input<string | undefined>();\n  readonly clicked = output<void>();\n  readonly CopyIcon = Copy;\n  readonly CheckIcon = Check;\n  readonly copied = signal(false);\n  readonly labels = injectChatLabels();\n\n  handleCopy(event?: Event): void {\n    event?.stopPropagation();\n    if (!this.content()) return;\n\n    copyToClipboard(this.content()!).then((success) => {\n      if (success) {\n        this.copied.set(true);\n        this.clicked.emit();\n        setTimeout(() => this.copied.set(false), 2000);\n      }\n    });\n  }\n}\n\n// Thumbs up button component\n@Component({\n  selector: \"copilot-chat-assistant-message-thumbs-up-button\",\n  imports: [CopilotIcon, CopilotChatAssistantMessageToolbarButton],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      copilotChatAssistantMessageToolbarButton\n      [title]=\"title() || labels.assistantMessageToolbarThumbsUpLabel\"\n      [disabled]=\"disabled()\"\n      [inputClass]=\"inputClass()\"\n      (click)=\"handleClick($event)\"\n    >\n      <copilot-icon [img]=\"ThumbsUpIcon\" [size]=\"18\"></copilot-icon>\n    </button>\n  `,\n})\nexport class CopilotChatAssistantMessageThumbsUpButton {\n  readonly title = input<string | undefined>();\n  readonly disabled = input<boolean>(false);\n  readonly inputClass = input<string | undefined>();\n  readonly clicked = output<void>();\n  readonly ThumbsUpIcon = ThumbsUp;\n  readonly labels = injectChatLabels();\n\n  handleClick(event?: Event): void {\n    event?.stopPropagation();\n    if (!this.disabled()) {\n      this.clicked.emit();\n    }\n  }\n}\n\n// Thumbs down button component\n@Component({\n  selector: \"copilot-chat-assistant-message-thumbs-down-button\",\n  imports: [CopilotIcon, CopilotChatAssistantMessageToolbarButton],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      copilotChatAssistantMessageToolbarButton\n      [title]=\"title() || labels.assistantMessageToolbarThumbsDownLabel\"\n      [disabled]=\"disabled()\"\n      [inputClass]=\"inputClass()\"\n      (click)=\"handleClick($event)\"\n    >\n      <copilot-icon [img]=\"ThumbsDownIcon\" [size]=\"18\"></copilot-icon>\n    </button>\n  `,\n})\nexport class CopilotChatAssistantMessageThumbsDownButton {\n  readonly title = input<string | undefined>();\n  readonly disabled = input<boolean>(false);\n  readonly inputClass = input<string | undefined>();\n  readonly clicked = output<void>();\n  readonly ThumbsDownIcon = ThumbsDown;\n  readonly labels = injectChatLabels();\n\n  handleClick(event?: Event): void {\n    event?.stopPropagation();\n    if (!this.disabled()) {\n      this.clicked.emit();\n    }\n  }\n}\n\n// Read aloud button component\n@Component({\n  selector: \"copilot-chat-assistant-message-read-aloud-button\",\n  imports: [CopilotIcon, CopilotChatAssistantMessageToolbarButton],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      copilotChatAssistantMessageToolbarButton\n      [title]=\"title() || labels.assistantMessageToolbarReadAloudLabel\"\n      [disabled]=\"disabled()\"\n      [inputClass]=\"inputClass()\"\n      (click)=\"handleClick($event)\"\n    >\n      <copilot-icon [img]=\"Volume2Icon\" [size]=\"20\"></copilot-icon>\n    </button>\n  `,\n})\nexport class CopilotChatAssistantMessageReadAloudButton {\n  readonly title = input<string | undefined>();\n  readonly disabled = input<boolean>(false);\n  readonly inputClass = input<string | undefined>();\n  readonly clicked = output<void>();\n  readonly Volume2Icon = Volume2;\n  readonly labels = injectChatLabels();\n\n  handleClick(event?: Event): void {\n    event?.stopPropagation();\n    if (!this.disabled()) {\n      this.clicked.emit();\n    }\n  }\n}\n\n// Regenerate button component\n@Component({\n  selector: \"copilot-chat-assistant-message-regenerate-button\",\n  imports: [CopilotIcon, CopilotChatAssistantMessageToolbarButton],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      copilotChatAssistantMessageToolbarButton\n      [title]=\"title() || labels.assistantMessageToolbarRegenerateLabel\"\n      [disabled]=\"disabled()\"\n      [inputClass]=\"inputClass()\"\n      (click)=\"handleClick($event)\"\n    >\n      <copilot-icon [img]=\"RefreshCwIcon\" [size]=\"18\"></copilot-icon>\n    </button>\n  `,\n})\nexport class CopilotChatAssistantMessageRegenerateButton {\n  readonly title = input<string | undefined>();\n  readonly disabled = input<boolean>(false);\n  readonly inputClass = input<string | undefined>();\n  readonly clicked = output<void>();\n  readonly RefreshCwIcon = RefreshCw;\n  readonly labels = injectChatLabels();\n\n  handleClick(event?: Event): void {\n    event?.stopPropagation();\n    if (!this.disabled()) {\n      this.clicked.emit();\n    }\n  }\n}\n","import { Directive, input, computed } from \"@angular/core\";\nimport { cn } from \"../../utils\";\n\n@Directive({\n  selector: \"[copilotChatAssistantMessageToolbar]\",\n  host: {\n    \"[class]\": \"computedClass()\",\n  },\n})\nexport class CopilotChatAssistantMessageToolbar {\n  readonly inputClass = input<string | undefined>();\n\n  readonly computedClass = computed(() => {\n    return cn(\n      \"cpk:w-full cpk:bg-transparent cpk:flex cpk:items-center cpk:-ml-[5px] cpk:-mt-[0px]\",\n      this.inputClass(),\n    );\n  });\n}\n","import { Injectable, signal } from \"@angular/core\";\n\n@Injectable({ providedIn: \"root\" })\nexport class CopilotChatViewHandlers {\n  // Assistant message handler availability\n  hasAssistantThumbsUpHandler = signal(false);\n  hasAssistantThumbsDownHandler = signal(false);\n  hasAssistantReadAloudHandler = signal(false);\n  hasAssistantRegenerateHandler = signal(false);\n\n  // User message handler availability\n  hasUserCopyHandler = signal(false);\n  hasUserEditHandler = signal(false);\n}\n","import {\n  Component,\n  TemplateRef,\n  ContentChild,\n  signal,\n  computed,\n  Type,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  Optional,\n  Inject,\n  input,\n  output,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { CopilotSlot } from \"../../slots/copilot-slot\";\nimport { CopilotChatToolCallsView } from \"./copilot-chat-tool-calls-view\";\nimport type { Message } from \"@ag-ui/core\";\nimport {\n  type AssistantMessage,\n  type CopilotChatAssistantMessageOnThumbsUpProps,\n  type CopilotChatAssistantMessageOnThumbsDownProps,\n  type CopilotChatAssistantMessageOnReadAloudProps,\n  type CopilotChatAssistantMessageOnRegenerateProps,\n  type AssistantMessageMarkdownRendererContext,\n  type AssistantMessageCopyButtonContext,\n  type ThumbsUpButtonContext,\n  type ThumbsDownButtonContext,\n  type ReadAloudButtonContext,\n  type RegenerateButtonContext,\n  type AssistantMessageToolbarContext,\n} from \"./copilot-chat-assistant-message.types\";\nimport { CopilotChatAssistantMessageRenderer } from \"./copilot-chat-assistant-message-renderer\";\nimport {\n  CopilotChatAssistantMessageCopyButton,\n  CopilotChatAssistantMessageThumbsUpButton,\n  CopilotChatAssistantMessageThumbsDownButton,\n} from \"./copilot-chat-assistant-message-buttons\";\nimport { CopilotChatAssistantMessageToolbar } from \"./copilot-chat-assistant-message-toolbar\";\nimport { cn } from \"../../utils\";\nimport { CopilotChatViewHandlers } from \"./copilot-chat-view-handlers\";\n\n@Component({\n  selector: \"copilot-chat-assistant-message\",\n  host: { \"data-copilotkit\": \"\" },\n  imports: [\n    CommonModule,\n    CopilotSlot,\n    CopilotChatAssistantMessageRenderer,\n    CopilotChatAssistantMessageCopyButton,\n    CopilotChatAssistantMessageToolbar,\n    CopilotChatToolCallsView,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div\n      [class]=\"computedClass()\"\n      [attr.data-message-id]=\"message().id\"\n      data-testid=\"copilot-assistant-message\"\n      data-message-role=\"assistant\"\n      role=\"article\"\n    >\n      <!-- Markdown Renderer -->\n      @if (markdownRendererTemplate || markdownRendererComponent()) {\n        <copilot-slot\n          [slot]=\"markdownRendererTemplate || markdownRendererComponent()\"\n          [context]=\"markdownRendererContext()\"\n          [defaultComponent]=\"CopilotChatAssistantMessageRenderer\"\n        >\n        </copilot-slot>\n      } @else {\n        <copilot-chat-assistant-message-renderer\n          [content]=\"message().content || ''\"\n          [inputClass]=\"markdownRendererClass()\"\n        >\n        </copilot-chat-assistant-message-renderer>\n      }\n\n      <!-- Tool Calls View -->\n      @if (toolCallsViewTemplate || toolCallsViewComponent()) {\n        <copilot-slot\n          [slot]=\"toolCallsViewTemplate || toolCallsViewComponent()\"\n          [context]=\"toolCallsViewContext()\"\n          [defaultComponent]=\"CopilotChatToolCallsView\"\n        >\n        </copilot-slot>\n      } @else if (message().toolCalls && message()!.toolCalls!.length > 0) {\n        <copilot-chat-tool-calls-view\n          [message]=\"message()!\"\n          [messages]=\"messages()\"\n          [agentId]=\"agentId()\"\n          [isLoading]=\"isLoading()\"\n        >\n        </copilot-chat-tool-calls-view>\n      }\n\n      <!-- Toolbar: show only when there is assistant text content -->\n      @if (toolbarVisible() && hasMessageContent()) {\n        @if (toolbarTemplate || toolbarComponent()) {\n          <copilot-slot\n            [slot]=\"toolbarTemplate || toolbarComponent()\"\n            [context]=\"toolbarContext()\"\n            [defaultComponent]=\"CopilotChatAssistantMessageToolbar\"\n          >\n          </copilot-slot>\n        } @else {\n          <div copilotChatAssistantMessageToolbar [inputClass]=\"toolbarClass()\">\n            <div class=\"cpk:flex cpk:items-center cpk:gap-1\">\n              <!-- Copy button -->\n              @if (copyButtonTemplate || copyButtonComponent()) {\n                <copilot-slot\n                  [slot]=\"copyButtonTemplate || copyButtonComponent()\"\n                  [context]=\"{ content: message().content || '' }\"\n                  [defaultComponent]=\"CopilotChatAssistantMessageCopyButton\"\n                  [outputs]=\"copyButtonOutputs\"\n                >\n                </copilot-slot>\n              } @else {\n                <copilot-chat-assistant-message-copy-button\n                  [content]=\"message().content\"\n                  [inputClass]=\"copyButtonClass()\"\n                  (clicked)=\"handleCopy()\"\n                >\n                </copilot-chat-assistant-message-copy-button>\n              }\n\n              <!-- Thumbs up button - show if custom slot provided OR if handler available at top level -->\n              @if (\n                thumbsUpButtonComponent() ||\n                thumbsUpButtonTemplate ||\n                handlers.hasAssistantThumbsUpHandler()\n              ) {\n                <copilot-slot\n                  [slot]=\"thumbsUpButtonTemplate || thumbsUpButtonComponent()\"\n                  [context]=\"{}\"\n                  [defaultComponent]=\"defaultThumbsUpButtonComponent\"\n                  [outputs]=\"thumbsUpButtonOutputs\"\n                >\n                </copilot-slot>\n              }\n\n              <!-- Thumbs down button - show if custom slot provided OR if handler available at top level -->\n              @if (\n                thumbsDownButtonComponent() ||\n                thumbsDownButtonTemplate ||\n                handlers.hasAssistantThumbsDownHandler()\n              ) {\n                <copilot-slot\n                  [slot]=\"thumbsDownButtonTemplate || thumbsDownButtonComponent()\"\n                  [context]=\"{}\"\n                  [defaultComponent]=\"defaultThumbsDownButtonComponent\"\n                  [outputs]=\"thumbsDownButtonOutputs\"\n                >\n                </copilot-slot>\n              }\n\n              <!-- Read aloud button - only show if custom slot provided -->\n              @if (readAloudButtonComponent() || readAloudButtonTemplate) {\n                <copilot-slot\n                  [slot]=\"readAloudButtonTemplate || readAloudButtonComponent()\"\n                  [context]=\"{}\"\n                  [outputs]=\"readAloudButtonOutputs\"\n                >\n                </copilot-slot>\n              }\n\n              <!-- Regenerate button - only show if custom slot provided -->\n              @if (regenerateButtonComponent() || regenerateButtonTemplate) {\n                <copilot-slot\n                  [slot]=\"regenerateButtonTemplate || regenerateButtonComponent()\"\n                  [context]=\"{}\"\n                  [outputs]=\"regenerateButtonOutputs\"\n                >\n                </copilot-slot>\n              }\n\n              <!-- Additional toolbar items -->\n              @if (additionalToolbarItems()) {\n                <ng-container\n                  [ngTemplateOutlet]=\"additionalToolbarItems() || null\"\n                ></ng-container>\n              }\n            </div>\n          </div>\n        }\n      }\n    </div>\n  `,\n  styles: [\n    `\n      /* Import KaTeX styles */\n      @import \"katex/dist/katex.min.css\";\n\n      :host {\n        display: block;\n        width: 100%;\n      }\n\n      /* Atom One Light theme for highlight.js */\n      .hljs {\n        color: rgb(56, 58, 66);\n        background: transparent;\n      }\n\n      .hljs-comment,\n      .hljs-quote {\n        color: #a0a1a7;\n        font-style: italic;\n      }\n\n      .hljs-doctag,\n      .hljs-formula,\n      .hljs-keyword {\n        color: #a626a4;\n      }\n\n      .hljs-deletion,\n      .hljs-name,\n      .hljs-section,\n      .hljs-selector-tag,\n      .hljs-subst {\n        color: #e45649;\n      }\n\n      .hljs-literal {\n        color: #0184bb;\n      }\n\n      .hljs-addition,\n      .hljs-attribute,\n      .hljs-meta .hljs-string,\n      .hljs-regexp,\n      .hljs-string {\n        color: #50a14f;\n      }\n\n      .hljs-attr,\n      .hljs-number,\n      .hljs-selector-attr,\n      .hljs-selector-class,\n      .hljs-selector-pseudo,\n      .hljs-template-variable,\n      .hljs-type,\n      .hljs-variable {\n        color: #986801;\n      }\n\n      .hljs-params {\n        color: rgb(56, 58, 66);\n      }\n\n      .hljs-bullet,\n      .hljs-link,\n      .hljs-meta,\n      .hljs-selector-id,\n      .hljs-symbol,\n      .hljs-title {\n        color: #4078f2;\n      }\n\n      .hljs-built_in,\n      .hljs-class .hljs-title,\n      .hljs-title.class_ {\n        color: #c18401;\n      }\n\n      .hljs-emphasis {\n        font-style: italic;\n      }\n\n      .hljs-strong {\n        font-weight: 700;\n      }\n\n      .hljs-link {\n        text-decoration: underline;\n      }\n\n      /* Atom One Dark theme for highlight.js */\n      .dark .hljs {\n        color: #abb2bf;\n        background: transparent;\n      }\n\n      .dark .hljs-comment,\n      .dark .hljs-quote {\n        color: #5c6370;\n        font-style: italic;\n      }\n\n      .dark .hljs-doctag,\n      .dark .hljs-formula,\n      .dark .hljs-keyword {\n        color: #c678dd;\n      }\n\n      .dark .hljs-deletion,\n      .dark .hljs-name,\n      .dark .hljs-section,\n      .dark .hljs-selector-tag,\n      .dark .hljs-subst {\n        color: #e06c75;\n      }\n\n      .dark .hljs-literal {\n        color: #56b6c2;\n      }\n\n      .dark .hljs-addition,\n      .dark .hljs-attribute,\n      .dark .hljs-meta .hljs-string,\n      .dark .hljs-regexp,\n      .dark .hljs-string {\n        color: #98c379;\n      }\n\n      .dark .hljs-attr,\n      .dark .hljs-number,\n      .dark .hljs-selector-attr,\n      .dark .hljs-selector-class,\n      .dark .hljs-selector-pseudo,\n      .dark .hljs-template-variable,\n      .dark .hljs-type,\n      .dark .hljs-variable {\n        color: #d19a66;\n      }\n\n      .dark .hljs-bullet,\n      .dark .hljs-link,\n      .dark .hljs-meta,\n      .dark .hljs-selector-id,\n      .dark .hljs-symbol,\n      .dark .hljs-title {\n        color: #61aeee;\n      }\n\n      .dark .hljs-built_in,\n      .dark .hljs-class .hljs-title,\n      .dark .hljs-title.class_ {\n        color: #e6c07b;\n      }\n\n      .dark .hljs-params {\n        color: #abb2bf; /* same as regular text */\n      }\n\n      .dark .hljs-emphasis {\n        font-style: italic;\n      }\n\n      .dark .hljs-strong {\n        font-weight: 700;\n      }\n\n      .dark .hljs-link {\n        text-decoration: underline;\n      }\n    `,\n  ],\n})\nexport class CopilotChatAssistantMessage {\n  // Capture templates from content projection\n  @ContentChild(\"markdownRenderer\", { read: TemplateRef })\n  markdownRendererTemplate?: TemplateRef<AssistantMessageMarkdownRendererContext>;\n  @ContentChild(\"toolbar\", { read: TemplateRef })\n  toolbarTemplate?: TemplateRef<AssistantMessageToolbarContext>;\n  @ContentChild(\"copyButton\", { read: TemplateRef })\n  copyButtonTemplate?: TemplateRef<AssistantMessageCopyButtonContext>;\n  @ContentChild(\"thumbsUpButton\", { read: TemplateRef })\n  thumbsUpButtonTemplate?: TemplateRef<ThumbsUpButtonContext>;\n  @ContentChild(\"thumbsDownButton\", { read: TemplateRef })\n  thumbsDownButtonTemplate?: TemplateRef<ThumbsDownButtonContext>;\n  @ContentChild(\"readAloudButton\", { read: TemplateRef })\n  readAloudButtonTemplate?: TemplateRef<ReadAloudButtonContext>;\n  @ContentChild(\"regenerateButton\", { read: TemplateRef })\n  regenerateButtonTemplate?: TemplateRef<RegenerateButtonContext>;\n  @ContentChild(\"toolCallsView\", { read: TemplateRef })\n  toolCallsViewTemplate?: TemplateRef<any>;\n\n  // Class inputs for styling default components\n  readonly markdownRendererClass = input<string | undefined>(undefined);\n  readonly toolbarClass = input<string | undefined>(undefined);\n  readonly copyButtonClass = input<string | undefined>(undefined);\n  readonly thumbsUpButtonClass = input<string | undefined>(undefined);\n  readonly thumbsDownButtonClass = input<string | undefined>(undefined);\n  readonly readAloudButtonClass = input<string | undefined>(undefined);\n  readonly regenerateButtonClass = input<string | undefined>(undefined);\n  readonly toolCallsViewClass = input<string | undefined>(undefined);\n\n  // Component inputs for overrides\n  readonly markdownRendererComponent = input<Type<any> | undefined>(undefined);\n  readonly toolbarComponent = input<Type<any> | undefined>(undefined);\n  readonly copyButtonComponent = input<Type<any> | undefined>(undefined);\n  readonly thumbsUpButtonComponent = input<Type<any> | undefined>(undefined);\n  readonly thumbsDownButtonComponent = input<Type<any> | undefined>(undefined);\n  readonly readAloudButtonComponent = input<Type<any> | undefined>(undefined);\n  readonly regenerateButtonComponent = input<Type<any> | undefined>(undefined);\n  readonly toolCallsViewComponent = input<Type<any> | undefined>(undefined);\n\n  // Regular inputs\n  readonly message = input.required<AssistantMessage>();\n  readonly messages = input<Message[]>([]);\n  readonly agentId = input<string | undefined>();\n  readonly isLoading = input<boolean>(false);\n  readonly additionalToolbarItems = input<TemplateRef<any> | undefined>(\n    undefined,\n  );\n  readonly toolbarVisible = input<boolean>(true);\n  readonly inputClass = input<string | undefined>(undefined);\n\n  // DI service exposes handler availability scoped to CopilotChatView\n  // Make it optional with a default fallback for testing\n  handlers: CopilotChatViewHandlers;\n\n  constructor(\n    @Optional()\n    @Inject(CopilotChatViewHandlers)\n    handlers?: CopilotChatViewHandlers | null,\n  ) {\n    this.handlers = handlers || new CopilotChatViewHandlers();\n  }\n\n  // Output events\n  thumbsUp = output<CopilotChatAssistantMessageOnThumbsUpProps>();\n  thumbsDown = output<CopilotChatAssistantMessageOnThumbsDownProps>();\n  readAloud = output<CopilotChatAssistantMessageOnReadAloudProps>();\n  regenerate = output<CopilotChatAssistantMessageOnRegenerateProps>();\n\n  // Signals\n  customClass = signal<string | undefined>(undefined);\n\n  // Computed values\n  computedClass = computed(() => {\n    return cn(\n      \"copilotKitMessage copilotKitAssistantMessage cpk:prose cpk:max-w-full cpk:break-words cpk:dark:prose-invert\",\n      this.customClass(),\n    );\n  });\n\n  // Default components\n  protected readonly defaultThumbsUpButtonComponent =\n    CopilotChatAssistantMessageThumbsUpButton;\n  protected readonly defaultThumbsDownButtonComponent =\n    CopilotChatAssistantMessageThumbsDownButton;\n  protected readonly CopilotChatAssistantMessageRenderer =\n    CopilotChatAssistantMessageRenderer;\n  protected readonly CopilotChatAssistantMessageToolbar =\n    CopilotChatAssistantMessageToolbar;\n  protected readonly CopilotChatAssistantMessageCopyButton =\n    CopilotChatAssistantMessageCopyButton;\n  protected readonly CopilotChatToolCallsView = CopilotChatToolCallsView;\n\n  // Context for slots (reactive via signals)\n  markdownRendererContext = computed<AssistantMessageMarkdownRendererContext>(\n    () => ({\n      content: this.message()?.content || \"\",\n    }),\n  );\n\n  // Output maps for slots\n  copyButtonOutputs = { clicked: () => this.handleCopy() };\n  thumbsUpButtonOutputs = { clicked: () => this.handleThumbsUp() };\n  thumbsDownButtonOutputs = { clicked: () => this.handleThumbsDown() };\n  readAloudButtonOutputs = { clicked: () => this.handleReadAloud() };\n  regenerateButtonOutputs = { clicked: () => this.handleRegenerate() };\n\n  toolbarContext = computed<AssistantMessageToolbarContext>(() => ({\n    children: null, // Will be populated by the toolbar content\n  }));\n\n  // Return true if assistant message has non-empty text content\n  hasMessageContent(): boolean {\n    return (this.message()?.content ?? \"\").trim().length > 0;\n  }\n\n  toolCallsViewContext = computed(() => ({\n    message: this.message(),\n    messages: this.messages(),\n    isLoading: this.isLoading(),\n  }));\n\n  handleCopy(): void {\n    // Copy is handled by the button component itself\n    // This is just for any additional logic if needed\n  }\n\n  handleThumbsUp(): void {\n    this.thumbsUp.emit({ message: this.message() });\n  }\n\n  handleThumbsDown(): void {\n    this.thumbsDown.emit({ message: this.message() });\n  }\n\n  handleReadAloud(): void {\n    this.readAloud.emit({ message: this.message() });\n  }\n\n  handleRegenerate(): void {\n    this.regenerate.emit({ message: this.message() });\n  }\n}\n","import {\n  Component,\n  input,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  computed,\n} from \"@angular/core\";\n\nimport { cn } from \"../../utils\";\n\n@Component({\n  selector: \"copilot-chat-user-message-renderer\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    \"[class]\": \"computedClass()\",\n  },\n  template: `\n    {{ content() }}\n  `,\n})\nexport class CopilotChatUserMessageRenderer {\n  readonly content = input<string>(\"\");\n  readonly inputClass = input<string | undefined>();\n\n  readonly computedClass = computed(() => {\n    return cn(\n      \"cpk:prose cpk:dark:prose-invert cpk:bg-muted cpk:relative cpk:max-w-[80%] cpk:rounded-[18px] cpk:px-4 cpk:py-1.5 cpk:data-[multiline]:py-3 cpk:inline-block cpk:whitespace-pre-wrap\",\n      this.inputClass(),\n    );\n  });\n}\n","import {\n  Component,\n  input,\n  output,\n  signal,\n  computed,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { Check, CopilotIcon, Copy, Edit } from \"../icons/copilot-icon\";\nimport { CopilotTooltip } from \"../../directives/tooltip\";\nimport { cn } from \"../../utils\";\nimport { injectChatLabels } from \"../../chat-config\";\nimport { copyToClipboard } from \"@copilotkit/shared\";\n\n// Base toolbar button component\n@Component({\n  selector: \"button[copilotChatUserMessageToolbarButton]\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <ng-content></ng-content>\n  `,\n  host: {\n    \"[class]\": \"computedClass()\",\n    \"[attr.disabled]\": \"disabled() ? true : null\",\n    type: \"button\",\n    \"[attr.aria-label]\": \"title()\",\n  },\n  hostDirectives: [\n    {\n      directive: CopilotTooltip,\n      inputs: [\"copilotTooltip: title\", \"tooltipPosition\", \"tooltipDelay\"],\n    },\n  ],\n})\nexport class CopilotChatUserMessageToolbarButton {\n  title = input<string>(\"\");\n  disabled = input<boolean>(false);\n  inputClass = input<string | undefined>();\n\n  computedClass = computed(() => {\n    return cn(\n      // Flex centering\n      \"cpk:inline-flex cpk:items-center cpk:justify-center\",\n      // Cursor\n      \"cpk:cursor-pointer\",\n      // Background and text\n      \"cpk:p-0 cpk:text-[rgb(93,93,93)] cpk:hover:bg-[#E8E8E8]\",\n      // Dark mode\n      \"cpk:dark:text-[rgb(243,243,243)] cpk:dark:hover:bg-[#303030]\",\n      // Shape and sizing\n      \"cpk:h-8 cpk:w-8 cpk:rounded-md\",\n      // Interactions\n      \"cpk:transition-colors\",\n      // Hover states\n      \"cpk:hover:text-[rgb(93,93,93)]\",\n      \"cpk:dark:hover:text-[rgb(243,243,243)]\",\n      // Focus states\n      \"cpk:focus:outline-none cpk:focus:ring-2 cpk:focus:ring-offset-2\",\n      // Disabled state\n      \"cpk:disabled:opacity-50 cpk:disabled:cursor-not-allowed\",\n      this.inputClass(),\n    );\n  });\n}\n\n// Copy button component\n@Component({\n  selector: \"copilot-chat-user-message-copy-button\",\n  imports: [CopilotIcon, CopilotChatUserMessageToolbarButton],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      copilotChatUserMessageToolbarButton\n      [title]=\"title() || labels.userMessageToolbarCopyMessageLabel\"\n      [disabled]=\"disabled()\"\n      [inputClass]=\"inputClass()\"\n      (click)=\"handleCopy()\"\n    >\n      @if (copied()) {\n        <copilot-icon [img]=\"CheckIcon\" [size]=\"18\"></copilot-icon>\n      } @else {\n        <copilot-icon [img]=\"CopyIcon\" [size]=\"18\"></copilot-icon>\n      }\n    </button>\n  `,\n})\nexport class CopilotChatUserMessageCopyButton {\n  readonly title = input<string | undefined>();\n  readonly disabled = input<boolean>(false);\n  readonly inputClass = input<string | undefined>();\n  readonly content = input<string | undefined>();\n  readonly clicked = output<void>();\n  readonly CopyIcon = Copy;\n  readonly CheckIcon = Check;\n  readonly copied = signal(false);\n  readonly labels = injectChatLabels();\n\n  handleCopy(): void {\n    if (!this.content()) return;\n\n    copyToClipboard(this.content()!).then((success) => {\n      if (success) {\n        this.copied.set(true);\n        this.clicked.emit();\n        setTimeout(() => this.copied.set(false), 2000);\n      }\n    });\n  }\n}\n\n// Edit button component\n@Component({\n  selector: \"copilot-chat-user-message-edit-button\",\n  imports: [CopilotIcon, CopilotChatUserMessageToolbarButton],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      copilotChatUserMessageToolbarButton\n      [title]=\"title() || labels.userMessageToolbarEditMessageLabel\"\n      [disabled]=\"disabled()\"\n      [inputClass]=\"inputClass()\"\n      (click)=\"handleEdit()\"\n    >\n      <copilot-icon [img]=\"EditIcon\" [size]=\"18\"></copilot-icon>\n    </button>\n  `,\n})\nexport class CopilotChatUserMessageEditButton {\n  title = input<string | undefined>();\n  disabled = input<boolean>(false);\n  inputClass = input<string | undefined>();\n  clicked = output<void>();\n\n  readonly EditIcon = Edit;\n  readonly labels = injectChatLabels();\n\n  handleEdit(): void {\n    if (!this.disabled()) {\n      this.clicked.emit();\n    }\n  }\n}\n","import {\n  Component,\n  input,\n  computed,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { cn } from \"../../utils\";\n\n@Component({\n  selector: \"div[copilotChatUserMessageToolbar]\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <ng-content></ng-content>\n  `,\n  host: {\n    \"[class]\": \"computedClass()\",\n  },\n})\nexport class CopilotChatUserMessageToolbar {\n  readonly inputClass = input<string | undefined>();\n\n  readonly computedClass = computed(() =>\n    cn(\n      \"cpk:w-full cpk:bg-transparent cpk:flex cpk:items-center cpk:justify-end cpk:mt-[4px] cpk:invisible cpk:group-hover:visible\",\n      this.inputClass(),\n    ),\n  );\n}\n","import {\n  Component,\n  input,\n  output,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  computed,\n} from \"@angular/core\";\n\nimport { ChevronLeft, ChevronRight, CopilotIcon } from \"../icons/copilot-icon\";\nimport { type CopilotChatUserMessageOnSwitchToBranchProps } from \"./copilot-chat-user-message.types\";\nimport { cn } from \"../../utils\";\nimport { UserMessage } from \"@ag-ui/core\";\n\n@Component({\n  selector: \"copilot-chat-user-message-branch-navigation\",\n  imports: [CopilotIcon],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    @if (showNavigation()) {\n      <div [class]=\"computedClass()\">\n        <button\n          type=\"button\"\n          aria-label=\"Previous message branch\"\n          [class]=\"buttonClass\"\n          [disabled]=\"!canGoPrev()\"\n          (click)=\"handlePrevious()\"\n        >\n          <copilot-icon [img]=\"ChevronLeftIcon\" [size]=\"20\"></copilot-icon>\n        </button>\n        <span\n          class=\"cpk:text-sm cpk:text-muted-foreground cpk:px-0 cpk:font-medium\"\n        >\n          {{ currentBranch() + 1 }}/{{ numberOfBranches() }}\n        </span>\n        <button\n          type=\"button\"\n          aria-label=\"Next message branch\"\n          [class]=\"buttonClass\"\n          [disabled]=\"!canGoNext()\"\n          (click)=\"handleNext()\"\n        >\n          <copilot-icon [img]=\"ChevronRightIcon\" [size]=\"20\"></copilot-icon>\n        </button>\n      </div>\n    }\n  `,\n})\nexport class CopilotChatUserMessageBranchNavigation {\n  currentBranch = input<number>(0);\n  numberOfBranches = input<number>(1);\n  message = input<UserMessage>();\n  inputClass = input<string | undefined>();\n  switchToBranch = output<CopilotChatUserMessageOnSwitchToBranchProps>();\n\n  readonly ChevronLeftIcon = ChevronLeft;\n  readonly ChevronRightIcon = ChevronRight;\n\n  readonly buttonClass = cn(\n    // Flex centering\n    \"cpk:inline-flex cpk:items-center cpk:justify-center\",\n    // Cursor\n    \"cpk:cursor-pointer\",\n    // Background and text\n    \"cpk:p-0 cpk:text-[rgb(93,93,93)] cpk:hover:bg-[#E8E8E8]\",\n    // Dark mode\n    \"cpk:dark:text-[rgb(243,243,243)] cpk:dark:hover:bg-[#303030]\",\n    // Shape and sizing\n    \"cpk:h-6 cpk:w-6 cpk:rounded-md\",\n    // Interactions\n    \"cpk:transition-colors\",\n    // Disabled state\n    \"cpk:disabled:opacity-50 cpk:disabled:cursor-not-allowed\",\n  );\n\n  showNavigation = computed(() => this.numberOfBranches() > 1);\n\n  canGoPrev = computed(() => this.currentBranch() > 0);\n\n  canGoNext = computed(\n    () => this.currentBranch() < this.numberOfBranches() - 1,\n  );\n\n  computedClass = computed(() => {\n    return cn(\"cpk:flex cpk:items-center cpk:gap-1\", this.inputClass());\n  });\n\n  handlePrevious(): void {\n    if (this.canGoPrev()) {\n      const newIndex = this.currentBranch() - 1;\n      this.switchToBranch.emit({\n        branchIndex: newIndex,\n        numberOfBranches: this.numberOfBranches(),\n        message: this.message()!,\n      });\n    }\n  }\n\n  handleNext(): void {\n    if (this.canGoNext()) {\n      const newIndex = this.currentBranch() + 1;\n      this.switchToBranch.emit({\n        branchIndex: newIndex,\n        numberOfBranches: this.numberOfBranches(),\n        message: this.message()!,\n      });\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n  signal,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport type {\n  AttachmentModality,\n  InputContentSource,\n} from \"@copilotkit/shared\";\nimport { getDocumentIcon, getSourceUrl } from \"@copilotkit/shared\";\nimport { cn } from \"../../utils\";\n\n@Component({\n  selector: \"copilot-chat-attachment-renderer\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { \"data-copilotkit\": \"\" },\n  template: `\n    @switch (type()) {\n      @case (\"image\") {\n        @if (imageFailed()) {\n          <div [class]=\"failedImageClass()\">\n            <div class=\"copilotKitImageRenderingErrorMessage\">\n              Failed to load image\n            </div>\n          </div>\n        } @else {\n          <div [class]=\"imageWrapperClass()\">\n            <img\n              [src]=\"sourceUrl()\"\n              alt=\"Image attachment\"\n              class=\"copilotKitImageRenderingImage\"\n              (error)=\"imageFailed.set(true)\"\n            />\n          </div>\n        }\n      }\n      @case (\"audio\") {\n        <div [class]=\"audioClass()\">\n          <audio [src]=\"sourceUrl()\" controls preload=\"metadata\"></audio>\n          @if (filename()) {\n            <span class=\"copilotKitAttachmentFilename\">\n              {{ filename() }}\n            </span>\n          }\n        </div>\n      }\n      @case (\"video\") {\n        <video\n          [src]=\"sourceUrl()\"\n          controls\n          preload=\"metadata\"\n          [class]=\"videoClass()\"\n        ></video>\n      }\n      @default {\n        <div [class]=\"documentClass()\">\n          <div class=\"copilotKitAttachmentDocIcon\">{{ documentIcon() }}</div>\n          <div class=\"copilotKitAttachmentDocInfo\">\n            <span class=\"copilotKitAttachmentDocName\">\n              {{ filename() || source().mimeType || \"Unknown type\" }}\n            </span>\n          </div>\n        </div>\n      }\n    }\n  `,\n})\nexport class CopilotChatAttachmentRenderer {\n  readonly type = input.required<AttachmentModality>();\n  readonly source = input.required<InputContentSource>();\n  readonly filename = input<string | undefined>();\n  readonly inputClass = input<string | undefined>();\n\n  readonly imageFailed = signal(false);\n  readonly sourceUrl = computed(() => getSourceUrl(this.source()));\n  readonly documentIcon = computed(() =>\n    getDocumentIcon(this.source().mimeType ?? \"\"),\n  );\n\n  readonly imageWrapperClass = computed(() =>\n    cn(\"copilotKitImageRendering\", this.inputClass()),\n  );\n  readonly failedImageClass = computed(() =>\n    cn(\n      \"copilotKitImageRendering copilotKitImageRenderingError\",\n      this.inputClass(),\n    ),\n  );\n  readonly audioClass = computed(() =>\n    cn(\"copilotKitAttachment copilotKitAttachmentAudio\", this.inputClass()),\n  );\n  readonly videoClass = computed(() =>\n    cn(\"copilotKitAttachment copilotKitAttachmentVideo\", this.inputClass()),\n  );\n  readonly documentClass = computed(() =>\n    cn(\"copilotKitAttachment copilotKitAttachmentDocument\", this.inputClass()),\n  );\n}\n","import type { UserMessage } from \"@ag-ui/core\";\nimport type {\n  AudioInputPart,\n  DocumentInputPart,\n  ImageInputPart,\n  VideoInputPart,\n} from \"@copilotkit/shared\";\n\nexport type UserMessageMediaPart =\n  | ImageInputPart\n  | AudioInputPart\n  | VideoInputPart\n  | DocumentInputPart;\n\nexport function flattenUserMessageContent(\n  content?: UserMessage[\"content\"],\n): string {\n  if (!content) {\n    return \"\";\n  }\n\n  if (typeof content === \"string\") {\n    return content;\n  }\n\n  return content\n    .map((part) => (part.type === \"text\" ? part.text : \"\"))\n    .filter((text) => text.length > 0)\n    .join(\"\\n\");\n}\n\nexport function getUserMessageMediaParts(\n  content?: UserMessage[\"content\"],\n): UserMessageMediaPart[] {\n  if (!content || typeof content === \"string\") {\n    return [];\n  }\n\n  return content.filter(\n    (part): part is UserMessageMediaPart =>\n      part.type === \"image\" ||\n      part.type === \"audio\" ||\n      part.type === \"video\" ||\n      part.type === \"document\",\n  );\n}\n\nexport function getUserMessageMediaFilename(\n  part: UserMessageMediaPart,\n): string | undefined {\n  const meta = part.metadata;\n  if (\n    meta != null &&\n    typeof meta === \"object\" &&\n    \"filename\" in meta &&\n    typeof meta.filename === \"string\"\n  ) {\n    return meta.filename;\n  }\n  return undefined;\n}\n","import {\n  Component,\n  input,\n  output,\n  TemplateRef,\n  ContentChild,\n  computed,\n  Type,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { CopilotSlot } from \"../../slots/copilot-slot\";\nimport {\n  type CopilotChatUserMessageOnEditMessageProps,\n  type CopilotChatUserMessageOnSwitchToBranchProps,\n  type MessageRendererContext,\n  type CopyButtonContext,\n  type EditButtonContext,\n  type BranchNavigationContext,\n  type UserMessageToolbarContext,\n} from \"./copilot-chat-user-message.types\";\nimport { CopilotChatUserMessageRenderer } from \"./copilot-chat-user-message-renderer\";\nimport {\n  CopilotChatUserMessageCopyButton,\n  CopilotChatUserMessageEditButton,\n} from \"./copilot-chat-user-message-buttons\";\nimport { CopilotChatUserMessageToolbar } from \"./copilot-chat-user-message-toolbar\";\nimport { CopilotChatUserMessageBranchNavigation } from \"./copilot-chat-user-message-branch-navigation\";\nimport { cn } from \"../../utils\";\nimport { UserMessage } from \"@ag-ui/core\";\nimport { CopilotChatAttachmentRenderer } from \"./copilot-chat-attachment-renderer\";\nimport {\n  flattenUserMessageContent,\n  getUserMessageMediaFilename,\n  getUserMessageMediaParts,\n  type UserMessageMediaPart,\n} from \"./copilot-chat-user-message-utils\";\n\n@Component({\n  selector: \"copilot-chat-user-message\",\n  host: { \"data-copilotkit\": \"\" },\n  imports: [\n    CommonModule,\n    CopilotSlot,\n    CopilotChatUserMessageRenderer,\n    CopilotChatUserMessageCopyButton,\n    CopilotChatUserMessageEditButton,\n    CopilotChatUserMessageToolbar,\n    CopilotChatUserMessageBranchNavigation,\n    CopilotChatAttachmentRenderer,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div\n      [class]=\"computedClass()\"\n      [attr.data-message-id]=\"message()?.id\"\n      data-message-role=\"user\"\n      role=\"article\"\n    >\n      @if (mediaParts().length > 0) {\n        <div\n          class=\"cpk:flex cpk:flex-row cpk:flex-wrap cpk:justify-end cpk:gap-2 cpk:mb-2\"\n        >\n          @for (part of mediaParts(); track $index) {\n            <copilot-chat-attachment-renderer\n              [type]=\"part.type\"\n              [source]=\"part.source\"\n              [filename]=\"filenameFor(part)\"\n            />\n          }\n        </div>\n      }\n\n      <!-- Message Renderer -->\n      @if (messageRendererTemplate || messageRendererComponent()) {\n        <copilot-slot\n          [slot]=\"messageRendererTemplate || messageRendererComponent()\"\n          [context]=\"messageRendererContext()\"\n          [defaultComponent]=\"CopilotChatUserMessageRenderer\"\n        >\n        </copilot-slot>\n      } @else {\n        <copilot-chat-user-message-renderer\n          [content]=\"flattenedContent()\"\n          [inputClass]=\"messageRendererClass()\"\n        >\n        </copilot-chat-user-message-renderer>\n      }\n\n      <!-- Toolbar -->\n      @if (toolbarTemplate || toolbarComponent()) {\n        <copilot-slot\n          [slot]=\"toolbarTemplate || toolbarComponent()\"\n          [context]=\"toolbarContext()\"\n          [defaultComponent]=\"CopilotChatUserMessageToolbar\"\n        >\n        </copilot-slot>\n      } @else {\n        <div copilotChatUserMessageToolbar [inputClass]=\"toolbarClass()\">\n          <div class=\"cpk:flex cpk:items-center cpk:gap-1 cpk:justify-end\">\n            <!-- Additional toolbar items -->\n            @if (additionalToolbarItems()) {\n              <ng-container\n                [ngTemplateOutlet]=\"additionalToolbarItems() || null\"\n              ></ng-container>\n            }\n\n            <!-- Copy button -->\n            @if (copyButtonTemplate || copyButtonComponent()) {\n              <copilot-slot\n                [slot]=\"copyButtonTemplate || copyButtonComponent()\"\n                [context]=\"{ content: flattenedContent() }\"\n                [outputs]=\"copyButtonOutputs\"\n                [defaultComponent]=\"CopilotChatUserMessageCopyButton\"\n              >\n              </copilot-slot>\n            } @else {\n              <copilot-chat-user-message-copy-button\n                [content]=\"flattenedContent()\"\n                [inputClass]=\"copyButtonClass()\"\n                (clicked)=\"handleCopy()\"\n              >\n              </copilot-chat-user-message-copy-button>\n            }\n\n            <!-- Edit button -->\n            @if (true) {\n              @if (editButtonTemplate || editButtonComponent()) {\n                <copilot-slot\n                  [slot]=\"editButtonTemplate || editButtonComponent()\"\n                  [context]=\"{}\"\n                  [outputs]=\"editButtonOutputs\"\n                  [defaultComponent]=\"CopilotChatUserMessageEditButton\"\n                >\n                </copilot-slot>\n              } @else {\n                <copilot-chat-user-message-edit-button\n                  [inputClass]=\"editButtonClass()\"\n                  (clicked)=\"handleEdit()\"\n                >\n                </copilot-chat-user-message-edit-button>\n              }\n            }\n\n            <!-- Branch navigation -->\n            @if (showBranchNavigation()) {\n              @if (branchNavigationTemplate || branchNavigationComponent()) {\n                <copilot-slot\n                  [slot]=\"branchNavigationTemplate || branchNavigationComponent()\"\n                  [context]=\"branchNavigationContext()\"\n                  [defaultComponent]=\"CopilotChatUserMessageBranchNavigation\"\n                >\n                </copilot-slot>\n              } @else {\n                <copilot-chat-user-message-branch-navigation\n                  [currentBranch]=\"branchIndexValue()\"\n                  [numberOfBranches]=\"numberOfBranchesValue()\"\n                  [message]=\"message()!\"\n                  [inputClass]=\"branchNavigationClass()\"\n                  (switchToBranch)=\"handleSwitchToBranch($event)\"\n                >\n                </copilot-chat-user-message-branch-navigation>\n              }\n            }\n          </div>\n        </div>\n      }\n    </div>\n  `,\n  styles: [\n    `\n      :host {\n        display: block;\n        width: 100%;\n      }\n    `,\n  ],\n})\nexport class CopilotChatUserMessage {\n  // Capture templates from content projection\n  @ContentChild(\"messageRenderer\", { read: TemplateRef })\n  messageRendererTemplate?: TemplateRef<MessageRendererContext>;\n  @ContentChild(\"toolbar\", { read: TemplateRef })\n  toolbarTemplate?: TemplateRef<UserMessageToolbarContext>;\n  @ContentChild(\"copyButton\", { read: TemplateRef })\n  copyButtonTemplate?: TemplateRef<CopyButtonContext>;\n  @ContentChild(\"editButton\", { read: TemplateRef })\n  editButtonTemplate?: TemplateRef<EditButtonContext>;\n  @ContentChild(\"branchNavigation\", { read: TemplateRef })\n  branchNavigationTemplate?: TemplateRef<BranchNavigationContext>;\n\n  // Props for tweaking default components\n  messageRendererClass = input<string | undefined>();\n  toolbarClass = input<string | undefined>();\n  copyButtonClass = input<string | undefined>();\n  editButtonClass = input<string | undefined>();\n  branchNavigationClass = input<string | undefined>();\n\n  // Component inputs for overrides\n  messageRendererComponent = input<Type<any> | undefined>();\n  toolbarComponent = input<Type<any> | undefined>();\n  copyButtonComponent = input<Type<any> | undefined>();\n  editButtonComponent = input<Type<any> | undefined>();\n  branchNavigationComponent = input<Type<any> | undefined>();\n\n  // Regular inputs\n  message = input<UserMessage>();\n  branchIndex = input<number | undefined>();\n  numberOfBranches = input<number | undefined>();\n  additionalToolbarItems = input<TemplateRef<any> | undefined>();\n  inputClass = input<string | undefined>();\n\n  // Output events\n  editMessage = output<CopilotChatUserMessageOnEditMessageProps>();\n  switchToBranch = output<CopilotChatUserMessageOnSwitchToBranchProps>();\n\n  // Derived values\n  branchIndexValue = computed(() => this.branchIndex() ?? 0);\n  numberOfBranchesValue = computed(() => this.numberOfBranches() ?? 1);\n\n  // Default components\n  CopilotChatUserMessageRenderer = CopilotChatUserMessageRenderer;\n  CopilotChatUserMessageToolbar = CopilotChatUserMessageToolbar;\n  CopilotChatUserMessageCopyButton = CopilotChatUserMessageCopyButton;\n  CopilotChatUserMessageEditButton = CopilotChatUserMessageEditButton;\n  CopilotChatUserMessageBranchNavigation =\n    CopilotChatUserMessageBranchNavigation;\n\n  // Computed values\n  showBranchNavigation = computed(() => (this.numberOfBranches() ?? 1) > 1);\n\n  computedClass = computed(() =>\n    cn(\n      \"copilotKitMessage copilotKitUserMessage cpk:flex cpk:flex-col cpk:items-end cpk:group cpk:pt-10\",\n      this.inputClass(),\n    ),\n  );\n\n  // Context for slots (reactive via signals)\n  flattenedContent = computed(() =>\n    flattenUserMessageContent(this.message()?.content),\n  );\n  mediaParts = computed(() =>\n    getUserMessageMediaParts(this.message()?.content),\n  );\n\n  messageRendererContext = computed<MessageRendererContext>(() => ({\n    content: this.flattenedContent(),\n  }));\n\n  // Output maps for slots\n  copyButtonOutputs = { clicked: () => this.handleCopy() };\n  editButtonOutputs = { clicked: () => this.handleEdit() };\n\n  branchNavigationContext = computed<BranchNavigationContext>(() => ({\n    currentBranch: this.branchIndexValue(),\n    numberOfBranches: this.numberOfBranchesValue(),\n    onSwitchToBranch: (props) => this.handleSwitchToBranch(props),\n    message: this.message()!,\n  }));\n\n  toolbarContext = computed<UserMessageToolbarContext>(() => ({\n    children: null, // Will be populated by the toolbar content\n  }));\n\n  handleCopy(): void {\n    // Copy is handled by the button component itself\n    // This is just for any additional logic if needed\n  }\n\n  handleEdit(): void {\n    this.editMessage.emit({ message: this.message()! });\n  }\n\n  handleSwitchToBranch(\n    props: CopilotChatUserMessageOnSwitchToBranchProps,\n  ): void {\n    this.switchToBranch.emit(props);\n  }\n\n  filenameFor(part: UserMessageMediaPart): string | undefined {\n    return getUserMessageMediaFilename(part);\n  }\n  constructor() {}\n}\n","import {\n  Component,\n  input,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  computed,\n} from \"@angular/core\";\n\nimport { cn } from \"../../utils\";\n\n/**\n * Cursor component that matches the React implementation exactly.\n * Shows a pulsing dot animation to indicate activity.\n */\n@Component({\n  selector: \"copilot-chat-message-view-cursor\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div data-testid=\"copilot-loading-cursor\" [class]=\"computedClass()\"></div>\n  `,\n})\nexport class CopilotChatMessageViewCursor {\n  inputClass = input<string | undefined>();\n\n  // Computed class that matches React exactly, with the Angular package Tailwind prefix.\n  computedClass = computed(() =>\n    cn(\n      \"cpk:w-[11px] cpk:h-[11px] cpk:rounded-full cpk:bg-foreground cpk:animate-pulse-cursor cpk:ml-1\",\n      this.inputClass(),\n    ),\n  );\n}\n","export function formatReasoningDuration(seconds: number): string {\n  if (seconds < 1) return \"a few seconds\";\n  if (seconds < 60) return `${Math.round(seconds)} seconds`;\n\n  const mins = Math.floor(seconds / 60);\n  const secs = Math.round(seconds % 60);\n  if (secs === 0) return `${mins} minute${mins > 1 ? \"s\" : \"\"}`;\n  return `${mins}m ${secs}s`;\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n  linkedSignal,\n  signal,\n  untracked,\n} from \"@angular/core\";\nimport type { Message, ReasoningMessage } from \"@ag-ui/core\";\nimport { cn } from \"../../utils\";\nimport { CopilotChatAssistantMessageRenderer } from \"./copilot-chat-assistant-message-renderer\";\nimport { formatReasoningDuration } from \"./copilot-chat-reasoning-message-utils\";\n\n@Component({\n  selector: \"copilot-chat-reasoning-message\",\n  imports: [CopilotChatAssistantMessageRenderer],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <div\n      [class]=\"computedClass()\"\n      [attr.data-message-id]=\"message().id\"\n      data-testid=\"copilot-chat-reasoning-message\"\n      data-copilot-reasoning-message\n    >\n      <button\n        type=\"button\"\n        data-testid=\"reasoning-block\"\n        [class]=\"headerClass()\"\n        [attr.aria-expanded]=\"hasContent() ? open() : null\"\n        (click)=\"toggle()\"\n      >\n        <span class=\"cpk:font-medium\">{{ label() }}</span>\n        @if (isStreaming() && !hasContent()) {\n          <span class=\"cpk:inline-flex cpk:items-center cpk:ml-1\">\n            <span\n              class=\"cpk:w-1.5 cpk:h-1.5 cpk:rounded-full cpk:bg-muted-foreground cpk:animate-pulse\"\n            ></span>\n          </span>\n        }\n        @if (hasContent()) {\n          <svg\n            aria-hidden=\"true\"\n            focusable=\"false\"\n            viewBox=\"0 0 24 24\"\n            fill=\"none\"\n            stroke=\"currentColor\"\n            stroke-width=\"2\"\n            stroke-linecap=\"round\"\n            stroke-linejoin=\"round\"\n            [class]=\"chevronClass()\"\n          >\n            <path d=\"m9 18 6-6-6-6\"></path>\n          </svg>\n        }\n      </button>\n\n      @if (hasContent() || isStreaming()) {\n        <div\n          class=\"cpk:grid cpk:transition-[grid-template-rows] cpk:duration-200 cpk:ease-in-out\"\n          [style.grid-template-rows]=\"open() ? '1fr' : '0fr'\"\n        >\n          <div class=\"cpk:overflow-hidden\">\n            <div class=\"cpk:pb-2 cpk:pt-1\">\n              <div class=\"cpk:text-sm cpk:text-muted-foreground\">\n                <copilot-chat-assistant-message-renderer\n                  [content]=\"reasoningContent()\"\n                  inputClass=\"cpk:text-sm cpk:text-muted-foreground cpk:leading-relaxed cpk:[&_p]:m-0 cpk:[&_p+p]:mt-2 cpk:[&_strong]:font-semibold cpk:[&_strong]:text-foreground cpk:[&_ul]:my-1 cpk:[&_ol]:my-1 cpk:[&_li]:ml-4\"\n                ></copilot-chat-assistant-message-renderer>\n                @if (isStreaming() && hasContent()) {\n                  <span\n                    class=\"cpk:inline-flex cpk:items-center cpk:ml-1 cpk:align-middle\"\n                  >\n                    <span\n                      class=\"cpk:w-2 cpk:h-2 cpk:rounded-full cpk:bg-muted-foreground cpk:animate-pulse-cursor\"\n                    ></span>\n                  </span>\n                }\n              </div>\n            </div>\n          </div>\n        </div>\n      }\n    </div>\n  `,\n})\nexport class CopilotChatReasoningMessage {\n  readonly message = input.required<ReasoningMessage>();\n  readonly messages = input<Message[]>([]);\n  readonly isRunning = input<boolean>(false);\n  readonly inputClass = input<string | undefined>();\n\n  private readonly userToggled = signal(false);\n\n  protected readonly isLatest = computed(() => {\n    const messages = this.messages();\n    return messages[messages.length - 1]?.id === this.message().id;\n  });\n\n  protected readonly isStreaming = computed(\n    () => this.isRunning() && this.isLatest(),\n  );\n\n  // Captures the wall-clock start the moment streaming begins and holds it\n  // afterwards. `label` reads this in both branches, keeping the linkedSignal\n  // warm so it recomputes across the streaming transition (no effect needed).\n  private readonly startTime = linkedSignal<boolean, number | undefined>({\n    source: this.isStreaming,\n    computation: (streaming, prev) =>\n      streaming ? (prev?.value ?? Date.now()) : prev?.value,\n  });\n\n  // Opens automatically while streaming. Once the user toggles, their choice is\n  // respected; otherwise the panel auto-collapses when streaming ends. Reads\n  // userToggled untracked so a mid-stream toggle doesn't re-force it open.\n  protected readonly open = linkedSignal<boolean, boolean>({\n    source: this.isStreaming,\n    computation: (streaming, prev) =>\n      streaming\n        ? true\n        : untracked(() => this.userToggled())\n          ? (prev?.value ?? false)\n          : false,\n  });\n\n  protected readonly hasContent = computed(\n    () => (this.message().content?.length ?? 0) > 0,\n  );\n\n  protected readonly reasoningContent = computed(\n    () => this.message().content ?? \"\",\n  );\n\n  protected readonly label = computed(() => {\n    const start = this.startTime();\n    if (this.isStreaming()) return \"Thinking…\";\n    const seconds = start === undefined ? 0 : (Date.now() - start) / 1000;\n    return `Thought for ${formatReasoningDuration(seconds)}`;\n  });\n\n  protected readonly computedClass = computed(() =>\n    cn(\"cpk:my-1\", this.inputClass()),\n  );\n\n  protected readonly headerClass = computed(() =>\n    cn(\n      \"cpk:inline-flex cpk:items-center cpk:gap-1 cpk:py-1 cpk:text-sm cpk:text-muted-foreground cpk:transition-colors cpk:select-none\",\n      this.hasContent()\n        ? \"cpk:hover:text-foreground cpk:cursor-pointer\"\n        : \"cpk:cursor-default\",\n    ),\n  );\n\n  protected readonly chevronClass = computed(() =>\n    cn(\n      \"cpk:size-3.5 cpk:shrink-0 cpk:transition-transform cpk:duration-200\",\n      this.open() && \"cpk:rotate-90\",\n    ),\n  );\n\n  protected toggle(): void {\n    if (!this.hasContent()) return;\n    this.userToggled.set(true);\n    this.open.update((value) => !value);\n  }\n}\n","import {\n  Component,\n  input,\n  output,\n  ContentChild,\n  TemplateRef,\n  Type,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  computed,\n  inject,\n} from \"@angular/core\";\nimport { NgComponentOutlet, NgTemplateOutlet } from \"@angular/common\";\nimport { CopilotSlot } from \"../../slots/copilot-slot\";\nimport type { ActivityMessage, Message, ReasoningMessage } from \"@ag-ui/core\";\nimport { CopilotChatAssistantMessage } from \"./copilot-chat-assistant-message\";\nimport { CopilotChatUserMessage } from \"./copilot-chat-user-message\";\nimport { CopilotChatMessageViewCursor } from \"./copilot-chat-message-view-cursor\";\nimport { CopilotChatReasoningMessage } from \"./copilot-chat-reasoning-message\";\nimport { cn } from \"../../utils\";\nimport { CopilotKit } from \"../../copilotkit\";\nimport type { RenderActivityMessageConfig } from \"../../activity-renderer\";\n\n/**\n * CopilotChatMessageView component - Angular port of the React component.\n * Renders a list of chat messages with support for custom slots and layouts.\n * DOM structure and Tailwind classes match the React implementation exactly.\n */\n@Component({\n  selector: \"copilot-chat-message-view\",\n  host: { \"data-copilotkit\": \"\" },\n  imports: [\n    NgTemplateOutlet,\n    NgComponentOutlet,\n    CopilotSlot,\n    CopilotChatAssistantMessage,\n    CopilotChatUserMessage,\n    CopilotChatReasoningMessage,\n    CopilotChatMessageViewCursor,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <!-- Custom layout template support (render prop pattern) -->\n    @if (customLayoutTemplate) {\n      <ng-container\n        [ngTemplateOutlet]=\"customLayoutTemplate\"\n        [ngTemplateOutletContext]=\"layoutContext()\"\n      ></ng-container>\n    } @else {\n      <!-- Default layout - exact React DOM structure: div with \"flex flex-col\" classes -->\n      <div [class]=\"computedClass()\">\n        <!-- Message iteration - simplified without tool calls -->\n        @for (message of messagesValue(); track trackByMessageId($index, message)) {\n          @if (message && message.role === \"assistant\") {\n            <!-- Assistant message with slot support -->\n            @if (assistantMessageComponent() || assistantMessageTemplate()) {\n              <copilot-slot\n                [slot]=\"assistantMessageTemplate() || assistantMessageComponent()\"\n                [context]=\"mergeAssistantProps(message)\"\n                [defaultComponent]=\"defaultAssistantComponent\"\n              >\n              </copilot-slot>\n            } @else {\n              <copilot-chat-assistant-message\n                [message]=\"message\"\n                [messages]=\"messagesValue()\"\n                [agentId]=\"agentId()\"\n                [isLoading]=\"isLoadingValue()\"\n                [inputClass]=\"assistantMessageClass()\"\n                (thumbsUp)=\"handleAssistantThumbsUp($event)\"\n                (thumbsDown)=\"handleAssistantThumbsDown($event)\"\n                (readAloud)=\"handleAssistantReadAloud($event)\"\n                (regenerate)=\"handleAssistantRegenerate($event)\"\n              >\n              </copilot-chat-assistant-message>\n            }\n          } @else if (message && message.role === \"user\") {\n            <!-- User message with slot support -->\n            @if (userMessageComponent() || userMessageTemplate()) {\n              <copilot-slot\n                [slot]=\"userMessageTemplate() || userMessageComponent()\"\n                [context]=\"mergeUserProps(message)\"\n                [defaultComponent]=\"defaultUserComponent\"\n              >\n              </copilot-slot>\n            } @else {\n              <copilot-chat-user-message\n                [message]=\"message\"\n                [inputClass]=\"userMessageClass()\"\n              >\n              </copilot-chat-user-message>\n            }\n          } @else if (message && message.role === \"reasoning\") {\n            @if (reasoningMessageComponent() || reasoningMessageTemplate()) {\n              <copilot-slot\n                [slot]=\"reasoningMessageTemplate() || reasoningMessageComponent()\"\n                [context]=\"mergeReasoningProps(asReasoningMessage(message))\"\n                [defaultComponent]=\"defaultReasoningComponent\"\n              />\n            } @else {\n              <copilot-chat-reasoning-message\n                [message]=\"asReasoningMessage(message)\"\n                [messages]=\"messagesValue()\"\n                [isRunning]=\"isLoadingValue()\"\n                [inputClass]=\"reasoningMessageClass()\"\n              />\n            }\n          } @else if (message && message.role === \"activity\") {\n            @let activityRender = resolveActivityRender(message);\n            @if (activityRender) {\n              <ng-container\n                [ngComponentOutlet]=\"activityRender.component\"\n                [ngComponentOutletInputs]=\"activityRender.inputs\"\n              />\n            }\n          }\n        }\n\n        @if (childrenComponent() || childrenTemplate()) {\n          <copilot-slot\n            [slot]=\"childrenTemplate() || childrenComponent()\"\n            [context]=\"childrenContext()\"\n          />\n        }\n\n        <!-- Cursor - exactly like React's conditional rendering -->\n        @if (showCursorValue()) {\n          @if (cursorComponent() || cursorTemplate()) {\n            <copilot-slot\n              [slot]=\"cursorTemplate() || cursorComponent()\"\n              [context]=\"{ inputClass: cursorClass() }\"\n              [defaultComponent]=\"defaultCursorComponent\"\n            >\n            </copilot-slot>\n          } @else {\n            <copilot-chat-message-view-cursor [inputClass]=\"cursorClass()\">\n            </copilot-chat-message-view-cursor>\n          }\n        }\n      </div>\n    }\n  `,\n})\nexport class CopilotChatMessageView {\n  // Core inputs matching React props\n  messages = input<Message[]>([]);\n  /** Current agent state exposed to transcript-children slots. */\n  state = input<unknown>({});\n  showCursor = input<boolean>(false);\n  isLoading = input<boolean>(false);\n  inputClass = input<string | undefined>();\n  agentId = input<string | undefined>();\n\n  // Handler availability handled via DI service\n\n  // Assistant message slot inputs\n  assistantMessageComponent = input<Type<any> | undefined>();\n  assistantMessageTemplate = input<TemplateRef<any> | undefined>();\n  assistantMessageClass = input<string | undefined>();\n\n  // ReasoningMessage slot inputs\n  reasoningMessageComponent = input<Type<any> | undefined>();\n  reasoningMessageTemplate = input<TemplateRef<any> | undefined>();\n  reasoningMessageClass = input<string | undefined>();\n\n  // Content rendered after the message collection and before the cursor.\n  childrenComponent = input<Type<any> | undefined>();\n  childrenTemplate = input<TemplateRef<any> | undefined>();\n  childrenClass = input<string | undefined>();\n\n  // User message slot inputs\n  userMessageComponent = input<Type<any> | undefined>();\n  userMessageTemplate = input<TemplateRef<any> | undefined>();\n  userMessageClass = input<string | undefined>();\n\n  // Cursor slot inputs\n  cursorComponent = input<Type<any> | undefined>();\n  cursorTemplate = input<TemplateRef<any> | undefined>();\n  cursorClass = input<string | undefined>();\n\n  // Custom layout template (render prop pattern)\n  @ContentChild(\"customLayout\") customLayoutTemplate?: TemplateRef<any>;\n\n  // Output events (bubbled from child components)\n  assistantMessageThumbsUp = output<{ message: Message }>();\n  assistantMessageThumbsDown = output<{ message: Message }>();\n  assistantMessageReadAloud = output<{ message: Message }>();\n  assistantMessageRegenerate = output<{ message: Message }>();\n  userMessageCopy = output<{ message: Message }>();\n  userMessageEdit = output<{ message: Message }>();\n\n  // Default components for slots\n  protected readonly defaultAssistantComponent = CopilotChatAssistantMessage;\n  protected readonly defaultUserComponent = CopilotChatUserMessage;\n  protected readonly defaultReasoningComponent = CopilotChatReasoningMessage;\n  protected readonly defaultCursorComponent = CopilotChatMessageViewCursor;\n  protected readonly copilotKit = inject(CopilotKit);\n\n  // Derived values from inputs\n  protected messagesValue = computed(() => this.messages());\n  protected showCursorValue = computed(\n    () => this.showCursor() && this.lastMessage()?.role !== \"reasoning\",\n  );\n  protected isLoadingValue = computed(() => this.isLoading());\n  protected lastMessage = computed(() => {\n    const messages = this.messagesValue();\n    return messages[messages.length - 1];\n  });\n\n  // Computed class matching React: twMerge(\"flex flex-col\", className)\n  computedClass = computed(() =>\n    cn(\"cpk:flex cpk:flex-col\", this.inputClass()),\n  );\n\n  // Layout context for custom templates (render prop pattern)\n  layoutContext = computed(() => ({\n    isLoading: this.isLoadingValue(),\n    messages: this.messagesValue(),\n    showCursor: this.showCursorValue(),\n    messageElements: this.messagesValue().filter(\n      (m) =>\n        m &&\n        (m.role === \"assistant\" ||\n          m.role === \"user\" ||\n          m.role === \"reasoning\" ||\n          m.role === \"activity\"),\n    ),\n  }));\n\n  // Slot resolution computed signals\n  assistantMessageSlot = computed(\n    () => this.assistantMessageComponent() || this.assistantMessageClass(),\n  );\n\n  userMessageSlot = computed(\n    () => this.userMessageComponent() || this.userMessageClass(),\n  );\n\n  cursorSlot = computed(() => this.cursorComponent() || this.cursorClass());\n\n  // Props merging helpers\n  mergeAssistantProps(message: Message) {\n    return {\n      message,\n      messages: this.messagesValue(),\n      isLoading: this.isLoadingValue(),\n      inputClass: this.assistantMessageClass(),\n    };\n  }\n\n  mergeReasoningProps(message: ReasoningMessage) {\n    return {\n      message,\n      messages: this.messagesValue(),\n      isRunning: this.isLoadingValue(),\n      inputClass: this.reasoningMessageClass(),\n    };\n  }\n\n  childrenContext() {\n    return {\n      messages: this.messagesValue(),\n      state: this.state(),\n      agentId: this.agentId(),\n      isRunning: this.isLoadingValue(),\n      inputClass: this.childrenClass(),\n    };\n  }\n\n  mergeUserProps(message: Message) {\n    return {\n      message,\n      inputClass: this.userMessageClass(),\n    };\n  }\n\n  asReasoningMessage(message: Message): ReasoningMessage {\n    return message as ReasoningMessage;\n  }\n\n  // TrackBy function for performance optimization\n  trackByMessageId(index: number, message: Message): string {\n    return message?.id || `index-${index}`;\n  }\n\n  private pickActivityRenderer(\n    message: ActivityMessage,\n  ): RenderActivityMessageConfig | undefined {\n    const agentId = this.agentId();\n    const renderers = this.copilotKit.activityMessageRenderConfigs();\n    const matches = renderers.filter(\n      (renderer) => renderer.activityType === message.activityType,\n    );\n\n    return (\n      matches.find((candidate) => candidate.agentId === agentId) ??\n      matches.find((candidate) => candidate.agentId === undefined) ??\n      renderers.find((candidate) => candidate.activityType === \"*\")\n    );\n  }\n\n  protected resolveActivityRender(message: ActivityMessage) {\n    const renderer = this.pickActivityRenderer(message);\n    if (!renderer) return undefined;\n\n    const parseResult = renderer.content.safeParse(message.content);\n    if (parseResult.success === false) {\n      console.warn(\n        `Failed to parse content for activity message '${message.activityType}':`,\n        parseResult.error,\n      );\n      return undefined;\n    }\n\n    const agentId = this.agentId();\n    const agent = agentId ? this.copilotKit.getAgent(agentId) : undefined;\n    return {\n      component: renderer.component,\n      inputs: {\n        activityType: message.activityType,\n        content: parseResult.data,\n        message,\n        agent,\n      },\n    };\n  }\n\n  // Event handlers - just pass them through\n  handleAssistantThumbsUp(event: { message: Message }): void {\n    this.assistantMessageThumbsUp.emit(event);\n  }\n\n  handleAssistantThumbsDown(event: { message: Message }): void {\n    this.assistantMessageThumbsDown.emit(event);\n  }\n\n  handleAssistantReadAloud(event: { message: Message }): void {\n    this.assistantMessageReadAloud.emit(event);\n  }\n\n  handleAssistantRegenerate(event: { message: Message }): void {\n    this.assistantMessageRegenerate.emit(event);\n  }\n}\n","import {\n  Component,\n  input,\n  output,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { ChevronDown, CopilotIcon } from \"../icons/copilot-icon\";\nimport { cn } from \"../../utils\";\n\n/**\n * ScrollToBottomButton component for CopilotChatView\n * Matches React implementation exactly with same Tailwind classes\n */\n@Component({\n  selector: \"copilot-chat-view-scroll-to-bottom-button\",\n  imports: [CopilotIcon],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      type=\"button\"\n      aria-label=\"Scroll to bottom\"\n      [class]=\"computedClass\"\n      [disabled]=\"disabled()\"\n      (click)=\"handleClick()\"\n    >\n      <copilot-icon\n        [img]=\"ChevronDown\"\n        class=\"cpk:w-4 cpk:h-4 cpk:text-gray-600 cpk:dark:text-white\"\n      >\n      </copilot-icon>\n    </button>\n  `,\n})\nexport class CopilotChatViewScrollToBottomButton {\n  inputClass = input<string | undefined>();\n  disabled = input<boolean>(false);\n  // Support function-style click handler via slot context\n  onClick = input<(() => void) | undefined>();\n\n  // Simple, idiomatic Angular output\n  clicked = output<void>();\n\n  // Icon reference\n  protected readonly ChevronDown = ChevronDown;\n\n  // Computed class matching React exactly\n  get computedClass(): string {\n    return cn(\n      // Base button styles\n      \"cpk:rounded-full cpk:w-10 cpk:h-10 cpk:p-0\",\n      // Background colors\n      \"cpk:bg-white cpk:dark:bg-gray-900\",\n      // Border and shadow\n      \"cpk:shadow-lg cpk:border cpk:border-gray-200 cpk:dark:border-gray-700\",\n      // Hover states\n      \"cpk:hover:bg-gray-50 cpk:dark:hover:bg-gray-800\",\n      // Layout\n      \"cpk:flex cpk:items-center cpk:justify-center cpk:cursor-pointer\",\n      // Transition\n      \"cpk:transition-colors\",\n      // Focus states\n      \"cpk:focus:outline-none cpk:focus-visible:ring-2 cpk:focus-visible:ring-offset-2\",\n      // Custom classes\n      this.inputClass(),\n    );\n  }\n\n  handleClick(): void {\n    if (!this.disabled()) {\n      // Call input handler if provided (slot-style)\n      if (this.onClick()) {\n        this.onClick()!();\n      }\n      this.clicked.emit();\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ViewEncapsulation,\n  computed,\n  input,\n  output,\n} from \"@angular/core\";\nimport { cn } from \"../../utils\";\n\nconst suggestionPillClass = cn(\n  \"cpk:group cpk:inline-flex cpk:h-7 cpk:sm:h-8 cpk:items-center cpk:gap-1 cpk:sm:gap-1.5 cpk:rounded-full\",\n  \"cpk:border cpk:border-border/60 cpk:bg-background cpk:px-2.5 cpk:sm:px-3\",\n  \"cpk:text-[11px] cpk:sm:text-xs cpk:leading-none cpk:text-foreground cpk:transition-colors\",\n  \"cpk:cursor-pointer cpk:hover:bg-accent/60 cpk:hover:text-foreground\",\n  \"cpk:focus-visible:outline-none cpk:focus-visible:ring-2 cpk:focus-visible:ring-ring\",\n  \"cpk:focus-visible:ring-offset-2 cpk:focus-visible:ring-offset-background\",\n  \"cpk:disabled:cursor-not-allowed cpk:disabled:text-muted-foreground\",\n  \"cpk:disabled:hover:bg-background cpk:disabled:hover:text-muted-foreground\",\n  \"cpk:pointer-events-auto\",\n);\n\n@Component({\n  selector: \"copilot-chat-suggestion-pill\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { \"data-copilotkit\": \"\" },\n  template: `\n    <button\n      data-copilotkit\n      data-testid=\"copilot-suggestion\"\n      data-slot=\"suggestion-pill\"\n      type=\"button\"\n      [class]=\"computedClass()\"\n      [disabled]=\"disabled() || isLoading()\"\n      [attr.aria-busy]=\"isLoading() ? 'true' : null\"\n      (click)=\"handleClick()\"\n    >\n      @if (isLoading()) {\n        <span\n          class=\"cpk:inline-block cpk:size-3 cpk:animate-spin cpk:rounded-full cpk:border cpk:border-current cpk:border-t-transparent cpk:opacity-70\"\n          aria-hidden=\"true\"\n        ></span>\n      }\n      <span class=\"cpk:whitespace-nowrap cpk:font-medium cpk:leading-none\">\n        {{ title() }}\n      </span>\n    </button>\n  `,\n})\nexport class CopilotChatSuggestionPill {\n  readonly title = input<string>(\"\");\n  readonly disabled = input(false);\n  readonly isLoading = input(false);\n  readonly inputClass = input<string | undefined>();\n\n  readonly clicked = output<void>();\n\n  protected readonly computedClass = computed(() =>\n    cn(suggestionPillClass, this.inputClass()),\n  );\n\n  handleClick(): void {\n    if (this.disabled() || this.isLoading()) {\n      return;\n    }\n\n    this.clicked.emit();\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ViewEncapsulation,\n  computed,\n  input,\n  output,\n} from \"@angular/core\";\nimport type { Suggestion } from \"@copilotkit/core\";\nimport { cn } from \"../../utils\";\nimport { CopilotChatSuggestionPill } from \"./copilot-chat-suggestion-pill\";\n\nconst suggestionViewClass = cn(\n  \"cpk:flex cpk:flex-wrap cpk:items-center cpk:gap-1.5 cpk:sm:gap-2 cpk:pl-0 cpk:pr-4 cpk:@3xl:px-0\",\n  \"cpk:pointer-events-none\",\n);\n\n@Component({\n  selector: \"copilot-chat-suggestion-view\",\n  imports: [CopilotChatSuggestionPill],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { \"data-copilotkit\": \"\" },\n  template: `\n    @if (suggestions().length > 0) {\n      <div\n        data-copilotkit\n        data-testid=\"copilot-suggestions\"\n        [class]=\"computedClass()\"\n      >\n        @for (suggestion of suggestions(); track suggestion.message + $index) {\n          <copilot-chat-suggestion-pill\n            [title]=\"suggestion.title\"\n            [inputClass]=\"suggestion.className\"\n            [isLoading]=\"suggestion.isLoading === true\"\n            (clicked)=\"handleSelect(suggestion, $index)\"\n          />\n        }\n      </div>\n    }\n  `,\n})\nexport class CopilotChatSuggestionView {\n  readonly suggestions = input<Suggestion[]>([]);\n  readonly inputClass = input<string | undefined>();\n\n  readonly selectSuggestion = output<{\n    suggestion: Suggestion;\n    index: number;\n  }>();\n\n  protected readonly computedClass = computed(() =>\n    cn(suggestionViewClass, this.inputClass()),\n  );\n\n  handleSelect(suggestion: Suggestion, index: number): void {\n    if (suggestion.isLoading) {\n      return;\n    }\n\n    this.selectSuggestion.emit({ suggestion, index });\n  }\n}\n","import {\n  Component,\n  input,\n  TemplateRef,\n  Type,\n  output,\n  ViewChild,\n  ElementRef,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  signal,\n  computed,\n  AfterViewInit,\n  OnDestroy,\n  inject,\n  ChangeDetectorRef,\n  afterNextRender,\n} from \"@angular/core\";\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\nimport { CopilotSlot } from \"../../slots/copilot-slot\";\nimport { CopilotChatMessageView } from \"./copilot-chat-message-view\";\nimport { CopilotChatViewScrollToBottomButton } from \"./copilot-chat-view-scroll-to-bottom-button\";\nimport { CopilotChatSuggestionView } from \"./copilot-chat-suggestion-view\";\nimport { StickToBottom } from \"../../directives/stick-to-bottom\";\nimport { ScrollPosition } from \"../../scroll-position\";\nimport { ChatState } from \"../../chat-state\";\nimport { Message } from \"@ag-ui/client\";\nimport { cn } from \"../../utils\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\n/**\n * ScrollView component for CopilotChatView\n * Handles auto-scrolling and scroll position management\n */\n@Component({\n  selector: \"copilot-chat-view-scroll-view\",\n  host: { class: \"cpk:block cpk:flex-1 cpk:min-h-0\" },\n  imports: [\n    ScrollingModule,\n    NgTemplateOutlet,\n    CopilotSlot,\n    CopilotChatMessageView,\n    CopilotChatSuggestionView,\n    StickToBottom,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [ScrollPosition],\n  templateUrl: \"./copilot-chat-view-scroll-view.html\",\n})\nexport class CopilotChatViewScrollView implements AfterViewInit, OnDestroy {\n  private cdr = inject(ChangeDetectorRef);\n  protected readonly chatState = inject(ChatState, { optional: true });\n\n  autoScroll = input<boolean>(true);\n\n  inputContainerHeight = input<number>(0);\n\n  isResizing = input<boolean>(false);\n  inputClass = input<string | undefined>();\n  messages = input<Message[]>([]);\n  /** Current agent state forwarded to message-view extension slots. */\n  state = input<unknown>({});\n  agentId = input<string | undefined>();\n  messageView = input<any | undefined>();\n  messageViewClass = input<string | undefined>();\n  assistantMessageComponent = input<Type<any> | undefined>();\n  assistantMessageTemplate = input<TemplateRef<any> | undefined>();\n  assistantMessageClass = input<string | undefined>();\n  reasoningMessageComponent = input<Type<any> | undefined>();\n  reasoningMessageTemplate = input<TemplateRef<any> | undefined>();\n  reasoningMessageClass = input<string | undefined>();\n  messageViewChildrenComponent = input<Type<any> | undefined>();\n  messageViewChildrenTemplate = input<TemplateRef<any> | undefined>();\n  messageViewChildrenClass = input<string | undefined>();\n  showCursor = input<boolean>(false);\n\n  // Handler availability flags removed in favor of DI service\n\n  // Slot inputs\n  scrollToBottomButton = input<any | undefined>();\n  scrollToBottomButtonClass = input<string | undefined>();\n\n  // Output events (bubbled from message view)\n  assistantMessageThumbsUp = output<{ message: Message }>();\n  assistantMessageThumbsDown = output<{ message: Message }>();\n  assistantMessageReadAloud = output<{ message: Message }>();\n  assistantMessageRegenerate = output<{ message: Message }>();\n  userMessageCopy = output<{ message: Message }>();\n  userMessageEdit = output<{ message: Message }>();\n\n  // ViewChild references\n  @ViewChild(\"scrollContainer\", { read: ElementRef })\n  scrollContainer?: ElementRef<HTMLElement>;\n  @ViewChild(\"contentContainer\", { read: ElementRef })\n  contentContainer?: ElementRef<HTMLElement>;\n  @ViewChild(StickToBottom) stickToBottomDirective?: StickToBottom;\n\n  // Default components\n  protected readonly defaultMessageViewComponent = CopilotChatMessageView;\n  protected readonly defaultScrollToBottomButtonComponent =\n    CopilotChatViewScrollToBottomButton;\n\n  // Signals\n  protected hasMounted = signal(false);\n  protected showScrollButton = signal(false);\n  protected isAtBottom = signal(true);\n  protected hasSuggestions = computed(\n    () =>\n      !this.showCursor() && (this.chatState?.suggestions?.() ?? []).length > 0,\n  );\n  protected paddingBottom = computed(\n    () => this.inputContainerHeight() + (this.hasSuggestions() ? 4 : 32),\n  );\n\n  // Computed class\n  protected computedClass = computed(() => cn(this.inputClass()));\n\n  private destroy$ = new Subject<void>();\n  private scrollPositionService = inject(ScrollPosition);\n\n  constructor() {\n    afterNextRender(() => {\n      this.hasMounted.set(true);\n    });\n  }\n\n  ngAfterViewInit(): void {\n    if (!this.autoScroll()) {\n      // Wait for the view to be fully rendered after hasMounted is set\n      setTimeout(() => {\n        if (this.scrollContainer) {\n          // Check initial scroll position\n          const initialState = this.scrollPositionService.getScrollState(\n            this.scrollContainer.nativeElement,\n            10,\n          );\n          this.showScrollButton.set(!initialState.isAtBottom);\n\n          // Monitor scroll position for manual mode\n          this.scrollPositionService\n            .monitorScrollPosition(this.scrollContainer, 10)\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((state) => {\n              this.showScrollButton.set(!state.isAtBottom);\n            });\n        }\n      }, 100);\n    }\n  }\n\n  /**\n   * Handle isAtBottom change from StickToBottom directive\n   */\n  onIsAtBottomChange(isAtBottom: boolean): void {\n    this.isAtBottom.set(isAtBottom);\n  }\n\n  /**\n   * Scroll to bottom for manual mode\n   */\n  scrollToBottom(): void {\n    if (this.scrollContainer) {\n      this.scrollPositionService.scrollToBottom(this.scrollContainer, true);\n    }\n  }\n\n  /**\n   * Scroll to bottom for stick-to-bottom mode\n   */\n  scrollToBottomFromStick(): void {\n    if (this.stickToBottomDirective) {\n      this.stickToBottomDirective.scrollToBottom(\"smooth\");\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  // Output maps for slots\n  scrollToBottomOutputs = { clicked: () => this.scrollToBottom() };\n  scrollToBottomFromStickOutputs = {\n    clicked: () => this.scrollToBottomFromStick(),\n  };\n\n  // Context methods for templates\n  messageViewContext(): any {\n    return {\n      messages: this.messages(),\n      state: this.state(),\n      agentId: this.agentId(),\n      inputClass: this.messageViewClass(),\n      showCursor: this.showCursor(),\n      assistantMessageComponent: this.assistantMessageComponent(),\n      assistantMessageTemplate: this.assistantMessageTemplate(),\n      assistantMessageClass: this.assistantMessageClass(),\n      reasoningMessageComponent: this.reasoningMessageComponent(),\n      reasoningMessageTemplate: this.reasoningMessageTemplate(),\n      reasoningMessageClass: this.reasoningMessageClass(),\n      childrenComponent: this.messageViewChildrenComponent(),\n      childrenTemplate: this.messageViewChildrenTemplate(),\n      childrenClass: this.messageViewChildrenClass(),\n    };\n  }\n\n  scrollToBottomContext(): any {\n    return {\n      inputClass: this.scrollToBottomButtonClass(),\n      onClick: () => this.scrollToBottom(),\n    };\n  }\n\n  scrollToBottomFromStickContext(): any {\n    return {\n      inputClass: this.scrollToBottomButtonClass(),\n      onClick: () => this.scrollToBottomFromStick(),\n    };\n  }\n}\n","<ng-template #scrollContent>\n  <div [style.padding-bottom.px]=\"paddingBottom()\">\n    <div class=\"cpk:max-w-3xl cpk:mx-auto\">\n      @if (messageView()) {\n      <copilot-slot\n        [slot]=\"messageView()\"\n        [context]=\"messageViewContext()\"\n        [defaultComponent]=\"defaultMessageViewComponent\"\n      >\n      </copilot-slot>\n      } @else {\n      <copilot-chat-message-view\n        [messages]=\"messages()\"\n        [state]=\"state()\"\n        [agentId]=\"agentId()\"\n        [inputClass]=\"messageViewClass()\"\n        [showCursor]=\"showCursor()\"\n        [assistantMessageComponent]=\"assistantMessageComponent()\"\n        [assistantMessageTemplate]=\"assistantMessageTemplate()\"\n        [assistantMessageClass]=\"assistantMessageClass()\"\n        [reasoningMessageComponent]=\"reasoningMessageComponent()\"\n        [reasoningMessageTemplate]=\"reasoningMessageTemplate()\"\n        [reasoningMessageClass]=\"reasoningMessageClass()\"\n        [childrenComponent]=\"messageViewChildrenComponent()\"\n        [childrenTemplate]=\"messageViewChildrenTemplate()\"\n        [childrenClass]=\"messageViewChildrenClass()\"\n        (assistantMessageThumbsUp)=\"assistantMessageThumbsUp.emit($event)\"\n        (assistantMessageThumbsDown)=\"assistantMessageThumbsDown.emit($event)\"\n        (assistantMessageReadAloud)=\"assistantMessageReadAloud.emit($event)\"\n        (assistantMessageRegenerate)=\"assistantMessageRegenerate.emit($event)\"\n        (userMessageCopy)=\"userMessageCopy.emit($event)\"\n        (userMessageEdit)=\"userMessageEdit.emit($event)\"\n      >\n      </copilot-chat-message-view>\n      } @if (hasSuggestions()) {\n      <div class=\"cpk:pl-0 cpk:pr-4 cpk:@3xl:px-0 cpk:mt-4\">\n        <copilot-chat-suggestion-view\n          [suggestions]=\"chatState?.suggestions?.() ?? []\"\n          inputClass=\"cpk:mb-3 cpk:lg:ml-4 cpk:lg:mr-4 cpk:ml-0 cpk:mr-0\"\n          (selectSuggestion)=\"\n              chatState?.selectSuggestion($event.suggestion, $event.index)\n            \"\n        />\n      </div>\n      }\n    </div>\n  </div>\n</ng-template>\n\n@if (!hasMounted()) {\n<!-- SSR/Initial render without stick-to-bottom -->\n<div\n  class=\"cpk:h-full cpk:max-h-full cpk:flex cpk:flex-col cpk:flex-1 cpk:min-h-0 cpk:overflow-y-auto cpk:overflow-x-hidden\"\n>\n  <div class=\"cpk:px-4 cpk:@3xl:px-0\">\n    <ng-content></ng-content>\n  </div>\n</div>\n} @else {\n<div\n  class=\"cpk:h-[calc(100vh-9rem)] cpk:flex cpk:flex-col cpk:min-h-0 cpk:relative\"\n>\n  @if (autoScroll()) {\n  <!-- Auto-scroll mode with StickToBottom directive -->\n  <div\n    #scrollContainer\n    cdkScrollable\n    copilotStickToBottom\n    [enabled]=\"autoScroll()\"\n    [threshold]=\"10\"\n    [debounceMs]=\"0\"\n    [initialBehavior]=\"'smooth'\"\n    [resizeBehavior]=\"'smooth'\"\n    (isAtBottomChange)=\"onIsAtBottomChange($event)\"\n    [class]=\"computedClass()\"\n    class=\"cpk:flex-1 cpk:min-h-0 cpk:overflow-y-auto cpk:overflow-x-hidden\"\n  >\n    <!-- Scrollable content wrapper -->\n    <div class=\"cpk:px-4 cpk:@3xl:px-0\">\n      <!-- Content with padding-bottom matching React -->\n      <ng-container [ngTemplateOutlet]=\"scrollContent\"></ng-container>\n    </div>\n  </div>\n  } @else {\n  <!-- Manual scroll mode -->\n  <div\n    #scrollContainer\n    cdkScrollable\n    [class]=\"computedClass()\"\n    class=\"cpk:flex-1 cpk:min-h-0 cpk:overflow-y-auto cpk:overflow-x-hidden\"\n  >\n    <div #contentContainer class=\"cpk:px-4 cpk:@3xl:px-0\">\n      <!-- Content with padding-bottom matching React -->\n      <ng-container [ngTemplateOutlet]=\"scrollContent\"></ng-container>\n    </div>\n  </div>\n  } @if ((autoScroll() ? !isAtBottom() : showScrollButton()) && !isResizing()) {\n  <div\n    class=\"cpk:absolute cpk:inset-x-0 cpk:flex cpk:justify-center cpk:z-30\"\n    [style.bottom.px]=\"inputContainerHeight() + 16\"\n  >\n    <copilot-slot\n      [slot]=\"scrollToBottomButton()\"\n      [context]=\"\n            autoScroll()\n              ? scrollToBottomFromStickContext()\n              : scrollToBottomContext()\n          \"\n      [defaultComponent]=\"defaultScrollToBottomButtonComponent\"\n      [outputs]=\"\n            autoScroll() ? scrollToBottomFromStickOutputs : scrollToBottomOutputs\n          \"\n    >\n    </copilot-slot>\n  </div>\n  }\n</div>\n}\n","import {\n  Component,\n  input,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { cn } from \"../../utils\";\n\n/**\n * Feather component for CopilotChatView\n * Creates a gradient overlay effect between messages and input\n * Matches React implementation exactly with same Tailwind classes\n */\n@Component({\n  selector: \"copilot-chat-view-feather\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div [class]=\"computedClass\" [style]=\"style()\"></div>\n  `,\n})\nexport class CopilotChatViewFeather {\n  inputClass = input<string | undefined>();\n  style = input<{ [key: string]: any } | undefined>();\n\n  // Computed class matching React exactly\n  get computedClass(): string {\n    return cn(\n      // Positioning\n      \"cpk:absolute cpk:bottom-0 cpk:left-0 cpk:right-4 cpk:h-24 cpk:pointer-events-none cpk:z-10\",\n      // Gradient\n      \"cpk:bg-gradient-to-t\",\n      // Light mode colors\n      \"cpk:from-white cpk:via-white cpk:to-transparent\",\n      // Dark mode colors\n      \"cpk:dark:from-[rgb(33,33,33)] cpk:dark:via-[rgb(33,33,33)]\",\n      // Custom classes\n      this.inputClass(),\n    );\n  }\n}\n","import {\n  Component,\n  input,\n  output,\n  ElementRef,\n  AfterViewInit,\n  signal,\n  computed,\n  inject,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  PLATFORM_ID,\n  afterNextRender,\n} from \"@angular/core\";\nimport { isPlatformBrowser } from \"@angular/common\";\nimport { cn } from \"../../utils\";\nimport { injectChatLabels } from \"../../chat-config\";\nimport { injectChatState } from \"../../chat-state\";\n\n@Component({\n  selector: \"textarea[copilotChatTextarea]\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    \"[value]\": \"computedValue()\",\n    \"[placeholder]\": \"placeholder()\",\n    \"[disabled]\": \"disabled()\",\n    \"[class]\": \"computedClass()\",\n    \"[style.max-height.px]\": \"maxHeight()\",\n    \"[style.overflow]\": \"'auto'\",\n    \"[style.resize]\": \"'none'\",\n    \"[attr.data-testid]\": \"'copilot-chat-textarea'\",\n    \"(input)\": \"onInput($event)\",\n    \"(keydown)\": \"onKeyDown($event)\",\n    \"[attr.rows]\": \"1\",\n  },\n  template: \"\",\n  styles: [],\n})\nexport class CopilotChatTextarea implements AfterViewInit {\n  private elementRef = inject(ElementRef<HTMLTextAreaElement>);\n  private platformId = inject(PLATFORM_ID);\n  get textareaRef() {\n    return this.elementRef;\n  }\n\n  inputValue = input<string | undefined>();\n  inputPlaceholder = input<string | undefined>();\n  inputMaxRows = input<number | undefined>();\n  inputAutoFocus = input<boolean | undefined>();\n  inputDisabled = input<boolean | undefined>();\n  inputClass = input<string | undefined>();\n\n  valueChange = output<string>();\n  keyDown = output<KeyboardEvent>();\n\n  readonly chatLabels = injectChatLabels();\n  readonly chatState = injectChatState();\n\n  // Internal signals\n  maxHeight = signal<number>(0);\n\n  // Computed values\n  computedValue = computed(\n    () => this.inputValue() ?? this.chatState.inputValue() ?? \"\",\n  );\n  placeholder = computed(\n    () => this.inputPlaceholder() || this.chatLabels.chatInputPlaceholder,\n  );\n  disabled = computed(() => this.inputDisabled() ?? false);\n\n  computedClass = computed(() => {\n    const baseClasses = cn(\n      // Layout and sizing\n      \"cpk:w-full\",\n      // Behavior\n      \"cpk:outline-none cpk:resize-none\",\n      // Background\n      \"cpk:bg-transparent\",\n      // Typography\n      \"cpk:antialiased cpk:font-regular cpk:leading-relaxed cpk:text-[16px]\",\n      // Placeholder styles\n      \"cpk:placeholder:text-[#00000077] cpk:dark:placeholder:text-[#fffc]\",\n    );\n    return cn(baseClasses, this.inputClass());\n  });\n\n  constructor() {\n    afterNextRender(() => {\n      if (this.inputAutoFocus() ?? true) {\n        this.elementRef.nativeElement.focus();\n      }\n    });\n  }\n\n  ngAfterViewInit(): void {\n    if (!isPlatformBrowser(this.platformId)) return;\n\n    this.calculateMaxHeight();\n    this.adjustHeight();\n  }\n\n  onInput(event: Event): void {\n    const textarea = event.target as HTMLTextAreaElement;\n    const newValue = textarea.value;\n    this.valueChange.emit(newValue);\n\n    this.chatState.changeInput(newValue);\n\n    this.adjustHeight();\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    // Check for Enter key without Shift\n    if (event.key === \"Enter\" && !event.shiftKey) {\n      event.preventDefault();\n      this.keyDown.emit(event);\n    } else {\n      this.keyDown.emit(event);\n    }\n  }\n\n  private calculateMaxHeight(): void {\n    const textarea = this.elementRef.nativeElement;\n    const maxRowsValue = this.inputMaxRows() ?? 5;\n\n    // Save current value\n    const currentValue = textarea.value;\n\n    // Clear content to measure single row height\n    textarea.value = \"\";\n    textarea.style.height = \"auto\";\n\n    // Get computed styles to account for padding\n    const computedStyle = window.getComputedStyle(textarea);\n    const paddingTop = parseFloat(computedStyle.paddingTop);\n    const paddingBottom = parseFloat(computedStyle.paddingBottom);\n\n    // Calculate actual content height (without padding)\n    const contentHeight = textarea.scrollHeight - paddingTop - paddingBottom;\n\n    // Calculate max height: content height for maxRows + padding\n    const calculatedMaxHeight =\n      contentHeight * maxRowsValue + paddingTop + paddingBottom;\n    this.maxHeight.set(calculatedMaxHeight);\n\n    // Restore original value\n    textarea.value = currentValue;\n\n    // Adjust height after calculating maxHeight\n    if (currentValue) {\n      this.adjustHeight();\n    }\n  }\n\n  private adjustHeight(): void {\n    const textarea = this.elementRef.nativeElement;\n    const maxHeightValue = this.maxHeight();\n\n    if (maxHeightValue > 0) {\n      textarea.style.height = \"auto\";\n      textarea.style.height = `${Math.min(textarea.scrollHeight, maxHeightValue)}px`;\n    }\n  }\n\n  /**\n   * Public method to focus the textarea\n   */\n  focus(): void {\n    this.elementRef.nativeElement.focus();\n  }\n\n  /**\n   * Public method to get current value\n   */\n  getValue(): string {\n    return this.elementRef.nativeElement.value;\n  }\n\n  /**\n   * Public method to set value programmatically\n   */\n  setValue(value: string): void {\n    this.elementRef.nativeElement.value = value;\n    this.valueChange.emit(value);\n\n    this.chatState.changeInput(value);\n\n    setTimeout(() => this.adjustHeight());\n  }\n}\n","import type { Type, TemplateRef } from \"@angular/core\";\n\n/**\n * Mode of the chat input component\n */\nexport type CopilotChatInputMode = \"input\" | \"transcribe\" | \"processing\";\n\n/**\n * Represents a menu item in the tools menu\n */\nexport type ToolsMenuItem = {\n  label: string;\n} & (\n  | {\n      action: () => void;\n      items?: never;\n    }\n  | {\n      action?: never;\n      items: (ToolsMenuItem | \"-\")[];\n    }\n);\n\n/**\n * Audio recorder state\n */\nexport type AudioRecorderState = \"idle\" | \"recording\" | \"processing\";\n\n/**\n * Error class for audio recorder failures\n */\nexport class AudioRecorderError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"AudioRecorderError\";\n  }\n}\n\n/**\n * Props for textarea component\n */\nexport interface CopilotChatTextareaProps {\n  value?: string;\n  placeholder?: string;\n  maxRows?: number;\n  autoFocus?: boolean;\n  disabled?: boolean;\n  onChange?: (value: string) => void;\n  onKeyDown?: (event: KeyboardEvent) => void;\n  inputClass?: string;\n  style?: any;\n  rows?: number;\n  cols?: number;\n  readonly?: boolean;\n  spellcheck?: boolean;\n  wrap?: \"hard\" | \"soft\" | \"off\";\n}\n\n/**\n * Props for button components\n */\nexport interface CopilotChatButtonProps {\n  disabled?: boolean;\n  onClick?: () => void;\n  inputClass?: string;\n  style?: any;\n  type?: \"button\" | \"submit\" | \"reset\";\n  ariaLabel?: string;\n  ariaPressed?: boolean;\n  ariaExpanded?: boolean;\n  title?: string;\n}\n\n/**\n * Props for toolbar button with tooltip\n */\nexport interface CopilotChatToolbarButtonProps extends CopilotChatButtonProps {\n  icon?: TemplateRef<any>;\n  tooltip?: string;\n  variant?: \"primary\" | \"secondary\";\n}\n\n/**\n * Props for tools menu button\n */\nexport interface CopilotChatToolsButtonProps extends CopilotChatButtonProps {\n  toolsMenu?: (ToolsMenuItem | \"-\")[];\n}\n\n/**\n * Props for audio recorder\n */\nexport interface CopilotChatAudioRecorderProps {\n  inputClass?: string;\n  style?: any;\n  onStateChange?: (state: AudioRecorderState) => void;\n  showControls?: boolean;\n  maxDuration?: number;\n}\n\n/**\n * Props for toolbar\n */\nexport interface CopilotChatToolbarProps {\n  inputClass?: string;\n  style?: any;\n  position?: \"top\" | \"bottom\";\n  alignment?: \"left\" | \"center\" | \"right\" | \"space-between\";\n}\n\n/**\n * Slot configuration for chat input\n */\nexport interface CopilotChatInputSlots {\n  textArea?: Type<any> | TemplateRef<any>;\n  sendButton?: Type<any> | TemplateRef<any>;\n  startTranscribeButton?: Type<any> | TemplateRef<any>;\n  cancelTranscribeButton?: Type<any> | TemplateRef<any>;\n  finishTranscribeButton?: Type<any> | TemplateRef<any>;\n  addFileButton?: Type<any> | TemplateRef<any>;\n  toolsButton?: Type<any> | TemplateRef<any>;\n  toolbar?: Type<any> | TemplateRef<any>;\n  audioRecorder?: Type<any> | TemplateRef<any>;\n}\n\n/**\n * Input configuration for the chat input component\n */\nexport interface CopilotChatInputConfig {\n  mode?: CopilotChatInputMode;\n  toolsMenu?: (ToolsMenuItem | \"-\")[];\n  autoFocus?: boolean;\n  additionalToolbarItems?: TemplateRef<any>;\n  value?: string;\n  class?: string;\n}\n\n/**\n * Output events for the chat input component\n */\nexport interface CopilotChatInputOutputs {\n  submitMessage: (value: string) => void;\n  startTranscribe: () => void;\n  cancelTranscribe: () => void;\n  finishTranscribe: () => void;\n  addFile: () => void;\n  changeValue: (value: string) => void;\n}\n","import {\n  Component,\n  DestroyRef,\n  ElementRef,\n  AfterViewInit,\n  input,\n  output,\n  signal,\n  computed,\n  inject,\n  viewChild,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n  AudioRecorderState,\n  AudioRecorderError,\n} from \"./copilot-chat-input.types\";\n\n@Component({\n  selector: \"copilot-chat-audio-recorder\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div [class]=\"computedClass()\">\n      <canvas\n        #canvasRef\n        class=\"cpk:w-full cpk:h-full\"\n        [style.imageRendering]=\"'pixelated'\"\n      ></canvas>\n    </div>\n  `,\n  host: {\n    \"[class.copilot-chat-audio-recorder]\": \"true\",\n  },\n})\nexport class CopilotChatAudioRecorder implements AfterViewInit {\n  private readonly canvasRef =\n    viewChild.required<ElementRef<HTMLCanvasElement>>(\"canvasRef\");\n\n  inputClass = input<string | undefined>();\n  inputShowControls = input<boolean>(false);\n\n  stateChange = output<AudioRecorderState>();\n  error = output<AudioRecorderError>();\n\n  readonly state = signal<AudioRecorderState>(\"idle\");\n\n  readonly computedClass = computed(() => {\n    const baseClasses = \"cpk:h-11 cpk:w-full cpk:px-5\";\n    return `${baseClasses} ${this.inputClass() || \"\"}`;\n  });\n\n  // Capture resources\n  private mediaRecorder?: MediaRecorder;\n  private stream?: MediaStream;\n  private audioContext?: AudioContext;\n  private analyser?: AnalyserNode;\n  private audioChunks: Blob[] = [];\n\n  // Guards the async window before `state` flips to \"recording\".\n  private starting = false;\n\n  // Waveform animation state\n  private animationFrameId?: number;\n  private amplitudeHistory: number[] = [];\n  private scrollOffset = 0;\n  private smoothedAmplitude = 0;\n  private fadeOpacity = 0;\n\n  constructor() {\n    inject(DestroyRef).onDestroy(() => this.dispose());\n  }\n\n  ngAfterViewInit(): void {\n    this.startAnimation();\n  }\n\n  /**\n   * Request microphone access and start recording.\n   */\n  async start(): Promise<void> {\n    if (this.starting || this.state() !== \"idle\") {\n      return;\n    }\n    this.starting = true;\n\n    try {\n      const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n      this.stream = stream;\n\n      // Wire an analyser for the live waveform.\n      const audioContext = new AudioContext();\n      this.audioContext = audioContext;\n      const source = audioContext.createMediaStreamSource(stream);\n      const analyser = audioContext.createAnalyser();\n      analyser.fftSize = 2048;\n      source.connect(analyser);\n      this.analyser = analyser;\n\n      const mimeType = MediaRecorder.isTypeSupported(\"audio/webm;codecs=opus\")\n        ? \"audio/webm;codecs=opus\"\n        : MediaRecorder.isTypeSupported(\"audio/webm\")\n          ? \"audio/webm\"\n          : MediaRecorder.isTypeSupported(\"audio/mp4\")\n            ? \"audio/mp4\"\n            : \"\";\n\n      const options: MediaRecorderOptions = mimeType ? { mimeType } : {};\n      const mediaRecorder = new MediaRecorder(stream, options);\n      this.mediaRecorder = mediaRecorder;\n      this.audioChunks = [];\n\n      mediaRecorder.ondataavailable = (event) => {\n        if (event.data.size > 0) {\n          this.audioChunks.push(event.data);\n        }\n      };\n\n      mediaRecorder.start(100);\n      this.setState(\"recording\");\n    } catch (err) {\n      this.cleanup();\n      const error = this.toRecorderError(err);\n      this.error.emit(error);\n      this.setState(\"idle\");\n      throw error;\n    } finally {\n      this.starting = false;\n    }\n  }\n\n  /**\n   * Stop recording and resolve with the captured audio.\n   */\n  stop(): Promise<Blob> {\n    return new Promise<Blob>((resolve, reject) => {\n      const mediaRecorder = this.mediaRecorder;\n      if (!mediaRecorder || this.state() !== \"recording\") {\n        reject(new AudioRecorderError(\"No active recording\"));\n        return;\n      }\n\n      this.setState(\"processing\");\n\n      mediaRecorder.onstop = () => {\n        const mimeType = mediaRecorder.mimeType || \"audio/webm\";\n        const audioBlob = new Blob(this.audioChunks, { type: mimeType });\n        this.cleanup();\n        this.setState(\"idle\");\n        resolve(audioBlob);\n      };\n\n      mediaRecorder.onerror = () => {\n        this.cleanup();\n        const error = new AudioRecorderError(\"Recording failed\");\n        this.error.emit(error);\n        this.setState(\"idle\");\n        reject(error);\n      };\n\n      mediaRecorder.stop();\n    });\n  }\n\n  getState(): AudioRecorderState {\n    return this.state();\n  }\n\n  /**\n   * Release every capture/animation resource. Safe to call repeatedly.\n   */\n  dispose(): void {\n    this.cleanup();\n  }\n\n  private setState(state: AudioRecorderState): void {\n    this.state.set(state);\n    this.stateChange.emit(state);\n  }\n\n  private toRecorderError(err: unknown): AudioRecorderError {\n    if (err instanceof Error && err.name === \"NotAllowedError\") {\n      return new AudioRecorderError(\"Microphone permission denied\");\n    }\n    if (err instanceof Error && err.name === \"NotFoundError\") {\n      return new AudioRecorderError(\"No microphone found\");\n    }\n    return new AudioRecorderError(\n      err instanceof Error ? err.message : \"Failed to start recording\",\n    );\n  }\n\n  private cleanup(): void {\n    if (this.animationFrameId) {\n      cancelAnimationFrame(this.animationFrameId);\n      this.animationFrameId = undefined;\n    }\n    if (this.mediaRecorder && this.mediaRecorder.state !== \"inactive\") {\n      try {\n        this.mediaRecorder.stop();\n      } catch {\n        // Ignore errors during cleanup\n      }\n    }\n    this.stream?.getTracks().forEach((track) => track.stop());\n    if (this.audioContext && this.audioContext.state !== \"closed\") {\n      this.audioContext.close().catch(() => {});\n    }\n    this.mediaRecorder = undefined;\n    this.stream = undefined;\n    this.audioContext = undefined;\n    this.analyser = undefined;\n    this.audioChunks = [];\n    this.amplitudeHistory = [];\n    this.scrollOffset = 0;\n    this.smoothedAmplitude = 0;\n    this.fadeOpacity = 0;\n  }\n\n  /** RMS amplitude from time-domain samples (128 is silence). */\n  private calculateAmplitude(dataArray: Uint8Array): number {\n    let sum = 0;\n    for (let i = 0; i < dataArray.length; i++) {\n      const sample = (dataArray[i] ?? 128) / 128 - 1;\n      sum += sample * sample;\n    }\n    return Math.sqrt(sum / dataArray.length);\n  }\n\n  private startAnimation(): void {\n    const canvas = this.canvasRef().nativeElement;\n    const ctx = canvas.getContext(\"2d\");\n    if (!ctx) return;\n\n    const barWidth = 2;\n    const barGap = 1;\n    const barSpacing = barWidth + barGap;\n    const scrollSpeed = 1 / 3;\n\n    const draw = () => {\n      const rect = canvas.getBoundingClientRect();\n      const dpr = window.devicePixelRatio || 1;\n\n      if (\n        canvas.width !== rect.width * dpr ||\n        canvas.height !== rect.height * dpr\n      ) {\n        canvas.width = rect.width * dpr;\n        canvas.height = rect.height * dpr;\n        ctx.scale(dpr, dpr);\n      }\n\n      const maxBars = Math.floor(rect.width / barSpacing) + 2;\n\n      if (this.analyser && this.state() === \"recording\") {\n        if (this.amplitudeHistory.length === 0) {\n          this.amplitudeHistory = new Array(maxBars).fill(0);\n        }\n\n        if (this.fadeOpacity < 1) {\n          this.fadeOpacity = Math.min(1, this.fadeOpacity + 0.03);\n        }\n\n        this.scrollOffset += scrollSpeed;\n\n        const bufferLength = this.analyser.fftSize;\n        const dataArray = new Uint8Array(bufferLength);\n        this.analyser.getByteTimeDomainData(dataArray);\n        const rawAmplitude = this.calculateAmplitude(dataArray);\n\n        const attackSpeed = 0.12;\n        const decaySpeed = 0.08;\n        const speed =\n          rawAmplitude > this.smoothedAmplitude ? attackSpeed : decaySpeed;\n        this.smoothedAmplitude +=\n          (rawAmplitude - this.smoothedAmplitude) * speed;\n\n        if (this.scrollOffset >= barSpacing) {\n          this.scrollOffset -= barSpacing;\n          this.amplitudeHistory.push(this.smoothedAmplitude);\n          if (this.amplitudeHistory.length > maxBars) {\n            this.amplitudeHistory = this.amplitudeHistory.slice(-maxBars);\n          }\n        }\n      }\n\n      ctx.clearRect(0, 0, rect.width, rect.height);\n\n      const computedStyle = getComputedStyle(canvas);\n      ctx.fillStyle = computedStyle.color;\n      ctx.globalAlpha = this.fadeOpacity;\n\n      const centerY = rect.height / 2;\n      const maxAmplitude = rect.height / 2 - 2;\n      const history = this.amplitudeHistory;\n\n      if (history.length > 0) {\n        const offset = this.scrollOffset;\n        const edgeFadeWidth = 12;\n\n        for (let i = 0; i < history.length; i++) {\n          const amplitude = history[i] ?? 0;\n          const scaledAmplitude = Math.min(amplitude * 4, 1);\n          const barHeight = Math.max(2, scaledAmplitude * maxAmplitude * 2);\n\n          const x = rect.width - (history.length - i) * barSpacing - offset;\n          const y = centerY - barHeight / 2;\n\n          if (x + barWidth > 0 && x < rect.width) {\n            let edgeOpacity = 1;\n            if (x < edgeFadeWidth) {\n              edgeOpacity = Math.max(0, x / edgeFadeWidth);\n            } else if (x > rect.width - edgeFadeWidth) {\n              edgeOpacity = Math.max(0, (rect.width - x) / edgeFadeWidth);\n            }\n            ctx.globalAlpha = this.fadeOpacity * edgeOpacity;\n            ctx.fillRect(x, y, barWidth, barHeight);\n          }\n        }\n      }\n\n      this.animationFrameId = requestAnimationFrame(draw);\n    };\n\n    draw();\n  }\n}\n","import {\n  Component,\n  input,\n  output,\n  ChangeDetectionStrategy,\n  computed,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport {\n  ArrowUp,\n  CopilotIcon,\n  Mic,\n  X,\n  Check,\n  Plus,\n} from \"../icons/copilot-icon\";\nimport { injectChatLabels } from \"../../chat-config\";\nimport { CopilotTooltip } from \"../../directives/tooltip\";\nimport { cn } from \"../../utils\";\n\n// Base button classes matching React's button variants\nconst buttonBase = cn(\n  \"cpk:inline-flex cpk:items-center cpk:justify-center cpk:gap-2 cpk:whitespace-nowrap cpk:rounded-md cpk:text-sm cpk:font-medium\",\n  \"cpk:transition-all cpk:disabled:pointer-events-none cpk:disabled:opacity-50\",\n  \"cpk:shrink-0 cpk:outline-none\",\n  \"cpk:focus-visible:border-ring cpk:focus-visible:ring-ring/50 cpk:focus-visible:ring-[3px]\",\n);\n\nconst chatInputToolbarPrimary = cn(\n  \"cpk:cursor-pointer\",\n  // Background and text\n  \"cpk:bg-black cpk:text-white\",\n  // Dark mode\n  \"cpk:dark:bg-white cpk:dark:text-black cpk:dark:focus-visible:outline-white\",\n  // Shape and sizing\n  \"cpk:rounded-full cpk:h-9 cpk:w-9\",\n  // Interactions\n  \"cpk:transition-colors\",\n  // Focus states\n  \"cpk:focus:outline-none\",\n  // Hover states\n  \"cpk:hover:opacity-70 cpk:disabled:hover:opacity-100\",\n  // Disabled states\n  \"cpk:disabled:cursor-not-allowed cpk:disabled:bg-[#00000014] cpk:disabled:text-[rgb(13,13,13)]\",\n  \"cpk:dark:disabled:bg-[#454545] cpk:dark:disabled:text-white\",\n);\n\nconst chatInputToolbarSecondary = cn(\n  \"cpk:cursor-pointer\",\n  // Background and text\n  \"cpk:bg-transparent cpk:text-[#444444]\",\n  // Dark mode\n  \"cpk:dark:text-white cpk:dark:border-[#404040]\",\n  // Shape and sizing\n  \"cpk:rounded-full cpk:h-9 cpk:w-9\",\n  // Interactions\n  \"cpk:transition-colors\",\n  // Focus states\n  \"cpk:focus:outline-none\",\n  // Hover states\n  \"cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333]\",\n  \"cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF]\",\n  // Disabled states\n  \"cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50\",\n  \"cpk:disabled:hover:bg-transparent cpk:disabled:hover:text-[#444444]\",\n  \"cpk:dark:disabled:hover:bg-transparent cpk:dark:disabled:hover:text-[#CCCCCC]\",\n);\n\n@Component({\n  selector: \"copilot-chat-send-button\",\n  imports: [CopilotIcon],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div class=\"cpk:mr-[10px]\">\n      <button\n        type=\"button\"\n        aria-label=\"Send message\"\n        [disabled]=\"disabled()\"\n        [class]=\"buttonClass\"\n        (click)=\"onClick()\"\n      >\n        <copilot-icon [img]=\"ArrowUpIcon\" [size]=\"18\"></copilot-icon>\n      </button>\n    </div>\n  `,\n  styles: [``],\n})\nexport class CopilotChatSendButton {\n  disabled = input(false);\n  clicked = output<void>();\n\n  readonly ArrowUpIcon = ArrowUp;\n  buttonClass = cn(buttonBase, chatInputToolbarPrimary);\n\n  onClick(): void {\n    if (!this.disabled()) {\n      this.clicked.emit();\n    }\n  }\n}\n\n@Component({\n  selector: \"copilot-chat-start-transcribe-button\",\n  imports: [CopilotIcon, CopilotTooltip],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      type=\"button\"\n      [attr.aria-label]=\"label\"\n      [disabled]=\"disabled()\"\n      [class]=\"buttonClass\"\n      [copilotTooltip]=\"label\"\n      tooltipPosition=\"below\"\n      (click)=\"onClick()\"\n    >\n      <copilot-icon [img]=\"MicIcon\" [size]=\"18\"></copilot-icon>\n    </button>\n  `,\n  styles: [``],\n})\nexport class CopilotChatStartTranscribeButton {\n  disabled = input(false);\n  clicked = output<void>();\n\n  readonly labels = injectChatLabels();\n\n  readonly MicIcon = Mic;\n  buttonClass = cn(buttonBase, chatInputToolbarSecondary, \"cpk:mr-2\");\n\n  get label(): string {\n    return this.labels.chatInputToolbarStartTranscribeButtonLabel;\n  }\n\n  onClick(): void {\n    if (!this.disabled()) {\n      this.clicked.emit();\n    }\n  }\n}\n\n@Component({\n  selector: \"copilot-chat-cancel-transcribe-button\",\n  imports: [CopilotIcon, CopilotTooltip],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      type=\"button\"\n      [attr.aria-label]=\"label\"\n      [disabled]=\"disabled()\"\n      [class]=\"buttonClass\"\n      [copilotTooltip]=\"label\"\n      tooltipPosition=\"below\"\n      (click)=\"onClick()\"\n    >\n      <copilot-icon [img]=\"XIcon\" [size]=\"18\"></copilot-icon>\n    </button>\n  `,\n  styles: [``],\n})\nexport class CopilotChatCancelTranscribeButton {\n  disabled = input(false);\n  clicked = output<void>();\n\n  readonly labels = injectChatLabels();\n\n  readonly XIcon = X;\n  buttonClass = cn(buttonBase, chatInputToolbarSecondary, \"cpk:mr-2\");\n\n  get label(): string {\n    return this.labels.chatInputToolbarCancelTranscribeButtonLabel;\n  }\n\n  onClick(): void {\n    if (!this.disabled()) {\n      this.clicked.emit();\n    }\n  }\n}\n\n@Component({\n  selector: \"copilot-chat-finish-transcribe-button\",\n  imports: [CopilotIcon, CopilotTooltip],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      type=\"button\"\n      [attr.aria-label]=\"label\"\n      [disabled]=\"disabled()\"\n      [class]=\"buttonClass\"\n      [copilotTooltip]=\"label\"\n      tooltipPosition=\"below\"\n      (click)=\"onClick()\"\n    >\n      <copilot-icon [img]=\"CheckIcon\" [size]=\"18\"></copilot-icon>\n    </button>\n  `,\n  styles: [``],\n})\nexport class CopilotChatFinishTranscribeButton {\n  disabled = input(false);\n  clicked = output<void>();\n\n  readonly labels = injectChatLabels();\n\n  readonly CheckIcon = Check;\n  buttonClass = cn(buttonBase, chatInputToolbarSecondary, \"cpk:mr-[10px]\");\n\n  get label(): string {\n    return this.labels.chatInputToolbarFinishTranscribeButtonLabel;\n  }\n\n  onClick(): void {\n    if (!this.disabled()) {\n      this.clicked.emit();\n    }\n  }\n}\n\n@Component({\n  selector: \"copilot-chat-add-file-button\",\n  imports: [CopilotIcon, CopilotTooltip],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      type=\"button\"\n      [attr.aria-label]=\"label\"\n      [disabled]=\"disabled()\"\n      [class]=\"buttonClass\"\n      [copilotTooltip]=\"label\"\n      tooltipPosition=\"below\"\n      (click)=\"onClick()\"\n    >\n      <copilot-icon [img]=\"PlusIcon\" [size]=\"20\"></copilot-icon>\n    </button>\n  `,\n  styles: [``],\n})\nexport class CopilotChatAddFileButton {\n  disabled = input(false);\n  clicked = output<void>();\n\n  readonly labels = injectChatLabels();\n\n  readonly PlusIcon = Plus;\n  buttonClass = cn(buttonBase, chatInputToolbarSecondary, \"cpk:ml-2\");\n\n  get label(): string {\n    return this.labels.chatInputToolbarAddButtonLabel;\n  }\n\n  onClick(): void {\n    if (!this.disabled()) {\n      this.clicked.emit();\n    }\n  }\n}\n\n// Base toolbar button component that other buttons can use\n@Component({\n  selector: \"copilot-chat-toolbar-button\",\n  imports: [CopilotTooltip],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      type=\"button\"\n      [disabled]=\"disabled()\"\n      [class]=\"computedClass()\"\n      [attr.aria-label]=\"title() || null\"\n      [copilotTooltip]=\"title()\"\n      tooltipPosition=\"below\"\n      (click)=\"onClick()\"\n    >\n      <ng-content></ng-content>\n    </button>\n  `,\n  styles: [``],\n})\nexport class CopilotChatToolbarButton {\n  disabled = input(false);\n  variant = input<\"primary\" | \"secondary\">(\"secondary\");\n  customClass = input(\"\");\n  title = input(\"\");\n\n  clicked = output<void>();\n\n  computedClass = computed(() => {\n    const variantClass =\n      this.variant() === \"primary\"\n        ? chatInputToolbarPrimary\n        : chatInputToolbarSecondary;\n    return cn(buttonBase, variantClass, this.customClass());\n  });\n\n  onClick(): void {\n    if (!this.disabled()) {\n      this.clicked.emit();\n    }\n  }\n}\n","import {\n  Component,\n  input,\n  computed,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { cn } from \"../../utils\";\n\n@Component({\n  selector: \"div[copilotChatToolbar]\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    \"[class]\": \"computedClass()\",\n  },\n  template: `\n    <ng-content></ng-content>\n  `,\n  styles: [],\n})\nexport class CopilotChatToolbar {\n  readonly inputClass = input<string | undefined>();\n\n  readonly computedClass = computed(() => {\n    const baseClasses =\n      \"cpk:w-full cpk:h-[60px] cpk:bg-transparent cpk:flex cpk:items-center cpk:justify-between\";\n    return cn(baseClasses, this.inputClass());\n  });\n}\n","import {\n  Component,\n  input,\n  computed,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { CdkMenuModule } from \"@angular/cdk/menu\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ChevronRight, CopilotIcon, Plus } from \"../icons/copilot-icon\";\nimport type { ToolsMenuItem } from \"./copilot-chat-input.types\";\nimport { cn } from \"../../utils\";\nimport { injectChatLabels } from \"../../chat-config\";\nimport { CopilotTooltip } from \"../../directives/tooltip\";\n\n@Component({\n  selector: \"copilot-chat-tools-menu\",\n  imports: [CdkMenuModule, OverlayModule, CopilotIcon, CopilotTooltip],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <button\n      type=\"button\"\n      [attr.aria-label]=\"tooltipLabel()\"\n      [disabled]=\"triggerDisabled()\"\n      [class]=\"buttonClass()\"\n      [cdkMenuTriggerFor]=\"menu\"\n      [copilotTooltip]=\"tooltipLabel()\"\n      tooltipPosition=\"below\"\n    >\n      <copilot-icon [img]=\"PlusIcon\" [size]=\"20\"></copilot-icon>\n    </button>\n\n    <ng-template #menu>\n      <div\n        data-copilotkit\n        class=\"cpk:bg-popover cpk:text-popover-foreground cpk:z-50 cpk:max-h-[var(--radix-dropdown-menu-content-available-height)] cpk:min-w-[8rem] cpk:overflow-x-hidden cpk:overflow-y-auto cpk:rounded-md cpk:border cpk:p-1 cpk:shadow-md\"\n        cdkMenu\n      >\n        @for (item of menuItems(); track $index) {\n          @if (item === \"-\") {\n            <div class=\"cpk:-mx-1 cpk:my-1 cpk:h-px cpk:bg-border\"></div>\n          } @else if (isMenuItem(item)) {\n            @if (item.items && item.items.length > 0) {\n              <!-- Submenu trigger -->\n              <button\n                type=\"button\"\n                class=\"cpk:relative cpk:flex cpk:w-full cpk:cursor-default cpk:select-none cpk:items-center cpk:gap-2 cpk:rounded-sm cpk:border-none cpk:bg-transparent cpk:px-2 cpk:py-1.5 cpk:text-left cpk:text-sm cpk:outline-hidden cpk:hover:bg-accent cpk:hover:text-accent-foreground cpk:focus:bg-accent cpk:focus:text-accent-foreground\"\n                [cdkMenuTriggerFor]=\"submenu\"\n                cdkMenuItem\n              >\n                {{ item.label }}\n                <copilot-icon\n                  [img]=\"ChevronRightIcon\"\n                  [size]=\"12\"\n                  class=\"cpk:ml-auto\"\n                ></copilot-icon>\n              </button>\n\n              <!-- Submenu template -->\n              <ng-template #submenu>\n                <div\n                  data-copilotkit\n                  class=\"cpk:bg-popover cpk:text-popover-foreground cpk:z-50 cpk:max-h-[var(--radix-dropdown-menu-content-available-height)] cpk:min-w-[8rem] cpk:overflow-x-hidden cpk:overflow-y-auto cpk:rounded-md cpk:border cpk:p-1 cpk:shadow-md\"\n                  cdkMenu\n                >\n                  @for (subItem of item.items; track $index) {\n                    @if (subItem === \"-\") {\n                      <div class=\"cpk:-mx-1 cpk:my-1 cpk:h-px cpk:bg-border\"></div>\n                    } @else if (isMenuItem(subItem)) {\n                      <button\n                        type=\"button\"\n                        class=\"cpk:relative cpk:flex cpk:w-full cpk:cursor-default cpk:select-none cpk:items-center cpk:gap-2 cpk:rounded-sm cpk:border-none cpk:bg-transparent cpk:px-2 cpk:py-1.5 cpk:text-left cpk:text-sm cpk:outline-hidden cpk:hover:bg-accent cpk:hover:text-accent-foreground cpk:focus:bg-accent cpk:focus:text-accent-foreground\"\n                        (click)=\"handleItemClick(subItem)\"\n                        cdkMenuItem\n                      >\n                        {{ subItem.label }}\n                      </button>\n                    }\n                  }\n                </div>\n              </ng-template>\n            } @else {\n              <!-- Regular menu item -->\n              <button\n                type=\"button\"\n                class=\"cpk:relative cpk:flex cpk:w-full cpk:cursor-default cpk:select-none cpk:items-center cpk:gap-2 cpk:rounded-sm cpk:border-none cpk:bg-transparent cpk:px-2 cpk:py-1.5 cpk:text-left cpk:text-sm cpk:outline-hidden cpk:hover:bg-accent cpk:hover:text-accent-foreground cpk:focus:bg-accent cpk:focus:text-accent-foreground\"\n                (click)=\"handleItemClick(item)\"\n                cdkMenuItem\n              >\n                {{ item.label }}\n              </button>\n            }\n          }\n        }\n      </div>\n    </ng-template>\n  `,\n  styles: [\n    `\n      /* CDK Overlay styles for positioning */\n      .cdk-overlay-pane {\n        position: absolute;\n        pointer-events: auto;\n        z-index: 1000;\n      }\n\n      /* Ensure menu appears above other content */\n      .cdk-overlay-container {\n        position: fixed;\n        z-index: 1000;\n      }\n\n      /* Menu animation */\n      [cdkMenu] {\n        animation: menuFadeIn 0.15s ease-out;\n      }\n\n      @keyframes menuFadeIn {\n        from {\n          opacity: 0;\n          transform: translateY(4px);\n        }\n        to {\n          opacity: 1;\n          transform: translateY(0);\n        }\n      }\n    `,\n  ],\n})\nexport class CopilotChatToolsMenu {\n  readonly PlusIcon = Plus;\n  readonly ChevronRightIcon = ChevronRight;\n  inputToolsMenu = input<(ToolsMenuItem | \"-\")[] | undefined>();\n  inputDisabled = input<boolean | undefined>();\n  inputClass = input<string | undefined>();\n  inputAddFile = input<(() => void) | undefined>();\n\n  private labels = injectChatLabels();\n\n  // Derive state from inputs\n  toolsMenu = computed(() => this.inputToolsMenu() ?? []);\n  disabled = computed(() => this.inputDisabled() ?? false);\n  customClass = computed(() => this.inputClass());\n  addFile = computed(() => this.inputAddFile());\n\n  menuItems = computed<(ToolsMenuItem | \"-\")[]>(() => {\n    const items: (ToolsMenuItem | \"-\")[] = [];\n    const addFile = this.addFile();\n\n    if (addFile) {\n      items.push({\n        label: this.labels.chatInputToolbarAddButtonLabel,\n        action: addFile,\n      });\n    }\n\n    for (const item of this.toolsMenu()) {\n      if (item === \"-\") {\n        if (items.length === 0 || items[items.length - 1] === \"-\") {\n          continue;\n        }\n        items.push(item);\n      } else {\n        items.push(item);\n      }\n    }\n\n    while (items.length > 0 && items[items.length - 1] === \"-\") {\n      items.pop();\n    }\n\n    return items;\n  });\n\n  hasItems = computed(() => this.menuItems().length > 0);\n  triggerDisabled = computed(() => this.disabled() || !this.hasItems());\n\n  readonly label = this.labels.chatInputToolbarToolsButtonLabel;\n\n  tooltipLabel = computed(() =>\n    this.addFile()\n      ? this.labels.chatInputToolbarAddButtonLabel\n      : this.labels.chatInputToolbarToolsButtonLabel,\n  );\n\n  buttonClass = computed(() => {\n    const baseClasses = cn(\n      // Base button styles\n      \"cpk:inline-flex cpk:items-center cpk:justify-center cpk:gap-2 cpk:whitespace-nowrap cpk:rounded-full cpk:text-sm cpk:font-medium\",\n      \"cpk:transition-all cpk:disabled:pointer-events-none cpk:disabled:opacity-50\",\n      \"cpk:shrink-0 cpk:outline-none\",\n      \"cpk:focus-visible:ring-[3px]\",\n      // chatInputToolbarSecondary variant\n      \"cpk:cursor-pointer\",\n      \"cpk:bg-transparent cpk:text-[#444444]\",\n      \"cpk:dark:text-white cpk:dark:border-[#404040]\",\n      \"cpk:transition-colors\",\n      \"cpk:focus:outline-none\",\n      \"cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333]\",\n      \"cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF]\",\n      \"cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50\",\n      \"cpk:disabled:hover:bg-transparent cpk:disabled:hover:text-[#444444]\",\n      \"cpk:dark:disabled:hover:bg-transparent cpk:dark:disabled:hover:text-[#CCCCCC]\",\n      // Size\n      \"cpk:h-9 cpk:w-9\",\n    );\n    return cn(baseClasses, this.customClass());\n  });\n\n  isMenuItem(item: any): item is ToolsMenuItem {\n    return item && typeof item === \"object\" && \"label\" in item;\n  }\n\n  handleItemClick(item: ToolsMenuItem): void {\n    if (item.action) {\n      item.action();\n    }\n  }\n}\n","import {\n  Component,\n  TemplateRef,\n  signal,\n  computed,\n  effect,\n  ChangeDetectionStrategy,\n  OnDestroy,\n  Type,\n  ViewEncapsulation,\n  contentChild,\n  input,\n  output,\n  viewChild,\n  untracked,\n  afterNextRender,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { CopilotSlot } from \"../../slots/copilot-slot\";\nimport { injectChatLabels } from \"../../chat-config\";\nimport { ArrowUp, CopilotIcon } from \"../icons/copilot-icon\";\nimport { CopilotChatTextarea } from \"./copilot-chat-textarea\";\nimport { CopilotChatAudioRecorder } from \"./copilot-chat-audio-recorder\";\nimport {\n  CopilotChatStartTranscribeButton,\n  CopilotChatCancelTranscribeButton,\n  CopilotChatFinishTranscribeButton,\n  CopilotChatAddFileButton,\n} from \"./copilot-chat-buttons\";\nimport { CopilotChatToolbar } from \"./copilot-chat-toolbar\";\nimport { CopilotChatToolsMenu } from \"./copilot-chat-tools-menu\";\nimport type {\n  CopilotChatInputMode,\n  ToolsMenuItem,\n} from \"./copilot-chat-input.types\";\nimport { cn } from \"../../utils\";\nimport { injectChatState } from \"../../chat-state\";\n\n/**\n * Context provided to slot templates\n */\nexport interface SendButtonContext {\n  send: () => void;\n  disabled: boolean;\n  value: string;\n}\n\nexport interface ToolbarContext {\n  mode: CopilotChatInputMode;\n  value: string;\n}\n\n@Component({\n  selector: \"copilot-chat-input\",\n  host: { \"data-copilotkit\": \"\" },\n  imports: [\n    CommonModule,\n    CopilotSlot,\n    CopilotIcon,\n    CopilotChatTextarea,\n    CopilotChatAudioRecorder,\n    CopilotChatStartTranscribeButton,\n    CopilotChatCancelTranscribeButton,\n    CopilotChatFinishTranscribeButton,\n    CopilotChatAddFileButton,\n    CopilotChatToolsMenu,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <ng-template #mainInputArea>\n      @if (computedMode() === \"transcribe\") {\n        @if (audioRecorderTemplate() || audioRecorderComponent()) {\n          <copilot-slot\n            [slot]=\"audioRecorderTemplate() || audioRecorderComponent()\"\n            [context]=\"audioRecorderContext()\"\n            [defaultComponent]=\"defaultAudioRecorder\"\n          >\n          </copilot-slot>\n        } @else {\n          <copilot-chat-audio-recorder [inputShowControls]=\"true\">\n          </copilot-chat-audio-recorder>\n        }\n      } @else {\n        @if (textAreaTemplate() || textAreaComponent()) {\n          <copilot-slot\n            [slot]=\"textAreaTemplate() || textAreaComponent()\"\n            [context]=\"textAreaContext()\"\n          >\n          </copilot-slot>\n        } @else {\n          <textarea\n            copilotChatTextarea\n            [inputValue]=\"computedValue()\"\n            [inputAutoFocus]=\"computedAutoFocus()\"\n            [inputDisabled]=\"computedMode() === 'processing'\"\n            [inputClass]=\"defaultTextAreaClass()\"\n            [inputMaxRows]=\"textAreaMaxRows()\"\n            [inputPlaceholder]=\"textAreaPlaceholder()\"\n            (keyDown)=\"handleKeyDown($event)\"\n            (valueChange)=\"handleValueChange($event)\"\n          ></textarea>\n        }\n      }\n    </ng-template>\n\n    <ng-template #leadingToolbarItems>\n      @if (\n        addFileButtonTemplate() ||\n        addFileButtonComponent() ||\n        toolsButtonTemplate() ||\n        toolsButtonComponent()\n      ) {\n        @if (addFileButtonTemplate() || addFileButtonComponent()) {\n          <copilot-slot\n            [slot]=\"addFileButtonTemplate() || addFileButtonComponent()\"\n            [context]=\"{\n              inputDisabled: addFileButtonDisabled(),\n            }\"\n            [outputs]=\"addFileButtonOutputs\"\n            [defaultComponent]=\"CopilotChatAddFileButton\"\n          >\n          </copilot-slot>\n        } @else if (chatState.attachmentsEnabled()) {\n          <copilot-chat-add-file-button\n            [disabled]=\"addFileButtonDisabled()\"\n            (clicked)=\"handleAddFile()\"\n          >\n          </copilot-chat-add-file-button>\n        }\n        @if (computedToolsMenu().length > 0) {\n          @if (toolsButtonTemplate() || toolsButtonComponent()) {\n            <copilot-slot\n              [slot]=\"toolsButtonTemplate() || toolsButtonComponent()\"\n              [context]=\"toolsContext()\"\n              [defaultComponent]=\"CopilotChatToolsMenu\"\n            >\n            </copilot-slot>\n          } @else {\n            <copilot-chat-tools-menu\n              [inputToolsMenu]=\"computedToolsMenu()\"\n              [inputDisabled]=\"computedMode() === 'transcribe'\"\n            >\n            </copilot-chat-tools-menu>\n          }\n        }\n      } @else {\n        <copilot-chat-tools-menu\n          [inputToolsMenu]=\"computedToolsMenu()\"\n          [inputAddFile]=\"addFileMenuAction()\"\n          [inputDisabled]=\"computedMode() === 'transcribe'\"\n        >\n        </copilot-chat-tools-menu>\n      }\n      @if (additionalToolbarItems()) {\n        <ng-container\n          [ngTemplateOutlet]=\"additionalToolbarItems() || null\"\n        ></ng-container>\n      }\n    </ng-template>\n\n    <ng-template #trailingToolbarItems>\n      @if (computedMode() === \"transcribe\") {\n        @if (\n          cancelTranscribeButtonTemplate() || cancelTranscribeButtonComponent()\n        ) {\n          <copilot-slot\n            [slot]=\"\n              cancelTranscribeButtonTemplate() || cancelTranscribeButtonComponent()\n            \"\n            [context]=\"{}\"\n            [outputs]=\"cancelTranscribeButtonOutputs\"\n            [defaultComponent]=\"CopilotChatCancelTranscribeButton\"\n          >\n          </copilot-slot>\n        } @else {\n          <copilot-chat-cancel-transcribe-button\n            (clicked)=\"handleCancelTranscribe()\"\n          >\n          </copilot-chat-cancel-transcribe-button>\n        }\n        @if (\n          finishTranscribeButtonTemplate() || finishTranscribeButtonComponent()\n        ) {\n          <copilot-slot\n            [slot]=\"\n              finishTranscribeButtonTemplate() || finishTranscribeButtonComponent()\n            \"\n            [context]=\"{}\"\n            [outputs]=\"finishTranscribeButtonOutputs\"\n            [defaultComponent]=\"CopilotChatFinishTranscribeButton\"\n          >\n          </copilot-slot>\n        } @else {\n          <copilot-chat-finish-transcribe-button\n            (clicked)=\"handleFinishTranscribe()\"\n          >\n          </copilot-chat-finish-transcribe-button>\n        }\n      } @else {\n        @if (startTranscribeButtonTemplate() || startTranscribeButtonComponent()) {\n          <copilot-slot\n            [slot]=\"\n              startTranscribeButtonTemplate() || startTranscribeButtonComponent()\n            \"\n            [context]=\"{}\"\n            [outputs]=\"startTranscribeButtonOutputs\"\n            [defaultComponent]=\"CopilotChatStartTranscribeButton\"\n          >\n          </copilot-slot>\n        } @else {\n          <copilot-chat-start-transcribe-button (clicked)=\"handleStartTranscribe()\">\n          </copilot-chat-start-transcribe-button>\n        }\n        <!-- Send button with slot -->\n        @if (sendButtonTemplate() || sendButtonComponent()) {\n          <copilot-slot\n            [slot]=\"sendButtonTemplate() || sendButtonComponent()\"\n            [context]=\"sendButtonContext()\"\n            [outputs]=\"sendButtonOutputs\"\n          >\n          </copilot-slot>\n        } @else {\n          <div class=\"cpk:mr-[10px]\">\n            <button\n              type=\"button\"\n              aria-label=\"Send message\"\n              [class]=\"sendButtonClass() || defaultButtonClass\"\n              [disabled]=\"sendButtonDisabled()\"\n              (click)=\"send()\"\n            >\n              <copilot-icon [img]=\"ArrowUpIcon\" [size]=\"18\"></copilot-icon>\n            </button>\n          </div>\n        }\n      }\n    </ng-template>\n\n    <div [class]=\"computedClass()\">\n      @if (toolbarTemplate() || toolbarComponent()) {\n        <ng-container [ngTemplateOutlet]=\"mainInputArea\"></ng-container>\n        <copilot-slot\n          [slot]=\"toolbarTemplate() || toolbarComponent()\"\n          [context]=\"toolbarContext()\"\n          [defaultComponent]=\"CopilotChatToolbar\"\n        >\n        </copilot-slot>\n      } @else {\n        <div\n          class=\"cpk:grid cpk:w-full cpk:grid-cols-[auto_minmax(0,1fr)_auto] cpk:items-center cpk:gap-x-3 cpk:gap-y-3 cpk:px-3 cpk:py-2\"\n          data-layout=\"compact\"\n        >\n          <div class=\"cpk:col-start-1 cpk:row-start-1 cpk:flex cpk:items-center\">\n            <ng-container [ngTemplateOutlet]=\"leadingToolbarItems\"></ng-container>\n          </div>\n          <div\n            class=\"cpk:relative cpk:col-start-2 cpk:row-start-1 cpk:flex cpk:min-h-[50px] cpk:min-w-0 cpk:flex-col cpk:justify-center\"\n          >\n            <ng-container [ngTemplateOutlet]=\"mainInputArea\"></ng-container>\n          </div>\n          <div\n            class=\"cpk:col-start-3 cpk:row-start-1 cpk:flex cpk:items-center cpk:justify-end cpk:gap-2\"\n          >\n            <ng-container [ngTemplateOutlet]=\"trailingToolbarItems\"></ng-container>\n          </div>\n        </div>\n      }\n    </div>\n  `,\n  styles: [\n    `\n      :host {\n        display: block;\n        width: 100%;\n      }\n      .ck-input-shadow {\n        box-shadow:\n          0 4px 4px 0 #0000000a,\n          0 0 1px 0 #0000009e !important;\n      }\n    `,\n  ],\n})\nexport class CopilotChatInput implements OnDestroy {\n  readonly textAreaRef = viewChild(CopilotChatTextarea);\n\n  readonly audioRecorderRef = viewChild(CopilotChatAudioRecorder);\n\n  // Capture templates from content projection\n  readonly sendButtonTemplate = contentChild<\n    unknown,\n    TemplateRef<SendButtonContext>\n  >(\"sendButton\", { read: TemplateRef });\n  readonly toolbarTemplate = contentChild<unknown, TemplateRef<ToolbarContext>>(\n    \"toolbar\",\n    { read: TemplateRef },\n  );\n  readonly textAreaTemplate = contentChild<unknown, TemplateRef<any>>(\n    \"textArea\",\n    { read: TemplateRef },\n  );\n  readonly audioRecorderTemplate = contentChild<unknown, TemplateRef<any>>(\n    \"audioRecorder\",\n    { read: TemplateRef },\n  );\n  readonly startTranscribeButtonTemplate = contentChild<\n    unknown,\n    TemplateRef<any>\n  >(\"startTranscribeButton\", { read: TemplateRef });\n  readonly cancelTranscribeButtonTemplate = contentChild<\n    unknown,\n    TemplateRef<any>\n  >(\"cancelTranscribeButton\", { read: TemplateRef });\n  readonly finishTranscribeButtonTemplate = contentChild<\n    unknown,\n    TemplateRef<any>\n  >(\"finishTranscribeButton\", { read: TemplateRef });\n  readonly addFileButtonTemplate = contentChild<unknown, TemplateRef<any>>(\n    \"addFileButton\",\n    { read: TemplateRef },\n  );\n  readonly toolsButtonTemplate = contentChild<unknown, TemplateRef<any>>(\n    \"toolsButton\",\n    { read: TemplateRef },\n  );\n\n  // Class inputs for styling default components\n  sendButtonClass = input<string | undefined>(undefined);\n  toolbarClass = input<string | undefined>(undefined);\n  textAreaClass = input<string | undefined>(undefined);\n  textAreaMaxRows = input<number | undefined>(undefined);\n  textAreaPlaceholder = input<string | undefined>(undefined);\n  audioRecorderClass = input<string | undefined>(undefined);\n  startTranscribeButtonClass = input<string | undefined>(undefined);\n  cancelTranscribeButtonClass = input<string | undefined>(undefined);\n  finishTranscribeButtonClass = input<string | undefined>(undefined);\n  addFileButtonClass = input<string | undefined>(undefined);\n  toolsButtonClass = input<string | undefined>(undefined);\n\n  // Component inputs for overrides\n  sendButtonComponent = input<Type<any> | undefined>(undefined);\n  toolbarComponent = input<Type<any> | undefined>(undefined);\n  textAreaComponent = input<Type<any> | undefined>(undefined);\n  audioRecorderComponent = input<Type<any> | undefined>(undefined);\n  startTranscribeButtonComponent = input<Type<any> | undefined>(undefined);\n  cancelTranscribeButtonComponent = input<Type<any> | undefined>(undefined);\n  finishTranscribeButtonComponent = input<Type<any> | undefined>(undefined);\n  addFileButtonComponent = input<Type<any> | undefined>(undefined);\n  toolsButtonComponent = input<Type<any> | undefined>(undefined);\n\n  // Regular inputs\n  mode = input<CopilotChatInputMode | undefined>(undefined);\n  toolsMenu = input<(ToolsMenuItem | \"-\")[] | undefined>(undefined);\n  autoFocus = input<boolean | undefined>(undefined);\n  value = input<string | undefined>(undefined);\n  inputClass = input<string | undefined>(undefined);\n  // Note: Prefer host `class` for styling this component;\n  // keep only `inputClass` to style the internal wrapper if needed.\n  additionalToolbarItems = input<TemplateRef<any> | undefined>(undefined);\n\n  // Output events\n  submitMessage = output<string>();\n  startTranscribe = output<void>();\n  cancelTranscribe = output<void>();\n  finishTranscribe = output<void>();\n  finishTranscribeWithAudio = output<Blob>();\n  addFile = output<void>();\n  valueChange = output<string>();\n\n  // Icons and default classes\n  readonly ArrowUpIcon = ArrowUp;\n  readonly defaultButtonClass = cn(\n    // Base button styles\n    \"cpk:inline-flex cpk:items-center cpk:justify-center cpk:gap-2 cpk:whitespace-nowrap cpk:rounded-md cpk:text-sm cpk:font-medium\",\n    \"cpk:transition-all cpk:disabled:pointer-events-none cpk:disabled:opacity-50\",\n    \"cpk:shrink-0 cpk:outline-none\",\n    \"cpk:focus-visible:border-ring cpk:focus-visible:ring-ring/50 cpk:focus-visible:ring-[3px]\",\n    // chatInputToolbarPrimary variant\n    \"cpk:cursor-pointer\",\n    \"cpk:bg-black cpk:text-white\",\n    \"cpk:dark:bg-white cpk:dark:text-black cpk:dark:focus-visible:outline-white\",\n    \"cpk:rounded-full cpk:h-9 cpk:w-9\",\n    \"cpk:transition-colors\",\n    \"cpk:focus:outline-none\",\n    \"cpk:hover:opacity-70 cpk:disabled:hover:opacity-100\",\n    \"cpk:disabled:cursor-not-allowed cpk:disabled:bg-[#00000014] cpk:disabled:text-[rgb(13,13,13)]\",\n    \"cpk:dark:disabled:bg-[#454545] cpk:dark:disabled:text-white\",\n  );\n\n  // Services\n  readonly labels = injectChatLabels();\n  // readonly chatConfig = injectChatConfig();\n  readonly chatState = injectChatState();\n\n  // Signals\n  modeSignal = signal<CopilotChatInputMode>(\"input\");\n  toolsMenuSignal = signal<(ToolsMenuItem | \"-\")[]>([]);\n  autoFocusSignal = signal<boolean>(true);\n  customClass = signal<string | undefined>(undefined);\n\n  // Default components\n  // Note: CopilotChatTextarea uses attribute selector but is a component\n  defaultAudioRecorder = CopilotChatAudioRecorder;\n  defaultSendButton: any = null; // Will be set to avoid circular dependency\n  CopilotChatToolbar = CopilotChatToolbar;\n  CopilotChatAddFileButton = CopilotChatAddFileButton;\n  CopilotChatToolsMenu = CopilotChatToolsMenu;\n  CopilotChatCancelTranscribeButton = CopilotChatCancelTranscribeButton;\n  CopilotChatFinishTranscribeButton = CopilotChatFinishTranscribeButton;\n  CopilotChatStartTranscribeButton = CopilotChatStartTranscribeButton;\n\n  // Computed values\n  computedMode = computed(() => this.mode() ?? this.modeSignal());\n  computedToolsMenu = computed(() => this.toolsMenu() ?? []);\n  computedAutoFocus = computed(() => this.autoFocus() ?? true);\n  computedValue = computed(() => {\n    const customValue = this.value();\n    return customValue !== undefined\n      ? customValue\n      : (this.chatState.inputValue() ?? \"\");\n  });\n  addFileButtonDisabled = computed(\n    () =>\n      this.computedMode() === \"transcribe\" ||\n      !this.chatState.attachmentsEnabled(),\n  );\n  addFileMenuAction = computed<(() => void) | undefined>(() =>\n    this.chatState.attachmentsEnabled()\n      ? () => this.handleAddFile()\n      : undefined,\n  );\n  sendButtonDisabled = computed(\n    () =>\n      !this.computedValue().trim() ||\n      this.computedMode() === \"processing\" ||\n      this.chatState.attachmentsUploading(),\n  );\n\n  computedClass = computed(() => {\n    const baseClasses = cn(\n      // V1 compatibility class for custom styling\n      \"copilotKitInput\",\n      // Layout\n      \"cpk:flex cpk:w-full cpk:flex-col cpk:items-center cpk:justify-center\",\n      // Interaction\n      \"cpk:cursor-text\",\n      // Overflow and clipping\n      \"cpk:overflow-visible cpk:bg-clip-padding cpk:contain-inline-size\",\n      // Background\n      \"cpk:bg-white cpk:dark:bg-[#303030]\",\n      // Visual effects\n      \"ck-input-shadow cpk:rounded-[28px]\",\n    );\n    return cn(baseClasses, this.customClass());\n  });\n\n  defaultTextAreaClass = computed(() =>\n    cn(\"cpk:w-full cpk:py-3 cpk:pr-5\", this.textAreaClass()),\n  );\n\n  // Context for slots (reactive via signals)\n  sendButtonContext = computed<SendButtonContext>(() => ({\n    send: () => this.send(),\n    disabled: this.sendButtonDisabled(),\n    value: this.computedValue(),\n  }));\n\n  toolbarContext = computed<ToolbarContext>(() => ({\n    mode: this.computedMode(),\n    value: this.computedValue(),\n  }));\n\n  textAreaContext = computed(() => ({\n    value: this.computedValue(),\n    autoFocus: this.computedAutoFocus(),\n    disabled: this.computedMode() === \"processing\",\n    maxRows: this.textAreaMaxRows(),\n    placeholder: this.textAreaPlaceholder(),\n    inputClass: this.textAreaClass(),\n    onKeyDown: (event: KeyboardEvent) => this.handleKeyDown(event),\n    onChange: (value: string) => this.handleValueChange(value),\n  }));\n\n  audioRecorderContext = computed(() => ({\n    inputShowControls: true,\n  }));\n\n  // Button contexts removed - now using outputs map for click handlers\n\n  toolsContext = computed(() => ({\n    inputToolsMenu: this.computedToolsMenu(),\n    inputDisabled: this.computedMode() === \"transcribe\",\n  }));\n\n  constructor() {\n    effect(() => {\n      const recorder = this.audioRecorderRef();\n      const mode = this.computedMode();\n      if (!recorder) return;\n      untracked(() => {\n        if (mode === \"transcribe\") {\n          if (recorder.getState() === \"idle\") {\n            recorder.start().catch((error) => console.error(error));\n          }\n        } else if (recorder.getState() === \"recording\") {\n          recorder.stop().catch((error) => console.error(error));\n        }\n      });\n    });\n\n    afterNextRender(() => {\n      if (this.computedAutoFocus()) {\n        this.textAreaRef()?.focus();\n      }\n    });\n  }\n\n  // Output maps for slots\n  addFileButtonOutputs = { clicked: () => this.handleAddFile() };\n  cancelTranscribeButtonOutputs = {\n    clicked: () => this.handleCancelTranscribe(),\n  };\n  finishTranscribeButtonOutputs = {\n    clicked: () => this.handleFinishTranscribe(),\n  };\n  startTranscribeButtonOutputs = {\n    clicked: () => this.handleStartTranscribe(),\n  };\n  // Support both `clicked` (idiomatic in our slots) and `click` (legacy)\n  sendButtonOutputs = { clicked: () => this.send(), click: () => this.send() };\n\n  ngOnDestroy(): void {\n    // Clean up any resources\n    const recorder = this.audioRecorderRef();\n    if (recorder?.getState() === \"recording\") {\n      recorder.stop().catch(console.error);\n    }\n  }\n\n  handleKeyDown(event: KeyboardEvent): void {\n    // Skip key handling during IME composition (e.g. CJK input).\n    // The compositionend event will fire separately when composition ends.\n    if (event.isComposing || event.keyCode === 229) {\n      return;\n    }\n\n    if (event.key === \"Enter\" && !event.shiftKey) {\n      event.preventDefault();\n      this.send();\n    }\n  }\n\n  handleValueChange(value: string): void {\n    this.valueChange.emit(value);\n    if (this.chatState) this.chatState.changeInput(value);\n  }\n\n  send(): void {\n    const trimmed = this.computedValue().trim();\n    if (trimmed && !this.chatState.attachmentsUploading()) {\n      this.submitMessage.emit(trimmed);\n\n      this.chatState.submitInput(trimmed);\n\n      if (this.chatState) this.chatState.changeInput(\"\");\n      this.textAreaRef()?.setValue(\"\");\n\n      // Refocus input\n      if (this.textAreaRef()) {\n        setTimeout(() => {\n          this.textAreaRef()?.focus();\n        });\n      }\n    }\n  }\n\n  handleStartTranscribe(): void {\n    this.startTranscribe.emit();\n    this.modeSignal.set(\"transcribe\");\n  }\n\n  handleCancelTranscribe(): void {\n    this.cancelTranscribe.emit();\n    this.modeSignal.set(\"input\");\n  }\n\n  async handleFinishTranscribe(): Promise<void> {\n    const recorder = this.audioRecorderRef();\n    let audioBlob: Blob | undefined;\n    if (recorder?.getState() === \"recording\") {\n      try {\n        audioBlob = await recorder.stop();\n      } catch (error) {\n        console.error(\"Failed to stop recording:\", error);\n      }\n    }\n\n    this.finishTranscribe.emit();\n    this.modeSignal.set(\"input\");\n\n    if (audioBlob) {\n      this.finishTranscribeWithAudio.emit(audioBlob);\n      await this.chatState.finishTranscription(audioBlob);\n    }\n  }\n\n  handleAddFile(): void {\n    if (this.addFileButtonDisabled()) {\n      return;\n    }\n    this.addFile.emit();\n    this.chatState.addFile();\n  }\n}\n","import {\n  Component,\n  input,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { cn } from \"../..//utils\";\nimport { injectChatLabels } from \"../../chat-config\";\n\n/**\n * Disclaimer component for CopilotChatView\n * Shows configurable disclaimer text below the input\n * Integrates with CopilotChatConfigurationService for labels\n */\n@Component({\n  selector: \"copilot-chat-view-disclaimer\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div [class]=\"computedClass\">\n      {{ disclaimerText }}\n    </div>\n  `,\n})\nexport class CopilotChatViewDisclaimer {\n  inputClass = input<string | undefined>();\n  text = input<string | undefined>();\n\n  readonly labels = injectChatLabels();\n\n  // Get disclaimer text from input or configuration\n  get disclaimerText(): string {\n    if (this.text()) {\n      return this.text() as string;\n    }\n\n    return this.labels.chatDisclaimerText;\n  }\n\n  // Computed class matching React exactly\n  get computedClass(): string {\n    return cn(\n      \"cpk:text-center cpk:text-xs cpk:text-muted-foreground cpk:py-3 cpk:px-4 cpk:max-w-3xl cpk:mx-auto\",\n      this.inputClass(),\n    );\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n  output,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport type { Attachment } from \"@copilotkit/shared\";\nimport {\n  formatFileSize,\n  getDocumentIcon,\n  getSourceUrl,\n} from \"@copilotkit/shared\";\nimport { cn } from \"../../utils\";\n\n@Component({\n  selector: \"copilot-chat-attachment-queue\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { \"data-copilotkit\": \"\" },\n  template: `\n    @if (attachments().length > 0) {\n      <div data-testid=\"copilot-attachment-queue\" [class]=\"computedClass()\">\n        @for (attachment of attachments(); track attachment.id) {\n          <div [class]=\"itemClass(attachment)\">\n            @if (attachment.status === \"uploading\") {\n              <div class=\"copilotKitAttachmentQueueOverlay\">\n                <div class=\"copilotKitAttachmentQueueSpinner\"></div>\n              </div>\n            }\n\n            @if (attachment.status === \"uploading\") {\n              <div class=\"copilotKitAttachmentQueuePreviewPlaceholder\"></div>\n            } @else {\n              @switch (attachment.type) {\n                @case (\"image\") {\n                  <img\n                    [src]=\"sourceUrl(attachment)\"\n                    [alt]=\"attachment.filename || 'Image attachment'\"\n                    class=\"copilotKitAttachmentQueuePreviewImage\"\n                  />\n                }\n                @case (\"audio\") {\n                  <div class=\"copilotKitAttachmentQueuePreviewAudio\">\n                    <audio\n                      [src]=\"sourceUrl(attachment)\"\n                      controls\n                      preload=\"metadata\"\n                    ></audio>\n                    @if (attachment.filename) {\n                      <span class=\"copilotKitAttachmentQueueFilename\">\n                        {{ attachment.filename }}\n                      </span>\n                    }\n                  </div>\n                }\n                @case (\"video\") {\n                  <div class=\"copilotKitAttachmentQueuePreviewVideo\">\n                    @if (attachment.thumbnail) {\n                      <img\n                        [src]=\"attachment.thumbnail\"\n                        [alt]=\"attachment.filename || 'Video thumbnail'\"\n                        class=\"copilotKitAttachmentQueuePreviewImage\"\n                      />\n                    } @else {\n                      <video\n                        [src]=\"sourceUrl(attachment)\"\n                        preload=\"metadata\"\n                        muted\n                        class=\"copilotKitAttachmentQueuePreviewImage\"\n                      ></video>\n                    }\n                  </div>\n                }\n                @default {\n                  <div class=\"copilotKitAttachmentQueuePreviewDocument\">\n                    <div class=\"copilotKitAttachmentQueueDocIcon\">\n                      {{ documentIcon(attachment) }}\n                    </div>\n                    <div class=\"copilotKitAttachmentQueueDocInfo\">\n                      <span class=\"copilotKitAttachmentQueueFilename\">\n                        {{ attachment.filename || \"Document\" }}\n                      </span>\n                      @if (attachment.size != null) {\n                        <span class=\"copilotKitAttachmentQueueFileSize\">\n                          {{ fileSize(attachment) }}\n                        </span>\n                      }\n                    </div>\n                  </div>\n                }\n              }\n            }\n\n            <button\n              type=\"button\"\n              class=\"copilotKitAttachmentQueueRemoveButton\"\n              aria-label=\"Remove attachment\"\n              (click)=\"removeAttachment.emit(attachment.id)\"\n            >\n              &times;\n            </button>\n          </div>\n        }\n      </div>\n    }\n  `,\n})\nexport class CopilotChatAttachmentQueue {\n  readonly attachments = input<Attachment[]>([]);\n  readonly inputClass = input<string | undefined>();\n  readonly removeAttachment = output<string>();\n\n  readonly computedClass = computed(() =>\n    cn(\n      \"copilotKitAttachmentQueue cpk:flex cpk:flex-wrap cpk:gap-2 cpk:p-2\",\n      this.inputClass(),\n    ),\n  );\n\n  itemClass(attachment: Attachment): string {\n    return cn(\n      \"copilotKitAttachmentQueueItem\",\n      `copilotKitAttachmentQueueItem--${attachment.type}`,\n    );\n  }\n\n  sourceUrl(attachment: Attachment): string {\n    return getSourceUrl(attachment.source);\n  }\n\n  documentIcon(attachment: Attachment): string {\n    return getDocumentIcon(attachment.source.mimeType ?? \"\");\n  }\n\n  fileSize(attachment: Attachment): string {\n    return formatFileSize(attachment.size ?? 0);\n  }\n}\n","import {\n  Component,\n  input,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  forwardRef,\n  ElementRef,\n  inject,\n} from \"@angular/core\";\n\nimport { CopilotSlot } from \"../../slots/copilot-slot\";\nimport { CopilotChatInput } from \"./copilot-chat-input\";\nimport { CopilotChatViewDisclaimer } from \"./copilot-chat-view-disclaimer\";\nimport { cn } from \"../../utils\";\nimport { ChatState } from \"../../chat-state\";\nimport { CopilotChatAttachmentQueue } from \"./copilot-chat-attachment-queue\";\n\n/**\n * InputContainer component for CopilotChatView\n * Container for input and disclaimer components\n * Uses ForwardRef for DOM access\n */\n@Component({\n  selector: \"copilot-chat-view-input-container\",\n  imports: [CopilotSlot, CopilotChatAttachmentQueue],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: ElementRef,\n      useExisting: forwardRef(() => CopilotChatViewInputContainer),\n    },\n  ],\n  template: `\n    <div [class]=\"computedClass\">\n      <!-- Input component -->\n      @if ((chatState?.attachments() ?? []).length > 0) {\n        <div class=\"cpk:max-w-3xl cpk:mx-auto cpk:w-full cpk:pointer-events-auto\">\n          <copilot-chat-attachment-queue\n            [attachments]=\"chatState?.attachments() ?? []\"\n            inputClass=\"cpk:px-4\"\n            (removeAttachment)=\"chatState?.removeAttachment($event)\"\n          />\n        </div>\n      }\n\n      <div class=\"cpk:max-w-3xl cpk:mx-auto cpk:py-0 cpk:px-4 cpk:@3xl:px-0\">\n        <copilot-slot\n          [slot]=\"input()\"\n          [context]=\"{ inputClass: inputClass() }\"\n          [defaultComponent]=\"defaultInputComponent\"\n        >\n        </copilot-slot>\n      </div>\n\n      <!-- Disclaimer - always rendered like in React -->\n      <copilot-slot\n        [slot]=\"disclaimer()\"\n        [context]=\"{ text: disclaimerText(), inputClass: disclaimerClass() }\"\n        [defaultComponent]=\"defaultDisclaimerComponent\"\n      >\n      </copilot-slot>\n    </div>\n  `,\n})\nexport class CopilotChatViewInputContainer extends ElementRef {\n  readonly chatState = inject(ChatState, { optional: true });\n\n  inputContainerClass = input<string | undefined>();\n\n  // Input slot configuration\n  input = input<any | undefined>();\n  inputClass = input<string | undefined>();\n\n  // Disclaimer slot configuration\n  disclaimer = input<any | undefined>();\n  disclaimerText = input<string | undefined>();\n  disclaimerClass = input<string | undefined>();\n\n  // Default components\n  protected readonly defaultInputComponent = CopilotChatInput;\n  protected readonly defaultDisclaimerComponent = CopilotChatViewDisclaimer;\n\n  constructor(elementRef: ElementRef) {\n    super(elementRef.nativeElement);\n  }\n\n  get computedClass(): string {\n    return cn(\n      \"cpk:absolute cpk:bottom-6 cpk:left-0 cpk:right-0 cpk:z-20\",\n      this.inputContainerClass(),\n    );\n  }\n}\n","import {\n  Component,\n  ContentChild,\n  TemplateRef,\n  Type,\n  ViewChild,\n  ElementRef,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  ViewEncapsulation,\n  computed,\n  signal,\n  OnInit,\n  OnChanges,\n  OnDestroy,\n  AfterViewInit,\n  input,\n  output,\n  inject,\n  NgZone,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { CopilotSlot } from \"../../slots/copilot-slot\";\nimport { CopilotChatViewScrollView } from \"./copilot-chat-view-scroll-view\";\nimport { CopilotChatViewScrollToBottomButton } from \"./copilot-chat-view-scroll-to-bottom-button\";\nimport { CopilotChatViewFeather } from \"./copilot-chat-view-feather\";\nimport { CopilotChatViewInputContainer } from \"./copilot-chat-view-input-container\";\nimport { CopilotChatViewDisclaimer } from \"./copilot-chat-view-disclaimer\";\nimport { CopilotChatInput } from \"./copilot-chat-input\";\nimport { CopilotChatAttachmentQueue } from \"./copilot-chat-attachment-queue\";\nimport { CopilotChatSuggestionView } from \"./copilot-chat-suggestion-view\";\nimport { Message } from \"@ag-ui/client\";\nimport { cn } from \"../../utils\";\nimport { ResizeObserverService } from \"../../resize-observer\";\nimport { CopilotChatViewHandlers } from \"./copilot-chat-view-handlers\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { ChatState } from \"../../chat-state\";\nimport { CopilotIcon, Upload } from \"../icons/copilot-icon\";\nimport { injectChatLabels } from \"../../chat-config\";\n\n/**\n * CopilotChatView component - Angular port of the React component.\n * A complete chat interface with message feed and input components.\n *\n * @example\n * ```html\n * <copilot-chat-view\n *   [messages]=\"messages\"\n *   [autoScroll]=\"true\"\n *   [messageViewProps]=\"{ assistantMessage: { onThumbsUp: handleThumbsUp } }\">\n * </copilot-chat-view>\n * ```\n */\n@Component({\n  selector: \"copilot-chat-view\",\n  imports: [\n    CommonModule,\n    CopilotSlot,\n    CopilotChatViewScrollView,\n    CopilotChatAttachmentQueue,\n    CopilotChatSuggestionView,\n    CopilotIcon,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [ResizeObserverService, CopilotChatViewHandlers],\n  host: { class: \"cpk:block cpk:h-full cpk:min-h-0\" },\n  template: `\n    <!-- Custom layout template support (render prop pattern) -->\n    @if (customLayoutTemplate) {\n      <ng-container\n        [ngTemplateOutlet]=\"customLayoutTemplate\"\n        [ngTemplateOutletContext]=\"layoutContext()\"\n      ></ng-container>\n    } @else if (shouldShowWelcomeScreen()) {\n      <div\n        [class]=\"computedClass()\"\n        (dragover)=\"chatState?.handleDragOver($event)\"\n        (dragleave)=\"chatState?.handleDragLeave($event)\"\n        (drop)=\"chatState?.handleDrop($event)\"\n      >\n        @if (chatState?.dragOver?.()) {\n          <div [class]=\"dropOverlayClass()\">\n            <div\n              class=\"cpk:flex cpk:flex-col cpk:items-center cpk:gap-2 cpk:text-primary/70\"\n            >\n              <copilot-icon [img]=\"UploadIcon\" [size]=\"32\"></copilot-icon>\n              <span class=\"cpk:text-sm cpk:font-medium\">Drop files here</span>\n            </div>\n          </div>\n        }\n\n        <div\n          data-testid=\"copilot-welcome-screen\"\n          class=\"cpk:flex-1 cpk:flex cpk:flex-col cpk:items-center cpk:justify-center cpk:px-4\"\n        >\n          <div\n            class=\"cpk:w-full cpk:max-w-3xl cpk:flex cpk:flex-col cpk:items-center\"\n          >\n            <div class=\"cpk:mb-6\">\n              <h1\n                class=\"cpk:text-xl cpk:sm:text-2xl cpk:font-medium cpk:text-foreground cpk:text-center\"\n              >\n                {{ labels.welcomeMessageText }}\n              </h1>\n            </div>\n\n            <div class=\"cpk:w-full\">\n              @if ((chatState?.attachments?.() ?? []).length > 0) {\n                <copilot-chat-attachment-queue\n                  [attachments]=\"chatState?.attachments?.() ?? []\"\n                  inputClass=\"cpk:mb-2\"\n                  (removeAttachment)=\"chatState?.removeAttachment($event)\"\n                />\n              }\n\n              <copilot-slot\n                [slot]=\"inputSlot()\"\n                [context]=\"{ inputClass: undefined }\"\n                [defaultComponent]=\"defaultInputComponent\"\n              >\n              </copilot-slot>\n\n              <copilot-slot\n                [slot]=\"disclaimerSlot()\"\n                [context]=\"{\n                  text: disclaimerTextSignal(),\n                  inputClass: disclaimerClassSignal(),\n                }\"\n                [defaultComponent]=\"defaultDisclaimerComponent\"\n              >\n              </copilot-slot>\n            </div>\n\n            @if ((chatState?.suggestions?.() ?? []).length > 0) {\n              <div class=\"cpk:mt-4 cpk:flex cpk:justify-center\">\n                <copilot-chat-suggestion-view\n                  [suggestions]=\"chatState?.suggestions?.() ?? []\"\n                  (selectSuggestion)=\"\n                    chatState?.selectSuggestion($event.suggestion, $event.index)\n                  \"\n                />\n              </div>\n            }\n          </div>\n        </div>\n      </div>\n    } @else {\n      <!-- Default layout - exact React DOM structure -->\n      <div\n        [class]=\"computedClass()\"\n        (dragover)=\"chatState?.handleDragOver($event)\"\n        (dragleave)=\"chatState?.handleDragLeave($event)\"\n        (drop)=\"chatState?.handleDrop($event)\"\n      >\n        @if (chatState?.dragOver?.()) {\n          <div [class]=\"dropOverlayClass()\">\n            <div\n              class=\"cpk:flex cpk:flex-col cpk:items-center cpk:gap-2 cpk:text-primary/70\"\n            >\n              <copilot-icon [img]=\"UploadIcon\" [size]=\"32\"></copilot-icon>\n              <span class=\"cpk:text-sm cpk:font-medium\">Drop files here</span>\n            </div>\n          </div>\n        }\n\n        <!-- ScrollView -->\n        <copilot-chat-view-scroll-view\n          [autoScroll]=\"autoScrollSignal()\"\n          [inputContainerHeight]=\"inputContainerHeight()\"\n          [isResizing]=\"isResizing()\"\n          [messages]=\"messagesValue()\"\n          [state]=\"state()\"\n          [agentId]=\"agentId()\"\n          [messageView]=\"messageViewSlot()\"\n          [messageViewClass]=\"messageViewClass()\"\n          [assistantMessageComponent]=\"assistantMessageComponent()\"\n          [assistantMessageTemplate]=\"assistantMessageTemplate()\"\n          [assistantMessageClass]=\"assistantMessageClass()\"\n          [reasoningMessageComponent]=\"reasoningMessageComponent()\"\n          [reasoningMessageTemplate]=\"reasoningMessageTemplate()\"\n          [reasoningMessageClass]=\"reasoningMessageClass()\"\n          [messageViewChildrenComponent]=\"messageViewChildrenComponent()\"\n          [messageViewChildrenTemplate]=\"messageViewChildrenTemplate()\"\n          [messageViewChildrenClass]=\"messageViewChildrenClass()\"\n          [scrollToBottomButton]=\"scrollToBottomButtonSlot()\"\n          [scrollToBottomButtonClass]=\"scrollToBottomButtonClass()\"\n          [showCursor]=\"showCursorSignal()\"\n          (assistantMessageThumbsUp)=\"assistantMessageThumbsUp.emit($event)\"\n          (assistantMessageThumbsDown)=\"assistantMessageThumbsDown.emit($event)\"\n          (assistantMessageReadAloud)=\"assistantMessageReadAloud.emit($event)\"\n          (assistantMessageRegenerate)=\"assistantMessageRegenerate.emit($event)\"\n          (userMessageCopy)=\"userMessageCopy.emit($event)\"\n          (userMessageEdit)=\"userMessageEdit.emit($event)\"\n        >\n        </copilot-chat-view-scroll-view>\n\n        <!-- Feather effect -->\n        <copilot-slot\n          [slot]=\"featherSlot()\"\n          [context]=\"{ inputClass: featherClass }\"\n          [defaultComponent]=\"defaultFeatherComponent\"\n        >\n        </copilot-slot>\n\n        <!-- Input container -->\n        <copilot-slot\n          #inputContainerSlotRef\n          [slot]=\"inputContainerSlot()\"\n          [context]=\"inputContainerContext()\"\n          [defaultComponent]=\"defaultInputContainerComponent\"\n        >\n        </copilot-slot>\n      </div>\n    }\n  `,\n})\nexport class CopilotChatView\n  implements OnInit, OnChanges, AfterViewInit, OnDestroy\n{\n  // Core inputs matching React props\n  protected readonly chatState = inject(ChatState, { optional: true });\n  protected readonly UploadIcon = Upload;\n  messages = input<Message[]>([]);\n  /** Current agent state forwarded to message-view extension slots. */\n  state = input<unknown>({});\n  agentId = input<string | undefined>();\n  autoScroll = input<boolean>(true);\n  showCursor = input<boolean>(false);\n  hasExplicitThreadId = input<boolean>(false);\n\n  // MessageView slot inputs\n  messageViewComponent = input<Type<any> | undefined>(undefined);\n  messageViewTemplate = input<TemplateRef<any> | undefined>(undefined);\n  messageViewClass = input<string | undefined>(undefined);\n\n  // AssistantMessage slot inputs\n  assistantMessageComponent = input<Type<any> | undefined>(undefined);\n  assistantMessageTemplate = input<TemplateRef<any> | undefined>(undefined);\n  assistantMessageClass = input<string | undefined>(undefined);\n\n  // ReasoningMessage slot inputs\n  reasoningMessageComponent = input<Type<any> | undefined>(undefined);\n  reasoningMessageTemplate = input<TemplateRef<any> | undefined>(undefined);\n  reasoningMessageClass = input<string | undefined>(undefined);\n\n  // Content rendered after the default message collection.\n  messageViewChildrenComponent = input<Type<any> | undefined>(undefined);\n  messageViewChildrenTemplate = input<TemplateRef<any> | undefined>(undefined);\n  messageViewChildrenClass = input<string | undefined>(undefined);\n\n  // ScrollView slot inputs\n  scrollViewComponent = input<Type<any> | undefined>(undefined);\n  scrollViewTemplate = input<TemplateRef<any> | undefined>(undefined);\n  scrollViewClass = input<string | undefined>(undefined);\n\n  // ScrollToBottomButton slot inputs\n  scrollToBottomButtonComponent = input<Type<any> | undefined>(undefined);\n  scrollToBottomButtonTemplate = input<TemplateRef<any> | undefined>(undefined);\n  scrollToBottomButtonClass = input<string | undefined>(undefined);\n\n  // Input slot inputs\n  inputComponent = input<Type<any> | undefined>(undefined);\n  inputTemplate = input<TemplateRef<any> | undefined>(undefined);\n\n  // InputContainer slot inputs\n  inputContainerComponent = input<Type<any> | undefined>(undefined);\n  inputContainerTemplate = input<TemplateRef<any> | undefined>(undefined);\n  inputContainerClass = input<string | undefined>(undefined);\n\n  // Feather slot inputs\n  featherComponent = input<Type<any> | undefined>(undefined);\n  featherTemplate = input<TemplateRef<any> | undefined>(undefined);\n  featherClass = input<string | undefined>(undefined);\n\n  // Disclaimer slot inputs\n  disclaimerComponent = input<Type<any> | undefined>(undefined);\n  disclaimerTemplate = input<TemplateRef<any> | undefined>(undefined);\n  disclaimerClass = input<string | undefined>(undefined);\n  disclaimerText = input<string | undefined>(undefined);\n\n  // Custom layout template (render prop pattern)\n  @ContentChild(\"customLayout\") customLayoutTemplate?: TemplateRef<any>;\n\n  // Named template slots for deep customization\n  @ContentChild(\"sendButton\") sendButtonTemplate?: TemplateRef<any>;\n  @ContentChild(\"toolbar\") toolbarTemplate?: TemplateRef<any>;\n  @ContentChild(\"textArea\") textAreaTemplate?: TemplateRef<any>;\n  @ContentChild(\"audioRecorder\") audioRecorderTemplate?: TemplateRef<any>;\n  @ContentChild(\"assistantMessageMarkdownRenderer\")\n  assistantMessageMarkdownRendererTemplate?: TemplateRef<any>;\n  @ContentChild(\"thumbsUpButton\") thumbsUpButtonTemplate?: TemplateRef<any>;\n  @ContentChild(\"thumbsDownButton\") thumbsDownButtonTemplate?: TemplateRef<any>;\n  @ContentChild(\"readAloudButton\") readAloudButtonTemplate?: TemplateRef<any>;\n  @ContentChild(\"regenerateButton\") regenerateButtonTemplate?: TemplateRef<any>;\n\n  // Output events for assistant message actions (bubbled from child components)\n  assistantMessageThumbsUp = output<{ message: Message }>();\n  assistantMessageThumbsDown = output<{ message: Message }>();\n  assistantMessageReadAloud = output<{ message: Message }>();\n  assistantMessageRegenerate = output<{ message: Message }>();\n\n  // Output events for user message actions (if applicable)\n  userMessageCopy = output<{ message: Message }>();\n  userMessageEdit = output<{ message: Message }>();\n\n  // ViewChild references\n  @ViewChild(\"inputContainerSlotRef\", { read: ElementRef })\n  inputContainerSlotRef?: ElementRef;\n\n  // Default components for slots\n  protected readonly defaultScrollViewComponent = CopilotChatViewScrollView;\n  protected readonly defaultScrollToBottomButtonComponent =\n    CopilotChatViewScrollToBottomButton;\n  protected readonly defaultInputContainerComponent =\n    CopilotChatViewInputContainer;\n  protected readonly defaultInputComponent = CopilotChatInput;\n  protected readonly defaultFeatherComponent = CopilotChatViewFeather;\n  protected readonly defaultDisclaimerComponent = CopilotChatViewDisclaimer;\n  protected readonly labels = injectChatLabels();\n\n  // Signals for reactive state\n  protected messagesValue = computed(() => this.messages());\n  protected autoScrollSignal = computed(() => this.autoScroll());\n  protected showCursorSignal = computed(() => this.showCursor());\n  protected disclaimerTextSignal = computed(() => this.disclaimerText());\n  protected disclaimerClassSignal = computed(() => this.disclaimerClass());\n  protected inputContainerHeight = signal<number>(0);\n  protected isResizing = signal<boolean>(false);\n  protected shouldShowWelcomeScreen = computed(\n    () => this.messagesValue().length === 0 && !this.hasExplicitThreadId(),\n  );\n\n  // Computed signals\n  protected computedClass = computed(() =>\n    cn(\n      \"copilotKitChat cpk:@container cpk:relative cpk:h-full cpk:flex cpk:flex-col\",\n    ),\n  );\n  protected dropOverlayClass = computed(() =>\n    cn(\n      \"cpk:absolute cpk:inset-0 cpk:z-50 cpk:pointer-events-none\",\n      \"cpk:flex cpk:items-center cpk:justify-center\",\n      \"cpk:bg-primary/5 cpk:backdrop-blur-[2px]\",\n      \"cpk:border-2 cpk:border-dashed cpk:border-primary/40 cpk:rounded-lg cpk:m-2\",\n    ),\n  );\n\n  // Slot resolution computed signals\n  protected messageViewSlot = computed(\n    () => this.messageViewTemplate() || this.messageViewComponent(),\n  );\n\n  protected scrollViewSlot = computed(\n    () => this.scrollViewTemplate() || this.scrollViewComponent(),\n  );\n\n  protected scrollToBottomButtonSlot = computed(\n    () =>\n      this.scrollToBottomButtonTemplate() ||\n      this.scrollToBottomButtonComponent(),\n  );\n\n  protected inputSlot = computed(\n    () => this.inputTemplate() || this.inputComponent(),\n  );\n\n  protected inputContainerSlot = computed(\n    () => this.inputContainerTemplate() || this.inputContainerComponent(),\n  );\n\n  protected featherSlot = computed(\n    () => this.featherTemplate() || this.featherComponent(),\n  );\n\n  protected disclaimerSlot = computed(\n    () => this.disclaimerTemplate() || this.disclaimerComponent(),\n  );\n\n  // Context objects for slots\n  protected scrollViewContext = computed(() => ({\n    autoScroll: this.autoScrollSignal(),\n    scrollToBottomButton: this.scrollToBottomButtonSlot(),\n    scrollToBottomButtonClass: this.scrollToBottomButtonClass(),\n    inputContainerHeight: this.inputContainerHeight(),\n    isResizing: this.isResizing(),\n    messages: this.messagesValue(),\n    state: this.state(),\n    agentId: this.agentId(),\n    messageView: this.messageViewSlot(),\n    messageViewClass: this.messageViewClass(),\n    assistantMessageComponent: this.assistantMessageComponent(),\n    assistantMessageTemplate: this.assistantMessageTemplate(),\n    assistantMessageClass: this.assistantMessageClass(),\n    reasoningMessageComponent: this.reasoningMessageComponent(),\n    reasoningMessageTemplate: this.reasoningMessageTemplate(),\n    reasoningMessageClass: this.reasoningMessageClass(),\n    messageViewChildrenComponent: this.messageViewChildrenComponent(),\n    messageViewChildrenTemplate: this.messageViewChildrenTemplate(),\n    messageViewChildrenClass: this.messageViewChildrenClass(),\n  }));\n\n  // Removed scrollViewPropsComputed - no longer needed\n\n  protected inputContainerContext = computed(() => ({\n    input: this.inputSlot(),\n    disclaimer: this.disclaimerSlot(),\n    disclaimerText: this.disclaimerTextSignal(),\n    disclaimerClass: this.disclaimerClassSignal(),\n    inputContainerClass: this.inputContainerClass(),\n  }));\n\n  // Removed inputContainerPropsComputed - no longer needed\n\n  // Layout context for custom templates (render prop pattern)\n  protected layoutContext = computed(() => ({\n    messageView: this.messageViewSlot(),\n    input: this.inputSlot(),\n    scrollView: this.scrollViewSlot(),\n    scrollToBottomButton: this.scrollToBottomButtonSlot(),\n    feather: this.featherSlot(),\n    inputContainer: this.inputContainerSlot(),\n    disclaimer: this.disclaimerSlot(),\n  }));\n\n  private destroy$ = new Subject<void>();\n  private resizeTimeoutRef?: number;\n  private measurementRetryTimeoutRef?: number;\n  private readonly ngZone = inject(NgZone);\n  private destroyed = false;\n\n  constructor(\n    private resizeObserverService: ResizeObserverService,\n    private cdr: ChangeDetectorRef,\n    private handlers: CopilotChatViewHandlers,\n  ) {\n    // Clear any pending resize timeout when toggling isResizing, without signal writes here\n  }\n\n  ngOnInit(): void {\n    // Initialize handler availability in the view-scoped service\n    // OutputEmitterRef doesn't expose 'observed'; default to true to enable UI affordances\n    this.handlers.hasAssistantThumbsUpHandler.set(true);\n    this.handlers.hasAssistantThumbsDownHandler.set(true);\n    this.handlers.hasAssistantReadAloudHandler.set(true);\n    this.handlers.hasAssistantRegenerateHandler.set(true);\n    this.handlers.hasUserCopyHandler.set(true);\n    this.handlers.hasUserEditHandler.set(true);\n  }\n\n  ngOnChanges(): void {\n    // Keep handler availability in sync (assume available)\n    this.handlers.hasAssistantThumbsUpHandler.set(true);\n    this.handlers.hasAssistantThumbsDownHandler.set(true);\n    this.handlers.hasAssistantReadAloudHandler.set(true);\n    this.handlers.hasAssistantRegenerateHandler.set(true);\n    this.handlers.hasUserCopyHandler.set(true);\n    this.handlers.hasUserEditHandler.set(true);\n  }\n\n  ngAfterViewInit(): void {\n    // Don't set a default height - measure it dynamically\n\n    // Set up input container height monitoring\n    const measureAndObserve = () => {\n      if (\n        !this.inputContainerSlotRef ||\n        !this.inputContainerSlotRef.nativeElement\n      ) {\n        return false;\n      }\n\n      // The slot ref points to the copilot-slot element\n      // We need to find the actual input container component inside it\n      const slotElement = this.inputContainerSlotRef.nativeElement;\n      const componentElement = slotElement.querySelector(\n        \"copilot-chat-view-input-container\",\n      );\n\n      if (!componentElement) {\n        return false;\n      }\n\n      // Look for the absolute positioned div that contains the input\n      let innerDiv = componentElement.querySelector(\n        \"div.absolute\",\n      ) as HTMLElement;\n\n      // If not found by class, try first child\n      if (!innerDiv) {\n        innerDiv = componentElement.firstElementChild as HTMLElement;\n      }\n\n      if (!innerDiv) {\n        return false;\n      }\n\n      // Measure the actual height\n      const measuredHeight = innerDiv.offsetHeight;\n\n      if (measuredHeight === 0) {\n        return false;\n      }\n\n      // Success! Set the initial height\n      this.inputContainerHeight.set(measuredHeight);\n      this.cdr.detectChanges();\n\n      // Create an ElementRef wrapper for ResizeObserver\n      const innerDivRef = new ElementRef(innerDiv);\n\n      // Set up ResizeObserver to track changes\n      this.resizeObserverService\n        .observeElement(innerDivRef, 0, 250)\n        .pipe(takeUntil(this.destroy$))\n        .subscribe((state) => {\n          const newHeight = state.height;\n\n          if (newHeight !== this.inputContainerHeight() && newHeight > 0) {\n            this.inputContainerHeight.set(newHeight);\n            this.isResizing.set(true);\n            this.cdr.detectChanges();\n\n            // Clear existing timeout\n            if (this.resizeTimeoutRef) {\n              clearTimeout(this.resizeTimeoutRef);\n            }\n\n            // Set isResizing to false after a short delay\n            this.resizeTimeoutRef = window.setTimeout(() => {\n              this.isResizing.set(false);\n              this.resizeTimeoutRef = undefined;\n              this.cdr.detectChanges();\n            }, 250);\n          }\n        });\n\n      return true;\n    };\n\n    // Try to measure immediately\n    if (!measureAndObserve()) {\n      // If failed, retry with increasing delays\n      let attempts = 0;\n      const maxAttempts = 10;\n\n      const retry = () => {\n        if (this.destroyed) return;\n        attempts++;\n        if (measureAndObserve()) {\n          // Successfully measured\n        } else if (attempts < maxAttempts) {\n          // Exponential backoff: 50ms, 100ms, 200ms, 400ms, etc.\n          const delay = 50 * Math.pow(2, Math.min(attempts - 1, 4));\n          this.scheduleMeasurementRetry(retry, delay);\n        } else {\n          // Failed to measure after max attempts\n        }\n      };\n\n      // Start retry with first delay\n      this.scheduleMeasurementRetry(retry, 50);\n    }\n  }\n\n  /** Schedules a cancellable layout retry without triggering zone-wide ticks. */\n  private scheduleMeasurementRetry(callback: () => void, delay: number): void {\n    this.ngZone.runOutsideAngular(() => {\n      this.measurementRetryTimeoutRef = window.setTimeout(() => {\n        this.measurementRetryTimeoutRef = undefined;\n        callback();\n      }, delay);\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed = true;\n    if (this.resizeTimeoutRef) {\n      clearTimeout(this.resizeTimeoutRef);\n    }\n    if (this.measurementRetryTimeoutRef) {\n      clearTimeout(this.measurementRetryTimeoutRef);\n    }\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","import {\n  Directive,\n  DestroyRef,\n  ElementRef,\n  HostListener,\n  Renderer2,\n  inject,\n  input,\n} from \"@angular/core\";\nimport {\n  exceedsMaxSize,\n  formatFileSize,\n  generateVideoThumbnail,\n  getModalityFromMimeType,\n  matchesAcceptFilter,\n  randomUUID,\n  readFileAsBase64,\n  type Attachment,\n  type AttachmentsConfig,\n  type InputContent,\n} from \"@copilotkit/shared\";\nimport { ChatState } from \"../../chat-state\";\n\n@Directive({\n  selector: \"[copilotChatAttachments]\",\n})\nexport class CopilotChatAttachmentsDirective {\n  readonly config = input<AttachmentsConfig | undefined>();\n\n  private readonly chat = inject(ChatState);\n  private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly renderer = inject(Renderer2);\n  private readonly destroyRef = inject(DestroyRef);\n\n  private fileInput?: HTMLInputElement;\n\n  private get enabled(): boolean {\n    return this.config()?.enabled ?? false;\n  }\n\n  onDragOver(event: DragEvent): void {\n    if (!this.enabled) return;\n    event.preventDefault();\n    event.stopPropagation();\n    this.chat.dragOver.set(true);\n  }\n\n  onDragLeave(event: DragEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n    this.chat.dragOver.set(false);\n  }\n\n  async onDrop(event: DragEvent): Promise<void> {\n    event.preventDefault();\n    event.stopPropagation();\n    this.chat.dragOver.set(false);\n\n    if (!this.enabled) return;\n\n    const files = Array.from(event.dataTransfer?.files ?? []);\n    if (files.length > 0) {\n      await this.processFiles(files);\n    }\n  }\n\n  @HostListener(\"document:paste\", [\"$event\"])\n  async onPaste(event: ClipboardEvent): Promise<void> {\n    if (!this.enabled) return;\n\n    const target = event.target as Node | null;\n    if (!target || !this.host.nativeElement.contains(target)) return;\n\n    const accept = this.config()?.accept ?? \"*/*\";\n    const files = Array.from(event.clipboardData?.items ?? [])\n      .filter((item) => item.kind === \"file\")\n      .map((item) => item.getAsFile())\n      .filter(\n        (file): file is File => !!file && matchesAcceptFilter(file, accept),\n      );\n\n    if (files.length === 0) return;\n\n    event.preventDefault();\n    await this.processFiles(files);\n  }\n\n  openFilePicker(): void {\n    const input = this.ensureFileInput();\n    input.accept = this.config()?.accept ?? \"*/*\";\n    input.click();\n  }\n\n  removeAttachment(id: string): void {\n    this.chat.attachments.update((attachments) =>\n      attachments.filter((attachment) => attachment.id !== id),\n    );\n  }\n\n  consume(): Attachment[] {\n    const readyAttachments = this.chat\n      .attachments()\n      .filter((attachment) => attachment.status === \"ready\");\n\n    if (readyAttachments.length > 0) {\n      this.chat.attachments.update((attachments) =>\n        attachments.filter((attachment) => attachment.status !== \"ready\"),\n      );\n    }\n\n    if (this.fileInput) {\n      this.fileInput.value = \"\";\n    }\n\n    return readyAttachments;\n  }\n\n  buildContent(value: string, attachments: Attachment[]): InputContent[] {\n    const content: InputContent[] = [];\n    const trimmed = value.trim();\n\n    if (trimmed) {\n      content.push({ type: \"text\", text: trimmed });\n    }\n\n    for (const attachment of attachments) {\n      content.push({\n        type: attachment.type,\n        source: attachment.source,\n        metadata: {\n          ...(attachment.filename ? { filename: attachment.filename } : {}),\n          ...attachment.metadata,\n        },\n      } as InputContent);\n    }\n\n    return content;\n  }\n\n  private ensureFileInput(): HTMLInputElement {\n    if (this.fileInput) return this.fileInput;\n\n    const input: HTMLInputElement = this.renderer.createElement(\"input\");\n    this.renderer.setAttribute(input, \"type\", \"file\");\n    this.renderer.setProperty(input, \"multiple\", true);\n    this.renderer.setStyle(input, \"display\", \"none\");\n    const unlisten = this.renderer.listen(input, \"change\", (event: Event) => {\n      void this.handleFileInputChange(event);\n    });\n    this.renderer.appendChild(this.host.nativeElement, input);\n\n    this.destroyRef.onDestroy(() => {\n      unlisten();\n      input.remove();\n    });\n\n    this.fileInput = input;\n    return input;\n  }\n\n  private async handleFileInputChange(event: Event): Promise<void> {\n    const input = event.target as HTMLInputElement;\n    const files = Array.from(input.files ?? []);\n    if (files.length === 0) return;\n    await this.processFiles(files);\n  }\n\n  private async processFiles(files: File[]): Promise<void> {\n    const config = this.config();\n    if (!config?.enabled) {\n      return;\n    }\n\n    const accept = config.accept ?? \"*/*\";\n    const maxSize = config.maxSize ?? 20 * 1024 * 1024;\n\n    for (const file of files) {\n      if (!matchesAcceptFilter(file, accept)) {\n        config.onUploadFailed?.({\n          reason: \"invalid-type\",\n          file,\n          message: `File \"${file.name}\" is not accepted. Supported types: ${accept}`,\n        });\n        continue;\n      }\n\n      if (exceedsMaxSize(file, maxSize)) {\n        config.onUploadFailed?.({\n          reason: \"file-too-large\",\n          file,\n          message: `File \"${\n            file.name\n          }\" exceeds the maximum size of ${formatFileSize(maxSize)}`,\n        });\n        continue;\n      }\n\n      const placeholderId = randomUUID();\n      const modality = getModalityFromMimeType(file.type);\n      const placeholder: Attachment = {\n        id: placeholderId,\n        type: modality,\n        source: { type: \"data\", value: \"\", mimeType: file.type },\n        filename: file.name,\n        size: file.size,\n        status: \"uploading\",\n      };\n\n      this.chat.attachments.update((attachments) => [\n        ...attachments,\n        placeholder,\n      ]);\n\n      try {\n        const uploadResult = config.onUpload\n          ? await config.onUpload(file)\n          : {\n              type: \"data\" as const,\n              value: await readFileAsBase64(file),\n              mimeType: file.type,\n            };\n        const { metadata, ...source } = uploadResult;\n        const thumbnail =\n          modality === \"video\" ? await generateVideoThumbnail(file) : undefined;\n\n        this.chat.attachments.update((attachments) =>\n          attachments.map((attachment) =>\n            attachment.id === placeholderId\n              ? {\n                  ...attachment,\n                  source,\n                  status: \"ready\",\n                  thumbnail,\n                  metadata,\n                }\n              : attachment,\n          ),\n        );\n      } catch (error) {\n        this.chat.attachments.update((attachments) =>\n          attachments.filter((attachment) => attachment.id !== placeholderId),\n        );\n        console.error(`[CopilotKit] Failed to upload \"${file.name}\":`, error);\n        config.onUploadFailed?.({\n          reason: \"upload-failed\",\n          file,\n          message:\n            error instanceof Error\n              ? error.message\n              : `Failed to upload \"${file.name}\"`,\n        });\n      }\n    }\n  }\n}\n","import { effect, untracked, type Signal } from \"@angular/core\";\nimport { HttpAgent, type AbstractAgent } from \"@ag-ui/client\";\nimport type { AgentStore } from \"./agent\";\nimport type { CopilotChatConfiguration } from \"./chat-configuration\";\n\n/**\n * Signature of `CopilotKitCore.connectAgent`, injected for testability.\n *\n * The active thread is carried on `agent.threadId`, which the connector sets\n * before invoking this function; there is no separate thread parameter. The\n * connector receives the raw `core.connectAgent`, not a cursor-wrapping fn —\n * the cursor lifecycle is owned by the connector via {@link ConnectActiveThreadCursorHooks}.\n */\nexport type ConnectAgentFn = (params: { agent: AbstractAgent }) => unknown;\n\n/**\n * Loading-cursor hooks the connector drives around an explicit connect, with\n * the same timing as the standalone `<copilot-chat>` `connectToAgent` path:\n * cursor on at connect start, off when that connect settles — but only if its\n * run was not superseded by a newer connect (the staleness guard).\n */\nexport interface ConnectActiveThreadCursorHooks {\n  /** Called synchronously when an explicit connect begins (cursor on). */\n  onConnectStart?: () => void;\n  /** Called when that connect settles, ONLY if its run was not superseded (cursor off). */\n  onConnectSettle?: () => void;\n}\n\n/**\n * Wires the active chat thread to the live agent.\n *\n * Reactively observes the resolved thread id (and whether it was chosen\n * explicitly) from {@link CopilotChatConfiguration} and the current agent from\n * the agent-store signal. On every change it pins the thread onto\n * `agent.threadId`, then:\n *\n * - **Explicit switch** (user picked a thread): connects the agent to that\n *   thread via {@link ConnectAgentFn}, owning the loading-cursor + abort +\n *   detach lifecycle of the standalone `<copilot-chat>` `connectToAgent` path.\n *   (Connect-error *logging* is the one intentional divergence — see below.)\n *   Before connecting it installs a per-run `AbortController` on the\n *   agent (only when the agent is an {@link HttpAgent}) and calls\n *   {@link ConnectActiveThreadCursorHooks.onConnectStart}. When that connect\n *   settles it calls {@link ConnectActiveThreadCursorHooks.onConnectSettle} —\n *   but only if the run was not superseded (the `detached` staleness guard), so\n *   a stale connect cannot clear the cursor out from under a newer one. The\n *   connect's promise is caught before its `finally` so a rejecting connect\n *   never produces an unhandled rejection. Connect errors surface via the\n *   AgentStore's run/error subscription and are intentionally NOT re-logged here\n *   — the deliberate divergence from `connectToAgent`, which additionally\n *   `console.error`s unexpected (non-`AGUIConnectNotImplementedError`) failures.\n *   On the next effect re-run\n *   (thread/agent switch) and on destroy, the cleanup aborts the in-flight\n *   request via the per-run controller AND detaches the run via\n *   `agent.detachActiveRun()`, mirroring the standalone teardown so a rapid\n *   switch or component destroy does not leak a prior run.\n * - **Fresh / non-explicit switch** (e.g. {@link CopilotChatConfiguration.startNewThread}):\n *   clears the agent's messages via `agent.setMessages([])` and skips the\n *   connect — the runtime assigns the server thread id on first send. The clear\n *   fires only on an actual transition to a *new* fresh thread id, never on the\n *   initial mount nor on an agent-store swap that leaves the thread id unchanged\n *   (which would otherwise wipe a resumed/shared agent's existing history).\n *\n * Tracked reads happen in the effect's reactive scope; all mutation and the\n * connect call run inside `untracked()` so they do not register as\n * dependencies (mirrors the effect/untracked idiom in `threads.ts`).\n *\n * @param config - The chat configuration exposing the resolved thread signals.\n * @param agentStore - Signal yielding the current {@link AgentStore}.\n * @param connectAgent - The raw `CopilotKitCore.connectAgent` implementation.\n * @param hooks - Optional loading-cursor hooks driven around the explicit connect.\n */\nexport function connectActiveThread(\n  config: CopilotChatConfiguration,\n  agentStore: Signal<AgentStore>,\n  connectAgent: ConnectAgentFn,\n  hooks?: ConnectActiveThreadCursorHooks,\n): void {\n  // Tracks the thread id observed on the previous effect run so the\n  // non-explicit branch can distinguish a genuine new-thread transition from\n  // the initial mount (`undefined`) or an agent-store swap that left the thread\n  // unchanged. Clearing only on a real transition prevents wiping a\n  // resumed/shared agent's existing message history.\n  let lastThreadId: string | undefined;\n  effect((onCleanup) => {\n    const threadId = config.threadId();\n    const explicit = config.hasExplicitThreadId();\n    const store = agentStore();\n    untracked(() => {\n      const agent = store.agent;\n      agent.threadId = threadId;\n      if (explicit) {\n        // Mirror the standalone `connectToAgent` cursor/abort/detach lifecycle:\n        // a per-run staleness flag, a per-run AbortController installed on\n        // HttpAgents, cursor-on, a single caught connect chain, and an\n        // abort+detach cleanup. (Connect-error logging is intentionally omitted\n        // here — errors surface via the AgentStore run/error subscription.)\n        let detached = false;\n        const abortController = new AbortController();\n        if (agent instanceof HttpAgent) {\n          agent.abortController = abortController;\n        }\n\n        hooks?.onConnectStart?.();\n\n        const result = connectAgent({ agent });\n        Promise.resolve(result)\n          .catch(() => {\n            // connect errors surface via the AgentStore's run/error\n            // subscription, not here.\n          })\n          .finally(() => {\n            if (!detached) hooks?.onConnectSettle?.();\n          });\n\n        // Mirror the standalone `<copilot-chat>` teardown: mark the run stale,\n        // abort the in-flight request, and detach the run for the agent\n        // connected this run. Fires on the next effect re-run (thread/agent\n        // switch) and on destroy so a prior run does not leak.\n        onCleanup(() => {\n          detached = true;\n          abortController.abort();\n          agent.detachActiveRun().catch(() => {});\n        });\n      } else if (lastThreadId !== undefined && threadId !== lastThreadId) {\n        // Real switch to a new fresh thread; not mount and not a same-thread swap.\n        agent.setMessages([]);\n      }\n      lastThreadId = threadId;\n    });\n  });\n}\n","import {\n  Component,\n  input,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  signal,\n  effect,\n  ChangeDetectorRef,\n  Injector,\n  TemplateRef,\n  Type,\n  computed,\n  inject,\n  viewChild,\n  DestroyRef,\n} from \"@angular/core\";\n\nimport { CopilotChatView } from \"./copilot-chat-view\";\nimport { CopilotChatAttachmentsDirective } from \"./copilot-chat-attachments.directive\";\n\nimport {\n  DEFAULT_AGENT_ID,\n  randomUUID,\n  type AttachmentsConfig,\n} from \"@copilotkit/shared\";\nimport {\n  Message,\n  AbstractAgent,\n  HttpAgent,\n  AGUIConnectNotImplementedError,\n} from \"@ag-ui/client\";\nimport type { Suggestion } from \"@copilotkit/core\";\nimport { injectAgentStore } from \"../../agent\";\nimport { CopilotKit } from \"../../copilotkit\";\nimport { ChatState } from \"../../chat-state\";\nimport { transcribeAudio } from \"../../transcription\";\nimport { COPILOT_CHAT_CONFIGURATION } from \"../../chat-configuration\";\nimport { connectActiveThread } from \"../../active-thread-connector\";\n\n/**\n * CopilotChat component - Angular equivalent of React's <CopilotChat>\n * Provides a complete chat interface that wires an agent to the chat view\n *\n * @example\n * ```html\n * <copilot-chat [agentId]=\"'default'\" [threadId]=\"'abc123'\"></copilot-chat>\n * ```\n */\n@Component({\n  selector: \"copilot-chat\",\n  imports: [CopilotChatView, CopilotChatAttachmentsDirective],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { \"data-copilotkit\": \"\", class: \"cpk:block cpk:h-full cpk:min-h-0\" },\n  template: `\n    <div\n      style=\"display: contents\"\n      copilotChatAttachments\n      [config]=\"attachmentsConfig()\"\n    >\n      <copilot-chat-view\n        [messages]=\"messages()\"\n        [state]=\"agentState()\"\n        [agentId]=\"resolvedAgentId()\"\n        [autoScroll]=\"true\"\n        [messageViewClass]=\"'cpk:w-full'\"\n        [showCursor]=\"showCursor()\"\n        [inputComponent]=\"inputComponent()\"\n        [assistantMessageComponent]=\"assistantMessageComponent()\"\n        [assistantMessageTemplate]=\"assistantMessageTemplate()\"\n        [assistantMessageClass]=\"assistantMessageClass()\"\n        [reasoningMessageComponent]=\"reasoningMessageComponent()\"\n        [reasoningMessageTemplate]=\"reasoningMessageTemplate()\"\n        [reasoningMessageClass]=\"reasoningMessageClass()\"\n        [messageViewChildrenComponent]=\"messageViewChildrenComponent()\"\n        [messageViewChildrenTemplate]=\"messageViewChildrenTemplate()\"\n        [messageViewChildrenClass]=\"messageViewChildrenClass()\"\n        [hasExplicitThreadId]=\"hasExplicitThreadId()\"\n      >\n      </copilot-chat-view>\n    </div>\n  `,\n  providers: [\n    {\n      provide: ChatState,\n      useExisting: CopilotChat,\n    },\n  ],\n})\nexport class CopilotChat extends ChatState {\n  private readonly attachmentsDirective = viewChild(\n    CopilotChatAttachmentsDirective,\n  );\n\n  readonly inputValue = signal<string>(\"\");\n  readonly agentId = input<string | undefined>();\n  readonly threadId = input<string | undefined>();\n  readonly inputComponent = input<Type<any> | undefined>();\n  /** Component used to render each assistant message in the prebuilt chat. */\n  readonly assistantMessageComponent = input<Type<any> | undefined>();\n  /** Template used to render each assistant message in the prebuilt chat. */\n  readonly assistantMessageTemplate = input<TemplateRef<any> | undefined>();\n  /** Class forwarded to the default or custom assistant-message renderer. */\n  readonly assistantMessageClass = input<string | undefined>();\n  /** Component used to render each reasoning message in the prebuilt chat. */\n  readonly reasoningMessageComponent = input<Type<any> | undefined>();\n  /** Template used to render each reasoning message in the prebuilt chat. */\n  readonly reasoningMessageTemplate = input<TemplateRef<any> | undefined>();\n  /** Class forwarded to the default or custom reasoning-message renderer. */\n  readonly reasoningMessageClass = input<string | undefined>();\n  /** Component rendered after the transcript messages and before the cursor. */\n  readonly messageViewChildrenComponent = input<Type<any> | undefined>();\n  /** Template rendered after the transcript messages and before the cursor. */\n  readonly messageViewChildrenTemplate = input<TemplateRef<any> | undefined>();\n  /** Class forwarded to custom transcript-children renderers. */\n  readonly messageViewChildrenClass = input<string | undefined>();\n  readonly attachmentsConfig = input<AttachmentsConfig | undefined>(undefined, {\n    alias: \"attachments\",\n  });\n  /**\n   * Ambient chat configuration, when a {@link provideCopilotChatConfiguration}\n   * provider is in scope. Absent (`null`) for standalone\n   * `<copilot-chat [threadId]>` usage, which has no provider — resolved via the\n   * optional inject so the component does not throw without one.\n   */\n  private readonly config = inject(COPILOT_CHAT_CONFIGURATION, {\n    optional: true,\n  });\n  protected readonly resolvedAgentId = computed(\n    () => this.agentId() ?? this.config?.agentId() ?? DEFAULT_AGENT_ID,\n  );\n  readonly agentStore = injectAgentStore(this.resolvedAgentId);\n  private readonly copilotKit = inject(CopilotKit);\n  readonly cdr = inject(ChangeDetectorRef);\n  readonly injector = inject(Injector);\n  private readonly destroyRef = inject(DestroyRef);\n\n  protected messages = computed(() => this.agentStore().messages());\n  protected agentState = computed(() => this.agentStore().state());\n  protected isRunning = computed(() => this.agentStore().isRunning());\n  protected readonly hasExplicitThreadId =\n    this.config?.hasExplicitThreadId ??\n    computed(() => Boolean(this.threadId()));\n  protected readonly agentRef = computed(() => this.agentStore().agent);\n  protected readonly resolvedThreadId = computed(\n    () => this.threadId() || this.generatedThreadId,\n  );\n  override readonly attachmentsEnabled = computed(\n    () => this.attachmentsConfig()?.enabled ?? false,\n  );\n  override readonly attachmentsUploading = computed(() =>\n    this.attachments().some((attachment) => attachment.status === \"uploading\"),\n  );\n  protected showCursor = signal<boolean>(false);\n\n  private generatedThreadId: string = randomUUID();\n\n  constructor() {\n    super();\n\n    const suggestionsSubscription = this.copilotKit.core.subscribe({\n      onAgentsChanged: () => {\n        const agentId = this.resolvedAgentId();\n        this.syncSuggestionsFromCore(agentId);\n        if (this.copilotKit.core.getAgent(agentId)) {\n          this.copilotKit.reloadSuggestions(agentId);\n        }\n      },\n      onSuggestionsChanged: ({ agentId, suggestions }) => {\n        if (agentId !== this.resolvedAgentId()) {\n          return;\n        }\n\n        this.suggestions.set(suggestions);\n        this.suggestionsLoading.set(\n          this.copilotKit.core.getSuggestions(agentId).isLoading,\n        );\n        this.cdr.markForCheck();\n      },\n      onSuggestionsStartedLoading: ({ agentId }) => {\n        if (agentId !== this.resolvedAgentId()) {\n          return;\n        }\n\n        this.suggestionsLoading.set(true);\n        this.cdr.markForCheck();\n      },\n      onSuggestionsFinishedLoading: ({ agentId }) => {\n        if (agentId !== this.resolvedAgentId()) {\n          return;\n        }\n\n        this.syncSuggestionsFromCore(agentId);\n      },\n      onSuggestionsConfigChanged: () => {\n        const agentId = this.resolvedAgentId();\n        this.syncSuggestionsFromCore(agentId);\n        this.copilotKit.reloadSuggestions(agentId);\n      },\n    });\n\n    this.destroyRef.onDestroy(() => suggestionsSubscription.unsubscribe());\n\n    effect(() => {\n      const agentId = this.resolvedAgentId();\n      this.syncSuggestionsFromCore(agentId);\n      this.copilotKit.reloadSuggestions(agentId);\n    });\n\n    if (this.config) {\n      // A set `[threadId]` input seeds the ambient config so the input\n      // actually drives the active thread (not just the welcome flag). When\n      // the config is controlled by a host-provided `threadId` option,\n      // `setActiveThreadId` no-ops — so a controlled config wins over the\n      // input, matching React's prop-precedence. When `[threadId]` is unset,\n      // the effect does nothing and the config drives as before.\n      effect(() => {\n        const inputThreadId = this.threadId();\n        if (inputThreadId) {\n          this.config!.setActiveThreadId(inputThreadId, { explicit: true });\n        }\n      });\n\n      // Ambient configuration drives the active thread: the connector pins\n      // `agent.threadId` from the config's resolved thread signal and connects\n      // on explicit switches (or clears messages on a fresh thread).\n      //\n      // The connector receives the RAW `core.connectAgent` and owns the loading\n      // cursor + abort + detach lifecycle, matching the standalone\n      // `connectToAgent` path exactly: cursor on at connect start, off when the\n      // connect settles (guarded against a superseded run). Connect errors still\n      // surface via the AgentStore's run/error subscription, not here.\n      connectActiveThread(\n        this.config,\n        this.agentStore,\n        (params) => this.copilotKit.core.connectAgent(params),\n        {\n          onConnectStart: () => {\n            this.showCursor.set(true);\n            this.cdr.markForCheck();\n          },\n          onConnectSettle: () => {\n            this.showCursor.set(false);\n            this.cdr.markForCheck();\n          },\n        },\n      );\n    } else {\n      // Standalone `<copilot-chat [threadId]>` usage with no configuration\n      // provider: the active thread is input-driven exactly as before.\n      effect((onCleanup) => {\n        const agent = this.agentRef();\n        const threadId = this.resolvedThreadId();\n\n        agent.threadId = threadId;\n\n        if (!this.hasExplicitThreadId()) return;\n\n        let detached = false;\n        const abortController = new AbortController();\n        if (agent instanceof HttpAgent) {\n          agent.abortController = abortController;\n        }\n\n        void this.connectToAgent(agent, () => detached);\n\n        onCleanup(() => {\n          detached = true;\n          abortController.abort();\n          void agent.detachActiveRun().catch(() => {});\n        });\n      });\n    }\n  }\n\n  private async connectToAgent(\n    agent: AbstractAgent,\n    isDetached: () => boolean,\n  ): Promise<void> {\n    this.showCursor.set(true);\n    this.cdr.markForCheck();\n\n    try {\n      await this.copilotKit.core.connectAgent({ agent });\n    } catch (error) {\n      if (isDetached()) return;\n      if (!(error instanceof AGUIConnectNotImplementedError)) {\n        console.error(\"Failed to connect to agent:\", error);\n      }\n    } finally {\n      if (!isDetached()) {\n        this.showCursor.set(false);\n        this.cdr.markForCheck();\n      }\n    }\n  }\n\n  async submitInput(value: string): Promise<void> {\n    const agent = this.agentStore().agent;\n    if (!agent || !value.trim()) return;\n\n    if (this.attachmentsUploading()) {\n      console.error(\"[CopilotKit] Cannot send while attachments are uploading\");\n      return;\n    }\n\n    const attachments = this.attachmentsDirective();\n    const readyAttachments = attachments?.consume() ?? [];\n    const userMessage: Message =\n      readyAttachments.length > 0\n        ? ({\n            id: randomUUID(),\n            role: \"user\",\n            content: attachments!.buildContent(value, readyAttachments),\n          } as Message)\n        : {\n            id: randomUUID(),\n            role: \"user\",\n            content: value,\n          };\n    agent.addMessage(userMessage);\n\n    // Clear the input\n    this.inputValue.set(\"\");\n\n    // Show cursor while processing\n    this.showCursor.set(true);\n    this.cdr.markForCheck();\n\n    // Run the agent via core so tools (and context, forwardedProps) are included\n    try {\n      await this.copilotKit.core.runAgent({ agent });\n    } catch (error) {\n      console.error(\"Agent run error:\", error);\n    } finally {\n      this.showCursor.set(false);\n      this.cdr.markForCheck();\n    }\n  }\n\n  async selectSuggestion(\n    suggestion: Suggestion,\n    _index: number,\n  ): Promise<void> {\n    const agent = this.agentStore().agent;\n    const message = suggestion.message.trim();\n    if (!agent || !message || suggestion.isLoading) return;\n\n    agent.addMessage({\n      id: randomUUID(),\n      role: \"user\",\n      content: message,\n    });\n\n    this.inputValue.set(\"\");\n    this.showCursor.set(true);\n    this.cdr.markForCheck();\n\n    try {\n      await this.copilotKit.core.runAgent({ agent });\n    } catch (error) {\n      console.error(\"Agent run error:\", error);\n    } finally {\n      this.showCursor.set(false);\n      this.cdr.markForCheck();\n    }\n  }\n\n  changeInput(value: string): void {\n    this.inputValue.set(value);\n  }\n\n  override async finishTranscription(audioBlob: Blob): Promise<void> {\n    this.isTranscribing.set(true);\n    this.cdr.markForCheck();\n\n    try {\n      const result = await transcribeAudio(this.copilotKit.core, audioBlob);\n      const text = result.text?.trim();\n      if (text) {\n        const previous = this.inputValue().trim();\n        this.inputValue.set(previous ? `${previous} ${text}` : text);\n      }\n    } catch (error) {\n      console.error(\"[CopilotKit] Transcription failed:\", error);\n    } finally {\n      this.isTranscribing.set(false);\n      this.cdr.markForCheck();\n    }\n  }\n\n  private syncSuggestionsFromCore(agentId: string): void {\n    const result = this.copilotKit.core.getSuggestions(agentId);\n    this.suggestions.set(result.suggestions);\n    this.suggestionsLoading.set(result.isLoading);\n    this.cdr.markForCheck();\n  }\n\n  addFile(): void {\n    this.attachmentsDirective()?.openFilePicker();\n  }\n\n  removeAttachment(id: string): void {\n    this.attachmentsDirective()?.removeAttachment(id);\n  }\n\n  handleDragOver(event: DragEvent): void {\n    this.attachmentsDirective()?.onDragOver(event);\n  }\n\n  handleDragLeave(event: DragEvent): void {\n    this.attachmentsDirective()?.onDragLeave(event);\n  }\n\n  handleDrop(event: DragEvent): void {\n    void this.attachmentsDirective()?.onDrop(event);\n  }\n}\n","import { CopilotChatTextarea } from \"./copilot-chat-textarea\";\nimport { CopilotChatAudioRecorder } from \"./copilot-chat-audio-recorder\";\nimport {\n  CopilotChatSendButton,\n  CopilotChatStartTranscribeButton,\n  CopilotChatCancelTranscribeButton,\n  CopilotChatFinishTranscribeButton,\n  CopilotChatAddFileButton,\n} from \"./copilot-chat-buttons\";\nimport { CopilotChatToolbar } from \"./copilot-chat-toolbar\";\nimport { CopilotChatToolsMenu } from \"./copilot-chat-tools-menu\";\n\n/**\n * Default components used by CopilotChatInput.\n * These can be imported and reused when creating custom slot implementations.\n *\n * @example\n * ```typescript\n * import { CopilotChatInputDefaults } from '@copilotkit/angular';\n *\n * @Component({\n *   template: `\n *     <copilot-chat-input [sendButtonSlot]=\"CustomSendButton\">\n *     </copilot-chat-input>\n *   `\n * })\n * export class MyComponent {\n *   CustomSendButton = class extends CopilotChatInputDefaults.SendButton {\n *     // Custom implementation\n *   };\n * }\n * ```\n */\nexport class CopilotChatInputDefaults {\n  static readonly TextArea = CopilotChatTextarea;\n  static readonly AudioRecorder = CopilotChatAudioRecorder;\n  static readonly SendButton = CopilotChatSendButton;\n  static readonly StartTranscribeButton = CopilotChatStartTranscribeButton;\n  static readonly CancelTranscribeButton = CopilotChatCancelTranscribeButton;\n  static readonly FinishTranscribeButton = CopilotChatFinishTranscribeButton;\n  static readonly AddFileButton = CopilotChatAddFileButton;\n  static readonly Toolbar = CopilotChatToolbar;\n  static readonly ToolsMenu = CopilotChatToolsMenu;\n}\n","import {\n  CUSTOM_ELEMENTS_SCHEMA,\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Output,\n  TemplateRef,\n  computed,\n  contentChild,\n  effect,\n  inject,\n  input,\n  signal,\n  viewChild,\n} from \"@angular/core\";\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport {\n  DEFAULT_AGENT_ID,\n  createLicenseContextValue,\n} from \"@copilotkit/shared\";\nimport { defineCopilotKitThreadsDrawer } from \"@copilotkit/web-components/threads-drawer\";\nimport type {\n  ArchiveDetail,\n  DeleteDetail,\n  DrawerThread,\n  OpenChangeDetail,\n  RetryDetail,\n  ThreadSelectedDetail,\n  UnarchiveDetail,\n  CopilotKitThreadsDrawer as CopilotKitThreadsDrawerElement,\n} from \"@copilotkit/web-components/threads-drawer\";\n// TODO(ENT-1051): import `CollapseChangeDetail` from\n// \"@copilotkit/web-components/threads-drawer\" once the parallel element PR that\n// adds the collapse feature (property `collapsible` + event `collapse-change`)\n// lands and is published; declared locally here because the built element types\n// in this worktree predate it.\ntype CollapseChangeDetail = { collapsed: boolean };\nimport { COPILOT_CHAT_CONFIGURATION } from \"../../chat-configuration\";\nimport { CopilotKit } from \"../../copilotkit\";\nimport { injectThreads } from \"../../threads\";\nimport type { Thread } from \"../../threads\";\n\n/**\n * Maps a {@link Thread} from the platform store onto the minimal\n * {@link DrawerThread} shape the `<copilotkit-threads-drawer>` element accepts.\n *\n * `lastRunAt` is spread conditionally so the key is absent (rather than\n * `undefined`) when the source thread has never been run — matching the\n * element's optional typing and avoiding spurious property pollution.\n */\nfunction toDrawerThread(thread: Thread): DrawerThread {\n  return {\n    id: thread.id,\n    name: thread.name,\n    archived: thread.archived,\n    createdAt: thread.createdAt,\n    updatedAt: thread.updatedAt,\n    ...(thread.lastRunAt !== undefined ? { lastRunAt: thread.lastRunAt } : {}),\n  };\n}\n\n/**\n * The Angular chat view container's element selector. Used to scope the\n * focus-return lookup so a multi-chat page focuses THIS drawer's composer.\n */\nconst CHAT_CONTAINER_SELECTOR = \"copilot-chat-view\";\n/**\n * The Angular chat input's element selector (`<textarea copilotChatTextarea>`).\n * Note: this is the Angular chat input, NOT React's `copilot-chat-textarea` or\n * Vue's `copilot-chat-input-textarea` `data-testid` — the Angular chat\n * components identify by element/attribute selector rather than `data-testid`.\n */\nconst CHAT_INPUT_SELECTOR = \"textarea[copilotChatTextarea]\";\n\n/**\n * Returns the chat input element for focus-return after a thread is selected.\n *\n * Best-effort and SCOPED: walks up from the drawer element looking for an\n * ancestor chat-view container ({@link CHAT_CONTAINER_SELECTOR}), then returns\n * the chat input ({@link CHAT_INPUT_SELECTOR}) within that subtree. This avoids\n * focusing the wrong composer on a page hosting more than one chat, where a\n * document-global lookup would grab whichever input appears first in DOM order.\n *\n * Falls back to a document-global lookup when no scoping ancestor is found\n * (e.g. the drawer and chat share no common container, or headless usage), and\n * returns `null` when there is no chat input at all. Mirrors the React and Vue\n * wrappers' `findChatInput`, scoped to the Angular chat selectors.\n *\n * @param origin - The drawer element to scope the search from.\n */\nfunction findChatInput(origin: Element | null): HTMLElement | null {\n  if (typeof document === \"undefined\") return null;\n  const container = origin?.closest?.(CHAT_CONTAINER_SELECTOR);\n  if (container) {\n    const scoped = container.querySelector<HTMLElement>(CHAT_INPUT_SELECTOR);\n    if (scoped) return scoped;\n  }\n  return document.querySelector<HTMLElement>(CHAT_INPUT_SELECTOR);\n}\n\n/**\n * Structural directive that captures a per-row template for projection into\n * the `<copilotkit-threads-drawer>` element as light-DOM children with\n * `slot=\"row:{id}\"`.\n *\n * Apply it to an `<ng-template>` that is a direct child of `<copilot-threads-drawer>`.\n * The implicit context variable (`let-t`) receives the full {@link Thread}\n * record for that row.\n *\n * @example\n * ```html\n * <copilot-threads-drawer>\n *   <ng-template copilotThreadsDrawerRow let-t>\n *     <span>{{ t.name }}</span>\n *   </ng-template>\n * </copilot-threads-drawer>\n * ```\n */\n@Directive({ selector: \"[copilotThreadsDrawerRow]\", standalone: true })\nexport class CopilotThreadsDrawerRow {\n  /** The captured template reference for the per-row content. */\n  readonly template = inject(TemplateRef);\n}\n\n/**\n * Angular wrapper around the `<copilotkit-threads-drawer>` Lit web component.\n *\n * Registers the custom element on construction (idempotent; SSR-guarded\n * internally by {@link defineCopilotKitThreadsDrawer}) and projects it into the DOM\n * via the `CUSTOM_ELEMENTS_SCHEMA`-enabled template.\n *\n * Thread list state is fetched from the Intelligence platform via\n * {@link injectThreads} and pushed onto the element's JS properties via an\n * `effect`, following the imperative property-assignment pattern used elsewhere\n * in this package (see `CopilotA2UIActivityRenderer`).\n *\n * DOM events emitted by the element are routed back to the chat configuration\n * and thread mutation methods via declarative Angular event bindings.\n *\n * @example\n * ```html\n * <copilot-threads-drawer data-testid=\"my-drawer\" />\n * ```\n */\n@Component({\n  selector: \"copilot-threads-drawer\",\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  imports: [NgTemplateOutlet],\n  template: `\n    <copilotkit-threads-drawer\n      #drawer\n      [attr.data-testid]=\"dataTestId()\"\n      [attr.recent-label]=\"recentLabel() ?? null\"\n      (thread-selected)=\"onThreadSelected($event)\"\n      (new-thread)=\"onNewThread()\"\n      (archive)=\"onArchive($event)\"\n      (unarchive)=\"onUnarchive($event)\"\n      (delete)=\"onDelete($event)\"\n      (filter-change)=\"onFilterChange()\"\n      (collapse-change)=\"onCollapseChange($event)\"\n      (retry)=\"onRetry($event)\"\n      (load-more)=\"onLoadMore()\"\n      (open-change)=\"onOpenChange($event)\"\n      (licensed)=\"onLicensed()\"\n      ><ng-content></ng-content>\n      @if (rowDirective(); as row) {\n        @for (t of threads.threads(); track t.id) {\n          <div [attr.slot]=\"'row:' + t.id\">\n            <ng-container\n              [ngTemplateOutlet]=\"row.template\"\n              [ngTemplateOutletContext]=\"{ $implicit: t }\"\n            ></ng-container>\n          </div>\n        }\n      }\n    </copilotkit-threads-drawer>\n  `,\n})\nexport class CopilotThreadsDrawer {\n  /**\n   * Optional agent id whose threads this drawer lists/manages. Scopes the\n   * {@link injectThreads} store (via the resolved-agent precedence: this input\n   * → ambient config's `agentId` → {@link DEFAULT_AGENT_ID}). NOT forwarded to\n   * the element (the element has no `agentId` property).\n   */\n  readonly agentId = input<string | undefined>();\n\n  /**\n   * Value applied as the `data-testid` attribute on the inner\n   * `<copilotkit-threads-drawer>` element. Defaults to `\"copilot-threads-drawer\"`.\n   */\n  readonly dataTestId = input<string>(\"copilot-threads-drawer\", {\n    alias: \"data-testid\",\n  });\n\n  /**\n   * Optional accessible/region + default-header label forwarded to the element's\n   * `label` property; defaults to the element's own `\"Threads\"` when unset.\n   */\n  readonly label = input<string | undefined>();\n\n  /**\n   * Optional heading for the \"Recent Conversations\" section, forwarded to the\n   * element's `recent-label` attribute; defaults to the element's own\n   * `\"Recent Conversations\"` when unset.\n   */\n  readonly recentLabel = input<string | undefined>();\n\n  /**\n   * Whether the drawer offers a collapse toggle. Pushed onto the element's\n   * `collapsible` PROPERTY (a default-true boolean, exactly like `licensed` — a\n   * string attribute cannot represent it since any non-empty value is truthy).\n   * When `false`, the drawer has no collapse toggle and is always expanded.\n   * Defaults to the element's own `true` when unset.\n   */\n  readonly collapsible = input<boolean | undefined>();\n\n  /**\n   * Emits the new collapsed state whenever the drawer's collapsed state changes\n   * (mirrors the element's `collapse-change` event).\n   */\n  @Output() readonly collapseChange = new EventEmitter<boolean>();\n\n  /**\n   * Optional host override for the thread-select action.\n   *\n   * When provided, this callback is invoked instead of driving\n   * `config.setActiveThreadId`. Bound via `[onThreadSelect]=\"fn\"`.\n   */\n  readonly threadSelectHandler = input<\n    ((threadId: string) => void) | undefined\n  >(undefined, {\n    alias: \"onThreadSelect\",\n  });\n\n  /**\n   * Optional host override for the new-thread action.\n   *\n   * When provided, this callback is invoked instead of driving\n   * `config.startNewThread`. The core `threads.startNewThread()` reset is\n   * always called regardless. Bound via `[onNewThread]=\"fn\"`.\n   */\n  readonly newThreadHandler = input<(() => void) | undefined>(undefined, {\n    alias: \"onNewThread\",\n  });\n\n  /**\n   * Page size for thread pagination. When set, threads load in pages of this\n   * size and the element shows a \"Load more\" control while more remain. When\n   * unset, the full list loads at once and no pagination control shows.\n   */\n  readonly limit = input<number | undefined>();\n\n  /**\n   * Destination the locked view's Upgrade CTA opens in a new tab. Forwarded to\n   * the element's `licenseUrl` property; defaults to the element's built-in\n   * CopilotKit Intelligence docs URL when unset. Set to an empty string to\n   * suppress the default navigation and handle the click via `onLicensed`.\n   */\n  readonly licenseUrl = input<string | undefined>();\n\n  /**\n   * Optional host hook fired when the locked view's Upgrade CTA is clicked. The\n   * element still performs its default navigation unless `licenseUrl` is blank;\n   * use this for telemetry or to drive your own upgrade flow. Bound via\n   * `[onLicensed]=\"fn\"`.\n   */\n  readonly licensedHandler = input<(() => void) | undefined>(undefined, {\n    alias: \"onLicensed\",\n  });\n\n  private readonly config = inject(COPILOT_CHAT_CONFIGURATION, {\n    optional: true,\n  });\n\n  private readonly copilotkit = inject(CopilotKit);\n\n  private readonly drawerRef = viewChild<\n    unknown,\n    ElementRef<CopilotKitThreadsDrawerElement>\n  >(\"drawer\", {\n    read: ElementRef,\n  });\n\n  /**\n   * Optional per-row template directive projected as a direct child of this\n   * component. When present, a `<div slot=\"row:{id}\">` is rendered inside the\n   * `<copilotkit-threads-drawer>` element for each thread, allowing the host to inject\n   * custom light-DOM content into each row slot.\n   */\n  protected readonly rowDirective = contentChild(CopilotThreadsDrawerRow);\n\n  /**\n   * The resolved agent id for the threads store. Precedence:\n   * 1. `agentId` input prop.\n   * 2. Ambient `CopilotChatConfiguration.agentId`.\n   * 3. {@link DEFAULT_AGENT_ID}.\n   */\n  protected readonly resolvedAgentId = computed(\n    () => this.agentId() ?? this.config?.agentId() ?? DEFAULT_AGENT_ID,\n  );\n\n  /**\n   * Normalized license context derived from the core's runtime-reported status,\n   * via the same `@copilotkit/shared` helper the React provider uses.\n   */\n  private readonly licenseContext = computed(() =>\n    createLicenseContextValue(this.copilotkit.licenseStatus()),\n  );\n\n  /**\n   * Two-pronged license gate, mirroring the React wrapper. `checkFeature` fails\n   * OPEN (returns true) when no license is configured, so it cannot by itself\n   * detect the no-license case; we therefore also require a positive\n   * license-present signal. Only a resolved `valid`/`expiring` status counts as\n   * present — a resolved `none`/`expired`/`invalid` gates the drawer to the\n   * locked view.\n   */\n  protected readonly licensed = computed(() => {\n    const ctx = this.licenseContext();\n    const licensePresent = ctx.status === \"valid\" || ctx.status === \"expiring\";\n    return licensePresent && ctx.checkFeature(\"threads\");\n  });\n\n  /**\n   * Whether the runtime has not yet reported a license status. The status is\n   * `null` until the first `/info` response lands; treat that window as\n   * \"not yet unlicensed\" — show the loading state, never the locked view — so a\n   * licensed drawer never flashes (or strands) the Upgrade CTA mid-resolution.\n   */\n  protected readonly licensePending = computed(\n    () => this.licenseContext().status === null,\n  );\n\n  /** Live thread list from the Intelligence platform for the resolved agent. */\n  protected readonly threads = injectThreads({\n    agentId: this.resolvedAgentId,\n    includeArchived: true,\n    limit: this.limit,\n    // While unlicensed, skip the thread fetch entirely: the element shows only\n    // its locked view and no `/threads` request is issued.\n    enabled: this.licensed,\n  });\n\n  /** Thread records mapped to the element's {@link DrawerThread} shape. */\n  protected readonly drawerThreads = computed(() =>\n    this.threads.threads().map(toDrawerThread),\n  );\n\n  /**\n   * User-facing error message from the filtered list error signal, or `null`\n   * when there is no error. Uses `listError` (not `error`) so developer/config\n   * errors (missing runtime URL, runtime without thread endpoints) are excluded\n   * and never displayed to end users.\n   */\n  protected readonly errorMessage = computed(\n    () => this.threads.listError()?.message ?? null,\n  );\n\n  /**\n   * The currently-active thread id, sourced from the ambient chat\n   * configuration, or `null` when no configuration is present.\n   */\n  protected readonly activeThreadId = computed(\n    () => this.config?.threadId() ?? null,\n  );\n\n  /**\n   * User-facing fetch-more error message from the dedicated fetch-more error\n   * signal, or `null`. Drives the element's inline \"couldn't load more — retry\"\n   * panel without disturbing the loaded list or the initial-list `error`.\n   */\n  protected readonly fetchMoreErrorMessage = computed(\n    () => this.threads.fetchMoreError()?.message ?? null,\n  );\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  /**\n   * Provider-less fallback open-state. Without a surrounding chat configuration\n   * there is no shared open-state to bind to, so the wrapper keeps its own\n   * local state. Starts CLOSED — matching the configuration's own default — so\n   * the element does not spring open (and scroll-lock the page on mobile) on\n   * load, and the element's `open-change` events still toggle it.\n   */\n  private readonly localDrawerOpen = signal(false);\n\n  /**\n   * The effective drawer open-state: the ambient chat configuration's\n   * `drawerOpen` when present, else the provider-less {@link localDrawerOpen}.\n   * Pushed onto the element's controlled `open` property in the effect below.\n   */\n  protected readonly drawerOpen = computed(() =>\n    this.config ? this.config.drawerOpen() : this.localDrawerOpen(),\n  );\n\n  constructor() {\n    defineCopilotKitThreadsDrawer();\n\n    // Announce drawer presence to the surrounding chat configuration so a\n    // future header launcher can render, and de-register on destroy. Mirrors\n    // the React (`registerDrawer()` effect) and Vue (`onScopeDispose`) wrappers.\n    const unregisterDrawer = this.config?.registerDrawer();\n    if (unregisterDrawer) {\n      this.destroyRef.onDestroy(unregisterDrawer);\n    }\n\n    // Push signal-derived values onto the element's JS properties every time\n    // any reactive dependency changes. Using an effect (rather than template\n    // bindings) is required because Lit elements accept object/boolean domains\n    // only as JS properties, not as HTML attributes.\n    effect(() => {\n      const el = this.drawerRef()?.nativeElement;\n      if (!el) return;\n      el.threads = this.drawerThreads();\n      // While the license is still resolving, force the loading state so the\n      // element shows its spinner instead of an empty/locked body.\n      el.loading = this.threads.isLoading() || this.licensePending();\n      el.error = this.errorMessage();\n      el.fetchMoreError = this.fetchMoreErrorMessage();\n      el.activeThreadId = this.activeThreadId();\n      el.hasMore = this.threads.hasMoreThreads();\n      el.fetchingMore = this.threads.isFetchingMoreThreads();\n      // Drive the element's controlled `open` from the (config-backed or local)\n      // open-state so the element does not default open=true on load.\n      el.open = this.drawerOpen();\n      // Pending counts as licensed for rendering: the element shows the locked\n      // view only when `licensed` is false, so keeping it true until the status\n      // resolves prevents the locked view from flashing mid-resolution.\n      el.licensed = this.licensed() || this.licensePending();\n      if (this.label() !== undefined) el.label = this.label() as string;\n      const licenseUrl = this.licenseUrl();\n      if (licenseUrl !== undefined) el.licenseUrl = licenseUrl;\n      // `collapsible` is a default-true boolean PROPERTY (like `licensed`);\n      // leave the element's own default in place when the input is unset.\n      const collapsible = this.collapsible();\n      if (collapsible !== undefined) {\n        // TODO(ENT-1051): drop the intersection cast once the published element\n        // type declares `collapsible` (see the local CollapseChangeDetail note).\n        (\n          el as CopilotKitThreadsDrawerElement & { collapsible: boolean }\n        ).collapsible = collapsible;\n      }\n    });\n  }\n\n  /**\n   * Handles the `thread-selected` event from the drawer element.\n   *\n   * When a `threadSelectHandler` override is provided by the host, it is called\n   * exclusively. Otherwise, the ambient chat configuration is driven directly so\n   * a bare `<copilot-threads-drawer>` works without any host wiring.\n   *\n   * @param event - The raw DOM event; cast to `CustomEvent<ThreadSelectedDetail>` to extract `threadId`.\n   */\n  protected onThreadSelected(event: Event): void {\n    const { threadId } = (event as CustomEvent<ThreadSelectedDetail>).detail;\n    const handler = this.threadSelectHandler();\n    if (handler) {\n      handler(threadId);\n    } else {\n      this.config?.setActiveThreadId(threadId, { explicit: true });\n    }\n    // Return focus to the chat input so keyboard users land in the composer.\n    // Scope the lookup to this drawer's own chat (not document-global). Mirrors\n    // the React (`findChatInput(...).focus()`) and Vue (`focusChatInput()`)\n    // wrappers.\n    findChatInput(this.drawerRef()?.nativeElement ?? null)?.focus();\n  }\n\n  /**\n   * Handles the `open-change` event from the drawer element.\n   *\n   * Drives the ambient chat configuration's `setDrawerOpen` when present, else\n   * the provider-less {@link localDrawerOpen} fallback — mirroring the React\n   * and Vue wrappers so the element's open-state stays coordinated.\n   *\n   * @param event - The raw DOM event; cast to `CustomEvent<OpenChangeDetail>` to extract `open`.\n   */\n  protected onOpenChange(event: Event): void {\n    const { open } = (event as CustomEvent<OpenChangeDetail>).detail;\n    if (this.config) {\n      this.config.setDrawerOpen(open);\n    } else {\n      this.localDrawerOpen.set(open);\n    }\n  }\n\n  /**\n   * Handles the `new-thread` event from the drawer element.\n   *\n   * Always resets the core thread store to a fresh, non-explicit client-side\n   * thread first. When a `newThreadHandler` override is provided by the host,\n   * it is called exclusively. Otherwise, the ambient chat configuration is\n   * driven directly so a bare `<copilot-threads-drawer>` works without any host wiring.\n   */\n  protected onNewThread(): void {\n    this.threads.startNewThread();\n    const handler = this.newThreadHandler();\n    if (handler) {\n      handler();\n    } else {\n      this.config?.startNewThread();\n    }\n  }\n\n  /**\n   * Handles the `archive` event from the drawer element.\n   *\n   * Delegates to the threads mutation and logs any failure to the console.\n   *\n   * @param event - The raw DOM event; cast to `CustomEvent<ArchiveDetail>` to extract `threadId`.\n   */\n  protected onArchive(event: Event): void {\n    const { threadId } = (event as CustomEvent<ArchiveDetail>).detail;\n    this.threads.archiveThread(threadId).catch((err) => {\n      console.error(\"CopilotThreadsDrawer: archiveThread failed\", err);\n    });\n  }\n\n  /**\n   * Handles the `unarchive` event from the drawer element.\n   *\n   * Delegates to the threads mutation and logs any failure to the console.\n   *\n   * @param event - The raw DOM event; cast to `CustomEvent<UnarchiveDetail>` to extract `threadId`.\n   */\n  protected onUnarchive(event: Event): void {\n    const { threadId } = (event as CustomEvent<UnarchiveDetail>).detail;\n    this.threads.unarchiveThread(threadId).catch((err) => {\n      console.error(\"CopilotThreadsDrawer: unarchiveThread failed\", err);\n    });\n  }\n\n  /**\n   * Handles the `delete` event from the drawer element.\n   *\n   * Deleting the active thread resets to a fresh, non-explicit thread so the\n   * user is not stranded on a now-gone conversation. Archiving the active\n   * thread keeps the user viewing it.\n   *\n   * The core `threads.startNewThread()` reset is always called when the deleted\n   * thread was active. When a `newThreadHandler` override is provided by the\n   * host, it is called exclusively; otherwise the ambient chat configuration is\n   * driven directly.\n   *\n   * @param event - The raw DOM event; cast to `CustomEvent<DeleteDetail>` to extract `threadId`.\n   */\n  protected onDelete(event: Event): void {\n    const { threadId } = (event as CustomEvent<DeleteDetail>).detail;\n    const wasActive = threadId === this.activeThreadId();\n    this.threads\n      .deleteThread(threadId)\n      .then(() => {\n        if (wasActive) {\n          this.threads.startNewThread();\n          const handler = this.newThreadHandler();\n          if (handler) {\n            handler();\n          } else {\n            this.config?.startNewThread();\n          }\n        }\n      })\n      .catch((err) => {\n        console.error(\"CopilotThreadsDrawer: deleteThread failed\", err);\n      });\n  }\n\n  /**\n   * Handles the `filter-change` event from the drawer element.\n   *\n   * The element owns the Active/All filter; on change we refetch so the list\n   * reflects the server.\n   */\n  protected onFilterChange(): void {\n    this.threads.refetchThreads();\n  }\n\n  /**\n   * Handles the `collapse-change` event from the drawer element — re-emits the\n   * new collapsed state through the component's `collapseChange` output so hosts\n   * can observe (or persist) the drawer's collapsed state.\n   *\n   * @param event - The raw DOM event; cast to `CustomEvent<CollapseChangeDetail>` to extract `collapsed`.\n   */\n  protected onCollapseChange(event: Event): void {\n    const { collapsed } = (event as CustomEvent<CollapseChangeDetail>).detail;\n    this.collapseChange.emit(collapsed);\n  }\n\n  /**\n   * Handles the `retry` event from the drawer element.\n   *\n   * `scope` distinguishes an initial fetch retry from a fetch-more retry so\n   * the correct pagination operation is invoked.\n   *\n   * @param event - The raw DOM event; cast to `CustomEvent<RetryDetail>` to extract `scope`.\n   */\n  protected onRetry(event: Event): void {\n    const { scope } = (event as CustomEvent<RetryDetail>).detail;\n    if (scope === \"fetch-more\") {\n      this.threads.fetchMoreThreads();\n    } else {\n      this.threads.refetchThreads();\n    }\n  }\n\n  /**\n   * Handles the `load-more` event from the drawer element — advances pagination\n   * by fetching the next page. No-op when there is no next page (the element\n   * only surfaces the \"Load more\" control while `hasMoreThreads` is true).\n   */\n  protected onLoadMore(): void {\n    this.threads.fetchMoreThreads();\n  }\n\n  /**\n   * Handles the `licensed` event from the drawer element (Upgrade CTA click).\n   *\n   * The element performs its own default navigation to `licenseUrl`; this hook\n   * lets the host observe the click (e.g. for telemetry) or drive a custom\n   * upgrade flow when provided via `[onLicensed]`.\n   */\n  protected onLicensed(): void {\n    this.licensedHandler()?.();\n  }\n}\n","/** Convert a finite number or non-empty CSS dimension to a safe fallback. */\nexport function dimensionToCss(\n  value: number | string | undefined,\n  fallback: number,\n): string {\n  if (typeof value === \"number\" && Number.isFinite(value)) return `${value}px`;\n  if (typeof value === \"string\" && value.trim().length > 0) return value.trim();\n  return `${fallback}px`;\n}\n","import { CdkTrapFocus } from \"@angular/cdk/a11y\";\nimport { NgComponentOutlet } from \"@angular/common\";\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Type,\n  afterNextRender,\n  computed,\n  input,\n  model,\n  viewChild,\n} from \"@angular/core\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\nimport { CopilotChat } from \"../chat/copilot-chat\";\nimport { dimensionToCss } from \"./modal-utils\";\n\n/** Accessible, responsive floating chat surface with an explicit open model. */\n@Component({\n  selector: \"copilot-popup\",\n  imports: [CdkTrapFocus, NgComponentOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: \"copilot-popup-host\", \"data-copilotkit\": \"\" },\n  template: `\n    <button\n      #launcher\n      type=\"button\"\n      class=\"copilot-modal-toggle\"\n      data-copilot-popup-toggle\n      [attr.aria-controls]=\"dialogId\"\n      [attr.aria-expanded]=\"open()\"\n      [attr.aria-label]=\"open() ? 'Close Copilot chat' : 'Open Copilot chat'\"\n      [tabIndex]=\"open() ? -1 : 0\"\n      (click)=\"toggle()\"\n    >\n      <span aria-hidden=\"true\">{{ open() ? \"×\" : \"✦\" }}</span>\n    </button>\n\n    @if (open()) {\n      <div\n        class=\"copilot-modal-backdrop\"\n        data-copilot-popup-backdrop\n        aria-hidden=\"true\"\n        (click)=\"closeFromBackdrop()\"\n      ></div>\n      <section\n        cdkTrapFocus\n        [cdkTrapFocusAutoCapture]=\"true\"\n        class=\"copilot-popup-window copilotKitPopup\"\n        role=\"dialog\"\n        aria-modal=\"true\"\n        [attr.id]=\"dialogId\"\n        [attr.aria-labelledby]=\"headerComponent() ? null : titleId\"\n        [attr.aria-label]=\"headerComponent() ? title() : null\"\n        [style.--copilot-popup-width]=\"resolvedWidth()\"\n        [style.--copilot-popup-height]=\"resolvedHeight()\"\n        (keydown.escape)=\"close()\"\n      >\n        <header class=\"copilot-modal-header\">\n          @if (headerComponent(); as header) {\n            <ng-container [ngComponentOutlet]=\"header\" />\n          } @else {\n            <h2 [attr.id]=\"titleId\">{{ title() }}</h2>\n          }\n          <button\n            #initialFocus\n            type=\"button\"\n            cdkFocusInitial\n            aria-label=\"Close Copilot chat\"\n            (click)=\"close()\"\n          >\n            <span aria-hidden=\"true\">×</span>\n          </button>\n        </header>\n        <div class=\"copilot-modal-chat\">\n          <ng-container [ngComponentOutlet]=\"chatComponent()\" />\n        </div>\n      </section>\n    }\n  `,\n  styles: `\n    :host {\n      display: contents;\n    }\n    .copilot-modal-toggle {\n      position: fixed;\n      right: max(1.5rem, env(safe-area-inset-right));\n      bottom: max(1.5rem, env(safe-area-inset-bottom));\n      z-index: 1202;\n      display: grid;\n      width: 3.25rem;\n      height: 3.25rem;\n      place-items: center;\n      border: 0;\n      border-radius: 999px;\n      color: white;\n      background: #111827;\n      box-shadow: 0 12px 30px rgb(15 23 42 / 24%);\n      cursor: pointer;\n    }\n    .copilot-modal-toggle:focus-visible,\n    .copilot-modal-header button:focus-visible {\n      outline: 3px solid #2563eb;\n      outline-offset: 3px;\n    }\n    .copilot-modal-backdrop {\n      position: fixed;\n      inset: 0;\n      z-index: 1200;\n      background: rgb(15 23 42 / 24%);\n    }\n    .copilot-popup-window {\n      position: fixed;\n      right: max(1.5rem, env(safe-area-inset-right));\n      bottom: max(6rem, calc(4.5rem + env(safe-area-inset-bottom)));\n      z-index: 1201;\n      display: grid;\n      width: min(var(--copilot-popup-width), calc(100vw - 3rem));\n      height: min(var(--copilot-popup-height), calc(100dvh - 7.5rem));\n      grid-template-rows: auto minmax(0, 1fr);\n      overflow: hidden;\n      border: 1px solid #dbe3eb;\n      border-radius: 1rem;\n      color: #111827;\n      background: white;\n      box-shadow: 0 24px 60px rgb(15 23 42 / 28%);\n    }\n    .copilot-modal-header {\n      display: flex;\n      min-height: 3.5rem;\n      align-items: center;\n      justify-content: space-between;\n      gap: 1rem;\n      padding: 0.75rem 1rem;\n      border-bottom: 1px solid #e2e8f0;\n    }\n    .copilot-modal-header h2 {\n      margin: 0;\n      font-size: 1rem;\n    }\n    .copilot-modal-header button {\n      border: 0;\n      color: inherit;\n      background: transparent;\n      font-size: 1.5rem;\n      cursor: pointer;\n    }\n    .copilot-modal-chat {\n      min-height: 0;\n      overflow: hidden;\n    }\n    @media (max-width: 47.999rem) {\n      .copilot-popup-window {\n        inset: 0;\n        width: 100%;\n        height: 100dvh;\n        border: 0;\n        border-radius: 0;\n        padding: env(safe-area-inset-top) env(safe-area-inset-right)\n          env(safe-area-inset-bottom) env(safe-area-inset-left);\n      }\n    }\n    @media (prefers-reduced-motion: no-preference) {\n      .copilot-popup-window {\n        animation: copilot-popup-enter 180ms ease-out;\n      }\n      @keyframes copilot-popup-enter {\n        from {\n          opacity: 0;\n          transform: translateY(1rem) scale(0.98);\n        }\n      }\n    }\n    @media (prefers-reduced-motion: reduce) {\n      .copilot-popup-window {\n        animation: none;\n      }\n    }\n  `,\n})\nexport class CopilotPopup {\n  readonly open = model(true);\n  readonly title = input(\"Copilot\");\n  readonly width = input<number | string>(420);\n  readonly height = input<number | string>(560);\n  readonly clickOutsideToClose = input(false);\n  readonly chatComponent = input<Type<unknown>>(CopilotChat);\n  readonly headerComponent = input<Type<unknown> | undefined>();\n\n  protected readonly dialogId = `copilot-popup-${randomUUID()}`;\n  protected readonly titleId = `${this.dialogId}-title`;\n  protected readonly resolvedWidth = computed(() =>\n    dimensionToCss(this.width(), 420),\n  );\n  protected readonly resolvedHeight = computed(() =>\n    dimensionToCss(this.height(), 560),\n  );\n  private readonly launcher =\n    viewChild.required<ElementRef<HTMLButtonElement>>(\"launcher\");\n  private readonly initialFocus =\n    viewChild<ElementRef<HTMLButtonElement>>(\"initialFocus\");\n\n  constructor() {\n    afterNextRender(() => {\n      if (this.open()) this.focusModal();\n    });\n  }\n\n  protected toggle(): void {\n    if (this.open()) this.close();\n    else {\n      this.open.set(true);\n      queueMicrotask(() => this.focusModal());\n    }\n  }\n\n  protected closeFromBackdrop(): void {\n    if (this.clickOutsideToClose()) this.close();\n  }\n\n  protected close(): void {\n    if (!this.open()) return;\n    this.open.set(false);\n    queueMicrotask(() =>\n      this.launcher().nativeElement.focus({ preventScroll: true }),\n    );\n  }\n\n  private focusModal(): void {\n    this.initialFocus()?.nativeElement.focus({ preventScroll: true });\n  }\n}\n","import { DOCUMENT } from \"@angular/common\";\nimport { Injectable, inject } from \"@angular/core\";\n\n/** Coordinates the single document-level layout reservation for docked sidebars. */\n@Injectable({ providedIn: \"root\" })\nexport class DockedSidebarRegistry {\n  private readonly document = inject(DOCUMENT);\n  private owner: symbol | undefined;\n  private originalMarginInlineStart = \"\";\n  private originalMarginInlineEnd = \"\";\n\n  /** Acquire document docking ownership for one component instance. */\n  acquire(candidate: symbol): boolean {\n    if (this.owner !== undefined && this.owner !== candidate) return false;\n    if (this.owner === undefined) {\n      this.originalMarginInlineStart =\n        this.document.body.style.marginInlineStart;\n      this.originalMarginInlineEnd = this.document.body.style.marginInlineEnd;\n      this.owner = candidate;\n    }\n    return true;\n  }\n\n  /** Apply the owned sidebar's logical position and width. */\n  update(candidate: symbol, position: \"left\" | \"right\", width: string): void {\n    if (this.owner !== candidate) return;\n    this.document.body.style.marginInlineStart =\n      position === \"left\" ? width : this.originalMarginInlineStart;\n    this.document.body.style.marginInlineEnd =\n      position === \"right\" ? width : this.originalMarginInlineEnd;\n  }\n\n  /** Release ownership and restore the pre-existing document margins exactly. */\n  release(candidate: symbol): void {\n    if (this.owner !== candidate) return;\n    this.document.body.style.marginInlineStart = this.originalMarginInlineStart;\n    this.document.body.style.marginInlineEnd = this.originalMarginInlineEnd;\n    this.owner = undefined;\n  }\n}\n","import { CdkTrapFocus } from \"@angular/cdk/a11y\";\nimport { DOCUMENT, NgComponentOutlet, NgTemplateOutlet } from \"@angular/common\";\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  ElementRef,\n  PLATFORM_ID,\n  Type,\n  afterNextRender,\n  computed,\n  effect,\n  inject,\n  input,\n  model,\n  signal,\n  viewChild,\n} from \"@angular/core\";\nimport { isPlatformBrowser } from \"@angular/common\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\nimport { CopilotChat } from \"../chat/copilot-chat\";\nimport { DockedSidebarRegistry } from \"./docked-sidebar-registry\";\nimport { dimensionToCss } from \"./modal-utils\";\n\nexport type CopilotSidebarMode = \"docked\" | \"overlay\";\nexport type CopilotSidebarPosition = \"left\" | \"right\";\n\n/** Responsive chat sidebar with independent overlay and single-owner docked modes. */\n@Component({\n  selector: \"copilot-sidebar\",\n  imports: [CdkTrapFocus, NgComponentOutlet, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: \"copilot-sidebar-host\", \"data-copilotkit\": \"\" },\n  template: `\n    <button\n      #launcher\n      type=\"button\"\n      class=\"copilot-sidebar-toggle\"\n      data-copilot-sidebar-toggle\n      [class.position-left]=\"position() === 'left'\"\n      [attr.aria-controls]=\"sidebarId\"\n      [attr.aria-expanded]=\"open()\"\n      [attr.aria-label]=\"open() ? 'Close Copilot sidebar' : 'Open Copilot sidebar'\"\n      [tabIndex]=\"open() ? -1 : 0\"\n      (click)=\"toggle()\"\n    >\n      <span aria-hidden=\"true\">{{ open() ? \"×\" : \"✦\" }}</span>\n    </button>\n\n    @if (open() && isModal()) {\n      <div\n        class=\"copilot-sidebar-backdrop\"\n        data-copilot-sidebar-backdrop\n        aria-hidden=\"true\"\n        (click)=\"closeFromBackdrop()\"\n      ></div>\n      <section\n        cdkTrapFocus\n        [cdkTrapFocusAutoCapture]=\"true\"\n        class=\"copilot-sidebar-window copilotKitSidebar modal\"\n        data-copilot-sidebar\n        role=\"dialog\"\n        aria-modal=\"true\"\n        [attr.id]=\"sidebarId\"\n        [attr.data-position]=\"position()\"\n        [attr.aria-labelledby]=\"headerComponent() ? null : titleId\"\n        [attr.aria-label]=\"headerComponent() ? title() : null\"\n        [style.--copilot-sidebar-width]=\"resolvedWidth()\"\n        (keydown.escape)=\"close()\"\n      >\n        <ng-container [ngTemplateOutlet]=\"sidebarContents\" />\n      </section>\n    } @else if (open() && dockAccepted()) {\n      <aside\n        class=\"copilot-sidebar-window copilotKitSidebar docked\"\n        data-copilot-sidebar\n        role=\"complementary\"\n        [attr.id]=\"sidebarId\"\n        [attr.data-position]=\"position()\"\n        [attr.aria-labelledby]=\"headerComponent() ? null : titleId\"\n        [attr.aria-label]=\"headerComponent() ? title() : null\"\n        [style.--copilot-sidebar-width]=\"resolvedWidth()\"\n      >\n        <ng-container [ngTemplateOutlet]=\"sidebarContents\" />\n      </aside>\n    }\n\n    <ng-template #sidebarContents>\n      <header class=\"copilot-sidebar-header\">\n        @if (headerComponent(); as header) {\n          <ng-container [ngComponentOutlet]=\"header\" />\n        } @else {\n          <h2 [attr.id]=\"titleId\">{{ title() }}</h2>\n        }\n        <button\n          #initialFocus\n          type=\"button\"\n          cdkFocusInitial\n          aria-label=\"Close Copilot sidebar\"\n          (click)=\"close()\"\n        >\n          <span aria-hidden=\"true\">×</span>\n        </button>\n      </header>\n      <div class=\"copilot-sidebar-chat\">\n        <ng-container [ngComponentOutlet]=\"chatComponent()\" />\n      </div>\n    </ng-template>\n  `,\n  styles: `\n    :host {\n      display: contents;\n    }\n    .copilot-sidebar-toggle {\n      position: fixed;\n      right: max(1.5rem, env(safe-area-inset-right));\n      bottom: max(1.5rem, env(safe-area-inset-bottom));\n      z-index: 1202;\n      display: grid;\n      width: 3.25rem;\n      height: 3.25rem;\n      place-items: center;\n      border: 0;\n      border-radius: 999px;\n      color: white;\n      background: #111827;\n      box-shadow: 0 12px 30px rgb(15 23 42 / 24%);\n      cursor: pointer;\n    }\n    .copilot-sidebar-toggle.position-left {\n      right: auto;\n      left: max(1.5rem, env(safe-area-inset-left));\n    }\n    .copilot-sidebar-toggle:focus-visible,\n    .copilot-sidebar-header button:focus-visible {\n      outline: 3px solid #2563eb;\n      outline-offset: 3px;\n    }\n    .copilot-sidebar-backdrop {\n      position: fixed;\n      inset: 0;\n      z-index: 1200;\n      background: rgb(15 23 42 / 24%);\n    }\n    .copilot-sidebar-window {\n      position: fixed;\n      top: 0;\n      bottom: 0;\n      z-index: 1201;\n      display: grid;\n      width: min(var(--copilot-sidebar-width), 100vw);\n      grid-template-rows: auto minmax(0, 1fr);\n      overflow: hidden;\n      color: #111827;\n      background: white;\n      box-shadow: 0 0 42px rgb(15 23 42 / 20%);\n      padding-top: env(safe-area-inset-top);\n      padding-bottom: env(safe-area-inset-bottom);\n    }\n    .copilot-sidebar-window[data-position=\"left\"] {\n      left: 0;\n      border-right: 1px solid #dbe3eb;\n    }\n    .copilot-sidebar-window[data-position=\"right\"] {\n      right: 0;\n      border-left: 1px solid #dbe3eb;\n    }\n    .copilot-sidebar-header {\n      display: flex;\n      min-height: 3.5rem;\n      align-items: center;\n      justify-content: space-between;\n      gap: 1rem;\n      padding: 0.75rem 1rem;\n      border-bottom: 1px solid #e2e8f0;\n    }\n    .copilot-sidebar-header h2 {\n      margin: 0;\n      font-size: 1rem;\n    }\n    .copilot-sidebar-header button {\n      border: 0;\n      color: inherit;\n      background: transparent;\n      font-size: 1.5rem;\n      cursor: pointer;\n    }\n    .copilot-sidebar-chat {\n      min-height: 0;\n      overflow: hidden;\n    }\n    @media (max-width: 47.999rem) {\n      .copilot-sidebar-window {\n        width: 100%;\n      }\n    }\n    @media (prefers-reduced-motion: no-preference) {\n      .copilot-sidebar-window {\n        animation: copilot-sidebar-enter 220ms ease-out;\n      }\n      @keyframes copilot-sidebar-enter {\n        from {\n          opacity: 0;\n          transform: translateX(8%);\n        }\n      }\n    }\n    @media (prefers-reduced-motion: reduce) {\n      .copilot-sidebar-window {\n        animation: none;\n      }\n    }\n  `,\n})\nexport class CopilotSidebar {\n  readonly open = model(true);\n  readonly mode = input<CopilotSidebarMode>(\"docked\");\n  readonly position = input<CopilotSidebarPosition>(\"right\");\n  readonly width = input<number | string>(480);\n  readonly title = input(\"Copilot\");\n  readonly clickOutsideToClose = input(false);\n  readonly chatComponent = input<Type<unknown>>(CopilotChat);\n  readonly headerComponent = input<Type<unknown> | undefined>();\n\n  protected readonly sidebarId = `copilot-sidebar-${randomUUID()}`;\n  protected readonly titleId = `${this.sidebarId}-title`;\n  protected readonly resolvedWidth = computed(() =>\n    dimensionToCss(this.width(), 480),\n  );\n  protected readonly isCompact = signal(false);\n  protected readonly isModal = computed(\n    () => this.mode() === \"overlay\" || this.isCompact(),\n  );\n  protected readonly dockAccepted = signal(true);\n\n  private readonly owner = Symbol(\"copilot-sidebar\");\n  private readonly registry = inject(DockedSidebarRegistry);\n  private readonly document = inject(DOCUMENT);\n  private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly launcher =\n    viewChild.required<ElementRef<HTMLButtonElement>>(\"launcher\");\n  private readonly initialFocus =\n    viewChild<ElementRef<HTMLButtonElement>>(\"initialFocus\");\n  private ownsDock = false;\n\n  constructor() {\n    afterNextRender(() => {\n      if (this.open() && this.isModal()) this.focusModal();\n      const media = this.document.defaultView?.matchMedia?.(\n        \"(max-width: 47.999rem)\",\n      );\n      if (!media) return;\n      const update = () => this.isCompact.set(media.matches);\n      update();\n      media.addEventListener(\"change\", update);\n      this.destroyRef.onDestroy(() =>\n        media.removeEventListener(\"change\", update),\n      );\n    });\n\n    effect(() => {\n      const shouldDock = this.isBrowser && this.open() && !this.isModal();\n      if (!shouldDock) {\n        this.releaseDock();\n        this.dockAccepted.set(true);\n        return;\n      }\n      if (!this.ownsDock) {\n        this.ownsDock = this.registry.acquire(this.owner);\n        this.dockAccepted.set(this.ownsDock);\n        if (!this.ownsDock) {\n          console.warn(\n            \"[CopilotKit] Only one docked CopilotSidebar may be open per document.\",\n          );\n          return;\n        }\n      }\n      this.registry.update(this.owner, this.position(), this.resolvedWidth());\n    });\n\n    this.destroyRef.onDestroy(() => this.releaseDock());\n  }\n\n  protected toggle(): void {\n    if (this.open()) this.close();\n    else {\n      this.open.set(true);\n      queueMicrotask(() => {\n        if (this.isModal()) this.focusModal();\n      });\n    }\n  }\n\n  protected closeFromBackdrop(): void {\n    if (this.clickOutsideToClose()) this.close();\n  }\n\n  protected close(): void {\n    if (!this.open()) return;\n    this.open.set(false);\n    queueMicrotask(() =>\n      this.launcher().nativeElement.focus({ preventScroll: true }),\n    );\n  }\n\n  private releaseDock(): void {\n    if (!this.ownsDock) return;\n    this.registry.release(this.owner);\n    this.ownsDock = false;\n  }\n\n  private focusModal(): void {\n    this.initialFocus()?.nativeElement.focus({ preventScroll: true });\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵInterruptState","randomUUID","ɵcreateThreadStore","ɵselectThreads","ɵselectThreadsIsLoading","ɵselectThreadsError","ɵselectFetchMoreError","ɵselectHasNextPage","ɵselectIsFetchingNextPage","ɵselectIsMutating","ɵselectMemories","ɵselectMemoriesIsLoading","ɵselectMemoriesError","ɵselectMemoriesAvailable","ɵselectMemoriesRealtimeStatus","i1","filter","i1.CopilotTooltip","i1.ResizeObserverService","i2.CopilotChatViewHandlers","i3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACO,MAAM,yBAAyB,GAAG,KAAK;AAE9C,MAAM,YAAY,GAAG,8BAA8B;AACnD,MAAM,WAAW,GAAG,+BAA+B;AACnD,MAAM,iBAAiB,GAAG,wBAAwB;AAElD,SAAS,qBAAqB,CAAC,OAAgC,EAAA;AAC7D,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,KAAK;AAC1B,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IAChC,OAAO,OAAO,CAAC,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD;AAEM,SAAU,sBAAsB,CAAC,OAAgC,EAAA;IACrE,IAAI,CAAC,yBAAyB,EAAE;QAC9B;IACF;IAEA,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE;QACrE;IACF;AAEA,IAAA,IAAI,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;QACzC;IACF;IAEA,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/C,IAAA,SAAS,CAAC,EAAE,GAAG,YAAY;AAC3B,IAAA,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;AAC7C,IAAA,SAAS,CAAC,WAAW,GAAG,uBAAuB;AAC/C,IAAA,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AAClC,IAAA,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AAC9B,IAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC/B,IAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY;AACrC,IAAA,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACtC,IAAA,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;AACnC,IAAA,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU;AACpC,IAAA,SAAS,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK;AACpC,IAAA,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,wBAAwB;AACrD,IAAA,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS;IACjC,SAAS,CAAC,KAAK,CAAC,UAAU;AACxB,QAAA,kEAAkE;AACpE,IAAA,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM;AACjC,IAAA,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK;AAClC,IAAA,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ;AACxC,IAAA,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK;AAC/B,IAAA,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,gCAAgC;AAE5D,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AACtC;;ACKA,MAAM,mCAAmC,GAAG,+BAA+B;AAC3E,MAAM,kCAAkC,GAAG,wBAAwB;AACnE,MAAM,0BAA0B,GAAG,2CAA2C;AAQ9E,SAAS,0BAA0B,CAAC,OAAe,EAAA;IACjD,MAAM,YAAY,GAAG,UAEpB;AACD,IAAA,IAAI,YAAY,CAAC,0BAA0B,CAAC,EAAE;QAC5C;IACF;AACA,IAAA,YAAY,CAAC,0BAA0B,CAAC,GAAG,IAAI;IAE/C,OAAO,CAAC,IAAI,CACV;QACE,0CAA0C;QAC1C,+BAA+B;QAC/B,OAAO;QACP,wFAAwF;QACxF,0CAA0C;AAC3C,KAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CACb;AACH;AAEA,SAAS,cAAc,CAAC,MAAwB,EAAA;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,GAAG,mCAAmC,CAAC;AACvE,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,IAAI,SAAS;IAE1C,IAAI,CAAC,GAAG,EAAE;QACR,OAAO;AACL,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EACL,sFAAsF;SACzF;IACH;IAEA,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACjD,OAAO;YACL,GAAG;AACH,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EACL,sGAAsG;SACzG;IACH;AAEA,IAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7B;MAEa,kBAAkB,GAAG,IAAI,cAAc,CAClD,oBAAoB;SAGN,sBAAsB,GAAA;AACpC,IAAA,OAAO,MAAM,CAAC,kBAAkB,CAAC;AACnC;AAEM,SAAU,iBAAiB,CAAC,MAAwB,EAAA;AACxD,IAAA,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC;AAC9C,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE;AACpC,IAAA,IACE,yBAAyB;QACzB,CAAC,eAAe,CAAC,KAAK;QACtB,eAAe,CAAC,OAAO,EACvB;AACA,QAAA,0BAA0B,CAAC,eAAe,CAAC,OAAO,CAAC;IACrD;AAEA,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,mCAAmC;AAC/D,UAAE;UACA,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC;AAC3C,cAAE;AACF,cAAE;AACE,gBAAA,GAAG,OAAO;AACV,gBAAA,CAAC,mCAAmC,GAAG,eAAe,CAAC,GAAG;aAC3D;IAEP,OAAO;AACL,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,MAAM;AACT,YAAA,OAAO,EAAE,aAAa;AACvB,SAAA;KACF;AACH;;AChHA;;;;;AAKG;AACI,MAAM,uCAAuC,GAAG,IAAI,cAAc,CAEvE,wCAAwC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;AAE1D,MAAM,wBAAwB,GAA0C;AAC7E,IAAA,SAAS,EAAE,CAAC,OAAgB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;;AAGrE;AACM,SAAU,6BAA6B,CAC3C,MAAmC,EAAA;AAEnC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,IAAA,UAAU,CAAC,wBAAwB,CAAC,MAAM,CAAC;AAC3C,IAAA,UAAU,CAAC,SAAS,CAAC,MAAM,UAAU,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC5E;;MCnDa,cAAc,CAAA;AACzB,IAAA,OAAO,GAAG,IAAI,OAAO,EAIjB;AAEJ,IAAA,SAAS,CAAC,UAAkB,EAAE,QAAgB,EAAE,MAAe,EAAA;AAC7D,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACrD;IAEA,QAAQ,CAAC,UAAkB,EAAE,QAAgB,EAAA;AAC3C,QAAA,OAAO,aAAa,CAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,MAAM,CACJ,CAAC,MAAM,KACL,MAAM,CAAC,UAAU,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CACnE,EACD,IAAI,CAAC,CAAC,CAAC,CACR,CACF;IACH;wGArBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACa3B,MAAM,mBAAmB,GAAG,iBAAiB;AAsBpD,IAAI,aAAwC;SAE5B,2BAA2B,GAAA;AACzC,IAAA,IAAI,OAAO,UAAU,CAAC,cAAc,KAAK,WAAW,EAAE;AACpD,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE;IAC1B;IACA,aAAa;QACX,OAAO,iDAAiD,CAAC,CAAC,IAAI,CAC5D,OAAO,GAAG,KAAI;YACZ,GAAG,CAAC,uBAAuB,EAAE;AAC7B,YAAA,MAAM,cAAc,CAAC,WAAW,CAAC,kBAAkB,CAAC;AACpD,YAAA,MAAM,OAAO,CAAC,OAAO,EAAE;AACzB,QAAA,CAAC,CACF;AACH,IAAA,OAAO,aAAa;AACtB;AAEM,SAAU,QAAQ,CAAC,KAAc,EAAA;AACrC,IAAA,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E;AAEM,SAAU,iBAAiB,CAAC,OAAgB,EAAA;AAChD,IAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,EAAE;IAEjC,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,UAAU;AACrE,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AAAE,QAAA,OAAO,EAAE;AACzC,IAAA,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;AACpC;SAEgB,eAAe,CAC7B,OAA8C,EAC9C,UAA2B,EAC3B,MAA8B,EAAA;AAE9B,IAAA,IAAI,CAAC,OAAO;QAAE;AACd,IAAA,OAAO,CAAC,UAAU,GAAG,UAAU;IAC/B,OAAO,CAAC,OAAO,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO;IACvC,OAAO,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK;IACnC,OAAO,CAAC,gBAAgB,GAAG,MAAM,EAAE,IAAI,EAAE,gBAAgB;AAC3D;AAEA;;;;;;AAMG;AACG,SAAU,kBAAkB,CAAC,OAKlC,EAAA;IACC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;IAC3D,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,cAAc,KAAK,WAAW;IAClE,IAAI,SAAS,GAAG,KAAK;AACrB,IAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;QAChC,SAAS,GAAG,IAAI;AAClB,IAAA,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,OAAO,GAAG,UAAU,EAAE,EAAE,aAAa,KAAU;QAC3D,IAAI,SAAS,IAAI,CAAC,OAAO;YAAE;AAC3B,QAAA,MAAM,cAAc,GAAG,UAAU,EAAE;AACnC,QAAA,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC;QAChD,IAAI,SAAS,IAAI,OAAO,IAAI,2BAA2B,CAAC,cAAc,CAAC,EAAE;AACvE,YAAA,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAK;AAC3D,gBAAA,IAAI,CAAC,SAAS;AAAE,oBAAA,OAAO,EAAE;AAC3B,YAAA,CAAC,CAAC;QACJ;AACF,IAAA,CAAC;IAED,IAAI,SAAS,EAAE;QACb,KAAK,2BAA2B,EAAE,CAAC,IAAI,CACrC,MAAM,IAAI,EAAE,EACZ,CAAC,KAAc,KACb,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CACtE;IACH;AAEA,IAAA,iBAAiB,CAAC;QAChB,KAAK,EAAE,MAAK;AACV,YAAA,UAAU,EAAE;AACZ,YAAA,MAAM,OAAO,GAAG,UAAU,EAAE;AAC5B,YAAA,IAAI,CAAC,OAAO;gBAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7B,CAAC;AACF,KAAA,CAAC;AACJ;AAEA;AACM,SAAU,2BAA2B,CACzC,UAAoC,EAAA;AAEpC,IAAA,MAAM,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,KACtD,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CACxC;AACD,IAAA,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,KAAK;AAClD,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC3E,IAAA,IAAI,CAAC,YAAY;AAAE,QAAA,OAAO,IAAI;AAC9B,IAAA,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,KAAI;AACnC,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK;QACjE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAC/C,KAAK,CAAC,OAAO,CAAC,KAAK;AACjB,cAAE,KAAK,CAAC,MAAM,GAAG;AACjB,cAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAC1D;AACH,IAAA,CAAC,CAAC;AACJ;AAEM,SAAU,kBAAkB,CAAC,KAAY,EAAA;IAC7C,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAG,KAAqB,CAAC,MAAM,CAAC;AAC7E;AAEO,eAAe,gBAAgB,CACpC,UAAqD,EACrD,KAAgC,EAChC,MAAe,EAAA;AAEf,IAAA,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK;QAAE;AAE3B,IAAA,IAAI;AACF,QAAA,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;AAC5B,YAAA,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU;AAC7B,YAAA,UAAU,EAAE,MAAM;AACnB,SAAA,CAAC;QACF,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IAC3C;YAAU;AACR,QAAA,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU;AACvE,QAAA,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IACrC;AACF;;AChKA;AACM,SAAU,aAAa,CAAC,KAAc,EAAA;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,KAAK;AAC3C,IAAA,MAAM,IAAI,GAAG,IAAI,OAAO,EAAU;AAClC,IAAA,IAAI;AACF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAC/B,KAAK,EACL,CAAC,IAAI,EAAE,SAAkB,KAAI;YAC3B,IAAI,OAAO,SAAS,KAAK,QAAQ;AAAE,gBAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG;YACpE,IAAI,OAAO,SAAS,KAAK,WAAW;AAAE,gBAAA,OAAO,aAAa;YAC1D,IAAI,OAAO,SAAS,KAAK,UAAU;AAAE,gBAAA,OAAO,YAAY;YACxD,IAAI,OAAO,SAAS,KAAK,QAAQ;AAAE,gBAAA,OAAO,SAAS,CAAC,QAAQ,EAAE;YAC9D,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;AACvD,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AAAE,oBAAA,OAAO,YAAY;AAC5C,gBAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YACrB;AACA,YAAA,OAAO,SAAS;QAClB,CAAC,EACD,CAAC,CACF;AACD,QAAA,OAAO,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC;IACpC;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,wBAAwB;IACjC;AACF;AAEA;MAgGa,0BAA0B,CAAA;AAC5B,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAmB;AAClC,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AACxB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,yDACpC;AACkB,IAAA,UAAU,GAAG,QAAQ,CAAC,MACvC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,sDACtC;AACkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAgB;AACtC,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAgB;AACzC,YAAA;AACE,gBAAA,OAAO,SAAS;;AAEtB,IAAA,CAAC,uDAAC;AACiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAgB;AACtC,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,UAAU;AACnB,YAAA;AACE,gBAAA,OAAO,gBAAgB;;AAE7B,IAAA,CAAC,uDAAC;IAEQ,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC;IACzC;wGAnCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3F3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+0BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA0DU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA/FtC,SAAS;+BACE,+BAA+B,EAAA,eAAA,EACxB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,KAAK,EAAE,+BAA+B,EAAE,EAAA,QAAA,EACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+0BAAA,CAAA,EAAA;;;ACxEH;;;;AAIG;MAwOU,mBAAmB,CAAA;AACrB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;AAChC,IAAA,MAAM,GAAG,KAAK,CAAC,CAAC,kDAAC;AACjB,IAAA,KAAK,GAAG,KAAK,CAAC,oBAAoB,iDAAC;IAElC,cAAc,GAAA;QACtB,OAAO;YACL,kBAAkB;YAClB,UAAU;YACV,WAAW;YACX,kBAAkB;AAClB,YAAA,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,iBAAiB,GAAG,gBAAgB;AACzD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;IAEU,QAAQ,CAAC,KAAa,EAAE,UAAkB,EAAA;QAClD,OAAO;YACL,kBAAkB;YAClB,UAAU;AACV,YAAA,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,GAAG,iBAAiB,GAAG,eAAe;AAC5D,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;wGArBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApOpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ggDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA2HU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAvO/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,eAAA,EAChB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyGT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,ggDAAA,CAAA,EAAA;;;ACnFH;AACM,SAAU,wBAAwB,CACtC,OAAgB,EAAA;AAEhB,IAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;AACrD,IAAA,MAAM,MAAM,GACV,OAAO,CAAC,QAAQ,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK;AACxD,UAAE,OAAO,CAAC,QAAQ;UAChB,UAAU;AAChB,IAAA,MAAM,aAAa,GACjB,OAAO,CAAC,eAAe,CAAC,KAAK,QAAQ;AACrC,QAAA,OAAO,CAAC,eAAe,CAAC,KAAK,SAAS;AACtC,QAAA,OAAO,CAAC,eAAe,CAAC,KAAK;AAC3B,UAAE,OAAO,CAAC,eAAe;UACvB,SAAS;IACf,OAAO;QACL,MAAM;AACN,QAAA,OAAO,EACL,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS;AACzE,QAAA,WAAW,EACT,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK;AAChC,cAAE,OAAO,CAAC,aAAa;AACvB,cAAE,SAAS;AACf,QAAA,cAAc,EACZ,OAAO,OAAO,CAAC,gBAAgB,CAAC,KAAK;AACnC,cAAE,OAAO,CAAC,gBAAgB;AAC1B,cAAE,SAAS;AACf,QAAA,KAAK,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS;QAC1E,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS;QACxE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;AACzC,cAAE,OAAO,CAAC,UAAU;AACpB,cAAE,SAAS;QACb,aAAa;KACd;AACH;AAEA;MA2Ea,mBAAmB,CAAA;AACrB,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAW;IACnC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAmC;AAClD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,qDAAC;AACpE,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;IAC7B,aAAa,GAAG,QAAQ,CAC/B,MACE,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa;AAC9B,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AAC7B,QAAA,WAAW,yDACd;AACQ,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AAC5D,YAAA,OAAO,oBAAoB;QAC7B;AACA,QAAA,OAAO,SAAS,CAAC,OAAO,KAAK,SAAS;YACpC,SAAS,CAAC,WAAW,KAAK;cACxB,yBAAyB,SAAS,CAAC,OAAO,CAAA,CAAA,EAAI,SAAS,CAAC,WAAW,CAAA,UAAA;cACnE,sBAAsB;AAC5B,IAAA,CAAC,iDAAC;AACO,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,cAAc;QAC9C,IAAI,MAAM,KAAK,SAAS;AAAE,YAAA,OAAO,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE;AAAE,YAAA,OAAO,CAAC;QACzB,IAAI,MAAM,GAAG,GAAG;AAAE,YAAA,OAAO,CAAC;QAC1B,IAAI,MAAM,GAAG,GAAG;AAAE,YAAA,OAAO,CAAC;AAC1B,QAAA,OAAO,CAAC;AACV,IAAA,CAAC,iDAAC;AACO,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MACrC,aAAa,CAAC;AACZ,QAAA,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK;AAC7B,QAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ;AACpC,KAAA,CAAC,8DACH;AACQ,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,aAAa,CAAC;AACZ,QAAA,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO;AACjC,QAAA,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM;AAChC,KAAA,CAAC,4DACH;AACQ,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAE/B,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU;gBAAE;AAErC,YAAA,MAAM,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,IAAI,CAAC;AACzD,YAAA,IACE,SAAS,CAAC,OAAO,KAAK,SAAS;AAC/B,gBAAA,SAAS,CAAC,OAAO,IAAI,iBAAiB,EACtC;AACA,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC5B;YACF;AACA,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAE;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAC3C,UAAU,CAAC,UAAU,CACnB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EACxD,OAAO,EAAE,WAAW,IAAI,IAAI,CAC7B,CACF;YACD,SAAS,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACnD,QAAA,CAAC,CAAC;IACJ;wGApEW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EArCS,mBAAmB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAwElB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA1E/B,SAAS;+BACE,uBAAuB,EAAA,OAAA,EACxB,CAAC,mBAAmB,CAAC,mBACb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,yYAAA,CAAA,EAAA;;;MCzBU,2BAA2B,CAAA;AAC7B,IAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,uDAAU;AACvC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAW;AACnC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAmB;IAC3C,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA6B;AAElC,IAAA,UAAU,GAAG,SAAS,CAGrC,SAAS,8CAAI,IAAI,EAAE,UAAU,EAAA,CAAA,GAAA,CAAlB,EAAE,IAAI,EAAE,UAAU,EAAE,GAAC;AAEjB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC7B,MAAM,GAAG,sBAAsB,EAAE;AACnC,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACnB,IAAA,UAAU,GAAG,QAAQ,CAAC,MACvC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,sDAClC;AACkB,IAAA,aAAa,GAAG,QAAQ,CACzC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,yDACnC;AACkB,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;IAC5B,aAAa,GAAG,MAAM,CAAU,EAAE,MAAM,EAAE,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEzD,gBAAgB,GAAG,MAAW;QAC7C,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrE,QAAA,IACE,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAClC,YAAA,OAAO,UAAU,CAAC,qBAAqB,KAAK,UAAU,EACtD;AACA,YAAA,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAC1C;aAAO;AACL,YAAA,MAAM,EAAE;QACV;AACF,IAAA,CAAC;AAED,IAAA,WAAA,GAAA;AACE,QAAA,kBAAkB,CAAC;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB;AAC/B,SAAA,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAC9B,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;YAC1C,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC5B;YACF;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AACzC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAC1C,UAAU,CAAC,UAAU,CACnB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EACtD,IAAI,CACL,CACF;YACD,SAAS,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACnD,QAAA,CAAC,CAAC;IACJ;IAEU,MAAM,YAAY,CAAC,KAAY,EAAA;AACvC,QAAA,MAAM,gBAAgB,CACpB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,KAAK,EAAE,EACX,KAAqB,CAAC,MAAM,CAC9B;IACH;AAEU,IAAA,WAAW,CAAC,KAAY,EAAA;QAChC,kBAAkB,CAAC,KAAK,CAAC;IAC3B;wGA9EW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sCAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EASjB,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxDrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAxCS,mBAAmB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAqDlB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAvDvC,SAAS;+BACE,gCAAgC,EAAA,OAAA,EACjC,CAAC,mBAAmB,CAAC,WACrB,CAAC,sBAAsB,CAAC,EAAA,IAAA,EAC3B;AACJ,wBAAA,KAAK,EAAE,sCAAsC;qBAC9C,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wGAAA,CAAA,EAAA;AAsBC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,SAAS,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC1F5B,MAAM,qBAAqB,GAAG;AAC9B,MAAM,kCAAkC,GAAG;AAC3C,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;;ACOpE,MAAM,gBAAgB,GACpB,wDAAwD;AAS1D,SAAS,eAAe,CAAC,MAAc,EAAA;AACrC,IAAA,IAAI;AACF,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,SAAS;IAClB;AACF;AAEA,SAAS,WAAW,CAAC,OAAgB,EAAA;AACnC,IAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,SAAS;AACxC,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO;AACxE,IAAA,IACE,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ;QACtC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EACnC;AACA,QAAA,OAAO,SAAS;IAClB;IAEA,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,SAAS;AAC7B,QAAA,SAAS,EACP,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,GAAG,QAAQ,CAAC,SAAS,GAAG,SAAS;QACzE,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC;AACH;AAEA,SAAS,sBAAsB,CAAC,QAAsB,EAAA;AACpD,IAAA,MAAM,UAAU,GAAoB;AAClC,QAAA;AACE,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE;gBACb,SAAS,EAAE,QAAQ,CAAC,SAAS;AAC7B,gBAAA,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,gBAAgB;AACjD,gBAAA,KAAK,EAAE,EAAE;AACV,aAAA;AACF,SAAA;KACF;AAED,IAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;QAC/B,UAAU,CAAC,IAAI,CAAC;AACd,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,eAAe,EAAE;gBACf,SAAS,EAAE,QAAQ,CAAC,SAAS;AAC7B,gBAAA,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,QAAQ,CAAC,IAAI;AACrB,aAAA;AACF,SAAA,CAAC;IACJ;IAEA,UAAU,CAAC,IAAI,CAAC;AACd,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,gBAAgB,EAAE;YAChB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;AAChC,SAAA;AACF,KAAA,CAAC;AAEF,IAAA,OAAO,UAAU;AACnB;AAEA,SAAS,wBAAwB,CAAC,OAAgB,EAAA;AAChD,IAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,EAAE;AAEjC,IAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC;AAC7C,IAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;AAAE,QAAA,OAAO,UAAU;AAE5C,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;AACrC,IAAA,OAAO,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,EAAE;AACzD;AAEA,SAAS,uBAAuB,CAAC,MAA0B,EAAA;AACzD,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,EAAE;AACtB,IAAA,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC;AACvC,IAAA,OAAO,wBAAwB,CAAC,OAAO,CAAC;AAC1C;AAEM,SAAU,yBAAyB,CACvC,QAAyC,EAAA;IAEzC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjE,IAAA,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,QAAA,OAAO,gBAAgB;IACzB;AAEA,IAAA,IACE,QAAQ,CAAC,IAAI,KAAK,kCAAkC;AACpD,QAAA,QAAQ,CAAC,MAAM,KAAK,UAAU,EAC9B;AACA,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChD;;MC5Da,uBAAuB,CAAA;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAmC;IAC5D,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA6B;AAElC,IAAA,UAAU,GAAG,SAAS,CAGrC,SAAS,8CAAI,IAAI,EAAE,UAAU,EAAA,CAAA,GAAA,CAAlB,EAAE,IAAI,EAAE,UAAU,EAAE,GAAC;IACjB,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvD,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEjD,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAC/C,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,8DAC3C;AAEkB,IAAA,MAAM,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,kDAClE;AAEkB,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,IAAI,MAAM,GAAG,EAAE;AAAE,YAAA,OAAO,CAAC;QACzB,IAAI,MAAM,GAAG,GAAG;AAAE,YAAA,OAAO,CAAC;QAC1B,IAAI,MAAM,GAAG,GAAG;AAAE,YAAA,OAAO,CAAC;AAC1B,QAAA,OAAO,CAAC;AACV,IAAA,CAAC,iDAAC;AAEiB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE;YAClC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,KAAK,CAAC;QAC/C;AAEA,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,kCAAkC,EAAE;AACxD,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,IAAI;QAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI;AACzD,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;AAC3D,IAAA,CAAC,oDAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,kBAAkB,CAAC;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,kBAAkB;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC;IACJ;AAEU,IAAA,WAAW,CAAC,KAAY,EAAA;QAChC,kBAAkB,CAAC,KAAK,CAAC;IAC3B;IAEU,MAAM,YAAY,CAAC,KAAY,EAAA;AACvC,QAAA,MAAM,gBAAgB,CACpB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,KAAK,EAAE,EACX,KAAqB,CAAC,MAAM,CAC9B;IACH;wGA5DW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sCAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAOb,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1BrB;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAvBS,mBAAmB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAyBlB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA3BnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;oBACtC,OAAO,EAAE,CAAC,mBAAmB,CAAC;oBAC9B,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sCAAsC;AAC9C,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA;AACF,iBAAA;AAQG,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,SAAS,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACzD5B,MAAM,gCAAgC,GAAG;AACzC,MAAM,+BAA+B,GAAG;AAExC,MAAM,uCAAuC,GAAG,CAAA;;;;;;;;;;AAWhD,MAAM,iCAAiC,GAC5C,yBAAyB;IACzB,uFAAuF;IACvF,oHAAoH;IACpH,8HAA8H;IAC9H,6JAA6J;IAC7J,qDAAqD;IACrD,4EAA4E;IAC5E,2EAA2E;IAC3E,iFAAiF;IACjF,kFAAkF;IAClF,8CAA8C;AAC9C,IAAA;AAEK,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;AACpD,IAAA,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AACpC,IAAA,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;AAClC,IAAA,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AAC1B,IAAA,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;AACnC,IAAA,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;AACpC,IAAA,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;AACpC,IAAA,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AAClC,IAAA,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;AAC3C,IAAA,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;AAC7C,IAAA,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;AAC9C,CAAA;AAMM,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;AACpD,IAAA,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AACpC,IAAA,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;AACnD,IAAA,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AAC1B,IAAA,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AAC3B,IAAA,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AAClC,IAAA,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;AAC9C,CAAA;;ACxDD;;AAEG;AACG,SAAU,qBAAqB,CAAC,IAAY,EAAA;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC;AAC/D,IAAA,OAAO,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;AACxC;AAEA;;AAEG;AACG,SAAU,kBAAkB,CAAC,IAAY,EAAA;IAC7C,IAAI,MAAM,GAAG,IAAI;IAEjB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IACtC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,8CAA8C,EAAE,EAAE,CAAC;IAC3E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,wCAAwC,EAAE,EAAE,CAAC;IACrE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;IAE9C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC;IACvD,IAAI,SAAS,EAAE;AACb,QAAA,MAAM,GAAG,SAAS,CAAC,CAAC,CAAE;QACtB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;IACjD;AAEA,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,UAAU,CAAC,IAAY,EAAA;AACrC,IAAA,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAAE,QAAA,OAAO,IAAI;IACzC,OAAO,CAAA,aAAA,EAAgB,IAAI,CAAA,CAAE;AAC/B;AAEM,SAAU,iBAAiB,CAAC,IAAY,EAAE,GAAW,EAAA;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC5C,IAAA,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;QACvB,QACE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;AAC3B,YAAA,CAAA,OAAA,EAAU,GAAG,CAAA,QAAA,CAAU;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;IAE5B;AACA,IAAA,OAAO,CAAA,aAAA,EAAgB,GAAG,CAAA,eAAA,EAAkB,IAAI,EAAE;AACpD;;AC1BM,SAAU,4BAA4B,CAC1C,MAA6B,EAAA;AAE7B,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO;AACpC,IAAA,OAAO,SAAS,IAAI,aAAa,GAAG,aAAa,CAAC,OAAO,GAAG,aAAa;AAC3E;AAEM,SAAU,oCAAoC,CAClD,OAA4C,EAAA;AAE5C,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,KAAK;AAC1B,IAAA,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;AAC/C,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO;AACpD,IAAA,MAAM,cAAc,GAClB,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO;AACzD,IAAA,OAAO,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,cAAc;AAC3C;AAEM,SAAU,sCAAsC,CACpD,QAA6C,EAC7C,IAA6B,EAAA;IAE7B,IACE,oCAAoC,CAAC,QAAQ,CAAC;AAC9C,QAAA,CAAC,oCAAoC,CAAC,IAAI,CAAC,EAC3C;AACA,QAAA,OAAO,IAAI;IACb;AACA,IAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,WAAW;AAAE,QAAA,OAAO,IAAI;IAC3D,IAAI,IAAI,CAAC,YAAY;AAAE,QAAA,OAAO,IAAI;AAClC,IAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;AAAE,QAAA,OAAO,IAAI;AAC1C,IAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,WAAW;AAAE,QAAA,OAAO,IAAI;IAC3D,IACE,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,KAAK,QAAQ,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC,CAAC,EAC1E;AACA,QAAA,OAAO,IAAI;IACb;IACA,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM;AAAE,QAAA,OAAO,IAAI;AAC7D,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,4BAA4B,CAC1C,OAAgB,EAAA;IAEhB,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,CAAC,OAAO,CAAC;AAC/D,IAAA,OAAO,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE;AAC1C;;MC5Ba,oCAAoC,GAAG,IAAI,cAAc,CAEpE,sCAAsC,EAAE;AACxC,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,YAA2C;QACxD,MAAM,gBAAgB,IACnB,MAAM,OAAO,uBAAuB,CAAC,CAAqC;AAC7E,QAAA,OAAO,4BAA4B,CAAC,gBAAgB,CAAC;IACvD,CAAC;AACF,CAAA;AAED,MAAM,WAAW,GAAG,IAAI;MAwHX,+BAA+B,CAAA;AACjC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAA2B;AAE3C,IAAA,YAAY,GAAG,SAAS,CAGvC,WAAW,gDAAI,IAAI,EAAE,UAAU,EAAA,CAAA,GAAA,CAAlB,EAAE,IAAI,EAAE,UAAU,EAAE,GAAC;AACnB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,MAAM,GAAG,sBAAsB,EAAE;AACjC,IAAA,oBAAoB,GAAG,MAAM,CAC5C,oCAAoC,CACrC;AACgB,IAAA,gBAAgB,GAAG,MAAM,CAA0B,EAAE,4DAAC;AAC/D,IAAA,aAAa;IACb,aAAa,GAA4B,EAAE;AAC3C,IAAA,OAAO;AACP,IAAA,cAAc;IACd,YAAY,GAAG,KAAK;IACpB,YAAY,GAAG,KAAK;AACpB,IAAA,eAAe;IACf,uBAAuB,GAAG,CAAC;IAC3B,YAAY,GAAa,EAAE;IAC3B,mBAAmB,GAAG,KAAK;IAC3B,cAAc,GAAG,KAAK;AACtB,IAAA,UAAU,GAAG,MAAM,CAAqB,SAAS,sDAAC;IAClD,kBAAkB,GAAG,KAAK;AAEf,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC,OAAO,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE;cACzC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;cACpB,SAAS;AACf,IAAA,CAAC,oDAAC;AAEiB,IAAA,GAAG,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,OAAO,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS;AACtD,IAAA,CAAC,+CAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE;cAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;cACpB,SAAS;AACf,IAAA,CAAC,uDAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,OAAO,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAG,SAAS;AAClE,IAAA,CAAC,uDAAC;AAEiB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,OAAO,WAAW,GAAG,qBAAqB,CAAC,WAAW,CAAC,GAAG,EAAE;AAC9D,IAAA,CAAC,yDAAC;IAEiB,UAAU,GAAG,QAAQ,CACtC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC5E;AAEkB,IAAA,iBAAiB,GAAG,QAAQ,CAC7C,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,6DAC7C;IAEkB,MAAM,GAAG,QAAQ,CAClC,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,aAAa,IAAI,GAAG,kDACxE;AAEkB,IAAA,YAAY,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,UAAU,KAAK,KAAK,wDACnD;AAEgB,IAAA,WAAW,GAAG,QAAQ,CAA8B,MAAK;AACxE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC,OAAO;YACL,OAAO;AACP,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;YACnC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,aAAa,EAAE,OAAO,CAAC,aAAa;AACpC,YAAA,cAAc,EAAE,OAAO,CAAC,UAAU,KAAK,KAAK;SAC7C;AACH,IAAA,CAAC,uDAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC7B,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,EAAE;AAC5B,QAAA,CAAC,CAAC;AAEF,QAAA,iBAAiB,CAAC;YAChB,KAAK,EAAE,MAAK;AACV,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;gBAChC,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAEjC,gBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oBACjE;gBACF;AACA,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACzC,gBAAA,IAAI,OAAO;AAAE,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;YACjD,CAAC;AACF,SAAA,CAAC;IACJ;;IAGA,WAAW,GAAA;QACT,MAAM,IAAI,GAAG,4BAA4B,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAExC,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;YAC9B,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;YAClC;QACF;AAEA,QAAA,IAAI,sCAAsC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;YAC1D,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;YAClC;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;AACnC,gBAAA,IAAI,CAAC,aAAa,GAAG,SAAS;gBAC9B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;YAC/C,CAAC,EAAE,WAAW,CAAC;QACjB;IACF;;IAGQ,aAAa,CACnB,QAAiC,EACjC,IAA6B,EAAA;AAE7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;QAE/B,IACE,oCAAoC,CAAC,QAAQ,CAAC;AAC9C,YAAA,CAAC,oCAAoC,CAAC,IAAI,CAAC,EAC3C;YACA,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;QAChC;IACF;IAEQ,aAAa,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AACzB,QAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;IAChC;AAEQ,IAAA,MAAM,cAAc,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE;IACpC;IAEQ,cAAc,GAAA;QACpB,MAAM,GAAG,GAAQ,EAAE;AACnB,QAAA,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,IAAI,EAAE,EAAE;YACrE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO;QAC3B;AACA,QAAA,OAAO,GAAG;IACZ;AAEQ,IAAA,oBAAoB,CAAC,KAAkC,EAAA;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;AACpD,QAAA,IACE,CAAC,SAAS;AACV,YAAA,KAAK,CAAC,QAAQ;YACd,CAAC,KAAK,CAAC,UAAU;YACjB,IAAI,CAAC,cAAc,EACnB;YACA;QACF;QAEA,KAAK,IAAI,CAAC,cAAc;AACrB,aAAA,IAAI,CAAC,CAAC,UAAU,KAAI;AACnB,YAAA,IACE,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,gBAAA,IAAI,CAAC,cAAc;AACnB,gBAAA,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ;AAC3B,gBAAA,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAC9B;gBACA;YACF;AAEA,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAC/B,EAAE,EACF;AACE,gBAAA,cAAc,EAAE,SAAS;AACzB,gBAAA,YAAY,EAAE,4BAA4B;AAC1C,gBAAA,yBAAyB,EAAE,EAAE;AAC9B,aAAA,CACF;AACD,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO;YAC7B,OAAO,CAAC,MAAM,CAAC,YAAY,CACzB,aAAa,EACb,oCAAoC,CACrC;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AAEhC,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAK;AACxB,gBAAA,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO;oBAAE;AACrC,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;gBACxB,KAAK,OAAO,CAAC,GAAG,CAAC;;;;AAIhB,UAAA,CAAA,CAAC;gBACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/C,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,KAAc,KAAI;AACxB,YAAA,OAAO,CAAC,KAAK,CACX,mDAAmD,EACnD,KAAK,CACN;AACH,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,oBAAoB,CAAC,KAAkC,EAAA;QAC7D,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;QAEhD,MAAM,SAAS,GAAa,EAAE;QAC9B,IAAI,KAAK,CAAC,GAAG;YAAE,SAAS,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,KAAK,CAAC,GAAG,CAAA,QAAA,CAAU,CAAC;QAC5D,IAAI,KAAK,CAAC,aAAa;AAAE,YAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAC5D,QAAA,IAAI,SAAS,CAAC,MAAM,EAAE;YACpB,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAC1B,CAAA,0BAAA,EAA6B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,CAClE;QACH;AACA,QAAA,IAAI,KAAK,CAAC,WAAW,EAAE;AACrB,YAAA,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAC1B,CAAA,0BAAA,EAA6B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,CAAE,CACjE;QACH;IACF;AAEQ,IAAA,qBAAqB,CAAC,KAAkC,EAAA;AAC9D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAE9B,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACrB,IAAI,CAAC,qBAAqB,EAAE;gBAC5B;YACF;AAEA,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;YAChC;QACF;QAEA,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC;QAC1E,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,KAAK,eAAe,EAAE;AAC7D,YAAA,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,eAAe,CAAC;QAC1E;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;QACzC,KAAK,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,aAAa,CAAC;IACtD;IAEQ,kBAAkB,CACxB,QAAgB,EAChB,GAAuB,EAAA;AAEvB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC9C;AAEQ,IAAA,MAAM,kBAAkB,CAC9B,QAAgB,EAChB,GAAuB,EACvB,eAAuB,EAAA;QAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;AACpD,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ;YAAE;QAE7B,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe;QACtC,IAAI,CAAC,sBAAsB,EAAE;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAE9B,QAAA,MAAM,WAAW,GAAG,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,QAAQ;AAErE,QAAA,IAAI;AACF,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE;AAC9C,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,eAAe,KAAK,eAAe,EAAE;gBACpE;YACF;YAEA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AACvD,gBAAA,cAAc,EAAE,SAAS;AACzB,gBAAA,YAAY,EAAE,UAAU,CAAC,WAAW,CAAC;AACrC,gBAAA,yBAAyB,EAAE,EAAE;AAC9B,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;YACtB,OAAO,CAAC,MAAM,CAAC,YAAY,CACzB,aAAa,EACb,kCAAkC,CACnC;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AAEhC,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAK;AACxB,gBAAA,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;oBAAE;AAC9B,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;gBACxB,KAAK,OAAO,CAAC,GAAG,CAAC;;;;AAIhB,QAAA,CAAA,CAAC;AACF,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY;AAC/B,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE;gBACtB,KAAK,MAAM,IAAI,IAAI,KAAK;AAAE,oBAAA,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAClD,YAAA,CAAC,CAAC;QACJ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,eAAe,EAAE;AAC5C,gBAAA,IAAI,CAAC,eAAe,GAAG,SAAS;YAClC;AACA,YAAA,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC;QAC3E;IACF;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC3B;AAEQ,IAAA,iBAAiB,CAAC,WAA+B,EAAA;AACvD,QAAA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,mBAAmB;YAAE;AAC9C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;IAC9B;IAEQ,MAAM,qBAAqB,CACjC,WAAiC,EAAA;QAEjC,IAAI,CAAC,WAAW,EAAE,MAAM;YAAE;AAE1B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB;AAC/C,QAAA,IAAI,UAAU,IAAI,WAAW,CAAC,MAAM;YAAE;QACtC,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;AACpD,QAAA,IAAI,CAAC,uBAAuB,GAAG,WAAW,CAAC,MAAM;QAEjD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;AACrC,YAAA,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;gBACvC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YACpC;YACA;QACF;QAEA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;IAC3C;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;QAC7B,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;YACrC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAC3B;QACF;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,SAAS;QAE9B,IAAI,OAAO,GAAG,KAAK;AACnB,QAAA,MAAM,SAAS,GAAG,CAAC,KAAmB,KAAI;AACxC,YAAA,IAAI,OAAO;gBAAE;YACb,IACE,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,aAAa;AAC7C,gBAAA,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,aAAa,EAClC;gBACA,OAAO,GAAG,IAAI;gBACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,gBAAA,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;YAClD;AACF,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AAE7C,QAAA,MAAM,WAAW,GAAG;;;;;;;;;;;;KAYnB;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAC5B,OAAO,MAAM,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;IAC/D;AAEQ,IAAA,WAAW,CAAC,MAAyB,EAAA;AAC3C,QAAA,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AAC3B,QAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAA,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa;IAC9C;IAEQ,qBAAqB,GAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7B,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC3B;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS;QAC1B;AACA,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;IAClC;wGAnbW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAMnB,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7GvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yvBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAkDU,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBA1G3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qCAAqC,EAAA,eAAA,EAC9B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,yvBAAA,CAAA,EAAA;AAwDC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,WAAW,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;MAwbxB,uCAAuC,CAAA;AACzC,IAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,uDAAU;AACvC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAA2B;AACnD,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAmB;IAC3C,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA6B;wGAJxC,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uCAAuC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJxC;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA5bU,+BAA+B,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA8b/B,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBARnD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8CAA8C;oBACxD,OAAO,EAAE,CAAC,+BAA+B,CAAC;oBAC1C,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;AAET,EAAA,CAAA;AACF,iBAAA;;;MC9jBY,mCAAmC,CAAA;AACrC,IAAA,QAAQ,GACf,KAAK,CAAC,QAAQ,mDAA4C;AAE3C,IAAA,mBAAmB,GAAG,MAAM,CAAC,CAAC,+DAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACxC,oBAAoB,GAAG,CAAC;AACxB,IAAA,QAAQ;AAEG,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;AAAE,YAAA,OAAO,SAAS;AAEhD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB;QAC9C,IAAI,CAAC,QAAQ,EAAE,MAAM;AAAE,YAAA,OAAO,SAAS;AAEvC,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;AAC5D,IAAA,CAAC,0DAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAElD,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAC9C,IAAI,CAAC,UAAU,EAAE;AAEjB,YAAA,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACrB,gBAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC;AAC7B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/B;YACF;YAEA,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,oBAAoB,EAAE;AACjD,gBAAA,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM;gBAC3C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACnD;AAEA,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;gBAAE;AAEhC,YAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAK;gBAC/B,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAC7B,CAAC,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CACzC;YACH,CAAC,EAAE,IAAI,CAAC;YAER,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACpC,QAAA,CAAC,CAAC;IACJ;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE;AACjC,QAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;IAC3B;wGAtDW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBpC;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWU,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAxB/C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0CAA0C,cACxC,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;AAST,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA;;;ACpBI,MAAM,6BAA6B,GAEtC,CAAC,MAAM,EAAE,OAAO,KAClB,eAAe,CACb,MAA8B,EAC9B,OAAiC,CACP;;ACoD9B;;;;;AAKG;AACH,SAAS,yBAAyB,CAChC,UAA+C,EAC/C,UAAmB,EAAA;AAEnB,IAAA,OAAO;UACH,EAAE,GAAG,UAAU,EAAE,oBAAoB,EAAE,IAAI;UAC3C,UAAU;AAChB;MAGa,UAAU,CAAA;IACZ,OAAO,GAAG,sBAAsB,EAAE;AAClC,IAAA,kCAAkC,GAAG,MAAM,CAClD,uCAAuC,CACxC;AACQ,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAA,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;;IAEhC,2BAA2B,GAClC,IAAI,CAAC,OAAO,CAAC,oBAAoB,KAAK,IAAI;IACnC,OAAO,GAAG,MAAM,CACvB,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC1B;AACQ,IAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAClC,IAAA,wBAAwB,GAC/B,MAAM,CACJ,qCAAqC,CAAC,YAAY,oEACnD;AACM,IAAA,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE;AACpE,IAAA,WAAW,GAAG,MAAM,CAAqB,SAAS,uDAAC;AACnD,IAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAC1C,IAAA,iBAAiB,GAAG,MAAM,CAA0B,MAAM,6DAAC;AAC3D,IAAA,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE;AACtD,IAAA,QAAQ,GAAG,MAAM,CAAyB,EAAE,oDAAC;AAC7C,IAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AACpC,IAAA,gBAAgB,GAAG,MAAM,CAChC,SAAS,4DACV;AACD;;;;;AAKG;AACM,IAAA,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;AACpD,IAAA,aAAa,GAAG,MAAM,CAC7B,SAAS,yDACV;AACD;;;;;;AAMG;AACM,IAAA,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;AAC9C,IAAA,cAAc,GAAG,MAAM,CAAmC,SAAS,0DAAC;AAC7E;;;;;AAKG;AACM,IAAA,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AAChD,IAAA,mBAAmB,GAAG,MAAM,CAEnC,EAAE,+DAAC;AACI,IAAA,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE;IAE1D,IAAI,GAAG,IAAI,cAAc,CAAC;AACjC,QAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;AACnC,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AAC7B,QAAA,uBAAuB,EAAE;AACvB,YAAA,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;AACtB,YAAA,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB;AAClC,SAAA;AACD,QAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,QAAA,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;AACjD,QAAA,UAAU,EAAE,yBAAyB,CACnC,IAAI,CAAC,OAAO,CAAC,UAAU,EACvB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,CACzC;AACF,KAAA,CAAC;AAEO,IAAA,sBAAsB,GAC7B,MAAM,CAAC,EAAE,kEAAC;AACH,IAAA,6BAA6B,GAElC,MAAM,CAAC,EAAE,yEAAC;AACL,IAAA,4BAA4B,GACnC,MAAM,CAAC,EAAE,wEAAC;AACH,IAAA,mCAAmC,GAExC,MAAM,CAAC,EAAE,+EAAC;AACL,IAAA,gCAAgC,GAErC,MAAM,CAAC,EAAE,4EAAC;AACL,IAAA,6BAA6B,GAElC,MAAM,CAAC,EAAE,yEAAC;AACL,IAAA,oCAAoC,GAEzC,MAAM,CAAC,EAAE,gFAAC;AAEL,IAAA,qBAAqB,GAAmC,QAAQ,CACvE,MAAM;QACJ,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAChC,GAAG,IAAI,CAAC,6BAA6B,EAAE;AACxC,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACF;AACQ,IAAA,2BAA2B,GAAiC,QAAQ,CAC3E,MAAM;QACJ,GAAG,IAAI,CAAC,4BAA4B,EAAE;QACtC,GAAG,IAAI,CAAC,mCAAmC,EAAE;AAC9C,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACF;AACQ,IAAA,+BAA+B,GACtC,IAAI,CAAC,gCAAgC,CAAC,UAAU,EAAE;AAC3C,IAAA,4BAA4B,GACnC,QAAQ,CAAC,MAAM;QACb,GAAG,IAAI,CAAC,6BAA6B,EAAE;QACvC,GAAG,IAAI,CAAC,kCAAkC;QAC1C,GAAG,IAAI,CAAC,oCAAoC,EAAE;AAC/C,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEJ,+BAA+B,GAAG,KAAK;IACvC,2BAA2B,GAAa,EAAE;IAC1C,eAAe,GAAa,EAAE;AAE9B,IAAA,WAAA,GAAA;AACE,QAAA,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAE5C,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QACpD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,YAAY,KAAI;AACrD,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;AACtC,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,YAAY,KAAI;AAC5D,YAAA,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC;AAC7C,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;YACnC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;gBACpC,IAAI,CAAC,iBAAiB,CAAC;oBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,UAAU;oBACrB,SAAS,EAAE,IAAI,CAAC,QAAQ;oBACxB,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,UAAU,KAAI;AACjD,YAAA,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvE,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,kBAAkB,KAAI;AAC1D,YAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;AAC5C,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAClB,eAAe,EAAE,MAAK;gBACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACpC,CAAC;AACD,YAAA,gCAAgC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAI;;;;;;AAM/C,gBAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC;gBACzC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;gBACpD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC9C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;gBAChD,IAAI,CAAC,oCAAoC,EAAE;gBAC3C,IAAI,CAAC,4BAA4B,EAAE;YACrC,CAAC;AACD,YAAA,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,KAAI;AAChC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAC5B,CAAC;YACD,oBAAoB,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAI;AACjD,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;oBAC5B,WAAW;oBACX,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS;AACvD,iBAAA,CAAC;YACJ,CAAC;AACD,YAAA,2BAA2B,EAAE,CAAC,EAAE,OAAO,EAAE,KAAI;AAC3C,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;oBAC5B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,WAAW;AAC1D,oBAAA,SAAS,EAAE,IAAI;AAChB,iBAAA,CAAC;YACJ,CAAC;AACD,YAAA,4BAA4B,EAAE,CAAC,EAAE,OAAO,EAAE,KAAI;AAC5C,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;oBAC5B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,WAAW;AAC1D,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;QACF,IAAI,CAAC,oCAAoC,EAAE;QAC3C,IAAI,CAAC,4BAA4B,EAAE;IACrC;IAEA,eAAe,CACb,OAAe,EACf,MAA0C,EAAA;QAE1C,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,OAAO,MAAM;AAC5C,YAAA,GAAG,OAAO;YACV,CAAC,OAAO,GAAG,MAAM;AAClB,SAAA,CAAC,CAAC;IACL;AAEA,IAAA,eAAe,CACb,sBAEC,EAAA;QAED,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,GAAG,sBAAsB;QAE1E,OAAO;AACL,YAAA,GAAG,iBAAiB;YACpB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KACrB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAChE;IACH;AAEA,IAAA,eAAe,CACb,sBAEC,EAAA;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC;AAEzD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAEvB,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK;AACpD,YAAA,GAAG,OAAO;YACV,sBAAsB;AACvB,SAAA,CAAC;IACJ;AAEA,IAAA,iBAAiB,CAAC,YAAkC,EAAA;AAClD,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,OAAO,EAAE,YAAY,CAAC,CAAC;IAC7E;AAEA,IAAA,wBAAwB,CAAC,YAAyC,EAAA;QAChE,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK;AACrD,YAAA,GAAG,OAAO;YACV,YAAY;AACb,SAAA,CAAC;IACJ;;AAGA,IAAA,2BAA2B,CAAC,YAAyC,EAAA;QACnE,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,OAAO,KAChD,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,KAAK,YAAY,CAAC,CAC1D;IACH;IAEA,oCAAoC,GAAA;QAClC,MAAM,SAAS,GAAkC,EAAE;AAEnD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,YAAY,EAAE,cAAc;AAC5B,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,SAAS,EAAE,2BAA2B;AACvC,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE;YACpC,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,YAAY,EAAE,gCAAgC;AAC9C,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,SAAS,EAAE,uCAAuC;AACnD,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,oCAAoC,CAAC,GAAG,CAAC,SAAS,CAAC;QACxD,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,mBAAmB,EAAE;YAC1B;QACF;AAEA,QAAA,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC;AACrC,YAAA;AACE,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,SAAS,EAAE,uBAAuB;AAClC,gBAAA,SAAS,EAAE,IAAI;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,kCAAkC;AACxC,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,SAAS,EAAE,uBAAuB;AAClC,gBAAA,SAAS,EAAE,IAAI;AAChB,aAAA;AACF,SAAA,CAAC;QACF,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO;IACnC;;IAGA,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,SAAS;IACtE;IAEA,iBAAiB,GAAA;QACf,IAAI,CAAC,mBAAmB,EAAE;AAE1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;QACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,YAAA,WAAW,EACT,0GAA0G;AAC5G,YAAA,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC;AACzC,SAAA,CAAC,CACH;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,KAAK,KAAK;YAAE;QAEhD,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,YAAA,WAAW,EAAE,+BAA+B;YAC5C,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;AAC/D,SAAA,CAAC,CACH;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,YAAA,WAAW,EACT,oIAAoI;AACtI,YAAA,KAAK,EAAE,kCAAkC;AAC1C,SAAA,CAAC,CACH;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,YAAA,WAAW,EACT,sGAAsG;AACxG,YAAA,KAAK,EAAE,8BAA8B;AACtC,SAAA,CAAC,CACH;IACH;IAEA,mBAAmB,GAAA;AACjB,QAAA,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7B;AACA,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAEA,yBAAyB,GAAA;AACvB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB;IAC7E;IAEA,2BAA2B,GAAA;QAGzB,OAAO;AACL,YAAA,IAAI,EAAE,+BAA+B;AACrC,YAAA,WAAW,EAAE,iCAAiC;AAC9C,YAAA,UAAU,EAAE,6BAA6B;AACzC,YAAA,SAAS,EAAE,mCAAmC;AAC9C,YAAA,OAAO,EAAE,YAAY,cAAc;AACnC,YAAA,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI,CAAC,aAAa;SAC7B;IACH;IAEA,4BAA4B,GAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,EAAE;QAE/C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,+BAA+B,EAAE;AACtC,YAAA,IAAI,IAAI,CAAC,+BAA+B,EAAE;AACxC,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,+BAA+B,CAAC;AACrD,gBAAA,IAAI,CAAC,+BAA+B,GAAG,KAAK;YAC9C;YACA;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,2BAA2B,EAAE;QACtD,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;QAE3D,IACE,CAAC,IAAI,CAAC,+BAA+B;AACrC,YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,+BAA+B,EAAE,CAAC,EACjE;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI;QAC7C;QAEA,IAAI,CAAC,6BAA6B,EAAE;IACtC;IAEA,6BAA6B,GAAA;QAC3B,IAAI,CAAC,+BAA+B,EAAE;QAEtC,MAAM,WAAW,GACf,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,WAAW;AAC1C,YAAA,uCAAuC;QACzC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,YAAA,WAAW,EACT,oFAAoF;AACtF,YAAA,KAAK,EAAE,WAAW;AACnB,SAAA,CAAC,CACH;QAED,MAAM,gBAAgB,GACpB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,IAAI,EAAE;QACvD,IAAI,CAAC,gBAAgB,CAAC,MAAM;YAAE;AAE9B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAChC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM;YAC5B,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,WAAW,EAAE,EAAE,CAAC,WAAW;AAC3B,YAAA,UAAU,EAAE,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE;AAC5C,gBAAA,eAAe,EAAE,6BAA6B;aAC/C,CAAC;SACH,CAAC,CAAC,CACJ;QAED,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,YAAA,WAAW,EACT,+HAA+H;AACjI,YAAA,KAAK,EAAE,WAAW;AACnB,SAAA,CAAC,CACH;IACH;IAEA,+BAA+B,GAAA;AAC7B,QAAA,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7B;AACA,QAAA,IAAI,CAAC,2BAA2B,GAAG,EAAE;IACvC;AAEA,IAAA,uBAAuB,CACrB,kBAAwC,EAAA;QAExC,OAAO;AACL,YAAA,GAAG,kBAAkB;YACrB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAI;AAC9B,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC;YAClE,CAAC;SACF;IACH;AAEA,IAAA,iBAAiB,CAAC,kBAAwC,EAAA;QACxD,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK;AACxD,YAAA,GAAG,OAAO;YACV,kBAAkB;AACnB,SAAA,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC;AAE7D,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACzB;AAEA,IAAA,oBAAoB,CAAC,MAAyB,EAAA;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;IAC/C;AAEA,IAAA,uBAAuB,CAAC,EAAU,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACvC;AAEA,IAAA,iBAAiB,CAAC,OAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;IACtC;AAEA,IAAA,gBAAgB,CAAC,OAAe,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;IACrC;AAEA,IAAA,cAAc,CAAC,OAAe,EAAA;AAC5B,QAAA,QACE,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IAE5E;IAEA,cAAc,CACZ,MAAS,EACT,OAAgB,EAAA;QAEhB,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,MAAM,CAAC,OAAO,KAAK,OAAO;QACnC;AAEA,QAAA,OAAO,IAAI;IACb;IAEA,UAAU,CAAC,QAAgB,EAAE,OAAgB,EAAA;QAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC;QACvC,MAAM,IAAI,GAAG,CAAC,MAA0C,KACtD,MAAM,CAAC,IAAI,KAAK,QAAQ;aACvB,OAAO,KAAK;AACX,kBAAE,CAAC,CAAC,MAAM,CAAC;kBACT,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC,OAAO,KACnD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CACrB;AACD,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvE;AAEA,IAAA,QAAQ,CAAC,OAAe,EAAA;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACpC;AAEA,IAAA,aAAa,CAAC,OAOb,EAAA;AACC,QAAA,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1C;AACA,QAAA,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACvD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACtD;AACA,QAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;QACpC;AACA,QAAA,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,aAAa,CACrB,yBAAyB,CACvB,OAAO,CAAC,UAAU,EAClB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,CACzC,IAAI,OAAO,CAAC,UAAU,CACxB;QACH;AACA,QAAA,IACE,OAAO,CAAC,MAAM,KAAK,SAAS;AAC5B,YAAA,OAAO,CAAC,iBAAiB,KAAK,SAAS,EACvC;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC;gBACnC,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC1C,IAAI,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACjE,aAAA,CAAC;QACJ;IACF;wGAziBW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAV,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cADG,MAAM,EAAA,CAAA;;4FACnB,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC4B5B,SAAU,sBAAsB,CAEpC,cAA0C,EAAA;AAC1C,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,IAAA,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC;AAE5C,IAAA,UAAU,CAAC,SAAS,CAAC,MAAK;QACxB,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC;AACpE,IAAA,CAAC,CAAC;AACJ;AAEM,SAAU,oBAAoB,CAElC,YAAsC,EAAA;AACtC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAErC,UAAU,CAAC,eAAe,CAAC;AACzB,QAAA,GAAI,YAAmC;QACvC,QAAQ;AACT,KAAA,CAAC;AAEF,IAAA,UAAU,CAAC,SAAS,CAAC,MAAK;QACxB,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;AAChE,IAAA,CAAC,CAAC;AACJ;AAEM,SAAU,sBAAsB,CAEpC,cAA0C,EAAA;AAC1C,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,IAAA,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC;AAE5C,IAAA,UAAU,CAAC,SAAS,CAAC,MAAK;QACxB,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC;AACpE,IAAA,CAAC,CAAC;AACJ;;ACxGA;SACgB,sBAAsB,CACpC,YAAoB,EACpB,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,IAAI;QACF,MAAM,MAAM,GAAG;AACb,cAAE,gBAAgB,CAAC,YAAY;AAC/B,cAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QAE5B,IACE,OAAO,MAAM,KAAK,QAAQ;AAC1B,YAAA,MAAM,KAAK,IAAI;AACf,YAAA,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EACtB;AACA,YAAA,OAAO,MAAiC;QAC1C;AAEA,QAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;IAC3B;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE;IAC/B;AACF;AAWA,SAAS,aAAa,CACpB,OAAqB,EACrB,IAAY,EACZ,OAA2B,EAAA;AAE3B,IAAA,MAAM,MAAM,GACV,OAAO,KAAK;AACV,UAAE;UACA,OAAO,CAAC,IAAI,CACV,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAC5D;IACP,QACE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAE5E;AAEA;AACM,SAAU,mBAAmB,CACjC,OAAmC,EAAA;AAEnC,IAAA,MAAM,WAAW,GAAG,aAAa,CAC/B,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EACzD,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,OAAO,CAChB;AACD,IAAA,IAAI,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE;AAEjE,IAAA,MAAM,QAAQ,GAAG,aAAa,CAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,EACjE,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,OAAO,CAChB;AACD,IAAA,IAAI,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;AAE7D,IAAA,MAAM,cAAc,GAAG,aAAa,CAClC,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,OAAO,CAChB;IACD,IAAI,cAAc,EAAE;QAClB,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,cAAc,EAAE;IAC/D;AAEA,IAAA,MAAM,QAAQ,GAAG,aAAa,CAC5B,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EACzD,GAAG,EACH,OAAO,CAAC,OAAO,CAChB;AACD,IAAA,IAAI,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC3D,IAAA,IAAI,OAAO,CAAC,eAAe,EAAE;QAC3B,OAAO;AACL,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE;SAClD;IACH;AACA,IAAA,OAAO,SAAS;AAClB;MAmCa,eAAe,CAAA;AACjB,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAoB;AAC5C,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAa;AACtC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;IACjC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAEpC,IAAA,YAAY,CAAC,IAAY,EAAA;AAIjC,QAAA,MAAM,cAAc,GAAI,IAAI,CAAC,OAAO;AACjC,aAAA,OAAO;QACV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAAE;QAClE,MAAM,mBAAmB,GACvB,IAAI,CAAC,WAAW,CAAC,+BAA+B,EAAE;AAEpD,QAAA,OAAO,mBAAmB,CAAC;YACzB,IAAI;AACJ,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,cAAc;AACzC,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,cAAc,EAAE,mBAAmB;AACnC,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,2BAA2B;AAC9D,SAAA,CAAC;IACJ;AAEU,IAAA,aAAa,CACrB,QAAkB,EAAA;AAElB,QAAA,MAAM,IAAI,GAAG,sBAAsB,CACjC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAC3B,IAAI,CAAC,SAAS,EAAE,CACT;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAEjD,IAAI,OAAO,EAAE;YACX,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBAC5B,IAAI;AACJ,gBAAA,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,OAAO,CAAC,OAAO;aACxB;QACH;AAAO,aAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAC3B,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBAC5B,IAAI;AACJ,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,MAAM,EAAE,SAAS;aAClB;QACH;aAAO;YACL,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBAC5B,IAAI;AACJ,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,MAAM,EAAE,SAAS;aAClB;QACH;IACF;IAEU,mBAAmB,CAC3B,QAAkB,EAClB,OAG0B,EAAA;AAK1B,QAAA,MAAM,MAAM,GAGR;AACF,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAO,QAAQ,CAAC;SAC7C;AAED,QAAA,MAAM,eAAe,GACnB,WAAW,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI;QAEpE,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,OAAO,MAAM;QACf;QAEA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE;QACxD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,MAAM;QACf;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChD,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,CAAC,KAAK,GAAG,KAAK;QACtB;AAEA,QAAA,OAAO,MAAM;IACf;AAEU,IAAA,2BAA2B,CACnC,QAAkB,EAAA;AAElB,QAAA,MAAM,IAAI,GAAG,sBAAsB,CACjC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAC3B,IAAI,CAAC,SAAS,EAAE,CACT;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjD,QAAA,MAAM,OAAO,GAAG,CAAC,MAAe,KAAI;AAClC,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;AACnE,QAAA,CAAC;QAED,IAAI,OAAO,EAAE;YACX,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBAC5B,IAAI;AACJ,gBAAA,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,OAAO,CAAC,OAAQ;gBACxB,OAAO;aACR;QACH;AAAO,aAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAC3B,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBAC5B,IAAI;AACJ,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,MAAM,EAAE,SAAS;gBACjB,OAAO;aACR;QACH;aAAO;YACL,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBAC5B,IAAI;AACJ,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,MAAM,EAAE,SAAS;gBACjB,OAAO;aACR;QACH;IACF;AAEA,IAAA,eAAe,CAAC,UAAkB,EAAA;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAClC,CAAC,CAAC,KAAuB,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAC1E;AAED,QAAA,OAAO,OAAO;IAChB;IAEA,eAAe,GAAA;AACb,QAAA,OAAQ,IAAI,CAAC,OAAO,EAA8C,CAAC,OAAO;IAC5E;wGApJW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9BhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA7BS,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FA+BhB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAjC3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC5B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA;AACF,iBAAA;;;AC9ID,SAAS,eAAe,CAAC,KAAoB,EAAA;IAC3C,OAAO,SAAS,IAAI,KAAK;AAC3B;MAEa,UAAU,CAAA;AACZ,IAAA,aAAa;AAGb,IAAA,UAAU;AACV,IAAA,SAAS;AACT,IAAA,MAAM;AAEN,IAAA,KAAK;AACL,IAAA,SAAS;AACT,IAAA,QAAQ;AACR,IAAA,KAAK;AAEd,IAAA,WAAA,CACE,aAA4B,EAC5B,UAAsB,EACtB,gBAAoC,EAAA;AAEpC,QAAA,IAAI,CAAC,KAAK,GAAG,aAAa;;;;QAI1B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC7C,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAErC,QAAA,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC,aAAa,EAAE;YACnD,iBAAiB,EAAE,MAAK;gBACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC;AAC5C,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YACjD,CAAC;YACD,cAAc,EAAE,MAAK;gBACnB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC;AAC5C,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrD,CAAC;YACD,gBAAgB,EAAE,MAAK;AACrB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,cAAc,EAAE,MAAK;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B,CAAC;YACD,WAAW,EAAE,MAAK;AAChB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B,CAAC;;;YAGD,eAAe,EAAE,MAAK;AACpB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,UAAU,CAAC,SAAS,CAAC,MAAK;YACxB,IAAI,CAAC,QAAQ,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;QAClC;IACF;AACD;AAED,SAAS,aAAa,CAAC,KAAc,EAAA;AACnC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,GAAG,KAAK,CAAC;AAC3C,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,EAAE,GAAG,KAAK,EAAE;AACpE,IAAA,OAAO,KAAK;AACd;MAGa,sBAAsB,CAAA;AACxB,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,iBAAiB,GAAG,IAAI,GAAG,EAA8B;IAElE,sBAAsB,CACpB,OAAmC,EACnC,UAAsB,EAAA;AAEtB,QAAA,IAAI,cAAsC;AAC1C,QAAA,IAAI,SAAoC;AACxC,QAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CACtB;QAEH,MAAM,YAAY,GAAG,MAAoB;AACvC,YAAA,MAAM,eAAe,GAAG,OAAO,EAAE,IAAI,gBAAgB;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC3D,IAAI,QAAQ,EAAE;gBACZ,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC;gBAC3D,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE;;;;oBAI/C,SAAS,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBACrD;AACA,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,eAAe,CAAC;AAC9C,gBAAA,OAAO,QAAQ;YACjB;YAEA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAChD,YAAA,MAAM,mBAAmB,GAAG,UAAU,KAAK,SAAS;YACpD,MAAM,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI;AAEzD,YAAA,IACE,mBAAmB;AACnB,iBAAC,uBAAuB;AACtB,oBAAA,qCAAqC,CAAC,YAAY;oBAClD,uBAAuB;AACrB,wBAAA,qCAAqC,CAAC,UAAU;oBAClD,uBAAuB;AACrB,wBAAA,qCAAqC,CAAC,KAAK,CAAC,EAChD;gBACA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC;gBAC1D,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;wBACvC,MAAM,CAAC,WAAW,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE;oBAC7C;oBACA,OAAO,MAAM,CAAC,WAAW;gBAC3B;AAEA,gBAAA,MAAM,WAAW,GAAG,IAAI,0BAA0B,CAAC;oBACjD,UAAU;AACV,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE;AAC/C,iBAAA,CAAC;AACF,gBAAA,IAAI,eAAe,CAAC,WAAW,CAAC,EAAE;AAChC,oBAAA,WAAW,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE;gBACtC;AACA,gBAAA,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC;gBACnD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC;AACpD,gBAAA,OAAO,WAAW;YACpB;AAEA,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YAChE,MAAM,WAAW,GAAG;kBAChB,CAAA,WAAA,EAAc,UAAU,CAAA;kBACxB,eAAe;AACnB,YAAA,MAAM,IAAI,KAAK,CACb,4BAA4B,eAAe,CAAA,gCAAA,EAAmC,WAAW,CAAA,GAAA,CAAK;iBAC3F,WAAW,CAAC;sBACT,kBAAkB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA;sBACxC,uBAAuB,CAAC;AAC5B,gBAAA,4DAA4D,CAC/D;AACH,QAAA,CAAC;QAED,OAAO,QAAQ,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE;AAC1C,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE;AACnC,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAE1B,YAAA,MAAM,KAAK,GAAG,YAAY,EAAE;AAE5B,YAAA,IAAI,cAAc,IAAI,SAAS,KAAK,KAAK,EAAE;AACzC,gBAAA,OAAO,cAAc;YACvB;YAEA,cAAc,EAAE,QAAQ,EAAE;YAC1B,SAAS,GAAG,KAAK;YACjB,cAAc,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAAC;AACpE,YAAA,MAAM,eAAe,GAAG,OAAO,EAAE,IAAI,gBAAgB;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC;AAC3D,YAAA,IAAI,OAAO,EAAE,WAAW,KAAK,KAAK,EAAE;gBAClC,OAAO,CAAC,KAAK,EAAE;YACjB;AACA,YAAA,OAAO,cAAc;AACvB,QAAA,CAAC,CAAC;IACJ;wGArGW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA;;4FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AA4GlC,MAAM,kBAAkB,CAAA;AACb,IAAA,YAAY;AACrB,IAAA,wBAAwB;AACxB,IAAA,WAAW;AACX,IAAA,uBAAuB;AACd,IAAA,WAAW,GAAwD;QAC1E,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;QACtC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;KACtC;AAED,IAAA,WAAA,CAAY,WAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;IACjC;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;IAC1B;AAEA;;;;;;AAMG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE;AAC5C,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CACzD,IAAI,CAAC,WAAW,CACd,IAAI,CAAC,YAAY,EACjB,MAAM,IAAI,CAAC,WAAW,EACtB,aAAa,EACb,YAAY,CACb,CACF;IACH;;AAGA,IAAA,gBAAgB,CAAC,UAAyB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU;YAAE;AACrC,QAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;QAC7B,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC,SAAS,CACjD,IAAI,CAAC,WAAW,CACd,UAAU,EACV,MAAM,IAAI,CAAC,YAAY,EACvB,YAAY,EACZ,aAAa,CACd,CACF;AAED,QAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC1C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC;YACjE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC;YAC9D;QACF;QAEA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;QAClE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;IACjE;AAEA,IAAA,WAAW,CACT,MAAqB,EACrB,aAA8C,EAC9C,UAAuB,EACvB,UAAuB,EAAA;QAEvB,MAAM,eAAe,GAAG,MAAW;AACjC,YAAA,MAAM,MAAM,GAAG,aAAa,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM;gBAAE;YACb,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;AACnD,QAAA,CAAC;QACD,OAAO;YACL,iBAAiB,EAAE,MAAK;AACtB,gBAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC;oBAAE;AACtD,gBAAA,MAAM,MAAM,GAAG,aAAa,EAAE;AAC9B,gBAAA,IAAI,CAAC,MAAM;oBAAE;gBACb,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;YAClD,CAAC;YACD,cAAc,EAAE,MAAK;AACnB,gBAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC;oBAAE;AACnD,gBAAA,MAAM,MAAM,GAAG,aAAa,EAAE;AAC9B,gBAAA,IAAI,CAAC,MAAM;oBAAE;gBACb,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;YAC/C,CAAC;AACD,YAAA,gBAAgB,EAAE,eAAe;AACjC,YAAA,cAAc,EAAE,eAAe;AAC/B,YAAA,WAAW,EAAE,eAAe;AAC5B,YAAA,eAAe,EAAE,eAAe;SACjC;IACH;AAEA,IAAA,eAAe,CACb,MAAqB,EACrB,MAAqB,EACrB,UAAuB,EAAA;AAEvB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QAClC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C;AAEA,IAAA,YAAY,CACV,MAAqB,EACrB,MAAqB,EACrB,UAAuB,EAAA;AAEvB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAU,CAAC;IACvD;AAEA,IAAA,gBAAgB,CACd,MAAqB,EACrB,MAAqB,EACrB,UAAuB,EAAA;AAEvB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAU,CAAC;IACvD;IAEA,aAAa,CAAC,MAAqB,EAAE,MAAqB,EAAA;AACxD,QAAA,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;AACnC,QAAA,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;IACnC;IAEA,SAAS,CAAC,IAAiB,EAAE,OAAuB,EAAA;QAClD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;IACnC;IAEA,mBAAmB,CAAC,IAAiB,EAAE,OAAuB,EAAA;QAC5D,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;QACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;AACjC,QAAA,OAAO,IAAI;IACb;AACD;AAED;AACA,SAAS,mBAAmB,CAAC,KAAoB,EAAA;IAC/C,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAAE,QAAA,OAAO,IAAI;AAC7D,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;IACzB,QACE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;AAEhF;AAEM,SAAU,gBAAgB,CAC9B,OAA4C,EAAA;AAE5C,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACnD,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACrC,MAAM,aAAa,GACjB,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,OAAO,CAAC;IAEnE,OAAO,YAAY,CAAC,sBAAsB,CAAC,aAAa,EAAE,UAAU,CAAC;AACvE;;ACxUA;;;;;;AAMG;MAEU,wBAAwB,CAAA;AAC1B,IAAA,QAAQ,GAAG,MAAM,CAAC,kCAAkC,CAAC;;AAGrD,IAAA,SAAS,GAAG,MAAM,CACzB,IAAI,qDACL;AAED;;;AAGG;IACM,eAAe,GAAG,UAAU,EAAE;AAEvC;;;;AAIG;AACM,IAAA,oBAAoB,GAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,KAAK,KAAK;AAE7C;;;AAGG;AACM,IAAA,OAAO,GAAmB,QAAQ,CACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,gBAAgB,mDAChD;AAED;;;;;;;;AAQG;AACM,IAAA,QAAQ,GAAmB,QAAQ,CAAC,MAAK;AAChD,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAkB;QACzC;AACA,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;QAC1B,IAAI,CAAC,EAAE;YACL,OAAO,CAAC,CAAC,QAAQ;QACnB;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAC/B;QACA,OAAO,IAAI,CAAC,eAAe;AAC7B,IAAA,CAAC,oDAAC;AAEF;;;AAGG;AACM,IAAA,mBAAmB,GAAoB,QAAQ,CAAC,MAAK;AAC5D,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,OAAO,IAAI;QACb;AACA,QAAA,QACE,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,IAAI,KAAK;AAE5E,IAAA,CAAC,+DAAC;;AAGF,IAAA,IAAc,YAAY,GAAA;QACxB,OAAO,IAAI,CAAC,oBAAoB;IAClC;AAEA;;;;;;AAMG;IACO,YAAY,CAAC,QAAgB,EAAE,QAAiB,EAAA;AACxD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB;QACF;QACA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC5C;AAEA;;;;;;;;;;;AAWG;IACH,iBAAiB,CAAC,QAAgB,EAAE,OAAgC,EAAA;QAClE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC;IACxD;AAEA;;;;;;;AAOG;IACH,cAAc,GAAA;QACZ,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC;IACxC;;;;;;;AASS,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;;AAG3B,IAAA,YAAY,GAAG,MAAM,CAAC,CAAC,wDAAC;AAEjC;;;;;;;AAOG;AACM,IAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAEnD;;;;;;;;AAQG;AACH,IAAA,aAAa,CAAC,IAAa,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;AAEA;;;AAGG;AACM,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,4DAAC;AAEnE;;;;;;;;;;;;;AAaG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,GAAG,IAAI;AACjB,QAAA,OAAO,MAAK;AACV,YAAA,IAAI,CAAC,MAAM;gBAAE;YACb,MAAM,GAAG,KAAK;YACd,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,QAAA,CAAC;IACH;wGAjLW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAxB,wBAAwB,EAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;AAqLD;;;AAGG;MACU,0BAA0B,GACrC,IAAI,cAAc,CAA2B,4BAA4B;AAE3E;;;AAGG;MACU,kCAAkC,GAC7C,IAAI,cAAc,CAChB,oCAAoC;AAGxC;;;;;;;;;;;;;AAaG;AACG,SAAU,+BAA+B,CAC7C,OAAA,GAA2C,EAAE,EAAA;IAE7C,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,kCAAkC,EAAE,QAAQ,EAAE,OAAO,EAAE;QAClE,wBAAwB;AACxB,QAAA;AACE,YAAA,OAAO,EAAE,0BAA0B;AACnC,YAAA,WAAW,EAAE,wBAAwB;AACtC,SAAA;KACF;AACH;AAEA;;;;;;AAMG;SACa,uBAAuB,GAAA;AACrC,IAAA,OAAO,MAAM,CAAC,0BAA0B,CAAC;AAC3C;;AChQA,MAAM,oBAAoB,GAAG,cAAc;AAkD3C;AACM,MAAO,qBAAsB,SAAQ,KAAK,CAAA;AACzB,IAAA,SAAA;AAArB,IAAA,WAAA,CAAqB,SAAoB,EAAA;AACvC,QAAA,KAAK,CACH,CAAA,UAAA,EAAa,SAAS,CAAC,EAAE,CAAA,YAAA,EAAe,SAAS,CAAC,SAAS,IAAI,iBAAiB,CAAA,CAAA,CAAG,CACpF;QAHkB,IAAA,CAAA,SAAS,GAAT,SAAS;AAI5B,QAAA,IAAI,CAAC,IAAI,GAAG,uBAAuB;IACrC;AACD;AAED,SAAS,aAAa,CACpB,OAAiC,EAAA;AAEjC,IAAA,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,KAAK;IACnD,OAAO;AACL,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAW;KACvC;AACH;AAEA,SAAS,aAAa,CACpB,KAAmC,EAAA;IAEnC,QACE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU;AACzD,QAAA,KAAK,KAAK,IAAI;QACd,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,UAAU;AAEpD;AAEA;;;;;AAKG;MACU,mBAAmB,CAAA;AACrB,IAAA,QAAQ,GAAG,MAAM,CAAkC,IAAI,oDAAC;AACxD,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,IAAA,OAAO,GAAG,MAAM,CAAiB,IAAI,mDAAC;AACtC,IAAA,MAAM,GAAG,MAAM,CAAiB,IAAI,kDAAC;AACrC,IAAA,eAAe,GAAG,IAAIA,eAAe,EAAU;AAC/C,IAAA,OAAO;AACP,IAAA,QAAQ;AACjB,IAAA,MAAM;AACN,IAAA,YAAY;AACZ,IAAA,SAAS;IACT,kBAAkB,GAAG,CAAC;AACtB,IAAA,cAAc;AAEL,IAAA,KAAK,GAAG,QAAQ,CAAgC,MAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,OAAO,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI;AACpE,IAAA,CAAC,iDAAC;AACO,IAAA,SAAS,GAAG,QAAQ,CAAmB,MAAK;AACnD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC/B,OAAO,OAAO,EAAE,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,SAAS;eAChD,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI;cAC9B,IAAI;AACV,IAAA,CAAC,qDAAC;AACO,IAAA,UAAU,GAAG,QAAQ,CAAuB,MAAK;AACxD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC/B,OAAO,OAAO,EAAE,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,SAAS;cACjD,OAAO,CAAC;cACR,EAAE;AACR,IAAA,CAAC,sDAAC;AACO,IAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAClC,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAChC,IAAA,YAAY,GAAG,QAAQ,CAC9B,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,wDACnD;AACQ,IAAA,IAAI,GAAG,QAAQ,CAAwC,MAAK;AACnE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QACvB,OAAO;YACL,KAAK;AACL,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB;AACH,IAAA,CAAC,gDAAC;IAEF,WAAA,CACE,MAAuB,EACvB,OAAA,GAAmD,EAAE,EAAA;AAErD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;IACzB;;AAGA,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC1B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM;YAAE;AAC3B,QAAA,IAAI,CAAC,YAAY,IAAI;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ;QAC/B,IAAI,CAAC,MAAM,EAAE;QAEb,IAAI,MAAM,GAAkC,IAAI;QAChD,IAAI,QAAQ,GAAuB,IAAI;AACvC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;AACnC,YAAA,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,KAAI;AAC3B,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE;AACvC,oBAAA,MAAM,GAAG;wBACP,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,KAAK,EAAE,KAAK,CAAC,KAAe;qBAC7B;gBACH;YACF,CAAC;AACD,YAAA,kBAAkB,EAAE,CAAC,MAAM,KAAI;AAC7B,gBAAA,IAAI,MAAM,CAAC,OAAO,KAAK,WAAW,EAAE;AAClC,oBAAA,QAAQ,GAAG,MAAM,CAAC,UAAU;gBAC9B;YACF,CAAC;YACD,iBAAiB,EAAE,MAAK;gBACtB,MAAM,GAAG,IAAI;gBACb,QAAQ,GAAG,IAAI;gBACf,IAAI,CAAC,MAAM,EAAE;YACf,CAAC;YACD,cAAc,EAAE,MAAK;gBACnB,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,oBAAA,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;gBAC9D;qBAAO,IAAI,MAAM,EAAE;AACjB,oBAAA,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBACrD;gBACA,MAAM,GAAG,IAAI;gBACb,QAAQ,GAAG,IAAI;YACjB,CAAC;AACD,YAAA,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,KAAI;gBACzB,MAAM,GAAG,IAAI;gBACb,QAAQ,GAAG,IAAI;AACf,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACpB,CAAC;AACD,YAAA,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,KAAI;gBAC7B,MAAM,GAAG,IAAI;gBACb,QAAQ,GAAG,IAAI;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;AACF,SAAA,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE;QACpD,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,WAAW,CAAC;AACf,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC;AACzC,aAAA,CAAC;QACJ;IACF;;AAGA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;YACzB;QACF;AACA,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS;YAAE;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QACzB,IAAI,CAAC,MAAM,EAAE;IACf;;AAGS,IAAA,OAAO,GAAG,OACjB,OAAiB,EACjB,WAAoB,KACc;QAClC,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC,cAAc;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;AACzB,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;YAAE;AAExB,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;AACnE,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe;gBAAE;AACvC,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AAC9B,gBAAA,cAAc,EAAE;AACd,oBAAA,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ,CAAC,OAAO;wBACxB,cAAc,EAAE,QAAQ,CAAC,cAAc;AACxC,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC;AAC1D,QAAA,IAAI,CAAC,EAAE;YAAE;AACT,QAAA,OAAO,IAAI,CAAC,uBAAuB,CACjC,KAAK,EACL,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAC1C;AACH,IAAA,CAAC;;AAGQ,IAAA,MAAM,GAAG,OAChB,WAAoB,KACc;QAClC,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC,cAAc;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;AACzB,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;YAAE;AAExB,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;AACzD,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;gBAAE;AACjC,YAAA,OAAO,CAAC,IAAI,CACV,2FAA2F,CAC5F;YACD,IAAI,CAAC,MAAM,EAAE;YACb;QACF;AAEA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC;AAC1D,QAAA,IAAI,CAAC,EAAE;YAAE;AACT,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7E,IAAA,CAAC;;AAGQ,IAAA,gBAAgB,GAAG,IAAI,CAAC,OAAO;;AAE/B,IAAA,eAAe,GAAG,IAAI,CAAC,MAAM;;IAGtC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,IAAI;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;QACvB,IAAI,CAAC,MAAM,EAAE;IACf;AAEA,IAAA,WAAW,CAAC,OAAiC,EAAA;AAC3C,QAAA,IAAI,CAAC,kBAAkB,IAAI,CAAC;AAC5B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;YAC/B,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;QACtD;aAAO;YACL,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/C;AAEA,QAAA,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC;QACpC,IAAI,OAAO,GAAmC,IAAI;AAClD,QAAA,IAAI;AACF,YAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI;QAClD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC;YAC/C;QACF;AAEA,QAAA,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;YAC1B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAC3B,CAAC,QAAQ,KAAI;AACX,gBAAA,IAAI,UAAU,KAAK,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ;oBAAE;gBACzD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC;AACnD,YAAA,CAAC,EACD,CAAC,KAAc,KAAK,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,CACpE;YACD;QACF;AACA,QAAA,IAAI,CAAC,OAAO;YAAE;QACd,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC;IACnD;AAEA,IAAA,gBAAgB,CACd,OAAiC,EACjC,KAA6B,EAC7B,UAAkB,EAAA;AAElB,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,kBAAkB;YAAE;AAC5C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO;AACrC,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,IAAI,QAAwC;AAC5C,QAAA,IAAI;YACF,QAAQ,GAAG,OAAO,CAAC;gBACjB,KAAK;gBACL,SAAS,EACP,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI;AACtE,gBAAA,UAAU,EAAE,OAAO,CAAC,IAAI,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,EAAE;gBACjE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,aAAA,CAAC;QACJ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,UAAU,CAAC;YACjD;QACF;AAEA,QAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;YAC3B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC5B,CAAC,MAAM,KAAI;AACT,gBAAA,IAAI,UAAU,KAAK,IAAI,CAAC,kBAAkB;AAAE,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AACtE,YAAA,CAAC,EACD,CAAC,KAAc,KAAK,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,UAAU,CAAC,CACtE;QACH;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC5B;IACF;IAEA,uBAAuB,CAAC,KAAc,EAAE,UAAkB,EAAA;AACxD,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,kBAAkB;YAAE;AAC5C,QAAA,OAAO,CAAC,KAAK,CACX,4EAA4E,EAC5E,KAAK,CACN;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEA,yBAAyB,CAAC,KAAc,EAAE,UAAkB,EAAA;AAC1D,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,kBAAkB;YAAE;AAC5C,QAAA,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC;AACpE,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEA,SAAS,CACP,UAAgC,EAChC,WAA+B,EAAA;QAE/B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,KAAK,SAAS,EAAE;YACtD,OAAO,CAAC,IAAI,CACV,CAAA,qFAAA,EAAwF,UAAU,CAAC,MAAM,CAAA,8CAAA,CAAgD,CAC1J;QACH;QACA,MAAM,EAAE,GAAG,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3C,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;YAC/D,OAAO,CAAC,IAAI,CACV,CAAA,2DAAA,EAA8D,MAAM,CAAC,EAAE,CAAC,CAAA,CAAA,CAAG,CAC5E;AACD,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,uBAAuB,CAC3B,KAAoB,EACpB,QAA4B,EAAA;QAE5B,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;YAAE;AAChE,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,CAAA,8BAAA,EAAiC,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;AAC/D,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAClB;QACF;AACA,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAAE;AAEhC,QAAA,IAAI;AACF,YAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAC3C,CAAC,UAAU,MACR;gBACC,EAAE,EAAEC,YAAU,EAAE;AAChB,gBAAA,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,OAAO,EAAE,UAAU,CAAC,OAAO;AAC5B,aAAA,CAAY,CAChB;YACD,KAAK,MAAM,OAAO,IAAI,YAAY;AAAE,gBAAA,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;AAC7D,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC9D;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB,YAAA,MAAM,KAAK;QACb;IACF;IAEA,YAAY,CACV,KAAoB,EACpB,OAA4B,EAAA;AAE5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,GAA4B;AAChC,QAAA,IAAI;YACF,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;QACpC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAC9B;QAEA,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;YAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO;YAChD,OAAO,CAAC,KAAK,CACX;AACE,kBAAE;AACF,kBAAE,mFAAmF,EACvF,KAAK,CACN;AACD,YAAA,IAAI,YAAY;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,YAAA,MAAM,KAAK;AACb,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO;AAAE,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO;AAC9D,QAAA,OAAO,OAAO;IAChB;IAEA,MAAM,CAAC,QAAwB,IAAI,EAAA;AACjC,QAAA,IAAI,CAAC,kBAAkB,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;IAC9B;AACD;AAED;;;;;;AAMG;AACG,SAAU,eAAe,CAC7B,OAAA,GAAmD,EAAE,EAAA;AAErD,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,0BAA0B,EAAE;AAC3D,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACF,IAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO;AACzC,IAAA,MAAM,OAAO,GACX,OAAO,iBAAiB,KAAK;AAC3B,UAAE;AACF,UAAE,QAAQ,CACN,MACE,iBAAiB;YACjB,iBAAiB,EAAE,OAAO,EAAE;AAC5B,YAAA,gBAAgB,CACnB;AACP,IAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACvC,IAAA,MAAM,UAAU,GAAG,IAAI,mBAAmB,CACxC,CAAC,KAAK,EAAE,UAAU,KAAK,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC,EACzE,OAAO,CACR;AACD,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAK;AAC7B,QAAA,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,KAAK;AAC3B,QAAA,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;AACzB,QAAA,UAAU,CAAC,WAAW,CAAC,iBAAiB,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC;AACzE,IAAA,CAAC,sDAAC;AAEF,IAAA,UAAU,CAAC,SAAS,CAAC,MAAK;QACxB,UAAU,CAAC,OAAO,EAAE;QACpB,UAAU,CAAC,OAAO,EAAE;AACtB,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,UAAU;AACnB;;ACjVA;AACA,SAAS,UAAU,CAAI,KAAoB,EAAA;AACzC,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU,GAAI,KAAiB,GAAG,MAAM,KAAK;AACvE;AAEA;;;;AAIG;AACH,SAAS,aAAa,CAAC,MAAe,EAAA;AACpC,IAAA,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,GACpE,MAAM;IACR,OAAO;QACL,EAAE;QACF,OAAO;QACP,IAAI;QACJ,QAAQ;QACR,SAAS;QACT,SAAS;AACT,QAAA,IAAI,SAAS,KAAK,SAAS,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;KAClD;AACH;AAEA;;;;;;;;;AASG;MACU,YAAY,CAAA;AACd,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAChC,MAAM,GAAiBC,kBAAkB,CAAC;;;;AAIjD,QAAA,KAAK,GAAG,CAAC,GAAG,IAA8B,KACxC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAiB;AAC7C,KAAA,CAAC;IACO,cAAc,GAAmB,EAAE;AAEnC,IAAA,QAAQ,GAAG,MAAM,CAAW,EAAE,oDAAC;AAC/B,IAAA,eAAe,GAAG,MAAM,CAAU,KAAK,2DAAC;AACxC,IAAA,WAAW,GAAG,MAAM,CAAe,IAAI,uDAAC;AACxC,IAAA,eAAe,GAAG,MAAM,CAAe,IAAI,2DAAC;AAC5C,IAAA,eAAe,GAAG,MAAM,CAAU,KAAK,2DAAC;AACxC,IAAA,sBAAsB,GAAG,MAAM,CAAU,KAAK,kEAAC;AAC/C,IAAA,WAAW,GAAG,MAAM,CAAU,KAAK,uDAAC;AAE7C;;;;;;AAMG;AACM,IAAA,qBAAqB,GAAG,MAAM,CAAU,KAAK,iEAAC;AAE9C,IAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AACpC,IAAA,KAAK;AACL,IAAA,SAAS;AACT,IAAA,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;AAClD,IAAA,SAAS;AACT,IAAA,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;AAClD,IAAA,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE;AAChE,IAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;IAEnD,WAAA,CAAY,KAAyB,EAAE,UAAsB,EAAA;QAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;QACzC,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC;QACzD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;;;QAGzC,MAAM,SAAS,GAAG,MAAe,OAAO,EAAE,KAAK,KAAK;QAEpD,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;;;AAKnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU;AAC9C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB;;;;;AAK9D,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe;QACxD,MAAM,mBAAmB,GAAG,MAC1B,eAAe,EAAE,EAAE,IAAI,KAAK,KAAK;QACnC,MAAM,wBAAwB,GAAG,MAC/B,eAAe,EAAE,EAAE,SAAS,KAAK,KAAK;QACxC,MAAM,0BAA0B,GAAG,MACjC,CAAC,CAAC,UAAU,EAAE;AACd,YAAA,aAAa,EAAE,KAAK,qCAAqC,CAAC,SAAS;YACnE,CAAC,mBAAmB,EAAE;AAExB,QAAA,MAAM,YAAY,GAAG,MACnB,UAAU,EAAE,GAAG,IAAI,GAAG,IAAI,KAAK,CAAC,+BAA+B,CAAC;AAClE,QAAA,MAAM,cAAc,GAAG,MACrB,0BAA0B;AACxB,cAAE,IAAI,KAAK,CACP,+DAA+D;cAEjE,IAAI;AACV,QAAA,MAAM,cAAc,GAAG,MACrB,wBAAwB;AACtB,cAAE;AACF,cAAE,IAAI,KAAK,CACP,+DAA+D,CAChE;AAEP,QAAA,MAAM,iBAAiB,GAAG,MACxB,SAAS,EAAE;YACX,CAAC,CAAC,UAAU,EAAE;AACd,YAAA,CAAC,0BAA0B,EAAE;AAC7B,YAAA,CAAC,IAAI,CAAC,qBAAqB,EAAE;;;AAI/B,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CACnB,MAAM,YAAY,EAAE,IAAI,cAAc,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,iDAC/D;;;;;AAKD,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,qDAAC;AACnD,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,MACxB,YAAY,EAAE,IAAI,cAAc;AAC9B,cAAE;cACA,iBAAiB,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAClD;;;;AAKD,QAAA,IAAI,iBAAqC;QACzC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,WAAW,GAAG,OAAO,EAAE;AAC7B,YAAA,MAAM,OAAO,GAAG,SAAS,EAAE;YAC3B,SAAS,CAAC,MAAK;;;;;gBAKb,IAAI,CAAC,OAAO,EAAE;AACZ,oBAAA,IAAI,iBAAiB,KAAK,SAAS,EAAE;wBACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC;wBAC9D,iBAAiB,GAAG,SAAS;oBAC/B;oBACA;gBACF;AACA,gBAAA,IAAI,iBAAiB,KAAK,WAAW,EAAE;oBACrC;gBACF;AACA,gBAAA,IAAI,iBAAiB,KAAK,SAAS,EAAE;oBACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC;gBAChE;AACA,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;gBACnE,iBAAiB,GAAG,WAAW;AACjC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;;;;;;;;;;;;;;;;QAiBF,IAAI,qBAAqB,GAAkB,IAAI;QAC/C,MAAM,CAAC,MAAK;;;;;AAKV,YAAA,MAAM,MAAM,GAAG,SAAS,EAAE;AAC1B,YAAA,MAAM,GAAG,GAAG,UAAU,EAAE;AACxB,YAAA,MAAM,MAAM,GAAG,aAAa,EAAE;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1C,YAAA,MAAM,EAAE,GAAG,OAAO,EAAE;AACpB,YAAA,MAAM,QAAQ,GAAG,eAAe,EAAE;AAClC,YAAA,MAAM,SAAS,GAAG,KAAK,EAAE;AACzB,YAAA,MAAM,aAAa,GAAG,mBAAmB,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,KAAK;YAEpD,SAAS,CAAC,MAAK;gBACb,MAAM,YAAY,GAAG,MAAW;AAC9B,oBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAChC,wBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC9B;oBACA,qBAAqB,GAAG,IAAI;AAC5B,oBAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;AACvC,gBAAA,CAAC;;;gBAID,IAAI,CAAC,MAAM,EAAE;AACX,oBAAA,YAAY,EAAE;oBACd;gBACF;gBAEA,IAAI,CAAC,GAAG,EAAE;AACR,oBAAA,YAAY,EAAE;oBACd;gBACF;AAEA,gBAAA,IAAI,MAAM,KAAK,qCAAqC,CAAC,SAAS,EAAE;oBAC9D;gBACF;gBAEA,IAAI,CAAC,aAAa,EAAE;AAClB,oBAAA,YAAY,EAAE;oBACd;gBACF;AAEA,gBAAA,MAAM,OAAO,GAA0B;AACrC,oBAAA,UAAU,EAAE,GAAG;AACf,oBAAA,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE;oBACvB,KAAK;AACL,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,eAAe,EAAE,QAAQ;AACzB,oBAAA,KAAK,EAAE,SAAS;iBACjB;;;;;;AAOD,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC/B,oBAAA,GAAG,OAAO;oBACV,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KACpD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAC1B;AACF,iBAAA,CAAC;AACF,gBAAA,IAAI,SAAS,KAAK,qBAAqB,EAAE;oBACvC;gBACF;gBAEA,qBAAqB,GAAG,SAAS;AACjC,gBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AAC/B,gBAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,IAAI,KACrE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CACzC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,QAAQ,KAChE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CACpC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,QAAQ,KAClE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CACtC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,KACtE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CACnC;AAED,QAAA,UAAU,CAAC,SAAS,CAAC,MAAK;YACxB,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,iBAAiB,KAAK,SAAS,EAAE;gBACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC;gBAC9D,iBAAiB,GAAG,SAAS;YAC/B;AACF,QAAA,CAAC,CAAC;IACJ;AAES,IAAA,YAAY;AACZ,IAAA,aAAa;AACb,IAAA,eAAe;AACf,IAAA,YAAY;;;;IAKZ,gBAAgB,GAAG,MAAW;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC7B,IAAA,CAAC;IAEQ,cAAc,GAAG,MAAW;AACnC,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC9B,IAAA,CAAC;IAEQ,cAAc,GAAG,MAAW;AACnC,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC9B,IAAA,CAAC;;IAGD,QAAQ,GAAA;AACN,QAAA,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;YAC9C,YAAY,CAAC,WAAW,EAAE;QAC5B;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;AAEA;;;;AAIG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,MAAM,CAAC,MAAM,CAACC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AACvD,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,CAAC,CAAC,EACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAACC,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC9D,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,QAAA,CAAC,CAAC,EACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAACC,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1D,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,CAAC,CAAC,EACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAACC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC5D,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,QAAA,CAAC,CAAC,EACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAACC,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACzD,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,QAAA,CAAC,CAAC,EACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAACC,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAChE,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;AACxC,QAAA,CAAC,CAAC,EACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAACC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACxD,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B,CAAC,CAAC,CACH;IACH;AAEA;;;;AAIG;IACH,cAAc,CACZ,cAAkC,EAClC,QAA2D,EAAA;AAE3D,QAAA,OAAO,CAAC,QAAgB,EAAE,IAAI,GAAG,EAAE,KAAI;AACrC,YAAA,MAAM,KAAK,GAAG,cAAc,EAAE;YAC9B,IAAI,KAAK,EAAE;AACT,gBAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YAC9B;AACA,YAAA,OAAO,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;AACjC,QAAA,CAAC;IACH;AACD;AAED;;;;AAIG;MAEU,wBAAwB,CAAA;AACnC;;;;;;AAMG;IACH,MAAM,CAAC,KAAyB,EAAE,UAAsB,EAAA;AACtD,QAAA,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC;IAC5C;wGAVW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA;;4FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AAclC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AACG,SAAU,aAAa,CAAC,KAAyB,EAAA;AACrD,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAChD,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACrC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC;AAC1C;;AC5jBA;AACO,MAAM,2BAA2B,GAAsB;AAC5D,IAAA,oBAAoB,EAAE,mBAAmB;AACzC,IAAA,0CAA0C,EAAE,YAAY;AACxD,IAAA,2CAA2C,EAAE,QAAQ;AACrD,IAAA,2CAA2C,EAAE,QAAQ;AACrD,IAAA,8BAA8B,EAAE,qBAAqB;AACrD,IAAA,gCAAgC,EAAE,OAAO;AACzC,IAAA,oCAAoC,EAAE,MAAM;AAC5C,IAAA,0CAA0C,EAAE,QAAQ;AACpD,IAAA,uCAAuC,EAAE,MAAM;AAC/C,IAAA,oCAAoC,EAAE,eAAe;AACrD,IAAA,sCAAsC,EAAE,cAAc;AACtD,IAAA,qCAAqC,EAAE,YAAY;AACnD,IAAA,sCAAsC,EAAE,YAAY;AACpD,IAAA,kCAAkC,EAAE,MAAM;AAC1C,IAAA,kCAAkC,EAAE,MAAM;AAC1C,IAAA,kBAAkB,EAChB,4DAA4D;AAC9D,IAAA,kBAAkB,EAAE,2BAA2B;;MAGpC,mBAAmB,GAAG,IAAI,cAAc,CACnD,qBAAqB;SAGP,gBAAgB,GAAA;IAC9B,QACE,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,2BAA2B;AAE/B;AAEM,SAAU,wBAAwB,CACtC,MAAkC,EAAA;IAElC,OAAO;AACL,QAAA,OAAO,EAAE,mBAAmB;AAC5B,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,2BAA2B;AAC9B,YAAA,GAAG,MAAM;AACV,SAAA;KACF;AACH;;MCvDsB,SAAS,CAAA;AAEpB,IAAA,WAAW,GAAG,MAAM,CAAe,EAAE,uDAAC;AACtC,IAAA,kBAAkB,GAAoB,MAAM,CAAC,KAAK,8DAAC;AACnD,IAAA,oBAAoB,GAAoB,MAAM,CAAC,KAAK,gEAAC;AACrD,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AACxB,IAAA,WAAW,GAAG,MAAM,CAAe,EAAE,uDAAC;AACtC,IAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK,8DAAC;AAClC,IAAA,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;AAIvC,IAAA,gBAAgB,CAAC,WAAuB,EAAE,MAAc,IAAS;IACjE,mBAAmB,CAAC,UAAgB,EAAA,EAAyB;AAE7D,IAAA,OAAO,KAAU;IACjB,gBAAgB,CAAC,GAAW,EAAA,EAAS;IACrC,cAAc,CAAC,MAAiB,EAAA,EAAS;IACzC,eAAe,CAAC,MAAiB,EAAA,EAAS;IAC1C,UAAU,CAAC,MAAiB,EAAA,EAAS;wGAnBjB,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAT,SAAS,EAAA,CAAA;;4FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAD9B;;SAuBe,eAAe,GAAA;AAC7B,IAAA,IAAI;AACF,QAAA,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B;AAAE,IAAA,MAAM;AACN,QAAA,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE;IACH;AACF;;ACrBM,MAAO,kBAAmB,SAAQ,KAAK,CAAA;AAClC,IAAA,IAAI;AAEb,IAAA,WAAA,CAAY,IAA4B,EAAA;AACtC,QAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,oBAAoB;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IAClB;AACD;AAED;;;;;;AAMG;AACI,eAAe,eAAe,CACnC,IAAoB,EACpB,SAAe,EACf,QAAQ,GAAG,gBAAgB,EAAA;AAE3B,IAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI;IAC3B,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,kBAAkB,CAAC;YAC3B,IAAI,EAAE,sBAAsB,CAAC,eAAe;AAC5C,YAAA,OAAO,EAAE,+BAA+B;AACxC,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,QAAkB;AACtB,IAAA,IAAI;QACF,QAAQ;YACN,IAAI,CAAC,gBAAgB,KAAK;AACxB,kBAAE,MAAM,KAAK,CAAC,UAAU,EAAE;AACtB,oBAAA,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE;AAChE,oBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AACnB,wBAAA,MAAM,EAAE,YAAY;AACpB,wBAAA,IAAI,EAAE;AACJ,4BAAA,KAAK,EAAE,MAAM,YAAY,CAAC,SAAS,CAAC;AACpC,4BAAA,QAAQ,EAAE,SAAS,CAAC,IAAI,IAAI,YAAY;4BACxC,QAAQ;AACT,yBAAA;qBACF,CAAC;iBACH;AACH,kBAAE,MAAM,KAAK,CAAC,CAAA,EAAG,UAAU,aAAa,EAAE;AACtC,oBAAA,MAAM,EAAE,MAAM;;AAEd,oBAAA,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,oBAAA,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC;AACtC,iBAAA,CAAC;IACV;IAAE,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,kBAAkB,CAAC;YAC3B,IAAI,EAAE,sBAAsB,CAAC,aAAa;AAC1C,YAAA,OAAO,EACL,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,wBAAwB;AACnE,YAAA,SAAS,EAAE,IAAI;AAChB,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,QAAA,MAAM,MAAM,oBAAoB,CAAC,QAAQ,CAAC;IAC5C;AAEA,IAAA,QAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE;AAC/B;AAEA,SAAS,UAAU,CAAC,SAAe,EAAE,QAAgB,EAAA;AACnD,IAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;IAC/B,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;AAC7C,IAAA,OAAO,QAAQ;AACjB;AAEA,SAAS,eAAe,CACtB,OAAyC,EAAA;AAEzC,IAAA,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE;AAC7B,IAAA,OAAO,MAAM,CAAC,cAAc,CAAC;AAC7B,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,YAAY,CAAC,IAAU,EAAA;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,QAAA,MAAM,CAAC,SAAS,GAAG,MAAK;;AAEtB,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB;AACtC,YAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,QAAA,CAAC;AACD,QAAA,MAAM,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACrE,QAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5B,IAAA,CAAC,CAAC;AACJ;AAEA;AACA,eAAe,oBAAoB,CACjC,QAAkB,EAAA;AAElB,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,GAAG;AAExC,IAAA,IAAI,IAAa;AACjB,IAAA,IAAI;AACF,QAAA,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;IAC9B;AAAE,IAAA,MAAM;QACN,OAAO,IAAI,kBAAkB,CAAC;YAC5B,IAAI,EAAE,sBAAsB,CAAC,cAAc;YAC3C,OAAO,EAAE,QAAQ,QAAQ,CAAC,MAAM,CAAA,EAAA,EAAK,QAAQ,CAAC,UAAU,CAAA,CAAE;YAC1D,SAAS;AACV,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,4BAA4B,CAAC,IAAI,CAAC,EAAE;QACtC,OAAO,IAAI,kBAAkB,CAAC;YAC5B,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;AACnC,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,OAAO,GACX,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS,IAAI;AACxD,UAAE,MAAM,CAAE,IAA6B,CAAC,OAAO;UAC7C,sBAAsB;IAE5B,OAAO,IAAI,kBAAkB,CAAC;QAC5B,IAAI,EAAE,sBAAsB,CAAC,cAAc;QAC3C,OAAO;QACP,SAAS;AACV,KAAA,CAAC;AACJ;AAEA,SAAS,4BAA4B,CACnC,IAAa,EAAA;AAEb,IAAA,QACE,OAAO,IAAI,KAAK,QAAQ;AACxB,QAAA,IAAI,KAAK,IAAI;AACb,QAAA,OAAQ,IAAmC,CAAC,KAAK,KAAK,QAAQ;AAC9D,QAAA,OAAQ,IAAmC,CAAC,OAAO,KAAK,QAAQ;AAEpE;;MCrIa,cAAc,CAAA;AAYf,IAAA,gBAAA;AACA,IAAA,aAAA;AACA,IAAA,MAAA;AAbF,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;IAC9B,kBAAkB,GAAG,IAAI,eAAe,CAAc;AAC5D,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,CAAC;AACZ,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,YAAY,EAAE,CAAC;AAChB,KAAA,CAAC;AAEK,IAAA,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAE5D,IAAA,WAAA,CACU,gBAAkC,EAClC,aAA4B,EAC5B,MAAc,EAAA;QAFd,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,MAAM,GAAN,MAAM;IACb;AAEH;;;;AAIG;AACH,IAAA,qBAAqB,CACnB,OAA8C,EAC9C,SAAA,GAAoB,EAAE,EAAA;AAEtB,QAAA,MAAM,EAAE,GAAG,OAAO,YAAY,UAAU,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO;;AAG1E,QAAA,MAAM,OAAO,GAAG,KAAK,CACnB,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,EACvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAC/B,CAAC,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC;AACf,QAAA,YAAY,CAAC,EAAE,EAAE,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7D,QAAA,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,EAC7C,oBAAoB,CAClB,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;AAC7B,YAAA,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;AAC3B,YAAA,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,YAAY,CACpC,EACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;;AAGD,QAAA,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1B,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO;IAChB;AAEA;;;;AAIG;AACH,IAAA,cAAc,CACZ,OAA8C,EAC9C,MAAA,GAAkB,IAAI,EAAA;AAEtB,QAAA,MAAM,EAAE,GAAG,OAAO,YAAY,UAAU,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO;AAE1E,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,IAAI,MAAM,IAAI,gBAAgB,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE;gBAChE,EAAE,CAAC,QAAQ,CAAC;oBACV,GAAG,EAAE,EAAE,CAAC,YAAY;AACpB,oBAAA,QAAQ,EAAE,QAAQ;AACnB,iBAAA,CAAC;YACJ;iBAAO;AACL,gBAAA,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY;YAChC;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;AACH,IAAA,UAAU,CACR,OAA8C,EAC9C,SAAA,GAAoB,EAAE,EAAA;AAEtB,QAAA,MAAM,EAAE,GAAG,OAAO,YAAY,UAAU,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO;QAC1E,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU;IACtD;AAEA;;AAEG;IACI,cAAc,CAAC,OAAoB,EAAE,SAAiB,EAAA;AAC3D,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;AACnC,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;AACzC,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;AACzC,QAAA,MAAM,kBAAkB,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY;AAClE,QAAA,MAAM,UAAU,GAAG,kBAAkB,IAAI,SAAS;QAElD,OAAO;YACL,UAAU;YACV,SAAS;YACT,YAAY;YACZ,YAAY;SACb;IACH;AAEA;;;;AAIG;AACH,IAAA,aAAa,CACX,OAA8C,EAC9C,UAAA,GAAqB,GAAG,EAAA;AAExB,QAAA,MAAM,EAAE,GAAG,OAAO,YAAY,UAAU,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO;AAC1E,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAuB;QAElD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AACpD,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,oBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACrB,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;;AAG1B,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAK;YAC3B,cAAc,CAAC,UAAU,EAAE;AAC7B,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzE;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;IACpC;wGA9IW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCfY,qBAAqB,CAAA;AAMZ,IAAA,MAAA;AALZ,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAC9B,IAAA,SAAS,GAAG,IAAI,GAAG,EAA+B;AAClD,IAAA,YAAY,GAAG,IAAI,GAAG,EAA6C;AACnE,IAAA,cAAc,GAAG,IAAI,GAAG,EAAuB;AAEvD,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;IAAW;AAErC;;;;;AAKG;AACH,IAAA,cAAc,CACZ,OAA8C,EAC9C,aAAqB,CAAC,EACtB,qBAA6B,GAAG,EAAA;AAEhC,QAAA,MAAM,EAAE,GAAG,OAAO,YAAY,UAAU,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO;;QAG1E,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,YAAY,EAAE;QAClD;;AAGA,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,CAAc;YACpD,KAAK,EAAE,EAAE,CAAC,WAAW;YACrB,MAAM,EAAE,EAAE,CAAC,YAAY;AACvB,YAAA,UAAU,EAAE,KAAK;AAClB,SAAA,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC;;QAGvC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AACpD,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE;AAE1B,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,KAAK;gBAAE;YAEZ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW;AAE3C,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;;gBAEnB,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnD,IAAI,eAAe,EAAE;oBACnB,YAAY,CAAC,eAAe,CAAC;gBAC/B;;gBAGA,YAAY,CAAC,IAAI,CAAC;oBAChB,KAAK;oBACL,MAAM;AACN,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAC;;AAGF,gBAAA,IAAI,kBAAkB,GAAG,CAAC,EAAE;AAC1B,oBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;wBACrC,YAAY,CAAC,IAAI,CAAC;4BAChB,KAAK;4BACL,MAAM;AACN,4BAAA,UAAU,EAAE,KAAK;AAClB,yBAAA,CAAC;AACF,wBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;oBAChC,CAAC,EAAE,kBAAkB,CAAC;oBAEtB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC;gBACtC;qBAAO;;oBAEL,YAAY,CAAC,IAAI,CAAC;wBAChB,KAAK;wBACL,MAAM;AACN,wBAAA,UAAU,EAAE,KAAK;AAClB,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;;AAGF,QAAA,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC;;QAGtC,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CACjD,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,EAC9D,oBAAoB,CAClB,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;AACnB,YAAA,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AACrB,YAAA,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAChC,EACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;AAED,QAAA,OAAO,UAAU;IACnB;AAEA;;;AAGG;AACH,IAAA,SAAS,CAAC,OAA8C,EAAA;AACtD,QAAA,MAAM,EAAE,GAAG,OAAO,YAAY,UAAU,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO;;QAG1E,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,EAAE;YACX,YAAY,CAAC,OAAO,CAAC;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC;;QAGA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,UAAU,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B;;QAGA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B;IACF;AAEA;;;AAGG;AACH,IAAA,cAAc,CAAC,OAA8C,EAAA;AAI3D,QAAA,MAAM,EAAE,GAAG,OAAO,YAAY,UAAU,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO;QAC1E,OAAO;YACL,KAAK,EAAE,EAAE,CAAC,WAAW;YACrB,MAAM,EAAE,EAAE,CAAC,YAAY;SACxB;IACH;AAEA;;;AAGG;AACH,IAAA,eAAe,CACb,OAA8C,EAAA;AAE9C,QAAA,MAAM,EAAE,GAAG,OAAO,YAAY,UAAU,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO;QAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI;IACvC;IAEA,WAAW,GAAA;;AAET,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;;AAG3B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC3D,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;AAGtB,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;;AAGzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;wGA5KW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAArB,IAAA,OAAA,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;;4FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACTD;;;AAGG;AACG,SAAU,EAAE,CAAC,GAAG,MAAoB,EAAA;AACxC,IAAA,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B;;ACDA;;;;;AAKG;AACG,SAAU,mBAAmB,CACjC,OAAkC,EAClC,MAAkC,EAAA;IAElC,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;AAErD,IAAA,qBAAqB,CAAC,QAAQ,EAAE,MAAK;AACnC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,QAAA,MAAM,CAAC,CAAC,QAAQ,KAAI;AAClB,YAAA,MAAM,YAAY,GAAG,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,EAAE,GAAG,OAAO;YACxE,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YAEnD,QAAQ,CAAC,MAAK;AACZ,gBAAA,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;AACnC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;ACuDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;SACa,cAAc,GAAA;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE;AAEtD,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE;IAErC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAACC,eAAe,CAAC,EAAE;AACvD,QAAA,YAAY,EAAEA,eAAe,CAAC,YAAY,CAAC;AAC5C,KAAA,CAAC;IACF,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAACC,wBAAwB,CAAC,EAAE;AACjE,QAAA,YAAY,EAAEA,wBAAwB,CAAC,YAAY,CAAC;AACrD,KAAA,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAACC,oBAAoB,CAAC,EAAE;AACzD,QAAA,YAAY,EAAEA,oBAAoB,CAAC,YAAY,CAAC;AACjD,KAAA,CAAC;IACF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAACC,wBAAwB,CAAC,EAAE;AACnE,QAAA,YAAY,EAAEA,wBAAwB,CAAC,YAAY,CAAC;AACrD,KAAA,CAAC;IACF,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAACC,6BAA6B,CAAC,EAAE;AAC3E,QAAA,YAAY,EAAEA,6BAA6B,CAAC,YAAY,CAAC;AAC1D,KAAA,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,SAAS;QACT,KAAK;QACL,WAAW;QACX,cAAc;AACd,QAAA,OAAO,EAAE,MAAM,KAAK,CAAC,OAAO,EAAE;QAC9B,SAAS,EAAE,CAAC,KAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;AACvD,QAAA,YAAY,EAAE,CAAC,EAAU,EAAE,OAAsB,KAC/C,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC;QACjC,YAAY,EAAE,CAAC,EAAU,KAAK,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;KACrD;AACH;;AC5GA;;AAEG;MACU,WAAW,GAAG,IAAI,cAAc,CAE3C,aAAa;;ACpCf;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACG,SAAU,UAAU,CACxB,aAA+B,EAC/B,OAA6B,EAAA;AAE7B,IAAA,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO;IAEpE,aAAa,CAAC,KAAK,EAAE;AAErB,IAAA,MAAM,aAAa,GAAG,IAAI,IAAI,gBAAgB;AAC9C,IAAA,MAAM,iBAAiB,GAAG,QAAQ,IAAI,aAAa,CAAC,QAAQ;AAE5D,IAAA,IAAI,aAAa,YAAY,WAAW,EAAE;;AAExC,QAAA,OAAO,aAAa,CAAC,kBAAkB,CAAC,aAAa,EAAE;YACrD,SAAS,EAAE,KAAK,IAAI,EAAE;YACtB,KAAK,EAAE,KAAK,IAAI,EAAE;AACZ,SAAA,CAAC;IACX;AAAO,SAAA,IAAI,eAAe,CAAC,aAAa,CAAC,EAAE;;AAEzC,QAAA,IAAI;AACF,YAAA,OAAO,eAAe,CACpB,aAAa,EACb,aAAwB,EACxB,KAAK,EACL,iBAAiB,EACjB,OAAO,CACR;QACH;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,aAAa,EAAE,KAAK,CAAC;;QAEnE;IACF;;AAGA,IAAA,OAAO;AACL,UAAE,eAAe,CACb,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,iBAAiB,EACjB,OAAO;UAET,IAAI;AACV;AAEA;;AAEG;AACH,SAAS,eAAe,CACtB,aAA+B,EAC/B,SAAkB,EAClB,KAAkB,EAClB,QAAmB,EACnB,OAA8C,EAAA;AAE9C,IAAA,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,CAAC,SAAS,EAAE;QAC5D,QAAQ;AACT,KAAA,CAAC;IAEF,IAAI,KAAK,EAAE;;AAET,QAAA,MAAM,MAAM,GAAS,SAAiB,CAAC,IAAI;AAC3C,QAAA,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;AAEzE,QAAA,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC/B,YAAA,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAY,CAAC;QAC9C;aAAO;AACL,YAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACvB,gBAAA,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC3B,oBAAA,MAAM,KAAK,GAAI,KAAa,CAAC,GAAG,CAAC;AACjC,oBAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;gBACnC;YACF;QACF;IACF;IAEA,IAAI,OAAO,EAAE;;AAEX,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAe;QAC7C,MAAM,aAAa,GAAU,EAAE;AAE/B,QAAA,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1D,YAAA,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE;gBAClC,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;AAC3D,gBAAA,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;YAClC;QACF;;AAGA,QAAA,YAAY,CAAC,SAAS,CAAC,MAAK;AAC1B,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;AACnD,QAAA,CAAC,CAAC;IACJ;;AAGA,IAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAE9C,IAAA,OAAO,YAAY;AACrB;AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,KAAU,EAAA;;IAExC,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS;AACzD;AAEA;;AAEG;AACG,SAAU,WAAW,CAAC,KAAU,EAAA;IACpC,OAAO,KAAK,YAAY,WAAW,IAAI,eAAe,CAAC,KAAK,CAAC;AAC/D;AAEA;;AAEG;AACG,SAAU,kBAAkB,CAChC,KAA+B,EAC/B,gBAAqC,EAAA;IAErC,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE;IACxC;AAEA,IAAA,IAAI,KAAK,YAAY,WAAW,EAAE;AAChC,QAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC5B;AAEA,IAAA,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAA,OAAO,EAAE,SAAS,EAAE,KAAgB,EAAE;IACxC;AAEA,IAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE;AACxC;AAEA;;;;;;;;;;;;;;;;AAgBG;AACG,SAAU,gBAAgB,CAC9B,SAA8C,EAC9C,QAAW,EAAA;AAEX,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8B;AAEpD,IAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;AAC1B,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC;AAC/B,QAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC;AACtC,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACjE;AAEA,IAAA,OAAO,MAAM;AACf;AAEA;;;;;;;;;;;;;;;AAeG;AACG,SAAU,YAAY,CAAC,KAAgC,EAAA;AAC3D,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B;;AAGpD,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChD,QAAA,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAkB,EAAE,CAAC;QACrD;IACF;IAEA,OAAO;AACL,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,QAAQ,EAAE,OAAO;KAClB;AACH;AAEA;;;;;;;;;;;;;;AAcG;SACa,aAAa,GAAA;IAC3B,OAAO,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAChD;AAEA;;;;;;;;;;;;;;AAcG;AACG,SAAU,kBAAkB,CAChC,gBAAyB,EACzB,QAAiB,EAAA;;AAGjB,IAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,aAAa,EAAE,GAAG,IAAI;IAEhD,OAAO,CACL,aAA+B,EAC/B,IAAmB,EACnB,KAAkB,EAClB,OAA8C,KAC5C;;AAEF,QAAA,IAAI,QAAQ,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClC,IAAI,KAAK,EAAE;gBACT,IAAI,KAAK,CAAC,SAAS;AAAE,oBAAA,IAAI,GAAG,KAAK,CAAC,SAAS;qBACtC,IAAI,KAAK,CAAC,QAAQ;AAAE,oBAAA,IAAI,GAAG,KAAK,CAAC,QAAQ;YAChD;QACF;QAEA,OAAO,UAAU,CAAC,aAAa,EAAE;YAC/B,IAAI;YACJ,gBAAgB;YAChB,KAAK;YACL,OAAO;AACR,SAAA,CAAC;AACJ,IAAA,CAAC;AACH;;AChSA;;;;;;;;;;;;AAYG;MAyBU,WAAW,CAAA;AAYc,IAAA,aAAA;AAC1B,IAAA,GAAA;AAZV,IAAA,IAAI,GAAG,KAAK,CAA2C,SAAS,gDAAC;AACjE,IAAA,OAAO,GAAG,KAAK,CAAkB,SAAS,mDAAC;AAC3C,IAAA,gBAAgB,GAAG,KAAK,CAAwB,SAAS,4DAAC;AAC1D,IAAA,OAAO,GAAG,KAAK,CAAmD,SAAS,mDAAC;AAGpE,IAAA,aAAa;AAEb,IAAA,YAAY;IAEpB,WAAA,CACoC,aAA+B,EACzD,GAAsB,EAAA;QADI,IAAA,CAAA,aAAa,GAAb,aAAa;QACvC,IAAA,CAAA,GAAG,GAAH,GAAG;IACV;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;;YAEnB,IAAI,CAAC,UAAU,EAAE;QACnB;aAAO,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;;YAElD,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAC1B;AAAO,aAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;;YAE7B,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,OAAO,KAAK,YAAY,WAAW;IACrC;IAEQ,UAAU,GAAA;;AAEhB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YACxB;QACF;;AAGA,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;AAGxB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC5C;QACF;;QAGA,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC1C,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE;AACjD,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,gBAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAG;AAC1C,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACxB,aAAA,CAAC;QACJ;IACF;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YACrD;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;;QAG5B,IAAI,KAAK,EAAE;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAkB;AAC1D,YAAA,MAAM,MAAM,GAAQ,IAAI,EAAE,IAAI;AAC9B,YAAA,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;AAEzE,YAAA,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAC/B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;YAC5C;iBAAO;AACL,gBAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACvB,oBAAA,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC3B,wBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;wBACxB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;oBACxC;gBACF;YACF;QACF;;AAGA,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;QACrD;IACF;AA9FW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBAYZ,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAZf,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAMc,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1B1C;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAlBS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAqBX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAxBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,cAAc;oBACxB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;0BAaI,MAAM;2BAAC,gBAAgB;;sBANzB,SAAS;uBAAC,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;;;AChDtE;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAKU,sBAAsB,CAAA;AAGgB,IAAA,UAAA;AAFzC,IAAA,SAAS;AAEjB,IAAA,WAAA,CAAiD,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE1E;;;AAGG;AAC8B,IAAA,OAAO;AAExC;;;AAGG;AACM,IAAA,WAAW;AAEpB;;;AAGG;AACM,IAAA,KAAK;IAEd,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAEhC,QAAA,MAAM,gBAAgB,GAAG,SAAS,IAAI,OAAO;AAC7C,QAAA,MAAM,oBAAoB,GAAG,aAAa,IAAI,OAAO;AACrD,QAAA,MAAM,cAAc,GAAG,OAAO,IAAI,OAAO;AAEzC,QAAA,IAAI,gBAAgB,IAAI,oBAAoB,IAAI,cAAc,EAAE;;AAE9D,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,aAAa,EAAE;YACtB;QACF;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA;;AAEG;IACK,UAAU,GAAA;AAChB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE;QAEtC,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAChE;IACF;AAEA;;AAEG;IACK,aAAa,GAAA;QACnB,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA;;AAEG;IACK,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;AAClD,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAC5B;IACF;AAEA;;AAEG;IACK,UAAU,GAAA;;AAEhB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,IAAI,CAAC,OAAO;QACrB;;;AAIA,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9D,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB;QACH;AAEA,QAAA,OAAO,IAAI;IACb;AA7FW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAGb,UAAU,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAHnB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,SAAA,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;0BAIc,MAAM;2BAAC,UAAU;;sBAM7B,KAAK;uBAAC,wBAAwB;;sBAM9B;;sBAMA;;;ACpCH;;;;;;;;;;;;;;;AAeG;MAMU,aAAa,CAAA;AACxB,IAAA,OAAO,GAAG,KAAK,CAAU,IAAI,mDAAC;AAC9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,qDAAC;AAC7B,IAAA,eAAe,GAAG,KAAK,CAAiB,QAAQ,2DAAC;AACjD,IAAA,cAAc,GAAG,KAAK,CAAiB,QAAQ,0DAAC;AAChD,IAAA,UAAU,GAAG,KAAK,CAAS,GAAG,sDAAC;IAE/B,gBAAgB,GAAG,MAAM,EAAW;IACpC,uBAAuB,GAAG,MAAM,EAAQ;AAEhC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAA,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC7C,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAEhC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAC9B,IAAA,cAAc;IACd,WAAW,GAAG,IAAI;IAClB,cAAc,GAAG,KAAK;IACtB,eAAe,GAAG,KAAK;IACvB,SAAS,GAAG,KAAK;AAEzB,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;YACnB,IAAI,IAAI,CAAC,SAAS;gBAAE;AACpB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;AAEzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;;QAG5D,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CACzC,gCAAgC,CAClB;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO;QAC/B;QAEA,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,4BAA4B,EAAE;IACrC;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE;AAErB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;;AAG7C,QAAA,IAAI,CAAC;AACF,aAAA,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;AAC/C,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAC/B,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC;AAE9D,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;AACpC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU;;YAGnC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE;AAC3D,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC7B;AAAO,iBAAA,IAAI,KAAK,CAAC,UAAU,EAAE;AAC3B,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;YAC9B;;YAGA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AAC9C,QAAA,CAAC,CAAC;IACN;IAEQ,qBAAqB,GAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;;AAG7C,QAAA,IAAI,CAAC;aACF,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,GAAG;aAC1C,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxBC,QAAM,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAEtD,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;;YAEnB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C;AACF,QAAA,CAAC,CAAC;;AAGJ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7C,QAAA,IAAI,CAAC;AACF,aAAA,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG;aAC9B,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxBA,QAAM,CACJ,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,CAClE;aAEF,SAAS,CAAC,MAAK;;YAEd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5C,QAAA,CAAC,CAAC;IACN;IAEQ,4BAA4B,GAAA;QAClC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;AAE7C,QAAA,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAK;AACjD,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;;gBAE/D,qBAAqB,CAAC,MAAK;oBACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5C,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE;AAC5C,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,aAAa,EAAE,IAAI;AACpB,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAK;YAC3B,gBAAgB,CAAC,UAAU,EAAE;AAC/B,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;IACI,cAAc,CAAC,WAA2B,QAAQ,EAAA;AACvD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7C,QAAA,MAAM,MAAM,GAAG,QAAQ,KAAK,QAAQ;QAEpC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC;AAClD,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;IACrC;AAEA;;AAEG;IACI,UAAU,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAClC,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,SAAS,EAAE,CACjB;IACH;AAEA;;AAEG;IACI,cAAc,GAAA;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;QAC7C,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,YAAY,EAAE,OAAO,CAAC,YAAY;AAClC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SAC9B;IACH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;wGAhLW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,SAAA,EAFb,CAAC,cAAc,EAAE,qBAAqB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEvC,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,SAAS,EAAE,CAAC,cAAc,EAAE,qBAAqB,CAAC;AACnD,iBAAA;;;MCkEY,cAAc,CAAA;AAaL,IAAA,GAAA;IAZpB,IAAI,GAAG,EAAE;IACD,SAAS,GAAyC,OAAO;AAEjE,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,QAAQ,CAAC,KAA2C,EAAA;AACtD,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,WAAA,CAAoB,GAAsB,EAAA;QAAtB,IAAA,CAAA,GAAG,GAAH,GAAG;IAAsB;wGAblC,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArFf;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ouCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA8EU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAxF1B,SAAS;+BACE,yBAAyB,EAAA,UAAA,EACvB,IAAI,EAAA,QAAA,EACN;;;;;;;GAOT,EAAA,eAAA,EA4EgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,ouCAAA,CAAA,EAAA;;MAsBpC,cAAc,CAAA;IACA,WAAW,GAAG,EAAE;IAChC,eAAe,GAAyC,OAAO;AAC/D,IAAA,YAAY,GAAG,GAAG,CAAC;AAEpB,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACvD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE3C,IAAA,UAAU;AACV,IAAA,cAAc;AACd,IAAA,aAAa;IAGrB,YAAY,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE;;AAGvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7C,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YACjC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;AAClD,YAAA,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;QAClC;;AAGA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;QACnC;;QAGA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;YAC3C,IAAI,CAAC,IAAI,EAAE;AACb,QAAA,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC;IACvB;IAGA,YAAY,GAAA;;AAEV,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;QACjC;;AAGA,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC;AACvE,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAChC;;QAGA,IAAI,CAAC,IAAI,EAAE;IACb;IAEQ,IAAI,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;;AAGA,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,mBAAmB,CAAC,IAAI,CAAC,UAAU;AACnC,aAAA,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE;aACjC,QAAQ,CAAC,KAAK,CAAC;QAElB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACrD,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA,CAAC;;QAGF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC;QACzE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;QACnD,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW;;QAG7C,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;gBACpD,MAAM,WAAW,GACf,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,qBAAqB,EAAE;gBACxD,MAAM,WAAW,GACf,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;gBAEvD,IAAI,cAAc,GAAyC,OAAO;;gBAGlE,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,EAAE;oBACzC,cAAc,GAAG,OAAO;gBAC1B;qBAAO,IAAI,WAAW,CAAC,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE;oBAChD,cAAc,GAAG,OAAO;gBAC1B;qBAAO,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE;oBAChD,cAAc,GAAG,MAAM;gBACzB;qBAAO,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE;oBAChD,cAAc,GAAG,OAAO;gBAC1B;AAEA,gBAAA,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,cAAc;YACjD;QACF,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,IAAI,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC7B;IACF;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,SAAS,GAAwC;AACrD,YAAA,KAAK,EAAE;AACL,gBAAA;AACE,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,QAAQ,EAAE,QAAQ;oBAClB,OAAO,EAAE,CAAC,EAAE;AACb,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA;AACE,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA;AACE,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,QAAQ,EAAE,QAAQ;oBAClB,OAAO,EAAE,CAAC,EAAE;AACb,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA;AACE,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA;AACF,aAAA;SACF;;AAGD,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,SAAS,CAAC,KAAK;;AAElE,QAAA,MAAM,SAAS,GACb,IAAI,CAAC,eAAe,KAAK;AACvB,cAAE;AACE,gBAAA,IAAI,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;AAC1B,gBAAA,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;AACzB,gBAAA,IAAI,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;AAC3B;AACH,cAAE,MAAM,CAAC,MAAM,CAAC,SAAS;iBACpB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO;AAC3B,iBAAA,IAAI,EAAE;QAEf,OAAO,CAAC,IAAI,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;IAC3C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;QACnC;;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC;QACzE;QACA,IAAI,CAAC,IAAI,EAAE;IACb;wGA/KW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;sBAEE,KAAK;uBAAC,gBAAgB;;sBACtB;;sBACA;;sBAWA,YAAY;uBAAC,YAAY;;sBAsBzB,YAAY;uBAAC,YAAY;;;MCnJf,wBAAwB,CAAA;AAC1B,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAoB;AAC5C,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAa;IACtC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACrC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;wGAJ/B,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVzB;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAVS,eAAe,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAYd,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;oBACxC,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;AACF,iBAAA;;;ACED,SAAS,0BAA0B,CAAC,IAAY,EAAA;;IAE9C,MAAM,UAAU,GAAa,EAAE;IAC/B,MAAM,WAAW,GAAG,4BAA4B;;IAGhD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oCAAoC,EAAE,CAAC,KAAK,KAAI;AAClE,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM;AAC/B,QAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,QAAA,OAAO,CAAA,EAAG,WAAW,CAAA,EAAG,KAAK,KAAK;AACpC,IAAA,CAAC,CAAC;;IAGF,MAAM,UAAU,GAAa,EAAE;IAC/B,MAAM,iBAAiB,GAAG,6BAA6B;IACvD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,KAAK,KAAI;AACvD,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM;AAC/B,QAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,QAAA,OAAO,CAAA,EAAG,iBAAiB,CAAA,EAAG,KAAK,KAAK;AAC1C,IAAA,CAAC,CAAC;;AAGF,IAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAI;AAC7D,QAAA,IAAI;AACF,YAAA,OAAO,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE;AACpC,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,YAAY,EAAE,KAAK;AACpB,aAAA,CAAC;QACJ;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,KAAK;QACd;AACF,IAAA,CAAC,CAAC;;;;AAKF,IAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,sCAAsC,EACtC,CAAC,KAAK,EAAE,QAAQ,KAAI;AAClB,QAAA,IAAI;AACF,YAAA,OAAO,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE;AACpC,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,YAAY,EAAE,KAAK;AACpB,aAAA,CAAC;QACJ;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,KAAK;QACd;AACF,IAAA,CAAC,CACF;;IAGD,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AAClC,QAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA,EAAG,WAAW,CAAA,EAAG,KAAK,CAAA,GAAA,CAAK,EAAE,KAAK,CAAC;AACzD,IAAA,CAAC,CAAC;;IAGF,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACjC,QAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA,EAAG,iBAAiB,CAAA,EAAG,KAAK,CAAA,GAAA,CAAK,EAAE,IAAI,CAAC;AAC9D,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,IAAI;AACb;MA6Ia,mCAAmC,CAAA;AACrC,IAAA,OAAO,GAAG,KAAK,CAAS,EAAE,mDAAC;IAC3B,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,MAAM,GAAG,gBAAgB,EAAE;AAGpC,IAAA,iBAAiB;AAET,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;AAG/B,IAAA,UAAU,GAAG,IAAI,GAAG,EAAmB;AAEtC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE;AACrC,QAAA,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,cAAc,CAAC;AACjE,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;AAC/C,IAAA,CAAC,wDAAC;AAEF,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;;YAEV,IAAI,CAAC,OAAO,EAAE;;AAEd,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;AAEvB,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,mBAAmB,EAAE;YAC5B;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEQ,aAAa,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE;AAC7B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa;AACtD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;AAChC,QAAA,SAAS,CAAC,SAAS,GAAG,IAAI;IAC5B;AAEQ,IAAA,aAAa,GAAG,IAAI,GAAG,EAAkB;IACzC,cAAc,GAAkB,IAAI;IAEpC,gBAAgB,GAAA;QACtB,IAAI,IAAI,CAAC,cAAc;YAAE;;AAGzB,QAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB;;AAGnD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,EAAE;;AAGlC,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AAC7B,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,MAAM,EAAE,IAAI;AACb,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,YAAA,UAAU,EAAE,CAAC,KAAU,KAAI;AACzB,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACzB,oBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI;AAC1B,oBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE;oBAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;;oBAE7C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AAExC,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,oCAAoC;;AAGlE,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,WAAW;AAC5D,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK;AAC/D,oBAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAA,cAAA,EAAiB,IAAI,CAAA,CAAE,GAAG,MAAM;;AAGzD,oBAAA,MAAM,QAAQ,GAAG;;;kBAGT,IAAI,GAAG,CAAA,kCAAA,EAAqC,IAAI,CAAA,OAAA,CAAS,GAAG,eAAe;;;wCAGrD,OAAO,CAAA;gCACf,SAAS,CAAA;;0BAEf,SAAS,CAAA;;;AAGD,gCAAA,EAAA,SAAS,KAAK,WAAW,CAAA;;WAEhD;;AAGD,oBAAA,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;;AAGxC,oBAAA,KAAK,CAAC,IAAI,GAAG,MAAM;AACnB,oBAAA,KAAK,CAAC,IAAI,GAAG,QAAQ;gBACvB;YACF,CAAC;AACF,SAAA,CAAC;IACJ;AAEQ,IAAA,cAAc,CAAC,OAAe,EAAA;;QAEpC,IAAI,CAAC,gBAAgB,EAAE;;AAGvB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;;QAG1B,IAAI,IAAI,GAAG,IAAI,CAAC,cAAe,CAAC,KAAK,CAAC,OAAO,CAAW;;AAGxD,QAAA,IAAI,GAAG,0BAA0B,CAAC,IAAI,CAAC;AAEvC,QAAA,OAAO,IAAI;IACb;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE;AAE7B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa;;QAGtD,MAAM,YAAY,GAAG,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;AACpE,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;YAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC;YACtD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,MAAM;YAEnE,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI;AACF,oBAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAsB,EAAE;wBAC7C,WAAW;AACX,wBAAA,YAAY,EAAE,KAAK;AACpB,qBAAA,CAAC;gBACJ;gBAAE,OAAO,KAAK,EAAE;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC;gBACzD;YACF;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;;QAG1C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAC/B,yBAAyB,CACL;QACtB,IAAI,UAAU,EAAE;YACd,KAAK,CAAC,cAAc,EAAE;YACtB,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,oBAAoB,CAAC;YAE7D,IAAI,OAAO,EAAE;;gBAEX,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC5C,IAAI,IAAI,EAAE;AACR,oBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;gBACnC;YACF;QACF;IACF;IAEQ,aAAa,CAAC,OAAe,EAAE,IAAY,EAAA;QACjD,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;AACrC,YAAA,IAAI,CAAC,OAAO;gBAAE;;AAGd,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CACxD,CAAA,qBAAA,EAAwB,OAAO,CAAA,EAAA,CAAI,CACpC;YACD,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS;gBACrC,MAAM,CAAC,SAAS,GAAG;;oBAEP,IAAI,CAAC,MAAM,CAAC,0CAA0C,CAAA;WAC/D;AACH,gBAAA,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,0CAA0C,CAAA,KAAA,CAAO,CACjE;;gBAGD,UAAU,CAAC,MAAK;AACd,oBAAA,MAAM,CAAC,SAAS,GAAG,YAAY;AAC/B,oBAAA,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,oCAAoC,CAAA,KAAA,CAAO,CAC3D;gBACH,CAAC,EAAE,IAAI,CAAC;YACV;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,eAAe,CAAC,IAAY,EAAA;;QAElC,IAAI,IAAI,GAAG,CAAC;AACZ,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI;AAChC,YAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACrB;QACA,OAAO,CAAA,WAAA,EAAc,IAAI,CAAA,CAAE;IAC7B;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;QAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACzC,QAAA,GAAG,CAAC,WAAW,GAAG,IAAI;QACtB,OAAO,GAAG,CAAC,SAAS;IACtB;wGAzNW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArIpC;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0tEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EATS,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAwIX,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBA3I/C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,QAAA,EACN,yCAAyC,EAAA,OAAA,EAC1C,CAAC,YAAY,CAAC,EAAA,eAAA,EACN,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;AAMT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0tEAAA,CAAA,EAAA;;sBAoIA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;AC1NnD;MAiDa,WAAW,CAAA;AACb,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,8CAAmB;AACvC,IAAA,IAAI,GAAG,KAAK,CAAC,EAAE,gDAAC;wGAFd,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlCZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAhDvB,SAAS;+BACE,cAAc,EAAA,eAAA,EACP,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,aAAa,EAAE,MAAM,EAAE,EAAA,QAAA,EAWrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA;;AAOH,SAAS,IAAI,CAAC,CAAS,EAAA;IACrB,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;AAC3C;AAEA,SAAS,IAAI,CAAC,UAA4C,EAAA;AACxD,IAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE;AACpC;AAEA;AACO,MAAM,OAAO,GAAoB;IACtC,IAAI,CAAC,eAAe,CAAC;IACrB,IAAI,CAAC,UAAU,CAAC;CACjB;AACM,MAAM,KAAK,GAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACxD,MAAM,WAAW,GAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3D,MAAM,WAAW,GAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7D,MAAM,YAAY,GAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7D,MAAM,IAAI,GAAoB;IACnC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;IACrE,IAAI,CAAC,yDAAyD,CAAC;CAChE;AACM,MAAM,IAAI,GAAoB;IACnC,IAAI,CAAC,4DAA4D,CAAC;IAClE,IAAI,CACF,yHAAyH,CAC1H;CACF;AACM,MAAM,GAAG,GAAoB;IAClC,IAAI,CAAC,UAAU,CAAC;IAChB,IAAI,CAAC,4BAA4B,CAAC;IAClC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;CAC5D;AACM,MAAM,IAAI,GAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAClE,MAAM,SAAS,GAAoB;IACxC,IAAI,CAAC,oDAAoD,CAAC;IAC1D,IAAI,CAAC,YAAY,CAAC;IAClB,IAAI,CAAC,qDAAqD,CAAC;IAC3D,IAAI,CAAC,WAAW,CAAC;CAClB;AACM,MAAM,UAAU,GAAoB;IACzC,IAAI,CAAC,UAAU,CAAC;IAChB,IAAI,CACF,yJAAyJ,CAC1J;CACF;AACM,MAAM,QAAQ,GAAoB;IACvC,IAAI,CAAC,UAAU,CAAC;IAChB,IAAI,CACF,0JAA0J,CAC3J;CACF;AACM,MAAM,MAAM,GAAoB;IACrC,IAAI,CAAC,UAAU,CAAC;IAChB,IAAI,CAAC,eAAe,CAAC;IACrB,IAAI,CAAC,2CAA2C,CAAC;CAClD;AACM,MAAM,OAAO,GAAoB;IACtC,IAAI,CACF,0KAA0K,CAC3K;IACD,IAAI,CAAC,qBAAqB,CAAC;IAC3B,IAAI,CAAC,mCAAmC,CAAC;CAC1C;AACM,MAAM,CAAC,GAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;;ACtG1E;MAqBa,wCAAwC,CAAA;AACnD,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAExC,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,OAAO,EAAE;;QAEP,+DAA+D;;QAE/D,oBAAoB;;QAEpB,yDAAyD;;QAEzD,8DAA8D;;QAE9D,gCAAgC;;QAEhC,uBAAuB;;AAEvB,QAAA,gCAAgC,EAChC,wCAAwC;;QAExC,iEAAiE;;QAEjE,yDAAyD;;QAEzD,sDAAsD;;AAEtD,QAAA,cAAc,EACd,IAAI,CAAC,UAAU,EAAE,CAClB;AACH,IAAA,CAAC,yDAAC;wGAhCS,wCAAwC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wCAAwC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,cAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBzC;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAcU,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBApBpD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kDAAkD;oBAC5D,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;AAET,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,mBAAmB,EAAE,SAAS;AAC/B,qBAAA;AACD,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,cAAc;AACzB,4BAAA,MAAM,EAAE,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,cAAc,CAAC;AACrE,yBAAA;AACF,qBAAA;AACF,iBAAA;;AAoCD;MAsBa,qCAAqC,CAAA;IACvC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACrC,OAAO,GAAG,MAAM,EAAQ;IACxB,QAAQ,GAAG,IAAI;IACf,SAAS,GAAG,KAAK;AACjB,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;IACtB,MAAM,GAAG,gBAAgB,EAAE;AAEpC,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,KAAK,EAAE,eAAe,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE;AAErB,QAAA,eAAe,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;YAChD,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,gBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;YAChD;AACF,QAAA,CAAC,CAAC;IACJ;wGAtBW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBtC;;;;;;;;;;;;;;GAcT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAjBS,WAAW,kFAtCV,wCAAwC,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAyDxC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBArBjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,wCAAwC,CAAC;oBAChE,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;AAcT,EAAA,CAAA;AACF,iBAAA;;AA0BD;MAkBa,yCAAyC,CAAA;IAC3C,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,OAAO,GAAG,MAAM,EAAQ;IACxB,YAAY,GAAG,QAAQ;IACvB,MAAM,GAAG,gBAAgB,EAAE;AAEpC,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,KAAK,EAAE,eAAe,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGAbW,yCAAyC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzC,IAAA,OAAA,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,iDAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZ1C;;;;;;;;;;GAUT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,WAAW,kFArFV,wCAAwC,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAoGxC,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAjBrD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iDAAiD;AAC3D,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,wCAAwC,CAAC;oBAChE,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;AACF,iBAAA;;AAiBD;MAkBa,2CAA2C,CAAA;IAC7C,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,OAAO,GAAG,MAAM,EAAQ;IACxB,cAAc,GAAG,UAAU;IAC3B,MAAM,GAAG,gBAAgB,EAAE;AAEpC,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,KAAK,EAAE,eAAe,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGAbW,2CAA2C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2CAA2C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZ5C;;;;;;;;;;GAUT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,WAAW,kFAvHV,wCAAwC,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAsIxC,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBAjBvD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mDAAmD;AAC7D,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,wCAAwC,CAAC;oBAChE,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;AACF,iBAAA;;AAiBD;MAkBa,0CAA0C,CAAA;IAC5C,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,OAAO,GAAG,MAAM,EAAQ;IACxB,WAAW,GAAG,OAAO;IACrB,MAAM,GAAG,gBAAgB,EAAE;AAEpC,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,KAAK,EAAE,eAAe,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGAbW,0CAA0C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0CAA0C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZ3C;;;;;;;;;;GAUT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,WAAW,kFAzJV,wCAAwC,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAwKxC,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBAjBtD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kDAAkD;AAC5D,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,wCAAwC,CAAC;oBAChE,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;AACF,iBAAA;;AAiBD;MAkBa,2CAA2C,CAAA;IAC7C,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,OAAO,GAAG,MAAM,EAAQ;IACxB,aAAa,GAAG,SAAS;IACzB,MAAM,GAAG,gBAAgB,EAAE;AAEpC,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,KAAK,EAAE,eAAe,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGAbW,2CAA2C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2CAA2C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZ5C;;;;;;;;;;GAUT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,WAAW,kFA3LV,wCAAwC,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FA0MxC,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBAjBvD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kDAAkD;AAC5D,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,wCAAwC,CAAC;oBAChE,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;AACF,iBAAA;;;MC7OY,kCAAkC,CAAA;IACpC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAExC,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QACrC,OAAO,EAAE,CACP,qFAAqF,EACrF,IAAI,CAAC,UAAU,EAAE,CAClB;AACH,IAAA,CAAC,yDAAC;wGARS,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA;AACF,iBAAA;;;MCLY,uBAAuB,CAAA;;AAElC,IAAA,2BAA2B,GAAG,MAAM,CAAC,KAAK,uEAAC;AAC3C,IAAA,6BAA6B,GAAG,MAAM,CAAC,KAAK,yEAAC;AAC7C,IAAA,4BAA4B,GAAG,MAAM,CAAC,KAAK,wEAAC;AAC5C,IAAA,6BAA6B,GAAG,MAAM,CAAC,KAAK,yEAAC;;AAG7C,IAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK,8DAAC;AAClC,IAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK,8DAAC;wGATvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA;;4FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCuWrB,2BAA2B,CAAA;;AAGtC,IAAA,wBAAwB;AAExB,IAAA,eAAe;AAEf,IAAA,kBAAkB;AAElB,IAAA,sBAAsB;AAEtB,IAAA,wBAAwB;AAExB,IAAA,uBAAuB;AAEvB,IAAA,wBAAwB;AAExB,IAAA,qBAAqB;;AAGZ,IAAA,qBAAqB,GAAG,KAAK,CAAqB,SAAS,iEAAC;AAC5D,IAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,wDAAC;AACnD,IAAA,eAAe,GAAG,KAAK,CAAqB,SAAS,2DAAC;AACtD,IAAA,mBAAmB,GAAG,KAAK,CAAqB,SAAS,+DAAC;AAC1D,IAAA,qBAAqB,GAAG,KAAK,CAAqB,SAAS,iEAAC;AAC5D,IAAA,oBAAoB,GAAG,KAAK,CAAqB,SAAS,gEAAC;AAC3D,IAAA,qBAAqB,GAAG,KAAK,CAAqB,SAAS,iEAAC;AAC5D,IAAA,kBAAkB,GAAG,KAAK,CAAqB,SAAS,8DAAC;;AAGzD,IAAA,yBAAyB,GAAG,KAAK,CAAwB,SAAS,qEAAC;AACnE,IAAA,gBAAgB,GAAG,KAAK,CAAwB,SAAS,4DAAC;AAC1D,IAAA,mBAAmB,GAAG,KAAK,CAAwB,SAAS,+DAAC;AAC7D,IAAA,uBAAuB,GAAG,KAAK,CAAwB,SAAS,mEAAC;AACjE,IAAA,yBAAyB,GAAG,KAAK,CAAwB,SAAS,qEAAC;AACnE,IAAA,wBAAwB,GAAG,KAAK,CAAwB,SAAS,oEAAC;AAClE,IAAA,yBAAyB,GAAG,KAAK,CAAwB,SAAS,qEAAC;AACnE,IAAA,sBAAsB,GAAG,KAAK,CAAwB,SAAS,kEAAC;;AAGhE,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAoB;AAC5C,IAAA,QAAQ,GAAG,KAAK,CAAY,EAAE,oDAAC;IAC/B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACrC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,sBAAsB,GAAG,KAAK,CACrC,SAAS,kEACV;AACQ,IAAA,cAAc,GAAG,KAAK,CAAU,IAAI,0DAAC;AACrC,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,sDAAC;;;AAI1D,IAAA,QAAQ;AAER,IAAA,WAAA,CAGE,QAAyC,EAAA;QAEzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,uBAAuB,EAAE;IAC3D;;IAGA,QAAQ,GAAG,MAAM,EAA8C;IAC/D,UAAU,GAAG,MAAM,EAAgD;IACnE,SAAS,GAAG,MAAM,EAA+C;IACjE,UAAU,GAAG,MAAM,EAAgD;;AAGnE,IAAA,WAAW,GAAG,MAAM,CAAqB,SAAS,uDAAC;;AAGnD,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QAC5B,OAAO,EAAE,CACP,6GAA6G,EAC7G,IAAI,CAAC,WAAW,EAAE,CACnB;AACH,IAAA,CAAC,yDAAC;;IAGiB,8BAA8B,GAC/C,yCAAyC;IACxB,gCAAgC,GACjD,2CAA2C;IAC1B,mCAAmC,GACpD,mCAAmC;IAClB,kCAAkC,GACnD,kCAAkC;IACjB,qCAAqC,GACtD,qCAAqC;IACpB,wBAAwB,GAAG,wBAAwB;;AAGtE,IAAA,uBAAuB,GAAG,QAAQ,CAChC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,IAAI,EAAE;AACvC,KAAA,CAAC,mEACH;;AAGD,IAAA,iBAAiB,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE;AACxD,IAAA,qBAAqB,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE;AAChE,IAAA,uBAAuB,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACpE,IAAA,sBAAsB,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE;AAClE,IAAA,uBAAuB,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAEpE,IAAA,cAAc,GAAG,QAAQ,CAAiC,OAAO;QAC/D,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC,0DAAC;;IAGH,iBAAiB,GAAA;AACf,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;IAC1D;AAEA,IAAA,oBAAoB,GAAG,QAAQ,CAAC,OAAO;AACrC,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC5B,KAAA,CAAC,gEAAC;IAEH,UAAU,GAAA;;;IAGV;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IACjD;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IACnD;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IAClD;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IACnD;AA5IW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,kBAwD5B,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAxDtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,k5HAEI,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEpB,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAER,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEP,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAET,WAAW,qHAEZ,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEV,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEd,WAAW,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlUxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqIT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,y9k5CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA9IC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,mCAAmC,uHACnC,qCAAqC,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrC,kCAAkC,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClC,wBAAwB,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAsTf,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA/TvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,QACpC,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAA,OAAA,EACtB;wBACP,YAAY;wBACZ,WAAW;wBACX,mCAAmC;wBACnC,qCAAqC;wBACrC,kCAAkC;wBAClC,wBAAwB;AACzB,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,y9k5CAAA,CAAA,EAAA;;0BAoOE;;0BACA,MAAM;2BAAC,uBAAuB;;sBAtDhC,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAEtD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAE7C,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAEhD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAEpD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAEtD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAErD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAEtD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;;MCpWzC,8BAA8B,CAAA;AAChC,IAAA,OAAO,GAAG,KAAK,CAAS,EAAE,mDAAC;IAC3B,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAExC,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QACrC,OAAO,EAAE,CACP,qLAAqL,EACrL,IAAI,CAAC,UAAU,EAAE,CAClB;AACH,IAAA,CAAC,yDAAC;wGATS,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJ/B;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAEU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAX1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;oBAC9C,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA;AACD,oBAAA,QAAQ,EAAE;;AAET,EAAA,CAAA;AACF,iBAAA;;;ACJD;MAqBa,mCAAmC,CAAA;AAC9C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAExC,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,OAAO,EAAE;;QAEP,qDAAqD;;QAErD,oBAAoB;;QAEpB,yDAAyD;;QAEzD,8DAA8D;;QAE9D,gCAAgC;;QAEhC,uBAAuB;;AAEvB,QAAA,gCAAgC,EAChC,wCAAwC;;QAExC,iEAAiE;;AAEjE,QAAA,yDAAyD,EACzD,IAAI,CAAC,UAAU,EAAE,CAClB;AACH,IAAA,CAAC,yDAAC;wGA5BS,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAE,cAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBpC;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAcU,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBApB/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6CAA6C;oBACvD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;AAET,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,mBAAmB,EAAE,SAAS;AAC/B,qBAAA;AACD,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,cAAc;AACzB,4BAAA,MAAM,EAAE,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,cAAc,CAAC;AACrE,yBAAA;AACF,qBAAA;AACF,iBAAA;;AAgCD;MAsBa,gCAAgC,CAAA;IAClC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACrC,OAAO,GAAG,MAAM,EAAQ;IACxB,QAAQ,GAAG,IAAI;IACf,SAAS,GAAG,KAAK;AACjB,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;IACtB,MAAM,GAAG,gBAAgB,EAAE;IAEpC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE;AAErB,QAAA,eAAe,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;YAChD,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,gBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;YAChD;AACF,QAAA,CAAC,CAAC;IACJ;wGArBW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,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,uCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBjC;;;;;;;;;;;;;;GAcT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAjBS,WAAW,kFAlCV,mCAAmC,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAqDnC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBArB5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,mCAAmC,CAAC;oBAC3D,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;AAcT,EAAA,CAAA;AACF,iBAAA;;AAyBD;MAkBa,gCAAgC,CAAA;IAC3C,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,OAAO,GAAG,MAAM,EAAQ;IAEf,QAAQ,GAAG,IAAI;IACf,MAAM,GAAG,gBAAgB,EAAE;IAEpC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGAbW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,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,uCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZjC;;;;;;;;;;GAUT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,WAAW,kFAhFV,mCAAmC,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FA+FnC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAjB5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,mCAAmC,CAAC;oBAC3D,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;AACF,iBAAA;;;MC9GY,6BAA6B,CAAA;IAC/B,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAExC,IAAA,aAAa,GAAG,QAAQ,CAAC,MAChC,EAAE,CACA,4HAA4H,EAC5H,IAAI,CAAC,UAAU,EAAE,CAClB,yDACF;wGARU,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,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,oCAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAP9B;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAXzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;oBAC9C,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;AAET,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA;AACF,iBAAA;;;MC6BY,sCAAsC,CAAA;AACjD,IAAA,aAAa,GAAG,KAAK,CAAS,CAAC,yDAAC;AAChC,IAAA,gBAAgB,GAAG,KAAK,CAAS,CAAC,4DAAC;IACnC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAe;IAC9B,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,cAAc,GAAG,MAAM,EAA+C;IAE7D,eAAe,GAAG,WAAW;IAC7B,gBAAgB,GAAG,YAAY;AAE/B,IAAA,WAAW,GAAG,EAAE;;IAEvB,qDAAqD;;IAErD,oBAAoB;;IAEpB,yDAAyD;;IAEzD,8DAA8D;;IAE9D,gCAAgC;;IAEhC,uBAAuB;;AAEvB,IAAA,yDAAyD,CAC1D;AAED,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,0DAAC;AAE5D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,qDAAC;AAEpD,IAAA,SAAS,GAAG,QAAQ,CAClB,MAAM,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,qDACzD;AAED,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QAC5B,OAAO,EAAE,CAAC,qCAAqC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACrE,IAAA,CAAC,yDAAC;IAEF,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC;AACzC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvB,gBAAA,WAAW,EAAE,QAAQ;AACrB,gBAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzC,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAG;AACzB,aAAA,CAAC;QACJ;IACF;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC;AACzC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvB,gBAAA,WAAW,EAAE,QAAQ;AACrB,gBAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzC,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAG;AACzB,aAAA,CAAC;QACJ;IACF;wGA3DW,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9BvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA/BS,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAiCV,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAnClD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6CAA6C;oBACvD,OAAO,EAAE,CAAC,WAAW,CAAC;oBACtB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA;AACF,iBAAA;;;MCuBY,6BAA6B,CAAA;AAC/B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAsB;AAC3C,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAsB;IAC7C,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACtC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAExC,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAC3B,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,qDAAC;AACvD,IAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,wDAC9C;AAEQ,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MACpC,EAAE,CAAC,0BAA0B,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,6DAClD;AACQ,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,EAAE,CACA,wDAAwD,EACxD,IAAI,CAAC,UAAU,EAAE,CAClB,4DACF;AACQ,IAAA,UAAU,GAAG,QAAQ,CAAC,MAC7B,EAAE,CAAC,gDAAgD,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,sDACxE;AACQ,IAAA,UAAU,GAAG,QAAQ,CAAC,MAC7B,EAAE,CAAC,gDAAgD,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,sDACxE;AACQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAChC,EAAE,CAAC,mDAAmD,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,yDAC3E;wGA7BU,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,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,kCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnD9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAEU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAxDzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;oBAC5C,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE;AAC/B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDT,EAAA,CAAA;AACF,iBAAA;;;ACxDK,SAAU,yBAAyB,CACvC,OAAgC,EAAA;IAEhC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,OAAO;SACJ,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SACrD,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC;SAChC,IAAI,CAAC,IAAI,CAAC;AACf;AAEM,SAAU,wBAAwB,CACtC,OAAgC,EAAA;IAEhC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC3C,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,IAAI,KACH,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,IAAI,CAAC,IAAI,KAAK,OAAO;AACrB,QAAA,IAAI,CAAC,IAAI,KAAK,UAAU,CAC3B;AACH;AAEM,SAAU,2BAA2B,CACzC,IAA0B,EAAA;AAE1B,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;IAC1B,IACE,IAAI,IAAI,IAAI;QACZ,OAAO,IAAI,KAAK,QAAQ;AACxB,QAAA,UAAU,IAAI,IAAI;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EACjC;QACA,OAAO,IAAI,CAAC,QAAQ;IACtB;AACA,IAAA,OAAO,SAAS;AAClB;;MCwHa,sBAAsB,CAAA;;AAGjC,IAAA,uBAAuB;AAEvB,IAAA,eAAe;AAEf,IAAA,kBAAkB;AAElB,IAAA,kBAAkB;AAElB,IAAA,wBAAwB;;IAGxB,oBAAoB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAClD,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAC1C,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAC7C,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAC7C,qBAAqB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAGnD,wBAAwB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IACzD,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IACjD,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IACpD,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IACpD,yBAAyB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;;IAG1D,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAe;IAC9B,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACzC,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAC9C,sBAAsB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;IAC9D,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAGxC,WAAW,GAAG,MAAM,EAA4C;IAChE,cAAc,GAAG,MAAM,EAA+C;;AAGtE,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,4DAAC;AAC1D,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,iEAAC;;IAGpE,8BAA8B,GAAG,8BAA8B;IAC/D,6BAA6B,GAAG,6BAA6B;IAC7D,gCAAgC,GAAG,gCAAgC;IACnE,gCAAgC,GAAG,gCAAgC;IACnE,sCAAsC,GACpC,sCAAsC;;AAGxC,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gEAAC;AAEzE,IAAA,aAAa,GAAG,QAAQ,CAAC,MACvB,EAAE,CACA,iGAAiG,EACjG,IAAI,CAAC,UAAU,EAAE,CAClB,yDACF;;AAGD,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAC1B,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,4DACnD;AACD,IAAA,UAAU,GAAG,QAAQ,CAAC,MACpB,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,sDAClD;AAED,IAAA,sBAAsB,GAAG,QAAQ,CAAyB,OAAO;AAC/D,QAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACjC,KAAA,CAAC,kEAAC;;AAGH,IAAA,iBAAiB,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE;AACxD,IAAA,iBAAiB,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE;AAExD,IAAA,uBAAuB,GAAG,QAAQ,CAA0B,OAAO;AACjE,QAAA,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACtC,QAAA,gBAAgB,EAAE,IAAI,CAAC,qBAAqB,EAAE;QAC9C,gBAAgB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAC7D,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAG;AACzB,KAAA,CAAC,mEAAC;AAEH,IAAA,cAAc,GAAG,QAAQ,CAA4B,OAAO;QAC1D,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC,0DAAC;IAEH,UAAU,GAAA;;;IAGV;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAG,EAAE,CAAC;IACrD;AAEA,IAAA,oBAAoB,CAClB,KAAkD,EAAA;AAElD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;AAEA,IAAA,WAAW,CAAC,IAA0B,EAAA;AACpC,QAAA,OAAO,2BAA2B,CAAC,IAAI,CAAC;IAC1C;AACA,IAAA,WAAA,GAAA,EAAe;wGAzGJ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEQ,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEnB,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAER,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEX,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEL,WAAW,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxI3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoHT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA/HC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,8BAA8B,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9B,gCAAgC,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChC,gCAAgC,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChC,6BAA6B,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,sCAAsC,6LACtC,6BAA6B,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAkIpB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA7IlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,QAC/B,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAA,OAAA,EACtB;wBACP,YAAY;wBACZ,WAAW;wBACX,8BAA8B;wBAC9B,gCAAgC;wBAChC,gCAAgC;wBAChC,6BAA6B;wBAC7B,sCAAsC;wBACtC,6BAA6B;AAC9B,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoHT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mCAAA,CAAA,EAAA;;sBAYA,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAErD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAE7C,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAEhD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAEhD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;;ACpLzD;;;AAGG;MASU,4BAA4B,CAAA;IACvC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;AAGxC,IAAA,aAAa,GAAG,QAAQ,CAAC,MACvB,EAAE,CACA,gGAAgG,EAChG,IAAI,CAAC,UAAU,EAAE,CAClB,yDACF;wGATU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJ7B;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAEU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;oBAC5C,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;AAET,EAAA,CAAA;AACF,iBAAA;;;ACrBK,SAAU,uBAAuB,CAAC,OAAe,EAAA;IACrD,IAAI,OAAO,GAAG,CAAC;AAAE,QAAA,OAAO,eAAe;IACvC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU;IAEzD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IACrC,IAAI,IAAI,KAAK,CAAC;AAAE,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,OAAA,EAAU,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE;AAC7D,IAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,IAAI,GAAG;AAC5B;;MC8Ea,2BAA2B,CAAA;AAC7B,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAoB;AAC5C,IAAA,QAAQ,GAAG,KAAK,CAAY,EAAE,oDAAC;AAC/B,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;IACjC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAEhC,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAEzB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AAChE,IAAA,CAAC,oDAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CACvC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,uDAC1C;;;;AAKgB,IAAA,SAAS,GAAG,YAAY,CAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EACvC,MAAM,EAAE,IAAI,CAAC,WAAW;AACxB,YAAA,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,KAC3B,SAAS,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,KAAK,EAAA,CAAA,GAAA,CAHc;YACrE,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,KAC3B,SAAS,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,KAAK;AACxD,SAAA,CAAA,CAAA,CAAC;;;;AAKiB,IAAA,IAAI,GAAG,YAAY,CAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EACpC,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,KAC3B;AACE,kBAAE;kBACA,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE;AAClC,uBAAG,IAAI,EAAE,KAAK,IAAI,KAAK;sBACrB,KAAK,EAAA,CAAA,GAAA,CAP0C;YACvD,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,KAC3B;AACE,kBAAE;kBACA,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE;AAClC,uBAAG,IAAI,EAAE,KAAK,IAAI,KAAK;AACvB,sBAAE,KAAK;AACd,SAAA,CAAA,CAAA,CAAC;IAEiB,UAAU,GAAG,QAAQ,CACtC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAChD;AAEkB,IAAA,gBAAgB,GAAG,QAAQ,CAC5C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,IAAI,EAAE,4DACnC;AAEkB,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;QAC9B,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,YAAA,OAAO,WAAW;QAC1C,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,IAAI;AACrE,QAAA,OAAO,eAAe,uBAAuB,CAAC,OAAO,CAAC,EAAE;AAC1D,IAAA,CAAC,iDAAC;AAEiB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,yDAClC;AAEkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,EAAE,CACA,iIAAiI,EACjI,IAAI,CAAC,UAAU;AACb,UAAE;AACF,UAAE,oBAAoB,CACzB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACF;AAEkB,IAAA,YAAY,GAAG,QAAQ,CAAC,MACzC,EAAE,CACA,qEAAqE,EACrE,IAAI,CAAC,IAAI,EAAE,IAAI,eAAe,CAC/B,wDACF;IAES,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC;IACrC;wGA9EW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EApES,mCAAmC,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAsElC,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAxEvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;oBAC1C,OAAO,EAAE,CAAC,mCAAmC,CAAC;oBAC9C,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkET,EAAA,CAAA;AACF,iBAAA;;;AC9DD;;;;AAIG;MAqHU,sBAAsB,CAAA;;AAEjC,IAAA,QAAQ,GAAG,KAAK,CAAY,EAAE,oDAAC;;AAE/B,IAAA,KAAK,GAAG,KAAK,CAAU,EAAE,iDAAC;AAC1B,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;AAClC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;IACjC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;;IAKrC,yBAAyB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IAC1D,wBAAwB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;IAChE,qBAAqB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAGnD,yBAAyB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IAC1D,wBAAwB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;IAChE,qBAAqB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAGnD,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IAClD,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;IACxD,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAG3C,oBAAoB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IACrD,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;IAC3D,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAG9C,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IAChD,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;IACtD,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;AAGX,IAAA,oBAAoB;;IAGlD,wBAAwB,GAAG,MAAM,EAAwB;IACzD,0BAA0B,GAAG,MAAM,EAAwB;IAC3D,yBAAyB,GAAG,MAAM,EAAwB;IAC1D,0BAA0B,GAAG,MAAM,EAAwB;IAC3D,eAAe,GAAG,MAAM,EAAwB;IAChD,eAAe,GAAG,MAAM,EAAwB;;IAG7B,yBAAyB,GAAG,2BAA2B;IACvD,oBAAoB,GAAG,sBAAsB;IAC7C,yBAAyB,GAAG,2BAA2B;IACvD,sBAAsB,GAAG,4BAA4B;AACrD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;IAGxC,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC/C,eAAe,GAAG,QAAQ,CAClC,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,KAAK,WAAW,2DACpE;IACS,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACjD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;QACrC,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC,IAAA,CAAC,uDAAC;;AAGF,IAAA,aAAa,GAAG,QAAQ,CAAC,MACvB,EAAE,CAAC,uBAAuB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,yDAC/C;;AAGD,IAAA,aAAa,GAAG,QAAQ,CAAC,OAAO;AAC9B,QAAA,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE;AAChC,QAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;AAC9B,QAAA,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE;AAClC,QAAA,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAC1C,CAAC,CAAC,KACA,CAAC;AACD,aAAC,CAAC,CAAC,IAAI,KAAK,WAAW;gBACrB,CAAC,CAAC,IAAI,KAAK,MAAM;gBACjB,CAAC,CAAC,IAAI,KAAK,WAAW;AACtB,gBAAA,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAC3B;AACF,KAAA,CAAC,yDAAC;;AAGH,IAAA,oBAAoB,GAAG,QAAQ,CAC7B,MAAM,IAAI,CAAC,yBAAyB,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE,gEACvE;AAED,IAAA,eAAe,GAAG,QAAQ,CACxB,MAAM,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,2DAC7D;AAED,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,sDAAC;;AAGzE,IAAA,mBAAmB,CAAC,OAAgB,EAAA;QAClC,OAAO;YACL,OAAO;AACP,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;AAC9B,YAAA,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE;AAChC,YAAA,UAAU,EAAE,IAAI,CAAC,qBAAqB,EAAE;SACzC;IACH;AAEA,IAAA,mBAAmB,CAAC,OAAyB,EAAA;QAC3C,OAAO;YACL,OAAO;AACP,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;AAC9B,YAAA,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE;AAChC,YAAA,UAAU,EAAE,IAAI,CAAC,qBAAqB,EAAE;SACzC;IACH;IAEA,eAAe,GAAA;QACb,OAAO;AACL,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;AAC9B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE;AAChC,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;SACjC;IACH;AAEA,IAAA,cAAc,CAAC,OAAgB,EAAA;QAC7B,OAAO;YACL,OAAO;AACP,YAAA,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;SACpC;IACH;AAEA,IAAA,kBAAkB,CAAC,OAAgB,EAAA;AACjC,QAAA,OAAO,OAA2B;IACpC;;IAGA,gBAAgB,CAAC,KAAa,EAAE,OAAgB,EAAA;AAC9C,QAAA,OAAO,OAAO,EAAE,EAAE,IAAI,CAAA,MAAA,EAAS,KAAK,EAAE;IACxC;AAEQ,IAAA,oBAAoB,CAC1B,OAAwB,EAAA;AAExB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,4BAA4B,EAAE;AAChE,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAC9B,CAAC,QAAQ,KAAK,QAAQ,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,CAC7D;AAED,QAAA,QACE,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC;AAC1D,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC;AAC5D,YAAA,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,KAAK,GAAG,CAAC;IAEjE;AAEU,IAAA,qBAAqB,CAAC,OAAwB,EAAA;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,SAAS;AAE/B,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/D,QAAA,IAAI,WAAW,CAAC,OAAO,KAAK,KAAK,EAAE;AACjC,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,8CAAA,EAAiD,OAAO,CAAC,YAAY,CAAA,EAAA,CAAI,EACzE,WAAW,CAAC,KAAK,CAClB;AACD,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS;QACrE,OAAO;YACL,SAAS,EAAE,QAAQ,CAAC,SAAS;AAC7B,YAAA,MAAM,EAAE;gBACN,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,OAAO,EAAE,WAAW,CAAC,IAAI;gBACzB,OAAO;gBACP,KAAK;AACN,aAAA;SACF;IACH;;AAGA,IAAA,uBAAuB,CAAC,KAA2B,EAAA;AACjD,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3C;AAEA,IAAA,yBAAyB,CAAC,KAA2B,EAAA;AACnD,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7C;AAEA,IAAA,wBAAwB,CAAC,KAA2B,EAAA;AAClD,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5C;AAEA,IAAA,yBAAyB,CAAC,KAA2B,EAAA;AACnD,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7C;wGAvMW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtGvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA9GC,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,2BAA2B,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,sBAAsB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,SAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,2BAA2B,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,4BAA4B,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FA0GnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBApHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE;AAC/B,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,iBAAiB;wBACjB,WAAW;wBACX,2BAA2B;wBAC3B,sBAAsB;wBACtB,2BAA2B;wBAC3B,4BAA4B;AAC7B,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoGT,EAAA,CAAA;AACF,iBAAA;;sBAuCE,YAAY;uBAAC,cAAc;;;AC3K9B;;;AAGG;MAsBU,mCAAmC,CAAA;IAC9C,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACxC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;IAEhC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA4B;;IAG3C,OAAO,GAAG,MAAM,EAAQ;;IAGL,WAAW,GAAG,WAAW;;AAG5C,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,EAAE;;QAEP,4CAA4C;;QAE5C,mCAAmC;;QAEnC,uEAAuE;;QAEvE,iDAAiD;;QAEjD,iEAAiE;;QAEjE,uBAAuB;;QAEvB,iFAAiF;;AAEjF,QAAA,IAAI,CAAC,UAAU,EAAE,CAClB;IACH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;;AAEpB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,gBAAA,IAAI,CAAC,OAAO,EAAG,EAAE;YACnB;AACA,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGA1CW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2CAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBpC;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAjBS,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAmBV,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBArB/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2CAA2C;oBACrD,OAAO,EAAE,CAAC,WAAW,CAAC;oBACtB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;AAcT,EAAA,CAAA;AACF,iBAAA;;;ACzBD,MAAM,mBAAmB,GAAG,EAAE,CAC5B,yGAAyG,EACzG,0EAA0E,EAC1E,2FAA2F,EAC3F,qEAAqE,EACrE,qFAAqF,EACrF,0EAA0E,EAC1E,oEAAoE,EACpE,2EAA2E,EAC3E,yBAAyB,CAC1B;MA8BY,yBAAyB,CAAA;AAC3B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;IACxB,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAExC,OAAO,GAAG,MAAM,EAAQ;AAEd,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,yDAC3C;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACvC;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;wGAlBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvB1B;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAEU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA5BrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;oBACxC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE;AAC/B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA;AACF,iBAAA;;;ACrCD,MAAM,mBAAmB,GAAG,EAAE,CAC5B,kGAAkG,EAClG,yBAAyB,CAC1B;MA2BY,yBAAyB,CAAA;AAC3B,IAAA,WAAW,GAAG,KAAK,CAAe,EAAE,uDAAC;IACrC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAExC,gBAAgB,GAAG,MAAM,EAG9B;AAEe,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,yDAC3C;IAED,YAAY,CAAC,UAAsB,EAAE,KAAa,EAAA;AAChD,QAAA,IAAI,UAAU,CAAC,SAAS,EAAE;YACxB;QACF;QAEA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACnD;wGAnBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnB1B;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EArBS,yBAAyB,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAuBxB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAzBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;oBACxC,OAAO,EAAE,CAAC,yBAAyB,CAAC;oBACpC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE;AAC/B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA;AACF,iBAAA;;;ACTD;;;AAGG;MAiBU,yBAAyB,CAAA;AAC5B,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACpB,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEpE,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AAEjC,IAAA,oBAAoB,GAAG,KAAK,CAAS,CAAC,gEAAC;AAEvC,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;IAClC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACxC,IAAA,QAAQ,GAAG,KAAK,CAAY,EAAE,oDAAC;;AAE/B,IAAA,KAAK,GAAG,KAAK,CAAU,EAAE,iDAAC;IAC1B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACrC,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAmB;IACtC,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAC9C,yBAAyB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IAC1D,wBAAwB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;IAChE,qBAAqB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACnD,yBAAyB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IAC1D,wBAAwB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;IAChE,qBAAqB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACnD,4BAA4B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;IAC7D,2BAA2B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;IACnE,wBAAwB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACtD,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;;;IAKlC,oBAAoB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAmB;IAC/C,yBAAyB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAGvD,wBAAwB,GAAG,MAAM,EAAwB;IACzD,0BAA0B,GAAG,MAAM,EAAwB;IAC3D,yBAAyB,GAAG,MAAM,EAAwB;IAC1D,0BAA0B,GAAG,MAAM,EAAwB;IAC3D,eAAe,GAAG,MAAM,EAAwB;IAChD,eAAe,GAAG,MAAM,EAAwB;;AAIhD,IAAA,eAAe;AAEf,IAAA,gBAAgB;AACU,IAAA,sBAAsB;;IAG7B,2BAA2B,GAAG,sBAAsB;IACpD,oCAAoC,GACrD,mCAAmC;;AAG3B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAC1B,IAAA,gBAAgB,GAAG,MAAM,CAAC,KAAK,4DAAC;AAChC,IAAA,UAAU,GAAG,MAAM,CAAC,IAAI,sDAAC;AACzB,IAAA,cAAc,GAAG,QAAQ,CACjC,MACE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC3E;IACS,aAAa,GAAG,QAAQ,CAChC,MAAM,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACrE;;AAGS,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,yDAAC;AAEvD,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAC9B,IAAA,qBAAqB,GAAG,MAAM,CAAC,cAAc,CAAC;AAEtD,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;;YAEtB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE;;AAExB,oBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAC5D,IAAI,CAAC,eAAe,CAAC,aAAa,EAClC,EAAE,CACH;oBACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC;;AAGnD,oBAAA,IAAI,CAAC;AACF,yBAAA,qBAAqB,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;AAC9C,yBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,yBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;wBACnB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;AAC9C,oBAAA,CAAC,CAAC;gBACN;YACF,CAAC,EAAE,GAAG,CAAC;QACT;IACF;AAEA;;AAEG;AACH,IAAA,kBAAkB,CAAC,UAAmB,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;IACjC;AAEA;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC;QACvE;IACF;AAEA;;AAEG;IACH,uBAAuB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,QAAQ,CAAC;QACtD;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;;AAGA,IAAA,qBAAqB,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE;AAChE,IAAA,8BAA8B,GAAG;AAC/B,QAAA,OAAO,EAAE,MAAM,IAAI,CAAC,uBAAuB,EAAE;KAC9C;;IAGD,kBAAkB,GAAA;QAChB,OAAO;AACL,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,EAAE;AAC3D,YAAA,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,EAAE;AACzD,YAAA,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE;AACnD,YAAA,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,EAAE;AAC3D,YAAA,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,EAAE;AACzD,YAAA,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE;AACnD,YAAA,iBAAiB,EAAE,IAAI,CAAC,4BAA4B,EAAE;AACtD,YAAA,gBAAgB,EAAE,IAAI,CAAC,2BAA2B,EAAE;AACpD,YAAA,aAAa,EAAE,IAAI,CAAC,wBAAwB,EAAE;SAC/C;IACH;IAEA,qBAAqB,GAAA;QACnB,OAAO;AACL,YAAA,UAAU,EAAE,IAAI,CAAC,yBAAyB,EAAE;AAC5C,YAAA,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;SACrC;IACH;IAEA,8BAA8B,GAAA;QAC5B,OAAO;AACL,YAAA,UAAU,EAAE,IAAI,CAAC,yBAAyB,EAAE;AAC5C,YAAA,OAAO,EAAE,MAAM,IAAI,CAAC,uBAAuB,EAAE;SAC9C;IACH;wGAzKW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,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,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kCAAA,EAAA,EAAA,SAAA,EAHzB,CAAC,cAAc,CAAC,yHA6CW,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAET,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEtC,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClG1B,uwIAsHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9EI,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,WAAW,qHACX,sBAAsB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,0BAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,yBAAyB,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,aAAa,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAOJ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAhBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,QACnC,EAAE,KAAK,EAAE,kCAAkC,EAAE,EAAA,OAAA,EAC1C;wBACP,eAAe;wBACf,gBAAgB;wBAChB,WAAW;wBACX,sBAAsB;wBACtB,yBAAyB;wBACzB,aAAa;qBACd,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,uwIAAA,EAAA;;sBA6C1B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAEjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAElD,SAAS;uBAAC,aAAa;;;AEzF1B;;;;AAIG;MASU,sBAAsB,CAAA;IACjC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsC;;AAGnD,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,EAAE;;QAEP,4FAA4F;;QAE5F,sBAAsB;;QAEtB,iDAAiD;;QAEjD,4DAA4D;;AAE5D,QAAA,IAAI,CAAC,UAAU,EAAE,CAClB;IACH;wGAlBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJvB;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;AAET,EAAA,CAAA;AACF,iBAAA;;;MCkBY,mBAAmB,CAAA;AACtB,IAAA,UAAU,GAAG,MAAM,EAAC,UAA+B,EAAC;AACpD,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AACxC,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,UAAU;IACxB;IAEA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAC9C,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAC1C,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAuB;IAC7C,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAuB;IAC5C,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAExC,WAAW,GAAG,MAAM,EAAU;IAC9B,OAAO,GAAG,MAAM,EAAiB;IAExB,UAAU,GAAG,gBAAgB,EAAE;IAC/B,SAAS,GAAG,eAAe,EAAE;;AAGtC,IAAA,SAAS,GAAG,MAAM,CAAS,CAAC,qDAAC;;IAG7B,aAAa,GAAG,QAAQ,CACtB,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,yDAC7D;AACD,IAAA,WAAW,GAAG,QAAQ,CACpB,MAAM,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,uDACtE;AACD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,KAAK,oDAAC;AAExD,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QAC5B,MAAM,WAAW,GAAG,EAAE;;QAEpB,YAAY;;QAEZ,kCAAkC;;QAElC,oBAAoB;;QAEpB,sEAAsE;;AAEtE,QAAA,oEAAoE,CACrE;QACD,OAAO,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAC3C,IAAA,CAAC,yDAAC;AAEF,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,EAAE;AACjC,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;YACvC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QAEzC,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA6B;AACpD,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE/B,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC;QAEpC,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;;QAE5B,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC5C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;;AAG7C,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK;;AAGnC,QAAA,QAAQ,CAAC,KAAK,GAAG,EAAE;AACnB,QAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;;QAG9B,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QACvD,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC;QACvD,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC;;QAG7D,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,GAAG,UAAU,GAAG,aAAa;;QAGxE,MAAM,mBAAmB,GACvB,aAAa,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa;AAC3D,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;;AAGvC,QAAA,QAAQ,CAAC,KAAK,GAAG,YAAY;;QAG7B,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC9C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE;AAEvC,QAAA,IAAI,cAAc,GAAG,CAAC,EAAE;AACtB,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC9B,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI;QAChF;IACF;AAEA;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACvC;AAEA;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK;IAC5C;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAE5B,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;QAEjC,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IACvC;wGAtJW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,62CAHpB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAGD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBApB/B,SAAS;+BACE,+BAA+B,EAAA,eAAA,EACxB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,eAAe,EAAE,eAAe;AAChC,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,uBAAuB,EAAE,aAAa;AACtC,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,gBAAgB,EAAE,QAAQ;AAC1B,wBAAA,oBAAoB,EAAE,yBAAyB;AAC/C,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,aAAa,EAAE,GAAG;AACnB,qBAAA,EAAA,QAAA,EACS,EAAE,EAAA;;;ACRd;;AAEG;AACG,MAAO,kBAAmB,SAAQ,KAAK,CAAA;AAC3C,IAAA,WAAA,CAAY,OAAe,EAAA;QACzB,KAAK,CAAC,OAAO,CAAC;AACd,QAAA,IAAI,CAAC,IAAI,GAAG,oBAAoB;IAClC;AACD;;MCAY,wBAAwB,CAAA;AAClB,IAAA,SAAS,GACxB,SAAS,CAAC,QAAQ,CAAgC,WAAW,CAAC;IAEhE,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACxC,IAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,6DAAC;IAEzC,WAAW,GAAG,MAAM,EAAsB;IAC1C,KAAK,GAAG,MAAM,EAAsB;AAE3B,IAAA,KAAK,GAAG,MAAM,CAAqB,MAAM,iDAAC;AAE1C,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QACrC,MAAM,WAAW,GAAG,8BAA8B;QAClD,OAAO,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAA,CAAE;AACpD,IAAA,CAAC,yDAAC;;AAGM,IAAA,aAAa;AACb,IAAA,MAAM;AACN,IAAA,YAAY;AACZ,IAAA,QAAQ;IACR,WAAW,GAAW,EAAE;;IAGxB,QAAQ,GAAG,KAAK;;AAGhB,IAAA,gBAAgB;IAChB,gBAAgB,GAAa,EAAE;IAC/B,YAAY,GAAG,CAAC;IAChB,iBAAiB,GAAG,CAAC;IACrB,WAAW,GAAG,CAAC;AAEvB,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpD;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,EAAE;IACvB;AAEA;;AAEG;AACH,IAAA,MAAM,KAAK,GAAA;QACT,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,MAAM,EAAE;YAC5C;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzE,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;AAGpB,YAAA,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE;AACvC,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;YAChC,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC;AAC3D,YAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE;AAC9C,YAAA,QAAQ,CAAC,OAAO,GAAG,IAAI;AACvB,YAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAExB,YAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,CAAC,wBAAwB;AACrE,kBAAE;AACF,kBAAE,aAAa,CAAC,eAAe,CAAC,YAAY;AAC1C,sBAAE;AACF,sBAAE,aAAa,CAAC,eAAe,CAAC,WAAW;AACzC,0BAAE;0BACA,EAAE;AAEV,YAAA,MAAM,OAAO,GAAyB,QAAQ,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;YAClE,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;AACxD,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AAErB,YAAA,aAAa,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;gBACxC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;oBACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnC;AACF,YAAA,CAAC;AAED,YAAA,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5B;QAAE,OAAO,GAAG,EAAE;YACZ,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AACvC,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,MAAM,KAAK;QACb;gBAAU;AACR,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACvB;IACF;AAEA;;AAEG;IACH,IAAI,GAAA;QACF,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AAC3C,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;YACxC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,WAAW,EAAE;AAClD,gBAAA,MAAM,CAAC,IAAI,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;gBACrD;YACF;AAEA,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;AAE3B,YAAA,aAAa,CAAC,MAAM,GAAG,MAAK;AAC1B,gBAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,IAAI,YAAY;AACvD,gBAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAChE,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACrB,OAAO,CAAC,SAAS,CAAC;AACpB,YAAA,CAAC;AAED,YAAA,aAAa,CAAC,OAAO,GAAG,MAAK;gBAC3B,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,kBAAkB,CAAC;AACxD,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC;AACf,YAAA,CAAC;YAED,aAAa,CAAC,IAAI,EAAE;AACtB,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE;IACrB;AAEA;;AAEG;IACH,OAAO,GAAA;QACL,IAAI,CAAC,OAAO,EAAE;IAChB;AAEQ,IAAA,QAAQ,CAAC,KAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;AAEQ,IAAA,eAAe,CAAC,GAAY,EAAA;QAClC,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE;AAC1D,YAAA,OAAO,IAAI,kBAAkB,CAAC,8BAA8B,CAAC;QAC/D;QACA,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE;AACxD,YAAA,OAAO,IAAI,kBAAkB,CAAC,qBAAqB,CAAC;QACtD;AACA,QAAA,OAAO,IAAI,kBAAkB,CAC3B,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,2BAA2B,CACjE;IACH;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC3C,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;QACnC;AACA,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,UAAU,EAAE;AACjE,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAC3B;AAAE,YAAA,MAAM;;YAER;QACF;AACA,QAAA,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,QAAQ,EAAE;AAC7D,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAK,EAAE,CAAC,CAAC;QAC3C;AACA,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;IACtB;;AAGQ,IAAA,kBAAkB,CAAC,SAAqB,EAAA;QAC9C,IAAI,GAAG,GAAG,CAAC;AACX,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAC9C,YAAA,GAAG,IAAI,MAAM,GAAG,MAAM;QACxB;QACA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;IAC1C;IAEQ,cAAc,GAAA;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa;QAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,GAAG;YAAE;QAEV,MAAM,QAAQ,GAAG,CAAC;QAClB,MAAM,MAAM,GAAG,CAAC;AAChB,QAAA,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM;AACpC,QAAA,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC;QAEzB,MAAM,IAAI,GAAG,MAAK;AAChB,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;AAC3C,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC;YAExC,IACE,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG,GAAG;gBACjC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,GAAG,EACnC;gBACA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG;gBAC/B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG;AACjC,gBAAA,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;YACrB;AAEA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;YAEvD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,WAAW,EAAE;gBACjD,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpD;AAEA,gBAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AACxB,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACzD;AAEA,gBAAA,IAAI,CAAC,YAAY,IAAI,WAAW;AAEhC,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC1C,gBAAA,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC;AAC9C,gBAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC;gBAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;gBAEvD,MAAM,WAAW,GAAG,IAAI;gBACxB,MAAM,UAAU,GAAG,IAAI;AACvB,gBAAA,MAAM,KAAK,GACT,YAAY,GAAG,IAAI,CAAC,iBAAiB,GAAG,WAAW,GAAG,UAAU;AAClE,gBAAA,IAAI,CAAC,iBAAiB;oBACpB,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,IAAI,KAAK;AAEjD,gBAAA,IAAI,IAAI,CAAC,YAAY,IAAI,UAAU,EAAE;AACnC,oBAAA,IAAI,CAAC,YAAY,IAAI,UAAU;oBAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;oBAClD,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,OAAO,EAAE;AAC1C,wBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;oBAC/D;gBACF;YACF;AAEA,YAAA,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;AAE5C,YAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC9C,YAAA,GAAG,CAAC,SAAS,GAAG,aAAa,CAAC,KAAK;AACnC,YAAA,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AAElC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;YAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB;AAErC,YAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY;gBAChC,MAAM,aAAa,GAAG,EAAE;AAExB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACvC,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;AAClD,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,CAAC,CAAC;AAEjE,oBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,GAAG,MAAM;AACjE,oBAAA,MAAM,CAAC,GAAG,OAAO,GAAG,SAAS,GAAG,CAAC;AAEjC,oBAAA,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;wBACtC,IAAI,WAAW,GAAG,CAAC;AACnB,wBAAA,IAAI,CAAC,GAAG,aAAa,EAAE;4BACrB,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC;wBAC9C;6BAAO,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,aAAa,EAAE;AACzC,4BAAA,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,aAAa,CAAC;wBAC7D;wBACA,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,WAAW;wBAChD,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC;oBACzC;gBACF;YACF;AAEA,YAAA,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,IAAI,CAAC;AACrD,QAAA,CAAC;AAED,QAAA,IAAI,EAAE;IACR;wGAlSW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbzB;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAjBpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;oBACvC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,qCAAqC,EAAE,MAAM;AAC9C,qBAAA;AACF,iBAAA;iGAGqD,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACjBjE;AACA,MAAM,UAAU,GAAG,EAAE,CACnB,gIAAgI,EAChI,6EAA6E,EAC7E,+BAA+B,EAC/B,2FAA2F,CAC5F;AAED,MAAM,uBAAuB,GAAG,EAAE,CAChC,oBAAoB;AACpB;AACA,6BAA6B;AAC7B;AACA,4EAA4E;AAC5E;AACA,kCAAkC;AAClC;AACA,uBAAuB;AACvB;AACA,wBAAwB;AACxB;AACA,qDAAqD;AACrD;AACA,+FAA+F,EAC/F,6DAA6D,CAC9D;AAED,MAAM,yBAAyB,GAAG,EAAE,CAClC,oBAAoB;AACpB;AACA,uCAAuC;AACvC;AACA,+CAA+C;AAC/C;AACA,kCAAkC;AAClC;AACA,uBAAuB;AACvB;AACA,wBAAwB;AACxB;AACA,iDAAiD,EACjD,2DAA2D;AAC3D;AACA,yDAAyD,EACzD,qEAAqE,EACrE,+EAA+E,CAChF;MAsBY,qBAAqB,CAAA;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;IACvB,OAAO,GAAG,MAAM,EAAQ;IAEf,WAAW,GAAG,OAAO;AAC9B,IAAA,WAAW,GAAG,EAAE,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAErD,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGAXW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAftB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAfS,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAkBV,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBApBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,OAAA,EAC3B,CAAC,WAAW,CAAC,EAAA,eAAA,EACL,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA;;MAqCU,gCAAgC,CAAA;AAC3C,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;IACvB,OAAO,GAAG,MAAM,EAAQ;IAEf,MAAM,GAAG,gBAAgB,EAAE;IAE3B,OAAO,GAAG,GAAG;IACtB,WAAW,GAAG,EAAE,CAAC,UAAU,EAAE,yBAAyB,EAAE,UAAU,CAAC;AAEnE,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,0CAA0C;IAC/D;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGAjBW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,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,sCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfjC;;;;;;;;;;;;GAYT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAfS,WAAW,kFAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAkB1B,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBApB5C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sCAAsC,EAAA,OAAA,EACvC,CAAC,WAAW,EAAE,cAAc,CAAC,EAAA,eAAA,EACrB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA;;MA2CU,iCAAiC,CAAA;AAC5C,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;IACvB,OAAO,GAAG,MAAM,EAAQ;IAEf,MAAM,GAAG,gBAAgB,EAAE;IAE3B,KAAK,GAAG,CAAC;IAClB,WAAW,GAAG,EAAE,CAAC,UAAU,EAAE,yBAAyB,EAAE,UAAU,CAAC;AAEnE,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,2CAA2C;IAChE;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGAjBW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAflC;;;;;;;;;;;;GAYT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAfS,WAAW,kFAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAkB1B,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBApB7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EAAA,OAAA,EACxC,CAAC,WAAW,EAAE,cAAc,CAAC,EAAA,eAAA,EACrB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA;;MA2CU,iCAAiC,CAAA;AAC5C,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;IACvB,OAAO,GAAG,MAAM,EAAQ;IAEf,MAAM,GAAG,gBAAgB,EAAE;IAE3B,SAAS,GAAG,KAAK;IAC1B,WAAW,GAAG,EAAE,CAAC,UAAU,EAAE,yBAAyB,EAAE,eAAe,CAAC;AAExE,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,2CAA2C;IAChE;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGAjBW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAflC;;;;;;;;;;;;GAYT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAfS,WAAW,kFAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAkB1B,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBApB7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EAAA,OAAA,EACxC,CAAC,WAAW,EAAE,cAAc,CAAC,EAAA,eAAA,EACrB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA;;MA2CU,wBAAwB,CAAA;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;IACvB,OAAO,GAAG,MAAM,EAAQ;IAEf,MAAM,GAAG,gBAAgB,EAAE;IAE3B,QAAQ,GAAG,IAAI;IACxB,WAAW,GAAG,EAAE,CAAC,UAAU,EAAE,yBAAyB,EAAE,UAAU,CAAC;AAEnE,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,8BAA8B;IACnD;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGAjBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfzB;;;;;;;;;;;;GAYT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAfS,WAAW,kFAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAkB1B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBApBpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAAA,OAAA,EAC/B,CAAC,WAAW,EAAE,cAAc,CAAC,EAAA,eAAA,EACrB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA;;AAuBH;MAqBa,wBAAwB,CAAA;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAA0B,WAAW,mDAAC;AACrD,IAAA,WAAW,GAAG,KAAK,CAAC,EAAE,uDAAC;AACvB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;IAEjB,OAAO,GAAG,MAAM,EAAQ;AAExB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,MAAM,YAAY,GAChB,IAAI,CAAC,OAAO,EAAE,KAAK;AACjB,cAAE;cACA,yBAAyB;QAC/B,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACzD,IAAA,CAAC,yDAAC;IAEF,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;wGApBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfzB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAfS,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAkBb,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBApBpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,OAAA,EAC9B,CAAC,cAAc,CAAC,EAAA,eAAA,EACR,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA;;;MCnQU,kBAAkB,CAAA;IACpB,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAExC,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QACrC,MAAM,WAAW,GACf,0FAA0F;QAC5F,OAAO,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAC3C,IAAA,CAAC,yDAAC;wGAPS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALnB;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAGU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,SAAS;+BACE,yBAAyB,EAAA,eAAA,EAClB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,iBAAiB;qBAC7B,EAAA,QAAA,EACS;;AAET,EAAA,CAAA,EAAA;;;MCiHU,oBAAoB,CAAA;IACtB,QAAQ,GAAG,IAAI;IACf,gBAAgB,GAAG,YAAY;IACxC,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAuC;IAC7D,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAuB;IAC5C,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA4B;IAExC,MAAM,GAAG,gBAAgB,EAAE;;AAGnC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,qDAAC;AACvD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,KAAK,oDAAC;IACxD,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC/C,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE7C,IAAA,SAAS,GAAG,QAAQ,CAA0B,MAAK;QACjD,MAAM,KAAK,GAA4B,EAAE;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAE9B,IAAI,OAAO,EAAE;YACX,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,8BAA8B;AACjD,gBAAA,MAAM,EAAE,OAAO;AAChB,aAAA,CAAC;QACJ;QAEA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACnC,YAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AAChB,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;oBACzD;gBACF;AACA,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAClB;iBAAO;AACL,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAClB;QACF;AAEA,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;YAC1D,KAAK,CAAC,GAAG,EAAE;QACb;AAEA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,qDAAC;AAEF,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,oDAAC;AACtD,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,2DAAC;AAE5D,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gCAAgC;IAE7D,YAAY,GAAG,QAAQ,CAAC,MACtB,IAAI,CAAC,OAAO;AACV,UAAE,IAAI,CAAC,MAAM,CAAC;AACd,UAAE,IAAI,CAAC,MAAM,CAAC,gCAAgC,wDACjD;AAED,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC1B,MAAM,WAAW,GAAG,EAAE;;AAEpB,QAAA,kIAAkI,EAClI,6EAA6E,EAC7E,+BAA+B,EAC/B,8BAA8B;;AAE9B,QAAA,oBAAoB,EACpB,uCAAuC,EACvC,+CAA+C,EAC/C,uBAAuB,EACvB,wBAAwB,EACxB,iDAAiD,EACjD,2DAA2D,EAC3D,yDAAyD,EACzD,qEAAqE,EACrE,+EAA+E;;AAE/E,QAAA,iBAAiB,CAClB;QACD,OAAO,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5C,IAAA,CAAC,uDAAC;AAEF,IAAA,UAAU,CAAC,IAAS,EAAA;QAClB,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI;IAC5D;AAEA,IAAA,eAAe,CAAC,IAAmB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,EAAE;QACf;IACF;wGAxFW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/GrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6ET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAhFS,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,kFAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAkHxD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApHhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,WAC1B,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,CAAC,EAAA,eAAA,EACnD,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6ET,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4QAAA,CAAA,EAAA;;;MCyLU,gBAAgB,CAAA;AAClB,IAAA,WAAW,GAAG,SAAS,CAAC,mBAAmB,uDAAC;AAE5C,IAAA,gBAAgB,GAAG,SAAS,CAAC,wBAAwB,4DAAC;;AAGtD,IAAA,kBAAkB,GAAG,YAAY,CAGxC,YAAY,sDAAI,IAAI,EAAE,WAAW,EAAA,CAAA,GAAA,CAAnB,EAAE,IAAI,EAAE,WAAW,EAAE,GAAC;AAC7B,IAAA,eAAe,GAAG,YAAY,CACrC,SAAS,mDACP,IAAI,EAAE,WAAW,EAAA,CAAA,GAAA,CAAnB,EAAE,IAAI,EAAE,WAAW,EAAE,GACtB;AACQ,IAAA,gBAAgB,GAAG,YAAY,CACtC,UAAU,oDACR,IAAI,EAAE,WAAW,EAAA,CAAA,GAAA,CAAnB,EAAE,IAAI,EAAE,WAAW,EAAE,GACtB;AACQ,IAAA,qBAAqB,GAAG,YAAY,CAC3C,eAAe,yDACb,IAAI,EAAE,WAAW,EAAA,CAAA,GAAA,CAAnB,EAAE,IAAI,EAAE,WAAW,EAAE,GACtB;AACQ,IAAA,6BAA6B,GAAG,YAAY,CAGnD,uBAAuB,iEAAI,IAAI,EAAE,WAAW,EAAA,CAAA,GAAA,CAAnB,EAAE,IAAI,EAAE,WAAW,EAAE,GAAC;AACxC,IAAA,8BAA8B,GAAG,YAAY,CAGpD,wBAAwB,kEAAI,IAAI,EAAE,WAAW,EAAA,CAAA,GAAA,CAAnB,EAAE,IAAI,EAAE,WAAW,EAAE,GAAC;AACzC,IAAA,8BAA8B,GAAG,YAAY,CAGpD,wBAAwB,kEAAI,IAAI,EAAE,WAAW,EAAA,CAAA,GAAA,CAAnB,EAAE,IAAI,EAAE,WAAW,EAAE,GAAC;AACzC,IAAA,qBAAqB,GAAG,YAAY,CAC3C,eAAe,yDACb,IAAI,EAAE,WAAW,EAAA,CAAA,GAAA,CAAnB,EAAE,IAAI,EAAE,WAAW,EAAE,GACtB;AACQ,IAAA,mBAAmB,GAAG,YAAY,CACzC,aAAa,uDACX,IAAI,EAAE,WAAW,EAAA,CAAA,GAAA,CAAnB,EAAE,IAAI,EAAE,WAAW,EAAE,GACtB;;AAGD,IAAA,eAAe,GAAG,KAAK,CAAqB,SAAS,2DAAC;AACtD,IAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,wDAAC;AACnD,IAAA,aAAa,GAAG,KAAK,CAAqB,SAAS,yDAAC;AACpD,IAAA,eAAe,GAAG,KAAK,CAAqB,SAAS,2DAAC;AACtD,IAAA,mBAAmB,GAAG,KAAK,CAAqB,SAAS,+DAAC;AAC1D,IAAA,kBAAkB,GAAG,KAAK,CAAqB,SAAS,8DAAC;AACzD,IAAA,0BAA0B,GAAG,KAAK,CAAqB,SAAS,sEAAC;AACjE,IAAA,2BAA2B,GAAG,KAAK,CAAqB,SAAS,uEAAC;AAClE,IAAA,2BAA2B,GAAG,KAAK,CAAqB,SAAS,uEAAC;AAClE,IAAA,kBAAkB,GAAG,KAAK,CAAqB,SAAS,8DAAC;AACzD,IAAA,gBAAgB,GAAG,KAAK,CAAqB,SAAS,4DAAC;;AAGvD,IAAA,mBAAmB,GAAG,KAAK,CAAwB,SAAS,+DAAC;AAC7D,IAAA,gBAAgB,GAAG,KAAK,CAAwB,SAAS,4DAAC;AAC1D,IAAA,iBAAiB,GAAG,KAAK,CAAwB,SAAS,6DAAC;AAC3D,IAAA,sBAAsB,GAAG,KAAK,CAAwB,SAAS,kEAAC;AAChE,IAAA,8BAA8B,GAAG,KAAK,CAAwB,SAAS,0EAAC;AACxE,IAAA,+BAA+B,GAAG,KAAK,CAAwB,SAAS,2EAAC;AACzE,IAAA,+BAA+B,GAAG,KAAK,CAAwB,SAAS,2EAAC;AACzE,IAAA,sBAAsB,GAAG,KAAK,CAAwB,SAAS,kEAAC;AAChE,IAAA,oBAAoB,GAAG,KAAK,CAAwB,SAAS,gEAAC;;AAG9D,IAAA,IAAI,GAAG,KAAK,CAAmC,SAAS,gDAAC;AACzD,IAAA,SAAS,GAAG,KAAK,CAAsC,SAAS,qDAAC;AACjE,IAAA,SAAS,GAAG,KAAK,CAAsB,SAAS,qDAAC;AACjD,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,iDAAC;AAC5C,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,sDAAC;;;AAGjD,IAAA,sBAAsB,GAAG,KAAK,CAA+B,SAAS,kEAAC;;IAGvE,aAAa,GAAG,MAAM,EAAU;IAChC,eAAe,GAAG,MAAM,EAAQ;IAChC,gBAAgB,GAAG,MAAM,EAAQ;IACjC,gBAAgB,GAAG,MAAM,EAAQ;IACjC,yBAAyB,GAAG,MAAM,EAAQ;IAC1C,OAAO,GAAG,MAAM,EAAQ;IACxB,WAAW,GAAG,MAAM,EAAU;;IAGrB,WAAW,GAAG,OAAO;AACrB,IAAA,kBAAkB,GAAG,EAAE;;AAE9B,IAAA,gIAAgI,EAChI,6EAA6E,EAC7E,+BAA+B,EAC/B,2FAA2F;;AAE3F,IAAA,oBAAoB,EACpB,6BAA6B,EAC7B,4EAA4E,EAC5E,kCAAkC,EAClC,uBAAuB,EACvB,wBAAwB,EACxB,qDAAqD,EACrD,+FAA+F,EAC/F,6DAA6D,CAC9D;;IAGQ,MAAM,GAAG,gBAAgB,EAAE;;IAE3B,SAAS,GAAG,eAAe,EAAE;;AAGtC,IAAA,UAAU,GAAG,MAAM,CAAuB,OAAO,sDAAC;AAClD,IAAA,eAAe,GAAG,MAAM,CAA0B,EAAE,2DAAC;AACrD,IAAA,eAAe,GAAG,MAAM,CAAU,IAAI,2DAAC;AACvC,IAAA,WAAW,GAAG,MAAM,CAAqB,SAAS,uDAAC;;;IAInD,oBAAoB,GAAG,wBAAwB;AAC/C,IAAA,iBAAiB,GAAQ,IAAI,CAAC;IAC9B,kBAAkB,GAAG,kBAAkB;IACvC,wBAAwB,GAAG,wBAAwB;IACnD,oBAAoB,GAAG,oBAAoB;IAC3C,iCAAiC,GAAG,iCAAiC;IACrE,iCAAiC,GAAG,iCAAiC;IACrE,gCAAgC,GAAG,gCAAgC;;AAGnE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,wDAAC;AAC/D,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,6DAAC;AAC1D,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,6DAAC;AAC5D,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE;QAChC,OAAO,WAAW,KAAK;AACrB,cAAE;eACC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;AACzC,IAAA,CAAC,yDAAC;IACF,qBAAqB,GAAG,QAAQ,CAC9B,MACE,IAAI,CAAC,YAAY,EAAE,KAAK,YAAY;AACpC,QAAA,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,iEACvC;IACD,iBAAiB,GAAG,QAAQ,CAA2B,MACrD,IAAI,CAAC,SAAS,CAAC,kBAAkB;AAC/B,UAAE,MAAM,IAAI,CAAC,aAAa;UACxB,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACd;AACD,IAAA,kBAAkB,GAAG,QAAQ,CAC3B,MACE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE;AAC5B,QAAA,IAAI,CAAC,YAAY,EAAE,KAAK,YAAY;AACpC,QAAA,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,8DACxC;AAED,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QAC5B,MAAM,WAAW,GAAG,EAAE;;QAEpB,iBAAiB;;QAEjB,sEAAsE;;QAEtE,iBAAiB;;QAEjB,kEAAkE;;QAElE,oCAAoC;;AAEpC,QAAA,oCAAoC,CACrC;QACD,OAAO,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5C,IAAA,CAAC,yDAAC;AAEF,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAC9B,EAAE,CAAC,8BAA8B,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,gEACzD;;AAGD,IAAA,iBAAiB,GAAG,QAAQ,CAAoB,OAAO;AACrD,QAAA,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE;AACvB,QAAA,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE;AACnC,QAAA,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE;AAC5B,KAAA,CAAC,6DAAC;AAEH,IAAA,cAAc,GAAG,QAAQ,CAAiB,OAAO;AAC/C,QAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;AACzB,QAAA,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE;AAC5B,KAAA,CAAC,0DAAC;AAEH,IAAA,eAAe,GAAG,QAAQ,CAAC,OAAO;AAChC,QAAA,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE;AAC3B,QAAA,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE;AACnC,QAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,YAAY;AAC9C,QAAA,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE;AAC/B,QAAA,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE;AACvC,QAAA,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;QAChC,SAAS,EAAE,CAAC,KAAoB,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAC9D,QAAQ,EAAE,CAAC,KAAa,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC3D,KAAA,CAAC,2DAAC;AAEH,IAAA,oBAAoB,GAAG,QAAQ,CAAC,OAAO;AACrC,QAAA,iBAAiB,EAAE,IAAI;AACxB,KAAA,CAAC,gEAAC;;AAIH,IAAA,YAAY,GAAG,QAAQ,CAAC,OAAO;AAC7B,QAAA,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE;AACxC,QAAA,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,YAAY;AACpD,KAAA,CAAC,wDAAC;AAEH,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ;gBAAE;YACf,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,IAAI,KAAK,YAAY,EAAE;AACzB,oBAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE;AAClC,wBAAA,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACzD;gBACF;AAAO,qBAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE,KAAK,WAAW,EAAE;AAC9C,oBAAA,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACxD;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,gBAAA,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE;YAC7B;AACF,QAAA,CAAC,CAAC;IACJ;;AAGA,IAAA,oBAAoB,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE;AAC9D,IAAA,6BAA6B,GAAG;AAC9B,QAAA,OAAO,EAAE,MAAM,IAAI,CAAC,sBAAsB,EAAE;KAC7C;AACD,IAAA,6BAA6B,GAAG;AAC9B,QAAA,OAAO,EAAE,MAAM,IAAI,CAAC,sBAAsB,EAAE;KAC7C;AACD,IAAA,4BAA4B,GAAG;AAC7B,QAAA,OAAO,EAAE,MAAM,IAAI,CAAC,qBAAqB,EAAE;KAC5C;;IAED,iBAAiB,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;IAE5E,WAAW,GAAA;;AAET,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,QAAA,IAAI,QAAQ,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE;YACxC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACtC;IACF;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAA;;;QAGhC,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,KAAK,GAAG,EAAE;YAC9C;QACF;QAEA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC5C,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,IAAI,EAAE;QACb;IACF;AAEA,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,IAAI,CAAC,SAAS;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;IACvD;IAEA,IAAI,GAAA;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE;QAC3C,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE;AACrD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AAEhC,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC;YAEnC,IAAI,IAAI,CAAC,SAAS;AAAE,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;;AAGhC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE;AAC7B,gBAAA,CAAC,CAAC;YACJ;QACF;IACF;IAEA,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;IACnC;IAEA,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;IAC9B;AAEA,IAAA,MAAM,sBAAsB,GAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,QAAA,IAAI,SAA2B;AAC/B,QAAA,IAAI,QAAQ,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE;AACxC,YAAA,IAAI;AACF,gBAAA,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;YACnC;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC;YACnD;QACF;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;QAE5B,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC;YAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC;QACrD;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;IAC1B;wGAzUW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,0BAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,8BAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,+BAAA,EAAA,EAAA,iBAAA,EAAA,iCAAA,EAAA,UAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,+BAAA,EAAA,EAAA,iBAAA,EAAA,iCAAA,EAAA,UAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EASH,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAGzB,WAAW,uHAIX,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIX,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAKc,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIV,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIX,WAAW,iIAGrC,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIX,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAvCY,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEd,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzNpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EApNC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,WAAW,qHACX,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,wBAAwB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,gCAAgC,6HAChC,iCAAiC,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjC,iCAAiC,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjC,wBAAwB,qHACxB,oBAAoB,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FA0NX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAvO5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,QACxB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAA,OAAA,EACtB;wBACP,YAAY;wBACZ,WAAW;wBACX,WAAW;wBACX,mBAAmB;wBACnB,wBAAwB;wBACxB,gCAAgC;wBAChC,iCAAiC;wBACjC,iCAAiC;wBACjC,wBAAwB;wBACxB,oBAAoB;AACrB,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuMT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+GAAA,CAAA,EAAA;AAgBgC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,mBAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEd,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAM5D,YAAY,OAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAEnC,SAAS,EAAA,EAAA,GACT,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAGrB,UAAU,EAAA,EAAA,GACV,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAGrB,eAAe,OACf,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAKrB,uBAAuB,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,WAAW,EAAE,yFAI9C,wBAAwB,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAI/C,wBAAwB,OAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAE/C,eAAe,EAAA,EAAA,GACf,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAGrB,aAAa,EAAA,EAAA,GACb,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACzTzB;;;;AAIG;MAWU,yBAAyB,CAAA;IACpC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAEzB,MAAM,GAAG,gBAAgB,EAAE;;AAGpC,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,YAAA,OAAO,IAAI,CAAC,IAAI,EAAY;QAC9B;AAEA,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB;IACvC;;AAGA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,EAAE,CACP,mGAAmG,EACnG,IAAI,CAAC,UAAU,EAAE,CAClB;IACH;wGArBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,EAN1B;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAEU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;oBACxC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;AACF,iBAAA;;;MCqFY,0BAA0B,CAAA;AAC5B,IAAA,WAAW,GAAG,KAAK,CAAe,EAAE,uDAAC;IACrC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACxC,gBAAgB,GAAG,MAAM,EAAU;AAEnC,IAAA,aAAa,GAAG,QAAQ,CAAC,MAChC,EAAE,CACA,oEAAoE,EACpE,IAAI,CAAC,UAAU,EAAE,CAClB,yDACF;AAED,IAAA,SAAS,CAAC,UAAsB,EAAA;QAC9B,OAAO,EAAE,CACP,+BAA+B,EAC/B,CAAA,+BAAA,EAAkC,UAAU,CAAC,IAAI,CAAA,CAAE,CACpD;IACH;AAEA,IAAA,SAAS,CAAC,UAAsB,EAAA;AAC9B,QAAA,OAAO,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;IACxC;AAEA,IAAA,YAAY,CAAC,UAAsB,EAAA;QACjC,OAAO,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC1D;AAEA,IAAA,QAAQ,CAAC,UAAsB,EAAA;QAC7B,OAAO,cAAc,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC;IAC7C;wGA7BW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxF3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAEU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA7FtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;oBACzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE;AAC/B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFT,EAAA,CAAA;AACF,iBAAA;;;AC3FD;;;;AAIG;AA4CG,MAAO,6BAA8B,SAAQ,UAAU,CAAA;IAClD,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE1D,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAGjD,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAmB;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAGxC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAmB;IACrC,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IAC5C,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAG1B,qBAAqB,GAAG,gBAAgB;IACxC,0BAA0B,GAAG,yBAAyB;AAEzE,IAAA,WAAA,CAAY,UAAsB,EAAA;AAChC,QAAA,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;IACjC;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,EAAE,CACP,2DAA2D,EAC3D,IAAI,CAAC,mBAAmB,EAAE,CAC3B;IACH;wGA3BW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,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,mCAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAtC7B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC7D,aAAA;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAvCS,WAAW,qHAAE,0BAA0B,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAyCtC,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBA3CzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,0BAA0B,CAAC;oBAClD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,UAAU;AACnB,4BAAA,WAAW,EAAE,UAAU,CAAC,mCAAmC,CAAC;AAC7D,yBAAA;AACF,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA;AACF,iBAAA;;;ACvBD;;;;;;;;;;;;AAYG;MAqKU,eAAe,CAAA;AAuNhB,IAAA,qBAAA;AACA,IAAA,GAAA;AACA,IAAA,QAAA;;IArNS,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjD,UAAU,GAAG,MAAM;AACtC,IAAA,QAAQ,GAAG,KAAK,CAAY,EAAE,oDAAC;;AAE/B,IAAA,KAAK,GAAG,KAAK,CAAU,EAAE,iDAAC;IAC1B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACrC,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AACjC,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;AAClC,IAAA,mBAAmB,GAAG,KAAK,CAAU,KAAK,+DAAC;;AAG3C,IAAA,oBAAoB,GAAG,KAAK,CAAwB,SAAS,gEAAC;AAC9D,IAAA,mBAAmB,GAAG,KAAK,CAA+B,SAAS,+DAAC;AACpE,IAAA,gBAAgB,GAAG,KAAK,CAAqB,SAAS,4DAAC;;AAGvD,IAAA,yBAAyB,GAAG,KAAK,CAAwB,SAAS,qEAAC;AACnE,IAAA,wBAAwB,GAAG,KAAK,CAA+B,SAAS,oEAAC;AACzE,IAAA,qBAAqB,GAAG,KAAK,CAAqB,SAAS,iEAAC;;AAG5D,IAAA,yBAAyB,GAAG,KAAK,CAAwB,SAAS,qEAAC;AACnE,IAAA,wBAAwB,GAAG,KAAK,CAA+B,SAAS,oEAAC;AACzE,IAAA,qBAAqB,GAAG,KAAK,CAAqB,SAAS,iEAAC;;AAG5D,IAAA,4BAA4B,GAAG,KAAK,CAAwB,SAAS,wEAAC;AACtE,IAAA,2BAA2B,GAAG,KAAK,CAA+B,SAAS,uEAAC;AAC5E,IAAA,wBAAwB,GAAG,KAAK,CAAqB,SAAS,oEAAC;;AAG/D,IAAA,mBAAmB,GAAG,KAAK,CAAwB,SAAS,+DAAC;AAC7D,IAAA,kBAAkB,GAAG,KAAK,CAA+B,SAAS,8DAAC;AACnE,IAAA,eAAe,GAAG,KAAK,CAAqB,SAAS,2DAAC;;AAGtD,IAAA,6BAA6B,GAAG,KAAK,CAAwB,SAAS,yEAAC;AACvE,IAAA,4BAA4B,GAAG,KAAK,CAA+B,SAAS,wEAAC;AAC7E,IAAA,yBAAyB,GAAG,KAAK,CAAqB,SAAS,qEAAC;;AAGhE,IAAA,cAAc,GAAG,KAAK,CAAwB,SAAS,0DAAC;AACxD,IAAA,aAAa,GAAG,KAAK,CAA+B,SAAS,yDAAC;;AAG9D,IAAA,uBAAuB,GAAG,KAAK,CAAwB,SAAS,mEAAC;AACjE,IAAA,sBAAsB,GAAG,KAAK,CAA+B,SAAS,kEAAC;AACvE,IAAA,mBAAmB,GAAG,KAAK,CAAqB,SAAS,+DAAC;;AAG1D,IAAA,gBAAgB,GAAG,KAAK,CAAwB,SAAS,4DAAC;AAC1D,IAAA,eAAe,GAAG,KAAK,CAA+B,SAAS,2DAAC;AAChE,IAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,wDAAC;;AAGnD,IAAA,mBAAmB,GAAG,KAAK,CAAwB,SAAS,+DAAC;AAC7D,IAAA,kBAAkB,GAAG,KAAK,CAA+B,SAAS,8DAAC;AACnE,IAAA,eAAe,GAAG,KAAK,CAAqB,SAAS,2DAAC;AACtD,IAAA,cAAc,GAAG,KAAK,CAAqB,SAAS,0DAAC;;AAGvB,IAAA,oBAAoB;;AAGtB,IAAA,kBAAkB;AACrB,IAAA,eAAe;AACd,IAAA,gBAAgB;AACX,IAAA,qBAAqB;AAEpD,IAAA,wCAAwC;AACR,IAAA,sBAAsB;AACpB,IAAA,wBAAwB;AACzB,IAAA,uBAAuB;AACtB,IAAA,wBAAwB;;IAG1D,wBAAwB,GAAG,MAAM,EAAwB;IACzD,0BAA0B,GAAG,MAAM,EAAwB;IAC3D,yBAAyB,GAAG,MAAM,EAAwB;IAC1D,0BAA0B,GAAG,MAAM,EAAwB;;IAG3D,eAAe,GAAG,MAAM,EAAwB;IAChD,eAAe,GAAG,MAAM,EAAwB;;AAIhD,IAAA,qBAAqB;;IAGF,0BAA0B,GAAG,yBAAyB;IACtD,oCAAoC,GACrD,mCAAmC;IAClB,8BAA8B,GAC/C,6BAA6B;IACZ,qBAAqB,GAAG,gBAAgB;IACxC,uBAAuB,GAAG,sBAAsB;IAChD,0BAA0B,GAAG,yBAAyB;IACtD,MAAM,GAAG,gBAAgB,EAAE;;IAGpC,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC/C,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACpD,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACpD,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC5D,qBAAqB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9D,IAAA,oBAAoB,GAAG,MAAM,CAAS,CAAC,gEAAC;AACxC,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,sDAAC;IACnC,uBAAuB,GAAG,QAAQ,CAC1C,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACvE;;IAGS,aAAa,GAAG,QAAQ,CAAC,MACjC,EAAE,CACA,6EAA6E,CAC9E,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACF;AACS,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA,2DAA2D,EAC3D,8CAA8C,EAC9C,0CAA0C,EAC1C,6EAA6E,CAC9E,4DACF;;AAGS,IAAA,eAAe,GAAG,QAAQ,CAClC,MAAM,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,2DAChE;AAES,IAAA,cAAc,GAAG,QAAQ,CACjC,MAAM,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE,0DAC9D;IAES,wBAAwB,GAAG,QAAQ,CAC3C,MACE,IAAI,CAAC,4BAA4B,EAAE;AACnC,QAAA,IAAI,CAAC,6BAA6B,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACvC;AAES,IAAA,SAAS,GAAG,QAAQ,CAC5B,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,qDACpD;AAES,IAAA,kBAAkB,GAAG,QAAQ,CACrC,MAAM,IAAI,CAAC,sBAAsB,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE,8DACtE;AAES,IAAA,WAAW,GAAG,QAAQ,CAC9B,MAAM,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,uDACxD;AAES,IAAA,cAAc,GAAG,QAAQ,CACjC,MAAM,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE,0DAC9D;;AAGS,IAAA,iBAAiB,GAAG,QAAQ,CAAC,OAAO;AAC5C,QAAA,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACnC,QAAA,oBAAoB,EAAE,IAAI,CAAC,wBAAwB,EAAE;AACrD,QAAA,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,EAAE;AAC3D,QAAA,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACjD,QAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;AAC9B,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,QAAA,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzC,QAAA,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,EAAE;AAC3D,QAAA,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,EAAE;AACzD,QAAA,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE;AACnD,QAAA,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,EAAE;AAC3D,QAAA,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,EAAE;AACzD,QAAA,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE;AACnD,QAAA,4BAA4B,EAAE,IAAI,CAAC,4BAA4B,EAAE;AACjE,QAAA,2BAA2B,EAAE,IAAI,CAAC,2BAA2B,EAAE;AAC/D,QAAA,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,EAAE;AAC1D,KAAA,CAAC,6DAAC;;AAIO,IAAA,qBAAqB,GAAG,QAAQ,CAAC,OAAO;AAChD,QAAA,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;AACvB,QAAA,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE;AACjC,QAAA,cAAc,EAAE,IAAI,CAAC,oBAAoB,EAAE;AAC3C,QAAA,eAAe,EAAE,IAAI,CAAC,qBAAqB,EAAE;AAC7C,QAAA,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAChD,KAAA,CAAC,iEAAC;;;AAKO,IAAA,aAAa,GAAG,QAAQ,CAAC,OAAO;AACxC,QAAA,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;AACvB,QAAA,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE;AACjC,QAAA,oBAAoB,EAAE,IAAI,CAAC,wBAAwB,EAAE;AACrD,QAAA,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;AAC3B,QAAA,cAAc,EAAE,IAAI,CAAC,kBAAkB,EAAE;AACzC,QAAA,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE;AAClC,KAAA,CAAC,yDAAC;AAEK,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAC9B,IAAA,gBAAgB;AAChB,IAAA,0BAA0B;AACjB,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,SAAS,GAAG,KAAK;AAEzB,IAAA,WAAA,CACU,qBAA4C,EAC5C,GAAsB,EACtB,QAAiC,EAAA;QAFjC,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,QAAQ,GAAR,QAAQ;;IAGlB;IAEA,QAAQ,GAAA;;;QAGN,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5C;IAEA,WAAW,GAAA;;QAET,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5C;IAEA,eAAe,GAAA;;;QAIb,MAAM,iBAAiB,GAAG,MAAK;YAC7B,IACE,CAAC,IAAI,CAAC,qBAAqB;AAC3B,gBAAA,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,EACzC;AACA,gBAAA,OAAO,KAAK;YACd;;;AAIA,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa;YAC5D,MAAM,gBAAgB,GAAG,WAAW,CAAC,aAAa,CAChD,mCAAmC,CACpC;YAED,IAAI,CAAC,gBAAgB,EAAE;AACrB,gBAAA,OAAO,KAAK;YACd;;YAGA,IAAI,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAC3C,cAAc,CACA;;YAGhB,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,QAAQ,GAAG,gBAAgB,CAAC,iBAAgC;YAC9D;YAEA,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,OAAO,KAAK;YACd;;AAGA,YAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,YAAY;AAE5C,YAAA,IAAI,cAAc,KAAK,CAAC,EAAE;AACxB,gBAAA,OAAO,KAAK;YACd;;AAGA,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC;AAC7C,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAGxB,YAAA,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC;;AAG5C,YAAA,IAAI,CAAC;AACF,iBAAA,cAAc,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG;AAClC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM;gBAE9B,IAAI,SAAS,KAAK,IAAI,CAAC,oBAAoB,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE;AAC9D,oBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC;AACxC,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,oBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAGxB,oBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,wBAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;oBACrC;;oBAGA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AAC7C,wBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,wBAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;AACjC,wBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;oBAC1B,CAAC,EAAE,GAAG,CAAC;gBACT;AACF,YAAA,CAAC,CAAC;AAEJ,YAAA,OAAO,IAAI;AACb,QAAA,CAAC;;AAGD,QAAA,IAAI,CAAC,iBAAiB,EAAE,EAAE;;YAExB,IAAI,QAAQ,GAAG,CAAC;YAChB,MAAM,WAAW,GAAG,EAAE;YAEtB,MAAM,KAAK,GAAG,MAAK;gBACjB,IAAI,IAAI,CAAC,SAAS;oBAAE;AACpB,gBAAA,QAAQ,EAAE;gBACV,IAAI,iBAAiB,EAAE,EAAE;;gBAEzB;AAAO,qBAAA,IAAI,QAAQ,GAAG,WAAW,EAAE;;oBAEjC,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,oBAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC7C;qBAAO;;gBAEP;AACF,YAAA,CAAC;;AAGD,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,EAAE,CAAC;QAC1C;IACF;;IAGQ,wBAAwB,CAAC,QAAoB,EAAE,KAAa,EAAA;AAClE,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,IAAI,CAAC,0BAA0B,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AACvD,gBAAA,IAAI,CAAC,0BAA0B,GAAG,SAAS;AAC3C,gBAAA,QAAQ,EAAE;YACZ,CAAC,EAAE,KAAK,CAAC;AACX,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACrC;AACA,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,YAAY,CAAC,IAAI,CAAC,0BAA0B,CAAC;QAC/C;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;wGAhXW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kCAAA,EAAA,EAAA,SAAA,EAxJf,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,0CAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAkPf,UAAU,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhP5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoJT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA/JC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,yBAAyB,isBACzB,0BAA0B,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,yBAAyB,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FA4JF,eAAe,EAAA,UAAA,EAAA,CAAA;kBApK3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,yBAAyB;wBACzB,0BAA0B;wBAC1B,yBAAyB;wBACzB,WAAW;AACZ,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,SAAS,EAAE,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;AAC3D,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,kCAAkC,EAAE;AACnD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoJT,EAAA,CAAA;AACF,iBAAA;;sBAkEE,YAAY;uBAAC,cAAc;;sBAG3B,YAAY;uBAAC,YAAY;;sBACzB,YAAY;uBAAC,SAAS;;sBACtB,YAAY;uBAAC,UAAU;;sBACvB,YAAY;uBAAC,eAAe;;sBAC5B,YAAY;uBAAC,kCAAkC;;sBAE/C,YAAY;uBAAC,gBAAgB;;sBAC7B,YAAY;uBAAC,kBAAkB;;sBAC/B,YAAY;uBAAC,iBAAiB;;sBAC9B,YAAY;uBAAC,kBAAkB;;sBAa/B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;MC1R7C,+BAA+B,CAAA;IACjC,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAiC;AAEvC,IAAA,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;AACxB,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AAClD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAExC,IAAA,SAAS;AAEjB,IAAA,IAAY,OAAO,GAAA;QACjB,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,KAAK;IACxC;AAEA,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;QACnB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B;AAEA,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B;IAEA,MAAM,MAAM,CAAC,KAAgB,EAAA;QAC3B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;AAEnB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAChC;IACF;IAGA,MAAM,OAAO,CAAC,KAAqB,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;AAEnB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE;QAE1D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,IAAI,KAAK;AAC7C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;aACtD,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,MAAM;aACrC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;AAC9B,aAAA,MAAM,CACL,CAAC,IAAI,KAAmB,CAAC,CAAC,IAAI,IAAI,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CACpE;AAEH,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;QAExB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAChC;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;QACpC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,IAAI,KAAK;QAC7C,KAAK,CAAC,KAAK,EAAE;IACf;AAEA,IAAA,gBAAgB,CAAC,EAAU,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,KACvC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CACzD;IACH;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,WAAW;AACX,aAAA,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,KAAK,OAAO,CAAC;AAExD,QAAA,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,KACvC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,KAAK,OAAO,CAAC,CAClE;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE;QAC3B;AAEA,QAAA,OAAO,gBAAgB;IACzB;IAEA,YAAY,CAAC,KAAa,EAAE,WAAyB,EAAA;QACnD,MAAM,OAAO,GAAmB,EAAE;AAClC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;QAE5B,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC/C;AAEA,QAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YACpC,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE,UAAU,CAAC,MAAM;AACzB,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,UAAU,CAAC,QAAQ,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;oBACjE,GAAG,UAAU,CAAC,QAAQ;AACvB,iBAAA;AACc,aAAA,CAAC;QACpB;AAEA,QAAA,OAAO,OAAO;IAChB;IAEQ,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS;QAEzC,MAAM,KAAK,GAAqB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC;AAChD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,KAAY,KAAI;AACtE,YAAA,KAAK,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACxC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;AAEzD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,QAAQ,EAAE;YACV,KAAK,CAAC,MAAM,EAAE;AAChB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,OAAO,KAAK;IACd;IAEQ,MAAM,qBAAqB,CAAC,KAAY,EAAA;AAC9C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;AAC3C,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;AACxB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAChC;IAEQ,MAAM,YAAY,CAAC,KAAa,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;YACpB;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;AAElD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;gBACtC,MAAM,CAAC,cAAc,GAAG;AACtB,oBAAA,MAAM,EAAE,cAAc;oBACtB,IAAI;AACJ,oBAAA,OAAO,EAAE,CAAA,MAAA,EAAS,IAAI,CAAC,IAAI,CAAA,oCAAA,EAAuC,MAAM,CAAA,CAAE;AAC3E,iBAAA,CAAC;gBACF;YACF;AAEA,YAAA,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;gBACjC,MAAM,CAAC,cAAc,GAAG;AACtB,oBAAA,MAAM,EAAE,gBAAgB;oBACxB,IAAI;oBACJ,OAAO,EAAE,CAAA,MAAA,EACP,IAAI,CAAC,IACP,iCAAiC,cAAc,CAAC,OAAO,CAAC,CAAA,CAAE;AAC3D,iBAAA,CAAC;gBACF;YACF;AAEA,YAAA,MAAM,aAAa,GAAG,UAAU,EAAE;YAClC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AACnD,YAAA,MAAM,WAAW,GAAe;AAC9B,gBAAA,EAAE,EAAE,aAAa;AACjB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE;gBACxD,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,MAAM,EAAE,WAAW;aACpB;YAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,KAAK;AAC5C,gBAAA,GAAG,WAAW;gBACd,WAAW;AACZ,aAAA,CAAC;AAEF,YAAA,IAAI;AACF,gBAAA,MAAM,YAAY,GAAG,MAAM,CAAC;AAC1B,sBAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI;AAC5B,sBAAE;AACE,wBAAA,IAAI,EAAE,MAAe;AACrB,wBAAA,KAAK,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC;wBACnC,QAAQ,EAAE,IAAI,CAAC,IAAI;qBACpB;gBACL,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG,YAAY;AAC5C,gBAAA,MAAM,SAAS,GACb,QAAQ,KAAK,OAAO,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,GAAG,SAAS;gBAEvE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,KACvC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,KACzB,UAAU,CAAC,EAAE,KAAK;AAChB,sBAAE;AACE,wBAAA,GAAG,UAAU;wBACb,MAAM;AACN,wBAAA,MAAM,EAAE,OAAO;wBACf,SAAS;wBACT,QAAQ;AACT;AACH,sBAAE,UAAU,CACf,CACF;YACH;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,KACvC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,aAAa,CAAC,CACpE;gBACD,OAAO,CAAC,KAAK,CAAC,CAAA,+BAAA,EAAkC,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI,EAAE,KAAK,CAAC;gBACrE,MAAM,CAAC,cAAc,GAAG;AACtB,oBAAA,MAAM,EAAE,eAAe;oBACvB,IAAI;oBACJ,OAAO,EACL,KAAK,YAAY;0BACb,KAAK,CAAC;AACR,0BAAE,CAAA,kBAAA,EAAqB,IAAI,CAAC,IAAI,CAAA,CAAA,CAAG;AACxC,iBAAA,CAAC;YACJ;QACF;IACF;wGAnOW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAH3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACrC,iBAAA;;sBAyCE,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;ACtC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CG;AACG,SAAU,mBAAmB,CACjC,MAAgC,EAChC,UAA8B,EAC9B,YAA4B,EAC5B,KAAsC,EAAA;;;;;;AAOtC,IAAA,IAAI,YAAgC;AACpC,IAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE;AAClC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,mBAAmB,EAAE;AAC7C,QAAA,MAAM,KAAK,GAAG,UAAU,EAAE;QAC1B,SAAS,CAAC,MAAK;AACb,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AACzB,YAAA,KAAK,CAAC,QAAQ,GAAG,QAAQ;YACzB,IAAI,QAAQ,EAAE;;;;;;gBAMZ,IAAI,QAAQ,GAAG,KAAK;AACpB,gBAAA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE;AAC7C,gBAAA,IAAI,KAAK,YAAY,SAAS,EAAE;AAC9B,oBAAA,KAAK,CAAC,eAAe,GAAG,eAAe;gBACzC;AAEA,gBAAA,KAAK,EAAE,cAAc,IAAI;gBAEzB,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;AACtC,gBAAA,OAAO,CAAC,OAAO,CAAC,MAAM;qBACnB,KAAK,CAAC,MAAK;;;AAGZ,gBAAA,CAAC;qBACA,OAAO,CAAC,MAAK;AACZ,oBAAA,IAAI,CAAC,QAAQ;AAAE,wBAAA,KAAK,EAAE,eAAe,IAAI;AAC3C,gBAAA,CAAC,CAAC;;;;;gBAMJ,SAAS,CAAC,MAAK;oBACb,QAAQ,GAAG,IAAI;oBACf,eAAe,CAAC,KAAK,EAAE;oBACvB,KAAK,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,MAAK,EAAE,CAAC,CAAC;AACzC,gBAAA,CAAC,CAAC;YACJ;iBAAO,IAAI,YAAY,KAAK,SAAS,IAAI,QAAQ,KAAK,YAAY,EAAE;;AAElE,gBAAA,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACvB;YACA,YAAY,GAAG,QAAQ;AACzB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;AC5FA;;;;;;;;AAQG;AA0CG,MAAO,WAAY,SAAQ,SAAS,CAAA;AACvB,IAAA,oBAAoB,GAAG,SAAS,CAC/C,+BAA+B,gEAChC;AAEQ,IAAA,UAAU,GAAG,MAAM,CAAS,EAAE,sDAAC;IAC/B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACrC,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACtC,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;;IAE/C,yBAAyB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;;IAE1D,wBAAwB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;;IAEhE,qBAAqB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAEnD,yBAAyB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;;IAE1D,wBAAwB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;;IAEhE,qBAAqB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;;IAEnD,4BAA4B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;;IAE7D,2BAA2B,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgC;;IAEnE,wBAAwB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;IACtD,iBAAiB,GAAG,KAAK,CAAgC,SAAS,qDACzE,KAAK,EAAE,aAAa,EAAA,CAAA,GAAA,CADuD;AAC3E,YAAA,KAAK,EAAE,aAAa;AACrB,SAAA,CAAA,CAAA,CAAC;AACF;;;;;AAKG;AACc,IAAA,MAAM,GAAG,MAAM,CAAC,0BAA0B,EAAE;AAC3D,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACiB,eAAe,GAAG,QAAQ,CAC3C,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,gBAAgB,2DACnE;AACQ,IAAA,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;AAC3C,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACvC,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACnB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEtC,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,oDAAC;AACvD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,sDAAC;AACtD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,qDAAC;AAChD,IAAA,mBAAmB,GACpC,IAAI,CAAC,MAAM,EAAE,mBAAmB;AAChC,QAAA,QAAQ,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,oDAAC;AAClD,IAAA,gBAAgB,GAAG,QAAQ,CAC5C,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,iBAAiB,4DAChD;AACiB,IAAA,kBAAkB,GAAG,QAAQ,CAC7C,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,IAAI,KAAK,8DACjD;IACiB,oBAAoB,GAAG,QAAQ,CAAC,MAChD,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC3E;AACS,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,sDAAC;IAErC,iBAAiB,GAAW,UAAU,EAAE;AAEhD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAEP,MAAM,uBAAuB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7D,eAAe,EAAE,MAAK;AACpB,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;gBACrC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC1C,oBAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAC5C;YACF,CAAC;YACD,oBAAoB,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAI;AACjD,gBAAA,IAAI,OAAO,KAAK,IAAI,CAAC,eAAe,EAAE,EAAE;oBACtC;gBACF;AAEA,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AACjC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,CACvD;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC;AACD,YAAA,2BAA2B,EAAE,CAAC,EAAE,OAAO,EAAE,KAAI;AAC3C,gBAAA,IAAI,OAAO,KAAK,IAAI,CAAC,eAAe,EAAE,EAAE;oBACtC;gBACF;AAEA,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC;AACD,YAAA,4BAA4B,EAAE,CAAC,EAAE,OAAO,EAAE,KAAI;AAC5C,gBAAA,IAAI,OAAO,KAAK,IAAI,CAAC,eAAe,EAAE,EAAE;oBACtC;gBACF;AAEA,gBAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;YACvC,CAAC;YACD,0BAA0B,EAAE,MAAK;AAC/B,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AACrC,gBAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC5C,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,uBAAuB,CAAC,WAAW,EAAE,CAAC;QAEtE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,YAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AACrC,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAC5C,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;;;;;;;YAOf,MAAM,CAAC,MAAK;AACV,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE;gBACrC,IAAI,aAAa,EAAE;AACjB,oBAAA,IAAI,CAAC,MAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACnE;AACF,YAAA,CAAC,CAAC;;;;;;;;;;YAWF,mBAAmB,CACjB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EACrD;gBACE,cAAc,EAAE,MAAK;AACnB,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;gBACzB,CAAC;gBACD,eAAe,EAAE,MAAK;AACpB,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;gBACzB,CAAC;AACF,aAAA,CACF;QACH;aAAO;;;AAGL,YAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAExC,gBAAA,KAAK,CAAC,QAAQ,GAAG,QAAQ;AAEzB,gBAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;oBAAE;gBAEjC,IAAI,QAAQ,GAAG,KAAK;AACpB,gBAAA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE;AAC7C,gBAAA,IAAI,KAAK,YAAY,SAAS,EAAE;AAC9B,oBAAA,KAAK,CAAC,eAAe,GAAG,eAAe;gBACzC;gBAEA,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,QAAQ,CAAC;gBAE/C,SAAS,CAAC,MAAK;oBACb,QAAQ,GAAG,IAAI;oBACf,eAAe,CAAC,KAAK,EAAE;AACvB,oBAAA,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,MAAK,EAAE,CAAC,CAAC;AAC9C,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;IACF;AAEQ,IAAA,MAAM,cAAc,CAC1B,KAAoB,EACpB,UAAyB,EAAA;AAEzB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;QACpD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,UAAU,EAAE;gBAAE;AAClB,YAAA,IAAI,EAAE,KAAK,YAAY,8BAA8B,CAAC,EAAE;AACtD,gBAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC;YACrD;QACF;gBAAU;AACR,YAAA,IAAI,CAAC,UAAU,EAAE,EAAE;AACjB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB;QACF;IACF;IAEA,MAAM,WAAW,CAAC,KAAa,EAAA;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK;AACrC,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE;AAE7B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC/B,YAAA,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC;YACzE;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE;QAC/C,MAAM,gBAAgB,GAAG,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;AACrD,QAAA,MAAM,WAAW,GACf,gBAAgB,CAAC,MAAM,GAAG;AACxB,cAAG;gBACC,EAAE,EAAE,UAAU,EAAE;AAChB,gBAAA,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,WAAY,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC;AAChD;AACf,cAAE;gBACE,EAAE,EAAE,UAAU,EAAE;AAChB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,OAAO,EAAE,KAAK;aACf;AACP,QAAA,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;;AAG7B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;;AAGvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGvB,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;QAChD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC;QAC1C;gBAAU;AACR,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB;IACF;AAEA,IAAA,MAAM,gBAAgB,CACpB,UAAsB,EACtB,MAAc,EAAA;QAEd,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE;QACzC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS;YAAE;QAEhD,KAAK,CAAC,UAAU,CAAC;YACf,EAAE,EAAE,UAAU,EAAE;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;QAChD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC;QAC1C;gBAAU;AACR,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB;IACF;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC5B;IAES,MAAM,mBAAmB,CAAC,SAAe,EAAA;AAChD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;YACrE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,IAAI,IAAI,EAAE;gBACR,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE;AACzC,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,IAAI,CAAC;YAC9D;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC;QAC5D;gBAAU;AACR,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB;IACF;AAEQ,IAAA,uBAAuB,CAAC,OAAe,EAAA;AAC7C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAC3D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7C,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,oBAAoB,EAAE,EAAE,cAAc,EAAE;IAC/C;AAEA,IAAA,gBAAgB,CAAC,EAAU,EAAA;QACzB,IAAI,CAAC,oBAAoB,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC;IACnD;AAEA,IAAA,cAAc,CAAC,KAAgB,EAAA;QAC7B,IAAI,CAAC,oBAAoB,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC;IAChD;AAEA,IAAA,eAAe,CAAC,KAAgB,EAAA;QAC9B,IAAI,CAAC,oBAAoB,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC;IACjD;AAEA,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,KAAK,IAAI,CAAC,oBAAoB,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC;IACjD;wGAvUW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,cAAA,EAAA,kCAAA,EAAA,EAAA,SAAA,EAPX;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,WAAW,EAAE,WAAW;AACzB,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIC,+BAA+B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArCvB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA/BS,eAAe,yhCAAE,+BAA+B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAuC/C,WAAW,EAAA,UAAA,EAAA,CAAA;kBAzCvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,+BAA+B,CAAC;oBAC3D,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,KAAK,EAAE,kCAAkC,EAAE;AAC1E,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT,EAAA,CAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,SAAS;AAClB,4BAAA,WAAW,EAAA,WAAa;AACzB,yBAAA;AACF,qBAAA;AACF,iBAAA;gIAGG,+BAA+B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC/EnC;;;;;;;;;;;;;;;;;;;;AAoBG;MACU,wBAAwB,CAAA;AACnC,IAAA,OAAgB,QAAQ,GAAG,mBAAmB;AAC9C,IAAA,OAAgB,aAAa,GAAG,wBAAwB;AACxD,IAAA,OAAgB,UAAU,GAAG,qBAAqB;AAClD,IAAA,OAAgB,qBAAqB,GAAG,gCAAgC;AACxE,IAAA,OAAgB,sBAAsB,GAAG,iCAAiC;AAC1E,IAAA,OAAgB,sBAAsB,GAAG,iCAAiC;AAC1E,IAAA,OAAgB,aAAa,GAAG,wBAAwB;AACxD,IAAA,OAAgB,OAAO,GAAG,kBAAkB;AAC5C,IAAA,OAAgB,SAAS,GAAG,oBAAoB;;;ACGlD;;;;;;;AAOG;AACH,SAAS,cAAc,CAAC,MAAc,EAAA;IACpC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;KAC3E;AACH;AAEA;;;AAGG;AACH,MAAM,uBAAuB,GAAG,mBAAmB;AACnD;;;;;AAKG;AACH,MAAM,mBAAmB,GAAG,+BAA+B;AAE3D;;;;;;;;;;;;;;;AAeG;AACH,SAAS,aAAa,CAAC,MAAsB,EAAA;IAC3C,IAAI,OAAO,QAAQ,KAAK,WAAW;AAAE,QAAA,OAAO,IAAI;IAChD,MAAM,SAAS,GAAG,MAAM,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC5D,IAAI,SAAS,EAAE;QACb,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAc,mBAAmB,CAAC;AACxE,QAAA,IAAI,MAAM;AAAE,YAAA,OAAO,MAAM;IAC3B;AACA,IAAA,OAAO,QAAQ,CAAC,aAAa,CAAc,mBAAmB,CAAC;AACjE;AAEA;;;;;;;;;;;;;;;;;AAiBG;MAEU,uBAAuB,CAAA;;AAEzB,IAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;wGAF5B,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,2BAA2B,EAAE,UAAU,EAAE,IAAI,EAAE;;AAMtE;;;;;;;;;;;;;;;;;;;AAmBG;MAqCU,oBAAoB,CAAA;AAC/B;;;;;AAKG;IACM,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAE9C;;;AAGG;IACM,UAAU,GAAG,KAAK,CAAS,wBAAwB,8CAC1D,KAAK,EAAE,aAAa,EAAA,CAAA,GAAA,CADwC;AAC5D,YAAA,KAAK,EAAE,aAAa;AACrB,SAAA,CAAA,CAAA,CAAC;AAEF;;;AAGG;IACM,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAE5C;;;;AAIG;IACM,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAElD;;;;;;AAMG;IACM,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAuB;AAEnD;;;AAGG;AACgB,IAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAE/D;;;;;AAKG;IACM,mBAAmB,GAAG,KAAK,CAElC,SAAS,uDACT,KAAK,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADZ;AACX,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA,CAAA,CAAA,CAAC;AAEF;;;;;;AAMG;IACM,gBAAgB,GAAG,KAAK,CAA2B,SAAS,oDACnE,KAAK,EAAE,aAAa,EAAA,CAAA,GAAA,CADiD;AACrE,YAAA,KAAK,EAAE,aAAa;AACrB,SAAA,CAAA,CAAA,CAAC;AAEF;;;;AAIG;IACM,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAE5C;;;;;AAKG;IACM,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAEjD;;;;;AAKG;IACM,eAAe,GAAG,KAAK,CAA2B,SAAS,mDAClE,KAAK,EAAE,YAAY,EAAA,CAAA,GAAA,CADiD;AACpE,YAAA,KAAK,EAAE,YAAY;AACpB,SAAA,CAAA,CAAA,CAAC;AAEe,IAAA,MAAM,GAAG,MAAM,CAAC,0BAA0B,EAAE;AAC3D,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AAEe,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAE/B,SAAS,GAAG,SAAS,CAGpC,QAAQ,6CACR,IAAI,EAAE,UAAU,EAAA,CAAA,GAAA,CADN;AACV,YAAA,IAAI,EAAE,UAAU;AACjB,SAAA,CAAA,CAAA,CAAC;AAEF;;;;;AAKG;AACgB,IAAA,YAAY,GAAG,YAAY,CAAC,uBAAuB,wDAAC;AAEvE;;;;;AAKG;IACgB,eAAe,GAAG,QAAQ,CAC3C,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,gBAAgB,2DACnE;AAED;;;AAGG;AACc,IAAA,cAAc,GAAG,QAAQ,CAAC,MACzC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,0DAC3D;AAED;;;;;;;AAOG;AACgB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;AACjC,QAAA,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAC1E,OAAO,cAAc,IAAI,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;AACtD,IAAA,CAAC,oDAAC;AAEF;;;;;AAKG;AACgB,IAAA,cAAc,GAAG,QAAQ,CAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,KAAK,IAAI,0DAC5C;;IAGkB,OAAO,GAAG,aAAa,CAAC;QACzC,OAAO,EAAE,IAAI,CAAC,eAAe;AAC7B,QAAA,eAAe,EAAE,IAAI;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;;;QAGjB,OAAO,EAAE,IAAI,CAAC,QAAQ;AACvB,KAAA,CAAC;;AAGiB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,yDAC3C;AAED;;;;;AAKG;AACgB,IAAA,YAAY,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,IAAI,IAAI,wDAChD;AAED;;;AAGG;AACgB,IAAA,cAAc,GAAG,QAAQ,CAC1C,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,0DACtC;AAED;;;;AAIG;AACgB,IAAA,qBAAqB,GAAG,QAAQ,CACjD,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,OAAO,IAAI,IAAI,iEACrD;AAEgB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD;;;;;;AAMG;AACc,IAAA,eAAe,GAAG,MAAM,CAAC,KAAK,2DAAC;AAEhD;;;;AAIG;IACgB,UAAU,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAChE;AAED,IAAA,WAAA,GAAA;AACE,QAAA,6BAA6B,EAAE;;;;QAK/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE;QACtD,IAAI,gBAAgB,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC;QAC7C;;;;;QAMA,MAAM,CAAC,MAAK;YACV,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;AAC1C,YAAA,IAAI,CAAC,EAAE;gBAAE;AACT,YAAA,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;;;AAGjC,YAAA,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;AAC9D,YAAA,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AAC9B,YAAA,EAAE,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAChD,YAAA,EAAE,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;YACzC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAC1C,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;;;AAGtD,YAAA,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;;;;AAI3B,YAAA,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;AACtD,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS;AAAE,gBAAA,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAY;AACjE,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,UAAU,KAAK,SAAS;AAAE,gBAAA,EAAE,CAAC,UAAU,GAAG,UAAU;;;AAGxD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,YAAA,IAAI,WAAW,KAAK,SAAS,EAAE;;;AAI3B,gBAAA,EACD,CAAC,WAAW,GAAG,WAAW;YAC7B;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;;;;;;AAQG;AACO,IAAA,gBAAgB,CAAC,KAAY,EAAA;AACrC,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAI,KAA2C,CAAC,MAAM;AACxE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE;QAC1C,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,QAAQ,CAAC;QACnB;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9D;;;;;AAKA,QAAA,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;IACjE;AAEA;;;;;;;;AAQG;AACO,IAAA,YAAY,CAAC,KAAY,EAAA;AACjC,QAAA,MAAM,EAAE,IAAI,EAAE,GAAI,KAAuC,CAAC,MAAM;AAChE,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;QACjC;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAChC;IACF;AAEA;;;;;;;AAOG;IACO,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,EAAE;QACX;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE;QAC/B;IACF;AAEA;;;;;;AAMG;AACO,IAAA,SAAS,CAAC,KAAY,EAAA;AAC9B,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAI,KAAoC,CAAC,MAAM;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAI;AACjD,YAAA,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,GAAG,CAAC;AAClE,QAAA,CAAC,CAAC;IACJ;AAEA;;;;;;AAMG;AACO,IAAA,WAAW,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAI,KAAsC,CAAC,MAAM;AACnE,QAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAI;AACnD,YAAA,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC;AACpE,QAAA,CAAC,CAAC;IACJ;AAEA;;;;;;;;;;;;;AAaG;AACO,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAI,KAAmC,CAAC,MAAM;QAChE,MAAM,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAC,cAAc,EAAE;AACpD,QAAA,IAAI,CAAC;aACF,YAAY,CAAC,QAAQ;aACrB,IAAI,CAAC,MAAK;YACT,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC7B,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;gBACvC,IAAI,OAAO,EAAE;AACX,oBAAA,OAAO,EAAE;gBACX;qBAAO;AACL,oBAAA,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE;gBAC/B;YACF;AACF,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,GAAG,KAAI;AACb,YAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC;AACjE,QAAA,CAAC,CAAC;IACN;AAEA;;;;;AAKG;IACO,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;IAC/B;AAEA;;;;;;AAMG;AACO,IAAA,gBAAgB,CAAC,KAAY,EAAA;AACrC,QAAA,MAAM,EAAE,SAAS,EAAE,GAAI,KAA2C,CAAC,MAAM;AACzE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;IACrC;AAEA;;;;;;;AAOG;AACO,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,EAAE,KAAK,EAAE,GAAI,KAAkC,CAAC,MAAM;AAC5D,QAAA,IAAI,KAAK,KAAK,YAAY,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;QACjC;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;QAC/B;IACF;AAEA;;;;AAIG;IACO,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;IACjC;AAEA;;;;;;AAMG;IACO,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,eAAe,EAAE,IAAI;IAC5B;wGAhcW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgHgB,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAT9D,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArIR;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA7BS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA+Bf,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApChC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC3B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA;AACF,iBAAA;;sBA4CE;AA2DC,aAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,QAAQ,EAAA,EAAA,GAAE;AACV,4BAAA,IAAI,EAAE,UAAU;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAQ8C,uBAAuB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACvSxE;AACM,SAAU,cAAc,CAC5B,KAAkC,EAClC,QAAgB,EAAA;IAEhB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI;AAC5E,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;AAAE,QAAA,OAAO,KAAK,CAAC,IAAI,EAAE;IAC7E,OAAO,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAI;AACxB;;ACUA;MAmKa,YAAY,CAAA;AACd,IAAA,IAAI,GAAG,KAAK,CAAC,IAAI,gDAAC;AAClB,IAAA,KAAK,GAAG,KAAK,CAAC,SAAS,iDAAC;AACxB,IAAA,KAAK,GAAG,KAAK,CAAkB,GAAG,iDAAC;AACnC,IAAA,MAAM,GAAG,KAAK,CAAkB,GAAG,kDAAC;AACpC,IAAA,mBAAmB,GAAG,KAAK,CAAC,KAAK,+DAAC;AAClC,IAAA,aAAa,GAAG,KAAK,CAAgB,WAAW,yDAAC;IACjD,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA6B;AAE1C,IAAA,QAAQ,GAAG,CAAA,cAAA,EAAiB,UAAU,EAAE,EAAE;AAC1C,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,QAAQ;AAClC,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,yDAClC;AACkB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAC3C,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,0DACnC;AACgB,IAAA,QAAQ,GACvB,SAAS,CAAC,QAAQ,CAAgC,UAAU,CAAC;AAC9C,IAAA,YAAY,GAC3B,SAAS,CAAgC,cAAc,wDAAC;AAE1D,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;YACnB,IAAI,IAAI,CAAC,IAAI,EAAE;gBAAE,IAAI,CAAC,UAAU,EAAE;AACpC,QAAA,CAAC,CAAC;IACJ;IAEU,MAAM,GAAA;QACd,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE;aACxB;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACnB,cAAc,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC;IACF;IAEU,iBAAiB,GAAA;QACzB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE;IAC9C;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACpB,cAAc,CAAC,MACb,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAC7D;IACH;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IACnE;wGAlDW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7Jb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4zDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA3DS,YAAY,4IAAE,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAgK9B,YAAY,EAAA,UAAA,EAAA,CAAA;kBAlKxB,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,eAAA,EACzB,uBAAuB,CAAC,MAAM,QACzC,EAAE,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAA,QAAA,EAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4zDAAA,CAAA,EAAA;AAuHmD,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,UAAU,sEAEnB,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACtM3D;MAEa,qBAAqB,CAAA;AACf,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACpC,IAAA,KAAK;IACL,yBAAyB,GAAG,EAAE;IAC9B,uBAAuB,GAAG,EAAE;;AAGpC,IAAA,OAAO,CAAC,SAAiB,EAAA;QACvB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,KAAK;AACtE,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,yBAAyB;gBAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB;AAC5C,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;AACvE,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS;QACxB;AACA,QAAA,OAAO,IAAI;IACb;;AAGA,IAAA,MAAM,CAAC,SAAiB,EAAE,QAA0B,EAAE,KAAa,EAAA;AACjE,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB;AACxC,YAAA,QAAQ,KAAK,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,yBAAyB;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;AACtC,YAAA,QAAQ,KAAK,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,uBAAuB;IAC/D;;AAGA,IAAA,OAAO,CAAC,SAAiB,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,yBAAyB;AAC3E,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB;AACvE,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;IACxB;wGAjCW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAArB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA;;4FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACwBlC;MA2La,cAAc,CAAA;AAChB,IAAA,IAAI,GAAG,KAAK,CAAC,IAAI,gDAAC;AAClB,IAAA,IAAI,GAAG,KAAK,CAAqB,QAAQ,gDAAC;AAC1C,IAAA,QAAQ,GAAG,KAAK,CAAyB,OAAO,oDAAC;AACjD,IAAA,KAAK,GAAG,KAAK,CAAkB,GAAG,iDAAC;AACnC,IAAA,KAAK,GAAG,KAAK,CAAC,SAAS,iDAAC;AACxB,IAAA,mBAAmB,GAAG,KAAK,CAAC,KAAK,+DAAC;AAClC,IAAA,aAAa,GAAG,KAAK,CAAgB,WAAW,yDAAC;IACjD,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA6B;AAE1C,IAAA,SAAS,GAAG,CAAA,gBAAA,EAAmB,UAAU,EAAE,EAAE;AAC7C,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,SAAS,QAAQ;AACnC,IAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,yDAClC;AACkB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,IAAA,OAAO,GAAG,QAAQ,CACnC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,mDACpD;AACkB,IAAA,YAAY,GAAG,MAAM,CAAC,IAAI,wDAAC;AAE7B,IAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACjC,IAAA,QAAQ,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACxC,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3B,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAClD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,QAAQ,GACvB,SAAS,CAAC,QAAQ,CAAgC,UAAU,CAAC;AAC9C,IAAA,YAAY,GAC3B,SAAS,CAAgC,cAAc,wDAAC;IAClD,QAAQ,GAAG,KAAK;AAExB,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;YACnB,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;gBAAE,IAAI,CAAC,UAAU,EAAE;AACpD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,GACjD,wBAAwB,CACzB;AACD,YAAA,IAAI,CAAC,KAAK;gBAAE;AACZ,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AACtD,YAAA,MAAM,EAAE;AACR,YAAA,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MACxB,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAC5C;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACnE,IAAI,CAAC,UAAU,EAAE;gBACf,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC3B;YACF;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBACjD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpC,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,oBAAA,OAAO,CAAC,IAAI,CACV,uEAAuE,CACxE;oBACD;gBACF;YACF;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACzE,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IACrD;IAEU,MAAM,GAAA;QACd,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE;aACxB;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACnB,cAAc,CAAC,MAAK;gBAClB,IAAI,IAAI,CAAC,OAAO,EAAE;oBAAE,IAAI,CAAC,UAAU,EAAE;AACvC,YAAA,CAAC,CAAC;QACJ;IACF;IAEU,iBAAiB,GAAA;QACzB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE;IAC9C;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACpB,cAAc,CAAC,MACb,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAC7D;IACH;IAEQ,WAAW,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QACpB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IACnE;wGApGW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArLf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2ET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wyDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA9ES,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAwLhD,cAAc,EAAA,UAAA,EAAA,CAAA;kBA1L1B,SAAS;+BACE,iBAAiB,EAAA,OAAA,EAClB,CAAC,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,EAAA,eAAA,EAC3C,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAA,QAAA,EACpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2ET,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wyDAAA,CAAA,EAAA;AAqImD,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,UAAU,sEAEnB,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACpP3D;;AAEG;;;;"}