@absolutejs/absolute 0.19.0-beta.608 → 0.19.0-beta.609
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/client/index.js +8 -2
- package/dist/ai/client/index.js.map +4 -4
- package/dist/ai/client/ui.js +8 -2
- package/dist/ai/client/ui.js.map +4 -4
- package/dist/ai/index.js +8 -2
- package/dist/ai/index.js.map +5 -5
- package/dist/ai/rag/quality.js +8 -2
- package/dist/ai/rag/quality.js.map +3 -3
- package/dist/ai/rag/ui.js +8 -2
- package/dist/ai/rag/ui.js.map +4 -4
- package/dist/ai-client/angular/ai/index.js +7 -1
- package/dist/ai-client/react/ai/index.js +7 -1
- package/dist/ai-client/vue/ai/index.js +7 -1
- package/dist/angular/ai/index.js +8 -2
- package/dist/angular/ai/index.js.map +4 -4
- package/dist/angular/index.js +2 -2
- package/dist/angular/index.js.map +1 -1
- package/dist/angular/server.js +2 -2
- package/dist/angular/server.js.map +1 -1
- package/dist/build.js +2 -2
- package/dist/build.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/react/ai/index.js +8 -2
- package/dist/react/ai/index.js.map +4 -4
- package/dist/svelte/ai/index.js +8 -2
- package/dist/svelte/ai/index.js.map +4 -4
- package/dist/types/ai.d.ts +2 -0
- package/dist/vue/ai/index.js +8 -2
- package/dist/vue/ai/index.js.map +4 -4
- package/package.json +1 -1
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
"import type { AIServerMessage } from '../../types/ai';\nimport { isValidAIClientMessage } from '../../types/typeGuards';\n\nexport const generateId = () => crypto.randomUUID();\n\nexport const parseAIMessage = (raw: unknown) => {\n\tif (raw === null || raw === undefined) {\n\t\treturn null;\n\t}\n\n\tlet text: string;\n\n\tif (typeof raw === 'string') {\n\t\ttext = raw;\n\t} else if (raw instanceof ArrayBuffer) {\n\t\ttext = new TextDecoder().decode(raw);\n\t} else if (ArrayBuffer.isView(raw)) {\n\t\ttext = new TextDecoder().decode(raw);\n\t} else if (typeof raw === 'object') {\n\t\tif (isValidAIClientMessage(raw)) {\n\t\t\treturn raw;\n\t\t}\n\n\t\treturn null;\n\t} else {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst parsed: unknown = JSON.parse(text);\n\n\t\tif (isValidAIClientMessage(parsed)) {\n\t\t\treturn parsed;\n\t\t}\n\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nexport const serializeAIMessage = (msg: AIServerMessage) => JSON.stringify(msg);\n",
|
|
12
12
|
"import { computed, Injectable } from '@angular/core';\nimport { RAGStreamService } from './ai-rag-stream.service';\n\n@Injectable({ providedIn: 'root' })\nexport class RAGWorkflowService extends RAGStreamService {\n\tconnect(path: string, conversationId?: string) {\n\t\tconst stream = super.connect(path, conversationId);\n\n\t\treturn {\n\t\t\t...stream,\n\t\t\tstate: computed(() => stream.workflow())\n\t\t};\n\t}\n}\n",
|
|
13
13
|
"import { computed, Injectable } from '@angular/core';\nimport {\n\tbuildRAGAnswerWorkflowState,\n\tbuildRAGStreamProgress\n} from '../../ai/rag/workflowState';\nimport { AIStreamService } from './ai-stream.service';\n\n@Injectable({ providedIn: 'root' })\nexport class RAGStreamService extends AIStreamService {\n\tconnect(path: string, conversationId?: string) {\n\t\tconst stream = super.connect(path, conversationId);\n\n\t\tconst workflow = computed(() =>\n\t\t\tbuildRAGAnswerWorkflowState({\n\t\t\t\terror: stream.error(),\n\t\t\t\tisStreaming: stream.isStreaming(),\n\t\t\t\tmessages: stream.messages()\n\t\t\t})\n\t\t);\n\t\tconst progress = computed(() =>\n\t\t\tbuildRAGStreamProgress({\n\t\t\t\terror: stream.error(),\n\t\t\t\tisStreaming: stream.isStreaming(),\n\t\t\t\tmessages: stream.messages()\n\t\t\t})\n\t\t);\n\t\tconst latestAssistantMessage = computed(\n\t\t\t() => workflow().latestAssistantMessage\n\t\t);\n\t\tconst sources = computed(() => workflow().sources);\n\t\tconst sourceGroups = computed(() => workflow().sourceGroups);\n\t\tconst citations = computed(() => workflow().citations);\n\t\tconst sourceSummaries = computed(() => workflow().sourceSummaries);\n\t\tconst citationReferenceMap = computed(\n\t\t\t() => workflow().citationReferenceMap\n\t\t);\n\t\tconst retrieval = computed(() => workflow().retrieval);\n\t\tconst groundedAnswer = computed(() => workflow().groundedAnswer);\n\t\tconst groundingReferences = computed(\n\t\t\t() => workflow().groundingReferences\n\t\t);\n\t\tconst hasRetrieved = computed(() => workflow().hasRetrieved);\n\t\tconst hasSources = computed(() => workflow().hasSources);\n\t\tconst isRetrieving = computed(() => workflow().isRetrieving);\n\t\tconst isRetrieved = computed(() => workflow().isRetrieved);\n\t\tconst isAnswerStreaming = computed(() => workflow().isAnswerStreaming);\n\t\tconst isComplete = computed(() => workflow().isComplete);\n\t\tconst isError = computed(() => workflow().isError);\n\t\tconst isRunning = computed(() => workflow().isRunning);\n\t\tconst stage = computed(() => workflow().stage);\n\n\t\treturn {\n\t\t\t...stream,\n\t\t\tcitations,\n\t\t\tcitationReferenceMap,\n\t\t\tgroundedAnswer,\n\t\t\tgroundingReferences,\n\t\t\thasRetrieved,\n\t\t\thasSources,\n\t\t\tisAnswerStreaming,\n\t\t\tisComplete,\n\t\t\tisError,\n\t\t\tisRetrieved,\n\t\t\tisRetrieving,\n\t\t\tisRunning,\n\t\t\tlatestAssistantMessage,\n\t\t\tprogress,\n\t\t\tquery: stream.send,\n\t\t\tretrieval,\n\t\t\tsourceGroups,\n\t\t\tsourceSummaries,\n\t\t\tsources,\n\t\t\tstage,\n\t\t\tworkflow\n\t\t};\n\t}\n}\n",
|
|
14
|
-
"import type {\n\tRAGCitation,\n\tRAGCitationReferenceMap,\n\tRAGGroundedAnswer,\n\tRAGGroundedAnswerCitationDetail,\n\tRAGGroundedAnswerSectionSummary,\n\tRAGGroundingReference,\n\tRAGSource\n} from '../../../types/ai';\n\nconst getContextString = (value: unknown) =>\n\ttypeof value === 'string' && value.trim().length > 0\n\t\t? value.trim()\n\t\t: undefined;\n\nconst getContextNumber = (value: unknown) =>\n\ttypeof value === 'number' && Number.isFinite(value) ? value : undefined;\n\nconst getAttachmentName = (source?: string, title?: string) => {\n\tconst sourceAttachment = source?.split('/').at(-1);\n\tif (sourceAttachment && sourceAttachment.includes('.')) {\n\t\treturn sourceAttachment;\n\t}\n\n\tconst titleAttachment = title?.split(' · ').at(-1);\n\tif (titleAttachment && titleAttachment.includes('.')) {\n\t\treturn titleAttachment;\n\t}\n\n\treturn undefined;\n};\n\nconst buildContextLabel = (metadata?: Record<string, unknown>) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst emailKind = getContextString(metadata.emailKind);\n\tif (emailKind === 'attachment') {\n\t\treturn 'Attachment evidence';\n\t}\n\n\tif (emailKind === 'message') {\n\t\tconst from = getContextString(metadata.from);\n\t\treturn from ? `Message from ${from}` : 'Message evidence';\n\t}\n\n\tconst page =\n\t\tgetContextNumber(metadata.page) ??\n\t\tgetContextNumber(metadata.pageNumber) ??\n\t\t(typeof metadata.pageIndex === 'number'\n\t\t\t? metadata.pageIndex + 1\n\t\t\t: undefined);\n\tconst region =\n\t\tgetContextNumber(metadata.regionNumber) ??\n\t\t(typeof metadata.regionIndex === 'number'\n\t\t\t? metadata.regionIndex + 1\n\t\t\t: undefined);\n\tif (page && region) {\n\t\treturn `Page ${page} region ${region}`;\n\t}\n\tif (page) {\n\t\treturn `Page ${page}`;\n\t}\n\n\tconst sheet =\n\t\tgetContextString(metadata.sheetName) ??\n\t\t(Array.isArray(metadata.sheetNames)\n\t\t\t? getContextString(metadata.sheetNames[0])\n\t\t\t: undefined);\n\tif (sheet) {\n\t\treturn `Sheet ${sheet}`;\n\t}\n\n\tconst slide =\n\t\tgetContextNumber(metadata.slide) ??\n\t\tgetContextNumber(metadata.slideNumber) ??\n\t\t(typeof metadata.slideIndex === 'number'\n\t\t\t? metadata.slideIndex + 1\n\t\t\t: undefined);\n\tif (slide) {\n\t\treturn `Slide ${slide}`;\n\t}\n\n\tconst archiveEntry =\n\t\tgetContextString(metadata.archiveEntryPath) ??\n\t\tgetContextString(metadata.entryPath);\n\tif (archiveEntry) {\n\t\treturn `Archive entry ${archiveEntry}`;\n\t}\n\n\tconst threadTopic = getContextString(metadata.threadTopic);\n\tif (threadTopic) {\n\t\treturn `Thread ${threadTopic}`;\n\t}\n\n\tconst speaker = getContextString(metadata.speaker);\n\tif (speaker) {\n\t\treturn `Speaker ${speaker}`;\n\t}\n\n\tconst sectionPath = Array.isArray(metadata.sectionPath)\n\t\t? metadata.sectionPath\n\t\t\t\t.map((value) => getContextString(value))\n\t\t\t\t.filter((value): value is string => typeof value === 'string')\n\t\t: [];\n\tconst sectionTitle =\n\t\tgetContextString(metadata.sectionTitle) ?? sectionPath.at(-1);\n\tif (sectionTitle) {\n\t\treturn `Section ${sectionTitle}`;\n\t}\n\n\treturn undefined;\n};\n\nconst formatMediaTimestamp = (value: unknown) => {\n\tif (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n\t\treturn undefined;\n\t}\n\n\tconst totalSeconds = Math.floor(value / 1000);\n\tconst minutes = Math.floor(totalSeconds / 60);\n\tconst seconds = totalSeconds % 60;\n\tconst milliseconds = Math.floor(value % 1000);\n\n\treturn `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(\n\t\t2,\n\t\t'0'\n\t)}.${String(milliseconds).padStart(3, '0')}`;\n};\n\nconst buildLocatorLabel = (\n\tmetadata?: Record<string, unknown>,\n\tsource?: string,\n\ttitle?: string\n) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst page =\n\t\tgetContextNumber(metadata.page) ??\n\t\tgetContextNumber(metadata.pageNumber) ??\n\t\t(typeof metadata.pageIndex === 'number'\n\t\t\t? metadata.pageIndex + 1\n\t\t\t: undefined);\n\tconst region =\n\t\tgetContextNumber(metadata.regionNumber) ??\n\t\t(typeof metadata.regionIndex === 'number'\n\t\t\t? metadata.regionIndex + 1\n\t\t\t: undefined);\n\tif (page && region) {\n\t\treturn `Page ${page} · Region ${region}`;\n\t}\n\tif (page) {\n\t\treturn `Page ${page}`;\n\t}\n\n\tconst sheet =\n\t\tgetContextString(metadata.sheetName) ??\n\t\t(Array.isArray(metadata.sheetNames)\n\t\t\t? getContextString(metadata.sheetNames[0])\n\t\t\t: undefined);\n\tif (sheet) {\n\t\treturn `Sheet ${sheet}`;\n\t}\n\n\tconst slide =\n\t\tgetContextNumber(metadata.slide) ??\n\t\tgetContextNumber(metadata.slideNumber) ??\n\t\t(typeof metadata.slideIndex === 'number'\n\t\t\t? metadata.slideIndex + 1\n\t\t\t: undefined);\n\tif (slide) {\n\t\treturn `Slide ${slide}`;\n\t}\n\n\tconst archiveEntry =\n\t\tgetContextString(metadata.archiveEntryPath) ??\n\t\tgetContextString(metadata.entryPath);\n\tif (archiveEntry) {\n\t\treturn `Archive entry ${archiveEntry}`;\n\t}\n\n\tconst emailKind = getContextString(metadata.emailKind);\n\tif (emailKind === 'attachment') {\n\t\tconst attachmentName =\n\t\t\tgetContextString(metadata.attachmentName) ??\n\t\t\tgetAttachmentName(source, title);\n\t\treturn attachmentName ? `Attachment ${attachmentName}` : 'Attachment';\n\t}\n\n\tconst mediaStart = formatMediaTimestamp(metadata.startMs);\n\tconst mediaEnd = formatMediaTimestamp(metadata.endMs);\n\tif (mediaStart && mediaEnd) {\n\t\treturn `Timestamp ${mediaStart} - ${mediaEnd}`;\n\t}\n\n\tif (mediaStart) {\n\t\treturn `Timestamp ${mediaStart}`;\n\t}\n\n\tconst sectionPath = Array.isArray(metadata.sectionPath)\n\t\t? metadata.sectionPath\n\t\t\t\t.map((value) => getContextString(value))\n\t\t\t\t.filter((value): value is string => typeof value === 'string')\n\t\t: [];\n\tif (sectionPath.length > 0) {\n\t\treturn `Section ${sectionPath.join(' > ')}`;\n\t}\n\n\treturn undefined;\n};\n\nconst formatTimestampLabel = (value: unknown) => {\n\tconst timestamp =\n\t\ttypeof value === 'number' && Number.isFinite(value)\n\t\t\t? value\n\t\t\t: typeof value === 'string'\n\t\t\t\t? Date.parse(value)\n\t\t\t\t: Number.NaN;\n\tif (!Number.isFinite(timestamp)) {\n\t\treturn undefined;\n\t}\n\n\treturn new Date(timestamp).toLocaleString('en-US', {\n\t\tdateStyle: 'medium',\n\t\ttimeStyle: 'short'\n\t});\n};\n\nconst buildProvenanceLabel = (metadata?: Record<string, unknown>) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst threadTopic = getContextString(metadata.threadTopic);\n\tconst from = getContextString(metadata.from);\n\tconst sentAt =\n\t\tformatTimestampLabel(metadata.sentAt) ??\n\t\tformatTimestampLabel(metadata.receivedAt);\n\tconst speaker = getContextString(metadata.speaker);\n\tconst mediaKind = getContextString(metadata.mediaKind);\n\tconst transcriptSource = getContextString(metadata.transcriptSource);\n\tconst pdfTextMode = getContextString(metadata.pdfTextMode);\n\tconst ocrEngine = getContextString(metadata.ocrEngine);\n\tconst ocrConfidence =\n\t\tgetContextNumber(metadata.ocrRegionConfidence) ??\n\t\tgetContextNumber(metadata.ocrConfidence);\n\n\tconst labels = [\n\t\tpdfTextMode ? `PDF ${pdfTextMode}` : '',\n\t\tocrEngine ? `OCR ${ocrEngine}` : '',\n\t\ttypeof ocrConfidence === 'number'\n\t\t\t? `Confidence ${ocrConfidence.toFixed(2)}`\n\t\t\t: '',\n\t\tmediaKind ? `Media ${mediaKind}` : '',\n\t\ttranscriptSource ? `Transcript ${transcriptSource}` : '',\n\t\tthreadTopic ? `Thread ${threadTopic}` : '',\n\t\tspeaker ? `Speaker ${speaker}` : '',\n\t\tfrom ? `Sender ${from}` : '',\n\t\tsentAt ? `Sent ${sentAt}` : ''\n\t].filter((value) => value.length > 0);\n\n\treturn labels.length > 0 ? labels.join(' · ') : undefined;\n};\n\nconst buildSourceLabel = (source: RAGSource) =>\n\tsource.source ?? source.title ?? source.chunkId;\n\nconst buildExcerpt = (text: string, maxLength = 160) => {\n\tconst normalized = text.replaceAll(/\\s+/g, ' ').trim();\n\tif (normalized.length <= maxLength) {\n\t\treturn normalized;\n\t}\n\n\treturn `${normalized.slice(0, Math.max(0, maxLength - 1)).trimEnd()}…`;\n};\n\nconst selectPreferredExcerpt = (\n\texcerpts?: {\n\t\tchunkExcerpt?: string;\n\t\twindowExcerpt?: string;\n\t\tsectionExcerpt?: string;\n\t},\n\tsectionChunkCount?: number\n) => {\n\tif (!excerpts) {\n\t\treturn '';\n\t}\n\n\tconst chunkExcerpt = excerpts.chunkExcerpt?.trim() ?? '';\n\tconst windowExcerpt = excerpts.windowExcerpt?.trim() ?? '';\n\tconst sectionExcerpt = excerpts.sectionExcerpt?.trim() ?? '';\n\tif (sectionChunkCount && sectionChunkCount > 1 && chunkExcerpt.length > 0 && chunkExcerpt.length < 72) {\n\t\tif (sectionChunkCount <= 3 && sectionExcerpt) {\n\t\t\treturn sectionExcerpt;\n\t\t}\n\t\tif (windowExcerpt) {\n\t\t\treturn windowExcerpt;\n\t\t}\n\t}\n\n\treturn chunkExcerpt || windowExcerpt || sectionExcerpt;\n};\n\nconst buildGroundingChunkExcerpts = (\n\tsources: RAGSource[],\n\tactiveChunkId?: string\n) => {\n\tif (sources.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tconst activeSource =\n\t\t(activeChunkId\n\t\t\t? sources.find((source) => source.chunkId === activeChunkId)\n\t\t\t: undefined) ?? sources[0];\n\tif (!activeSource) {\n\t\treturn undefined;\n\t}\n\n\tconst chunkMap = new Map(sources.map((source) => [source.chunkId, source]));\n\tconst activeMetadata = activeSource.metadata ?? {};\n\tconst previousChunkId = getContextString(activeMetadata.previousChunkId);\n\tconst nextChunkId = getContextString(activeMetadata.nextChunkId);\n\tconst sectionChunkId = getContextString(activeMetadata.sectionChunkId);\n\tconst sectionSources = sectionChunkId\n\t\t? sources\n\t\t\t\t.filter(\n\t\t\t\t\t(source) =>\n\t\t\t\t\t\tgetContextString(source.metadata?.sectionChunkId) ===\n\t\t\t\t\t\tsectionChunkId\n\t\t\t\t)\n\t\t\t\t.sort((left, right) => {\n\t\t\t\t\tconst leftIndex =\n\t\t\t\t\t\tgetContextNumber(left.metadata?.sectionChunkIndex) ??\n\t\t\t\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\t\t\t\tconst rightIndex =\n\t\t\t\t\t\tgetContextNumber(right.metadata?.sectionChunkIndex) ??\n\t\t\t\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\t\t\t\tif (leftIndex !== rightIndex) {\n\t\t\t\t\t\treturn leftIndex - rightIndex;\n\t\t\t\t\t}\n\t\t\t\t\treturn left.chunkId.localeCompare(right.chunkId);\n\t\t\t\t})\n\t\t: [activeSource];\n\tconst collectText = (chunkIds: string[]) =>\n\t\tchunkIds\n\t\t\t.map((chunkId) => chunkMap.get(chunkId)?.text)\n\t\t\t.filter((text): text is string => typeof text === 'string')\n\t\t\t.join('\\n\\n');\n\tconst orderedWindowIds = [previousChunkId, activeSource.chunkId, nextChunkId]\n\t\t.filter((chunkId, index, values): chunkId is string =>\n\t\t\tBoolean(chunkId) && values.indexOf(chunkId) === index\n\t\t);\n\n\treturn {\n\t\tchunkExcerpt: buildExcerpt(activeSource.text, 160),\n\t\tsectionExcerpt: buildExcerpt(\n\t\t\tsectionSources.map((source) => source.text).join('\\n\\n'),\n\t\t\t320\n\t\t),\n\t\twindowExcerpt: buildExcerpt(collectText(orderedWindowIds), 240)\n\t};\n};\n\nconst buildGroundingReferenceEvidenceLabel = (\n\treference: RAGGroundingReference\n) =>\n\t[reference.label, reference.locatorLabel, reference.contextLabel]\n\t\t.filter((value): value is string => Boolean(value && value.length > 0))\n\t\t.filter(\n\t\t\t(value, index, values) =>\n\t\t\t\tvalues.findIndex((entry) => entry === value) === index\n\t\t)\n\t\t.join(' · ');\n\nconst buildGroundingReferenceEvidenceSummary = (\n\treference: RAGGroundingReference\n) =>\n\t[\n\t\treference.source ?? reference.title ?? reference.chunkId,\n\t\treference.locatorLabel,\n\t\treference.contextLabel,\n\t\treference.provenanceLabel\n\t]\n\t\t.filter((value): value is string => Boolean(value && value.length > 0))\n\t\t.filter(\n\t\t\t(value, index, values) =>\n\t\t\t\tvalues.findIndex((entry) => entry === value) === index\n\t\t)\n\t\t.join(' · ');\n\nconst buildGroundingSectionKey = (reference: RAGGroundingReference) =>\n\treference.contextLabel ??\n\treference.locatorLabel ??\n\treference.label ??\n\treference.source ??\n\treference.chunkId;\n\nconst buildGroundingSectionSummaryLine = (reference: RAGGroundingReference) =>\n\t[\n\t\treference.source ?? reference.title ?? reference.chunkId,\n\t\treference.locatorLabel,\n\t\treference.contextLabel,\n\t\treference.provenanceLabel\n\t]\n\t\t.filter((value): value is string => Boolean(value && value.length > 0))\n\t\t.filter(\n\t\t\t(value, index, values) =>\n\t\t\t\tvalues.findIndex((entry) => entry === value) === index\n\t\t)\n\t\t.join(' · ');\n\nconst buildGroundedAnswerCitationDetail = (\n\treference: RAGGroundingReference\n): RAGGroundedAnswerCitationDetail => ({\n\tcontextLabel: reference.contextLabel,\n\tevidenceLabel: buildGroundingReferenceEvidenceLabel(reference),\n\tevidenceSummary: buildGroundingReferenceEvidenceSummary(reference),\n\texcerpt:\n\t\tselectPreferredExcerpt(\n\t\t\treference.excerpts,\n\t\t\tgetContextNumber(reference.metadata?.sectionChunkCount)\n\t\t) || reference.excerpt,\n\texcerpts: reference.excerpts,\n\tlabel: reference.label,\n\tlocatorLabel: reference.locatorLabel,\n\tnumber: reference.number,\n\tprovenanceLabel: reference.provenanceLabel,\n\tsource: reference.source,\n\ttitle: reference.title\n});\n\nexport const buildRAGCitationReferenceMap = (\n\tcitations: RAGCitation[]\n): RAGCitationReferenceMap =>\n\tObject.fromEntries(\n\t\tcitations.map((citation, index) => [citation.chunkId, index + 1])\n\t);\n\nexport const buildRAGCitations = (sources: RAGSource[]) => {\n\tconst unique = new Map<string, RAGCitation>();\n\n\tfor (const source of sources) {\n\t\tconst key = source.chunkId;\n\t\tconst existing = unique.get(key);\n\t\tconst hasBetterExisting =\n\t\t\texisting !== undefined && existing.score >= source.score;\n\t\tif (hasBetterExisting) continue;\n\n\t\tunique.set(key, {\n\t\t\tchunkId: source.chunkId,\n\t\t\tcontextLabel:\n\t\t\t\tsource.labels?.contextLabel ??\n\t\t\t\tbuildContextLabel(source.metadata),\n\t\t\tkey,\n\t\t\tlabel: buildSourceLabel(source),\n\t\t\tlocatorLabel:\n\t\t\t\tsource.labels?.locatorLabel ??\n\t\t\t\tbuildLocatorLabel(source.metadata, source.source, source.title),\n\t\t\tmetadata: source.metadata,\n\t\t\tprovenanceLabel:\n\t\t\t\tsource.labels?.provenanceLabel ??\n\t\t\t\tbuildProvenanceLabel(source.metadata),\n\t\t\tscore: source.score,\n\t\t\tsource: source.source,\n\t\t\ttext: source.text,\n\t\t\ttitle: source.title\n\t\t});\n\t}\n\n\treturn [...unique.values()].sort((left, right) => {\n\t\tif (right.score !== left.score) {\n\t\t\treturn right.score - left.score;\n\t\t}\n\n\t\treturn left.label.localeCompare(right.label);\n\t});\n};\n\nexport const buildRAGGroundedAnswer = (\n\tcontent: string,\n\tsources: RAGSource[]\n): RAGGroundedAnswer => {\n\tconst references = buildRAGGroundingReferences(sources);\n\tconst referenceMap = new Map(\n\t\treferences.map((reference) => [reference.number, reference])\n\t);\n\tconst parts: RAGGroundedAnswer['parts'] = [];\n\tconst ungroundedReferenceNumbers = new Set<number>();\n\tconst citationPattern = /\\[(\\d+(?:\\s*,\\s*\\d+)*)\\]/g;\n\tlet cursor = 0;\n\n\tfor (const match of content.matchAll(citationPattern)) {\n\t\tconst raw = match[0];\n\t\tconst numbers = (match[1] ?? '')\n\t\t\t.split(',')\n\t\t\t.map((value) => Number.parseInt(value.trim(), 10))\n\t\t\t.filter((value) => Number.isInteger(value) && value > 0);\n\t\tconst start = match.index ?? cursor;\n\t\tif (start > cursor) {\n\t\t\tparts.push({\n\t\t\t\ttext: content.slice(cursor, start),\n\t\t\t\ttype: 'text'\n\t\t\t});\n\t\t}\n\n\t\tconst resolvedReferences = numbers\n\t\t\t.map((number) => referenceMap.get(number))\n\t\t\t.filter((reference): reference is RAGGroundingReference =>\n\t\t\t\tBoolean(reference)\n\t\t\t);\n\t\tfor (const number of numbers) {\n\t\t\tif (!referenceMap.has(number)) {\n\t\t\t\tungroundedReferenceNumbers.add(number);\n\t\t\t}\n\t\t}\n\t\tconst unresolvedNumbers = numbers.filter(\n\t\t\t(number) => !referenceMap.has(number)\n\t\t);\n\n\t\tparts.push({\n\t\t\treferenceNumbers: numbers,\n\t\t\treferenceDetails: resolvedReferences.map(\n\t\t\t\tbuildGroundedAnswerCitationDetail\n\t\t\t),\n\t\t\treferences: resolvedReferences,\n\t\t\ttext: raw,\n\t\t\ttype: 'citation',\n\t\t\tunresolvedReferenceNumbers: unresolvedNumbers\n\t\t});\n\t\tcursor = start + raw.length;\n\t}\n\n\tif (cursor < content.length || parts.length === 0) {\n\t\tparts.push({\n\t\t\ttext: content.slice(cursor),\n\t\t\ttype: 'text'\n\t\t});\n\t}\n\n\tconst hasCitations = parts.some((part) => part.type === 'citation');\n\tconst coverage: RAGGroundedAnswer['coverage'] = !hasCitations\n\t\t? 'ungrounded'\n\t\t: ungroundedReferenceNumbers.size === 0\n\t\t\t? 'grounded'\n\t\t\t: references.length > 0\n\t\t\t\t? 'partial'\n\t\t\t\t: 'ungrounded';\n\n\treturn {\n\t\tcontent,\n\t\tcoverage,\n\t\thasCitations,\n\t\tparts,\n\t\treferences,\n\t\tsectionSummaries: buildRAGGroundedAnswerSectionSummaries(references),\n\t\tungroundedReferenceNumbers: [...ungroundedReferenceNumbers].sort(\n\t\t\t(left, right) => left - right\n\t\t)\n\t};\n};\n\nexport const buildRAGGroundedAnswerSectionSummaries = (\n\treferences: RAGGroundingReference[]\n): RAGGroundedAnswerSectionSummary[] => {\n\tconst groups = new Map<string, RAGGroundedAnswerSectionSummary>();\n\n\tfor (const reference of references) {\n\t\tconst key = buildGroundingSectionKey(reference);\n\t\tconst existing = groups.get(key);\n\t\tif (!existing) {\n\t\t\tconst excerpts = reference.excerpts\n\t\t\t\t? {\n\t\t\t\t\t\tchunkExcerpt: reference.excerpts.chunkExcerpt,\n\t\t\t\t\t\tsectionExcerpt: reference.excerpts.sectionExcerpt,\n\t\t\t\t\t\twindowExcerpt: reference.excerpts.windowExcerpt\n\t\t\t\t\t}\n\t\t\t\t: undefined;\n\t\t\tgroups.set(key, {\n\t\t\t\tchunkIds: [reference.chunkId],\n\t\t\t\tcontextLabel: reference.contextLabel,\n\t\t\t\tcount: 1,\n\t\t\t\texcerpt:\n\t\t\t\t\tselectPreferredExcerpt(\n\t\t\t\t\t\texcerpts,\n\t\t\t\t\t\tgetContextNumber(reference.metadata?.sectionChunkCount)\n\t\t\t\t\t) || excerpts?.sectionExcerpt || reference.excerpt,\n\t\t\t\texcerpts,\n\t\t\t\tkey,\n\t\t\t\tlabel: key,\n\t\t\t\tlocatorLabel: reference.locatorLabel,\n\t\t\t\tprovenanceLabel: reference.provenanceLabel,\n\t\t\t\treferenceNumbers: [reference.number],\n\t\t\t\treferences: [reference],\n\t\t\t\tsummary:\n\t\t\t\t\tbuildGroundingSectionSummaryLine(reference) ||\n\t\t\t\t\treference.label ||\n\t\t\t\t\treference.chunkId\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\texisting.count += 1;\n\t\tif (!existing.chunkIds.includes(reference.chunkId)) {\n\t\t\texisting.chunkIds.push(reference.chunkId);\n\t\t}\n\t\tif (!existing.referenceNumbers.includes(reference.number)) {\n\t\t\texisting.referenceNumbers.push(reference.number);\n\t\t}\n\t\texisting.references.push(reference);\n\t\tif (!existing.contextLabel && reference.contextLabel) {\n\t\t\texisting.contextLabel = reference.contextLabel;\n\t\t}\n\t\tif (!existing.locatorLabel && reference.locatorLabel) {\n\t\t\texisting.locatorLabel = reference.locatorLabel;\n\t\t}\n\t\tif (!existing.provenanceLabel && reference.provenanceLabel) {\n\t\t\texisting.provenanceLabel = reference.provenanceLabel;\n\t\t}\n\t\tif (!existing.excerpts && reference.excerpts) {\n\t\t\texisting.excerpts = {\n\t\t\t\tchunkExcerpt: reference.excerpts.chunkExcerpt,\n\t\t\t\tsectionExcerpt: reference.excerpts.sectionExcerpt,\n\t\t\t\twindowExcerpt: reference.excerpts.windowExcerpt\n\t\t\t};\n\t\t\texisting.excerpt = reference.excerpts.sectionExcerpt;\n\t\t}\n\t}\n\n\treturn [...groups.values()]\n\t\t.map((group) => ({\n\t\t\t...group,\n\t\t\treferenceNumbers: [...group.referenceNumbers].sort(\n\t\t\t\t(left, right) => left - right\n\t\t\t),\n\t\t\treferences: group.references\n\t\t\t\t.slice()\n\t\t\t\t.sort((left, right) => left.number - right.number)\n\t\t}))\n\t\t.sort((left, right) => {\n\t\t\tconst leftFirst =\n\t\t\t\tleft.referenceNumbers[0] ?? Number.POSITIVE_INFINITY;\n\t\t\tconst rightFirst =\n\t\t\t\tright.referenceNumbers[0] ?? Number.POSITIVE_INFINITY;\n\t\t\tif (leftFirst !== rightFirst) {\n\t\t\t\treturn leftFirst - rightFirst;\n\t\t\t}\n\t\t\treturn left.label.localeCompare(right.label);\n\t\t});\n};\n\nexport const buildRAGGroundingReferences = (sources: RAGSource[]) => {\n\tconst citations = buildRAGCitations(sources);\n\tconst citationReferenceMap = buildRAGCitationReferenceMap(citations);\n\n\treturn citations.map<RAGGroundingReference>((citation) => {\n\t\tconst excerpts = buildGroundingChunkExcerpts(sources, citation.chunkId);\n\t\treturn {\n\t\t\tchunkId: citation.chunkId,\n\t\t\tcontextLabel:\n\t\t\t\tcitation.contextLabel ?? buildContextLabel(citation.metadata),\n\t\t\texcerpt:\n\t\t\t\tselectPreferredExcerpt(\n\t\t\t\t\texcerpts,\n\t\t\t\t\tgetContextNumber(citation.metadata?.sectionChunkCount)\n\t\t\t\t) || excerpts?.chunkExcerpt || buildExcerpt(citation.text),\n\t\t\texcerpts,\n\t\t\tlabel: citation.label,\n\t\t\tlocatorLabel:\n\t\t\t\tcitation.locatorLabel ??\n\t\t\t\tbuildLocatorLabel(\n\t\t\t\t\tcitation.metadata,\n\t\t\t\t\tcitation.source,\n\t\t\t\t\tcitation.title\n\t\t\t\t),\n\t\t\tmetadata: citation.metadata,\n\t\t\tnumber: citationReferenceMap[citation.chunkId] ?? 0,\n\t\t\tprovenanceLabel:\n\t\t\t\tcitation.provenanceLabel ??\n\t\t\t\tbuildProvenanceLabel(citation.metadata),\n\t\t\tscore: citation.score,\n\t\t\tsource: citation.source,\n\t\t\ttext: citation.text,\n\t\t\ttitle: citation.title\n\t\t};\n\t});\n};\n",
|
|
15
|
-
"import type {\n\tRAGAdminActionPresentation,\n\tRAGAdminActionRecord,\n\tRAGAdminJobPresentation,\n\tRAGAdminJobRecord,\n\tAIMessage,\n\tRAGAnswerGroundingCaseSnapshotPresentation,\n\tRAGAnswerGroundingEvaluationCaseDiff,\n\tRAGAnswerGroundingEvaluationHistory,\n\tRAGAnswerGroundingEvaluationResponse,\n\tRAGCorpusHealth,\n\tRAGCorpusHealthPresentation,\n\tRAGExtractorReadiness,\n\tRAGReadinessPresentation,\n\tRAGGroundingOverviewPresentation,\n\tRAGGroundingProviderCaseComparisonPresentation,\n\tRAGGroundingProviderOverviewPresentation,\n\tRAGGroundingProviderPresentation,\n\tRAGComparisonOverviewPresentation,\n\tRAGComparisonPresentation,\n\tRAGChunkGraph,\n\tRAGChunkExcerpts,\n\tRAGChunkGraphEdge,\n\tRAGChunkGraphNavigation,\n\tRAGChunkGraphNode,\n\tRAGChunkGraphSectionGroup,\n\tRAGChunkStructure,\n\tRAGDocumentChunkPreview,\n\tRAGLabelValueRow,\n\tRAGRerankerComparisonEntry,\n\tRAGRetrievalComparison,\n\tRAGRetrievalComparisonEntry,\n\tRAGRetrievalTraceHistoryWindow,\n\tRAGRetrievalTraceStep,\n\tRAGRetrievalTrace,\n\tRAGHybridRetrievalMode,\n\tRAGSourceBalanceStrategy,\n\tRAGQualityOverviewPresentation,\n\tRAGEvaluationCaseDiff,\n\tRAGEvaluationCaseTracePresentation,\n\tRAGEvaluationHistory,\n\tRAGAnswerGroundingHistoryPresentation,\n\tRAGEvaluationResponse,\n\tRAGEvaluationHistoryPresentation,\n\tRAGEvaluationHistoryStore,\n\tRAGRerankerComparison,\n\tRAGAnswerWorkflowState,\n\tRAGRetrievalTracePresentation,\n\tRAGSource,\n\tRAGSourceLabels,\n\tRAGSourceGroup,\n\tRAGSourceSummary,\n\tRAGStreamStage,\n\tRAGSyncOverviewPresentation,\n\tRAGSyncSourcePresentation,\n\tRAGSyncSourceRecord,\n\tRAGSyncSourceRunPresentation\n} from '../../../types/ai';\nimport {\n\tbuildRAGCitationReferenceMap,\n\tbuildRAGCitations,\n\tbuildRAGGroundedAnswer,\n\tbuildRAGGroundedAnswerSectionSummaries,\n\tbuildRAGGroundingReferences\n} from './grounding';\n\nexport {\n\tbuildRAGCitationReferenceMap,\n\tbuildRAGCitations,\n\tbuildRAGGroundedAnswer,\n\tbuildRAGGroundedAnswerSectionSummaries,\n\tbuildRAGGroundingReferences\n};\n\nconst buildSourceGroupKey = (source: RAGSource) =>\n\tsource.source ?? source.title ?? source.chunkId;\n\nconst buildSourceLabel = (source: RAGSource) =>\n\tsource.source ?? source.title ?? source.chunkId;\n\nconst getContextNumber = (value: unknown) =>\n\ttypeof value === 'number' && Number.isFinite(value) ? value : undefined;\n\nconst getContextString = (value: unknown) =>\n\ttypeof value === 'string' && value.trim().length > 0\n\t\t? value.trim()\n\t\t: undefined;\n\nconst isRAGRetrievalTrace = (value: unknown): value is RAGRetrievalTrace => {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tconst candidate = value as Record<string, unknown>;\n\n\treturn (\n\t\ttypeof candidate.query === 'string' &&\n\t\ttypeof candidate.transformedQuery === 'string' &&\n\t\tArray.isArray(candidate.variantQueries) &&\n\t\tArray.isArray(candidate.steps)\n\t);\n};\n\nconst formatTimestampLabel = (value: unknown) => {\n\tconst timestamp =\n\t\ttypeof value === 'number' && Number.isFinite(value)\n\t\t\t? value\n\t\t\t: typeof value === 'string'\n\t\t\t\t? Date.parse(value)\n\t\t\t\t: Number.NaN;\n\tif (!Number.isFinite(timestamp)) {\n\t\treturn undefined;\n\t}\n\n\treturn new Date(timestamp).toLocaleString('en-US', {\n\t\tdateStyle: 'medium',\n\t\ttimeStyle: 'short'\n\t});\n};\n\nconst formatRAGTraceValue = (value: unknown): string => {\n\tif (typeof value === 'string') return value;\n\tif (typeof value === 'number' || typeof value === 'boolean') {\n\t\treturn String(value);\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.join(', ');\n\t}\n\tif (value && typeof value === 'object') {\n\t\treturn JSON.stringify(value);\n\t}\n\treturn 'n/a';\n};\n\nexport const buildRAGRetrievalTracePresentation = (\n\ttrace?: RAGRetrievalTrace\n): RAGRetrievalTracePresentation => {\n\tif (!trace) {\n\t\treturn {\n\t\t\tdetails: [],\n\t\t\tstats: [],\n\t\t\tsteps: []\n\t\t};\n\t}\n\n\tconst stats: RAGLabelValueRow[] = [\n\t\t{ label: 'Mode', value: trace.mode },\n\t\t{ label: 'Final Results', value: String(trace.resultCounts.final) },\n\t\t{\n\t\t\tlabel: 'Vector Candidates',\n\t\t\tvalue: String(trace.resultCounts.vector)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Lexical Candidates',\n\t\t\tvalue: String(trace.resultCounts.lexical)\n\t\t}\n\t];\n\tconst details: RAGLabelValueRow[] = [\n\t\t{ label: 'Transformed query', value: trace.transformedQuery },\n\t\t{\n\t\t\tlabel: 'Variant queries',\n\t\t\tvalue:\n\t\t\t\ttrace.variantQueries.length > 0\n\t\t\t\t\t? trace.variantQueries.join(' · ')\n\t\t\t\t\t: 'none'\n\t\t},\n\t\t{ label: 'Candidate topK', value: String(trace.candidateTopK) },\n\t\t{ label: 'Lexical topK', value: String(trace.lexicalTopK) }\n\t];\n\tconst steps = trace.steps.map((step) => ({\n\t\tcount: step.count,\n\t\tlabel: step.label,\n\t\trows: [\n\t\t\t{ label: 'stage', value: step.stage },\n\t\t\t...(typeof step.count === 'number'\n\t\t\t\t? [{ label: 'count', value: String(step.count) }]\n\t\t\t\t: []),\n\t\t\t...(typeof step.durationMs === 'number'\n\t\t\t\t? [{ label: 'durationMs', value: String(step.durationMs) }]\n\t\t\t\t: []),\n\t\t\t...Object.entries(step.metadata ?? {}).map(([key, value]) => ({\n\t\t\t\tlabel: key,\n\t\t\t\tvalue: formatRAGTraceValue(value)\n\t\t\t}))\n\t\t],\n\t\tstage: step.stage\n\t}));\n\n\treturn {\n\t\tdetails,\n\t\tstats,\n\t\tsteps\n\t};\n};\n\nconst formatCompactList = (values?: string[]) =>\n\tvalues && values.length > 0 ? values.join(', ') : 'none';\n\nconst formatCoverageMap = (entries?: Record<string, number>) => {\n\tif (!entries) {\n\t\treturn 'none';\n\t}\n\n\tconst values = Object.entries(entries);\n\treturn values.length > 0\n\t\t? values.map(([key, value]) => `${key} ${value}`).join(' · ')\n\t\t: 'none';\n};\n\nconst formatDurationLabel = (value?: number) => {\n\tif (typeof value !== 'number' || !Number.isFinite(value)) {\n\t\treturn 'n/a';\n\t}\n\n\tif (value < 1000) {\n\t\treturn `${value}ms`;\n\t}\n\n\tif (value < 60000) {\n\t\treturn `${(value / 1000).toFixed(value >= 10000 ? 0 : 1)}s`;\n\t}\n\n\tif (value < 3600000) {\n\t\treturn `${(value / 60000).toFixed(value >= 600000 ? 0 : 1)}m`;\n\t}\n\n\treturn `${(value / 3600000).toFixed(value >= 36000000 ? 0 : 1)}h`;\n};\n\nconst formatDateLabel = (value?: number) =>\n\ttypeof value === 'number' && Number.isFinite(value)\n\t\t? new Date(value).toLocaleString('en-US')\n\t\t: 'n/a';\n\nconst formatAgeLabel = (value?: number) => {\n\tif (typeof value !== 'number' || !Number.isFinite(value)) {\n\t\treturn 'n/a';\n\t}\n\n\tif (value < 1000) {\n\t\treturn `${Math.round(value)}ms`;\n\t}\n\n\tif (value < 60000) {\n\t\treturn `${(value / 1000).toFixed(value >= 10000 ? 0 : 1)}s`;\n\t}\n\n\tif (value < 3600000) {\n\t\treturn `${(value / 60000).toFixed(value >= 600000 ? 0 : 1)}m`;\n\t}\n\n\tif (value < 86400000) {\n\t\treturn `${(value / 3600000).toFixed(value >= 36000000 ? 0 : 1)}h`;\n\t}\n\n\treturn `${(value / 86400000).toFixed(value >= 864000000 ? 0 : 1)}d`;\n};\n\nconst buildSyncOverviewLatestRow = (sources: RAGSyncSourceRecord[]) => {\n\tconst latest = [...sources]\n\t\t.filter(\n\t\t\t(record) =>\n\t\t\t\ttypeof record.lastSuccessfulSyncAt === 'number' ||\n\t\t\t\ttypeof record.lastSyncedAt === 'number'\n\t\t)\n\t\t.sort(\n\t\t\t(left, right) =>\n\t\t\t\t(right.lastSuccessfulSyncAt ?? right.lastSyncedAt ?? 0) -\n\t\t\t\t(left.lastSuccessfulSyncAt ?? left.lastSyncedAt ?? 0)\n\t\t)[0];\n\n\tif (!latest) {\n\t\treturn {\n\t\t\tlabel: 'Latest sync',\n\t\t\tvalue: 'No completed run yet'\n\t\t};\n\t}\n\n\treturn {\n\t\tlabel: 'Latest sync',\n\t\tvalue: [\n\t\t\tlatest.label,\n\t\t\ttypeof latest.documentCount === 'number'\n\t\t\t\t? `${latest.documentCount} docs`\n\t\t\t\t: '',\n\t\t\ttypeof latest.chunkCount === 'number'\n\t\t\t\t? `${latest.chunkCount} chunks`\n\t\t\t\t: '',\n\t\t\ttypeof latest.lastSyncDurationMs === 'number'\n\t\t\t\t? formatDurationLabel(latest.lastSyncDurationMs)\n\t\t\t\t: '',\n\t\t\ttypeof latest.lastSuccessfulSyncAt === 'number'\n\t\t\t\t? formatDateLabel(latest.lastSuccessfulSyncAt)\n\t\t\t\t: typeof latest.lastSyncedAt === 'number'\n\t\t\t\t\t? formatDateLabel(latest.lastSyncedAt)\n\t\t\t\t\t: ''\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' · ')\n\t};\n};\n\nconst formatAdminActionLabel = (\n\tvalue: RAGAdminActionRecord['action'] | RAGAdminJobRecord['action']\n) => value.replaceAll('_', ' ');\n\nconst buildAdminTimingLabel = (input: {\n\telapsedMs?: number;\n\tstartedAt: number;\n}) =>\n\ttypeof input.elapsedMs === 'number'\n\t\t? formatDurationLabel(input.elapsedMs)\n\t\t: formatDateLabel(input.startedAt);\n\nexport const buildRAGAdminJobPresentation = (\n\tjob: RAGAdminJobRecord\n): RAGAdminJobPresentation => ({\n\tid: job.id,\n\taction: job.action,\n\tstatus: job.status,\n\tsummary: [\n\t\tjob.status.toUpperCase(),\n\t\tformatAdminActionLabel(job.action),\n\t\tjob.target,\n\t\tbuildAdminTimingLabel(job)\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' · '),\n\trows: [\n\t\t{ label: 'Action', value: formatAdminActionLabel(job.action) },\n\t\t{ label: 'Status', value: job.status },\n\t\t...(job.target ? [{ label: 'Target', value: job.target }] : []),\n\t\t{ label: 'Timing', value: buildAdminTimingLabel(job) },\n\t\t...(job.error ? [{ label: 'Error', value: job.error }] : [])\n\t]\n});\n\nexport const buildRAGAdminJobPresentations = (\n\tjobs?: RAGAdminJobRecord[]\n): RAGAdminJobPresentation[] =>\n\t(jobs ?? []).slice(0, 3).map(buildRAGAdminJobPresentation);\n\nexport const buildRAGAdminActionPresentation = (\n\taction: RAGAdminActionRecord\n): RAGAdminActionPresentation => ({\n\tid: action.id,\n\taction: action.action,\n\tstatus: action.status,\n\tsummary: [\n\t\taction.status.toUpperCase(),\n\t\tformatAdminActionLabel(action.action),\n\t\taction.documentId ?? action.target,\n\t\tbuildAdminTimingLabel(action)\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' · '),\n\trows: [\n\t\t{ label: 'Action', value: formatAdminActionLabel(action.action) },\n\t\t{ label: 'Status', value: action.status },\n\t\t...(action.documentId\n\t\t\t? [{ label: 'Document', value: action.documentId }]\n\t\t\t: action.target\n\t\t\t\t? [{ label: 'Target', value: action.target }]\n\t\t\t\t: []),\n\t\t{ label: 'Timing', value: buildAdminTimingLabel(action) },\n\t\t...(action.error ? [{ label: 'Error', value: action.error }] : [])\n\t]\n});\n\nexport const buildRAGAdminActionPresentations = (\n\tactions?: RAGAdminActionRecord[]\n): RAGAdminActionPresentation[] =>\n\t(actions ?? []).slice(0, 3).map(buildRAGAdminActionPresentation);\n\nconst buildRAGSyncSourceRunPresentations = (\n\tsource: RAGSyncSourceRecord\n): RAGSyncSourceRunPresentation[] => {\n\tif (!Array.isArray(source.metadata?.recentRuns)) {\n\t\treturn [];\n\t}\n\n\treturn (source.metadata.recentRuns as Array<Record<string, unknown>>)\n\t\t.slice(0, 3)\n\t\t.map((entry, index) => {\n\t\t\tconst trigger =\n\t\t\t\ttypeof entry.trigger === 'string' ? entry.trigger : 'sync';\n\t\t\tconst status =\n\t\t\t\ttypeof entry.status === 'string' ? entry.status : 'unknown';\n\t\t\tconst finishedAt =\n\t\t\t\ttypeof entry.finishedAt === 'number'\n\t\t\t\t\t? formatDateLabel(entry.finishedAt)\n\t\t\t\t\t: 'n/a';\n\t\t\tconst duration =\n\t\t\t\ttypeof entry.durationMs === 'number'\n\t\t\t\t\t? formatDurationLabel(entry.durationMs)\n\t\t\t\t\t: 'n/a';\n\t\t\tconst docs =\n\t\t\t\ttypeof entry.documentCount === 'number'\n\t\t\t\t\t? `${entry.documentCount} docs`\n\t\t\t\t\t: 'n/a';\n\t\t\tconst chunks =\n\t\t\t\ttypeof entry.chunkCount === 'number'\n\t\t\t\t\t? `${entry.chunkCount} chunks`\n\t\t\t\t\t: 'n/a';\n\t\t\tconst error =\n\t\t\t\ttypeof entry.error === 'string' && entry.error.length > 0\n\t\t\t\t\t? entry.error\n\t\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tlabel: `Run ${index + 1}`,\n\t\t\t\tstatus,\n\t\t\t\tsummary: `${trigger} · ${status} · ${docs} · ${chunks} · ${duration} · ${finishedAt}`,\n\t\t\t\trows: [\n\t\t\t\t\t{ label: 'Trigger', value: trigger },\n\t\t\t\t\t{ label: 'Status', value: status },\n\t\t\t\t\t{ label: 'Output', value: `${docs} · ${chunks}` },\n\t\t\t\t\t{ label: 'Duration', value: duration },\n\t\t\t\t\t{ label: 'Finished', value: finishedAt },\n\t\t\t\t\t...(error ? [{ label: 'Error', value: error }] : [])\n\t\t\t\t]\n\t\t\t};\n\t\t});\n};\n\nexport const buildRAGSyncSourcePresentation = (\n\tsource: RAGSyncSourceRecord\n): RAGSyncSourcePresentation => {\n\tconst provider =\n\t\ttypeof source.metadata?.provider === 'string'\n\t\t\t? source.metadata.provider\n\t\t\t: undefined;\n\tconst accountMode =\n\t\ttypeof source.metadata?.accountMode === 'string'\n\t\t\t? source.metadata.accountMode\n\t\t\t: undefined;\n\tconst schedule =\n\t\ttypeof source.metadata?.schedule === 'string'\n\t\t\t? source.metadata.schedule\n\t\t\t: undefined;\n\tconst lastTrigger =\n\t\ttypeof source.metadata?.lastTrigger === 'string'\n\t\t\t? source.metadata.lastTrigger\n\t\t\t: undefined;\n\tconst liveReady =\n\t\ttypeof source.metadata?.liveReady === 'string'\n\t\t\t? source.metadata.liveReady\n\t\t\t: undefined;\n\n\treturn {\n\t\tid: source.id,\n\t\tlabel: source.label,\n\t\tkind: source.kind,\n\t\tstatus: source.status,\n\t\tsummary: [\n\t\t\tsource.kind,\n\t\t\tsource.status,\n\t\t\ttypeof source.documentCount === 'number'\n\t\t\t\t? `${source.documentCount} docs`\n\t\t\t\t: '',\n\t\t\ttypeof source.chunkCount === 'number'\n\t\t\t\t? `${source.chunkCount} chunks`\n\t\t\t\t: '',\n\t\t\ttypeof source.lastSyncDurationMs === 'number'\n\t\t\t\t? formatDurationLabel(source.lastSyncDurationMs)\n\t\t\t\t: '',\n\t\t\ttypeof source.lastSuccessfulSyncAt === 'number'\n\t\t\t\t? `last success ${formatDateLabel(source.lastSuccessfulSyncAt)}`\n\t\t\t\t: typeof source.lastSyncedAt === 'number'\n\t\t\t\t\t? `last sync ${formatDateLabel(source.lastSyncedAt)}`\n\t\t\t\t\t: ''\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' · '),\n\t\trows: [\n\t\t\t...(source.target\n\t\t\t\t? [{ label: 'Target', value: source.target }]\n\t\t\t\t: []),\n\t\t\t...(provider ? [{ label: 'Provider', value: provider }] : []),\n\t\t\t...(accountMode\n\t\t\t\t? [{ label: 'Account mode', value: accountMode }]\n\t\t\t\t: []),\n\t\t\t...(schedule ? [{ label: 'Schedule', value: schedule }] : []),\n\t\t\t...(lastTrigger\n\t\t\t\t? [{ label: 'Last trigger', value: lastTrigger }]\n\t\t\t\t: []),\n\t\t\t...(typeof source.lastSuccessfulSyncAt === 'number'\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Last success',\n\t\t\t\t\t\t\tvalue: formatDateLabel(source.lastSuccessfulSyncAt)\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t\t...(typeof source.nextRetryAt === 'number'\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Next retry',\n\t\t\t\t\t\t\tvalue: formatDateLabel(source.nextRetryAt)\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t\t...(source.lastError\n\t\t\t\t? [{ label: 'Last error', value: source.lastError }]\n\t\t\t\t: [])\n\t\t],\n\t\ttags: [\n\t\t\tprovider,\n\t\t\taccountMode ? `mode ${accountMode}` : undefined,\n\t\t\tliveReady\n\t\t].filter((value): value is string => Boolean(value)),\n\t\textendedSummary: source.description ?? liveReady,\n\t\truns: buildRAGSyncSourceRunPresentations(source)\n\t};\n};\n\nexport const buildRAGSyncSourcePresentations = (\n\tsources?: RAGSyncSourceRecord[]\n): RAGSyncSourcePresentation[] =>\n\t(sources ?? []).map(buildRAGSyncSourcePresentation);\n\nexport const buildRAGReadinessPresentation = (\n\treadiness?: RAGExtractorReadiness\n): RAGReadinessPresentation => {\n\tif (!readiness) {\n\t\treturn {\n\t\t\tsections: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Provider',\n\t\t\t\t\ttitle: 'Unavailable',\n\t\t\t\t\tsummary: 'Readiness data is not available yet.'\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n\n\treturn {\n\t\tsections: [\n\t\t\t{\n\t\t\t\tlabel: 'Provider',\n\t\t\t\ttitle: readiness.providerConfigured\n\t\t\t\t\t? (readiness.providerName ?? 'Runtime provider routing')\n\t\t\t\t\t: 'Not configured',\n\t\t\t\tsummary: readiness.providerConfigured\n\t\t\t\t\t? readiness.model\n\t\t\t\t\t\t? `Requests route through ${readiness.providerName ?? 'the runtime provider registry'} with default model ${readiness.model}.`\n\t\t\t\t\t\t: `Requests route through ${readiness.providerName ?? 'the runtime provider registry'}.`\n\t\t\t\t\t: 'Provider-backed retrieval is not configured yet.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Embeddings',\n\t\t\t\ttitle: readiness.embeddingConfigured\n\t\t\t\t\t? readiness.embeddingModel ===\n\t\t\t\t\t\t'collection-managed embeddings'\n\t\t\t\t\t\t? 'Collection-managed'\n\t\t\t\t\t\t: 'Configured'\n\t\t\t\t\t: 'Missing',\n\t\t\t\tsummary: readiness.embeddingConfigured\n\t\t\t\t\t? readiness.embeddingModel ===\n\t\t\t\t\t\t'collection-managed embeddings'\n\t\t\t\t\t\t? 'Embeddings come from the collection and vector store layer, so retrieval stays vector-backed without a separate top-level embedding provider.'\n\t\t\t\t\t\t: (readiness.embeddingModel ??\n\t\t\t\t\t\t\t'Embedding model configured.')\n\t\t\t\t\t: 'Embeddings are not configured yet.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Retrieval Stack',\n\t\t\t\ttitle: readiness.rerankerConfigured\n\t\t\t\t\t? 'Reranker ready'\n\t\t\t\t\t: 'Vector only',\n\t\t\t\tsummary: readiness.indexManagerConfigured\n\t\t\t\t\t? 'Index manager configured.'\n\t\t\t\t\t: 'Index manager not configured.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Extractors',\n\t\t\t\ttitle: readiness.extractorsConfigured\n\t\t\t\t\t? `${readiness.extractorNames.length} configured`\n\t\t\t\t\t: 'None configured',\n\t\t\t\tsummary: readiness.extractorsConfigured\n\t\t\t\t\t? `Configured extractors: ${formatCompactList(readiness.extractorNames)}`\n\t\t\t\t\t: 'No extractors configured.',\n\t\t\t\ttags:\n\t\t\t\t\treadiness.extractorNames.length > 0\n\t\t\t\t\t\t? readiness.extractorNames\n\t\t\t\t\t\t: ['No extractors configured']\n\t\t\t}\n\t\t]\n\t};\n};\n\nexport const buildRAGCorpusHealthPresentation = (\n\thealth?: RAGCorpusHealth\n): RAGCorpusHealthPresentation => {\n\tif (!health) {\n\t\treturn {\n\t\t\tsections: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Corpus health',\n\t\t\t\t\ttitle: 'Unavailable',\n\t\t\t\t\tsummary: 'Corpus health is not available yet.'\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n\n\treturn {\n\t\tsections: [\n\t\t\t{\n\t\t\t\tlabel: 'Corpus coverage',\n\t\t\t\ttitle: `Formats: ${formatCoverageMap(health.coverageByFormat)}`,\n\t\t\t\tsummary: `Kinds: ${formatCoverageMap(health.coverageByKind)}`,\n\t\t\t\trows: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Average chunks per document',\n\t\t\t\t\t\tvalue: health.averageChunksPerDocument.toFixed(2)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Chunk quality',\n\t\t\t\ttitle: `${health.averageChunksPerDocument.toFixed(2)} avg chunks/doc`,\n\t\t\t\tsummary: `Empty docs ${health.emptyDocuments} · empty chunks ${health.emptyChunks} · low signal ${health.lowSignalChunks}`,\n\t\t\t\trows: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Missing source',\n\t\t\t\t\t\tvalue: String(health.documentsMissingSource)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Missing title',\n\t\t\t\t\t\tvalue: String(health.documentsMissingTitle)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Missing metadata',\n\t\t\t\t\t\tvalue: String(health.documentsMissingMetadata)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Freshness',\n\t\t\t\ttitle: `${health.staleDocuments.length} stale docs`,\n\t\t\t\tsummary: `Stale threshold ${formatAgeLabel(health.staleAfterMs)}`,\n\t\t\t\trows: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Oldest age',\n\t\t\t\t\t\tvalue: formatAgeLabel(health.oldestDocumentAgeMs)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Newest age',\n\t\t\t\t\t\tvalue: formatAgeLabel(health.newestDocumentAgeMs)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Failures',\n\t\t\t\ttitle: `${health.failedIngestJobs} ingest · ${health.failedAdminJobs} admin`,\n\t\t\t\tsummary: `Duplicate sources ${health.duplicateSourceGroups.length} · duplicate ids ${health.duplicateDocumentIdGroups.length}`,\n\t\t\t\trows: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Failures by input',\n\t\t\t\t\t\tvalue: formatCoverageMap(health.failuresByInputKind)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Failures by extractor',\n\t\t\t\t\t\tvalue: formatCoverageMap(health.failuresByExtractor)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Failures by admin action',\n\t\t\t\t\t\tvalue: formatCoverageMap(health.failuresByAdminAction)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n};\n\nexport const buildRAGSyncOverviewPresentation = (\n\tsources?: RAGSyncSourceRecord[]\n): RAGSyncOverviewPresentation => {\n\tconst records = sources ?? [];\n\tif (records.length === 0) {\n\t\treturn {\n\t\t\trows: [\n\t\t\t\t{ label: 'Configured sync sources', value: '0' },\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Latest sync',\n\t\t\t\t\tvalue: 'No sync sources configured yet.'\n\t\t\t\t}\n\t\t\t],\n\t\t\tsections: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Sync overview',\n\t\t\t\t\ttitle: 'No sync sources configured',\n\t\t\t\t\tsummary:\n\t\t\t\t\t\t'Add sync sources to monitor directories, URLs, storage, or mailboxes.'\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n\n\tconst countByStatus = (status: RAGSyncSourceRecord['status']) =>\n\t\trecords.filter((record) => record.status === status).length;\n\n\treturn {\n\t\trows: [\n\t\t\t{ label: 'Configured sync sources', value: String(records.length) },\n\t\t\t{ label: 'Completed', value: String(countByStatus('completed')) },\n\t\t\t{ label: 'Running', value: String(countByStatus('running')) },\n\t\t\t{\n\t\t\t\tlabel: 'Failed',\n\t\t\t\tvalue: String(countByStatus('failed'))\n\t\t\t},\n\t\t\tbuildSyncOverviewLatestRow(records)\n\t\t],\n\t\tsections: [\n\t\t\t{\n\t\t\t\tlabel: 'Sync overview',\n\t\t\t\ttitle: `${records.length} configured`,\n\t\t\t\tsummary: `${countByStatus('completed')} completed · ${countByStatus('running')} running · ${countByStatus('failed')} failed`\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Latest sync',\n\t\t\t\ttitle: buildSyncOverviewLatestRow(records).value,\n\t\t\t\tsummary: 'Most recent completed or last-known sync activity.'\n\t\t\t}\n\t\t]\n\t};\n};\n\nconst formatMediaTimestamp = (value: unknown) => {\n\tif (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n\t\treturn undefined;\n\t}\n\n\tconst totalSeconds = Math.floor(value / 1000);\n\tconst minutes = Math.floor(totalSeconds / 60);\n\tconst seconds = totalSeconds % 60;\n\tconst milliseconds = Math.floor(value % 1000);\n\n\treturn `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(\n\t\t2,\n\t\t'0'\n\t)}.${String(milliseconds).padStart(3, '0')}`;\n};\n\nconst getAttachmentName = (source?: string, title?: string) => {\n\tconst sourceAttachment = source?.split('/').at(-1);\n\tif (sourceAttachment && sourceAttachment.includes('.')) {\n\t\treturn sourceAttachment;\n\t}\n\n\tconst titleAttachment = title?.split(' · ').at(-1);\n\tif (titleAttachment && titleAttachment.includes('.')) {\n\t\treturn titleAttachment;\n\t}\n\n\treturn undefined;\n};\n\nconst buildContextLabel = (metadata?: Record<string, unknown>) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst emailKind = getContextString(metadata.emailKind);\n\tif (emailKind === 'attachment') {\n\t\treturn 'Attachment evidence';\n\t}\n\n\tif (emailKind === 'message') {\n\t\tconst from = getContextString(metadata.from);\n\t\treturn from ? `Message from ${from}` : 'Message evidence';\n\t}\n\n\tconst page =\n\t\tgetContextNumber(metadata.page) ??\n\t\tgetContextNumber(metadata.pageNumber) ??\n\t\t(typeof metadata.pageIndex === 'number'\n\t\t\t? metadata.pageIndex + 1\n\t\t\t: undefined);\n\tconst region =\n\t\tgetContextNumber(metadata.regionNumber) ??\n\t\t(typeof metadata.regionIndex === 'number'\n\t\t\t? metadata.regionIndex + 1\n\t\t\t: undefined);\n\tif (page && region) {\n\t\treturn `Page ${page} region ${region}`;\n\t}\n\tif (page) {\n\t\treturn `Page ${page}`;\n\t}\n\n\tconst sheet =\n\t\tgetContextString(metadata.sheetName) ??\n\t\t(Array.isArray(metadata.sheetNames)\n\t\t\t? getContextString(metadata.sheetNames[0])\n\t\t\t: undefined);\n\tif (sheet) {\n\t\treturn `Sheet ${sheet}`;\n\t}\n\n\tconst slide =\n\t\tgetContextNumber(metadata.slide) ??\n\t\tgetContextNumber(metadata.slideNumber) ??\n\t\t(typeof metadata.slideIndex === 'number'\n\t\t\t? metadata.slideIndex + 1\n\t\t\t: undefined);\n\tif (slide) {\n\t\treturn `Slide ${slide}`;\n\t}\n\n\tconst archiveEntry =\n\t\tgetContextString(metadata.archiveEntryPath) ??\n\t\tgetContextString(metadata.entryPath);\n\tif (archiveEntry) {\n\t\treturn `Archive entry ${archiveEntry}`;\n\t}\n\n\tconst threadTopic = getContextString(metadata.threadTopic);\n\tif (threadTopic) {\n\t\treturn `Thread ${threadTopic}`;\n\t}\n\n\tconst speaker = getContextString(metadata.speaker);\n\tif (speaker) {\n\t\treturn `Speaker ${speaker}`;\n\t}\n\n\tconst sectionPath = Array.isArray(metadata.sectionPath)\n\t\t? metadata.sectionPath\n\t\t\t\t.map((value) => getContextString(value))\n\t\t\t\t.filter((value): value is string => typeof value === 'string')\n\t\t: [];\n\tconst sectionTitle =\n\t\tgetContextString(metadata.sectionTitle) ?? sectionPath.at(-1);\n\tif (sectionTitle) {\n\t\treturn `Section ${sectionTitle}`;\n\t}\n\n\treturn undefined;\n};\n\nconst buildLocatorLabel = (\n\tmetadata?: Record<string, unknown>,\n\tsource?: string,\n\ttitle?: string\n) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst page =\n\t\tgetContextNumber(metadata.page) ??\n\t\tgetContextNumber(metadata.pageNumber) ??\n\t\t(typeof metadata.pageIndex === 'number'\n\t\t\t? metadata.pageIndex + 1\n\t\t\t: undefined);\n\tconst region =\n\t\tgetContextNumber(metadata.regionNumber) ??\n\t\t(typeof metadata.regionIndex === 'number'\n\t\t\t? metadata.regionIndex + 1\n\t\t\t: undefined);\n\tif (page && region) {\n\t\treturn `Page ${page} · Region ${region}`;\n\t}\n\tif (page) {\n\t\treturn `Page ${page}`;\n\t}\n\n\tconst sheet =\n\t\tgetContextString(metadata.sheetName) ??\n\t\t(Array.isArray(metadata.sheetNames)\n\t\t\t? getContextString(metadata.sheetNames[0])\n\t\t\t: undefined);\n\tif (sheet) {\n\t\treturn `Sheet ${sheet}`;\n\t}\n\n\tconst slide =\n\t\tgetContextNumber(metadata.slide) ??\n\t\tgetContextNumber(metadata.slideNumber) ??\n\t\t(typeof metadata.slideIndex === 'number'\n\t\t\t? metadata.slideIndex + 1\n\t\t\t: undefined);\n\tif (slide) {\n\t\treturn `Slide ${slide}`;\n\t}\n\n\tconst archiveEntry =\n\t\tgetContextString(metadata.archiveEntryPath) ??\n\t\tgetContextString(metadata.entryPath);\n\tif (archiveEntry) {\n\t\treturn `Archive entry ${archiveEntry}`;\n\t}\n\n\tconst emailKind = getContextString(metadata.emailKind);\n\tif (emailKind === 'attachment') {\n\t\tconst attachmentName =\n\t\t\tgetContextString(metadata.attachmentName) ??\n\t\t\tgetAttachmentName(source, title);\n\t\treturn attachmentName ? `Attachment ${attachmentName}` : 'Attachment';\n\t}\n\n\tconst mediaStart = formatMediaTimestamp(metadata.startMs);\n\tconst mediaEnd = formatMediaTimestamp(metadata.endMs);\n\tif (mediaStart && mediaEnd) {\n\t\treturn `Timestamp ${mediaStart} - ${mediaEnd}`;\n\t}\n\n\tif (mediaStart) {\n\t\treturn `Timestamp ${mediaStart}`;\n\t}\n\n\tconst sectionPath = Array.isArray(metadata.sectionPath)\n\t\t? metadata.sectionPath\n\t\t\t\t.map((value) => getContextString(value))\n\t\t\t\t.filter((value): value is string => typeof value === 'string')\n\t\t: [];\n\tif (sectionPath.length > 0) {\n\t\treturn `Section ${sectionPath.join(' > ')}`;\n\t}\n\n\treturn undefined;\n};\n\nconst buildProvenanceLabel = (metadata?: Record<string, unknown>) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst threadTopic = getContextString(metadata.threadTopic);\n\tconst from = getContextString(metadata.from);\n\tconst sentAt =\n\t\tformatTimestampLabel(metadata.sentAt) ??\n\t\tformatTimestampLabel(metadata.receivedAt);\n\tconst speaker = getContextString(metadata.speaker);\n\tconst mediaKind = getContextString(metadata.mediaKind);\n\tconst transcriptSource = getContextString(metadata.transcriptSource);\n\tconst pdfTextMode = getContextString(metadata.pdfTextMode);\n\tconst ocrEngine = getContextString(metadata.ocrEngine);\n\tconst ocrConfidence =\n\t\tgetContextNumber(metadata.ocrRegionConfidence) ??\n\t\tgetContextNumber(metadata.ocrConfidence);\n\n\tconst labels = [\n\t\tpdfTextMode ? `PDF ${pdfTextMode}` : '',\n\t\tocrEngine ? `OCR ${ocrEngine}` : '',\n\t\ttypeof ocrConfidence === 'number'\n\t\t\t? `Confidence ${ocrConfidence.toFixed(2)}`\n\t\t\t: '',\n\t\tmediaKind ? `Media ${mediaKind}` : '',\n\t\ttranscriptSource ? `Transcript ${transcriptSource}` : '',\n\t\tthreadTopic ? `Thread ${threadTopic}` : '',\n\t\tspeaker ? `Speaker ${speaker}` : '',\n\t\tfrom ? `Sender ${from}` : '',\n\t\tsentAt ? `Sent ${sentAt}` : ''\n\t].filter((value) => value.length > 0);\n\n\treturn labels.length > 0 ? labels.join(' · ') : undefined;\n};\n\nexport const buildRAGSourceLabels = ({\n\tmetadata,\n\tsource,\n\ttitle\n}: {\n\tmetadata?: Record<string, unknown>;\n\tsource?: string;\n\ttitle?: string;\n}): RAGSourceLabels | undefined => {\n\tconst contextLabel = buildContextLabel(metadata);\n\tconst locatorLabel = buildLocatorLabel(metadata, source, title);\n\tconst provenanceLabel = buildProvenanceLabel(metadata);\n\n\tif (!contextLabel && !locatorLabel && !provenanceLabel) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tcontextLabel,\n\t\tlocatorLabel,\n\t\tprovenanceLabel\n\t};\n};\n\nexport const buildRAGChunkStructure = (\n\tmetadata?: Record<string, unknown>\n): RAGChunkStructure | undefined => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst sectionPath = Array.isArray(metadata.sectionPath)\n\t\t? metadata.sectionPath.filter(\n\t\t\t\t(value): value is string =>\n\t\t\t\t\ttypeof value === 'string' && value.trim().length > 0\n\t\t\t)\n\t\t: undefined;\n\tconst sectionKind =\n\t\tmetadata.sectionKind === 'markdown_heading' ||\n\t\tmetadata.sectionKind === 'html_heading' ||\n\t\tmetadata.sectionKind === 'office_heading' ||\n\t\tmetadata.sectionKind === 'spreadsheet_rows' ||\n\t\tmetadata.sectionKind === 'presentation_slide'\n\t\t\t? metadata.sectionKind\n\t\t\t: undefined;\n\tconst section: NonNullable<RAGChunkStructure['section']> = {\n\t\tdepth: getContextNumber(metadata.sectionDepth),\n\t\tkind: sectionKind,\n\t\tpath: sectionPath && sectionPath.length > 0 ? sectionPath : undefined,\n\t\ttitle: getContextString(metadata.sectionTitle)\n\t};\n\tconst sequence: NonNullable<RAGChunkStructure['sequence']> = {\n\t\tnextChunkId: getContextString(metadata.nextChunkId),\n\t\tpreviousChunkId: getContextString(metadata.previousChunkId),\n\t\tsectionChunkCount: getContextNumber(metadata.sectionChunkCount),\n\t\tsectionChunkId: getContextString(metadata.sectionChunkId),\n\t\tsectionChunkIndex: getContextNumber(metadata.sectionChunkIndex)\n\t};\n\n\tif (\n\t\t!section.title &&\n\t\t(!section.path || section.path.length === 0) &&\n\t\ttypeof section.depth !== 'number' &&\n\t\t!section.kind &&\n\t\t!sequence.nextChunkId &&\n\t\t!sequence.previousChunkId &&\n\t\ttypeof sequence.sectionChunkCount !== 'number' &&\n\t\t!sequence.sectionChunkId &&\n\t\ttypeof sequence.sectionChunkIndex !== 'number'\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tsection:\n\t\t\tsection.title ||\n\t\t\t(section.path && section.path.length > 0) ||\n\t\t\ttypeof section.depth === 'number' ||\n\t\t\tsection.kind\n\t\t\t\t? section\n\t\t\t\t: undefined,\n\t\tsequence:\n\t\t\tsequence.nextChunkId ||\n\t\t\tsequence.previousChunkId ||\n\t\t\ttypeof sequence.sectionChunkCount === 'number' ||\n\t\t\tsequence.sectionChunkId ||\n\t\t\ttypeof sequence.sectionChunkIndex === 'number'\n\t\t\t\t? sequence\n\t\t\t\t: undefined\n\t};\n};\n\nconst buildExcerpt = (text: string, maxLength = 160) => {\n\tconst normalized = text.replaceAll(/\\s+/g, ' ').trim();\n\tif (normalized.length <= maxLength) {\n\t\treturn normalized;\n\t}\n\n\treturn `${normalized.slice(0, Math.max(0, maxLength - 1)).trimEnd()}…`;\n};\n\ntype ExcerptChunkInput = Pick<\n\tRAGSource,\n\t'chunkId' | 'metadata' | 'structure' | 'text'\n>;\n\nexport const buildRAGChunkExcerpts = (\n\tchunks: ExcerptChunkInput[],\n\tactiveChunkId?: string\n): RAGChunkExcerpts | undefined => {\n\tif (chunks.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tconst graph = buildRAGChunkGraph(\n\t\tchunks.map((chunk) => ({\n\t\t\tchunkId: chunk.chunkId,\n\t\t\tmetadata: chunk.metadata,\n\t\t\tstructure: chunk.structure\n\t\t}))\n\t);\n\tconst navigation = buildRAGChunkGraphNavigation(graph, activeChunkId);\n\tconst activeChunk =\n\t\tchunks.find((chunk) => chunk.chunkId === navigation.activeChunkId) ??\n\t\tchunks[0];\n\tif (!activeChunk) {\n\t\treturn undefined;\n\t}\n\n\tconst chunkMap = new Map(chunks.map((chunk) => [chunk.chunkId, chunk]));\n\tconst orderedWindowIds = [\n\t\tnavigation.previousNode?.chunkId,\n\t\tactiveChunk.chunkId,\n\t\tnavigation.nextNode?.chunkId\n\t].filter((chunkId, index, ids): chunkId is string =>\n\t\tBoolean(chunkId) && ids.indexOf(chunkId) === index\n\t);\n\tconst orderedSectionIds =\n\t\tnavigation.sectionNodes.length > 0\n\t\t\t? navigation.sectionNodes.map((node) => node.chunkId)\n\t\t\t: [activeChunk.chunkId];\n\n\tconst collectText = (chunkIds: string[]) =>\n\t\tchunkIds\n\t\t\t.map((chunkId) => chunkMap.get(chunkId)?.text)\n\t\t\t.filter((text): text is string => typeof text === 'string')\n\t\t\t.join('\\n\\n');\n\n\treturn {\n\t\tchunkExcerpt: buildExcerpt(activeChunk.text, 160),\n\t\tsectionExcerpt: buildExcerpt(collectText(orderedSectionIds), 320),\n\t\twindowExcerpt: buildExcerpt(collectText(orderedWindowIds), 240)\n\t};\n};\n\nexport const buildRAGPreferredExcerpt = (\n\texcerpts?: RAGChunkExcerpts,\n\tstructure?: RAGChunkStructure\n) => {\n\tif (!excerpts) {\n\t\treturn '';\n\t}\n\n\tconst chunkLength = excerpts.chunkExcerpt.trim().length;\n\tconst sectionChunkCount = structure?.sequence?.sectionChunkCount ?? 1;\n\tif (sectionChunkCount > 1 && chunkLength > 0 && chunkLength < 72) {\n\t\tif (sectionChunkCount <= 3 && excerpts.sectionExcerpt.trim().length > 0) {\n\t\t\treturn excerpts.sectionExcerpt;\n\t\t}\n\t\tif (excerpts.windowExcerpt.trim().length > 0) {\n\t\t\treturn excerpts.windowExcerpt;\n\t\t}\n\t}\n\n\treturn excerpts.chunkExcerpt;\n};\n\ntype GraphChunkInput = Pick<\n\tRAGSource,\n\t'chunkId' | 'metadata' | 'source' | 'title' | 'labels' | 'structure'\n> &\n\tPartial<Pick<RAGSource, 'score'>>;\n\nexport const buildRAGChunkGraph = (\n\tchunks: GraphChunkInput[]\n): RAGChunkGraph => {\n\tconst nodes: RAGChunkGraphNode[] = [];\n\tconst edges: RAGChunkGraphEdge[] = [];\n\tconst edgeKeys = new Set<string>();\n\tconst sections = new Map<string, RAGChunkGraphSectionGroup>();\n\n\tfor (const chunk of chunks) {\n\t\tconst labels =\n\t\t\tchunk.labels ??\n\t\t\tbuildRAGSourceLabels({\n\t\t\t\tmetadata: chunk.metadata,\n\t\t\t\tsource: chunk.source,\n\t\t\t\ttitle: chunk.title\n\t\t\t});\n\t\tconst structure =\n\t\t\tchunk.structure ?? buildRAGChunkStructure(chunk.metadata);\n\n\t\tnodes.push({\n\t\t\tchunkId: chunk.chunkId,\n\t\t\tcontextLabel: labels?.contextLabel,\n\t\t\tlabel: chunk.source ?? chunk.title ?? chunk.chunkId,\n\t\t\tlocatorLabel: labels?.locatorLabel,\n\t\t\tprovenanceLabel: labels?.provenanceLabel,\n\t\t\tscore: chunk.score,\n\t\t\tsource: chunk.source,\n\t\t\tstructure,\n\t\t\ttitle: chunk.title\n\t\t});\n\n\t\tconst previousChunkId = structure?.sequence?.previousChunkId;\n\t\tif (previousChunkId) {\n\t\t\tconst key = `previous:${previousChunkId}:${chunk.chunkId}`;\n\t\t\tif (!edgeKeys.has(key)) {\n\t\t\t\tedgeKeys.add(key);\n\t\t\t\tedges.push({\n\t\t\t\t\tfromChunkId: previousChunkId,\n\t\t\t\t\trelation: 'previous',\n\t\t\t\t\ttoChunkId: chunk.chunkId\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst nextChunkId = structure?.sequence?.nextChunkId;\n\t\tif (nextChunkId) {\n\t\t\tconst key = `next:${chunk.chunkId}:${nextChunkId}`;\n\t\t\tif (!edgeKeys.has(key)) {\n\t\t\t\tedgeKeys.add(key);\n\t\t\t\tedges.push({\n\t\t\t\t\tfromChunkId: chunk.chunkId,\n\t\t\t\t\trelation: 'next',\n\t\t\t\t\ttoChunkId: nextChunkId\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst sectionId = structure?.sequence?.sectionChunkId;\n\t\tif (sectionId) {\n\t\t\tconst existing = sections.get(sectionId);\n\t\t\tif (!existing) {\n\t\t\t\tsections.set(sectionId, {\n\t\t\t\t\tchildSectionIds: [],\n\t\t\t\t\tchunkCount: structure.sequence?.sectionChunkCount ?? 1,\n\t\t\t\t\tchunkIds: [chunk.chunkId],\n\t\t\t\t\tdepth: structure.section?.depth,\n\t\t\t\t\tid: sectionId,\n\t\t\t\t\tkind: structure.section?.kind,\n\t\t\t\t\tleadChunkId: chunk.chunkId,\n\t\t\t\t\tpath: structure.section?.path,\n\t\t\t\t\ttitle: structure.section?.title\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!existing.chunkIds.includes(chunk.chunkId)) {\n\t\t\t\texisting.chunkIds.push(chunk.chunkId);\n\t\t\t}\n\t\t\texisting.chunkCount = Math.max(\n\t\t\t\texisting.chunkCount,\n\t\t\t\tstructure.sequence?.sectionChunkCount ?? existing.chunkCount\n\t\t\t);\n\t\t}\n\t}\n\n\tfor (const section of sections.values()) {\n\t\tsection.chunkIds.sort((left, right) => {\n\t\t\tconst leftNode = nodes.find((node) => node.chunkId === left);\n\t\t\tconst rightNode = nodes.find((node) => node.chunkId === right);\n\t\t\tconst leftIndex =\n\t\t\t\tleftNode?.structure?.sequence?.sectionChunkIndex ??\n\t\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\t\tconst rightIndex =\n\t\t\t\trightNode?.structure?.sequence?.sectionChunkIndex ??\n\t\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\t\tif (leftIndex !== rightIndex) {\n\t\t\t\treturn leftIndex - rightIndex;\n\t\t\t}\n\n\t\t\treturn left.localeCompare(right);\n\t\t});\n\t\tsection.leadChunkId = section.chunkIds[0];\n\t}\n\n\tconst sectionPathIndex = new Map<string, RAGChunkGraphSectionGroup>();\n\tfor (const section of sections.values()) {\n\t\tconst path =\n\t\t\tsection.path && section.path.length > 0\n\t\t\t\t? section.path\n\t\t\t\t: section.title\n\t\t\t\t\t? [section.title]\n\t\t\t\t\t: undefined;\n\t\tif (path && path.length > 0) {\n\t\t\tsectionPathIndex.set(path.join('\\u0000'), section);\n\t\t}\n\t}\n\n\tfor (const section of sections.values()) {\n\t\tconst path =\n\t\t\tsection.path && section.path.length > 0\n\t\t\t\t? section.path\n\t\t\t\t: section.title\n\t\t\t\t\t? [section.title]\n\t\t\t\t\t: undefined;\n\t\tif (!path || path.length < 2) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parent = sectionPathIndex.get(path.slice(0, -1).join('\\u0000'));\n\t\tif (!parent || parent.id === section.id) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tsection.parentSectionId = parent.id;\n\t\tif (!parent.childSectionIds.includes(section.id)) {\n\t\t\tparent.childSectionIds.push(section.id);\n\t\t}\n\n\t\tif (parent.leadChunkId && section.leadChunkId) {\n\t\t\tconst parentKey = `section_parent:${section.leadChunkId}:${parent.leadChunkId}`;\n\t\t\tif (!edgeKeys.has(parentKey)) {\n\t\t\t\tedgeKeys.add(parentKey);\n\t\t\t\tedges.push({\n\t\t\t\t\tfromChunkId: section.leadChunkId,\n\t\t\t\t\trelation: 'section_parent',\n\t\t\t\t\ttoChunkId: parent.leadChunkId\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst childKey = `section_child:${parent.leadChunkId}:${section.leadChunkId}`;\n\t\t\tif (!edgeKeys.has(childKey)) {\n\t\t\t\tedgeKeys.add(childKey);\n\t\t\t\tedges.push({\n\t\t\t\t\tfromChunkId: parent.leadChunkId,\n\t\t\t\t\trelation: 'section_child',\n\t\t\t\t\ttoChunkId: section.leadChunkId\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tnodes.sort((left, right) => {\n\t\tconst leftSection =\n\t\t\tleft.structure?.sequence?.sectionChunkIndex ??\n\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\tconst rightSection =\n\t\t\tright.structure?.sequence?.sectionChunkIndex ??\n\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\tif (leftSection !== rightSection) {\n\t\t\treturn leftSection - rightSection;\n\t\t}\n\n\t\tconst leftScore = left.score ?? Number.NEGATIVE_INFINITY;\n\t\tconst rightScore = right.score ?? Number.NEGATIVE_INFINITY;\n\t\tif (leftScore !== rightScore) {\n\t\t\treturn rightScore - leftScore;\n\t\t}\n\n\t\treturn left.label.localeCompare(right.label);\n\t});\n\n\treturn {\n\t\tedges,\n\t\tnodes,\n\t\tsections: [...sections.values()].sort((left, right) =>\n\t\t\t(left.title ?? left.id).localeCompare(right.title ?? right.id)\n\t\t)\n\t};\n};\n\nexport const buildRAGChunkPreviewGraph = (\n\tpreview: Pick<RAGDocumentChunkPreview, 'chunks' | 'document'>\n): RAGChunkGraph =>\n\tbuildRAGChunkGraph(\n\t\tpreview.chunks.map((chunk) => ({\n\t\t\tchunkId: chunk.chunkId,\n\t\t\tlabels: chunk.labels,\n\t\t\tmetadata: chunk.metadata,\n\t\t\tsource: chunk.source ?? preview.document.source,\n\t\t\tstructure: chunk.structure,\n\t\t\ttitle: chunk.title ?? preview.document.title\n\t\t}))\n\t);\n\nexport const buildRAGChunkPreviewNavigation = (\n\tpreview: Pick<RAGDocumentChunkPreview, 'chunks' | 'document'>,\n\tactiveChunkId?: string\n): RAGChunkGraphNavigation =>\n\tbuildRAGChunkGraphNavigation(\n\t\tbuildRAGChunkPreviewGraph(preview),\n\t\tactiveChunkId\n\t);\n\nexport const buildRAGChunkGraphNavigation = (\n\tgraph: RAGChunkGraph,\n\tactiveChunkId?: string\n): RAGChunkGraphNavigation => {\n\tif (graph.nodes.length === 0) {\n\t\treturn {\n\t\t\tactiveChunkId,\n\t\t\tchildSections: [],\n\t\t\tsiblingSections: [],\n\t\t\tsectionNodes: []\n\t\t};\n\t}\n\n\tconst activeNode =\n\t\t(activeChunkId\n\t\t\t? graph.nodes.find((node) => node.chunkId === activeChunkId)\n\t\t\t: undefined) ?? graph.nodes[0];\n\tconst resolvedActiveChunkId = activeNode?.chunkId;\n\tconst previousNode = activeNode?.structure?.sequence?.previousChunkId\n\t\t? graph.nodes.find(\n\t\t\t\t(node) =>\n\t\t\t\t\tnode.chunkId ===\n\t\t\t\t\tactiveNode.structure?.sequence?.previousChunkId\n\t\t\t)\n\t\t: undefined;\n\tconst nextNode = activeNode?.structure?.sequence?.nextChunkId\n\t\t? graph.nodes.find(\n\t\t\t\t(node) =>\n\t\t\t\t\tnode.chunkId === activeNode.structure?.sequence?.nextChunkId\n\t\t\t)\n\t\t: undefined;\n\tconst section = activeNode?.structure?.sequence?.sectionChunkId\n\t\t? graph.sections.find(\n\t\t\t\t(entry) =>\n\t\t\t\t\tentry.id === activeNode.structure?.sequence?.sectionChunkId\n\t\t\t)\n\t\t: undefined;\n\tconst parentSection = section?.parentSectionId\n\t\t? graph.sections.find((entry) => entry.id === section.parentSectionId)\n\t\t: undefined;\n\tconst childSections = section\n\t\t? section.childSectionIds\n\t\t\t\t.map((sectionId) =>\n\t\t\t\t\tgraph.sections.find((entry) => entry.id === sectionId)\n\t\t\t\t)\n\t\t\t\t.filter((entry): entry is RAGChunkGraphSectionGroup =>\n\t\t\t\t\tBoolean(entry)\n\t\t\t\t)\n\t\t: [];\n\tconst siblingSections = section?.parentSectionId\n\t\t? graph.sections.filter(\n\t\t\t\t(entry) =>\n\t\t\t\t\tentry.parentSectionId === section.parentSectionId &&\n\t\t\t\t\tentry.id !== section.id\n\t\t\t)\n\t\t: [];\n\tconst sectionNodes = section\n\t\t? section.chunkIds\n\t\t\t\t.map((chunkId) =>\n\t\t\t\t\tgraph.nodes.find((node) => node.chunkId === chunkId)\n\t\t\t\t)\n\t\t\t\t.filter((node): node is RAGChunkGraphNode => Boolean(node))\n\t\t: activeNode\n\t\t\t? [activeNode]\n\t\t\t: [];\n\n\treturn {\n\t\tactiveChunkId: resolvedActiveChunkId,\n\t\tactiveNode,\n\t\tchildSections,\n\t\tnextNode,\n\t\tparentSection,\n\t\tpreviousNode,\n\t\tsection,\n\t\tsiblingSections,\n\t\tsectionNodes\n\t};\n};\nexport const buildRAGRetrievedState = (messages: AIMessage[]) => {\n\tconst message = getLatestRetrievedMessage(messages);\n\n\tif (!message) {\n\t\treturn null;\n\t}\n\n\tconst sources = message.sources ?? [];\n\tconst groundedAnswer = buildRAGGroundedAnswer(message.content, sources);\n\n\treturn {\n\t\tcitationReferenceMap: buildRAGCitationReferenceMap(\n\t\t\tbuildRAGCitations(sources)\n\t\t),\n\t\tcitations: buildRAGCitations(sources),\n\t\tconversationId: message.conversationId,\n\t\tgroundedAnswer,\n\t\tmessageId: message.id,\n\t\tretrievalDurationMs: message.retrievalDurationMs,\n\t\tretrievalStartedAt: message.retrievalStartedAt,\n\t\tretrievedAt: message.retrievedAt,\n\t\ttrace: isRAGRetrievalTrace(message.retrievalTrace)\n\t\t\t? message.retrievalTrace\n\t\t\t: undefined,\n\t\tsourceGroups: buildRAGSourceGroups(sources),\n\t\tsourceSummaries: buildRAGSourceSummaries(sources),\n\t\tsources\n\t};\n};\nexport const buildRAGSourceSummaries = (sources: RAGSource[]) => {\n\tconst sourceGroups = buildRAGSourceGroups(sources);\n\tconst citations = buildRAGCitations(sources);\n\tconst citationReferenceMap = buildRAGCitationReferenceMap(citations);\n\n\treturn sourceGroups.map<RAGSourceSummary>((group) => {\n\t\tconst groupCitations = citations.filter((citation) =>\n\t\t\tgroup.chunks.some((chunk) => chunk.chunkId === citation.chunkId)\n\t\t);\n\t\tconst leadChunk = group.chunks\n\t\t\t.slice()\n\t\t\t.sort((left, right) => right.score - left.score)[0];\n\t\tconst excerpts = leadChunk\n\t\t\t? buildRAGChunkExcerpts(group.chunks, leadChunk.chunkId)\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tbestScore: group.bestScore,\n\t\t\tcitationNumbers: groupCitations.map(\n\t\t\t\t(citation) => citationReferenceMap[citation.chunkId] ?? 0\n\t\t\t),\n\t\t\tcitations: groupCitations,\n\t\t\tchunkIds: group.chunks.map((chunk) => chunk.chunkId),\n\t\t\tcontextLabel:\n\t\t\t\tleadChunk?.labels?.contextLabel ??\n\t\t\t\tbuildContextLabel(leadChunk?.metadata),\n\t\t\tcount: group.count,\n\t\t\texcerpt:\n\t\t\t\tbuildRAGPreferredExcerpt(\n\t\t\t\t\texcerpts,\n\t\t\t\t\tleadChunk?.structure ??\n\t\t\t\t\t\tbuildRAGChunkStructure(leadChunk?.metadata)\n\t\t\t\t) || buildExcerpt(leadChunk?.text ?? ''),\n\t\t\texcerpts,\n\t\t\tkey: group.key,\n\t\t\tlabel: group.label,\n\t\t\tlocatorLabel:\n\t\t\t\tleadChunk?.labels?.locatorLabel ??\n\t\t\t\tbuildLocatorLabel(\n\t\t\t\t\tleadChunk?.metadata,\n\t\t\t\t\tleadChunk?.source,\n\t\t\t\t\tleadChunk?.title\n\t\t\t\t),\n\t\t\tprovenanceLabel:\n\t\t\t\tleadChunk?.labels?.provenanceLabel ??\n\t\t\t\tbuildProvenanceLabel(leadChunk?.metadata),\n\t\t\tstructure:\n\t\t\t\tleadChunk?.structure ??\n\t\t\t\tbuildRAGChunkStructure(leadChunk?.metadata),\n\t\t\tsource: group.source,\n\t\t\ttitle: group.title\n\t\t};\n\t});\n};\n\nexport type RAGStreamProgress = {\n\tstage: RAGStreamStage;\n\tconversationId?: string;\n\tmessageId?: string;\n\tretrievalStartedAt?: number;\n\tretrievedAt?: number;\n\tretrievalDurationMs?: number;\n\thasContent: boolean;\n\thasRetrieved: boolean;\n\thasSources: boolean;\n\thasThinking: boolean;\n\thasToolCalls: boolean;\n\tisComplete: boolean;\n\tisError: boolean;\n\tisIdle: boolean;\n\tisRetrieving: boolean;\n\tisRetrieved: boolean;\n\tisStreaming: boolean;\n\tisSubmitting: boolean;\n\tsourceCount: number;\n\tlatestMessage: AIMessage | undefined;\n};\n\nconst buildStreamProgressState = (messages: AIMessage[]) => {\n\tconst latestMessage = getLatestAssistantMessage(messages);\n\tconst retrieved = latestMessage\n\t\t? buildRAGRetrievedState(messages)\n\t\t: undefined;\n\n\treturn {\n\t\tconversationId: latestMessage?.conversationId,\n\t\tlatestMessage,\n\t\tmessageId: latestMessage?.id,\n\t\tretrieved,\n\t\tsourceCount:\n\t\t\tretrieved?.sources.length ?? latestMessage?.sources?.length ?? 0\n\t};\n};\n\nexport const buildRAGStreamProgress = ({\n\terror,\n\tisStreaming,\n\tmessages\n}: {\n\terror: string | null;\n\tisStreaming: boolean;\n\tmessages: AIMessage[];\n}): RAGStreamProgress => {\n\tconst stage = resolveRAGStreamStage({\n\t\terror,\n\t\tisStreaming,\n\t\tmessages\n\t});\n\tconst state = buildStreamProgressState(messages);\n\tconst hasSources = state.sourceCount > 0;\n\tconst hasRetrieved =\n\t\tstage === 'retrieved' ||\n\t\tstate.retrieved !== undefined ||\n\t\tstate.latestMessage?.retrievedAt !== undefined;\n\tconst hasThinking =\n\t\ttypeof state.latestMessage?.thinking === 'string' &&\n\t\tstate.latestMessage.thinking.length > 0;\n\tconst hasToolCalls = (state.latestMessage?.toolCalls?.length ?? 0) > 0;\n\n\treturn {\n\t\tconversationId: state.conversationId,\n\t\thasContent:\n\t\t\ttypeof state.latestMessage?.content === 'string' &&\n\t\t\tstate.latestMessage.content.length > 0,\n\t\thasRetrieved,\n\t\thasSources,\n\t\thasThinking,\n\t\thasToolCalls,\n\t\tisComplete: stage === 'complete',\n\t\tisError: stage === 'error',\n\t\tisIdle: stage === 'idle',\n\t\tisRetrieved: stage === 'retrieved',\n\t\tisRetrieving: stage === 'submitting' || stage === 'retrieving',\n\t\tisStreaming: stage === 'streaming',\n\t\tisSubmitting: stage === 'submitting',\n\t\tlatestMessage: state.latestMessage,\n\t\tmessageId: state.messageId,\n\t\tretrievalDurationMs: state.retrieved?.retrievalDurationMs,\n\t\tretrievalStartedAt: state.retrieved?.retrievalStartedAt,\n\t\tretrievedAt: state.retrieved?.retrievedAt,\n\t\tsourceCount: state.sourceCount,\n\t\tstage\n\t};\n};\n\nexport type RAGStreamProgressState = ReturnType<typeof buildRAGStreamProgress>;\nexport const buildRAGAnswerWorkflowState = ({\n\terror,\n\tisStreaming,\n\tmessages\n}: {\n\terror: string | null;\n\tisStreaming: boolean;\n\tmessages: AIMessage[];\n}): RAGAnswerWorkflowState => {\n\tconst latestAssistantMessage = getLatestAssistantMessage(messages);\n\tconst sources = getLatestRAGSources(messages);\n\tconst sourceGroups = buildRAGSourceGroups(sources);\n\tconst citations = buildRAGCitations(sources);\n\tconst citationReferenceMap = buildRAGCitationReferenceMap(citations);\n\tconst sourceSummaries = buildRAGSourceSummaries(sources);\n\tconst groundingReferences = buildRAGGroundingReferences(sources);\n\tconst groundedAnswer = buildRAGGroundedAnswer(\n\t\tlatestAssistantMessage?.content ?? '',\n\t\tsources\n\t);\n\tconst retrieval = buildRAGRetrievedState(messages);\n\tconst progress = buildRAGStreamProgress({\n\t\terror,\n\t\tisStreaming,\n\t\tmessages\n\t});\n\n\treturn {\n\t\tcitationReferenceMap,\n\t\tcitations,\n\t\tcoverage: groundedAnswer.coverage,\n\t\terror,\n\t\tgroundedAnswer,\n\t\tgroundingReferences,\n\t\thasCitations: groundedAnswer.hasCitations,\n\t\thasGrounding: groundingReferences.length > 0,\n\t\thasRetrieved: progress.hasRetrieved,\n\t\thasSources: sources.length > 0,\n\t\tisAnswerStreaming: progress.isStreaming,\n\t\tisComplete: progress.isComplete,\n\t\tisError: progress.isError,\n\t\tisIdle: progress.isIdle,\n\t\tisRetrieved: progress.isRetrieved,\n\t\tisRetrieving: progress.isRetrieving,\n\t\tisRunning:\n\t\t\tprogress.isSubmitting ||\n\t\t\tprogress.isRetrieving ||\n\t\t\tprogress.isStreaming,\n\t\tisSubmitting: progress.isSubmitting,\n\t\tlatestAssistantMessage,\n\t\tmessages,\n\t\tretrieval,\n\t\tretrievalDurationMs: retrieval?.retrievalDurationMs,\n\t\tretrievalStartedAt: retrieval?.retrievalStartedAt,\n\t\tretrievedAt: retrieval?.retrievedAt,\n\t\tsourceGroups,\n\t\tsourceSummaries,\n\t\tsources,\n\t\tstage: progress.stage,\n\t\tungroundedReferenceNumbers: groundedAnswer.ungroundedReferenceNumbers\n\t};\n};\n\nexport const buildRAGSourceGroups = (sources: RAGSource[]) => {\n\tconst groups = new Map<string, RAGSourceGroup>();\n\n\tfor (const source of sources) {\n\t\tupdateSourceGroup(groups, source);\n\t}\n\n\treturn [...groups.values()].sort((left, right) => {\n\t\tif (right.bestScore !== left.bestScore) {\n\t\t\treturn right.bestScore - left.bestScore;\n\t\t}\n\n\t\treturn left.label.localeCompare(right.label);\n\t});\n};\n\nconst buildSourceGroup = (source: RAGSource, key: string): RAGSourceGroup => ({\n\tbestScore: source.score,\n\tchunks: [source],\n\tcount: 1,\n\tkey,\n\tlabel: buildSourceLabel(source),\n\tlabels:\n\t\tsource.labels ??\n\t\tbuildRAGSourceLabels({\n\t\t\tmetadata: source.metadata,\n\t\t\tsource: source.source,\n\t\t\ttitle: source.title\n\t\t}),\n\tstructure: source.structure ?? buildRAGChunkStructure(source.metadata),\n\tsource: source.source,\n\ttitle: source.title\n});\n\nconst updateSourceGroup = (\n\tgroups: Map<string, RAGSourceGroup>,\n\tsource: RAGSource\n) => {\n\tconst key = buildSourceGroupKey(source);\n\tconst existing = groups.get(key);\n\tif (!existing) {\n\t\tgroups.set(key, buildSourceGroup(source, key));\n\n\t\treturn;\n\t}\n\n\tif (source.score > existing.bestScore) {\n\t\texisting.bestScore = source.score;\n\t\texisting.label = buildSourceLabel(source);\n\t\texisting.labels =\n\t\t\tsource.labels ??\n\t\t\tbuildRAGSourceLabels({\n\t\t\t\tmetadata: source.metadata,\n\t\t\t\tsource: source.source,\n\t\t\t\ttitle: source.title\n\t\t\t});\n\t\texisting.structure =\n\t\t\tsource.structure ?? buildRAGChunkStructure(source.metadata);\n\t\texisting.source = source.source;\n\t\texisting.title = source.title;\n\t} else {\n\t\texisting.bestScore = Math.max(existing.bestScore, source.score);\n\t}\n\texisting.count += 1;\n\texisting.chunks.push(source);\n};\nexport const getLatestAssistantMessage = (messages: AIMessage[]) => {\n\tfor (let index = messages.length - 1; index >= 0; index -= 1) {\n\t\tconst message = messages[index];\n\t\tif (message?.role === 'assistant') {\n\t\t\treturn message;\n\t\t}\n\t}\n\n\treturn undefined;\n};\nexport const getLatestRAGSources = (messages: AIMessage[]) =>\n\tgetLatestAssistantMessage(messages)?.sources ?? [];\nexport const getLatestRetrievedMessage = (messages: AIMessage[]) => {\n\tfor (let index = messages.length - 1; index >= 0; index -= 1) {\n\t\tconst message = messages[index];\n\t\tif (\n\t\t\tmessage?.role === 'assistant' &&\n\t\t\t(typeof message.retrievedAt === 'number' ||\n\t\t\t\t(message.sources?.length ?? 0) > 0)\n\t\t) {\n\t\t\treturn message;\n\t\t}\n\t}\n\n\treturn undefined;\n};\nexport const resolveRAGStreamStage = ({\n\terror,\n\tisStreaming,\n\tmessages\n}: {\n\terror: string | null;\n\tisStreaming: boolean;\n\tmessages: AIMessage[];\n}) => {\n\tif (error) {\n\t\treturn 'error';\n\t}\n\n\tconst assistantMessage = getLatestAssistantMessage(messages);\n\tif (!assistantMessage) {\n\t\treturn isStreaming ? 'submitting' : 'idle';\n\t}\n\n\tconst isRetrieving =\n\t\ttypeof assistantMessage.retrievalStartedAt === 'number' &&\n\t\ttypeof assistantMessage.retrievedAt !== 'number';\n\n\tif (isRetrieving) {\n\t\treturn 'retrieving';\n\t}\n\n\tif (!isStreaming) {\n\t\treturn 'complete';\n\t}\n\n\tconst hasRetrieved = typeof assistantMessage.retrievedAt === 'number';\n\tconst hasContent =\n\t\tassistantMessage.content.trim().length > 0 ||\n\t\tassistantMessage.thinking?.trim().length ||\n\t\t(assistantMessage.toolCalls?.length ?? 0) > 0 ||\n\t\t(assistantMessage.images?.length ?? 0) > 0;\n\n\tif (hasRetrieved && !hasContent) {\n\t\treturn 'retrieved';\n\t}\n\n\treturn 'streaming';\n};\n\nconst formatSignedDelta = (value: number, decimals = 0, suffix = '') =>\n\t`${value >= 0 ? '+' : ''}${value.toFixed(decimals)}${suffix}`;\n\nconst formatEvaluationPassingRate = (value: number) => `${value.toFixed(1)}%`;\n\nconst formatEvaluationSummary = (response: RAGEvaluationResponse) =>\n\t`${response.summary.totalCases} total · f1 ${response.summary.averageF1.toFixed(\n\t\t3\n\t)} · latency ${response.summary.averageLatencyMs.toFixed(1)}ms`;\n\nconst formatGroundingHistorySummaryValue = (response: {\n\tsummary: {\n\t\tpassedCases: number;\n\t\ttotalCases: number;\n\t\tgroundedCases: number;\n\t\tpartialCases: number;\n\t\tungroundedCases: number;\n\t\taverageResolvedCitationRate: number;\n\t\taverageCitationF1: number;\n\t};\n}) =>\n\t`${response.summary.passedCases}/${response.summary.totalCases} pass · grounded ${response.summary.groundedCases} · partial ${response.summary.partialCases} · ungrounded ${response.summary.ungroundedCases} · resolved citations ${(response.summary.averageResolvedCitationRate * 100).toFixed(1)}% · citation f1 ${response.summary.averageCitationF1.toFixed(3)}`;\n\nconst formatHistoryCaseLabels = (cases: RAGEvaluationCaseDiff[]) =>\n\tcases.length > 0\n\t\t? cases.map((entry) => entry.label ?? entry.caseId).join(', ')\n\t\t: 'none';\n\nconst formatGroundingHistoryCaseLabels = (\n\tcases: RAGAnswerGroundingEvaluationCaseDiff[]\n) =>\n\tcases.length > 0\n\t\t? cases.map((entry) => entry.label ?? entry.caseId).join(', ')\n\t\t: 'none';\n\nconst formatRerankerComparisonHeadline = (entry: RAGRerankerComparisonEntry) =>\n\t[\n\t\tentry.label,\n\t\t`passing ${formatEvaluationPassingRate(entry.response.passingRate)}`,\n\t\t`f1 ${entry.response.summary.averageF1.toFixed(3)}`,\n\t\t`latency ${entry.response.summary.averageLatencyMs.toFixed(1)}ms`\n\t].join(' · ');\n\nconst formatRetrievalComparisonHeadline = (\n\tentry: RAGRetrievalComparisonEntry\n) =>\n\t[\n\t\tentry.label,\n\t\t`mode ${entry.retrievalMode}`,\n\t\t`passing ${formatEvaluationPassingRate(entry.response.passingRate)}`,\n\t\t`f1 ${entry.response.summary.averageF1.toFixed(3)}`,\n\t\t`latency ${entry.response.summary.averageLatencyMs.toFixed(1)}ms`\n\t].join(' · ');\n\nconst formatTraceModes = (modes: RAGHybridRetrievalMode[]) =>\n\tmodes.length > 0 ? modes.join(' / ') : 'n/a';\n\nconst formatSourceBalanceStrategies = (\n\tstrategies: RAGSourceBalanceStrategy[]\n) => (strategies.length > 0 ? strategies.join(' / ') : 'n/a');\n\nconst formatTraceStageSummary = (\n\tstageCounts: Partial<\n\t\tRecord<RAGRetrievalTrace['steps'][number]['stage'], number>\n\t>\n) => {\n\tconst topStages = Object.entries(stageCounts)\n\t\t.sort((left, right) => right[1] - left[1])\n\t\t.slice(0, 3);\n\n\treturn topStages.length > 0\n\t\t? topStages.map(([stage, count]) => `${stage} ${count}`).join(' · ')\n\t\t: 'n/a';\n};\n\nconst formatTraceRatio = (count: number, total: number) => `${count}/${total}`;\n\nconst formatTraceCountDelta = (value: number) =>\n\t`${value >= 0 ? '+' : ''}${value}`;\n\nconst buildComparisonOverviewPresentation = <\n\tTEntry extends {\n\t\tlabel: string;\n\t\tresponse: {\n\t\t\tpassingRate: number;\n\t\t\tsummary: {\n\t\t\t\taverageF1: number;\n\t\t\t\taverageLatencyMs: number;\n\t\t\t};\n\t\t};\n\t}\n>(input: {\n\tentries: TEntry[];\n\tsummary: {\n\t\tbestByPassingRate?: string;\n\t\tbestByAverageF1?: string;\n\t\tfastest?: string;\n\t};\n\tresolveLabel: (id?: string) => string;\n\tresolveEntry: (id?: string) => TEntry | undefined;\n}): RAGComparisonOverviewPresentation => {\n\tconst winnerLabel = input.resolveLabel(input.summary.bestByPassingRate);\n\tconst winnerEntry = input.resolveEntry(input.summary.bestByPassingRate);\n\n\treturn {\n\t\trows: [\n\t\t\t{\n\t\t\t\tlabel: 'Best passing rate',\n\t\t\t\tvalue: input.resolveLabel(input.summary.bestByPassingRate)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Best average F1',\n\t\t\t\tvalue: input.resolveLabel(input.summary.bestByAverageF1)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Fastest',\n\t\t\t\tvalue: input.resolveLabel(input.summary.fastest)\n\t\t\t}\n\t\t],\n\t\twinnerLabel,\n\t\tsummary: winnerEntry\n\t\t\t? `passing ${formatEvaluationPassingRate(winnerEntry.response.passingRate)} · f1 ${winnerEntry.response.summary.averageF1.toFixed(3)} · latency ${winnerEntry.response.summary.averageLatencyMs.toFixed(1)}ms`\n\t\t\t: 'Stored benchmark comparison'\n\t};\n};\n\nexport const buildRAGComparisonTraceSummaryRows = (\n\tentry: RAGRerankerComparisonEntry | RAGRetrievalComparisonEntry\n): RAGLabelValueRow[] => {\n\tconst trace = entry.traceSummary;\n\n\tif (!trace) {\n\t\treturn [{ label: 'Trace', value: 'Unavailable' }];\n\t}\n\n\treturn [\n\t\t{ label: 'Modes', value: formatTraceModes(trace.modes) },\n\t\t{\n\t\t\tlabel: 'Balance',\n\t\t\tvalue: formatSourceBalanceStrategies(trace.sourceBalanceStrategies)\n\t\t},\n\t\t{ label: 'Avg final', value: trace.averageFinalCount.toFixed(1) },\n\t\t{ label: 'Avg vector', value: trace.averageVectorCount.toFixed(1) },\n\t\t{ label: 'Avg lexical', value: trace.averageLexicalCount.toFixed(1) },\n\t\t{\n\t\t\tlabel: 'Balanced',\n\t\t\tvalue: formatTraceRatio(trace.balancedCases, trace.totalCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Round robin',\n\t\t\tvalue: formatTraceRatio(trace.roundRobinCases, trace.totalCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Transforms',\n\t\t\tvalue: formatTraceRatio(trace.transformedCases, trace.totalCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Variants',\n\t\t\tvalue: formatTraceRatio(trace.variantCases, trace.totalCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'TopK',\n\t\t\tvalue: `${trace.averageCandidateTopK.toFixed(\n\t\t\t\t1\n\t\t\t)} / ${trace.averageLexicalTopK.toFixed(1)}`\n\t\t},\n\t\t{\n\t\t\tlabel: 'Stages',\n\t\t\tvalue: formatTraceStageSummary(trace.stageCounts)\n\t\t}\n\t];\n};\n\nexport const buildRAGComparisonTraceDiffRows = (\n\tentry: RAGRerankerComparisonEntry | RAGRetrievalComparisonEntry,\n\tleader?: RAGRerankerComparisonEntry | RAGRetrievalComparisonEntry\n): RAGLabelValueRow[] => {\n\tconst trace = entry.traceSummary;\n\n\tif (!trace) {\n\t\treturn [{ label: 'Trace', value: 'Unavailable for comparison' }];\n\t}\n\n\tconst leaderTrace = leader?.traceSummary;\n\tif (!leaderTrace) {\n\t\treturn [{ label: 'Baseline', value: 'Leader trace unavailable' }];\n\t}\n\n\tif (entry === leader) {\n\t\treturn [{ label: 'Baseline', value: 'Leader strategy' }];\n\t}\n\n\tconst stageDelta = Object.keys({\n\t\t...leaderTrace.stageCounts,\n\t\t...trace.stageCounts\n\t})\n\t\t.map((stage) => {\n\t\t\tconst typedStage = stage as RAGRetrievalTraceStep['stage'];\n\t\t\tconst delta =\n\t\t\t\t(trace.stageCounts[typedStage] ?? 0) -\n\t\t\t\t(leaderTrace.stageCounts[typedStage] ?? 0);\n\t\t\treturn delta === 0\n\t\t\t\t? null\n\t\t\t\t: `${typedStage} ${formatTraceCountDelta(delta)}`;\n\t\t})\n\t\t.filter((value): value is string => Boolean(value))\n\t\t.slice(0, 3)\n\t\t.join(' · ');\n\n\tconst rows: RAGLabelValueRow[] = [\n\t\t{ label: 'Baseline', value: leader.label }\n\t];\n\n\tif (formatTraceModes(trace.modes) !== formatTraceModes(leaderTrace.modes)) {\n\t\trows.push({\n\t\t\tlabel: 'Modes vs leader',\n\t\t\tvalue: `${formatTraceModes(trace.modes)} vs ${formatTraceModes(\n\t\t\t\tleaderTrace.modes\n\t\t\t)}`\n\t\t});\n\t}\n\n\tif (\n\t\tformatSourceBalanceStrategies(trace.sourceBalanceStrategies) !==\n\t\tformatSourceBalanceStrategies(leaderTrace.sourceBalanceStrategies)\n\t) {\n\t\trows.push({\n\t\t\tlabel: 'Balance vs leader',\n\t\t\tvalue: `${formatSourceBalanceStrategies(\n\t\t\t\ttrace.sourceBalanceStrategies\n\t\t\t)} vs ${formatSourceBalanceStrategies(\n\t\t\t\tleaderTrace.sourceBalanceStrategies\n\t\t\t)}`\n\t\t});\n\t}\n\n\trows.push(\n\t\t{\n\t\t\tlabel: 'Final delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\ttrace.averageFinalCount - leaderTrace.averageFinalCount,\n\t\t\t\t1\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Vector delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\ttrace.averageVectorCount - leaderTrace.averageVectorCount,\n\t\t\t\t1\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Lexical delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\ttrace.averageLexicalCount - leaderTrace.averageLexicalCount,\n\t\t\t\t1\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Transform delta',\n\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\ttrace.transformedCases - leaderTrace.transformedCases\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Balanced delta',\n\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\ttrace.balancedCases - leaderTrace.balancedCases\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Round robin delta',\n\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\ttrace.roundRobinCases - leaderTrace.roundRobinCases\n\t\t\t)\n\t\t}\n\t);\n\n\tif (stageDelta) {\n\t\trows.push({ label: 'Stage delta', value: stageDelta });\n\t}\n\n\treturn rows;\n};\n\nexport const buildRAGRetrievalComparisonPresentations = (\n\tcomparison: RAGRetrievalComparison\n): RAGComparisonPresentation[] => {\n\tconst leader = comparison.entries[0];\n\treturn comparison.entries.map((entry) => ({\n\t\tdiffLabel: leader?.label ?? 'Leader',\n\t\tdiffRows: buildRAGComparisonTraceDiffRows(entry, leader),\n\t\tsummary: formatRetrievalComparisonHeadline(entry),\n\t\tid: entry.retrievalId,\n\t\tlabel: entry.label,\n\t\ttraceSummaryRows: buildRAGComparisonTraceSummaryRows(entry)\n\t}));\n};\n\nexport const buildRAGRetrievalComparisonOverviewPresentation = (\n\tcomparison: RAGRetrievalComparison\n): RAGComparisonOverviewPresentation =>\n\tbuildComparisonOverviewPresentation({\n\t\tentries: comparison.entries,\n\t\tresolveEntry: (id?: string) =>\n\t\t\tcomparison.entries.find((entry) => entry.retrievalId === id),\n\t\tresolveLabel: (id?: string) =>\n\t\t\tcomparison.entries.find((entry) => entry.retrievalId === id)\n\t\t\t\t?.label ??\n\t\t\tid ??\n\t\t\t'n/a',\n\t\tsummary: comparison.summary\n\t});\n\nexport const buildRAGRerankerComparisonPresentations = (\n\tcomparison: RAGRerankerComparison\n): RAGComparisonPresentation[] => {\n\tconst leader = comparison.entries[0];\n\treturn comparison.entries.map((entry) => ({\n\t\tdiffLabel: leader?.label ?? 'Leader',\n\t\tdiffRows: buildRAGComparisonTraceDiffRows(entry, leader),\n\t\tsummary: formatRerankerComparisonHeadline(entry),\n\t\tid: entry.rerankerId,\n\t\tlabel: entry.label,\n\t\ttraceSummaryRows: buildRAGComparisonTraceSummaryRows(entry)\n\t}));\n};\n\nexport const buildRAGRerankerComparisonOverviewPresentation = (\n\tcomparison: RAGRerankerComparison\n): RAGComparisonOverviewPresentation =>\n\tbuildComparisonOverviewPresentation({\n\t\tentries: comparison.entries,\n\t\tresolveEntry: (id?: string) =>\n\t\t\tcomparison.entries.find((entry) => entry.rerankerId === id),\n\t\tresolveLabel: (id?: string) =>\n\t\t\tcomparison.entries.find((entry) => entry.rerankerId === id)\n\t\t\t\t?.label ??\n\t\t\tid ??\n\t\t\t'n/a',\n\t\tsummary: comparison.summary\n\t});\n\nexport const buildRAGGroundingProviderPresentations = (\n\tentries: Array<{\n\t\tproviderKey: string;\n\t\tlabel: string;\n\t\telapsedMs: number;\n\t\tresponse: RAGAnswerGroundingEvaluationResponse;\n\t}>\n): RAGGroundingProviderPresentation[] =>\n\tentries.map((entry) => ({\n\t\tsummary: [\n\t\t\tentry.label,\n\t\t\t`passing ${formatEvaluationPassingRate(entry.response.passingRate)}`,\n\t\t\t`citation f1 ${entry.response.summary.averageCitationF1.toFixed(3)}`,\n\t\t\t`resolved ${formatEvaluationPassingRate(\n\t\t\t\tentry.response.summary.averageResolvedCitationRate\n\t\t\t)}`,\n\t\t\t`latency ${entry.elapsedMs.toFixed(1)}ms`\n\t\t].join(' · '),\n\t\tid: entry.providerKey,\n\t\tlabel: entry.label\n\t}));\n\nexport const buildRAGGroundingProviderOverviewPresentation = (input: {\n\tentries: Array<{\n\t\tproviderKey: string;\n\t\tlabel: string;\n\t\telapsedMs: number;\n\t\tresponse: RAGAnswerGroundingEvaluationResponse;\n\t}>;\n\tsummary: {\n\t\tbestByPassingRate?: string;\n\t\tbestByAverageCitationF1?: string;\n\t\tbestByResolvedCitationRate?: string;\n\t\tfastest?: string;\n\t};\n}): RAGGroundingProviderOverviewPresentation => {\n\tconst resolveLabel = (key?: string) =>\n\t\tinput.entries.find((entry) => entry.providerKey === key)?.label ??\n\t\tkey ??\n\t\t'n/a';\n\tconst winnerLabel = resolveLabel(input.summary.bestByPassingRate);\n\tconst winnerEntry = input.entries.find(\n\t\t(entry) => entry.providerKey === input.summary.bestByPassingRate\n\t);\n\n\treturn {\n\t\trows: [\n\t\t\t{\n\t\t\t\tlabel: 'Best passing rate',\n\t\t\t\tvalue: resolveLabel(input.summary.bestByPassingRate)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Best citation F1',\n\t\t\t\tvalue: resolveLabel(input.summary.bestByAverageCitationF1)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Best resolved citations',\n\t\t\t\tvalue: resolveLabel(input.summary.bestByResolvedCitationRate)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Fastest',\n\t\t\t\tvalue: resolveLabel(input.summary.fastest)\n\t\t\t}\n\t\t],\n\t\twinnerLabel,\n\t\tsummary: winnerEntry\n\t\t\t? `passing ${formatEvaluationPassingRate(winnerEntry.response.passingRate)} · citation f1 ${winnerEntry.response.summary.averageCitationF1.toFixed(3)} · resolved ${formatEvaluationPassingRate(winnerEntry.response.summary.averageResolvedCitationRate)}`\n\t\t\t: 'Stored workflow evaluation'\n\t};\n};\n\nexport const buildRAGRetrievalOverviewPresentation = (\n\tcomparison: RAGRetrievalComparison\n): RAGQualityOverviewPresentation => ({\n\trows: buildRAGRetrievalComparisonOverviewPresentation(comparison).rows\n});\n\nexport const buildRAGRerankerOverviewPresentation = (\n\tcomparison: RAGRerankerComparison\n): RAGQualityOverviewPresentation => ({\n\trows: buildRAGRerankerComparisonOverviewPresentation(comparison).rows\n});\n\nexport const buildRAGGroundingOverviewPresentation = (input: {\n\tgroundingEvaluation: RAGAnswerGroundingEvaluationResponse;\n\tgroundingProviderOverview?: RAGGroundingProviderOverviewPresentation | null;\n}): RAGGroundingOverviewPresentation => ({\n\trows: [\n\t\t{\n\t\t\tlabel: 'Grounding',\n\t\t\tvalue: formatGroundingHistorySummaryValue(input.groundingEvaluation)\n\t\t},\n\t\t...(input.groundingProviderOverview?.rows ?? [\n\t\t\t{\n\t\t\t\tlabel: 'Grounding providers',\n\t\t\t\tvalue: 'Configure an AI provider to compare grounded answers.'\n\t\t\t}\n\t\t])\n\t]\n});\n\nexport const buildRAGQualityOverviewPresentation = (input: {\n\tretrievalComparison: RAGRetrievalComparison;\n\trerankerComparison: RAGRerankerComparison;\n\tgroundingEvaluation: RAGAnswerGroundingEvaluationResponse;\n\tgroundingProviderOverview?: RAGGroundingProviderOverviewPresentation | null;\n}): RAGQualityOverviewPresentation => ({\n\trows: [\n\t\t...buildRAGRetrievalOverviewPresentation(input.retrievalComparison)\n\t\t\t.rows,\n\t\t...buildRAGRerankerOverviewPresentation(input.rerankerComparison).rows,\n\t\t...buildRAGGroundingOverviewPresentation({\n\t\t\tgroundingEvaluation: input.groundingEvaluation,\n\t\t\tgroundingProviderOverview: input.groundingProviderOverview\n\t\t}).rows\n\t]\n});\n\nexport const buildRAGGroundingProviderCaseComparisonPresentations = (\n\tcomparisons: Array<{\n\t\tcaseId: string;\n\t\tlabel: string;\n\t\tentries: Array<{\n\t\t\tproviderKey: string;\n\t\t\tlabel: string;\n\t\t\tstatus: string;\n\t\t\tcoverage: string;\n\t\t\tcitationF1: number;\n\t\t\tresolvedCitationRate: number;\n\t\t\tmatchedIds: string[];\n\t\t\tmissingIds: string[];\n\t\t\textraIds: string[];\n\t\t\tanswerExcerpt: string;\n\t\t}>;\n\t\tsummary: {\n\t\t\tbestByStatus?: string;\n\t\t\tbestByCitationF1?: string;\n\t\t\tbestByResolvedCitationRate?: string;\n\t\t};\n\t}>\n): RAGGroundingProviderCaseComparisonPresentation[] =>\n\tcomparisons.map((comparison) => {\n\t\tconst resolveLabel = (key?: string) =>\n\t\t\tcomparison.entries.find((entry) => entry.providerKey === key)\n\t\t\t\t?.label ??\n\t\t\tkey ??\n\t\t\t'n/a';\n\n\t\treturn {\n\t\t\tcaseId: comparison.caseId,\n\t\t\tlabel: comparison.label,\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Best grounded',\n\t\t\t\t\tvalue: resolveLabel(comparison.summary.bestByStatus)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Best citation F1',\n\t\t\t\t\tvalue: resolveLabel(comparison.summary.bestByCitationF1)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Best resolved citations',\n\t\t\t\t\tvalue: resolveLabel(\n\t\t\t\t\t\tcomparison.summary.bestByResolvedCitationRate\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t...comparison.entries.map((entry) => ({\n\t\t\t\t\tlabel: entry.label,\n\t\t\t\t\tvalue: [\n\t\t\t\t\t\tentry.status.toUpperCase(),\n\t\t\t\t\t\t`coverage ${entry.coverage}`,\n\t\t\t\t\t\t`f1 ${entry.citationF1.toFixed(3)}`,\n\t\t\t\t\t\t`resolved ${formatEvaluationPassingRate(\n\t\t\t\t\t\t\tentry.resolvedCitationRate\n\t\t\t\t\t\t)}`,\n\t\t\t\t\t\t`matched ${entry.matchedIds.join(', ') || 'none'}`,\n\t\t\t\t\t\t`missing ${entry.missingIds.join(', ') || 'none'}`,\n\t\t\t\t\t\t`extra ${entry.extraIds.join(', ') || 'none'}`,\n\t\t\t\t\t\t`answer ${entry.answerExcerpt || 'n/a'}`\n\t\t\t\t\t].join(' · ')\n\t\t\t\t}))\n\t\t\t],\n\t\t\tsummary: [\n\t\t\t\t`Best grounded: ${resolveLabel(comparison.summary.bestByStatus)}`,\n\t\t\t\t`Best citation F1: ${resolveLabel(\n\t\t\t\t\tcomparison.summary.bestByCitationF1\n\t\t\t\t)}`,\n\t\t\t\t`Best resolved citations: ${resolveLabel(\n\t\t\t\t\tcomparison.summary.bestByResolvedCitationRate\n\t\t\t\t)}`\n\t\t\t].join(' · ')\n\t\t};\n\t});\n\nexport const buildRAGEvaluationHistoryRows = (\n\thistory?: RAGEvaluationHistory\n): RAGLabelValueRow[] => {\n\tif (!history?.latestRun) {\n\t\treturn [\n\t\t\t{ label: 'History', value: 'No persisted benchmark runs yet.' }\n\t\t];\n\t}\n\n\tconst rows: RAGLabelValueRow[] = [\n\t\t{ label: 'Runs recorded', value: String(history.runs.length) },\n\t\t{\n\t\t\tlabel: 'Latest',\n\t\t\tvalue: `${history.latestRun.label} · ${formatEvaluationSummary(\n\t\t\t\thistory.latestRun.response\n\t\t\t)}`\n\t\t}\n\t];\n\n\tif (history.latestRun.traceSummary) {\n\t\trows.push({\n\t\t\tlabel: 'Latest trace',\n\t\t\tvalue: `${formatTraceModes(\n\t\t\t\thistory.latestRun.traceSummary.modes\n\t\t\t)} · balance ${formatSourceBalanceStrategies(\n\t\t\t\thistory.latestRun.traceSummary.sourceBalanceStrategies\n\t\t\t)} · final ${history.latestRun.traceSummary.averageFinalCount.toFixed(\n\t\t\t\t1\n\t\t\t)} · vector ${history.latestRun.traceSummary.averageVectorCount.toFixed(\n\t\t\t\t1\n\t\t\t)} · lexical ${history.latestRun.traceSummary.averageLexicalCount.toFixed(\n\t\t\t\t1\n\t\t\t)}`\n\t\t});\n\t}\n\n\tif (history.previousRun) {\n\t\trows.push({\n\t\t\tlabel: 'Previous',\n\t\t\tvalue: `${history.previousRun.label} · ${formatEvaluationSummary(\n\t\t\t\thistory.previousRun.response\n\t\t\t)}`\n\t\t});\n\t}\n\n\tif (!history.diff) {\n\t\trows.push({\n\t\t\tlabel: 'History diff',\n\t\t\tvalue: 'Run the benchmark again to diff regressions over time.'\n\t\t});\n\t\treturn rows;\n\t}\n\n\trows.push(\n\t\t{\n\t\t\tlabel: 'Passing delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\thistory.diff.summaryDelta.passingRate,\n\t\t\t\t1,\n\t\t\t\t'%'\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Average F1 delta',\n\t\t\tvalue: formatSignedDelta(history.diff.summaryDelta.averageF1, 3)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Latency delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\thistory.diff.summaryDelta.averageLatencyMs,\n\t\t\t\t1,\n\t\t\t\t'ms'\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Improved',\n\t\t\tvalue: formatHistoryCaseLabels(history.diff.improvedCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Regressed',\n\t\t\tvalue: formatHistoryCaseLabels(history.diff.regressedCases)\n\t\t}\n\t);\n\n\tif (history.diff.traceSummaryDelta) {\n\t\trows.push(\n\t\t\t{\n\t\t\t\tlabel: 'Trace mode shift',\n\t\t\t\tvalue: history.diff.traceSummaryDelta.modesChanged\n\t\t\t\t\t? 'changed'\n\t\t\t\t\t: 'stable'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace balance shift',\n\t\t\t\tvalue: history.diff.traceSummaryDelta\n\t\t\t\t\t.sourceBalanceStrategiesChanged\n\t\t\t\t\t? 'changed'\n\t\t\t\t\t: 'stable'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace final delta',\n\t\t\t\tvalue: formatSignedDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.averageFinalCount,\n\t\t\t\t\t1\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace vector delta',\n\t\t\t\tvalue: formatSignedDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.averageVectorCount,\n\t\t\t\t\t1\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace lexical delta',\n\t\t\t\tvalue: formatSignedDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.averageLexicalCount,\n\t\t\t\t\t1\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace balanced delta',\n\t\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.balancedCases\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace round robin delta',\n\t\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.roundRobinCases\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace transform delta',\n\t\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.transformedCases\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace variant delta',\n\t\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.variantCases\n\t\t\t\t)\n\t\t\t}\n\t\t);\n\n\t\tconst stageDelta = Object.entries(\n\t\t\thistory.diff.traceSummaryDelta.stageCounts ?? {}\n\t\t)\n\t\t\t.map(([stage, count]) => `${stage} ${formatTraceCountDelta(count)}`)\n\t\t\t.join(', ');\n\n\t\tif (stageDelta) {\n\t\t\trows.push({ label: 'Trace stage delta', value: stageDelta });\n\t\t}\n\t}\n\n\tif (history.caseTraceSnapshots.length > 0) {\n\t\tconst changedCases = history.caseTraceSnapshots.filter(\n\t\t\t(entry) => entry.traceChange === 'changed'\n\t\t);\n\t\trows.push({\n\t\t\tlabel: 'Trace drift cases',\n\t\t\tvalue:\n\t\t\t\tchangedCases.length > 0\n\t\t\t\t\t? changedCases\n\t\t\t\t\t\t\t.map((entry) => entry.label ?? entry.caseId)\n\t\t\t\t\t\t\t.slice(0, 4)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t: 'none'\n\t\t});\n\t}\n\n\treturn rows;\n};\n\nexport const buildRAGEvaluationCaseTracePresentations = (\n\thistory?: RAGEvaluationHistory\n): RAGEvaluationCaseTracePresentation[] => {\n\tif (!history?.caseTraceSnapshots.length) {\n\t\treturn [];\n\t}\n\n\treturn history.caseTraceSnapshots.map((entry) => {\n\t\tconst label = entry.label ?? entry.caseId;\n\t\tconst currentMode = entry.traceMode ?? 'no-trace';\n\t\tconst previousMode = entry.previousTraceMode ?? 'n/a';\n\t\tconst currentBalance = entry.sourceBalanceStrategy ?? 'cap';\n\t\tconst previousBalance = entry.previousSourceBalanceStrategy ?? 'n/a';\n\t\tconst currentVariants =\n\t\t\tentry.variantQueries.length > 0\n\t\t\t\t? entry.variantQueries.join(', ')\n\t\t\t\t: 'none';\n\t\tconst previousVariants =\n\t\t\tentry.previousVariantQueries.length > 0\n\t\t\t\t? entry.previousVariantQueries.join(', ')\n\t\t\t\t: 'none';\n\t\tconst currentStages =\n\t\t\tObject.keys(entry.stageCounts).length > 0\n\t\t\t\t? Object.entries(entry.stageCounts)\n\t\t\t\t\t\t.map(([stage, count]) => `${stage} ${count}`)\n\t\t\t\t\t\t.join(', ')\n\t\t\t\t: 'none';\n\t\tconst previousStages =\n\t\t\tObject.keys(entry.previousStageCounts).length > 0\n\t\t\t\t? Object.entries(entry.previousStageCounts)\n\t\t\t\t\t\t.map(([stage, count]) => `${stage} ${count}`)\n\t\t\t\t\t\t.join(', ')\n\t\t\t\t: 'none';\n\n\t\treturn {\n\t\t\tcaseId: entry.caseId,\n\t\t\tlabel,\n\t\t\tsummary: `${entry.traceChange} · ${previousMode}→${currentMode} · ${previousBalance}→${currentBalance} · final ${\n\t\t\t\tentry.previousFinalCount ?? 0\n\t\t\t}→${entry.finalCount}`,\n\t\t\ttraceChange: entry.traceChange,\n\t\t\trows: [\n\t\t\t\t{ label: 'Query', value: entry.query },\n\t\t\t\t{ label: 'Trace change', value: entry.traceChange },\n\t\t\t\t{ label: 'Mode', value: `${previousMode}→${currentMode}` },\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Balance',\n\t\t\t\t\tvalue: `${previousBalance}→${currentBalance}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Transformed query',\n\t\t\t\t\tvalue: `${\n\t\t\t\t\t\tentry.previousTransformedQuery?.trim() || 'n/a'\n\t\t\t\t\t}→${entry.transformedQuery?.trim() || 'n/a'}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Final',\n\t\t\t\t\tvalue: `${entry.previousFinalCount ?? 0}→${entry.finalCount}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Vector',\n\t\t\t\t\tvalue: `${entry.previousVectorCount ?? 0}→${entry.vectorCount}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Lexical',\n\t\t\t\t\tvalue: `${entry.previousLexicalCount ?? 0}→${entry.lexicalCount}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Candidate topK',\n\t\t\t\t\tvalue: `${entry.previousCandidateTopK ?? 0}→${entry.candidateTopK}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Lexical topK',\n\t\t\t\t\tvalue: `${entry.previousLexicalTopK ?? 0}→${entry.lexicalTopK}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Variants',\n\t\t\t\t\tvalue: `${previousVariants}→${currentVariants}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Stages',\n\t\t\t\t\tvalue: `${previousStages}→${currentStages}`\n\t\t\t\t},\n\t\t\t\t{ label: 'Status', value: entry.status }\n\t\t\t]\n\t\t};\n\t});\n};\n\nexport const buildRAGEvaluationHistoryPresentation = (\n\thistory?: RAGEvaluationHistory\n): RAGEvaluationHistoryPresentation => ({\n\tcaseTraces: buildRAGEvaluationCaseTracePresentations(history),\n\trows: buildRAGEvaluationHistoryRows(history),\n\tsummary: history?.latestRun\n\t\t? history.latestRun.label\n\t\t: 'No persisted benchmark runs yet.'\n});\n\nexport const buildRAGAnswerGroundingCaseSnapshotPresentations = (\n\thistory?: RAGAnswerGroundingEvaluationHistory\n): RAGAnswerGroundingCaseSnapshotPresentation[] => {\n\tif (!history?.caseSnapshots.length) {\n\t\treturn [];\n\t}\n\n\treturn history.caseSnapshots.map((entry) => {\n\t\tconst label = entry.label ?? entry.caseId;\n\t\treturn {\n\t\t\tanswerChange: entry.answerChange,\n\t\t\tcaseId: entry.caseId,\n\t\t\tlabel,\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Query',\n\t\t\t\t\tvalue: entry.query?.trim().length ? entry.query : 'n/a'\n\t\t\t\t},\n\t\t\t\t{ label: 'Answer change', value: entry.answerChange },\n\t\t\t\t{ label: 'Coverage', value: entry.coverage },\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Resolved citations',\n\t\t\t\t\tvalue: `${entry.resolvedCitationCount}/${entry.citationCount}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Resolved citation rate',\n\t\t\t\t\tvalue: entry.resolvedCitationRate.toFixed(3)\n\t\t\t\t},\n\t\t\t\t{ label: 'Citation F1', value: entry.citationF1.toFixed(3) },\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Reference count',\n\t\t\t\t\tvalue: String(entry.referenceCount)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Cited IDs',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.citedIds.length > 0\n\t\t\t\t\t\t\t? entry.citedIds.join(', ')\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Matched IDs',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.matchedIds.length > 0\n\t\t\t\t\t\t\t? entry.matchedIds.join(', ')\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Missing IDs',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.missingIds.length > 0\n\t\t\t\t\t\t\t? entry.missingIds.join(', ')\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Extra IDs',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.extraIds.length > 0\n\t\t\t\t\t\t\t? entry.extraIds.join(', ')\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Unresolved refs',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.ungroundedReferenceNumbers.length > 0\n\t\t\t\t\t\t\t? entry.ungroundedReferenceNumbers.join(', ')\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Answer',\n\t\t\t\t\tvalue: entry.answer.trim().length > 0 ? entry.answer : 'n/a'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Previous answer',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.previousAnswer &&\n\t\t\t\t\t\tentry.previousAnswer.trim().length > 0\n\t\t\t\t\t\t\t? entry.previousAnswer\n\t\t\t\t\t\t\t: 'n/a'\n\t\t\t\t}\n\t\t\t],\n\t\t\tsummary: `${entry.answerChange} · ${entry.coverage} · resolved ${entry.resolvedCitationCount}/${entry.citationCount} · refs ${entry.referenceCount}`\n\t\t};\n\t});\n};\n\nexport const buildRAGAnswerGroundingHistoryRows = (\n\thistory?: RAGAnswerGroundingEvaluationHistory\n): RAGLabelValueRow[] => {\n\tif (!history?.latestRun) {\n\t\treturn [{ label: 'History', value: 'No persisted provider runs yet.' }];\n\t}\n\n\tconst rows: RAGLabelValueRow[] = [\n\t\t{ label: 'Runs recorded', value: String(history.runs.length) },\n\t\t{\n\t\t\tlabel: 'Latest',\n\t\t\tvalue: `${history.latestRun.label} · ${formatGroundingHistorySummaryValue(\n\t\t\t\thistory.latestRun.response\n\t\t\t)}`\n\t\t}\n\t];\n\n\tif (history.previousRun) {\n\t\trows.push({\n\t\t\tlabel: 'Previous',\n\t\t\tvalue: `${history.previousRun.label} · ${formatGroundingHistorySummaryValue(\n\t\t\t\thistory.previousRun.response\n\t\t\t)}`\n\t\t});\n\t}\n\n\tif (history.leaderboard[0]) {\n\t\trows.push({\n\t\t\tlabel: 'Best recorded',\n\t\t\tvalue: `#${history.leaderboard[0].rank} · ${history.leaderboard[0].label} · passing ${formatEvaluationPassingRate(\n\t\t\t\thistory.leaderboard[0].passingRate\n\t\t\t)} · citation f1 ${history.leaderboard[0].averageCitationF1.toFixed(\n\t\t\t\t3\n\t\t\t)} · resolved ${formatEvaluationPassingRate(\n\t\t\t\thistory.leaderboard[0].averageResolvedCitationRate\n\t\t\t)}`\n\t\t});\n\t}\n\n\tif (history.caseSnapshots.length > 0) {\n\t\tconst changedAnswers = history.caseSnapshots.filter(\n\t\t\t(entry) => entry.answerChange === 'changed'\n\t\t).length;\n\t\trows.push({\n\t\t\tlabel: 'Answer drift',\n\t\t\tvalue: `${changedAnswers}/${history.caseSnapshots.length} changed`\n\t\t});\n\t}\n\n\tif (!history.diff) {\n\t\trows.push({\n\t\t\tlabel: 'History diff',\n\t\t\tvalue: 'Run the provider comparison again to diff grounding regressions over time.'\n\t\t});\n\t\treturn rows;\n\t}\n\n\trows.push(\n\t\t{\n\t\t\tlabel: 'Passing delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\thistory.diff.summaryDelta.passingRate,\n\t\t\t\t1,\n\t\t\t\t'%'\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Citation F1 delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\thistory.diff.summaryDelta.averageCitationF1,\n\t\t\t\t3\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Resolved citation delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\thistory.diff.summaryDelta.averageResolvedCitationRate * 100,\n\t\t\t\t1,\n\t\t\t\t'%'\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Improved',\n\t\t\tvalue: formatGroundingHistoryCaseLabels(history.diff.improvedCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Regressed',\n\t\t\tvalue: formatGroundingHistoryCaseLabels(history.diff.regressedCases)\n\t\t}\n\t);\n\n\treturn rows;\n};\n\nexport const buildRAGAnswerGroundingHistoryPresentation = (\n\thistory?: RAGAnswerGroundingEvaluationHistory\n): RAGAnswerGroundingHistoryPresentation => ({\n\tcaseSnapshots: buildRAGAnswerGroundingCaseSnapshotPresentations(history),\n\trows: buildRAGAnswerGroundingHistoryRows(history),\n\tsummary: history?.latestRun\n\t\t? history.latestRun.label\n\t\t: 'No persisted provider runs yet.'\n});\n",
|
|
14
|
+
"import type {\n\tRAGCitation,\n\tRAGCitationReferenceMap,\n\tRAGGroundedAnswer,\n\tRAGGroundedAnswerCitationDetail,\n\tRAGGroundedAnswerSectionSummary,\n\tRAGGroundingReference,\n\tRAGSource\n} from '../../../types/ai';\n\nconst getContextString = (value: unknown) =>\n\ttypeof value === 'string' && value.trim().length > 0\n\t\t? value.trim()\n\t\t: undefined;\n\nconst getContextNumber = (value: unknown) =>\n\ttypeof value === 'number' && Number.isFinite(value) ? value : undefined;\n\nconst getAttachmentName = (source?: string, title?: string) => {\n\tconst sourceAttachment = source?.split('/').at(-1);\n\tif (sourceAttachment && sourceAttachment.includes('.')) {\n\t\treturn sourceAttachment;\n\t}\n\n\tconst titleAttachment = title?.split(' · ').at(-1);\n\tif (titleAttachment && titleAttachment.includes('.')) {\n\t\treturn titleAttachment;\n\t}\n\n\treturn undefined;\n};\n\nconst buildContextLabel = (metadata?: Record<string, unknown>) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst emailKind = getContextString(metadata.emailKind);\n\tif (emailKind === 'attachment') {\n\t\treturn 'Attachment evidence';\n\t}\n\n\tif (emailKind === 'message') {\n\t\tconst from = getContextString(metadata.from);\n\t\treturn from ? `Message from ${from}` : 'Message evidence';\n\t}\n\n\tconst page =\n\t\tgetContextNumber(metadata.page) ??\n\t\tgetContextNumber(metadata.pageNumber) ??\n\t\t(typeof metadata.pageIndex === 'number'\n\t\t\t? metadata.pageIndex + 1\n\t\t\t: undefined);\n\tconst region =\n\t\tgetContextNumber(metadata.regionNumber) ??\n\t\t(typeof metadata.regionIndex === 'number'\n\t\t\t? metadata.regionIndex + 1\n\t\t\t: undefined);\n\tif (page && region) {\n\t\treturn `Page ${page} region ${region}`;\n\t}\n\tif (page) {\n\t\treturn `Page ${page}`;\n\t}\n\n\tconst sheet =\n\t\tgetContextString(metadata.sheetName) ??\n\t\t(Array.isArray(metadata.sheetNames)\n\t\t\t? getContextString(metadata.sheetNames[0])\n\t\t\t: undefined);\n\tif (sheet) {\n\t\treturn `Sheet ${sheet}`;\n\t}\n\n\tconst slide =\n\t\tgetContextNumber(metadata.slide) ??\n\t\tgetContextNumber(metadata.slideNumber) ??\n\t\t(typeof metadata.slideIndex === 'number'\n\t\t\t? metadata.slideIndex + 1\n\t\t\t: undefined);\n\tif (slide) {\n\t\treturn `Slide ${slide}`;\n\t}\n\n\tconst archiveEntry =\n\t\tgetContextString(metadata.archiveEntryPath) ??\n\t\tgetContextString(metadata.entryPath);\n\tif (archiveEntry) {\n\t\treturn `Archive entry ${archiveEntry}`;\n\t}\n\n\tconst threadTopic = getContextString(metadata.threadTopic);\n\tif (threadTopic) {\n\t\treturn `Thread ${threadTopic}`;\n\t}\n\n\tconst speaker = getContextString(metadata.speaker);\n\tif (speaker) {\n\t\treturn `Speaker ${speaker}`;\n\t}\n\n\tconst sectionPath = Array.isArray(metadata.sectionPath)\n\t\t? metadata.sectionPath\n\t\t\t\t.map((value) => getContextString(value))\n\t\t\t\t.filter((value): value is string => typeof value === 'string')\n\t\t: [];\n\tconst sectionTitle =\n\t\tgetContextString(metadata.sectionTitle) ?? sectionPath.at(-1);\n\tif (sectionTitle) {\n\t\treturn `Section ${sectionTitle}`;\n\t}\n\n\treturn undefined;\n};\n\nconst formatMediaTimestamp = (value: unknown) => {\n\tif (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n\t\treturn undefined;\n\t}\n\n\tconst totalSeconds = Math.floor(value / 1000);\n\tconst minutes = Math.floor(totalSeconds / 60);\n\tconst seconds = totalSeconds % 60;\n\tconst milliseconds = Math.floor(value % 1000);\n\n\treturn `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(\n\t\t2,\n\t\t'0'\n\t)}.${String(milliseconds).padStart(3, '0')}`;\n};\n\nconst buildLocatorLabel = (\n\tmetadata?: Record<string, unknown>,\n\tsource?: string,\n\ttitle?: string\n) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst page =\n\t\tgetContextNumber(metadata.page) ??\n\t\tgetContextNumber(metadata.pageNumber) ??\n\t\t(typeof metadata.pageIndex === 'number'\n\t\t\t? metadata.pageIndex + 1\n\t\t\t: undefined);\n\tconst region =\n\t\tgetContextNumber(metadata.regionNumber) ??\n\t\t(typeof metadata.regionIndex === 'number'\n\t\t\t? metadata.regionIndex + 1\n\t\t\t: undefined);\n\tif (page && region) {\n\t\treturn `Page ${page} · Region ${region}`;\n\t}\n\tif (page) {\n\t\treturn `Page ${page}`;\n\t}\n\n\tconst sheet =\n\t\tgetContextString(metadata.sheetName) ??\n\t\t(Array.isArray(metadata.sheetNames)\n\t\t\t? getContextString(metadata.sheetNames[0])\n\t\t\t: undefined);\n\tif (sheet) {\n\t\treturn `Sheet ${sheet}`;\n\t}\n\n\tconst slide =\n\t\tgetContextNumber(metadata.slide) ??\n\t\tgetContextNumber(metadata.slideNumber) ??\n\t\t(typeof metadata.slideIndex === 'number'\n\t\t\t? metadata.slideIndex + 1\n\t\t\t: undefined);\n\tif (slide) {\n\t\treturn `Slide ${slide}`;\n\t}\n\n\tconst archiveEntry =\n\t\tgetContextString(metadata.archiveEntryPath) ??\n\t\tgetContextString(metadata.entryPath);\n\tif (archiveEntry) {\n\t\treturn `Archive entry ${archiveEntry}`;\n\t}\n\n\tconst emailKind = getContextString(metadata.emailKind);\n\tif (emailKind === 'attachment') {\n\t\tconst attachmentName =\n\t\t\tgetContextString(metadata.attachmentName) ??\n\t\t\tgetAttachmentName(source, title);\n\t\treturn attachmentName ? `Attachment ${attachmentName}` : 'Attachment';\n\t}\n\n\tconst mediaStart = formatMediaTimestamp(metadata.startMs);\n\tconst mediaEnd = formatMediaTimestamp(metadata.endMs);\n\tif (mediaStart && mediaEnd) {\n\t\treturn `Timestamp ${mediaStart} - ${mediaEnd}`;\n\t}\n\n\tif (mediaStart) {\n\t\treturn `Timestamp ${mediaStart}`;\n\t}\n\n\tconst sectionPath = Array.isArray(metadata.sectionPath)\n\t\t? metadata.sectionPath\n\t\t\t\t.map((value) => getContextString(value))\n\t\t\t\t.filter((value): value is string => typeof value === 'string')\n\t\t: [];\n\tif (sectionPath.length > 0) {\n\t\treturn `Section ${sectionPath.join(' > ')}`;\n\t}\n\n\treturn undefined;\n};\n\nconst formatTimestampLabel = (value: unknown) => {\n\tconst timestamp =\n\t\ttypeof value === 'number' && Number.isFinite(value)\n\t\t\t? value\n\t\t\t: typeof value === 'string'\n\t\t\t\t? Date.parse(value)\n\t\t\t\t: Number.NaN;\n\tif (!Number.isFinite(timestamp)) {\n\t\treturn undefined;\n\t}\n\n\treturn new Date(timestamp).toLocaleString('en-US', {\n\t\tdateStyle: 'medium',\n\t\ttimeStyle: 'short'\n\t});\n};\n\nconst buildProvenanceLabel = (metadata?: Record<string, unknown>) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst threadTopic = getContextString(metadata.threadTopic);\n\tconst from = getContextString(metadata.from);\n\tconst sentAt =\n\t\tformatTimestampLabel(metadata.sentAt) ??\n\t\tformatTimestampLabel(metadata.receivedAt);\n\tconst speaker = getContextString(metadata.speaker);\n\tconst mediaKind = getContextString(metadata.mediaKind);\n\tconst transcriptSource = getContextString(metadata.transcriptSource);\n\tconst pdfTextMode = getContextString(metadata.pdfTextMode);\n\tconst ocrEngine = getContextString(metadata.ocrEngine);\n\tconst ocrConfidence =\n\t\tgetContextNumber(metadata.ocrRegionConfidence) ??\n\t\tgetContextNumber(metadata.ocrConfidence);\n\n\tconst labels = [\n\t\tpdfTextMode ? `PDF ${pdfTextMode}` : '',\n\t\tocrEngine ? `OCR ${ocrEngine}` : '',\n\t\ttypeof ocrConfidence === 'number'\n\t\t\t? `Confidence ${ocrConfidence.toFixed(2)}`\n\t\t\t: '',\n\t\tmediaKind ? `Media ${mediaKind}` : '',\n\t\ttranscriptSource ? `Transcript ${transcriptSource}` : '',\n\t\tthreadTopic ? `Thread ${threadTopic}` : '',\n\t\tspeaker ? `Speaker ${speaker}` : '',\n\t\tfrom ? `Sender ${from}` : '',\n\t\tsentAt ? `Sent ${sentAt}` : ''\n\t].filter((value) => value.length > 0);\n\n\treturn labels.length > 0 ? labels.join(' · ') : undefined;\n};\n\nconst buildSourceLabel = (source: RAGSource) =>\n\tsource.source ?? source.title ?? source.chunkId;\n\nconst buildExcerpt = (text: string, maxLength = 160) => {\n\tconst normalized = text.replaceAll(/\\s+/g, ' ').trim();\n\tif (normalized.length <= maxLength) {\n\t\treturn normalized;\n\t}\n\n\treturn `${normalized.slice(0, Math.max(0, maxLength - 1)).trimEnd()}…`;\n};\n\nconst selectPreferredExcerpt = (\n\texcerpts?: {\n\t\tchunkExcerpt?: string;\n\t\twindowExcerpt?: string;\n\t\tsectionExcerpt?: string;\n\t},\n\tsectionChunkCount?: number\n) => {\n\tif (!excerpts) {\n\t\treturn '';\n\t}\n\n\tconst chunkExcerpt = excerpts.chunkExcerpt?.trim() ?? '';\n\tconst windowExcerpt = excerpts.windowExcerpt?.trim() ?? '';\n\tconst sectionExcerpt = excerpts.sectionExcerpt?.trim() ?? '';\n\tif (\n\t\tsectionChunkCount &&\n\t\tsectionChunkCount > 1 &&\n\t\tchunkExcerpt.length > 0 &&\n\t\tchunkExcerpt.length < 72\n\t) {\n\t\tif (sectionChunkCount <= 3 && sectionExcerpt) {\n\t\t\treturn sectionExcerpt;\n\t\t}\n\t\tif (windowExcerpt) {\n\t\t\treturn windowExcerpt;\n\t\t}\n\t}\n\n\treturn chunkExcerpt || windowExcerpt || sectionExcerpt;\n};\n\nconst buildGroundingChunkExcerpts = (\n\tsources: RAGSource[],\n\tactiveChunkId?: string\n) => {\n\tif (sources.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tconst activeSource =\n\t\t(activeChunkId\n\t\t\t? sources.find((source) => source.chunkId === activeChunkId)\n\t\t\t: undefined) ?? sources[0];\n\tif (!activeSource) {\n\t\treturn undefined;\n\t}\n\n\tconst chunkMap = new Map(sources.map((source) => [source.chunkId, source]));\n\tconst activeMetadata = activeSource.metadata ?? {};\n\tconst previousChunkId = getContextString(activeMetadata.previousChunkId);\n\tconst nextChunkId = getContextString(activeMetadata.nextChunkId);\n\tconst sectionChunkId = getContextString(activeMetadata.sectionChunkId);\n\tconst sectionSources = sectionChunkId\n\t\t? sources\n\t\t\t\t.filter(\n\t\t\t\t\t(source) =>\n\t\t\t\t\t\tgetContextString(source.metadata?.sectionChunkId) ===\n\t\t\t\t\t\tsectionChunkId\n\t\t\t\t)\n\t\t\t\t.sort((left, right) => {\n\t\t\t\t\tconst leftIndex =\n\t\t\t\t\t\tgetContextNumber(left.metadata?.sectionChunkIndex) ??\n\t\t\t\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\t\t\t\tconst rightIndex =\n\t\t\t\t\t\tgetContextNumber(right.metadata?.sectionChunkIndex) ??\n\t\t\t\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\t\t\t\tif (leftIndex !== rightIndex) {\n\t\t\t\t\t\treturn leftIndex - rightIndex;\n\t\t\t\t\t}\n\t\t\t\t\treturn left.chunkId.localeCompare(right.chunkId);\n\t\t\t\t})\n\t\t: [activeSource];\n\tconst collectText = (chunkIds: string[]) =>\n\t\tchunkIds\n\t\t\t.map((chunkId) => chunkMap.get(chunkId)?.text)\n\t\t\t.filter((text): text is string => typeof text === 'string')\n\t\t\t.join('\\n\\n');\n\tconst orderedWindowIds = [\n\t\tpreviousChunkId,\n\t\tactiveSource.chunkId,\n\t\tnextChunkId\n\t].filter(\n\t\t(chunkId, index, values): chunkId is string =>\n\t\t\tBoolean(chunkId) && values.indexOf(chunkId) === index\n\t);\n\n\treturn {\n\t\tchunkExcerpt: buildExcerpt(activeSource.text, 160),\n\t\tsectionExcerpt: buildExcerpt(\n\t\t\tsectionSources.map((source) => source.text).join('\\n\\n'),\n\t\t\t320\n\t\t),\n\t\twindowExcerpt: buildExcerpt(collectText(orderedWindowIds), 240)\n\t};\n};\n\nconst buildGroundingReferenceEvidenceLabel = (\n\treference: RAGGroundingReference\n) =>\n\t[reference.label, reference.locatorLabel, reference.contextLabel]\n\t\t.filter((value): value is string => Boolean(value && value.length > 0))\n\t\t.filter(\n\t\t\t(value, index, values) =>\n\t\t\t\tvalues.findIndex((entry) => entry === value) === index\n\t\t)\n\t\t.join(' · ');\n\nconst buildGroundingReferenceEvidenceSummary = (\n\treference: RAGGroundingReference\n) =>\n\t[\n\t\treference.source ?? reference.title ?? reference.chunkId,\n\t\treference.locatorLabel,\n\t\treference.contextLabel,\n\t\treference.provenanceLabel\n\t]\n\t\t.filter((value): value is string => Boolean(value && value.length > 0))\n\t\t.filter(\n\t\t\t(value, index, values) =>\n\t\t\t\tvalues.findIndex((entry) => entry === value) === index\n\t\t)\n\t\t.join(' · ');\n\nconst buildGroundingSectionKey = (reference: RAGGroundingReference) =>\n\treference.contextLabel ??\n\treference.locatorLabel ??\n\treference.label ??\n\treference.source ??\n\treference.chunkId;\n\nconst buildGroundingSectionSummaryLine = (reference: RAGGroundingReference) =>\n\t[\n\t\treference.source ?? reference.title ?? reference.chunkId,\n\t\treference.locatorLabel,\n\t\treference.contextLabel,\n\t\treference.provenanceLabel\n\t]\n\t\t.filter((value): value is string => Boolean(value && value.length > 0))\n\t\t.filter(\n\t\t\t(value, index, values) =>\n\t\t\t\tvalues.findIndex((entry) => entry === value) === index\n\t\t)\n\t\t.join(' · ');\n\nconst buildGroundedAnswerCitationDetail = (\n\treference: RAGGroundingReference\n): RAGGroundedAnswerCitationDetail => ({\n\tcontextLabel: reference.contextLabel,\n\tevidenceLabel: buildGroundingReferenceEvidenceLabel(reference),\n\tevidenceSummary: buildGroundingReferenceEvidenceSummary(reference),\n\texcerpt:\n\t\tselectPreferredExcerpt(\n\t\t\treference.excerpts,\n\t\t\tgetContextNumber(reference.metadata?.sectionChunkCount)\n\t\t) || reference.excerpt,\n\texcerpts: reference.excerpts,\n\tlabel: reference.label,\n\tlocatorLabel: reference.locatorLabel,\n\tnumber: reference.number,\n\tprovenanceLabel: reference.provenanceLabel,\n\tsource: reference.source,\n\ttitle: reference.title\n});\n\nexport const buildRAGCitationReferenceMap = (\n\tcitations: RAGCitation[]\n): RAGCitationReferenceMap =>\n\tObject.fromEntries(\n\t\tcitations.map((citation, index) => [citation.chunkId, index + 1])\n\t);\n\nexport const buildRAGCitations = (sources: RAGSource[]) => {\n\tconst unique = new Map<string, RAGCitation>();\n\n\tfor (const source of sources) {\n\t\tconst key = source.chunkId;\n\t\tconst existing = unique.get(key);\n\t\tconst hasBetterExisting =\n\t\t\texisting !== undefined && existing.score >= source.score;\n\t\tif (hasBetterExisting) continue;\n\n\t\tunique.set(key, {\n\t\t\tchunkId: source.chunkId,\n\t\t\tcontextLabel:\n\t\t\t\tsource.labels?.contextLabel ??\n\t\t\t\tbuildContextLabel(source.metadata),\n\t\t\texcerpt:\n\t\t\t\tselectPreferredExcerpt(\n\t\t\t\t\tbuildGroundingChunkExcerpts(sources, source.chunkId),\n\t\t\t\t\tgetContextNumber(source.metadata?.sectionChunkCount)\n\t\t\t\t) || buildExcerpt(source.text),\n\t\t\texcerpts: buildGroundingChunkExcerpts(sources, source.chunkId),\n\t\t\tkey,\n\t\t\tlabel: buildSourceLabel(source),\n\t\t\tlocatorLabel:\n\t\t\t\tsource.labels?.locatorLabel ??\n\t\t\t\tbuildLocatorLabel(source.metadata, source.source, source.title),\n\t\t\tmetadata: source.metadata,\n\t\t\tprovenanceLabel:\n\t\t\t\tsource.labels?.provenanceLabel ??\n\t\t\t\tbuildProvenanceLabel(source.metadata),\n\t\t\tscore: source.score,\n\t\t\tsource: source.source,\n\t\t\ttext: source.text,\n\t\t\ttitle: source.title\n\t\t});\n\t}\n\n\treturn [...unique.values()].sort((left, right) => {\n\t\tif (right.score !== left.score) {\n\t\t\treturn right.score - left.score;\n\t\t}\n\n\t\treturn left.label.localeCompare(right.label);\n\t});\n};\n\nexport const buildRAGGroundedAnswer = (\n\tcontent: string,\n\tsources: RAGSource[]\n): RAGGroundedAnswer => {\n\tconst references = buildRAGGroundingReferences(sources);\n\tconst referenceMap = new Map(\n\t\treferences.map((reference) => [reference.number, reference])\n\t);\n\tconst parts: RAGGroundedAnswer['parts'] = [];\n\tconst ungroundedReferenceNumbers = new Set<number>();\n\tconst citationPattern = /\\[(\\d+(?:\\s*,\\s*\\d+)*)\\]/g;\n\tlet cursor = 0;\n\n\tfor (const match of content.matchAll(citationPattern)) {\n\t\tconst raw = match[0];\n\t\tconst numbers = (match[1] ?? '')\n\t\t\t.split(',')\n\t\t\t.map((value) => Number.parseInt(value.trim(), 10))\n\t\t\t.filter((value) => Number.isInteger(value) && value > 0);\n\t\tconst start = match.index ?? cursor;\n\t\tif (start > cursor) {\n\t\t\tparts.push({\n\t\t\t\ttext: content.slice(cursor, start),\n\t\t\t\ttype: 'text'\n\t\t\t});\n\t\t}\n\n\t\tconst resolvedReferences = numbers\n\t\t\t.map((number) => referenceMap.get(number))\n\t\t\t.filter((reference): reference is RAGGroundingReference =>\n\t\t\t\tBoolean(reference)\n\t\t\t);\n\t\tfor (const number of numbers) {\n\t\t\tif (!referenceMap.has(number)) {\n\t\t\t\tungroundedReferenceNumbers.add(number);\n\t\t\t}\n\t\t}\n\t\tconst unresolvedNumbers = numbers.filter(\n\t\t\t(number) => !referenceMap.has(number)\n\t\t);\n\n\t\tparts.push({\n\t\t\treferenceNumbers: numbers,\n\t\t\treferenceDetails: resolvedReferences.map(\n\t\t\t\tbuildGroundedAnswerCitationDetail\n\t\t\t),\n\t\t\treferences: resolvedReferences,\n\t\t\ttext: raw,\n\t\t\ttype: 'citation',\n\t\t\tunresolvedReferenceNumbers: unresolvedNumbers\n\t\t});\n\t\tcursor = start + raw.length;\n\t}\n\n\tif (cursor < content.length || parts.length === 0) {\n\t\tparts.push({\n\t\t\ttext: content.slice(cursor),\n\t\t\ttype: 'text'\n\t\t});\n\t}\n\n\tconst hasCitations = parts.some((part) => part.type === 'citation');\n\tconst coverage: RAGGroundedAnswer['coverage'] = !hasCitations\n\t\t? 'ungrounded'\n\t\t: ungroundedReferenceNumbers.size === 0\n\t\t\t? 'grounded'\n\t\t\t: references.length > 0\n\t\t\t\t? 'partial'\n\t\t\t\t: 'ungrounded';\n\n\treturn {\n\t\tcontent,\n\t\tcoverage,\n\t\thasCitations,\n\t\tparts,\n\t\treferences,\n\t\tsectionSummaries: buildRAGGroundedAnswerSectionSummaries(references),\n\t\tungroundedReferenceNumbers: [...ungroundedReferenceNumbers].sort(\n\t\t\t(left, right) => left - right\n\t\t)\n\t};\n};\n\nexport const buildRAGGroundedAnswerSectionSummaries = (\n\treferences: RAGGroundingReference[]\n): RAGGroundedAnswerSectionSummary[] => {\n\tconst groups = new Map<string, RAGGroundedAnswerSectionSummary>();\n\n\tfor (const reference of references) {\n\t\tconst key = buildGroundingSectionKey(reference);\n\t\tconst existing = groups.get(key);\n\t\tif (!existing) {\n\t\t\tconst excerpts = reference.excerpts\n\t\t\t\t? {\n\t\t\t\t\t\tchunkExcerpt: reference.excerpts.chunkExcerpt,\n\t\t\t\t\t\tsectionExcerpt: reference.excerpts.sectionExcerpt,\n\t\t\t\t\t\twindowExcerpt: reference.excerpts.windowExcerpt\n\t\t\t\t\t}\n\t\t\t\t: undefined;\n\t\t\tgroups.set(key, {\n\t\t\t\tchunkIds: [reference.chunkId],\n\t\t\t\tcontextLabel: reference.contextLabel,\n\t\t\t\tcount: 1,\n\t\t\t\texcerpt:\n\t\t\t\t\tselectPreferredExcerpt(\n\t\t\t\t\t\texcerpts,\n\t\t\t\t\t\tgetContextNumber(reference.metadata?.sectionChunkCount)\n\t\t\t\t\t) ||\n\t\t\t\t\texcerpts?.sectionExcerpt ||\n\t\t\t\t\treference.excerpt,\n\t\t\t\texcerpts,\n\t\t\t\tkey,\n\t\t\t\tlabel: key,\n\t\t\t\tlocatorLabel: reference.locatorLabel,\n\t\t\t\tprovenanceLabel: reference.provenanceLabel,\n\t\t\t\treferenceNumbers: [reference.number],\n\t\t\t\treferences: [reference],\n\t\t\t\tsummary:\n\t\t\t\t\tbuildGroundingSectionSummaryLine(reference) ||\n\t\t\t\t\treference.label ||\n\t\t\t\t\treference.chunkId\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\texisting.count += 1;\n\t\tif (!existing.chunkIds.includes(reference.chunkId)) {\n\t\t\texisting.chunkIds.push(reference.chunkId);\n\t\t}\n\t\tif (!existing.referenceNumbers.includes(reference.number)) {\n\t\t\texisting.referenceNumbers.push(reference.number);\n\t\t}\n\t\texisting.references.push(reference);\n\t\tif (!existing.contextLabel && reference.contextLabel) {\n\t\t\texisting.contextLabel = reference.contextLabel;\n\t\t}\n\t\tif (!existing.locatorLabel && reference.locatorLabel) {\n\t\t\texisting.locatorLabel = reference.locatorLabel;\n\t\t}\n\t\tif (!existing.provenanceLabel && reference.provenanceLabel) {\n\t\t\texisting.provenanceLabel = reference.provenanceLabel;\n\t\t}\n\t\tif (!existing.excerpts && reference.excerpts) {\n\t\t\texisting.excerpts = {\n\t\t\t\tchunkExcerpt: reference.excerpts.chunkExcerpt,\n\t\t\t\tsectionExcerpt: reference.excerpts.sectionExcerpt,\n\t\t\t\twindowExcerpt: reference.excerpts.windowExcerpt\n\t\t\t};\n\t\t\texisting.excerpt = reference.excerpts.sectionExcerpt;\n\t\t}\n\t}\n\n\treturn [...groups.values()]\n\t\t.map((group) => ({\n\t\t\t...group,\n\t\t\treferenceNumbers: [...group.referenceNumbers].sort(\n\t\t\t\t(left, right) => left - right\n\t\t\t),\n\t\t\treferences: group.references\n\t\t\t\t.slice()\n\t\t\t\t.sort((left, right) => left.number - right.number)\n\t\t}))\n\t\t.sort((left, right) => {\n\t\t\tconst leftFirst =\n\t\t\t\tleft.referenceNumbers[0] ?? Number.POSITIVE_INFINITY;\n\t\t\tconst rightFirst =\n\t\t\t\tright.referenceNumbers[0] ?? Number.POSITIVE_INFINITY;\n\t\t\tif (leftFirst !== rightFirst) {\n\t\t\t\treturn leftFirst - rightFirst;\n\t\t\t}\n\t\t\treturn left.label.localeCompare(right.label);\n\t\t});\n};\n\nexport const buildRAGGroundingReferences = (sources: RAGSource[]) => {\n\tconst citations = buildRAGCitations(sources);\n\tconst citationReferenceMap = buildRAGCitationReferenceMap(citations);\n\n\treturn citations.map<RAGGroundingReference>((citation) => {\n\t\tconst excerpts = buildGroundingChunkExcerpts(sources, citation.chunkId);\n\t\treturn {\n\t\t\tchunkId: citation.chunkId,\n\t\t\tcontextLabel:\n\t\t\t\tcitation.contextLabel ?? buildContextLabel(citation.metadata),\n\t\t\texcerpt:\n\t\t\t\tselectPreferredExcerpt(\n\t\t\t\t\texcerpts,\n\t\t\t\t\tgetContextNumber(citation.metadata?.sectionChunkCount)\n\t\t\t\t) ||\n\t\t\t\texcerpts?.chunkExcerpt ||\n\t\t\t\tbuildExcerpt(citation.text),\n\t\t\texcerpts,\n\t\t\tlabel: citation.label,\n\t\t\tlocatorLabel:\n\t\t\t\tcitation.locatorLabel ??\n\t\t\t\tbuildLocatorLabel(\n\t\t\t\t\tcitation.metadata,\n\t\t\t\t\tcitation.source,\n\t\t\t\t\tcitation.title\n\t\t\t\t),\n\t\t\tmetadata: citation.metadata,\n\t\t\tnumber: citationReferenceMap[citation.chunkId] ?? 0,\n\t\t\tprovenanceLabel:\n\t\t\t\tcitation.provenanceLabel ??\n\t\t\t\tbuildProvenanceLabel(citation.metadata),\n\t\t\tscore: citation.score,\n\t\t\tsource: citation.source,\n\t\t\ttext: citation.text,\n\t\t\ttitle: citation.title\n\t\t};\n\t});\n};\n",
|
|
15
|
+
"import type {\n\tRAGAdminActionPresentation,\n\tRAGAdminActionRecord,\n\tRAGAdminJobPresentation,\n\tRAGAdminJobRecord,\n\tAIMessage,\n\tRAGAnswerGroundingCaseSnapshotPresentation,\n\tRAGAnswerGroundingEvaluationCaseDiff,\n\tRAGAnswerGroundingEvaluationHistory,\n\tRAGAnswerGroundingEvaluationResponse,\n\tRAGCorpusHealth,\n\tRAGCorpusHealthPresentation,\n\tRAGExtractorReadiness,\n\tRAGReadinessPresentation,\n\tRAGGroundingOverviewPresentation,\n\tRAGGroundingProviderCaseComparisonPresentation,\n\tRAGGroundingProviderOverviewPresentation,\n\tRAGGroundingProviderPresentation,\n\tRAGComparisonOverviewPresentation,\n\tRAGComparisonPresentation,\n\tRAGChunkGraph,\n\tRAGChunkExcerpts,\n\tRAGChunkGraphEdge,\n\tRAGChunkGraphNavigation,\n\tRAGChunkGraphNode,\n\tRAGChunkGraphSectionGroup,\n\tRAGChunkStructure,\n\tRAGDocumentChunkPreview,\n\tRAGLabelValueRow,\n\tRAGRerankerComparisonEntry,\n\tRAGRetrievalComparison,\n\tRAGRetrievalComparisonEntry,\n\tRAGRetrievalTraceHistoryWindow,\n\tRAGRetrievalTraceStep,\n\tRAGRetrievalTrace,\n\tRAGHybridRetrievalMode,\n\tRAGSourceBalanceStrategy,\n\tRAGQualityOverviewPresentation,\n\tRAGEvaluationCaseDiff,\n\tRAGEvaluationCaseTracePresentation,\n\tRAGEvaluationHistory,\n\tRAGAnswerGroundingHistoryPresentation,\n\tRAGEvaluationResponse,\n\tRAGEvaluationHistoryPresentation,\n\tRAGEvaluationHistoryStore,\n\tRAGRerankerComparison,\n\tRAGAnswerWorkflowState,\n\tRAGRetrievalTracePresentation,\n\tRAGSource,\n\tRAGSourceLabels,\n\tRAGSourceGroup,\n\tRAGSourceSummary,\n\tRAGStreamStage,\n\tRAGSyncOverviewPresentation,\n\tRAGSyncSourcePresentation,\n\tRAGSyncSourceRecord,\n\tRAGSyncSourceRunPresentation\n} from '../../../types/ai';\nimport {\n\tbuildRAGCitationReferenceMap,\n\tbuildRAGCitations,\n\tbuildRAGGroundedAnswer,\n\tbuildRAGGroundedAnswerSectionSummaries,\n\tbuildRAGGroundingReferences\n} from './grounding';\n\nexport {\n\tbuildRAGCitationReferenceMap,\n\tbuildRAGCitations,\n\tbuildRAGGroundedAnswer,\n\tbuildRAGGroundedAnswerSectionSummaries,\n\tbuildRAGGroundingReferences\n};\n\nconst buildSourceGroupKey = (source: RAGSource) =>\n\tsource.source ?? source.title ?? source.chunkId;\n\nconst buildSourceLabel = (source: RAGSource) =>\n\tsource.source ?? source.title ?? source.chunkId;\n\nconst getContextNumber = (value: unknown) =>\n\ttypeof value === 'number' && Number.isFinite(value) ? value : undefined;\n\nconst getContextString = (value: unknown) =>\n\ttypeof value === 'string' && value.trim().length > 0\n\t\t? value.trim()\n\t\t: undefined;\n\nconst isRAGRetrievalTrace = (value: unknown): value is RAGRetrievalTrace => {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tconst candidate = value as Record<string, unknown>;\n\n\treturn (\n\t\ttypeof candidate.query === 'string' &&\n\t\ttypeof candidate.transformedQuery === 'string' &&\n\t\tArray.isArray(candidate.variantQueries) &&\n\t\tArray.isArray(candidate.steps)\n\t);\n};\n\nconst formatTimestampLabel = (value: unknown) => {\n\tconst timestamp =\n\t\ttypeof value === 'number' && Number.isFinite(value)\n\t\t\t? value\n\t\t\t: typeof value === 'string'\n\t\t\t\t? Date.parse(value)\n\t\t\t\t: Number.NaN;\n\tif (!Number.isFinite(timestamp)) {\n\t\treturn undefined;\n\t}\n\n\treturn new Date(timestamp).toLocaleString('en-US', {\n\t\tdateStyle: 'medium',\n\t\ttimeStyle: 'short'\n\t});\n};\n\nconst formatRAGTraceValue = (value: unknown): string => {\n\tif (typeof value === 'string') return value;\n\tif (typeof value === 'number' || typeof value === 'boolean') {\n\t\treturn String(value);\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.join(', ');\n\t}\n\tif (value && typeof value === 'object') {\n\t\treturn JSON.stringify(value);\n\t}\n\treturn 'n/a';\n};\n\nexport const buildRAGRetrievalTracePresentation = (\n\ttrace?: RAGRetrievalTrace\n): RAGRetrievalTracePresentation => {\n\tif (!trace) {\n\t\treturn {\n\t\t\tdetails: [],\n\t\t\tstats: [],\n\t\t\tsteps: []\n\t\t};\n\t}\n\n\tconst stats: RAGLabelValueRow[] = [\n\t\t{ label: 'Mode', value: trace.mode },\n\t\t{ label: 'Final Results', value: String(trace.resultCounts.final) },\n\t\t{\n\t\t\tlabel: 'Vector Candidates',\n\t\t\tvalue: String(trace.resultCounts.vector)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Lexical Candidates',\n\t\t\tvalue: String(trace.resultCounts.lexical)\n\t\t}\n\t];\n\tconst details: RAGLabelValueRow[] = [\n\t\t{ label: 'Transformed query', value: trace.transformedQuery },\n\t\t{\n\t\t\tlabel: 'Variant queries',\n\t\t\tvalue:\n\t\t\t\ttrace.variantQueries.length > 0\n\t\t\t\t\t? trace.variantQueries.join(' · ')\n\t\t\t\t\t: 'none'\n\t\t},\n\t\t{ label: 'Candidate topK', value: String(trace.candidateTopK) },\n\t\t{ label: 'Lexical topK', value: String(trace.lexicalTopK) }\n\t];\n\tconst steps = trace.steps.map((step) => ({\n\t\tcount: step.count,\n\t\tlabel: step.label,\n\t\trows: [\n\t\t\t{ label: 'stage', value: step.stage },\n\t\t\t...(typeof step.count === 'number'\n\t\t\t\t? [{ label: 'count', value: String(step.count) }]\n\t\t\t\t: []),\n\t\t\t...(typeof step.durationMs === 'number'\n\t\t\t\t? [{ label: 'durationMs', value: String(step.durationMs) }]\n\t\t\t\t: []),\n\t\t\t...Object.entries(step.metadata ?? {}).map(([key, value]) => ({\n\t\t\t\tlabel: key,\n\t\t\t\tvalue: formatRAGTraceValue(value)\n\t\t\t}))\n\t\t],\n\t\tstage: step.stage\n\t}));\n\n\treturn {\n\t\tdetails,\n\t\tstats,\n\t\tsteps\n\t};\n};\n\nconst formatCompactList = (values?: string[]) =>\n\tvalues && values.length > 0 ? values.join(', ') : 'none';\n\nconst formatCoverageMap = (entries?: Record<string, number>) => {\n\tif (!entries) {\n\t\treturn 'none';\n\t}\n\n\tconst values = Object.entries(entries);\n\treturn values.length > 0\n\t\t? values.map(([key, value]) => `${key} ${value}`).join(' · ')\n\t\t: 'none';\n};\n\nconst formatDurationLabel = (value?: number) => {\n\tif (typeof value !== 'number' || !Number.isFinite(value)) {\n\t\treturn 'n/a';\n\t}\n\n\tif (value < 1000) {\n\t\treturn `${value}ms`;\n\t}\n\n\tif (value < 60000) {\n\t\treturn `${(value / 1000).toFixed(value >= 10000 ? 0 : 1)}s`;\n\t}\n\n\tif (value < 3600000) {\n\t\treturn `${(value / 60000).toFixed(value >= 600000 ? 0 : 1)}m`;\n\t}\n\n\treturn `${(value / 3600000).toFixed(value >= 36000000 ? 0 : 1)}h`;\n};\n\nconst formatDateLabel = (value?: number) =>\n\ttypeof value === 'number' && Number.isFinite(value)\n\t\t? new Date(value).toLocaleString('en-US')\n\t\t: 'n/a';\n\nconst formatAgeLabel = (value?: number) => {\n\tif (typeof value !== 'number' || !Number.isFinite(value)) {\n\t\treturn 'n/a';\n\t}\n\n\tif (value < 1000) {\n\t\treturn `${Math.round(value)}ms`;\n\t}\n\n\tif (value < 60000) {\n\t\treturn `${(value / 1000).toFixed(value >= 10000 ? 0 : 1)}s`;\n\t}\n\n\tif (value < 3600000) {\n\t\treturn `${(value / 60000).toFixed(value >= 600000 ? 0 : 1)}m`;\n\t}\n\n\tif (value < 86400000) {\n\t\treturn `${(value / 3600000).toFixed(value >= 36000000 ? 0 : 1)}h`;\n\t}\n\n\treturn `${(value / 86400000).toFixed(value >= 864000000 ? 0 : 1)}d`;\n};\n\nconst buildSyncOverviewLatestRow = (sources: RAGSyncSourceRecord[]) => {\n\tconst latest = [...sources]\n\t\t.filter(\n\t\t\t(record) =>\n\t\t\t\ttypeof record.lastSuccessfulSyncAt === 'number' ||\n\t\t\t\ttypeof record.lastSyncedAt === 'number'\n\t\t)\n\t\t.sort(\n\t\t\t(left, right) =>\n\t\t\t\t(right.lastSuccessfulSyncAt ?? right.lastSyncedAt ?? 0) -\n\t\t\t\t(left.lastSuccessfulSyncAt ?? left.lastSyncedAt ?? 0)\n\t\t)[0];\n\n\tif (!latest) {\n\t\treturn {\n\t\t\tlabel: 'Latest sync',\n\t\t\tvalue: 'No completed run yet'\n\t\t};\n\t}\n\n\treturn {\n\t\tlabel: 'Latest sync',\n\t\tvalue: [\n\t\t\tlatest.label,\n\t\t\ttypeof latest.documentCount === 'number'\n\t\t\t\t? `${latest.documentCount} docs`\n\t\t\t\t: '',\n\t\t\ttypeof latest.chunkCount === 'number'\n\t\t\t\t? `${latest.chunkCount} chunks`\n\t\t\t\t: '',\n\t\t\ttypeof latest.lastSyncDurationMs === 'number'\n\t\t\t\t? formatDurationLabel(latest.lastSyncDurationMs)\n\t\t\t\t: '',\n\t\t\ttypeof latest.lastSuccessfulSyncAt === 'number'\n\t\t\t\t? formatDateLabel(latest.lastSuccessfulSyncAt)\n\t\t\t\t: typeof latest.lastSyncedAt === 'number'\n\t\t\t\t\t? formatDateLabel(latest.lastSyncedAt)\n\t\t\t\t\t: ''\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' · ')\n\t};\n};\n\nconst formatAdminActionLabel = (\n\tvalue: RAGAdminActionRecord['action'] | RAGAdminJobRecord['action']\n) => value.replaceAll('_', ' ');\n\nconst buildAdminTimingLabel = (input: {\n\telapsedMs?: number;\n\tstartedAt: number;\n}) =>\n\ttypeof input.elapsedMs === 'number'\n\t\t? formatDurationLabel(input.elapsedMs)\n\t\t: formatDateLabel(input.startedAt);\n\nexport const buildRAGAdminJobPresentation = (\n\tjob: RAGAdminJobRecord\n): RAGAdminJobPresentation => ({\n\tid: job.id,\n\taction: job.action,\n\tstatus: job.status,\n\tsummary: [\n\t\tjob.status.toUpperCase(),\n\t\tformatAdminActionLabel(job.action),\n\t\tjob.target,\n\t\tbuildAdminTimingLabel(job)\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' · '),\n\trows: [\n\t\t{ label: 'Action', value: formatAdminActionLabel(job.action) },\n\t\t{ label: 'Status', value: job.status },\n\t\t...(job.target ? [{ label: 'Target', value: job.target }] : []),\n\t\t{ label: 'Timing', value: buildAdminTimingLabel(job) },\n\t\t...(job.error ? [{ label: 'Error', value: job.error }] : [])\n\t]\n});\n\nexport const buildRAGAdminJobPresentations = (\n\tjobs?: RAGAdminJobRecord[]\n): RAGAdminJobPresentation[] =>\n\t(jobs ?? []).slice(0, 3).map(buildRAGAdminJobPresentation);\n\nexport const buildRAGAdminActionPresentation = (\n\taction: RAGAdminActionRecord\n): RAGAdminActionPresentation => ({\n\tid: action.id,\n\taction: action.action,\n\tstatus: action.status,\n\tsummary: [\n\t\taction.status.toUpperCase(),\n\t\tformatAdminActionLabel(action.action),\n\t\taction.documentId ?? action.target,\n\t\tbuildAdminTimingLabel(action)\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' · '),\n\trows: [\n\t\t{ label: 'Action', value: formatAdminActionLabel(action.action) },\n\t\t{ label: 'Status', value: action.status },\n\t\t...(action.documentId\n\t\t\t? [{ label: 'Document', value: action.documentId }]\n\t\t\t: action.target\n\t\t\t\t? [{ label: 'Target', value: action.target }]\n\t\t\t\t: []),\n\t\t{ label: 'Timing', value: buildAdminTimingLabel(action) },\n\t\t...(action.error ? [{ label: 'Error', value: action.error }] : [])\n\t]\n});\n\nexport const buildRAGAdminActionPresentations = (\n\tactions?: RAGAdminActionRecord[]\n): RAGAdminActionPresentation[] =>\n\t(actions ?? []).slice(0, 3).map(buildRAGAdminActionPresentation);\n\nconst buildRAGSyncSourceRunPresentations = (\n\tsource: RAGSyncSourceRecord\n): RAGSyncSourceRunPresentation[] => {\n\tif (!Array.isArray(source.metadata?.recentRuns)) {\n\t\treturn [];\n\t}\n\n\treturn (source.metadata.recentRuns as Array<Record<string, unknown>>)\n\t\t.slice(0, 3)\n\t\t.map((entry, index) => {\n\t\t\tconst trigger =\n\t\t\t\ttypeof entry.trigger === 'string' ? entry.trigger : 'sync';\n\t\t\tconst status =\n\t\t\t\ttypeof entry.status === 'string' ? entry.status : 'unknown';\n\t\t\tconst finishedAt =\n\t\t\t\ttypeof entry.finishedAt === 'number'\n\t\t\t\t\t? formatDateLabel(entry.finishedAt)\n\t\t\t\t\t: 'n/a';\n\t\t\tconst duration =\n\t\t\t\ttypeof entry.durationMs === 'number'\n\t\t\t\t\t? formatDurationLabel(entry.durationMs)\n\t\t\t\t\t: 'n/a';\n\t\t\tconst docs =\n\t\t\t\ttypeof entry.documentCount === 'number'\n\t\t\t\t\t? `${entry.documentCount} docs`\n\t\t\t\t\t: 'n/a';\n\t\t\tconst chunks =\n\t\t\t\ttypeof entry.chunkCount === 'number'\n\t\t\t\t\t? `${entry.chunkCount} chunks`\n\t\t\t\t\t: 'n/a';\n\t\t\tconst error =\n\t\t\t\ttypeof entry.error === 'string' && entry.error.length > 0\n\t\t\t\t\t? entry.error\n\t\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tlabel: `Run ${index + 1}`,\n\t\t\t\tstatus,\n\t\t\t\tsummary: `${trigger} · ${status} · ${docs} · ${chunks} · ${duration} · ${finishedAt}`,\n\t\t\t\trows: [\n\t\t\t\t\t{ label: 'Trigger', value: trigger },\n\t\t\t\t\t{ label: 'Status', value: status },\n\t\t\t\t\t{ label: 'Output', value: `${docs} · ${chunks}` },\n\t\t\t\t\t{ label: 'Duration', value: duration },\n\t\t\t\t\t{ label: 'Finished', value: finishedAt },\n\t\t\t\t\t...(error ? [{ label: 'Error', value: error }] : [])\n\t\t\t\t]\n\t\t\t};\n\t\t});\n};\n\nexport const buildRAGSyncSourcePresentation = (\n\tsource: RAGSyncSourceRecord\n): RAGSyncSourcePresentation => {\n\tconst provider =\n\t\ttypeof source.metadata?.provider === 'string'\n\t\t\t? source.metadata.provider\n\t\t\t: undefined;\n\tconst accountMode =\n\t\ttypeof source.metadata?.accountMode === 'string'\n\t\t\t? source.metadata.accountMode\n\t\t\t: undefined;\n\tconst schedule =\n\t\ttypeof source.metadata?.schedule === 'string'\n\t\t\t? source.metadata.schedule\n\t\t\t: undefined;\n\tconst lastTrigger =\n\t\ttypeof source.metadata?.lastTrigger === 'string'\n\t\t\t? source.metadata.lastTrigger\n\t\t\t: undefined;\n\tconst liveReady =\n\t\ttypeof source.metadata?.liveReady === 'string'\n\t\t\t? source.metadata.liveReady\n\t\t\t: undefined;\n\n\treturn {\n\t\tid: source.id,\n\t\tlabel: source.label,\n\t\tkind: source.kind,\n\t\tstatus: source.status,\n\t\tsummary: [\n\t\t\tsource.kind,\n\t\t\tsource.status,\n\t\t\ttypeof source.documentCount === 'number'\n\t\t\t\t? `${source.documentCount} docs`\n\t\t\t\t: '',\n\t\t\ttypeof source.chunkCount === 'number'\n\t\t\t\t? `${source.chunkCount} chunks`\n\t\t\t\t: '',\n\t\t\ttypeof source.lastSyncDurationMs === 'number'\n\t\t\t\t? formatDurationLabel(source.lastSyncDurationMs)\n\t\t\t\t: '',\n\t\t\ttypeof source.lastSuccessfulSyncAt === 'number'\n\t\t\t\t? `last success ${formatDateLabel(source.lastSuccessfulSyncAt)}`\n\t\t\t\t: typeof source.lastSyncedAt === 'number'\n\t\t\t\t\t? `last sync ${formatDateLabel(source.lastSyncedAt)}`\n\t\t\t\t\t: ''\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' · '),\n\t\trows: [\n\t\t\t...(source.target\n\t\t\t\t? [{ label: 'Target', value: source.target }]\n\t\t\t\t: []),\n\t\t\t...(provider ? [{ label: 'Provider', value: provider }] : []),\n\t\t\t...(accountMode\n\t\t\t\t? [{ label: 'Account mode', value: accountMode }]\n\t\t\t\t: []),\n\t\t\t...(schedule ? [{ label: 'Schedule', value: schedule }] : []),\n\t\t\t...(lastTrigger\n\t\t\t\t? [{ label: 'Last trigger', value: lastTrigger }]\n\t\t\t\t: []),\n\t\t\t...(typeof source.lastSuccessfulSyncAt === 'number'\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Last success',\n\t\t\t\t\t\t\tvalue: formatDateLabel(source.lastSuccessfulSyncAt)\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t\t...(typeof source.nextRetryAt === 'number'\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Next retry',\n\t\t\t\t\t\t\tvalue: formatDateLabel(source.nextRetryAt)\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t\t...(source.lastError\n\t\t\t\t? [{ label: 'Last error', value: source.lastError }]\n\t\t\t\t: [])\n\t\t],\n\t\ttags: [\n\t\t\tprovider,\n\t\t\taccountMode ? `mode ${accountMode}` : undefined,\n\t\t\tliveReady\n\t\t].filter((value): value is string => Boolean(value)),\n\t\textendedSummary: source.description ?? liveReady,\n\t\truns: buildRAGSyncSourceRunPresentations(source)\n\t};\n};\n\nexport const buildRAGSyncSourcePresentations = (\n\tsources?: RAGSyncSourceRecord[]\n): RAGSyncSourcePresentation[] =>\n\t(sources ?? []).map(buildRAGSyncSourcePresentation);\n\nexport const buildRAGReadinessPresentation = (\n\treadiness?: RAGExtractorReadiness\n): RAGReadinessPresentation => {\n\tif (!readiness) {\n\t\treturn {\n\t\t\tsections: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Provider',\n\t\t\t\t\ttitle: 'Unavailable',\n\t\t\t\t\tsummary: 'Readiness data is not available yet.'\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n\n\treturn {\n\t\tsections: [\n\t\t\t{\n\t\t\t\tlabel: 'Provider',\n\t\t\t\ttitle: readiness.providerConfigured\n\t\t\t\t\t? (readiness.providerName ?? 'Runtime provider routing')\n\t\t\t\t\t: 'Not configured',\n\t\t\t\tsummary: readiness.providerConfigured\n\t\t\t\t\t? readiness.model\n\t\t\t\t\t\t? `Requests route through ${readiness.providerName ?? 'the runtime provider registry'} with default model ${readiness.model}.`\n\t\t\t\t\t\t: `Requests route through ${readiness.providerName ?? 'the runtime provider registry'}.`\n\t\t\t\t\t: 'Provider-backed retrieval is not configured yet.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Embeddings',\n\t\t\t\ttitle: readiness.embeddingConfigured\n\t\t\t\t\t? readiness.embeddingModel ===\n\t\t\t\t\t\t'collection-managed embeddings'\n\t\t\t\t\t\t? 'Collection-managed'\n\t\t\t\t\t\t: 'Configured'\n\t\t\t\t\t: 'Missing',\n\t\t\t\tsummary: readiness.embeddingConfigured\n\t\t\t\t\t? readiness.embeddingModel ===\n\t\t\t\t\t\t'collection-managed embeddings'\n\t\t\t\t\t\t? 'Embeddings come from the collection and vector store layer, so retrieval stays vector-backed without a separate top-level embedding provider.'\n\t\t\t\t\t\t: (readiness.embeddingModel ??\n\t\t\t\t\t\t\t'Embedding model configured.')\n\t\t\t\t\t: 'Embeddings are not configured yet.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Retrieval Stack',\n\t\t\t\ttitle: readiness.rerankerConfigured\n\t\t\t\t\t? 'Reranker ready'\n\t\t\t\t\t: 'Vector only',\n\t\t\t\tsummary: readiness.indexManagerConfigured\n\t\t\t\t\t? 'Index manager configured.'\n\t\t\t\t\t: 'Index manager not configured.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Extractors',\n\t\t\t\ttitle: readiness.extractorsConfigured\n\t\t\t\t\t? `${readiness.extractorNames.length} configured`\n\t\t\t\t\t: 'None configured',\n\t\t\t\tsummary: readiness.extractorsConfigured\n\t\t\t\t\t? `Configured extractors: ${formatCompactList(readiness.extractorNames)}`\n\t\t\t\t\t: 'No extractors configured.',\n\t\t\t\ttags:\n\t\t\t\t\treadiness.extractorNames.length > 0\n\t\t\t\t\t\t? readiness.extractorNames\n\t\t\t\t\t\t: ['No extractors configured']\n\t\t\t}\n\t\t]\n\t};\n};\n\nexport const buildRAGCorpusHealthPresentation = (\n\thealth?: RAGCorpusHealth\n): RAGCorpusHealthPresentation => {\n\tif (!health) {\n\t\treturn {\n\t\t\tsections: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Corpus health',\n\t\t\t\t\ttitle: 'Unavailable',\n\t\t\t\t\tsummary: 'Corpus health is not available yet.'\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n\n\treturn {\n\t\tsections: [\n\t\t\t{\n\t\t\t\tlabel: 'Corpus coverage',\n\t\t\t\ttitle: `Formats: ${formatCoverageMap(health.coverageByFormat)}`,\n\t\t\t\tsummary: `Kinds: ${formatCoverageMap(health.coverageByKind)}`,\n\t\t\t\trows: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Average chunks per document',\n\t\t\t\t\t\tvalue: health.averageChunksPerDocument.toFixed(2)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Chunk quality',\n\t\t\t\ttitle: `${health.averageChunksPerDocument.toFixed(2)} avg chunks/doc`,\n\t\t\t\tsummary: `Empty docs ${health.emptyDocuments} · empty chunks ${health.emptyChunks} · low signal ${health.lowSignalChunks}`,\n\t\t\t\trows: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Missing source',\n\t\t\t\t\t\tvalue: String(health.documentsMissingSource)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Missing title',\n\t\t\t\t\t\tvalue: String(health.documentsMissingTitle)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Missing metadata',\n\t\t\t\t\t\tvalue: String(health.documentsMissingMetadata)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Freshness',\n\t\t\t\ttitle: `${health.staleDocuments.length} stale docs`,\n\t\t\t\tsummary: `Stale threshold ${formatAgeLabel(health.staleAfterMs)}`,\n\t\t\t\trows: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Oldest age',\n\t\t\t\t\t\tvalue: formatAgeLabel(health.oldestDocumentAgeMs)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Newest age',\n\t\t\t\t\t\tvalue: formatAgeLabel(health.newestDocumentAgeMs)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Failures',\n\t\t\t\ttitle: `${health.failedIngestJobs} ingest · ${health.failedAdminJobs} admin`,\n\t\t\t\tsummary: `Duplicate sources ${health.duplicateSourceGroups.length} · duplicate ids ${health.duplicateDocumentIdGroups.length}`,\n\t\t\t\trows: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Failures by input',\n\t\t\t\t\t\tvalue: formatCoverageMap(health.failuresByInputKind)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Failures by extractor',\n\t\t\t\t\t\tvalue: formatCoverageMap(health.failuresByExtractor)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Failures by admin action',\n\t\t\t\t\t\tvalue: formatCoverageMap(health.failuresByAdminAction)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n};\n\nexport const buildRAGSyncOverviewPresentation = (\n\tsources?: RAGSyncSourceRecord[]\n): RAGSyncOverviewPresentation => {\n\tconst records = sources ?? [];\n\tif (records.length === 0) {\n\t\treturn {\n\t\t\trows: [\n\t\t\t\t{ label: 'Configured sync sources', value: '0' },\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Latest sync',\n\t\t\t\t\tvalue: 'No sync sources configured yet.'\n\t\t\t\t}\n\t\t\t],\n\t\t\tsections: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Sync overview',\n\t\t\t\t\ttitle: 'No sync sources configured',\n\t\t\t\t\tsummary:\n\t\t\t\t\t\t'Add sync sources to monitor directories, URLs, storage, or mailboxes.'\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n\n\tconst countByStatus = (status: RAGSyncSourceRecord['status']) =>\n\t\trecords.filter((record) => record.status === status).length;\n\n\treturn {\n\t\trows: [\n\t\t\t{ label: 'Configured sync sources', value: String(records.length) },\n\t\t\t{ label: 'Completed', value: String(countByStatus('completed')) },\n\t\t\t{ label: 'Running', value: String(countByStatus('running')) },\n\t\t\t{\n\t\t\t\tlabel: 'Failed',\n\t\t\t\tvalue: String(countByStatus('failed'))\n\t\t\t},\n\t\t\tbuildSyncOverviewLatestRow(records)\n\t\t],\n\t\tsections: [\n\t\t\t{\n\t\t\t\tlabel: 'Sync overview',\n\t\t\t\ttitle: `${records.length} configured`,\n\t\t\t\tsummary: `${countByStatus('completed')} completed · ${countByStatus('running')} running · ${countByStatus('failed')} failed`\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Latest sync',\n\t\t\t\ttitle: buildSyncOverviewLatestRow(records).value,\n\t\t\t\tsummary: 'Most recent completed or last-known sync activity.'\n\t\t\t}\n\t\t]\n\t};\n};\n\nconst formatMediaTimestamp = (value: unknown) => {\n\tif (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n\t\treturn undefined;\n\t}\n\n\tconst totalSeconds = Math.floor(value / 1000);\n\tconst minutes = Math.floor(totalSeconds / 60);\n\tconst seconds = totalSeconds % 60;\n\tconst milliseconds = Math.floor(value % 1000);\n\n\treturn `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(\n\t\t2,\n\t\t'0'\n\t)}.${String(milliseconds).padStart(3, '0')}`;\n};\n\nconst getAttachmentName = (source?: string, title?: string) => {\n\tconst sourceAttachment = source?.split('/').at(-1);\n\tif (sourceAttachment && sourceAttachment.includes('.')) {\n\t\treturn sourceAttachment;\n\t}\n\n\tconst titleAttachment = title?.split(' · ').at(-1);\n\tif (titleAttachment && titleAttachment.includes('.')) {\n\t\treturn titleAttachment;\n\t}\n\n\treturn undefined;\n};\n\nconst buildContextLabel = (metadata?: Record<string, unknown>) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst emailKind = getContextString(metadata.emailKind);\n\tif (emailKind === 'attachment') {\n\t\treturn 'Attachment evidence';\n\t}\n\n\tif (emailKind === 'message') {\n\t\tconst from = getContextString(metadata.from);\n\t\treturn from ? `Message from ${from}` : 'Message evidence';\n\t}\n\n\tconst page =\n\t\tgetContextNumber(metadata.page) ??\n\t\tgetContextNumber(metadata.pageNumber) ??\n\t\t(typeof metadata.pageIndex === 'number'\n\t\t\t? metadata.pageIndex + 1\n\t\t\t: undefined);\n\tconst region =\n\t\tgetContextNumber(metadata.regionNumber) ??\n\t\t(typeof metadata.regionIndex === 'number'\n\t\t\t? metadata.regionIndex + 1\n\t\t\t: undefined);\n\tif (page && region) {\n\t\treturn `Page ${page} region ${region}`;\n\t}\n\tif (page) {\n\t\treturn `Page ${page}`;\n\t}\n\n\tconst sheet =\n\t\tgetContextString(metadata.sheetName) ??\n\t\t(Array.isArray(metadata.sheetNames)\n\t\t\t? getContextString(metadata.sheetNames[0])\n\t\t\t: undefined);\n\tif (sheet) {\n\t\treturn `Sheet ${sheet}`;\n\t}\n\n\tconst slide =\n\t\tgetContextNumber(metadata.slide) ??\n\t\tgetContextNumber(metadata.slideNumber) ??\n\t\t(typeof metadata.slideIndex === 'number'\n\t\t\t? metadata.slideIndex + 1\n\t\t\t: undefined);\n\tif (slide) {\n\t\treturn `Slide ${slide}`;\n\t}\n\n\tconst archiveEntry =\n\t\tgetContextString(metadata.archiveEntryPath) ??\n\t\tgetContextString(metadata.entryPath);\n\tif (archiveEntry) {\n\t\treturn `Archive entry ${archiveEntry}`;\n\t}\n\n\tconst threadTopic = getContextString(metadata.threadTopic);\n\tif (threadTopic) {\n\t\treturn `Thread ${threadTopic}`;\n\t}\n\n\tconst speaker = getContextString(metadata.speaker);\n\tif (speaker) {\n\t\treturn `Speaker ${speaker}`;\n\t}\n\n\tconst sectionPath = Array.isArray(metadata.sectionPath)\n\t\t? metadata.sectionPath\n\t\t\t\t.map((value) => getContextString(value))\n\t\t\t\t.filter((value): value is string => typeof value === 'string')\n\t\t: [];\n\tconst sectionTitle =\n\t\tgetContextString(metadata.sectionTitle) ?? sectionPath.at(-1);\n\tif (sectionTitle) {\n\t\treturn `Section ${sectionTitle}`;\n\t}\n\n\treturn undefined;\n};\n\nconst buildLocatorLabel = (\n\tmetadata?: Record<string, unknown>,\n\tsource?: string,\n\ttitle?: string\n) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst page =\n\t\tgetContextNumber(metadata.page) ??\n\t\tgetContextNumber(metadata.pageNumber) ??\n\t\t(typeof metadata.pageIndex === 'number'\n\t\t\t? metadata.pageIndex + 1\n\t\t\t: undefined);\n\tconst region =\n\t\tgetContextNumber(metadata.regionNumber) ??\n\t\t(typeof metadata.regionIndex === 'number'\n\t\t\t? metadata.regionIndex + 1\n\t\t\t: undefined);\n\tif (page && region) {\n\t\treturn `Page ${page} · Region ${region}`;\n\t}\n\tif (page) {\n\t\treturn `Page ${page}`;\n\t}\n\n\tconst sheet =\n\t\tgetContextString(metadata.sheetName) ??\n\t\t(Array.isArray(metadata.sheetNames)\n\t\t\t? getContextString(metadata.sheetNames[0])\n\t\t\t: undefined);\n\tif (sheet) {\n\t\treturn `Sheet ${sheet}`;\n\t}\n\n\tconst slide =\n\t\tgetContextNumber(metadata.slide) ??\n\t\tgetContextNumber(metadata.slideNumber) ??\n\t\t(typeof metadata.slideIndex === 'number'\n\t\t\t? metadata.slideIndex + 1\n\t\t\t: undefined);\n\tif (slide) {\n\t\treturn `Slide ${slide}`;\n\t}\n\n\tconst archiveEntry =\n\t\tgetContextString(metadata.archiveEntryPath) ??\n\t\tgetContextString(metadata.entryPath);\n\tif (archiveEntry) {\n\t\treturn `Archive entry ${archiveEntry}`;\n\t}\n\n\tconst emailKind = getContextString(metadata.emailKind);\n\tif (emailKind === 'attachment') {\n\t\tconst attachmentName =\n\t\t\tgetContextString(metadata.attachmentName) ??\n\t\t\tgetAttachmentName(source, title);\n\t\treturn attachmentName ? `Attachment ${attachmentName}` : 'Attachment';\n\t}\n\n\tconst mediaStart = formatMediaTimestamp(metadata.startMs);\n\tconst mediaEnd = formatMediaTimestamp(metadata.endMs);\n\tif (mediaStart && mediaEnd) {\n\t\treturn `Timestamp ${mediaStart} - ${mediaEnd}`;\n\t}\n\n\tif (mediaStart) {\n\t\treturn `Timestamp ${mediaStart}`;\n\t}\n\n\tconst sectionPath = Array.isArray(metadata.sectionPath)\n\t\t? metadata.sectionPath\n\t\t\t\t.map((value) => getContextString(value))\n\t\t\t\t.filter((value): value is string => typeof value === 'string')\n\t\t: [];\n\tif (sectionPath.length > 0) {\n\t\treturn `Section ${sectionPath.join(' > ')}`;\n\t}\n\n\treturn undefined;\n};\n\nconst buildProvenanceLabel = (metadata?: Record<string, unknown>) => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst threadTopic = getContextString(metadata.threadTopic);\n\tconst from = getContextString(metadata.from);\n\tconst sentAt =\n\t\tformatTimestampLabel(metadata.sentAt) ??\n\t\tformatTimestampLabel(metadata.receivedAt);\n\tconst speaker = getContextString(metadata.speaker);\n\tconst mediaKind = getContextString(metadata.mediaKind);\n\tconst transcriptSource = getContextString(metadata.transcriptSource);\n\tconst pdfTextMode = getContextString(metadata.pdfTextMode);\n\tconst ocrEngine = getContextString(metadata.ocrEngine);\n\tconst ocrConfidence =\n\t\tgetContextNumber(metadata.ocrRegionConfidence) ??\n\t\tgetContextNumber(metadata.ocrConfidence);\n\n\tconst labels = [\n\t\tpdfTextMode ? `PDF ${pdfTextMode}` : '',\n\t\tocrEngine ? `OCR ${ocrEngine}` : '',\n\t\ttypeof ocrConfidence === 'number'\n\t\t\t? `Confidence ${ocrConfidence.toFixed(2)}`\n\t\t\t: '',\n\t\tmediaKind ? `Media ${mediaKind}` : '',\n\t\ttranscriptSource ? `Transcript ${transcriptSource}` : '',\n\t\tthreadTopic ? `Thread ${threadTopic}` : '',\n\t\tspeaker ? `Speaker ${speaker}` : '',\n\t\tfrom ? `Sender ${from}` : '',\n\t\tsentAt ? `Sent ${sentAt}` : ''\n\t].filter((value) => value.length > 0);\n\n\treturn labels.length > 0 ? labels.join(' · ') : undefined;\n};\n\nexport const buildRAGSourceLabels = ({\n\tmetadata,\n\tsource,\n\ttitle\n}: {\n\tmetadata?: Record<string, unknown>;\n\tsource?: string;\n\ttitle?: string;\n}): RAGSourceLabels | undefined => {\n\tconst contextLabel = buildContextLabel(metadata);\n\tconst locatorLabel = buildLocatorLabel(metadata, source, title);\n\tconst provenanceLabel = buildProvenanceLabel(metadata);\n\n\tif (!contextLabel && !locatorLabel && !provenanceLabel) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tcontextLabel,\n\t\tlocatorLabel,\n\t\tprovenanceLabel\n\t};\n};\n\nexport const buildRAGChunkStructure = (\n\tmetadata?: Record<string, unknown>\n): RAGChunkStructure | undefined => {\n\tif (!metadata) {\n\t\treturn undefined;\n\t}\n\n\tconst sectionPath = Array.isArray(metadata.sectionPath)\n\t\t? metadata.sectionPath.filter(\n\t\t\t\t(value): value is string =>\n\t\t\t\t\ttypeof value === 'string' && value.trim().length > 0\n\t\t\t)\n\t\t: undefined;\n\tconst sectionKind =\n\t\tmetadata.sectionKind === 'markdown_heading' ||\n\t\tmetadata.sectionKind === 'html_heading' ||\n\t\tmetadata.sectionKind === 'office_heading' ||\n\t\tmetadata.sectionKind === 'spreadsheet_rows' ||\n\t\tmetadata.sectionKind === 'presentation_slide'\n\t\t\t? metadata.sectionKind\n\t\t\t: undefined;\n\tconst section: NonNullable<RAGChunkStructure['section']> = {\n\t\tdepth: getContextNumber(metadata.sectionDepth),\n\t\tkind: sectionKind,\n\t\tpath: sectionPath && sectionPath.length > 0 ? sectionPath : undefined,\n\t\ttitle: getContextString(metadata.sectionTitle)\n\t};\n\tconst sequence: NonNullable<RAGChunkStructure['sequence']> = {\n\t\tnextChunkId: getContextString(metadata.nextChunkId),\n\t\tpreviousChunkId: getContextString(metadata.previousChunkId),\n\t\tsectionChunkCount: getContextNumber(metadata.sectionChunkCount),\n\t\tsectionChunkId: getContextString(metadata.sectionChunkId),\n\t\tsectionChunkIndex: getContextNumber(metadata.sectionChunkIndex)\n\t};\n\n\tif (\n\t\t!section.title &&\n\t\t(!section.path || section.path.length === 0) &&\n\t\ttypeof section.depth !== 'number' &&\n\t\t!section.kind &&\n\t\t!sequence.nextChunkId &&\n\t\t!sequence.previousChunkId &&\n\t\ttypeof sequence.sectionChunkCount !== 'number' &&\n\t\t!sequence.sectionChunkId &&\n\t\ttypeof sequence.sectionChunkIndex !== 'number'\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tsection:\n\t\t\tsection.title ||\n\t\t\t(section.path && section.path.length > 0) ||\n\t\t\ttypeof section.depth === 'number' ||\n\t\t\tsection.kind\n\t\t\t\t? section\n\t\t\t\t: undefined,\n\t\tsequence:\n\t\t\tsequence.nextChunkId ||\n\t\t\tsequence.previousChunkId ||\n\t\t\ttypeof sequence.sectionChunkCount === 'number' ||\n\t\t\tsequence.sectionChunkId ||\n\t\t\ttypeof sequence.sectionChunkIndex === 'number'\n\t\t\t\t? sequence\n\t\t\t\t: undefined\n\t};\n};\n\nconst buildExcerpt = (text: string, maxLength = 160) => {\n\tconst normalized = text.replaceAll(/\\s+/g, ' ').trim();\n\tif (normalized.length <= maxLength) {\n\t\treturn normalized;\n\t}\n\n\treturn `${normalized.slice(0, Math.max(0, maxLength - 1)).trimEnd()}…`;\n};\n\ntype ExcerptChunkInput = Pick<\n\tRAGSource,\n\t'chunkId' | 'metadata' | 'structure' | 'text'\n>;\n\nexport const buildRAGChunkExcerpts = (\n\tchunks: ExcerptChunkInput[],\n\tactiveChunkId?: string\n): RAGChunkExcerpts | undefined => {\n\tif (chunks.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tconst graph = buildRAGChunkGraph(\n\t\tchunks.map((chunk) => ({\n\t\t\tchunkId: chunk.chunkId,\n\t\t\tmetadata: chunk.metadata,\n\t\t\tstructure: chunk.structure\n\t\t}))\n\t);\n\tconst navigation = buildRAGChunkGraphNavigation(graph, activeChunkId);\n\tconst activeChunk =\n\t\tchunks.find((chunk) => chunk.chunkId === navigation.activeChunkId) ??\n\t\tchunks[0];\n\tif (!activeChunk) {\n\t\treturn undefined;\n\t}\n\n\tconst chunkMap = new Map(chunks.map((chunk) => [chunk.chunkId, chunk]));\n\tconst orderedWindowIds = [\n\t\tnavigation.previousNode?.chunkId,\n\t\tactiveChunk.chunkId,\n\t\tnavigation.nextNode?.chunkId\n\t].filter(\n\t\t(chunkId, index, ids): chunkId is string =>\n\t\t\tBoolean(chunkId) && ids.indexOf(chunkId) === index\n\t);\n\tconst orderedSectionIds =\n\t\tnavigation.sectionNodes.length > 0\n\t\t\t? navigation.sectionNodes.map((node) => node.chunkId)\n\t\t\t: [activeChunk.chunkId];\n\n\tconst collectText = (chunkIds: string[]) =>\n\t\tchunkIds\n\t\t\t.map((chunkId) => chunkMap.get(chunkId)?.text)\n\t\t\t.filter((text): text is string => typeof text === 'string')\n\t\t\t.join('\\n\\n');\n\n\treturn {\n\t\tchunkExcerpt: buildExcerpt(activeChunk.text, 160),\n\t\tsectionExcerpt: buildExcerpt(collectText(orderedSectionIds), 320),\n\t\twindowExcerpt: buildExcerpt(collectText(orderedWindowIds), 240)\n\t};\n};\n\nexport const buildRAGPreferredExcerpt = (\n\texcerpts?: RAGChunkExcerpts,\n\tstructure?: RAGChunkStructure\n) => {\n\tif (!excerpts) {\n\t\treturn '';\n\t}\n\n\tconst chunkLength = excerpts.chunkExcerpt.trim().length;\n\tconst sectionChunkCount = structure?.sequence?.sectionChunkCount ?? 1;\n\tif (sectionChunkCount > 1 && chunkLength > 0 && chunkLength < 72) {\n\t\tif (\n\t\t\tsectionChunkCount <= 3 &&\n\t\t\texcerpts.sectionExcerpt.trim().length > 0\n\t\t) {\n\t\t\treturn excerpts.sectionExcerpt;\n\t\t}\n\t\tif (excerpts.windowExcerpt.trim().length > 0) {\n\t\t\treturn excerpts.windowExcerpt;\n\t\t}\n\t}\n\n\treturn excerpts.chunkExcerpt;\n};\n\ntype GraphChunkInput = Pick<\n\tRAGSource,\n\t'chunkId' | 'metadata' | 'source' | 'title' | 'labels' | 'structure'\n> &\n\tPartial<Pick<RAGSource, 'score'>>;\n\nexport const buildRAGChunkGraph = (\n\tchunks: GraphChunkInput[]\n): RAGChunkGraph => {\n\tconst nodes: RAGChunkGraphNode[] = [];\n\tconst edges: RAGChunkGraphEdge[] = [];\n\tconst edgeKeys = new Set<string>();\n\tconst sections = new Map<string, RAGChunkGraphSectionGroup>();\n\n\tfor (const chunk of chunks) {\n\t\tconst labels =\n\t\t\tchunk.labels ??\n\t\t\tbuildRAGSourceLabels({\n\t\t\t\tmetadata: chunk.metadata,\n\t\t\t\tsource: chunk.source,\n\t\t\t\ttitle: chunk.title\n\t\t\t});\n\t\tconst structure =\n\t\t\tchunk.structure ?? buildRAGChunkStructure(chunk.metadata);\n\n\t\tnodes.push({\n\t\t\tchunkId: chunk.chunkId,\n\t\t\tcontextLabel: labels?.contextLabel,\n\t\t\tlabel: chunk.source ?? chunk.title ?? chunk.chunkId,\n\t\t\tlocatorLabel: labels?.locatorLabel,\n\t\t\tprovenanceLabel: labels?.provenanceLabel,\n\t\t\tscore: chunk.score,\n\t\t\tsource: chunk.source,\n\t\t\tstructure,\n\t\t\ttitle: chunk.title\n\t\t});\n\n\t\tconst previousChunkId = structure?.sequence?.previousChunkId;\n\t\tif (previousChunkId) {\n\t\t\tconst key = `previous:${previousChunkId}:${chunk.chunkId}`;\n\t\t\tif (!edgeKeys.has(key)) {\n\t\t\t\tedgeKeys.add(key);\n\t\t\t\tedges.push({\n\t\t\t\t\tfromChunkId: previousChunkId,\n\t\t\t\t\trelation: 'previous',\n\t\t\t\t\ttoChunkId: chunk.chunkId\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst nextChunkId = structure?.sequence?.nextChunkId;\n\t\tif (nextChunkId) {\n\t\t\tconst key = `next:${chunk.chunkId}:${nextChunkId}`;\n\t\t\tif (!edgeKeys.has(key)) {\n\t\t\t\tedgeKeys.add(key);\n\t\t\t\tedges.push({\n\t\t\t\t\tfromChunkId: chunk.chunkId,\n\t\t\t\t\trelation: 'next',\n\t\t\t\t\ttoChunkId: nextChunkId\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst sectionId = structure?.sequence?.sectionChunkId;\n\t\tif (sectionId) {\n\t\t\tconst existing = sections.get(sectionId);\n\t\t\tif (!existing) {\n\t\t\t\tsections.set(sectionId, {\n\t\t\t\t\tchildSectionIds: [],\n\t\t\t\t\tchunkCount: structure.sequence?.sectionChunkCount ?? 1,\n\t\t\t\t\tchunkIds: [chunk.chunkId],\n\t\t\t\t\tdepth: structure.section?.depth,\n\t\t\t\t\tid: sectionId,\n\t\t\t\t\tkind: structure.section?.kind,\n\t\t\t\t\tleadChunkId: chunk.chunkId,\n\t\t\t\t\tpath: structure.section?.path,\n\t\t\t\t\ttitle: structure.section?.title\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!existing.chunkIds.includes(chunk.chunkId)) {\n\t\t\t\texisting.chunkIds.push(chunk.chunkId);\n\t\t\t}\n\t\t\texisting.chunkCount = Math.max(\n\t\t\t\texisting.chunkCount,\n\t\t\t\tstructure.sequence?.sectionChunkCount ?? existing.chunkCount\n\t\t\t);\n\t\t}\n\t}\n\n\tfor (const section of sections.values()) {\n\t\tsection.chunkIds.sort((left, right) => {\n\t\t\tconst leftNode = nodes.find((node) => node.chunkId === left);\n\t\t\tconst rightNode = nodes.find((node) => node.chunkId === right);\n\t\t\tconst leftIndex =\n\t\t\t\tleftNode?.structure?.sequence?.sectionChunkIndex ??\n\t\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\t\tconst rightIndex =\n\t\t\t\trightNode?.structure?.sequence?.sectionChunkIndex ??\n\t\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\t\tif (leftIndex !== rightIndex) {\n\t\t\t\treturn leftIndex - rightIndex;\n\t\t\t}\n\n\t\t\treturn left.localeCompare(right);\n\t\t});\n\t\tsection.leadChunkId = section.chunkIds[0];\n\t}\n\n\tconst sectionPathIndex = new Map<string, RAGChunkGraphSectionGroup>();\n\tfor (const section of sections.values()) {\n\t\tconst path =\n\t\t\tsection.path && section.path.length > 0\n\t\t\t\t? section.path\n\t\t\t\t: section.title\n\t\t\t\t\t? [section.title]\n\t\t\t\t\t: undefined;\n\t\tif (path && path.length > 0) {\n\t\t\tsectionPathIndex.set(path.join('\\u0000'), section);\n\t\t}\n\t}\n\n\tfor (const section of sections.values()) {\n\t\tconst path =\n\t\t\tsection.path && section.path.length > 0\n\t\t\t\t? section.path\n\t\t\t\t: section.title\n\t\t\t\t\t? [section.title]\n\t\t\t\t\t: undefined;\n\t\tif (!path || path.length < 2) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parent = sectionPathIndex.get(path.slice(0, -1).join('\\u0000'));\n\t\tif (!parent || parent.id === section.id) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tsection.parentSectionId = parent.id;\n\t\tif (!parent.childSectionIds.includes(section.id)) {\n\t\t\tparent.childSectionIds.push(section.id);\n\t\t}\n\n\t\tif (parent.leadChunkId && section.leadChunkId) {\n\t\t\tconst parentKey = `section_parent:${section.leadChunkId}:${parent.leadChunkId}`;\n\t\t\tif (!edgeKeys.has(parentKey)) {\n\t\t\t\tedgeKeys.add(parentKey);\n\t\t\t\tedges.push({\n\t\t\t\t\tfromChunkId: section.leadChunkId,\n\t\t\t\t\trelation: 'section_parent',\n\t\t\t\t\ttoChunkId: parent.leadChunkId\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst childKey = `section_child:${parent.leadChunkId}:${section.leadChunkId}`;\n\t\t\tif (!edgeKeys.has(childKey)) {\n\t\t\t\tedgeKeys.add(childKey);\n\t\t\t\tedges.push({\n\t\t\t\t\tfromChunkId: parent.leadChunkId,\n\t\t\t\t\trelation: 'section_child',\n\t\t\t\t\ttoChunkId: section.leadChunkId\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tnodes.sort((left, right) => {\n\t\tconst leftSection =\n\t\t\tleft.structure?.sequence?.sectionChunkIndex ??\n\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\tconst rightSection =\n\t\t\tright.structure?.sequence?.sectionChunkIndex ??\n\t\t\tNumber.MAX_SAFE_INTEGER;\n\t\tif (leftSection !== rightSection) {\n\t\t\treturn leftSection - rightSection;\n\t\t}\n\n\t\tconst leftScore = left.score ?? Number.NEGATIVE_INFINITY;\n\t\tconst rightScore = right.score ?? Number.NEGATIVE_INFINITY;\n\t\tif (leftScore !== rightScore) {\n\t\t\treturn rightScore - leftScore;\n\t\t}\n\n\t\treturn left.label.localeCompare(right.label);\n\t});\n\n\treturn {\n\t\tedges,\n\t\tnodes,\n\t\tsections: [...sections.values()].sort((left, right) =>\n\t\t\t(left.title ?? left.id).localeCompare(right.title ?? right.id)\n\t\t)\n\t};\n};\n\nexport const buildRAGChunkPreviewGraph = (\n\tpreview: Pick<RAGDocumentChunkPreview, 'chunks' | 'document'>\n): RAGChunkGraph =>\n\tbuildRAGChunkGraph(\n\t\tpreview.chunks.map((chunk) => ({\n\t\t\tchunkId: chunk.chunkId,\n\t\t\tlabels: chunk.labels,\n\t\t\tmetadata: chunk.metadata,\n\t\t\tsource: chunk.source ?? preview.document.source,\n\t\t\tstructure: chunk.structure,\n\t\t\ttitle: chunk.title ?? preview.document.title\n\t\t}))\n\t);\n\nexport const buildRAGChunkPreviewNavigation = (\n\tpreview: Pick<RAGDocumentChunkPreview, 'chunks' | 'document'>,\n\tactiveChunkId?: string\n): RAGChunkGraphNavigation =>\n\tbuildRAGChunkGraphNavigation(\n\t\tbuildRAGChunkPreviewGraph(preview),\n\t\tactiveChunkId\n\t);\n\nexport const buildRAGChunkGraphNavigation = (\n\tgraph: RAGChunkGraph,\n\tactiveChunkId?: string\n): RAGChunkGraphNavigation => {\n\tif (graph.nodes.length === 0) {\n\t\treturn {\n\t\t\tactiveChunkId,\n\t\t\tchildSections: [],\n\t\t\tsiblingSections: [],\n\t\t\tsectionNodes: []\n\t\t};\n\t}\n\n\tconst activeNode =\n\t\t(activeChunkId\n\t\t\t? graph.nodes.find((node) => node.chunkId === activeChunkId)\n\t\t\t: undefined) ?? graph.nodes[0];\n\tconst resolvedActiveChunkId = activeNode?.chunkId;\n\tconst previousNode = activeNode?.structure?.sequence?.previousChunkId\n\t\t? graph.nodes.find(\n\t\t\t\t(node) =>\n\t\t\t\t\tnode.chunkId ===\n\t\t\t\t\tactiveNode.structure?.sequence?.previousChunkId\n\t\t\t)\n\t\t: undefined;\n\tconst nextNode = activeNode?.structure?.sequence?.nextChunkId\n\t\t? graph.nodes.find(\n\t\t\t\t(node) =>\n\t\t\t\t\tnode.chunkId === activeNode.structure?.sequence?.nextChunkId\n\t\t\t)\n\t\t: undefined;\n\tconst section = activeNode?.structure?.sequence?.sectionChunkId\n\t\t? graph.sections.find(\n\t\t\t\t(entry) =>\n\t\t\t\t\tentry.id === activeNode.structure?.sequence?.sectionChunkId\n\t\t\t)\n\t\t: undefined;\n\tconst parentSection = section?.parentSectionId\n\t\t? graph.sections.find((entry) => entry.id === section.parentSectionId)\n\t\t: undefined;\n\tconst childSections = section\n\t\t? section.childSectionIds\n\t\t\t\t.map((sectionId) =>\n\t\t\t\t\tgraph.sections.find((entry) => entry.id === sectionId)\n\t\t\t\t)\n\t\t\t\t.filter((entry): entry is RAGChunkGraphSectionGroup =>\n\t\t\t\t\tBoolean(entry)\n\t\t\t\t)\n\t\t: [];\n\tconst siblingSections = section?.parentSectionId\n\t\t? graph.sections.filter(\n\t\t\t\t(entry) =>\n\t\t\t\t\tentry.parentSectionId === section.parentSectionId &&\n\t\t\t\t\tentry.id !== section.id\n\t\t\t)\n\t\t: [];\n\tconst sectionNodes = section\n\t\t? section.chunkIds\n\t\t\t\t.map((chunkId) =>\n\t\t\t\t\tgraph.nodes.find((node) => node.chunkId === chunkId)\n\t\t\t\t)\n\t\t\t\t.filter((node): node is RAGChunkGraphNode => Boolean(node))\n\t\t: activeNode\n\t\t\t? [activeNode]\n\t\t\t: [];\n\n\treturn {\n\t\tactiveChunkId: resolvedActiveChunkId,\n\t\tactiveNode,\n\t\tchildSections,\n\t\tnextNode,\n\t\tparentSection,\n\t\tpreviousNode,\n\t\tsection,\n\t\tsiblingSections,\n\t\tsectionNodes\n\t};\n};\nexport const buildRAGRetrievedState = (messages: AIMessage[]) => {\n\tconst message = getLatestRetrievedMessage(messages);\n\n\tif (!message) {\n\t\treturn null;\n\t}\n\n\tconst sources = message.sources ?? [];\n\tconst groundedAnswer = buildRAGGroundedAnswer(message.content, sources);\n\n\treturn {\n\t\tcitationReferenceMap: buildRAGCitationReferenceMap(\n\t\t\tbuildRAGCitations(sources)\n\t\t),\n\t\tcitations: buildRAGCitations(sources),\n\t\tconversationId: message.conversationId,\n\t\tgroundedAnswer,\n\t\tmessageId: message.id,\n\t\tretrievalDurationMs: message.retrievalDurationMs,\n\t\tretrievalStartedAt: message.retrievalStartedAt,\n\t\tretrievedAt: message.retrievedAt,\n\t\ttrace: isRAGRetrievalTrace(message.retrievalTrace)\n\t\t\t? message.retrievalTrace\n\t\t\t: undefined,\n\t\tsourceGroups: buildRAGSourceGroups(sources),\n\t\tsourceSummaries: buildRAGSourceSummaries(sources),\n\t\tsources\n\t};\n};\nexport const buildRAGSourceSummaries = (sources: RAGSource[]) => {\n\tconst sourceGroups = buildRAGSourceGroups(sources);\n\tconst citations = buildRAGCitations(sources);\n\tconst citationReferenceMap = buildRAGCitationReferenceMap(citations);\n\n\treturn sourceGroups.map<RAGSourceSummary>((group) => {\n\t\tconst groupCitations = citations.filter((citation) =>\n\t\t\tgroup.chunks.some((chunk) => chunk.chunkId === citation.chunkId)\n\t\t);\n\t\tconst leadChunk = group.chunks\n\t\t\t.slice()\n\t\t\t.sort((left, right) => right.score - left.score)[0];\n\t\tconst excerpts = leadChunk\n\t\t\t? buildRAGChunkExcerpts(group.chunks, leadChunk.chunkId)\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tbestScore: group.bestScore,\n\t\t\tcitationNumbers: groupCitations.map(\n\t\t\t\t(citation) => citationReferenceMap[citation.chunkId] ?? 0\n\t\t\t),\n\t\t\tcitations: groupCitations,\n\t\t\tchunkIds: group.chunks.map((chunk) => chunk.chunkId),\n\t\t\tcontextLabel:\n\t\t\t\tleadChunk?.labels?.contextLabel ??\n\t\t\t\tbuildContextLabel(leadChunk?.metadata),\n\t\t\tcount: group.count,\n\t\t\texcerpt:\n\t\t\t\tbuildRAGPreferredExcerpt(\n\t\t\t\t\texcerpts,\n\t\t\t\t\tleadChunk?.structure ??\n\t\t\t\t\t\tbuildRAGChunkStructure(leadChunk?.metadata)\n\t\t\t\t) || buildExcerpt(leadChunk?.text ?? ''),\n\t\t\texcerpts,\n\t\t\tkey: group.key,\n\t\t\tlabel: group.label,\n\t\t\tlocatorLabel:\n\t\t\t\tleadChunk?.labels?.locatorLabel ??\n\t\t\t\tbuildLocatorLabel(\n\t\t\t\t\tleadChunk?.metadata,\n\t\t\t\t\tleadChunk?.source,\n\t\t\t\t\tleadChunk?.title\n\t\t\t\t),\n\t\t\tprovenanceLabel:\n\t\t\t\tleadChunk?.labels?.provenanceLabel ??\n\t\t\t\tbuildProvenanceLabel(leadChunk?.metadata),\n\t\t\tstructure:\n\t\t\t\tleadChunk?.structure ??\n\t\t\t\tbuildRAGChunkStructure(leadChunk?.metadata),\n\t\t\tsource: group.source,\n\t\t\ttitle: group.title\n\t\t};\n\t});\n};\n\nexport type RAGStreamProgress = {\n\tstage: RAGStreamStage;\n\tconversationId?: string;\n\tmessageId?: string;\n\tretrievalStartedAt?: number;\n\tretrievedAt?: number;\n\tretrievalDurationMs?: number;\n\thasContent: boolean;\n\thasRetrieved: boolean;\n\thasSources: boolean;\n\thasThinking: boolean;\n\thasToolCalls: boolean;\n\tisComplete: boolean;\n\tisError: boolean;\n\tisIdle: boolean;\n\tisRetrieving: boolean;\n\tisRetrieved: boolean;\n\tisStreaming: boolean;\n\tisSubmitting: boolean;\n\tsourceCount: number;\n\tlatestMessage: AIMessage | undefined;\n};\n\nconst buildStreamProgressState = (messages: AIMessage[]) => {\n\tconst latestMessage = getLatestAssistantMessage(messages);\n\tconst retrieved = latestMessage\n\t\t? buildRAGRetrievedState(messages)\n\t\t: undefined;\n\n\treturn {\n\t\tconversationId: latestMessage?.conversationId,\n\t\tlatestMessage,\n\t\tmessageId: latestMessage?.id,\n\t\tretrieved,\n\t\tsourceCount:\n\t\t\tretrieved?.sources.length ?? latestMessage?.sources?.length ?? 0\n\t};\n};\n\nexport const buildRAGStreamProgress = ({\n\terror,\n\tisStreaming,\n\tmessages\n}: {\n\terror: string | null;\n\tisStreaming: boolean;\n\tmessages: AIMessage[];\n}): RAGStreamProgress => {\n\tconst stage = resolveRAGStreamStage({\n\t\terror,\n\t\tisStreaming,\n\t\tmessages\n\t});\n\tconst state = buildStreamProgressState(messages);\n\tconst hasSources = state.sourceCount > 0;\n\tconst hasRetrieved =\n\t\tstage === 'retrieved' ||\n\t\tstate.retrieved !== undefined ||\n\t\tstate.latestMessage?.retrievedAt !== undefined;\n\tconst hasThinking =\n\t\ttypeof state.latestMessage?.thinking === 'string' &&\n\t\tstate.latestMessage.thinking.length > 0;\n\tconst hasToolCalls = (state.latestMessage?.toolCalls?.length ?? 0) > 0;\n\n\treturn {\n\t\tconversationId: state.conversationId,\n\t\thasContent:\n\t\t\ttypeof state.latestMessage?.content === 'string' &&\n\t\t\tstate.latestMessage.content.length > 0,\n\t\thasRetrieved,\n\t\thasSources,\n\t\thasThinking,\n\t\thasToolCalls,\n\t\tisComplete: stage === 'complete',\n\t\tisError: stage === 'error',\n\t\tisIdle: stage === 'idle',\n\t\tisRetrieved: stage === 'retrieved',\n\t\tisRetrieving: stage === 'submitting' || stage === 'retrieving',\n\t\tisStreaming: stage === 'streaming',\n\t\tisSubmitting: stage === 'submitting',\n\t\tlatestMessage: state.latestMessage,\n\t\tmessageId: state.messageId,\n\t\tretrievalDurationMs: state.retrieved?.retrievalDurationMs,\n\t\tretrievalStartedAt: state.retrieved?.retrievalStartedAt,\n\t\tretrievedAt: state.retrieved?.retrievedAt,\n\t\tsourceCount: state.sourceCount,\n\t\tstage\n\t};\n};\n\nexport type RAGStreamProgressState = ReturnType<typeof buildRAGStreamProgress>;\nexport const buildRAGAnswerWorkflowState = ({\n\terror,\n\tisStreaming,\n\tmessages\n}: {\n\terror: string | null;\n\tisStreaming: boolean;\n\tmessages: AIMessage[];\n}): RAGAnswerWorkflowState => {\n\tconst latestAssistantMessage = getLatestAssistantMessage(messages);\n\tconst sources = getLatestRAGSources(messages);\n\tconst sourceGroups = buildRAGSourceGroups(sources);\n\tconst citations = buildRAGCitations(sources);\n\tconst citationReferenceMap = buildRAGCitationReferenceMap(citations);\n\tconst sourceSummaries = buildRAGSourceSummaries(sources);\n\tconst groundingReferences = buildRAGGroundingReferences(sources);\n\tconst groundedAnswer = buildRAGGroundedAnswer(\n\t\tlatestAssistantMessage?.content ?? '',\n\t\tsources\n\t);\n\tconst retrieval = buildRAGRetrievedState(messages);\n\tconst progress = buildRAGStreamProgress({\n\t\terror,\n\t\tisStreaming,\n\t\tmessages\n\t});\n\n\treturn {\n\t\tcitationReferenceMap,\n\t\tcitations,\n\t\tcoverage: groundedAnswer.coverage,\n\t\terror,\n\t\tgroundedAnswer,\n\t\tgroundingReferences,\n\t\thasCitations: groundedAnswer.hasCitations,\n\t\thasGrounding: groundingReferences.length > 0,\n\t\thasRetrieved: progress.hasRetrieved,\n\t\thasSources: sources.length > 0,\n\t\tisAnswerStreaming: progress.isStreaming,\n\t\tisComplete: progress.isComplete,\n\t\tisError: progress.isError,\n\t\tisIdle: progress.isIdle,\n\t\tisRetrieved: progress.isRetrieved,\n\t\tisRetrieving: progress.isRetrieving,\n\t\tisRunning:\n\t\t\tprogress.isSubmitting ||\n\t\t\tprogress.isRetrieving ||\n\t\t\tprogress.isStreaming,\n\t\tisSubmitting: progress.isSubmitting,\n\t\tlatestAssistantMessage,\n\t\tmessages,\n\t\tretrieval,\n\t\tretrievalDurationMs: retrieval?.retrievalDurationMs,\n\t\tretrievalStartedAt: retrieval?.retrievalStartedAt,\n\t\tretrievedAt: retrieval?.retrievedAt,\n\t\tsourceGroups,\n\t\tsourceSummaries,\n\t\tsources,\n\t\tstage: progress.stage,\n\t\tungroundedReferenceNumbers: groundedAnswer.ungroundedReferenceNumbers\n\t};\n};\n\nexport const buildRAGSourceGroups = (sources: RAGSource[]) => {\n\tconst groups = new Map<string, RAGSourceGroup>();\n\n\tfor (const source of sources) {\n\t\tupdateSourceGroup(groups, source);\n\t}\n\n\treturn [...groups.values()].sort((left, right) => {\n\t\tif (right.bestScore !== left.bestScore) {\n\t\t\treturn right.bestScore - left.bestScore;\n\t\t}\n\n\t\treturn left.label.localeCompare(right.label);\n\t});\n};\n\nconst buildSourceGroup = (source: RAGSource, key: string): RAGSourceGroup => ({\n\tbestScore: source.score,\n\tchunks: [source],\n\tcount: 1,\n\tkey,\n\tlabel: buildSourceLabel(source),\n\tlabels:\n\t\tsource.labels ??\n\t\tbuildRAGSourceLabels({\n\t\t\tmetadata: source.metadata,\n\t\t\tsource: source.source,\n\t\t\ttitle: source.title\n\t\t}),\n\tstructure: source.structure ?? buildRAGChunkStructure(source.metadata),\n\tsource: source.source,\n\ttitle: source.title\n});\n\nconst updateSourceGroup = (\n\tgroups: Map<string, RAGSourceGroup>,\n\tsource: RAGSource\n) => {\n\tconst key = buildSourceGroupKey(source);\n\tconst existing = groups.get(key);\n\tif (!existing) {\n\t\tgroups.set(key, buildSourceGroup(source, key));\n\n\t\treturn;\n\t}\n\n\tif (source.score > existing.bestScore) {\n\t\texisting.bestScore = source.score;\n\t\texisting.label = buildSourceLabel(source);\n\t\texisting.labels =\n\t\t\tsource.labels ??\n\t\t\tbuildRAGSourceLabels({\n\t\t\t\tmetadata: source.metadata,\n\t\t\t\tsource: source.source,\n\t\t\t\ttitle: source.title\n\t\t\t});\n\t\texisting.structure =\n\t\t\tsource.structure ?? buildRAGChunkStructure(source.metadata);\n\t\texisting.source = source.source;\n\t\texisting.title = source.title;\n\t} else {\n\t\texisting.bestScore = Math.max(existing.bestScore, source.score);\n\t}\n\texisting.count += 1;\n\texisting.chunks.push(source);\n};\nexport const getLatestAssistantMessage = (messages: AIMessage[]) => {\n\tfor (let index = messages.length - 1; index >= 0; index -= 1) {\n\t\tconst message = messages[index];\n\t\tif (message?.role === 'assistant') {\n\t\t\treturn message;\n\t\t}\n\t}\n\n\treturn undefined;\n};\nexport const getLatestRAGSources = (messages: AIMessage[]) =>\n\tgetLatestAssistantMessage(messages)?.sources ?? [];\nexport const getLatestRetrievedMessage = (messages: AIMessage[]) => {\n\tfor (let index = messages.length - 1; index >= 0; index -= 1) {\n\t\tconst message = messages[index];\n\t\tif (\n\t\t\tmessage?.role === 'assistant' &&\n\t\t\t(typeof message.retrievedAt === 'number' ||\n\t\t\t\t(message.sources?.length ?? 0) > 0)\n\t\t) {\n\t\t\treturn message;\n\t\t}\n\t}\n\n\treturn undefined;\n};\nexport const resolveRAGStreamStage = ({\n\terror,\n\tisStreaming,\n\tmessages\n}: {\n\terror: string | null;\n\tisStreaming: boolean;\n\tmessages: AIMessage[];\n}) => {\n\tif (error) {\n\t\treturn 'error';\n\t}\n\n\tconst assistantMessage = getLatestAssistantMessage(messages);\n\tif (!assistantMessage) {\n\t\treturn isStreaming ? 'submitting' : 'idle';\n\t}\n\n\tconst isRetrieving =\n\t\ttypeof assistantMessage.retrievalStartedAt === 'number' &&\n\t\ttypeof assistantMessage.retrievedAt !== 'number';\n\n\tif (isRetrieving) {\n\t\treturn 'retrieving';\n\t}\n\n\tif (!isStreaming) {\n\t\treturn 'complete';\n\t}\n\n\tconst hasRetrieved = typeof assistantMessage.retrievedAt === 'number';\n\tconst hasContent =\n\t\tassistantMessage.content.trim().length > 0 ||\n\t\tassistantMessage.thinking?.trim().length ||\n\t\t(assistantMessage.toolCalls?.length ?? 0) > 0 ||\n\t\t(assistantMessage.images?.length ?? 0) > 0;\n\n\tif (hasRetrieved && !hasContent) {\n\t\treturn 'retrieved';\n\t}\n\n\treturn 'streaming';\n};\n\nconst formatSignedDelta = (value: number, decimals = 0, suffix = '') =>\n\t`${value >= 0 ? '+' : ''}${value.toFixed(decimals)}${suffix}`;\n\nconst formatEvaluationPassingRate = (value: number) => `${value.toFixed(1)}%`;\n\nconst formatEvaluationSummary = (response: RAGEvaluationResponse) =>\n\t`${response.summary.totalCases} total · f1 ${response.summary.averageF1.toFixed(\n\t\t3\n\t)} · latency ${response.summary.averageLatencyMs.toFixed(1)}ms`;\n\nconst formatGroundingHistorySummaryValue = (response: {\n\tsummary: {\n\t\tpassedCases: number;\n\t\ttotalCases: number;\n\t\tgroundedCases: number;\n\t\tpartialCases: number;\n\t\tungroundedCases: number;\n\t\taverageResolvedCitationRate: number;\n\t\taverageCitationF1: number;\n\t};\n}) =>\n\t`${response.summary.passedCases}/${response.summary.totalCases} pass · grounded ${response.summary.groundedCases} · partial ${response.summary.partialCases} · ungrounded ${response.summary.ungroundedCases} · resolved citations ${(response.summary.averageResolvedCitationRate * 100).toFixed(1)}% · citation f1 ${response.summary.averageCitationF1.toFixed(3)}`;\n\nconst formatHistoryCaseLabels = (cases: RAGEvaluationCaseDiff[]) =>\n\tcases.length > 0\n\t\t? cases.map((entry) => entry.label ?? entry.caseId).join(', ')\n\t\t: 'none';\n\nconst formatGroundingHistoryCaseLabels = (\n\tcases: RAGAnswerGroundingEvaluationCaseDiff[]\n) =>\n\tcases.length > 0\n\t\t? cases.map((entry) => entry.label ?? entry.caseId).join(', ')\n\t\t: 'none';\n\nconst formatRerankerComparisonHeadline = (entry: RAGRerankerComparisonEntry) =>\n\t[\n\t\tentry.label,\n\t\t`passing ${formatEvaluationPassingRate(entry.response.passingRate)}`,\n\t\t`f1 ${entry.response.summary.averageF1.toFixed(3)}`,\n\t\t`latency ${entry.response.summary.averageLatencyMs.toFixed(1)}ms`\n\t].join(' · ');\n\nconst formatRetrievalComparisonHeadline = (\n\tentry: RAGRetrievalComparisonEntry\n) =>\n\t[\n\t\tentry.label,\n\t\t`mode ${entry.retrievalMode}`,\n\t\t`passing ${formatEvaluationPassingRate(entry.response.passingRate)}`,\n\t\t`f1 ${entry.response.summary.averageF1.toFixed(3)}`,\n\t\t`latency ${entry.response.summary.averageLatencyMs.toFixed(1)}ms`\n\t].join(' · ');\n\nconst formatTraceModes = (modes: RAGHybridRetrievalMode[]) =>\n\tmodes.length > 0 ? modes.join(' / ') : 'n/a';\n\nconst formatSourceBalanceStrategies = (\n\tstrategies: RAGSourceBalanceStrategy[]\n) => (strategies.length > 0 ? strategies.join(' / ') : 'n/a');\n\nconst formatTraceStageSummary = (\n\tstageCounts: Partial<\n\t\tRecord<RAGRetrievalTrace['steps'][number]['stage'], number>\n\t>\n) => {\n\tconst topStages = Object.entries(stageCounts)\n\t\t.sort((left, right) => right[1] - left[1])\n\t\t.slice(0, 3);\n\n\treturn topStages.length > 0\n\t\t? topStages.map(([stage, count]) => `${stage} ${count}`).join(' · ')\n\t\t: 'n/a';\n};\n\nconst formatTraceRatio = (count: number, total: number) => `${count}/${total}`;\n\nconst formatTraceCountDelta = (value: number) =>\n\t`${value >= 0 ? '+' : ''}${value}`;\n\nconst buildComparisonOverviewPresentation = <\n\tTEntry extends {\n\t\tlabel: string;\n\t\tresponse: {\n\t\t\tpassingRate: number;\n\t\t\tsummary: {\n\t\t\t\taverageF1: number;\n\t\t\t\taverageLatencyMs: number;\n\t\t\t};\n\t\t};\n\t}\n>(input: {\n\tentries: TEntry[];\n\tsummary: {\n\t\tbestByPassingRate?: string;\n\t\tbestByAverageF1?: string;\n\t\tfastest?: string;\n\t};\n\tresolveLabel: (id?: string) => string;\n\tresolveEntry: (id?: string) => TEntry | undefined;\n}): RAGComparisonOverviewPresentation => {\n\tconst winnerLabel = input.resolveLabel(input.summary.bestByPassingRate);\n\tconst winnerEntry = input.resolveEntry(input.summary.bestByPassingRate);\n\n\treturn {\n\t\trows: [\n\t\t\t{\n\t\t\t\tlabel: 'Best passing rate',\n\t\t\t\tvalue: input.resolveLabel(input.summary.bestByPassingRate)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Best average F1',\n\t\t\t\tvalue: input.resolveLabel(input.summary.bestByAverageF1)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Fastest',\n\t\t\t\tvalue: input.resolveLabel(input.summary.fastest)\n\t\t\t}\n\t\t],\n\t\twinnerLabel,\n\t\tsummary: winnerEntry\n\t\t\t? `passing ${formatEvaluationPassingRate(winnerEntry.response.passingRate)} · f1 ${winnerEntry.response.summary.averageF1.toFixed(3)} · latency ${winnerEntry.response.summary.averageLatencyMs.toFixed(1)}ms`\n\t\t\t: 'Stored benchmark comparison'\n\t};\n};\n\nexport const buildRAGComparisonTraceSummaryRows = (\n\tentry: RAGRerankerComparisonEntry | RAGRetrievalComparisonEntry\n): RAGLabelValueRow[] => {\n\tconst trace = entry.traceSummary;\n\n\tif (!trace) {\n\t\treturn [{ label: 'Trace', value: 'Unavailable' }];\n\t}\n\n\treturn [\n\t\t{ label: 'Modes', value: formatTraceModes(trace.modes) },\n\t\t{\n\t\t\tlabel: 'Balance',\n\t\t\tvalue: formatSourceBalanceStrategies(trace.sourceBalanceStrategies)\n\t\t},\n\t\t{ label: 'Avg final', value: trace.averageFinalCount.toFixed(1) },\n\t\t{ label: 'Avg vector', value: trace.averageVectorCount.toFixed(1) },\n\t\t{ label: 'Avg lexical', value: trace.averageLexicalCount.toFixed(1) },\n\t\t{\n\t\t\tlabel: 'Balanced',\n\t\t\tvalue: formatTraceRatio(trace.balancedCases, trace.totalCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Round robin',\n\t\t\tvalue: formatTraceRatio(trace.roundRobinCases, trace.totalCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Transforms',\n\t\t\tvalue: formatTraceRatio(trace.transformedCases, trace.totalCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Variants',\n\t\t\tvalue: formatTraceRatio(trace.variantCases, trace.totalCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'TopK',\n\t\t\tvalue: `${trace.averageCandidateTopK.toFixed(\n\t\t\t\t1\n\t\t\t)} / ${trace.averageLexicalTopK.toFixed(1)}`\n\t\t},\n\t\t{\n\t\t\tlabel: 'Stages',\n\t\t\tvalue: formatTraceStageSummary(trace.stageCounts)\n\t\t}\n\t];\n};\n\nexport const buildRAGComparisonTraceDiffRows = (\n\tentry: RAGRerankerComparisonEntry | RAGRetrievalComparisonEntry,\n\tleader?: RAGRerankerComparisonEntry | RAGRetrievalComparisonEntry\n): RAGLabelValueRow[] => {\n\tconst trace = entry.traceSummary;\n\n\tif (!trace) {\n\t\treturn [{ label: 'Trace', value: 'Unavailable for comparison' }];\n\t}\n\n\tconst leaderTrace = leader?.traceSummary;\n\tif (!leaderTrace) {\n\t\treturn [{ label: 'Baseline', value: 'Leader trace unavailable' }];\n\t}\n\n\tif (entry === leader) {\n\t\treturn [{ label: 'Baseline', value: 'Leader strategy' }];\n\t}\n\n\tconst stageDelta = Object.keys({\n\t\t...leaderTrace.stageCounts,\n\t\t...trace.stageCounts\n\t})\n\t\t.map((stage) => {\n\t\t\tconst typedStage = stage as RAGRetrievalTraceStep['stage'];\n\t\t\tconst delta =\n\t\t\t\t(trace.stageCounts[typedStage] ?? 0) -\n\t\t\t\t(leaderTrace.stageCounts[typedStage] ?? 0);\n\t\t\treturn delta === 0\n\t\t\t\t? null\n\t\t\t\t: `${typedStage} ${formatTraceCountDelta(delta)}`;\n\t\t})\n\t\t.filter((value): value is string => Boolean(value))\n\t\t.slice(0, 3)\n\t\t.join(' · ');\n\n\tconst rows: RAGLabelValueRow[] = [\n\t\t{ label: 'Baseline', value: leader.label }\n\t];\n\n\tif (formatTraceModes(trace.modes) !== formatTraceModes(leaderTrace.modes)) {\n\t\trows.push({\n\t\t\tlabel: 'Modes vs leader',\n\t\t\tvalue: `${formatTraceModes(trace.modes)} vs ${formatTraceModes(\n\t\t\t\tleaderTrace.modes\n\t\t\t)}`\n\t\t});\n\t}\n\n\tif (\n\t\tformatSourceBalanceStrategies(trace.sourceBalanceStrategies) !==\n\t\tformatSourceBalanceStrategies(leaderTrace.sourceBalanceStrategies)\n\t) {\n\t\trows.push({\n\t\t\tlabel: 'Balance vs leader',\n\t\t\tvalue: `${formatSourceBalanceStrategies(\n\t\t\t\ttrace.sourceBalanceStrategies\n\t\t\t)} vs ${formatSourceBalanceStrategies(\n\t\t\t\tleaderTrace.sourceBalanceStrategies\n\t\t\t)}`\n\t\t});\n\t}\n\n\trows.push(\n\t\t{\n\t\t\tlabel: 'Final delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\ttrace.averageFinalCount - leaderTrace.averageFinalCount,\n\t\t\t\t1\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Vector delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\ttrace.averageVectorCount - leaderTrace.averageVectorCount,\n\t\t\t\t1\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Lexical delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\ttrace.averageLexicalCount - leaderTrace.averageLexicalCount,\n\t\t\t\t1\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Transform delta',\n\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\ttrace.transformedCases - leaderTrace.transformedCases\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Balanced delta',\n\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\ttrace.balancedCases - leaderTrace.balancedCases\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Round robin delta',\n\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\ttrace.roundRobinCases - leaderTrace.roundRobinCases\n\t\t\t)\n\t\t}\n\t);\n\n\tif (stageDelta) {\n\t\trows.push({ label: 'Stage delta', value: stageDelta });\n\t}\n\n\treturn rows;\n};\n\nexport const buildRAGRetrievalComparisonPresentations = (\n\tcomparison: RAGRetrievalComparison\n): RAGComparisonPresentation[] => {\n\tconst leader = comparison.entries[0];\n\treturn comparison.entries.map((entry) => ({\n\t\tdiffLabel: leader?.label ?? 'Leader',\n\t\tdiffRows: buildRAGComparisonTraceDiffRows(entry, leader),\n\t\tsummary: formatRetrievalComparisonHeadline(entry),\n\t\tid: entry.retrievalId,\n\t\tlabel: entry.label,\n\t\ttraceSummaryRows: buildRAGComparisonTraceSummaryRows(entry)\n\t}));\n};\n\nexport const buildRAGRetrievalComparisonOverviewPresentation = (\n\tcomparison: RAGRetrievalComparison\n): RAGComparisonOverviewPresentation =>\n\tbuildComparisonOverviewPresentation({\n\t\tentries: comparison.entries,\n\t\tresolveEntry: (id?: string) =>\n\t\t\tcomparison.entries.find((entry) => entry.retrievalId === id),\n\t\tresolveLabel: (id?: string) =>\n\t\t\tcomparison.entries.find((entry) => entry.retrievalId === id)\n\t\t\t\t?.label ??\n\t\t\tid ??\n\t\t\t'n/a',\n\t\tsummary: comparison.summary\n\t});\n\nexport const buildRAGRerankerComparisonPresentations = (\n\tcomparison: RAGRerankerComparison\n): RAGComparisonPresentation[] => {\n\tconst leader = comparison.entries[0];\n\treturn comparison.entries.map((entry) => ({\n\t\tdiffLabel: leader?.label ?? 'Leader',\n\t\tdiffRows: buildRAGComparisonTraceDiffRows(entry, leader),\n\t\tsummary: formatRerankerComparisonHeadline(entry),\n\t\tid: entry.rerankerId,\n\t\tlabel: entry.label,\n\t\ttraceSummaryRows: buildRAGComparisonTraceSummaryRows(entry)\n\t}));\n};\n\nexport const buildRAGRerankerComparisonOverviewPresentation = (\n\tcomparison: RAGRerankerComparison\n): RAGComparisonOverviewPresentation =>\n\tbuildComparisonOverviewPresentation({\n\t\tentries: comparison.entries,\n\t\tresolveEntry: (id?: string) =>\n\t\t\tcomparison.entries.find((entry) => entry.rerankerId === id),\n\t\tresolveLabel: (id?: string) =>\n\t\t\tcomparison.entries.find((entry) => entry.rerankerId === id)\n\t\t\t\t?.label ??\n\t\t\tid ??\n\t\t\t'n/a',\n\t\tsummary: comparison.summary\n\t});\n\nexport const buildRAGGroundingProviderPresentations = (\n\tentries: Array<{\n\t\tproviderKey: string;\n\t\tlabel: string;\n\t\telapsedMs: number;\n\t\tresponse: RAGAnswerGroundingEvaluationResponse;\n\t}>\n): RAGGroundingProviderPresentation[] =>\n\tentries.map((entry) => ({\n\t\tsummary: [\n\t\t\tentry.label,\n\t\t\t`passing ${formatEvaluationPassingRate(entry.response.passingRate)}`,\n\t\t\t`citation f1 ${entry.response.summary.averageCitationF1.toFixed(3)}`,\n\t\t\t`resolved ${formatEvaluationPassingRate(\n\t\t\t\tentry.response.summary.averageResolvedCitationRate\n\t\t\t)}`,\n\t\t\t`latency ${entry.elapsedMs.toFixed(1)}ms`\n\t\t].join(' · '),\n\t\tid: entry.providerKey,\n\t\tlabel: entry.label\n\t}));\n\nexport const buildRAGGroundingProviderOverviewPresentation = (input: {\n\tentries: Array<{\n\t\tproviderKey: string;\n\t\tlabel: string;\n\t\telapsedMs: number;\n\t\tresponse: RAGAnswerGroundingEvaluationResponse;\n\t}>;\n\tsummary: {\n\t\tbestByPassingRate?: string;\n\t\tbestByAverageCitationF1?: string;\n\t\tbestByResolvedCitationRate?: string;\n\t\tfastest?: string;\n\t};\n}): RAGGroundingProviderOverviewPresentation => {\n\tconst resolveLabel = (key?: string) =>\n\t\tinput.entries.find((entry) => entry.providerKey === key)?.label ??\n\t\tkey ??\n\t\t'n/a';\n\tconst winnerLabel = resolveLabel(input.summary.bestByPassingRate);\n\tconst winnerEntry = input.entries.find(\n\t\t(entry) => entry.providerKey === input.summary.bestByPassingRate\n\t);\n\n\treturn {\n\t\trows: [\n\t\t\t{\n\t\t\t\tlabel: 'Best passing rate',\n\t\t\t\tvalue: resolveLabel(input.summary.bestByPassingRate)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Best citation F1',\n\t\t\t\tvalue: resolveLabel(input.summary.bestByAverageCitationF1)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Best resolved citations',\n\t\t\t\tvalue: resolveLabel(input.summary.bestByResolvedCitationRate)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Fastest',\n\t\t\t\tvalue: resolveLabel(input.summary.fastest)\n\t\t\t}\n\t\t],\n\t\twinnerLabel,\n\t\tsummary: winnerEntry\n\t\t\t? `passing ${formatEvaluationPassingRate(winnerEntry.response.passingRate)} · citation f1 ${winnerEntry.response.summary.averageCitationF1.toFixed(3)} · resolved ${formatEvaluationPassingRate(winnerEntry.response.summary.averageResolvedCitationRate)}`\n\t\t\t: 'Stored workflow evaluation'\n\t};\n};\n\nexport const buildRAGRetrievalOverviewPresentation = (\n\tcomparison: RAGRetrievalComparison\n): RAGQualityOverviewPresentation => ({\n\trows: buildRAGRetrievalComparisonOverviewPresentation(comparison).rows\n});\n\nexport const buildRAGRerankerOverviewPresentation = (\n\tcomparison: RAGRerankerComparison\n): RAGQualityOverviewPresentation => ({\n\trows: buildRAGRerankerComparisonOverviewPresentation(comparison).rows\n});\n\nexport const buildRAGGroundingOverviewPresentation = (input: {\n\tgroundingEvaluation: RAGAnswerGroundingEvaluationResponse;\n\tgroundingProviderOverview?: RAGGroundingProviderOverviewPresentation | null;\n}): RAGGroundingOverviewPresentation => ({\n\trows: [\n\t\t{\n\t\t\tlabel: 'Grounding',\n\t\t\tvalue: formatGroundingHistorySummaryValue(input.groundingEvaluation)\n\t\t},\n\t\t...(input.groundingProviderOverview?.rows ?? [\n\t\t\t{\n\t\t\t\tlabel: 'Grounding providers',\n\t\t\t\tvalue: 'Configure an AI provider to compare grounded answers.'\n\t\t\t}\n\t\t])\n\t]\n});\n\nexport const buildRAGQualityOverviewPresentation = (input: {\n\tretrievalComparison: RAGRetrievalComparison;\n\trerankerComparison: RAGRerankerComparison;\n\tgroundingEvaluation: RAGAnswerGroundingEvaluationResponse;\n\tgroundingProviderOverview?: RAGGroundingProviderOverviewPresentation | null;\n}): RAGQualityOverviewPresentation => ({\n\trows: [\n\t\t...buildRAGRetrievalOverviewPresentation(input.retrievalComparison)\n\t\t\t.rows,\n\t\t...buildRAGRerankerOverviewPresentation(input.rerankerComparison).rows,\n\t\t...buildRAGGroundingOverviewPresentation({\n\t\t\tgroundingEvaluation: input.groundingEvaluation,\n\t\t\tgroundingProviderOverview: input.groundingProviderOverview\n\t\t}).rows\n\t]\n});\n\nexport const buildRAGGroundingProviderCaseComparisonPresentations = (\n\tcomparisons: Array<{\n\t\tcaseId: string;\n\t\tlabel: string;\n\t\tentries: Array<{\n\t\t\tproviderKey: string;\n\t\t\tlabel: string;\n\t\t\tstatus: string;\n\t\t\tcoverage: string;\n\t\t\tcitationF1: number;\n\t\t\tresolvedCitationRate: number;\n\t\t\tmatchedIds: string[];\n\t\t\tmissingIds: string[];\n\t\t\textraIds: string[];\n\t\t\tanswerExcerpt: string;\n\t\t}>;\n\t\tsummary: {\n\t\t\tbestByStatus?: string;\n\t\t\tbestByCitationF1?: string;\n\t\t\tbestByResolvedCitationRate?: string;\n\t\t};\n\t}>\n): RAGGroundingProviderCaseComparisonPresentation[] =>\n\tcomparisons.map((comparison) => {\n\t\tconst resolveLabel = (key?: string) =>\n\t\t\tcomparison.entries.find((entry) => entry.providerKey === key)\n\t\t\t\t?.label ??\n\t\t\tkey ??\n\t\t\t'n/a';\n\n\t\treturn {\n\t\t\tcaseId: comparison.caseId,\n\t\t\tlabel: comparison.label,\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Best grounded',\n\t\t\t\t\tvalue: resolveLabel(comparison.summary.bestByStatus)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Best citation F1',\n\t\t\t\t\tvalue: resolveLabel(comparison.summary.bestByCitationF1)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Best resolved citations',\n\t\t\t\t\tvalue: resolveLabel(\n\t\t\t\t\t\tcomparison.summary.bestByResolvedCitationRate\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t...comparison.entries.map((entry) => ({\n\t\t\t\t\tlabel: entry.label,\n\t\t\t\t\tvalue: [\n\t\t\t\t\t\tentry.status.toUpperCase(),\n\t\t\t\t\t\t`coverage ${entry.coverage}`,\n\t\t\t\t\t\t`f1 ${entry.citationF1.toFixed(3)}`,\n\t\t\t\t\t\t`resolved ${formatEvaluationPassingRate(\n\t\t\t\t\t\t\tentry.resolvedCitationRate\n\t\t\t\t\t\t)}`,\n\t\t\t\t\t\t`matched ${entry.matchedIds.join(', ') || 'none'}`,\n\t\t\t\t\t\t`missing ${entry.missingIds.join(', ') || 'none'}`,\n\t\t\t\t\t\t`extra ${entry.extraIds.join(', ') || 'none'}`,\n\t\t\t\t\t\t`answer ${entry.answerExcerpt || 'n/a'}`\n\t\t\t\t\t].join(' · ')\n\t\t\t\t}))\n\t\t\t],\n\t\t\tsummary: [\n\t\t\t\t`Best grounded: ${resolveLabel(comparison.summary.bestByStatus)}`,\n\t\t\t\t`Best citation F1: ${resolveLabel(\n\t\t\t\t\tcomparison.summary.bestByCitationF1\n\t\t\t\t)}`,\n\t\t\t\t`Best resolved citations: ${resolveLabel(\n\t\t\t\t\tcomparison.summary.bestByResolvedCitationRate\n\t\t\t\t)}`\n\t\t\t].join(' · ')\n\t\t};\n\t});\n\nexport const buildRAGEvaluationHistoryRows = (\n\thistory?: RAGEvaluationHistory\n): RAGLabelValueRow[] => {\n\tif (!history?.latestRun) {\n\t\treturn [\n\t\t\t{ label: 'History', value: 'No persisted benchmark runs yet.' }\n\t\t];\n\t}\n\n\tconst rows: RAGLabelValueRow[] = [\n\t\t{ label: 'Runs recorded', value: String(history.runs.length) },\n\t\t{\n\t\t\tlabel: 'Latest',\n\t\t\tvalue: `${history.latestRun.label} · ${formatEvaluationSummary(\n\t\t\t\thistory.latestRun.response\n\t\t\t)}`\n\t\t}\n\t];\n\n\tif (history.latestRun.traceSummary) {\n\t\trows.push({\n\t\t\tlabel: 'Latest trace',\n\t\t\tvalue: `${formatTraceModes(\n\t\t\t\thistory.latestRun.traceSummary.modes\n\t\t\t)} · balance ${formatSourceBalanceStrategies(\n\t\t\t\thistory.latestRun.traceSummary.sourceBalanceStrategies\n\t\t\t)} · final ${history.latestRun.traceSummary.averageFinalCount.toFixed(\n\t\t\t\t1\n\t\t\t)} · vector ${history.latestRun.traceSummary.averageVectorCount.toFixed(\n\t\t\t\t1\n\t\t\t)} · lexical ${history.latestRun.traceSummary.averageLexicalCount.toFixed(\n\t\t\t\t1\n\t\t\t)}`\n\t\t});\n\t}\n\n\tif (history.previousRun) {\n\t\trows.push({\n\t\t\tlabel: 'Previous',\n\t\t\tvalue: `${history.previousRun.label} · ${formatEvaluationSummary(\n\t\t\t\thistory.previousRun.response\n\t\t\t)}`\n\t\t});\n\t}\n\n\tif (!history.diff) {\n\t\trows.push({\n\t\t\tlabel: 'History diff',\n\t\t\tvalue: 'Run the benchmark again to diff regressions over time.'\n\t\t});\n\t\treturn rows;\n\t}\n\n\trows.push(\n\t\t{\n\t\t\tlabel: 'Passing delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\thistory.diff.summaryDelta.passingRate,\n\t\t\t\t1,\n\t\t\t\t'%'\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Average F1 delta',\n\t\t\tvalue: formatSignedDelta(history.diff.summaryDelta.averageF1, 3)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Latency delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\thistory.diff.summaryDelta.averageLatencyMs,\n\t\t\t\t1,\n\t\t\t\t'ms'\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Improved',\n\t\t\tvalue: formatHistoryCaseLabels(history.diff.improvedCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Regressed',\n\t\t\tvalue: formatHistoryCaseLabels(history.diff.regressedCases)\n\t\t}\n\t);\n\n\tif (history.diff.traceSummaryDelta) {\n\t\trows.push(\n\t\t\t{\n\t\t\t\tlabel: 'Trace mode shift',\n\t\t\t\tvalue: history.diff.traceSummaryDelta.modesChanged\n\t\t\t\t\t? 'changed'\n\t\t\t\t\t: 'stable'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace balance shift',\n\t\t\t\tvalue: history.diff.traceSummaryDelta\n\t\t\t\t\t.sourceBalanceStrategiesChanged\n\t\t\t\t\t? 'changed'\n\t\t\t\t\t: 'stable'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace final delta',\n\t\t\t\tvalue: formatSignedDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.averageFinalCount,\n\t\t\t\t\t1\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace vector delta',\n\t\t\t\tvalue: formatSignedDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.averageVectorCount,\n\t\t\t\t\t1\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace lexical delta',\n\t\t\t\tvalue: formatSignedDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.averageLexicalCount,\n\t\t\t\t\t1\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace balanced delta',\n\t\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.balancedCases\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace round robin delta',\n\t\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.roundRobinCases\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace transform delta',\n\t\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.transformedCases\n\t\t\t\t)\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Trace variant delta',\n\t\t\t\tvalue: formatTraceCountDelta(\n\t\t\t\t\thistory.diff.traceSummaryDelta.variantCases\n\t\t\t\t)\n\t\t\t}\n\t\t);\n\n\t\tconst stageDelta = Object.entries(\n\t\t\thistory.diff.traceSummaryDelta.stageCounts ?? {}\n\t\t)\n\t\t\t.map(([stage, count]) => `${stage} ${formatTraceCountDelta(count)}`)\n\t\t\t.join(', ');\n\n\t\tif (stageDelta) {\n\t\t\trows.push({ label: 'Trace stage delta', value: stageDelta });\n\t\t}\n\t}\n\n\tif (history.caseTraceSnapshots.length > 0) {\n\t\tconst changedCases = history.caseTraceSnapshots.filter(\n\t\t\t(entry) => entry.traceChange === 'changed'\n\t\t);\n\t\trows.push({\n\t\t\tlabel: 'Trace drift cases',\n\t\t\tvalue:\n\t\t\t\tchangedCases.length > 0\n\t\t\t\t\t? changedCases\n\t\t\t\t\t\t\t.map((entry) => entry.label ?? entry.caseId)\n\t\t\t\t\t\t\t.slice(0, 4)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t: 'none'\n\t\t});\n\t}\n\n\treturn rows;\n};\n\nexport const buildRAGEvaluationCaseTracePresentations = (\n\thistory?: RAGEvaluationHistory\n): RAGEvaluationCaseTracePresentation[] => {\n\tif (!history?.caseTraceSnapshots.length) {\n\t\treturn [];\n\t}\n\n\treturn history.caseTraceSnapshots.map((entry) => {\n\t\tconst label = entry.label ?? entry.caseId;\n\t\tconst currentMode = entry.traceMode ?? 'no-trace';\n\t\tconst previousMode = entry.previousTraceMode ?? 'n/a';\n\t\tconst currentBalance = entry.sourceBalanceStrategy ?? 'cap';\n\t\tconst previousBalance = entry.previousSourceBalanceStrategy ?? 'n/a';\n\t\tconst currentVariants =\n\t\t\tentry.variantQueries.length > 0\n\t\t\t\t? entry.variantQueries.join(', ')\n\t\t\t\t: 'none';\n\t\tconst previousVariants =\n\t\t\tentry.previousVariantQueries.length > 0\n\t\t\t\t? entry.previousVariantQueries.join(', ')\n\t\t\t\t: 'none';\n\t\tconst currentStages =\n\t\t\tObject.keys(entry.stageCounts).length > 0\n\t\t\t\t? Object.entries(entry.stageCounts)\n\t\t\t\t\t\t.map(([stage, count]) => `${stage} ${count}`)\n\t\t\t\t\t\t.join(', ')\n\t\t\t\t: 'none';\n\t\tconst previousStages =\n\t\t\tObject.keys(entry.previousStageCounts).length > 0\n\t\t\t\t? Object.entries(entry.previousStageCounts)\n\t\t\t\t\t\t.map(([stage, count]) => `${stage} ${count}`)\n\t\t\t\t\t\t.join(', ')\n\t\t\t\t: 'none';\n\n\t\treturn {\n\t\t\tcaseId: entry.caseId,\n\t\t\tlabel,\n\t\t\tsummary: `${entry.traceChange} · ${previousMode}→${currentMode} · ${previousBalance}→${currentBalance} · final ${\n\t\t\t\tentry.previousFinalCount ?? 0\n\t\t\t}→${entry.finalCount}`,\n\t\t\ttraceChange: entry.traceChange,\n\t\t\trows: [\n\t\t\t\t{ label: 'Query', value: entry.query },\n\t\t\t\t{ label: 'Trace change', value: entry.traceChange },\n\t\t\t\t{ label: 'Mode', value: `${previousMode}→${currentMode}` },\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Balance',\n\t\t\t\t\tvalue: `${previousBalance}→${currentBalance}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Transformed query',\n\t\t\t\t\tvalue: `${\n\t\t\t\t\t\tentry.previousTransformedQuery?.trim() || 'n/a'\n\t\t\t\t\t}→${entry.transformedQuery?.trim() || 'n/a'}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Final',\n\t\t\t\t\tvalue: `${entry.previousFinalCount ?? 0}→${entry.finalCount}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Vector',\n\t\t\t\t\tvalue: `${entry.previousVectorCount ?? 0}→${entry.vectorCount}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Lexical',\n\t\t\t\t\tvalue: `${entry.previousLexicalCount ?? 0}→${entry.lexicalCount}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Candidate topK',\n\t\t\t\t\tvalue: `${entry.previousCandidateTopK ?? 0}→${entry.candidateTopK}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Lexical topK',\n\t\t\t\t\tvalue: `${entry.previousLexicalTopK ?? 0}→${entry.lexicalTopK}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Variants',\n\t\t\t\t\tvalue: `${previousVariants}→${currentVariants}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Stages',\n\t\t\t\t\tvalue: `${previousStages}→${currentStages}`\n\t\t\t\t},\n\t\t\t\t{ label: 'Status', value: entry.status }\n\t\t\t]\n\t\t};\n\t});\n};\n\nexport const buildRAGEvaluationHistoryPresentation = (\n\thistory?: RAGEvaluationHistory\n): RAGEvaluationHistoryPresentation => ({\n\tcaseTraces: buildRAGEvaluationCaseTracePresentations(history),\n\trows: buildRAGEvaluationHistoryRows(history),\n\tsummary: history?.latestRun\n\t\t? history.latestRun.label\n\t\t: 'No persisted benchmark runs yet.'\n});\n\nexport const buildRAGAnswerGroundingCaseSnapshotPresentations = (\n\thistory?: RAGAnswerGroundingEvaluationHistory\n): RAGAnswerGroundingCaseSnapshotPresentation[] => {\n\tif (!history?.caseSnapshots.length) {\n\t\treturn [];\n\t}\n\n\treturn history.caseSnapshots.map((entry) => {\n\t\tconst label = entry.label ?? entry.caseId;\n\t\treturn {\n\t\t\tanswerChange: entry.answerChange,\n\t\t\tcaseId: entry.caseId,\n\t\t\tlabel,\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Query',\n\t\t\t\t\tvalue: entry.query?.trim().length ? entry.query : 'n/a'\n\t\t\t\t},\n\t\t\t\t{ label: 'Answer change', value: entry.answerChange },\n\t\t\t\t{ label: 'Coverage', value: entry.coverage },\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Resolved citations',\n\t\t\t\t\tvalue: `${entry.resolvedCitationCount}/${entry.citationCount}`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Resolved citation rate',\n\t\t\t\t\tvalue: entry.resolvedCitationRate.toFixed(3)\n\t\t\t\t},\n\t\t\t\t{ label: 'Citation F1', value: entry.citationF1.toFixed(3) },\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Reference count',\n\t\t\t\t\tvalue: String(entry.referenceCount)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Cited IDs',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.citedIds.length > 0\n\t\t\t\t\t\t\t? entry.citedIds.join(', ')\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Matched IDs',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.matchedIds.length > 0\n\t\t\t\t\t\t\t? entry.matchedIds.join(', ')\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Missing IDs',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.missingIds.length > 0\n\t\t\t\t\t\t\t? entry.missingIds.join(', ')\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Extra IDs',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.extraIds.length > 0\n\t\t\t\t\t\t\t? entry.extraIds.join(', ')\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Unresolved refs',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.ungroundedReferenceNumbers.length > 0\n\t\t\t\t\t\t\t? entry.ungroundedReferenceNumbers.join(', ')\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Answer',\n\t\t\t\t\tvalue: entry.answer.trim().length > 0 ? entry.answer : 'n/a'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Previous answer',\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tentry.previousAnswer &&\n\t\t\t\t\t\tentry.previousAnswer.trim().length > 0\n\t\t\t\t\t\t\t? entry.previousAnswer\n\t\t\t\t\t\t\t: 'n/a'\n\t\t\t\t}\n\t\t\t],\n\t\t\tsummary: `${entry.answerChange} · ${entry.coverage} · resolved ${entry.resolvedCitationCount}/${entry.citationCount} · refs ${entry.referenceCount}`\n\t\t};\n\t});\n};\n\nexport const buildRAGAnswerGroundingHistoryRows = (\n\thistory?: RAGAnswerGroundingEvaluationHistory\n): RAGLabelValueRow[] => {\n\tif (!history?.latestRun) {\n\t\treturn [{ label: 'History', value: 'No persisted provider runs yet.' }];\n\t}\n\n\tconst rows: RAGLabelValueRow[] = [\n\t\t{ label: 'Runs recorded', value: String(history.runs.length) },\n\t\t{\n\t\t\tlabel: 'Latest',\n\t\t\tvalue: `${history.latestRun.label} · ${formatGroundingHistorySummaryValue(\n\t\t\t\thistory.latestRun.response\n\t\t\t)}`\n\t\t}\n\t];\n\n\tif (history.previousRun) {\n\t\trows.push({\n\t\t\tlabel: 'Previous',\n\t\t\tvalue: `${history.previousRun.label} · ${formatGroundingHistorySummaryValue(\n\t\t\t\thistory.previousRun.response\n\t\t\t)}`\n\t\t});\n\t}\n\n\tif (history.leaderboard[0]) {\n\t\trows.push({\n\t\t\tlabel: 'Best recorded',\n\t\t\tvalue: `#${history.leaderboard[0].rank} · ${history.leaderboard[0].label} · passing ${formatEvaluationPassingRate(\n\t\t\t\thistory.leaderboard[0].passingRate\n\t\t\t)} · citation f1 ${history.leaderboard[0].averageCitationF1.toFixed(\n\t\t\t\t3\n\t\t\t)} · resolved ${formatEvaluationPassingRate(\n\t\t\t\thistory.leaderboard[0].averageResolvedCitationRate\n\t\t\t)}`\n\t\t});\n\t}\n\n\tif (history.caseSnapshots.length > 0) {\n\t\tconst changedAnswers = history.caseSnapshots.filter(\n\t\t\t(entry) => entry.answerChange === 'changed'\n\t\t).length;\n\t\trows.push({\n\t\t\tlabel: 'Answer drift',\n\t\t\tvalue: `${changedAnswers}/${history.caseSnapshots.length} changed`\n\t\t});\n\t}\n\n\tif (!history.diff) {\n\t\trows.push({\n\t\t\tlabel: 'History diff',\n\t\t\tvalue: 'Run the provider comparison again to diff grounding regressions over time.'\n\t\t});\n\t\treturn rows;\n\t}\n\n\trows.push(\n\t\t{\n\t\t\tlabel: 'Passing delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\thistory.diff.summaryDelta.passingRate,\n\t\t\t\t1,\n\t\t\t\t'%'\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Citation F1 delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\thistory.diff.summaryDelta.averageCitationF1,\n\t\t\t\t3\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Resolved citation delta',\n\t\t\tvalue: formatSignedDelta(\n\t\t\t\thistory.diff.summaryDelta.averageResolvedCitationRate * 100,\n\t\t\t\t1,\n\t\t\t\t'%'\n\t\t\t)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Improved',\n\t\t\tvalue: formatGroundingHistoryCaseLabels(history.diff.improvedCases)\n\t\t},\n\t\t{\n\t\t\tlabel: 'Regressed',\n\t\t\tvalue: formatGroundingHistoryCaseLabels(history.diff.regressedCases)\n\t\t}\n\t);\n\n\treturn rows;\n};\n\nexport const buildRAGAnswerGroundingHistoryPresentation = (\n\thistory?: RAGAnswerGroundingEvaluationHistory\n): RAGAnswerGroundingHistoryPresentation => ({\n\tcaseSnapshots: buildRAGAnswerGroundingCaseSnapshotPresentations(history),\n\trows: buildRAGAnswerGroundingHistoryRows(history),\n\tsummary: history?.latestRun\n\t\t? history.latestRun.label\n\t\t: 'No persisted provider runs yet.'\n});\n",
|
|
16
16
|
"import { Injectable } from '@angular/core';\nimport type {\n\tRAGEvaluationInput,\n\tRAGRetrievalBaselineResponse,\n\tRAGRetrievalLaneHandoffDecisionRequest,\n\tRAGRetrievalBaselinePromotionFromRunRequest,\n\tRAGRetrievalBaselinePromotionRequest,\n\tRAGRetrievalBaselineRevertRequest,\n\tRAGRetrievalReleaseDecisionActionRequest,\n\tRAGRetrievalComparisonRequest,\n\tRAGDocumentChunk,\n\tRAGDocumentIngestInput,\n\tRAGDocumentUploadIngestInput,\n\tRAGDocumentUrlIngestInput,\n\tRAGRetrievalIncidentRemediationDecisionRequest,\n\tRAGRetrievalIncidentRemediationBulkExecutionRequest,\n\tRAGRetrievalIncidentRemediationExecutionRequest,\n\tRAGSearchRequest,\n\tRAGSyncRunOptions\n} from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\n@Injectable({ providedIn: 'root' })\nexport class RAGClientService {\n\tprivate clients = new Map<string, ReturnType<typeof createRAGClient>>();\n\n\tprivate client(path: string) {\n\t\tconst existing = this.clients.get(path);\n\t\tif (existing) {\n\t\t\treturn existing;\n\t\t}\n\n\t\tconst created = createRAGClient({ path });\n\t\tthis.clients.set(path, created);\n\n\t\treturn created;\n\t}\n\n\tingest(path: string, chunks: RAGDocumentChunk[]) {\n\t\treturn this.client(path).ingest(chunks);\n\t}\n\n\tingestDocuments(path: string, input: RAGDocumentIngestInput) {\n\t\treturn this.client(path).ingestDocuments(input);\n\t}\n\n\tingestUrls(path: string, input: RAGDocumentUrlIngestInput) {\n\t\treturn this.client(path).ingestUrls(input);\n\t}\n\n\tingestUploads(path: string, input: RAGDocumentUploadIngestInput) {\n\t\treturn this.client(path).ingestUploads(input);\n\t}\n\n\tsearch(path: string, input: RAGSearchRequest) {\n\t\treturn this.client(path).search(input);\n\t}\n\n\tsearchWithTrace(path: string, input: RAGSearchRequest) {\n\t\treturn this.client(path).searchWithTrace(input);\n\t}\n\n\tevaluate(path: string, input: RAGEvaluationInput) {\n\t\treturn this.client(path).evaluate(input);\n\t}\n\n\tcompareRetrievals(path: string, input: RAGRetrievalComparisonRequest) {\n\t\treturn this.client(path).compareRetrievals(input);\n\t}\n\n\tretrievalComparisonHistory(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tlimit?: number;\n\t\t\tsuiteId?: string;\n\t\t\tlabel?: string;\n\t\t\twinnerId?: string;\n\t\t\tgroupKey?: string;\n\t\t\ttag?: string;\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalComparisonHistory(input);\n\t}\n\n\tretrievalBaselines(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\ttag?: string;\n\t\t\tlimit?: number;\n\t\t\tstatus?: 'active' | 'superseded';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalBaselines(input);\n\t}\n\n\tpromoteRetrievalBaseline(\n\t\tpath: string,\n\t\tinput: RAGRetrievalBaselinePromotionRequest\n\t) {\n\t\treturn this.client(path).promoteRetrievalBaseline(input);\n\t}\n\n\tpromoteRetrievalBaselineDetailed(\n\t\tpath: string,\n\t\tinput: RAGRetrievalBaselinePromotionRequest\n\t): Promise<RAGRetrievalBaselineResponse> {\n\t\treturn this.client(path).promoteRetrievalBaselineDetailed(input);\n\t}\n\n\tpromoteRetrievalBaselineToLane(\n\t\tpath: string,\n\t\tinput: RAGRetrievalBaselinePromotionRequest & {\n\t\t\trolloutLabel: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t) {\n\t\treturn this.client(path).promoteRetrievalBaselineToLane(input);\n\t}\n\n\tpromoteRetrievalBaselineToLaneDetailed(\n\t\tpath: string,\n\t\tinput: RAGRetrievalBaselinePromotionRequest & {\n\t\t\trolloutLabel: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t): Promise<RAGRetrievalBaselineResponse> {\n\t\treturn this.client(path).promoteRetrievalBaselineToLaneDetailed(input);\n\t}\n\n\tpromoteRetrievalBaselineFromRun(\n\t\tpath: string,\n\t\tinput: RAGRetrievalBaselinePromotionFromRunRequest\n\t) {\n\t\treturn this.client(path).promoteRetrievalBaselineFromRun(input);\n\t}\n\n\tpromoteRetrievalBaselineFromRunDetailed(\n\t\tpath: string,\n\t\tinput: RAGRetrievalBaselinePromotionFromRunRequest\n\t): Promise<RAGRetrievalBaselineResponse> {\n\t\treturn this.client(path).promoteRetrievalBaselineFromRunDetailed(input);\n\t}\n\n\trevertRetrievalBaseline(\n\t\tpath: string,\n\t\tinput: RAGRetrievalBaselineRevertRequest\n\t) {\n\t\treturn this.client(path).revertRetrievalBaseline(input);\n\t}\n\n\tretrievalBaselineDecisions(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\tkind?: 'approve' | 'promote' | 'reject' | 'revert';\n\t\t\tfreshnessStatus?: 'fresh' | 'expired' | 'not_applicable';\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalBaselineDecisions(input);\n\t}\n\n\tretrievalReleaseGroupHistory(\n\t\tpath: string,\n\t\tinput: {\n\t\t\tgroupKey: string;\n\t\t\tdecisionLimit?: number;\n\t\t\tbaselineLimit?: number;\n\t\t\trunLimit?: number;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalReleaseGroupHistory(input);\n\t}\n\n\tretrievalLaneHandoffs(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tsourceRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\tlimit?: number;\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalLaneHandoffs(input);\n\t}\n\n\tretrievalLaneHandoffDecisions(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tsourceRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\tkind?: 'approve' | 'reject' | 'complete';\n\t\t\tlimit?: number;\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalLaneHandoffDecisions(input);\n\t}\n\n\tretrievalLaneHandoffIncidents(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\tstatus?: 'open' | 'resolved';\n\t\t\tseverity?: 'warning' | 'critical';\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalLaneHandoffIncidents(input);\n\t}\n\n\tretrievalLaneHandoffIncidentHistory(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\taction?: 'opened' | 'acknowledged' | 'unacknowledged' | 'resolved';\n\t\t\tgroupKey?: string;\n\t\t\tincidentId?: string;\n\t\t\tlimit?: number;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalLaneHandoffIncidentHistory(input);\n\t}\n\n\tretrievalLaneHandoffAutoCompletePolicyHistory(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalLaneHandoffAutoCompletePolicyHistory(\n\t\t\tinput\n\t\t);\n\t}\n\n\tretrievalReleaseLanePolicyHistory(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\trolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\tscope?: 'rollout_label' | 'group_rollout_label';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalReleaseLanePolicyHistory(input);\n\t}\n\n\tretrievalBaselineGatePolicyHistory(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\trolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\tscope?: 'rollout_label' | 'group_rollout_label';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalBaselineGatePolicyHistory(input);\n\t}\n\n\tretrievalReleaseLaneEscalationPolicyHistory(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalReleaseLaneEscalationPolicyHistory(\n\t\t\tinput\n\t\t);\n\t}\n\n\tretrievalReleaseIncidentPolicyHistory(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalReleaseIncidentPolicyHistory(input);\n\t}\n\n\tdecideRetrievalLaneHandoff(\n\t\tpath: string,\n\t\tinput: RAGRetrievalLaneHandoffDecisionRequest\n\t) {\n\t\treturn this.client(path).decideRetrievalLaneHandoff(input);\n\t}\n\n\tdecideRetrievalLaneHandoffDetailed(\n\t\tpath: string,\n\t\tinput: RAGRetrievalLaneHandoffDecisionRequest\n\t) {\n\t\treturn this.client(path).decideRetrievalLaneHandoffDetailed(input);\n\t}\n\n\tretrievalReleaseIncidents(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\tstatus?: 'open' | 'resolved';\n\t\t\tseverity?: 'warning' | 'critical';\n\t\t\tkind?:\n\t\t\t\t| 'approval_expired'\n\t\t\t\t| 'baseline_regression'\n\t\t\t\t| 'gate_failure'\n\t\t\t\t| 'handoff_stale';\n\t\t\tacknowledged?: boolean;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalReleaseIncidents(input);\n\t}\n\n\tretrievalIncidentRemediationDecisions(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tincidentId?: string;\n\t\t\tlimit?: number;\n\t\t\tremediationKind?:\n\t\t\t\t| 'renew_approval'\n\t\t\t\t| 'record_approval'\n\t\t\t\t| 'inspect_gate'\n\t\t\t\t| 'rerun_comparison'\n\t\t\t\t| 'restore_source_lane'\n\t\t\t\t| 'review_readiness'\n\t\t\t\t| 'monitor_lane';\n\t\t\tstatus?: 'planned' | 'applied' | 'dismissed';\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalIncidentRemediationDecisions(input);\n\t}\n\n\tretrievalIncidentRemediationExecutions(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tincidentId?: string;\n\t\t\tlimit?: number;\n\t\t\tactionKind?: RAGRetrievalIncidentRemediationExecutionRequest['action']['kind'];\n\t\t\tcode?:\n\t\t\t\t| 'approval_recorded'\n\t\t\t\t| 'incident_acknowledged'\n\t\t\t\t| 'incident_resolved'\n\t\t\t\t| 'release_status_loaded'\n\t\t\t\t| 'release_drift_loaded'\n\t\t\t\t| 'handoff_status_loaded'\n\t\t\t\t| 'guardrail_blocked'\n\t\t\t\t| 'idempotent_replay';\n\t\t\tblockedByGuardrail?: boolean;\n\t\t\tidempotentReplay?: boolean;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalIncidentRemediationExecutions(input);\n\t}\n\n\trecordRetrievalIncidentRemediationDecision(\n\t\tpath: string,\n\t\tinput: RAGRetrievalIncidentRemediationDecisionRequest\n\t) {\n\t\treturn this.client(path).recordRetrievalIncidentRemediationDecision(\n\t\t\tinput\n\t\t);\n\t}\n\n\texecuteRetrievalIncidentRemediation(\n\t\tpath: string,\n\t\tinput: RAGRetrievalIncidentRemediationExecutionRequest\n\t) {\n\t\treturn this.client(path).executeRetrievalIncidentRemediation(input);\n\t}\n\n\tbulkExecuteRetrievalIncidentRemediations(\n\t\tpath: string,\n\t\tinput: RAGRetrievalIncidentRemediationBulkExecutionRequest\n\t) {\n\t\treturn this.client(path).bulkExecuteRetrievalIncidentRemediations(\n\t\t\tinput\n\t\t);\n\t}\n\n\tretrievalReleaseStatus(path: string) {\n\t\treturn this.client(path).retrievalReleaseStatus();\n\t}\n\n\tretrievalReleaseIncidentStatus(path: string) {\n\t\treturn this.client(path).retrievalReleaseIncidentStatus();\n\t}\n\n\tretrievalIncidentRemediationStatus(path: string) {\n\t\treturn this.client(path).retrievalIncidentRemediationStatus();\n\t}\n\n\tretrievalReleaseDriftStatus(path: string) {\n\t\treturn this.client(path).retrievalReleaseDriftStatus();\n\t}\n\n\tretrievalLaneHandoffStatus(path: string) {\n\t\treturn this.client(path).retrievalLaneHandoffStatus();\n\t}\n\n\tretrievalLaneHandoffIncidentStatus(path: string) {\n\t\treturn this.client(path).retrievalLaneHandoffIncidentStatus();\n\t}\n\n\tacknowledgeRetrievalLaneHandoffIncident(\n\t\tpath: string,\n\t\tinput: {\n\t\t\tincidentId: string;\n\t\t\tacknowledgedAt?: number;\n\t\t\tacknowledgedBy?: string;\n\t\t\tacknowledgementNotes?: string;\n\t\t}\n\t) {\n\t\treturn this.client(path).acknowledgeRetrievalLaneHandoffIncident(input);\n\t}\n\n\tunacknowledgeRetrievalLaneHandoffIncident(\n\t\tpath: string,\n\t\tinput: {\n\t\t\tincidentId: string;\n\t\t}\n\t) {\n\t\treturn this.client(path).unacknowledgeRetrievalLaneHandoffIncident(\n\t\t\tinput\n\t\t);\n\t}\n\n\tresolveRetrievalLaneHandoffIncident(\n\t\tpath: string,\n\t\tinput: {\n\t\t\tincidentId: string;\n\t\t\tresolvedAt?: number;\n\t\t\tresolvedBy?: string;\n\t\t\tresolutionNotes?: string;\n\t\t}\n\t) {\n\t\treturn this.client(path).resolveRetrievalLaneHandoffIncident(input);\n\t}\n\n\tacknowledgeRetrievalReleaseIncident(\n\t\tpath: string,\n\t\tinput: {\n\t\t\tincidentId: string;\n\t\t\tacknowledgedAt?: number;\n\t\t\tacknowledgedBy?: string;\n\t\t\tacknowledgementNotes?: string;\n\t\t}\n\t) {\n\t\treturn this.client(path).acknowledgeRetrievalReleaseIncident(input);\n\t}\n\n\tunacknowledgeRetrievalReleaseIncident(\n\t\tpath: string,\n\t\tinput: {\n\t\t\tincidentId: string;\n\t\t}\n\t) {\n\t\treturn this.client(path).unacknowledgeRetrievalReleaseIncident(input);\n\t}\n\n\tresolveRetrievalReleaseIncident(\n\t\tpath: string,\n\t\tinput: {\n\t\t\tincidentId: string;\n\t\t\tresolvedAt?: number;\n\t\t\tresolvedBy?: string;\n\t\t\tresolutionNotes?: string;\n\t\t}\n\t) {\n\t\treturn this.client(path).resolveRetrievalReleaseIncident(input);\n\t}\n\n\tretrievalPromotionCandidates(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\ttag?: string;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\tapproved?: boolean;\n\t\t\tready?: boolean;\n\t\t\tblocked?: boolean;\n\t\t\treviewStatus?: 'approved' | 'blocked' | 'needs_review' | 'ready';\n\t\t\tfreshnessStatus?: 'fresh' | 'expired' | 'not_applicable';\n\t\t\tsortBy?:\n\t\t\t\t| 'approvalFreshness'\n\t\t\t\t| 'finishedAt'\n\t\t\t\t| 'gateSeverity'\n\t\t\t\t| 'priority';\n\t\t\tsortDirection?: 'asc' | 'desc';\n\t\t}\n\t) {\n\t\treturn this.client(path).retrievalPromotionCandidates(input);\n\t}\n\n\tapproveRetrievalCandidate(\n\t\tpath: string,\n\t\tinput: RAGRetrievalReleaseDecisionActionRequest\n\t) {\n\t\treturn this.client(path).approveRetrievalCandidate(input);\n\t}\n\n\trejectRetrievalCandidate(\n\t\tpath: string,\n\t\tinput: RAGRetrievalReleaseDecisionActionRequest\n\t) {\n\t\treturn this.client(path).rejectRetrievalCandidate(input);\n\t}\n\n\tstatus(path: string) {\n\t\treturn this.client(path).status();\n\t}\n\n\tops(path: string) {\n\t\treturn this.client(path).ops();\n\t}\n\n\tsearchTraceHistory(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tquery?: string;\n\t\t\tgroupKey?: string;\n\t\t\ttag?: string;\n\t\t\tlimit?: number;\n\t\t}\n\t) {\n\t\treturn this.client(path).searchTraceHistory(input);\n\t}\n\n\tsearchTraceGroups(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\ttag?: string;\n\t\t\tlimit?: number;\n\t\t}\n\t) {\n\t\treturn this.client(path).searchTraceGroups(input);\n\t}\n\n\tsearchTraceStats(path: string, input?: { tag?: string }) {\n\t\treturn this.client(path).searchTraceStats(input);\n\t}\n\n\tpreviewSearchTracePrune(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tmaxAgeMs?: number;\n\t\t\tmaxRecordsPerQuery?: number;\n\t\t\tmaxRecordsPerGroup?: number;\n\t\t\tnow?: number;\n\t\t\ttag?: string;\n\t\t}\n\t) {\n\t\treturn this.client(path).previewSearchTracePrune(input);\n\t}\n\n\tpruneSearchTraces(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tmaxAgeMs?: number;\n\t\t\tmaxRecordsPerQuery?: number;\n\t\t\tmaxRecordsPerGroup?: number;\n\t\t\tnow?: number;\n\t\t\ttag?: string;\n\t\t}\n\t) {\n\t\treturn this.client(path).pruneSearchTraces(input);\n\t}\n\n\tsearchTracePruneHistory(\n\t\tpath: string,\n\t\tinput?: {\n\t\t\tlimit?: number;\n\t\t\ttrigger?: 'manual' | 'write' | 'schedule';\n\t\t}\n\t) {\n\t\treturn this.client(path).searchTracePruneHistory(input);\n\t}\n\n\tsyncSources(path: string) {\n\t\treturn this.client(path).syncSources();\n\t}\n\n\tsyncAllSources(path: string, options?: RAGSyncRunOptions) {\n\t\treturn this.client(path).syncAllSources(options);\n\t}\n\n\tsyncSource(path: string, id: string, options?: RAGSyncRunOptions) {\n\t\treturn this.client(path).syncSource(id, options);\n\t}\n\n\tdocuments(path: string, kind?: string) {\n\t\treturn this.client(path).documents(kind);\n\t}\n\n\tdocumentChunks(path: string, id: string) {\n\t\treturn this.client(path).documentChunks(id);\n\t}\n\n\tcreateDocument(\n\t\tpath: string,\n\t\tinput: RAGDocumentIngestInput['documents'][number]\n\t) {\n\t\treturn this.client(path).createDocument(input);\n\t}\n\n\tdeleteDocument(path: string, id: string) {\n\t\treturn this.client(path).deleteDocument(id);\n\t}\n\n\treseed(path: string) {\n\t\treturn this.client(path).reseed();\n\t}\n\n\treset(path: string) {\n\t\treturn this.client(path).reset();\n\t}\n\n\treindexDocument(path: string, id: string) {\n\t\treturn this.client(path).reindexDocument(id);\n\t}\n\n\treindexSource(path: string, source: string) {\n\t\treturn this.client(path).reindexSource(source);\n\t}\n\n\tbackends(path: string) {\n\t\treturn this.client(path).backends();\n\t}\n\n\tclearIndex(path: string) {\n\t\treturn this.client(path).clearIndex();\n\t}\n}\n",
|
|
17
17
|
"import type {\n\tRAGBackendsResponse,\n\tRAGDocumentChunksResponse,\n\tRAGEvaluationInput,\n\tRAGEvaluationResponse,\n\tRAGRetrievalBaselineListResponse,\n\tRAGRetrievalBaselinePromotionFromRunRequest,\n\tRAGRetrievalBaselinePromotionRequest,\n\tRAGRetrievalBaselineRevertRequest,\n\tRAGRetrievalReleaseIncidentAcknowledgeRequest,\n\tRAGRetrievalReleaseDecisionActionRequest,\n\tRAGRetrievalBaselineResponse,\n\tRAGRetrievalPromotionCandidateListResponse,\n\tRAGRetrievalReleaseDecisionListResponse,\n\tRAGRetrievalLaneHandoffDecisionListResponse,\n\tRAGRetrievalLaneHandoffDecisionRequest,\n\tRAGRetrievalLaneHandoffDecisionResponse,\n\tRAGRetrievalLaneHandoffAutoCompletePolicyHistoryResponse,\n\tRAGRetrievalReleaseLanePolicyHistoryResponse,\n\tRAGRetrievalBaselineGatePolicyHistoryResponse,\n\tRAGRetrievalReleaseLaneEscalationPolicyHistoryResponse,\n\tRAGRetrievalLaneHandoffIncidentHistoryResponse,\n\tRAGRetrievalLaneHandoffIncidentListResponse,\n\tRAGRetrievalLaneHandoffIncidentStatusResponse,\n\tRAGRetrievalLaneHandoffListResponse,\n\tRAGRetrievalLaneHandoffStatusResponse,\n\tRAGRetrievalIncidentRemediationDecisionListResponse,\n\tRAGRetrievalIncidentRemediationDecisionRequest,\n\tRAGRetrievalIncidentRemediationExecutionHistoryResponse,\n\tRAGRetrievalIncidentRemediationBulkExecutionRequest,\n\tRAGRetrievalIncidentRemediationBulkExecutionResponse,\n\tRAGRetrievalIncidentRemediationExecutionRequest,\n\tRAGRetrievalIncidentRemediationExecutionResponse,\n\tRAGRetrievalIncidentRemediationStatusResponse,\n\tRAGRetrievalReleaseGroupHistoryResponse,\n\tRAGRetrievalReleaseIncidentListResponse,\n\tRAGRetrievalReleaseIncidentStatusResponse,\n\tRAGRetrievalReleaseDriftStatusResponse,\n\tRAGRetrievalReleaseStatusResponse,\n\tRAGRetrievalComparisonHistoryResponse,\n\tRAGRetrievalComparisonRequest,\n\tRAGRetrievalComparisonResponse,\n\tRAGDocumentIngestInput,\n\tRAGDocumentChunk,\n\tRAGDocumentsResponse,\n\tRAGDocumentUrlIngestInput,\n\tRAGDocumentUploadIngestInput,\n\tRAGIngestResponse,\n\tRAGMutationResponse,\n\tRAGOperationsResponse,\n\tRAGSearchRequest,\n\tRAGSearchResponse,\n\tRAGSearchTracePrunePreviewResponse,\n\tRAGSearchTracePruneHistoryResponse,\n\tRAGSearchTracePruneResponse,\n\tRAGSearchTraceGroupHistoryResponse,\n\tRAGSearchTraceHistoryResponse,\n\tRAGSearchTraceStatsResponse,\n\tRAGSource,\n\tRAGStatusResponse,\n\tRAGSyncRunOptions,\n\tRAGSyncResponse\n} from '../../../types/ai';\nimport { UNFOUND_INDEX } from '../../constants';\n\ntype FetchLike = typeof fetch;\n\nexport type RAGClientOptions = {\n\tpath: string;\n\tfetch?: FetchLike;\n};\n\nexport type RAGDetailedSearchResponse = {\n\tresults: RAGSource[];\n\ttrace?: RAGSearchResponse['trace'];\n};\n\nconst jsonHeaders: { 'Content-Type': string } = {\n\t'Content-Type': 'application/json'\n};\n\nconst normalizeBasePath = (path: string) =>\n\tpath.endsWith('/') ? path.slice(0, UNFOUND_INDEX) : path;\n\nconst parseJson = async <T>(response: Response) => {\n\tconst payload: T = JSON.parse(await response.text());\n\n\treturn payload;\n};\n\nconst isErrorPayload = (value: unknown): value is { error?: string } => {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\treturn !('error' in value) || typeof value.error === 'string';\n};\n\nconst toErrorMessage = async (response: Response) => {\n\ttry {\n\t\tconst payload = JSON.parse(await response.text());\n\t\tif (\n\t\t\tisErrorPayload(payload) &&\n\t\t\ttypeof payload.error === 'string' &&\n\t\t\tpayload.error\n\t\t) {\n\t\t\treturn payload.error;\n\t\t}\n\t} catch {\n\t\t// fall through\n\t}\n\n\treturn `Request failed with status ${response.status}`;\n};\n\nexport const createRAGClient = (options: RAGClientOptions) => {\n\tconst basePath = normalizeBasePath(options.path);\n\tconst fetchImpl = options.fetch ?? fetch;\n\n\tconst search = async <IncludeTrace extends boolean | undefined = undefined>(\n\t\tinput: RAGSearchRequest & { includeTrace?: IncludeTrace }\n\t): Promise<\n\t\tIncludeTrace extends true ? RAGDetailedSearchResponse : RAGSource[]\n\t> => {\n\t\tconst response = await fetchImpl(`${basePath}/search`, {\n\t\t\tbody: JSON.stringify(input),\n\t\t\theaders: jsonHeaders,\n\t\t\tmethod: 'POST'\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t}\n\n\t\tconst payload = await parseJson<RAGSearchResponse>(response);\n\n\t\tif (!payload.ok) {\n\t\t\tthrow new Error(payload.error ?? 'RAG search failed');\n\t\t}\n\n\t\tif (input.includeTrace === true) {\n\t\t\treturn {\n\t\t\t\tresults: payload.results ?? [],\n\t\t\t\ttrace: payload.trace\n\t\t\t} as IncludeTrace extends true\n\t\t\t\t? RAGDetailedSearchResponse\n\t\t\t\t: RAGSource[];\n\t\t}\n\n\t\treturn (payload.results ?? []) as IncludeTrace extends true\n\t\t\t? RAGDetailedSearchResponse\n\t\t\t: RAGSource[];\n\t};\n\n\treturn {\n\t\tasync backends() {\n\t\t\tconst response = await fetchImpl(`${basePath}/backends`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGBackendsResponse>(response);\n\t\t},\n\t\tasync clearIndex() {\n\t\t\tconst response = await fetchImpl(`${basePath}/index`, {\n\t\t\t\tmethod: 'DELETE'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<{ ok: boolean }>(response);\n\t\t},\n\t\tasync createDocument(\n\t\t\tinput: RAGDocumentIngestInput['documents'][number]\n\t\t) {\n\t\t\tconst response = await fetchImpl(`${basePath}/documents`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\t\tasync deleteDocument(id: string) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/documents/${encodeURIComponent(id)}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\t\tasync documentChunks(id: string) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/documents/${encodeURIComponent(id)}/chunks`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst error = await toErrorMessage(response);\n\n\t\t\t\tconst errorResponse: RAGDocumentChunksResponse = {\n\t\t\t\t\terror,\n\t\t\t\t\tok: false\n\t\t\t\t};\n\n\t\t\t\treturn errorResponse;\n\t\t\t}\n\n\t\t\treturn parseJson<RAGDocumentChunksResponse>(response);\n\t\t},\n\t\tasync documents(kind?: string) {\n\t\t\tconst query = kind ? `?kind=${encodeURIComponent(kind)}` : '';\n\t\t\tconst response = await fetchImpl(`${basePath}/documents${query}`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGDocumentsResponse>(response);\n\t\t},\n\t\tasync evaluate(input: RAGEvaluationInput) {\n\t\t\tconst response = await fetchImpl(`${basePath}/evaluate`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGEvaluationResponse>(response);\n\t\t},\n\t\tasync compareRetrievals(input: RAGRetrievalComparisonRequest) {\n\t\t\tconst response = await fetchImpl(`${basePath}/compare/retrieval`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalComparisonResponse>(response);\n\t\t\tif (!payload.ok || !payload.comparison) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG retrieval comparison failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.comparison;\n\t\t},\n\t\tasync retrievalComparisonHistory(input?: {\n\t\t\tlimit?: number;\n\t\t\tsuiteId?: string;\n\t\t\tlabel?: string;\n\t\t\twinnerId?: string;\n\t\t\tgroupKey?: string;\n\t\t\ttag?: string;\n\t\t}) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (typeof input?.limit === 'number') {\n\t\t\t\tsearchParams.set('limit', String(input.limit));\n\t\t\t}\n\t\t\tif (input?.suiteId) {\n\t\t\t\tsearchParams.set('suiteId', input.suiteId);\n\t\t\t}\n\t\t\tif (input?.label) {\n\t\t\t\tsearchParams.set('label', input.label);\n\t\t\t}\n\t\t\tif (input?.winnerId) {\n\t\t\t\tsearchParams.set('winnerId', input.winnerId);\n\t\t\t}\n\t\t\tif (input?.groupKey) {\n\t\t\t\tsearchParams.set('groupKey', input.groupKey);\n\t\t\t}\n\t\t\tif (input?.tag) {\n\t\t\t\tsearchParams.set('tag', input.tag);\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/history${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalComparisonHistoryResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.runs) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG retrieval comparison history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.runs;\n\t\t},\n\t\tasync retrievalBaselines(input?: {\n\t\t\tgroupKey?: string;\n\t\t\ttag?: string;\n\t\t\tlimit?: number;\n\t\t\tstatus?: 'active' | 'superseded';\n\t\t}) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (input?.groupKey) {\n\t\t\t\tsearchParams.set('groupKey', input.groupKey);\n\t\t\t}\n\t\t\tif (input?.tag) {\n\t\t\t\tsearchParams.set('tag', input.tag);\n\t\t\t}\n\t\t\tif (typeof input?.limit === 'number') {\n\t\t\t\tsearchParams.set('limit', String(input.limit));\n\t\t\t}\n\t\t\tif (input?.status) {\n\t\t\t\tsearchParams.set('status', input.status);\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/baselines${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalBaselineListResponse>(response);\n\t\t\tif (!payload.ok || !payload.baselines) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG retrieval baseline list failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.baselines;\n\t\t},\n\t\tasync promoteRetrievalBaseline(\n\t\t\tinput: RAGRetrievalBaselinePromotionRequest\n\t\t) {\n\t\t\tconst payload = await this.promoteRetrievalBaselineDetailed(input);\n\t\t\treturn payload.baseline!;\n\t\t},\n\t\tasync promoteRetrievalBaselineDetailed(\n\t\t\tinput: RAGRetrievalBaselinePromotionRequest\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/baselines/promote`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalBaselineResponse>(response);\n\t\t\tif (!payload.ok || !payload.baseline) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG retrieval baseline promotion failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload;\n\t\t},\n\t\tasync promoteRetrievalBaselineToLane(\n\t\t\tinput: RAGRetrievalBaselinePromotionRequest & {\n\t\t\t\trolloutLabel: 'canary' | 'stable' | 'rollback_target';\n\t\t\t}\n\t\t) {\n\t\t\tconst payload =\n\t\t\t\tawait this.promoteRetrievalBaselineToLaneDetailed(input);\n\t\t\treturn payload.baseline!;\n\t\t},\n\t\tasync promoteRetrievalBaselineToLaneDetailed(\n\t\t\tinput: RAGRetrievalBaselinePromotionRequest & {\n\t\t\t\trolloutLabel: 'canary' | 'stable' | 'rollback_target';\n\t\t\t}\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/baselines/promote-lane`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalBaselineResponse>(response);\n\t\t\tif (!payload.ok || !payload.baseline) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval rollout-lane promotion failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload;\n\t\t},\n\t\tasync promoteRetrievalBaselineFromRun(\n\t\t\tinput: RAGRetrievalBaselinePromotionFromRunRequest\n\t\t) {\n\t\t\tconst payload =\n\t\t\t\tawait this.promoteRetrievalBaselineFromRunDetailed(input);\n\t\t\treturn payload.baseline!;\n\t\t},\n\t\tasync promoteRetrievalBaselineFromRunDetailed(\n\t\t\tinput: RAGRetrievalBaselinePromotionFromRunRequest\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/baselines/promote-run`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalBaselineResponse>(response);\n\t\t\tif (!payload.ok || !payload.baseline) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval baseline promotion from run failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload;\n\t\t},\n\t\tasync revertRetrievalBaseline(\n\t\t\tinput: RAGRetrievalBaselineRevertRequest\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/baselines/revert`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalBaselineResponse>(response);\n\t\t\tif (!payload.ok || !payload.baseline) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG retrieval baseline revert failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.baseline;\n\t\t},\n\t\tasync retrievalBaselineDecisions(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\tkind?: 'approve' | 'promote' | 'reject' | 'revert';\n\t\t\tfreshnessStatus?: 'fresh' | 'expired' | 'not_applicable';\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (input?.groupKey) {\n\t\t\t\tsearchParams.set('groupKey', input.groupKey);\n\t\t\t}\n\t\t\tif (typeof input?.limit === 'number') {\n\t\t\t\tsearchParams.set('limit', String(input.limit));\n\t\t\t}\n\t\t\tif (input?.kind) {\n\t\t\t\tsearchParams.set('kind', input.kind);\n\t\t\t}\n\t\t\tif (input?.freshnessStatus) {\n\t\t\t\tsearchParams.set('freshnessStatus', input.freshnessStatus);\n\t\t\t}\n\t\t\tif (input?.targetRolloutLabel) {\n\t\t\t\tsearchParams.set(\n\t\t\t\t\t'targetRolloutLabel',\n\t\t\t\t\tinput.targetRolloutLabel\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/baselines/decisions${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseDecisionListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.decisions) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval release decision list failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.decisions;\n\t\t},\n\t\tasync retrievalReleaseGroupHistory(input: {\n\t\t\tgroupKey: string;\n\t\t\tdecisionLimit?: number;\n\t\t\tbaselineLimit?: number;\n\t\t\trunLimit?: number;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tsearchParams.set('groupKey', input.groupKey);\n\t\t\tif (typeof input.decisionLimit === 'number') {\n\t\t\t\tsearchParams.set('decisionLimit', String(input.decisionLimit));\n\t\t\t}\n\t\t\tif (typeof input.baselineLimit === 'number') {\n\t\t\t\tsearchParams.set('baselineLimit', String(input.baselineLimit));\n\t\t\t}\n\t\t\tif (typeof input.runLimit === 'number') {\n\t\t\t\tsearchParams.set('runLimit', String(input.runLimit));\n\t\t\t}\n\t\t\tif (input.targetRolloutLabel) {\n\t\t\t\tsearchParams.set(\n\t\t\t\t\t'targetRolloutLabel',\n\t\t\t\t\tinput.targetRolloutLabel\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/release-history?${searchParams}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseGroupHistoryResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval release group history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload;\n\t\t},\n\t\tasync retrievalLaneHandoffs(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tsourceRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\tlimit?: number;\n\t\t}) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (input?.groupKey) {\n\t\t\t\tsearchParams.set('groupKey', input.groupKey);\n\t\t\t}\n\t\t\tif (input?.sourceRolloutLabel) {\n\t\t\t\tsearchParams.set(\n\t\t\t\t\t'sourceRolloutLabel',\n\t\t\t\t\tinput.sourceRolloutLabel\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (input?.targetRolloutLabel) {\n\t\t\t\tsearchParams.set(\n\t\t\t\t\t'targetRolloutLabel',\n\t\t\t\t\tinput.targetRolloutLabel\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (typeof input?.limit === 'number') {\n\t\t\t\tsearchParams.set('limit', String(input.limit));\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/handoffs${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalLaneHandoffListResponse>(response);\n\t\t\tif (!payload.ok || !payload.handoffs) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG retrieval lane handoff list failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.handoffs;\n\t\t},\n\t\tasync retrievalLaneHandoffDecisions(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tsourceRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\tkind?: 'approve' | 'reject' | 'complete';\n\t\t\tlimit?: number;\n\t\t}) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (input?.groupKey) {\n\t\t\t\tsearchParams.set('groupKey', input.groupKey);\n\t\t\t}\n\t\t\tif (input?.sourceRolloutLabel) {\n\t\t\t\tsearchParams.set(\n\t\t\t\t\t'sourceRolloutLabel',\n\t\t\t\t\tinput.sourceRolloutLabel\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (input?.targetRolloutLabel) {\n\t\t\t\tsearchParams.set(\n\t\t\t\t\t'targetRolloutLabel',\n\t\t\t\t\tinput.targetRolloutLabel\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (input?.kind) {\n\t\t\t\tsearchParams.set('kind', input.kind);\n\t\t\t}\n\t\t\tif (typeof input?.limit === 'number') {\n\t\t\t\tsearchParams.set('limit', String(input.limit));\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/handoffs/decisions${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalLaneHandoffDecisionListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.decisions) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval lane handoff decision list failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.decisions;\n\t\t},\n\t\tasync retrievalLaneHandoffIncidents(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\tstatus?: 'open' | 'resolved';\n\t\t\tseverity?: 'warning' | 'critical';\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (input?.groupKey) searchParams.set('groupKey', input.groupKey);\n\t\t\tif (typeof input?.limit === 'number')\n\t\t\t\tsearchParams.set('limit', String(input.limit));\n\t\t\tif (input?.status) searchParams.set('status', input.status);\n\t\t\tif (input?.severity) searchParams.set('severity', input.severity);\n\t\t\tif (input?.targetRolloutLabel) {\n\t\t\t\tsearchParams.set(\n\t\t\t\t\t'targetRolloutLabel',\n\t\t\t\t\tinput.targetRolloutLabel\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/handoffs/incidents${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalLaneHandoffIncidentListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.incidents) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval lane handoff incident list failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.incidents;\n\t\t},\n\t\tasync retrievalLaneHandoffIncidentHistory(input?: {\n\t\t\taction?: 'opened' | 'acknowledged' | 'unacknowledged' | 'resolved';\n\t\t\tgroupKey?: string;\n\t\t\tincidentId?: string;\n\t\t\tlimit?: number;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}) {\n\t\t\tconst suffix = input\n\t\t\t\t? `?${new URLSearchParams(\n\t\t\t\t\t\tObject.entries(input)\n\t\t\t\t\t\t\t.filter(([, value]) => value !== undefined)\n\t\t\t\t\t\t\t.map(([key, value]) => [key, String(value)])\n\t\t\t\t\t).toString()}`\n\t\t\t\t: '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/handoffs/incidents/history${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalLaneHandoffIncidentHistoryResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.records) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval lane handoff incident history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.records;\n\t\t},\n\t\tasync retrievalLaneHandoffAutoCompletePolicyHistory(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}) {\n\t\t\tconst suffix = input\n\t\t\t\t? `?${new URLSearchParams(\n\t\t\t\t\t\tObject.entries(input)\n\t\t\t\t\t\t\t.filter(([, value]) => value !== undefined)\n\t\t\t\t\t\t\t.map(([key, value]) => [key, String(value)])\n\t\t\t\t\t).toString()}`\n\t\t\t\t: '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/handoffs/policies/history${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalLaneHandoffAutoCompletePolicyHistoryResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.records) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval lane handoff auto-complete policy history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.records;\n\t\t},\n\t\tasync retrievalReleaseLanePolicyHistory(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\trolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\tscope?: 'rollout_label' | 'group_rollout_label';\n\t\t}) {\n\t\t\tconst suffix = input\n\t\t\t\t? `?${new URLSearchParams(\n\t\t\t\t\t\tObject.entries(input)\n\t\t\t\t\t\t\t.filter(([, value]) => value !== undefined)\n\t\t\t\t\t\t\t.map(([key, value]) => [key, String(value)])\n\t\t\t\t\t).toString()}`\n\t\t\t\t: '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/release-policies/history${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseLanePolicyHistoryResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.records) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval release lane policy history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.records;\n\t\t},\n\t\tasync retrievalBaselineGatePolicyHistory(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\trolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\tscope?: 'rollout_label' | 'group_rollout_label';\n\t\t}) {\n\t\t\tconst suffix = input\n\t\t\t\t? `?${new URLSearchParams(\n\t\t\t\t\t\tObject.entries(input)\n\t\t\t\t\t\t\t.filter(([, value]) => value !== undefined)\n\t\t\t\t\t\t\t.map(([key, value]) => [key, String(value)])\n\t\t\t\t\t).toString()}`\n\t\t\t\t: '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/gate-policies/history${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalBaselineGatePolicyHistoryResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.records) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval baseline gate policy history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.records;\n\t\t},\n\t\tasync retrievalReleaseLaneEscalationPolicyHistory(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}) {\n\t\t\tconst suffix = input\n\t\t\t\t? `?${new URLSearchParams(\n\t\t\t\t\t\tObject.entries(input)\n\t\t\t\t\t\t\t.filter(([, value]) => value !== undefined)\n\t\t\t\t\t\t\t.map(([key, value]) => [key, String(value)])\n\t\t\t\t\t).toString()}`\n\t\t\t\t: '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/escalation-policies/history${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseLaneEscalationPolicyHistoryResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.records) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval release lane escalation policy history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.records;\n\t\t},\n\t\tasync retrievalReleaseIncidentPolicyHistory(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}) {\n\t\t\tconst suffix = input\n\t\t\t\t? `?${new URLSearchParams(\n\t\t\t\t\t\tObject.entries(input)\n\t\t\t\t\t\t\t.filter(([, value]) => value !== undefined)\n\t\t\t\t\t\t\t.map(([key, value]) => [key, String(value)])\n\t\t\t\t\t).toString()}`\n\t\t\t\t: '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/incident-policies/history${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseLaneEscalationPolicyHistoryResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.records) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval release incident policy history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.records;\n\t\t},\n\t\tasync retrievalReleaseIncidentStatus() {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/status/release/incidents`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGRetrievalReleaseIncidentStatusResponse>(\n\t\t\t\tresponse\n\t\t\t);\n\t\t},\n\t\tasync retrievalIncidentRemediationStatus() {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/status/release/remediations`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGRetrievalIncidentRemediationStatusResponse>(\n\t\t\t\tresponse\n\t\t\t);\n\t\t},\n\t\tasync retrievalLaneHandoffIncidentStatus() {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/status/handoffs/incidents`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGRetrievalLaneHandoffIncidentStatusResponse>(\n\t\t\t\tresponse\n\t\t\t);\n\t\t},\n\t\tasync acknowledgeRetrievalLaneHandoffIncident(\n\t\t\tinput: RAGRetrievalReleaseIncidentAcknowledgeRequest\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/handoffs/incidents/acknowledge`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalLaneHandoffIncidentListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.incidents) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval lane handoff incident acknowledgement failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.incidents;\n\t\t},\n\t\tasync unacknowledgeRetrievalLaneHandoffIncident(input: {\n\t\t\tincidentId: string;\n\t\t}) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/handoffs/incidents/unacknowledge`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalLaneHandoffIncidentListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.incidents) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval lane handoff incident unacknowledge failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.incidents;\n\t\t},\n\t\tasync resolveRetrievalLaneHandoffIncident(input: {\n\t\t\tincidentId: string;\n\t\t\tresolvedAt?: number;\n\t\t\tresolvedBy?: string;\n\t\t\tresolutionNotes?: string;\n\t\t}) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/handoffs/incidents/resolve`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalLaneHandoffIncidentListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.incidents) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval lane handoff incident resolve failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.incidents;\n\t\t},\n\t\tasync decideRetrievalLaneHandoff(\n\t\t\tinput: RAGRetrievalLaneHandoffDecisionRequest\n\t\t) {\n\t\t\tconst payload =\n\t\t\t\tawait this.decideRetrievalLaneHandoffDetailed(input);\n\t\t\tif (!payload.decision) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval lane handoff decision failed'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn payload.decision;\n\t\t},\n\t\tasync decideRetrievalLaneHandoffDetailed(\n\t\t\tinput: RAGRetrievalLaneHandoffDecisionRequest\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/handoffs/decide`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGRetrievalLaneHandoffDecisionResponse>(response);\n\t\t},\n\t\tasync retrievalReleaseIncidents(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\tstatus?: 'open' | 'resolved';\n\t\t\tseverity?: 'warning' | 'critical';\n\t\t\tkind?:\n\t\t\t\t| 'approval_expired'\n\t\t\t\t| 'baseline_regression'\n\t\t\t\t| 'gate_failure'\n\t\t\t\t| 'handoff_stale';\n\t\t\tacknowledged?: boolean;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (input?.groupKey) {\n\t\t\t\tsearchParams.set('groupKey', input.groupKey);\n\t\t\t}\n\t\t\tif (typeof input?.limit === 'number') {\n\t\t\t\tsearchParams.set('limit', String(input.limit));\n\t\t\t}\n\t\t\tif (input?.status) {\n\t\t\t\tsearchParams.set('status', input.status);\n\t\t\t}\n\t\t\tif (input?.severity) {\n\t\t\t\tsearchParams.set('severity', input.severity);\n\t\t\t}\n\t\t\tif (input?.kind) {\n\t\t\t\tsearchParams.set('kind', input.kind);\n\t\t\t}\n\t\t\tif (typeof input?.acknowledged === 'boolean') {\n\t\t\t\tsearchParams.set('acknowledged', String(input.acknowledged));\n\t\t\t}\n\t\t\tif (input?.targetRolloutLabel) {\n\t\t\t\tsearchParams.set(\n\t\t\t\t\t'targetRolloutLabel',\n\t\t\t\t\tinput.targetRolloutLabel\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/incidents${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseIncidentListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.incidents) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval release incident list failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.incidents;\n\t\t},\n\t\tasync retrievalIncidentRemediationDecisions(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tincidentId?: string;\n\t\t\tlimit?: number;\n\t\t\tremediationKind?: RAGRetrievalIncidentRemediationDecisionRequest['remediationKind'];\n\t\t\tstatus?: 'planned' | 'applied' | 'dismissed';\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}) {\n\t\t\tconst suffix = input\n\t\t\t\t? `?${new URLSearchParams(\n\t\t\t\t\t\tObject.entries(input)\n\t\t\t\t\t\t\t.filter(([, value]) => value !== undefined)\n\t\t\t\t\t\t\t.map(([key, value]) => [key, String(value)])\n\t\t\t\t\t).toString()}`\n\t\t\t\t: '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/incidents/remediations${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalIncidentRemediationDecisionListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.records) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval incident remediation decision list failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.records;\n\t\t},\n\t\tasync retrievalIncidentRemediationExecutions(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tincidentId?: string;\n\t\t\tlimit?: number;\n\t\t\tactionKind?: RAGRetrievalIncidentRemediationExecutionRequest['action']['kind'];\n\t\t\tcode?: NonNullable<\n\t\t\t\tRAGRetrievalIncidentRemediationExecutionResponse['execution']\n\t\t\t>['code'];\n\t\t\tblockedByGuardrail?: boolean;\n\t\t\tidempotentReplay?: boolean;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t}) {\n\t\t\tconst suffix = input\n\t\t\t\t? `?${new URLSearchParams(\n\t\t\t\t\t\tObject.entries(input)\n\t\t\t\t\t\t\t.filter(([, value]) => value !== undefined)\n\t\t\t\t\t\t\t.map(([key, value]) => [key, String(value)])\n\t\t\t\t\t).toString()}`\n\t\t\t\t: '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/incidents/remediations/executions${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalIncidentRemediationExecutionHistoryResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.records) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval incident remediation execution history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.records;\n\t\t},\n\t\tasync recordRetrievalIncidentRemediationDecision(\n\t\t\tinput: RAGRetrievalIncidentRemediationDecisionRequest\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/incidents/remediations`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalIncidentRemediationDecisionListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.records) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval incident remediation decision record failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.records;\n\t\t},\n\t\tasync executeRetrievalIncidentRemediation(\n\t\t\tinput: RAGRetrievalIncidentRemediationExecutionRequest\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/incidents/remediations/execute`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalIncidentRemediationExecutionResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.execution) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval incident remediation execution failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload;\n\t\t},\n\t\tasync bulkExecuteRetrievalIncidentRemediations(\n\t\t\tinput: RAGRetrievalIncidentRemediationBulkExecutionRequest\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/incidents/remediations/execute/bulk`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalIncidentRemediationBulkExecutionResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.results) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'Bulk RAG retrieval incident remediation execution failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.results;\n\t\t},\n\t\tasync acknowledgeRetrievalReleaseIncident(\n\t\t\tinput: RAGRetrievalReleaseIncidentAcknowledgeRequest\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/incidents/acknowledge`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseIncidentListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.incidents) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval release incident acknowledgement failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.incidents;\n\t\t},\n\t\tasync unacknowledgeRetrievalReleaseIncident(input: {\n\t\t\tincidentId: string;\n\t\t}) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/incidents/unacknowledge`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseIncidentListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.incidents) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval release incident unacknowledge failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.incidents;\n\t\t},\n\t\tasync resolveRetrievalReleaseIncident(input: {\n\t\t\tincidentId: string;\n\t\t\tresolvedAt?: number;\n\t\t\tresolvedBy?: string;\n\t\t\tresolutionNotes?: string;\n\t\t}) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/incidents/resolve`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseIncidentListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.incidents) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval release incident resolve failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.incidents;\n\t\t},\n\t\tasync retrievalPromotionCandidates(input?: {\n\t\t\tgroupKey?: string;\n\t\t\tlimit?: number;\n\t\t\ttag?: string;\n\t\t\ttargetRolloutLabel?: 'canary' | 'stable' | 'rollback_target';\n\t\t\tapproved?: boolean;\n\t\t\tready?: boolean;\n\t\t\tblocked?: boolean;\n\t\t\treviewStatus?: 'approved' | 'blocked' | 'needs_review' | 'ready';\n\t\t\tfreshnessStatus?: 'fresh' | 'expired' | 'not_applicable';\n\t\t\tsortBy?:\n\t\t\t\t| 'approvalFreshness'\n\t\t\t\t| 'finishedAt'\n\t\t\t\t| 'gateSeverity'\n\t\t\t\t| 'priority';\n\t\t\tsortDirection?: 'asc' | 'desc';\n\t\t}) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (input?.groupKey) {\n\t\t\t\tsearchParams.set('groupKey', input.groupKey);\n\t\t\t}\n\t\t\tif (typeof input?.limit === 'number') {\n\t\t\t\tsearchParams.set('limit', String(input.limit));\n\t\t\t}\n\t\t\tif (input?.tag) {\n\t\t\t\tsearchParams.set('tag', input.tag);\n\t\t\t}\n\t\t\tif (input?.targetRolloutLabel) {\n\t\t\t\tsearchParams.set(\n\t\t\t\t\t'targetRolloutLabel',\n\t\t\t\t\tinput.targetRolloutLabel\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (typeof input?.approved === 'boolean') {\n\t\t\t\tsearchParams.set('approved', String(input.approved));\n\t\t\t}\n\t\t\tif (typeof input?.ready === 'boolean') {\n\t\t\t\tsearchParams.set('ready', String(input.ready));\n\t\t\t}\n\t\t\tif (typeof input?.blocked === 'boolean') {\n\t\t\t\tsearchParams.set('blocked', String(input.blocked));\n\t\t\t}\n\t\t\tif (input?.reviewStatus) {\n\t\t\t\tsearchParams.set('reviewStatus', input.reviewStatus);\n\t\t\t}\n\t\t\tif (input?.freshnessStatus) {\n\t\t\t\tsearchParams.set('freshnessStatus', input.freshnessStatus);\n\t\t\t}\n\t\t\tif (input?.sortBy) {\n\t\t\t\tsearchParams.set('sortBy', input.sortBy);\n\t\t\t}\n\t\t\tif (input?.sortDirection) {\n\t\t\t\tsearchParams.set('sortDirection', input.sortDirection);\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/candidates${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalPromotionCandidateListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.candidates) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ??\n\t\t\t\t\t\t'RAG retrieval promotion candidate list failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.candidates;\n\t\t},\n\t\tasync approveRetrievalCandidate(\n\t\t\tinput: RAGRetrievalReleaseDecisionActionRequest\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/baselines/approve`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseDecisionListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.decisions) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG retrieval approval failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.decisions;\n\t\t},\n\t\tasync rejectRetrievalCandidate(\n\t\t\tinput: RAGRetrievalReleaseDecisionActionRequest\n\t\t) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/compare/retrieval/baselines/reject`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseDecisionListResponse>(\n\t\t\t\t\tresponse\n\t\t\t\t);\n\t\t\tif (!payload.ok || !payload.decisions) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG retrieval rejection failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.decisions;\n\t\t},\n\t\tasync ingest(chunks: RAGDocumentChunk[]) {\n\t\t\tconst response = await fetchImpl(`${basePath}/ingest`, {\n\t\t\t\tbody: JSON.stringify({ chunks }),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGIngestResponse>(response);\n\t\t},\n\t\tasync ingestDocuments(input: RAGDocumentIngestInput) {\n\t\t\tconst response = await fetchImpl(`${basePath}/ingest`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGIngestResponse>(response);\n\t\t},\n\t\tasync ingestUploads(input: RAGDocumentUploadIngestInput) {\n\t\t\tconst response = await fetchImpl(`${basePath}/ingest`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGIngestResponse>(response);\n\t\t},\n\t\tasync ingestUrls(input: RAGDocumentUrlIngestInput) {\n\t\t\tconst response = await fetchImpl(`${basePath}/ingest`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGIngestResponse>(response);\n\t\t},\n\t\tasync ops() {\n\t\t\tconst response = await fetchImpl(`${basePath}/ops`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGOperationsResponse>(response);\n\t\t},\n\t\tasync searchTraceHistory(input?: {\n\t\t\tquery?: string;\n\t\t\tgroupKey?: string;\n\t\t\ttag?: string;\n\t\t\tlimit?: number;\n\t\t}) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (input?.query) {\n\t\t\t\tsearchParams.set('query', input.query);\n\t\t\t}\n\t\t\tif (input?.groupKey) {\n\t\t\t\tsearchParams.set('groupKey', input.groupKey);\n\t\t\t}\n\t\t\tif (input?.tag) {\n\t\t\t\tsearchParams.set('tag', input.tag);\n\t\t\t}\n\t\t\tif (typeof input?.limit === 'number') {\n\t\t\t\tsearchParams.set('limit', String(input.limit));\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(`${basePath}/traces${suffix}`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGSearchTraceHistoryResponse>(response);\n\t\t\tif (!payload.ok || !payload.history) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG search trace history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.history;\n\t\t},\n\t\tasync searchTraceGroups(input?: { tag?: string; limit?: number }) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (input?.tag) {\n\t\t\t\tsearchParams.set('tag', input.tag);\n\t\t\t}\n\t\t\tif (typeof input?.limit === 'number') {\n\t\t\t\tsearchParams.set('limit', String(input.limit));\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/traces/groups${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGSearchTraceGroupHistoryResponse>(response);\n\t\t\tif (!payload.ok || !payload.history) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG search trace group history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.history;\n\t\t},\n\t\tasync searchTraceStats(input?: { tag?: string }) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (input?.tag) {\n\t\t\t\tsearchParams.set('tag', input.tag);\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/traces/stats${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGSearchTraceStatsResponse>(response);\n\t\t\tif (!payload.ok || !payload.stats) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG search trace stats failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.stats;\n\t\t},\n\t\tasync previewSearchTracePrune(input?: {\n\t\t\tmaxAgeMs?: number;\n\t\t\tmaxRecordsPerQuery?: number;\n\t\t\tmaxRecordsPerGroup?: number;\n\t\t\tnow?: number;\n\t\t\ttag?: string;\n\t\t}) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/traces/prune/preview`,\n\t\t\t\t{\n\t\t\t\t\tbody: JSON.stringify(input ?? {}),\n\t\t\t\t\theaders: jsonHeaders,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGSearchTracePrunePreviewResponse>(response);\n\t\t\tif (!payload.ok || !payload.preview) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG search trace prune preview failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.preview;\n\t\t},\n\t\tasync pruneSearchTraces(input?: {\n\t\t\tmaxAgeMs?: number;\n\t\t\tmaxRecordsPerQuery?: number;\n\t\t\tmaxRecordsPerGroup?: number;\n\t\t\tnow?: number;\n\t\t\ttag?: string;\n\t\t}) {\n\t\t\tconst response = await fetchImpl(`${basePath}/traces/prune`, {\n\t\t\t\tbody: JSON.stringify(input ?? {}),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGSearchTracePruneResponse>(response);\n\t\t\tif (!payload.ok || !payload.result) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG search trace prune failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload;\n\t\t},\n\t\tasync searchTracePruneHistory(input?: {\n\t\t\tlimit?: number;\n\t\t\ttrigger?: 'manual' | 'write' | 'schedule';\n\t\t}) {\n\t\t\tconst searchParams = new URLSearchParams();\n\t\t\tif (typeof input?.limit === 'number') {\n\t\t\t\tsearchParams.set('limit', String(input.limit));\n\t\t\t}\n\t\t\tif (input?.trigger) {\n\t\t\t\tsearchParams.set('trigger', input.trigger);\n\t\t\t}\n\t\t\tconst suffix = searchParams.size > 0 ? `?${searchParams}` : '';\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/traces/prune/history${suffix}`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGSearchTracePruneHistoryResponse>(response);\n\t\t\tif (!payload.ok || !payload.runs) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tpayload.error ?? 'RAG search trace prune history failed'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn payload.runs;\n\t\t},\n\t\tasync syncSources() {\n\t\t\tconst response = await fetchImpl(`${basePath}/sync`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGSyncResponse>(response);\n\t\t},\n\t\tasync syncAllSources(options?: RAGSyncRunOptions) {\n\t\t\tconst response = await fetchImpl(`${basePath}/sync`, {\n\t\t\t\tbody:\n\t\t\t\t\toptions?.background === true\n\t\t\t\t\t\t? JSON.stringify({ background: true })\n\t\t\t\t\t\t: undefined,\n\t\t\t\theaders: options?.background === true ? jsonHeaders : undefined,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t} satisfies RAGSyncResponse;\n\t\t\t}\n\n\t\t\treturn parseJson<RAGSyncResponse>(response);\n\t\t},\n\t\tasync syncSource(id: string, options?: RAGSyncRunOptions) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/sync/${encodeURIComponent(id)}`,\n\t\t\t\t{\n\t\t\t\t\tbody:\n\t\t\t\t\t\toptions?.background === true\n\t\t\t\t\t\t\t? JSON.stringify({ background: true })\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\theaders:\n\t\t\t\t\t\toptions?.background === true ? jsonHeaders : undefined,\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t} satisfies RAGSyncResponse;\n\t\t\t}\n\n\t\t\treturn parseJson<RAGSyncResponse>(response);\n\t\t},\n\t\tasync reindexDocument(id: string) {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/reindex/documents/${encodeURIComponent(id)}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\t\tasync reindexSource(source: string) {\n\t\t\tconst response = await fetchImpl(`${basePath}/reindex/source`, {\n\t\t\t\tbody: JSON.stringify({ source }),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\t\tasync reseed() {\n\t\t\tconst response = await fetchImpl(`${basePath}/reseed`, {\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\t\tasync reset() {\n\t\t\tconst response = await fetchImpl(`${basePath}/reset`, {\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\terror: await toErrorMessage(response),\n\t\t\t\t\tok: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\t\tsearch,\n\t\tasync searchWithTrace(input: RAGSearchRequest) {\n\t\t\treturn search({ ...input, includeTrace: true });\n\t\t},\n\t\t/**\n\t\t * @deprecated Use `searchWithTrace` for trace-aware search responses.\n\t\t */\n\t\tasync searchDetailed(input: RAGSearchRequest) {\n\t\t\treturn search({ ...input, includeTrace: true });\n\t\t},\n\t\tasync status() {\n\t\t\tconst response = await fetchImpl(`${basePath}/status`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGStatusResponse>(response);\n\t\t},\n\t\tasync retrievalReleaseStatus() {\n\t\t\tconst response = await fetchImpl(`${basePath}/status/release`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload =\n\t\t\t\tawait parseJson<RAGRetrievalReleaseStatusResponse>(response);\n\t\t\treturn payload.retrievalComparisons;\n\t\t},\n\t\tasync retrievalReleaseDriftStatus() {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/status/release/drift`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGRetrievalReleaseDriftStatusResponse>(response);\n\t\t},\n\t\tasync retrievalLaneHandoffStatus() {\n\t\t\tconst response = await fetchImpl(`${basePath}/status/handoffs`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGRetrievalLaneHandoffStatusResponse>(response);\n\t\t}\n\t};\n};\n\nexport type RAGClient = ReturnType<typeof createRAGClient>;\n"
|
|
18
18
|
],
|
|
19
|
-
"mappings": "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",
|
|
20
|
-
"debugId": "
|
|
19
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIa,yBAAyB,CACrC,SAC6B;AAAA,EAC7B,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACtC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,EAAE,UAAU,SAAS,OAAO,KAAK,SAAS,UAAU;AAAA,IACvD,OAAO;AAAA,EACR;AAAA,EAEA,QAAQ,KAAK;AAAA,SACP;AAAA,MACJ,OAAO,aAAa,QAAQ,OAAO,KAAK,YAAY;AAAA,SAChD;AAAA,MACJ,OACC,oBAAoB,QACpB,OAAO,KAAK,mBAAmB;AAAA,SAE5B;AAAA,MACJ,OACC,eAAe,QACf,OAAO,KAAK,cAAc,YAC1B,aAAa,QACb,OAAO,KAAK,YAAY,YACxB,oBAAoB,QACpB,OAAO,KAAK,mBAAmB;AAAA;AAAA,MAGhC,OAAO;AAAA;AAAA,GAKG,yBAAyB,CACrC,SAC6B;AAAA,EAC7B,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACtC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,EAAE,UAAU,SAAS,OAAO,KAAK,SAAS,UAAU;AAAA,IACvD,OAAO;AAAA,EACR;AAAA,EAEA,QAAQ,KAAK;AAAA,SACP;AAAA,MACJ,OACC,aAAa,QACb,OAAO,KAAK,YAAY,YACxB,eAAe,QACf,oBAAoB;AAAA,SAEjB;AAAA,MACJ,OACC,aAAa,QACb,OAAO,KAAK,YAAY,YACxB,eAAe,QACf,oBAAoB;AAAA,SAEjB;AAAA,MACJ,OACC,UAAU,QACV,YAAY,QACZ,eAAe,QACf,oBAAoB;AAAA,SAEjB;AAAA,MACJ,OACC,UAAU,QACV,OAAO,KAAK,SAAS,YACrB,YAAY,QACZ,OAAO,KAAK,WAAW,YACvB,eAAe,QACf,OAAO,KAAK,cAAc,aAC1B,eAAe,QACf,oBAAoB;AAAA,SAEjB;AAAA,MACJ,OAAO,eAAe,QAAQ,oBAAoB;AAAA,SAC9C;AAAA,MACJ,OACC,oBAAoB,QACpB,eAAe,QACf,aAAa,QACb,MAAM,QAAQ,KAAK,OAAO;AAAA,SAEvB;AAAA,MACJ,OAAO,aAAa,QAAQ,OAAO,KAAK,YAAY;AAAA;AAAA,MAEpD,OAAO;AAAA;AAAA,GAKG,0BAA0B,CACtC,SAC8B;AAAA,EAC9B,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACtC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,EAAE,UAAU,SAAS,OAAO,KAAK,SAAS,UAAU;AAAA,IACvD,OAAO;AAAA,EACR;AAAA,EAEA,QAAQ,KAAK;AAAA,SACP;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;;;IC1HG,0BAA0B,KAC1B,qBAAqB,GACrB,cAAc,IACd,gBAAgB,IAChB,gCACZ,8CACY,oBAAoB,MACpB,qBAAqB,MACrB,kBAAkB,GAClB,6BAA6B,IAC7B,yBAAyB,IACzB,2BAA2B,KAC3B,6BAA6B,KAC7B,qBAAqB,OACrB,sBAAsB,IACtB,eAAe,MACf,iCAAiC,KACjC,sBAAsB,IACtB,8BAA8B,GAC9B,yBAAyB,GACzB,0BAA0B,GAC1B,2BAA2B,GAC3B,wBAAwB,MACxB,wBAAwB,IACxB,sBAAsB,IACtB,iBAAiB,KACjB,0BAA0B,KAC1B,wBAAwB,KACxB,eAAe,IACf,oBAAoB,IACpB,mBAAmB,KACnB,yBAAyB,IACzB,2BAA2B,MAC3B,qBAAqB,IACrB,sBAAsB,IACtB,0BAEA,uBAKA,2BAA2B,KAC3B,mBAAmB,OACnB,kBAAkB,GAClB,sBAAsB,IACtB,yBAAyB,IACzB,0BAA0B,KAC1B,6BAA6B,KAC7B,6BAA6B,KAC7B,0BAA0B,GAC1B,iCAAiC,IACjC,+BAA+B,IAC/B,6BAA6B,KAC7B,mCAAmC,MACnC,kCAAkC,GAClC,gCAAgC,IAChC,kCAAkC,GAClC,kCAAkC,IAClC,mBAAmB,KACnB,oBAAoB,KACpB,6BAA6B,KAC7B,iBAAiB,GACjB,YACA,gBAAgB,IAChB,2BAA2B;AAAA;AAAA,EA9B3B,2BACZ,2BAA2B;AAAA,EACf,wBACZ,2BACA,sBACA,qBACA;AAAA,EAsBY,aAAa,IAAI;AAAA;;;AC/D9B;;;ACEO,IAAM,wBAAwB,CAAC,QAAyB;AAAA,EAC9D,QAAQ,IAAI;AAAA,SACN;AAAA,MACJ,OAAO;AAAA,QACN,SAAS,IAAI;AAAA,QACb,gBAAgB,IAAI;AAAA,QACpB,WAAW,IAAI;AAAA,QACf,MAAM;AAAA,MACP;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,SAAS,IAAI;AAAA,QACb,gBAAgB,IAAI;AAAA,QACpB,WAAW,IAAI;AAAA,QACf,MAAM;AAAA,MACP;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,gBAAgB,IAAI;AAAA,QACpB,OAAO,IAAI;AAAA,QACX,WAAW,IAAI;AAAA,QACf,MAAM,IAAI;AAAA,QACV,QAAQ,IAAI;AAAA,QACZ,QAAQ,IAAI;AAAA,QACZ,MAAM;AAAA,MACP;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,gBAAgB,IAAI;AAAA,QACpB,MAAM,IAAI;AAAA,QACV,QAAQ,IAAI;AAAA,QACZ,SAAS,IAAI;AAAA,QACb,WAAW,IAAI;AAAA,QACf,WAAW,IAAI;AAAA,QACf,eAAe,IAAI;AAAA,QACnB,MAAM;AAAA,MACP;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,gBAAgB,IAAI;AAAA,QACpB,YAAY,IAAI;AAAA,QAChB,WAAW,IAAI;AAAA,QACf,OAAO,IAAI;AAAA,QACX,SAAS,IAAI;AAAA,QACb,MAAM;AAAA,QACN,OAAO,IAAI;AAAA,MACZ;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,gBAAgB,IAAI;AAAA,QACpB,WAAW,IAAI;AAAA,QACf,oBAAoB,IAAI;AAAA,QACxB,MAAM;AAAA,MACP;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,gBAAgB,IAAI;AAAA,QACpB,WAAW,IAAI;AAAA,QACf,qBAAqB,IAAI;AAAA,QACzB,oBAAoB,IAAI;AAAA,QACxB,aAAa,IAAI;AAAA,QACjB,SAAS,IAAI;AAAA,QACb,OAAO,IAAI;AAAA,QACX,MAAM;AAAA,MACP;AAAA,SACI;AAAA,MACJ,OAAO,EAAE,SAAS,IAAI,SAAS,MAAM,QAAiB;AAAA;AAAA,MAEtD,OAAO;AAAA;AAAA;;;AC/DV,IAAM,UAAU;AAChB,IAAM,oBAAoB;AAC1B,IAAM,YAAY;AAClB,IAAM,wBAAwB;AAC9B,IAAM,0BAA0B;AAChC,IAAM,0BAA0B;AAChC,IAAM,iCAAiC;AAmBvC,IAAM,OAAO,MAAM;AACnB,IAAM,kBAAkB,MAAM;AAE9B,IAAM,kBAAsC;AAAA,EAC3C,OAAO;AAAA,EACP,MAAM;AAAA,EACN,WAAW;AAAA,EACX,eAAe,MAAM;AACtB;AAEA,IAAM,aAAa,CAAC,SAAiB;AAAA,EACpC,QAAQ,UAAU,MAAM,aAAa,OAAO;AAAA,EAC5C,MAAM,aAAa,aAAa,WAAW,SAAS;AAAA,EACpD,MAAM,aAAa,OAAO,IAAI,SAAS;AAAA,EAEvC,OAAO,GAAG,eAAe,WAAW,aAAa;AAAA;AAGlD,IAAM,qBAAqB,CAAC,UAAwB;AAAA,EACnD,IAAI;AAAA,EAEJ,IAAI;AAAA,IACH,OAAO,KAAK,MAAM,OAAO,MAAM,IAAI,CAAC;AAAA,IACnC,MAAM;AAAA,IACP,OAAO;AAAA;AAAA,EAGR,IACC,QACA,OAAO,SAAS,YAChB,UAAU,QACV,KAAK,SAAS,QACb;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,CAAC,uBAAuB,IAAI,GAAG;AAAA,IAClC,OAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA;AAGD,IAAM,qBAAqB,CACjC,MACA,UAA+B,CAAC,MAC5B;AAAA,EACJ,IAAI,OAAO,WAAW,aAAa;AAAA,IAClC,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,kBAAkB,QAAQ,cAAc;AAAA,EAC9C,MAAM,eAAe,QAAQ,gBAAgB;AAAA,EAC7C,MAAM,uBACL,QAAQ,wBAAwB;AAAA,EAEjC,MAAM,YAAY,IAAI;AAAA,EAEtB,MAAM,YAA+B;AAAA,IACpC,aAAa;AAAA,IACb,iBAAiB,CAAC;AAAA,IAClB,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,IAAI;AAAA,EACL;AAAA,EAEA,MAAM,uBAAuB,MAAM;AAAA,IAClC,IAAI,UAAU,IAAI,eAAe,SAAS;AAAA,MACzC;AAAA,IACD;AAAA,IAEA,OAAO,UAAU,gBAAgB,SAAS,GAAG;AAAA,MAC5C,MAAM,OAAO,UAAU,gBAAgB,MAAM;AAAA,MAC7C,IAAI,OAAO,SAAS,UAAU;AAAA,QAC7B,UAAU,GAAG,KAAK,IAAI;AAAA,MACvB;AAAA,IACD;AAAA;AAAA,EAGD,MAAM,cAAc,MAAM;AAAA,IACzB,IAAI,UAAU,cAAc;AAAA,MAC3B,cAAc,UAAU,YAAY;AAAA,MACpC,UAAU,eAAe;AAAA,IAC1B;AAAA,IAEA,IAAI,UAAU,kBAAkB;AAAA,MAC/B,aAAa,UAAU,gBAAgB;AAAA,MACvC,UAAU,mBAAmB;AAAA,IAC9B;AAAA;AAAA,EAGD,MAAM,oBAAoB,MAAM;AAAA,IAC/B,UAAU;AAAA,IACV,MAAM,QACL,UAAU,sBAAsB,IAC7B,0BACA;AAAA,IAEJ,UAAU,mBAAmB,WAAW,MAAM;AAAA,MAC7C,IAAI,UAAU,oBAAoB,sBAAsB;AAAA,QACvD;AAAA,MACD;AAAA,MAEA,QAAQ;AAAA,OACN,KAAK;AAAA;AAAA,EAGT,MAAM,UAAU,MAAM;AAAA,IACrB,MAAM,MAAM,WAAW,IAAI;AAAA,IAC3B,MAAM,aAAa,IAAI,UAAU,KAAK,QAAQ,SAAS;AAAA,IAEvD,WAAW,SAAS,MAAM;AAAA,MACzB,UAAU,cAAc;AAAA,MACxB,UAAU,oBAAoB;AAAA,MAC9B,qBAAqB;AAAA,MAErB,UAAU,eAAe,YAAY,MAAM;AAAA,QAC1C,IACC,WAAW,eAAe,WAC1B,UAAU,aACT;AAAA,UACD,WAAW,KAAK,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC,CAAC;AAAA,QACjD;AAAA,SACE,YAAY;AAAA;AAAA,IAGhB,WAAW,YAAY,CAAC,UAAwB;AAAA,MAC/C,MAAM,UAAU,mBAAmB,KAAK;AAAA,MAExC,IAAI,CAAC,SAAS;AAAA,QACb;AAAA,MACD;AAAA,MAEA,UAAU,QAAQ,CAAC,aAAa,SAAS,OAAO,CAAC;AAAA;AAAA,IAGlD,WAAW,UAAU,CAAC,UAAsB;AAAA,MAC3C,UAAU,cAAc;AAAA,MACxB,YAAY;AAAA,MAEZ,MAAM,yBACL,mBACA,MAAM,SAAS,qBACf,UAAU,oBAAoB;AAAA,MAE/B,IAAI,wBAAwB;AAAA,QAC3B,kBAAkB;AAAA,MACnB;AAAA;AAAA,IAGD,WAAW,UAAU,MAAM;AAAA,IAI3B,UAAU,KAAK;AAAA;AAAA,EAGhB,MAAM,OAAO,CAAC,QAAyB;AAAA,IACtC,MAAM,aAAa,KAAK,UAAU,GAAG;AAAA,IAErC,IAAI,UAAU,IAAI,eAAe,SAAS;AAAA,MACzC,UAAU,GAAG,KAAK,UAAU;AAAA,MAE5B;AAAA,IACD;AAAA,IAEA,UAAU,gBAAgB,KAAK,UAAU;AAAA;AAAA,EAG1C,MAAM,YAAY,CAAC,aAA6C;AAAA,IAC/D,UAAU,IAAI,QAAQ;AAAA,IAEtB,OAAO,MAAM;AAAA,MACZ,UAAU,OAAO,QAAQ;AAAA;AAAA;AAAA,EAI3B,MAAM,QAAQ,MAAM;AAAA,IACnB,YAAY;AAAA,IAEZ,IAAI,UAAU,IAAI;AAAA,MACjB,UAAU,GAAG,MAAM,iBAAiB;AAAA,MACpC,UAAU,KAAK;AAAA,IAChB;AAAA,IAEA,UAAU,cAAc;AAAA,IACxB,UAAU,MAAM;AAAA;AAAA,EAGjB,MAAM,gBAAgB,MAAM,UAAU,IAAI,cAAc;AAAA,EAExD,QAAQ;AAAA,EAER,OAAO,EAAE,OAAO,eAAe,MAAM,UAAU;AAAA;;;ACxNhD,IAAM,cAA6B;AAAA,EAClC,sBAAsB;AAAA,EACtB,eAAe,IAAI;AAAA,EACnB,OAAO;AAAA,EACP,aAAa;AACd;AAEA,IAAM,8BAA6C;AACnD,IAAM,eAA8B;AAGpC,IAAM,aAAa,OAAO;AAAA,EACzB,sBAAsB;AAAA,EACtB,eAAe,IAAI;AAAA,EACnB,OAAO;AAAA,EACP,aAAa;AACd;AAEA,IAAM,uBAAuB,CAC5B,cACA,cAEA,aAAa,SAAS,KACrB,CAAC,QAAQ,IAAI,OAAO,aAAa,IAAI,SAAS,WAC/C;AAED,IAAM,cAAc,CAAC,OAAsB,mBAA2B;AAAA,EACrE,IAAI,eAAe,MAAM,cAAc,IAAI,cAAc;AAAA,EAEzD,IAAI,CAAC,cAAc;AAAA,IAClB,eAAe;AAAA,MACd,WAAW,KAAK,IAAI;AAAA,MACpB,IAAI;AAAA,MACJ,UAAU,CAAC;AAAA,IACZ;AAAA,IACA,MAAM,cAAc,IAAI,gBAAgB,YAAY;AAAA,EACrD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,aAAa,CAClB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAqB;AAAA,IAC1B,aAAa,OAAO;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,gBAAgB,OAAO;AAAA,IACvB,IAAI,OAAO;AAAA,IACX,MAAM;AAAA,IACN,WAAW,KAAK,IAAI;AAAA,EACrB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA,EAC1D,MAAM,uBAAuB,OAAO;AAAA,EACpC,MAAM,QAAQ;AAAA,EACd,MAAM,cAAc;AAAA;AAGrB,IAAM,cAAc,CACnB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,cAAc,aAAa,SAAS,UACzC,CAAC,QAAQ,IAAI,OAAO,OAAO,aAAa,IAAI,SAAS,WACtD;AAAA,EAEA,IAAI,eAAe,GAAG;AAAA,IACrB,MAAM,cAAc,aAAa,SAAS,cAAc,WAAW;AAAA,IACnE,aAAa,WAAW,aAAa,SAAS,IAAI,CAAC,KAAK,QACvD,QAAQ,cACL,KAAK,KAAK,SAAS,cAAc,OAAO,QAAQ,IAChD,GACJ;AAAA,IAEA;AAAA,EACD;AAAA,EAEA,MAAM,UAAqB;AAAA,IAC1B,SAAS,OAAO;AAAA,IAChB,gBAAgB,OAAO;AAAA,IACvB,IAAI,OAAO;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,WAAW,KAAK,IAAI;AAAA,EACrB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA;AAG3D,IAAM,iBAAiB,CACtB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,cAAc,aAAa,SAAS,UACzC,CAAC,QAAQ,IAAI,OAAO,OAAO,aAAa,IAAI,SAAS,WACtD;AAAA,EAEA,IAAI,eAAe,GAAG;AAAA,IACrB,MAAM,eAAe,aAAa,SAAS,cAAc,YAAY;AAAA,IACrE,aAAa,WAAW,aAAa,SAAS,IAAI,CAAC,KAAK,QACvD,QAAQ,cACL,KAAK,KAAK,UAAU,eAAe,OAAO,QAAQ,IAClD,GACJ;AAAA,IAEA;AAAA,EACD;AAAA,EAEA,MAAM,UAAqB;AAAA,IAC1B,SAAS;AAAA,IACT,gBAAgB,OAAO;AAAA,IACvB,IAAI,OAAO;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU,OAAO;AAAA,IACjB,WAAW,KAAK,IAAI;AAAA,EACrB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA;AAG3D,IAAM,iBAAiB,CAAC,SAAoB,aAAyB;AAAA,EACpE,IAAI,CAAC,QAAQ,WAAW;AAAA,IACvB,QAAQ,YAAY,CAAC,QAAQ;AAAA,IAE7B;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,QAAQ,UAAU,UACrC,CAAC,aAAa,SAAS,SAAS,SAAS,IAC1C;AAAA,EAEA,IAAI,eAAe,GAAG;AAAA,IACrB,QAAQ,UAAU,eAAe;AAAA,EAClC,EAAO;AAAA,IACN,QAAQ,YAAY,CAAC,GAAG,QAAQ,WAAW,QAAQ;AAAA;AAAA;AAIrD,IAAM,8BAA8B,CACnC,cACA,WACA,mBACI;AAAA,EACJ,MAAM,WAAW,qBAAqB,cAAc,SAAS;AAAA,EAE7D,IAAI,UAAU;AAAA,IACb,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,UAAqB;AAAA,IAC1B,SAAS;AAAA,IACT;AAAA,IACA,IAAI;AAAA,IACJ,aAAa;AAAA,IACb,MAAM;AAAA,IACN,WAAW,KAAK,IAAI;AAAA,EACrB;AAAA,EACA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA,EAE1D,OAAO;AAAA;AAGR,IAAM,qBAAqB,CAC1B,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACf,cACA,OAAO,WACP,OAAO,cACR;AAAA,EAEA,QAAQ,UAAU,OAAO;AAAA,EACzB,QAAQ,qBACP,OAAO,sBAAsB,QAAQ;AAAA,EACtC,QAAQ,cAAc,OAAO;AAAA,EAC7B,QAAQ,sBAAsB,OAAO;AAAA,EACrC,QAAQ,iBAAiB,OAAO;AAAA,EAChC,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGlD,IAAM,sBAAsB,CAC3B,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACf,cACA,OAAO,WACP,OAAO,cACR;AAAA,EAEA,QAAQ,qBAAqB,OAAO;AAAA,EACpC,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGlD,IAAM,mBAAmB,CACxB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACf,cACA,OAAO,WACP,OAAO,cACR;AAAA,EAEA,MAAM,WAAuB;AAAA,IAC5B,IAAI,OAAO;AAAA,IACX,OAAO,OAAO;AAAA,IACd,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO,WAAW,aAAc,OAAO,UAAU,KAAM;AAAA,EAChE;AAAA,EAEA,eAAe,SAAS,QAAQ;AAAA,EAChC,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGlD,IAAM,sBAAsB,CAC3B,cACA,WACA,OACA,YACA,OACA,YACI;AAAA,EACJ,aAAa,WAAW,aAAa,SAAS,IAAI,CAAC,QAClD,IAAI,OAAO,aAAa,IAAI,SAAS,cAClC;AAAA,OACG;AAAA,IACH;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,SAAS,WAAW,IAAI;AAAA,IACxB;AAAA,EACD,IACC,GACJ;AAAA;AAGD,IAAM,YAAY;AAElB,IAAM,wBAAwB,CAC7B,QACA,YACI;AAAA,EACJ,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EAErB,OAAO,OAAO,UAAU,CAAC,QAAQ,IAAI,YAAY,OAAO;AAAA;AAGzD,IAAM,8BAA8B,CAAC,WAA0B;AAAA,EAC9D,MAAM,UAAU,OAAO,SAAS;AAAA,EAEhC,IAAI,WAAW,KAAK,OAAO,UAAU,WAAW;AAAA,IAC/C,OAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,cAAc,CAAC,SAAoB,cAA2B;AAAA,EACnE,IAAI,CAAC,QAAQ,QAAQ;AAAA,IACpB,QAAQ,SAAS,CAAC,SAAS;AAAA,IAE3B;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,sBACnB,QAAQ,QACR,UAAU,OACX;AAAA,EAEA,IAAI,eAAe,GAAG;AAAA,IACrB,QAAQ,OAAO,eAAe;AAAA,IAE9B;AAAA,EACD;AAAA,EAEA,MAAM,iBAAiB,4BAA4B,QAAQ,MAAM;AAAA,EAEjE,IAAI,kBAAkB,GAAG;AAAA,IACxB,QAAQ,OAAO,kBAAkB;AAAA,IAEjC;AAAA,EACD;AAAA,EAEA,QAAQ,SAAS,CAAC,GAAG,QAAQ,QAAQ,SAAS;AAAA;AAG/C,IAAM,cAAc,CACnB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACf,cACA,OAAO,WACP,OAAO,cACR;AAAA,EAEA,YAAY,SAAS;AAAA,IACpB,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO;AAAA,IACf,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,IAClB,eAAe,OAAO;AAAA,EACvB,CAAC;AAAA,EAED,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGlD,IAAM,iBAAiB,CACtB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,MAAM,cAAc,IAAI,OAAO,cAAc;AAAA,EAElE,IAAI,cAAc;AAAA,IACjB,oBACC,cACA,OAAO,WACP,OAAO,OACP,OAAO,YACP,OAAO,OACP,OAAO,OACR;AAAA,EACD;AAAA,EAEA,MAAM,cAAc;AAAA;AAGrB,IAAM,kCAAkC,CAAC,iBAAiC;AAAA,EACzE,MAAM,oBAAoB,aAAa,SAAS,OAC/C,CAAC,QAAQ,IAAI,WACd;AAAA,EAEA,IAAI,kBAAkB,WAAW,GAAG;AAAA,IACnC;AAAA,EACD;AAAA,EAEA,WAAW,OAAO,mBAAmB;AAAA,IACpC,IAAI,cAAc;AAAA,EACnB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGlD,IAAM,yBAAyB,CAAC,UAAyB;AAAA,EACxD,cAAc,iBAAiB,MAAM,eAAe;AAAA,IACnD,gCAAgC,YAAY;AAAA,EAC7C;AAAA;AAGD,IAAM,eAAe,CACpB,OACA,WACI;AAAA,EACJ,MAAM,SAAS,MAAM,cAAc,IAAI,OAAO,iBAAiB;AAAA,EAE/D,IAAI,CAAC,QAAQ;AAAA,IACZ;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,OAAO,SAAS,UACnC,CAAC,QAAQ,IAAI,OAAO,OAAO,aAC5B;AAAA,EAEA,IAAI,cAAc,GAAG;AAAA,IACpB;AAAA,EACD;AAAA,EAEA,MAAM,mBAAmB,OAAO,SAC9B,MAAM,GAAG,cAAc,CAAC,EACxB,IAAI,CAAC,SAAS,KAAK,KAAK,gBAAgB,OAAO,kBAAkB,EAAE;AAAA,EAErE,MAAM,kBAAkC;AAAA,IACvC,WAAW,KAAK,IAAI;AAAA,IACpB,IAAI,OAAO;AAAA,IACX,UAAU;AAAA,EACX;AAAA,EAEA,MAAM,cAAc,IAAI,OAAO,mBAAmB,eAAe;AAAA,EACjE,MAAM,uBAAuB,OAAO;AAAA;AAGrC,IAAM,cAAc,CAAC,OAAsB,WAA0B;AAAA,EACpE,QAAQ,OAAO;AAAA,SACT;AAAA,MACJ,WAAW,OAAO,MAAM;AAAA,MACxB;AAAA,SACI;AAAA,MACJ,YAAY,OAAO,MAAM;AAAA,MACzB;AAAA,SACI;AAAA,MACJ,eAAe,OAAO,MAAM;AAAA,MAC5B;AAAA,SACI;AAAA,MACJ,iBAAiB,OAAO,MAAM;AAAA,MAC9B;AAAA,SACI;AAAA,MACJ,YAAY,OAAO,MAAM;AAAA,MACzB;AAAA,SACI;AAAA,MACJ,eAAe,OAAO,MAAM;AAAA,MAC5B;AAAA,SACI;AAAA,MACJ,MAAM,QAAQ,OAAO;AAAA,MACrB,MAAM,cAAc;AAAA,MACpB;AAAA,SACI;AAAA,MACJ,oBAAoB,OAAO,MAAM;AAAA,MACjC;AAAA,SACI;AAAA,MACJ,mBAAmB,OAAO,MAAM;AAAA,MAChC;AAAA,SACI;AAAA,MACJ,MAAM,cAAc;AAAA,MACpB,uBAAuB,KAAK;AAAA,MAC5B;AAAA,SACI;AAAA,MACJ,aAAa,OAAO,MAAM;AAAA,MAC1B;AAAA,SACI;AAAA,MACJ,MAAM,uBAAuB,OAAO;AAAA,MACpC;AAAA;AAAA;AAII,IAAM,uBAAuB,MAAM;AAAA,EACzC,IAAI,QAAQ,WAAW;AAAA,EACvB,MAAM,cAAc,IAAI;AAAA,EAExB,OAAO;AAAA,IACN,UAAU,CAAC,WAA0B;AAAA,MACpC,YAAY,OAAO,MAAM;AAAA,MAEzB,QAAQ,KAAK,OAAO,eAAe,IAAI,IAAI,MAAM,aAAa,EAAE;AAAA,MAChE,YAAY,QAAQ,CAAC,aAAa,SAAS,CAAC;AAAA;AAAA,IAE7C,mBAAmB,MAAM;AAAA,IACzB,aAAa,MAAM;AAAA,IACnB,WAAW,CAAC,aAAyB;AAAA,MACpC,YAAY,IAAI,QAAQ;AAAA,MAExB,OAAO,MAAM;AAAA,QACZ,YAAY,OAAO,QAAQ;AAAA;AAAA;AAAA,EAG9B;AAAA;;;AC/cM,IAAM,aAAa,MAAM,OAAO,WAAW;AAE3C,IAAM,iBAAiB,CAAC,QAAiB;AAAA,EAC/C,IAAI,QAAQ,QAAQ,QAAQ,WAAW;AAAA,IACtC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI;AAAA,EAEJ,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC5B,OAAO;AAAA,EACR,EAAO,SAAI,eAAe,aAAa;AAAA,IACtC,OAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AAAA,EACpC,EAAO,SAAI,YAAY,OAAO,GAAG,GAAG;AAAA,IACnC,OAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AAAA,EACpC,EAAO,SAAI,OAAO,QAAQ,UAAU;AAAA,IACnC,IAAI,uBAAuB,GAAG,GAAG;AAAA,MAChC,OAAO;AAAA,IACR;AAAA,IAEA,OAAO;AAAA,EACR,EAAO;AAAA,IACN,OAAO;AAAA;AAAA,EAGR,IAAI;AAAA,IACH,MAAM,SAAkB,KAAK,MAAM,IAAI;AAAA,IAEvC,IAAI,uBAAuB,MAAM,GAAG;AAAA,MACnC,OAAO;AAAA,IACR;AAAA,IAEA,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIF,IAAM,qBAAqB,CAAC,QAAyB,KAAK,UAAU,GAAG;;;AJ7BvE,MAAM,gBAAqC;AAAA,EACzC,cAAc,IAAI;AAAA,EAU1B,OAAO,CAAC,MAAc,gBAAyB;AAAA,IAC9C,MAAM,WAAW,KAAK,YAAY,IAAI,IAAI;AAAA,IAC1C,IAAI,UAAU;AAAA,MACb,OAAO,KAAK,aAAa,UAAU,cAAc;AAAA,IAClD;AAAA,IAEA,MAAM,aAAa,mBAAmB,IAAI;AAAA,IAC1C,MAAM,QAAQ,qBAAqB;AAAA,IAEnC,MAAM,iBAAiB,OAAoB,CAAC,CAAC;AAAA,IAC7C,MAAM,oBAAoB,OAAO,KAAK;AAAA,IACtC,MAAM,cAAc,OAAsB,IAAI;AAAA,IAC9C,MAAM,6BAA6B,OAClC,kBAAkB,IACnB;AAAA,IAEA,MAAM,YAAY,MAAM;AAAA,MACvB,MAAM,WAAW,MAAM,YAAY;AAAA,MACnC,MAAM,SACL,2BAA2B,KAAK,SAAS;AAAA,MAC1C,MAAM,eAAe,SAClB,SAAS,cAAc,IAAI,MAAM,IACjC;AAAA,MACH,eAAe,IAAI,cAAc,YAAY,CAAC,CAAC;AAAA,MAC/C,kBAAkB,IAAI,SAAS,WAAW;AAAA,MAC1C,YAAY,IAAI,SAAS,KAAK;AAAA,MAC9B,IAAI,QAAQ;AAAA,QACX,2BAA2B,IAAI,MAAM;AAAA,MACtC;AAAA;AAAA,IAGD,MAAM,mBAAmB,MAAM,UAAU,SAAS;AAAA,IAElD,MAAM,wBAAwB,WAAW,UACxC,CAAC,QAAyB;AAAA,MACzB,MAAM,SAAS,sBAAsB,GAAG;AAAA,MACxC,IAAI,QAAQ;AAAA,QACX,MAAM,SAAS,MAAM;AAAA,MACtB;AAAA,KAEF;AAAA,IAEA,MAAM,QAKF;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,KAAK,YAAY,IAAI,MAAM,KAAK;AAAA,IAEhC,MAAM,OAAO,CAAC,SAAiB,gBAAiC;AAAA,MAC/D,MAAM,SAAS,2BAA2B,KAAK,WAAW;AAAA,MAC1D,MAAM,QAAQ,WAAW;AAAA,MAEzB,MAAM,SAAS;AAAA,QACd;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,MAAM;AAAA,MACP,CAAC;AAAA,MAED,WAAW,KAAK;AAAA,QACf;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,MAAM;AAAA,MACP,CAAC;AAAA;AAAA,IAGF,MAAM,SAAS,MAAM;AAAA,MACpB,MAAM,SAAS,2BAA2B;AAAA,MAC1C,IAAI,QAAQ;AAAA,QACX,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC;AAAA,QACjC,WAAW,KAAK,EAAE,gBAAgB,QAAQ,MAAM,SAAS,CAAC;AAAA,MAC3D;AAAA;AAAA,IAGD,MAAM,SAAS,CAAC,WAAmB,YAAoB;AAAA,MACtD,MAAM,SAAS,2BAA2B;AAAA,MAC1C,IAAI,QAAQ;AAAA,QACX,WAAW,KAAK;AAAA,UACf;AAAA,UACA,gBAAgB;AAAA,UAChB;AAAA,UACA,MAAM;AAAA,QACP,CAAC;AAAA,MACF;AAAA;AAAA,IAGD,OAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA,OAAO,SAAS,MAAM,YAAY,CAAC;AAAA,MACnC,aAAa,SAAS,MAAM,kBAAkB,CAAC;AAAA,MAC/C,UAAU,SAAS,MAAM,eAAe,CAAC;AAAA,MACzC;AAAA,IACD;AAAA;AAAA,EAGO,YAAY,CACnB,OAIA,gBACC;AAAA,IACD,QAAQ,YAAY,UAAU;AAAA,IAE9B,MAAM,iBAAiB,OAAoB,CAAC,CAAC;AAAA,IAC7C,MAAM,oBAAoB,OAAO,KAAK;AAAA,IACtC,MAAM,cAAc,OAAsB,IAAI;AAAA,IAC9C,MAAM,6BAA6B,OAClC,kBAAkB,IACnB;AAAA,IAEA,MAAM,UAAU,MAAM;AAAA,MACrB,MAAM,WAAW,MAAM,YAAY;AAAA,MACnC,MAAM,SACL,2BAA2B,KAAK,SAAS;AAAA,MAC1C,MAAM,eAAe,SAClB,SAAS,cAAc,IAAI,MAAM,IACjC;AAAA,MACH,eAAe,IAAI,cAAc,YAAY,CAAC,CAAC;AAAA,MAC/C,kBAAkB,IAAI,SAAS,WAAW;AAAA,MAC1C,YAAY,IAAI,SAAS,KAAK;AAAA,MAC9B,IAAI,QAAQ;AAAA,QACX,2BAA2B,IAAI,MAAM;AAAA,MACtC;AAAA,KACA;AAAA,IAED,MAAM,OAAO,CAAC,SAAiB,gBAAiC;AAAA,MAC/D,MAAM,SAAS,2BAA2B,KAAK,WAAW;AAAA,MAC1D,MAAM,QAAQ,WAAW;AAAA,MAEzB,MAAM,SAAS;AAAA,QACd;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,MAAM;AAAA,MACP,CAAC;AAAA,MAED,WAAW,KAAK;AAAA,QACf;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,MAAM;AAAA,MACP,CAAC;AAAA;AAAA,IAGF,MAAM,SAAS,MAAM;AAAA,MACpB,MAAM,SAAS,2BAA2B;AAAA,MAC1C,IAAI,QAAQ;AAAA,QACX,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC;AAAA,QACjC,WAAW,KAAK,EAAE,gBAAgB,QAAQ,MAAM,SAAS,CAAC;AAAA,MAC3D;AAAA;AAAA,IAGD,MAAM,SAAS,CAAC,WAAmB,YAAoB;AAAA,MACtD,MAAM,SAAS,2BAA2B;AAAA,MAC1C,IAAI,QAAQ;AAAA,QACX,WAAW,KAAK;AAAA,UACf;AAAA,UACA,gBAAgB;AAAA,UAChB;AAAA,UACA,MAAM;AAAA,QACP,CAAC;AAAA,MACF;AAAA;AAAA,IAGD,OAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA,OAAO,SAAS,MAAM,YAAY,CAAC;AAAA,MACnC,aAAa,SAAS,MAAM,kBAAkB,CAAC;AAAA,MAC/C,UAAU,SAAS,MAAM,eAAe,CAAC;AAAA,MACzC;AAAA,IACD;AAAA;AAAA,EAGD,WAAW,GAAG;AAAA,IACb,cAAc,UAAU,KAAK,aAAa;AAAA,MACzC,MAAM,sBAAsB;AAAA,MAC5B,MAAM,iBAAiB;AAAA,MACvB,MAAM,WAAW,MAAM;AAAA,IACxB;AAAA,IACA,KAAK,YAAY,MAAM;AAAA;AAEzB;AA7Ma,kBAAN;AAAA,EADN,WAAW,EAAE,YAAY,OAAO,CAAC;AAAA,GACrB;;AKZb,qBAAS,yBAAU;;;ACAnB,qBAAS,yBAAU;;;ACUnB,IAAM,mBAAmB,CAAC,UACzB,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS,IAChD,MAAM,KAAK,IACX;AAEJ,IAAM,mBAAmB,CAAC,UACzB,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,QAAQ;AAE/D,IAAM,oBAAoB,CAAC,QAAiB,UAAmB;AAAA,EAC9D,MAAM,mBAAmB,QAAQ,MAAM,GAAG,EAAE,GAAG,EAAE;AAAA,EACjD,IAAI,oBAAoB,iBAAiB,SAAS,GAAG,GAAG;AAAA,IACvD,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,kBAAkB,OAAO,MAAM,QAAI,EAAE,GAAG,EAAE;AAAA,EAChD,IAAI,mBAAmB,gBAAgB,SAAS,GAAG,GAAG;AAAA,IACrD,OAAO;AAAA,EACR;AAAA,EAEA;AAAA;AAGD,IAAM,oBAAoB,CAAC,aAAuC;AAAA,EACjE,IAAI,CAAC,UAAU;AAAA,IACd;AAAA,EACD;AAAA,EAEA,MAAM,YAAY,iBAAiB,SAAS,SAAS;AAAA,EACrD,IAAI,cAAc,cAAc;AAAA,IAC/B,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,cAAc,WAAW;AAAA,IAC5B,MAAM,OAAO,iBAAiB,SAAS,IAAI;AAAA,IAC3C,OAAO,OAAO,gBAAgB,SAAS;AAAA,EACxC;AAAA,EAEA,MAAM,OACL,iBAAiB,SAAS,IAAI,KAC9B,iBAAiB,SAAS,UAAU,MACnC,OAAO,SAAS,cAAc,WAC5B,SAAS,YAAY,IACrB;AAAA,EACJ,MAAM,SACL,iBAAiB,SAAS,YAAY,MACrC,OAAO,SAAS,gBAAgB,WAC9B,SAAS,cAAc,IACvB;AAAA,EACJ,IAAI,QAAQ,QAAQ;AAAA,IACnB,OAAO,QAAQ,eAAe;AAAA,EAC/B;AAAA,EACA,IAAI,MAAM;AAAA,IACT,OAAO,QAAQ;AAAA,EAChB;AAAA,EAEA,MAAM,QACL,iBAAiB,SAAS,SAAS,MAClC,MAAM,QAAQ,SAAS,UAAU,IAC/B,iBAAiB,SAAS,WAAW,EAAE,IACvC;AAAA,EACJ,IAAI,OAAO;AAAA,IACV,OAAO,SAAS;AAAA,EACjB;AAAA,EAEA,MAAM,QACL,iBAAiB,SAAS,KAAK,KAC/B,iBAAiB,SAAS,WAAW,MACpC,OAAO,SAAS,eAAe,WAC7B,SAAS,aAAa,IACtB;AAAA,EACJ,IAAI,OAAO;AAAA,IACV,OAAO,SAAS;AAAA,EACjB;AAAA,EAEA,MAAM,eACL,iBAAiB,SAAS,gBAAgB,KAC1C,iBAAiB,SAAS,SAAS;AAAA,EACpC,IAAI,cAAc;AAAA,IACjB,OAAO,iBAAiB;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc,iBAAiB,SAAS,WAAW;AAAA,EACzD,IAAI,aAAa;AAAA,IAChB,OAAO,UAAU;AAAA,EAClB;AAAA,EAEA,MAAM,UAAU,iBAAiB,SAAS,OAAO;AAAA,EACjD,IAAI,SAAS;AAAA,IACZ,OAAO,WAAW;AAAA,EACnB;AAAA,EAEA,MAAM,cAAc,MAAM,QAAQ,SAAS,WAAW,IACnD,SAAS,YACR,IAAI,CAAC,UAAU,iBAAiB,KAAK,CAAC,EACtC,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ,IAC7D,CAAC;AAAA,EACJ,MAAM,eACL,iBAAiB,SAAS,YAAY,KAAK,YAAY,GAAG,EAAE;AAAA,EAC7D,IAAI,cAAc;AAAA,IACjB,OAAO,WAAW;AAAA,EACnB;AAAA,EAEA;AAAA;AAGD,IAAM,uBAAuB,CAAC,UAAmB;AAAA,EAChD,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,KAAK,QAAQ,GAAG;AAAA,IACtE;AAAA,EACD;AAAA,EAEA,MAAM,eAAe,KAAK,MAAM,QAAQ,IAAI;AAAA,EAC5C,MAAM,UAAU,KAAK,MAAM,eAAe,EAAE;AAAA,EAC5C,MAAM,UAAU,eAAe;AAAA,EAC/B,MAAM,eAAe,KAAK,MAAM,QAAQ,IAAI;AAAA,EAE5C,OAAO,GAAG,OAAO,OAAO,EAAE,SAAS,GAAG,GAAG,KAAK,OAAO,OAAO,EAAE,SAC7D,GACA,GACD,KAAK,OAAO,YAAY,EAAE,SAAS,GAAG,GAAG;AAAA;AAG1C,IAAM,oBAAoB,CACzB,UACA,QACA,UACI;AAAA,EACJ,IAAI,CAAC,UAAU;AAAA,IACd;AAAA,EACD;AAAA,EAEA,MAAM,OACL,iBAAiB,SAAS,IAAI,KAC9B,iBAAiB,SAAS,UAAU,MACnC,OAAO,SAAS,cAAc,WAC5B,SAAS,YAAY,IACrB;AAAA,EACJ,MAAM,SACL,iBAAiB,SAAS,YAAY,MACrC,OAAO,SAAS,gBAAgB,WAC9B,SAAS,cAAc,IACvB;AAAA,EACJ,IAAI,QAAQ,QAAQ;AAAA,IACnB,OAAO,QAAQ,oBAAgB;AAAA,EAChC;AAAA,EACA,IAAI,MAAM;AAAA,IACT,OAAO,QAAQ;AAAA,EAChB;AAAA,EAEA,MAAM,QACL,iBAAiB,SAAS,SAAS,MAClC,MAAM,QAAQ,SAAS,UAAU,IAC/B,iBAAiB,SAAS,WAAW,EAAE,IACvC;AAAA,EACJ,IAAI,OAAO;AAAA,IACV,OAAO,SAAS;AAAA,EACjB;AAAA,EAEA,MAAM,QACL,iBAAiB,SAAS,KAAK,KAC/B,iBAAiB,SAAS,WAAW,MACpC,OAAO,SAAS,eAAe,WAC7B,SAAS,aAAa,IACtB;AAAA,EACJ,IAAI,OAAO;AAAA,IACV,OAAO,SAAS;AAAA,EACjB;AAAA,EAEA,MAAM,eACL,iBAAiB,SAAS,gBAAgB,KAC1C,iBAAiB,SAAS,SAAS;AAAA,EACpC,IAAI,cAAc;AAAA,IACjB,OAAO,iBAAiB;AAAA,EACzB;AAAA,EAEA,MAAM,YAAY,iBAAiB,SAAS,SAAS;AAAA,EACrD,IAAI,cAAc,cAAc;AAAA,IAC/B,MAAM,iBACL,iBAAiB,SAAS,cAAc,KACxC,kBAAkB,QAAQ,KAAK;AAAA,IAChC,OAAO,iBAAiB,cAAc,mBAAmB;AAAA,EAC1D;AAAA,EAEA,MAAM,aAAa,qBAAqB,SAAS,OAAO;AAAA,EACxD,MAAM,WAAW,qBAAqB,SAAS,KAAK;AAAA,EACpD,IAAI,cAAc,UAAU;AAAA,IAC3B,OAAO,aAAa,gBAAgB;AAAA,EACrC;AAAA,EAEA,IAAI,YAAY;AAAA,IACf,OAAO,aAAa;AAAA,EACrB;AAAA,EAEA,MAAM,cAAc,MAAM,QAAQ,SAAS,WAAW,IACnD,SAAS,YACR,IAAI,CAAC,UAAU,iBAAiB,KAAK,CAAC,EACtC,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ,IAC7D,CAAC;AAAA,EACJ,IAAI,YAAY,SAAS,GAAG;AAAA,IAC3B,OAAO,WAAW,YAAY,KAAK,KAAK;AAAA,EACzC;AAAA,EAEA;AAAA;AAGD,IAAM,uBAAuB,CAAC,UAAmB;AAAA,EAChD,MAAM,YACL,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAC/C,QACA,OAAO,UAAU,WAChB,KAAK,MAAM,KAAK,IAChB,OAAO;AAAA,EACZ,IAAI,CAAC,OAAO,SAAS,SAAS,GAAG;AAAA,IAChC;AAAA,EACD;AAAA,EAEA,OAAO,IAAI,KAAK,SAAS,EAAE,eAAe,SAAS;AAAA,IAClD,WAAW;AAAA,IACX,WAAW;AAAA,EACZ,CAAC;AAAA;AAGF,IAAM,uBAAuB,CAAC,aAAuC;AAAA,EACpE,IAAI,CAAC,UAAU;AAAA,IACd;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,iBAAiB,SAAS,WAAW;AAAA,EACzD,MAAM,OAAO,iBAAiB,SAAS,IAAI;AAAA,EAC3C,MAAM,SACL,qBAAqB,SAAS,MAAM,KACpC,qBAAqB,SAAS,UAAU;AAAA,EACzC,MAAM,UAAU,iBAAiB,SAAS,OAAO;AAAA,EACjD,MAAM,YAAY,iBAAiB,SAAS,SAAS;AAAA,EACrD,MAAM,mBAAmB,iBAAiB,SAAS,gBAAgB;AAAA,EACnE,MAAM,cAAc,iBAAiB,SAAS,WAAW;AAAA,EACzD,MAAM,YAAY,iBAAiB,SAAS,SAAS;AAAA,EACrD,MAAM,gBACL,iBAAiB,SAAS,mBAAmB,KAC7C,iBAAiB,SAAS,aAAa;AAAA,EAExC,MAAM,SAAS;AAAA,IACd,cAAc,OAAO,gBAAgB;AAAA,IACrC,YAAY,OAAO,cAAc;AAAA,IACjC,OAAO,kBAAkB,WACtB,cAAc,cAAc,QAAQ,CAAC,MACrC;AAAA,IACH,YAAY,SAAS,cAAc;AAAA,IACnC,mBAAmB,cAAc,qBAAqB;AAAA,IACtD,cAAc,UAAU,gBAAgB;AAAA,IACxC,UAAU,WAAW,YAAY;AAAA,IACjC,OAAO,UAAU,SAAS;AAAA,IAC1B,SAAS,QAAQ,WAAW;AAAA,EAC7B,EAAE,OAAO,CAAC,UAAU,MAAM,SAAS,CAAC;AAAA,EAEpC,OAAO,OAAO,SAAS,IAAI,OAAO,KAAK,QAAI,IAAI;AAAA;AAGhD,IAAM,mBAAmB,CAAC,WACzB,OAAO,UAAU,OAAO,SAAS,OAAO;AAEzC,IAAM,eAAe,CAAC,MAAc,YAAY,QAAQ;AAAA,EACvD,MAAM,aAAa,KAAK,WAAW,QAAQ,GAAG,EAAE,KAAK;AAAA,EACrD,IAAI,WAAW,UAAU,WAAW;AAAA,IACnC,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,GAAG,WAAW,MAAM,GAAG,KAAK,IAAI,GAAG,YAAY,CAAC,CAAC,EAAE,QAAQ;AAAA;AAGnE,IAAM,yBAAyB,CAC9B,UAKA,sBACI;AAAA,EACJ,IAAI,CAAC,UAAU;AAAA,IACd,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,eAAe,SAAS,cAAc,KAAK,KAAK;AAAA,EACtD,MAAM,gBAAgB,SAAS,eAAe,KAAK,KAAK;AAAA,EACxD,MAAM,iBAAiB,SAAS,gBAAgB,KAAK,KAAK;AAAA,EAC1D,IACC,qBACA,oBAAoB,KACpB,aAAa,SAAS,KACtB,aAAa,SAAS,IACrB;AAAA,IACD,IAAI,qBAAqB,KAAK,gBAAgB;AAAA,MAC7C,OAAO;AAAA,IACR;AAAA,IACA,IAAI,eAAe;AAAA,MAClB,OAAO;AAAA,IACR;AAAA,EACD;AAAA,EAEA,OAAO,gBAAgB,iBAAiB;AAAA;AAGzC,IAAM,8BAA8B,CACnC,SACA,kBACI;AAAA,EACJ,IAAI,QAAQ,WAAW,GAAG;AAAA,IACzB;AAAA,EACD;AAAA,EAEA,MAAM,gBACJ,gBACE,QAAQ,KAAK,CAAC,WAAW,OAAO,YAAY,aAAa,IACzD,cAAc,QAAQ;AAAA,EAC1B,IAAI,CAAC,cAAc;AAAA,IAClB;AAAA,EACD;AAAA,EAEA,MAAM,WAAW,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,CAAC;AAAA,EAC1E,MAAM,iBAAiB,aAAa,YAAY,CAAC;AAAA,EACjD,MAAM,kBAAkB,iBAAiB,eAAe,eAAe;AAAA,EACvE,MAAM,cAAc,iBAAiB,eAAe,WAAW;AAAA,EAC/D,MAAM,iBAAiB,iBAAiB,eAAe,cAAc;AAAA,EACrE,MAAM,iBAAiB,iBACpB,QACC,OACA,CAAC,WACA,iBAAiB,OAAO,UAAU,cAAc,MAChD,cACF,EACC,KAAK,CAAC,MAAM,UAAU;AAAA,IACtB,MAAM,YACL,iBAAiB,KAAK,UAAU,iBAAiB,KACjD,OAAO;AAAA,IACR,MAAM,aACL,iBAAiB,MAAM,UAAU,iBAAiB,KAClD,OAAO;AAAA,IACR,IAAI,cAAc,YAAY;AAAA,MAC7B,OAAO,YAAY;AAAA,IACpB;AAAA,IACA,OAAO,KAAK,QAAQ,cAAc,MAAM,OAAO;AAAA,GAC/C,IACD,CAAC,YAAY;AAAA,EAChB,MAAM,cAAc,CAAC,aACpB,SACE,IAAI,CAAC,YAAY,SAAS,IAAI,OAAO,GAAG,IAAI,EAC5C,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,EACzD,KAAK;AAAA;AAAA,CAAM;AAAA,EACd,MAAM,mBAAmB;AAAA,IACxB;AAAA,IACA,aAAa;AAAA,IACb;AAAA,EACD,EAAE,OACD,CAAC,SAAS,OAAO,WAChB,QAAQ,OAAO,KAAK,OAAO,QAAQ,OAAO,MAAM,KAClD;AAAA,EAEA,OAAO;AAAA,IACN,cAAc,aAAa,aAAa,MAAM,GAAG;AAAA,IACjD,gBAAgB,aACf,eAAe,IAAI,CAAC,WAAW,OAAO,IAAI,EAAE,KAAK;AAAA;AAAA,CAAM,GACvD,GACD;AAAA,IACA,eAAe,aAAa,YAAY,gBAAgB,GAAG,GAAG;AAAA,EAC/D;AAAA;AAGD,IAAM,uCAAuC,CAC5C,cAEA,CAAC,UAAU,OAAO,UAAU,cAAc,UAAU,YAAY,EAC9D,OAAO,CAAC,UAA2B,QAAQ,SAAS,MAAM,SAAS,CAAC,CAAC,EACrE,OACA,CAAC,OAAO,OAAO,WACd,OAAO,UAAU,CAAC,UAAU,UAAU,KAAK,MAAM,KACnD,EACC,KAAK,QAAI;AAEZ,IAAM,yCAAyC,CAC9C,cAEA;AAAA,EACC,UAAU,UAAU,UAAU,SAAS,UAAU;AAAA,EACjD,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AACX,EACE,OAAO,CAAC,UAA2B,QAAQ,SAAS,MAAM,SAAS,CAAC,CAAC,EACrE,OACA,CAAC,OAAO,OAAO,WACd,OAAO,UAAU,CAAC,UAAU,UAAU,KAAK,MAAM,KACnD,EACC,KAAK,QAAI;AAEZ,IAAM,2BAA2B,CAAC,cACjC,UAAU,gBACV,UAAU,gBACV,UAAU,SACV,UAAU,UACV,UAAU;AAEX,IAAM,mCAAmC,CAAC,cACzC;AAAA,EACC,UAAU,UAAU,UAAU,SAAS,UAAU;AAAA,EACjD,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AACX,EACE,OAAO,CAAC,UAA2B,QAAQ,SAAS,MAAM,SAAS,CAAC,CAAC,EACrE,OACA,CAAC,OAAO,OAAO,WACd,OAAO,UAAU,CAAC,UAAU,UAAU,KAAK,MAAM,KACnD,EACC,KAAK,QAAI;AAEZ,IAAM,oCAAoC,CACzC,eACsC;AAAA,EACtC,cAAc,UAAU;AAAA,EACxB,eAAe,qCAAqC,SAAS;AAAA,EAC7D,iBAAiB,uCAAuC,SAAS;AAAA,EACjE,SACC,uBACC,UAAU,UACV,iBAAiB,UAAU,UAAU,iBAAiB,CACvD,KAAK,UAAU;AAAA,EAChB,UAAU,UAAU;AAAA,EACpB,OAAO,UAAU;AAAA,EACjB,cAAc,UAAU;AAAA,EACxB,QAAQ,UAAU;AAAA,EAClB,iBAAiB,UAAU;AAAA,EAC3B,QAAQ,UAAU;AAAA,EAClB,OAAO,UAAU;AAClB;AAEO,IAAM,+BAA+B,CAC3C,cAEA,OAAO,YACN,UAAU,IAAI,CAAC,UAAU,UAAU,CAAC,SAAS,SAAS,QAAQ,CAAC,CAAC,CACjE;AAEM,IAAM,oBAAoB,CAAC,YAAyB;AAAA,EAC1D,MAAM,SAAS,IAAI;AAAA,EAEnB,WAAW,UAAU,SAAS;AAAA,IAC7B,MAAM,MAAM,OAAO;AAAA,IACnB,MAAM,WAAW,OAAO,IAAI,GAAG;AAAA,IAC/B,MAAM,oBACL,aAAa,aAAa,SAAS,SAAS,OAAO;AAAA,IACpD,IAAI;AAAA,MAAmB;AAAA,IAEvB,OAAO,IAAI,KAAK;AAAA,MACf,SAAS,OAAO;AAAA,MAChB,cACC,OAAO,QAAQ,gBACf,kBAAkB,OAAO,QAAQ;AAAA,MAClC,SACC,uBACC,4BAA4B,SAAS,OAAO,OAAO,GACnD,iBAAiB,OAAO,UAAU,iBAAiB,CACpD,KAAK,aAAa,OAAO,IAAI;AAAA,MAC9B,UAAU,4BAA4B,SAAS,OAAO,OAAO;AAAA,MAC7D;AAAA,MACA,OAAO,iBAAiB,MAAM;AAAA,MAC9B,cACC,OAAO,QAAQ,gBACf,kBAAkB,OAAO,UAAU,OAAO,QAAQ,OAAO,KAAK;AAAA,MAC/D,UAAU,OAAO;AAAA,MACjB,iBACC,OAAO,QAAQ,mBACf,qBAAqB,OAAO,QAAQ;AAAA,MACrC,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,MACb,OAAO,OAAO;AAAA,IACf,CAAC;AAAA,EACF;AAAA,EAEA,OAAO,CAAC,GAAG,OAAO,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU;AAAA,IACjD,IAAI,MAAM,UAAU,KAAK,OAAO;AAAA,MAC/B,OAAO,MAAM,QAAQ,KAAK;AAAA,IAC3B;AAAA,IAEA,OAAO,KAAK,MAAM,cAAc,MAAM,KAAK;AAAA,GAC3C;AAAA;AAGK,IAAM,yBAAyB,CACrC,SACA,YACuB;AAAA,EACvB,MAAM,aAAa,4BAA4B,OAAO;AAAA,EACtD,MAAM,eAAe,IAAI,IACxB,WAAW,IAAI,CAAC,cAAc,CAAC,UAAU,QAAQ,SAAS,CAAC,CAC5D;AAAA,EACA,MAAM,QAAoC,CAAC;AAAA,EAC3C,MAAM,6BAA6B,IAAI;AAAA,EACvC,MAAM,kBAAkB;AAAA,EACxB,IAAI,SAAS;AAAA,EAEb,WAAW,SAAS,QAAQ,SAAS,eAAe,GAAG;AAAA,IACtD,MAAM,MAAM,MAAM;AAAA,IAClB,MAAM,WAAW,MAAM,MAAM,IAC3B,MAAM,GAAG,EACT,IAAI,CAAC,UAAU,OAAO,SAAS,MAAM,KAAK,GAAG,EAAE,CAAC,EAChD,OAAO,CAAC,UAAU,OAAO,UAAU,KAAK,KAAK,QAAQ,CAAC;AAAA,IACxD,MAAM,QAAQ,MAAM,SAAS;AAAA,IAC7B,IAAI,QAAQ,QAAQ;AAAA,MACnB,MAAM,KAAK;AAAA,QACV,MAAM,QAAQ,MAAM,QAAQ,KAAK;AAAA,QACjC,MAAM;AAAA,MACP,CAAC;AAAA,IACF;AAAA,IAEA,MAAM,qBAAqB,QACzB,IAAI,CAAC,WAAW,aAAa,IAAI,MAAM,CAAC,EACxC,OAAO,CAAC,cACR,QAAQ,SAAS,CAClB;AAAA,IACD,WAAW,UAAU,SAAS;AAAA,MAC7B,IAAI,CAAC,aAAa,IAAI,MAAM,GAAG;AAAA,QAC9B,2BAA2B,IAAI,MAAM;AAAA,MACtC;AAAA,IACD;AAAA,IACA,MAAM,oBAAoB,QAAQ,OACjC,CAAC,WAAW,CAAC,aAAa,IAAI,MAAM,CACrC;AAAA,IAEA,MAAM,KAAK;AAAA,MACV,kBAAkB;AAAA,MAClB,kBAAkB,mBAAmB,IACpC,iCACD;AAAA,MACA,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,4BAA4B;AAAA,IAC7B,CAAC;AAAA,IACD,SAAS,QAAQ,IAAI;AAAA,EACtB;AAAA,EAEA,IAAI,SAAS,QAAQ,UAAU,MAAM,WAAW,GAAG;AAAA,IAClD,MAAM,KAAK;AAAA,MACV,MAAM,QAAQ,MAAM,MAAM;AAAA,MAC1B,MAAM;AAAA,IACP,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,UAAU;AAAA,EAClE,MAAM,WAA0C,CAAC,eAC9C,eACA,2BAA2B,SAAS,IACnC,aACA,WAAW,SAAS,IACnB,YACA;AAAA,EAEL,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB,uCAAuC,UAAU;AAAA,IACnE,4BAA4B,CAAC,GAAG,0BAA0B,EAAE,KAC3D,CAAC,MAAM,UAAU,OAAO,KACzB;AAAA,EACD;AAAA;AAGM,IAAM,yCAAyC,CACrD,eACuC;AAAA,EACvC,MAAM,SAAS,IAAI;AAAA,EAEnB,WAAW,aAAa,YAAY;AAAA,IACnC,MAAM,MAAM,yBAAyB,SAAS;AAAA,IAC9C,MAAM,WAAW,OAAO,IAAI,GAAG;AAAA,IAC/B,IAAI,CAAC,UAAU;AAAA,MACd,MAAM,WAAW,UAAU,WACxB;AAAA,QACA,cAAc,UAAU,SAAS;AAAA,QACjC,gBAAgB,UAAU,SAAS;AAAA,QACnC,eAAe,UAAU,SAAS;AAAA,MACnC,IACC;AAAA,MACH,OAAO,IAAI,KAAK;AAAA,QACf,UAAU,CAAC,UAAU,OAAO;AAAA,QAC5B,cAAc,UAAU;AAAA,QACxB,OAAO;AAAA,QACP,SACC,uBACC,UACA,iBAAiB,UAAU,UAAU,iBAAiB,CACvD,KACA,UAAU,kBACV,UAAU;AAAA,QACX;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,cAAc,UAAU;AAAA,QACxB,iBAAiB,UAAU;AAAA,QAC3B,kBAAkB,CAAC,UAAU,MAAM;AAAA,QACnC,YAAY,CAAC,SAAS;AAAA,QACtB,SACC,iCAAiC,SAAS,KAC1C,UAAU,SACV,UAAU;AAAA,MACZ,CAAC;AAAA,MACD;AAAA,IACD;AAAA,IAEA,SAAS,SAAS;AAAA,IAClB,IAAI,CAAC,SAAS,SAAS,SAAS,UAAU,OAAO,GAAG;AAAA,MACnD,SAAS,SAAS,KAAK,UAAU,OAAO;AAAA,IACzC;AAAA,IACA,IAAI,CAAC,SAAS,iBAAiB,SAAS,UAAU,MAAM,GAAG;AAAA,MAC1D,SAAS,iBAAiB,KAAK,UAAU,MAAM;AAAA,IAChD;AAAA,IACA,SAAS,WAAW,KAAK,SAAS;AAAA,IAClC,IAAI,CAAC,SAAS,gBAAgB,UAAU,cAAc;AAAA,MACrD,SAAS,eAAe,UAAU;AAAA,IACnC;AAAA,IACA,IAAI,CAAC,SAAS,gBAAgB,UAAU,cAAc;AAAA,MACrD,SAAS,eAAe,UAAU;AAAA,IACnC;AAAA,IACA,IAAI,CAAC,SAAS,mBAAmB,UAAU,iBAAiB;AAAA,MAC3D,SAAS,kBAAkB,UAAU;AAAA,IACtC;AAAA,IACA,IAAI,CAAC,SAAS,YAAY,UAAU,UAAU;AAAA,MAC7C,SAAS,WAAW;AAAA,QACnB,cAAc,UAAU,SAAS;AAAA,QACjC,gBAAgB,UAAU,SAAS;AAAA,QACnC,eAAe,UAAU,SAAS;AAAA,MACnC;AAAA,MACA,SAAS,UAAU,UAAU,SAAS;AAAA,IACvC;AAAA,EACD;AAAA,EAEA,OAAO,CAAC,GAAG,OAAO,OAAO,CAAC,EACxB,IAAI,CAAC,WAAW;AAAA,OACb;AAAA,IACH,kBAAkB,CAAC,GAAG,MAAM,gBAAgB,EAAE,KAC7C,CAAC,MAAM,UAAU,OAAO,KACzB;AAAA,IACA,YAAY,MAAM,WAChB,MAAM,EACN,KAAK,CAAC,MAAM,UAAU,KAAK,SAAS,MAAM,MAAM;AAAA,EACnD,EAAE,EACD,KAAK,CAAC,MAAM,UAAU;AAAA,IACtB,MAAM,YACL,KAAK,iBAAiB,MAAM,OAAO;AAAA,IACpC,MAAM,aACL,MAAM,iBAAiB,MAAM,OAAO;AAAA,IACrC,IAAI,cAAc,YAAY;AAAA,MAC7B,OAAO,YAAY;AAAA,IACpB;AAAA,IACA,OAAO,KAAK,MAAM,cAAc,MAAM,KAAK;AAAA,GAC3C;AAAA;AAGI,IAAM,8BAA8B,CAAC,YAAyB;AAAA,EACpE,MAAM,YAAY,kBAAkB,OAAO;AAAA,EAC3C,MAAM,uBAAuB,6BAA6B,SAAS;AAAA,EAEnE,OAAO,UAAU,IAA2B,CAAC,aAAa;AAAA,IACzD,MAAM,WAAW,4BAA4B,SAAS,SAAS,OAAO;AAAA,IACtE,OAAO;AAAA,MACN,SAAS,SAAS;AAAA,MAClB,cACC,SAAS,gBAAgB,kBAAkB,SAAS,QAAQ;AAAA,MAC7D,SACC,uBACC,UACA,iBAAiB,SAAS,UAAU,iBAAiB,CACtD,KACA,UAAU,gBACV,aAAa,SAAS,IAAI;AAAA,MAC3B;AAAA,MACA,OAAO,SAAS;AAAA,MAChB,cACC,SAAS,gBACT,kBACC,SAAS,UACT,SAAS,QACT,SAAS,KACV;AAAA,MACD,UAAU,SAAS;AAAA,MACnB,QAAQ,qBAAqB,SAAS,YAAY;AAAA,MAClD,iBACC,SAAS,mBACT,qBAAqB,SAAS,QAAQ;AAAA,MACvC,OAAO,SAAS;AAAA,MAChB,QAAQ,SAAS;AAAA,MACjB,MAAM,SAAS;AAAA,MACf,OAAO,SAAS;AAAA,IACjB;AAAA,GACA;AAAA;;;ACznBF,IAAM,sBAAsB,CAAC,WAC5B,OAAO,UAAU,OAAO,SAAS,OAAO;AAEzC,IAAM,oBAAmB,CAAC,WACzB,OAAO,UAAU,OAAO,SAAS,OAAO;AAEzC,IAAM,oBAAmB,CAAC,UACzB,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,QAAQ;AAE/D,IAAM,oBAAmB,CAAC,UACzB,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS,IAChD,MAAM,KAAK,IACX;AAEJ,IAAM,sBAAsB,CAAC,UAA+C;AAAA,EAC3E,IAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AAAA,IACxC,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,YAAY;AAAA,EAElB,OACC,OAAO,UAAU,UAAU,YAC3B,OAAO,UAAU,qBAAqB,YACtC,MAAM,QAAQ,UAAU,cAAc,KACtC,MAAM,QAAQ,UAAU,KAAK;AAAA;AAI/B,IAAM,wBAAuB,CAAC,UAAmB;AAAA,EAChD,MAAM,YACL,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAC/C,QACA,OAAO,UAAU,WAChB,KAAK,MAAM,KAAK,IAChB,OAAO;AAAA,EACZ,IAAI,CAAC,OAAO,SAAS,SAAS,GAAG;AAAA,IAChC;AAAA,EACD;AAAA,EAEA,OAAO,IAAI,KAAK,SAAS,EAAE,eAAe,SAAS;AAAA,IAClD,WAAW;AAAA,IACX,WAAW;AAAA,EACZ,CAAC;AAAA;AAGF,IAAM,sBAAsB,CAAC,UAA2B;AAAA,EACvD,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AAAA,IAC5D,OAAO,OAAO,KAAK;AAAA,EACpB;AAAA,EACA,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACzB,OAAO,MAAM,KAAK,IAAI;AAAA,EACvB;AAAA,EACA,IAAI,SAAS,OAAO,UAAU,UAAU;AAAA,IACvC,OAAO,KAAK,UAAU,KAAK;AAAA,EAC5B;AAAA,EACA,OAAO;AAAA;AAGD,IAAM,qCAAqC,CACjD,UACmC;AAAA,EACnC,IAAI,CAAC,OAAO;AAAA,IACX,OAAO;AAAA,MACN,SAAS,CAAC;AAAA,MACV,OAAO,CAAC;AAAA,MACR,OAAO,CAAC;AAAA,IACT;AAAA,EACD;AAAA,EAEA,MAAM,QAA4B;AAAA,IACjC,EAAE,OAAO,QAAQ,OAAO,MAAM,KAAK;AAAA,IACnC,EAAE,OAAO,iBAAiB,OAAO,OAAO,MAAM,aAAa,KAAK,EAAE;AAAA,IAClE;AAAA,MACC,OAAO;AAAA,MACP,OAAO,OAAO,MAAM,aAAa,MAAM;AAAA,IACxC;AAAA,IACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,OAAO,MAAM,aAAa,OAAO;AAAA,IACzC;AAAA,EACD;AAAA,EACA,MAAM,UAA8B;AAAA,IACnC,EAAE,OAAO,qBAAqB,OAAO,MAAM,iBAAiB;AAAA,IAC5D;AAAA,MACC,OAAO;AAAA,MACP,OACC,MAAM,eAAe,SAAS,IAC3B,MAAM,eAAe,KAAK,QAAI,IAC9B;AAAA,IACL;AAAA,IACA,EAAE,OAAO,kBAAkB,OAAO,OAAO,MAAM,aAAa,EAAE;AAAA,IAC9D,EAAE,OAAO,gBAAgB,OAAO,OAAO,MAAM,WAAW,EAAE;AAAA,EAC3D;AAAA,EACA,MAAM,QAAQ,MAAM,MAAM,IAAI,CAAC,UAAU;AAAA,IACxC,OAAO,KAAK;AAAA,IACZ,OAAO,KAAK;AAAA,IACZ,MAAM;AAAA,MACL,EAAE,OAAO,SAAS,OAAO,KAAK,MAAM;AAAA,MACpC,GAAI,OAAO,KAAK,UAAU,WACvB,CAAC,EAAE,OAAO,SAAS,OAAO,OAAO,KAAK,KAAK,EAAE,CAAC,IAC9C,CAAC;AAAA,MACJ,GAAI,OAAO,KAAK,eAAe,WAC5B,CAAC,EAAE,OAAO,cAAc,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC,IACxD,CAAC;AAAA,MACJ,GAAG,OAAO,QAAQ,KAAK,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,YAAY;AAAA,QAC7D,OAAO;AAAA,QACP,OAAO,oBAAoB,KAAK;AAAA,MACjC,EAAE;AAAA,IACH;AAAA,IACA,OAAO,KAAK;AAAA,EACb,EAAE;AAAA,EAEF,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA;AAGD,IAAM,oBAAoB,CAAC,WAC1B,UAAU,OAAO,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI;AAEnD,IAAM,oBAAoB,CAAC,YAAqC;AAAA,EAC/D,IAAI,CAAC,SAAS;AAAA,IACb,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,SAAS,OAAO,QAAQ,OAAO;AAAA,EACrC,OAAO,OAAO,SAAS,IACpB,OAAO,IAAI,EAAE,KAAK,WAAW,GAAG,OAAO,OAAO,EAAE,KAAK,QAAI,IACzD;AAAA;AAGJ,IAAM,sBAAsB,CAAC,UAAmB;AAAA,EAC/C,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,GAAG;AAAA,IACzD,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,QAAQ,MAAM;AAAA,IACjB,OAAO,GAAG;AAAA,EACX;AAAA,EAEA,IAAI,QAAQ,OAAO;AAAA,IAClB,OAAO,IAAI,QAAQ,MAAM,QAAQ,SAAS,MAAQ,IAAI,CAAC;AAAA,EACxD;AAAA,EAEA,IAAI,QAAQ,SAAS;AAAA,IACpB,OAAO,IAAI,QAAQ,OAAO,QAAQ,SAAS,SAAS,IAAI,CAAC;AAAA,EAC1D;AAAA,EAEA,OAAO,IAAI,QAAQ,SAAS,QAAQ,SAAS,WAAW,IAAI,CAAC;AAAA;AAG9D,IAAM,kBAAkB,CAAC,UACxB,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAC/C,IAAI,KAAK,KAAK,EAAE,eAAe,OAAO,IACtC;AAEJ,IAAM,iBAAiB,CAAC,UAAmB;AAAA,EAC1C,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,GAAG;AAAA,IACzD,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,QAAQ,MAAM;AAAA,IACjB,OAAO,GAAG,KAAK,MAAM,KAAK;AAAA,EAC3B;AAAA,EAEA,IAAI,QAAQ,OAAO;AAAA,IAClB,OAAO,IAAI,QAAQ,MAAM,QAAQ,SAAS,MAAQ,IAAI,CAAC;AAAA,EACxD;AAAA,EAEA,IAAI,QAAQ,SAAS;AAAA,IACpB,OAAO,IAAI,QAAQ,OAAO,QAAQ,SAAS,SAAS,IAAI,CAAC;AAAA,EAC1D;AAAA,EAEA,IAAI,QAAQ,UAAU;AAAA,IACrB,OAAO,IAAI,QAAQ,SAAS,QAAQ,SAAS,WAAW,IAAI,CAAC;AAAA,EAC9D;AAAA,EAEA,OAAO,IAAI,QAAQ,UAAU,QAAQ,SAAS,YAAY,IAAI,CAAC;AAAA;AAGhE,IAAM,6BAA6B,CAAC,YAAmC;AAAA,EACtE,MAAM,SAAS,CAAC,GAAG,OAAO,EACxB,OACA,CAAC,WACA,OAAO,OAAO,yBAAyB,YACvC,OAAO,OAAO,iBAAiB,QACjC,EACC,KACA,CAAC,MAAM,WACL,MAAM,wBAAwB,MAAM,gBAAgB,MACpD,KAAK,wBAAwB,KAAK,gBAAgB,EACrD,EAAE;AAAA,EAEH,IAAI,CAAC,QAAQ;AAAA,IACZ,OAAO;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,IACR;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,MACN,OAAO;AAAA,MACP,OAAO,OAAO,kBAAkB,WAC7B,GAAG,OAAO,uBACV;AAAA,MACH,OAAO,OAAO,eAAe,WAC1B,GAAG,OAAO,sBACV;AAAA,MACH,OAAO,OAAO,uBAAuB,WAClC,oBAAoB,OAAO,kBAAkB,IAC7C;AAAA,MACH,OAAO,OAAO,yBAAyB,WACpC,gBAAgB,OAAO,oBAAoB,IAC3C,OAAO,OAAO,iBAAiB,WAC9B,gBAAgB,OAAO,YAAY,IACnC;AAAA,IACL,EACE,OAAO,OAAO,EACd,KAAK,QAAI;AAAA,EACZ;AAAA;AAGD,IAAM,yBAAyB,CAC9B,UACI,MAAM,WAAW,KAAK,GAAG;AAE9B,IAAM,wBAAwB,CAAC,UAI9B,OAAO,MAAM,cAAc,WACxB,oBAAoB,MAAM,SAAS,IACnC,gBAAgB,MAAM,SAAS;AAE5B,IAAM,+BAA+B,CAC3C,SAC8B;AAAA,EAC9B,IAAI,IAAI;AAAA,EACR,QAAQ,IAAI;AAAA,EACZ,QAAQ,IAAI;AAAA,EACZ,SAAS;AAAA,IACR,IAAI,OAAO,YAAY;AAAA,IACvB,uBAAuB,IAAI,MAAM;AAAA,IACjC,IAAI;AAAA,IACJ,sBAAsB,GAAG;AAAA,EAC1B,EACE,OAAO,OAAO,EACd,KAAK,QAAI;AAAA,EACX,MAAM;AAAA,IACL,EAAE,OAAO,UAAU,OAAO,uBAAuB,IAAI,MAAM,EAAE;AAAA,IAC7D,EAAE,OAAO,UAAU,OAAO,IAAI,OAAO;AAAA,IACrC,GAAI,IAAI,SAAS,CAAC,EAAE,OAAO,UAAU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;AAAA,IAC7D,EAAE,OAAO,UAAU,OAAO,sBAAsB,GAAG,EAAE;AAAA,IACrD,GAAI,IAAI,QAAQ,CAAC,EAAE,OAAO,SAAS,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC;AAAA,EAC3D;AACD;AAEO,IAAM,gCAAgC,CAC5C,UAEC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,IAAI,4BAA4B;AAEnD,IAAM,kCAAkC,CAC9C,YACiC;AAAA,EACjC,IAAI,OAAO;AAAA,EACX,QAAQ,OAAO;AAAA,EACf,QAAQ,OAAO;AAAA,EACf,SAAS;AAAA,IACR,OAAO,OAAO,YAAY;AAAA,IAC1B,uBAAuB,OAAO,MAAM;AAAA,IACpC,OAAO,cAAc,OAAO;AAAA,IAC5B,sBAAsB,MAAM;AAAA,EAC7B,EACE,OAAO,OAAO,EACd,KAAK,QAAI;AAAA,EACX,MAAM;AAAA,IACL,EAAE,OAAO,UAAU,OAAO,uBAAuB,OAAO,MAAM,EAAE;AAAA,IAChE,EAAE,OAAO,UAAU,OAAO,OAAO,OAAO;AAAA,IACxC,GAAI,OAAO,aACR,CAAC,EAAE,OAAO,YAAY,OAAO,OAAO,WAAW,CAAC,IAChD,OAAO,SACN,CAAC,EAAE,OAAO,UAAU,OAAO,OAAO,OAAO,CAAC,IAC1C,CAAC;AAAA,IACL,EAAE,OAAO,UAAU,OAAO,sBAAsB,MAAM,EAAE;AAAA,IACxD,GAAI,OAAO,QAAQ,CAAC,EAAE,OAAO,SAAS,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC;AAAA,EACjE;AACD;AAEO,IAAM,mCAAmC,CAC/C,aAEC,WAAW,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,IAAI,+BAA+B;AAEhE,IAAM,qCAAqC,CAC1C,WACoC;AAAA,EACpC,IAAI,CAAC,MAAM,QAAQ,OAAO,UAAU,UAAU,GAAG;AAAA,IAChD,OAAO,CAAC;AAAA,EACT;AAAA,EAEA,OAAQ,OAAO,SAAS,WACtB,MAAM,GAAG,CAAC,EACV,IAAI,CAAC,OAAO,UAAU;AAAA,IACtB,MAAM,UACL,OAAO,MAAM,YAAY,WAAW,MAAM,UAAU;AAAA,IACrD,MAAM,SACL,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS;AAAA,IACnD,MAAM,aACL,OAAO,MAAM,eAAe,WACzB,gBAAgB,MAAM,UAAU,IAChC;AAAA,IACJ,MAAM,WACL,OAAO,MAAM,eAAe,WACzB,oBAAoB,MAAM,UAAU,IACpC;AAAA,IACJ,MAAM,OACL,OAAO,MAAM,kBAAkB,WAC5B,GAAG,MAAM,uBACT;AAAA,IACJ,MAAM,SACL,OAAO,MAAM,eAAe,WACzB,GAAG,MAAM,sBACT;AAAA,IACJ,MAAM,QACL,OAAO,MAAM,UAAU,YAAY,MAAM,MAAM,SAAS,IACrD,MAAM,QACN;AAAA,IAEJ,OAAO;AAAA,MACN,OAAO,OAAO,QAAQ;AAAA,MACtB;AAAA,MACA,SAAS,GAAG,gBAAY,eAAY,aAAU,eAAY,iBAAc;AAAA,MACxE,MAAM;AAAA,QACL,EAAE,OAAO,WAAW,OAAO,QAAQ;AAAA,QACnC,EAAE,OAAO,UAAU,OAAO,OAAO;AAAA,QACjC,EAAE,OAAO,UAAU,OAAO,GAAG,aAAS,SAAS;AAAA,QAC/C,EAAE,OAAO,YAAY,OAAO,SAAS;AAAA,QACrC,EAAE,OAAO,YAAY,OAAO,WAAW;AAAA,QACvC,GAAI,QAAQ,CAAC,EAAE,OAAO,SAAS,OAAO,MAAM,CAAC,IAAI,CAAC;AAAA,MACnD;AAAA,IACD;AAAA,GACA;AAAA;AAGI,IAAM,iCAAiC,CAC7C,WAC+B;AAAA,EAC/B,MAAM,WACL,OAAO,OAAO,UAAU,aAAa,WAClC,OAAO,SAAS,WAChB;AAAA,EACJ,MAAM,cACL,OAAO,OAAO,UAAU,gBAAgB,WACrC,OAAO,SAAS,cAChB;AAAA,EACJ,MAAM,WACL,OAAO,OAAO,UAAU,aAAa,WAClC,OAAO,SAAS,WAChB;AAAA,EACJ,MAAM,cACL,OAAO,OAAO,UAAU,gBAAgB,WACrC,OAAO,SAAS,cAChB;AAAA,EACJ,MAAM,YACL,OAAO,OAAO,UAAU,cAAc,WACnC,OAAO,SAAS,YAChB;AAAA,EAEJ,OAAO;AAAA,IACN,IAAI,OAAO;AAAA,IACX,OAAO,OAAO;AAAA,IACd,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO;AAAA,IACf,SAAS;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO,OAAO,kBAAkB,WAC7B,GAAG,OAAO,uBACV;AAAA,MACH,OAAO,OAAO,eAAe,WAC1B,GAAG,OAAO,sBACV;AAAA,MACH,OAAO,OAAO,uBAAuB,WAClC,oBAAoB,OAAO,kBAAkB,IAC7C;AAAA,MACH,OAAO,OAAO,yBAAyB,WACpC,gBAAgB,gBAAgB,OAAO,oBAAoB,MAC3D,OAAO,OAAO,iBAAiB,WAC9B,aAAa,gBAAgB,OAAO,YAAY,MAChD;AAAA,IACL,EACE,OAAO,OAAO,EACd,KAAK,QAAI;AAAA,IACX,MAAM;AAAA,MACL,GAAI,OAAO,SACR,CAAC,EAAE,OAAO,UAAU,OAAO,OAAO,OAAO,CAAC,IAC1C,CAAC;AAAA,MACJ,GAAI,WAAW,CAAC,EAAE,OAAO,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC;AAAA,MAC3D,GAAI,cACD,CAAC,EAAE,OAAO,gBAAgB,OAAO,YAAY,CAAC,IAC9C,CAAC;AAAA,MACJ,GAAI,WAAW,CAAC,EAAE,OAAO,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC;AAAA,MAC3D,GAAI,cACD,CAAC,EAAE,OAAO,gBAAgB,OAAO,YAAY,CAAC,IAC9C,CAAC;AAAA,MACJ,GAAI,OAAO,OAAO,yBAAyB,WACxC;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,gBAAgB,OAAO,oBAAoB;AAAA,QACnD;AAAA,MACD,IACC,CAAC;AAAA,MACJ,GAAI,OAAO,OAAO,gBAAgB,WAC/B;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,gBAAgB,OAAO,WAAW;AAAA,QAC1C;AAAA,MACD,IACC,CAAC;AAAA,MACJ,GAAI,OAAO,YACR,CAAC,EAAE,OAAO,cAAc,OAAO,OAAO,UAAU,CAAC,IACjD,CAAC;AAAA,IACL;AAAA,IACA,MAAM;AAAA,MACL;AAAA,MACA,cAAc,QAAQ,gBAAgB;AAAA,MACtC;AAAA,IACD,EAAE,OAAO,CAAC,UAA2B,QAAQ,KAAK,CAAC;AAAA,IACnD,iBAAiB,OAAO,eAAe;AAAA,IACvC,MAAM,mCAAmC,MAAM;AAAA,EAChD;AAAA;AAGM,IAAM,kCAAkC,CAC9C,aAEC,WAAW,CAAC,GAAG,IAAI,8BAA8B;AAE5C,IAAM,gCAAgC,CAC5C,cAC8B;AAAA,EAC9B,IAAI,CAAC,WAAW;AAAA,IACf,OAAO;AAAA,MACN,UAAU;AAAA,QACT;AAAA,UACC,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,UAAU;AAAA,MACT;AAAA,QACC,OAAO;AAAA,QACP,OAAO,UAAU,qBACb,UAAU,gBAAgB,6BAC3B;AAAA,QACH,SAAS,UAAU,qBAChB,UAAU,QACT,0BAA0B,UAAU,gBAAgB,sDAAsD,UAAU,WACpH,0BAA0B,UAAU,gBAAgB,qCACrD;AAAA,MACJ;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,UAAU,sBACd,UAAU,mBACX,kCACE,uBACA,eACD;AAAA,QACH,SAAS,UAAU,sBAChB,UAAU,mBACX,kCACE,kJACC,UAAU,kBACZ,gCACA;AAAA,MACJ;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,UAAU,qBACd,mBACA;AAAA,QACH,SAAS,UAAU,yBAChB,8BACA;AAAA,MACJ;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,UAAU,uBACd,GAAG,UAAU,eAAe,sBAC5B;AAAA,QACH,SAAS,UAAU,uBAChB,0BAA0B,kBAAkB,UAAU,cAAc,MACpE;AAAA,QACH,MACC,UAAU,eAAe,SAAS,IAC/B,UAAU,iBACV,CAAC,0BAA0B;AAAA,MAChC;AAAA,IACD;AAAA,EACD;AAAA;AAGM,IAAM,mCAAmC,CAC/C,WACiC;AAAA,EACjC,IAAI,CAAC,QAAQ;AAAA,IACZ,OAAO;AAAA,MACN,UAAU;AAAA,QACT;AAAA,UACC,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,UAAU;AAAA,MACT;AAAA,QACC,OAAO;AAAA,QACP,OAAO,YAAY,kBAAkB,OAAO,gBAAgB;AAAA,QAC5D,SAAS,UAAU,kBAAkB,OAAO,cAAc;AAAA,QAC1D,MAAM;AAAA,UACL;AAAA,YACC,OAAO;AAAA,YACP,OAAO,OAAO,yBAAyB,QAAQ,CAAC;AAAA,UACjD;AAAA,QACD;AAAA,MACD;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,GAAG,OAAO,yBAAyB,QAAQ,CAAC;AAAA,QACnD,SAAS,cAAc,OAAO,oCAAgC,OAAO,+BAA4B,OAAO;AAAA,QACxG,MAAM;AAAA,UACL;AAAA,YACC,OAAO;AAAA,YACP,OAAO,OAAO,OAAO,sBAAsB;AAAA,UAC5C;AAAA,UACA;AAAA,YACC,OAAO;AAAA,YACP,OAAO,OAAO,OAAO,qBAAqB;AAAA,UAC3C;AAAA,UACA;AAAA,YACC,OAAO;AAAA,YACP,OAAO,OAAO,OAAO,wBAAwB;AAAA,UAC9C;AAAA,QACD;AAAA,MACD;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,GAAG,OAAO,eAAe;AAAA,QAChC,SAAS,mBAAmB,eAAe,OAAO,YAAY;AAAA,QAC9D,MAAM;AAAA,UACL;AAAA,YACC,OAAO;AAAA,YACP,OAAO,eAAe,OAAO,mBAAmB;AAAA,UACjD;AAAA,UACA;AAAA,YACC,OAAO;AAAA,YACP,OAAO,eAAe,OAAO,mBAAmB;AAAA,UACjD;AAAA,QACD;AAAA,MACD;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,GAAG,OAAO,gCAA4B,OAAO;AAAA,QACpD,SAAS,qBAAqB,OAAO,sBAAsB,6BAAyB,OAAO,0BAA0B;AAAA,QACrH,MAAM;AAAA,UACL;AAAA,YACC,OAAO;AAAA,YACP,OAAO,kBAAkB,OAAO,mBAAmB;AAAA,UACpD;AAAA,UACA;AAAA,YACC,OAAO;AAAA,YACP,OAAO,kBAAkB,OAAO,mBAAmB;AAAA,UACpD;AAAA,UACA;AAAA,YACC,OAAO;AAAA,YACP,OAAO,kBAAkB,OAAO,qBAAqB;AAAA,UACtD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA;AAGM,IAAM,mCAAmC,CAC/C,YACiC;AAAA,EACjC,MAAM,UAAU,WAAW,CAAC;AAAA,EAC5B,IAAI,QAAQ,WAAW,GAAG;AAAA,IACzB,OAAO;AAAA,MACN,MAAM;AAAA,QACL,EAAE,OAAO,2BAA2B,OAAO,IAAI;AAAA,QAC/C;AAAA,UACC,OAAO;AAAA,UACP,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MACA,UAAU;AAAA,QACT;AAAA,UACC,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SACC;AAAA,QACF;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,gBAAgB,CAAC,WACtB,QAAQ,OAAO,CAAC,WAAW,OAAO,WAAW,MAAM,EAAE;AAAA,EAEtD,OAAO;AAAA,IACN,MAAM;AAAA,MACL,EAAE,OAAO,2BAA2B,OAAO,OAAO,QAAQ,MAAM,EAAE;AAAA,MAClE,EAAE,OAAO,aAAa,OAAO,OAAO,cAAc,WAAW,CAAC,EAAE;AAAA,MAChE,EAAE,OAAO,WAAW,OAAO,OAAO,cAAc,SAAS,CAAC,EAAE;AAAA,MAC5D;AAAA,QACC,OAAO;AAAA,QACP,OAAO,OAAO,cAAc,QAAQ,CAAC;AAAA,MACtC;AAAA,MACA,2BAA2B,OAAO;AAAA,IACnC;AAAA,IACA,UAAU;AAAA,MACT;AAAA,QACC,OAAO;AAAA,QACP,OAAO,GAAG,QAAQ;AAAA,QAClB,SAAS,GAAG,cAAc,WAAW,oBAAgB,cAAc,SAAS,kBAAe,cAAc,QAAQ;AAAA,MAClH;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,2BAA2B,OAAO,EAAE;AAAA,QAC3C,SAAS;AAAA,MACV;AAAA,IACD;AAAA,EACD;AAAA;AAGD,IAAM,wBAAuB,CAAC,UAAmB;AAAA,EAChD,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,KAAK,QAAQ,GAAG;AAAA,IACtE;AAAA,EACD;AAAA,EAEA,MAAM,eAAe,KAAK,MAAM,QAAQ,IAAI;AAAA,EAC5C,MAAM,UAAU,KAAK,MAAM,eAAe,EAAE;AAAA,EAC5C,MAAM,UAAU,eAAe;AAAA,EAC/B,MAAM,eAAe,KAAK,MAAM,QAAQ,IAAI;AAAA,EAE5C,OAAO,GAAG,OAAO,OAAO,EAAE,SAAS,GAAG,GAAG,KAAK,OAAO,OAAO,EAAE,SAC7D,GACA,GACD,KAAK,OAAO,YAAY,EAAE,SAAS,GAAG,GAAG;AAAA;AAG1C,IAAM,qBAAoB,CAAC,QAAiB,UAAmB;AAAA,EAC9D,MAAM,mBAAmB,QAAQ,MAAM,GAAG,EAAE,GAAG,EAAE;AAAA,EACjD,IAAI,oBAAoB,iBAAiB,SAAS,GAAG,GAAG;AAAA,IACvD,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,kBAAkB,OAAO,MAAM,QAAI,EAAE,GAAG,EAAE;AAAA,EAChD,IAAI,mBAAmB,gBAAgB,SAAS,GAAG,GAAG;AAAA,IACrD,OAAO;AAAA,EACR;AAAA,EAEA;AAAA;AAGD,IAAM,qBAAoB,CAAC,aAAuC;AAAA,EACjE,IAAI,CAAC,UAAU;AAAA,IACd;AAAA,EACD;AAAA,EAEA,MAAM,YAAY,kBAAiB,SAAS,SAAS;AAAA,EACrD,IAAI,cAAc,cAAc;AAAA,IAC/B,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,cAAc,WAAW;AAAA,IAC5B,MAAM,OAAO,kBAAiB,SAAS,IAAI;AAAA,IAC3C,OAAO,OAAO,gBAAgB,SAAS;AAAA,EACxC;AAAA,EAEA,MAAM,OACL,kBAAiB,SAAS,IAAI,KAC9B,kBAAiB,SAAS,UAAU,MACnC,OAAO,SAAS,cAAc,WAC5B,SAAS,YAAY,IACrB;AAAA,EACJ,MAAM,SACL,kBAAiB,SAAS,YAAY,MACrC,OAAO,SAAS,gBAAgB,WAC9B,SAAS,cAAc,IACvB;AAAA,EACJ,IAAI,QAAQ,QAAQ;AAAA,IACnB,OAAO,QAAQ,eAAe;AAAA,EAC/B;AAAA,EACA,IAAI,MAAM;AAAA,IACT,OAAO,QAAQ;AAAA,EAChB;AAAA,EAEA,MAAM,QACL,kBAAiB,SAAS,SAAS,MAClC,MAAM,QAAQ,SAAS,UAAU,IAC/B,kBAAiB,SAAS,WAAW,EAAE,IACvC;AAAA,EACJ,IAAI,OAAO;AAAA,IACV,OAAO,SAAS;AAAA,EACjB;AAAA,EAEA,MAAM,QACL,kBAAiB,SAAS,KAAK,KAC/B,kBAAiB,SAAS,WAAW,MACpC,OAAO,SAAS,eAAe,WAC7B,SAAS,aAAa,IACtB;AAAA,EACJ,IAAI,OAAO;AAAA,IACV,OAAO,SAAS;AAAA,EACjB;AAAA,EAEA,MAAM,eACL,kBAAiB,SAAS,gBAAgB,KAC1C,kBAAiB,SAAS,SAAS;AAAA,EACpC,IAAI,cAAc;AAAA,IACjB,OAAO,iBAAiB;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc,kBAAiB,SAAS,WAAW;AAAA,EACzD,IAAI,aAAa;AAAA,IAChB,OAAO,UAAU;AAAA,EAClB;AAAA,EAEA,MAAM,UAAU,kBAAiB,SAAS,OAAO;AAAA,EACjD,IAAI,SAAS;AAAA,IACZ,OAAO,WAAW;AAAA,EACnB;AAAA,EAEA,MAAM,cAAc,MAAM,QAAQ,SAAS,WAAW,IACnD,SAAS,YACR,IAAI,CAAC,UAAU,kBAAiB,KAAK,CAAC,EACtC,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ,IAC7D,CAAC;AAAA,EACJ,MAAM,eACL,kBAAiB,SAAS,YAAY,KAAK,YAAY,GAAG,EAAE;AAAA,EAC7D,IAAI,cAAc;AAAA,IACjB,OAAO,WAAW;AAAA,EACnB;AAAA,EAEA;AAAA;AAGD,IAAM,qBAAoB,CACzB,UACA,QACA,UACI;AAAA,EACJ,IAAI,CAAC,UAAU;AAAA,IACd;AAAA,EACD;AAAA,EAEA,MAAM,OACL,kBAAiB,SAAS,IAAI,KAC9B,kBAAiB,SAAS,UAAU,MACnC,OAAO,SAAS,cAAc,WAC5B,SAAS,YAAY,IACrB;AAAA,EACJ,MAAM,SACL,kBAAiB,SAAS,YAAY,MACrC,OAAO,SAAS,gBAAgB,WAC9B,SAAS,cAAc,IACvB;AAAA,EACJ,IAAI,QAAQ,QAAQ;AAAA,IACnB,OAAO,QAAQ,oBAAgB;AAAA,EAChC;AAAA,EACA,IAAI,MAAM;AAAA,IACT,OAAO,QAAQ;AAAA,EAChB;AAAA,EAEA,MAAM,QACL,kBAAiB,SAAS,SAAS,MAClC,MAAM,QAAQ,SAAS,UAAU,IAC/B,kBAAiB,SAAS,WAAW,EAAE,IACvC;AAAA,EACJ,IAAI,OAAO;AAAA,IACV,OAAO,SAAS;AAAA,EACjB;AAAA,EAEA,MAAM,QACL,kBAAiB,SAAS,KAAK,KAC/B,kBAAiB,SAAS,WAAW,MACpC,OAAO,SAAS,eAAe,WAC7B,SAAS,aAAa,IACtB;AAAA,EACJ,IAAI,OAAO;AAAA,IACV,OAAO,SAAS;AAAA,EACjB;AAAA,EAEA,MAAM,eACL,kBAAiB,SAAS,gBAAgB,KAC1C,kBAAiB,SAAS,SAAS;AAAA,EACpC,IAAI,cAAc;AAAA,IACjB,OAAO,iBAAiB;AAAA,EACzB;AAAA,EAEA,MAAM,YAAY,kBAAiB,SAAS,SAAS;AAAA,EACrD,IAAI,cAAc,cAAc;AAAA,IAC/B,MAAM,iBACL,kBAAiB,SAAS,cAAc,KACxC,mBAAkB,QAAQ,KAAK;AAAA,IAChC,OAAO,iBAAiB,cAAc,mBAAmB;AAAA,EAC1D;AAAA,EAEA,MAAM,aAAa,sBAAqB,SAAS,OAAO;AAAA,EACxD,MAAM,WAAW,sBAAqB,SAAS,KAAK;AAAA,EACpD,IAAI,cAAc,UAAU;AAAA,IAC3B,OAAO,aAAa,gBAAgB;AAAA,EACrC;AAAA,EAEA,IAAI,YAAY;AAAA,IACf,OAAO,aAAa;AAAA,EACrB;AAAA,EAEA,MAAM,cAAc,MAAM,QAAQ,SAAS,WAAW,IACnD,SAAS,YACR,IAAI,CAAC,UAAU,kBAAiB,KAAK,CAAC,EACtC,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ,IAC7D,CAAC;AAAA,EACJ,IAAI,YAAY,SAAS,GAAG;AAAA,IAC3B,OAAO,WAAW,YAAY,KAAK,KAAK;AAAA,EACzC;AAAA,EAEA;AAAA;AAGD,IAAM,wBAAuB,CAAC,aAAuC;AAAA,EACpE,IAAI,CAAC,UAAU;AAAA,IACd;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,kBAAiB,SAAS,WAAW;AAAA,EACzD,MAAM,OAAO,kBAAiB,SAAS,IAAI;AAAA,EAC3C,MAAM,SACL,sBAAqB,SAAS,MAAM,KACpC,sBAAqB,SAAS,UAAU;AAAA,EACzC,MAAM,UAAU,kBAAiB,SAAS,OAAO;AAAA,EACjD,MAAM,YAAY,kBAAiB,SAAS,SAAS;AAAA,EACrD,MAAM,mBAAmB,kBAAiB,SAAS,gBAAgB;AAAA,EACnE,MAAM,cAAc,kBAAiB,SAAS,WAAW;AAAA,EACzD,MAAM,YAAY,kBAAiB,SAAS,SAAS;AAAA,EACrD,MAAM,gBACL,kBAAiB,SAAS,mBAAmB,KAC7C,kBAAiB,SAAS,aAAa;AAAA,EAExC,MAAM,SAAS;AAAA,IACd,cAAc,OAAO,gBAAgB;AAAA,IACrC,YAAY,OAAO,cAAc;AAAA,IACjC,OAAO,kBAAkB,WACtB,cAAc,cAAc,QAAQ,CAAC,MACrC;AAAA,IACH,YAAY,SAAS,cAAc;AAAA,IACnC,mBAAmB,cAAc,qBAAqB;AAAA,IACtD,cAAc,UAAU,gBAAgB;AAAA,IACxC,UAAU,WAAW,YAAY;AAAA,IACjC,OAAO,UAAU,SAAS;AAAA,IAC1B,SAAS,QAAQ,WAAW;AAAA,EAC7B,EAAE,OAAO,CAAC,UAAU,MAAM,SAAS,CAAC;AAAA,EAEpC,OAAO,OAAO,SAAS,IAAI,OAAO,KAAK,QAAI,IAAI;AAAA;AAGzC,IAAM,uBAAuB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,MAKkC;AAAA,EAClC,MAAM,eAAe,mBAAkB,QAAQ;AAAA,EAC/C,MAAM,eAAe,mBAAkB,UAAU,QAAQ,KAAK;AAAA,EAC9D,MAAM,kBAAkB,sBAAqB,QAAQ;AAAA,EAErD,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,iBAAiB;AAAA,IACvD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA;AAGM,IAAM,yBAAyB,CACrC,aACmC;AAAA,EACnC,IAAI,CAAC,UAAU;AAAA,IACd;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,MAAM,QAAQ,SAAS,WAAW,IACnD,SAAS,YAAY,OACrB,CAAC,UACA,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS,CACrD,IACC;AAAA,EACH,MAAM,cACL,SAAS,gBAAgB,sBACzB,SAAS,gBAAgB,kBACzB,SAAS,gBAAgB,oBACzB,SAAS,gBAAgB,sBACzB,SAAS,gBAAgB,uBACtB,SAAS,cACT;AAAA,EACJ,MAAM,UAAqD;AAAA,IAC1D,OAAO,kBAAiB,SAAS,YAAY;AAAA,IAC7C,MAAM;AAAA,IACN,MAAM,eAAe,YAAY,SAAS,IAAI,cAAc;AAAA,IAC5D,OAAO,kBAAiB,SAAS,YAAY;AAAA,EAC9C;AAAA,EACA,MAAM,WAAuD;AAAA,IAC5D,aAAa,kBAAiB,SAAS,WAAW;AAAA,IAClD,iBAAiB,kBAAiB,SAAS,eAAe;AAAA,IAC1D,mBAAmB,kBAAiB,SAAS,iBAAiB;AAAA,IAC9D,gBAAgB,kBAAiB,SAAS,cAAc;AAAA,IACxD,mBAAmB,kBAAiB,SAAS,iBAAiB;AAAA,EAC/D;AAAA,EAEA,IACC,CAAC,QAAQ,UACR,CAAC,QAAQ,QAAQ,QAAQ,KAAK,WAAW,MAC1C,OAAO,QAAQ,UAAU,YACzB,CAAC,QAAQ,QACT,CAAC,SAAS,eACV,CAAC,SAAS,mBACV,OAAO,SAAS,sBAAsB,YACtC,CAAC,SAAS,kBACV,OAAO,SAAS,sBAAsB,UACrC;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN,SACC,QAAQ,SACP,QAAQ,QAAQ,QAAQ,KAAK,SAAS,KACvC,OAAO,QAAQ,UAAU,YACzB,QAAQ,OACL,UACA;AAAA,IACJ,UACC,SAAS,eACT,SAAS,mBACT,OAAO,SAAS,sBAAsB,YACtC,SAAS,kBACT,OAAO,SAAS,sBAAsB,WACnC,WACA;AAAA,EACL;AAAA;AAGD,IAAM,gBAAe,CAAC,MAAc,YAAY,QAAQ;AAAA,EACvD,MAAM,aAAa,KAAK,WAAW,QAAQ,GAAG,EAAE,KAAK;AAAA,EACrD,IAAI,WAAW,UAAU,WAAW;AAAA,IACnC,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,GAAG,WAAW,MAAM,GAAG,KAAK,IAAI,GAAG,YAAY,CAAC,CAAC,EAAE,QAAQ;AAAA;AAQ5D,IAAM,wBAAwB,CACpC,QACA,kBACkC;AAAA,EAClC,IAAI,OAAO,WAAW,GAAG;AAAA,IACxB;AAAA,EACD;AAAA,EAEA,MAAM,QAAQ,mBACb,OAAO,IAAI,CAAC,WAAW;AAAA,IACtB,SAAS,MAAM;AAAA,IACf,UAAU,MAAM;AAAA,IAChB,WAAW,MAAM;AAAA,EAClB,EAAE,CACH;AAAA,EACA,MAAM,aAAa,6BAA6B,OAAO,aAAa;AAAA,EACpE,MAAM,cACL,OAAO,KAAK,CAAC,UAAU,MAAM,YAAY,WAAW,aAAa,KACjE,OAAO;AAAA,EACR,IAAI,CAAC,aAAa;AAAA,IACjB;AAAA,EACD;AAAA,EAEA,MAAM,WAAW,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC;AAAA,EACtE,MAAM,mBAAmB;AAAA,IACxB,WAAW,cAAc;AAAA,IACzB,YAAY;AAAA,IACZ,WAAW,UAAU;AAAA,EACtB,EAAE,OACD,CAAC,SAAS,OAAO,QAChB,QAAQ,OAAO,KAAK,IAAI,QAAQ,OAAO,MAAM,KAC/C;AAAA,EACA,MAAM,oBACL,WAAW,aAAa,SAAS,IAC9B,WAAW,aAAa,IAAI,CAAC,SAAS,KAAK,OAAO,IAClD,CAAC,YAAY,OAAO;AAAA,EAExB,MAAM,cAAc,CAAC,aACpB,SACE,IAAI,CAAC,YAAY,SAAS,IAAI,OAAO,GAAG,IAAI,EAC5C,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,EACzD,KAAK;AAAA;AAAA,CAAM;AAAA,EAEd,OAAO;AAAA,IACN,cAAc,cAAa,YAAY,MAAM,GAAG;AAAA,IAChD,gBAAgB,cAAa,YAAY,iBAAiB,GAAG,GAAG;AAAA,IAChE,eAAe,cAAa,YAAY,gBAAgB,GAAG,GAAG;AAAA,EAC/D;AAAA;AAGM,IAAM,2BAA2B,CACvC,UACA,cACI;AAAA,EACJ,IAAI,CAAC,UAAU;AAAA,IACd,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,cAAc,SAAS,aAAa,KAAK,EAAE;AAAA,EACjD,MAAM,oBAAoB,WAAW,UAAU,qBAAqB;AAAA,EACpE,IAAI,oBAAoB,KAAK,cAAc,KAAK,cAAc,IAAI;AAAA,IACjE,IACC,qBAAqB,KACrB,SAAS,eAAe,KAAK,EAAE,SAAS,GACvC;AAAA,MACD,OAAO,SAAS;AAAA,IACjB;AAAA,IACA,IAAI,SAAS,cAAc,KAAK,EAAE,SAAS,GAAG;AAAA,MAC7C,OAAO,SAAS;AAAA,IACjB;AAAA,EACD;AAAA,EAEA,OAAO,SAAS;AAAA;AASV,IAAM,qBAAqB,CACjC,WACmB;AAAA,EACnB,MAAM,QAA6B,CAAC;AAAA,EACpC,MAAM,QAA6B,CAAC;AAAA,EACpC,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,WAAW,IAAI;AAAA,EAErB,WAAW,SAAS,QAAQ;AAAA,IAC3B,MAAM,SACL,MAAM,UACN,qBAAqB;AAAA,MACpB,UAAU,MAAM;AAAA,MAChB,QAAQ,MAAM;AAAA,MACd,OAAO,MAAM;AAAA,IACd,CAAC;AAAA,IACF,MAAM,YACL,MAAM,aAAa,uBAAuB,MAAM,QAAQ;AAAA,IAEzD,MAAM,KAAK;AAAA,MACV,SAAS,MAAM;AAAA,MACf,cAAc,QAAQ;AAAA,MACtB,OAAO,MAAM,UAAU,MAAM,SAAS,MAAM;AAAA,MAC5C,cAAc,QAAQ;AAAA,MACtB,iBAAiB,QAAQ;AAAA,MACzB,OAAO,MAAM;AAAA,MACb,QAAQ,MAAM;AAAA,MACd;AAAA,MACA,OAAO,MAAM;AAAA,IACd,CAAC;AAAA,IAED,MAAM,kBAAkB,WAAW,UAAU;AAAA,IAC7C,IAAI,iBAAiB;AAAA,MACpB,MAAM,MAAM,YAAY,mBAAmB,MAAM;AAAA,MACjD,IAAI,CAAC,SAAS,IAAI,GAAG,GAAG;AAAA,QACvB,SAAS,IAAI,GAAG;AAAA,QAChB,MAAM,KAAK;AAAA,UACV,aAAa;AAAA,UACb,UAAU;AAAA,UACV,WAAW,MAAM;AAAA,QAClB,CAAC;AAAA,MACF;AAAA,IACD;AAAA,IAEA,MAAM,cAAc,WAAW,UAAU;AAAA,IACzC,IAAI,aAAa;AAAA,MAChB,MAAM,MAAM,QAAQ,MAAM,WAAW;AAAA,MACrC,IAAI,CAAC,SAAS,IAAI,GAAG,GAAG;AAAA,QACvB,SAAS,IAAI,GAAG;AAAA,QAChB,MAAM,KAAK;AAAA,UACV,aAAa,MAAM;AAAA,UACnB,UAAU;AAAA,UACV,WAAW;AAAA,QACZ,CAAC;AAAA,MACF;AAAA,IACD;AAAA,IAEA,MAAM,YAAY,WAAW,UAAU;AAAA,IACvC,IAAI,WAAW;AAAA,MACd,MAAM,WAAW,SAAS,IAAI,SAAS;AAAA,MACvC,IAAI,CAAC,UAAU;AAAA,QACd,SAAS,IAAI,WAAW;AAAA,UACvB,iBAAiB,CAAC;AAAA,UAClB,YAAY,UAAU,UAAU,qBAAqB;AAAA,UACrD,UAAU,CAAC,MAAM,OAAO;AAAA,UACxB,OAAO,UAAU,SAAS;AAAA,UAC1B,IAAI;AAAA,UACJ,MAAM,UAAU,SAAS;AAAA,UACzB,aAAa,MAAM;AAAA,UACnB,MAAM,UAAU,SAAS;AAAA,UACzB,OAAO,UAAU,SAAS;AAAA,QAC3B,CAAC;AAAA,QACD;AAAA,MACD;AAAA,MAEA,IAAI,CAAC,SAAS,SAAS,SAAS,MAAM,OAAO,GAAG;AAAA,QAC/C,SAAS,SAAS,KAAK,MAAM,OAAO;AAAA,MACrC;AAAA,MACA,SAAS,aAAa,KAAK,IAC1B,SAAS,YACT,UAAU,UAAU,qBAAqB,SAAS,UACnD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,WAAW,WAAW,SAAS,OAAO,GAAG;AAAA,IACxC,QAAQ,SAAS,KAAK,CAAC,MAAM,UAAU;AAAA,MACtC,MAAM,WAAW,MAAM,KAAK,CAAC,SAAS,KAAK,YAAY,IAAI;AAAA,MAC3D,MAAM,YAAY,MAAM,KAAK,CAAC,SAAS,KAAK,YAAY,KAAK;AAAA,MAC7D,MAAM,YACL,UAAU,WAAW,UAAU,qBAC/B,OAAO;AAAA,MACR,MAAM,aACL,WAAW,WAAW,UAAU,qBAChC,OAAO;AAAA,MACR,IAAI,cAAc,YAAY;AAAA,QAC7B,OAAO,YAAY;AAAA,MACpB;AAAA,MAEA,OAAO,KAAK,cAAc,KAAK;AAAA,KAC/B;AAAA,IACD,QAAQ,cAAc,QAAQ,SAAS;AAAA,EACxC;AAAA,EAEA,MAAM,mBAAmB,IAAI;AAAA,EAC7B,WAAW,WAAW,SAAS,OAAO,GAAG;AAAA,IACxC,MAAM,OACL,QAAQ,QAAQ,QAAQ,KAAK,SAAS,IACnC,QAAQ,OACR,QAAQ,QACP,CAAC,QAAQ,KAAK,IACd;AAAA,IACL,IAAI,QAAQ,KAAK,SAAS,GAAG;AAAA,MAC5B,iBAAiB,IAAI,KAAK,KAAK,MAAQ,GAAG,OAAO;AAAA,IAClD;AAAA,EACD;AAAA,EAEA,WAAW,WAAW,SAAS,OAAO,GAAG;AAAA,IACxC,MAAM,OACL,QAAQ,QAAQ,QAAQ,KAAK,SAAS,IACnC,QAAQ,OACR,QAAQ,QACP,CAAC,QAAQ,KAAK,IACd;AAAA,IACL,IAAI,CAAC,QAAQ,KAAK,SAAS,GAAG;AAAA,MAC7B;AAAA,IACD;AAAA,IAEA,MAAM,SAAS,iBAAiB,IAAI,KAAK,MAAM,GAAG,EAAE,EAAE,KAAK,MAAQ,CAAC;AAAA,IACpE,IAAI,CAAC,UAAU,OAAO,OAAO,QAAQ,IAAI;AAAA,MACxC;AAAA,IACD;AAAA,IAEA,QAAQ,kBAAkB,OAAO;AAAA,IACjC,IAAI,CAAC,OAAO,gBAAgB,SAAS,QAAQ,EAAE,GAAG;AAAA,MACjD,OAAO,gBAAgB,KAAK,QAAQ,EAAE;AAAA,IACvC;AAAA,IAEA,IAAI,OAAO,eAAe,QAAQ,aAAa;AAAA,MAC9C,MAAM,YAAY,kBAAkB,QAAQ,eAAe,OAAO;AAAA,MAClE,IAAI,CAAC,SAAS,IAAI,SAAS,GAAG;AAAA,QAC7B,SAAS,IAAI,SAAS;AAAA,QACtB,MAAM,KAAK;AAAA,UACV,aAAa,QAAQ;AAAA,UACrB,UAAU;AAAA,UACV,WAAW,OAAO;AAAA,QACnB,CAAC;AAAA,MACF;AAAA,MAEA,MAAM,WAAW,iBAAiB,OAAO,eAAe,QAAQ;AAAA,MAChE,IAAI,CAAC,SAAS,IAAI,QAAQ,GAAG;AAAA,QAC5B,SAAS,IAAI,QAAQ;AAAA,QACrB,MAAM,KAAK;AAAA,UACV,aAAa,OAAO;AAAA,UACpB,UAAU;AAAA,UACV,WAAW,QAAQ;AAAA,QACpB,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,KAAK,CAAC,MAAM,UAAU;AAAA,IAC3B,MAAM,cACL,KAAK,WAAW,UAAU,qBAC1B,OAAO;AAAA,IACR,MAAM,eACL,MAAM,WAAW,UAAU,qBAC3B,OAAO;AAAA,IACR,IAAI,gBAAgB,cAAc;AAAA,MACjC,OAAO,cAAc;AAAA,IACtB;AAAA,IAEA,MAAM,YAAY,KAAK,SAAS,OAAO;AAAA,IACvC,MAAM,aAAa,MAAM,SAAS,OAAO;AAAA,IACzC,IAAI,cAAc,YAAY;AAAA,MAC7B,OAAO,aAAa;AAAA,IACrB;AAAA,IAEA,OAAO,KAAK,MAAM,cAAc,MAAM,KAAK;AAAA,GAC3C;AAAA,EAED,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,UAAU,CAAC,GAAG,SAAS,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,WAC3C,KAAK,SAAS,KAAK,IAAI,cAAc,MAAM,SAAS,MAAM,EAAE,CAC9D;AAAA,EACD;AAAA;AAGM,IAAM,4BAA4B,CACxC,YAEA,mBACC,QAAQ,OAAO,IAAI,CAAC,WAAW;AAAA,EAC9B,SAAS,MAAM;AAAA,EACf,QAAQ,MAAM;AAAA,EACd,UAAU,MAAM;AAAA,EAChB,QAAQ,MAAM,UAAU,QAAQ,SAAS;AAAA,EACzC,WAAW,MAAM;AAAA,EACjB,OAAO,MAAM,SAAS,QAAQ,SAAS;AACxC,EAAE,CACH;AAEM,IAAM,iCAAiC,CAC7C,SACA,kBAEA,6BACC,0BAA0B,OAAO,GACjC,aACD;AAEM,IAAM,+BAA+B,CAC3C,OACA,kBAC6B;AAAA,EAC7B,IAAI,MAAM,MAAM,WAAW,GAAG;AAAA,IAC7B,OAAO;AAAA,MACN;AAAA,MACA,eAAe,CAAC;AAAA,MAChB,iBAAiB,CAAC;AAAA,MAClB,cAAc,CAAC;AAAA,IAChB;AAAA,EACD;AAAA,EAEA,MAAM,cACJ,gBACE,MAAM,MAAM,KAAK,CAAC,SAAS,KAAK,YAAY,aAAa,IACzD,cAAc,MAAM,MAAM;AAAA,EAC9B,MAAM,wBAAwB,YAAY;AAAA,EAC1C,MAAM,eAAe,YAAY,WAAW,UAAU,kBACnD,MAAM,MAAM,KACZ,CAAC,SACA,KAAK,YACL,WAAW,WAAW,UAAU,eAClC,IACC;AAAA,EACH,MAAM,WAAW,YAAY,WAAW,UAAU,cAC/C,MAAM,MAAM,KACZ,CAAC,SACA,KAAK,YAAY,WAAW,WAAW,UAAU,WACnD,IACC;AAAA,EACH,MAAM,UAAU,YAAY,WAAW,UAAU,iBAC9C,MAAM,SAAS,KACf,CAAC,UACA,MAAM,OAAO,WAAW,WAAW,UAAU,cAC/C,IACC;AAAA,EACH,MAAM,gBAAgB,SAAS,kBAC5B,MAAM,SAAS,KAAK,CAAC,UAAU,MAAM,OAAO,QAAQ,eAAe,IACnE;AAAA,EACH,MAAM,gBAAgB,UACnB,QAAQ,gBACP,IAAI,CAAC,cACL,MAAM,SAAS,KAAK,CAAC,UAAU,MAAM,OAAO,SAAS,CACtD,EACC,OAAO,CAAC,UACR,QAAQ,KAAK,CACd,IACA,CAAC;AAAA,EACJ,MAAM,kBAAkB,SAAS,kBAC9B,MAAM,SAAS,OACf,CAAC,UACA,MAAM,oBAAoB,QAAQ,mBAClC,MAAM,OAAO,QAAQ,EACvB,IACC,CAAC;AAAA,EACJ,MAAM,eAAe,UAClB,QAAQ,SACP,IAAI,CAAC,YACL,MAAM,MAAM,KAAK,CAAC,SAAS,KAAK,YAAY,OAAO,CACpD,EACC,OAAO,CAAC,SAAoC,QAAQ,IAAI,CAAC,IAC1D,aACC,CAAC,UAAU,IACX,CAAC;AAAA,EAEL,OAAO;AAAA,IACN,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA;AAEM,IAAM,yBAAyB,CAAC,aAA0B;AAAA,EAChE,MAAM,UAAU,0BAA0B,QAAQ;AAAA,EAElD,IAAI,CAAC,SAAS;AAAA,IACb,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,UAAU,QAAQ,WAAW,CAAC;AAAA,EACpC,MAAM,iBAAiB,uBAAuB,QAAQ,SAAS,OAAO;AAAA,EAEtE,OAAO;AAAA,IACN,sBAAsB,6BACrB,kBAAkB,OAAO,CAC1B;AAAA,IACA,WAAW,kBAAkB,OAAO;AAAA,IACpC,gBAAgB,QAAQ;AAAA,IACxB;AAAA,IACA,WAAW,QAAQ;AAAA,IACnB,qBAAqB,QAAQ;AAAA,IAC7B,oBAAoB,QAAQ;AAAA,IAC5B,aAAa,QAAQ;AAAA,IACrB,OAAO,oBAAoB,QAAQ,cAAc,IAC9C,QAAQ,iBACR;AAAA,IACH,cAAc,qBAAqB,OAAO;AAAA,IAC1C,iBAAiB,wBAAwB,OAAO;AAAA,IAChD;AAAA,EACD;AAAA;AAEM,IAAM,0BAA0B,CAAC,YAAyB;AAAA,EAChE,MAAM,eAAe,qBAAqB,OAAO;AAAA,EACjD,MAAM,YAAY,kBAAkB,OAAO;AAAA,EAC3C,MAAM,uBAAuB,6BAA6B,SAAS;AAAA,EAEnE,OAAO,aAAa,IAAsB,CAAC,UAAU;AAAA,IACpD,MAAM,iBAAiB,UAAU,OAAO,CAAC,aACxC,MAAM,OAAO,KAAK,CAAC,UAAU,MAAM,YAAY,SAAS,OAAO,CAChE;AAAA,IACA,MAAM,YAAY,MAAM,OACtB,MAAM,EACN,KAAK,CAAC,MAAM,UAAU,MAAM,QAAQ,KAAK,KAAK,EAAE;AAAA,IAClD,MAAM,WAAW,YACd,sBAAsB,MAAM,QAAQ,UAAU,OAAO,IACrD;AAAA,IAEH,OAAO;AAAA,MACN,WAAW,MAAM;AAAA,MACjB,iBAAiB,eAAe,IAC/B,CAAC,aAAa,qBAAqB,SAAS,YAAY,CACzD;AAAA,MACA,WAAW;AAAA,MACX,UAAU,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,OAAO;AAAA,MACnD,cACC,WAAW,QAAQ,gBACnB,mBAAkB,WAAW,QAAQ;AAAA,MACtC,OAAO,MAAM;AAAA,MACb,SACC,yBACC,UACA,WAAW,aACV,uBAAuB,WAAW,QAAQ,CAC5C,KAAK,cAAa,WAAW,QAAQ,EAAE;AAAA,MACxC;AAAA,MACA,KAAK,MAAM;AAAA,MACX,OAAO,MAAM;AAAA,MACb,cACC,WAAW,QAAQ,gBACnB,mBACC,WAAW,UACX,WAAW,QACX,WAAW,KACZ;AAAA,MACD,iBACC,WAAW,QAAQ,mBACnB,sBAAqB,WAAW,QAAQ;AAAA,MACzC,WACC,WAAW,aACX,uBAAuB,WAAW,QAAQ;AAAA,MAC3C,QAAQ,MAAM;AAAA,MACd,OAAO,MAAM;AAAA,IACd;AAAA,GACA;AAAA;AA0BF,IAAM,2BAA2B,CAAC,aAA0B;AAAA,EAC3D,MAAM,gBAAgB,0BAA0B,QAAQ;AAAA,EACxD,MAAM,YAAY,gBACf,uBAAuB,QAAQ,IAC/B;AAAA,EAEH,OAAO;AAAA,IACN,gBAAgB,eAAe;AAAA,IAC/B;AAAA,IACA,WAAW,eAAe;AAAA,IAC1B;AAAA,IACA,aACC,WAAW,QAAQ,UAAU,eAAe,SAAS,UAAU;AAAA,EACjE;AAAA;AAGM,IAAM,yBAAyB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,MAKwB;AAAA,EACxB,MAAM,QAAQ,sBAAsB;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACD,MAAM,QAAQ,yBAAyB,QAAQ;AAAA,EAC/C,MAAM,aAAa,MAAM,cAAc;AAAA,EACvC,MAAM,eACL,UAAU,eACV,MAAM,cAAc,aACpB,MAAM,eAAe,gBAAgB;AAAA,EACtC,MAAM,cACL,OAAO,MAAM,eAAe,aAAa,YACzC,MAAM,cAAc,SAAS,SAAS;AAAA,EACvC,MAAM,gBAAgB,MAAM,eAAe,WAAW,UAAU,KAAK;AAAA,EAErE,OAAO;AAAA,IACN,gBAAgB,MAAM;AAAA,IACtB,YACC,OAAO,MAAM,eAAe,YAAY,YACxC,MAAM,cAAc,QAAQ,SAAS;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,UAAU;AAAA,IACtB,SAAS,UAAU;AAAA,IACnB,QAAQ,UAAU;AAAA,IAClB,aAAa,UAAU;AAAA,IACvB,cAAc,UAAU,gBAAgB,UAAU;AAAA,IAClD,aAAa,UAAU;AAAA,IACvB,cAAc,UAAU;AAAA,IACxB,eAAe,MAAM;AAAA,IACrB,WAAW,MAAM;AAAA,IACjB,qBAAqB,MAAM,WAAW;AAAA,IACtC,oBAAoB,MAAM,WAAW;AAAA,IACrC,aAAa,MAAM,WAAW;AAAA,IAC9B,aAAa,MAAM;AAAA,IACnB;AAAA,EACD;AAAA;AAIM,IAAM,8BAA8B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,MAK6B;AAAA,EAC7B,MAAM,yBAAyB,0BAA0B,QAAQ;AAAA,EACjE,MAAM,UAAU,oBAAoB,QAAQ;AAAA,EAC5C,MAAM,eAAe,qBAAqB,OAAO;AAAA,EACjD,MAAM,YAAY,kBAAkB,OAAO;AAAA,EAC3C,MAAM,uBAAuB,6BAA6B,SAAS;AAAA,EACnE,MAAM,kBAAkB,wBAAwB,OAAO;AAAA,EACvD,MAAM,sBAAsB,4BAA4B,OAAO;AAAA,EAC/D,MAAM,iBAAiB,uBACtB,wBAAwB,WAAW,IACnC,OACD;AAAA,EACA,MAAM,YAAY,uBAAuB,QAAQ;AAAA,EACjD,MAAM,WAAW,uBAAuB;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EAED,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,UAAU,eAAe;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,eAAe;AAAA,IAC7B,cAAc,oBAAoB,SAAS;AAAA,IAC3C,cAAc,SAAS;AAAA,IACvB,YAAY,QAAQ,SAAS;AAAA,IAC7B,mBAAmB,SAAS;AAAA,IAC5B,YAAY,SAAS;AAAA,IACrB,SAAS,SAAS;AAAA,IAClB,QAAQ,SAAS;AAAA,IACjB,aAAa,SAAS;AAAA,IACtB,cAAc,SAAS;AAAA,IACvB,WACC,SAAS,gBACT,SAAS,gBACT,SAAS;AAAA,IACV,cAAc,SAAS;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA,qBAAqB,WAAW;AAAA,IAChC,oBAAoB,WAAW;AAAA,IAC/B,aAAa,WAAW;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,4BAA4B,eAAe;AAAA,EAC5C;AAAA;AAGM,IAAM,uBAAuB,CAAC,YAAyB;AAAA,EAC7D,MAAM,SAAS,IAAI;AAAA,EAEnB,WAAW,UAAU,SAAS;AAAA,IAC7B,kBAAkB,QAAQ,MAAM;AAAA,EACjC;AAAA,EAEA,OAAO,CAAC,GAAG,OAAO,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU;AAAA,IACjD,IAAI,MAAM,cAAc,KAAK,WAAW;AAAA,MACvC,OAAO,MAAM,YAAY,KAAK;AAAA,IAC/B;AAAA,IAEA,OAAO,KAAK,MAAM,cAAc,MAAM,KAAK;AAAA,GAC3C;AAAA;AAGF,IAAM,mBAAmB,CAAC,QAAmB,SAAiC;AAAA,EAC7E,WAAW,OAAO;AAAA,EAClB,QAAQ,CAAC,MAAM;AAAA,EACf,OAAO;AAAA,EACP;AAAA,EACA,OAAO,kBAAiB,MAAM;AAAA,EAC9B,QACC,OAAO,UACP,qBAAqB;AAAA,IACpB,UAAU,OAAO;AAAA,IACjB,QAAQ,OAAO;AAAA,IACf,OAAO,OAAO;AAAA,EACf,CAAC;AAAA,EACF,WAAW,OAAO,aAAa,uBAAuB,OAAO,QAAQ;AAAA,EACrE,QAAQ,OAAO;AAAA,EACf,OAAO,OAAO;AACf;AAEA,IAAM,oBAAoB,CACzB,QACA,WACI;AAAA,EACJ,MAAM,MAAM,oBAAoB,MAAM;AAAA,EACtC,MAAM,WAAW,OAAO,IAAI,GAAG;AAAA,EAC/B,IAAI,CAAC,UAAU;AAAA,IACd,OAAO,IAAI,KAAK,iBAAiB,QAAQ,GAAG,CAAC;AAAA,IAE7C;AAAA,EACD;AAAA,EAEA,IAAI,OAAO,QAAQ,SAAS,WAAW;AAAA,IACtC,SAAS,YAAY,OAAO;AAAA,IAC5B,SAAS,QAAQ,kBAAiB,MAAM;AAAA,IACxC,SAAS,SACR,OAAO,UACP,qBAAqB;AAAA,MACpB,UAAU,OAAO;AAAA,MACjB,QAAQ,OAAO;AAAA,MACf,OAAO,OAAO;AAAA,IACf,CAAC;AAAA,IACF,SAAS,YACR,OAAO,aAAa,uBAAuB,OAAO,QAAQ;AAAA,IAC3D,SAAS,SAAS,OAAO;AAAA,IACzB,SAAS,QAAQ,OAAO;AAAA,EACzB,EAAO;AAAA,IACN,SAAS,YAAY,KAAK,IAAI,SAAS,WAAW,OAAO,KAAK;AAAA;AAAA,EAE/D,SAAS,SAAS;AAAA,EAClB,SAAS,OAAO,KAAK,MAAM;AAAA;AAErB,IAAM,4BAA4B,CAAC,aAA0B;AAAA,EACnE,SAAS,QAAQ,SAAS,SAAS,EAAG,SAAS,GAAG,SAAS,GAAG;AAAA,IAC7D,MAAM,UAAU,SAAS;AAAA,IACzB,IAAI,SAAS,SAAS,aAAa;AAAA,MAClC,OAAO;AAAA,IACR;AAAA,EACD;AAAA,EAEA;AAAA;AAEM,IAAM,sBAAsB,CAAC,aACnC,0BAA0B,QAAQ,GAAG,WAAW,CAAC;AAC3C,IAAM,4BAA4B,CAAC,aAA0B;AAAA,EACnE,SAAS,QAAQ,SAAS,SAAS,EAAG,SAAS,GAAG,SAAS,GAAG;AAAA,IAC7D,MAAM,UAAU,SAAS;AAAA,IACzB,IACC,SAAS,SAAS,gBACjB,OAAO,QAAQ,gBAAgB,aAC9B,QAAQ,SAAS,UAAU,KAAK,IACjC;AAAA,MACD,OAAO;AAAA,IACR;AAAA,EACD;AAAA,EAEA;AAAA;AAEM,IAAM,wBAAwB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,MAKK;AAAA,EACL,IAAI,OAAO;AAAA,IACV,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,mBAAmB,0BAA0B,QAAQ;AAAA,EAC3D,IAAI,CAAC,kBAAkB;AAAA,IACtB,OAAO,cAAc,eAAe;AAAA,EACrC;AAAA,EAEA,MAAM,eACL,OAAO,iBAAiB,uBAAuB,YAC/C,OAAO,iBAAiB,gBAAgB;AAAA,EAEzC,IAAI,cAAc;AAAA,IACjB,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,CAAC,aAAa;AAAA,IACjB,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,eAAe,OAAO,iBAAiB,gBAAgB;AAAA,EAC7D,MAAM,aACL,iBAAiB,QAAQ,KAAK,EAAE,SAAS,KACzC,iBAAiB,UAAU,KAAK,EAAE,WACjC,iBAAiB,WAAW,UAAU,KAAK,MAC3C,iBAAiB,QAAQ,UAAU,KAAK;AAAA,EAE1C,IAAI,gBAAgB,CAAC,YAAY;AAAA,IAChC,OAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,oBAAoB,CAAC,OAAe,WAAW,GAAG,SAAS,OAChE,GAAG,SAAS,IAAI,MAAM,KAAK,MAAM,QAAQ,QAAQ,IAAI;AAEtD,IAAM,8BAA8B,CAAC,UAAkB,GAAG,MAAM,QAAQ,CAAC;AAEzE,IAAM,0BAA0B,CAAC,aAChC,GAAG,SAAS,QAAQ,4BAAwB,SAAS,QAAQ,UAAU,QACtE,CACD,kBAAc,SAAS,QAAQ,iBAAiB,QAAQ,CAAC;AAE1D,IAAM,qCAAqC,CAAC,aAW3C,GAAG,SAAS,QAAQ,eAAe,SAAS,QAAQ,iCAA6B,SAAS,QAAQ,8BAA2B,SAAS,QAAQ,gCAA6B,SAAS,QAAQ,4CAAyC,SAAS,QAAQ,8BAA8B,KAAK,QAAQ,CAAC,uBAAoB,SAAS,QAAQ,kBAAkB,QAAQ,CAAC;AAEnW,IAAM,0BAA0B,CAAC,UAChC,MAAM,SAAS,IACZ,MAAM,IAAI,CAAC,UAAU,MAAM,SAAS,MAAM,MAAM,EAAE,KAAK,IAAI,IAC3D;AAEJ,IAAM,mCAAmC,CACxC,UAEA,MAAM,SAAS,IACZ,MAAM,IAAI,CAAC,UAAU,MAAM,SAAS,MAAM,MAAM,EAAE,KAAK,IAAI,IAC3D;AAEJ,IAAM,mCAAmC,CAAC,UACzC;AAAA,EACC,MAAM;AAAA,EACN,WAAW,4BAA4B,MAAM,SAAS,WAAW;AAAA,EACjE,MAAM,MAAM,SAAS,QAAQ,UAAU,QAAQ,CAAC;AAAA,EAChD,WAAW,MAAM,SAAS,QAAQ,iBAAiB,QAAQ,CAAC;AAC7D,EAAE,KAAK,QAAI;AAEZ,IAAM,oCAAoC,CACzC,UAEA;AAAA,EACC,MAAM;AAAA,EACN,QAAQ,MAAM;AAAA,EACd,WAAW,4BAA4B,MAAM,SAAS,WAAW;AAAA,EACjE,MAAM,MAAM,SAAS,QAAQ,UAAU,QAAQ,CAAC;AAAA,EAChD,WAAW,MAAM,SAAS,QAAQ,iBAAiB,QAAQ,CAAC;AAC7D,EAAE,KAAK,QAAI;AAEZ,IAAM,mBAAmB,CAAC,UACzB,MAAM,SAAS,IAAI,MAAM,KAAK,KAAK,IAAI;AAExC,IAAM,gCAAgC,CACrC,eACK,WAAW,SAAS,IAAI,WAAW,KAAK,KAAK,IAAI;AAEvD,IAAM,0BAA0B,CAC/B,gBAGI;AAAA,EACJ,MAAM,YAAY,OAAO,QAAQ,WAAW,EAC1C,KAAK,CAAC,MAAM,UAAU,MAAM,KAAK,KAAK,EAAE,EACxC,MAAM,GAAG,CAAC;AAAA,EAEZ,OAAO,UAAU,SAAS,IACvB,UAAU,IAAI,EAAE,OAAO,WAAW,GAAG,SAAS,OAAO,EAAE,KAAK,QAAI,IAChE;AAAA;AAGJ,IAAM,mBAAmB,CAAC,OAAe,UAAkB,GAAG,SAAS;AAEvE,IAAM,wBAAwB,CAAC,UAC9B,GAAG,SAAS,IAAI,MAAM,KAAK;AAE5B,IAAM,sCAAsC,CAW1C,UASuC;AAAA,EACxC,MAAM,cAAc,MAAM,aAAa,MAAM,QAAQ,iBAAiB;AAAA,EACtE,MAAM,cAAc,MAAM,aAAa,MAAM,QAAQ,iBAAiB;AAAA,EAEtE,OAAO;AAAA,IACN,MAAM;AAAA,MACL;AAAA,QACC,OAAO;AAAA,QACP,OAAO,MAAM,aAAa,MAAM,QAAQ,iBAAiB;AAAA,MAC1D;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,MAAM,aAAa,MAAM,QAAQ,eAAe;AAAA,MACxD;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,MAAM,aAAa,MAAM,QAAQ,OAAO;AAAA,MAChD;AAAA,IACD;AAAA,IACA;AAAA,IACA,SAAS,cACN,WAAW,4BAA4B,YAAY,SAAS,WAAW,aAAS,YAAY,SAAS,QAAQ,UAAU,QAAQ,CAAC,kBAAe,YAAY,SAAS,QAAQ,iBAAiB,QAAQ,CAAC,QACtM;AAAA,EACJ;AAAA;AAGM,IAAM,qCAAqC,CACjD,UACwB;AAAA,EACxB,MAAM,QAAQ,MAAM;AAAA,EAEpB,IAAI,CAAC,OAAO;AAAA,IACX,OAAO,CAAC,EAAE,OAAO,SAAS,OAAO,cAAc,CAAC;AAAA,EACjD;AAAA,EAEA,OAAO;AAAA,IACN,EAAE,OAAO,SAAS,OAAO,iBAAiB,MAAM,KAAK,EAAE;AAAA,IACvD;AAAA,MACC,OAAO;AAAA,MACP,OAAO,8BAA8B,MAAM,uBAAuB;AAAA,IACnE;AAAA,IACA,EAAE,OAAO,aAAa,OAAO,MAAM,kBAAkB,QAAQ,CAAC,EAAE;AAAA,IAChE,EAAE,OAAO,cAAc,OAAO,MAAM,mBAAmB,QAAQ,CAAC,EAAE;AAAA,IAClE,EAAE,OAAO,eAAe,OAAO,MAAM,oBAAoB,QAAQ,CAAC,EAAE;AAAA,IACpE;AAAA,MACC,OAAO;AAAA,MACP,OAAO,iBAAiB,MAAM,eAAe,MAAM,UAAU;AAAA,IAC9D;AAAA,IACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,iBAAiB,MAAM,iBAAiB,MAAM,UAAU;AAAA,IAChE;AAAA,IACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,iBAAiB,MAAM,kBAAkB,MAAM,UAAU;AAAA,IACjE;AAAA,IACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,iBAAiB,MAAM,cAAc,MAAM,UAAU;AAAA,IAC7D;AAAA,IACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,GAAG,MAAM,qBAAqB,QACpC,CACD,OAAO,MAAM,mBAAmB,QAAQ,CAAC;AAAA,IAC1C;AAAA,IACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,wBAAwB,MAAM,WAAW;AAAA,IACjD;AAAA,EACD;AAAA;AAGM,IAAM,kCAAkC,CAC9C,OACA,WACwB;AAAA,EACxB,MAAM,QAAQ,MAAM;AAAA,EAEpB,IAAI,CAAC,OAAO;AAAA,IACX,OAAO,CAAC,EAAE,OAAO,SAAS,OAAO,6BAA6B,CAAC;AAAA,EAChE;AAAA,EAEA,MAAM,cAAc,QAAQ;AAAA,EAC5B,IAAI,CAAC,aAAa;AAAA,IACjB,OAAO,CAAC,EAAE,OAAO,YAAY,OAAO,2BAA2B,CAAC;AAAA,EACjE;AAAA,EAEA,IAAI,UAAU,QAAQ;AAAA,IACrB,OAAO,CAAC,EAAE,OAAO,YAAY,OAAO,kBAAkB,CAAC;AAAA,EACxD;AAAA,EAEA,MAAM,aAAa,OAAO,KAAK;AAAA,OAC3B,YAAY;AAAA,OACZ,MAAM;AAAA,EACV,CAAC,EACC,IAAI,CAAC,UAAU;AAAA,IACf,MAAM,aAAa;AAAA,IACnB,MAAM,SACJ,MAAM,YAAY,eAAe,MACjC,YAAY,YAAY,eAAe;AAAA,IACzC,OAAO,UAAU,IACd,OACA,GAAG,cAAc,sBAAsB,KAAK;AAAA,GAC/C,EACA,OAAO,CAAC,UAA2B,QAAQ,KAAK,CAAC,EACjD,MAAM,GAAG,CAAC,EACV,KAAK,QAAI;AAAA,EAEX,MAAM,OAA2B;AAAA,IAChC,EAAE,OAAO,YAAY,OAAO,OAAO,MAAM;AAAA,EAC1C;AAAA,EAEA,IAAI,iBAAiB,MAAM,KAAK,MAAM,iBAAiB,YAAY,KAAK,GAAG;AAAA,IAC1E,KAAK,KAAK;AAAA,MACT,OAAO;AAAA,MACP,OAAO,GAAG,iBAAiB,MAAM,KAAK,QAAQ,iBAC7C,YAAY,KACb;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,IACC,8BAA8B,MAAM,uBAAuB,MAC3D,8BAA8B,YAAY,uBAAuB,GAChE;AAAA,IACD,KAAK,KAAK;AAAA,MACT,OAAO;AAAA,MACP,OAAO,GAAG,8BACT,MAAM,uBACP,QAAQ,8BACP,YAAY,uBACb;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,KAAK,KACJ;AAAA,IACC,OAAO;AAAA,IACP,OAAO,kBACN,MAAM,oBAAoB,YAAY,mBACtC,CACD;AAAA,EACD,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,kBACN,MAAM,qBAAqB,YAAY,oBACvC,CACD;AAAA,EACD,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,kBACN,MAAM,sBAAsB,YAAY,qBACxC,CACD;AAAA,EACD,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,sBACN,MAAM,mBAAmB,YAAY,gBACtC;AAAA,EACD,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,sBACN,MAAM,gBAAgB,YAAY,aACnC;AAAA,EACD,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,sBACN,MAAM,kBAAkB,YAAY,eACrC;AAAA,EACD,CACD;AAAA,EAEA,IAAI,YAAY;AAAA,IACf,KAAK,KAAK,EAAE,OAAO,eAAe,OAAO,WAAW,CAAC;AAAA,EACtD;AAAA,EAEA,OAAO;AAAA;AAGD,IAAM,2CAA2C,CACvD,eACiC;AAAA,EACjC,MAAM,SAAS,WAAW,QAAQ;AAAA,EAClC,OAAO,WAAW,QAAQ,IAAI,CAAC,WAAW;AAAA,IACzC,WAAW,QAAQ,SAAS;AAAA,IAC5B,UAAU,gCAAgC,OAAO,MAAM;AAAA,IACvD,SAAS,kCAAkC,KAAK;AAAA,IAChD,IAAI,MAAM;AAAA,IACV,OAAO,MAAM;AAAA,IACb,kBAAkB,mCAAmC,KAAK;AAAA,EAC3D,EAAE;AAAA;AAGI,IAAM,kDAAkD,CAC9D,eAEA,oCAAoC;AAAA,EACnC,SAAS,WAAW;AAAA,EACpB,cAAc,CAAC,OACd,WAAW,QAAQ,KAAK,CAAC,UAAU,MAAM,gBAAgB,EAAE;AAAA,EAC5D,cAAc,CAAC,OACd,WAAW,QAAQ,KAAK,CAAC,UAAU,MAAM,gBAAgB,EAAE,GACxD,SACH,MACA;AAAA,EACD,SAAS,WAAW;AACrB,CAAC;AAEK,IAAM,0CAA0C,CACtD,eACiC;AAAA,EACjC,MAAM,SAAS,WAAW,QAAQ;AAAA,EAClC,OAAO,WAAW,QAAQ,IAAI,CAAC,WAAW;AAAA,IACzC,WAAW,QAAQ,SAAS;AAAA,IAC5B,UAAU,gCAAgC,OAAO,MAAM;AAAA,IACvD,SAAS,iCAAiC,KAAK;AAAA,IAC/C,IAAI,MAAM;AAAA,IACV,OAAO,MAAM;AAAA,IACb,kBAAkB,mCAAmC,KAAK;AAAA,EAC3D,EAAE;AAAA;AAGI,IAAM,iDAAiD,CAC7D,eAEA,oCAAoC;AAAA,EACnC,SAAS,WAAW;AAAA,EACpB,cAAc,CAAC,OACd,WAAW,QAAQ,KAAK,CAAC,UAAU,MAAM,eAAe,EAAE;AAAA,EAC3D,cAAc,CAAC,OACd,WAAW,QAAQ,KAAK,CAAC,UAAU,MAAM,eAAe,EAAE,GACvD,SACH,MACA;AAAA,EACD,SAAS,WAAW;AACrB,CAAC;AAEK,IAAM,yCAAyC,CACrD,YAOA,QAAQ,IAAI,CAAC,WAAW;AAAA,EACvB,SAAS;AAAA,IACR,MAAM;AAAA,IACN,WAAW,4BAA4B,MAAM,SAAS,WAAW;AAAA,IACjE,eAAe,MAAM,SAAS,QAAQ,kBAAkB,QAAQ,CAAC;AAAA,IACjE,YAAY,4BACX,MAAM,SAAS,QAAQ,2BACxB;AAAA,IACA,WAAW,MAAM,UAAU,QAAQ,CAAC;AAAA,EACrC,EAAE,KAAK,QAAI;AAAA,EACX,IAAI,MAAM;AAAA,EACV,OAAO,MAAM;AACd,EAAE;AAEI,IAAM,gDAAgD,CAAC,UAad;AAAA,EAC/C,MAAM,eAAe,CAAC,QACrB,MAAM,QAAQ,KAAK,CAAC,UAAU,MAAM,gBAAgB,GAAG,GAAG,SAC1D,OACA;AAAA,EACD,MAAM,cAAc,aAAa,MAAM,QAAQ,iBAAiB;AAAA,EAChE,MAAM,cAAc,MAAM,QAAQ,KACjC,CAAC,UAAU,MAAM,gBAAgB,MAAM,QAAQ,iBAChD;AAAA,EAEA,OAAO;AAAA,IACN,MAAM;AAAA,MACL;AAAA,QACC,OAAO;AAAA,QACP,OAAO,aAAa,MAAM,QAAQ,iBAAiB;AAAA,MACpD;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,aAAa,MAAM,QAAQ,uBAAuB;AAAA,MAC1D;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,aAAa,MAAM,QAAQ,0BAA0B;AAAA,MAC7D;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,aAAa,MAAM,QAAQ,OAAO;AAAA,MAC1C;AAAA,IACD;AAAA,IACA;AAAA,IACA,SAAS,cACN,WAAW,4BAA4B,YAAY,SAAS,WAAW,sBAAkB,YAAY,SAAS,QAAQ,kBAAkB,QAAQ,CAAC,mBAAgB,4BAA4B,YAAY,SAAS,QAAQ,2BAA2B,MACrP;AAAA,EACJ;AAAA;AAGM,IAAM,wCAAwC,CACpD,gBACqC;AAAA,EACrC,MAAM,gDAAgD,UAAU,EAAE;AACnE;AAEO,IAAM,uCAAuC,CACnD,gBACqC;AAAA,EACrC,MAAM,+CAA+C,UAAU,EAAE;AAClE;AAEO,IAAM,wCAAwC,CAAC,WAGb;AAAA,EACxC,MAAM;AAAA,IACL;AAAA,MACC,OAAO;AAAA,MACP,OAAO,mCAAmC,MAAM,mBAAmB;AAAA,IACpE;AAAA,IACA,GAAI,MAAM,2BAA2B,QAAQ;AAAA,MAC5C;AAAA,QACC,OAAO;AAAA,QACP,OAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD;AACD;AAEO,IAAM,sCAAsC,CAAC,WAKb;AAAA,EACtC,MAAM;AAAA,IACL,GAAG,sCAAsC,MAAM,mBAAmB,EAChE;AAAA,IACF,GAAG,qCAAqC,MAAM,kBAAkB,EAAE;AAAA,IAClE,GAAG,sCAAsC;AAAA,MACxC,qBAAqB,MAAM;AAAA,MAC3B,2BAA2B,MAAM;AAAA,IAClC,CAAC,EAAE;AAAA,EACJ;AACD;AAEO,IAAM,uDAAuD,CACnE,gBAsBA,YAAY,IAAI,CAAC,eAAe;AAAA,EAC/B,MAAM,eAAe,CAAC,QACrB,WAAW,QAAQ,KAAK,CAAC,UAAU,MAAM,gBAAgB,GAAG,GACzD,SACH,OACA;AAAA,EAED,OAAO;AAAA,IACN,QAAQ,WAAW;AAAA,IACnB,OAAO,WAAW;AAAA,IAClB,MAAM;AAAA,MACL;AAAA,QACC,OAAO;AAAA,QACP,OAAO,aAAa,WAAW,QAAQ,YAAY;AAAA,MACpD;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,aAAa,WAAW,QAAQ,gBAAgB;AAAA,MACxD;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,OAAO,aACN,WAAW,QAAQ,0BACpB;AAAA,MACD;AAAA,MACA,GAAG,WAAW,QAAQ,IAAI,CAAC,WAAW;AAAA,QACrC,OAAO,MAAM;AAAA,QACb,OAAO;AAAA,UACN,MAAM,OAAO,YAAY;AAAA,UACzB,YAAY,MAAM;AAAA,UAClB,MAAM,MAAM,WAAW,QAAQ,CAAC;AAAA,UAChC,YAAY,4BACX,MAAM,oBACP;AAAA,UACA,WAAW,MAAM,WAAW,KAAK,IAAI,KAAK;AAAA,UAC1C,WAAW,MAAM,WAAW,KAAK,IAAI,KAAK;AAAA,UAC1C,SAAS,MAAM,SAAS,KAAK,IAAI,KAAK;AAAA,UACtC,UAAU,MAAM,iBAAiB;AAAA,QAClC,EAAE,KAAK,QAAI;AAAA,MACZ,EAAE;AAAA,IACH;AAAA,IACA,SAAS;AAAA,MACR,kBAAkB,aAAa,WAAW,QAAQ,YAAY;AAAA,MAC9D,qBAAqB,aACpB,WAAW,QAAQ,gBACpB;AAAA,MACA,4BAA4B,aAC3B,WAAW,QAAQ,0BACpB;AAAA,IACD,EAAE,KAAK,QAAI;AAAA,EACZ;AAAA,CACA;AAEK,IAAM,gCAAgC,CAC5C,YACwB;AAAA,EACxB,IAAI,CAAC,SAAS,WAAW;AAAA,IACxB,OAAO;AAAA,MACN,EAAE,OAAO,WAAW,OAAO,mCAAmC;AAAA,IAC/D;AAAA,EACD;AAAA,EAEA,MAAM,OAA2B;AAAA,IAChC,EAAE,OAAO,iBAAiB,OAAO,OAAO,QAAQ,KAAK,MAAM,EAAE;AAAA,IAC7D;AAAA,MACC,OAAO;AAAA,MACP,OAAO,GAAG,QAAQ,UAAU,cAAU,wBACrC,QAAQ,UAAU,QACnB;AAAA,IACD;AAAA,EACD;AAAA,EAEA,IAAI,QAAQ,UAAU,cAAc;AAAA,IACnC,KAAK,KAAK;AAAA,MACT,OAAO;AAAA,MACP,OAAO,GAAG,iBACT,QAAQ,UAAU,aAAa,KAChC,kBAAc,8BACb,QAAQ,UAAU,aAAa,uBAChC,gBAAY,QAAQ,UAAU,aAAa,kBAAkB,QAC5D,CACD,iBAAa,QAAQ,UAAU,aAAa,mBAAmB,QAC9D,CACD,kBAAc,QAAQ,UAAU,aAAa,oBAAoB,QAChE,CACD;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,IAAI,QAAQ,aAAa;AAAA,IACxB,KAAK,KAAK;AAAA,MACT,OAAO;AAAA,MACP,OAAO,GAAG,QAAQ,YAAY,cAAU,wBACvC,QAAQ,YAAY,QACrB;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,IAAI,CAAC,QAAQ,MAAM;AAAA,IAClB,KAAK,KAAK;AAAA,MACT,OAAO;AAAA,MACP,OAAO;AAAA,IACR,CAAC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EAEA,KAAK,KACJ;AAAA,IACC,OAAO;AAAA,IACP,OAAO,kBACN,QAAQ,KAAK,aAAa,aAC1B,GACA,GACD;AAAA,EACD,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,kBAAkB,QAAQ,KAAK,aAAa,WAAW,CAAC;AAAA,EAChE,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,kBACN,QAAQ,KAAK,aAAa,kBAC1B,GACA,IACD;AAAA,EACD,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,wBAAwB,QAAQ,KAAK,aAAa;AAAA,EAC1D,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,wBAAwB,QAAQ,KAAK,cAAc;AAAA,EAC3D,CACD;AAAA,EAEA,IAAI,QAAQ,KAAK,mBAAmB;AAAA,IACnC,KAAK,KACJ;AAAA,MACC,OAAO;AAAA,MACP,OAAO,QAAQ,KAAK,kBAAkB,eACnC,YACA;AAAA,IACJ,GACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,QAAQ,KAAK,kBAClB,iCACC,YACA;AAAA,IACJ,GACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,kBACN,QAAQ,KAAK,kBAAkB,mBAC/B,CACD;AAAA,IACD,GACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,kBACN,QAAQ,KAAK,kBAAkB,oBAC/B,CACD;AAAA,IACD,GACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,kBACN,QAAQ,KAAK,kBAAkB,qBAC/B,CACD;AAAA,IACD,GACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,sBACN,QAAQ,KAAK,kBAAkB,aAChC;AAAA,IACD,GACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,sBACN,QAAQ,KAAK,kBAAkB,eAChC;AAAA,IACD,GACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,sBACN,QAAQ,KAAK,kBAAkB,gBAChC;AAAA,IACD,GACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,sBACN,QAAQ,KAAK,kBAAkB,YAChC;AAAA,IACD,CACD;AAAA,IAEA,MAAM,aAAa,OAAO,QACzB,QAAQ,KAAK,kBAAkB,eAAe,CAAC,CAChD,EACE,IAAI,EAAE,OAAO,WAAW,GAAG,SAAS,sBAAsB,KAAK,GAAG,EAClE,KAAK,IAAI;AAAA,IAEX,IAAI,YAAY;AAAA,MACf,KAAK,KAAK,EAAE,OAAO,qBAAqB,OAAO,WAAW,CAAC;AAAA,IAC5D;AAAA,EACD;AAAA,EAEA,IAAI,QAAQ,mBAAmB,SAAS,GAAG;AAAA,IAC1C,MAAM,eAAe,QAAQ,mBAAmB,OAC/C,CAAC,UAAU,MAAM,gBAAgB,SAClC;AAAA,IACA,KAAK,KAAK;AAAA,MACT,OAAO;AAAA,MACP,OACC,aAAa,SAAS,IACnB,aACC,IAAI,CAAC,UAAU,MAAM,SAAS,MAAM,MAAM,EAC1C,MAAM,GAAG,CAAC,EACV,KAAK,IAAI,IACV;AAAA,IACL,CAAC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGD,IAAM,2CAA2C,CACvD,YAC0C;AAAA,EAC1C,IAAI,CAAC,SAAS,mBAAmB,QAAQ;AAAA,IACxC,OAAO,CAAC;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,mBAAmB,IAAI,CAAC,UAAU;AAAA,IAChD,MAAM,QAAQ,MAAM,SAAS,MAAM;AAAA,IACnC,MAAM,cAAc,MAAM,aAAa;AAAA,IACvC,MAAM,eAAe,MAAM,qBAAqB;AAAA,IAChD,MAAM,iBAAiB,MAAM,yBAAyB;AAAA,IACtD,MAAM,kBAAkB,MAAM,iCAAiC;AAAA,IAC/D,MAAM,kBACL,MAAM,eAAe,SAAS,IAC3B,MAAM,eAAe,KAAK,IAAI,IAC9B;AAAA,IACJ,MAAM,mBACL,MAAM,uBAAuB,SAAS,IACnC,MAAM,uBAAuB,KAAK,IAAI,IACtC;AAAA,IACJ,MAAM,gBACL,OAAO,KAAK,MAAM,WAAW,EAAE,SAAS,IACrC,OAAO,QAAQ,MAAM,WAAW,EAC/B,IAAI,EAAE,OAAO,WAAW,GAAG,SAAS,OAAO,EAC3C,KAAK,IAAI,IACV;AAAA,IACJ,MAAM,iBACL,OAAO,KAAK,MAAM,mBAAmB,EAAE,SAAS,IAC7C,OAAO,QAAQ,MAAM,mBAAmB,EACvC,IAAI,EAAE,OAAO,WAAW,GAAG,SAAS,OAAO,EAC3C,KAAK,IAAI,IACV;AAAA,IAEJ,OAAO;AAAA,MACN,QAAQ,MAAM;AAAA,MACd;AAAA,MACA,SAAS,GAAG,MAAM,oBAAgB,qBAAgB,oBAAiB,wBAAmB,6BACrF,MAAM,sBAAsB,UAC1B,MAAM;AAAA,MACT,aAAa,MAAM;AAAA,MACnB,MAAM;AAAA,QACL,EAAE,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,QACrC,EAAE,OAAO,gBAAgB,OAAO,MAAM,YAAY;AAAA,QAClD,EAAE,OAAO,QAAQ,OAAO,GAAG,qBAAe,cAAc;AAAA,QACxD;AAAA,UACC,OAAO;AAAA,UACP,OAAO,GAAG,wBAAkB;AAAA,QAC7B;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,GACN,MAAM,0BAA0B,KAAK,KAAK,cACxC,MAAM,kBAAkB,KAAK,KAAK;AAAA,QACtC;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,GAAG,MAAM,sBAAsB,UAAI,MAAM;AAAA,QACjD;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,GAAG,MAAM,uBAAuB,UAAI,MAAM;AAAA,QAClD;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,GAAG,MAAM,wBAAwB,UAAI,MAAM;AAAA,QACnD;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,GAAG,MAAM,yBAAyB,UAAI,MAAM;AAAA,QACpD;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,GAAG,MAAM,uBAAuB,UAAI,MAAM;AAAA,QAClD;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,GAAG,yBAAmB;AAAA,QAC9B;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,GAAG,uBAAiB;AAAA,QAC5B;AAAA,QACA,EAAE,OAAO,UAAU,OAAO,MAAM,OAAO;AAAA,MACxC;AAAA,IACD;AAAA,GACA;AAAA;AAGK,IAAM,wCAAwC,CACpD,aACuC;AAAA,EACvC,YAAY,yCAAyC,OAAO;AAAA,EAC5D,MAAM,8BAA8B,OAAO;AAAA,EAC3C,SAAS,SAAS,YACf,QAAQ,UAAU,QAClB;AACJ;AAEO,IAAM,mDAAmD,CAC/D,YACkD;AAAA,EAClD,IAAI,CAAC,SAAS,cAAc,QAAQ;AAAA,IACnC,OAAO,CAAC;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,cAAc,IAAI,CAAC,UAAU;AAAA,IAC3C,MAAM,QAAQ,MAAM,SAAS,MAAM;AAAA,IACnC,OAAO;AAAA,MACN,cAAc,MAAM;AAAA,MACpB,QAAQ,MAAM;AAAA,MACd;AAAA,MACA,MAAM;AAAA,QACL;AAAA,UACC,OAAO;AAAA,UACP,OAAO,MAAM,OAAO,KAAK,EAAE,SAAS,MAAM,QAAQ;AAAA,QACnD;AAAA,QACA,EAAE,OAAO,iBAAiB,OAAO,MAAM,aAAa;AAAA,QACpD,EAAE,OAAO,YAAY,OAAO,MAAM,SAAS;AAAA,QAC3C;AAAA,UACC,OAAO;AAAA,UACP,OAAO,GAAG,MAAM,yBAAyB,MAAM;AAAA,QAChD;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,MAAM,qBAAqB,QAAQ,CAAC;AAAA,QAC5C;AAAA,QACA,EAAE,OAAO,eAAe,OAAO,MAAM,WAAW,QAAQ,CAAC,EAAE;AAAA,QAC3D;AAAA,UACC,OAAO;AAAA,UACP,OAAO,OAAO,MAAM,cAAc;AAAA,QACnC;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OACC,MAAM,SAAS,SAAS,IACrB,MAAM,SAAS,KAAK,IAAI,IACxB;AAAA,QACL;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OACC,MAAM,WAAW,SAAS,IACvB,MAAM,WAAW,KAAK,IAAI,IAC1B;AAAA,QACL;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OACC,MAAM,WAAW,SAAS,IACvB,MAAM,WAAW,KAAK,IAAI,IAC1B;AAAA,QACL;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OACC,MAAM,SAAS,SAAS,IACrB,MAAM,SAAS,KAAK,IAAI,IACxB;AAAA,QACL;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OACC,MAAM,2BAA2B,SAAS,IACvC,MAAM,2BAA2B,KAAK,IAAI,IAC1C;AAAA,QACL;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OAAO,MAAM,OAAO,KAAK,EAAE,SAAS,IAAI,MAAM,SAAS;AAAA,QACxD;AAAA,QACA;AAAA,UACC,OAAO;AAAA,UACP,OACC,MAAM,kBACN,MAAM,eAAe,KAAK,EAAE,SAAS,IAClC,MAAM,iBACN;AAAA,QACL;AAAA,MACD;AAAA,MACA,SAAS,GAAG,MAAM,qBAAiB,MAAM,0BAAuB,MAAM,yBAAyB,MAAM,2BAAwB,MAAM;AAAA,IACpI;AAAA,GACA;AAAA;AAGK,IAAM,qCAAqC,CACjD,YACwB;AAAA,EACxB,IAAI,CAAC,SAAS,WAAW;AAAA,IACxB,OAAO,CAAC,EAAE,OAAO,WAAW,OAAO,kCAAkC,CAAC;AAAA,EACvE;AAAA,EAEA,MAAM,OAA2B;AAAA,IAChC,EAAE,OAAO,iBAAiB,OAAO,OAAO,QAAQ,KAAK,MAAM,EAAE;AAAA,IAC7D;AAAA,MACC,OAAO;AAAA,MACP,OAAO,GAAG,QAAQ,UAAU,cAAU,mCACrC,QAAQ,UAAU,QACnB;AAAA,IACD;AAAA,EACD;AAAA,EAEA,IAAI,QAAQ,aAAa;AAAA,IACxB,KAAK,KAAK;AAAA,MACT,OAAO;AAAA,MACP,OAAO,GAAG,QAAQ,YAAY,cAAU,mCACvC,QAAQ,YAAY,QACrB;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,IAAI,QAAQ,YAAY,IAAI;AAAA,IAC3B,KAAK,KAAK;AAAA,MACT,OAAO;AAAA,MACP,OAAO,IAAI,QAAQ,YAAY,GAAG,aAAS,QAAQ,YAAY,GAAG,sBAAmB,4BACpF,QAAQ,YAAY,GAAG,WACxB,sBAAkB,QAAQ,YAAY,GAAG,kBAAkB,QAC1D,CACD,mBAAe,4BACd,QAAQ,YAAY,GAAG,2BACxB;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,IAAI,QAAQ,cAAc,SAAS,GAAG;AAAA,IACrC,MAAM,iBAAiB,QAAQ,cAAc,OAC5C,CAAC,UAAU,MAAM,iBAAiB,SACnC,EAAE;AAAA,IACF,KAAK,KAAK;AAAA,MACT,OAAO;AAAA,MACP,OAAO,GAAG,kBAAkB,QAAQ,cAAc;AAAA,IACnD,CAAC;AAAA,EACF;AAAA,EAEA,IAAI,CAAC,QAAQ,MAAM;AAAA,IAClB,KAAK,KAAK;AAAA,MACT,OAAO;AAAA,MACP,OAAO;AAAA,IACR,CAAC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EAEA,KAAK,KACJ;AAAA,IACC,OAAO;AAAA,IACP,OAAO,kBACN,QAAQ,KAAK,aAAa,aAC1B,GACA,GACD;AAAA,EACD,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,kBACN,QAAQ,KAAK,aAAa,mBAC1B,CACD;AAAA,EACD,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,kBACN,QAAQ,KAAK,aAAa,8BAA8B,KACxD,GACA,GACD;AAAA,EACD,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,iCAAiC,QAAQ,KAAK,aAAa;AAAA,EACnE,GACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,iCAAiC,QAAQ,KAAK,cAAc;AAAA,EACpE,CACD;AAAA,EAEA,OAAO;AAAA;AAGD,IAAM,6CAA6C,CACzD,aAC4C;AAAA,EAC5C,eAAe,iDAAiD,OAAO;AAAA,EACvE,MAAM,mCAAmC,OAAO;AAAA,EAChD,SAAS,SAAS,YACf,QAAQ,UAAU,QAClB;AACJ;;AFrvFO,MAAM,yBAAyB,gBAAgB;AAAA,EACrD,OAAO,CAAC,MAAc,gBAAyB;AAAA,IAC9C,MAAM,SAAS,MAAM,QAAQ,MAAM,cAAc;AAAA,IAEjD,MAAM,WAAW,UAAS,MACzB,4BAA4B;AAAA,MAC3B,OAAO,OAAO,MAAM;AAAA,MACpB,aAAa,OAAO,YAAY;AAAA,MAChC,UAAU,OAAO,SAAS;AAAA,IAC3B,CAAC,CACF;AAAA,IACA,MAAM,WAAW,UAAS,MACzB,uBAAuB;AAAA,MACtB,OAAO,OAAO,MAAM;AAAA,MACpB,aAAa,OAAO,YAAY;AAAA,MAChC,UAAU,OAAO,SAAS;AAAA,IAC3B,CAAC,CACF;AAAA,IACA,MAAM,yBAAyB,UAC9B,MAAM,SAAS,EAAE,sBAClB;AAAA,IACA,MAAM,UAAU,UAAS,MAAM,SAAS,EAAE,OAAO;AAAA,IACjD,MAAM,eAAe,UAAS,MAAM,SAAS,EAAE,YAAY;AAAA,IAC3D,MAAM,YAAY,UAAS,MAAM,SAAS,EAAE,SAAS;AAAA,IACrD,MAAM,kBAAkB,UAAS,MAAM,SAAS,EAAE,eAAe;AAAA,IACjE,MAAM,uBAAuB,UAC5B,MAAM,SAAS,EAAE,oBAClB;AAAA,IACA,MAAM,YAAY,UAAS,MAAM,SAAS,EAAE,SAAS;AAAA,IACrD,MAAM,iBAAiB,UAAS,MAAM,SAAS,EAAE,cAAc;AAAA,IAC/D,MAAM,sBAAsB,UAC3B,MAAM,SAAS,EAAE,mBAClB;AAAA,IACA,MAAM,eAAe,UAAS,MAAM,SAAS,EAAE,YAAY;AAAA,IAC3D,MAAM,aAAa,UAAS,MAAM,SAAS,EAAE,UAAU;AAAA,IACvD,MAAM,eAAe,UAAS,MAAM,SAAS,EAAE,YAAY;AAAA,IAC3D,MAAM,cAAc,UAAS,MAAM,SAAS,EAAE,WAAW;AAAA,IACzD,MAAM,oBAAoB,UAAS,MAAM,SAAS,EAAE,iBAAiB;AAAA,IACrE,MAAM,aAAa,UAAS,MAAM,SAAS,EAAE,UAAU;AAAA,IACvD,MAAM,UAAU,UAAS,MAAM,SAAS,EAAE,OAAO;AAAA,IACjD,MAAM,YAAY,UAAS,MAAM,SAAS,EAAE,SAAS;AAAA,IACrD,MAAM,QAAQ,UAAS,MAAM,SAAS,EAAE,KAAK;AAAA,IAE7C,OAAO;AAAA,SACH;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,OAAO;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA;AAEF;AApEa,mBAAN;AAAA,EADN,YAAW,EAAE,YAAY,OAAO,CAAC;AAAA,GACrB;;;ADJN,MAAM,2BAA2B,iBAAiB;AAAA,EACxD,OAAO,CAAC,MAAc,gBAAyB;AAAA,IAC9C,MAAM,SAAS,MAAM,QAAQ,MAAM,cAAc;AAAA,IAEjD,OAAO;AAAA,SACH;AAAA,MACH,OAAO,UAAS,MAAM,OAAO,SAAS,CAAC;AAAA,IACxC;AAAA;AAEF;AATa,qBAAN;AAAA,EADN,YAAW,EAAE,YAAY,OAAO,CAAC;AAAA,GACrB;;AIJb,uBAAS;;;AC+DT;AAcA,IAAM,cAA0C;AAAA,EAC/C,gBAAgB;AACjB;AAEA,IAAM,oBAAoB,CAAC,SAC1B,KAAK,SAAS,GAAG,IAAI,KAAK,MAAM,GAAG,aAAa,IAAI;AAErD,IAAM,YAAY,OAAU,aAAuB;AAAA,EAClD,MAAM,UAAa,KAAK,MAAM,MAAM,SAAS,KAAK,CAAC;AAAA,EAEnD,OAAO;AAAA;AAGR,IAAM,iBAAiB,CAAC,UAAgD;AAAA,EACvE,IAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AAAA,IACxC,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,EAAE,WAAW,UAAU,OAAO,MAAM,UAAU;AAAA;AAGtD,IAAM,iBAAiB,OAAO,aAAuB;AAAA,EACpD,IAAI;AAAA,IACH,MAAM,UAAU,KAAK,MAAM,MAAM,SAAS,KAAK,CAAC;AAAA,IAChD,IACC,eAAe,OAAO,KACtB,OAAO,QAAQ,UAAU,YACzB,QAAQ,OACP;AAAA,MACD,OAAO,QAAQ;AAAA,IAChB;AAAA,IACC,MAAM;AAAA,EAIR,OAAO,8BAA8B,SAAS;AAAA;AAGxC,IAAM,kBAAkB,CAAC,YAA8B;AAAA,EAC7D,MAAM,WAAW,kBAAkB,QAAQ,IAAI;AAAA,EAC/C,MAAM,YAAY,QAAQ,SAAS;AAAA,EAEnC,MAAM,SAAS,OACd,UAGI;AAAA,IACJ,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,MACtD,MAAM,KAAK,UAAU,KAAK;AAAA,MAC1B,SAAS;AAAA,MACT,QAAQ;AAAA,IACT,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,IAC/C;AAAA,IAEA,MAAM,UAAU,MAAM,UAA6B,QAAQ;AAAA,IAE3D,IAAI,CAAC,QAAQ,IAAI;AAAA,MAChB,MAAM,IAAI,MAAM,QAAQ,SAAS,mBAAmB;AAAA,IACrD;AAAA,IAEA,IAAI,MAAM,iBAAiB,MAAM;AAAA,MAChC,OAAO;AAAA,QACN,SAAS,QAAQ,WAAW,CAAC;AAAA,QAC7B,OAAO,QAAQ;AAAA,MAChB;AAAA,IAGD;AAAA,IAEA,OAAQ,QAAQ,WAAW,CAAC;AAAA;AAAA,EAK7B,OAAO;AAAA,SACA,SAAQ,GAAG;AAAA,MAChB,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,MAEvD,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,SAEzC,WAAU,GAAG;AAAA,MAClB,MAAM,WAAW,MAAM,UAAU,GAAG,kBAAkB;AAAA,QACrD,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAA2B,QAAQ;AAAA;AAAA,SAErC,eAAc,CACnB,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UAAU,GAAG,sBAAsB;AAAA,QACzD,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,SAEzC,eAAc,CAAC,IAAY;AAAA,MAChC,MAAM,WAAW,MAAM,UACtB,GAAG,sBAAsB,mBAAmB,EAAE,KAC9C;AAAA,QACC,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,SAEzC,eAAc,CAAC,IAAY;AAAA,MAChC,MAAM,WAAW,MAAM,UACtB,GAAG,sBAAsB,mBAAmB,EAAE,UAC/C;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,QAAQ,MAAM,eAAe,QAAQ;AAAA,QAE3C,MAAM,gBAA2C;AAAA,UAChD;AAAA,UACA,IAAI;AAAA,QACL;AAAA,QAEA,OAAO;AAAA,MACR;AAAA,MAEA,OAAO,UAAqC,QAAQ;AAAA;AAAA,SAE/C,UAAS,CAAC,MAAe;AAAA,MAC9B,MAAM,QAAQ,OAAO,SAAS,mBAAmB,IAAI,MAAM;AAAA,MAC3D,MAAM,WAAW,MAAM,UAAU,GAAG,qBAAqB,OAAO;AAAA,MAEhE,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAAgC,QAAQ;AAAA;AAAA,SAE1C,SAAQ,CAAC,OAA2B;AAAA,MACzC,MAAM,WAAW,MAAM,UAAU,GAAG,qBAAqB;AAAA,QACxD,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAAiC,QAAQ;AAAA;AAAA,SAE3C,kBAAiB,CAAC,OAAsC;AAAA,MAC7D,MAAM,WAAW,MAAM,UAAU,GAAG,8BAA8B;AAAA,QACjE,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAA0C,QAAQ;AAAA,MACzD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,YAAY;AAAA,QACvC,MAAM,IAAI,MACT,QAAQ,SAAS,iCAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,2BAA0B,CAAC,OAO9B;AAAA,MACF,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,QACrC,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C;AAAA,MACA,IAAI,OAAO,SAAS;AAAA,QACnB,aAAa,IAAI,WAAW,MAAM,OAAO;AAAA,MAC1C;AAAA,MACA,IAAI,OAAO,OAAO;AAAA,QACjB,aAAa,IAAI,SAAS,MAAM,KAAK;AAAA,MACtC;AAAA,MACA,IAAI,OAAO,UAAU;AAAA,QACpB,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAC5C;AAAA,MACA,IAAI,OAAO,UAAU;AAAA,QACpB,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAC5C;AAAA,MACA,IAAI,OAAO,KAAK;AAAA,QACf,aAAa,IAAI,OAAO,MAAM,GAAG;AAAA,MAClC;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UACtB,GAAG,qCAAqC,QACzC;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM;AAAA,QACjC,MAAM,IAAI,MACT,QAAQ,SAAS,yCAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,mBAAkB,CAAC,OAKtB;AAAA,MACF,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO,UAAU;AAAA,QACpB,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAC5C;AAAA,MACA,IAAI,OAAO,KAAK;AAAA,QACf,aAAa,IAAI,OAAO,MAAM,GAAG;AAAA,MAClC;AAAA,MACA,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,QACrC,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C;AAAA,MACA,IAAI,OAAO,QAAQ;AAAA,QAClB,aAAa,IAAI,UAAU,MAAM,MAAM;AAAA,MACxC;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UACtB,GAAG,uCAAuC,QAC3C;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAA4C,QAAQ;AAAA,MAC3D,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SAAS,oCAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,yBAAwB,CAC7B,OACC;AAAA,MACD,MAAM,UAAU,MAAM,KAAK,iCAAiC,KAAK;AAAA,MACjE,OAAO,QAAQ;AAAA;AAAA,SAEV,iCAAgC,CACrC,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,gDACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAAwC,QAAQ;AAAA,MACvD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,UAAU;AAAA,QACrC,MAAM,IAAI,MACT,QAAQ,SAAS,yCAClB;AAAA,MACD;AAAA,MAEA,OAAO;AAAA;AAAA,SAEF,+BAA8B,CACnC,OAGC;AAAA,MACD,MAAM,UACL,MAAM,KAAK,uCAAuC,KAAK;AAAA,MACxD,OAAO,QAAQ;AAAA;AAAA,SAEV,uCAAsC,CAC3C,OAGC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,qDACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAAwC,QAAQ;AAAA,MACvD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,UAAU;AAAA,QACrC,MAAM,IAAI,MACT,QAAQ,SACP,6CACF;AAAA,MACD;AAAA,MAEA,OAAO;AAAA;AAAA,SAEF,gCAA+B,CACpC,OACC;AAAA,MACD,MAAM,UACL,MAAM,KAAK,wCAAwC,KAAK;AAAA,MACzD,OAAO,QAAQ;AAAA;AAAA,SAEV,wCAAuC,CAC5C,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,oDACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAAwC,QAAQ;AAAA,MACvD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,UAAU;AAAA,QACrC,MAAM,IAAI,MACT,QAAQ,SACP,kDACF;AAAA,MACD;AAAA,MAEA,OAAO;AAAA;AAAA,SAEF,wBAAuB,CAC5B,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,+CACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAAwC,QAAQ;AAAA,MACvD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,UAAU;AAAA,QACrC,MAAM,IAAI,MACT,QAAQ,SAAS,sCAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,2BAA0B,CAAC,OAM9B;AAAA,MACF,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO,UAAU;AAAA,QACpB,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAC5C;AAAA,MACA,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,QACrC,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C;AAAA,MACA,IAAI,OAAO,MAAM;AAAA,QAChB,aAAa,IAAI,QAAQ,MAAM,IAAI;AAAA,MACpC;AAAA,MACA,IAAI,OAAO,iBAAiB;AAAA,QAC3B,aAAa,IAAI,mBAAmB,MAAM,eAAe;AAAA,MAC1D;AAAA,MACA,IAAI,OAAO,oBAAoB;AAAA,QAC9B,aAAa,IACZ,sBACA,MAAM,kBACP;AAAA,MACD;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UACtB,GAAG,iDAAiD,QACrD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SACP,4CACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,6BAA4B,CAAC,OAMhC;AAAA,MACF,MAAM,eAAe,IAAI;AAAA,MACzB,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAC3C,IAAI,OAAO,MAAM,kBAAkB,UAAU;AAAA,QAC5C,aAAa,IAAI,iBAAiB,OAAO,MAAM,aAAa,CAAC;AAAA,MAC9D;AAAA,MACA,IAAI,OAAO,MAAM,kBAAkB,UAAU;AAAA,QAC5C,aAAa,IAAI,iBAAiB,OAAO,MAAM,aAAa,CAAC;AAAA,MAC9D;AAAA,MACA,IAAI,OAAO,MAAM,aAAa,UAAU;AAAA,QACvC,aAAa,IAAI,YAAY,OAAO,MAAM,QAAQ,CAAC;AAAA,MACpD;AAAA,MACA,IAAI,MAAM,oBAAoB;AAAA,QAC7B,aAAa,IACZ,sBACA,MAAM,kBACP;AAAA,MACD;AAAA,MACA,MAAM,WAAW,MAAM,UACtB,GAAG,8CAA8C,cAClD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,IAAI;AAAA,QAChB,MAAM,IAAI,MACT,QAAQ,SACP,4CACF;AAAA,MACD;AAAA,MAEA,OAAO;AAAA;AAAA,SAEF,sBAAqB,CAAC,OAKzB;AAAA,MACF,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO,UAAU;AAAA,QACpB,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAC5C;AAAA,MACA,IAAI,OAAO,oBAAoB;AAAA,QAC9B,aAAa,IACZ,sBACA,MAAM,kBACP;AAAA,MACD;AAAA,MACA,IAAI,OAAO,oBAAoB;AAAA,QAC9B,aAAa,IACZ,sBACA,MAAM,kBACP;AAAA,MACD;AAAA,MACA,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,QACrC,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UACtB,GAAG,sCAAsC,QAC1C;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAA+C,QAAQ;AAAA,MAC9D,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,UAAU;AAAA,QACrC,MAAM,IAAI,MACT,QAAQ,SAAS,wCAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,8BAA6B,CAAC,OAMjC;AAAA,MACF,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO,UAAU;AAAA,QACpB,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAC5C;AAAA,MACA,IAAI,OAAO,oBAAoB;AAAA,QAC9B,aAAa,IACZ,sBACA,MAAM,kBACP;AAAA,MACD;AAAA,MACA,IAAI,OAAO,oBAAoB;AAAA,QAC9B,aAAa,IACZ,sBACA,MAAM,kBACP;AAAA,MACD;AAAA,MACA,IAAI,OAAO,MAAM;AAAA,QAChB,aAAa,IAAI,QAAQ,MAAM,IAAI;AAAA,MACpC;AAAA,MACA,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,QACrC,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UACtB,GAAG,gDAAgD,QACpD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SACP,iDACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,8BAA6B,CAAC,OAMjC;AAAA,MACF,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO;AAAA,QAAU,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAChE,IAAI,OAAO,OAAO,UAAU;AAAA,QAC3B,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C,IAAI,OAAO;AAAA,QAAQ,aAAa,IAAI,UAAU,MAAM,MAAM;AAAA,MAC1D,IAAI,OAAO;AAAA,QAAU,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAChE,IAAI,OAAO,oBAAoB;AAAA,QAC9B,aAAa,IACZ,sBACA,MAAM,kBACP;AAAA,MACD;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UACtB,GAAG,gDAAgD,QACpD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SACP,iDACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,oCAAmC,CAAC,OAMvC;AAAA,MACF,MAAM,SAAS,QACZ,IAAI,IAAI,gBACR,OAAO,QAAQ,KAAK,EAClB,OAAO,IAAI,WAAW,UAAU,SAAS,EACzC,IAAI,EAAE,KAAK,WAAW,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,CAC7C,EAAE,SAAS,MACV;AAAA,MACH,MAAM,WAAW,MAAM,UACtB,GAAG,wDAAwD,QAC5D;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SACP,oDACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,8CAA6C,CAAC,OAIjD;AAAA,MACF,MAAM,SAAS,QACZ,IAAI,IAAI,gBACR,OAAO,QAAQ,KAAK,EAClB,OAAO,IAAI,WAAW,UAAU,SAAS,EACzC,IAAI,EAAE,KAAK,WAAW,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,CAC7C,EAAE,SAAS,MACV;AAAA,MACH,MAAM,WAAW,MAAM,UACtB,GAAG,uDAAuD,QAC3D;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SACP,gEACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,kCAAiC,CAAC,OAKrC;AAAA,MACF,MAAM,SAAS,QACZ,IAAI,IAAI,gBACR,OAAO,QAAQ,KAAK,EAClB,OAAO,IAAI,WAAW,UAAU,SAAS,EACzC,IAAI,EAAE,KAAK,WAAW,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,CAC7C,EAAE,SAAS,MACV;AAAA,MACH,MAAM,WAAW,MAAM,UACtB,GAAG,sDAAsD,QAC1D;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SACP,kDACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,mCAAkC,CAAC,OAKtC;AAAA,MACF,MAAM,SAAS,QACZ,IAAI,IAAI,gBACR,OAAO,QAAQ,KAAK,EAClB,OAAO,IAAI,WAAW,UAAU,SAAS,EACzC,IAAI,EAAE,KAAK,WAAW,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,CAC7C,EAAE,SAAS,MACV;AAAA,MACH,MAAM,WAAW,MAAM,UACtB,GAAG,mDAAmD,QACvD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SACP,mDACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,4CAA2C,CAAC,OAI/C;AAAA,MACF,MAAM,SAAS,QACZ,IAAI,IAAI,gBACR,OAAO,QAAQ,KAAK,EAClB,OAAO,IAAI,WAAW,UAAU,SAAS,EACzC,IAAI,EAAE,KAAK,WAAW,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,CAC7C,EAAE,SAAS,MACV;AAAA,MACH,MAAM,WAAW,MAAM,UACtB,GAAG,yDAAyD,QAC7D;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SACP,6DACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,sCAAqC,CAAC,OAIzC;AAAA,MACF,MAAM,SAAS,QACZ,IAAI,IAAI,gBACR,OAAO,QAAQ,KAAK,EAClB,OAAO,IAAI,WAAW,UAAU,SAAS,EACzC,IAAI,EAAE,KAAK,WAAW,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,CAC7C,EAAE,SAAS,MACV;AAAA,MACH,MAAM,WAAW,MAAM,UACtB,GAAG,uDAAuD,QAC3D;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SACP,sDACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,+BAA8B,GAAG;AAAA,MACtC,MAAM,WAAW,MAAM,UACtB,GAAG,mCACJ;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UACN,QACD;AAAA;AAAA,SAEK,mCAAkC,GAAG;AAAA,MAC1C,MAAM,WAAW,MAAM,UACtB,GAAG,sCACJ;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UACN,QACD;AAAA;AAAA,SAEK,mCAAkC,GAAG;AAAA,MAC1C,MAAM,WAAW,MAAM,UACtB,GAAG,oCACJ;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UACN,QACD;AAAA;AAAA,SAEK,wCAAuC,CAC5C,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,6DACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SACP,4DACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,0CAAyC,CAAC,OAE7C;AAAA,MACF,MAAM,WAAW,MAAM,UACtB,GAAG,+DACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SACP,0DACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,oCAAmC,CAAC,OAKvC;AAAA,MACF,MAAM,WAAW,MAAM,UACtB,GAAG,yDACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SACP,oDACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,2BAA0B,CAC/B,OACC;AAAA,MACD,MAAM,UACL,MAAM,KAAK,mCAAmC,KAAK;AAAA,MACpD,IAAI,CAAC,QAAQ,UAAU;AAAA,QACtB,MAAM,IAAI,MACT,QAAQ,SACP,4CACF;AAAA,MACD;AAAA,MACA,OAAO,QAAQ;AAAA;AAAA,SAEV,mCAAkC,CACvC,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,8CACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAAmD,QAAQ;AAAA;AAAA,SAE7D,0BAAyB,CAAC,OAY7B;AAAA,MACF,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO,UAAU;AAAA,QACpB,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAC5C;AAAA,MACA,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,QACrC,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C;AAAA,MACA,IAAI,OAAO,QAAQ;AAAA,QAClB,aAAa,IAAI,UAAU,MAAM,MAAM;AAAA,MACxC;AAAA,MACA,IAAI,OAAO,UAAU;AAAA,QACpB,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAC5C;AAAA,MACA,IAAI,OAAO,MAAM;AAAA,QAChB,aAAa,IAAI,QAAQ,MAAM,IAAI;AAAA,MACpC;AAAA,MACA,IAAI,OAAO,OAAO,iBAAiB,WAAW;AAAA,QAC7C,aAAa,IAAI,gBAAgB,OAAO,MAAM,YAAY,CAAC;AAAA,MAC5D;AAAA,MACA,IAAI,OAAO,oBAAoB;AAAA,QAC9B,aAAa,IACZ,sBACA,MAAM,kBACP;AAAA,MACD;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UACtB,GAAG,uCAAuC,QAC3C;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SACP,4CACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,sCAAqC,CAAC,OAOzC;AAAA,MACF,MAAM,SAAS,QACZ,IAAI,IAAI,gBACR,OAAO,QAAQ,KAAK,EAClB,OAAO,IAAI,WAAW,UAAU,SAAS,EACzC,IAAI,EAAE,KAAK,WAAW,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,CAC7C,EAAE,SAAS,MACV;AAAA,MACH,MAAM,WAAW,MAAM,UACtB,GAAG,oDAAoD,QACxD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SACP,yDACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,uCAAsC,CAAC,OAW1C;AAAA,MACF,MAAM,SAAS,QACZ,IAAI,IAAI,gBACR,OAAO,QAAQ,KAAK,EAClB,OAAO,IAAI,WAAW,UAAU,SAAS,EACzC,IAAI,EAAE,KAAK,WAAW,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,CAC7C,EAAE,SAAS,MACV;AAAA,MACH,MAAM,WAAW,MAAM,UACtB,GAAG,+DAA+D,QACnE;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SACP,6DACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,2CAA0C,CAC/C,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,qDACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SACP,2DACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,oCAAmC,CACxC,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,6DACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SACP,qDACF;AAAA,MACD;AAAA,MAEA,OAAO;AAAA;AAAA,SAEF,yCAAwC,CAC7C,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,kEACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SACP,0DACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,oCAAmC,CACxC,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,oDACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SACP,uDACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,sCAAqC,CAAC,OAEzC;AAAA,MACF,MAAM,WAAW,MAAM,UACtB,GAAG,sDACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SACP,qDACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,gCAA+B,CAAC,OAKnC;AAAA,MACF,MAAM,WAAW,MAAM,UACtB,GAAG,gDACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SACP,+CACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,6BAA4B,CAAC,OAgBhC;AAAA,MACF,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO,UAAU;AAAA,QACpB,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAC5C;AAAA,MACA,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,QACrC,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C;AAAA,MACA,IAAI,OAAO,KAAK;AAAA,QACf,aAAa,IAAI,OAAO,MAAM,GAAG;AAAA,MAClC;AAAA,MACA,IAAI,OAAO,oBAAoB;AAAA,QAC9B,aAAa,IACZ,sBACA,MAAM,kBACP;AAAA,MACD;AAAA,MACA,IAAI,OAAO,OAAO,aAAa,WAAW;AAAA,QACzC,aAAa,IAAI,YAAY,OAAO,MAAM,QAAQ,CAAC;AAAA,MACpD;AAAA,MACA,IAAI,OAAO,OAAO,UAAU,WAAW;AAAA,QACtC,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C;AAAA,MACA,IAAI,OAAO,OAAO,YAAY,WAAW;AAAA,QACxC,aAAa,IAAI,WAAW,OAAO,MAAM,OAAO,CAAC;AAAA,MAClD;AAAA,MACA,IAAI,OAAO,cAAc;AAAA,QACxB,aAAa,IAAI,gBAAgB,MAAM,YAAY;AAAA,MACpD;AAAA,MACA,IAAI,OAAO,iBAAiB;AAAA,QAC3B,aAAa,IAAI,mBAAmB,MAAM,eAAe;AAAA,MAC1D;AAAA,MACA,IAAI,OAAO,QAAQ;AAAA,QAClB,aAAa,IAAI,UAAU,MAAM,MAAM;AAAA,MACxC;AAAA,MACA,IAAI,OAAO,eAAe;AAAA,QACzB,aAAa,IAAI,iBAAiB,MAAM,aAAa;AAAA,MACtD;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UACtB,GAAG,wCAAwC,QAC5C;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,YAAY;AAAA,QACvC,MAAM,IAAI,MACT,QAAQ,SACP,+CACF;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,0BAAyB,CAC9B,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,gDACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SAAS,+BAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,yBAAwB,CAC7B,OACC;AAAA,MACD,MAAM,WAAW,MAAM,UACtB,GAAG,+CACH;AAAA,QACC,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UACL,QACD;AAAA,MACD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,WAAW;AAAA,QACtC,MAAM,IAAI,MACT,QAAQ,SAAS,gCAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,OAAM,CAAC,QAA4B;AAAA,MACxC,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,QACtD,MAAM,KAAK,UAAU,EAAE,OAAO,CAAC;AAAA,QAC/B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA6B,QAAQ;AAAA;AAAA,SAEvC,gBAAe,CAAC,OAA+B;AAAA,MACpD,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,QACtD,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA6B,QAAQ;AAAA;AAAA,SAEvC,cAAa,CAAC,OAAqC;AAAA,MACxD,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,QACtD,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA6B,QAAQ;AAAA;AAAA,SAEvC,WAAU,CAAC,OAAkC;AAAA,MAClD,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,QACtD,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA6B,QAAQ;AAAA;AAAA,SAEvC,IAAG,GAAG;AAAA,MACX,MAAM,WAAW,MAAM,UAAU,GAAG,cAAc;AAAA,MAElD,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAAiC,QAAQ;AAAA;AAAA,SAE3C,mBAAkB,CAAC,OAKtB;AAAA,MACF,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO,OAAO;AAAA,QACjB,aAAa,IAAI,SAAS,MAAM,KAAK;AAAA,MACtC;AAAA,MACA,IAAI,OAAO,UAAU;AAAA,QACpB,aAAa,IAAI,YAAY,MAAM,QAAQ;AAAA,MAC5C;AAAA,MACA,IAAI,OAAO,KAAK;AAAA,QACf,aAAa,IAAI,OAAO,MAAM,GAAG;AAAA,MAClC;AAAA,MACA,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,QACrC,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UAAU,GAAG,kBAAkB,QAAQ;AAAA,MAE9D,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAAyC,QAAQ;AAAA,MACxD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SAAS,iCAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,kBAAiB,CAAC,OAA0C;AAAA,MACjE,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO,KAAK;AAAA,QACf,aAAa,IAAI,OAAO,MAAM,GAAG;AAAA,MAClC;AAAA,MACA,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,QACrC,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UACtB,GAAG,yBAAyB,QAC7B;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAA8C,QAAQ;AAAA,MAC7D,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SAAS,uCAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,iBAAgB,CAAC,OAA0B;AAAA,MAChD,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO,KAAK;AAAA,QACf,aAAa,IAAI,OAAO,MAAM,GAAG;AAAA,MAClC;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UACtB,GAAG,wBAAwB,QAC5B;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAAuC,QAAQ;AAAA,MACtD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,OAAO;AAAA,QAClC,MAAM,IAAI,MACT,QAAQ,SAAS,+BAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,wBAAuB,CAAC,OAM3B;AAAA,MACF,MAAM,WAAW,MAAM,UACtB,GAAG,iCACH;AAAA,QACC,MAAM,KAAK,UAAU,SAAS,CAAC,CAAC;AAAA,QAChC,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAA8C,QAAQ;AAAA,MAC7D,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AAAA,QACpC,MAAM,IAAI,MACT,QAAQ,SAAS,uCAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,kBAAiB,CAAC,OAMrB;AAAA,MACF,MAAM,WAAW,MAAM,UAAU,GAAG,yBAAyB;AAAA,QAC5D,MAAM,KAAK,UAAU,SAAS,CAAC,CAAC;AAAA,QAChC,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAAuC,QAAQ;AAAA,MACtD,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,QAAQ;AAAA,QACnC,MAAM,IAAI,MACT,QAAQ,SAAS,+BAClB;AAAA,MACD;AAAA,MAEA,OAAO;AAAA;AAAA,SAEF,wBAAuB,CAAC,OAG3B;AAAA,MACF,MAAM,eAAe,IAAI;AAAA,MACzB,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,QACrC,aAAa,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,MAC9C;AAAA,MACA,IAAI,OAAO,SAAS;AAAA,QACnB,aAAa,IAAI,WAAW,MAAM,OAAO;AAAA,MAC1C;AAAA,MACA,MAAM,SAAS,aAAa,OAAO,IAAI,IAAI,iBAAiB;AAAA,MAC5D,MAAM,WAAW,MAAM,UACtB,GAAG,gCAAgC,QACpC;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAA8C,QAAQ;AAAA,MAC7D,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,MAAM;AAAA,QACjC,MAAM,IAAI,MACT,QAAQ,SAAS,uCAClB;AAAA,MACD;AAAA,MAEA,OAAO,QAAQ;AAAA;AAAA,SAEV,YAAW,GAAG;AAAA,MACnB,MAAM,WAAW,MAAM,UAAU,GAAG,eAAe;AAAA,MAEnD,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAA2B,QAAQ;AAAA;AAAA,SAErC,eAAc,CAAC,UAA6B;AAAA,MACjD,MAAM,WAAW,MAAM,UAAU,GAAG,iBAAiB;AAAA,QACpD,MACC,UAAS,eAAe,OACrB,KAAK,UAAU,EAAE,YAAY,KAAK,CAAC,IACnC;AAAA,QACJ,SAAS,UAAS,eAAe,OAAO,cAAc;AAAA,QACtD,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA2B,QAAQ;AAAA;AAAA,SAErC,WAAU,CAAC,IAAY,UAA6B;AAAA,MACzD,MAAM,WAAW,MAAM,UACtB,GAAG,iBAAiB,mBAAmB,EAAE,KACzC;AAAA,QACC,MACC,UAAS,eAAe,OACrB,KAAK,UAAU,EAAE,YAAY,KAAK,CAAC,IACnC;AAAA,QACJ,SACC,UAAS,eAAe,OAAO,cAAc;AAAA,QAC9C,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA2B,QAAQ;AAAA;AAAA,SAErC,gBAAe,CAAC,IAAY;AAAA,MACjC,MAAM,WAAW,MAAM,UACtB,GAAG,8BAA8B,mBAAmB,EAAE,KACtD;AAAA,QACC,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,SAEzC,cAAa,CAAC,QAAgB;AAAA,MACnC,MAAM,WAAW,MAAM,UAAU,GAAG,2BAA2B;AAAA,QAC9D,MAAM,KAAK,UAAU,EAAE,OAAO,CAAC;AAAA,QAC/B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,SAEzC,OAAM,GAAG;AAAA,MACd,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,QACtD,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,SAEzC,MAAK,GAAG;AAAA,MACb,MAAM,WAAW,MAAM,UAAU,GAAG,kBAAkB;AAAA,QACrD,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,OAAO,MAAM,eAAe,QAAQ;AAAA,UACpC,IAAI;AAAA,QACL;AAAA,MACD;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,IAE/C;AAAA,SACM,gBAAe,CAAC,OAAyB;AAAA,MAC9C,OAAO,OAAO,KAAK,OAAO,cAAc,KAAK,CAAC;AAAA;AAAA,SAKzC,eAAc,CAAC,OAAyB;AAAA,MAC7C,OAAO,OAAO,KAAK,OAAO,cAAc,KAAK,CAAC;AAAA;AAAA,SAEzC,OAAM,GAAG;AAAA,MACd,MAAM,WAAW,MAAM,UAAU,GAAG,iBAAiB;AAAA,MAErD,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAA6B,QAAQ;AAAA;AAAA,SAEvC,uBAAsB,GAAG;AAAA,MAC9B,MAAM,WAAW,MAAM,UAAU,GAAG,yBAAyB;AAAA,MAE7D,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UACL,MAAM,UAA6C,QAAQ;AAAA,MAC5D,OAAO,QAAQ;AAAA;AAAA,SAEV,4BAA2B,GAAG;AAAA,MACnC,MAAM,WAAW,MAAM,UACtB,GAAG,+BACJ;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAAkD,QAAQ;AAAA;AAAA,SAE5D,2BAA0B,GAAG;AAAA,MAClC,MAAM,WAAW,MAAM,UAAU,GAAG,0BAA0B;AAAA,MAE9D,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAAiD,QAAQ;AAAA;AAAA,EAElE;AAAA;;;ADt3DM,MAAM,iBAAiB;AAAA,EACrB,UAAU,IAAI;AAAA,EAEd,MAAM,CAAC,MAAc;AAAA,IAC5B,MAAM,WAAW,KAAK,QAAQ,IAAI,IAAI;AAAA,IACtC,IAAI,UAAU;AAAA,MACb,OAAO;AAAA,IACR;AAAA,IAEA,MAAM,UAAU,gBAAgB,EAAE,KAAK,CAAC;AAAA,IACxC,KAAK,QAAQ,IAAI,MAAM,OAAO;AAAA,IAE9B,OAAO;AAAA;AAAA,EAGR,MAAM,CAAC,MAAc,QAA4B;AAAA,IAChD,OAAO,KAAK,OAAO,IAAI,EAAE,OAAO,MAAM;AAAA;AAAA,EAGvC,eAAe,CAAC,MAAc,OAA+B;AAAA,IAC5D,OAAO,KAAK,OAAO,IAAI,EAAE,gBAAgB,KAAK;AAAA;AAAA,EAG/C,UAAU,CAAC,MAAc,OAAkC;AAAA,IAC1D,OAAO,KAAK,OAAO,IAAI,EAAE,WAAW,KAAK;AAAA;AAAA,EAG1C,aAAa,CAAC,MAAc,OAAqC;AAAA,IAChE,OAAO,KAAK,OAAO,IAAI,EAAE,cAAc,KAAK;AAAA;AAAA,EAG7C,MAAM,CAAC,MAAc,OAAyB;AAAA,IAC7C,OAAO,KAAK,OAAO,IAAI,EAAE,OAAO,KAAK;AAAA;AAAA,EAGtC,eAAe,CAAC,MAAc,OAAyB;AAAA,IACtD,OAAO,KAAK,OAAO,IAAI,EAAE,gBAAgB,KAAK;AAAA;AAAA,EAG/C,QAAQ,CAAC,MAAc,OAA2B;AAAA,IACjD,OAAO,KAAK,OAAO,IAAI,EAAE,SAAS,KAAK;AAAA;AAAA,EAGxC,iBAAiB,CAAC,MAAc,OAAsC;AAAA,IACrE,OAAO,KAAK,OAAO,IAAI,EAAE,kBAAkB,KAAK;AAAA;AAAA,EAGjD,0BAA0B,CACzB,MACA,OAQC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,2BAA2B,KAAK;AAAA;AAAA,EAG1D,kBAAkB,CACjB,MACA,OAMC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,mBAAmB,KAAK;AAAA;AAAA,EAGlD,wBAAwB,CACvB,MACA,OACC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,yBAAyB,KAAK;AAAA;AAAA,EAGxD,gCAAgC,CAC/B,MACA,OACwC;AAAA,IACxC,OAAO,KAAK,OAAO,IAAI,EAAE,iCAAiC,KAAK;AAAA;AAAA,EAGhE,8BAA8B,CAC7B,MACA,OAGC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,+BAA+B,KAAK;AAAA;AAAA,EAG9D,sCAAsC,CACrC,MACA,OAGwC;AAAA,IACxC,OAAO,KAAK,OAAO,IAAI,EAAE,uCAAuC,KAAK;AAAA;AAAA,EAGtE,+BAA+B,CAC9B,MACA,OACC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,gCAAgC,KAAK;AAAA;AAAA,EAG/D,uCAAuC,CACtC,MACA,OACwC;AAAA,IACxC,OAAO,KAAK,OAAO,IAAI,EAAE,wCAAwC,KAAK;AAAA;AAAA,EAGvE,uBAAuB,CACtB,MACA,OACC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,wBAAwB,KAAK;AAAA;AAAA,EAGvD,0BAA0B,CACzB,MACA,OAOC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,2BAA2B,KAAK;AAAA;AAAA,EAG1D,4BAA4B,CAC3B,MACA,OAOC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,6BAA6B,KAAK;AAAA;AAAA,EAG5D,qBAAqB,CACpB,MACA,OAMC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,sBAAsB,KAAK;AAAA;AAAA,EAGrD,6BAA6B,CAC5B,MACA,OAOC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,8BAA8B,KAAK;AAAA;AAAA,EAG7D,6BAA6B,CAC5B,MACA,OAOC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,8BAA8B,KAAK;AAAA;AAAA,EAG7D,mCAAmC,CAClC,MACA,OAOC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,oCAAoC,KAAK;AAAA;AAAA,EAGnE,6CAA6C,CAC5C,MACA,OAKC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,8CACxB,KACD;AAAA;AAAA,EAGD,iCAAiC,CAChC,MACA,OAMC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,kCAAkC,KAAK;AAAA;AAAA,EAGjE,kCAAkC,CACjC,MACA,OAMC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,mCAAmC,KAAK;AAAA;AAAA,EAGlE,2CAA2C,CAC1C,MACA,OAKC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,4CACxB,KACD;AAAA;AAAA,EAGD,qCAAqC,CACpC,MACA,OAKC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,sCAAsC,KAAK;AAAA;AAAA,EAGrE,0BAA0B,CACzB,MACA,OACC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,2BAA2B,KAAK;AAAA;AAAA,EAG1D,kCAAkC,CACjC,MACA,OACC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,mCAAmC,KAAK;AAAA;AAAA,EAGlE,yBAAyB,CACxB,MACA,OAaC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,0BAA0B,KAAK;AAAA;AAAA,EAGzD,qCAAqC,CACpC,MACA,OAeC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,sCAAsC,KAAK;AAAA;AAAA,EAGrE,sCAAsC,CACrC,MACA,OAkBC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,uCAAuC,KAAK;AAAA;AAAA,EAGtE,0CAA0C,CACzC,MACA,OACC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,2CACxB,KACD;AAAA;AAAA,EAGD,mCAAmC,CAClC,MACA,OACC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,oCAAoC,KAAK;AAAA;AAAA,EAGnE,wCAAwC,CACvC,MACA,OACC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,yCACxB,KACD;AAAA;AAAA,EAGD,sBAAsB,CAAC,MAAc;AAAA,IACpC,OAAO,KAAK,OAAO,IAAI,EAAE,uBAAuB;AAAA;AAAA,EAGjD,8BAA8B,CAAC,MAAc;AAAA,IAC5C,OAAO,KAAK,OAAO,IAAI,EAAE,+BAA+B;AAAA;AAAA,EAGzD,kCAAkC,CAAC,MAAc;AAAA,IAChD,OAAO,KAAK,OAAO,IAAI,EAAE,mCAAmC;AAAA;AAAA,EAG7D,2BAA2B,CAAC,MAAc;AAAA,IACzC,OAAO,KAAK,OAAO,IAAI,EAAE,4BAA4B;AAAA;AAAA,EAGtD,0BAA0B,CAAC,MAAc;AAAA,IACxC,OAAO,KAAK,OAAO,IAAI,EAAE,2BAA2B;AAAA;AAAA,EAGrD,kCAAkC,CAAC,MAAc;AAAA,IAChD,OAAO,KAAK,OAAO,IAAI,EAAE,mCAAmC;AAAA;AAAA,EAG7D,uCAAuC,CACtC,MACA,OAMC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,wCAAwC,KAAK;AAAA;AAAA,EAGvE,yCAAyC,CACxC,MACA,OAGC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,0CACxB,KACD;AAAA;AAAA,EAGD,mCAAmC,CAClC,MACA,OAMC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,oCAAoC,KAAK;AAAA;AAAA,EAGnE,mCAAmC,CAClC,MACA,OAMC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,oCAAoC,KAAK;AAAA;AAAA,EAGnE,qCAAqC,CACpC,MACA,OAGC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,sCAAsC,KAAK;AAAA;AAAA,EAGrE,+BAA+B,CAC9B,MACA,OAMC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,gCAAgC,KAAK;AAAA;AAAA,EAG/D,4BAA4B,CAC3B,MACA,OAiBC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,6BAA6B,KAAK;AAAA;AAAA,EAG5D,yBAAyB,CACxB,MACA,OACC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,0BAA0B,KAAK;AAAA;AAAA,EAGzD,wBAAwB,CACvB,MACA,OACC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,yBAAyB,KAAK;AAAA;AAAA,EAGxD,MAAM,CAAC,MAAc;AAAA,IACpB,OAAO,KAAK,OAAO,IAAI,EAAE,OAAO;AAAA;AAAA,EAGjC,GAAG,CAAC,MAAc;AAAA,IACjB,OAAO,KAAK,OAAO,IAAI,EAAE,IAAI;AAAA;AAAA,EAG9B,kBAAkB,CACjB,MACA,OAMC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,mBAAmB,KAAK;AAAA;AAAA,EAGlD,iBAAiB,CAChB,MACA,OAIC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,kBAAkB,KAAK;AAAA;AAAA,EAGjD,gBAAgB,CAAC,MAAc,OAA0B;AAAA,IACxD,OAAO,KAAK,OAAO,IAAI,EAAE,iBAAiB,KAAK;AAAA;AAAA,EAGhD,uBAAuB,CACtB,MACA,OAOC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,wBAAwB,KAAK;AAAA;AAAA,EAGvD,iBAAiB,CAChB,MACA,OAOC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,kBAAkB,KAAK;AAAA;AAAA,EAGjD,uBAAuB,CACtB,MACA,OAIC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,wBAAwB,KAAK;AAAA;AAAA,EAGvD,WAAW,CAAC,MAAc;AAAA,IACzB,OAAO,KAAK,OAAO,IAAI,EAAE,YAAY;AAAA;AAAA,EAGtC,cAAc,CAAC,MAAc,SAA6B;AAAA,IACzD,OAAO,KAAK,OAAO,IAAI,EAAE,eAAe,OAAO;AAAA;AAAA,EAGhD,UAAU,CAAC,MAAc,IAAY,SAA6B;AAAA,IACjE,OAAO,KAAK,OAAO,IAAI,EAAE,WAAW,IAAI,OAAO;AAAA;AAAA,EAGhD,SAAS,CAAC,MAAc,MAAe;AAAA,IACtC,OAAO,KAAK,OAAO,IAAI,EAAE,UAAU,IAAI;AAAA;AAAA,EAGxC,cAAc,CAAC,MAAc,IAAY;AAAA,IACxC,OAAO,KAAK,OAAO,IAAI,EAAE,eAAe,EAAE;AAAA;AAAA,EAG3C,cAAc,CACb,MACA,OACC;AAAA,IACD,OAAO,KAAK,OAAO,IAAI,EAAE,eAAe,KAAK;AAAA;AAAA,EAG9C,cAAc,CAAC,MAAc,IAAY;AAAA,IACxC,OAAO,KAAK,OAAO,IAAI,EAAE,eAAe,EAAE;AAAA;AAAA,EAG3C,MAAM,CAAC,MAAc;AAAA,IACpB,OAAO,KAAK,OAAO,IAAI,EAAE,OAAO;AAAA;AAAA,EAGjC,KAAK,CAAC,MAAc;AAAA,IACnB,OAAO,KAAK,OAAO,IAAI,EAAE,MAAM;AAAA;AAAA,EAGhC,eAAe,CAAC,MAAc,IAAY;AAAA,IACzC,OAAO,KAAK,OAAO,IAAI,EAAE,gBAAgB,EAAE;AAAA;AAAA,EAG5C,aAAa,CAAC,MAAc,QAAgB;AAAA,IAC3C,OAAO,KAAK,OAAO,IAAI,EAAE,cAAc,MAAM;AAAA;AAAA,EAG9C,QAAQ,CAAC,MAAc;AAAA,IACtB,OAAO,KAAK,OAAO,IAAI,EAAE,SAAS;AAAA;AAAA,EAGnC,UAAU,CAAC,MAAc;AAAA,IACxB,OAAO,KAAK,OAAO,IAAI,EAAE,WAAW;AAAA;AAEtC;AA5mBa,mBAAN;AAAA,EADN,YAAW,EAAE,YAAY,OAAO,CAAC;AAAA,GACrB;",
|
|
20
|
+
"debugId": "66CB3D3B24BE2E6464756E2164756E21",
|
|
21
21
|
"names": []
|
|
22
22
|
}
|