markstream-angular 0.0.9 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"markstream-angular.mjs","sources":["../../src/hydrateCustomTagContent.ts","../../src/parseNestedMarkdownToNodes.ts","../../src/customComponents.ts","../../src/components/shared/node-helpers.ts","../../src/components/BlockquoteNode/BlockquoteNode.component.ts","../../src/components/CheckboxNode/CheckboxNode.component.ts","../../src/i18n/useSafeI18n.ts","../../src/optional/monaco.ts","../../src/utils/languageIcon.ts","../../src/components/PreCodeNode/PreCodeNode.component.ts","../../src/components/CodeBlockNode/HtmlPreviewFrame.component.ts","../../src/components/CodeBlockNode/CodeBlockNode.component.ts","../../src/optional/d2.ts","../../src/sanitizeSvg.ts","../../src/components/shared/rich-block-helpers.ts","../../src/components/D2BlockNode/D2BlockNode.component.ts","../../src/components/DefinitionListNode/DefinitionListNode.component.ts","../../src/components/DynamicNodeHost/DynamicNodeHost.component.ts","../../src/components/EmojiNode/EmojiNode.component.ts","../../src/components/EmphasisNode/EmphasisNode.component.ts","../../src/components/FallbackComponent/FallbackComponent.component.ts","../../src/components/FootnoteAnchorNode/FootnoteAnchorNode.component.ts","../../src/components/FootnoteNode/FootnoteNode.component.ts","../../src/components/FootnoteReferenceNode/FootnoteReferenceNode.component.ts","../../src/components/HardBreakNode/HardBreakNode.component.ts","../../src/components/shared/safe-attrs.directive.ts","../../src/components/HeadingNode/HeadingNode.component.ts","../../src/components/HighlightNode/HighlightNode.component.ts","../../src/sanitizeHtmlContent.ts","../../src/renderMarkdownHtml.ts","../../src/components/HtmlBlockNode/HtmlBlockNode.component.ts","../../src/components/HtmlInlineNode/HtmlInlineNode.component.ts","../../src/components/ImageNode/ImageNode.component.ts","../../src/optional/infographic.ts","../../src/components/shared/diagram-height.ts","../../src/components/InfographicBlockNode/InfographicBlockNode.component.ts","../../src/components/InlineCodeNode/InlineCodeNode.component.ts","../../src/components/InsertNode/InsertNode.component.ts","../../src/tooltip/singletonTooltip.ts","../../src/components/TextNode/TextNode.component.ts","../../src/components/LinkNode/LinkNode.component.ts","../../src/components/ListItemNode/ListItemNode.component.ts","../../src/components/ListNode/ListNode.component.ts","../../src/optional/katex.ts","../../src/utils/normalizeKaTeXRenderInput.ts","../../src/workers/katexWorkerClient.ts","../../src/components/MathBlockNode/MathBlockNode.component.ts","../../src/components/MathInlineNode/MathInlineNode.component.ts","../../src/optional/mermaid.ts","../../src/workers/mermaidWorkerClient.ts","../../src/components/MermaidBlockNode/MermaidBlockNode.component.ts","../../src/components/ParagraphNode/ParagraphNode.component.ts","../../src/components/ReferenceNode/ReferenceNode.component.ts","../../src/components/shared/node-outlet-helpers.ts","../../src/components/StrikethroughNode/StrikethroughNode.component.ts","../../src/components/StrongNode/StrongNode.component.ts","../../src/components/SubscriptNode/SubscriptNode.component.ts","../../src/components/SuperscriptNode/SuperscriptNode.component.ts","../../src/components/TableNode/TableNode.component.ts","../../src/components/ThematicBreakNode/ThematicBreakNode.component.ts","../../src/components/VmrContainerNode/VmrContainerNode.component.ts","../../src/components/NodeOutlet/NodeOutlet.component.ts","../../src/components/NestedRenderer/NestedRenderer.component.ts","../../src/components/AdmonitionNode/AdmonitionNode.component.ts","../../src/enhanceRenderedHtml.ts","../../src/services/smooth-markdown-stream.service.ts","../../src/components/shared/render-window.ts","../../src/components/shared/smooth-streaming-scope.ts","../../src/components/NodeRenderer/NodeRenderer.component.ts","../../src/workers/katexCdnWorker.ts","../../src/workers/mermaidCdnWorker.ts","../../src/markstream-angular.ts"],"sourcesContent":["import type { BaseNode } from 'stream-markdown-parser'\nimport { normalizeCustomHtmlTags, normalizeCustomHtmlTagName as normalizeTagName } from 'stream-markdown-parser'\n\ninterface CustomTagSegment {\n tag: string\n start: number\n end: number\n innerContent: string\n raw: string\n loading: boolean\n}\n\ninterface CustomTagOpen {\n tag: string\n start: number\n openEnd: number\n}\n\ntype HydratableNode = BaseNode & {\n tag?: string\n content?: string\n [key: string]: unknown\n}\n\nconst TAG_TOKEN_RE = /<\\/?([A-Z][\\w:-]*)(?:\\s[^<>]*)?>/gi\n\nexport function hydrateCustomTagContent<T extends BaseNode>(\n nodes: readonly T[] | null | undefined,\n source: string,\n customHtmlTags?: readonly string[],\n): T[] {\n const normalizedTags = normalizeCustomHtmlTags(customHtmlTags)\n const tagSet = new Set(normalizedTags)\n if (!source || tagSet.size === 0 || !Array.isArray(nodes) || nodes.length === 0)\n return Array.isArray(nodes) ? nodes.slice() : []\n\n const segments = collectCustomTagSegments(source, tagSet)\n if (segments.length === 0)\n return nodes.slice()\n\n let segmentIndex = 0\n const cloned = nodes.map(node => cloneNodeTree(node))\n\n const visitNode = (node: HydratableNode) => {\n if (!node || typeof node !== 'object')\n return\n\n const tag = resolveCustomTagName(node, tagSet)\n if (tag) {\n const segment = consumeNextSegment(segments, tag, () => segmentIndex, nextIndex => (segmentIndex = nextIndex))\n if (segment) {\n node.tag = tag\n node.type = tag\n node.content = segment.innerContent\n node.raw = segment.raw\n if (typeof node.loading !== 'boolean')\n node.loading = segment.loading\n }\n }\n\n for (const value of Object.values(node)) {\n if (!Array.isArray(value))\n continue\n for (const child of value) {\n if (child && typeof child === 'object')\n visitNode(child as HydratableNode)\n }\n }\n }\n\n for (const node of cloned)\n visitNode(node)\n\n return cloned\n}\n\nfunction collectCustomTagSegments(source: string, tagSet: Set<string>) {\n const stack: CustomTagOpen[] = []\n const segments: CustomTagSegment[] = []\n let match: RegExpExecArray | null\n\n TAG_TOKEN_RE.lastIndex = 0\n while ((match = TAG_TOKEN_RE.exec(source)) !== null) {\n const raw = match[0]\n const tag = normalizeTagName(match[1])\n if (!tag || !tagSet.has(tag))\n continue\n\n const isClosing = raw.startsWith('</')\n if (!isClosing) {\n stack.push({\n tag,\n start: match.index,\n openEnd: TAG_TOKEN_RE.lastIndex,\n })\n continue\n }\n\n const openIndex = findLastOpenIndex(stack, tag)\n if (openIndex < 0)\n continue\n\n const [open] = stack.splice(openIndex, 1)\n const closeStart = match.index\n const closeEnd = TAG_TOKEN_RE.lastIndex\n segments.push({\n tag,\n start: open.start,\n end: closeEnd,\n innerContent: source.slice(open.openEnd, closeStart),\n raw: source.slice(open.start, closeEnd),\n loading: false,\n })\n }\n\n for (const open of stack) {\n segments.push({\n tag: open.tag,\n start: open.start,\n end: source.length,\n innerContent: source.slice(open.openEnd),\n raw: source.slice(open.start),\n loading: true,\n })\n }\n\n return segments.sort((left, right) => {\n if (left.start !== right.start)\n return left.start - right.start\n return right.end - left.end\n })\n}\n\nfunction findLastOpenIndex(stack: CustomTagOpen[], tag: string) {\n for (let index = stack.length - 1; index >= 0; index -= 1) {\n if (stack[index]?.tag === tag)\n return index\n }\n return -1\n}\n\nfunction consumeNextSegment(\n segments: CustomTagSegment[],\n tag: string,\n getIndex: () => number,\n setIndex: (value: number) => void,\n) {\n let index = getIndex()\n while (index < segments.length) {\n const segment = segments[index]\n index += 1\n if (segment.tag !== tag)\n continue\n setIndex(index)\n return segment\n }\n setIndex(index)\n return null\n}\n\nfunction resolveCustomTagName(node: Record<string, unknown>, tagSet: Set<string>) {\n const byTag = normalizeTagName(node.tag)\n if (byTag && tagSet.has(byTag))\n return byTag\n\n const byType = normalizeTagName(node.type)\n return byType && tagSet.has(byType) ? byType : ''\n}\n\nfunction cloneNodeTree<T extends BaseNode>(node: T): T {\n if (!node || typeof node !== 'object')\n return node\n\n const cloned = Array.isArray(node)\n ? node.map(item => cloneNodeTree(item)) as unknown as T\n : { ...node }\n\n if (!Array.isArray(cloned)) {\n for (const [key, value] of Object.entries(cloned as Record<string, unknown>)) {\n if (Array.isArray(value)) {\n (cloned as Record<string, unknown>)[key] = value.map(item => cloneNodeTree(item as BaseNode))\n }\n }\n }\n\n return cloned\n}\n","import type { BaseNode, MarkdownIt, ParseOptions } from 'stream-markdown-parser'\nimport { getMarkdown, mergeCustomHtmlTags, parseMarkdownToStructure } from 'stream-markdown-parser'\nimport { hydrateCustomTagContent } from './hydrateCustomTagContent'\n\ntype NestedMarkdownSourceNode = BaseNode & {\n children?: BaseNode[]\n content?: string\n}\n\nexport interface NestedMarkdownNodesInput {\n node?: NestedMarkdownSourceNode | null\n nodes?: readonly BaseNode[] | null\n content?: string | null\n}\n\nexport interface NestedMarkdownNodesOptions {\n cacheKey?: string\n final?: boolean\n parseOptions?: ParseOptions\n customHtmlTags?: readonly string[]\n customMarkdownIt?: (markdown: MarkdownIt) => MarkdownIt\n}\n\nconst DEFAULT_CACHE_KEY = 'markstream-angular-nested-nodes'\nconst markdownCache = new Map<string, MarkdownIt>()\n\nexport function parseNestedMarkdownToNodes(\n input: NestedMarkdownNodesInput,\n options: NestedMarkdownNodesOptions = {},\n): BaseNode[] {\n if (Array.isArray(input.nodes))\n return input.nodes.slice()\n\n const nestedNode = input.node\n if (nestedNode) {\n const children = getNodeList(nestedNode.children)\n if (children.length > 0)\n return children.slice()\n }\n\n const content = resolveContent(input)\n if (!content)\n return []\n\n const parseOptions = resolveParseOptions(input, options)\n const markdown = resolveMarkdownInstance(options)\n return hydrateCustomTagContent(\n parseMarkdownToStructure(content, markdown, parseOptions),\n content,\n mergeCustomHtmlTags(options.customHtmlTags, parseOptions?.customHtmlTags),\n )\n}\n\nfunction resolveContent(input: NestedMarkdownNodesInput) {\n if (typeof input.content === 'string')\n return input.content\n if (typeof input.node?.content === 'string')\n return input.node.content\n return ''\n}\n\nfunction resolveParseOptions(\n input: NestedMarkdownNodesInput,\n options: NestedMarkdownNodesOptions,\n): ParseOptions | undefined {\n const base = options.parseOptions ?? {}\n const resolvedFinal = options.final ?? resolveFinalFromNode(input.node)\n const customHtmlTags = mergeCustomHtmlTags(options.customHtmlTags, base.customHtmlTags)\n\n if (resolvedFinal == null && customHtmlTags.length === 0)\n return base\n\n return {\n ...base,\n ...(resolvedFinal == null ? {} : { final: resolvedFinal }),\n ...(customHtmlTags.length === 0 ? {} : { customHtmlTags }),\n } as ParseOptions\n}\n\nfunction resolveFinalFromNode(node?: NestedMarkdownSourceNode | null) {\n if (!node || typeof node !== 'object')\n return undefined\n if (typeof node.loading === 'boolean')\n return !node.loading\n return undefined\n}\n\nfunction resolveMarkdownInstance(options: NestedMarkdownNodesOptions) {\n const normalizedTags = mergeCustomHtmlTags(options.customHtmlTags, options.parseOptions?.customHtmlTags)\n const cacheKey = `${options.cacheKey || DEFAULT_CACHE_KEY}::${normalizedTags.join(',')}`\n let markdown = markdownCache.get(cacheKey)\n\n if (!markdown) {\n markdown = getMarkdown(cacheKey, {\n customHtmlTags: normalizedTags,\n })\n markdownCache.set(cacheKey, markdown)\n }\n\n return options.customMarkdownIt\n ? options.customMarkdownIt(markdown)\n : markdown\n}\n\nfunction getNodeList(value: unknown) {\n return Array.isArray(value) ? value as BaseNode[] : []\n}\n","import type { Type } from '@angular/core'\n\nexport type CustomComponentMap = Record<string, Type<unknown>>\n\nconst GLOBAL_KEY = '__global__'\n\ninterface Store {\n scopedComponents: Record<string, CustomComponentMap>\n revision: number\n listeners: Set<() => void>\n}\n\nconst STORE_KEY = '__MARKSTREAM_ANGULAR_CUSTOM_COMPONENTS_STORE__'\nconst store: Store = (() => {\n const globalStore = globalThis as any\n if (globalStore[STORE_KEY])\n return globalStore[STORE_KEY] as Store\n\n const next: Store = {\n scopedComponents: {},\n revision: 0,\n listeners: new Set(),\n }\n globalStore[STORE_KEY] = next\n return next\n})()\n\nfunction bumpRevision() {\n store.revision += 1\n for (const listener of Array.from(store.listeners)) {\n try {\n listener()\n }\n catch {\n // Ignore subscriber failures so one bad consumer does not break the registry.\n }\n }\n}\n\nexport function subscribeCustomComponents(listener: () => void) {\n store.listeners.add(listener)\n return () => {\n store.listeners.delete(listener)\n }\n}\n\nexport function getCustomComponentsRevision() {\n return store.revision\n}\n\nexport function setCustomComponents(id: string, mapping: CustomComponentMap): void\nexport function setCustomComponents(mapping: CustomComponentMap): void\nexport function setCustomComponents(idOrMapping: string | CustomComponentMap, maybeMapping?: CustomComponentMap) {\n if (typeof idOrMapping === 'string')\n store.scopedComponents[idOrMapping] = { ...(maybeMapping || {}) }\n else\n store.scopedComponents[GLOBAL_KEY] = { ...idOrMapping }\n bumpRevision()\n}\n\nexport function getCustomNodeComponents(customId?: string): CustomComponentMap {\n const globalMapping = store.scopedComponents[GLOBAL_KEY] || {}\n if (!customId)\n return globalMapping\n\n const scopedMapping = store.scopedComponents[customId] || {}\n if (!globalMapping || Object.keys(globalMapping).length === 0)\n return scopedMapping\n if (!scopedMapping || Object.keys(scopedMapping).length === 0)\n return globalMapping\n\n return {\n ...globalMapping,\n ...scopedMapping,\n }\n}\n\nexport function removeCustomComponents(id: string) {\n if (id === GLOBAL_KEY) {\n throw new Error('removeCustomComponents: cannot delete global mapping; call clearGlobalCustomComponents instead.')\n }\n delete store.scopedComponents[id]\n bumpRevision()\n}\n\nexport function clearGlobalCustomComponents() {\n delete store.scopedComponents[GLOBAL_KEY]\n bumpRevision()\n}\n","import type { SmoothMarkdownStreamOptions } from 'markstream-core'\nimport type { BaseNode, HtmlPolicy, MarkdownIt, ParsedNode, ParseOptions } from 'stream-markdown-parser'\nimport type { CustomComponentMap } from '../../customComponents'\nimport type { CodeBlockMonacoOptions, CodeBlockMonacoTheme } from '../../types/monaco'\nimport {\n getHtmlTagFromContent,\n getMarkdown,\n hasCompleteHtmlTagContent,\n normalizeCustomHtmlTags,\n normalizeCustomHtmlTagName as normalizeTagName,\n parseMarkdownToStructure,\n stripCustomHtmlWrapper,\n} from 'stream-markdown-parser'\nimport { hydrateCustomTagContent } from '../../hydrateCustomTagContent'\n\nexport {\n getHtmlTagFromContent,\n hasCompleteHtmlTagContent,\n normalizeCustomHtmlTags,\n normalizeTagName,\n stripCustomHtmlWrapper,\n}\n\nexport type AngularRenderableNode = (ParsedNode | BaseNode) & Record<string, unknown>\n\nexport interface CodeBlockPreviewPayload {\n node: AngularRenderableNode\n artifactType: 'text/html' | 'image/svg+xml'\n artifactTitle: string\n id: string\n}\n\nexport type NodeRendererCodeBlockProps = Partial<{\n stream: boolean\n darkTheme: CodeBlockMonacoTheme\n lightTheme: CodeBlockMonacoTheme\n themes: CodeBlockMonacoTheme[]\n monacoOptions: CodeBlockMonacoOptions\n minWidth: string | number\n maxWidth: string | number\n isShowPreview: boolean\n enableFontSizeControl: boolean\n showHeader: boolean\n showCopyButton: boolean\n showExpandButton: boolean\n showPreviewButton: boolean\n showCollapseButton: boolean\n showFontSizeButtons: boolean\n htmlPreviewAllowScripts: boolean\n htmlPreviewSandbox: string\n}> & Record<string, unknown>\n\nexport type NodeRendererMermaidProps = Partial<{\n maxHeight: string | null\n estimatedPreviewHeightPx: number\n workerTimeoutMs: number\n parseTimeoutMs: number\n renderTimeoutMs: number\n fullRenderTimeoutMs: number\n renderDebounceMs: number\n showHeader: boolean\n showModeToggle: boolean\n showCopyButton: boolean\n showExportButton: boolean\n showFullscreenButton: boolean\n showCollapseButton: boolean\n showZoomControls: boolean\n isStrict: boolean\n enableMermaidInteractions: boolean\n}> & Record<string, unknown>\n\nexport type NodeRendererD2Props = Partial<{\n maxHeight: string | null\n themeId: number | null\n darkThemeId: number | null\n showHeader: boolean\n showModeToggle: boolean\n showCopyButton: boolean\n showExportButton: boolean\n showCollapseButton: boolean\n}> & Record<string, unknown>\n\nexport type NodeRendererInfographicProps = Partial<{\n maxHeight: string | null\n estimatedPreviewHeightPx: number\n showHeader: boolean\n showModeToggle: boolean\n showCopyButton: boolean\n showCollapseButton: boolean\n showExportButton: boolean\n showFullscreenButton: boolean\n showZoomControls: boolean\n}> & Record<string, unknown>\n\nexport interface NodeRendererEvents {\n onCopy?: (code: string) => void\n onHandleArtifactClick?: (payload: CodeBlockPreviewPayload) => void\n}\n\nexport interface NodeRendererProps {\n content?: string\n nodes?: readonly BaseNode[] | null\n final?: boolean\n parseOptions?: ParseOptions\n customMarkdownIt?: (md: MarkdownIt) => MarkdownIt\n debugPerformance?: boolean\n customHtmlTags?: readonly string[]\n htmlPolicy?: HtmlPolicy\n viewportPriority?: boolean\n codeBlockStream?: boolean\n codeBlockDarkTheme?: CodeBlockMonacoTheme\n codeBlockLightTheme?: CodeBlockMonacoTheme\n codeBlockMonacoOptions?: CodeBlockMonacoOptions\n renderCodeBlocksAsPre?: boolean\n codeBlockMinWidth?: string | number\n codeBlockMaxWidth?: string | number\n codeBlockProps?: NodeRendererCodeBlockProps\n mermaidProps?: NodeRendererMermaidProps\n d2Props?: NodeRendererD2Props\n infographicProps?: NodeRendererInfographicProps\n customComponents?: CustomComponentMap\n showTooltips?: boolean\n themes?: CodeBlockMonacoTheme[]\n isDark?: boolean\n customId?: string\n indexKey?: number | string\n typewriter?: boolean\n /** Enable/disable non-code-node enter and streamed-text fade animations. Default: true */\n fade?: boolean\n batchRendering?: boolean\n initialRenderBatchSize?: number\n renderBatchSize?: number\n renderBatchDelay?: number\n renderBatchBudgetMs?: number\n renderBatchIdleTimeoutMs?: number\n deferNodesUntilVisible?: boolean\n maxLiveNodes?: number\n liveNodeBuffer?: number\n allowHtml?: boolean\n smoothStreaming?: boolean | 'auto'\n smoothStreamingOptions?: SmoothMarkdownStreamOptions\n}\n\nexport interface AngularRenderContext {\n customId?: string\n isDark?: boolean\n indexKey?: string\n final?: boolean\n typewriter?: boolean\n fade?: boolean\n textStreamState?: Map<string, string>\n streamRenderVersion?: number\n showTooltips?: boolean\n codeBlockStream?: boolean\n renderCodeBlocksAsPre?: boolean\n allowHtml?: boolean\n htmlPolicy?: HtmlPolicy\n customHtmlTags?: readonly string[]\n parseOptions?: ParseOptions\n customMarkdownIt?: (md: MarkdownIt) => MarkdownIt\n codeBlockProps?: NodeRendererCodeBlockProps\n mermaidProps?: NodeRendererMermaidProps\n d2Props?: NodeRendererD2Props\n infographicProps?: NodeRendererInfographicProps\n customComponents?: CustomComponentMap\n codeBlockThemes?: {\n themes?: CodeBlockMonacoTheme[]\n darkTheme?: CodeBlockMonacoTheme\n lightTheme?: CodeBlockMonacoTheme\n monacoOptions?: CodeBlockMonacoOptions\n minWidth?: string | number\n maxWidth?: string | number\n }\n events: NodeRendererEvents\n}\n\nconst markdownCache = new Map<string, MarkdownIt>()\n\nexport const BLOCK_LEVEL_TYPES = new Set([\n 'table',\n 'code_block',\n 'html_block',\n 'blockquote',\n 'list',\n 'list_item',\n 'definition_list',\n 'footnote',\n 'footnote_reference',\n 'footnote_anchor',\n 'admonition',\n 'thematic_break',\n 'math_block',\n 'thinking',\n 'vmr_container',\n])\n\nexport function buildRenderContext(\n props: NodeRendererProps,\n events: NodeRendererEvents = {},\n textStreamState?: Map<string, string>,\n streamRenderVersion?: number,\n): AngularRenderContext {\n const customHtmlTags = normalizeCustomHtmlTags([\n ...(props.customHtmlTags || []),\n ...(props.parseOptions?.customHtmlTags || []),\n ])\n\n return {\n customId: props.customId,\n isDark: props.isDark,\n indexKey: props.indexKey != null ? String(props.indexKey) : undefined,\n final: props.final,\n typewriter: props.typewriter,\n fade: props.fade,\n textStreamState,\n streamRenderVersion,\n showTooltips: props.showTooltips,\n codeBlockStream: props.codeBlockStream,\n renderCodeBlocksAsPre: props.renderCodeBlocksAsPre,\n allowHtml: props.allowHtml !== false,\n htmlPolicy: props.htmlPolicy ?? 'safe',\n customHtmlTags,\n parseOptions: props.parseOptions,\n customMarkdownIt: props.customMarkdownIt,\n codeBlockProps: props.codeBlockProps,\n mermaidProps: props.mermaidProps,\n d2Props: props.d2Props,\n infographicProps: props.infographicProps,\n customComponents: props.customComponents,\n codeBlockThemes: {\n themes: props.themes,\n darkTheme: props.codeBlockDarkTheme,\n lightTheme: props.codeBlockLightTheme,\n monacoOptions: props.codeBlockMonacoOptions,\n minWidth: props.codeBlockMinWidth,\n maxWidth: props.codeBlockMaxWidth,\n },\n events,\n }\n}\n\nexport function resolveParsedNodes(props: NodeRendererProps): AngularRenderableNode[] {\n if (Array.isArray(props.nodes))\n return props.nodes as AngularRenderableNode[]\n\n const content = getString(props.content)\n if (!content)\n return []\n\n const normalizedTags = normalizeCustomHtmlTags([\n ...(props.customHtmlTags || []),\n ...(props.parseOptions?.customHtmlTags || []),\n ])\n const cacheKey = `${props.customId || 'markstream-angular'}::${normalizedTags.join(',')}`\n let markdown = markdownCache.get(cacheKey)\n if (!markdown) {\n markdown = getMarkdown(cacheKey, { customHtmlTags: normalizedTags })\n markdownCache.set(cacheKey, markdown)\n }\n\n const parser = props.customMarkdownIt\n ? props.customMarkdownIt(markdown)\n : markdown\n\n const options: ParseOptions = {\n ...(props.parseOptions ?? {}),\n }\n if (typeof props.final === 'boolean')\n options.final = props.final\n if (normalizedTags.length > 0)\n options.customHtmlTags = normalizedTags\n\n return hydrateCustomTagContent(\n parseMarkdownToStructure(content, parser, options) as AngularRenderableNode[],\n content,\n normalizedTags,\n ) as AngularRenderableNode[]\n}\n\nexport function getNodeList(value: unknown): AngularRenderableNode[] {\n return Array.isArray(value)\n ? value.filter((item): item is AngularRenderableNode => !!item && typeof item === 'object')\n : []\n}\n\nexport function isWhitespaceTextNode(node: AngularRenderableNode | null | undefined) {\n return getString((node as any)?.type) === 'text' && getString((node as any)?.content).trim() === ''\n}\n\nexport function getMeaningfulLinkChildren(node: AngularRenderableNode | null | undefined) {\n if (getString((node as any)?.type) !== 'link')\n return []\n\n return getNodeList((node as any)?.children).filter(child => !isWhitespaceTextNode(child))\n}\n\nexport function isImageOnlyLinkNode(node: AngularRenderableNode | null | undefined) {\n const linkChildren = getMeaningfulLinkChildren(node)\n return linkChildren.length === 1 && getString((linkChildren[0] as any)?.type) === 'image'\n}\n\nexport function isMediaOnlyParagraphNodes(children: readonly AngularRenderableNode[]) {\n const meaningfulChildren = getNodeList(children).filter(child => !isWhitespaceTextNode(child))\n return meaningfulChildren.length > 0\n && meaningfulChildren.every(child => getString((child as any)?.type) === 'image' || isImageOnlyLinkNode(child))\n}\n\nexport function normalizeMediaOnlyParagraphNodes(children: readonly AngularRenderableNode[]) {\n const source = getNodeList(children)\n const meaningfulChildren = source.filter(child => !isWhitespaceTextNode(child))\n\n if (!isMediaOnlyParagraphNodes(source) || meaningfulChildren.length <= 1)\n return source\n\n const normalized: AngularRenderableNode[] = []\n for (let index = 0; index < source.length; index += 1) {\n const child = source[index]\n if (!isWhitespaceTextNode(child)) {\n normalized.push(child)\n continue\n }\n\n const hasPrevious = normalized.length > 0\n const hasNext = source.slice(index + 1).some(nextChild => !isWhitespaceTextNode(nextChild))\n if (!hasPrevious || !hasNext)\n continue\n\n normalized.push({\n ...(child as Record<string, unknown>),\n content: ' ',\n raw: ' ',\n } as AngularRenderableNode)\n }\n\n return normalized\n}\n\nexport function getString(value: unknown): string {\n return typeof value === 'string'\n ? value\n : value == null\n ? ''\n : String(value)\n}\n\nexport function isSafeAttrName(value: string): boolean {\n return /^[^\\s\"'<>`=]+$/.test(value) && !/^on/i.test(value)\n}\n\nexport function escapeHtml(value: unknown): string {\n return getString(value)\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;')\n}\n\nexport function escapeAttr(value: unknown): string {\n return escapeHtml(value).replace(/`/g, '&#96;')\n}\n\nexport function sanitizeClassToken(value: string): string {\n return value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '')\n}\n\nexport function clampHeadingLevel(value: unknown): number {\n const level = Math.trunc(Number(value) || 1)\n return Math.min(6, Math.max(1, level))\n}\n\nexport function capitalize(value: string): string {\n return value ? `${value[0].toUpperCase()}${value.slice(1)}` : ''\n}\n\nexport function normalizeCodeLanguage(raw: unknown) {\n const head = String(String(raw ?? '').split(/\\s+/g)[0] ?? '').toLowerCase()\n const safe = head.replace(/[^\\w-]/g, '')\n return safe || 'plaintext'\n}\n\nexport function resolveCodeBlockLanguage(node: AngularRenderableNode) {\n return normalizeCodeLanguage((node as any)?.language)\n}\n\nexport function encodeDataPayload(value: string) {\n if (!value)\n return ''\n\n const globalBuffer = (globalThis as any)?.require?.('buffer')?.Buffer\n if (globalBuffer?.from)\n return globalBuffer.from(value, 'utf8').toString('base64')\n\n if (typeof TextEncoder !== 'undefined' && typeof globalThis.btoa === 'function') {\n const bytes = new TextEncoder().encode(value)\n let binary = ''\n for (const byte of bytes)\n binary += String.fromCharCode(byte)\n return globalThis.btoa(binary)\n }\n\n return ''\n}\n\nexport function normalizeTokenAttrs(attrs?: Array<[string, string | null]> | null) {\n if (!Array.isArray(attrs) || attrs.length === 0)\n return null\n return attrs.reduce<Record<string, string | true>>((acc, [name, value]) => {\n if (!name || !isSafeAttrName(name))\n return acc\n acc[name] = value ?? true\n return acc\n }, {})\n}\n\nexport function splitParagraphChildren(children: readonly AngularRenderableNode[]) {\n const parts: Array<\n | { kind: 'inline', nodes: AngularRenderableNode[] }\n | { kind: 'block', node: AngularRenderableNode }\n > = []\n\n const inlineBuffer: AngularRenderableNode[] = []\n const flushInline = () => {\n if (!inlineBuffer.length)\n return\n parts.push({ kind: 'inline', nodes: inlineBuffer.slice() })\n inlineBuffer.length = 0\n }\n\n for (const child of children) {\n if (BLOCK_LEVEL_TYPES.has(String(child?.type || ''))) {\n flushInline()\n parts.push({ kind: 'block', node: child })\n }\n else {\n inlineBuffer.push(child)\n }\n }\n flushInline()\n\n return parts\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-blockquote-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <blockquote class=\"blockquote-node\" dir=\"auto\" [attr.cite]=\"cite\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </blockquote>\n `,\n styles: [`\n .blockquote-node :where(.markstream-angular) {\n content-visibility: visible;\n contain: content;\n contain-intrinsic-size: 0 0;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BlockquoteNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get cite() {\n const value = (this.node as any)?.cite\n return typeof value === 'string' && value.trim() ? value : null\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'blockquote'}-quote`\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\n\n@Component({\n selector: 'markstream-angular-checkbox-node',\n standalone: true,\n template: '<input type=\"checkbox\" disabled [checked]=\"checked\">',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get checked() {\n return !!(this.node as any)?.checked\n }\n}\n","function humanizeKey(key: string) {\n const suffix = key.split('.').pop() || key\n return suffix\n .replace(/[_-]/g, ' ')\n .replace(/([A-Z])/g, ' $1')\n .replace(/\\s+/g, ' ')\n .replace(/\\b\\w/g, char => char.toUpperCase())\n .trim()\n}\n\nconst defaultMap: Record<string, string> = {\n 'common.copy': 'Copy',\n 'common.copied': 'Copied',\n 'common.decrease': 'Decrease',\n 'common.reset': 'Reset',\n 'common.increase': 'Increase',\n 'common.expand': 'Expand',\n 'common.collapse': 'Collapse',\n 'common.preview': 'Preview',\n 'common.source': 'Source',\n 'common.export': 'Export',\n 'common.open': 'Open',\n 'common.close': 'Close',\n 'common.zoomIn': 'Zoom in',\n 'common.zoomOut': 'Zoom out',\n 'common.resetZoom': 'Reset zoom',\n 'artifacts.htmlPreviewTitle': 'HTML Preview',\n 'artifacts.svgPreviewTitle': 'SVG Preview',\n}\n\nexport function setDefaultI18nMap(map: Record<string, string>) {\n Object.assign(defaultMap, map)\n}\n\nexport function useSafeI18n() {\n return {\n t(key: string) {\n return defaultMap[key] ?? humanizeKey(key)\n },\n }\n}\n","let monacoModule: any = null\nlet importAttempted = false\nlet pendingImport: Promise<MonacoRuntimeModule | null> | null = null\nlet workersPreloaded = false\n\nexport interface MonacoRuntimeHelpers {\n createEditor?: (container: HTMLElement, code: string, language: string) => Promise<unknown> | unknown\n createDiffEditor?: (container: HTMLElement, original: string, modified: string, language: string) => Promise<unknown> | unknown\n updateCode?: (code: string, language?: string) => Promise<unknown> | unknown\n updateDiff?: (original: string, modified: string, language?: string) => Promise<unknown> | unknown\n cleanupEditor?: () => unknown\n safeClean?: () => unknown\n setTheme?: (theme?: string | Record<string, unknown>) => Promise<unknown> | unknown\n getEditorView?: () => unknown\n getDiffEditorView?: () => unknown\n refreshDiffPresentation?: () => unknown\n}\n\nexport interface MonacoRuntimeModule {\n useMonaco: (options?: Record<string, unknown>) => MonacoRuntimeHelpers\n preloadMonacoWorkers?: () => Promise<unknown> | unknown\n getOrCreateHighlighter?: (...args: unknown[]) => Promise<unknown> | unknown\n}\n\nasync function preloadWorkers(mod: any) {\n if (workersPreloaded)\n return\n workersPreloaded = true\n const existingEnv = (globalThis as any)?.MonacoEnvironment\n if (existingEnv && (typeof existingEnv.getWorker === 'function' || typeof existingEnv.getWorkerUrl === 'function'))\n return\n if (typeof mod?.preloadMonacoWorkers === 'function')\n await mod.preloadMonacoWorkers()\n}\n\nasync function warmupShikiTokenizer(mod: any) {\n const getOrCreateHighlighter = mod?.getOrCreateHighlighter\n if (typeof getOrCreateHighlighter !== 'function')\n return true\n\n try {\n const highlighter = await getOrCreateHighlighter(\n ['vitesse-dark', 'vitesse-light'],\n ['plaintext', 'text', 'javascript'],\n )\n\n if (highlighter && typeof highlighter.codeToTokens === 'function') {\n highlighter.codeToTokens('const a = 1', { lang: 'javascript', theme: 'vitesse-dark' })\n }\n\n return true\n }\n catch (error) {\n console.warn('[markstream-angular] Failed to warm up stream-monaco tokenizer; falling back to plain code rendering.', error)\n return false\n }\n}\n\nexport async function getUseMonaco(): Promise<MonacoRuntimeModule | null> {\n if (monacoModule)\n return monacoModule\n if (pendingImport)\n return await pendingImport\n if (importAttempted)\n return null\n\n pendingImport = (async () => {\n // Prefer `stream-diffs`: smaller runtime without the heavy\n // `monaco-editor` dependency. `stream-monaco` remains supported as a\n // fallback for consumers who install it.\n const candidates = [\n async () => (await import('stream-diffs')) as any,\n async () => (await import('stream-monaco')) as any,\n ]\n\n for (const load of candidates) {\n try {\n const candidate = await load()\n const resolved = candidate?.default ?? candidate\n if (typeof resolved?.useMonaco !== 'function')\n continue\n monacoModule = resolved\n await preloadWorkers(monacoModule)\n\n const ready = await warmupShikiTokenizer(monacoModule)\n if (!ready) {\n monacoModule = null\n importAttempted = true\n return null\n }\n\n return monacoModule\n }\n catch {\n // Try the next candidate runtime.\n }\n }\n\n importAttempted = true\n return null\n })()\n\n try {\n return await pendingImport\n }\n finally {\n pendingImport = null\n }\n}\n","export type LanguageIconResolver = (lang: string) => string | undefined | null\n\n// Keep Angular's default language icons visually identical to the Vue 3 Material theme.\nconst MATERIAL_FALLBACK_ICON = '<svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path fill=\"#ff7043\" d=\"M2 2a1 1 0 0 0-1 1v10c0 .554.446 1 1 1h12c.554 0 1-.446 1-1V3a1 1 0 0 0-1-1zm0 3h12v8H2zm1 2 2 2-2 2 1 1 3-3-3-3zm5 3.5V12h5v-1.5z\"/></svg>'\nconst MATERIAL_TEXT_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\"/><path fill=\"#42a5f5\" d=\"M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5z\"/></svg>'\nconst MATERIAL_PLAIN_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\"/><path fill=\"#42a5f5\" d=\"M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5z\"/></svg>'\nconst MATERIAL_HTML_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#e65100\" d=\"m4 4 2 22 10 2 10-2 2-22Zm19.72 7H11.28l.29 3h11.86l-.802 9.335L15.99 25l-6.635-1.646L8.93 19h3.02l.19 2 3.86.77 3.84-.77.29-4H8.84L8 8h16Z\"/></svg>'\nconst MATERIAL_CSS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#7e57c2\" d=\"M20 18h-2v-2h-2v2c0 .193 0 .703 1.254 1.033A3.345 3.345 0 0 1 20 22h2v2h2v-2c0-.388-.562-.851-1.254-1.034C20.356 20.34 20 18.84 20 18m-3.254 2.966C14.356 20.34 14 18.84 14 18h-2v-2h-2v8h2v-2h4v2h2v-2c0-.388-.562-.851-1.254-1.034\"/><path fill=\"#7e57c2\" d=\"M24 4H4v20a4 4 0 0 0 4 4h16.16A3.84 3.84 0 0 0 28 24.16V8a4 4 0 0 0-4-4m2 14h-2v-2h-2v2c0 .193 0 .703 1.254 1.033A3.345 3.345 0 0 1 26 22v2a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2 2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2 2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2 2 2 0 0 1 2-2h2a2 2 0 0 1 2 2 2 2 0 0 1 2-2h2a2 2 0 0 1 2 2Z\"/></svg>'\nconst MATERIAL_JAVASCRIPT_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path fill=\"#ffca28\" d=\"M2 2v12h12V2zm6 6h1v4a1.003 1.003 0 0 1-1 1H7a1.003 1.003 0 0 1-1-1v-1h1v1h1zm3 0h2v1h-2v1h1a1.003 1.003 0 0 1 1 1v1a1.003 1.003 0 0 1-1 1h-2v-1h2v-1h-1a1.003 1.003 0 0 1-1-1V9a1.003 1.003 0 0 1 1-1\"/></svg>'\nconst MATERIAL_TYPESCRIPT_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" viewBox=\"0 0 16 16\"><path fill=\"#0288d1\" d=\"M2 2v12h12V2zm4 6h3v1H8v4H7V9H6zm5 0h2v1h-2v1h1a1.003 1.003 0 0 1 1 1v1a1.003 1.003 0 0 1-1 1h-2v-1h2v-1h-1a1.003 1.003 0 0 1-1-1V9a1.003 1.003 0 0 1 1-1\"/></svg>'\nconst MATERIAL_JSX_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#00bcd4\" d=\"M16 12c7.444 0 12 2.59 12 4s-4.556 4-12 4-12-2.59-12-4 4.556-4 12-4m0-2c-7.732 0-14 2.686-14 6s6.268 6 14 6 14-2.686 14-6-6.268-6-14-6\"/><path fill=\"#00bcd4\" d=\"M16 14a2 2 0 1 0 2 2 2 2 0 0 0-2-2\"/><path fill=\"#00bcd4\" d=\"M10.458 5.507c2.017 0 5.937 3.177 9.006 8.493 3.722 6.447 3.757 11.687 2.536 12.392a.9.9 0 0 1-.457.1c-2.017 0-5.938-3.176-9.007-8.492C8.814 11.553 8.779 6.313 10 5.608a.9.9 0 0 1 .458-.1m-.001-2A2.87 2.87 0 0 0 9 3.875C6.13 5.532 6.938 12.304 10.804 19c3.284 5.69 7.72 9.493 10.74 9.493A2.87 2.87 0 0 0 23 28.124c2.87-1.656 2.062-8.428-1.804-15.124-3.284-5.69-7.72-9.493-10.74-9.493Z\"/><path fill=\"#00bcd4\" d=\"M21.543 5.507a.9.9 0 0 1 .457.1c1.221.706 1.186 5.946-2.536 12.393-3.07 5.316-6.99 8.493-9.007 8.493a.9.9 0 0 1-.457-.1C8.779 25.686 8.814 20.446 12.536 14c3.07-5.316 6.99-8.493 9.007-8.493m0-2c-3.02 0-7.455 3.804-10.74 9.493C6.939 19.696 6.13 26.468 9 28.124a2.87 2.87 0 0 0 1.457.369c3.02 0 7.455-3.804 10.74-9.493C25.061 12.304 25.87 5.532 23 3.876a2.87 2.87 0 0 0-1.457-.369\"/></svg>'\nconst MATERIAL_TSX_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#0288d1\" d=\"M16 12c7.444 0 12 2.59 12 4s-4.556 4-12 4-12-2.59-12-4 4.556-4 12-4m0-2c-7.732 0-14 2.686-14 6s6.268 6 14 6 14-2.686 14-6-6.268-6-14-6\"/><path fill=\"#0288d1\" d=\"M16 14a2 2 0 1 0 2 2 2 2 0 0 0-2-2\"/><path fill=\"#0288d1\" d=\"M10.458 5.507c2.017 0 5.937 3.177 9.006 8.493 3.722 6.447 3.757 11.687 2.536 12.392a.9.9 0 0 1-.457.1c-2.017 0-5.938-3.176-9.007-8.492C8.814 11.553 8.779 6.313 10 5.608a.9.9 0 0 1 .458-.1m-.001-2A2.87 2.87 0 0 0 9 3.875C6.13 5.532 6.938 12.304 10.804 19c3.284 5.69 7.72 9.493 10.74 9.493A2.87 2.87 0 0 0 23 28.124c2.87-1.656 2.062-8.428-1.804-15.124-3.284-5.69-7.72-9.493-10.74-9.493Z\"/><path fill=\"#0288d1\" d=\"M21.543 5.507a.9.9 0 0 1 .457.1c1.221.706 1.186 5.946-2.536 12.393-3.07 5.316-6.99 8.493-9.007 8.493a.9.9 0 0 1-.457-.1C8.779 25.686 8.814 20.446 12.536 14c3.07-5.316 6.99-8.493 9.007-8.493m0-2c-3.02 0-7.455 3.804-10.74 9.493C6.939 19.696 6.13 26.468 9 28.124a2.87 2.87 0 0 0 1.457.369c3.02 0 7.455-3.804 10.74-9.493C25.061 12.304 25.87 5.532 23 3.876a2.87 2.87 0 0 0-1.457-.369\"/></svg>'\nconst MATERIAL_JSON_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 -960 960 960\"><path fill=\"#f9a825\" d=\"M560-160v-80h120q17 0 28.5-11.5T720-280v-80q0-38 22-69t58-44v-14q-36-13-58-44t-22-69v-80q0-17-11.5-28.5T680-720H560v-80h120q50 0 85 35t35 85v80q0 17 11.5 28.5T840-560h40v160h-40q-17 0-28.5 11.5T800-360v80q0 50-35 85t-85 35zm-280 0q-50 0-85-35t-35-85v-80q0-17-11.5-28.5T120-400H80v-160h40q17 0 28.5-11.5T160-600v-80q0-50 35-85t85-35h120v80H280q-17 0-28.5 11.5T240-680v80q0 38-22 69t-58 44v14q36 13 58 44t22 69v80q0 17 11.5 28.5T280-240h120v80z\"/></svg>'\nconst MATERIAL_MARKDOWN_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#42a5f5\" d=\"m14 10-4 3.5L6 10H4v12h4v-6l2 2 2-2v6h4V10zm12 6v-6h-4v6h-4l6 8 6-8z\"/></svg>'\nconst MATERIAL_MERMAID_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"none\" stroke=\"#26c6da\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 5c0 12 4.5 11.5 8 14 1.66 1.33 2.34 4 2 8h6c-.34-4 .34-6.67 2-8 3.5-2.5 8-2 8-14-4 0-8 1-12 9-4-8-8-9-12-9z\"/></svg>'\nconst MATERIAL_PYTHON_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"#0288d1\" d=\"M9.86 2A2.86 2.86 0 0 0 7 4.86v1.68h4.29c.39 0 .71.57.71.96H4.86A2.86 2.86 0 0 0 2 10.36v3.781a2.86 2.86 0 0 0 2.86 2.86h1.18v-2.68a2.85 2.85 0 0 1 2.85-2.86h5.25c1.58 0 2.86-1.271 2.86-2.851V4.86A2.86 2.86 0 0 0 14.14 2zm-.72 1.61c.4 0 .72.12.72.71s-.32.891-.72.891c-.39 0-.71-.3-.71-.89s.32-.711.71-.711\"/><path fill=\"#fdd835\" d=\"M17.959 7v2.68a2.85 2.85 0 0 1-2.85 2.859H9.86A2.85 2.85 0 0 0 7 15.389v3.75a2.86 2.86 0 0 0 2.86 2.86h4.28A2.86 2.86 0 0 0 17 19.14v-1.68h-4.291c-.39 0-.709-.57-.709-.96h7.14A2.86 2.86 0 0 0 22 13.64V9.86A2.86 2.86 0 0 0 19.14 7zM8.32 11.513l-.004.004.038-.004zm6.54 7.276c.39 0 .71.3.71.89a.71.71 0 0 1-.71.71c-.4 0-.72-.12-.72-.71s.32-.89.72-.89\"/></svg>'\nconst MATERIAL_SHELL_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path fill=\"#ff7043\" d=\"M2 2a1 1 0 0 0-1 1v10c0 .554.446 1 1 1h12c.554 0 1-.446 1-1V3a1 1 0 0 0-1-1zm0 3h12v8H2zm1 2 2 2-2 2 1 1 3-3-3-3zm5 3.5V12h5v-1.5z\"/></svg>'\nconst MATERIAL_SVG_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"#8bc34a\" d=\"M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m.12 13.5 3.74 3.74 1.42-1.41-2.33-2.33 2.33-2.33-1.42-1.41zm11.16 0-3.74-3.74-1.42 1.41 2.33 2.33-2.33 2.33 1.42 1.41z\"/></svg>'\nconst MATERIAL_VUE_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"#41b883\" d=\"M1.791 3.851 12 21.471 22.209 3.936V3.85H18.24l-6.18 10.616L5.906 3.851z\"/><path fill=\"#35495e\" d=\"m5.907 3.851 6.152 10.617L18.24 3.851h-3.723L12.084 8.03 9.66 3.85z\"/></svg>'\nconst LANGUAGE_ALIAS_MAP: Record<string, string> = {\n '': '',\n 'cjs': 'javascript',\n 'd2lang': 'd2',\n 'js': 'javascript',\n 'jsx': 'jsx',\n 'md': 'markdown',\n 'mjs': 'javascript',\n 'plaintext': 'plain',\n 'py': 'python',\n 'sh': 'shell',\n 'shellscript': 'shell',\n 'text': 'plain',\n 'ts': 'typescript',\n 'tsx': 'tsx',\n}\n\nconst LANGUAGE_LABEL_MAP: Record<string, string> = {\n '': 'Text',\n 'css': 'CSS',\n 'd2': 'D2',\n 'html': 'HTML',\n 'javascript': 'JavaScript',\n 'json': 'JSON',\n 'jsx': 'JSX',\n 'markdown': 'Markdown',\n 'mermaid': 'Mermaid',\n 'plain': 'Text',\n 'plaintext': 'Text',\n 'python': 'Python',\n 'shell': 'Shell',\n 'svg': 'SVG',\n 'tsx': 'TSX',\n 'typescript': 'TypeScript',\n 'vue': 'Vue',\n}\n\nconst LANGUAGE_ICON_MAP: Record<string, string> = {\n '': MATERIAL_TEXT_ICON,\n 'css': MATERIAL_CSS_ICON,\n 'html': MATERIAL_HTML_ICON,\n 'javascript': MATERIAL_JAVASCRIPT_ICON,\n 'json': MATERIAL_JSON_ICON,\n 'jsx': MATERIAL_JSX_ICON,\n 'markdown': MATERIAL_MARKDOWN_ICON,\n 'mermaid': MATERIAL_MERMAID_ICON,\n 'plain': MATERIAL_PLAIN_ICON,\n 'python': MATERIAL_PYTHON_ICON,\n 'shell': MATERIAL_SHELL_ICON,\n 'svg': MATERIAL_SVG_ICON,\n 'tsx': MATERIAL_TSX_ICON,\n 'typescript': MATERIAL_TYPESCRIPT_ICON,\n 'vue': MATERIAL_VUE_ICON,\n}\n\nlet userLanguageIconResolver: LanguageIconResolver | null = null\n\nfunction extractLanguageToken(lang?: string | null) {\n if (!lang)\n return ''\n const trimmed = lang.trim()\n if (!trimmed)\n return ''\n const [firstToken] = trimmed.split(/\\s+/)\n const [base] = firstToken.split(':')\n return base.toLowerCase()\n}\n\nexport function normalizeLanguageIdentifier(lang?: string | null): string {\n const token = extractLanguageToken(lang)\n return LANGUAGE_ALIAS_MAP[token] ?? token\n}\n\nexport function resolveMonacoLanguageId(lang?: string | null): string {\n const canonical = normalizeLanguageIdentifier(lang)\n if (!canonical)\n return 'plaintext'\n if (canonical === 'plain')\n return 'plaintext'\n if (canonical === 'jsx')\n return 'javascript'\n if (canonical === 'tsx')\n return 'typescript'\n return canonical\n}\n\nexport function setLanguageIconResolver(resolver?: LanguageIconResolver | null) {\n userLanguageIconResolver = resolver ?? null\n}\n\nexport function getLanguageIcon(lang: string): string {\n if (userLanguageIconResolver) {\n const hit = userLanguageIconResolver(lang)\n if (hit != null && hit !== '')\n return hit\n }\n const normalized = normalizeLanguageIdentifier(lang)\n return LANGUAGE_ICON_MAP[normalized] || MATERIAL_FALLBACK_ICON\n}\n\nexport const languageMap = LANGUAGE_LABEL_MAP\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString, normalizeCodeLanguage } from '../shared/node-helpers'\n\nfunction countCodeLines(code: string) {\n let count = 1\n for (let index = 0; index < code.length; index++) {\n if (code[index] === '\\n') {\n count++\n }\n else if (code[index] === '\\r') {\n count++\n if (code[index + 1] === '\\n')\n index++\n }\n }\n return count\n}\n\nfunction getDisplayCode(code: unknown, loading?: boolean) {\n const value = getString(code)\n return loading ? value : value.replace(/\\r\\n$|\\n$|\\r$/, '')\n}\n\n@Component({\n selector: 'markstream-angular-pre-code-node',\n standalone: true,\n imports: [CommonModule],\n template: `<pre\n [ngClass]=\"preClasses\"\n [ngStyle]=\"lineNumberLayoutStyle\"\n [attr.aria-busy]=\"loading\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.data-language]=\"language\"\n [attr.data-markstream-line-numbers]=\"showLineNumbers ? '1' : null\"\n data-markstream-pre=\"1\"\n tabindex=\"0\"\n ><ng-container *ngIf=\"showLineNumbers\"><span class=\"markstream-pre__line-numbers\" aria-hidden=\"true\"><span class=\"markstream-pre__line-numbers-text\">{{ lineNumbersText }}</span></span></ng-container><code translate=\"no\" class=\"markstream-pre__code\" [textContent]=\"displayCode\"></code></pre>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PreCodeNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() showLineNumbers = false\n\n // ─── Line-count caching (mirrors the vue3 PreCodeNode) ─────────────────────\n private cachedCode = ''\n private cachedCount = 1\n private textCount = 0\n private textCache = ''\n\n get language() {\n return normalizeCodeLanguage((this.node as any)?.language)\n }\n\n get languageClass() {\n return `language-${this.language}`\n }\n\n get preClasses() {\n return {\n [this.languageClass]: true,\n 'markstream-pre--line-numbers': this.showLineNumbers === true,\n }\n }\n\n get ariaLabel() {\n return this.language ? `Code block: ${this.language}` : 'Code block'\n }\n\n get code() {\n return getString((this.node as any)?.code)\n }\n\n get loading() {\n return (this.node as any)?.loading === true\n }\n\n get displayCode() {\n return getDisplayCode((this.node as any)?.code, this.loading)\n }\n\n get codeLineCount() {\n const code = this.displayCode\n if (code === this.cachedCode)\n return this.cachedCount\n this.cachedCount = countCodeLines(code)\n this.cachedCode = code\n return this.cachedCount\n }\n\n get lineNumbersText() {\n const count = this.codeLineCount\n if (count < this.textCount) {\n this.textCount = 0\n this.textCache = ''\n }\n for (let line = this.textCount + 1; line <= count; line++)\n this.textCache += `${this.textCache ? '\\n' : ''}${line}`\n this.textCount = count\n return this.textCache\n }\n\n get lineNumberLayoutStyle(): Record<string, string> | null {\n if (this.showLineNumbers !== true)\n return null\n\n const maximumLineNumber = this.codeLineCount\n const width = `${Math.max(4, String(maximumLineNumber).length)}ch`\n return {\n '--markstream-pre-line-number-width': width,\n '--markstream-pre-diff-line-number-width': width,\n '--markstream-code-padding-left': 'calc(var(--markstream-pre-line-number-padding-left, 2ch) + var(--markstream-pre-line-number-width, 2ch) + var(--markstream-pre-line-number-padding-right, 1ch) + var(--markstream-pre-line-number-separator-width, 2px) + var(--markstream-pre-line-number-gap-to-code, 1ch))',\n }\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { useSafeI18n } from '../../i18n/useSafeI18n'\n\nconst isDevEnv = typeof globalThis !== 'undefined' && (globalThis as Record<string, unknown>).ngDevMode !== false\nlet lastWarnedDangerousSandbox: string | null = null\n\nfunction normalizeSandboxTokens(value: string) {\n return new Set(\n value\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter(Boolean),\n )\n}\n\nfunction warnDangerousHtmlPreviewSandbox(value: string) {\n if (!isDevEnv || typeof console === 'undefined' || lastWarnedDangerousSandbox === value)\n return\n const tokens = normalizeSandboxTokens(value)\n if (tokens.has('allow-scripts') && tokens.has('allow-same-origin')) {\n lastWarnedDangerousSandbox = value\n console.warn('[markstream-angular] htmlPreviewSandbox contains both allow-scripts and allow-same-origin. Use this only for fully trusted content served from an isolated origin.')\n }\n}\n\nfunction resolveHtmlPreviewSandboxValue(htmlPreviewSandbox: unknown, htmlPreviewAllowScripts?: boolean) {\n if (typeof htmlPreviewSandbox === 'string') {\n warnDangerousHtmlPreviewSandbox(htmlPreviewSandbox)\n return htmlPreviewSandbox\n }\n if (htmlPreviewSandbox !== undefined)\n return ''\n return htmlPreviewAllowScripts === true ? 'allow-scripts' : ''\n}\n\n@Component({\n selector: 'markstream-angular-html-preview-frame',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n class=\"html-preview-frame__backdrop\"\n [class.html-preview-frame__backdrop--dark]=\"isDark\"\n (click)=\"onClose?.()\"\n >\n <div\n class=\"html-preview-frame\"\n [class.html-preview-frame--dark]=\"isDark\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"html-preview-frame__header\">\n <div class=\"html-preview-frame__title\">\n <span class=\"html-preview-frame__dot\"></span>\n <span class=\"html-preview-frame__label\">{{ resolvedTitle }}</span>\n </div>\n <button\n type=\"button\"\n class=\"html-preview-frame__close\"\n [class.html-preview-frame__close--dark]=\"isDark\"\n (click)=\"onClose?.()\"\n >\n ×\n </button>\n </div>\n <iframe\n class=\"html-preview-frame__iframe\"\n [attr.sandbox]=\"sandboxValue\"\n referrerpolicy=\"no-referrer\"\n [srcdoc]=\"srcdoc\"\n [title]=\"resolvedTitle\"\n ></iframe>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HtmlPreviewFrameComponent {\n @Input() code = ''\n @Input() isDark = false\n @Input() htmlPreviewAllowScripts = false\n @Input() htmlPreviewSandbox?: string\n @Input() title?: string\n @Input() onClose?: () => void\n\n private readonly i18n = useSafeI18n()\n\n get resolvedTitle() {\n return this.title || `HTML ${this.i18n.t('common.preview')}`\n }\n\n get sandboxValue() {\n return resolveHtmlPreviewSandboxValue(this.htmlPreviewSandbox, this.htmlPreviewAllowScripts)\n }\n\n get srcdoc() {\n const base = this.code || ''\n const lowered = base.trim().toLowerCase()\n if (lowered.startsWith('<!doctype') || lowered.startsWith('<html') || lowered.startsWith('<body'))\n return base\n const bg = this.isDark ? '#020617' : '#ffffff'\n const fg = this.isDark ? '#e5e7eb' : '#020617'\n return `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <style>\n html, body {\n margin: 0;\n padding: 0;\n height: 100%;\n background-color: ${bg};\n color: ${fg};\n }\n body {\n font-family: system-ui, -apple-system, BlinkMacSystemFont, 'SF Pro Text', ui-sans-serif, sans-serif;\n }\n </style>\n </head>\n <body>\n ${base}\n </body>\n</html>`\n }\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { CodeBlockMonacoTheme } from '../../types/monaco'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { useSafeI18n } from '../../i18n/useSafeI18n'\nimport { getUseMonaco } from '../../optional/monaco'\nimport { getLanguageIcon, languageMap, normalizeLanguageIdentifier, resolveMonacoLanguageId } from '../../utils/languageIcon'\nimport { PreCodeNodeComponent } from '../PreCodeNode/PreCodeNode.component'\nimport { getString } from '../shared/node-helpers'\nimport { HtmlPreviewFrameComponent } from './HtmlPreviewFrame.component'\n\nconst defaultCodeFontFamily = '\"SF Mono\", Monaco, Consolas, \"Ubuntu Mono\", \"Liberation Mono\", \"Courier New\", monospace'\nconst defaultCodeFontSize = 12\nconst defaultCodeLineHeight = 18\n\nfunction readPositiveCodeMetric(value: unknown) {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : undefined\n}\n\ninterface MonacoHelpers {\n createEditor?: (container: HTMLElement, code: string, language: string) => Promise<unknown> | unknown\n createDiffEditor?: (container: HTMLElement, original: string, modified: string, language: string) => Promise<unknown> | unknown\n updateCode?: (code: string, language?: string) => Promise<unknown> | unknown\n updateDiff?: (original: string, modified: string, language?: string) => Promise<unknown> | unknown\n cleanupEditor?: () => void\n safeClean?: () => void\n getEditorView?: () => any\n getDiffEditorView?: () => any\n setTheme?: (theme?: CodeBlockMonacoTheme) => Promise<unknown> | unknown\n}\n\nfunction parseCodeFenceInfo(raw: string) {\n const firstLine = String(raw ?? '').split(/\\r?\\n/, 1)[0]?.trim() ?? ''\n if (firstLine.length < 3)\n return ''\n const marker = firstLine[0]\n if ((marker !== '`' && marker !== '~') || firstLine[1] !== marker || firstLine[2] !== marker)\n return ''\n\n let index = 3\n while (firstLine[index] === marker)\n index += 1\n\n return firstLine.slice(index).trim()\n}\n\nfunction extractCodeBlockFileLabel(raw: unknown) {\n const info = parseCodeFenceInfo(getString(raw))\n if (!info)\n return ''\n\n const tokens = info.split(/\\s+/).filter(Boolean)\n if (!tokens.length)\n return ''\n\n const candidates = tokens[0] === 'diff' ? tokens.slice(1) : tokens\n for (const token of candidates) {\n const value = token.includes(':')\n ? token.slice(token.indexOf(':') + 1)\n : token\n if (value && /[./\\\\-]/.test(value))\n return value\n }\n\n return ''\n}\n\n@Component({\n selector: 'markstream-angular-code-block-node',\n standalone: true,\n imports: [CommonModule, PreCodeNodeComponent, HtmlPreviewFrameComponent],\n template: `\n <div\n class=\"code-block-container\"\n [class.is-dark]=\"resolvedIsDark\"\n [class.is-plain-text]=\"isPlainTextLanguage\"\n [class.is-rendering]=\"resolvedLoading\"\n [attr.data-markstream-monaco]=\"editorReady && !useFallback ? '1' : null\"\n [attr.data-markstream-monaco-diff]=\"editorReady && isDiff && !useFallback ? '1' : null\"\n [ngStyle]=\"containerStyle\"\n >\n <div\n *ngIf=\"resolvedShowHeader\"\n class=\"code-block-header\"\n [style.color]=\"headerForeground\"\n [style.backgroundColor]=\"headerBackground\"\n >\n <div class=\"code-block-header__meta\">\n <span class=\"icon-slot code-block-language-icon\">\n <img class=\"code-block-language-icon__image\" [src]=\"languageIconDataUrl\" alt=\"\" />\n </span>\n <span class=\"code-header-copy\">\n <span class=\"code-header-title\">{{ headerTitle }}</span>\n <span *ngIf=\"headerCaption\" class=\"code-header-caption\">{{ headerCaption }}</span>\n </span>\n </div>\n <div class=\"code-block-header__actions\">\n <button\n *ngIf=\"resolvedShowCollapseButton\"\n type=\"button\"\n class=\"code-action-btn\"\n [attr.title]=\"tooltipFor(collapsed ? t('common.expand') : t('common.collapse'))\"\n [attr.aria-pressed]=\"collapsed\"\n (click)=\"toggleCollapsed()\"\n >\n <svg\n [style.rotate]=\"collapsed ? '0deg' : '90deg'\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n class=\"code-action-btn__icon\"\n >\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m9 18l6-6l-6-6\" />\n </svg>\n </button>\n\n <ng-container *ngIf=\"resolvedShowFontSizeButtons && resolvedEnableFontSizeControl\">\n <button\n type=\"button\"\n class=\"code-action-btn\"\n [disabled]=\"fontSize <= 10\"\n [attr.title]=\"tooltipFor(t('common.decrease'))\"\n (click)=\"changeFontSize(-1)\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"code-action-btn\"\n [disabled]=\"fontSize === defaultFontSize\"\n [attr.title]=\"tooltipFor(t('common.reset'))\"\n (click)=\"resetFontSize()\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\n <path d=\"M3 12a9 9 0 1 0 9-9a9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n </g>\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"code-action-btn\"\n [disabled]=\"fontSize >= 36\"\n [attr.title]=\"tooltipFor(t('common.increase'))\"\n (click)=\"changeFontSize(1)\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7v14\" />\n </svg>\n </button>\n </ng-container>\n\n <button\n *ngIf=\"resolvedShowCopyButton\"\n type=\"button\"\n class=\"code-action-btn\"\n [attr.title]=\"tooltipFor(copied ? t('common.copied') : t('common.copy'))\"\n [attr.aria-label]=\"copied ? t('common.copied') : t('common.copy')\"\n (click)=\"copyCode()\"\n >\n <svg *ngIf=\"!copied\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" />\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />\n </g>\n </svg>\n <svg *ngIf=\"copied\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 6L9 17l-5-5\" />\n </svg>\n </button>\n\n <button\n *ngIf=\"resolvedShowExpandButton\"\n type=\"button\"\n class=\"code-action-btn\"\n [attr.title]=\"tooltipFor(expanded ? t('common.collapse') : t('common.expand'))\"\n [attr.aria-pressed]=\"expanded\"\n (click)=\"toggleExpanded()\"\n >\n <svg *ngIf=\"expanded\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m14 10l7-7m-1 7h-6V4M3 21l7-7m-6 0h6v6\" />\n </svg>\n <svg *ngIf=\"!expanded\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 3h6v6m0-6l-7 7M3 21l7-7m-1 7H3v-6\" />\n </svg>\n </button>\n\n <button\n *ngIf=\"resolvedShowPreviewButton && isPreviewable\"\n type=\"button\"\n class=\"code-action-btn\"\n [attr.title]=\"tooltipFor(t('common.preview'))\"\n [attr.aria-label]=\"t('common.preview')\"\n (click)=\"previewCode()\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" class=\"code-action-btn__icon\">\n <g fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\">\n <path d=\"M23.628 7.41c-.12-1.172-.08-3.583-.9-4.233c-1.921-1.51-6.143-1.11-8.815-1.19c-3.481-.15-7.193.14-10.625.24a.34.34 0 0 0 0 .67c3.472-.05 7.074-.29 10.575-.09c2.471.15 6.653-.14 8.254 1.16c.4.33.41 2.732.49 3.582a42 42 0 0 1 .08 9.005a13.8 13.8 0 0 1-.45 3.001c-2.42 1.4-19.69 2.381-20.72.55a21 21 0 0 1-.65-4.632a41.5 41.5 0 0 1 .12-7.964c.08 0 7.334.33 12.586.24c2.331 0 4.682-.13 6.764-.21a.33.33 0 0 0 0-.66c-7.714-.16-12.897-.43-19.31.05c.11-1.38.48-3.922.38-4.002a.3.3 0 0 0-.42 0c-.37.41-.29 1.77-.36 2.251s-.14 1.07-.2 1.6a45 45 0 0 0-.36 8.645a21.8 21.8 0 0 0 .66 5.002c1.46 2.702 17.248 1.461 20.95.43c1.45-.4 1.69-.8 1.871-1.95c.575-3.809.602-7.68.08-11.496\" />\n <path d=\"M4.528 5.237a.84.84 0 0 0-.21-1c-.77-.41-1.71.39-1 1.1a.83.83 0 0 0 1.21-.1m2.632-.25c.14-.14.19-.84-.2-1c-.77-.41-1.71.39-1 1.09a.82.82 0 0 0 1.2-.09m2.88 0a.83.83 0 0 0-.21-1c-.77-.41-1.71.39-1 1.09a.82.82 0 0 0 1.21-.09m-4.29 8.735c0 .08.23 2.471.31 2.561a.371.371 0 0 0 .63-.14c0-.09 0 0 .15-1.72a10 10 0 0 0-.11-2.232a5.3 5.3 0 0 1-.26-1.37a.3.3 0 0 0-.54-.24a6.8 6.8 0 0 0-.2 2.33c-1.281-.38-1.121.13-1.131-.42a15 15 0 0 0-.19-1.93c-.16-.17-.36-.17-.51.14a20 20 0 0 0-.43 3.471c.04.773.18 1.536.42 2.272c.26.4.7.22.7-.1c0-.09-.16-.09 0-1.862c.06-1.18-.23-.3 1.16-.76m5.033-2.552c.32-.07.41-.28.39-.37c0-.55-3.322-.34-3.462-.24s-.2.18-.18.28s0 .11 0 .16a3.8 3.8 0 0 0 1.591.361v.82a15 15 0 0 0-.13 3.132c0 .2-.09.94.17 1.16a.34.34 0 0 0 .48 0c.125-.35.196-.718.21-1.09a8 8 0 0 0 .14-3.232c0-.13.05-.7-.1-.89a8 8 0 0 0 .89-.09m5.544-.181a.69.69 0 0 0-.89-.44a2.8 2.8 0 0 0-1.252 1.001a2.3 2.3 0 0 0-.41-.83a1 1 0 0 0-1.6.27a7 7 0 0 0-.35 2.07c0 .571 0 2.642.06 2.762c.14 1.09 1 .51.63.13a17.6 17.6 0 0 1 .38-3.962c.32-1.18.32.2.39.51s.11 1.081.73 1.081s.48-.93 1.401-1.78q.075 1.345 0 2.69a15 15 0 0 0 0 1.811a.34.34 0 0 0 .68 0q.112-.861.11-1.73a16.7 16.7 0 0 0 .12-3.582m1.441-.201c-.05.16-.3 3.002-.31 3.202a6.3 6.3 0 0 0 .21 1.741c.33 1 1.21 1.07 2.291.82a3.7 3.7 0 0 0 1.14-.23c.21-.22.10-.59-.41-.64q-.817.096-1.64.07c-.44-.07-.34 0-.67-4.442q.015-.185 0-.37a.316.316 0 0 0-.23-.38a.316.316 0 0 0-.38.23\" />\n </g>\n </svg>\n </button>\n </div>\n </div>\n\n <div\n class=\"code-block-body\"\n [class.code-block-body--collapsed]=\"collapsed\"\n [class.code-block-body--expanded]=\"expanded\"\n >\n <ng-container *ngIf=\"!showLoadingPlaceholder; else loadingTpl\">\n <markstream-angular-pre-code-node\n *ngIf=\"useFallback; else editorTpl\"\n class=\"code-editor-fallback-surface\"\n [node]=\"node\"\n [ngStyle]=\"preFallbackStyle\"\n [showLineNumbers]=\"true\"\n />\n\n <ng-template #editorTpl>\n <div\n #editorHost\n class=\"code-editor-container\"\n [style.visibility]=\"editorReady ? 'visible' : 'hidden'\"\n [attr.aria-hidden]=\"editorReady ? null : 'true'\"\n ></div>\n <markstream-angular-pre-code-node\n *ngIf=\"!editorReady\"\n class=\"code-editor-fallback-surface\"\n [node]=\"node\"\n [ngStyle]=\"preFallbackStyle\"\n [showLineNumbers]=\"true\"\n />\n </ng-template>\n </ng-container>\n </div>\n\n <markstream-angular-html-preview-frame\n *ngIf=\"inlinePreviewOpen && isPreviewable\"\n [code]=\"resolvedCode\"\n [htmlPreviewAllowScripts]=\"mergedProps.htmlPreviewAllowScripts === true\"\n [htmlPreviewSandbox]=\"mergedProps.htmlPreviewSandbox\"\n [isDark]=\"resolvedIsDark\"\n [title]=\"previewTitle\"\n [onClose]=\"closeInlinePreview\"\n />\n\n <span class=\"sr-only\" aria-live=\"polite\" role=\"status\">{{ copied ? t('common.copied') : '' }}</span>\n </div>\n\n <ng-template #loadingTpl>\n <div class=\"code-loading-placeholder\">\n <div class=\"loading-skeleton\">\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line short\"></div>\n </div>\n </div>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CodeBlockNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n private readonly i18n = useSafeI18n()\n\n @ViewChild('editorHost') private editorHost?: ElementRef<HTMLElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() props?: Record<string, any>\n\n useFallback = false\n copied = false\n collapsed = false\n expanded = false\n inlinePreviewOpen = false\n editorReady = false\n defaultFontSize = defaultCodeFontSize\n fontSize = defaultCodeFontSize\n\n private helpers: MonacoHelpers | null = null\n private runtimeMonacoOptions: Record<string, any> | null = null\n private createPromise: Promise<void> | null = null\n private syncPromise: Promise<void> | null = null\n private editorKind: 'single' | 'diff' | null = null\n private editorStreamMode: boolean | null = null\n private lifecycleId = 0\n private viewReady = false\n private destroyed = false\n private copyTimer: number | null = null\n private deferredHeightSyncRaf: number | null = null\n\n get t() {\n return this.i18n.t\n }\n\n get mergedProps() {\n return {\n ...(this.context?.codeBlockProps || {}),\n ...(this.props || {}),\n }\n }\n\n get resolvedLoading() {\n const explicit = this.mergedProps.loading\n if (typeof explicit === 'boolean')\n return explicit\n return (this.node as any)?.loading !== false\n }\n\n get resolvedStream() {\n const explicit = this.mergedProps.stream\n if (typeof explicit === 'boolean')\n return explicit\n if (typeof this.context?.codeBlockStream === 'boolean')\n return this.context.codeBlockStream\n return true\n }\n\n get resolvedIsDark() {\n const explicit = this.mergedProps.isDark\n if (typeof explicit === 'boolean')\n return explicit\n return this.context?.isDark === true\n }\n\n get resolvedDarkTheme() {\n return this.mergedProps.darkTheme ?? this.context?.codeBlockThemes?.darkTheme ?? 'vitesse-dark'\n }\n\n get resolvedLightTheme() {\n return this.mergedProps.lightTheme ?? this.context?.codeBlockThemes?.lightTheme ?? 'vitesse-light'\n }\n\n get resolvedThemes() {\n return this.mergedProps.themes ?? this.context?.codeBlockThemes?.themes ?? ['vitesse-dark', 'vitesse-light']\n }\n\n get resolvedMonacoOptions() {\n return {\n ...(this.context?.codeBlockThemes?.monacoOptions || {}),\n ...(this.mergedProps.monacoOptions || {}),\n }\n }\n\n get resolvedEnableFontSizeControl() {\n if (typeof this.mergedProps.enableFontSizeControl === 'boolean')\n return this.mergedProps.enableFontSizeControl\n return true\n }\n\n get resolvedShowHeader() {\n return this.mergedProps.showHeader !== false\n }\n\n get resolvedShowCopyButton() {\n return this.mergedProps.showCopyButton !== false\n }\n\n get resolvedShowExpandButton() {\n return this.mergedProps.showExpandButton !== false\n }\n\n get resolvedShowPreviewButton() {\n return this.mergedProps.showPreviewButton !== false\n }\n\n get resolvedShowCollapseButton() {\n return this.mergedProps.showCollapseButton !== false\n }\n\n get resolvedShowFontSizeButtons() {\n return this.mergedProps.showFontSizeButtons !== false\n }\n\n get resolvedShowTooltips() {\n if (typeof this.mergedProps.showTooltips === 'boolean')\n return this.mergedProps.showTooltips\n return this.context?.showTooltips !== false\n }\n\n get resolvedIsShowPreview() {\n if (typeof this.mergedProps.isShowPreview === 'boolean')\n return this.mergedProps.isShowPreview\n return true\n }\n\n get rawLanguage() {\n return getString((this.node as any)?.language || 'plaintext')\n }\n\n get canonicalLanguage() {\n return normalizeLanguageIdentifier(this.rawLanguage) || 'plain'\n }\n\n get monacoLanguage() {\n return resolveMonacoLanguageId(this.rawLanguage)\n }\n\n get isPlainTextLanguage() {\n return this.monacoLanguage === 'plaintext'\n }\n\n get displayLanguage() {\n const label = languageMap[this.canonicalLanguage] || this.canonicalLanguage\n return label ? label.charAt(0).toUpperCase() + label.slice(1) : 'Text'\n }\n\n get languageIconDataUrl() {\n const icon = getLanguageIcon(this.rawLanguage).trim()\n const svg = icon.includes('xmlns=')\n ? icon\n : icon.replace('<svg', '<svg xmlns=\"http://www.w3.org/2000/svg\"')\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`\n }\n\n get resolvedCode() {\n if (this.isDiff)\n return getString((this.node as any)?.updatedCode || (this.node as any)?.code)\n return getString((this.node as any)?.code)\n }\n\n get originalCode() {\n return getString((this.node as any)?.originalCode)\n }\n\n get isDiff() {\n return !!(this.node as any)?.diff\n }\n\n get isPreviewable() {\n if (!this.resolvedIsShowPreview)\n return false\n return this.canonicalLanguage === 'html' || this.canonicalLanguage === 'svg'\n }\n\n get previewTitle() {\n return this.canonicalLanguage === 'html'\n ? this.t('artifacts.htmlPreviewTitle')\n : this.t('artifacts.svgPreviewTitle')\n }\n\n get headerForeground() {\n return 'var(--code-action-fg, var(--code-fg))'\n }\n\n get headerBackground() {\n return 'var(--code-header-bg, var(--code-bg))'\n }\n\n get headerTitle() {\n return this.fileLabel || this.displayLanguage\n }\n\n get headerCaption() {\n return this.fileLabel ? (this.isDiff ? `Diff / ${this.displayLanguage}` : this.displayLanguage) : ''\n }\n\n get fileLabel() {\n return extractCodeBlockFileLabel((this.node as any)?.raw)\n }\n\n get ariaLabel() {\n return `Code block: ${this.displayLanguage}`\n }\n\n get showLoadingPlaceholder() {\n return this.shouldDelayEditor\n }\n\n get shouldDelayEditor() {\n return !this.resolvedStream && this.resolvedLoading\n }\n\n get containerStyle() {\n const style: Record<string, string> = {}\n const min = this.resolveCssSize(this.mergedProps.minWidth ?? this.context?.codeBlockThemes?.minWidth)\n const max = this.resolveCssSize(this.mergedProps.maxWidth ?? this.context?.codeBlockThemes?.maxWidth)\n if (min)\n style.minWidth = min\n if (max)\n style.maxWidth = max\n return style\n }\n\n get preFallbackStyle(): Record<string, string> {\n const options = this.resolvedMonacoOptions\n const fontSize = readPositiveCodeMetric(this.fontSize) ?? defaultCodeFontSize\n const lineHeight = readPositiveCodeMetric(options.lineHeight)\n ?? (fontSize === defaultCodeFontSize ? defaultCodeLineHeight : Math.max(12, Math.round(fontSize * 1.5)))\n const padding = options.padding && typeof options.padding === 'object'\n ? options.padding as Record<string, unknown>\n : null\n const defaultPadding = this.isDiff ? 0 : 8\n const paddingTop = readPositiveCodeMetric(padding?.top) ?? (padding?.top === 0 ? 0 : defaultPadding)\n const paddingBottom = readPositiveCodeMetric(padding?.bottom) ?? (padding?.bottom === 0 ? 0 : defaultPadding)\n const fontFamily = typeof options.fontFamily === 'string' && options.fontFamily.trim()\n ? options.fontFamily.trim()\n : defaultCodeFontFamily\n\n return {\n '--markstream-code-font-family': fontFamily,\n '--markstream-code-padding-y': `${paddingTop}px`,\n '--markstream-code-padding-bottom': `${paddingBottom}px`,\n '--vscode-editor-font-size': `${fontSize}px`,\n '--vscode-editor-line-height': `${lineHeight}px`,\n 'font-family': fontFamily,\n 'font-size': `${fontSize}px`,\n 'line-height': `${lineHeight}px`,\n }\n }\n\n readonly closeInlinePreview = () => {\n this.inlinePreviewOpen = false\n this.cdr.markForCheck()\n }\n\n ngAfterViewInit() {\n this.viewReady = true\n this.applyInitialFontSize()\n void this.syncEditorState()\n }\n\n ngOnChanges() {\n this.applyInitialFontSize()\n if (!this.viewReady)\n return\n void this.syncEditorState()\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.lifecycleId += 1\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n this.cancelDeferredHeightSync()\n this.cleanupEditor()\n }\n\n tooltipFor(text: string) {\n return this.resolvedShowTooltips ? text : null\n }\n\n toggleCollapsed() {\n this.collapsed = !this.collapsed\n this.inlinePreviewOpen = false\n if (!this.collapsed)\n queueMicrotask(() => void this.syncEditorState())\n this.cdr.markForCheck()\n }\n\n toggleExpanded() {\n this.expanded = !this.expanded\n queueMicrotask(() => this.applyEditorHeight())\n this.cdr.markForCheck()\n }\n\n changeFontSize(delta: number) {\n this.fontSize = Math.min(36, Math.max(10, this.fontSize + delta))\n this.applyEditorFontSize()\n this.applyEditorHeight()\n this.cdr.markForCheck()\n }\n\n resetFontSize() {\n this.fontSize = this.defaultFontSize\n this.applyEditorFontSize()\n this.applyEditorHeight()\n this.cdr.markForCheck()\n }\n\n async copyCode() {\n const text = this.resolvedCode\n try {\n if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText)\n await navigator.clipboard.writeText(text)\n else\n this.copyUsingTextarea(text)\n }\n catch {\n this.copyUsingTextarea(text)\n }\n this.copied = true\n this.context?.events.onCopy?.(text)\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n if (typeof window !== 'undefined') {\n this.copyTimer = window.setTimeout(() => {\n this.copied = false\n this.cdr.markForCheck()\n }, 1000)\n }\n this.cdr.markForCheck()\n }\n\n previewCode() {\n if (!this.isPreviewable)\n return\n const artifactType = this.canonicalLanguage === 'html' ? 'text/html' : 'image/svg+xml'\n const artifactTitle = this.previewTitle\n if (typeof this.context?.events.onHandleArtifactClick === 'function') {\n this.context.events.onHandleArtifactClick({\n node: this.node,\n artifactType,\n artifactTitle,\n id: `temp-${this.canonicalLanguage}-${Date.now()}`,\n })\n return\n }\n if (this.canonicalLanguage === 'html')\n this.inlinePreviewOpen = !this.inlinePreviewOpen\n this.cdr.markForCheck()\n }\n\n private applyInitialFontSize() {\n const previousDefault = this.defaultFontSize\n const initial = Number(this.resolvedMonacoOptions.fontSize)\n this.defaultFontSize = Number.isFinite(initial) && initial > 0 ? initial : defaultCodeFontSize\n if (\n !(typeof this.fontSize === 'number' && Number.isFinite(this.fontSize) && this.fontSize > 0)\n || this.fontSize === previousDefault\n || this.fontSize < 10\n || this.fontSize > 36\n ) {\n this.fontSize = this.defaultFontSize\n }\n }\n\n private async syncEditorState() {\n if (this.destroyed || !this.viewReady)\n return\n if (this.collapsed || this.showLoadingPlaceholder) {\n this.editorReady = false\n this.cdr.markForCheck()\n return\n }\n\n await this.ensureHelpers()\n if (this.destroyed || this.useFallback || !this.helpers) {\n this.cdr.markForCheck()\n return\n }\n\n if (!this.editorHost?.nativeElement) {\n this.editorReady = false\n this.cdr.markForCheck()\n return\n }\n\n if (this.syncPromise)\n return this.syncPromise\n\n this.syncPromise = (async () => {\n try {\n const desiredKind = this.isDiff && typeof this.helpers?.createDiffEditor === 'function' ? 'diff' : 'single'\n const desiredStreamMode = this.resolvedLoading !== false\n if (\n this.editorKind !== desiredKind\n || this.editorStreamMode !== desiredStreamMode\n || !this.hasRenderedEditorDom(desiredKind)\n ) {\n await this.recreateEditor(desiredKind, desiredStreamMode)\n }\n else {\n await this.updateEditor()\n }\n await Promise.resolve(this.helpers?.setTheme?.(this.resolvedIsDark ? this.resolvedDarkTheme : this.resolvedLightTheme))\n this.applyEditorFontSize()\n const creationId = this.lifecycleId\n if (!await this.prepareEditorHandoff(desiredKind, creationId))\n return\n this.editorReady = true\n this.scheduleDeferredHeightSync()\n }\n catch {\n this.useFallback = true\n this.editorReady = false\n this.cleanupEditor()\n }\n finally {\n this.syncPromise = null\n this.cdr.markForCheck()\n }\n })()\n\n return this.syncPromise\n }\n\n private async ensureHelpers() {\n if (this.helpers || this.useFallback)\n return\n if (this.createPromise)\n return this.createPromise\n\n this.createPromise = (async () => {\n const monacoModule = await getUseMonaco()\n if (!monacoModule || typeof monacoModule.useMonaco !== 'function') {\n this.useFallback = true\n return\n }\n\n const configuredUnsafeCSS = typeof this.resolvedMonacoOptions.unsafeCSS === 'string'\n ? this.resolvedMonacoOptions.unsafeCSS\n : ''\n const options = {\n wordWrap: 'on',\n stream: this.resolvedLoading !== false,\n wrappingIndent: 'same',\n readOnly: true,\n minimap: { enabled: false },\n lineNumbers: 'on',\n revealDebounceMs: 75,\n MAX_HEIGHT: 500,\n fontFamily: defaultCodeFontFamily,\n fontSize: this.defaultFontSize,\n lineHeight: defaultCodeLineHeight,\n padding: this.isDiff ? { top: 0, bottom: 0 } : { top: 8, bottom: 8 },\n themes: this.resolvedThemes,\n theme: this.resolvedIsDark ? this.resolvedDarkTheme : this.resolvedLightTheme,\n ...(this.resolvedMonacoOptions || {}),\n // The Angular shell already owns the language/file header. Keep the\n // enhanced surface headerless so it matches the Vue 3 handoff contract.\n disableFileHeader: true,\n unsafeCSS: `[data-file], [data-diff] { --diffs-min-number-column-width-default: 4ch !important; }\n${configuredUnsafeCSS}`.trim(),\n }\n\n this.runtimeMonacoOptions = options\n this.helpers = monacoModule.useMonaco(options)\n })()\n\n try {\n await this.createPromise\n }\n finally {\n this.createPromise = null\n }\n }\n\n private async recreateEditor(kind: 'single' | 'diff', streamMode: boolean) {\n const host = this.editorHost?.nativeElement\n if (!host || !this.helpers)\n return\n\n this.editorReady = false\n this.lifecycleId += 1\n this.cleanupEditor()\n host.innerHTML = ''\n this.editorKind = kind\n this.editorStreamMode = streamMode\n if (this.runtimeMonacoOptions)\n this.runtimeMonacoOptions.stream = streamMode\n\n if (kind === 'diff') {\n await Promise.resolve(this.helpers.createDiffEditor?.(\n host,\n this.originalCode,\n this.resolvedCode,\n this.monacoLanguage,\n ))\n this.syncEditorGeometryVars()\n return\n }\n\n await Promise.resolve(this.helpers.createEditor?.(\n host,\n this.resolvedCode,\n this.monacoLanguage,\n ))\n this.syncEditorGeometryVars()\n }\n\n // Align the enhanced surface with the pre-fallback geometry. stream-diffs /\n // pierre honor these CSS variables on the editor host (custom properties\n // inherit across the pierre shadow boundary):\n // - `--diffs-tab-size`: fallback defaults to 4, pierre defaults to 2.\n // - `--diffs-gap-block`: only set when padding is present; the default 8px\n // gap already matches the fallback.\n private syncEditorGeometryVars() {\n const host = this.editorHost?.nativeElement\n if (!host)\n return\n const tabSize = readPositiveCodeMetric(this.resolvedMonacoOptions.tabSize) ?? 4\n host.style.setProperty('--diffs-tab-size', String(tabSize))\n const rawPadding = this.resolvedMonacoOptions.padding\n const hasConfiguredPadding = Boolean(rawPadding && typeof rawPadding === 'object')\n if (hasConfiguredPadding) {\n const top = readPositiveCodeMetric((rawPadding as Record<string, unknown>).top) ?? 0\n host.style.setProperty('--diffs-gap-block', `${top}px`)\n }\n else {\n host.style.removeProperty('--diffs-gap-block')\n }\n }\n\n private async updateEditor() {\n if (!this.helpers)\n return\n\n if (this.isDiff && this.editorKind === 'diff' && typeof this.helpers.updateDiff === 'function') {\n await Promise.resolve(this.helpers.updateDiff(this.originalCode, this.resolvedCode, this.monacoLanguage))\n return\n }\n\n await Promise.resolve(this.helpers.updateCode?.(this.resolvedCode, this.monacoLanguage))\n }\n\n private hasRenderedEditorDom(kind: 'single' | 'diff') {\n const host = this.editorHost?.nativeElement\n if (!host)\n return false\n const monacoSelector = kind === 'diff' ? '.monaco-diff-editor' : '.monaco-editor'\n return !!host.querySelector([\n monacoSelector,\n 'diffs-container',\n '.stream-diffs-shell',\n '[data-stream-diffs-state]',\n ].join(','))\n }\n\n private getVisualEditorSurface() {\n return this.editorHost?.nativeElement.querySelector<HTMLElement>([\n '.monaco-diff-editor',\n '.monaco-editor',\n 'diffs-container',\n '[data-stream-diffs-state]',\n '.stream-diffs-shell',\n ].join(',')) ?? null\n }\n\n private isEditorVisuallyReady(kind: 'single' | 'diff') {\n const host = this.editorHost?.nativeElement\n if (!host || !this.hasRenderedEditorDom(kind) || typeof window === 'undefined')\n return false\n const surface = this.getVisualEditorSurface()\n if (!surface)\n return false\n const rect = surface.getBoundingClientRect()\n if (rect.width <= 0 || rect.height <= 0)\n return false\n const style = window.getComputedStyle(surface)\n return style.display !== 'none'\n && Number.parseFloat(style.opacity || '1') > 0.01\n }\n\n private async prepareEditorHandoff(kind: 'single' | 'diff', creationId: number) {\n // Time-box the handoff: if visual readiness can't be confirmed (e.g. a\n // hidden/zero-size container), reveal the editor anyway once its DOM is\n // mounted so the block never strands in the pre-fallback forever.\n const deadline = Date.now() + 1500\n let attempt = 0\n while (Date.now() < deadline && attempt < 30) {\n attempt += 1\n if (this.destroyed || creationId !== this.lifecycleId)\n return false\n this.applyEditorHeight(true)\n await this.nextAnimationFrame()\n if (this.isEditorVisuallyReady(kind)) {\n this.applyEditorHeight(true)\n await this.nextAnimationFrame()\n return this.isEditorVisuallyReady(kind)\n }\n }\n return !this.destroyed && creationId === this.lifecycleId && this.hasRenderedEditorDom(kind)\n }\n\n private nextAnimationFrame() {\n if (typeof window === 'undefined' || typeof window.requestAnimationFrame !== 'function')\n return Promise.resolve()\n return new Promise<void>(resolve => window.requestAnimationFrame(() => resolve()))\n }\n\n private applyEditorFontSize() {\n const view = this.editorKind === 'diff'\n ? this.helpers?.getDiffEditorView?.()\n : this.helpers?.getEditorView?.()\n try {\n view?.updateOptions?.({ fontSize: this.fontSize, automaticLayout: this.expanded })\n if (this.editorKind === 'diff' && typeof view?.getModifiedEditor === 'function')\n view.getModifiedEditor()?.updateOptions?.({ fontSize: this.fontSize })\n }\n catch {}\n }\n\n private applyEditorHeight(_preparing = false) {\n const host = this.editorHost?.nativeElement\n if (!host)\n return\n\n const maxHeight = this.resolveMaxHeight()\n host.style.minHeight = '0px'\n host.style.maxHeight = this.expanded ? 'none' : `${maxHeight}px`\n host.style.overflow = this.expanded ? 'visible' : 'auto'\n\n const view = this.editorKind === 'diff'\n ? this.helpers?.getDiffEditorView?.()\n : this.helpers?.getEditorView?.()\n if (!view)\n return\n\n try {\n view.updateOptions?.({ automaticLayout: this.expanded })\n }\n catch {}\n\n const height = this.resolveEditorHeight(view, maxHeight)\n host.style.height = `${height}px`\n try {\n view.layout?.()\n }\n catch {}\n }\n\n private resolveEditorHeight(view: any, maxHeight: number) {\n let contentHeight = Number.NaN\n try {\n if (typeof view.getContentHeight === 'function')\n contentHeight = Number(view.getContentHeight())\n else if (this.editorKind === 'diff' && typeof view.getModifiedEditor === 'function')\n contentHeight = Number(view.getModifiedEditor()?.getContentHeight?.())\n }\n catch {}\n\n if (!Number.isFinite(contentHeight) || contentHeight <= 0) {\n const lines = this.resolveEditorLineCount(view)\n const lineHeight = this.resolveEditorLineHeight()\n const estimate = lines * (lineHeight + 1.5) + 1\n return Math.ceil(Math.max(1, this.expanded ? estimate : Math.min(estimate, maxHeight)))\n }\n\n return Math.ceil(Math.max(1, this.expanded ? contentHeight : Math.min(contentHeight, maxHeight)))\n }\n\n private resolveEditorLineCount(view: any) {\n try {\n if (\n this.editorKind === 'diff'\n && typeof view?.getOriginalEditor === 'function'\n && typeof view?.getModifiedEditor === 'function'\n ) {\n const originalLines = Number(view.getOriginalEditor?.()?.getModel?.()?.getLineCount?.() ?? 1)\n const modifiedLines = Number(view.getModifiedEditor?.()?.getModel?.()?.getLineCount?.() ?? 1)\n return Math.max(1, originalLines, modifiedLines)\n }\n\n const lines = Number(view?.getModel?.()?.getLineCount?.() ?? 1)\n if (Number.isFinite(lines) && lines > 0)\n return lines\n }\n catch {}\n\n return Math.max(1, String(this.resolvedCode || '').split('\\n').length)\n }\n\n private resolveEditorLineHeight() {\n const fromOptions = Number(this.resolvedMonacoOptions.lineHeight)\n if (Number.isFinite(fromOptions) && fromOptions > 0)\n return fromOptions\n\n const fromFontOption = Number(this.resolvedMonacoOptions.fontSize)\n if (Number.isFinite(fromFontOption) && fromFontOption > 0)\n return Math.max(12, Math.round(fromFontOption * 1.35))\n\n const fromState = Number(this.fontSize)\n if (Number.isFinite(fromState) && fromState > 0)\n return Math.max(12, Math.round(fromState * 1.35))\n\n return 18\n }\n\n private resolveMaxHeight() {\n const raw = this.resolvedMonacoOptions.MAX_HEIGHT ?? 500\n if (typeof raw === 'number' && Number.isFinite(raw))\n return raw > 0 ? raw : 500\n const matched = String(raw).match(/^(\\d+(?:\\.\\d+)?)/)\n const parsed = matched ? Number.parseFloat(matched[1]) : 500\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 500\n }\n\n private cancelDeferredHeightSync() {\n if (this.deferredHeightSyncRaf == null || typeof window === 'undefined')\n return\n window.cancelAnimationFrame(this.deferredHeightSyncRaf)\n this.deferredHeightSyncRaf = null\n }\n\n private scheduleDeferredHeightSync() {\n if (typeof window === 'undefined' || this.destroyed)\n return\n\n this.cancelDeferredHeightSync()\n this.deferredHeightSyncRaf = window.requestAnimationFrame(() => {\n this.deferredHeightSyncRaf = window.requestAnimationFrame(() => {\n this.deferredHeightSyncRaf = null\n this.applyEditorHeight()\n })\n })\n }\n\n private cleanupEditor() {\n this.cancelDeferredHeightSync()\n try {\n this.helpers?.safeClean?.()\n }\n catch {}\n try {\n this.helpers?.cleanupEditor?.()\n }\n catch {}\n this.editorKind = null\n }\n\n private resolveCssSize(value: unknown) {\n if (value == null || value === '')\n return null\n return typeof value === 'number' ? `${value}px` : String(value)\n }\n\n private copyUsingTextarea(text: string) {\n if (typeof document === 'undefined')\n return\n const textarea = document.createElement('textarea')\n textarea.value = text\n textarea.setAttribute('readonly', 'true')\n textarea.style.position = 'fixed'\n textarea.style.opacity = '0'\n textarea.style.pointerEvents = 'none'\n document.body.appendChild(textarea)\n textarea.select()\n try {\n document.execCommand('copy')\n }\n catch {}\n finally {\n textarea.remove()\n }\n }\n}\n","export interface D2Instance {\n D2?: D2Constructor\n compile?: (source: string, options?: Record<string, unknown>) => Promise<unknown> | unknown\n render?: (input: unknown, options?: Record<string, unknown>) => Promise<unknown> | unknown\n}\n\nexport interface D2Constructor {\n new (): D2Instance\n D2?: D2Constructor\n compile?: D2Instance['compile']\n}\n\nexport type D2Module = D2Constructor | D2Instance\nexport type D2Loader = () => Promise<unknown> | unknown\n\nconst defaultD2Loader: D2Loader = () => import('@terrastruct/d2')\n\nlet cachedD2: any = null\nlet d2Loader: D2Loader | null = defaultD2Loader\nlet pendingImport: Promise<unknown | null> | null = null\n\nfunction resetCachedD2() {\n cachedD2 = null\n pendingImport = null\n}\n\nfunction normalizeD2Module(mod: any) {\n if (!mod)\n return mod\n if (mod.D2 && typeof mod.D2 === 'function')\n return mod.D2\n if (mod.default && mod.default.D2 && typeof mod.default.D2 === 'function')\n return mod.default.D2\n const candidate = mod.default ?? mod\n if (typeof candidate === 'function')\n return candidate\n if (candidate?.D2 && typeof candidate.D2 === 'function')\n return candidate.D2\n return candidate\n}\n\nexport function setD2Loader(loader: D2Loader | null) {\n d2Loader = loader\n resetCachedD2()\n}\n\nexport function enableD2(loader?: D2Loader) {\n setD2Loader(loader ?? defaultD2Loader)\n}\n\nexport function disableD2() {\n setD2Loader(null)\n}\n\nexport function isD2Enabled() {\n return typeof d2Loader === 'function'\n}\n\nexport async function getD2(): Promise<D2Module | null> {\n if (cachedD2)\n return cachedD2\n if (pendingImport)\n return await pendingImport\n\n const loader = d2Loader\n if (!loader)\n return null\n\n pendingImport = (async () => {\n let mod: any\n try {\n mod = await loader()\n }\n catch (error) {\n if (loader === defaultD2Loader) {\n throw new Error('Optional dependency \"@terrastruct/d2\" is not installed. Please install it to enable D2 diagrams.')\n }\n throw error\n }\n\n if (!mod)\n return null\n\n cachedD2 = normalizeD2Module(mod)\n return cachedD2\n })()\n\n try {\n return await pendingImport\n }\n finally {\n pendingImport = null\n }\n}\n","const DISALLOWED_STYLE_PATTERNS = [/javascript:/i, /expression\\s*\\(/i, /url\\s*\\(\\s*javascript:/i, /@import/i]\nconst SAFE_URL_PROTOCOLS = /^(?:https?:|mailto:|tel:|#|\\/|data:image\\/(?:png|gif|jpe?g|webp);)/i\n\nfunction neutralizeScriptProtocols(raw: string) {\n return raw\n .replace(/[\"']\\s*javascript:/gi, '#')\n .replace(/\\bjavascript:/gi, '#')\n .replace(/[\"']\\s*vbscript:/gi, '#')\n .replace(/\\bvbscript:/gi, '#')\n .replace(/\\bdata:text\\/html/gi, '#')\n}\n\nfunction sanitizeUrl(value: string | null | undefined) {\n if (!value)\n return ''\n const trimmed = value.trim()\n if (SAFE_URL_PROTOCOLS.test(trimmed))\n return trimmed\n return ''\n}\n\nfunction scrubSvgElement(svgEl: SVGElement) {\n const forbiddenTags = new Set(['script'])\n const nodes = [svgEl, ...Array.from(svgEl.querySelectorAll<SVGElement>('*'))]\n for (const node of nodes) {\n if (forbiddenTags.has(node.tagName.toLowerCase())) {\n node.remove()\n continue\n }\n\n const attrs = Array.from(node.attributes)\n for (const attr of attrs) {\n const name = attr.name\n if (/^on/i.test(name)) {\n node.removeAttribute(name)\n continue\n }\n\n if (name === 'style' && attr.value) {\n if (DISALLOWED_STYLE_PATTERNS.some(re => re.test(attr.value))) {\n node.removeAttribute(name)\n continue\n }\n }\n\n if ((name === 'href' || name === 'xlink:href') && attr.value) {\n const safe = sanitizeUrl(attr.value)\n if (!safe) {\n node.removeAttribute(name)\n continue\n }\n if (safe !== attr.value)\n node.setAttribute(name, safe)\n }\n }\n }\n}\n\nexport function toSafeSvgMarkup(svg: string | null | undefined) {\n if (typeof DOMParser === 'undefined')\n return ''\n if (!svg)\n return ''\n\n const neutralized = neutralizeScriptProtocols(svg)\n const parsed = new DOMParser().parseFromString(neutralized, 'image/svg+xml')\n const svgEl = parsed.documentElement\n if (!svgEl || svgEl.nodeName.toLowerCase() !== 'svg')\n return ''\n\n const svgElement = svgEl as unknown as SVGElement\n scrubSvgElement(svgElement)\n return svgElement.outerHTML\n}\n\nexport function extractRenderedSvg(renderResult: any) {\n if (!renderResult)\n return ''\n if (typeof renderResult === 'string')\n return renderResult\n if (typeof renderResult.svg === 'string')\n return renderResult.svg\n if (typeof renderResult.data === 'string')\n return renderResult.data\n return ''\n}\n","export async function copyTextToClipboard(source: string) {\n try {\n if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(source)\n return true\n }\n }\n catch {\n // Fall back to the textarea path below.\n }\n\n if (typeof document === 'undefined')\n return false\n\n const textarea = document.createElement('textarea')\n textarea.value = source\n textarea.setAttribute('readonly', 'true')\n textarea.style.position = 'fixed'\n textarea.style.opacity = '0'\n textarea.style.pointerEvents = 'none'\n document.body.appendChild(textarea)\n textarea.select()\n\n try {\n document.execCommand('copy')\n return true\n }\n catch {\n return false\n }\n finally {\n textarea.remove()\n }\n}\n\nexport function clearElement(target: HTMLElement | null | undefined) {\n if (!target)\n return\n\n try {\n target.replaceChildren()\n }\n catch {\n target.innerHTML = ''\n }\n}\n\nexport function setElementHtml(target: HTMLElement | null | undefined, html: string) {\n if (!target)\n return\n clearElement(target)\n if (!html)\n return\n try {\n target.insertAdjacentHTML('afterbegin', html)\n }\n catch {\n target.innerHTML = html\n }\n}\n\nexport function downloadSvgMarkup(svgMarkup: string, filename: string) {\n if (!svgMarkup || typeof document === 'undefined' || typeof URL === 'undefined')\n return\n\n const blob = new Blob([svgMarkup], { type: 'image/svg+xml;charset=utf-8' })\n const url = URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = url\n link.download = filename\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n URL.revokeObjectURL(url)\n}\n\nexport function resolveCssSize(value: unknown, fallback?: string) {\n if (value == null || value === '')\n return fallback ?? null\n return typeof value === 'number' ? `${value}px` : String(value)\n}\n\nexport function clampNumber(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value))\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { getD2 } from '../../optional/d2'\nimport { extractRenderedSvg, toSafeSvgMarkup } from '../../sanitizeSvg'\nimport { getString } from '../shared/node-helpers'\nimport {\n copyTextToClipboard,\n downloadSvgMarkup,\n resolveCssSize,\n setElementHtml,\n} from '../shared/rich-block-helpers'\n\nconst DARK_THEME_OVERRIDES: Record<string, string> = {\n N1: '#E5E7EB',\n N2: '#CBD5E1',\n N3: '#94A3B8',\n N4: '#64748B',\n N5: '#475569',\n N6: '#334155',\n N7: '#0B1220',\n B1: '#60A5FA',\n B2: '#3B82F6',\n B3: '#2563EB',\n B4: '#1D4ED8',\n B5: '#1E40AF',\n B6: '#111827',\n AA2: '#22D3EE',\n AA4: '#0EA5E9',\n AA5: '#0284C7',\n AB4: '#FBBF24',\n AB5: '#F59E0B',\n}\n\n@Component({\n selector: 'markstream-angular-d2-block-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n class=\"markstream-angular-enhanced-block markstream-angular-enhanced-block--d2\"\n [attr.data-markstream-d2]=\"'1'\"\n [attr.data-mode]=\"showSource ? 'source' : 'preview'\"\n >\n <div *ngIf=\"resolvedShowHeader\" class=\"markstream-angular-enhanced-block__header\">\n <div class=\"flex items-center gap-2 min-w-0\">\n <span class=\"markstream-angular-enhanced-block__badge\">D2</span>\n <span class=\"mermaid-title__text truncate\">Diagram</span>\n </div>\n\n <div class=\"markstream-angular-enhanced-block__actions\">\n <button\n *ngIf=\"resolvedShowModeToggle\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action mode-btn\"\n [class.is-active]=\"!showSource\"\n (click)=\"setMode(false)\"\n >\n Preview\n </button>\n <button\n *ngIf=\"resolvedShowModeToggle\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action mode-btn\"\n [class.is-active]=\"showSource\"\n (click)=\"setMode(true)\"\n >\n Source\n </button>\n <button\n *ngIf=\"resolvedShowCopyButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action d2-action-btn\"\n [attr.title]=\"tooltipFor(copied ? 'Copied' : 'Copy')\"\n (click)=\"copySource()\"\n >\n {{ copied ? 'Copied' : 'Copy' }}\n </button>\n <button\n *ngIf=\"resolvedShowExportButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action d2-action-btn\"\n [disabled]=\"!svgMarkup\"\n [attr.title]=\"tooltipFor('Export SVG')\"\n (click)=\"exportSvg()\"\n >\n Export\n </button>\n <button\n *ngIf=\"resolvedShowCollapseButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action d2-action-btn\"\n [attr.title]=\"tooltipFor(collapsed ? 'Expand' : 'Collapse')\"\n (click)=\"toggleCollapsed()\"\n >\n {{ collapsed ? 'Expand' : 'Collapse' }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"!collapsed\" class=\"markstream-angular-enhanced-block__body d2-block-body\" [style.maxHeight]=\"resolvedMaxHeight\">\n <div *ngIf=\"rendering && !showSource\" class=\"mermaid-loading\">\n <span class=\"mermaid-spinner\" aria-hidden=\"true\"></span>\n <span>Rendering D2...</span>\n </div>\n\n <div *ngIf=\"!showSource\" class=\"d2-render\">\n <div #previewHost class=\"d2-svg\"></div>\n </div>\n\n <div *ngIf=\"showSource\" class=\"d2-source\">\n <pre class=\"markstream-angular-enhanced-block__source d2-code\"><code translate=\"no\">{{ code }}</code></pre>\n </div>\n\n <div *ngIf=\"error\" class=\"d2-error\">{{ error }}</div>\n </div>\n\n <span class=\"sr-only\" aria-live=\"polite\" role=\"status\">{{ copied ? 'Copied' : '' }}</span>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class D2BlockNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n\n @ViewChild('previewHost') private previewHost?: ElementRef<HTMLElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() props?: Record<string, any>\n\n rendering = false\n copied = false\n collapsed = false\n showSource = false\n svgMarkup = ''\n error = ''\n\n private viewReady = false\n private destroyed = false\n private renderToken = 0\n private copyTimer: number | null = null\n\n get mergedProps() {\n return {\n ...(this.context?.d2Props || {}),\n ...(this.props || {}),\n }\n }\n\n get code() {\n return getString((this.node as any)?.code)\n }\n\n get resolvedIsDark() {\n if (typeof this.mergedProps.isDark === 'boolean')\n return this.mergedProps.isDark\n return this.context?.isDark === true\n }\n\n get resolvedShowHeader() {\n return this.mergedProps.showHeader !== false\n }\n\n get resolvedShowModeToggle() {\n return this.mergedProps.showModeToggle !== false\n }\n\n get resolvedShowCopyButton() {\n return this.mergedProps.showCopyButton !== false\n }\n\n get resolvedShowExportButton() {\n return this.mergedProps.showExportButton !== false\n }\n\n get resolvedShowCollapseButton() {\n return this.mergedProps.showCollapseButton !== false\n }\n\n get resolvedShowTooltips() {\n if (typeof this.mergedProps.showTooltips === 'boolean')\n return this.mergedProps.showTooltips\n return this.context?.showTooltips !== false\n }\n\n get resolvedMaxHeight() {\n return resolveCssSize(this.mergedProps.maxHeight, '500px')\n }\n\n get resolvedLoading() {\n if (typeof this.mergedProps.loading === 'boolean')\n return this.mergedProps.loading\n return (this.node as any)?.loading === true\n }\n\n get resolvedProgressiveRender() {\n return this.mergedProps.progressiveRender === true\n }\n\n ngAfterViewInit() {\n this.viewReady = true\n queueMicrotask(() => void this.renderDiagram())\n }\n\n ngOnChanges() {\n if (!this.viewReady)\n return\n queueMicrotask(() => void this.renderDiagram())\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.renderToken += 1\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n }\n\n tooltipFor(text: string) {\n return this.resolvedShowTooltips ? text : null\n }\n\n setMode(nextSource: boolean) {\n this.showSource = nextSource\n if (!nextSource)\n this.scheduleHostSync()\n this.cdr.markForCheck()\n }\n\n async copySource() {\n await copyTextToClipboard(this.code)\n this.copied = true\n this.context?.events.onCopy?.(this.code)\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n if (typeof window !== 'undefined') {\n this.copyTimer = window.setTimeout(() => {\n this.copied = false\n this.cdr.markForCheck()\n }, 1000)\n }\n this.cdr.markForCheck()\n }\n\n exportSvg() {\n if (!this.svgMarkup)\n return\n downloadSvgMarkup(this.svgMarkup, `d2-${Date.now()}.svg`)\n }\n\n toggleCollapsed() {\n this.collapsed = !this.collapsed\n if (!this.collapsed)\n queueMicrotask(() => void this.renderDiagram())\n this.cdr.markForCheck()\n }\n\n private async renderDiagram() {\n if (this.destroyed || !this.viewReady || this.collapsed)\n return\n\n const source = this.code.trim()\n if (!source) {\n this.svgMarkup = ''\n this.error = ''\n this.syncSvgHost()\n this.cdr.markForCheck()\n return\n }\n\n if (this.resolvedLoading && !this.resolvedProgressiveRender) {\n this.renderToken += 1\n this.rendering = true\n this.error = ''\n this.svgMarkup = ''\n this.syncSvgHost()\n this.cdr.markForCheck()\n return\n }\n\n const token = ++this.renderToken\n this.rendering = true\n this.error = ''\n this.cdr.markForCheck()\n\n try {\n const D2Ctor = await getD2()\n if (!D2Ctor)\n throw new Error('D2 renderer is not available.')\n\n const instance = createD2Instance(D2Ctor)\n if (!instance || typeof instance.compile !== 'function' || typeof instance.render !== 'function')\n throw new TypeError('D2 instance is missing compile/render methods.')\n\n const compileResult = await instance.compile(source)\n const diagram = compileResult?.diagram ?? compileResult\n const baseRenderOptions = compileResult?.renderOptions ?? compileResult?.options ?? {}\n const renderOptions: Record<string, any> = {\n ...baseRenderOptions,\n themeID: this.resolvedIsDark\n ? (this.mergedProps.darkThemeId ?? baseRenderOptions.darkThemeID ?? baseRenderOptions.themeID)\n : (this.mergedProps.themeId ?? baseRenderOptions.themeID),\n darkThemeID: null,\n darkThemeOverrides: null,\n }\n\n if (this.resolvedIsDark) {\n renderOptions.themeOverrides = {\n ...(baseRenderOptions.themeOverrides || {}),\n ...DARK_THEME_OVERRIDES,\n }\n }\n\n const renderResult = await instance.render(diagram, renderOptions)\n if (this.destroyed || token !== this.renderToken)\n return\n\n const safeSvg = toSafeSvgMarkup(extractRenderedSvg(renderResult))\n if (!safeSvg)\n throw new Error('D2 render returned empty output.')\n\n this.svgMarkup = safeSvg\n this.syncSvgHost()\n }\n catch (error) {\n if (this.destroyed || token !== this.renderToken)\n return\n this.svgMarkup = ''\n this.showSource = true\n this.error = error instanceof Error ? error.message : 'Failed to render D2 diagram.'\n this.syncSvgHost()\n }\n finally {\n if (token === this.renderToken) {\n this.rendering = false\n this.cdr.markForCheck()\n }\n }\n }\n\n private syncSvgHost() {\n setElementHtml(this.previewHost?.nativeElement, this.svgMarkup)\n }\n\n private scheduleHostSync() {\n if (typeof window !== 'undefined') {\n window.setTimeout(() => {\n if (this.destroyed)\n return\n this.syncSvgHost()\n this.cdr.markForCheck()\n }, 0)\n return\n }\n queueMicrotask(() => this.syncSvgHost())\n }\n}\n\nfunction createD2Instance(D2Ctor: any) {\n if (typeof D2Ctor === 'function') {\n const instance = new D2Ctor()\n if (instance && typeof instance.compile === 'function')\n return instance\n if (typeof D2Ctor.compile === 'function')\n return D2Ctor\n }\n\n if (D2Ctor?.D2 && typeof D2Ctor.D2 === 'function')\n return new D2Ctor.D2()\n\n if (typeof D2Ctor?.compile === 'function')\n return D2Ctor\n\n return null\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-definition-list-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <dl>\n <ng-container *ngFor=\"let item of items; let idx = index; trackBy: trackByIndex\">\n <dt>\n <markstream-angular-nested-renderer\n [nodes]=\"termFor(item)\"\n [context]=\"context\"\n [indexPrefix]=\"itemPrefix(idx, 'term')\"\n />\n </dt>\n <dd>\n <markstream-angular-nested-renderer\n [nodes]=\"definitionFor(item)\"\n [context]=\"context\"\n [indexPrefix]=\"itemPrefix(idx, 'definition')\"\n />\n </dd>\n </ng-container>\n </dl>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefinitionListNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get items() {\n return getNodeList((this.node as any)?.items)\n }\n\n termFor(item: AngularRenderableNode) {\n return getNodeList((item as any)?.term)\n }\n\n definitionFor(item: AngularRenderableNode) {\n return getNodeList((item as any)?.definition)\n }\n\n trackByIndex = (index: number) => {\n return `${this.indexKey || 'definition-list'}-${index}`\n }\n\n itemPrefix(index: number, part: string) {\n return `${this.indexKey || 'definition-list'}-${index}-${part}`\n }\n}\n","import type { ComponentRef, OnChanges, OnDestroy, SimpleChanges, Type } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core'\n\n@Component({\n selector: 'markstream-angular-dynamic-node-host',\n standalone: true,\n template: '<ng-template #container></ng-template>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DynamicNodeHostComponent implements OnChanges, OnDestroy {\n @Input() component?: Type<any> | null\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n @Input() inputs?: Record<string, unknown> | null\n\n @ViewChild('container', { read: ViewContainerRef, static: true })\n private containerRef?: ViewContainerRef\n\n private componentRef: ComponentRef<any> | null = null\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.containerRef)\n return\n\n if (changes.component)\n this.mountComponent()\n\n this.applyInputs()\n }\n\n ngOnDestroy() {\n this.componentRef?.destroy()\n this.componentRef = null\n }\n\n private mountComponent() {\n this.containerRef?.clear()\n this.componentRef?.destroy()\n this.componentRef = null\n\n if (!this.component || !this.containerRef)\n return\n\n this.componentRef = this.containerRef.createComponent(this.component)\n }\n\n private applyInputs() {\n const componentRef = this.componentRef\n const instance = componentRef?.instance\n if (!instance || !componentRef)\n return\n\n const setValue = (key: string, value: unknown) => {\n if (this.hasDeclaredInput(componentRef, key)) {\n try {\n componentRef.setInput(key, value)\n }\n catch {\n // Fall back to direct instance assignment for edge-case compiled components.\n }\n }\n\n instance[key] = value\n }\n\n setValue('node', this.node)\n setValue('nodes', Array.isArray((this.node as any)?.children) ? (this.node as any).children : undefined)\n setValue('content', typeof (this.node as any)?.content === 'string' ? (this.node as any).content : undefined)\n setValue('loading', (this.node as any)?.loading)\n setValue('final', typeof (this.node as any)?.loading === 'boolean' ? !(this.node as any).loading : this.context?.final)\n setValue('context', this.context)\n setValue('ctx', this.context)\n setValue('customId', this.context?.customId)\n setValue('customHtmlTags', this.context?.customHtmlTags)\n setValue('parseOptions', this.context?.parseOptions)\n setValue('customMarkdownIt', this.context?.customMarkdownIt)\n setValue('isDark', this.context?.isDark)\n setValue('indexKey', this.indexKey)\n setValue('typewriter', this.context?.typewriter)\n setValue('fade', this.context?.fade)\n setValue('showTooltips', this.context?.showTooltips)\n setValue('codeBlockStream', this.context?.codeBlockStream)\n setValue('renderCodeBlocksAsPre', this.context?.renderCodeBlocksAsPre)\n setValue('codeBlockProps', this.context?.codeBlockProps)\n setValue('mermaidProps', this.context?.mermaidProps)\n setValue('d2Props', this.context?.d2Props)\n setValue('infographicProps', this.context?.infographicProps)\n\n if (this.inputs) {\n for (const [key, value] of Object.entries(this.inputs))\n setValue(key, value)\n }\n\n componentRef.changeDetectorRef.detectChanges()\n }\n\n private hasDeclaredInput(componentRef: ComponentRef<any>, key: string) {\n const inputMap = (componentRef.componentType as any)?.ɵcmp?.inputs\n if (!inputMap || typeof inputMap !== 'object')\n return false\n\n if (key in inputMap)\n return true\n\n return Object.values(inputMap).includes(key)\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-emoji-node',\n standalone: true,\n template: '<span class=\"markstream-angular-emoji\">{{ text }}</span>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmojiNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get text() {\n return getString((this.node as any)?.raw || (this.node as any)?.markup || (this.node as any)?.content || (this.node as any)?.name)\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-emphasis-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <em>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </em>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmphasisNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'emphasis'}-em`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport {\n escapeHtml,\n getNodeList,\n getString,\n sanitizeClassToken,\n} from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-fallback-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <div\n class=\"markstream-nested-custom\"\n [class]=\"customClassName\"\n [attr.data-markstream-custom-tag]=\"customTag\"\n >\n <markstream-angular-nested-renderer\n *ngIf=\"hasNestedContent; else fallbackBody\"\n [node]=\"node\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n [final]=\"resolvedFinal\"\n [customHtmlTags]=\"context?.customHtmlTags\"\n [parseOptions]=\"context?.parseOptions\"\n [customMarkdownIt]=\"context?.customMarkdownIt\"\n />\n\n <ng-template #fallbackBody>\n <div [innerHTML]=\"rawBodyHtml\"></div>\n </ng-template>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FallbackComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get hasChildren() {\n return this.children.length > 0\n }\n\n get hasNestedContent() {\n return this.hasChildren || !!getString((this.node as any)?.content)\n }\n\n get customTag() {\n return getString((this.node as any)?.tag || (this.node as any)?.type)\n }\n\n get customClassName() {\n const tag = sanitizeClassToken(this.customTag) || 'node'\n return `markstream-nested-custom--${tag}`\n }\n\n get rawBodyHtml() {\n return escapeHtml(getString((this.node as any)?.raw))\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'fallback'}-children`\n }\n\n get resolvedFinal() {\n if (typeof (this.node as any)?.loading === 'boolean')\n return !(this.node as any).loading\n return this.context?.final\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-footnote-anchor-node',\n standalone: true,\n template: `\n <a\n class=\"footnote-anchor text-sm text-[#0366d6] hover:underline cursor-pointer\"\n [attr.href]=\"href\"\n [attr.title]=\"title\"\n >\n ↩︎\n </a>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FootnoteAnchorNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get id() {\n return getString((this.node as any)?.id)\n }\n\n get href() {\n return `#fnref-${this.id}`\n }\n\n get title() {\n return `Back to reference ${this.id}`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList, getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-footnote-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <div [attr.id]=\"footnoteId\" class=\"markstream-nested-footnote\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FootnoteNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get footnoteId() {\n return `fnref--${getString((this.node as any)?.id)}`\n }\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'footnote'}-children`\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-footnote-reference-node',\n standalone: true,\n template: `\n <sup [attr.id]=\"referenceId\" class=\"markstream-nested-footnote-ref\">\n <a [attr.href]=\"href\">[{{ id }}]</a>\n </sup>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FootnoteReferenceNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get id() {\n return getString((this.node as any)?.id)\n }\n\n get href() {\n return `#fnref--${this.id}`\n }\n\n get referenceId() {\n return `fnref-${this.id}`\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'markstream-angular-hardbreak-node',\n standalone: true,\n template: '<br>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HardBreakNodeComponent {}\n","import type { OnChanges } from '@angular/core'\nimport { Directive, ElementRef, inject, Input, Renderer2 } from '@angular/core'\nimport { isSafeAttrName } from './node-helpers'\n\n@Directive({\n selector: '[markstreamSafeAttrs]',\n standalone: true,\n})\nexport class SafeAttrsDirective implements OnChanges {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n private readonly renderer = inject(Renderer2)\n private readonly appliedAttrs = new Set<string>()\n private readonly appliedClasses = new Set<string>()\n private readonly appliedStyles = new Set<string>()\n\n @Input() markstreamSafeAttrs?: Record<string, unknown> | null\n\n ngOnChanges() {\n this.clearAppliedState()\n\n const attrs = this.markstreamSafeAttrs\n if (!attrs)\n return\n\n for (const [name, rawValue] of Object.entries(attrs)) {\n if (!isSafeAttrName(name))\n continue\n if (name === 'class' || name === 'className') {\n for (const token of String(rawValue || '').split(/\\s+/g).map(item => item.trim()).filter(Boolean)) {\n this.renderer.addClass(this.elementRef.nativeElement, token)\n this.appliedClasses.add(token)\n }\n continue\n }\n if (name === 'style' && rawValue && typeof rawValue === 'object') {\n for (const [styleName, styleValue] of Object.entries(rawValue as Record<string, unknown>)) {\n this.renderer.setStyle(this.elementRef.nativeElement, styleName, styleValue as any)\n this.appliedStyles.add(styleName)\n }\n continue\n }\n\n if (rawValue === false || rawValue == null)\n continue\n\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n name,\n rawValue === true ? '' : String(rawValue),\n )\n this.appliedAttrs.add(name)\n }\n }\n\n private clearAppliedState() {\n for (const name of this.appliedAttrs)\n this.renderer.removeAttribute(this.elementRef.nativeElement, name)\n for (const token of this.appliedClasses)\n this.renderer.removeClass(this.elementRef.nativeElement, token)\n for (const name of this.appliedStyles)\n this.renderer.removeStyle(this.elementRef.nativeElement, name)\n\n this.appliedAttrs.clear()\n this.appliedClasses.clear()\n this.appliedStyles.clear()\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { clampHeadingLevel, getNodeList } from '../shared/node-helpers'\nimport { SafeAttrsDirective } from '../shared/safe-attrs.directive'\n\n@Component({\n selector: 'markstream-angular-heading-node',\n standalone: true,\n imports: [CommonModule, SafeAttrsDirective, forwardRef(() => NestedRendererComponent)],\n template: `\n <h1 *ngIf=\"level === 1\" dir=\"auto\" class=\"heading-node heading-1\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h1>\n <h2 *ngIf=\"level === 2\" dir=\"auto\" class=\"heading-node heading-2\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h2>\n <h3 *ngIf=\"level === 3\" dir=\"auto\" class=\"heading-node heading-3\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h3>\n <h4 *ngIf=\"level === 4\" dir=\"auto\" class=\"heading-node heading-4\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h4>\n <h5 *ngIf=\"level === 5\" dir=\"auto\" class=\"heading-node heading-5\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h5>\n <h6 *ngIf=\"level === 6\" dir=\"auto\" class=\"heading-node heading-6\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h6>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeadingNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get level() {\n return clampHeadingLevel((this.node as any)?.level)\n }\n\n get attrs() {\n const raw = (this.node as any)?.attrs\n return raw && typeof raw === 'object' ? raw : null\n }\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'heading'}-${this.level}`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-highlight-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <mark>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </mark>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HighlightNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'highlight'}-highlight`\n }\n}\n","import type { HtmlPolicy } from 'stream-markdown-parser'\nimport {\n BLOCKED_HTML_TAGS as BLOCKED_TAGS,\n isHtmlTagBlocked,\n isHtmlTagHardBlocked,\n sanitizeHtmlAttrs,\n VOID_HTML_TAGS as VOID_ELEMENTS,\n} from 'stream-markdown-parser'\nimport { escapeAttr, escapeHtml } from './components/shared/node-helpers'\n\ninterface HtmlToken {\n type: 'text' | 'tag_open' | 'tag_close' | 'self_closing'\n tagName?: string\n attrs?: Record<string, string>\n content?: string\n}\n\nfunction sanitizeAttrs(attrs: Record<string, string>, policy: HtmlPolicy, tagName?: string): Record<string, string> {\n return sanitizeHtmlAttrs(attrs, policy, tagName)\n}\n\nfunction tokenizeHtml(html: string): HtmlToken[] {\n const tokens: HtmlToken[] = []\n let pos = 0\n\n while (pos < html.length) {\n if (html.startsWith('<!--', pos)) {\n const commentEnd = html.indexOf('-->', pos)\n if (commentEnd !== -1) {\n pos = commentEnd + 3\n continue\n }\n break\n }\n\n const tagStart = html.indexOf('<', pos)\n if (tagStart === -1) {\n if (pos < html.length)\n tokens.push({ type: 'text', content: html.slice(pos) })\n break\n }\n\n if (tagStart > pos)\n tokens.push({ type: 'text', content: html.slice(pos, tagStart) })\n\n if (html.startsWith('![CDATA[', tagStart + 1)) {\n const cdataEnd = html.indexOf(']]>', tagStart)\n if (cdataEnd !== -1) {\n tokens.push({ type: 'text', content: html.slice(tagStart, cdataEnd + 3) })\n pos = cdataEnd + 3\n continue\n }\n break\n }\n\n if (html.startsWith('!', tagStart + 1)) {\n const specialEnd = html.indexOf('>', tagStart)\n if (specialEnd !== -1) {\n pos = specialEnd + 1\n continue\n }\n break\n }\n\n const tagEnd = html.indexOf('>', tagStart)\n if (tagEnd === -1)\n break\n\n const tagContent = html.slice(tagStart + 1, tagEnd).trim()\n if (!tagContent) {\n pos = tagEnd + 1\n continue\n }\n\n const isClosingTag = tagContent.startsWith('/')\n const isSelfClosing = tagContent.endsWith('/')\n\n if (isClosingTag) {\n const tagName = tagContent.slice(1).trim()\n tokens.push({ type: 'tag_close', tagName })\n pos = tagEnd + 1\n continue\n }\n\n const spaceIndex = tagContent.indexOf(' ')\n let tagName = ''\n let attrsStr = ''\n if (spaceIndex === -1) {\n tagName = isSelfClosing ? tagContent.slice(0, -1).trim() : tagContent.trim()\n }\n else {\n tagName = tagContent.slice(0, spaceIndex).trim()\n attrsStr = tagContent.slice(spaceIndex + 1)\n }\n\n const attrs: Record<string, string> = {}\n if (attrsStr) {\n const attrRegex = /([^\\s=]+)(?:=(?:\"([^\"]*)\"|'([^']*)'|(\\S*)))?/g\n let attrMatch: RegExpExecArray | null\n while ((attrMatch = attrRegex.exec(attrsStr)) !== null) {\n const name = attrMatch[1]\n const value = attrMatch[2] ?? attrMatch[3] ?? attrMatch[4] ?? ''\n if (name && !name.endsWith('/'))\n attrs[name] = value\n }\n }\n\n tokens.push({\n type: isSelfClosing || VOID_ELEMENTS.has(tagName.toLowerCase()) ? 'self_closing' : 'tag_open',\n tagName,\n attrs,\n })\n\n pos = tagEnd + 1\n }\n\n return tokens\n}\n\nfunction normalizeTagName(tagName: string | undefined): string {\n return String(tagName ?? '').trim().toLowerCase()\n}\n\nfunction serializeAttrs(attrs: Record<string, string>): string {\n const pairs = Object.entries(attrs)\n if (pairs.length === 0)\n return ''\n\n return pairs\n .map(([name, value]) => value === '' ? ` ${name}` : ` ${name}=\"${escapeAttr(value)}\"`)\n .join('')\n}\n\nfunction serializeLiteralHtmlTag(token: HtmlToken) {\n const tagName = String(token.tagName ?? '').trim()\n if (!tagName)\n return ''\n\n if (token.type === 'tag_close')\n return `&lt;/${escapeHtml(tagName)}&gt;`\n\n const attrs = Object.entries(token.attrs ?? {})\n .map(([name, value]) => value === '' ? ` ${escapeHtml(name)}` : ` ${escapeHtml(name)}=\"${escapeAttr(value)}\"`)\n .join('')\n\n return token.type === 'self_closing'\n ? `&lt;${escapeHtml(tagName)}${attrs} /&gt;`\n : `&lt;${escapeHtml(tagName)}${attrs}&gt;`\n}\n\nexport function sanitizeHtmlContent(content: string, policy: HtmlPolicy = 'safe'): string {\n if (!content)\n return ''\n\n if (policy === 'escape')\n return escapeHtml(content)\n\n const tokens = tokenizeHtml(content)\n const stack: string[] = []\n const output: string[] = []\n let blockedDepth = 0\n\n for (const token of tokens) {\n if (token.type === 'text') {\n if (blockedDepth === 0)\n output.push(escapeHtml(token.content ?? ''))\n continue\n }\n\n const tagName = normalizeTagName(token.tagName)\n if (!tagName)\n continue\n\n if (BLOCKED_TAGS.has(tagName) || isHtmlTagHardBlocked(tagName, policy)) {\n if (token.type === 'tag_open')\n blockedDepth += 1\n else if (token.type === 'tag_close' && blockedDepth > 0)\n blockedDepth -= 1\n continue\n }\n\n if (blockedDepth > 0)\n continue\n\n if (policy === 'safe' && isHtmlTagBlocked(tagName, policy)) {\n output.push(serializeLiteralHtmlTag(token))\n continue\n }\n\n if (token.type === 'self_closing') {\n output.push(`<${tagName}${serializeAttrs(sanitizeAttrs(token.attrs ?? {}, policy, tagName))}>`)\n continue\n }\n\n if (token.type === 'tag_open') {\n output.push(`<${tagName}${serializeAttrs(sanitizeAttrs(token.attrs ?? {}, policy, tagName))}>`)\n if (!VOID_ELEMENTS.has(tagName))\n stack.push(tagName)\n continue\n }\n\n const matchedIndex = stack.lastIndexOf(tagName)\n if (matchedIndex === -1)\n continue\n\n while (stack.length > matchedIndex + 1) {\n const danglingTag = stack.pop()\n if (danglingTag)\n output.push(`</${danglingTag}>`)\n }\n\n const closingTag = stack.pop()\n if (closingTag)\n output.push(`</${closingTag}>`)\n }\n\n while (stack.length > 0) {\n const danglingTag = stack.pop()\n if (danglingTag)\n output.push(`</${danglingTag}>`)\n }\n\n return output.join('')\n}\n","import type { BaseNode, CustomComponentAttrs, HtmlPolicy, ParsedNode, ParseOptions } from 'stream-markdown-parser'\nimport {\n getMarkdown,\n isHtmlTagBlocked,\n isUnsafeHtmlUrl,\n NON_STRUCTURING_HTML_TAGS,\n normalizeCustomHtmlTagName,\n normalizeCustomHtmlTags,\n parseMarkdownToStructure,\n sanitizeHtmlAttrs,\n sanitizeImageSrc,\n shouldOpenLinkInNewTab,\n} from 'stream-markdown-parser'\nimport { hydrateCustomTagContent } from './hydrateCustomTagContent'\nimport { sanitizeHtmlContent } from './sanitizeHtmlContent'\n\nexport type RenderableMarkdownNode = (ParsedNode | BaseNode) & Record<string, unknown>\n\ntype NestedClassValue = string | readonly string[] | null | undefined\n\nexport interface MarkstreamAngularRenderOptions {\n content?: string | null\n nodes?: readonly RenderableMarkdownNode[] | null\n final?: boolean\n parseOptions?: ParseOptions\n customHtmlTags?: readonly string[]\n allowHtml?: boolean\n htmlPolicy?: HtmlPolicy\n}\n\nexport interface NestedMarkdownHtmlOptions {\n cacheKey?: string\n customHtmlTags?: readonly string[]\n allowHtml?: boolean\n htmlPolicy?: HtmlPolicy\n customNodeTag?: string\n customNodeClass?: NestedClassValue | ((node: RenderableMarkdownNode) => NestedClassValue)\n}\n\nexport interface NestedMarkdownHtmlInput {\n node?: RenderableMarkdownNode | null\n nodes?: readonly RenderableMarkdownNode[] | null\n content?: string | null\n}\n\ninterface RenderContext {\n markdown: ReturnType<typeof getMarkdown>\n options: Required<Pick<NestedMarkdownHtmlOptions, 'allowHtml' | 'customNodeTag' | 'htmlPolicy'>> & Pick<NestedMarkdownHtmlOptions, 'customNodeClass'>\n}\n\nconst DEFAULT_CACHE_KEY = 'markstream-angular-html'\nconst DEFAULT_CUSTOM_NODE_TAG = 'div'\nconst markdownCache = new Map<string, ReturnType<typeof getMarkdown>>()\nconst KNOWN_NODE_TYPES = new Set([\n 'admonition',\n 'blockquote',\n 'checkbox',\n 'checkbox_input',\n 'code_block',\n 'definition_item',\n 'definition_list',\n 'emoji',\n 'emphasis',\n 'footnote',\n 'footnote_reference',\n 'hardbreak',\n 'heading',\n 'highlight',\n 'html_block',\n 'html_inline',\n 'image',\n 'inline_code',\n 'insert',\n 'link',\n 'list',\n 'list_item',\n 'math_block',\n 'math_inline',\n 'paragraph',\n 'reference',\n 'strikethrough',\n 'strong',\n 'subscript',\n 'superscript',\n 'table',\n 'table_cell',\n 'table_row',\n 'text',\n 'thematic_break',\n])\n\nexport function renderMarkdownToHtml(input: MarkstreamAngularRenderOptions): string {\n const normalizedTags = normalizeCustomHtmlTags([\n ...(input.customHtmlTags || []),\n ...(input.parseOptions?.customHtmlTags || []),\n ])\n const ctx = createRenderContext({\n allowHtml: input.allowHtml,\n customHtmlTags: normalizedTags,\n htmlPolicy: input.htmlPolicy,\n })\n const nodes = resolveParsedNodes(input, ctx)\n return renderNodesToHtml(nodes, ctx)\n}\n\nexport function renderNestedMarkdownToHtml(\n input: NestedMarkdownHtmlInput,\n options: NestedMarkdownHtmlOptions = {},\n): string {\n const ctx = createRenderContext(options)\n return renderNestedInputToHtml(input, ctx)\n}\n\nexport function renderMarkdownNodesToHtml(\n nodes: readonly RenderableMarkdownNode[] | null | undefined,\n options: NestedMarkdownHtmlOptions = {},\n): string {\n const ctx = createRenderContext(options)\n return renderNodesToHtml(nodes, ctx)\n}\n\nexport function renderMarkdownNodeToHtml(\n node: RenderableMarkdownNode | null | undefined,\n options: NestedMarkdownHtmlOptions = {},\n): string {\n const ctx = createRenderContext(options)\n return renderNodeToHtml(node, ctx)\n}\n\nfunction resolveParsedNodes(input: MarkstreamAngularRenderOptions, ctx: RenderContext) {\n if (Array.isArray(input.nodes))\n return input.nodes\n\n const content = getString(input.content)\n if (!content)\n return []\n\n const normalizedTags = normalizeCustomHtmlTags([\n ...(input.customHtmlTags || []),\n ...(input.parseOptions?.customHtmlTags || []),\n ])\n const mergedParseOptions: ParseOptions = {\n ...(input.parseOptions ?? {}),\n }\n if (typeof input.final === 'boolean')\n mergedParseOptions.final = input.final\n if (normalizedTags.length > 0)\n mergedParseOptions.customHtmlTags = normalizedTags\n\n return hydrateCustomTagContent(\n parseMarkdownToStructure(content, ctx.markdown, mergedParseOptions) as RenderableMarkdownNode[],\n content,\n normalizedTags,\n )\n}\n\nfunction createRenderContext(options: NestedMarkdownHtmlOptions): RenderContext {\n const normalizedTags = normalizeCustomHtmlTags(options.customHtmlTags)\n const cacheKey = `${options.cacheKey || DEFAULT_CACHE_KEY}::${normalizedTags.join(',')}`\n let markdown = markdownCache.get(cacheKey)\n\n if (!markdown) {\n markdown = getMarkdown(cacheKey, {\n customHtmlTags: normalizedTags,\n })\n markdownCache.set(cacheKey, markdown)\n }\n\n return {\n markdown,\n options: {\n allowHtml: options.allowHtml !== false,\n htmlPolicy: options.htmlPolicy ?? 'safe',\n customNodeTag: normalizeCustomHtmlTagName(options.customNodeTag) || DEFAULT_CUSTOM_NODE_TAG,\n customNodeClass: options.customNodeClass,\n },\n }\n}\n\nfunction renderNestedInputToHtml(input: NestedMarkdownHtmlInput, ctx: RenderContext): string {\n if (Array.isArray(input.nodes) && input.nodes.length > 0)\n return renderNodesToHtml(input.nodes, ctx)\n\n const node = input.node\n if (node) {\n const children = getNodeList(node.children)\n if (children.length > 0)\n return renderNodesToHtml(children, ctx)\n\n const content = getString(node.content)\n if (content)\n return renderMarkdownFragment(content, ctx)\n\n if (node.raw != null)\n return escapeHtml(getString(node.raw))\n }\n\n return input.content ? renderMarkdownFragment(getString(input.content), ctx) : ''\n}\n\nfunction renderNodesToHtml(nodes: readonly RenderableMarkdownNode[] | null | undefined, ctx: RenderContext): string {\n return (Array.isArray(nodes) ? nodes : []).map(node => renderNodeToHtml(node, ctx)).join('')\n}\n\nfunction renderNodeToHtml(node: RenderableMarkdownNode | null | undefined, ctx: RenderContext): string {\n if (!node || typeof node !== 'object')\n return ''\n\n switch (node.type) {\n case 'text':\n return renderTextNode(node)\n case 'paragraph':\n return `<p>${renderNodesToHtml(getNodeList(node.children), ctx)}</p>`\n case 'strong':\n return `<strong>${renderNodesToHtml(getNodeList(node.children), ctx)}</strong>`\n case 'emphasis':\n return `<em>${renderNodesToHtml(getNodeList(node.children), ctx)}</em>`\n case 'strikethrough':\n return `<del>${renderNodesToHtml(getNodeList(node.children), ctx)}</del>`\n case 'highlight':\n return `<mark>${renderNodesToHtml(getNodeList(node.children), ctx)}</mark>`\n case 'insert':\n return `<ins>${renderNodesToHtml(getNodeList(node.children), ctx)}</ins>`\n case 'subscript':\n return `<sub>${renderNodesToHtml(getNodeList(node.children), ctx)}</sub>`\n case 'superscript':\n return `<sup>${renderNodesToHtml(getNodeList(node.children), ctx)}</sup>`\n case 'inline_code':\n return `<code>${escapeHtml(getString(node.code))}</code>`\n case 'hardbreak':\n return '<br>'\n case 'link':\n return renderLinkNode(node, ctx)\n case 'image':\n return renderImageNode(node)\n case 'list':\n return renderListNode(node, ctx)\n case 'list_item':\n return `<li>${renderNodesToHtml(getNodeList(node.children), ctx)}</li>`\n case 'blockquote':\n return `<blockquote>${renderNodesToHtml(getNodeList(node.children), ctx)}</blockquote>`\n case 'heading':\n return renderHeadingNode(node, ctx)\n case 'code_block':\n return renderCodeBlockNode(node)\n case 'thematic_break':\n return '<hr>'\n case 'table':\n return renderTableNode(node, ctx)\n case 'table_row':\n return renderTableRowNode(node, ctx)\n case 'table_cell':\n return renderTableCellNode(node, ctx)\n case 'definition_list':\n return renderDefinitionListNode(node, ctx)\n case 'definition_item':\n return renderDefinitionItemNode(node, ctx)\n case 'footnote':\n return renderFootnoteNode(node, ctx)\n case 'footnote_reference':\n return renderFootnoteReferenceNode(node)\n case 'admonition':\n return renderAdmonitionNode(node, ctx)\n case 'checkbox':\n case 'checkbox_input':\n return `<input type=\"checkbox\" disabled${node.checked ? ' checked' : ''}>`\n case 'emoji':\n return escapeHtml(getString(node.raw || node.markup || node.content || node.name))\n case 'math_inline':\n return renderMathInlineNode(node)\n case 'math_block':\n return renderMathBlockNode(node)\n case 'reference':\n return `<span class=\"markstream-nested-reference\">${escapeHtml(getString(node.id))}</span>`\n case 'html_inline':\n case 'html_block':\n return renderHtmlNode(node, ctx)\n default:\n return renderCustomOrFallbackNode(node, ctx)\n }\n}\n\nfunction renderTextNode(node: RenderableMarkdownNode): string {\n const content = getString(node.content)\n const escaped = escapeHtml(content)\n const centered = !!node.center\n if (!centered && !content.includes('\\n'))\n return escaped\n\n const className = centered\n ? 'markstream-angular-text-node markstream-angular-text--centered'\n : 'markstream-angular-text-node'\n return `<span class=\"${className}\">${escaped}</span>`\n}\n\nfunction renderLinkNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const href = getString(node.href)\n const title = getString(node.title)\n const content = getNodeList(node.children).length > 0\n ? renderNodesToHtml(getNodeList(node.children), ctx)\n : escapeHtml(getString(node.text || href))\n const titleAttr = title ? ` title=\"${escapeAttr(title)}\"` : ''\n const safeHref = href && !isUnsafeHtmlUrl(href) ? href : ''\n const hrefAttr = safeHref ? ` href=\"${escapeAttr(safeHref)}\"` : ''\n const externalAttrs = shouldOpenLinkInNewTab(safeHref) ? ' target=\"_blank\" rel=\"noreferrer noopener\"' : ''\n return `<a${hrefAttr}${titleAttr}${externalAttrs}>${content}</a>`\n}\n\nfunction renderMathInlineNode(node: RenderableMarkdownNode) {\n const source = escapeHtml(getString(node.content || node.markup || node.raw))\n return `<span class=\"markstream-nested-math\" data-display=\"inline\"><span class=\"markstream-nested-math__source\">${source}</span><span class=\"markstream-nested-math__render\" aria-hidden=\"true\"></span></span>`\n}\n\nfunction renderMathBlockNode(node: RenderableMarkdownNode) {\n const source = escapeHtml(getString(node.content || node.markup || node.raw))\n return `<div class=\"markstream-nested-math-block\"><pre class=\"markstream-nested-math-block__source\"><code>${source}</code></pre><div class=\"markstream-nested-math-block__render\" aria-hidden=\"true\"></div></div>`\n}\n\nfunction renderImageNode(node: RenderableMarkdownNode): string {\n const src = sanitizeImageSrc(node.src)\n if (!src)\n return ''\n const alt = getString(node.alt)\n const title = getString(node.title)\n const titleAttr = title ? ` title=\"${escapeAttr(title)}\"` : ''\n return `<img src=\"${escapeAttr(src)}\" alt=\"${escapeAttr(alt)}\"${titleAttr}>`\n}\n\nfunction renderListNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const tag = node.ordered ? 'ol' : 'ul'\n const start = node.ordered && Number.isFinite(node.start) ? ` start=\"${Number(node.start)}\"` : ''\n return `<${tag}${start}>${renderNodesToHtml(getNodeList(node.items), ctx)}</${tag}>`\n}\n\nfunction renderHeadingNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const level = clampHeadingLevel(node.level)\n return `<h${level}>${renderNodesToHtml(getNodeList(node.children), ctx)}</h${level}>`\n}\n\nfunction renderCodeBlockNode(node: RenderableMarkdownNode): string {\n const rawLanguage = getString(node.language).trim()\n const language = sanitizeClassToken(rawLanguage)\n const languageClass = language ? ` class=\"language-${language}\"` : ''\n const diff = !!node.diff\n const blockAttrs = [\n 'data-markstream-code-block=\"1\"',\n rawLanguage ? `data-markstream-language=\"${escapeAttr(rawLanguage)}\"` : '',\n diff ? 'data-markstream-diff=\"1\"' : '',\n diff ? `data-markstream-original=\"${escapeAttr(encodeDataPayload(getString(node.originalCode)))}\"` : '',\n diff ? `data-markstream-updated=\"${escapeAttr(encodeDataPayload(getString(node.updatedCode)))}\"` : '',\n ].filter(Boolean).join(' ')\n\n return `<pre ${blockAttrs}><code${languageClass}>${escapeHtml(getString(node.code))}</code></pre>`\n}\n\nfunction renderTableNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const header = node.header ? renderTableRowNode(node.header as RenderableMarkdownNode, ctx, true) : ''\n const rows = renderNodesToHtml(getNodeList(node.rows), ctx)\n const thead = header ? `<thead>${header}</thead>` : ''\n const tbody = rows ? `<tbody>${rows}</tbody>` : ''\n return `<table>${thead}${tbody}</table>`\n}\n\nfunction renderTableRowNode(node: RenderableMarkdownNode, ctx: RenderContext, forceHeader = false): string {\n const cells = getNodeList(node.cells).map(cell => renderTableCellNode(cell, ctx, forceHeader)).join('')\n return `<tr>${cells}</tr>`\n}\n\nfunction renderTableCellNode(node: RenderableMarkdownNode, ctx: RenderContext, forceHeader = false): string {\n const tag = forceHeader || !!node.header ? 'th' : 'td'\n const align = getString(node.align)\n const alignAttr = align ? ` style=\"text-align:${escapeAttr(align)}\"` : ''\n return `<${tag}${alignAttr}>${renderNodesToHtml(getNodeList(node.children), ctx)}</${tag}>`\n}\n\nfunction renderDefinitionListNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n return `<dl>${getNodeList(node.items).map(item => renderDefinitionItemNode(item, ctx)).join('')}</dl>`\n}\n\nfunction renderDefinitionItemNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const term = renderNodesToHtml(getNodeList(node.term), ctx)\n const definition = renderNodesToHtml(getNodeList(node.definition), ctx)\n return `<dt>${term}</dt><dd>${definition}</dd>`\n}\n\nfunction renderFootnoteNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const id = escapeAttr(getString(node.id))\n return `<div id=\"fnref--${id}\" class=\"markstream-nested-footnote\">${renderNodesToHtml(getNodeList(node.children), ctx)}</div>`\n}\n\nfunction renderFootnoteReferenceNode(node: RenderableMarkdownNode): string {\n const id = escapeHtml(getString(node.id))\n const href = escapeAttr(getString(node.id))\n return `<sup class=\"markstream-nested-footnote-ref\"><a href=\"#fnref--${href}\">[${id}]</a></sup>`\n}\n\nfunction renderAdmonitionNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const kind = sanitizeClassToken(getString(node.kind || 'note')) || 'note'\n const title = getString(node.title) || capitalize(kind)\n return `<div class=\"markstream-nested-admonition markstream-nested-admonition--${kind}\"><div class=\"markstream-nested-admonition__title\">${escapeHtml(title)}</div><div class=\"markstream-nested-admonition__content\">${renderNodesToHtml(getNodeList(node.children), ctx)}</div></div>`\n}\n\nfunction renderHtmlNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const content = getString(node.content)\n const rawContent = content || getString(node.raw)\n const tag = getString(node.tag).trim().toLowerCase()\n const children = getNodeList(node.children)\n if (!ctx.options.allowHtml)\n return escapeHtml(rawContent)\n if (ctx.options.htmlPolicy === 'escape')\n return escapeHtml(rawContent)\n if (node.loading && !node.autoClosed)\n return escapeHtml(rawContent)\n if (tag && children.length > 0 && !NON_STRUCTURING_HTML_TAGS.has(tag) && !isHtmlTagBlocked(tag, ctx.options.htmlPolicy)) {\n const attrs = serializeAttrs(node.attrs as CustomComponentAttrs | undefined, '', ctx.options.htmlPolicy, tag)\n return `<${tag}${attrs}>${renderNodesToHtml(children, ctx)}</${tag}>`\n }\n return sanitizeHtmlContent(rawContent, ctx.options.htmlPolicy)\n}\n\nfunction renderCustomOrFallbackNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const tagName = getString(node.tag || node.type)\n if (!tagName || KNOWN_NODE_TYPES.has(tagName))\n return escapeHtml(getString(node.content || node.raw))\n\n const classes = [\n 'markstream-nested-custom',\n `markstream-nested-custom--${sanitizeClassToken(tagName) || 'node'}`,\n resolveCustomNodeClass(node, ctx.options.customNodeClass),\n ].filter(Boolean).join(' ')\n const attrs = serializeAttrs(node.attrs as CustomComponentAttrs | undefined, classes, ctx.options.htmlPolicy)\n const body = resolveCustomNodeBody(node, ctx)\n const wrapperTag = ctx.options.customNodeTag\n return `<${wrapperTag}${attrs} data-markstream-custom-tag=\"${escapeAttr(tagName)}\">${body}</${wrapperTag}>`\n}\n\nfunction resolveCustomNodeBody(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const children = getNodeList(node.children)\n if (children.length > 0)\n return renderNodesToHtml(children, ctx)\n\n const content = getString(node.content)\n if (content)\n return renderMarkdownFragment(content, ctx)\n\n return escapeHtml(getString(node.raw))\n}\n\nfunction renderMarkdownFragment(content: string, ctx: RenderContext): string {\n return content ? ctx.markdown.render(content) : ''\n}\n\nfunction resolveCustomNodeClass(\n node: RenderableMarkdownNode,\n customNodeClass?: NestedMarkdownHtmlOptions['customNodeClass'],\n): string {\n if (!customNodeClass)\n return ''\n const resolved = typeof customNodeClass === 'function'\n ? customNodeClass(node)\n : customNodeClass\n return serializeClassValue(resolved)\n}\n\nfunction serializeClassValue(value: NestedClassValue): string {\n if (Array.isArray(value))\n return value.map(item => serializeClassValue(item)).filter(Boolean).join(' ')\n return typeof value === 'string'\n ? value.trim()\n : ''\n}\n\nfunction serializeAttrs(\n attrs?: CustomComponentAttrs | null,\n extraClass = '',\n policy: HtmlPolicy = 'safe',\n tagName?: string,\n): string {\n const pairs = normalizeAttrs(attrs)\n const record: Record<string, string> = {}\n const mergedClasses = [extraClass]\n\n for (const [name, value] of pairs) {\n const safeName = String(name).trim()\n if (!safeName)\n continue\n if (safeName.toLowerCase() === 'class') {\n mergedClasses.push(String(value))\n continue\n }\n record[safeName] = value === true ? '' : String(value)\n }\n\n const rendered = Object.entries(sanitizeHtmlAttrs(record, policy, tagName))\n .map(([name, value]) => value === '' ? ` ${name}` : ` ${name}=\"${escapeAttr(String(value))}\"`)\n\n const className = mergedClasses.map(value => value.trim()).filter(Boolean).join(' ')\n if (className)\n rendered.unshift(` class=\"${escapeAttr(className)}\"`)\n return rendered.join('')\n}\n\nfunction normalizeAttrs(attrs?: CustomComponentAttrs | null): Array<[string, string | boolean]> {\n if (!attrs)\n return []\n\n if (Array.isArray(attrs)) {\n if (attrs.length === 0)\n return []\n const first = attrs[0]\n if (Array.isArray(first))\n return (attrs as [string, string][]).map(([name, value]) => [String(name), value])\n return (attrs as Array<{ name: string, value: string | boolean }>).map(item => [String(item.name), item.value])\n }\n\n return Object.entries(attrs).map(([name, value]) => [name, value])\n}\n\nfunction getNodeList(value: unknown): RenderableMarkdownNode[] {\n return Array.isArray(value)\n ? value.filter((item): item is RenderableMarkdownNode => !!item && typeof item === 'object')\n : []\n}\n\nfunction getString(value: unknown): string {\n return typeof value === 'string'\n ? value\n : value == null\n ? ''\n : String(value)\n}\n\nfunction sanitizeClassToken(value: string): string {\n return value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '')\n}\n\nfunction clampHeadingLevel(value: unknown): number {\n const level = Math.trunc(Number(value) || 1)\n return Math.min(6, Math.max(1, level))\n}\n\nfunction escapeHtml(value: unknown): string {\n return getString(value)\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;')\n}\n\nfunction escapeAttr(value: unknown): string {\n return escapeHtml(value).replace(/`/g, '&#96;')\n}\n\nfunction capitalize(value: string): string {\n return value ? `${value[0].toUpperCase()}${value.slice(1)}` : ''\n}\n\nfunction encodeDataPayload(value: string) {\n if (!value)\n return ''\n\n const globalBuffer = (globalThis as any)?.require?.('buffer')?.Buffer\n if (globalBuffer?.from)\n return globalBuffer.from(value, 'utf8').toString('base64')\n\n if (typeof TextEncoder !== 'undefined' && typeof globalThis.btoa === 'function') {\n const bytes = new TextEncoder().encode(value)\n let binary = ''\n for (const byte of bytes)\n binary += String.fromCharCode(byte)\n return globalThis.btoa(binary)\n }\n\n return ''\n}\n","import type { ElementRef } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core'\nimport { isHtmlTagBlocked, NON_STRUCTURING_HTML_TAGS } from 'stream-markdown-parser'\nimport { renderMarkdownNodeToHtml } from '../../renderMarkdownHtml'\nimport { sanitizeHtmlContent } from '../../sanitizeHtmlContent'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-html-block-node',\n standalone: true,\n template: '<div #containerRef class=\"html-block-node\"></div>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HtmlBlockNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @ViewChild('containerRef', { static: true }) private readonly containerRef?: ElementRef<HTMLElement>\n\n ngAfterViewInit() {\n this.commitContent()\n }\n\n ngOnChanges() {\n this.commitContent()\n }\n\n ngOnDestroy() {\n const container = this.containerRef?.nativeElement\n if (container)\n container.innerHTML = ''\n }\n\n private commitContent() {\n const container = this.containerRef?.nativeElement\n if (!container)\n return\n\n const content = getString((this.node as any)?.content)\n const tag = getString((this.node as any)?.tag).trim().toLowerCase()\n const children = Array.isArray((this.node as any)?.children) ? (this.node as any).children : []\n if (!content) {\n container.innerHTML = ''\n return\n }\n\n if (this.context?.allowHtml === false || ((this.node as any)?.loading && !(this.node as any)?.autoClosed)) {\n container.textContent = content\n return\n }\n\n const htmlPolicy = this.context?.htmlPolicy ?? 'safe'\n if (htmlPolicy === 'escape') {\n container.textContent = content\n return\n }\n\n if (tag && children.length > 0 && !NON_STRUCTURING_HTML_TAGS.has(tag) && !isHtmlTagBlocked(tag, htmlPolicy)) {\n container.innerHTML = renderMarkdownNodeToHtml(this.node, {\n allowHtml: this.context?.allowHtml,\n customHtmlTags: this.context?.customHtmlTags,\n htmlPolicy,\n })\n return\n }\n\n container.innerHTML = sanitizeHtmlContent(content, htmlPolicy)\n }\n}\n","import type { ElementRef } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core'\nimport { sanitizeHtmlContent } from '../../sanitizeHtmlContent'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-html-inline-node',\n standalone: true,\n template: '<span #containerRef class=\"html-inline-node\"></span>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HtmlInlineNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @ViewChild('containerRef', { static: true }) private readonly containerRef?: ElementRef<HTMLElement>\n\n ngAfterViewInit() {\n this.commitContent()\n }\n\n ngOnChanges() {\n this.commitContent()\n }\n\n ngOnDestroy() {\n const container = this.containerRef?.nativeElement\n if (container)\n container.innerHTML = ''\n }\n\n private commitContent() {\n const container = this.containerRef?.nativeElement\n if (!container)\n return\n\n const content = getString((this.node as any)?.content)\n if (!content) {\n container.innerHTML = ''\n return\n }\n\n const htmlPolicy = this.context?.htmlPolicy ?? 'safe'\n if (this.context?.allowHtml === false || htmlPolicy === 'escape' || ((this.node as any)?.loading && !(this.node as any)?.autoClosed)) {\n container.textContent = content\n return\n }\n\n container.innerHTML = sanitizeHtmlContent(content, htmlPolicy)\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { sanitizeImageSrc } from 'stream-markdown-parser'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-image-node',\n standalone: true,\n template: `\n @if (src) {\n <img\n class=\"image-node__img\"\n [attr.src]=\"src\"\n [attr.alt]=\"alt\"\n [attr.title]=\"title || null\"\n [attr.loading]=\"'lazy'\"\n decoding=\"async\"\n >\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get src() {\n return sanitizeImageSrc((this.node as any)?.src)\n }\n\n get alt() {\n return getString((this.node as any)?.alt)\n }\n\n get title() {\n return getString((this.node as any)?.title)\n }\n}\n","let infographicPromise: Promise<InfographicConstructor | null> | null = null\nlet infographicInstance: any = null\n\nexport interface InfographicInstance {\n render: (source: string) => unknown\n destroy?: () => unknown\n on?: (event: string, handler: (payload: unknown) => void) => unknown\n}\n\nexport interface InfographicConstructor {\n new (options: { container: HTMLElement, width?: string | number, height?: string | number }): InfographicInstance\n}\n\nexport async function getInfographic(): Promise<InfographicConstructor | null> {\n if (infographicInstance)\n return infographicInstance\n if (infographicPromise)\n return await infographicPromise\n\n infographicPromise = import('@antv/infographic')\n .then((mod) => {\n const defaultExport = (mod && (mod as any).default) ? (mod as any).default : mod\n\n let resolved = defaultExport\n\n if (typeof defaultExport === 'function' && defaultExport.prototype && defaultExport.prototype.render) {\n resolved = defaultExport\n }\n else if ((mod as any)?.Infographic) {\n resolved = (mod as any).Infographic\n }\n else if (defaultExport && defaultExport.Infographic) {\n resolved = defaultExport.Infographic\n }\n\n infographicInstance = resolved\n return resolved as InfographicConstructor\n })\n .catch((error) => {\n console.warn('[markstream-angular] Failed to load @antv/infographic', error)\n return null\n })\n\n return await infographicPromise\n}\n","export const MERMAID_PREVIEW_MIN_HEIGHT = 360\nexport const MERMAID_PREVIEW_MAX_HEIGHT = 500\nexport const INFOGRAPHIC_PREVIEW_MIN_HEIGHT = 360\nexport const INFOGRAPHIC_PREVIEW_MAX_HEIGHT = 500\n\nexport function parsePositiveNumber(value: unknown) {\n const numeric = typeof value === 'number' ? value : Number.parseFloat(String(value ?? ''))\n return Number.isFinite(numeric) && numeric > 0 ? numeric : null\n}\n\nexport function getMermaidDiagramKind(code: string) {\n for (const rawLine of code.split(/\\r?\\n/)) {\n const line = rawLine.trim()\n if (!line || line.startsWith('%%'))\n continue\n const match = line.match(/^([A-Z][\\w-]*)\\b/i)\n return match?.[1]?.toLowerCase() || ''\n }\n return ''\n}\n\nexport function estimateMermaidPreviewHeight(code: string) {\n const meaningfulLines = code\n .split(/\\r?\\n/)\n .map(line => line.trim())\n .filter(line => line && !line.startsWith('%%'))\n const lineCount = Math.max(1, meaningfulLines.length)\n const kind = getMermaidDiagramKind(code)\n\n if (kind === 'gantt')\n return 220 + lineCount * 28\n if (kind === 'sequencediagram')\n return 180 + lineCount * 26\n if (kind === 'classdiagram' || kind === 'statediagram' || kind === 'erdiagram')\n return 180 + lineCount * 24\n if (kind === 'flowchart' || kind === 'graph')\n return 170 + lineCount * 28\n return 200 + lineCount * 22\n}\n\nexport function estimateInfographicPreviewHeight(code: string) {\n const itemCount = code\n .split(/\\r?\\n/)\n .filter(line => /^\\s*-\\s+/.test(line))\n .length\n\n if (itemCount >= 3)\n return INFOGRAPHIC_PREVIEW_MAX_HEIGHT\n if (itemCount > 0)\n return 280 + itemCount * 60\n\n return INFOGRAPHIC_PREVIEW_MIN_HEIGHT\n}\n\nexport function clampPreviewHeight(\n height: number,\n minHeight = MERMAID_PREVIEW_MIN_HEIGHT,\n maxHeight: number | null = MERMAID_PREVIEW_MAX_HEIGHT,\n) {\n return maxHeight == null\n ? Math.max(minHeight, height)\n : Math.min(Math.max(minHeight, height), maxHeight)\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { getInfographic } from '../../optional/infographic'\nimport { clampPreviewHeight, estimateInfographicPreviewHeight, parsePositiveNumber } from '../shared/diagram-height'\nimport { getString } from '../shared/node-helpers'\nimport {\n clampNumber,\n clearElement,\n copyTextToClipboard,\n downloadSvgMarkup,\n resolveCssSize,\n setElementHtml,\n} from '../shared/rich-block-helpers'\n\n@Component({\n selector: 'markstream-angular-infographic-block-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n class=\"markstream-angular-enhanced-block markstream-angular-enhanced-block--infographic\"\n [attr.data-markstream-infographic]=\"'1'\"\n [attr.data-mode]=\"showSource ? 'source' : 'preview'\"\n >\n <div *ngIf=\"resolvedShowHeader\" class=\"markstream-angular-enhanced-block__header\">\n <div class=\"flex items-center gap-2 min-w-0\">\n <span class=\"markstream-angular-enhanced-block__badge\">Infographic</span>\n <span class=\"mermaid-title__text truncate\">Diagram</span>\n </div>\n\n <div class=\"markstream-angular-enhanced-block__actions\">\n <button\n *ngIf=\"resolvedShowModeToggle\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action mode-btn\"\n [class.is-active]=\"!showSource\"\n (click)=\"setMode(false)\"\n >\n Preview\n </button>\n <button\n *ngIf=\"resolvedShowModeToggle\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action mode-btn\"\n [class.is-active]=\"showSource\"\n (click)=\"setMode(true)\"\n >\n Source\n </button>\n <button\n *ngIf=\"resolvedShowCopyButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action\"\n [attr.title]=\"tooltipFor(copied ? 'Copied' : 'Copy')\"\n (click)=\"copySource()\"\n >\n {{ copied ? 'Copied' : 'Copy' }}\n </button>\n <button\n *ngIf=\"resolvedShowExportButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action\"\n [disabled]=\"!svgMarkup\"\n [attr.title]=\"tooltipFor('Export SVG')\"\n (click)=\"exportSvg()\"\n >\n Export\n </button>\n <button\n *ngIf=\"resolvedShowFullscreenButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action\"\n [disabled]=\"!svgMarkup\"\n [attr.title]=\"tooltipFor('Fullscreen')\"\n (click)=\"openModal()\"\n >\n Fullscreen\n </button>\n <button\n *ngIf=\"resolvedShowCollapseButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action\"\n [attr.title]=\"tooltipFor(collapsed ? 'Expand' : 'Collapse')\"\n (click)=\"toggleCollapsed()\"\n >\n {{ collapsed ? 'Expand' : 'Collapse' }}\n </button>\n <ng-container *ngIf=\"resolvedShowZoomControls && modalOpen\">\n <button type=\"button\" class=\"markstream-angular-enhanced-block__action\" [attr.title]=\"tooltipFor('Zoom out')\" (click)=\"adjustZoom(-0.1)\">-</button>\n <button type=\"button\" class=\"markstream-angular-enhanced-block__action\" [attr.title]=\"tooltipFor('Reset zoom')\" (click)=\"resetZoom()\">100%</button>\n <button type=\"button\" class=\"markstream-angular-enhanced-block__action\" [attr.title]=\"tooltipFor('Zoom in')\" (click)=\"adjustZoom(0.1)\">+</button>\n </ng-container>\n </div>\n </div>\n\n <div\n *ngIf=\"!collapsed\"\n class=\"markstream-angular-enhanced-block__body\"\n [style.maxHeight]=\"resolvedMaxHeight\"\n >\n <div *ngIf=\"rendering && !showSource\" class=\"mermaid-loading\">\n <span class=\"mermaid-spinner\" aria-hidden=\"true\"></span>\n <span>Rendering infographic...</span>\n </div>\n\n <div\n *ngIf=\"!showSource\"\n #previewHost\n class=\"infographic-render\"\n [style.minHeight]=\"resolvedContainerMinHeight\"\n ></div>\n\n <pre *ngIf=\"showSource\" class=\"markstream-angular-enhanced-block__source\"><code translate=\"no\">{{ code }}</code></pre>\n\n <div *ngIf=\"error\" class=\"d2-error\">{{ error }}</div>\n </div>\n\n <span class=\"sr-only\" aria-live=\"polite\" role=\"status\">{{ copied ? 'Copied' : '' }}</span>\n </div>\n\n <div\n *ngIf=\"modalOpen\"\n class=\"mermaid-modal-overlay\"\n role=\"dialog\"\n aria-modal=\"true\"\n (click)=\"closeModal()\"\n >\n <div\n class=\"mermaid-modal-panel\"\n [class.is-dark]=\"resolvedIsDark\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"mermaid-modal-header\">\n <span class=\"mermaid-modal-title\">Infographic Preview</span>\n <button type=\"button\" class=\"mermaid-modal-close\" (click)=\"closeModal()\">Close</button>\n </div>\n <div class=\"mermaid-modal-body\">\n <div class=\"mermaid-modal-content\" [style.transform]=\"modalTransform\">\n <div #modalHost class=\"fullscreen\"></div>\n </div>\n </div>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InfographicBlockNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n\n @ViewChild('previewHost') private previewHost?: ElementRef<HTMLElement>\n @ViewChild('modalHost') private modalHost?: ElementRef<HTMLElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() props?: Record<string, any>\n\n rendering = false\n copied = false\n collapsed = false\n showSource = false\n modalOpen = false\n zoom = 1\n error = ''\n containerMinHeight = ''\n svgMarkup = ''\n\n private viewReady = false\n private destroyed = false\n private renderToken = 0\n private copyTimer: number | null = null\n private infographicInstance: any = null\n\n get mergedProps() {\n return {\n ...(this.context?.infographicProps || {}),\n ...(this.props || {}),\n }\n }\n\n get code() {\n return getString((this.node as any)?.code)\n }\n\n get resolvedIsDark() {\n if (typeof this.mergedProps.isDark === 'boolean')\n return this.mergedProps.isDark\n return this.context?.isDark === true\n }\n\n get resolvedShowHeader() {\n return this.mergedProps.showHeader !== false\n }\n\n get resolvedShowCopyButton() {\n return this.mergedProps.showCopyButton !== false\n }\n\n get resolvedShowCollapseButton() {\n return this.mergedProps.showCollapseButton !== false\n }\n\n get resolvedShowModeToggle() {\n return this.mergedProps.showModeToggle !== false\n }\n\n get resolvedShowExportButton() {\n return this.mergedProps.showExportButton !== false\n }\n\n get resolvedShowFullscreenButton() {\n return this.mergedProps.showFullscreenButton !== false\n }\n\n get resolvedShowZoomControls() {\n return this.mergedProps.showZoomControls !== false\n }\n\n get resolvedShowTooltips() {\n if (typeof this.mergedProps.showTooltips === 'boolean')\n return this.mergedProps.showTooltips\n return this.context?.showTooltips !== false\n }\n\n get resolvedMaxHeight() {\n return resolveCssSize(this.mergedProps.maxHeight, '500px')\n }\n\n get estimatedPreviewHeightPx() {\n return clampPreviewHeight(\n parsePositiveNumber(this.mergedProps.estimatedPreviewHeightPx) ?? estimateInfographicPreviewHeight(this.code),\n undefined,\n this.maxPreviewHeight,\n )\n }\n\n get resolvedContainerMinHeight() {\n return this.containerMinHeight || `${this.estimatedPreviewHeightPx}px`\n }\n\n private get maxPreviewHeight() {\n if (this.mergedProps.maxHeight == null || this.mergedProps.maxHeight === 'none')\n return this.mergedProps.maxHeight === 'none' ? null : 500\n return parsePositiveNumber(this.mergedProps.maxHeight) ?? 500\n }\n\n private resolveContainerMinHeight(actualHeight: number) {\n const boundedHeight = Math.max(actualHeight, this.estimatedPreviewHeightPx)\n const raw = this.mergedProps.maxHeight\n if (raw == null || raw === 'none')\n return `${boundedHeight}px`\n\n const maxHeight = this.maxPreviewHeight\n if (maxHeight == null)\n return `${boundedHeight}px`\n\n return `${Math.min(boundedHeight, maxHeight)}px`\n }\n\n get resolvedLoading() {\n if (typeof this.mergedProps.loading === 'boolean')\n return this.mergedProps.loading\n return (this.node as any)?.loading === true\n }\n\n get resolvedProgressiveRender() {\n return this.mergedProps.progressiveRender === true\n }\n\n get modalTransform() {\n return `scale(${this.zoom})`\n }\n\n ngAfterViewInit() {\n this.viewReady = true\n queueMicrotask(() => void this.renderInfographic())\n }\n\n ngOnChanges() {\n if (!this.viewReady)\n return\n this.containerMinHeight = ''\n queueMicrotask(() => void this.renderInfographic())\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.renderToken += 1\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n this.destroyInfographic()\n if (typeof document !== 'undefined')\n document.body.style.overflow = ''\n }\n\n @HostListener('window:keydown', ['$event'])\n handleWindowKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.modalOpen)\n this.closeModal()\n }\n\n tooltipFor(text: string) {\n return this.resolvedShowTooltips ? text : null\n }\n\n setMode(nextSource: boolean) {\n this.showSource = nextSource\n if (!nextSource)\n this.schedulePreviewSync()\n this.cdr.markForCheck()\n }\n\n async copySource() {\n await copyTextToClipboard(this.code)\n this.copied = true\n this.context?.events.onCopy?.(this.code)\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n if (typeof window !== 'undefined') {\n this.copyTimer = window.setTimeout(() => {\n this.copied = false\n this.cdr.markForCheck()\n }, 1000)\n }\n this.cdr.markForCheck()\n }\n\n exportSvg() {\n if (!this.svgMarkup)\n return\n downloadSvgMarkup(this.svgMarkup, `infographic-${Date.now()}.svg`)\n }\n\n openModal() {\n if (!this.svgMarkup)\n return\n this.modalOpen = true\n if (typeof document !== 'undefined')\n document.body.style.overflow = 'hidden'\n queueMicrotask(() => this.syncModalPreview())\n this.cdr.markForCheck()\n }\n\n closeModal() {\n this.modalOpen = false\n if (typeof document !== 'undefined')\n document.body.style.overflow = ''\n clearElement(this.modalHost?.nativeElement)\n this.cdr.markForCheck()\n }\n\n toggleCollapsed() {\n this.collapsed = !this.collapsed\n if (!this.collapsed)\n queueMicrotask(() => void this.renderInfographic())\n this.cdr.markForCheck()\n }\n\n adjustZoom(delta: number) {\n this.zoom = clampNumber(Number((this.zoom + delta).toFixed(2)), 0.4, 2.5)\n this.cdr.markForCheck()\n }\n\n resetZoom() {\n this.zoom = 1\n this.cdr.markForCheck()\n }\n\n private async renderInfographic() {\n if (this.destroyed || !this.viewReady || this.collapsed || this.showSource)\n return\n\n const source = this.code.trim()\n if (!source) {\n this.svgMarkup = ''\n clearElement(this.previewHost?.nativeElement)\n this.cdr.markForCheck()\n return\n }\n\n const host = this.previewHost?.nativeElement\n if (!host)\n return\n\n if (this.resolvedLoading && !this.resolvedProgressiveRender) {\n this.renderToken += 1\n this.rendering = true\n this.error = ''\n this.svgMarkup = ''\n clearElement(host)\n this.cdr.markForCheck()\n return\n }\n\n const token = ++this.renderToken\n this.rendering = true\n this.error = ''\n this.cdr.markForCheck()\n\n try {\n const InfographicClass = await getInfographic()\n if (!InfographicClass)\n throw new Error('Infographic renderer is not available.')\n if (this.destroyed || token !== this.renderToken)\n return\n\n this.destroyInfographic()\n clearElement(host)\n const instance = new InfographicClass({\n container: host,\n width: '100%',\n height: '100%',\n })\n this.infographicInstance = instance\n instance.render(source)\n\n if (this.destroyed || token !== this.renderToken)\n return\n\n const svg = host.querySelector('svg')\n this.svgMarkup = svg ? svg.outerHTML : ''\n const measuredHeight = host.scrollHeight\n if (measuredHeight > 0)\n this.containerMinHeight = this.resolveContainerMinHeight(measuredHeight)\n this.syncModalPreview()\n }\n catch (error) {\n if (this.destroyed || token !== this.renderToken)\n return\n this.destroyInfographic()\n this.svgMarkup = ''\n this.showSource = true\n this.error = error instanceof Error ? error.message : 'Failed to render infographic.'\n clearElement(host)\n }\n finally {\n if (token === this.renderToken) {\n this.rendering = false\n this.cdr.markForCheck()\n }\n }\n }\n\n private destroyInfographic() {\n try {\n this.infographicInstance?.destroy?.()\n }\n catch {\n // Best-effort cleanup.\n }\n this.infographicInstance = null\n }\n\n private syncModalPreview() {\n if (!this.modalOpen || !this.svgMarkup) {\n clearElement(this.modalHost?.nativeElement)\n return\n }\n setElementHtml(this.modalHost?.nativeElement, this.svgMarkup)\n }\n\n private schedulePreviewSync() {\n if (typeof window !== 'undefined') {\n window.setTimeout(() => {\n if (this.destroyed)\n return\n setElementHtml(this.previewHost?.nativeElement, this.svgMarkup)\n this.syncModalPreview()\n this.cdr.markForCheck()\n }, 0)\n return\n }\n queueMicrotask(() => {\n setElementHtml(this.previewHost?.nativeElement, this.svgMarkup)\n this.syncModalPreview()\n })\n }\n}\n","import type { OnChanges } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\ninterface StreamSegment {\n id: number\n content: string\n fading: boolean\n}\n\nfunction settleAndMergeSegments(segments: StreamSegment[], segmentId: number) {\n return segments.reduce<StreamSegment[]>((result, segment) => {\n const nextSegment = segment.id === segmentId\n ? { ...segment, fading: false }\n : segment\n const previousSegment = result[result.length - 1]\n if (previousSegment && !previousSegment.fading && !nextSegment.fading) {\n result[result.length - 1] = {\n ...previousSegment,\n content: previousSegment.content + nextSegment.content,\n }\n }\n else {\n result.push(nextSegment)\n }\n return result\n }, [])\n}\n\n@Component({\n selector: 'markstream-angular-inline-code-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <code>\n <span\n *ngFor=\"let segment of segments; trackBy: trackSegment\"\n [class]=\"segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''\"\n (animationend)=\"segment.fading && settleSegment(segment.id)\"\n >{{ segment.content }}</span>\n </code>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InlineCodeNodeComponent implements OnChanges {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n @Input() typewriter?: boolean\n @Input() fade?: boolean\n\n segments: StreamSegment[] = []\n private renderedCode = ''\n private nextSegmentId = 0\n\n ngOnChanges() {\n const nextCode = getString((this.node as any)?.code)\n const streamStateKey = getString(this.indexKey).trim()\n const textStreamState = this.context?.textStreamState\n const previousPersisted = streamStateKey\n ? textStreamState?.get(streamStateKey)\n : undefined\n const previousCode = previousPersisted ?? this.renderedCode\n const resumeFromPersistedCode = previousPersisted !== undefined\n && previousPersisted !== this.renderedCode\n\n if (!this.fadeEnabled) {\n this.setFullCode(nextCode)\n }\n else if (nextCode !== previousCode) {\n if (previousCode && nextCode.startsWith(previousCode)) {\n const appendedCode = nextCode.slice(previousCode.length)\n const lastSegment = this.segments[this.segments.length - 1]\n if (resumeFromPersistedCode) {\n this.segments = [\n { id: this.nextSegmentId++, content: previousCode, fading: false },\n { id: this.nextSegmentId++, content: appendedCode, fading: true },\n ]\n }\n else if (lastSegment?.fading) {\n this.segments = [\n ...this.segments.slice(0, -1),\n { ...lastSegment, content: lastSegment.content + appendedCode },\n ]\n }\n else {\n this.segments = [\n ...this.segments,\n { id: this.nextSegmentId++, content: appendedCode, fading: true },\n ]\n }\n }\n else {\n this.setFullCode(nextCode)\n }\n }\n\n this.renderedCode = nextCode\n if (streamStateKey)\n textStreamState?.set(streamStateKey, nextCode)\n }\n\n get settledCode() {\n return this.segments.filter(segment => !segment.fading).map(segment => segment.content).join('')\n }\n\n get streamedDelta() {\n return this.segments.filter(segment => segment.fading).map(segment => segment.content).join('')\n }\n\n streamedDeltaClass(segment: StreamSegment) {\n return segment.id % 2 === 0\n ? 'markstream-angular-text__stream-delta--a'\n : 'markstream-angular-text__stream-delta--b'\n }\n\n get fadeEnabled() {\n if (typeof this.fade === 'boolean')\n return this.fade\n if (typeof this.context?.fade === 'boolean')\n return this.context.fade\n return true\n }\n\n get typewriterEnabled() {\n if (typeof this.typewriter === 'boolean')\n return this.typewriter\n if (typeof this.context?.typewriter === 'boolean')\n return this.context.typewriter\n return false\n }\n\n trackSegment(_index: number, segment: StreamSegment) {\n return segment.id\n }\n\n settleSegment(segmentId: number) {\n if (!this.segments.some(segment => segment.id === segmentId && segment.fading))\n return\n this.segments = settleAndMergeSegments(this.segments, segmentId)\n }\n\n private setFullCode(content: string) {\n if (this.segments.length === 1 && !this.segments[0]?.fading && this.segments[0].content === content)\n return\n this.segments = content\n ? [{ id: this.nextSegmentId++, content, fading: false }]\n : []\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-insert-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <ins>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </ins>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InsertNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'insert'}-insert`\n }\n}\n","import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom'\n\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right'\n\nlet tooltipEl: HTMLDivElement | null = null\nlet currentAnchor: HTMLElement | null = null\nlet cleanupAutoUpdate: (() => void) | null = null\nlet showTimer: ReturnType<typeof setTimeout> | null = null\nlet hideTimer: ReturnType<typeof setTimeout> | null = null\nlet currentId: string | null = null\n\nfunction clearTimers() {\n if (showTimer) {\n clearTimeout(showTimer)\n showTimer = null\n }\n if (hideTimer) {\n clearTimeout(hideTimer)\n hideTimer = null\n }\n}\n\nfunction ensureTooltipEl() {\n if (tooltipEl || typeof document === 'undefined')\n return tooltipEl\n\n tooltipEl = document.createElement('div')\n tooltipEl.className = 'ms-tooltip'\n tooltipEl.setAttribute('role', 'tooltip')\n tooltipEl.dataset.visible = 'false'\n tooltipEl.style.position = 'fixed'\n tooltipEl.style.left = '0px'\n tooltipEl.style.top = '0px'\n tooltipEl.style.transform = 'translate3d(0,0,0)'\n document.body.appendChild(tooltipEl)\n return tooltipEl\n}\n\nfunction detectDarkModeHint(hint?: boolean | null) {\n if (typeof hint === 'boolean')\n return hint\n\n if (typeof document !== 'undefined') {\n try {\n if (document.documentElement.classList.contains('dark'))\n return true\n }\n catch {\n // Ignore classList failures on locked-down documents.\n }\n }\n\n if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {\n try {\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n }\n catch {\n // Ignore matchMedia failures in non-browser environments.\n }\n }\n\n return false\n}\n\nasync function updateTooltipPosition(placement: TooltipPlacement) {\n if (!tooltipEl || !currentAnchor)\n return\n\n const { x, y } = await computePosition(currentAnchor, tooltipEl, {\n placement,\n middleware: [offset(8), flip(), shift({ padding: 8 })],\n strategy: 'fixed',\n })\n\n tooltipEl.style.transform = `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`\n}\n\nexport function showTooltipForAnchor(\n anchor: HTMLElement | null,\n content: string,\n placement: TooltipPlacement = 'top',\n immediate = false,\n isDark?: boolean | null,\n) {\n if (!anchor || typeof document === 'undefined')\n return\n\n const element = ensureTooltipEl()\n if (!element)\n return\n\n clearTimers()\n const doShow = async () => {\n if (!tooltipEl)\n return\n\n currentAnchor = anchor\n tooltipEl.textContent = content\n tooltipEl.dataset.placement = placement\n tooltipEl.dataset.dark = detectDarkModeHint(isDark) ? 'true' : 'false'\n tooltipEl.dataset.visible = 'false'\n currentId = `tooltip-${Date.now()}-${Math.random().toString(36).slice(2)}`\n tooltipEl.id = currentId\n\n try {\n anchor.setAttribute('aria-describedby', currentId)\n }\n catch {\n // Ignore aria sync failures.\n }\n\n await updateTooltipPosition(placement)\n tooltipEl.dataset.visible = 'true'\n cleanupAutoUpdate?.()\n cleanupAutoUpdate = autoUpdate(anchor, tooltipEl, () => {\n void updateTooltipPosition(placement)\n })\n }\n\n if (immediate)\n void doShow()\n else\n showTimer = setTimeout(doShow, 80)\n}\n\nexport function hideTooltip(immediate = false) {\n if (!tooltipEl)\n return\n\n clearTimers()\n const doHide = () => {\n if (!tooltipEl)\n return\n\n tooltipEl.dataset.visible = 'false'\n if (currentAnchor && currentId) {\n try {\n currentAnchor.removeAttribute('aria-describedby')\n }\n catch {\n // Ignore aria sync failures.\n }\n }\n currentAnchor = null\n currentId = null\n cleanupAutoUpdate?.()\n cleanupAutoUpdate = null\n }\n\n if (immediate)\n doHide()\n else\n hideTimer = setTimeout(doHide, 120)\n}\n","import type { OnChanges } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\ninterface StreamSegment {\n id: number\n content: string\n fading: boolean\n}\n\nfunction settleAndMergeSegments(segments: StreamSegment[], segmentId?: number) {\n return segments.reduce<StreamSegment[]>((result, segment) => {\n const nextSegment = segmentId == null || segment.id === segmentId\n ? { ...segment, fading: false }\n : segment\n const previousSegment = result[result.length - 1]\n if (previousSegment && !previousSegment.fading && !nextSegment.fading) {\n result[result.length - 1] = {\n ...previousSegment,\n content: previousSegment.content + nextSegment.content,\n }\n }\n else {\n result.push(nextSegment)\n }\n return result\n }, [])\n}\n\n@Component({\n selector: 'markstream-angular-text-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <ng-container *ngIf=\"!centered; else centeredText\">\n <span class=\"markstream-angular-text-node\">\n <span\n *ngFor=\"let segment of segments; trackBy: trackSegment\"\n [class]=\"segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''\"\n (animationend)=\"segment.fading && settleSegment(segment.id)\"\n >{{ segment.content }}</span>\n </span>\n </ng-container>\n <ng-template #centeredText>\n <span class=\"markstream-angular-text-node markstream-angular-text--centered\">\n <span\n *ngFor=\"let segment of segments; trackBy: trackSegment\"\n [class]=\"segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''\"\n (animationend)=\"segment.fading && settleSegment(segment.id)\"\n >{{ segment.content }}</span>\n </span>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextNodeComponent implements OnChanges {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n @Input() typewriter?: boolean\n @Input() fade?: boolean\n\n segments: StreamSegment[] = []\n private renderedText = ''\n private nextSegmentId = 0\n private lastStreamRenderVersion?: number\n\n ngOnChanges() {\n const nextText = getString((this.node as any)?.content)\n const streamStateKey = getString(this.indexKey).trim()\n const textStreamState = this.context?.textStreamState\n const streamRenderVersion = this.context?.streamRenderVersion\n const streamRenderVersionChanged = streamRenderVersion !== this.lastStreamRenderVersion\n const previousPersisted = streamStateKey\n ? textStreamState?.get(streamStateKey)\n : undefined\n const previousText = previousPersisted ?? this.renderedText\n const resumeFromPersistedText = previousPersisted !== undefined\n && previousPersisted !== this.renderedText\n\n if (!this.fadeEnabled) {\n this.setFullText(nextText)\n this.renderedText = nextText\n if (streamStateKey)\n textStreamState?.set(streamStateKey, nextText)\n this.lastStreamRenderVersion = streamRenderVersion\n return\n }\n\n if (nextText === previousText) {\n if (this.segments.some(segment => segment.fading) && streamRenderVersionChanged) {\n this.settleFadingSegments()\n }\n else if (this.renderedText !== nextText) {\n this.setFullText(nextText)\n }\n this.renderedText = nextText\n if (streamStateKey)\n textStreamState?.set(streamStateKey, nextText)\n this.lastStreamRenderVersion = streamRenderVersion\n return\n }\n\n if (previousText && nextText.startsWith(previousText)) {\n const appendedText = nextText.slice(previousText.length)\n const lastSegment = this.segments[this.segments.length - 1]\n if (resumeFromPersistedText) {\n this.segments = [\n { id: this.nextSegmentId++, content: previousText, fading: false },\n { id: this.nextSegmentId++, content: appendedText, fading: true },\n ]\n }\n else if (lastSegment?.fading) {\n this.segments = [\n ...this.segments.slice(0, -1),\n { ...lastSegment, content: lastSegment.content + appendedText },\n ]\n }\n else {\n this.segments = [\n ...this.segments,\n { id: this.nextSegmentId++, content: appendedText, fading: true },\n ]\n }\n }\n else {\n this.setFullText(nextText)\n }\n\n this.renderedText = nextText\n if (streamStateKey)\n textStreamState?.set(streamStateKey, nextText)\n this.lastStreamRenderVersion = streamRenderVersion\n }\n\n get centered() {\n return !!(this.node as any)?.center\n }\n\n get settledText() {\n return this.segments.filter(segment => !segment.fading).map(segment => segment.content).join('')\n }\n\n get streamedDelta() {\n return this.segments.filter(segment => segment.fading).map(segment => segment.content).join('')\n }\n\n streamedDeltaClass(segment: StreamSegment) {\n return segment.id % 2 === 0\n ? 'markstream-angular-text__stream-delta--a'\n : 'markstream-angular-text__stream-delta--b'\n }\n\n get fadeEnabled() {\n if (typeof this.fade === 'boolean')\n return this.fade\n if (typeof this.context?.fade === 'boolean')\n return this.context.fade\n return true\n }\n\n get typewriterEnabled() {\n if (typeof this.typewriter === 'boolean')\n return this.typewriter\n if (typeof this.context?.typewriter === 'boolean')\n return this.context.typewriter\n return false\n }\n\n trackSegment(_index: number, segment: StreamSegment) {\n return segment.id\n }\n\n settleSegment(segmentId: number) {\n if (!this.segments.some(segment => segment.id === segmentId && segment.fading))\n return\n this.segments = settleAndMergeSegments(this.segments, segmentId)\n }\n\n private setFullText(content: string) {\n if (this.segments.length === 1 && !this.segments[0]?.fading && this.segments[0].content === content)\n return\n this.segments = content\n ? [{ id: this.nextSegmentId++, content, fading: false }]\n : []\n }\n\n private settleFadingSegments() {\n this.segments = settleAndMergeSegments(this.segments)\n }\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { isUnsafeHtmlUrl, shouldOpenLinkInNewTab } from 'stream-markdown-parser'\nimport { hideTooltip, showTooltipForAnchor } from '../../tooltip/singletonTooltip'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList, getString } from '../shared/node-helpers'\nimport { TextNodeComponent } from '../TextNode/TextNode.component'\n\n@Component({\n selector: 'markstream-angular-link-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent), forwardRef(() => TextNodeComponent)],\n template: `\n <a\n *ngIf=\"!loading; else loadingTpl\"\n #anchorEl\n class=\"link-node\"\n [attr.href]=\"href || null\"\n [attr.title]=\"resolvedShowTooltip ? '' : title\"\n [attr.aria-label]=\"'Link: ' + title\"\n [attr.target]=\"openInNewTab ? '_blank' : null\"\n [attr.rel]=\"openInNewTab ? 'noopener noreferrer' : null\"\n [ngStyle]=\"cssVars\"\n (mouseenter)=\"onAnchorEnter()\"\n (mouseleave)=\"onAnchorLeave()\"\n >\n <markstream-angular-nested-renderer\n *ngIf=\"hasChildren; else fallbackText\"\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n <ng-template #fallbackText>\n <markstream-angular-text-node\n [node]=\"{ type: 'text', content: fallbackLabel }\"\n [context]=\"context\"\n [indexKey]=\"nestedPrefix + '-fallback'\"\n />\n </ng-template>\n </a>\n\n <ng-template #loadingTpl>\n <span class=\"link-loading\" [ngStyle]=\"cssVars\" aria-hidden=\"false\">\n <span class=\"link-text-wrapper\">\n <span class=\"link-text\">\n <markstream-angular-text-node\n [node]=\"{ type: 'text', content: fallbackLabel }\"\n [context]=\"context\"\n [indexKey]=\"nestedPrefix + '-loading'\"\n />\n </span>\n <span class=\"link-loading-indicator\" aria-hidden=\"true\"></span>\n </span>\n </span>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n @ViewChild('anchorEl') private anchorRef?: ElementRef<HTMLElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n private hovering = false\n\n get href() {\n const href = getString((this.node as any)?.href)\n return href && !isUnsafeHtmlUrl(href) ? href : ''\n }\n\n get title() {\n const rawTitle = getString((this.node as any)?.title)\n return rawTitle || this.href\n }\n\n get openInNewTab() {\n return shouldOpenLinkInNewTab(this.href)\n }\n\n get loading() {\n return (this.node as any)?.loading === true\n }\n\n get resolvedShowTooltip() {\n return this.context?.showTooltips !== false\n }\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get hasChildren() {\n return this.children.length > 0\n }\n\n get fallbackLabel() {\n return getString((this.node as any)?.text || this.href)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'link'}-inline`\n }\n\n get cssVars() {\n return {\n '--link-color': '#0366d6',\n '--underline-height': '2px',\n '--underline-bottom': '-3px',\n '--underline-opacity': '0.35',\n '--underline-rest-opacity': '0.175',\n '--underline-duration': '1.6s',\n '--underline-timing': 'ease-in-out',\n '--underline-iteration': 'infinite',\n } as Record<string, string>\n }\n\n ngAfterViewInit() {\n this.syncTooltip()\n }\n\n ngOnChanges() {\n this.syncTooltip()\n }\n\n ngOnDestroy() {\n if (this.hovering)\n hideTooltip(true)\n }\n\n onAnchorEnter() {\n if (!this.resolvedShowTooltip)\n return\n\n this.hovering = true\n showTooltipForAnchor(this.anchorRef?.nativeElement || null, this.title, 'top', false, this.context?.isDark)\n }\n\n onAnchorLeave() {\n if (!this.resolvedShowTooltip)\n return\n\n this.hovering = false\n hideTooltip()\n }\n\n private syncTooltip() {\n if (!this.hovering || !this.resolvedShowTooltip)\n return\n\n showTooltipForAnchor(this.anchorRef?.nativeElement || null, this.title, 'top', true, this.context?.isDark)\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-list-item-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <li [attr.value]=\"value ?? null\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </li>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListItemNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n @Input() value?: number\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'list-item'}-item`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { ListItemNodeComponent } from '../ListItemNode/ListItemNode.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-list-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => ListItemNodeComponent)],\n template: `\n <ol *ngIf=\"ordered; else unorderedList\" class=\"list-node my-5 pl-[calc(13/8*1em)]\" [attr.start]=\"startValue || null\">\n <markstream-angular-list-item-node\n *ngFor=\"let item of items; let idx = index; trackBy: trackByIndex\"\n [node]=\"item\"\n [value]=\"startValue + idx\"\n [context]=\"context\"\n [indexKey]=\"itemPrefix(idx)\"\n />\n </ol>\n\n <ng-template #unorderedList>\n <ul class=\"list-node my-5 pl-[calc(13/8*1em)] list-disc max-lg:my-[calc(4/3*1em)] max-lg:pl-[calc(14/9*1em)]\">\n <markstream-angular-list-item-node\n *ngFor=\"let item of items; let idx = index; trackBy: trackByIndex\"\n [node]=\"item\"\n [context]=\"context\"\n [indexKey]=\"itemPrefix(idx)\"\n />\n </ul>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get ordered() {\n return !!(this.node as any)?.ordered\n }\n\n get startValue() {\n return Number((this.node as any)?.start) || 1\n }\n\n get items() {\n return getNodeList((this.node as any)?.items)\n }\n\n trackByIndex = (index: number) => {\n return this.itemPrefix(index)\n }\n\n itemPrefix(index: number) {\n return `${this.indexKey || 'list'}-${index}`\n }\n}\n","export interface KatexModule {\n renderToString: (content: string, options?: Record<string, unknown>) => string\n}\n\nexport type KatexLoader = () => Promise<unknown> | unknown\n\nlet katex: any = null\nlet importAttempted = false\nlet pendingImport: Promise<KatexModule | null> | null = null\nlet katexLoader: KatexLoader | null = defaultKatexLoader\n\nfunction normalizeKatexModule(mod: any): KatexModule | null {\n const resolved = mod?.default ?? mod\n if (resolved && typeof resolved.renderToString === 'function')\n return resolved as KatexModule\n return null\n}\n\nfunction getGlobalKatex() {\n try {\n const globalStore = globalThis as any\n return normalizeKatexModule(globalStore?.katex)\n }\n catch {\n return null\n }\n}\n\nfunction defaultKatexLoader() {\n return (async () => {\n const globalKatex = getGlobalKatex()\n if (globalKatex)\n return globalKatex\n\n const mod = await import('katex')\n try {\n await import('katex/contrib/mhchem')\n }\n catch {\n // Ignore optional mhchem support failures.\n }\n return normalizeKatexModule(mod)\n })()\n}\n\nfunction resetCache() {\n katex = null\n importAttempted = false\n pendingImport = null\n}\n\nexport function setKatexLoader(loader: KatexLoader | null) {\n katexLoader = loader\n resetCache()\n}\n\nexport function enableKatex(loader?: KatexLoader) {\n setKatexLoader(loader ?? defaultKatexLoader)\n}\n\nexport function disableKatex() {\n setKatexLoader(null)\n}\n\nexport function isKatexEnabled() {\n return typeof katexLoader === 'function'\n}\n\nexport async function getKatex(): Promise<KatexModule | null> {\n const globalKatex = getGlobalKatex()\n if (globalKatex) {\n katex = globalKatex\n return katex\n }\n\n if (katex)\n return katex\n if (pendingImport)\n return await pendingImport\n if (importAttempted)\n return null\n\n const loader = katexLoader\n if (!loader) {\n importAttempted = true\n return null\n }\n\n pendingImport = (async () => {\n try {\n const result = await loader()\n const normalized = normalizeKatexModule(result) ?? result\n if (normalized) {\n katex = normalized\n return katex\n }\n }\n catch {\n // Swallow loader errors so callers can gracefully fall back.\n }\n\n importAttempted = true\n return null\n })()\n\n try {\n return await pendingImport\n }\n finally {\n pendingImport = null\n }\n}\n","export function normalizeKaTeXRenderInput(content: string) {\n if (!content)\n return ''\n\n return content\n .replace(/·/g, '⋅')\n .replace(/℃/g, '°C')\n}\n","import { isKatexEnabled } from '../optional/katex'\nimport { normalizeKaTeXRenderInput } from '../utils/normalizeKaTeXRenderInput'\n\nexport const WORKER_BUSY_CODE = 'WORKER_BUSY'\n\ninterface Pending {\n resolve: (val: string) => void\n reject: (err: any) => void\n timeoutId: number\n}\n\nlet worker: Worker | null = null\nlet workerInitError: any = null\nlet debugKatexWorker = false\n\nconst pending = new Map<string, Pending>()\nconst cache = new Map<string, string>()\nconst cacheMax = 200\nconst drainWaiters = new Set<() => void>()\n\nlet maxConcurrency = 5\n\nfunction notifyDrainIfBelowCap() {\n if (pending.size >= maxConcurrency || drainWaiters.size === 0)\n return\n\n const currentWaiters = Array.from(drainWaiters)\n drainWaiters.clear()\n for (const waiter of currentWaiters) {\n try {\n waiter()\n }\n catch {\n // Ignore waiter failures.\n }\n }\n}\n\nfunction rememberCache(content: string, displayMode: boolean, html: string) {\n cache.set(`${displayMode ? 'd' : 'i'}:${content}`, html)\n if (cache.size > cacheMax) {\n const firstKey = cache.keys().next().value\n if (firstKey)\n cache.delete(firstKey)\n }\n}\n\nexport function setKaTeXWorker(nextWorker: Worker) {\n worker = nextWorker\n workerInitError = null\n\n worker.onmessage = (event: MessageEvent) => {\n const { id, html, error, content, displayMode } = event.data || {}\n const active = pending.get(id)\n if (!active)\n return\n\n pending.delete(id)\n clearTimeout(active.timeoutId)\n notifyDrainIfBelowCap()\n\n if (error) {\n active.reject(new Error(error))\n return\n }\n\n if (content)\n rememberCache(String(content), Boolean(displayMode), String(html || ''))\n active.resolve(String(html || ''))\n }\n\n worker.onerror = (event: ErrorEvent) => {\n for (const [, active] of pending.entries()) {\n clearTimeout(active.timeoutId)\n active.reject(new Error(`Worker error: ${event.message}`))\n }\n pending.clear()\n notifyDrainIfBelowCap()\n }\n\n if (debugKatexWorker)\n worker.postMessage({ type: 'init', debug: true })\n}\n\nexport function clearKaTeXWorker() {\n if (worker)\n worker.terminate?.()\n worker = null\n workerInitError = null\n}\n\nfunction ensureWorker() {\n if (worker)\n return worker\n\n workerInitError = new Error('[markstream-angular:katexWorkerClient] No worker instance set. Please inject a Worker via setKaTeXWorker().')\n ;(workerInitError as any).name = 'WorkerInitError'\n ;(workerInitError as any).code = 'WORKER_INIT_ERROR'\n return null\n}\n\nexport function setKaTeXWorkerDebug(enabled: boolean) {\n debugKatexWorker = !!enabled\n if (worker)\n worker.postMessage({ type: 'init', debug: debugKatexWorker })\n}\n\nexport async function renderKaTeXInWorker(content: string, displayMode = true, timeout = 2000, signal?: AbortSignal): Promise<string> {\n const normalizedContent = normalizeKaTeXRenderInput(content)\n if (!isKatexEnabled()) {\n const error = new Error('KaTeX rendering disabled')\n ;(error as any).name = 'KaTeXDisabled'\n ;(error as any).code = 'KATEX_DISABLED'\n return Promise.reject(error)\n }\n\n if (workerInitError)\n return Promise.reject(workerInitError)\n\n const cacheKey = `${displayMode ? 'd' : 'i'}:${normalizedContent}`\n const cached = cache.get(cacheKey)\n if (cached)\n return cached\n\n const activeWorker = ensureWorker()\n if (!activeWorker)\n return Promise.reject(workerInitError)\n\n if (pending.size >= maxConcurrency) {\n const error = new Error('Worker busy')\n ;(error as any).name = 'WorkerBusy'\n ;(error as any).code = WORKER_BUSY_CODE\n ;(error as any).busy = true\n ;(error as any).inFlight = pending.size\n ;(error as any).max = maxConcurrency\n return Promise.reject(error)\n }\n\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n const error = new Error('Aborted')\n ;(error as any).name = 'AbortError'\n reject(error)\n return\n }\n\n const id = Math.random().toString(36).slice(2)\n const timeoutId = globalThis.setTimeout(() => {\n pending.delete(id)\n notifyDrainIfBelowCap()\n const error = new Error('Worker render timed out')\n ;(error as any).name = 'WorkerTimeout'\n ;(error as any).code = 'WORKER_TIMEOUT'\n reject(error)\n }, timeout)\n\n const onAbort = () => {\n globalThis.clearTimeout(timeoutId)\n if (pending.delete(id))\n notifyDrainIfBelowCap()\n const error = new Error('Aborted')\n ;(error as any).name = 'AbortError'\n reject(error)\n }\n signal?.addEventListener('abort', onAbort, { once: true })\n\n pending.set(id, {\n timeoutId,\n resolve: (html) => {\n signal?.removeEventListener('abort', onAbort)\n resolve(html)\n },\n reject: (error) => {\n signal?.removeEventListener('abort', onAbort)\n reject(error)\n },\n })\n\n activeWorker.postMessage({\n id,\n type: 'render',\n content: normalizedContent,\n displayMode,\n })\n })\n}\n\nexport function setKaTeXCache(content: string, displayMode = true, html: string) {\n rememberCache(normalizeKaTeXRenderInput(content), displayMode, html)\n}\n\nexport function getKaTeXWorkerLoad() {\n return {\n inFlight: pending.size,\n max: maxConcurrency,\n }\n}\n\nexport function setKaTeXWorkerMaxConcurrency(value: number) {\n if (Number.isFinite(value) && value > 0)\n maxConcurrency = Math.floor(value)\n}\n\nexport function isKaTeXWorkerBusy() {\n return pending.size >= maxConcurrency\n}\n\nexport function waitForKaTeXWorkerSlot(timeout = 2000, signal?: AbortSignal): Promise<void> {\n if (pending.size < maxConcurrency)\n return Promise.resolve()\n\n return new Promise((resolve, reject) => {\n let settled = false\n let timer: ReturnType<typeof setTimeout> | null = null\n\n const onDrain = () => {\n if (settled)\n return\n settled = true\n if (timer)\n clearTimeout(timer)\n drainWaiters.delete(onDrain)\n resolve()\n }\n\n drainWaiters.add(onDrain)\n\n timer = setTimeout(() => {\n if (settled)\n return\n settled = true\n drainWaiters.delete(onDrain)\n const error = new Error('Wait for worker slot timed out')\n ;(error as any).name = 'WorkerBusyTimeout'\n ;(error as any).code = 'WORKER_BUSY_TIMEOUT'\n reject(error)\n }, timeout)\n\n queueMicrotask(() => notifyDrainIfBelowCap())\n\n if (signal) {\n const onAbort = () => {\n if (settled)\n return\n settled = true\n if (timer)\n clearTimeout(timer)\n drainWaiters.delete(onDrain)\n const error = new Error('Aborted')\n ;(error as any).name = 'AbortError'\n reject(error)\n }\n if (signal.aborted)\n onAbort()\n else\n signal.addEventListener('abort', onAbort, { once: true })\n }\n })\n}\n\nexport interface BackpressureOptions {\n timeout?: number\n waitTimeout?: number\n backoffMs?: number\n maxRetries?: number\n signal?: AbortSignal\n}\n\nconst defaultBackpressure = {\n timeout: 2000,\n waitTimeout: 1500,\n backoffMs: 30,\n maxRetries: 1,\n}\nconst maxBackpressureRetries = 8\n\nexport function setKaTeXBackpressureDefaults(options: Partial<typeof defaultBackpressure>) {\n if (options.timeout != null)\n defaultBackpressure.timeout = Math.max(0, Math.floor(options.timeout))\n if (options.waitTimeout != null)\n defaultBackpressure.waitTimeout = Math.max(0, Math.floor(options.waitTimeout))\n if (options.backoffMs != null)\n defaultBackpressure.backoffMs = Math.max(0, Math.floor(options.backoffMs))\n if (options.maxRetries != null)\n defaultBackpressure.maxRetries = Math.max(0, Math.floor(options.maxRetries))\n}\n\nexport function getKaTeXBackpressureDefaults() {\n return { ...defaultBackpressure }\n}\n\nexport async function renderKaTeXWithBackpressure(\n content: string,\n displayMode = true,\n options: BackpressureOptions = {},\n): Promise<string> {\n if (!isKatexEnabled()) {\n const error = new Error('KaTeX rendering disabled')\n ;(error as any).name = 'KaTeXDisabled'\n ;(error as any).code = 'KATEX_DISABLED'\n throw error\n }\n\n const timeout = options.timeout ?? defaultBackpressure.timeout\n const waitTimeout = options.waitTimeout ?? defaultBackpressure.waitTimeout\n const backoffMs = options.backoffMs ?? defaultBackpressure.backoffMs\n const rawMaxRetries = options.maxRetries ?? defaultBackpressure.maxRetries\n const maxRetries = Number.isFinite(rawMaxRetries)\n ? Math.max(0, Math.min(Math.floor(rawMaxRetries), maxBackpressureRetries))\n : defaultBackpressure.maxRetries\n\n let attempt = 0\n for (;;) {\n if (options.signal?.aborted) {\n const error = new Error('Aborted')\n ;(error as any).name = 'AbortError'\n throw error\n }\n\n try {\n return await renderKaTeXInWorker(content, displayMode, timeout, options.signal)\n }\n catch (error: any) {\n if (error?.code !== WORKER_BUSY_CODE || attempt >= maxRetries)\n throw error\n\n attempt += 1\n await waitForKaTeXWorkerSlot(waitTimeout, options.signal).catch(() => {})\n if (backoffMs > 0)\n await new Promise(resolve => globalThis.setTimeout(resolve, backoffMs * attempt))\n }\n }\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { getKatex } from '../../optional/katex'\nimport { normalizeKaTeXRenderInput } from '../../utils/normalizeKaTeXRenderInput'\nimport { renderKaTeXWithBackpressure, setKaTeXCache, WORKER_BUSY_CODE } from '../../workers/katexWorkerClient'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-math-block-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"math-block markstream-nested-math-block\" data-markstream-katex-managed=\"1\">\n <div #mathRef class=\"markstream-nested-math-block__render\" [class.math-rendering]=\"rendering\"></div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MathBlockNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n\n @ViewChild('mathRef') private mathRef?: ElementRef<HTMLDivElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n\n rendering = true\n\n private destroyed = false\n private renderVersion = 0\n private hasRenderedOnce = false\n\n get content() {\n return getString((this.node as any)?.content || (this.node as any)?.markup || (this.node as any)?.raw)\n }\n\n ngAfterViewInit() {\n void this.renderMath()\n }\n\n ngOnChanges() {\n if (!this.mathRef)\n return\n void this.renderMath()\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.renderVersion += 1\n }\n\n private async renderMath() {\n const target = this.mathRef?.nativeElement\n if (!target)\n return\n\n const content = normalizeKaTeXRenderInput(this.content)\n const version = ++this.renderVersion\n if (!content) {\n target.textContent = ''\n this.rendering = false\n this.cdr.markForCheck()\n return\n }\n\n if (!this.hasRenderedOnce)\n this.rendering = true\n\n const html = await this.resolveKatexMarkup(content)\n if (this.destroyed || version !== this.renderVersion)\n return\n\n if (html) {\n target.innerHTML = html\n this.hasRenderedOnce = true\n this.rendering = false\n }\n else if (!(this.node as any)?.loading) {\n target.textContent = getString((this.node as any)?.raw || content)\n this.rendering = false\n }\n\n this.cdr.markForCheck()\n }\n\n private async resolveKatexMarkup(content: string) {\n try {\n return await renderKaTeXWithBackpressure(content, true, {\n timeout: 3000,\n waitTimeout: 2000,\n maxRetries: 1,\n })\n }\n catch (error: any) {\n const code = error?.code || error?.name\n const isWorkerInitFailure = code === 'WORKER_INIT_ERROR' || error?.fallbackToRenderer\n const isBusyOrTimeout = code === WORKER_BUSY_CODE || code === 'WORKER_TIMEOUT'\n if (!isWorkerInitFailure && !isBusyOrTimeout)\n return null\n }\n\n const katex = await getKatex()\n if (!katex)\n return null\n\n try {\n const html = katex.renderToString(content, {\n throwOnError: (this.node as any)?.loading === true,\n displayMode: true,\n })\n setKaTeXCache(content, true, html)\n return html\n }\n catch {\n return null\n }\n }\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { getKatex } from '../../optional/katex'\nimport { normalizeKaTeXRenderInput } from '../../utils/normalizeKaTeXRenderInput'\nimport { renderKaTeXWithBackpressure, setKaTeXCache, WORKER_BUSY_CODE } from '../../workers/katexWorkerClient'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-math-inline-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <span class=\"math-inline-wrapper markstream-nested-math\" data-display=\"inline\" data-markstream-katex-managed=\"1\">\n <span #mathRef class=\"math-inline\" [class.math-inline--hidden]=\"loading\"></span>\n <span *ngIf=\"loading\" class=\"math-inline__loading\" role=\"status\" aria-live=\"polite\">\n <span class=\"math-inline__spinner\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">Loading</span>\n </span>\n </span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MathInlineNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n\n @ViewChild('mathRef') private mathRef?: ElementRef<HTMLSpanElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n\n loading = true\n\n private destroyed = false\n private renderVersion = 0\n private hasRenderedOnce = false\n\n get content() {\n return getString((this.node as any)?.content || (this.node as any)?.markup || (this.node as any)?.raw)\n }\n\n get displayMode() {\n return String((this.node as any)?.markup || '') === '$$'\n }\n\n ngAfterViewInit() {\n void this.renderMath()\n }\n\n ngOnChanges() {\n if (!this.mathRef)\n return\n void this.renderMath()\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.renderVersion += 1\n }\n\n private async renderMath() {\n const target = this.mathRef?.nativeElement\n if (!target)\n return\n\n const content = normalizeKaTeXRenderInput(this.content)\n const version = ++this.renderVersion\n if (!content) {\n target.textContent = ''\n this.loading = false\n this.cdr.markForCheck()\n return\n }\n\n if (!this.hasRenderedOnce)\n this.loading = true\n\n const html = await this.resolveKatexMarkup(content, this.displayMode)\n if (this.destroyed || version !== this.renderVersion)\n return\n\n if (html) {\n target.innerHTML = html\n this.hasRenderedOnce = true\n this.loading = false\n }\n else if (!(this.node as any)?.loading) {\n target.textContent = getString((this.node as any)?.raw || content)\n this.loading = false\n }\n\n this.cdr.markForCheck()\n }\n\n private async resolveKatexMarkup(content: string, displayMode: boolean) {\n try {\n return await renderKaTeXWithBackpressure(content, displayMode, {\n timeout: 1500,\n waitTimeout: 0,\n maxRetries: 0,\n })\n }\n catch (error: any) {\n const code = error?.code || error?.name\n const isWorkerInitFailure = code === 'WORKER_INIT_ERROR' || error?.fallbackToRenderer\n const isBusyOrTimeout = code === WORKER_BUSY_CODE || code === 'WORKER_TIMEOUT'\n if (!isWorkerInitFailure && !isBusyOrTimeout)\n return null\n }\n\n const katex = await getKatex()\n if (!katex)\n return null\n\n try {\n const html = katex.renderToString(content, {\n throwOnError: (this.node as any)?.loading === true,\n displayMode,\n })\n setKaTeXCache(content, displayMode, html)\n return html\n }\n catch {\n return null\n }\n }\n}\n","export type MermaidLoader = () => Promise<unknown> | unknown\n\nconst defaultMermaidLoader: MermaidLoader = () => import('mermaid')\nconst GLOBAL_MERMAID_KEY = '__MARKSTREAM_ANGULAR_MERMAID__'\n\nlet cachedMermaid: any = null\nlet importAttempted = false\nlet lastInitKey: string | null = null\nlet pendingImport: Promise<MermaidModule | null> | null = null\nlet mermaidLoader: MermaidLoader | null = defaultMermaidLoader\n\nexport interface MermaidModule {\n render: (id: string, source: string) => Promise<MermaidRenderResult> | MermaidRenderResult\n parse?: (source: string) => Promise<unknown> | unknown\n initialize?: (config?: Record<string, unknown>) => unknown\n mermaidAPI?: {\n render?: MermaidModule['render']\n parse?: MermaidModule['parse']\n initialize?: MermaidModule['initialize']\n }\n}\n\nexport type MermaidRenderResult = string | {\n svg?: string\n bindFunctions?: (element: Element) => unknown\n}\n\ninterface MermaidInitConfig extends Record<string, unknown> {\n securityLevel?: unknown\n flowchart?: {\n htmlLabels?: unknown\n }\n}\n\nfunction computeInitKey(config: MermaidInitConfig) {\n const securityLevel = String(config?.securityLevel ?? 'strict')\n const htmlLabels = config?.flowchart?.htmlLabels\n return `${securityLevel}|htmlLabels:${htmlLabels === false ? '0' : '1'}`\n}\n\nfunction normalizeMermaidModule(mod: any) {\n if (!mod)\n return mod\n\n const candidate = mod?.default ?? mod\n if (candidate && (typeof candidate.render === 'function' || typeof candidate.parse === 'function' || typeof candidate.initialize === 'function'))\n return candidate\n\n if (candidate?.mermaidAPI && (typeof candidate.mermaidAPI.render === 'function' || typeof candidate.mermaidAPI.parse === 'function')) {\n const api = candidate.mermaidAPI\n return {\n ...candidate,\n render: api.render.bind(api),\n parse: api.parse ? api.parse.bind(api) : undefined,\n initialize: (opts: any) => {\n if (typeof candidate.initialize === 'function')\n return candidate.initialize(opts)\n return api.initialize ? api.initialize(opts) : undefined\n },\n } as MermaidModule\n }\n\n if (mod?.mermaid && typeof mod.mermaid.render === 'function')\n return mod.mermaid as MermaidModule\n\n return candidate as MermaidModule\n}\n\nfunction patchInitialize(target: any) {\n if (!target)\n return\n\n try {\n const originalInitialize = target?.initialize\n target.initialize = (opts: any) => {\n const merged = { suppressErrorRendering: true, ...(opts || {}) }\n if (typeof originalInitialize === 'function')\n return originalInitialize.call(target, merged)\n if (target?.mermaidAPI && typeof target.mermaidAPI.initialize === 'function')\n return target.mermaidAPI.initialize(merged)\n return undefined\n }\n }\n catch {\n // Ignore patching failures and keep the original instance.\n }\n}\n\nfunction ensureInitialized(instance: any, config?: MermaidInitConfig) {\n if (!instance || !config)\n return\n\n const key = computeInitKey(config)\n if (lastInitKey === key)\n return\n\n try {\n if (typeof instance.initialize === 'function')\n instance.initialize(config)\n else if (instance.mermaidAPI?.initialize)\n instance.mermaidAPI.initialize(config)\n lastInitKey = key\n }\n catch {\n // Mermaid may already be initialized; keep going.\n }\n}\n\nfunction getGlobalMermaid() {\n try {\n const globalStore = globalThis as any\n return normalizeMermaidModule(globalStore?.[GLOBAL_MERMAID_KEY] ?? globalStore?.mermaid)\n }\n catch {\n return null\n }\n}\n\nfunction setGlobalMermaid(instance: any) {\n try {\n ;(globalThis as any)[GLOBAL_MERMAID_KEY] = instance\n }\n catch {\n // Ignore global cache writes when the host forbids mutation.\n }\n}\n\nfunction resetCachedMermaid() {\n cachedMermaid = null\n importAttempted = false\n lastInitKey = null\n pendingImport = null\n try {\n delete (globalThis as any)[GLOBAL_MERMAID_KEY]\n }\n catch {\n // Ignore failures when the global object is sealed.\n }\n}\n\nexport function setMermaidLoader(loader: MermaidLoader | null) {\n mermaidLoader = loader\n resetCachedMermaid()\n}\n\nexport function enableMermaid(loader?: MermaidLoader) {\n setMermaidLoader(loader ?? defaultMermaidLoader)\n}\n\nexport function disableMermaid() {\n setMermaidLoader(null)\n}\n\nexport function isMermaidEnabled() {\n return typeof mermaidLoader === 'function'\n}\n\nexport async function getMermaid(initConfig?: MermaidInitConfig): Promise<MermaidModule | null> {\n if (cachedMermaid) {\n ensureInitialized(cachedMermaid, initConfig)\n return cachedMermaid\n }\n\n const globalMermaid = getGlobalMermaid()\n if (globalMermaid) {\n patchInitialize(globalMermaid)\n cachedMermaid = globalMermaid\n setGlobalMermaid(cachedMermaid)\n ensureInitialized(cachedMermaid, initConfig)\n return cachedMermaid\n }\n\n if (pendingImport) {\n const instance = await pendingImport\n if (instance)\n ensureInitialized(instance, initConfig)\n return instance\n }\n\n if (importAttempted)\n return null\n\n const loader = mermaidLoader\n if (!loader) {\n importAttempted = true\n return null\n }\n\n pendingImport = (async () => {\n try {\n const mod = await loader()\n const instance = normalizeMermaidModule(mod)\n if (!instance) {\n importAttempted = true\n return null\n }\n patchInitialize(instance)\n cachedMermaid = instance\n setGlobalMermaid(cachedMermaid)\n return cachedMermaid\n }\n catch {\n importAttempted = true\n return null\n }\n })()\n\n try {\n const instance = await pendingImport\n if (instance)\n ensureInitialized(instance, initConfig)\n return instance\n }\n finally {\n pendingImport = null\n }\n}\n","import { isMermaidEnabled } from '../optional/mermaid'\n\ntype Theme = 'light' | 'dark'\n\nlet worker: Worker | null = null\nlet workerInitError: any = null\n\ninterface Pending {\n resolve: (value: any) => void\n reject: (error: any) => void\n}\n\nconst rpcMap = new Map<string, Pending>()\nlet maxConcurrency = 5\nlet debugClient = false\n\nexport function setMermaidWorkerClientDebug(enabled: boolean) {\n debugClient = !!enabled\n}\n\nexport function setMermaidWorkerMaxConcurrency(value: number) {\n if (Number.isFinite(value) && value > 0)\n maxConcurrency = Math.floor(value)\n}\n\nexport function getMermaidWorkerLoad() {\n return { inFlight: rpcMap.size, max: maxConcurrency }\n}\n\nexport const MERMAID_WORKER_BUSY_CODE = 'WORKER_BUSY'\nexport const MERMAID_DISABLED_CODE = 'MERMAID_DISABLED'\n\nexport function setMermaidWorker(nextWorker: Worker) {\n worker = nextWorker\n workerInitError = null\n const current = nextWorker\n\n worker.onmessage = (event: MessageEvent) => {\n if (worker !== current)\n return\n\n const { id, ok, result, error } = event.data || {}\n const active = rpcMap.get(id)\n if (!active)\n return\n\n if (ok === false || error)\n active.reject(new Error(error || 'Unknown error'))\n else\n active.resolve(result)\n }\n\n worker.onerror = (event: ErrorEvent) => {\n if (worker !== current)\n return\n if (rpcMap.size === 0) {\n console.debug?.('[markstream-angular:mermaidWorkerClient] Worker error (idle):', event?.message || event)\n return\n }\n try {\n if (debugClient)\n console.error('[markstream-angular:mermaidWorkerClient] Worker error:', event?.message || event)\n else\n console.debug?.('[markstream-angular:mermaidWorkerClient] Worker error:', event?.message || event)\n }\n catch {\n // Ignore logging failures.\n }\n for (const [, active] of rpcMap.entries())\n active.reject(new Error(`Worker error: ${event.message}`))\n rpcMap.clear()\n }\n\n ;(worker as any).onmessageerror = (event: MessageEvent) => {\n if (worker !== current)\n return\n if (rpcMap.size === 0) {\n console.debug?.('[markstream-angular:mermaidWorkerClient] Worker messageerror (idle):', event)\n return\n }\n for (const [, active] of rpcMap.entries())\n active.reject(new Error('Worker messageerror'))\n rpcMap.clear()\n }\n}\n\nexport function clearMermaidWorker() {\n if (worker) {\n try {\n for (const [, active] of rpcMap.entries())\n active.reject(new Error('Worker cleared'))\n rpcMap.clear()\n worker.terminate?.()\n }\n catch {\n // Ignore worker termination failures.\n }\n }\n worker = null\n workerInitError = null\n}\n\nfunction ensureWorker() {\n if (worker)\n return worker\n\n workerInitError = new Error('[markstream-angular:mermaidWorkerClient] No worker instance set. Please inject a Worker via setMermaidWorker().')\n ;(workerInitError as any).name = 'WorkerInitError'\n ;(workerInitError as any).code = 'WORKER_INIT_ERROR'\n return null\n}\n\nfunction callWorker<T>(action: 'canParse' | 'findPrefix', payload: any, timeout = 1400): Promise<T> {\n if (!isMermaidEnabled()) {\n const error: any = new Error('Mermaid rendering disabled')\n error.name = 'MermaidDisabled'\n error.code = MERMAID_DISABLED_CODE\n return Promise.reject(error)\n }\n\n if (workerInitError)\n return Promise.reject(workerInitError)\n\n const activeWorker = ensureWorker()\n if (!activeWorker)\n return Promise.reject(workerInitError)\n\n if (rpcMap.size >= maxConcurrency) {\n const error: any = new Error('Worker busy')\n error.name = 'WorkerBusy'\n error.code = MERMAID_WORKER_BUSY_CODE\n error.inFlight = rpcMap.size\n error.max = maxConcurrency\n return Promise.reject(error)\n }\n\n return new Promise<T>((resolve, reject) => {\n const id = Math.random().toString(36).slice(2)\n let settled = false\n let timeoutId: ReturnType<typeof setTimeout> | null = null\n\n const cleanup = () => {\n if (settled)\n return\n settled = true\n if (timeoutId != null)\n clearTimeout(timeoutId)\n rpcMap.delete(id)\n }\n\n rpcMap.set(id, {\n resolve: (value: any) => {\n cleanup()\n resolve(value)\n },\n reject: (error: any) => {\n cleanup()\n reject(error)\n },\n })\n\n try {\n activeWorker.postMessage({ id, action, payload })\n }\n catch (error) {\n rpcMap.delete(id)\n reject(error)\n return\n }\n\n timeoutId = setTimeout(() => {\n const error: any = new Error('Worker call timed out')\n error.name = 'WorkerTimeout'\n error.code = 'WORKER_TIMEOUT'\n const pending = rpcMap.get(id)\n pending?.reject(error)\n }, timeout)\n })\n}\n\nexport async function canParseOffthread(code: string, theme: Theme, timeout = 1400) {\n return await callWorker<boolean>('canParse', { code, theme }, timeout)\n}\n\nexport async function findPrefixOffthread(code: string, theme: Theme, timeout = 1400) {\n return await callWorker<string | null>('findPrefix', { code, theme }, timeout)\n}\n\nexport function terminateWorker() {\n if (worker) {\n try {\n for (const [, active] of rpcMap.entries())\n active.reject(new Error('Worker terminated'))\n rpcMap.clear()\n worker.terminate()\n }\n finally {\n worker = null\n }\n }\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { toSafeMermaidSvgMarkup } from 'stream-markdown-parser'\nimport { getMermaid } from '../../optional/mermaid'\nimport { canParseOffthread, findPrefixOffthread } from '../../workers/mermaidWorkerClient'\nimport { clampPreviewHeight, estimateMermaidPreviewHeight, parsePositiveNumber } from '../shared/diagram-height'\nimport { getString } from '../shared/node-helpers'\nimport {\n clampNumber,\n copyTextToClipboard,\n downloadSvgMarkup,\n resolveCssSize,\n setElementHtml,\n} from '../shared/rich-block-helpers'\n\nlet mermaidRenderSequence = 0\nlet mermaidRenderQueue: Promise<void> = Promise.resolve()\n\ntype MermaidTheme = 'light' | 'dark'\ntype MermaidBindFunctions = (element: Element) => unknown\n\nfunction enqueueMermaidRender<T>(run: () => Promise<T>) {\n const next = mermaidRenderQueue.then(run, run)\n mermaidRenderQueue = next.then(() => undefined, () => undefined)\n return next\n}\n\n@Component({\n selector: 'markstream-angular-mermaid-block-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n class=\"mermaid-block\"\n [class.dark]=\"resolvedIsDark\"\n [attr.data-markstream-mermaid]=\"'1'\"\n [attr.data-mode]=\"showSource ? 'source' : 'preview'\"\n >\n <div *ngIf=\"resolvedShowHeader\" class=\"mermaid-header\">\n <div class=\"flex items-center gap-2 min-w-0\">\n <span class=\"markstream-angular-enhanced-block__badge\">Mermaid</span>\n <span class=\"mermaid-title__text truncate\">Diagram</span>\n </div>\n\n <div class=\"mermaid-actions\">\n <div *ngIf=\"resolvedShowModeToggle\" class=\"mermaid-toggle\" role=\"tablist\" aria-label=\"Mermaid mode\">\n <button\n type=\"button\"\n class=\"mermaid-toggle-btn\"\n [class.mermaid-toggle-btn--active]=\"!showSource\"\n [attr.aria-pressed]=\"!showSource\"\n (click)=\"setMode(false)\"\n >\n Preview\n </button>\n <button\n type=\"button\"\n class=\"mermaid-toggle-btn\"\n [class.mermaid-toggle-btn--active]=\"showSource\"\n [attr.aria-pressed]=\"showSource\"\n (click)=\"setMode(true)\"\n >\n Source\n </button>\n </div>\n\n <button\n *ngIf=\"resolvedShowCopyButton\"\n type=\"button\"\n class=\"mermaid-btn\"\n [attr.title]=\"tooltipFor(copied ? 'Copied' : 'Copy')\"\n (click)=\"copySource()\"\n >\n {{ copied ? 'Copied' : 'Copy' }}\n </button>\n\n <button\n *ngIf=\"resolvedShowExportButton\"\n type=\"button\"\n class=\"mermaid-btn\"\n [disabled]=\"!svgMarkup\"\n [attr.title]=\"tooltipFor('Export SVG')\"\n (click)=\"exportSvg()\"\n >\n Export\n </button>\n\n <button\n *ngIf=\"resolvedShowFullscreenButton\"\n type=\"button\"\n class=\"mermaid-btn\"\n [disabled]=\"!svgMarkup\"\n [attr.title]=\"tooltipFor('Fullscreen')\"\n (click)=\"openModal()\"\n >\n Fullscreen\n </button>\n\n <button\n *ngIf=\"resolvedShowCollapseButton\"\n type=\"button\"\n class=\"mermaid-btn\"\n [attr.title]=\"tooltipFor(collapsed ? 'Expand' : 'Collapse')\"\n (click)=\"toggleCollapsed()\"\n >\n {{ collapsed ? 'Expand' : 'Collapse' }}\n </button>\n\n <ng-container *ngIf=\"resolvedShowZoomControls && !showSource && !collapsed\">\n <button type=\"button\" class=\"mermaid-btn\" [attr.title]=\"tooltipFor('Zoom out')\" (click)=\"adjustZoom(-0.1)\">-</button>\n <button type=\"button\" class=\"mermaid-btn\" [attr.title]=\"tooltipFor('Reset zoom')\" (click)=\"resetZoom()\">100%</button>\n <button type=\"button\" class=\"mermaid-btn\" [attr.title]=\"tooltipFor('Zoom in')\" (click)=\"adjustZoom(0.1)\">+</button>\n </ng-container>\n </div>\n </div>\n\n <div *ngIf=\"!collapsed\" class=\"mermaid-body\">\n <div *ngIf=\"rendering && !showSource\" class=\"mermaid-loading\">\n <span class=\"mermaid-spinner\" aria-hidden=\"true\"></span>\n <span>Rendering Mermaid...</span>\n </div>\n\n <div\n *ngIf=\"!showSource\"\n class=\"mermaid-preview\"\n [style.maxHeight]=\"resolvedMaxHeight\"\n [style.minHeight.px]=\"estimatedPreviewHeightPx\"\n [style.height.px]=\"estimatedPreviewHeightPx\"\n [style.transform]=\"previewTransform\"\n >\n <div #previewHost class=\"markstream-angular-mermaid\" [class.is-empty]=\"!svgMarkup\"></div>\n </div>\n\n <pre *ngIf=\"showSource\" class=\"mermaid-source\"><code translate=\"no\">{{ code }}</code></pre>\n\n <div *ngIf=\"error\" class=\"mermaid-error\">{{ error }}</div>\n </div>\n\n <span class=\"sr-only\" aria-live=\"polite\" role=\"status\">{{ copied ? 'Copied' : '' }}</span>\n </div>\n\n <div\n *ngIf=\"modalOpen\"\n class=\"mermaid-modal-overlay\"\n role=\"dialog\"\n aria-modal=\"true\"\n (click)=\"closeModal()\"\n >\n <div\n class=\"mermaid-modal-panel\"\n [class.is-dark]=\"resolvedIsDark\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"mermaid-modal-header\">\n <span class=\"mermaid-modal-title\">Mermaid Preview</span>\n <button type=\"button\" class=\"mermaid-modal-close\" (click)=\"closeModal()\">Close</button>\n </div>\n <div class=\"mermaid-modal-body\">\n <div\n class=\"mermaid-modal-content\"\n [style.transform]=\"modalTransform\"\n (wheel)=\"handleModalWheel($event)\"\n >\n <div #modalHost class=\"markstream-angular-mermaid fullscreen\"></div>\n </div>\n </div>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MermaidBlockNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n\n @ViewChild('previewHost') private previewHost?: ElementRef<HTMLElement>\n @ViewChild('modalHost') private modalHost?: ElementRef<HTMLElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() props?: Record<string, any>\n\n rendering = false\n copied = false\n collapsed = false\n showSource = false\n modalOpen = false\n zoom = 1\n svgMarkup = ''\n error = ''\n\n private viewReady = false\n private destroyed = false\n private renderToken = 0\n private copyTimer: number | null = null\n private lastMermaidBindFunctions: MermaidBindFunctions | null = null\n\n get mergedProps() {\n return {\n ...(this.context?.mermaidProps || {}),\n ...(this.props || {}),\n }\n }\n\n get code() {\n return getString((this.node as any)?.code)\n .replace(/\\]::([^:])/g, ']:::$1')\n .replace(/:::subgraphNode$/gm, '::subgraphNode')\n }\n\n get resolvedIsDark() {\n if (typeof this.mergedProps.isDark === 'boolean')\n return this.mergedProps.isDark\n return this.context?.isDark === true\n }\n\n get resolvedShowHeader() {\n return this.mergedProps.showHeader !== false\n }\n\n get resolvedShowModeToggle() {\n return this.mergedProps.showModeToggle !== false\n }\n\n get resolvedShowCopyButton() {\n return this.mergedProps.showCopyButton !== false\n }\n\n get resolvedShowExportButton() {\n return this.mergedProps.showExportButton !== false\n }\n\n get resolvedShowFullscreenButton() {\n return this.mergedProps.showFullscreenButton !== false\n }\n\n get resolvedShowCollapseButton() {\n return this.mergedProps.showCollapseButton !== false\n }\n\n get resolvedShowZoomControls() {\n return this.mergedProps.showZoomControls !== false\n }\n\n get resolvedShowTooltips() {\n if (typeof this.mergedProps.showTooltips === 'boolean')\n return this.mergedProps.showTooltips\n return this.context?.showTooltips !== false\n }\n\n get resolvedMaxHeight() {\n return resolveCssSize(this.mergedProps.maxHeight, '500px')\n }\n\n get estimatedPreviewHeightPx() {\n return clampPreviewHeight(\n parsePositiveNumber(this.mergedProps.estimatedPreviewHeightPx) ?? estimateMermaidPreviewHeight(this.code),\n undefined,\n this.maxPreviewHeight,\n )\n }\n\n private get maxPreviewHeight() {\n if (this.mergedProps.maxHeight == null || this.mergedProps.maxHeight === 'none')\n return this.mergedProps.maxHeight === 'none' ? null : 500\n return parsePositiveNumber(this.mergedProps.maxHeight) ?? 500\n }\n\n get resolvedWorkerTimeout() {\n return clampNumber(Number(this.mergedProps.workerTimeoutMs ?? 1400), 200, 10_000)\n }\n\n get resolvedParseTimeout() {\n return clampNumber(Number(this.mergedProps.parseTimeoutMs ?? 1800), 200, 10_000)\n }\n\n get resolvedRenderTimeout() {\n return clampNumber(Number(this.mergedProps.renderTimeoutMs ?? 2500), 200, 15_000)\n }\n\n get resolvedFullRenderTimeout() {\n return clampNumber(Number(this.mergedProps.fullRenderTimeoutMs ?? 4000), 200, 20_000)\n }\n\n get strictMode() {\n return this.mergedProps.isStrict !== false\n }\n\n get resolvedLoading() {\n if (typeof this.mergedProps.loading === 'boolean')\n return this.mergedProps.loading\n return (this.node as any)?.loading === true\n }\n\n get resolvedProgressiveRender() {\n return this.mergedProps.progressiveRender === true\n }\n\n get previewTransform() {\n return `scale(${this.zoom})`\n }\n\n get modalTransform() {\n return `scale(${Math.max(1, this.zoom)})`\n }\n\n ngAfterViewInit() {\n this.viewReady = true\n queueMicrotask(() => void this.renderDiagram())\n }\n\n ngOnChanges() {\n if (!this.viewReady)\n return\n queueMicrotask(() => void this.renderDiagram())\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.renderToken += 1\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n }\n\n @HostListener('window:keydown', ['$event'])\n handleWindowKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.modalOpen)\n this.closeModal()\n }\n\n tooltipFor(text: string) {\n return this.resolvedShowTooltips ? text : null\n }\n\n setMode(nextSource: boolean) {\n this.showSource = nextSource\n if (!nextSource)\n this.scheduleHostSync()\n this.cdr.markForCheck()\n }\n\n async copySource() {\n await copyTextToClipboard(this.code)\n this.copied = true\n this.context?.events.onCopy?.(this.code)\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n if (typeof window !== 'undefined') {\n this.copyTimer = window.setTimeout(() => {\n this.copied = false\n this.cdr.markForCheck()\n }, 1000)\n }\n this.cdr.markForCheck()\n }\n\n exportSvg() {\n if (!this.svgMarkup)\n return\n downloadSvgMarkup(this.svgMarkup, `mermaid-${Date.now()}.svg`)\n }\n\n openModal() {\n if (!this.svgMarkup)\n return\n this.modalOpen = true\n if (typeof document !== 'undefined')\n document.body.style.overflow = 'hidden'\n queueMicrotask(() => this.syncSvgHosts())\n this.cdr.markForCheck()\n }\n\n closeModal() {\n this.modalOpen = false\n if (typeof document !== 'undefined')\n document.body.style.overflow = ''\n this.cdr.markForCheck()\n }\n\n toggleCollapsed() {\n this.collapsed = !this.collapsed\n if (!this.collapsed)\n queueMicrotask(() => void this.renderDiagram())\n this.cdr.markForCheck()\n }\n\n adjustZoom(delta: number) {\n this.zoom = clampNumber(Number((this.zoom + delta).toFixed(2)), 0.4, 2.5)\n this.cdr.markForCheck()\n }\n\n resetZoom() {\n this.zoom = 1\n this.cdr.markForCheck()\n }\n\n handleModalWheel(event: WheelEvent) {\n if (this.mergedProps.enableWheelZoom !== true)\n return\n event.preventDefault()\n this.adjustZoom(event.deltaY > 0 ? -0.08 : 0.08)\n }\n\n private async renderDiagram() {\n if (this.destroyed || !this.viewReady || this.collapsed)\n return\n\n const source = this.code.trim()\n if (!source) {\n this.svgMarkup = ''\n this.error = ''\n this.syncSvgHosts()\n this.cdr.markForCheck()\n return\n }\n\n if (this.resolvedLoading && !this.resolvedProgressiveRender) {\n this.renderToken += 1\n this.rendering = true\n this.error = ''\n this.svgMarkup = ''\n this.syncSvgHosts()\n this.cdr.markForCheck()\n return\n }\n\n const token = ++this.renderToken\n this.rendering = true\n this.error = ''\n this.cdr.markForCheck()\n\n try {\n const mermaid = await getMermaid(this.strictMode\n ? {\n startOnLoad: false,\n securityLevel: 'strict',\n suppressErrorRendering: true,\n flowchart: { htmlLabels: false },\n }\n : {\n startOnLoad: false,\n securityLevel: 'loose',\n suppressErrorRendering: true,\n })\n\n if (!mermaid)\n throw new Error('Mermaid renderer is not available.')\n\n const theme: MermaidTheme = this.resolvedIsDark ? 'dark' : 'light'\n let renderSource = source\n if (this.resolvedLoading && this.resolvedProgressiveRender) {\n try {\n const res = await this.canParseOrPrefix(source, theme, mermaid, token)\n if (this.destroyed || token !== this.renderToken)\n return\n if (!res.fullOk && !res.prefix) {\n this.rendering = false\n this.cdr.markForCheck()\n return\n }\n if (res.prefix)\n renderSource = res.prefix\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n return\n this.rendering = false\n this.cdr.markForCheck()\n return\n }\n }\n\n const renderId = `markstream-angular-mermaid-${++mermaidRenderSequence}`\n const themedSource = this.applyThemeTo(renderSource, theme)\n const rendered = await enqueueMermaidRender(() => this.withTimeout(\n () => Promise.resolve(mermaid.render(renderId, themedSource)),\n this.resolvedLoading && this.resolvedProgressiveRender\n ? this.resolvedRenderTimeout\n : this.resolvedFullRenderTimeout,\n ))\n if (this.destroyed || token !== this.renderToken)\n return\n\n const svg = typeof rendered === 'string' ? rendered : rendered?.svg\n const safeSvg = toSafeMermaidSvgMarkup(svg)\n if (!safeSvg)\n throw new Error('Mermaid produced invalid SVG during preview')\n\n this.svgMarkup = safeSvg\n this.lastMermaidBindFunctions = typeof rendered === 'string' ? null : rendered?.bindFunctions ?? null\n if (!this.svgMarkup)\n this.showSource = true\n this.syncSvgHosts()\n }\n catch (error) {\n if (this.destroyed || token !== this.renderToken)\n return\n if (this.resolvedLoading && this.resolvedProgressiveRender) {\n this.svgMarkup = ''\n this.syncSvgHosts()\n return\n }\n // Allow consumer to handle the error via onRenderError callback\n const onRenderError = this.mergedProps.onRenderError\n if (typeof onRenderError === 'function' && this.previewHost?.nativeElement) {\n const handled = onRenderError(error, this.code, this.previewHost.nativeElement)\n if (handled === true) {\n this.svgMarkup = ''\n return\n }\n }\n this.svgMarkup = ''\n this.showSource = true\n this.error = error instanceof Error ? error.message : 'Failed to render Mermaid diagram.'\n this.syncSvgHosts()\n }\n finally {\n if (token === this.renderToken) {\n this.rendering = false\n this.cdr.markForCheck()\n }\n }\n }\n\n private syncSvgHosts() {\n setElementHtml(this.previewHost?.nativeElement, this.svgMarkup)\n if (this.modalOpen)\n setElementHtml(this.modalHost?.nativeElement, this.svgMarkup)\n else\n setElementHtml(this.modalHost?.nativeElement, '')\n this.bindMermaidInteractions(this.previewHost?.nativeElement)\n if (this.modalOpen)\n this.bindMermaidInteractions(this.modalHost?.nativeElement)\n }\n\n private bindMermaidInteractions(element: Element | null | undefined) {\n if (this.mergedProps.enableMermaidInteractions !== true || !this.svgMarkup || !element?.querySelector('svg'))\n return\n try {\n this.lastMermaidBindFunctions?.(element)\n }\n catch {}\n }\n\n private scheduleHostSync() {\n if (typeof window !== 'undefined') {\n window.setTimeout(() => {\n if (this.destroyed)\n return\n this.syncSvgHosts()\n this.cdr.markForCheck()\n }, 0)\n return\n }\n queueMicrotask(() => this.syncSvgHosts())\n }\n\n private async canParseWithFallback(source: string, theme: MermaidTheme, mermaid: any, token: number) {\n try {\n const canParse = await canParseOffthread(source, theme, this.resolvedWorkerTimeout)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n if (canParse)\n return true\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n throw error\n }\n\n const themedSource = this.applyThemeTo(source, theme)\n const anyMermaid = mermaid as any\n if (typeof anyMermaid.parse === 'function') {\n await this.withTimeout(() => Promise.resolve(anyMermaid.parse(themedSource)), this.resolvedParseTimeout)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n return true\n }\n\n const renderId = `markstream-angular-mermaid-parse-${++mermaidRenderSequence}`\n await this.withTimeout(() => Promise.resolve(anyMermaid.render(renderId, themedSource)), this.resolvedParseTimeout)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n return true\n }\n\n private async canParseOrPrefix(source: string, theme: MermaidTheme, mermaid: any, token: number) {\n if (this.getMermaidDiagramKind(source) === 'gantt') {\n const prefix = this.getSafePrefixCandidate(source)\n if (!prefix.trim())\n return { fullOk: false, prefix: '' }\n await this.canParseWithFallback(prefix, theme, mermaid, token)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n return prefix === source ? { fullOk: true, prefix: '' } : { fullOk: false, prefix }\n }\n\n try {\n await this.canParseWithFallback(source, theme, mermaid, token)\n return { fullOk: true, prefix: '' }\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n throw error\n }\n\n const prefix = await this.findPrefixCandidate(source, theme, token)\n if (!prefix)\n return { fullOk: false, prefix: '' }\n await this.canParseWithFallback(prefix, theme, mermaid, token)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n return { fullOk: false, prefix }\n }\n\n private async findPrefixCandidate(source: string, theme: MermaidTheme, token: number) {\n try {\n const prefix = await findPrefixOffthread(source, theme, this.resolvedWorkerTimeout)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n if (prefix)\n return prefix\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n throw error\n }\n\n return this.getSafePrefixCandidate(source)\n }\n\n private applyThemeTo(source: string, theme: MermaidTheme) {\n const trimmed = source.trimStart()\n if (trimmed.startsWith('%%{'))\n return source\n const themeValue = theme === 'dark' ? 'dark' : 'default'\n return `%%{init: {\"theme\": \"${themeValue}\"}}%%\\n${source}`\n }\n\n private getMermaidDiagramKind(source: string) {\n for (const rawLine of source.split(/\\r?\\n/)) {\n const line = rawLine.trim()\n if (!line || line.startsWith('%%'))\n continue\n const match = line.match(/^([A-Z][\\w-]*)\\b/i)\n return match?.[1]?.toLowerCase() || ''\n }\n return ''\n }\n\n private isGanttTaskLine(rawLine: string) {\n const line = rawLine.trim()\n if (!line || line.startsWith('%%'))\n return false\n if (/^(?:gantt|title|dateformat|axisformat|tickinterval|excludes|section|todaymarker|topaxis|weekday|weekend|acctitle|accdescr|accdescrmultiline)\\b/i.test(line))\n return false\n return line.includes(':')\n }\n\n private getSafeGanttPreviewCandidate(source: string) {\n const lines = source.split(/\\r?\\n/)\n if (!/\\r?\\n$/.test(source) && lines.length > 0)\n lines.pop()\n while (lines.length > 0) {\n const last = lines[lines.length - 1]?.trim()\n if (!last || last.startsWith('%%')) {\n lines.pop()\n continue\n }\n if (this.isGanttTaskLine(last))\n break\n lines.pop()\n }\n return lines.some(line => this.isGanttTaskLine(line)) ? lines.join('\\n') : ''\n }\n\n private getSafePrefixCandidate(source: string) {\n if (this.getMermaidDiagramKind(source) === 'gantt')\n return this.getSafeGanttPreviewCandidate(source)\n const lines = source.split('\\n')\n while (lines.length > 0) {\n const lastRaw = lines[lines.length - 1]\n const last = lastRaw.trimEnd()\n if (!last) {\n lines.pop()\n continue\n }\n\n const looksDangling = /^[-=~>|<\\s]+$/.test(last.trim())\n || /(?:--|==|~~|->|<-|-\\||-\\)|-x|o-|\\|-|\\.-)\\s*$/.test(last)\n || /[-|><]$/.test(last)\n || /(?:graph|flowchart|sequenceDiagram|classDiagram|stateDiagram|erDiagram|gantt)\\s*$/i.test(last)\n if (!looksDangling)\n break\n\n lines.pop()\n }\n return lines.join('\\n')\n }\n\n private withTimeout<T>(run: () => Promise<T>, timeoutMs: number) {\n return new Promise<T>((resolve, reject) => {\n let settled = false\n const timer = typeof window !== 'undefined'\n ? window.setTimeout(() => {\n if (settled)\n return\n settled = true\n reject(new Error('Operation timed out'))\n }, timeoutMs)\n : null\n\n run()\n .then((value) => {\n if (settled)\n return\n settled = true\n if (timer != null && typeof window !== 'undefined')\n window.clearTimeout(timer)\n resolve(value)\n })\n .catch((error) => {\n if (settled)\n return\n settled = true\n if (timer != null && typeof window !== 'undefined')\n window.clearTimeout(timer)\n reject(error)\n })\n })\n }\n}\n","import type { OnChanges } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { NodeOutletComponent } from '../NodeOutlet/NodeOutlet.component'\nimport {\n getNodeList,\n getString,\n isMediaOnlyParagraphNodes,\n isWhitespaceTextNode,\n normalizeMediaOnlyParagraphNodes,\n splitParagraphChildren,\n} from '../shared/node-helpers'\n\ntype ParagraphSegment\n = | { kind: 'inline', nodes: AngularRenderableNode[], mediaOnly: boolean }\n | { kind: 'block', node: AngularRenderableNode }\n\n@Component({\n selector: 'markstream-angular-paragraph-node',\n standalone: true,\n imports: [\n CommonModule,\n forwardRef(() => NestedRendererComponent),\n forwardRef(() => NodeOutletComponent),\n ],\n template: `\n <ng-container *ngIf=\"segments.length > 0; else simpleParagraph\">\n <ng-container *ngFor=\"let segment of segments; let idx = index; trackBy: trackByIndex\">\n <p *ngIf=\"segment.kind === 'inline'; else blockSegment\" dir=\"auto\" class=\"paragraph-node\">\n <ng-container *ngIf=\"$any(segment).mediaOnly; else nestedInline\">\n <ng-container *ngFor=\"let child of $any(segment).nodes; let childIdx = index; trackBy: trackByChildIndex\">\n <ng-container *ngIf=\"isWhitespaceText(child); else inlineNode\">{{ getTextContent(child) }}</ng-container>\n\n <ng-template #inlineNode>\n <markstream-angular-node-outlet\n [node]=\"child\"\n [context]=\"context\"\n [indexKey]=\"childPrefix(idx, childIdx)\"\n />\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-template #nestedInline>\n <markstream-angular-nested-renderer\n [nodes]=\"$any(segment).nodes\"\n [context]=\"context\"\n [indexPrefix]=\"segmentPrefix(idx)\"\n />\n </ng-template>\n </p>\n\n <ng-template #blockSegment>\n <markstream-angular-node-outlet\n [node]=\"$any(segment).node\"\n [context]=\"context\"\n [indexKey]=\"segmentPrefix(idx)\"\n />\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-template #simpleParagraph>\n <p dir=\"auto\" class=\"paragraph-node\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"indexKey || 'paragraph'\"\n />\n </p>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParagraphNodeComponent implements OnChanges {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n segments: ParagraphSegment[] = []\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n ngOnChanges() {\n this.segments = splitParagraphChildren(this.children).map((segment) => {\n if (segment.kind === 'block')\n return segment\n\n const mediaOnly = isMediaOnlyParagraphNodes(segment.nodes)\n return {\n kind: 'inline',\n nodes: mediaOnly ? normalizeMediaOnlyParagraphNodes(segment.nodes) : segment.nodes,\n mediaOnly,\n }\n })\n }\n\n trackByIndex = (index: number) => {\n return `${this.indexKey || 'paragraph'}-${index}`\n }\n\n trackByChildIndex = (index: number) => {\n return index\n }\n\n segmentPrefix(index: number) {\n return `${this.indexKey || 'paragraph'}-${index}`\n }\n\n childPrefix(segmentIndex: number, childIndex: number) {\n return `${this.segmentPrefix(segmentIndex)}-${childIndex}`\n }\n\n isWhitespaceText(node: AngularRenderableNode) {\n return isWhitespaceTextNode(node)\n }\n\n getTextContent(node: AngularRenderableNode) {\n return getString((node as any)?.content)\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-reference-node',\n standalone: true,\n template: '<span class=\"markstream-nested-reference\">{{ id }}</span>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ReferenceNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get id() {\n return getString((this.node as any)?.id)\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from './node-helpers'\nimport { clampPreviewHeight, estimateInfographicPreviewHeight, estimateMermaidPreviewHeight, parsePositiveNumber } from './diagram-height'\nimport { getHtmlTagFromContent, resolveCodeBlockLanguage, stripCustomHtmlWrapper } from './node-helpers'\n\nexport type CodeBlockMode = 'mermaid' | 'd2' | 'infographic' | 'pre' | 'code'\n\nexport function resolveNodeOutletCodeMode(\n node: AngularRenderableNode,\n context?: AngularRenderContext,\n): CodeBlockMode {\n if (context?.renderCodeBlocksAsPre)\n return 'pre'\n\n const language = resolveCodeBlockLanguage(node)\n if (language === 'd2' || language === 'd2lang')\n return 'd2'\n if (language === 'infographic')\n return 'infographic'\n if (language === 'mermaid')\n return 'mermaid'\n return 'code'\n}\n\nexport function resolveHtmlTag(node: AngularRenderableNode) {\n return String((node as any)?.tag || '').trim().toLowerCase() || getHtmlTagFromContent((node as any)?.content)\n}\n\nexport function coerceCustomHtmlNode(node: AngularRenderableNode) {\n const tag = resolveHtmlTag(node)\n if (!tag)\n return node\n return {\n ...(node as any),\n type: tag,\n tag,\n content: stripCustomHtmlWrapper((node as any)?.content, tag),\n } as AngularRenderableNode\n}\n\nexport function coerceBuiltinHtmlNode(node: AngularRenderableNode, resolvedType: string) {\n const tag = resolveHtmlTag(node)\n if (!tag)\n return node\n return {\n ...(node as any),\n type: resolvedType,\n tag,\n } as AngularRenderableNode\n}\n\nexport function resolveNodeOutletCustomInputs(\n node: AngularRenderableNode,\n context?: AngularRenderContext,\n) {\n if (String((node as any)?.type || '') !== 'code_block')\n return null\n\n const codeMode = resolveNodeOutletCodeMode(node, context)\n if (codeMode === 'mermaid') {\n return withEstimatedPreviewHeight(\n context?.mermaidProps,\n estimateMermaidPreviewHeight(getNodeCode(node)),\n )\n }\n if (codeMode === 'd2')\n return context?.d2Props ?? null\n if (codeMode === 'infographic') {\n return withEstimatedPreviewHeight(\n context?.infographicProps,\n estimateInfographicPreviewHeight(getNodeCode(node)),\n )\n }\n return context?.codeBlockProps ?? null\n}\n\nfunction getNodeCode(node: AngularRenderableNode) {\n return String((node as any)?.code ?? '')\n}\n\nfunction withEstimatedPreviewHeight(props: Record<string, any> | null | undefined, estimatedHeight: number) {\n const next = { ...(props || {}) }\n if (parsePositiveNumber(next.estimatedPreviewHeightPx) == null) {\n next.estimatedPreviewHeightPx = clampPreviewHeight(\n estimatedHeight,\n undefined,\n next.maxHeight === 'none' ? null : (parsePositiveNumber(next.maxHeight) ?? undefined),\n )\n }\n return next\n}\n\nexport function resolveNodeOutletCustomComponent(\n node: AngularRenderableNode,\n context?: AngularRenderContext,\n customComponents?: Record<string, any> | null,\n) {\n const mapping = customComponents ?? context?.customComponents ?? null\n const resolvedType = String((node as any)?.type || '')\n\n if (resolvedType === 'code_block') {\n const language = resolveCodeBlockLanguage(node)\n const customForLanguage = language ? mapping?.[language] : null\n if (customForLanguage)\n return customForLanguage\n\n const codeMode = resolveNodeOutletCodeMode(node, context)\n if (codeMode === 'mermaid' && mapping?.mermaid)\n return mapping.mermaid\n if (codeMode === 'd2' && mapping?.d2)\n return mapping.d2\n if (codeMode === 'infographic' && mapping?.infographic)\n return mapping.infographic\n if (mapping?.code_block)\n return mapping.code_block\n }\n\n const direct = mapping?.[resolvedType]\n if (direct)\n return direct\n\n const tag = resolveHtmlTag(node)\n if (tag && mapping?.[tag])\n return mapping[tag]\n\n return null\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-strikethrough-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <del>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </del>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StrikethroughNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'strikethrough'}-strike`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-strong-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <strong>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </strong>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StrongNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'strong'}-strong`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-subscript-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <sub>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </sub>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SubscriptNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'subscript'}-sub`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-superscript-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <sup>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </sup>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SuperscriptNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'superscript'}-sup`\n }\n}\n","import type { ElementRef, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, inject, Input, ViewChild } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList, getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-table-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <table #tableElement>\n <colgroup *ngIf=\"columnWidths.length > 0\">\n <col\n *ngFor=\"let cell of headerCells; let cellIndex = index; trackBy: trackCell\"\n [style.width.px]=\"columnWidths[cellIndex] || null\"\n >\n </colgroup>\n <thead *ngIf=\"headerRow\">\n <tr>\n <ng-container *ngFor=\"let cell of headerCells; let cellIndex = index; trackBy: trackCell\">\n <th [style.text-align]=\"alignment(cell) || null\">\n <markstream-angular-nested-renderer\n [nodes]=\"childrenFor(cell)\"\n [context]=\"context\"\n [indexPrefix]=\"cellPrefix('head', cellIndex)\"\n />\n <button\n *ngIf=\"cellIndex < headerCells.length - 1\"\n type=\"button\"\n class=\"table-node__resize-handle\"\n [attr.aria-label]=\"'Resize columns ' + (cellIndex + 1) + ' and ' + (cellIndex + 2)\"\n (pointerdown)=\"startColumnResize(cellIndex, $event)\"\n ></button>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows; let rowIndex = index; trackBy: trackRow\">\n <ng-container *ngFor=\"let cell of cellsFor(row); let cellIndex = index; trackBy: trackCell\">\n <td [style.text-align]=\"alignment(cell) || null\">\n <markstream-angular-nested-renderer\n [nodes]=\"childrenFor(cell)\"\n [context]=\"context\"\n [indexPrefix]=\"cellPrefix(rowIndex, cellIndex)\"\n />\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableNodeComponent implements OnDestroy {\n @ViewChild('tableElement') tableElement?: ElementRef<HTMLTableElement>\n\n private readonly cdr = inject(ChangeDetectorRef)\n private currentHeaderCellCount = 0\n private readonly minColumnWidth = 48\n private resizeState: {\n index: number\n startX: number\n startWidth: number\n nextStartWidth: number\n widths: number[]\n } | null = null\n\n columnWidths: number[] = []\n\n private _node!: AngularRenderableNode\n\n @Input({ required: true })\n set node(value: AngularRenderableNode) {\n this._node = value\n const count = this.headerCells.length\n if (count !== this.currentHeaderCellCount) {\n this.stopColumnResize()\n this.columnWidths = []\n this.currentHeaderCellCount = count\n }\n }\n\n get node() {\n return this._node\n }\n\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get headerRow() {\n const row = (this.node as any)?.header\n return row && typeof row === 'object' ? row as AngularRenderableNode : null\n }\n\n get headerCells() {\n return this.headerRow ? this.cellsFor(this.headerRow) : []\n }\n\n get rows() {\n return getNodeList((this.node as any)?.rows)\n }\n\n cellsFor(row: AngularRenderableNode) {\n return getNodeList((row as any)?.cells)\n }\n\n childrenFor(cell: AngularRenderableNode) {\n return getNodeList((cell as any)?.children)\n }\n\n alignment(cell: AngularRenderableNode) {\n return getString((cell as any)?.align)\n }\n\n trackRow = (index: number) => {\n return `${this.indexKey || 'table'}-row-${index}`\n }\n\n trackCell = (index: number) => {\n return index\n }\n\n cellPrefix(rowIndex: string | number, cellIndex: number) {\n return `${this.indexKey || 'table'}-${rowIndex}-${cellIndex}`\n }\n\n startColumnResize(index: number, event: PointerEvent) {\n if (event.button !== 0)\n return\n\n const widths = this.measureHeaderWidths()\n const startWidth = widths[index]\n const nextStartWidth = widths[index + 1]\n if (!startWidth || !nextStartWidth)\n return\n\n event.preventDefault()\n this.stopColumnResize()\n\n this.resizeState = {\n index,\n startX: event.clientX,\n startWidth,\n nextStartWidth,\n widths,\n }\n this.columnWidths = widths\n this.cdr.markForCheck()\n\n window.addEventListener('pointermove', this.onColumnResizeMove)\n window.addEventListener('pointerup', this.stopColumnResize)\n window.addEventListener('pointercancel', this.stopColumnResize)\n }\n\n ngOnDestroy() {\n this.stopColumnResize()\n }\n\n private measureHeaderWidths() {\n const cells = this.tableElement?.nativeElement.querySelectorAll('thead th')\n return Array.from(cells ?? [], cell => Math.round(cell.getBoundingClientRect().width))\n }\n\n private onColumnResizeMove = (event: PointerEvent) => {\n if (!this.resizeState)\n return\n\n event.preventDefault()\n\n const pairWidth = this.resizeState.startWidth + this.resizeState.nextStartWidth\n const minWidth = Math.min(this.minColumnWidth, Math.floor(pairWidth / 2))\n const width = Math.max(\n minWidth,\n Math.min(pairWidth - minWidth, Math.round(this.resizeState.startWidth + event.clientX - this.resizeState.startX)),\n )\n const nextWidths = [...this.resizeState.widths]\n nextWidths[this.resizeState.index] = width\n nextWidths[this.resizeState.index + 1] = pairWidth - width\n this.columnWidths = nextWidths\n this.cdr.markForCheck()\n }\n\n private stopColumnResize = () => {\n if (!this.resizeState)\n return\n\n window.removeEventListener('pointermove', this.onColumnResizeMove)\n window.removeEventListener('pointerup', this.stopColumnResize)\n window.removeEventListener('pointercancel', this.stopColumnResize)\n this.resizeState = null\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'markstream-angular-thematic-break-node',\n standalone: true,\n template: '<hr>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ThematicBreakNodeComponent {}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-vmr-container-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <div class=\"markstream-angular-vmr-container\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VmrContainerNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'vmr'}-container`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { STANDARD_HTML_TAGS } from 'stream-markdown-parser'\nimport { getCustomNodeComponents } from '../../customComponents'\nimport { AdmonitionNodeComponent } from '../AdmonitionNode/AdmonitionNode.component'\nimport { BlockquoteNodeComponent } from '../BlockquoteNode/BlockquoteNode.component'\nimport { CheckboxNodeComponent } from '../CheckboxNode/CheckboxNode.component'\nimport { CodeBlockNodeComponent } from '../CodeBlockNode/CodeBlockNode.component'\nimport { D2BlockNodeComponent } from '../D2BlockNode/D2BlockNode.component'\nimport { DefinitionListNodeComponent } from '../DefinitionListNode/DefinitionListNode.component'\nimport { DynamicNodeHostComponent } from '../DynamicNodeHost/DynamicNodeHost.component'\nimport { EmojiNodeComponent } from '../EmojiNode/EmojiNode.component'\nimport { EmphasisNodeComponent } from '../EmphasisNode/EmphasisNode.component'\nimport { FallbackComponent } from '../FallbackComponent/FallbackComponent.component'\nimport { FootnoteAnchorNodeComponent } from '../FootnoteAnchorNode/FootnoteAnchorNode.component'\nimport { FootnoteNodeComponent } from '../FootnoteNode/FootnoteNode.component'\nimport { FootnoteReferenceNodeComponent } from '../FootnoteReferenceNode/FootnoteReferenceNode.component'\nimport { HardBreakNodeComponent } from '../HardBreakNode/HardBreakNode.component'\nimport { HeadingNodeComponent } from '../HeadingNode/HeadingNode.component'\nimport { HighlightNodeComponent } from '../HighlightNode/HighlightNode.component'\nimport { HtmlBlockNodeComponent } from '../HtmlBlockNode/HtmlBlockNode.component'\nimport { HtmlInlineNodeComponent } from '../HtmlInlineNode/HtmlInlineNode.component'\nimport { ImageNodeComponent } from '../ImageNode/ImageNode.component'\nimport { InfographicBlockNodeComponent } from '../InfographicBlockNode/InfographicBlockNode.component'\nimport { InlineCodeNodeComponent } from '../InlineCodeNode/InlineCodeNode.component'\nimport { InsertNodeComponent } from '../InsertNode/InsertNode.component'\nimport { LinkNodeComponent } from '../LinkNode/LinkNode.component'\nimport { ListItemNodeComponent } from '../ListItemNode/ListItemNode.component'\nimport { ListNodeComponent } from '../ListNode/ListNode.component'\nimport { MathBlockNodeComponent } from '../MathBlockNode/MathBlockNode.component'\nimport { MathInlineNodeComponent } from '../MathInlineNode/MathInlineNode.component'\nimport { MermaidBlockNodeComponent } from '../MermaidBlockNode/MermaidBlockNode.component'\nimport { ParagraphNodeComponent } from '../ParagraphNode/ParagraphNode.component'\nimport { PreCodeNodeComponent } from '../PreCodeNode/PreCodeNode.component'\nimport { ReferenceNodeComponent } from '../ReferenceNode/ReferenceNode.component'\nimport { hasCompleteHtmlTagContent } from '../shared/node-helpers'\nimport {\n coerceBuiltinHtmlNode,\n coerceCustomHtmlNode,\n resolveHtmlTag,\n resolveNodeOutletCodeMode,\n resolveNodeOutletCustomComponent,\n resolveNodeOutletCustomInputs,\n} from '../shared/node-outlet-helpers'\nimport { StrikethroughNodeComponent } from '../StrikethroughNode/StrikethroughNode.component'\nimport { StrongNodeComponent } from '../StrongNode/StrongNode.component'\nimport { SubscriptNodeComponent } from '../SubscriptNode/SubscriptNode.component'\nimport { SuperscriptNodeComponent } from '../SuperscriptNode/SuperscriptNode.component'\nimport { TableNodeComponent } from '../TableNode/TableNode.component'\nimport { TextNodeComponent } from '../TextNode/TextNode.component'\nimport { ThematicBreakNodeComponent } from '../ThematicBreakNode/ThematicBreakNode.component'\nimport { VmrContainerNodeComponent } from '../VmrContainerNode/VmrContainerNode.component'\n\n@Component({\n selector: 'markstream-angular-node-outlet',\n standalone: true,\n imports: [\n CommonModule,\n forwardRef(() => AdmonitionNodeComponent),\n forwardRef(() => BlockquoteNodeComponent),\n forwardRef(() => CheckboxNodeComponent),\n forwardRef(() => CodeBlockNodeComponent),\n forwardRef(() => D2BlockNodeComponent),\n forwardRef(() => DefinitionListNodeComponent),\n forwardRef(() => DynamicNodeHostComponent),\n forwardRef(() => EmojiNodeComponent),\n forwardRef(() => EmphasisNodeComponent),\n forwardRef(() => FallbackComponent),\n forwardRef(() => FootnoteAnchorNodeComponent),\n forwardRef(() => FootnoteNodeComponent),\n forwardRef(() => FootnoteReferenceNodeComponent),\n forwardRef(() => HardBreakNodeComponent),\n forwardRef(() => HeadingNodeComponent),\n forwardRef(() => HighlightNodeComponent),\n forwardRef(() => HtmlBlockNodeComponent),\n forwardRef(() => HtmlInlineNodeComponent),\n forwardRef(() => ImageNodeComponent),\n forwardRef(() => InfographicBlockNodeComponent),\n forwardRef(() => InlineCodeNodeComponent),\n forwardRef(() => InsertNodeComponent),\n forwardRef(() => LinkNodeComponent),\n forwardRef(() => ListItemNodeComponent),\n forwardRef(() => ListNodeComponent),\n forwardRef(() => MathBlockNodeComponent),\n forwardRef(() => MathInlineNodeComponent),\n forwardRef(() => MermaidBlockNodeComponent),\n forwardRef(() => ParagraphNodeComponent),\n forwardRef(() => PreCodeNodeComponent),\n forwardRef(() => ReferenceNodeComponent),\n forwardRef(() => StrikethroughNodeComponent),\n forwardRef(() => StrongNodeComponent),\n forwardRef(() => SubscriptNodeComponent),\n forwardRef(() => SuperscriptNodeComponent),\n forwardRef(() => TableNodeComponent),\n forwardRef(() => TextNodeComponent),\n forwardRef(() => ThematicBreakNodeComponent),\n forwardRef(() => VmrContainerNodeComponent),\n ],\n template: `\n <ng-container *ngIf=\"resolvedCustomComponent as customComponent; else builtinTemplate\">\n <markstream-angular-dynamic-node-host\n [component]=\"customComponent\"\n [node]=\"customNode\"\n [context]=\"context\"\n [indexKey]=\"indexKey\"\n [inputs]=\"resolvedComponentInputs\"\n />\n </ng-container>\n\n <ng-template #builtinTemplate>\n <ng-container [ngSwitch]=\"resolvedType\">\n <markstream-angular-text-node *ngSwitchCase=\"'text'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-text-node *ngSwitchCase=\"'text_special'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-paragraph-node *ngSwitchCase=\"'paragraph'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-heading-node *ngSwitchCase=\"'heading'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-blockquote-node *ngSwitchCase=\"'blockquote'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-list-node *ngSwitchCase=\"'list'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-list-item-node *ngSwitchCase=\"'list_item'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-table-node *ngSwitchCase=\"'table'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-definition-list-node *ngSwitchCase=\"'definition_list'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-footnote-node *ngSwitchCase=\"'footnote'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-footnote-reference-node *ngSwitchCase=\"'footnote_reference'\" [node]=\"node\" />\n <markstream-angular-footnote-anchor-node *ngSwitchCase=\"'footnote_anchor'\" [node]=\"node\" />\n <markstream-angular-admonition-node *ngSwitchCase=\"'admonition'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-hardbreak-node *ngSwitchCase=\"'hardbreak'\" />\n <markstream-angular-link-node *ngSwitchCase=\"'link'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-image-node *ngSwitchCase=\"'image'\" [node]=\"node\" />\n <markstream-angular-inline-code-node *ngSwitchCase=\"'inline_code'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-strong-node *ngSwitchCase=\"'strong'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-emphasis-node *ngSwitchCase=\"'emphasis'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-strikethrough-node *ngSwitchCase=\"'strikethrough'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-highlight-node *ngSwitchCase=\"'highlight'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-insert-node *ngSwitchCase=\"'insert'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-subscript-node *ngSwitchCase=\"'subscript'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-superscript-node *ngSwitchCase=\"'superscript'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-checkbox-node *ngSwitchCase=\"'checkbox'\" [node]=\"node\" />\n <markstream-angular-checkbox-node *ngSwitchCase=\"'checkbox_input'\" [node]=\"node\" />\n <markstream-angular-emoji-node *ngSwitchCase=\"'emoji'\" [node]=\"node\" />\n <markstream-angular-reference-node *ngSwitchCase=\"'reference'\" [node]=\"node\" />\n <ng-container *ngSwitchCase=\"'html_block'\">\n <markstream-angular-text-node *ngIf=\"shouldEscapeHtmlTag; else htmlBlockNode\" [node]=\"escapedTextNode\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <ng-template #htmlBlockNode>\n <markstream-angular-html-block-node [node]=\"htmlRenderNode\" [context]=\"context\" />\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"'html_inline'\">\n <markstream-angular-text-node *ngIf=\"shouldEscapeHtmlTag; else htmlInlineNode\" [node]=\"escapedTextNode\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <ng-template #htmlInlineNode>\n <markstream-angular-html-inline-node [node]=\"htmlRenderNode\" [context]=\"context\" />\n </ng-template>\n </ng-container>\n <markstream-angular-vmr-container-node *ngSwitchCase=\"'vmr_container'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-thematic-break-node *ngSwitchCase=\"'thematic_break'\" />\n <markstream-angular-math-inline-node *ngSwitchCase=\"'math_inline'\" [node]=\"node\" />\n <markstream-angular-math-block-node *ngSwitchCase=\"'math_block'\" [node]=\"node\" />\n\n <ng-container *ngSwitchCase=\"'code_block'\">\n <markstream-angular-mermaid-block-node\n *ngIf=\"codeMode === 'mermaid'; else nonMermaidCode\"\n [node]=\"node\"\n [context]=\"context\"\n />\n <ng-template #nonMermaidCode>\n <markstream-angular-d2-block-node\n *ngIf=\"codeMode === 'd2'; else nonD2Code\"\n [node]=\"node\"\n [context]=\"context\"\n />\n </ng-template>\n <ng-template #nonD2Code>\n <markstream-angular-infographic-block-node\n *ngIf=\"codeMode === 'infographic'; else genericCode\"\n [node]=\"node\"\n [context]=\"context\"\n />\n </ng-template>\n <ng-template #genericCode>\n <markstream-angular-pre-code-node\n *ngIf=\"codeMode === 'pre'; else enhancedCode\"\n [node]=\"node\"\n [showLineNumbers]=\"true\"\n />\n </ng-template>\n <ng-template #enhancedCode>\n <markstream-angular-code-block-node [node]=\"node\" [context]=\"context\" />\n </ng-template>\n </ng-container>\n\n <markstream-angular-fallback-node *ngSwitchDefault [node]=\"fallbackNode\" [context]=\"context\" [indexKey]=\"indexKey\" />\n </ng-container>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NodeOutletComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get resolvedType() {\n return String((this.node as any)?.type || '')\n }\n\n get customComponentMap() {\n return this.context?.customComponents || getCustomNodeComponents(this.context?.customId)\n }\n\n get resolvedCustomComponent() {\n return resolveNodeOutletCustomComponent(this.node, this.context, this.customComponentMap)\n }\n\n get customNode() {\n return coerceCustomHtmlNode(this.node)\n }\n\n get codeMode() {\n return resolveNodeOutletCodeMode(this.node, this.context)\n }\n\n get htmlTag() {\n return resolveHtmlTag(this.node)\n }\n\n /**\n * Check if this HTML tag should be escaped (rendered as text) instead of being parsed as HTML.\n * This happens when:\n * 1. The node is html_block or html_inline\n * 2. The tag is NOT in the customHtmlTags whitelist\n * 3. The tag is NOT a standard HTML tag\n * 4. The tag is incomplete/malformed, so rendering it as HTML would swallow\n * surrounding content.\n */\n get shouldEscapeHtmlTag() {\n const type = this.resolvedType\n if (type !== 'html_block' && type !== 'html_inline')\n return false\n\n if (this.context?.htmlPolicy === 'escape')\n return true\n\n const tag = this.htmlTag\n if (!tag)\n return false\n\n // Check if tag is in whitelist\n const customHtmlTags = this.context?.customHtmlTags ?? []\n const isWhitelisted = customHtmlTags.some(t => String(t).toLowerCase() === tag)\n if (isWhitelisted)\n return false\n\n // Check if tag is a standard HTML tag\n if (STANDARD_HTML_TAGS.has(tag))\n return false\n\n if (hasCompleteHtmlTagContent((this.node as any)?.content ?? (this.node as any)?.raw, tag))\n return false\n\n return true\n }\n\n /**\n * Returns a text node for incomplete non-whitelisted, non-standard HTML tags.\n */\n get escapedTextNode(): AngularRenderableNode {\n const rawContent = String((this.node as any)?.content ?? (this.node as any)?.raw ?? '')\n\n return {\n type: 'text',\n content: rawContent,\n raw: rawContent,\n } as AngularRenderableNode\n }\n\n get htmlRenderNode() {\n return coerceBuiltinHtmlNode(this.node, this.resolvedType)\n }\n\n get fallbackNode() {\n return this.node\n }\n\n get resolvedComponentInputs() {\n return resolveNodeOutletCustomInputs(this.node, this.context)\n }\n}\n","import type { OnChanges } from '@angular/core'\nimport type { MarkdownIt, ParseOptions } from 'stream-markdown-parser'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { mergeCustomHtmlTags } from 'stream-markdown-parser'\nimport { parseNestedMarkdownToNodes } from '../../parseNestedMarkdownToNodes'\nimport { NodeOutletComponent } from '../NodeOutlet/NodeOutlet.component'\nimport { normalizeTokenAttrs } from '../shared/node-helpers'\nimport { SafeAttrsDirective } from '../shared/safe-attrs.directive'\n\ntype NestedRenderItem\n = | { kind: 'label', attrs: Record<string, string | true> | null, children: AngularRenderableNode[] }\n | { kind: 'node', node: AngularRenderableNode }\n\n@Component({\n selector: 'markstream-angular-nested-renderer',\n standalone: true,\n imports: [\n CommonModule,\n SafeAttrsDirective,\n forwardRef(() => NestedRendererComponent),\n forwardRef(() => NodeOutletComponent),\n ],\n template: `\n <ng-container *ngFor=\"let item of items; let idx = index; trackBy: trackByIndex\">\n <label *ngIf=\"item.kind === 'label'; else nodeTemplate\" [markstreamSafeAttrs]=\"item.attrs\">\n <markstream-angular-nested-renderer\n [nodes]=\"item.children\"\n [context]=\"context\"\n [indexPrefix]=\"childPrefix(idx)\"\n />\n </label>\n\n <ng-template #nodeTemplate>\n <markstream-angular-node-outlet\n [node]=\"$any(item).node\"\n [context]=\"context\"\n [indexKey]=\"childPrefix(idx)\"\n />\n </ng-template>\n </ng-container>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NestedRendererComponent implements OnChanges {\n @Input() node?: AngularRenderableNode | null\n @Input() nodes: readonly AngularRenderableNode[] | null | undefined\n @Input() content?: string | null\n @Input() loading?: boolean\n @Input() final?: boolean\n @Input() cacheKey?: string\n @Input() parseOptions?: ParseOptions\n @Input() customHtmlTags?: readonly string[]\n @Input() customMarkdownIt?: (markdown: MarkdownIt) => MarkdownIt\n @Input() context?: AngularRenderContext\n @Input() indexPrefix = 'nested'\n\n items: NestedRenderItem[] = []\n\n ngOnChanges() {\n this.items = this.buildItems(this.resolvedNodes)\n }\n\n trackByIndex = (index: number) => {\n return `${this.indexPrefix}-${index}`\n }\n\n childPrefix(index: number) {\n return `${this.indexPrefix}-${index}`\n }\n\n private get resolvedNodes() {\n return parseNestedMarkdownToNodes(\n {\n node: this.node as any,\n nodes: this.nodes as any,\n content: this.content,\n },\n {\n cacheKey: this.cacheKey,\n final: this.resolveFinal(),\n parseOptions: this.parseOptions ?? this.context?.parseOptions,\n customHtmlTags: this.resolveCustomHtmlTags(),\n customMarkdownIt: this.customMarkdownIt ?? this.context?.customMarkdownIt,\n },\n ) as AngularRenderableNode[]\n }\n\n private buildItems(nodes: readonly AngularRenderableNode[] | null | undefined) {\n const source = Array.isArray(nodes) ? nodes : []\n const items: NestedRenderItem[] = []\n\n for (let index = 0; index < source.length; index += 1) {\n const node = source[index]\n if (!node)\n continue\n\n if (node.type === 'label_open') {\n const children: AngularRenderableNode[] = []\n let cursor = index + 1\n for (; cursor < source.length; cursor += 1) {\n const segment = source[cursor]\n if (segment?.type === 'label_close')\n break\n if (segment)\n children.push(segment)\n }\n\n items.push({\n kind: 'label',\n attrs: normalizeTokenAttrs((node as any)?.attrs),\n children,\n })\n index = cursor\n continue\n }\n\n if (node.type === 'label_close')\n continue\n\n items.push({ kind: 'node', node })\n }\n\n return items\n }\n\n private resolveFinal() {\n if (typeof this.final === 'boolean')\n return this.final\n if (typeof this.loading === 'boolean')\n return !this.loading\n if (typeof (this.node as any)?.loading === 'boolean')\n return !(this.node as any).loading\n return this.context?.final\n }\n\n private resolveCustomHtmlTags() {\n return mergeCustomHtmlTags(this.context?.customHtmlTags, this.customHtmlTags)\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { capitalize, getNodeList, getString, sanitizeClassToken } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-admonition-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <div class=\"markstream-nested-admonition\" [class]=\"kindClass\">\n <div class=\"markstream-nested-admonition__title\">{{ resolvedTitle }}</div>\n <div class=\"markstream-nested-admonition__content\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdmonitionNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get kind() {\n return sanitizeClassToken(getString((this.node as any)?.kind || 'note')) || 'note'\n }\n\n get kindClass() {\n return `markstream-nested-admonition--${this.kind}`\n }\n\n get resolvedTitle() {\n return getString((this.node as any)?.title) || capitalize(this.kind)\n }\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'admonition'}-children`\n }\n}\n","import type { NodeRendererCodeBlockProps, NodeRendererD2Props, NodeRendererInfographicProps, NodeRendererMermaidProps } from './components/shared/node-helpers'\nimport type { CodeBlockMonacoOptions } from './types/monaco'\nimport { toSafeMermaidSvgMarkup } from 'stream-markdown-parser'\nimport { getD2 } from './optional/d2'\nimport { getInfographic } from './optional/infographic'\nimport { getKatex } from './optional/katex'\nimport { getMermaid } from './optional/mermaid'\nimport { getUseMonaco } from './optional/monaco'\nimport { extractRenderedSvg, toSafeSvgMarkup } from './sanitizeSvg'\nimport { resolveMonacoLanguageId } from './utils/languageIcon'\nimport { normalizeKaTeXRenderInput } from './utils/normalizeKaTeXRenderInput'\nimport { renderKaTeXWithBackpressure, setKaTeXCache, WORKER_BUSY_CODE } from './workers/katexWorkerClient'\nimport { canParseOffthread, findPrefixOffthread } from './workers/mermaidWorkerClient'\n\nlet mermaidRenderId = 0\nconst rootHandles = new WeakMap<HTMLElement, RenderedHtmlEnhancementHandle>()\ntype MermaidTheme = 'light' | 'dark'\n\nconst DARK_THEME_OVERRIDES: Record<string, string> = {\n N1: '#E5E7EB',\n N2: '#CBD5E1',\n N3: '#94A3B8',\n N4: '#64748B',\n N5: '#475569',\n N6: '#334155',\n N7: '#0B1220',\n B1: '#60A5FA',\n B2: '#3B82F6',\n B3: '#2563EB',\n B4: '#1D4ED8',\n B5: '#1E40AF',\n B6: '#111827',\n AA2: '#22D3EE',\n AA4: '#0EA5E9',\n AA5: '#0284C7',\n AB4: '#FBBF24',\n AB5: '#F59E0B',\n}\n\nexport interface EnhanceRenderedHtmlOptions {\n final?: boolean\n isDark?: boolean\n renderCodeBlocksAsPre?: boolean\n monacoOptions?: CodeBlockMonacoOptions\n d2ThemeId?: number | null\n d2DarkThemeId?: number | null\n showTooltips?: boolean\n codeBlockProps?: NodeRendererCodeBlockProps\n mermaidProps?: NodeRendererMermaidProps\n d2Props?: NodeRendererD2Props\n infographicProps?: NodeRendererInfographicProps\n onCopy?: (code: string) => void\n isCancelled?: () => boolean\n}\n\nexport interface RenderedHtmlEnhancementHandle {\n dispose: () => void\n}\n\nexport async function enhanceRenderedHtml(\n root: HTMLElement,\n options: EnhanceRenderedHtmlOptions = {},\n): Promise<RenderedHtmlEnhancementHandle> {\n disposeRenderedHtmlEnhancements(root)\n\n const cleanupFns: Array<() => void> = []\n let disposed = false\n const isActive = () => !disposed && options.isCancelled?.() !== true\n const handle: RenderedHtmlEnhancementHandle = {\n dispose: () => {\n if (disposed)\n return\n disposed = true\n for (let index = cleanupFns.length - 1; index >= 0; index -= 1) {\n try {\n cleanupFns[index]?.()\n }\n catch {\n // Best-effort cleanup only.\n }\n }\n if (rootHandles.get(root) === handle)\n rootHandles.delete(root)\n },\n }\n\n rootHandles.set(root, handle)\n\n if (!isActive())\n return handle\n\n await renderKatex(root, isActive)\n if (!isActive())\n return handle\n\n await renderMermaid(root, cleanupFns, options, isActive)\n if (!isActive())\n return handle\n\n if (options.final !== false) {\n await renderInfographic(root, cleanupFns, options, isActive)\n if (!isActive())\n return handle\n\n await renderD2(root, cleanupFns, options, isActive)\n if (!isActive())\n return handle\n\n if (!options.renderCodeBlocksAsPre)\n await renderMonaco(root, cleanupFns, options, isActive)\n }\n\n return handle\n}\n\nexport function disposeRenderedHtmlEnhancements(root: HTMLElement | null | undefined) {\n if (!root)\n return\n const existing = rootHandles.get(root)\n existing?.dispose()\n}\n\nfunction readKatexSource(node: HTMLElement, selector: string) {\n const sourceElement = node.querySelector<HTMLElement>(selector)\n return {\n sourceElement,\n source: (sourceElement?.textContent || (!sourceElement ? node.textContent : '') || '').trim(),\n }\n}\n\nfunction resolveKatexRenderTarget(node: HTMLElement, selector: string) {\n return node.querySelector<HTMLElement>(selector)\n}\n\nfunction hasRenderedKatex(node: HTMLElement, selector: string) {\n const renderTarget = resolveKatexRenderTarget(node, selector)\n const scope = renderTarget || node\n return !!scope.querySelector('.katex, .katex-display')\n}\n\nfunction writeKatexMarkup(\n node: HTMLElement,\n renderTarget: HTMLElement | null,\n markup: string,\n options: { renderedClass?: string } = {},\n) {\n if (renderTarget)\n renderTarget.innerHTML = markup\n else\n node.innerHTML = markup\n\n node.dataset.markstreamKatex = '1'\n if (options.renderedClass)\n node.classList.add(options.renderedClass)\n}\n\nfunction clearKatexMarkup(\n node: HTMLElement,\n renderTarget: HTMLElement | null,\n options: { renderedClass?: string } = {},\n) {\n if (renderTarget)\n renderTarget.innerHTML = ''\n delete node.dataset.markstreamKatex\n delete node.dataset.markstreamKatexSource\n if (options.renderedClass)\n node.classList.remove(options.renderedClass)\n}\n\nasync function renderKatex(root: HTMLElement, isActive: () => boolean) {\n const inlineNodes = Array.from(root.querySelectorAll<HTMLElement>('.markstream-nested-math'))\n for (const node of inlineNodes) {\n if (!isActive())\n return\n if (node.dataset.markstreamKatexManaged === '1')\n continue\n const { source } = readKatexSource(node, '.markstream-nested-math__source')\n const renderTarget = resolveKatexRenderTarget(node, '.markstream-nested-math__render')\n if (!source) {\n clearKatexMarkup(node, renderTarget)\n continue\n }\n if (\n node.dataset.markstreamKatex === '1'\n && node.dataset.markstreamKatexSource === source\n && hasRenderedKatex(node, '.markstream-nested-math__render')\n ) {\n continue\n }\n try {\n writeKatexMarkup(node, renderTarget, await renderKatexMarkup(source, node.dataset.display === 'block'))\n node.dataset.markstreamKatexSource = source\n }\n catch {\n clearKatexMarkup(node, renderTarget)\n }\n }\n\n const blockNodes = Array.from(root.querySelectorAll<HTMLElement>('.markstream-nested-math-block'))\n for (const node of blockNodes) {\n if (!isActive())\n return\n if (node.dataset.markstreamKatexManaged === '1')\n continue\n const { source } = readKatexSource(node, '.markstream-nested-math-block__source')\n const renderTarget = resolveKatexRenderTarget(node, '.markstream-nested-math-block__render')\n if (!source) {\n clearKatexMarkup(node, renderTarget, { renderedClass: 'markstream-nested-math-block--rendered' })\n continue\n }\n if (\n node.dataset.markstreamKatex === '1'\n && node.dataset.markstreamKatexSource === source\n && hasRenderedKatex(node, '.markstream-nested-math-block__render')\n ) {\n continue\n }\n try {\n writeKatexMarkup(node, renderTarget, await renderKatexMarkup(source, true), {\n renderedClass: 'markstream-nested-math-block--rendered',\n })\n node.dataset.markstreamKatexSource = source\n }\n catch {\n clearKatexMarkup(node, renderTarget, { renderedClass: 'markstream-nested-math-block--rendered' })\n }\n }\n}\n\nasync function renderKatexMarkup(source: string, displayMode: boolean) {\n const normalizedSource = normalizeKaTeXRenderInput(source)\n try {\n return await renderKaTeXWithBackpressure(normalizedSource, displayMode, {\n timeout: 1500,\n waitTimeout: 0,\n maxRetries: 0,\n })\n }\n catch (error: any) {\n const code = error?.code || error?.name\n const isWorkerInitFailure = code === 'WORKER_INIT_ERROR' || error?.fallbackToRenderer\n const isBusyOrTimeout = code === WORKER_BUSY_CODE || code === 'WORKER_TIMEOUT'\n if (!isWorkerInitFailure && !isBusyOrTimeout)\n throw error\n }\n\n const katex = await getKatex()\n if (!katex)\n throw new Error('KaTeX renderer is not available.')\n\n const html = katex.renderToString(normalizedSource, {\n displayMode,\n throwOnError: false,\n })\n setKaTeXCache(normalizedSource, displayMode, html)\n return html\n}\n\nasync function renderMermaid(\n root: HTMLElement,\n cleanupFns: Array<() => void>,\n options: EnhanceRenderedHtmlOptions,\n isActive: () => boolean,\n) {\n const strictMode = options.mermaidProps?.isStrict !== false\n const mermaid = await getMermaid({\n startOnLoad: false,\n securityLevel: strictMode ? 'strict' : 'loose',\n suppressErrorRendering: true,\n ...(strictMode ? { flowchart: { htmlLabels: false } } : {}),\n })\n if (!mermaid || !isActive())\n return\n\n const codeNodes = Array.from(root.querySelectorAll<HTMLElement>('pre > code.language-mermaid'))\n for (const codeNode of codeNodes) {\n if (!isActive())\n return\n const pre = codeNode.parentElement as HTMLElement | null\n const source = (codeNode.textContent || '').trim()\n if (!pre || !source)\n continue\n\n const originalPre = pre.cloneNode(true) as HTMLElement\n const shell = createEnhancedBlockShell(\n 'mermaid',\n 'Mermaid',\n source,\n true,\n options,\n {\n showHeader: options.mermaidProps?.showHeader !== false,\n },\n )\n pre.replaceWith(shell.wrapper)\n\n try {\n const theme: MermaidTheme = options.isDark ? 'dark' : 'light'\n let sourceToRender = source\n if (options.final === false) {\n try {\n await canParseMermaidWithFallback(source, theme, mermaid, options)\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n return\n const prefix = await findMermaidPrefixCandidate(source, theme, options)\n if (!isActive())\n return\n if (!prefix) {\n shell.wrapper.replaceWith(originalPre)\n continue\n }\n sourceToRender = prefix\n }\n }\n\n const renderId = `markstream-angular-mermaid-${++mermaidRenderId}`\n const rendered = await withTimeout(\n () => Promise.resolve(mermaid.render(renderId, applyMermaidThemeTo(sourceToRender, theme))),\n options.final === false\n ? Number(options.mermaidProps?.renderTimeoutMs ?? 2500)\n : Number(options.mermaidProps?.fullRenderTimeoutMs ?? 4000),\n )\n if (!isActive())\n return\n const svg = typeof rendered === 'string' ? rendered : rendered?.svg\n if (!svg)\n continue\n const safeSvg = toSafeMermaidSvgMarkup(svg)\n if (!safeSvg)\n continue\n shell.body.innerHTML = safeSvg\n shell.body.classList.add('markstream-angular-mermaid')\n shell.wrapper.dataset.markstreamMermaid = '1'\n if (options.mermaidProps?.enableMermaidInteractions === true && typeof rendered !== 'string') {\n try {\n rendered?.bindFunctions?.(shell.body)\n }\n catch {}\n }\n cleanupFns.push(() => {\n if (shell.wrapper.isConnected)\n shell.wrapper.replaceWith(originalPre.cloneNode(true))\n })\n }\n catch {\n shell.wrapper.replaceWith(originalPre)\n }\n }\n}\n\nfunction applyMermaidThemeTo(source: string, theme: MermaidTheme) {\n const trimmed = source.trimStart()\n if (trimmed.startsWith('%%{'))\n return source\n const themeValue = theme === 'dark' ? 'dark' : 'default'\n return `%%{init: {\"theme\": \"${themeValue}\"}}%%\\n${source}`\n}\n\nasync function canParseMermaidWithFallback(\n source: string,\n theme: MermaidTheme,\n mermaid: any,\n options: EnhanceRenderedHtmlOptions,\n) {\n const workerTimeout = Number(options.mermaidProps?.workerTimeoutMs ?? 1400)\n const parseTimeout = Number(options.mermaidProps?.parseTimeoutMs ?? 1800)\n try {\n const ok = await canParseOffthread(source, theme, workerTimeout)\n if (ok)\n return true\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n throw error\n }\n\n const themedSource = applyMermaidThemeTo(source, theme)\n if (typeof mermaid?.parse === 'function') {\n await withTimeout(() => Promise.resolve(mermaid.parse(themedSource)), parseTimeout)\n return true\n }\n\n const renderId = `markstream-angular-mermaid-parse-${++mermaidRenderId}`\n await withTimeout(() => Promise.resolve(mermaid.render(renderId, themedSource)), parseTimeout)\n return true\n}\n\nasync function findMermaidPrefixCandidate(\n source: string,\n theme: MermaidTheme,\n options: EnhanceRenderedHtmlOptions,\n) {\n const workerTimeout = Number(options.mermaidProps?.workerTimeoutMs ?? 1400)\n try {\n const prefix = await findPrefixOffthread(source, theme, workerTimeout)\n if (prefix)\n return prefix\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n throw error\n }\n return getSafeMermaidPrefixCandidate(source)\n}\n\nfunction getSafeMermaidPrefixCandidate(source: string) {\n const lines = source.split('\\n')\n while (lines.length > 0) {\n const lastRaw = lines[lines.length - 1]\n const last = lastRaw.trimEnd()\n if (!last) {\n lines.pop()\n continue\n }\n const looksDangling = /^[-=~>|<\\s]+$/.test(last.trim())\n || /(?:--|==|~~|->|<-|-\\||-\\)|-x|o-|\\|-|\\.-)\\s*$/.test(last)\n || /[-|><]$/.test(last)\n || /(?:graph|flowchart|sequenceDiagram|classDiagram|stateDiagram|erDiagram|gantt)\\s*$/i.test(last)\n if (!looksDangling)\n break\n lines.pop()\n }\n return lines.join('\\n')\n}\n\nfunction withTimeout<T>(run: () => Promise<T>, timeoutMs: number) {\n if (!timeoutMs || timeoutMs <= 0)\n return run()\n\n return new Promise<T>((resolve, reject) => {\n let settled = false\n const timer = globalThis.setTimeout(() => {\n if (settled)\n return\n settled = true\n reject(new Error('Operation timed out'))\n }, timeoutMs)\n\n run()\n .then((value) => {\n if (settled)\n return\n settled = true\n clearTimeout(timer)\n resolve(value)\n })\n .catch((error) => {\n if (settled)\n return\n settled = true\n clearTimeout(timer)\n reject(error)\n })\n })\n}\n\nasync function renderInfographic(\n root: HTMLElement,\n cleanupFns: Array<() => void>,\n options: EnhanceRenderedHtmlOptions,\n isActive: () => boolean,\n) {\n const InfographicClass = await getInfographic()\n if (!InfographicClass || !isActive())\n return\n\n const codeNodes = Array.from(root.querySelectorAll<HTMLElement>('pre[data-markstream-code-block=\"1\"] > code.language-infographic'))\n for (const codeNode of codeNodes) {\n if (!isActive())\n return\n const pre = codeNode.parentElement as HTMLElement | null\n const source = codeNode.textContent || ''\n if (!pre || !source.trim())\n continue\n\n const originalPre = pre.cloneNode(true) as HTMLElement\n const shell = createEnhancedBlockShell('infographic', 'Infographic', source, true, options, {\n showHeader: options.infographicProps?.showHeader !== false,\n })\n shell.body.style.minHeight = '320px'\n shell.body.style.height = '360px'\n pre.replaceWith(shell.wrapper)\n\n try {\n const instance = new InfographicClass({\n container: shell.body,\n width: '100%',\n height: '100%',\n })\n instance.render(source)\n\n let frameId: number | null = null\n if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n frameId = window.requestAnimationFrame(() => {\n const actualHeight = shell.body.scrollHeight\n if (actualHeight > 0)\n shell.body.style.height = `${Math.min(Math.max(actualHeight, 260), 720)}px`\n })\n }\n\n cleanupFns.push(() => {\n if (frameId != null && typeof window !== 'undefined')\n window.cancelAnimationFrame(frameId)\n instance.destroy?.()\n if (shell.wrapper.isConnected)\n shell.wrapper.replaceWith(originalPre.cloneNode(true))\n })\n shell.wrapper.dataset.markstreamInfographic = '1'\n }\n catch {\n shell.wrapper.replaceWith(originalPre)\n }\n }\n}\n\nasync function renderD2(\n root: HTMLElement,\n cleanupFns: Array<() => void>,\n options: EnhanceRenderedHtmlOptions,\n isActive: () => boolean,\n) {\n const D2Ctor = await getD2()\n if (!D2Ctor || !isActive())\n return\n\n const codeNodes = Array.from(root.querySelectorAll<HTMLElement>('pre[data-markstream-code-block=\"1\"] > code.language-d2, pre[data-markstream-code-block=\"1\"] > code.language-d2lang'))\n for (const codeNode of codeNodes) {\n if (!isActive())\n return\n const pre = codeNode.parentElement as HTMLElement | null\n const source = codeNode.textContent || ''\n if (!pre || !source.trim())\n continue\n\n const originalPre = pre.cloneNode(true) as HTMLElement\n const shell = createEnhancedBlockShell('d2', 'D2', source, true, options, {\n showHeader: options.d2Props?.showHeader !== false,\n })\n pre.replaceWith(shell.wrapper)\n\n try {\n const instance = createD2Instance(D2Ctor)\n if (!instance || typeof instance.compile !== 'function' || typeof instance.render !== 'function')\n throw new TypeError('D2 instance is missing compile/render methods.')\n\n const compileResult = await instance.compile(source)\n const diagram = compileResult?.diagram ?? compileResult\n const baseRenderOptions = compileResult?.renderOptions ?? compileResult?.options ?? {}\n const resolvedThemeId = options.d2ThemeId ?? baseRenderOptions.themeID\n const resolvedDarkThemeId = options.d2DarkThemeId ?? baseRenderOptions.darkThemeID\n const renderOptions: Record<string, any> = { ...baseRenderOptions }\n renderOptions.themeID = options.isDark && resolvedDarkThemeId != null\n ? resolvedDarkThemeId\n : resolvedThemeId\n renderOptions.darkThemeID = null\n renderOptions.darkThemeOverrides = null\n if (options.isDark) {\n const baseOverrides = baseRenderOptions.themeOverrides && typeof baseRenderOptions.themeOverrides === 'object'\n ? baseRenderOptions.themeOverrides\n : null\n renderOptions.themeOverrides = {\n ...DARK_THEME_OVERRIDES,\n ...(baseOverrides || {}),\n }\n }\n\n const renderResult = await instance.render(diagram, renderOptions)\n if (!isActive())\n return\n const safeSvg = toSafeSvgMarkup(extractRenderedSvg(renderResult))\n if (!safeSvg)\n throw new Error('D2 render returned empty output.')\n\n shell.body.innerHTML = safeSvg\n shell.wrapper.dataset.markstreamD2 = '1'\n cleanupFns.push(() => {\n if (shell.wrapper.isConnected)\n shell.wrapper.replaceWith(originalPre.cloneNode(true))\n })\n }\n catch {\n shell.wrapper.replaceWith(originalPre)\n }\n }\n}\n\nasync function renderMonaco(\n root: HTMLElement,\n cleanupFns: Array<() => void>,\n options: EnhanceRenderedHtmlOptions,\n isActive: () => boolean,\n) {\n const monacoModule = await getUseMonaco()\n if (!monacoModule || typeof monacoModule.useMonaco !== 'function' || !isActive())\n return\n\n const preNodes = Array.from(root.querySelectorAll<HTMLElement>('pre[data-markstream-code-block=\"1\"]'))\n for (const pre of preNodes) {\n if (!isActive())\n return\n const codeNode = pre.querySelector<HTMLElement>('code')\n if (!codeNode)\n continue\n\n const rawLanguage = resolveCodeLanguage(pre, codeNode)\n const normalizedLanguage = rawLanguage.trim().toLowerCase()\n if (normalizedLanguage === 'mermaid' || normalizedLanguage === 'infographic' || normalizedLanguage === 'd2' || normalizedLanguage === 'd2lang')\n continue\n\n const source = codeNode.textContent || ''\n const diff = pre.dataset.markstreamDiff === '1'\n const originalCode = decodeDataPayload(pre.dataset.markstreamOriginal)\n const updatedCode = decodeDataPayload(pre.dataset.markstreamUpdated)\n const monacoLanguage = resolveMonacoLanguage(rawLanguage)\n const displayLanguage = rawLanguage.trim() || monacoLanguage\n const preStyle = typeof window !== 'undefined' ? window.getComputedStyle(pre) : null\n const codeStyle = typeof window !== 'undefined' ? window.getComputedStyle(codeNode) : null\n const measuredPreHeight = pre.getBoundingClientRect().height\n const fontSize = readCssPixels(codeStyle?.fontSize) ?? 13\n const lineHeight = readCssPixels(codeStyle?.lineHeight) ?? readCssPixels(preStyle?.lineHeight)\n const paddingTop = readCssPixels(preStyle?.paddingTop)\n const paddingBottom = readCssPixels(preStyle?.paddingBottom)\n const fontFamily = codeStyle?.fontFamily || preStyle?.fontFamily || undefined\n const shell = createEnhancedBlockShell(\n 'code',\n diff ? `Diff / ${displayLanguage}` : `Code / ${displayLanguage}`,\n source,\n false,\n options,\n {\n showHeader: options.codeBlockProps?.showHeader !== false,\n },\n )\n shell.body.classList.add('markstream-angular-enhanced-block__body--code')\n shell.body.style.minHeight = `${measuredPreHeight > 0 ? Math.ceil(measuredPreHeight) : estimateCodeBlockHeight(diff ? updatedCode || source : source, diff)}px`\n if (preStyle) {\n shell.wrapper.style.marginTop = preStyle.marginTop\n shell.wrapper.style.marginRight = preStyle.marginRight\n shell.wrapper.style.marginBottom = preStyle.marginBottom\n shell.wrapper.style.marginLeft = preStyle.marginLeft\n }\n const originalPre = pre.cloneNode(true) as HTMLElement\n pre.replaceWith(shell.wrapper)\n\n const configuredUnsafeCSS = typeof options.monacoOptions?.unsafeCSS === 'string'\n ? options.monacoOptions.unsafeCSS\n : ''\n const runtimeUnsafeCSS = `[data-file], [data-diff] { --diffs-min-number-column-width-default: 4ch !important; }\n${configuredUnsafeCSS}`.trim()\n const helpers = monacoModule.useMonaco({\n themes: ['vitesse-dark', 'vitesse-light'],\n languages: Array.from(new Set([monacoLanguage, 'plaintext'])),\n readOnly: true,\n minimap: { enabled: false },\n lineNumbers: 'on',\n wordWrap: 'off',\n revealDebounceMs: 75,\n MAX_HEIGHT: 500,\n fontSize,\n ...(lineHeight ? { lineHeight } : {}),\n ...(fontFamily ? { fontFamily } : {}),\n ...(paddingTop != null || paddingBottom != null\n ? { padding: { top: paddingTop ?? 0, bottom: paddingBottom ?? 0 } }\n : {}),\n ...(options.monacoOptions || {}),\n // createEnhancedBlockShell already renders the code header. Prevent the\n // enhanced runtime from adding a second `code.<language>` file header.\n disableFileHeader: true,\n unsafeCSS: runtimeUnsafeCSS,\n })\n\n try {\n if (diff && typeof helpers.createDiffEditor === 'function') {\n await helpers.createDiffEditor(\n shell.body,\n originalCode,\n updatedCode || source,\n monacoLanguage,\n )\n }\n else {\n await helpers.createEditor?.(\n shell.body,\n diff ? updatedCode || source : source,\n monacoLanguage,\n )\n }\n if (!isActive())\n return\n\n await helpers.setTheme?.(options.isDark ? 'vitesse-dark' : 'vitesse-light')\n shell.wrapper.dataset.markstreamMonaco = '1'\n if (diff)\n shell.wrapper.dataset.markstreamMonacoDiff = '1'\n cleanupFns.push(() => {\n try {\n helpers.cleanupEditor?.()\n }\n finally {\n if (shell.wrapper.isConnected)\n shell.wrapper.replaceWith(originalPre.cloneNode(true))\n }\n })\n }\n catch {\n try {\n helpers.cleanupEditor?.()\n }\n catch {\n // Ignore cleanup failures during fallback.\n }\n shell.wrapper.replaceWith(originalPre)\n }\n }\n}\n\nfunction createD2Instance(D2Ctor: any) {\n if (typeof D2Ctor === 'function') {\n const instance = new D2Ctor()\n if (instance && typeof instance.compile === 'function')\n return instance\n if (typeof D2Ctor.compile === 'function')\n return D2Ctor\n }\n\n if (D2Ctor?.D2 && typeof D2Ctor.D2 === 'function')\n return new D2Ctor.D2()\n\n if (typeof D2Ctor?.compile === 'function')\n return D2Ctor\n\n return null\n}\n\nfunction resolveCodeLanguage(pre: HTMLElement, codeNode: HTMLElement) {\n const explicit = pre.dataset.markstreamLanguage?.trim()\n if (explicit)\n return explicit\n\n const languageClass = Array.from(codeNode.classList).find(className => className.startsWith('language-'))\n return languageClass ? languageClass.slice('language-'.length) : 'plaintext'\n}\n\nfunction resolveMonacoLanguage(language: string) {\n return resolveMonacoLanguageId(language)\n}\n\nfunction estimateCodeBlockHeight(source: string, diff: boolean) {\n const lineCount = Math.max(1, source.split('\\n').length)\n const perLine = diff ? 20 : 18\n const base = diff ? 180 : 96\n return Math.min(520, base + lineCount * perLine)\n}\n\nfunction readCssPixels(value: string | null | undefined) {\n if (!value || value === 'normal')\n return undefined\n\n const parsed = Number.parseFloat(value)\n return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined\n}\n\nfunction decodeDataPayload(value: string | null | undefined) {\n if (!value)\n return ''\n\n const globalBuffer = (globalThis as any)?.require?.('buffer')?.Buffer\n if (globalBuffer?.from)\n return globalBuffer.from(value, 'base64').toString('utf8')\n\n if (typeof globalThis.atob === 'function' && typeof TextDecoder !== 'undefined') {\n const binary = globalThis.atob(value)\n const bytes = Uint8Array.from(binary, char => char.charCodeAt(0))\n return new TextDecoder().decode(bytes)\n }\n\n return ''\n}\n\nfunction createEnhancedBlockShell(\n kind: 'code' | 'd2' | 'infographic' | 'mermaid',\n label: string,\n source: string,\n showSourceDetails: boolean,\n options: EnhanceRenderedHtmlOptions,\n shellOptions: {\n showHeader?: boolean\n } = {},\n) {\n const wrapper = document.createElement('div')\n wrapper.className = `markstream-angular-enhanced-block markstream-angular-enhanced-block--${kind}`\n\n if (shellOptions.showHeader !== false) {\n const header = document.createElement('div')\n header.className = 'markstream-angular-enhanced-block__header'\n\n const badge = document.createElement('span')\n badge.className = 'markstream-angular-enhanced-block__badge'\n badge.textContent = label\n\n header.appendChild(badge)\n header.appendChild(createHeaderActions(source, options))\n wrapper.appendChild(header)\n }\n\n const body = document.createElement('div')\n body.className = 'markstream-angular-enhanced-block__body'\n wrapper.appendChild(body)\n\n if (showSourceDetails) {\n const details = document.createElement('details')\n details.className = 'markstream-angular-enhanced-block__details'\n\n const summary = document.createElement('summary')\n summary.textContent = 'Source'\n details.appendChild(summary)\n\n const sourcePre = document.createElement('pre')\n sourcePre.className = 'markstream-angular-enhanced-block__source'\n const code = document.createElement('code')\n code.textContent = source\n sourcePre.appendChild(code)\n details.appendChild(sourcePre)\n\n wrapper.appendChild(details)\n }\n\n return { wrapper, body }\n}\n\nfunction createHeaderActions(source: string, options: EnhanceRenderedHtmlOptions) {\n const actions = document.createElement('div')\n actions.className = 'markstream-angular-enhanced-block__actions'\n\n const copyButton = document.createElement('button')\n copyButton.type = 'button'\n copyButton.className = 'markstream-angular-enhanced-block__action'\n copyButton.textContent = 'Copy'\n if (options.showTooltips !== false)\n copyButton.title = 'Copy source'\n\n copyButton.addEventListener('click', () => {\n void copyText(source)\n options.onCopy?.(source)\n })\n\n actions.appendChild(copyButton)\n return actions\n}\n\nasync function copyText(source: string) {\n try {\n if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(source)\n return\n }\n }\n catch {\n // Fall through to the textarea fallback below.\n }\n\n if (typeof document === 'undefined')\n return\n\n const textarea = document.createElement('textarea')\n textarea.value = source\n textarea.setAttribute('readonly', 'true')\n textarea.style.position = 'fixed'\n textarea.style.opacity = '0'\n textarea.style.pointerEvents = 'none'\n document.body.appendChild(textarea)\n textarea.select()\n try {\n document.execCommand('copy')\n }\n catch {\n // Ignore copy failures; the output callback still fires.\n }\n finally {\n textarea.remove()\n }\n}\n","import type { OnDestroy } from '@angular/core'\nimport type { SmoothMarkdownStreamOptions, SmoothMarkdownStreamSnapshot } from 'markstream-core'\nimport { Injectable } from '@angular/core'\nimport { createSmoothMarkdownStream } from 'markstream-core'\n\nexport type { SmoothMarkdownStreamOptions }\n\n@Injectable()\nexport class SmoothMarkdownStreamService implements OnDestroy {\n private controller: ReturnType<typeof createSmoothMarkdownStream> | null = null\n private snapshot: SmoothMarkdownStreamSnapshot = {\n source: '',\n visible: '',\n done: false,\n paused: false,\n pendingChars: 0,\n caughtUp: true,\n final: false,\n }\n\n private readonly listeners = new Set<() => void>()\n private unsubscribeFromController?: () => void\n\n init(options: SmoothMarkdownStreamOptions = {}): void {\n if (this.controller)\n return\n this.controller = createSmoothMarkdownStream(options)\n this.syncSnapshot()\n this.unsubscribeFromController = this.controller.subscribe(() => this.syncSnapshot())\n }\n\n ngOnDestroy(): void {\n this.unsubscribeFromController?.()\n this.unsubscribeFromController = undefined\n if (this.controller) {\n this.controller.destroy()\n this.controller = null\n }\n this.listeners.clear()\n }\n\n /**\n * Subscribe to snapshot updates. Called when the controller's visible\n * content advances during smooth streaming. The listener is invoked\n * after each snapshot sync so that Angular components can trigger\n * rebuild / markForCheck.\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n return () => {\n this.listeners.delete(listener)\n }\n }\n\n get source(): string { return this.snapshot.source }\n get visible(): string { return this.snapshot.visible }\n get done(): boolean { return this.snapshot.done }\n get caughtUp(): boolean { return this.snapshot.caughtUp }\n get final(): boolean { return this.snapshot.final }\n get pendingChars(): number { return this.snapshot.pendingChars }\n\n enqueue(chunk: string): void { this.controller?.enqueue(chunk) }\n finish(options?: { flush?: boolean }): void { this.controller?.finish(options) }\n flush(): void { this.controller?.flush() }\n reset(initialMarkdown?: string): void { this.controller?.reset(initialMarkdown) }\n pause(): void { this.controller?.pause() }\n resume(): void { this.controller?.resume() }\n\n private syncSnapshot(): void {\n if (this.controller)\n this.snapshot = this.controller.getSnapshot()\n for (const listener of this.listeners)\n listener()\n }\n}\n","export const DEFAULT_NODE_HEIGHT = 32\nexport const MAX_DEFERRED_NODE_COUNT = 900\n\nexport interface LiveRange {\n start: number\n end: number\n}\n\nexport interface DeferNodesOptions {\n deferNodesUntilVisible?: boolean\n maxLiveNodes?: number\n parsedNodeCount: number\n viewportPriority?: boolean\n virtualizationEnabled: boolean\n}\n\nexport function resolveVirtualizationEnabled(parsedNodeCount: number, maxLiveNodes?: number) {\n const configuredMaxLiveNodes = Math.trunc(maxLiveNodes ?? 320)\n if (!Number.isFinite(configuredMaxLiveNodes) || configuredMaxLiveNodes <= 0)\n return false\n const resolvedMaxLiveNodes = Math.max(1, configuredMaxLiveNodes)\n return parsedNodeCount > resolvedMaxLiveNodes\n}\n\nexport function resolveDeferNodes(options: DeferNodesOptions) {\n if (options.deferNodesUntilVisible === false)\n return false\n const configuredMaxLiveNodes = Math.trunc(options.maxLiveNodes ?? 320)\n if (!Number.isFinite(configuredMaxLiveNodes) || configuredMaxLiveNodes <= 0)\n return false\n if (options.virtualizationEnabled)\n return false\n if (options.parsedNodeCount > MAX_DEFERRED_NODE_COUNT)\n return false\n return options.viewportPriority !== false\n}\n\nexport function resolveAverageNodeHeight(\n nodeHeights: ReadonlyMap<number, number>,\n fallback = DEFAULT_NODE_HEIGHT,\n) {\n if (!nodeHeights.size)\n return fallback\n\n let total = 0\n for (const height of nodeHeights.values())\n total += height\n\n return Math.max(16, total / nodeHeights.size)\n}\n\nexport function estimateHeightRange(\n start: number,\n end: number,\n nodeHeights: ReadonlyMap<number, number>,\n averageNodeHeight: number,\n) {\n if (start >= end)\n return 0\n\n let total = 0\n for (let index = start; index < end; index += 1)\n total += nodeHeights.get(index) ?? averageNodeHeight\n return total\n}\n\nexport function computeLiveRange(\n total: number,\n focusIndex: number,\n maxLiveNodes?: number,\n liveNodeBuffer?: number,\n): LiveRange {\n if (!total)\n return { start: 0, end: 0 }\n\n const resolvedMaxLiveNodes = Math.max(1, Math.trunc(maxLiveNodes ?? 320))\n const resolvedBuffer = Math.max(0, Math.trunc(liveNodeBuffer ?? 60))\n const focus = Math.max(0, Math.min(Math.trunc(focusIndex), total - 1))\n\n let start = Math.max(0, focus - resolvedBuffer)\n let end = Math.min(total, focus + resolvedBuffer + 1)\n const size = end - start\n\n if (size > resolvedMaxLiveNodes) {\n const excess = size - resolvedMaxLiveNodes\n start += Math.ceil(excess / 2)\n end -= Math.floor(excess / 2)\n }\n else if (size < resolvedMaxLiveNodes) {\n const missing = resolvedMaxLiveNodes - size\n start = Math.max(0, start - Math.ceil(missing / 2))\n end = Math.min(total, end + Math.floor(missing / 2))\n }\n\n return {\n start: Math.max(0, Math.min(start, total)),\n end: Math.max(0, Math.min(Math.max(end, start), total)),\n }\n}\n","import { InjectionToken } from '@angular/core'\n\nexport interface SmoothStreamingScope {\n isSmoothStreamingEnabled: () => boolean\n}\n\nexport const MARKSTREAM_SMOOTH_STREAMING_SCOPE\n = new InjectionToken<SmoothStreamingScope>('MARKSTREAM_SMOOTH_STREAMING_SCOPE')\n","import type { AfterViewInit, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core'\nimport type { SmoothMarkdownStreamOptions } from 'markstream-core'\nimport type { RenderedHtmlEnhancementHandle } from '../../enhanceRenderedHtml'\nimport type {\n AngularRenderableNode,\n AngularRenderContext,\n CodeBlockPreviewPayload,\n NodeRendererEvents,\n NodeRendererProps,\n} from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core'\nimport { getCustomNodeComponents, subscribeCustomComponents } from '../../customComponents'\nimport { disposeRenderedHtmlEnhancements, enhanceRenderedHtml } from '../../enhanceRenderedHtml'\nimport { SmoothMarkdownStreamService } from '../../services/smooth-markdown-stream.service'\nimport { NodeOutletComponent } from '../NodeOutlet/NodeOutlet.component'\nimport {\n buildRenderContext,\n resolveParsedNodes,\n} from '../shared/node-helpers'\nimport {\n computeLiveRange,\n estimateHeightRange,\n resolveAverageNodeHeight,\n resolveDeferNodes,\n resolveVirtualizationEnabled,\n} from '../shared/render-window'\nimport { MARKSTREAM_SMOOTH_STREAMING_SCOPE } from '../shared/smooth-streaming-scope'\n\ninterface VisibleNodeEntry {\n node: AngularRenderableNode\n index: number\n render: boolean\n animate: boolean\n placeholderHeight: number\n}\n\ninterface ObserverConfig {\n root: Element | null\n rootMargin: string\n threshold: number\n}\n\ninterface IdleDeadlineLike {\n timeRemaining?: () => number\n}\n\nconst SCROLL_PARENT_OVERFLOW_RE = /auto|scroll|overlay/i\n\n@Component({\n selector: 'markstream-angular',\n standalone: true,\n imports: [CommonModule, NodeOutletComponent],\n providers: [\n {\n provide: MARKSTREAM_SMOOTH_STREAMING_SCOPE,\n useExisting: forwardRef(() => NodeRendererComponent),\n },\n ],\n template: `\n <div\n #root\n class=\"markstream-angular markdown-renderer\"\n [class.dark]=\"isDark\"\n [class.virtualized]=\"virtualizationEnabled\"\n (click)=\"click.emit($event)\"\n (mouseover)=\"handleMouseOver($event)\"\n (mouseout)=\"handleMouseOut($event)\"\n >\n <div\n *ngIf=\"topSpacerHeight > 0\"\n class=\"node-spacer\"\n [style.height.px]=\"topSpacerHeight\"\n aria-hidden=\"true\"\n ></div>\n\n <div\n *ngFor=\"let entry of visibleEntries; trackBy: trackByEntry\"\n class=\"node-slot\"\n [attr.data-node-index]=\"entry.index\"\n [attr.data-node-type]=\"entry.node.type\"\n >\n <div\n *ngIf=\"entry.render; else nodePlaceholder\"\n class=\"node-content\"\n [class.fade-node]=\"entry.animate\"\n [class.typewriter-node]=\"entry.animate\"\n [attr.data-node-index]=\"entry.index\"\n >\n <markstream-angular-node-outlet\n [node]=\"entry.node\"\n [context]=\"renderContext\"\n [indexKey]=\"entryIndexKey(entry.index)\"\n />\n </div>\n\n <ng-template #nodePlaceholder>\n <div class=\"node-placeholder\" [style.height.px]=\"entry.placeholderHeight\"></div>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"bottomSpacerHeight > 0\"\n class=\"node-spacer\"\n [style.height.px]=\"bottomSpacerHeight\"\n aria-hidden=\"true\"\n ></div>\n\n <span\n *ngIf=\"showTypewriterCursor\"\n #typewriterCursor\n class=\"typewriter-cursor\"\n aria-hidden=\"true\"\n ></span>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NodeRendererComponent implements NodeRendererProps, OnChanges, OnInit, AfterViewInit, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n private readonly hostRef = inject(ElementRef<HTMLElement>)\n private readonly smoothStream = new SmoothMarkdownStreamService()\n private readonly parentSmoothStreamingScope = inject(\n MARKSTREAM_SMOOTH_STREAMING_SCOPE,\n { optional: true, skipSelf: true },\n )\n\n @ViewChild('root') private rootRef?: ElementRef<HTMLElement>\n @ViewChild('typewriterCursor') private typewriterCursorRef?: ElementRef<HTMLSpanElement>\n\n @Input() content = ''\n @Input() nodes?: readonly AngularRenderableNode[] | null\n @Input() final?: boolean\n @Input() parseOptions?: NodeRendererProps['parseOptions']\n @Input() customMarkdownIt?: NodeRendererProps['customMarkdownIt']\n @Input() debugPerformance?: boolean\n @Input() customHtmlTags?: readonly string[]\n @Input() htmlPolicy: NodeRendererProps['htmlPolicy'] = 'safe'\n @Input() viewportPriority?: boolean\n @Input() codeBlockStream = true\n @Input() codeBlockDarkTheme?: NodeRendererProps['codeBlockDarkTheme']\n @Input() codeBlockLightTheme?: NodeRendererProps['codeBlockLightTheme']\n @Input() codeBlockMonacoOptions?: NodeRendererProps['codeBlockMonacoOptions']\n @Input() renderCodeBlocksAsPre = false\n @Input() codeBlockMinWidth?: string | number\n @Input() codeBlockMaxWidth?: string | number\n @Input() codeBlockProps?: NodeRendererProps['codeBlockProps']\n @Input() mermaidProps?: NodeRendererProps['mermaidProps']\n @Input() d2Props?: NodeRendererProps['d2Props']\n @Input() infographicProps?: NodeRendererProps['infographicProps']\n @Input() customComponents?: NodeRendererProps['customComponents']\n @Input() showTooltips = true\n @Input() themes?: string[]\n @Input() isDark = false\n @Input() customId?: string\n @Input() indexKey?: number | string\n /** Show a blinking typewriter cursor while streamed content grows. Default: false */\n @Input() typewriter = false\n /** Enable/disable non-code-node enter and streamed-text fade animations. Default: true */\n @Input() fade = true\n @Input() batchRendering = true\n @Input() initialRenderBatchSize = 40\n @Input() renderBatchSize = 80\n @Input() renderBatchDelay = 16\n @Input() renderBatchBudgetMs = 6\n @Input() renderBatchIdleTimeoutMs = 120\n @Input() deferNodesUntilVisible = true\n @Input() maxLiveNodes = 320\n @Input() liveNodeBuffer = 60\n @Input() allowHtml = true\n @Input() smoothStreaming: boolean | 'auto' = 'auto'\n @Input() smoothStreamingOptions?: SmoothMarkdownStreamOptions\n\n @Output() copy = new EventEmitter<string>()\n @Output() handleArtifactClick = new EventEmitter<CodeBlockPreviewPayload>()\n @Output() click = new EventEmitter<MouseEvent>()\n @Output() mouseover = new EventEmitter<MouseEvent>()\n @Output() mouseout = new EventEmitter<MouseEvent>()\n\n parsedNodes: AngularRenderableNode[] = []\n visibleEntries: VisibleNodeEntry[] = []\n renderContext: AngularRenderContext = { events: {} }\n topSpacerHeight = 0\n bottomSpacerHeight = 0\n\n private renderedCount = 0\n private focusIndex = 0\n private liveRange = { start: 0, end: 0 }\n private readonly nodeHeights = new Map<number, number>()\n private readonly nodeVisibility = new Set<number>()\n private readonly nodeSeen = new Set<number>()\n private readonly textStreamState = new Map<string, string>()\n private streamRenderVersion = 0\n private readonly slotElements = new Map<number, HTMLElement>()\n private readonly observedElements = new Map<number, HTMLElement>()\n private observer: IntersectionObserver | null = null\n private observerConfig: ObserverConfig | null = null\n private readonly observerIndexByElement = new Map<Element, number>()\n\n private batchTimer: number | null = null\n private batchRaf: number | null = null\n private batchIdle: number | null = null\n private batchPending = false\n private enhancementToken = 0\n private enhancementTimer: number | null = null\n private enhancementHandle: RenderedHtmlEnhancementHandle | null = null\n private postRenderTimer: number | null = null\n private unsubscribeCustomComponents?: () => void\n private isSyncingSmoothStream = false\n private hasMountedForSmoothStreaming = false\n private unsubscribeSmoothStream?: () => void\n private previousRenderContent = ''\n private previousEffectiveFinal: boolean | undefined\n private previousRenderVersionSource: unknown\n\n // ── Typewriter cursor ──\n showTypewriterCursor = false\n private typewriterCursorTimeout: ReturnType<typeof setTimeout> | undefined\n private lastTypewriterContentLength = 0\n private static readonly TYPEWRITER_CURSOR_EXCLUDED_NODE_TYPES = new Set(['code_block', 'admonition', 'table', 'math_block', 'html_block', 'image'])\n\n get hasNodes(): boolean {\n return Array.isArray(this.nodes)\n }\n\n get smoothStreamingEligible(): boolean {\n if (this.smoothStreaming === false)\n return false\n if (this.hasNodes)\n return false\n // When the parent renderer is already pacing content, avoid double-pacing\n // in nested renderers (e.g. thinking blocks, custom tag content).\n // Only applies in 'auto' mode — smoothStreaming === true explicitly opts in.\n if (this.smoothStreaming !== true && this.parentSmoothStreamingScope?.isSmoothStreamingEnabled())\n return false\n if (this.smoothStreaming === true)\n return true\n return this.typewriter === true || (this.maxLiveNodes ?? 0) <= 0\n }\n\n get smoothStreamingEnabled(): boolean {\n // Mounted gate: prevent smooth streaming from pacing initial static content\n // on the first client render (avoids blank flash).\n // Only applies in 'auto' mode — smoothStreaming === true explicitly opts in\n // and the gate is always open. SSR (typeof window === 'undefined') also opens\n // the gate because the core controller has no RAF and will flush immediately.\n const gateOpen = typeof window === 'undefined'\n || this.hasMountedForSmoothStreaming\n || this.smoothStreaming === true\n\n return gateOpen && this.smoothStreamingEligible\n }\n\n get renderContent(): string {\n return this.smoothStreamingEnabled ? this.smoothStream.visible : (this.content ?? '')\n }\n\n get rawContent(): string {\n return this.content ?? ''\n }\n\n get smoothSourceSynced(): boolean {\n return this.hasNodes || this.smoothStream.source === this.rawContent\n }\n\n get requestedFinal(): boolean | undefined {\n const base = this.parseOptions ?? {} as any\n return this.final ?? base.final\n }\n\n get effectiveFinal(): boolean | undefined {\n if (this.smoothStreamingEnabled && this.requestedFinal != null)\n return Boolean(this.requestedFinal && this.smoothSourceSynced && this.smoothStream.caughtUp)\n return this.requestedFinal\n }\n\n get resolvedIndexPrefix() {\n return this.indexKey != null ? String(this.indexKey) : 'renderer'\n }\n\n isSmoothStreamingEnabled(): boolean {\n return this.smoothStreamingEnabled\n }\n\n get resolvedInitialBatchSize() {\n return Math.max(1, Math.trunc(this.initialRenderBatchSize || 40))\n }\n\n get resolvedRenderBatchSize() {\n return Math.max(1, Math.trunc(this.renderBatchSize || 80))\n }\n\n get resolvedMaxLiveNodes() {\n return Math.max(1, Math.trunc(this.maxLiveNodes ?? 320))\n }\n\n get resolvedLiveNodeBuffer() {\n return Math.max(0, Math.trunc(this.liveNodeBuffer ?? 60))\n }\n\n get liveWindowEnabled() {\n const configuredMaxLiveNodes = Math.trunc(this.maxLiveNodes ?? 320)\n return Number.isFinite(configuredMaxLiveNodes) && configuredMaxLiveNodes > 0\n }\n\n get viewportPriorityEnabled() {\n return this.viewportPriority !== false\n }\n\n get virtualizationEnabled() {\n return resolveVirtualizationEnabled(this.parsedNodes.length, this.maxLiveNodes)\n }\n\n get incrementalRenderingActive() {\n return this.batchRendering !== false\n && typeof window !== 'undefined'\n && !this.liveWindowEnabled\n && !this.virtualizationEnabled\n && this.parsedNodes.length > this.resolvedInitialBatchSize\n }\n\n get deferNodesActive() {\n return resolveDeferNodes({\n deferNodesUntilVisible: this.deferNodesUntilVisible,\n maxLiveNodes: this.maxLiveNodes,\n parsedNodeCount: this.parsedNodes.length,\n viewportPriority: this.viewportPriorityEnabled,\n virtualizationEnabled: this.virtualizationEnabled,\n })\n }\n\n get shouldObserveSlots() {\n return this.deferNodesActive || this.virtualizationEnabled\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.ensureSmoothStreamInitialized()\n\n const previousRenderContent = this.renderContent\n const previousEffectiveFinal = this.effectiveFinal\n\n this.syncSmoothStream()\n\n // When smooth streaming is active, raw content/final appends should not\n // trigger a full rebuild unless the visible (renderContent) or effectiveFinal\n // actually advanced. The smooth stream subscription already calls rebuild()\n // when visible ticks forward, so skipping here avoids redundant parse/rebuild\n // cycles driven by raw chunk cadence.\n // Only skip when *only* raw stream inputs (content/final) changed — if any\n // other input (isDark, customHtmlTags, codeBlockProps, etc.) also changed in\n // this cycle, we must rebuild to honour those changes.\n const changeKeys = Object.keys(changes)\n const onlyRawStreamChanges = changeKeys.every(key => key === 'content' || key === 'final')\n\n if (\n this.smoothStreamingEnabled\n && onlyRawStreamChanges\n && changes.content\n && previousRenderContent === this.renderContent\n && previousEffectiveFinal === this.effectiveFinal\n ) {\n return\n }\n\n this.rebuild()\n }\n\n ngOnInit() {\n this.smoothStream.init(this.smoothStreamingOptions)\n\n this.unsubscribeSmoothStream = this.smoothStream.subscribe(() => {\n if (this.isSyncingSmoothStream)\n return\n\n const nextRenderContent = this.renderContent\n const nextEffectiveFinal = this.effectiveFinal\n\n if (\n nextRenderContent !== this.previousRenderContent\n || nextEffectiveFinal !== this.previousEffectiveFinal\n ) {\n this.rebuild()\n }\n })\n\n const previousRenderContent = this.renderContent\n const previousEffectiveFinal = this.effectiveFinal\n\n this.hasMountedForSmoothStreaming = true\n this.syncSmoothStream()\n\n if (\n previousRenderContent !== this.renderContent\n || previousEffectiveFinal !== this.effectiveFinal\n ) {\n this.rebuild()\n }\n\n this.unsubscribeCustomComponents = subscribeCustomComponents(() => {\n this.rebuild()\n })\n }\n\n ngAfterViewInit() {\n this.schedulePostRenderWork()\n }\n\n ngOnDestroy() {\n this.unsubscribeSmoothStream?.()\n this.unsubscribeSmoothStream = undefined\n this.stopBatching()\n this.clearPostRenderWork()\n this.enhancementToken += 1\n this.disposeEnhancements()\n this.unsubscribeCustomComponents?.()\n this.unsubscribeCustomComponents = undefined\n this.disconnectObserver()\n this.smoothStream.ngOnDestroy()\n if (this.enhancementTimer != null && typeof window !== 'undefined') {\n window.clearTimeout(this.enhancementTimer)\n this.enhancementTimer = null\n }\n this.clearTypewriterCursorTimeout()\n }\n\n trackByEntry = (_index: number, entry: VisibleNodeEntry) => {\n return `${this.resolvedIndexPrefix}-${entry.index}`\n }\n\n entryIndexKey(index: number) {\n return `${this.resolvedIndexPrefix}-${index}`\n }\n\n handleMouseOver(event: MouseEvent) {\n const target = event.target as HTMLElement | null\n if (target?.closest('[data-node-index]'))\n this.mouseover.emit(event)\n }\n\n handleMouseOut(event: MouseEvent) {\n const target = event.target as HTMLElement | null\n if (target?.closest('[data-node-index]'))\n this.mouseout.emit(event)\n }\n\n private ensureSmoothStreamInitialized(): void {\n if (this.smoothStream)\n this.smoothStream.init(this.smoothStreamingOptions)\n }\n\n private syncSmoothStream() {\n if (!this.smoothStream)\n return\n\n this.isSyncingSmoothStream = true\n\n try {\n const nextContent = this.content ?? ''\n\n if (this.hasNodes) {\n this.smoothStream.reset('')\n return\n }\n\n if (!this.smoothStreamingEnabled) {\n this.smoothStream.reset(nextContent)\n if (this.requestedFinal)\n this.smoothStream.finish({ flush: true })\n return\n }\n\n const source = this.smoothStream.source\n\n if (!nextContent) {\n this.smoothStream.reset('')\n }\n else if (nextContent === source) {\n // no-op\n }\n else if (nextContent.startsWith(source)) {\n this.smoothStream.enqueue(nextContent.slice(source.length))\n }\n else {\n this.smoothStream.reset(nextContent)\n }\n\n if (this.requestedFinal)\n this.smoothStream.finish()\n }\n finally {\n this.isSyncingSmoothStream = false\n }\n }\n\n private rebuild() {\n this.stopBatching()\n this.disposeEnhancements()\n this.cleanupTransientState()\n\n // Bump streamRenderVersion based on renderContent/nodes (not raw content)\n const renderVersionSource = this.hasNodes ? this.nodes : this.renderContent\n if (this.previousRenderVersionSource !== renderVersionSource) {\n this.streamRenderVersion += 1\n this.previousRenderVersionSource = renderVersionSource\n }\n this.previousRenderContent = this.renderContent\n this.previousEffectiveFinal = this.effectiveFinal\n\n const scopedCustomComponents = getCustomNodeComponents(this.customId)\n const mergedCustomComponents = this.customComponents\n ? {\n ...scopedCustomComponents,\n ...this.customComponents,\n }\n : scopedCustomComponents\n\n const events: NodeRendererEvents = {\n onCopy: code => this.copy.emit(code),\n onHandleArtifactClick: payload => this.handleArtifactClick.emit(payload),\n }\n\n this.renderContext = buildRenderContext(\n {\n ...this,\n content: this.renderContent,\n final: this.effectiveFinal,\n fade: this.fade,\n customComponents: mergedCustomComponents,\n },\n events,\n this.textStreamState,\n this.streamRenderVersion,\n )\n this.parsedNodes = resolveParsedNodes({\n ...this,\n content: this.renderContent,\n final: this.effectiveFinal,\n })\n this.trimMeasuredState()\n\n const total = this.parsedNodes.length\n this.focusIndex = Math.max(0, Math.min(this.focusIndex, Math.max(0, total - 1)))\n if (this.virtualizationEnabled) {\n this.renderedCount = total\n this.liveRange = computeLiveRange(total, this.focusIndex, this.resolvedMaxLiveNodes, this.resolvedLiveNodeBuffer)\n }\n else {\n this.liveRange = { start: 0, end: total }\n this.renderedCount = this.incrementalRenderingActive\n ? Math.min(total, this.resolvedInitialBatchSize)\n : total\n }\n\n if (!this.deferNodesActive)\n this.nodeVisibility.clear()\n\n this.refreshVisibleEntries()\n this.updateTypewriterCursorState()\n this.cdr.markForCheck()\n this.schedulePostRenderWork()\n\n if (this.incrementalRenderingActive && this.renderedCount < total)\n this.scheduleBatchStep()\n }\n\n private cleanupTransientState() {\n this.slotElements.clear()\n this.disconnectObserver()\n }\n\n private trimMeasuredState() {\n const total = this.parsedNodes.length\n for (const index of Array.from(this.nodeHeights.keys())) {\n if (index >= total)\n this.nodeHeights.delete(index)\n }\n for (const index of Array.from(this.nodeSeen)) {\n if (index >= total)\n this.nodeSeen.delete(index)\n }\n for (const index of Array.from(this.nodeVisibility)) {\n if (index >= total)\n this.nodeVisibility.delete(index)\n }\n }\n\n private refreshVisibleEntries() {\n const averageNodeHeight = resolveAverageNodeHeight(this.nodeHeights)\n const total = this.parsedNodes.length\n const source = this.virtualizationEnabled\n ? this.parsedNodes.slice(this.liveRange.start, this.liveRange.end).map((node, offset) => ({\n node,\n index: this.liveRange.start + offset,\n }))\n : this.parsedNodes.map((node, index) => ({ node, index }))\n\n this.topSpacerHeight = this.virtualizationEnabled\n ? estimateHeightRange(0, Math.min(this.liveRange.start, total), this.nodeHeights, averageNodeHeight)\n : 0\n this.bottomSpacerHeight = this.virtualizationEnabled\n ? estimateHeightRange(Math.min(this.liveRange.end, total), total, this.nodeHeights, averageNodeHeight)\n : 0\n\n this.visibleEntries = source.map(({ node, index }) => {\n const render = this.shouldRenderNode(index)\n let animate = false\n if (\n render\n && this.fade !== false\n && String((node as any)?.type || '') !== 'code_block'\n && !this.nodeSeen.has(index)\n ) {\n animate = true\n this.nodeSeen.add(index)\n }\n\n return {\n node,\n index,\n render,\n animate,\n placeholderHeight: this.nodeHeights.get(index) ?? averageNodeHeight,\n }\n })\n }\n\n private shouldRenderNode(index: number) {\n if (this.incrementalRenderingActive && index >= this.renderedCount)\n return false\n if (!this.deferNodesActive)\n return true\n if (index < this.resolvedInitialBatchSize)\n return true\n return this.nodeVisibility.has(index)\n }\n\n private scheduleBatchStep() {\n if (!this.incrementalRenderingActive || typeof window === 'undefined')\n return\n if (this.batchPending || this.renderedCount >= this.parsedNodes.length)\n return\n\n this.batchPending = true\n const run = (deadline?: IdleDeadlineLike) => {\n this.batchPending = false\n this.batchTimer = null\n this.batchRaf = null\n this.batchIdle = null\n\n const budget = Math.max(2, Math.trunc(this.renderBatchBudgetMs || 6))\n let nextCount = this.renderedCount\n do {\n nextCount = Math.min(this.parsedNodes.length, nextCount + this.resolvedRenderBatchSize)\n if (!deadline)\n break\n const remaining = typeof deadline.timeRemaining === 'function' ? deadline.timeRemaining() : 0\n if (remaining <= budget * 0.5)\n break\n } while (nextCount < this.parsedNodes.length)\n\n if (nextCount !== this.renderedCount) {\n this.renderedCount = nextCount\n this.refreshVisibleEntries()\n this.cdr.markForCheck()\n this.schedulePostRenderWork()\n }\n\n if (this.renderedCount < this.parsedNodes.length)\n this.scheduleBatchStep()\n }\n\n const idleCallback = (window as any).requestIdleCallback as ((cb: (deadline: IdleDeadlineLike) => void, opts?: { timeout?: number }) => number) | undefined\n const delay = Math.max(0, Math.trunc(this.renderBatchDelay || 0))\n if (idleCallback) {\n this.batchIdle = idleCallback(run, { timeout: Math.max(0, Math.trunc(this.renderBatchIdleTimeoutMs || 120)) })\n return\n }\n\n if (typeof window.requestAnimationFrame === 'function') {\n this.batchRaf = window.requestAnimationFrame(() => {\n if (delay === 0) {\n run()\n return\n }\n this.batchTimer = window.setTimeout(() => run(), delay)\n })\n return\n }\n\n this.batchTimer = window.setTimeout(() => run(), delay)\n }\n\n private stopBatching() {\n this.batchPending = false\n if (this.batchTimer != null && typeof window !== 'undefined') {\n window.clearTimeout(this.batchTimer)\n this.batchTimer = null\n }\n if (this.batchRaf != null && typeof window !== 'undefined' && typeof window.cancelAnimationFrame === 'function') {\n window.cancelAnimationFrame(this.batchRaf)\n this.batchRaf = null\n }\n const cancelIdle = (typeof window !== 'undefined' ? (window as any).cancelIdleCallback : null) as ((id: number) => void) | null\n if (this.batchIdle != null && cancelIdle) {\n cancelIdle(this.batchIdle)\n this.batchIdle = null\n }\n }\n\n private schedulePostRenderWork() {\n if (typeof window === 'undefined')\n return\n this.clearPostRenderWork()\n this.postRenderTimer = window.setTimeout(() => {\n this.postRenderTimer = null\n this.syncSlotObservers()\n this.measureNodeHeights()\n this.scheduleEnhancements()\n }, 0)\n }\n\n private clearPostRenderWork() {\n if (this.postRenderTimer != null && typeof window !== 'undefined') {\n window.clearTimeout(this.postRenderTimer)\n this.postRenderTimer = null\n }\n }\n\n private syncSlotObservers() {\n const root = this.rootRef?.nativeElement\n if (!root)\n return\n\n const currentIndices = new Set<number>()\n const slots = Array.from(root.querySelectorAll<HTMLElement>('.node-slot[data-node-index]'))\n for (const slot of slots) {\n const index = Number(slot.dataset.nodeIndex)\n if (!Number.isFinite(index))\n continue\n currentIndices.add(index)\n this.slotElements.set(index, slot)\n this.observeSlot(index, slot)\n }\n\n for (const [index] of Array.from(this.slotElements.entries())) {\n if (currentIndices.has(index))\n continue\n this.slotElements.delete(index)\n this.unobserveIndex(index)\n }\n }\n\n private observeSlot(index: number, slot: HTMLElement) {\n if (!this.shouldObserveSlots) {\n this.unobserveIndex(index)\n this.markNodeVisible(index)\n return\n }\n\n if (index < this.resolvedInitialBatchSize && !this.virtualizationEnabled) {\n this.unobserveIndex(index)\n this.markNodeVisible(index)\n return\n }\n\n const existing = this.observedElements.get(index)\n if (existing === slot)\n return\n\n this.unobserveIndex(index)\n const observer = this.ensureObserver('400px', 0)\n if (!observer) {\n this.markNodeVisible(index)\n return\n }\n\n this.observedElements.set(index, slot)\n this.observerIndexByElement.set(slot, index)\n observer.observe(slot)\n }\n\n private ensureObserver(rootMargin: string, threshold: number) {\n if (typeof window === 'undefined')\n return null\n if (typeof IntersectionObserver === 'undefined')\n return null\n if (!this.viewportPriorityEnabled && !this.virtualizationEnabled)\n return null\n\n const nextConfig: ObserverConfig = {\n root: this.resolveViewportRoot(),\n rootMargin,\n threshold,\n }\n\n if (\n this.observer\n && this.observerConfig\n && this.observerConfig.root === nextConfig.root\n && this.observerConfig.rootMargin === nextConfig.rootMargin\n && this.observerConfig.threshold === nextConfig.threshold\n ) {\n return this.observer\n }\n\n this.disconnectObserver()\n this.observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (!(entry.isIntersecting || entry.intersectionRatio > 0))\n continue\n const index = this.observerIndexByElement.get(entry.target)\n if (index == null)\n continue\n this.unobserveIndex(index)\n this.markNodeVisible(index)\n }\n }, nextConfig)\n this.observerConfig = nextConfig\n return this.observer\n }\n\n private resolveViewportRoot() {\n const base = this.rootRef?.nativeElement || this.hostRef.nativeElement\n if (!base || typeof window === 'undefined')\n return null\n\n const doc = base.ownerDocument || document\n const rootScrollable = doc.scrollingElement || doc.documentElement\n let current = base.parentElement\n while (current) {\n if (current === doc.body || current === rootScrollable)\n break\n const style = window.getComputedStyle(current)\n const overflowY = (style.overflowY || '').toLowerCase()\n const overflow = (style.overflow || '').toLowerCase()\n if (SCROLL_PARENT_OVERFLOW_RE.test(overflowY) || SCROLL_PARENT_OVERFLOW_RE.test(overflow))\n return current\n current = current.parentElement\n }\n\n return null\n }\n\n private markNodeVisible(index: number) {\n let changed = false\n if (this.deferNodesActive && !this.nodeVisibility.has(index)) {\n this.nodeVisibility.add(index)\n changed = true\n }\n\n if (this.virtualizationEnabled && index > this.focusIndex) {\n this.focusIndex = index\n this.liveRange = computeLiveRange(\n this.parsedNodes.length,\n this.focusIndex,\n this.resolvedMaxLiveNodes,\n this.resolvedLiveNodeBuffer,\n )\n changed = true\n }\n\n if (!changed)\n return\n\n this.refreshVisibleEntries()\n this.cdr.markForCheck()\n this.schedulePostRenderWork()\n }\n\n private unobserveIndex(index: number) {\n const element = this.observedElements.get(index)\n if (!element)\n return\n try {\n this.observer?.unobserve(element)\n }\n catch {\n // Ignore observer cleanup failures.\n }\n this.observerIndexByElement.delete(element)\n this.observedElements.delete(index)\n }\n\n private disconnectObserver() {\n try {\n this.observer?.disconnect()\n }\n catch {\n // Ignore observer cleanup failures.\n }\n this.observer = null\n this.observerConfig = null\n this.observerIndexByElement.clear()\n this.observedElements.clear()\n }\n\n private measureNodeHeights() {\n const root = this.rootRef?.nativeElement\n if (!root)\n return\n\n let changed = false\n const contentNodes = Array.from(root.querySelectorAll<HTMLElement>('.node-content[data-node-index]'))\n for (const element of contentNodes) {\n const index = Number(element.dataset.nodeIndex)\n if (!Number.isFinite(index))\n continue\n const height = element.offsetHeight\n if (!height)\n continue\n if (this.nodeHeights.get(index) !== height) {\n this.nodeHeights.set(index, height)\n changed = true\n }\n }\n\n if (!changed)\n return\n\n this.refreshVisibleEntries()\n this.cdr.markForCheck()\n }\n\n private scheduleEnhancements() {\n if (typeof window === 'undefined')\n return\n\n const token = ++this.enhancementToken\n if (this.enhancementTimer != null)\n window.clearTimeout(this.enhancementTimer)\n\n this.enhancementTimer = window.setTimeout(() => {\n this.enhancementTimer = null\n void this.applyEnhancements(token)\n }, 0)\n }\n\n private async applyEnhancements(token: number) {\n if (token !== this.enhancementToken)\n return\n\n const root = this.rootRef?.nativeElement || this.hostRef.nativeElement.querySelector('.markstream-angular') as HTMLElement | null\n if (!root)\n return\n\n const handle = await enhanceRenderedHtml(root, {\n final: this.effectiveFinal,\n isDark: this.isDark,\n renderCodeBlocksAsPre: this.renderCodeBlocksAsPre,\n monacoOptions: this.codeBlockMonacoOptions,\n d2ThemeId: this.d2Props?.themeId ?? null,\n d2DarkThemeId: this.d2Props?.darkThemeId ?? null,\n showTooltips: this.showTooltips,\n codeBlockProps: this.codeBlockProps,\n mermaidProps: this.mermaidProps,\n d2Props: this.d2Props,\n infographicProps: this.infographicProps,\n onCopy: code => this.copy.emit(code),\n isCancelled: () => token !== this.enhancementToken,\n })\n\n if (token !== this.enhancementToken) {\n handle.dispose()\n return\n }\n\n this.enhancementHandle = handle\n this.measureNodeHeights()\n }\n\n private disposeEnhancements() {\n this.enhancementHandle?.dispose()\n this.enhancementHandle = null\n\n const root = this.rootRef?.nativeElement || this.hostRef.nativeElement.querySelector('.markstream-angular') as HTMLElement | null\n if (root)\n disposeRenderedHtmlEnhancements(root)\n }\n\n // ── Typewriter cursor ──\n private shouldSkipTypewriterCursorForNode(node: unknown): boolean {\n if (!node || typeof node !== 'object')\n return false\n const type = (node as Record<string, unknown>).type\n return typeof type === 'string' && NodeRendererComponent.TYPEWRITER_CURSOR_EXCLUDED_NODE_TYPES.has(type)\n }\n\n private shouldShowTypewriterCursorForCurrentNodes(): boolean {\n const lastNode = this.parsedNodes[this.parsedNodes.length - 1]\n return !this.shouldSkipTypewriterCursorForNode(lastNode)\n }\n\n private getNodeTextLength(node: unknown): number {\n if (!node || typeof node !== 'object')\n return 0\n const record = node as Record<string, unknown>\n const direct = record.raw ?? record.content ?? record.code\n if (typeof direct === 'string')\n return direct.length\n const children = record.children\n if (Array.isArray(children))\n return children.reduce((total: number, child: unknown) => total + this.getNodeTextLength(child), 0)\n const items = record.items\n if (Array.isArray(items))\n return items.reduce((total: number, item: unknown) => total + this.getNodeTextLength(item), 0)\n return 0\n }\n\n private getTypewriterContentLength(): number {\n if (this.nodes?.length)\n return (this.nodes as unknown[]).reduce<number>((total, node) => total + this.getNodeTextLength(node), 0)\n // Use raw content length, not renderContent (which may be the paced-out\n // visible portion when smooth streaming is active).\n return (this.content ?? '').length\n }\n\n private clearTypewriterCursorTimeout() {\n if (!this.typewriterCursorTimeout)\n return\n clearTimeout(this.typewriterCursorTimeout)\n this.typewriterCursorTimeout = undefined\n }\n\n private getLastTextNode(root: HTMLElement): Text | null {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n acceptNode(node) {\n const text = node.textContent ?? ''\n if (!text.trim())\n return NodeFilter.FILTER_REJECT\n const parent = node.parentElement\n if (!parent)\n return NodeFilter.FILTER_REJECT\n if (parent.closest('.typewriter-cursor, .height-estimation-probes, [data-node-type=\"code_block\"], [data-node-type=\"admonition\"], [data-node-type=\"table\"], [data-node-type=\"math_block\"], [data-node-type=\"html_block\"], [data-node-type=\"image\"], script, style'))\n return NodeFilter.FILTER_REJECT\n return NodeFilter.FILTER_ACCEPT\n },\n })\n let last: Text | null = null\n let current = walker.nextNode()\n while (current) {\n last = current as Text\n current = walker.nextNode()\n }\n return last\n }\n\n private updateTypewriterCursorPosition() {\n if (typeof window === 'undefined' || !this.showTypewriterCursor || !this.rootRef?.nativeElement || !this.typewriterCursorRef?.nativeElement)\n return\n const root = this.rootRef.nativeElement\n const cursor = this.typewriterCursorRef.nativeElement\n const lastText = this.getLastTextNode(root)\n const rootRect = root.getBoundingClientRect()\n let left = 0\n let top = 0\n let height = 20\n\n if (lastText?.textContent) {\n const range = document.createRange()\n const end = lastText.textContent.length\n range.setStart(lastText, Math.max(0, end - 1))\n range.setEnd(lastText, end)\n const rects = typeof range.getClientRects === 'function'\n ? range.getClientRects()\n : undefined\n const rect = rects?.[rects.length - 1] ?? lastText.parentElement?.getBoundingClientRect()\n if (rect) {\n left = rect.right - rootRect.left + root.scrollLeft\n top = rect.top - rootRect.top + root.scrollTop\n height = rect.height || height\n }\n range.detach()\n }\n\n cursor.style.transform = `translate(${Math.max(0, left)}px, ${Math.max(0, top)}px)`\n cursor.style.height = `${height}px`\n }\n\n private updateTypewriterCursorState() {\n if (typeof window === 'undefined' || this.hasNodes)\n return\n\n // When the stream is final (and effective — smooth streaming has caught up),\n // hide the cursor immediately.\n if (this.effectiveFinal) {\n this.showTypewriterCursor = false\n this.clearTypewriterCursorTimeout()\n return\n }\n\n const nextLength = this.getTypewriterContentLength()\n const cursorAllowed = this.shouldShowTypewriterCursorForCurrentNodes()\n if (this.typewriter === false || !cursorAllowed || nextLength <= this.lastTypewriterContentLength) {\n if (this.typewriter === false || !cursorAllowed)\n this.showTypewriterCursor = false\n this.lastTypewriterContentLength = nextLength\n return\n }\n\n this.lastTypewriterContentLength = nextLength\n this.showTypewriterCursor = true\n this.clearTypewriterCursorTimeout()\n requestAnimationFrame(() => {\n this.updateTypewriterCursorPosition()\n })\n this.typewriterCursorTimeout = setTimeout(() => {\n this.showTypewriterCursor = false\n this.cdr.markForCheck()\n }, 3000)\n }\n}\n","export type KaTeXCDNWorkerMode = 'classic' | 'module'\n\nexport interface KaTeXCDNWorkerOptions {\n katexUrl: string\n mhchemUrl?: string\n mode?: KaTeXCDNWorkerMode\n debug?: boolean\n workerOptions?: WorkerOptions\n renderOptions?: {\n throwOnError?: boolean\n output?: string\n strict?: string\n }\n}\n\nexport interface KaTeXCDNWorkerHandle {\n worker: Worker | null\n dispose: () => void\n source: string\n}\n\nfunction stringifyForWorker(value: any) {\n return JSON.stringify(value)\n}\n\nexport function buildKaTeXCDNWorkerSource(options: KaTeXCDNWorkerOptions): string {\n const mode: KaTeXCDNWorkerMode = options.mode ?? 'classic'\n const renderOptions = {\n throwOnError: true,\n displayMode: true,\n output: 'html',\n strict: 'ignore',\n ...(options.renderOptions || {}),\n }\n\n const renderOptionsLiteral = stringifyForWorker(renderOptions)\n const katexUrlLiteral = stringifyForWorker(options.katexUrl)\n const mhchemUrlLiteral = options.mhchemUrl ? stringifyForWorker(options.mhchemUrl) : '\"\"'\n\n if (mode === 'module') {\n return `\nlet DEBUG = false\nlet katex = null\nlet katexLoadError = null\nlet loadPromise = null\n\nfunction normalizeKaTeX(mod) {\n const resolved = mod && mod.default ? mod.default : mod\n if (resolved && typeof resolved.renderToString === 'function')\n return resolved\n return null\n}\n\nasync function loadKaTeX() {\n if (katex || katexLoadError)\n return\n if (!loadPromise) {\n loadPromise = (async () => {\n try {\n const mod = await import(${katexUrlLiteral})\n katex = normalizeKaTeX(mod) || null\n const mhchemUrl = ${mhchemUrlLiteral}\n if (mhchemUrl) {\n try {\n await import(mhchemUrl)\n }\n catch (e) {\n if (DEBUG)\n console.warn('[markstream-angular:katex-cdn-worker] failed to load mhchem', e)\n }\n }\n }\n catch (e) {\n katexLoadError = e\n }\n })()\n }\n await loadPromise\n}\n\nglobalThis.addEventListener('message', async (ev) => {\n const data = ev.data || {}\n if (data.type === 'init') {\n DEBUG = !!data.debug\n return\n }\n\n const id = data.id ?? ''\n const content = data.content ?? ''\n const displayMode = data.displayMode ?? true\n\n await loadKaTeX()\n\n if (!katex) {\n const reason = katexLoadError ? String(katexLoadError?.message || katexLoadError) : 'KaTeX is not available in worker'\n globalThis.postMessage({ id, error: reason, content, displayMode })\n return\n }\n\n try {\n const opts = ${renderOptionsLiteral}\n const html = katex.renderToString(content, { ...opts, displayMode: !!displayMode })\n globalThis.postMessage({ id, html, content, displayMode })\n }\n catch (err) {\n globalThis.postMessage({ id, error: String(err?.message || err), content, displayMode })\n }\n})\n`.trimStart()\n }\n\n return `\nlet DEBUG = false\nlet katex = null\nlet katexLoadError = null\n\nfunction normalizeKaTeX(val) {\n const resolved = val && val.default ? val.default : val\n if (resolved && typeof resolved.renderToString === 'function')\n return resolved\n return null\n}\n\nfunction loadKaTeXClassic() {\n if (katex || katexLoadError)\n return\n try {\n importScripts(${katexUrlLiteral})\n const mhchemUrl = ${mhchemUrlLiteral}\n if (mhchemUrl) {\n try {\n importScripts(mhchemUrl)\n }\n catch (e) {\n if (DEBUG)\n console.warn('[markstream-angular:katex-cdn-worker] failed to load mhchem', e)\n }\n }\n katex = normalizeKaTeX(globalThis.katex)\n }\n catch (e) {\n katexLoadError = e\n }\n}\n\nloadKaTeXClassic()\n\nglobalThis.addEventListener('message', (ev) => {\n const data = ev.data || {}\n if (data.type === 'init') {\n DEBUG = !!data.debug\n return\n }\n\n const id = data.id ?? ''\n const content = data.content ?? ''\n const displayMode = data.displayMode ?? true\n\n if (!katex && !katexLoadError)\n loadKaTeXClassic()\n\n if (!katex) {\n const reason = katexLoadError ? String(katexLoadError?.message || katexLoadError) : 'KaTeX is not available in worker'\n globalThis.postMessage({ id, error: reason, content, displayMode })\n return\n }\n\n try {\n const opts = ${renderOptionsLiteral}\n const html = katex.renderToString(content, { ...opts, displayMode: !!displayMode })\n globalThis.postMessage({ id, html, content, displayMode })\n }\n catch (err) {\n globalThis.postMessage({ id, error: String(err?.message || err), content, displayMode })\n }\n})\n`.trimStart()\n}\n\nexport function createKaTeXWorkerFromCDN(options: KaTeXCDNWorkerOptions): KaTeXCDNWorkerHandle {\n const source = buildKaTeXCDNWorkerSource(options)\n\n if (typeof Worker === 'undefined' || typeof URL === 'undefined' || typeof Blob === 'undefined') {\n return {\n worker: null,\n dispose: () => {},\n source,\n }\n }\n\n const blob = new Blob([source], { type: 'text/javascript' })\n const url = URL.createObjectURL(blob)\n let revoked = false\n\n const dispose = () => {\n if (revoked)\n return\n revoked = true\n try {\n URL.revokeObjectURL(url)\n }\n catch {\n // Ignore revoke failures.\n }\n }\n\n const mode = options.mode ?? 'classic'\n const workerOptions = mode === 'module'\n ? ({ ...(options.workerOptions ?? {}), type: 'module' as const } satisfies WorkerOptions)\n : options.workerOptions\n\n const worker = new Worker(url, workerOptions)\n if (options.debug) {\n try {\n worker.postMessage({ type: 'init', debug: true })\n }\n catch {\n // Ignore init messaging failures.\n }\n }\n\n return { worker, dispose, source }\n}\n","export type MermaidCDNWorkerMode = 'classic' | 'module'\n\nexport interface MermaidCDNWorkerOptions {\n mermaidUrl: string\n mode?: MermaidCDNWorkerMode\n debug?: boolean\n workerOptions?: WorkerOptions\n initializeOptions?: Record<string, any>\n}\n\nexport interface MermaidCDNWorkerHandle {\n worker: Worker | null\n dispose: () => void\n source: string\n}\n\nfunction stringifyForWorker(value: any) {\n return JSON.stringify(value)\n}\n\nexport function buildMermaidCDNWorkerSource(options: MermaidCDNWorkerOptions): string {\n const mode: MermaidCDNWorkerMode = options.mode ?? 'module'\n const mermaidUrlLiteral = stringifyForWorker(options.mermaidUrl)\n const initLiteral = stringifyForWorker({\n startOnLoad: false,\n securityLevel: 'strict',\n flowchart: { htmlLabels: false },\n ...(options.initializeOptions || {}),\n })\n\n const sharedLogic = `\nlet DEBUG = false\nlet mermaid = null\nlet mermaidLoadError = null\n\nfunction normalizeMermaidModule(mod) {\n if (!mod)\n return mod\n const candidate = mod && mod.default ? mod.default : mod\n if (candidate && (typeof candidate.render === 'function' || typeof candidate.parse === 'function' || typeof candidate.initialize === 'function'))\n return candidate\n if (candidate && candidate.mermaidAPI && (typeof candidate.mermaidAPI.render === 'function' || typeof candidate.mermaidAPI.parse === 'function')) {\n const api = candidate.mermaidAPI\n return {\n ...candidate,\n render: api.render ? api.render.bind(api) : undefined,\n parse: api.parse ? api.parse.bind(api) : undefined,\n initialize: (opts) => {\n if (typeof candidate.initialize === 'function')\n return candidate.initialize(opts)\n return api.initialize ? api.initialize(opts) : undefined\n },\n }\n }\n if (mod && mod.mermaid && typeof mod.mermaid.parse === 'function')\n return mod.mermaid\n return candidate\n}\n\nfunction applyThemeTo(code, theme) {\n const themeValue = theme === 'dark' ? 'dark' : 'default'\n const themeConfig = \\`%%{init: {\"theme\": \"\\${themeValue}\"}}%%\\\\n\\`\n const trimmed = String(code || '').trimStart()\n if (trimmed.startsWith('%%{'))\n return code\n return themeConfig + code\n}\n\nfunction findHeaderIndex(lines) {\n const headerRe = /^(?:graph|flowchart|flowchart\\\\s+tb|flowchart\\\\s+lr|sequenceDiagram|gantt|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|pie|quadrantChart|timeline|xychart(?:-beta)?)\\\\b/\n for (let i = 0; i < lines.length; i++) {\n const line = (lines[i] || '').trim()\n if (!line || line.startsWith('%%'))\n continue\n if (headerRe.test(line))\n return i\n }\n return -1\n}\n\nasync function canParse(code, theme) {\n const themed = applyThemeTo(code, theme)\n if (mermaid && typeof mermaid.parse === 'function') {\n await mermaid.parse(themed)\n return true\n }\n throw new Error('mermaid.parse not available in worker')\n}\n\nasync function findLastRenderablePrefix(baseCode, theme) {\n const lines = String(baseCode || '').split('\\\\n')\n const headerIndex = findHeaderIndex(lines)\n if (headerIndex === -1)\n return null\n const head = lines.slice(0, headerIndex + 1)\n await canParse(head.join('\\\\n'), theme)\n\n let low = headerIndex + 1\n let high = lines.length\n let lastGood = headerIndex + 1\n let tries = 0\n const MAX_TRIES = 12\n\n while (low <= high && tries < MAX_TRIES) {\n const mid = Math.floor((low + high) / 2)\n const candidate = [...head, ...lines.slice(headerIndex + 1, mid)].join('\\\\n')\n tries += 1\n try {\n await canParse(candidate, theme)\n lastGood = mid\n low = mid + 1\n }\n catch {\n high = mid - 1\n }\n }\n\n return [...head, ...lines.slice(headerIndex + 1, lastGood)].join('\\\\n')\n}\n\nfunction initMermaidOnce() {\n if (!mermaid)\n return\n try {\n if (typeof mermaid.initialize === 'function')\n mermaid.initialize(${initLiteral})\n }\n catch (e) {\n if (DEBUG)\n console.warn('[markstream-angular:mermaid-cdn-worker] initialize failed', e)\n }\n}\n\nglobalThis.addEventListener('message', async (ev) => {\n const msg = ev.data || {}\n if (msg.type === 'init') {\n DEBUG = !!msg.debug\n return\n }\n\n const id = msg.id\n const action = msg.action\n const payload = msg.payload || {}\n\n if (!mermaid) {\n const error = mermaidLoadError ? String(mermaidLoadError?.message || mermaidLoadError) : 'Mermaid is not available in worker'\n globalThis.postMessage({ id, ok: false, error })\n return\n }\n\n try {\n if (action === 'canParse') {\n const ok = await canParse(payload.code, payload.theme)\n globalThis.postMessage({ id, ok: true, result: ok })\n return\n }\n if (action === 'findPrefix') {\n const result = await findLastRenderablePrefix(payload.code, payload.theme)\n globalThis.postMessage({ id, ok: true, result })\n return\n }\n globalThis.postMessage({ id, ok: false, error: 'Unknown action' })\n }\n catch (e) {\n globalThis.postMessage({ id, ok: false, error: String(e?.message || e) })\n }\n})\n`.trimStart()\n\n if (mode === 'module') {\n return `\n${sharedLogic}\n\nlet loadPromise = null\nasync function loadMermaid() {\n if (mermaid || mermaidLoadError)\n return\n if (!loadPromise) {\n loadPromise = (async () => {\n try {\n const mod = await import(${mermaidUrlLiteral})\n mermaid = normalizeMermaidModule(mod) || null\n initMermaidOnce()\n }\n catch (e) {\n mermaidLoadError = e\n }\n })()\n }\n await loadPromise\n}\n\nawait loadMermaid()\n`.trimStart()\n }\n\n return `\n${sharedLogic}\n\nfunction loadMermaidClassic() {\n if (mermaid || mermaidLoadError)\n return\n try {\n importScripts(${mermaidUrlLiteral})\n mermaid = normalizeMermaidModule(globalThis.mermaid) || null\n initMermaidOnce()\n }\n catch (e) {\n mermaidLoadError = e\n }\n}\n\nloadMermaidClassic()\n`.trimStart()\n}\n\nexport function createMermaidWorkerFromCDN(options: MermaidCDNWorkerOptions): MermaidCDNWorkerHandle {\n const source = buildMermaidCDNWorkerSource(options)\n\n if (typeof Worker === 'undefined' || typeof URL === 'undefined' || typeof Blob === 'undefined') {\n return {\n worker: null,\n dispose: () => {},\n source,\n }\n }\n\n const blob = new Blob([source], { type: 'text/javascript' })\n const url = URL.createObjectURL(blob)\n let revoked = false\n\n const dispose = () => {\n if (revoked)\n return\n revoked = true\n try {\n URL.revokeObjectURL(url)\n }\n catch {\n // Ignore revoke failures.\n }\n }\n\n const mode = options.mode ?? 'module'\n const workerOptions = mode === 'module'\n ? ({ ...(options.workerOptions ?? {}), type: 'module' as const } satisfies WorkerOptions)\n : options.workerOptions\n\n const worker = new Worker(url, workerOptions)\n if (options.debug) {\n try {\n worker.postMessage({ type: 'init', debug: true })\n }\n catch {\n // Ignore init messaging failures.\n }\n }\n\n return { worker, dispose, source }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["normalizeTagName","DEFAULT_CACHE_KEY","markdownCache","getNodeList","resolveParsedNodes","getString","escapeHtml","escapeAttr","sanitizeClassToken","clampHeadingLevel","capitalize","encodeDataPayload","importAttempted","pendingImport","DARK_THEME_OVERRIDES","createD2Instance","VOID_ELEMENTS","serializeAttrs","BLOCKED_TAGS","settleAndMergeSegments","worker","workerInitError","maxConcurrency","ensureWorker","stringifyForWorker"],"mappings":"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"}
1
+ {"version":3,"file":"markstream-angular.mjs","sources":["../../src/hydrateCustomTagContent.ts","../../src/parseNestedMarkdownToNodes.ts","../../src/customComponents.ts","../../src/components/shared/node-helpers.ts","../../src/components/BlockquoteNode/BlockquoteNode.component.ts","../../src/components/CheckboxNode/CheckboxNode.component.ts","../../src/i18n/useSafeI18n.ts","../../src/optional/monaco.ts","../../src/utils/languageIcon.ts","../../src/components/PreCodeNode/PreCodeNode.component.ts","../../src/components/CodeBlockNode/HtmlPreviewFrame.component.ts","../../src/components/CodeBlockNode/CodeBlockNode.component.ts","../../src/optional/d2.ts","../../src/sanitizeSvg.ts","../../src/components/shared/rich-block-helpers.ts","../../src/components/D2BlockNode/D2BlockNode.component.ts","../../src/components/DefinitionListNode/DefinitionListNode.component.ts","../../src/components/DynamicNodeHost/DynamicNodeHost.component.ts","../../src/components/EmojiNode/EmojiNode.component.ts","../../src/components/EmphasisNode/EmphasisNode.component.ts","../../src/components/FallbackComponent/FallbackComponent.component.ts","../../src/components/FootnoteAnchorNode/FootnoteAnchorNode.component.ts","../../src/components/FootnoteNode/FootnoteNode.component.ts","../../src/components/FootnoteReferenceNode/FootnoteReferenceNode.component.ts","../../src/components/HardBreakNode/HardBreakNode.component.ts","../../src/components/shared/safe-attrs.directive.ts","../../src/components/HeadingNode/HeadingNode.component.ts","../../src/components/HighlightNode/HighlightNode.component.ts","../../src/sanitizeHtmlContent.ts","../../src/renderMarkdownHtml.ts","../../src/components/HtmlBlockNode/HtmlBlockNode.component.ts","../../src/components/HtmlInlineNode/HtmlInlineNode.component.ts","../../src/components/ImageNode/ImageNode.component.ts","../../src/optional/infographic.ts","../../src/components/shared/diagram-height.ts","../../src/components/InfographicBlockNode/InfographicBlockNode.component.ts","../../src/components/InlineCodeNode/InlineCodeNode.component.ts","../../src/components/InsertNode/InsertNode.component.ts","../../src/tooltip/singletonTooltip.ts","../../src/components/TextNode/TextNode.component.ts","../../src/components/LinkNode/LinkNode.component.ts","../../src/components/ListItemNode/ListItemNode.component.ts","../../src/components/ListNode/ListNode.component.ts","../../src/optional/katex.ts","../../src/utils/normalizeKaTeXRenderInput.ts","../../src/workers/katexWorkerClient.ts","../../src/components/MathBlockNode/MathBlockNode.component.ts","../../src/components/MathInlineNode/MathInlineNode.component.ts","../../src/optional/mermaid.ts","../../src/workers/mermaidWorkerClient.ts","../../src/components/MermaidBlockNode/MermaidBlockNode.component.ts","../../src/components/ParagraphNode/ParagraphNode.component.ts","../../src/components/ReferenceNode/ReferenceNode.component.ts","../../src/components/shared/node-outlet-helpers.ts","../../src/components/StrikethroughNode/StrikethroughNode.component.ts","../../src/components/StrongNode/StrongNode.component.ts","../../src/components/SubscriptNode/SubscriptNode.component.ts","../../src/components/SuperscriptNode/SuperscriptNode.component.ts","../../src/components/TableNode/TableNode.component.ts","../../src/components/ThematicBreakNode/ThematicBreakNode.component.ts","../../src/components/VmrContainerNode/VmrContainerNode.component.ts","../../src/components/NodeOutlet/NodeOutlet.component.ts","../../src/components/NestedRenderer/NestedRenderer.component.ts","../../src/components/AdmonitionNode/AdmonitionNode.component.ts","../../src/enhanceRenderedHtml.ts","../../src/services/smooth-markdown-stream.service.ts","../../src/components/shared/render-window.ts","../../src/components/shared/smooth-streaming-scope.ts","../../src/components/NodeRenderer/NodeRenderer.component.ts","../../src/workers/katexCdnWorker.ts","../../src/workers/mermaidCdnWorker.ts","../../src/markstream-angular.ts"],"sourcesContent":["import type { BaseNode } from 'stream-markdown-parser'\nimport { normalizeCustomHtmlTags, normalizeCustomHtmlTagName as normalizeTagName } from 'stream-markdown-parser'\n\ninterface CustomTagSegment {\n tag: string\n start: number\n end: number\n innerContent: string\n raw: string\n loading: boolean\n}\n\ninterface CustomTagOpen {\n tag: string\n start: number\n openEnd: number\n}\n\ntype HydratableNode = BaseNode & {\n tag?: string\n content?: string\n [key: string]: unknown\n}\n\nconst TAG_TOKEN_RE = /<\\/?([A-Z][\\w:-]*)(?:\\s[^<>]*)?>/gi\n\nexport function hydrateCustomTagContent<T extends BaseNode>(\n nodes: readonly T[] | null | undefined,\n source: string,\n customHtmlTags?: readonly string[],\n): T[] {\n const normalizedTags = normalizeCustomHtmlTags(customHtmlTags)\n const tagSet = new Set(normalizedTags)\n if (!source || tagSet.size === 0 || !Array.isArray(nodes) || nodes.length === 0)\n return Array.isArray(nodes) ? nodes.slice() : []\n\n const segments = collectCustomTagSegments(source, tagSet)\n if (segments.length === 0)\n return nodes.slice()\n\n let segmentIndex = 0\n const cloned = nodes.map(node => cloneNodeTree(node))\n\n const visitNode = (node: HydratableNode) => {\n if (!node || typeof node !== 'object')\n return\n\n const tag = resolveCustomTagName(node, tagSet)\n if (tag) {\n const segment = consumeNextSegment(segments, tag, () => segmentIndex, nextIndex => (segmentIndex = nextIndex))\n if (segment) {\n node.tag = tag\n node.type = tag\n node.content = segment.innerContent\n node.raw = segment.raw\n if (typeof node.loading !== 'boolean')\n node.loading = segment.loading\n }\n }\n\n for (const value of Object.values(node)) {\n if (!Array.isArray(value))\n continue\n for (const child of value) {\n if (child && typeof child === 'object')\n visitNode(child as HydratableNode)\n }\n }\n }\n\n for (const node of cloned)\n visitNode(node)\n\n return cloned\n}\n\nfunction collectCustomTagSegments(source: string, tagSet: Set<string>) {\n const stack: CustomTagOpen[] = []\n const segments: CustomTagSegment[] = []\n let match: RegExpExecArray | null\n\n TAG_TOKEN_RE.lastIndex = 0\n while ((match = TAG_TOKEN_RE.exec(source)) !== null) {\n const raw = match[0]\n const tag = normalizeTagName(match[1])\n if (!tag || !tagSet.has(tag))\n continue\n\n const isClosing = raw.startsWith('</')\n if (!isClosing) {\n stack.push({\n tag,\n start: match.index,\n openEnd: TAG_TOKEN_RE.lastIndex,\n })\n continue\n }\n\n const openIndex = findLastOpenIndex(stack, tag)\n if (openIndex < 0)\n continue\n\n const [open] = stack.splice(openIndex, 1)\n const closeStart = match.index\n const closeEnd = TAG_TOKEN_RE.lastIndex\n segments.push({\n tag,\n start: open.start,\n end: closeEnd,\n innerContent: source.slice(open.openEnd, closeStart),\n raw: source.slice(open.start, closeEnd),\n loading: false,\n })\n }\n\n for (const open of stack) {\n segments.push({\n tag: open.tag,\n start: open.start,\n end: source.length,\n innerContent: source.slice(open.openEnd),\n raw: source.slice(open.start),\n loading: true,\n })\n }\n\n return segments.sort((left, right) => {\n if (left.start !== right.start)\n return left.start - right.start\n return right.end - left.end\n })\n}\n\nfunction findLastOpenIndex(stack: CustomTagOpen[], tag: string) {\n for (let index = stack.length - 1; index >= 0; index -= 1) {\n if (stack[index]?.tag === tag)\n return index\n }\n return -1\n}\n\nfunction consumeNextSegment(\n segments: CustomTagSegment[],\n tag: string,\n getIndex: () => number,\n setIndex: (value: number) => void,\n) {\n let index = getIndex()\n while (index < segments.length) {\n const segment = segments[index]\n index += 1\n if (segment.tag !== tag)\n continue\n setIndex(index)\n return segment\n }\n setIndex(index)\n return null\n}\n\nfunction resolveCustomTagName(node: Record<string, unknown>, tagSet: Set<string>) {\n const byTag = normalizeTagName(node.tag)\n if (byTag && tagSet.has(byTag))\n return byTag\n\n const byType = normalizeTagName(node.type)\n return byType && tagSet.has(byType) ? byType : ''\n}\n\nfunction cloneNodeTree<T extends BaseNode>(node: T): T {\n if (!node || typeof node !== 'object')\n return node\n\n const cloned = Array.isArray(node)\n ? node.map(item => cloneNodeTree(item)) as unknown as T\n : { ...node }\n\n if (!Array.isArray(cloned)) {\n for (const [key, value] of Object.entries(cloned as Record<string, unknown>)) {\n if (Array.isArray(value)) {\n (cloned as Record<string, unknown>)[key] = value.map(item => cloneNodeTree(item as BaseNode))\n }\n }\n }\n\n return cloned\n}\n","import type { BaseNode, MarkdownIt, ParseOptions } from 'stream-markdown-parser'\nimport { getMarkdown, mergeCustomHtmlTags, parseMarkdownToStructure } from 'stream-markdown-parser'\nimport { hydrateCustomTagContent } from './hydrateCustomTagContent'\n\ntype NestedMarkdownSourceNode = BaseNode & {\n children?: BaseNode[]\n content?: string\n}\n\nexport interface NestedMarkdownNodesInput {\n node?: NestedMarkdownSourceNode | null\n nodes?: readonly BaseNode[] | null\n content?: string | null\n}\n\nexport interface NestedMarkdownNodesOptions {\n cacheKey?: string\n final?: boolean\n parseOptions?: ParseOptions\n customHtmlTags?: readonly string[]\n customMarkdownIt?: (markdown: MarkdownIt) => MarkdownIt\n}\n\nconst DEFAULT_CACHE_KEY = 'markstream-angular-nested-nodes'\nconst markdownCache = new Map<string, MarkdownIt>()\n\nexport function parseNestedMarkdownToNodes(\n input: NestedMarkdownNodesInput,\n options: NestedMarkdownNodesOptions = {},\n): BaseNode[] {\n if (Array.isArray(input.nodes))\n return input.nodes.slice()\n\n const nestedNode = input.node\n if (nestedNode) {\n const children = getNodeList(nestedNode.children)\n if (children.length > 0)\n return children.slice()\n }\n\n const content = resolveContent(input)\n if (!content)\n return []\n\n const parseOptions = resolveParseOptions(input, options)\n const markdown = resolveMarkdownInstance(options)\n return hydrateCustomTagContent(\n parseMarkdownToStructure(content, markdown, parseOptions),\n content,\n mergeCustomHtmlTags(options.customHtmlTags, parseOptions?.customHtmlTags),\n )\n}\n\nfunction resolveContent(input: NestedMarkdownNodesInput) {\n if (typeof input.content === 'string')\n return input.content\n if (typeof input.node?.content === 'string')\n return input.node.content\n return ''\n}\n\nfunction resolveParseOptions(\n input: NestedMarkdownNodesInput,\n options: NestedMarkdownNodesOptions,\n): ParseOptions | undefined {\n const base = options.parseOptions ?? {}\n const resolvedFinal = options.final ?? resolveFinalFromNode(input.node)\n const customHtmlTags = mergeCustomHtmlTags(options.customHtmlTags, base.customHtmlTags)\n\n if (resolvedFinal == null && customHtmlTags.length === 0)\n return base\n\n return {\n ...base,\n ...(resolvedFinal == null ? {} : { final: resolvedFinal }),\n ...(customHtmlTags.length === 0 ? {} : { customHtmlTags }),\n } as ParseOptions\n}\n\nfunction resolveFinalFromNode(node?: NestedMarkdownSourceNode | null) {\n if (!node || typeof node !== 'object')\n return undefined\n if (typeof node.loading === 'boolean')\n return !node.loading\n return undefined\n}\n\nfunction resolveMarkdownInstance(options: NestedMarkdownNodesOptions) {\n const normalizedTags = mergeCustomHtmlTags(options.customHtmlTags, options.parseOptions?.customHtmlTags)\n const cacheKey = `${options.cacheKey || DEFAULT_CACHE_KEY}::${normalizedTags.join(',')}`\n let markdown = markdownCache.get(cacheKey)\n\n if (!markdown) {\n markdown = getMarkdown(cacheKey, {\n customHtmlTags: normalizedTags,\n })\n markdownCache.set(cacheKey, markdown)\n }\n\n return options.customMarkdownIt\n ? options.customMarkdownIt(markdown)\n : markdown\n}\n\nfunction getNodeList(value: unknown) {\n return Array.isArray(value) ? value as BaseNode[] : []\n}\n","import type { Type } from '@angular/core'\n\nexport type CustomComponentMap = Record<string, Type<unknown>>\n\nconst GLOBAL_KEY = '__global__'\n\ninterface Store {\n scopedComponents: Record<string, CustomComponentMap>\n revision: number\n listeners: Set<() => void>\n}\n\nconst STORE_KEY = '__MARKSTREAM_ANGULAR_CUSTOM_COMPONENTS_STORE__'\nconst store: Store = (() => {\n const globalStore = globalThis as any\n if (globalStore[STORE_KEY])\n return globalStore[STORE_KEY] as Store\n\n const next: Store = {\n scopedComponents: {},\n revision: 0,\n listeners: new Set(),\n }\n globalStore[STORE_KEY] = next\n return next\n})()\n\nfunction bumpRevision() {\n store.revision += 1\n for (const listener of Array.from(store.listeners)) {\n try {\n listener()\n }\n catch {\n // Ignore subscriber failures so one bad consumer does not break the registry.\n }\n }\n}\n\nexport function subscribeCustomComponents(listener: () => void) {\n store.listeners.add(listener)\n return () => {\n store.listeners.delete(listener)\n }\n}\n\nexport function getCustomComponentsRevision() {\n return store.revision\n}\n\nexport function setCustomComponents(id: string, mapping: CustomComponentMap): void\nexport function setCustomComponents(mapping: CustomComponentMap): void\nexport function setCustomComponents(idOrMapping: string | CustomComponentMap, maybeMapping?: CustomComponentMap) {\n if (typeof idOrMapping === 'string')\n store.scopedComponents[idOrMapping] = { ...(maybeMapping || {}) }\n else\n store.scopedComponents[GLOBAL_KEY] = { ...idOrMapping }\n bumpRevision()\n}\n\nexport function getCustomNodeComponents(customId?: string): CustomComponentMap {\n const globalMapping = store.scopedComponents[GLOBAL_KEY] || {}\n if (!customId)\n return globalMapping\n\n const scopedMapping = store.scopedComponents[customId] || {}\n if (!globalMapping || Object.keys(globalMapping).length === 0)\n return scopedMapping\n if (!scopedMapping || Object.keys(scopedMapping).length === 0)\n return globalMapping\n\n return {\n ...globalMapping,\n ...scopedMapping,\n }\n}\n\nexport function removeCustomComponents(id: string) {\n if (id === GLOBAL_KEY) {\n throw new Error('removeCustomComponents: cannot delete global mapping; call clearGlobalCustomComponents instead.')\n }\n delete store.scopedComponents[id]\n bumpRevision()\n}\n\nexport function clearGlobalCustomComponents() {\n delete store.scopedComponents[GLOBAL_KEY]\n bumpRevision()\n}\n","import type { SmoothMarkdownStreamOptions } from 'markstream-core'\nimport type { BaseNode, HtmlPolicy, MarkdownIt, ParsedNode, ParseOptions } from 'stream-markdown-parser'\nimport type { CustomComponentMap } from '../../customComponents'\nimport type { CodeBlockMonacoOptions, CodeBlockMonacoTheme } from '../../types/monaco'\nimport {\n getHtmlTagFromContent,\n getMarkdown,\n hasCompleteHtmlTagContent,\n normalizeCustomHtmlTags,\n normalizeCustomHtmlTagName as normalizeTagName,\n parseMarkdownToStructure,\n stripCustomHtmlWrapper,\n} from 'stream-markdown-parser'\nimport { hydrateCustomTagContent } from '../../hydrateCustomTagContent'\n\nexport {\n getHtmlTagFromContent,\n hasCompleteHtmlTagContent,\n normalizeCustomHtmlTags,\n normalizeTagName,\n stripCustomHtmlWrapper,\n}\n\nexport type AngularRenderableNode = (ParsedNode | BaseNode) & Record<string, unknown>\n\nexport interface CodeBlockPreviewPayload {\n node: AngularRenderableNode\n artifactType: 'text/html' | 'image/svg+xml'\n artifactTitle: string\n id: string\n}\n\nexport type NodeRendererCodeBlockProps = Partial<{\n stream: boolean\n darkTheme: CodeBlockMonacoTheme\n lightTheme: CodeBlockMonacoTheme\n themes: CodeBlockMonacoTheme[]\n monacoOptions: CodeBlockMonacoOptions\n minWidth: string | number\n maxWidth: string | number\n isShowPreview: boolean\n enableFontSizeControl: boolean\n showHeader: boolean\n showCopyButton: boolean\n showExpandButton: boolean\n showPreviewButton: boolean\n showCollapseButton: boolean\n showFontSizeButtons: boolean\n htmlPreviewAllowScripts: boolean\n htmlPreviewSandbox: string\n}> & Record<string, unknown>\n\nexport type NodeRendererMermaidProps = Partial<{\n maxHeight: string | null\n estimatedPreviewHeightPx: number\n workerTimeoutMs: number\n parseTimeoutMs: number\n renderTimeoutMs: number\n fullRenderTimeoutMs: number\n renderDebounceMs: number\n showHeader: boolean\n showModeToggle: boolean\n showCopyButton: boolean\n showExportButton: boolean\n showFullscreenButton: boolean\n showCollapseButton: boolean\n showZoomControls: boolean\n isStrict: boolean\n enableMermaidInteractions: boolean\n}> & Record<string, unknown>\n\nexport type NodeRendererD2Props = Partial<{\n maxHeight: string | null\n themeId: number | null\n darkThemeId: number | null\n showHeader: boolean\n showModeToggle: boolean\n showCopyButton: boolean\n showExportButton: boolean\n showCollapseButton: boolean\n}> & Record<string, unknown>\n\nexport type NodeRendererInfographicProps = Partial<{\n maxHeight: string | null\n estimatedPreviewHeightPx: number\n showHeader: boolean\n showModeToggle: boolean\n showCopyButton: boolean\n showCollapseButton: boolean\n showExportButton: boolean\n showFullscreenButton: boolean\n showZoomControls: boolean\n}> & Record<string, unknown>\n\nexport interface NodeRendererEvents {\n onCopy?: (code: string) => void\n onHandleArtifactClick?: (payload: CodeBlockPreviewPayload) => void\n}\n\nexport interface NodeRendererProps {\n content?: string\n nodes?: readonly BaseNode[] | null\n final?: boolean\n parseOptions?: ParseOptions\n customMarkdownIt?: (md: MarkdownIt) => MarkdownIt\n debugPerformance?: boolean\n customHtmlTags?: readonly string[]\n htmlPolicy?: HtmlPolicy\n viewportPriority?: boolean\n codeBlockStream?: boolean\n codeBlockDarkTheme?: CodeBlockMonacoTheme\n codeBlockLightTheme?: CodeBlockMonacoTheme\n codeBlockMonacoOptions?: CodeBlockMonacoOptions\n renderCodeBlocksAsPre?: boolean\n codeBlockMinWidth?: string | number\n codeBlockMaxWidth?: string | number\n codeBlockProps?: NodeRendererCodeBlockProps\n mermaidProps?: NodeRendererMermaidProps\n d2Props?: NodeRendererD2Props\n infographicProps?: NodeRendererInfographicProps\n customComponents?: CustomComponentMap\n showTooltips?: boolean\n themes?: CodeBlockMonacoTheme[]\n isDark?: boolean\n customId?: string\n indexKey?: number | string\n typewriter?: boolean\n /** Enable/disable non-code-node enter and streamed-text fade animations. Default: true */\n fade?: boolean\n batchRendering?: boolean\n initialRenderBatchSize?: number\n renderBatchSize?: number\n renderBatchDelay?: number\n renderBatchBudgetMs?: number\n renderBatchIdleTimeoutMs?: number\n deferNodesUntilVisible?: boolean\n maxLiveNodes?: number\n liveNodeBuffer?: number\n allowHtml?: boolean\n smoothStreaming?: boolean | 'auto'\n smoothStreamingOptions?: SmoothMarkdownStreamOptions\n}\n\nexport interface AngularRenderContext {\n customId?: string\n isDark?: boolean\n indexKey?: string\n final?: boolean\n typewriter?: boolean\n fade?: boolean\n textStreamState?: Map<string, string>\n streamRenderVersion?: number\n showTooltips?: boolean\n codeBlockStream?: boolean\n renderCodeBlocksAsPre?: boolean\n allowHtml?: boolean\n htmlPolicy?: HtmlPolicy\n customHtmlTags?: readonly string[]\n parseOptions?: ParseOptions\n customMarkdownIt?: (md: MarkdownIt) => MarkdownIt\n codeBlockProps?: NodeRendererCodeBlockProps\n mermaidProps?: NodeRendererMermaidProps\n d2Props?: NodeRendererD2Props\n infographicProps?: NodeRendererInfographicProps\n customComponents?: CustomComponentMap\n codeBlockThemes?: {\n themes?: CodeBlockMonacoTheme[]\n darkTheme?: CodeBlockMonacoTheme\n lightTheme?: CodeBlockMonacoTheme\n monacoOptions?: CodeBlockMonacoOptions\n minWidth?: string | number\n maxWidth?: string | number\n }\n events: NodeRendererEvents\n}\n\nconst markdownCache = new Map<string, MarkdownIt>()\n\nexport const BLOCK_LEVEL_TYPES = new Set([\n 'table',\n 'code_block',\n 'html_block',\n 'blockquote',\n 'list',\n 'list_item',\n 'definition_list',\n 'footnote',\n 'footnote_reference',\n 'footnote_anchor',\n 'admonition',\n 'thematic_break',\n 'math_block',\n 'thinking',\n 'vmr_container',\n])\n\nexport function buildRenderContext(\n props: NodeRendererProps,\n events: NodeRendererEvents = {},\n textStreamState?: Map<string, string>,\n streamRenderVersion?: number,\n): AngularRenderContext {\n const customHtmlTags = normalizeCustomHtmlTags([\n ...(props.customHtmlTags || []),\n ...(props.parseOptions?.customHtmlTags || []),\n ])\n\n return {\n customId: props.customId,\n isDark: props.isDark,\n indexKey: props.indexKey != null ? String(props.indexKey) : undefined,\n final: props.final,\n typewriter: props.typewriter,\n fade: props.fade,\n textStreamState,\n streamRenderVersion,\n showTooltips: props.showTooltips,\n codeBlockStream: props.codeBlockStream,\n renderCodeBlocksAsPre: props.renderCodeBlocksAsPre,\n allowHtml: props.allowHtml !== false,\n htmlPolicy: props.htmlPolicy ?? 'safe',\n customHtmlTags,\n parseOptions: props.parseOptions,\n customMarkdownIt: props.customMarkdownIt,\n codeBlockProps: props.codeBlockProps,\n mermaidProps: props.mermaidProps,\n d2Props: props.d2Props,\n infographicProps: props.infographicProps,\n customComponents: props.customComponents,\n codeBlockThemes: {\n themes: props.themes,\n darkTheme: props.codeBlockDarkTheme,\n lightTheme: props.codeBlockLightTheme,\n monacoOptions: props.codeBlockMonacoOptions,\n minWidth: props.codeBlockMinWidth,\n maxWidth: props.codeBlockMaxWidth,\n },\n events,\n }\n}\n\nexport function resolveParsedNodes(props: NodeRendererProps): AngularRenderableNode[] {\n if (Array.isArray(props.nodes))\n return props.nodes as AngularRenderableNode[]\n\n const content = getString(props.content)\n if (!content)\n return []\n\n const normalizedTags = normalizeCustomHtmlTags([\n ...(props.customHtmlTags || []),\n ...(props.parseOptions?.customHtmlTags || []),\n ])\n const cacheKey = `${props.customId || 'markstream-angular'}::${normalizedTags.join(',')}`\n let markdown = markdownCache.get(cacheKey)\n if (!markdown) {\n markdown = getMarkdown(cacheKey, { customHtmlTags: normalizedTags })\n markdownCache.set(cacheKey, markdown)\n }\n\n const parser = props.customMarkdownIt\n ? props.customMarkdownIt(markdown)\n : markdown\n\n const options: ParseOptions = {\n ...(props.parseOptions ?? {}),\n }\n if (typeof props.final === 'boolean')\n options.final = props.final\n if (normalizedTags.length > 0)\n options.customHtmlTags = normalizedTags\n\n return hydrateCustomTagContent(\n parseMarkdownToStructure(content, parser, options) as AngularRenderableNode[],\n content,\n normalizedTags,\n ) as AngularRenderableNode[]\n}\n\nexport function getNodeList(value: unknown): AngularRenderableNode[] {\n return Array.isArray(value)\n ? value.filter((item): item is AngularRenderableNode => !!item && typeof item === 'object')\n : []\n}\n\nexport function isWhitespaceTextNode(node: AngularRenderableNode | null | undefined) {\n return getString((node as any)?.type) === 'text' && getString((node as any)?.content).trim() === ''\n}\n\nexport function getMeaningfulLinkChildren(node: AngularRenderableNode | null | undefined) {\n if (getString((node as any)?.type) !== 'link')\n return []\n\n return getNodeList((node as any)?.children).filter(child => !isWhitespaceTextNode(child))\n}\n\nexport function isImageOnlyLinkNode(node: AngularRenderableNode | null | undefined) {\n const linkChildren = getMeaningfulLinkChildren(node)\n return linkChildren.length === 1 && getString((linkChildren[0] as any)?.type) === 'image'\n}\n\nexport function isMediaOnlyParagraphNodes(children: readonly AngularRenderableNode[]) {\n const meaningfulChildren = getNodeList(children).filter(child => !isWhitespaceTextNode(child))\n return meaningfulChildren.length > 0\n && meaningfulChildren.every(child => getString((child as any)?.type) === 'image' || isImageOnlyLinkNode(child))\n}\n\nexport function normalizeMediaOnlyParagraphNodes(children: readonly AngularRenderableNode[]) {\n const source = getNodeList(children)\n const meaningfulChildren = source.filter(child => !isWhitespaceTextNode(child))\n\n if (!isMediaOnlyParagraphNodes(source) || meaningfulChildren.length <= 1)\n return source\n\n const normalized: AngularRenderableNode[] = []\n for (let index = 0; index < source.length; index += 1) {\n const child = source[index]\n if (!isWhitespaceTextNode(child)) {\n normalized.push(child)\n continue\n }\n\n const hasPrevious = normalized.length > 0\n const hasNext = source.slice(index + 1).some(nextChild => !isWhitespaceTextNode(nextChild))\n if (!hasPrevious || !hasNext)\n continue\n\n normalized.push({\n ...(child as Record<string, unknown>),\n content: ' ',\n raw: ' ',\n } as AngularRenderableNode)\n }\n\n return normalized\n}\n\nexport function getString(value: unknown): string {\n return typeof value === 'string'\n ? value\n : value == null\n ? ''\n : String(value)\n}\n\nexport function isSafeAttrName(value: string): boolean {\n return /^[^\\s\"'<>`=]+$/.test(value) && !/^on/i.test(value)\n}\n\nexport function escapeHtml(value: unknown): string {\n return getString(value)\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;')\n}\n\nexport function escapeAttr(value: unknown): string {\n return escapeHtml(value).replace(/`/g, '&#96;')\n}\n\nexport function sanitizeClassToken(value: string): string {\n return value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '')\n}\n\nexport function clampHeadingLevel(value: unknown): number {\n const level = Math.trunc(Number(value) || 1)\n return Math.min(6, Math.max(1, level))\n}\n\nexport function capitalize(value: string): string {\n return value ? `${value[0].toUpperCase()}${value.slice(1)}` : ''\n}\n\nexport function normalizeCodeLanguage(raw: unknown) {\n const head = String(String(raw ?? '').split(/\\s+/g)[0] ?? '').toLowerCase()\n const safe = head.replace(/[^\\w-]/g, '')\n return safe || 'plaintext'\n}\n\nexport function resolveCodeBlockLanguage(node: AngularRenderableNode) {\n return normalizeCodeLanguage((node as any)?.language)\n}\n\nexport function encodeDataPayload(value: string) {\n if (!value)\n return ''\n\n const globalBuffer = (globalThis as any)?.require?.('buffer')?.Buffer\n if (globalBuffer?.from)\n return globalBuffer.from(value, 'utf8').toString('base64')\n\n if (typeof TextEncoder !== 'undefined' && typeof globalThis.btoa === 'function') {\n const bytes = new TextEncoder().encode(value)\n let binary = ''\n for (const byte of bytes)\n binary += String.fromCharCode(byte)\n return globalThis.btoa(binary)\n }\n\n return ''\n}\n\nexport function normalizeTokenAttrs(attrs?: Array<[string, string | null]> | null) {\n if (!Array.isArray(attrs) || attrs.length === 0)\n return null\n return attrs.reduce<Record<string, string | true>>((acc, [name, value]) => {\n if (!name || !isSafeAttrName(name))\n return acc\n acc[name] = value ?? true\n return acc\n }, {})\n}\n\nexport function splitParagraphChildren(children: readonly AngularRenderableNode[]) {\n const parts: Array<\n | { kind: 'inline', nodes: AngularRenderableNode[] }\n | { kind: 'block', node: AngularRenderableNode }\n > = []\n\n const inlineBuffer: AngularRenderableNode[] = []\n const flushInline = () => {\n if (!inlineBuffer.length)\n return\n parts.push({ kind: 'inline', nodes: inlineBuffer.slice() })\n inlineBuffer.length = 0\n }\n\n for (const child of children) {\n if (BLOCK_LEVEL_TYPES.has(String(child?.type || ''))) {\n flushInline()\n parts.push({ kind: 'block', node: child })\n }\n else {\n inlineBuffer.push(child)\n }\n }\n flushInline()\n\n return parts\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-blockquote-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <blockquote class=\"blockquote-node\" dir=\"auto\" [attr.cite]=\"cite\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </blockquote>\n `,\n styles: [`\n .blockquote-node :where(.markstream-angular) {\n content-visibility: visible;\n contain: content;\n contain-intrinsic-size: 0 0;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BlockquoteNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get cite() {\n const value = (this.node as any)?.cite\n return typeof value === 'string' && value.trim() ? value : null\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'blockquote'}-quote`\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\n\n@Component({\n selector: 'markstream-angular-checkbox-node',\n standalone: true,\n template: '<input type=\"checkbox\" disabled [checked]=\"checked\">',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get checked() {\n return !!(this.node as any)?.checked\n }\n}\n","function humanizeKey(key: string) {\n const suffix = key.split('.').pop() || key\n return suffix\n .replace(/[_-]/g, ' ')\n .replace(/([A-Z])/g, ' $1')\n .replace(/\\s+/g, ' ')\n .replace(/\\b\\w/g, char => char.toUpperCase())\n .trim()\n}\n\nconst defaultMap: Record<string, string> = {\n 'common.copy': 'Copy',\n 'common.copied': 'Copied',\n 'common.decrease': 'Decrease',\n 'common.reset': 'Reset',\n 'common.increase': 'Increase',\n 'common.expand': 'Expand',\n 'common.collapse': 'Collapse',\n 'common.preview': 'Preview',\n 'common.source': 'Source',\n 'common.export': 'Export',\n 'common.open': 'Open',\n 'common.close': 'Close',\n 'common.zoomIn': 'Zoom in',\n 'common.zoomOut': 'Zoom out',\n 'common.resetZoom': 'Reset zoom',\n 'artifacts.htmlPreviewTitle': 'HTML Preview',\n 'artifacts.svgPreviewTitle': 'SVG Preview',\n}\n\nexport function setDefaultI18nMap(map: Record<string, string>) {\n Object.assign(defaultMap, map)\n}\n\nexport function useSafeI18n() {\n return {\n t(key: string) {\n return defaultMap[key] ?? humanizeKey(key)\n },\n }\n}\n","let monacoModule: any = null\nlet importAttempted = false\nlet pendingImport: Promise<MonacoRuntimeModule | null> | null = null\nlet workersPreloaded = false\n\nexport interface MonacoRuntimeHelpers {\n createEditor?: (container: HTMLElement, code: string, language: string) => Promise<unknown> | unknown\n createDiffEditor?: (container: HTMLElement, original: string, modified: string, language: string) => Promise<unknown> | unknown\n updateCode?: (code: string, language?: string) => Promise<unknown> | unknown\n updateDiff?: (original: string, modified: string, language?: string) => Promise<unknown> | unknown\n cleanupEditor?: () => unknown\n safeClean?: () => unknown\n setTheme?: (theme?: string | Record<string, unknown>) => Promise<unknown> | unknown\n getEditorView?: () => unknown\n getDiffEditorView?: () => unknown\n refreshDiffPresentation?: () => unknown\n}\n\nexport interface MonacoRuntimeModule {\n useMonaco: (options?: Record<string, unknown>) => MonacoRuntimeHelpers\n preloadMonacoWorkers?: () => Promise<unknown> | unknown\n getOrCreateHighlighter?: (...args: unknown[]) => Promise<unknown> | unknown\n}\n\nasync function preloadWorkers(mod: any) {\n if (workersPreloaded)\n return\n workersPreloaded = true\n const existingEnv = (globalThis as any)?.MonacoEnvironment\n if (existingEnv && (typeof existingEnv.getWorker === 'function' || typeof existingEnv.getWorkerUrl === 'function'))\n return\n if (typeof mod?.preloadMonacoWorkers === 'function')\n await mod.preloadMonacoWorkers()\n}\n\nasync function warmupShikiTokenizer(mod: any) {\n const getOrCreateHighlighter = mod?.getOrCreateHighlighter\n if (typeof getOrCreateHighlighter !== 'function')\n return true\n\n try {\n const highlighter = await getOrCreateHighlighter(\n ['vitesse-dark', 'vitesse-light'],\n ['plaintext', 'text', 'javascript'],\n )\n\n if (highlighter && typeof highlighter.codeToTokens === 'function') {\n highlighter.codeToTokens('const a = 1', { lang: 'javascript', theme: 'vitesse-dark' })\n }\n\n return true\n }\n catch (error) {\n console.warn('[markstream-angular] Failed to warm up stream-monaco tokenizer; falling back to plain code rendering.', error)\n return false\n }\n}\n\nexport async function getUseMonaco(): Promise<MonacoRuntimeModule | null> {\n if (monacoModule)\n return monacoModule\n if (pendingImport)\n return await pendingImport\n if (importAttempted)\n return null\n\n pendingImport = (async () => {\n // Prefer `stream-diffs`: smaller runtime without the heavy\n // `monaco-editor` dependency. `stream-monaco` remains supported as a\n // fallback for consumers who install it.\n const candidates = [\n async () => (await import('stream-diffs')) as any,\n async () => (await import('stream-monaco')) as any,\n ]\n\n for (const load of candidates) {\n try {\n const candidate = await load()\n const resolved = candidate?.default ?? candidate\n if (typeof resolved?.useMonaco !== 'function')\n continue\n monacoModule = resolved\n await preloadWorkers(monacoModule)\n\n const ready = await warmupShikiTokenizer(monacoModule)\n if (!ready) {\n monacoModule = null\n importAttempted = true\n return null\n }\n\n return monacoModule\n }\n catch {\n // Try the next candidate runtime.\n }\n }\n\n importAttempted = true\n return null\n })()\n\n try {\n return await pendingImport\n }\n finally {\n pendingImport = null\n }\n}\n","export type LanguageIconResolver = (lang: string) => string | undefined | null\n\n// Keep Angular's default language icons visually identical to the Vue 3 Material theme.\nconst MATERIAL_FALLBACK_ICON = '<svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path fill=\"#ff7043\" d=\"M2 2a1 1 0 0 0-1 1v10c0 .554.446 1 1 1h12c.554 0 1-.446 1-1V3a1 1 0 0 0-1-1zm0 3h12v8H2zm1 2 2 2-2 2 1 1 3-3-3-3zm5 3.5V12h5v-1.5z\"/></svg>'\nconst MATERIAL_TEXT_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\"/><path fill=\"#42a5f5\" d=\"M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5z\"/></svg>'\nconst MATERIAL_PLAIN_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\"/><path fill=\"#42a5f5\" d=\"M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5z\"/></svg>'\nconst MATERIAL_HTML_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#e65100\" d=\"m4 4 2 22 10 2 10-2 2-22Zm19.72 7H11.28l.29 3h11.86l-.802 9.335L15.99 25l-6.635-1.646L8.93 19h3.02l.19 2 3.86.77 3.84-.77.29-4H8.84L8 8h16Z\"/></svg>'\nconst MATERIAL_CSS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#7e57c2\" d=\"M20 18h-2v-2h-2v2c0 .193 0 .703 1.254 1.033A3.345 3.345 0 0 1 20 22h2v2h2v-2c0-.388-.562-.851-1.254-1.034C20.356 20.34 20 18.84 20 18m-3.254 2.966C14.356 20.34 14 18.84 14 18h-2v-2h-2v8h2v-2h4v2h2v-2c0-.388-.562-.851-1.254-1.034\"/><path fill=\"#7e57c2\" d=\"M24 4H4v20a4 4 0 0 0 4 4h16.16A3.84 3.84 0 0 0 28 24.16V8a4 4 0 0 0-4-4m2 14h-2v-2h-2v2c0 .193 0 .703 1.254 1.033A3.345 3.345 0 0 1 26 22v2a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2 2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2 2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2 2 2 0 0 1 2-2h2a2 2 0 0 1 2 2 2 2 0 0 1 2-2h2a2 2 0 0 1 2 2Z\"/></svg>'\nconst MATERIAL_JAVASCRIPT_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path fill=\"#ffca28\" d=\"M2 2v12h12V2zm6 6h1v4a1.003 1.003 0 0 1-1 1H7a1.003 1.003 0 0 1-1-1v-1h1v1h1zm3 0h2v1h-2v1h1a1.003 1.003 0 0 1 1 1v1a1.003 1.003 0 0 1-1 1h-2v-1h2v-1h-1a1.003 1.003 0 0 1-1-1V9a1.003 1.003 0 0 1 1-1\"/></svg>'\nconst MATERIAL_TYPESCRIPT_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" viewBox=\"0 0 16 16\"><path fill=\"#0288d1\" d=\"M2 2v12h12V2zm4 6h3v1H8v4H7V9H6zm5 0h2v1h-2v1h1a1.003 1.003 0 0 1 1 1v1a1.003 1.003 0 0 1-1 1h-2v-1h2v-1h-1a1.003 1.003 0 0 1-1-1V9a1.003 1.003 0 0 1 1-1\"/></svg>'\nconst MATERIAL_JSX_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#00bcd4\" d=\"M16 12c7.444 0 12 2.59 12 4s-4.556 4-12 4-12-2.59-12-4 4.556-4 12-4m0-2c-7.732 0-14 2.686-14 6s6.268 6 14 6 14-2.686 14-6-6.268-6-14-6\"/><path fill=\"#00bcd4\" d=\"M16 14a2 2 0 1 0 2 2 2 2 0 0 0-2-2\"/><path fill=\"#00bcd4\" d=\"M10.458 5.507c2.017 0 5.937 3.177 9.006 8.493 3.722 6.447 3.757 11.687 2.536 12.392a.9.9 0 0 1-.457.1c-2.017 0-5.938-3.176-9.007-8.492C8.814 11.553 8.779 6.313 10 5.608a.9.9 0 0 1 .458-.1m-.001-2A2.87 2.87 0 0 0 9 3.875C6.13 5.532 6.938 12.304 10.804 19c3.284 5.69 7.72 9.493 10.74 9.493A2.87 2.87 0 0 0 23 28.124c2.87-1.656 2.062-8.428-1.804-15.124-3.284-5.69-7.72-9.493-10.74-9.493Z\"/><path fill=\"#00bcd4\" d=\"M21.543 5.507a.9.9 0 0 1 .457.1c1.221.706 1.186 5.946-2.536 12.393-3.07 5.316-6.99 8.493-9.007 8.493a.9.9 0 0 1-.457-.1C8.779 25.686 8.814 20.446 12.536 14c3.07-5.316 6.99-8.493 9.007-8.493m0-2c-3.02 0-7.455 3.804-10.74 9.493C6.939 19.696 6.13 26.468 9 28.124a2.87 2.87 0 0 0 1.457.369c3.02 0 7.455-3.804 10.74-9.493C25.061 12.304 25.87 5.532 23 3.876a2.87 2.87 0 0 0-1.457-.369\"/></svg>'\nconst MATERIAL_TSX_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#0288d1\" d=\"M16 12c7.444 0 12 2.59 12 4s-4.556 4-12 4-12-2.59-12-4 4.556-4 12-4m0-2c-7.732 0-14 2.686-14 6s6.268 6 14 6 14-2.686 14-6-6.268-6-14-6\"/><path fill=\"#0288d1\" d=\"M16 14a2 2 0 1 0 2 2 2 2 0 0 0-2-2\"/><path fill=\"#0288d1\" d=\"M10.458 5.507c2.017 0 5.937 3.177 9.006 8.493 3.722 6.447 3.757 11.687 2.536 12.392a.9.9 0 0 1-.457.1c-2.017 0-5.938-3.176-9.007-8.492C8.814 11.553 8.779 6.313 10 5.608a.9.9 0 0 1 .458-.1m-.001-2A2.87 2.87 0 0 0 9 3.875C6.13 5.532 6.938 12.304 10.804 19c3.284 5.69 7.72 9.493 10.74 9.493A2.87 2.87 0 0 0 23 28.124c2.87-1.656 2.062-8.428-1.804-15.124-3.284-5.69-7.72-9.493-10.74-9.493Z\"/><path fill=\"#0288d1\" d=\"M21.543 5.507a.9.9 0 0 1 .457.1c1.221.706 1.186 5.946-2.536 12.393-3.07 5.316-6.99 8.493-9.007 8.493a.9.9 0 0 1-.457-.1C8.779 25.686 8.814 20.446 12.536 14c3.07-5.316 6.99-8.493 9.007-8.493m0-2c-3.02 0-7.455 3.804-10.74 9.493C6.939 19.696 6.13 26.468 9 28.124a2.87 2.87 0 0 0 1.457.369c3.02 0 7.455-3.804 10.74-9.493C25.061 12.304 25.87 5.532 23 3.876a2.87 2.87 0 0 0-1.457-.369\"/></svg>'\nconst MATERIAL_JSON_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 -960 960 960\"><path fill=\"#f9a825\" d=\"M560-160v-80h120q17 0 28.5-11.5T720-280v-80q0-38 22-69t58-44v-14q-36-13-58-44t-22-69v-80q0-17-11.5-28.5T680-720H560v-80h120q50 0 85 35t35 85v80q0 17 11.5 28.5T840-560h40v160h-40q-17 0-28.5 11.5T800-360v80q0 50-35 85t-85 35zm-280 0q-50 0-85-35t-35-85v-80q0-17-11.5-28.5T120-400H80v-160h40q17 0 28.5-11.5T160-600v-80q0-50 35-85t85-35h120v80H280q-17 0-28.5 11.5T240-680v80q0 38-22 69t-58 44v14q36 13 58 44t22 69v80q0 17 11.5 28.5T280-240h120v80z\"/></svg>'\nconst MATERIAL_MARKDOWN_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#42a5f5\" d=\"m14 10-4 3.5L6 10H4v12h4v-6l2 2 2-2v6h4V10zm12 6v-6h-4v6h-4l6 8 6-8z\"/></svg>'\nconst MATERIAL_MERMAID_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"none\" stroke=\"#26c6da\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 5c0 12 4.5 11.5 8 14 1.66 1.33 2.34 4 2 8h6c-.34-4 .34-6.67 2-8 3.5-2.5 8-2 8-14-4 0-8 1-12 9-4-8-8-9-12-9z\"/></svg>'\nconst MATERIAL_PYTHON_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"#0288d1\" d=\"M9.86 2A2.86 2.86 0 0 0 7 4.86v1.68h4.29c.39 0 .71.57.71.96H4.86A2.86 2.86 0 0 0 2 10.36v3.781a2.86 2.86 0 0 0 2.86 2.86h1.18v-2.68a2.85 2.85 0 0 1 2.85-2.86h5.25c1.58 0 2.86-1.271 2.86-2.851V4.86A2.86 2.86 0 0 0 14.14 2zm-.72 1.61c.4 0 .72.12.72.71s-.32.891-.72.891c-.39 0-.71-.3-.71-.89s.32-.711.71-.711\"/><path fill=\"#fdd835\" d=\"M17.959 7v2.68a2.85 2.85 0 0 1-2.85 2.859H9.86A2.85 2.85 0 0 0 7 15.389v3.75a2.86 2.86 0 0 0 2.86 2.86h4.28A2.86 2.86 0 0 0 17 19.14v-1.68h-4.291c-.39 0-.709-.57-.709-.96h7.14A2.86 2.86 0 0 0 22 13.64V9.86A2.86 2.86 0 0 0 19.14 7zM8.32 11.513l-.004.004.038-.004zm6.54 7.276c.39 0 .71.3.71.89a.71.71 0 0 1-.71.71c-.4 0-.72-.12-.72-.71s.32-.89.72-.89\"/></svg>'\nconst MATERIAL_SHELL_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path fill=\"#ff7043\" d=\"M2 2a1 1 0 0 0-1 1v10c0 .554.446 1 1 1h12c.554 0 1-.446 1-1V3a1 1 0 0 0-1-1zm0 3h12v8H2zm1 2 2 2-2 2 1 1 3-3-3-3zm5 3.5V12h5v-1.5z\"/></svg>'\nconst MATERIAL_SVG_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"#8bc34a\" d=\"M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m.12 13.5 3.74 3.74 1.42-1.41-2.33-2.33 2.33-2.33-1.42-1.41zm11.16 0-3.74-3.74-1.42 1.41 2.33 2.33-2.33 2.33 1.42 1.41z\"/></svg>'\nconst MATERIAL_VUE_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"#41b883\" d=\"M1.791 3.851 12 21.471 22.209 3.936V3.85H18.24l-6.18 10.616L5.906 3.851z\"/><path fill=\"#35495e\" d=\"m5.907 3.851 6.152 10.617L18.24 3.851h-3.723L12.084 8.03 9.66 3.85z\"/></svg>'\nconst LANGUAGE_ALIAS_MAP: Record<string, string> = {\n '': '',\n 'cjs': 'javascript',\n 'd2lang': 'd2',\n 'js': 'javascript',\n 'jsx': 'jsx',\n 'md': 'markdown',\n 'mjs': 'javascript',\n 'plaintext': 'plain',\n 'py': 'python',\n 'sh': 'shell',\n 'shellscript': 'shell',\n 'text': 'plain',\n 'ts': 'typescript',\n 'tsx': 'tsx',\n}\n\nconst LANGUAGE_LABEL_MAP: Record<string, string> = {\n '': 'Text',\n 'css': 'CSS',\n 'd2': 'D2',\n 'html': 'HTML',\n 'javascript': 'JavaScript',\n 'json': 'JSON',\n 'jsx': 'JSX',\n 'markdown': 'Markdown',\n 'mermaid': 'Mermaid',\n 'plain': 'Text',\n 'plaintext': 'Text',\n 'python': 'Python',\n 'shell': 'Shell',\n 'svg': 'SVG',\n 'tsx': 'TSX',\n 'typescript': 'TypeScript',\n 'vue': 'Vue',\n}\n\nconst LANGUAGE_ICON_MAP: Record<string, string> = {\n '': MATERIAL_TEXT_ICON,\n 'css': MATERIAL_CSS_ICON,\n 'html': MATERIAL_HTML_ICON,\n 'javascript': MATERIAL_JAVASCRIPT_ICON,\n 'json': MATERIAL_JSON_ICON,\n 'jsx': MATERIAL_JSX_ICON,\n 'markdown': MATERIAL_MARKDOWN_ICON,\n 'mermaid': MATERIAL_MERMAID_ICON,\n 'plain': MATERIAL_PLAIN_ICON,\n 'python': MATERIAL_PYTHON_ICON,\n 'shell': MATERIAL_SHELL_ICON,\n 'svg': MATERIAL_SVG_ICON,\n 'tsx': MATERIAL_TSX_ICON,\n 'typescript': MATERIAL_TYPESCRIPT_ICON,\n 'vue': MATERIAL_VUE_ICON,\n}\n\nlet userLanguageIconResolver: LanguageIconResolver | null = null\n\nfunction extractLanguageToken(lang?: string | null) {\n if (!lang)\n return ''\n const trimmed = lang.trim()\n if (!trimmed)\n return ''\n const [firstToken] = trimmed.split(/\\s+/)\n const [base] = firstToken.split(':')\n return base.toLowerCase()\n}\n\nexport function normalizeLanguageIdentifier(lang?: string | null): string {\n const token = extractLanguageToken(lang)\n return LANGUAGE_ALIAS_MAP[token] ?? token\n}\n\nexport function resolveMonacoLanguageId(lang?: string | null): string {\n const canonical = normalizeLanguageIdentifier(lang)\n if (!canonical)\n return 'plaintext'\n if (canonical === 'plain')\n return 'plaintext'\n if (canonical === 'jsx')\n return 'javascript'\n if (canonical === 'tsx')\n return 'typescript'\n return canonical\n}\n\nexport function setLanguageIconResolver(resolver?: LanguageIconResolver | null) {\n userLanguageIconResolver = resolver ?? null\n}\n\nexport function getLanguageIcon(lang: string): string {\n if (userLanguageIconResolver) {\n const hit = userLanguageIconResolver(lang)\n if (hit != null && hit !== '')\n return hit\n }\n const normalized = normalizeLanguageIdentifier(lang)\n return LANGUAGE_ICON_MAP[normalized] || MATERIAL_FALLBACK_ICON\n}\n\nexport const languageMap = LANGUAGE_LABEL_MAP\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString, normalizeCodeLanguage } from '../shared/node-helpers'\n\nfunction countCodeLines(code: string) {\n let count = 1\n for (let index = 0; index < code.length; index++) {\n if (code[index] === '\\n') {\n count++\n }\n else if (code[index] === '\\r') {\n count++\n if (code[index + 1] === '\\n')\n index++\n }\n }\n return count\n}\n\nfunction getDisplayCode(code: unknown, loading?: boolean) {\n const value = getString(code)\n return loading ? value : value.replace(/\\r\\n$|\\n$|\\r$/, '')\n}\n\n@Component({\n selector: 'markstream-angular-pre-code-node',\n standalone: true,\n imports: [CommonModule],\n template: `<pre\n [ngClass]=\"preClasses\"\n [ngStyle]=\"lineNumberLayoutStyle\"\n [attr.aria-busy]=\"loading\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.data-language]=\"language\"\n [attr.data-markstream-line-numbers]=\"showLineNumbers ? '1' : null\"\n data-markstream-pre=\"1\"\n tabindex=\"0\"\n ><ng-container *ngIf=\"showLineNumbers\"><span class=\"markstream-pre__line-numbers\" aria-hidden=\"true\"><span class=\"markstream-pre__line-numbers-text\">{{ lineNumbersText }}</span></span></ng-container><code translate=\"no\" class=\"markstream-pre__code\" [textContent]=\"displayCode\"></code></pre>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PreCodeNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() showLineNumbers = false\n\n // ─── Line-count caching (mirrors the vue3 PreCodeNode) ─────────────────────\n private cachedCode = ''\n private cachedCount = 1\n private textCount = 0\n private textCache = ''\n\n get language() {\n return normalizeCodeLanguage((this.node as any)?.language)\n }\n\n get languageClass() {\n return `language-${this.language}`\n }\n\n get preClasses() {\n return {\n [this.languageClass]: true,\n 'markstream-pre--line-numbers': this.showLineNumbers === true,\n }\n }\n\n get ariaLabel() {\n return this.language ? `Code block: ${this.language}` : 'Code block'\n }\n\n get code() {\n return getString((this.node as any)?.code)\n }\n\n get loading() {\n return (this.node as any)?.loading === true\n }\n\n get displayCode() {\n return getDisplayCode((this.node as any)?.code, this.loading)\n }\n\n get codeLineCount() {\n const code = this.displayCode\n if (code === this.cachedCode)\n return this.cachedCount\n this.cachedCount = countCodeLines(code)\n this.cachedCode = code\n return this.cachedCount\n }\n\n get lineNumbersText() {\n const count = this.codeLineCount\n if (count < this.textCount) {\n this.textCount = 0\n this.textCache = ''\n }\n for (let line = this.textCount + 1; line <= count; line++)\n this.textCache += `${this.textCache ? '\\n' : ''}${line}`\n this.textCount = count\n return this.textCache\n }\n\n get lineNumberLayoutStyle(): Record<string, string> | null {\n if (this.showLineNumbers !== true)\n return null\n\n const maximumLineNumber = this.codeLineCount\n const width = `${Math.max(2, String(maximumLineNumber).length)}ch`\n return {\n '--markstream-pre-line-number-width': width,\n '--markstream-pre-diff-line-number-width': width,\n '--markstream-code-padding-left': 'calc(var(--markstream-pre-line-number-padding-left, 2ch) + var(--markstream-pre-line-number-width, 2ch) + var(--markstream-pre-line-number-padding-right, 1ch) + var(--markstream-pre-line-number-separator-width, 2px) + var(--markstream-pre-line-number-gap-to-code, 1ch))',\n }\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { useSafeI18n } from '../../i18n/useSafeI18n'\n\nconst isDevEnv = typeof globalThis !== 'undefined' && (globalThis as Record<string, unknown>).ngDevMode !== false\nlet lastWarnedDangerousSandbox: string | null = null\n\nfunction normalizeSandboxTokens(value: string) {\n return new Set(\n value\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter(Boolean),\n )\n}\n\nfunction warnDangerousHtmlPreviewSandbox(value: string) {\n if (!isDevEnv || typeof console === 'undefined' || lastWarnedDangerousSandbox === value)\n return\n const tokens = normalizeSandboxTokens(value)\n if (tokens.has('allow-scripts') && tokens.has('allow-same-origin')) {\n lastWarnedDangerousSandbox = value\n console.warn('[markstream-angular] htmlPreviewSandbox contains both allow-scripts and allow-same-origin. Use this only for fully trusted content served from an isolated origin.')\n }\n}\n\nfunction resolveHtmlPreviewSandboxValue(htmlPreviewSandbox: unknown, htmlPreviewAllowScripts?: boolean) {\n if (typeof htmlPreviewSandbox === 'string') {\n warnDangerousHtmlPreviewSandbox(htmlPreviewSandbox)\n return htmlPreviewSandbox\n }\n if (htmlPreviewSandbox !== undefined)\n return ''\n return htmlPreviewAllowScripts === true ? 'allow-scripts' : ''\n}\n\n@Component({\n selector: 'markstream-angular-html-preview-frame',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n class=\"html-preview-frame__backdrop\"\n [class.html-preview-frame__backdrop--dark]=\"isDark\"\n (click)=\"onClose?.()\"\n >\n <div\n class=\"html-preview-frame\"\n [class.html-preview-frame--dark]=\"isDark\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"html-preview-frame__header\">\n <div class=\"html-preview-frame__title\">\n <span class=\"html-preview-frame__dot\"></span>\n <span class=\"html-preview-frame__label\">{{ resolvedTitle }}</span>\n </div>\n <button\n type=\"button\"\n class=\"html-preview-frame__close\"\n [class.html-preview-frame__close--dark]=\"isDark\"\n (click)=\"onClose?.()\"\n >\n ×\n </button>\n </div>\n <iframe\n class=\"html-preview-frame__iframe\"\n [attr.sandbox]=\"sandboxValue\"\n referrerpolicy=\"no-referrer\"\n [srcdoc]=\"srcdoc\"\n [title]=\"resolvedTitle\"\n ></iframe>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HtmlPreviewFrameComponent {\n @Input() code = ''\n @Input() isDark = false\n @Input() htmlPreviewAllowScripts = false\n @Input() htmlPreviewSandbox?: string\n @Input() title?: string\n @Input() onClose?: () => void\n\n private readonly i18n = useSafeI18n()\n\n get resolvedTitle() {\n return this.title || `HTML ${this.i18n.t('common.preview')}`\n }\n\n get sandboxValue() {\n return resolveHtmlPreviewSandboxValue(this.htmlPreviewSandbox, this.htmlPreviewAllowScripts)\n }\n\n get srcdoc() {\n const base = this.code || ''\n const lowered = base.trim().toLowerCase()\n if (lowered.startsWith('<!doctype') || lowered.startsWith('<html') || lowered.startsWith('<body'))\n return base\n const bg = this.isDark ? '#020617' : '#ffffff'\n const fg = this.isDark ? '#e5e7eb' : '#020617'\n return `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <style>\n html, body {\n margin: 0;\n padding: 0;\n height: 100%;\n background-color: ${bg};\n color: ${fg};\n }\n body {\n font-family: system-ui, -apple-system, BlinkMacSystemFont, 'SF Pro Text', ui-sans-serif, sans-serif;\n }\n </style>\n </head>\n <body>\n ${base}\n </body>\n</html>`\n }\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { CodeBlockMonacoTheme } from '../../types/monaco'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { useSafeI18n } from '../../i18n/useSafeI18n'\nimport { getUseMonaco } from '../../optional/monaco'\nimport { getLanguageIcon, languageMap, normalizeLanguageIdentifier, resolveMonacoLanguageId } from '../../utils/languageIcon'\nimport { PreCodeNodeComponent } from '../PreCodeNode/PreCodeNode.component'\nimport { getString } from '../shared/node-helpers'\nimport { HtmlPreviewFrameComponent } from './HtmlPreviewFrame.component'\n\nconst defaultCodeFontFamily = '\"SF Mono\", Monaco, Consolas, \"Ubuntu Mono\", \"Liberation Mono\", \"Courier New\", monospace'\nconst defaultCodeFontSize = 12\nconst defaultCodeLineHeight = 18\n\nfunction readPositiveCodeMetric(value: unknown) {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : undefined\n}\n\ninterface MonacoHelpers {\n createEditor?: (container: HTMLElement, code: string, language: string) => Promise<unknown> | unknown\n createDiffEditor?: (container: HTMLElement, original: string, modified: string, language: string) => Promise<unknown> | unknown\n updateCode?: (code: string, language?: string) => Promise<unknown> | unknown\n updateDiff?: (original: string, modified: string, language?: string) => Promise<unknown> | unknown\n cleanupEditor?: () => void\n safeClean?: () => void\n getEditorView?: () => any\n getDiffEditorView?: () => any\n setTheme?: (theme?: CodeBlockMonacoTheme) => Promise<unknown> | unknown\n}\n\nfunction parseCodeFenceInfo(raw: string) {\n const firstLine = String(raw ?? '').split(/\\r?\\n/, 1)[0]?.trim() ?? ''\n if (firstLine.length < 3)\n return ''\n const marker = firstLine[0]\n if ((marker !== '`' && marker !== '~') || firstLine[1] !== marker || firstLine[2] !== marker)\n return ''\n\n let index = 3\n while (firstLine[index] === marker)\n index += 1\n\n return firstLine.slice(index).trim()\n}\n\nfunction extractCodeBlockFileLabel(raw: unknown) {\n const info = parseCodeFenceInfo(getString(raw))\n if (!info)\n return ''\n\n const tokens = info.split(/\\s+/).filter(Boolean)\n if (!tokens.length)\n return ''\n\n const candidates = tokens[0] === 'diff' ? tokens.slice(1) : tokens\n for (const token of candidates) {\n const value = token.includes(':')\n ? token.slice(token.indexOf(':') + 1)\n : token\n if (value && /[./\\\\-]/.test(value))\n return value\n }\n\n return ''\n}\n\n@Component({\n selector: 'markstream-angular-code-block-node',\n standalone: true,\n imports: [CommonModule, PreCodeNodeComponent, HtmlPreviewFrameComponent],\n template: `\n <div\n class=\"code-block-container\"\n [class.is-dark]=\"resolvedIsDark\"\n [class.is-plain-text]=\"isPlainTextLanguage\"\n [class.is-rendering]=\"resolvedLoading\"\n [attr.data-markstream-monaco]=\"editorReady && !useFallback ? '1' : null\"\n [attr.data-markstream-monaco-diff]=\"editorReady && isDiff && !useFallback ? '1' : null\"\n [ngStyle]=\"containerStyle\"\n >\n <div\n *ngIf=\"resolvedShowHeader\"\n class=\"code-block-header\"\n [style.color]=\"headerForeground\"\n [style.backgroundColor]=\"headerBackground\"\n >\n <div class=\"code-block-header__meta\">\n <span class=\"icon-slot code-block-language-icon\">\n <img class=\"code-block-language-icon__image\" [src]=\"languageIconDataUrl\" alt=\"\" />\n </span>\n <span class=\"code-header-copy\">\n <span class=\"code-header-title\">{{ headerTitle }}</span>\n <span *ngIf=\"headerCaption\" class=\"code-header-caption\">{{ headerCaption }}</span>\n </span>\n </div>\n <div class=\"code-block-header__actions\">\n <button\n *ngIf=\"resolvedShowCollapseButton\"\n type=\"button\"\n class=\"code-action-btn\"\n [attr.title]=\"tooltipFor(collapsed ? t('common.expand') : t('common.collapse'))\"\n [attr.aria-pressed]=\"collapsed\"\n (click)=\"toggleCollapsed()\"\n >\n <svg\n [style.rotate]=\"collapsed ? '0deg' : '90deg'\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n class=\"code-action-btn__icon\"\n >\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m9 18l6-6l-6-6\" />\n </svg>\n </button>\n\n <ng-container *ngIf=\"resolvedShowFontSizeButtons && resolvedEnableFontSizeControl\">\n <button\n type=\"button\"\n class=\"code-action-btn\"\n [disabled]=\"fontSize <= 10\"\n [attr.title]=\"tooltipFor(t('common.decrease'))\"\n (click)=\"changeFontSize(-1)\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"code-action-btn\"\n [disabled]=\"fontSize === defaultFontSize\"\n [attr.title]=\"tooltipFor(t('common.reset'))\"\n (click)=\"resetFontSize()\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\n <path d=\"M3 12a9 9 0 1 0 9-9a9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n </g>\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"code-action-btn\"\n [disabled]=\"fontSize >= 36\"\n [attr.title]=\"tooltipFor(t('common.increase'))\"\n (click)=\"changeFontSize(1)\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7v14\" />\n </svg>\n </button>\n </ng-container>\n\n <button\n *ngIf=\"resolvedShowCopyButton\"\n type=\"button\"\n class=\"code-action-btn\"\n [attr.title]=\"tooltipFor(copied ? t('common.copied') : t('common.copy'))\"\n [attr.aria-label]=\"copied ? t('common.copied') : t('common.copy')\"\n (click)=\"copyCode()\"\n >\n <svg *ngIf=\"!copied\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" />\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />\n </g>\n </svg>\n <svg *ngIf=\"copied\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 6L9 17l-5-5\" />\n </svg>\n </button>\n\n <button\n *ngIf=\"resolvedShowExpandButton\"\n type=\"button\"\n class=\"code-action-btn\"\n [attr.title]=\"tooltipFor(expanded ? t('common.collapse') : t('common.expand'))\"\n [attr.aria-pressed]=\"expanded\"\n (click)=\"toggleExpanded()\"\n >\n <svg *ngIf=\"expanded\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m14 10l7-7m-1 7h-6V4M3 21l7-7m-6 0h6v6\" />\n </svg>\n <svg *ngIf=\"!expanded\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" class=\"code-action-btn__icon\">\n <path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 3h6v6m0-6l-7 7M3 21l7-7m-1 7H3v-6\" />\n </svg>\n </button>\n\n <button\n *ngIf=\"resolvedShowPreviewButton && isPreviewable\"\n type=\"button\"\n class=\"code-action-btn\"\n [attr.title]=\"tooltipFor(t('common.preview'))\"\n [attr.aria-label]=\"t('common.preview')\"\n (click)=\"previewCode()\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" class=\"code-action-btn__icon\">\n <g fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\">\n <path d=\"M23.628 7.41c-.12-1.172-.08-3.583-.9-4.233c-1.921-1.51-6.143-1.11-8.815-1.19c-3.481-.15-7.193.14-10.625.24a.34.34 0 0 0 0 .67c3.472-.05 7.074-.29 10.575-.09c2.471.15 6.653-.14 8.254 1.16c.4.33.41 2.732.49 3.582a42 42 0 0 1 .08 9.005a13.8 13.8 0 0 1-.45 3.001c-2.42 1.4-19.69 2.381-20.72.55a21 21 0 0 1-.65-4.632a41.5 41.5 0 0 1 .12-7.964c.08 0 7.334.33 12.586.24c2.331 0 4.682-.13 6.764-.21a.33.33 0 0 0 0-.66c-7.714-.16-12.897-.43-19.31.05c.11-1.38.48-3.922.38-4.002a.3.3 0 0 0-.42 0c-.37.41-.29 1.77-.36 2.251s-.14 1.07-.2 1.6a45 45 0 0 0-.36 8.645a21.8 21.8 0 0 0 .66 5.002c1.46 2.702 17.248 1.461 20.95.43c1.45-.4 1.69-.8 1.871-1.95c.575-3.809.602-7.68.08-11.496\" />\n <path d=\"M4.528 5.237a.84.84 0 0 0-.21-1c-.77-.41-1.71.39-1 1.1a.83.83 0 0 0 1.21-.1m2.632-.25c.14-.14.19-.84-.2-1c-.77-.41-1.71.39-1 1.09a.82.82 0 0 0 1.2-.09m2.88 0a.83.83 0 0 0-.21-1c-.77-.41-1.71.39-1 1.09a.82.82 0 0 0 1.21-.09m-4.29 8.735c0 .08.23 2.471.31 2.561a.371.371 0 0 0 .63-.14c0-.09 0 0 .15-1.72a10 10 0 0 0-.11-2.232a5.3 5.3 0 0 1-.26-1.37a.3.3 0 0 0-.54-.24a6.8 6.8 0 0 0-.2 2.33c-1.281-.38-1.121.13-1.131-.42a15 15 0 0 0-.19-1.93c-.16-.17-.36-.17-.51.14a20 20 0 0 0-.43 3.471c.04.773.18 1.536.42 2.272c.26.4.7.22.7-.1c0-.09-.16-.09 0-1.862c.06-1.18-.23-.3 1.16-.76m5.033-2.552c.32-.07.41-.28.39-.37c0-.55-3.322-.34-3.462-.24s-.2.18-.18.28s0 .11 0 .16a3.8 3.8 0 0 0 1.591.361v.82a15 15 0 0 0-.13 3.132c0 .2-.09.94.17 1.16a.34.34 0 0 0 .48 0c.125-.35.196-.718.21-1.09a8 8 0 0 0 .14-3.232c0-.13.05-.7-.1-.89a8 8 0 0 0 .89-.09m5.544-.181a.69.69 0 0 0-.89-.44a2.8 2.8 0 0 0-1.252 1.001a2.3 2.3 0 0 0-.41-.83a1 1 0 0 0-1.6.27a7 7 0 0 0-.35 2.07c0 .571 0 2.642.06 2.762c.14 1.09 1 .51.63.13a17.6 17.6 0 0 1 .38-3.962c.32-1.18.32.2.39.51s.11 1.081.73 1.081s.48-.93 1.401-1.78q.075 1.345 0 2.69a15 15 0 0 0 0 1.811a.34.34 0 0 0 .68 0q.112-.861.11-1.73a16.7 16.7 0 0 0 .12-3.582m1.441-.201c-.05.16-.3 3.002-.31 3.202a6.3 6.3 0 0 0 .21 1.741c.33 1 1.21 1.07 2.291.82a3.7 3.7 0 0 0 1.14-.23c.21-.22.10-.59-.41-.64q-.817.096-1.64.07c-.44-.07-.34 0-.67-4.442q.015-.185 0-.37a.316.316 0 0 0-.23-.38a.316.316 0 0 0-.38.23\" />\n </g>\n </svg>\n </button>\n </div>\n </div>\n\n <div\n class=\"code-block-body\"\n [class.code-block-body--collapsed]=\"collapsed\"\n [class.code-block-body--expanded]=\"expanded\"\n >\n <ng-container *ngIf=\"!showLoadingPlaceholder; else loadingTpl\">\n <markstream-angular-pre-code-node\n *ngIf=\"useFallback; else editorTpl\"\n class=\"code-editor-fallback-surface\"\n [node]=\"node\"\n [ngStyle]=\"preFallbackStyle\"\n [showLineNumbers]=\"true\"\n />\n\n <ng-template #editorTpl>\n <div\n #editorHost\n class=\"code-editor-container\"\n [style.visibility]=\"editorReady ? 'visible' : 'hidden'\"\n [attr.aria-hidden]=\"editorReady ? null : 'true'\"\n ></div>\n <markstream-angular-pre-code-node\n *ngIf=\"!editorReady\"\n class=\"code-editor-fallback-surface\"\n [node]=\"node\"\n [ngStyle]=\"preFallbackStyle\"\n [showLineNumbers]=\"true\"\n />\n </ng-template>\n </ng-container>\n </div>\n\n <markstream-angular-html-preview-frame\n *ngIf=\"inlinePreviewOpen && isPreviewable\"\n [code]=\"resolvedCode\"\n [htmlPreviewAllowScripts]=\"mergedProps.htmlPreviewAllowScripts === true\"\n [htmlPreviewSandbox]=\"mergedProps.htmlPreviewSandbox\"\n [isDark]=\"resolvedIsDark\"\n [title]=\"previewTitle\"\n [onClose]=\"closeInlinePreview\"\n />\n\n <span class=\"sr-only\" aria-live=\"polite\" role=\"status\">{{ copied ? t('common.copied') : '' }}</span>\n </div>\n\n <ng-template #loadingTpl>\n <div class=\"code-loading-placeholder\">\n <div class=\"loading-skeleton\">\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line\"></div>\n <div class=\"skeleton-line short\"></div>\n </div>\n </div>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CodeBlockNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n private readonly i18n = useSafeI18n()\n\n @ViewChild('editorHost') private editorHost?: ElementRef<HTMLElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() props?: Record<string, any>\n\n useFallback = false\n copied = false\n collapsed = false\n expanded = false\n inlinePreviewOpen = false\n editorReady = false\n defaultFontSize = defaultCodeFontSize\n fontSize = defaultCodeFontSize\n\n private helpers: MonacoHelpers | null = null\n private runtimeMonacoOptions: Record<string, any> | null = null\n private createPromise: Promise<void> | null = null\n private syncPromise: Promise<void> | null = null\n private editorKind: 'single' | 'diff' | null = null\n private editorStreamMode: boolean | null = null\n private lifecycleId = 0\n private viewReady = false\n private destroyed = false\n private copyTimer: number | null = null\n private deferredHeightSyncRaf: number | null = null\n\n get t() {\n return this.i18n.t\n }\n\n get mergedProps() {\n return {\n ...(this.context?.codeBlockProps || {}),\n ...(this.props || {}),\n }\n }\n\n get resolvedLoading() {\n const explicit = this.mergedProps.loading\n if (typeof explicit === 'boolean')\n return explicit\n return (this.node as any)?.loading !== false\n }\n\n get resolvedStream() {\n const explicit = this.mergedProps.stream\n if (typeof explicit === 'boolean')\n return explicit\n if (typeof this.context?.codeBlockStream === 'boolean')\n return this.context.codeBlockStream\n return true\n }\n\n get resolvedIsDark() {\n const explicit = this.mergedProps.isDark\n if (typeof explicit === 'boolean')\n return explicit\n return this.context?.isDark === true\n }\n\n get resolvedDarkTheme() {\n return this.mergedProps.darkTheme ?? this.context?.codeBlockThemes?.darkTheme ?? 'vitesse-dark'\n }\n\n get resolvedLightTheme() {\n return this.mergedProps.lightTheme ?? this.context?.codeBlockThemes?.lightTheme ?? 'vitesse-light'\n }\n\n get resolvedThemes() {\n return this.mergedProps.themes ?? this.context?.codeBlockThemes?.themes ?? ['vitesse-dark', 'vitesse-light']\n }\n\n get resolvedMonacoOptions() {\n return {\n ...(this.context?.codeBlockThemes?.monacoOptions || {}),\n ...(this.mergedProps.monacoOptions || {}),\n }\n }\n\n get resolvedEnableFontSizeControl() {\n if (typeof this.mergedProps.enableFontSizeControl === 'boolean')\n return this.mergedProps.enableFontSizeControl\n return true\n }\n\n get resolvedShowHeader() {\n return this.mergedProps.showHeader !== false\n }\n\n get resolvedShowCopyButton() {\n return this.mergedProps.showCopyButton !== false\n }\n\n get resolvedShowExpandButton() {\n return this.mergedProps.showExpandButton !== false\n }\n\n get resolvedShowPreviewButton() {\n return this.mergedProps.showPreviewButton !== false\n }\n\n get resolvedShowCollapseButton() {\n return this.mergedProps.showCollapseButton !== false\n }\n\n get resolvedShowFontSizeButtons() {\n return this.mergedProps.showFontSizeButtons !== false\n }\n\n get resolvedShowTooltips() {\n if (typeof this.mergedProps.showTooltips === 'boolean')\n return this.mergedProps.showTooltips\n return this.context?.showTooltips !== false\n }\n\n get resolvedIsShowPreview() {\n if (typeof this.mergedProps.isShowPreview === 'boolean')\n return this.mergedProps.isShowPreview\n return true\n }\n\n get rawLanguage() {\n return getString((this.node as any)?.language || 'plaintext')\n }\n\n get canonicalLanguage() {\n return normalizeLanguageIdentifier(this.rawLanguage) || 'plain'\n }\n\n get monacoLanguage() {\n return resolveMonacoLanguageId(this.rawLanguage)\n }\n\n get isPlainTextLanguage() {\n return this.monacoLanguage === 'plaintext'\n }\n\n get displayLanguage() {\n const label = languageMap[this.canonicalLanguage] || this.canonicalLanguage\n return label ? label.charAt(0).toUpperCase() + label.slice(1) : 'Text'\n }\n\n get languageIconDataUrl() {\n const icon = getLanguageIcon(this.rawLanguage).trim()\n const svg = icon.includes('xmlns=')\n ? icon\n : icon.replace('<svg', '<svg xmlns=\"http://www.w3.org/2000/svg\"')\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`\n }\n\n get resolvedCode() {\n if (this.isDiff)\n return getString((this.node as any)?.updatedCode || (this.node as any)?.code)\n return getString((this.node as any)?.code)\n }\n\n get originalCode() {\n return getString((this.node as any)?.originalCode)\n }\n\n get isDiff() {\n return !!(this.node as any)?.diff\n }\n\n get isPreviewable() {\n if (!this.resolvedIsShowPreview)\n return false\n return this.canonicalLanguage === 'html' || this.canonicalLanguage === 'svg'\n }\n\n get previewTitle() {\n return this.canonicalLanguage === 'html'\n ? this.t('artifacts.htmlPreviewTitle')\n : this.t('artifacts.svgPreviewTitle')\n }\n\n get headerForeground() {\n return 'var(--code-action-fg, var(--code-fg))'\n }\n\n get headerBackground() {\n return 'var(--code-header-bg, var(--code-bg))'\n }\n\n get headerTitle() {\n return this.fileLabel || this.displayLanguage\n }\n\n get headerCaption() {\n return this.fileLabel ? (this.isDiff ? `Diff / ${this.displayLanguage}` : this.displayLanguage) : ''\n }\n\n get fileLabel() {\n return extractCodeBlockFileLabel((this.node as any)?.raw)\n }\n\n get ariaLabel() {\n return `Code block: ${this.displayLanguage}`\n }\n\n get showLoadingPlaceholder() {\n return this.shouldDelayEditor\n }\n\n get shouldDelayEditor() {\n return !this.resolvedStream && this.resolvedLoading\n }\n\n get containerStyle() {\n const style: Record<string, string> = {}\n const min = this.resolveCssSize(this.mergedProps.minWidth ?? this.context?.codeBlockThemes?.minWidth)\n const max = this.resolveCssSize(this.mergedProps.maxWidth ?? this.context?.codeBlockThemes?.maxWidth)\n if (min)\n style.minWidth = min\n if (max)\n style.maxWidth = max\n return style\n }\n\n get preFallbackStyle(): Record<string, string> {\n const options = this.resolvedMonacoOptions\n const fontSize = readPositiveCodeMetric(this.fontSize) ?? defaultCodeFontSize\n const lineHeight = readPositiveCodeMetric(options.lineHeight)\n ?? (fontSize === defaultCodeFontSize ? defaultCodeLineHeight : Math.max(12, Math.round(fontSize * 1.5)))\n const padding = options.padding && typeof options.padding === 'object'\n ? options.padding as Record<string, unknown>\n : null\n const defaultPadding = this.isDiff ? 0 : 8\n const paddingTop = readPositiveCodeMetric(padding?.top) ?? (padding?.top === 0 ? 0 : defaultPadding)\n const paddingBottom = readPositiveCodeMetric(padding?.bottom) ?? (padding?.bottom === 0 ? 0 : defaultPadding)\n const fontFamily = typeof options.fontFamily === 'string' && options.fontFamily.trim()\n ? options.fontFamily.trim()\n : defaultCodeFontFamily\n\n return {\n '--markstream-code-font-family': fontFamily,\n '--markstream-code-padding-y': `${paddingTop}px`,\n '--markstream-code-padding-bottom': `${paddingBottom}px`,\n '--vscode-editor-font-size': `${fontSize}px`,\n '--vscode-editor-line-height': `${lineHeight}px`,\n 'font-family': fontFamily,\n 'font-size': `${fontSize}px`,\n 'line-height': `${lineHeight}px`,\n }\n }\n\n readonly closeInlinePreview = () => {\n this.inlinePreviewOpen = false\n this.cdr.markForCheck()\n }\n\n ngAfterViewInit() {\n this.viewReady = true\n this.applyInitialFontSize()\n void this.syncEditorState()\n }\n\n ngOnChanges() {\n this.applyInitialFontSize()\n if (!this.viewReady)\n return\n void this.syncEditorState()\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.lifecycleId += 1\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n this.cancelDeferredHeightSync()\n this.cleanupEditor()\n }\n\n tooltipFor(text: string) {\n return this.resolvedShowTooltips ? text : null\n }\n\n toggleCollapsed() {\n this.collapsed = !this.collapsed\n this.inlinePreviewOpen = false\n if (!this.collapsed)\n queueMicrotask(() => void this.syncEditorState())\n this.cdr.markForCheck()\n }\n\n toggleExpanded() {\n this.expanded = !this.expanded\n queueMicrotask(() => this.applyEditorHeight())\n this.cdr.markForCheck()\n }\n\n changeFontSize(delta: number) {\n this.fontSize = Math.min(36, Math.max(10, this.fontSize + delta))\n this.applyEditorFontSize()\n this.applyEditorHeight()\n this.cdr.markForCheck()\n }\n\n resetFontSize() {\n this.fontSize = this.defaultFontSize\n this.applyEditorFontSize()\n this.applyEditorHeight()\n this.cdr.markForCheck()\n }\n\n async copyCode() {\n const text = this.resolvedCode\n try {\n if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText)\n await navigator.clipboard.writeText(text)\n else\n this.copyUsingTextarea(text)\n }\n catch {\n this.copyUsingTextarea(text)\n }\n this.copied = true\n this.context?.events.onCopy?.(text)\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n if (typeof window !== 'undefined') {\n this.copyTimer = window.setTimeout(() => {\n this.copied = false\n this.cdr.markForCheck()\n }, 1000)\n }\n this.cdr.markForCheck()\n }\n\n previewCode() {\n if (!this.isPreviewable)\n return\n const artifactType = this.canonicalLanguage === 'html' ? 'text/html' : 'image/svg+xml'\n const artifactTitle = this.previewTitle\n if (typeof this.context?.events.onHandleArtifactClick === 'function') {\n this.context.events.onHandleArtifactClick({\n node: this.node,\n artifactType,\n artifactTitle,\n id: `temp-${this.canonicalLanguage}-${Date.now()}`,\n })\n return\n }\n if (this.canonicalLanguage === 'html')\n this.inlinePreviewOpen = !this.inlinePreviewOpen\n this.cdr.markForCheck()\n }\n\n private applyInitialFontSize() {\n const previousDefault = this.defaultFontSize\n const initial = Number(this.resolvedMonacoOptions.fontSize)\n this.defaultFontSize = Number.isFinite(initial) && initial > 0 ? initial : defaultCodeFontSize\n if (\n !(typeof this.fontSize === 'number' && Number.isFinite(this.fontSize) && this.fontSize > 0)\n || this.fontSize === previousDefault\n || this.fontSize < 10\n || this.fontSize > 36\n ) {\n this.fontSize = this.defaultFontSize\n }\n }\n\n private async syncEditorState() {\n if (this.destroyed || !this.viewReady)\n return\n if (this.collapsed || this.showLoadingPlaceholder) {\n this.editorReady = false\n this.cdr.markForCheck()\n return\n }\n\n await this.ensureHelpers()\n if (this.destroyed || this.useFallback || !this.helpers) {\n this.cdr.markForCheck()\n return\n }\n\n if (!this.editorHost?.nativeElement) {\n this.editorReady = false\n this.cdr.markForCheck()\n return\n }\n\n if (this.syncPromise)\n return this.syncPromise\n\n this.syncPromise = (async () => {\n try {\n const desiredKind = this.isDiff && typeof this.helpers?.createDiffEditor === 'function' ? 'diff' : 'single'\n const desiredStreamMode = this.resolvedLoading !== false\n if (\n this.editorKind !== desiredKind\n || this.editorStreamMode !== desiredStreamMode\n || !this.hasRenderedEditorDom(desiredKind)\n ) {\n await this.recreateEditor(desiredKind, desiredStreamMode)\n }\n else {\n await this.updateEditor()\n }\n await Promise.resolve(this.helpers?.setTheme?.(this.resolvedIsDark ? this.resolvedDarkTheme : this.resolvedLightTheme))\n this.applyEditorFontSize()\n const creationId = this.lifecycleId\n if (!await this.prepareEditorHandoff(desiredKind, creationId))\n return\n this.editorReady = true\n this.scheduleDeferredHeightSync()\n }\n catch {\n this.useFallback = true\n this.editorReady = false\n this.cleanupEditor()\n }\n finally {\n this.syncPromise = null\n this.cdr.markForCheck()\n }\n })()\n\n return this.syncPromise\n }\n\n private async ensureHelpers() {\n if (this.helpers || this.useFallback)\n return\n if (this.createPromise)\n return this.createPromise\n\n this.createPromise = (async () => {\n const monacoModule = await getUseMonaco()\n if (!monacoModule || typeof monacoModule.useMonaco !== 'function') {\n this.useFallback = true\n return\n }\n\n const configuredUnsafeCSS = typeof this.resolvedMonacoOptions.unsafeCSS === 'string'\n ? this.resolvedMonacoOptions.unsafeCSS\n : ''\n const options = {\n wordWrap: 'on',\n stream: this.resolvedLoading !== false,\n wrappingIndent: 'same',\n readOnly: true,\n minimap: { enabled: false },\n lineNumbers: 'on',\n revealDebounceMs: 75,\n MAX_HEIGHT: 500,\n fontFamily: defaultCodeFontFamily,\n fontSize: this.defaultFontSize,\n lineHeight: defaultCodeLineHeight,\n padding: this.isDiff ? { top: 0, bottom: 0 } : { top: 8, bottom: 8 },\n themes: this.resolvedThemes,\n theme: this.resolvedIsDark ? this.resolvedDarkTheme : this.resolvedLightTheme,\n ...(this.resolvedMonacoOptions || {}),\n // The Angular shell already owns the language/file header. Keep the\n // enhanced surface headerless so it matches the Vue 3 handoff contract.\n disableFileHeader: true,\n unsafeCSS: `[data-file], [data-diff] { --diffs-min-number-column-width-default: 2ch !important; }\n${configuredUnsafeCSS}`.trim(),\n }\n\n this.runtimeMonacoOptions = options\n this.helpers = monacoModule.useMonaco(options)\n })()\n\n try {\n await this.createPromise\n }\n finally {\n this.createPromise = null\n }\n }\n\n private async recreateEditor(kind: 'single' | 'diff', streamMode: boolean) {\n const host = this.editorHost?.nativeElement\n if (!host || !this.helpers)\n return\n\n this.editorReady = false\n this.lifecycleId += 1\n this.cleanupEditor()\n host.innerHTML = ''\n this.editorKind = kind\n this.editorStreamMode = streamMode\n if (this.runtimeMonacoOptions)\n this.runtimeMonacoOptions.stream = streamMode\n\n if (kind === 'diff') {\n await Promise.resolve(this.helpers.createDiffEditor?.(\n host,\n this.originalCode,\n this.resolvedCode,\n this.monacoLanguage,\n ))\n this.syncEditorGeometryVars()\n return\n }\n\n await Promise.resolve(this.helpers.createEditor?.(\n host,\n this.resolvedCode,\n this.monacoLanguage,\n ))\n this.syncEditorGeometryVars()\n }\n\n // Align the enhanced surface with the pre-fallback geometry. stream-diffs /\n // pierre honor these CSS variables on the editor host (custom properties\n // inherit across the pierre shadow boundary):\n // - `--diffs-tab-size`: fallback defaults to 4, pierre defaults to 2.\n // - `--diffs-gap-block`: only set when padding is present; the default 8px\n // gap already matches the fallback.\n private syncEditorGeometryVars() {\n const host = this.editorHost?.nativeElement\n if (!host)\n return\n const tabSize = readPositiveCodeMetric(this.resolvedMonacoOptions.tabSize) ?? 4\n host.style.setProperty('--diffs-tab-size', String(tabSize))\n const rawPadding = this.resolvedMonacoOptions.padding\n const hasConfiguredPadding = Boolean(rawPadding && typeof rawPadding === 'object')\n if (hasConfiguredPadding) {\n const top = readPositiveCodeMetric((rawPadding as Record<string, unknown>).top) ?? 0\n host.style.setProperty('--diffs-gap-block', `${top}px`)\n }\n else {\n host.style.removeProperty('--diffs-gap-block')\n }\n }\n\n private async updateEditor() {\n if (!this.helpers)\n return\n\n if (this.isDiff && this.editorKind === 'diff' && typeof this.helpers.updateDiff === 'function') {\n await Promise.resolve(this.helpers.updateDiff(this.originalCode, this.resolvedCode, this.monacoLanguage))\n return\n }\n\n await Promise.resolve(this.helpers.updateCode?.(this.resolvedCode, this.monacoLanguage))\n }\n\n private hasRenderedEditorDom(kind: 'single' | 'diff') {\n const host = this.editorHost?.nativeElement\n if (!host)\n return false\n const monacoSelector = kind === 'diff' ? '.monaco-diff-editor' : '.monaco-editor'\n return !!host.querySelector([\n monacoSelector,\n 'diffs-container',\n '.stream-diffs-shell',\n '[data-stream-diffs-state]',\n ].join(','))\n }\n\n private getVisualEditorSurface() {\n return this.editorHost?.nativeElement.querySelector<HTMLElement>([\n '.monaco-diff-editor',\n '.monaco-editor',\n 'diffs-container',\n '[data-stream-diffs-state]',\n '.stream-diffs-shell',\n ].join(',')) ?? null\n }\n\n private isEditorVisuallyReady(kind: 'single' | 'diff') {\n const host = this.editorHost?.nativeElement\n if (!host || !this.hasRenderedEditorDom(kind) || typeof window === 'undefined')\n return false\n const surface = this.getVisualEditorSurface()\n if (!surface)\n return false\n const rect = surface.getBoundingClientRect()\n if (rect.width <= 0 || rect.height <= 0)\n return false\n const style = window.getComputedStyle(surface)\n return style.display !== 'none'\n && Number.parseFloat(style.opacity || '1') > 0.01\n }\n\n private async prepareEditorHandoff(kind: 'single' | 'diff', creationId: number) {\n // Time-box the handoff: if visual readiness can't be confirmed (e.g. a\n // hidden/zero-size container), reveal the editor anyway once its DOM is\n // mounted so the block never strands in the pre-fallback forever.\n const deadline = Date.now() + 1500\n let attempt = 0\n while (Date.now() < deadline && attempt < 30) {\n attempt += 1\n if (this.destroyed || creationId !== this.lifecycleId)\n return false\n this.applyEditorHeight(true)\n await this.nextAnimationFrame()\n if (this.isEditorVisuallyReady(kind)) {\n this.applyEditorHeight(true)\n await this.nextAnimationFrame()\n return this.isEditorVisuallyReady(kind)\n }\n }\n return !this.destroyed && creationId === this.lifecycleId && this.hasRenderedEditorDom(kind)\n }\n\n private nextAnimationFrame() {\n if (typeof window === 'undefined' || typeof window.requestAnimationFrame !== 'function')\n return Promise.resolve()\n return new Promise<void>(resolve => window.requestAnimationFrame(() => resolve()))\n }\n\n private applyEditorFontSize() {\n const view = this.editorKind === 'diff'\n ? this.helpers?.getDiffEditorView?.()\n : this.helpers?.getEditorView?.()\n try {\n view?.updateOptions?.({ fontSize: this.fontSize, automaticLayout: this.expanded })\n if (this.editorKind === 'diff' && typeof view?.getModifiedEditor === 'function')\n view.getModifiedEditor()?.updateOptions?.({ fontSize: this.fontSize })\n }\n catch {}\n }\n\n private applyEditorHeight(_preparing = false) {\n const host = this.editorHost?.nativeElement\n if (!host)\n return\n\n const maxHeight = this.resolveMaxHeight()\n host.style.minHeight = '0px'\n host.style.maxHeight = this.expanded ? 'none' : `${maxHeight}px`\n host.style.overflow = this.expanded ? 'visible' : 'auto'\n\n const view = this.editorKind === 'diff'\n ? this.helpers?.getDiffEditorView?.()\n : this.helpers?.getEditorView?.()\n if (!view)\n return\n\n try {\n view.updateOptions?.({ automaticLayout: this.expanded })\n }\n catch {}\n\n const height = this.resolveEditorHeight(view, maxHeight)\n host.style.height = `${height}px`\n try {\n view.layout?.()\n }\n catch {}\n }\n\n private resolveEditorHeight(view: any, maxHeight: number) {\n let contentHeight = Number.NaN\n try {\n if (typeof view.getContentHeight === 'function')\n contentHeight = Number(view.getContentHeight())\n else if (this.editorKind === 'diff' && typeof view.getModifiedEditor === 'function')\n contentHeight = Number(view.getModifiedEditor()?.getContentHeight?.())\n }\n catch {}\n\n if (!Number.isFinite(contentHeight) || contentHeight <= 0) {\n const lines = this.resolveEditorLineCount(view)\n const lineHeight = this.resolveEditorLineHeight()\n const estimate = lines * (lineHeight + 1.5) + 1\n return Math.ceil(Math.max(1, this.expanded ? estimate : Math.min(estimate, maxHeight)))\n }\n\n return Math.ceil(Math.max(1, this.expanded ? contentHeight : Math.min(contentHeight, maxHeight)))\n }\n\n private resolveEditorLineCount(view: any) {\n try {\n if (\n this.editorKind === 'diff'\n && typeof view?.getOriginalEditor === 'function'\n && typeof view?.getModifiedEditor === 'function'\n ) {\n const originalLines = Number(view.getOriginalEditor?.()?.getModel?.()?.getLineCount?.() ?? 1)\n const modifiedLines = Number(view.getModifiedEditor?.()?.getModel?.()?.getLineCount?.() ?? 1)\n return Math.max(1, originalLines, modifiedLines)\n }\n\n const lines = Number(view?.getModel?.()?.getLineCount?.() ?? 1)\n if (Number.isFinite(lines) && lines > 0)\n return lines\n }\n catch {}\n\n return Math.max(1, String(this.resolvedCode || '').split('\\n').length)\n }\n\n private resolveEditorLineHeight() {\n const fromOptions = Number(this.resolvedMonacoOptions.lineHeight)\n if (Number.isFinite(fromOptions) && fromOptions > 0)\n return fromOptions\n\n const fromFontOption = Number(this.resolvedMonacoOptions.fontSize)\n if (Number.isFinite(fromFontOption) && fromFontOption > 0)\n return Math.max(12, Math.round(fromFontOption * 1.35))\n\n const fromState = Number(this.fontSize)\n if (Number.isFinite(fromState) && fromState > 0)\n return Math.max(12, Math.round(fromState * 1.35))\n\n return 18\n }\n\n private resolveMaxHeight() {\n const raw = this.resolvedMonacoOptions.MAX_HEIGHT ?? 500\n if (typeof raw === 'number' && Number.isFinite(raw))\n return raw > 0 ? raw : 500\n const matched = String(raw).match(/^(\\d+(?:\\.\\d+)?)/)\n const parsed = matched ? Number.parseFloat(matched[1]) : 500\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 500\n }\n\n private cancelDeferredHeightSync() {\n if (this.deferredHeightSyncRaf == null || typeof window === 'undefined')\n return\n window.cancelAnimationFrame(this.deferredHeightSyncRaf)\n this.deferredHeightSyncRaf = null\n }\n\n private scheduleDeferredHeightSync() {\n if (typeof window === 'undefined' || this.destroyed)\n return\n\n this.cancelDeferredHeightSync()\n this.deferredHeightSyncRaf = window.requestAnimationFrame(() => {\n this.deferredHeightSyncRaf = window.requestAnimationFrame(() => {\n this.deferredHeightSyncRaf = null\n this.applyEditorHeight()\n })\n })\n }\n\n private cleanupEditor() {\n this.cancelDeferredHeightSync()\n try {\n this.helpers?.safeClean?.()\n }\n catch {}\n try {\n this.helpers?.cleanupEditor?.()\n }\n catch {}\n this.editorKind = null\n }\n\n private resolveCssSize(value: unknown) {\n if (value == null || value === '')\n return null\n return typeof value === 'number' ? `${value}px` : String(value)\n }\n\n private copyUsingTextarea(text: string) {\n if (typeof document === 'undefined')\n return\n const textarea = document.createElement('textarea')\n textarea.value = text\n textarea.setAttribute('readonly', 'true')\n textarea.style.position = 'fixed'\n textarea.style.opacity = '0'\n textarea.style.pointerEvents = 'none'\n document.body.appendChild(textarea)\n textarea.select()\n try {\n document.execCommand('copy')\n }\n catch {}\n finally {\n textarea.remove()\n }\n }\n}\n","export interface D2Instance {\n D2?: D2Constructor\n compile?: (source: string, options?: Record<string, unknown>) => Promise<unknown> | unknown\n render?: (input: unknown, options?: Record<string, unknown>) => Promise<unknown> | unknown\n}\n\nexport interface D2Constructor {\n new (): D2Instance\n D2?: D2Constructor\n compile?: D2Instance['compile']\n}\n\nexport type D2Module = D2Constructor | D2Instance\nexport type D2Loader = () => Promise<unknown> | unknown\n\nconst defaultD2Loader: D2Loader = () => import('@terrastruct/d2')\n\nlet cachedD2: any = null\nlet d2Loader: D2Loader | null = defaultD2Loader\nlet pendingImport: Promise<unknown | null> | null = null\n\nfunction resetCachedD2() {\n cachedD2 = null\n pendingImport = null\n}\n\nfunction normalizeD2Module(mod: any) {\n if (!mod)\n return mod\n if (mod.D2 && typeof mod.D2 === 'function')\n return mod.D2\n if (mod.default && mod.default.D2 && typeof mod.default.D2 === 'function')\n return mod.default.D2\n const candidate = mod.default ?? mod\n if (typeof candidate === 'function')\n return candidate\n if (candidate?.D2 && typeof candidate.D2 === 'function')\n return candidate.D2\n return candidate\n}\n\nexport function setD2Loader(loader: D2Loader | null) {\n d2Loader = loader\n resetCachedD2()\n}\n\nexport function enableD2(loader?: D2Loader) {\n setD2Loader(loader ?? defaultD2Loader)\n}\n\nexport function disableD2() {\n setD2Loader(null)\n}\n\nexport function isD2Enabled() {\n return typeof d2Loader === 'function'\n}\n\nexport async function getD2(): Promise<D2Module | null> {\n if (cachedD2)\n return cachedD2\n if (pendingImport)\n return await pendingImport\n\n const loader = d2Loader\n if (!loader)\n return null\n\n pendingImport = (async () => {\n let mod: any\n try {\n mod = await loader()\n }\n catch (error) {\n if (loader === defaultD2Loader) {\n throw new Error('Optional dependency \"@terrastruct/d2\" is not installed. Please install it to enable D2 diagrams.')\n }\n throw error\n }\n\n if (!mod)\n return null\n\n cachedD2 = normalizeD2Module(mod)\n return cachedD2\n })()\n\n try {\n return await pendingImport\n }\n finally {\n pendingImport = null\n }\n}\n","const DISALLOWED_STYLE_PATTERNS = [/javascript:/i, /expression\\s*\\(/i, /url\\s*\\(\\s*javascript:/i, /@import/i]\nconst SAFE_URL_PROTOCOLS = /^(?:https?:|mailto:|tel:|#|\\/|data:image\\/(?:png|gif|jpe?g|webp);)/i\n\nfunction neutralizeScriptProtocols(raw: string) {\n return raw\n .replace(/[\"']\\s*javascript:/gi, '#')\n .replace(/\\bjavascript:/gi, '#')\n .replace(/[\"']\\s*vbscript:/gi, '#')\n .replace(/\\bvbscript:/gi, '#')\n .replace(/\\bdata:text\\/html/gi, '#')\n}\n\nfunction sanitizeUrl(value: string | null | undefined) {\n if (!value)\n return ''\n const trimmed = value.trim()\n if (SAFE_URL_PROTOCOLS.test(trimmed))\n return trimmed\n return ''\n}\n\nfunction scrubSvgElement(svgEl: SVGElement) {\n const forbiddenTags = new Set(['script'])\n const nodes = [svgEl, ...Array.from(svgEl.querySelectorAll<SVGElement>('*'))]\n for (const node of nodes) {\n if (forbiddenTags.has(node.tagName.toLowerCase())) {\n node.remove()\n continue\n }\n\n const attrs = Array.from(node.attributes)\n for (const attr of attrs) {\n const name = attr.name\n if (/^on/i.test(name)) {\n node.removeAttribute(name)\n continue\n }\n\n if (name === 'style' && attr.value) {\n if (DISALLOWED_STYLE_PATTERNS.some(re => re.test(attr.value))) {\n node.removeAttribute(name)\n continue\n }\n }\n\n if ((name === 'href' || name === 'xlink:href') && attr.value) {\n const safe = sanitizeUrl(attr.value)\n if (!safe) {\n node.removeAttribute(name)\n continue\n }\n if (safe !== attr.value)\n node.setAttribute(name, safe)\n }\n }\n }\n}\n\nexport function toSafeSvgMarkup(svg: string | null | undefined) {\n if (typeof DOMParser === 'undefined')\n return ''\n if (!svg)\n return ''\n\n const neutralized = neutralizeScriptProtocols(svg)\n const parsed = new DOMParser().parseFromString(neutralized, 'image/svg+xml')\n const svgEl = parsed.documentElement\n if (!svgEl || svgEl.nodeName.toLowerCase() !== 'svg')\n return ''\n\n const svgElement = svgEl as unknown as SVGElement\n scrubSvgElement(svgElement)\n return svgElement.outerHTML\n}\n\nexport function extractRenderedSvg(renderResult: any) {\n if (!renderResult)\n return ''\n if (typeof renderResult === 'string')\n return renderResult\n if (typeof renderResult.svg === 'string')\n return renderResult.svg\n if (typeof renderResult.data === 'string')\n return renderResult.data\n return ''\n}\n","export async function copyTextToClipboard(source: string) {\n try {\n if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(source)\n return true\n }\n }\n catch {\n // Fall back to the textarea path below.\n }\n\n if (typeof document === 'undefined')\n return false\n\n const textarea = document.createElement('textarea')\n textarea.value = source\n textarea.setAttribute('readonly', 'true')\n textarea.style.position = 'fixed'\n textarea.style.opacity = '0'\n textarea.style.pointerEvents = 'none'\n document.body.appendChild(textarea)\n textarea.select()\n\n try {\n document.execCommand('copy')\n return true\n }\n catch {\n return false\n }\n finally {\n textarea.remove()\n }\n}\n\nexport function clearElement(target: HTMLElement | null | undefined) {\n if (!target)\n return\n\n try {\n target.replaceChildren()\n }\n catch {\n target.innerHTML = ''\n }\n}\n\nexport function setElementHtml(target: HTMLElement | null | undefined, html: string) {\n if (!target)\n return\n clearElement(target)\n if (!html)\n return\n try {\n target.insertAdjacentHTML('afterbegin', html)\n }\n catch {\n target.innerHTML = html\n }\n}\n\nexport function downloadSvgMarkup(svgMarkup: string, filename: string) {\n if (!svgMarkup || typeof document === 'undefined' || typeof URL === 'undefined')\n return\n\n const blob = new Blob([svgMarkup], { type: 'image/svg+xml;charset=utf-8' })\n const url = URL.createObjectURL(blob)\n const link = document.createElement('a')\n link.href = url\n link.download = filename\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n URL.revokeObjectURL(url)\n}\n\nexport function resolveCssSize(value: unknown, fallback?: string) {\n if (value == null || value === '')\n return fallback ?? null\n return typeof value === 'number' ? `${value}px` : String(value)\n}\n\nexport function clampNumber(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value))\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { getD2 } from '../../optional/d2'\nimport { extractRenderedSvg, toSafeSvgMarkup } from '../../sanitizeSvg'\nimport { getString } from '../shared/node-helpers'\nimport {\n copyTextToClipboard,\n downloadSvgMarkup,\n resolveCssSize,\n setElementHtml,\n} from '../shared/rich-block-helpers'\n\nconst DARK_THEME_OVERRIDES: Record<string, string> = {\n N1: '#E5E7EB',\n N2: '#CBD5E1',\n N3: '#94A3B8',\n N4: '#64748B',\n N5: '#475569',\n N6: '#334155',\n N7: '#0B1220',\n B1: '#60A5FA',\n B2: '#3B82F6',\n B3: '#2563EB',\n B4: '#1D4ED8',\n B5: '#1E40AF',\n B6: '#111827',\n AA2: '#22D3EE',\n AA4: '#0EA5E9',\n AA5: '#0284C7',\n AB4: '#FBBF24',\n AB5: '#F59E0B',\n}\n\n@Component({\n selector: 'markstream-angular-d2-block-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n class=\"markstream-angular-enhanced-block markstream-angular-enhanced-block--d2\"\n [attr.data-markstream-d2]=\"'1'\"\n [attr.data-mode]=\"showSource ? 'source' : 'preview'\"\n >\n <div *ngIf=\"resolvedShowHeader\" class=\"markstream-angular-enhanced-block__header\">\n <div class=\"flex items-center gap-2 min-w-0\">\n <span class=\"markstream-angular-enhanced-block__badge\">D2</span>\n <span class=\"mermaid-title__text truncate\">Diagram</span>\n </div>\n\n <div class=\"markstream-angular-enhanced-block__actions\">\n <button\n *ngIf=\"resolvedShowModeToggle\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action mode-btn\"\n [class.is-active]=\"!showSource\"\n (click)=\"setMode(false)\"\n >\n Preview\n </button>\n <button\n *ngIf=\"resolvedShowModeToggle\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action mode-btn\"\n [class.is-active]=\"showSource\"\n (click)=\"setMode(true)\"\n >\n Source\n </button>\n <button\n *ngIf=\"resolvedShowCopyButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action d2-action-btn\"\n [attr.title]=\"tooltipFor(copied ? 'Copied' : 'Copy')\"\n (click)=\"copySource()\"\n >\n {{ copied ? 'Copied' : 'Copy' }}\n </button>\n <button\n *ngIf=\"resolvedShowExportButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action d2-action-btn\"\n [disabled]=\"!svgMarkup\"\n [attr.title]=\"tooltipFor('Export SVG')\"\n (click)=\"exportSvg()\"\n >\n Export\n </button>\n <button\n *ngIf=\"resolvedShowCollapseButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action d2-action-btn\"\n [attr.title]=\"tooltipFor(collapsed ? 'Expand' : 'Collapse')\"\n (click)=\"toggleCollapsed()\"\n >\n {{ collapsed ? 'Expand' : 'Collapse' }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"!collapsed\" class=\"markstream-angular-enhanced-block__body d2-block-body\" [style.maxHeight]=\"resolvedMaxHeight\">\n <div *ngIf=\"rendering && !showSource\" class=\"mermaid-loading\">\n <span class=\"mermaid-spinner\" aria-hidden=\"true\"></span>\n <span>Rendering D2...</span>\n </div>\n\n <div *ngIf=\"!showSource\" class=\"d2-render\">\n <div #previewHost class=\"d2-svg\"></div>\n </div>\n\n <div *ngIf=\"showSource\" class=\"d2-source\">\n <pre class=\"markstream-angular-enhanced-block__source d2-code\"><code translate=\"no\">{{ code }}</code></pre>\n </div>\n\n <div *ngIf=\"error\" class=\"d2-error\">{{ error }}</div>\n </div>\n\n <span class=\"sr-only\" aria-live=\"polite\" role=\"status\">{{ copied ? 'Copied' : '' }}</span>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class D2BlockNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n\n @ViewChild('previewHost') private previewHost?: ElementRef<HTMLElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() props?: Record<string, any>\n\n rendering = false\n copied = false\n collapsed = false\n showSource = false\n svgMarkup = ''\n error = ''\n\n private viewReady = false\n private destroyed = false\n private renderToken = 0\n private copyTimer: number | null = null\n\n get mergedProps() {\n return {\n ...(this.context?.d2Props || {}),\n ...(this.props || {}),\n }\n }\n\n get code() {\n return getString((this.node as any)?.code)\n }\n\n get resolvedIsDark() {\n if (typeof this.mergedProps.isDark === 'boolean')\n return this.mergedProps.isDark\n return this.context?.isDark === true\n }\n\n get resolvedShowHeader() {\n return this.mergedProps.showHeader !== false\n }\n\n get resolvedShowModeToggle() {\n return this.mergedProps.showModeToggle !== false\n }\n\n get resolvedShowCopyButton() {\n return this.mergedProps.showCopyButton !== false\n }\n\n get resolvedShowExportButton() {\n return this.mergedProps.showExportButton !== false\n }\n\n get resolvedShowCollapseButton() {\n return this.mergedProps.showCollapseButton !== false\n }\n\n get resolvedShowTooltips() {\n if (typeof this.mergedProps.showTooltips === 'boolean')\n return this.mergedProps.showTooltips\n return this.context?.showTooltips !== false\n }\n\n get resolvedMaxHeight() {\n return resolveCssSize(this.mergedProps.maxHeight, '500px')\n }\n\n get resolvedLoading() {\n if (typeof this.mergedProps.loading === 'boolean')\n return this.mergedProps.loading\n return (this.node as any)?.loading === true\n }\n\n get resolvedProgressiveRender() {\n return this.mergedProps.progressiveRender === true\n }\n\n ngAfterViewInit() {\n this.viewReady = true\n queueMicrotask(() => void this.renderDiagram())\n }\n\n ngOnChanges() {\n if (!this.viewReady)\n return\n queueMicrotask(() => void this.renderDiagram())\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.renderToken += 1\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n }\n\n tooltipFor(text: string) {\n return this.resolvedShowTooltips ? text : null\n }\n\n setMode(nextSource: boolean) {\n this.showSource = nextSource\n if (!nextSource)\n this.scheduleHostSync()\n this.cdr.markForCheck()\n }\n\n async copySource() {\n await copyTextToClipboard(this.code)\n this.copied = true\n this.context?.events.onCopy?.(this.code)\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n if (typeof window !== 'undefined') {\n this.copyTimer = window.setTimeout(() => {\n this.copied = false\n this.cdr.markForCheck()\n }, 1000)\n }\n this.cdr.markForCheck()\n }\n\n exportSvg() {\n if (!this.svgMarkup)\n return\n downloadSvgMarkup(this.svgMarkup, `d2-${Date.now()}.svg`)\n }\n\n toggleCollapsed() {\n this.collapsed = !this.collapsed\n if (!this.collapsed)\n queueMicrotask(() => void this.renderDiagram())\n this.cdr.markForCheck()\n }\n\n private async renderDiagram() {\n if (this.destroyed || !this.viewReady || this.collapsed)\n return\n\n const source = this.code.trim()\n if (!source) {\n this.svgMarkup = ''\n this.error = ''\n this.syncSvgHost()\n this.cdr.markForCheck()\n return\n }\n\n if (this.resolvedLoading && !this.resolvedProgressiveRender) {\n this.renderToken += 1\n this.rendering = true\n this.error = ''\n this.svgMarkup = ''\n this.syncSvgHost()\n this.cdr.markForCheck()\n return\n }\n\n const token = ++this.renderToken\n this.rendering = true\n this.error = ''\n this.cdr.markForCheck()\n\n try {\n const D2Ctor = await getD2()\n if (!D2Ctor)\n throw new Error('D2 renderer is not available.')\n\n const instance = createD2Instance(D2Ctor)\n if (!instance || typeof instance.compile !== 'function' || typeof instance.render !== 'function')\n throw new TypeError('D2 instance is missing compile/render methods.')\n\n const compileResult = await instance.compile(source)\n const diagram = compileResult?.diagram ?? compileResult\n const baseRenderOptions = compileResult?.renderOptions ?? compileResult?.options ?? {}\n const renderOptions: Record<string, any> = {\n ...baseRenderOptions,\n themeID: this.resolvedIsDark\n ? (this.mergedProps.darkThemeId ?? baseRenderOptions.darkThemeID ?? baseRenderOptions.themeID)\n : (this.mergedProps.themeId ?? baseRenderOptions.themeID),\n darkThemeID: null,\n darkThemeOverrides: null,\n }\n\n if (this.resolvedIsDark) {\n renderOptions.themeOverrides = {\n ...(baseRenderOptions.themeOverrides || {}),\n ...DARK_THEME_OVERRIDES,\n }\n }\n\n const renderResult = await instance.render(diagram, renderOptions)\n if (this.destroyed || token !== this.renderToken)\n return\n\n const safeSvg = toSafeSvgMarkup(extractRenderedSvg(renderResult))\n if (!safeSvg)\n throw new Error('D2 render returned empty output.')\n\n this.svgMarkup = safeSvg\n this.syncSvgHost()\n }\n catch (error) {\n if (this.destroyed || token !== this.renderToken)\n return\n this.svgMarkup = ''\n this.showSource = true\n this.error = error instanceof Error ? error.message : 'Failed to render D2 diagram.'\n this.syncSvgHost()\n }\n finally {\n if (token === this.renderToken) {\n this.rendering = false\n this.cdr.markForCheck()\n }\n }\n }\n\n private syncSvgHost() {\n setElementHtml(this.previewHost?.nativeElement, this.svgMarkup)\n }\n\n private scheduleHostSync() {\n if (typeof window !== 'undefined') {\n window.setTimeout(() => {\n if (this.destroyed)\n return\n this.syncSvgHost()\n this.cdr.markForCheck()\n }, 0)\n return\n }\n queueMicrotask(() => this.syncSvgHost())\n }\n}\n\nfunction createD2Instance(D2Ctor: any) {\n if (typeof D2Ctor === 'function') {\n const instance = new D2Ctor()\n if (instance && typeof instance.compile === 'function')\n return instance\n if (typeof D2Ctor.compile === 'function')\n return D2Ctor\n }\n\n if (D2Ctor?.D2 && typeof D2Ctor.D2 === 'function')\n return new D2Ctor.D2()\n\n if (typeof D2Ctor?.compile === 'function')\n return D2Ctor\n\n return null\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-definition-list-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <dl>\n <ng-container *ngFor=\"let item of items; let idx = index; trackBy: trackByIndex\">\n <dt>\n <markstream-angular-nested-renderer\n [nodes]=\"termFor(item)\"\n [context]=\"context\"\n [indexPrefix]=\"itemPrefix(idx, 'term')\"\n />\n </dt>\n <dd>\n <markstream-angular-nested-renderer\n [nodes]=\"definitionFor(item)\"\n [context]=\"context\"\n [indexPrefix]=\"itemPrefix(idx, 'definition')\"\n />\n </dd>\n </ng-container>\n </dl>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefinitionListNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get items() {\n return getNodeList((this.node as any)?.items)\n }\n\n termFor(item: AngularRenderableNode) {\n return getNodeList((item as any)?.term)\n }\n\n definitionFor(item: AngularRenderableNode) {\n return getNodeList((item as any)?.definition)\n }\n\n trackByIndex = (index: number) => {\n return `${this.indexKey || 'definition-list'}-${index}`\n }\n\n itemPrefix(index: number, part: string) {\n return `${this.indexKey || 'definition-list'}-${index}-${part}`\n }\n}\n","import type { ComponentRef, OnChanges, OnDestroy, SimpleChanges, Type } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core'\n\n@Component({\n selector: 'markstream-angular-dynamic-node-host',\n standalone: true,\n template: '<ng-template #container></ng-template>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DynamicNodeHostComponent implements OnChanges, OnDestroy {\n @Input() component?: Type<any> | null\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n @Input() inputs?: Record<string, unknown> | null\n\n @ViewChild('container', { read: ViewContainerRef, static: true })\n private containerRef?: ViewContainerRef\n\n private componentRef: ComponentRef<any> | null = null\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.containerRef)\n return\n\n if (changes.component)\n this.mountComponent()\n\n this.applyInputs()\n }\n\n ngOnDestroy() {\n this.componentRef?.destroy()\n this.componentRef = null\n }\n\n private mountComponent() {\n this.containerRef?.clear()\n this.componentRef?.destroy()\n this.componentRef = null\n\n if (!this.component || !this.containerRef)\n return\n\n this.componentRef = this.containerRef.createComponent(this.component)\n }\n\n private applyInputs() {\n const componentRef = this.componentRef\n const instance = componentRef?.instance\n if (!instance || !componentRef)\n return\n\n const setValue = (key: string, value: unknown) => {\n if (this.hasDeclaredInput(componentRef, key)) {\n try {\n componentRef.setInput(key, value)\n }\n catch {\n // Fall back to direct instance assignment for edge-case compiled components.\n }\n }\n\n instance[key] = value\n }\n\n setValue('node', this.node)\n setValue('nodes', Array.isArray((this.node as any)?.children) ? (this.node as any).children : undefined)\n setValue('content', typeof (this.node as any)?.content === 'string' ? (this.node as any).content : undefined)\n setValue('loading', (this.node as any)?.loading)\n setValue('final', typeof (this.node as any)?.loading === 'boolean' ? !(this.node as any).loading : this.context?.final)\n setValue('context', this.context)\n setValue('ctx', this.context)\n setValue('customId', this.context?.customId)\n setValue('customHtmlTags', this.context?.customHtmlTags)\n setValue('parseOptions', this.context?.parseOptions)\n setValue('customMarkdownIt', this.context?.customMarkdownIt)\n setValue('isDark', this.context?.isDark)\n setValue('indexKey', this.indexKey)\n setValue('typewriter', this.context?.typewriter)\n setValue('fade', this.context?.fade)\n setValue('showTooltips', this.context?.showTooltips)\n setValue('codeBlockStream', this.context?.codeBlockStream)\n setValue('renderCodeBlocksAsPre', this.context?.renderCodeBlocksAsPre)\n setValue('codeBlockProps', this.context?.codeBlockProps)\n setValue('mermaidProps', this.context?.mermaidProps)\n setValue('d2Props', this.context?.d2Props)\n setValue('infographicProps', this.context?.infographicProps)\n\n if (this.inputs) {\n for (const [key, value] of Object.entries(this.inputs))\n setValue(key, value)\n }\n\n componentRef.changeDetectorRef.detectChanges()\n }\n\n private hasDeclaredInput(componentRef: ComponentRef<any>, key: string) {\n const inputMap = (componentRef.componentType as any)?.ɵcmp?.inputs\n if (!inputMap || typeof inputMap !== 'object')\n return false\n\n if (key in inputMap)\n return true\n\n return Object.values(inputMap).includes(key)\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-emoji-node',\n standalone: true,\n template: '<span class=\"markstream-angular-emoji\">{{ text }}</span>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmojiNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get text() {\n return getString((this.node as any)?.raw || (this.node as any)?.markup || (this.node as any)?.content || (this.node as any)?.name)\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-emphasis-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <em>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </em>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmphasisNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'emphasis'}-em`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport {\n escapeHtml,\n getNodeList,\n getString,\n sanitizeClassToken,\n} from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-fallback-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <div\n class=\"markstream-nested-custom\"\n [class]=\"customClassName\"\n [attr.data-markstream-custom-tag]=\"customTag\"\n >\n <markstream-angular-nested-renderer\n *ngIf=\"hasNestedContent; else fallbackBody\"\n [node]=\"node\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n [final]=\"resolvedFinal\"\n [customHtmlTags]=\"context?.customHtmlTags\"\n [parseOptions]=\"context?.parseOptions\"\n [customMarkdownIt]=\"context?.customMarkdownIt\"\n />\n\n <ng-template #fallbackBody>\n <div [innerHTML]=\"rawBodyHtml\"></div>\n </ng-template>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FallbackComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get hasChildren() {\n return this.children.length > 0\n }\n\n get hasNestedContent() {\n return this.hasChildren || !!getString((this.node as any)?.content)\n }\n\n get customTag() {\n return getString((this.node as any)?.tag || (this.node as any)?.type)\n }\n\n get customClassName() {\n const tag = sanitizeClassToken(this.customTag) || 'node'\n return `markstream-nested-custom--${tag}`\n }\n\n get rawBodyHtml() {\n return escapeHtml(getString((this.node as any)?.raw))\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'fallback'}-children`\n }\n\n get resolvedFinal() {\n if (typeof (this.node as any)?.loading === 'boolean')\n return !(this.node as any).loading\n return this.context?.final\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-footnote-anchor-node',\n standalone: true,\n template: `\n <a\n class=\"footnote-anchor text-sm text-[#0366d6] hover:underline cursor-pointer\"\n [attr.href]=\"href\"\n [attr.title]=\"title\"\n >\n ↩︎\n </a>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FootnoteAnchorNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get id() {\n return getString((this.node as any)?.id)\n }\n\n get href() {\n return `#fnref-${this.id}`\n }\n\n get title() {\n return `Back to reference ${this.id}`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList, getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-footnote-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <div [attr.id]=\"footnoteId\" class=\"markstream-nested-footnote\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FootnoteNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get footnoteId() {\n return `fnref--${getString((this.node as any)?.id)}`\n }\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'footnote'}-children`\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-footnote-reference-node',\n standalone: true,\n template: `\n <sup [attr.id]=\"referenceId\" class=\"markstream-nested-footnote-ref\">\n <a [attr.href]=\"href\">[{{ id }}]</a>\n </sup>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FootnoteReferenceNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get id() {\n return getString((this.node as any)?.id)\n }\n\n get href() {\n return `#fnref--${this.id}`\n }\n\n get referenceId() {\n return `fnref-${this.id}`\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'markstream-angular-hardbreak-node',\n standalone: true,\n template: '<br>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HardBreakNodeComponent {}\n","import type { OnChanges } from '@angular/core'\nimport { Directive, ElementRef, inject, Input, Renderer2 } from '@angular/core'\nimport { isSafeAttrName } from './node-helpers'\n\n@Directive({\n selector: '[markstreamSafeAttrs]',\n standalone: true,\n})\nexport class SafeAttrsDirective implements OnChanges {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n private readonly renderer = inject(Renderer2)\n private readonly appliedAttrs = new Set<string>()\n private readonly appliedClasses = new Set<string>()\n private readonly appliedStyles = new Set<string>()\n\n @Input() markstreamSafeAttrs?: Record<string, unknown> | null\n\n ngOnChanges() {\n this.clearAppliedState()\n\n const attrs = this.markstreamSafeAttrs\n if (!attrs)\n return\n\n for (const [name, rawValue] of Object.entries(attrs)) {\n if (!isSafeAttrName(name))\n continue\n if (name === 'class' || name === 'className') {\n for (const token of String(rawValue || '').split(/\\s+/g).map(item => item.trim()).filter(Boolean)) {\n this.renderer.addClass(this.elementRef.nativeElement, token)\n this.appliedClasses.add(token)\n }\n continue\n }\n if (name === 'style' && rawValue && typeof rawValue === 'object') {\n for (const [styleName, styleValue] of Object.entries(rawValue as Record<string, unknown>)) {\n this.renderer.setStyle(this.elementRef.nativeElement, styleName, styleValue as any)\n this.appliedStyles.add(styleName)\n }\n continue\n }\n\n if (rawValue === false || rawValue == null)\n continue\n\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n name,\n rawValue === true ? '' : String(rawValue),\n )\n this.appliedAttrs.add(name)\n }\n }\n\n private clearAppliedState() {\n for (const name of this.appliedAttrs)\n this.renderer.removeAttribute(this.elementRef.nativeElement, name)\n for (const token of this.appliedClasses)\n this.renderer.removeClass(this.elementRef.nativeElement, token)\n for (const name of this.appliedStyles)\n this.renderer.removeStyle(this.elementRef.nativeElement, name)\n\n this.appliedAttrs.clear()\n this.appliedClasses.clear()\n this.appliedStyles.clear()\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { clampHeadingLevel, getNodeList } from '../shared/node-helpers'\nimport { SafeAttrsDirective } from '../shared/safe-attrs.directive'\n\n@Component({\n selector: 'markstream-angular-heading-node',\n standalone: true,\n imports: [CommonModule, SafeAttrsDirective, forwardRef(() => NestedRendererComponent)],\n template: `\n <h1 *ngIf=\"level === 1\" dir=\"auto\" class=\"heading-node heading-1\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h1>\n <h2 *ngIf=\"level === 2\" dir=\"auto\" class=\"heading-node heading-2\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h2>\n <h3 *ngIf=\"level === 3\" dir=\"auto\" class=\"heading-node heading-3\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h3>\n <h4 *ngIf=\"level === 4\" dir=\"auto\" class=\"heading-node heading-4\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h4>\n <h5 *ngIf=\"level === 5\" dir=\"auto\" class=\"heading-node heading-5\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h5>\n <h6 *ngIf=\"level === 6\" dir=\"auto\" class=\"heading-node heading-6\" [markstreamSafeAttrs]=\"attrs\">\n <markstream-angular-nested-renderer [nodes]=\"children\" [context]=\"context\" [indexPrefix]=\"nestedPrefix\" />\n </h6>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeadingNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get level() {\n return clampHeadingLevel((this.node as any)?.level)\n }\n\n get attrs() {\n const raw = (this.node as any)?.attrs\n return raw && typeof raw === 'object' ? raw : null\n }\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'heading'}-${this.level}`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-highlight-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <mark>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </mark>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HighlightNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'highlight'}-highlight`\n }\n}\n","import type { HtmlPolicy } from 'stream-markdown-parser'\nimport {\n BLOCKED_HTML_TAGS as BLOCKED_TAGS,\n isHtmlTagBlocked,\n isHtmlTagHardBlocked,\n sanitizeHtmlAttrs,\n VOID_HTML_TAGS as VOID_ELEMENTS,\n} from 'stream-markdown-parser'\nimport { escapeAttr, escapeHtml } from './components/shared/node-helpers'\n\ninterface HtmlToken {\n type: 'text' | 'tag_open' | 'tag_close' | 'self_closing'\n tagName?: string\n attrs?: Record<string, string>\n content?: string\n}\n\nfunction sanitizeAttrs(attrs: Record<string, string>, policy: HtmlPolicy, tagName?: string): Record<string, string> {\n return sanitizeHtmlAttrs(attrs, policy, tagName)\n}\n\nfunction tokenizeHtml(html: string): HtmlToken[] {\n const tokens: HtmlToken[] = []\n let pos = 0\n\n while (pos < html.length) {\n if (html.startsWith('<!--', pos)) {\n const commentEnd = html.indexOf('-->', pos)\n if (commentEnd !== -1) {\n pos = commentEnd + 3\n continue\n }\n break\n }\n\n const tagStart = html.indexOf('<', pos)\n if (tagStart === -1) {\n if (pos < html.length)\n tokens.push({ type: 'text', content: html.slice(pos) })\n break\n }\n\n if (tagStart > pos)\n tokens.push({ type: 'text', content: html.slice(pos, tagStart) })\n\n if (html.startsWith('![CDATA[', tagStart + 1)) {\n const cdataEnd = html.indexOf(']]>', tagStart)\n if (cdataEnd !== -1) {\n tokens.push({ type: 'text', content: html.slice(tagStart, cdataEnd + 3) })\n pos = cdataEnd + 3\n continue\n }\n break\n }\n\n if (html.startsWith('!', tagStart + 1)) {\n const specialEnd = html.indexOf('>', tagStart)\n if (specialEnd !== -1) {\n pos = specialEnd + 1\n continue\n }\n break\n }\n\n const tagEnd = html.indexOf('>', tagStart)\n if (tagEnd === -1)\n break\n\n const tagContent = html.slice(tagStart + 1, tagEnd).trim()\n if (!tagContent) {\n pos = tagEnd + 1\n continue\n }\n\n const isClosingTag = tagContent.startsWith('/')\n const isSelfClosing = tagContent.endsWith('/')\n\n if (isClosingTag) {\n const tagName = tagContent.slice(1).trim()\n tokens.push({ type: 'tag_close', tagName })\n pos = tagEnd + 1\n continue\n }\n\n const spaceIndex = tagContent.indexOf(' ')\n let tagName = ''\n let attrsStr = ''\n if (spaceIndex === -1) {\n tagName = isSelfClosing ? tagContent.slice(0, -1).trim() : tagContent.trim()\n }\n else {\n tagName = tagContent.slice(0, spaceIndex).trim()\n attrsStr = tagContent.slice(spaceIndex + 1)\n }\n\n const attrs: Record<string, string> = {}\n if (attrsStr) {\n const attrRegex = /([^\\s=]+)(?:=(?:\"([^\"]*)\"|'([^']*)'|(\\S*)))?/g\n let attrMatch: RegExpExecArray | null\n while ((attrMatch = attrRegex.exec(attrsStr)) !== null) {\n const name = attrMatch[1]\n const value = attrMatch[2] ?? attrMatch[3] ?? attrMatch[4] ?? ''\n if (name && !name.endsWith('/'))\n attrs[name] = value\n }\n }\n\n tokens.push({\n type: isSelfClosing || VOID_ELEMENTS.has(tagName.toLowerCase()) ? 'self_closing' : 'tag_open',\n tagName,\n attrs,\n })\n\n pos = tagEnd + 1\n }\n\n return tokens\n}\n\nfunction normalizeTagName(tagName: string | undefined): string {\n return String(tagName ?? '').trim().toLowerCase()\n}\n\nfunction serializeAttrs(attrs: Record<string, string>): string {\n const pairs = Object.entries(attrs)\n if (pairs.length === 0)\n return ''\n\n return pairs\n .map(([name, value]) => value === '' ? ` ${name}` : ` ${name}=\"${escapeAttr(value)}\"`)\n .join('')\n}\n\nfunction serializeLiteralHtmlTag(token: HtmlToken) {\n const tagName = String(token.tagName ?? '').trim()\n if (!tagName)\n return ''\n\n if (token.type === 'tag_close')\n return `&lt;/${escapeHtml(tagName)}&gt;`\n\n const attrs = Object.entries(token.attrs ?? {})\n .map(([name, value]) => value === '' ? ` ${escapeHtml(name)}` : ` ${escapeHtml(name)}=\"${escapeAttr(value)}\"`)\n .join('')\n\n return token.type === 'self_closing'\n ? `&lt;${escapeHtml(tagName)}${attrs} /&gt;`\n : `&lt;${escapeHtml(tagName)}${attrs}&gt;`\n}\n\nexport function sanitizeHtmlContent(content: string, policy: HtmlPolicy = 'safe'): string {\n if (!content)\n return ''\n\n if (policy === 'escape')\n return escapeHtml(content)\n\n const tokens = tokenizeHtml(content)\n const stack: string[] = []\n const output: string[] = []\n let blockedDepth = 0\n\n for (const token of tokens) {\n if (token.type === 'text') {\n if (blockedDepth === 0)\n output.push(escapeHtml(token.content ?? ''))\n continue\n }\n\n const tagName = normalizeTagName(token.tagName)\n if (!tagName)\n continue\n\n if (BLOCKED_TAGS.has(tagName) || isHtmlTagHardBlocked(tagName, policy)) {\n if (token.type === 'tag_open')\n blockedDepth += 1\n else if (token.type === 'tag_close' && blockedDepth > 0)\n blockedDepth -= 1\n continue\n }\n\n if (blockedDepth > 0)\n continue\n\n if (policy === 'safe' && isHtmlTagBlocked(tagName, policy)) {\n output.push(serializeLiteralHtmlTag(token))\n continue\n }\n\n if (token.type === 'self_closing') {\n output.push(`<${tagName}${serializeAttrs(sanitizeAttrs(token.attrs ?? {}, policy, tagName))}>`)\n continue\n }\n\n if (token.type === 'tag_open') {\n output.push(`<${tagName}${serializeAttrs(sanitizeAttrs(token.attrs ?? {}, policy, tagName))}>`)\n if (!VOID_ELEMENTS.has(tagName))\n stack.push(tagName)\n continue\n }\n\n const matchedIndex = stack.lastIndexOf(tagName)\n if (matchedIndex === -1)\n continue\n\n while (stack.length > matchedIndex + 1) {\n const danglingTag = stack.pop()\n if (danglingTag)\n output.push(`</${danglingTag}>`)\n }\n\n const closingTag = stack.pop()\n if (closingTag)\n output.push(`</${closingTag}>`)\n }\n\n while (stack.length > 0) {\n const danglingTag = stack.pop()\n if (danglingTag)\n output.push(`</${danglingTag}>`)\n }\n\n return output.join('')\n}\n","import type { BaseNode, CustomComponentAttrs, HtmlPolicy, ParsedNode, ParseOptions } from 'stream-markdown-parser'\nimport {\n getMarkdown,\n isHtmlTagBlocked,\n isUnsafeHtmlUrl,\n NON_STRUCTURING_HTML_TAGS,\n normalizeCustomHtmlTagName,\n normalizeCustomHtmlTags,\n parseMarkdownToStructure,\n sanitizeHtmlAttrs,\n sanitizeImageSrc,\n shouldOpenLinkInNewTab,\n} from 'stream-markdown-parser'\nimport { hydrateCustomTagContent } from './hydrateCustomTagContent'\nimport { sanitizeHtmlContent } from './sanitizeHtmlContent'\n\nexport type RenderableMarkdownNode = (ParsedNode | BaseNode) & Record<string, unknown>\n\ntype NestedClassValue = string | readonly string[] | null | undefined\n\nexport interface MarkstreamAngularRenderOptions {\n content?: string | null\n nodes?: readonly RenderableMarkdownNode[] | null\n final?: boolean\n parseOptions?: ParseOptions\n customHtmlTags?: readonly string[]\n allowHtml?: boolean\n htmlPolicy?: HtmlPolicy\n}\n\nexport interface NestedMarkdownHtmlOptions {\n cacheKey?: string\n customHtmlTags?: readonly string[]\n allowHtml?: boolean\n htmlPolicy?: HtmlPolicy\n customNodeTag?: string\n customNodeClass?: NestedClassValue | ((node: RenderableMarkdownNode) => NestedClassValue)\n}\n\nexport interface NestedMarkdownHtmlInput {\n node?: RenderableMarkdownNode | null\n nodes?: readonly RenderableMarkdownNode[] | null\n content?: string | null\n}\n\ninterface RenderContext {\n markdown: ReturnType<typeof getMarkdown>\n options: Required<Pick<NestedMarkdownHtmlOptions, 'allowHtml' | 'customNodeTag' | 'htmlPolicy'>> & Pick<NestedMarkdownHtmlOptions, 'customNodeClass'>\n}\n\nconst DEFAULT_CACHE_KEY = 'markstream-angular-html'\nconst DEFAULT_CUSTOM_NODE_TAG = 'div'\nconst markdownCache = new Map<string, ReturnType<typeof getMarkdown>>()\nconst KNOWN_NODE_TYPES = new Set([\n 'admonition',\n 'blockquote',\n 'checkbox',\n 'checkbox_input',\n 'code_block',\n 'definition_item',\n 'definition_list',\n 'emoji',\n 'emphasis',\n 'footnote',\n 'footnote_reference',\n 'hardbreak',\n 'heading',\n 'highlight',\n 'html_block',\n 'html_inline',\n 'image',\n 'inline_code',\n 'insert',\n 'link',\n 'list',\n 'list_item',\n 'math_block',\n 'math_inline',\n 'paragraph',\n 'reference',\n 'strikethrough',\n 'strong',\n 'subscript',\n 'superscript',\n 'table',\n 'table_cell',\n 'table_row',\n 'text',\n 'thematic_break',\n])\n\nexport function renderMarkdownToHtml(input: MarkstreamAngularRenderOptions): string {\n const normalizedTags = normalizeCustomHtmlTags([\n ...(input.customHtmlTags || []),\n ...(input.parseOptions?.customHtmlTags || []),\n ])\n const ctx = createRenderContext({\n allowHtml: input.allowHtml,\n customHtmlTags: normalizedTags,\n htmlPolicy: input.htmlPolicy,\n })\n const nodes = resolveParsedNodes(input, ctx)\n return renderNodesToHtml(nodes, ctx)\n}\n\nexport function renderNestedMarkdownToHtml(\n input: NestedMarkdownHtmlInput,\n options: NestedMarkdownHtmlOptions = {},\n): string {\n const ctx = createRenderContext(options)\n return renderNestedInputToHtml(input, ctx)\n}\n\nexport function renderMarkdownNodesToHtml(\n nodes: readonly RenderableMarkdownNode[] | null | undefined,\n options: NestedMarkdownHtmlOptions = {},\n): string {\n const ctx = createRenderContext(options)\n return renderNodesToHtml(nodes, ctx)\n}\n\nexport function renderMarkdownNodeToHtml(\n node: RenderableMarkdownNode | null | undefined,\n options: NestedMarkdownHtmlOptions = {},\n): string {\n const ctx = createRenderContext(options)\n return renderNodeToHtml(node, ctx)\n}\n\nfunction resolveParsedNodes(input: MarkstreamAngularRenderOptions, ctx: RenderContext) {\n if (Array.isArray(input.nodes))\n return input.nodes\n\n const content = getString(input.content)\n if (!content)\n return []\n\n const normalizedTags = normalizeCustomHtmlTags([\n ...(input.customHtmlTags || []),\n ...(input.parseOptions?.customHtmlTags || []),\n ])\n const mergedParseOptions: ParseOptions = {\n ...(input.parseOptions ?? {}),\n }\n if (typeof input.final === 'boolean')\n mergedParseOptions.final = input.final\n if (normalizedTags.length > 0)\n mergedParseOptions.customHtmlTags = normalizedTags\n\n return hydrateCustomTagContent(\n parseMarkdownToStructure(content, ctx.markdown, mergedParseOptions) as RenderableMarkdownNode[],\n content,\n normalizedTags,\n )\n}\n\nfunction createRenderContext(options: NestedMarkdownHtmlOptions): RenderContext {\n const normalizedTags = normalizeCustomHtmlTags(options.customHtmlTags)\n const cacheKey = `${options.cacheKey || DEFAULT_CACHE_KEY}::${normalizedTags.join(',')}`\n let markdown = markdownCache.get(cacheKey)\n\n if (!markdown) {\n markdown = getMarkdown(cacheKey, {\n customHtmlTags: normalizedTags,\n })\n markdownCache.set(cacheKey, markdown)\n }\n\n return {\n markdown,\n options: {\n allowHtml: options.allowHtml !== false,\n htmlPolicy: options.htmlPolicy ?? 'safe',\n customNodeTag: normalizeCustomHtmlTagName(options.customNodeTag) || DEFAULT_CUSTOM_NODE_TAG,\n customNodeClass: options.customNodeClass,\n },\n }\n}\n\nfunction renderNestedInputToHtml(input: NestedMarkdownHtmlInput, ctx: RenderContext): string {\n if (Array.isArray(input.nodes) && input.nodes.length > 0)\n return renderNodesToHtml(input.nodes, ctx)\n\n const node = input.node\n if (node) {\n const children = getNodeList(node.children)\n if (children.length > 0)\n return renderNodesToHtml(children, ctx)\n\n const content = getString(node.content)\n if (content)\n return renderMarkdownFragment(content, ctx)\n\n if (node.raw != null)\n return escapeHtml(getString(node.raw))\n }\n\n return input.content ? renderMarkdownFragment(getString(input.content), ctx) : ''\n}\n\nfunction renderNodesToHtml(nodes: readonly RenderableMarkdownNode[] | null | undefined, ctx: RenderContext): string {\n return (Array.isArray(nodes) ? nodes : []).map(node => renderNodeToHtml(node, ctx)).join('')\n}\n\nfunction renderNodeToHtml(node: RenderableMarkdownNode | null | undefined, ctx: RenderContext): string {\n if (!node || typeof node !== 'object')\n return ''\n\n switch (node.type) {\n case 'text':\n return renderTextNode(node)\n case 'paragraph':\n return `<p>${renderNodesToHtml(getNodeList(node.children), ctx)}</p>`\n case 'strong':\n return `<strong>${renderNodesToHtml(getNodeList(node.children), ctx)}</strong>`\n case 'emphasis':\n return `<em>${renderNodesToHtml(getNodeList(node.children), ctx)}</em>`\n case 'strikethrough':\n return `<del>${renderNodesToHtml(getNodeList(node.children), ctx)}</del>`\n case 'highlight':\n return `<mark>${renderNodesToHtml(getNodeList(node.children), ctx)}</mark>`\n case 'insert':\n return `<ins>${renderNodesToHtml(getNodeList(node.children), ctx)}</ins>`\n case 'subscript':\n return `<sub>${renderNodesToHtml(getNodeList(node.children), ctx)}</sub>`\n case 'superscript':\n return `<sup>${renderNodesToHtml(getNodeList(node.children), ctx)}</sup>`\n case 'inline_code':\n return `<code>${escapeHtml(getString(node.code))}</code>`\n case 'hardbreak':\n return '<br>'\n case 'link':\n return renderLinkNode(node, ctx)\n case 'image':\n return renderImageNode(node)\n case 'list':\n return renderListNode(node, ctx)\n case 'list_item':\n return `<li>${renderNodesToHtml(getNodeList(node.children), ctx)}</li>`\n case 'blockquote':\n return `<blockquote>${renderNodesToHtml(getNodeList(node.children), ctx)}</blockquote>`\n case 'heading':\n return renderHeadingNode(node, ctx)\n case 'code_block':\n return renderCodeBlockNode(node)\n case 'thematic_break':\n return '<hr>'\n case 'table':\n return renderTableNode(node, ctx)\n case 'table_row':\n return renderTableRowNode(node, ctx)\n case 'table_cell':\n return renderTableCellNode(node, ctx)\n case 'definition_list':\n return renderDefinitionListNode(node, ctx)\n case 'definition_item':\n return renderDefinitionItemNode(node, ctx)\n case 'footnote':\n return renderFootnoteNode(node, ctx)\n case 'footnote_reference':\n return renderFootnoteReferenceNode(node)\n case 'admonition':\n return renderAdmonitionNode(node, ctx)\n case 'checkbox':\n case 'checkbox_input':\n return `<input type=\"checkbox\" disabled${node.checked ? ' checked' : ''}>`\n case 'emoji':\n return escapeHtml(getString(node.raw || node.markup || node.content || node.name))\n case 'math_inline':\n return renderMathInlineNode(node)\n case 'math_block':\n return renderMathBlockNode(node)\n case 'reference':\n return `<span class=\"markstream-nested-reference\">${escapeHtml(getString(node.id))}</span>`\n case 'html_inline':\n case 'html_block':\n return renderHtmlNode(node, ctx)\n default:\n return renderCustomOrFallbackNode(node, ctx)\n }\n}\n\nfunction renderTextNode(node: RenderableMarkdownNode): string {\n const content = getString(node.content)\n const escaped = escapeHtml(content)\n const centered = !!node.center\n if (!centered && !content.includes('\\n'))\n return escaped\n\n const className = centered\n ? 'markstream-angular-text-node markstream-angular-text--centered'\n : 'markstream-angular-text-node'\n return `<span class=\"${className}\">${escaped}</span>`\n}\n\nfunction renderLinkNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const href = getString(node.href)\n const title = getString(node.title)\n const content = getNodeList(node.children).length > 0\n ? renderNodesToHtml(getNodeList(node.children), ctx)\n : escapeHtml(getString(node.text || href))\n const titleAttr = title ? ` title=\"${escapeAttr(title)}\"` : ''\n const safeHref = href && !isUnsafeHtmlUrl(href) ? href : ''\n const hrefAttr = safeHref ? ` href=\"${escapeAttr(safeHref)}\"` : ''\n const externalAttrs = shouldOpenLinkInNewTab(safeHref) ? ' target=\"_blank\" rel=\"noreferrer noopener\"' : ''\n return `<a${hrefAttr}${titleAttr}${externalAttrs}>${content}</a>`\n}\n\nfunction renderMathInlineNode(node: RenderableMarkdownNode) {\n const source = escapeHtml(getString(node.content || node.markup || node.raw))\n return `<span class=\"markstream-nested-math\" data-display=\"inline\"><span class=\"markstream-nested-math__source\">${source}</span><span class=\"markstream-nested-math__render\" aria-hidden=\"true\"></span></span>`\n}\n\nfunction renderMathBlockNode(node: RenderableMarkdownNode) {\n const source = escapeHtml(getString(node.content || node.markup || node.raw))\n return `<div class=\"markstream-nested-math-block\"><pre class=\"markstream-nested-math-block__source\"><code>${source}</code></pre><div class=\"markstream-nested-math-block__render\" aria-hidden=\"true\"></div></div>`\n}\n\nfunction renderImageNode(node: RenderableMarkdownNode): string {\n const src = sanitizeImageSrc(node.src)\n if (!src)\n return ''\n const alt = getString(node.alt)\n const title = getString(node.title)\n const titleAttr = title ? ` title=\"${escapeAttr(title)}\"` : ''\n return `<img src=\"${escapeAttr(src)}\" alt=\"${escapeAttr(alt)}\"${titleAttr}>`\n}\n\nfunction renderListNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const tag = node.ordered ? 'ol' : 'ul'\n const start = node.ordered && Number.isFinite(node.start) ? ` start=\"${Number(node.start)}\"` : ''\n return `<${tag}${start}>${renderNodesToHtml(getNodeList(node.items), ctx)}</${tag}>`\n}\n\nfunction renderHeadingNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const level = clampHeadingLevel(node.level)\n return `<h${level}>${renderNodesToHtml(getNodeList(node.children), ctx)}</h${level}>`\n}\n\nfunction renderCodeBlockNode(node: RenderableMarkdownNode): string {\n const rawLanguage = getString(node.language).trim()\n const language = sanitizeClassToken(rawLanguage)\n const languageClass = language ? ` class=\"language-${language}\"` : ''\n const diff = !!node.diff\n const blockAttrs = [\n 'data-markstream-code-block=\"1\"',\n rawLanguage ? `data-markstream-language=\"${escapeAttr(rawLanguage)}\"` : '',\n diff ? 'data-markstream-diff=\"1\"' : '',\n diff ? `data-markstream-original=\"${escapeAttr(encodeDataPayload(getString(node.originalCode)))}\"` : '',\n diff ? `data-markstream-updated=\"${escapeAttr(encodeDataPayload(getString(node.updatedCode)))}\"` : '',\n ].filter(Boolean).join(' ')\n\n return `<pre ${blockAttrs}><code${languageClass}>${escapeHtml(getString(node.code))}</code></pre>`\n}\n\nfunction renderTableNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const header = node.header ? renderTableRowNode(node.header as RenderableMarkdownNode, ctx, true) : ''\n const rows = renderNodesToHtml(getNodeList(node.rows), ctx)\n const thead = header ? `<thead>${header}</thead>` : ''\n const tbody = rows ? `<tbody>${rows}</tbody>` : ''\n return `<table>${thead}${tbody}</table>`\n}\n\nfunction renderTableRowNode(node: RenderableMarkdownNode, ctx: RenderContext, forceHeader = false): string {\n const cells = getNodeList(node.cells).map(cell => renderTableCellNode(cell, ctx, forceHeader)).join('')\n return `<tr>${cells}</tr>`\n}\n\nfunction renderTableCellNode(node: RenderableMarkdownNode, ctx: RenderContext, forceHeader = false): string {\n const tag = forceHeader || !!node.header ? 'th' : 'td'\n const align = getString(node.align)\n const alignAttr = align ? ` style=\"text-align:${escapeAttr(align)}\"` : ''\n return `<${tag}${alignAttr}>${renderNodesToHtml(getNodeList(node.children), ctx)}</${tag}>`\n}\n\nfunction renderDefinitionListNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n return `<dl>${getNodeList(node.items).map(item => renderDefinitionItemNode(item, ctx)).join('')}</dl>`\n}\n\nfunction renderDefinitionItemNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const term = renderNodesToHtml(getNodeList(node.term), ctx)\n const definition = renderNodesToHtml(getNodeList(node.definition), ctx)\n return `<dt>${term}</dt><dd>${definition}</dd>`\n}\n\nfunction renderFootnoteNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const id = escapeAttr(getString(node.id))\n return `<div id=\"fnref--${id}\" class=\"markstream-nested-footnote\">${renderNodesToHtml(getNodeList(node.children), ctx)}</div>`\n}\n\nfunction renderFootnoteReferenceNode(node: RenderableMarkdownNode): string {\n const id = escapeHtml(getString(node.id))\n const href = escapeAttr(getString(node.id))\n return `<sup class=\"markstream-nested-footnote-ref\"><a href=\"#fnref--${href}\">[${id}]</a></sup>`\n}\n\nfunction renderAdmonitionNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const kind = sanitizeClassToken(getString(node.kind || 'note')) || 'note'\n const title = getString(node.title) || capitalize(kind)\n return `<div class=\"markstream-nested-admonition markstream-nested-admonition--${kind}\"><div class=\"markstream-nested-admonition__title\">${escapeHtml(title)}</div><div class=\"markstream-nested-admonition__content\">${renderNodesToHtml(getNodeList(node.children), ctx)}</div></div>`\n}\n\nfunction renderHtmlNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const content = getString(node.content)\n const rawContent = content || getString(node.raw)\n const tag = getString(node.tag).trim().toLowerCase()\n const children = getNodeList(node.children)\n if (!ctx.options.allowHtml)\n return escapeHtml(rawContent)\n if (ctx.options.htmlPolicy === 'escape')\n return escapeHtml(rawContent)\n if (node.loading && !node.autoClosed)\n return escapeHtml(rawContent)\n if (tag && children.length > 0 && !NON_STRUCTURING_HTML_TAGS.has(tag) && !isHtmlTagBlocked(tag, ctx.options.htmlPolicy)) {\n const attrs = serializeAttrs(node.attrs as CustomComponentAttrs | undefined, '', ctx.options.htmlPolicy, tag)\n return `<${tag}${attrs}>${renderNodesToHtml(children, ctx)}</${tag}>`\n }\n return sanitizeHtmlContent(rawContent, ctx.options.htmlPolicy)\n}\n\nfunction renderCustomOrFallbackNode(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const tagName = getString(node.tag || node.type)\n if (!tagName || KNOWN_NODE_TYPES.has(tagName))\n return escapeHtml(getString(node.content || node.raw))\n\n const classes = [\n 'markstream-nested-custom',\n `markstream-nested-custom--${sanitizeClassToken(tagName) || 'node'}`,\n resolveCustomNodeClass(node, ctx.options.customNodeClass),\n ].filter(Boolean).join(' ')\n const attrs = serializeAttrs(node.attrs as CustomComponentAttrs | undefined, classes, ctx.options.htmlPolicy)\n const body = resolveCustomNodeBody(node, ctx)\n const wrapperTag = ctx.options.customNodeTag\n return `<${wrapperTag}${attrs} data-markstream-custom-tag=\"${escapeAttr(tagName)}\">${body}</${wrapperTag}>`\n}\n\nfunction resolveCustomNodeBody(node: RenderableMarkdownNode, ctx: RenderContext): string {\n const children = getNodeList(node.children)\n if (children.length > 0)\n return renderNodesToHtml(children, ctx)\n\n const content = getString(node.content)\n if (content)\n return renderMarkdownFragment(content, ctx)\n\n return escapeHtml(getString(node.raw))\n}\n\nfunction renderMarkdownFragment(content: string, ctx: RenderContext): string {\n return content ? ctx.markdown.render(content) : ''\n}\n\nfunction resolveCustomNodeClass(\n node: RenderableMarkdownNode,\n customNodeClass?: NestedMarkdownHtmlOptions['customNodeClass'],\n): string {\n if (!customNodeClass)\n return ''\n const resolved = typeof customNodeClass === 'function'\n ? customNodeClass(node)\n : customNodeClass\n return serializeClassValue(resolved)\n}\n\nfunction serializeClassValue(value: NestedClassValue): string {\n if (Array.isArray(value))\n return value.map(item => serializeClassValue(item)).filter(Boolean).join(' ')\n return typeof value === 'string'\n ? value.trim()\n : ''\n}\n\nfunction serializeAttrs(\n attrs?: CustomComponentAttrs | null,\n extraClass = '',\n policy: HtmlPolicy = 'safe',\n tagName?: string,\n): string {\n const pairs = normalizeAttrs(attrs)\n const record: Record<string, string> = {}\n const mergedClasses = [extraClass]\n\n for (const [name, value] of pairs) {\n const safeName = String(name).trim()\n if (!safeName)\n continue\n if (safeName.toLowerCase() === 'class') {\n mergedClasses.push(String(value))\n continue\n }\n record[safeName] = value === true ? '' : String(value)\n }\n\n const rendered = Object.entries(sanitizeHtmlAttrs(record, policy, tagName))\n .map(([name, value]) => value === '' ? ` ${name}` : ` ${name}=\"${escapeAttr(String(value))}\"`)\n\n const className = mergedClasses.map(value => value.trim()).filter(Boolean).join(' ')\n if (className)\n rendered.unshift(` class=\"${escapeAttr(className)}\"`)\n return rendered.join('')\n}\n\nfunction normalizeAttrs(attrs?: CustomComponentAttrs | null): Array<[string, string | boolean]> {\n if (!attrs)\n return []\n\n if (Array.isArray(attrs)) {\n if (attrs.length === 0)\n return []\n const first = attrs[0]\n if (Array.isArray(first))\n return (attrs as [string, string][]).map(([name, value]) => [String(name), value])\n return (attrs as Array<{ name: string, value: string | boolean }>).map(item => [String(item.name), item.value])\n }\n\n return Object.entries(attrs).map(([name, value]) => [name, value])\n}\n\nfunction getNodeList(value: unknown): RenderableMarkdownNode[] {\n return Array.isArray(value)\n ? value.filter((item): item is RenderableMarkdownNode => !!item && typeof item === 'object')\n : []\n}\n\nfunction getString(value: unknown): string {\n return typeof value === 'string'\n ? value\n : value == null\n ? ''\n : String(value)\n}\n\nfunction sanitizeClassToken(value: string): string {\n return value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '')\n}\n\nfunction clampHeadingLevel(value: unknown): number {\n const level = Math.trunc(Number(value) || 1)\n return Math.min(6, Math.max(1, level))\n}\n\nfunction escapeHtml(value: unknown): string {\n return getString(value)\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;')\n}\n\nfunction escapeAttr(value: unknown): string {\n return escapeHtml(value).replace(/`/g, '&#96;')\n}\n\nfunction capitalize(value: string): string {\n return value ? `${value[0].toUpperCase()}${value.slice(1)}` : ''\n}\n\nfunction encodeDataPayload(value: string) {\n if (!value)\n return ''\n\n const globalBuffer = (globalThis as any)?.require?.('buffer')?.Buffer\n if (globalBuffer?.from)\n return globalBuffer.from(value, 'utf8').toString('base64')\n\n if (typeof TextEncoder !== 'undefined' && typeof globalThis.btoa === 'function') {\n const bytes = new TextEncoder().encode(value)\n let binary = ''\n for (const byte of bytes)\n binary += String.fromCharCode(byte)\n return globalThis.btoa(binary)\n }\n\n return ''\n}\n","import type { ElementRef } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core'\nimport { isHtmlTagBlocked, NON_STRUCTURING_HTML_TAGS } from 'stream-markdown-parser'\nimport { renderMarkdownNodeToHtml } from '../../renderMarkdownHtml'\nimport { sanitizeHtmlContent } from '../../sanitizeHtmlContent'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-html-block-node',\n standalone: true,\n template: '<div #containerRef class=\"html-block-node\"></div>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HtmlBlockNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @ViewChild('containerRef', { static: true }) private readonly containerRef?: ElementRef<HTMLElement>\n\n ngAfterViewInit() {\n this.commitContent()\n }\n\n ngOnChanges() {\n this.commitContent()\n }\n\n ngOnDestroy() {\n const container = this.containerRef?.nativeElement\n if (container)\n container.innerHTML = ''\n }\n\n private commitContent() {\n const container = this.containerRef?.nativeElement\n if (!container)\n return\n\n const content = getString((this.node as any)?.content)\n const tag = getString((this.node as any)?.tag).trim().toLowerCase()\n const children = Array.isArray((this.node as any)?.children) ? (this.node as any).children : []\n if (!content) {\n container.innerHTML = ''\n return\n }\n\n if (this.context?.allowHtml === false || ((this.node as any)?.loading && !(this.node as any)?.autoClosed)) {\n container.textContent = content\n return\n }\n\n const htmlPolicy = this.context?.htmlPolicy ?? 'safe'\n if (htmlPolicy === 'escape') {\n container.textContent = content\n return\n }\n\n if (tag && children.length > 0 && !NON_STRUCTURING_HTML_TAGS.has(tag) && !isHtmlTagBlocked(tag, htmlPolicy)) {\n container.innerHTML = renderMarkdownNodeToHtml(this.node, {\n allowHtml: this.context?.allowHtml,\n customHtmlTags: this.context?.customHtmlTags,\n htmlPolicy,\n })\n return\n }\n\n container.innerHTML = sanitizeHtmlContent(content, htmlPolicy)\n }\n}\n","import type { ElementRef } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core'\nimport { sanitizeHtmlContent } from '../../sanitizeHtmlContent'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-html-inline-node',\n standalone: true,\n template: '<span #containerRef class=\"html-inline-node\"></span>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HtmlInlineNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @ViewChild('containerRef', { static: true }) private readonly containerRef?: ElementRef<HTMLElement>\n\n ngAfterViewInit() {\n this.commitContent()\n }\n\n ngOnChanges() {\n this.commitContent()\n }\n\n ngOnDestroy() {\n const container = this.containerRef?.nativeElement\n if (container)\n container.innerHTML = ''\n }\n\n private commitContent() {\n const container = this.containerRef?.nativeElement\n if (!container)\n return\n\n const content = getString((this.node as any)?.content)\n if (!content) {\n container.innerHTML = ''\n return\n }\n\n const htmlPolicy = this.context?.htmlPolicy ?? 'safe'\n if (this.context?.allowHtml === false || htmlPolicy === 'escape' || ((this.node as any)?.loading && !(this.node as any)?.autoClosed)) {\n container.textContent = content\n return\n }\n\n container.innerHTML = sanitizeHtmlContent(content, htmlPolicy)\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { sanitizeImageSrc } from 'stream-markdown-parser'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-image-node',\n standalone: true,\n template: `\n @if (src) {\n <img\n class=\"image-node__img\"\n [attr.src]=\"src\"\n [attr.alt]=\"alt\"\n [attr.title]=\"title || null\"\n [attr.loading]=\"'lazy'\"\n decoding=\"async\"\n >\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get src() {\n return sanitizeImageSrc((this.node as any)?.src)\n }\n\n get alt() {\n return getString((this.node as any)?.alt)\n }\n\n get title() {\n return getString((this.node as any)?.title)\n }\n}\n","let infographicPromise: Promise<InfographicConstructor | null> | null = null\nlet infographicInstance: any = null\n\nexport interface InfographicInstance {\n render: (source: string) => unknown\n destroy?: () => unknown\n on?: (event: string, handler: (payload: unknown) => void) => unknown\n}\n\nexport interface InfographicConstructor {\n new (options: { container: HTMLElement, width?: string | number, height?: string | number }): InfographicInstance\n}\n\nexport async function getInfographic(): Promise<InfographicConstructor | null> {\n if (infographicInstance)\n return infographicInstance\n if (infographicPromise)\n return await infographicPromise\n\n infographicPromise = import('@antv/infographic')\n .then((mod) => {\n const defaultExport = (mod && (mod as any).default) ? (mod as any).default : mod\n\n let resolved = defaultExport\n\n if (typeof defaultExport === 'function' && defaultExport.prototype && defaultExport.prototype.render) {\n resolved = defaultExport\n }\n else if ((mod as any)?.Infographic) {\n resolved = (mod as any).Infographic\n }\n else if (defaultExport && defaultExport.Infographic) {\n resolved = defaultExport.Infographic\n }\n\n infographicInstance = resolved\n return resolved as InfographicConstructor\n })\n .catch((error) => {\n console.warn('[markstream-angular] Failed to load @antv/infographic', error)\n return null\n })\n\n return await infographicPromise\n}\n","export const MERMAID_PREVIEW_MIN_HEIGHT = 360\nexport const MERMAID_PREVIEW_MAX_HEIGHT = 500\nexport const INFOGRAPHIC_PREVIEW_MIN_HEIGHT = 360\nexport const INFOGRAPHIC_PREVIEW_MAX_HEIGHT = 500\n\nexport function parsePositiveNumber(value: unknown) {\n const numeric = typeof value === 'number' ? value : Number.parseFloat(String(value ?? ''))\n return Number.isFinite(numeric) && numeric > 0 ? numeric : null\n}\n\nexport function getMermaidDiagramKind(code: string) {\n for (const rawLine of code.split(/\\r?\\n/)) {\n const line = rawLine.trim()\n if (!line || line.startsWith('%%'))\n continue\n const match = line.match(/^([A-Z][\\w-]*)\\b/i)\n return match?.[1]?.toLowerCase() || ''\n }\n return ''\n}\n\nexport function estimateMermaidPreviewHeight(code: string) {\n const meaningfulLines = code\n .split(/\\r?\\n/)\n .map(line => line.trim())\n .filter(line => line && !line.startsWith('%%'))\n const lineCount = Math.max(1, meaningfulLines.length)\n const kind = getMermaidDiagramKind(code)\n\n if (kind === 'gantt')\n return 220 + lineCount * 28\n if (kind === 'sequencediagram')\n return 180 + lineCount * 26\n if (kind === 'classdiagram' || kind === 'statediagram' || kind === 'erdiagram')\n return 180 + lineCount * 24\n if (kind === 'flowchart' || kind === 'graph')\n return 170 + lineCount * 28\n return 200 + lineCount * 22\n}\n\nexport function estimateInfographicPreviewHeight(code: string) {\n const itemCount = code\n .split(/\\r?\\n/)\n .filter(line => /^\\s*-\\s+/.test(line))\n .length\n\n if (itemCount >= 3)\n return INFOGRAPHIC_PREVIEW_MAX_HEIGHT\n if (itemCount > 0)\n return 280 + itemCount * 60\n\n return INFOGRAPHIC_PREVIEW_MIN_HEIGHT\n}\n\nexport function clampPreviewHeight(\n height: number,\n minHeight = MERMAID_PREVIEW_MIN_HEIGHT,\n maxHeight: number | null = MERMAID_PREVIEW_MAX_HEIGHT,\n) {\n return maxHeight == null\n ? Math.max(minHeight, height)\n : Math.min(Math.max(minHeight, height), maxHeight)\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { getInfographic } from '../../optional/infographic'\nimport { clampPreviewHeight, estimateInfographicPreviewHeight, parsePositiveNumber } from '../shared/diagram-height'\nimport { getString } from '../shared/node-helpers'\nimport {\n clampNumber,\n clearElement,\n copyTextToClipboard,\n downloadSvgMarkup,\n resolveCssSize,\n setElementHtml,\n} from '../shared/rich-block-helpers'\n\n@Component({\n selector: 'markstream-angular-infographic-block-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n class=\"markstream-angular-enhanced-block markstream-angular-enhanced-block--infographic\"\n [attr.data-markstream-infographic]=\"'1'\"\n [attr.data-mode]=\"showSource ? 'source' : 'preview'\"\n >\n <div *ngIf=\"resolvedShowHeader\" class=\"markstream-angular-enhanced-block__header\">\n <div class=\"flex items-center gap-2 min-w-0\">\n <span class=\"markstream-angular-enhanced-block__badge\">Infographic</span>\n <span class=\"mermaid-title__text truncate\">Diagram</span>\n </div>\n\n <div class=\"markstream-angular-enhanced-block__actions\">\n <button\n *ngIf=\"resolvedShowModeToggle\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action mode-btn\"\n [class.is-active]=\"!showSource\"\n (click)=\"setMode(false)\"\n >\n Preview\n </button>\n <button\n *ngIf=\"resolvedShowModeToggle\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action mode-btn\"\n [class.is-active]=\"showSource\"\n (click)=\"setMode(true)\"\n >\n Source\n </button>\n <button\n *ngIf=\"resolvedShowCopyButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action\"\n [attr.title]=\"tooltipFor(copied ? 'Copied' : 'Copy')\"\n (click)=\"copySource()\"\n >\n {{ copied ? 'Copied' : 'Copy' }}\n </button>\n <button\n *ngIf=\"resolvedShowExportButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action\"\n [disabled]=\"!svgMarkup\"\n [attr.title]=\"tooltipFor('Export SVG')\"\n (click)=\"exportSvg()\"\n >\n Export\n </button>\n <button\n *ngIf=\"resolvedShowFullscreenButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action\"\n [disabled]=\"!svgMarkup\"\n [attr.title]=\"tooltipFor('Fullscreen')\"\n (click)=\"openModal()\"\n >\n Fullscreen\n </button>\n <button\n *ngIf=\"resolvedShowCollapseButton\"\n type=\"button\"\n class=\"markstream-angular-enhanced-block__action\"\n [attr.title]=\"tooltipFor(collapsed ? 'Expand' : 'Collapse')\"\n (click)=\"toggleCollapsed()\"\n >\n {{ collapsed ? 'Expand' : 'Collapse' }}\n </button>\n <ng-container *ngIf=\"resolvedShowZoomControls && modalOpen\">\n <button type=\"button\" class=\"markstream-angular-enhanced-block__action\" [attr.title]=\"tooltipFor('Zoom out')\" (click)=\"adjustZoom(-0.1)\">-</button>\n <button type=\"button\" class=\"markstream-angular-enhanced-block__action\" [attr.title]=\"tooltipFor('Reset zoom')\" (click)=\"resetZoom()\">100%</button>\n <button type=\"button\" class=\"markstream-angular-enhanced-block__action\" [attr.title]=\"tooltipFor('Zoom in')\" (click)=\"adjustZoom(0.1)\">+</button>\n </ng-container>\n </div>\n </div>\n\n <div\n *ngIf=\"!collapsed\"\n class=\"markstream-angular-enhanced-block__body\"\n [style.maxHeight]=\"resolvedMaxHeight\"\n >\n <div *ngIf=\"rendering && !showSource\" class=\"mermaid-loading\">\n <span class=\"mermaid-spinner\" aria-hidden=\"true\"></span>\n <span>Rendering infographic...</span>\n </div>\n\n <div\n *ngIf=\"!showSource\"\n #previewHost\n class=\"infographic-render\"\n [style.minHeight]=\"resolvedContainerMinHeight\"\n ></div>\n\n <pre *ngIf=\"showSource\" class=\"markstream-angular-enhanced-block__source\"><code translate=\"no\">{{ code }}</code></pre>\n\n <div *ngIf=\"error\" class=\"d2-error\">{{ error }}</div>\n </div>\n\n <span class=\"sr-only\" aria-live=\"polite\" role=\"status\">{{ copied ? 'Copied' : '' }}</span>\n </div>\n\n <div\n *ngIf=\"modalOpen\"\n class=\"mermaid-modal-overlay\"\n role=\"dialog\"\n aria-modal=\"true\"\n (click)=\"closeModal()\"\n >\n <div\n class=\"mermaid-modal-panel\"\n [class.is-dark]=\"resolvedIsDark\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"mermaid-modal-header\">\n <span class=\"mermaid-modal-title\">Infographic Preview</span>\n <button type=\"button\" class=\"mermaid-modal-close\" (click)=\"closeModal()\">Close</button>\n </div>\n <div class=\"mermaid-modal-body\">\n <div class=\"mermaid-modal-content\" [style.transform]=\"modalTransform\">\n <div #modalHost class=\"fullscreen\"></div>\n </div>\n </div>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InfographicBlockNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n\n @ViewChild('previewHost') private previewHost?: ElementRef<HTMLElement>\n @ViewChild('modalHost') private modalHost?: ElementRef<HTMLElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() props?: Record<string, any>\n\n rendering = false\n copied = false\n collapsed = false\n showSource = false\n modalOpen = false\n zoom = 1\n error = ''\n containerMinHeight = ''\n svgMarkup = ''\n\n private viewReady = false\n private destroyed = false\n private renderToken = 0\n private copyTimer: number | null = null\n private infographicInstance: any = null\n\n get mergedProps() {\n return {\n ...(this.context?.infographicProps || {}),\n ...(this.props || {}),\n }\n }\n\n get code() {\n return getString((this.node as any)?.code)\n }\n\n get resolvedIsDark() {\n if (typeof this.mergedProps.isDark === 'boolean')\n return this.mergedProps.isDark\n return this.context?.isDark === true\n }\n\n get resolvedShowHeader() {\n return this.mergedProps.showHeader !== false\n }\n\n get resolvedShowCopyButton() {\n return this.mergedProps.showCopyButton !== false\n }\n\n get resolvedShowCollapseButton() {\n return this.mergedProps.showCollapseButton !== false\n }\n\n get resolvedShowModeToggle() {\n return this.mergedProps.showModeToggle !== false\n }\n\n get resolvedShowExportButton() {\n return this.mergedProps.showExportButton !== false\n }\n\n get resolvedShowFullscreenButton() {\n return this.mergedProps.showFullscreenButton !== false\n }\n\n get resolvedShowZoomControls() {\n return this.mergedProps.showZoomControls !== false\n }\n\n get resolvedShowTooltips() {\n if (typeof this.mergedProps.showTooltips === 'boolean')\n return this.mergedProps.showTooltips\n return this.context?.showTooltips !== false\n }\n\n get resolvedMaxHeight() {\n return resolveCssSize(this.mergedProps.maxHeight, '500px')\n }\n\n get estimatedPreviewHeightPx() {\n return clampPreviewHeight(\n parsePositiveNumber(this.mergedProps.estimatedPreviewHeightPx) ?? estimateInfographicPreviewHeight(this.code),\n undefined,\n this.maxPreviewHeight,\n )\n }\n\n get resolvedContainerMinHeight() {\n return this.containerMinHeight || `${this.estimatedPreviewHeightPx}px`\n }\n\n private get maxPreviewHeight() {\n if (this.mergedProps.maxHeight == null || this.mergedProps.maxHeight === 'none')\n return this.mergedProps.maxHeight === 'none' ? null : 500\n return parsePositiveNumber(this.mergedProps.maxHeight) ?? 500\n }\n\n private resolveContainerMinHeight(actualHeight: number) {\n const boundedHeight = Math.max(actualHeight, this.estimatedPreviewHeightPx)\n const raw = this.mergedProps.maxHeight\n if (raw == null || raw === 'none')\n return `${boundedHeight}px`\n\n const maxHeight = this.maxPreviewHeight\n if (maxHeight == null)\n return `${boundedHeight}px`\n\n return `${Math.min(boundedHeight, maxHeight)}px`\n }\n\n get resolvedLoading() {\n if (typeof this.mergedProps.loading === 'boolean')\n return this.mergedProps.loading\n return (this.node as any)?.loading === true\n }\n\n get resolvedProgressiveRender() {\n return this.mergedProps.progressiveRender === true\n }\n\n get modalTransform() {\n return `scale(${this.zoom})`\n }\n\n ngAfterViewInit() {\n this.viewReady = true\n queueMicrotask(() => void this.renderInfographic())\n }\n\n ngOnChanges() {\n if (!this.viewReady)\n return\n this.containerMinHeight = ''\n queueMicrotask(() => void this.renderInfographic())\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.renderToken += 1\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n this.destroyInfographic()\n if (typeof document !== 'undefined')\n document.body.style.overflow = ''\n }\n\n @HostListener('window:keydown', ['$event'])\n handleWindowKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.modalOpen)\n this.closeModal()\n }\n\n tooltipFor(text: string) {\n return this.resolvedShowTooltips ? text : null\n }\n\n setMode(nextSource: boolean) {\n this.showSource = nextSource\n if (!nextSource)\n this.schedulePreviewSync()\n this.cdr.markForCheck()\n }\n\n async copySource() {\n await copyTextToClipboard(this.code)\n this.copied = true\n this.context?.events.onCopy?.(this.code)\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n if (typeof window !== 'undefined') {\n this.copyTimer = window.setTimeout(() => {\n this.copied = false\n this.cdr.markForCheck()\n }, 1000)\n }\n this.cdr.markForCheck()\n }\n\n exportSvg() {\n if (!this.svgMarkup)\n return\n downloadSvgMarkup(this.svgMarkup, `infographic-${Date.now()}.svg`)\n }\n\n openModal() {\n if (!this.svgMarkup)\n return\n this.modalOpen = true\n if (typeof document !== 'undefined')\n document.body.style.overflow = 'hidden'\n queueMicrotask(() => this.syncModalPreview())\n this.cdr.markForCheck()\n }\n\n closeModal() {\n this.modalOpen = false\n if (typeof document !== 'undefined')\n document.body.style.overflow = ''\n clearElement(this.modalHost?.nativeElement)\n this.cdr.markForCheck()\n }\n\n toggleCollapsed() {\n this.collapsed = !this.collapsed\n if (!this.collapsed)\n queueMicrotask(() => void this.renderInfographic())\n this.cdr.markForCheck()\n }\n\n adjustZoom(delta: number) {\n this.zoom = clampNumber(Number((this.zoom + delta).toFixed(2)), 0.4, 2.5)\n this.cdr.markForCheck()\n }\n\n resetZoom() {\n this.zoom = 1\n this.cdr.markForCheck()\n }\n\n private async renderInfographic() {\n if (this.destroyed || !this.viewReady || this.collapsed || this.showSource)\n return\n\n const source = this.code.trim()\n if (!source) {\n this.svgMarkup = ''\n clearElement(this.previewHost?.nativeElement)\n this.cdr.markForCheck()\n return\n }\n\n const host = this.previewHost?.nativeElement\n if (!host)\n return\n\n if (this.resolvedLoading && !this.resolvedProgressiveRender) {\n this.renderToken += 1\n this.rendering = true\n this.error = ''\n this.svgMarkup = ''\n clearElement(host)\n this.cdr.markForCheck()\n return\n }\n\n const token = ++this.renderToken\n this.rendering = true\n this.error = ''\n this.cdr.markForCheck()\n\n try {\n const InfographicClass = await getInfographic()\n if (!InfographicClass)\n throw new Error('Infographic renderer is not available.')\n if (this.destroyed || token !== this.renderToken)\n return\n\n this.destroyInfographic()\n clearElement(host)\n const instance = new InfographicClass({\n container: host,\n width: '100%',\n height: '100%',\n })\n this.infographicInstance = instance\n instance.render(source)\n\n if (this.destroyed || token !== this.renderToken)\n return\n\n const svg = host.querySelector('svg')\n this.svgMarkup = svg ? svg.outerHTML : ''\n const measuredHeight = host.scrollHeight\n if (measuredHeight > 0)\n this.containerMinHeight = this.resolveContainerMinHeight(measuredHeight)\n this.syncModalPreview()\n }\n catch (error) {\n if (this.destroyed || token !== this.renderToken)\n return\n this.destroyInfographic()\n this.svgMarkup = ''\n this.showSource = true\n this.error = error instanceof Error ? error.message : 'Failed to render infographic.'\n clearElement(host)\n }\n finally {\n if (token === this.renderToken) {\n this.rendering = false\n this.cdr.markForCheck()\n }\n }\n }\n\n private destroyInfographic() {\n try {\n this.infographicInstance?.destroy?.()\n }\n catch {\n // Best-effort cleanup.\n }\n this.infographicInstance = null\n }\n\n private syncModalPreview() {\n if (!this.modalOpen || !this.svgMarkup) {\n clearElement(this.modalHost?.nativeElement)\n return\n }\n setElementHtml(this.modalHost?.nativeElement, this.svgMarkup)\n }\n\n private schedulePreviewSync() {\n if (typeof window !== 'undefined') {\n window.setTimeout(() => {\n if (this.destroyed)\n return\n setElementHtml(this.previewHost?.nativeElement, this.svgMarkup)\n this.syncModalPreview()\n this.cdr.markForCheck()\n }, 0)\n return\n }\n queueMicrotask(() => {\n setElementHtml(this.previewHost?.nativeElement, this.svgMarkup)\n this.syncModalPreview()\n })\n }\n}\n","import type { OnChanges } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\ninterface StreamSegment {\n id: number\n content: string\n fading: boolean\n}\n\nfunction settleAndMergeSegments(segments: StreamSegment[], segmentId: number) {\n return segments.reduce<StreamSegment[]>((result, segment) => {\n const nextSegment = segment.id === segmentId\n ? { ...segment, fading: false }\n : segment\n const previousSegment = result[result.length - 1]\n if (previousSegment && !previousSegment.fading && !nextSegment.fading) {\n result[result.length - 1] = {\n ...previousSegment,\n content: previousSegment.content + nextSegment.content,\n }\n }\n else {\n result.push(nextSegment)\n }\n return result\n }, [])\n}\n\n@Component({\n selector: 'markstream-angular-inline-code-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <code>\n <span\n *ngFor=\"let segment of segments; trackBy: trackSegment\"\n [class]=\"segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''\"\n (animationend)=\"segment.fading && settleSegment(segment.id)\"\n >{{ segment.content }}</span>\n </code>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InlineCodeNodeComponent implements OnChanges {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n @Input() typewriter?: boolean\n @Input() fade?: boolean\n\n segments: StreamSegment[] = []\n private renderedCode = ''\n private nextSegmentId = 0\n\n ngOnChanges() {\n const nextCode = getString((this.node as any)?.code)\n const streamStateKey = getString(this.indexKey).trim()\n const textStreamState = this.context?.textStreamState\n const previousPersisted = streamStateKey\n ? textStreamState?.get(streamStateKey)\n : undefined\n const previousCode = previousPersisted ?? this.renderedCode\n const resumeFromPersistedCode = previousPersisted !== undefined\n && previousPersisted !== this.renderedCode\n\n if (!this.fadeEnabled) {\n this.setFullCode(nextCode)\n }\n else if (nextCode !== previousCode) {\n if (previousCode && nextCode.startsWith(previousCode)) {\n const appendedCode = nextCode.slice(previousCode.length)\n const lastSegment = this.segments[this.segments.length - 1]\n if (resumeFromPersistedCode) {\n this.segments = [\n { id: this.nextSegmentId++, content: previousCode, fading: false },\n { id: this.nextSegmentId++, content: appendedCode, fading: true },\n ]\n }\n else if (lastSegment?.fading) {\n this.segments = [\n ...this.segments.slice(0, -1),\n { ...lastSegment, content: lastSegment.content + appendedCode },\n ]\n }\n else {\n this.segments = [\n ...this.segments,\n { id: this.nextSegmentId++, content: appendedCode, fading: true },\n ]\n }\n }\n else {\n this.setFullCode(nextCode)\n }\n }\n\n this.renderedCode = nextCode\n if (streamStateKey)\n textStreamState?.set(streamStateKey, nextCode)\n }\n\n get settledCode() {\n return this.segments.filter(segment => !segment.fading).map(segment => segment.content).join('')\n }\n\n get streamedDelta() {\n return this.segments.filter(segment => segment.fading).map(segment => segment.content).join('')\n }\n\n streamedDeltaClass(segment: StreamSegment) {\n return segment.id % 2 === 0\n ? 'markstream-angular-text__stream-delta--a'\n : 'markstream-angular-text__stream-delta--b'\n }\n\n get fadeEnabled() {\n if (typeof this.fade === 'boolean')\n return this.fade\n if (typeof this.context?.fade === 'boolean')\n return this.context.fade\n return true\n }\n\n get typewriterEnabled() {\n if (typeof this.typewriter === 'boolean')\n return this.typewriter\n if (typeof this.context?.typewriter === 'boolean')\n return this.context.typewriter\n return false\n }\n\n trackSegment(_index: number, segment: StreamSegment) {\n return segment.id\n }\n\n settleSegment(segmentId: number) {\n if (!this.segments.some(segment => segment.id === segmentId && segment.fading))\n return\n this.segments = settleAndMergeSegments(this.segments, segmentId)\n }\n\n private setFullCode(content: string) {\n if (this.segments.length === 1 && !this.segments[0]?.fading && this.segments[0].content === content)\n return\n this.segments = content\n ? [{ id: this.nextSegmentId++, content, fading: false }]\n : []\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-insert-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <ins>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </ins>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InsertNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'insert'}-insert`\n }\n}\n","import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom'\n\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right'\n\nlet tooltipEl: HTMLDivElement | null = null\nlet currentAnchor: HTMLElement | null = null\nlet cleanupAutoUpdate: (() => void) | null = null\nlet showTimer: ReturnType<typeof setTimeout> | null = null\nlet hideTimer: ReturnType<typeof setTimeout> | null = null\nlet currentId: string | null = null\n\nfunction clearTimers() {\n if (showTimer) {\n clearTimeout(showTimer)\n showTimer = null\n }\n if (hideTimer) {\n clearTimeout(hideTimer)\n hideTimer = null\n }\n}\n\nfunction ensureTooltipEl() {\n if (tooltipEl || typeof document === 'undefined')\n return tooltipEl\n\n tooltipEl = document.createElement('div')\n tooltipEl.className = 'ms-tooltip'\n tooltipEl.setAttribute('role', 'tooltip')\n tooltipEl.dataset.visible = 'false'\n tooltipEl.style.position = 'fixed'\n tooltipEl.style.left = '0px'\n tooltipEl.style.top = '0px'\n tooltipEl.style.transform = 'translate3d(0,0,0)'\n document.body.appendChild(tooltipEl)\n return tooltipEl\n}\n\nfunction detectDarkModeHint(hint?: boolean | null) {\n if (typeof hint === 'boolean')\n return hint\n\n if (typeof document !== 'undefined') {\n try {\n if (document.documentElement.classList.contains('dark'))\n return true\n }\n catch {\n // Ignore classList failures on locked-down documents.\n }\n }\n\n if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {\n try {\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n }\n catch {\n // Ignore matchMedia failures in non-browser environments.\n }\n }\n\n return false\n}\n\nasync function updateTooltipPosition(placement: TooltipPlacement) {\n if (!tooltipEl || !currentAnchor)\n return\n\n const { x, y } = await computePosition(currentAnchor, tooltipEl, {\n placement,\n middleware: [offset(8), flip(), shift({ padding: 8 })],\n strategy: 'fixed',\n })\n\n tooltipEl.style.transform = `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`\n}\n\nexport function showTooltipForAnchor(\n anchor: HTMLElement | null,\n content: string,\n placement: TooltipPlacement = 'top',\n immediate = false,\n isDark?: boolean | null,\n) {\n if (!anchor || typeof document === 'undefined')\n return\n\n const element = ensureTooltipEl()\n if (!element)\n return\n\n clearTimers()\n const doShow = async () => {\n if (!tooltipEl)\n return\n\n currentAnchor = anchor\n tooltipEl.textContent = content\n tooltipEl.dataset.placement = placement\n tooltipEl.dataset.dark = detectDarkModeHint(isDark) ? 'true' : 'false'\n tooltipEl.dataset.visible = 'false'\n currentId = `tooltip-${Date.now()}-${Math.random().toString(36).slice(2)}`\n tooltipEl.id = currentId\n\n try {\n anchor.setAttribute('aria-describedby', currentId)\n }\n catch {\n // Ignore aria sync failures.\n }\n\n await updateTooltipPosition(placement)\n tooltipEl.dataset.visible = 'true'\n cleanupAutoUpdate?.()\n cleanupAutoUpdate = autoUpdate(anchor, tooltipEl, () => {\n void updateTooltipPosition(placement)\n })\n }\n\n if (immediate)\n void doShow()\n else\n showTimer = setTimeout(doShow, 80)\n}\n\nexport function hideTooltip(immediate = false) {\n if (!tooltipEl)\n return\n\n clearTimers()\n const doHide = () => {\n if (!tooltipEl)\n return\n\n tooltipEl.dataset.visible = 'false'\n if (currentAnchor && currentId) {\n try {\n currentAnchor.removeAttribute('aria-describedby')\n }\n catch {\n // Ignore aria sync failures.\n }\n }\n currentAnchor = null\n currentId = null\n cleanupAutoUpdate?.()\n cleanupAutoUpdate = null\n }\n\n if (immediate)\n doHide()\n else\n hideTimer = setTimeout(doHide, 120)\n}\n","import type { OnChanges } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\ninterface StreamSegment {\n id: number\n content: string\n fading: boolean\n}\n\nfunction settleAndMergeSegments(segments: StreamSegment[], segmentId?: number) {\n return segments.reduce<StreamSegment[]>((result, segment) => {\n const nextSegment = segmentId == null || segment.id === segmentId\n ? { ...segment, fading: false }\n : segment\n const previousSegment = result[result.length - 1]\n if (previousSegment && !previousSegment.fading && !nextSegment.fading) {\n result[result.length - 1] = {\n ...previousSegment,\n content: previousSegment.content + nextSegment.content,\n }\n }\n else {\n result.push(nextSegment)\n }\n return result\n }, [])\n}\n\n@Component({\n selector: 'markstream-angular-text-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <ng-container *ngIf=\"!centered; else centeredText\">\n <span class=\"markstream-angular-text-node\">\n <span\n *ngFor=\"let segment of segments; trackBy: trackSegment\"\n [class]=\"segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''\"\n (animationend)=\"segment.fading && settleSegment(segment.id)\"\n >{{ segment.content }}</span>\n </span>\n </ng-container>\n <ng-template #centeredText>\n <span class=\"markstream-angular-text-node markstream-angular-text--centered\">\n <span\n *ngFor=\"let segment of segments; trackBy: trackSegment\"\n [class]=\"segment.fading ? 'markstream-angular-text__stream-delta ' + streamedDeltaClass(segment) : ''\"\n (animationend)=\"segment.fading && settleSegment(segment.id)\"\n >{{ segment.content }}</span>\n </span>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextNodeComponent implements OnChanges {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n @Input() typewriter?: boolean\n @Input() fade?: boolean\n\n segments: StreamSegment[] = []\n private renderedText = ''\n private nextSegmentId = 0\n private lastStreamRenderVersion?: number\n\n ngOnChanges() {\n const nextText = getString((this.node as any)?.content)\n const streamStateKey = getString(this.indexKey).trim()\n const textStreamState = this.context?.textStreamState\n const streamRenderVersion = this.context?.streamRenderVersion\n const streamRenderVersionChanged = streamRenderVersion !== this.lastStreamRenderVersion\n const previousPersisted = streamStateKey\n ? textStreamState?.get(streamStateKey)\n : undefined\n const previousText = previousPersisted ?? this.renderedText\n const resumeFromPersistedText = previousPersisted !== undefined\n && previousPersisted !== this.renderedText\n\n if (!this.fadeEnabled) {\n this.setFullText(nextText)\n this.renderedText = nextText\n if (streamStateKey)\n textStreamState?.set(streamStateKey, nextText)\n this.lastStreamRenderVersion = streamRenderVersion\n return\n }\n\n if (nextText === previousText) {\n if (this.segments.some(segment => segment.fading) && streamRenderVersionChanged) {\n this.settleFadingSegments()\n }\n else if (this.renderedText !== nextText) {\n this.setFullText(nextText)\n }\n this.renderedText = nextText\n if (streamStateKey)\n textStreamState?.set(streamStateKey, nextText)\n this.lastStreamRenderVersion = streamRenderVersion\n return\n }\n\n if (previousText && nextText.startsWith(previousText)) {\n const appendedText = nextText.slice(previousText.length)\n const lastSegment = this.segments[this.segments.length - 1]\n if (resumeFromPersistedText) {\n this.segments = [\n { id: this.nextSegmentId++, content: previousText, fading: false },\n { id: this.nextSegmentId++, content: appendedText, fading: true },\n ]\n }\n else if (lastSegment?.fading) {\n this.segments = [\n ...this.segments.slice(0, -1),\n { ...lastSegment, content: lastSegment.content + appendedText },\n ]\n }\n else {\n this.segments = [\n ...this.segments,\n { id: this.nextSegmentId++, content: appendedText, fading: true },\n ]\n }\n }\n else {\n this.setFullText(nextText)\n }\n\n this.renderedText = nextText\n if (streamStateKey)\n textStreamState?.set(streamStateKey, nextText)\n this.lastStreamRenderVersion = streamRenderVersion\n }\n\n get centered() {\n return !!(this.node as any)?.center\n }\n\n get settledText() {\n return this.segments.filter(segment => !segment.fading).map(segment => segment.content).join('')\n }\n\n get streamedDelta() {\n return this.segments.filter(segment => segment.fading).map(segment => segment.content).join('')\n }\n\n streamedDeltaClass(segment: StreamSegment) {\n return segment.id % 2 === 0\n ? 'markstream-angular-text__stream-delta--a'\n : 'markstream-angular-text__stream-delta--b'\n }\n\n get fadeEnabled() {\n if (typeof this.fade === 'boolean')\n return this.fade\n if (typeof this.context?.fade === 'boolean')\n return this.context.fade\n return true\n }\n\n get typewriterEnabled() {\n if (typeof this.typewriter === 'boolean')\n return this.typewriter\n if (typeof this.context?.typewriter === 'boolean')\n return this.context.typewriter\n return false\n }\n\n trackSegment(_index: number, segment: StreamSegment) {\n return segment.id\n }\n\n settleSegment(segmentId: number) {\n if (!this.segments.some(segment => segment.id === segmentId && segment.fading))\n return\n this.segments = settleAndMergeSegments(this.segments, segmentId)\n }\n\n private setFullText(content: string) {\n if (this.segments.length === 1 && !this.segments[0]?.fading && this.segments[0].content === content)\n return\n this.segments = content\n ? [{ id: this.nextSegmentId++, content, fading: false }]\n : []\n }\n\n private settleFadingSegments() {\n this.segments = settleAndMergeSegments(this.segments)\n }\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { isUnsafeHtmlUrl, shouldOpenLinkInNewTab } from 'stream-markdown-parser'\nimport { hideTooltip, showTooltipForAnchor } from '../../tooltip/singletonTooltip'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList, getString } from '../shared/node-helpers'\nimport { TextNodeComponent } from '../TextNode/TextNode.component'\n\n@Component({\n selector: 'markstream-angular-link-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent), forwardRef(() => TextNodeComponent)],\n template: `\n <a\n *ngIf=\"!loading; else loadingTpl\"\n #anchorEl\n class=\"link-node\"\n [attr.href]=\"href || null\"\n [attr.title]=\"resolvedShowTooltip ? '' : title\"\n [attr.aria-label]=\"'Link: ' + title\"\n [attr.target]=\"openInNewTab ? '_blank' : null\"\n [attr.rel]=\"openInNewTab ? 'noopener noreferrer' : null\"\n [ngStyle]=\"cssVars\"\n (mouseenter)=\"onAnchorEnter()\"\n (mouseleave)=\"onAnchorLeave()\"\n >\n <markstream-angular-nested-renderer\n *ngIf=\"hasChildren; else fallbackText\"\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n <ng-template #fallbackText>\n <markstream-angular-text-node\n [node]=\"{ type: 'text', content: fallbackLabel }\"\n [context]=\"context\"\n [indexKey]=\"nestedPrefix + '-fallback'\"\n />\n </ng-template>\n </a>\n\n <ng-template #loadingTpl>\n <span class=\"link-loading\" [ngStyle]=\"cssVars\" aria-hidden=\"false\">\n <span class=\"link-text-wrapper\">\n <span class=\"link-text\">\n <markstream-angular-text-node\n [node]=\"{ type: 'text', content: fallbackLabel }\"\n [context]=\"context\"\n [indexKey]=\"nestedPrefix + '-loading'\"\n />\n </span>\n <span class=\"link-loading-indicator\" aria-hidden=\"true\"></span>\n </span>\n </span>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n @ViewChild('anchorEl') private anchorRef?: ElementRef<HTMLElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n private hovering = false\n\n get href() {\n const href = getString((this.node as any)?.href)\n return href && !isUnsafeHtmlUrl(href) ? href : ''\n }\n\n get title() {\n const rawTitle = getString((this.node as any)?.title)\n return rawTitle || this.href\n }\n\n get openInNewTab() {\n return shouldOpenLinkInNewTab(this.href)\n }\n\n get loading() {\n return (this.node as any)?.loading === true\n }\n\n get resolvedShowTooltip() {\n return this.context?.showTooltips !== false\n }\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get hasChildren() {\n return this.children.length > 0\n }\n\n get fallbackLabel() {\n return getString((this.node as any)?.text || this.href)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'link'}-inline`\n }\n\n get cssVars() {\n return {\n '--link-color': '#0366d6',\n '--underline-height': '2px',\n '--underline-bottom': '-3px',\n '--underline-opacity': '0.35',\n '--underline-rest-opacity': '0.175',\n '--underline-duration': '1.6s',\n '--underline-timing': 'ease-in-out',\n '--underline-iteration': 'infinite',\n } as Record<string, string>\n }\n\n ngAfterViewInit() {\n this.syncTooltip()\n }\n\n ngOnChanges() {\n this.syncTooltip()\n }\n\n ngOnDestroy() {\n if (this.hovering)\n hideTooltip(true)\n }\n\n onAnchorEnter() {\n if (!this.resolvedShowTooltip)\n return\n\n this.hovering = true\n showTooltipForAnchor(this.anchorRef?.nativeElement || null, this.title, 'top', false, this.context?.isDark)\n }\n\n onAnchorLeave() {\n if (!this.resolvedShowTooltip)\n return\n\n this.hovering = false\n hideTooltip()\n }\n\n private syncTooltip() {\n if (!this.hovering || !this.resolvedShowTooltip)\n return\n\n showTooltipForAnchor(this.anchorRef?.nativeElement || null, this.title, 'top', true, this.context?.isDark)\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-list-item-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <li [attr.value]=\"value ?? null\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </li>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListItemNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n @Input() value?: number\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'list-item'}-item`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { ListItemNodeComponent } from '../ListItemNode/ListItemNode.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-list-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => ListItemNodeComponent)],\n template: `\n <ol *ngIf=\"ordered; else unorderedList\" class=\"list-node my-5 pl-[calc(13/8*1em)]\" [attr.start]=\"startValue || null\">\n <markstream-angular-list-item-node\n *ngFor=\"let item of items; let idx = index; trackBy: trackByIndex\"\n [node]=\"item\"\n [value]=\"startValue + idx\"\n [context]=\"context\"\n [indexKey]=\"itemPrefix(idx)\"\n />\n </ol>\n\n <ng-template #unorderedList>\n <ul class=\"list-node my-5 pl-[calc(13/8*1em)] list-disc max-lg:my-[calc(4/3*1em)] max-lg:pl-[calc(14/9*1em)]\">\n <markstream-angular-list-item-node\n *ngFor=\"let item of items; let idx = index; trackBy: trackByIndex\"\n [node]=\"item\"\n [context]=\"context\"\n [indexKey]=\"itemPrefix(idx)\"\n />\n </ul>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get ordered() {\n return !!(this.node as any)?.ordered\n }\n\n get startValue() {\n return Number((this.node as any)?.start) || 1\n }\n\n get items() {\n return getNodeList((this.node as any)?.items)\n }\n\n trackByIndex = (index: number) => {\n return this.itemPrefix(index)\n }\n\n itemPrefix(index: number) {\n return `${this.indexKey || 'list'}-${index}`\n }\n}\n","export interface KatexModule {\n renderToString: (content: string, options?: Record<string, unknown>) => string\n}\n\nexport type KatexLoader = () => Promise<unknown> | unknown\n\nlet katex: any = null\nlet importAttempted = false\nlet pendingImport: Promise<KatexModule | null> | null = null\nlet katexLoader: KatexLoader | null = defaultKatexLoader\n\nfunction normalizeKatexModule(mod: any): KatexModule | null {\n const resolved = mod?.default ?? mod\n if (resolved && typeof resolved.renderToString === 'function')\n return resolved as KatexModule\n return null\n}\n\nfunction getGlobalKatex() {\n try {\n const globalStore = globalThis as any\n return normalizeKatexModule(globalStore?.katex)\n }\n catch {\n return null\n }\n}\n\nfunction defaultKatexLoader() {\n return (async () => {\n const globalKatex = getGlobalKatex()\n if (globalKatex)\n return globalKatex\n\n const mod = await import('katex')\n try {\n await import('katex/contrib/mhchem')\n }\n catch {\n // Ignore optional mhchem support failures.\n }\n return normalizeKatexModule(mod)\n })()\n}\n\nfunction resetCache() {\n katex = null\n importAttempted = false\n pendingImport = null\n}\n\nexport function setKatexLoader(loader: KatexLoader | null) {\n katexLoader = loader\n resetCache()\n}\n\nexport function enableKatex(loader?: KatexLoader) {\n setKatexLoader(loader ?? defaultKatexLoader)\n}\n\nexport function disableKatex() {\n setKatexLoader(null)\n}\n\nexport function isKatexEnabled() {\n return typeof katexLoader === 'function'\n}\n\nexport async function getKatex(): Promise<KatexModule | null> {\n const globalKatex = getGlobalKatex()\n if (globalKatex) {\n katex = globalKatex\n return katex\n }\n\n if (katex)\n return katex\n if (pendingImport)\n return await pendingImport\n if (importAttempted)\n return null\n\n const loader = katexLoader\n if (!loader) {\n importAttempted = true\n return null\n }\n\n pendingImport = (async () => {\n try {\n const result = await loader()\n const normalized = normalizeKatexModule(result) ?? result\n if (normalized) {\n katex = normalized\n return katex\n }\n }\n catch {\n // Swallow loader errors so callers can gracefully fall back.\n }\n\n importAttempted = true\n return null\n })()\n\n try {\n return await pendingImport\n }\n finally {\n pendingImport = null\n }\n}\n","export function normalizeKaTeXRenderInput(content: string) {\n if (!content)\n return ''\n\n return content\n .replace(/·/g, '⋅')\n .replace(/℃/g, '°C')\n}\n","import { isKatexEnabled } from '../optional/katex'\nimport { normalizeKaTeXRenderInput } from '../utils/normalizeKaTeXRenderInput'\n\nexport const WORKER_BUSY_CODE = 'WORKER_BUSY'\n\ninterface Pending {\n resolve: (val: string) => void\n reject: (err: any) => void\n timeoutId: number\n}\n\nlet worker: Worker | null = null\nlet workerInitError: any = null\nlet debugKatexWorker = false\n\nconst pending = new Map<string, Pending>()\nconst cache = new Map<string, string>()\nconst cacheMax = 200\nconst drainWaiters = new Set<() => void>()\n\nlet maxConcurrency = 5\n\nfunction notifyDrainIfBelowCap() {\n if (pending.size >= maxConcurrency || drainWaiters.size === 0)\n return\n\n const currentWaiters = Array.from(drainWaiters)\n drainWaiters.clear()\n for (const waiter of currentWaiters) {\n try {\n waiter()\n }\n catch {\n // Ignore waiter failures.\n }\n }\n}\n\nfunction rememberCache(content: string, displayMode: boolean, html: string) {\n cache.set(`${displayMode ? 'd' : 'i'}:${content}`, html)\n if (cache.size > cacheMax) {\n const firstKey = cache.keys().next().value\n if (firstKey)\n cache.delete(firstKey)\n }\n}\n\nexport function setKaTeXWorker(nextWorker: Worker) {\n worker = nextWorker\n workerInitError = null\n\n worker.onmessage = (event: MessageEvent) => {\n const { id, html, error, content, displayMode } = event.data || {}\n const active = pending.get(id)\n if (!active)\n return\n\n pending.delete(id)\n clearTimeout(active.timeoutId)\n notifyDrainIfBelowCap()\n\n if (error) {\n active.reject(new Error(error))\n return\n }\n\n if (content)\n rememberCache(String(content), Boolean(displayMode), String(html || ''))\n active.resolve(String(html || ''))\n }\n\n worker.onerror = (event: ErrorEvent) => {\n for (const [, active] of pending.entries()) {\n clearTimeout(active.timeoutId)\n active.reject(new Error(`Worker error: ${event.message}`))\n }\n pending.clear()\n notifyDrainIfBelowCap()\n }\n\n if (debugKatexWorker)\n worker.postMessage({ type: 'init', debug: true })\n}\n\nexport function clearKaTeXWorker() {\n if (worker)\n worker.terminate?.()\n worker = null\n workerInitError = null\n}\n\nfunction ensureWorker() {\n if (worker)\n return worker\n\n workerInitError = new Error('[markstream-angular:katexWorkerClient] No worker instance set. Please inject a Worker via setKaTeXWorker().')\n ;(workerInitError as any).name = 'WorkerInitError'\n ;(workerInitError as any).code = 'WORKER_INIT_ERROR'\n return null\n}\n\nexport function setKaTeXWorkerDebug(enabled: boolean) {\n debugKatexWorker = !!enabled\n if (worker)\n worker.postMessage({ type: 'init', debug: debugKatexWorker })\n}\n\nexport async function renderKaTeXInWorker(content: string, displayMode = true, timeout = 2000, signal?: AbortSignal): Promise<string> {\n const normalizedContent = normalizeKaTeXRenderInput(content)\n if (!isKatexEnabled()) {\n const error = new Error('KaTeX rendering disabled')\n ;(error as any).name = 'KaTeXDisabled'\n ;(error as any).code = 'KATEX_DISABLED'\n return Promise.reject(error)\n }\n\n if (workerInitError)\n return Promise.reject(workerInitError)\n\n const cacheKey = `${displayMode ? 'd' : 'i'}:${normalizedContent}`\n const cached = cache.get(cacheKey)\n if (cached)\n return cached\n\n const activeWorker = ensureWorker()\n if (!activeWorker)\n return Promise.reject(workerInitError)\n\n if (pending.size >= maxConcurrency) {\n const error = new Error('Worker busy')\n ;(error as any).name = 'WorkerBusy'\n ;(error as any).code = WORKER_BUSY_CODE\n ;(error as any).busy = true\n ;(error as any).inFlight = pending.size\n ;(error as any).max = maxConcurrency\n return Promise.reject(error)\n }\n\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n const error = new Error('Aborted')\n ;(error as any).name = 'AbortError'\n reject(error)\n return\n }\n\n const id = Math.random().toString(36).slice(2)\n const timeoutId = globalThis.setTimeout(() => {\n pending.delete(id)\n notifyDrainIfBelowCap()\n const error = new Error('Worker render timed out')\n ;(error as any).name = 'WorkerTimeout'\n ;(error as any).code = 'WORKER_TIMEOUT'\n reject(error)\n }, timeout)\n\n const onAbort = () => {\n globalThis.clearTimeout(timeoutId)\n if (pending.delete(id))\n notifyDrainIfBelowCap()\n const error = new Error('Aborted')\n ;(error as any).name = 'AbortError'\n reject(error)\n }\n signal?.addEventListener('abort', onAbort, { once: true })\n\n pending.set(id, {\n timeoutId,\n resolve: (html) => {\n signal?.removeEventListener('abort', onAbort)\n resolve(html)\n },\n reject: (error) => {\n signal?.removeEventListener('abort', onAbort)\n reject(error)\n },\n })\n\n activeWorker.postMessage({\n id,\n type: 'render',\n content: normalizedContent,\n displayMode,\n })\n })\n}\n\nexport function setKaTeXCache(content: string, displayMode = true, html: string) {\n rememberCache(normalizeKaTeXRenderInput(content), displayMode, html)\n}\n\nexport function getKaTeXWorkerLoad() {\n return {\n inFlight: pending.size,\n max: maxConcurrency,\n }\n}\n\nexport function setKaTeXWorkerMaxConcurrency(value: number) {\n if (Number.isFinite(value) && value > 0)\n maxConcurrency = Math.floor(value)\n}\n\nexport function isKaTeXWorkerBusy() {\n return pending.size >= maxConcurrency\n}\n\nexport function waitForKaTeXWorkerSlot(timeout = 2000, signal?: AbortSignal): Promise<void> {\n if (pending.size < maxConcurrency)\n return Promise.resolve()\n\n return new Promise((resolve, reject) => {\n let settled = false\n let timer: ReturnType<typeof setTimeout> | null = null\n\n const onDrain = () => {\n if (settled)\n return\n settled = true\n if (timer)\n clearTimeout(timer)\n drainWaiters.delete(onDrain)\n resolve()\n }\n\n drainWaiters.add(onDrain)\n\n timer = setTimeout(() => {\n if (settled)\n return\n settled = true\n drainWaiters.delete(onDrain)\n const error = new Error('Wait for worker slot timed out')\n ;(error as any).name = 'WorkerBusyTimeout'\n ;(error as any).code = 'WORKER_BUSY_TIMEOUT'\n reject(error)\n }, timeout)\n\n queueMicrotask(() => notifyDrainIfBelowCap())\n\n if (signal) {\n const onAbort = () => {\n if (settled)\n return\n settled = true\n if (timer)\n clearTimeout(timer)\n drainWaiters.delete(onDrain)\n const error = new Error('Aborted')\n ;(error as any).name = 'AbortError'\n reject(error)\n }\n if (signal.aborted)\n onAbort()\n else\n signal.addEventListener('abort', onAbort, { once: true })\n }\n })\n}\n\nexport interface BackpressureOptions {\n timeout?: number\n waitTimeout?: number\n backoffMs?: number\n maxRetries?: number\n signal?: AbortSignal\n}\n\nconst defaultBackpressure = {\n timeout: 2000,\n waitTimeout: 1500,\n backoffMs: 30,\n maxRetries: 1,\n}\nconst maxBackpressureRetries = 8\n\nexport function setKaTeXBackpressureDefaults(options: Partial<typeof defaultBackpressure>) {\n if (options.timeout != null)\n defaultBackpressure.timeout = Math.max(0, Math.floor(options.timeout))\n if (options.waitTimeout != null)\n defaultBackpressure.waitTimeout = Math.max(0, Math.floor(options.waitTimeout))\n if (options.backoffMs != null)\n defaultBackpressure.backoffMs = Math.max(0, Math.floor(options.backoffMs))\n if (options.maxRetries != null)\n defaultBackpressure.maxRetries = Math.max(0, Math.floor(options.maxRetries))\n}\n\nexport function getKaTeXBackpressureDefaults() {\n return { ...defaultBackpressure }\n}\n\nexport async function renderKaTeXWithBackpressure(\n content: string,\n displayMode = true,\n options: BackpressureOptions = {},\n): Promise<string> {\n if (!isKatexEnabled()) {\n const error = new Error('KaTeX rendering disabled')\n ;(error as any).name = 'KaTeXDisabled'\n ;(error as any).code = 'KATEX_DISABLED'\n throw error\n }\n\n const timeout = options.timeout ?? defaultBackpressure.timeout\n const waitTimeout = options.waitTimeout ?? defaultBackpressure.waitTimeout\n const backoffMs = options.backoffMs ?? defaultBackpressure.backoffMs\n const rawMaxRetries = options.maxRetries ?? defaultBackpressure.maxRetries\n const maxRetries = Number.isFinite(rawMaxRetries)\n ? Math.max(0, Math.min(Math.floor(rawMaxRetries), maxBackpressureRetries))\n : defaultBackpressure.maxRetries\n\n let attempt = 0\n for (;;) {\n if (options.signal?.aborted) {\n const error = new Error('Aborted')\n ;(error as any).name = 'AbortError'\n throw error\n }\n\n try {\n return await renderKaTeXInWorker(content, displayMode, timeout, options.signal)\n }\n catch (error: any) {\n if (error?.code !== WORKER_BUSY_CODE || attempt >= maxRetries)\n throw error\n\n attempt += 1\n await waitForKaTeXWorkerSlot(waitTimeout, options.signal).catch(() => {})\n if (backoffMs > 0)\n await new Promise(resolve => globalThis.setTimeout(resolve, backoffMs * attempt))\n }\n }\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { getKatex } from '../../optional/katex'\nimport { normalizeKaTeXRenderInput } from '../../utils/normalizeKaTeXRenderInput'\nimport { renderKaTeXWithBackpressure, setKaTeXCache, WORKER_BUSY_CODE } from '../../workers/katexWorkerClient'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-math-block-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"math-block markstream-nested-math-block\" data-markstream-katex-managed=\"1\">\n <div #mathRef class=\"markstream-nested-math-block__render\" [class.math-rendering]=\"rendering\"></div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MathBlockNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n\n @ViewChild('mathRef') private mathRef?: ElementRef<HTMLDivElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n\n rendering = true\n\n private destroyed = false\n private renderVersion = 0\n private hasRenderedOnce = false\n\n get content() {\n return getString((this.node as any)?.content || (this.node as any)?.markup || (this.node as any)?.raw)\n }\n\n ngAfterViewInit() {\n void this.renderMath()\n }\n\n ngOnChanges() {\n if (!this.mathRef)\n return\n void this.renderMath()\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.renderVersion += 1\n }\n\n private async renderMath() {\n const target = this.mathRef?.nativeElement\n if (!target)\n return\n\n const content = normalizeKaTeXRenderInput(this.content)\n const version = ++this.renderVersion\n if (!content) {\n target.textContent = ''\n this.rendering = false\n this.cdr.markForCheck()\n return\n }\n\n if (!this.hasRenderedOnce)\n this.rendering = true\n\n const html = await this.resolveKatexMarkup(content)\n if (this.destroyed || version !== this.renderVersion)\n return\n\n if (html) {\n target.innerHTML = html\n this.hasRenderedOnce = true\n this.rendering = false\n }\n else if (!(this.node as any)?.loading) {\n target.textContent = getString((this.node as any)?.raw || content)\n this.rendering = false\n }\n\n this.cdr.markForCheck()\n }\n\n private async resolveKatexMarkup(content: string) {\n try {\n return await renderKaTeXWithBackpressure(content, true, {\n timeout: 3000,\n waitTimeout: 2000,\n maxRetries: 1,\n })\n }\n catch (error: any) {\n const code = error?.code || error?.name\n const isWorkerInitFailure = code === 'WORKER_INIT_ERROR' || error?.fallbackToRenderer\n const isBusyOrTimeout = code === WORKER_BUSY_CODE || code === 'WORKER_TIMEOUT'\n if (!isWorkerInitFailure && !isBusyOrTimeout)\n return null\n }\n\n const katex = await getKatex()\n if (!katex)\n return null\n\n try {\n const html = katex.renderToString(content, {\n throwOnError: (this.node as any)?.loading === true,\n displayMode: true,\n })\n setKaTeXCache(content, true, html)\n return html\n }\n catch {\n return null\n }\n }\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { getKatex } from '../../optional/katex'\nimport { normalizeKaTeXRenderInput } from '../../utils/normalizeKaTeXRenderInput'\nimport { renderKaTeXWithBackpressure, setKaTeXCache, WORKER_BUSY_CODE } from '../../workers/katexWorkerClient'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-math-inline-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <span class=\"math-inline-wrapper markstream-nested-math\" data-display=\"inline\" data-markstream-katex-managed=\"1\">\n <span #mathRef class=\"math-inline\" [class.math-inline--hidden]=\"loading\"></span>\n <span *ngIf=\"loading\" class=\"math-inline__loading\" role=\"status\" aria-live=\"polite\">\n <span class=\"math-inline__spinner\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">Loading</span>\n </span>\n </span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MathInlineNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n\n @ViewChild('mathRef') private mathRef?: ElementRef<HTMLSpanElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n\n loading = true\n\n private destroyed = false\n private renderVersion = 0\n private hasRenderedOnce = false\n\n get content() {\n return getString((this.node as any)?.content || (this.node as any)?.markup || (this.node as any)?.raw)\n }\n\n get displayMode() {\n return String((this.node as any)?.markup || '') === '$$'\n }\n\n ngAfterViewInit() {\n void this.renderMath()\n }\n\n ngOnChanges() {\n if (!this.mathRef)\n return\n void this.renderMath()\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.renderVersion += 1\n }\n\n private async renderMath() {\n const target = this.mathRef?.nativeElement\n if (!target)\n return\n\n const content = normalizeKaTeXRenderInput(this.content)\n const version = ++this.renderVersion\n if (!content) {\n target.textContent = ''\n this.loading = false\n this.cdr.markForCheck()\n return\n }\n\n if (!this.hasRenderedOnce)\n this.loading = true\n\n const html = await this.resolveKatexMarkup(content, this.displayMode)\n if (this.destroyed || version !== this.renderVersion)\n return\n\n if (html) {\n target.innerHTML = html\n this.hasRenderedOnce = true\n this.loading = false\n }\n else if (!(this.node as any)?.loading) {\n target.textContent = getString((this.node as any)?.raw || content)\n this.loading = false\n }\n\n this.cdr.markForCheck()\n }\n\n private async resolveKatexMarkup(content: string, displayMode: boolean) {\n try {\n return await renderKaTeXWithBackpressure(content, displayMode, {\n timeout: 1500,\n waitTimeout: 0,\n maxRetries: 0,\n })\n }\n catch (error: any) {\n const code = error?.code || error?.name\n const isWorkerInitFailure = code === 'WORKER_INIT_ERROR' || error?.fallbackToRenderer\n const isBusyOrTimeout = code === WORKER_BUSY_CODE || code === 'WORKER_TIMEOUT'\n if (!isWorkerInitFailure && !isBusyOrTimeout)\n return null\n }\n\n const katex = await getKatex()\n if (!katex)\n return null\n\n try {\n const html = katex.renderToString(content, {\n throwOnError: (this.node as any)?.loading === true,\n displayMode,\n })\n setKaTeXCache(content, displayMode, html)\n return html\n }\n catch {\n return null\n }\n }\n}\n","export type MermaidLoader = () => Promise<unknown> | unknown\n\nconst defaultMermaidLoader: MermaidLoader = () => import('mermaid')\nconst GLOBAL_MERMAID_KEY = '__MARKSTREAM_ANGULAR_MERMAID__'\n\nlet cachedMermaid: any = null\nlet importAttempted = false\nlet lastInitKey: string | null = null\nlet pendingImport: Promise<MermaidModule | null> | null = null\nlet mermaidLoader: MermaidLoader | null = defaultMermaidLoader\n\nexport interface MermaidModule {\n render: (id: string, source: string) => Promise<MermaidRenderResult> | MermaidRenderResult\n parse?: (source: string) => Promise<unknown> | unknown\n initialize?: (config?: Record<string, unknown>) => unknown\n mermaidAPI?: {\n render?: MermaidModule['render']\n parse?: MermaidModule['parse']\n initialize?: MermaidModule['initialize']\n }\n}\n\nexport type MermaidRenderResult = string | {\n svg?: string\n bindFunctions?: (element: Element) => unknown\n}\n\ninterface MermaidInitConfig extends Record<string, unknown> {\n securityLevel?: unknown\n flowchart?: {\n htmlLabels?: unknown\n }\n}\n\nfunction computeInitKey(config: MermaidInitConfig) {\n const securityLevel = String(config?.securityLevel ?? 'strict')\n const htmlLabels = config?.flowchart?.htmlLabels\n return `${securityLevel}|htmlLabels:${htmlLabels === false ? '0' : '1'}`\n}\n\nfunction normalizeMermaidModule(mod: any) {\n if (!mod)\n return mod\n\n const candidate = mod?.default ?? mod\n if (candidate && (typeof candidate.render === 'function' || typeof candidate.parse === 'function' || typeof candidate.initialize === 'function'))\n return candidate\n\n if (candidate?.mermaidAPI && (typeof candidate.mermaidAPI.render === 'function' || typeof candidate.mermaidAPI.parse === 'function')) {\n const api = candidate.mermaidAPI\n return {\n ...candidate,\n render: api.render.bind(api),\n parse: api.parse ? api.parse.bind(api) : undefined,\n initialize: (opts: any) => {\n if (typeof candidate.initialize === 'function')\n return candidate.initialize(opts)\n return api.initialize ? api.initialize(opts) : undefined\n },\n } as MermaidModule\n }\n\n if (mod?.mermaid && typeof mod.mermaid.render === 'function')\n return mod.mermaid as MermaidModule\n\n return candidate as MermaidModule\n}\n\nfunction patchInitialize(target: any) {\n if (!target)\n return\n\n try {\n const originalInitialize = target?.initialize\n target.initialize = (opts: any) => {\n const merged = { suppressErrorRendering: true, ...(opts || {}) }\n if (typeof originalInitialize === 'function')\n return originalInitialize.call(target, merged)\n if (target?.mermaidAPI && typeof target.mermaidAPI.initialize === 'function')\n return target.mermaidAPI.initialize(merged)\n return undefined\n }\n }\n catch {\n // Ignore patching failures and keep the original instance.\n }\n}\n\nfunction ensureInitialized(instance: any, config?: MermaidInitConfig) {\n if (!instance || !config)\n return\n\n const key = computeInitKey(config)\n if (lastInitKey === key)\n return\n\n try {\n if (typeof instance.initialize === 'function')\n instance.initialize(config)\n else if (instance.mermaidAPI?.initialize)\n instance.mermaidAPI.initialize(config)\n lastInitKey = key\n }\n catch {\n // Mermaid may already be initialized; keep going.\n }\n}\n\nfunction getGlobalMermaid() {\n try {\n const globalStore = globalThis as any\n return normalizeMermaidModule(globalStore?.[GLOBAL_MERMAID_KEY] ?? globalStore?.mermaid)\n }\n catch {\n return null\n }\n}\n\nfunction setGlobalMermaid(instance: any) {\n try {\n ;(globalThis as any)[GLOBAL_MERMAID_KEY] = instance\n }\n catch {\n // Ignore global cache writes when the host forbids mutation.\n }\n}\n\nfunction resetCachedMermaid() {\n cachedMermaid = null\n importAttempted = false\n lastInitKey = null\n pendingImport = null\n try {\n delete (globalThis as any)[GLOBAL_MERMAID_KEY]\n }\n catch {\n // Ignore failures when the global object is sealed.\n }\n}\n\nexport function setMermaidLoader(loader: MermaidLoader | null) {\n mermaidLoader = loader\n resetCachedMermaid()\n}\n\nexport function enableMermaid(loader?: MermaidLoader) {\n setMermaidLoader(loader ?? defaultMermaidLoader)\n}\n\nexport function disableMermaid() {\n setMermaidLoader(null)\n}\n\nexport function isMermaidEnabled() {\n return typeof mermaidLoader === 'function'\n}\n\nexport async function getMermaid(initConfig?: MermaidInitConfig): Promise<MermaidModule | null> {\n if (cachedMermaid) {\n ensureInitialized(cachedMermaid, initConfig)\n return cachedMermaid\n }\n\n const globalMermaid = getGlobalMermaid()\n if (globalMermaid) {\n patchInitialize(globalMermaid)\n cachedMermaid = globalMermaid\n setGlobalMermaid(cachedMermaid)\n ensureInitialized(cachedMermaid, initConfig)\n return cachedMermaid\n }\n\n if (pendingImport) {\n const instance = await pendingImport\n if (instance)\n ensureInitialized(instance, initConfig)\n return instance\n }\n\n if (importAttempted)\n return null\n\n const loader = mermaidLoader\n if (!loader) {\n importAttempted = true\n return null\n }\n\n pendingImport = (async () => {\n try {\n const mod = await loader()\n const instance = normalizeMermaidModule(mod)\n if (!instance) {\n importAttempted = true\n return null\n }\n patchInitialize(instance)\n cachedMermaid = instance\n setGlobalMermaid(cachedMermaid)\n return cachedMermaid\n }\n catch {\n importAttempted = true\n return null\n }\n })()\n\n try {\n const instance = await pendingImport\n if (instance)\n ensureInitialized(instance, initConfig)\n return instance\n }\n finally {\n pendingImport = null\n }\n}\n","import { isMermaidEnabled } from '../optional/mermaid'\n\ntype Theme = 'light' | 'dark'\n\nlet worker: Worker | null = null\nlet workerInitError: any = null\n\ninterface Pending {\n resolve: (value: any) => void\n reject: (error: any) => void\n}\n\nconst rpcMap = new Map<string, Pending>()\nlet maxConcurrency = 5\nlet debugClient = false\n\nexport function setMermaidWorkerClientDebug(enabled: boolean) {\n debugClient = !!enabled\n}\n\nexport function setMermaidWorkerMaxConcurrency(value: number) {\n if (Number.isFinite(value) && value > 0)\n maxConcurrency = Math.floor(value)\n}\n\nexport function getMermaidWorkerLoad() {\n return { inFlight: rpcMap.size, max: maxConcurrency }\n}\n\nexport const MERMAID_WORKER_BUSY_CODE = 'WORKER_BUSY'\nexport const MERMAID_DISABLED_CODE = 'MERMAID_DISABLED'\n\nexport function setMermaidWorker(nextWorker: Worker) {\n worker = nextWorker\n workerInitError = null\n const current = nextWorker\n\n worker.onmessage = (event: MessageEvent) => {\n if (worker !== current)\n return\n\n const { id, ok, result, error } = event.data || {}\n const active = rpcMap.get(id)\n if (!active)\n return\n\n if (ok === false || error)\n active.reject(new Error(error || 'Unknown error'))\n else\n active.resolve(result)\n }\n\n worker.onerror = (event: ErrorEvent) => {\n if (worker !== current)\n return\n if (rpcMap.size === 0) {\n console.debug?.('[markstream-angular:mermaidWorkerClient] Worker error (idle):', event?.message || event)\n return\n }\n try {\n if (debugClient)\n console.error('[markstream-angular:mermaidWorkerClient] Worker error:', event?.message || event)\n else\n console.debug?.('[markstream-angular:mermaidWorkerClient] Worker error:', event?.message || event)\n }\n catch {\n // Ignore logging failures.\n }\n for (const [, active] of rpcMap.entries())\n active.reject(new Error(`Worker error: ${event.message}`))\n rpcMap.clear()\n }\n\n ;(worker as any).onmessageerror = (event: MessageEvent) => {\n if (worker !== current)\n return\n if (rpcMap.size === 0) {\n console.debug?.('[markstream-angular:mermaidWorkerClient] Worker messageerror (idle):', event)\n return\n }\n for (const [, active] of rpcMap.entries())\n active.reject(new Error('Worker messageerror'))\n rpcMap.clear()\n }\n}\n\nexport function clearMermaidWorker() {\n if (worker) {\n try {\n for (const [, active] of rpcMap.entries())\n active.reject(new Error('Worker cleared'))\n rpcMap.clear()\n worker.terminate?.()\n }\n catch {\n // Ignore worker termination failures.\n }\n }\n worker = null\n workerInitError = null\n}\n\nfunction ensureWorker() {\n if (worker)\n return worker\n\n workerInitError = new Error('[markstream-angular:mermaidWorkerClient] No worker instance set. Please inject a Worker via setMermaidWorker().')\n ;(workerInitError as any).name = 'WorkerInitError'\n ;(workerInitError as any).code = 'WORKER_INIT_ERROR'\n return null\n}\n\nfunction callWorker<T>(action: 'canParse' | 'findPrefix', payload: any, timeout = 1400): Promise<T> {\n if (!isMermaidEnabled()) {\n const error: any = new Error('Mermaid rendering disabled')\n error.name = 'MermaidDisabled'\n error.code = MERMAID_DISABLED_CODE\n return Promise.reject(error)\n }\n\n if (workerInitError)\n return Promise.reject(workerInitError)\n\n const activeWorker = ensureWorker()\n if (!activeWorker)\n return Promise.reject(workerInitError)\n\n if (rpcMap.size >= maxConcurrency) {\n const error: any = new Error('Worker busy')\n error.name = 'WorkerBusy'\n error.code = MERMAID_WORKER_BUSY_CODE\n error.inFlight = rpcMap.size\n error.max = maxConcurrency\n return Promise.reject(error)\n }\n\n return new Promise<T>((resolve, reject) => {\n const id = Math.random().toString(36).slice(2)\n let settled = false\n let timeoutId: ReturnType<typeof setTimeout> | null = null\n\n const cleanup = () => {\n if (settled)\n return\n settled = true\n if (timeoutId != null)\n clearTimeout(timeoutId)\n rpcMap.delete(id)\n }\n\n rpcMap.set(id, {\n resolve: (value: any) => {\n cleanup()\n resolve(value)\n },\n reject: (error: any) => {\n cleanup()\n reject(error)\n },\n })\n\n try {\n activeWorker.postMessage({ id, action, payload })\n }\n catch (error) {\n rpcMap.delete(id)\n reject(error)\n return\n }\n\n timeoutId = setTimeout(() => {\n const error: any = new Error('Worker call timed out')\n error.name = 'WorkerTimeout'\n error.code = 'WORKER_TIMEOUT'\n const pending = rpcMap.get(id)\n pending?.reject(error)\n }, timeout)\n })\n}\n\nexport async function canParseOffthread(code: string, theme: Theme, timeout = 1400) {\n return await callWorker<boolean>('canParse', { code, theme }, timeout)\n}\n\nexport async function findPrefixOffthread(code: string, theme: Theme, timeout = 1400) {\n return await callWorker<string | null>('findPrefix', { code, theme }, timeout)\n}\n\nexport function terminateWorker() {\n if (worker) {\n try {\n for (const [, active] of rpcMap.entries())\n active.reject(new Error('Worker terminated'))\n rpcMap.clear()\n worker.terminate()\n }\n finally {\n worker = null\n }\n }\n}\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n inject,\n Input,\n ViewChild,\n} from '@angular/core'\nimport { toSafeMermaidSvgMarkup } from 'stream-markdown-parser'\nimport { getMermaid } from '../../optional/mermaid'\nimport { canParseOffthread, findPrefixOffthread } from '../../workers/mermaidWorkerClient'\nimport { clampPreviewHeight, estimateMermaidPreviewHeight, parsePositiveNumber } from '../shared/diagram-height'\nimport { getString } from '../shared/node-helpers'\nimport {\n clampNumber,\n copyTextToClipboard,\n downloadSvgMarkup,\n resolveCssSize,\n setElementHtml,\n} from '../shared/rich-block-helpers'\n\nlet mermaidRenderSequence = 0\nlet mermaidRenderQueue: Promise<void> = Promise.resolve()\n\ntype MermaidTheme = 'light' | 'dark'\ntype MermaidBindFunctions = (element: Element) => unknown\n\nfunction enqueueMermaidRender<T>(run: () => Promise<T>) {\n const next = mermaidRenderQueue.then(run, run)\n mermaidRenderQueue = next.then(() => undefined, () => undefined)\n return next\n}\n\n@Component({\n selector: 'markstream-angular-mermaid-block-node',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n class=\"mermaid-block\"\n [class.dark]=\"resolvedIsDark\"\n [attr.data-markstream-mermaid]=\"'1'\"\n [attr.data-mode]=\"showSource ? 'source' : 'preview'\"\n >\n <div *ngIf=\"resolvedShowHeader\" class=\"mermaid-header\">\n <div class=\"flex items-center gap-2 min-w-0\">\n <span class=\"markstream-angular-enhanced-block__badge\">Mermaid</span>\n <span class=\"mermaid-title__text truncate\">Diagram</span>\n </div>\n\n <div class=\"mermaid-actions\">\n <div *ngIf=\"resolvedShowModeToggle\" class=\"mermaid-toggle\" role=\"tablist\" aria-label=\"Mermaid mode\">\n <button\n type=\"button\"\n class=\"mermaid-toggle-btn\"\n [class.mermaid-toggle-btn--active]=\"!showSource\"\n [attr.aria-pressed]=\"!showSource\"\n (click)=\"setMode(false)\"\n >\n Preview\n </button>\n <button\n type=\"button\"\n class=\"mermaid-toggle-btn\"\n [class.mermaid-toggle-btn--active]=\"showSource\"\n [attr.aria-pressed]=\"showSource\"\n (click)=\"setMode(true)\"\n >\n Source\n </button>\n </div>\n\n <button\n *ngIf=\"resolvedShowCopyButton\"\n type=\"button\"\n class=\"mermaid-btn\"\n [attr.title]=\"tooltipFor(copied ? 'Copied' : 'Copy')\"\n (click)=\"copySource()\"\n >\n {{ copied ? 'Copied' : 'Copy' }}\n </button>\n\n <button\n *ngIf=\"resolvedShowExportButton\"\n type=\"button\"\n class=\"mermaid-btn\"\n [disabled]=\"!svgMarkup\"\n [attr.title]=\"tooltipFor('Export SVG')\"\n (click)=\"exportSvg()\"\n >\n Export\n </button>\n\n <button\n *ngIf=\"resolvedShowFullscreenButton\"\n type=\"button\"\n class=\"mermaid-btn\"\n [disabled]=\"!svgMarkup\"\n [attr.title]=\"tooltipFor('Fullscreen')\"\n (click)=\"openModal()\"\n >\n Fullscreen\n </button>\n\n <button\n *ngIf=\"resolvedShowCollapseButton\"\n type=\"button\"\n class=\"mermaid-btn\"\n [attr.title]=\"tooltipFor(collapsed ? 'Expand' : 'Collapse')\"\n (click)=\"toggleCollapsed()\"\n >\n {{ collapsed ? 'Expand' : 'Collapse' }}\n </button>\n\n <ng-container *ngIf=\"resolvedShowZoomControls && !showSource && !collapsed\">\n <button type=\"button\" class=\"mermaid-btn\" [attr.title]=\"tooltipFor('Zoom out')\" (click)=\"adjustZoom(-0.1)\">-</button>\n <button type=\"button\" class=\"mermaid-btn\" [attr.title]=\"tooltipFor('Reset zoom')\" (click)=\"resetZoom()\">100%</button>\n <button type=\"button\" class=\"mermaid-btn\" [attr.title]=\"tooltipFor('Zoom in')\" (click)=\"adjustZoom(0.1)\">+</button>\n </ng-container>\n </div>\n </div>\n\n <div *ngIf=\"!collapsed\" class=\"mermaid-body\">\n <div *ngIf=\"rendering && !showSource\" class=\"mermaid-loading\">\n <span class=\"mermaid-spinner\" aria-hidden=\"true\"></span>\n <span>Rendering Mermaid...</span>\n </div>\n\n <div\n *ngIf=\"!showSource\"\n class=\"mermaid-preview\"\n [style.maxHeight]=\"resolvedMaxHeight\"\n [style.minHeight.px]=\"estimatedPreviewHeightPx\"\n [style.height.px]=\"estimatedPreviewHeightPx\"\n [style.transform]=\"previewTransform\"\n >\n <div #previewHost class=\"markstream-angular-mermaid\" [class.is-empty]=\"!svgMarkup\"></div>\n </div>\n\n <pre *ngIf=\"showSource\" class=\"mermaid-source\"><code translate=\"no\">{{ code }}</code></pre>\n\n <div *ngIf=\"error\" class=\"mermaid-error\">{{ error }}</div>\n </div>\n\n <span class=\"sr-only\" aria-live=\"polite\" role=\"status\">{{ copied ? 'Copied' : '' }}</span>\n </div>\n\n <div\n *ngIf=\"modalOpen\"\n class=\"mermaid-modal-overlay\"\n role=\"dialog\"\n aria-modal=\"true\"\n (click)=\"closeModal()\"\n >\n <div\n class=\"mermaid-modal-panel\"\n [class.is-dark]=\"resolvedIsDark\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"mermaid-modal-header\">\n <span class=\"mermaid-modal-title\">Mermaid Preview</span>\n <button type=\"button\" class=\"mermaid-modal-close\" (click)=\"closeModal()\">Close</button>\n </div>\n <div class=\"mermaid-modal-body\">\n <div\n class=\"mermaid-modal-content\"\n [style.transform]=\"modalTransform\"\n (wheel)=\"handleModalWheel($event)\"\n >\n <div #modalHost class=\"markstream-angular-mermaid fullscreen\"></div>\n </div>\n </div>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MermaidBlockNodeComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n\n @ViewChild('previewHost') private previewHost?: ElementRef<HTMLElement>\n @ViewChild('modalHost') private modalHost?: ElementRef<HTMLElement>\n\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() props?: Record<string, any>\n\n rendering = false\n copied = false\n collapsed = false\n showSource = false\n modalOpen = false\n zoom = 1\n svgMarkup = ''\n error = ''\n\n private viewReady = false\n private destroyed = false\n private renderToken = 0\n private copyTimer: number | null = null\n private lastMermaidBindFunctions: MermaidBindFunctions | null = null\n\n get mergedProps() {\n return {\n ...(this.context?.mermaidProps || {}),\n ...(this.props || {}),\n }\n }\n\n get code() {\n return getString((this.node as any)?.code)\n .replace(/\\]::([^:])/g, ']:::$1')\n .replace(/:::subgraphNode$/gm, '::subgraphNode')\n }\n\n get resolvedIsDark() {\n if (typeof this.mergedProps.isDark === 'boolean')\n return this.mergedProps.isDark\n return this.context?.isDark === true\n }\n\n get resolvedShowHeader() {\n return this.mergedProps.showHeader !== false\n }\n\n get resolvedShowModeToggle() {\n return this.mergedProps.showModeToggle !== false\n }\n\n get resolvedShowCopyButton() {\n return this.mergedProps.showCopyButton !== false\n }\n\n get resolvedShowExportButton() {\n return this.mergedProps.showExportButton !== false\n }\n\n get resolvedShowFullscreenButton() {\n return this.mergedProps.showFullscreenButton !== false\n }\n\n get resolvedShowCollapseButton() {\n return this.mergedProps.showCollapseButton !== false\n }\n\n get resolvedShowZoomControls() {\n return this.mergedProps.showZoomControls !== false\n }\n\n get resolvedShowTooltips() {\n if (typeof this.mergedProps.showTooltips === 'boolean')\n return this.mergedProps.showTooltips\n return this.context?.showTooltips !== false\n }\n\n get resolvedMaxHeight() {\n return resolveCssSize(this.mergedProps.maxHeight, '500px')\n }\n\n get estimatedPreviewHeightPx() {\n return clampPreviewHeight(\n parsePositiveNumber(this.mergedProps.estimatedPreviewHeightPx) ?? estimateMermaidPreviewHeight(this.code),\n undefined,\n this.maxPreviewHeight,\n )\n }\n\n private get maxPreviewHeight() {\n if (this.mergedProps.maxHeight == null || this.mergedProps.maxHeight === 'none')\n return this.mergedProps.maxHeight === 'none' ? null : 500\n return parsePositiveNumber(this.mergedProps.maxHeight) ?? 500\n }\n\n get resolvedWorkerTimeout() {\n return clampNumber(Number(this.mergedProps.workerTimeoutMs ?? 1400), 200, 10_000)\n }\n\n get resolvedParseTimeout() {\n return clampNumber(Number(this.mergedProps.parseTimeoutMs ?? 1800), 200, 10_000)\n }\n\n get resolvedRenderTimeout() {\n return clampNumber(Number(this.mergedProps.renderTimeoutMs ?? 2500), 200, 15_000)\n }\n\n get resolvedFullRenderTimeout() {\n return clampNumber(Number(this.mergedProps.fullRenderTimeoutMs ?? 4000), 200, 20_000)\n }\n\n get strictMode() {\n return this.mergedProps.isStrict !== false\n }\n\n get resolvedLoading() {\n if (typeof this.mergedProps.loading === 'boolean')\n return this.mergedProps.loading\n return (this.node as any)?.loading === true\n }\n\n get resolvedProgressiveRender() {\n return this.mergedProps.progressiveRender === true\n }\n\n get previewTransform() {\n return `scale(${this.zoom})`\n }\n\n get modalTransform() {\n return `scale(${Math.max(1, this.zoom)})`\n }\n\n ngAfterViewInit() {\n this.viewReady = true\n queueMicrotask(() => void this.renderDiagram())\n }\n\n ngOnChanges() {\n if (!this.viewReady)\n return\n queueMicrotask(() => void this.renderDiagram())\n }\n\n ngOnDestroy() {\n this.destroyed = true\n this.renderToken += 1\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n }\n\n @HostListener('window:keydown', ['$event'])\n handleWindowKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.modalOpen)\n this.closeModal()\n }\n\n tooltipFor(text: string) {\n return this.resolvedShowTooltips ? text : null\n }\n\n setMode(nextSource: boolean) {\n this.showSource = nextSource\n if (!nextSource)\n this.scheduleHostSync()\n this.cdr.markForCheck()\n }\n\n async copySource() {\n await copyTextToClipboard(this.code)\n this.copied = true\n this.context?.events.onCopy?.(this.code)\n if (this.copyTimer != null && typeof window !== 'undefined')\n window.clearTimeout(this.copyTimer)\n if (typeof window !== 'undefined') {\n this.copyTimer = window.setTimeout(() => {\n this.copied = false\n this.cdr.markForCheck()\n }, 1000)\n }\n this.cdr.markForCheck()\n }\n\n exportSvg() {\n if (!this.svgMarkup)\n return\n downloadSvgMarkup(this.svgMarkup, `mermaid-${Date.now()}.svg`)\n }\n\n openModal() {\n if (!this.svgMarkup)\n return\n this.modalOpen = true\n if (typeof document !== 'undefined')\n document.body.style.overflow = 'hidden'\n queueMicrotask(() => this.syncSvgHosts())\n this.cdr.markForCheck()\n }\n\n closeModal() {\n this.modalOpen = false\n if (typeof document !== 'undefined')\n document.body.style.overflow = ''\n this.cdr.markForCheck()\n }\n\n toggleCollapsed() {\n this.collapsed = !this.collapsed\n if (!this.collapsed)\n queueMicrotask(() => void this.renderDiagram())\n this.cdr.markForCheck()\n }\n\n adjustZoom(delta: number) {\n this.zoom = clampNumber(Number((this.zoom + delta).toFixed(2)), 0.4, 2.5)\n this.cdr.markForCheck()\n }\n\n resetZoom() {\n this.zoom = 1\n this.cdr.markForCheck()\n }\n\n handleModalWheel(event: WheelEvent) {\n if (this.mergedProps.enableWheelZoom !== true)\n return\n event.preventDefault()\n this.adjustZoom(event.deltaY > 0 ? -0.08 : 0.08)\n }\n\n private async renderDiagram() {\n if (this.destroyed || !this.viewReady || this.collapsed)\n return\n\n const source = this.code.trim()\n if (!source) {\n this.svgMarkup = ''\n this.error = ''\n this.syncSvgHosts()\n this.cdr.markForCheck()\n return\n }\n\n if (this.resolvedLoading && !this.resolvedProgressiveRender) {\n this.renderToken += 1\n this.rendering = true\n this.error = ''\n this.svgMarkup = ''\n this.syncSvgHosts()\n this.cdr.markForCheck()\n return\n }\n\n const token = ++this.renderToken\n this.rendering = true\n this.error = ''\n this.cdr.markForCheck()\n\n try {\n const mermaid = await getMermaid(this.strictMode\n ? {\n startOnLoad: false,\n securityLevel: 'strict',\n suppressErrorRendering: true,\n flowchart: { htmlLabels: false },\n }\n : {\n startOnLoad: false,\n securityLevel: 'loose',\n suppressErrorRendering: true,\n })\n\n if (!mermaid)\n throw new Error('Mermaid renderer is not available.')\n\n const theme: MermaidTheme = this.resolvedIsDark ? 'dark' : 'light'\n let renderSource = source\n if (this.resolvedLoading && this.resolvedProgressiveRender) {\n try {\n const res = await this.canParseOrPrefix(source, theme, mermaid, token)\n if (this.destroyed || token !== this.renderToken)\n return\n if (!res.fullOk && !res.prefix) {\n this.rendering = false\n this.cdr.markForCheck()\n return\n }\n if (res.prefix)\n renderSource = res.prefix\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n return\n this.rendering = false\n this.cdr.markForCheck()\n return\n }\n }\n\n const renderId = `markstream-angular-mermaid-${++mermaidRenderSequence}`\n const themedSource = this.applyThemeTo(renderSource, theme)\n const rendered = await enqueueMermaidRender(() => this.withTimeout(\n () => Promise.resolve(mermaid.render(renderId, themedSource)),\n this.resolvedLoading && this.resolvedProgressiveRender\n ? this.resolvedRenderTimeout\n : this.resolvedFullRenderTimeout,\n ))\n if (this.destroyed || token !== this.renderToken)\n return\n\n const svg = typeof rendered === 'string' ? rendered : rendered?.svg\n const safeSvg = toSafeMermaidSvgMarkup(svg)\n if (!safeSvg)\n throw new Error('Mermaid produced invalid SVG during preview')\n\n this.svgMarkup = safeSvg\n this.lastMermaidBindFunctions = typeof rendered === 'string' ? null : rendered?.bindFunctions ?? null\n if (!this.svgMarkup)\n this.showSource = true\n this.syncSvgHosts()\n }\n catch (error) {\n if (this.destroyed || token !== this.renderToken)\n return\n if (this.resolvedLoading && this.resolvedProgressiveRender) {\n this.svgMarkup = ''\n this.syncSvgHosts()\n return\n }\n // Allow consumer to handle the error via onRenderError callback\n const onRenderError = this.mergedProps.onRenderError\n if (typeof onRenderError === 'function' && this.previewHost?.nativeElement) {\n const handled = onRenderError(error, this.code, this.previewHost.nativeElement)\n if (handled === true) {\n this.svgMarkup = ''\n return\n }\n }\n this.svgMarkup = ''\n this.showSource = true\n this.error = error instanceof Error ? error.message : 'Failed to render Mermaid diagram.'\n this.syncSvgHosts()\n }\n finally {\n if (token === this.renderToken) {\n this.rendering = false\n this.cdr.markForCheck()\n }\n }\n }\n\n private syncSvgHosts() {\n setElementHtml(this.previewHost?.nativeElement, this.svgMarkup)\n if (this.modalOpen)\n setElementHtml(this.modalHost?.nativeElement, this.svgMarkup)\n else\n setElementHtml(this.modalHost?.nativeElement, '')\n this.bindMermaidInteractions(this.previewHost?.nativeElement)\n if (this.modalOpen)\n this.bindMermaidInteractions(this.modalHost?.nativeElement)\n }\n\n private bindMermaidInteractions(element: Element | null | undefined) {\n if (this.mergedProps.enableMermaidInteractions !== true || !this.svgMarkup || !element?.querySelector('svg'))\n return\n try {\n this.lastMermaidBindFunctions?.(element)\n }\n catch {}\n }\n\n private scheduleHostSync() {\n if (typeof window !== 'undefined') {\n window.setTimeout(() => {\n if (this.destroyed)\n return\n this.syncSvgHosts()\n this.cdr.markForCheck()\n }, 0)\n return\n }\n queueMicrotask(() => this.syncSvgHosts())\n }\n\n private async canParseWithFallback(source: string, theme: MermaidTheme, mermaid: any, token: number) {\n try {\n const canParse = await canParseOffthread(source, theme, this.resolvedWorkerTimeout)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n if (canParse)\n return true\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n throw error\n }\n\n const themedSource = this.applyThemeTo(source, theme)\n const anyMermaid = mermaid as any\n if (typeof anyMermaid.parse === 'function') {\n await this.withTimeout(() => Promise.resolve(anyMermaid.parse(themedSource)), this.resolvedParseTimeout)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n return true\n }\n\n const renderId = `markstream-angular-mermaid-parse-${++mermaidRenderSequence}`\n await this.withTimeout(() => Promise.resolve(anyMermaid.render(renderId, themedSource)), this.resolvedParseTimeout)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n return true\n }\n\n private async canParseOrPrefix(source: string, theme: MermaidTheme, mermaid: any, token: number) {\n if (this.getMermaidDiagramKind(source) === 'gantt') {\n const prefix = this.getSafePrefixCandidate(source)\n if (!prefix.trim())\n return { fullOk: false, prefix: '' }\n await this.canParseWithFallback(prefix, theme, mermaid, token)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n return prefix === source ? { fullOk: true, prefix: '' } : { fullOk: false, prefix }\n }\n\n try {\n await this.canParseWithFallback(source, theme, mermaid, token)\n return { fullOk: true, prefix: '' }\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n throw error\n }\n\n const prefix = await this.findPrefixCandidate(source, theme, token)\n if (!prefix)\n return { fullOk: false, prefix: '' }\n await this.canParseWithFallback(prefix, theme, mermaid, token)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n return { fullOk: false, prefix }\n }\n\n private async findPrefixCandidate(source: string, theme: MermaidTheme, token: number) {\n try {\n const prefix = await findPrefixOffthread(source, theme, this.resolvedWorkerTimeout)\n if (this.destroyed || token !== this.renderToken)\n throw new DOMException('Aborted', 'AbortError')\n if (prefix)\n return prefix\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n throw error\n }\n\n return this.getSafePrefixCandidate(source)\n }\n\n private applyThemeTo(source: string, theme: MermaidTheme) {\n const trimmed = source.trimStart()\n if (trimmed.startsWith('%%{'))\n return source\n const themeValue = theme === 'dark' ? 'dark' : 'default'\n return `%%{init: {\"theme\": \"${themeValue}\"}}%%\\n${source}`\n }\n\n private getMermaidDiagramKind(source: string) {\n for (const rawLine of source.split(/\\r?\\n/)) {\n const line = rawLine.trim()\n if (!line || line.startsWith('%%'))\n continue\n const match = line.match(/^([A-Z][\\w-]*)\\b/i)\n return match?.[1]?.toLowerCase() || ''\n }\n return ''\n }\n\n private isGanttTaskLine(rawLine: string) {\n const line = rawLine.trim()\n if (!line || line.startsWith('%%'))\n return false\n if (/^(?:gantt|title|dateformat|axisformat|tickinterval|excludes|section|todaymarker|topaxis|weekday|weekend|acctitle|accdescr|accdescrmultiline)\\b/i.test(line))\n return false\n return line.includes(':')\n }\n\n private getSafeGanttPreviewCandidate(source: string) {\n const lines = source.split(/\\r?\\n/)\n if (!/\\r?\\n$/.test(source) && lines.length > 0)\n lines.pop()\n while (lines.length > 0) {\n const last = lines[lines.length - 1]?.trim()\n if (!last || last.startsWith('%%')) {\n lines.pop()\n continue\n }\n if (this.isGanttTaskLine(last))\n break\n lines.pop()\n }\n return lines.some(line => this.isGanttTaskLine(line)) ? lines.join('\\n') : ''\n }\n\n private getSafePrefixCandidate(source: string) {\n if (this.getMermaidDiagramKind(source) === 'gantt')\n return this.getSafeGanttPreviewCandidate(source)\n const lines = source.split('\\n')\n while (lines.length > 0) {\n const lastRaw = lines[lines.length - 1]\n const last = lastRaw.trimEnd()\n if (!last) {\n lines.pop()\n continue\n }\n\n const looksDangling = /^[-=~>|<\\s]+$/.test(last.trim())\n || /(?:--|==|~~|->|<-|-\\||-\\)|-x|o-|\\|-|\\.-)\\s*$/.test(last)\n || /[-|><]$/.test(last)\n || /(?:graph|flowchart|sequenceDiagram|classDiagram|stateDiagram|erDiagram|gantt)\\s*$/i.test(last)\n if (!looksDangling)\n break\n\n lines.pop()\n }\n return lines.join('\\n')\n }\n\n private withTimeout<T>(run: () => Promise<T>, timeoutMs: number) {\n return new Promise<T>((resolve, reject) => {\n let settled = false\n const timer = typeof window !== 'undefined'\n ? window.setTimeout(() => {\n if (settled)\n return\n settled = true\n reject(new Error('Operation timed out'))\n }, timeoutMs)\n : null\n\n run()\n .then((value) => {\n if (settled)\n return\n settled = true\n if (timer != null && typeof window !== 'undefined')\n window.clearTimeout(timer)\n resolve(value)\n })\n .catch((error) => {\n if (settled)\n return\n settled = true\n if (timer != null && typeof window !== 'undefined')\n window.clearTimeout(timer)\n reject(error)\n })\n })\n }\n}\n","import type { OnChanges } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { NodeOutletComponent } from '../NodeOutlet/NodeOutlet.component'\nimport {\n getNodeList,\n getString,\n isMediaOnlyParagraphNodes,\n isWhitespaceTextNode,\n normalizeMediaOnlyParagraphNodes,\n splitParagraphChildren,\n} from '../shared/node-helpers'\n\ntype ParagraphSegment\n = | { kind: 'inline', nodes: AngularRenderableNode[], mediaOnly: boolean }\n | { kind: 'block', node: AngularRenderableNode }\n\n@Component({\n selector: 'markstream-angular-paragraph-node',\n standalone: true,\n imports: [\n CommonModule,\n forwardRef(() => NestedRendererComponent),\n forwardRef(() => NodeOutletComponent),\n ],\n template: `\n <ng-container *ngIf=\"segments.length > 0; else simpleParagraph\">\n <ng-container *ngFor=\"let segment of segments; let idx = index; trackBy: trackByIndex\">\n <p *ngIf=\"segment.kind === 'inline'; else blockSegment\" dir=\"auto\" class=\"paragraph-node\">\n <ng-container *ngIf=\"$any(segment).mediaOnly; else nestedInline\">\n <ng-container *ngFor=\"let child of $any(segment).nodes; let childIdx = index; trackBy: trackByChildIndex\">\n <ng-container *ngIf=\"isWhitespaceText(child); else inlineNode\">{{ getTextContent(child) }}</ng-container>\n\n <ng-template #inlineNode>\n <markstream-angular-node-outlet\n [node]=\"child\"\n [context]=\"context\"\n [indexKey]=\"childPrefix(idx, childIdx)\"\n />\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-template #nestedInline>\n <markstream-angular-nested-renderer\n [nodes]=\"$any(segment).nodes\"\n [context]=\"context\"\n [indexPrefix]=\"segmentPrefix(idx)\"\n />\n </ng-template>\n </p>\n\n <ng-template #blockSegment>\n <markstream-angular-node-outlet\n [node]=\"$any(segment).node\"\n [context]=\"context\"\n [indexKey]=\"segmentPrefix(idx)\"\n />\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-template #simpleParagraph>\n <p dir=\"auto\" class=\"paragraph-node\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"indexKey || 'paragraph'\"\n />\n </p>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParagraphNodeComponent implements OnChanges {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n segments: ParagraphSegment[] = []\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n ngOnChanges() {\n this.segments = splitParagraphChildren(this.children).map((segment) => {\n if (segment.kind === 'block')\n return segment\n\n const mediaOnly = isMediaOnlyParagraphNodes(segment.nodes)\n return {\n kind: 'inline',\n nodes: mediaOnly ? normalizeMediaOnlyParagraphNodes(segment.nodes) : segment.nodes,\n mediaOnly,\n }\n })\n }\n\n trackByIndex = (index: number) => {\n return `${this.indexKey || 'paragraph'}-${index}`\n }\n\n trackByChildIndex = (index: number) => {\n return index\n }\n\n segmentPrefix(index: number) {\n return `${this.indexKey || 'paragraph'}-${index}`\n }\n\n childPrefix(segmentIndex: number, childIndex: number) {\n return `${this.segmentPrefix(segmentIndex)}-${childIndex}`\n }\n\n isWhitespaceText(node: AngularRenderableNode) {\n return isWhitespaceTextNode(node)\n }\n\n getTextContent(node: AngularRenderableNode) {\n return getString((node as any)?.content)\n }\n}\n","import type { AngularRenderableNode } from '../shared/node-helpers'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-reference-node',\n standalone: true,\n template: '<span class=\"markstream-nested-reference\">{{ id }}</span>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ReferenceNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n\n get id() {\n return getString((this.node as any)?.id)\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from './node-helpers'\nimport { clampPreviewHeight, estimateInfographicPreviewHeight, estimateMermaidPreviewHeight, parsePositiveNumber } from './diagram-height'\nimport { getHtmlTagFromContent, resolveCodeBlockLanguage, stripCustomHtmlWrapper } from './node-helpers'\n\nexport type CodeBlockMode = 'mermaid' | 'd2' | 'infographic' | 'pre' | 'code'\n\nexport function resolveNodeOutletCodeMode(\n node: AngularRenderableNode,\n context?: AngularRenderContext,\n): CodeBlockMode {\n if (context?.renderCodeBlocksAsPre)\n return 'pre'\n\n const language = resolveCodeBlockLanguage(node)\n if (language === 'd2' || language === 'd2lang')\n return 'd2'\n if (language === 'infographic')\n return 'infographic'\n if (language === 'mermaid')\n return 'mermaid'\n return 'code'\n}\n\nexport function resolveHtmlTag(node: AngularRenderableNode) {\n return String((node as any)?.tag || '').trim().toLowerCase() || getHtmlTagFromContent((node as any)?.content)\n}\n\nexport function coerceCustomHtmlNode(node: AngularRenderableNode) {\n const tag = resolveHtmlTag(node)\n if (!tag)\n return node\n return {\n ...(node as any),\n type: tag,\n tag,\n content: stripCustomHtmlWrapper((node as any)?.content, tag),\n } as AngularRenderableNode\n}\n\nexport function coerceBuiltinHtmlNode(node: AngularRenderableNode, resolvedType: string) {\n const tag = resolveHtmlTag(node)\n if (!tag)\n return node\n return {\n ...(node as any),\n type: resolvedType,\n tag,\n } as AngularRenderableNode\n}\n\nexport function resolveNodeOutletCustomInputs(\n node: AngularRenderableNode,\n context?: AngularRenderContext,\n) {\n if (String((node as any)?.type || '') !== 'code_block')\n return null\n\n const codeMode = resolveNodeOutletCodeMode(node, context)\n if (codeMode === 'mermaid') {\n return withEstimatedPreviewHeight(\n context?.mermaidProps,\n estimateMermaidPreviewHeight(getNodeCode(node)),\n )\n }\n if (codeMode === 'd2')\n return context?.d2Props ?? null\n if (codeMode === 'infographic') {\n return withEstimatedPreviewHeight(\n context?.infographicProps,\n estimateInfographicPreviewHeight(getNodeCode(node)),\n )\n }\n return context?.codeBlockProps ?? null\n}\n\nfunction getNodeCode(node: AngularRenderableNode) {\n return String((node as any)?.code ?? '')\n}\n\nfunction withEstimatedPreviewHeight(props: Record<string, any> | null | undefined, estimatedHeight: number) {\n const next = { ...(props || {}) }\n if (parsePositiveNumber(next.estimatedPreviewHeightPx) == null) {\n next.estimatedPreviewHeightPx = clampPreviewHeight(\n estimatedHeight,\n undefined,\n next.maxHeight === 'none' ? null : (parsePositiveNumber(next.maxHeight) ?? undefined),\n )\n }\n return next\n}\n\nexport function resolveNodeOutletCustomComponent(\n node: AngularRenderableNode,\n context?: AngularRenderContext,\n customComponents?: Record<string, any> | null,\n) {\n const mapping = customComponents ?? context?.customComponents ?? null\n const resolvedType = String((node as any)?.type || '')\n\n if (resolvedType === 'code_block') {\n const language = resolveCodeBlockLanguage(node)\n const customForLanguage = language ? mapping?.[language] : null\n if (customForLanguage)\n return customForLanguage\n\n const codeMode = resolveNodeOutletCodeMode(node, context)\n if (codeMode === 'mermaid' && mapping?.mermaid)\n return mapping.mermaid\n if (codeMode === 'd2' && mapping?.d2)\n return mapping.d2\n if (codeMode === 'infographic' && mapping?.infographic)\n return mapping.infographic\n if (mapping?.code_block)\n return mapping.code_block\n }\n\n const direct = mapping?.[resolvedType]\n if (direct)\n return direct\n\n const tag = resolveHtmlTag(node)\n if (tag && mapping?.[tag])\n return mapping[tag]\n\n return null\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-strikethrough-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <del>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </del>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StrikethroughNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'strikethrough'}-strike`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-strong-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <strong>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </strong>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StrongNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'strong'}-strong`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-subscript-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <sub>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </sub>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SubscriptNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'subscript'}-sub`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-superscript-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <sup>\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </sup>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SuperscriptNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'superscript'}-sup`\n }\n}\n","import type { ElementRef, OnDestroy } from '@angular/core'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, inject, Input, ViewChild } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList, getString } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-table-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <table #tableElement>\n <colgroup *ngIf=\"columnWidths.length > 0\">\n <col\n *ngFor=\"let cell of headerCells; let cellIndex = index; trackBy: trackCell\"\n [style.width.px]=\"columnWidths[cellIndex] || null\"\n >\n </colgroup>\n <thead *ngIf=\"headerRow\">\n <tr>\n <ng-container *ngFor=\"let cell of headerCells; let cellIndex = index; trackBy: trackCell\">\n <th [style.text-align]=\"alignment(cell) || null\">\n <markstream-angular-nested-renderer\n [nodes]=\"childrenFor(cell)\"\n [context]=\"context\"\n [indexPrefix]=\"cellPrefix('head', cellIndex)\"\n />\n <button\n *ngIf=\"cellIndex < headerCells.length - 1\"\n type=\"button\"\n class=\"table-node__resize-handle\"\n [attr.aria-label]=\"'Resize columns ' + (cellIndex + 1) + ' and ' + (cellIndex + 2)\"\n (pointerdown)=\"startColumnResize(cellIndex, $event)\"\n ></button>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows; let rowIndex = index; trackBy: trackRow\">\n <ng-container *ngFor=\"let cell of cellsFor(row); let cellIndex = index; trackBy: trackCell\">\n <td [style.text-align]=\"alignment(cell) || null\">\n <markstream-angular-nested-renderer\n [nodes]=\"childrenFor(cell)\"\n [context]=\"context\"\n [indexPrefix]=\"cellPrefix(rowIndex, cellIndex)\"\n />\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableNodeComponent implements OnDestroy {\n @ViewChild('tableElement') tableElement?: ElementRef<HTMLTableElement>\n\n private readonly cdr = inject(ChangeDetectorRef)\n private currentHeaderCellCount = 0\n private readonly minColumnWidth = 48\n private resizeState: {\n index: number\n startX: number\n startWidth: number\n nextStartWidth: number\n widths: number[]\n } | null = null\n\n columnWidths: number[] = []\n\n private _node!: AngularRenderableNode\n\n @Input({ required: true })\n set node(value: AngularRenderableNode) {\n this._node = value\n const count = this.headerCells.length\n if (count !== this.currentHeaderCellCount) {\n this.stopColumnResize()\n this.columnWidths = []\n this.currentHeaderCellCount = count\n }\n }\n\n get node() {\n return this._node\n }\n\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get headerRow() {\n const row = (this.node as any)?.header\n return row && typeof row === 'object' ? row as AngularRenderableNode : null\n }\n\n get headerCells() {\n return this.headerRow ? this.cellsFor(this.headerRow) : []\n }\n\n get rows() {\n return getNodeList((this.node as any)?.rows)\n }\n\n cellsFor(row: AngularRenderableNode) {\n return getNodeList((row as any)?.cells)\n }\n\n childrenFor(cell: AngularRenderableNode) {\n return getNodeList((cell as any)?.children)\n }\n\n alignment(cell: AngularRenderableNode) {\n return getString((cell as any)?.align)\n }\n\n trackRow = (index: number) => {\n return `${this.indexKey || 'table'}-row-${index}`\n }\n\n trackCell = (index: number) => {\n return index\n }\n\n cellPrefix(rowIndex: string | number, cellIndex: number) {\n return `${this.indexKey || 'table'}-${rowIndex}-${cellIndex}`\n }\n\n startColumnResize(index: number, event: PointerEvent) {\n if (event.button !== 0)\n return\n\n const widths = this.measureHeaderWidths()\n const startWidth = widths[index]\n const nextStartWidth = widths[index + 1]\n if (!startWidth || !nextStartWidth)\n return\n\n event.preventDefault()\n this.stopColumnResize()\n\n this.resizeState = {\n index,\n startX: event.clientX,\n startWidth,\n nextStartWidth,\n widths,\n }\n this.columnWidths = widths\n this.cdr.markForCheck()\n\n window.addEventListener('pointermove', this.onColumnResizeMove)\n window.addEventListener('pointerup', this.stopColumnResize)\n window.addEventListener('pointercancel', this.stopColumnResize)\n }\n\n ngOnDestroy() {\n this.stopColumnResize()\n }\n\n private measureHeaderWidths() {\n const cells = this.tableElement?.nativeElement.querySelectorAll('thead th')\n return Array.from(cells ?? [], cell => Math.round(cell.getBoundingClientRect().width))\n }\n\n private onColumnResizeMove = (event: PointerEvent) => {\n if (!this.resizeState)\n return\n\n event.preventDefault()\n\n const pairWidth = this.resizeState.startWidth + this.resizeState.nextStartWidth\n const minWidth = Math.min(this.minColumnWidth, Math.floor(pairWidth / 2))\n const width = Math.max(\n minWidth,\n Math.min(pairWidth - minWidth, Math.round(this.resizeState.startWidth + event.clientX - this.resizeState.startX)),\n )\n const nextWidths = [...this.resizeState.widths]\n nextWidths[this.resizeState.index] = width\n nextWidths[this.resizeState.index + 1] = pairWidth - width\n this.columnWidths = nextWidths\n this.cdr.markForCheck()\n }\n\n private stopColumnResize = () => {\n if (!this.resizeState)\n return\n\n window.removeEventListener('pointermove', this.onColumnResizeMove)\n window.removeEventListener('pointerup', this.stopColumnResize)\n window.removeEventListener('pointercancel', this.stopColumnResize)\n this.resizeState = null\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'markstream-angular-thematic-break-node',\n standalone: true,\n template: '<hr>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ThematicBreakNodeComponent {}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { getNodeList } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-vmr-container-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <div class=\"markstream-angular-vmr-container\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VmrContainerNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'vmr'}-container`\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { STANDARD_HTML_TAGS } from 'stream-markdown-parser'\nimport { getCustomNodeComponents } from '../../customComponents'\nimport { AdmonitionNodeComponent } from '../AdmonitionNode/AdmonitionNode.component'\nimport { BlockquoteNodeComponent } from '../BlockquoteNode/BlockquoteNode.component'\nimport { CheckboxNodeComponent } from '../CheckboxNode/CheckboxNode.component'\nimport { CodeBlockNodeComponent } from '../CodeBlockNode/CodeBlockNode.component'\nimport { D2BlockNodeComponent } from '../D2BlockNode/D2BlockNode.component'\nimport { DefinitionListNodeComponent } from '../DefinitionListNode/DefinitionListNode.component'\nimport { DynamicNodeHostComponent } from '../DynamicNodeHost/DynamicNodeHost.component'\nimport { EmojiNodeComponent } from '../EmojiNode/EmojiNode.component'\nimport { EmphasisNodeComponent } from '../EmphasisNode/EmphasisNode.component'\nimport { FallbackComponent } from '../FallbackComponent/FallbackComponent.component'\nimport { FootnoteAnchorNodeComponent } from '../FootnoteAnchorNode/FootnoteAnchorNode.component'\nimport { FootnoteNodeComponent } from '../FootnoteNode/FootnoteNode.component'\nimport { FootnoteReferenceNodeComponent } from '../FootnoteReferenceNode/FootnoteReferenceNode.component'\nimport { HardBreakNodeComponent } from '../HardBreakNode/HardBreakNode.component'\nimport { HeadingNodeComponent } from '../HeadingNode/HeadingNode.component'\nimport { HighlightNodeComponent } from '../HighlightNode/HighlightNode.component'\nimport { HtmlBlockNodeComponent } from '../HtmlBlockNode/HtmlBlockNode.component'\nimport { HtmlInlineNodeComponent } from '../HtmlInlineNode/HtmlInlineNode.component'\nimport { ImageNodeComponent } from '../ImageNode/ImageNode.component'\nimport { InfographicBlockNodeComponent } from '../InfographicBlockNode/InfographicBlockNode.component'\nimport { InlineCodeNodeComponent } from '../InlineCodeNode/InlineCodeNode.component'\nimport { InsertNodeComponent } from '../InsertNode/InsertNode.component'\nimport { LinkNodeComponent } from '../LinkNode/LinkNode.component'\nimport { ListItemNodeComponent } from '../ListItemNode/ListItemNode.component'\nimport { ListNodeComponent } from '../ListNode/ListNode.component'\nimport { MathBlockNodeComponent } from '../MathBlockNode/MathBlockNode.component'\nimport { MathInlineNodeComponent } from '../MathInlineNode/MathInlineNode.component'\nimport { MermaidBlockNodeComponent } from '../MermaidBlockNode/MermaidBlockNode.component'\nimport { ParagraphNodeComponent } from '../ParagraphNode/ParagraphNode.component'\nimport { PreCodeNodeComponent } from '../PreCodeNode/PreCodeNode.component'\nimport { ReferenceNodeComponent } from '../ReferenceNode/ReferenceNode.component'\nimport { hasCompleteHtmlTagContent } from '../shared/node-helpers'\nimport {\n coerceBuiltinHtmlNode,\n coerceCustomHtmlNode,\n resolveHtmlTag,\n resolveNodeOutletCodeMode,\n resolveNodeOutletCustomComponent,\n resolveNodeOutletCustomInputs,\n} from '../shared/node-outlet-helpers'\nimport { StrikethroughNodeComponent } from '../StrikethroughNode/StrikethroughNode.component'\nimport { StrongNodeComponent } from '../StrongNode/StrongNode.component'\nimport { SubscriptNodeComponent } from '../SubscriptNode/SubscriptNode.component'\nimport { SuperscriptNodeComponent } from '../SuperscriptNode/SuperscriptNode.component'\nimport { TableNodeComponent } from '../TableNode/TableNode.component'\nimport { TextNodeComponent } from '../TextNode/TextNode.component'\nimport { ThematicBreakNodeComponent } from '../ThematicBreakNode/ThematicBreakNode.component'\nimport { VmrContainerNodeComponent } from '../VmrContainerNode/VmrContainerNode.component'\n\n@Component({\n selector: 'markstream-angular-node-outlet',\n standalone: true,\n imports: [\n CommonModule,\n forwardRef(() => AdmonitionNodeComponent),\n forwardRef(() => BlockquoteNodeComponent),\n forwardRef(() => CheckboxNodeComponent),\n forwardRef(() => CodeBlockNodeComponent),\n forwardRef(() => D2BlockNodeComponent),\n forwardRef(() => DefinitionListNodeComponent),\n forwardRef(() => DynamicNodeHostComponent),\n forwardRef(() => EmojiNodeComponent),\n forwardRef(() => EmphasisNodeComponent),\n forwardRef(() => FallbackComponent),\n forwardRef(() => FootnoteAnchorNodeComponent),\n forwardRef(() => FootnoteNodeComponent),\n forwardRef(() => FootnoteReferenceNodeComponent),\n forwardRef(() => HardBreakNodeComponent),\n forwardRef(() => HeadingNodeComponent),\n forwardRef(() => HighlightNodeComponent),\n forwardRef(() => HtmlBlockNodeComponent),\n forwardRef(() => HtmlInlineNodeComponent),\n forwardRef(() => ImageNodeComponent),\n forwardRef(() => InfographicBlockNodeComponent),\n forwardRef(() => InlineCodeNodeComponent),\n forwardRef(() => InsertNodeComponent),\n forwardRef(() => LinkNodeComponent),\n forwardRef(() => ListItemNodeComponent),\n forwardRef(() => ListNodeComponent),\n forwardRef(() => MathBlockNodeComponent),\n forwardRef(() => MathInlineNodeComponent),\n forwardRef(() => MermaidBlockNodeComponent),\n forwardRef(() => ParagraphNodeComponent),\n forwardRef(() => PreCodeNodeComponent),\n forwardRef(() => ReferenceNodeComponent),\n forwardRef(() => StrikethroughNodeComponent),\n forwardRef(() => StrongNodeComponent),\n forwardRef(() => SubscriptNodeComponent),\n forwardRef(() => SuperscriptNodeComponent),\n forwardRef(() => TableNodeComponent),\n forwardRef(() => TextNodeComponent),\n forwardRef(() => ThematicBreakNodeComponent),\n forwardRef(() => VmrContainerNodeComponent),\n ],\n template: `\n <ng-container *ngIf=\"resolvedCustomComponent as customComponent; else builtinTemplate\">\n <markstream-angular-dynamic-node-host\n [component]=\"customComponent\"\n [node]=\"customNode\"\n [context]=\"context\"\n [indexKey]=\"indexKey\"\n [inputs]=\"resolvedComponentInputs\"\n />\n </ng-container>\n\n <ng-template #builtinTemplate>\n <ng-container [ngSwitch]=\"resolvedType\">\n <markstream-angular-text-node *ngSwitchCase=\"'text'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-text-node *ngSwitchCase=\"'text_special'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-paragraph-node *ngSwitchCase=\"'paragraph'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-heading-node *ngSwitchCase=\"'heading'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-blockquote-node *ngSwitchCase=\"'blockquote'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-list-node *ngSwitchCase=\"'list'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-list-item-node *ngSwitchCase=\"'list_item'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-table-node *ngSwitchCase=\"'table'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-definition-list-node *ngSwitchCase=\"'definition_list'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-footnote-node *ngSwitchCase=\"'footnote'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-footnote-reference-node *ngSwitchCase=\"'footnote_reference'\" [node]=\"node\" />\n <markstream-angular-footnote-anchor-node *ngSwitchCase=\"'footnote_anchor'\" [node]=\"node\" />\n <markstream-angular-admonition-node *ngSwitchCase=\"'admonition'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-hardbreak-node *ngSwitchCase=\"'hardbreak'\" />\n <markstream-angular-link-node *ngSwitchCase=\"'link'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-image-node *ngSwitchCase=\"'image'\" [node]=\"node\" />\n <markstream-angular-inline-code-node *ngSwitchCase=\"'inline_code'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-strong-node *ngSwitchCase=\"'strong'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-emphasis-node *ngSwitchCase=\"'emphasis'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-strikethrough-node *ngSwitchCase=\"'strikethrough'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-highlight-node *ngSwitchCase=\"'highlight'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-insert-node *ngSwitchCase=\"'insert'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-subscript-node *ngSwitchCase=\"'subscript'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-superscript-node *ngSwitchCase=\"'superscript'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-checkbox-node *ngSwitchCase=\"'checkbox'\" [node]=\"node\" />\n <markstream-angular-checkbox-node *ngSwitchCase=\"'checkbox_input'\" [node]=\"node\" />\n <markstream-angular-emoji-node *ngSwitchCase=\"'emoji'\" [node]=\"node\" />\n <markstream-angular-reference-node *ngSwitchCase=\"'reference'\" [node]=\"node\" />\n <ng-container *ngSwitchCase=\"'html_block'\">\n <markstream-angular-text-node *ngIf=\"shouldEscapeHtmlTag; else htmlBlockNode\" [node]=\"escapedTextNode\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <ng-template #htmlBlockNode>\n <markstream-angular-html-block-node [node]=\"htmlRenderNode\" [context]=\"context\" />\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"'html_inline'\">\n <markstream-angular-text-node *ngIf=\"shouldEscapeHtmlTag; else htmlInlineNode\" [node]=\"escapedTextNode\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <ng-template #htmlInlineNode>\n <markstream-angular-html-inline-node [node]=\"htmlRenderNode\" [context]=\"context\" />\n </ng-template>\n </ng-container>\n <markstream-angular-vmr-container-node *ngSwitchCase=\"'vmr_container'\" [node]=\"node\" [context]=\"context\" [indexKey]=\"indexKey\" />\n <markstream-angular-thematic-break-node *ngSwitchCase=\"'thematic_break'\" />\n <markstream-angular-math-inline-node *ngSwitchCase=\"'math_inline'\" [node]=\"node\" />\n <markstream-angular-math-block-node *ngSwitchCase=\"'math_block'\" [node]=\"node\" />\n\n <ng-container *ngSwitchCase=\"'code_block'\">\n <markstream-angular-mermaid-block-node\n *ngIf=\"codeMode === 'mermaid'; else nonMermaidCode\"\n [node]=\"node\"\n [context]=\"context\"\n />\n <ng-template #nonMermaidCode>\n <markstream-angular-d2-block-node\n *ngIf=\"codeMode === 'd2'; else nonD2Code\"\n [node]=\"node\"\n [context]=\"context\"\n />\n </ng-template>\n <ng-template #nonD2Code>\n <markstream-angular-infographic-block-node\n *ngIf=\"codeMode === 'infographic'; else genericCode\"\n [node]=\"node\"\n [context]=\"context\"\n />\n </ng-template>\n <ng-template #genericCode>\n <markstream-angular-pre-code-node\n *ngIf=\"codeMode === 'pre'; else enhancedCode\"\n [node]=\"node\"\n [showLineNumbers]=\"true\"\n />\n </ng-template>\n <ng-template #enhancedCode>\n <markstream-angular-code-block-node [node]=\"node\" [context]=\"context\" />\n </ng-template>\n </ng-container>\n\n <markstream-angular-fallback-node *ngSwitchDefault [node]=\"fallbackNode\" [context]=\"context\" [indexKey]=\"indexKey\" />\n </ng-container>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NodeOutletComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get resolvedType() {\n return String((this.node as any)?.type || '')\n }\n\n get customComponentMap() {\n return this.context?.customComponents || getCustomNodeComponents(this.context?.customId)\n }\n\n get resolvedCustomComponent() {\n return resolveNodeOutletCustomComponent(this.node, this.context, this.customComponentMap)\n }\n\n get customNode() {\n return coerceCustomHtmlNode(this.node)\n }\n\n get codeMode() {\n return resolveNodeOutletCodeMode(this.node, this.context)\n }\n\n get htmlTag() {\n return resolveHtmlTag(this.node)\n }\n\n /**\n * Check if this HTML tag should be escaped (rendered as text) instead of being parsed as HTML.\n * This happens when:\n * 1. The node is html_block or html_inline\n * 2. The tag is NOT in the customHtmlTags whitelist\n * 3. The tag is NOT a standard HTML tag\n * 4. The tag is incomplete/malformed, so rendering it as HTML would swallow\n * surrounding content.\n */\n get shouldEscapeHtmlTag() {\n const type = this.resolvedType\n if (type !== 'html_block' && type !== 'html_inline')\n return false\n\n if (this.context?.htmlPolicy === 'escape')\n return true\n\n const tag = this.htmlTag\n if (!tag)\n return false\n\n // Check if tag is in whitelist\n const customHtmlTags = this.context?.customHtmlTags ?? []\n const isWhitelisted = customHtmlTags.some(t => String(t).toLowerCase() === tag)\n if (isWhitelisted)\n return false\n\n // Check if tag is a standard HTML tag\n if (STANDARD_HTML_TAGS.has(tag))\n return false\n\n if (hasCompleteHtmlTagContent((this.node as any)?.content ?? (this.node as any)?.raw, tag))\n return false\n\n return true\n }\n\n /**\n * Returns a text node for incomplete non-whitelisted, non-standard HTML tags.\n */\n get escapedTextNode(): AngularRenderableNode {\n const rawContent = String((this.node as any)?.content ?? (this.node as any)?.raw ?? '')\n\n return {\n type: 'text',\n content: rawContent,\n raw: rawContent,\n } as AngularRenderableNode\n }\n\n get htmlRenderNode() {\n return coerceBuiltinHtmlNode(this.node, this.resolvedType)\n }\n\n get fallbackNode() {\n return this.node\n }\n\n get resolvedComponentInputs() {\n return resolveNodeOutletCustomInputs(this.node, this.context)\n }\n}\n","import type { OnChanges } from '@angular/core'\nimport type { MarkdownIt, ParseOptions } from 'stream-markdown-parser'\nimport type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { mergeCustomHtmlTags } from 'stream-markdown-parser'\nimport { parseNestedMarkdownToNodes } from '../../parseNestedMarkdownToNodes'\nimport { NodeOutletComponent } from '../NodeOutlet/NodeOutlet.component'\nimport { normalizeTokenAttrs } from '../shared/node-helpers'\nimport { SafeAttrsDirective } from '../shared/safe-attrs.directive'\n\ntype NestedRenderItem\n = | { kind: 'label', attrs: Record<string, string | true> | null, children: AngularRenderableNode[] }\n | { kind: 'node', node: AngularRenderableNode }\n\n@Component({\n selector: 'markstream-angular-nested-renderer',\n standalone: true,\n imports: [\n CommonModule,\n SafeAttrsDirective,\n forwardRef(() => NestedRendererComponent),\n forwardRef(() => NodeOutletComponent),\n ],\n template: `\n <ng-container *ngFor=\"let item of items; let idx = index; trackBy: trackByIndex\">\n <label *ngIf=\"item.kind === 'label'; else nodeTemplate\" [markstreamSafeAttrs]=\"item.attrs\">\n <markstream-angular-nested-renderer\n [nodes]=\"item.children\"\n [context]=\"context\"\n [indexPrefix]=\"childPrefix(idx)\"\n />\n </label>\n\n <ng-template #nodeTemplate>\n <markstream-angular-node-outlet\n [node]=\"$any(item).node\"\n [context]=\"context\"\n [indexKey]=\"childPrefix(idx)\"\n />\n </ng-template>\n </ng-container>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NestedRendererComponent implements OnChanges {\n @Input() node?: AngularRenderableNode | null\n @Input() nodes: readonly AngularRenderableNode[] | null | undefined\n @Input() content?: string | null\n @Input() loading?: boolean\n @Input() final?: boolean\n @Input() cacheKey?: string\n @Input() parseOptions?: ParseOptions\n @Input() customHtmlTags?: readonly string[]\n @Input() customMarkdownIt?: (markdown: MarkdownIt) => MarkdownIt\n @Input() context?: AngularRenderContext\n @Input() indexPrefix = 'nested'\n\n items: NestedRenderItem[] = []\n\n ngOnChanges() {\n this.items = this.buildItems(this.resolvedNodes)\n }\n\n trackByIndex = (index: number) => {\n return `${this.indexPrefix}-${index}`\n }\n\n childPrefix(index: number) {\n return `${this.indexPrefix}-${index}`\n }\n\n private get resolvedNodes() {\n return parseNestedMarkdownToNodes(\n {\n node: this.node as any,\n nodes: this.nodes as any,\n content: this.content,\n },\n {\n cacheKey: this.cacheKey,\n final: this.resolveFinal(),\n parseOptions: this.parseOptions ?? this.context?.parseOptions,\n customHtmlTags: this.resolveCustomHtmlTags(),\n customMarkdownIt: this.customMarkdownIt ?? this.context?.customMarkdownIt,\n },\n ) as AngularRenderableNode[]\n }\n\n private buildItems(nodes: readonly AngularRenderableNode[] | null | undefined) {\n const source = Array.isArray(nodes) ? nodes : []\n const items: NestedRenderItem[] = []\n\n for (let index = 0; index < source.length; index += 1) {\n const node = source[index]\n if (!node)\n continue\n\n if (node.type === 'label_open') {\n const children: AngularRenderableNode[] = []\n let cursor = index + 1\n for (; cursor < source.length; cursor += 1) {\n const segment = source[cursor]\n if (segment?.type === 'label_close')\n break\n if (segment)\n children.push(segment)\n }\n\n items.push({\n kind: 'label',\n attrs: normalizeTokenAttrs((node as any)?.attrs),\n children,\n })\n index = cursor\n continue\n }\n\n if (node.type === 'label_close')\n continue\n\n items.push({ kind: 'node', node })\n }\n\n return items\n }\n\n private resolveFinal() {\n if (typeof this.final === 'boolean')\n return this.final\n if (typeof this.loading === 'boolean')\n return !this.loading\n if (typeof (this.node as any)?.loading === 'boolean')\n return !(this.node as any).loading\n return this.context?.final\n }\n\n private resolveCustomHtmlTags() {\n return mergeCustomHtmlTags(this.context?.customHtmlTags, this.customHtmlTags)\n }\n}\n","import type { AngularRenderableNode, AngularRenderContext } from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core'\nimport { NestedRendererComponent } from '../NestedRenderer/NestedRenderer.component'\nimport { capitalize, getNodeList, getString, sanitizeClassToken } from '../shared/node-helpers'\n\n@Component({\n selector: 'markstream-angular-admonition-node',\n standalone: true,\n imports: [CommonModule, forwardRef(() => NestedRendererComponent)],\n template: `\n <div class=\"markstream-nested-admonition\" [class]=\"kindClass\">\n <div class=\"markstream-nested-admonition__title\">{{ resolvedTitle }}</div>\n <div class=\"markstream-nested-admonition__content\">\n <markstream-angular-nested-renderer\n [nodes]=\"children\"\n [context]=\"context\"\n [indexPrefix]=\"nestedPrefix\"\n />\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdmonitionNodeComponent {\n @Input({ required: true }) node!: AngularRenderableNode\n @Input() context?: AngularRenderContext\n @Input() indexKey?: string\n\n get kind() {\n return sanitizeClassToken(getString((this.node as any)?.kind || 'note')) || 'note'\n }\n\n get kindClass() {\n return `markstream-nested-admonition--${this.kind}`\n }\n\n get resolvedTitle() {\n return getString((this.node as any)?.title) || capitalize(this.kind)\n }\n\n get children() {\n return getNodeList((this.node as any)?.children)\n }\n\n get nestedPrefix() {\n return `${this.indexKey || 'admonition'}-children`\n }\n}\n","import type { NodeRendererCodeBlockProps, NodeRendererD2Props, NodeRendererInfographicProps, NodeRendererMermaidProps } from './components/shared/node-helpers'\nimport type { CodeBlockMonacoOptions } from './types/monaco'\nimport { toSafeMermaidSvgMarkup } from 'stream-markdown-parser'\nimport { getD2 } from './optional/d2'\nimport { getInfographic } from './optional/infographic'\nimport { getKatex } from './optional/katex'\nimport { getMermaid } from './optional/mermaid'\nimport { getUseMonaco } from './optional/monaco'\nimport { extractRenderedSvg, toSafeSvgMarkup } from './sanitizeSvg'\nimport { resolveMonacoLanguageId } from './utils/languageIcon'\nimport { normalizeKaTeXRenderInput } from './utils/normalizeKaTeXRenderInput'\nimport { renderKaTeXWithBackpressure, setKaTeXCache, WORKER_BUSY_CODE } from './workers/katexWorkerClient'\nimport { canParseOffthread, findPrefixOffthread } from './workers/mermaidWorkerClient'\n\nlet mermaidRenderId = 0\nconst rootHandles = new WeakMap<HTMLElement, RenderedHtmlEnhancementHandle>()\ntype MermaidTheme = 'light' | 'dark'\n\nconst DARK_THEME_OVERRIDES: Record<string, string> = {\n N1: '#E5E7EB',\n N2: '#CBD5E1',\n N3: '#94A3B8',\n N4: '#64748B',\n N5: '#475569',\n N6: '#334155',\n N7: '#0B1220',\n B1: '#60A5FA',\n B2: '#3B82F6',\n B3: '#2563EB',\n B4: '#1D4ED8',\n B5: '#1E40AF',\n B6: '#111827',\n AA2: '#22D3EE',\n AA4: '#0EA5E9',\n AA5: '#0284C7',\n AB4: '#FBBF24',\n AB5: '#F59E0B',\n}\n\nexport interface EnhanceRenderedHtmlOptions {\n final?: boolean\n isDark?: boolean\n renderCodeBlocksAsPre?: boolean\n monacoOptions?: CodeBlockMonacoOptions\n d2ThemeId?: number | null\n d2DarkThemeId?: number | null\n showTooltips?: boolean\n codeBlockProps?: NodeRendererCodeBlockProps\n mermaidProps?: NodeRendererMermaidProps\n d2Props?: NodeRendererD2Props\n infographicProps?: NodeRendererInfographicProps\n onCopy?: (code: string) => void\n isCancelled?: () => boolean\n}\n\nexport interface RenderedHtmlEnhancementHandle {\n dispose: () => void\n}\n\nexport async function enhanceRenderedHtml(\n root: HTMLElement,\n options: EnhanceRenderedHtmlOptions = {},\n): Promise<RenderedHtmlEnhancementHandle> {\n disposeRenderedHtmlEnhancements(root)\n\n const cleanupFns: Array<() => void> = []\n let disposed = false\n const isActive = () => !disposed && options.isCancelled?.() !== true\n const handle: RenderedHtmlEnhancementHandle = {\n dispose: () => {\n if (disposed)\n return\n disposed = true\n for (let index = cleanupFns.length - 1; index >= 0; index -= 1) {\n try {\n cleanupFns[index]?.()\n }\n catch {\n // Best-effort cleanup only.\n }\n }\n if (rootHandles.get(root) === handle)\n rootHandles.delete(root)\n },\n }\n\n rootHandles.set(root, handle)\n\n if (!isActive())\n return handle\n\n await renderKatex(root, isActive)\n if (!isActive())\n return handle\n\n await renderMermaid(root, cleanupFns, options, isActive)\n if (!isActive())\n return handle\n\n if (options.final !== false) {\n await renderInfographic(root, cleanupFns, options, isActive)\n if (!isActive())\n return handle\n\n await renderD2(root, cleanupFns, options, isActive)\n if (!isActive())\n return handle\n\n if (!options.renderCodeBlocksAsPre)\n await renderMonaco(root, cleanupFns, options, isActive)\n }\n\n return handle\n}\n\nexport function disposeRenderedHtmlEnhancements(root: HTMLElement | null | undefined) {\n if (!root)\n return\n const existing = rootHandles.get(root)\n existing?.dispose()\n}\n\nfunction readKatexSource(node: HTMLElement, selector: string) {\n const sourceElement = node.querySelector<HTMLElement>(selector)\n return {\n sourceElement,\n source: (sourceElement?.textContent || (!sourceElement ? node.textContent : '') || '').trim(),\n }\n}\n\nfunction resolveKatexRenderTarget(node: HTMLElement, selector: string) {\n return node.querySelector<HTMLElement>(selector)\n}\n\nfunction hasRenderedKatex(node: HTMLElement, selector: string) {\n const renderTarget = resolveKatexRenderTarget(node, selector)\n const scope = renderTarget || node\n return !!scope.querySelector('.katex, .katex-display')\n}\n\nfunction writeKatexMarkup(\n node: HTMLElement,\n renderTarget: HTMLElement | null,\n markup: string,\n options: { renderedClass?: string } = {},\n) {\n if (renderTarget)\n renderTarget.innerHTML = markup\n else\n node.innerHTML = markup\n\n node.dataset.markstreamKatex = '1'\n if (options.renderedClass)\n node.classList.add(options.renderedClass)\n}\n\nfunction clearKatexMarkup(\n node: HTMLElement,\n renderTarget: HTMLElement | null,\n options: { renderedClass?: string } = {},\n) {\n if (renderTarget)\n renderTarget.innerHTML = ''\n delete node.dataset.markstreamKatex\n delete node.dataset.markstreamKatexSource\n if (options.renderedClass)\n node.classList.remove(options.renderedClass)\n}\n\nasync function renderKatex(root: HTMLElement, isActive: () => boolean) {\n const inlineNodes = Array.from(root.querySelectorAll<HTMLElement>('.markstream-nested-math'))\n for (const node of inlineNodes) {\n if (!isActive())\n return\n if (node.dataset.markstreamKatexManaged === '1')\n continue\n const { source } = readKatexSource(node, '.markstream-nested-math__source')\n const renderTarget = resolveKatexRenderTarget(node, '.markstream-nested-math__render')\n if (!source) {\n clearKatexMarkup(node, renderTarget)\n continue\n }\n if (\n node.dataset.markstreamKatex === '1'\n && node.dataset.markstreamKatexSource === source\n && hasRenderedKatex(node, '.markstream-nested-math__render')\n ) {\n continue\n }\n try {\n writeKatexMarkup(node, renderTarget, await renderKatexMarkup(source, node.dataset.display === 'block'))\n node.dataset.markstreamKatexSource = source\n }\n catch {\n clearKatexMarkup(node, renderTarget)\n }\n }\n\n const blockNodes = Array.from(root.querySelectorAll<HTMLElement>('.markstream-nested-math-block'))\n for (const node of blockNodes) {\n if (!isActive())\n return\n if (node.dataset.markstreamKatexManaged === '1')\n continue\n const { source } = readKatexSource(node, '.markstream-nested-math-block__source')\n const renderTarget = resolveKatexRenderTarget(node, '.markstream-nested-math-block__render')\n if (!source) {\n clearKatexMarkup(node, renderTarget, { renderedClass: 'markstream-nested-math-block--rendered' })\n continue\n }\n if (\n node.dataset.markstreamKatex === '1'\n && node.dataset.markstreamKatexSource === source\n && hasRenderedKatex(node, '.markstream-nested-math-block__render')\n ) {\n continue\n }\n try {\n writeKatexMarkup(node, renderTarget, await renderKatexMarkup(source, true), {\n renderedClass: 'markstream-nested-math-block--rendered',\n })\n node.dataset.markstreamKatexSource = source\n }\n catch {\n clearKatexMarkup(node, renderTarget, { renderedClass: 'markstream-nested-math-block--rendered' })\n }\n }\n}\n\nasync function renderKatexMarkup(source: string, displayMode: boolean) {\n const normalizedSource = normalizeKaTeXRenderInput(source)\n try {\n return await renderKaTeXWithBackpressure(normalizedSource, displayMode, {\n timeout: 1500,\n waitTimeout: 0,\n maxRetries: 0,\n })\n }\n catch (error: any) {\n const code = error?.code || error?.name\n const isWorkerInitFailure = code === 'WORKER_INIT_ERROR' || error?.fallbackToRenderer\n const isBusyOrTimeout = code === WORKER_BUSY_CODE || code === 'WORKER_TIMEOUT'\n if (!isWorkerInitFailure && !isBusyOrTimeout)\n throw error\n }\n\n const katex = await getKatex()\n if (!katex)\n throw new Error('KaTeX renderer is not available.')\n\n const html = katex.renderToString(normalizedSource, {\n displayMode,\n throwOnError: false,\n })\n setKaTeXCache(normalizedSource, displayMode, html)\n return html\n}\n\nasync function renderMermaid(\n root: HTMLElement,\n cleanupFns: Array<() => void>,\n options: EnhanceRenderedHtmlOptions,\n isActive: () => boolean,\n) {\n const strictMode = options.mermaidProps?.isStrict !== false\n const mermaid = await getMermaid({\n startOnLoad: false,\n securityLevel: strictMode ? 'strict' : 'loose',\n suppressErrorRendering: true,\n ...(strictMode ? { flowchart: { htmlLabels: false } } : {}),\n })\n if (!mermaid || !isActive())\n return\n\n const codeNodes = Array.from(root.querySelectorAll<HTMLElement>('pre > code.language-mermaid'))\n for (const codeNode of codeNodes) {\n if (!isActive())\n return\n const pre = codeNode.parentElement as HTMLElement | null\n const source = (codeNode.textContent || '').trim()\n if (!pre || !source)\n continue\n\n const originalPre = pre.cloneNode(true) as HTMLElement\n const shell = createEnhancedBlockShell(\n 'mermaid',\n 'Mermaid',\n source,\n true,\n options,\n {\n showHeader: options.mermaidProps?.showHeader !== false,\n },\n )\n pre.replaceWith(shell.wrapper)\n\n try {\n const theme: MermaidTheme = options.isDark ? 'dark' : 'light'\n let sourceToRender = source\n if (options.final === false) {\n try {\n await canParseMermaidWithFallback(source, theme, mermaid, options)\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n return\n const prefix = await findMermaidPrefixCandidate(source, theme, options)\n if (!isActive())\n return\n if (!prefix) {\n shell.wrapper.replaceWith(originalPre)\n continue\n }\n sourceToRender = prefix\n }\n }\n\n const renderId = `markstream-angular-mermaid-${++mermaidRenderId}`\n const rendered = await withTimeout(\n () => Promise.resolve(mermaid.render(renderId, applyMermaidThemeTo(sourceToRender, theme))),\n options.final === false\n ? Number(options.mermaidProps?.renderTimeoutMs ?? 2500)\n : Number(options.mermaidProps?.fullRenderTimeoutMs ?? 4000),\n )\n if (!isActive())\n return\n const svg = typeof rendered === 'string' ? rendered : rendered?.svg\n if (!svg)\n continue\n const safeSvg = toSafeMermaidSvgMarkup(svg)\n if (!safeSvg)\n continue\n shell.body.innerHTML = safeSvg\n shell.body.classList.add('markstream-angular-mermaid')\n shell.wrapper.dataset.markstreamMermaid = '1'\n if (options.mermaidProps?.enableMermaidInteractions === true && typeof rendered !== 'string') {\n try {\n rendered?.bindFunctions?.(shell.body)\n }\n catch {}\n }\n cleanupFns.push(() => {\n if (shell.wrapper.isConnected)\n shell.wrapper.replaceWith(originalPre.cloneNode(true))\n })\n }\n catch {\n shell.wrapper.replaceWith(originalPre)\n }\n }\n}\n\nfunction applyMermaidThemeTo(source: string, theme: MermaidTheme) {\n const trimmed = source.trimStart()\n if (trimmed.startsWith('%%{'))\n return source\n const themeValue = theme === 'dark' ? 'dark' : 'default'\n return `%%{init: {\"theme\": \"${themeValue}\"}}%%\\n${source}`\n}\n\nasync function canParseMermaidWithFallback(\n source: string,\n theme: MermaidTheme,\n mermaid: any,\n options: EnhanceRenderedHtmlOptions,\n) {\n const workerTimeout = Number(options.mermaidProps?.workerTimeoutMs ?? 1400)\n const parseTimeout = Number(options.mermaidProps?.parseTimeoutMs ?? 1800)\n try {\n const ok = await canParseOffthread(source, theme, workerTimeout)\n if (ok)\n return true\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n throw error\n }\n\n const themedSource = applyMermaidThemeTo(source, theme)\n if (typeof mermaid?.parse === 'function') {\n await withTimeout(() => Promise.resolve(mermaid.parse(themedSource)), parseTimeout)\n return true\n }\n\n const renderId = `markstream-angular-mermaid-parse-${++mermaidRenderId}`\n await withTimeout(() => Promise.resolve(mermaid.render(renderId, themedSource)), parseTimeout)\n return true\n}\n\nasync function findMermaidPrefixCandidate(\n source: string,\n theme: MermaidTheme,\n options: EnhanceRenderedHtmlOptions,\n) {\n const workerTimeout = Number(options.mermaidProps?.workerTimeoutMs ?? 1400)\n try {\n const prefix = await findPrefixOffthread(source, theme, workerTimeout)\n if (prefix)\n return prefix\n }\n catch (error: any) {\n if (error?.name === 'AbortError')\n throw error\n }\n return getSafeMermaidPrefixCandidate(source)\n}\n\nfunction getSafeMermaidPrefixCandidate(source: string) {\n const lines = source.split('\\n')\n while (lines.length > 0) {\n const lastRaw = lines[lines.length - 1]\n const last = lastRaw.trimEnd()\n if (!last) {\n lines.pop()\n continue\n }\n const looksDangling = /^[-=~>|<\\s]+$/.test(last.trim())\n || /(?:--|==|~~|->|<-|-\\||-\\)|-x|o-|\\|-|\\.-)\\s*$/.test(last)\n || /[-|><]$/.test(last)\n || /(?:graph|flowchart|sequenceDiagram|classDiagram|stateDiagram|erDiagram|gantt)\\s*$/i.test(last)\n if (!looksDangling)\n break\n lines.pop()\n }\n return lines.join('\\n')\n}\n\nfunction withTimeout<T>(run: () => Promise<T>, timeoutMs: number) {\n if (!timeoutMs || timeoutMs <= 0)\n return run()\n\n return new Promise<T>((resolve, reject) => {\n let settled = false\n const timer = globalThis.setTimeout(() => {\n if (settled)\n return\n settled = true\n reject(new Error('Operation timed out'))\n }, timeoutMs)\n\n run()\n .then((value) => {\n if (settled)\n return\n settled = true\n clearTimeout(timer)\n resolve(value)\n })\n .catch((error) => {\n if (settled)\n return\n settled = true\n clearTimeout(timer)\n reject(error)\n })\n })\n}\n\nasync function renderInfographic(\n root: HTMLElement,\n cleanupFns: Array<() => void>,\n options: EnhanceRenderedHtmlOptions,\n isActive: () => boolean,\n) {\n const InfographicClass = await getInfographic()\n if (!InfographicClass || !isActive())\n return\n\n const codeNodes = Array.from(root.querySelectorAll<HTMLElement>('pre[data-markstream-code-block=\"1\"] > code.language-infographic'))\n for (const codeNode of codeNodes) {\n if (!isActive())\n return\n const pre = codeNode.parentElement as HTMLElement | null\n const source = codeNode.textContent || ''\n if (!pre || !source.trim())\n continue\n\n const originalPre = pre.cloneNode(true) as HTMLElement\n const shell = createEnhancedBlockShell('infographic', 'Infographic', source, true, options, {\n showHeader: options.infographicProps?.showHeader !== false,\n })\n shell.body.style.minHeight = '320px'\n shell.body.style.height = '360px'\n pre.replaceWith(shell.wrapper)\n\n try {\n const instance = new InfographicClass({\n container: shell.body,\n width: '100%',\n height: '100%',\n })\n instance.render(source)\n\n let frameId: number | null = null\n if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n frameId = window.requestAnimationFrame(() => {\n const actualHeight = shell.body.scrollHeight\n if (actualHeight > 0)\n shell.body.style.height = `${Math.min(Math.max(actualHeight, 260), 720)}px`\n })\n }\n\n cleanupFns.push(() => {\n if (frameId != null && typeof window !== 'undefined')\n window.cancelAnimationFrame(frameId)\n instance.destroy?.()\n if (shell.wrapper.isConnected)\n shell.wrapper.replaceWith(originalPre.cloneNode(true))\n })\n shell.wrapper.dataset.markstreamInfographic = '1'\n }\n catch {\n shell.wrapper.replaceWith(originalPre)\n }\n }\n}\n\nasync function renderD2(\n root: HTMLElement,\n cleanupFns: Array<() => void>,\n options: EnhanceRenderedHtmlOptions,\n isActive: () => boolean,\n) {\n const D2Ctor = await getD2()\n if (!D2Ctor || !isActive())\n return\n\n const codeNodes = Array.from(root.querySelectorAll<HTMLElement>('pre[data-markstream-code-block=\"1\"] > code.language-d2, pre[data-markstream-code-block=\"1\"] > code.language-d2lang'))\n for (const codeNode of codeNodes) {\n if (!isActive())\n return\n const pre = codeNode.parentElement as HTMLElement | null\n const source = codeNode.textContent || ''\n if (!pre || !source.trim())\n continue\n\n const originalPre = pre.cloneNode(true) as HTMLElement\n const shell = createEnhancedBlockShell('d2', 'D2', source, true, options, {\n showHeader: options.d2Props?.showHeader !== false,\n })\n pre.replaceWith(shell.wrapper)\n\n try {\n const instance = createD2Instance(D2Ctor)\n if (!instance || typeof instance.compile !== 'function' || typeof instance.render !== 'function')\n throw new TypeError('D2 instance is missing compile/render methods.')\n\n const compileResult = await instance.compile(source)\n const diagram = compileResult?.diagram ?? compileResult\n const baseRenderOptions = compileResult?.renderOptions ?? compileResult?.options ?? {}\n const resolvedThemeId = options.d2ThemeId ?? baseRenderOptions.themeID\n const resolvedDarkThemeId = options.d2DarkThemeId ?? baseRenderOptions.darkThemeID\n const renderOptions: Record<string, any> = { ...baseRenderOptions }\n renderOptions.themeID = options.isDark && resolvedDarkThemeId != null\n ? resolvedDarkThemeId\n : resolvedThemeId\n renderOptions.darkThemeID = null\n renderOptions.darkThemeOverrides = null\n if (options.isDark) {\n const baseOverrides = baseRenderOptions.themeOverrides && typeof baseRenderOptions.themeOverrides === 'object'\n ? baseRenderOptions.themeOverrides\n : null\n renderOptions.themeOverrides = {\n ...DARK_THEME_OVERRIDES,\n ...(baseOverrides || {}),\n }\n }\n\n const renderResult = await instance.render(diagram, renderOptions)\n if (!isActive())\n return\n const safeSvg = toSafeSvgMarkup(extractRenderedSvg(renderResult))\n if (!safeSvg)\n throw new Error('D2 render returned empty output.')\n\n shell.body.innerHTML = safeSvg\n shell.wrapper.dataset.markstreamD2 = '1'\n cleanupFns.push(() => {\n if (shell.wrapper.isConnected)\n shell.wrapper.replaceWith(originalPre.cloneNode(true))\n })\n }\n catch {\n shell.wrapper.replaceWith(originalPre)\n }\n }\n}\n\nasync function renderMonaco(\n root: HTMLElement,\n cleanupFns: Array<() => void>,\n options: EnhanceRenderedHtmlOptions,\n isActive: () => boolean,\n) {\n const monacoModule = await getUseMonaco()\n if (!monacoModule || typeof monacoModule.useMonaco !== 'function' || !isActive())\n return\n\n const preNodes = Array.from(root.querySelectorAll<HTMLElement>('pre[data-markstream-code-block=\"1\"]'))\n for (const pre of preNodes) {\n if (!isActive())\n return\n const codeNode = pre.querySelector<HTMLElement>('code')\n if (!codeNode)\n continue\n\n const rawLanguage = resolveCodeLanguage(pre, codeNode)\n const normalizedLanguage = rawLanguage.trim().toLowerCase()\n if (normalizedLanguage === 'mermaid' || normalizedLanguage === 'infographic' || normalizedLanguage === 'd2' || normalizedLanguage === 'd2lang')\n continue\n\n const source = codeNode.textContent || ''\n const diff = pre.dataset.markstreamDiff === '1'\n const originalCode = decodeDataPayload(pre.dataset.markstreamOriginal)\n const updatedCode = decodeDataPayload(pre.dataset.markstreamUpdated)\n const monacoLanguage = resolveMonacoLanguage(rawLanguage)\n const displayLanguage = rawLanguage.trim() || monacoLanguage\n const preStyle = typeof window !== 'undefined' ? window.getComputedStyle(pre) : null\n const codeStyle = typeof window !== 'undefined' ? window.getComputedStyle(codeNode) : null\n const measuredPreHeight = pre.getBoundingClientRect().height\n const fontSize = readCssPixels(codeStyle?.fontSize) ?? 13\n const lineHeight = readCssPixels(codeStyle?.lineHeight) ?? readCssPixels(preStyle?.lineHeight)\n const paddingTop = readCssPixels(preStyle?.paddingTop)\n const paddingBottom = readCssPixels(preStyle?.paddingBottom)\n const fontFamily = codeStyle?.fontFamily || preStyle?.fontFamily || undefined\n const shell = createEnhancedBlockShell(\n 'code',\n diff ? `Diff / ${displayLanguage}` : `Code / ${displayLanguage}`,\n source,\n false,\n options,\n {\n showHeader: options.codeBlockProps?.showHeader !== false,\n },\n )\n shell.body.classList.add('markstream-angular-enhanced-block__body--code')\n shell.body.style.minHeight = `${measuredPreHeight > 0 ? Math.ceil(measuredPreHeight) : estimateCodeBlockHeight(diff ? updatedCode || source : source, diff)}px`\n if (preStyle) {\n shell.wrapper.style.marginTop = preStyle.marginTop\n shell.wrapper.style.marginRight = preStyle.marginRight\n shell.wrapper.style.marginBottom = preStyle.marginBottom\n shell.wrapper.style.marginLeft = preStyle.marginLeft\n }\n const originalPre = pre.cloneNode(true) as HTMLElement\n pre.replaceWith(shell.wrapper)\n\n const configuredUnsafeCSS = typeof options.monacoOptions?.unsafeCSS === 'string'\n ? options.monacoOptions.unsafeCSS\n : ''\n const runtimeUnsafeCSS = `[data-file], [data-diff] { --diffs-min-number-column-width-default: 2ch !important; }\n${configuredUnsafeCSS}`.trim()\n const helpers = monacoModule.useMonaco({\n themes: ['vitesse-dark', 'vitesse-light'],\n languages: Array.from(new Set([monacoLanguage, 'plaintext'])),\n readOnly: true,\n minimap: { enabled: false },\n lineNumbers: 'on',\n wordWrap: 'off',\n revealDebounceMs: 75,\n MAX_HEIGHT: 500,\n fontSize,\n ...(lineHeight ? { lineHeight } : {}),\n ...(fontFamily ? { fontFamily } : {}),\n ...(paddingTop != null || paddingBottom != null\n ? { padding: { top: paddingTop ?? 0, bottom: paddingBottom ?? 0 } }\n : {}),\n ...(options.monacoOptions || {}),\n // createEnhancedBlockShell already renders the code header. Prevent the\n // enhanced runtime from adding a second `code.<language>` file header.\n disableFileHeader: true,\n unsafeCSS: runtimeUnsafeCSS,\n })\n\n try {\n if (diff && typeof helpers.createDiffEditor === 'function') {\n await helpers.createDiffEditor(\n shell.body,\n originalCode,\n updatedCode || source,\n monacoLanguage,\n )\n }\n else {\n await helpers.createEditor?.(\n shell.body,\n diff ? updatedCode || source : source,\n monacoLanguage,\n )\n }\n if (!isActive())\n return\n\n await helpers.setTheme?.(options.isDark ? 'vitesse-dark' : 'vitesse-light')\n shell.wrapper.dataset.markstreamMonaco = '1'\n if (diff)\n shell.wrapper.dataset.markstreamMonacoDiff = '1'\n cleanupFns.push(() => {\n try {\n helpers.cleanupEditor?.()\n }\n finally {\n if (shell.wrapper.isConnected)\n shell.wrapper.replaceWith(originalPre.cloneNode(true))\n }\n })\n }\n catch {\n try {\n helpers.cleanupEditor?.()\n }\n catch {\n // Ignore cleanup failures during fallback.\n }\n shell.wrapper.replaceWith(originalPre)\n }\n }\n}\n\nfunction createD2Instance(D2Ctor: any) {\n if (typeof D2Ctor === 'function') {\n const instance = new D2Ctor()\n if (instance && typeof instance.compile === 'function')\n return instance\n if (typeof D2Ctor.compile === 'function')\n return D2Ctor\n }\n\n if (D2Ctor?.D2 && typeof D2Ctor.D2 === 'function')\n return new D2Ctor.D2()\n\n if (typeof D2Ctor?.compile === 'function')\n return D2Ctor\n\n return null\n}\n\nfunction resolveCodeLanguage(pre: HTMLElement, codeNode: HTMLElement) {\n const explicit = pre.dataset.markstreamLanguage?.trim()\n if (explicit)\n return explicit\n\n const languageClass = Array.from(codeNode.classList).find(className => className.startsWith('language-'))\n return languageClass ? languageClass.slice('language-'.length) : 'plaintext'\n}\n\nfunction resolveMonacoLanguage(language: string) {\n return resolveMonacoLanguageId(language)\n}\n\nfunction estimateCodeBlockHeight(source: string, diff: boolean) {\n const lineCount = Math.max(1, source.split('\\n').length)\n const perLine = diff ? 20 : 18\n const base = diff ? 180 : 96\n return Math.min(520, base + lineCount * perLine)\n}\n\nfunction readCssPixels(value: string | null | undefined) {\n if (!value || value === 'normal')\n return undefined\n\n const parsed = Number.parseFloat(value)\n return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined\n}\n\nfunction decodeDataPayload(value: string | null | undefined) {\n if (!value)\n return ''\n\n const globalBuffer = (globalThis as any)?.require?.('buffer')?.Buffer\n if (globalBuffer?.from)\n return globalBuffer.from(value, 'base64').toString('utf8')\n\n if (typeof globalThis.atob === 'function' && typeof TextDecoder !== 'undefined') {\n const binary = globalThis.atob(value)\n const bytes = Uint8Array.from(binary, char => char.charCodeAt(0))\n return new TextDecoder().decode(bytes)\n }\n\n return ''\n}\n\nfunction createEnhancedBlockShell(\n kind: 'code' | 'd2' | 'infographic' | 'mermaid',\n label: string,\n source: string,\n showSourceDetails: boolean,\n options: EnhanceRenderedHtmlOptions,\n shellOptions: {\n showHeader?: boolean\n } = {},\n) {\n const wrapper = document.createElement('div')\n wrapper.className = `markstream-angular-enhanced-block markstream-angular-enhanced-block--${kind}`\n\n if (shellOptions.showHeader !== false) {\n const header = document.createElement('div')\n header.className = 'markstream-angular-enhanced-block__header'\n\n const badge = document.createElement('span')\n badge.className = 'markstream-angular-enhanced-block__badge'\n badge.textContent = label\n\n header.appendChild(badge)\n header.appendChild(createHeaderActions(source, options))\n wrapper.appendChild(header)\n }\n\n const body = document.createElement('div')\n body.className = 'markstream-angular-enhanced-block__body'\n wrapper.appendChild(body)\n\n if (showSourceDetails) {\n const details = document.createElement('details')\n details.className = 'markstream-angular-enhanced-block__details'\n\n const summary = document.createElement('summary')\n summary.textContent = 'Source'\n details.appendChild(summary)\n\n const sourcePre = document.createElement('pre')\n sourcePre.className = 'markstream-angular-enhanced-block__source'\n const code = document.createElement('code')\n code.textContent = source\n sourcePre.appendChild(code)\n details.appendChild(sourcePre)\n\n wrapper.appendChild(details)\n }\n\n return { wrapper, body }\n}\n\nfunction createHeaderActions(source: string, options: EnhanceRenderedHtmlOptions) {\n const actions = document.createElement('div')\n actions.className = 'markstream-angular-enhanced-block__actions'\n\n const copyButton = document.createElement('button')\n copyButton.type = 'button'\n copyButton.className = 'markstream-angular-enhanced-block__action'\n copyButton.textContent = 'Copy'\n if (options.showTooltips !== false)\n copyButton.title = 'Copy source'\n\n copyButton.addEventListener('click', () => {\n void copyText(source)\n options.onCopy?.(source)\n })\n\n actions.appendChild(copyButton)\n return actions\n}\n\nasync function copyText(source: string) {\n try {\n if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(source)\n return\n }\n }\n catch {\n // Fall through to the textarea fallback below.\n }\n\n if (typeof document === 'undefined')\n return\n\n const textarea = document.createElement('textarea')\n textarea.value = source\n textarea.setAttribute('readonly', 'true')\n textarea.style.position = 'fixed'\n textarea.style.opacity = '0'\n textarea.style.pointerEvents = 'none'\n document.body.appendChild(textarea)\n textarea.select()\n try {\n document.execCommand('copy')\n }\n catch {\n // Ignore copy failures; the output callback still fires.\n }\n finally {\n textarea.remove()\n }\n}\n","import type { OnDestroy } from '@angular/core'\nimport type { SmoothMarkdownStreamOptions, SmoothMarkdownStreamSnapshot } from 'markstream-core'\nimport { Injectable } from '@angular/core'\nimport { createSmoothMarkdownStream } from 'markstream-core'\n\nexport type { SmoothMarkdownStreamOptions }\n\n@Injectable()\nexport class SmoothMarkdownStreamService implements OnDestroy {\n private controller: ReturnType<typeof createSmoothMarkdownStream> | null = null\n private snapshot: SmoothMarkdownStreamSnapshot = {\n source: '',\n visible: '',\n done: false,\n paused: false,\n pendingChars: 0,\n caughtUp: true,\n final: false,\n }\n\n private readonly listeners = new Set<() => void>()\n private unsubscribeFromController?: () => void\n\n init(options: SmoothMarkdownStreamOptions = {}): void {\n if (this.controller)\n return\n this.controller = createSmoothMarkdownStream(options)\n this.syncSnapshot()\n this.unsubscribeFromController = this.controller.subscribe(() => this.syncSnapshot())\n }\n\n ngOnDestroy(): void {\n this.unsubscribeFromController?.()\n this.unsubscribeFromController = undefined\n if (this.controller) {\n this.controller.destroy()\n this.controller = null\n }\n this.listeners.clear()\n }\n\n /**\n * Subscribe to snapshot updates. Called when the controller's visible\n * content advances during smooth streaming. The listener is invoked\n * after each snapshot sync so that Angular components can trigger\n * rebuild / markForCheck.\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n return () => {\n this.listeners.delete(listener)\n }\n }\n\n get source(): string { return this.snapshot.source }\n get visible(): string { return this.snapshot.visible }\n get done(): boolean { return this.snapshot.done }\n get caughtUp(): boolean { return this.snapshot.caughtUp }\n get final(): boolean { return this.snapshot.final }\n get pendingChars(): number { return this.snapshot.pendingChars }\n\n enqueue(chunk: string): void { this.controller?.enqueue(chunk) }\n finish(options?: { flush?: boolean }): void { this.controller?.finish(options) }\n flush(): void { this.controller?.flush() }\n reset(initialMarkdown?: string): void { this.controller?.reset(initialMarkdown) }\n pause(): void { this.controller?.pause() }\n resume(): void { this.controller?.resume() }\n\n private syncSnapshot(): void {\n if (this.controller)\n this.snapshot = this.controller.getSnapshot()\n for (const listener of this.listeners)\n listener()\n }\n}\n","export const DEFAULT_NODE_HEIGHT = 32\nexport const MAX_DEFERRED_NODE_COUNT = 900\n\nexport interface LiveRange {\n start: number\n end: number\n}\n\nexport interface DeferNodesOptions {\n deferNodesUntilVisible?: boolean\n maxLiveNodes?: number\n parsedNodeCount: number\n viewportPriority?: boolean\n virtualizationEnabled: boolean\n}\n\nexport function resolveVirtualizationEnabled(parsedNodeCount: number, maxLiveNodes?: number) {\n const configuredMaxLiveNodes = Math.trunc(maxLiveNodes ?? 320)\n if (!Number.isFinite(configuredMaxLiveNodes) || configuredMaxLiveNodes <= 0)\n return false\n const resolvedMaxLiveNodes = Math.max(1, configuredMaxLiveNodes)\n return parsedNodeCount > resolvedMaxLiveNodes\n}\n\nexport function resolveDeferNodes(options: DeferNodesOptions) {\n if (options.deferNodesUntilVisible === false)\n return false\n const configuredMaxLiveNodes = Math.trunc(options.maxLiveNodes ?? 320)\n if (!Number.isFinite(configuredMaxLiveNodes) || configuredMaxLiveNodes <= 0)\n return false\n if (options.virtualizationEnabled)\n return false\n if (options.parsedNodeCount > MAX_DEFERRED_NODE_COUNT)\n return false\n return options.viewportPriority !== false\n}\n\nexport function resolveAverageNodeHeight(\n nodeHeights: ReadonlyMap<number, number>,\n fallback = DEFAULT_NODE_HEIGHT,\n) {\n if (!nodeHeights.size)\n return fallback\n\n let total = 0\n for (const height of nodeHeights.values())\n total += height\n\n return Math.max(16, total / nodeHeights.size)\n}\n\nexport function estimateHeightRange(\n start: number,\n end: number,\n nodeHeights: ReadonlyMap<number, number>,\n averageNodeHeight: number,\n) {\n if (start >= end)\n return 0\n\n let total = 0\n for (let index = start; index < end; index += 1)\n total += nodeHeights.get(index) ?? averageNodeHeight\n return total\n}\n\nexport function computeLiveRange(\n total: number,\n focusIndex: number,\n maxLiveNodes?: number,\n liveNodeBuffer?: number,\n): LiveRange {\n if (!total)\n return { start: 0, end: 0 }\n\n const resolvedMaxLiveNodes = Math.max(1, Math.trunc(maxLiveNodes ?? 320))\n const resolvedBuffer = Math.max(0, Math.trunc(liveNodeBuffer ?? 60))\n const focus = Math.max(0, Math.min(Math.trunc(focusIndex), total - 1))\n\n let start = Math.max(0, focus - resolvedBuffer)\n let end = Math.min(total, focus + resolvedBuffer + 1)\n const size = end - start\n\n if (size > resolvedMaxLiveNodes) {\n const excess = size - resolvedMaxLiveNodes\n start += Math.ceil(excess / 2)\n end -= Math.floor(excess / 2)\n }\n else if (size < resolvedMaxLiveNodes) {\n const missing = resolvedMaxLiveNodes - size\n start = Math.max(0, start - Math.ceil(missing / 2))\n end = Math.min(total, end + Math.floor(missing / 2))\n }\n\n return {\n start: Math.max(0, Math.min(start, total)),\n end: Math.max(0, Math.min(Math.max(end, start), total)),\n }\n}\n","import { InjectionToken } from '@angular/core'\n\nexport interface SmoothStreamingScope {\n isSmoothStreamingEnabled: () => boolean\n}\n\nexport const MARKSTREAM_SMOOTH_STREAMING_SCOPE\n = new InjectionToken<SmoothStreamingScope>('MARKSTREAM_SMOOTH_STREAMING_SCOPE')\n","import type { AfterViewInit, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core'\nimport type { SmoothMarkdownStreamOptions } from 'markstream-core'\nimport type { RenderedHtmlEnhancementHandle } from '../../enhanceRenderedHtml'\nimport type {\n AngularRenderableNode,\n AngularRenderContext,\n CodeBlockPreviewPayload,\n NodeRendererEvents,\n NodeRendererProps,\n} from '../shared/node-helpers'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core'\nimport { getCustomNodeComponents, subscribeCustomComponents } from '../../customComponents'\nimport { disposeRenderedHtmlEnhancements, enhanceRenderedHtml } from '../../enhanceRenderedHtml'\nimport { SmoothMarkdownStreamService } from '../../services/smooth-markdown-stream.service'\nimport { NodeOutletComponent } from '../NodeOutlet/NodeOutlet.component'\nimport {\n buildRenderContext,\n resolveParsedNodes,\n} from '../shared/node-helpers'\nimport {\n computeLiveRange,\n estimateHeightRange,\n resolveAverageNodeHeight,\n resolveDeferNodes,\n resolveVirtualizationEnabled,\n} from '../shared/render-window'\nimport { MARKSTREAM_SMOOTH_STREAMING_SCOPE } from '../shared/smooth-streaming-scope'\n\ninterface VisibleNodeEntry {\n node: AngularRenderableNode\n index: number\n render: boolean\n animate: boolean\n placeholderHeight: number\n}\n\ninterface ObserverConfig {\n root: Element | null\n rootMargin: string\n threshold: number\n}\n\ninterface IdleDeadlineLike {\n timeRemaining?: () => number\n}\n\nconst SCROLL_PARENT_OVERFLOW_RE = /auto|scroll|overlay/i\n\n@Component({\n selector: 'markstream-angular',\n standalone: true,\n imports: [CommonModule, NodeOutletComponent],\n providers: [\n {\n provide: MARKSTREAM_SMOOTH_STREAMING_SCOPE,\n useExisting: forwardRef(() => NodeRendererComponent),\n },\n ],\n template: `\n <div\n #root\n class=\"markstream-angular markdown-renderer\"\n [class.dark]=\"isDark\"\n [class.virtualized]=\"virtualizationEnabled\"\n (click)=\"click.emit($event)\"\n (mouseover)=\"handleMouseOver($event)\"\n (mouseout)=\"handleMouseOut($event)\"\n >\n <div\n *ngIf=\"topSpacerHeight > 0\"\n class=\"node-spacer\"\n [style.height.px]=\"topSpacerHeight\"\n aria-hidden=\"true\"\n ></div>\n\n <div\n *ngFor=\"let entry of visibleEntries; trackBy: trackByEntry\"\n class=\"node-slot\"\n [attr.data-node-index]=\"entry.index\"\n [attr.data-node-type]=\"entry.node.type\"\n >\n <div\n *ngIf=\"entry.render; else nodePlaceholder\"\n class=\"node-content\"\n [class.fade-node]=\"entry.animate\"\n [class.typewriter-node]=\"entry.animate\"\n [attr.data-node-index]=\"entry.index\"\n >\n <markstream-angular-node-outlet\n [node]=\"entry.node\"\n [context]=\"renderContext\"\n [indexKey]=\"entryIndexKey(entry.index)\"\n />\n </div>\n\n <ng-template #nodePlaceholder>\n <div class=\"node-placeholder\" [style.height.px]=\"entry.placeholderHeight\"></div>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"bottomSpacerHeight > 0\"\n class=\"node-spacer\"\n [style.height.px]=\"bottomSpacerHeight\"\n aria-hidden=\"true\"\n ></div>\n\n <span\n *ngIf=\"showTypewriterCursor\"\n #typewriterCursor\n class=\"typewriter-cursor\"\n aria-hidden=\"true\"\n ></span>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NodeRendererComponent implements NodeRendererProps, OnChanges, OnInit, AfterViewInit, OnDestroy {\n private readonly cdr = inject(ChangeDetectorRef)\n private readonly hostRef = inject(ElementRef<HTMLElement>)\n private readonly smoothStream = new SmoothMarkdownStreamService()\n private readonly parentSmoothStreamingScope = inject(\n MARKSTREAM_SMOOTH_STREAMING_SCOPE,\n { optional: true, skipSelf: true },\n )\n\n @ViewChild('root') private rootRef?: ElementRef<HTMLElement>\n @ViewChild('typewriterCursor') private typewriterCursorRef?: ElementRef<HTMLSpanElement>\n\n @Input() content = ''\n @Input() nodes?: readonly AngularRenderableNode[] | null\n @Input() final?: boolean\n @Input() parseOptions?: NodeRendererProps['parseOptions']\n @Input() customMarkdownIt?: NodeRendererProps['customMarkdownIt']\n @Input() debugPerformance?: boolean\n @Input() customHtmlTags?: readonly string[]\n @Input() htmlPolicy: NodeRendererProps['htmlPolicy'] = 'safe'\n @Input() viewportPriority?: boolean\n @Input() codeBlockStream = true\n @Input() codeBlockDarkTheme?: NodeRendererProps['codeBlockDarkTheme']\n @Input() codeBlockLightTheme?: NodeRendererProps['codeBlockLightTheme']\n @Input() codeBlockMonacoOptions?: NodeRendererProps['codeBlockMonacoOptions']\n @Input() renderCodeBlocksAsPre = false\n @Input() codeBlockMinWidth?: string | number\n @Input() codeBlockMaxWidth?: string | number\n @Input() codeBlockProps?: NodeRendererProps['codeBlockProps']\n @Input() mermaidProps?: NodeRendererProps['mermaidProps']\n @Input() d2Props?: NodeRendererProps['d2Props']\n @Input() infographicProps?: NodeRendererProps['infographicProps']\n @Input() customComponents?: NodeRendererProps['customComponents']\n @Input() showTooltips = true\n @Input() themes?: string[]\n @Input() isDark = false\n @Input() customId?: string\n @Input() indexKey?: number | string\n /** Show a blinking typewriter cursor while streamed content grows. Default: false */\n @Input() typewriter = false\n /** Enable/disable non-code-node enter and streamed-text fade animations. Default: true */\n @Input() fade = true\n @Input() batchRendering = true\n @Input() initialRenderBatchSize = 40\n @Input() renderBatchSize = 80\n @Input() renderBatchDelay = 16\n @Input() renderBatchBudgetMs = 6\n @Input() renderBatchIdleTimeoutMs = 120\n @Input() deferNodesUntilVisible = true\n @Input() maxLiveNodes = 320\n @Input() liveNodeBuffer = 60\n @Input() allowHtml = true\n @Input() smoothStreaming: boolean | 'auto' = 'auto'\n @Input() smoothStreamingOptions?: SmoothMarkdownStreamOptions\n\n @Output() copy = new EventEmitter<string>()\n @Output() handleArtifactClick = new EventEmitter<CodeBlockPreviewPayload>()\n @Output() click = new EventEmitter<MouseEvent>()\n @Output() mouseover = new EventEmitter<MouseEvent>()\n @Output() mouseout = new EventEmitter<MouseEvent>()\n\n parsedNodes: AngularRenderableNode[] = []\n visibleEntries: VisibleNodeEntry[] = []\n renderContext: AngularRenderContext = { events: {} }\n topSpacerHeight = 0\n bottomSpacerHeight = 0\n\n private renderedCount = 0\n private focusIndex = 0\n private liveRange = { start: 0, end: 0 }\n private readonly nodeHeights = new Map<number, number>()\n private readonly nodeVisibility = new Set<number>()\n private readonly nodeSeen = new Set<number>()\n private readonly textStreamState = new Map<string, string>()\n private streamRenderVersion = 0\n private readonly slotElements = new Map<number, HTMLElement>()\n private readonly observedElements = new Map<number, HTMLElement>()\n private observer: IntersectionObserver | null = null\n private observerConfig: ObserverConfig | null = null\n private readonly observerIndexByElement = new Map<Element, number>()\n\n private batchTimer: number | null = null\n private batchRaf: number | null = null\n private batchIdle: number | null = null\n private batchPending = false\n private enhancementToken = 0\n private enhancementTimer: number | null = null\n private enhancementHandle: RenderedHtmlEnhancementHandle | null = null\n private postRenderTimer: number | null = null\n private unsubscribeCustomComponents?: () => void\n private isSyncingSmoothStream = false\n private hasMountedForSmoothStreaming = false\n private unsubscribeSmoothStream?: () => void\n private previousRenderContent = ''\n private previousEffectiveFinal: boolean | undefined\n private previousRenderVersionSource: unknown\n\n // ── Typewriter cursor ──\n showTypewriterCursor = false\n private typewriterCursorTimeout: ReturnType<typeof setTimeout> | undefined\n private lastTypewriterContentLength = 0\n private static readonly TYPEWRITER_CURSOR_EXCLUDED_NODE_TYPES = new Set(['code_block', 'admonition', 'table', 'math_block', 'html_block', 'image'])\n\n get hasNodes(): boolean {\n return Array.isArray(this.nodes)\n }\n\n get smoothStreamingEligible(): boolean {\n if (this.smoothStreaming === false)\n return false\n if (this.hasNodes)\n return false\n // When the parent renderer is already pacing content, avoid double-pacing\n // in nested renderers (e.g. thinking blocks, custom tag content).\n // Only applies in 'auto' mode — smoothStreaming === true explicitly opts in.\n if (this.smoothStreaming !== true && this.parentSmoothStreamingScope?.isSmoothStreamingEnabled())\n return false\n if (this.smoothStreaming === true)\n return true\n return this.typewriter === true || (this.maxLiveNodes ?? 0) <= 0\n }\n\n get smoothStreamingEnabled(): boolean {\n // Mounted gate: prevent smooth streaming from pacing initial static content\n // on the first client render (avoids blank flash).\n // Only applies in 'auto' mode — smoothStreaming === true explicitly opts in\n // and the gate is always open. SSR (typeof window === 'undefined') also opens\n // the gate because the core controller has no RAF and will flush immediately.\n const gateOpen = typeof window === 'undefined'\n || this.hasMountedForSmoothStreaming\n || this.smoothStreaming === true\n\n return gateOpen && this.smoothStreamingEligible\n }\n\n get renderContent(): string {\n return this.smoothStreamingEnabled ? this.smoothStream.visible : (this.content ?? '')\n }\n\n get rawContent(): string {\n return this.content ?? ''\n }\n\n get smoothSourceSynced(): boolean {\n return this.hasNodes || this.smoothStream.source === this.rawContent\n }\n\n get requestedFinal(): boolean | undefined {\n const base = this.parseOptions ?? {} as any\n return this.final ?? base.final\n }\n\n get effectiveFinal(): boolean | undefined {\n if (this.smoothStreamingEnabled && this.requestedFinal != null)\n return Boolean(this.requestedFinal && this.smoothSourceSynced && this.smoothStream.caughtUp)\n return this.requestedFinal\n }\n\n get resolvedIndexPrefix() {\n return this.indexKey != null ? String(this.indexKey) : 'renderer'\n }\n\n isSmoothStreamingEnabled(): boolean {\n return this.smoothStreamingEnabled\n }\n\n get resolvedInitialBatchSize() {\n return Math.max(1, Math.trunc(this.initialRenderBatchSize || 40))\n }\n\n get resolvedRenderBatchSize() {\n return Math.max(1, Math.trunc(this.renderBatchSize || 80))\n }\n\n get resolvedMaxLiveNodes() {\n return Math.max(1, Math.trunc(this.maxLiveNodes ?? 320))\n }\n\n get resolvedLiveNodeBuffer() {\n return Math.max(0, Math.trunc(this.liveNodeBuffer ?? 60))\n }\n\n get liveWindowEnabled() {\n const configuredMaxLiveNodes = Math.trunc(this.maxLiveNodes ?? 320)\n return Number.isFinite(configuredMaxLiveNodes) && configuredMaxLiveNodes > 0\n }\n\n get viewportPriorityEnabled() {\n return this.viewportPriority !== false\n }\n\n get virtualizationEnabled() {\n return resolveVirtualizationEnabled(this.parsedNodes.length, this.maxLiveNodes)\n }\n\n get incrementalRenderingActive() {\n return this.batchRendering !== false\n && typeof window !== 'undefined'\n && !this.liveWindowEnabled\n && !this.virtualizationEnabled\n && this.parsedNodes.length > this.resolvedInitialBatchSize\n }\n\n get deferNodesActive() {\n return resolveDeferNodes({\n deferNodesUntilVisible: this.deferNodesUntilVisible,\n maxLiveNodes: this.maxLiveNodes,\n parsedNodeCount: this.parsedNodes.length,\n viewportPriority: this.viewportPriorityEnabled,\n virtualizationEnabled: this.virtualizationEnabled,\n })\n }\n\n get shouldObserveSlots() {\n return this.deferNodesActive || this.virtualizationEnabled\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.ensureSmoothStreamInitialized()\n\n const previousRenderContent = this.renderContent\n const previousEffectiveFinal = this.effectiveFinal\n\n this.syncSmoothStream()\n\n // When smooth streaming is active, raw content/final appends should not\n // trigger a full rebuild unless the visible (renderContent) or effectiveFinal\n // actually advanced. The smooth stream subscription already calls rebuild()\n // when visible ticks forward, so skipping here avoids redundant parse/rebuild\n // cycles driven by raw chunk cadence.\n // Only skip when *only* raw stream inputs (content/final) changed — if any\n // other input (isDark, customHtmlTags, codeBlockProps, etc.) also changed in\n // this cycle, we must rebuild to honour those changes.\n const changeKeys = Object.keys(changes)\n const onlyRawStreamChanges = changeKeys.every(key => key === 'content' || key === 'final')\n\n if (\n this.smoothStreamingEnabled\n && onlyRawStreamChanges\n && changes.content\n && previousRenderContent === this.renderContent\n && previousEffectiveFinal === this.effectiveFinal\n ) {\n return\n }\n\n this.rebuild()\n }\n\n ngOnInit() {\n this.smoothStream.init(this.smoothStreamingOptions)\n\n this.unsubscribeSmoothStream = this.smoothStream.subscribe(() => {\n if (this.isSyncingSmoothStream)\n return\n\n const nextRenderContent = this.renderContent\n const nextEffectiveFinal = this.effectiveFinal\n\n if (\n nextRenderContent !== this.previousRenderContent\n || nextEffectiveFinal !== this.previousEffectiveFinal\n ) {\n this.rebuild()\n }\n })\n\n const previousRenderContent = this.renderContent\n const previousEffectiveFinal = this.effectiveFinal\n\n this.hasMountedForSmoothStreaming = true\n this.syncSmoothStream()\n\n if (\n previousRenderContent !== this.renderContent\n || previousEffectiveFinal !== this.effectiveFinal\n ) {\n this.rebuild()\n }\n\n this.unsubscribeCustomComponents = subscribeCustomComponents(() => {\n this.rebuild()\n })\n }\n\n ngAfterViewInit() {\n this.schedulePostRenderWork()\n }\n\n ngOnDestroy() {\n this.unsubscribeSmoothStream?.()\n this.unsubscribeSmoothStream = undefined\n this.stopBatching()\n this.clearPostRenderWork()\n this.enhancementToken += 1\n this.disposeEnhancements()\n this.unsubscribeCustomComponents?.()\n this.unsubscribeCustomComponents = undefined\n this.disconnectObserver()\n this.smoothStream.ngOnDestroy()\n if (this.enhancementTimer != null && typeof window !== 'undefined') {\n window.clearTimeout(this.enhancementTimer)\n this.enhancementTimer = null\n }\n this.clearTypewriterCursorTimeout()\n }\n\n trackByEntry = (_index: number, entry: VisibleNodeEntry) => {\n return `${this.resolvedIndexPrefix}-${entry.index}`\n }\n\n entryIndexKey(index: number) {\n return `${this.resolvedIndexPrefix}-${index}`\n }\n\n handleMouseOver(event: MouseEvent) {\n const target = event.target as HTMLElement | null\n if (target?.closest('[data-node-index]'))\n this.mouseover.emit(event)\n }\n\n handleMouseOut(event: MouseEvent) {\n const target = event.target as HTMLElement | null\n if (target?.closest('[data-node-index]'))\n this.mouseout.emit(event)\n }\n\n private ensureSmoothStreamInitialized(): void {\n if (this.smoothStream)\n this.smoothStream.init(this.smoothStreamingOptions)\n }\n\n private syncSmoothStream() {\n if (!this.smoothStream)\n return\n\n this.isSyncingSmoothStream = true\n\n try {\n const nextContent = this.content ?? ''\n\n if (this.hasNodes) {\n this.smoothStream.reset('')\n return\n }\n\n if (!this.smoothStreamingEnabled) {\n this.smoothStream.reset(nextContent)\n if (this.requestedFinal)\n this.smoothStream.finish({ flush: true })\n return\n }\n\n const source = this.smoothStream.source\n\n if (!nextContent) {\n this.smoothStream.reset('')\n }\n else if (nextContent === source) {\n // no-op\n }\n else if (nextContent.startsWith(source)) {\n this.smoothStream.enqueue(nextContent.slice(source.length))\n }\n else {\n this.smoothStream.reset(nextContent)\n }\n\n if (this.requestedFinal)\n this.smoothStream.finish()\n }\n finally {\n this.isSyncingSmoothStream = false\n }\n }\n\n private rebuild() {\n this.stopBatching()\n this.disposeEnhancements()\n this.cleanupTransientState()\n\n // Bump streamRenderVersion based on renderContent/nodes (not raw content)\n const renderVersionSource = this.hasNodes ? this.nodes : this.renderContent\n if (this.previousRenderVersionSource !== renderVersionSource) {\n this.streamRenderVersion += 1\n this.previousRenderVersionSource = renderVersionSource\n }\n this.previousRenderContent = this.renderContent\n this.previousEffectiveFinal = this.effectiveFinal\n\n const scopedCustomComponents = getCustomNodeComponents(this.customId)\n const mergedCustomComponents = this.customComponents\n ? {\n ...scopedCustomComponents,\n ...this.customComponents,\n }\n : scopedCustomComponents\n\n const events: NodeRendererEvents = {\n onCopy: code => this.copy.emit(code),\n onHandleArtifactClick: payload => this.handleArtifactClick.emit(payload),\n }\n\n this.renderContext = buildRenderContext(\n {\n ...this,\n content: this.renderContent,\n final: this.effectiveFinal,\n fade: this.fade,\n customComponents: mergedCustomComponents,\n },\n events,\n this.textStreamState,\n this.streamRenderVersion,\n )\n this.parsedNodes = resolveParsedNodes({\n ...this,\n content: this.renderContent,\n final: this.effectiveFinal,\n })\n this.trimMeasuredState()\n\n const total = this.parsedNodes.length\n this.focusIndex = Math.max(0, Math.min(this.focusIndex, Math.max(0, total - 1)))\n if (this.virtualizationEnabled) {\n this.renderedCount = total\n this.liveRange = computeLiveRange(total, this.focusIndex, this.resolvedMaxLiveNodes, this.resolvedLiveNodeBuffer)\n }\n else {\n this.liveRange = { start: 0, end: total }\n this.renderedCount = this.incrementalRenderingActive\n ? Math.min(total, this.resolvedInitialBatchSize)\n : total\n }\n\n if (!this.deferNodesActive)\n this.nodeVisibility.clear()\n\n this.refreshVisibleEntries()\n this.updateTypewriterCursorState()\n this.cdr.markForCheck()\n this.schedulePostRenderWork()\n\n if (this.incrementalRenderingActive && this.renderedCount < total)\n this.scheduleBatchStep()\n }\n\n private cleanupTransientState() {\n this.slotElements.clear()\n this.disconnectObserver()\n }\n\n private trimMeasuredState() {\n const total = this.parsedNodes.length\n for (const index of Array.from(this.nodeHeights.keys())) {\n if (index >= total)\n this.nodeHeights.delete(index)\n }\n for (const index of Array.from(this.nodeSeen)) {\n if (index >= total)\n this.nodeSeen.delete(index)\n }\n for (const index of Array.from(this.nodeVisibility)) {\n if (index >= total)\n this.nodeVisibility.delete(index)\n }\n }\n\n private refreshVisibleEntries() {\n const averageNodeHeight = resolveAverageNodeHeight(this.nodeHeights)\n const total = this.parsedNodes.length\n const source = this.virtualizationEnabled\n ? this.parsedNodes.slice(this.liveRange.start, this.liveRange.end).map((node, offset) => ({\n node,\n index: this.liveRange.start + offset,\n }))\n : this.parsedNodes.map((node, index) => ({ node, index }))\n\n this.topSpacerHeight = this.virtualizationEnabled\n ? estimateHeightRange(0, Math.min(this.liveRange.start, total), this.nodeHeights, averageNodeHeight)\n : 0\n this.bottomSpacerHeight = this.virtualizationEnabled\n ? estimateHeightRange(Math.min(this.liveRange.end, total), total, this.nodeHeights, averageNodeHeight)\n : 0\n\n this.visibleEntries = source.map(({ node, index }) => {\n const render = this.shouldRenderNode(index)\n let animate = false\n if (\n render\n && this.fade !== false\n && String((node as any)?.type || '') !== 'code_block'\n && !this.nodeSeen.has(index)\n ) {\n animate = true\n this.nodeSeen.add(index)\n }\n\n return {\n node,\n index,\n render,\n animate,\n placeholderHeight: this.nodeHeights.get(index) ?? averageNodeHeight,\n }\n })\n }\n\n private shouldRenderNode(index: number) {\n if (this.incrementalRenderingActive && index >= this.renderedCount)\n return false\n if (!this.deferNodesActive)\n return true\n if (index < this.resolvedInitialBatchSize)\n return true\n return this.nodeVisibility.has(index)\n }\n\n private scheduleBatchStep() {\n if (!this.incrementalRenderingActive || typeof window === 'undefined')\n return\n if (this.batchPending || this.renderedCount >= this.parsedNodes.length)\n return\n\n this.batchPending = true\n const run = (deadline?: IdleDeadlineLike) => {\n this.batchPending = false\n this.batchTimer = null\n this.batchRaf = null\n this.batchIdle = null\n\n const budget = Math.max(2, Math.trunc(this.renderBatchBudgetMs || 6))\n let nextCount = this.renderedCount\n do {\n nextCount = Math.min(this.parsedNodes.length, nextCount + this.resolvedRenderBatchSize)\n if (!deadline)\n break\n const remaining = typeof deadline.timeRemaining === 'function' ? deadline.timeRemaining() : 0\n if (remaining <= budget * 0.5)\n break\n } while (nextCount < this.parsedNodes.length)\n\n if (nextCount !== this.renderedCount) {\n this.renderedCount = nextCount\n this.refreshVisibleEntries()\n this.cdr.markForCheck()\n this.schedulePostRenderWork()\n }\n\n if (this.renderedCount < this.parsedNodes.length)\n this.scheduleBatchStep()\n }\n\n const idleCallback = (window as any).requestIdleCallback as ((cb: (deadline: IdleDeadlineLike) => void, opts?: { timeout?: number }) => number) | undefined\n const delay = Math.max(0, Math.trunc(this.renderBatchDelay || 0))\n if (idleCallback) {\n this.batchIdle = idleCallback(run, { timeout: Math.max(0, Math.trunc(this.renderBatchIdleTimeoutMs || 120)) })\n return\n }\n\n if (typeof window.requestAnimationFrame === 'function') {\n this.batchRaf = window.requestAnimationFrame(() => {\n if (delay === 0) {\n run()\n return\n }\n this.batchTimer = window.setTimeout(() => run(), delay)\n })\n return\n }\n\n this.batchTimer = window.setTimeout(() => run(), delay)\n }\n\n private stopBatching() {\n this.batchPending = false\n if (this.batchTimer != null && typeof window !== 'undefined') {\n window.clearTimeout(this.batchTimer)\n this.batchTimer = null\n }\n if (this.batchRaf != null && typeof window !== 'undefined' && typeof window.cancelAnimationFrame === 'function') {\n window.cancelAnimationFrame(this.batchRaf)\n this.batchRaf = null\n }\n const cancelIdle = (typeof window !== 'undefined' ? (window as any).cancelIdleCallback : null) as ((id: number) => void) | null\n if (this.batchIdle != null && cancelIdle) {\n cancelIdle(this.batchIdle)\n this.batchIdle = null\n }\n }\n\n private schedulePostRenderWork() {\n if (typeof window === 'undefined')\n return\n this.clearPostRenderWork()\n this.postRenderTimer = window.setTimeout(() => {\n this.postRenderTimer = null\n this.syncSlotObservers()\n this.measureNodeHeights()\n this.scheduleEnhancements()\n }, 0)\n }\n\n private clearPostRenderWork() {\n if (this.postRenderTimer != null && typeof window !== 'undefined') {\n window.clearTimeout(this.postRenderTimer)\n this.postRenderTimer = null\n }\n }\n\n private syncSlotObservers() {\n const root = this.rootRef?.nativeElement\n if (!root)\n return\n\n const currentIndices = new Set<number>()\n const slots = Array.from(root.querySelectorAll<HTMLElement>('.node-slot[data-node-index]'))\n for (const slot of slots) {\n const index = Number(slot.dataset.nodeIndex)\n if (!Number.isFinite(index))\n continue\n currentIndices.add(index)\n this.slotElements.set(index, slot)\n this.observeSlot(index, slot)\n }\n\n for (const [index] of Array.from(this.slotElements.entries())) {\n if (currentIndices.has(index))\n continue\n this.slotElements.delete(index)\n this.unobserveIndex(index)\n }\n }\n\n private observeSlot(index: number, slot: HTMLElement) {\n if (!this.shouldObserveSlots) {\n this.unobserveIndex(index)\n this.markNodeVisible(index)\n return\n }\n\n if (index < this.resolvedInitialBatchSize && !this.virtualizationEnabled) {\n this.unobserveIndex(index)\n this.markNodeVisible(index)\n return\n }\n\n const existing = this.observedElements.get(index)\n if (existing === slot)\n return\n\n this.unobserveIndex(index)\n const observer = this.ensureObserver('400px', 0)\n if (!observer) {\n this.markNodeVisible(index)\n return\n }\n\n this.observedElements.set(index, slot)\n this.observerIndexByElement.set(slot, index)\n observer.observe(slot)\n }\n\n private ensureObserver(rootMargin: string, threshold: number) {\n if (typeof window === 'undefined')\n return null\n if (typeof IntersectionObserver === 'undefined')\n return null\n if (!this.viewportPriorityEnabled && !this.virtualizationEnabled)\n return null\n\n const nextConfig: ObserverConfig = {\n root: this.resolveViewportRoot(),\n rootMargin,\n threshold,\n }\n\n if (\n this.observer\n && this.observerConfig\n && this.observerConfig.root === nextConfig.root\n && this.observerConfig.rootMargin === nextConfig.rootMargin\n && this.observerConfig.threshold === nextConfig.threshold\n ) {\n return this.observer\n }\n\n this.disconnectObserver()\n this.observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (!(entry.isIntersecting || entry.intersectionRatio > 0))\n continue\n const index = this.observerIndexByElement.get(entry.target)\n if (index == null)\n continue\n this.unobserveIndex(index)\n this.markNodeVisible(index)\n }\n }, nextConfig)\n this.observerConfig = nextConfig\n return this.observer\n }\n\n private resolveViewportRoot() {\n const base = this.rootRef?.nativeElement || this.hostRef.nativeElement\n if (!base || typeof window === 'undefined')\n return null\n\n const doc = base.ownerDocument || document\n const rootScrollable = doc.scrollingElement || doc.documentElement\n let current = base.parentElement\n while (current) {\n if (current === doc.body || current === rootScrollable)\n break\n const style = window.getComputedStyle(current)\n const overflowY = (style.overflowY || '').toLowerCase()\n const overflow = (style.overflow || '').toLowerCase()\n if (SCROLL_PARENT_OVERFLOW_RE.test(overflowY) || SCROLL_PARENT_OVERFLOW_RE.test(overflow))\n return current\n current = current.parentElement\n }\n\n return null\n }\n\n private markNodeVisible(index: number) {\n let changed = false\n if (this.deferNodesActive && !this.nodeVisibility.has(index)) {\n this.nodeVisibility.add(index)\n changed = true\n }\n\n if (this.virtualizationEnabled && index > this.focusIndex) {\n this.focusIndex = index\n this.liveRange = computeLiveRange(\n this.parsedNodes.length,\n this.focusIndex,\n this.resolvedMaxLiveNodes,\n this.resolvedLiveNodeBuffer,\n )\n changed = true\n }\n\n if (!changed)\n return\n\n this.refreshVisibleEntries()\n this.cdr.markForCheck()\n this.schedulePostRenderWork()\n }\n\n private unobserveIndex(index: number) {\n const element = this.observedElements.get(index)\n if (!element)\n return\n try {\n this.observer?.unobserve(element)\n }\n catch {\n // Ignore observer cleanup failures.\n }\n this.observerIndexByElement.delete(element)\n this.observedElements.delete(index)\n }\n\n private disconnectObserver() {\n try {\n this.observer?.disconnect()\n }\n catch {\n // Ignore observer cleanup failures.\n }\n this.observer = null\n this.observerConfig = null\n this.observerIndexByElement.clear()\n this.observedElements.clear()\n }\n\n private measureNodeHeights() {\n const root = this.rootRef?.nativeElement\n if (!root)\n return\n\n let changed = false\n const contentNodes = Array.from(root.querySelectorAll<HTMLElement>('.node-content[data-node-index]'))\n for (const element of contentNodes) {\n const index = Number(element.dataset.nodeIndex)\n if (!Number.isFinite(index))\n continue\n const height = element.offsetHeight\n if (!height)\n continue\n if (this.nodeHeights.get(index) !== height) {\n this.nodeHeights.set(index, height)\n changed = true\n }\n }\n\n if (!changed)\n return\n\n this.refreshVisibleEntries()\n this.cdr.markForCheck()\n }\n\n private scheduleEnhancements() {\n if (typeof window === 'undefined')\n return\n\n const token = ++this.enhancementToken\n if (this.enhancementTimer != null)\n window.clearTimeout(this.enhancementTimer)\n\n this.enhancementTimer = window.setTimeout(() => {\n this.enhancementTimer = null\n void this.applyEnhancements(token)\n }, 0)\n }\n\n private async applyEnhancements(token: number) {\n if (token !== this.enhancementToken)\n return\n\n const root = this.rootRef?.nativeElement || this.hostRef.nativeElement.querySelector('.markstream-angular') as HTMLElement | null\n if (!root)\n return\n\n const handle = await enhanceRenderedHtml(root, {\n final: this.effectiveFinal,\n isDark: this.isDark,\n renderCodeBlocksAsPre: this.renderCodeBlocksAsPre,\n monacoOptions: this.codeBlockMonacoOptions,\n d2ThemeId: this.d2Props?.themeId ?? null,\n d2DarkThemeId: this.d2Props?.darkThemeId ?? null,\n showTooltips: this.showTooltips,\n codeBlockProps: this.codeBlockProps,\n mermaidProps: this.mermaidProps,\n d2Props: this.d2Props,\n infographicProps: this.infographicProps,\n onCopy: code => this.copy.emit(code),\n isCancelled: () => token !== this.enhancementToken,\n })\n\n if (token !== this.enhancementToken) {\n handle.dispose()\n return\n }\n\n this.enhancementHandle = handle\n this.measureNodeHeights()\n }\n\n private disposeEnhancements() {\n this.enhancementHandle?.dispose()\n this.enhancementHandle = null\n\n const root = this.rootRef?.nativeElement || this.hostRef.nativeElement.querySelector('.markstream-angular') as HTMLElement | null\n if (root)\n disposeRenderedHtmlEnhancements(root)\n }\n\n // ── Typewriter cursor ──\n private shouldSkipTypewriterCursorForNode(node: unknown): boolean {\n if (!node || typeof node !== 'object')\n return false\n const type = (node as Record<string, unknown>).type\n return typeof type === 'string' && NodeRendererComponent.TYPEWRITER_CURSOR_EXCLUDED_NODE_TYPES.has(type)\n }\n\n private shouldShowTypewriterCursorForCurrentNodes(): boolean {\n const lastNode = this.parsedNodes[this.parsedNodes.length - 1]\n return !this.shouldSkipTypewriterCursorForNode(lastNode)\n }\n\n private getNodeTextLength(node: unknown): number {\n if (!node || typeof node !== 'object')\n return 0\n const record = node as Record<string, unknown>\n const direct = record.raw ?? record.content ?? record.code\n if (typeof direct === 'string')\n return direct.length\n const children = record.children\n if (Array.isArray(children))\n return children.reduce((total: number, child: unknown) => total + this.getNodeTextLength(child), 0)\n const items = record.items\n if (Array.isArray(items))\n return items.reduce((total: number, item: unknown) => total + this.getNodeTextLength(item), 0)\n return 0\n }\n\n private getTypewriterContentLength(): number {\n if (this.nodes?.length)\n return (this.nodes as unknown[]).reduce<number>((total, node) => total + this.getNodeTextLength(node), 0)\n // Use raw content length, not renderContent (which may be the paced-out\n // visible portion when smooth streaming is active).\n return (this.content ?? '').length\n }\n\n private clearTypewriterCursorTimeout() {\n if (!this.typewriterCursorTimeout)\n return\n clearTimeout(this.typewriterCursorTimeout)\n this.typewriterCursorTimeout = undefined\n }\n\n private getLastTextNode(root: HTMLElement): Text | null {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n acceptNode(node) {\n const text = node.textContent ?? ''\n if (!text.trim())\n return NodeFilter.FILTER_REJECT\n const parent = node.parentElement\n if (!parent)\n return NodeFilter.FILTER_REJECT\n if (parent.closest('.typewriter-cursor, .height-estimation-probes, [data-node-type=\"code_block\"], [data-node-type=\"admonition\"], [data-node-type=\"table\"], [data-node-type=\"math_block\"], [data-node-type=\"html_block\"], [data-node-type=\"image\"], script, style'))\n return NodeFilter.FILTER_REJECT\n return NodeFilter.FILTER_ACCEPT\n },\n })\n let last: Text | null = null\n let current = walker.nextNode()\n while (current) {\n last = current as Text\n current = walker.nextNode()\n }\n return last\n }\n\n private updateTypewriterCursorPosition() {\n if (typeof window === 'undefined' || !this.showTypewriterCursor || !this.rootRef?.nativeElement || !this.typewriterCursorRef?.nativeElement)\n return\n const root = this.rootRef.nativeElement\n const cursor = this.typewriterCursorRef.nativeElement\n const lastText = this.getLastTextNode(root)\n const rootRect = root.getBoundingClientRect()\n let left = 0\n let top = 0\n let height = 20\n\n if (lastText?.textContent) {\n const range = document.createRange()\n const end = lastText.textContent.length\n range.setStart(lastText, Math.max(0, end - 1))\n range.setEnd(lastText, end)\n const rects = typeof range.getClientRects === 'function'\n ? range.getClientRects()\n : undefined\n const rect = rects?.[rects.length - 1] ?? lastText.parentElement?.getBoundingClientRect()\n if (rect) {\n left = rect.right - rootRect.left + root.scrollLeft\n top = rect.top - rootRect.top + root.scrollTop\n height = rect.height || height\n }\n range.detach()\n }\n\n cursor.style.transform = `translate(${Math.max(0, left)}px, ${Math.max(0, top)}px)`\n cursor.style.height = `${height}px`\n }\n\n private updateTypewriterCursorState() {\n if (typeof window === 'undefined' || this.hasNodes)\n return\n\n // When the stream is final (and effective — smooth streaming has caught up),\n // hide the cursor immediately.\n if (this.effectiveFinal) {\n this.showTypewriterCursor = false\n this.clearTypewriterCursorTimeout()\n return\n }\n\n const nextLength = this.getTypewriterContentLength()\n const cursorAllowed = this.shouldShowTypewriterCursorForCurrentNodes()\n if (this.typewriter === false || !cursorAllowed || nextLength <= this.lastTypewriterContentLength) {\n if (this.typewriter === false || !cursorAllowed)\n this.showTypewriterCursor = false\n this.lastTypewriterContentLength = nextLength\n return\n }\n\n this.lastTypewriterContentLength = nextLength\n this.showTypewriterCursor = true\n this.clearTypewriterCursorTimeout()\n requestAnimationFrame(() => {\n this.updateTypewriterCursorPosition()\n })\n this.typewriterCursorTimeout = setTimeout(() => {\n this.showTypewriterCursor = false\n this.cdr.markForCheck()\n }, 3000)\n }\n}\n","export type KaTeXCDNWorkerMode = 'classic' | 'module'\n\nexport interface KaTeXCDNWorkerOptions {\n katexUrl: string\n mhchemUrl?: string\n mode?: KaTeXCDNWorkerMode\n debug?: boolean\n workerOptions?: WorkerOptions\n renderOptions?: {\n throwOnError?: boolean\n output?: string\n strict?: string\n }\n}\n\nexport interface KaTeXCDNWorkerHandle {\n worker: Worker | null\n dispose: () => void\n source: string\n}\n\nfunction stringifyForWorker(value: any) {\n return JSON.stringify(value)\n}\n\nexport function buildKaTeXCDNWorkerSource(options: KaTeXCDNWorkerOptions): string {\n const mode: KaTeXCDNWorkerMode = options.mode ?? 'classic'\n const renderOptions = {\n throwOnError: true,\n displayMode: true,\n output: 'html',\n strict: 'ignore',\n ...(options.renderOptions || {}),\n }\n\n const renderOptionsLiteral = stringifyForWorker(renderOptions)\n const katexUrlLiteral = stringifyForWorker(options.katexUrl)\n const mhchemUrlLiteral = options.mhchemUrl ? stringifyForWorker(options.mhchemUrl) : '\"\"'\n\n if (mode === 'module') {\n return `\nlet DEBUG = false\nlet katex = null\nlet katexLoadError = null\nlet loadPromise = null\n\nfunction normalizeKaTeX(mod) {\n const resolved = mod && mod.default ? mod.default : mod\n if (resolved && typeof resolved.renderToString === 'function')\n return resolved\n return null\n}\n\nasync function loadKaTeX() {\n if (katex || katexLoadError)\n return\n if (!loadPromise) {\n loadPromise = (async () => {\n try {\n const mod = await import(${katexUrlLiteral})\n katex = normalizeKaTeX(mod) || null\n const mhchemUrl = ${mhchemUrlLiteral}\n if (mhchemUrl) {\n try {\n await import(mhchemUrl)\n }\n catch (e) {\n if (DEBUG)\n console.warn('[markstream-angular:katex-cdn-worker] failed to load mhchem', e)\n }\n }\n }\n catch (e) {\n katexLoadError = e\n }\n })()\n }\n await loadPromise\n}\n\nglobalThis.addEventListener('message', async (ev) => {\n const data = ev.data || {}\n if (data.type === 'init') {\n DEBUG = !!data.debug\n return\n }\n\n const id = data.id ?? ''\n const content = data.content ?? ''\n const displayMode = data.displayMode ?? true\n\n await loadKaTeX()\n\n if (!katex) {\n const reason = katexLoadError ? String(katexLoadError?.message || katexLoadError) : 'KaTeX is not available in worker'\n globalThis.postMessage({ id, error: reason, content, displayMode })\n return\n }\n\n try {\n const opts = ${renderOptionsLiteral}\n const html = katex.renderToString(content, { ...opts, displayMode: !!displayMode })\n globalThis.postMessage({ id, html, content, displayMode })\n }\n catch (err) {\n globalThis.postMessage({ id, error: String(err?.message || err), content, displayMode })\n }\n})\n`.trimStart()\n }\n\n return `\nlet DEBUG = false\nlet katex = null\nlet katexLoadError = null\n\nfunction normalizeKaTeX(val) {\n const resolved = val && val.default ? val.default : val\n if (resolved && typeof resolved.renderToString === 'function')\n return resolved\n return null\n}\n\nfunction loadKaTeXClassic() {\n if (katex || katexLoadError)\n return\n try {\n importScripts(${katexUrlLiteral})\n const mhchemUrl = ${mhchemUrlLiteral}\n if (mhchemUrl) {\n try {\n importScripts(mhchemUrl)\n }\n catch (e) {\n if (DEBUG)\n console.warn('[markstream-angular:katex-cdn-worker] failed to load mhchem', e)\n }\n }\n katex = normalizeKaTeX(globalThis.katex)\n }\n catch (e) {\n katexLoadError = e\n }\n}\n\nloadKaTeXClassic()\n\nglobalThis.addEventListener('message', (ev) => {\n const data = ev.data || {}\n if (data.type === 'init') {\n DEBUG = !!data.debug\n return\n }\n\n const id = data.id ?? ''\n const content = data.content ?? ''\n const displayMode = data.displayMode ?? true\n\n if (!katex && !katexLoadError)\n loadKaTeXClassic()\n\n if (!katex) {\n const reason = katexLoadError ? String(katexLoadError?.message || katexLoadError) : 'KaTeX is not available in worker'\n globalThis.postMessage({ id, error: reason, content, displayMode })\n return\n }\n\n try {\n const opts = ${renderOptionsLiteral}\n const html = katex.renderToString(content, { ...opts, displayMode: !!displayMode })\n globalThis.postMessage({ id, html, content, displayMode })\n }\n catch (err) {\n globalThis.postMessage({ id, error: String(err?.message || err), content, displayMode })\n }\n})\n`.trimStart()\n}\n\nexport function createKaTeXWorkerFromCDN(options: KaTeXCDNWorkerOptions): KaTeXCDNWorkerHandle {\n const source = buildKaTeXCDNWorkerSource(options)\n\n if (typeof Worker === 'undefined' || typeof URL === 'undefined' || typeof Blob === 'undefined') {\n return {\n worker: null,\n dispose: () => {},\n source,\n }\n }\n\n const blob = new Blob([source], { type: 'text/javascript' })\n const url = URL.createObjectURL(blob)\n let revoked = false\n\n const dispose = () => {\n if (revoked)\n return\n revoked = true\n try {\n URL.revokeObjectURL(url)\n }\n catch {\n // Ignore revoke failures.\n }\n }\n\n const mode = options.mode ?? 'classic'\n const workerOptions = mode === 'module'\n ? ({ ...(options.workerOptions ?? {}), type: 'module' as const } satisfies WorkerOptions)\n : options.workerOptions\n\n const worker = new Worker(url, workerOptions)\n if (options.debug) {\n try {\n worker.postMessage({ type: 'init', debug: true })\n }\n catch {\n // Ignore init messaging failures.\n }\n }\n\n return { worker, dispose, source }\n}\n","export type MermaidCDNWorkerMode = 'classic' | 'module'\n\nexport interface MermaidCDNWorkerOptions {\n mermaidUrl: string\n mode?: MermaidCDNWorkerMode\n debug?: boolean\n workerOptions?: WorkerOptions\n initializeOptions?: Record<string, any>\n}\n\nexport interface MermaidCDNWorkerHandle {\n worker: Worker | null\n dispose: () => void\n source: string\n}\n\nfunction stringifyForWorker(value: any) {\n return JSON.stringify(value)\n}\n\nexport function buildMermaidCDNWorkerSource(options: MermaidCDNWorkerOptions): string {\n const mode: MermaidCDNWorkerMode = options.mode ?? 'module'\n const mermaidUrlLiteral = stringifyForWorker(options.mermaidUrl)\n const initLiteral = stringifyForWorker({\n startOnLoad: false,\n securityLevel: 'strict',\n flowchart: { htmlLabels: false },\n ...(options.initializeOptions || {}),\n })\n\n const sharedLogic = `\nlet DEBUG = false\nlet mermaid = null\nlet mermaidLoadError = null\n\nfunction normalizeMermaidModule(mod) {\n if (!mod)\n return mod\n const candidate = mod && mod.default ? mod.default : mod\n if (candidate && (typeof candidate.render === 'function' || typeof candidate.parse === 'function' || typeof candidate.initialize === 'function'))\n return candidate\n if (candidate && candidate.mermaidAPI && (typeof candidate.mermaidAPI.render === 'function' || typeof candidate.mermaidAPI.parse === 'function')) {\n const api = candidate.mermaidAPI\n return {\n ...candidate,\n render: api.render ? api.render.bind(api) : undefined,\n parse: api.parse ? api.parse.bind(api) : undefined,\n initialize: (opts) => {\n if (typeof candidate.initialize === 'function')\n return candidate.initialize(opts)\n return api.initialize ? api.initialize(opts) : undefined\n },\n }\n }\n if (mod && mod.mermaid && typeof mod.mermaid.parse === 'function')\n return mod.mermaid\n return candidate\n}\n\nfunction applyThemeTo(code, theme) {\n const themeValue = theme === 'dark' ? 'dark' : 'default'\n const themeConfig = \\`%%{init: {\"theme\": \"\\${themeValue}\"}}%%\\\\n\\`\n const trimmed = String(code || '').trimStart()\n if (trimmed.startsWith('%%{'))\n return code\n return themeConfig + code\n}\n\nfunction findHeaderIndex(lines) {\n const headerRe = /^(?:graph|flowchart|flowchart\\\\s+tb|flowchart\\\\s+lr|sequenceDiagram|gantt|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|pie|quadrantChart|timeline|xychart(?:-beta)?)\\\\b/\n for (let i = 0; i < lines.length; i++) {\n const line = (lines[i] || '').trim()\n if (!line || line.startsWith('%%'))\n continue\n if (headerRe.test(line))\n return i\n }\n return -1\n}\n\nasync function canParse(code, theme) {\n const themed = applyThemeTo(code, theme)\n if (mermaid && typeof mermaid.parse === 'function') {\n await mermaid.parse(themed)\n return true\n }\n throw new Error('mermaid.parse not available in worker')\n}\n\nasync function findLastRenderablePrefix(baseCode, theme) {\n const lines = String(baseCode || '').split('\\\\n')\n const headerIndex = findHeaderIndex(lines)\n if (headerIndex === -1)\n return null\n const head = lines.slice(0, headerIndex + 1)\n await canParse(head.join('\\\\n'), theme)\n\n let low = headerIndex + 1\n let high = lines.length\n let lastGood = headerIndex + 1\n let tries = 0\n const MAX_TRIES = 12\n\n while (low <= high && tries < MAX_TRIES) {\n const mid = Math.floor((low + high) / 2)\n const candidate = [...head, ...lines.slice(headerIndex + 1, mid)].join('\\\\n')\n tries += 1\n try {\n await canParse(candidate, theme)\n lastGood = mid\n low = mid + 1\n }\n catch {\n high = mid - 1\n }\n }\n\n return [...head, ...lines.slice(headerIndex + 1, lastGood)].join('\\\\n')\n}\n\nfunction initMermaidOnce() {\n if (!mermaid)\n return\n try {\n if (typeof mermaid.initialize === 'function')\n mermaid.initialize(${initLiteral})\n }\n catch (e) {\n if (DEBUG)\n console.warn('[markstream-angular:mermaid-cdn-worker] initialize failed', e)\n }\n}\n\nglobalThis.addEventListener('message', async (ev) => {\n const msg = ev.data || {}\n if (msg.type === 'init') {\n DEBUG = !!msg.debug\n return\n }\n\n const id = msg.id\n const action = msg.action\n const payload = msg.payload || {}\n\n if (!mermaid) {\n const error = mermaidLoadError ? String(mermaidLoadError?.message || mermaidLoadError) : 'Mermaid is not available in worker'\n globalThis.postMessage({ id, ok: false, error })\n return\n }\n\n try {\n if (action === 'canParse') {\n const ok = await canParse(payload.code, payload.theme)\n globalThis.postMessage({ id, ok: true, result: ok })\n return\n }\n if (action === 'findPrefix') {\n const result = await findLastRenderablePrefix(payload.code, payload.theme)\n globalThis.postMessage({ id, ok: true, result })\n return\n }\n globalThis.postMessage({ id, ok: false, error: 'Unknown action' })\n }\n catch (e) {\n globalThis.postMessage({ id, ok: false, error: String(e?.message || e) })\n }\n})\n`.trimStart()\n\n if (mode === 'module') {\n return `\n${sharedLogic}\n\nlet loadPromise = null\nasync function loadMermaid() {\n if (mermaid || mermaidLoadError)\n return\n if (!loadPromise) {\n loadPromise = (async () => {\n try {\n const mod = await import(${mermaidUrlLiteral})\n mermaid = normalizeMermaidModule(mod) || null\n initMermaidOnce()\n }\n catch (e) {\n mermaidLoadError = e\n }\n })()\n }\n await loadPromise\n}\n\nawait loadMermaid()\n`.trimStart()\n }\n\n return `\n${sharedLogic}\n\nfunction loadMermaidClassic() {\n if (mermaid || mermaidLoadError)\n return\n try {\n importScripts(${mermaidUrlLiteral})\n mermaid = normalizeMermaidModule(globalThis.mermaid) || null\n initMermaidOnce()\n }\n catch (e) {\n mermaidLoadError = e\n }\n}\n\nloadMermaidClassic()\n`.trimStart()\n}\n\nexport function createMermaidWorkerFromCDN(options: MermaidCDNWorkerOptions): MermaidCDNWorkerHandle {\n const source = buildMermaidCDNWorkerSource(options)\n\n if (typeof Worker === 'undefined' || typeof URL === 'undefined' || typeof Blob === 'undefined') {\n return {\n worker: null,\n dispose: () => {},\n source,\n }\n }\n\n const blob = new Blob([source], { type: 'text/javascript' })\n const url = URL.createObjectURL(blob)\n let revoked = false\n\n const dispose = () => {\n if (revoked)\n return\n revoked = true\n try {\n URL.revokeObjectURL(url)\n }\n catch {\n // Ignore revoke failures.\n }\n }\n\n const mode = options.mode ?? 'module'\n const workerOptions = mode === 'module'\n ? ({ ...(options.workerOptions ?? {}), type: 'module' as const } satisfies WorkerOptions)\n : options.workerOptions\n\n const worker = new Worker(url, workerOptions)\n if (options.debug) {\n try {\n worker.postMessage({ type: 'init', debug: true })\n }\n catch {\n // Ignore init messaging failures.\n }\n }\n\n return { worker, dispose, source }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["normalizeTagName","DEFAULT_CACHE_KEY","markdownCache","getNodeList","resolveParsedNodes","getString","escapeHtml","escapeAttr","sanitizeClassToken","clampHeadingLevel","capitalize","encodeDataPayload","importAttempted","pendingImport","DARK_THEME_OVERRIDES","createD2Instance","VOID_ELEMENTS","serializeAttrs","BLOCKED_TAGS","settleAndMergeSegments","worker","workerInitError","maxConcurrency","ensureWorker","stringifyForWorker"],"mappings":";;;;;;;;AAwBA,MAAM,YAAY,GAAG,oCAAoC;SAEzC,uBAAuB,CACrC,KAAsC,EACtC,MAAc,EACd,cAAkC,EAAA;AAElC,IAAA,MAAM,cAAc,GAAG,uBAAuB,CAAC,cAAc,CAAC;AAC9D,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC;IACtC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAC7E,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE;IAElD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC;AACzD,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AACvB,QAAA,OAAO,KAAK,CAAC,KAAK,EAAE;IAEtB,IAAI,YAAY,GAAG,CAAC;AACpB,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAErD,IAAA,MAAM,SAAS,GAAG,CAAC,IAAoB,KAAI;AACzC,QAAA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YACnC;QAEF,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC;QAC9C,IAAI,GAAG,EAAE;YACP,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,YAAY,EAAE,SAAS,KAAK,YAAY,GAAG,SAAS,CAAC,CAAC;YAC9G,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,gBAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY;AACnC,gBAAA,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG;AACtB,gBAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;AACnC,oBAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;YAClC;QACF;QAEA,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACvB;AACF,YAAA,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;AACzB,gBAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;oBACpC,SAAS,CAAC,KAAuB,CAAC;YACtC;QACF;AACF,IAAA,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,MAAM;QACvB,SAAS,CAAC,IAAI,CAAC;AAEjB,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,wBAAwB,CAAC,MAAc,EAAE,MAAmB,EAAA;IACnE,MAAM,KAAK,GAAoB,EAAE;IACjC,MAAM,QAAQ,GAAuB,EAAE;AACvC,IAAA,IAAI,KAA6B;AAEjC,IAAA,YAAY,CAAC,SAAS,GAAG,CAAC;AAC1B,IAAA,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;AACnD,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;QACpB,MAAM,GAAG,GAAGA,0BAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAC1B;QAEF,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE;YACd,KAAK,CAAC,IAAI,CAAC;gBACT,GAAG;gBACH,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,YAAY,CAAC,SAAS;AAChC,aAAA,CAAC;YACF;QACF;QAEA,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC;QAC/C,IAAI,SAAS,GAAG,CAAC;YACf;AAEF,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AACzC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK;AAC9B,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS;QACvC,QAAQ,CAAC,IAAI,CAAC;YACZ,GAAG;YACH,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;YACpD,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvC,YAAA,OAAO,EAAE,KAAK;AACf,SAAA,CAAC;IACJ;AAEA,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,QAAQ,CAAC,IAAI,CAAC;YACZ,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,MAAM,CAAC,MAAM;YAClB,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YACxC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,YAAA,OAAO,EAAE,IAAI;AACd,SAAA,CAAC;IACJ;IAEA,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACnC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAC5B,YAAA,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AACjC,QAAA,OAAO,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;AAC7B,IAAA,CAAC,CAAC;AACJ;AAEA,SAAS,iBAAiB,CAAC,KAAsB,EAAE,GAAW,EAAA;AAC5D,IAAA,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;AACzD,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,GAAG;AAC3B,YAAA,OAAO,KAAK;IAChB;IACA,OAAO,CAAC,CAAC;AACX;AAEA,SAAS,kBAAkB,CACzB,QAA4B,EAC5B,GAAW,EACX,QAAsB,EACtB,QAAiC,EAAA;AAEjC,IAAA,IAAI,KAAK,GAAG,QAAQ,EAAE;AACtB,IAAA,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC/B,KAAK,IAAI,CAAC;AACV,QAAA,IAAI,OAAO,CAAC,GAAG,KAAK,GAAG;YACrB;QACF,QAAQ,CAAC,KAAK,CAAC;AACf,QAAA,OAAO,OAAO;IAChB;IACA,QAAQ,CAAC,KAAK,CAAC;AACf,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,oBAAoB,CAAC,IAA6B,EAAE,MAAmB,EAAA;IAC9E,MAAM,KAAK,GAAGA,0BAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,IAAA,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,OAAO,KAAK;IAEd,MAAM,MAAM,GAAGA,0BAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,IAAA,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,EAAE;AACnD;AAEA,SAAS,aAAa,CAAqB,IAAO,EAAA;AAChD,IAAA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;AACnC,QAAA,OAAO,IAAI;AAEb,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI;AAC/B,UAAE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC;AACtC,UAAE,EAAE,GAAG,IAAI,EAAE;IAEf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC1B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAiC,CAAC,EAAE;AAC5E,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvB,gBAAA,MAAkC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC,IAAgB,CAAC,CAAC;YAC/F;QACF;IACF;AAEA,IAAA,OAAO,MAAM;AACf;;ACnKA,MAAMC,mBAAiB,GAAG,iCAAiC;AAC3D,MAAMC,eAAa,GAAG,IAAI,GAAG,EAAsB;SAEnC,0BAA0B,CACxC,KAA+B,EAC/B,UAAsC,EAAE,EAAA;AAExC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5B,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAE5B,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI;IAC7B,IAAI,UAAU,EAAE;QACd,MAAM,QAAQ,GAAGC,aAAW,CAAC,UAAU,CAAC,QAAQ,CAAC;AACjD,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;AACrB,YAAA,OAAO,QAAQ,CAAC,KAAK,EAAE;IAC3B;AAEA,IAAA,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC;AACrC,IAAA,IAAI,CAAC,OAAO;AACV,QAAA,OAAO,EAAE;IAEX,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC;AACxD,IAAA,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,CAAC;IACjD,OAAO,uBAAuB,CAC5B,wBAAwB,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,EACzD,OAAO,EACP,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,EAAE,cAAc,CAAC,CAC1E;AACH;AAEA,SAAS,cAAc,CAAC,KAA+B,EAAA;AACrD,IAAA,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACnC,OAAO,KAAK,CAAC,OAAO;AACtB,IAAA,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,OAAO,KAAK,QAAQ;AACzC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO;AAC3B,IAAA,OAAO,EAAE;AACX;AAEA,SAAS,mBAAmB,CAC1B,KAA+B,EAC/B,OAAmC,EAAA;AAEnC,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE;AACvC,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC;AACvE,IAAA,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC;IAEvF,IAAI,aAAa,IAAI,IAAI,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;AACtD,QAAA,OAAO,IAAI;IAEb,OAAO;AACL,QAAA,GAAG,IAAI;AACP,QAAA,IAAI,aAAa,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AAC1D,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;KAC3C;AACnB;AAEA,SAAS,oBAAoB,CAAC,IAAsC,EAAA;AAClE,IAAA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;AACnC,QAAA,OAAO,SAAS;AAClB,IAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;AACnC,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO;AACtB,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,uBAAuB,CAAC,OAAmC,EAAA;AAClE,IAAA,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC;AACxG,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,OAAO,CAAC,QAAQ,IAAIF,mBAAiB,CAAA,EAAA,EAAK,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACxF,IAAI,QAAQ,GAAGC,eAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;IAE1C,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC/B,YAAA,cAAc,EAAE,cAAc;AAC/B,SAAA,CAAC;AACF,QAAAA,eAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACvC;IAEA,OAAO,OAAO,CAAC;AACb,UAAE,OAAO,CAAC,gBAAgB,CAAC,QAAQ;UACjC,QAAQ;AACd;AAEA,SAASC,aAAW,CAAC,KAAc,EAAA;AACjC,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAmB,GAAG,EAAE;AACxD;;ACtGA,MAAM,UAAU,GAAG,YAAY;AAQ/B,MAAM,SAAS,GAAG,gDAAgD;AAClE,MAAM,KAAK,GAAU,CAAC,MAAK;IACzB,MAAM,WAAW,GAAG,UAAiB;IACrC,IAAI,WAAW,CAAC,SAAS,CAAC;AACxB,QAAA,OAAO,WAAW,CAAC,SAAS,CAAU;AAExC,IAAA,MAAM,IAAI,GAAU;AAClB,QAAA,gBAAgB,EAAE,EAAE;AACpB,QAAA,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,IAAI,GAAG,EAAE;KACrB;AACD,IAAA,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI;AAC7B,IAAA,OAAO,IAAI;AACb,CAAC,GAAG;AAEJ,SAAS,YAAY,GAAA;AACnB,IAAA,KAAK,CAAC,QAAQ,IAAI,CAAC;AACnB,IAAA,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AAClD,QAAA,IAAI;AACF,YAAA,QAAQ,EAAE;QACZ;AACA,QAAA,MAAM;;QAEN;IACF;AACF;AAEM,SAAU,yBAAyB,CAAC,QAAoB,EAAA;AAC5D,IAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,IAAA,OAAO,MAAK;AACV,QAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AAClC,IAAA,CAAC;AACH;SAEgB,2BAA2B,GAAA;IACzC,OAAO,KAAK,CAAC,QAAQ;AACvB;AAIM,SAAU,mBAAmB,CAAC,WAAwC,EAAE,YAAiC,EAAA;IAC7G,IAAI,OAAO,WAAW,KAAK,QAAQ;AACjC,QAAA,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC,EAAE;;QAEjE,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,WAAW,EAAE;AACzD,IAAA,YAAY,EAAE;AAChB;AAEM,SAAU,uBAAuB,CAAC,QAAiB,EAAA;IACvD,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE;AAC9D,IAAA,IAAI,CAAC,QAAQ;AACX,QAAA,OAAO,aAAa;IAEtB,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5D,IAAA,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC;AAC3D,QAAA,OAAO,aAAa;AACtB,IAAA,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC;AAC3D,QAAA,OAAO,aAAa;IAEtB,OAAO;AACL,QAAA,GAAG,aAAa;AAChB,QAAA,GAAG,aAAa;KACjB;AACH;AAEM,SAAU,sBAAsB,CAAC,EAAU,EAAA;AAC/C,IAAA,IAAI,EAAE,KAAK,UAAU,EAAE;AACrB,QAAA,MAAM,IAAI,KAAK,CAAC,iGAAiG,CAAC;IACpH;AACA,IAAA,OAAO,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;AACjC,IAAA,YAAY,EAAE;AAChB;SAEgB,2BAA2B,GAAA;AACzC,IAAA,OAAO,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACzC,IAAA,YAAY,EAAE;AAChB;;ACwFA,MAAMD,eAAa,GAAG,IAAI,GAAG,EAAsB;AAE5C,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,MAAM;IACN,WAAW;IACX,iBAAiB;IACjB,UAAU;IACV,oBAAoB;IACpB,iBAAiB;IACjB,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,UAAU;IACV,eAAe;AAChB,CAAA,CAAC;AAEI,SAAU,kBAAkB,CAChC,KAAwB,EACxB,SAA6B,EAAE,EAC/B,eAAqC,EACrC,mBAA4B,EAAA;IAE5B,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAC7C,QAAA,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,YAAY,EAAE,cAAc,IAAI,EAAE,CAAC;AAC9C,KAAA,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,QAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,SAAS;QACrE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,eAAe;QACf,mBAAmB;QACnB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;AAClD,QAAA,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK;AACpC,QAAA,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,MAAM;QACtC,cAAc;QACd,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;AACxC,QAAA,eAAe,EAAE;YACf,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,kBAAkB;YACnC,UAAU,EAAE,KAAK,CAAC,mBAAmB;YACrC,aAAa,EAAE,KAAK,CAAC,sBAAsB;YAC3C,QAAQ,EAAE,KAAK,CAAC,iBAAiB;YACjC,QAAQ,EAAE,KAAK,CAAC,iBAAiB;AAClC,SAAA;QACD,MAAM;KACP;AACH;AAEM,SAAUE,oBAAkB,CAAC,KAAwB,EAAA;AACzD,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAC5B,OAAO,KAAK,CAAC,KAAgC;IAE/C,MAAM,OAAO,GAAGC,WAAS,CAAC,KAAK,CAAC,OAAO,CAAC;AACxC,IAAA,IAAI,CAAC,OAAO;AACV,QAAA,OAAO,EAAE;IAEX,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAC7C,QAAA,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,YAAY,EAAE,cAAc,IAAI,EAAE,CAAC;AAC9C,KAAA,CAAC;AACF,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,KAAK,CAAC,QAAQ,IAAI,oBAAoB,CAAA,EAAA,EAAK,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACzF,IAAI,QAAQ,GAAGH,eAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC1C,IAAI,CAAC,QAAQ,EAAE;QACb,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AACpE,QAAAA,eAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACvC;AAEA,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC;AACnB,UAAE,KAAK,CAAC,gBAAgB,CAAC,QAAQ;UAC/B,QAAQ;AAEZ,IAAA,MAAM,OAAO,GAAiB;AAC5B,QAAA,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;KAC9B;AACD,IAAA,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS;AAClC,QAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AAC7B,IAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;AAC3B,QAAA,OAAO,CAAC,cAAc,GAAG,cAAc;AAEzC,IAAA,OAAO,uBAAuB,CAC5B,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAA4B,EAC7E,OAAO,EACP,cAAc,CACY;AAC9B;AAEM,SAAUC,aAAW,CAAC,KAAc,EAAA;AACxC,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK;AACxB,UAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAoC,CAAC,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;UACxF,EAAE;AACR;AAEM,SAAU,oBAAoB,CAAC,IAA8C,EAAA;IACjF,OAAOE,WAAS,CAAE,IAAY,EAAE,IAAI,CAAC,KAAK,MAAM,IAAIA,WAAS,CAAE,IAAY,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;AACrG;AAEM,SAAU,yBAAyB,CAAC,IAA8C,EAAA;AACtF,IAAA,IAAIA,WAAS,CAAE,IAAY,EAAE,IAAI,CAAC,KAAK,MAAM;AAC3C,QAAA,OAAO,EAAE;AAEX,IAAA,OAAOF,aAAW,CAAE,IAAY,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC3F;AAEM,SAAU,mBAAmB,CAAC,IAA8C,EAAA;AAChF,IAAA,MAAM,YAAY,GAAG,yBAAyB,CAAC,IAAI,CAAC;AACpD,IAAA,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,IAAIE,WAAS,CAAE,YAAY,CAAC,CAAC,CAAS,EAAE,IAAI,CAAC,KAAK,OAAO;AAC3F;AAEM,SAAU,yBAAyB,CAAC,QAA0C,EAAA;AAClF,IAAA,MAAM,kBAAkB,GAAGF,aAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC9F,IAAA,OAAO,kBAAkB,CAAC,MAAM,GAAG;WAC9B,kBAAkB,CAAC,KAAK,CAAC,KAAK,IAAIE,WAAS,CAAE,KAAa,EAAE,IAAI,CAAC,KAAK,OAAO,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACnH;AAEM,SAAU,gCAAgC,CAAC,QAA0C,EAAA;AACzF,IAAA,MAAM,MAAM,GAAGF,aAAW,CAAC,QAAQ,CAAC;AACpC,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAE/E,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,IAAI,CAAC;AACtE,QAAA,OAAO,MAAM;IAEf,MAAM,UAAU,GAA4B,EAAE;AAC9C,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AACrD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAC3F,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO;YAC1B;QAEF,UAAU,CAAC,IAAI,CAAC;AACd,YAAA,GAAI,KAAiC;AACrC,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,GAAG,EAAE,GAAG;AACgB,SAAA,CAAC;IAC7B;AAEA,IAAA,OAAO,UAAU;AACnB;AAEM,SAAUE,WAAS,CAAC,KAAc,EAAA;IACtC,OAAO,OAAO,KAAK,KAAK;AACtB,UAAE;UACA,KAAK,IAAI;AACT,cAAE;AACF,cAAE,MAAM,CAAC,KAAK,CAAC;AACrB;AAEM,SAAU,cAAc,CAAC,KAAa,EAAA;AAC1C,IAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5D;AAEM,SAAUC,YAAU,CAAC,KAAc,EAAA;IACvC,OAAOD,WAAS,CAAC,KAAK;AACnB,SAAA,OAAO,CAAC,IAAI,EAAE,OAAO;AACrB,SAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,SAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,SAAA,OAAO,CAAC,IAAI,EAAE,QAAQ;AACtB,SAAA,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3B;AAEM,SAAUE,YAAU,CAAC,KAAc,EAAA;IACvC,OAAOD,YAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AACjD;AAEM,SAAUE,oBAAkB,CAAC,KAAa,EAAA;IAC9C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACzF;AAEM,SAAUC,mBAAiB,CAAC,KAAc,EAAA;AAC9C,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5C,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC;AAEM,SAAUC,YAAU,CAAC,KAAa,EAAA;IACtC,OAAO,KAAK,GAAG,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AAClE;AAEM,SAAU,qBAAqB,CAAC,GAAY,EAAA;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;IAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IACxC,OAAO,IAAI,IAAI,WAAW;AAC5B;AAEM,SAAU,wBAAwB,CAAC,IAA2B,EAAA;AAClE,IAAA,OAAO,qBAAqB,CAAE,IAAY,EAAE,QAAQ,CAAC;AACvD;AAEM,SAAUC,mBAAiB,CAAC,KAAa,EAAA;AAC7C,IAAA,IAAI,CAAC,KAAK;AACR,QAAA,OAAO,EAAE;IAEX,MAAM,YAAY,GAAI,UAAkB,EAAE,OAAO,GAAG,QAAQ,CAAC,EAAE,MAAM;IACrE,IAAI,YAAY,EAAE,IAAI;AACpB,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAE5D,IAAA,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;QAC/E,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7C,IAAI,MAAM,GAAG,EAAE;QACf,KAAK,MAAM,IAAI,IAAI,KAAK;AACtB,YAAA,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;AACrC,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;IAChC;AAEA,IAAA,OAAO,EAAE;AACX;AAEM,SAAU,mBAAmB,CAAC,KAA6C,EAAA;AAC/E,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAC7C,QAAA,OAAO,IAAI;AACb,IAAA,OAAO,KAAK,CAAC,MAAM,CAAgC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,KAAI;AACxE,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAChC,YAAA,OAAO,GAAG;AACZ,QAAA,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI;AACzB,QAAA,OAAO,GAAG;IACZ,CAAC,EAAE,EAAE,CAAC;AACR;AAEM,SAAU,sBAAsB,CAAC,QAA0C,EAAA;IAC/E,MAAM,KAAK,GAGP,EAAE;IAEN,MAAM,YAAY,GAA4B,EAAE;IAChD,MAAM,WAAW,GAAG,MAAK;QACvB,IAAI,CAAC,YAAY,CAAC,MAAM;YACtB;AACF,QAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;AAC3D,QAAA,YAAY,CAAC,MAAM,GAAG,CAAC;AACzB,IAAA,CAAC;AAED,IAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC5B,QAAA,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE;AACpD,YAAA,WAAW,EAAE;AACb,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC5C;aACK;AACH,YAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AACA,IAAA,WAAW,EAAE;AAEb,IAAA,OAAO,KAAK;AACd;;MC7Za,uBAAuB,CAAA;AAKlC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOR,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,MAAM,KAAK,GAAI,IAAI,CAAC,IAAY,EAAE,IAAI;AACtC,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI;IACjE;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,QAAQ;IACjD;+GAhBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBxB;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MATS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAmBrD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAtBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,EAAA,UAAA,EAClC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC,EAAA,QAAA,EACxD;;;;;;;;GAQT,EAAA,eAAA,EAQgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,uHAAA,CAAA,EAAA;;sBAG9C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCtBU,qBAAqB,CAAA;AAGhC,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,CAAC,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO;IACtC;+GALW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,sHAHtB,sDAAsD,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGrD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sDAAsD;oBAChE,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;ACV3B,SAAS,WAAW,CAAC,GAAW,EAAA;AAC9B,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG;AAC1C,IAAA,OAAO;AACJ,SAAA,OAAO,CAAC,OAAO,EAAE,GAAG;AACpB,SAAA,OAAO,CAAC,UAAU,EAAE,KAAK;AACzB,SAAA,OAAO,CAAC,MAAM,EAAE,GAAG;SACnB,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC3C,SAAA,IAAI,EAAE;AACX;AAEA,MAAM,UAAU,GAA2B;AACzC,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,eAAe,EAAE,QAAQ;AACzB,IAAA,iBAAiB,EAAE,UAAU;AAC7B,IAAA,cAAc,EAAE,OAAO;AACvB,IAAA,iBAAiB,EAAE,UAAU;AAC7B,IAAA,eAAe,EAAE,QAAQ;AACzB,IAAA,iBAAiB,EAAE,UAAU;AAC7B,IAAA,gBAAgB,EAAE,SAAS;AAC3B,IAAA,eAAe,EAAE,QAAQ;AACzB,IAAA,eAAe,EAAE,QAAQ;AACzB,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,cAAc,EAAE,OAAO;AACvB,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,gBAAgB,EAAE,UAAU;AAC5B,IAAA,kBAAkB,EAAE,YAAY;AAChC,IAAA,4BAA4B,EAAE,cAAc;AAC5C,IAAA,2BAA2B,EAAE,aAAa;CAC3C;AAEK,SAAU,iBAAiB,CAAC,GAA2B,EAAA;AAC3D,IAAA,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC;AAChC;SAEgB,WAAW,GAAA;IACzB,OAAO;AACL,QAAA,CAAC,CAAC,GAAW,EAAA;YACX,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC;QAC5C,CAAC;KACF;AACH;;ACxCA,IAAI,YAAY,GAAQ,IAAI;AAC5B,IAAIS,iBAAe,GAAG,KAAK;AAC3B,IAAIC,eAAa,GAA+C,IAAI;AACpE,IAAI,gBAAgB,GAAG,KAAK;AAqB5B,eAAe,cAAc,CAAC,GAAQ,EAAA;AACpC,IAAA,IAAI,gBAAgB;QAClB;IACF,gBAAgB,GAAG,IAAI;AACvB,IAAA,MAAM,WAAW,GAAI,UAAkB,EAAE,iBAAiB;AAC1D,IAAA,IAAI,WAAW,KAAK,OAAO,WAAW,CAAC,SAAS,KAAK,UAAU,IAAI,OAAO,WAAW,CAAC,YAAY,KAAK,UAAU,CAAC;QAChH;AACF,IAAA,IAAI,OAAO,GAAG,EAAE,oBAAoB,KAAK,UAAU;AACjD,QAAA,MAAM,GAAG,CAAC,oBAAoB,EAAE;AACpC;AAEA,eAAe,oBAAoB,CAAC,GAAQ,EAAA;AAC1C,IAAA,MAAM,sBAAsB,GAAG,GAAG,EAAE,sBAAsB;IAC1D,IAAI,OAAO,sBAAsB,KAAK,UAAU;AAC9C,QAAA,OAAO,IAAI;AAEb,IAAA,IAAI;AACF,QAAA,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAC9C,CAAC,cAAc,EAAE,eAAe,CAAC,EACjC,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,CACpC;QAED,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,YAAY,KAAK,UAAU,EAAE;AACjE,YAAA,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QACxF;AAEA,QAAA,OAAO,IAAI;IACb;IACA,OAAO,KAAK,EAAE;AACZ,QAAA,OAAO,CAAC,IAAI,CAAC,uGAAuG,EAAE,KAAK,CAAC;AAC5H,QAAA,OAAO,KAAK;IACd;AACF;AAEO,eAAe,YAAY,GAAA;AAChC,IAAA,IAAI,YAAY;AACd,QAAA,OAAO,YAAY;AACrB,IAAA,IAAIA,eAAa;QACf,OAAO,MAAMA,eAAa;AAC5B,IAAA,IAAID,iBAAe;AACjB,QAAA,OAAO,IAAI;AAEb,IAAAC,eAAa,GAAG,CAAC,YAAW;;;;AAI1B,QAAA,MAAM,UAAU,GAAG;YACjB,aAAa,MAAM,OAAO,cAAc,CAAC,CAAQ;YACjD,aAAa,MAAM,OAAO,eAAe,CAAC,CAAQ;SACnD;AAED,QAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC7B,YAAA,IAAI;AACF,gBAAA,MAAM,SAAS,GAAG,MAAM,IAAI,EAAE;AAC9B,gBAAA,MAAM,QAAQ,GAAG,SAAS,EAAE,OAAO,IAAI,SAAS;AAChD,gBAAA,IAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,UAAU;oBAC3C;gBACF,YAAY,GAAG,QAAQ;AACvB,gBAAA,MAAM,cAAc,CAAC,YAAY,CAAC;AAElC,gBAAA,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,YAAY,CAAC;gBACtD,IAAI,CAAC,KAAK,EAAE;oBACV,YAAY,GAAG,IAAI;oBACnBD,iBAAe,GAAG,IAAI;AACtB,oBAAA,OAAO,IAAI;gBACb;AAEA,gBAAA,OAAO,YAAY;YACrB;AACA,YAAA,MAAM;;YAEN;QACF;QAEAA,iBAAe,GAAG,IAAI;AACtB,QAAA,OAAO,IAAI;IACb,CAAC,GAAG;AAEJ,IAAA,IAAI;QACF,OAAO,MAAMC,eAAa;IAC5B;YACQ;QACNA,eAAa,GAAG,IAAI;IACtB;AACF;;AC1GA;AACA,MAAM,sBAAsB,GAAG,wPAAwP;AACvR,MAAM,kBAAkB,GAAG,4OAA4O;AACvQ,MAAM,mBAAmB,GAAG,4OAA4O;AACxQ,MAAM,kBAAkB,GAAG,0OAA0O;AACrQ,MAAM,iBAAiB,GAAG,oqBAAoqB;AAC9rB,MAAM,wBAAwB,GAAG,qSAAqS;AACtU,MAAM,wBAAwB,GAAG,6QAA6Q;AAC9S,MAAM,iBAAiB,GAAG,klCAAklC;AAC5mC,MAAM,iBAAiB,GAAG,klCAAklC;AAC5mC,MAAM,kBAAkB,GAAG,8hBAA8hB;AACzjB,MAAM,sBAAsB,GAAG,mKAAmK;AAClM,MAAM,qBAAqB,GAAG,2RAA2R;AACzT,MAAM,oBAAoB,GAAG,uwBAAuwB;AACpyB,MAAM,mBAAmB,GAAG,iOAAiO;AAC7P,MAAM,iBAAiB,GAAG,oSAAoS;AAC9T,MAAM,iBAAiB,GAAG,qQAAqQ;AAC/R,MAAM,kBAAkB,GAA2B;AACjD,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,aAAa,EAAE,OAAO;AACtB,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,KAAK,EAAE,KAAK;CACb;AAED,MAAM,kBAAkB,GAA2B;AACjD,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,KAAK,EAAE,KAAK;CACb;AAED,MAAM,iBAAiB,GAA2B;AAChD,IAAA,EAAE,EAAE,kBAAkB;AACtB,IAAA,KAAK,EAAE,iBAAiB;AACxB,IAAA,MAAM,EAAE,kBAAkB;AAC1B,IAAA,YAAY,EAAE,wBAAwB;AACtC,IAAA,MAAM,EAAE,kBAAkB;AAC1B,IAAA,KAAK,EAAE,iBAAiB;AACxB,IAAA,UAAU,EAAE,sBAAsB;AAClC,IAAA,SAAS,EAAE,qBAAqB;AAChC,IAAA,OAAO,EAAE,mBAAmB;AAC5B,IAAA,QAAQ,EAAE,oBAAoB;AAC9B,IAAA,OAAO,EAAE,mBAAmB;AAC5B,IAAA,KAAK,EAAE,iBAAiB;AACxB,IAAA,KAAK,EAAE,iBAAiB;AACxB,IAAA,YAAY,EAAE,wBAAwB;AACtC,IAAA,KAAK,EAAE,iBAAiB;CACzB;AAED,IAAI,wBAAwB,GAAgC,IAAI;AAEhE,SAAS,oBAAoB,CAAC,IAAoB,EAAA;AAChD,IAAA,IAAI,CAAC,IAAI;AACP,QAAA,OAAO,EAAE;AACX,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,IAAA,IAAI,CAAC,OAAO;AACV,QAAA,OAAO,EAAE;IACX,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AACpC,IAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAC3B;AAEM,SAAU,2BAA2B,CAAC,IAAoB,EAAA;AAC9D,IAAA,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC;AACxC,IAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,KAAK;AAC3C;AAEM,SAAU,uBAAuB,CAAC,IAAoB,EAAA;AAC1D,IAAA,MAAM,SAAS,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACnD,IAAA,IAAI,CAAC,SAAS;AACZ,QAAA,OAAO,WAAW;IACpB,IAAI,SAAS,KAAK,OAAO;AACvB,QAAA,OAAO,WAAW;IACpB,IAAI,SAAS,KAAK,KAAK;AACrB,QAAA,OAAO,YAAY;IACrB,IAAI,SAAS,KAAK,KAAK;AACrB,QAAA,OAAO,YAAY;AACrB,IAAA,OAAO,SAAS;AAClB;AAEM,SAAU,uBAAuB,CAAC,QAAsC,EAAA;AAC5E,IAAA,wBAAwB,GAAG,QAAQ,IAAI,IAAI;AAC7C;AAEM,SAAU,eAAe,CAAC,IAAY,EAAA;IAC1C,IAAI,wBAAwB,EAAE;AAC5B,QAAA,MAAM,GAAG,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAC1C,QAAA,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE;AAC3B,YAAA,OAAO,GAAG;IACd;AACA,IAAA,MAAM,UAAU,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACpD,IAAA,OAAO,iBAAiB,CAAC,UAAU,CAAC,IAAI,sBAAsB;AAChE;AAEO,MAAM,WAAW,GAAG;;AClH3B,SAAS,cAAc,CAAC,IAAY,EAAA;IAClC,IAAI,KAAK,GAAG,CAAC;AACb,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAChD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AACxB,YAAA,KAAK,EAAE;QACT;AACK,aAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AAC7B,YAAA,KAAK,EAAE;AACP,YAAA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI;AAC1B,gBAAA,KAAK,EAAE;QACX;IACF;AACA,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,cAAc,CAAC,IAAa,EAAE,OAAiB,EAAA;AACtD,IAAA,MAAM,KAAK,GAAGR,WAAS,CAAC,IAAI,CAAC;AAC7B,IAAA,OAAO,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;AAC7D;MAkBa,oBAAoB,CAAA;AAhBjC,IAAA,WAAA,GAAA;QAkBW,IAAA,CAAA,eAAe,GAAG,KAAK;;QAGxB,IAAA,CAAA,UAAU,GAAG,EAAE;QACf,IAAA,CAAA,WAAW,GAAG,CAAC;QACf,IAAA,CAAA,SAAS,GAAG,CAAC;QACb,IAAA,CAAA,SAAS,GAAG,EAAE;AAkEvB,IAAA;AAhEC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,qBAAqB,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAC5D;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,CAAA,SAAA,EAAY,IAAI,CAAC,QAAQ,EAAE;IACpC;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;AACL,YAAA,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI;AAC1B,YAAA,8BAA8B,EAAE,IAAI,CAAC,eAAe,KAAK,IAAI;SAC9D;IACH;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,QAAQ,CAAA,CAAE,GAAG,YAAY;IACtE;AAEA,IAAA,IAAI,IAAI,GAAA;QACN,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI,CAAC;IAC5C;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAQ,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,IAAI;IAC7C;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,cAAc,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;IAC/D;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;AAC7B,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU;YAC1B,OAAO,IAAI,CAAC,WAAW;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa;AAChC,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AAClB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;QACrB;AACA,QAAA,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,EAAE;AACvD,YAAA,IAAI,CAAC,SAAS,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAA,EAAG,IAAI,EAAE;AAC1D,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI;AAC/B,YAAA,OAAO,IAAI;AAEb,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa;AAC5C,QAAA,MAAM,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI;QAClE,OAAO;AACL,YAAA,oCAAoC,EAAE,KAAK;AAC3C,YAAA,yCAAyC,EAAE,KAAK;AAChD,YAAA,gCAAgC,EAAE,+QAA+Q;SAClT;IACH;+GAzEW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZrB,CAAA;;;;;;;;;AASyR,oSAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAVzR,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAaX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;AASyR,oSAAA,CAAA;oBACnS,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;;ACvCH,MAAM,QAAQ,GAAG,OAAO,UAAU,KAAK,WAAW,IAAK,UAAsC,CAAC,SAAS,KAAK,KAAK;AACjH,IAAI,0BAA0B,GAAkB,IAAI;AAEpD,SAAS,sBAAsB,CAAC,KAAa,EAAA;IAC3C,OAAO,IAAI,GAAG,CACZ;AACG,SAAA,IAAI;AACJ,SAAA,WAAW;SACX,KAAK,CAAC,KAAK;AACX,SAAA,MAAM,CAAC,OAAO,CAAC,CACnB;AACH;AAEA,SAAS,+BAA+B,CAAC,KAAa,EAAA;IACpD,IAAI,CAAC,QAAQ,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,0BAA0B,KAAK,KAAK;QACrF;AACF,IAAA,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC;AAC5C,IAAA,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;QAClE,0BAA0B,GAAG,KAAK;AAClC,QAAA,OAAO,CAAC,IAAI,CAAC,oKAAoK,CAAC;IACpL;AACF;AAEA,SAAS,8BAA8B,CAAC,kBAA2B,EAAE,uBAAiC,EAAA;AACpG,IAAA,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE;QAC1C,+BAA+B,CAAC,kBAAkB,CAAC;AACnD,QAAA,OAAO,kBAAkB;IAC3B;IACA,IAAI,kBAAkB,KAAK,SAAS;AAClC,QAAA,OAAO,EAAE;IACX,OAAO,uBAAuB,KAAK,IAAI,GAAG,eAAe,GAAG,EAAE;AAChE;MA2Ca,yBAAyB,CAAA;AAzCtC,IAAA,WAAA,GAAA;QA0CW,IAAA,CAAA,IAAI,GAAG,EAAE;QACT,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,uBAAuB,GAAG,KAAK;QAKvB,IAAA,CAAA,IAAI,GAAG,WAAW,EAAE;AAwCtC,IAAA;AAtCC,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE;IAC9D;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,8BAA8B,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,uBAAuB,CAAC;IAC9F;AAEA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACzC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;AAC/F,YAAA,OAAO,IAAI;AACb,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS;AAC9C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS;QAC9C,OAAO,CAAA;;;;;;;;;;4BAUiB,EAAE,CAAA;iBACb,EAAE,CAAA;;;;;;;;MAQb,IAAI;;QAEF;IACN;+GA/CW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,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,uCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAnCS,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAsCX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAzCrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;ACjEH,MAAM,qBAAqB,GAAG,yFAAyF;AACvH,MAAM,mBAAmB,GAAG,EAAE;AAC9B,MAAM,qBAAqB,GAAG,EAAE;AAEhC,SAAS,sBAAsB,CAAC,KAAc,EAAA;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS;AAC7F;AAcA,SAAS,kBAAkB,CAAC,GAAW,EAAA;IACrC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;AACtE,IAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;AACtB,QAAA,OAAO,EAAE;AACX,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM;AAC1F,QAAA,OAAO,EAAE;IAEX,IAAI,KAAK,GAAG,CAAC;AACb,IAAA,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM;QAChC,KAAK,IAAI,CAAC;IAEZ,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AACtC;AAEA,SAAS,yBAAyB,CAAC,GAAY,EAAA;IAC7C,MAAM,IAAI,GAAG,kBAAkB,CAACA,WAAS,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA,IAAI,CAAC,IAAI;AACP,QAAA,OAAO,EAAE;AAEX,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,MAAM;AAChB,QAAA,OAAO,EAAE;IAEX,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM;AAClE,IAAA,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;AAC9B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG;AAC9B,cAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;cAClC,KAAK;AACT,QAAA,IAAI,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,YAAA,OAAO,KAAK;IAChB;AAEA,IAAA,OAAO,EAAE;AACX;MA0Ma,sBAAsB,CAAA;AAxMnC,IAAA,WAAA,GAAA;AAyMmB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAC/B,IAAA,CAAA,IAAI,GAAG,WAAW,EAAE;QAQrC,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,iBAAiB,GAAG,KAAK;QACzB,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,eAAe,GAAG,mBAAmB;QACrC,IAAA,CAAA,QAAQ,GAAG,mBAAmB;QAEtB,IAAA,CAAA,OAAO,GAAyB,IAAI;QACpC,IAAA,CAAA,oBAAoB,GAA+B,IAAI;QACvD,IAAA,CAAA,aAAa,GAAyB,IAAI;QAC1C,IAAA,CAAA,WAAW,GAAyB,IAAI;QACxC,IAAA,CAAA,UAAU,GAA6B,IAAI;QAC3C,IAAA,CAAA,gBAAgB,GAAmB,IAAI;QACvC,IAAA,CAAA,WAAW,GAAG,CAAC;QACf,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,SAAS,GAAkB,IAAI;QAC/B,IAAA,CAAA,qBAAqB,GAAkB,IAAI;QA8N1C,IAAA,CAAA,kBAAkB,GAAG,MAAK;AACjC,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC;AA0gBF,IAAA;AAzuBC,IAAA,IAAI,CAAC,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO;YACL,IAAI,IAAI,CAAC,OAAO,EAAE,cAAc,IAAI,EAAE,CAAC;AACvC,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACtB;IACH;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO;QACzC,IAAI,OAAO,QAAQ,KAAK,SAAS;AAC/B,YAAA,OAAO,QAAQ;AACjB,QAAA,OAAQ,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,KAAK;IAC9C;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;QACxC,IAAI,OAAO,QAAQ,KAAK,SAAS;AAC/B,YAAA,OAAO,QAAQ;AACjB,QAAA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,eAAe,KAAK,SAAS;AACpD,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe;AACrC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;QACxC,IAAI,OAAO,QAAQ,KAAK,SAAS;AAC/B,YAAA,OAAO,QAAQ;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IACtC;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,IAAI,cAAc;IACjG;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,IAAI,eAAe;IACpG;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC;IAC9G;AAEA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO;YACL,IAAI,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,aAAa,IAAI,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,EAAE,CAAC;SAC1C;IACH;AAEA,IAAA,IAAI,6BAA6B,GAAA;AAC/B,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,KAAK,SAAS;AAC7D,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB;AAC/C,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,KAAK;IAC9C;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,KAAK;IAClD;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,KAAK,KAAK;IACpD;AAEA,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,KAAK,KAAK;IACrD;AAEA,IAAA,IAAI,0BAA0B,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,KAAK,KAAK;IACtD;AAEA,IAAA,IAAI,2BAA2B,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,KAAK,KAAK;IACvD;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,KAAK,SAAS;AACpD,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY;AACtC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK;IAC7C;AAEA,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,KAAK,SAAS;AACrD,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;AACvC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,IAAI,WAAW,CAAC;IAC/D;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,OAAO;IACjE;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC;IAClD;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,cAAc,KAAK,WAAW;IAC5C;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,iBAAiB;QAC3E,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM;IACxE;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;AACrD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAChC,cAAE;cACA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,yCAAyC,CAAC;AACnE,QAAA,OAAO,oCAAoC,kBAAkB,CAAC,GAAG,CAAC,EAAE;IACtE;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,IAAI,IAAI,CAAC,MAAM;AACb,YAAA,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,WAAW,IAAK,IAAI,CAAC,IAAY,EAAE,IAAI,CAAC;QAC/E,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI,CAAC;IAC5C;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,YAAY,CAAC;IACpD;AAEA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,CAAC,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI;IACnC;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,qBAAqB;AAC7B,YAAA,OAAO,KAAK;QACd,OAAO,IAAI,CAAC,iBAAiB,KAAK,MAAM,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK;IAC9E;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,iBAAiB,KAAK;AAChC,cAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B;AACrC,cAAE,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC;IACzC;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,uCAAuC;IAChD;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,uCAAuC;IAChD;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe;IAC/C;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,eAAe,CAAA,CAAE,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE;IACtG;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,yBAAyB,CAAE,IAAI,CAAC,IAAY,EAAE,GAAG,CAAC;IAC3D;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,CAAA,YAAA,EAAe,IAAI,CAAC,eAAe,EAAE;IAC9C;AAEA,IAAA,IAAI,sBAAsB,GAAA;QACxB,OAAO,IAAI,CAAC,iBAAiB;IAC/B;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe;IACrD;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,MAAM,KAAK,GAA2B,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC;QACrG,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC;AACrG,QAAA,IAAI,GAAG;AACL,YAAA,KAAK,CAAC,QAAQ,GAAG,GAAG;AACtB,QAAA,IAAI,GAAG;AACL,YAAA,KAAK,CAAC,QAAQ,GAAG,GAAG;AACtB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB;QAC1C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB;AAC7E,QAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,UAAU;gBACtD,QAAQ,KAAK,mBAAmB,GAAG,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;QAC1G,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK;cAC1D,OAAO,CAAC;cACR,IAAI;AACR,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;QAC1C,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;QACpG,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;AAC7G,QAAA,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI;AAClF,cAAE,OAAO,CAAC,UAAU,CAAC,IAAI;cACvB,qBAAqB;QAEzB,OAAO;AACL,YAAA,+BAA+B,EAAE,UAAU;YAC3C,6BAA6B,EAAE,CAAA,EAAG,UAAU,CAAA,EAAA,CAAI;YAChD,kCAAkC,EAAE,CAAA,EAAG,aAAa,CAAA,EAAA,CAAI;YACxD,2BAA2B,EAAE,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAI;YAC5C,6BAA6B,EAAE,CAAA,EAAG,UAAU,CAAA,EAAA,CAAI;AAChD,YAAA,aAAa,EAAE,UAAU;YACzB,WAAW,EAAE,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAI;YAC5B,aAAa,EAAE,CAAA,EAAG,UAAU,CAAA,EAAA,CAAI;SACjC;IACH;IAOA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,KAAK,IAAI,CAAC,eAAe,EAAE;IAC7B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB;AACF,QAAA,KAAK,IAAI,CAAC,eAAe,EAAE;IAC7B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AACzD,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,IAAI;IAChD;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;AAChC,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;QAC9B,cAAc,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe;QACpC,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY;AAC9B,QAAA,IAAI;YACF,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS;gBACpE,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;;AAEzC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAChC;AACA,QAAA,MAAM;AACJ,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC9B;AACA,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACnC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AACzD,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AACtC,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC,EAAE,IAAI,CAAC;QACV;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,aAAa;YACrB;AACF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,KAAK,MAAM,GAAG,WAAW,GAAG,eAAe;AACtF,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY;QACvC,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE;AACpE,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC;gBACxC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,YAAY;gBACZ,aAAa;gBACb,EAAE,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE;AACnD,aAAA,CAAC;YACF;QACF;AACA,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM;AACnC,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB;AAClD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QAC3D,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,OAAO,GAAG,mBAAmB;QAC9F,IACE,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;eACvF,IAAI,CAAC,QAAQ,KAAK;eAClB,IAAI,CAAC,QAAQ,GAAG;AAChB,eAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,EACrB;AACA,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe;QACtC;IACF;AAEQ,IAAA,MAAM,eAAe,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS;YACnC;QACF,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACjD,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;AAEA,QAAA,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;QAEA,IAAI,IAAI,CAAC,WAAW;YAClB,OAAO,IAAI,CAAC,WAAW;AAEzB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,YAAW;AAC7B,YAAA,IAAI;gBACF,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC3G,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,KAAK,KAAK;AACxD,gBAAA,IACE,IAAI,CAAC,UAAU,KAAK;uBACjB,IAAI,CAAC,gBAAgB,KAAK;AAC1B,uBAAA,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAC1C;oBACA,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,iBAAiB,CAAC;gBAC3D;qBACK;AACH,oBAAA,MAAM,IAAI,CAAC,YAAY,EAAE;gBAC3B;AACA,gBAAA,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACvH,IAAI,CAAC,mBAAmB,EAAE;AAC1B,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW;gBACnC,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,UAAU,CAAC;oBAC3D;AACF,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;gBACvB,IAAI,CAAC,0BAA0B,EAAE;YACnC;AACA,YAAA,MAAM;AACJ,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;gBACxB,IAAI,CAAC,aAAa,EAAE;YACtB;oBACQ;AACN,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB;QACF,CAAC,GAAG;QAEJ,OAAO,IAAI,CAAC,WAAW;IACzB;AAEQ,IAAA,MAAM,aAAa,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW;YAClC;QACF,IAAI,IAAI,CAAC,aAAa;YACpB,OAAO,IAAI,CAAC,aAAa;AAE3B,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,YAAW;AAC/B,YAAA,MAAM,YAAY,GAAG,MAAM,YAAY,EAAE;YACzC,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,CAAC,SAAS,KAAK,UAAU,EAAE;AACjE,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;gBACvB;YACF;YAEA,MAAM,mBAAmB,GAAG,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,KAAK;AAC1E,kBAAE,IAAI,CAAC,qBAAqB,CAAC;kBAC3B,EAAE;AACN,YAAA,MAAM,OAAO,GAAG;AACd,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,MAAM,EAAE,IAAI,CAAC,eAAe,KAAK,KAAK;AACtC,gBAAA,cAAc,EAAE,MAAM;AACtB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,gBAAgB,EAAE,EAAE;AACpB,gBAAA,UAAU,EAAE,GAAG;AACf,gBAAA,UAAU,EAAE,qBAAqB;gBACjC,QAAQ,EAAE,IAAI,CAAC,eAAe;AAC9B,gBAAA,UAAU,EAAE,qBAAqB;gBACjC,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;gBACpE,MAAM,EAAE,IAAI,CAAC,cAAc;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB;AAC7E,gBAAA,IAAI,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC;;;AAGrC,gBAAA,iBAAiB,EAAE,IAAI;AACvB,gBAAA,SAAS,EAAE,CAAA;EACjB,mBAAmB,CAAA,CAAE,CAAC,IAAI,EAAE;aACvB;AAED,YAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO;YACnC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC;QAChD,CAAC,GAAG;AAEJ,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,aAAa;QAC1B;gBACQ;AACN,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC3B;IACF;AAEQ,IAAA,MAAM,cAAc,CAAC,IAAuB,EAAE,UAAmB,EAAA;AACvE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa;AAC3C,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YACxB;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU;QAClC,IAAI,IAAI,CAAC,oBAAoB;AAC3B,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,UAAU;AAE/C,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,GACjD,IAAI,EACJ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,cAAc,CACpB,CAAC;YACF,IAAI,CAAC,sBAAsB,EAAE;YAC7B;QACF;QAEA,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,GAC7C,IAAI,EACJ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,cAAc,CACpB,CAAC;QACF,IAAI,CAAC,sBAAsB,EAAE;IAC/B;;;;;;;IAQQ,sBAAsB,GAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa;AAC3C,QAAA,IAAI,CAAC,IAAI;YACP;AACF,QAAA,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/E,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3D,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO;QACrD,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,CAAC;QAClF,IAAI,oBAAoB,EAAE;YACxB,MAAM,GAAG,GAAG,sBAAsB,CAAE,UAAsC,CAAC,GAAG,CAAC,IAAI,CAAC;YACpF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI,CAAC;QACzD;aACK;AACH,YAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC;QAChD;IACF;AAEQ,IAAA,MAAM,YAAY,GAAA;QACxB,IAAI,CAAC,IAAI,CAAC,OAAO;YACf;AAEF,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE;YAC9F,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACzG;QACF;QAEA,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1F;AAEQ,IAAA,oBAAoB,CAAC,IAAuB,EAAA;AAClD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa;AAC3C,QAAA,IAAI,CAAC,IAAI;AACP,YAAA,OAAO,KAAK;AACd,QAAA,MAAM,cAAc,GAAG,IAAI,KAAK,MAAM,GAAG,qBAAqB,GAAG,gBAAgB;AACjF,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YAC1B,cAAc;YACd,iBAAiB;YACjB,qBAAqB;YACrB,2BAA2B;AAC5B,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,aAAa,CAAc;YAC/D,qBAAqB;YACrB,gBAAgB;YAChB,iBAAiB;YACjB,2BAA2B;YAC3B,qBAAqB;AACtB,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;IACtB;AAEQ,IAAA,qBAAqB,CAAC,IAAuB,EAAA;AACnD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa;AAC3C,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,OAAO,MAAM,KAAK,WAAW;AAC5E,YAAA,OAAO,KAAK;AACd,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAC7C,QAAA,IAAI,CAAC,OAAO;AACV,YAAA,OAAO,KAAK;AACd,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;QAC5C,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;AACrC,YAAA,OAAO,KAAK;QACd,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC9C,QAAA,OAAO,KAAK,CAAC,OAAO,KAAK;eACpB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI;IACrD;AAEQ,IAAA,MAAM,oBAAoB,CAAC,IAAuB,EAAE,UAAkB,EAAA;;;;QAI5E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;QAClC,IAAI,OAAO,GAAG,CAAC;QACf,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,OAAO,GAAG,EAAE,EAAE;YAC5C,OAAO,IAAI,CAAC;YACZ,IAAI,IAAI,CAAC,SAAS,IAAI,UAAU,KAAK,IAAI,CAAC,WAAW;AACnD,gBAAA,OAAO,KAAK;AACd,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC5B,YAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAC/B,YAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE;AACpC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC5B,gBAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAC/B,gBAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YACzC;QACF;AACA,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,UAAU,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;IAC9F;IAEQ,kBAAkB,GAAA;QACxB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;AACrF,YAAA,OAAO,OAAO,CAAC,OAAO,EAAE;AAC1B,QAAA,OAAO,IAAI,OAAO,CAAO,OAAO,IAAI,MAAM,CAAC,qBAAqB,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;IACpF;IAEQ,mBAAmB,GAAA;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,KAAK;AAC/B,cAAE,IAAI,CAAC,OAAO,EAAE,iBAAiB;cAC/B,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI;AACnC,QAAA,IAAI;AACF,YAAA,IAAI,EAAE,aAAa,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClF,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,OAAO,IAAI,EAAE,iBAAiB,KAAK,UAAU;AAC7E,gBAAA,IAAI,CAAC,iBAAiB,EAAE,EAAE,aAAa,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1E;QACA,MAAM,EAAC;IACT;IAEQ,iBAAiB,CAAC,UAAU,GAAG,KAAK,EAAA;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa;AAC3C,QAAA,IAAI,CAAC,IAAI;YACP;AAEF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAA,EAAG,SAAS,IAAI;AAChE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,GAAG,MAAM;AAExD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,KAAK;AAC/B,cAAE,IAAI,CAAC,OAAO,EAAE,iBAAiB;cAC/B,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI;AACnC,QAAA,IAAI,CAAC,IAAI;YACP;AAEF,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1D;QACA,MAAM,EAAC;QAEP,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,MAAM,IAAI;AACjC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,MAAM,IAAI;QACjB;QACA,MAAM,EAAC;IACT;IAEQ,mBAAmB,CAAC,IAAS,EAAE,SAAiB,EAAA;AACtD,QAAA,IAAI,aAAa,GAAG,MAAM,CAAC,GAAG;AAC9B,QAAA,IAAI;AACF,YAAA,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,UAAU;gBAC7C,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;iBAC5C,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,UAAU;AACjF,gBAAA,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,gBAAgB,IAAI,CAAC;QAC1E;QACA,MAAM,EAAC;AAEP,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,IAAI,CAAC,EAAE;YACzD,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC/C,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,EAAE;YACjD,MAAM,QAAQ,GAAG,KAAK,IAAI,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC;AAC/C,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QACzF;AAEA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IACnG;AAEQ,IAAA,sBAAsB,CAAC,IAAS,EAAA;AACtC,QAAA,IAAI;AACF,YAAA,IACE,IAAI,CAAC,UAAU,KAAK;AACjB,mBAAA,OAAO,IAAI,EAAE,iBAAiB,KAAK;AACnC,mBAAA,OAAO,IAAI,EAAE,iBAAiB,KAAK,UAAU,EAChD;gBACA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,QAAQ,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC;gBAC7F,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,QAAQ,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC;gBAC7F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC;YAClD;AAEA,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC;YAC/D,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;AACrC,gBAAA,OAAO,KAAK;QAChB;QACA,MAAM,EAAC;QAEP,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACxE;IAEQ,uBAAuB,GAAA;QAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;QACjE,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC;AACjD,YAAA,OAAO,WAAW;QAEpB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QAClE,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC;AACvD,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;QAExD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC;AAC7C,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AAEnD,QAAA,OAAO,EAAE;IACX;IAEQ,gBAAgB,GAAA;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,IAAI,GAAG;QACxD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YACjD,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;QAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;AACrD,QAAA,MAAM,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;AAC5D,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,GAAG;IAC7D;IAEQ,wBAAwB,GAAA;QAC9B,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;YACrE;AACF,QAAA,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACvD,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;IACnC;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS;YACjD;QAEF,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAK;YAC7D,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAK;AAC7D,gBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;gBACjC,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,aAAa,GAAA;QACnB,IAAI,CAAC,wBAAwB,EAAE;AAC/B,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI;QAC7B;QACA,MAAM,EAAC;AACP,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI;QACjC;QACA,MAAM,EAAC;AACP,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACxB;AAEQ,IAAA,cAAc,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;AAC/B,YAAA,OAAO,IAAI;AACb,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IACjE;AAEQ,IAAA,iBAAiB,CAAC,IAAY,EAAA;QACpC,IAAI,OAAO,QAAQ,KAAK,WAAW;YACjC;QACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;AACnD,QAAA,QAAQ,CAAC,KAAK,GAAG,IAAI;AACrB,QAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC;AACzC,QAAA,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACjC,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AAC5B,QAAA,QAAQ,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACrC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QACnC,QAAQ,CAAC,MAAM,EAAE;AACjB,QAAA,IAAI;AACF,YAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;QAC9B;QACA,MAAM,EAAC;gBACC;YACN,QAAQ,CAAC,MAAM,EAAE;QACnB;IACF;+GAvwBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,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,oCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApMvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAlMS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAqM5D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAxMlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,EAAE,yBAAyB,CAAC;AACxE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiMT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAKE,SAAS;uBAAC,YAAY;;sBAEtB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;AC5QH,MAAM,eAAe,GAAa,MAAM,OAAO,iBAAiB,CAAC;AAEjE,IAAI,QAAQ,GAAQ,IAAI;AACxB,IAAI,QAAQ,GAAoB,eAAe;AAC/C,IAAIQ,eAAa,GAAmC,IAAI;AAExD,SAAS,aAAa,GAAA;IACpB,QAAQ,GAAG,IAAI;IACfA,eAAa,GAAG,IAAI;AACtB;AAEA,SAAS,iBAAiB,CAAC,GAAQ,EAAA;AACjC,IAAA,IAAI,CAAC,GAAG;AACN,QAAA,OAAO,GAAG;IACZ,IAAI,GAAG,CAAC,EAAE,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,UAAU;QACxC,OAAO,GAAG,CAAC,EAAE;AACf,IAAA,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,UAAU;AACvE,QAAA,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE;AACvB,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG;IACpC,IAAI,OAAO,SAAS,KAAK,UAAU;AACjC,QAAA,OAAO,SAAS;IAClB,IAAI,SAAS,EAAE,EAAE,IAAI,OAAO,SAAS,CAAC,EAAE,KAAK,UAAU;QACrD,OAAO,SAAS,CAAC,EAAE;AACrB,IAAA,OAAO,SAAS;AAClB;AAEM,SAAU,WAAW,CAAC,MAAuB,EAAA;IACjD,QAAQ,GAAG,MAAM;AACjB,IAAA,aAAa,EAAE;AACjB;AAEM,SAAU,QAAQ,CAAC,MAAiB,EAAA;AACxC,IAAA,WAAW,CAAC,MAAM,IAAI,eAAe,CAAC;AACxC;SAEgB,SAAS,GAAA;IACvB,WAAW,CAAC,IAAI,CAAC;AACnB;SAEgB,WAAW,GAAA;AACzB,IAAA,OAAO,OAAO,QAAQ,KAAK,UAAU;AACvC;AAEO,eAAe,KAAK,GAAA;AACzB,IAAA,IAAI,QAAQ;AACV,QAAA,OAAO,QAAQ;AACjB,IAAA,IAAIA,eAAa;QACf,OAAO,MAAMA,eAAa;IAE5B,MAAM,MAAM,GAAG,QAAQ;AACvB,IAAA,IAAI,CAAC,MAAM;AACT,QAAA,OAAO,IAAI;AAEb,IAAAA,eAAa,GAAG,CAAC,YAAW;AAC1B,QAAA,IAAI,GAAQ;AACZ,QAAA,IAAI;AACF,YAAA,GAAG,GAAG,MAAM,MAAM,EAAE;QACtB;QACA,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,MAAM,KAAK,eAAe,EAAE;AAC9B,gBAAA,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC;YACrH;AACA,YAAA,MAAM,KAAK;QACb;AAEA,QAAA,IAAI,CAAC,GAAG;AACN,YAAA,OAAO,IAAI;AAEb,QAAA,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC;AACjC,QAAA,OAAO,QAAQ;IACjB,CAAC,GAAG;AAEJ,IAAA,IAAI;QACF,OAAO,MAAMA,eAAa;IAC5B;YACQ;QACNA,eAAa,GAAG,IAAI;IACtB;AACF;;AC7FA,MAAM,yBAAyB,GAAG,CAAC,cAAc,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,UAAU,CAAC;AAC7G,MAAM,kBAAkB,GAAG,qEAAqE;AAEhG,SAAS,yBAAyB,CAAC,GAAW,EAAA;AAC5C,IAAA,OAAO;AACJ,SAAA,OAAO,CAAC,sBAAsB,EAAE,GAAG;AACnC,SAAA,OAAO,CAAC,iBAAiB,EAAE,GAAG;AAC9B,SAAA,OAAO,CAAC,oBAAoB,EAAE,GAAG;AACjC,SAAA,OAAO,CAAC,eAAe,EAAE,GAAG;AAC5B,SAAA,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC;AACxC;AAEA,SAAS,WAAW,CAAC,KAAgC,EAAA;AACnD,IAAA,IAAI,CAAC,KAAK;AACR,QAAA,OAAO,EAAE;AACX,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;AAC5B,IAAA,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,QAAA,OAAO,OAAO;AAChB,IAAA,OAAO,EAAE;AACX;AAEA,SAAS,eAAe,CAAC,KAAiB,EAAA;IACxC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AACzC,IAAA,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAa,GAAG,CAAC,CAAC,CAAC;AAC7E,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE;YACjD,IAAI,CAAC,MAAM,EAAE;YACb;QACF;QAEA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACzC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,YAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBAC1B;YACF;YAEA,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE;AAClC,gBAAA,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7D,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;oBAC1B;gBACF;YACF;AAEA,YAAA,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,KAAK,IAAI,CAAC,KAAK,EAAE;gBAC5D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;gBACpC,IAAI,CAAC,IAAI,EAAE;AACT,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;oBAC1B;gBACF;AACA,gBAAA,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK;AACrB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;YACjC;QACF;IACF;AACF;AAEM,SAAU,eAAe,CAAC,GAA8B,EAAA;IAC5D,IAAI,OAAO,SAAS,KAAK,WAAW;AAClC,QAAA,OAAO,EAAE;AACX,IAAA,IAAI,CAAC,GAAG;AACN,QAAA,OAAO,EAAE;AAEX,IAAA,MAAM,WAAW,GAAG,yBAAyB,CAAC,GAAG,CAAC;AAClD,IAAA,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE,eAAe,CAAC;AAC5E,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe;IACpC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK;AAClD,QAAA,OAAO,EAAE;IAEX,MAAM,UAAU,GAAG,KAA8B;IACjD,eAAe,CAAC,UAAU,CAAC;IAC3B,OAAO,UAAU,CAAC,SAAS;AAC7B;AAEM,SAAU,kBAAkB,CAAC,YAAiB,EAAA;AAClD,IAAA,IAAI,CAAC,YAAY;AACf,QAAA,OAAO,EAAE;IACX,IAAI,OAAO,YAAY,KAAK,QAAQ;AAClC,QAAA,OAAO,YAAY;AACrB,IAAA,IAAI,OAAO,YAAY,CAAC,GAAG,KAAK,QAAQ;QACtC,OAAO,YAAY,CAAC,GAAG;AACzB,IAAA,IAAI,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ;QACvC,OAAO,YAAY,CAAC,IAAI;AAC1B,IAAA,OAAO,EAAE;AACX;;ACrFO,eAAe,mBAAmB,CAAC,MAAc,EAAA;AACtD,IAAA,IAAI;QACF,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE;YACtE,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;AAC3C,YAAA,OAAO,IAAI;QACb;IACF;AACA,IAAA,MAAM;;IAEN;IAEA,IAAI,OAAO,QAAQ,KAAK,WAAW;AACjC,QAAA,OAAO,KAAK;IAEd,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;AACnD,IAAA,QAAQ,CAAC,KAAK,GAAG,MAAM;AACvB,IAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC;AACzC,IAAA,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACjC,IAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AAC5B,IAAA,QAAQ,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACrC,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE;AAEjB,IAAA,IAAI;AACF,QAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5B,QAAA,OAAO,IAAI;IACb;AACA,IAAA,MAAM;AACJ,QAAA,OAAO,KAAK;IACd;YACQ;QACN,QAAQ,CAAC,MAAM,EAAE;IACnB;AACF;AAEM,SAAU,YAAY,CAAC,MAAsC,EAAA;AACjE,IAAA,IAAI,CAAC,MAAM;QACT;AAEF,IAAA,IAAI;QACF,MAAM,CAAC,eAAe,EAAE;IAC1B;AACA,IAAA,MAAM;AACJ,QAAA,MAAM,CAAC,SAAS,GAAG,EAAE;IACvB;AACF;AAEM,SAAU,cAAc,CAAC,MAAsC,EAAE,IAAY,EAAA;AACjF,IAAA,IAAI,CAAC,MAAM;QACT;IACF,YAAY,CAAC,MAAM,CAAC;AACpB,IAAA,IAAI,CAAC,IAAI;QACP;AACF,IAAA,IAAI;AACF,QAAA,MAAM,CAAC,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC;IAC/C;AACA,IAAA,MAAM;AACJ,QAAA,MAAM,CAAC,SAAS,GAAG,IAAI;IACzB;AACF;AAEM,SAAU,iBAAiB,CAAC,SAAiB,EAAE,QAAgB,EAAA;IACnE,IAAI,CAAC,SAAS,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,OAAO,GAAG,KAAK,WAAW;QAC7E;AAEF,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;IAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACxC,IAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AACf,IAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE;AACZ,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC/B,IAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;AAC1B;AAEM,SAAU,cAAc,CAAC,KAAc,EAAE,QAAiB,EAAA;AAC9D,IAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;QAC/B,OAAO,QAAQ,IAAI,IAAI;AACzB,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AACjE;SAEgB,WAAW,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAA;AACjE,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5C;;AC/DA,MAAMC,sBAAoB,GAA2B;AACnD,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;CACf;MA0FY,oBAAoB,CAAA;AAxFjC,IAAA,WAAA,GAAA;AAyFmB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAQhD,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,SAAS,GAAG,EAAE;QACd,IAAA,CAAA,KAAK,GAAG,EAAE;QAEF,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,WAAW,GAAG,CAAC;QACf,IAAA,CAAA,SAAS,GAAkB,IAAI;AAuNxC,IAAA;AArNC,IAAA,IAAI,WAAW,GAAA;QACb,OAAO;YACL,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;AAChC,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACtB;IACH;AAEA,IAAA,IAAI,IAAI,GAAA;QACN,OAAOT,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI,CAAC;IAC5C;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS;AAC9C,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM;AAChC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IACtC;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,KAAK;IAC9C;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,KAAK;IAClD;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,KAAK;IAClD;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,KAAK,KAAK;IACpD;AAEA,IAAA,IAAI,0BAA0B,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,KAAK,KAAK;IACtD;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,KAAK,SAAS;AACpD,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY;AACtC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK;IAC7C;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5D;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS;AAC/C,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;AACjC,QAAA,OAAQ,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,IAAI;IAC7C;AAEA,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,KAAK,IAAI;IACpD;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;IACjD;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB;QACF,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;IACjD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AACzD,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;IACvC;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,IAAI;IAChD;AAEA,IAAA,OAAO,CAAC,UAAmB,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,gBAAgB,EAAE;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACxC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AACzD,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AACtC,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC,EAAE,IAAI,CAAC;QACV;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB;AACF,QAAA,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA,GAAA,EAAM,IAAI,CAAC,GAAG,EAAE,CAAA,IAAA,CAAM,CAAC;IAC3D;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEQ,IAAA,MAAM,aAAa,GAAA;QACzB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YACrD;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC/B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;YACf,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;QAEA,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,WAAW;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM;AACT,gBAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;AAElD,YAAA,MAAM,QAAQ,GAAGU,kBAAgB,CAAC,MAAM,CAAC;AACzC,YAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU;AAC9F,gBAAA,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC;YAEvE,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;AACpD,YAAA,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,IAAI,aAAa;YACvD,MAAM,iBAAiB,GAAG,aAAa,EAAE,aAAa,IAAI,aAAa,EAAE,OAAO,IAAI,EAAE;AACtF,YAAA,MAAM,aAAa,GAAwB;AACzC,gBAAA,GAAG,iBAAiB;gBACpB,OAAO,EAAE,IAAI,CAAC;AACZ,uBAAG,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,iBAAiB,CAAC,WAAW,IAAI,iBAAiB,CAAC,OAAO;uBAC1F,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC;AAC3D,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,kBAAkB,EAAE,IAAI;aACzB;AAED,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,aAAa,CAAC,cAAc,GAAG;AAC7B,oBAAA,IAAI,iBAAiB,CAAC,cAAc,IAAI,EAAE,CAAC;AAC3C,oBAAA,GAAGD,sBAAoB;iBACxB;YACH;YAEA,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC;YAClE,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;gBAC9C;YAEF,MAAM,OAAO,GAAG,eAAe,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,OAAO;AACV,gBAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AAErD,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO;YACxB,IAAI,CAAC,WAAW,EAAE;QACpB;QACA,OAAO,KAAK,EAAE;YACZ,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;gBAC9C;AACF,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,8BAA8B;YACpF,IAAI,CAAC,WAAW,EAAE;QACpB;gBACQ;AACN,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB;QACF;IACF;IAEQ,WAAW,GAAA;QACjB,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;IACjE;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,YAAA,MAAM,CAAC,UAAU,CAAC,MAAK;gBACrB,IAAI,IAAI,CAAC,SAAS;oBAChB;gBACF,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC,EAAE,CAAC,CAAC;YACL;QACF;QACA,cAAc,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1C;+GAzOW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApFrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiFT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAlFS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAqFX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxFhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiFT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAIE,SAAS;uBAAC,aAAa;;sBAEvB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;AAqOH,SAASC,kBAAgB,CAAC,MAAW,EAAA;AACnC,IAAA,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AAChC,QAAA,MAAM,QAAQ,GAAG,IAAI,MAAM,EAAE;AAC7B,QAAA,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU;AACpD,YAAA,OAAO,QAAQ;AACjB,QAAA,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU;AACtC,YAAA,OAAO,MAAM;IACjB;IAEA,IAAI,MAAM,EAAE,EAAE,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,UAAU;AAC/C,QAAA,OAAO,IAAI,MAAM,CAAC,EAAE,EAAE;AAExB,IAAA,IAAI,OAAO,MAAM,EAAE,OAAO,KAAK,UAAU;AACvC,QAAA,OAAO,MAAM;AAEf,IAAA,OAAO,IAAI;AACb;;MC9Va,2BAA2B,CAAA;AA1BxC,IAAA,WAAA,GAAA;AA2CE,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAa,KAAI;YAC/B,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;AACzD,QAAA,CAAC;AAKF,IAAA;AAnBC,IAAA,IAAI,KAAK,GAAA;QACP,OAAOZ,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,KAAK,CAAC;IAC/C;AAEA,IAAA,OAAO,CAAC,IAA2B,EAAA;AACjC,QAAA,OAAOA,aAAW,CAAE,IAAY,EAAE,IAAI,CAAC;IACzC;AAEA,IAAA,aAAa,CAAC,IAA2B,EAAA;AACvC,QAAA,OAAOA,aAAW,CAAE,IAAY,EAAE,UAAU,CAAC;IAC/C;IAMA,UAAU,CAAC,KAAa,EAAE,IAAY,EAAA;QACpC,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;IACjE;+GAvBW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtB5B;;;;;;;;;;;;;;;;;;;GAmBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MApBS,YAAY,sMAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAuBrD,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA1BvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCnBU,wBAAwB,CAAA;AANrC,IAAA,WAAA,GAAA;QAgBU,IAAA,CAAA,YAAY,GAA6B,IAAI;AAwFtD,IAAA;AAtFC,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY;YACpB;QAEF,IAAI,OAAO,CAAC,SAAS;YACnB,IAAI,CAAC,cAAc,EAAE;QAEvB,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAExB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,YAAY;YACvC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;IACvE;IAEQ,WAAW,GAAA;AACjB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;AACtC,QAAA,MAAM,QAAQ,GAAG,YAAY,EAAE,QAAQ;AACvC,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY;YAC5B;AAEF,QAAA,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAc,KAAI;YAC/C,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;AAC5C,gBAAA,IAAI;AACF,oBAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;gBACnC;AACA,gBAAA,MAAM;;gBAEN;YACF;AAEA,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;QAC3B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC,GAAI,IAAI,CAAC,IAAY,CAAC,QAAQ,GAAG,SAAS,CAAC;QACxG,QAAQ,CAAC,SAAS,EAAE,OAAQ,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,QAAQ,GAAI,IAAI,CAAC,IAAY,CAAC,OAAO,GAAG,SAAS,CAAC;QAC7G,QAAQ,CAAC,SAAS,EAAG,IAAI,CAAC,IAAY,EAAE,OAAO,CAAC;AAChD,QAAA,QAAQ,CAAC,OAAO,EAAE,OAAQ,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,SAAS,GAAG,CAAE,IAAI,CAAC,IAAY,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;AACvH,QAAA,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;AACjC,QAAA,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC5C,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC;QACxD,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QACpD,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;QAC5D,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACxC,QAAA,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;QACnC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;QAChD,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;QACpC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QACpD,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;QAC1D,QAAQ,CAAC,uBAAuB,EAAE,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC;QACtE,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC;QACxD,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QACpD,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;AAE5D,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACpD,gBAAA,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;QACxB;AAEA,QAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;IAChD;IAEQ,gBAAgB,CAAC,YAA+B,EAAE,GAAW,EAAA;QACnE,MAAM,QAAQ,GAAI,YAAY,CAAC,aAAqB,EAAE,IAAI,EAAE,MAAM;AAClE,QAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;AAC3C,YAAA,OAAO,KAAK;QAEd,IAAI,GAAG,IAAI,QAAQ;AACjB,YAAA,OAAO,IAAI;QAEb,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC9C;+GAjGW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,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,EAOH,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVtC,wCAAwC,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGvC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,wCAAwC;oBAClD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE;;sBACA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCbrD,kBAAkB,CAAA;AAG7B,IAAA,IAAI,IAAI,GAAA;QACN,OAAOE,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,GAAG,IAAK,IAAI,CAAC,IAAY,EAAE,MAAM,IAAK,IAAI,CAAC,IAAY,EAAE,OAAO,IAAK,IAAI,CAAC,IAAY,EAAE,IAAI,CAAC;IACpI;+GALW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,mHAHnB,0DAA0D,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGzD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,0DAA0D;oBACpE,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MCUd,qBAAqB,CAAA;AAKhC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOF,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,UAAU,KAAK;IAC5C;+GAXW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,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,kCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXtB;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MATS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYrD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCeU,iBAAiB,CAAA;AAK5B,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOA,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;IACjC;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,CAACE,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO,CAAC;IACrE;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,GAAG,IAAK,IAAI,CAAC,IAAY,EAAE,IAAI,CAAC;IACvE;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,MAAM,GAAG,GAAGG,oBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM;QACxD,OAAO,CAAA,0BAAA,EAA6B,GAAG,CAAA,CAAE;IAC3C;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAOF,YAAU,CAACD,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,GAAG,CAAC,CAAC;IACvD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,UAAU,WAAW;IAClD;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,OAAQ,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,SAAS;AAClD,YAAA,OAAO,CAAE,IAAI,CAAC,IAAY,CAAC,OAAO;AACpC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK;IAC5B;+GAtCW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBlB;;;;;;;;;;;;;;;;;;;;;GAqBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAtBS,YAAY,6KAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAyBrD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA5B7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCxBU,2BAA2B,CAAA;AAGtC,IAAA,IAAI,EAAE,GAAA;QACJ,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,EAAE,CAAC;IAC1C;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,EAAE,EAAE;IAC5B;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAA,kBAAA,EAAqB,IAAI,CAAC,EAAE,EAAE;IACvC;+GAbW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAX5B;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAdvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MCEd,qBAAqB,CAAA;AAKhC,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,CAAA,OAAA,EAAUA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,EAAE,CAAC,CAAA,CAAE;IACtD;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOF,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,UAAU,WAAW;IAClD;+GAfW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,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,kCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXtB;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MATS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYrD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCVU,8BAA8B,CAAA;AAGzC,IAAA,IAAI,EAAE,GAAA;QACJ,OAAOE,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,EAAE,CAAC;IAC1C;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,CAAA,QAAA,EAAW,IAAI,CAAC,EAAE,EAAE;IAC7B;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,CAAA,MAAA,EAAS,IAAI,CAAC,EAAE,EAAE;IAC3B;+GAbW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,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,4CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAP/B;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAV1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MCPd,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,6FAHvB,MAAM,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGL,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,MAAM;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCCY,kBAAkB,CAAA;AAJ/B,IAAA,WAAA,GAAA;AAKmB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;AAC5C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAU;AAChC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAU;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAU;AAqDnD,IAAA;IAjDC,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB;AACtC,QAAA,IAAI,CAAC,KAAK;YACR;AAEF,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBACvB;YACF,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,EAAE;AAC5C,gBAAA,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACjG,oBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC;AAC5D,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;gBAChC;gBACA;YACF;YACA,IAAI,IAAI,KAAK,OAAO,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChE,gBAAA,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAmC,CAAC,EAAE;AACzF,oBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,UAAiB,CAAC;AACnF,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;gBACnC;gBACA;YACF;AAEA,YAAA,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,IAAI,IAAI;gBACxC;AAEF,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,EACJ,QAAQ,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAC1C;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7B;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC;AACpE,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc;AACrC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC;AACjE,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC;AAEhE,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;IAC5B;+GAzDW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;sBAQE;;;MCkBU,oBAAoB,CAAA;AAK/B,IAAA,IAAI,KAAK,GAAA;QACP,OAAOI,mBAAiB,CAAE,IAAI,CAAC,IAAY,EAAE,KAAK,CAAC;IACrD;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,MAAM,GAAG,GAAI,IAAI,CAAC,IAAY,EAAE,KAAK;AACrC,QAAA,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI;IACpD;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAON,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAE;IACtD;+GApBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBrB;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MApBS,YAAY,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAE,kBAAkB,CAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAuBzE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA1BhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AACtF,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCfU,sBAAsB,CAAA;AAKjC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOA,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,WAAW,YAAY;IACpD;+GAXW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,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,mCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXvB;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MATS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYrD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAflC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;ACPH,SAAS,aAAa,CAAC,KAA6B,EAAE,MAAkB,EAAE,OAAgB,EAAA;IACxF,OAAO,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;AAClD;AAEA,SAAS,YAAY,CAAC,IAAY,EAAA;IAChC,MAAM,MAAM,GAAgB,EAAE;IAC9B,IAAI,GAAG,GAAG,CAAC;AAEX,IAAA,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;YAChC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAC3C,YAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;AACrB,gBAAA,GAAG,GAAG,UAAU,GAAG,CAAC;gBACpB;YACF;YACA;QACF;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACvC,QAAA,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;AACnB,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;AACnB,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD;QACF;QAEA,IAAI,QAAQ,GAAG,GAAG;YAChB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QAEnE,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC9C,YAAA,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;gBACnB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;AAC1E,gBAAA,GAAG,GAAG,QAAQ,GAAG,CAAC;gBAClB;YACF;YACA;QACF;QAEA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC9C,YAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;AACrB,gBAAA,GAAG,GAAG,UAAU,GAAG,CAAC;gBACpB;YACF;YACA;QACF;QAEA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC1C,IAAI,MAAM,KAAK,CAAC,CAAC;YACf;AAEF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;QAC1D,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,GAAG,GAAG,MAAM,GAAG,CAAC;YAChB;QACF;QAEA,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;QAC/C,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;QAE9C,IAAI,YAAY,EAAE;YAChB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAC3C,YAAA,GAAG,GAAG,MAAM,GAAG,CAAC;YAChB;QACF;QAEA,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;QAC1C,IAAI,OAAO,GAAG,EAAE;QAChB,IAAI,QAAQ,GAAG,EAAE;AACjB,QAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;YACrB,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE;QAC9E;aACK;AACH,YAAA,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE;YAChD,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;QAC7C;QAEA,MAAM,KAAK,GAA2B,EAAE;QACxC,IAAI,QAAQ,EAAE;YACZ,MAAM,SAAS,GAAG,+CAA+C;AACjE,YAAA,IAAI,SAAiC;AACrC,YAAA,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE;AACtD,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;AACzB,gBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;gBAChE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC7B,oBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK;YACvB;QACF;QAEA,MAAM,CAAC,IAAI,CAAC;AACV,YAAA,IAAI,EAAE,aAAa,IAAIa,cAAa,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,cAAc,GAAG,UAAU;YAC7F,OAAO;YACP,KAAK;AACN,SAAA,CAAC;AAEF,QAAA,GAAG,GAAG,MAAM,GAAG,CAAC;IAClB;AAEA,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,gBAAgB,CAAC,OAA2B,EAAA;AACnD,IAAA,OAAO,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACnD;AAEA,SAASC,gBAAc,CAAC,KAA6B,EAAA;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACnC,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AACpB,QAAA,OAAO,EAAE;AAEX,IAAA,OAAO;AACJ,SAAA,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,EAAKV,YAAU,CAAC,KAAK,CAAC,GAAG;SACpF,IAAI,CAAC,EAAE,CAAC;AACb;AAEA,SAAS,uBAAuB,CAAC,KAAgB,EAAA;AAC/C,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AAClD,IAAA,IAAI,CAAC,OAAO;AACV,QAAA,OAAO,EAAE;AAEX,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;AAC5B,QAAA,OAAO,QAAQD,YAAU,CAAC,OAAO,CAAC,MAAM;IAE1C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AAC3C,SAAA,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,GAAG,CAAA,CAAA,EAAIA,YAAU,CAAC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAIA,YAAU,CAAC,IAAI,CAAC,KAAKC,YAAU,CAAC,KAAK,CAAC,GAAG;SAC5G,IAAI,CAAC,EAAE,CAAC;AAEX,IAAA,OAAO,KAAK,CAAC,IAAI,KAAK;UAClB,OAAOD,YAAU,CAAC,OAAO,CAAC,CAAA,EAAG,KAAK,CAAA,MAAA;UAClC,OAAOA,YAAU,CAAC,OAAO,CAAC,CAAA,EAAG,KAAK,CAAA,IAAA,CAAM;AAC9C;SAEgB,mBAAmB,CAAC,OAAe,EAAE,SAAqB,MAAM,EAAA;AAC9E,IAAA,IAAI,CAAC,OAAO;AACV,QAAA,OAAO,EAAE;IAEX,IAAI,MAAM,KAAK,QAAQ;AACrB,QAAA,OAAOA,YAAU,CAAC,OAAO,CAAC;AAE5B,IAAA,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE;IAC1B,MAAM,MAAM,GAAa,EAAE;IAC3B,IAAI,YAAY,GAAG,CAAC;AAEpB,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;YACzB,IAAI,YAAY,KAAK,CAAC;AACpB,gBAAA,MAAM,CAAC,IAAI,CAACA,YAAU,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC9C;QACF;QAEA,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/C,QAAA,IAAI,CAAC,OAAO;YACV;AAEF,QAAA,IAAIY,iBAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;AACtE,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;gBAC3B,YAAY,IAAI,CAAC;iBACd,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,YAAY,GAAG,CAAC;gBACrD,YAAY,IAAI,CAAC;YACnB;QACF;QAEA,IAAI,YAAY,GAAG,CAAC;YAClB;QAEF,IAAI,MAAM,KAAK,MAAM,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YAC1D,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YAC3C;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;YACjC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,EAAGD,gBAAc,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC;YAC/F;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,EAAGA,gBAAc,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC;AAC/F,YAAA,IAAI,CAACD,cAAa,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7B,gBAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YACrB;QACF;QAEA,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAC/C,IAAI,YAAY,KAAK,CAAC,CAAC;YACrB;QAEF,OAAO,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC,EAAE;AACtC,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE;AAC/B,YAAA,IAAI,WAAW;AACb,gBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,CAAA,CAAA,CAAG,CAAC;QACpC;AAEA,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,EAAE;AAC9B,QAAA,IAAI,UAAU;AACZ,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,UAAU,CAAA,CAAA,CAAG,CAAC;IACnC;AAEA,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE;AAC/B,QAAA,IAAI,WAAW;AACb,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,CAAA,CAAA,CAAG,CAAC;IACpC;AAEA,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB;;AC7KA,MAAM,iBAAiB,GAAG,yBAAyB;AACnD,MAAM,uBAAuB,GAAG,KAAK;AACrC,MAAM,aAAa,GAAG,IAAI,GAAG,EAA0C;AACvE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,OAAO;IACP,UAAU;IACV,UAAU;IACV,oBAAoB;IACpB,WAAW;IACX,SAAS;IACT,WAAW;IACX,YAAY;IACZ,aAAa;IACb,OAAO;IACP,aAAa;IACb,QAAQ;IACR,MAAM;IACN,MAAM;IACN,WAAW;IACX,YAAY;IACZ,aAAa;IACb,WAAW;IACX,WAAW;IACX,eAAe;IACf,QAAQ;IACR,WAAW;IACX,aAAa;IACb,OAAO;IACP,YAAY;IACZ,WAAW;IACX,MAAM;IACN,gBAAgB;AACjB,CAAA,CAAC;AAEI,SAAU,oBAAoB,CAAC,KAAqC,EAAA;IACxE,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAC7C,QAAA,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,YAAY,EAAE,cAAc,IAAI,EAAE,CAAC;AAC9C,KAAA,CAAC;IACF,MAAM,GAAG,GAAG,mBAAmB,CAAC;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;AAC1B,QAAA,cAAc,EAAE,cAAc;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;AAC7B,KAAA,CAAC;IACF,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC;AAC5C,IAAA,OAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC;AACtC;SAEgB,0BAA0B,CACxC,KAA8B,EAC9B,UAAqC,EAAE,EAAA;AAEvC,IAAA,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC;AACxC,IAAA,OAAO,uBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC;AAC5C;SAEgB,yBAAyB,CACvC,KAA2D,EAC3D,UAAqC,EAAE,EAAA;AAEvC,IAAA,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC;AACxC,IAAA,OAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC;AACtC;SAEgB,wBAAwB,CACtC,IAA+C,EAC/C,UAAqC,EAAE,EAAA;AAEvC,IAAA,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC;AACxC,IAAA,OAAO,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC;AACpC;AAEA,SAAS,kBAAkB,CAAC,KAAqC,EAAE,GAAkB,EAAA;AACnF,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAC5B,OAAO,KAAK,CAAC,KAAK;IAEpB,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;AACxC,IAAA,IAAI,CAAC,OAAO;AACV,QAAA,OAAO,EAAE;IAEX,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAC7C,QAAA,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,YAAY,EAAE,cAAc,IAAI,EAAE,CAAC;AAC9C,KAAA,CAAC;AACF,IAAA,MAAM,kBAAkB,GAAiB;AACvC,QAAA,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;KAC9B;AACD,IAAA,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS;AAClC,QAAA,kBAAkB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AACxC,IAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;AAC3B,QAAA,kBAAkB,CAAC,cAAc,GAAG,cAAc;AAEpD,IAAA,OAAO,uBAAuB,CAC5B,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAA6B,EAC/F,OAAO,EACP,cAAc,CACf;AACH;AAEA,SAAS,mBAAmB,CAAC,OAAkC,EAAA;IAC7D,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,CAAC,cAAc,CAAC;AACtE,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAA,EAAA,EAAK,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACxF,IAAI,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;IAE1C,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC/B,YAAA,cAAc,EAAE,cAAc;AAC/B,SAAA,CAAC;AACF,QAAA,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACvC;IAEA,OAAO;QACL,QAAQ;AACR,QAAA,OAAO,EAAE;AACP,YAAA,SAAS,EAAE,OAAO,CAAC,SAAS,KAAK,KAAK;AACtC,YAAA,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,MAAM;YACxC,aAAa,EAAE,0BAA0B,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,uBAAuB;YAC3F,eAAe,EAAE,OAAO,CAAC,eAAe;AACzC,SAAA;KACF;AACH;AAEA,SAAS,uBAAuB,CAAC,KAA8B,EAAE,GAAkB,EAAA;AACjF,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QACtD,OAAO,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;AAE5C,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;IACvB,IAAI,IAAI,EAAE;QACR,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3C,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;AACrB,YAAA,OAAO,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC;QAEzC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,OAAO;AACT,YAAA,OAAO,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC;AAE7C,QAAA,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI;YAClB,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C;IAEA,OAAO,KAAK,CAAC,OAAO,GAAG,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE;AACnF;AAEA,SAAS,iBAAiB,CAAC,KAA2D,EAAE,GAAkB,EAAA;AACxG,IAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9F;AAEA,SAAS,gBAAgB,CAAC,IAA+C,EAAE,GAAkB,EAAA;AAC3F,IAAA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;AACnC,QAAA,OAAO,EAAE;AAEX,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,cAAc,CAAC,IAAI,CAAC;AAC7B,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,CAAA,GAAA,EAAM,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM;AACvE,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,CAAA,QAAA,EAAW,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,WAAW;AACjF,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,CAAA,IAAA,EAAO,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO;AACzE,QAAA,KAAK,eAAe;AAClB,YAAA,OAAO,CAAA,KAAA,EAAQ,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ;AAC3E,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,CAAA,MAAA,EAAS,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,SAAS;AAC7E,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,CAAA,KAAA,EAAQ,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ;AAC3E,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,CAAA,KAAA,EAAQ,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ;AAC3E,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,CAAA,KAAA,EAAQ,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ;AAC3E,QAAA,KAAK,aAAa;YAChB,OAAO,CAAA,MAAA,EAAS,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA,OAAA,CAAS;AAC3D,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,MAAM;AACf,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC;AAClC,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,eAAe,CAAC,IAAI,CAAC;AAC9B,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC;AAClC,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,CAAA,IAAA,EAAO,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO;AACzE,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,CAAA,YAAA,EAAe,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,eAAe;AACzF,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC;AACrC,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC;AAClC,QAAA,KAAK,gBAAgB;AACnB,YAAA,OAAO,MAAM;AACf,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC;AACnC,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC;AACtC,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC;AACvC,QAAA,KAAK,iBAAiB;AACpB,YAAA,OAAO,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC;AAC5C,QAAA,KAAK,iBAAiB;AACpB,YAAA,OAAO,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC;AAC5C,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC;AACtC,QAAA,KAAK,oBAAoB;AACvB,YAAA,OAAO,2BAA2B,CAAC,IAAI,CAAC;AAC1C,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC;AACxC,QAAA,KAAK,UAAU;AACf,QAAA,KAAK,gBAAgB;AACnB,YAAA,OAAO,CAAA,+BAAA,EAAkC,IAAI,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE,GAAG;AAC5E,QAAA,KAAK,OAAO;YACV,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AACpF,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC;AACnC,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC;AAClC,QAAA,KAAK,WAAW;YACd,OAAO,CAAA,0CAAA,EAA6C,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA,OAAA,CAAS;AAC7F,QAAA,KAAK,aAAa;AAClB,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC;AAClC,QAAA;AACE,YAAA,OAAO,0BAA0B,CAAC,IAAI,EAAE,GAAG,CAAC;;AAElD;AAEA,SAAS,cAAc,CAAC,IAA4B,EAAA;IAClD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACnC,IAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;IAC9B,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtC,QAAA,OAAO,OAAO;IAEhB,MAAM,SAAS,GAAG;AAChB,UAAE;UACA,8BAA8B;AAClC,IAAA,OAAO,CAAA,aAAA,EAAgB,SAAS,CAAA,EAAA,EAAK,OAAO,SAAS;AACvD;AAEA,SAAS,cAAc,CAAC,IAA4B,EAAE,GAAkB,EAAA;IACtE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG;UAChD,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG;AACnD,UAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAA,QAAA,EAAW,UAAU,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,GAAG,EAAE;AAC9D,IAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE;AAC3D,IAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAA,OAAA,EAAU,UAAU,CAAC,QAAQ,CAAC,CAAA,CAAA,CAAG,GAAG,EAAE;AAClE,IAAA,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,4CAA4C,GAAG,EAAE;IAC1G,OAAO,CAAA,EAAA,EAAK,QAAQ,CAAA,EAAG,SAAS,GAAG,aAAa,CAAA,CAAA,EAAI,OAAO,CAAA,IAAA,CAAM;AACnE;AAEA,SAAS,oBAAoB,CAAC,IAA4B,EAAA;AACxD,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,OAAO,CAAA,wGAAA,EAA2G,MAAM,CAAA,qFAAA,CAAuF;AACjN;AAEA,SAAS,mBAAmB,CAAC,IAA4B,EAAA;AACvD,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,OAAO,CAAA,kGAAA,EAAqG,MAAM,CAAA,8FAAA,CAAgG;AACpN;AAEA,SAAS,eAAe,CAAC,IAA4B,EAAA;IACnD,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,IAAA,IAAI,CAAC,GAAG;AACN,QAAA,OAAO,EAAE;IACX,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,IAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAA,QAAA,EAAW,UAAU,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,GAAG,EAAE;AAC9D,IAAA,OAAO,CAAA,UAAA,EAAa,UAAU,CAAC,GAAG,CAAC,CAAA,OAAA,EAAU,UAAU,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,SAAS,GAAG;AAC9E;AAEA,SAAS,cAAc,CAAC,IAA4B,EAAE,GAAkB,EAAA;AACtE,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI;AACtC,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,GAAG,EAAE;AACjG,IAAA,OAAO,IAAI,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA,EAAA,EAAK,GAAG,GAAG;AACtF;AAEA,SAAS,iBAAiB,CAAC,IAA4B,EAAE,GAAkB,EAAA;IACzE,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3C,IAAA,OAAO,KAAK,KAAK,CAAA,CAAA,EAAI,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA,GAAA,EAAM,KAAK,GAAG;AACvF;AAEA,SAAS,mBAAmB,CAAC,IAA4B,EAAA;IACvD,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;AACnD,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC;AAChD,IAAA,MAAM,aAAa,GAAG,QAAQ,GAAG,CAAA,iBAAA,EAAoB,QAAQ,CAAA,CAAA,CAAG,GAAG,EAAE;AACrE,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI;AACxB,IAAA,MAAM,UAAU,GAAG;QACjB,gCAAgC;AAChC,QAAA,WAAW,GAAG,CAAA,0BAAA,EAA6B,UAAU,CAAC,WAAW,CAAC,CAAA,CAAA,CAAG,GAAG,EAAE;AAC1E,QAAA,IAAI,GAAG,0BAA0B,GAAG,EAAE;QACtC,IAAI,GAAG,CAAA,0BAAA,EAA6B,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;QACvG,IAAI,GAAG,CAAA,yBAAA,EAA4B,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;KACtG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3B,IAAA,OAAO,CAAA,KAAA,EAAQ,UAAU,CAAA,MAAA,EAAS,aAAa,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe;AACpG;AAEA,SAAS,eAAe,CAAC,IAA4B,EAAE,GAAkB,EAAA;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAgC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACtG,IAAA,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;AAC3D,IAAA,MAAM,KAAK,GAAG,MAAM,GAAG,CAAA,OAAA,EAAU,MAAM,CAAA,QAAA,CAAU,GAAG,EAAE;AACtD,IAAA,MAAM,KAAK,GAAG,IAAI,GAAG,CAAA,OAAA,EAAU,IAAI,CAAA,QAAA,CAAU,GAAG,EAAE;AAClD,IAAA,OAAO,CAAA,OAAA,EAAU,KAAK,CAAA,EAAG,KAAK,UAAU;AAC1C;AAEA,SAAS,kBAAkB,CAAC,IAA4B,EAAE,GAAkB,EAAE,WAAW,GAAG,KAAK,EAAA;AAC/F,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACvG,OAAO,CAAA,IAAA,EAAO,KAAK,CAAA,KAAA,CAAO;AAC5B;AAEA,SAAS,mBAAmB,CAAC,IAA4B,EAAE,GAAkB,EAAE,WAAW,GAAG,KAAK,EAAA;AAChG,IAAA,MAAM,GAAG,GAAG,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI;IACtD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,IAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAA,mBAAA,EAAsB,UAAU,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,GAAG,EAAE;AACzE,IAAA,OAAO,IAAI,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA,EAAA,EAAK,GAAG,GAAG;AAC7F;AAEA,SAAS,wBAAwB,CAAC,IAA4B,EAAE,GAAkB,EAAA;IAChF,OAAO,CAAA,IAAA,EAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,KAAA,CAAO;AACxG;AAEA,SAAS,wBAAwB,CAAC,IAA4B,EAAE,GAAkB,EAAA;AAChF,IAAA,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;AAC3D,IAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC;AACvE,IAAA,OAAO,CAAA,IAAA,EAAO,IAAI,CAAA,SAAA,EAAY,UAAU,OAAO;AACjD;AAEA,SAAS,kBAAkB,CAAC,IAA4B,EAAE,GAAkB,EAAA;IAC1E,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,IAAA,OAAO,CAAA,gBAAA,EAAmB,EAAE,CAAA,qCAAA,EAAwC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ;AAChI;AAEA,SAAS,2BAA2B,CAAC,IAA4B,EAAA;IAC/D,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAA,OAAO,CAAA,6DAAA,EAAgE,IAAI,CAAA,GAAA,EAAM,EAAE,aAAa;AAClG;AAEA,SAAS,oBAAoB,CAAC,IAA4B,EAAE,GAAkB,EAAA;AAC5E,IAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM;AACzE,IAAA,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;IACvD,OAAO,CAAA,uEAAA,EAA0E,IAAI,CAAA,mDAAA,EAAsD,UAAU,CAAC,KAAK,CAAC,4DAA4D,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,cAAc;AAC1R;AAEA,SAAS,cAAc,CAAC,IAA4B,EAAE,GAAkB,EAAA;IACtE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;IACvC,MAAM,UAAU,GAAG,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AACjD,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;IACpD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3C,IAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS;AACxB,QAAA,OAAO,UAAU,CAAC,UAAU,CAAC;AAC/B,IAAA,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ;AACrC,QAAA,OAAO,UAAU,CAAC,UAAU,CAAC;AAC/B,IAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU;AAClC,QAAA,OAAO,UAAU,CAAC,UAAU,CAAC;AAC/B,IAAA,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACvH,QAAA,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAyC,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;AAC7G,QAAA,OAAO,CAAA,CAAA,EAAI,GAAG,CAAA,EAAG,KAAK,IAAI,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA,EAAA,EAAK,GAAG,GAAG;IACvE;IACA,OAAO,mBAAmB,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAChE;AAEA,SAAS,0BAA0B,CAAC,IAA4B,EAAE,GAAkB,EAAA;AAClF,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3C,QAAA,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AAExD,IAAA,MAAM,OAAO,GAAG;QACd,0BAA0B;AAC1B,QAAA,CAAA,0BAAA,EAA6B,kBAAkB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAA,CAAE;QACpE,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC;KAC1D,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3B,IAAA,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAyC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7G,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC;AAC7C,IAAA,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa;AAC5C,IAAA,OAAO,CAAA,CAAA,EAAI,UAAU,CAAA,EAAG,KAAK,gCAAgC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAA,EAAK,IAAI,CAAA,EAAA,EAAK,UAAU,GAAG;AAC7G;AAEA,SAAS,qBAAqB,CAAC,IAA4B,EAAE,GAAkB,EAAA;IAC7E,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3C,IAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;AACrB,QAAA,OAAO,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC;IAEzC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,IAAA,IAAI,OAAO;AACT,QAAA,OAAO,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC;IAE7C,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC;AAEA,SAAS,sBAAsB,CAAC,OAAe,EAAE,GAAkB,EAAA;AACjE,IAAA,OAAO,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;AACpD;AAEA,SAAS,sBAAsB,CAC7B,IAA4B,EAC5B,eAA8D,EAAA;AAE9D,IAAA,IAAI,CAAC,eAAe;AAClB,QAAA,OAAO,EAAE;AACX,IAAA,MAAM,QAAQ,GAAG,OAAO,eAAe,KAAK;AAC1C,UAAE,eAAe,CAAC,IAAI;UACpB,eAAe;AACnB,IAAA,OAAO,mBAAmB,CAAC,QAAQ,CAAC;AACtC;AAEA,SAAS,mBAAmB,CAAC,KAAuB,EAAA;AAClD,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACtB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/E,OAAO,OAAO,KAAK,KAAK;AACtB,UAAE,KAAK,CAAC,IAAI;UACV,EAAE;AACR;AAEA,SAAS,cAAc,CACrB,KAAmC,EACnC,UAAU,GAAG,EAAE,EACf,MAAA,GAAqB,MAAM,EAC3B,OAAgB,EAAA;AAEhB,IAAA,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;IACnC,MAAM,MAAM,GAA2B,EAAE;AACzC,IAAA,MAAM,aAAa,GAAG,CAAC,UAAU,CAAC;IAElC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACpC,QAAA,IAAI,CAAC,QAAQ;YACX;AACF,QAAA,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;YACtC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC;QACF;AACA,QAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IACxD;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;AACvE,SAAA,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,EAAK,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC;IAEhG,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACpF,IAAA,IAAI,SAAS;QACX,QAAQ,CAAC,OAAO,CAAC,CAAA,QAAA,EAAW,UAAU,CAAC,SAAS,CAAC,CAAA,CAAA,CAAG,CAAC;AACvD,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B;AAEA,SAAS,cAAc,CAAC,KAAmC,EAAA;AACzD,IAAA,IAAI,CAAC,KAAK;AACR,QAAA,OAAO,EAAE;AAEX,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AACpB,YAAA,OAAO,EAAE;AACX,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AACtB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACtB,OAAQ,KAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACpF,OAAQ,KAA0D,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjH;IAEA,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpE;AAEA,SAAS,WAAW,CAAC,KAAc,EAAA;AACjC,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK;AACxB,UAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAqC,CAAC,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;UACzF,EAAE;AACR;AAEA,SAAS,SAAS,CAAC,KAAc,EAAA;IAC/B,OAAO,OAAO,KAAK,KAAK;AACtB,UAAE;UACA,KAAK,IAAI;AACT,cAAE;AACF,cAAE,MAAM,CAAC,KAAK,CAAC;AACrB;AAEA,SAAS,kBAAkB,CAAC,KAAa,EAAA;IACvC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACzF;AAEA,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5C,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC;AAEA,SAAS,UAAU,CAAC,KAAc,EAAA;IAChC,OAAO,SAAS,CAAC,KAAK;AACnB,SAAA,OAAO,CAAC,IAAI,EAAE,OAAO;AACrB,SAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,SAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,SAAA,OAAO,CAAC,IAAI,EAAE,QAAQ;AACtB,SAAA,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3B;AAEA,SAAS,UAAU,CAAC,KAAc,EAAA;IAChC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AACjD;AAEA,SAAS,UAAU,CAAC,KAAa,EAAA;IAC/B,OAAO,KAAK,GAAG,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AAClE;AAEA,SAAS,iBAAiB,CAAC,KAAa,EAAA;AACtC,IAAA,IAAI,CAAC,KAAK;AACR,QAAA,OAAO,EAAE;IAEX,MAAM,YAAY,GAAI,UAAkB,EAAE,OAAO,GAAG,QAAQ,CAAC,EAAE,MAAM;IACrE,IAAI,YAAY,EAAE,IAAI;AACpB,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAE5D,IAAA,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;QAC/E,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7C,IAAI,MAAM,GAAG,EAAE;QACf,KAAK,MAAM,IAAI,IAAI,KAAK;AACtB,YAAA,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;AACrC,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;IAChC;AAEA,IAAA,OAAO,EAAE;AACX;;MCjjBa,sBAAsB,CAAA;IAKjC,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,WAAW,GAAA;AACT,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;AAClD,QAAA,IAAI,SAAS;AACX,YAAA,SAAS,CAAC,SAAS,GAAG,EAAE;IAC5B;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;AAClD,QAAA,IAAI,CAAC,SAAS;YACZ;QAEF,MAAM,OAAO,GAAGX,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO,CAAC;AACtD,QAAA,MAAM,GAAG,GAAGA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC,GAAI,IAAI,CAAC,IAAY,CAAC,QAAQ,GAAG,EAAE;QAC/F,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,SAAS,CAAC,SAAS,GAAG,EAAE;YACxB;QACF;QAEA,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,KAAK,KAAK,KAAM,IAAI,CAAC,IAAY,EAAE,OAAO,IAAI,CAAE,IAAI,CAAC,IAAY,EAAE,UAAU,CAAC,EAAE;AACzG,YAAA,SAAS,CAAC,WAAW,GAAG,OAAO;YAC/B;QACF;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,MAAM;AACrD,QAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC3B,YAAA,SAAS,CAAC,WAAW,GAAG,OAAO;YAC/B;QACF;QAEA,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;YAC3G,SAAS,CAAC,SAAS,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE;AACxD,gBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS;AAClC,gBAAA,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc;gBAC5C,UAAU;AACX,aAAA,CAAC;YACF;QACF;QAEA,SAAS,CAAC,SAAS,GAAG,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC;IAChE;+GArDW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,6RAHvB,mDAAmD,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGlD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mDAAmD;oBAC7D,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCLhC,uBAAuB,CAAA;IAKlC,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,WAAW,GAAA;AACT,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;AAClD,QAAA,IAAI,SAAS;AACX,YAAA,SAAS,CAAC,SAAS,GAAG,EAAE;IAC5B;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;AAClD,QAAA,IAAI,CAAC,SAAS;YACZ;QAEF,MAAM,OAAO,GAAGA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,SAAS,CAAC,SAAS,GAAG,EAAE;YACxB;QACF;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,MAAM;QACrD,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,KAAK,KAAK,IAAI,UAAU,KAAK,QAAQ,KAAM,IAAI,CAAC,IAAY,EAAE,OAAO,IAAI,CAAE,IAAI,CAAC,IAAY,EAAE,UAAU,CAAC,EAAE;AACpI,YAAA,SAAS,CAAC,WAAW,GAAG,OAAO;YAC/B;QACF;QAEA,SAAS,CAAC,SAAS,GAAG,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC;IAChE;+GArCW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,8RAHxB,sDAAsD,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGrD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sDAAsD;oBAChE,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCOhC,kBAAkB,CAAA;AAG7B,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,gBAAgB,CAAE,IAAI,CAAC,IAAY,EAAE,GAAG,CAAC;IAClD;AAEA,IAAA,IAAI,GAAG,GAAA;QACL,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,GAAG,CAAC;IAC3C;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,KAAK,CAAC;IAC7C;+GAbW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,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,+BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdnB;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;;;;;AAWT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;ACvB3B,IAAI,kBAAkB,GAAkD,IAAI;AAC5E,IAAI,mBAAmB,GAAQ,IAAI;AAY5B,eAAe,cAAc,GAAA;AAClC,IAAA,IAAI,mBAAmB;AACrB,QAAA,OAAO,mBAAmB;AAC5B,IAAA,IAAI,kBAAkB;QACpB,OAAO,MAAM,kBAAkB;AAEjC,IAAA,kBAAkB,GAAG,OAAO,mBAAmB;AAC5C,SAAA,IAAI,CAAC,CAAC,GAAG,KAAI;AACZ,QAAA,MAAM,aAAa,GAAG,CAAC,GAAG,IAAK,GAAW,CAAC,OAAO,IAAK,GAAW,CAAC,OAAO,GAAG,GAAG;QAEhF,IAAI,QAAQ,GAAG,aAAa;AAE5B,QAAA,IAAI,OAAO,aAAa,KAAK,UAAU,IAAI,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE;YACpG,QAAQ,GAAG,aAAa;QAC1B;AACK,aAAA,IAAK,GAAW,EAAE,WAAW,EAAE;AAClC,YAAA,QAAQ,GAAI,GAAW,CAAC,WAAW;QACrC;AACK,aAAA,IAAI,aAAa,IAAI,aAAa,CAAC,WAAW,EAAE;AACnD,YAAA,QAAQ,GAAG,aAAa,CAAC,WAAW;QACtC;QAEA,mBAAmB,GAAG,QAAQ;AAC9B,QAAA,OAAO,QAAkC;AAC3C,IAAA,CAAC;AACA,SAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACf,QAAA,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,KAAK,CAAC;AAC5E,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,CAAC;IAEJ,OAAO,MAAM,kBAAkB;AACjC;;AC5CO,MAAM,0BAA0B,GAAG,GAAG;AACtC,MAAM,0BAA0B,GAAG,GAAG;AACtC,MAAM,8BAA8B,GAAG,GAAG;AAC1C,MAAM,8BAA8B,GAAG,GAAG;AAE3C,SAAU,mBAAmB,CAAC,KAAc,EAAA;IAChD,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AAC1F,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI;AACjE;AAEM,SAAU,qBAAqB,CAAC,IAAY,EAAA;IAChD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACzC,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE;QAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAChC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAC7C,OAAO,KAAK,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;IACxC;AACA,IAAA,OAAO,EAAE;AACX;AAEM,SAAU,4BAA4B,CAAC,IAAY,EAAA;IACvD,MAAM,eAAe,GAAG;SACrB,KAAK,CAAC,OAAO;SACb,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACvB,SAAA,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjD,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC;AACrD,IAAA,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC;IAExC,IAAI,IAAI,KAAK,OAAO;AAClB,QAAA,OAAO,GAAG,GAAG,SAAS,GAAG,EAAE;IAC7B,IAAI,IAAI,KAAK,iBAAiB;AAC5B,QAAA,OAAO,GAAG,GAAG,SAAS,GAAG,EAAE;IAC7B,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,WAAW;AAC5E,QAAA,OAAO,GAAG,GAAG,SAAS,GAAG,EAAE;AAC7B,IAAA,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,OAAO;AAC1C,QAAA,OAAO,GAAG,GAAG,SAAS,GAAG,EAAE;AAC7B,IAAA,OAAO,GAAG,GAAG,SAAS,GAAG,EAAE;AAC7B;AAEM,SAAU,gCAAgC,CAAC,IAAY,EAAA;IAC3D,MAAM,SAAS,GAAG;SACf,KAAK,CAAC,OAAO;SACb,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,SAAA,MAAM;IAET,IAAI,SAAS,IAAI,CAAC;AAChB,QAAA,OAAO,8BAA8B;IACvC,IAAI,SAAS,GAAG,CAAC;AACf,QAAA,OAAO,GAAG,GAAG,SAAS,GAAG,EAAE;AAE7B,IAAA,OAAO,8BAA8B;AACvC;AAEM,SAAU,kBAAkB,CAChC,MAAc,EACd,SAAS,GAAG,0BAA0B,EACtC,SAAA,GAA2B,0BAA0B,EAAA;IAErD,OAAO,SAAS,IAAI;UAChB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM;AAC5B,UAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC;AACtD;;MC8Fa,6BAA6B,CAAA;AApI1C,IAAA,WAAA,GAAA;AAqImB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAShD,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,IAAI,GAAG,CAAC;QACR,IAAA,CAAA,KAAK,GAAG,EAAE;QACV,IAAA,CAAA,kBAAkB,GAAG,EAAE;QACvB,IAAA,CAAA,SAAS,GAAG,EAAE;QAEN,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,WAAW,GAAG,CAAC;QACf,IAAA,CAAA,SAAS,GAAkB,IAAI;QAC/B,IAAA,CAAA,mBAAmB,GAAQ,IAAI;AAkTxC,IAAA;AAhTC,IAAA,IAAI,WAAW,GAAA;QACb,OAAO;YACL,IAAI,IAAI,CAAC,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC;AACzC,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACtB;IACH;AAEA,IAAA,IAAI,IAAI,GAAA;QACN,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI,CAAC;IAC5C;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS;AAC9C,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM;AAChC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IACtC;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,KAAK;IAC9C;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,KAAK;IAClD;AAEA,IAAA,IAAI,0BAA0B,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,KAAK,KAAK;IACtD;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,KAAK;IAClD;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,KAAK,KAAK;IACpD;AAEA,IAAA,IAAI,4BAA4B,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,oBAAoB,KAAK,KAAK;IACxD;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,KAAK,KAAK;IACpD;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,KAAK,SAAS;AACpD,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY;AACtC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK;IAC7C;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5D;AAEA,IAAA,IAAI,wBAAwB,GAAA;QAC1B,OAAO,kBAAkB,CACvB,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7G,SAAS,EACT,IAAI,CAAC,gBAAgB,CACtB;IACH;AAEA,IAAA,IAAI,0BAA0B,GAAA;QAC5B,OAAO,IAAI,CAAC,kBAAkB,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAA,EAAA,CAAI;IACxE;AAEA,IAAA,IAAY,gBAAgB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,KAAK,MAAM;AAC7E,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,KAAK,MAAM,GAAG,IAAI,GAAG,GAAG;QAC3D,OAAO,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,GAAG;IAC/D;AAEQ,IAAA,yBAAyB,CAAC,YAAoB,EAAA;AACpD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,wBAAwB,CAAC;AAC3E,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS;AACtC,QAAA,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,MAAM;YAC/B,OAAO,CAAA,EAAG,aAAa,CAAA,EAAA,CAAI;AAE7B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB;QACvC,IAAI,SAAS,IAAI,IAAI;YACnB,OAAO,CAAA,EAAG,aAAa,CAAA,EAAA,CAAI;QAE7B,OAAO,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA,EAAA,CAAI;IAClD;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS;AAC/C,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;AACjC,QAAA,OAAQ,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,IAAI;IAC7C;AAEA,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,KAAK,IAAI;IACpD;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,CAAA,MAAA,EAAS,IAAI,CAAC,IAAI,GAAG;IAC9B;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACrD;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;QAC5B,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACrD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AACzD,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,OAAO,QAAQ,KAAK,WAAW;YACjC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;IACrC;AAGA,IAAA,mBAAmB,CAAC,KAAoB,EAAA;QACtC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS;YAC1C,IAAI,CAAC,UAAU,EAAE;IACrB;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,IAAI;IAChD;AAEA,IAAA,OAAO,CAAC,UAAmB,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,mBAAmB,EAAE;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACxC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AACzD,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AACtC,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC,EAAE,IAAI,CAAC;QACV;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB;AACF,QAAA,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,GAAG,EAAE,CAAA,IAAA,CAAM,CAAC;IACpE;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB;AACF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,OAAO,QAAQ,KAAK,WAAW;YACjC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;QACzC,cAAc,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,OAAO,QAAQ,KAAK,WAAW;YACjC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;AACnC,QAAA,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;AAC3C,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACzE,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEQ,IAAA,MAAM,iBAAiB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU;YACxE;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC/B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;AAC7C,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa;AAC5C,QAAA,IAAI,CAAC,IAAI;YACP;QAEF,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC;AAClB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,WAAW;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,QAAA,IAAI;AACF,YAAA,MAAM,gBAAgB,GAAG,MAAM,cAAc,EAAE;AAC/C,YAAA,IAAI,CAAC,gBAAgB;AACnB,gBAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;YAC3D,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;gBAC9C;YAEF,IAAI,CAAC,kBAAkB,EAAE;YACzB,YAAY,CAAC,IAAI,CAAC;AAClB,YAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;AACpC,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ;AACnC,YAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;YAEvB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;gBAC9C;YAEF,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,SAAS,GAAG,EAAE;AACzC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY;YACxC,IAAI,cAAc,GAAG,CAAC;gBACpB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC;YAC1E,IAAI,CAAC,gBAAgB,EAAE;QACzB;QACA,OAAO,KAAK,EAAE;YACZ,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;gBAC9C;YACF,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,+BAA+B;YACrF,YAAY,CAAC,IAAI,CAAC;QACpB;gBACQ;AACN,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB;QACF;IACF;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,mBAAmB,EAAE,OAAO,IAAI;QACvC;AACA,QAAA,MAAM;;QAEN;AACA,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;IACjC;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACtC,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;YAC3C;QACF;QACA,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;IAC/D;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,YAAA,MAAM,CAAC,UAAU,CAAC,MAAK;gBACrB,IAAI,IAAI,CAAC,SAAS;oBAChB;gBACF,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC/D,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC,EAAE,CAAC,CAAC;YACL;QACF;QACA,cAAc,CAAC,MAAK;YAClB,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;YAC/D,IAAI,CAAC,gBAAgB,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;+GAzUW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhI9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6HT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA9HS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAiIX,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBApIzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2CAA2C;AACrD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6HT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAIE,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,WAAW;;sBAErB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBA4IA,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;ACpS5C,SAASc,wBAAsB,CAAC,QAAyB,EAAE,SAAiB,EAAA;IAC1E,OAAO,QAAQ,CAAC,MAAM,CAAkB,CAAC,MAAM,EAAE,OAAO,KAAI;AAC1D,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,EAAE,KAAK;cAC/B,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;cAC3B,OAAO;QACX,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,QAAA,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACrE,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG;AAC1B,gBAAA,GAAG,eAAe;AAClB,gBAAA,OAAO,EAAE,eAAe,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO;aACvD;QACH;aACK;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QAC1B;AACA,QAAA,OAAO,MAAM;IACf,CAAC,EAAE,EAAE,CAAC;AACR;MAiBa,uBAAuB,CAAA;AAfpC,IAAA,WAAA,GAAA;QAsBE,IAAA,CAAA,QAAQ,GAAoB,EAAE;QACtB,IAAA,CAAA,YAAY,GAAG,EAAE;QACjB,IAAA,CAAA,aAAa,GAAG,CAAC;AAgG1B,IAAA;IA9FC,WAAW,GAAA;QACT,MAAM,QAAQ,GAAGd,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI,CAAC;QACpD,MAAM,cAAc,GAAGA,WAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;AACtD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe;QACrD,MAAM,iBAAiB,GAAG;AACxB,cAAE,eAAe,EAAE,GAAG,CAAC,cAAc;cACnC,SAAS;AACb,QAAA,MAAM,YAAY,GAAG,iBAAiB,IAAI,IAAI,CAAC,YAAY;AAC3D,QAAA,MAAM,uBAAuB,GAAG,iBAAiB,KAAK;AACjD,eAAA,iBAAiB,KAAK,IAAI,CAAC,YAAY;AAE5C,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC5B;AACK,aAAA,IAAI,QAAQ,KAAK,YAAY,EAAE;YAClC,IAAI,YAAY,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;gBACrD,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;AACxD,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC3D,IAAI,uBAAuB,EAAE;oBAC3B,IAAI,CAAC,QAAQ,GAAG;AACd,wBAAA,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE;AAClE,wBAAA,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE;qBAClE;gBACH;AACK,qBAAA,IAAI,WAAW,EAAE,MAAM,EAAE;oBAC5B,IAAI,CAAC,QAAQ,GAAG;wBACd,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC7B,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,YAAY,EAAE;qBAChE;gBACH;qBACK;oBACH,IAAI,CAAC,QAAQ,GAAG;wBACd,GAAG,IAAI,CAAC,QAAQ;AAChB,wBAAA,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE;qBAClE;gBACH;YACF;iBACK;AACH,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YAC5B;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,QAAA,IAAI,cAAc;AAChB,YAAA,eAAe,EAAE,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAClG;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACjG;AAEA,IAAA,kBAAkB,CAAC,OAAsB,EAAA;AACvC,QAAA,OAAO,OAAO,CAAC,EAAE,GAAG,CAAC,KAAK;AACxB,cAAE;cACA,0CAA0C;IAChD;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS;YAChC,OAAO,IAAI,CAAC,IAAI;AAClB,QAAA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS;AACzC,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;AAC1B,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS;YACtC,OAAO,IAAI,CAAC,UAAU;AACxB,QAAA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,KAAK,SAAS;AAC/C,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU;AAChC,QAAA,OAAO,KAAK;IACd;IAEA,YAAY,CAAC,MAAc,EAAE,OAAsB,EAAA;QACjD,OAAO,OAAO,CAAC,EAAE;IACnB;AAEA,IAAA,aAAa,CAAC,SAAiB,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;YAC5E;QACF,IAAI,CAAC,QAAQ,GAAGc,wBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;IAClE;AAEQ,IAAA,WAAW,CAAC,OAAe,EAAA;QACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO;YACjG;QACF,IAAI,CAAC,QAAQ,GAAG;AACd,cAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;cACrD,EAAE;IACR;+GAxGW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXxB;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EATS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAfnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;sBACA;;;MC9BU,mBAAmB,CAAA;AAK9B,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOhB,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAC9C;+GAXW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,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,gCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXpB;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MATS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYrD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAf/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;ACpBH,IAAI,SAAS,GAA0B,IAAI;AAC3C,IAAI,aAAa,GAAuB,IAAI;AAC5C,IAAI,iBAAiB,GAAwB,IAAI;AACjD,IAAI,SAAS,GAAyC,IAAI;AAC1D,IAAI,SAAS,GAAyC,IAAI;AAC1D,IAAI,SAAS,GAAkB,IAAI;AAEnC,SAAS,WAAW,GAAA;IAClB,IAAI,SAAS,EAAE;QACb,YAAY,CAAC,SAAS,CAAC;QACvB,SAAS,GAAG,IAAI;IAClB;IACA,IAAI,SAAS,EAAE;QACb,YAAY,CAAC,SAAS,CAAC;QACvB,SAAS,GAAG,IAAI;IAClB;AACF;AAEA,SAAS,eAAe,GAAA;AACtB,IAAA,IAAI,SAAS,IAAI,OAAO,QAAQ,KAAK,WAAW;AAC9C,QAAA,OAAO,SAAS;AAElB,IAAA,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACzC,IAAA,SAAS,CAAC,SAAS,GAAG,YAAY;AAClC,IAAA,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;AACzC,IAAA,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO;AACnC,IAAA,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AAClC,IAAA,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK;AAC5B,IAAA,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK;AAC3B,IAAA,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,oBAAoB;AAChD,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AACpC,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,kBAAkB,CAAC,IAAqB,EAAA;IAC/C,IAAI,OAAO,IAAI,KAAK,SAAS;AAC3B,QAAA,OAAO,IAAI;AAEb,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,QAAA,IAAI;YACF,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;AACrD,gBAAA,OAAO,IAAI;QACf;AACA,QAAA,MAAM;;QAEN;IACF;AAEA,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AAC5E,QAAA,IAAI;YACF,OAAO,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO;QAClE;AACA,QAAA,MAAM;;QAEN;IACF;AAEA,IAAA,OAAO,KAAK;AACd;AAEA,eAAe,qBAAqB,CAAC,SAA2B,EAAA;AAC9D,IAAA,IAAI,CAAC,SAAS,IAAI,CAAC,aAAa;QAC9B;AAEF,IAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,SAAS,EAAE;QAC/D,SAAS;AACT,QAAA,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACtD,QAAA,QAAQ,EAAE,OAAO;AAClB,KAAA,CAAC;IAEF,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;AACtF;AAEM,SAAU,oBAAoB,CAClC,MAA0B,EAC1B,OAAe,EACf,SAAA,GAA8B,KAAK,EACnC,SAAS,GAAG,KAAK,EACjB,MAAuB,EAAA;AAEvB,IAAA,IAAI,CAAC,MAAM,IAAI,OAAO,QAAQ,KAAK,WAAW;QAC5C;AAEF,IAAA,MAAM,OAAO,GAAG,eAAe,EAAE;AACjC,IAAA,IAAI,CAAC,OAAO;QACV;AAEF,IAAA,WAAW,EAAE;AACb,IAAA,MAAM,MAAM,GAAG,YAAW;AACxB,QAAA,IAAI,CAAC,SAAS;YACZ;QAEF,aAAa,GAAG,MAAM;AACtB,QAAA,SAAS,CAAC,WAAW,GAAG,OAAO;AAC/B,QAAA,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS;AACvC,QAAA,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,OAAO;AACtE,QAAA,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO;QACnC,SAAS,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE;AAC1E,QAAA,SAAS,CAAC,EAAE,GAAG,SAAS;AAExB,QAAA,IAAI;AACF,YAAA,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE,SAAS,CAAC;QACpD;AACA,QAAA,MAAM;;QAEN;AAEA,QAAA,MAAM,qBAAqB,CAAC,SAAS,CAAC;AACtC,QAAA,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM;QAClC,iBAAiB,IAAI;QACrB,iBAAiB,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,MAAK;AACrD,YAAA,KAAK,qBAAqB,CAAC,SAAS,CAAC;AACvC,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,IAAI,SAAS;QACX,KAAK,MAAM,EAAE;;AAEb,QAAA,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;AACtC;AAEM,SAAU,WAAW,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3C,IAAA,IAAI,CAAC,SAAS;QACZ;AAEF,IAAA,WAAW,EAAE;IACb,MAAM,MAAM,GAAG,MAAK;AAClB,QAAA,IAAI,CAAC,SAAS;YACZ;AAEF,QAAA,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO;AACnC,QAAA,IAAI,aAAa,IAAI,SAAS,EAAE;AAC9B,YAAA,IAAI;AACF,gBAAA,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC;YACnD;AACA,YAAA,MAAM;;YAEN;QACF;QACA,aAAa,GAAG,IAAI;QACpB,SAAS,GAAG,IAAI;QAChB,iBAAiB,IAAI;QACrB,iBAAiB,GAAG,IAAI;AAC1B,IAAA,CAAC;AAED,IAAA,IAAI,SAAS;AACX,QAAA,MAAM,EAAE;;AAER,QAAA,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;AACvC;;AC7IA,SAAS,sBAAsB,CAAC,QAAyB,EAAE,SAAkB,EAAA;IAC3E,OAAO,QAAQ,CAAC,MAAM,CAAkB,CAAC,MAAM,EAAE,OAAO,KAAI;QAC1D,MAAM,WAAW,GAAG,SAAS,IAAI,IAAI,IAAI,OAAO,CAAC,EAAE,KAAK;cACpD,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;cAC3B,OAAO;QACX,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,QAAA,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACrE,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG;AAC1B,gBAAA,GAAG,eAAe;AAClB,gBAAA,OAAO,EAAE,eAAe,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO;aACvD;QACH;aACK;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QAC1B;AACA,QAAA,OAAO,MAAM;IACf,CAAC,EAAE,EAAE,CAAC;AACR;MA4Ba,iBAAiB,CAAA;AA1B9B,IAAA,WAAA,GAAA;QAiCE,IAAA,CAAA,QAAQ,GAAoB,EAAE;QACtB,IAAA,CAAA,YAAY,GAAG,EAAE;QACjB,IAAA,CAAA,aAAa,GAAG,CAAC;AA8H1B,IAAA;IA3HC,WAAW,GAAA;QACT,MAAM,QAAQ,GAAGE,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO,CAAC;QACvD,MAAM,cAAc,GAAGA,WAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;AACtD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe;AACrD,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,mBAAmB;AAC7D,QAAA,MAAM,0BAA0B,GAAG,mBAAmB,KAAK,IAAI,CAAC,uBAAuB;QACvF,MAAM,iBAAiB,GAAG;AACxB,cAAE,eAAe,EAAE,GAAG,CAAC,cAAc;cACnC,SAAS;AACb,QAAA,MAAM,YAAY,GAAG,iBAAiB,IAAI,IAAI,CAAC,YAAY;AAC3D,QAAA,MAAM,uBAAuB,GAAG,iBAAiB,KAAK;AACjD,eAAA,iBAAiB,KAAK,IAAI,CAAC,YAAY;AAE5C,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,YAAA,IAAI,cAAc;AAChB,gBAAA,eAAe,EAAE,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC;AAChD,YAAA,IAAI,CAAC,uBAAuB,GAAG,mBAAmB;YAClD;QACF;AAEA,QAAA,IAAI,QAAQ,KAAK,YAAY,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,0BAA0B,EAAE;gBAC/E,IAAI,CAAC,oBAAoB,EAAE;YAC7B;AACK,iBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE;AACvC,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YAC5B;AACA,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,YAAA,IAAI,cAAc;AAChB,gBAAA,eAAe,EAAE,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC;AAChD,YAAA,IAAI,CAAC,uBAAuB,GAAG,mBAAmB;YAClD;QACF;QAEA,IAAI,YAAY,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YACrD,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;AACxD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3D,IAAI,uBAAuB,EAAE;gBAC3B,IAAI,CAAC,QAAQ,GAAG;AACd,oBAAA,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE;AAClE,oBAAA,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE;iBAClE;YACH;AACK,iBAAA,IAAI,WAAW,EAAE,MAAM,EAAE;gBAC5B,IAAI,CAAC,QAAQ,GAAG;oBACd,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7B,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,YAAY,EAAE;iBAChE;YACH;iBACK;gBACH,IAAI,CAAC,QAAQ,GAAG;oBACd,GAAG,IAAI,CAAC,QAAQ;AAChB,oBAAA,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE;iBAClE;YACH;QACF;aACK;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC5B;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,QAAA,IAAI,cAAc;AAChB,YAAA,eAAe,EAAE,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC;AAChD,QAAA,IAAI,CAAC,uBAAuB,GAAG,mBAAmB;IACpD;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,CAAE,IAAI,CAAC,IAAY,EAAE,MAAM;IACrC;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAClG;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACjG;AAEA,IAAA,kBAAkB,CAAC,OAAsB,EAAA;AACvC,QAAA,OAAO,OAAO,CAAC,EAAE,GAAG,CAAC,KAAK;AACxB,cAAE;cACA,0CAA0C;IAChD;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS;YAChC,OAAO,IAAI,CAAC,IAAI;AAClB,QAAA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS;AACzC,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;AAC1B,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS;YACtC,OAAO,IAAI,CAAC,UAAU;AACxB,QAAA,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,KAAK,SAAS;AAC/C,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU;AAChC,QAAA,OAAO,KAAK;IACd;IAEA,YAAY,CAAC,MAAc,EAAE,OAAsB,EAAA;QACjD,OAAO,OAAO,CAAC,EAAE;IACnB;AAEA,IAAA,aAAa,CAAC,SAAiB,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;YAC5E;QACF,IAAI,CAAC,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;IAClE;AAEQ,IAAA,WAAW,CAAC,OAAe,EAAA;QACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO;YACjG;QACF,IAAI,CAAC,QAAQ,GAAG;AACd,cAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;cACrD,EAAE;IACR;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvD;+GAtIW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBlB;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EApBS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAuBX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1B7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;sBACA;;;MCIU,iBAAiB,CAAA;AAlD9B,IAAA,WAAA,GAAA;QAyDU,IAAA,CAAA,QAAQ,GAAG,KAAK;AAwFzB,IAAA;AAtFC,IAAA,IAAI,IAAI,GAAA;QACN,MAAM,IAAI,GAAGA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI,CAAC;AAChD,QAAA,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE;IACnD;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,MAAM,QAAQ,GAAGA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,KAAK,CAAC;AACrD,QAAA,OAAO,QAAQ,IAAI,IAAI,CAAC,IAAI;IAC9B;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1C;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAQ,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,IAAI;IAC7C;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK;IAC7C;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOF,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;IACjC;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAOE,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;IACzD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,SAAS;IAC5C;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO;AACL,YAAA,cAAc,EAAE,SAAS;AACzB,YAAA,oBAAoB,EAAE,KAAK;AAC3B,YAAA,oBAAoB,EAAE,MAAM;AAC5B,YAAA,qBAAqB,EAAE,MAAM;AAC7B,YAAA,0BAA0B,EAAE,OAAO;AACnC,YAAA,sBAAsB,EAAE,MAAM;AAC9B,YAAA,oBAAoB,EAAE,aAAa;AACnC,YAAA,uBAAuB,EAAE,UAAU;SACV;IAC7B;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,QAAQ;YACf,WAAW,CAAC,IAAI,CAAC;IACrB;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAC3B;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;IAC7G;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAC3B;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,WAAW,EAAE;IACf;IAEQ,WAAW,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAC7C;QAEF,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;IAC5G;+GA9FW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9ClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MA5CS,YAAY,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAoB,iBAAiB,CAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FA+C1F,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlD7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC,CAAC;AACvG,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,SAAS;uBAAC,UAAU;;sBAEpB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MClDU,qBAAqB,CAAA;AAMhC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOF,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,WAAW,OAAO;IAC/C;+GAZW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,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,mCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXtB;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MATS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYrD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;;MCSU,iBAAiB,CAAA;AA5B9B,IAAA,WAAA,GAAA;AA6CE,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAa,KAAI;AAC/B,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/B,QAAA,CAAC;AAKF,IAAA;AAnBC,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,CAAC,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO;IACtC;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,MAAM,CAAE,IAAI,CAAC,IAAY,EAAE,KAAK,CAAC,IAAI,CAAC;IAC/C;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAOA,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,KAAK,CAAC;IAC/C;AAMA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;IAC9C;+GAvBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBlB;;;;;;;;;;;;;;;;;;;;;GAqBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAtBS,YAAY,+TAAmB,qBAAqB,CAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAyBnD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA5B7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC,CAAC;AAChE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;AC/BH,IAAI,KAAK,GAAQ,IAAI;AACrB,IAAIS,iBAAe,GAAG,KAAK;AAC3B,IAAIC,eAAa,GAAuC,IAAI;AAC5D,IAAI,WAAW,GAAuB,kBAAkB;AAExD,SAAS,oBAAoB,CAAC,GAAQ,EAAA;AACpC,IAAA,MAAM,QAAQ,GAAG,GAAG,EAAE,OAAO,IAAI,GAAG;AACpC,IAAA,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,cAAc,KAAK,UAAU;AAC3D,QAAA,OAAO,QAAuB;AAChC,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,cAAc,GAAA;AACrB,IAAA,IAAI;QACF,MAAM,WAAW,GAAG,UAAiB;AACrC,QAAA,OAAO,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC;IACjD;AACA,IAAA,MAAM;AACJ,QAAA,OAAO,IAAI;IACb;AACF;AAEA,SAAS,kBAAkB,GAAA;IACzB,OAAO,CAAC,YAAW;AACjB,QAAA,MAAM,WAAW,GAAG,cAAc,EAAE;AACpC,QAAA,IAAI,WAAW;AACb,YAAA,OAAO,WAAW;AAEpB,QAAA,MAAM,GAAG,GAAG,MAAM,OAAO,OAAO,CAAC;AACjC,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,sBAAsB,CAAC;QACtC;AACA,QAAA,MAAM;;QAEN;AACA,QAAA,OAAO,oBAAoB,CAAC,GAAG,CAAC;IAClC,CAAC,GAAG;AACN;AAEA,SAAS,UAAU,GAAA;IACjB,KAAK,GAAG,IAAI;IACZD,iBAAe,GAAG,KAAK;IACvBC,eAAa,GAAG,IAAI;AACtB;AAEM,SAAU,cAAc,CAAC,MAA0B,EAAA;IACvD,WAAW,GAAG,MAAM;AACpB,IAAA,UAAU,EAAE;AACd;AAEM,SAAU,WAAW,CAAC,MAAoB,EAAA;AAC9C,IAAA,cAAc,CAAC,MAAM,IAAI,kBAAkB,CAAC;AAC9C;SAEgB,YAAY,GAAA;IAC1B,cAAc,CAAC,IAAI,CAAC;AACtB;SAEgB,cAAc,GAAA;AAC5B,IAAA,OAAO,OAAO,WAAW,KAAK,UAAU;AAC1C;AAEO,eAAe,QAAQ,GAAA;AAC5B,IAAA,MAAM,WAAW,GAAG,cAAc,EAAE;IACpC,IAAI,WAAW,EAAE;QACf,KAAK,GAAG,WAAW;AACnB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,KAAK;AACP,QAAA,OAAO,KAAK;AACd,IAAA,IAAIA,eAAa;QACf,OAAO,MAAMA,eAAa;AAC5B,IAAA,IAAID,iBAAe;AACjB,QAAA,OAAO,IAAI;IAEb,MAAM,MAAM,GAAG,WAAW;IAC1B,IAAI,CAAC,MAAM,EAAE;QACXA,iBAAe,GAAG,IAAI;AACtB,QAAA,OAAO,IAAI;IACb;AAEA,IAAAC,eAAa,GAAG,CAAC,YAAW;AAC1B,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE;YAC7B,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,MAAM;YACzD,IAAI,UAAU,EAAE;gBACd,KAAK,GAAG,UAAU;AAClB,gBAAA,OAAO,KAAK;YACd;QACF;AACA,QAAA,MAAM;;QAEN;QAEAD,iBAAe,GAAG,IAAI;AACtB,QAAA,OAAO,IAAI;IACb,CAAC,GAAG;AAEJ,IAAA,IAAI;QACF,OAAO,MAAMC,eAAa;IAC5B;YACQ;QACNA,eAAa,GAAG,IAAI;IACtB;AACF;;AC/GM,SAAU,yBAAyB,CAAC,OAAe,EAAA;AACvD,IAAA,IAAI,CAAC,OAAO;AACV,QAAA,OAAO,EAAE;AAEX,IAAA,OAAO;AACJ,SAAA,OAAO,CAAC,IAAI,EAAE,GAAG;AACjB,SAAA,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;AACxB;;ACJO,MAAM,gBAAgB,GAAG;AAQhC,IAAIO,QAAM,GAAkB,IAAI;AAChC,IAAIC,iBAAe,GAAQ,IAAI;AAC/B,IAAI,gBAAgB,GAAG,KAAK;AAE5B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB;AAC1C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB;AACvC,MAAM,QAAQ,GAAG,GAAG;AACpB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAc;AAE1C,IAAIC,gBAAc,GAAG,CAAC;AAEtB,SAAS,qBAAqB,GAAA;IAC5B,IAAI,OAAO,CAAC,IAAI,IAAIA,gBAAc,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;QAC3D;IAEF,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;IAC/C,YAAY,CAAC,KAAK,EAAE;AACpB,IAAA,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE;AACnC,QAAA,IAAI;AACF,YAAA,MAAM,EAAE;QACV;AACA,QAAA,MAAM;;QAEN;IACF;AACF;AAEA,SAAS,aAAa,CAAC,OAAe,EAAE,WAAoB,EAAE,IAAY,EAAA;AACxE,IAAA,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,GAAG,GAAG,GAAG,CAAA,CAAA,EAAI,OAAO,EAAE,EAAE,IAAI,CAAC;AACxD,IAAA,IAAI,KAAK,CAAC,IAAI,GAAG,QAAQ,EAAE;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC1C,QAAA,IAAI,QAAQ;AACV,YAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC1B;AACF;AAEM,SAAU,cAAc,CAAC,UAAkB,EAAA;IAC/CF,QAAM,GAAG,UAAU;IACnBC,iBAAe,GAAG,IAAI;AAEtB,IAAAD,QAAM,CAAC,SAAS,GAAG,CAAC,KAAmB,KAAI;AACzC,QAAA,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM;YACT;AAEF,QAAA,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAClB,QAAA,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;AAC9B,QAAA,qBAAqB,EAAE;QAEvB,IAAI,KAAK,EAAE;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B;QACF;AAEA,QAAA,IAAI,OAAO;AACT,YAAA,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACpC,IAAA,CAAC;AAED,IAAAA,QAAM,CAAC,OAAO,GAAG,CAAC,KAAiB,KAAI;QACrC,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE;AAC1C,YAAA,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;AAC9B,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;QAC5D;QACA,OAAO,CAAC,KAAK,EAAE;AACf,QAAA,qBAAqB,EAAE;AACzB,IAAA,CAAC;AAED,IAAA,IAAI,gBAAgB;AAClB,QAAAA,QAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACrD;SAEgB,gBAAgB,GAAA;AAC9B,IAAA,IAAIA,QAAM;AACR,QAAAA,QAAM,CAAC,SAAS,IAAI;IACtBA,QAAM,GAAG,IAAI;IACbC,iBAAe,GAAG,IAAI;AACxB;AAEA,SAASE,cAAY,GAAA;AACnB,IAAA,IAAIH,QAAM;AACR,QAAA,OAAOA,QAAM;AAEf,IAAAC,iBAAe,GAAG,IAAI,KAAK,CAAC,6GAA6G,CAAC;AACxI,IAAAA,iBAAuB,CAAC,IAAI,GAAG,iBAAiB;AAChD,IAAAA,iBAAuB,CAAC,IAAI,GAAG,mBAAmB;AACpD,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,mBAAmB,CAAC,OAAgB,EAAA;AAClD,IAAA,gBAAgB,GAAG,CAAC,CAAC,OAAO;AAC5B,IAAA,IAAID,QAAM;AACR,QAAAA,QAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AACjE;AAEO,eAAe,mBAAmB,CAAC,OAAe,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,MAAoB,EAAA;AACjH,IAAA,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,OAAO,CAAC;AAC5D,IAAA,IAAI,CAAC,cAAc,EAAE,EAAE;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,0BAA0B,CAAC;AACjD,QAAA,KAAa,CAAC,IAAI,GAAG,eAAe;AACpC,QAAA,KAAa,CAAC,IAAI,GAAG,gBAAgB;AACvC,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,IAAIC,iBAAe;AACjB,QAAA,OAAO,OAAO,CAAC,MAAM,CAACA,iBAAe,CAAC;AAExC,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,WAAW,GAAG,GAAG,GAAG,GAAG,CAAA,CAAA,EAAI,iBAAiB,EAAE;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClC,IAAA,IAAI,MAAM;AACR,QAAA,OAAO,MAAM;AAEf,IAAA,MAAM,YAAY,GAAGE,cAAY,EAAE;AACnC,IAAA,IAAI,CAAC,YAAY;AACf,QAAA,OAAO,OAAO,CAAC,MAAM,CAACF,iBAAe,CAAC;AAExC,IAAA,IAAI,OAAO,CAAC,IAAI,IAAIC,gBAAc,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;AACpC,QAAA,KAAa,CAAC,IAAI,GAAG,YAAY;AACjC,QAAA,KAAa,CAAC,IAAI,GAAG,gBAAgB;AACrC,QAAA,KAAa,CAAC,IAAI,GAAG,IAAI;AACzB,QAAA,KAAa,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI;AACrC,QAAA,KAAa,CAAC,GAAG,GAAGA,gBAAc;AACpC,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9B;IAEA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,QAAA,IAAI,MAAM,EAAE,OAAO,EAAE;AACnB,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC;AAChC,YAAA,KAAa,CAAC,IAAI,GAAG,YAAY;YACnC,MAAM,CAAC,KAAK,CAAC;YACb;QACF;AAEA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,MAAK;AAC3C,YAAA,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAClB,YAAA,qBAAqB,EAAE;AACvB,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,yBAAyB,CAAC;AAChD,YAAA,KAAa,CAAC,IAAI,GAAG,eAAe;AACpC,YAAA,KAAa,CAAC,IAAI,GAAG,gBAAgB;YACvC,MAAM,CAAC,KAAK,CAAC;QACf,CAAC,EAAE,OAAO,CAAC;QAEX,MAAM,OAAO,GAAG,MAAK;AACnB,YAAA,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AACpB,gBAAA,qBAAqB,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC;AAChC,YAAA,KAAa,CAAC,IAAI,GAAG,YAAY;YACnC,MAAM,CAAC,KAAK,CAAC;AACf,QAAA,CAAC;AACD,QAAA,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAE1D,QAAA,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE;YACd,SAAS;AACT,YAAA,OAAO,EAAE,CAAC,IAAI,KAAI;AAChB,gBAAA,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC;YACf,CAAC;AACD,YAAA,MAAM,EAAE,CAAC,KAAK,KAAI;AAChB,gBAAA,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC;YACf,CAAC;AACF,SAAA,CAAC;QAEF,YAAY,CAAC,WAAW,CAAC;YACvB,EAAE;AACF,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,iBAAiB;YAC1B,WAAW;AACZ,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;AAEM,SAAU,aAAa,CAAC,OAAe,EAAE,WAAW,GAAG,IAAI,EAAE,IAAY,EAAA;IAC7E,aAAa,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC;AACtE;SAEgB,kBAAkB,GAAA;IAChC,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,IAAI;AACtB,QAAA,GAAG,EAAEA,gBAAc;KACpB;AACH;AAEM,SAAU,4BAA4B,CAAC,KAAa,EAAA;IACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;AACrC,QAAAA,gBAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACtC;SAEgB,iBAAiB,GAAA;AAC/B,IAAA,OAAO,OAAO,CAAC,IAAI,IAAIA,gBAAc;AACvC;SAEgB,sBAAsB,CAAC,OAAO,GAAG,IAAI,EAAE,MAAoB,EAAA;AACzE,IAAA,IAAI,OAAO,CAAC,IAAI,GAAGA,gBAAc;AAC/B,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE;IAE1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;QACrC,IAAI,OAAO,GAAG,KAAK;QACnB,IAAI,KAAK,GAAyC,IAAI;QAEtD,MAAM,OAAO,GAAG,MAAK;AACnB,YAAA,IAAI,OAAO;gBACT;YACF,OAAO,GAAG,IAAI;AACd,YAAA,IAAI,KAAK;gBACP,YAAY,CAAC,KAAK,CAAC;AACrB,YAAA,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,YAAA,OAAO,EAAE;AACX,QAAA,CAAC;AAED,QAAA,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAEzB,QAAA,KAAK,GAAG,UAAU,CAAC,MAAK;AACtB,YAAA,IAAI,OAAO;gBACT;YACF,OAAO,GAAG,IAAI;AACd,YAAA,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,gCAAgC,CAAC;AACvD,YAAA,KAAa,CAAC,IAAI,GAAG,mBAAmB;AACxC,YAAA,KAAa,CAAC,IAAI,GAAG,qBAAqB;YAC5C,MAAM,CAAC,KAAK,CAAC;QACf,CAAC,EAAE,OAAO,CAAC;AAEX,QAAA,cAAc,CAAC,MAAM,qBAAqB,EAAE,CAAC;QAE7C,IAAI,MAAM,EAAE;YACV,MAAM,OAAO,GAAG,MAAK;AACnB,gBAAA,IAAI,OAAO;oBACT;gBACF,OAAO,GAAG,IAAI;AACd,gBAAA,IAAI,KAAK;oBACP,YAAY,CAAC,KAAK,CAAC;AACrB,gBAAA,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC;AAChC,gBAAA,KAAa,CAAC,IAAI,GAAG,YAAY;gBACnC,MAAM,CAAC,KAAK,CAAC;AACf,YAAA,CAAC;YACD,IAAI,MAAM,CAAC,OAAO;AAChB,gBAAA,OAAO,EAAE;;AAET,gBAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC7D;AACF,IAAA,CAAC,CAAC;AACJ;AAUA,MAAM,mBAAmB,GAAG;AAC1B,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,UAAU,EAAE,CAAC;CACd;AACD,MAAM,sBAAsB,GAAG,CAAC;AAE1B,SAAU,4BAA4B,CAAC,OAA4C,EAAA;AACvF,IAAA,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI;AACzB,QAAA,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxE,IAAA,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI;AAC7B,QAAA,mBAAmB,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAChF,IAAA,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI;AAC3B,QAAA,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC5E,IAAA,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI;AAC5B,QAAA,mBAAmB,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAChF;SAEgB,4BAA4B,GAAA;AAC1C,IAAA,OAAO,EAAE,GAAG,mBAAmB,EAAE;AACnC;AAEO,eAAe,2BAA2B,CAC/C,OAAe,EACf,WAAW,GAAG,IAAI,EAClB,OAAA,GAA+B,EAAE,EAAA;AAEjC,IAAA,IAAI,CAAC,cAAc,EAAE,EAAE;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,0BAA0B,CAAC;AACjD,QAAA,KAAa,CAAC,IAAI,GAAG,eAAe;AACpC,QAAA,KAAa,CAAC,IAAI,GAAG,gBAAgB;AACvC,QAAA,MAAM,KAAK;IACb;IAEA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,mBAAmB,CAAC,OAAO;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,mBAAmB,CAAC,WAAW;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,mBAAmB,CAAC,SAAS;IACpE,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAC,UAAU;AAC1E,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa;UAC5C,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,sBAAsB,CAAC;AACzE,UAAE,mBAAmB,CAAC,UAAU;IAElC,IAAI,OAAO,GAAG,CAAC;AACf,IAAA,SAAS;AACP,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAC3B,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC;AAChC,YAAA,KAAa,CAAC,IAAI,GAAG,YAAY;AACnC,YAAA,MAAM,KAAK;QACb;AAEA,QAAA,IAAI;AACF,YAAA,OAAO,MAAM,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC;QACjF;QACA,OAAO,KAAU,EAAE;YACjB,IAAI,KAAK,EAAE,IAAI,KAAK,gBAAgB,IAAI,OAAO,IAAI,UAAU;AAC3D,gBAAA,MAAM,KAAK;YAEb,OAAO,IAAI,CAAC;AACZ,YAAA,MAAM,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAK,EAAE,CAAC,CAAC;YACzE,IAAI,SAAS,GAAG,CAAC;AACf,gBAAA,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC;QACrF;IACF;AACF;;MCjTa,sBAAsB,CAAA;AAXnC,IAAA,WAAA,GAAA;AAYmB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAMhD,IAAA,CAAA,SAAS,GAAG,IAAI;QAER,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,aAAa,GAAG,CAAC;QACjB,IAAA,CAAA,eAAe,GAAG,KAAK;AAuFhC,IAAA;AArFC,IAAA,IAAI,OAAO,GAAA;QACT,OAAOjB,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO,IAAK,IAAI,CAAC,IAAY,EAAE,MAAM,IAAK,IAAI,CAAC,IAAY,EAAE,GAAG,CAAC;IACxG;IAEA,eAAe,GAAA;AACb,QAAA,KAAK,IAAI,CAAC,UAAU,EAAE;IACxB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,OAAO;YACf;AACF,QAAA,KAAK,IAAI,CAAC,UAAU,EAAE;IACxB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC;IACzB;AAEQ,IAAA,MAAM,UAAU,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa;AAC1C,QAAA,IAAI,CAAC,MAAM;YACT;QAEF,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC;AACvD,QAAA,MAAM,OAAO,GAAG,EAAE,IAAI,CAAC,aAAa;QACpC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,CAAC,WAAW,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,eAAe;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QAEvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACnD,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,IAAI,CAAC,aAAa;YAClD;QAEF,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,CAAC,SAAS,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACxB;AACK,aAAA,IAAI,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO,EAAE;AACrC,YAAA,MAAM,CAAC,WAAW,GAAGA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,GAAG,IAAI,OAAO,CAAC;AAClE,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACxB;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEQ,MAAM,kBAAkB,CAAC,OAAe,EAAA;AAC9C,QAAA,IAAI;AACF,YAAA,OAAO,MAAM,2BAA2B,CAAC,OAAO,EAAE,IAAI,EAAE;AACtD,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,UAAU,EAAE,CAAC;AACd,aAAA,CAAC;QACJ;QACA,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI;YACvC,MAAM,mBAAmB,GAAG,IAAI,KAAK,mBAAmB,IAAI,KAAK,EAAE,kBAAkB;YACrF,MAAM,eAAe,GAAG,IAAI,KAAK,gBAAgB,IAAI,IAAI,KAAK,gBAAgB;AAC9E,YAAA,IAAI,CAAC,mBAAmB,IAAI,CAAC,eAAe;AAC1C,gBAAA,OAAO,IAAI;QACf;AAEA,QAAA,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE;AAC9B,QAAA,IAAI,CAAC,KAAK;AACR,YAAA,OAAO,IAAI;AAEb,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE;AACzC,gBAAA,YAAY,EAAG,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,IAAI;AAClD,gBAAA,WAAW,EAAE,IAAI;AAClB,aAAA,CAAC;AACF,YAAA,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAClC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM;AACJ,YAAA,OAAO,IAAI;QACb;IACF;+GAjGW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,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,oCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPvB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EALS,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAQX,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAIE,SAAS;uBAAC,SAAS;;sBAEnB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MCDd,uBAAuB,CAAA;AAfpC,IAAA,WAAA,GAAA;AAgBmB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAMhD,IAAA,CAAA,OAAO,GAAG,IAAI;QAEN,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,aAAa,GAAG,CAAC;QACjB,IAAA,CAAA,eAAe,GAAG,KAAK;AA2FhC,IAAA;AAzFC,IAAA,IAAI,OAAO,GAAA;QACT,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO,IAAK,IAAI,CAAC,IAAY,EAAE,MAAM,IAAK,IAAI,CAAC,IAAY,EAAE,GAAG,CAAC;IACxG;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,MAAM,CAAE,IAAI,CAAC,IAAY,EAAE,MAAM,IAAI,EAAE,CAAC,KAAK,IAAI;IAC1D;IAEA,eAAe,GAAA;AACb,QAAA,KAAK,IAAI,CAAC,UAAU,EAAE;IACxB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,OAAO;YACf;AACF,QAAA,KAAK,IAAI,CAAC,UAAU,EAAE;IACxB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC;IACzB;AAEQ,IAAA,MAAM,UAAU,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa;AAC1C,QAAA,IAAI,CAAC,MAAM;YACT;QAEF,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC;AACvD,QAAA,MAAM,OAAO,GAAG,EAAE,IAAI,CAAC,aAAa;QACpC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,CAAC,WAAW,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,eAAe;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AAErB,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;QACrE,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,IAAI,CAAC,aAAa;YAClD;QAEF,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,CAAC,SAAS,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACtB;AACK,aAAA,IAAI,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO,EAAE;AACrC,YAAA,MAAM,CAAC,WAAW,GAAGA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,GAAG,IAAI,OAAO,CAAC;AAClE,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACtB;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEQ,IAAA,MAAM,kBAAkB,CAAC,OAAe,EAAE,WAAoB,EAAA;AACpE,QAAA,IAAI;AACF,YAAA,OAAO,MAAM,2BAA2B,CAAC,OAAO,EAAE,WAAW,EAAE;AAC7D,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,UAAU,EAAE,CAAC;AACd,aAAA,CAAC;QACJ;QACA,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI;YACvC,MAAM,mBAAmB,GAAG,IAAI,KAAK,mBAAmB,IAAI,KAAK,EAAE,kBAAkB;YACrF,MAAM,eAAe,GAAG,IAAI,KAAK,gBAAgB,IAAI,IAAI,KAAK,gBAAgB;AAC9E,YAAA,IAAI,CAAC,mBAAmB,IAAI,CAAC,eAAe;AAC1C,gBAAA,OAAO,IAAI;QACf;AAEA,QAAA,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE;AAC9B,QAAA,IAAI,CAAC,KAAK;AACR,YAAA,OAAO,IAAI;AAEb,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE;AACzC,gBAAA,YAAY,EAAG,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,IAAI;gBAClD,WAAW;AACZ,aAAA,CAAC;AACF,YAAA,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC;AACzC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM;AACJ,YAAA,OAAO,IAAI;QACb;IACF;+GArGW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXxB;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EATS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAfnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAIE,SAAS;uBAAC,SAAS;;sBAEnB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;AClC3B,MAAM,oBAAoB,GAAkB,MAAM,OAAO,SAAS,CAAC;AACnE,MAAM,kBAAkB,GAAG,gCAAgC;AAE3D,IAAI,aAAa,GAAQ,IAAI;AAC7B,IAAI,eAAe,GAAG,KAAK;AAC3B,IAAI,WAAW,GAAkB,IAAI;AACrC,IAAI,aAAa,GAAyC,IAAI;AAC9D,IAAI,aAAa,GAAyB,oBAAoB;AAyB9D,SAAS,cAAc,CAAC,MAAyB,EAAA;IAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,IAAI,QAAQ,CAAC;AAC/D,IAAA,MAAM,UAAU,GAAG,MAAM,EAAE,SAAS,EAAE,UAAU;AAChD,IAAA,OAAO,CAAA,EAAG,aAAa,CAAA,YAAA,EAAe,UAAU,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG,EAAE;AAC1E;AAEA,SAAS,sBAAsB,CAAC,GAAQ,EAAA;AACtC,IAAA,IAAI,CAAC,GAAG;AACN,QAAA,OAAO,GAAG;AAEZ,IAAA,MAAM,SAAS,GAAG,GAAG,EAAE,OAAO,IAAI,GAAG;IACrC,IAAI,SAAS,KAAK,OAAO,SAAS,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU,CAAC;AAC9I,QAAA,OAAO,SAAS;IAElB,IAAI,SAAS,EAAE,UAAU,KAAK,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,EAAE;AACpI,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU;QAChC,OAAO;AACL,YAAA,GAAG,SAAS;YACZ,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B,YAAA,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;AAClD,YAAA,UAAU,EAAE,CAAC,IAAS,KAAI;AACxB,gBAAA,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;AAC5C,oBAAA,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;AACnC,gBAAA,OAAO,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS;YAC1D,CAAC;SACe;IACpB;IAEA,IAAI,GAAG,EAAE,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU;QAC1D,OAAO,GAAG,CAAC,OAAwB;AAErC,IAAA,OAAO,SAA0B;AACnC;AAEA,SAAS,eAAe,CAAC,MAAW,EAAA;AAClC,IAAA,IAAI,CAAC,MAAM;QACT;AAEF,IAAA,IAAI;AACF,QAAA,MAAM,kBAAkB,GAAG,MAAM,EAAE,UAAU;AAC7C,QAAA,MAAM,CAAC,UAAU,GAAG,CAAC,IAAS,KAAI;AAChC,YAAA,MAAM,MAAM,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE;YAChE,IAAI,OAAO,kBAAkB,KAAK,UAAU;gBAC1C,OAAO,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;YAChD,IAAI,MAAM,EAAE,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC,UAAU,KAAK,UAAU;gBAC1E,OAAO,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;AAC7C,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC;IACH;AACA,IAAA,MAAM;;IAEN;AACF;AAEA,SAAS,iBAAiB,CAAC,QAAa,EAAE,MAA0B,EAAA;AAClE,IAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;QACtB;AAEF,IAAA,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC;IAClC,IAAI,WAAW,KAAK,GAAG;QACrB;AAEF,IAAA,IAAI;AACF,QAAA,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,UAAU;AAC3C,YAAA,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;AACxB,aAAA,IAAI,QAAQ,CAAC,UAAU,EAAE,UAAU;AACtC,YAAA,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;QACxC,WAAW,GAAG,GAAG;IACnB;AACA,IAAA,MAAM;;IAEN;AACF;AAEA,SAAS,gBAAgB,GAAA;AACvB,IAAA,IAAI;QACF,MAAM,WAAW,GAAG,UAAiB;AACrC,QAAA,OAAO,sBAAsB,CAAC,WAAW,GAAG,kBAAkB,CAAC,IAAI,WAAW,EAAE,OAAO,CAAC;IAC1F;AACA,IAAA,MAAM;AACJ,QAAA,OAAO,IAAI;IACb;AACF;AAEA,SAAS,gBAAgB,CAAC,QAAa,EAAA;AACrC,IAAA,IAAI;QACF;AAAE,QAAA,UAAkB,CAAC,kBAAkB,CAAC,GAAG,QAAQ;IACrD;AACA,IAAA,MAAM;;IAEN;AACF;AAEA,SAAS,kBAAkB,GAAA;IACzB,aAAa,GAAG,IAAI;IACpB,eAAe,GAAG,KAAK;IACvB,WAAW,GAAG,IAAI;IAClB,aAAa,GAAG,IAAI;AACpB,IAAA,IAAI;AACF,QAAA,OAAQ,UAAkB,CAAC,kBAAkB,CAAC;IAChD;AACA,IAAA,MAAM;;IAEN;AACF;AAEM,SAAU,gBAAgB,CAAC,MAA4B,EAAA;IAC3D,aAAa,GAAG,MAAM;AACtB,IAAA,kBAAkB,EAAE;AACtB;AAEM,SAAU,aAAa,CAAC,MAAsB,EAAA;AAClD,IAAA,gBAAgB,CAAC,MAAM,IAAI,oBAAoB,CAAC;AAClD;SAEgB,cAAc,GAAA;IAC5B,gBAAgB,CAAC,IAAI,CAAC;AACxB;SAEgB,gBAAgB,GAAA;AAC9B,IAAA,OAAO,OAAO,aAAa,KAAK,UAAU;AAC5C;AAEO,eAAe,UAAU,CAAC,UAA8B,EAAA;IAC7D,IAAI,aAAa,EAAE;AACjB,QAAA,iBAAiB,CAAC,aAAa,EAAE,UAAU,CAAC;AAC5C,QAAA,OAAO,aAAa;IACtB;AAEA,IAAA,MAAM,aAAa,GAAG,gBAAgB,EAAE;IACxC,IAAI,aAAa,EAAE;QACjB,eAAe,CAAC,aAAa,CAAC;QAC9B,aAAa,GAAG,aAAa;QAC7B,gBAAgB,CAAC,aAAa,CAAC;AAC/B,QAAA,iBAAiB,CAAC,aAAa,EAAE,UAAU,CAAC;AAC5C,QAAA,OAAO,aAAa;IACtB;IAEA,IAAI,aAAa,EAAE;AACjB,QAAA,MAAM,QAAQ,GAAG,MAAM,aAAa;AACpC,QAAA,IAAI,QAAQ;AACV,YAAA,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC;AACzC,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,IAAI,eAAe;AACjB,QAAA,OAAO,IAAI;IAEb,MAAM,MAAM,GAAG,aAAa;IAC5B,IAAI,CAAC,MAAM,EAAE;QACX,eAAe,GAAG,IAAI;AACtB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,aAAa,GAAG,CAAC,YAAW;AAC1B,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE;AAC1B,YAAA,MAAM,QAAQ,GAAG,sBAAsB,CAAC,GAAG,CAAC;YAC5C,IAAI,CAAC,QAAQ,EAAE;gBACb,eAAe,GAAG,IAAI;AACtB,gBAAA,OAAO,IAAI;YACb;YACA,eAAe,CAAC,QAAQ,CAAC;YACzB,aAAa,GAAG,QAAQ;YACxB,gBAAgB,CAAC,aAAa,CAAC;AAC/B,YAAA,OAAO,aAAa;QACtB;AACA,QAAA,MAAM;YACJ,eAAe,GAAG,IAAI;AACtB,YAAA,OAAO,IAAI;QACb;IACF,CAAC,GAAG;AAEJ,IAAA,IAAI;AACF,QAAA,MAAM,QAAQ,GAAG,MAAM,aAAa;AACpC,QAAA,IAAI,QAAQ;AACV,YAAA,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC;AACzC,QAAA,OAAO,QAAQ;IACjB;YACQ;QACN,aAAa,GAAG,IAAI;IACtB;AACF;;ACpNA,IAAI,MAAM,GAAkB,IAAI;AAChC,IAAI,eAAe,GAAQ,IAAI;AAO/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB;AACzC,IAAI,cAAc,GAAG,CAAC;AACtB,IAAI,WAAW,GAAG,KAAK;AAEjB,SAAU,2BAA2B,CAAC,OAAgB,EAAA;AAC1D,IAAA,WAAW,GAAG,CAAC,CAAC,OAAO;AACzB;AAEM,SAAU,8BAA8B,CAAC,KAAa,EAAA;IAC1D,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;AACrC,QAAA,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACtC;SAEgB,oBAAoB,GAAA;IAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE;AACvD;AAEO,MAAM,wBAAwB,GAAG;AACjC,MAAM,qBAAqB,GAAG;AAE/B,SAAU,gBAAgB,CAAC,UAAkB,EAAA;IACjD,MAAM,GAAG,UAAU;IACnB,eAAe,GAAG,IAAI;IACtB,MAAM,OAAO,GAAG,UAAU;AAE1B,IAAA,MAAM,CAAC,SAAS,GAAG,CAAC,KAAmB,KAAI;QACzC,IAAI,MAAM,KAAK,OAAO;YACpB;AAEF,QAAA,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM;YACT;AAEF,QAAA,IAAI,EAAE,KAAK,KAAK,IAAI,KAAK;YACvB,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;;AAElD,YAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1B,IAAA,CAAC;AAED,IAAA,MAAM,CAAC,OAAO,GAAG,CAAC,KAAiB,KAAI;QACrC,IAAI,MAAM,KAAK,OAAO;YACpB;AACF,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,CAAC,KAAK,GAAG,+DAA+D,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC;YACzG;QACF;AACA,QAAA,IAAI;AACF,YAAA,IAAI,WAAW;gBACb,OAAO,CAAC,KAAK,CAAC,wDAAwD,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC;;AAEhG,gBAAA,OAAO,CAAC,KAAK,GAAG,wDAAwD,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC;QACtG;AACA,QAAA,MAAM;;QAEN;QACA,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE;AACvC,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,EAAE;AAChB,IAAA,CAAC;AAEC,IAAA,MAAc,CAAC,cAAc,GAAG,CAAC,KAAmB,KAAI;QACxD,IAAI,MAAM,KAAK,OAAO;YACpB;AACF,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE;YACrB,OAAO,CAAC,KAAK,GAAG,sEAAsE,EAAE,KAAK,CAAC;YAC9F;QACF;QACA,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE;YACvC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,EAAE;AAChB,IAAA,CAAC;AACH;SAEgB,kBAAkB,GAAA;IAChC,IAAI,MAAM,EAAE;AACV,QAAA,IAAI;YACF,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE;gBACvC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,EAAE;AACd,YAAA,MAAM,CAAC,SAAS,IAAI;QACtB;AACA,QAAA,MAAM;;QAEN;IACF;IACA,MAAM,GAAG,IAAI;IACb,eAAe,GAAG,IAAI;AACxB;AAEA,SAAS,YAAY,GAAA;AACnB,IAAA,IAAI,MAAM;AACR,QAAA,OAAO,MAAM;AAEf,IAAA,eAAe,GAAG,IAAI,KAAK,CAAC,iHAAiH,CAAC;AAC5I,IAAA,eAAuB,CAAC,IAAI,GAAG,iBAAiB;AAChD,IAAA,eAAuB,CAAC,IAAI,GAAG,mBAAmB;AACpD,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,UAAU,CAAI,MAAiC,EAAE,OAAY,EAAE,OAAO,GAAG,IAAI,EAAA;AACpF,IAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACvB,QAAA,MAAM,KAAK,GAAQ,IAAI,KAAK,CAAC,4BAA4B,CAAC;AAC1D,QAAA,KAAK,CAAC,IAAI,GAAG,iBAAiB;AAC9B,QAAA,KAAK,CAAC,IAAI,GAAG,qBAAqB;AAClC,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,IAAI,eAAe;AACjB,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;AAExC,IAAA,MAAM,YAAY,GAAG,YAAY,EAAE;AACnC,IAAA,IAAI,CAAC,YAAY;AACf,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;AAExC,IAAA,IAAI,MAAM,CAAC,IAAI,IAAI,cAAc,EAAE;AACjC,QAAA,MAAM,KAAK,GAAQ,IAAI,KAAK,CAAC,aAAa,CAAC;AAC3C,QAAA,KAAK,CAAC,IAAI,GAAG,YAAY;AACzB,QAAA,KAAK,CAAC,IAAI,GAAG,wBAAwB;AACrC,QAAA,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI;AAC5B,QAAA,KAAK,CAAC,GAAG,GAAG,cAAc;AAC1B,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9B;IAEA,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,KAAI;AACxC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,KAAK;QACnB,IAAI,SAAS,GAAyC,IAAI;QAE1D,MAAM,OAAO,GAAG,MAAK;AACnB,YAAA,IAAI,OAAO;gBACT;YACF,OAAO,GAAG,IAAI;YACd,IAAI,SAAS,IAAI,IAAI;gBACnB,YAAY,CAAC,SAAS,CAAC;AACzB,YAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACnB,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE;AACb,YAAA,OAAO,EAAE,CAAC,KAAU,KAAI;AACtB,gBAAA,OAAO,EAAE;gBACT,OAAO,CAAC,KAAK,CAAC;YAChB,CAAC;AACD,YAAA,MAAM,EAAE,CAAC,KAAU,KAAI;AACrB,gBAAA,OAAO,EAAE;gBACT,MAAM,CAAC,KAAK,CAAC;YACf,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,IAAI;YACF,YAAY,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACnD;QACA,OAAO,KAAK,EAAE;AACZ,YAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC;YACb;QACF;AAEA,QAAA,SAAS,GAAG,UAAU,CAAC,MAAK;AAC1B,YAAA,MAAM,KAAK,GAAQ,IAAI,KAAK,CAAC,uBAAuB,CAAC;AACrD,YAAA,KAAK,CAAC,IAAI,GAAG,eAAe;AAC5B,YAAA,KAAK,CAAC,IAAI,GAAG,gBAAgB;YAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9B,YAAA,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;QACxB,CAAC,EAAE,OAAO,CAAC;AACb,IAAA,CAAC,CAAC;AACJ;AAEO,eAAe,iBAAiB,CAAC,IAAY,EAAE,KAAY,EAAE,OAAO,GAAG,IAAI,EAAA;AAChF,IAAA,OAAO,MAAM,UAAU,CAAU,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC;AACxE;AAEO,eAAe,mBAAmB,CAAC,IAAY,EAAE,KAAY,EAAE,OAAO,GAAG,IAAI,EAAA;AAClF,IAAA,OAAO,MAAM,UAAU,CAAgB,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC;AAChF;SAEgB,eAAe,GAAA;IAC7B,IAAI,MAAM,EAAE;AACV,QAAA,IAAI;YACF,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE;gBACvC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,EAAE;YACd,MAAM,CAAC,SAAS,EAAE;QACpB;gBACQ;YACN,MAAM,GAAG,IAAI;QACf;IACF;AACF;;AC/KA,IAAI,qBAAqB,GAAG,CAAC;AAC7B,IAAI,kBAAkB,GAAkB,OAAO,CAAC,OAAO,EAAE;AAKzD,SAAS,oBAAoB,CAAI,GAAqB,EAAA;IACpD,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AAC9C,IAAA,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,IAAA,OAAO,IAAI;AACb;MAkJa,yBAAyB,CAAA;AAhJtC,IAAA,WAAA,GAAA;AAiJmB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAShD,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,IAAI,GAAG,CAAC;QACR,IAAA,CAAA,SAAS,GAAG,EAAE;QACd,IAAA,CAAA,KAAK,GAAG,EAAE;QAEF,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,WAAW,GAAG,CAAC;QACf,IAAA,CAAA,SAAS,GAAkB,IAAI;QAC/B,IAAA,CAAA,wBAAwB,GAAgC,IAAI;AAwhBrE,IAAA;AAthBC,IAAA,IAAI,WAAW,GAAA;QACb,OAAO;YACL,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;AACrC,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACtB;IACH;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI;AACtC,aAAA,OAAO,CAAC,aAAa,EAAE,QAAQ;AAC/B,aAAA,OAAO,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;IACpD;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS;AAC9C,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM;AAChC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IACtC;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,KAAK;IAC9C;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,KAAK;IAClD;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,KAAK;IAClD;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,KAAK,KAAK;IACpD;AAEA,IAAA,IAAI,4BAA4B,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,oBAAoB,KAAK,KAAK;IACxD;AAEA,IAAA,IAAI,0BAA0B,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,KAAK,KAAK;IACtD;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,KAAK,KAAK;IACpD;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,KAAK,SAAS;AACpD,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY;AACtC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK;IAC7C;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5D;AAEA,IAAA,IAAI,wBAAwB,GAAA;QAC1B,OAAO,kBAAkB,CACvB,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,EACzG,SAAS,EACT,IAAI,CAAC,gBAAgB,CACtB;IACH;AAEA,IAAA,IAAY,gBAAgB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,KAAK,MAAM;AAC7E,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,KAAK,MAAM,GAAG,IAAI,GAAG,GAAG;QAC3D,OAAO,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,GAAG;IAC/D;AAEA,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;IACnF;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;IAClF;AAEA,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;IACnF;AAEA,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;IACvF;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,KAAK;IAC5C;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS;AAC/C,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;AACjC,QAAA,OAAQ,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,IAAI;IAC7C;AAEA,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,KAAK,IAAI;IACpD;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,CAAA,MAAA,EAAS,IAAI,CAAC,IAAI,GAAG;IAC9B;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,CAAA,MAAA,EAAS,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG;IAC3C;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;IACjD;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB;QACF,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;IACjD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AACzD,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;IACvC;AAGA,IAAA,mBAAmB,CAAC,KAAoB,EAAA;QACtC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS;YAC1C,IAAI,CAAC,UAAU,EAAE;IACrB;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,IAAI;IAChD;AAEA,IAAA,OAAO,CAAC,UAAmB,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,gBAAgB,EAAE;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACxC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AACzD,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AACtC,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC,EAAE,IAAI,CAAC;QACV;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB;AACF,QAAA,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,GAAG,EAAE,CAAA,IAAA,CAAM,CAAC;IAChE;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB;AACF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,OAAO,QAAQ,KAAK,WAAW;YACjC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;QACzC,cAAc,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,OAAO,QAAQ,KAAK,WAAW;YACjC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;AACnC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACzE,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,IAAI;YAC3C;QACF,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAClD;AAEQ,IAAA,MAAM,aAAa,GAAA;QACzB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YACrD;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC/B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;YACf,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;QAEA,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;YACnB,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,WAAW;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;AACpC,kBAAE;AACE,oBAAA,WAAW,EAAE,KAAK;AAClB,oBAAA,aAAa,EAAE,QAAQ;AACvB,oBAAA,sBAAsB,EAAE,IAAI;AAC5B,oBAAA,SAAS,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;AACjC;AACH,kBAAE;AACE,oBAAA,WAAW,EAAE,KAAK;AAClB,oBAAA,aAAa,EAAE,OAAO;AACtB,oBAAA,sBAAsB,EAAE,IAAI;AAC7B,iBAAA,CAAC;AAEN,YAAA,IAAI,CAAC,OAAO;AACV,gBAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;AAEvD,YAAA,MAAM,KAAK,GAAiB,IAAI,CAAC,cAAc,GAAG,MAAM,GAAG,OAAO;YAClE,IAAI,YAAY,GAAG,MAAM;YACzB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAC1D,gBAAA,IAAI;AACF,oBAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;oBACtE,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;wBAC9C;oBACF,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AAC9B,wBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;wBACvB;oBACF;oBACA,IAAI,GAAG,CAAC,MAAM;AACZ,wBAAA,YAAY,GAAG,GAAG,CAAC,MAAM;gBAC7B;gBACA,OAAO,KAAU,EAAE;AACjB,oBAAA,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY;wBAC9B;AACF,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;oBACvB;gBACF;YACF;AAEA,YAAA,MAAM,QAAQ,GAAG,CAAA,2BAAA,EAA8B,EAAE,qBAAqB,EAAE;YACxE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC;AAC3D,YAAA,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,MAAM,IAAI,CAAC,WAAW,CAChE,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAC7D,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;kBACzB,IAAI,CAAC;AACP,kBAAE,IAAI,CAAC,yBAAyB,CACnC,CAAC;YACF,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;gBAC9C;AAEF,YAAA,MAAM,GAAG,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EAAE,GAAG;AACnE,YAAA,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC;AAC3C,YAAA,IAAI,CAAC,OAAO;AACV,gBAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AAEhE,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO;AACxB,YAAA,IAAI,CAAC,wBAAwB,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,IAAI,GAAG,QAAQ,EAAE,aAAa,IAAI,IAAI;YACrG,IAAI,CAAC,IAAI,CAAC,SAAS;AACjB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACxB,IAAI,CAAC,YAAY,EAAE;QACrB;QACA,OAAO,KAAK,EAAE;YACZ,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;gBAC9C;YACF,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAC1D,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE;gBACnB,IAAI,CAAC,YAAY,EAAE;gBACnB;YACF;;AAEA,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;YACpD,IAAI,OAAO,aAAa,KAAK,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE;AAC1E,gBAAA,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAC/E,gBAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,oBAAA,IAAI,CAAC,SAAS,GAAG,EAAE;oBACnB;gBACF;YACF;AACA,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,mCAAmC;YACzF,IAAI,CAAC,YAAY,EAAE;QACrB;gBACQ;AACN,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB;QACF;IACF;IAEQ,YAAY,GAAA;QAClB,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;QAC/D,IAAI,IAAI,CAAC,SAAS;YAChB,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;;YAE7D,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,CAAC;QACnD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;QAC7D,IAAI,IAAI,CAAC,SAAS;YAChB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;IAC/D;AAEQ,IAAA,uBAAuB,CAAC,OAAmC,EAAA;AACjE,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,yBAAyB,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC;YAC1G;AACF,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC;QAC1C;QACA,MAAM,EAAC;IACT;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,YAAA,MAAM,CAAC,UAAU,CAAC,MAAK;gBACrB,IAAI,IAAI,CAAC,SAAS;oBAChB;gBACF,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC,EAAE,CAAC,CAAC;YACL;QACF;QACA,cAAc,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC3C;IAEQ,MAAM,oBAAoB,CAAC,MAAc,EAAE,KAAmB,EAAE,OAAY,EAAE,KAAa,EAAA;AACjG,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC;YACnF,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;AAC9C,gBAAA,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC;AACjD,YAAA,IAAI,QAAQ;AACV,gBAAA,OAAO,IAAI;QACf;QACA,OAAO,KAAU,EAAE;AACjB,YAAA,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY;AAC9B,gBAAA,MAAM,KAAK;QACf;QAEA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;QACrD,MAAM,UAAU,GAAG,OAAc;AACjC,QAAA,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE;YAC1C,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC;YACxG,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;AAC9C,gBAAA,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC;AACjD,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,QAAQ,GAAG,CAAA,iCAAA,EAAoC,EAAE,qBAAqB,EAAE;QAC9E,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC;QACnH,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;AAC9C,YAAA,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC;AACjD,QAAA,OAAO,IAAI;IACb;IAEQ,MAAM,gBAAgB,CAAC,MAAc,EAAE,KAAmB,EAAE,OAAY,EAAE,KAAa,EAAA;QAC7F,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AAClD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;gBAChB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;AACtC,YAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;YAC9D,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;AAC9C,gBAAA,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC;YACjD,OAAO,MAAM,KAAK,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;QACrF;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;YAC9D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACrC;QACA,OAAO,KAAU,EAAE;AACjB,YAAA,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY;AAC9B,gBAAA,MAAM,KAAK;QACf;AAEA,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;AACnE,QAAA,IAAI,CAAC,MAAM;YACT,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;AACtC,QAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;QAC9D,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;AAC9C,YAAA,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC;AACjD,QAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC;AAEQ,IAAA,MAAM,mBAAmB,CAAC,MAAc,EAAE,KAAmB,EAAE,KAAa,EAAA;AAClF,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC;YACnF,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW;AAC9C,gBAAA,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC;AACjD,YAAA,IAAI,MAAM;AACR,gBAAA,OAAO,MAAM;QACjB;QACA,OAAO,KAAU,EAAE;AACjB,YAAA,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY;AAC9B,gBAAA,MAAM,KAAK;QACf;AAEA,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;IAC5C;IAEQ,YAAY,CAAC,MAAc,EAAE,KAAmB,EAAA;AACtD,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;AAC3B,YAAA,OAAO,MAAM;AACf,QAAA,MAAM,UAAU,GAAG,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;AACxD,QAAA,OAAO,CAAA,oBAAA,EAAuB,UAAU,CAAA,OAAA,EAAU,MAAM,EAAE;IAC5D;AAEQ,IAAA,qBAAqB,CAAC,MAAc,EAAA;QAC1C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC3C,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE;YAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAChC;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;YAC7C,OAAO,KAAK,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;QACxC;AACA,QAAA,OAAO,EAAE;IACX;AAEQ,IAAA,eAAe,CAAC,OAAe,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE;QAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAChC,YAAA,OAAO,KAAK;AACd,QAAA,IAAI,iJAAiJ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9J,YAAA,OAAO,KAAK;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC3B;AAEQ,IAAA,4BAA4B,CAAC,MAAc,EAAA;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAC5C,KAAK,CAAC,GAAG,EAAE;AACb,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE;YAC5C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAClC,KAAK,CAAC,GAAG,EAAE;gBACX;YACF;AACA,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBAC5B;YACF,KAAK,CAAC,GAAG,EAAE;QACb;AACA,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;IAC/E;AAEQ,IAAA,sBAAsB,CAAC,MAAc,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,OAAO;AAChD,YAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE;YAC9B,IAAI,CAAC,IAAI,EAAE;gBACT,KAAK,CAAC,GAAG,EAAE;gBACX;YACF;YAEA,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACjD,mBAAA,8CAA8C,CAAC,IAAI,CAAC,IAAI;AACxD,mBAAA,SAAS,CAAC,IAAI,CAAC,IAAI;AACnB,mBAAA,oFAAoF,CAAC,IAAI,CAAC,IAAI,CAAC;AACpG,YAAA,IAAI,CAAC,aAAa;gBAChB;YAEF,KAAK,CAAC,GAAG,EAAE;QACb;AACA,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB;IAEQ,WAAW,CAAI,GAAqB,EAAE,SAAiB,EAAA;QAC7D,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,KAAI;YACxC,IAAI,OAAO,GAAG,KAAK;AACnB,YAAA,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK;AAC9B,kBAAE,MAAM,CAAC,UAAU,CAAC,MAAK;AACrB,oBAAA,IAAI,OAAO;wBACT;oBACF,OAAO,GAAG,IAAI;AACd,oBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBAC1C,CAAC,EAAE,SAAS;kBACZ,IAAI;AAER,YAAA,GAAG;AACA,iBAAA,IAAI,CAAC,CAAC,KAAK,KAAI;AACd,gBAAA,IAAI,OAAO;oBACT;gBACF,OAAO,GAAG,IAAI;AACd,gBAAA,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AAChD,oBAAA,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC5B,OAAO,CAAC,KAAK,CAAC;AAChB,YAAA,CAAC;AACA,iBAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACf,gBAAA,IAAI,OAAO;oBACT;gBACF,OAAO,GAAG,IAAI;AACd,gBAAA,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AAChD,oBAAA,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC;AACf,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACJ;+GA9iBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,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,uCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5I1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA1IS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FA6IX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAhJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyIT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAIE,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,WAAW;;sBAErB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBAgJA,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MCjQ/B,sBAAsB,CAAA;AAzDnC,IAAA,WAAA,GAAA;QA8DE,IAAA,CAAA,QAAQ,GAAuB,EAAE;AAoBjC,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAa,KAAI;YAC/B,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;AACnD,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,KAAa,KAAI;AACpC,YAAA,OAAO,KAAK;AACd,QAAA,CAAC;AAiBF,IAAA;AAzCC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOF,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AACpE,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;AAC1B,gBAAA,OAAO,OAAO;YAEhB,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC;YAC1D,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS,GAAG,gCAAgC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK;gBAClF,SAAS;aACV;AACH,QAAA,CAAC,CAAC;IACJ;AAUA,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;IACnD;IAEA,WAAW,CAAC,YAAoB,EAAE,UAAkB,EAAA;QAClD,OAAO,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE;IAC5D;AAEA,IAAA,gBAAgB,CAAC,IAA2B,EAAA;AAC1C,QAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC;IACnC;AAEA,IAAA,cAAc,CAAC,IAA2B,EAAA;AACxC,QAAA,OAAOE,WAAS,CAAE,IAAY,EAAE,OAAO,CAAC;IAC1C;+GA/CW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,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,mCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjDvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAlDC,YAAY,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACK,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACvB,mBAAmB,CAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAmD3B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAzDlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;AACZ,wBAAA,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACzC,wBAAA,UAAU,CAAC,MAAM,mBAAmB,CAAC;AACtC,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCrEU,sBAAsB,CAAA;AAGjC,IAAA,IAAI,EAAE,GAAA;QACJ,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,EAAE,CAAC;IAC1C;+GALW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,uHAHvB,2DAA2D,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAG1D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,2DAA2D;oBACrE,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;ACLrB,SAAU,yBAAyB,CACvC,IAA2B,EAC3B,OAA8B,EAAA;IAE9B,IAAI,OAAO,EAAE,qBAAqB;AAChC,QAAA,OAAO,KAAK;AAEd,IAAA,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAC/C,IAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,QAAQ;AAC5C,QAAA,OAAO,IAAI;IACb,IAAI,QAAQ,KAAK,aAAa;AAC5B,QAAA,OAAO,aAAa;IACtB,IAAI,QAAQ,KAAK,SAAS;AACxB,QAAA,OAAO,SAAS;AAClB,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,cAAc,CAAC,IAA2B,EAAA;IACxD,OAAO,MAAM,CAAE,IAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,qBAAqB,CAAE,IAAY,EAAE,OAAO,CAAC;AAC/G;AAEM,SAAU,oBAAoB,CAAC,IAA2B,EAAA;AAC9D,IAAA,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC;AAChC,IAAA,IAAI,CAAC,GAAG;AACN,QAAA,OAAO,IAAI;IACb,OAAO;AACL,QAAA,GAAI,IAAY;AAChB,QAAA,IAAI,EAAE,GAAG;QACT,GAAG;QACH,OAAO,EAAE,sBAAsB,CAAE,IAAY,EAAE,OAAO,EAAE,GAAG,CAAC;KACpC;AAC5B;AAEM,SAAU,qBAAqB,CAAC,IAA2B,EAAE,YAAoB,EAAA;AACrF,IAAA,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC;AAChC,IAAA,IAAI,CAAC,GAAG;AACN,QAAA,OAAO,IAAI;IACb,OAAO;AACL,QAAA,GAAI,IAAY;AAChB,QAAA,IAAI,EAAE,YAAY;QAClB,GAAG;KACqB;AAC5B;AAEM,SAAU,6BAA6B,CAC3C,IAA2B,EAC3B,OAA8B,EAAA;IAE9B,IAAI,MAAM,CAAE,IAAY,EAAE,IAAI,IAAI,EAAE,CAAC,KAAK,YAAY;AACpD,QAAA,OAAO,IAAI;IAEb,MAAM,QAAQ,GAAG,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC;AACzD,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,QAAA,OAAO,0BAA0B,CAC/B,OAAO,EAAE,YAAY,EACrB,4BAA4B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAChD;IACH;IACA,IAAI,QAAQ,KAAK,IAAI;AACnB,QAAA,OAAO,OAAO,EAAE,OAAO,IAAI,IAAI;AACjC,IAAA,IAAI,QAAQ,KAAK,aAAa,EAAE;AAC9B,QAAA,OAAO,0BAA0B,CAC/B,OAAO,EAAE,gBAAgB,EACzB,gCAAgC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CACpD;IACH;AACA,IAAA,OAAO,OAAO,EAAE,cAAc,IAAI,IAAI;AACxC;AAEA,SAAS,WAAW,CAAC,IAA2B,EAAA;IAC9C,OAAO,MAAM,CAAE,IAAY,EAAE,IAAI,IAAI,EAAE,CAAC;AAC1C;AAEA,SAAS,0BAA0B,CAAC,KAA6C,EAAE,eAAuB,EAAA;IACxG,MAAM,IAAI,GAAG,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC,EAAE;IACjC,IAAI,mBAAmB,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,IAAI,EAAE;AAC9D,QAAA,IAAI,CAAC,wBAAwB,GAAG,kBAAkB,CAChD,eAAe,EACf,SAAS,EACT,IAAI,CAAC,SAAS,KAAK,MAAM,GAAG,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,CACtF;IACH;AACA,IAAA,OAAO,IAAI;AACb;SAEgB,gCAAgC,CAC9C,IAA2B,EAC3B,OAA8B,EAC9B,gBAA6C,EAAA;IAE7C,MAAM,OAAO,GAAG,gBAAgB,IAAI,OAAO,EAAE,gBAAgB,IAAI,IAAI;IACrE,MAAM,YAAY,GAAG,MAAM,CAAE,IAAY,EAAE,IAAI,IAAI,EAAE,CAAC;AAEtD,IAAA,IAAI,YAAY,KAAK,YAAY,EAAE;AACjC,QAAA,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAC/C,QAAA,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG,IAAI;AAC/D,QAAA,IAAI,iBAAiB;AACnB,YAAA,OAAO,iBAAiB;QAE1B,MAAM,QAAQ,GAAG,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC;AACzD,QAAA,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,EAAE,OAAO;YAC5C,OAAO,OAAO,CAAC,OAAO;AACxB,QAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,EAAE,EAAE;YAClC,OAAO,OAAO,CAAC,EAAE;AACnB,QAAA,IAAI,QAAQ,KAAK,aAAa,IAAI,OAAO,EAAE,WAAW;YACpD,OAAO,OAAO,CAAC,WAAW;QAC5B,IAAI,OAAO,EAAE,UAAU;YACrB,OAAO,OAAO,CAAC,UAAU;IAC7B;AAEA,IAAA,MAAM,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC;AACtC,IAAA,IAAI,MAAM;AACR,QAAA,OAAO,MAAM;AAEf,IAAA,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC;AAChC,IAAA,IAAI,GAAG,IAAI,OAAO,GAAG,GAAG,CAAC;AACvB,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC;AAErB,IAAA,OAAO,IAAI;AACb;;MCxGa,0BAA0B,CAAA;AAKrC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOF,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,eAAe,SAAS;IACrD;+GAXW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,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,uCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAX3B;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MATS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYrD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAftC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCHU,mBAAmB,CAAA;AAK9B,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOA,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,SAAS;IAC9C;+GAXW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,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,gCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXpB;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MATS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYrD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAf/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCHU,sBAAsB,CAAA;AAKjC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOA,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,WAAW,MAAM;IAC9C;+GAXW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,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,mCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXvB;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MATS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYrD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAflC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCHU,wBAAwB,CAAA;AAKnC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOA,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,aAAa,MAAM;IAChD;+GAXW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,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,qCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXzB;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MATS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYrD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAfpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCgCU,kBAAkB,CAAA;AAjD/B,IAAA,WAAA,GAAA;AAoDmB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACxC,IAAA,CAAA,sBAAsB,GAAG,CAAC;QACjB,IAAA,CAAA,cAAc,GAAG,EAAE;QAC5B,IAAA,CAAA,WAAW,GAMR,IAAI;QAEf,IAAA,CAAA,YAAY,GAAa,EAAE;AA+C3B,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAa,KAAI;YAC3B,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAE;AACnD,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,KAAa,KAAI;AAC5B,YAAA,OAAO,KAAK;AACd,QAAA,CAAC;AA2CO,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,KAAmB,KAAI;YACnD,IAAI,CAAC,IAAI,CAAC,WAAW;gBACnB;YAEF,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc;AAC/E,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AACzE,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,QAAQ,EACR,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAClH;YACD,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC/C,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK;AAC1C,YAAA,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,KAAK;AAC1D,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC;QAEO,IAAA,CAAA,gBAAgB,GAAG,MAAK;YAC9B,IAAI,CAAC,IAAI,CAAC,WAAW;gBACnB;YAEF,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC;YAClE,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;YAC9D,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAClE,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,QAAA,CAAC;AACF,IAAA;IAxHC,IACI,IAAI,CAAC,KAA4B,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AACrC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,sBAAsB,EAAE;YACzC,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;QACrC;IACF;AAEA,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;IACnB;AAKA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,MAAM,GAAG,GAAI,IAAI,CAAC,IAAY,EAAE,MAAM;AACtC,QAAA,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,GAAG,GAA4B,GAAG,IAAI;IAC7E;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;IAC5D;AAEA,IAAA,IAAI,IAAI,GAAA;QACN,OAAOA,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI,CAAC;IAC9C;AAEA,IAAA,QAAQ,CAAC,GAA0B,EAAA;AACjC,QAAA,OAAOA,aAAW,CAAE,GAAW,EAAE,KAAK,CAAC;IACzC;AAEA,IAAA,WAAW,CAAC,IAA2B,EAAA;AACrC,QAAA,OAAOA,aAAW,CAAE,IAAY,EAAE,QAAQ,CAAC;IAC7C;AAEA,IAAA,SAAS,CAAC,IAA2B,EAAA;AACnC,QAAA,OAAOE,WAAS,CAAE,IAAY,EAAE,KAAK,CAAC;IACxC;IAUA,UAAU,CAAC,QAAyB,EAAE,SAAiB,EAAA;QACrD,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE;IAC/D;IAEA,iBAAiB,CAAC,KAAa,EAAE,KAAmB,EAAA;AAClD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YACpB;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACzC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;QAChC,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,cAAc;YAChC;QAEF,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,gBAAgB,EAAE;QAEvB,IAAI,CAAC,WAAW,GAAG;YACjB,KAAK;YACL,MAAM,EAAE,KAAK,CAAC,OAAO;YACrB,UAAU;YACV,cAAc;YACd,MAAM;SACP;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QAEvB,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC;QAC/D,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAC3D,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC;IACjE;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEQ,mBAAmB,GAAA;AACzB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,gBAAgB,CAAC,UAAU,CAAC;QAC3E,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC;IACxF;+GA5GW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,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,+BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7CnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MA3CS,YAAY,+TAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FA8CrD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjD9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,SAAS;uBAAC,cAAc;;sBAiBxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAexB;;sBACA;;;MClFU,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,kGAH3B,MAAM,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGL,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wCAAwC;AAClD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,MAAM;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCcY,yBAAyB,CAAA;AAKpC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOF,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,YAAY;IAC9C;+GAXW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,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,uCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAX1B;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MATS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYrD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAfrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MC2KU,mBAAmB,CAAA;AAK9B,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,MAAM,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI,IAAI,EAAE,CAAC;IAC/C;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC1F;AAEA,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,gCAAgC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC;IAC3F;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;IACxC;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;IAC3D;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEA;;;;;;;;AAQG;AACH,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY;AAC9B,QAAA,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,aAAa;AACjD,YAAA,OAAO,KAAK;AAEd,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,KAAK,QAAQ;AACvC,YAAA,OAAO,IAAI;AAEb,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO;AACxB,QAAA,IAAI,CAAC,GAAG;AACN,YAAA,OAAO,KAAK;;QAGd,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,IAAI,EAAE;QACzD,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;AAC/E,QAAA,IAAI,aAAa;AACf,YAAA,OAAO,KAAK;;AAGd,QAAA,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7B,YAAA,OAAO,KAAK;AAEd,QAAA,IAAI,yBAAyB,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO,IAAK,IAAI,CAAC,IAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACxF,YAAA,OAAO,KAAK;AAEd,QAAA,OAAO,IAAI;IACb;AAEA;;AAEG;AACH,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAE,IAAI,CAAC,IAAY,EAAE,OAAO,IAAK,IAAI,CAAC,IAAY,EAAE,GAAG,IAAI,EAAE,CAAC;QAEvF,OAAO;AACL,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,GAAG,EAAE,UAAU;SACS;IAC5B;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC;IAC5D;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,IAAI;IAClB;AAEA,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;IAC/D;+GAzFW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,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,gCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhGpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6FT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAtIC,YAAY,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACK,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACvB,uBAAuB,6IACvB,qBAAqB,CAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACrB,sBAAsB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACtB,oBAAoB,CAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACpB,2BAA2B,CAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAC3B,wBAAwB,sKACxB,kBAAkB,CAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAClB,qBAAqB,CAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACrB,iBAAiB,CAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACjB,2BAA2B,CAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAC3B,qBAAqB,2IACrB,8BAA8B,CAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAC9B,sBAAsB,CAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACtB,oBAAoB,CAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACpB,sBAAsB,4IACtB,sBAAsB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACtB,uBAAuB,CAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACvB,kBAAkB,CAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAClB,6BAA6B,iJAC7B,uBAAuB,CAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACvB,mBAAmB,CAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACnB,iBAAiB,CAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACjB,qBAAqB,CAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACrB,iBAAiB,uIACjB,sBAAsB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACtB,uBAAuB,CAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACvB,yBAAyB,CAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACzB,sBAAsB,CAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACtB,oBAAoB,uIACpB,sBAAsB,CAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACtB,0BAA0B,CAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAC1B,mBAAmB,CAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACnB,sBAAsB,CAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACtB,wBAAwB,8IACxB,kBAAkB,CAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAClB,iBAAiB,CAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACjB,0BAA0B,wGAC1B,yBAAyB,CAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAkGjC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA7I/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;AACZ,wBAAA,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACzC,wBAAA,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACzC,wBAAA,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACvC,wBAAA,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACxC,wBAAA,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACtC,wBAAA,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC7C,wBAAA,UAAU,CAAC,MAAM,wBAAwB,CAAC;AAC1C,wBAAA,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACpC,wBAAA,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACvC,wBAAA,UAAU,CAAC,MAAM,iBAAiB,CAAC;AACnC,wBAAA,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC7C,wBAAA,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACvC,wBAAA,UAAU,CAAC,MAAM,8BAA8B,CAAC;AAChD,wBAAA,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACxC,wBAAA,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACtC,wBAAA,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACxC,wBAAA,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACxC,wBAAA,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACzC,wBAAA,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACpC,wBAAA,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC/C,wBAAA,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACzC,wBAAA,UAAU,CAAC,MAAM,mBAAmB,CAAC;AACrC,wBAAA,UAAU,CAAC,MAAM,iBAAiB,CAAC;AACnC,wBAAA,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACvC,wBAAA,UAAU,CAAC,MAAM,iBAAiB,CAAC;AACnC,wBAAA,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACxC,wBAAA,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACzC,wBAAA,UAAU,CAAC,MAAM,yBAAyB,CAAC;AAC3C,wBAAA,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACxC,wBAAA,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACtC,wBAAA,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACxC,wBAAA,UAAU,CAAC,MAAM,0BAA0B,CAAC;AAC5C,wBAAA,UAAU,CAAC,MAAM,mBAAmB,CAAC;AACrC,wBAAA,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACxC,wBAAA,UAAU,CAAC,MAAM,wBAAwB,CAAC;AAC1C,wBAAA,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACpC,wBAAA,UAAU,CAAC,MAAM,iBAAiB,CAAC;AACnC,wBAAA,UAAU,CAAC,MAAM,0BAA0B,CAAC;AAC5C,wBAAA,UAAU,CAAC,MAAM,yBAAyB,CAAC;AAC5C,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6FT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MCzJU,uBAAuB,CAAA;AA9BpC,IAAA,WAAA,GAAA;QAyCW,IAAA,CAAA,WAAW,GAAG,QAAQ;QAE/B,IAAA,CAAA,KAAK,GAAuB,EAAE;AAM9B,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAa,KAAI;AAC/B,YAAA,OAAO,GAAG,IAAI,CAAC,WAAW,CAAA,CAAA,EAAI,KAAK,EAAE;AACvC,QAAA,CAAC;AA0EF,IAAA;IAhFC,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;IAClD;AAMA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,OAAO,GAAG,IAAI,CAAC,WAAW,CAAA,CAAA,EAAI,KAAK,EAAE;IACvC;AAEA,IAAA,IAAY,aAAa,GAAA;AACvB,QAAA,OAAO,0BAA0B,CAC/B;YACE,IAAI,EAAE,IAAI,CAAC,IAAW;YACtB,KAAK,EAAE,IAAI,CAAC,KAAY;YACxB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,EACD;YACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE;YAC1B,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY;AAC7D,YAAA,cAAc,EAAE,IAAI,CAAC,qBAAqB,EAAE;YAC5C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE,gBAAgB;AAC1E,SAAA,CACyB;IAC9B;AAEQ,IAAA,UAAU,CAAC,KAA0D,EAAA;AAC3E,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;QAChD,MAAM,KAAK,GAAuB,EAAE;AAEpC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AACrD,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI;gBACP;AAEF,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;gBAC9B,MAAM,QAAQ,GAA4B,EAAE;AAC5C,gBAAA,IAAI,MAAM,GAAG,KAAK,GAAG,CAAC;gBACtB,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE;AAC1C,oBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B,oBAAA,IAAI,OAAO,EAAE,IAAI,KAAK,aAAa;wBACjC;AACF,oBAAA,IAAI,OAAO;AACT,wBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC1B;gBAEA,KAAK,CAAC,IAAI,CAAC;AACT,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,KAAK,EAAE,mBAAmB,CAAE,IAAY,EAAE,KAAK,CAAC;oBAChD,QAAQ;AACT,iBAAA,CAAC;gBACF,KAAK,GAAG,MAAM;gBACd;YACF;AAEA,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa;gBAC7B;YAEF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACpC;AAEA,QAAA,OAAO,KAAK;IACd;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS;YACjC,OAAO,IAAI,CAAC,KAAK;AACnB,QAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;AACnC,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO;AACtB,QAAA,IAAI,OAAQ,IAAI,CAAC,IAAY,EAAE,OAAO,KAAK,SAAS;AAClD,YAAA,OAAO,CAAE,IAAI,CAAC,IAAY,CAAC,OAAO;AACpC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK;IAC5B;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC;IAC/E;+GA9FW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBxB;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAGU,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MA1BhC,YAAY,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACZ,kBAAkB,wHAED,mBAAmB,CAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAuB3B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA9BnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;AAClB,wBAAA,UAAU,CAAC,MAAK,uBAAwB,CAAC;AACzC,wBAAA,UAAU,CAAC,MAAM,mBAAmB,CAAC;AACtC,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MChCU,uBAAuB,CAAA;AAKlC,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAOK,oBAAkB,CAACH,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM;IACpF;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,CAAA,8BAAA,EAAiC,IAAI,CAAC,IAAI,EAAE;IACrD;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAOA,WAAS,CAAE,IAAI,CAAC,IAAY,EAAE,KAAK,CAAC,IAAIK,YAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IACtE;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAOP,aAAW,CAAE,IAAI,CAAC,IAAY,EAAE,QAAQ,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,WAAW;IACpD;+GAvBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdxB;;;;;;;;;;;GAWT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAZS,YAAY,oDAAmB,uBAAuB,CAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAerD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAlBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,CAAC;AAClE,oBAAA,QAAQ,EAAE;;;;;;;;;;;AAWT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;ACbH,IAAI,eAAe,GAAG,CAAC;AACvB,MAAM,WAAW,GAAG,IAAI,OAAO,EAA8C;AAG7E,MAAM,oBAAoB,GAA2B;AACnD,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;CACf;AAsBM,eAAe,mBAAmB,CACvC,IAAiB,EACjB,UAAsC,EAAE,EAAA;IAExC,+BAA+B,CAAC,IAAI,CAAC;IAErC,MAAM,UAAU,GAAsB,EAAE;IACxC,IAAI,QAAQ,GAAG,KAAK;AACpB,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,WAAW,IAAI,KAAK,IAAI;AACpE,IAAA,MAAM,MAAM,GAAkC;QAC5C,OAAO,EAAE,MAAK;AACZ,YAAA,IAAI,QAAQ;gBACV;YACF,QAAQ,GAAG,IAAI;AACf,YAAA,KAAK,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;AAC9D,gBAAA,IAAI;AACF,oBAAA,UAAU,CAAC,KAAK,CAAC,IAAI;gBACvB;AACA,gBAAA,MAAM;;gBAEN;YACF;AACA,YAAA,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM;AAClC,gBAAA,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,CAAC;KACF;AAED,IAAA,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;IAE7B,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,MAAM;AAEf,IAAA,MAAM,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,MAAM;IAEf,MAAM,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;IACxD,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,MAAM;AAEf,IAAA,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;QAC3B,MAAM,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;QAC5D,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,MAAM;QAEf,MAAM,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;QACnD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,MAAM;QAEf,IAAI,CAAC,OAAO,CAAC,qBAAqB;YAChC,MAAM,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;IAC3D;AAEA,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,+BAA+B,CAAC,IAAoC,EAAA;AAClF,IAAA,IAAI,CAAC,IAAI;QACP;IACF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IACtC,QAAQ,EAAE,OAAO,EAAE;AACrB;AAEA,SAAS,eAAe,CAAC,IAAiB,EAAE,QAAgB,EAAA;IAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAc,QAAQ,CAAC;IAC/D,OAAO;QACL,aAAa;QACb,MAAM,EAAE,CAAC,aAAa,EAAE,WAAW,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;KAC9F;AACH;AAEA,SAAS,wBAAwB,CAAC,IAAiB,EAAE,QAAgB,EAAA;AACnE,IAAA,OAAO,IAAI,CAAC,aAAa,CAAc,QAAQ,CAAC;AAClD;AAEA,SAAS,gBAAgB,CAAC,IAAiB,EAAE,QAAgB,EAAA;IAC3D,MAAM,YAAY,GAAG,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC7D,IAAA,MAAM,KAAK,GAAG,YAAY,IAAI,IAAI;IAClC,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC;AACxD;AAEA,SAAS,gBAAgB,CACvB,IAAiB,EACjB,YAAgC,EAChC,MAAc,EACd,OAAA,GAAsC,EAAE,EAAA;AAExC,IAAA,IAAI,YAAY;AACd,QAAA,YAAY,CAAC,SAAS,GAAG,MAAM;;AAE/B,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM;AAEzB,IAAA,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,GAAG;IAClC,IAAI,OAAO,CAAC,aAAa;QACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;AAC7C;AAEA,SAAS,gBAAgB,CACvB,IAAiB,EACjB,YAAgC,EAChC,UAAsC,EAAE,EAAA;AAExC,IAAA,IAAI,YAAY;AACd,QAAA,YAAY,CAAC,SAAS,GAAG,EAAE;AAC7B,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe;AACnC,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB;IACzC,IAAI,OAAO,CAAC,aAAa;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;AAChD;AAEA,eAAe,WAAW,CAAC,IAAiB,EAAE,QAAuB,EAAA;AACnE,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,yBAAyB,CAAC,CAAC;AAC7F,IAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;QAC9B,IAAI,CAAC,QAAQ,EAAE;YACb;AACF,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,KAAK,GAAG;YAC7C;QACF,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,iCAAiC,CAAC;QAC3E,MAAM,YAAY,GAAG,wBAAwB,CAAC,IAAI,EAAE,iCAAiC,CAAC;QACtF,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC;YACpC;QACF;AACA,QAAA,IACE,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK;AAC9B,eAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,KAAK;AACvC,eAAA,gBAAgB,CAAC,IAAI,EAAE,iCAAiC,CAAC,EAC5D;YACA;QACF;AACA,QAAA,IAAI;AACF,YAAA,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;AACvG,YAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,MAAM;QAC7C;AACA,QAAA,MAAM;AACJ,YAAA,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC;QACtC;IACF;AAEA,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,+BAA+B,CAAC,CAAC;AAClG,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;QAC7B,IAAI,CAAC,QAAQ,EAAE;YACb;AACF,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,KAAK,GAAG;YAC7C;QACF,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,uCAAuC,CAAC;QACjF,MAAM,YAAY,GAAG,wBAAwB,CAAC,IAAI,EAAE,uCAAuC,CAAC;QAC5F,IAAI,CAAC,MAAM,EAAE;YACX,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,aAAa,EAAE,wCAAwC,EAAE,CAAC;YACjG;QACF;AACA,QAAA,IACE,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK;AAC9B,eAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,KAAK;AACvC,eAAA,gBAAgB,CAAC,IAAI,EAAE,uCAAuC,CAAC,EAClE;YACA;QACF;AACA,QAAA,IAAI;AACF,YAAA,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC1E,gBAAA,aAAa,EAAE,wCAAwC;AACxD,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,MAAM;QAC7C;AACA,QAAA,MAAM;YACJ,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,aAAa,EAAE,wCAAwC,EAAE,CAAC;QACnG;IACF;AACF;AAEA,eAAe,iBAAiB,CAAC,MAAc,EAAE,WAAoB,EAAA;AACnE,IAAA,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,MAAM,CAAC;AAC1D,IAAA,IAAI;AACF,QAAA,OAAO,MAAM,2BAA2B,CAAC,gBAAgB,EAAE,WAAW,EAAE;AACtE,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,UAAU,EAAE,CAAC;AACd,SAAA,CAAC;IACJ;IACA,OAAO,KAAU,EAAE;QACjB,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI;QACvC,MAAM,mBAAmB,GAAG,IAAI,KAAK,mBAAmB,IAAI,KAAK,EAAE,kBAAkB;QACrF,MAAM,eAAe,GAAG,IAAI,KAAK,gBAAgB,IAAI,IAAI,KAAK,gBAAgB;AAC9E,QAAA,IAAI,CAAC,mBAAmB,IAAI,CAAC,eAAe;AAC1C,YAAA,MAAM,KAAK;IACf;AAEA,IAAA,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE;AAC9B,IAAA,IAAI,CAAC,KAAK;AACR,QAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AAErD,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE;QAClD,WAAW;AACX,QAAA,YAAY,EAAE,KAAK;AACpB,KAAA,CAAC;AACF,IAAA,aAAa,CAAC,gBAAgB,EAAE,WAAW,EAAE,IAAI,CAAC;AAClD,IAAA,OAAO,IAAI;AACb;AAEA,eAAe,aAAa,CAC1B,IAAiB,EACjB,UAA6B,EAC7B,OAAmC,EACnC,QAAuB,EAAA;IAEvB,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,QAAQ,KAAK,KAAK;AAC3D,IAAA,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC;AAC/B,QAAA,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO;AAC9C,QAAA,sBAAsB,EAAE,IAAI;AAC5B,QAAA,IAAI,UAAU,GAAG,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC;AAC5D,KAAA,CAAC;AACF,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE;QACzB;AAEF,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,6BAA6B,CAAC,CAAC;AAC/F,IAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,IAAI,CAAC,QAAQ,EAAE;YACb;AACF,QAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAmC;AACxD,QAAA,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE;AAClD,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;YACjB;QAEF,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAgB;AACtD,QAAA,MAAM,KAAK,GAAG,wBAAwB,CACpC,SAAS,EACT,SAAS,EACT,MAAM,EACN,IAAI,EACJ,OAAO,EACP;AACE,YAAA,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,UAAU,KAAK,KAAK;AACvD,SAAA,CACF;AACD,QAAA,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;AAE9B,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAiB,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO;YAC7D,IAAI,cAAc,GAAG,MAAM;AAC3B,YAAA,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;AAC3B,gBAAA,IAAI;oBACF,MAAM,2BAA2B,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;gBACpE;gBACA,OAAO,KAAU,EAAE;AACjB,oBAAA,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY;wBAC9B;oBACF,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;oBACvE,IAAI,CAAC,QAAQ,EAAE;wBACb;oBACF,IAAI,CAAC,MAAM,EAAE;AACX,wBAAA,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC;wBACtC;oBACF;oBACA,cAAc,GAAG,MAAM;gBACzB;YACF;AAEA,YAAA,MAAM,QAAQ,GAAG,CAAA,2BAAA,EAA8B,EAAE,eAAe,EAAE;AAClE,YAAA,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,EAC3F,OAAO,CAAC,KAAK,KAAK;kBACd,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,eAAe,IAAI,IAAI;AACtD,kBAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,mBAAmB,IAAI,IAAI,CAAC,CAC9D;YACD,IAAI,CAAC,QAAQ,EAAE;gBACb;AACF,YAAA,MAAM,GAAG,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EAAE,GAAG;AACnE,YAAA,IAAI,CAAC,GAAG;gBACN;AACF,YAAA,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC;AAC3C,YAAA,IAAI,CAAC,OAAO;gBACV;AACF,YAAA,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,OAAO;YAC9B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC;YACtD,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,GAAG,GAAG;AAC7C,YAAA,IAAI,OAAO,CAAC,YAAY,EAAE,yBAAyB,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC5F,gBAAA,IAAI;oBACF,QAAQ,EAAE,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC;gBACvC;gBACA,MAAM,EAAC;YACT;AACA,YAAA,UAAU,CAAC,IAAI,CAAC,MAAK;AACnB,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW;AAC3B,oBAAA,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1D,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,MAAM;AACJ,YAAA,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC;QACxC;IACF;AACF;AAEA,SAAS,mBAAmB,CAAC,MAAc,EAAE,KAAmB,EAAA;AAC9D,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE;AAClC,IAAA,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;AAC3B,QAAA,OAAO,MAAM;AACf,IAAA,MAAM,UAAU,GAAG,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;AACxD,IAAA,OAAO,CAAA,oBAAA,EAAuB,UAAU,CAAA,OAAA,EAAU,MAAM,EAAE;AAC5D;AAEA,eAAe,2BAA2B,CACxC,MAAc,EACd,KAAmB,EACnB,OAAY,EACZ,OAAmC,EAAA;AAEnC,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,eAAe,IAAI,IAAI,CAAC;AAC3E,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,IAAI,IAAI,CAAC;AACzE,IAAA,IAAI;QACF,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC;AAChE,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,IAAI;IACf;IACA,OAAO,KAAU,EAAE;AACjB,QAAA,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY;AAC9B,YAAA,MAAM,KAAK;IACf;IAEA,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC;AACvD,IAAA,IAAI,OAAO,OAAO,EAAE,KAAK,KAAK,UAAU,EAAE;AACxC,QAAA,MAAM,WAAW,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC;AACnF,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,QAAQ,GAAG,CAAA,iCAAA,EAAoC,EAAE,eAAe,EAAE;IACxE,MAAM,WAAW,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC;AAC9F,IAAA,OAAO,IAAI;AACb;AAEA,eAAe,0BAA0B,CACvC,MAAc,EACd,KAAmB,EACnB,OAAmC,EAAA;AAEnC,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,eAAe,IAAI,IAAI,CAAC;AAC3E,IAAA,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC;AACtE,QAAA,IAAI,MAAM;AACR,YAAA,OAAO,MAAM;IACjB;IACA,OAAO,KAAU,EAAE;AACjB,QAAA,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY;AAC9B,YAAA,MAAM,KAAK;IACf;AACA,IAAA,OAAO,6BAA6B,CAAC,MAAM,CAAC;AAC9C;AAEA,SAAS,6BAA6B,CAAC,MAAc,EAAA;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE;QAC9B,IAAI,CAAC,IAAI,EAAE;YACT,KAAK,CAAC,GAAG,EAAE;YACX;QACF;QACA,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACjD,eAAA,8CAA8C,CAAC,IAAI,CAAC,IAAI;AACxD,eAAA,SAAS,CAAC,IAAI,CAAC,IAAI;AACnB,eAAA,oFAAoF,CAAC,IAAI,CAAC,IAAI,CAAC;AACpG,QAAA,IAAI,CAAC,aAAa;YAChB;QACF,KAAK,CAAC,GAAG,EAAE;IACb;AACA,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB;AAEA,SAAS,WAAW,CAAI,GAAqB,EAAE,SAAiB,EAAA;AAC9D,IAAA,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,CAAC;QAC9B,OAAO,GAAG,EAAE;IAEd,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,KAAI;QACxC,IAAI,OAAO,GAAG,KAAK;AACnB,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,MAAK;AACvC,YAAA,IAAI,OAAO;gBACT;YACF,OAAO,GAAG,IAAI;AACd,YAAA,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC1C,CAAC,EAAE,SAAS,CAAC;AAEb,QAAA,GAAG;AACA,aAAA,IAAI,CAAC,CAAC,KAAK,KAAI;AACd,YAAA,IAAI,OAAO;gBACT;YACF,OAAO,GAAG,IAAI;YACd,YAAY,CAAC,KAAK,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC;AAChB,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACf,YAAA,IAAI,OAAO;gBACT;YACF,OAAO,GAAG,IAAI;YACd,YAAY,CAAC,KAAK,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC;AACf,QAAA,CAAC,CAAC;AACN,IAAA,CAAC,CAAC;AACJ;AAEA,eAAe,iBAAiB,CAC9B,IAAiB,EACjB,UAA6B,EAC7B,OAAmC,EACnC,QAAuB,EAAA;AAEvB,IAAA,MAAM,gBAAgB,GAAG,MAAM,cAAc,EAAE;AAC/C,IAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,QAAQ,EAAE;QAClC;AAEF,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,iEAAiE,CAAC,CAAC;AACnI,IAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,IAAI,CAAC,QAAQ,EAAE;YACb;AACF,QAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAmC;AACxD,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,IAAI,EAAE;AACzC,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACxB;QAEF,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAgB;AACtD,QAAA,MAAM,KAAK,GAAG,wBAAwB,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AAC1F,YAAA,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,UAAU,KAAK,KAAK;AAC3D,SAAA,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO;QACpC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO;AACjC,QAAA,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;AAE9B,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;gBACpC,SAAS,EAAE,KAAK,CAAC,IAAI;AACrB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA,CAAC;AACF,YAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;YAEvB,IAAI,OAAO,GAAkB,IAAI;AACjC,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE;AACvF,gBAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAK;AAC1C,oBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY;oBAC5C,IAAI,YAAY,GAAG,CAAC;wBAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA,EAAA,CAAI;AAC/E,gBAAA,CAAC,CAAC;YACJ;AAEA,YAAA,UAAU,CAAC,IAAI,CAAC,MAAK;AACnB,gBAAA,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AAClD,oBAAA,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACtC,gBAAA,QAAQ,CAAC,OAAO,IAAI;AACpB,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW;AAC3B,oBAAA,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1D,YAAA,CAAC,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,GAAG,GAAG;QACnD;AACA,QAAA,MAAM;AACJ,YAAA,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC;QACxC;IACF;AACF;AAEA,eAAe,QAAQ,CACrB,IAAiB,EACjB,UAA6B,EAC7B,OAAmC,EACnC,QAAuB,EAAA;AAEvB,IAAA,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE;AAC5B,IAAA,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE;QACxB;AAEF,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,oHAAoH,CAAC,CAAC;AACtL,IAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,IAAI,CAAC,QAAQ,EAAE;YACb;AACF,QAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAmC;AACxD,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,IAAI,EAAE;AACzC,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACxB;QAEF,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAgB;AACtD,QAAA,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AACxE,YAAA,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,KAAK,KAAK;AAClD,SAAA,CAAC;AACF,QAAA,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;AAE9B,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC;AACzC,YAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU;AAC9F,gBAAA,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC;YAEvE,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;AACpD,YAAA,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,IAAI,aAAa;YACvD,MAAM,iBAAiB,GAAG,aAAa,EAAE,aAAa,IAAI,aAAa,EAAE,OAAO,IAAI,EAAE;YACtF,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,IAAI,iBAAiB,CAAC,OAAO;YACtE,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,IAAI,iBAAiB,CAAC,WAAW;AAClF,YAAA,MAAM,aAAa,GAAwB,EAAE,GAAG,iBAAiB,EAAE;YACnE,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,mBAAmB,IAAI;AAC/D,kBAAE;kBACA,eAAe;AACnB,YAAA,aAAa,CAAC,WAAW,GAAG,IAAI;AAChC,YAAA,aAAa,CAAC,kBAAkB,GAAG,IAAI;AACvC,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;gBAClB,MAAM,aAAa,GAAG,iBAAiB,CAAC,cAAc,IAAI,OAAO,iBAAiB,CAAC,cAAc,KAAK;sBAClG,iBAAiB,CAAC;sBAClB,IAAI;gBACR,aAAa,CAAC,cAAc,GAAG;AAC7B,oBAAA,GAAG,oBAAoB;AACvB,oBAAA,IAAI,aAAa,IAAI,EAAE,CAAC;iBACzB;YACH;YAEA,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC;YAClE,IAAI,CAAC,QAAQ,EAAE;gBACb;YACF,MAAM,OAAO,GAAG,eAAe,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,OAAO;AACV,gBAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AAErD,YAAA,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,OAAO;YAC9B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG;AACxC,YAAA,UAAU,CAAC,IAAI,CAAC,MAAK;AACnB,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW;AAC3B,oBAAA,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1D,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,MAAM;AACJ,YAAA,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC;QACxC;IACF;AACF;AAEA,eAAe,YAAY,CACzB,IAAiB,EACjB,UAA6B,EAC7B,OAAmC,EACnC,QAAuB,EAAA;AAEvB,IAAA,MAAM,YAAY,GAAG,MAAM,YAAY,EAAE;AACzC,IAAA,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,CAAC,SAAS,KAAK,UAAU,IAAI,CAAC,QAAQ,EAAE;QAC9E;AAEF,IAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,qCAAqC,CAAC,CAAC;AACtG,IAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;QAC1B,IAAI,CAAC,QAAQ,EAAE;YACb;QACF,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAc,MAAM,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ;YACX;QAEF,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC;QACtD,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAC3D,QAAA,IAAI,kBAAkB,KAAK,SAAS,IAAI,kBAAkB,KAAK,aAAa,IAAI,kBAAkB,KAAK,IAAI,IAAI,kBAAkB,KAAK,QAAQ;YAC5I;AAEF,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,IAAI,EAAE;QACzC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,GAAG;QAC/C,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACtE,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACpE,QAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,WAAW,CAAC;QACzD,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,cAAc;AAC5D,QAAA,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAI;AACpF,QAAA,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,IAAI;QAC1F,MAAM,iBAAiB,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,MAAM;QAC5D,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE;AACzD,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC;QAC9F,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC;QACtD,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC5D,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,IAAI,QAAQ,EAAE,UAAU,IAAI,SAAS;QAC7E,MAAM,KAAK,GAAG,wBAAwB,CACpC,MAAM,EACN,IAAI,GAAG,CAAA,OAAA,EAAU,eAAe,EAAE,GAAG,CAAA,OAAA,EAAU,eAAe,CAAA,CAAE,EAChE,MAAM,EACN,KAAK,EACL,OAAO,EACP;AACE,YAAA,UAAU,EAAE,OAAO,CAAC,cAAc,EAAE,UAAU,KAAK,KAAK;AACzD,SAAA,CACF;QACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,+CAA+C,CAAC;AACzE,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,uBAAuB,CAAC,IAAI,GAAG,WAAW,IAAI,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,IAAI;QAC/J,IAAI,QAAQ,EAAE;YACZ,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS;YAClD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW;YACtD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;YACxD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU;QACtD;QACA,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAgB;AACtD,QAAA,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;QAE9B,MAAM,mBAAmB,GAAG,OAAO,OAAO,CAAC,aAAa,EAAE,SAAS,KAAK;AACtE,cAAE,OAAO,CAAC,aAAa,CAAC;cACtB,EAAE;AACN,QAAA,MAAM,gBAAgB,GAAG,CAAA;AAC3B,EAAA,mBAAmB,CAAA,CAAE,CAAC,IAAI,EAAE;AAC1B,QAAA,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC;AACrC,YAAA,MAAM,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;AACzC,YAAA,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7D,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AAC3B,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,UAAU,EAAE,GAAG;YACf,QAAQ;AACR,YAAA,IAAI,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AACrC,YAAA,IAAI,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AACrC,YAAA,IAAI,UAAU,IAAI,IAAI,IAAI,aAAa,IAAI;AACzC,kBAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,IAAI,CAAC,EAAE;kBAC/D,EAAE,CAAC;AACP,YAAA,IAAI,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;;;AAGhC,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AAEF,QAAA,IAAI;YACF,IAAI,IAAI,IAAI,OAAO,OAAO,CAAC,gBAAgB,KAAK,UAAU,EAAE;AAC1D,gBAAA,MAAM,OAAO,CAAC,gBAAgB,CAC5B,KAAK,CAAC,IAAI,EACV,YAAY,EACZ,WAAW,IAAI,MAAM,EACrB,cAAc,CACf;YACH;iBACK;gBACH,MAAM,OAAO,CAAC,YAAY,GACxB,KAAK,CAAC,IAAI,EACV,IAAI,GAAG,WAAW,IAAI,MAAM,GAAG,MAAM,EACrC,cAAc,CACf;YACH;YACA,IAAI,CAAC,QAAQ,EAAE;gBACb;AAEF,YAAA,MAAM,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,cAAc,GAAG,eAAe,CAAC;YAC3E,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,GAAG,GAAG;AAC5C,YAAA,IAAI,IAAI;gBACN,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,GAAG,GAAG;AAClD,YAAA,UAAU,CAAC,IAAI,CAAC,MAAK;AACnB,gBAAA,IAAI;AACF,oBAAA,OAAO,CAAC,aAAa,IAAI;gBAC3B;wBACQ;AACN,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW;AAC3B,wBAAA,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1D;AACF,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,MAAM;AACJ,YAAA,IAAI;AACF,gBAAA,OAAO,CAAC,aAAa,IAAI;YAC3B;AACA,YAAA,MAAM;;YAEN;AACA,YAAA,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC;QACxC;IACF;AACF;AAEA,SAAS,gBAAgB,CAAC,MAAW,EAAA;AACnC,IAAA,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AAChC,QAAA,MAAM,QAAQ,GAAG,IAAI,MAAM,EAAE;AAC7B,QAAA,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU;AACpD,YAAA,OAAO,QAAQ;AACjB,QAAA,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU;AACtC,YAAA,OAAO,MAAM;IACjB;IAEA,IAAI,MAAM,EAAE,EAAE,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,UAAU;AAC/C,QAAA,OAAO,IAAI,MAAM,CAAC,EAAE,EAAE;AAExB,IAAA,IAAI,OAAO,MAAM,EAAE,OAAO,KAAK,UAAU;AACvC,QAAA,OAAO,MAAM;AAEf,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,mBAAmB,CAAC,GAAgB,EAAE,QAAqB,EAAA;IAClE,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,EAAE;AACvD,IAAA,IAAI,QAAQ;AACV,QAAA,OAAO,QAAQ;IAEjB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACzG,IAAA,OAAO,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW;AAC9E;AAEA,SAAS,qBAAqB,CAAC,QAAgB,EAAA;AAC7C,IAAA,OAAO,uBAAuB,CAAC,QAAQ,CAAC;AAC1C;AAEA,SAAS,uBAAuB,CAAC,MAAc,EAAE,IAAa,EAAA;AAC5D,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE;AAC5B,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAClD;AAEA,SAAS,aAAa,CAAC,KAAgC,EAAA;AACrD,IAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,QAAQ;AAC9B,QAAA,OAAO,SAAS;IAElB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACvC,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS;AACnE;AAEA,SAAS,iBAAiB,CAAC,KAAgC,EAAA;AACzD,IAAA,IAAI,CAAC,KAAK;AACR,QAAA,OAAO,EAAE;IAEX,MAAM,YAAY,GAAI,UAAkB,EAAE,OAAO,GAAG,QAAQ,CAAC,EAAE,MAAM;IACrE,IAAI,YAAY,EAAE,IAAI;AACpB,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAE5D,IAAA,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;QAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;IACxC;AAEA,IAAA,OAAO,EAAE;AACX;AAEA,SAAS,wBAAwB,CAC/B,IAA+C,EAC/C,KAAa,EACb,MAAc,EACd,iBAA0B,EAC1B,OAAmC,EACnC,eAEI,EAAE,EAAA;IAEN,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,IAAA,OAAO,CAAC,SAAS,GAAG,CAAA,qEAAA,EAAwE,IAAI,EAAE;AAElG,IAAA,IAAI,YAAY,CAAC,UAAU,KAAK,KAAK,EAAE;QACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,QAAA,MAAM,CAAC,SAAS,GAAG,2CAA2C;QAE9D,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC5C,QAAA,KAAK,CAAC,SAAS,GAAG,0CAA0C;AAC5D,QAAA,KAAK,CAAC,WAAW,GAAG,KAAK;AAEzB,QAAA,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;QACzB,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxD,QAAA,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;IAC7B;IAEA,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,IAAA,IAAI,CAAC,SAAS,GAAG,yCAAyC;AAC1D,IAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;IAEzB,IAAI,iBAAiB,EAAE;QACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;AACjD,QAAA,OAAO,CAAC,SAAS,GAAG,4CAA4C;QAEhE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;AACjD,QAAA,OAAO,CAAC,WAAW,GAAG,QAAQ;AAC9B,QAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;QAE5B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/C,QAAA,SAAS,CAAC,SAAS,GAAG,2CAA2C;QACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM;AACzB,QAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;AAC3B,QAAA,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;AAE9B,QAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;IAC9B;AAEA,IAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1B;AAEA,SAAS,mBAAmB,CAAC,MAAc,EAAE,OAAmC,EAAA;IAC9E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,IAAA,OAAO,CAAC,SAAS,GAAG,4CAA4C;IAEhE,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACnD,IAAA,UAAU,CAAC,IAAI,GAAG,QAAQ;AAC1B,IAAA,UAAU,CAAC,SAAS,GAAG,2CAA2C;AAClE,IAAA,UAAU,CAAC,WAAW,GAAG,MAAM;AAC/B,IAAA,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK;AAChC,QAAA,UAAU,CAAC,KAAK,GAAG,aAAa;AAElC,IAAA,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACxC,QAAA,KAAK,QAAQ,CAAC,MAAM,CAAC;AACrB,QAAA,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1B,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC;AAC/B,IAAA,OAAO,OAAO;AAChB;AAEA,eAAe,QAAQ,CAAC,MAAc,EAAA;AACpC,IAAA,IAAI;QACF,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE;YACtE,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;YAC3C;QACF;IACF;AACA,IAAA,MAAM;;IAEN;IAEA,IAAI,OAAO,QAAQ,KAAK,WAAW;QACjC;IAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;AACnD,IAAA,QAAQ,CAAC,KAAK,GAAG,MAAM;AACvB,IAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC;AACzC,IAAA,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACjC,IAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AAC5B,IAAA,QAAQ,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACrC,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE;AACjB,IAAA,IAAI;AACF,QAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;IAC9B;AACA,IAAA,MAAM;;IAEN;YACQ;QACN,QAAQ,CAAC,MAAM,EAAE;IACnB;AACF;;MC32Ba,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;QAEU,IAAA,CAAA,UAAU,GAAyD,IAAI;AACvE,QAAA,IAAA,CAAA,QAAQ,GAAiC;AAC/C,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,KAAK;SACb;AAEgB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAc;AAsDnD,IAAA;IAnDC,IAAI,CAAC,UAAuC,EAAE,EAAA;QAC5C,IAAI,IAAI,CAAC,UAAU;YACjB;AACF,QAAA,IAAI,CAAC,UAAU,GAAG,0BAA0B,CAAC,OAAO,CAAC;QACrD,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IACvF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,yBAAyB,IAAI;AAClC,QAAA,IAAI,CAAC,yBAAyB,GAAG,SAAS;AAC1C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACxB;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;AAEA;;;;;AAKG;AACH,IAAA,SAAS,CAAC,QAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5B,QAAA,OAAO,MAAK;AACV,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,CAAC;IACH;IAEA,IAAI,MAAM,GAAA,EAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA,CAAC;IACnD,IAAI,OAAO,GAAA,EAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAA,CAAC;IACrD,IAAI,IAAI,GAAA,EAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAA,CAAC;IAChD,IAAI,QAAQ,GAAA,EAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAA,CAAC;IACxD,IAAI,KAAK,GAAA,EAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA,CAAC;IAClD,IAAI,YAAY,GAAA,EAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA,CAAC;AAE/D,IAAA,OAAO,CAAC,KAAa,EAAA,EAAU,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA,CAAC;AAC/D,IAAA,MAAM,CAAC,OAA6B,EAAA,EAAU,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC;IAC/E,KAAK,GAAA,EAAW,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAA,CAAC;AACzC,IAAA,KAAK,CAAC,eAAwB,EAAA,EAAU,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA,CAAC;IAChF,KAAK,GAAA,EAAW,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAA,CAAC;IACzC,MAAM,GAAA,EAAW,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAA,CAAC;IAEnC,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,UAAU;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAC/C,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS;AACnC,YAAA,QAAQ,EAAE;IACd;+GAjEW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA3B,2BAA2B,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC;;;ACPM,MAAM,mBAAmB,GAAG,EAAE;AAC9B,MAAM,uBAAuB,GAAG,GAAG;AAepC,SAAU,4BAA4B,CAAC,eAAuB,EAAE,YAAqB,EAAA;IACzF,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,sBAAsB,IAAI,CAAC;AACzE,QAAA,OAAO,KAAK;IACd,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;IAChE,OAAO,eAAe,GAAG,oBAAoB;AAC/C;AAEM,SAAU,iBAAiB,CAAC,OAA0B,EAAA;AAC1D,IAAA,IAAI,OAAO,CAAC,sBAAsB,KAAK,KAAK;AAC1C,QAAA,OAAO,KAAK;AACd,IAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,sBAAsB,IAAI,CAAC;AACzE,QAAA,OAAO,KAAK;IACd,IAAI,OAAO,CAAC,qBAAqB;AAC/B,QAAA,OAAO,KAAK;AACd,IAAA,IAAI,OAAO,CAAC,eAAe,GAAG,uBAAuB;AACnD,QAAA,OAAO,KAAK;AACd,IAAA,OAAO,OAAO,CAAC,gBAAgB,KAAK,KAAK;AAC3C;SAEgB,wBAAwB,CACtC,WAAwC,EACxC,QAAQ,GAAG,mBAAmB,EAAA;IAE9B,IAAI,CAAC,WAAW,CAAC,IAAI;AACnB,QAAA,OAAO,QAAQ;IAEjB,IAAI,KAAK,GAAG,CAAC;AACb,IAAA,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE;QACvC,KAAK,IAAI,MAAM;AAEjB,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;AAC/C;AAEM,SAAU,mBAAmB,CACjC,KAAa,EACb,GAAW,EACX,WAAwC,EACxC,iBAAyB,EAAA;IAEzB,IAAI,KAAK,IAAI,GAAG;AACd,QAAA,OAAO,CAAC;IAEV,IAAI,KAAK,GAAG,CAAC;IACb,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC;QAC7C,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,iBAAiB;AACtD,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,gBAAgB,CAC9B,KAAa,EACb,UAAkB,EAClB,YAAqB,EACrB,cAAuB,EAAA;AAEvB,IAAA,IAAI,CAAC,KAAK;QACR,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAE7B,IAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;AACzE,IAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAEtE,IAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC;AAC/C,IAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,GAAG,CAAC,CAAC;AACrD,IAAA,MAAM,IAAI,GAAG,GAAG,GAAG,KAAK;AAExB,IAAA,IAAI,IAAI,GAAG,oBAAoB,EAAE;AAC/B,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,oBAAoB;QAC1C,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B;AACK,SAAA,IAAI,IAAI,GAAG,oBAAoB,EAAE;AACpC,QAAA,MAAM,OAAO,GAAG,oBAAoB,GAAG,IAAI;AAC3C,QAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACnD,QAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACtD;IAEA,OAAO;AACL,QAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;KACxD;AACH;;MC5Fa,iCAAiC,GAC1C,IAAI,cAAc,CAAuB,mCAAmC;;ACmDhF,MAAM,yBAAyB,GAAG,sBAAsB;MAuE3C,qBAAqB,CAAA;AArElC,IAAA,WAAA,GAAA;AAsEmB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AACzC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,2BAA2B,EAAE;AAChD,QAAA,IAAA,CAAA,0BAA0B,GAAG,MAAM,CAClD,iCAAiC,EACjC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnC;QAKQ,IAAA,CAAA,OAAO,GAAG,EAAE;QAOZ,IAAA,CAAA,UAAU,GAAoC,MAAM;QAEpD,IAAA,CAAA,eAAe,GAAG,IAAI;QAItB,IAAA,CAAA,qBAAqB,GAAG,KAAK;QAQ7B,IAAA,CAAA,YAAY,GAAG,IAAI;QAEnB,IAAA,CAAA,MAAM,GAAG,KAAK;;QAId,IAAA,CAAA,UAAU,GAAG,KAAK;;QAElB,IAAA,CAAA,IAAI,GAAG,IAAI;QACX,IAAA,CAAA,cAAc,GAAG,IAAI;QACrB,IAAA,CAAA,sBAAsB,GAAG,EAAE;QAC3B,IAAA,CAAA,eAAe,GAAG,EAAE;QACpB,IAAA,CAAA,gBAAgB,GAAG,EAAE;QACrB,IAAA,CAAA,mBAAmB,GAAG,CAAC;QACvB,IAAA,CAAA,wBAAwB,GAAG,GAAG;QAC9B,IAAA,CAAA,sBAAsB,GAAG,IAAI;QAC7B,IAAA,CAAA,YAAY,GAAG,GAAG;QAClB,IAAA,CAAA,cAAc,GAAG,EAAE;QACnB,IAAA,CAAA,SAAS,GAAG,IAAI;QAChB,IAAA,CAAA,eAAe,GAAqB,MAAM;AAGzC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAU;AACjC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAA2B;AACjE,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAc;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAc;AAC1C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAc;QAEnD,IAAA,CAAA,WAAW,GAA4B,EAAE;QACzC,IAAA,CAAA,cAAc,GAAuB,EAAE;AACvC,QAAA,IAAA,CAAA,aAAa,GAAyB,EAAE,MAAM,EAAE,EAAE,EAAE;QACpD,IAAA,CAAA,eAAe,GAAG,CAAC;QACnB,IAAA,CAAA,kBAAkB,GAAG,CAAC;QAEd,IAAA,CAAA,aAAa,GAAG,CAAC;QACjB,IAAA,CAAA,UAAU,GAAG,CAAC;QACd,IAAA,CAAA,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AACvB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAkB;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAU;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAU;AAC5B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,GAAG,EAAkB;QACpD,IAAA,CAAA,mBAAmB,GAAG,CAAC;AACd,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAuB;AAC7C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,GAAG,EAAuB;QAC1D,IAAA,CAAA,QAAQ,GAAgC,IAAI;QAC5C,IAAA,CAAA,cAAc,GAA0B,IAAI;AACnC,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,GAAG,EAAmB;QAE5D,IAAA,CAAA,UAAU,GAAkB,IAAI;QAChC,IAAA,CAAA,QAAQ,GAAkB,IAAI;QAC9B,IAAA,CAAA,SAAS,GAAkB,IAAI;QAC/B,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,gBAAgB,GAAG,CAAC;QACpB,IAAA,CAAA,gBAAgB,GAAkB,IAAI;QACtC,IAAA,CAAA,iBAAiB,GAAyC,IAAI;QAC9D,IAAA,CAAA,eAAe,GAAkB,IAAI;QAErC,IAAA,CAAA,qBAAqB,GAAG,KAAK;QAC7B,IAAA,CAAA,4BAA4B,GAAG,KAAK;QAEpC,IAAA,CAAA,qBAAqB,GAAG,EAAE;;QAKlC,IAAA,CAAA,oBAAoB,GAAG,KAAK;QAEpB,IAAA,CAAA,2BAA2B,GAAG,CAAC;AA+MvC,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,MAAc,EAAE,KAAuB,KAAI;YACzD,OAAO,CAAA,EAAG,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,CAAA,CAAE;AACrD,QAAA,CAAC;AA2qBF,IAAA;AA33ByB,IAAA,SAAA,IAAA,CAAA,qCAAqC,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;AAEnJ,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC;AAEA,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK;AAChC,YAAA,OAAO,KAAK;QACd,IAAI,IAAI,CAAC,QAAQ;AACf,YAAA,OAAO,KAAK;;;;QAId,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,0BAA0B,EAAE,wBAAwB,EAAE;AAC9F,YAAA,OAAO,KAAK;AACd,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI;AAC/B,YAAA,OAAO,IAAI;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC;IAClE;AAEA,IAAA,IAAI,sBAAsB,GAAA;;;;;;AAMxB,QAAA,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK;AAC9B,eAAA,IAAI,CAAC;AACL,eAAA,IAAI,CAAC,eAAe,KAAK,IAAI;AAElC,QAAA,OAAO,QAAQ,IAAI,IAAI,CAAC,uBAAuB;IACjD;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACvF;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE;IAC3B;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU;IACtE;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,EAAS;AAC3C,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;IACjC;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI;AAC5D,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC9F,OAAO,IAAI,CAAC,cAAc;IAC5B;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,UAAU;IACnE;IAEA,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,sBAAsB;IACpC;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IACnE;AAEA,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IAC5D;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;IAC1D;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAC3D;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;QACnE,OAAO,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,sBAAsB,GAAG,CAAC;IAC9E;AAEA,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,KAAK;IACxC;AAEA,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,4BAA4B,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC;IACjF;AAEA,IAAA,IAAI,0BAA0B,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,cAAc,KAAK;eAC1B,OAAO,MAAM,KAAK;eAClB,CAAC,IAAI,CAAC;eACN,CAAC,IAAI,CAAC;eACN,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,wBAAwB;IAC9D;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,iBAAiB,CAAC;YACvB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;YACxC,gBAAgB,EAAE,IAAI,CAAC,uBAAuB;YAC9C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;AAClD,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,qBAAqB;IAC5D;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,6BAA6B,EAAE;AAEpC,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa;AAChD,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc;QAElD,IAAI,CAAC,gBAAgB,EAAE;;;;;;;;;QAUvB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,QAAA,MAAM,oBAAoB,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,OAAO,CAAC;QAE1F,IACE,IAAI,CAAC;eACF;AACA,eAAA,OAAO,CAAC;eACR,qBAAqB,KAAK,IAAI,CAAC;AAC/B,eAAA,sBAAsB,KAAK,IAAI,CAAC,cAAc,EACjD;YACA;QACF;QAEA,IAAI,CAAC,OAAO,EAAE;IAChB;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;QAEnD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YAC9D,IAAI,IAAI,CAAC,qBAAqB;gBAC5B;AAEF,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa;AAC5C,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc;AAE9C,YAAA,IACE,iBAAiB,KAAK,IAAI,CAAC;AACxB,mBAAA,kBAAkB,KAAK,IAAI,CAAC,sBAAsB,EACrD;gBACA,IAAI,CAAC,OAAO,EAAE;YAChB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa;AAChD,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc;AAElD,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI;QACxC,IAAI,CAAC,gBAAgB,EAAE;AAEvB,QAAA,IACE,qBAAqB,KAAK,IAAI,CAAC;AAC5B,eAAA,sBAAsB,KAAK,IAAI,CAAC,cAAc,EACjD;YACA,IAAI,CAAC,OAAO,EAAE;QAChB;AAEA,QAAA,IAAI,CAAC,2BAA2B,GAAG,yBAAyB,CAAC,MAAK;YAChE,IAAI,CAAC,OAAO,EAAE;AAChB,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,uBAAuB,IAAI;AAChC,QAAA,IAAI,CAAC,uBAAuB,GAAG,SAAS;QACxC,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,2BAA2B,IAAI;AACpC,QAAA,IAAI,CAAC,2BAA2B,GAAG,SAAS;QAC5C,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;QAC/B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAClE,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC1C,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B;QACA,IAAI,CAAC,4BAA4B,EAAE;IACrC;AAMA,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAA,CAAA,EAAI,KAAK,EAAE;IAC/C;AAEA,IAAA,eAAe,CAAC,KAAiB,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;AACjD,QAAA,IAAI,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC;AACtC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,cAAc,CAAC,KAAiB,EAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;AACjD,QAAA,IAAI,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;IAEQ,6BAA6B,GAAA;QACnC,IAAI,IAAI,CAAC,YAAY;YACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;IACvD;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,YAAY;YACpB;AAEF,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;AAEjC,QAAA,IAAI;AACF,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;AAEtC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B;YACF;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC;gBACpC,IAAI,IAAI,CAAC,cAAc;oBACrB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBAC3C;YACF;AAEA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;YAEvC,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B;AACK,iBAAA,IAAI,WAAW,KAAK,MAAM,EAAE;;YAEjC;AACK,iBAAA,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7D;iBACK;AACH,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC;YACtC;YAEA,IAAI,IAAI,CAAC,cAAc;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QAC9B;gBACQ;AACN,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;QACpC;IACF;IAEQ,OAAO,GAAA;QACb,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,qBAAqB,EAAE;;AAG5B,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa;AAC3E,QAAA,IAAI,IAAI,CAAC,2BAA2B,KAAK,mBAAmB,EAAE;AAC5D,YAAA,IAAI,CAAC,mBAAmB,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,2BAA2B,GAAG,mBAAmB;QACxD;AACA,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa;AAC/C,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc;QAEjD,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrE,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAClC,cAAE;AACE,gBAAA,GAAG,sBAAsB;gBACzB,GAAG,IAAI,CAAC,gBAAgB;AACzB;cACD,sBAAsB;AAE1B,QAAA,MAAM,MAAM,GAAuB;AACjC,YAAA,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,YAAA,qBAAqB,EAAE,OAAO,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;SACzE;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,kBAAkB,CACrC;AACE,YAAA,GAAG,IAAI;YACP,OAAO,EAAE,IAAI,CAAC,aAAa;YAC3B,KAAK,EAAE,IAAI,CAAC,cAAc;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,gBAAgB,EAAE,sBAAsB;SACzC,EACD,MAAM,EACN,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,mBAAmB,CACzB;AACD,QAAA,IAAI,CAAC,WAAW,GAAGC,oBAAkB,CAAC;AACpC,YAAA,GAAG,IAAI;YACP,OAAO,EAAE,IAAI,CAAC,aAAa;YAC3B,KAAK,EAAE,IAAI,CAAC,cAAc;AAC3B,SAAA,CAAC;QACF,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAChF,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,YAAA,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,sBAAsB,CAAC;QACnH;aACK;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;AACzC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;kBACtB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,wBAAwB;kBAC7C,KAAK;QACX;QAEA,IAAI,CAAC,IAAI,CAAC,gBAAgB;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;QAE7B,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,2BAA2B,EAAE;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,IAAI,CAAC,sBAAsB,EAAE;QAE7B,IAAI,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK;YAC/D,IAAI,CAAC,iBAAiB,EAAE;IAC5B;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;QACzB,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AACrC,QAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE;YACvD,IAAI,KAAK,IAAI,KAAK;AAChB,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;QAClC;AACA,QAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC7C,IAAI,KAAK,IAAI,KAAK;AAChB,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/B;AACA,QAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACnD,IAAI,KAAK,IAAI,KAAK;AAChB,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC;IACF;IAEQ,qBAAqB,GAAA;QAC3B,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC;AACpE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AACrC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC;AAClB,cAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,MAAM;gBACtF,IAAI;AACJ,gBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM;AACrC,aAAA,CAAC;cACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;cACxB,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,iBAAiB;cACjG,CAAC;AACL,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;cAC3B,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,iBAAiB;cACnG,CAAC;AAEL,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAI;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC3C,IAAI,OAAO,GAAG,KAAK;AACnB,YAAA,IACE;mBACG,IAAI,CAAC,IAAI,KAAK;mBACd,MAAM,CAAE,IAAY,EAAE,IAAI,IAAI,EAAE,CAAC,KAAK;mBACtC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAC5B;gBACA,OAAO,GAAG,IAAI;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1B;YAEA,OAAO;gBACL,IAAI;gBACJ,KAAK;gBACL,MAAM;gBACN,OAAO;gBACP,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,iBAAiB;aACpE;AACH,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACpC,IAAI,IAAI,CAAC,0BAA0B,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa;AAChE,YAAA,OAAO,KAAK;QACd,IAAI,CAAC,IAAI,CAAC,gBAAgB;AACxB,YAAA,OAAO,IAAI;AACb,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,wBAAwB;AACvC,YAAA,OAAO,IAAI;QACb,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IACvC;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,0BAA0B,IAAI,OAAO,MAAM,KAAK,WAAW;YACnE;AACF,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM;YACpE;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,MAAM,GAAG,GAAG,CAAC,QAA2B,KAAI;AAC1C,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC,CAAC;AACrE,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa;AAClC,YAAA,GAAG;AACD,gBAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC;AACvF,gBAAA,IAAI,CAAC,QAAQ;oBACX;AACF,gBAAA,MAAM,SAAS,GAAG,OAAO,QAAQ,CAAC,aAAa,KAAK,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC;AAC7F,gBAAA,IAAI,SAAS,IAAI,MAAM,GAAG,GAAG;oBAC3B;YACJ,CAAC,QAAQ,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AAE5C,YAAA,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa,EAAE;AACpC,gBAAA,IAAI,CAAC,aAAa,GAAG,SAAS;gBAC9B,IAAI,CAAC,qBAAqB,EAAE;AAC5B,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;gBACvB,IAAI,CAAC,sBAAsB,EAAE;YAC/B;YAEA,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;gBAC9C,IAAI,CAAC,iBAAiB,EAAE;AAC5B,QAAA,CAAC;AAED,QAAA,MAAM,YAAY,GAAI,MAAc,CAAC,mBAAsH;AAC3J,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;QACjE,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9G;QACF;AAEA,QAAA,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE;YACtD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAK;AAChD,gBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,oBAAA,GAAG,EAAE;oBACL;gBACF;AACA,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC;AACzD,YAAA,CAAC,CAAC;YACF;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC;IACzD;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QACzB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC5D,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AACpC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACxB;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,oBAAoB,KAAK,UAAU,EAAE;AAC/G,YAAA,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1C,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACtB;AACA,QAAA,MAAM,UAAU,IAAI,OAAO,MAAM,KAAK,WAAW,GAAI,MAAc,CAAC,kBAAkB,GAAG,IAAI,CAAkC;QAC/H,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,UAAU,EAAE;AACxC,YAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;IACF;IAEQ,sBAAsB,GAAA;QAC5B,IAAI,OAAO,MAAM,KAAK,WAAW;YAC/B;QACF,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AAC5C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC3B,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,oBAAoB,EAAE;QAC7B,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,mBAAmB,GAAA;QACzB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjE,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AACzC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC7B;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa;AACxC,QAAA,IAAI,CAAC,IAAI;YACP;AAEF,QAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU;AACxC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,6BAA6B,CAAC,CAAC;AAC3F,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACzB;AACF,YAAA,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;AAClC,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;QAC/B;AAEA,QAAA,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE;AAC7D,YAAA,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC3B;AACF,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC5B;IACF;IAEQ,WAAW,CAAC,KAAa,EAAE,IAAiB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC3B;QACF;QAEA,IAAI,KAAK,GAAG,IAAI,CAAC,wBAAwB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACxE,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC3B;QACF;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;QACjD,IAAI,QAAQ,KAAK,IAAI;YACnB;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC3B;QACF;QAEA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;QACtC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;AAC5C,QAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;IACxB;IAEQ,cAAc,CAAC,UAAkB,EAAE,SAAiB,EAAA;QAC1D,IAAI,OAAO,MAAM,KAAK,WAAW;AAC/B,YAAA,OAAO,IAAI;QACb,IAAI,OAAO,oBAAoB,KAAK,WAAW;AAC7C,YAAA,OAAO,IAAI;QACb,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,qBAAqB;AAC9D,YAAA,OAAO,IAAI;AAEb,QAAA,MAAM,UAAU,GAAmB;AACjC,YAAA,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE;YAChC,UAAU;YACV,SAAS;SACV;QAED,IACE,IAAI,CAAC;AACF,eAAA,IAAI,CAAC;AACL,eAAA,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,UAAU,CAAC;AACxC,eAAA,IAAI,CAAC,cAAc,CAAC,UAAU,KAAK,UAAU,CAAC;eAC9C,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,EACzD;YACA,OAAO,IAAI,CAAC,QAAQ;QACtB;QAEA,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAI;AACnD,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBAC3B,IAAI,EAAE,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;oBACxD;AACF,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC3D,IAAI,KAAK,IAAI,IAAI;oBACf;AACF,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC7B;QACF,CAAC,EAAE,UAAU,CAAC;AACd,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU;QAChC,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEQ,mBAAmB,GAAA;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa;AACtE,QAAA,IAAI,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;AACxC,YAAA,OAAO,IAAI;AAEb,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,IAAI,QAAQ;QAC1C,MAAM,cAAc,GAAG,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,eAAe;AAClE,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa;QAChC,OAAO,OAAO,EAAE;YACd,IAAI,OAAO,KAAK,GAAG,CAAC,IAAI,IAAI,OAAO,KAAK,cAAc;gBACpD;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC9C,YAAA,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,WAAW,EAAE;AACvD,YAAA,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,WAAW,EAAE;AACrD,YAAA,IAAI,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvF,gBAAA,OAAO,OAAO;AAChB,YAAA,OAAO,GAAG,OAAO,CAAC,aAAa;QACjC;AAEA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,eAAe,CAAC,KAAa,EAAA;QACnC,IAAI,OAAO,GAAG,KAAK;AACnB,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC5D,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;YAC9B,OAAO,GAAG,IAAI;QAChB;QAEA,IAAI,IAAI,CAAC,qBAAqB,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AACzD,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAC/B,IAAI,CAAC,WAAW,CAAC,MAAM,EACvB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,sBAAsB,CAC5B;YACD,OAAO,GAAG,IAAI;QAChB;AAEA,QAAA,IAAI,CAAC,OAAO;YACV;QAEF,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,IAAI,CAAC,sBAAsB,EAAE;IAC/B;AAEQ,IAAA,cAAc,CAAC,KAAa,EAAA;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChD,QAAA,IAAI,CAAC,OAAO;YACV;AACF,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC;QACnC;AACA,QAAA,MAAM;;QAEN;AACA,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3C,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;IACrC;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE;QAC7B;AACA,QAAA,MAAM;;QAEN;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;IAC/B;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa;AACxC,QAAA,IAAI,CAAC,IAAI;YACP;QAEF,IAAI,OAAO,GAAG,KAAK;AACnB,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,gCAAgC,CAAC,CAAC;AACrG,QAAA,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AAC/C,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACzB;AACF,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY;AACnC,YAAA,IAAI,CAAC,MAAM;gBACT;YACF,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE;gBAC1C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;gBACnC,OAAO,GAAG,IAAI;YAChB;QACF;AAEA,QAAA,IAAI,CAAC,OAAO;YACV;QAEF,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,OAAO,MAAM,KAAK,WAAW;YAC/B;AAEF,QAAA,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,gBAAgB;AACrC,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI;AAC/B,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAE5C,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,YAAA,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACpC,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,MAAM,iBAAiB,CAAC,KAAa,EAAA;AAC3C,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB;YACjC;AAEF,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAuB;AACjI,QAAA,IAAI,CAAC,IAAI;YACP;AAEF,QAAA,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE;YAC7C,KAAK,EAAE,IAAI,CAAC,cAAc;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,aAAa,EAAE,IAAI,CAAC,sBAAsB;AAC1C,YAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI;AACxC,YAAA,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,IAAI;YAChD,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,YAAA,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,WAAW,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC,gBAAgB;AACnD,SAAA,CAAC;AAEF,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE;YACnC,MAAM,CAAC,OAAO,EAAE;YAChB;QACF;AAEA,QAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM;QAC/B,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE;AACjC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAE7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAuB;AACjI,QAAA,IAAI,IAAI;YACN,+BAA+B,CAAC,IAAI,CAAC;IACzC;;AAGQ,IAAA,iCAAiC,CAAC,IAAa,EAAA;AACrD,QAAA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;AACnC,YAAA,OAAO,KAAK;AACd,QAAA,MAAM,IAAI,GAAI,IAAgC,CAAC,IAAI;AACnD,QAAA,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,qBAAqB,CAAC,qCAAqC,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1G;IAEQ,yCAAyC,GAAA;AAC/C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,QAAA,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC;IAC1D;AAEQ,IAAA,iBAAiB,CAAC,IAAa,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;AACnC,YAAA,OAAO,CAAC;QACV,MAAM,MAAM,GAAG,IAA+B;AAC9C,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI;QAC1D,IAAI,OAAO,MAAM,KAAK,QAAQ;YAC5B,OAAO,MAAM,CAAC,MAAM;AACtB,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAChC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAa,EAAE,KAAc,KAAK,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACrG,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAC1B,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACtB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAa,EAAE,IAAa,KAAK,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChG,QAAA,OAAO,CAAC;IACV;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM;YACpB,OAAQ,IAAI,CAAC,KAAmB,CAAC,MAAM,CAAS,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;;QAG3G,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;IACpC;IAEQ,4BAA4B,GAAA;QAClC,IAAI,CAAC,IAAI,CAAC,uBAAuB;YAC/B;AACF,QAAA,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC1C,QAAA,IAAI,CAAC,uBAAuB,GAAG,SAAS;IAC1C;AAEQ,IAAA,eAAe,CAAC,IAAiB,EAAA;QACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE;AACnE,YAAA,UAAU,CAAC,IAAI,EAAA;AACb,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE;AACnC,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBACd,OAAO,UAAU,CAAC,aAAa;AACjC,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;AACjC,gBAAA,IAAI,CAAC,MAAM;oBACT,OAAO,UAAU,CAAC,aAAa;AACjC,gBAAA,IAAI,MAAM,CAAC,OAAO,CAAC,8OAA8O,CAAC;oBAChQ,OAAO,UAAU,CAAC,aAAa;gBACjC,OAAO,UAAU,CAAC,aAAa;YACjC,CAAC;AACF,SAAA,CAAC;QACF,IAAI,IAAI,GAAgB,IAAI;AAC5B,QAAA,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE;QAC/B,OAAO,OAAO,EAAE;YACd,IAAI,GAAG,OAAe;AACtB,YAAA,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE;QAC7B;AACA,QAAA,OAAO,IAAI;IACb;IAEQ,8BAA8B,GAAA;QACpC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,aAAa;YACzI;AACF,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AACvC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAC7C,IAAI,IAAI,GAAG,CAAC;QACZ,IAAI,GAAG,GAAG,CAAC;QACX,IAAI,MAAM,GAAG,EAAE;AAEf,QAAA,IAAI,QAAQ,EAAE,WAAW,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE;AACpC,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM;AACvC,YAAA,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AAC9C,YAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC3B,YAAA,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,cAAc,KAAK;AAC5C,kBAAE,KAAK,CAAC,cAAc;kBACpB,SAAS;AACb,YAAA,MAAM,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,aAAa,EAAE,qBAAqB,EAAE;YACzF,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU;AACnD,gBAAA,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS;AAC9C,gBAAA,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM;YAChC;YACA,KAAK,CAAC,MAAM,EAAE;QAChB;QAEA,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,GAAA,CAAK;QACnF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,MAAM,IAAI;IACrC;IAEQ,2BAA2B,GAAA;AACjC,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ;YAChD;;;AAIF,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;YACjC,IAAI,CAAC,4BAA4B,EAAE;YACnC;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACpD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,yCAAyC,EAAE;AACtE,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,CAAC,aAAa,IAAI,UAAU,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACjG,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,CAAC,aAAa;AAC7C,gBAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACnC,YAAA,IAAI,CAAC,2BAA2B,GAAG,UAAU;YAC7C;QACF;AAEA,QAAA,IAAI,CAAC,2BAA2B,GAAG,UAAU;AAC7C,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;QAChC,IAAI,CAAC,4BAA4B,EAAE;QACnC,qBAAqB,CAAC,MAAK;YACzB,IAAI,CAAC,8BAA8B,EAAE;AACvC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACjC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB,CAAC,EAAE,IAAI,CAAC;IACV;+GA/9BW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,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,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAjErB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iCAAiC;AAC1C,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACrD,aAAA;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA/DS,YAAY,gQAAE,mBAAmB,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAkEhC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBArEjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;AAC5C,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iCAAiC;AAC1C,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACrD,yBAAA;AACF,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBAUE,SAAS;uBAAC,MAAM;;sBAChB,SAAS;uBAAC,kBAAkB;;sBAE5B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;;ACvKH,SAASoB,oBAAkB,CAAC,KAAU,EAAA;AACpC,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC9B;AAEM,SAAU,yBAAyB,CAAC,OAA8B,EAAA;AACtE,IAAA,MAAM,IAAI,GAAuB,OAAO,CAAC,IAAI,IAAI,SAAS;AAC1D,IAAA,MAAM,aAAa,GAAG;AACpB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,IAAI,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;KACjC;AAED,IAAA,MAAM,oBAAoB,GAAGA,oBAAkB,CAAC,aAAa,CAAC;IAC9D,MAAM,eAAe,GAAGA,oBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC5D,IAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,GAAGA,oBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;AAEzF,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO;;;;;;;;;;;;;;;;;;;mCAmBwB,eAAe,CAAA;;4BAEtB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAuCzB,oBAAoB;;;;;;;;CAQtC,CAAC,SAAS,EAAE;IACX;IAEA,OAAO;;;;;;;;;;;;;;;;oBAgBW,eAAe,CAAA;wBACX,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAwCrB,oBAAoB;;;;;;;;CAQtC,CAAC,SAAS,EAAE;AACb;AAEM,SAAU,wBAAwB,CAAC,OAA8B,EAAA;AACrE,IAAA,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,CAAC;AAEjD,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC9F,OAAO;AACL,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,MAAK,EAAE,CAAC;YACjB,MAAM;SACP;IACH;AAEA,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;IACrC,IAAI,OAAO,GAAG,KAAK;IAEnB,MAAM,OAAO,GAAG,MAAK;AACnB,QAAA,IAAI,OAAO;YACT;QACF,OAAO,GAAG,IAAI;AACd,QAAA,IAAI;AACF,YAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;QAC1B;AACA,QAAA,MAAM;;QAEN;AACF,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS;AACtC,IAAA,MAAM,aAAa,GAAG,IAAI,KAAK;AAC7B,UAAG,EAAE,IAAI,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAiB;AAC9D,UAAE,OAAO,CAAC,aAAa;IAEzB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC;AAC7C,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI;AACF,YAAA,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACnD;AACA,QAAA,MAAM;;QAEN;IACF;AAEA,IAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;AACpC;;AC9MA,SAAS,kBAAkB,CAAC,KAAU,EAAA;AACpC,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC9B;AAEM,SAAU,2BAA2B,CAAC,OAAgC,EAAA;AAC1E,IAAA,MAAM,IAAI,GAAyB,OAAO,CAAC,IAAI,IAAI,QAAQ;IAC3D,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC;IAChE,MAAM,WAAW,GAAG,kBAAkB,CAAC;AACrC,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,aAAa,EAAE,QAAQ;AACvB,QAAA,SAAS,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;AAChC,QAAA,IAAI,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;AACrC,KAAA,CAAC;AAEF,IAAA,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA+FK,WAAW,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CrC,CAAC,SAAS,EAAE;AAEX,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO;EACT,WAAW;;;;;;;;;mCASsB,iBAAiB,CAAA;;;;;;;;;;;;;CAanD,CAAC,SAAS,EAAE;IACX;IAEA,OAAO;EACP,WAAW;;;;;;oBAMO,iBAAiB,CAAA;;;;;;;;;;CAUpC,CAAC,SAAS,EAAE;AACb;AAEM,SAAU,0BAA0B,CAAC,OAAgC,EAAA;AACzE,IAAA,MAAM,MAAM,GAAG,2BAA2B,CAAC,OAAO,CAAC;AAEnD,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC9F,OAAO;AACL,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,MAAK,EAAE,CAAC;YACjB,MAAM;SACP;IACH;AAEA,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;IACrC,IAAI,OAAO,GAAG,KAAK;IAEnB,MAAM,OAAO,GAAG,MAAK;AACnB,QAAA,IAAI,OAAO;YACT;QACF,OAAO,GAAG,IAAI;AACd,QAAA,IAAI;AACF,YAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;QAC1B;AACA,QAAA,MAAM;;QAEN;AACF,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ;AACrC,IAAA,MAAM,aAAa,GAAG,IAAI,KAAK;AAC7B,UAAG,EAAE,IAAI,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAiB;AAC9D,UAAE,OAAO,CAAC,aAAa;IAEzB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC;AAC7C,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI;AACF,YAAA,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACnD;AACA,QAAA,MAAM;;QAEN;IACF;AAEA,IAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;AACpC;;ACnQA;;AAEG;;;;"}